diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt
new file mode 100755
index 0000000000000000000000000000000000000000..b7ff731014a90a5d1aa95ce54d4e9acaf7baaf36
--- /dev/null
+++ b/code/CMakeLists.txt
@@ -0,0 +1,76 @@
+cmake_minimum_required(VERSION 3.8)
+project(sdms-sequential VERSION 0.1 LANGUAGES C CXX)
+
+#-- options
+set(USE_CPLEX "ON") # ON/OFF
+set(USE_TOULBAR "OFF") # ON/OFF
+set(USE_BOOST "OFF") # ON/OFF
+
+
+#-- compiler
+if(NOT CMAKE_BUILD_TYPE) # Set the build type
+    set(CMAKE_BUILD_TYPE "Release" CACHE STRING
+        "Choose the type of build, options are: Debug Release RelWithDebInfo."
+    FORCE) 
+endif(NOT CMAKE_BUILD_TYPE)
+message(STATUS "=== Build type: ${CMAKE_BUILD_TYPE}")
+SET(CMAKE_CXX_FLAGS "" CACHE STRING "" FORCE)
+SET(CMAKE_CXX_FLAGS_DEBUG  "-O0 -DDEBUG -g" CACHE STRING "" FORCE) 
+SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -DNDEBUG -g" CACHE STRING "" FORCE)
+SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE) 
+# SET(CMAKE_CXX_FLAGS_RELEASE "-Ofast -finline -fomit-frame-pointer -funroll-loops -DNDEBUG" CACHE STRING "" FORCE) 
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_C_STANDARD 11)
+
+#-- external libraries helper (FindCPLEX.cmake)
+set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
+
+#-- eigen
+find_package (Eigen3 3.3 REQUIRED NO_MODULE)
+if (TARGET Eigen3::Eigen)
+    message(STATUS "Eigen: found")
+elseif()
+    message(STATUS "!!! Eigen ERROR: NOT FOUND !!! (eigen is required)")
+endif (TARGET Eigen3::Eigen)
+
+#-- boost
+if (USE_BOOST)
+    find_package(Boost COMPONENTS program_options REQUIRED) #find_package(Boost COMPONENTS system filesystem program_options iostreams serialization REQUIRED)
+    add_definitions(-DBOOST)
+endif()
+
+#-- cplex
+if (USE_CPLEX)
+    if(NOT DEFINED CPLEX_ROOT_DIR)
+        set(CPLEX_ROOT_DIR "/opt/ibm/ILOG/CPLEX_Studio201/" CACHE STRING "Path to ILOG CPLEX root directory (default: '/opt/ibm/ILOG/CPLEX_Studio201/')")
+    endif()
+    find_package(CPLEX)
+    if(CPLEX_FOUND)
+        include_directories(${CPLEX_INCLUDE_DIRS})
+        add_definitions(-DIL_STD)
+    else()
+        add_definitions("-DCPLEX_NOT_FOUND")
+    endif()
+endif()
+
+#-- toulbar
+if (USE_TOULBAR)
+    include_directories(${CMAKE_SOURCE_DIR}/include/tb2)
+    include_directories(${CMAKE_SOURCE_DIR}/include/tb2/search)
+    add_definitions (-DLONGDOUBLE_PROB -DLONGLONG_COST -DWCSPFORMATONLY)
+    set(TB2_LIBRARIES tb2)
+    add_definitions("-DTB2")
+endif()
+
+
+#-- executable	
+add_executable(sdms src/main.cpp)
+
+#-- link to sdms librairies
+add_subdirectory(src/core)
+add_subdirectory(src/parser)
+add_subdirectory(src/MDP)
+add_subdirectory(src/POMDP)
+add_subdirectory(src/decPOMDP)
+add_subdirectory(src/problem_examples)
+target_link_libraries(sdms core parser MDP POMDP decPOMDP EXAMPLES ${Boost_LIBRARIES} ${CPLEX_LIBRARIES} ${TB2_LIBRARIES} Eigen3::Eigen)
\ No newline at end of file
diff --git a/code/cmake/FindCPLEX.cmake b/code/cmake/FindCPLEX.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..20152c246c98f8b2b5773998fad13b788b3aa290
--- /dev/null
+++ b/code/cmake/FindCPLEX.cmake
@@ -0,0 +1,209 @@
+#  Copyright 2012 HHMI.  All rights reserved.
+
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of HHMI nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Author: katzw@janelia.hhmi.org (Bill Katz)
+# Written as part of the FlyEM Project at Janelia Farm Research Center.
+
+# This module finds cplex.
+#
+# User can give CPLEX_ROOT_DIR as a hint stored in the cmake cache.
+#
+# It sets the following variables:
+#  CPLEX_FOUND              - Set to false, or undefined, if cplex isn't found.
+#  CPLEX_INCLUDE_DIRS       - include directory
+#  CPLEX_LIBRARIES          - library files
+
+if(WIN32)
+  execute_process(COMMAND cmd /C set CPLEX_STUDIO_DIR OUTPUT_VARIABLE CPLEX_STUDIO_DIR_VAR ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+  
+  if(NOT CPLEX_STUDIO_DIR_VAR)
+    MESSAGE(FATAL_ERROR "Unable to find CPLEX: environment variable CPLEX_STUDIO_DIR<VERSION> not set.")
+  endif()
+  
+  STRING(REGEX REPLACE "^CPLEX_STUDIO_DIR" "" CPLEX_STUDIO_DIR_VAR ${CPLEX_STUDIO_DIR_VAR})
+  STRING(REGEX MATCH "^[0-9]+" CPLEX_WIN_VERSION ${CPLEX_STUDIO_DIR_VAR})
+  STRING(REGEX REPLACE "^[0-9]+=" "" CPLEX_STUDIO_DIR_VAR ${CPLEX_STUDIO_DIR_VAR})
+  file(TO_CMAKE_PATH "${CPLEX_STUDIO_DIR_VAR}" CPLEX_ROOT_DIR_GUESS) 
+  
+  set(CPLEX_WIN_VERSION ${CPLEX_WIN_VERSION} CACHE STRING "CPLEX version to be used.")
+  set(CPLEX_ROOT_DIR "${CPLEX_ROOT_DIR_GUESS}" CACHE PATH "CPLEX root directory.")
+  
+  MESSAGE(STATUS "Found CLPEX version ${CPLEX_WIN_VERSION} at '${CPLEX_ROOT_DIR}'")
+  
+  STRING(REGEX REPLACE "/VC/bin/.*" "" VISUAL_STUDIO_PATH ${CMAKE_C_COMPILER})
+  STRING(REGEX MATCH "Studio [0-9]+" CPLEX_WIN_VS_VERSION ${VISUAL_STUDIO_PATH})
+  STRING(REGEX REPLACE "Studio " "" CPLEX_WIN_VS_VERSION ${CPLEX_WIN_VS_VERSION})
+  
+  if(${CPLEX_WIN_VS_VERSION} STREQUAL "9")
+    set(CPLEX_WIN_VS_VERSION 2008)
+  elseif(${CPLEX_WIN_VS_VERSION} STREQUAL "10")
+    set(CPLEX_WIN_VS_VERSION 2010)
+  elseif(${CPLEX_WIN_VS_VERSION} STREQUAL "11")
+    set(CPLEX_WIN_VS_VERSION 2012)
+  else()
+    MESSAGE(FATAL_ERROR "CPLEX: unknown Visual Studio version at '${VISUAL_STUDIO_PATH}'.")
+  endif()
+  
+  set(CPLEX_WIN_VS_VERSION ${CPLEX_WIN_VS_VERSION} CACHE STRING "Visual Studio Version")
+  
+  if("${CMAKE_C_COMPILER}" MATCHES "amd64")
+    set(CPLEX_WIN_BITNESS x64)
+  else()
+    set(CPLEX_WIN_BITNESS x86)
+  endif()
+  
+  set(CPLEX_WIN_BITNESS ${CPLEX_WIN_BITNESS} CACHE STRING "On Windows: x86 or x64 (32bit resp. 64bit)")
+
+  MESSAGE(STATUS "CPLEX: using Visual Studio ${CPLEX_WIN_VS_VERSION} ${CPLEX_WIN_BITNESS} at '${VISUAL_STUDIO_PATH}'")
+
+  if(NOT CPLEX_WIN_LINKAGE)
+    set(CPLEX_WIN_LINKAGE mda CACHE STRING "CPLEX linkage variant on Windows. One of these: mda (dll, release), mdd (dll, debug), mta (static, release), mtd (static, debug)")
+  endif(NOT CPLEX_WIN_LINKAGE)
+
+  # now, generate platform string
+  set(CPLEX_WIN_PLATFORM "${CPLEX_WIN_BITNESS}_windows_vs${CPLEX_WIN_VS_VERSION}/stat_${CPLEX_WIN_LINKAGE}")
+
+else()
+
+  set(CPLEX_WIN_PLATFORM "")
+  string(TOLOWER ${CMAKE_SYSTEM_NAME} CPLEX_SYSTEM_NAME_LOWER)
+  set(CPLEX_PLATFORM "${CMAKE_SYSTEM_PROCESSOR}_${CPLEX_SYSTEM_NAME_LOWER}")
+    
+endif()
+
+message(STATUS "cplex root dir: ${CPLEX_ROOT_DIR}")
+
+FIND_PATH(CPLEX_INCLUDE_DIR
+  ilcplex/cplex.h
+  HINTS ${CPLEX_ROOT_DIR}/cplex/include
+        ${CPLEX_ROOT_DIR}/include
+  PATHS ENV C_INCLUDE_PATH
+        ENV C_PLUS_INCLUDE_PATH
+        ENV INCLUDE_PATH
+  )
+
+FIND_PATH(CPLEX_CONCERT_INCLUDE_DIR
+  ilconcert/iloenv.h 
+  HINTS ${CPLEX_ROOT_DIR}/concert/include
+        ${CPLEX_ROOT_DIR}/include
+  PATHS ENV C_INCLUDE_PATH
+        ENV C_PLUS_INCLUDE_PATH
+        ENV INCLUDE_PATH
+  )
+
+FIND_LIBRARY(CPLEX_LIBRARY
+  NAMES cplex${CPLEX_WIN_VERSION} cplex
+  HINTS ${CPLEX_ROOT_DIR}/cplex/lib/${CPLEX_WIN_PLATFORM} #windows
+        ${CPLEX_ROOT_DIR}/cplex/lib/${CPLEX_PLATFORM}/static_pic #generic
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_debian4.0_4.1/static_pic #unix
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_sles10_4.1/static_pic #unix 
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_linux/static_pic #linux (ubuntu)
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_osx/static_pic #osx 
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_darwin/static_pic #osx 
+  PATHS ENV LIBRARY_PATH #unix
+        ENV LD_LIBRARY_PATH #unix
+  )
+
+if(CPLEX_LIBRARY)
+    message(STATUS "CPLEX Library - found")
+else()
+    message(STATUS "CPLEX Library - not found")
+endif()
+
+FIND_LIBRARY(CPLEX_ILOCPLEX_LIBRARY
+  ilocplex
+  HINTS ${CPLEX_ROOT_DIR}/cplex/lib/${CPLEX_WIN_PLATFORM} #windows 
+        ${CPLEX_ROOT_DIR}/cplex/lib/${CPLEX_PLATFORM}/static_pic #generic
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_debian4.0_4.1/static_pic #unix 
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_sles10_4.1/static_pic #unix 
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_osx/static_pic #osx 
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_darwin/static_pic #osx 
+        ${CPLEX_ROOT_DIR}/cplex/lib/x86-64_linux/static_pic #linux (ubuntu)
+  PATHS ENV LIBRARY_PATH
+        ENV LD_LIBRARY_PATH
+  )
+
+if(CPLEX_ILOCPLEX_LIBRARY)
+    message(STATUS "ILOCPLEX Library - found")
+else()
+    message(STATUS "ILOCPLEX Library - not found")
+endif()
+
+FIND_LIBRARY(CPLEX_CONCERT_LIBRARY
+  concert
+  HINTS ${CPLEX_ROOT_DIR}/concert/lib/${CPLEX_WIN_PLATFORM} #windows 
+        ${CPLEX_ROOT_DIR}/concert/lib/${CPLEX_PLATFORM}/static_pic #generic
+        ${CPLEX_ROOT_DIR}/concert/lib/x86-64_debian4.0_4.1/static_pic #unix 
+        ${CPLEX_ROOT_DIR}/concert/lib/x86-64_sles10_4.1/static_pic #unix 
+        ${CPLEX_ROOT_DIR}/concert/lib/x86-64_osx/static_pic #osx 
+        ${CPLEX_ROOT_DIR}/concert/lib/x86-64_darwin/static_pic #osx 
+        ${CPLEX_ROOT_DIR}/concert/lib/x86-64_linux/static_pic #linux (ubuntu)
+  PATHS ENV LIBRARY_PATH
+        ENV LD_LIBRARY_PATH
+  )
+
+if(CPLEX_CONCERT_LIBRARY)
+    message(STATUS "CONCERT Library - found")
+else()
+    message(STATUS "CONCERT Library - not found")
+endif()
+
+if(WIN32)
+	FIND_PATH(CPLEX_BIN_DIR
+	  cplex${CPLEX_WIN_VERSION}.dll
+          HINTS ${CPLEX_ROOT_DIR}/cplex/bin/${CPLEX_WIN_PLATFORM} #windows
+	  )
+else()
+	FIND_PATH(CPLEX_BIN_DIR
+	  cplex 
+          HINTS ${CPLEX_ROOT_DIR}/cplex/bin/x86-64_sles10_4.1 #unix
+	        ${CPLEX_ROOT_DIR}/cplex/bin/${CPLEX_PLATFORM}/static_pic #generic
+
+                ${CPLEX_ROOT_DIR}/cplex/bin/x86-64_debian4.0_4.1 #unix 
+                ${CPLEX_ROOT_DIR}/cplex/bin/x86-64_osx #osx
+		${CPLEX_ROOT_DIR}/cplex/bin/x86-64_darwin #osx 
+		${CPLEX_ROOT_DIR}/cplex/bin/x86-64_linux #linux (ubuntu)
+	  ENV LIBRARY_PATH
+          ENV LD_LIBRARY_PATH
+	  )
+endif()
+message(STATUS "CPLEX Bin Dir: ${CPLEX_BIN_DIR}")
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(CPLEX DEFAULT_MSG 
+ CPLEX_LIBRARY CPLEX_INCLUDE_DIR CPLEX_ILOCPLEX_LIBRARY CPLEX_CONCERT_LIBRARY CPLEX_CONCERT_INCLUDE_DIR)
+
+IF(CPLEX_FOUND)
+  SET(CPLEX_INCLUDE_DIRS ${CPLEX_INCLUDE_DIR} ${CPLEX_CONCERT_INCLUDE_DIR})
+  SET(CPLEX_LIBRARIES ${CPLEX_CONCERT_LIBRARY} ${CPLEX_ILOCPLEX_LIBRARY} ${CPLEX_LIBRARY} )
+  IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+    SET(CPLEX_LIBRARIES "${CPLEX_LIBRARIES};m;pthread;dl")
+  ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ENDIF(CPLEX_FOUND)
+
+MARK_AS_ADVANCED(CPLEX_LIBRARY CPLEX_INCLUDE_DIR CPLEX_ILOCPLEX_LIBRARY CPLEX_CONCERT_INCLUDE_DIR CPLEX_CONCERT_LIBRARY CPLEX_BIN_DIR)
diff --git a/code/include/tb2/ToulbarVersion.cpp b/code/include/tb2/ToulbarVersion.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..62baaa6cb43dd7cace609bb218cc7d92c440a13f
--- /dev/null
+++ b/code/include/tb2/ToulbarVersion.cpp
@@ -0,0 +1,5 @@
+#include "ToulbarVersion.hpp"
+#include "core/tb2types.hpp"
+#include <string>
+
+std::string ToulBar2::version = Toulbar_VERSION;
diff --git a/code/include/tb2/ToulbarVersion.hpp b/code/include/tb2/ToulbarVersion.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..fb33f9e836bc21815f162d551565ab45fe02f726
--- /dev/null
+++ b/code/include/tb2/ToulbarVersion.hpp
@@ -0,0 +1,2 @@
+// Cmake generated version
+#define Toulbar_VERSION "1.1.1-HEAD-tainted (1626771504)"
diff --git a/code/include/tb2/applis/tb2bep.cpp b/code/include/tb2/applis/tb2bep.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1300fb21222b65724593fc4715a177f4a08c44b4
--- /dev/null
+++ b/code/include/tb2/applis/tb2bep.cpp
@@ -0,0 +1,139 @@
+/*
+ * **************** Read BEP files **************************
+ * 
+ */
+
+#include "toulbar2lib.hpp"
+#include "tb2bep.hpp"
+
+const bool BAC = true;
+
+void BEP::read(const char* fileName, WCSP* wcsp)
+{
+    Cost top = MIN_COST;
+
+    // open the file
+    ifstream file(fileName);
+    if (!file) {
+        cerr << "Could not open file " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    string str;
+    getline(file, str);
+    getline(file, str);
+    file >> size;
+    duration.resize(size);
+    earliest.resize(size);
+    latest.resize(size);
+    revenue.resize(size);
+    delay.resize((size_t)size * (size_t)size);
+    getline(file, str);
+    for (int i = 0; i < size; i++) {
+        int pos;
+        file >> pos;
+        pos--;
+        int x;
+        file >> x;
+        int y;
+        file >> y;
+        file >> duration[pos];
+        file >> earliest[pos];
+        earliest[pos] = max(0, earliest[pos]);
+        file >> latest[pos];
+        latest[pos] -= duration[pos];
+        file >> revenue[pos];
+        top += (Cost)revenue[pos] * (size - 1);
+    }
+    for (int i = 0; i < size; i++) {
+        for (int j = 0; j < size; j++) {
+            file >> delay[i * size + j];
+        }
+    }
+
+    wcsp->updateUb(top);
+
+    /* create variables */
+    for (int i = 0; i < size; i++) {
+        string varname = "t";
+        varname += to_string(i + 1);
+        if (BAC)
+            wcsp->makeIntervalVariable(varname, earliest[i], latest[i] + 1);
+        else {
+            wcsp->makeEnumeratedVariable(varname, 0, latest[i] + 1);
+            wcsp->increase(i, earliest[i]);
+        }
+    }
+
+    /* create binary special disjunction */
+    for (int i = 0; i < size; i++) {
+        for (int j = i + 1; j < size; j++) {
+            if (BAC) {
+                wcsp->postSpecialDisjunction(i, j, duration[i] + delay[i * size + j], duration[j] + delay[j * size + i], latest[i] + 1, latest[j] + 1, revenue[i], revenue[j]);
+            } else {
+                vector<Cost> costs(((size_t)latest[i] + 2) * ((size_t)latest[j] + 2), 0);
+                for (int a = earliest[i]; a <= latest[i] + 1; a++) {
+                    for (int b = earliest[j]; b <= latest[j] + 1; b++) {
+                        if (a > latest[i] && b > latest[j])
+                            costs[a * (latest[j] + 2) + b] = revenue[i] + revenue[j];
+                        else if (a > latest[i])
+                            costs[a * (latest[j] + 2) + b] = revenue[i];
+                        else if (b > latest[j])
+                            costs[a * (latest[j] + 2) + b] = revenue[j];
+                        else
+                            costs[a * (latest[j] + 2) + b] = (((a >= b + duration[j] + delay[j * size + i]) || (b >= a + duration[i] + delay[i * size + j])) ? 0 : wcsp->getUb() * MEDIUM_COST);
+                    }
+                }
+                wcsp->postBinaryConstraint(i, j, costs);
+            }
+        }
+    }
+    wcsp->sortConstraints();
+
+    if (ToulBar2::verbose >= 0) {
+        cout << "Read BEP with " << size << " photographs and total gain " << top / (size - 1) << endl;
+    }
+}
+
+void BEP::printSolution(WCSP* wcsp)
+{
+    cout << "Id \t\tRev\t\tTime\t\tMin\t\tMax\t\tDuration\tDelay\t\tSlack" << endl;
+    int cost = 0;
+    int nbphotos = 0;
+    Value lasttime = -1;
+    int lastcurr = -1;
+    for (int i = 0; i < size; i++) {
+        Value time = MAX_VAL;
+        int curr = -1;
+        for (int j = 0; j < size; j++) {
+            if (wcsp->getValue(j) <= ToulBar2::bep->latest[j] && wcsp->getValue(j) < time && wcsp->getValue(j) > lasttime) {
+                curr = j;
+                time = wcsp->getValue(j);
+            }
+        }
+        if (curr >= 0) {
+            cout << curr + 1 << "\t\t" << ToulBar2::bep->revenue[curr] << "\t\t" << wcsp->getValue(curr) << "\t\t" << ToulBar2::bep->earliest[curr] << "\t\t" << ToulBar2::bep->latest[curr] << "\t\t" << ToulBar2::bep->duration[curr];
+            if (lastcurr >= 0) {
+                cout << "\t\t" << ToulBar2::bep->delay[lastcurr * ToulBar2::bep->size + curr];
+                int slack = time - max(ToulBar2::bep->earliest[curr], (lasttime + ToulBar2::bep->duration[lastcurr] + ToulBar2::bep->delay[lastcurr * ToulBar2::bep->size + curr]));
+                cout << "\t\t" << slack;
+                if (slack < 0)
+                    cout << " "
+                         << "**********";
+            }
+            cout << endl;
+            cost += ToulBar2::bep->revenue[curr];
+            nbphotos++;
+            lasttime = time;
+            lastcurr = curr;
+        } else
+            break;
+    }
+    cout << "Gain = " << cost << "\t\tNbPhotos = " << nbphotos << endl;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/applis/tb2bep.hpp b/code/include/tb2/applis/tb2bep.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..3f446bab6de354ed4b282b8a7d8ef2ed2374f553
--- /dev/null
+++ b/code/include/tb2/applis/tb2bep.hpp
@@ -0,0 +1,36 @@
+/** \file tb2bep.hpp
+ *  \brief BEP benchmark: selecting and scheduling earth observations for agile satellite
+ * 
+ */
+
+#ifndef TB2BEP_HPP_
+#define TB2BEP_HPP_
+
+#include "core/tb2wcsp.hpp"
+
+class BEP {
+public:
+    int size;
+    vector<int> duration;
+    vector<int> earliest;
+    vector<int> latest;
+    vector<int> revenue;
+    vector<int> delay;
+
+    BEP()
+        : size(0)
+    {
+    }
+
+    void read(const char* fileName, WCSP* wcsp);
+    void printSolution(WCSP* wcsp);
+};
+
+#endif /*TB2BEP_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/applis/tb2haplotype.cpp b/code/include/tb2/applis/tb2haplotype.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bacd385c47385839da31e24b17ac5b77f7b7f4b2
--- /dev/null
+++ b/code/include/tb2/applis/tb2haplotype.cpp
@@ -0,0 +1,1215 @@
+/*
+ * **************** Read pedigree in pre format files **************************
+ *
+ */
+
+#include "toulbar2lib.hpp"
+#include "core/tb2enumvar.hpp"
+#include "tb2haplotype.hpp"
+
+// A MODIFIER POUR PLUSIEURS LOCUS (freqalleles.find(locus))
+void Haplotype::iniProb(WCSP* wcsp)
+{
+    TProb TopProb = 0.;
+
+    int locus = 0;
+
+    ToulBar2::NormFactor = (-1.0 / Log1p(-Exp10(-(TProb)ToulBar2::resolution)));
+    if (ToulBar2::NormFactor > (Pow((TProb)2., (TProb)INTEGERBITS) - 1) / ((TProb)ToulBar2::resolution)) {
+        cerr << "This resolution cannot be ensured on the data type used to represent costs." << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    int nballeles = alleles.size() - 1;
+
+    TopProb = 0.;
+
+    if (nballeles > 1) {
+        int ngenotyped = genotypes.size();
+        while (ngenotyped) {
+            TopProb += -Log(ToulBar2::errorg / (TProb)(nballeles - 1)) * ToulBar2::NormFactor;
+            ngenotyped--;
+        }
+    }
+
+    for (vector<Individual>::iterator iter = pedigree.begin(); iter != pedigree.end(); ++iter) {
+        Individual& individual = *iter;
+        if (individual.typed) {
+            if (individual.mother && individual.father) {
+                TopProb += -Log(0.25) * ToulBar2::NormFactor;
+            } else if (individual.mother || individual.father) {
+                TopProb += -Log(0.50) * ToulBar2::NormFactor;
+            } else {
+                TProb minp = 1.;
+                switch (ToulBar2::foundersprob_class) {
+                case 0:
+                    TopProb += -Log(1. / (nballeles * nballeles)) * ToulBar2::NormFactor;
+                    break;
+
+                case 1:
+                    for (map<int, int>::iterator iter = freqalleles.find(locus)->second.begin(); iter != freqalleles.find(locus)->second.end(); ++iter) {
+                        TProb p = (TProb)(iter->second * iter->second) / (TProb)(genotypes.size() * genotypes.size() * 4);
+                        if (p < minp)
+                            minp = p;
+                    }
+
+                    TopProb += -Log(minp) * ToulBar2::NormFactor;
+                    break;
+
+                default:
+                    foundersprob.clear();
+                    assert((int)ToulBar2::allelefreqdistrib.size() == nballeles);
+                    for (int i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+                        for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                            // case i!=j must be counted twice (i,j and j,i)
+                            foundersprob.push_back((TProb)((i != j) ? 2. : 1.) * (TProb)ToulBar2::allelefreqdistrib[i - 1] * (TProb)ToulBar2::allelefreqdistrib[j - 1]);
+                        }
+                    }
+                    for (vector<TProb>::iterator iter = foundersprob.begin(); iter != foundersprob.end(); ++iter) {
+                        if (*iter < minp)
+                            minp = *iter;
+                    }
+                    TopProb += -Log(minp) * ToulBar2::NormFactor;
+                }
+            }
+        }
+    }
+    if (TopProb > to_double(MAX_COST)) {
+        cerr << "Overflow: product of min probabilities < size of used datatype." << endl;
+        exit(EXIT_FAILURE);
+    }
+    wcsp->updateUb((Cost)((Long)TopProb));
+}
+
+typedef struct {
+    EnumeratedVariable* var;
+    vector<Cost> costs;
+} TemporaryUnaryConstraint;
+
+void Haplotype::typeAscendants(int individual)
+{
+    if (individual > 0) {
+        assert(individuals.count(individual) != 0);
+        int index = individuals[individual];
+        if (!pedigree[index].typed) {
+            pedigree[index].typed = true;
+            nbtyped++;
+            typeAscendants(pedigree[index].father);
+            typeAscendants(pedigree[index].mother);
+        }
+    }
+}
+
+void Haplotype::read(const char* fileName, WCSP* wcsp)
+{
+    double time = cpuTime();
+    bayesian = false;
+    readPedigree(fileName, wcsp);
+    if (ToulBar2::haplotype) {
+        readMap(fileName);
+        initTransmission();
+        buildWCSP_haplotype(fileName, wcsp);
+    } else {
+        ToulBar2::map_file = "";
+        buildWCSP(fileName, wcsp);
+    }
+    cout << "Reading and creating problem time :\t " << cpuTime() - time << endl;
+}
+
+void Haplotype::read_bayesian(const char* fileName, WCSP* wcsp)
+{
+    bayesian = true;
+    readPedigree(fileName, wcsp);
+    buildWCSP_bayesian(fileName, wcsp);
+}
+
+void Haplotype::readMap(const char* fileName)
+{
+
+    Double position;
+    bool ok = true;
+    ifstream fmap(ToulBar2::map_file.c_str());
+    if (!fmap) {
+        int pos = string(fileName).find_last_of(".");
+        string strmap(string(fileName).substr(0, pos) + string(".map"));
+        fmap.open(strmap.c_str());
+        cerr << "No markers map file specified. Trying " << strmap << endl;
+        if (!fmap) {
+            cerr << "No markers map file found." << endl;
+            exit(EXIT_FAILURE);
+        }
+    }
+    while (fmap && ok) {
+
+        fmap >> position;
+        if (fmap)
+            maplocus.push_back(position);
+    }
+    fmap.close();
+    /*	int i=1;
+	for(vector<Double>::iterator it=maplocus.begin(); it!=maplocus.end();++it){
+		cout << i << " " << *it << " " << maplocus[i-1] << endl;// *it << endl;
+		++i;
+	}
+     */
+}
+
+inline bool cmp_generation(const Individual& i1, const Individual& i2) { return i1.generation < i2.generation || (i1.generation == i2.generation && i1.individual < i2.individual); }
+
+int Haplotype::fixGenerationNumber(int index)
+{
+
+    if (pedigree[index].generation != -1)
+        return pedigree[index].generation;
+    else {
+        if (pedigree[index].father > 0 && pedigree[index].mother > 0) {
+            pedigree[index].generation = max(fixGenerationNumber(individuals[pedigree[index].father]), fixGenerationNumber(individuals[pedigree[index].mother])) + 1;
+        } else if (pedigree[index].father > 0 && pedigree[index].mother == 0) {
+            pedigree[index].generation = fixGenerationNumber(individuals[pedigree[index].father]) + 1;
+        } else if (pedigree[index].mother > 0 && pedigree[index].father == 0) {
+            pedigree[index].generation = fixGenerationNumber(individuals[pedigree[index].mother]) + 1;
+        } else {
+            assert(pedigree[index].mother == 0 && pedigree[index].father == 0);
+            pedigree[index].generation = 1;
+        }
+        return pedigree[index].generation;
+    }
+}
+
+// warning! locus information is not used: assume that only one locus is defined in the pedigree file
+void Haplotype::readPedigree(const char* fileName, WCSP* wcsp)
+{
+    int individual;
+    int nbindividuals = 0;
+    int nbtypings = 0;
+    //  map<int, int> allelesInv;
+    map<int, map<int, int>> allelesInv; // allelesInv[locus,val]=allele
+    map<int, int> nballeles; // nballeles[i] number of allele for the marker i
+    map<int, int> maxallele;
+    int numal = 0;
+    string strfile(fileName);
+    int pos = strfile.find_last_of(".");
+    string errorfilename = strfile.substr(0, pos) + ".errors";
+
+    // open the file
+    ifstream file(fileName);
+    if (!file) {
+        cerr << "Could not open file " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    ifstream fileErrors(errorfilename.c_str());
+    if (fileErrors)
+        ToulBar2::consecutiveAllele = true;
+
+    while (file) {
+        int cur_family = -1;
+        individual = 0;
+
+        file >> cur_family;
+        if (!file)
+            break;
+        if (family == -1)
+            family = cur_family;
+        if (family != cur_family) {
+            cerr << "Pedigree datafile contains more than one locus!" << endl;
+            exit(EXIT_FAILURE);
+        }
+
+        file >> individual;
+        if (!file) {
+            cerr << "(1) Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+        assert(individual != 0);
+        if (individuals.count(individual) == 0) {
+            individuals[individual] = nbindividuals;
+            Individual geno(individual);
+            pedigree.push_back(geno);
+            nbindividuals++;
+        }
+
+        file >> pedigree[individuals[individual]].father;
+
+        if (!file) {
+            cerr << "(2) Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+        if (pedigree[individuals[individual]].father > 0 && individuals.count(pedigree[individuals[individual]].father) == 0) {
+            individuals[pedigree[individuals[individual]].father] = nbindividuals;
+            Individual geno(pedigree[individuals[individual]].father);
+            geno.sex = MALE;
+            pedigree.push_back(geno);
+            nbindividuals++;
+        }
+
+        file >> pedigree[individuals[individual]].mother;
+        if (!file) {
+            cerr << "(3) Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+        if (pedigree[individuals[individual]].mother > 0 && individuals.count(pedigree[individuals[individual]].mother) == 0) {
+            individuals[pedigree[individuals[individual]].mother] = nbindividuals;
+            Individual geno(pedigree[individuals[individual]].mother);
+            geno.sex = FEMALE;
+            pedigree.push_back(geno);
+            nbindividuals++;
+        }
+
+        if (pedigree[individuals[individual]].father == 0 && pedigree[individuals[individual]].mother == 0) {
+            pedigree[individuals[individual]].generation = 1;
+        } else if (pedigree[individuals[individual]].father > 0 && pedigree[individuals[individual]].mother > 0 && pedigree[individuals[pedigree[individuals[individual]].father]].generation != -1 && pedigree[individuals[pedigree[individuals[individual]].mother]].generation != -1) {
+            pedigree[individuals[individual]].generation = max(pedigree[individuals[pedigree[individuals[individual]].father]].generation, pedigree[individuals[pedigree[individuals[individual]].mother]].generation) + 1;
+        } else if (pedigree[individuals[individual]].father > 0 && pedigree[individuals[individual]].mother == 0 && pedigree[individuals[pedigree[individuals[individual]].father]].generation != -1) {
+            pedigree[individuals[individual]].generation = pedigree[individuals[pedigree[individuals[individual]].father]].generation + 1;
+        } else if (pedigree[individuals[individual]].father == 0 && pedigree[individuals[individual]].mother > 0 && pedigree[individuals[pedigree[individuals[individual]].mother]].generation != -1) {
+            pedigree[individuals[individual]].generation = pedigree[individuals[pedigree[individuals[individual]].mother]].generation + 1;
+        }
+
+        file >> pedigree[individuals[individual]].sex;
+
+        if (!file) {
+            cerr << "(4) Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+        numal = 0;
+        do {
+            int allele = 0;
+            Genotype gen;
+            file >> allele;
+            if (!file) {
+                cerr << "(5) Wrong data after individual " << individual << endl;
+                exit(EXIT_FAILURE);
+            }
+            if (allele < 0) {
+                gen.fixed = true;
+                //pedigree[individuals[individual]].genotypes[numal].fixed = true;
+                allele = -allele;
+            }
+            gen.allele1 = allele;
+            //pedigree[individuals[individual]].genotypes[numal].allele1 = allele;
+
+            allele = 0;
+            file >> allele;
+            if (!file) {
+                cerr << "(6) Wrong data after individual " << individual << endl;
+                exit(EXIT_FAILURE);
+            }
+            if (allele < 0) {
+                gen.fixed = true;
+                allele = -allele;
+            }
+            gen.allele2 = allele;
+            pedigree[individuals[individual]].genotypes.push_back(gen);
+            numal++;
+        } while (file.peek() != '\n');
+        nbloci = numal;
+
+        for (int a = 0; a < nbloci; ++a) {
+            int allele1 = pedigree[individuals[individual]].genotypes[a].allele1;
+            int allele2 = pedigree[individuals[individual]].genotypes[a].allele2;
+
+            if (alleles.find(a)->second.count(allele1) == 0) {
+                nballeles[a]++;
+                alleles[a].insert(pair<int, int>(allele1, nballeles[a]));
+                //alleles.insert(pair< pair<int,int>,int >(pair<int,int>(a,allele1),nballeles[a]));
+                //alleles[allele1] = nballeles;
+                freqalleles[a].insert(pair<int, int>(pair<int, int>(allele1, 1)));
+
+                if (allele1 > maxallele[a])
+                    maxallele[a] = allele1;
+            } else {
+                freqalleles[a].find(allele1)->second++;
+                //freqalleles.find(pair<int,int> (a,allele1))->second ++;
+            }
+
+            if (alleles.find(a)->second.count(allele2) == 0) {
+                nballeles[a]++;
+
+                alleles[a].insert(pair<int, int>(allele2, nballeles[a]));
+                //alleles.insert(pair<pair<int,int>,int >(pair<int,int>(a,allele2),nballeles[a]));
+                //alleles[allele1] = nballeles;
+                freqalleles[a].insert(pair<int, int>(pair<int, int>(allele2, 1)));
+                //freqalleles.insert(pair<pair<int,int>,int >(pair<int,int>(a,allele2),1));
+                if (allele2 > maxallele[a])
+                    maxallele[a] = allele2;
+            } else {
+                freqalleles[a].find(allele2)->second++;
+                //freqalleles.find(pair<int,int> (a,allele2))->second ++;
+            }
+            // A MODIFIER : met dans genotypes les individu qui le sont pour au moins 1 marqueur => les ajouter si tout les marqueurs ou faire une variable genotypes pour chaque marqueur (proposition la plus pertinante?)
+            if (allele1 > 0 || allele2 > 0) {
+                nbtypings++;
+                genotypes.push_back(individual);
+            }
+        }
+    }
+#ifdef MENDELSOFT
+//  if(ToulBar2::consecutiveAllele) {
+//  	cout << "Make alleles consecutive and suppose 4 allele." << endl;
+//    maxallele = 4;
+//  	for(int i=1;i<=maxallele;i++) {
+//  		map<int,int>::iterator it = alleles.find(i);
+//  		if(it == alleles.end()) {
+//	        nballeles++;
+//  			alleles[i] = nballeles;
+// 	        freqalleles[i] = 0;
+//  		}
+//  	}
+//  }
+#endif
+
+    /* re-encoding of alleles */
+    map<int, int> nb;
+    if (ToulBar2::verbose >= 2)
+        cout << "Alleles encoding:" << endl;
+    for (map<int, map<int, int>>::iterator iter = alleles.begin(); iter != alleles.end(); ++iter) {
+        //if ((*iter).first.second == 0) continue;
+        //nb[(*iter).first]++;
+        for (map<int, int>::iterator iter2 = iter->second.begin(); iter2 != iter->second.end(); ++iter2) {
+            nb[(*iter).first]++;
+            int n = nb.find((*iter).first)->second;
+            if (ToulBar2::verbose >= 2)
+                cout << "locus " << (*iter).first << ", " << (*iter2).first /*<< ": " << n*/ << endl;
+            iter2->second = n;
+            //allelesInv[nb] = (*iter).first;
+            //allelesInv.insert(pair<pair<int,int>,int >(pair<int,int>((*iter).first,n),(*iter2).first));
+            allelesInv[(*iter).first].insert(pair<int, int>(n, (*iter2).first));
+        }
+    }
+    for (int i = 0; i < nbloci; ++i)
+        assert(nballeles[i] == nb.find(i)->second);
+
+    if (!ToulBar2::haplotype) {
+        for (int l = 0; l < nbloci; ++l) {
+            if (ToulBar2::verbose >= 1)
+                cout << "Genotype encoding for locus " << l << " :" << endl;
+            for (int i = 1; i <= nballeles[l]; i++) { /* i = first allele of child */
+                for (int j = i; j <= nballeles[l]; j++) { /* j = second allele of child */
+                    Genotype geno;
+                    geno.allele1 = allelesInv.find(l)->second.find(i)->second; //allelesInv.find(pair<int,int>(l,i))->second;
+                    geno.allele2 = allelesInv.find(l)->second.find(j)->second; //allelesInv.find(pair<int,int>(l,j))->second; //[j];
+                    genoconvert[l].push_back(geno);
+                    if (ToulBar2::verbose >= 1) {
+                        cout << genoconvert[l].size() - 1 << ": ";
+                        printGenotype(cout, genoconvert[l].size() - 1, l);
+                        cout << endl;
+                    }
+                }
+            }
+        }
+    }
+
+    /* individuals re-ordering by generation levels */
+    for (unsigned int i = 0; i < pedigree.size(); i++) {
+        if (pedigree[i].generation == -1)
+            fixGenerationNumber(i);
+        if (pedigree[i].generation > generations)
+            generations = pedigree[i].generation;
+    }
+    if (ToulBar2::generation) {
+        stable_sort(pedigree.begin(), pedigree.end(), cmp_generation);
+        for (unsigned int i = 0; i < pedigree.size(); i++) {
+            individuals[pedigree[i].individual] = i;
+        }
+    }
+
+    int l = 0; //  A MODIFIER POUR LA PRISE EN COMPTE DE PLUSIEURS LOCUS
+    for (unsigned int i = 0; i < genotypes.size(); i++) {
+        typeAscendants(genotypes[i]);
+        if (genotypes[i] >= 0 && pedigree[individuals[genotypes[i]]].father > 0 && pedigree[individuals[pedigree[individuals[genotypes[i]]].father]].genotypes[l].allele1 > 0 && pedigree[individuals[pedigree[individuals[genotypes[i]]].father]].genotypes[l].allele2 > 0)
+            pedigree[individuals[pedigree[individuals[genotypes[i]]].father]].nbtyped++;
+        if (genotypes[i] >= 0 && pedigree[individuals[genotypes[i]]].mother > 0 && pedigree[individuals[pedigree[individuals[genotypes[i]]].mother]].genotypes[l].allele1 > 0 && pedigree[individuals[pedigree[individuals[genotypes[i]]].mother]].genotypes[l].allele2 > 0)
+            pedigree[individuals[pedigree[individuals[genotypes[i]]].mother]].nbtyped++;
+    }
+    cout << nbtyped << " informative individuals found (either genotyped or having a genotyped descendant)." << endl;
+
+    gencorrects.clear();
+    if (fileErrors) {
+        while (fileErrors) {
+            int bonallele1;
+            fileErrors >> individual;
+            fileErrors >> bonallele1;
+            int bonallele2 = pedigree[individuals[individual]].genotypes[numal].allele2;
+            if (bonallele1 == pedigree[individuals[individual]].genotypes[numal].allele1)
+                cout << "error file with a mistake" << endl;
+            gencorrects[individual] = convertgen(l, bonallele1, bonallele2);
+        }
+    }
+    assert(wcsp->numberOfVariables() == 0);
+    assert(wcsp->numberOfConstraints() == 0);
+}
+
+int Haplotype::convertgen(int locus, int allele1, int allele2)
+{
+    int nballeles = alleles.find(locus)->second.size() - 1;
+    int bongen = 0;
+
+    if (allele1 > allele2) {
+        int alleleaux = allele1;
+        allele1 = allele2;
+        allele2 = alleleaux;
+    }
+
+    for (int i = 1; i <= nballeles; i++) {
+        for (int j = i; j <= nballeles; j++) {
+            if ((i == allele1) && (j == allele2))
+                return bongen;
+            bongen++;
+        }
+    }
+    return -1;
+}
+
+// A MODIFIER POUR PLUSIEURS LOCUS
+void Haplotype::buildWCSP(const char* fileName, WCSP* wcsp)
+{
+    int locus = 0;
+    ifstream file(fileName);
+
+    vector<TemporaryUnaryConstraint> unaryconstrs;
+
+    int nbindividuals = individuals.size();
+    int nballeles = alleles.find(locus)->second.size() - 1;
+    int nbfounders = 0;
+    int nbtypings = genotypes.size();
+
+    wcsp->updateUb(nbtypings + 1);
+
+    /* create variables */
+    int nbvar = 0;
+    for (int i = 0; i < nbindividuals; i++) {
+        if (pedigree[i].father == 0 && pedigree[i].mother == 0)
+            nbfounders++;
+        if (pedigree[i].typed) {
+            string varname;
+            varname = to_string(pedigree[i].individual);
+            wcsp->makeEnumeratedVariable(varname, 0, nballeles * (nballeles + 1) / 2 - 1);
+            pedigree[i].varindex = nbvar;
+            nbvar++;
+        }
+    }
+
+    /* create ternary Mendelian hard constraint table */
+    vector<Cost> costs3;
+    for (int k = 1; k <= nballeles; k++) { /* k = first allele of father */
+        for (int l = k; l <= nballeles; l++) { /* l = second allele of father */
+            for (int m = 1; m <= nballeles; m++) { /* m = first allele of mother */
+                for (int n = m; n <= nballeles; n++) { /* n = second allele of mother */
+                    for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                        for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                            costs3.push_back(((i == k && j == m) || (i == k && j == n) || (i == l && j == m) || (i == l && j == n) || (i == m && j == k) || (i == m && j == l) || (i == n && j == k) || (i == n && j == l)) ? 0 : wcsp->getUb() * MEDIUM_COST);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /* create binary Mendelian hard constraint table */
+    vector<Cost> costs2;
+    for (int k = 1; k <= nballeles; k++) { /* k = first allele of father or mother */
+        for (int l = k; l <= nballeles; l++) { /* l = second allele of father or mother */
+            for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                    costs2.push_back((i == k || i == l || j == k || j == l) ? 0 : wcsp->getUb() * MEDIUM_COST);
+                }
+            }
+        }
+    }
+
+    /* create constraint network */
+    while (file) {
+        int cur_locus = -1;
+        int individual = 0;
+        int father = 0;
+        int mother = 0;
+        int sex = -1;
+        int allele1 = 0;
+        int allele2 = 0;
+
+        file >> cur_locus;
+        if (!file)
+            break;
+        file >> individual;
+        file >> father;
+        file >> mother;
+        file >> sex;
+        file >> allele1;
+        if (allele1 < 0)
+            allele1 = -allele1;
+        allele1 = alleles.find(locus)->second.find(allele1)->second;
+        file >> allele2;
+        if (allele2 < 0)
+            allele2 = -allele2;
+        allele2 = alleles.find(locus)->second.find(allele2)->second;
+        if (!pedigree[individuals[individual]].typed)
+            continue;
+
+        /* add unary costs (soft constraint) if genotyping is given */
+        if (allele1 > 0 || allele2 > 0) {
+            EnumeratedVariable* var = (EnumeratedVariable*)wcsp->getVar(pedigree[individuals[individual]].varindex);
+            TemporaryUnaryConstraint unaryconstr;
+            unaryconstr.var = var;
+            for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                    if ((allele1 > 0 && allele2 > 0 && ((i == allele1 && j == allele2) || (i == allele2 && j == allele1)))
+                        || ((allele1 == 0 || allele2 == 0) && (i == allele1 || i == allele2 || j == allele1 || j == allele2))) {
+                        unaryconstr.costs.push_back(0);
+                    } else {
+                        unaryconstr.costs.push_back((pedigree[individuals[individual]].genotypes[locus].fixed) ? wcsp->getUb() : 1);
+                    }
+                }
+            }
+            unaryconstrs.push_back(unaryconstr);
+            var->queueNC();
+        }
+
+        /* add ternary or binary Mendelian hard constraint */
+        if (father > 0 || mother > 0) {
+            if (father > 0 && mother > 0) {
+                assert(pedigree[individuals[pedigree[individuals[individual]].father]].typed);
+                assert(pedigree[individuals[pedigree[individuals[individual]].mother]].typed);
+                wcsp->postTernaryConstraint(pedigree[individuals[pedigree[individuals[individual]].father]].varindex, pedigree[individuals[pedigree[individuals[individual]].mother]].varindex, pedigree[individuals[individual]].varindex, costs3);
+            } else if (father > 0) {
+                wcsp->postBinaryConstraint(pedigree[individuals[pedigree[individuals[individual]].father]].varindex, pedigree[individuals[individual]].varindex, costs2);
+            } else {
+                wcsp->postBinaryConstraint(pedigree[individuals[pedigree[individuals[individual]].mother]].varindex, pedigree[individuals[individual]].varindex, costs2);
+            }
+        }
+    }
+
+    // apply basic initial propagation AFTER complete network loading
+    for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+        for (unsigned int a = 0; a < unaryconstrs[u].var->getDomainInitSize(); a++) {
+            if (unaryconstrs[u].costs[a] > 0)
+                unaryconstrs[u].var->project(unaryconstrs[u].var->toValue(a), unaryconstrs[u].costs[a], true);
+        }
+        unaryconstrs[u].var->findSupport();
+    }
+    wcsp->sortConstraints();
+
+    if (ToulBar2::verbose >= 0) {
+        cout << "Read pedigree with " << nbindividuals << " individuals, " << nbfounders << " founders, " << nballeles << " alleles, " << nbtypings << " genotypings and " << generations << " generations." << endl;
+    }
+}
+
+// A MODIFIER POUR PLUSIEURS LOCUS
+void Haplotype::buildWCSP_bayesian(const char* fileName, WCSP* wcsp)
+{
+
+    int locus = 0;
+    ifstream file(fileName);
+
+    vector<TemporaryUnaryConstraint> unaryconstrs;
+    int nbindividuals = individuals.size();
+    int nballeles = alleles.find(locus)->second.size() - 1;
+    int domsize = nballeles * (nballeles + 1) / 2;
+    int nbfounders = 0;
+    int nbtypings = genotypes.size();
+
+    iniProb(wcsp);
+
+    /* create variables */
+    int nbvar = 0;
+    for (int i = 0; i < nbindividuals; i++) {
+        if (pedigree[i].father == 0 && pedigree[i].mother == 0)
+            nbfounders++;
+        if (pedigree[i].typed) {
+            string varname;
+            varname = to_string(pedigree[i].individual);
+            wcsp->makeEnumeratedVariable(varname, 0, nballeles * (nballeles + 1) / 2 - 1);
+            pedigree[i].varindex = nbvar;
+            nbvar++;
+        }
+    }
+
+    /* create ternary Mendelian hard constraint table */
+    vector<Cost> costs3;
+    for (int k = 1; k <= nballeles; k++) { /* k = first allele of father */
+        for (int l = k; l <= nballeles; l++) { /* l = second allele of father */
+            for (int m = 1; m <= nballeles; m++) { /* m = first allele of mother */
+                for (int n = m; n <= nballeles; n++) { /* n = second allele of mother */
+                    for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                        for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                            TProb p = 0.;
+                            if ((i == k && j == m) || (i == m && j == k))
+                                p += 0.25;
+                            if ((i == k && j == n) || (i == n && j == k))
+                                p += 0.25;
+                            if ((i == l && j == m) || (i == m && j == l))
+                                p += 0.25;
+                            if ((i == l && j == n) || (i == n && j == l))
+                                p += 0.25;
+                            costs3.push_back(wcsp->Prob2Cost(p));
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    map<int, int> allelesInv; // A MODIFIER POUR PLUSIEURS LOCUS voir readPedigree;
+
+    int i, j;
+    switch (ToulBar2::foundersprob_class) {
+    case 0:
+        foundersprob.clear();
+        for (i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+            for (j = i; j <= nballeles; j++) { /* j = second allele of child */
+                foundersprob.push_back(((i != j) ? 2. : 1.) / (TProb)(nballeles * nballeles));
+            }
+        }
+        break;
+
+    case 1:
+        foundersprob.clear();
+        for (map<int, int>::iterator iter = alleles[locus].begin(); iter != alleles[locus].end(); ++iter) {
+            allelesInv[iter->second] = iter->first;
+        }
+        for (i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+            for (j = i; j <= nballeles; j++) { /* j = second allele of child */
+                // case i!=j must be counted twice (i,j and j,i)
+                foundersprob.push_back((TProb)((i != j) ? 2. : 1.) * (TProb)freqalleles[locus].find(allelesInv[i])->second * freqalleles[locus].find(allelesInv[j])->second / (TProb)(nbtypings * nbtypings * 4));
+            }
+        }
+        break;
+
+    default:
+        foundersprob.clear();
+        assert((int)ToulBar2::allelefreqdistrib.size() == nballeles);
+        for (i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+            for (j = i; j <= nballeles; j++) { /* j = second allele of child */
+                // case i!=j must be counted twice (i,j and j,i)
+                foundersprob.push_back((TProb)((i != j) ? 2. : 1.) * (TProb)ToulBar2::allelefreqdistrib[i - 1] * (TProb)ToulBar2::allelefreqdistrib[j - 1]);
+            }
+        }
+        break;
+    }
+    if (ToulBar2::verbose >= 1) {
+        cout << "Genotype prior:" << endl;
+        for (unsigned int n = 0; n < genoconvert.size(); n++) {
+            printGenotype(cout, n, locus);
+            cout << " " << foundersprob[n] << endl;
+        }
+    }
+
+    /* create binary Mendelian hard constraint table */
+    vector<Cost> costs2;
+    for (int k = 1; k <= nballeles; k++) { /* k = first allele of father or mother */
+        for (int l = k; l <= nballeles; l++) { /* l = second allele of father or mother */
+            for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                    TProb p = 0;
+                    if (i == k || i == l || j == k || j == l) {
+                        if (k == l)
+                            p += 1. / (TProb)nballeles;
+                        else
+                            p += 1. / ((TProb)nballeles + (TProb)nballeles - 1);
+                    }
+                    costs2.push_back(wcsp->Prob2Cost(p));
+                }
+            }
+        }
+    }
+
+    /* create constraint network */
+    while (file) {
+        int cur_locus = -1;
+        int individual = 0;
+        int father = 0;
+        int mother = 0;
+        int sex = -1;
+        int allele1 = 0;
+        int allele2 = 0;
+
+        file >> cur_locus;
+        if (!file)
+            break;
+        file >> individual;
+        file >> father;
+        file >> mother;
+        file >> sex;
+        file >> allele1;
+        if (allele1 < 0)
+            allele1 = -allele1;
+        allele1 = alleles.find(locus)->second.find(allele1)->second;
+        file >> allele2;
+        if (allele2 < 0)
+            allele2 = -allele2;
+        allele2 = alleles.find(locus)->second.find(allele2)->second;
+        if (!pedigree[individuals[individual]].typed)
+            continue;
+
+        EnumeratedVariable* var = (EnumeratedVariable*)wcsp->getVar(pedigree[individuals[individual]].varindex);
+
+        /* add unary costs (soft constraint) if genotyping is given */
+        if (allele1 > 0 || allele2 > 0) {
+            TemporaryUnaryConstraint unaryconstr;
+            unaryconstr.var = var;
+            for (int i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+                for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                    bool typed = allele1 > 0 && allele2 > 0;
+                    bool halftyped = allele1 > 0 || allele2 > 0;
+
+                    bool theone = (i == allele1 && j == allele2) || (i == allele2 && j == allele1);
+                    bool posible = (i == allele1 || i == allele2 || j == allele1 || j == allele2);
+
+                    bool fixed = pedigree[individuals[individual]].genotypes[locus].fixed;
+
+                    TProb p = 0;
+                    Cost penalty = 0;
+                    if (typed) {
+                        if (theone)
+                            p = 1. - ToulBar2::errorg;
+                        else {
+                            p = ToulBar2::errorg / (TProb)(domsize - 1);
+                            penalty = pedigree[individuals[individual]].nbtyped;
+                        }
+                    } else if (halftyped) {
+                        if (posible)
+                            p = (1. - ToulBar2::errorg) / (TProb)nballeles;
+                        else {
+                            p = ToulBar2::errorg / (TProb)(domsize - nballeles);
+                            penalty = pedigree[individuals[individual]].nbtyped;
+                        }
+                    }
+                    if (ToulBar2::pedigreePenalty > 0 && ToulBar2::verbose >= 1)
+                        cout << individual << ": " << penalty << " nbtyped " << ((penalty > ToulBar2::pedigreePenalty) ? wcsp->Cost2LogProb(-((penalty > 0) ? wcsp->Prob2Cost(to_double(penalty)) : MIN_COST)) / Log(10.) : 0.) << " log10like " << -((penalty > ToulBar2::pedigreePenalty) ? wcsp->Prob2Cost(to_double(penalty)) : MIN_COST) << " cost" << endl;
+                    unaryconstr.costs.push_back((typed && fixed && !theone) ? wcsp->getUb() : (wcsp->Prob2Cost(p) - ((ToulBar2::pedigreePenalty > 0 && penalty > ToulBar2::pedigreePenalty) ? wcsp->Prob2Cost(to_double(penalty)) : MIN_COST)));
+                }
+            }
+            unaryconstrs.push_back(unaryconstr);
+            var->queueNC();
+        }
+
+        int id_father = individuals[pedigree[individuals[individual]].father];
+        int id_mother = individuals[pedigree[individuals[individual]].mother];
+
+        /* add ternary or binary Mendelian hard constraint */
+        if (father > 0 || mother > 0) {
+            if (father > 0 && mother > 0) {
+                assert(pedigree[id_father].typed);
+                assert(pedigree[id_mother].typed);
+                wcsp->postTernaryConstraint(pedigree[id_father].varindex, pedigree[id_mother].varindex, pedigree[individuals[individual]].varindex, costs3);
+            } else if (father > 0) {
+                wcsp->postBinaryConstraint(pedigree[id_father].varindex, pedigree[individuals[individual]].varindex, costs2);
+            } else {
+                wcsp->postBinaryConstraint(pedigree[id_mother].varindex, pedigree[individuals[individual]].varindex, costs2);
+            }
+        } else {
+            TemporaryUnaryConstraint unaryconstr;
+            unaryconstr.var = var;
+            for (vector<TProb>::iterator iter = foundersprob.begin(); iter != foundersprob.end(); ++iter) {
+                unaryconstr.costs.push_back(wcsp->Prob2Cost(*iter));
+            }
+            unaryconstrs.push_back(unaryconstr);
+            var->queueNC();
+        }
+    }
+
+    // apply basic initial propagation AFTER complete network loading
+    for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+        for (unsigned int a = 0; a < unaryconstrs[u].var->getDomainInitSize(); a++) {
+            if (unaryconstrs[u].costs[a] > 0)
+                unaryconstrs[u].var->project(unaryconstrs[u].var->toValue(a), unaryconstrs[u].costs[a], true);
+        }
+        unaryconstrs[u].var->findSupport();
+    }
+    wcsp->sortConstraints();
+
+    if (ToulBar2::verbose >= 0) {
+        int nbtypings = genotypes.size();
+        cout << "Read pedigree with " << nbindividuals << " individuals, " << nbfounders << " founders, " << nballeles << " alleles, " << nbtypings << " genotypings and " << generations << " generations." << endl;
+        cout << "Bayesian MPE (genotyping error rate: " << ToulBar2::errorg << ", genotype prior: " << ToulBar2::foundersprob_class << ", precision(1-10^-p): " << ToulBar2::resolution << ", normalization: " << ToulBar2::NormFactor << ", ub: " << wcsp->getUb() << ")" << endl;
+    }
+}
+
+void Haplotype::buildWCSP_haplotype(const char* fileName, WCSP* wcsp)
+{
+    //create the sparse matrix
+    sparse_matrix();
+
+    //create Boolean variables
+    for (int i = 0; i < nbloci; i++) {
+        wcsp->makeEnumeratedVariable(to_string(i), 0, 1);
+    }
+
+    vector<Cost> unaryCosts0(nbloci, 0);
+    vector<Cost> unaryCosts1(nbloci, 0);
+
+    // find total cost
+    Double sumcost = 0.;
+
+    for (map<pair<int, int>, Double, classcomp>::iterator w = W.begin(); w != W.end(); ++w)
+        sumcost += abs(w->second);
+    ToulBar2::NormFactor = (-1.0 / Log1p(-Exp10(-(TProb)ToulBar2::resolution)));
+    wcsp->updateUb((Cost)(ToulBar2::NormFactor * sumcost));
+    //	  Double constante = 0.;
+    for (map<pair<int, int>, Double, classcomp>::iterator w = W.begin(); w != W.end(); ++w) {
+        if (w->first.first != w->first.second) {
+            vector<Cost> costs(4, 0);
+            if (w->second > 0) {
+                costs[1] = (Cost)(ToulBar2::NormFactor * w->second);
+                costs[2] = costs[1];
+                K += 2. * w->second;
+                //				  constante += 2. * w->second;
+            } else {
+                costs[0] = (Cost)(-ToulBar2::NormFactor * w->second);
+                costs[3] = costs[0];
+                K += -2. * w->second;
+                //				  constante += -2. * w->second;
+            }
+            if (w->second != 0)
+                wcsp->postBinaryConstraint(w->first.first, w->first.second, costs);
+        } else {
+            //			  if(w->second > 0)
+            //				  unaryCosts1[w->first.first] += (Cost) (multiplier * w->second);
+            //			  else
+            //				  unaryCosts0[w->first.first] += (Cost) (multiplier * -w->second);
+        }
+    }
+    // create weighted unary clauses
+    for (int i = 0; i < nbloci; i++) {
+        if (unaryCosts0[i] > 0 || unaryCosts1[i] > 0) {
+            vector<Cost> costs(2, 0);
+            costs[0] = unaryCosts0[i];
+            costs[1] = unaryCosts1[i];
+            wcsp->postUnary(i, costs);
+        }
+    }
+    wcsp->sortConstraints();
+    cout << "Read " << nbloci << " variables, with " << 2 << " values at most, and " << W.size() << " constraints." << endl;
+    // special data structure to be initialized for variable ordering heuristics
+    if (ToulBar2::verbose == 1)
+        cout << "pedigree ub: " << wcsp->getUb() << endl;
+}
+
+// A MODIFIER POUR PLUSIEURS LOCUS
+void Haplotype::printCorrectSol(WCSP* wcsp)
+{
+    int locus = 0;
+    if (!gencorrects.size())
+        return;
+
+    ofstream file("sol_correct");
+    if (!file) {
+        cerr << "Could not write file "
+             << "solution" << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    for (vector<Individual>::iterator it = pedigree.begin(); it != pedigree.end(); ++it) {
+        Individual& ind = *it;
+        int allele1 = ind.genotypes[locus].allele1;
+        int allele2 = ind.genotypes[locus].allele2;
+        if ((allele1 > 0) || (allele2 > 0)) {
+            map<int, int>::iterator it = gencorrects.find(ind.individual);
+            if (it != gencorrects.end())
+                file << " " << it->second;
+            else
+                file << " " << convertgen(locus, allele1, allele2);
+        } else
+            file << " " << -1;
+    }
+    file << endl;
+}
+
+void Haplotype::printSol(WCSP* wcsp)
+{
+
+    if (!ToulBar2::haplotype) {
+        ofstream file("sol");
+        if (!file) {
+            cerr << "Could not write file "
+                 << "solution" << endl;
+            exit(EXIT_FAILURE);
+        }
+        for (vector<Individual>::iterator it = pedigree.begin(); it != pedigree.end(); ++it) {
+            Individual& ind = *it;
+            if (ind.typed)
+                file << " " << wcsp->getValue(ind.varindex);
+            else
+                file << " " << -1;
+        }
+        file << endl;
+        file.close();
+    } else {
+        ofstream file("haplotypes");
+        cout << "haplotypes\n";
+        file << "sire " << sire << endl;
+        for (int locus = 0; locus < nbloci; ++locus) {
+            file << " ";
+            if (wcsp->getValue(locus) == 1)
+                file << pedigree[individuals.find(sire)->second].genotypes[locus].allele1 << " ";
+            else
+                file << pedigree[individuals.find(sire)->second].genotypes[locus].allele2 << " ";
+        }
+        file << endl;
+        for (int locus = 0; locus < nbloci; ++locus) {
+            file << " ";
+            if (wcsp->getValue(locus) == 0)
+                file << pedigree[individuals.find(sire)->second].genotypes[locus].allele1 << " ";
+            else
+                file << pedigree[individuals.find(sire)->second].genotypes[locus].allele2 << " ";
+        }
+        file << endl;
+        file.close();
+    }
+}
+
+// A MODIFIER POUR PLUSIEURS LOCUS
+void Haplotype::printCorrection(WCSP* wcsp)
+{
+    int locus = 0;
+    bool errorinfo = gencorrects.size() > 0;
+
+    int ncorrect = 0;
+    int ncorrections = 0;
+    int ncorrectok = 0;
+
+    int nbcorrection = 0;
+
+    TProb penalty = 0.;
+
+    cout << "Correction:";
+    for (unsigned int i = 0; i < genotypes.size(); i++) {
+        int sol = wcsp->getValue(pedigree[individuals[genotypes[i]]].varindex);
+        int a1 = (genoconvert[locus])[sol].allele1;
+        int a2 = (genoconvert[locus])[sol].allele2;
+        int allele1 = pedigree[individuals[genotypes[i]]].genotypes[locus].allele1;
+        int allele2 = pedigree[individuals[genotypes[i]]].genotypes[locus].allele2;
+        if (!((allele1 > 0 && allele2 > 0 && ((a1 == allele1 && a2 == allele2) || (a1 == allele2 && a2 == allele1)))
+                || ((allele1 == 0 || allele2 == 0) && (a1 == allele1 || a1 == allele2 || a2 == allele1 || a2 == allele2)))) {
+            cout << " " << genotypes[i];
+            nbcorrection++;
+
+            if (ToulBar2::pedigreePenalty > 0 && pedigree[individuals[genotypes[i]]].nbtyped > ToulBar2::pedigreePenalty) {
+                cout << "*";
+                penalty -= Log(pedigree[individuals[genotypes[i]]].nbtyped);
+            }
+
+            if (errorinfo) {
+                map<int, int>::iterator it = gencorrects.find(genotypes[i]);
+                if (it != gencorrects.end()) {
+                    ncorrect++;
+                    int allellereal = it->second;
+                    if ((allellereal == a1) && (a1 != allele1))
+                        ncorrectok++;
+                }
+            }
+            ncorrections++;
+        }
+    }
+    cout << " (" << nbcorrection;
+    if (ToulBar2::pedigreePenalty > 0) {
+        cout << " " << wcsp->Cost2LogProb(wcsp->getLb()) - penalty << " " << penalty;
+    }
+    cout << ")";
+    cout << endl;
+    if (errorinfo) {
+        cout << "Info errorfile: ";
+        cout << ncorrect << "/" << ncorrections << ", " << ncorrectok << "/" << ncorrect << ", " << gencorrects.size() << " original" << endl;
+        cout << endl;
+    }
+}
+
+void Haplotype::printGenotype(ostream& os, Value value, int locus)
+{
+    os << (genoconvert[locus])[value].allele1 << "/" << (genoconvert[locus])[value].allele2;
+}
+
+void Haplotype::printHaplotype(ostream& os, Value value, int locus)
+{
+    if (value == 1)
+        os << pedigree[individuals.find(sire)->second].genotypes[locus].allele1 << "|" << pedigree[individuals.find(sire)->second].genotypes[locus].allele2 << " ";
+    else
+        os << pedigree[individuals.find(sire)->second].genotypes[locus].allele2 << "|" << pedigree[individuals.find(sire)->second].genotypes[locus].allele1 << " ";
+}
+
+// A MODIFIER POUR PLUSIEURS LOCUS
+void Haplotype::save(const char* fileName, WCSP* wcsp, bool corrected, bool reduced)
+{
+    int locus = 0;
+    assert(!(corrected && reduced));
+
+    // open the file
+    ofstream file(fileName);
+    if (!file) {
+        cerr << "Could not open file " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    for (map<int, int>::iterator iter = individuals.begin(); iter != individuals.end(); ++iter) {
+        if ((*iter).first == 0)
+            continue;
+        if (reduced && (pedigree[(*iter).second].varindex < 0 || pedigree[(*iter).second].varindex >= (int)wcsp->numberOfVariables() || wcsp->assigned(pedigree[(*iter).second].varindex))) {
+            continue;
+        }
+        file << family << " ";
+        if (corrected && pedigree[(*iter).second].varindex >= 0 && pedigree[(*iter).second].varindex < (int)wcsp->numberOfVariables() && wcsp->assigned(pedigree[(*iter).second].varindex)) {
+            int sol = wcsp->getValue(pedigree[(*iter).second].varindex);
+            int a1 = (genoconvert[locus])[sol].allele1;
+            int a2 = (genoconvert[locus])[sol].allele2;
+            int allele1 = pedigree[(*iter).second].genotypes[locus].allele1;
+            int allele2 = pedigree[(*iter).second].genotypes[locus].allele2;
+            if ((allele1 > 0 && allele2 > 0 && !((a1 == allele1 && a2 == allele2) || (a1 == allele2 && a2 == allele1)))
+                || ((allele1 == 0 || allele2 == 0) && !(allele1 == 0 && allele2 == 0) && !(a1 == allele1 || a1 == allele2 || a2 == allele1 || a2 == allele2))
+                || ToulBar2::pedigreeCorrectionMode == 2) {
+                if (ToulBar2::pedigreeCorrectionMode > 0) {
+                    pedigree[(*iter).second].genotypes[locus].allele1 = a1;
+                    pedigree[(*iter).second].genotypes[locus].allele2 = a2;
+                } else {
+                    pedigree[(*iter).second].genotypes[locus].allele1 = 0;
+                    pedigree[(*iter).second].genotypes[locus].allele2 = 0;
+                }
+            }
+            pedigree[(*iter).second].print(file);
+            pedigree[(*iter).second].genotypes[locus].allele1 = allele1;
+            pedigree[(*iter).second].genotypes[locus].allele2 = allele2;
+        } else {
+            pedigree[(*iter).second].print(file);
+        }
+    }
+}
+
+void Haplotype::initTransmission()
+{
+    assert(generations == 2);
+    sire = -1;
+    vector<int> sons;
+    // search the sire
+    for (vector<Individual>::iterator ind = pedigree.begin(); ind != pedigree.end(); ++ind) {
+        if ((*ind).father == 0 && (*ind).mother == 0 && (*ind).sex == 1)
+            sire = (*ind).individual;
+    }
+    assert(sire != -1);
+
+    if (ToulBar2::verbose >= 1)
+        cout << "sire is individual " << sire << endl;
+    for (vector<Individual>::iterator fils = pedigree.begin(); fils != pedigree.end(); ++fils) {
+        vector<int> T;
+        if ((*fils).father == sire) {
+            sons.push_back((*fils).individual);
+            int ind_mother = (*fils).mother;
+            Individual father = pedigree[individuals[(*fils).father]];
+            for (int locus = 0; locus < nbloci; ++locus) {
+                int trans = 5;
+                if (father.genotypes[locus].allele1 == father.genotypes[locus].allele2)
+                    trans = 0; //T.push_back(0);
+                else {
+                    if ((*fils).genotypes[locus].allele1 == (*fils).genotypes[locus].allele2) {
+                        if ((*fils).genotypes[locus].allele1 == father.genotypes[locus].allele1)
+                            trans = -1; //T.push_back(-1);
+                        else
+                            trans = 1; //T.push_back(-1);
+                    } else if (ind_mother != 0) {
+                        Individual mother = pedigree[individuals[(*fils).mother]];
+                        if (mother.genotypes[locus].allele1 != 0 && mother.genotypes[locus].allele2 != 0) { // genotyped mother at this locus
+                            if (mother.genotypes[locus].allele1 != mother.genotypes[locus].allele2)
+                                trans = 0; //T.push_back(0);
+                            else {
+                                if ((*fils).genotypes[locus].allele1 != mother.genotypes[locus].allele1) {
+                                    if ((*fils).genotypes[locus].allele1 == father.genotypes[locus].allele1)
+                                        trans = -1; //T.push_back(-1);
+                                    else
+                                        trans = 1; //T.push_back(-1);
+                                } else if ((*fils).genotypes[locus].allele2 != mother.genotypes[locus].allele1) {
+                                    if ((*fils).genotypes[locus].allele2 == father.genotypes[locus].allele1)
+                                        trans = -1; //T.push_back(-1);
+                                    else
+                                        trans = 1; //T.push_back(-1);
+                                }
+                            }
+                        } else
+                            trans = 0;
+                    } else
+                        trans = 0;
+                }
+                T.push_back(trans);
+            }
+            transmission.insert(pair<int, vector<int>>(fils->individual, T));
+        }
+    }
+    if (ToulBar2::verbose > 1) {
+        cout << "Transmission vectors : \n";
+        for (map<int, vector<int>>::iterator it = transmission.begin(); it != transmission.end(); ++it) {
+            cout << "offspring " << it->first << ":\t ";
+            for (vector<int>::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) {
+                if ((*it2) == 0)
+                    cout << " * ";
+                if ((*it2) == 1)
+                    cout << " " << *it2 << " ";
+                if ((*it2) == -1)
+                    cout << *it2 << " ";
+            }
+            cout << endl;
+        }
+    }
+    /*
+	ofstream file("transmission");
+	for(map<int, vector<int> >::iterator it=transmission.begin(); it!=transmission.end(); ++it){
+		file << "offspring " << it->first << ":\t ";
+		for(vector<int>::iterator it2 = it->second.begin();it2 != it->second.end();++it2){
+			if((*it2) == 0 && pedigree[individuals[sons[it->first].father]].genotypes[*it2].allele1 == pedigree[individuals[sons[it->first].father]].genotypes[*it2].allele2) file << "+ ";
+			else if((*it2) == 0) file << " * ";
+			if((*it2) == 1) file << " " << *it2 << " " ;
+			if((*it2) == -1) file << *it2 << " " ;
+		}
+		file << endl;
+	}
+     */
+}
+
+void Haplotype::sparse_matrix()
+{
+    int nbDesc = 0;
+    for (vector<Individual>::iterator fils = pedigree.begin(); fils != pedigree.end(); ++fils) {
+        if ((*fils).father == sire) {
+            int locus_prec = -1; // first left informative locus with respect to current locus
+            bool first = true; // if first informative locus
+            nbDesc++;
+            for (int locus = 0; locus < nbloci; ++locus) {
+                if (first && transmission.find(fils->individual)->second[locus] != 0) {
+                    first = false;
+                    locus_prec = locus;
+                } else if (!first && transmission.find(fils->individual)->second[locus] != 0) {
+                    Double recombination_frac = haldane(maplocus[locus] - maplocus[locus_prec]);
+                    Double coef = 0.25 * log((1 - recombination_frac) / recombination_frac);
+                    K += log((1 - recombination_frac) * recombination_frac);
+                    if (transmission.find(fils->individual)->second[locus] == transmission.find(fils->individual)->second[locus_prec]) {
+                        if (W.count(pair<int, int>(locus_prec, locus)) == 0)
+                            W.insert(pair<pair<int, int>, Double>(pair<int, int>(locus_prec, locus), coef));
+                        else
+                            W.find(pair<int, int>(locus_prec, locus))->second += coef;
+                    } else {
+                        if (W.count(pair<int, int>(locus_prec, locus)) == 0)
+                            W.insert(pair<pair<int, int>, Double>(pair<int, int>(locus_prec, locus), -coef));
+                        else
+                            W.find(pair<int, int>(locus_prec, locus))->second += -coef;
+                        locus_prec = locus;
+                    }
+                    locus_prec = locus;
+                }
+            }
+        }
+    }
+    K = 0.5 * K + nbDesc * Log(0.5);
+    //affichage
+    if (ToulBar2::verbose >= 1) {
+        cout << "sparse matrix : \n";
+        for (map<pair<int, int>, Double, classcomp>::iterator it = W.begin(); it != W.end(); ++it)
+            if ((*it).second >= 0)
+                cout << "W" << (*it).first.first << "," << (*it).first.second << "\t =\t  " << (*it).second << endl;
+            else
+                cout << "W" << (*it).first.first << "," << (*it).first.second << "\t =\t " << (*it).second << endl;
+        cout << "constant K =\t " << K << endl;
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/applis/tb2haplotype.hpp b/code/include/tb2/applis/tb2haplotype.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..e3307eb5c1572ec23125ebc76404d4e763eabbaa
--- /dev/null
+++ b/code/include/tb2/applis/tb2haplotype.hpp
@@ -0,0 +1,98 @@
+/** \file tb2haplotype.hpp
+ *  \brief Haplotype data structure
+ *
+ */
+
+#ifndef TB2HAPLOTYPE_HPP_
+#define TB2HAPLOTYPE_HPP_
+
+#include "core/tb2wcsp.hpp"
+#include "tb2pedigree.hpp"
+
+struct classcomp {
+    bool operator()(const pair<int, int>& lp, const pair<int, int>& rp) const
+    {
+        if (lp.first > rp.first)
+            return false;
+        else if (lp.first < rp.first)
+            return true;
+        else if (lp.second > rp.second)
+            return false;
+        else if (lp.second < rp.second)
+            return true;
+        else
+            return false;
+    }
+};
+
+class Haplotype {
+    int family; // same locus for all the genotypes
+    int nbloci;
+    vector<Individual> pedigree; // list of individuals
+    vector<int> genotypes; // list of genotyped individuals id.
+    map<int, vector<Genotype>> genoconvert; // convert domain value to genotype
+    map<int, int> individuals; // sorted list of pair<individual id, pedigree id>
+    map<int, map<int, int>> alleles; // sorted list of pair<locus number, allele number, encoding consecutive number>
+    int nbtyped; // number of individuals with a genotyped descendant
+    int generations;
+    bool bayesian;
+    vector<TProb> foundersprob;
+    map<int, map<int, int>> freqalleles; // frequencies of original alleles: freqalleles[allele number] = frequency
+    map<int, int> gencorrects;
+
+    vector<Double> maplocus; // marker map
+    map<int, vector<int>> transmission; //pair <individual id, transmission vector>
+    map<pair<int, int>, Double, classcomp> W;
+    int sire;
+    Double K;
+    //Double multiplier; // for conversion in integer cost
+
+    void typeAscendants(int individual);
+    int fixGenerationNumber(int index);
+
+public:
+    Haplotype()
+        : family(-1)
+        , nbtyped(0)
+        , generations(0)
+        , bayesian(false)
+        , sire(-1)
+        , K(0.0)
+    { /*alleles[0] = 0;*/
+    }
+
+    void read(const char* fileName, WCSP* wcsp);
+    void read_bayesian(const char* fileName, WCSP* wcsp);
+    void save(const char* fileName, WCSP* wcsp, bool corrected, bool reduced);
+
+    void readPedigree(const char* fileName, WCSP* wcsp);
+    void readMap(const char* fileName);
+    void buildWCSP(const char* fileName, WCSP* wcsp);
+    void buildWCSP_haplotype(const char* fileName, WCSP* wcsp);
+    void buildWCSP_bayesian(const char* fileName, WCSP* wcsp);
+    void iniProb(WCSP* wcsp);
+
+    int convertgen(int locus, int allele1, int allele2);
+
+    void printSol(WCSP* wcsp);
+    void printCorrectSol(WCSP* wcsp);
+    void printCorrection(WCSP* wcsp);
+
+    void printGenotype(ostream& os, Value value, int locus);
+    void printHaplotype(ostream& os, Value value, int locus);
+
+    void initTransmission();
+    void sparse_matrix();
+    Double haldane(Double x) { return 0.5 * (1 - exp(-2.0 * abs(x))); }
+    Double getK() { return K; }
+    Double Cost2LogProb(Cost c) const { return K - 4 * to_double(c) / ToulBar2::NormFactor; }
+};
+
+#endif /*TB2HAPLOTYPE_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/applis/tb2pedigree.cpp b/code/include/tb2/applis/tb2pedigree.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..20f3ed5ecf626b13615394919cdd26a3e8a1b696
--- /dev/null
+++ b/code/include/tb2/applis/tb2pedigree.cpp
@@ -0,0 +1,946 @@
+/*
+ * **************** Read pedigree in pre format files **************************
+ *
+ */
+
+#include "toulbar2lib.hpp"
+#include "core/tb2enumvar.hpp"
+#include "tb2pedigree.hpp"
+
+void Pedigree::iniProb(WCSP* wcsp)
+{
+    TProb TopProb = 0.;
+
+    ToulBar2::NormFactor = (-1 / Log1p(-Exp10(-(TProb)ToulBar2::resolution)));
+    if (ToulBar2::NormFactor > (Pow((TProb)2., (TProb)INTEGERBITS) - 1) / (TProb)ToulBar2::resolution) {
+        cerr << "This resolution cannot be ensured on the data type used to represent costs." << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    int nballeles = alleles.size() - 1;
+
+    TopProb = 0.;
+
+    if (nballeles > 1) {
+        int ngenotyped = genotypes.size();
+        while (ngenotyped) {
+            TopProb += -Log(ToulBar2::errorg / (TProb)(nballeles - 1)) * ToulBar2::NormFactor;
+            ngenotyped--;
+        }
+    }
+
+    for (vector<Individual>::iterator iter = pedigree.begin(); iter != pedigree.end(); ++iter) {
+        Individual& individual = *iter;
+        if (individual.typed) {
+            if (individual.mother && individual.father) {
+                TopProb += -Log(0.25) * ToulBar2::NormFactor;
+            } else if (individual.mother || individual.father) {
+                TopProb += -Log(0.50) * ToulBar2::NormFactor;
+            } else {
+                TProb minp = 1.;
+                switch (ToulBar2::foundersprob_class) {
+                case 0:
+                    TopProb += -Log(1. / (nballeles * nballeles)) * ToulBar2::NormFactor;
+                    break;
+
+                case 1:
+                    for (map<int, int>::iterator iter = freqalleles.begin(); iter != freqalleles.end(); ++iter) {
+                        TProb p = (TProb)(iter->second * iter->second) / (TProb)(genotypes.size() * genotypes.size() * 4);
+                        if (p < minp)
+                            minp = p;
+                    }
+
+                    TopProb += -Log(minp) * ToulBar2::NormFactor;
+                    break;
+
+                default:
+                    foundersprob.clear();
+                    assert((int)ToulBar2::allelefreqdistrib.size() == nballeles);
+                    for (int i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+                        for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                            // case i!=j must be counted twice (i,j and j,i)
+                            foundersprob.push_back((TProb)((i != j) ? 2. : 1.) * (TProb)ToulBar2::allelefreqdistrib[i - 1] * (TProb)ToulBar2::allelefreqdistrib[j - 1]);
+                        }
+                    }
+                    for (vector<TProb>::iterator iter = foundersprob.begin(); iter != foundersprob.end(); ++iter) {
+                        if (*iter < minp)
+                            minp = *iter;
+                    }
+                    TopProb += -Log(minp) * ToulBar2::NormFactor;
+                }
+            }
+        }
+    }
+    if (TopProb > to_double(MAX_COST)) {
+        cerr << "Overflow: product of min probabilities < size of used datatype." << endl;
+        exit(EXIT_FAILURE);
+    }
+    wcsp->updateUb((Cost)((Long)TopProb));
+}
+
+typedef struct {
+    EnumeratedVariable* var;
+    vector<Cost> costs;
+} TemporaryUnaryConstraint;
+
+Individual::Individual(int ind)
+{
+    individual = ind;
+    varindex = -1;
+    father = 0;
+    mother = 0;
+    sex = MALE;
+    genotype.allele1 = 0;
+    genotype.allele2 = 0;
+    genotype.fixed = false;
+    typed = false;
+    generation = -1;
+    nbtyped = 0;
+}
+
+void Individual::print(ostream& os)
+{
+    os << individual << " " << father << " " << mother << " " << sex;
+    if (genotypes.size() > 0) {
+        for (unsigned int i = 0; i < genotypes.size(); ++i)
+            cout << " " << genotypes[i].allele1 << " " << genotypes[i].allele2;
+    } else {
+        os << " " << genotype.allele1 << " " << genotype.allele2;
+    }
+    os << endl;
+}
+
+void Pedigree::typeAscendants(int individual)
+{
+    if (individual > 0) {
+        assert(individuals.count(individual) != 0);
+        int index = individuals[individual];
+        if (!pedigree[index].typed) {
+            pedigree[index].typed = true;
+            nbtyped++;
+            typeAscendants(pedigree[index].father);
+            typeAscendants(pedigree[index].mother);
+        }
+    }
+}
+
+void Pedigree::read(const char* fileName, WCSP* wcsp)
+{
+    bayesian = false;
+    readPedigree(fileName, wcsp);
+    buildWCSP(fileName, wcsp);
+}
+
+void Pedigree::read_bayesian(const char* fileName, WCSP* wcsp)
+{
+    bayesian = true;
+    readPedigree(fileName, wcsp);
+    buildWCSP_bayesian(fileName, wcsp);
+}
+
+inline bool cmp_generation(const Individual& i1, const Individual& i2) { return i1.generation < i2.generation || (i1.generation == i2.generation && i1.individual < i2.individual); }
+
+int Pedigree::fixGenerationNumber(int index)
+{
+    if (pedigree[index].generation != -1)
+        return pedigree[index].generation;
+    else {
+        if (pedigree[index].father > 0 && pedigree[index].mother > 0) {
+            pedigree[index].generation = max(fixGenerationNumber(individuals[pedigree[index].father]), fixGenerationNumber(individuals[pedigree[index].mother])) + 1;
+        } else if (pedigree[index].father > 0 && pedigree[index].mother == 0) {
+            pedigree[index].generation = fixGenerationNumber(individuals[pedigree[index].father]) + 1;
+        } else if (pedigree[index].mother > 0 && pedigree[index].father == 0) {
+            pedigree[index].generation = fixGenerationNumber(individuals[pedigree[index].mother]) + 1;
+        } else {
+            assert(pedigree[index].mother == 0 && pedigree[index].father == 0);
+            pedigree[index].generation = 1;
+        }
+        return pedigree[index].generation;
+    }
+}
+
+// warning! locus information is not used: assume that only one locus is defined in the pedigree file
+void Pedigree::readPedigree(const char* fileName, WCSP* wcsp)
+{
+    int individual;
+    int nbindividuals = 0;
+    int nballeles = 0;
+    int nbtypings = 0;
+    map<int, int> allelesInv;
+    int maxallele = 0;
+
+    string strfile(fileName);
+    int pos = strfile.find_last_of(".");
+    string errorfilename = strfile.substr(0, pos) + ".errors";
+
+    // open the file
+    ifstream file(fileName);
+    if (!file) {
+        cerr << "Could not open file " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    ifstream fileErrors(errorfilename.c_str());
+    if (fileErrors)
+        ToulBar2::consecutiveAllele = true;
+
+    while (file) {
+        int cur_locus = -1;
+        individual = 0;
+
+        file >> cur_locus;
+        if (!file)
+            break;
+        if (locus == -1)
+            locus = cur_locus;
+        if (locus != cur_locus) {
+            cerr << "Pedigree datafile contains more than one locus!" << endl;
+            exit(EXIT_FAILURE);
+        }
+
+        file >> individual;
+        if (!file) {
+            cerr << "Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+        assert(individual != 0);
+        if (individuals.count(individual) == 0) {
+            individuals[individual] = nbindividuals;
+            Individual geno(individual);
+            pedigree.push_back(geno);
+            nbindividuals++;
+        }
+
+        file >> pedigree[individuals[individual]].father;
+        if (!file) {
+            cerr << "Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+        if (pedigree[individuals[individual]].father > 0 && individuals.count(pedigree[individuals[individual]].father) == 0) {
+            individuals[pedigree[individuals[individual]].father] = nbindividuals;
+            Individual geno(pedigree[individuals[individual]].father);
+            geno.sex = MALE;
+            pedigree.push_back(geno);
+            nbindividuals++;
+        }
+
+        file >> pedigree[individuals[individual]].mother;
+        if (!file) {
+            cerr << "Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+        if (pedigree[individuals[individual]].mother > 0 && individuals.count(pedigree[individuals[individual]].mother) == 0) {
+            individuals[pedigree[individuals[individual]].mother] = nbindividuals;
+            Individual geno(pedigree[individuals[individual]].mother);
+            geno.sex = FEMALE;
+            pedigree.push_back(geno);
+            nbindividuals++;
+        }
+
+        if (pedigree[individuals[individual]].father == 0 && pedigree[individuals[individual]].mother == 0) {
+            pedigree[individuals[individual]].generation = 1;
+        } else if (pedigree[individuals[individual]].father > 0 && pedigree[individuals[individual]].mother > 0 && pedigree[individuals[pedigree[individuals[individual]].father]].generation != -1 && pedigree[individuals[pedigree[individuals[individual]].mother]].generation != -1) {
+            pedigree[individuals[individual]].generation = max(pedigree[individuals[pedigree[individuals[individual]].father]].generation, pedigree[individuals[pedigree[individuals[individual]].mother]].generation) + 1;
+        } else if (pedigree[individuals[individual]].father > 0 && pedigree[individuals[individual]].mother == 0 && pedigree[individuals[pedigree[individuals[individual]].father]].generation != -1) {
+            pedigree[individuals[individual]].generation = pedigree[individuals[pedigree[individuals[individual]].father]].generation + 1;
+        } else if (pedigree[individuals[individual]].father == 0 && pedigree[individuals[individual]].mother > 0 && pedigree[individuals[pedigree[individuals[individual]].mother]].generation != -1) {
+            pedigree[individuals[individual]].generation = pedigree[individuals[pedigree[individuals[individual]].mother]].generation + 1;
+        }
+
+        file >> pedigree[individuals[individual]].sex;
+        if (!file) {
+            cerr << "Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+
+        int allele = 0;
+        file >> allele;
+        if (!file) {
+            cerr << "Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+        if (allele < 0) {
+            pedigree[individuals[individual]].genotype.fixed = true;
+            allele = -allele;
+        }
+        pedigree[individuals[individual]].genotype.allele1 = allele;
+
+        allele = 0;
+        file >> allele;
+        if (!file) {
+            cerr << "Wrong data after individual " << individual << endl;
+            exit(EXIT_FAILURE);
+        }
+        if (allele < 0) {
+            pedigree[individuals[individual]].genotype.fixed = true;
+            allele = -allele;
+        }
+        pedigree[individuals[individual]].genotype.allele2 = allele;
+
+        int allele1 = pedigree[individuals[individual]].genotype.allele1;
+        int allele2 = pedigree[individuals[individual]].genotype.allele2;
+
+        if (alleles.count(allele1) == 0) {
+            nballeles++;
+            alleles[allele1] = nballeles;
+            freqalleles[allele1] = 1;
+            if (allele1 > maxallele)
+                maxallele = allele1;
+        } else {
+            freqalleles[allele1]++;
+        }
+
+        if (alleles.count(allele2) == 0) {
+            nballeles++;
+            alleles[allele2] = nballeles;
+            freqalleles[allele2] = 1;
+            if (allele2 > maxallele)
+                maxallele = allele2;
+        } else {
+            freqalleles[allele2]++;
+        }
+
+        if (allele1 > 0 || allele2 > 0) {
+            nbtypings++;
+            genotypes.push_back(individual);
+        }
+    }
+
+    if (ToulBar2::consecutiveAllele) {
+        cout << "Make alleles consecutive and suppose 4 allele." << endl;
+        maxallele = 4;
+        for (int i = 1; i <= maxallele; i++) {
+            map<int, int>::iterator it = alleles.find(i);
+            if (it == alleles.end()) {
+                nballeles++;
+                alleles[i] = nballeles;
+                freqalleles[i] = 0;
+            }
+        }
+    }
+
+    /* re-encoding of alleles */
+    int nb = 0;
+    if (ToulBar2::verbose >= 2)
+        cout << "Alleles encoding:" << endl;
+    for (map<int, int>::iterator iter = alleles.begin(); iter != alleles.end(); ++iter) {
+        if ((*iter).first == 0)
+            continue;
+        nb++;
+        if (ToulBar2::verbose >= 2)
+            cout << (*iter).first << ": " << nb << endl;
+        iter->second = nb;
+        allelesInv[nb] = (*iter).first;
+    }
+
+    assert(nballeles == nb);
+
+    if (ToulBar2::verbose >= 1)
+        cout << "Genotype encoding:" << endl;
+    for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+        for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+            Genotype geno;
+            geno.allele1 = allelesInv[i];
+            geno.allele2 = allelesInv[j];
+            genoconvert.push_back(geno);
+            if (ToulBar2::verbose >= 1) {
+                cout << genoconvert.size() - 1 << ": ";
+                printGenotype(cout, genoconvert.size() - 1);
+                cout << endl;
+            }
+        }
+    }
+
+    /* individuals re-ordering by generation levels */
+    for (unsigned int i = 0; i < pedigree.size(); i++) {
+        if (pedigree[i].generation == -1)
+            fixGenerationNumber(i);
+        if (pedigree[i].generation > generations)
+            generations = pedigree[i].generation;
+    }
+    if (ToulBar2::generation) {
+        stable_sort(pedigree.begin(), pedigree.end(), cmp_generation);
+        for (unsigned int i = 0; i < pedigree.size(); i++) {
+            individuals[pedigree[i].individual] = i;
+        }
+    }
+
+    for (unsigned int i = 0; i < genotypes.size(); i++) {
+        typeAscendants(genotypes[i]);
+        if (genotypes[i] >= 0 && pedigree[individuals[genotypes[i]]].father > 0 && pedigree[individuals[pedigree[individuals[genotypes[i]]].father]].genotype.allele1 > 0 && pedigree[individuals[pedigree[individuals[genotypes[i]]].father]].genotype.allele2 > 0)
+            pedigree[individuals[pedigree[individuals[genotypes[i]]].father]].nbtyped++;
+        if (genotypes[i] >= 0 && pedigree[individuals[genotypes[i]]].mother > 0 && pedigree[individuals[pedigree[individuals[genotypes[i]]].mother]].genotype.allele1 > 0 && pedigree[individuals[pedigree[individuals[genotypes[i]]].mother]].genotype.allele2 > 0)
+            pedigree[individuals[pedigree[individuals[genotypes[i]]].mother]].nbtyped++;
+    }
+    cout << nbtyped << " informative individuals found (either genotyped or having a genotyped descendant)." << endl;
+
+    gencorrects.clear();
+    if (fileErrors) {
+        while (fileErrors) {
+            int bonallele1;
+            fileErrors >> individual;
+            fileErrors >> bonallele1;
+            int bonallele2 = pedigree[individuals[individual]].genotype.allele2;
+            if (bonallele1 == pedigree[individuals[individual]].genotype.allele1)
+                cout << "error file with a mistake" << endl;
+            gencorrects[individual] = convertgen(bonallele1, bonallele2);
+        }
+    }
+    assert(wcsp->numberOfVariables() == 0);
+    assert(wcsp->numberOfConstraints() == 0);
+}
+
+int Pedigree::convertgen(int allele1, int allele2)
+{
+    int nballeles = alleles.size() - 1;
+    int bongen = 0;
+
+    if (allele1 > allele2) {
+        int alleleaux = allele1;
+        allele1 = allele2;
+        allele2 = alleleaux;
+    }
+
+    for (int i = 1; i <= nballeles; i++) {
+        for (int j = i; j <= nballeles; j++) {
+            if ((i == allele1) && (j == allele2))
+                return bongen;
+            bongen++;
+        }
+    }
+    return -1;
+}
+
+void Pedigree::buildWCSP(const char* fileName, WCSP* wcsp)
+{
+    ifstream file(fileName);
+
+    vector<TemporaryUnaryConstraint> unaryconstrs;
+
+    int nbindividuals = individuals.size();
+    int nballeles = alleles.size() - 1;
+    int nbfounders = 0;
+    int nbtypings = genotypes.size();
+
+    wcsp->updateUb(nbtypings + 1);
+
+    /* create variables */
+    int nbvar = 0;
+    for (int i = 0; i < nbindividuals; i++) {
+        if (pedigree[i].father == 0 && pedigree[i].mother == 0)
+            nbfounders++;
+        if (pedigree[i].typed) {
+            string varname;
+            varname = to_string(pedigree[i].individual);
+            wcsp->makeEnumeratedVariable(varname, 0, nballeles * (nballeles + 1) / 2 - 1);
+            pedigree[i].varindex = nbvar;
+            nbvar++;
+        }
+    }
+
+    /* create ternary Mendelian hard constraint table */
+    vector<Cost> costs3;
+    for (int k = 1; k <= nballeles; k++) { /* k = first allele of father */
+        for (int l = k; l <= nballeles; l++) { /* l = second allele of father */
+            for (int m = 1; m <= nballeles; m++) { /* m = first allele of mother */
+                for (int n = m; n <= nballeles; n++) { /* n = second allele of mother */
+                    for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                        for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                            costs3.push_back(((i == k && j == m) || (i == k && j == n) || (i == l && j == m) || (i == l && j == n) || (i == m && j == k) || (i == m && j == l) || (i == n && j == k) || (i == n && j == l)) ? 0 : wcsp->getUb() * MEDIUM_COST);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /* create binary Mendelian hard constraint table */
+    vector<Cost> costs2;
+    for (int k = 1; k <= nballeles; k++) { /* k = first allele of father or mother */
+        for (int l = k; l <= nballeles; l++) { /* l = second allele of father or mother */
+            for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                    costs2.push_back((i == k || i == l || j == k || j == l) ? 0 : wcsp->getUb() * MEDIUM_COST);
+                }
+            }
+        }
+    }
+
+    /* create constraint network */
+    while (file) {
+        int cur_locus = -1;
+        int individual = 0;
+        int father = 0;
+        int mother = 0;
+        int sex = -1;
+        int allele1 = 0;
+        int allele2 = 0;
+
+        file >> cur_locus;
+        if (!file)
+            break;
+        file >> individual;
+        file >> father;
+        file >> mother;
+        file >> sex;
+        file >> allele1;
+        if (allele1 < 0)
+            allele1 = -allele1;
+        allele1 = alleles[allele1];
+        file >> allele2;
+        if (allele2 < 0)
+            allele2 = -allele2;
+        allele2 = alleles[allele2];
+        if (!pedigree[individuals[individual]].typed)
+            continue;
+
+        /* add unary costs (soft constraint) if genotyping is given */
+        if (allele1 > 0 || allele2 > 0) {
+            EnumeratedVariable* var = (EnumeratedVariable*)wcsp->getVar(pedigree[individuals[individual]].varindex);
+            TemporaryUnaryConstraint unaryconstr;
+            unaryconstr.var = var;
+            for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                    if ((allele1 > 0 && allele2 > 0 && ((i == allele1 && j == allele2) || (i == allele2 && j == allele1)))
+                        || ((allele1 == 0 || allele2 == 0) && (i == allele1 || i == allele2 || j == allele1 || j == allele2))) {
+                        unaryconstr.costs.push_back(0);
+                    } else {
+                        unaryconstr.costs.push_back((pedigree[individuals[individual]].genotype.fixed) ? wcsp->getUb() : 1);
+                    }
+                }
+            }
+            unaryconstrs.push_back(unaryconstr);
+            var->queueNC();
+        }
+
+        /* add ternary or binary Mendelian hard constraint */
+        if (father > 0 || mother > 0) {
+            if (father > 0 && mother > 0) {
+                assert(pedigree[individuals[pedigree[individuals[individual]].father]].typed);
+                assert(pedigree[individuals[pedigree[individuals[individual]].mother]].typed);
+                wcsp->postTernaryConstraint(pedigree[individuals[pedigree[individuals[individual]].father]].varindex, pedigree[individuals[pedigree[individuals[individual]].mother]].varindex, pedigree[individuals[individual]].varindex, costs3);
+            } else if (father > 0) {
+                wcsp->postBinaryConstraint(pedigree[individuals[pedigree[individuals[individual]].father]].varindex, pedigree[individuals[individual]].varindex, costs2);
+            } else {
+                wcsp->postBinaryConstraint(pedigree[individuals[pedigree[individuals[individual]].mother]].varindex, pedigree[individuals[individual]].varindex, costs2);
+            }
+        }
+    }
+
+    // apply basic initial propagation AFTER complete network loading
+    for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+        for (unsigned int a = 0; a < unaryconstrs[u].var->getDomainInitSize(); a++) {
+            if (unaryconstrs[u].costs[a] > 0)
+                unaryconstrs[u].var->project(unaryconstrs[u].var->toValue(a), unaryconstrs[u].costs[a], true);
+        }
+        unaryconstrs[u].var->findSupport();
+    }
+    wcsp->sortConstraints();
+
+    if (ToulBar2::verbose >= 0) {
+        cout << "Read pedigree with " << nbindividuals << " individuals, " << nbfounders << " founders, " << nballeles << " alleles, " << nbtypings << " genotypings and " << generations << " generations." << endl;
+    }
+}
+
+void Pedigree::buildWCSP_bayesian(const char* fileName, WCSP* wcsp)
+{
+    ifstream file(fileName);
+
+    vector<TemporaryUnaryConstraint> unaryconstrs;
+    int nbindividuals = individuals.size();
+    int nballeles = alleles.size() - 1;
+    int domsize = nballeles * (nballeles + 1) / 2;
+    int nbfounders = 0;
+    int nbtypings = genotypes.size();
+
+    iniProb(wcsp);
+
+    /* create variables */
+    int nbvar = 0;
+    for (int i = 0; i < nbindividuals; i++) {
+        if (pedigree[i].father == 0 && pedigree[i].mother == 0)
+            nbfounders++;
+        if (pedigree[i].typed) {
+            string varname;
+            varname = to_string(pedigree[i].individual);
+            wcsp->makeEnumeratedVariable(varname, 0, nballeles * (nballeles + 1) / 2 - 1);
+            pedigree[i].varindex = nbvar;
+            nbvar++;
+        }
+    }
+
+    /* create ternary Mendelian hard constraint table */
+    vector<Cost> costs3;
+    for (int k = 1; k <= nballeles; k++) { /* k = first allele of father */
+        for (int l = k; l <= nballeles; l++) { /* l = second allele of father */
+            for (int m = 1; m <= nballeles; m++) { /* m = first allele of mother */
+                for (int n = m; n <= nballeles; n++) { /* n = second allele of mother */
+                    for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                        for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                            TProb p = 0.;
+                            if ((i == k && j == m) || (i == m && j == k))
+                                p += 0.25;
+                            if ((i == k && j == n) || (i == n && j == k))
+                                p += 0.25;
+                            if ((i == l && j == m) || (i == m && j == l))
+                                p += 0.25;
+                            if ((i == l && j == n) || (i == n && j == l))
+                                p += 0.25;
+                            costs3.push_back(wcsp->Prob2Cost(p));
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    map<int, int> allelesInv;
+
+    int i, j;
+    switch (ToulBar2::foundersprob_class) {
+    case 0:
+        foundersprob.clear();
+        for (i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+            for (j = i; j <= nballeles; j++) { /* j = second allele of child */
+                foundersprob.push_back(((i != j) ? 2. : 1.) / (TProb)(nballeles * nballeles));
+            }
+        }
+        break;
+
+    case 1:
+        foundersprob.clear();
+        for (map<int, int>::iterator iter = alleles.begin(); iter != alleles.end(); ++iter) {
+            allelesInv[iter->second] = iter->first;
+        }
+        for (i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+            for (j = i; j <= nballeles; j++) { /* j = second allele of child */
+                // case i!=j must be counted twice (i,j and j,i)
+                foundersprob.push_back((TProb)((i != j) ? 2. : 1.) * (TProb)freqalleles[allelesInv[i]] * (TProb)freqalleles[allelesInv[j]] / (TProb)(nbtypings * nbtypings * 4));
+            }
+        }
+        break;
+
+    default:
+        foundersprob.clear();
+        assert((int)ToulBar2::allelefreqdistrib.size() == nballeles);
+        for (i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+            for (j = i; j <= nballeles; j++) { /* j = second allele of child */
+                // case i!=j must be counted twice (i,j and j,i)
+                foundersprob.push_back((TProb)((i != j) ? 2. : 1.) * (TProb)ToulBar2::allelefreqdistrib[i - 1] * (TProb)ToulBar2::allelefreqdistrib[j - 1]);
+            }
+        }
+        break;
+    }
+    if (ToulBar2::verbose >= 1) {
+        cout << "Genotype prior:" << endl;
+        for (unsigned int n = 0; n < genoconvert.size(); n++) {
+            printGenotype(cout, n);
+            cout << " " << foundersprob[n] << endl;
+        }
+    }
+
+    /* create binary Mendelian hard constraint table */
+    vector<Cost> costs2;
+    for (int k = 1; k <= nballeles; k++) { /* k = first allele of father or mother */
+        for (int l = k; l <= nballeles; l++) { /* l = second allele of father or mother */
+            for (int i = 1; i <= nballeles; i++) { /* i = first allele of child */
+                for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                    TProb p = 0;
+                    if (i == k || i == l || j == k || j == l) {
+                        if (k == l)
+                            p += 1. / (TProb)nballeles;
+                        else
+                            p += 1. / ((TProb)nballeles + (TProb)nballeles - 1);
+                    }
+                    costs2.push_back(wcsp->Prob2Cost(p));
+                }
+            }
+        }
+    }
+
+    /* create constraint network */
+    while (file) {
+        int cur_locus = -1;
+        int individual = 0;
+        int father = 0;
+        int mother = 0;
+        int sex = -1;
+        int allele1 = 0;
+        int allele2 = 0;
+
+        file >> cur_locus;
+        if (!file)
+            break;
+        file >> individual;
+        file >> father;
+        file >> mother;
+        file >> sex;
+        file >> allele1;
+        if (allele1 < 0)
+            allele1 = -allele1;
+        allele1 = alleles[allele1];
+        file >> allele2;
+        if (allele2 < 0)
+            allele2 = -allele2;
+        allele2 = alleles[allele2];
+        if (!pedigree[individuals[individual]].typed)
+            continue;
+
+        EnumeratedVariable* var = (EnumeratedVariable*)wcsp->getVar(pedigree[individuals[individual]].varindex);
+
+        /* add unary costs (soft constraint) if genotyping is given */
+        if (allele1 > 0 || allele2 > 0) {
+            TemporaryUnaryConstraint unaryconstr;
+            unaryconstr.var = var;
+            for (int i = 1; i <= nballeles; i++) { /* i = first allele of child  */
+                for (int j = i; j <= nballeles; j++) { /* j = second allele of child */
+                    bool typed = allele1 > 0 && allele2 > 0;
+                    bool halftyped = allele1 > 0 || allele2 > 0;
+
+                    bool theone = (i == allele1 && j == allele2) || (i == allele2 && j == allele1);
+                    bool posible = (i == allele1 || i == allele2 || j == allele1 || j == allele2);
+
+                    bool fixed = pedigree[individuals[individual]].genotype.fixed;
+
+                    TProb p = 0;
+                    Cost penalty = 0;
+                    if (typed) {
+                        if (theone)
+                            p = 1. - ToulBar2::errorg;
+                        else {
+                            p = ToulBar2::errorg / (TProb)(domsize - 1);
+                            penalty = pedigree[individuals[individual]].nbtyped;
+                        }
+                    } else if (halftyped) {
+                        if (posible)
+                            p = (1. - ToulBar2::errorg) / (TProb)nballeles;
+                        else {
+                            p = ToulBar2::errorg / (TProb)(domsize - nballeles);
+                            penalty = pedigree[individuals[individual]].nbtyped;
+                        }
+                    }
+                    if (ToulBar2::pedigreePenalty > 0 && ToulBar2::verbose >= 1)
+                        cout << individual << ": " << penalty << " nbtyped " << ((penalty > ToulBar2::pedigreePenalty) ? wcsp->Cost2LogProb(-((penalty > 0) ? wcsp->Prob2Cost(to_double(penalty)) : MIN_COST)) / Log(10.) : 0.) << " log10like " << -((penalty > ToulBar2::pedigreePenalty) ? wcsp->Prob2Cost(to_double(penalty)) : MIN_COST) << " cost" << endl;
+                    unaryconstr.costs.push_back((typed && fixed && !theone) ? wcsp->getUb() : (wcsp->Prob2Cost(p) - ((ToulBar2::pedigreePenalty > 0 && penalty > ToulBar2::pedigreePenalty) ? wcsp->Prob2Cost(to_double(penalty)) : MIN_COST)));
+                }
+            }
+            unaryconstrs.push_back(unaryconstr);
+            var->queueNC();
+        }
+
+        int id_father = individuals[pedigree[individuals[individual]].father];
+        int id_mother = individuals[pedigree[individuals[individual]].mother];
+
+        /* add ternary or binary Mendelian hard constraint */
+        if (father > 0 || mother > 0) {
+            if (father > 0 && mother > 0) {
+                assert(pedigree[id_father].typed);
+                assert(pedigree[id_mother].typed);
+                wcsp->postTernaryConstraint(pedigree[id_father].varindex, pedigree[id_mother].varindex, pedigree[individuals[individual]].varindex, costs3);
+            } else if (father > 0) {
+                wcsp->postBinaryConstraint(pedigree[id_father].varindex, pedigree[individuals[individual]].varindex, costs2);
+            } else {
+                wcsp->postBinaryConstraint(pedigree[id_mother].varindex, pedigree[individuals[individual]].varindex, costs2);
+            }
+        } else {
+            TemporaryUnaryConstraint unaryconstr;
+            unaryconstr.var = var;
+            for (vector<TProb>::iterator iter = foundersprob.begin(); iter != foundersprob.end(); ++iter) {
+                unaryconstr.costs.push_back(wcsp->Prob2Cost(*iter));
+            }
+            unaryconstrs.push_back(unaryconstr);
+            var->queueNC();
+        }
+    }
+
+    // apply basic initial propagation AFTER complete network loading
+    for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+        for (unsigned int a = 0; a < unaryconstrs[u].var->getDomainInitSize(); a++) {
+            if (unaryconstrs[u].costs[a] > 0)
+                unaryconstrs[u].var->project(unaryconstrs[u].var->toValue(a), unaryconstrs[u].costs[a], true);
+        }
+        unaryconstrs[u].var->findSupport();
+    }
+    wcsp->sortConstraints();
+
+    if (ToulBar2::verbose >= 0) {
+        int nbtypings = genotypes.size();
+        cout << "Read pedigree with " << nbindividuals << " individuals, " << nbfounders << " founders, " << nballeles << " alleles, " << nbtypings << " genotypings and " << generations << " generations." << endl;
+        cout << "Bayesian MPE (genotyping error rate: " << ToulBar2::errorg << ", genotype prior: " << ToulBar2::foundersprob_class << ", precision(1-10^-p): " << ToulBar2::resolution << ", normalization: " << ToulBar2::NormFactor << ", ub: " << wcsp->getUb() << ")" << endl;
+    }
+}
+
+void Pedigree::printCorrectSol(WCSP* wcsp)
+{
+    if (!gencorrects.size())
+        return;
+
+    string problemname = ToulBar2::problemsaved_filename;
+    if (problemname.rfind(".wcsp") != string::npos)
+        problemname.replace(problemname.rfind(".wcsp"), 5, "_correct.sol");
+    else if (problemname.rfind(".cfn") != string::npos)
+        problemname.replace(problemname.rfind(".cfn"), 4, "_correct.sol");
+    else if (problemname.rfind(".pre") != string::npos)
+        problemname.replace(problemname.rfind(".pre"), 4, "_correct.sol");
+    if (problemname.rfind("_correct.sol") == string::npos)
+        problemname = problemname + to_string("_correct.sol");
+    ofstream file(problemname.c_str());
+    if (!file) {
+        cerr << "Could not write file "
+             << "solution" << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    for (vector<Individual>::iterator it = pedigree.begin(); it != pedigree.end(); ++it) {
+        Individual& ind = *it;
+        int allele1 = ind.genotype.allele1;
+        int allele2 = ind.genotype.allele2;
+        if ((allele1 > 0) || (allele2 > 0)) {
+            map<int, int>::iterator it = gencorrects.find(ind.individual);
+            if (it != gencorrects.end())
+                file << " " << it->second;
+            else
+                file << " " << convertgen(allele1, allele2);
+        } else
+            file << " " << -1;
+    }
+    file << endl;
+}
+
+void Pedigree::printSol(WCSP* wcsp)
+{
+    string problemname = ToulBar2::problemsaved_filename;
+    if (problemname.rfind(".wcsp") != string::npos)
+        problemname.replace(problemname.rfind(".wcsp"), 5, ".sol");
+    if (problemname.rfind(".cfn") != string::npos)
+        problemname.replace(problemname.rfind(".cfn"), 4, ".sol");
+    if (problemname.rfind(".pre") != string::npos)
+        problemname.replace(problemname.rfind(".pre"), 4, ".sol");
+    if (problemname.rfind(".sol") == string::npos)
+        problemname = problemname + to_string(".sol");
+    ofstream file(problemname.c_str());
+    if (!file) {
+        cerr << "Could not write file "
+             << "solution" << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    for (vector<Individual>::iterator it = pedigree.begin(); it != pedigree.end(); ++it) {
+        Individual& ind = *it;
+        if (ind.typed)
+            file << " " << wcsp->getValue(ind.varindex);
+        else
+            file << " " << -1;
+    }
+    file << endl;
+}
+
+void Pedigree::printCorrection(WCSP* wcsp)
+{
+    bool errorinfo = gencorrects.size() > 0;
+
+    int ncorrect = 0;
+    int ncorrections = 0;
+    int ncorrectok = 0;
+
+    int nbcorrection = 0;
+
+    TProb penalty = 0.;
+
+    cout << "Correction:";
+    for (unsigned int i = 0; i < genotypes.size(); i++) {
+        int sol = wcsp->getValue(pedigree[individuals[genotypes[i]]].varindex);
+        int a1 = genoconvert[sol].allele1;
+        int a2 = genoconvert[sol].allele2;
+        int allele1 = pedigree[individuals[genotypes[i]]].genotype.allele1;
+        int allele2 = pedigree[individuals[genotypes[i]]].genotype.allele2;
+        if (!((allele1 > 0 && allele2 > 0 && ((a1 == allele1 && a2 == allele2) || (a1 == allele2 && a2 == allele1)))
+                || ((allele1 == 0 || allele2 == 0) && (a1 == allele1 || a1 == allele2 || a2 == allele1 || a2 == allele2)))) {
+            cout << " " << genotypes[i];
+            nbcorrection++;
+
+            if (ToulBar2::pedigreePenalty > 0 && pedigree[individuals[genotypes[i]]].nbtyped > ToulBar2::pedigreePenalty) {
+                cout << "*";
+                penalty -= Log(pedigree[individuals[genotypes[i]]].nbtyped);
+            }
+
+            if (errorinfo) {
+                map<int, int>::iterator it = gencorrects.find(genotypes[i]);
+                if (it != gencorrects.end()) {
+                    ncorrect++;
+                    int allellereal = it->second;
+                    if ((allellereal == a1) && (a1 != allele1))
+                        ncorrectok++;
+                }
+            }
+            ncorrections++;
+        }
+    }
+    cout << " (" << nbcorrection;
+    if (ToulBar2::pedigreePenalty > 0) {
+        cout << " " << wcsp->Cost2LogProb(wcsp->getLb()) - penalty << " " << penalty;
+    }
+    cout << ")";
+    cout << endl;
+    if (errorinfo) {
+        cout << "Info errorfile: ";
+        cout << ncorrect << "/" << ncorrections << ", " << ncorrectok << "/" << ncorrect << ", " << gencorrects.size() << " original" << endl;
+        cout << endl;
+    }
+}
+
+void Pedigree::printGenotype(ostream& os, Value value)
+{
+    os << genoconvert[value].allele1 << "/" << genoconvert[value].allele2;
+}
+
+void Pedigree::save(const char* fileName, WCSP* wcsp, bool corrected, bool reduced)
+{
+    assert(!(corrected && reduced));
+
+    // open the file
+    ofstream file(fileName);
+    if (!file) {
+        cerr << "Could not open file " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    for (map<int, int>::iterator iter = individuals.begin(); iter != individuals.end(); ++iter) {
+        if ((*iter).first == 0)
+            continue;
+        if (reduced && (pedigree[(*iter).second].varindex < 0 || pedigree[(*iter).second].varindex >= (int)wcsp->numberOfVariables() || wcsp->assigned(pedigree[(*iter).second].varindex))) {
+            continue;
+        }
+        file << locus << " ";
+        if (corrected && pedigree[(*iter).second].varindex >= 0 && pedigree[(*iter).second].varindex < (int)wcsp->numberOfVariables() && wcsp->assigned(pedigree[(*iter).second].varindex)) {
+            int sol = wcsp->getValue(pedigree[(*iter).second].varindex);
+            int a1 = genoconvert[sol].allele1;
+            int a2 = genoconvert[sol].allele2;
+            int allele1 = pedigree[(*iter).second].genotype.allele1;
+            int allele2 = pedigree[(*iter).second].genotype.allele2;
+            if ((allele1 > 0 && allele2 > 0 && !((a1 == allele1 && a2 == allele2) || (a1 == allele2 && a2 == allele1)))
+                || ((allele1 == 0 || allele2 == 0) && !(allele1 == 0 && allele2 == 0) && !(a1 == allele1 || a1 == allele2 || a2 == allele1 || a2 == allele2))
+                || ToulBar2::pedigreeCorrectionMode == 2) {
+                if (ToulBar2::pedigreeCorrectionMode > 0) {
+                    pedigree[(*iter).second].genotype.allele1 = a1;
+                    pedigree[(*iter).second].genotype.allele2 = a2;
+                } else {
+                    pedigree[(*iter).second].genotype.allele1 = 0;
+                    pedigree[(*iter).second].genotype.allele2 = 0;
+                }
+            }
+            pedigree[(*iter).second].print(file);
+            pedigree[(*iter).second].genotype.allele1 = allele1;
+            pedigree[(*iter).second].genotype.allele2 = allele2;
+        } else {
+            pedigree[(*iter).second].print(file);
+        }
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/applis/tb2pedigree.hpp b/code/include/tb2/applis/tb2pedigree.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..ef51ce71681dd90dffb70bb21c69696fa1fd1363
--- /dev/null
+++ b/code/include/tb2/applis/tb2pedigree.hpp
@@ -0,0 +1,91 @@
+/** \file tb2pedigree.hpp
+ *  \brief Pedigree data structure
+ * 
+ */
+
+#ifndef TB2PEDIGREE_HPP_
+#define TB2PEDIGREE_HPP_
+
+#include "core/tb2wcsp.hpp"
+
+class Genotype {
+public:
+    int allele1;
+    int allele2;
+    bool fixed;
+};
+
+typedef enum { MALE = 1,
+    FEMALE = 2 } Sex;
+
+class Individual {
+public:
+    int individual;
+    int varindex;
+    int father;
+    int mother;
+    int sex;
+    Genotype genotype;
+    vector<Genotype> genotypes;
+    bool typed; // true if one of its descendant children (or itself) is typed
+    int generation;
+    int nbtyped; // number of genotyped children
+
+    Individual(int ind);
+
+    void print(ostream& os);
+};
+
+class Pedigree {
+    int locus; // same locus for all the genotypes
+    vector<Individual> pedigree; // list of individuals
+    vector<int> genotypes; // list of genotyped individuals id.
+    vector<Genotype> genoconvert; // convert domain value to genotype
+    map<int, int> individuals; // sorted list of pair<individual id, pedigree id>
+    map<int, int> alleles; // sorted list of pair<allele number, encoding consecutive number>
+    int nbtyped; // number of individuals with a genotyped descendant
+    int generations;
+    bool bayesian;
+    vector<TProb> foundersprob;
+    map<int, int> freqalleles; // frequencies of original alleles: freqalleles[allele number] = frequency
+    map<int, int> gencorrects;
+
+    void typeAscendants(int individual);
+    int fixGenerationNumber(int index);
+
+public:
+    Pedigree()
+        : locus(-1)
+        , nbtyped(0)
+        , generations(0)
+        , bayesian(false)
+    {
+        alleles[0] = 0;
+    }
+
+    void read(const char* fileName, WCSP* wcsp);
+    void read_bayesian(const char* fileName, WCSP* wcsp);
+    void save(const char* fileName, WCSP* wcsp, bool corrected, bool reduced);
+
+    void readPedigree(const char* fileName, WCSP* wcsp);
+    void buildWCSP(const char* fileName, WCSP* wcsp);
+    void buildWCSP_bayesian(const char* fileName, WCSP* wcsp);
+    void iniProb(WCSP* wcsp);
+
+    int convertgen(int allele1, int allele2);
+
+    void printSol(WCSP* wcsp);
+    void printCorrectSol(WCSP* wcsp);
+    void printCorrection(WCSP* wcsp);
+
+    void printGenotype(ostream& os, Value value);
+};
+
+#endif /*TB2PEDIGREE_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2abstractconstr.cpp b/code/include/tb2/core/tb2abstractconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e4c44549cee4a4a7bb42f258a94a1713d56ace5d
--- /dev/null
+++ b/code/include/tb2/core/tb2abstractconstr.cpp
@@ -0,0 +1,322 @@
+/*
+ * **************** Abstract constraints of predefined arities **************
+ */
+
+#include "tb2abstractconstr.hpp"
+#include "tb2ternaryconstr.hpp"
+#include "tb2binconstr.hpp"
+#include "search/tb2clusters.hpp"
+
+/*
+ * Constructors and misc.
+ * 
+ */
+
+/// \return size of the cartesian product of all initial domains in the constraint scope.
+/// \warning use deprecated MAX_DOMAIN_SIZE for performance.
+Long AbstractNaryConstraint::getDomainInitSizeProduct()
+{
+    if (arity_ == 0)
+        return 1;
+    Long cartesianProduct = 1;
+    for (int i = 0; i < arity_; i++) {
+        // trap overflow numbers
+        if (cartesianProduct > LONGLONG_MAX / MAX_DOMAIN_SIZE)
+            return LONGLONG_MAX;
+        cartesianProduct *= scope[i]->getDomainInitSize();
+    }
+    return cartesianProduct;
+}
+
+// sorts scope variables by increasing DAC order
+int cmpDAC(const void* p1, const void* p2)
+{
+    EnumeratedVariable* var1 = *((EnumeratedVariable**)p1);
+    EnumeratedVariable* var2 = *((EnumeratedVariable**)p2);
+    int v1 = var1->getDACOrder();
+    int v2 = var2->getDACOrder();
+    if (v1 > v2)
+        return 1;
+    else if (v1 < v2)
+        return -1;
+    else
+        return 0;
+}
+
+void AbstractNaryConstraint::firstlex()
+{
+    it_values.clear();
+    EnumeratedVariable* var;
+    for (int i = 0; i < arity_; i++) {
+        var = (EnumeratedVariable*)getVar(i);
+        it_values.push_back(var->begin());
+    }
+}
+
+bool AbstractNaryConstraint::nextlex(Tuple& t, Cost& c)
+{
+    int i;
+    int a = arity_;
+    EnumeratedVariable* var = (EnumeratedVariable*)getVar(0);
+    if (it_values[0] == var->end())
+        return false;
+
+    t.resize(a);
+    for (i = 0; i < a; i++) {
+        var = (EnumeratedVariable*)getVar(i);
+        t[i] = var->toIndex(*it_values[i]);
+    }
+    c = eval(t);
+
+    // and now increment
+    bool finished = false;
+    i = a - 1;
+    while (!finished) {
+        var = (EnumeratedVariable*)getVar(i);
+        ++it_values[i];
+        finished = it_values[i] != var->end();
+        if (!finished) {
+            if (i > 0) {
+                it_values[i] = var->begin();
+                i--;
+            } else
+                finished = true;
+        }
+    }
+    return true;
+}
+
+// projects n-ary cost function of arity less than 3 into a unary/binary/ternary cost function in extension before the search
+void AbstractNaryConstraint::projectNaryBeforeSearch()
+{
+    Tuple t;
+    assert(arity_ <= 3);
+    deconnect(); // Warning! It assumes the default cost is not used if the cost function has zero arity
+    if (arity_ == 3) {
+        vector<Cost> costs;
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(0);
+        EnumeratedVariable* y = (EnumeratedVariable*)getVar(1);
+        EnumeratedVariable* z = (EnumeratedVariable*)getVar(2);
+        unsigned int sizeX = x->getDomainInitSize();
+        unsigned int sizeY = y->getDomainInitSize();
+        unsigned int sizeZ = z->getDomainInitSize();
+        for (unsigned int a = 0; a < sizeX; a++) {
+            for (unsigned int b = 0; b < sizeY; b++) {
+                for (unsigned int c = 0; c < sizeZ; c++) {
+                    costs.push_back(getDefCost());
+                }
+            }
+        }
+        Cost cost;
+        first();
+        while (next(t, cost)) {
+            tValue a = t[0];
+            tValue b = t[1];
+            tValue c = t[2];
+            costs[(a * sizeY * sizeZ) + (b * sizeZ) + c] = cost;
+        }
+        wcsp->postTernaryConstraint(x->wcspIndex, y->wcspIndex, z->wcspIndex, costs);
+    } else if (arity_ == 2) {
+        vector<Cost> costs;
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(0);
+        EnumeratedVariable* y = (EnumeratedVariable*)getVar(1);
+        unsigned int sizeX = x->getDomainInitSize();
+        unsigned int sizeY = y->getDomainInitSize();
+        for (unsigned int a = 0; a < sizeX; a++) {
+            for (unsigned int b = 0; b < sizeY; b++) {
+                costs.push_back(getDefCost());
+            }
+        }
+        Cost cost;
+        first();
+        while (next(t, cost)) {
+            tValue a = t[0];
+            tValue b = t[1];
+            costs[(a * sizeY) + b] = cost;
+        }
+        wcsp->postBinaryConstraint(x->wcspIndex, y->wcspIndex, costs);
+    } else if (arity_ == 1) {
+        vector<Cost> costs;
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(0);
+        unsigned int sizeX = x->getDomainInitSize();
+        for (unsigned int a = 0; a < sizeX; a++) {
+            costs.push_back(getDefCost());
+        }
+        Cost cost;
+        first();
+        while (next(t, cost)) {
+            tValue a = t[0];
+            costs[a] = cost;
+        }
+        wcsp->postUnaryConstraint(x->wcspIndex, costs);
+    }
+}
+
+// USED ONLY DURING SEARCH
+void AbstractNaryConstraint::projectNaryTernary(TernaryConstraint* xyz)
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (td)
+        xyz->setCluster(cluster);
+    EnumeratedVariable* x = (EnumeratedVariable*)xyz->getVar(0);
+    EnumeratedVariable* y = (EnumeratedVariable*)xyz->getVar(1);
+    EnumeratedVariable* z = (EnumeratedVariable*)xyz->getVar(2);
+    TernaryConstraint* ctr = x->getConstr(y, z);
+    if (ctr && td && (ctr->getCluster() != getCluster())) {
+        TernaryConstraint* ctr_ = x->getConstr(y, z, getCluster());
+        if (ctr_)
+            ctr = ctr_;
+    }
+    if (ToulBar2::verbose >= 2) {
+        cout << "project nary to ternary (" << x->wcspIndex << "," << y->wcspIndex << "," << z->wcspIndex << ") ";
+        if (td)
+            cout << "   cluster nary: " << getCluster() << endl;
+        else
+            cout << endl;
+        if (ctr)
+            cout << "ctr exists" << endl;
+    }
+    if (!ctr || (ctr && td && cluster != ctr->getCluster())) {
+        xyz->fillElimConstrBinaries();
+        xyz->reconnect();
+        if (ctr)
+            xyz->setDuplicate();
+    } else {
+        ctr->addCosts(xyz);
+        xyz = ctr;
+    }
+    xyz->propagate();
+    assert(!td || (xyz->getCluster() == xyz->xy->getCluster() && xyz->getCluster() == xyz->xz->getCluster() && xyz->getCluster() == xyz->yz->getCluster()));
+}
+
+void AbstractNaryConstraint::projectNaryBinary(BinaryConstraint* xy)
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+    EnumeratedVariable* x = (EnumeratedVariable*)xy->getVar(0);
+    EnumeratedVariable* y = (EnumeratedVariable*)xy->getVar(1);
+
+    if (ToulBar2::verbose >= 2)
+        cout << "project nary to binary (" << x->wcspIndex << "," << y->wcspIndex << ")" << endl;
+
+    BinaryConstraint* ctr = NULL;
+    if (td)
+        ctr = x->getConstr(y, getCluster());
+    if (!ctr)
+        ctr = x->getConstr(y);
+
+    if ((ctr && !td) || (ctr && td && (getCluster() == ctr->getCluster()))) {
+        if (ToulBar2::verbose >= 2)
+            cout << " exists -> fusion" << endl;
+        ctr->addCosts(xy);
+        xy = ctr;
+    } else {
+        if (td) {
+            if (ctr)
+                xy->setDuplicate();
+            xy->setCluster(getCluster());
+        }
+    }
+    if (x->unassigned() && y->unassigned())
+        xy->reconnect();
+    xy->propagate();
+
+    if (ToulBar2::verbose >= 2)
+        cout << " and the result: " << *xy << endl;
+}
+
+// USED ONLY DURING SEARCH to project the nary constraint
+void AbstractNaryConstraint::projectNary()
+{
+    wcsp->revise(this);
+    int indexs[3];
+    EnumeratedVariable* unassigned[3] = { NULL, NULL, NULL };
+    bool flag = false;
+
+    int i, nunassigned = 0;
+    for (i = 0; i < arity_; i++) {
+        EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+        if (var->unassigned()) {
+            unassigned[nunassigned] = var;
+            indexs[nunassigned] = i;
+            evalTuple[i] = 0;
+            nunassigned++;
+        } else
+            evalTuple[i] = var->toIndex(var->getValue());
+    }
+
+    EnumeratedVariable* x = unassigned[0];
+    EnumeratedVariable* y = unassigned[1];
+    EnumeratedVariable* z = unassigned[2];
+
+    assert(nunassigned <= 3);
+    if (nunassigned == 3) {
+        TernaryConstraint* xyz = wcsp->newTernaryConstr(x, y, z, this);
+        wcsp->elimTernOrderInc();
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+                for (EnumeratedVariable::iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+                    Value xval = *iterx;
+                    Value yval = *itery;
+                    Value zval = *iterz;
+                    evalTuple[indexs[0]] = x->toIndex(xval);
+                    evalTuple[indexs[1]] = y->toIndex(yval);
+                    evalTuple[indexs[2]] = z->toIndex(zval);
+                    Cost curcost = eval(evalTuple);
+                    if (curcost > MIN_COST)
+                        flag = true;
+                    xyz->setcost(x, y, z, xval, yval, zval, curcost);
+                }
+            }
+        }
+        if (flag)
+            projectNaryTernary(xyz);
+        //else cout << "ternary empty!" << endl;
+    } else if (nunassigned == 2) {
+        BinaryConstraint* xy = wcsp->newBinaryConstr(x, y, this);
+        wcsp->elimBinOrderInc();
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+                Value xval = *iterx;
+                Value yval = *itery;
+                evalTuple[indexs[0]] = x->toIndex(xval);
+                evalTuple[indexs[1]] = y->toIndex(yval);
+                Cost curcost = eval(evalTuple);
+                if (curcost > MIN_COST)
+                    flag = true;
+                xy->setcost(xval, yval, curcost);
+                if (ToulBar2::verbose >= 5) {
+                    cout << evalTuple;
+                    cout << " " << curcost << endl;
+                }
+            }
+        }
+        if (flag)
+            projectNaryBinary(xy);
+        //else cout << "binary empty!" << endl;
+    } else if (nunassigned == 1) {
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            Value xval = *iterx;
+            evalTuple[indexs[0]] = x->toIndex(xval);
+            Cost c = eval(evalTuple);
+            if (c > MIN_COST) {
+                if (!CUT(c + wcsp->getLb(), wcsp->getUb())) {
+                    TreeDecomposition* td = wcsp->getTreeDec();
+                    if (td)
+                        td->addDelta(cluster, x, xval, c);
+                }
+                x->project(xval, c);
+            }
+        }
+        x->findSupport();
+    } else {
+        Cost c = eval(evalTuple);
+        Constraint::projectLB(c); // warning! projectLB is not a virtual method
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2abstractconstr.hpp b/code/include/tb2/core/tb2abstractconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..c2872b93349d88c069d010b6b9feeed8cdb0b9c4
--- /dev/null
+++ b/code/include/tb2/core/tb2abstractconstr.hpp
@@ -0,0 +1,669 @@
+/** \file tb2abstractconstr.hpp
+ *  \brief Abstract constraints of predefined arities
+ *
+ */
+
+#ifndef TB2ABSTRACTCONSTR_HPP_
+#define TB2ABSTRACTCONSTR_HPP_
+
+#include "tb2constraint.hpp"
+#include "tb2variable.hpp"
+#include "tb2enumvar.hpp"
+#include "tb2wcsp.hpp"
+
+// Warning! Constraint reconnect() may interfere with variable constraints list iterator used by EnumerateVariable assign method. Do not reconnect a constraint with assigned variables in project functions.
+
+template <class T1>
+class AbstractUnaryConstraint : public Constraint {
+protected:
+    T1* x;
+    DLink<ConstraintLink>* linkX;
+
+public:
+    AbstractUnaryConstraint(WCSP* wcspin, T1* xx)
+        : Constraint(wcspin)
+        , x(xx)
+        , linkX(NULL)
+    {
+        linkX = xx->link(this, 0);
+    }
+
+    virtual ~AbstractUnaryConstraint() { delete linkX; }
+
+    bool connected() const FINAL { return !linkX->removed; }
+    bool deconnected() const FINAL { return linkX->removed; }
+    void deconnect(bool reuse = false) FINAL
+    {
+        if (connected()) {
+            if (ToulBar2::verbose >= 3)
+                cout << "deconnect " << this << endl;
+            x->deconnect(linkX, reuse);
+        }
+    }
+    void reconnect() FINAL
+    {
+        if (deconnected()) {
+            if (ToulBar2::verbose >= 3)
+                cout << "reconnect " << this << endl;
+            assert(linkX->prev == NULL && linkX->next == NULL);
+            x->getConstrs()->push_back(linkX, true);
+        }
+    }
+
+    int arity() const FINAL { return 1; }
+
+    Variable* getVar(int varCtrIndex) const FINAL { return x; }
+    Variable* getDACVar(int varCtrIndex) const FINAL { return getVar(varCtrIndex); }
+
+    Variable* getVarDiffFrom(Variable* v) const
+    {
+        if (v != x)
+            return x;
+        else
+            exit(EXIT_FAILURE);
+    }
+
+    int getIndex(Variable* var) const FINAL
+    {
+        if (var == x)
+            return 0;
+        return -1;
+    }
+
+    int getSmallestVarIndexInScope(int forbiddenScopeIndex) FINAL
+    {
+        assert(forbiddenScopeIndex >= 0);
+        assert(forbiddenScopeIndex < 1);
+        return x->wcspIndex;
+    }
+    int getSmallestVarIndexInScope() FINAL { return x->wcspIndex; }
+    int getSmallestDACIndexInScope(int forbiddenScopeIndex) FINAL
+    {
+        assert(forbiddenScopeIndex >= 0);
+        assert(forbiddenScopeIndex < 1);
+        return x->getDACOrder();
+    }
+
+    void getScope(TSCOPE& scope_inv) FINAL
+    {
+        scope_inv.clear();
+        scope_inv[x->wcspIndex] = 0;
+    }
+
+    ConstraintSet subConstraint() FINAL
+    {
+        ConstraintSet subcstr;
+        return subcstr;
+    }
+};
+
+template <class T1, class T2>
+class AbstractBinaryConstraint : public Constraint {
+protected:
+    T1* x;
+    T2* y;
+    DLink<ConstraintLink>* linkX;
+    DLink<ConstraintLink>* linkY;
+    int dacvar;
+
+public:
+    AbstractBinaryConstraint(WCSP* wcspin, T1* xx, T2* yy)
+        : Constraint(wcspin)
+        , x(xx)
+        , y(yy)
+        , linkX(NULL)
+        , linkY(NULL)
+    {
+        assert(xx != yy);
+        linkX = xx->link(this, 0);
+        linkY = yy->link(this, 1);
+        setDACScopeIndex();
+    }
+
+    AbstractBinaryConstraint(WCSP* wcspin)
+        : Constraint(wcspin, -wcspin->elimBinConstrs.size() - 1)
+        , x(NULL)
+        , y(NULL)
+        , linkX(NULL)
+        , linkY(NULL)
+    {
+    }
+
+    virtual ~AbstractBinaryConstraint()
+    {
+        delete linkX;
+        delete linkY;
+    }
+
+    bool connected() const FINAL { return !linkX->removed && !linkY->removed; }
+    bool deconnected() const FINAL { return linkX->removed || linkY->removed; }
+    void deconnect(bool reuse = false) FINAL
+    {
+        if (connected()) {
+            if (ToulBar2::verbose >= 3)
+                cout << "deconnect " << this << endl;
+            x->deconnect(linkX, reuse);
+            y->deconnect(linkY, reuse);
+        }
+    }
+    void reconnect() FINAL
+    {
+        if (deconnected()) {
+            if (ToulBar2::verbose >= 3)
+                cout << "reconnect " << this << endl;
+            assert(linkX->prev == NULL && linkX->next == NULL);
+            x->getConstrs()->push_back(linkX, true);
+            assert(linkY->prev == NULL && linkY->next == NULL);
+            y->getConstrs()->push_back(linkY, true);
+        }
+    }
+
+    int arity() const FINAL { return 2; }
+
+    Variable* getVar(int varCtrIndex) const FINAL { return (varCtrIndex == 0) ? x : y; }
+
+    Variable* getVarDiffFrom(Variable* v) const
+    {
+        if (v == x)
+            return y;
+        else if (v == y)
+            return x;
+        else
+            exit(EXIT_FAILURE);
+    }
+
+    int getIndex(Variable* var) const FINAL
+    {
+        if (var == x)
+            return 0;
+        else if (var == y)
+            return 1;
+        return -1;
+    }
+
+    int getSmallestVarIndexInScope(int forbiddenScopeIndex) FINAL
+    {
+        assert(forbiddenScopeIndex >= 0);
+        assert(forbiddenScopeIndex < 2);
+        return (forbiddenScopeIndex) ? x->wcspIndex : y->wcspIndex;
+    }
+    int getSmallestVarIndexInScope() FINAL { return min(x->wcspIndex, y->wcspIndex); }
+    int getDACScopeIndex() const FINAL { return dacvar; }
+    void setDACScopeIndex() FINAL
+    {
+        if (x->getDACOrder() < y->getDACOrder())
+            dacvar = 0;
+        else
+            dacvar = 1;
+    }
+    int getSmallestDACIndexInScope(int forbiddenScopeIndex) FINAL
+    {
+        assert(forbiddenScopeIndex >= 0);
+        assert(forbiddenScopeIndex < 2);
+        return (forbiddenScopeIndex) ? x->getDACOrder() : y->getDACOrder();
+    }
+    Variable* getDACVar(int varCtrIndex) const FINAL { return ((varCtrIndex == 0) == (dacvar == 0)) ? x : y; }
+
+    void getScope(TSCOPE& scope_inv) FINAL
+    {
+        scope_inv.clear();
+        scope_inv[x->wcspIndex] = 0;
+        scope_inv[y->wcspIndex] = 1;
+    }
+
+    ConstraintSet subConstraint() FINAL
+    {
+        ConstraintSet subcstr;
+        return subcstr;
+    }
+};
+
+template <class T1, class T2, class T3>
+class AbstractTernaryConstraint : public Constraint {
+protected:
+    T1* x;
+    T2* y;
+    T3* z;
+    DLink<ConstraintLink>* linkX;
+    DLink<ConstraintLink>* linkY;
+    DLink<ConstraintLink>* linkZ;
+    int dacvar;
+
+public:
+    AbstractTernaryConstraint(WCSP* wcsp, T1* xx, T2* yy, T2* zz)
+        : Constraint(wcsp)
+        , x(xx)
+        , y(yy)
+        , z(zz)
+        , linkX(NULL)
+        , linkY(NULL)
+        , linkZ(NULL)
+    {
+        assert(xx != yy);
+        assert(xx != zz);
+        assert(yy != zz);
+        linkX = xx->link(this, 0);
+        linkY = yy->link(this, 1);
+        linkZ = zz->link(this, 2);
+        setDACScopeIndex();
+    }
+
+    AbstractTernaryConstraint(WCSP* wcspin)
+        : Constraint(wcspin, -wcspin->elimTernConstrs.size() - MAX_ELIM_BIN - 1)
+        , x(NULL)
+        , y(NULL)
+        , z(NULL)
+        , linkX(NULL)
+        , linkY(NULL)
+        , linkZ(NULL)
+    {
+    }
+
+    virtual ~AbstractTernaryConstraint()
+    {
+        delete linkX;
+        delete linkY;
+        delete linkZ;
+    }
+
+    bool connected() const FINAL { return !linkX->removed && !linkY->removed && !linkZ->removed; }
+    bool deconnected() const FINAL { return linkX->removed || linkY->removed || linkZ->removed; }
+    void deconnect(bool reuse = false) FINAL
+    {
+        if (connected()) {
+            if (ToulBar2::verbose >= 3)
+                cout << "deconnect " << this << endl;
+            x->deconnect(linkX, reuse);
+            y->deconnect(linkY, reuse);
+            z->deconnect(linkZ, reuse);
+        }
+    }
+    void reconnect() FINAL
+    {
+        if (deconnected()) {
+            if (ToulBar2::verbose >= 3)
+                cout << "reconnect " << this << endl;
+            assert(linkX->prev == NULL && linkX->next == NULL);
+            //			if (linkX->content.constr->isTriangle()) x->getTriangles()->push_back(linkX, true);
+            //			else
+            x->getConstrs()->push_back(linkX, true);
+            assert(linkY->prev == NULL && linkY->next == NULL);
+            //			if (linkY->content.constr->isTriangle()) y->getTriangles()->push_back(linkY, true);
+            //			else
+            y->getConstrs()->push_back(linkY, true);
+            assert(linkZ->prev == NULL && linkZ->next == NULL);
+            //			if (linkZ->content.constr->isTriangle()) z->getTriangles()->push_back(linkZ, true);
+            //			else
+            z->getConstrs()->push_back(linkZ, true);
+        }
+    }
+
+    int arity() const FINAL { return 3; }
+
+    Variable* getVar(int varCtrIndex) const FINAL
+    {
+        switch (varCtrIndex) {
+        case 0:
+            return x;
+            break;
+        case 1:
+            return y;
+            break;
+        case 2:
+            return z;
+            break;
+        default:
+            exit(EXIT_FAILURE);
+        }
+    }
+
+    Variable* getVarDiffFrom(Variable* v1, Variable* v2) const
+    {
+        if ((x == v1) && (y == v2))
+            return z;
+        else if ((x == v2) && (y == v1))
+            return z;
+        else if ((x == v1) && (z == v2))
+            return y;
+        else if ((x == v2) && (z == v1))
+            return y;
+        else if ((y == v1) && (z == v2))
+            return x;
+        else if ((y == v2) && (z == v1))
+            return x;
+        else
+            exit(EXIT_FAILURE);
+    }
+
+    int getIndex(Variable* var) const FINAL
+    {
+        if (var == x)
+            return 0;
+        else if (var == y)
+            return 1;
+        else if (var == z)
+            return 2;
+        return -1;
+    }
+
+    int getSmallestVarIndexInScope(int forbiddenScopeIndex) FINAL
+    {
+        assert(forbiddenScopeIndex >= 0);
+        assert(forbiddenScopeIndex < 3);
+        switch (forbiddenScopeIndex) {
+        case 0:
+            return min(y->wcspIndex, z->wcspIndex);
+            break;
+        case 1:
+            return min(x->wcspIndex, z->wcspIndex);
+            break;
+        case 2:
+            return min(x->wcspIndex, y->wcspIndex);
+            break;
+        default:
+            exit(EXIT_FAILURE);
+        }
+    }
+    int getSmallestVarIndexInScope() FINAL
+    {
+        int res = min(x->wcspIndex, y->wcspIndex);
+        return min(res, z->wcspIndex);
+    }
+    int getDACScopeIndex() const FINAL { return dacvar; }
+    void setDACScopeIndex() FINAL
+    {
+        if (x->getDACOrder() < y->getDACOrder() && x->getDACOrder() < z->getDACOrder())
+            dacvar = 0;
+        else if (y->getDACOrder() < x->getDACOrder() && y->getDACOrder() < z->getDACOrder())
+            dacvar = 1;
+        else
+            dacvar = 2;
+    }
+    int getSmallestDACIndexInScope(int forbiddenScopeIndex) FINAL
+    {
+        assert(forbiddenScopeIndex >= 0);
+        assert(forbiddenScopeIndex < 3);
+        switch (forbiddenScopeIndex) {
+        case 0:
+            return min(y->getDACOrder(), z->getDACOrder());
+            break;
+        case 1:
+            return min(x->getDACOrder(), z->getDACOrder());
+            break;
+        case 2:
+            return min(x->getDACOrder(), y->getDACOrder());
+            break;
+        default:
+            exit(EXIT_FAILURE);
+        }
+    }
+    Variable* getDACVar(int varCtrIndex) const FINAL
+    {
+        if (varCtrIndex == 0) {
+            switch (dacvar) {
+            case 0:
+                return x;
+            case 1:
+                return y;
+            case 2:
+                return z;
+            default:
+                exit(EXIT_FAILURE);
+            }
+        } else { // varCtrIndex >= 1
+            switch (dacvar) {
+            case 0:
+                return ((varCtrIndex == 1) == (y->getDACOrder() < z->getDACOrder())) ? y : z;
+            case 1:
+                return ((varCtrIndex == 1) == (x->getDACOrder() < z->getDACOrder())) ? x : z;
+            case 2:
+                return ((varCtrIndex == 1) == (x->getDACOrder() < y->getDACOrder())) ? x : y;
+            default:
+                exit(EXIT_FAILURE);
+            }
+        }
+    }
+
+    void getScope(TSCOPE& scope_inv) FINAL
+    {
+        scope_inv.clear();
+        scope_inv[x->wcspIndex] = 0;
+        scope_inv[y->wcspIndex] = 1;
+        scope_inv[z->wcspIndex] = 2;
+    }
+
+    ConstraintSet subConstraint() FINAL
+    {
+        ConstraintSet subcstr;
+        set<int> scope;
+        for (int k = 0; k < arity(); k++) {
+            scope.insert(getVar(k)->wcspIndex);
+        }
+        for (set<int>::iterator itx = scope.begin(); itx != scope.end(); ++itx) {
+            ConstraintList* xctrs = (wcsp->getVar(*itx))->getConstrs();
+            for (ConstraintList::iterator it = xctrs->begin(); it != xctrs->end(); ++it) {
+                Constraint* ctr = (*it).constr;
+                if (ctr->arity() == 2 && scopeIncluded(ctr))
+                    subcstr.insert(ctr);
+            }
+        }
+
+        return subcstr;
+    }
+};
+
+extern int cmpDAC(const void* var1, const void* var2);
+
+class AbstractNaryConstraint : public Constraint {
+protected:
+    int arity_;
+
+    EnumeratedVariable** scope;
+    EnumeratedVariable** scope_dac; // scope sorted by increasing DAC order
+    TSCOPE scope_inv;
+
+    DLink<ConstraintLink>** links;
+
+    vector<EnumeratedVariable::iterator> it_values; // used by firstlex/nextlex and for separator decomposition tests
+    Tuple evalTuple;
+
+public:
+    AbstractNaryConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in)
+        : Constraint(wcsp)
+        , arity_(arity_in)
+    {
+        scope = new EnumeratedVariable*[arity_];
+        scope_dac = new EnumeratedVariable*[arity_];
+        links = new DLink<ConstraintLink>*[arity_];
+
+        for (int i = 0; i < arity_; i++) {
+            EnumeratedVariable* var = scope_in[i];
+            scope_inv[var->wcspIndex] = i;
+            scope[i] = var;
+            scope_dac[i] = var;
+            links[i] = var->link(this, i);
+            evalTuple.push_back(0);
+        }
+        setDACScopeIndex();
+    }
+
+    AbstractNaryConstraint(WCSP* wcsp)
+        : Constraint(wcsp)
+    {
+    }
+
+    virtual ~AbstractNaryConstraint()
+    {
+        delete[] scope;
+        delete[] scope_dac;
+        delete[] links;
+    }
+
+    int arity() const FINAL { return arity_; }
+    Long getDomainInitSizeProduct(); // warning! return LONGLONG_MAX if overflow occurs
+
+    Variable* getVar(int varCtrIndex) const FINAL
+    {
+        assert(varCtrIndex < arity_);
+        return scope[varCtrIndex];
+    }
+
+    int getIndex(Variable* var) const FINAL
+    {
+        int index = var->wcspIndex;
+        map<int, int>::const_iterator it = scope_inv.find(index);
+        if (it == scope_inv.end())
+            return -1;
+        else
+            return it->second;
+    }
+
+    bool connected(int varIndex) const { return !links[varIndex]->removed; }
+    bool deconnected(int varIndex) const { return links[varIndex]->removed; }
+
+    bool connected() const FINAL
+    {
+        for (int i = 0; i < arity_; i++)
+            if (!links[i]->removed)
+                return true;
+        return false;
+    }
+
+    bool deconnected() const FINAL
+    {
+        for (int i = 0; i < arity_; i++)
+            if (!links[i]->removed)
+                return false;
+        return true;
+    }
+
+    void deconnect(int varIndex, bool reuse = false)
+    {
+        scope[varIndex]->deconnect(links[varIndex], reuse);
+    }
+
+    void deconnect(bool reuse = false) FINAL
+    {
+        if (connected()) {
+            if (ToulBar2::verbose >= 3)
+                cout << "deconnect " << this << endl;
+            for (int i = 0; i < arity_; i++)
+                deconnect(i, reuse);
+        }
+    }
+
+    virtual void reconnect()
+    {
+        if (deconnected()) {
+            if (ToulBar2::verbose >= 3)
+                cout << "reconnect " << this << endl;
+            for (int i = 0; i < arity_; i++) {
+                assert(links[i]->prev == NULL && links[i]->next == NULL);
+                scope[i]->getConstrs()->push_back(links[i], true);
+            }
+        }
+    }
+
+    virtual Cost eval(const Tuple& t)
+    {
+        cout << "dummy eval on: " << *this << endl;
+        return MIN_COST;
+    }
+    //    virtual void insertTuple( Tuple t, Cost c, EnumeratedVariable** scope_in ) { }
+
+    int getSmallestVarIndexInScope(int forbiddenScopeIndex) FINAL
+    {
+        assert(forbiddenScopeIndex >= 0);
+        assert(forbiddenScopeIndex < arity_);
+        int indexmin = INT_MAX;
+        for (int i = 0; i < arity_; i++)
+            if (i != forbiddenScopeIndex) {
+                if (scope[i]->wcspIndex < indexmin) {
+                    indexmin = scope[i]->wcspIndex;
+                }
+            }
+        return indexmin;
+    }
+    int getSmallestVarIndexInScope() FINAL
+    {
+        int indexmin = INT_MAX;
+        for (int i = 0; i < arity_; i++) {
+            if (scope[i]->wcspIndex < indexmin) {
+                indexmin = scope[i]->wcspIndex;
+            }
+        }
+        return indexmin;
+    }
+    void getScope(TSCOPE& scope_inv_in) FINAL
+    {
+        scope_inv_in = scope_inv;
+    }
+
+    /// \warning scope_dac uses pointers not indexes!
+    /// \warning additional side-effect: updates scope_inv with current variable wcspIndexes
+    void setDACScopeIndex() FINAL
+    {
+        scope_inv.clear();
+        for (int i = 0; i < arity_; i++) {
+            scope_inv[scope[i]->wcspIndex] = i;
+        }
+        qsort(scope_dac, arity_, sizeof(EnumeratedVariable*), cmpDAC);
+    }
+    int getSmallestDACIndexInScope(int forbiddenScopeIndex) FINAL
+    {
+        assert(forbiddenScopeIndex >= 0);
+        assert(forbiddenScopeIndex < arity_);
+        int indexmin = INT_MAX;
+        for (int i = 0; i < arity_; i++)
+            if (i != forbiddenScopeIndex) {
+                if (scope[i]->getDACOrder() < indexmin) {
+                    indexmin = scope[i]->getDACOrder();
+                }
+            }
+        return indexmin;
+    }
+    Variable* getDACVar(int varCtrIndex) const FINAL
+    {
+        assert(varCtrIndex < arity_);
+        return scope_dac[varCtrIndex];
+    }
+
+    ConstraintSet subConstraint() FINAL
+    {
+        ConstraintSet subcstr;
+        set<int> scope;
+        for (int k = 0; k < arity_; k++) {
+            scope.insert(getVar(k)->wcspIndex);
+        }
+        for (set<int>::iterator itx = scope.begin(); itx != scope.end(); ++itx) {
+            ConstraintList* xctrs = (wcsp->getVar(*itx))->getConstrs();
+            for (ConstraintList::iterator it = xctrs->begin(); it != xctrs->end(); ++it) {
+                Constraint* ctr = (*it).constr;
+                if (ctr->arity() < arity() && scopeIncluded(ctr))
+                    subcstr.insert(ctr);
+            }
+        }
+
+        return subcstr;
+    }
+
+    void firstlex();
+    bool nextlex(Tuple& t, Cost& c);
+
+    void projectNaryBeforeSearch();
+    // USE ONLY DURING SEARCH when less than three unassigned variables remain:
+    void projectNaryTernary(TernaryConstraint* xyz);
+    void projectNaryBinary(BinaryConstraint* xy);
+    void projectNary();
+};
+
+#define AbstractGlobalConstraint AbstractNaryConstraint
+
+#endif /*TB2ABSTRACTCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2arithmetic.cpp b/code/include/tb2/core/tb2arithmetic.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fcb8898b55f54c780362d9878c0243c2daf8c331
--- /dev/null
+++ b/code/include/tb2/core/tb2arithmetic.cpp
@@ -0,0 +1,531 @@
+/*
+ * ****** Binary arithmetic soft constraints ******
+ */
+
+#include "tb2arithmetic.hpp"
+#include "tb2wcsp.hpp"
+
+/*
+ * Constructors and misc.
+ * 
+ */
+
+Unary::Unary(WCSP* wcsp, IntervalVariable* xx, Value* d, int dsize, Cost c)
+    : AbstractUnaryConstraint<IntervalVariable>(wcsp, xx)
+    , permitted(d, d + dsize)
+    , penalty(c)
+    , deltaValueXinf(xx->getSup() + 1)
+    , deltaValueXsup(xx->getSup() + 1)
+{
+    xx->queueInc();
+    xx->queueDec();
+}
+
+void Unary::print(ostream& os)
+{
+    os << this << " " << x->getName() << " var in {";
+    for (set<Value>::iterator it = permitted.begin(); it != permitted.end(); ++it) {
+        os << " " << *it;
+    }
+    os << " } (" << penalty << ")" << endl;
+}
+
+void Unary::dump(ostream& os, bool original)
+{
+    os << "1 " << ((original) ? (x->wcspIndex) : x->getCurrentVarId()) << " " << penalty << " " << permitted.size() << endl;
+    for (set<Value>::iterator it = permitted.begin(); it != permitted.end(); ++it) {
+        os << *it << " 0" << endl;
+    }
+}
+
+Supxyc::Supxyc(WCSP* wcsp, IntervalVariable* xx, IntervalVariable* yy, Value c, Value delta)
+    : AbstractBinaryConstraint<IntervalVariable, IntervalVariable>(wcsp, xx, yy)
+    , cst(c)
+    , deltamax(delta)
+    , deltaCost(MIN_COST)
+    , deltaValueXinf(xx->getSup() + 1)
+    , deltaValueYsup(yy->getSup() + 1)
+    , deltaCostXinf(MIN_COST)
+    , deltaCostYsup(MIN_COST)
+{
+    xx->queueInc();
+    xx->queueDec();
+    yy->queueInc();
+    yy->queueDec();
+}
+
+void Supxyc::print(ostream& os)
+{
+    os << this << " " << x->getName() << " >= " << y->getName() << " + " << cst << " (" << deltamax << ")" << endl;
+}
+
+void Supxyc::dump(ostream& os, bool original)
+{
+    os << "2 " << ((original) ? (x->wcspIndex) : x->getCurrentVarId()) << " " << ((original) ? (y->wcspIndex) : y->getCurrentVarId()) << " -1 >= " << cst << " " << deltamax << endl;
+}
+
+Disjunction::Disjunction(WCSP* wcsp, IntervalVariable* xx, IntervalVariable* yy, Value cxx, Value cyy,
+    Cost cost)
+    : AbstractBinaryConstraint<IntervalVariable, IntervalVariable>(wcsp, xx, yy)
+    , cstx(cxx)
+    , csty(cyy)
+    , penalty(cost)
+    , deltaValueXinf(xx->getSup() + 1)
+    , deltaValueYinf(yy->getSup() + 1)
+    , deltaValueXsup(xx->getSup() + 1)
+    , deltaValueYsup(yy->getSup() + 1)
+{
+    xx->queueInc();
+    xx->queueDec();
+    yy->queueInc();
+    yy->queueDec();
+}
+
+void Disjunction::print(ostream& os)
+{
+    os << this << " " << x->getName() << " >= " << y->getName() << " + " << csty << " or " << y->getName() << " >= " << x->getName() << " + " << cstx << " (" << penalty << ")" << endl;
+}
+
+void Disjunction::dump(ostream& os, bool original)
+{
+    os << "2 " << ((original) ? (x->wcspIndex) : x->getCurrentVarId()) << " " << ((original) ? (y->wcspIndex) : y->getCurrentVarId()) << " -1 disj " << cstx << " " << csty << " " << penalty << endl;
+}
+
+SpecialDisjunction::SpecialDisjunction(WCSP* wcsp, IntervalVariable* xx, IntervalVariable* yy,
+    Value cxx, Value cyy, Value xmax, Value ymax,
+    Cost xcost, Cost ycost)
+    : AbstractBinaryConstraint<IntervalVariable, IntervalVariable>(wcsp, xx, yy)
+    , cstx(cxx)
+    , csty(cyy)
+    , xinfty(xmax)
+    , yinfty(ymax)
+    , costx(xcost)
+    , costy(ycost)
+    , deltaCost(MIN_COST)
+    , deltaValueXinf(xx->getSup() + 1)
+    , deltaValueYinf(yy->getSup() + 1)
+    , deltaValueXsup(xx->getSup() + 1)
+    , deltaValueYsup(yy->getSup() + 1)
+    , deltaCostXinf(MIN_COST)
+    , deltaCostYinf(MIN_COST)
+    , deltaCostXsup(MIN_COST)
+    , deltaCostYsup(MIN_COST)
+{
+    xx->queueInc();
+    xx->queueDec();
+    yy->queueInc();
+    yy->queueDec();
+}
+
+void SpecialDisjunction::print(ostream& os)
+{
+    os << this << " " << x->getName() << " < " << xinfty << " and " << y->getName() << " < " << yinfty << " and (" << x->getName() << " >= " << y->getName() << " + " << csty << " or " << y->getName() << " >= " << x->getName() << " + " << cstx << ") (" << costx << "," << costy << ")" << endl;
+}
+
+void SpecialDisjunction::dump(ostream& os, bool original)
+{
+    os << "2 " << ((original) ? (x->wcspIndex) : x->getCurrentVarId()) << " " << ((original) ? (y->wcspIndex) : y->getCurrentVarId()) << " -1 sdisj " << cstx << " " << csty << " " << xinfty << " " << yinfty << " " << costx << " " << costy << endl;
+}
+
+/*
+ * Propagation methods
+ * 
+ */
+
+void Unary::propagate()
+{
+    if (ToulBar2::verbose >= 3) {
+        print(cout);
+        cout << " dxinf=" << deltaValueXinf << " dxsup=" << deltaValueXsup << endl;
+    }
+    wcsp->revise(this);
+    set<Value>::iterator itinf = permitted.lower_bound(x->getInf());
+    set<Value>::iterator itsup = permitted.upper_bound(x->getSup());
+    --itsup;
+    if (itinf == permitted.end() || itsup == permitted.end()) {
+        // IC0 propagatation (increase global lower bound)
+        deconnect();
+        projectLB(penalty);
+    } else {
+        // propagate hard constraint
+        if (CUT(wcsp->getLb() + penalty, wcsp->getUb())) {
+            if (x->getInf() < *itinf)
+                x->increase(*itinf);
+            if (x->getSup() > *itsup)
+                x->decrease(*itsup);
+        }
+        // BAC* propagation (increase unary costs of domain bounds)
+        Value xinf = x->getInf();
+        if (xinf != deltaValueXinf && xinf != deltaValueXsup && permitted.find(xinf) == permitted.end()) {
+            deltaValueXinf = xinf;
+            x->projectInfCost(penalty);
+        }
+        Value xsup = x->getSup();
+        if (xsup != deltaValueXinf && xsup != deltaValueXsup && permitted.find(xsup) == permitted.end()) {
+            deltaValueXsup = xsup;
+            x->projectSupCost(penalty);
+        }
+    }
+}
+
+bool Unary::verify()
+{
+    bool support = (permitted.lower_bound(x->getInf()) != permitted.end() || (--permitted.upper_bound(x->getSup())) != permitted.end());
+    support = support && (permitted.find(x->getInf()) != permitted.end() || deltaValueXinf == x->getInf());
+    support = support && (permitted.find(x->getSup()) != permitted.end() || deltaValueXsup == x->getSup());
+    if (!support) {
+        print(cout);
+        x->print(cout);
+        cout << endl;
+        cout << " dxinf=" << deltaValueXinf << " dxsup=" << deltaValueXsup << endl;
+    }
+    return support;
+}
+
+void Supxyc::propagate()
+{
+    if (ToulBar2::verbose >= 3) {
+        print(cout);
+        cout << " delta=" << deltaCost << " dxinf=" << deltaValueXinf << " dxcost=" << deltaCostXinf << " dysup=" << deltaValueYsup << " dycost=" << deltaCostYsup << endl;
+    }
+    wcsp->revise(this);
+    // deconnect the constraint if always satisfied
+    if (x->getInf() >= y->getSup() + cst) {
+        deconnect();
+    } else {
+        // propagate hard constraint
+        Cost gap = wcsp->getUb() - wcsp->getLb() - 1 + deltaCost;
+        Value newInf = ceil(y->getInf() + cst - ((gap < deltamax) ? gap : deltamax));
+        if (x->getInf() < newInf)
+            x->increase(newInf);
+
+        Value newSup = floor(x->getSup() - cst + ((gap < deltamax) ? gap : deltamax));
+        if (y->getSup() > newSup)
+            y->decrease(newSup);
+
+        // IC0 propagatation (increase global lower bound)
+        Cost cost = y->getInf() + cst - x->getSup() - deltaCost;
+        if (cost > MIN_COST) {
+            deltaCost += cost;
+            projectLB(cost);
+        }
+
+        // BAC* propagation (increase unary costs of domain bounds for unassigned variables)
+        if (x->unassigned()) {
+            Value xinf = x->getInf();
+            Value yinf = y->getInf();
+            cost = max(yinf + cst - xinf - deltaCost, MIN_COST);
+            if (xinf == deltaValueXinf) {
+                Cost delta = cost - deltaCostXinf;
+                if (delta != MIN_COST) {
+                    deltaCostXinf = cost;
+                    x->projectInfCost(delta);
+                }
+            } else {
+                deltaValueXinf = xinf;
+                deltaCostXinf = cost;
+                x->projectInfCost(cost);
+            }
+        }
+
+        if (y->unassigned()) {
+            Value xsup = x->getSup();
+            Value ysup = y->getSup();
+            cost = max(ysup + cst - xsup - deltaCost, MIN_COST);
+            if (ysup == deltaValueYsup) {
+                Cost delta = cost - deltaCostYsup;
+                if (delta != MIN_COST) {
+                    deltaCostYsup = cost;
+                    y->projectSupCost(delta);
+                }
+            } else {
+                deltaValueYsup = ysup;
+                deltaCostYsup = cost;
+                y->projectSupCost(cost);
+            }
+        }
+    }
+}
+
+bool Supxyc::verify()
+{
+    Cost cmin = MIN_COST;
+    Cost cxinf = MIN_COST;
+    Cost cysup = MIN_COST;
+
+    cmin = y->getInf() + cst - x->getSup() - deltaCost;
+    if (cmin > MIN_COST)
+        cout << "cmin=" << cmin << endl;
+    cxinf = y->getInf() + cst - x->getInf() - deltaCost
+        - ((y->getInf() == deltaValueYsup) ? (Cost)deltaCostYsup : MIN_COST)
+        - ((x->getInf() == deltaValueXinf) ? (Cost)deltaCostXinf : MIN_COST);
+    if (cxinf > MIN_COST)
+        cout << "cxinf=" << cxinf << endl;
+    cysup = y->getSup() + cst - x->getSup() - deltaCost
+        - ((y->getSup() == deltaValueYsup) ? (Cost)deltaCostYsup : MIN_COST)
+        - ((x->getSup() == deltaValueXinf) ? (Cost)deltaCostXinf : MIN_COST);
+    if (cysup > MIN_COST)
+        cout << "cysup=" << cysup << endl;
+    bool icbac = (cmin <= MIN_COST) && (cysup <= MIN_COST) && (cxinf <= MIN_COST);
+    if (!icbac) {
+        print(cout);
+        x->print(cout);
+        cout << endl;
+        y->print(cout);
+        cout << endl;
+        cout << " delta=" << deltaCost << " dxinf=" << deltaValueXinf << " dxcost=" << deltaCostXinf << " dysup=" << deltaValueYsup << " dycost=" << deltaCostYsup << endl;
+    }
+    return icbac;
+}
+
+void Disjunction::propagate()
+{
+    if (ToulBar2::verbose >= 3) {
+        print(cout);
+        cout << " dxinf=" << deltaValueXinf << " dxsup=" << deltaValueXsup << " dyinf=" << deltaValueYinf << " dysup=" << deltaValueYsup << endl;
+    }
+    wcsp->revise(this);
+    // deconnect the constraint if always satisfied
+    if (x->getInf() >= y->getSup() + csty || y->getInf() >= x->getSup() + cstx) {
+        deconnect();
+    } else if (x->getSup() < y->getInf() + csty && y->getSup() < x->getInf() + cstx) {
+        // IC0 propagatation (increase global lower bound if always unsatisfied)
+        deconnect();
+        if (x->unassigned()) {
+            if (x->getInf() == deltaValueXinf)
+                x->projectInfCost(-penalty);
+            if (x->getSup() == deltaValueXsup)
+                x->projectSupCost(-penalty);
+        }
+        if (y->unassigned()) {
+            if (y->getInf() == deltaValueYinf)
+                y->projectInfCost(-penalty);
+            if (y->getSup() == deltaValueYsup)
+                y->projectSupCost(-penalty);
+        }
+        projectLB(penalty);
+    } else {
+        // propagate hard constraint
+        if (CUT(wcsp->getLb() + penalty, wcsp->getUb())) {
+            if (x->getSup() < y->getInf() + csty) {
+                Value newInf = x->getInf() + cstx;
+                if (y->getInf() < newInf)
+                    y->increase(newInf);
+                Value newSup = y->getSup() - cstx;
+                if (x->getSup() > newSup)
+                    x->decrease(newSup);
+            } else if (y->getSup() < x->getInf() + cstx) {
+                Value newInf = y->getInf() + csty;
+                if (x->getInf() < newInf)
+                    x->increase(newInf);
+                Value newSup = x->getSup() - csty;
+                if (y->getSup() > newSup)
+                    y->decrease(newSup);
+            }
+        }
+
+        // BAC* propagation (increase unary costs of domain bounds)
+        if (x->unassigned()) {
+            Value xinf = x->getInf();
+            if (xinf != deltaValueXinf && xinf != deltaValueXsup && xinf < y->getInf() + csty && xinf > y->getSup() - cstx) {
+                deltaValueXinf = xinf;
+                x->projectInfCost(penalty);
+            }
+            Value xsup = x->getSup();
+            if (xsup != deltaValueXsup && xsup != deltaValueXinf && xsup < y->getInf() + csty && xsup > y->getSup() - cstx) {
+                deltaValueXsup = xsup;
+                x->projectSupCost(penalty);
+            }
+        }
+        if (y->unassigned()) {
+            Value yinf = y->getInf();
+            if (yinf != deltaValueYinf && yinf != deltaValueYsup && yinf < x->getInf() + cstx && yinf > x->getSup() - csty) {
+                deltaValueYinf = yinf;
+                y->projectInfCost(penalty);
+            }
+            Value ysup = y->getSup();
+            if (ysup != deltaValueYsup && ysup != deltaValueYinf && ysup < x->getInf() + cstx && ysup > x->getSup() - csty) {
+                deltaValueYsup = ysup;
+                y->projectSupCost(penalty);
+            }
+        }
+    }
+}
+
+bool Disjunction::verify()
+{
+    bool support = (x->getSup() >= y->getInf() + csty || y->getSup() >= x->getInf() + cstx);
+    Value xinf = x->getInf();
+    Value yinf = y->getInf();
+    Value xsup = x->getSup();
+    Value ysup = y->getSup();
+    support = support && (xinf >= yinf + csty || xinf <= ysup - cstx || deltaValueXinf == xinf);
+    support = support && (yinf >= xinf + cstx || yinf <= xsup - csty || deltaValueYinf == yinf);
+    support = support && (xsup >= yinf + csty || xsup <= ysup - cstx || deltaValueXsup == xsup);
+    support = support && (ysup >= xinf + cstx || ysup <= xsup - csty || deltaValueYsup == ysup);
+    if (!support) {
+        print(cout);
+        x->print(cout);
+        cout << endl;
+        y->print(cout);
+        cout << endl;
+        cout << " dxinf=" << deltaValueXinf << " dxsup=" << deltaValueXsup << " dyinf=" << deltaValueYinf << " dysup=" << deltaValueYsup << endl;
+    }
+    return support;
+}
+
+void SpecialDisjunction::propagate()
+{
+    if (ToulBar2::verbose >= 3) {
+        print(cout);
+        cout << "deltaCost= " << deltaCost << " dxinf=" << deltaValueXinf << " dxsup=" << deltaValueXsup << " dyinf=" << deltaValueYinf << " dysup=" << deltaValueYsup << endl;
+    }
+    wcsp->revise(this);
+    if (x->getSup() > xinfty)
+        x->decrease(xinfty);
+    if (y->getSup() > yinfty)
+        y->decrease(yinfty);
+    if ((x->getSup() < xinfty && y->getSup() < yinfty && (x->getInf() >= y->getSup() + csty || y->getInf() >= x->getSup() + cstx)) || (x->getInf() >= xinfty && y->getSup() < yinfty) || (y->getInf() >= yinfty && x->getSup() < xinfty)) {
+        // deconnect the constraint if always satisfied
+        assert(x->getInf() < xinfty || y->getSup() >= yinfty || deltaCost == costx);
+        assert(y->getInf() < yinfty || x->getSup() >= xinfty || deltaCost == costy);
+        deconnect();
+    } else if (x->getSup() < xinfty && y->getSup() < yinfty && x->getSup() < y->getInf() + csty && y->getSup() < x->getInf() + cstx) {
+        // backtrack if the constraint if always unsatisfied
+        THROWCONTRADICTION;
+    } else {
+        if (x->getInf() < xinfty && y->getInf() < yinfty) {
+            // IC0 propagatation (increase global lower bound)
+            if (min(x->getSup(), xinfty - 1) < y->getInf() + csty && min(y->getSup(), yinfty - 1) < x->getInf() + cstx) {
+                Cost cost = min(costx, costy) - deltaCost;
+                if (cost > MIN_COST) {
+                    deltaCost += cost;
+                    projectLB(cost);
+                }
+            }
+            // propagate hard constraint
+            if ((x->getSup() < xinfty || CUT(wcsp->getLb() + costx - deltaCost, wcsp->getUb())) && min(x->getSup(), xinfty - 1) < y->getInf() + csty) {
+                Value newInf = min(x->getInf() + cstx, yinfty);
+                if (y->getInf() < newInf)
+                    y->increase(newInf);
+                if (y->getSup() < yinfty) {
+                    Value newSup = y->getSup() - cstx;
+                    if (x->getSup() > newSup)
+                        x->decrease(newSup);
+                }
+            }
+            if ((y->getSup() < yinfty || CUT(wcsp->getLb() + costy - deltaCost, wcsp->getUb())) && min(y->getSup(), yinfty - 1) < x->getInf() + cstx) {
+                Value newInf = min(y->getInf() + csty, xinfty);
+                if (x->getInf() < newInf)
+                    x->increase(newInf);
+                if (x->getSup() < xinfty) {
+                    Value newSup = x->getSup() - csty;
+                    if (y->getSup() > newSup)
+                        y->decrease(newSup);
+                }
+            }
+            // BAC* propagation (increase unary costs of domain bounds)
+            if (x->unassigned() && y->getInf() < yinfty) {
+                Value xinf = x->getInf();
+                Cost cost = -((Cost)deltaCost);
+                if (xinf < y->getInf() + csty && xinf > min(y->getSup(), yinfty - 1) - cstx)
+                    cost += costy;
+                if (xinf == deltaValueXinf) {
+                    Cost delta = cost - deltaCostXinf;
+                    if (delta != MIN_COST) {
+                        deltaCostXinf = cost;
+                        x->projectInfCost(delta);
+                    }
+                } else {
+                    deltaValueXinf = xinf;
+                    deltaCostXinf = cost;
+                    x->projectInfCost(cost);
+                }
+            }
+            if (x->unassigned() && y->getInf() < yinfty) {
+                Value xsup = x->getSup();
+                Cost cost = -((Cost)deltaCost);
+                if (xsup == xinfty)
+                    cost += costx;
+                else if (xsup < y->getInf() + csty && xsup > min(y->getSup(), yinfty - 1) - cstx)
+                    cost += costy;
+                if (xsup == deltaValueXsup) {
+                    Cost delta = cost - deltaCostXsup;
+                    if (delta != MIN_COST) {
+                        deltaCostXsup = cost;
+                        x->projectSupCost(delta);
+                    }
+                } else {
+                    deltaValueXsup = xsup;
+                    deltaCostXsup = cost;
+                    x->projectSupCost(cost);
+                }
+            }
+            if (y->unassigned() && x->getInf() < xinfty) {
+                Value yinf = y->getInf();
+                Cost cost = -((Cost)deltaCost);
+                if (yinf < x->getInf() + cstx && yinf > min(x->getSup(), xinfty - 1) - csty)
+                    cost += costx;
+                if (yinf == deltaValueYinf) {
+                    Cost delta = cost - deltaCostYinf;
+                    if (delta != MIN_COST) {
+                        deltaCostYinf = cost;
+                        y->projectInfCost(delta);
+                    }
+                } else {
+                    deltaValueYinf = yinf;
+                    deltaCostYinf = cost;
+                    y->projectInfCost(cost);
+                }
+            }
+            if (y->unassigned() && x->getInf() < xinfty) {
+                Value ysup = y->getSup();
+                Cost cost = -((Cost)deltaCost);
+                if (ysup == yinfty)
+                    cost += costy;
+                else if (ysup < x->getInf() + cstx && ysup > min(x->getSup(), xinfty - 1) - csty)
+                    cost += costx;
+                if (ysup == deltaValueYsup) {
+                    Cost delta = cost - deltaCostYsup;
+                    if (delta != MIN_COST) {
+                        deltaCostYsup = cost;
+                        y->projectSupCost(delta);
+                    }
+                } else {
+                    deltaValueYsup = ysup;
+                    deltaCostYsup = cost;
+                    y->projectSupCost(cost);
+                }
+            }
+        }
+    }
+}
+
+bool SpecialDisjunction::verify()
+{
+    bool support = (x->getSup() >= xinfty || y->getSup() >= yinfty || x->getSup() >= y->getInf() + csty || y->getSup() >= x->getInf() + cstx);
+    Value xinf = x->getInf();
+    Value yinf = y->getInf();
+    Value xsup = x->getSup();
+    Value ysup = y->getSup();
+    support = support && (xinf >= xinfty || yinf >= yinfty || xinf >= yinf + csty || xinf <= ysup - cstx || deltaValueXinf == xinf);
+    support = support && (xinf >= xinfty || yinf >= yinfty || yinf >= xinf + cstx || yinf <= xsup - csty || deltaValueYinf == yinf);
+    support = support && (xsup >= xinfty || xsup >= yinf + csty || xsup <= ysup - cstx || deltaValueXsup == xsup);
+    support = support && (ysup >= yinfty || ysup >= xinf + cstx || ysup <= xsup - csty || deltaValueYsup == ysup);
+    if (!support) {
+        print(cout);
+        x->print(cout);
+        cout << endl;
+        y->print(cout);
+        cout << endl;
+        cout << "deltaCost= " << deltaCost << " dxinf=" << deltaValueXinf << " dxsup=" << deltaValueXsup << " dyinf=" << deltaValueYinf << " dysup=" << deltaValueYsup << endl;
+    }
+    return support;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2arithmetic.hpp b/code/include/tb2/core/tb2arithmetic.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..5181c6d7f1fc3e6847a512cefe73c8801860bc3f
--- /dev/null
+++ b/code/include/tb2/core/tb2arithmetic.hpp
@@ -0,0 +1,239 @@
+/** \file tb2arithmetic.hpp
+ *  \brief Binary arithmetic soft constraints.
+ *  \warning Value and Cost must be of the same type.
+ *
+ */
+
+#ifndef TB2ARITHMETIC_HPP_
+#define TB2ARITHMETIC_HPP_
+
+#include "tb2abstractconstr.hpp"
+#include "tb2intervar.hpp"
+
+/** semantic: \f$soft(penalty, x \in SetOfValues) : (x \in SetOfValues)?0:penalty\f$
+ */
+class Unary : public AbstractUnaryConstraint<IntervalVariable> {
+    set<Value> permitted;
+    Cost penalty;
+    StoreValue deltaValueXinf;
+    StoreValue deltaValueXsup;
+
+public:
+    Unary(WCSP* wcsp, IntervalVariable* xx, Value* d, int dsize, Cost penalty);
+
+    ~Unary() {}
+
+    void propagate();
+
+    void remove(int varIndex) {}
+
+    void assign(int varIndex)
+    {
+        assert(connected());
+        deconnect(); // Warning! deconnection has to be done before the projection
+        if (permitted.find(x->getValue()) == permitted.end()) {
+            projectLB(penalty);
+        }
+    }
+
+    bool verify();
+
+    double computeTightness()
+    {
+        tight = (double)penalty * abs((int)permitted.size() - (int)x->getDomainSize()) / x->getDomainSize();
+        return tight;
+    }
+
+    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+};
+
+/** semantic: \f$soft(x \geq y + cst) : max( (y + cst - x \leq deltamax)?(y + cst - x):top , 0)\f$
+ */
+class Supxyc : public AbstractBinaryConstraint<IntervalVariable, IntervalVariable> {
+    Value cst;
+    Value deltamax;
+    StoreCost deltaCost;
+    StoreValue deltaValueXinf;
+    StoreValue deltaValueYsup;
+    StoreCost deltaCostXinf;
+    StoreCost deltaCostYsup;
+
+public:
+    Supxyc(WCSP* wcsp, IntervalVariable* xx, IntervalVariable* yy, Value c, Value delta);
+
+    ~Supxyc() {}
+
+    void propagate();
+
+    void remove(int varIndex) {}
+
+    void assign(int varIndex)
+    {
+        if (x->assigned() && y->assigned())
+            deconnect();
+        propagate();
+    }
+
+    bool verify();
+
+    double computeTightness() { return 0; }
+
+    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+};
+
+/** semantic: \f$soft(penalty, x \geq y + csty \vee y \geq x + cstx) : (x \geq y + csty \vee y \geq x + cstx)?0:penalty\f$
+ */
+class Disjunction : public AbstractBinaryConstraint<IntervalVariable, IntervalVariable> {
+    Value cstx;
+    Value csty;
+    Cost penalty;
+    StoreValue deltaValueXinf;
+    StoreValue deltaValueYinf;
+    StoreValue deltaValueXsup;
+    StoreValue deltaValueYsup;
+
+public:
+    Disjunction(WCSP* wcsp, IntervalVariable* xx, IntervalVariable* yy, Value cxx, Value cyy,
+        Cost penalty);
+
+    ~Disjunction() {}
+
+    void propagate();
+
+    void remove(int varIndex) {}
+
+    bool verify();
+
+    double computeTightness() { return 0; }
+
+    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+};
+
+/** semantic:
+ * implicit hard constraint: \f$x \leq xinfty\f$
+ *
+ * implicit hard constraint: \f$y \leq yinfty\f$
+ *
+ * cost function definition:
+ * - \f$(x<xinfty \wedge y<yinfty \wedge (x \geq y + csty \vee y \geq x + cstx)): cost = 0\f$ (mutual exclusion between tasks x and y)
+ * - \f$x=xinfty \wedge y=yinfty: cost = costx + costy\f$ (both tasks x and y unselected)
+ * - \f$x=xinfty: cost = costx\f$ (task x unselected)
+ * - \f$y=yinfty: cost = costy\f$ (task y unselected)
+ * - else \f$cost = UB\f$ (task x and y must be selected but cannot be scheduled)
+ */
+class SpecialDisjunction : public AbstractBinaryConstraint<IntervalVariable, IntervalVariable> {
+    Value cstx;
+    Value csty;
+    Value xinfty;
+    Value yinfty;
+    Cost costx;
+    Cost costy;
+    StoreCost deltaCost;
+    StoreValue deltaValueXinf;
+    StoreValue deltaValueYinf;
+    StoreValue deltaValueXsup;
+    StoreValue deltaValueYsup;
+    StoreCost deltaCostXinf;
+    StoreCost deltaCostYinf;
+    StoreCost deltaCostXsup;
+    StoreCost deltaCostYsup;
+
+public:
+    SpecialDisjunction(WCSP* wcsp, IntervalVariable* xx, IntervalVariable* yy, Value cxx, Value cyy,
+        Value xmax, Value ymax, Cost xcost, Cost ycost);
+
+    ~SpecialDisjunction() {}
+
+    void propagate();
+
+    void remove(int varIndex) {}
+
+    void assign(int varIndex)
+    {
+        assert(connected());
+        wcsp->revise(this);
+        if (x->assigned() && y->assigned()) {
+            deconnect();
+            if (x->getValue() >= xinfty && y->getValue() >= yinfty && costx + costy > deltaCost) {
+                projectLB(costx + costy - deltaCost);
+            } else if (x->getValue() >= xinfty && y->getValue() < yinfty && costx > deltaCost) {
+                projectLB(costx - deltaCost);
+            } else if (y->getValue() >= yinfty && x->getValue() < xinfty && costy > deltaCost) {
+                projectLB(costy - deltaCost);
+            } else if (x->getValue() < xinfty && y->getValue() < yinfty && x->getValue() < y->getValue() + csty && y->getValue() < x->getValue() + cstx) {
+                THROWCONTRADICTION;
+            }
+        } else {
+            if (varIndex == 0 && x->getValue() >= xinfty) {
+                if (y->getInf() == deltaValueYinf) {
+                    Cost cost = deltaCostYinf;
+                    deltaCostYinf = MIN_COST;
+                    y->projectInfCost(-cost);
+                }
+                if (y->getSup() == deltaValueYsup) {
+                    Cost cost = deltaCostYsup;
+                    deltaCostYsup = MIN_COST;
+                    y->projectSupCost(-cost);
+                }
+                Cost cost = costx - deltaCost;
+                if (cost > MIN_COST) {
+                    deltaCost += cost;
+                    projectLB(cost);
+                }
+                if (y->getSup() < yinfty) {
+                    deconnect();
+                } else {
+                    assert(y->getSup() == yinfty);
+                    deltaValueYsup = yinfty;
+                    deltaCostYsup = costy;
+                    y->projectSupCost(costy);
+                }
+            } else if (varIndex == 1 && y->getValue() >= yinfty) {
+                if (x->getInf() == deltaValueXinf) {
+                    Cost cost = deltaCostXinf;
+                    deltaCostXinf = MIN_COST;
+                    x->projectInfCost(-cost);
+                }
+                if (x->getSup() == deltaValueXsup) {
+                    Cost cost = deltaCostXsup;
+                    deltaCostXsup = MIN_COST;
+                    x->projectSupCost(-cost);
+                }
+                Cost cost = costy - deltaCost;
+                if (cost > MIN_COST) {
+                    deltaCost += cost;
+                    projectLB(cost);
+                }
+                if (x->getSup() < xinfty) {
+                    deconnect();
+                } else {
+                    assert(x->getSup() == xinfty);
+                    deltaValueXsup = xinfty;
+                    deltaCostXsup = costx;
+                    x->projectSupCost(costx);
+                }
+            } else {
+                propagate();
+            }
+        }
+    }
+
+    bool verify();
+
+    double computeTightness() { return 0; }
+
+    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+};
+
+#endif /*TB2ARITHMETIC_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2binconstr.cpp b/code/include/tb2/core/tb2binconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ede2be36f82ad87955a68f711a0344b6989de9c3
--- /dev/null
+++ b/code/include/tb2/core/tb2binconstr.cpp
@@ -0,0 +1,260 @@
+/*
+ * ****** Binary constraint applied on variables with enumerated domains ******
+ */
+
+#include "tb2binconstr.hpp"
+#include "tb2wcsp.hpp"
+#include "search/tb2clusters.hpp"
+#include "tb2vacutils.hpp"
+
+/*
+ * Constructors and misc.
+ *
+ */
+
+BinaryConstraint::BinaryConstraint(WCSP* wcsp, EnumeratedVariable* xx, EnumeratedVariable* yy, vector<Cost>& tab)
+    : AbstractBinaryConstraint<EnumeratedVariable, EnumeratedVariable>(wcsp, xx, yy)
+    , sizeX(xx->getDomainInitSize())
+    , sizeY(yy->getDomainInitSize())
+{
+    deltaCostsX = vector<StoreCost>(sizeX, StoreCost(MIN_COST));
+    deltaCostsY = vector<StoreCost>(sizeY, StoreCost(MIN_COST));
+    assert(tab.size() == sizeX * sizeY);
+    supportX = vector<Value>(sizeX, y->getInf());
+    supportY = vector<Value>(sizeY, x->getInf());
+    trwsM = vector<Cost>(max(sizeX, sizeY), MIN_COST);
+
+    costs = vector<StoreCost>((size_t)sizeX * (size_t)sizeY, StoreCost(MIN_COST));
+
+    for (unsigned int a = 0; a < x->getDomainInitSize(); a++)
+        for (unsigned int b = 0; b < y->getDomainInitSize(); b++)
+            costs[a * sizeY + b] = tab[a * sizeY + b];
+
+    propagate();
+}
+
+BinaryConstraint::BinaryConstraint(WCSP* wcsp)
+    : AbstractBinaryConstraint<EnumeratedVariable, EnumeratedVariable>(wcsp)
+    , sizeX(0)
+    , sizeY(0)
+{
+    //	unsigned int maxdomainsize = wcsp->getMaxDomainSize();
+    //    deltaCostsX = vector<StoreCost>(maxdomainsize,StoreCost(MIN_COST,storeCost));
+    //    deltaCostsY = vector<StoreCost>(maxdomainsize,StoreCost(MIN_COST,storeCost));
+    //    supportX = vector<Value>(maxdomainsize,0);
+    //    supportY = vector<Value>(maxdomainsize,0);
+    linkX = new DLink<ConstraintLink>;
+    linkY = new DLink<ConstraintLink>;
+
+    //    costs = vector<StoreCost>(maxdomainsize*maxdomainsize,StoreCost(MIN_COST,storeCost));
+    //    for (unsigned int a = 0; a < maxdomainsize; a++)
+    //         for (unsigned int b = 0; b < maxdomainsize; b++)
+    //                costs[a * maxdomainsize + b] = MIN_COST;
+}
+
+void BinaryConstraint::print(ostream& os)
+{
+    os << this << " BinaryConstraint(" << x->getName() << "," << y->getName() << ")";
+    if (ToulBar2::weightedDegree)
+        os << "/" << getConflictWeight();
+    if (wcsp->getTreeDec())
+        os << "   cluster: " << getCluster();
+    if (ToulBar2::verbose >= 8) {
+        os << "supportX:[";
+        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+            os << " " << supportX[x->toIndex(*iterX)];
+        }
+        os << " ] supportY:[";
+        for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+            os << " " << supportY[y->toIndex(*iterY)];
+        }
+        os << " ]";
+    }
+    os << endl;
+    if (ToulBar2::verbose >= 5) {
+        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+            for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                os << " " << getCost(*iterX, *iterY);
+            }
+            os << endl;
+        }
+    }
+}
+
+void BinaryConstraint::dump(ostream& os, bool original)
+{
+    os << "2 " << ((original) ? (x->wcspIndex) : x->getCurrentVarId()) << " " << ((original) ? (y->wcspIndex) : y->getCurrentVarId()) << " " << MIN_COST << " " << x->getDomainSize() * y->getDomainSize() << endl;
+    int i = 0;
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX, i++) {
+        int j = 0;
+        for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY, j++) {
+            os << ((original) ? x->toIndex(*iterX) : i) << " " << ((original) ? y->toIndex(*iterY) : j) << " " << ((original) ? getCost(*iterX, *iterY) : min(wcsp->getUb(), getCost(*iterX, *iterY))) << endl;
+        }
+    }
+}
+
+void BinaryConstraint::dump_CFN(ostream& os, bool original)
+{
+    bool printed = false;
+    os << "\"F_" << ((original) ? (x->wcspIndex) : x->getCurrentVarId()) << "_" << ((original) ? (y->wcspIndex) : y->getCurrentVarId()) << "\":{\"scope\":[";
+    os << x->getName() << "," << y->getName() << "],";
+    os << "\"defaultcost\":" << MIN_COST << ",\n\"costs\":[\n";
+    int i = 0;
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX, i++) {
+        int j = 0;
+        for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY, j++) {
+            if (getCost(*iterX, *iterY) != MIN_COST) {
+                if (printed)
+                    os << ",\n";
+                os << ((original) ? x->toIndex(*iterX) : i) << "," << ((original) ? y->toIndex(*iterY) : j) << ","
+                   << ((original) ? wcsp->Cost2RDCost(getCost(*iterX, *iterY)) : wcsp->Cost2RDCost(min(wcsp->getUb(), getCost(*iterX, *iterY))));
+                printed = true;
+            } 
+        }
+    }
+    os << "\n]},\n";
+}
+
+/*
+ * Propagation methods
+ *
+ */
+bool BinaryConstraint::project(EnumeratedVariable* x, Value value, Cost cost, vector<StoreCost>& deltaCostsX)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "project(C" << getVar(0)->getName() << "," << getVar(1)->getName() << ", (" << x->getName() << "," << value << "), " << cost << ")" << endl), true));
+
+    // hard binary constraint costs are not changed
+    if (!CUT(cost + wcsp->getLb(), wcsp->getUb())) {
+        TreeDecomposition* td = wcsp->getTreeDec();
+        if (td)
+            td->addDelta(cluster, x, value, cost);
+        deltaCostsX[x->toIndex(value)] += cost; // Warning! Possible overflow???
+        assert(getCost(x, (EnumeratedVariable*)getVarDiffFrom(x), value, getVarDiffFrom(x)->getInf()) >= MIN_COST);
+        assert(getCost(x, (EnumeratedVariable*)getVarDiffFrom(x), value, getVarDiffFrom(x)->getSup()) >= MIN_COST);
+    }
+
+    Cost oldcost = x->getCost(value);
+    x->project(value, cost);
+#ifdef DEECOMPLETE
+    getVarDiffFrom(x)->queueDEE();
+#endif
+    return (x->getSupport() == value || SUPPORTTEST(oldcost, cost));
+}
+
+void BinaryConstraint::extend(EnumeratedVariable* x, Value value, Cost cost, vector<StoreCost>& deltaCostsX)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "extend(C" << getVar(0)->getName() << "," << getVar(1)->getName() << ", (" << x->getName() << "," << value << "), " << cost << ")" << endl), true));
+
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (td)
+        td->addDelta(cluster, x, value, -cost);
+
+    deltaCostsX[x->toIndex(value)] -= cost; // Warning! Possible overflow???
+    x->extend(value, cost);
+}
+
+void BinaryConstraint::permute(EnumeratedVariable* xin, Value a, Value b)
+{
+    EnumeratedVariable* yin = y;
+    if (xin != x)
+        yin = x;
+
+    vector<Cost> aux;
+    for (EnumeratedVariable::iterator ity = yin->begin(); ity != yin->end(); ++ity)
+        aux.push_back(getCost(xin, yin, a, *ity));
+    for (EnumeratedVariable::iterator ity = yin->begin(); ity != yin->end(); ++ity)
+        setcost(xin, yin, a, *ity, getCost(xin, yin, b, *ity));
+
+    vector<Cost>::iterator itc = aux.begin();
+    for (EnumeratedVariable::iterator ity = yin->begin(); ity != yin->end(); ++ity) {
+        setcost(xin, yin, b, *ity, *itc);
+        ++itc;
+    }
+}
+
+bool BinaryConstraint::isFunctional(EnumeratedVariable* xin, EnumeratedVariable* yin, map<Value, Value>& functional)
+{
+    assert(xin != yin);
+    assert(getIndex(xin) >= 0);
+    assert(getIndex(yin) >= 0);
+    bool isfunctional = true;
+    functional.clear();
+    for (EnumeratedVariable::iterator itx = xin->begin(); isfunctional && itx != xin->end(); ++itx) {
+        bool first = true;
+        for (EnumeratedVariable::iterator ity = yin->begin(); isfunctional && ity != yin->end(); ++ity) {
+            if (!CUT(getCost(xin, yin, *itx, *ity) + wcsp->getLb(), wcsp->getUb())) {
+                if (first) {
+                    functional[*itx] = *ity;
+                    first = false;
+                } else {
+                    isfunctional = false;
+                }
+            }
+        }
+        assert(!first); // assumes it is SAC already
+    }
+    if (isfunctional)
+        return true;
+    functional.clear();
+    return false;
+}
+
+pair<pair<Cost, Cost>, pair<Cost, Cost>> BinaryConstraint::getMaxCost(int varIndex, Value a, Value b)
+{
+    //    	cout << "getMaxCost(" << getVar(varIndex)->getName() << ") " << a << " <-> " << b << endl << *this << endl;
+    Cost maxcosta = MIN_COST;
+    Cost diffcosta = MIN_COST;
+    Cost maxcostb = MIN_COST;
+    Cost diffcostb = MIN_COST;
+    if (varIndex == 0) {
+        Cost ucosta = x->getCost(a);
+        Cost ucostb = x->getCost(b);
+        for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+            Cost costa = getCost(a, *iterY);
+            Cost costb = getCost(b, *iterY);
+            if (costa > maxcosta)
+                maxcosta = costa;
+            if (costb > maxcostb)
+                maxcostb = costb;
+            Cost ucosty = y->getCost(*iterY);
+            if (!CUT(ucostb + costb + ucosty + wcsp->getLb(), wcsp->getUb())) {
+                if (costa - costb > diffcosta)
+                    diffcosta = costa - costb;
+            }
+            if (!CUT(ucosta + costa + ucosty + wcsp->getLb(), wcsp->getUb())) {
+                if (costb - costa > diffcostb)
+                    diffcostb = costb - costa;
+            }
+        }
+    } else {
+        Cost ucosta = y->getCost(a);
+        Cost ucostb = y->getCost(b);
+        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+            Cost costa = getCost(*iterX, a);
+            Cost costb = getCost(*iterX, b);
+            if (costa > maxcosta)
+                maxcosta = costa;
+            if (costb > maxcostb)
+                maxcostb = costb;
+            Cost ucostx = x->getCost(*iterX);
+            if (!CUT(ucostb + costb + ucostx + wcsp->getLb(), wcsp->getUb())) {
+                if (costa - costb > diffcosta)
+                    diffcosta = costa - costb;
+            }
+            if (!CUT(ucosta + costa + ucostx + wcsp->getLb(), wcsp->getUb())) {
+                if (costb - costa > diffcostb)
+                    diffcostb = costb - costa;
+            }
+        }
+    }
+    assert(maxcosta >= diffcosta);
+    assert(maxcostb >= diffcostb);
+    return make_pair(make_pair(maxcosta, diffcosta), make_pair(maxcostb, diffcostb));
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2binconstr.hpp b/code/include/tb2/core/tb2binconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..9a38375bda111901dce3c8f82997073f0b3ba283
--- /dev/null
+++ b/code/include/tb2/core/tb2binconstr.hpp
@@ -0,0 +1,807 @@
+/** \file tb2binconstr.hpp
+ *  \brief Binary constraint applied on variables with enumerated domains.
+ *
+ */
+
+#ifndef TB2BINCONSTR_HPP_
+#define TB2BINCONSTR_HPP_
+
+#include "tb2abstractconstr.hpp"
+#include "tb2enumvar.hpp"
+#include "tb2wcsp.hpp"
+
+struct Functor_getCost {
+    BinaryConstraint& obj;
+    inline Functor_getCost(BinaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy) const;
+};
+struct Functor_getCostReverse {
+    BinaryConstraint& obj;
+    inline Functor_getCostReverse(BinaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vy, Value vx) const;
+};
+
+class BinaryConstraint : public AbstractBinaryConstraint<EnumeratedVariable, EnumeratedVariable> {
+protected:
+    unsigned int sizeX;
+    unsigned int sizeY;
+    vector<StoreCost> deltaCostsX;
+    vector<StoreCost> deltaCostsY;
+    vector<StoreCost> costs;
+
+    vector<Value> supportX;
+    vector<Value> supportY;
+
+    template <typename T>
+    void findSupport(T getCost, EnumeratedVariable* x, EnumeratedVariable* y,
+        vector<Value>& supportX, vector<StoreCost>& deltaCostsX);
+    template <typename T>
+    void findFullSupport(T getCost, EnumeratedVariable* x, EnumeratedVariable* y,
+        vector<Value>& supportX, vector<StoreCost>& deltaCostsX,
+        vector<Value>& supportY, vector<StoreCost>& deltaCostsY);
+    template <typename T>
+    void projection(T getCost, EnumeratedVariable* x, EnumeratedVariable* y, Value valueY, vector<StoreCost>& deltaCostsX);
+    template <typename T>
+    bool verify(T getCost, EnumeratedVariable* x, EnumeratedVariable* y);
+
+    // return true if unary support of x is broken
+    bool project(EnumeratedVariable* x, Value value, Cost cost, vector<StoreCost>& deltaCostsX);
+    void extend(EnumeratedVariable* x, Value value, Cost cost, vector<StoreCost>& deltaCostsX);
+
+    void findSupportX() { findSupport(Functor_getCost(*this), x, y, supportX, deltaCostsX); }
+    void findSupportY() { findSupport(Functor_getCostReverse(*this), y, x, supportY, deltaCostsY); }
+    void findFullSupportX() { findFullSupport(Functor_getCost(*this), x, y, supportX, deltaCostsX, supportY, deltaCostsY); }
+    void findFullSupportY() { findFullSupport(Functor_getCostReverse(*this), y, x, supportY, deltaCostsY, supportX, deltaCostsX); }
+    void projectX() { projection(Functor_getCost(*this), x, y, y->getValue(), deltaCostsX); }
+    void projectY() { projection(Functor_getCostReverse(*this), y, x, x->getValue(), deltaCostsY); }
+    bool verifyX() { return verify(Functor_getCost(*this), x, y); }
+    bool verifyY() { return verify(Functor_getCostReverse(*this), y, x); }
+    bool projectX(Value value, Cost cost) { return project(x, value, cost, deltaCostsX); }
+    bool projectY(Value value, Cost cost) { return project(y, value, cost, deltaCostsY); }
+    void extendX(Value value, Cost cost) { extend(x, value, cost, deltaCostsX); }
+    void extendY(Value value, Cost cost) { extend(y, value, cost, deltaCostsY); }
+
+public:
+    vector<Cost> trwsM;
+
+    BinaryConstraint(WCSP* wcsp, EnumeratedVariable* xx, EnumeratedVariable* yy, vector<Cost>& tab);
+
+    BinaryConstraint(WCSP* wcsp);
+
+    ~BinaryConstraint() {}
+
+    bool extension() const FINAL { return true; }
+    bool isBinary() const FINAL { return true; }
+
+    Cost getCost(Value vx, Value vy) const
+    {
+        unsigned int ix = x->toIndex(vx);
+        unsigned int iy = y->toIndex(vy);
+        Cost res = costs[ix * sizeY + iy];
+        //if (res >= wcsp->getUb() || res - deltaCostsX[ix] - deltaCostsY[iy] + wcsp->getLb() >= wcsp->getUb()) return wcsp->getUb();
+        res -= deltaCostsX[ix] + deltaCostsY[iy];
+        assert(res >= MIN_COST);
+        return res;
+    }
+    Cost getCostTRWS(Value vx, Value vy) const
+    {
+        unsigned int ix = x->toIndex(vx);
+        unsigned int iy = y->toIndex(vy);
+        return costs[ix * sizeY + iy] - (deltaCostsX[ix] + deltaCostsY[iy]);
+    }
+    void projectTRWS(EnumeratedVariable* var, Value value, Cost cost)
+    {
+        vector<StoreCost>& deltaCosts = (var == x) ? deltaCostsX : deltaCostsY;
+        deltaCosts[var->toIndex(value)] += cost;
+        var->project(value, cost, true);
+    }
+    Cost normalizeTRWS()
+    {
+        Cost minCost = numeric_limits<Cost>::max();
+        for (EnumeratedVariable::iterator xIter = x->begin(); xIter != x->end(); ++xIter) {
+            unsigned int ix = x->toIndex(*xIter);
+            for (EnumeratedVariable::iterator yIter = y->begin(); yIter != y->end(); ++yIter) {
+                unsigned int iy = y->toIndex(*yIter);
+                minCost = min<Cost>(minCost, costs[ix * sizeY + iy] - (deltaCostsX[ix] + deltaCostsY[iy]));
+            }
+        }
+        if (minCost != MIN_COST) {
+            for (EnumeratedVariable::iterator xIter = x->begin(); xIter != x->end(); ++xIter) {
+                unsigned int ix = x->toIndex(*xIter);
+                for (EnumeratedVariable::iterator yIter = y->begin(); yIter != y->end(); ++yIter) {
+                    unsigned int iy = y->toIndex(*yIter);
+                    costs[ix * sizeY + iy] -= minCost;
+                }
+            }
+        }
+        return minCost;
+    }
+
+    Cost getCost(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy)
+    {
+        unsigned int vindex[2];
+        vindex[getIndex(xx)] = xx->toIndex(vx);
+        vindex[getIndex(yy)] = yy->toIndex(vy);
+        Cost res = costs[vindex[0] * sizeY + vindex[1]];
+        //if (res >= wcsp->getUb() || res - deltaCostsX[vindex[0]] - deltaCostsY[vindex[1]] + wcsp->getLb() >= wcsp->getUb()) return wcsp->getUb();
+        res -= deltaCostsX[vindex[0]] + deltaCostsY[vindex[1]];
+        assert(res >= MIN_COST);
+        return res;
+    }
+
+    Cost getCost() FINAL
+    {
+        int vX = x->getValue();
+        int vY = y->getValue();
+        return getCost(vX, vY);
+    }
+
+    void addcost(Value vx, Value vy, Cost mincost)
+    {
+        assert(ToulBar2::verbose < 4 || ((cout << "addcost(C" << getVar(0)->getName() << "," << getVar(1)->getName() << "," << vx << "," << vy << "), " << mincost << ")" << endl), true));
+        assert(mincost >= MIN_COST || !LUBTEST(getCost(vx, vy), -mincost) || ToulBar2::isZ); // Warning! negative costs can be added temporally by variable elimination on the fly
+        unsigned int ix = x->toIndex(vx);
+        unsigned int iy = y->toIndex(vy);
+        costs[ix * sizeY + iy] += mincost;
+    }
+
+    void addcost(EnumeratedVariable* xin, EnumeratedVariable* yin, Value vx, Value vy, Cost mincost)
+    {
+        assert(ToulBar2::verbose < 4 || ((cout << "addcost(C" << xin->getName() << "," << yin->getName() << "," << vx << "," << vy << "), " << mincost << ")" << endl), true));
+        assert(mincost >= MIN_COST || !LUBTEST(getCost(xin, yin, vx, vy), -mincost));
+        if (xin == x) {
+            costs[x->toIndex(vx) * sizeY + y->toIndex(vy)] += mincost;
+        } else {
+            costs[x->toIndex(vy) * sizeY + y->toIndex(vx)] += mincost;
+        }
+    }
+
+    void setCost(Cost c)
+    {
+        for (unsigned int a = 0; a < sizeX; a++)
+            for (unsigned int b = 0; b < sizeY; b++)
+                costs[a * sizeY + b] = c;
+    }
+
+    void setcost(EnumeratedVariable* xin, EnumeratedVariable* yin, Value vx, Value vy, Cost mincost)
+    {
+        assert(ToulBar2::verbose < 4 || ((cout << "setcost(C" << xin->getName() << "," << yin->getName() << "," << vx << "," << vy << "), " << mincost << ")" << endl), true));
+        if (xin == x)
+            costs[x->toIndex(vx) * sizeY + y->toIndex(vy)] = mincost;
+        else
+            costs[x->toIndex(vy) * sizeY + y->toIndex(vx)] = mincost;
+    }
+
+    void setcost(Value vx, Value vy, Cost mincost)
+    {
+        assert(ToulBar2::verbose < 4 || ((cout << "setcost(C" << getVar(0)->getName() << "," << getVar(1)->getName() << "," << vx << "," << vy << "), " << mincost << ")" << endl), true));
+        costs[x->toIndex(vx) * sizeY + y->toIndex(vy)] = mincost;
+    }
+
+    void addCosts(EnumeratedVariable* xin, EnumeratedVariable* yin, vector<Cost>& costsin)
+    {
+        assert(ToulBar2::verbose < 4 || ((cout << "add binary cost vector to (C" << getVar(0)->getName() << "," << getVar(1)->getName() << ") " << costsin[0] << "," << costsin[1] << "," << costsin[2] << "," << costsin[3] << " ..." << endl), true));
+        assert(costsin.size() <= costs.size());
+        unsigned int ix, iy;
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+                ix = x->toIndex(*iterx);
+                iy = y->toIndex(*itery);
+                if (xin == x)
+                    costs[ix * sizeY + iy] += costsin[ix * sizeY + iy];
+                else
+                    costs[ix * sizeY + iy] += costsin[iy * sizeX + ix];
+            }
+        }
+    }
+
+    void addCosts(BinaryConstraint* xy)
+    {
+        assert(ToulBar2::verbose < 4 || ((cout << "add binary cost function to (C" << getVar(0)->getName() << "," << getVar(1)->getName() << ")" << endl), true));
+        assert(((x == xy->x) && (y == xy->y)) || ((x == xy->y) && (y == xy->x)));
+        unsigned int ix, iy;
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+                ix = x->toIndex(*iterx);
+                iy = y->toIndex(*itery);
+                Cost c = costs[ix * sizeY + iy];
+                //if(costs[ix * sizeY + iy] < wcsp->getUb()) //BUG with BTD: ub is only local, deltaCosts should be considered
+                {
+                    costs[ix * sizeY + iy] = c + xy->getCost(x, y, *iterx, *itery);
+                }
+            }
+        }
+    }
+
+    void clearCosts()
+    {
+        assert(ToulBar2::verbose < 4 || ((cout << "clear cost (C" << getVar(0)->getName() << "," << getVar(1)->getName() << ")" << endl), true));
+        for (unsigned int i = 0; i < sizeX; i++)
+            deltaCostsX[i] = MIN_COST;
+        for (unsigned int j = 0; j < sizeY; j++)
+            deltaCostsY[j] = MIN_COST;
+        for (unsigned int i = 0; i < sizeX; i++) {
+            for (unsigned int j = 0; j < sizeY; j++) {
+                costs[i * sizeY + j] = MIN_COST;
+            }
+        }
+    }
+
+    Cost getMaxFiniteCost()
+    {
+        Cost ub = wcsp->getUb();
+        Cost maxcost = MIN_COST;
+        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+            for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                Cost cost = getCost(*iterX, *iterY);
+                if (cost < ub && cost > maxcost)
+                    maxcost = cost;
+            }
+        }
+        return maxcost;
+    }
+
+    void setInfiniteCost(Cost ub)
+    {
+        Cost mult_ub = ((ub < (MAX_COST / MEDIUM_COST)) ? (max(LARGE_COST, ub * MEDIUM_COST)) : ub);
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            unsigned int ix = x->toIndex(*iterx);
+            for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+                unsigned int iy = y->toIndex(*itery);
+                Cost cost = costs[ix * sizeY + iy];
+                Cost delta = deltaCostsX[ix] + deltaCostsY[iy];
+                if (CUT(cost - delta, ub))
+                    costs[ix * sizeY + iy] = mult_ub + delta;
+            }
+        }
+    }
+
+    Cost evalsubstr(const Tuple& s, Constraint* ctr) FINAL
+    {
+        Value vals[2];
+        int count = 0;
+
+        for (int i = 0; i < 2; i++) {
+            EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+            int ind = ctr->getIndex(var);
+            if (ind >= 0) {
+                vals[i] = var->toValue(s[ind]);
+                count++;
+            }
+        }
+        if (count == 2)
+            return getCost(vals[0], vals[1]);
+        else
+            return MIN_COST;
+    }
+    Cost evalsubstr(const Tuple& s, NaryConstraint* ctr) FINAL { return evalsubstr(s, (Constraint*)ctr); } // NaryConstraint class undefined
+
+    void resetSupports()
+    {
+        supportX.assign(supportX.size(), y->getInf());
+        supportY.assign(supportY.size(), x->getInf());
+    }
+
+    Value getSupport(EnumeratedVariable* var, Value v)
+    {
+        if (var == x)
+            return supportX[x->toIndex(v)];
+        else
+            return supportY[y->toIndex(v)];
+    }
+
+    void setSupport(EnumeratedVariable* var, Value v, Value s)
+    {
+        if (var == x)
+            supportX[x->toIndex(v)] = s;
+        else
+            supportY[y->toIndex(v)] = s;
+    }
+
+    EnumeratedVariable* xvar;
+    EnumeratedVariable* yvar;
+    EnumeratedVariable::iterator itvx;
+    EnumeratedVariable::iterator itvy;
+
+    void first()
+    {
+        itvx = x->begin();
+        itvy = y->begin();
+        xvar = x;
+        yvar = y;
+    }
+
+    bool next(Tuple& t, Cost& c)
+    {
+        Tuple tch(2, 0);
+        if (itvx != xvar->end()) {
+            unsigned int ix = xvar->toIndex(*itvx);
+            tch[0] = ix;
+            if (itvy != yvar->end()) {
+                unsigned int iy = yvar->toIndex(*itvy);
+                tch[1] = iy;
+                t = tch;
+                c = getCost(xvar, yvar, *itvx, *itvy);
+                ++itvy;
+                return true;
+            } else {
+                ++itvx;
+                itvy = yvar->begin();
+                return next(t, c);
+            }
+        }
+        return false;
+    }
+
+    void firstlex() { first(); }
+    bool nextlex(Tuple& t, Cost& c) { return next(t, c); }
+
+    void setTuple(const Tuple& t, Cost c) FINAL
+    {
+        Value v0 = x->toValue(t[0]);
+        Value v1 = y->toValue(t[1]);
+        setcost(v0, v1, c);
+    }
+
+    void addtoTuple(const Tuple& t, Cost c) FINAL
+    {
+        Value v0 = x->toValue(t[0]);
+        Value v1 = y->toValue(t[1]);
+        addcost(v0, v1, c);
+    }
+
+    //    void setTuple( unsigned int* t, Cost c )  {
+    //        Value v0 = x->toValue(t[0]);
+    //        Value v1 = y->toValue(t[1]);
+    //        setcost( v0, v1, c );
+    //    }
+    //
+    //    void addtoTuple( unsigned int* t, Cost c )  {
+    //        Value v0 = x->toValue(t[0]);
+    //        Value v1 = y->toValue(t[1]);
+    //        addcost( v0, v1, c );
+    //    }
+
+    void fillElimConstr(EnumeratedVariable* xin, EnumeratedVariable* yin, Constraint* from1, Constraint* from2)
+    {
+        x = xin;
+        y = yin;
+        sizeX = x->getDomainInitSize();
+        sizeY = y->getDomainInitSize();
+        if (sizeX > deltaCostsX.size())
+            deltaCostsX.resize(sizeX, StoreCost(MIN_COST));
+        if (sizeY > deltaCostsY.size())
+            deltaCostsY.resize(sizeY, StoreCost(MIN_COST));
+        if (sizeX > supportX.size())
+            supportX.resize(sizeX);
+        if (sizeY > supportY.size())
+            supportY.resize(sizeY);
+        if (max(sizeX, sizeY) > trwsM.size())
+            trwsM.resize(max(sizeX, sizeY), MIN_COST);
+        if ((unsigned long)sizeX * (unsigned long)sizeY > costs.size())
+            costs.resize((size_t)sizeX * (size_t)sizeY, StoreCost(MIN_COST));
+        linkX->removed = true;
+        linkY->removed = true;
+        linkX->content.constr = this;
+        linkY->content.constr = this;
+        linkX->content.scopeIndex = 0;
+        linkY->content.scopeIndex = 1;
+        setDACScopeIndex();
+        resetConflictWeight();
+        elimFrom(from1, from2);
+    }
+
+    bool project(int varIndex, Value value, Cost cost)
+    {
+        if (varIndex == 0)
+            return projectX(value, cost);
+        else
+            return projectY(value, cost);
+    }
+    void extend(int varIndex, Value value, Cost cost)
+    {
+        if (varIndex == 0)
+            return extendX(value, cost);
+        else
+            return extendY(value, cost);
+    }
+
+    void propagate()
+    {
+        if (x->assigned()) {
+            assign(0);
+            return;
+        }
+        if (y->assigned()) {
+            assign(1);
+            return;
+        }
+        if (getDACScopeIndex() == 0) {
+            x->queueAC();
+            x->queueEAC1();
+            if (ToulBar2::LcLevel >= LC_DAC)
+                y->queueDAC();
+            else
+                y->queueAC();
+        } else {
+            y->queueAC();
+            y->queueEAC1();
+            if (ToulBar2::LcLevel >= LC_DAC)
+                x->queueDAC();
+            else
+                x->queueAC();
+        }
+        if (ToulBar2::FullEAC) {
+            reviseEACGreedySolution();
+            for (ConstraintList::iterator iter = x->getConstrs()->begin(); iter != x->getConstrs()->end(); ++iter) {
+                if ((*iter).constr->isTernary() && (*iter).constr->getIndex(y) >= 0) {
+                    (*iter).constr->reviseEACGreedySolution(); // all ternary cost functions including this current binary cost function need to be revised
+                }
+            }
+        }
+    }
+    void remove(int varIndex)
+    {
+        if (varIndex == 0)
+            y->queueDEE();
+        else
+            x->queueDEE();
+        if (ToulBar2::LcLevel == LC_AC) {
+            if (varIndex == 0)
+                findSupportY();
+            else
+                findSupportX();
+        } else {
+            if (getDACScopeIndex() == 0) {
+                if (varIndex == 0)
+                    findSupportY();
+            } else {
+                if (varIndex == 1)
+                    findSupportX();
+            }
+        }
+    }
+    void projectFromZero(int varIndex)
+    {
+        if (getDACScopeIndex() == 0) {
+            if (varIndex == 1)
+                findFullSupportX();
+        } else {
+            if (varIndex == 0)
+                findFullSupportY();
+        }
+    }
+    //Trick! instead of doing remove(index) now, let AC queue do the job.
+    //So several incdec events on the same constraint can be merged into one AC event
+    void increase(int index)
+    {
+        if (index == 0)
+            x->queueAC();
+        else
+            y->queueAC();
+    }
+    void decrease(int index)
+    {
+        if (index == 0)
+            x->queueAC();
+        else
+            y->queueAC();
+    } // Trick! instead of remove(index);
+    void assign(int varIndex)
+    {
+        deconnect(); // Warning! deconnection has to be done before the projection
+        if (varIndex == 0) {
+            projectY();
+        } else {
+            projectX();
+        }
+    }
+
+    bool checkEACGreedySolution(int index = -1, Value a = 0) FINAL
+    {
+        assert(x->canbe((getIndex(x) == index) ? a : x->getSupport()));
+        assert(x->getCost((getIndex(x) == index) ? a : x->getSupport()) == MIN_COST);
+        assert(y->canbe((getIndex(y) == index) ? a : y->getSupport()));
+        assert(y->getCost((getIndex(y) == index) ? a : y->getSupport()) == MIN_COST);
+        return (getCost((getIndex(x) == index) ? a : x->getSupport(), (getIndex(y) == index) ? a : y->getSupport()) == MIN_COST);
+    }
+
+    bool reviseEACGreedySolution(int index = -1, Value a = 0) FINAL
+    {
+        bool result = checkEACGreedySolution(index, a);
+        if (!result) {
+            if (index >= 0)
+                getVar(index)->unsetFullEAC();
+            else {
+                x->unsetFullEAC();
+                y->unsetFullEAC();
+            }
+        }
+        return result;
+    }
+
+    void fillEAC2(int varIndex)
+    {
+        assert(!isDuplicate());
+        if (getDACScopeIndex() == 0) {
+            if (varIndex == 0) {
+                assert(y->canbe(y->getSupport()));
+                unsigned int yindex = y->toIndex(y->getSupport());
+                if (x->cannotbe(supportY[yindex]) || x->getCost(supportY[yindex]) > MIN_COST || getCost(supportY[yindex], y->getSupport()) > MIN_COST || (ToulBar2::vacValueHeuristic && Store::getDepth() < abs(ToulBar2::vac))) {
+                    y->queueEAC2();
+                }
+            }
+        } else {
+            if (varIndex == 1) {
+                assert(x->canbe(x->getSupport()));
+                unsigned int xindex = x->toIndex(x->getSupport());
+                if (y->cannotbe(supportX[xindex]) || y->getCost(supportX[xindex]) > MIN_COST || getCost(x->getSupport(), supportX[xindex]) > MIN_COST || (ToulBar2::vacValueHeuristic && Store::getDepth() < abs(ToulBar2::vac))) {
+                    x->queueEAC2();
+                }
+            }
+        }
+    }
+
+    bool isEAC(int varIndex, Value a)
+    {
+        assert(!isDuplicate());
+        if (ToulBar2::QueueComplexity && varIndex == getDACScopeIndex() && !ToulBar2::FullEAC)
+            return true;
+        if (varIndex == 0) {
+            assert(y->canbe(y->getSupport()));
+            assert(y->getCost(y->getSupport()) == MIN_COST);
+            if (getCost(a, y->getSupport()) > MIN_COST) {
+                if (ToulBar2::FullEAC)
+                    x->unsetFullEAC();
+                unsigned int xindex = x->toIndex(a);
+                if (y->cannotbe(supportX[xindex]) || y->getCost(supportX[xindex]) > MIN_COST || getCost(a, supportX[xindex]) > MIN_COST) {
+                    for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                        if (y->getCost(*iterY) == MIN_COST && getCost(a, *iterY) == MIN_COST) {
+                            supportX[xindex] = *iterY;
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+            }
+        } else {
+            assert(x->canbe(x->getSupport()));
+            assert(x->getCost(x->getSupport()) == MIN_COST);
+            if (getCost(x->getSupport(), a) > MIN_COST) {
+                if (ToulBar2::FullEAC)
+                    y->unsetFullEAC();
+                unsigned int yindex = y->toIndex(a);
+                if (x->cannotbe(supportY[yindex]) || x->getCost(supportY[yindex]) > MIN_COST || getCost(supportY[yindex], a) > MIN_COST) {
+                    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+                        if (x->getCost(*iterX) == MIN_COST && getCost(*iterX, a) == MIN_COST) {
+                            supportY[yindex] = *iterX;
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+    void findFullSupportEAC(int varIndex)
+    {
+        assert(!isDuplicate());
+        if (ToulBar2::QueueComplexity && varIndex == getDACScopeIndex() && !ToulBar2::FullEAC)
+            return;
+        if (varIndex == 0)
+            findFullSupportX();
+        else
+            findFullSupportY();
+    }
+
+    bool verify()
+    {
+        if (ToulBar2::LcLevel == LC_DAC) {
+            if (getDACScopeIndex() == 0)
+                return verifyX();
+            else
+                return verifyY();
+        } else {
+            return verifyX() && verifyY();
+        }
+    }
+
+    pair<pair<Cost, Cost>, pair<Cost, Cost>> getMaxCost(int varIndex, Value a, Value b);
+
+    double computeTightness()
+    {
+        int count = 0;
+        double sum = 0;
+        Cost* costs = new Cost[x->getDomainSize() * y->getDomainSize()];
+        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+            for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                Cost c = getCost(*iterX, *iterY);
+                sum += to_double(min(wcsp->getUb(), c));
+                costs[count] = min(wcsp->getUb(), c);
+                count++;
+            }
+        }
+        if (ToulBar2::weightedTightness == 2) {
+            tight = to_double(stochastic_selection<Cost>(costs, 0, count - 1, count / 2));
+        } else {
+            tight = sum / (double)count;
+        }
+        delete[] costs;
+        return tight;
+    }
+
+    EnumeratedVariable* commonVar(BinaryConstraint* bctr)
+    {
+        if (getIndex(bctr->getVar(0)) >= 0)
+            return (EnumeratedVariable*)bctr->getVar(0);
+        else if (getIndex(bctr->getVar(1)) >= 0)
+            return (EnumeratedVariable*)bctr->getVar(1);
+        else
+            return NULL;
+    }
+
+    void permute(EnumeratedVariable* xin, Value a, Value b);
+
+    bool isFunctional(EnumeratedVariable* x, EnumeratedVariable* y, map<Value, Value>& functional);
+
+    virtual void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+    void dump_CFN(ostream& os, bool original = true);
+    Long size() const FINAL { return (Long)sizeX * sizeY; }
+    Long space() const FINAL { return (Long)sizeof(StoreCost) * sizeX * sizeY; }
+
+    friend struct Functor_getCost;
+    friend struct Functor_getCostReverse;
+};
+
+inline Cost Functor_getCost::operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    return obj.getCost(vx, vy);
+}
+inline Cost Functor_getCostReverse::operator()(EnumeratedVariable* yy, EnumeratedVariable* xx, Value vy, Value vx) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    return obj.getCost(vx, vy);
+}
+
+template <typename T>
+void BinaryConstraint::findSupport(T getCost, EnumeratedVariable* x, EnumeratedVariable* y,
+    vector<Value>& supportX, vector<StoreCost>& deltaCostsX)
+{
+    assert(connected());
+    wcsp->revise(this);
+    if (ToulBar2::verbose >= 3)
+        cout << "findSupport C" << x->getName() << "," << y->getName() << endl;
+    bool supportBroken = false;
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+        unsigned int xindex = x->toIndex(*iterX);
+        Value support = supportX[xindex];
+        if (y->cannotbe(support) || getCost(x, y, *iterX, support) > MIN_COST) {
+            Value minCostValue = y->getInf();
+            Cost minCost = getCost(x, y, *iterX, minCostValue);
+            EnumeratedVariable::iterator iterY = y->begin();
+            for (++iterY; minCost > MIN_COST && iterY != y->end(); ++iterY) {
+                Cost cost = getCost(x, y, *iterX, *iterY);
+                if (GLB(&minCost, cost)) {
+                    minCostValue = *iterY;
+                }
+            }
+            if (minCost > MIN_COST) {
+                supportBroken |= project(x, *iterX, minCost, deltaCostsX);
+                if (deconnected())
+                    return;
+            }
+            supportX[xindex] = minCostValue;
+        }
+    }
+    if (supportBroken) {
+        x->findSupport();
+    }
+}
+
+template <typename T>
+void BinaryConstraint::findFullSupport(T getCost, EnumeratedVariable* x, EnumeratedVariable* y,
+    vector<Value>& supportX, vector<StoreCost>& deltaCostsX,
+    vector<Value>& supportY, vector<StoreCost>& deltaCostsY)
+{
+    assert(connected());
+    wcsp->revise(this);
+    if (ToulBar2::verbose >= 3)
+        cout << "findFullSupport C" << x->getName() << "," << y->getName() << endl;
+    bool supportBroken = false;
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+        unsigned int xindex = x->toIndex(*iterX);
+        Value support = supportX[xindex];
+        if (y->cannotbe(support) || getCost(x, y, *iterX, support) + y->getCost(support) > MIN_COST) {
+            Value minCostValue = y->getInf();
+            Cost minCost = getCost(x, y, *iterX, minCostValue) + y->getCost(minCostValue);
+            EnumeratedVariable::iterator iterY = y->begin();
+            for (++iterY; minCost > MIN_COST && iterY != y->end(); ++iterY) {
+                Cost cost = getCost(x, y, *iterX, *iterY) + y->getCost(*iterY);
+                if (GLB(&minCost, cost)) {
+                    minCostValue = *iterY;
+                }
+            }
+            if (minCost > MIN_COST) {
+                // extend unary to binary
+                for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                    Cost cost = getCost(x, y, *iterX, *iterY);
+                    if (GLBTEST(minCost, cost)) {
+                        extend(y, *iterY, minCost - cost, deltaCostsY);
+                        supportY[y->toIndex(*iterY)] = *iterX;
+                        //                         if (ToulBar2::vac) {
+                        //                             x->queueVAC2();
+                        //                             y->queueVAC2();
+                        //                         }
+                    }
+                }
+                supportBroken |= project(x, *iterX, minCost, deltaCostsX);
+                if (deconnected())
+                    return;
+            }
+            supportX[xindex] = minCostValue;
+        }
+    }
+    if (supportBroken) {
+        x->findSupport();
+    }
+}
+
+template <typename T>
+void BinaryConstraint::projection(T getCost, EnumeratedVariable* x, EnumeratedVariable* y, Value valueY, vector<StoreCost>& deltaCostsX)
+{
+    x->queueDEE();
+    bool supportBroken = false;
+    wcsp->revise(this);
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+        Cost cost = getCost(x, y, *iterX, valueY);
+        if (cost > MIN_COST) {
+            supportBroken |= project(x, *iterX, cost, deltaCostsX);
+        }
+    }
+    if (supportBroken) {
+        x->findSupport();
+    }
+}
+
+template <typename T>
+bool BinaryConstraint::verify(T getCost, EnumeratedVariable* x, EnumeratedVariable* y)
+{
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+        Cost minCost = getCost(x, y, *iterX, y->getInf());
+        if (ToulBar2::LcLevel >= LC_DAC && getDACScopeIndex() == getIndex(x))
+            minCost += y->getCost(y->getInf());
+        EnumeratedVariable::iterator iterY = y->begin();
+        for (++iterY; minCost > MIN_COST && iterY != y->end(); ++iterY) {
+            Cost cost = getCost(x, y, *iterX, *iterY);
+            if (ToulBar2::LcLevel >= LC_DAC && getDACScopeIndex() == getIndex(x))
+                cost += y->getCost(*iterY);
+            GLB(&minCost, cost);
+        }
+        if (minCost > MIN_COST) {
+            cout << *this;
+            return false;
+        }
+    }
+    return true;
+}
+
+#endif /*TB2BINCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2clause.hpp b/code/include/tb2/core/tb2clause.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..dd9f19359e1e6c1f0ba9c6f7966eae12099c6a0a
--- /dev/null
+++ b/code/include/tb2/core/tb2clause.hpp
@@ -0,0 +1,576 @@
+#ifndef TB2WCLAUSE_HPP_
+#define TB2WCLAUSE_HPP_
+
+#include "tb2abstractconstr.hpp"
+#include "tb2ternaryconstr.hpp"
+#include "tb2enumvar.hpp"
+#include "tb2wcsp.hpp"
+#include <numeric>
+
+// warning! we assume binary variables
+class WeightedClause : public AbstractNaryConstraint {
+    Cost cost; // clause weight
+    Tuple tuple; // forbidden assignment corresponding to the negation of the clause
+    StoreCost lb; // projected cost to problem lower bound (if it is zero then all deltaCosts must be zero)
+    vector<StoreCost> deltaCosts; // extended costs from unary costs to the cost function
+    int support; // index of a variable in the scope with a zero unary cost on its value which satisfies the clause
+    StoreInt nonassigned; // number of non-assigned variables during search, must be backtrackable!
+    vector<Long> conflictWeights; // used by weighted degree heuristics
+    bool zeros; // true if all deltaCosts are zero (temporally used by first/next)
+    bool done; // should be true after one call to next
+
+    Value getTuple(int i) { return scope[i]->toValue(tuple[i]); }
+    Value getClause(int i) { return scope[i]->toValue(!(tuple[i])); }
+    void projectLB(Cost c)
+    {
+        lb += c;
+        assert(lb <= cost);
+        Constraint::projectLB(c);
+    }
+    void extend(Cost c)
+    {
+        for (int i = 0; i < arity_; i++) {
+            EnumeratedVariable* x = scope[i];
+            if (x->unassigned()) {
+                deltaCosts[i] += c;
+                Value v = getClause(i);
+                TreeDecomposition* td = wcsp->getTreeDec();
+                if (td)
+                    td->addDelta(cluster, x, v, -c);
+                x->extend(v, c);
+            } else
+                assert(x->getValue() == getTuple(i));
+        }
+        projectLB(c);
+    }
+    void satisfied(int varIndex)
+    {
+        nonassigned = 0;
+        assert(scope[varIndex]->assigned());
+        assert(scope[varIndex]->getValue() == getClause(varIndex));
+        assert(deltaCosts[varIndex] == lb);
+        for (int i = 0; i < arity_; i++) {
+            EnumeratedVariable* x = scope[i];
+            assert(deconnected(i));
+            if (i != varIndex) {
+                Cost c = deltaCosts[i];
+                Value v = getClause(i);
+                if (c > MIN_COST) {
+                    deltaCosts[i] = MIN_COST;
+                    if (x->unassigned()) {
+                        if (!CUT(c + wcsp->getLb(), wcsp->getUb())) {
+                            TreeDecomposition* td = wcsp->getTreeDec();
+                            if (td)
+                                td->addDelta(cluster, x, v, c);
+                        }
+                        x->project(v, c, true);
+                        x->findSupport();
+                    } else {
+                        if (x->canbe(v)) {
+                            Constraint::projectLB(c);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+public:
+    // warning! give the negation of the clause as input
+    WeightedClause(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in, Cost cost_in = MIN_COST, Tuple tuple_in = Tuple())
+        : AbstractNaryConstraint(wcsp, scope_in, arity_in)
+        , cost(cost_in)
+        , tuple(tuple_in)
+        , lb(MIN_COST)
+        , support(0)
+        , nonassigned(arity_in)
+        , zeros(true)
+        , done(false)
+    {
+        if (tuple_in.empty() && arity_in > 0)
+            tuple = Tuple(arity_in, 0);
+        deltaCosts = vector<StoreCost>(arity_in, StoreCost(MIN_COST));
+        for (int i = 0; i < arity_in; i++) {
+            assert(scope_in[i]->getDomainInitSize() == 2);
+            conflictWeights.push_back(0);
+        }
+    }
+
+    virtual ~WeightedClause() {}
+
+    void setTuple(const Tuple& tin, Cost c) FINAL
+    {
+        cost = c;
+        tuple = tin;
+    }
+
+    bool extension() const FINAL { return false; } // TODO: allows functional variable elimination but not other preprocessing
+    Long size() const FINAL
+    {
+        Cost sumdelta = ((lb > MIN_COST) ? accumulate(deltaCosts.begin(), deltaCosts.end(), -lb) : MIN_COST);
+        if (sumdelta == MIN_COST)
+            return 1;
+        return getDomainSizeProduct();
+    }
+
+    void reconnect()
+    {
+        if (deconnected()) {
+            nonassigned = arity_;
+            AbstractNaryConstraint::reconnect();
+        }
+    }
+    int getNonAssigned() const { return nonassigned; }
+
+    Long getConflictWeight() const { return Constraint::getConflictWeight(); }
+    Long getConflictWeight(int varIndex) const
+    {
+        assert(varIndex >= 0);
+        assert(varIndex < arity_);
+        return conflictWeights[varIndex] + Constraint::getConflictWeight();
+    }
+    void incConflictWeight(Constraint* from)
+    {
+        //assert(fromElim1==NULL);
+        //assert(fromElim2==NULL);
+        if (from == this) {
+            Constraint::incConflictWeight(1);
+        } else if (deconnected()) {
+            for (int i = 0; i < from->arity(); i++) {
+                int index = getIndex(from->getVar(i));
+                if (index >= 0) { // the last conflict constraint may be derived from two binary constraints (boosting search), each one derived from an n-ary constraint with a scope which does not include parameter constraint from
+                    assert(index < arity_);
+                    conflictWeights[index]++;
+                }
+            }
+        }
+    }
+
+    void resetConflictWeight()
+    {
+        conflictWeights.assign(conflictWeights.size(), 0);
+        Constraint::resetConflictWeight();
+    }
+
+    bool universal()
+    {
+        if (cost != MIN_COST || lb != MIN_COST)
+            return false;
+        for (int i = 0; i < arity_; i++)
+            if (deltaCosts[i] != MIN_COST)
+                return false;
+        return true;
+    }
+
+    Cost eval(const Tuple& s)
+    {
+        if (lb == MIN_COST && tuple[support] != s[support]) {
+            assert(accumulate(deltaCosts.begin(), deltaCosts.end(), -lb) == MIN_COST);
+            return MIN_COST;
+        } else {
+            Cost res = -lb;
+            bool istuple = true;
+            for (int i = 0; i < arity_; i++) {
+                if (tuple[i] != s[i]) {
+                    res += deltaCosts[i];
+                    istuple = false;
+                }
+            }
+            if (istuple)
+                res += cost;
+            assert(res >= MIN_COST);
+            return res;
+        }
+    }
+    Cost evalsubstr(const Tuple& s, Constraint* ctr) FINAL { return evalsubstrAny(s, ctr); }
+    Cost evalsubstr(const Tuple& s, NaryConstraint* ctr) FINAL { return evalsubstrAny(s, ctr); }
+    template <class T>
+    Cost evalsubstrAny(const Tuple& s, T* ctr)
+    {
+        int count = 0;
+
+        for (int i = 0; i < arity_; i++) {
+            int ind = ctr->getIndex(getVar(i));
+            if (ind >= 0) {
+                evalTuple[i] = s[ind];
+                count++;
+            }
+        }
+        assert(count <= arity_);
+
+        Cost cost;
+        if (count == arity_)
+            cost = eval(evalTuple);
+        else
+            cost = MIN_COST;
+
+        return cost;
+    }
+    Cost getCost() FINAL
+    {
+        for (int i = 0; i < arity_; i++) {
+            EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+            evalTuple[i] = var->toIndex(var->getValue());
+        }
+        return eval(evalTuple);
+    }
+
+    double computeTightness() { return 1.0 * cost / getDomainSizeProduct(); }
+
+    pair<pair<Cost, Cost>, pair<Cost, Cost>> getMaxCost(int index, Value a, Value b)
+    {
+        Cost sumdelta = ((lb > MIN_COST) ? accumulate(deltaCosts.begin(), deltaCosts.end(), -lb) : MIN_COST);
+        bool supporta = (getClause(index) == a);
+        Cost maxcosta = max((supporta) ? MIN_COST : (cost - lb), sumdelta - ((supporta) ? MIN_COST : (Cost)deltaCosts[index]));
+        Cost maxcostb = max((supporta) ? (cost - lb) : MIN_COST, sumdelta - ((supporta) ? (Cost)deltaCosts[index] : MIN_COST));
+        return make_pair(make_pair(maxcosta, maxcosta), make_pair(maxcostb, maxcostb));
+    }
+
+    void first()
+    {
+        zeros = all_of(deltaCosts.begin(), deltaCosts.end(), [](Cost c) { return c == MIN_COST; });
+        done = false;
+        if (!zeros)
+            firstlex();
+    }
+    bool next(Tuple& t, Cost& c)
+    {
+        if (!zeros)
+            return nextlex(t, c);
+        if (done)
+            return false;
+        t = tuple;
+        c = cost - lb;
+        done = true;
+        return true;
+    }
+
+    Cost getMaxFiniteCost()
+    {
+        Cost sumdelta = ((lb > MIN_COST) ? accumulate(deltaCosts.begin(), deltaCosts.end(), -lb) : MIN_COST);
+        if (CUT(sumdelta, wcsp->getUb()))
+            return MAX_COST;
+        if (CUT(cost, wcsp->getUb()))
+            return sumdelta;
+        else
+            return max(sumdelta, cost - lb);
+    }
+    void setInfiniteCost(Cost ub)
+    {
+        Cost mult_ub = ((ub < (MAX_COST / MEDIUM_COST)) ? (max(LARGE_COST, ub * MEDIUM_COST)) : ub);
+        if (CUT(cost, ub))
+            cost = mult_ub;
+    }
+
+    void assign(int varIndex)
+    {
+        if (connected(varIndex)) {
+            deconnect(varIndex);
+            nonassigned = nonassigned - 1;
+            assert(nonassigned >= 0);
+
+            if (scope[varIndex]->getValue() == getClause(varIndex)) {
+                deconnect();
+                satisfied(varIndex);
+                return;
+            }
+
+            if (nonassigned <= 3) {
+                deconnect();
+                projectNary();
+            } else {
+                if (ToulBar2::FullEAC)
+                    reviseEACGreedySolution();
+            }
+        }
+    }
+
+    // propagates the minimum between the remaining clause weight and unary costs of all literals to the problem lower bound
+    void propagate()
+    {
+        Cost mincost = (connected() && scope[support]->unassigned()) ? scope[support]->getCost(getClause(support)) : MAX_COST;
+        for (int i = 0; connected() && i < arity_; i++) {
+            EnumeratedVariable* x = scope[i];
+            if (x->assigned()) {
+                assign(i);
+            } else if (mincost > MIN_COST) {
+                Cost ucost = x->getCost(getClause(i));
+                if (ucost < mincost) {
+                    mincost = ucost;
+                    support = i;
+                }
+            }
+        }
+        if (connected() && mincost < MAX_COST && mincost > MIN_COST && cost > lb) {
+            extend(min(cost - lb, mincost));
+        }
+    };
+
+    bool verify()
+    {
+        Tuple t;
+        Cost c;
+        firstlex();
+        while (nextlex(t, c)) {
+            if (c == MIN_COST)
+                return true;
+        }
+        return false;
+    }
+    void increase(int index) {}
+    void decrease(int index) {}
+    void remove(int index) {}
+    void projectFromZero(int index)
+    {
+        if (index == support && cost > lb)
+            propagate();
+    }
+
+    bool checkEACGreedySolution(int index = -1, Value supportValue = 0) FINAL
+    {
+        bool zerolb = (lb == MIN_COST);
+        if (zerolb && getTuple(support) != ((support == index) ? supportValue : getVar(support)->getSupport())) {
+            assert(accumulate(deltaCosts.begin(), deltaCosts.end(), -lb) == MIN_COST);
+            return true;
+        } else {
+            Cost res = -lb;
+            bool istuple = true;
+            for (int i = 0; i < arity_; i++) {
+                if (getTuple(i) != ((i == index) ? supportValue : getVar(i)->getSupport())) {
+                    res += deltaCosts[i];
+                    istuple = false;
+                    if (zerolb) {
+                        assert(res == MIN_COST);
+                        assert(accumulate(deltaCosts.begin(), deltaCosts.end(), -lb) == MIN_COST);
+                        return true;
+                    }
+                }
+            }
+            if (istuple)
+                res += cost;
+            assert(res >= MIN_COST);
+            return (res == MIN_COST);
+        }
+    }
+
+    bool reviseEACGreedySolution(int index = -1, Value supportValue = 0) FINAL
+    {
+        bool result = checkEACGreedySolution(index, supportValue);
+        if (!result) {
+            if (index >= 0) {
+                getVar(index)->unsetFullEAC();
+            } else {
+                int a = arity();
+                for (int i = 0; i < a; i++) {
+                    getVar(i)->unsetFullEAC();
+                }
+            }
+        }
+        return result;
+    }
+
+    void print(ostream& os)
+    {
+        os << endl
+           << this << " clause(";
+
+        int unassigned_ = 0;
+        for (int i = 0; i < arity_; i++) {
+            if (scope[i]->unassigned())
+                unassigned_++;
+            if (getClause(i) == 0)
+                os << "-";
+            os << wcsp->getName(scope[i]->wcspIndex);
+            if (i < arity_ - 1)
+                os << ",";
+        }
+        os << ") s:" << support << " / " << cost << " - " << lb << " (";
+        for (int i = 0; i < arity_; i++) {
+            os << deltaCosts[i];
+            if (i < arity_ - 1)
+                os << ",";
+        }
+        os << ") ";
+        if (ToulBar2::weightedDegree) {
+            os << "/" << getConflictWeight();
+            for (int i = 0; i < arity_; i++) {
+                os << "," << conflictWeights[i];
+            }
+        }
+        os << " arity: " << arity_;
+        os << " unassigned: " << (int)nonassigned << "/" << unassigned_ << endl;
+    }
+
+    void dump(ostream& os, bool original = true)
+    {
+        Cost maxdelta = MIN_COST;
+        for (vector<StoreCost>::iterator it = deltaCosts.begin(); it != deltaCosts.end(); ++it) {
+            Cost d = (*it);
+            if (d > maxdelta)
+                maxdelta = d;
+        }
+        if (original) {
+            os << arity_;
+            for (int i = 0; i < arity_; i++)
+                os << " " << scope[i]->wcspIndex;
+            if (maxdelta == MIN_COST) {
+                os << " " << 0 << " " << 1 << endl;
+                for (int i = 0; i < arity_; i++) {
+                    os << tuple[i] << " ";
+                }
+                os << cost << endl;
+            } else {
+                os << " " << 0 << " " << getDomainSizeProduct() << endl;
+                Tuple t;
+                Cost c;
+                firstlex();
+                while (nextlex(t, c)) {
+                    for (int i = 0; i < arity_; i++) {
+                        os << t[i] << " ";
+                    }
+                    os << c << endl;
+                }
+            }
+        } else {
+            os << nonassigned;
+            for (int i = 0; i < arity_; i++)
+                if (scope[i]->unassigned())
+                    os << " " << scope[i]->getCurrentVarId();
+            if (maxdelta == MIN_COST) {
+                os << " " << 0 << " " << 1 << endl;
+                for (int i = 0; i < arity_; i++) {
+                    if (scope[i]->unassigned())
+                        os << scope[i]->toCurrentIndex(scope[i]->toValue(tuple[i])) << " ";
+                }
+                os << min(wcsp->getUb(), cost) << endl;
+            } else {
+                os << " " << 0 << " " << getDomainSizeProduct() << endl;
+                Tuple t;
+                Cost c;
+                firstlex();
+                while (nextlex(t, c)) {
+                    for (int i = 0; i < arity_; i++) {
+                        if (scope[i]->unassigned())
+                            os << scope[i]->toCurrentIndex(scope[i]->toValue(t[i])) << " ";
+                    }
+                    os << min(wcsp->getUb(), c) << endl;
+                }
+            }
+        }
+    }
+
+    void dump_CFN(ostream& os, bool original = true)
+    {
+        bool printed = false;
+        os << "\"F_";
+
+        Cost maxdelta = MIN_COST;
+        for (vector<StoreCost>::iterator it = deltaCosts.begin(); it != deltaCosts.end(); ++it) {
+            Cost d = (*it);
+            if (d > maxdelta)
+                maxdelta = d;
+        }
+        if (original) {
+            printed = false;
+            for (int i = 0; i < arity_; i++) {
+                if (printed)
+                    os << "_";
+                os << scope[i]->wcspIndex;
+                printed = true;
+            }
+
+            os << "\":{\"scope\":[";
+            printed = false;
+            for (int i = 0; i < arity_; i++) {
+                if (printed)
+                    os << ",";
+                os << scope[i]->getName();
+                printed = true;
+            }
+            os << "],\"defaultcost\":" << wcsp->Cost2RDCost(MIN_COST) << ",\n\"costs\":[";
+
+            if (maxdelta == MIN_COST) {
+                printed = false;
+                for (int i = 0; i < arity_; i++) {
+                    if (printed)
+                        os << ",";
+                    os << ((scope[i]->isValueNames()) ? scope[i]->getValueName(tuple[i]) : std::to_string(tuple[i]));
+                    printed = true;
+                }
+                os << "," << wcsp->Cost2RDCost(cost);
+            } else {
+                Tuple t;
+                Cost c;
+                printed = false;
+                firstlex();
+                while (nextlex(t, c)) {
+                    os << endl;
+                    for (int i = 0; i < arity_; i++) {
+                        if (printed)
+                            os << ",";
+                        os << ((scope[i]->isValueNames()) ? scope[i]->getValueName(t[i]) : std::to_string(t[i]));
+                        printed = true;
+                   }
+                   os << "," << wcsp->Cost2RDCost(c);
+                }
+            }
+        } else {
+            for (int i = 0; i < arity_; i++)
+                if (scope[i]->unassigned()) {
+                    if (printed)
+                        os << "_";
+                    os << scope[i]->getCurrentVarId();
+                    printed = true;
+                }
+            os << "\":{\"scope\":[";
+            printed = false;
+            for (int i = 0; i < arity_; i++)
+                if (scope[i]->unassigned()) {
+                    if (printed)
+                        os << ",";
+                    os << scope[i]->getName();
+                    printed = true;
+                }
+            os << "],\"defaultcost\":" << wcsp->Cost2RDCost(MIN_COST) << ",\n\"costs\":[";
+
+            if (maxdelta == MIN_COST) {
+                printed = false;
+                for (int i = 0; i < arity_; i++) {
+                    if (scope[i]->unassigned()) {
+                        if (printed)
+                            os << ",";
+                        os << scope[i]->toCurrentIndex(scope[i]->toValue(tuple[i]));
+                        printed = true;
+                    }
+                }
+                os << "," << wcsp->Cost2RDCost(min(wcsp->getUb(), cost));
+            } else {
+                Tuple t;
+                Cost c;
+                printed = false;
+                firstlex();
+                while (nextlex(t, c)) {
+                    os << endl;
+                    for (int i = 0; i < arity_; i++) {
+                        if (scope[i]->unassigned()) {
+                            if (printed)
+                                os << ",";
+                            os << scope[i]->toCurrentIndex(scope[i]->toValue(t[i]));
+                            printed = true;
+                        }
+                    }
+                    os << "," << wcsp->Cost2RDCost(min(wcsp->getUb(), c));
+                }
+            }
+        }
+        os << "]},\n";
+    }
+};
+#endif /*TB2WCLAUSE_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2clqcover.cpp b/code/include/tb2/core/tb2clqcover.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..73bffce4fb22618d126f12d077e4dbdbdd1f48c1
--- /dev/null
+++ b/code/include/tb2/core/tb2clqcover.cpp
@@ -0,0 +1,628 @@
+/*----------------------------------------------------------------------
+ *
+ * Clique constraint
+ *
+ * Typically redundant constraint. Given a set of a variables, a set
+ * of values V(i) for each variable (i) and a constant rhs, ensure
+ * that at most rhs variables get a value from the set v(i)
+ */
+
+#include "tb2clqcover.hpp"
+#include "search/tb2clusters.hpp"
+
+//#define PROPAGATE_CLIQUE_WITH_BINARIES
+
+int CliqueConstraint::nextid{ 0 };
+
+CliqueConstraint::CliqueConstraint(WCSP* wcsp, EnumeratedVariable** scope_in,
+    int arity_in, vector<vector<int>> clq_in,
+    int rhs_in)
+    : AbstractNaryConstraint(wcsp, scope_in, arity_in)
+    , clqvals(clq_in)
+    , rhs(rhs_in)
+    , lb(MIN_COST)
+    , all0(MIN_COST)
+    , num1(0)
+    , carity(arity_in)
+{
+    inclq.resize(arity_);
+    for (int i = 0; i != arity_; ++i) {
+        conflictWeights.push_back(0);
+        inclq[i].resize(scope[i]->getDomainInitSize());
+        for (int v : clqvals[i]) {
+            assert(static_cast<size_t>(v) < inclq[i].size());
+            inclq[i][v] = true;
+        }
+        auto* x = scope[i];
+        if (x->assigned()) {
+            if (inclq[i][x->toIndex(x->getValue())]) {
+                num1 += 1;
+                if (num1 == rhs)
+                    deconnect();
+                return;
+            }
+            deconnect(i);
+            carity -= 1;
+        }
+        for (auto val : *x) {
+            int vindex = x->toIndex(val);
+            if (!inclq[i][vindex])
+                nonclqvals[i].push_back(vindex);
+        }
+    }
+    id = nextid++;
+    if (rhs != 1) {
+        cout << "Unsupported: rhs == " << rhs << "\n";
+        exit(1);
+    }
+}
+
+CliqueConstraint::CliqueConstraint(WCSP* wcsp, EnumeratedVariable** scope_in,
+    int arity_in)
+    : AbstractNaryConstraint(wcsp, scope_in, arity_in)
+    , lb(MIN_COST)
+    , all0(MIN_COST)
+    , num1(0)
+    , carity(arity_in)
+{
+    id = nextid++;
+}
+
+CliqueConstraint::~CliqueConstraint()
+{
+}
+
+std::ostream& CliqueConstraint::printstate(std::ostream& os)
+{
+    os << endl
+       << this << " clique cut: ";
+    os << "all0 = " << all0 << " carity = " << carity << " run = " << run
+       << " id = " << id << " connected = " << connected()
+       << " depth = " << Store::getDepth() << "\n";
+    for (int i = 0; i != arity_; ++i) {
+        auto* x = scope[i];
+        if (connected(i))
+            os << " * ";
+        else
+            os << "   ";
+        os << x->getName();
+        x->print(os);
+        if (x->assigned() && connected(i))
+            os << "*****";
+        os << "\n";
+    }
+    return os;
+}
+
+void CliqueConstraint::propagate()
+{
+    if (bc.empty()) {
+        assert(Store::getDepth() == 0);
+        initialize_binary();
+    }
+    propagate_incremental();
+}
+
+void CliqueConstraint::propagate_incremental()
+{
+    ++run;
+    static const bool debug{ false };
+
+    if (!connected())
+        return;
+
+    if (debug) {
+        cout << "--------------------------------------------------\n";
+        cout << "Propagator id = " << id << " run = " << run << "\n";
+    }
+
+    get_current_scope(current_scope, current_scope_idx);
+    if (debug)
+        cout << "carity = " << carity << "\n"
+             << state{ this } << "\n";
+
+    handle_low_arity();
+    if (!connected()) // handle_low_arity may disconnect
+        return;
+    assert(carity > 0);
+
+    wcsp->revise(this);
+    gather_unary_0s();
+#ifdef PROPAGATE_CLIQUE_WITH_BINARIES
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (!td)
+        gather_binary(); // Warning! does not work with tree decomposition-based methods
+#endif
+    gather_unary_1s();
+
+    if (debug) {
+        cout << "After propagate, state\n"
+             << state{ this } << "\n";
+    }
+}
+
+void CliqueConstraint::get_current_scope(std::vector<EnumeratedVariable*>& s,
+    std::vector<int>& s_idx)
+{
+    // recover current scope
+    s.clear();
+    s_idx.clear();
+
+    num1 = 0;
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* x = scope[i];
+        if (x->assigned()) {
+            if (inclq[i][x->toIndex(x->getValue())])
+                num1 += 1;
+            deconnect(i);
+            continue;
+        }
+        s.push_back(scope[i]);
+        s_idx.push_back(i);
+    }
+    carity = s.size();
+}
+
+void CliqueConstraint::gather_unary_0s()
+{
+    static const bool debug{ false };
+
+    if (debug)
+        cout << "------------------------------\ngather_unary_0s state = \n"
+             << state{ this } << "\n";
+
+    zerocosts.clear();
+    zerocosts.resize(carity);
+    Cost maxc{ MIN_COST }, sumc{ MIN_COST }, secondmax{ MIN_COST };
+    for (int i = 0, e = current_scope.size(); i != e; ++i) {
+        auto i0 = get_zero_cost(current_scope_idx[i]);
+        zerocosts[i] = i0;
+        if (maxc < i0) {
+            secondmax = maxc;
+            maxc = i0;
+        } else if (secondmax < i0) {
+            secondmax = i0;
+        }
+        maxc = std::max(maxc, i0);
+        sumc += i0;
+        if (debug) {
+            auto* x = current_scope[i];
+            cout << "var " << i << " ";
+            x->print(cout);
+            cout << " i0 = " << i0 << "\n";
+        }
+    }
+
+    for (int i = 0, e = current_scope.size(); i != e; ++i) {
+        extend_zero_cost(current_scope_idx[i],
+            std::min(zerocosts[i], secondmax));
+    }
+    Cost l0 = sumc - maxc;
+
+    if (debug)
+        cout << "sumc = " << sumc << " maxc = " << maxc << " l0 = " << l0
+             << " lb = " << wcsp->getLb() << " depth = " << Store::getDepth()
+             << " all0 = " << all0 << "\nzerocosts = " << zerocosts
+             << " arity = " << carity << "\n";
+
+    Constraint::projectLB(l0);
+    all0 += secondmax;
+    Cost fixedsumc = sumc - maxc + secondmax;
+    for (int i = 0, e = current_scope.size(); i != e; ++i)
+        project_one_cost(current_scope_idx[i],
+            fixedsumc - std::min(zerocosts[i], secondmax) - l0);
+}
+
+void CliqueConstraint::gather_unary_1s()
+{
+    Cost min1cost{ wcsp->getUb() };
+    for (int i = 0, e = current_scope.size(); i != e; ++i)
+        min1cost = std::min(get_one_cost(current_scope_idx[i]), min1cost);
+
+    Cost extra{ std::min(min1cost, (Cost)all0) };
+    if (extra > MIN_COST) {
+        TreeDecomposition* td = wcsp->getTreeDec();
+        all0 -= extra;
+        assert(all0 >= 0);
+        for (int i = 0, e = current_scope.size(); i != e; ++i) {
+            auto* x = current_scope[i];
+            for (auto vindex : clqvals[current_scope_idx[i]]) {
+                Value v = x->toValue(vindex);
+                if (x->canbe(v)) {
+                    if (td)
+                        td->addDelta(cluster, x, v, -extra);
+                    x->extend(v, extra);
+                }
+            }
+        }
+        Constraint::projectLB(extra);
+    }
+}
+
+void CliqueConstraint::initialize_binary()
+{
+    get_current_scope(current_scope, current_scope_idx);
+    bc.resize(arity());
+    for (auto& bcx : bc)
+        bcx.resize(arity());
+    using std::begin;
+    using std::end;
+
+    std::map<EnumeratedVariable*, int> rmap;
+    for (int i = 0, e = current_scope.size(); i != e; ++i)
+        rmap[current_scope[i]] = i;
+
+    for (int i = 0, e = current_scope.size(); i != e; ++i) {
+        auto& xvar = *current_scope[i];
+        for (auto&& cle : *xvar.getConstrs()) {
+            auto* cons = cle.constr;
+            auto* bincons = dynamic_cast<BinaryConstraint*>(cons);
+            if (!bincons)
+                continue;
+            auto& bcons = *bincons;
+            auto& yvar = [&]() -> EnumeratedVariable& {
+                if (&xvar == bcons.getVar(0))
+                    return static_cast<EnumeratedVariable&>(*bcons.getVar(1));
+                else
+                    return static_cast<EnumeratedVariable&>(*bcons.getVar(0));
+            }();
+            if (!rmap.count(&yvar))
+                continue;
+            int j = rmap[&yvar];
+            bc[current_scope_idx[i]][current_scope_idx[j]] = bincons;
+        }
+    }
+}
+
+void CliqueConstraint::gather_binary()
+{
+    if (bc.empty()) {
+        assert(Store::getDepth() == 0);
+        initialize_binary();
+    }
+
+    Cost sum{ MIN_COST };
+    Cost maxe{ MIN_COST };
+    vector<Cost>& extra = binary_extra;
+    extra.clear();
+    extra.resize(current_scope.size());
+    for (int i = 0, e = current_scope.size(); i != e; ++i) {
+        if (!connected(current_scope_idx[i]))
+            continue;
+        for (int j = i + 1; j != e; ++j) {
+            if (!connected(current_scope_idx[j]))
+                continue;
+            if (!bc[current_scope_idx[i]][current_scope_idx[j]])
+                continue;
+            auto c00 = get_binary_zero_cost(current_scope_idx[i],
+                current_scope_idx[j]);
+            extend_binary_cost(current_scope_idx[i], current_scope_idx[j], c00);
+            sum += c00;
+            extra[i] += c00;
+            extra[j] += c00;
+            maxe = std::max({ maxe, extra[i], extra[j] });
+        }
+    }
+
+    Cost l0 = sum - maxe;
+    Constraint::projectLB(l0);
+    all0 += sum - l0;
+    for (int i = 0, e = current_scope.size(); i != e; ++i)
+        project_one_cost(current_scope_idx[i], sum - extra[i] - l0);
+}
+
+void CliqueConstraint::assign(int idx)
+{
+    ++run;
+    static const bool debug{ false };
+
+    auto* x = scope[idx];
+
+    if (debug)
+        cout << "In assign " << idx << "=" << x->getValue() << " run = " << run
+             << " id = " << id << "\n";
+
+    if (!connected(idx))
+        return;
+    deconnect(idx);
+    carity -= 1;
+
+    if (inclq[idx][x->toIndex(x->getValue())])
+        num1 += 1;
+
+    handle_low_arity();
+
+    if (num1 == rhs) {
+        if (debug)
+            cout << "disconnecting, state = \n"
+                 << state{ this } << "\n";
+        deconnect();
+    } else {
+        if (ToulBar2::FullEAC)
+            reviseEACGreedySolution();
+    }
+
+    if (debug)
+        cout << "After assign of " << idx << " state = \n"
+             << state{ this } << "\n";
+}
+
+void CliqueConstraint::handle_low_arity()
+{
+    static const bool debug{ false };
+
+    if (debug)
+        cout << "in handle_low_arity state = " << state{ this } << "\n";
+
+    if (carity > 3)
+        return;
+
+    deconnect();
+    if (num1 != rhs && all0 > MIN_COST) {
+        projectNary();
+    }
+
+    // // make sure we have the right arity
+    // get_current_scope(current_scope_asgn, current_scope_asgn_idx);
+    // if (num1 == rhs || all0 == MIN_COST) {
+    //     deconnect();
+    //     return;
+    // }
+
+    // if (carity == 2) {
+    //     if (bc.empty()) {
+    //         assert(Store::getDepth() == 0);
+    //         initialize_binary();
+    //     }
+    //     auto* cons = project_binary_cost(current_scope_asgn_idx[0],
+    //                                      current_scope_asgn_idx[1], all0);
+    //     if (!cons->connected())
+    //         cout << "OOPS. Binary constraint disconnected " << __FILE__ << ":"
+    //              << __LINE__ << "\n";
+    //     cons->propagate();
+    //     deconnect();
+    //     return;
+    // }
+
+    // if (carity == 1) {
+    //     project_zero_cost(current_scope_asgn_idx[0], all0);
+    //     deconnect();
+    //     return;
+    // }
+
+    // if (carity == 0) {
+    //     Constraint::projectLB(all0);
+    //     deconnect();
+    //     return;
+    // }
+}
+
+void CliqueConstraint::remove(int idx)
+{
+    static const bool debug{ false };
+
+    if (!connected(idx))
+        return;
+
+    if (debug)
+        cout << "In remove " << idx << " run = " << run << "\n";
+
+    // FIXME: be incremental
+    propagate_incremental();
+}
+
+void CliqueConstraint::increase(int idx)
+{
+    remove(idx);
+}
+
+void CliqueConstraint::decrease(int idx)
+{
+    remove(idx);
+}
+
+void CliqueConstraint::projectFromZero(int idx)
+{
+    static const bool debug{ false };
+
+    if (!connected(idx))
+        return;
+
+    if (debug)
+        cout << "In projectFromZero state = " << state{ this } << "\n";
+
+    propagate_incremental();
+}
+
+Cost CliqueConstraint::get_zero_cost(int idx) // TODO remember last support and choose between smallest current domain size and clqvalue set
+{
+    EnumeratedVariable* x = scope[idx];
+    return std::accumulate(x->begin(), x->end(), wcsp->getUb(),
+        [&](Cost m, Value val) {
+            int vindex = x->toIndex(val);
+            if (!inclq[idx][vindex])
+                return std::min(m, x->getCost(val));
+            else
+                return m;
+        });
+}
+
+Cost CliqueConstraint::get_binary_zero_cost(int idx, int jdx) //TODO: avoid iterate if last support still valid and zero cost
+{
+    EnumeratedVariable* x = scope[idx];
+    EnumeratedVariable* y = scope[jdx];
+    auto* cons = bc[idx][jdx];
+    assert(cons);
+    assert(cons->connected());
+    Cost c00{ wcsp->getUb() };
+    for (auto ivalindex : nonclqvals[idx]) {
+        Value ival = x->toValue(ivalindex);
+        if (!x->canbe(ival))
+            continue;
+        for (auto jvalindex : nonclqvals[jdx]) {
+            Value jval = y->toValue(jvalindex);
+            if (!y->canbe(jval))
+                continue;
+            c00 = std::min(c00, cons->getCost(x, y, ival, jval));
+        }
+    }
+    return c00;
+}
+
+Cost CliqueConstraint::get_one_cost(int idx) // TODO: remember last support
+{
+    EnumeratedVariable* x = scope[idx];
+    return std::accumulate(x->begin(), x->end(), wcsp->getUb(),
+        [&](Cost m, Value val) {
+            if (inclq[idx][x->toIndex(val)])
+                return std::min(m, x->getCost(val));
+            else
+                return m;
+        });
+}
+
+void CliqueConstraint::extend_zero_cost(int var, Cost c)
+{
+    if (c == MIN_COST)
+        return;
+    TreeDecomposition* td = wcsp->getTreeDec();
+    auto* x = scope[var];
+    for (auto q = x->begin(), e = x->end(); q != e; ++q) {
+        if (!inclq[var][x->toIndex(*q)]) {
+            if (td)
+                td->addDelta(cluster, x, *q, -c);
+            x->extend(*q, c);
+        }
+    }
+}
+
+void CliqueConstraint::project_zero_cost(int var, Cost c)
+{
+    if (c == MIN_COST)
+        return;
+    auto* x = scope[var];
+    if (x->assigned()) {
+        deconnect(var);
+        if (!inclq[var][x->toIndex(x->getValue())])
+            Constraint::projectLB(c);
+        return;
+    }
+    TreeDecomposition* td = NULL;
+    if (!CUT(c + wcsp->getLb(), wcsp->getUb())) {
+        td = wcsp->getTreeDec();
+    }
+    for (auto vindex : nonclqvals[var]) {
+        Value v = x->toValue(vindex);
+        if (x->canbe(v)) {
+            if (td)
+                td->addDelta(cluster, x, v, c);
+            x->project(v, c, true);
+        }
+    }
+    x->findSupport();
+}
+
+void CliqueConstraint::project_one_cost(int var, Cost c)
+{
+    if (c == MIN_COST)
+        return;
+    auto* x = scope[var];
+    if (x->assigned()) {
+        deconnect(var);
+        if (inclq[var][x->toIndex(x->getValue())])
+            Constraint::projectLB(c);
+        return;
+    }
+    TreeDecomposition* td = NULL;
+    if (!CUT(c + wcsp->getLb(), wcsp->getUb())) {
+        td = wcsp->getTreeDec();
+    }
+    for (auto vindex : clqvals[var]) {
+        Value v = x->toValue(vindex);
+        if (x->canbe(v)) {
+            if (td)
+                td->addDelta(cluster, x, v, c);
+            x->project(v, c, true);
+        }
+    }
+    x->findSupport();
+}
+
+void CliqueConstraint::extend_binary_cost(int idx, int jdx, Cost c)
+{
+    project_binary_cost(idx, jdx, -c);
+}
+
+BinaryConstraint* CliqueConstraint::project_binary_cost(int idx, int jdx, Cost c)
+{
+    EnumeratedVariable* x = scope[idx];
+    EnumeratedVariable* y = scope[jdx];
+    auto* cons = bc[idx][jdx];
+    assert(cons);
+    assert(cons->connected());
+    for (auto ivalindex : nonclqvals[idx]) {
+        Value ival = x->toValue(ivalindex);
+        if (!x->canbe(ival))
+            continue;
+        for (auto jvalindex : nonclqvals[jdx]) {
+            Value jval = y->toValue(jvalindex);
+            if (!y->canbe(jval))
+                continue;
+            cons->addcost(x, y, ival, jval, c); //TODO: update deltas for tree decomposition-based methods
+        }
+    }
+    return cons;
+}
+
+double CliqueConstraint::computeTightness()
+{
+    return 1.0 * all0 / std::pow(2, arity_);
+}
+
+void CliqueConstraint::read(istream& is)
+{
+    inclq.resize(arity_);
+    clqvals.resize(arity_);
+    nonclqvals.resize(arity_);
+    is >> rhs;
+    for (int i = 0; i != arity_; ++i) {
+        conflictWeights.push_back(0);
+        int nv{ 0 };
+        is >> nv;
+        auto* x = scope[i];
+        inclq[i].resize(x->getDomainInitSize());
+        for (int j = 0; j != nv; ++j) {
+            int val{ 0 };
+            is >> val;
+            assert(static_cast<size_t>(x->toIndex(val)) < inclq[i].size());
+            inclq[i][x->toIndex(val)] = true;
+            clqvals[i].push_back(x->toIndex(val));
+        }
+        if (x->assigned()) {
+            if (inclq[i][x->toIndex(x->getValue())]) {
+                num1 += 1;
+                if (num1 == rhs)
+                    deconnect();
+                return;
+            }
+            deconnect(i);
+            carity -= 1;
+        }
+        for (auto val : *x) {
+            int vindex = x->toIndex(val);
+            if (!inclq[i][vindex])
+                nonclqvals[i].push_back(vindex);
+        }
+    }
+    if (rhs != 1) {
+        cerr << "Unsupported: rhs == " << rhs << " and should be set to one.\n";
+        exit(1);
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2clqcover.hpp b/code/include/tb2/core/tb2clqcover.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..a550725e366118ab67c55c727a0f8b6ccbafb4ae
--- /dev/null
+++ b/code/include/tb2/core/tb2clqcover.hpp
@@ -0,0 +1,234 @@
+#ifndef TB2CLQ_HPP_
+#define TB2CLQ_HPP_
+
+#include "tb2abstractconstr.hpp"
+#include "tb2ternaryconstr.hpp"
+#include "tb2enumvar.hpp"
+#include "tb2wcsp.hpp"
+
+/* Enforce that among the variables in scope, at most rhs_in get any
+   of the values appearing in clq_in. This is isomorphic to having
+   just two values, 0 (not in the clique) and 1 (in the clique), so
+   we use these terms.
+*/
+class CliqueConstraint : public AbstractNaryConstraint {
+public:
+    CliqueConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in,
+        vector<vector<int>> clq_in, int rhs_in);
+    CliqueConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in);
+    ~CliqueConstraint();
+
+    void read(istream& file);
+
+    bool extension() const FINAL { return false; }
+
+    void assign(int idx) override;
+    void remove(int idx) override;
+    void increase(int idx) override;
+    void decrease(int idx) override;
+    void projectFromZero(int idx) override;
+
+    void propagate() override;
+
+    Cost eval(const Tuple& s) override
+    {
+        bool iszerotuple = true;
+        for (int i = 0; i < arity_; i++) {
+            if (inclq[i][s[i]]) {
+                iszerotuple = false;
+                break;
+            }
+        }
+        if (iszerotuple)
+            return all0;
+        else
+            return MIN_COST;
+    }
+    Cost evalsubstr(const Tuple& s, Constraint* ctr) override { return evalsubstrAny(s, ctr); }
+    Cost evalsubstr(const Tuple& s, NaryConstraint* ctr) override { return evalsubstrAny(s, ctr); }
+    template <class T>
+    Cost evalsubstrAny(const Tuple& s, T* ctr)
+    {
+        int count = 0;
+
+        for (int i = 0; i < arity_; i++) {
+            int ind = ctr->getIndex(getVar(i));
+            if (ind >= 0) {
+                evalTuple[i] = s[ind];
+                count++;
+            }
+        }
+        assert(count <= arity_);
+
+        Cost cost;
+        if (count == arity_)
+            cost = eval(evalTuple);
+        else
+            cost = MIN_COST;
+
+        return cost;
+    }
+
+    vector<Long> conflictWeights; // used by weighted degree heuristics
+    Long getConflictWeight(int varIndex) const override
+    {
+        assert(varIndex >= 0);
+        assert(varIndex < arity_);
+        return conflictWeights[varIndex] + Constraint::getConflictWeight();
+    }
+    void incConflictWeight(Constraint* from) override
+    {
+        //assert(fromElim1==NULL);
+        //assert(fromElim2==NULL);
+        if (from == this) {
+            Constraint::incConflictWeight(1);
+        } else if (deconnected()) {
+            for (int i = 0; i < from->arity(); i++) {
+                int index = getIndex(from->getVar(i));
+                if (index >= 0) { // the last conflict constraint may be derived from two binary constraints (boosting search), each one derived from an n-ary constraint with a scope which does not include parameter constraint from
+                    assert(index < arity_);
+                    conflictWeights[index]++;
+                }
+            }
+        }
+    }
+    void resetConflictWeight() override
+    {
+        conflictWeights.assign(conflictWeights.size(), 0);
+        Constraint::resetConflictWeight();
+    }
+    double computeTightness() override;
+    Cost getMaxFiniteCost() override
+    {
+        if (!CUT(all0, wcsp->getUb())) {
+            return all0;
+        } else {
+            return MIN_COST;
+        }
+    }
+    void setInfiniteCost(Cost ub) override
+    {
+        Cost mult_ub = ((ub < (MAX_COST / MEDIUM_COST)) ? (max(LARGE_COST, ub * MEDIUM_COST)) : ub);
+        if (CUT(all0, ub))
+            all0 = mult_ub;
+    }
+    void dump(ostream&, bool) override { cerr << "warning! clique constraint cannot be dump." << endl; } //TODO
+
+private:
+    // ----------------------------------------------------------------------
+    // definition
+
+    // two views of values in the clique: vector<bool> per variable
+    // (inclq[var][var->toIndex(val)] == true iff (var,val) is in clique) and array
+    // of values in clique per variable
+    vector<vector<bool>> inclq;
+    vector<vector<int>> clqvals;
+    vector<vector<int>> nonclqvals;
+
+    // We require that we use at most rhs values among those in the
+    // clique (and of course, even if rhs > 1, no more than one value
+    // from each variable)
+    int rhs;
+
+    //----------------------------------------------------------------------
+    // operation
+
+    // construct current_scope (vector of uninstantiated variables)
+    // and current_scope_idx (map from indices of current_scope to
+    // indices of scope)
+    void get_current_scope(std::vector<EnumeratedVariable*>& s,
+        std::vector<int>& si);
+
+    // compute zero (resp., one) cost of a var (given by index into
+    // original scope): min Cost among values that do not (resp., do)
+    // appear in the clique. var is index into scope
+    Cost get_zero_cost(int var);
+    Cost get_one_cost(int var);
+
+    void extend_zero_cost(int var, Cost c);
+    void project_zero_cost(int var, Cost c);
+    void project_one_cost(int var, Cost c);
+
+    // compute binary zero cost of a pair of vars, i.e., the minimum
+    // c_{ij}(k,l) where k and l are not in the clique. call this the
+    // fat tuple 00 of that constraint. idx and jdx are indices into
+    // scope.
+    Cost get_binary_zero_cost(int idx, int jdx);
+
+    // extend from the binary constraint (idx,jdx), from the fat tuple
+    // 0,0, cost c
+    void extend_binary_cost(int idx, int jdx, Cost c);
+    BinaryConstraint* project_binary_cost(int idx, int jdx, Cost c);
+
+    // when we have a small number of unassigned vars, project to a
+    // binary/unary/nullary constraint.
+    void handle_low_arity();
+
+    // gather unary/binary costs to increase the lower bound. We
+    // gather the minimum cost of all the 1s separately, as it is
+    // useful to do it after gathering binary costs
+    void gather_unary_0s();
+    void gather_unary_1s();
+    void gather_binary();
+
+    void initialize_binary();
+
+    // the remove/projectFromZero etc all come to this.
+    void propagate_incremental();
+
+    // amount we have already projected to c_zero
+    StoreCost lb;
+    // cost of assigning everything to 0
+    StoreCost all0;
+
+    // number of variables already assigned to 1
+    StoreInt num1;
+    // number of variables that remain unassigned
+    StoreInt carity;
+
+    // for each variable, a 0-cost 0 value and a zero-cost 1 value
+    vector<int> supports0;
+    vector<int> supports1;
+
+    // buffer: current_scope (scope excluding instantiated variables),
+    // plus indices to original scope
+    vector<EnumeratedVariable*> current_scope;
+    vector<int> current_scope_idx;
+
+    vector<EnumeratedVariable*> current_scope_asgn;
+    vector<int> current_scope_asgn_idx;
+
+    vector<Cost> zerocosts;
+    vector<Cost> binary_extra;
+
+    // binary constraints in scope
+    vector<vector<BinaryConstraint*>> bc;
+
+    std::ostream& printstate(std::ostream& os);
+
+    int run{ 0 };
+    int id{ 0 };
+    static int nextid;
+
+public:
+    struct state {
+        CliqueConstraint* clq;
+        std::ostream& print(std::ostream& os) { return clq->printstate(os); }
+    };
+
+    void print(ostream& os) override { printstate(os); }
+};
+
+inline std::ostream& operator<<(std::ostream& os, CliqueConstraint::state s)
+{
+    return s.print(os);
+}
+
+#endif /* TB2CLQ_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2constraint.cpp b/code/include/tb2/core/tb2constraint.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1e5a8372ab1a4fc4735e765724824973d724d318
--- /dev/null
+++ b/code/include/tb2/core/tb2constraint.cpp
@@ -0,0 +1,362 @@
+/*
+ * **************** Abstract constraint **************
+ */
+
+#include "tb2constraint.hpp"
+#include "tb2wcsp.hpp"
+#include "search/tb2clusters.hpp"
+
+/*
+ * Constructor
+ *
+ */
+
+Constraint::Constraint(WCSP* w)
+    : WCSPLink(w, w->numberOfConstraints())
+    , conflictWeight(1)
+    , fromElim1(NULL)
+    , fromElim2(NULL)
+{
+    w->link(this);
+    tight = -1;
+    isSep_ = false;
+    isDuplicate_ = false;
+    cluster = -1;
+}
+
+Constraint::Constraint(WCSP* w, int elimCtrIndex)
+    : WCSPLink(w, elimCtrIndex)
+    , conflictWeight(1)
+    , fromElim1(NULL)
+    , fromElim2(NULL)
+{
+    tight = -1;
+    isSep_ = false;
+    isDuplicate_ = false;
+    cluster = -1;
+}
+
+bool Constraint::checkEACGreedySolution(int index, Value support)
+{
+    static Tuple t;
+    int a = arity();
+    t.resize(a);
+    for (int i = 0; i < a; i++) {
+        Variable* var = getVar(i);
+        if (var->enumerated())
+            t[i] = ((EnumeratedVariable*)var)->toIndex((i == index) ? support : var->getSupport());
+        else
+            t[i] = ((i == index) ? support : var->getSupport());
+    }
+    return (evalsubstr(t, this) == MIN_COST);
+}
+
+bool Constraint::reviseEACGreedySolution(int index, Value support)
+{
+    bool result = !isGlobal() && checkEACGreedySolution(index, support);
+    if (!result) {
+        if (index >= 0) {
+            getVar(index)->unsetFullEAC();
+        } else {
+            int a = arity();
+            for (int i = 0; i < a; i++) {
+                getVar(i)->unsetFullEAC();
+            }
+        }
+    }
+    return result;
+}
+
+/// \return size of the cartesian product of all domains in the constraint scope.
+/// \warning use deprecated MAX_DOMAIN_SIZE for performance.
+Long Constraint::getDomainSizeProduct() const
+{
+    if (arity() == 0)
+        return 0;
+    Long cartesianProduct = 1;
+    for (int i = 0; i < arity(); i++) {
+        // trap overflow numbers
+        if (cartesianProduct > LONGLONG_MAX / MAX_DOMAIN_SIZE)
+            return LONGLONG_MAX;
+        cartesianProduct *= getVar(i)->getDomainSize();
+    }
+    return cartesianProduct;
+}
+
+void Constraint::conflict()
+{
+    wcsp->conflict();
+}
+
+void Constraint::projectLB(Cost cost)
+{
+    if (cost == MIN_COST)
+        return;
+    if (ToulBar2::verbose >= 2)
+        cout << "lower bound increased " << wcsp->getLb() << " -> " << wcsp->getLb() + cost << endl;
+    if (cost < MIN_COST) {
+        wcsp->decreaseLb(cost);
+    } else {
+        wcsp->increaseLb(cost); // done before cluster LB because of #CSP (assuming a contradiction will occur here)
+    }
+    if (wcsp->td) {
+        if (ToulBar2::verbose >= 2)
+            cout << " in cluster C" << getCluster() << " (from " << wcsp->td->getCluster(getCluster())->getLb() << " to " << wcsp->td->getCluster(getCluster())->getLb() + cost << ")" << endl;
+        wcsp->td->getCluster(getCluster())->increaseLb(cost);
+    }
+}
+
+void Constraint::assigns()
+{
+    for (int i = 0; connected() && i < arity(); i++)
+        if (getVar(i)->assigned())
+            assign(i);
+}
+
+void Constraint::sumScopeIncluded(Constraint* ctr)
+{
+    Cost Top = wcsp->getUb();
+    Cost c;
+    Tuple t;
+
+    if (getDefCost() < Top) { // enumeration case
+        firstlex();
+        while (nextlex(t, c)) {
+            Cost cplus = ctr->evalsubstr(t, this);
+            if (c + cplus < Top) {
+                if (isNary() && getDefCost() > MIN_COST)
+                    setTuple(t, c + cplus);
+                else
+                    addtoTuple(t, cplus);
+            } else {
+                setTuple(t, Top);
+            }
+        }
+    } else {
+        first();
+        while (next(t, c)) {
+            Cost cplus = ctr->evalsubstr(t, this);
+            if (c + cplus < Top)
+                addtoTuple(t, cplus);
+            else
+                setTuple(t, Top);
+        }
+    }
+}
+
+void Constraint::assignCluster()
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (!td)
+        return;
+    Cluster* lowest = td->getRoot();
+    for (int i = 0; i < arity(); i++)
+        if (getVar(i)->unassigned() || isSep()) { // keep separator Constraint::cluster unchanged
+            Variable* x = getVar(i);
+            Cluster* c = td->getCluster(x->getCluster());
+            if (lowest->isDescendant(c))
+                lowest = c;
+        }
+    cluster = lowest->getId();
+}
+
+/// \warning always returns 0 for cost functions in intention
+Cost Constraint::getMinCost()
+{
+    static Tuple tuple;
+    if (!extension())
+        return MIN_COST;
+
+    // 	    Cost minc = MAX_COST;
+    //         Tuple tuple;
+    //         Cost cost;
+    //         firstlex();
+    //         while (nextlex(tuple,cost)) {
+    //             if (cost < minc) minc = cost;
+    //         }
+    //         return minc;
+
+    Cost minc = MAX_COST;
+    Cost cost;
+    Long nbtuples = 0;
+    first();
+    while (next(tuple, cost)) {
+        nbtuples++;
+        if (cost < minc)
+            minc = cost;
+    }
+    if (getDefCost() < minc && nbtuples < getDomainSizeProduct())
+        minc = getDefCost();
+    return minc;
+}
+
+Cost Constraint::getCost()
+{
+    static Tuple t;
+    int a = arity();
+    t.resize(a);
+    for (int i = 0; i < a; i++) {
+        Variable* var = getVar(i);
+        if (var->enumerated())
+            t[i] = ((EnumeratedVariable*)var)->toIndex(var->getValue());
+        else
+            t[i] = var->getValue();
+    }
+    return evalsubstr(t, this);
+}
+
+/// \warning always returns false for cost functions in intention
+bool Constraint::universal()
+{
+    static Tuple tuple;
+    if (!extension())
+        return false;
+
+    //   Tuple tuple;
+    //   Cost cost;
+    //   firstlex();
+    //   while (nextlex(tuple,cost)) {
+    // 	if (cost > MIN_COST) return false;
+    //   }
+    //   return true;
+
+    Cost cost;
+    Long nbtuples = 0;
+    first();
+    while (next(tuple, cost)) {
+        nbtuples++;
+        if (cost > MIN_COST)
+            return false;
+    }
+    if (getDefCost() > MIN_COST && nbtuples < getDomainSizeProduct())
+        return false;
+    return true;
+}
+
+/// \warning always returns MAX_COST for cost functions in intention
+Cost Constraint::getMaxFiniteCost()
+{
+    static Tuple tuple;
+    if (!extension())
+        return MAX_COST;
+
+    Cost maxcost = MIN_COST;
+    Cost cost;
+    Long nbtuples = 0;
+    first();
+    while (next(tuple, cost)) {
+        nbtuples++;
+        if (cost < wcsp->getUb() && cost > maxcost)
+            maxcost = cost;
+    }
+    if (getDefCost() < wcsp->getUb() && getDefCost() > maxcost && nbtuples < getDomainSizeProduct())
+        maxcost = getDefCost();
+    return maxcost;
+}
+
+/// \warning always returns false for cost functions in intention
+bool Constraint::ishard()
+{
+    static Tuple tuple;
+    if (!extension())
+        return false;
+
+    Cost cost;
+    firstlex();
+    while (nextlex(tuple, cost)) {
+        if (cost > MIN_COST && !CUT(cost, wcsp->getUb()))
+            return false;
+    }
+    return true;
+}
+
+bool Constraint::verifySeparate(Constraint* ctr1, Constraint* ctr2)
+{
+    assert(scopeIncluded(ctr1));
+    assert(scopeIncluded(ctr2));
+    static Tuple tuple;
+    Cost cost, c1, c2;
+    firstlex();
+    if (ToulBar2::verbose >= 3) {
+        cout << "[ ";
+        for (int i = 0; i < arity(); ++i)
+            cout << getVar(i)->getName() << " ";
+        cout << " ]\n";
+    }
+    while (nextlex(tuple, cost)) {
+        c1 = ctr1->evalsubstr(tuple, this);
+        c2 = ctr2->evalsubstr(tuple, this);
+        if (ToulBar2::verbose >= 3) {
+            for (int i = 0; i < arity(); ++i)
+                cout << tuple[i] << " ";
+            //cout << endl;
+            cout << " : " << cost << " =? " << c1 << " + " << c2 << " : " << c1 + c2 << endl;
+        }
+        if (cost < wcsp->getUb() && c1 + c2 != cost)
+            return false;
+        if (cost >= wcsp->getUb() && c1 + c2 < wcsp->getUb())
+            return false;
+    }
+    return true;
+}
+
+bool Constraint::decompose()
+{
+    bool sep = false;
+    if (extension() && !universal() && arity() >= 3 && arity() <= ToulBar2::preprocessNary && (isTernary() || (isNary() && (getDomainSizeProduct() < MAX_NB_TUPLES) && (getDefCost() > MIN_COST || ((NaryConstraint*)this)->size() > 1)))) {
+        TSCOPE scopeinv;
+        getScope(scopeinv);
+        EnumeratedVariable* vx = NULL;
+        EnumeratedVariable* vz = NULL;
+        for (TSCOPE::reverse_iterator it1 = scopeinv.rbegin(); it1 != scopeinv.rend() && !sep; ++it1) {
+            TSCOPE::reverse_iterator it2 = it1;
+            for (++it2; it2 != scopeinv.rend() && !sep; ++it2) {
+                vx = (EnumeratedVariable*)wcsp->getVar((*it2).first);
+                vz = (EnumeratedVariable*)wcsp->getVar((*it1).first);
+                if (ToulBar2::verbose >= 1)
+                    cout << /*"\n" <<*/ vx->getName() << " and " << vz->getName() << " are separable in ";
+                sep = separability(vx, vz);
+                if (sep && ToulBar2::verbose >= 1) {
+                    cout << " YES";
+#ifndef NDEBUG
+                    if (!ishard())
+                        cout << " with finite costs";
+#endif
+                    cout << endl;
+                }
+                if (!sep && ToulBar2::verbose >= 1)
+                    cout << " NO" << endl;
+            }
+        }
+        if (sep)
+            separate(vx, vz);
+        if (ToulBar2::verbose >= 3)
+            cout << "=====================================================" << endl;
+    }
+    return sep;
+}
+
+Constraint* Constraint::copy()
+{
+    static Tuple t;
+    int scope[arity()];
+    for (int i = 0; i < arity(); i++)
+        scope[i] = getVar(i)->wcspIndex;
+    Cost defcost = getDefCost();
+    int ctrIndex = wcsp->postNaryConstraintBegin(scope, arity(), defcost, size(), true); // be sure to not create a clause instead of NaryConstraint!
+    Cost c;
+    first();
+    while (next(t, c)) {
+        if (c != defcost)
+            wcsp->postNaryConstraintTuple(ctrIndex, t, c);
+    }
+    wcsp->getCtr(ctrIndex)->deconnect(true);
+    return wcsp->getCtr(ctrIndex);
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2constraint.hpp b/code/include/tb2/core/tb2constraint.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..82e0e8ee10361986c286ab4d432f54c637322294
--- /dev/null
+++ b/code/include/tb2/core/tb2constraint.hpp
@@ -0,0 +1,326 @@
+/** \file tb2constraint.hpp
+ *  \brief Abstract constraint.
+ *
+ */
+
+#ifndef TB2CONSTRAINT_HPP_
+#define TB2CONSTRAINT_HPP_
+
+#include "tb2types.hpp"
+
+class Constraint : public WCSPLink {
+    Long conflictWeight;
+    string name;
+    Constraint* fromElim1; // remember the original constraint(s) from which this constraint is derived
+    Constraint* fromElim2; // it can be from variable elimination during search or n-ary constraint projection
+
+    // make it private because we don't want copy nor assignment
+    Constraint(const Constraint& c);
+    Constraint& operator=(const Constraint& c);
+
+public:
+    Constraint(WCSP* wcsp);
+    Constraint(WCSP* wcsp, int elimCtrIndex);
+
+    virtual ~Constraint() {}
+
+    virtual bool extension() const { return false; } // return true if the cost function is defined in extension (with explicit tuples)
+    virtual bool isBinary() const { return false; } // return true if the cost function class is a BinaryConstraint
+    virtual bool isTernary() const { return false; } // return true if the cost function class is a TernaryConstraint
+    virtual bool isNary() const { return false; } // return true if the cost function class is a NaryConstraint
+    virtual bool isGlobal() const { return false; } // return true if it is a global cost function (flow-based monolithic propagation)
+    //    virtual bool isTriangle() const {return false;} // return true if it is a triangle of three binary cost functions (maxRPC/PIC)
+
+    virtual bool connected() const
+    {
+        cout << "dummy connected on (" << this << ")!" << endl;
+        return true;
+    }
+    virtual bool deconnected() const
+    {
+        cout << "dummy deconnected on (" << this << ")!" << endl;
+        return false;
+    }
+    // remove a constraint from the set of active constraints
+    // (reuse=true if the constraint is empty and canbe reuse immediately)
+    virtual void deconnect(bool reuse = false) { cout << "dummy deconnect on (" << this << ")!" << endl; }
+    virtual void reconnect() { cout << "dummy reconnect on (" << this << ")!" << endl; }
+
+    virtual int arity() const = 0;
+    virtual Variable* getVar(int scopeIndex) const = 0;
+    virtual int getIndex(Variable* var) const = 0;
+    string getName() { return this->name; };
+    void setName(const string& name) { this->name = name; };
+
+    void conflict();
+    virtual Long getConflictWeight() const { return conflictWeight; }
+    virtual Long getConflictWeight(int varIndex) const { return conflictWeight; }
+    virtual void incConflictWeight(Constraint* from)
+    {
+        if (from == this || deconnected())
+            conflictWeight++;
+        if (fromElim1)
+            fromElim1->incConflictWeight(from);
+        if (fromElim2)
+            fromElim2->incConflictWeight(from);
+    }
+    void incConflictWeight(Long incval) { conflictWeight += incval; }
+    virtual void resetConflictWeight() { conflictWeight = 1 + ((ToulBar2::weightedTightness) ? getTightness() : 0); }
+    void elimFrom(Constraint* from1, Constraint* from2 = NULL)
+    {
+        fromElim1 = from1;
+        fromElim2 = from2;
+    }
+
+    double tight;
+    double getTightness()
+    {
+        if (tight < 0)
+            computeTightness();
+        return tight;
+    }
+    virtual double computeTightness() = 0;
+
+    // return the smallest wcsp index in the constraint scope except for one variable having a forbidden scope index
+    virtual int getSmallestVarIndexInScope(int forbiddenScopeIndex) = 0;
+    virtual int getSmallestVarIndexInScope() = 0;
+    virtual int getDACScopeIndex() const
+    {
+        cout << "dummy getDACScopeIndex on (" << this << ")!" << endl;
+        return 0;
+    }
+    virtual void setDACScopeIndex() {}
+    // return the smallest DAC ordering index in the constraint scope except for one variable having a forbidden scope index
+    virtual int getSmallestDACIndexInScope(int forbiddenScopeIndex) = 0;
+    virtual Variable* getDACVar(int scopeDACIndex) const = 0; // return scope variable with associated index in the sorted scope by DAC ordering
+
+    virtual void propagate() = 0;
+    virtual void increase(int index) { propagate(); }
+    virtual void decrease(int index) { propagate(); }
+    virtual void remove(int index) { propagate(); }
+    virtual void projectFromZero(int index) {}
+    virtual void assign(int index) { propagate(); }
+    void assigns();
+
+    virtual bool checkEACGreedySolution(int index = -1, Value a = 0); // if index is non-negative use value a instead of its support for the corresponding variable
+    virtual bool reviseEACGreedySolution(int index = -1, Value a = 0); // if index is negative revise all variables else only one
+    virtual void fillEAC2(int index) {}
+    virtual bool isEAC(int index, Value a)
+    {
+        if (ToulBar2::FullEAC && !isSep()) {
+            bool res = reviseEACGreedySolution(index, a);
+            if (ToulBar2::verbose >= 4 && !res)
+                cout << "Current greedy solution violates this constraint: " << *this << endl;
+        }
+        return true;
+    }
+    virtual void findFullSupportEAC(int index) {}
+
+    virtual void linkCostProvidingPartition(int index, Variable* support) {}
+    virtual void showCostProvidingPartition(int index) {}
+
+    void projectLB(Cost cost);
+
+    virtual bool verify() { return true; };
+
+    virtual void print(ostream& os) { os << this << " Unknown constraint!"; }
+
+    virtual void dump(ostream& os, bool original = true) { os << this << " Unknown constraint!"; }
+    virtual void dump_CFN(ostream& os, bool original = true) { os << this << " Unknown constraint!"; }
+
+    virtual Long getDomainSizeProduct() const; // warning! return LONGLONG_MAX if overflow occurs
+    virtual Long size() const { return getDomainSizeProduct(); } ///< \brief number of tuples stored by the cost function
+    virtual Long space() const
+    {
+        Long sz = size();
+        Long eltsz = sizeof(Cost) + arity() * sizeof(tValue);
+        if (sz < LONGLONG_MAX / eltsz)
+            return (sz * eltsz);
+        else
+            return LONGLONG_MAX;
+    } ///< \brief estimate of the cost function memory space size
+
+    virtual void firstlex() {} ///< \brief enumerate all **valid** tuples of the cost function in lexicographic order (initialization call)
+    virtual bool nextlex(Tuple& t, Cost& c)
+    {
+        cout << "dummy nextlex on (" << this << ")!" << endl;
+        return false;
+    } ///< \brief enumerate all **valid** tuples of the cost function in lexicographic order
+
+    virtual void first() { firstlex(); } ///< \brief enumerate **valid** tuples of the cost function in undefined order, possibly skipping some valid tuples with a default cost (initialization call)
+    virtual bool next(Tuple& t, Cost& c) { return nextlex(t, c); } ///< \brief enumerate **valid** tuples of the cost function in undefined order, possibly skipping some valid tuples with a default cost
+
+    virtual void first(EnumeratedVariable* alpha, EnumeratedVariable* beta) {}
+    virtual bool separability(EnumeratedVariable* alpha, EnumeratedVariable* beta) { return false; }
+    virtual void separate(EnumeratedVariable* a, EnumeratedVariable* c) {}
+    bool decompose();
+    Cost squareminus(Cost c1, Cost c2, Cost top)
+    {
+        Cost c;
+        if (c1 >= top && c2 >= top)
+            c = top; //c = 0;
+        else if (c1 >= top)
+            c = 3 * top;
+        else if (c2 >= top)
+            c = -3 * top;
+        else
+            c = c1 - c2;
+        return c;
+    }
+    bool universe(Cost c1, Cost c2, Cost top)
+    {
+        if (c1 >= top && c2 >= top)
+            return true;
+        else
+            return false;
+    }
+    bool verifySeparate(Constraint* ctr1, Constraint* ctr2);
+
+    virtual void setTuple(const Tuple& t, Cost c) {}
+    virtual void addtoTuple(const Tuple& t, Cost c) {}
+
+    virtual void getScope(TSCOPE& scope_inv) {}
+    virtual Cost evalsubstr(const Tuple& s, Constraint* ctr)
+    {
+        cerr << "dummy evalsubstr call on:" << *this << endl;
+        return MIN_COST;
+    }
+    virtual Cost evalsubstr(const Tuple& s, NaryConstraint* ctr)
+    {
+        cerr << "dummy evalsubstr call on:" << *this << endl;
+        return MIN_COST;
+    }
+    virtual Cost getDefCost() { return MIN_COST; }
+    virtual Cost getCost(); /// \warning all variables must be properly assigned and the returned cost might be different than the original cost due to propagation
+
+    virtual bool universal();
+    virtual bool ishard();
+
+    virtual Cost getMinCost();
+    virtual pair<pair<Cost, Cost>, pair<Cost, Cost>> getMaxCost(int index, Value a, Value b) { return make_pair(make_pair(MAX_COST, MAX_COST), make_pair(MAX_COST, MAX_COST)); }
+    virtual Cost getMaxFiniteCost();
+    virtual void setInfiniteCost(Cost ub) {}
+
+    Constraint* copy(); ///< \brief returns a copy of itself as a new deconnected NaryConstraint (DO NOT USE DURING SEARCH!)
+
+    void sumScopeIncluded(Constraint* ctr);
+
+    bool scopeIncluded(Constraint* ctr)
+    {
+        bool isincluded = true;
+        int a_in = ctr->arity();
+        if (a_in >= arity())
+            return false;
+        for (int i = 0; isincluded && i < a_in; i++)
+            isincluded = isincluded && (getIndex(ctr->getVar(i)) >= 0);
+        return isincluded;
+    }
+
+    void scopeCommon(TSCOPE& scope_out, Constraint* ctr)
+    {
+        TSCOPE scope1, scope2;
+        getScope(scope1);
+        ctr->getScope(scope2);
+
+        TSCOPE::iterator it1 = scope1.begin();
+        TSCOPE::iterator it2 = scope2.begin();
+        while (it1 != scope1.end()) {
+            it1->second = 0;
+            ++it1;
+        }
+        while (it2 != scope2.end()) {
+            it2->second = 0;
+            ++it2;
+        }
+        set_intersection(scope1.begin(), scope1.end(),
+            scope2.begin(), scope2.end(),
+            inserter(scope_out, scope_out.begin()));
+    }
+
+    void scopeUnion(TSCOPE& scope_out, Constraint* ctr)
+    {
+        TSCOPE scope1, scope2;
+        getScope(scope1);
+        ctr->getScope(scope2);
+
+        assert(arity() == (int)scope1.size());
+        assert(ctr->arity() == (int)scope2.size());
+
+        set_union(scope1.begin(), scope1.end(),
+            scope2.begin(), scope2.end(),
+            inserter(scope_out, scope_out.begin()));
+    }
+
+    void scopeDifference(TSCOPE& scope_out, Constraint* ctr)
+    {
+        TSCOPE scope1, scope2;
+        getScope(scope1);
+        ctr->getScope(scope2);
+        set_difference(scope1.begin(), scope1.end(),
+            scope2.begin(), scope2.end(),
+            inserter(scope_out, scope_out.begin()));
+    }
+
+    int order(Constraint* ctr)
+    {
+        if (arity() < ctr->arity())
+            return 1;
+        else if (arity() > ctr->arity())
+            return -1;
+        TSCOPE scope1, scope2;
+        getScope(scope1);
+        ctr->getScope(scope2);
+        TSCOPE::iterator it1 = scope1.begin();
+        TSCOPE::iterator it2 = scope2.begin();
+        while (it1 != scope1.end()) {
+            if (it1->first < it2->first)
+                return 1;
+            else if (it1->first > it2->first)
+                return -1;
+            ++it1;
+            ++it2;
+        }
+        return 0;
+    }
+
+    //   added for tree decomposition stuff
+    int cluster;
+    int getCluster() { return cluster; }
+    void setCluster(int i) { cluster = i; }
+    void assignCluster();
+
+    bool isSep_;
+    void setSep() { isSep_ = true; }
+    bool isSep() { return isSep_; }
+
+    bool isDuplicate_;
+    void setDuplicate()
+    {
+        isDuplicate_ = true;
+        if (ToulBar2::verbose >= 1) {
+            cout << *this << " set duplicate" << endl;
+        }
+    }
+    bool isDuplicate() { return isDuplicate_; }
+
+    virtual ConstraintSet subConstraint()
+    {
+        ConstraintSet s;
+        return s;
+    };
+
+    friend ostream& operator<<(ostream& os, Constraint& c)
+    {
+        c.print(os);
+        return os;
+    }
+};
+
+#endif /*TB2CONSTRAINT_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2domain.cpp b/code/include/tb2/core/tb2domain.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..71076581baef6cb2c89b0383585d446036181f57
--- /dev/null
+++ b/code/include/tb2/core/tb2domain.cpp
@@ -0,0 +1,77 @@
+/*
+ * **************** Storable enumerated domain **********************
+ */
+
+#include "tb2domain.hpp"
+
+/*
+ * Constructors and misc.
+ * 
+ */
+
+Domain::Domain(Value inf, Value sup)
+    : BTList<Value>(&Store::storeDomain)
+    , initSize(sup - inf + 1)
+    , distanceToZero(inf)
+{
+    init(inf, sup);
+}
+
+Domain::Domain(Value* d, int dsize)
+    : BTList<Value>(&Store::storeDomain)
+    , initSize(max(d, dsize) - min(d, dsize) + 1)
+    , distanceToZero(min(d, dsize))
+{
+    assert(dsize >= 1);
+    assert(dsize <= MAX_DOMAIN_SIZE);
+    qsort(d, dsize, sizeof(Value), cmpValue);
+    init(d[0], d[dsize - 1]);
+    int i = 0;
+    for (iterator iter = begin(); iter != end(); ++iter) {
+        if (*iter < d[i])
+            BTList<Value>::erase(&all[toIndex(*iter)], false);
+        else
+            i++;
+    }
+}
+
+void Domain::init(Value inf, Value sup)
+{
+    assert(sup - inf + 1 >= 1);
+    assert(sup - inf + 1 <= MAX_DOMAIN_SIZE);
+#if defined(WCSPFORMATONLY) && !defined(NUMBERJACK)
+    assert(distanceToZero == 0);
+#endif
+    all = new DLink<Value>[sup - inf + 1];
+    for (int idx = 0; idx < sup - inf + 1; idx++) {
+        all[idx].content = idx + inf;
+        push_back(&all[idx], false);
+    }
+}
+
+int cmpValue(const void* v1, const void* v2)
+{
+    if (*((int*)v1) < *((int*)v2))
+        return -1;
+    else if (*((int*)v1) > *((int*)v2))
+        return 1;
+    else
+        return 0;
+}
+
+ostream& operator<<(ostream& os, Domain& l)
+{
+    os << "{";
+    for (Domain::iterator iter = l.begin(); iter != l.end(); ++iter) {
+        os << " " << *iter;
+    }
+    os << " }";
+    return os;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2domain.hpp b/code/include/tb2/core/tb2domain.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..9736f8e207b40a272c8fa7a58abd791e6d3a073c
--- /dev/null
+++ b/code/include/tb2/core/tb2domain.hpp
@@ -0,0 +1,110 @@
+/** \file tb2domain.hpp
+ *  \brief Storable enumerated domain.
+ * 
+ */
+
+#ifndef TB2DOMAIN_HPP_
+#define TB2DOMAIN_HPP_
+
+#include "utils/tb2btlist.hpp"
+
+extern int cmpValue(const void* v1, const void* v2);
+
+class Domain : public BTList<Value> {
+    const unsigned int initSize;
+    const Value distanceToZero;
+    DLink<Value>* all;
+
+    vector<string> valueNames;
+    void init(Value inf, Value sup);
+
+    // make it private because we don't want copy nor assignment
+    Domain(const Domain& s);
+    Domain& operator=(const Domain& s);
+
+public:
+    typedef BTList<Value>::iterator iterator;
+
+    Domain(Value inf, Value sup);
+
+    Domain(Value* d, int dsize);
+
+    ~Domain()
+    {
+        if (initSize >= 1)
+            delete[] all;
+    }
+
+    unsigned int getInitSize() const { return initSize; }
+    unsigned int toIndex(Value v) const { return v - distanceToZero; }
+    Value toValue(int idx) const { return idx + distanceToZero; }
+    unsigned int toCurrentIndex(Value v)
+    {
+        assert(canbe(v));
+        unsigned int pos = 0;
+        for (iterator iter = begin(); iter != end(); ++iter) {
+            if (*iter == v)
+                return pos;
+            pos++;
+        }
+        cerr << "Bad (removed) value given as argument of toCurrentIndex function!" << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    bool canbe(Value v) const { return !all[toIndex(v)].removed; }
+    bool cannotbe(Value v) const { return all[toIndex(v)].removed; }
+
+    void erase(Value v) { BTList<Value>::erase(&all[toIndex(v)], true); }
+
+    Value increase(Value v)
+    {
+        iterator newInf = lower_bound(v);
+        assert(canbe(*newInf));
+        for (iterator iter = begin(); iter != newInf; ++iter) {
+            erase(*iter);
+        }
+        return *newInf;
+    }
+    Value decrease(Value v)
+    {
+        iterator newSup = upper_bound(v);
+        assert(canbe(*newSup));
+        for (iterator iter = rbegin(); iter != newSup; --iter) {
+            erase(*iter);
+        }
+        return *newSup;
+    }
+
+    //Finds the first available element whose value is greater or equal to v
+    iterator lower_bound(Value v)
+    {
+        assert(toIndex(v) >= 0 && toIndex(v) < initSize);
+        iterator iter(&all[toIndex(v)]);
+        if (cannotbe(v)) {
+            ++iter;
+        }
+        return iter;
+    }
+
+    //Finds the first available element whose value is lower or equal to v
+    iterator upper_bound(Value v)
+    {
+        assert(toIndex(v) >= 0 && toIndex(v) < initSize);
+        iterator iter(&all[toIndex(v)]);
+        if (cannotbe(v)) {
+            --iter;
+        }
+        return iter;
+    }
+
+    friend ostream& operator<<(ostream& os, Domain& l);
+};
+
+#endif /*TB2DOMAIN_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2enumvar.cpp b/code/include/tb2/core/tb2enumvar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f3d82d503f025f68f9bbbe307e1f0a8a0d452f4c
--- /dev/null
+++ b/code/include/tb2/core/tb2enumvar.cpp
@@ -0,0 +1,1788 @@
+
+/*
+ * ****** Variable with domain represented by an enumerated domain *******
+ */
+
+#include "tb2enumvar.hpp"
+#include "tb2wcsp.hpp"
+#include "tb2binconstr.hpp"
+#include "tb2ternaryconstr.hpp"
+#include "search/tb2clusters.hpp"
+#include "tb2vacutils.hpp"
+
+/*
+ * Constructors and misc.
+ *
+ */
+
+EnumeratedVariable::EnumeratedVariable(WCSP* w, string n, Value iinf, Value isup)
+    : Variable(w, n, iinf, isup)
+    , domain(iinf, isup)
+    , deltaCost(MIN_COST)
+    , support(iinf)
+    , watchForIncrease(false)
+    , watchForDecrease(false)
+{
+    init();
+}
+
+EnumeratedVariable::EnumeratedVariable(WCSP* w, string n, Value* d, int dsize)
+    : Variable(w, n, min(d, dsize), max(d, dsize))
+    , domain(d, dsize)
+    , deltaCost(MIN_COST)
+    , support(min(d, dsize))
+    , watchForIncrease(false)
+    , watchForDecrease(false)
+{
+    init();
+}
+
+void EnumeratedVariable::init()
+{
+    if (Store::getDepth() > 0) {
+        cerr << "You cannot create a variable during the search!" << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    costs = vector<StoreCost>(getDomainInitSize(), StoreCost(MIN_COST));
+    linkACQueue.content.var = this;
+    linkACQueue.content.timeStamp = -1;
+    linkDACQueue.content.var = this;
+    linkDACQueue.content.timeStamp = -1;
+    linkEAC1Queue.content.var = this;
+    linkEAC1Queue.content.timeStamp = -1;
+    linkEAC2Queue.content.var = this;
+    linkEAC2Queue.content.timeStamp = -1;
+    linkDEEQueue.content.var = this;
+    linkDEEQueue.content.timeStamp = -1;
+    linkFEACQueue.content.var = this;
+    linkFEACQueue.content.timeStamp = -1;
+    DEE.constr = NULL;
+    DEE.scopeIndex = -1;
+    if (ToulBar2::DEE >= 2)
+        DEE2 = vector<ConstraintLink>((size_t)getDomainInitSize() * (size_t)getDomainInitSize(), DEE);
+    queueDEE();
+}
+
+void EnumeratedVariable::getDomain(Value* array)
+{
+    for (iterator iter = begin(); iter != end(); ++iter) {
+        *array = *iter;
+        ++array;
+    }
+}
+
+void EnumeratedVariable::getDomainAndCost(ValueCost* array)
+{
+    for (iterator iter = begin(); iter != end(); ++iter) {
+        array->value = *iter;
+        array->cost = getCost(*iter);
+        ++array;
+    }
+}
+
+Cost EnumeratedVariable::getBinaryCost(ConstraintLink c, Value myvalue, Value itsvalue)
+{
+    return (c.scopeIndex == 0) ? ((BinaryConstraint*)c.constr)->getCost(myvalue, itsvalue) : ((BinaryConstraint*)c.constr)->getCost(itsvalue, myvalue);
+}
+
+Cost EnumeratedVariable::getBinaryCost(BinaryConstraint* c, Value myvalue, Value itsvalue)
+{
+    return (c->getIndex(this) == 0) ? c->getCost(myvalue, itsvalue) : c->getCost(itsvalue, myvalue);
+}
+
+void EnumeratedVariable::print(ostream& os)
+{
+    if (unassigned()) {
+        os << " " << domain;
+    } else {
+        os << " [" << inf << "," << sup << "]";
+    }
+    os << "/" << getDegree();
+    if (ToulBar2::weightedDegree)
+        os << "/" << getWeightedDegree();
+    if (unassigned()) {
+        os << " ";
+        os << "<";
+        for (iterator iter = begin(); iter != end(); ++iter) {
+            os << " " << getCost(*iter);
+        }
+        os << " > s:" << support;
+        if (ToulBar2::FullEAC && isFullEAC()) {
+            os << "!";
+        }
+    }
+}
+
+/*
+ * Propagation methods
+ *
+ */
+
+void EnumeratedVariable::queueAC()
+{
+    wcsp->queueAC(&linkACQueue);
+}
+
+void EnumeratedVariable::queueDAC()
+{
+    wcsp->queueDAC(&linkDACQueue);
+}
+
+void EnumeratedVariable::queueEAC1()
+{
+    wcsp->queueEAC1(&linkEAC1Queue);
+}
+
+void EnumeratedVariable::queueEAC2()
+{
+    wcsp->queueEAC2(&linkEAC2Queue);
+}
+
+void EnumeratedVariable::queueDEE()
+{
+    wcsp->queueDEE(&linkDEEQueue);
+}
+
+void EnumeratedVariable::queueFEAC()
+{
+    wcsp->queueFEAC(&linkFEACQueue);
+}
+void EnumeratedVariable::project(Value value, Cost cost, bool delayed)
+{
+    assert(cost >= MIN_COST);
+    Cost oldcost = getCost(value);
+    costs[toIndex(value)] += cost;
+    Cost newcost = oldcost + cost;
+    if (value == maxCostValue || LUBTEST(maxCost, newcost))
+        queueNC();
+    if (DACTEST(oldcost, cost)) {
+        queueDAC();
+        queueEAC1();
+    }
+    if (CUT(newcost + wcsp->getLb(), wcsp->getUb())) {
+        if (delayed)
+            queueNC();
+        else
+            removeFast(value); // Avoid any unary cost overflow
+    }
+}
+
+void EnumeratedVariable::projectInfCost(Cost cost)
+{
+    assert(cost >= MIN_COST);
+    Value value = getInf();
+    Cost oldcost = getCost(value);
+    project(value, cost);
+    if (support == value || SUPPORTTEST(oldcost, cost))
+        findSupport();
+}
+
+void EnumeratedVariable::projectSupCost(Cost cost)
+{
+    assert(cost >= MIN_COST);
+    Value value = getSup();
+    Cost oldcost = getCost(value);
+    project(value, cost);
+    if (support == value || SUPPORTTEST(oldcost, cost))
+        findSupport();
+}
+
+void EnumeratedVariable::extend(Value value, Cost cost)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "extend " << getName() << " (" << value << ") -= " << cost << endl), true));
+    assert(cost >= MIN_COST);
+    assert(CUT(costs[toIndex(value)], cost));
+    costs[toIndex(value)] -= cost;
+    if (value == maxCostValue || PARTIALORDER)
+        queueNC();
+}
+
+void EnumeratedVariable::extendAll(Cost cost)
+{
+    assert(cost > MIN_COST);
+    deltaCost += cost; // Warning! Possible overflow???
+    queueNC();
+}
+
+void EnumeratedVariable::findSupport()
+{
+    if (cannotbe(support) || getCost(support) > MIN_COST) {
+        Value newSupport = getInf();
+        Cost minCost = getCost(newSupport);
+        Value bestValue = wcsp->getBestValue(wcspIndex);
+        iterator iter = begin();
+        for (++iter; minCost > MIN_COST && iter != end(); ++iter) {
+            Cost cost = getCost(*iter);
+            if (cost < minCost || (cost == minCost && *iter == bestValue)) { // GLB(&minCost, cost)) {
+                minCost = cost;
+                newSupport = *iter;
+            }
+        }
+        if (minCost > MIN_COST) {
+            extendAll(minCost);
+            projectLB(minCost);
+        }
+        assert(canbe(newSupport) && (getCost(newSupport) == MIN_COST || SUPPORTTEST(getCost(newSupport))));
+        if (support != newSupport)
+            queueDEE();
+        setSupport(newSupport);
+    }
+}
+
+Cost EnumeratedVariable::normalizeTRWS()
+{
+    assert(unassigned());
+    Cost minCost = numeric_limits<Cost>::max();
+    Value newSupport = support;
+    for (EnumeratedVariable::iterator iter = begin(); iter != end(); ++iter) {
+        Cost cost = getCost(*iter);
+        if (GLB(&minCost, cost)) {
+            newSupport = *iter;
+        }
+    }
+    if (minCost != MIN_COST) {
+        deltaCost += minCost;
+    }
+    assert(canbe(newSupport) && (getCost(newSupport) == MIN_COST || SUPPORTTEST(getCost(newSupport))));
+    if (support != newSupport)
+        queueDEE();
+    setSupport(newSupport);
+    queueNC();
+    queueAC();
+    queueDAC();
+    queueEAC1();
+    return minCost;
+}
+
+void EnumeratedVariable::propagateNC()
+{
+    wcsp->revise(NULL);
+    if (ToulBar2::verbose >= 3)
+        cout << "propagateNC for " << getName() << endl;
+    Value maxcostvalue = getSup() + 1;
+    Cost maxcost = MIN_COST;
+    bool supportBroken = false;
+    // Warning! the first value must be visited because it may be removed
+    for (iterator iter = begin(); iter != end(); ++iter) {
+        Cost cost = getCost(*iter);
+        if (CUT(cost + wcsp->getLb(), wcsp->getUb())) {
+            if (SUPPORTTEST(cost))
+                supportBroken = true;
+            removeFast(*iter);
+        } else if (LUB(&maxcost, cost) || cannotbe(maxcostvalue)) {
+            maxcostvalue = *iter;
+        }
+    }
+    assert(getCost(maxcostvalue) == maxcost || !LUBTEST(maxcost, getCost(maxcostvalue)));
+    setMaxUnaryCost(maxcostvalue, maxcost);
+    if (supportBroken)
+        findSupport();
+}
+
+bool EnumeratedVariable::verifyNC()
+{
+    bool supported = true;
+    Cost minCost = MAX_COST;
+    //    Value minCostValue = getSup()+1;
+    for (iterator iter = begin(); iter != end(); ++iter) {
+        Cost cost = getCost(*iter);
+        if (CUT(cost + wcsp->getLb(), wcsp->getUb())) {
+            cout << *this << " not NC!" << endl;
+            return false;
+        }
+        //		if (cost < minCost) minCostValue = *iter;
+        GLB(&minCost, cost);
+    }
+    if (minCost > MIN_COST) {
+        cout << *this << " not NC*!" << endl;
+        supported = false;
+    }
+    if (cannotbe(support) || (getCost(support) > MIN_COST && !SUPPORTTEST(getCost(support)))) { // || minCostValue != support) {
+        cout << *this << " has an unvalid NC support!" << endl;
+        supported = false;
+    }
+    return supported;
+}
+
+void EnumeratedVariable::propagateAC()
+{
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        (*iter).constr->remove((*iter).scopeIndex);
+    }
+}
+
+void EnumeratedVariable::propagateDAC()
+{
+    for (ConstraintList::iterator iter = constrs.rbegin(); iter != constrs.rend(); --iter) {
+        (*iter).constr->projectFromZero((*iter).scopeIndex);
+    }
+}
+
+bool EnumeratedVariable::checkEACGreedySolution()
+{
+    bool result = true;
+    for (ConstraintList::iterator iter = constrs.begin(); result && iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep())
+            continue;
+        result = result && (*iter).constr->checkEACGreedySolution();
+    }
+    return result;
+}
+
+bool EnumeratedVariable::reviseEACGreedySolution()
+{
+    bool broken = false;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep())
+            continue;
+        bool result = (*iter).constr->reviseEACGreedySolution();
+        if (!result)
+            broken = true;
+    }
+    if (!broken) {
+        setFullEAC();
+    } else {
+        assert(!isFullEAC());
+    }
+    return (!broken);
+}
+
+void EnumeratedVariable::fillEAC2(bool self)
+{
+    if (self)
+        queueEAC2();
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isDuplicate())
+            continue;
+        (*iter).constr->fillEAC2((*iter).scopeIndex);
+    }
+}
+
+void EnumeratedVariable::setCostProvidingPartition()
+{
+    vector<bool> used(wcsp->numberOfVariables(), false);
+    //  set<int> used;
+    int maxArity = 4;
+    // binary and ternary constraints are not under consideration
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        int arity = (*iter).constr->arity();
+        maxArity = max(maxArity, arity);
+        if ((*iter).constr->isBinary() || (*iter).constr->isTernary()) {
+            for (int i = 0; i < arity; i++) {
+                Variable* var = (*iter).constr->getVar(i);
+                if (var != this) {
+                    used[var->wcspIndex] = true;
+                    //		  used.insert(var->wcspIndex);
+                }
+            }
+        }
+    }
+
+    for (int scopeSize = maxArity; scopeSize > 3; scopeSize--) {
+        for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+            int arity = (*iter).constr->arity();
+            if (arity == scopeSize && (*iter).constr->isGlobal()) {
+                AbstractNaryConstraint* ctr = (AbstractNaryConstraint*)(*iter).constr;
+                for (int i = 0; i < arity; i++) {
+                    Variable* var = ctr->getDACVar(i);
+                    if (var != this && !used[var->wcspIndex]) {
+                        //		  if (var != this && (used.find(var->wcspIndex) == used.end())) {
+                        used[var->wcspIndex] = true;
+                        //			used.insert(var->wcspIndex);
+                        ctr->linkCostProvidingPartition((*iter).scopeIndex, var);
+                    }
+                }
+            }
+        }
+    }
+}
+
+bool EnumeratedVariable::isEAC(Value a)
+{
+    if (getCost(a) == MIN_COST) {
+        for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+            if ((*iter).constr->isDuplicate())
+                continue;
+
+            if (!(*iter).constr->isEAC((*iter).scopeIndex, a)) {
+#ifndef NDEBUG
+                if (ToulBar2::verbose >= 4) {
+                    cout << getName() << "(" << a << ") is not EAC due to constraint " << *(*iter).constr << endl;
+                    if ((*iter).constr->isTernary()) {
+                        TernaryConstraint* c = (TernaryConstraint*)(*iter).constr;
+                        if (c->xy->connected())
+                            cout << *c->xy;
+                        if (c->xz->connected())
+                            cout << *c->xz;
+                        if (c->yz->connected())
+                            cout << *c->yz;
+                    }
+                }
+#endif
+                return false;
+            }
+        }
+        if (support != a)
+            queueDEE();
+        setSupport(a);
+#ifndef NDEBUG
+        if (ToulBar2::verbose >= 4)
+            cout << getName() << "(" << a << ") is EAC!" << endl;
+#endif
+        return true;
+    }
+#ifndef NDEBUG
+    if (ToulBar2::verbose >= 4)
+        cout << getName() << "(" << a << ") is not EAC due to unary cost " << getCost(a) << endl;
+#endif
+    return false;
+}
+
+bool EnumeratedVariable::isEAC()
+{
+    assert(canbe(support));
+    Value bestValue = wcsp->getBestValue(wcspIndex);
+    if (support != bestValue && canbe(bestValue)) {
+        if (ToulBar2::FullEAC)
+            setFullEAC();
+        if (isEAC(bestValue))
+            return true;
+    }
+    if (ToulBar2::FullEAC)
+        setFullEAC();
+    if (isEAC(support))
+        return true;
+    for (iterator iter = begin(); iter != end(); ++iter) {
+        if (*iter == support || *iter == bestValue)
+            continue;
+        if (ToulBar2::FullEAC)
+            setFullEAC();
+        if (isEAC(*iter))
+            return true;
+    }
+    if (ToulBar2::FullEAC)
+        unsetFullEAC();
+    return false;
+}
+
+void EnumeratedVariable::propagateEAC()
+{
+    if (!isEAC()) {
+#ifndef NDEBUG
+        Cost beforeLb = wcsp->getLb();
+        assert(verify());
+#endif
+        for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+            if ((*iter).constr->isDuplicate())
+                continue;
+            (*iter).constr->findFullSupportEAC((*iter).scopeIndex);
+        }
+        fillEAC2(false);
+        if (unassigned()) {
+            queueDEE();
+            // findFullSupportEAC may have inserted current variable in EAC1
+            if (!linkEAC1Queue.removed) {
+                if (linkEAC1Queue.content.timeStamp == wcsp->getNbNodes()) {
+                    assert(((BTList<VariableWithTimeStamp>*)wcsp->getQueueEAC1())->inBTList(&linkEAC1Queue));
+                    wcsp->getQueueEAC1()->remove(&linkEAC1Queue);
+                } else {
+                    linkEAC1Queue.removed = true;
+                    linkEAC1Queue.content.timeStamp = -1;
+                    linkEAC1Queue.content.incdec = NOTHING_EVENT;
+                }
+            }
+#ifndef NDEBUG
+            // check if lb has effectively been increased
+            if (wcsp->getLb() == beforeLb)
+                if (ToulBar2::verbose >= 1)
+                    cout << "EAC failed on " << getName() << endl;
+#endif
+        }
+    }
+}
+
+void EnumeratedVariable::propagateDEE(Value a, Value b, bool dee)
+{
+    //cout << "check DEE for " << *this << " " << a << " -> " << b << " " << dee << endl;
+    if (a == b)
+        return;
+    Cost costa = getCost(a);
+    Cost costb = getCost(b);
+    assert(!dee || costa <= costb);
+    Cost totalmaxcosta = costa;
+    Cost totaldiffcosta = costa;
+    Cost totalmaxcostb = costb;
+    Cost totaldiffcostb = costb;
+    ConstraintLink residue = ((dee) ? DEE : DEE2[a * getDomainInitSize() + b]);
+    ConstraintLink residue2 = ((dee) ? DEE : DEE2[b * getDomainInitSize() + a]);
+    if (costa <= costb && residue.constr && residue.constr->connected() && residue.scopeIndex < residue.constr->arity() && residue.constr->getVar(residue.scopeIndex) == this) {
+        pair<pair<Cost, Cost>, pair<Cost, Cost>> costs = residue.constr->getMaxCost(residue.scopeIndex, a, b);
+        if (totalmaxcosta <= getMaxCost())
+            totalmaxcosta += costs.first.first;
+        if (totalmaxcostb <= getMaxCost())
+            totalmaxcostb += costs.second.first;
+        if (totaldiffcosta <= getMaxCost())
+            totaldiffcosta += costs.first.second;
+        if (totaldiffcostb <= getMaxCost())
+            totaldiffcostb += costs.second.second;
+        if (totaldiffcosta > costb && totaldiffcostb > costa)
+            return;
+    }
+    if (costb <= costa && residue2.constr && (residue2.constr != residue.constr || costa > costb) && residue2.constr->connected() && residue2.scopeIndex < residue2.constr->arity() && residue2.constr->getVar(residue2.scopeIndex) == this) {
+        pair<pair<Cost, Cost>, pair<Cost, Cost>> costs = residue2.constr->getMaxCost(residue2.scopeIndex, a, b);
+        if (totalmaxcosta <= getMaxCost())
+            totalmaxcosta += costs.first.first;
+        if (totalmaxcostb <= getMaxCost())
+            totalmaxcostb += costs.second.first;
+        if (totaldiffcosta <= getMaxCost())
+            totaldiffcosta += costs.first.second;
+        if (totaldiffcostb <= getMaxCost())
+            totaldiffcostb += costs.second.second;
+        if (totaldiffcosta > costb && totaldiffcostb > costa)
+            return;
+    }
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if (costa <= costb && residue.constr == (*iter).constr && residue.scopeIndex == (*iter).scopeIndex)
+            continue;
+        if (costb <= costa && residue2.constr == (*iter).constr && residue2.scopeIndex == (*iter).scopeIndex)
+            continue;
+        pair<pair<Cost, Cost>, pair<Cost, Cost>> costs = (*iter).constr->getMaxCost((*iter).scopeIndex, a, b);
+        if (costs.second.second > costa) {
+            if (dee) {
+                if (costa == costb)
+                    DEE = (*iter);
+            } else
+                DEE2[b * getDomainInitSize() + a] = (*iter);
+        }
+        if (costs.first.second > costb) {
+            if (dee)
+                DEE = (*iter);
+            else
+                DEE2[a * getDomainInitSize() + b] = (*iter);
+        }
+        if (totalmaxcosta <= getMaxCost())
+            totalmaxcosta += costs.first.first;
+        if (totalmaxcostb <= getMaxCost())
+            totalmaxcostb += costs.second.first;
+        if (totaldiffcosta <= getMaxCost())
+            totaldiffcosta += costs.first.second;
+        if (totaldiffcostb <= getMaxCost())
+            totaldiffcostb += costs.second.second;
+        if (totaldiffcosta > costb && totaldiffcostb > costa)
+            return;
+    }
+    assert((totalmaxcosta >= totaldiffcosta || (totalmaxcosta > getMaxCost() && totaldiffcosta > getMaxCost())));
+    assert((totalmaxcostb >= totaldiffcostb || (totalmaxcostb > getMaxCost() && totaldiffcostb > getMaxCost())));
+    assert(totaldiffcosta <= costb || totaldiffcostb <= costa);
+    if (totalmaxcosta == MIN_COST) {
+        if (ToulBar2::verbose >= 2)
+            cout << "DEE " << *this << " (" << a << "," << totalmaxcosta << ") -> (*,*)" << endl;
+        wcsp->incNbDEE(getDomainSize() - 1);
+        assign(a);
+        return;
+    }
+    if (totalmaxcostb == MIN_COST) {
+        if (ToulBar2::verbose >= 2)
+            cout << "DEE " << *this << " (" << b << "," << totalmaxcostb << ") -> (*,*)" << endl;
+        wcsp->incNbDEE(getDomainSize() - 1);
+        assign(b);
+        return;
+    }
+    if (totaldiffcosta <= costb) {
+        if (ToulBar2::verbose >= 2)
+            cout << "DEE " << *this << " (" << a << "," << totaldiffcosta << ") -> (" << b << "," << costb << ")" << endl;
+        wcsp->incNbDEE();
+        remove(b);
+        if (assigned())
+            return;
+    } else {
+        if (ToulBar2::verbose >= 2)
+            cout << "DEE " << *this << " (" << b << "," << totaldiffcostb << ") -> (" << a << "," << costa << ")" << endl;
+        wcsp->incNbDEE();
+        remove(a);
+        if (assigned())
+            return;
+    }
+    assert(unassigned());
+    Cost totalmaxcost = min(totalmaxcosta, totalmaxcostb);
+    if (totalmaxcost > getMaxCost())
+        return;
+    for (iterator iter = begin(); iter != end(); ++iter) {
+        if (*iter == a)
+            continue;
+        if (*iter == b)
+            continue;
+        assert(unassigned());
+        if (getCost(*iter) >= totalmaxcost) {
+            if (ToulBar2::verbose >= 2)
+                cout << "DEE " << *this << " (" << ((totalmaxcosta < totalmaxcostb) ? a : b) << "," << totalmaxcost << ") -> (" << *iter << "," << getCost(*iter) << ")" << endl;
+            wcsp->incNbDEE();
+            remove(*iter);
+        }
+    }
+}
+
+bool EnumeratedVariable::verifyDEE(Value a, Value b)
+{
+    if (a == b)
+        return true;
+    Cost totalmaxcost = getCost(a);
+    Cost totaldiffcost = getCost(a);
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        pair<pair<Cost, Cost>, pair<Cost, Cost>> costs = (*iter).constr->getMaxCost((*iter).scopeIndex, a, b);
+        if (totalmaxcost + wcsp->getLb() < wcsp->getUb())
+            totalmaxcost += costs.first.first;
+        if (totaldiffcost + wcsp->getLb() < wcsp->getUb())
+            totaldiffcost += costs.first.second;
+    }
+    if (getCost(b) >= ((ToulBar2::DEE_ >= 3 || (ToulBar2::DEE_ == 2 && Store::getDepth() == 0)) ? totaldiffcost : totalmaxcost)) {
+        cout << *this << " has missed dominated value (" << a << "," << ((ToulBar2::DEE_ >= 3 || (ToulBar2::DEE_ == 2 && Store::getDepth() == 0)) ? totaldiffcost : totalmaxcost) << ") -> (" << b << "," << getCost(b) << ")" << endl;
+        return true; // should be false but we need to queue all variables each time LB or UB change
+    }
+    for (iterator iter = begin(); iter != end(); ++iter) {
+        if (*iter == a)
+            continue;
+        if (*iter == b)
+            continue;
+        if (getCost(*iter) >= totalmaxcost) {
+            cout << *this << " has missed dominated value (" << a << "," << totalmaxcost << ") -> (" << (*iter) << "," << getCost(*iter) << ")" << endl;
+            return true; // should be false but we need to queue all variables each time LB or UB change
+        }
+    }
+    return true;
+}
+
+bool EnumeratedVariable::verifyDEE()
+{
+    if (ToulBar2::DEE_ >= 3 || (ToulBar2::DEE_ == 2 && Store::getDepth() == 0)) {
+        for (iterator itera = begin(); itera != end(); ++itera) {
+            for (iterator iterb = begin(); iterb != end(); ++iterb) {
+                if (!verifyDEE(*itera, *iterb))
+                    return false;
+            }
+        }
+    } else {
+        if (getSupport() == getMaxCostValue()) {
+            if (getSupport() != getSup()) {
+                if (!verifyDEE(getSupport(), getSup()))
+                    return false;
+            } else {
+                if (!verifyDEE(getSupport(), getInf()))
+                    return false;
+            }
+        } else if (!verifyDEE(getSupport(), getMaxCostValue()))
+            return false;
+    }
+    return true;
+}
+
+void EnumeratedVariable::increaseFast(Value newInf)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "increase " << getName() << " " << inf << " -> " << newInf << endl;
+    assert(!wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) >= newInf);
+    if (newInf > inf) {
+        if (newInf > sup) {
+            THROWCONTRADICTION;
+        } else {
+            newInf = domain.increase(newInf);
+            if (newInf == sup) {
+                assign(newInf);
+            } else {
+                inf = newInf;
+                if (watchForIncrease)
+                    queueInc();
+                else
+                    queueAC();
+                if (PARTIALORDER)
+                    queueDAC();
+                if (wcsp->isGlobal())
+                    queueEAC1(); // unary cost partition for EAC may hide cost moves followed by value removals breaking EAC
+                if (ToulBar2::setmin)
+                    (*ToulBar2::setmin)(wcsp->getIndex(), wcspIndex, newInf, wcsp->getSolver());
+            }
+        }
+    }
+}
+
+void EnumeratedVariable::increase(Value newInf, bool isDecision)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "increase " << getName() << " " << inf << " -> " << newInf << endl;
+#ifndef NDEBUG
+    if (isDecision && wcsp->getIsPartOfOptimalSolution() && wcsp->getBestValue(wcspIndex) < newInf)
+        wcsp->setIsPartOfOptimalSolution(false);
+    assert(isDecision || !wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) >= newInf);
+#endif
+    if (newInf > inf) {
+        if (newInf > sup) {
+            THROWCONTRADICTION;
+        } else {
+            newInf = domain.increase(newInf);
+            if (newInf == sup) {
+                assign(newInf);
+            } else {
+                inf = newInf;
+                if (newInf > maxCostValue || PARTIALORDER)
+                    queueNC(); // diff with increaseFast
+                if (newInf > support || PARTIALORDER)
+                    findSupport(); // diff with increaseFast
+                queueDAC(); // diff with increaseFast
+                queueEAC1(); // diff with increaseFast
+                if (watchForIncrease)
+                    queueInc();
+                else
+                    queueAC();
+                if (ToulBar2::setmin)
+                    (*ToulBar2::setmin)(wcsp->getIndex(), wcspIndex, newInf, wcsp->getSolver());
+            }
+        }
+    }
+}
+
+void EnumeratedVariable::decreaseFast(Value newSup)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "decrease " << getName() << " " << sup << " -> " << newSup << endl;
+    assert(!wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) <= newSup);
+    if (newSup < sup) {
+        if (newSup < inf) {
+            THROWCONTRADICTION;
+        } else {
+            newSup = domain.decrease(newSup);
+            if (inf == newSup) {
+                assign(newSup);
+            } else {
+                sup = newSup;
+                if (watchForDecrease)
+                    queueDec();
+                else
+                    queueAC();
+                if (PARTIALORDER)
+                    queueDAC();
+                if (wcsp->isGlobal())
+                    queueEAC1(); // unary cost partition for EAC may hide cost moves followed by value removals breaking EAC
+                if (ToulBar2::setmax)
+                    (*ToulBar2::setmax)(wcsp->getIndex(), wcspIndex, newSup, wcsp->getSolver());
+            }
+        }
+    }
+}
+
+void EnumeratedVariable::decrease(Value newSup, bool isDecision)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "decrease " << getName() << " " << sup << " -> " << newSup << endl;
+#ifndef NDEBUG
+    if (isDecision && wcsp->getIsPartOfOptimalSolution() && wcsp->getBestValue(wcspIndex) > newSup)
+        wcsp->setIsPartOfOptimalSolution(false);
+    assert(isDecision || !wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) <= newSup);
+#endif
+    if (newSup < sup) {
+        if (newSup < inf) {
+            THROWCONTRADICTION;
+        } else {
+            newSup = domain.decrease(newSup);
+            if (inf == newSup) {
+                assign(newSup);
+            } else {
+                sup = newSup;
+                if (newSup < maxCostValue || PARTIALORDER)
+                    queueNC(); // diff with decreaseFast
+                if (newSup < support || PARTIALORDER)
+                    findSupport(); // diff with decreaseFast
+                queueDAC(); // diff with decreaseFast
+                queueEAC1(); // diff with decreaseFast
+                if (watchForDecrease)
+                    queueDec();
+                else
+                    queueAC();
+                if (ToulBar2::setmax)
+                    (*ToulBar2::setmax)(wcsp->getIndex(), wcspIndex, newSup, wcsp->getSolver());
+            }
+        }
+    }
+}
+
+void EnumeratedVariable::removeFast(Value value)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "remove " << *this << " <> " << value << endl;
+    assert(!wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) != value);
+    if (value == inf)
+        increaseFast(value + 1);
+    else if (value == sup)
+        decreaseFast(value - 1);
+    else if (canbe(value)) {
+        domain.erase(value);
+        queueAC();
+        if (PARTIALORDER)
+            queueDAC();
+        if (wcsp->isGlobal())
+            queueEAC1(); // unary cost partition for EAC may hide cost moves followed by value removals breaking EAC
+        if (ToulBar2::removevalue)
+            (*ToulBar2::removevalue)(wcsp->getIndex(), wcspIndex, value, wcsp->getSolver());
+    }
+}
+
+void EnumeratedVariable::remove(Value value, bool isDecision)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "remove " << *this << " <> " << value << endl;
+#ifndef NDEBUG
+    if (isDecision && wcsp->getIsPartOfOptimalSolution() && wcsp->getBestValue(wcspIndex) == value)
+        wcsp->setIsPartOfOptimalSolution(false);
+    assert(isDecision || !wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) != value);
+#endif
+    if (value == inf)
+        increase(value + 1);
+    else if (value == sup)
+        decrease(value - 1);
+    else if (canbe(value)) {
+        domain.erase(value);
+        if (value == maxCostValue || PARTIALORDER)
+            queueNC();
+        if (value == support || PARTIALORDER)
+            findSupport();
+        queueDAC();
+        queueEAC1();
+        queueAC();
+        if (ToulBar2::removevalue)
+            (*ToulBar2::removevalue)(wcsp->getIndex(), wcspIndex, value, wcsp->getSolver());
+    }
+}
+
+// this function is used ONLY for restoring the solution when
+// variable elimination is tuned on
+void EnumeratedVariable::assignWhenEliminated(Value newValue)
+{
+    //          assert(NCBucket == -1); // may be not already assigned in BTD newsolution
+    inf = newValue;
+    sup = newValue;
+    support = newValue;
+    maxCostValue = newValue;
+    maxCost = MIN_COST;
+}
+
+void EnumeratedVariable::assign(Value newValue, bool isDecision)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "assign " << *this << " -> " << newValue << endl;
+#ifndef NDEBUG
+    if (isDecision && wcsp->getIsPartOfOptimalSolution() && wcsp->getBestValue(wcspIndex) != newValue)
+        wcsp->setIsPartOfOptimalSolution(false);
+    assert(isDecision || !wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) == newValue);
+#endif
+    if (unassigned() || getValue() != newValue) {
+        if (cannotbe(newValue))
+            THROWCONTRADICTION;
+        changeNCBucket(-1);
+        inf = newValue;
+        sup = newValue;
+        support = newValue;
+        maxCostValue = newValue;
+        maxCost = MIN_COST;
+
+        Cost cost = getCost(newValue);
+        if (cost > MIN_COST) {
+            deltaCost += cost;
+            projectLB(cost);
+        }
+
+        if (ToulBar2::setvalue)
+            (*ToulBar2::setvalue)(wcsp->getIndex(), wcspIndex, newValue, wcsp->getSolver());
+        for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+            (*iter).constr->assign((*iter).scopeIndex);
+        }
+        //        for (ConstraintList::iterator iter=triangles.begin(); iter != triangles.end(); ++iter) {
+        //            (*iter).constr->deconnect();
+        //        }
+    }
+}
+
+void EnumeratedVariable::assignLS(Value newValue, ConstraintSet& delayedCtrs, bool force)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "assignLS " << *this << " -> " << newValue << endl;
+#ifndef NDEBUG
+    if (wcsp->getIsPartOfOptimalSolution() && wcsp->getBestValue(wcspIndex) != newValue)
+        wcsp->setIsPartOfOptimalSolution(false);
+#endif
+    if (force || unassigned() || getValue() != newValue) {
+        if (cannotbe(newValue))
+            THROWCONTRADICTION;
+        changeNCBucket(-1);
+        inf = newValue;
+        sup = newValue;
+        support = newValue;
+        maxCostValue = newValue;
+        maxCost = MIN_COST;
+
+        Cost cost = getCost(newValue);
+        if (cost > MIN_COST) {
+            deltaCost += cost;
+            projectLB(cost);
+        }
+
+        if (ToulBar2::setvalue)
+            (*ToulBar2::setvalue)(wcsp->getIndex(), wcspIndex, newValue, wcsp->getSolver());
+        for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+            delayedCtrs.insert((*iter).constr);
+        }
+    }
+}
+
+// eliminates the current (this) variable that participates
+// in a single binary constraint ctr
+bool EnumeratedVariable::elimVar(BinaryConstraint* ctr)
+{
+    assert(getDegree() == 1);
+
+    EnumeratedVariable* x = (EnumeratedVariable*)ctr->getVarDiffFrom(this);
+
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (td && cluster != ctr->getCluster())
+        return false;
+
+    if (ToulBar2::verbose >= 2)
+        cout << "   elim linked to one binary " << ctr << endl;
+
+    // deconnect first to be sure the current var is not involved in future propagation
+    ctr->deconnect();
+    // to be done before propagation
+    WCSP::elimInfo ei = { this, x, NULL, ctr, NULL, NULL, NULL };
+    wcsp->elimInfos[wcsp->getElimOrder()] = ei;
+    wcsp->elimOrderInc();
+
+    Cost mycosts[x->getDomainInitSize()];
+#ifndef NDEBUG
+    for (unsigned int i = 0; i < x->getDomainInitSize(); i++)
+        mycosts[i] = -MAX_COST;
+#endif
+    Cost negcost = MIN_COST;
+    bool supportBroken = false;
+    for (iterator iter1 = x->begin(); iter1 != x->end(); ++iter1) {
+        Cost mincost = MAX_COST;
+        for (iterator iter = begin(); iter != end(); ++iter) {
+            Cost curcost = getCost(*iter) + getBinaryCost(ctr, *iter, *iter1);
+            if (ToulBar2::isZ)
+                mincost = wcsp->LogSumExp(mincost, curcost);
+            else if (curcost < mincost)
+                mincost = curcost;
+        }
+        if (ToulBar2::isZ) {
+            if (mincost < negcost)
+                negcost = mincost;
+            mycosts[x->toIndex(*iter1)] = mincost;
+        } else if (mincost > MIN_COST) {
+            if (td)
+                td->addDelta(cluster, x, *iter1, mincost);
+            if (x->getSupport() == *iter1)
+                supportBroken = true;
+            x->project(*iter1, mincost);
+        }
+    }
+    assert(negcost <= MIN_COST);
+    if (ToulBar2::isZ) {
+        for (iterator iter1 = x->begin(); iter1 != x->end(); ++iter1) {
+            assert(mycosts[x->toIndex(*iter1)] != -MAX_COST);
+            Cost mincost = mycosts[x->toIndex(*iter1)] - negcost;
+            assert(mincost >= MIN_COST);
+            if (mincost > MIN_COST) {
+                if (td)
+                    td->addDelta(cluster, x, *iter1, mincost);
+                if (x->getSupport() == *iter1)
+                    supportBroken = true;
+                x->project(*iter1, mincost);
+            }
+        }
+        if (negcost < 0)
+            wcsp->decreaseLb(negcost);
+    }
+    if (supportBroken) {
+        x->findSupport();
+    }
+
+    return true;
+}
+
+// eliminates the current (this) variable that participates
+// in two binary constraints (its links are xylink and xzlink)
+bool EnumeratedVariable::elimVar(ConstraintLink xylink, ConstraintLink xzlink)
+{
+    EnumeratedVariable* y = (EnumeratedVariable*)wcsp->getVar(xylink.constr->getSmallestVarIndexInScope(xylink.scopeIndex));
+    EnumeratedVariable* z = (EnumeratedVariable*)wcsp->getVar(xzlink.constr->getSmallestVarIndexInScope(xzlink.scopeIndex));
+
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (td) {
+        if (y->isSep() && z->isSep())
+            return false;
+        if ((cluster != xylink.constr->getCluster()) || (cluster != xzlink.constr->getCluster()) || (xylink.constr->getCluster() != xzlink.constr->getCluster()))
+            return false;
+    }
+
+    assert(getDegree() == 2);
+    xylink.constr->deconnect();
+    xzlink.constr->deconnect();
+
+    BinaryConstraint* yz = y->getConstr(z);
+
+    if (td && yz && (getCluster() != yz->getCluster())) {
+        BinaryConstraint* yz_ = y->getConstr(z, getCluster());
+        if (yz_) {
+            yz = yz_;
+            if (ToulBar2::verbose > 1)
+                cout << "(" << y->wcspIndex << "," << z->wcspIndex << ") var elim binary is already duplicate and has same cluster" << endl;
+        }
+    }
+
+    BinaryConstraint* yznew = wcsp->newBinaryConstr(y, z, xylink.constr, xzlink.constr);
+    wcsp->elimBinOrderInc();
+
+    Cost negcost = MIN_COST;
+    for (iterator itery = y->begin(); itery != y->end(); ++itery) {
+        for (iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+            Cost mincost = MAX_COST;
+
+            for (iterator iter = begin(); iter != end(); ++iter) {
+                Cost curcost = getCost(*iter) + getBinaryCost(xylink, *iter, *itery) + getBinaryCost(xzlink, *iter, *iterz);
+
+                if (ToulBar2::isZ)
+                    mincost = wcsp->LogSumExp(mincost, curcost);
+                else if (curcost < mincost)
+                    mincost = curcost;
+            }
+            if (mincost < negcost)
+                negcost = mincost;
+            yznew->setcost(*itery, *iterz, mincost); // Warning! it can set a negative cost temporally
+        }
+    }
+    assert(negcost <= MIN_COST);
+    if (negcost < MIN_COST) {
+        for (iterator itery = y->begin(); itery != y->end(); ++itery) {
+            for (iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+                yznew->addcost(*itery, *iterz, -negcost);
+            }
+        }
+        wcsp->decreaseLb(negcost);
+    }
+
+    if (yz) {
+        if (td && yz->getCluster() != cluster) {
+            yz = yznew;
+            yz->reconnect();
+            yz->setDuplicate();
+        } else {
+            yz->addCosts(yznew);
+            if (y->unassigned() && z->unassigned())
+                yz->reconnect();
+        }
+    } else {
+        yz = yznew;
+        yz->reconnect();
+    }
+
+    if (td)
+        yz->setCluster(getCluster());
+    // to be done before propagation
+    WCSP::elimInfo ei = { this, y, z, (BinaryConstraint*)xylink.constr, (BinaryConstraint*)xzlink.constr, NULL, NULL };
+    wcsp->elimInfos[wcsp->getElimOrder()] = ei;
+    wcsp->elimOrderInc();
+    yz->propagate();
+    return true;
+}
+
+// eliminates the current (this) variable that participates
+// in the ternary constraint 'xyz'
+// the function can fail to eliminate the current variable
+// if it is linked to more than (in total) two variables.
+// It returns true if the current variable was eliminated
+bool EnumeratedVariable::elimVar(TernaryConstraint* xyz)
+{
+    BinaryConstraint* yz = NULL;
+    if (xyz->xy->getIndex(this) < 0)
+        yz = xyz->xy;
+    else if (xyz->xz->getIndex(this) < 0)
+        yz = xyz->xz;
+    else if (xyz->yz->getIndex(this) < 0)
+        yz = xyz->yz;
+    assert(yz != NULL);
+
+    int n2links = 0;
+    int n3links = 0;
+
+    ConstraintLink links[2] = { { NULL, 0 }, { NULL, 0 } };
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isBinary())
+            links[n2links++] = (*iter);
+        else if ((*iter).constr->isTernary())
+            n3links++;
+        else
+            return false;
+    }
+
+    if (n3links > 1)
+        return false;
+
+    if (wcsp->getTreeDec()) {
+        if (cluster != xyz->getCluster())
+            return false;
+    }
+
+    for (int i = 0; i < n2links; i++) {
+        int idvar = links[i].constr->getSmallestVarIndexInScope(links[i].scopeIndex);
+        if (xyz->getIndex(wcsp->getVar(idvar)) < 0)
+            return false;
+    }
+
+    xyz->deconnect();
+    if (n2links > 0)
+        links[0].constr->deconnect();
+    if (n2links > 1)
+        links[1].constr->deconnect();
+
+    EnumeratedVariable* y = (EnumeratedVariable*)yz->getVar(0);
+    EnumeratedVariable* z = (EnumeratedVariable*)yz->getVar(1);
+
+    bool flag_rev = false;
+    if (n2links > 0) {
+        if (links[0].constr->getSmallestVarIndexInScope(links[0].scopeIndex) != y->wcspIndex) {
+            assert(links[0].constr->getSmallestVarIndexInScope(links[0].scopeIndex) == z->wcspIndex);
+            flag_rev = true;
+        }
+    }
+
+    Cost negcost = MIN_COST;
+    for (iterator itery = y->begin(); itery != y->end(); ++itery) {
+        for (iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+            Cost mincost = MAX_COST;
+            for (iterator iter = begin(); iter != end(); ++iter) {
+                Cost curcost = getCost(*iter) + xyz->getCost(this, y, z, *iter, *itery, *iterz);
+
+                if (!flag_rev) {
+                    if (n2links > 0) {
+                        assert(links[0].constr->getIndex(y) >= 0);
+                        curcost += getBinaryCost(links[0], *iter, *itery);
+                    }
+                    if (n2links > 1) {
+                        assert(links[1].constr->getIndex(z) >= 0);
+                        curcost += getBinaryCost(links[1], *iter, *iterz);
+                    }
+                } else {
+                    if (n2links > 0) {
+                        assert(links[0].constr->getIndex(z) >= 0);
+                        curcost += getBinaryCost(links[0], *iter, *iterz);
+                    }
+                    if (n2links > 1) {
+                        assert(links[1].constr->getIndex(y) >= 0);
+                        curcost += getBinaryCost(links[1], *iter, *itery);
+                    }
+                }
+                if (ToulBar2::isZ)
+                    mincost = wcsp->LogSumExp(mincost, curcost);
+                else if (curcost < mincost)
+                    mincost = curcost;
+            }
+            if (mincost < negcost)
+                negcost = mincost;
+            yz->addcost(*itery, *iterz, mincost); // Warning! it can add a negative cost temporally
+        }
+    }
+    assert(negcost <= MIN_COST);
+    if (negcost < MIN_COST) {
+        for (iterator itery = y->begin(); itery != y->end(); ++itery) {
+            for (iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+                yz->addcost(*itery, *iterz, -negcost);
+            }
+        }
+        wcsp->decreaseLb(negcost);
+    }
+
+    if (y->unassigned() && z->unassigned())
+        yz->reconnect();
+
+    // to be done before propagation
+    WCSP::elimInfo ei = { this, y, z, (BinaryConstraint*)links[(flag_rev) ? 1 : 0].constr, (BinaryConstraint*)links[(flag_rev) ? 0 : 1].constr, xyz, NULL };
+    wcsp->elimInfos[wcsp->getElimOrder()] = ei;
+    wcsp->elimOrderInc();
+    yz->propagate();
+    return true;
+}
+
+void EnumeratedVariable::eliminate()
+{
+    if (isSep_)
+        return;
+    if (ToulBar2::nbDecisionVars > 0 && wcspIndex < ToulBar2::nbDecisionVars)
+        return;
+    if (ToulBar2::allSolutions && ToulBar2::btdMode != 1 && getName()[0] != IMPLICIT_VAR_TAG[0])
+        return;
+    if (ToulBar2::divNbSol > 1 && getName()[0] != IMPLICIT_VAR_TAG[0] && Store::getDepth() == 0)
+        return;
+
+    assert(!wcsp->getTreeDec() || wcsp->getTreeDec()->getCluster(cluster)->isActive());
+
+    if (ToulBar2::elimDegree_preprocessing_ >= 0 && (getDegree() <= min(1, ToulBar2::elimDegree_preprocessing_) || getTrueDegree() <= ToulBar2::elimDegree_preprocessing_)) {
+        if (ToulBar2::elimSpaceMaxMB && (Double)wcsp->elimSpace + (sizeof(tValue) * (getTrueDegree() + 1) + sizeof(Cost)) * getMaxElimSize() > (Double)ToulBar2::elimSpaceMaxMB * 1024. * 1024.) {
+            if (ToulBar2::verbose >= 1)
+                cout << "Generic variable elimination of " << getName() << " stopped (" << (Double)wcsp->elimSpace / 1024. / 1024. << " + " << (Double)(sizeof(tValue) * (getTrueDegree() + 1) + sizeof(Cost)) * getMaxElimSize() / 1024. / 1024. << " >= " << ToulBar2::elimSpaceMaxMB << " MB)" << endl;
+            return;
+        }
+        wcsp->variableElimination(this);
+        return;
+    }
+
+    if (ToulBar2::allSolutions && ToulBar2::btdMode == 1) {
+        if (Store::getDepth() == 0)
+            return; // tree decomposition not available yet!
+        if (getDegree() > ToulBar2::elimDegree_)
+            return;
+        assert(getDegree() == 0);
+        assert(wcsp->getTreeDec());
+        assert(getDomainSize() > 1);
+        wcsp->getTreeDec()->getCluster(cluster)->multCount(getDomainSize());
+        //		cout << "** "<< wcsp->getTreeDec()->getCluster( cluster )->getCount() << " **" << endl;
+    } else {
+        if (getDegree() > ToulBar2::elimDegree_)
+            return;
+        // if (getDegree()==1 && CSP(wcsp->getLb(),wcsp->getUb()) && constrs->begin().constr->arity() >= 4) {
+        // 	// special case: there is only one n-ary constraint on this variable
+        // 	// and the current domain size is larger than the number of forbidden tuples
+        // 	NaryConstraint *ctr = (NaryConstraint *) constrs->begin().constr;
+        // 	if  (ctr->getDefCost()==0 && ctr->getpf()->size() < getDomainSize()) {
+        // 	  // TO BE DONE: find zero-cost unary support for this variable if it exists
+        //    // if not, cannot deconnect the constraint!
+        // 	  ctr->deconnect();
+        // }
+        if (getDegree() > 0) {
+            TernaryConstraint* ternCtr = existTernary();
+
+            if (ternCtr) {
+                if (!elimVar(ternCtr))
+                    return;
+            } else {
+                if (getDegree() > 2)
+                    return;
+
+                ConstraintLink xylink = *constrs.begin();
+                ConstraintLink xzlink = { NULL, 0 };
+
+                if (xylink.constr->arity() > 2 || !(xylink.constr->extension()))
+                    return;
+
+                if (getDegree() == 2) {
+                    xzlink = *constrs.rbegin();
+                    if (xzlink.constr->arity() > 2 || !(xzlink.constr->extension()))
+                        return;
+
+                    if (!elimVar(xylink, xzlink))
+                        return;
+                } else {
+                    BinaryConstraint* xy = (BinaryConstraint*)xylink.constr;
+                    if (!elimVar(xy))
+                        return;
+                }
+            }
+        } else {
+            if (ToulBar2::isZ) { // add all unary loglike into lowerbound or negCost
+                Cost clogz = MAX_COST;
+                for (EnumeratedVariable::iterator itv = begin(); itv != end(); ++itv) {
+                    clogz = wcsp->LogSumExp(clogz, getCost(*itv));
+                }
+                if (clogz < MIN_COST)
+                    wcsp->decreaseLb(clogz);
+                else
+                    wcsp->increaseLb(clogz);
+            }
+        }
+    }
+    assert(getDegree() == 0);
+    if (ToulBar2::verbose >= 2)
+        cout << "Eliminate End of var " << getName() << endl;
+    assert(getCost(support) == MIN_COST); // it is ensured by previous calls to findSupport
+    assign(support); // warning! dummy assigned value
+}
+
+void EnumeratedVariable::permuteDomain(int nperm)
+{
+    while (nperm) {
+        Value a = myrand() % getDomainInitSize();
+        Value b = myrand() % getDomainInitSize();
+        if (canbe(a) && canbe(b))
+            permuteDomain(a, b);
+        nperm--;
+    }
+}
+
+void EnumeratedVariable::permuteDomain(Value a, Value b)
+{
+    assert(canbe(a) && canbe(b));
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        Constraint* ctr = (*iter).constr;
+        if (ctr->isBinary() && !ctr->isSep()) {
+            BinaryConstraint* bctr = (BinaryConstraint*)ctr;
+            bctr->permute(this, a, b);
+        } else {
+            cerr << "Sorry! cannot sort domains with non-binary cost functions!" << endl;
+            exit(EXIT_FAILURE);
+        }
+    }
+}
+
+static int cmpValueCost(const void* p1, const void* p2)
+{
+    Cost c1 = ((ValueCost*)p1)->cost;
+    Cost c2 = ((ValueCost*)p2)->cost;
+    Value v1 = ((ValueCost*)p1)->value;
+    Value v2 = ((ValueCost*)p2)->value;
+    if (c1 < c2)
+        return -1;
+    else if (c1 > c2)
+        return 1;
+    else if (v1 < v2)
+        return -1;
+    else if (v1 > v2)
+        return 1;
+    else
+        return 0;
+}
+
+/// \warning Must be done just after loading the problem and before any propagate (even projection of unary costs)
+/// \warning Does not work with negative domain values!
+ValueCost* EnumeratedVariable::sortDomain(vector<Cost>& costs)
+{
+    if (ToulBar2::verbose >= 1)
+        cout << "sort variable " << getName() << " (size=" << getDomainSize() << ")" << endl;
+
+    //  // Buble-sort (too slow!!!)
+    //  bool swap = false;
+    //  do {
+    //	swap = false;
+    //	iterator iter = begin();
+    //	Value a = *iter;
+    //	Cost costa = getCost(a);
+    //	++iter;
+    //	while (iter != end()) {
+    //	  Value b = *iter;
+    //	  Cost costb = getCost(b);
+    //	  if (costa > costb) {
+    //		swap = true;
+    //		permuteDomain(a,b);
+    //	  } else {
+    //		a = b;
+    //		costa=costb;
+    //	  }
+    //	  ++iter;
+    //	}
+    //  } while (swap);
+
+    int size = getDomainInitSize();
+    int position[size];
+    int value[size];
+    for (int i = 0; i < size; i++) {
+        position[i] = i;
+        value[i] = i;
+    }
+    //  ValueCost sorted[size];
+    ValueCost* sorted = new ValueCost[size];
+    for (int i = 0; i < size; i++) {
+        sorted[i].value = i;
+        sorted[i].cost = costs[i];
+    }
+    qsort(sorted, size, sizeof(ValueCost), cmpValueCost);
+    for (int i = 0; i < size; i++) {
+        if (position[toIndex(sorted[i].value)] != i) {
+            //		  cout << "swap " << value[i] << "(" << i << ") with " << sorted[i].value << "(" << position[toIndex(sorted[i].value)] << ")" << endl;
+            assert(i < position[toIndex(sorted[i].value)]);
+            permuteDomain(i, position[toIndex(sorted[i].value)]);
+            position[value[i]] = position[toIndex(sorted[i].value)];
+            value[position[toIndex(sorted[i].value)]] = value[i];
+            value[i] = sorted[i].value;
+            position[toIndex(sorted[i].value)] = i;
+        }
+    }
+    for (int i = 0; i < size; i++) {
+        costs[i] = sorted[i].cost;
+    }
+    return sorted;
+}
+
+bool EnumeratedVariable::canbeMerged(EnumeratedVariable* x)
+{
+    if (ToulBar2::nbDecisionVars > 0 && wcspIndex < ToulBar2::nbDecisionVars)
+        return false;
+    if (ToulBar2::allSolutions && getName()[0] != IMPLICIT_VAR_TAG[0] && (ToulBar2::elimDegree >= 0 || ToulBar2::elimDegree_preprocessing >= 0))
+        return false;
+    if (ToulBar2::divNbSol > 1 && getName()[0] != IMPLICIT_VAR_TAG[0] && Store::getDepth() == 0)
+        return false;
+    double mult = (1.0 * x->getDomainSize()) / getDomainSize();
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        Constraint* ctr = (*iter).constr;
+        if (ctr->isGlobal() || ctr->isSep() || (!ctr->extension() && Store::getDepth() > 0))
+            return false;
+        if (mult > 1.1 && (mult * ctr->size() > MAX_NB_TUPLES))
+            return false;
+    }
+    return true;
+}
+
+// only in preprocessing
+void EnumeratedVariable::mergeTo(BinaryConstraint* xy, map<Value, Value>& functional)
+{
+    static Tuple oldtuple, newtuple, tuple;
+    assert(Store::getDepth() == 0);
+    assert(unassigned());
+    EnumeratedVariable* x = (EnumeratedVariable*)xy->getVarDiffFrom(this);
+    assert(x->unassigned());
+    assert(x != this);
+    if (ToulBar2::verbose >= 1) {
+        cout << "Merge variable " << *this << " into variable " << *x << endl;
+        for (map<Value, Value>::iterator itermap = functional.begin(); itermap != functional.end(); ++itermap) {
+            cout << (*itermap).first << "," << (*itermap).second << endl;
+        }
+    }
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        Constraint* ctr = (*iter).constr;
+        assert(!ctr->isGlobal());
+        assert(!ctr->isSep());
+        if (!ctr->extension()) {
+            ctr->deconnect();
+            ctr = ctr->copy();
+        }
+        if (ctr != xy)
+            ctr->deconnect();
+        bool noduplicate = (ctr->getIndex(x) < 0);
+        int scopeIndex[ctr->arity()];
+        int scopeSize = 0;
+        for (int i = 0; i < ctr->arity(); i++) {
+            if (ctr->getVar(i) == this) {
+                if (noduplicate) {
+                    scopeIndex[scopeSize++] = x->wcspIndex;
+                }
+            } else {
+                scopeIndex[scopeSize++] = ctr->getVar(i)->wcspIndex;
+            }
+        }
+        switch (scopeSize) {
+        case 0: {
+            cerr << "Error: empty scope from " << *ctr << " when merging functional variable " << *this << " to variable " << *x << endl;
+            exit(EXIT_FAILURE);
+            break;
+        }
+        case 1: {
+            assert(scopeIndex[0] == x->wcspIndex);
+            assert(ctr->arity() == 2);
+            assert(ctr->getIndex(x) >= 0);
+            if (ctr != xy) {
+                bool modified = false;
+                for (iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+                    assert(canbe(functional[*iterx]));
+                    Cost cost = ((BinaryConstraint*)ctr)->getCost(x, this, *iterx, functional[*iterx]);
+                    if (cost > MIN_COST) {
+                        x->project(*iterx, cost);
+                        modified = true;
+                    }
+                }
+                if (modified)
+                    x->findSupport();
+            } // else xy will be eliminated at the end of this function
+            break;
+        }
+        case 2: {
+            assert(wcsp->unassigned(scopeIndex[0]));
+            assert(wcsp->unassigned(scopeIndex[1]));
+            EnumeratedVariable* u = (EnumeratedVariable*)wcsp->getVar(scopeIndex[0]);
+            EnumeratedVariable* v = (EnumeratedVariable*)wcsp->getVar(scopeIndex[1]);
+            assert(x == u || x == v);
+            vector<Cost> costs((size_t)u->getDomainInitSize() * (size_t)v->getDomainInitSize(), MIN_COST);
+            bool empty = true;
+            oldtuple.resize(ctr->arity());
+            for (EnumeratedVariable::iterator iterU = u->begin(); iterU != u->end(); ++iterU) {
+                for (EnumeratedVariable::iterator iterV = v->begin(); iterV != v->end(); ++iterV) {
+                    for (int i = 0; i < ctr->arity(); i++) {
+                        if (ctr->getVar(i) == this) {
+                            oldtuple[i] = toIndex(functional[(x == u) ? (*iterU) : (*iterV)]);
+                        } else {
+                            assert(ctr->getVar(i) == u || ctr->getVar(i) == v);
+                            oldtuple[i] = ((ctr->getVar(i) == u) ? (u->toIndex(*iterU)) : (v->toIndex(*iterV)));
+                        }
+                    }
+                    Cost cost = ctr->evalsubstr(oldtuple, ctr);
+                    if (cost > MIN_COST) {
+                        empty = false;
+                        costs[u->toIndex(*iterU) * v->getDomainInitSize() + v->toIndex(*iterV)] = cost;
+                    }
+                }
+            }
+            if (!empty)
+                wcsp->postBinaryConstraint(scopeIndex[0], scopeIndex[1], costs);
+            break;
+        }
+        case 3: {
+            assert(wcsp->unassigned(scopeIndex[0]));
+            assert(wcsp->unassigned(scopeIndex[1]));
+            assert(wcsp->unassigned(scopeIndex[2]));
+
+            EnumeratedVariable* u = (EnumeratedVariable*)wcsp->getVar(scopeIndex[0]);
+            EnumeratedVariable* v = (EnumeratedVariable*)wcsp->getVar(scopeIndex[1]);
+            EnumeratedVariable* w = (EnumeratedVariable*)wcsp->getVar(scopeIndex[2]);
+            assert(x == u || x == v || x == w);
+            vector<Cost> costs((size_t)u->getDomainInitSize() * (size_t)v->getDomainInitSize() * (size_t)w->getDomainInitSize(), MIN_COST);
+            bool empty = true;
+            oldtuple.resize(ctr->arity());
+            for (EnumeratedVariable::iterator iterU = u->begin(); iterU != u->end(); ++iterU) {
+                for (EnumeratedVariable::iterator iterV = v->begin(); iterV != v->end(); ++iterV) {
+                    for (EnumeratedVariable::iterator iterW = w->begin(); iterW != w->end(); ++iterW) {
+                        for (int i = 0; i < ctr->arity(); i++) {
+                            if (ctr->getVar(i) == this) {
+                                oldtuple[i] = toIndex(functional[(x == u) ? (*iterU) : ((x == v) ? (*iterV) : (*iterW))]);
+                            } else {
+                                assert(ctr->getVar(i) == u || ctr->getVar(i) == v || ctr->getVar(i) == w);
+                                oldtuple[i] = ((ctr->getVar(i) == u) ? (u->toIndex(*iterU)) : ((ctr->getVar(i) == v) ? (v->toIndex(*iterV)) : (w->toIndex(*iterW))));
+                            }
+                        }
+                        Cost cost = ctr->evalsubstr(oldtuple, ctr);
+                        if (cost > MIN_COST) {
+                            empty = false;
+                            costs[u->toIndex(*iterU) * v->getDomainInitSize() * w->getDomainInitSize() + v->toIndex(*iterV) * w->getDomainInitSize() + w->toIndex(*iterW)] = cost;
+                        }
+                    }
+                }
+            }
+            if (!empty)
+                wcsp->postTernaryConstraint(scopeIndex[0], scopeIndex[1], scopeIndex[2], costs);
+            break;
+        }
+        default: {
+            //	  int res = wcsp->postNaryConstraintBegin(scopeIndex, scopeSize, MIN_COST, 0, true);
+            //	  NaryConstraint *newctrok = (NaryConstraint*) wcsp->getCtr(res);
+            //	  assert(newctrok->arity() == scopeSize);
+            //	  bool empty = true;
+            //	  Tuple oldtuple(ctr->arity(),0);
+            //	  EnumeratedVariable* scopeNewCtr[newctrok->arity()];
+            //	  for(int i=0;i<newctrok->arity();i++) {
+            //		scopeNewCtr[i] = (EnumeratedVariable*) newctrok->getVar(i);
+            //	  }
+            //	  Tuple tuple;
+            //	  Cost cost;
+            //	  newctrok->firstlex();
+            //	  while (newctrok->nextlex(tuple,cost)) {
+            //		for(int i=0;i<ctr->arity();i++) {
+            //		  if (ctr->getVar(i) == this) {
+            //			assert(newctrok->getIndex(x)>=0);
+            //			oldtuple[i] = toIndex(functional[x->toValue(tuple[newctrok->getIndex(x)])]);
+            //		  } else {
+            //			assert(newctrok->getIndex(ctr->getVar(i))>=0);
+            //			oldtuple[i] = tuple[newctrok->getIndex(ctr->getVar(i))];
+            //		  }
+            //		}
+            //		cost = ctr->evalsubstr(oldtuple, ctr);
+            //		if (cost > MIN_COST) {
+            //		  empty = false;
+            //		  newctrok->addtoTuple(tuple,cost);
+            //		}
+            //	  }
+
+            assert(ctr->arity() >= 4);
+            assert(ctr->isNary());
+            NaryConstraint* oldctr = (NaryConstraint*)ctr;
+            Cost defcost = oldctr->getDefCost();
+            int res = wcsp->postNaryConstraintBegin(scopeIndex, scopeSize, defcost, (noduplicate) ? oldctr->size() * x->getDomainInitSize() / getDomainInitSize() : oldctr->size() / getDomainInitSize(), true);
+            Constraint* newctrctr = wcsp->getCtr(res);
+            assert(newctrctr->arity() == scopeSize);
+            AbstractNaryConstraint* newctr = (AbstractNaryConstraint*)newctrctr;
+            newtuple.resize(scopeSize);
+            EnumeratedVariable* scopeNewCtr[scopeSize];
+            for (int i = 0; i < scopeSize; i++) {
+                scopeNewCtr[i] = (EnumeratedVariable*)newctr->getVar(i);
+            }
+            int posx = newctr->getIndex(x);
+            assert(posx >= 0);
+            int posold = oldctr->getIndex(this);
+            assert(posold >= 0);
+            int posxold = oldctr->getIndex(x); // check if x is already in the scope of the old cost function
+            Cost cost;
+            oldctr->first();
+            while (oldctr->next(tuple, cost)) {
+                if (cost != defcost) {
+                    for (int i = 0; i < scopeSize; i++) {
+                        if (i != posx || posxold >= 0) {
+                            assert(oldctr->getIndex(scopeNewCtr[i]) >= 0);
+                            newtuple[i] = tuple[oldctr->getIndex(scopeNewCtr[i])];
+                        }
+                    }
+                    if (posxold >= 0) {
+                        if (functional[x->toValue(tuple[posxold])] == toValue(tuple[posold])) {
+                            newctr->setTuple(newtuple, cost);
+                        }
+                    } else {
+                        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+                            if (functional[*iterX] == toValue(tuple[posold])) {
+                                newtuple[posx] = x->toIndex(*iterX);
+                                newctr->setTuple(newtuple, cost);
+                            }
+                        }
+                    }
+                }
+            }
+
+            //	  newctrok->firstlex();
+            //	  while (newctrok->nextlex(tuple,cost)) {
+            //		  Cost newcost = newctr->evalsubstr(tuple, newctr);
+            //		  if (cost != newcost) {
+            //				  int tmpv = ToulBar2::verbose;
+            //				  ToulBar2::verbose = 7;
+            //				  cout << "BUG: " << cost << " " << newcost << " (" << defcost << ")" << endl;
+            //				  for(unsigned int i=0;i<tuple.size();i++) {
+            //					  cout << tuple[i];
+            //				  }
+            //				  cout << endl;
+            //				  cout << *oldctr << endl;
+            //				  cout << *newctrok << endl;
+            //				  cout << *newctr << endl;
+            //				  ToulBar2::verbose = tmpv;
+            //		  }
+            //	  }
+            //	  newctrok->deconnect(true);
+
+            assert(newctr->connected());
+            if (newctr->universal())
+                newctr->deconnect(true);
+            else
+                newctr->propagate();
+            break;
+        }
+        }
+    }
+    assert(xy->connected());
+    assert(getDegree() == 1);
+    elimVar(xy);
+    assert(getDegree() == 0);
+    assert(getCost(support) == MIN_COST);
+    assign(support); // warning! dummy assigned value
+}
+
+bool EnumeratedVariable::verify()
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (!td)
+        return true;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        Constraint* ctr1 = (*iter).constr;
+        if (ctr1->isSep())
+            continue;
+        if (ctr1->isGlobal() || ctr1->arity() > 3)
+            continue;
+        for (ConstraintList::iterator iter2 = iter; iter2 != constrs.end(); ++iter2) {
+            Constraint* ctr2 = (*iter2).constr;
+            if (ctr1 == ctr2)
+                continue;
+            if (ctr2->isSep())
+                continue;
+            if (ctr2->isGlobal() || ctr2->arity() > 3)
+                continue;
+            if (ctr1->isTernary() && ctr2->isBinary()) {
+                TernaryConstraint* tctr1 = (TernaryConstraint*)ctr1;
+                BinaryConstraint* bctr2 = (BinaryConstraint*)ctr2;
+                if ((tctr1->getIndex(bctr2->getVar(0)) >= 0) && (tctr1->getIndex(bctr2->getVar(1)) >= 0)) {
+                    if (tctr1->getCluster() != bctr2->getCluster()) {
+                        bool t1 = tctr1->xy != bctr2;
+                        bool t2 = tctr1->xz != bctr2;
+                        bool t3 = tctr1->yz != bctr2;
+                        bool t4 = tctr1->isDuplicate() || (!tctr1->xy->isDuplicate() && !tctr1->xz->isDuplicate() && !tctr1->yz->isDuplicate());
+                        if (!t1 || !t2 || !t3 || !t4) {
+                            cout << "isDuplicate problem: " << tctr1->isDuplicate() << "," << tctr1->xy->isDuplicate() << "," << tctr1->xz->isDuplicate() << "," << tctr1->yz->isDuplicate() << " , " << bctr2->isDuplicate() << endl;
+                            cout << *tctr1;
+                            cout << *tctr1->xy;
+                            cout << *tctr1->xz;
+                            cout << *tctr1->yz;
+                            cout << *bctr2;
+                            assert(false);
+                        }
+                    } else {
+                        bool t1 = tctr1->xy == bctr2 || tctr1->xz == bctr2 || tctr1->yz == bctr2;
+                        if (!t1) {
+                            cout << "isDuplicate problem: " << tctr1->isDuplicate() << "," << bctr2->isDuplicate() << ")" << endl;
+                            cout << *tctr1;
+                            cout << *tctr1->xy;
+                            cout << *tctr1->xz;
+                            cout << *tctr1->yz;
+                            cout << *bctr2;
+                            assert(false);
+                        }
+                    }
+                }
+            }
+            if (ctr1->isBinary() && ctr2->isTernary()) {
+                BinaryConstraint* bctr1 = (BinaryConstraint*)ctr1;
+                TernaryConstraint* tctr2 = (TernaryConstraint*)ctr2;
+                if ((tctr2->getIndex(bctr1->getVar(0)) >= 0) && (tctr2->getIndex(bctr1->getVar(1)) >= 0)) {
+                    if (bctr1->getCluster() != tctr2->getCluster()) {
+                        bool t1 = tctr2->xy != bctr1;
+                        bool t2 = tctr2->xz != bctr1;
+                        bool t3 = tctr2->yz != bctr1;
+                        bool t4 = tctr2->isDuplicate() || (!tctr2->xy->isDuplicate() && !tctr2->xz->isDuplicate() && !tctr2->yz->isDuplicate());
+                        if (!t1 || !t2 || !t3 || !t4) {
+                            cout << "isDuplicate problem tern/bin: " << tctr2->isDuplicate() << "," << tctr2->xy->isDuplicate() << "," << tctr2->xz->isDuplicate() << "," << tctr2->yz->isDuplicate() << " , " << bctr1->isDuplicate() << endl;
+                            cout << *tctr2;
+                            cout << *tctr2->xy;
+                            cout << *tctr2->xz;
+                            cout << *tctr2->yz;
+                            cout << *bctr1;
+                            assert(false);
+                        }
+                    } else {
+                        bool t1 = tctr2->xy == bctr1 || tctr2->xz == bctr1 || tctr2->yz == bctr1;
+                        if (!t1) {
+                            cout << "isDuplicate problem: " << tctr2->isDuplicate() << " , " << bctr1->isDuplicate() << endl;
+                            cout << *tctr2;
+                            cout << *bctr1;
+                            assert(false);
+                        }
+                    }
+                }
+            }
+            if (ctr1->isTernary() && ctr2->isTernary()) {
+                TernaryConstraint* tctr1 = (TernaryConstraint*)ctr1;
+                TernaryConstraint* tctr2 = (TernaryConstraint*)ctr2;
+                BinaryConstraint* bctr1 = tctr1->commonBinary(tctr2);
+                BinaryConstraint* bctr2 = tctr2->commonBinary(tctr1);
+                if (bctr1) {
+                    if (bctr1 != bctr2) {
+                        bool t1 = tctr1->getCluster() != tctr2->getCluster();
+                        bool t2 = bctr1->getCluster() != bctr2->getCluster();
+                        bool t3 = (tctr1->isDuplicate() && bctr1->isDuplicate()) || (tctr2->isDuplicate() && bctr2->isDuplicate());
+                        if (!t1 || !t2 || !t3) {
+                            cout << "isDuplicate problem tern/tern/bin/bin: " << tctr1->isDuplicate() << "," << tctr2->isDuplicate() << "," << bctr1->isDuplicate() << "," << bctr2->isDuplicate() << endl;
+                            cout << *tctr1;
+                            cout << *tctr2;
+                            cout << *bctr1;
+                            cout << *bctr2;
+                            assert(false);
+                        }
+
+                    } else {
+                        assert(tctr1->getCluster() == tctr2->getCluster());
+                        assert(bctr1->getCluster() == bctr2->getCluster());
+                    }
+                }
+            }
+            if (ctr1->isBinary() && ctr2->isBinary()) {
+                BinaryConstraint* bctr1 = (BinaryConstraint*)ctr1;
+                BinaryConstraint* bctr2 = (BinaryConstraint*)ctr2;
+                if ((bctr1->getIndex(bctr2->getVar(0)) >= 0) && (bctr1->getIndex(bctr2->getVar(1)) >= 0)) {
+                    assert(bctr1->isDuplicate() || bctr2->isDuplicate());
+                }
+            }
+        }
+    }
+    return true;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2enumvar.hpp b/code/include/tb2/core/tb2enumvar.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..f6137f59d55c3151e57596bbf640b8fcbaedd5b3
--- /dev/null
+++ b/code/include/tb2/core/tb2enumvar.hpp
@@ -0,0 +1,258 @@
+/** \file tb2enumvar.hpp
+ *  \brief Variable with domain represented by an enumerated domain.
+ * 
+ */
+
+#ifndef TB2ENUMVAR_HPP_
+#define TB2ENUMVAR_HPP_
+
+#include "tb2variable.hpp"
+#include "tb2domain.hpp"
+
+class EnumeratedVariable : public Variable {
+protected:
+    Domain domain;
+    vector<StoreCost> costs;
+    StoreCost deltaCost;
+    StoreValue support; // Warning! the unary support has to be backtrackable
+    double trwsGamma; // The gamma factor used in TRW-S
+    vector<string> valueNames;
+
+    DLink<VariableWithTimeStamp> linkACQueue;
+    DLink<VariableWithTimeStamp> linkDACQueue;
+    DLink<VariableWithTimeStamp> linkEAC1Queue;
+    DLink<VariableWithTimeStamp> linkEAC2Queue;
+    DLink<VariableWithTimeStamp> linkDEEQueue;
+    DLink<VariableWithTimeStamp> linkFEACQueue;
+
+    bool watchForIncrease; ///< \warning should be true if there exists a cost function on this variable watching for increase events
+    bool watchForDecrease; ///< \warning should be true if there exists a cost function on this variable watching for decrease events
+    ConstraintLink DEE; ///< \brief residue for dead-end elimination
+    vector<ConstraintLink> DEE2; ///< \brief residue for generalized dead-end elimination
+
+    void init();
+
+    void increaseFast(Value newInf); // Do not check for a support nor insert in NC and DAC queue
+    void decreaseFast(Value newSup); // Do not check for a support nor insert in NC and DAC queue
+    void removeFast(Value val); // Do not check for a support nor insert in NC and DAC queue
+
+public:
+    EnumeratedVariable(WCSP* wcsp, string n, Value iinf, Value isup);
+    EnumeratedVariable(WCSP* wcsp, string n, Value* d, int dsize);
+
+    bool enumerated() const FINAL { return true; }
+
+    bool isValueNames() const { return valueNames.size() == getDomainInitSize(); }
+    void addValueName(const string& vname) { valueNames.push_back(vname); }
+    const string& getValueName(int index) const { static const string None = std::string(""); if (isValueNames()) return valueNames[index]; else return None; }
+    unsigned int toIndex(const string& vname) { vector<string>::iterator iter = find_if(valueNames.begin(), valueNames.end(), [&vname](const string& val){return (val==vname);}); return (unsigned int) std::distance(valueNames.begin(), iter); }
+
+    unsigned int getDomainInitSize() const { return domain.getInitSize(); }
+#if defined(WCSPFORMATONLY) && !defined(NUMBERJACK)
+    unsigned int toIndex(Value v) const
+    {
+        return (unsigned int)v;
+    }
+    Value toValue(unsigned int idx) const { return idx; }
+#else
+    unsigned int toIndex(Value v) const
+    {
+        return domain.toIndex(v);
+    }
+    Value toValue(unsigned int idx) const { return domain.toValue(idx); }
+#endif
+    unsigned int toCurrentIndex(Value v)
+    {
+        return domain.toCurrentIndex(v);
+    } // return value position in current domain
+    unsigned int getDomainSize() const FINAL
+    {
+        if (assigned())
+            return 1;
+        else
+            return domain.getSize(); ///< \warning can return a negative size in the case of a wrong list utilization
+    }
+    void getDomain(Value* array);
+    void getDomainAndCost(ValueCost* array);
+
+    bool canbe(Value v) const FINAL { return v >= inf && v <= sup && domain.canbe(v); }
+    bool canbeAfterElim(Value v) const { return domain.canbe(v); }
+    bool cannotbe(Value v) const FINAL { return v < inf || v > sup || domain.cannotbe(v); }
+
+    void increase(Value newInf, bool isDecision = false) FINAL;
+    void decrease(Value newSup, bool isDecision = false) FINAL;
+    void remove(Value value, bool isDecision = false) FINAL;
+    void assign(Value newValue, bool isDecision = false) FINAL;
+    void assignWhenEliminated(Value newValue);
+    void assignLS(Value newValue, ConstraintSet& delayedCtrs, bool force = false) FINAL;
+
+    void project(Value value, Cost cost, bool delayed = false); ///< \param delayed if true, it does not check for forbidden cost/value and let node consistency do the job later
+    void extend(Value value, Cost cost);
+    void extendAll(Cost cost);
+    Value getSupport() const FINAL { return support; }
+    void setSupport(Value val)
+    {
+        if (support != val) {
+            if (ToulBar2::verbose >= 8)
+                cout << "change support for " << getName() << " from " << support << " to " << val << endl;
+            support = val;
+            if (ToulBar2::FullEAC)
+                queueFEAC();
+        }
+    }
+    inline Cost getCost(const Value value) const FINAL
+    {
+        return costs[toIndex(value)] - deltaCost;
+    }
+    Cost getBinaryCost(ConstraintLink c, Value myvalue, Value itsvalue);
+    Cost getBinaryCost(BinaryConstraint* c, Value myvalue, Value itsvalue);
+
+    void setTRWSGamma(double g) { trwsGamma = g; }
+    double getTRWSGamma() const { return trwsGamma; }
+
+    Cost getInfCost() const FINAL { return costs[toIndex(getInf())] - deltaCost; }
+    Cost getSupCost() const FINAL { return costs[toIndex(getSup())] - deltaCost; }
+    void projectInfCost(Cost cost) FINAL;
+    void projectSupCost(Cost cost) FINAL;
+
+    void propagateNC() FINAL;
+    bool verifyNC() FINAL;
+    void queueAC(); // public method used also by tb2binconstr.hpp
+    void queueDAC();
+    void propagateAC();
+    void propagateDAC();
+    void findSupport();
+    Cost normalizeTRWS();
+    bool verify();
+
+    void queueEAC1();
+    void queueEAC2();
+    void queueFEAC();
+    void fillEAC2(bool self);
+    bool isEAC(Value a);
+    bool isEAC() FINAL;
+    void propagateEAC();
+    void setCostProvidingPartition();
+    bool checkEACGreedySolution();
+    bool reviseEACGreedySolution();
+
+    void eliminate() FINAL;
+    bool elimVar(BinaryConstraint* xy);
+    bool elimVar(ConstraintLink xylink, ConstraintLink xzlink);
+    bool elimVar(TernaryConstraint* xyz);
+
+    void queueDEE() FINAL;
+    void propagateDEE(Value a, Value b, bool dee = true);
+    bool verifyDEE(Value a, Value b);
+    bool verifyDEE() FINAL;
+
+    // merge current cost functions to x's list by replacing current variable y by x thanks to functional constraint xy (i.e., y := functional[x])
+    void mergeTo(BinaryConstraint* xy, map<Value, Value>& functional);
+    bool canbeMerged(EnumeratedVariable* x);
+
+    class iterator;
+    friend class iterator;
+    class iterator {
+        EnumeratedVariable* var;
+        Domain::iterator diter;
+
+    public:
+        iterator() { var = NULL; }
+        iterator(EnumeratedVariable* v, Domain::iterator iter)
+            : var(v)
+            , diter(iter)
+        {
+        }
+
+        Value operator*() const { return *diter; }
+
+        iterator& operator++()
+        { // Prefix form //TODO: add a const_iterator to speed-up iterations (should be inlined?)
+            if (var->unassigned())
+                ++diter;
+            else {
+                if (*diter < var->getValue())
+                    diter = var->domain.lower_bound(var->getValue());
+                else
+                    diter = var->domain.end();
+            }
+            return *this;
+        }
+
+        iterator& operator--()
+        { // Prefix form
+            if (var->unassigned())
+                --diter;
+            else {
+                if (*diter > var->getValue())
+                    diter = var->domain.lower_bound(var->getValue());
+                else
+                    diter = var->domain.end();
+            }
+            return *this;
+        }
+
+        // To see if you're at the end:
+        bool operator==(const iterator& iter) const { return diter == iter.diter; }
+        bool operator!=(const iterator& iter) const { return diter != iter.diter; }
+    };
+    iterator begin()
+    {
+        if (assigned())
+            return iterator(this, domain.lower_bound(getValue()));
+        else
+            return iterator(this, domain.begin());
+    }
+    iterator end() { return iterator(this, domain.end()); }
+    iterator rbegin()
+    {
+        if (assigned())
+            return iterator(this, domain.upper_bound(getValue()));
+        else
+            return iterator(this, domain.rbegin());
+    }
+    iterator rend() { return end(); }
+
+    //Finds the first available element whose value is greater or equal to v
+    iterator lower_bound(Value v)
+    {
+        if (assigned()) {
+            if (v <= getValue())
+                return iterator(this, domain.lower_bound(getValue()));
+            else
+                return end();
+        } else if (v > sup) {
+            return end();
+        } else
+            return iterator(this, domain.lower_bound(max(getInf(), v)));
+    }
+
+    //Finds the first available element whose value is lower or equal to v
+    iterator upper_bound(Value v)
+    {
+        if (assigned()) {
+            if (v >= getValue())
+                return iterator(this, domain.upper_bound(getValue()));
+            else
+                return end();
+        } else if (v < inf) {
+            return end();
+        } else
+            return iterator(this, domain.upper_bound(min(getSup(), v)));
+    }
+
+    void permuteDomain(int numberOfPermutations);
+    void permuteDomain(Value a, Value b);
+    ValueCost* sortDomain(vector<Cost>& costs);
+
+    virtual void print(ostream& os);
+};
+
+#endif /*TB2ENUMVAR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2globaldecomposable.cpp b/code/include/tb2/core/tb2globaldecomposable.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0ac3e75faa1fed5e6e1549d1054d7a147f8a80e3
--- /dev/null
+++ b/code/include/tb2/core/tb2globaldecomposable.cpp
@@ -0,0 +1,1740 @@
+#include "tb2globaldecomposable.hpp"
+
+/// DECOMPOSABLE COST FUNCTION /////////////////////////////////////////
+
+DecomposableGlobalCostFunction::DecomposableGlobalCostFunction()
+    : arity(0)
+    , scope(NULL)
+    , label("empty")
+{
+    ToulBar2::Berge_Dec = 1;
+}
+
+DecomposableGlobalCostFunction::DecomposableGlobalCostFunction(unsigned int _arity, int* _scope)
+    : arity(_arity)
+    , label("empty")
+{
+    scope = new int[arity];
+    for (unsigned int variable = 0; variable < _arity; ++variable) {
+        scope[variable] = _scope[variable];
+    }
+    ToulBar2::Berge_Dec = 1;
+}
+
+DecomposableGlobalCostFunction::~DecomposableGlobalCostFunction()
+{
+    delete[] scope;
+}
+
+DecomposableGlobalCostFunction*
+DecomposableGlobalCostFunction::FactoryDGCF(string type, unsigned int _arity, int* _scope, istream& file, bool mult)
+{
+    //cout << "Creating a " << type << " global cost function " << endl;
+    if (type == "wamong")
+        return new WeightedAmong(_arity, _scope, file, mult);
+    if (type == "wvaramong")
+        return new WeightedVarAmong(_arity, _scope, file, mult);
+    if (type == "wsum")
+        return new WeightedSum(_arity, _scope, file, mult);
+    if (type == "wvarsum")
+        return new WeightedVarSum(_arity, _scope, file, mult);
+    if (type == "woverlap")
+        return new WeightedOverlap(_arity, _scope, file, mult);
+
+    if (type == "walldifferent" || type == "walldiff")
+        return new WeightedAllDifferent(_arity, _scope, file, mult);
+    if (type == "wgcc")
+        return new WeightedGcc(_arity, _scope, file, mult);
+    if (type == "wregular")
+        return new WeightedRegular(_arity, _scope, file, mult);
+    if (type == "wsame")
+        return new WeightedSame(_arity, _scope, file, mult);
+    if (type == "wsamegcc")
+        return new WeightedSameGcc(_arity, _scope, file, mult);
+
+    cout << type << " unknown decomposable global cost function" << endl;
+    return 0;
+}
+
+void DecomposableGlobalCostFunction::color(int i)
+{
+    switch (i) {
+    case 1:
+        cout << "\033[41m";
+        break;
+    case 2:
+        cout << "\033[42m";
+        break;
+    case 3:
+        cout << "\033[43m";
+        break;
+    case 4:
+        cout << "\033[44m";
+        break;
+    case 5:
+        cout << "\033[45m";
+        break;
+    case 6:
+        cout << "\033[46m";
+        break;
+    case 7:
+        cout << "\033[47m";
+        break;
+    case 8:
+        cout << "\033[40m\033[37m";
+        break;
+    default:
+        cout << "\033[0m";
+        break;
+    };
+}
+
+/// WEIGHTED AMONG /////////////////////////////////////////////////////
+
+WeightedAmong::WeightedAmong()
+    : DecomposableGlobalCostFunction()
+{
+}
+
+WeightedAmong::WeightedAmong(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+}
+
+WeightedAmong::WeightedAmong(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    file >> semantics >> baseCost;
+    if (mult)
+        baseCost *= ToulBar2::costMultiplier;
+    unsigned int nbValue;
+    file >> nbValue;
+    for (unsigned int value = 0; value < nbValue; ++value) {
+        int valueRead;
+        file >> valueRead;
+        values.insert(valueRead);
+    }
+    file >> lb >> ub;
+}
+
+WeightedAmong::~WeightedAmong()
+{
+    values.clear();
+}
+
+void WeightedAmong::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    bool VERBOSE = false;
+    bool VVERBOSE = false;
+    int nbVariableCFN = wcsp->numberOfVariables();
+    //cout << nbVariableCFN << endl;
+
+    // -- new variables : counters -- //
+    int addVariablesIndex[arity + 1];
+    for (int newVariable = 0; newVariable <= arity; newVariable++) {
+        string varname = IMPLICIT_VAR_TAG + "WAmong" + to_string(nbVariableCFN) + "_" + to_string(newVariable);
+        addVariablesIndex[newVariable] = wcsp->makeEnumeratedVariable(varname, 0, newVariable);
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(addVariablesIndex[newVariable]));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+        if (VERBOSE) {
+            color(5);
+            cout << "new variable " << addVariablesIndex[newVariable] << "(" << ((EnumeratedVariable*)wcsp->getVar(addVariablesIndex[newVariable]))->getDomainInitSize() << ")";
+            color(0);
+            cout << endl;
+        }
+    }
+
+    Cost top = wcsp->getUb();
+    // -- ternary constraints : partial sum -- //
+    for (int variable = 0; variable < arity; ++variable) {
+        int indexCi = addVariablesIndex[variable];
+        int indexCj = addVariablesIndex[variable + 1];
+        int indexXi = scope[variable];
+        if (VERBOSE) {
+            color(5);
+            cout << indexCi << "--" << indexXi << "--" << indexCj;
+            color(0);
+            cout << endl;
+        }
+        EnumeratedVariable* varCi = (EnumeratedVariable*)wcsp->getVar(indexCi);
+        EnumeratedVariable* varCj = (EnumeratedVariable*)wcsp->getVar(indexCj);
+        EnumeratedVariable* varXi = (EnumeratedVariable*)wcsp->getVar(indexXi);
+        wcsp->getListSuccessors()->at(indexCi).push_back(indexXi);
+        wcsp->getListSuccessors()->at(indexXi).push_back(indexCj);
+
+        unsigned long tableSize = long(varCi->getDomainInitSize() * varCj->getDomainInitSize() * varXi->getDomainInitSize());
+        vector<Cost> ternaryCosts(tableSize, top);
+
+        for (unsigned long valuePosition = 0; valuePosition < varXi->getDomainInitSize(); valuePosition++) {
+            Value value = varXi->toValue(valuePosition);
+            for (unsigned long counterPosition = 0; counterPosition < varCi->getDomainInitSize(); counterPosition++) {
+                long counter = varCi->toValue(counterPosition);
+
+                int nextCounter = counter;
+                if (values.find(value) != values.end()) {
+                    nextCounter++;
+                }
+                if (VVERBOSE)
+                    cout << counter << "(" << counterPosition << ")"
+                         << " && " << value << "(" << valuePosition << ")"
+                         << " ==> " << nextCounter << "\t";
+                //	unsigned long position =  (counter) 		* (varXi->getDomainInitSize()*varCj->getDomainInitSize())
+                //							+ (value) 			* (varCj->getDomainInitSize())
+                //							+ (nextCounter);
+                unsigned long position = (counterPosition) * (varXi->getDomainInitSize() * varCj->getDomainInitSize())
+                    + (valuePosition) * (varCj->getDomainInitSize())
+                    + (nextCounter);
+                if (VVERBOSE)
+                    cout << position << "/" << tableSize << endl;
+                ternaryCosts[position] = 0;
+            }
+        }
+        wcsp->postTernaryConstraint(indexCi, indexXi, indexCj, ternaryCosts);
+    }
+
+    // -- unary constraints : final variable -- //
+    if (VERBOSE) {
+        color(5);
+        cout << "post unary constraint on " << addVariablesIndex[arity];
+        color(0);
+        cout << endl;
+    }
+    vector<Cost> unaryCosts(arity + 1, top);
+    for (int i = 0; i <= arity; i++) {
+        int gap = max(0, max(int(lb - i), int(i - ub)));
+        if (semantics == "hard") {
+            if (((unsigned int)i) >= lb && ((unsigned int)i) <= ub)
+                unaryCosts[i] = 0;
+            else
+                unaryCosts[i] = min(top, baseCost);
+        }
+        if (semantics == "lin" || semantics == "var")
+            unaryCosts[i] = min(top, baseCost * gap);
+        if (semantics == "quad")
+            unaryCosts[i] = min(top, baseCost * gap * gap);
+        if (VVERBOSE)
+            cout << i << " => " << unaryCosts[i] << endl;
+    }
+    wcsp->postUnary(addVariablesIndex[arity], unaryCosts);
+}
+
+Cost WeightedAmong::evaluate(int* tuple)
+{
+    int occurency = 0;
+    for (int var = 0; var < arity; var++) {
+        if (values.find(tuple[var]) != values.end())
+            occurency++;
+    }
+    int gap = max(0, max(int(lb - occurency), int(occurency - ub)));
+    if (gap) {
+        if (semantics == "hard")
+            return baseCost;
+        if (semantics == "lin" || semantics == "var")
+            return baseCost * gap;
+        if (semantics == "quad")
+            return baseCost * gap * gap;
+    }
+    return 0;
+}
+
+void WeightedAmong::display()
+{
+    cout << "WAmong (" << arity << ") : ";
+    for (int variable = 0; variable < arity; ++variable) {
+        cout << scope[variable] << " ";
+    }
+    cout << endl;
+    cout << "sem : " << semantics << " " << baseCost << endl;
+    cout << "val : ";
+    for (set<int>::iterator value = values.begin(); value != values.end(); value++) {
+        cout << *value << " ";
+    }
+    cout << endl;
+    cout << "bounds [" << lb << ":" << ub << "]" << endl;
+}
+
+/// WEIGHTED REGULAR ///////////////////////////////////////////////////
+
+WeightedRegular::WeightedRegular()
+    : DecomposableGlobalCostFunction()
+    , automaton(0)
+{
+}
+
+WeightedRegular::WeightedRegular(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+    , automaton(0)
+{
+}
+
+WeightedRegular::WeightedRegular(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    automaton = new WFA(file, mult);
+}
+
+WeightedRegular::~WeightedRegular()
+{
+    delete automaton;
+}
+
+void WeightedRegular::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    ToulBar2::Berge_Dec = 1;
+    //automaton->display();
+    Cost top = wcsp->getUb();
+    int unsigned current_var_number = wcsp->numberOfVariables();
+    int unsigned q0 = current_var_number;
+    if (ToulBar2::verbose > 1) {
+        cout << "DEBUG>> wregular found : initial number of variables before creation = " << wcsp->numberOfVariables() << endl;
+        cout << "DEBUG>> wregular Automatum Total number of states: " << automaton->getNbStates() << endl;
+        cout << "DEBUG>> wregular Initial states number: " << automaton->getInitialStates().size() << endl;
+        cout << "DEBUG>> wregular add new variable from " << q0 << " to " << current_var_number + arity + 1 << endl;
+    }
+    if (current_var_number > 0) {
+        int unsigned domsize = automaton->getNbStates() - 1;
+        string varname = IMPLICIT_VAR_TAG + "WR" + to_string(current_var_number);
+        if (ToulBar2::verbose > 1)
+            cout << "DEBUG>> wregular q0 index " << q0 << " domain = " << domsize + 1 << endl;
+        int varIdx = wcsp->makeEnumeratedVariable(varname, (Value)0, (Value)domsize); // add q0 variable
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(varIdx));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+        if (ToulBar2::verbose > 1)
+            cout << "wregular add varname =" << varname << "=> var index " << wcsp->numberOfVariables() << " domain size = " << domsize + 1 << endl;
+    } else {
+        exit(EXIT_FAILURE);
+    }
+    //################################################initial state ##############################################
+    if (automaton->getInitialStates().size() > 0) {
+        vector<Cost> initial_states_costs(automaton->getNbStates(), top);
+        list<pair<int, Cost>> initialStates = automaton->getInitialStates();
+        for (list<pair<int, Cost>>::iterator it = initialStates.begin(); it != initialStates.end(); ++it) {
+            pair<int, Cost> initial = *it;
+            //cout << initial.first << " " << initial.second << endl;
+            initial_states_costs[initial.first] = initial.second;
+        }
+        wcsp->postUnary(q0, initial_states_costs);
+        if (ToulBar2::verbose > 1) {
+            cout << "DEBUG>> wregular initial state (q0) vector size ( nbre value) = " << initial_states_costs.size() << endl;
+            cout << "DEBUG>> wregular var q0= " << q0 << " number of constraint wregular initialisation ==>" << wcsp->numberOfConstraints() << endl;
+        }
+    }
+    //################################################accepting state ##############################################
+    for (int v = 1; v < arity + 1; v++) {
+        int unsigned domsize = automaton->getNbStates() - 1;
+        string varname = IMPLICIT_VAR_TAG + "WR" + to_string(v + q0);
+
+        //        DEBONLY(int theindex =)
+        int theindex = wcsp->makeEnumeratedVariable(varname, (Value)0, (Value)domsize); // add qi variable
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(theindex));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+        assert(theindex == v + (int)current_var_number);
+        if (ToulBar2::verbose > 1)
+            cout << "DEBUG>> wregular add varname =" << varname << "=> rank " << wcsp->numberOfVariables() << " domain = " << domsize + 1 << endl;
+    }
+    int unsigned q_last = wcsp->numberOfVariables() - 1;
+    if (ToulBar2::verbose > 1)
+        cout << "DEBUG>> wregular Final number of variables : " << wcsp->numberOfVariables() << endl;
+    vector<Cost> final_states_costs(automaton->getNbStates(), top);
+
+    list<pair<int, Cost>> acceptingStates = automaton->getAcceptingStates();
+    if (acceptingStates.size() > 0) {
+
+        for (list<pair<int, Cost>>::iterator it = acceptingStates.begin(); it != acceptingStates.end(); ++it) {
+            pair<int, Cost> accept = *it;
+            int unsigned t_index = accept.first;
+            Cost ucost = accept.second;
+
+            EnumeratedVariable* Qv = (EnumeratedVariable*)wcsp->getVar(q_last); // get domaine size of last qi var
+            unsigned long DomVar = Qv->getDomainInitSize();
+
+            if (t_index < DomVar) {
+                final_states_costs[t_index] = ucost;
+            } else {
+                cout << "wregular tuple error " << t_index << "out of domain" << DomVar << endl;
+                exit(EXIT_FAILURE);
+            }
+        }
+        wcsp->postUnary(q_last, final_states_costs);
+
+        if (ToulBar2::verbose > 1) {
+            cout << "DEBUG>> wregular last q varname = " << q_last << endl;
+        }
+    } else {
+        throw Contradiction();
+    }
+    /*
+				//################################################### lecture des transition ????
+				if ( ToulBar2::verbose > 1 ) 
+				cout << "DEBUG>>wregular final number of Unary constraint Post after q0 and qi post : " << numberOfConstraints()  << endl;
+				//==================
+				// transition stat reading 
+				//==================
+				int nb_transition;
+				vector<unsigned int> VQi;
+				vector<unsigned int> VQj;
+				vector<unsigned int> VXi;
+				vector<Cost> transition_costs;
+				file >> nb_transition;
+				if ( ToulBar2::verbose > 1 ) cout << "DEBUG>> wregular transitions number :  " <<  nb_transition <<endl;
+				for( int s = 0 ; s < nb_transition ; s++)
+				{
+					int qi;
+					int xi;
+					int qj;
+					Cost transition_COST;
+					file >> qi;
+					file >> xi;
+					file >> qj;
+					file >> transition_COST;
+					VQi.push_back(qi);
+					VXi.push_back(xi);
+					VQj.push_back(qj);
+					transition_costs.push_back(transition_COST);
+
+					if ( ToulBar2::verbose > 1 ) {
+					cout << "DEBUG>> wregular read transition table qi =" << qi << " xi =" << xi << " qj =" << qj << " cost=" << transition_COST << endl;
+					cout << "DEBUG>> wregular scope xi " << scopeIndex[xi] <<endl;
+					}
+				}
+     */
+    //##################################################ajout ternaire#############################
+    for (int q = 0; q < arity; q++) {
+        int qi = q0 + q;
+        int xi = scope[q];
+        int qj = qi + 1;
+        if (ToulBar2::verbose > 1)
+            cout << "DEBUG>>wregular  post ternary on  qi =" << qi << " xi =" << xi << " qj =" << qj << endl;
+        // poiner on qi , xi , qj varibale
+        EnumeratedVariable* Qi = (EnumeratedVariable*)wcsp->getVar(qi); //current qi variable;
+        EnumeratedVariable* Xi = (EnumeratedVariable*)wcsp->getVar(xi); //current Xi variable;
+        EnumeratedVariable* Qj = (EnumeratedVariable*)wcsp->getVar(qj); //current qj variable;
+        // domain definition
+        unsigned long DomQi = Qi->getDomainInitSize();
+        unsigned long DomQj = Qi->getDomainInitSize();
+        unsigned long DomXi = Xi->getDomainInitSize();
+        unsigned long Domsize = long(Qi->getDomainInitSize() * Xi->getDomainInitSize() * Qj->getDomainInitSize());
+
+        vector<Cost> tmp_ternary_costs(Domsize, top);
+        list<WTransition*> transitions = automaton->getTransitions();
+        for (list<WTransition*>::iterator it = transitions.begin(); it != transitions.end(); ++it) {
+            WTransition* transition = *it;
+            int start = transition->start;
+            int end = transition->end;
+            unsigned int symbol = transition->symbol;
+            int positionSymbol = 0;
+            for (EnumeratedVariable::iterator iter = Xi->begin(); iter != Xi->end(); ++iter) {
+                if (symbol == Xi->toIndex(*iter))
+                    break;
+                positionSymbol++;
+            }
+            Cost weight = transition->weight;
+
+            if (symbol < DomXi) {
+                unsigned long cindex = start * DomXi * DomQj + positionSymbol * DomQj + end;
+                tmp_ternary_costs[cindex] = weight;
+            }
+            if (ToulBar2::verbose > 1) {
+                cout << "DEBUG>> wregular init cost vector for ternary rank= " << q << endl;
+                cout << "DEBUG>> wregular add ternary table qi =" << qi << " xi =" << xi << " qj =" << qj << endl;
+                cout << "DEBUG>> wregular Ternary const DOMAIN SIZE = " << Domsize << " Dom qi =" << DomQi << " Dom Xi=" << DomXi << " Dom Qj =" << DomQj << " -------" << endl;
+                cout << "DEBUG>> wregular initial COST SIZE = " << tmp_ternary_costs.size() << endl;
+                cout << "DEBUG>> wregular number of constraint before ternary cost function : " << wcsp->numberOfConstraints() << endl;
+            }
+        }
+        wcsp->postTernaryConstraint(qi, xi, qj, tmp_ternary_costs);
+        wcsp->getListSuccessors()->at(qi).push_back(xi);
+        wcsp->getListSuccessors()->at(xi).push_back(qj);
+    }
+    if (ToulBar2::verbose >= 1)
+        cout << "DEBUG>> wregular Total number of constraints after wregular posting " << wcsp->numberOfConstraints() << endl;
+}
+
+void WeightedRegular::display()
+{
+    cout << "WRegular (" << arity << ") : ";
+    for (int variable = 0; variable < arity; ++variable) {
+        cout << scope[variable] << " ";
+    }
+    cout << endl;
+    if (automaton) {
+        automaton->display();
+    } else {
+        cout << "no automaton associated" << endl;
+    }
+}
+
+/// WEIGHTED SUM ///////////////////////////////////////////////////////
+
+WeightedSum::WeightedSum()
+    : DecomposableGlobalCostFunction()
+{
+}
+
+WeightedSum::WeightedSum(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+}
+
+WeightedSum::WeightedSum(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    file >> semantics >> baseCost;
+    if (mult)
+        baseCost *= ToulBar2::costMultiplier;
+    file >> comparator >> rightRes;
+}
+
+WeightedSum::~WeightedSum() {}
+
+void WeightedSum::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    int nbVariableCFN = wcsp->numberOfVariables();
+    //cout << nbVariableCFN << endl;
+
+    // -- new variables : counters -- //
+    int addVariablesIndex[arity + 1];
+    int cumulDOWN = 0;
+    int cumulUP = 0;
+    for (int newVariable = 0; newVariable <= arity; newVariable++) {
+        string varname = IMPLICIT_VAR_TAG + "WSum" + to_string(nbVariableCFN) + "_" + to_string(newVariable);
+        addVariablesIndex[newVariable] = wcsp->makeEnumeratedVariable(varname, cumulDOWN, cumulUP);
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(addVariablesIndex[newVariable]));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+        //cout << "\033[45m" << "new variable \033[0m" << addVariablesIndex[newVariable] << "("<< ((EnumeratedVariable *) wcsp->getVar(addVariablesIndex[newVariable]))->getInf()<< ":" << ":" << ((EnumeratedVariable *) wcsp->getVar(addVariablesIndex[newVariable]))->getSup() << ")" << "\033[0m" << endl;
+        if (newVariable < arity) {
+            cumulDOWN += ((EnumeratedVariable*)wcsp->getVar(scope[newVariable]))->getInf();
+            cumulUP += ((EnumeratedVariable*)wcsp->getVar(scope[newVariable]))->getSup();
+            //cout << newVariable << " ["<<((EnumeratedVariable *) wcsp->getVar(scope[newVariable]))->getInf()<<":"<<((EnumeratedVariable *) wcsp->getVar(scope[newVariable]))->getSup()<<"] " << endl;
+            //cout << cumulDOWN << "<->" << cumulUP << endl;
+        }
+    }
+
+    Cost top = wcsp->getUb();
+    // -- ternary constraints : partial sum -- //
+    for (int variable = 0; variable < arity; ++variable) {
+        int indexCi = addVariablesIndex[variable];
+        int indexCj = addVariablesIndex[variable + 1];
+        int indexXi = scope[variable];
+        EnumeratedVariable* varCi = (EnumeratedVariable*)wcsp->getVar(indexCi);
+        EnumeratedVariable* varCj = (EnumeratedVariable*)wcsp->getVar(indexCj);
+        EnumeratedVariable* varXi = (EnumeratedVariable*)wcsp->getVar(indexXi);
+        wcsp->getListSuccessors()->at(indexCi).push_back(indexXi);
+        wcsp->getListSuccessors()->at(indexXi).push_back(indexCj);
+
+        //cout << "\033[46m" << "post ternary constraint on " << indexCi <<"("<<varCi->getDomainInitSize()<<")" << ","  << indexXi <<"("<<varXi->getDomainInitSize()<<")" << ","  << indexCj <<"("<<varCj->getDomainInitSize()<<")" << "\033[0m" << endl;
+
+        unsigned long tableSize = long(varCi->getDomainInitSize() * varCj->getDomainInitSize() * varXi->getDomainInitSize());
+        vector<Cost> ternaryCosts(tableSize, top);
+
+        for (unsigned long valueXPosition = 0; valueXPosition < varXi->getDomainInitSize(); valueXPosition++) {
+            long value = varXi->toValue(valueXPosition);
+            for (unsigned long valueCiPosition = 0; valueCiPosition < varCi->getDomainInitSize(); valueCiPosition++) {
+                long counter_i = varCi->toValue(valueCiPosition);
+                for (unsigned long valueCjPosition = 0; valueCjPosition < varCj->getDomainInitSize(); valueCjPosition++) {
+                    long counter_j = varCj->toValue(valueCjPosition);
+
+                    if (counter_j == (counter_i + value)) {
+                        //cout << counter_i << " + " << value << " = " << counter_j << endl;
+                        unsigned long position = (valueCiPosition) * (varXi->getDomainInitSize() * varCj->getDomainInitSize())
+                            + (valueXPosition) * (varCj->getDomainInitSize())
+                            + (valueCjPosition);
+                        ternaryCosts[position] = 0;
+                    }
+                }
+            }
+        }
+        wcsp->postTernaryConstraint(indexCi, indexXi, indexCj, ternaryCosts);
+    }
+
+    // -- unary constraints : final variable -- //
+    //cout << "\033[46m" << "post unary constraint on " << addVariablesIndex[arity] << "\033[0m" << endl;
+    int sizeLast = cumulUP - cumulDOWN + 1;
+    //cout << cumulDOWN << " -> " << cumulUP << " :: " << sizeLast << endl;
+    vector<Cost> unaryCosts(sizeLast, top);
+    int positionVar = 0;
+
+    for (int i = cumulDOWN; i <= cumulUP; i++) {
+        bool compFound = false;
+        int gap = 0;
+
+        if (comparator == "==") {
+            compFound = true;
+            if (i != rightRes)
+                gap = (i < rightRes) ? (rightRes - i) : (i - rightRes);
+        }
+        if (comparator == "!=") {
+            compFound = true;
+            if (i == rightRes)
+                gap = 1;
+        }
+        if (comparator == "<" || comparator == "<=") {
+            compFound = true;
+            int newRightRes = rightRes;
+            if (comparator == "<")
+                newRightRes--;
+            if (i > newRightRes)
+                gap = i - newRightRes;
+        }
+        if (comparator == ">" || comparator == ">=") {
+            compFound = true;
+            int newRightRes = rightRes;
+            if (comparator == ">")
+                newRightRes++;
+            if (i < newRightRes)
+                gap = newRightRes - i;
+        }
+
+        if (semantics == "hard")
+            unaryCosts[positionVar] = (gap) ? baseCost : 0;
+        if (semantics == "lin" || semantics == "var")
+            unaryCosts[positionVar] = gap * baseCost;
+        if (semantics == "quad")
+            unaryCosts[positionVar] = gap * (gap * baseCost);
+        //cout << positionVar << " (=) " << i << " ==> " << unaryCosts[positionVar] << endl;
+
+        if (!compFound) {
+            cout << "comparator " << comparator << " not handle yet" << endl;
+        }
+        positionVar++;
+    }
+    //EnumeratedVariable* lastVar = (EnumeratedVariable *) wcsp->getVar(addVariablesIndex[arity]);
+    //cout << addVariablesIndex[arity] << " " << lastVar->getDomainInitSize() << " [" <<  lastVar->getInf() << ":" << lastVar->getSup()<< "]" << endl;
+    wcsp->postUnary(addVariablesIndex[arity], unaryCosts);
+    //cout << "after  adding to CFN" << endl;
+}
+
+Cost WeightedSum::evaluate(int* tuple)
+{
+    int sum = 0;
+    for (int var = 0; var < arity; var++) {
+        sum += tuple[var];
+    }
+    if (comparator == "==") {
+        int gap = (sum < rightRes) ? rightRes - sum : sum - rightRes;
+        if (semantics == "hard")
+            return min(gap * baseCost, baseCost);
+        if (semantics == "lin" || semantics == "var")
+            return gap * baseCost;
+        if (semantics == "quad")
+            return gap * (gap * baseCost);
+    }
+    if (comparator == "!=") {
+        if (sum != rightRes)
+            return baseCost;
+    }
+    if (comparator == "<" || comparator == "<=") {
+        int newRightRes = rightRes;
+        if (comparator == "<")
+            newRightRes--;
+        int gap = max(0, sum - newRightRes);
+        if (semantics == "hard")
+            return min(gap * baseCost, baseCost);
+        if (semantics == "lin" || semantics == "var")
+            return gap * baseCost;
+        if (semantics == "quad")
+            return gap * (gap * baseCost);
+    }
+    if (comparator == ">" || comparator == ">=") {
+        int newRightRes = rightRes;
+        if (comparator == ">")
+            newRightRes++;
+        int gap = max(0, newRightRes - sum);
+        if (semantics == "hard")
+            return min(gap * baseCost, baseCost);
+        if (semantics == "lin" || semantics == "var")
+            return gap * baseCost;
+        if (semantics == "quad")
+            return gap * (gap * baseCost);
+    }
+    return 0;
+}
+
+void WeightedSum::display()
+{
+    cout << "WSum (" << arity << ") : ";
+    for (int variable = 0; variable < arity; ++variable) {
+        cout << scope[variable] << " ";
+    }
+    cout << endl;
+    cout << comparator << " " << rightRes << endl;
+    cout << semantics << " " << baseCost << endl;
+}
+
+/// WEIGHTED VAR SUM ///////////////////////////////////////////////////////
+
+WeightedVarSum::WeightedVarSum()
+    : DecomposableGlobalCostFunction()
+{
+}
+
+WeightedVarSum::WeightedVarSum(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+}
+
+WeightedVarSum::WeightedVarSum(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    file >> semantics >> baseCost;
+    if (mult)
+        baseCost *= ToulBar2::costMultiplier;
+    file >> comparator;
+}
+
+WeightedVarSum::~WeightedVarSum() {}
+
+void WeightedVarSum::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    int nbVariableCFN = wcsp->numberOfVariables();
+
+    /// -- new variables : counters -- ///
+    int addVariablesIndex[arity + 1];
+    int cumulDOWN = 0;
+    int cumulUP = 0;
+    for (int newVariable = 0; newVariable <= arity - 1; newVariable++) {
+        string varname = IMPLICIT_VAR_TAG + "WVarSum" + to_string(nbVariableCFN) + "_" + to_string(newVariable);
+        addVariablesIndex[newVariable] = wcsp->makeEnumeratedVariable(varname, cumulDOWN, cumulUP);
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(addVariablesIndex[newVariable]));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+        //cout << "\033[45m" << "new variable \033[0m" << addVariablesIndex[newVariable] << "("<< ((EnumeratedVariable *) wcsp->getVar(addVariablesIndex[newVariable]))->getInf()<< ":" << ":" << ((EnumeratedVariable *) wcsp->getVar(addVariablesIndex[newVariable]))->getSup() << ")" << "\033[0m" << endl;
+        if (newVariable < arity) {
+            cumulDOWN += ((EnumeratedVariable*)wcsp->getVar(scope[newVariable]))->getInf();
+            cumulUP += ((EnumeratedVariable*)wcsp->getVar(scope[newVariable]))->getSup();
+            //cout << newVariable << " ["<<((EnumeratedVariable *) wcsp->getVar(scope[newVariable]))->getInf()<<":"<<((EnumeratedVariable *) wcsp->getVar(scope[newVariable]))->getSup()<<"] " << endl;
+            //cout << cumulDOWN << "<->" << cumulUP << endl;
+        }
+    }
+
+    Cost top = wcsp->getUb();
+    /// -- ternary constraints : partial sum -- ///
+    for (int variable = 0; variable < arity - 1; ++variable) {
+        int indexCi = addVariablesIndex[variable];
+        int indexCj = addVariablesIndex[variable + 1];
+        int indexXi = scope[variable];
+        EnumeratedVariable* varCi = (EnumeratedVariable*)wcsp->getVar(indexCi);
+        EnumeratedVariable* varCj = (EnumeratedVariable*)wcsp->getVar(indexCj);
+        EnumeratedVariable* varXi = (EnumeratedVariable*)wcsp->getVar(indexXi);
+        wcsp->getListSuccessors()->at(indexCi).push_back(indexXi);
+        wcsp->getListSuccessors()->at(indexXi).push_back(indexCj);
+
+        //cout << "\033[46m" << "post ternary constraint on " <<
+        //		indexCi <<"("<<varCi->getDomainInitSize()<<" [" << varCi->getInf() <<  ":" <<varCi->getSup()<< "])" << ","  <<
+        //		indexXi <<"("<<varXi->getDomainInitSize()<<" [" << varXi->getInf() <<  ":" <<varXi->getSup()<< "])" << ","  <<
+        //		indexCj <<"("<<varCj->getDomainInitSize()<<" [" << varCj->getInf() <<  ":" <<varCj->getSup()<< "])" << ","  <<
+        //		"\033[0m" << endl;
+
+        unsigned long tableSize = long(varCi->getDomainInitSize() * varCj->getDomainInitSize() * varXi->getDomainInitSize());
+        vector<Cost> ternaryCosts(tableSize, top);
+        //		cout << "TableSize = " << tableSize << endl;
+
+        EnumeratedVariable::iterator iterXi = varXi->begin();
+        for (unsigned long valueXPosition = 0; valueXPosition < varXi->getDomainInitSize(); valueXPosition++) {
+            long value = *iterXi;
+            EnumeratedVariable::iterator iterCi = varCi->begin();
+            for (unsigned long valueCiPosition = 0; valueCiPosition < varCi->getDomainInitSize(); valueCiPosition++) {
+                long counter_i = *iterCi;
+                EnumeratedVariable::iterator iterCj = varCj->begin();
+                for (unsigned long valueCjPosition = 0; valueCjPosition < varCj->getDomainInitSize(); valueCjPosition++) {
+                    long counter_j = *iterCj;
+                    if (counter_j == (counter_i + value)) {
+
+                        unsigned long position = (valueCiPosition) * (varXi->getDomainInitSize() * varCj->getDomainInitSize())
+                            + (valueXPosition) * (varCj->getDomainInitSize())
+                            + (valueCjPosition);
+                        //cout << counter_i << " + " << value << " = " << counter_j <<  " ==> "  << position << endl;
+                        ternaryCosts[position] = 0;
+                    }
+                    ++iterCj;
+                }
+                ++iterCi;
+            }
+            ++iterXi;
+        }
+        //cout << "here" << endl;
+        //for (int i = 0 ; i < tableSize ; i++) { cout << i << " => tableCost[] = " <<   ternaryCosts[i] << endl; }
+        wcsp->postTernaryConstraint(indexCi, indexXi, indexCj, ternaryCosts);
+        //cout << "here bis" << endl;
+    }
+
+    /// -- binary constraints : final variable -- ///
+    //cout << "\033[46m" << "post binary constraint on " << addVariablesIndex[arity-1]  << " and " << scope[arity-1] << "\033[0m" << endl;
+    EnumeratedVariable* lastCounter = (EnumeratedVariable*)wcsp->getVar(addVariablesIndex[arity - 1]);
+    EnumeratedVariable* lastVariable = (EnumeratedVariable*)wcsp->getVar(scope[arity - 1]);
+    unsigned int lastCounterSize = lastCounter->getDomainInitSize();
+    unsigned int lastVariableSize = lastVariable->getDomainInitSize();
+    unsigned int costSize = lastCounterSize * lastVariableSize;
+    //cout << lastCounterSize << "*" << lastVariableSize << " => " << costSize << endl;
+    vector<Cost> binaryCosts(costSize, top);
+
+    for (unsigned int positionLastCounter = 0; positionLastCounter < lastCounterSize; positionLastCounter++) {
+        for (unsigned int positionLastVariable = 0; positionLastVariable < lastVariableSize; positionLastVariable++) {
+            int valueCounter = lastCounter->toValue(positionLastCounter);
+            int valueVariable = lastVariable->toValue(positionLastVariable);
+            unsigned int positionArray = positionLastCounter * lastVariableSize + positionLastVariable;
+            //cout << valueCounter << " " << comparator << " " << valueVariable << " :: " ;
+            int gap = 0;
+            if (comparator == "==") {
+                gap = (valueCounter < valueVariable) ? (valueVariable - valueCounter) : (valueCounter - valueVariable);
+            }
+            if (comparator == "!=") {
+                gap = (valueCounter == valueVariable) ? 1 : 0;
+            }
+            if (comparator == "<" || comparator == "<=") {
+                int modif = (comparator == "<") ? 1 : 0;
+                gap = (valueCounter > valueVariable - modif) ? (valueCounter - valueVariable + modif) : 0;
+            }
+            if (comparator == ">" || comparator == ">=") {
+                int modif = (comparator == ">") ? 1 : 0;
+                gap = (valueVariable > valueCounter - modif) ? (valueVariable - valueCounter + modif) : 0;
+            }
+
+            if (semantics == "hard")
+                binaryCosts[positionArray] = (gap) ? baseCost : 0;
+            if (semantics == "lin" || semantics == "var")
+                binaryCosts[positionArray] = (gap * baseCost >= top) ? top : gap * baseCost;
+            if (semantics == "quad")
+                binaryCosts[positionArray] = (gap * (gap * baseCost) >= top) ? top : gap * (gap * baseCost);
+            //cout << valueCounter << "," << valueVariable << "," << gap << " : " << binaryCosts[positionArray] << endl;
+        }
+    }
+    //cout << "here" << endl;
+    wcsp->postBinaryConstraint(addVariablesIndex[arity - 1], scope[arity - 1], binaryCosts);
+    //cout << "here bis" << endl;
+}
+
+void WeightedVarSum::display()
+{
+    cout << "WVarSum (" << arity << ") : ";
+    for (int variable = 0; variable < arity - 1; ++variable) {
+        cout << scope[variable] << " ";
+    }
+    cout << comparator << " " << scope[arity - 1];
+    cout << " (" << semantics << " " << baseCost << ")" << endl;
+}
+
+/// WEIGHTED OVERLAP ///////////////////////////////////////////////////
+
+WeightedOverlap::WeightedOverlap()
+    : DecomposableGlobalCostFunction()
+{
+}
+
+WeightedOverlap::WeightedOverlap(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+}
+
+WeightedOverlap::WeightedOverlap(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    file >> semantics >> baseCost;
+    if (mult)
+        baseCost *= ToulBar2::costMultiplier;
+    file >> comparator >> rightRes;
+    //display();
+}
+
+WeightedOverlap::~WeightedOverlap() {}
+
+void WeightedOverlap::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    int nbVariableCFN = wcsp->numberOfVariables();
+
+    // -- new variables : counters OVERLAP -- //
+    int addVariablesOverlap[arity / 2];
+    for (int newVariable = 0; newVariable < arity / 2; newVariable++) {
+        string varname = IMPLICIT_VAR_TAG + "WOVERL_OVER_" + to_string(nbVariableCFN) + "_" + to_string(newVariable);
+        addVariablesOverlap[newVariable] = wcsp->makeEnumeratedVariable(varname, 0, 1);
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(addVariablesOverlap[newVariable]));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+        //cout << "add overlap " << newVariable << endl;
+    }
+
+    Cost top = wcsp->getUb();
+    // -- ternary -- //
+    for (int newVariable = 0; newVariable < arity / 2; newVariable++) {
+        int X = scope[newVariable];
+        int Y = scope[newVariable + arity / 2];
+        int O = addVariablesOverlap[newVariable];
+        EnumeratedVariable* varX = (EnumeratedVariable*)wcsp->getVar(X);
+        EnumeratedVariable* varY = (EnumeratedVariable*)wcsp->getVar(Y);
+        EnumeratedVariable* varO = (EnumeratedVariable*)wcsp->getVar(O);
+        wcsp->getListSuccessors()->at(X).push_back(O);
+        wcsp->getListSuccessors()->at(Y).push_back(O);
+
+        unsigned long tableSize = long(varX->getDomainInitSize() * varY->getDomainInitSize() * varO->getDomainInitSize());
+        vector<Cost> ternaryCosts(tableSize, top);
+
+        //cout << X << "--" << Y  << "--" << O << endl;
+        for (unsigned long valueXPosition = 0; valueXPosition < varX->getDomainInitSize(); valueXPosition++) {
+            long vX = varX->toValue(valueXPosition);
+            //for (unsigned int vY = 0 ; vY < varY->getDomainInitSize() ; vY++) {
+            for (unsigned long valueYPosition = 0; valueYPosition < varY->getDomainInitSize(); valueYPosition++) {
+                long vY = varY->toValue(valueYPosition);
+
+                unsigned int vO = 0;
+                if (vX == vY && vY != 0)
+                    vO = 1;
+                //cout << "X=" << vX << " Y=" << vY << " O=" << vO << endl;
+                unsigned long position = (valueXPosition) * (varY->getDomainInitSize() * varO->getDomainInitSize())
+                    + (valueYPosition) * (varO->getDomainInitSize())
+                    + (vO);
+                ternaryCosts[position] = 0;
+            }
+        }
+        wcsp->postTernaryConstraint(X, Y, O, ternaryCosts);
+    }
+
+    // -- new variables : counters Among -- //
+    int addVariablesAmong[arity / 2 + 1];
+    for (int newVariable = 0; newVariable < arity / 2 + 1; newVariable++) {
+        string varname = IMPLICIT_VAR_TAG + "WOVERL_AMONG_" + to_string(nbVariableCFN) + "_" + to_string(newVariable);
+        addVariablesAmong[newVariable] = wcsp->makeEnumeratedVariable(varname, 0, newVariable);
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(addVariablesAmong[newVariable]));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+
+        //cout << "add among " << newVariable << endl;
+    }
+
+    // -- ternary -- //
+    for (int newVariable = 0; newVariable < arity / 2; newVariable++) {
+        int indexCi = addVariablesAmong[newVariable];
+        int indexCj = addVariablesAmong[newVariable + 1];
+        int indexXi = addVariablesOverlap[newVariable];
+
+        //cout << indexCi << " -- " << indexXi << " -- "  << indexCj << endl;
+        EnumeratedVariable* varCi = (EnumeratedVariable*)wcsp->getVar(indexCi);
+        EnumeratedVariable* varCj = (EnumeratedVariable*)wcsp->getVar(indexCj);
+        EnumeratedVariable* varXi = (EnumeratedVariable*)wcsp->getVar(indexXi);
+        wcsp->getListSuccessors()->at(indexCi).push_back(indexXi);
+        wcsp->getListSuccessors()->at(indexXi).push_back(indexCj);
+
+        unsigned long tableSize = long(varCi->getDomainInitSize() * varCj->getDomainInitSize() * varXi->getDomainInitSize());
+        vector<Cost> ternaryCosts(tableSize, top);
+
+        for (unsigned long value = 0; value < varXi->getDomainInitSize(); value++) {
+            for (unsigned long counter = 0; counter < varCi->getDomainInitSize(); counter++) {
+                int nextCounter = counter;
+                if (value == 1) {
+                    nextCounter++;
+                }
+                unsigned long position = (counter) * (varXi->getDomainInitSize() * varCj->getDomainInitSize())
+                    + (value) * (varCj->getDomainInitSize())
+                    + (nextCounter);
+                ternaryCosts[position] = 0;
+            }
+        }
+
+        wcsp->postTernaryConstraint(indexCi, indexXi, indexCj, ternaryCosts);
+    }
+
+    // -- unary constraints : final variable -- //
+    //cout << "\033[45m" << "post unary constraint on " << addVariablesIndex[arity] << "\033[0m" << endl;
+    vector<Cost> unaryCosts(arity / 2 + 1, top);
+    if (comparator == "==") {
+        for (int i = 0; i <= arity / 2; i++) {
+            if (i == rightRes)
+                unaryCosts[i] = 0;
+            else {
+                int gap = (i < rightRes) ? rightRes - i : i - rightRes;
+                if (semantics == "hard")
+                    unaryCosts[i] = baseCost;
+                if (semantics == "lin" || semantics == "var")
+                    unaryCosts[i] = gap * baseCost;
+                if (semantics == "quad")
+                    unaryCosts[i] = gap * (gap * baseCost);
+            }
+        }
+    } else if (comparator == "!=") {
+        for (int i = 0; i <= arity / 2; i++) {
+            if (i != rightRes)
+                unaryCosts[i] = 0;
+            else {
+                unaryCosts[i] = baseCost;
+            }
+        }
+    } else if (comparator == "<" || comparator == "<=") {
+        int newRightRes = rightRes;
+        if (comparator == "<")
+            newRightRes--;
+
+        for (int i = 0; i <= arity / 2; i++) {
+            if (i <= newRightRes)
+                unaryCosts[i] = 0;
+            else {
+                int gap = max(0, i - newRightRes);
+                if (semantics == "hard")
+                    unaryCosts[i] = baseCost;
+                if (semantics == "lin" || semantics == "var")
+                    unaryCosts[i] = gap * baseCost;
+                if (semantics == "quad")
+                    unaryCosts[i] = gap * (gap * baseCost);
+            }
+        }
+    } else if (comparator == ">" || comparator == ">=") {
+        int newRightRes = rightRes;
+        if (comparator == ">")
+            newRightRes++;
+
+        for (int i = 0; i <= arity / 2; i++) {
+            if (i >= newRightRes)
+                unaryCosts[i] = 0;
+            else {
+                int gap = max(0, newRightRes - i);
+                if (semantics == "hard")
+                    unaryCosts[i] = baseCost;
+                if (semantics == "lin" || semantics == "var")
+                    unaryCosts[i] = gap * baseCost;
+                if (semantics == "quad")
+                    unaryCosts[i] = gap * (gap * baseCost);
+            }
+        }
+    } else
+        cout << "comparator " << comparator << " not handle yet" << endl;
+    //cout << "control " << addVariablesAmong[arity/2] << endl;
+    wcsp->postUnary(addVariablesAmong[arity / 2], unaryCosts);
+}
+
+Cost WeightedOverlap::evaluate(int* tuple)
+{
+    int occurency = 0;
+    for (int var = 0; var < arity / 2; var++) {
+        if (tuple[var] && tuple[var] == tuple[var + arity / 2]) {
+            //cout << var << " && " << var+arity/2;
+            occurency++;
+        }
+    }
+    //cout << " => " << occurency << " " << comparator << " " << rightRes << endl;
+    if (comparator == "==") {
+        int gap = (occurency < rightRes) ? rightRes - occurency : occurency - rightRes;
+        if (semantics == "hard")
+            return min(gap * baseCost, baseCost);
+        if (semantics == "lin" || semantics == "var")
+            return gap * baseCost;
+        if (semantics == "quad")
+            return gap * (gap * baseCost);
+    }
+    if (comparator == "!=") {
+        if (occurency != rightRes)
+            return baseCost;
+    }
+    if (comparator == "<" || comparator == "<=") {
+        int newRightRes = rightRes;
+        if (comparator == "<")
+            newRightRes--;
+        int gap = max(0, occurency - newRightRes);
+        if (semantics == "hard")
+            return min(gap * baseCost, baseCost);
+        if (semantics == "lin" || semantics == "var")
+            return gap * baseCost;
+        if (semantics == "quad")
+            return gap * (gap * baseCost);
+    }
+    if (comparator == ">" || comparator == ">=") {
+        int newRightRes = rightRes;
+        if (comparator == ">")
+            newRightRes++;
+        int gap = max(0, newRightRes - occurency);
+        if (semantics == "hard")
+            return min(gap * baseCost, baseCost);
+        if (semantics == "lin" || semantics == "var")
+            return gap * baseCost;
+        if (semantics == "quad")
+            return gap * (gap * baseCost);
+    }
+    return 0;
+}
+
+void WeightedOverlap::display()
+{
+    cout << "WOverlap (" << arity << ") : ";
+    for (int variable = 0; variable < arity; ++variable) {
+        cout << scope[variable] << " ";
+    }
+    cout << endl;
+    cout << semantics << " " << baseCost << endl;
+    int i = 0;
+    cout << "{ ";
+    for (; i < arity / 2; i++)
+        cout << scope[i] << " ";
+    cout << "}" << endl;
+    cout << "{ ";
+    for (; i < arity; i++)
+        cout << scope[i] << " ";
+    cout << "}" << endl;
+    cout << comparator << " " << rightRes << endl;
+}
+
+////////////////////////////////////////////////////////////////////////
+// EXPERIMENTAL CONSTRAINTS                                           //
+////////////////////////////////////////////////////////////////////////
+
+/// WEIGHTED VAMONG /////////////////////////////////////////////////////
+
+WeightedVarAmong::WeightedVarAmong()
+    : DecomposableGlobalCostFunction()
+{
+}
+
+WeightedVarAmong::WeightedVarAmong(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+}
+
+WeightedVarAmong::WeightedVarAmong(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    file >> semantics >> baseCost;
+    if (mult)
+        baseCost *= ToulBar2::costMultiplier;
+    unsigned int nbValue;
+    file >> nbValue;
+    for (unsigned int value = 0; value < nbValue; ++value) {
+        int valueRead;
+        file >> valueRead;
+        values.insert(valueRead);
+    }
+    //file >> lb >> ub;
+    index = scope[arity - 1];
+}
+
+WeightedVarAmong::~WeightedVarAmong()
+{
+    values.clear();
+}
+
+//TODO writing the other semantics
+void WeightedVarAmong::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    bool VERBOSE = false;
+    int nbVariableCFN = wcsp->numberOfVariables();
+    Cost top = wcsp->getUb();
+
+    // -- new variables : counters -- //
+    int addVariablesIndex[arity];
+    for (int newVariable = 0; newVariable < arity; newVariable++) {
+        string varname = IMPLICIT_VAR_TAG + "WAmong" + to_string(nbVariableCFN) + "_" + to_string(newVariable);
+        addVariablesIndex[newVariable] = wcsp->makeEnumeratedVariable(varname, 0, newVariable);
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(addVariablesIndex[newVariable]));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+
+        if (VERBOSE)
+            cout << "\033[45m"
+                 << "new variable " << addVariablesIndex[newVariable] << "(" << ((EnumeratedVariable*)wcsp->getVar(addVariablesIndex[newVariable]))->getDomainInitSize() << ")"
+                 << "\033[0m" << endl;
+    }
+
+    // -- ternary constraints : partial sum -- //
+    for (int variable = 0; variable < arity - 1; ++variable) {
+        int indexCi = addVariablesIndex[variable];
+        int indexCj = addVariablesIndex[variable + 1];
+        int indexXi = scope[variable];
+        if (VERBOSE)
+            cout << "\033[45m" << indexCi << "--" << indexXi << "--" << indexCj << "\033[0m" << endl;
+        EnumeratedVariable* varCi = (EnumeratedVariable*)wcsp->getVar(indexCi);
+        EnumeratedVariable* varCj = (EnumeratedVariable*)wcsp->getVar(indexCj);
+        EnumeratedVariable* varXi = (EnumeratedVariable*)wcsp->getVar(indexXi);
+        wcsp->getListSuccessors()->at(indexCi).push_back(indexXi);
+        wcsp->getListSuccessors()->at(indexXi).push_back(indexCj);
+
+        unsigned long tableSize = long(varCi->getDomainInitSize() * varCj->getDomainInitSize() * varXi->getDomainInitSize());
+        vector<Cost> ternaryCosts(tableSize, top);
+
+        for (unsigned long valuePosition = 0; valuePosition < varXi->getDomainInitSize(); valuePosition++) {
+            long value = varXi->toValue(valuePosition);
+            for (unsigned long counterPosition = 0; counterPosition < varCi->getDomainInitSize(); counterPosition++) {
+                long counter = varCi->toValue(counterPosition);
+
+                long nextCounter = counter;
+                if (values.find(value) != values.end()) {
+                    nextCounter++;
+                }
+                unsigned long position = (counterPosition) * (varXi->getDomainInitSize() * varCj->getDomainInitSize())
+                    + (valuePosition) * (varCj->getDomainInitSize())
+                    + (nextCounter);
+                ternaryCosts[position] = 0;
+            }
+        }
+        wcsp->postTernaryConstraint(indexCi, indexXi, indexCj, ternaryCosts);
+    }
+
+    // -- binary constraints : final variable -- //
+    if (semantics != "hard") {
+        color(1);
+        cout << "WARNING :: only hard semantics can be considered";
+        color(-1);
+        cout << endl;
+    }
+    if (VERBOSE)
+        cout << "\033[45m"
+             << "post binary constraint on " << addVariablesIndex[arity - 1] << " and " << scope[arity - 1] << "\033[0m" << endl;
+    int indexCount = addVariablesIndex[arity - 1];
+    int indexLast = scope[arity - 1];
+    EnumeratedVariable* varCount = (EnumeratedVariable*)wcsp->getVar(indexCount);
+    EnumeratedVariable* varLast = (EnumeratedVariable*)wcsp->getVar(indexLast);
+    wcsp->getListSuccessors()->at(indexCount).push_back(indexLast);
+    unsigned long tableSize = long(varCount->getDomainInitSize() * varLast->getDomainInitSize());
+    vector<Cost> binaryCosts(tableSize, top);
+
+    for (unsigned long valuePosition = 0; valuePosition < varLast->getDomainInitSize(); valuePosition++) {
+        long value = varLast->toValue(valuePosition);
+
+        for (unsigned long counterPosition = 0; counterPosition < varCount->getDomainInitSize(); counterPosition++) {
+            long counter = varCount->toValue(counterPosition);
+
+            //cout << value << " == " << counter << endl;
+
+            unsigned long position = (counterPosition) * (varLast->getDomainInitSize()) + valuePosition;
+            if (counter == value)
+                binaryCosts[position] = 0;
+            else
+                binaryCosts[position] = baseCost;
+        }
+    }
+    wcsp->postBinaryConstraint(indexCount, indexLast, binaryCosts);
+}
+
+void WeightedVarAmong::display()
+{
+    cout << "WVarAmong (" << arity << ") : ";
+    for (int variable = 0; variable < arity - 1; ++variable) {
+        cout << scope[variable] << " ";
+    }
+    cout << " == " << scope[arity - 1] << endl;
+    cout << "sem : " << semantics << " " << baseCost << endl;
+    cout << "val : ";
+    for (set<int>::iterator value = values.begin(); value != values.end(); value++) {
+        cout << *value << " ";
+    }
+    cout << endl;
+}
+
+/// WEIGHTED ALLDIFFERENT //////////////////////////////////////////////
+
+WeightedAllDifferent::WeightedAllDifferent()
+    : DecomposableGlobalCostFunction()
+{
+}
+
+WeightedAllDifferent::WeightedAllDifferent(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+}
+
+WeightedAllDifferent::WeightedAllDifferent(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    file >> semantics >> baseCost;
+    if (mult)
+        baseCost *= ToulBar2::costMultiplier;
+    //display();
+}
+
+WeightedAllDifferent::~WeightedAllDifferent() {}
+
+void WeightedAllDifferent::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    // Counting the number of value
+    int inf = ((EnumeratedVariable*)wcsp->getVar(scope[0]))->getInf();
+    int sup = ((EnumeratedVariable*)wcsp->getVar(scope[0]))->getSup();
+    for (int variable = 0; variable < arity; ++variable) {
+        int tinf = ((EnumeratedVariable*)wcsp->getVar(scope[variable]))->getInf();
+        int tsup = ((EnumeratedVariable*)wcsp->getVar(scope[variable]))->getSup();
+        inf = min(inf, tinf);
+        sup = max(sup, tsup);
+    }
+
+    // Adding WeightedAmong over each variable
+    for (int value = inf; value <= sup; value++) {
+        WeightedAmong* wamong = new WeightedAmong(arity, scope);
+        wamong->setSemantics(semantics);
+        wamong->setBaseCost(baseCost);
+        wamong->addValue(value);
+        wamong->setBounds(0, 1);
+        wamong->addToCostFunctionNetwork(wcsp);
+    }
+}
+
+void WeightedAllDifferent::display()
+{
+    cout << "WeightedAllDifferent (" << arity << ") : ";
+    for (int variable = 0; variable < arity; ++variable) {
+        cout << scope[variable] << " ";
+    }
+    cout << endl;
+    cout << semantics << " " << baseCost << endl;
+}
+
+/// WEIGHTED GCC ///////////////////////////////////////////////////////
+
+WeightedGcc::WeightedGcc()
+    : DecomposableGlobalCostFunction()
+{
+}
+
+WeightedGcc::WeightedGcc(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+}
+
+WeightedGcc::WeightedGcc(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    file >> semantics >> baseCost;
+    if (mult)
+        baseCost *= ToulBar2::costMultiplier;
+    int nbValueToWatch;
+    file >> nbValueToWatch;
+    for (int idvalue = 0; idvalue < nbValueToWatch; idvalue++) {
+        Value value;
+        unsigned int lb, ub;
+        file >> value >> lb >> ub;
+        setBounds(value, lb, ub);
+    }
+    //display();
+}
+
+WeightedGcc::~WeightedGcc() {}
+
+void WeightedGcc::setBounds(Value value, unsigned int lb, unsigned int ub)
+{
+    map<Value, pair<unsigned int, unsigned int>>::iterator it;
+    it = bounds.find(value);
+    if (it != bounds.end()) {
+        cerr << "WeightedGcc::setBounds | Value " << value << " is already watch" << endl;
+        exit(128);
+    }
+    bounds[value] = make_pair(lb, ub);
+}
+
+void WeightedGcc::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    //	int nbcounters = bounds.size();
+    //	int counter = 0;
+    //	int counters[nbcounters];
+    //	int clb[nbcounters];
+    //	int cub[nbcounters];
+    //	int cscope[nbcounters];
+    for (map<Value, pair<unsigned int, unsigned int>>::iterator it = bounds.begin(); it != bounds.end(); ++it) {
+        pair<Value, pair<unsigned int, unsigned int>> bound = *it;
+
+        //Adding a wamong
+        Value value = bound.first;
+        unsigned int lb = (bound.second).first;
+        //		clb[counter] = lb;
+        unsigned int ub = (bound.second).second;
+        //		cub[counter] = ub;
+        WeightedAmong* wamong = new WeightedAmong(arity, scope);
+        wamong->setSemantics(semantics);
+        wamong->setBaseCost(baseCost);
+        wamong->addValue(value);
+        wamong->setBounds(lb, ub);
+        wamong->addToCostFunctionNetwork(wcsp);
+        //		counters[counter] = wcsp->numberOfVariables() - 1;
+        //		counter++;
+    }
+    //	if (semantics == "hard") rec_sum_counters(wcsp, cscope, 0, 0, 0, counters, clb, cub, nbcounters, 0);
+}
+
+// Special additional constraint propagation for hard decomposed GCC
+// add constraints on end-counters of wamong's decomposed GCC to enforce LB and UB for any subset of values
+void WeightedGcc::rec_sum_counters(WCSP* wcsp, int* cscope, int carity, int totlb, int totub, int* counters, int* clb, int* cub, int nb, int rec)
+{
+    if (rec == nb) {
+        if (carity == 2) {
+            vector<Cost> costs((size_t)wcsp->getDomainInitSize(cscope[0]) * (size_t)wcsp->getDomainInitSize(cscope[1]), wcsp->getUb());
+            for (int u = wcsp->getInf(cscope[0]); u <= wcsp->getSup(cscope[0]); u++) {
+                for (int v = wcsp->getInf(cscope[1]); v <= wcsp->getSup(cscope[1]); v++) {
+                    if (u + v >= totlb && u + v <= min(totub, arity)) {
+                        costs[wcsp->toIndex(cscope[0], u) * wcsp->getDomainInitSize(cscope[1]) + wcsp->toIndex(cscope[1], v)] = MIN_COST;
+                    }
+                }
+            }
+            wcsp->postBinaryConstraint(cscope[0], cscope[1], costs);
+        } else if (carity == 3) {
+            vector<Cost> costs((size_t)wcsp->getDomainInitSize(cscope[0]) * (size_t)wcsp->getDomainInitSize(cscope[1]) * (size_t)wcsp->getDomainInitSize(cscope[2]), wcsp->getUb());
+            for (int u = wcsp->getInf(cscope[0]); u <= wcsp->getSup(cscope[0]); u++) {
+                for (int v = wcsp->getInf(cscope[1]); v <= wcsp->getSup(cscope[1]); v++) {
+                    for (int w = wcsp->getInf(cscope[2]); w <= wcsp->getSup(cscope[2]); w++) {
+                        if (u + v + w >= totlb && u + v + w <= min(totub, arity)) {
+                            costs[wcsp->toIndex(cscope[0], u) * wcsp->getDomainInitSize(cscope[1]) * wcsp->getDomainInitSize(cscope[2]) + wcsp->toIndex(cscope[1], v) * wcsp->getDomainInitSize(cscope[2]) + wcsp->toIndex(cscope[2], w)] = MIN_COST;
+                        }
+                    }
+                }
+            }
+            wcsp->postTernaryConstraint(cscope[0], cscope[1], cscope[2], costs);
+        } else if (carity > 3) {
+            wcsp->postWSum(cscope, carity, "hard", wcsp->getUb(), ">=", totlb);
+            wcsp->postWSum(cscope, carity, "hard", wcsp->getUb(), "<=", min(totub, arity));
+        }
+    } else {
+        // try without variable at position rec
+        rec_sum_counters(wcsp, cscope, carity, totlb, totub, counters, clb, cub, nb, rec + 1);
+        // try with variable at position rec
+        cscope[carity] = counters[rec];
+        rec_sum_counters(wcsp, cscope, carity + 1, totlb + clb[rec], totub + cub[rec], counters, clb, cub, nb, rec + 1);
+    }
+}
+
+void WeightedGcc::display()
+{
+    cout << "WeightedGcc (" << arity << ") : ";
+    for (int variable = 0; variable < arity; ++variable) {
+        cout << scope[variable] << " ";
+    }
+    cout << endl;
+    cout << semantics << " " << baseCost << endl;
+    for (map<Value, pair<unsigned int, unsigned int>>::iterator it = bounds.begin(); it != bounds.end(); ++it) {
+        pair<Value, pair<unsigned int, unsigned int>> bound = *it;
+        cout << bound.first << " [" << (bound.second).first << ":" << (bound.second).second << "]" << endl;
+    }
+}
+
+/// WEIGHTED SAME //////////////////////////////////////////////////////
+
+WeightedSame::WeightedSame()
+    : DecomposableGlobalCostFunction()
+{
+}
+WeightedSame::WeightedSame(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+}
+WeightedSame::WeightedSame(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    file >> semantics >> baseCost;
+    if (mult)
+        baseCost *= ToulBar2::costMultiplier;
+    if (_arity % 2 == 1) {
+        cerr << "WeightedSame::Constructor the scope must be even" << endl;
+        exit(128);
+    }
+    //display();
+}
+WeightedSame::~WeightedSame() {}
+
+void WeightedSame::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    Cost top = wcsp->getUb();
+
+    // Counting the number of value
+    int inf = ((EnumeratedVariable*)wcsp->getVar(scope[0]))->getInf();
+    int sup = ((EnumeratedVariable*)wcsp->getVar(scope[0]))->getSup();
+    for (int variable = 0; variable < arity; ++variable) {
+        int tinf = ((EnumeratedVariable*)wcsp->getVar(scope[variable]))->getInf();
+        int tsup = ((EnumeratedVariable*)wcsp->getVar(scope[variable]))->getSup();
+        inf = min(inf, tinf);
+        sup = max(sup, tsup);
+    }
+    int nbValue = sup - inf + 1;
+
+    // Creating new counter variables
+    int positionVar = 0;
+    int** newVariable = new int*[nbValue];
+    for (int value = inf; value <= sup; value++) {
+        newVariable[positionVar] = new int[2];
+        string varnamel = IMPLICIT_VAR_TAG + "WSame_ValueLeft=" + to_string(value);
+        string varnamer = IMPLICIT_VAR_TAG + "WSame_ValueRight=" + to_string(value);
+        newVariable[positionVar][0] = wcsp->makeEnumeratedVariable(varnamel, 0, arity / 2);
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(newVariable[positionVar][0]));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+
+        newVariable[positionVar][1] = wcsp->makeEnumeratedVariable(varnamer, 0, arity / 2);
+        theVar = ((EnumeratedVariable*)wcsp->getVar(newVariable[positionVar][1]));
+        for (unsigned int val = 0; val <= theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+        positionVar++;
+    }
+
+    // Adding WeightedAmong over each variable
+    positionVar = 0;
+    for (int value = inf; value <= sup; value++) {
+        int* newScopeL = new int[arity / 2 + 1];
+        int* newScopeR = new int[arity / 2 + 1];
+        newScopeL[arity / 2] = newVariable[positionVar][0];
+        newScopeR[arity / 2] = newVariable[positionVar][1];
+        for (int variable = 0; variable < arity / 2; ++variable) {
+            newScopeL[variable] = scope[variable];
+            newScopeR[variable] = scope[variable + arity / 2];
+        }
+
+        WeightedVarAmong* wamongL = new WeightedVarAmong(arity / 2 + 1, newScopeL);
+        wamongL->setSemantics("hard");
+        wamongL->setBaseCost(top);
+        wamongL->addValue(value);
+        wamongL->addToCostFunctionNetwork(wcsp);
+        delete[] newScopeL;
+
+        WeightedVarAmong* wamongR = new WeightedVarAmong(arity / 2 + 1, newScopeR);
+        wamongR->setSemantics("hard");
+        wamongR->setBaseCost(top);
+        wamongR->addValue(value);
+        wamongR->addToCostFunctionNetwork(wcsp);
+        delete[] newScopeR;
+
+        positionVar++;
+    }
+
+    // Adding Binary constraints
+    for (int value = 0; value < nbValue; value++) {
+        EnumeratedVariable* left = (EnumeratedVariable*)wcsp->getVar(newVariable[value][0]);
+        EnumeratedVariable* right = (EnumeratedVariable*)wcsp->getVar(newVariable[value][1]);
+        unsigned long tableSize = long(left->getDomainInitSize() * right->getDomainInitSize());
+        vector<Cost> binaryCosts(tableSize, top);
+        //cout << "Binary = " << newVariable[value][0] << " " <<  newVariable[value][1] << endl;
+        for (unsigned long valueL = 0; valueL < left->getDomainInitSize(); valueL++) {
+            for (unsigned long valueR = 0; valueR < right->getDomainInitSize(); valueR++) {
+                unsigned long position = (valueR) * (left->getDomainInitSize()) + valueL;
+
+                int gap = (valueL - valueR);
+                if (gap < 0)
+                    gap *= -1;
+                Cost currentCost = 0;
+                if (gap && semantics == "hard")
+                    currentCost = baseCost;
+                if (semantics == "lin" || semantics == "var")
+                    currentCost = baseCost * gap;
+                if (semantics == "quad")
+                    currentCost = baseCost * gap * gap;
+                binaryCosts[position] = currentCost;
+
+                //cout << valueL << " - " << valueR << " ("<< gap << ") => " << currentCost << endl;
+            }
+        }
+
+        wcsp->postBinaryConstraint(newVariable[value][0], newVariable[value][1], binaryCosts);
+    }
+    delete[] newVariable;
+}
+
+void WeightedSame::display()
+{
+    cout << "WeightedSame (" << arity << ") : ";
+    for (int variable = 0; variable < arity; ++variable) {
+        cout << scope[variable] << " ";
+        if (variable == arity / 2 - 1)
+            cout << "| ";
+    }
+    cout << endl;
+    cout << semantics << " " << baseCost << endl;
+}
+
+/// WEIGHTED SAMEGCC////////////////////////////////////////////////////
+
+WeightedSameGcc::WeightedSameGcc()
+    : DecomposableGlobalCostFunction()
+{
+}
+WeightedSameGcc::WeightedSameGcc(unsigned int _arity, int* _scope)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+}
+WeightedSameGcc::WeightedSameGcc(unsigned int _arity, int* _scope, istream& file, bool mult)
+    : DecomposableGlobalCostFunction(_arity, _scope)
+{
+    file >> semantics >> baseCost;
+    if (mult)
+        baseCost *= ToulBar2::costMultiplier;
+    file >> nbValueToWatch;
+    for (int idvalue = 0; idvalue < nbValueToWatch; idvalue++) {
+        Value value;
+        unsigned int lb, ub;
+        file >> value >> lb >> ub;
+        setBounds(value, lb, ub);
+    }
+    if (_arity % 2 == 1) {
+        cerr << "WeightedSameGcc::Constructor the scope must be even" << endl;
+        exit(128);
+    }
+    //display();
+}
+WeightedSameGcc::~WeightedSameGcc() {}
+
+void WeightedSameGcc::setBounds(Value value, unsigned int lb, unsigned int ub)
+{
+    map<Value, pair<unsigned int, unsigned int>>::iterator it;
+    it = bounds.find(value);
+    if (it != bounds.end()) {
+        cerr << "WeightedSameGcc::setBounds | Value " << value << " is already watch" << endl;
+        exit(128);
+    }
+    bounds[value] = make_pair(lb, ub);
+}
+
+void WeightedSameGcc::addToCostFunctionNetwork(WCSP* wcsp)
+{
+    Cost top = wcsp->getUb();
+
+    // Counting the number of value
+    int inf = ((EnumeratedVariable*)wcsp->getVar(scope[0]))->getInf();
+    int sup = ((EnumeratedVariable*)wcsp->getVar(scope[0]))->getSup();
+    for (int variable = 0; variable < arity; ++variable) {
+        int tinf = ((EnumeratedVariable*)wcsp->getVar(scope[variable]))->getInf();
+        int tsup = ((EnumeratedVariable*)wcsp->getVar(scope[variable]))->getSup();
+        inf = min(inf, tinf);
+        sup = max(sup, tsup);
+    }
+    int nbValue = sup - inf + 1;
+
+    // Creating new counter variables
+    int positionVar = 0;
+    int** newVariable = new int*[nbValue];
+    for (int value = inf; value <= sup; value++) {
+        newVariable[positionVar] = new int[2];
+        string varnamel = IMPLICIT_VAR_TAG + "WSame_ValueLeft=" + to_string(value);
+        string varnamer = IMPLICIT_VAR_TAG + "WSame_ValueRight=" + to_string(value);
+        newVariable[positionVar][0] = wcsp->makeEnumeratedVariable(varnamel, 0, arity / 2);
+        EnumeratedVariable* theVar = ((EnumeratedVariable*)wcsp->getVar(newVariable[positionVar][0]));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+
+        newVariable[positionVar][1] = wcsp->makeEnumeratedVariable(varnamer, 0, arity / 2);
+        theVar = ((EnumeratedVariable*)wcsp->getVar(newVariable[positionVar][1]));
+        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++)
+            theVar->addValueName("q" + std::to_string(val));
+
+        positionVar++;
+    }
+
+    // Adding WeightedAmong over each variable
+    positionVar = 0;
+    for (int value = inf; value <= sup; value++) {
+        int* newScopeL = new int[arity / 2 + 1];
+        int* newScopeR = new int[arity / 2 + 1];
+        newScopeL[arity / 2] = newVariable[positionVar][0];
+        newScopeR[arity / 2] = newVariable[positionVar][1];
+        for (int variable = 0; variable < arity / 2; ++variable) {
+            newScopeL[variable] = scope[variable];
+            newScopeR[variable] = scope[variable + arity / 2];
+        }
+
+        WeightedVarAmong* wamongL = new WeightedVarAmong(arity / 2 + 1, newScopeL);
+        wamongL->setSemantics("hard");
+        wamongL->setBaseCost(top);
+        wamongL->addValue(value);
+        wamongL->addToCostFunctionNetwork(wcsp);
+        delete[] newScopeL;
+
+        WeightedVarAmong* wamongR = new WeightedVarAmong(arity / 2 + 1, newScopeR);
+        wamongR->setSemantics("hard");
+        wamongR->setBaseCost(top);
+        wamongR->addValue(value);
+        wamongR->addToCostFunctionNetwork(wcsp);
+        delete[] newScopeR;
+
+        positionVar++;
+    }
+
+    // Adding Binary constraints (SAME PART)
+    for (int value = 0; value < nbValue; value++) {
+        EnumeratedVariable* left = (EnumeratedVariable*)wcsp->getVar(newVariable[value][0]);
+        EnumeratedVariable* right = (EnumeratedVariable*)wcsp->getVar(newVariable[value][1]);
+        unsigned long tableSize = long(left->getDomainInitSize() * right->getDomainInitSize());
+        vector<Cost> binaryCosts(tableSize, top);
+        //cout << "Binary = " << newVariable[value][0] << " " <<  newVariable[value][1] << endl;
+        for (unsigned long valueL = 0; valueL < left->getDomainInitSize(); valueL++) {
+            for (unsigned long valueR = 0; valueR < right->getDomainInitSize(); valueR++) {
+                unsigned long position = (valueR) * (left->getDomainInitSize()) + valueL;
+
+                int gap = (valueL - valueR);
+                if (gap < 0)
+                    gap *= -1;
+                Cost currentCost = 0;
+                if (gap && semantics == "hard")
+                    currentCost = baseCost;
+                if (semantics == "lin" || semantics == "dec")
+                    currentCost = baseCost * gap;
+                if (semantics == "quad")
+                    currentCost = baseCost * gap * gap;
+                binaryCosts[position] = currentCost;
+
+                //cout << valueL << " - " << valueR << " ("<< gap << ") => " << currentCost << endl;
+            }
+        }
+
+        wcsp->postBinaryConstraint(newVariable[value][0], newVariable[value][1], binaryCosts);
+    }
+
+    positionVar = 0;
+    // Adding Unary Constraints (GCC PART)
+    for (int value = inf; value <= sup; value++) {
+
+        map<Value, pair<unsigned int, unsigned int>>::iterator it;
+        it = bounds.find(value);
+        if (it != bounds.end()) {
+            pair<Value, pair<unsigned int, unsigned int>> bound = *it;
+            unsigned int lb = (bound.second).first;
+            unsigned int ub = (bound.second).second;
+
+            {
+                //LEFT
+                vector<Cost> unaryCosts(arity + 1, 0);
+                for (int count = 0; count <= arity; count++) {
+                    Cost currentCost = 0;
+                    int gap = max(0, max(int(lb - count), int(count - ub)));
+                    if (gap && semantics == "hard")
+                        currentCost = baseCost;
+                    if (semantics == "lin" || semantics == "dec")
+                        currentCost = baseCost * gap;
+                    if (semantics == "quad")
+                        currentCost = baseCost * gap * gap;
+                    unaryCosts[count] = currentCost;
+                }
+                wcsp->postUnary(newVariable[positionVar][0], unaryCosts);
+            }
+            {
+                //RIGHT
+                vector<Cost> unaryCosts(arity + 1, 0);
+                for (int count = 0; count <= arity; count++) {
+                    Cost currentCost = 0;
+                    int gap = max(0, max(int(lb - count), int(count - ub)));
+                    if (gap && semantics == "hard")
+                        currentCost = baseCost;
+                    if (semantics == "lin" || semantics == "dec")
+                        currentCost = baseCost * gap;
+                    if (semantics == "quad")
+                        currentCost = baseCost * gap * gap;
+                    unaryCosts[count] = currentCost;
+                }
+                wcsp->postUnary(newVariable[positionVar][1], unaryCosts);
+            }
+        }
+        positionVar++;
+    }
+
+    delete[] newVariable;
+}
+
+void WeightedSameGcc::display()
+{
+    cout << "WeightedSameGcc (" << arity << ") : ";
+    for (int variable = 0; variable < arity; ++variable) {
+        cout << scope[variable] << " ";
+        if (variable == arity / 2 - 1)
+            cout << "| ";
+    }
+    cout << endl;
+    cout << semantics << " " << baseCost << endl;
+    for (map<Value, pair<unsigned int, unsigned int>>::iterator it = bounds.begin(); it != bounds.end(); ++it) {
+        pair<Value, pair<unsigned int, unsigned int>> bound = *it;
+        cout << bound.first << " [" << (bound.second).first << ":" << (bound.second).second << "]" << endl;
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2globaldecomposable.hpp b/code/include/tb2/core/tb2globaldecomposable.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..32c554327b8b8b00820db528363cf93c0fdd829a
--- /dev/null
+++ b/code/include/tb2/core/tb2globaldecomposable.hpp
@@ -0,0 +1,298 @@
+/** \file tb2globaldecomposable.hpp
+ *  \brief Decomposable global cost functions : WeightedRegular, WeightedAmong
+ */
+#ifndef TB2GLOBALDECOMPOSABLE_HPP_
+#define TB2GLOBALDECOMPOSABLE_HPP_
+
+#include "tb2wcsp.hpp"
+#include "tb2types.hpp"
+#include "tb2enumvar.hpp"
+#include "utils/tb2automaton.hpp"
+
+class DecomposableGlobalCostFunction {
+protected:
+    int arity;
+    int* scope;
+    string label;
+
+public:
+    DecomposableGlobalCostFunction();
+    DecomposableGlobalCostFunction(unsigned int _arity, int* _scope);
+    virtual ~DecomposableGlobalCostFunction();
+    static DecomposableGlobalCostFunction* FactoryDGCF(string type, unsigned int _arity, int* _scope, istream& file, bool mult = true);
+
+    int getArity() { return arity; }
+    int getVarIndex(int i) { return scope[i]; }
+    void setLabel(string _label) { label = _label; }
+    string getLabel() { return label; }
+
+    virtual Cost evaluate(int* tuple) = 0;
+    virtual void addToCostFunctionNetwork(WCSP* wcsp) = 0;
+    virtual void display() = 0;
+
+    void color(int);
+};
+
+class WeightedAmong : public DecomposableGlobalCostFunction {
+private:
+    set<int> values;
+    string semantics;
+    Cost baseCost;
+    unsigned int lb;
+    unsigned int ub;
+
+public:
+    WeightedAmong();
+    WeightedAmong(unsigned int _arity, int* _scope);
+    WeightedAmong(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedAmong();
+
+    inline void addValue(int _value) { values.insert(_value); }
+    inline void setSemantics(string _semantics) { semantics = _semantics; }
+    inline void setBaseCost(Cost _baseCost) { baseCost = _baseCost; }
+    inline void setBounds(unsigned int _lb, unsigned int _ub)
+    {
+        lb = _lb;
+        ub = _ub;
+    }
+
+    Cost evaluate(int* tuple);
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+class WeightedRegular : public DecomposableGlobalCostFunction {
+private:
+    WFA* automaton;
+
+public:
+    WeightedRegular();
+    WeightedRegular(unsigned int _arity, int* _scope);
+    WeightedRegular(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedRegular();
+
+    inline void setWFA(WFA* _automaton) { automaton = _automaton; }
+
+    Cost evaluate(int* tuple)
+    {
+        cout << "WeightedRegular::evaluate => no yet implemented" << endl;
+        return 0;
+    }
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+class WeightedSum : public DecomposableGlobalCostFunction {
+private:
+    string comparator;
+    int rightRes;
+    string semantics;
+    Cost baseCost;
+
+public:
+    WeightedSum();
+    WeightedSum(unsigned int _arity, int* _scope);
+    WeightedSum(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedSum();
+
+    inline void setSemantics(string _semantics) { semantics = _semantics; }
+    inline void setBaseCost(Cost _baseCost) { baseCost = _baseCost; }
+    inline void setComparator(string _comparator) { comparator = _comparator; }
+    inline void setRightRes(int _rightRes) { rightRes = _rightRes; }
+
+    Cost evaluate(int* tuple);
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+class WeightedOverlap : public DecomposableGlobalCostFunction {
+private:
+    string semantics;
+    Cost baseCost;
+    string comparator;
+    int rightRes;
+
+public:
+    WeightedOverlap();
+    WeightedOverlap(unsigned int _arity, int* _scope);
+    WeightedOverlap(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedOverlap();
+
+    inline void setSemantics(string _semantics) { semantics = _semantics; }
+    inline void setBaseCost(Cost _baseCost) { baseCost = _baseCost; }
+    inline void setComparator(string _comparator) { comparator = _comparator; }
+    inline void setRightRes(int _rightRes) { rightRes = _rightRes; }
+
+    Cost evaluate(int* tuple);
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+// WeightedAmong with a Variable as right member
+class WeightedVarAmong : public DecomposableGlobalCostFunction {
+private:
+    set<int> values;
+    string semantics;
+    Cost baseCost;
+    unsigned int index;
+
+public:
+    WeightedVarAmong();
+    WeightedVarAmong(unsigned int _arity, int* _scope);
+    WeightedVarAmong(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedVarAmong();
+
+    inline void addValue(int _value) { values.insert(_value); }
+    inline void setSemantics(string _semantics) { semantics = _semantics; }
+    inline void setBaseCost(Cost _baseCost) { baseCost = _baseCost; }
+    inline void setIndex(unsigned int _index) { index = _index; }
+
+    Cost evaluate(int* tuple)
+    {
+        cerr << "Not yet implemented" << endl;
+        return 0;
+    }
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+class WeightedVarSum : public DecomposableGlobalCostFunction {
+private:
+    string comparator;
+    unsigned int index;
+    string semantics;
+    Cost baseCost;
+
+public:
+    WeightedVarSum();
+    WeightedVarSum(unsigned int _arity, int* _scope);
+    WeightedVarSum(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedVarSum();
+
+    inline void setSemantics(string _semantics) { semantics = _semantics; }
+    inline void setBaseCost(Cost _baseCost) { baseCost = _baseCost; }
+    inline void setComparator(string _comparator) { comparator = _comparator; }
+    inline void setIndex(unsigned int _index) { index = _index; }
+
+    Cost evaluate(int* tuple)
+    {
+        cerr << "Not yet implemented" << endl;
+        return 0;
+    }
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+// WeightedAllDifferent using several WeightedAmongs
+class WeightedAllDifferent : public DecomposableGlobalCostFunction {
+private:
+    string semantics;
+    Cost baseCost;
+
+public:
+    WeightedAllDifferent();
+    WeightedAllDifferent(unsigned int _arity, int* _scope);
+    WeightedAllDifferent(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedAllDifferent();
+
+    inline void setSemantics(string _semantics) { semantics = _semantics; }
+    inline void setBaseCost(Cost _baseCost) { baseCost = _baseCost; }
+
+    Cost evaluate(int* tuple)
+    {
+        cerr << "Not yet implemented" << endl;
+        return 0;
+    }
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+//WeightedGcc using several WeightedAmongs
+class WeightedGcc : public DecomposableGlobalCostFunction {
+private:
+    string semantics;
+    Cost baseCost;
+    int nbValueToWatch;
+    map<Value, pair<unsigned int, unsigned int>> bounds;
+
+public:
+    WeightedGcc();
+    WeightedGcc(unsigned int _arity, int* _scope);
+    WeightedGcc(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedGcc();
+
+    inline void setSemantics(string _semantics) { semantics = _semantics; }
+    inline void setBaseCost(Cost _baseCost) { baseCost = _baseCost; }
+    inline void setNbValue(int _nbValue) { nbValueToWatch = _nbValue; }
+    void setBounds(Value value, unsigned int lb, unsigned int ub);
+
+    Cost evaluate(int* tuple)
+    {
+        cerr << "Not yet implemented" << endl;
+        return 0;
+    }
+    void rec_sum_counters(WCSP* wcsp, int* scope, int arity, int totlb, int totub, int* counters, int* lb, int* ub, int nb, int rec);
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+// WeightedSame using several WeightedAmongs
+class WeightedSame : public DecomposableGlobalCostFunction {
+private:
+    string semantics;
+    Cost baseCost;
+
+public:
+    WeightedSame();
+    WeightedSame(unsigned int _arity, int* _scope);
+    WeightedSame(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedSame();
+
+    inline void setSemantics(string _semantics) { semantics = _semantics; }
+    inline void setBaseCost(Cost _baseCost) { baseCost = _baseCost; }
+
+    Cost evaluate(int* tuple)
+    {
+        cerr << "Not yet implemented" << endl;
+        return 0;
+    }
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+// WeightedSameGcc using several WeightedAmongs and Unary
+class WeightedSameGcc : public DecomposableGlobalCostFunction {
+private:
+    string semantics;
+    Cost baseCost;
+    int nbValueToWatch;
+    map<Value, pair<unsigned int, unsigned int>> bounds;
+
+public:
+    WeightedSameGcc();
+    WeightedSameGcc(unsigned int _arity, int* _scope);
+    WeightedSameGcc(unsigned int _arity, int* _scope, istream& file, bool mult = true);
+    ~WeightedSameGcc();
+
+    inline void setSemantics(string _semantics) { semantics = _semantics; }
+    inline void setBaseCost(Cost _baseCost) { baseCost = _baseCost; }
+    inline void setNbValue(int _nbValue) { nbValueToWatch = _nbValue; }
+    void setBounds(Value value, unsigned int lb, unsigned int ub);
+
+    Cost evaluate(int* tuple)
+    {
+        cerr << "Not yet implemented" << endl;
+        return 0;
+    }
+    void addToCostFunctionNetwork(WCSP* wcsp);
+    void display();
+};
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2intervar.cpp b/code/include/tb2/core/tb2intervar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cc77298231f76b5b67ec57c3e5389ccb417bb720
--- /dev/null
+++ b/code/include/tb2/core/tb2intervar.cpp
@@ -0,0 +1,240 @@
+/*
+ * ****** Variable with domain represented by an interval *******
+ */
+
+#include "tb2intervar.hpp"
+#include "tb2wcsp.hpp"
+#include "search/tb2clusters.hpp"
+
+/*
+ * Constructors and misc.
+ * 
+ */
+
+IntervalVariable::IntervalVariable(WCSP* w, string n, Value iinf, Value isup)
+    : Variable(w, n, iinf, isup)
+    , infCost(MIN_COST)
+    , supCost(MIN_COST)
+{
+}
+
+void IntervalVariable::print(ostream& os)
+{
+    os << " [" << inf << "," << sup << "]";
+    os << "/" << getDegree();
+    if (ToulBar2::weightedDegree)
+        os << "/" << getWeightedDegree();
+    if (unassigned()) {
+        os << " < " << getInfCost() << "," << getSupCost() << " >";
+    }
+}
+
+/*
+ * Propagation methods
+ * 
+ */
+
+void IntervalVariable::projectInfCost(Cost cost)
+{
+    infCost += cost;
+    assert(infCost >= MIN_COST);
+    if (getInf() == maxCostValue || infCost > maxCost)
+        queueNC();
+    if (CUT(infCost + wcsp->getLb(), wcsp->getUb()))
+        increaseFast(getInf() + 1);
+}
+
+void IntervalVariable::projectSupCost(Cost cost)
+{
+    supCost += cost;
+    assert(supCost >= MIN_COST);
+    if (getSup() == maxCostValue || supCost > maxCost)
+        queueNC();
+    if (CUT(supCost + wcsp->getLb(), wcsp->getUb()))
+        decreaseFast(getSup() - 1);
+}
+
+void IntervalVariable::propagateNC()
+{
+    if (ToulBar2::verbose >= 3)
+        cout << "propagateNC for " << getName() << endl;
+    if (CUT(getInfCost() + wcsp->getLb(), wcsp->getUb()))
+        increaseFast(getInf() + 1);
+    if (CUT(getSupCost() + wcsp->getLb(), wcsp->getUb()))
+        decreaseFast(getSup() - 1);
+    if (getInfCost() > getSupCost()) {
+        setMaxUnaryCost(getInf(), getInfCost());
+    } else {
+        setMaxUnaryCost(getSup(), getSupCost());
+    }
+}
+
+bool IntervalVariable::verifyNC()
+{
+    if (CUT(getInfCost() + wcsp->getLb(), wcsp->getUb())) {
+        cout << *this << " has inf cost not NC!" << endl;
+        return false;
+    }
+    if (CUT(getSupCost() + wcsp->getLb(), wcsp->getUb())) {
+        cout << *this << " has sup cost not NC!" << endl;
+        return false;
+    }
+    return true;
+}
+
+void IntervalVariable::increaseFast(Value newInf)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "increase " << getName() << " " << inf << " -> " << newInf << endl;
+    assert(!wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) >= newInf);
+    if (newInf > inf) {
+        if (newInf > sup) {
+            THROWCONTRADICTION;
+        } else {
+            if (newInf == sup) {
+                assign(newInf);
+            } else {
+                inf = newInf;
+                infCost = MIN_COST;
+                queueInc();
+                if (ToulBar2::setmin)
+                    (*ToulBar2::setmin)(wcsp->getIndex(), wcspIndex, newInf, wcsp->getSolver());
+            }
+        }
+    }
+}
+
+void IntervalVariable::increase(Value newInf, bool isDecision)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "increase " << getName() << " " << inf << " -> " << newInf << endl;
+#ifndef NDEBUG
+    if (isDecision && wcsp->getIsPartOfOptimalSolution() && wcsp->getBestValue(wcspIndex) < newInf)
+        wcsp->setIsPartOfOptimalSolution(false);
+    assert(isDecision || !wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) >= newInf);
+#endif
+    if (newInf > inf) {
+        if (newInf > sup) {
+            THROWCONTRADICTION;
+        } else {
+            if (newInf == sup) {
+                assign(newInf);
+            } else {
+                inf = newInf;
+                infCost = MIN_COST;
+                if (newInf > maxCostValue)
+                    queueNC(); // single diff with increaseFast
+                queueInc();
+                if (ToulBar2::setmin)
+                    (*ToulBar2::setmin)(wcsp->getIndex(), wcspIndex, newInf, wcsp->getSolver());
+            }
+        }
+    }
+}
+
+void IntervalVariable::decreaseFast(Value newSup)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "decrease " << getName() << " " << sup << " -> " << newSup << endl;
+    assert(!wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) <= newSup);
+    if (newSup < sup) {
+        if (newSup < inf) {
+            THROWCONTRADICTION;
+        } else {
+            if (inf == newSup) {
+                assign(newSup);
+            } else {
+                sup = newSup;
+                supCost = MIN_COST;
+                queueDec();
+                if (ToulBar2::setmax)
+                    (*ToulBar2::setmax)(wcsp->getIndex(), wcspIndex, newSup, wcsp->getSolver());
+            }
+        }
+    }
+}
+
+void IntervalVariable::decrease(Value newSup, bool isDecision)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "decrease " << getName() << " " << sup << " -> " << newSup << endl;
+#ifndef NDEBUG
+    if (isDecision && wcsp->getIsPartOfOptimalSolution() && wcsp->getBestValue(wcspIndex) > newSup)
+        wcsp->setIsPartOfOptimalSolution(false);
+    assert(isDecision || !wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) <= newSup);
+#endif
+    if (newSup < sup) {
+        if (newSup < inf) {
+            THROWCONTRADICTION;
+        } else {
+            if (inf == newSup) {
+                assign(newSup);
+            } else {
+                sup = newSup;
+                supCost = MIN_COST;
+                if (newSup < maxCostValue)
+                    queueNC(); // single diff with decreaseFast
+                queueDec();
+                if (ToulBar2::setmax)
+                    (*ToulBar2::setmax)(wcsp->getIndex(), wcspIndex, newSup, wcsp->getSolver());
+            }
+        }
+    }
+}
+
+void IntervalVariable::assign(Value newValue, bool isDecision)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "assign " << *this << " -> " << newValue << endl;
+#ifndef NDEBUG
+    if (isDecision && wcsp->getIsPartOfOptimalSolution() && wcsp->getBestValue(wcspIndex) != newValue)
+        wcsp->setIsPartOfOptimalSolution(false);
+    assert(isDecision || !wcsp->getIsPartOfOptimalSolution() || ((wcsp->getTreeDec()) ? wcsp->getTreeDec()->getRoot()->getUb() : wcsp->getUb()) <= ToulBar2::verifiedOptimum || wcsp->getBestValue(wcspIndex) == newValue);
+#endif
+    if (unassigned() || getValue() != newValue) {
+        if (cannotbe(newValue))
+            THROWCONTRADICTION;
+        changeNCBucket(-1);
+        maxCostValue = newValue;
+        maxCost = MIN_COST;
+        inf = newValue;
+        sup = newValue;
+        infCost = MIN_COST;
+        supCost = MIN_COST;
+        if (ToulBar2::setvalue)
+            (*ToulBar2::setvalue)(wcsp->getIndex(), wcspIndex, newValue, wcsp->getSolver());
+        for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+            (*iter).constr->assign((*iter).scopeIndex);
+        }
+    }
+}
+
+/// assign a variable with delayed constraint propagation
+void IntervalVariable::assignLS(Value newValue, ConstraintSet& delayedCtrs, bool force)
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "assignLS " << *this << " -> " << newValue << endl;
+    if (force || unassigned() || getValue() != newValue) {
+        if (cannotbe(newValue))
+            THROWCONTRADICTION;
+        changeNCBucket(-1);
+        maxCostValue = newValue;
+        maxCost = MIN_COST;
+        inf = newValue;
+        sup = newValue;
+        infCost = MIN_COST;
+        supCost = MIN_COST;
+        if (ToulBar2::setvalue)
+            (*ToulBar2::setvalue)(wcsp->getIndex(), wcspIndex, newValue, wcsp->getSolver());
+        for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+            delayedCtrs.insert((*iter).constr);
+        }
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2intervar.hpp b/code/include/tb2/core/tb2intervar.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..1bc0063f45be2f0d1fe681a90711e247ec32bd86
--- /dev/null
+++ b/code/include/tb2/core/tb2intervar.hpp
@@ -0,0 +1,138 @@
+/** \file tb2variable.hpp
+ *  \brief Variable with domain represented by an interval.
+ * 
+ */
+
+#ifndef TB2INTERVAR_HPP_
+#define TB2INTERVAR_HPP_
+
+#include "tb2variable.hpp"
+
+class IntervalVariable : public Variable {
+    StoreCost infCost;
+    StoreCost supCost;
+
+    void increaseFast(Value newInf); // Do not insert in NC queue
+    void decreaseFast(Value newSup); // Do not insert in NC queue
+
+public:
+    IntervalVariable(WCSP* wcsp, string n, Value iinf, Value isup);
+
+    bool enumerated() const FINAL { return false; }
+
+    unsigned int getDomainSize() const FINAL
+    {
+        return sup - inf + 1;
+    }
+
+    void increase(Value newInf, bool isDecision = false);
+    void decrease(Value newSup, bool isDecision = false);
+    void remove(Value newValue, bool isDecision = false)
+    {
+        if (newValue == inf)
+            increase(newValue + 1, isDecision);
+        else if (newValue == sup)
+            decrease(newValue - 1, isDecision);
+    }
+    void assign(Value newValue, bool isDecision = false);
+    void assignLS(Value newValue, ConstraintSet& delayedCtrs, bool force = false);
+
+    Cost getInfCost() const FINAL { return infCost; }
+    Cost getSupCost() const FINAL { return supCost; }
+    void projectInfCost(Cost cost);
+    void projectSupCost(Cost cost);
+
+    // this method can be applied to interval or enumerated domain
+    Cost getCost(const Value value) const FINAL
+    {
+        if (value == inf)
+            return getInfCost();
+        else if (value == sup)
+            return getSupCost();
+        else
+            return MIN_COST;
+    }
+
+    void propagateNC();
+    bool verifyNC();
+
+    class iterator;
+    friend class iterator;
+    class iterator { // : public Variable::iterator {
+        IntervalVariable* var;
+        Value value;
+
+    public:
+        iterator(IntervalVariable* v, Value vv)
+            : var(v)
+            , value(vv)
+        {
+        }
+
+        Value operator*() const { return value; }
+
+        inline iterator& operator++()
+        { // Prefix form
+            if (value < var->sup)
+                ++value;
+            else
+                value = var->sup + 1;
+            return *this;
+        }
+
+        iterator& operator--()
+        { // Prefix form
+            if (value > var->inf)
+                --value;
+            else
+                value = var->sup + 1;
+            return *this;
+        }
+
+        // To see if you're at the end:
+        bool operator==(const iterator& iter) const { return value == iter.value; }
+        bool operator!=(const iterator& iter) const { return value != iter.value; }
+    };
+    iterator begin()
+    {
+        return iterator(this, inf);
+    }
+    iterator end()
+    {
+        return iterator(this, sup + 1);
+    }
+    iterator rbegin()
+    {
+        return iterator(this, sup);
+    }
+    iterator rend() { return end(); }
+
+    //Finds the first available element whose value is greater or equal to v
+    iterator lower_bound(Value v)
+    {
+        if (v <= sup)
+            return iterator(this, max(getInf(), v));
+        else
+            return end();
+    }
+
+    //Finds the first available element whose value is lower or equal to v
+    iterator upper_bound(Value v)
+    {
+        if (v >= inf)
+            return iterator(this, min(getSup(), v));
+        else
+            return end();
+    }
+
+    void print(ostream& os);
+};
+
+#endif /*TB2INTERVAR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2knapsack.hpp b/code/include/tb2/core/tb2knapsack.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..4c20b6a341cbe30186413bc3587cae29ac1c128b
--- /dev/null
+++ b/code/include/tb2/core/tb2knapsack.hpp
@@ -0,0 +1,822 @@
+#ifndef TB2KNAPSACK_HPP_
+#define TB2KNAPSACK_HPP_
+
+#include "tb2abstractconstr.hpp"
+#include "tb2ternaryconstr.hpp"
+#include "tb2enumvar.hpp"
+#include "tb2wcsp.hpp"
+#include "../utils/tb2store.hpp"
+#include <numeric>
+
+// warning! we assume binary variables
+class KnapsackConstraint : public AbstractNaryConstraint {
+    StoreLong capacity; // knapsack capacity
+    vector<Long> weights; // knapsack linear positive integer coefficients
+    StoreCost lb; // projected cost to problem lower bound (if it is zero then all deltaCosts must be zero)
+    vector<StoreCost> deltaCosts0; // extended costs from unary costs for value 0 to the cost function
+    vector<StoreCost> deltaCosts1; // extended costs from unary costs for value 1 to the cost function
+    StoreInt nonassigned; // number of non-assigned variables during search, must be backtrackable!
+    vector<Long> conflictWeights; // used by weighted degree heuristics
+    StoreLong  MaxWeight;
+    Long Original_capacity;
+    vector<Cost> CostforKnapsack; // temporary data structure for propagate
+    vector<int> arrvar; // temporary data structure for propagate
+    vector<Double> Weightedtprofit; // temporary data structure for propagate
+    StoreLong NegCapacity;
+
+    void projectLB(Cost c)
+    {
+        if(c>0){
+            lb += c;
+            Constraint::projectLB(c);
+        }
+
+    }
+
+    Double Ceil(Double v){
+        const Double epsilon = 1e-7;
+
+        if(floorl(v)+epsilon>v)
+            return floorl(v);
+        else
+            return ceill(v);
+    }
+    Double Trunc(Double v){
+        return truncl(v);
+    }
+
+public:
+    KnapsackConstraint(WCSP *wcsp, EnumeratedVariable **scope_in, int arity_in, Long capacity_in,
+                       vector<Long> weights_in, Long MaxWeigth_in, Long NegCapacity_in)
+            : AbstractNaryConstraint(wcsp, scope_in, arity_in)
+            , capacity(capacity_in)
+            , weights(weights_in)
+            , lb(MIN_COST)
+            , nonassigned(arity_in)
+            , MaxWeight(MaxWeigth_in)
+            , Original_capacity(capacity_in)
+            , NegCapacity(NegCapacity_in)
+            {
+        deltaCosts0 = vector<StoreCost>(arity_in, StoreCost(MIN_COST));
+        deltaCosts1 = vector<StoreCost>(arity_in, StoreCost(MIN_COST));
+        for (int i = 0; i < arity_in; i++) {
+            assert(scope_in[i]->getDomainInitSize() == 2 && scope_in[i]->toValue(0) == 0 && scope_in[i]->toValue(1) == 1);
+            conflictWeights.push_back(0);
+            CostforKnapsack.push_back(MIN_COST);
+            arrvar.push_back(i);
+            Weightedtprofit.push_back(0.);
+        }
+
+    }
+
+    virtual ~KnapsackConstraint() {}
+
+    bool extension() const FINAL { return false; } // TODO: allows functional variable elimination but not other preprocessing
+
+    void reconnect()
+    {
+        if (deconnected()) {
+            nonassigned = arity_;
+            AbstractNaryConstraint::reconnect();
+        }
+    }
+    int getNonAssigned() const { return nonassigned; }
+
+    Long getConflictWeight() const { return Constraint::getConflictWeight(); }
+    Long getConflictWeight(int varIndex) const
+    {
+        assert(varIndex >= 0);
+        assert(varIndex < arity_);
+        return conflictWeights[varIndex] + Constraint::getConflictWeight();
+    }
+    void incConflictWeight(Constraint* from)
+    {
+        //assert(fromElim1==NULL);
+        //assert(fromElim2==NULL);
+        if (from == this) {
+            Constraint::incConflictWeight(1);
+        } else if (deconnected()) {
+            for (int i = 0; i < from->arity(); i++) {
+                int index = getIndex(from->getVar(i));
+                if (index >= 0) { // the last conflict constraint may be derived from two binary constraints (boosting search), each one derived from an n-ary constraint with a scope which does not include parameter constraint from
+                    assert(index < arity_);
+                    conflictWeights[index]++;
+                }
+            }
+        }
+    }
+
+    void resetConflictWeight()
+    {
+        conflictWeights.assign(conflictWeights.size(), 0);
+        Constraint::resetConflictWeight();
+    }
+
+    bool universal() {
+        // returns true if constraint always satisfied
+        if (capacity + NegCapacity <= 0)
+            return true;
+        else
+            return false;
+    }
+
+    Cost eval(const Tuple& s)
+    {
+        // returns the cost of the corresponding assignment s
+        Long W=0;
+        Cost res = -lb;
+        for (int i = 0; i < arity_; i++) {
+            if (ToulBar2::verbose >= 2)
+                cout<<s[i]<<" ";
+            EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+            if(var->toValue(s[i])==0)
+                res+=deltaCosts0[i];
+            else
+            {
+                W+=weights[i];
+                res+=deltaCosts1[i];
+            }
+        }
+        if(W < Original_capacity || res > wcsp->getUb())
+            res=wcsp->getUb();
+        assert(res <= wcsp->getUb());
+        if (ToulBar2::verbose >= 2)
+            cout<<"   "<<res<<endl;
+        return res;
+    }
+    Cost evalsubstr(const Tuple& s, Constraint* ctr) FINAL { return evalsubstrAny(s, ctr); }
+    Cost evalsubstr(const Tuple& s, NaryConstraint* ctr) FINAL { return evalsubstrAny(s, ctr); }
+    template <class T>
+    Cost evalsubstrAny(const Tuple& s, T* ctr)
+    {
+        int count = 0;
+
+        for (int i = 0; i < arity_; i++) {
+            int ind = ctr->getIndex(getVar(i));
+            if (ind >= 0) {
+                evalTuple[i] = s[ind];
+                count++;
+            }
+        }
+        assert(count <= arity_);
+
+        Cost cost;
+        if (count == arity_)
+            cost = eval(evalTuple);
+        else
+            cost = MIN_COST;
+
+        return cost;
+    }
+    Cost getCost() FINAL
+    {
+        for (int i = 0; i < arity_; i++) {
+            EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+            evalTuple[i] = var->toIndex(var->getValue());
+        }
+        return eval(evalTuple);
+    }
+
+    double computeTightness() { return MIN_COST; } //TODO: compute a ratio of feasible tuples divided by getDomainSizeProduct()
+
+    //TODO: needed for dominance test by DEE
+    //pair<pair<Cost, Cost>, pair<Cost, Cost>> getMaxCost(int index, Value a, Value b)
+
+    //Cost getMaxFiniteCost() //TODO: return the maximum finite cost for any valid tuple less than wcsp->getUb()
+    //void setInfiniteCost(Cost ub)
+
+    void assign(int varIndex)
+    {
+        if (connected(varIndex)) {
+            if (ToulBar2::verbose >= 2)
+                cout<<" var assigned: " <<scope[varIndex]->getName() << " weight: "<<weights[varIndex]<<endl;
+            deconnect(varIndex);
+            nonassigned = nonassigned - 1;
+            assert(nonassigned >= 0);
+            if (scope[varIndex]->getValue() == 1) {
+                if (weights[varIndex] > 0) {
+                    MaxWeight -= weights[varIndex];
+                    capacity -= weights[varIndex];
+                } else if (weights[varIndex] < 0) {
+                    capacity -= weights[varIndex];
+                    NegCapacity += weights[varIndex];
+                }
+            }
+            else if(weights[varIndex]>0)
+                MaxWeight -= weights[varIndex];
+            else
+                NegCapacity+=weights[varIndex];
+            if (universal()) {
+                deconnect();
+                if (ToulBar2::verbose >= 2)
+                    cout<<"lb : "<<lb<<endl;
+                Cost TobeProjected = -lb;
+                lb=0;
+                for(int i = 0; i < arity_; i++){
+                    if (ToulBar2::verbose >= 2)
+                        cout<<scope[i]->getName()<<" deltacosts0 : " <<deltaCosts0[i]<<" deltacosts1 :" << deltaCosts1[i]<<endl;
+                    if(scope[i]->unassigned()){
+                        scope[i]->project(1,deltaCosts1[i],true);
+                        deltaCosts1[i]=0;
+                        scope[i]->project(0,deltaCosts0[i],true);
+                        deltaCosts0[i]=0;
+                        scope[i]->findSupport();
+                    }
+                    else if(scope[i]->canbe(1)) {
+                        TobeProjected+=deltaCosts1[i];
+                        deltaCosts1[i]=0;
+                    }
+                    else{
+                        TobeProjected+=deltaCosts0[i];
+                        deltaCosts0[i]=0;
+                    }
+                }
+                assert(TobeProjected >= MIN_COST);
+                Constraint::projectLB(TobeProjected);
+            } else if (nonassigned <= 3) {
+                deconnect(); // this constraint is removed from the current WCSP problem
+                if (ToulBar2::verbose >= 2)
+                    cout<<"EVALUATION "<<endl;
+                projectNary(); // and replaced by a ternary constraint in extension
+            } else {
+                //TODO: incremental bound propagation
+                propagate();
+                if (ToulBar2::FullEAC)
+                    reviseEACGreedySolution();
+            }
+        }
+    }
+
+    void propagate()
+    {
+        // propagates from scratch the constraint
+        if (connected()) {
+            for(int i = 0; connected() && i < arity_; i++){
+                if (connected(i) && scope[i]->assigned()) {
+                    assign(i);
+                }
+            }
+            if (connected()) {
+                if (!verify()) {
+                    THROWCONTRADICTION;
+                } else if (nonassigned > 3 && ToulBar2::LcLevel >= LC_AC) {
+                    if (ToulBar2::verbose >= 2)
+                        cout << " BOUND  PROPAGATION" << endl;
+                    //Bound propagation : we verify that each variable can be both assigned to 1 or 0 without breaking the constraint.
+                    int k = 0;
+                    bool b = false;
+                    while (k < arity_ && b == false) {
+                        if(weights[k]>0) {
+                            if (MaxWeight - weights[k] < capacity && scope[k]->unassigned()) {
+                                scope[k]->assign(1);
+                                if (ToulBar2::verbose >= 2)
+                                    cout << scope[k]->getName() << " has been assigned" << endl;
+                                b = true;
+                            } else
+                                k++;
+                        }
+                        else {
+                                if (MaxWeight + weights[k] < capacity && scope[k]->unassigned()) {
+                                    scope[k]->assign(0);
+                                    if (ToulBar2::verbose >= 2)
+                                        cout << scope[k]->getName() << " has been assigned" << endl;
+                                    b = true;
+                                } else
+                                    k++;
+                            }
+                    }
+                    if (connected() && ToulBar2::LcLevel >= LC_DAC && b == false) {
+                        if (ToulBar2::verbose >= 2)
+                            cout << "REDUCED COST PROJECTION" << endl;
+                        for (int i = 0; i < arity_; i++) {
+                            CostforKnapsack[i] = scope[i]->getCost(1) - scope[i]->getCost(0);
+                        }
+                        if (ToulBar2::verbose >= 2)
+                            cout << "capacity is : " << capacity << endl;
+                        Cost NegweightNegprofit=0; //Used in the case of cap>0
+                        Cost PosweightPosprofit=0; //Used in the case of cap<=0
+                        int nbmincost=0;
+                        // Compute weighted profit : p_i / w_i. MAX_COST and MIN_COST are used when the weighted profit is no relevant and we need
+                        // to impose some variables to be at the end or the beginning of the sorting.
+                        if(capacity>=0) {
+                            for (int i = 0; i < arity_; i++) {
+                                if (scope[i]->unassigned()) {
+                                    if (ToulBar2::verbose >= 2)
+                                        cout << scope[i]->getName() << " : " << CostforKnapsack[i] << " / "
+                                             << weights[i] << endl;
+                                    if ((weights[i] > 0 && CostforKnapsack[i] >= MIN_COST) ||
+                                        (weights[i] > 0 && CostforKnapsack[i] < MIN_COST)) {
+                                        Weightedtprofit[i] = Double(CostforKnapsack[i]) / weights[i];
+                                    } else if (weights[i] < 0 && CostforKnapsack[i] >= MIN_COST) {
+                                        Weightedtprofit[i] = MAX_COST;
+                                    } else if (weights[i] < 0 && CostforKnapsack[i] < MIN_COST) {
+                                        Weightedtprofit[i] = Double(CostforKnapsack[i]) / weights[i];
+                                        NegweightNegprofit -= weights[i];
+                                    }
+                                } else {
+                                    Weightedtprofit[i] = MAX_COST;
+                                }
+                            }
+                        }
+                        else{
+                            for (int i = 0; i < arity_; i++) {
+                                if (scope[i]->unassigned()) {
+                                    if (ToulBar2::verbose >= 2)
+                                        cout << scope[i]->getName() << " : " << CostforKnapsack[i] << " / "
+                                             << weights[i] << endl;
+                                    if (weights[i] < 0 && CostforKnapsack[i] < MIN_COST) {
+                                        Weightedtprofit[i] = Double(CostforKnapsack[i]) / weights[i];
+                                    } else if (weights[i] < 0 && CostforKnapsack[i] >= MIN_COST) {
+                                        Weightedtprofit[i] = MIN_COST;
+                                        nbmincost++;
+                                    } else if (weights[i] > 0 && CostforKnapsack[i] > MIN_COST) {
+                                        Weightedtprofit[i] = Double(CostforKnapsack[i]) / weights[i];
+                                        PosweightPosprofit += weights[i];
+                                    } else if (weights[i] > 0 && CostforKnapsack[i] <= MIN_COST){
+                                        Weightedtprofit[i] = MAX_COST;
+                                    }
+                                } else {
+                                    Weightedtprofit[i] = MIN_COST;
+                                    nbmincost++;
+                                }
+                            }
+                        }
+                        if (ToulBar2::verbose >= 2){
+                            cout << "Unsorted variable by Weighted profit : ";
+                            for (int i = 0; i < int(arrvar.size()); i++) {
+                                cout << " " << arrvar[i];
+                                cout << "-" << Weightedtprofit[arrvar[i]];
+                            }
+                            cout << endl;
+                        }
+                        //Sort variables in ascendant or descendant order depending of the sign of the capacity
+                        //Use stable sort for reproducibility of the results
+                        if(capacity>=0)
+                            stable_sort(arrvar.begin(), arrvar.end(),[&](int x, int y) { return Weightedtprofit[x] < Weightedtprofit[y]; });
+                        else
+                            stable_sort(arrvar.begin(), arrvar.end(),[&](int x, int y) { return Weightedtprofit[x] > Weightedtprofit[y]; });
+
+                        if (ToulBar2::verbose >= 2){
+                            cout << "Sorted variable by weighted profit: ";
+                            for (int i = 0; i < int(arrvar.size()); i++) {
+                                cout << " " << arrvar[i];
+                                cout << "-" << Weightedtprofit[arrvar[i]];
+                            }
+                            cout << endl;}
+
+                        //Find splitting variable x_k 
+                        Long W = 0;
+                        int splitvar = -1;
+                        Cost c = 0; //Cost we will project on c_0, if the capacity is positive it is the profit sum of the variables before x_k
+                        // if the capacity is negative it is the profit sum of the variables after x_k 
+                        if(capacity >=0) {
+                            while (W < capacity + NegweightNegprofit) {
+                                splitvar = splitvar + 1;
+                                if (weights[arrvar[splitvar]] > 0)
+                                    W += weights[arrvar[splitvar]];
+                                else
+                                    W -= weights[arrvar[splitvar]];
+                                if (CostforKnapsack[arrvar[splitvar]] > MIN_COST)
+                                    c += CostforKnapsack[arrvar[splitvar]];
+                                else if (weights[arrvar[splitvar]] < 0)
+                                    c -= CostforKnapsack[arrvar[splitvar]];
+                            }
+                        }
+                        else{
+                            while (W >= capacity - PosweightPosprofit && splitvar != arity_-nbmincost-1) {
+                                splitvar = splitvar + 1;
+                                if (weights[arrvar[splitvar]] < 0)
+                                    W += weights[arrvar[splitvar]];
+                                else if (CostforKnapsack[arrvar[splitvar]] > MIN_COST)
+                                    W -= weights[arrvar[splitvar]];
+                                else
+                                    W += weights[arrvar[splitvar]];
+                            }
+                            for (int i=splitvar+1; i < arity_-nbmincost-1; i++) {
+                                if(CostforKnapsack[arrvar[i]] > MIN_COST && weights[arrvar[i]]>0)
+                                    c+=CostforKnapsack[arrvar[i]];
+                                else if(CostforKnapsack[arrvar[i]] < MIN_COST && weights[arrvar[i]]<0)
+                                    c-=CostforKnapsack[arrvar[i]];
+                            }
+                        }
+                        if (ToulBar2::verbose >= 2)
+                            cout << "splitvar : " << splitvar << endl;
+                        Double xk=0;
+                        // we add the profit of x_k 
+                        if(splitvar>-1) {
+                            Long capacityLeft;
+                            if(capacity >=0) {
+                                if (weights[arrvar[splitvar]] > 0)
+                                    capacityLeft = capacity + NegweightNegprofit - W + weights[arrvar[splitvar]];
+                                else
+                                    capacityLeft = capacity + NegweightNegprofit - W - weights[arrvar[splitvar]];
+
+                                xk = Double(capacityLeft) / weights[arrvar[splitvar]];
+                            }
+                            else if(W <= capacity - PosweightPosprofit){
+                                if (weights[arrvar[splitvar]] > 0)
+                                    capacityLeft = capacity - PosweightPosprofit - W - weights[arrvar[splitvar]];
+                                else
+                                    capacityLeft = capacity - PosweightPosprofit - W + weights[arrvar[splitvar]];
+
+                                xk = Double(capacityLeft) / weights[arrvar[splitvar]];
+                            }
+                            if (xk < 0)
+                                xk = -xk;
+                            assert(xk <= 1);
+                            assert(xk >= 0);
+                            if (capacity>=0) {
+                                if (CostforKnapsack[arrvar[splitvar]] > MIN_COST)
+                                    c = c - CostforKnapsack[arrvar[splitvar]] +
+                                        Ceil(CostforKnapsack[arrvar[splitvar]] * xk);
+                                else if (weights[arrvar[splitvar]] < 0)
+                                    c = c + CostforKnapsack[arrvar[splitvar]] +
+                                        Ceil(-CostforKnapsack[arrvar[splitvar]] * xk);
+                            }
+                            else if(W <= capacity - PosweightPosprofit){
+                                if (CostforKnapsack[arrvar[splitvar]] > MIN_COST)
+                                    c = c + Ceil(CostforKnapsack[arrvar[splitvar]] * (1-xk));
+                                else if (weights[arrvar[splitvar]] < 0)
+                                    c = c + Ceil(-CostforKnapsack[arrvar[splitvar]] * (1-xk));
+                            }
+                        }
+                        //If c<= 0 it means that we use only negative cost, it means we use only variables with cost on value 0
+                        if (c > 0) {
+                            //New value for p_k to obtain integer cost (p_k' might be decimal)
+                            Double Newkcost = 0.;
+                            Double epsi = 1e-5;
+                            if(splitvar != 0) {
+                                if (capacity >= 0)
+                                    Newkcost = min(Double(CostforKnapsack[arrvar[splitvar]]),
+                                                   max(Double(CostforKnapsack[arrvar[splitvar - 1]]) /
+                                                       weights[arrvar[splitvar - 1]] * weights[arrvar[splitvar]],
+                                                       Double((Trunc(xk * CostforKnapsack[arrvar[splitvar]]) + epsi) /
+                                                              xk)));
+                                else
+                                    Newkcost = min(Double(CostforKnapsack[arrvar[splitvar]]),
+                                                   max(Double(CostforKnapsack[arrvar[splitvar - 1]]) /
+                                                       weights[arrvar[splitvar - 1]] * weights[arrvar[splitvar]],
+                                                       Double((Trunc((1 - xk) * CostforKnapsack[arrvar[splitvar]]) +
+                                                               epsi) / (1 - xk))));
+
+                            }
+                            else {
+                                    if(capacity>=0)
+                                        Newkcost = min(Double(CostforKnapsack[arrvar[splitvar]]), Double((Trunc(xk * CostforKnapsack[arrvar[splitvar]]) + epsi) / xk));
+                                    else
+                                        Newkcost = min(Double(CostforKnapsack[arrvar[splitvar]]), Double((Trunc((1-xk) * CostforKnapsack[arrvar[splitvar]]) + epsi) / (1-xk)));
+                           }
+                            //--------------Test-------------
+#ifndef NDEBUG
+                            Double Testprofit = 0;
+                            if(capacity>=0) {
+                                for (int i = 0; i < splitvar; i++) {
+                                    if (CostforKnapsack[arrvar[i]] > MIN_COST)
+                                        Testprofit += CostforKnapsack[arrvar[i]];
+                                    else if (weights[arrvar[i]] < 0)
+                                        Testprofit -= CostforKnapsack[arrvar[i]];
+                                }
+                                if (CostforKnapsack[arrvar[splitvar]] > MIN_COST)
+                                    Testprofit += xk * Newkcost;
+                                else
+                                    Testprofit -= xk * Newkcost;
+                            }
+                            else{
+                                for (int i = splitvar+1; i < arity_-nbmincost-1; i++) {
+                                    if (CostforKnapsack[arrvar[i]] > MIN_COST && weights[arrvar[i]]>0)
+                                        Testprofit += CostforKnapsack[arrvar[i]];
+                                    else if (weights[arrvar[i]] < 0 && weights[arrvar[i]]<0)
+                                        Testprofit -= CostforKnapsack[arrvar[i]];
+                                }
+                                if(W <= capacity - PosweightPosprofit){
+                                    if (CostforKnapsack[arrvar[splitvar]] > MIN_COST)
+                                        Testprofit += (1-xk) * Newkcost;
+                                    else
+                                        Testprofit -= (1-xk) * Newkcost;
+                                }
+                            }
+                            assert(Ceil(Testprofit) == Ceil(c));
+#endif
+                            //--------------------------
+                            if (ToulBar2::verbose >= 2)
+                                cout << "deltaCost : ";
+                            // Compute the reduced cost for each variable and add it to deltacost, depending of the sign of the capacity we proceed differently
+                            if(capacity>=0) {
+                                for (int i = 0; i < arity_; i++) {
+                                    if (scope[arrvar[i]]->unassigned()) {
+                                        if (i < splitvar) {
+                                            if (CostforKnapsack[arrvar[i]] > MIN_COST) {
+                                                deltaCosts1[arrvar[i]] += CostforKnapsack[arrvar[i]];
+                                                assert(CostforKnapsack[arrvar[i]] <= scope[arrvar[i]]->getCost(1));
+                                                scope[arrvar[i]]->extend(1, CostforKnapsack[arrvar[i]]);
+                                            } else if (CostforKnapsack[arrvar[i]] < MIN_COST) {
+                                                deltaCosts0[arrvar[i]] -= CostforKnapsack[arrvar[i]];
+                                                assert(-CostforKnapsack[arrvar[i]] <= scope[arrvar[i]]->getCost(0));
+                                                scope[arrvar[i]]->extend(0, -CostforKnapsack[arrvar[i]]);
+                                            }
+                                        } else if (CostforKnapsack[arrvar[i]] > MIN_COST && weights[arrvar[i]] > 0) {
+                                            deltaCosts1[arrvar[i]] += min( Ceil(Newkcost / Double(weights[arrvar[splitvar]]) * weights[arrvar[i]]), Double(c));
+                                            assert(min(Ceil(Newkcost / weights[arrvar[splitvar]] * weights[arrvar[i]]), Double(c)) <= scope[arrvar[i]]->getCost(1));
+                                            scope[arrvar[i]]->extend(1, min(Ceil(Newkcost / Double(weights[arrvar[splitvar]]) * weights[arrvar[i]]), Double(c)));
+                                        } else if (CostforKnapsack[arrvar[i]] < MIN_COST && weights[arrvar[i]] < 0) {
+                                            deltaCosts0[arrvar[i]] += min( Ceil(Newkcost / Double(weights[arrvar[splitvar]]) * -weights[arrvar[i]]), Double(c));
+                                            assert(min(Ceil(Newkcost / weights[arrvar[splitvar]] * -weights[arrvar[i]]), Double(c)) <= scope[arrvar[i]]->getCost(0));
+                                            scope[arrvar[i]]->extend(0, min(Ceil(Newkcost / Double(weights[arrvar[splitvar]]) * -weights[arrvar[i]]), Double(c)));
+                                        }
+                                    }
+                                }
+                            }
+                            else{
+                                for (int i = 0; i < arity_; i++) {
+                                    if (scope[arrvar[i]]->unassigned()) {
+                                        if (i > splitvar) {
+                                            if (CostforKnapsack[arrvar[i]] > MIN_COST) {
+                                                deltaCosts1[arrvar[i]] += CostforKnapsack[arrvar[i]];
+                                                assert(CostforKnapsack[arrvar[i]] <= scope[arrvar[i]]->getCost(1));
+                                                scope[arrvar[i]]->extend(1, CostforKnapsack[arrvar[i]]);
+                                            } else if (CostforKnapsack[arrvar[i]] < MIN_COST) {
+                                                deltaCosts0[arrvar[i]] -= CostforKnapsack[arrvar[i]];
+                                                assert(-CostforKnapsack[arrvar[i]] <= scope[arrvar[i]]->getCost(0));
+                                                scope[arrvar[i]]->extend(0, -CostforKnapsack[arrvar[i]]);
+                                            }
+                                        } else if (CostforKnapsack[arrvar[i]] > MIN_COST && weights[arrvar[i]] > 0) {
+                                            deltaCosts1[arrvar[i]] += min( Ceil(Newkcost / Double(weights[arrvar[splitvar]]) * weights[arrvar[i]]), Double(c));
+                                            assert(min(Ceil(Newkcost / weights[arrvar[splitvar]] * weights[arrvar[i]]), Double(c)) <=scope[arrvar[i]]->getCost(1));
+                                            scope[arrvar[i]]->extend(1, min(Ceil(Newkcost / Double(weights[arrvar[splitvar]]) * weights[arrvar[i]]), Double(c)));
+                                        } else if (CostforKnapsack[arrvar[i]] < MIN_COST && weights[arrvar[i]] < 0) {
+                                            deltaCosts0[arrvar[i]] += min(Ceil(Newkcost / Double(weights[arrvar[splitvar]]) * -weights[arrvar[i]]), Double(c));
+                                            assert(min(Ceil(Newkcost / weights[arrvar[splitvar]] * -weights[arrvar[i]]), Double(c)) <=scope[arrvar[i]]->getCost(0));
+                                            scope[arrvar[i]]->extend(0, min(Ceil(Newkcost / Double(weights[arrvar[splitvar]]) * -weights[arrvar[i]]), Double(c)));
+                                        }
+                                    }
+                                }
+                            }
+                            if (ToulBar2::verbose >= 2) {
+                                cout << endl << "c :" << c << " lb : " << lb << endl;
+                            }
+                            projectLB(c);
+                        }
+                    }
+                } else if (nonassigned <= 3) {
+                    assert(connected());
+                    deconnect(); // this constraint is removed from the current WCSP problem
+                    if (ToulBar2::verbose >= 2)
+                        cout<<"EVALUATION 2"<<endl;
+                    projectNary();  // and replaced by a ternary constraint in extension
+                }
+            }
+        }
+    }
+
+
+    bool verify()
+    {
+        // checks that propagation has been done correctly such that at least there exists one valid tuple with zero cost (called by WCSP::verify in Debug mode at each search node)
+        if(capacity<=MaxWeight)
+            return true;
+        else
+            return false;
+    }
+    void increase(int index) {}
+    void decrease(int index) {}
+    void remove(int index) {}
+    void projectFromZero(int index)
+    {
+        //TODO: incremental cost propagation
+        propagate();
+    }
+
+    //bool checkEACGreedySolution(int index = -1, Value supportValue = 0) FINAL //TODO: checks if current EAC support has zero cost
+    //bool reviseEACGreedySolution(int index = -1, Value supportValue = 0) FINAL
+
+    void print(ostream& os)
+    {
+        os << endl
+           << this << " knapsack(";
+
+        int unassigned_ = 0;
+        for (int i = 0; i < arity_; i++) {
+            if (scope[i]->unassigned())
+                unassigned_++;
+            os << weights[i];
+            os << "*";
+            os << scope[i]->wcspIndex;
+            if (i < arity_ - 1)
+                os << " + ";
+        }
+        os << " >= " << capacity << ") / " << lb << " (";
+        for (int i = 0; i < arity_; i++) {
+            os << deltaCosts0[i];
+            if (i < arity_ - 1)
+                os << ",";
+        }
+        os << ") (";
+        for (int i = 0; i < arity_; i++) {
+            os << deltaCosts1[i];
+            if (i < arity_ - 1)
+                os << ",";
+        }
+        os << ") ";
+        if (ToulBar2::weightedDegree) {
+            os << "/" << getConflictWeight();
+            for (int i = 0; i < arity_; i++) {
+                os << "," << conflictWeights[i];
+            }
+        }
+        os << " arity: " << arity_;
+        os << " unassigned: " << (int)nonassigned << "/" << unassigned_ << endl;
+    }
+
+    void dump(ostream& os, bool original = true)
+    {
+        bool iszerodeltas = (lb == MIN_COST);
+        for (vector<StoreCost>::iterator it = deltaCosts0.begin(); it != deltaCosts0.end(); ++it) {
+            Cost d = (*it);
+            if (d != MIN_COST) {
+                iszerodeltas = false;
+                break;
+            }
+        }
+        if (iszerodeltas) {
+            for (vector<StoreCost>::iterator it = deltaCosts1.begin(); it != deltaCosts1.end(); ++it) {
+                Cost d = (*it);
+                if (d != MIN_COST) {
+                    iszerodeltas = false;
+                    break;
+                }
+            }
+        }
+
+        if (original) {
+            os << arity_;
+            for (int i = 0; i < arity_; i++)
+                os << " " << scope[i]->wcspIndex;
+            if (iszerodeltas) {
+                os << " " << -1 << " knapsack " << capacity;
+                for (int i = 0; i < arity_; i++) {
+                    os << " " << weights[i];
+                }
+                os << endl;
+            } else {
+                os << " " << 0 << " " << getDomainSizeProduct() << endl;
+                Tuple t;
+                Cost c;
+                firstlex();
+                while (nextlex(t, c)) {
+                    for (int i = 0; i < arity_; i++) {
+                        os << t[i] << " ";
+                    }
+                    os << c << endl;
+                }
+            }
+        } else {
+            os << nonassigned;
+            for (int i = 0; i < arity_; i++)
+                if (scope[i]->unassigned())
+                    os << " " << scope[i]->getCurrentVarId();
+            if (iszerodeltas) {
+                os << " " << -1 << " knapsack " << capacity;
+                for (int i = 0; i < arity_; i++) {
+                    if (scope[i]->unassigned())
+                        os << " " << weights[i];
+                }
+                os << endl;
+            } else {
+                os << " " << 0 << " " << getDomainSizeProduct() << endl;
+                Tuple t;
+                Cost c;
+                firstlex();
+                while (nextlex(t, c)) {
+                    for (int i = 0; i < arity_; i++) {
+                        if (scope[i]->unassigned())
+                            os << scope[i]->toCurrentIndex(scope[i]->toValue(t[i])) << " ";
+                    }
+                    os << min(wcsp->getUb(), c) << endl;
+                }
+            }
+        }
+    }
+
+    void dump_CFN(ostream& os, bool original = true)
+    {
+        bool printed = false;
+        os << "\"F_";
+
+        bool iszerodeltas = (lb == MIN_COST);
+        for (vector<StoreCost>::iterator it = deltaCosts0.begin(); it != deltaCosts0.end(); ++it) {
+            Cost d = (*it);
+            if (d != MIN_COST) {
+                iszerodeltas = false;
+                break;
+            }
+        }
+        if (iszerodeltas) {
+            for (vector<StoreCost>::iterator it = deltaCosts1.begin(); it != deltaCosts1.end(); ++it) {
+                Cost d = (*it);
+                if (d != MIN_COST) {
+                    iszerodeltas = false;
+                    break;
+                }
+            }
+        }
+
+        if (original) {
+            printed = false;
+            for (int i = 0; i < arity_; i++) {
+                if (printed)
+                    os << "_";
+                os << scope[i]->wcspIndex;
+                printed = true;
+            }
+
+            os << "\":{\"scope\":[";
+            printed = false;
+            for (int i = 0; i < arity_; i++) {
+                if (printed)
+                    os << ",";
+                os << scope[i]->getName();
+                printed = true;
+            }
+            os << "],\n\"type\":\"knapsack\",\n\"params\":{\"capacity\":" << capacity << ",\n\t\"weights\":[";
+
+            if (iszerodeltas) {
+                printed = false;
+                for (int i = 0; i < arity_; i++) {
+                    if (printed)
+                        os << ",";
+                    os << weights[i];
+                    printed = true;
+                }
+            } else {
+                Tuple t;
+                Cost c;
+                printed = false;
+                firstlex();
+                while (nextlex(t, c)) {
+                    os << endl;
+                    for (int i = 0; i < arity_; i++) {
+                        if (printed)
+                            os << ",";
+                        os << ((scope[i]->isValueNames()) ? scope[i]->getValueName(t[i]) : std::to_string(t[i]));
+                        printed = true;
+                    }
+                    os << "," << wcsp->Cost2RDCost(c);
+                }
+            }
+        } else {
+            for (int i = 0; i < arity_; i++)
+                if (scope[i]->unassigned()) {
+                    if (printed)
+                        os << "_";
+                    os << scope[i]->getCurrentVarId();
+                    printed = true;
+                }
+            os << "\":{\"scope\":[";
+            printed = false;
+            for (int i = 0; i < arity_; i++)
+                if (scope[i]->unassigned()) {
+                    if (printed)
+                        os << ",";
+                    os << scope[i]->getName();
+                    printed = true;
+                }
+            os << "],\n\"type\":\"knapsack\",\n\"params\":{\"capacity\":" << capacity << ",\n\t\"weights\":[";
+
+            if (iszerodeltas) {
+                printed = false;
+                for (int i = 0; i < arity_; i++) {
+                    if (printed)
+                        os << ",";
+                    os << weights[i];
+                    printed = true;
+                }
+            } else {
+                Tuple t;
+                Cost c;
+                printed = false;
+                firstlex();
+                while (nextlex(t, c)) {
+                    os << endl;
+                    for (int i = 0; i < arity_; i++) {
+                        if (scope[i]->unassigned()) {
+                            if (printed)
+                                os << ",";
+                            os << scope[i]->toCurrentIndex(scope[i]->toValue(t[i]));
+                            printed = true;
+                        }
+                    }
+                    os << "," << wcsp->Cost2RDCost(min(wcsp->getUb(), c));
+                }
+            }
+        }
+        os << "]}},\n";
+    }
+};
+#endif /*TB2KNAPSACK_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2naryconstr.cpp b/code/include/tb2/core/tb2naryconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..428c0e66dcf4a93d5ee5474f6e8217b85bab078b
--- /dev/null
+++ b/code/include/tb2/core/tb2naryconstr.cpp
@@ -0,0 +1,1576 @@
+
+#include "tb2naryconstr.hpp"
+#include "search/tb2clusters.hpp"
+
+NaryConstraint::NaryConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in, Cost defval, Long nbtuples)
+    : AbstractNaryConstraint(wcsp, scope_in, arity_in)
+    , pf(NULL)
+    , costs(NULL)
+    , costSize(0)
+    , default_cost(defval)
+    , nonassigned(arity_in)
+    , filters(NULL)
+{
+    for (int i = 0; i < arity_in; i++) {
+        conflictWeights.push_back(0);
+        unsigned int domsize = scope_in[i]->getDomainInitSize();
+        if (domsize > (unsigned int)std::numeric_limits<tValue>::max()) {
+            cerr << "Nary constraints overflow. Extend tValue type range." << endl;
+            exit(EXIT_FAILURE);
+        }
+    }
+
+    Cost Top = wcsp->getUb();
+    if (default_cost > Top)
+        default_cost = Top;
+
+    pf = new TUPLES;
+    if (nbtuples != 0 && expandtodo(min(nbtuples, getDomainSizeProduct())))
+        expand();
+
+    // Cannot propagate here because cost tuples are not known yet
+}
+
+NaryConstraint::NaryConstraint(WCSP* wcsp)
+    : AbstractNaryConstraint(wcsp)
+    , pf(NULL)
+    , costs(NULL)
+    , costSize(0)
+    , default_cost(wcsp->getUb())
+    , nonassigned(0)
+    , filters(NULL)
+{
+    pf = new TUPLES;
+}
+
+NaryConstraint::~NaryConstraint()
+{
+    if (pf)
+        delete pf;
+    if (costs)
+        delete[] costs;
+    if (filters)
+        delete filters;
+}
+
+// USED ONLY DURING SEARCH
+void NaryConstraint::assign(int varIndex)
+{
+    if (connected(varIndex)) {
+        deconnect(varIndex);
+        nonassigned = nonassigned - 1;
+
+        if (size() <= NARYDECONNECTSIZE && universal()) { // check if it is satisfied (clause)
+            //	  cout << "nary cost function satisfied: " << this << endl;
+            deconnect();
+            return;
+        }
+
+        if (nonassigned <= NARYPROJECTIONSIZE) {
+            //	  cout << "Assign var " << *getVar(varIndex) << "  in  " << *this;
+            deconnect();
+            projectNary();
+        } else {
+            if (ToulBar2::FullEAC)
+                reviseEACGreedySolution();
+        }
+    }
+}
+
+// NOT USED
+//void NaryConstraint::projectFromZero(int index)
+//{
+//    int i;
+//    int nsup = 0;
+//    Cost minc = MAX_COST;
+//    Cost c;
+//    EnumeratedVariable* var = (EnumeratedVariable*) getVar(index);
+//    for (EnumeratedVariable::iterator iter = var->begin(); iter != var->end(); ++iter) {
+//        c = var->getCost(*iter);
+//        if(c == MIN_COST) { if(nsup) return; nsup++; }
+//        else if(c < minc) minc = c;
+//
+//    }
+//    for(i=0;i<arity_;i++) {
+//        if(i != index) {
+//            var = (EnumeratedVariable*) getVar(i);
+//            if(getVar(i)->unassigned()) {
+//                nsup = 0;
+//                for (EnumeratedVariable::iterator iter = var->begin(); iter != var->end(); ++iter) {
+//                    c = var->getCost(*iter);
+//                    if(c == MIN_COST) { if(nsup) return; nsup++; }
+//                    else if(c < minc) minc = c;
+//                }
+//            }
+//        }
+//    }
+//    int a = arity_;
+//    Tuple cht(a);
+//    for(i=0;i<a;i++) {
+//        var = (EnumeratedVariable*) getVar(i);
+//        cht[i] = var->toIndex(var->getSup());
+//    }
+//    c = eval(cht);
+//    if(c < minc) minc = c;
+//    if(c > MIN_COST) starrule(cht,minc);
+//}
+
+// NOT USED
+//void NaryConstraint::starrule(const Tuple& t, Cost minc)
+//{
+//    int i;
+//    for(i=0;i<arity_;i++) {
+//        EnumeratedVariable* var = (EnumeratedVariable*) getVar(i);
+//        if(getVar(i)->unassigned()) {
+//            for (EnumeratedVariable::iterator iter = var->begin(); iter != var->end(); ++iter) {
+//                Cost c = var->getCost(*iter);
+//                if(c > MIN_COST) var->extend(*iter, minc);
+//            }
+//        }
+//
+//    }
+//    setTuple( t, eval(t) - minc );
+//    projectLB(minc);
+//}
+
+void NaryConstraint::expand()
+{
+    if (pf == NULL)
+        return;
+    assert(costs == NULL);
+
+    ptrdiff_t sz = getDomainInitSizeProduct();
+    if (ToulBar2::elimSpaceMaxMB && (Double)sz * sizeof(Cost) > (Double)ToulBar2::elimSpaceMaxMB * 1024. * 1024.)
+        return;
+
+    try {
+        costs = new Cost[sz];
+    } catch (const std::bad_alloc&) {
+        if (ToulBar2::verbose >= 1)
+            cout << "Warning! nary expand cannot be done! " << sz << endl;
+        costs = NULL;
+        return;
+    }
+    costSize = sz;
+    std::fill(costs, costs + sz, default_cost);
+    for (TUPLES::iterator it = pf->begin(); it != pf->end(); ++it) {
+        costs[getCostsIndex(it->first)] = it->second;
+    }
+    delete pf;
+    pf = NULL;
+}
+
+void NaryConstraint::resetFilters()
+{
+    if (filters) {
+        delete filters;
+        filters = NULL;
+    }
+}
+
+void NaryConstraint::fillFilters()
+{
+    if (filters == NULL) {
+        filters = new ConstraintSet;
+        for (int i = 0; i < arity_; i++) {
+            EnumeratedVariable* v = (EnumeratedVariable*)getVar(i);
+            for (ConstraintList::iterator iter = v->getConstrs()->begin(); iter != v->getConstrs()->end(); ++iter) {
+                Constraint* ctr = (*iter).constr;
+                if (scopeIncluded(ctr))
+                    filters->insert(ctr);
+            }
+        }
+    }
+}
+
+Cost NaryConstraint::eval(const Tuple& tin, EnumeratedVariable** scope_in)
+{
+    if (scope_in) {
+        for (int i = 0; i < arity_; i++) {
+            int pos = getIndex(scope_in[i]);
+            evalTuple[pos] = tin[i];
+        }
+        return eval(evalTuple);
+    } else
+        return eval(tin);
+}
+
+Cost NaryConstraint::eval(const Tuple& s)
+{
+    if (pf) {
+        TUPLES& f = *pf;
+        TUPLES::iterator it = f.find(s);
+        if (it != f.end())
+            return it->second;
+        else
+            return default_cost;
+    } else
+        return costs[getCostsIndex(s)];
+}
+
+bool NaryConstraint::checkEACGreedySolution(int index, Value support)
+{
+    int a = arity();
+    for (int i = 0; i < a; i++) {
+        EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+        evalTuple[i] = var->toIndex((i == index) ? support : var->getSupport());
+    }
+    return (eval(evalTuple) == MIN_COST);
+}
+
+bool NaryConstraint::reviseEACGreedySolution(int index, Value support)
+{
+    bool result = checkEACGreedySolution(index, support);
+    if (!result) {
+        if (index >= 0) {
+            getVar(index)->unsetFullEAC();
+        } else {
+            int a = arity();
+            for (int i = 0; i < a; i++) {
+                getVar(i)->unsetFullEAC();
+            }
+        }
+    }
+    return result;
+}
+
+/// Set new default cost to df (df <= Top), keep existing costs SMALLER than this default cost in a Map or a table
+void NaryConstraint::keepAllowedTuples(Cost df)
+{
+    static Tuple t;
+    assert(CUT(wcsp->getUb(), df));
+    if (pf) {
+        TUPLES* pfnew = new TUPLES;
+
+        Cost c;
+        firstlex();
+        while (nextlex(t, c)) {
+            if (c < df)
+                (*pfnew)[t] = c;
+        }
+
+        delete pf;
+        pf = pfnew;
+    } else {
+        int a = arity_;
+        vector<unsigned int> t(a, 0);
+        for (ptrdiff_t idx = 0; idx < costSize; idx++) {
+            bool ok = true;
+            for (int i = 0; i < a && ok; i++) {
+                EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+                ok = ok && var->canbe(var->toValue(t[i]));
+            }
+            if (!ok || costs[idx] > df)
+                costs[idx] = df;
+            int i = a - 1;
+            while (i >= 0 && t[i] == ((EnumeratedVariable*)getVar(i))->getDomainInitSize() - 1) {
+                t[i] = 0;
+                i--;
+            }
+            if (i >= 0)
+                t[i]++;
+        }
+    }
+    default_cost = df;
+}
+
+bool NaryConstraint::consistent(const Tuple& t)
+{
+    int a = arity_;
+    bool ok = true;
+    for (int i = 0; i < a && ok; i++) {
+        EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+        ok = ok && var->canbe(var->toValue(t[i]));
+    }
+    return ok;
+}
+
+void NaryConstraint::first()
+{
+    if (pf)
+        tuple_it = pf->begin();
+    else
+        firstlex();
+}
+
+bool NaryConstraint::next(Tuple& t, Cost& c)
+{
+    bool ok = false;
+    if (pf) {
+        while (!ok && (tuple_it != pf->end())) {
+            t = tuple_it->first;
+            c = tuple_it->second;
+            ok = (c != default_cost) && consistent(t);
+            tuple_it++;
+        }
+    } else {
+        while (!ok && nextlex(t, c)) {
+            ok = (c != default_cost);
+        }
+    }
+    return ok;
+}
+
+void NaryConstraint::first(EnumeratedVariable* vx, EnumeratedVariable* vz)
+{
+    it_values.clear();
+    EnumeratedVariable* var;
+    it_values.push_back(vx->begin());
+    for (int i = 0; i < arity_; i++) {
+        var = (EnumeratedVariable*)getVar(i);
+        if (var != vx && var != vz)
+            it_values.push_back(var->begin());
+    }
+    it_values.push_back(vz->begin());
+}
+
+bool NaryConstraint::separability(EnumeratedVariable* vx, EnumeratedVariable* vz)
+{
+    static Tuple t1, t;
+    int a = arity_, i = a - 1, k;
+    bool finished = false;
+    bool neweq = true;
+    bool sev = true; // false if vx and vz are not separable
+    Cost diff = 0;
+    Cost c1, c;
+    vector<int> ordre(a, -1);
+    EnumeratedVariable* var;
+    EnumeratedVariable* scope_in[a];
+    t1.resize(a);
+    t.resize(a);
+
+    EnumeratedVariable::iterator itvzfirst = vz->begin();
+    EnumeratedVariable::iterator itvznext = itvzfirst;
+    if (itvznext != vz->end())
+        ++itvznext;
+    first(vx, vz);
+
+    scope_in[0] = vx; //.push_back( alpha );
+    ordre[a - 1] = 0;
+    k = 1;
+    if (ToulBar2::verbose >= 1)
+        cout << "[ " << vx->getName() << " ";
+    for (int j = 0; j < a; j++) {
+        var = (EnumeratedVariable*)getVar(j);
+        if (var != vx && var != vz) {
+            scope_in[k] = var;
+            ordre[k - 1] = k;
+            if (ToulBar2::verbose >= 1)
+                cout << var->getName() << " ";
+            ++k;
+        }
+    }
+
+    scope_in[a - 1] = vz; //.push_back( beta );
+    ordre[a - 2] = a - 1;
+    //if(it_values[ordre[a-2]] != vz->end()) ++it_values[ordre[a-2]];
+    if (ToulBar2::verbose >= 1)
+        cout << vz->getName() << " ] ? "; // << endl;
+
+    while (sev && itvznext != vz->end()) {
+        first(vx, vz);
+        while (sev && it_values[ordre[0]] != scope_in[ordre[0]]->end()) {
+            if (it_values[ordre[a - 2]] == itvzfirst /*vz->begin()*/)
+                ++it_values[ordre[a - 2]];
+            //if(it_values[ordre[a-2]] != vz->end()){
+            for (int j = 0; j < a; j++) {
+                t[j] = scope_in[j]->toIndex(*it_values[j]); // PROBLEME CAR it_values[ordre[a-2]] = vz->end()
+                t1[j] = scope_in[j]->toIndex(*it_values[j]);
+            }
+            t1[a - 1] = scope_in[a - 1]->toIndex(*itvzfirst /*vz->begin()*/);
+
+            // etude de la difference
+            c1 = eval(t1, scope_in);
+            c = eval(t, scope_in);
+            if (!universe(c, c1, wcsp->getUb())) {
+
+                if (ToulBar2::verbose >= 3) {
+                    if (!neweq)
+                        cout << "= \n";
+                    else
+                        cout << endl;
+                }
+                if (ToulBar2::verbose >= 3) {
+                    cout << "C";
+                    for (unsigned int j = 0; j < t.size(); j++) {
+                        cout << t[j] << ".";
+                    }
+                    cout << " - C";
+                    for (unsigned int j = 0; j < t1.size(); j++) {
+                        cout << t1[j] << ".";
+                    }
+                    cout << " = " << c << " - " << c1;
+                }
+                if (neweq) {
+                    diff = squareminus(c, c1, wcsp->getUb());
+                    neweq = false;
+                } else
+                    sev = (diff == squareminus(c, c1, wcsp->getUb()));
+                if (ToulBar2::verbose >= 3)
+                    cout << " = " << squareminus(c, c1, wcsp->getUb()) << endl;
+            } else if (ToulBar2::verbose >= 3)
+                cout << "universe\n";
+            finished = false;
+            i = a - 1;
+            while (sev && !finished) {
+                var = scope_in[ordre[i]];
+                ++it_values[ordre[i]];
+                finished = it_values[ordre[i]] != var->end();
+                if (!finished) {
+                    //it_values[ordre[i]] = var->begin();
+                    if (i > 0) {
+                        it_values[ordre[i]] = var->begin();
+                        if (i == a - 1)
+                            neweq = true;
+                        i--;
+                    } else
+                        finished = true;
+                }
+            }
+            if (it_values[ordre[a - 2]] == itvzfirst /*vz->begin()*/ && it_values[ordre[a - 2]] != vz->end())
+                ++it_values[ordre[a - 2]];
+            //}
+        }
+        ++itvzfirst;
+        ++itvznext;
+        if (ToulBar2::verbose >= 3)
+            cout << "--\n";
+    }
+    return sev;
+}
+
+void NaryConstraint::separate(EnumeratedVariable* vx, EnumeratedVariable* vz)
+{
+    static Tuple t, tX, tZ;
+    Cost cost, minCost = MAX_COST;
+    int a = arity_;
+    t.resize(a);
+    tX.resize(a - 1);
+    tZ.resize(a - 1);
+    int index, k;
+    EnumeratedVariable* var = NULL;
+    Constraint* existX = NULL;
+    Constraint* existZ = NULL;
+    Constraint* naryx = NULL;
+    Constraint* naryz = NULL;
+    EnumeratedVariable* scope_in[a];
+    EnumeratedVariable* subscopeX[a - 1];
+    EnumeratedVariable* subscopeZ[a - 1];
+    int scopeX[a - 1];
+    int scopeZ[a - 1];
+
+    first(vx, vz);
+
+    // initialisation des scopes
+    scope_in[0] = vx;
+    scopeX[0] = vx->wcspIndex;
+    subscopeX[0] = vx;
+
+    k = 1;
+
+    for (int j = 0; j < a; j++) {
+        var = (EnumeratedVariable*)getVar(j);
+        if (var != vx && var != vz) {
+            scope_in[k] = var;
+
+            subscopeX[k] = var;
+            scopeX[k] = var->wcspIndex;
+
+            subscopeZ[k - 1] = var;
+            scopeZ[k - 1] = var->wcspIndex;
+
+            ++k;
+        }
+    }
+
+    scope_in[a - 1] = vz;
+
+    scopeZ[a - 2] = vz->wcspIndex;
+    subscopeZ[a - 2] = vz;
+
+    // creation de la nouvelle contrainte
+    if (a == 3) {
+        int size = subscopeX[0]->getDomainInitSize() * subscopeX[1]->getDomainInitSize();
+        vector<Cost> costs(size, 0);
+        existX = subscopeX[0]->getConstr(subscopeX[1]);
+        naryx = wcsp->newBinaryConstr(subscopeX[0], subscopeX[1], costs);
+    } else if (a == 4) {
+        int size = subscopeX[0]->getDomainInitSize() * subscopeX[1]->getDomainInitSize() * subscopeX[2]->getDomainInitSize();
+        vector<Cost> costs(size, 0);
+        existX = subscopeX[0]->getConstr(subscopeX[1], subscopeX[2]);
+        naryx = wcsp->newTernaryConstr(subscopeX[0], subscopeX[1], subscopeX[2], costs);
+    } else {
+        index = wcsp->postNaryConstraintBegin(scopeX, a - 1, wcsp->getUb(), size() / vz->getDomainInitSize(), true);
+        naryx = wcsp->getCtr(index);
+    }
+
+    minCost = MAX_COST;
+    int i;
+    if (ToulBar2::verbose >= 3) {
+        cout << "\n[ ";
+        for (int j = 0; j < a - 1; j++)
+            cout << scopeX[j] << " ";
+        cout << " ]" << endl;
+    }
+    while (it_values[0] != scope_in[0]->end()) {
+        for (int j = 0; j < a - 1; j++) {
+            t[j] = scope_in[j]->toIndex(*it_values[j]);
+            tX[j] = scope_in[j]->toIndex(*it_values[j]);
+        }
+        t[a - 1] = scope_in[a - 1]->toIndex(*it_values[a - 1]);
+
+        cost = eval(t, scope_in);
+        if (cost < minCost)
+            minCost = cost;
+        int finished = false;
+        i = a - 1;
+        while (!finished) {
+
+            ++it_values[i];
+            finished = it_values[i] != scope_in[i]->end();
+            if (!finished) {
+                if (i == a - 1) {
+                    if (ToulBar2::verbose >= 3) {
+                        for (unsigned int j = 0; j < tX.size(); j++) {
+                            cout << tX[j] << " ";
+                        }
+                        cout << "  " << minCost << endl;
+                    }
+                    naryx->setTuple(tX, minCost);
+                    minCost = MAX_COST;
+                }
+                if (i > 0) {
+                    it_values[i] = scope_in[i]->begin();
+                    i--;
+                } else
+                    finished = true;
+            }
+        }
+    }
+
+    if (ToulBar2::verbose >= 3)
+        cout << "-----------------------------------" << endl;
+    if (a == 3) {
+        int size = subscopeZ[0]->getDomainInitSize() * subscopeZ[1]->getDomainInitSize();
+        vector<Cost> costs(size, 0);
+        existZ = subscopeZ[0]->getConstr(subscopeZ[1]);
+        naryz = wcsp->newBinaryConstr(subscopeZ[0], subscopeZ[1], costs);
+    } else if (a == 4) {
+
+        int size = subscopeZ[0]->getDomainInitSize() * subscopeZ[1]->getDomainInitSize() * subscopeZ[2]->getDomainInitSize();
+        vector<Cost> costs(size, 0);
+        existZ = subscopeZ[0]->getConstr(subscopeZ[1], subscopeZ[2]);
+        naryz = wcsp->newTernaryConstr(subscopeZ[0], subscopeZ[1], subscopeZ[2], costs);
+    } else {
+        index = wcsp->postNaryConstraintBegin(scopeZ, a - 1, wcsp->getUb(), size() / vx->getDomainInitSize(), true);
+        naryz = wcsp->getCtr(index);
+    }
+
+    if (ToulBar2::verbose >= 3) {
+        cout << "[ ";
+        for (int j = 0; j < a - 1; j++)
+            cout << scopeZ[j] << " ";
+        cout << " ]" << endl;
+    }
+    first(vx, vz);
+
+    Cost diffcost;
+    Cost cX;
+    while (it_values[1] != scope_in[1]->end()) {
+        for (int j = 1; j < a; j++) {
+            t[j] = scope_in[j]->toIndex(*it_values[j]);
+            tZ[j - 1] = scope_in[j]->toIndex(*it_values[j]);
+        }
+        //t[0] = scope_in[0]->toIndex(*it_values[0]);
+        EnumeratedVariable::iterator it = scope_in[0]->begin();
+        do {
+            t[0] = scope_in[0]->toIndex(*it);
+            cost = eval(t, scope_in);
+            cX = naryx->evalsubstr(t, naryx);
+            diffcost = squareminus(cost, cX, wcsp->getUb());
+            ++it;
+            //cout << t[0] << endl;
+        } while (it != scope_in[0]->end() && cost >= wcsp->getUb() && cX >= wcsp->getUb());
+
+        cost = eval(t, scope_in);
+        Cost cX = naryx->evalsubstr(t, naryx);
+        diffcost = squareminus(cost, cX, wcsp->getUb());
+        if (ToulBar2::verbose >= 3) {
+            for (unsigned int j = 0; j < tZ.size(); j++) {
+                cout << tZ[j] << " ";
+            }
+
+            cout << "  " << diffcost << endl;
+        }
+        naryz->setTuple(tZ, diffcost);
+        int finished = false;
+        i = a - 1;
+        while (!finished) {
+
+            ++it_values[i];
+            finished = it_values[i] != scope_in[i]->end();
+            if (!finished) {
+                if (i > 1) {
+                    it_values[i] = scope_in[i]->begin();
+                    i--;
+                } else
+                    finished = true;
+            }
+        }
+    }
+
+    if (ToulBar2::verbose >= 3)
+        cout << "-----------------------------------" << endl;
+    assert(verifySeparate(naryx, naryz));
+
+    if (!naryx->universal()) {
+        if (ToulBar2::verbose == 1) {
+            cout << "\n[ ";
+            for (int j = 0; j < a - 1; j++)
+                cout << scopeX[j] << " ";
+            cout << " ]" << endl;
+        }
+        if (a == 3) {
+            assert(naryx->isBinary());
+            if (existX && !existX->universal()) {
+                assert(existX->isBinary());
+                ((BinaryConstraint*)naryx)->addCosts((BinaryConstraint*)existX);
+                existX->deconnect();
+            }
+        } else if (a == 4) {
+            assert(naryx->isTernary());
+            if (existX && !existX->universal()) {
+                assert(existX->isTernary());
+                ((TernaryConstraint*)naryx)->addCosts((TernaryConstraint*)existX);
+                existX->deconnect();
+            }
+        }
+        naryx->reconnect();
+        naryx->propagate();
+    } else {
+        naryx->deconnect();
+    }
+    if (!naryz->universal()) {
+        if (ToulBar2::verbose == 1) {
+            cout << "[ ";
+            for (int j = 0; j < a - 1; j++)
+                cout << scopeZ[j] << " ";
+            cout << " ]" << endl;
+        }
+        if (a == 3) {
+            assert(naryz->isBinary());
+            if (existZ && !existZ->universal()) {
+                assert(existZ->isBinary());
+                ((BinaryConstraint*)naryz)->addCosts((BinaryConstraint*)existZ);
+                existZ->deconnect();
+            }
+        } else if (a == 4) {
+            assert(naryz->isTernary());
+            if (existZ && !existZ->universal()) {
+                assert(existZ->isTernary());
+                ((TernaryConstraint*)naryz)->addCosts((TernaryConstraint*)existZ);
+                existZ->deconnect();
+            }
+        }
+        naryz->reconnect();
+        naryz->propagate();
+    } else {
+        naryz->deconnect();
+    }
+    deconnect();
+}
+
+// THIS CODE IS NEVER USED!!!
+//void NaryConstraint::permute( EnumeratedVariable** scope_in )
+//{
+//    TUPLES* pf_old = pf;
+//    pf = new TUPLES;
+//
+//    TUPLES::iterator it = pf_old->begin();
+//    while(it != pf_old->end()) {
+//        Tuple s(it->first);
+//        setTuple(s, it->second, scope_in );
+//        it++;
+//    }
+//
+//    delete pf_old;
+//    for(int i=0; i<arity_; i++)
+//    {
+//        map<int,int>::iterator it_pos =  scope_inv.find(scope_in[i]->wcspIndex);
+//        int i_old = it_pos->second;
+//        it_pos->second = i;
+//
+//        scope_inv[ scope_in[i]->wcspIndex ] = i;
+//        scope[i] = scope_in[i];
+//
+//        DLink<ConstraintLink>* l = links[i];
+//        links[i] = links[i_old];
+//        links[i_old] = l;
+//
+//        links[i]->content.scopeIndex = i;
+//        l->content.scopeIndex = i_old;
+//    }
+//}
+
+// for adding a tuple in f
+// scope_in contains the order of the values in Tuple tin
+//void NaryConstraint::setTuple( const Tuple& tin, Cost c, EnumeratedVariable** scope_in )
+//{
+//    assert(scope_in);
+//    Tuple t(tin);
+//    for(int i = 0; i < arity_; i++) {
+//        int pos = getIndex(scope_in[i]);
+//        t[pos] = tin[i];
+//    }
+//    if (pf) (*pf)[t] = c;
+//    else costs[getCostsIndex(t)] = c;
+//}
+
+//void NaryConstraint::addtoTuple( const Tuple& tin, Cost c, EnumeratedVariable** scope_in )
+//{
+//    assert(scope_in);
+//    Tuple t(tin);
+//    for(int i = 0; i < arity_; i++) {
+//        int pos = getIndex(scope_in[i]);
+//        t[pos] = tin[i];
+//    }
+//    if (pf) (*pf)[t] += c;
+//    else costs[getCostsIndex(t)] += c;
+//}
+
+void NaryConstraint::addtoTuples(EnumeratedVariable* x, Value v, Cost costi)
+{
+    static Tuple tuple;
+    Cost Top = wcsp->getUb();
+    int tindex = getIndex(x);
+    assert(tindex >= 0);
+    Cost cost;
+    if (getDefCost() < Top) {
+        firstlex();
+        while (nextlex(tuple, cost)) {
+            if (x->toValue(tuple[tindex]) == v) {
+                if (cost < Top)
+                    setTuple(tuple, cost + costi);
+            }
+        }
+    } else {
+        first();
+        while (next(tuple, cost)) {
+            if (x->toValue(tuple[tindex]) == v) {
+                if (cost < Top)
+                    setTuple(tuple, cost + costi);
+            }
+        }
+    }
+}
+
+void NaryConstraint::addtoTuples(Cost costi)
+{
+    assert(costi >= MIN_COST || getMinCost() >= -costi);
+    static Tuple tuple;
+    Cost Top = wcsp->getUb();
+    Cost cost;
+    Cost olddf = default_cost;
+    default_cost = Top;
+    if (pf) {
+        first();
+        while (next(tuple, cost)) {
+            if (cost < Top)
+                setTuple(tuple, cost + costi); // authorizes resulting costs to be greater than Top
+        }
+        if (olddf < Top && olddf + costi >= MIN_COST)
+            default_cost = olddf + costi;
+    } else {
+        firstlex();
+        while (nextlex(tuple, cost)) {
+            if (cost < Top)
+                setTuple(tuple, cost + costi);
+        }
+    }
+}
+
+void NaryConstraint::setInfiniteCost(Cost ub)
+{
+    Cost mult_ub = ((ub < (MAX_COST / MEDIUM_COST)) ? (max(LARGE_COST, ub * MEDIUM_COST)) : ub);
+    if (pf) {
+        for (TUPLES::iterator it = pf->begin(); it != pf->end(); ++it) {
+            Cost c = it->second;
+            if (CUT(c, ub))
+                it->second = mult_ub;
+        }
+    } else {
+        for (ptrdiff_t idx = 0; idx < costSize; idx++) {
+            Cost c = costs[idx];
+            if (CUT(c, ub))
+                costs[idx] = mult_ub;
+        }
+    }
+    if (CUT(default_cost, ub))
+        default_cost = mult_ub;
+}
+
+void NaryConstraint::insertSum(const Tuple& t1, Cost c1, Constraint* ctr1, const Tuple& t2, Cost c2, Constraint* ctr2, bool bFilters)
+{
+    Cost Top = wcsp->getUb();
+    if (c1 >= Top)
+        return;
+    if (c2 >= Top)
+        return;
+    Cost csum = c1 + c2;
+
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* v = scope[i];
+        int pos = i;
+        int pos1 = ctr1->getIndex(v);
+        int pos2 = ctr2->getIndex(v);
+
+        if ((pos1 >= 0) && (pos2 >= 0)) {
+            if (t1[pos1] != t2[pos2])
+                return;
+            evalTuple[pos] = t1[pos1];
+        } else if (pos1 >= 0)
+            evalTuple[pos] = t1[pos1];
+        else if (pos2 >= 0)
+            evalTuple[pos] = t2[pos2];
+        else
+            evalTuple[pos] = 0;
+
+        Cost unaryc = v->getCost(v->toValue(evalTuple[pos]));
+        if (unaryc >= Top)
+            return;
+        csum += unaryc;
+        if (csum >= Top)
+            return;
+    }
+
+    if (bFilters && filters && (default_cost >= Top)) {
+        ConstraintSet::iterator it = filters->begin();
+        while (it != filters->end()) {
+            Constraint* ctr = *it;
+            if (ctr->connected()) {
+                assert(ctr != this);
+                Cost c = ctr->evalsubstr(evalTuple, this);
+                if (c >= Top)
+                    return;
+                csum += c;
+            }
+            if (csum >= Top)
+                return;
+            ++it;
+        }
+    }
+
+    if (pf)
+        (*pf)[evalTuple] = c1 + c2;
+    else
+        costs[getCostsIndex(evalTuple)] = c1 + c2;
+}
+
+// THIS CODE IS NEVER USED!!!
+//TODO: make it compatible with table representation rather than Map
+//void NaryConstraint::sum( NaryConstraint* nary )
+//{
+//    deconnect(true);
+//
+//    map<int,int> snew;
+//    set_union( scope_inv.begin(), scope_inv.end(),
+//            nary->scope_inv.begin(), nary->scope_inv.end(),
+//            inserter(snew, snew.begin()) );
+//
+//    arity_ = snew.size();
+//    EnumeratedVariable** scope1 = scope;
+//    DLink<ConstraintLink>** links1 = links;
+//    scope = new EnumeratedVariable* [arity_];
+//    links = new DLink<ConstraintLink>* [arity_];
+//
+//    int i = 0;
+//    map<int,int>::iterator its = snew.begin();
+//    while(its != snew.end()) {
+//        EnumeratedVariable* var = (EnumeratedVariable*) wcsp->getVar(its->first);
+//        its->second = i;
+//        scope[i] =  var;
+//        int index1 = getIndex(var);
+//        if(index1 >= 0) {
+//            links[i] = links1[index1];
+//            ConstraintLink e = {this, i};
+//            links[i]->content = e;
+//        }
+//        else links[i] = nary->links[ nary->getIndex(var) ];
+//
+//        i++;
+//        its++;
+//    }
+//
+//    TUPLES& f1 = *pf;
+//    TUPLES& f2 = *nary->pf;
+//    TUPLES::iterator  it1 = f1.begin();
+//    TUPLES& f = * new TUPLES;
+//    pf = &f;
+//
+//    Tuple t1,t2;
+//    Cost c1,c2;
+//    while(it1 != f1.end()) {
+//        t1 = it1->first;
+//        c1 =  it1->second;
+//        TUPLES::iterator  it2 = f2.begin();
+//        while(it2 != f2.end()) {
+//            t2 = it2->first;
+//            c2 =  it2->second;
+//            insertSum(t1, c1, this, t2, c2, nary);
+//            it2++;
+//        }
+//        it1++;
+//    }
+//
+//    scope_inv = snew;
+//    delete [] scope1;
+//    delete [] links1;
+//
+//    reconnect();
+//}
+
+// Projection of variable x of the nary constraint
+// complexity O(2|f|)
+// this function is independent of the search
+void NaryConstraint::project(EnumeratedVariable* x)
+{
+    int xindex = getIndex(x);
+    if (xindex < 0)
+        return;
+    assert(x->getDegree() == 1);
+
+    Cost Top = wcsp->getUb();
+    Cost negcost = 0;
+
+    if (pf) {
+        Tuple t, tnext, tproj, tswap;
+        Cost c;
+        Value val;
+        TUPLES fproj;
+        TUPLES::iterator it;
+        // First part of the projection: complexity O(|f|) we swap positions between the projected variable and the last variable
+        while (!pf->empty()) {
+            it = pf->begin();
+            t = it->first;
+            c = it->second;
+            assert(x->getDegree() == 1);
+            val = x->toValue(t[xindex]);
+            c += ((x->canbe(val)) ? (x->getCost(val)) : Top);
+            if (c > Top)
+                c = Top;
+            tswap = t;
+            tValue a = tswap[arity_ - 1];
+            tswap[arity_ - 1] = tswap[xindex];
+            tswap[xindex] = a;
+            fproj[tswap] = c;
+            pf->erase(it);
+        }
+
+        // Second part of the projection: complexity O(|f|) as the projected variable is in the last position,
+        // it is sufficient to look for tuples with the same arity-1 prefix. If there are less than d (domain of
+        // the projected variable) tuples, we have also to perform the minimum with default_cost
+        // this is only true when the tuples are LEXICOGRAPHICALY ordered
+        set<Value> markValue;
+        it = fproj.begin();
+        if (it != fproj.end()) {
+            t = it->first;
+            c = it->second;
+            val = x->toValue(t[arity_ - 1]);
+            t.resize(arity_ - 1);
+            markValue.clear();
+            if (x->canbe(val)) {
+                markValue.insert(val);
+            }
+            bool end = false;
+            while (!end) {
+                it++;
+                end = (it == fproj.end());
+                bool sameprefix = false;
+
+                Cost cnext = MAX_COST;
+                Value valnext = -1;
+                if (!end) {
+                    tnext = it->first;
+                    cnext = it->second;
+                    valnext = x->toValue(tnext[arity_ - 1]);
+                    tnext.resize(arity_ - 1);
+                    sameprefix = (t == tnext);
+                }
+                if (!sameprefix) {
+                    if (markValue.size() < x->getDomainSize()) {
+                        for (EnumeratedVariable::iterator itv = x->begin(); itv != x->end(); ++itv) {
+                            if (markValue.find(*itv) == markValue.end()) {
+                                Cost udefcost = default_cost + x->getCost(*itv);
+                                if (ToulBar2::isZ) {
+                                    c = wcsp->LogSumExp(c, udefcost);
+                                } else if (udefcost < c)
+                                    c = udefcost;
+                            }
+                        }
+                    }
+                    if (ToulBar2::isZ && c < negcost)
+                        negcost = c;
+                    if (c != default_cost || ToulBar2::isZ) {
+                        (*pf)[t] = c;
+                    }
+                    t = tnext;
+                    c = cnext;
+                    val = valnext;
+                    markValue.clear();
+                    if (x->canbe(val)) {
+                        markValue.insert(val);
+                    }
+                } else {
+                    if (x->canbe(valnext)) {
+                        markValue.insert(valnext);
+                    }
+                    if (ToulBar2::isZ) {
+                        c = wcsp->LogSumExp(c, cnext);
+                    } else if (cnext < c)
+                        c = cnext;
+                }
+            }
+        }
+
+    } else {
+        ptrdiff_t sz = costSize / x->getDomainInitSize();
+        Cost* costs_ = new Cost[sz];
+        std::fill(costs_, costs_ + sz, Top);
+        int a = arity_;
+        vector<unsigned int> t(a, 0);
+        for (ptrdiff_t idx = 0; idx < costSize; idx++) {
+            bool ok = true;
+            for (int i = 0; i < a && ok; i++) {
+                EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+                ok = ok && var->canbe(var->toValue(t[i]));
+            }
+            Cost c = ((ok) ? costs[idx] : Top);
+            if (ok) {
+                c += x->getCost(x->toValue(t[xindex]));
+                if (c > Top)
+                    c = Top;
+            }
+
+            vector<unsigned int> tswap(t);
+            tswap[xindex] = tswap[a - 1];
+            ptrdiff_t idx_ = 0;
+            ptrdiff_t base_ = 1;
+            for (int i = a - 2; i >= 0; --i) {
+                idx_ += tswap[i] * base_;
+                base_ *= ((EnumeratedVariable*)getVar((i == xindex) ? (a - 1) : i))->getDomainInitSize();
+            }
+            assert(base_ == sz);
+            assert(idx_ < sz);
+            assert(idx_ >= 0);
+            if (ToulBar2::isZ) {
+                c = wcsp->LogSumExp(costs_[idx_], c);
+                if (c < negcost)
+                    negcost = c;
+                costs_[idx_] = c;
+            } else
+                costs_[idx_] = min(costs_[idx_], c);
+
+            int i = a - 1;
+            while (i >= 0 && t[i] == ((EnumeratedVariable*)getVar(i))->getDomainInitSize() - 1) {
+                t[i] = 0;
+                i--;
+            }
+            if (i >= 0)
+                t[i]++;
+        }
+        costSize = sz;
+        delete[] costs;
+        costs = costs_;
+    }
+    assert(negcost <= 0);
+    if (negcost < 0) {
+        if (pf) {
+            for (TUPLES::iterator it = pf->begin(); it != pf->end(); ++it) {
+                (*pf)[(*it).first] = (*it).second - negcost;
+            }
+        } else {
+            for (ptrdiff_t idx = 0; idx < costSize; idx++) {
+                costs[idx] -= negcost;
+            }
+        }
+        default_cost -= negcost;
+        assert(default_cost >= MIN_COST); // THIS TEST COULD BE REMOVED BUT NEGATIVE DEFAULT COST EFFECTS ARE UNSPECIFIED
+        wcsp->decreaseLb(negcost);
+    }
+
+    // reduce nary by replacing variable x by the last variable in the scope (if needed) and then remove it from the scope by assuming it will be assigned
+    if (xindex < arity_ - 1) {
+        // swap of links
+        DLink<ConstraintLink>* linkx = links[xindex];
+        links[xindex] = links[arity_ - 1];
+        links[arity_ - 1] = linkx;
+        //swap of scope array
+        scope[xindex] = scope[arity_ - 1];
+        scope[arity_ - 1] = x;
+        // update of links indexs
+        links[xindex]->content.scopeIndex = xindex;
+        links[arity_ - 1]->content.scopeIndex = arity_ - 1;
+        scope_inv[scope[xindex]->wcspIndex] = xindex;
+    }
+    if (x->unassigned()) {
+        x->deconnect(links[arity_ - 1]);
+        nonassigned = nonassigned - 1;
+    }
+    scope_inv.erase(x->wcspIndex);
+    arity_--;
+    evalTuple.resize(arity_);
+}
+
+// THIS CODE IS NEVER USED!!!
+//TODO: make it compatible with table representation rather than Map
+// Projects out all variables except x,y,z
+// and gives the result at fproj
+//void NaryConstraint::projectxyz( EnumeratedVariable* x,
+//        EnumeratedVariable* y,
+//        EnumeratedVariable* z,
+//        TUPLES& fproj)
+//{
+//    assert(CUT(default_cost,wcsp->getUb()));
+//
+//    Tuple stxyz(3,0);
+//    Tuple txyz(stxyz);
+//    Tuple t;
+//    Cost c;
+//    TUPLES::iterator  itproj;
+//
+//    // compute in one pass of all tuples the projection
+//    first();
+//    while(next(t,c)) {
+//        txyz[0] = t[ getIndex(x) ];
+//        txyz[1] = t[ getIndex(y) ];
+//        txyz[2] = t[ getIndex(z) ];
+//
+//        itproj = fproj.find(txyz);
+//        if(itproj != fproj.end()) {
+//            if(c < itproj->second) fproj[txyz] = c;
+//        } else {
+//            fproj[txyz] = c;
+//        }
+//    }
+//
+//    // finially we substract the projection from the initial function
+//    first();
+//    while(next(t,c)) {
+//        txyz[0] = t[ getIndex(x) ];
+//        txyz[1] = t[ getIndex(y) ];
+//        txyz[2] = t[ getIndex(z) ];
+//        itproj = fproj.find(txyz);
+//        if(itproj != fproj.end()) { assert(CUT(c, itproj->second)); (*pf)[t] -= itproj->second; }
+//        else assert(false);
+//    }
+//}
+
+// Projects out all variables except x,y
+// and gives the result at fproj
+void NaryConstraint::projectxy(EnumeratedVariable* x,
+    EnumeratedVariable* y,
+    TUPLES& fproj)
+{
+    assert(CUT(default_cost, wcsp->getUb()));
+    static Tuple t;
+    Tuple txy(2, 0);
+    Cost c;
+    TUPLES::iterator itproj;
+
+    // compute in one pass of all tuples the projection
+    first();
+    while (next(t, c)) {
+        if (c == default_cost)
+            continue;
+        txy[0] = t[getIndex(x)];
+        txy[1] = t[getIndex(y)];
+        itproj = fproj.find(txy);
+        if (itproj != fproj.end()) {
+            if (c < itproj->second)
+                fproj[txy] = c;
+        } else {
+            fproj[txy] = c;
+        }
+    }
+
+    // finally we subtract the projection from the initial function
+    first();
+    while (next(t, c)) {
+        if (c == default_cost)
+            continue;
+        txy[0] = t[getIndex(x)];
+        txy[1] = t[getIndex(y)];
+        itproj = fproj.find(txy);
+        if (itproj != fproj.end()) {
+            assert(CUT(c, itproj->second));
+            //		  if (!CUT(c + wcsp->getLb(), wcsp->getUb())) {
+            if (pf)
+                (*pf)[t] -= itproj->second;
+            else
+                costs[getCostsIndex(t)] -= itproj->second;
+            //		  }
+        } else
+            assert(false);
+    }
+}
+
+// THIS CODE IS NEVER USED!!!
+//TODO: make it compatible with table representation rather than Map
+//void NaryConstraint::preproject3()
+//{
+//    assert(connected());
+//    assert(CUT(default_cost,wcsp->getUb()));
+//
+//    for(int i = 0; i < arity_ - 2; i++) {
+//        EnumeratedVariable* x = scope[i];
+//        EnumeratedVariable* y = scope[i+1];
+//        EnumeratedVariable* z = scope[i+2];
+//
+//        TUPLES fproj;
+//        projectxyz(x,y,z,fproj);
+//
+//        Tuple t;
+//        vector<Cost> xyz;
+//        unsigned int a,b,c;
+//        unsigned int sizex = x->getDomainInitSize();
+//        unsigned int sizey = y->getDomainInitSize();
+//        unsigned int sizez = z->getDomainInitSize();
+//
+//        for (a = 0; a < sizex; a++)
+//            for (b = 0; b < sizey; b++)
+//                for (c = 0; c < sizez; c++) xyz.push_back(default_cost);
+//
+//        TUPLES::iterator it =  fproj.begin();
+//        while(it != fproj.end()) {
+//            t = it->first;
+//            a = t[0];
+//            b = t[1];
+//            c = t[2];
+//            xyz[ a * sizey * sizez + b * sizez + c ]	= it->second;
+//            it++;
+//        }
+//        if(fproj.size() > 0 || default_cost > MIN_COST) wcsp->postTernaryConstraint(x->wcspIndex, y->wcspIndex, z->wcspIndex,xyz);
+//        if (deconnected()) return;
+//    }
+//}
+
+inline bool cmp_pairvars(pair<EnumeratedVariable*, EnumeratedVariable*> pv1, pair<EnumeratedVariable*, EnumeratedVariable*> pv2)
+{
+    return (pv1.first->wcspIndex < pv2.first->wcspIndex || (pv1.first->wcspIndex == pv2.first->wcspIndex && pv1.second->wcspIndex < pv2.second->wcspIndex));
+}
+void NaryConstraint::preprojectall2()
+{
+    Tuple t;
+    assert(connected());
+    assert(CUT(default_cost, wcsp->getUb()));
+
+    TSCOPE scopeinv;
+    getScope(scopeinv);
+    for (TSCOPE::iterator it1 = scopeinv.begin(); it1 != scopeinv.end(); ++it1) {
+        TSCOPE::iterator it2 = it1;
+        for (++it2; it2 != scopeinv.end(); ++it2) {
+            EnumeratedVariable* x = (EnumeratedVariable*)wcsp->getVar((*it1).first);
+            EnumeratedVariable* y = (EnumeratedVariable*)wcsp->getVar((*it2).first);
+
+            TUPLES fproj;
+            projectxy(x, y, fproj);
+
+            vector<Cost> xy;
+            unsigned int a, b;
+            unsigned int sizex = x->getDomainInitSize();
+            unsigned int sizey = y->getDomainInitSize();
+
+            for (a = 0; a < sizex; a++)
+                for (b = 0; b < sizey; b++)
+                    xy.push_back(default_cost);
+
+            TUPLES::iterator it = fproj.begin();
+            while (it != fproj.end()) {
+                t = it->first;
+                a = t[0];
+                b = t[1];
+                xy[a * sizey + b] = it->second;
+                it++;
+            }
+            if (fproj.size() > 0 || default_cost > MIN_COST) {
+                wcsp->postBinaryConstraint(x->wcspIndex, y->wcspIndex, xy);
+            }
+            if (deconnected())
+                return;
+        }
+    }
+}
+
+double NaryConstraint::computeTightness()
+{
+    int count = 0;
+    double sum = 0;
+    Cost* costs_ = new Cost[size()];
+    if (pf) {
+        TUPLES::iterator it = pf->begin();
+        while (it != pf->end()) {
+            Cost c = it->second;
+            sum += to_double(min(wcsp->getUb(), c));
+            costs_[count] = min(wcsp->getUb(), c);
+            count++;
+            it++;
+        }
+    } else {
+        for (ptrdiff_t idx = 0; idx < costSize; idx++) {
+            Cost c = costs[idx];
+            sum += to_double(min(wcsp->getUb(), c));
+            costs_[count] = min(wcsp->getUb(), c);
+            count++;
+        }
+    }
+    Long psize = getDomainSizeProduct();
+    if (psize >= LONGLONG_MAX) {
+        tight = to_double(min(wcsp->getUb(), default_cost));
+    } else {
+        if (ToulBar2::weightedTightness == 2) {
+            tight = to_double(stochastic_selection<Cost>(costs_, 0, count - 1, count / 2)); // TO BE IMPPROVED!!!
+        } else {
+            if (psize > count) {
+                tight = ((double)default_cost * (psize - count) + sum) / (double)psize;
+            } else {
+                tight = sum / (double)count;
+            }
+        }
+    }
+    delete[] costs_;
+    return tight;
+}
+
+void NaryConstraint::print(ostream& os)
+{
+    os << endl
+       << this << " f(";
+
+    int unassigned_ = 0;
+    Long totaltuples = 1;
+    for (int i = 0; i < arity_; i++) {
+        if (scope[i]->unassigned())
+            unassigned_++;
+        os << wcsp->getName(scope[i]->wcspIndex);
+        if (i < arity_ - 1)
+            os << ",";
+        totaltuples = totaltuples * scope[i]->getDomainInitSize();
+    }
+    os << ")    ";
+    if (ToulBar2::weightedDegree) {
+        os << "/" << getConflictWeight();
+        for (int i = 0; i < arity_; i++) {
+            os << "," << conflictWeights[i];
+        }
+    }
+    if (pf)
+        os << " |f| = " << size() << " / " << totaltuples;
+    else
+        os << " |f| = " << size();
+    os << "   default_cost: " << default_cost;
+    os << "   arity: " << arity_;
+    os << "   unassigned: " << (int)nonassigned << "/" << unassigned_ << "         ";
+
+    //	assert(nonassigned == unassigned_); // not valid when used with assignLS
+
+    /*TSCOPE::iterator it = scope_inv.begin();
+	while(it != scope_inv.end()) {
+		os << "(" << it->first << ",idx: " << it->second << ") ";
+		++it;
+	}*/
+    os << endl;
+
+    if (ToulBar2::verbose >= 4) {
+        if (pf) {
+            os << "tuples: {";
+            TUPLES::iterator it = pf->begin();
+            while (it != pf->end()) {
+                Tuple t = it->first;
+                Cost c = it->second;
+                it++;
+                os << "<";
+                for (unsigned int i = 0; i < t.size(); i++) {
+                    os << t[i];
+                    if (i < t.size() - 1)
+                        os << " ";
+                }
+                os << "," << c << ">";
+                if (it != pf->end())
+                    os << " ";
+            }
+            os << "} " << endl;
+        } else {
+            os << "costs: [";
+            for (ptrdiff_t idx = 0; idx < costSize; idx++) {
+                os << " " << costs[idx];
+            }
+            os << "] " << endl;
+        }
+    }
+}
+
+void NaryConstraint::dump(ostream& os, bool original)
+{
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+        os << " " << default_cost << " " << size() << endl;
+        if (pf) {
+            TUPLES::iterator it = pf->begin();
+            while (it != pf->end()) {
+                Tuple t = it->first;
+                Cost c = it->second;
+                it++;
+                for (unsigned int i = 0; i < t.size(); i++) {
+                    os << t[i] << " ";
+                }
+                os << c << endl;
+            }
+        } else {
+            int a = arity_;
+            vector<unsigned int> t(a, 0);
+            for (ptrdiff_t idx = 0; idx < costSize; idx++) {
+                for (int i = 0; i < a; i++) {
+                    os << t[i] << " ";
+                }
+                os << costs[idx] << endl;
+                int i = a - 1;
+                while (i >= 0 && t[i] == scope[i]->getDomainInitSize() - 1) {
+                    t[i] = 0;
+                    i--;
+                }
+                if (i >= 0)
+                    t[i]++;
+            }
+        }
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+        Tuple tuple;
+        Cost cost;
+        Long nbtuples = 0;
+        first();
+        while (next(tuple, cost)) {
+            nbtuples++;
+        }
+        os << " " << default_cost << " " << nbtuples << endl;
+        first();
+        while (next(tuple, cost)) {
+            for (unsigned int i = 0; i < tuple.size(); i++) {
+                if (scope[i]->unassigned())
+                    os << scope[i]->toCurrentIndex(scope[i]->toValue(tuple[i])) << " ";
+            }
+            os << ((original) ? cost : min(wcsp->getUb(), cost)) << endl;
+        }
+    }
+}
+
+void NaryConstraint::dump_CFN(ostream& os, bool original)
+{
+
+    bool printed = false;
+    os << "\"F_";
+
+    if (original) {
+        printed = false;
+        for (int i = 0; i < arity_; i++) {
+            if (printed)
+                os << "_";
+            os << scope[i]->wcspIndex;
+            printed = true;
+        }
+
+        os << "\":{\"scope\":[";
+        printed = false;
+        for (int i = 0; i < arity_; i++) {
+            if (printed)
+                os << ",";
+            os << scope[i]->getName();
+            printed = true;
+        }
+        os << "],\"defaultcost\":" << wcsp->Cost2RDCost(default_cost) << ",\n\"costs\":[";
+        if (pf) {
+            TUPLES::iterator it = pf->begin();
+            printed = false;
+            while (it != pf->end()) {
+                Tuple t = it->first;
+                Cost c = it->second;
+                it++;
+                os << endl;
+                for (unsigned int i = 0; i < t.size(); i++) {
+                    if (printed)
+                        os << ",";
+                    os << ((scope[i]->isValueNames()) ? scope[i]->getValueName(t[i]) : std::to_string(t[i]));
+                    printed = true;
+                }
+                os << "," << wcsp->Cost2RDCost(c);
+            }
+        } else {
+            int a = arity_;
+            vector<unsigned int> t(a, 0);
+            printed = false;
+            for (ptrdiff_t idx = 0; idx < costSize; idx++) {
+                os << endl;
+                for (int i = 0; i < a; i++) {
+                    if (printed)
+                        os << ",";
+                    printed = true;
+                    os << ((scope[i]->isValueNames()) ? scope[i]->getValueName(t[i]) : std::to_string(t[i]));
+                }
+                os << "," << wcsp->Cost2RDCost(costs[idx]);
+                int i = a - 1;
+                while (i >= 0 && t[i] == scope[i]->getDomainInitSize() - 1) {
+                    t[i] = 0;
+                    i--;
+                }
+                if (i >= 0)
+                    t[i]++;
+            }
+        }
+    } else {
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned()) {
+                if (printed)
+                    os << "_";
+                os << scope[i]->getCurrentVarId();
+                printed = true;
+            }
+        os << "\":{\"scope\":[";
+        printed = false;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned()) {
+                if (printed)
+                    os << ",";
+                os << scope[i]->getCurrentVarId();
+                printed = true;
+            }
+        os << "],\"defaultcost\":" << wcsp->Cost2RDCost(default_cost) << ",\n\"costs\":[";
+
+        Tuple t;
+        Cost cost;
+        first();
+        printed = false;
+        while (next(t, cost)) {
+            os << endl;
+            for (unsigned int i = 0; i < t.size(); i++) {
+                if (printed)
+                    os << ",";
+                printed = true;
+                if (scope[i]->unassigned())
+                    os << scope[i]->toCurrentIndex(scope[i]->toValue(t[i]));
+            }
+            os << "," << ((original) ? wcsp->Cost2RDCost(cost) : wcsp->Cost2RDCost(min(wcsp->getUb(), cost)));
+        }
+    }
+    os << "]},\n";
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2naryconstr.hpp b/code/include/tb2/core/tb2naryconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..f8fe9e33a5b59a2f1e5849742914bf981a322626
--- /dev/null
+++ b/code/include/tb2/core/tb2naryconstr.hpp
@@ -0,0 +1,201 @@
+#ifndef TB2NARYCONSTR_HPP_
+#define TB2NARYCONSTR_HPP_
+
+#include "tb2abstractconstr.hpp"
+#include "tb2ternaryconstr.hpp"
+#include "tb2enumvar.hpp"
+#include "tb2wcsp.hpp"
+
+class NaryConstraint : public AbstractNaryConstraint {
+    typedef map<Tuple, Cost> TUPLES;
+    TUPLES* pf;
+    Cost* costs;
+    ptrdiff_t costSize;
+    Cost default_cost; // default cost returned when tuple t is not found in TUPLES (used by function eval(t))
+    StoreInt nonassigned; // nonassigned variables during search, must be backtrackable (StoreInt)!
+    ConstraintSet* filters;
+    TUPLES::iterator tuple_it;
+    vector<Long> conflictWeights; // used by weighted degree heuristics
+
+public:
+    NaryConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in, Cost defval, Long nbtuples = 0);
+    NaryConstraint(WCSP* wcsp);
+    virtual ~NaryConstraint();
+
+    bool extension() const FINAL { return true; }
+    bool isNary() const FINAL { return true; }
+
+    void reconnect()
+    {
+        if (deconnected()) {
+            nonassigned = arity_;
+            AbstractNaryConstraint::reconnect();
+        }
+    }
+    int getNonAssigned() const { return nonassigned; }
+
+    Long getConflictWeight() const { return Constraint::getConflictWeight(); }
+    Long getConflictWeight(int varIndex) const
+    {
+        assert(varIndex >= 0);
+        assert(varIndex < arity_);
+        return conflictWeights[varIndex] + Constraint::getConflictWeight();
+    }
+    void incConflictWeight(Constraint* from)
+    {
+        //assert(fromElim1==NULL);
+        //assert(fromElim2==NULL);
+        if (from == this) {
+            Constraint::incConflictWeight(1);
+        } else if (deconnected()) {
+            for (int i = 0; i < from->arity(); i++) {
+                int index = getIndex(from->getVar(i));
+                if (index >= 0) { // the last conflict constraint may be derived from two binary constraints (boosting search), each one derived from an n-ary constraint with a scope which does not include parameter constraint from
+                    assert(index < arity_);
+                    conflictWeights[index]++;
+                }
+            }
+        }
+    }
+    void resetConflictWeight()
+    {
+        conflictWeights.assign(conflictWeights.size(), 0);
+        Constraint::resetConflictWeight();
+    }
+
+    ptrdiff_t getCostsIndex(const Tuple& s) const
+    {
+        ptrdiff_t index = 0;
+        ptrdiff_t base = 1;
+        for (int i = arity_ - 1; i >= 0; --i) {
+            index += (s[i]) * base;
+            base *= ((EnumeratedVariable*)getVar(i))->getDomainInitSize();
+        }
+        assert(base == costSize);
+        assert(index < costSize);
+        assert(index >= 0);
+        return index;
+    }
+    Long size() const FINAL { return (Long)(pf) ? pf->size() : ((costs) ? costSize : 0); }
+    Long space() const FINAL { return ((pf) ? ((Long)pf->size() * (sizeof(Cost) + arity_ * sizeof(tValue))) : ((costs) ? ((Long)costSize * sizeof(Cost)) : 0)); } // actual memory space (not taking into account map space overhead)
+    Long space(Long nbtuples) const { return (nbtuples < LONGLONG_MAX / ((Long)(sizeof(Cost) + arity_ * sizeof(tValue)))) ? (nbtuples * (sizeof(Cost) + arity_ * sizeof(tValue))) : LONGLONG_MAX; } // putative memory space
+    bool expandtodo() { return space() > getDomainInitSizeProduct(); } // should be getDomainInitSizeProduct() * sizeof(Cost) ?
+    bool expandtodo(Long nbtuples) { return space(nbtuples) > getDomainInitSizeProduct(); } // getDomainInitSizeProduct() * sizeof(Cost) ?
+    void expand();
+
+    bool consistent(const Tuple& t);
+    Cost eval(const Tuple& s);
+    Cost eval(const Tuple& s, EnumeratedVariable** scope_in);
+    Cost evalsubstr(const Tuple& s, Constraint* ctr) FINAL { return evalsubstrAny(s, ctr); }
+    Cost evalsubstr(const Tuple& s, NaryConstraint* ctr) FINAL { return evalsubstrAny(s, ctr); }
+    template <class T>
+    Cost evalsubstrAny(const Tuple& s, T* ctr)
+    {
+        int count = 0;
+
+        for (int i = 0; i < arity_; i++) {
+            int ind = ctr->getIndex(getVar(i));
+            if (ind >= 0) {
+                evalTuple[i] = s[ind];
+                count++;
+            }
+        }
+        assert(count <= arity_);
+
+        Cost cost;
+        if (count == arity_)
+            cost = eval(evalTuple);
+        else
+            cost = MIN_COST;
+
+        return cost;
+    }
+    Cost getCost() FINAL
+    {
+        for (int i = 0; i < arity_; i++) {
+            EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+            evalTuple[i] = var->toIndex(var->getValue());
+        }
+        return eval(evalTuple);
+    }
+
+    Cost getDefCost() { return default_cost; }
+    void keepAllowedTuples(Cost df);
+
+    void resetFilters();
+    void fillFilters();
+
+    void project(EnumeratedVariable* x);
+    //    void sum( NaryConstraint* nary );
+    double computeTightness();
+
+    void first();
+    bool next(Tuple& t, Cost& c);
+
+    void first(EnumeratedVariable* a, EnumeratedVariable* b);
+    bool separability(EnumeratedVariable* a, EnumeratedVariable* b);
+    void separate(EnumeratedVariable* a, EnumeratedVariable* c);
+
+    void setTuple(const Tuple& tin, Cost c) FINAL
+    {
+        if (pf)
+            (*pf)[tin] = c;
+        else
+            costs[getCostsIndex(tin)] = c;
+    }
+    void addtoTuple(const Tuple& tin, Cost c) FINAL
+    {
+        if (pf)
+            (*pf)[tin] += c;
+        else
+            costs[getCostsIndex(tin)] += c;
+    }
+    //    void setTuple( const Tuple& tin, Cost c, EnumeratedVariable** scope_in );
+    //    void addtoTuple( const Tuple& tin, Cost c, EnumeratedVariable** scope_in );
+
+    void addtoTuples(Cost c); // c can be positive or negative (if greater than the minimum cost)
+    void addtoTuples(EnumeratedVariable* x, Value v, Cost c); // the same operation but restricted to tuples with x assigned to v
+
+    void setInfiniteCost(Cost ub);
+    void insertSum(const Tuple& t1, Cost c1, Constraint* ctr1, const Tuple& t2, Cost c2, Constraint* ctr2, bool bFilters = false);
+    //    void permute( EnumeratedVariable** scope_in );
+
+    void projectxy(EnumeratedVariable* x, EnumeratedVariable* y, TUPLES& fproj);
+    //    void projectxyz( EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, TUPLES& fproj);
+    //    void preproject3();
+    void preprojectall2();
+
+    void assign(int varIndex);
+
+    void propagate()
+    {
+        for (int i = 0; connected() && i < arity_; i++) {
+            if (getVar(i)->assigned())
+                assign(i);
+        }
+    };
+
+    bool verify() { return true; }
+    void increase(int index) {}
+    void decrease(int index) {}
+    void remove(int index) {}
+
+    //    void starrule(const Tuple& t, Cost minc);
+    void projectFromZero(int index) {}
+
+    bool checkEACGreedySolution(int index = -1, Value a = 0) FINAL;
+    bool reviseEACGreedySolution(int index = -1, Value a = 0) FINAL;
+
+    void fillRandom();
+    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+    void dump_CFN(ostream& os, bool original = true);
+};
+#endif /*TB2NARYCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2ternaryconstr.cpp b/code/include/tb2/core/tb2ternaryconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1eafd7b6cfdc6771ab4c281fb3be0ee125cdbd8e
--- /dev/null
+++ b/code/include/tb2/core/tb2ternaryconstr.cpp
@@ -0,0 +1,789 @@
+/*
+ * ****** Binary constraint applied on variables with enumerated domains ******
+ */
+
+#include "tb2ternaryconstr.hpp"
+#include "tb2wcsp.hpp"
+#include "search/tb2clusters.hpp"
+
+/*
+ * Constructors and misc.
+ * 
+ */
+
+TernaryConstraint::TernaryConstraint(WCSP* wcsp,
+    EnumeratedVariable* xx,
+    EnumeratedVariable* yy,
+    EnumeratedVariable* zz,
+    BinaryConstraint* xy_,
+    BinaryConstraint* xz_,
+    BinaryConstraint* yz_,
+    vector<Cost>& tab)
+    : AbstractTernaryConstraint<EnumeratedVariable, EnumeratedVariable, EnumeratedVariable>(wcsp, xx, yy, zz)
+    , sizeX(xx->getDomainInitSize())
+    , sizeY(yy->getDomainInitSize())
+    , sizeZ(zz->getDomainInitSize())
+    , top(wcsp->getUb())
+    , functionalX(true)
+    , functionalY(true)
+    , functionalZ(true)
+{
+    assert(tab.size() == sizeX * sizeY * sizeZ);
+    deltaCostsX = vector<StoreCost>(sizeX, StoreCost(MIN_COST));
+    deltaCostsY = vector<StoreCost>(sizeY, StoreCost(MIN_COST));
+    deltaCostsZ = vector<StoreCost>(sizeZ, StoreCost(MIN_COST));
+    assert(getIndex(x) < getIndex(y) && getIndex(y) < getIndex(z));
+    functionX = vector<Value>((size_t)sizeY * (size_t)sizeZ, WRONG_VAL);
+    functionY = vector<Value>((size_t)sizeX * (size_t)sizeZ, WRONG_VAL);
+    functionZ = vector<Value>((size_t)sizeX * (size_t)sizeY, WRONG_VAL);
+    supportX = vector<pair<Value, Value>>(sizeX, make_pair(y->getInf(), z->getInf()));
+    supportY = vector<pair<Value, Value>>(sizeY, make_pair(x->getInf(), z->getInf()));
+    supportZ = vector<pair<Value, Value>>(sizeZ, make_pair(x->getInf(), y->getInf()));
+
+    //    costs = vector<StoreCost>(sizeX*sizeY*sizeZ,StoreCost(MIN_COST,storeCost));
+
+    for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+        for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+            for (unsigned int c = 0; c < z->getDomainInitSize(); c++) {
+                Cost cost = tab[a * sizeY * sizeZ + b * sizeZ + c];
+                //		  costs[a * sizeY * sizeZ + b * sizeZ + c] = cost;
+                if (!CUT(cost, top) && x->canbe(x->toValue(a)) && y->canbe(y->toValue(b)) && z->canbe(z->toValue(c))) {
+                    if (functionalX) {
+                        if (functionX[b * sizeZ + c] == WRONG_VAL)
+                            functionX[b * sizeZ + c] = x->toValue(a);
+                        else
+                            functionalX = false;
+                    }
+                    if (functionalY) {
+                        if (functionY[a * sizeZ + c] == WRONG_VAL)
+                            functionY[a * sizeZ + c] = y->toValue(b);
+                        else
+                            functionalY = false;
+                    }
+                    if (functionalZ) {
+                        if (functionZ[a * sizeY + b] == WRONG_VAL)
+                            functionZ[a * sizeY + b] = z->toValue(c);
+                        else
+                            functionalZ = false;
+                    }
+                }
+            }
+        }
+    }
+
+    xy = xy_;
+    xz = xz_;
+    yz = yz_;
+
+    if (functionalX) {
+        costsYZ = vector<StoreCost>((size_t)sizeY * (size_t)sizeZ, StoreCost(MIN_COST));
+        for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+            for (unsigned int c = 0; c < z->getDomainInitSize(); c++) {
+                if (functionX[b * sizeZ + c] != WRONG_VAL)
+                    costsYZ[b * sizeZ + c] = tab[x->toIndex(functionX[b * sizeZ + c]) * sizeY * sizeZ + b * sizeZ + c];
+            }
+        }
+        //    	costs.free_all();
+    } else {
+        costs = vector<StoreCost>((size_t)sizeX * (size_t)sizeY * (size_t)sizeZ, StoreCost(MIN_COST));
+        for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+            for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+                for (unsigned int c = 0; c < z->getDomainInitSize(); c++) {
+                    costs[a * sizeY * sizeZ + b * sizeZ + c] = tab[a * sizeY * sizeZ + b * sizeZ + c];
+                }
+            }
+        }
+    }
+
+// Uncomment the following code if toulbar2 is used within numberjack
+#ifdef NUMBERJACK
+    vector<int>& vecX = wcsp->getListSuccessors()->at(xx->wcspIndex);
+    vector<int>& vecY = wcsp->getListSuccessors()->at(yy->wcspIndex);
+    vector<int>& vecZ = wcsp->getListSuccessors()->at(zz->wcspIndex);
+    // If variables xx,yy,zz are not yet involved by a decomposable global cost function and there is a functional dependency between them
+    // then suggests a good Berge DAC ordering:
+    if ((std::find(vecX.begin(), vecX.end(), yy->wcspIndex) == vecX.end()) && (std::find(vecX.begin(), vecX.end(), zz->wcspIndex) == vecX.end()) && (std::find(vecY.begin(), vecY.end(), xx->wcspIndex) == vecY.end()) && (std::find(vecY.begin(), vecY.end(), zz->wcspIndex) == vecY.end()) && (std::find(vecZ.begin(), vecZ.end(), xx->wcspIndex) == vecZ.end()) && (std::find(vecZ.begin(), vecZ.end(), yy->wcspIndex) == vecZ.end())) {
+        switch (functionalX + functionalY + functionalZ) {
+        case 1:
+            if (functionalX) {
+                vecX.push_back(yy->wcspIndex);
+                vecX.push_back(zz->wcspIndex);
+            } else if (functionalY) {
+                vecY.push_back(xx->wcspIndex);
+                vecY.push_back(zz->wcspIndex);
+            } else if (functionalZ) {
+                vecZ.push_back(xx->wcspIndex);
+                vecZ.push_back(yy->wcspIndex);
+            }
+            ToulBar2::Berge_Dec = 1;
+            break;
+        case 2:
+            if (functionalX && functionalY) {
+                if (xx->wcspIndex < yy->wcspIndex) {
+                    vecX.push_back(zz->wcspIndex);
+                    vecZ.push_back(yy->wcspIndex);
+                } else {
+                    vecY.push_back(zz->wcspIndex);
+                    vecZ.push_back(xx->wcspIndex);
+                }
+            } else if (functionalX && functionalZ) {
+                if (xx->wcspIndex < zz->wcspIndex) {
+                    vecX.push_back(yy->wcspIndex);
+                    vecY.push_back(zz->wcspIndex);
+                } else {
+                    vecZ.push_back(yy->wcspIndex);
+                    vecY.push_back(xx->wcspIndex);
+                }
+            } else if (functionalY && functionalZ) {
+                if (yy->wcspIndex < zz->wcspIndex) {
+                    vecY.push_back(xx->wcspIndex);
+                    vecX.push_back(zz->wcspIndex);
+                } else {
+                    vecZ.push_back(xx->wcspIndex);
+                    vecX.push_back(yy->wcspIndex);
+                }
+            }
+            ToulBar2::Berge_Dec = 1;
+            break;
+        case 3:
+            if (xx->wcspIndex < yy->wcspIndex && xx->wcspIndex < zz->wcspIndex) {
+                if (yy->wcspIndex < zz->wcspIndex) {
+                    vecY.push_back(xx->wcspIndex);
+                    vecX.push_back(zz->wcspIndex);
+                } else {
+                    vecZ.push_back(xx->wcspIndex);
+                    vecX.push_back(yy->wcspIndex);
+                }
+            } else if (yy->wcspIndex < xx->wcspIndex && yy->wcspIndex < zz->wcspIndex) {
+                if (xx->wcspIndex < zz->wcspIndex) {
+                    vecX.push_back(yy->wcspIndex);
+                    vecY.push_back(zz->wcspIndex);
+                } else {
+                    vecZ.push_back(yy->wcspIndex);
+                    vecY.push_back(xx->wcspIndex);
+                }
+            } else if (zz->wcspIndex < xx->wcspIndex && zz->wcspIndex < yy->wcspIndex) {
+                if (xx->wcspIndex < yy->wcspIndex) {
+                    vecX.push_back(zz->wcspIndex);
+                    vecZ.push_back(yy->wcspIndex);
+                } else {
+                    vecY.push_back(zz->wcspIndex);
+                    vecZ.push_back(xx->wcspIndex);
+                }
+            }
+            ToulBar2::Berge_Dec = 1;
+            break;
+        default:
+            break;
+        }
+    }
+#endif
+
+    propagate();
+}
+
+TernaryConstraint::TernaryConstraint(WCSP* wcsp)
+    : AbstractTernaryConstraint<EnumeratedVariable, EnumeratedVariable, EnumeratedVariable>(wcsp)
+    , sizeX(0)
+    , sizeY(0)
+    , sizeZ(0)
+    , functionalX(false)
+    , functionalY(false)
+    , functionalZ(false)
+{
+    //	unsigned int maxdom = wcsp->getMaxDomainSize();
+    //    deltaCostsX = vector<StoreCost>(maxdom,StoreCost(MIN_COST,storeCost));
+    //    deltaCostsY = vector<StoreCost>(maxdom,StoreCost(MIN_COST,storeCost));
+    //    deltaCostsZ = vector<StoreCost>(maxdom,StoreCost(MIN_COST,storeCost));
+    //    supportX = vector< pair<Value,Value> >(maxdom);
+    //    supportY = vector< pair<Value,Value> >(maxdom);
+    //    supportZ = vector< pair<Value,Value> >(maxdom);
+    linkX = new DLink<ConstraintLink>;
+    linkY = new DLink<ConstraintLink>;
+    linkZ = new DLink<ConstraintLink>;
+
+    //    costs = vector<StoreCost>(maxdom*maxdom*maxdom,StoreCost(MIN_COST,storeCost));
+    //    for (unsigned int a = 0; a < maxdom; a++)
+    //       for (unsigned int b = 0; b < maxdom; b++)
+    //           for (unsigned int c = 0; c < maxdom; c++)
+    //               costs[a * maxdom * maxdom + b * maxdom + c] = MIN_COST;
+    xy = NULL;
+    xz = NULL;
+    yz = NULL;
+}
+
+double TernaryConstraint::computeTightness()
+{
+    int count = 0;
+    double sum = 0;
+    Cost* costs = new Cost[x->getDomainSize() * y->getDomainSize() * z->getDomainSize()];
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+        for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+            for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                Cost c = getCost(*iterX, *iterY, *iterZ);
+                sum += to_double(min(wcsp->getUb(), c));
+                costs[count] = min(wcsp->getUb(), c);
+                count++;
+            }
+        }
+    }
+
+    if (ToulBar2::weightedTightness == 2) {
+        tight = to_double(stochastic_selection<Cost>(costs, 0, count - 1, count / 2));
+    } else {
+        tight = sum / (double)count;
+    }
+    delete[] costs;
+    return tight;
+}
+
+void TernaryConstraint::print(ostream& os)
+{
+    os << this << " TernaryConstraint(" << x->getName() << ((functionalX) ? "!" : "") << "," << y->getName() << ((functionalY) ? "!" : "") << "," << z->getName() << ((functionalZ) ? "!" : "") << ")";
+    if (ToulBar2::weightedDegree)
+        os << "/" << getConflictWeight();
+    if (wcsp->getTreeDec())
+        cout << "   cluster: " << getCluster() << endl;
+    else
+        cout << endl;
+
+    if (ToulBar2::verbose >= 5) {
+        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+            for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                    os << " " << getCost(*iterX, *iterY, *iterZ);
+                }
+                os << " ; ";
+            }
+            os << endl;
+        }
+    }
+}
+
+void TernaryConstraint::dump(ostream& os, bool original)
+{
+    os << "3 " << ((original) ? (x->wcspIndex) : x->getCurrentVarId()) << " " << ((original) ? (y->wcspIndex) : y->getCurrentVarId()) << " " << ((original) ? (z->wcspIndex) : z->getCurrentVarId()) << " " << MIN_COST << " " << x->getDomainSize() * y->getDomainSize() * z->getDomainSize() << endl;
+    int i = 0;
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX, i++) {
+        int j = 0;
+        for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY, j++) {
+            int k = 0;
+            for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ, k++) {
+                os << ((original) ? x->toIndex(*iterX) : i) << " " << ((original) ? y->toIndex(*iterY) : j) << " " << ((original) ? z->toIndex(*iterZ) : k) << " " << ((original) ? getCost(*iterX, *iterY, *iterZ) : min(wcsp->getUb(), getCost(*iterX, *iterY, *iterZ))) << endl;
+            }
+        }
+    }
+}
+
+void TernaryConstraint::dump_CFN(ostream& os, bool original)
+{
+    bool printed = false;
+    os << "\"F_" << ((original) ? (x->wcspIndex) : x->getCurrentVarId()) << "_"
+       << ((original) ? (y->wcspIndex) : y->getCurrentVarId()) << "_"
+       << ((original) ? (z->wcspIndex) : z->getCurrentVarId()) << "\":{\"scope\":[";
+    os << x->getName() << ","
+       << y->getName() << ","
+       << z->getName() << "],";
+    os << "\"defaultcost\":" << MIN_COST << ",\n\"costs\":[\n";
+    int i = 0;
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX, i++) {
+        int j = 0;
+        for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY, j++) {
+            int k = 0;
+            for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ, k++) {
+                if (printed)
+                    os << ",\n";
+                if (getCost(*iterX, *iterY, *iterZ) != MIN_COST) {
+                    os << ((original) ? x->toIndex(*iterX) : i) << "," << ((original) ? y->toIndex(*iterY) : j) << "," << ((original) ? z->toIndex(*iterZ) : k) << ","
+                       << ((original) ? wcsp->Cost2RDCost(getCost(*iterX, *iterY, *iterZ)) : wcsp->Cost2RDCost(min(wcsp->getUb(), getCost(*iterX, *iterY, *iterZ))));
+                    printed = true;
+                } else
+                    printed = false;
+            }
+        }
+    }
+    os << "]}\n";
+}
+
+/*
+ * Propagation methods
+ * 
+ */
+bool TernaryConstraint::project(EnumeratedVariable* x, Value value, Cost cost, vector<StoreCost>& deltaCostsX)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "project(C" << getVar(0)->getName() << "," << getVar(1)->getName() << "," << getVar(2)->getName() << ", (" << x->getName() << "," << value << "), " << cost << ")" << endl), true));
+
+    // hard ternary constraint costs are not changed
+    if (!CUT(cost + wcsp->getLb(), wcsp->getUb())) {
+        TreeDecomposition* td = wcsp->getTreeDec();
+        if (td)
+            td->addDelta(cluster, x, value, cost);
+        deltaCostsX[x->toIndex(value)] += cost; // Warning! Possible overflow???
+    }
+
+    Cost oldcost = x->getCost(value);
+    x->project(value, cost);
+#ifdef DEECOMPLETE
+    int xindex = getIndex(x);
+    getVar((xindex + 1) % 3)->queueDEE();
+    getVar((xindex + 2) % 3)->queueDEE();
+#endif
+    return (x->getSupport() == value || SUPPORTTEST(oldcost, cost));
+}
+
+void TernaryConstraint::extend(EnumeratedVariable* x, Value value, Cost cost, vector<StoreCost>& deltaCostsX)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "extend(C" << getVar(0)->getName() << "," << getVar(1)->getName() << "," << getVar(2)->getName() << ", (" << x->getName() << "," << value << "), " << cost << ")" << endl), true));
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (td)
+        td->addDelta(cluster, x, value, -cost);
+    deltaCostsX[x->toIndex(value)] -= cost; // Warning! Possible overflow???
+    x->extend(value, cost);
+}
+
+pair<pair<Cost, Cost>, pair<Cost, Cost>> TernaryConstraint::getMaxCost(int varIndex, Value a, Value b)
+{
+    Cost maxcosta = MIN_COST;
+    Cost diffcosta = MIN_COST;
+    Cost maxcostb = MIN_COST;
+    Cost diffcostb = MIN_COST;
+    if (varIndex == 0) {
+        Cost ucosta = x->getCost(a);
+        Cost ucostb = x->getCost(b);
+        for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+            Cost ucosty = y->getCost(*iterY);
+            for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                Cost costa = getCost(a, *iterY, *iterZ);
+                Cost costb = getCost(b, *iterY, *iterZ);
+                if (costa > maxcosta)
+                    maxcosta = costa;
+                if (costb > maxcostb)
+                    maxcostb = costb;
+                Cost ucostz = z->getCost(*iterZ);
+                if (!CUT(ucostb + getCostWithBinaries(b, *iterY, *iterZ) + ucosty + ucostz + wcsp->getLb(), wcsp->getUb())) {
+                    if (costa - costb > diffcosta)
+                        diffcosta = costa - costb;
+                }
+                if (!CUT(ucosta + getCostWithBinaries(a, *iterY, *iterZ) + ucosty + ucostz + wcsp->getLb(), wcsp->getUb())) {
+                    if (costb - costa > diffcostb)
+                        diffcostb = costb - costa;
+                }
+            }
+        }
+    } else if (varIndex == 1) {
+        Cost ucosta = y->getCost(a);
+        Cost ucostb = y->getCost(b);
+        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+            Cost ucostx = x->getCost(*iterX);
+            for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                Cost costa = getCost(*iterX, a, *iterZ);
+                Cost costb = getCost(*iterX, b, *iterZ);
+                if (costa > maxcosta)
+                    maxcosta = costa;
+                if (costb > maxcostb)
+                    maxcostb = costb;
+                Cost ucostz = z->getCost(*iterZ);
+                if (!CUT(ucostb + getCostWithBinaries(*iterX, b, *iterZ) + ucostx + ucostz + wcsp->getLb(), wcsp->getUb())) {
+                    if (costa - costb > diffcosta)
+                        diffcosta = costa - costb;
+                }
+                if (!CUT(ucosta + getCostWithBinaries(*iterX, a, *iterZ) + ucostx + ucostz + wcsp->getLb(), wcsp->getUb())) {
+                    if (costb - costa > diffcostb)
+                        diffcostb = costb - costa;
+                }
+            }
+        }
+    } else {
+        assert(varIndex == 2);
+        Cost ucosta = z->getCost(a);
+        Cost ucostb = z->getCost(b);
+        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+            Cost ucostx = x->getCost(*iterX);
+            for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                Cost costa = getCost(*iterX, *iterY, a);
+                Cost costb = getCost(*iterX, *iterY, b);
+                if (costa > maxcosta)
+                    maxcosta = costa;
+                if (costb > maxcostb)
+                    maxcostb = costb;
+                Cost ucosty = y->getCost(*iterY);
+                if (!CUT(ucostb + getCostWithBinaries(*iterX, *iterY, b) + ucostx + ucosty + wcsp->getLb(), wcsp->getUb())) {
+                    if (costa - costb > diffcosta)
+                        diffcosta = costa - costb;
+                }
+                if (!CUT(ucosta + getCostWithBinaries(*iterX, *iterY, a) + ucostx + ucosty + wcsp->getLb(), wcsp->getUb())) {
+                    if (costb - costa > diffcostb)
+                        diffcostb = costb - costa;
+                }
+            }
+        }
+    }
+    assert(maxcosta >= diffcosta);
+    assert(maxcostb >= diffcostb);
+    return make_pair(make_pair(maxcosta, diffcosta), make_pair(maxcostb, diffcostb));
+}
+
+bool TernaryConstraint::separability(EnumeratedVariable* vy, EnumeratedVariable* vz)
+{
+    Cost c1, c;
+    Tuple tch(3, 0);
+    bool neweq = true; // true if we have  not a difference value
+    bool sep = true; // false if vy and vz are not separable
+    Cost diff = 0;
+    first(vy, vz);
+    EnumeratedVariable::iterator itvyfirst = yvar->begin();
+    if (ToulBar2::verbose >= 1)
+        cout << " [ " << zvar->getName() << " " << xvar->getName() << " " << yvar->getName() << " ] ?"; // << endl;
+    while (sep && itvyfirst != yvar->end()) {
+        itvx = xvar->begin();
+        itvy = yvar->begin();
+        itvz = zvar->begin();
+        while (sep && itvx != xvar->end()) {
+            unsigned int ix = xvar->toIndex(*itvx);
+            tch[0] = ix;
+            while (sep && itvy != yvar->end()) {
+                unsigned int iy = yvar->toIndex(*itvy);
+                tch[1] = iy;
+                while (sep && itvy != itvyfirst && itvz != zvar->end()) {
+                    unsigned int iz = zvar->toIndex(*itvz);
+                    tch[2] = iz;
+
+                    c1 = getCost(xvar, yvar, zvar, *itvx, *(itvyfirst), *itvz);
+                    c = getCost(xvar, yvar, zvar, *itvx, *itvy, *itvz);
+
+                    if (!universe(c, c1, wcsp->getUb())) {
+                        if (ToulBar2::verbose >= 3) {
+                            if (!neweq)
+                                cout << "= \n";
+                            else
+                                cout << endl;
+                        }
+                        if (ToulBar2::verbose >= 3)
+                            cout << " C" << tch[2] << "." << tch[0] << "." << tch[1] << " -  C" << tch[2] << "." << tch[0] << "." << yvar->toIndex(*itvyfirst) << " = " << c << " - " << c1;
+
+                        if (neweq) {
+                            diff = squareminus(c, c1, wcsp->getUb());
+                            neweq = false;
+                        } else
+                            sep = (diff == squareminus(c, c1, wcsp->getUb()));
+                        if (ToulBar2::verbose >= 3)
+                            cout << " = " << squareminus(c, c1, wcsp->getUb()) << endl;
+                    } else {
+                        if (ToulBar2::verbose >= 3)
+                            cout << "universe\n";
+                    }
+                    ++itvz;
+                }
+                ++itvy;
+                itvz = zvar->begin();
+                neweq = true;
+            }
+            ++itvx;
+            itvy = yvar->begin();
+            neweq = true;
+        }
+        ++itvyfirst;
+        itvx = xvar->begin();
+        neweq = true;
+        if (ToulBar2::verbose >= 3)
+            cout << "---\n";
+    }
+    return sep;
+}
+
+void TernaryConstraint::separate(EnumeratedVariable* vy, EnumeratedVariable* vz)
+{
+    Cost cost, minCost = MAX_COST;
+    //assert(separability(vy,vz));
+    first(vy, vz);
+    vector<Cost> costsZX((size_t)zvar->getDomainInitSize() * (size_t)xvar->getDomainInitSize(), MIN_COST);
+    vector<Cost> costsXY((size_t)xvar->getDomainInitSize() * (size_t)yvar->getDomainInitSize(), MIN_COST);
+    string xv(xvar->getName()), yv(yvar->getName()), zv(zvar->getName());
+    if (ToulBar2::verbose == 1)
+        cout << "\n";
+
+    if (ToulBar2::verbose >= 3)
+        cout << "[ " << zvar->getName() << " " << xvar->getName() << " ]" << endl;
+    while (itvz != zvar->end()) {
+        while (itvx != xvar->end()) {
+            minCost = MAX_COST;
+            while (itvy != yvar->end()) {
+                cost = getCost(xvar, yvar, zvar, *itvx, *itvy, *itvz);
+                if (cost < minCost)
+                    minCost = cost;
+                if (minCost >= wcsp->getUb())
+                    minCost = wcsp->getUb();
+                ++itvy;
+            }
+            if (ToulBar2::verbose >= 3)
+                cout << *itvx << " " << *itvz << " : " << minCost << endl;
+            costsZX[zvar->toIndex(*itvz) * xvar->getDomainInitSize() + xvar->toIndex(*itvx)] = minCost;
+            ++itvx;
+            itvy = yvar->begin();
+        }
+        ++itvz;
+        itvx = xvar->begin();
+    }
+    BinaryConstraint* existZX = xvar->getConstr(zvar);
+    assert(existZX);
+    BinaryConstraint* zx = new BinaryConstraint(wcsp, zvar, xvar, costsZX);
+    if (ToulBar2::verbose >= 3)
+        cout << "-------------\n";
+    if (ToulBar2::verbose >= 3)
+        cout << "[ " << xvar->getName() << " " << yvar->getName() << " ]" << endl;
+
+    first(vy, vz);
+    Cost costzx;
+    while (itvx != xvar->end()) {
+        while (itvy != yvar->end()) {
+            itvz = zvar->begin();
+            do {
+                cost = getCost(xvar, yvar, zvar, *itvx, *itvy, *itvz);
+                costzx = zx->getCost(*itvz, *itvx);
+                ++itvz;
+            } while (itvz != zvar->end() && cost >= wcsp->getUb() && costzx >= wcsp->getUb());
+            costsXY[xvar->toIndex(*itvx) * yvar->getDomainInitSize() + yvar->toIndex(*itvy)] = squareminus(cost, costzx, wcsp->getUb());
+            if (ToulBar2::verbose >= 3)
+                cout << *itvx << " " << *itvy << " : " << squareminus(cost, costzx, wcsp->getUb()) << endl;
+            ++itvy;
+        }
+        ++itvx;
+        itvy = yvar->begin();
+    }
+    BinaryConstraint* existXY = xvar->getConstr(yvar);
+    assert(existXY);
+    BinaryConstraint* xy = new BinaryConstraint(wcsp, xvar, yvar, costsXY);
+
+    assert(verifySeparate(zx, xy));
+
+    // fusion with the existing constraint (xz)
+    if (!zx->universal()) {
+        if (ToulBar2::verbose >= 1)
+            cout << "[ " << zv << " " << xv << " ]" << endl;
+        existZX->addCosts(zx);
+        existZX->reconnect();
+        existZX->propagate();
+    }
+    zx->deconnect(); //  unsafe to delete zx due to x and z lists of cost functions
+
+    // fusion with the existing constraint (xy)
+    if (!xy->universal()) {
+        if (ToulBar2::verbose >= 1)
+            cout << "[ " << xv << " " << yv << " ]" << endl;
+        existXY->addCosts(xy);
+        existXY->reconnect();
+        existXY->propagate();
+    }
+    xy->deconnect(); //  unsafe to delete xy due to x and y lists of cost functions
+    deconnect();
+}
+
+void TernaryConstraint::fillxy()
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+    BinaryConstraint* xy_ = NULL;
+    xy_ = x->getConstr(y);
+    if (td && xy_ && (getCluster() != xy_->getCluster())) {
+        BinaryConstraint* xy__ = x->getConstr(y, getCluster());
+        if (xy__)
+            xy_ = xy__; // we have found another constraint of the same cluster
+    }
+    if (!xy_ || (xy_ && td && (getCluster() != xy_->getCluster()))) {
+        xy = wcsp->newBinaryConstr(x, y, this);
+        xy->setCluster(getCluster());
+        if (td && xy_ && (getCluster() != xy_->getCluster()))
+            xy->setDuplicate();
+        wcsp->elimBinOrderInc();
+    } else
+        xy = xy_;
+    if (xy->isDuplicate())
+        setDuplicate();
+}
+
+void TernaryConstraint::fillxz()
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+    BinaryConstraint* xz_ = NULL;
+    xz_ = x->getConstr(z);
+    if (td && xz_ && (getCluster() != xz_->getCluster())) {
+        BinaryConstraint* xz__ = x->getConstr(z, getCluster());
+        if (xz__)
+            xz_ = xz__; // we have found another constraint of the same cluster
+    }
+    if (!xz_ || (xz_ && td && getCluster() != xz_->getCluster())) {
+        xz = wcsp->newBinaryConstr(x, z, this);
+        xy->setCluster(getCluster());
+        if (td && xz_ && (getCluster() != xz_->getCluster()))
+            xz->setDuplicate();
+        wcsp->elimBinOrderInc();
+        if (td)
+            xz->setCluster(getCluster());
+    } else
+        xz = xz_;
+    if (xz->isDuplicate())
+        setDuplicate();
+}
+
+void TernaryConstraint::fillyz()
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+    BinaryConstraint* yz_ = NULL;
+    yz_ = y->getConstr(z);
+    if (td && yz_ && (getCluster() != yz_->getCluster())) {
+        BinaryConstraint* yz__ = y->getConstr(z, getCluster());
+        if (yz__)
+            yz_ = yz__;
+    }
+    if (!yz_ || (yz_ && td && getCluster() != yz_->getCluster())) {
+        yz = wcsp->newBinaryConstr(y, z, this);
+        yz->setCluster(getCluster());
+        if (td && yz_ && (getCluster() != yz_->getCluster()))
+            yz->setDuplicate();
+        wcsp->elimBinOrderInc();
+    } else
+        yz = yz_;
+    if (yz->isDuplicate())
+        setDuplicate();
+}
+
+void TernaryConstraint::fillElimConstrBinaries()
+{
+    fillxy();
+    fillxz();
+    fillyz();
+
+    if (ToulBar2::verbose > 1)
+        cout << " fillElimConstrBinaries (" << x->wcspIndex << "," << y->wcspIndex << "," << z->wcspIndex << ")  ";
+}
+
+void TernaryConstraint::setDuplicates()
+{
+    assert(wcsp->getTreeDec());
+    if (xy->getCluster() != cluster) {
+        BinaryConstraint* xy_ = x->getConstr(y, getCluster());
+        if (xy_) {
+            if (xy_->isDuplicate())
+                setDuplicate();
+            xy = xy_;
+        } else {
+            wcsp->initElimConstr();
+            xy = wcsp->newBinaryConstr(x, y);
+            xy->setCluster(cluster);
+            xy->setDuplicate();
+            wcsp->elimBinOrderInc();
+            setDuplicate();
+        }
+    }
+    if (xz->getCluster() != cluster) {
+        BinaryConstraint* xz_ = x->getConstr(z, getCluster());
+        if (xz_) {
+            xz = xz_;
+            if (xz_->isDuplicate())
+                setDuplicate();
+        } else {
+            wcsp->initElimConstr();
+            xz = wcsp->newBinaryConstr(x, z);
+            xz->setCluster(getCluster());
+            xz->setDuplicate();
+            wcsp->elimBinOrderInc();
+            setDuplicate();
+        }
+    }
+    if (yz->getCluster() != cluster) {
+        BinaryConstraint* yz_ = y->getConstr(z, getCluster());
+        if (yz_) {
+            yz = yz_;
+            if (yz_->isDuplicate())
+                setDuplicate();
+        } else {
+            wcsp->initElimConstr();
+            yz = wcsp->newBinaryConstr(y, z);
+            yz->setCluster(getCluster());
+            yz->setDuplicate();
+            wcsp->elimBinOrderInc();
+            setDuplicate();
+        }
+    }
+}
+
+bool TernaryConstraint::verify(EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z)
+{
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+        Cost minCost = MAX_COST;
+        for (EnumeratedVariable::iterator iterY = y->begin(); minCost > MIN_COST && iterY != y->end(); ++iterY) {
+            for (EnumeratedVariable::iterator iterZ = z->begin(); minCost > MIN_COST && iterZ != z->end(); ++iterZ) {
+                Cost cost = getCost(x, y, z, *iterX, *iterY, *iterZ);
+                if (ToulBar2::LcLevel >= LC_DAC && getIndex(x) == getDACScopeIndex())
+                    cost += y->getCost(*iterY) + z->getCost(*iterZ);
+                GLB(&minCost, cost);
+            }
+        }
+        if (minCost > MIN_COST) {
+            cout << "not FDAC: variable " << x->getName() << " value " << *iterX << " of " << *this;
+            return false;
+        }
+    }
+    return true;
+}
+
+bool TernaryConstraint::verify()
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+
+    if (td) {
+        if (cluster != xy->getCluster() || cluster != xz->getCluster() || cluster != yz->getCluster())
+            return false;
+    }
+
+    if (ToulBar2::LcLevel == LC_DAC) {
+        switch (getDACScopeIndex()) {
+        case 0:
+            return verifyX();
+            break;
+        case 1:
+            return verifyY();
+            break;
+        case 2:
+            return verifyZ();
+            break;
+        default:
+            return false;
+        }
+    } else {
+        return verifyX() && verifyY() && verifyZ();
+    }
+}
+
+//Triangle::Triangle(WCSP *wcsp,
+//				  EnumeratedVariable *xx,
+//				  EnumeratedVariable *yy,
+//				  EnumeratedVariable *zz,
+//				  BinaryConstraint* _xy,
+//				  BinaryConstraint* _xz,
+//				  BinaryConstraint* _yz,
+//				  StoreStack<Cost, Cost> *storeCost)
+//	: AbstractTernaryConstraint<EnumeratedVariable,EnumeratedVariable,EnumeratedVariable>(wcsp, xx, yy, zz),
+//	  xy(_xy), xz(_xz), yz(_yz), xyz(xx->getConstr(yy,zz))
+//						  {
+//	// if xyz == NULL then create "empty" ternaryconstr like in NaryConstr.cpp
+//	// 		BinaryConstraint* bctr;
+////	TernaryConstraint* tctr = new TernaryConstraint(this, &storeData->storeCost);
+////	elimTernConstrs.push_back(tctr);
+////	for (int j = 0; j < 3; j++) {
+////		if (!ToulBar2::vac) bctr = new BinaryConstraint(this, &storeData->storeCost);
+////		else bctr = new VACBinaryConstraint(this, &storeData->storeCost);
+////		elimBinConstrs.push_back(bctr);
+////	}
+//
+//						  }
+
+//activate {
+//	xyz = wcsp->newTernaryConstr(x,y,z,this);
+//}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2ternaryconstr.hpp b/code/include/tb2/core/tb2ternaryconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..c408b969b15340cbae45b746b162d76334b12dab
--- /dev/null
+++ b/code/include/tb2/core/tb2ternaryconstr.hpp
@@ -0,0 +1,1800 @@
+/** \file tb2ternaryconstr.hpp
+ *  \brief Ternary constraint applied on variables with enumerated domains.
+ *
+ */
+
+#ifndef TB2TERNARYCONSTR_HPP_
+#define TB2TERNARYCONSTR_HPP_
+
+#include "tb2abstractconstr.hpp"
+#include "tb2enumvar.hpp"
+#include "tb2binconstr.hpp"
+
+struct Functor_getCostXYZ {
+    TernaryConstraint& obj;
+    inline Functor_getCostXYZ(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostXZY {
+    TernaryConstraint& obj;
+    inline Functor_getCostXZY(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostYXZ {
+    TernaryConstraint& obj;
+    inline Functor_getCostYXZ(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostYZX {
+    TernaryConstraint& obj;
+    inline Functor_getCostYZX(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostZXY {
+    TernaryConstraint& obj;
+    inline Functor_getCostZXY(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostZYX {
+    TernaryConstraint& obj;
+    inline Functor_getCostZYX(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+
+struct Functor_getCostWithBinariesXYZ {
+    TernaryConstraint& obj;
+    inline Functor_getCostWithBinariesXYZ(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostWithBinariesXZY {
+    TernaryConstraint& obj;
+    inline Functor_getCostWithBinariesXZY(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostWithBinariesYXZ {
+    TernaryConstraint& obj;
+    inline Functor_getCostWithBinariesYXZ(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostWithBinariesYZX {
+    TernaryConstraint& obj;
+    inline Functor_getCostWithBinariesYZX(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostWithBinariesZXY {
+    TernaryConstraint& obj;
+    inline Functor_getCostWithBinariesZXY(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+struct Functor_getCostWithBinariesZYX {
+    TernaryConstraint& obj;
+    inline Functor_getCostWithBinariesZYX(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Cost operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const;
+};
+
+struct Functor_addCostXYZ {
+    TernaryConstraint& obj;
+    inline Functor_addCostXYZ(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline void operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz, Cost c);
+};
+struct Functor_addCostXZY {
+    TernaryConstraint& obj;
+    inline Functor_addCostXZY(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline void operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz, Cost c);
+};
+struct Functor_addCostYXZ {
+    TernaryConstraint& obj;
+    inline Functor_addCostYXZ(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline void operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz, Cost c);
+};
+struct Functor_addCostYZX {
+    TernaryConstraint& obj;
+    inline Functor_addCostYZX(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline void operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz, Cost c);
+};
+struct Functor_addCostZXY {
+    TernaryConstraint& obj;
+    inline Functor_addCostZXY(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline void operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz, Cost c);
+};
+struct Functor_addCostZYX {
+    TernaryConstraint& obj;
+    inline Functor_addCostZYX(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline void operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz, Cost c);
+};
+
+struct Functor_getFunctionXYZ {
+    TernaryConstraint& obj;
+    inline Functor_getFunctionXYZ(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Value operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy) const;
+};
+struct Functor_getFunctionXZY {
+    TernaryConstraint& obj;
+    inline Functor_getFunctionXZY(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Value operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy) const;
+};
+struct Functor_getFunctionYXZ {
+    TernaryConstraint& obj;
+    inline Functor_getFunctionYXZ(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Value operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy) const;
+};
+struct Functor_getFunctionYZX {
+    TernaryConstraint& obj;
+    inline Functor_getFunctionYZX(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Value operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy) const;
+};
+struct Functor_getFunctionZXY {
+    TernaryConstraint& obj;
+    inline Functor_getFunctionZXY(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Value operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy) const;
+};
+struct Functor_getFunctionZYX {
+    TernaryConstraint& obj;
+    inline Functor_getFunctionZYX(TernaryConstraint& in)
+        : obj(in)
+    {
+    }
+    inline Value operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy) const;
+};
+
+class TernaryConstraint : public AbstractTernaryConstraint<EnumeratedVariable, EnumeratedVariable, EnumeratedVariable> {
+protected:
+    unsigned int sizeX;
+    unsigned int sizeY;
+    unsigned int sizeZ;
+    vector<StoreCost> costs;
+    vector<StoreCost> deltaCostsX;
+    vector<StoreCost> deltaCostsY;
+    vector<StoreCost> deltaCostsZ;
+    Cost top;
+    bool functionalX;
+    vector<Value> functionX;
+    bool functionalY;
+    vector<Value> functionY;
+    bool functionalZ;
+    vector<Value> functionZ;
+    vector<pair<Value, Value>> supportX;
+    vector<pair<Value, Value>> supportY;
+    vector<pair<Value, Value>> supportZ;
+    vector<StoreCost> costsYZ;
+
+    inline Value getFunctionX(Value vy, Value vz) const { return functionX[y->toIndex(vy) * sizeZ + z->toIndex(vz)]; }
+    inline Value getFunctionY(Value vx, Value vz) const { return functionY[x->toIndex(vx) * sizeZ + z->toIndex(vz)]; }
+    inline Value getFunctionZ(Value vx, Value vy) const { return functionZ[x->toIndex(vx) * sizeY + y->toIndex(vy)]; }
+
+    // return true if unary support of x is broken
+    bool project(EnumeratedVariable* x, Value value, Cost cost, vector<StoreCost>& deltaCostsX);
+    void extend(EnumeratedVariable* x, Value value, Cost cost, vector<StoreCost>& deltaCostsX);
+
+    template <typename T1, typename T2, typename T3>
+    void project(T1 getCost, T2 addCost, bool functionalZ, T3 getFunctionZ, BinaryConstraint* xy, EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, Value valx, Value valy, Cost cost);
+    template <typename T1, typename T2, typename T3>
+    void extend(T1 getCost, T2 addCost, bool functionalZ, T3 getFunctionZ, BinaryConstraint* xy, EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, Value valx, Value valy, Cost cost);
+
+    template <typename T1, typename T2, typename T3>
+    void findSupport(T1 getCost, bool functionalY, T2 getFunctionY, bool functionalZ, T3 getFunctionZ,
+        EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z,
+        int getIndexX, int getIndexY, int getIndexZ,
+        vector<pair<Value, Value>>& supportX, vector<StoreCost>& deltaCostsX,
+        vector<pair<Value, Value>>& supportY, vector<pair<Value, Value>>& supportZ);
+    template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
+    void findFullSupport(T1 getCost, T2 getCostXZY, T3 getCostYZX, T4 getCostWithBinaries, T5 addCost, T6 addCostXZY, T7 addCostYZX, bool functionalX, T8 getFunctionX, bool functionalY, T9 getFunctionY, bool functionalZ, T10 getFunctionZ,
+        EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z,
+        int getIndexX, int getIndexY, int getIndexZ,
+        vector<pair<Value, Value>>& supportX, vector<StoreCost>& deltaCostsX,
+        vector<pair<Value, Value>>& supportY, vector<StoreCost>& deltaCostsY,
+        vector<pair<Value, Value>>& supportZ, vector<StoreCost>& deltaCostsZ,
+        BinaryConstraint* xy, BinaryConstraint* xz, BinaryConstraint* yz);
+    bool verify(EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z);
+
+    template <typename T1, typename T2, typename T3>
+    bool isEAC(T1 getCostWithBinaries, bool functionalY, T2 getFunctionY, bool functionalZ, T3 getFunctionZ,
+        EnumeratedVariable* x, Value a, EnumeratedVariable* y, EnumeratedVariable* z,
+        vector<pair<Value, Value>>& supportX);
+
+    void findSupportX() { findSupport(Functor_getCostXYZ(*this), functionalY, Functor_getFunctionYXZ(*this), functionalZ, Functor_getFunctionZXY(*this), x, y, z, 0, 1, 2, supportX, deltaCostsX, supportY, supportZ); }
+    void findSupportY() { findSupport(Functor_getCostYXZ(*this), functionalX, Functor_getFunctionXYZ(*this), functionalZ, Functor_getFunctionZYX(*this), y, x, z, 1, 0, 2, supportY, deltaCostsY, supportX, supportZ); }
+    void findSupportZ() { findSupport(Functor_getCostZXY(*this), functionalX, Functor_getFunctionXZY(*this), functionalY, Functor_getFunctionYZX(*this), z, x, y, 2, 0, 1, supportZ, deltaCostsZ, supportX, supportY); }
+    void findFullSupportX()
+    {
+        if (y->wcspIndex < z->wcspIndex)
+            findFullSupport(Functor_getCostXYZ(*this), Functor_getCostXZY(*this), Functor_getCostYZX(*this), Functor_getCostWithBinariesXYZ(*this), Functor_addCostXYZ(*this), Functor_addCostXZY(*this), Functor_addCostYZX(*this), functionalX, Functor_getFunctionXYZ(*this), functionalY, Functor_getFunctionYXZ(*this), functionalZ, Functor_getFunctionZXY(*this), x, y, z, 0, 1, 2, supportX, deltaCostsX, supportY, deltaCostsY, supportZ, deltaCostsZ, xy, xz, yz);
+        else
+            findFullSupport(Functor_getCostXZY(*this), Functor_getCostXYZ(*this), Functor_getCostZYX(*this), Functor_getCostWithBinariesXZY(*this), Functor_addCostXZY(*this), Functor_addCostXYZ(*this), Functor_addCostZYX(*this), functionalX, Functor_getFunctionXZY(*this), functionalZ, Functor_getFunctionZXY(*this), functionalY, Functor_getFunctionYXZ(*this), x, z, y, 0, 2, 1, supportX, deltaCostsX, supportZ, deltaCostsZ, supportY, deltaCostsY, xz, xy, yz);
+    }
+    void findFullSupportY()
+    {
+        if (x->wcspIndex < z->wcspIndex)
+            findFullSupport(Functor_getCostYXZ(*this), Functor_getCostYZX(*this), Functor_getCostXZY(*this), Functor_getCostWithBinariesYXZ(*this), Functor_addCostYXZ(*this), Functor_addCostYZX(*this), Functor_addCostXZY(*this), functionalY, Functor_getFunctionYXZ(*this), functionalX, Functor_getFunctionXYZ(*this), functionalZ, Functor_getFunctionZYX(*this), y, x, z, 1, 0, 2, supportY, deltaCostsY, supportX, deltaCostsX, supportZ, deltaCostsZ, xy, yz, xz);
+        else
+            findFullSupport(Functor_getCostYZX(*this), Functor_getCostYXZ(*this), Functor_getCostZXY(*this), Functor_getCostWithBinariesYZX(*this), Functor_addCostYZX(*this), Functor_addCostYXZ(*this), Functor_addCostZXY(*this), functionalY, Functor_getFunctionYZX(*this), functionalZ, Functor_getFunctionZYX(*this), functionalX, Functor_getFunctionXYZ(*this), y, z, x, 1, 2, 0, supportY, deltaCostsY, supportZ, deltaCostsZ, supportX, deltaCostsX, yz, xy, xz);
+    }
+    void findFullSupportZ()
+    {
+        if (x->wcspIndex < y->wcspIndex)
+            findFullSupport(Functor_getCostZXY(*this), Functor_getCostZYX(*this), Functor_getCostXYZ(*this), Functor_getCostWithBinariesZXY(*this), Functor_addCostZXY(*this), Functor_addCostZYX(*this), Functor_addCostXYZ(*this), functionalZ, Functor_getFunctionZXY(*this), functionalX, Functor_getFunctionXZY(*this), functionalY, Functor_getFunctionYZX(*this), z, x, y, 2, 0, 1, supportZ, deltaCostsZ, supportX, deltaCostsX, supportY, deltaCostsY, xz, yz, xy);
+        else
+            findFullSupport(Functor_getCostZYX(*this), Functor_getCostZXY(*this), Functor_getCostYXZ(*this), Functor_getCostWithBinariesZYX(*this), Functor_addCostZYX(*this), Functor_addCostZXY(*this), Functor_addCostYXZ(*this), functionalZ, Functor_getFunctionZYX(*this), functionalY, Functor_getFunctionYZX(*this), functionalX, Functor_getFunctionXZY(*this), z, y, x, 2, 1, 0, supportZ, deltaCostsZ, supportY, deltaCostsY, supportX, deltaCostsX, yz, xz, xy);
+    }
+    bool verifyX() { return verify(x, y, z); }
+    bool verifyY() { return verify(y, x, z); }
+    bool verifyZ() { return verify(z, x, y); }
+
+public:
+    TernaryConstraint(WCSP* wcsp,
+        EnumeratedVariable* xx,
+        EnumeratedVariable* yy,
+        EnumeratedVariable* zz,
+        BinaryConstraint* xy,
+        BinaryConstraint* xz,
+        BinaryConstraint* yz,
+        vector<Cost>& tab);
+
+    TernaryConstraint(WCSP* wcsp);
+
+    void setBinaries(BinaryConstraint* xyin, BinaryConstraint* xzin, BinaryConstraint* yzin)
+    {
+        xy = xyin;
+        xz = xzin;
+        yz = yzin;
+    }
+
+    BinaryConstraint* xy;
+    BinaryConstraint* xz;
+    BinaryConstraint* yz;
+
+    ~TernaryConstraint() {}
+
+    bool extension() const FINAL { return true; }
+    bool isTernary() const FINAL { return true; }
+
+    Cost getCost(Value vx, Value vy, Value vz) const
+    {
+        unsigned int ix = x->toIndex(vx);
+        unsigned int iy = y->toIndex(vy);
+        unsigned int iz = z->toIndex(vz);
+        Cost res = ((costs.empty()) ? ((vx == functionX[iy * sizeZ + iz]) ? (costsYZ[iy * sizeZ + iz] - deltaCostsX[ix] - deltaCostsY[iy] - deltaCostsZ[iz]) : top) : (costs[ix * sizeY * sizeZ + iy * sizeZ + iz] - deltaCostsX[ix] - deltaCostsY[iy] - deltaCostsZ[iz]));
+        assert(res >= MIN_COST);
+        return res;
+    }
+
+    Cost getCost(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const
+    {
+        unsigned int vindex[3];
+        vindex[getIndex(xx)] = xx->toIndex(vx);
+        vindex[getIndex(yy)] = yy->toIndex(vy);
+        vindex[getIndex(zz)] = zz->toIndex(vz);
+        Cost res = ((costs.empty()) ? ((x->toValue(vindex[0]) == functionX[vindex[1] * sizeZ + vindex[2]]) ? (costsYZ[vindex[1] * sizeZ + vindex[2]] - deltaCostsX[vindex[0]] - deltaCostsY[vindex[1]] - deltaCostsZ[vindex[2]]) : top) : (costs[vindex[0] * sizeY * sizeZ + vindex[1] * sizeZ + vindex[2]] - deltaCostsX[vindex[0]] - deltaCostsY[vindex[1]] - deltaCostsZ[vindex[2]]));
+        assert(res >= MIN_COST);
+        return res;
+    }
+
+    Cost getCost() FINAL
+    {
+        Value vX = x->getValue();
+        Value vY = y->getValue();
+        Value vZ = z->getValue();
+        return getCost(vX, vY, vZ);
+    }
+
+    Cost getCostWithBinaries(Value vx, Value vy, Value vz) const
+    {
+        unsigned int ix = x->toIndex(vx);
+        unsigned int iy = y->toIndex(vy);
+        unsigned int iz = z->toIndex(vz);
+        Cost res = ((costs.empty()) ? ((vx == functionX[iy * sizeZ + iz]) ? (costsYZ[iy * sizeZ + iz] - deltaCostsX[ix] - deltaCostsY[iy] - deltaCostsZ[iz]) : top) : (costs[ix * sizeY * sizeZ + iy * sizeZ + iz] - deltaCostsX[ix] - deltaCostsY[iy] - deltaCostsZ[iz]));
+        if (xy->connected())
+            res += xy->getCost(x, y, vx, vy);
+        if (xz->connected())
+            res += xz->getCost(x, z, vx, vz);
+        if (yz->connected())
+            res += yz->getCost(y, z, vy, vz);
+        assert(res >= MIN_COST);
+        return res;
+    }
+
+    Cost getCostWithBinaries(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const
+    {
+        pair<unsigned int, Value> vindex[3];
+        vindex[getIndex(xx)] = pair<unsigned int, Value>(xx->toIndex(vx), vx);
+        vindex[getIndex(yy)] = pair<unsigned int, Value>(yy->toIndex(vy), vy);
+        vindex[getIndex(zz)] = pair<unsigned int, Value>(zz->toIndex(vz), vz);
+        Cost res = ((costs.empty()) ? ((vindex[0].second == functionX[vindex[1].first * sizeZ + vindex[2].first]) ? (costsYZ[vindex[1].first * sizeZ + vindex[2].first] - deltaCostsX[vindex[0].first] - deltaCostsY[vindex[1].first] - deltaCostsZ[vindex[2].first]) : top) : (costs[vindex[0].first * sizeY * sizeZ + vindex[1].first * sizeZ + vindex[2].first] - deltaCostsX[vindex[0].first] - deltaCostsY[vindex[1].first] - deltaCostsZ[vindex[2].first]));
+        if (xy->connected())
+            res += xy->getCost(x, y, vindex[0].second, vindex[1].second);
+        if (xz->connected())
+            res += xz->getCost(x, z, vindex[0].second, vindex[2].second);
+        if (yz->connected())
+            res += yz->getCost(y, z, vindex[1].second, vindex[2].second);
+        assert(res >= MIN_COST);
+        return res;
+    }
+
+    void addCosts(TernaryConstraint* xyz)
+    {
+        unsigned int ix, iy, iz;
+        for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+            for (EnumeratedVariable::iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+                for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+                    ix = x->toIndex(*iterx);
+                    iy = y->toIndex(*itery);
+                    iz = z->toIndex(*iterz);
+                    // if(costs[ix*sizeY*sizeZ + iy*sizeZ + iz] < wcsp->getUb()) // BUG with BTD (local ub, deltaCosts missing)
+                    if (costs.empty()) {
+                        if (*iterx == functionX[iy * sizeZ + iz])
+                            costsYZ[iy * sizeZ + iz] += xyz->getCost(x, y, z, *iterx, *itery, *iterz);
+                    } else
+                        costs[ix * sizeY * sizeZ + iy * sizeZ + iz] += xyz->getCost(x, y, z, *iterx, *itery, *iterz);
+                }
+            }
+        }
+    }
+
+    void addCosts(EnumeratedVariable* xin, EnumeratedVariable* yin, EnumeratedVariable* zin, vector<Cost>& costsin)
+    {
+        assert(costsin.size() <= costs.size() || functionalX);
+
+        unsigned int vindex[3];
+        unsigned int sizeYin = yin->getDomainInitSize();
+        unsigned int sizeZin = zin->getDomainInitSize();
+
+        for (EnumeratedVariable::iterator itery = yin->begin(); itery != yin->end(); ++itery) {
+            for (EnumeratedVariable::iterator iterz = zin->begin(); iterz != zin->end(); ++iterz) {
+                for (EnumeratedVariable::iterator iterx = xin->begin(); iterx != xin->end(); ++iterx) {
+
+                    unsigned int vxin = xin->toIndex(*iterx);
+                    unsigned int vyin = yin->toIndex(*itery);
+                    unsigned int vzin = zin->toIndex(*iterz);
+
+                    vindex[getIndex(xin)] = vxin;
+                    vindex[getIndex(yin)] = vyin;
+                    vindex[getIndex(zin)] = vzin;
+
+                    // if(costs[vindex[0]*sizeY*sizeZ + vindex[1]*sizeZ + vindex[2]]  < wcsp->getUb()) // BUG with BTD (local ub, deltaCosts missing)
+                    if (costs.empty()) {
+                        if (x->toValue(vindex[0]) == functionX[vindex[1] * sizeZ + vindex[2]])
+                            costsYZ[vindex[1] * sizeZ + vindex[2]] += costsin[vxin * sizeYin * sizeZin + vyin * sizeZin + vzin];
+                    } else
+                        costs[vindex[0] * sizeY * sizeZ + vindex[1] * sizeZ + vindex[2]] += costsin[vxin * sizeYin * sizeZin + vyin * sizeZin + vzin];
+                }
+            }
+        }
+    }
+
+    void addCost(Value vxi, Value vyi, Value vzi, Cost c)
+    {
+        assert(c >= MIN_COST || !LUBTEST(getCost(vxi, vyi, vzi), -c));
+        unsigned int vx = x->toIndex(vxi);
+        unsigned int vy = y->toIndex(vyi);
+        unsigned int vz = z->toIndex(vzi);
+        if (costs.empty()) {
+            if (vxi == functionX[vy * sizeZ + vz])
+                costsYZ[vy * sizeZ + vz] += c;
+        } else {
+            if (c < MIN_COST && (functionalX || functionalY || functionalZ)) {
+                if ((!functionalX || getFunctionX(vyi, vzi) == vxi) && (!functionalY || getFunctionY(vxi, vzi) == vyi) && (!functionalZ || getFunctionZ(vxi, vyi) == vzi)) {
+                    costs[vx * sizeY * sizeZ + vy * sizeZ + vz] += c; // does not subtract infinity if known by a functional constraint
+                }
+            } else {
+                costs[vx * sizeY * sizeZ + vy * sizeZ + vz] += c;
+            }
+        }
+    }
+
+    void addCost(EnumeratedVariable* xin, EnumeratedVariable* yin, EnumeratedVariable* zin, Value vxi, Value vyi, Value vzi, Cost c)
+    {
+        assert(c >= MIN_COST || !LUBTEST(getCost(xin, yin, zin, vxi, vyi, vzi), -c));
+
+        unsigned int vindex[3];
+        unsigned int vx = xin->toIndex(vxi);
+        unsigned int vy = yin->toIndex(vyi);
+        unsigned int vz = zin->toIndex(vzi);
+
+        vindex[getIndex(xin)] = vx;
+        vindex[getIndex(yin)] = vy;
+        vindex[getIndex(zin)] = vz;
+
+        if (costs.empty()) {
+            if (x->toValue(vindex[0]) == functionX[vindex[1] * sizeZ + vindex[2]])
+                costsYZ[vindex[1] * sizeZ + vindex[2]] += c;
+        } else {
+            if (c < MIN_COST && (functionalX || functionalY || functionalZ)) {
+                Value valxi = x->toValue(vindex[0]);
+                Value valyi = y->toValue(vindex[1]);
+                Value valzi = z->toValue(vindex[2]);
+                if ((!functionalX || getFunctionX(valyi, valzi) == valxi) && (!functionalY || getFunctionY(valxi, valzi) == valyi) && (!functionalZ || getFunctionZ(valxi, valyi) == valzi)) {
+                    costs[vindex[0] * sizeY * sizeZ + vindex[1] * sizeZ + vindex[2]] += c; // does not subtract infinity if known by a functional constraint
+                }
+            } else {
+                costs[vindex[0] * sizeY * sizeZ + vindex[1] * sizeZ + vindex[2]] += c;
+            }
+        }
+    }
+
+    void setcost(Value vxi, Value vyi, Value vzi, Cost c)
+    {
+        unsigned int vx = x->toIndex(vxi);
+        unsigned int vy = y->toIndex(vyi);
+        unsigned int vz = z->toIndex(vzi);
+        if (costs.empty()) {
+            if (vxi == functionX[vy * sizeZ + vz])
+                costsYZ[vy * sizeZ + vz] = c;
+            else if (!CUT(wcsp->getLb() + c, wcsp->getUb())) {
+                cerr << "cannot reset a forbidden tuple in ternary functional cost functions!" << endl;
+                exit(EXIT_FAILURE);
+            }
+        } else
+            costs[vx * sizeY * sizeZ + vy * sizeZ + vz] = c;
+    }
+
+    void setcost(EnumeratedVariable* xin, EnumeratedVariable* yin, EnumeratedVariable* zin, Value vxi, Value vyi, Value vzi, Cost c)
+    {
+        unsigned int vindex[3];
+        unsigned int vx = xin->toIndex(vxi);
+        unsigned int vy = yin->toIndex(vyi);
+        unsigned int vz = zin->toIndex(vzi);
+        vindex[getIndex(xin)] = vx;
+        vindex[getIndex(yin)] = vy;
+        vindex[getIndex(zin)] = vz;
+        if (costs.empty()) {
+            if (x->toValue(vindex[0]) == functionX[vindex[1] * sizeZ + vindex[2]])
+                costsYZ[vindex[1] * sizeZ + vindex[2]] = c;
+            else if (!CUT(c, wcsp->getUb())) {
+                cerr << "cannot reset a forbidden tuple in ternary functional cost functions!" << endl;
+                exit(EXIT_FAILURE);
+            }
+        } else
+            costs[vindex[0] * sizeY * sizeZ + vindex[1] * sizeZ + vindex[2]] = c;
+    }
+
+    Cost getMaxFiniteCost()
+    {
+        Cost ub = wcsp->getUb();
+        Cost maxcost = MIN_COST;
+        for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+            for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                    Cost cost = getCost(*iterX, *iterY, *iterZ);
+                    if (cost < ub && cost > maxcost)
+                        maxcost = cost;
+                }
+            }
+        }
+        return maxcost;
+    }
+
+    void setInfiniteCost(Cost ub)
+    {
+        Cost mult_ub = ((ub < (MAX_COST / MEDIUM_COST)) ? (max(LARGE_COST, ub * MEDIUM_COST)) : ub);
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            unsigned int ix = x->toIndex(*iterx);
+            for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+                unsigned int iy = y->toIndex(*itery);
+                for (EnumeratedVariable::iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+                    unsigned int iz = z->toIndex(*iterz);
+                    if (costs.empty()) {
+                        if (*iterx == functionX[iy * sizeZ + iz]) {
+                            Cost cost = costsYZ[iy * sizeZ + iz];
+                            Cost delta = deltaCostsX[ix] + deltaCostsY[iy] + deltaCostsZ[iz];
+                            if (CUT(cost - delta, ub))
+                                costsYZ[iy * sizeZ + iz] = mult_ub + delta;
+                        }
+                    } else {
+                        Cost cost = costs[ix * sizeY * sizeZ + iy * sizeZ + iz];
+                        Cost delta = deltaCostsX[ix] + deltaCostsY[iy] + deltaCostsZ[iz];
+                        if (CUT(cost - delta, ub))
+                            costs[ix * sizeY * sizeZ + iy * sizeZ + iz] = mult_ub + delta;
+                    }
+                }
+            }
+        }
+        if (costs.empty()) {
+            if (CUT(top, ub))
+                top = mult_ub;
+        }
+    }
+
+    void resetSupports()
+    {
+        supportX.assign(supportX.size(), make_pair(y->getInf(), z->getInf()));
+        supportY.assign(supportY.size(), make_pair(x->getInf(), z->getInf()));
+        supportZ.assign(supportZ.size(), make_pair(x->getInf(), y->getInf()));
+    }
+
+    pair<Value, Value> getSupport(EnumeratedVariable* var, Value v)
+    {
+        if (var == x)
+            return supportX[x->toIndex(v)];
+        else if (var == y)
+            return supportY[y->toIndex(v)];
+        else
+            return supportZ[z->toIndex(v)];
+    }
+
+    void setSupport(EnumeratedVariable* var, Value v, pair<Value, Value> s)
+    {
+        if (var == x)
+            supportX[x->toIndex(v)] = s;
+        else if (var == y)
+            supportY[y->toIndex(v)] = s;
+        else
+            supportZ[z->toIndex(v)] = s;
+    }
+
+    void propagate()
+    {
+        if (x->assigned()) {
+            assign(0);
+            return;
+        }
+        if (y->assigned()) {
+            assign(1);
+            return;
+        }
+        if (z->assigned()) {
+            assign(2);
+            return;
+        }
+        x->queueAC();
+        y->queueAC();
+        z->queueAC();
+        x->queueDAC();
+        y->queueDAC();
+        z->queueDAC();
+        x->queueEAC1();
+        y->queueEAC1();
+        z->queueEAC1();
+        if (ToulBar2::FullEAC)
+            reviseEACGreedySolution();
+    }
+
+    void remove(int varIndex)
+    {
+        switch (varIndex) {
+        case 0:
+            y->queueDEE();
+            z->queueDEE();
+            if (ToulBar2::LcLevel == LC_AC || getDACScopeIndex() != 1)
+                findSupportY();
+            if (connected() && (ToulBar2::LcLevel == LC_AC || getDACScopeIndex() != 2))
+                findSupportZ();
+            break;
+        case 1:
+            x->queueDEE();
+            z->queueDEE();
+            if (ToulBar2::LcLevel == LC_AC || getDACScopeIndex() != 0)
+                findSupportX();
+            if (connected() && (ToulBar2::LcLevel == LC_AC || getDACScopeIndex() != 2))
+                findSupportZ();
+            break;
+        case 2:
+            x->queueDEE();
+            y->queueDEE();
+            if (ToulBar2::LcLevel == LC_AC || getDACScopeIndex() != 0)
+                findSupportX();
+            if (connected() && (ToulBar2::LcLevel == LC_AC || getDACScopeIndex() != 1))
+                findSupportY();
+            break;
+        }
+    }
+
+    void projectFromZero(int varIndex)
+    {
+        switch (varIndex) {
+        case 0:
+            if (getDACScopeIndex() == 1)
+                findFullSupportY();
+            else if (getDACScopeIndex() == 2)
+                findFullSupportZ();
+            break;
+        case 1:
+            if (getDACScopeIndex() == 0)
+                findFullSupportX();
+            else if (getDACScopeIndex() == 2)
+                findFullSupportZ();
+            break;
+        case 2:
+            if (getDACScopeIndex() == 0)
+                findFullSupportX();
+            else if (getDACScopeIndex() == 1)
+                findFullSupportY();
+            break;
+        }
+    }
+
+    //Trick! instead of doing remove(index) now, let AC queue do the job.
+    //So several incdec events on the same constraint can be merged into one AC event
+    void increase(int index)
+    {
+        if (index == 0)
+            x->queueAC();
+        else if (index == 1)
+            y->queueAC();
+        else
+            z->queueAC();
+    }
+    void decrease(int index)
+    {
+        if (index == 0)
+            x->queueAC();
+        else if (index == 1)
+            y->queueAC();
+        else
+            z->queueAC();
+    }
+
+    void assign(int varIndex)
+    {
+        deconnect();
+        switch (varIndex) {
+        case 0:
+            projectTernaryBinary(Functor_getCostXYZ(*this), Functor_getCostYZX(*this), Functor_addCostYZX(*this), functionalX, Functor_getFunctionXYZ(*this), x, y, z, yz);
+            break;
+        case 1:
+            projectTernaryBinary(Functor_getCostYXZ(*this), Functor_getCostXZY(*this), Functor_addCostXZY(*this), functionalY, Functor_getFunctionYXZ(*this), y, x, z, xz);
+            break;
+        case 2:
+            projectTernaryBinary(Functor_getCostZXY(*this), Functor_getCostXYZ(*this), Functor_addCostXYZ(*this), functionalZ, Functor_getFunctionZXY(*this), z, x, y, xy);
+            break;
+        }
+    }
+
+    bool checkEACGreedySolution(int index = -1, Value a = 0) FINAL
+    {
+        assert(x->canbe((getIndex(x) == index) ? a : x->getSupport()));
+        assert(x->getCost((getIndex(x) == index) ? a : x->getSupport()) == MIN_COST);
+        assert(y->canbe((getIndex(y) == index) ? a : y->getSupport()));
+        assert(y->getCost((getIndex(y) == index) ? a : y->getSupport()) == MIN_COST);
+        assert(z->canbe((getIndex(z) == index) ? a : z->getSupport()));
+        assert(z->getCost((getIndex(z) == index) ? a : z->getSupport()) == MIN_COST);
+        return (getCostWithBinaries(x, y, z, (getIndex(x) == index) ? a : x->getSupport(), (getIndex(y) == index) ? a : y->getSupport(), (getIndex(z) == index) ? a : z->getSupport()) == MIN_COST);
+    }
+
+    bool reviseEACGreedySolution(int index = -1, Value a = 0) FINAL
+    {
+        bool result = checkEACGreedySolution(index, a);
+        if (!result) {
+            if (index >= 0)
+                getVar(index)->unsetFullEAC();
+            else {
+                x->unsetFullEAC();
+                y->unsetFullEAC();
+                z->unsetFullEAC();
+            }
+        }
+        return result;
+    }
+
+    void fillEAC2(EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z,
+        vector<pair<Value, Value>>& supportX)
+    {
+        assert(x->canbe(x->getSupport()));
+        assert(getIndex(y) < getIndex(z));
+        unsigned int xindex = x->toIndex(x->getSupport());
+        Value ysupport = supportX[xindex].first;
+        Value zsupport = supportX[xindex].second;
+        if (y->cannotbe(ysupport) || z->cannotbe(zsupport) || getCostWithBinaries(x, y, z, x->getSupport(), ysupport, zsupport) + y->getCost(ysupport) + z->getCost(zsupport) > MIN_COST || (ToulBar2::vacValueHeuristic && Store::getDepth() < abs(ToulBar2::vac))) {
+            x->queueEAC2();
+        }
+    }
+
+    void fillEAC2(int varIndex)
+    {
+        assert(!isDuplicate());
+        switch (varIndex) {
+        case 0:
+            fillEAC2(y, x, z, supportY);
+            fillEAC2(z, x, y, supportZ);
+            break;
+        case 1:
+            fillEAC2(x, y, z, supportX);
+            fillEAC2(z, x, y, supportZ);
+            break;
+        case 2:
+            fillEAC2(x, y, z, supportX);
+            fillEAC2(y, x, z, supportY);
+            break;
+        }
+    }
+
+    bool isEAC(int varIndex, Value a)
+    {
+        assert(!isDuplicate());
+        if (ToulBar2::QueueComplexity && varIndex == getDACScopeIndex() && !ToulBar2::FullEAC)
+            return true;
+        switch (varIndex) {
+        case 0:
+            return isEAC(Functor_getCostWithBinariesXYZ(*this), functionalY, Functor_getFunctionYXZ(*this), functionalZ, Functor_getFunctionZXY(*this), x, a, y, z, supportX);
+            break;
+        case 1:
+            return isEAC(Functor_getCostWithBinariesYXZ(*this), functionalX, Functor_getFunctionXYZ(*this), functionalZ, Functor_getFunctionZYX(*this), y, a, x, z, supportY);
+            break;
+        case 2:
+            return isEAC(Functor_getCostWithBinariesZXY(*this), functionalX, Functor_getFunctionXZY(*this), functionalY, Functor_getFunctionYZX(*this), z, a, x, y, supportZ);
+            break;
+        default:
+            exit(EXIT_FAILURE);
+        }
+        return true;
+    }
+
+    void findFullSupportEAC(int varIndex)
+    {
+        assert(!isDuplicate());
+        if (ToulBar2::QueueComplexity && varIndex == getDACScopeIndex() && !ToulBar2::FullEAC)
+            return;
+        assert(!wcsp->getTreeDec() || (cluster == xy->getCluster() && cluster == xz->getCluster() && cluster == yz->getCluster()));
+        switch (varIndex) {
+        case 0:
+            findFullSupportX();
+            break;
+        case 1:
+            findFullSupportY();
+            break;
+        case 2:
+            findFullSupportZ();
+            break;
+        }
+    }
+
+    bool verify();
+
+    pair<pair<Cost, Cost>, pair<Cost, Cost>> getMaxCost(int varIndex, Value a, Value b);
+
+    template <typename T1, typename T2, typename T3, typename T4>
+    void projectTernaryBinary(T1 getCost, T2 getCostYZX, T3 addCostYZX, bool functionalX, T4 getFunctionX, EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, BinaryConstraint* yzin);
+
+    void projectTernary()
+    {
+        if (x->getDACOrder() < y->getDACOrder() && y->getDACOrder() < z->getDACOrder()) {
+            projectTernaryBinary(Functor_getCostZXY(*this), Functor_getCostXYZ(*this), Functor_addCostXYZ(*this), functionalZ, Functor_getFunctionZXY(*this), z, x, y, xy);
+            if (connected())
+                projectTernaryBinary(Functor_getCostYXZ(*this), Functor_getCostXZY(*this), Functor_addCostXZY(*this), functionalY, Functor_getFunctionYXZ(*this), y, x, z, xz);
+            if (connected())
+                projectTernaryBinary(Functor_getCostXYZ(*this), Functor_getCostYZX(*this), Functor_addCostYZX(*this), functionalX, Functor_getFunctionXYZ(*this), x, y, z, yz);
+        } else if (x->getDACOrder() < z->getDACOrder() && z->getDACOrder() < y->getDACOrder()) {
+            projectTernaryBinary(Functor_getCostYXZ(*this), Functor_getCostXZY(*this), Functor_addCostXZY(*this), functionalY, Functor_getFunctionYXZ(*this), y, x, z, xz);
+            if (connected())
+                projectTernaryBinary(Functor_getCostZXY(*this), Functor_getCostXYZ(*this), Functor_addCostXYZ(*this), functionalZ, Functor_getFunctionZXY(*this), z, x, y, xy);
+            if (connected())
+                projectTernaryBinary(Functor_getCostXYZ(*this), Functor_getCostYZX(*this), Functor_addCostYZX(*this), functionalX, Functor_getFunctionXYZ(*this), x, y, z, yz);
+        } else if (y->getDACOrder() < x->getDACOrder() && x->getDACOrder() < z->getDACOrder()) {
+            projectTernaryBinary(Functor_getCostZXY(*this), Functor_getCostXYZ(*this), Functor_addCostXYZ(*this), functionalZ, Functor_getFunctionZXY(*this), z, x, y, xy);
+            if (connected())
+                projectTernaryBinary(Functor_getCostXYZ(*this), Functor_getCostYZX(*this), Functor_addCostYZX(*this), functionalX, Functor_getFunctionXYZ(*this), x, y, z, yz);
+            if (connected())
+                projectTernaryBinary(Functor_getCostYXZ(*this), Functor_getCostXZY(*this), Functor_addCostXZY(*this), functionalY, Functor_getFunctionYXZ(*this), y, x, z, xz);
+        } else if (y->getDACOrder() < z->getDACOrder() && z->getDACOrder() < x->getDACOrder()) {
+            projectTernaryBinary(Functor_getCostXYZ(*this), Functor_getCostYZX(*this), Functor_addCostYZX(*this), functionalX, Functor_getFunctionXYZ(*this), x, y, z, yz);
+            if (connected())
+                projectTernaryBinary(Functor_getCostZXY(*this), Functor_getCostXYZ(*this), Functor_addCostXYZ(*this), functionalZ, Functor_getFunctionZXY(*this), z, x, y, xy);
+            if (connected())
+                projectTernaryBinary(Functor_getCostYXZ(*this), Functor_getCostXZY(*this), Functor_addCostXZY(*this), functionalY, Functor_getFunctionYXZ(*this), y, x, z, xz);
+        } else if (z->getDACOrder() < x->getDACOrder() && x->getDACOrder() < y->getDACOrder()) {
+            projectTernaryBinary(Functor_getCostYXZ(*this), Functor_getCostXZY(*this), Functor_addCostXZY(*this), functionalY, Functor_getFunctionYXZ(*this), y, x, z, xz);
+            if (connected())
+                projectTernaryBinary(Functor_getCostXYZ(*this), Functor_getCostYZX(*this), Functor_addCostYZX(*this), functionalX, Functor_getFunctionXYZ(*this), x, y, z, yz);
+            if (connected())
+                projectTernaryBinary(Functor_getCostZXY(*this), Functor_getCostXYZ(*this), Functor_addCostXYZ(*this), functionalZ, Functor_getFunctionZXY(*this), z, x, y, xy);
+        } else if (z->getDACOrder() < y->getDACOrder() && y->getDACOrder() < x->getDACOrder()) {
+            projectTernaryBinary(Functor_getCostXYZ(*this), Functor_getCostYZX(*this), Functor_addCostYZX(*this), functionalX, Functor_getFunctionXYZ(*this), x, y, z, yz);
+            if (connected())
+                projectTernaryBinary(Functor_getCostYXZ(*this), Functor_getCostXZY(*this), Functor_addCostXZY(*this), functionalY, Functor_getFunctionYXZ(*this), y, x, z, xz);
+            if (connected())
+                projectTernaryBinary(Functor_getCostZXY(*this), Functor_getCostXYZ(*this), Functor_addCostXYZ(*this), functionalZ, Functor_getFunctionZXY(*this), z, x, y, xy);
+        } else
+            exit(EXIT_FAILURE);
+    }
+
+    void extendTernary()
+    { // extend binary cost functions to the ternary cost function
+        Cost c;
+        bool isbincost = false;
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+                for (EnumeratedVariable::iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+                    if (xy->connected()) {
+                        c = xy->getCost(x, y, *iterx, *itery);
+                        addCost(x, y, z, *iterx, *itery, *iterz, c);
+                        if (c > MIN_COST)
+                            isbincost = true;
+                    }
+                    if (xz->connected()) {
+                        c = xz->getCost(x, z, *iterx, *iterz);
+                        addCost(x, y, z, *iterx, *itery, *iterz, c);
+                        if (c > MIN_COST)
+                            isbincost = true;
+                    }
+                    if (yz->connected()) {
+                        c = yz->getCost(y, z, *itery, *iterz);
+                        addCost(x, y, z, *iterx, *itery, *iterz, c);
+                        if (c > MIN_COST)
+                            isbincost = true;
+                    }
+                }
+            }
+        }
+
+        xy->clearCosts();
+        xz->clearCosts();
+        yz->clearCosts();
+
+        xy->deconnect(true);
+        xz->deconnect(true);
+        yz->deconnect(true);
+
+        // extend unary costs to the ternary cost function
+        if (isbincost && ToulBar2::LcLevel >= LC_FDAC) {
+            for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx)
+                extend(x, *iterx, x->getCost(*iterx), deltaCostsX);
+            for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery)
+                extend(y, *itery, y->getCost(*itery), deltaCostsY);
+            for (EnumeratedVariable::iterator iterz = z->begin(); iterz != z->end(); ++iterz)
+                extend(z, *iterz, z->getCost(*iterz), deltaCostsZ);
+        }
+    }
+
+    BinaryConstraint* commonBinary(TernaryConstraint* t)
+    {
+        if ((t->getIndex(xy->getVar(0)) >= 0) && (t->getIndex(xy->getVar(1)) >= 0))
+            return xy;
+        else if ((t->getIndex(xz->getVar(0)) >= 0) && (t->getIndex(xz->getVar(1)) >= 0))
+            return xz;
+        else if ((t->getIndex(yz->getVar(0)) >= 0) && (t->getIndex(yz->getVar(1)) >= 0))
+            return yz;
+        return NULL;
+    }
+
+    double computeTightness();
+
+    // add weights from auxilliary binary constraints if they are deconnected (otherwise their weight will be taken into account in the list of active constraints for variable varIndex)
+    // use weights minus one due to default initialization of conflictWeight to 1
+    Long getConflictWeight(int varIndex) const
+    {
+        switch (varIndex) {
+        case 0:
+            return Constraint::getConflictWeight() + ((xy->deconnected()) ? (xy->getConflictWeight(xy->getIndex(x)) - 1) : 0) + ((xz->deconnected()) ? (xz->getConflictWeight(xz->getIndex(x)) - 1) : 0);
+            break;
+        case 1:
+            return Constraint::getConflictWeight() + ((xy->deconnected()) ? (xy->getConflictWeight(xy->getIndex(y)) - 1) : 0) + ((yz->deconnected()) ? (yz->getConflictWeight(yz->getIndex(y)) - 1) : 0);
+            break;
+        case 2:
+            return Constraint::getConflictWeight() + ((xz->deconnected()) ? (xz->getConflictWeight(xz->getIndex(z)) - 1) : 0) + ((yz->deconnected()) ? (yz->getConflictWeight(yz->getIndex(z)) - 1) : 0);
+            break;
+        }
+        return Constraint::getConflictWeight();
+    }
+    Long getConflictWeight() const
+    {
+        return Constraint::getConflictWeight() + ((xy && xy->deconnected()) ? (xy->getConflictWeight() - 1) : 0) + ((xz && xz->deconnected()) ? (xz->getConflictWeight() - 1) : 0) + ((yz && yz->deconnected()) ? (yz->getConflictWeight() - 1) : 0);
+    }
+
+    EnumeratedVariable* xvar;
+    EnumeratedVariable* yvar;
+    EnumeratedVariable* zvar;
+    EnumeratedVariable::iterator itvx;
+    EnumeratedVariable::iterator itvy;
+    EnumeratedVariable::iterator itvz;
+
+    void first()
+    {
+        itvx = x->begin();
+        itvy = y->begin();
+        itvz = z->begin();
+        xvar = x;
+        yvar = y;
+        zvar = z;
+    }
+
+    bool next(Tuple& t, Cost& c)
+    {
+        Tuple tch(3, 0);
+        if (itvx != xvar->end()) {
+            unsigned int ix = xvar->toIndex(*itvx);
+            tch[0] = ix;
+            if (itvy != yvar->end()) {
+                unsigned int iy = yvar->toIndex(*itvy);
+                tch[1] = iy;
+                if (itvz != zvar->end()) {
+                    unsigned int iz = zvar->toIndex(*itvz);
+                    tch[2] = iz;
+                    t = tch;
+                    c = getCost(xvar, yvar, zvar, *itvx, *itvy, *itvz);
+                    ++itvz;
+                    return true;
+                } else {
+                    ++itvy;
+                    itvz = zvar->begin();
+                    return next(t, c);
+                }
+            } else {
+                ++itvx;
+                itvy = yvar->begin();
+                return next(t, c);
+            }
+        }
+        return false;
+    }
+
+    void first(EnumeratedVariable* alpha, EnumeratedVariable* beta)
+    {
+        int pos_alpha = getIndex(alpha);
+        int pos_beta = getIndex(beta);
+        xvar = NULL;
+        yvar = NULL;
+        zvar = NULL;
+        switch (pos_alpha) {
+        case 0:
+            itvz = x->begin();
+            zvar = x;
+            break;
+        case 1:
+            itvz = y->begin();
+            zvar = y;
+            break;
+        case 2:
+            itvz = z->begin();
+            zvar = z;
+            break;
+        }
+        switch (pos_beta) {
+        case 0:
+            itvy = x->begin();
+            yvar = x;
+            break;
+        case 1:
+            itvy = y->begin();
+            yvar = y;
+            break;
+        case 2:
+            itvy = z->begin();
+            yvar = z;
+            break;
+        }
+        switch (3 - pos_alpha - pos_beta) {
+        case 0:
+            itvx = x->begin();
+            xvar = x;
+            break;
+        case 1:
+            itvx = y->begin();
+            xvar = y;
+            break;
+        case 2:
+            itvx = z->begin();
+            xvar = z;
+            break;
+        }
+        assert(xvar != yvar);
+        assert(xvar != zvar);
+        assert(yvar != zvar);
+    }
+    bool separability(EnumeratedVariable* alpha, EnumeratedVariable* beta);
+    void separate(EnumeratedVariable* a, EnumeratedVariable* c);
+
+    void firstlex() { first(); }
+    bool nextlex(Tuple& t, Cost& c) { return next(t, c); }
+
+    void setTuple(const Tuple& t, Cost c) FINAL
+    {
+        Value v0 = x->toValue(t[0]);
+        Value v1 = y->toValue(t[1]);
+        Value v2 = z->toValue(t[2]);
+        setcost(x, y, z, v0, v1, v2, c);
+    }
+
+    //    void setTuple( unsigned int* t, Cost c ) {
+    //        Value v0 = x->toValue(t[0]);
+    //        Value v1 = y->toValue(t[1]);
+    //        Value v2 = z->toValue(t[2]);
+    //        setcost( x, y, z, v0, v1, v2, c );
+    //    }
+    //
+    //    void addtoTuple( unsigned int* t, Cost c ) {
+    //        Value v0 = x->toValue(t[0]);
+    //        Value v1 = y->toValue(t[1]);
+    //        Value v2 = z->toValue(t[2]);
+    //        addCost( v0, v1, v2, c );
+    //    }
+
+    void addtoTuple(const Tuple& t, Cost c) FINAL
+    {
+        Value v0 = x->toValue(t[0]);
+        Value v1 = y->toValue(t[1]);
+        Value v2 = z->toValue(t[2]);
+        addCost(v0, v1, v2, c);
+    }
+
+    Cost evalsubstr(const Tuple& s, Constraint* ctr) FINAL
+    {
+        Value vals[3];
+        int count = 0;
+
+        for (int i = 0; i < 3; i++) {
+            EnumeratedVariable* var = (EnumeratedVariable*)getVar(i);
+            int ind = ctr->getIndex(var);
+            if (ind >= 0) {
+                vals[i] = var->toValue(s[ind]);
+                count++;
+            }
+        }
+        if (count == 3)
+            return getCost(vals[0], vals[1], vals[2]);
+        else
+            return MIN_COST;
+    }
+    Cost evalsubstr(const Tuple& s, NaryConstraint* ctr) FINAL { return evalsubstr(s, (Constraint*)ctr); } // NaryConstraint class undefined
+
+    void fillElimConstr(EnumeratedVariable* xin, EnumeratedVariable* yin, EnumeratedVariable* zin, Constraint* from1)
+    {
+        assert(!functionalX && costsYZ.empty());
+        x = xin;
+        y = yin;
+        z = zin;
+        sizeX = x->getDomainInitSize();
+        sizeY = y->getDomainInitSize();
+        sizeZ = z->getDomainInitSize();
+        if (sizeX > deltaCostsX.size())
+            deltaCostsX.resize(sizeX, StoreCost(MIN_COST));
+        if (sizeY > deltaCostsY.size())
+            deltaCostsY.resize(sizeY, StoreCost(MIN_COST));
+        if (sizeZ > deltaCostsZ.size())
+            deltaCostsZ.resize(sizeZ, StoreCost(MIN_COST));
+        if (sizeX > supportX.size())
+            supportX.resize(sizeX);
+        if (sizeY > supportY.size())
+            supportY.resize(sizeY);
+        if (sizeZ > supportZ.size())
+            supportZ.resize(sizeZ);
+        if ((unsigned long)sizeX * (unsigned long)sizeY * (unsigned long)sizeZ > costs.size())
+            costs.resize((size_t)sizeX * (size_t)sizeY * (size_t)sizeZ, StoreCost(MIN_COST));
+        linkX->removed = true;
+        linkY->removed = true;
+        linkZ->removed = true;
+        linkX->content.constr = this;
+        linkY->content.constr = this;
+        linkZ->content.constr = this;
+        linkX->content.scopeIndex = 0;
+        linkY->content.scopeIndex = 1;
+        linkZ->content.scopeIndex = 2;
+        setDACScopeIndex();
+        resetConflictWeight();
+        elimFrom(from1);
+    }
+
+    void fillxy();
+    void fillxz();
+    void fillyz();
+    void fillElimConstrBinaries();
+    void setDuplicates();
+
+    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+    void dump_CFN(ostream& os, bool original = true);
+    Long size() const FINAL { return (Long)sizeX * sizeY * sizeZ; }
+    Long space() const FINAL { return (Long)sizeof(StoreCost) * sizeX * sizeY * sizeZ; }
+
+    friend struct Functor_getCostXYZ;
+    friend struct Functor_getCostXZY;
+    friend struct Functor_getCostYXZ;
+    friend struct Functor_getCostYZX;
+    friend struct Functor_getCostZXY;
+    friend struct Functor_getCostZYX;
+
+    friend struct Functor_getCostWithBinariesXYZ;
+    friend struct Functor_getCostWithBinariesXZY;
+    friend struct Functor_getCostWithBinariesYXZ;
+    friend struct Functor_getCostWithBinariesYZX;
+    friend struct Functor_getCostWithBinariesZXY;
+    friend struct Functor_getCostWithBinariesZYX;
+
+    friend struct Functor_addCostXYZ;
+    friend struct Functor_addCostXZY;
+    friend struct Functor_addCostYXZ;
+    friend struct Functor_addCostYZX;
+    friend struct Functor_addCostZXY;
+    friend struct Functor_addCostZYX;
+
+    friend struct Functor_getFunctionXYZ;
+    friend struct Functor_getFunctionXZY;
+    friend struct Functor_getFunctionYXZ;
+    friend struct Functor_getFunctionYZX;
+    friend struct Functor_getFunctionZXY;
+    friend struct Functor_getFunctionZYX;
+};
+
+inline Cost Functor_getCostXYZ::operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCost(vx, vy, vz);
+}
+inline Cost Functor_getCostXZY::operator()(EnumeratedVariable* xx, EnumeratedVariable* zz, EnumeratedVariable* yy, Value vx, Value vz, Value vy) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCost(vx, vy, vz);
+}
+inline Cost Functor_getCostYXZ::operator()(EnumeratedVariable* yy, EnumeratedVariable* xx, EnumeratedVariable* zz, Value vy, Value vx, Value vz) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCost(vx, vy, vz);
+}
+inline Cost Functor_getCostYZX::operator()(EnumeratedVariable* yy, EnumeratedVariable* zz, EnumeratedVariable* xx, Value vy, Value vz, Value vx) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCost(vx, vy, vz);
+}
+inline Cost Functor_getCostZXY::operator()(EnumeratedVariable* zz, EnumeratedVariable* xx, EnumeratedVariable* yy, Value vz, Value vx, Value vy) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCost(vx, vy, vz);
+}
+inline Cost Functor_getCostZYX::operator()(EnumeratedVariable* zz, EnumeratedVariable* yy, EnumeratedVariable* xx, Value vz, Value vy, Value vx) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCost(vx, vy, vz);
+}
+
+inline Cost Functor_getCostWithBinariesXYZ::operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCostWithBinaries(vx, vy, vz);
+}
+inline Cost Functor_getCostWithBinariesXZY::operator()(EnumeratedVariable* xx, EnumeratedVariable* zz, EnumeratedVariable* yy, Value vx, Value vz, Value vy) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCostWithBinaries(vx, vy, vz);
+}
+inline Cost Functor_getCostWithBinariesYXZ::operator()(EnumeratedVariable* yy, EnumeratedVariable* xx, EnumeratedVariable* zz, Value vy, Value vx, Value vz) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCostWithBinaries(vx, vy, vz);
+}
+inline Cost Functor_getCostWithBinariesYZX::operator()(EnumeratedVariable* yy, EnumeratedVariable* zz, EnumeratedVariable* xx, Value vy, Value vz, Value vx) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCostWithBinaries(vx, vy, vz);
+}
+inline Cost Functor_getCostWithBinariesZXY::operator()(EnumeratedVariable* zz, EnumeratedVariable* xx, EnumeratedVariable* yy, Value vz, Value vx, Value vy) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCostWithBinaries(vx, vy, vz);
+}
+inline Cost Functor_getCostWithBinariesZYX::operator()(EnumeratedVariable* zz, EnumeratedVariable* yy, EnumeratedVariable* xx, Value vz, Value vy, Value vx) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getCostWithBinaries(vx, vy, vz);
+}
+
+inline void Functor_addCostXYZ::operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, Value vx, Value vy, Value vz, Cost c)
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.addCost(vx, vy, vz, c);
+}
+inline void Functor_addCostXZY::operator()(EnumeratedVariable* xx, EnumeratedVariable* zz, EnumeratedVariable* yy, Value vx, Value vz, Value vy, Cost c)
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.addCost(vx, vy, vz, c);
+}
+inline void Functor_addCostYXZ::operator()(EnumeratedVariable* yy, EnumeratedVariable* xx, EnumeratedVariable* zz, Value vy, Value vx, Value vz, Cost c)
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.addCost(vx, vy, vz, c);
+}
+inline void Functor_addCostYZX::operator()(EnumeratedVariable* yy, EnumeratedVariable* zz, EnumeratedVariable* xx, Value vy, Value vz, Value vx, Cost c)
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.addCost(vx, vy, vz, c);
+}
+inline void Functor_addCostZXY::operator()(EnumeratedVariable* zz, EnumeratedVariable* xx, EnumeratedVariable* yy, Value vz, Value vx, Value vy, Cost c)
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.addCost(vx, vy, vz, c);
+}
+inline void Functor_addCostZYX::operator()(EnumeratedVariable* zz, EnumeratedVariable* yy, EnumeratedVariable* xx, Value vz, Value vy, Value vx, Cost c)
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.addCost(vx, vy, vz, c);
+}
+
+inline Value Functor_getFunctionXYZ::operator()(EnumeratedVariable* yy, EnumeratedVariable* zz, Value vy, Value vz) const
+{
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getFunctionX(vy, vz);
+}
+inline Value Functor_getFunctionXZY::operator()(EnumeratedVariable* zz, EnumeratedVariable* yy, Value vz, Value vy) const
+{
+    assert(yy == obj.y);
+    assert(zz == obj.z);
+    return obj.getFunctionX(vy, vz);
+}
+inline Value Functor_getFunctionYXZ::operator()(EnumeratedVariable* xx, EnumeratedVariable* zz, Value vx, Value vz) const
+{
+    assert(xx == obj.x);
+    assert(zz == obj.z);
+    return obj.getFunctionY(vx, vz);
+}
+inline Value Functor_getFunctionYZX::operator()(EnumeratedVariable* zz, EnumeratedVariable* xx, Value vz, Value vx) const
+{
+    assert(xx == obj.x);
+    assert(zz == obj.z);
+    return obj.getFunctionY(vx, vz);
+}
+inline Value Functor_getFunctionZXY::operator()(EnumeratedVariable* xx, EnumeratedVariable* yy, Value vx, Value vy) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    return obj.getFunctionZ(vx, vy);
+}
+inline Value Functor_getFunctionZYX::operator()(EnumeratedVariable* yy, EnumeratedVariable* xx, Value vy, Value vx) const
+{
+    assert(xx == obj.x);
+    assert(yy == obj.y);
+    return obj.getFunctionZ(vx, vy);
+}
+
+template <typename T1, typename T2, typename T3>
+void TernaryConstraint::project(T1 getCost, T2 addCost, bool functionalZ, T3 getFunctionZ, BinaryConstraint* xy, EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, Value valx, Value valy, Cost cost)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "project(C" << getVar(0)->getName() << "," << getVar(1)->getName() << "," << getVar(2)->getName() << ", ((" << x->getName() << "," << valx << "),(" << y->getName() << "," << valy << ")), " << cost << ")" << endl), true));
+    assert(cost >= MIN_COST);
+    // BUG!
+    // if (functionalZ) {
+    //   Value valz = getFunctionZ(x,y, valx, valy);
+    //   if (valz != WRONG_VAL && z->canbe(valz)) {
+    // 	if (!CUT(getCost(x,y,z, valx,valy,valz), wcsp->getUb())) { // keeps forbidden costs into ternaries to get strong GAC3
+    // 	  addCost(x,y,z,valx,valy,valz,-cost);
+    // 	}
+    //   }
+    // } else {
+    for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+        if (!CUT(getCost(x, y, z, valx, valy, *iterZ), wcsp->getUb())) { // keeps forbidden costs into ternaries to get strong GAC3
+            addCost(x, y, z, valx, valy, *iterZ, -cost);
+        }
+    }
+    // }
+    xy->addcost(x, y, valx, valy, cost);
+#ifdef DEECOMPLETE
+    getVar(0)->queueDEE();
+    getVar(1)->queueDEE();
+    getVar(2)->queueDEE();
+#endif
+}
+
+template <typename T1, typename T2, typename T3>
+void TernaryConstraint::extend(T1 getCost, T2 addCost, bool functionalZ, T3 getFunctionZ, BinaryConstraint* xy, EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, Value valx, Value valy, Cost cost)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "extend(C" << getVar(0)->getName() << "," << getVar(1)->getName() << "," << getVar(2)->getName() << ", ((" << x->getName() << "," << valx << "),(" << y->getName() << "," << valy << ")), " << cost << ")" << endl), true));
+    assert(cost >= MIN_COST);
+    // BUG!
+    // if (functionalZ) {
+    //   Value valz = getFunctionZ(x,y, valx, valy);
+    //   if (valz != WRONG_VAL && z->canbe(valz)) {
+    //     addCost(x,y,z,valx,valy,valz,cost);
+    //   }
+    // } else {
+    for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+        addCost(x, y, z, valx, valy, *iterZ, cost);
+    }
+    // }
+    assert(xy->connected());
+    xy->addcost(x, y, valx, valy, -cost);
+}
+
+template <typename T1, typename T2, typename T3>
+void TernaryConstraint::findSupport(T1 getCost, bool functionalY, T2 getFunctionY, bool functionalZ, T3 getFunctionZ,
+    EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z,
+    int getIndexX, int getIndexY, int getIndexZ,
+    vector<pair<Value, Value>>& supportX, vector<StoreCost>& deltaCostsX,
+    vector<pair<Value, Value>>& supportY, vector<pair<Value, Value>>& supportZ)
+{
+    assert(getIndex(y) < getIndex(z)); // check that support.first/.second is consistent with y/z parameters
+    assert(connected());
+    wcsp->revise(this);
+    if (ToulBar2::verbose >= 3)
+        cout << "findSupport C" << x->getName() << "?"
+             << "," << y->getName() << ((functionalY) ? "!" : "") << "," << z->getName() << ((functionalZ) ? "!" : "") << endl;
+    if (ToulBar2::verbose >= 7)
+        cout << *x << endl
+             << *y << endl
+             << *z << endl
+             << *this;
+    bool supportBroken = false;
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+        unsigned int xindex = x->toIndex(*iterX);
+        pair<Value, Value> support = supportX[xindex];
+        if (y->cannotbe(support.first) || z->cannotbe(support.second) || getCost(x, y, z, *iterX, support.first, support.second) > MIN_COST) {
+            support = make_pair(y->getInf(), z->getInf());
+            Cost minCost = MAX_COST;
+            if (functionalZ) {
+                for (EnumeratedVariable::iterator iterY = y->begin(); minCost > MIN_COST && iterY != y->end(); ++iterY) {
+                    Value valZ = getFunctionZ(x, y, *iterX, *iterY);
+                    if (valZ != WRONG_VAL && z->canbe(valZ)) {
+                        Cost cost = getCost(x, y, z, *iterX, *iterY, valZ);
+                        if (GLB(&minCost, cost)) {
+                            support = make_pair(*iterY, valZ);
+                        }
+                    }
+                }
+            } else if (functionalY) {
+                for (EnumeratedVariable::iterator iterZ = z->begin(); minCost > MIN_COST && iterZ != z->end(); ++iterZ) {
+                    Value valY = getFunctionY(x, z, *iterX, *iterZ);
+                    if (valY != WRONG_VAL && y->canbe(valY)) {
+                        Cost cost = getCost(x, y, z, *iterX, valY, *iterZ);
+                        if (GLB(&minCost, cost)) {
+                            support = make_pair(valY, *iterZ);
+                        }
+                    }
+                }
+            } else {
+                for (EnumeratedVariable::iterator iterY = y->begin(); minCost > MIN_COST && iterY != y->end(); ++iterY) {
+                    for (EnumeratedVariable::iterator iterZ = z->begin(); minCost > MIN_COST && iterZ != z->end(); ++iterZ) {
+                        Cost cost = getCost(x, y, z, *iterX, *iterY, *iterZ);
+                        if (GLB(&minCost, cost)) {
+                            support = make_pair(*iterY, *iterZ);
+                        }
+                    }
+                }
+            }
+            if (minCost > MIN_COST) {
+                supportBroken |= project(x, *iterX, minCost, deltaCostsX);
+                if (deconnected())
+                    return;
+            }
+            supportX[xindex] = support;
+            assert(getIndexY < getIndexZ);
+            // warning! do not break DAC support for the variable in the constraint scope having the smallest wcspIndex
+            if (getIndexY != getDACScopeIndex()) {
+                unsigned int yindex = y->toIndex(support.first);
+                if (getIndexX < getIndexZ)
+                    supportY[yindex] = make_pair(*iterX, support.second);
+                else
+                    supportY[yindex] = make_pair(support.second, *iterX);
+            }
+            if (getIndexZ != getDACScopeIndex()) {
+                unsigned int zindex = z->toIndex(support.second);
+                if (getIndexX < getIndexY)
+                    supportZ[zindex] = make_pair(*iterX, support.first);
+                else
+                    supportZ[zindex] = make_pair(support.first, *iterX);
+            }
+        }
+    }
+    if (supportBroken) {
+        x->findSupport();
+    }
+}
+
+// take into account associated binary constraints and perform unary extension to binary instead of ternary
+template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
+void TernaryConstraint::findFullSupport(T1 getCost, T2 getCostXZY, T3 getCostYZX, T4 getCostWithBinaries, T5 addCost, T6 addCostXZY, T7 addCostYZX, bool functionalX, T8 getFunctionX, bool functionalY, T9 getFunctionY, bool functionalZ, T10 getFunctionZ,
+    EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z,
+    int getIndexX, int getIndexY, int getIndexZ,
+    vector<pair<Value, Value>>& supportX, vector<StoreCost>& deltaCostsX,
+    vector<pair<Value, Value>>& supportY, vector<StoreCost>& deltaCostsY,
+    vector<pair<Value, Value>>& supportZ, vector<StoreCost>& deltaCostsZ,
+    BinaryConstraint* xy, BinaryConstraint* xz, BinaryConstraint* yz)
+{
+    assert(connected());
+    wcsp->revise(this);
+    if (ToulBar2::verbose >= 3)
+        cout << "findFullSupport C" << x->getName() << ((functionalX) ? "!" : "") << "," << y->getName() << ((functionalY) ? "!" : "") << "," << z->getName() << ((functionalZ) ? "!" : "") << endl;
+    if (ToulBar2::verbose >= 7)
+        cout << *x << endl
+             << *y << endl
+             << *z << endl
+             << *this << *xy << *xz << *yz;
+    bool supportBroken = false;
+    bool supportReversed = (getIndexY > getIndexZ);
+    for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+        unsigned int xindex = x->toIndex(*iterX);
+        pair<Value, Value> support = (supportReversed) ? make_pair(supportX[xindex].second, supportX[xindex].first) : make_pair(supportX[xindex].first, supportX[xindex].second);
+        if (y->cannotbe(support.first) || z->cannotbe(support.second) || getCostWithBinaries(x, y, z, *iterX, support.first, support.second) + y->getCost(support.first) + z->getCost(support.second) > MIN_COST) {
+            support = make_pair(y->getInf(), z->getInf());
+            Cost minCost = MAX_COST;
+            if (functionalZ) {
+                for (EnumeratedVariable::iterator iterY = y->begin(); minCost > MIN_COST && iterY != y->end(); ++iterY) {
+                    Value valZ = getFunctionZ(x, y, *iterX, *iterY);
+                    if (valZ != WRONG_VAL && z->canbe(valZ)) {
+                        Cost cost = getCostWithBinaries(x, y, z, *iterX, *iterY, valZ) + y->getCost(*iterY) + z->getCost(valZ);
+                        if (GLB(&minCost, cost)) {
+                            support = make_pair(*iterY, valZ);
+                        }
+                    }
+                }
+            } else if (functionalY) {
+                for (EnumeratedVariable::iterator iterZ = z->begin(); minCost > MIN_COST && iterZ != z->end(); ++iterZ) {
+                    Value valY = getFunctionY(x, z, *iterX, *iterZ);
+                    if (valY != WRONG_VAL && y->canbe(valY)) {
+                        Cost cost = getCostWithBinaries(x, y, z, *iterX, valY, *iterZ) + y->getCost(valY) + z->getCost(*iterZ);
+                        if (GLB(&minCost, cost)) {
+                            support = make_pair(valY, *iterZ);
+                        }
+                    }
+                }
+            } else {
+                for (EnumeratedVariable::iterator iterY = y->begin(); minCost > MIN_COST && iterY != y->end(); ++iterY) {
+                    for (EnumeratedVariable::iterator iterZ = z->begin(); minCost > MIN_COST && iterZ != z->end(); ++iterZ) {
+                        Cost cost = getCostWithBinaries(x, y, z, *iterX, *iterY, *iterZ) + y->getCost(*iterY) + z->getCost(*iterZ);
+                        if (GLB(&minCost, cost)) {
+                            support = make_pair(*iterY, *iterZ);
+                        }
+                    }
+                }
+            }
+            if (CUT(minCost + wcsp->getLb(), wcsp->getUb())) {
+                supportBroken |= project(x, *iterX, minCost, deltaCostsX);
+                if (deconnected())
+                    return;
+                continue;
+            }
+            assert(minCost < MAX_COST);
+
+            if (minCost > MIN_COST) {
+                // extend unary to binary
+                for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                    if (y->getCost(*iterY) > MIN_COST) {
+                        Cost costfromy = MIN_COST;
+                        for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                            Cost cost = getCost(x, y, z, *iterX, *iterY, *iterZ);
+                            if (LUBTEST(cost, minCost)) {
+                                Cost zcost = z->getCost(*iterZ);
+                                Cost xycost = (xy->connected()) ? xy->getCost(x, y, *iterX, *iterY) : MIN_COST;
+                                Cost xzcost = (xz->connected()) ? xz->getCost(x, z, *iterX, *iterZ) : MIN_COST;
+                                Cost yzcost = (yz->connected()) ? yz->getCost(y, z, *iterY, *iterZ) : MIN_COST;
+                                Cost remain = minCost - (cost + xycost + xzcost + yzcost + zcost);
+                                LUB(&costfromy, remain);
+                            }
+                        }
+                        assert(costfromy <= y->getCost(*iterY));
+                        if (costfromy > MIN_COST) {
+                            assert(x->unassigned() && y->unassigned());
+                            xy->reconnect(); // must be done before using the constraint
+                            xy->extend(xy->getIndex(y), *iterY, costfromy);
+                        }
+                    }
+                }
+                for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                    if (z->getCost(*iterZ) > MIN_COST) {
+                        Cost costfromz = MIN_COST;
+                        for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                            Cost cost = getCost(x, y, z, *iterX, *iterY, *iterZ);
+                            if (LUBTEST(cost, minCost)) {
+                                Cost xycost = (xy->connected()) ? xy->getCost(x, y, *iterX, *iterY) : MIN_COST;
+                                Cost xzcost = (xz->connected()) ? xz->getCost(x, z, *iterX, *iterZ) : MIN_COST;
+                                Cost yzcost = (yz->connected()) ? yz->getCost(y, z, *iterY, *iterZ) : MIN_COST;
+                                Cost remain = minCost - (cost + xycost + xzcost + yzcost);
+                                LUB(&costfromz, remain);
+                            }
+                        }
+                        assert(costfromz <= z->getCost(*iterZ));
+                        if (costfromz > MIN_COST) {
+                            assert(x->unassigned() && z->unassigned());
+                            xz->reconnect(); // must be done before using the constraint
+                            xz->extend(xz->getIndex(z), *iterZ, costfromz);
+                        }
+                    }
+                }
+                // extend binary to ternary
+                if (yz->connected()) {
+                    for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                        Cost xycost = (xy->connected()) ? xy->getCost(x, y, *iterX, *iterY) : MIN_COST;
+                        for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                            Cost yzcost = yz->getCost(y, z, *iterY, *iterZ);
+                            if (yzcost > MIN_COST) {
+                                Cost cost = getCost(x, y, z, *iterX, *iterY, *iterZ);
+                                if (LUBTEST(cost, minCost)) {
+                                    Cost xzcost = (xz->connected()) ? xz->getCost(x, z, *iterX, *iterZ) : MIN_COST;
+                                    Cost remain = minCost - (cost + xycost + xzcost);
+                                    if (remain > MIN_COST)
+                                        extend(getCostYZX, addCostYZX, functionalX, getFunctionX, yz, y, z, x, *iterY, *iterZ, remain);
+                                }
+                            }
+                        }
+                    }
+                }
+                if (xy->connected()) {
+                    for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                        Cost xycost = xy->getCost(x, y, *iterX, *iterY);
+                        if (xycost > MIN_COST) {
+                            Cost costfromxy = MIN_COST;
+                            for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                                Cost cost = getCost(x, y, z, *iterX, *iterY, *iterZ);
+                                if (LUBTEST(cost, minCost)) {
+                                    Cost xzcost = (xz->connected()) ? xz->getCost(x, z, *iterX, *iterZ) : MIN_COST;
+                                    //                                    Cost yzcost = (yz->connected())?yz->getCost(y,z,*iterY,*iterZ):MIN_COST;
+                                    //                                    Cost remain = minCost - (cost + xzcost + yzcost);
+                                    Cost remain = minCost - (cost + xzcost);
+                                    LUB(&costfromxy, remain);
+                                }
+                            }
+                            assert(costfromxy <= xycost);
+                            if (costfromxy > MIN_COST) {
+                                extend(getCost, addCost, functionalZ, getFunctionZ, xy, x, y, z, *iterX, *iterY, costfromxy);
+                            }
+                        }
+                    }
+                }
+                if (xz->connected()) {
+                    for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                        Cost xzcost = xz->getCost(x, z, *iterX, *iterZ);
+                        if (xzcost > MIN_COST) {
+                            Cost costfromxz = MIN_COST;
+                            for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                                Cost cost = getCost(x, y, z, *iterX, *iterY, *iterZ);
+                                if (LUBTEST(cost, minCost)) {
+                                    //                                    Cost yzcost = (yz->connected())?yz->getCost(y,z,*iterY,*iterZ):MIN_COST;
+                                    //                                    Cost remain = minCost - (cost + yzcost);
+                                    Cost remain = minCost - cost;
+                                    LUB(&costfromxz, remain);
+                                }
+                            }
+                            assert(costfromxz <= xzcost);
+                            if (costfromxz > MIN_COST) {
+                                extend(getCostXZY, addCostXZY, functionalY, getFunctionY, xz, x, z, y, *iterX, *iterZ, costfromxz);
+                            }
+                        }
+                    }
+                }
+                //                if (yz->connected()) {
+                //                    for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                //                        for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                //                            Cost yzcost = yz->getCost(y,z,*iterY,*iterZ);
+                //                            if (yzcost > MIN_COST) {
+                //                                Cost cost = getCost(x,y,z,*iterX,*iterY,*iterZ);
+                //                                if (LUBTEST(cost, minCost)) {
+                //                                    assert(yzcost >= minCost - cost);
+                //                                    extend(getCostYZX,addCostYZX,functionalX,getFunctionX,yz,y,z,x,*iterY,*iterZ,minCost - cost);
+                //                                }
+                //                            }
+                //                        }
+                //                    }
+                //                }
+                supportBroken |= project(x, *iterX, minCost, deltaCostsX);
+                if (deconnected())
+                    return;
+            }
+
+            supportX[xindex] = (supportReversed) ? make_pair(support.second, support.first) : make_pair(support.first, support.second);
+
+            unsigned int yindex = y->toIndex(support.first);
+            unsigned int zindex = z->toIndex(support.second);
+            if (getIndexX < getIndexZ)
+                supportY[yindex] = make_pair(*iterX, support.second);
+            else
+                supportY[yindex] = make_pair(support.second, *iterX);
+            if (getIndexX < getIndexY)
+                supportZ[zindex] = make_pair(*iterX, support.first);
+            else
+                supportZ[zindex] = make_pair(support.first, *iterX);
+        }
+    }
+    if (supportBroken) {
+        x->findSupport();
+    }
+}
+
+template <typename T1, typename T2, typename T3, typename T4>
+void TernaryConstraint::projectTernaryBinary(T1 getCost, T2 getCostYZX, T3 addCostYZX, bool functionalX, T4 getFunctionX,
+    EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, BinaryConstraint* yzin)
+{
+    //cout << "PROJECT " << *this <<endl;
+    //cout << "on " << y->getName() << "," << z->getName() << endl;
+
+    bool flag = false;
+    for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+        for (EnumeratedVariable::iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+            Cost mincost = MAX_COST;
+            for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+                Cost curcost = getCost(x, y, z, *iterx, *itery, *iterz);
+                GLB(&mincost, curcost);
+            }
+            if (mincost > MIN_COST) {
+                flag = true;
+                project(getCostYZX, addCostYZX, functionalX, getFunctionX, yzin, y, z, x, *itery, *iterz, mincost);
+            }
+        }
+    }
+
+    if (wcsp->getTreeDec()) {
+        yzin->setCluster(getCluster());
+    }
+
+    if (flag) {
+        if (y->unassigned() && z->unassigned())
+            yzin->reconnect();
+        yzin->propagate();
+    }
+}
+
+template <typename T1, typename T2, typename T3>
+bool TernaryConstraint::isEAC(T1 getCostWithBinaries, bool functionalY, T2 getFunctionY, bool functionalZ, T3 getFunctionZ,
+    EnumeratedVariable* x, Value a, EnumeratedVariable* y, EnumeratedVariable* z,
+    vector<pair<Value, Value>>& supportX)
+{
+    assert(y->canbe(y->getSupport()));
+    assert(y->getCost(y->getSupport()) == MIN_COST);
+    assert(z->canbe(z->getSupport()));
+    assert(z->getCost(z->getSupport()) == MIN_COST);
+    if (getCostWithBinaries(x, y, z, a, y->getSupport(), z->getSupport()) > MIN_COST) {
+        if (ToulBar2::FullEAC)
+            x->unsetFullEAC();
+        unsigned int xindex = x->toIndex(a);
+        assert(getIndex(y) < getIndex(z));
+        pair<Value, Value> support = supportX[xindex];
+        if (y->cannotbe(support.first) || z->cannotbe(support.second) || getCostWithBinaries(x, y, z, a, support.first, support.second) + y->getCost(support.first) + z->getCost(support.second) > MIN_COST) {
+            if (functionalZ) {
+                for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                    Value valZ = getFunctionZ(x, y, a, *iterY);
+                    if (valZ != WRONG_VAL && z->canbe(valZ)) {
+                        if (getCostWithBinaries(x, y, z, a, *iterY, valZ) + y->getCost(*iterY) + z->getCost(valZ) == MIN_COST) {
+                            supportX[xindex] = make_pair(*iterY, valZ);
+                            return true;
+                        }
+                    }
+                }
+            } else if (functionalY) {
+                for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                    Value valY = getFunctionY(x, z, a, *iterZ);
+                    if (valY != WRONG_VAL && y->canbe(valY)) {
+                        if (getCostWithBinaries(x, y, z, a, valY, *iterZ) + y->getCost(valY) + z->getCost(*iterZ) == MIN_COST) {
+                            supportX[xindex] = make_pair(valY, *iterZ);
+                            return true;
+                        }
+                    }
+                }
+            } else {
+                for (EnumeratedVariable::iterator iterY = y->begin(); iterY != y->end(); ++iterY) {
+                    for (EnumeratedVariable::iterator iterZ = z->begin(); iterZ != z->end(); ++iterZ) {
+                        if (getCostWithBinaries(x, y, z, a, *iterY, *iterZ) + y->getCost(*iterY) + z->getCost(*iterZ) == MIN_COST) {
+                            supportX[xindex] = make_pair(*iterY, *iterZ);
+                            return true;
+                        }
+                    }
+                }
+            }
+            //        cout << x->getName() << " = " << a << " not EAC due to constraint " << *this << endl;
+            return false;
+        }
+    }
+    return true;
+}
+
+// A triangle of three binary cost functions (maxRPC/PIC)
+//class Triangle : public AbstractTernaryConstraint<EnumeratedVariable,EnumeratedVariable,EnumeratedVariable>
+//{
+//    BinaryConstraint* xy;
+//    BinaryConstraint* xz;
+//    BinaryConstraint* yz;
+//    TernaryConstraint* xyz;
+//
+//public:
+//    Triangle(WCSP *wcsp,
+//					  EnumeratedVariable *xx,
+//					  EnumeratedVariable *yy,
+//					  EnumeratedVariable *zz,
+//					  BinaryConstraint* xy,
+//					  BinaryConstraint* xz,
+//					  BinaryConstraint* yz,
+//					  StoreStack<Cost, Cost> *storeCost);
+//
+//	~Triangle() {}
+//
+//    bool isTriangle() const {return true;}
+//
+//    void activateTernary();
+//};
+
+#endif /*TB2TERNARYCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2types.hpp b/code/include/tb2/core/tb2types.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..37f50f7b53d73aa1e2a196de534812bdd861ba8c
--- /dev/null
+++ b/code/include/tb2/core/tb2types.hpp
@@ -0,0 +1,730 @@
+/** \file tb2types.hpp
+ *  \brief Macros, types, and globals.
+ *
+ * The main types are:
+ * - ::Value : domain value
+ * - ::Cost : cost value (exact type depends on compilation flag)
+ * - ::Long : large integer (long long int)
+ * - ::TProb : probability value (exact type depends on compilation flag)
+ * - ::TLogProb : log probability value (exact type depends on compilation flag)
+ * - ::Double : large float (long double)
+ * - ::tValue : a short Value type for tuples
+ * - ::Tuple : vector of tValues to encode tuples
+ *
+ * \note Compilation flag for Cost is: \c INT_COST (int), \c LONGLONG_COST (long long), or \c PARETOPAIR_COST (see ::ParetoPair)
+ * \warning \c PARETOPAIR_COST is fragile.
+ * \note Compilation flag for TProb is: \c DOUBLE_PROB or \c LONGDOUBLE_PROB
+ * \note Compilation flag for T(Log)Prob is: \c DOUBLE_PROB or \c LONGDOUBLE_PROB
+ */
+
+#ifndef TB2TYPES_HPP_
+#define TB2TYPES_HPP_
+
+//#define INT_COST
+//#define LONGLONG_COST
+//#define PARETOPAIR_COST
+
+//#define DOUBLE_PROB
+//#define LONGDOUBLE_PROB
+
+#include "utils/tb2utils.hpp"
+//Must be included after tb2utils.hpp
+#include "utils/tb2integer.hpp"
+#ifdef QUAD_PROB
+#include <quadmath.h> // only with gcc/g++
+#endif
+
+/// Special character value at the beginning of a variable's name to identify implicit variables (i.e., variables which are not decision variables)
+const string IMPLICIT_VAR_TAG = "#";
+
+/// Special character value at the beginning of a variable's name to identify diverse extra variables corresponding to the current sequence of diverse solutions found so far
+const string DIVERSE_VAR_TAG = "^";
+
+/// Domain value (can be positive or negative integers)
+typedef int Value;
+/// Maximum domain value
+const Value MAX_VAL = (INT_MAX / 2);
+/// Forbidden domain value
+const Value WRONG_VAL = INT_MAX;
+/// Minimum domain value
+const Value MIN_VAL = -(INT_MAX / 2);
+/// Maximum domain size
+/// \deprecated Should use WCSP::getMaxDomainSize instead.
+const Value MAX_DOMAIN_SIZE = 2000;
+
+typedef short int tValue;
+typedef vector<tValue> Tuple;
+
+// For very large domains with ternary cost functions, use NARYPROJECTIONSIZE=2 instead of 3
+const int NARYPROJECTIONSIZE = 3; // limit on the number of unassigned variables before nary constraints are projected to smaller-arity constraint (should be between 1 and 3)
+const Long NARYDECONNECTSIZE = 4; // maximum number of initial tuples in nary constraints in order to check for its removal (if it is always satisfied by current domains)
+
+const int MAX_BRANCH_SIZE = 1000000;
+const ptrdiff_t CHOICE_POINT_LIMIT = SIZE_MAX - MAX_BRANCH_SIZE;
+const ptrdiff_t OPEN_NODE_LIMIT = SIZE_MAX;
+
+#ifdef INT_COST
+const bool PARTIALORDER = false;
+typedef int Cost;
+const Cost MIN_COST = 0;
+const Cost UNIT_COST = 1;
+const Cost SMALL_COST = 1;
+const Cost MEDIUM_COST = 3;
+const Cost LARGE_COST = 100;
+const Cost MAX_COST = ((INT_MAX / 2) / MEDIUM_COST / MEDIUM_COST);
+//inline bool Add(Cost a, Cost b, Cost* c) { return __builtin_sadd_overflow(a, b, c); }
+//inline bool Sub(Cost a, Cost b, Cost* c) { return __builtin_ssub_overflow(a, b, c); }
+//inline bool Mul(Cost a, Cost b, Cost* c) { return __builtin_smul_overflow(a, b, c); }
+inline Cost MIN(Cost a, Cost b) { return min(a, b); }
+inline Cost MAX(Cost a, Cost b) { return max(a, b); }
+inline Cost MULT(Cost a, double b)
+{
+    assert(b < MAX_COST);
+    if (a >= MAX_COST)
+        return MAX_COST;
+    else if (b <= UNIT_COST)
+        return a * b;
+    else if (a < MAX_COST / b)
+        return a * b;
+    else {
+        cerr << "Error: cost multiplication overflow!" << endl;
+        exit(1);
+    }
+}
+inline Cost GLB(Cost a, Cost b) { return MIN(a, b); }
+inline Cost LUB(Cost a, Cost b) { return MAX(a, b); }
+inline bool GLB(Cost* a, Cost b)
+{
+    if (b < *a) {
+        *a = b;
+        return true;
+    } else
+        return false;
+}
+inline bool LUB(Cost* a, Cost b)
+{
+    if (b > *a) {
+        *a = b;
+        return true;
+    } else
+        return false;
+}
+inline bool GLBTEST(Cost a, Cost b) { return (b < a); }
+inline bool LUBTEST(Cost a, Cost b) { return (b > a); }
+inline bool DACTEST(Cost a, Cost b) { return (a == 0 && b > 0); }
+inline bool SUPPORTTEST(Cost a, Cost b) { return false; }
+inline bool SUPPORTTEST(Cost a) { return false; }
+inline void initCosts() {}
+#endif
+
+#ifdef LONGLONG_COST
+const bool PARTIALORDER = false;
+typedef Long Cost;
+struct DCost {
+    Cost c;
+
+    DCost(Cost ic) { c = ic; };
+    friend ostream& operator<<(ostream& os, const DCost& r)
+    {
+        os << r.c;
+        return os;
+    }
+    friend istream& operator>>(istream& is, DCost& r)
+    {
+        is >> r.c;
+        return is;
+    }
+};
+const Cost MIN_COST = 0;
+const Cost UNIT_COST = 1;
+const Cost SMALL_COST = 1;
+const Cost MEDIUM_COST = 3;
+const Cost LARGE_COST = 100;
+const Cost MAX_COST = ((LONGLONG_MAX / 2) / MEDIUM_COST / MEDIUM_COST);
+//inline bool Add(Cost a, Cost b, Cost* c) { return __builtin_saddll_overflow(a, b, c); }
+//inline bool Sub(Cost a, Cost b, Cost* c) { return __builtin_ssubll_overflow(a, b, c); }
+//inline bool Mul(Cost a, Cost b, Cost* c) { return __builtin_smulll_overflow(a, b, c); }
+inline Cost MIN(Cost a, Cost b) { return min(a, b); }
+inline Cost MAX(Cost a, Cost b) { return max(a, b); }
+inline Cost MULT(Cost a, double b)
+{
+    assert(b < MAX_COST);
+    if (a >= MAX_COST)
+        return MAX_COST;
+    else if (b <= UNIT_COST)
+        return (Cost)((double)a * b);
+    else if (a < (double)MAX_COST / b)
+        return (Cost)((double)a * b);
+    else {
+        cerr << "Error: cost multiplication overflow!" << endl;
+        exit(1);
+    }
+}
+inline Cost GLB(Cost a, Cost b) { return MIN(a, b); }
+inline Cost LUB(Cost a, Cost b) { return MAX(a, b); }
+inline bool GLB(Cost* a, Cost b)
+{
+    if (b < *a) {
+        *a = b;
+        return true;
+    } else
+        return false;
+}
+inline bool LUB(Cost* a, Cost b)
+{
+    if (b > *a) {
+        *a = b;
+        return true;
+    } else
+        return false;
+}
+inline bool GLBTEST(Cost a, Cost b) { return (b < a); }
+inline bool LUBTEST(Cost a, Cost b) { return (b > a); }
+inline bool DACTEST(Cost a, Cost b) { return (a == 0 && b > 0); }
+inline bool SUPPORTTEST(Cost a, Cost b) { return false; }
+inline bool SUPPORTTEST(Cost a) { return false; }
+inline void initCosts() {}
+#endif
+
+#ifdef PARETOPAIR_COST
+const bool PARTIALORDER = true;
+#include "utils/tb2paretopair.hpp"
+typedef ParetoPair Cost;
+const Cost MIN_COST = PARETOPAIR_MIN;
+const Cost UNIT_COST = PARETOPAIR_1;
+const Cost SMALL_COST = PARETOPAIR_1;
+const Cost MEDIUM_COST = PARETOPAIR_3;
+const Cost LARGE_COST = PARETOPAIR_100;
+const Cost MAX_COST = PARETOPAIR_MAX;
+#endif
+
+#ifdef QUAD_PROB
+typedef __float128 TProb;
+typedef __float128 TLogProb;
+inline Cost Round(TLogProb f) { return (Cost)roundq(f); }
+#endif
+
+#ifdef DOUBLE_PROB
+typedef double TProb;
+typedef double TLogProb;
+inline Cost Round(TLogProb f) { return (Cost)round(f); }
+#endif
+
+#ifdef LONGDOUBLE_PROB
+typedef Double TProb;
+typedef Double TLogProb;
+inline Cost Round(TLogProb f) { return (Cost)roundl(f); }
+#endif
+
+inline TLogProb GLogSumExp(TLogProb logc1, TLogProb logc2) // log[exp(c1) + exp(c2)]
+{
+    if (logc1 == -numeric_limits<TLogProb>::infinity())
+        return logc2;
+    else if (logc2 == -numeric_limits<TLogProb>::infinity())
+        return logc1;
+    else {
+        if (logc1 >= logc2)
+            return logc1 + (Log1p(Exp(logc2 - logc1)));
+        else
+            return logc2 + (Log1p(Exp(logc1 - logc2)));
+    }
+}
+
+inline TLogProb GLogSubExp(TLogProb logc1, TLogProb logc2) // log[exp(c1) - exp(c2)]
+{
+    if (logc1 == logc2)
+        return -numeric_limits<TLogProb>::infinity();
+    else if (logc1 > logc2)
+        return logc1 + (Log(-Expm1(logc2 - logc1)));
+    else {
+        cerr << "My oh my ! Try to Logarithm a negative number" << endl;
+        exit(0);
+    }
+}
+const int STORE_SIZE = 16;
+#define INTEGERBITS (8 * sizeof(Cost) - 2)
+
+const int MAX_ELIM_BIN = 1000000000;
+const int MAX_ARITY = 1000;
+/// Maximum number of tuples in n-ary cost functions
+const int MAX_NB_TUPLES = 1000000;
+const int LARGE_NB_VARS = 10000;
+
+const int DECIMAL_POINT = 3; // default number of digits after decimal point for printing floating-point values
+
+typedef map<int, int> TSCOPE;
+typedef map<int, Value> TAssign;
+
+typedef unsigned int uint;
+
+/*
+ * Abstract data type that help post a global cost function
+ *
+ */
+
+// A value with weight
+struct WeightedObjInt {
+    int val;
+    Cost weight;
+
+    WeightedObjInt(int val_, Cost weight_ = MIN_COST)
+        : val(val_)
+        , weight(weight_)
+    {
+    }
+};
+
+// A value with upper and lower limit
+struct BoundedObjValue {
+    Value val;
+    unsigned int upper;
+    unsigned int lower;
+
+    BoundedObjValue(Value val_, unsigned int upper_, unsigned int lower_ = 0)
+        : val(val_)
+        , upper(upper_)
+        , lower(lower_)
+    {
+    }
+};
+
+// A transition in DFA
+struct DFATransition {
+    int start;
+    int end;
+    Value symbol;
+    Cost weight;
+
+    DFATransition(int start_, Value symbol_, int end_, Cost weight_ = MIN_COST)
+        : start(start_)
+        , end(end_)
+        , symbol(symbol_)
+        , weight(weight_)
+    {
+    }
+};
+
+// A production rule in CFG
+struct CFGProductionRule {
+    int from;
+    Cost weight;
+    int order;
+    int* to;
+};
+
+// A variable-value pair with weight
+struct WeightedVarValPair {
+    int varIndex;
+    Value val;
+    Cost weight;
+};
+
+/*
+ * Global variables encapsulated as static members
+ *
+ */
+
+typedef void (*externalevent)(int wcspId, int varIndex, Value value, void* solver);
+typedef void (*externalcostevent)(int wcspId, int varIndex, Cost cost, void* solver);
+typedef void (*externalsolution)(int wcspId, void* solver);
+typedef void (*externalfunc)();
+
+typedef enum {
+    ELIM_NONE = 0,
+    MAX_CARD = 1,
+    MIN_DEGREE = 2,
+    MIN_FILL = 3,
+    ELIM_MST = 4,
+    CUTHILL_MCKEE = 5,
+    APPROX_MIN_DEGREE = 6,
+    ELIM_FILE_ORDER = 7,
+    ELIM_MAX
+} ElimOrderType;
+
+class Pedigree;
+class Haplotype;
+class BEP;
+
+typedef enum {
+    LC_NC = 0,
+    LC_SNIC = 0,
+    LC_AC = 1,
+    LC_DAC = 2,
+    LC_FDAC = 3,
+    LC_EDAC = 4,
+    LC_THEMAX
+} LcLevelType;
+const int MAX_EAC_ITER = 10000;
+
+typedef enum {
+    DFBB,
+    VNS,
+    DGVNS,
+    CPDGVNS,
+    RPDGVNS,
+    TREEDEC
+} SearchMethod;
+
+typedef enum {
+    LS_INIT_RANDOM = -1,
+    LS_INIT_INF = -2,
+    LS_INIT_SUP = -3,
+    LS_INIT_DFBB = -4,
+    LS_INIT_LDS0 = 0
+} VNSSolutionInitMethod;
+
+typedef enum {
+    RANDOMVAR = 0,
+    CONFLICTVARBASE = 1,
+    CONNECTEDCONFLICTVAR = 2,
+    CLUSTERRAND = 3,
+    CONFLICTVARMAXDEG = 4,
+    CLUSTERSORTED = 5,
+    SEPCLUSTERSORTED = 6,
+    SEPCLUSTERSORTEDV2 = 7,
+    MASTERCLUSTERRAND = 8,
+    PCONFLICTVAR = 9
+} VNSVariableHeuristic;
+
+typedef enum {
+    VNS_ADD1 = 1,
+    VNS_MULT2 = 2,
+    VNS_LUBY = 3,
+    VNS_ADD1JUMP = 4
+} VNSInc;
+
+typedef enum {
+    WCSP_FORMAT = 1,
+    CFN_FORMAT,
+    WCNF_FORMAT,
+    OPB_FORMAT,
+    BEP_FORMAT,
+    CNF_FORMAT,
+    LG_FORMAT,
+    MAP_FORMAT,
+    PRE_FORMAT,
+    QPBO_FORMAT,
+    UAI_FORMAT,
+    XCSP2_FORMAT
+} ProblemFormat;
+
+struct ValueCost {
+    Value value;
+    Cost cost;
+    friend bool operator<(const ValueCost& u, const ValueCost& v) { return u.cost < v.cost; }
+    friend bool operator>(const ValueCost& u, const ValueCost& v) { return u.cost > v.cost; }
+    friend bool operator==(const ValueCost& u, const ValueCost& v) { return u.cost == v.cost; }
+};
+
+///contains all global variables (mainly solver's command-line options)
+class ToulBar2 {
+protected:
+    virtual ~ToulBar2() = 0; // Trick to avoid any instantiation of ToulBar2
+public:
+    static string version;
+    static int verbose;
+
+    static bool FullEAC;
+    static bool VACthreshold;
+    static int nbTimesIsVAC;
+    static int nbTimesIsVACitThresholdMoreThanOne;
+    static bool RASPS;
+    static int useRASPS;
+    static bool RASPSreset;
+    static int RASPSangle;
+    static Long RASPSnbBacktracks;
+    static int RASPSnbStrictACVariables;
+    static Cost RASPSlastitThreshold;
+    static bool RASPSsaveitThresholds;
+    static vector<pair<Cost, double>> RASPSitThresholds;
+
+    static int debug;
+    static string externalUB;
+    static int showSolutions;
+    static int writeSolution;
+    static FILE* solutionFile;
+    static long solutionFileRewindPos;
+    static Long allSolutions;
+    static int dumpWCSP;
+    static bool approximateCountingBTD;
+    static bool binaryBranching;
+    static int dichotomicBranching;
+    static unsigned int dichotomicBranchingSize;
+    static bool sortDomains;
+    static map<int, ValueCost*> sortedDomains;
+    static bool solutionBasedPhaseSaving;
+    static int elimDegree;
+    static int elimDegree_preprocessing;
+    static int elimDegree_;
+    static int elimDegree_preprocessing_;
+    static int elimSpaceMaxMB;
+    static int minsumDiffusion;
+    static int preprocessTernaryRPC;
+    static int preprocessFunctional;
+    static bool costfuncSeparate;
+    static int preprocessNary;
+    static bool QueueComplexity;
+    static bool Static_variable_ordering; // flag for static variable ordering during search (dynamic ordering is default value)
+    static bool lastConflict;
+    static int weightedDegree;
+    static int weightedTightness;
+    static bool MSTDAC;
+    static int DEE;
+    static int DEE_;
+    static int nbDecisionVars;
+    static int lds;
+    static bool limited;
+    static Long restart;
+    static Long backtrackLimit;
+    static externalevent setvalue;
+    static externalevent setmin;
+    static externalevent setmax;
+    static externalevent removevalue;
+    static externalcostevent setminobj;
+    static externalsolution newsolution;
+    static Pedigree* pedigree;
+    static Haplotype* haplotype;
+    static string map_file;
+    static bool cfn;
+    static bool gz;
+    static bool xz;
+    static bool bayesian;
+    static int uai;
+    static int resolution;
+    static TProb errorg;
+    static TLogProb NormFactor;
+    static int foundersprob_class;
+    static vector<TProb> allelefreqdistrib;
+    static bool consecutiveAllele;
+    static bool generation;
+    static int pedigreeCorrectionMode;
+    static int pedigreePenalty;
+    static int vac;
+    static string costThresholdS;
+    static string costThresholdPreS;
+    static Cost costThreshold;
+    static Cost costThresholdPre;
+    static double trwsAccuracy;
+    static bool trwsOrder;
+    static unsigned int trwsNIter;
+    static unsigned int trwsNIterNoChange;
+    static unsigned int trwsNIterComputeUb;
+    static double costMultiplier;
+    static unsigned int decimalPoint;
+    static string deltaUbS;
+    static Cost deltaUb;
+    static Cost deltaUbAbsolute;
+    static Double deltaUbRelativeGap;
+    static bool singletonConsistency;
+    static bool vacValueHeuristic;
+    static BEP* bep;
+    static LcLevelType LcLevel;
+    static bool wcnf;
+    static bool qpbo;
+    static double qpboQuadraticCoefMultiplier;
+    static bool opb;
+
+    static unsigned int divNbSol;
+    static unsigned int divBound;
+    static unsigned int divWidth;
+    static unsigned int divMethod; // 0: Dual, 1: Hidden, 2: Ternary
+    static unsigned int divRelax; // 0: random, 1: high div, 2: small div, 3: high unary costs
+
+    static char* varOrder;
+    static int btdMode;
+    static int btdSubTree;
+    static int btdRootCluster;
+
+    static bool maxsateval;
+    static bool xmlflag;
+    static TLogProb markov_log;
+    static string evidence_file;
+    static FILE* solution_uai_file;
+    static string solution_uai_filename;
+    static string problemsaved_filename;
+    static bool isZ;
+    static TLogProb logZ;
+    static TLogProb logU; // upper bound on rejected potentials
+    static TLogProb logepsilon;
+    static bool uaieval;
+    static string stdin_format; // stdin format declaration
+
+    static double startCpuTime;
+
+    static int splitClusterMaxSize;
+    static double boostingBTD;
+    static int maxSeparatorSize;
+    static int minProperVarSize;
+    static int smallSeparatorSize;
+
+    static int Berge_Dec; // flag for berge acyclic decomposition
+    static bool learning; // if true, perform pseudoboolean learning
+    static externalfunc timeOut;
+    static bool interrupted;
+    static int seed;
+
+    static string incop_cmd;
+
+    static SearchMethod searchMethod;
+
+    static string clusterFile; // cluster tree decomposition file (without running intersection property)
+    static ofstream vnsOutput; // output file for VNS
+
+    static VNSSolutionInitMethod vnsInitSol; // initial solution strategy (search with max discrepancy limit if positive value)
+    static int vnsLDSmin; // discrepancy initial value
+    static int vnsLDSmax; // discrepancy maximum value
+    static VNSInc vnsLDSinc; // discrepancy increment strategy inside VNS
+    static int vnsKmin; // neighborhood initial size
+    static int vnsKmax; // neighborhood maximum size
+    static VNSInc vnsKinc; // neighborhood size increment strategy inside VNS
+
+    static int vnsLDScur; // current discrepancy (used only for debugging display)
+    static int vnsKcur; // current neighborhood size (used only for debugging display)
+    static VNSVariableHeuristic vnsNeighborVarHeur; // variable heuristic to build a neighborhood (used to differentiate VNS/DGVNS)
+    static bool vnsNeighborChange; // true if change neighborhood cluster only when not improved (only in RADGVNS)
+    static bool vnsNeighborSizeSync; // true if neighborhood size is synchronized (only in RADGVNS)
+    static bool vnsParallelLimit; // true if number of parallel slaves limited by number of clusters (only in RSDGVNS and RADGVNS)
+    static bool vnsParallelSync; // true if RSGDVNS else RADGVNS
+    static string vnsOptimumS;
+    static Cost vnsOptimum; // stops VNS if solution found with this cost (or better)
+    static bool vnsParallel; // true if in master/slaves paradigm
+
+    static Long hbfs; // hybrid best-first search mode (used as a limit on the number of backtracks before visiting another open search node)
+    static Long hbfsGlobalLimit; // limit on the number of nodes before stopping the search on the current cluster subtree problem
+    static Long hbfsAlpha; // inverse of minimum node redundancy goal limit
+    static Long hbfsBeta; // inverse of maximum node redundancy goal limit
+    static ptrdiff_t hbfsCPLimit; // limit on the number of choice points stored inside open node list
+    static ptrdiff_t hbfsOpenNodeLimit; // limit on the number of open nodes
+
+    static bool verifyOpt; // if true, for debugging purposes, checks the given optimal solution (problem.sol) is not pruned during search
+    static Cost verifiedOptimum; // for debugging purposes, cost of the given optimal solution
+};
+
+#ifdef INT_COST
+inline Cost rounding(Cost lb)
+{
+    return (((lb % max(UNIT_COST, (Cost)floor(ToulBar2::costMultiplier))) != MIN_COST) ? (lb + (Cost)floor(ToulBar2::costMultiplier)) : lb);
+}
+inline bool CUT(Cost lb, Cost ub) { return rounding(lb) >= ub; }
+inline bool CSP(Cost lb, Cost ub) { return CUT(lb + UNIT_COST, ub); }
+#endif
+
+#ifdef LONGLONG_COST
+inline Cost rounding(Cost lb)
+{
+    return (((lb % max(UNIT_COST, (Cost)floor(fabs(ToulBar2::costMultiplier)))) != MIN_COST) ? (lb + (Cost)floor(fabs(ToulBar2::costMultiplier))) : lb);
+}
+inline bool CUT(Cost lb, Cost ub)
+{
+    return (rounding(lb) + ToulBar2::deltaUb) >= ub;
+}
+inline bool CSP(Cost lb, Cost ub)
+{
+    return CUT(lb + UNIT_COST, ub);
+}
+#endif
+
+/*
+ * Backtrack exception
+ *
+ */
+
+#ifdef ILOGLUE
+extern IloSolver IlogSolver;
+#define THROWCONTRADICTION ({if (ToulBar2::verbose >= 2) cout << "... contradiction!" << endl; if (ToulBar2::weightedDegree) conflict(); IlogSolver.fail(0); })
+#else
+class Contradiction {
+public:
+    Contradiction()
+    {
+        if (ToulBar2::verbose >= 2)
+            cout << what() << endl;
+    }
+    const char* what() const { return "... contradiction!"; }
+};
+#define THROWCONTRADICTION            \
+    {                                 \
+        if (ToulBar2::weightedDegree) \
+            conflict();               \
+        throw Contradiction();        \
+    }
+#endif
+
+/*
+ * Internal classes and basic data structures used everywhere
+ *
+ */
+
+class Store;
+class Domain;
+class Variable;
+class IntervalVariable;
+class EnumeratedVariable;
+class Constraint;
+class BinaryConstraint;
+class TernaryConstraint;
+class NaryConstraint;
+class WCSP;
+class Solver;
+class Cluster;
+class Separator;
+class TreeDecomposition;
+class VACExtension;
+
+class ConstraintLink {
+public:
+    Constraint* constr;
+    int scopeIndex;
+};
+
+class WCSPLink {
+public:
+    WCSP* const wcsp;
+    int wcspIndex;
+    WCSPLink(WCSP* w, int index)
+        : wcsp(w)
+        , wcspIndex(index)
+    {
+    }
+};
+
+/// < \brief allows one to sort pointers to WCSPLink objects (Constraints or Variables) by their wcspIndex rather than pointer values
+template <class T>
+bool compareWCSPIndex(const T* lhs, const T* rhs)
+{
+    assert(lhs);
+    assert(rhs);
+    int left = lhs->wcspIndex;
+    int right = rhs->wcspIndex;
+    if (left < 0)
+        left = MAX_ELIM_BIN - left; // makes elimTernConstraints after elimBinConstraints after original constraints
+    if (right < 0)
+        right = MAX_ELIM_BIN - right;
+    return left < right;
+}
+template <class T>
+struct Compare {
+    typedef bool (*compare_t)(const T*, const T*);
+};
+template <class T>
+class Set : public set<T*, typename Compare<T>::compare_t> {
+public:
+    Set()
+        : set<T*, typename Compare<T>::compare_t>(compareWCSPIndex<T>)
+    {
+    }
+};
+typedef Set<Constraint> ConstraintSet;
+typedef Set<Variable> VariableSet;
+
+//For incremental diverse solution search - relaxed constraint
+typedef vector<vector<vector<vector<Cost>>>> Mdd; //mdd[layer][source][target][value] = label weight if source---val--->target exists, getUb otherwise
+
+#endif /*TB2TYPES_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2vac.cpp b/code/include/tb2/core/tb2vac.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cfb112512eda68a6f1d868095bc07bd5f0437230
--- /dev/null
+++ b/code/include/tb2/core/tb2vac.cpp
@@ -0,0 +1,1043 @@
+/** \file tb2vac.cpp
+ *  \brief VAC implementation for binary cost functions.
+ *
+ *      \defgroup VAC Virtual Arc Consistency enforcing
+ *  The three phases of VAC are enforced in three different "Pass".
+ *  Bool(P) is never built. Instead specific functions (getVACCost) booleanize the WCSP on the fly.
+ *  The domain variables of Bool(P) are the original variable domains (saved and restored using trailing at each iteration) 
+ *  All the counter data-structures (k) are timestamped to avoid clearing them at each iteration.
+ *  \note Simultaneously AC (and potentially DAC, EAC) are maintained by proper queuing.
+ *  \see <em> Soft Arc Consistency Revisited. </em> Cooper et al. Artificial Intelligence. 2010.
+ */
+
+#include <math.h> /* atan2 */
+#include "search/tb2clusters.hpp"
+#include "tb2vacutils.hpp"
+#define PI 3.14159265
+
+class tVACStat {
+public:
+    int var;
+    Cost sumlb;
+    Long nlb;
+
+    tVACStat(int varin)
+    {
+        var = varin;
+        sumlb = MIN_COST;
+        nlb = 0;
+    }
+};
+
+bool cmp_function(tVACStat* v1, tVACStat* v2)
+{
+    return v1->sumlb > v2->sumlb;
+}
+
+VACExtension::VACExtension(WCSP* w)
+    : wcsp(w)
+    , nbIterations(0)
+    , inconsistentVariable(-1)
+    , prevItThreshold(MIN_COST)
+    , itThreshold(MIN_COST)
+    , breakCycles(0)
+    , minlambda(MAX_COST)
+    , sumlb(MIN_COST)
+    , nlb(0)
+    , sumvars(0)
+    , sumk(0)
+    , theMaxK(0)
+    , bneckVar(-1)
+    , bneckCF(NULL)
+    , bneckCost(MIN_COST)
+{
+    queueP = new stack<pair<int, int>>;
+    queueR = new stack<pair<int, int>>;
+}
+
+VACExtension::~VACExtension()
+{
+    delete queueP;
+    delete queueR;
+}
+
+void VACExtension::init()
+{
+    VACVariable* xi;
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        xi = (VACVariable*)wcsp->getVar(i);
+        xi->setThreshold(MIN_COST);
+    }
+    iniThreshold();
+
+    // for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+    //    tVACStat* vacinfo = new tVACStat(i);
+    //    heapAccess[i] = vacinfo;
+    //    heap.insert(heap.end(), vacinfo);
+    // }
+}
+
+void VACExtension::histogram(Cost c)
+{
+    if (c != MIN_COST) {
+        tScale::iterator it = scaleCost.find(c);
+        if (it == scaleCost.end())
+            scaleCost[c] = 0;
+        else
+            it->second++;
+    }
+}
+
+void VACExtension::histogram()
+{
+    int cumulus = 0;
+    int packetsize = 50;
+    bool toomany = true;
+    while (toomany) {
+        scaleVAC.clear();
+        tScale::iterator it = scaleCost.begin();
+        while (it != scaleCost.end()) {
+            cumulus += it->second;
+            if (cumulus > packetsize) {
+                scaleVAC.push_front(it->first);
+                cumulus = 0;
+            }
+            ++it;
+        }
+        toomany = scaleVAC.size() > 20;
+        if (toomany)
+            packetsize *= 2;
+    }
+
+    if (ToulBar2::verbose >= 1) {
+        cout << "Reverse Costs Range and Scale: " << scaleCost.rbegin()->first;
+        list<Cost>::iterator itl = scaleVAC.begin();
+        while (itl != scaleVAC.end()) {
+            cout << " " << *itl;
+            ++itl;
+        }
+        cout << " " << scaleCost.begin()->first << endl;
+    }
+}
+
+void VACExtension::iniThreshold()
+{
+    if (scaleCost.size() > 0 && scaleVAC.size() == 0)
+        histogram();
+    Cost c = MAX_COST;
+    bool done = false;
+    list<Cost>::iterator it = scaleVAC.begin();
+    while ((it != scaleVAC.end()) && !done) {
+        c = *it;
+        done = (c < wcsp->getUb());
+        ++it;
+    }
+    if (!done) {
+        c = max(UNIT_COST, wcsp->getUb() - 1);
+    }
+    itThreshold = c;
+}
+
+void VACExtension::iniThreshold(Cost threshold)
+{
+    itThreshold = threshold;
+}
+
+void VACExtension::nextScaleCost()
+{
+    Cost c = MAX_COST;
+    bool done = false;
+    list<Cost>::iterator it = scaleVAC.begin();
+    while ((it != scaleVAC.end()) && !done) {
+        c = *it;
+        done = c < itThreshold;
+        ++it;
+    }
+    if (!done)
+        c = itThreshold / (UNIT_COST + UNIT_COST);
+
+    if (Store::getDepth() == 0) {
+        if (c < ToulBar2::costThresholdPre)
+            c = MIN_COST;
+    } else if (c < ToulBar2::costThreshold)
+        c = MIN_COST;
+
+    itThreshold = c;
+}
+
+void VACExtension::resetSupports()
+{ // TODO: reset TernaryConstraint supports
+    for (unsigned int i = 0; i < wcsp->numberOfConstraints(); i++) {
+        Constraint* ctr = wcsp->getCtr(i);
+        if (ctr->isBinary() && ctr->connected()) {
+            ((BinaryConstraint*)ctr)->resetSupports();
+        }
+    }
+    for (int i = 0; i < wcsp->elimBinOrder; i++) {
+        Constraint* ctr = wcsp->elimBinConstrs[i];
+        if (ctr->isBinary() && ctr->connected()) {
+            ((BinaryConstraint*)ctr)->resetSupports();
+        }
+    }
+}
+
+// do not need to revise all variables because we assume soft AC already done
+bool VACExtension::enqueueVAC(Cost threshold, Cost previousThreshold)
+{
+    wcsp->revise(NULL);
+    assert(VAC.empty());
+    assert(previousThreshold == -1 || previousThreshold > threshold);
+
+#ifdef INCREMENTALVAC
+    for (Queue::iterator iter = VAC2.begin(); iter != VAC2.end(); ++iter) {
+        VACVariable* x = (VACVariable*)iter.getElt()->content.var;
+        x->queueVAC();
+    }
+#endif
+    VACVariable* x;
+    TreeDecomposition* td = wcsp->getTreeDec();
+    int bucket2 = cost2log2gub(previousThreshold);
+    if (bucket2 < 0 || bucket2 >= wcsp->getNCBucketSize())
+        bucket2 = wcsp->getNCBucketSize() - 1;
+    int bucket = cost2log2glb(threshold);
+    if (bucket < 0)
+        bucket = 0;
+    for (; bucket <= bucket2; bucket++) {
+        VariableList* varlist = wcsp->getNCBucket(bucket);
+        for (VariableList::iterator iter = varlist->begin(); iter != varlist->end();) {
+            x = (VACVariable*)*iter;
+            if (x->unassigned() && !(x->isNull(x->getMaxCost()))) {
+                if (td) {
+                    if (td->isActiveAndInCurrentClusterSubTree(x->getCluster())) {
+                        x->queueVAC();
+#ifdef INCREMENTALVAC
+                        x->queueVAC2();
+#endif
+                    }
+                } else {
+                    x->queueVAC();
+#ifdef INCREMENTALVAC
+                    x->queueVAC2();
+#endif
+                }
+            }
+            ++iter;
+        }
+    }
+    return !VAC.empty();
+}
+
+bool VACExtension::propagate()
+{
+    if (Store::getDepth() >= abs(ToulBar2::vac)) {
+        inconsistentVariable = -1;
+        return false;
+    }
+
+    if (firstTime()) {
+        init();
+        if (ToulBar2::verbose >= 1)
+            cout << "Dual bound before VAC: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << std::setprecision(DECIMAL_POINT) << endl;
+    }
+
+    bool util = false;
+
+    breakCycles = 0;
+
+    static vector<tuple<VACVariable*, Value, bool>> acSupport; /// \warning NOT SAFE FOR MULTITHREADING!!!
+    bool acSupportOK = false;
+
+    while (!util && itThreshold != MIN_COST) {
+        int storedepth = Store::getDepth();
+        bool isvac = true;
+#ifdef AC2001
+        resetSupports();
+#endif
+#ifdef INCREMENTALVAC
+        prevItThreshold = -1;
+        clear();
+        Store::store();
+#endif
+        while (isvac && itThreshold != MIN_COST) {
+#ifndef INCREMENTALVAC
+            prevItThreshold = -1;
+            clear();
+            Store::store();
+            setNbAssigned(nbvars - nbunassigned);
+#endif
+            minlambda = wcsp->getUb() - wcsp->getLb();
+            inconsistentVariable = -1;
+            nbIterations++;
+            assert(VAC.empty());
+            // skip this current itThreshold if there are no new value removals do be done compared to previous itThreshold
+            while (!enqueueVAC(itThreshold, prevItThreshold) && itThreshold != MIN_COST) {
+                prevItThreshold = itThreshold;
+                nextScaleCost();
+            }
+            if (itThreshold == MIN_COST) {
+                Store::restore(storedepth);
+                inconsistentVariable = -1;
+                return false;
+            }
+            enforcePass1();
+            isvac = isVAC();
+            assert(!isvac || checkPass1());
+            if (!isvac && CSP(wcsp->getLb(), wcsp->getUb())) {
+                if (ToulBar2::weightedDegree)
+                    wcsp->conflict();
+                Store::restore(storedepth);
+                throw Contradiction();
+            }
+            if (ToulBar2::vacValueHeuristic && isvac) {
+                acSupportOK = true;
+                acSupport.clear();
+                // fill SeekSupport with ALL variables if in preprocessing (i.e. before the search)
+                if (Store::getDepth() <= 1 || ToulBar2::debug) {
+                    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+                        ((VACVariable*)wcsp->getVar(i))->queueSeekSupport();
+                    }
+                }
+                // remember first arc consistent domain values in Bool(P) before restoring domains and check VAC-integrality
+                while (!SeekSupport.empty()) {
+                    VACVariable* x = (VACVariable*)SeekSupport.pop();
+                    bool vacintegral = ToulBar2::FullEAC && x->getDomainSize() == 1;
+                    if (vacintegral && (x->getInf() != x->getSupport() || !x->isFullEAC())) {
+                        acSupport.push_back(make_tuple(x, x->getInf(), true));
+                    } else if (!vacintegral && x->cannotbe(x->getSupport())) {
+                        Value bestValue = wcsp->getBestValue(x->wcspIndex);
+                        if (x->canbe(bestValue) && x->getCost(bestValue) == MIN_COST) { // favor solution-based phase saving
+                            acSupport.push_back(make_tuple(x, bestValue, false));
+                        } else {
+                            for (EnumeratedVariable::iterator iterX = x->begin(); iterX != x->end(); ++iterX) {
+                                if (x->getCost(*iterX) == MIN_COST) {
+                                    acSupport.push_back(make_tuple(x, *iterX, false));
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            if (isvac) {
+                ToulBar2::nbTimesIsVAC++;
+                if (itThreshold > 1)
+                    ToulBar2::nbTimesIsVACitThresholdMoreThanOne++;
+
+                if (ToulBar2::RASPSsaveitThresholds) {
+                    ToulBar2::RASPSnbStrictACVariables = wcsp->numberOfVariables() - wcsp->numberOfUnassignedVariables();
+                    double ratio = (ToulBar2::RASPSnbStrictACVariables == 0) ? 0.0000000001 : (((double)ToulBar2::RASPSnbStrictACVariables / (double)wcsp->numberOfVariables()) / (double)itThreshold);
+                    if (ToulBar2::verbose >= 0) {
+                        cout << std::fixed << std::setprecision(7);
+                        cout << "Threshold: " << itThreshold << " NbAssignedVar: " << ToulBar2::RASPSnbStrictACVariables << " Ratio: " << ratio << endl;
+                        cout << std::fixed << std::setprecision(DECIMAL_POINT);
+                    }
+                    ToulBar2::RASPSitThresholds.push_back(std::make_pair(itThreshold, ratio));
+                }
+
+                if (ToulBar2::RASPS) {
+                    ToulBar2::RASPS = false;
+                    assert(ToulBar2::restart < 1);
+                    Store::store();
+
+                    Solver* solver = (Solver*)wcsp->getSolver();
+                    Long storehbfs = ToulBar2::hbfs;
+                    Long storehbfsGlobalLimit = ToulBar2::hbfsGlobalLimit;
+                    Long storehbfsLimit = solver->hbfsLimit;
+                    Long storenbBacktracksLimit = solver->nbBacktracksLimit;
+                    Long storenbBacktracks = solver->nbBacktracks;
+                    Long storerestart = ToulBar2::restart;
+                    bool storeLimited = ToulBar2::limited;
+                    int storeVac = ToulBar2::vac;
+                    bool storeFullEAC = ToulBar2::FullEAC;
+
+                    ToulBar2::hbfs = 0;
+                    ToulBar2::hbfsGlobalLimit = 0;
+                    solver->hbfsLimit = LONGLONG_MAX;
+                    solver->nbBacktracksLimit = solver->nbBacktracks + ToulBar2::RASPSnbBacktracks;
+                    if (ToulBar2::useRASPS <= 1) {
+                        ToulBar2::restart = 1; // random variable selection for breaking ties in DFS
+                    } else {
+                        ToulBar2::restart = -1; // no randomness for LDS
+                    }
+                    ToulBar2::limited = false;
+                    ToulBar2::vac = 0;
+                    ToulBar2::FullEAC = false;
+
+                    Cost lastUB = wcsp->getUb();
+                    try {
+                        try {
+                            // Current WCSP is AC(Bool(P))
+                            vector<int> variables;
+                            vector<Value> values;
+
+                            for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+                                if (wcsp->getVar(i)->enumerated()) {
+                                    EnumeratedVariable* xi = (EnumeratedVariable*)wcsp->getVar(i);
+                                    if (xi->getInf() == xi->getSup()) {
+                                        variables.push_back(i);
+                                        values.push_back(xi->getInf());
+                                    } else {
+                                        xi->queueDAC();
+                                        xi->queueEAC1();
+                                        xi->queueAC();
+                                    }
+                                    xi->findSupport(); // update support values
+                                    xi->propagateNC(); // and update maxcost values before propagate done in assignLS
+                                }
+                            }
+                            if (variables.size() > 0)
+                                wcsp->assignLS(variables, values, true); // option true: make sure already assigned variables are removed from Solver::unassignedVars
+                            wcsp->propagate();
+                            if (ToulBar2::useRASPS <= 1) {
+                                //cout << "call to recursiveSolve from VAC" << endl;
+                                solver->recursiveSolve(wcsp->getLb()); // if a new solution is found, UB will be updated automatically
+                            } else {
+                                //cout << "call to recursiveSolveLDS from VAC" << endl;
+                                solver->recursiveSolveLDS(ToulBar2::useRASPS - 1);
+                            }
+                        } catch (const Contradiction&) {
+                            wcsp->whenContradiction();
+                        }
+                    } catch (const NbBacktracksOut&) {
+                    }
+
+                    ToulBar2::hbfs = storehbfs;
+                    ToulBar2::hbfsGlobalLimit = storehbfsGlobalLimit;
+                    solver->hbfsLimit = storehbfsLimit;
+                    solver->nbBacktracksLimit = storenbBacktracksLimit;
+                    if (solver->nbBacktracksLimit < LONGLONG_MAX)
+                        solver->nbBacktracksLimit += solver->nbBacktracks - storenbBacktracks;
+                    ToulBar2::restart = storerestart;
+                    ToulBar2::limited = storeLimited; // still a complete search
+                    ToulBar2::vac = storeVac;
+                    ToulBar2::FullEAC = storeFullEAC;
+
+                    Store::restore(storedepth);
+                    inconsistentVariable = -1;
+                    return (wcsp->getUb() < lastUB);
+                }
+            }
+
+            if (isvac) {
+                prevItThreshold = itThreshold;
+                nextScaleCost();
+#ifdef INCREMENTALVAC
+                if (itThreshold != MIN_COST) {
+                    while (!wcsp->NC.empty()) { // update maxCost and maxCostValue after value removals by AC2001
+                        EnumeratedVariable* x = (EnumeratedVariable*)wcsp->NC.pop();
+                        Cost maxcost = MIN_COST;
+                        Value maxcostvalue = x->getSup() + 1;
+                        // Warning! the first value must be visited because it may be removed
+                        for (EnumeratedVariable::iterator iter = x->begin(); iter != x->end(); ++iter) {
+                            Cost cost = x->getCost(*iter);
+                            if (LUB(&maxcost, cost) || x->cannotbe(maxcostvalue)) {
+                                maxcostvalue = *iter;
+                            }
+                        }
+                        x->setMaxCostValue(maxcostvalue);
+                        if (maxcost != x->getMaxCost()) {
+                            assert(maxcost < x->getMaxCost());
+                            x->setMaxCost(maxcost);
+                            int newbucket = min(cost2log2gub(maxcost), wcsp->getNCBucketSize() - 1);
+                            x->changeNCBucket(newbucket);
+                        }
+                    }
+                }
+#endif
+            }
+#ifndef INCREMENTALVAC
+            Store::restore(storedepth);
+
+#endif
+        }
+#ifdef INCREMENTALVAC
+        Store::restore(storedepth);
+#endif
+        if (!isvac) {
+            enforcePass2();
+            if (ToulBar2::verbose > 0)
+                cout << "VAC dual bound: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << std::setprecision(DECIMAL_POINT) << "    incvar: " << inconsistentVariable << "    minlambda: " << minlambda << "      itThreshold: " << itThreshold << endl;
+            if (CUT(wcsp->getLb() + minlambda, wcsp->getUb())) {
+                if (ToulBar2::weightedDegree)
+                    wcsp->conflict();
+                throw Contradiction();
+            }
+            util = enforcePass3();
+        } else {
+            nextScaleCost();
+        }
+    }
+
+    if (ToulBar2::vacValueHeuristic && acSupportOK && isVAC()) {
+        // update current unary support if possible && needed
+        for (vector<tuple<VACVariable*, Value, bool>>::iterator iter = acSupport.begin(); iter != acSupport.end(); ++iter) {
+            VACVariable* x = get<0>(*iter);
+            Value val = get<1>(*iter);
+            bool vacintegral = get<2>(*iter);
+            if (x->canbe(val)) {
+                if (x->getCost(val) == MIN_COST) {
+                    if (ToulBar2::verbose > 0 && (x->getSupport() != val || (vacintegral && !x->isFullEAC())))
+                        cout << "CHANGE SUPPORT " << x->getName() << " from " << x->getSupport() << ((x->isFullEAC()) ? "!" : "") << " to " << val << ((vacintegral) ? "!" : "") << endl;
+                    if (vacintegral && !x->isFullEAC()) {
+                        x->setFullEAC(); // TODO: is it better to set VAC-integrality to true even if current unary cost is not zero?
+#ifndef NDEBUG
+                        x->queueFEAC(); // TODO: is it better to set VAC-integrality to true even if some cost functions are violated?
+#endif
+                    }
+                    x->setSupport(val);
+                }
+            } else {
+                if (ToulBar2::verbose > 0)
+                    cout << "WARNING: BAD EAC SUPPORT " << val << " FOR VARIABLE " << *x << endl;
+            }
+        }
+    }
+
+    return util;
+}
+
+bool VACExtension::enforcePass1(VACVariable* xj, VACBinaryConstraint* cij)
+{
+    bool wipeout = false;
+    VACVariable* xi;
+    xi = (VACVariable*)cij->getVarDiffFrom(xj);
+    for (EnumeratedVariable::iterator it = xi->begin(); it != xi->end(); ++it) {
+        Value v = *it;
+        if (xi->getVACCost(v) > MIN_COST) {
+            xi->removeVAC(v);
+        } else if (cij->revise(xi, v)) {
+            wipeout = xi->removeVAC(v);
+            xi->setKiller(v, xj->wcspIndex);
+            queueP->push(pair<int, int>(xi->wcspIndex, v));
+            if (wipeout) {
+                inconsistentVariable = xi->wcspIndex;
+                return true;
+            }
+            xi->queueVAC();
+#ifdef INCREMENTALVAC
+            xi->queueVAC2();
+#endif
+            if (ToulBar2::vacValueHeuristic)
+                xi->queueSeekSupport();
+        }
+    }
+    return false;
+}
+
+void VACExtension::enforcePass1()
+{
+    if (ToulBar2::verbose >= 4)
+        cout << "enforcePass1 itThreshold: " << itThreshold << endl;
+    VACVariable* xj;
+    VACBinaryConstraint* cij;
+
+    while (!VAC.empty()) {
+        xj = (VACVariable*)VAC.pop_first();
+        for (EnumeratedVariable::iterator it = xj->begin(); it != xj->end(); ++it) {
+            if (xj->getVACCost(*it) > MIN_COST)
+                xj->removeVAC(*it);
+        }
+        for (ConstraintList::iterator itc = xj->getConstrs()->begin();
+             itc != xj->getConstrs()->end(); ++itc) {
+            Constraint* c = (*itc).constr;
+            if (c->isBinary()) {
+                cij = (VACBinaryConstraint*)c;
+                if (enforcePass1(xj, cij))
+                    return;
+            }
+        }
+    }
+    inconsistentVariable = -1;
+}
+
+bool VACExtension::checkPass1() const
+{
+    VACBinaryConstraint* cij;
+    VACVariable *xi, *xj;
+    bool supportFound;
+    TreeDecomposition* td = wcsp->getTreeDec();
+
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        xi = (VACVariable*)wcsp->getVar(i);
+        if (td && !td->isActiveAndInCurrentClusterSubTree(xi->getCluster()))
+            continue;
+        for (ConstraintList::iterator iter = xi->getConstrs()->begin();
+             iter != xj->getConstrs()->end(); ++iter) {
+            Constraint* c = (*iter).constr;
+            if (c->isBinary()) {
+                cij = (VACBinaryConstraint*)c;
+                xj = (VACVariable*)cij->getVarDiffFrom(xi);
+                for (EnumeratedVariable::iterator iti = xi->begin(); iti != xi->end(); ++iti) {
+                    Value v = *iti;
+                    supportFound = false;
+                    for (EnumeratedVariable::iterator itj = xj->begin(); itj != xj->end();
+                         ++itj) {
+                        Value w = *itj;
+                        if ((xi->getVACCost(v) == MIN_COST)
+                            && (xj->getVACCost(w) == MIN_COST)
+                            && (cij->getVACCost(xi, xj, v, w) == MIN_COST)) {
+                            supportFound = true;
+                            break;
+                        }
+                    }
+                    if (!supportFound) {
+                        return false;
+                    }
+                }
+            }
+        }
+    }
+    return true;
+}
+
+void VACExtension::enforcePass2()
+{
+    int i0 = inconsistentVariable;
+    int i, j;
+    VACVariable *xi0, *xi, *xj;
+    VACBinaryConstraint* cij;
+    Cost tmplambda;
+    Value v;
+
+    //if (ToulBar2::verbose > 0)  cout << "VAC Enforce Pass 2" << endl;
+
+    assert(i0 >= 0);
+    xi0 = (VACVariable*)wcsp->getVar(i0);
+
+    for (EnumeratedVariable::iterator iti0 = xi0->begin();
+         iti0 != xi0->end(); ++iti0) {
+        v = *iti0;
+        xi0->addToK(v, 1, nbIterations);
+        Cost cost = xi0->getVACCost(v);
+        if (cost > MIN_COST) {
+            if (cost < minlambda) {
+                minlambda = cost; // NB: we don't need to check for bottleneck here as k=1 necessarily
+            }
+        } else
+            xi0->setMark(v, nbIterations);
+    }
+
+    while (!queueP->empty()) {
+        i = queueP->top().first;
+        v = queueP->top().second;
+        queueP->pop();
+        xi = (VACVariable*)wcsp->getVar(i);
+        if (xi->isMarked(v, nbIterations)) {
+            j = xi->getKiller(v);
+            xj = (VACVariable*)wcsp->getVar(j);
+            queueR->push(pair<int, int>(i, v));
+            cij = (VACBinaryConstraint*)xi->getConstr(xj);
+            assert(cij);
+            //if (ToulBar2::verbose > 6) cout << "x" << xi->wcspIndex << "," << v << "   killer: " << xj->wcspIndex << endl;
+
+            for (EnumeratedVariable::iterator itj = xj->begin();
+                 itj != xj->end(); ++itj) {
+                Value w = *itj;
+                Cost costij = cij->getVACCost(xi, xj, v, w);
+                if (costij > MIN_COST) {
+                    int tmpK = xi->getK(v, nbIterations);
+                    if (xj->getKiller(w) == i
+                        && xj->isMarked(w, nbIterations))
+                        tmpK += xj->getK(w, nbIterations);
+                    if (!CUT(wcsp->getLb() + costij,
+                            wcsp->getUb())) {
+                        if ((costij / tmpK) < minlambda) {
+                            minlambda = costij / tmpK;
+                            if (minlambda < UNIT_COST) { //A cost function bottleneck here !
+                                bneckCost = costij;
+                                bneckCF = cij;
+                                bneckVar = -1;
+                            }
+                        }
+                    } else {
+                        if ((costij / tmpK) < minlambda) { // costij should be made infinite to avoid to decrease minlambda
+                            Cost cost = tmpK * minlambda - costij;
+                            assert(cost > MIN_COST);
+                            assert(ToulBar2::verbose < 1 || ((cout << "inflate(C" << cij->getVar(0)->getName() << "," << cij->getVar(1)->getName() << ", (" << ((xi == cij->getVar(0)) ? v : w) << "," << ((xi == cij->getVar(0)) ? w : v) << "), " << cost << ")" << endl), true));
+                            cij->addcost(xi, xj, v, w, cost);
+                        }
+                    }
+                } else {
+                    int tmpK = xi->getK(v,
+                                   nbIterations)
+                        - cij->getK(xj, w, nbIterations);
+                    if (tmpK > 0) {
+                        xj->addToK(w, tmpK,
+                            nbIterations);
+                        cij->setK(xj, w,
+                            xi->getK(v,
+                                nbIterations),
+                            nbIterations);
+                        Cost cost = xj->getVACCost(w);
+                        if (cost == MIN_COST)
+                            xj->setMark(w,
+                                nbIterations);
+                        else { // we assume NC has been done before
+                            assert(!CUT(wcsp->getLb() + cost, wcsp->getUb()));
+                            tmplambda = cost / xj->getK(w, nbIterations);
+                            if (tmplambda < minlambda) {
+                                minlambda = tmplambda;
+                                if (minlambda < UNIT_COST) { // A unary cost bottleneck here
+                                    bneckVar
+                                        = j;
+                                    bneckCF
+                                        = NULL;
+                                    bneckCost
+                                        = cost;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    //if (maxK == 0) {
+    //  maxK = wcsp->getUb() - wcsp->getLb();
+    //}
+    if (ToulBar2::verbose > 1)
+        cout << "minLambda: " << minlambda << "\t\t (dualb = " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << ", primalb = " << wcsp->getDPrimalBound() << ")" << std::setprecision(DECIMAL_POINT) << endl;
+}
+
+bool VACExtension::enforcePass3()
+{
+    bool util = (minlambda >= UNIT_COST);
+    /*if(util) {
+	   Cost ub = wcsp->getUb();
+	   Cost lb = wcsp->getLb();
+	   util = ( (ub - lb)/(10000*ToulBar2::costMultiplier) ) < minlambda;
+	   } */
+    Cost lambda = minlambda;
+
+    //if (ToulBar2::verbose > 2) cout << "VAC Enforce Pass 3.   minlambda " << minlambda << " , var: " << inconsistentVariable << endl;
+    int i, j;
+    VACVariable *xi, *xj;
+    VACBinaryConstraint* cij;
+    int i0 = inconsistentVariable;
+    VACVariable* xi0 = (VACVariable*)wcsp->getVar(i0);
+    Value w;
+
+    int maxk = 0;
+
+    if (!util) { // Empty R ?
+        assert(bneckVar != -1 || bneckCF != NULL);
+        if (bneckVar != -1) {
+            xi = (VACVariable*)wcsp->getVar(bneckVar);
+            xi->setThreshold(bneckCost + UNIT_COST);
+        } else {
+            bneckCF->setThreshold(bneckCost + UNIT_COST);
+        }
+        breakCycles++;
+        if (ToulBar2::verbose > 1) {
+            cout << "BreakCycle: bneckCost=" << bneckCost + UNIT_COST << ", bneckVar=" << bneckVar << ", bneckCF=";
+            if (bneckCF)
+                cout << *bneckCF;
+            else
+                cout << bneckCF;
+            cout << endl;
+        }
+        if (breakCycles >= 5) {
+            if (ToulBar2::verbose > 1)
+                cout << "BreakCycle stops!" << endl;
+            inconsistentVariable = -1;
+            itThreshold = MIN_COST;
+        }
+        return false;
+    }
+    // update general stats
+    nlb++;
+    sumlb += lambda;
+    sumvars += queueR->size();
+    maxk = 0;
+
+    while (!queueR->empty()) {
+        j = queueR->top().first;
+        w = queueR->top().second;
+        queueR->pop();
+        xj = (VACVariable*)wcsp->getVar(j);
+        i = xj->getKiller(w);
+        xi = (VACVariable*)wcsp->getVar(i);
+        cij = (VACBinaryConstraint*)xi->getConstr(xj);
+        assert(cij);
+
+        int xjk = xj->getK(w, nbIterations);
+        if (maxk < xjk)
+            maxk = xjk;
+
+        for (EnumeratedVariable::iterator iti = xi->begin();
+             iti != xi->end(); ++iti) {
+            Value v = *iti;
+            if (cij->getK(xi, v, nbIterations) != 0) {
+                Cost ecost = lambda * cij->getK(xi, v, nbIterations);
+                cij->setK(xi, v, 0, nbIterations);
+                cij->VACextend(xi, v, ecost);
+                // extention from unary to binary cost function may break soft AC/DAC in both directions due to isNull/itThreshold
+                if (ToulBar2::LcLevel == LC_AC) {
+                    xi->queueAC();
+                    xj->queueAC();
+                } else {
+                    if (cij->getDACScopeIndex() == cij->getIndex(xi)) {
+                        xi->queueAC();
+                        xi->queueEAC1();
+                        xj->queueDAC();
+                    } else {
+                        xi->queueDAC();
+                        xj->queueAC();
+                        xj->queueEAC1();
+                    }
+                }
+            }
+        }
+        cij->VACproject(xj, w, lambda * xj->getK(w, nbIterations));
+    }
+    sumk += maxk;
+    if (maxk > theMaxK)
+        theMaxK = maxk;
+
+    xi0->extendAll(lambda);
+    xi0->projectLB(lambda);
+    return true;
+}
+
+// void VACExtension::updateStat(Cost lambda)
+// {
+//   //tVACStat* v = heapAccess[inconsistentVariable];
+//   if(varAssign >= 0) {
+//    tVACStat* v = heapAccess[varAssign];
+//    v->sumlb += lambda;
+//    v->nlb++;
+//   }
+// }
+
+// Cost VACExtension::getVarCostStat( int i )
+// {
+//   tVACStat* v = heap[i];
+//   return v->sumlb;
+// }
+
+// Long VACExtension::getVarTimesStat( int i )
+// {
+//   if(i < 0) return 0;
+//   tVACStat* v = heap[i];
+//   return v->nlb;
+// }
+
+void VACExtension::iniSingleton()
+{
+    singletonI.clear();
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        int size = wcsp->getDomainSize(i);
+        for (int a = 0; a < size; a++)
+            singletonI.insert(MAX_DOMAIN_SIZE * i + a);
+    }
+}
+
+void VACExtension::updateSingleton()
+{
+    set<int>& s1 = singleton;
+    set<int> s2(singletonI);
+    singletonI.clear();
+    set_intersection(s1.begin(), s1.end(),
+        s2.begin(), s2.end(),
+        inserter(singletonI, singletonI.begin()));
+    singleton.clear();
+}
+
+void VACExtension::removeSingleton()
+{
+    set<int>& s = singletonI;
+    set<int>::iterator it = s.begin();
+    while (it != s.end()) {
+        int ivar = *it / MAX_DOMAIN_SIZE;
+        Value a = *it % MAX_DOMAIN_SIZE;
+        Variable* var = wcsp->getVar(ivar);
+        var->remove(a);
+        var->queueNC();
+        ++it;
+    }
+    wcsp->propagate();
+}
+
+void VACExtension::clear()
+{
+    while (!queueP->empty())
+        queueP->pop();
+    while (!queueR->empty())
+        queueR->pop();
+    // Cannot use  VAC.clear() as it will not reset timeStamps which are based on the number of wcsp propagate calls and not VAC iterations
+    while (!VAC.empty())
+        VAC.pop();
+#ifdef INCREMENTALVAC
+    while (!wcsp->NC.empty())
+        wcsp->NC.pop();
+    while (!VAC2.empty())
+        VAC2.pop();
+#endif
+    if (ToulBar2::vacValueHeuristic)
+        while (!SeekSupport.empty())
+            SeekSupport.pop();
+}
+
+void VACExtension::queueVAC(DLink<VariableWithTimeStamp>* link)
+{
+    assert(ToulBar2::vac);
+    VAC.push(link, wcsp->getNbNodes());
+}
+#ifdef INCREMENTALVAC
+void VACExtension::queueVAC2(DLink<VariableWithTimeStamp>* link)
+{
+    assert(ToulBar2::vac);
+    VAC2.push(link, wcsp->getNbNodes());
+}
+#endif
+
+void VACExtension::queueSeekSupport(DLink<VariableWithTimeStamp>* link)
+{
+    assert(ToulBar2::vac);
+    SeekSupport.push(link, wcsp->getNbNodes());
+}
+
+void VACExtension::printStat(bool ini)
+{
+    if (ToulBar2::verbose >= 1) {
+        long double mean = to_double(sumlb) / (long double)nlb;
+        cout << "VAC mean lb/incr: " << std::setprecision(DECIMAL_POINT) << mean << "     total increments: " << nlb
+             << "     cyclesize: " << (double)sumvars / (double)nlb << "     k: " << (double)sumk / (double)nlb << " (mean), " << theMaxK << " (max)" << endl;
+    }
+    if (ini && nlb > 0 && sumlb > MIN_COST && ToulBar2::verbose >= 0) {
+        if (ToulBar2::uai)
+            cout << "VAC dual bound: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << std::setprecision(DECIMAL_POINT) << " energy: " << -(wcsp->Cost2LogProb(wcsp->getLb()) + ToulBar2::markov_log) << " (iter:" << nlb << ")" << endl;
+        else
+            cout << "VAC dual bound: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << std::setprecision(DECIMAL_POINT) << " (iter:" << nlb << ")" << endl;
+    }
+    if (ToulBar2::verbose >= 0) {
+        cout << "Number of VAC iterations: " << nbIterations << endl;
+        cout << "Number of times is VAC: " << ToulBar2::nbTimesIsVAC << " Number of times isvac and itThreshold > 1: " << ToulBar2::nbTimesIsVACitThresholdMoreThanOne << endl;
+    }
+    //sort(heap.begin(), heap.end(), cmp_function);
+    /*cout << "Vars: ";
+	   vector<tVACStat*>::iterator it = heap.begin();
+	   while(it != heap.end()) {
+	   tVACStat* v = *it;
+	   if(v->sumlb != MIN_COST) cout << "(" << v->var << "," << v->sumlb << ") ";
+	   ++it;
+	   }
+	   cout << endl; */
+
+    sumk = 0;
+    theMaxK = 0;
+    sumvars = 0;
+    sumlb = MIN_COST;
+    nlb = 0;
+}
+
+void VACExtension::printTightMatrix()
+{
+    ofstream ofs("problem.dat");
+
+    Cost Top = wcsp->getUb();
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        for (unsigned int j = 0; j < wcsp->numberOfVariables(); j++) {
+            if (i != j) {
+                EnumeratedVariable* x = (EnumeratedVariable*)wcsp->getVar(i);
+                EnumeratedVariable* y = (EnumeratedVariable*)wcsp->getVar(j);
+                Constraint* bctr = x->getConstr(y);
+                double t = 0;
+                if (bctr)
+                    t = bctr->getTightness();
+                if (t > to_double(Top))
+                    t = to_double(Top);
+                t = t * 256.0 / to_double(Top);
+                ofs << t << " ";
+            } else
+                ofs << 0 << " ";
+        }
+        ofs << endl;
+    }
+}
+
+/* Min-Sum diffusion algorithm */
+void VACExtension::minsumDiffusion()
+{
+    for (int times = 0; times < 2; times++) {
+        bool change = true;
+        int maxit = ToulBar2::minsumDiffusion;
+        if (ToulBar2::verbose >= 0) {
+            cout << "MinSumDiffusion: " << endl;
+            cout << "   max iterations " << maxit << endl;
+            cout << "   dual bound = " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << std::setprecision(DECIMAL_POINT) << endl;
+        }
+        int ntimes = 0;
+        while (change && (ntimes < maxit)) {
+            change = false;
+            int nchanged = 0;
+            for (unsigned int i = 0; i < wcsp->numberOfVariables();
+                 i++)
+                if (wcsp->unassigned(i)) {
+                    VACVariable* evar = (VACVariable*)wcsp->getVar(i);
+                    if (evar->averaging()) {
+                        change = true;
+                        nchanged++;
+                        evar->findSupport();
+                    }
+                }
+            ntimes++;
+            //cout << "it " << ntimes << "   changed: " << nchanged << endl;
+        }
+        if (ToulBar2::verbose >= 0)
+            cout << "   done iterations: " << ntimes << endl;
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++)
+            if (wcsp->unassigned(i)) {
+                EnumeratedVariable* evar = (EnumeratedVariable*)wcsp->getVar(i);
+                evar->findSupport();
+            }
+        for (unsigned int i = 0; i < wcsp->numberOfConstraints(); i++)
+            if (wcsp->getCtr(i)->connected())
+                wcsp->getCtr(i)->propagate();
+        for (int i = 0; i < wcsp->getElimBinOrder(); i++)
+            if (wcsp->getElimBinCtr(i)->connected()
+                && !wcsp->getElimBinCtr(i)->isSep())
+                wcsp->getElimBinCtr(i)->propagate();
+        for (int i = 0; i < wcsp->getElimTernOrder(); i++)
+            if (wcsp->getElimTernCtr(i)->connected()
+                && !wcsp->getElimTernCtr(i)->isSep())
+                wcsp->getElimTernCtr(i)->propagate();
+        wcsp->propagate();
+        if (ToulBar2::verbose >= 0)
+            cout << "   dual bound = " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << std::setprecision(DECIMAL_POINT) << endl;
+        //    printTightMatrix();
+    }
+}
+
+Cost VACExtension::RASPSFindItThreshold()
+{
+    Cost result = ToulBar2::costThreshold;
+    unsigned int size = ToulBar2::RASPSitThresholds.size();
+
+    if (size > 0) {
+        if (size < 3) {
+            return ToulBar2::RASPSitThresholds[size - 1].first;
+        }
+
+        double lastRatio = ToulBar2::RASPSitThresholds[size - 1].second;
+        for (unsigned int i = 0; i < size; i++) {
+            ToulBar2::RASPSitThresholds[i].second = ToulBar2::RASPSitThresholds[i].second / lastRatio;
+        }
+
+        unsigned int i = 1;
+        double stepSize = 2.0 / (double)size;
+        while (i < size - 1 && atan2(ToulBar2::RASPSitThresholds[i + 1].second - ToulBar2::RASPSitThresholds[i - 1].second, stepSize) * 180.0 / PI < (double)abs(ToulBar2::RASPSangle)) {
+            result = ToulBar2::RASPSitThresholds[i].first;
+            i++;
+        }
+    }
+    return result;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2vac.hpp b/code/include/tb2/core/tb2vac.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..85ceef7e6ee4b7a0b62375e7d5995f710a51ef67
--- /dev/null
+++ b/code/include/tb2/core/tb2vac.hpp
@@ -0,0 +1,113 @@
+/** \file tb2vac.hpp
+ *  \brief Enforce VAC in a WCSP.
+ */
+
+#ifndef TB2VAC_HPP_
+#define TB2VAC_HPP_
+
+#include "utils/tb2queue.hpp"
+
+#define INCREMENTALVAC
+//#define AC2001
+
+class tVACStat;
+class VACVariable;
+class VACBinaryConstraint;
+class VACTernaryConstraint;
+
+typedef map<Cost, int> tScale;
+
+/**
+ * The class that enforces VAC
+ */
+class VACExtension {
+
+private:
+    WCSP* wcsp; /**< Reference to the WCSP that will be processed */
+    Queue VAC; /**< Non backtrackable list; AC2001 queue used for Pass1 inside VAC */
+#ifdef INCREMENTALVAC
+    Queue VAC2; /**< Non backtrackable list; AC2001 queue used for incremental VAC */
+#endif
+    Queue SeekSupport; /**< Non backtrackable list; collect all variables with a deletion caused by binary constraints during Pass1 */
+    Long nbIterations; /**< Incremented at each pass, used as a TimeStamp */
+    int inconsistentVariable; /**< WipeOut variable, Used also to check after enforcePass1() if the network is VAC */
+
+    Cost prevItThreshold; /**< The previous cost threshold (theta) for the iterative threshold descent */
+    Cost itThreshold; /**< The cost threshold (theta) for the iterative threshold descent */
+    int breakCycles; /**< Number of iterations with no c0 increase */
+    tScale scaleCost; /**w The list of all costs used in the WCSP ? */
+    list<Cost> scaleVAC; /**< The scale of costs used for the thresold descent */
+
+    Cost minlambda; /**< The amount of cost that will go to c0 (lambda) */
+
+    stack<pair<int, Value>>* queueP; /**< Values removed by hard AC (created in Pass1, used in Pass2) */
+    stack<pair<int, Value>>* queueR; /**< Minimal set of deletions needed to increase c0 (created in Pass2, used in Pass3) */
+
+    void enforcePass1(); /**< Enforces instrumented hard AC (Phase 1) */
+    bool enforcePass1(VACVariable* xj, VACBinaryConstraint* cij); /**< Revises /a xj wrt /a cij and updates /a k */
+    bool checkPass1() const; /**< Checks if Bool(P) is AC */
+    void enforcePass2(); /**< Finds a minimal set of deletions needed for wipeout and computes k and lambda */
+    bool enforcePass3(); /**< Project and extends costs to increase c0 according to the plan */
+    void enforcePass3VACDecomposition(); /**< Enforces VAC decomposition pass 3 (substract cost and decrease top) */
+
+    void clear(); /**< empty all VAC queues */
+    void resetSupports(); /**< reset binary supports for AC2001 optimal O(ed^2) complexity */
+    bool enqueueVAC(Cost threshold, Cost previousThreshold); /**< selects more variables for AC2001 queue having unary costs between threshold and previousThreshold ; returns false if nothing to be done */
+
+    Cost sumlb;
+    Long nlb;
+    Long sumvars;
+    int sumk;
+    int theMaxK;
+
+    int bneckVar;
+    VACBinaryConstraint* bneckCF;
+    Cost bneckCost;
+
+public:
+    VACExtension(WCSP* w);
+    ~VACExtension();
+
+    bool firstTime() { return nbIterations == 0; } /**< Is it the first iteration ? */
+
+    bool isVAC() const { return (inconsistentVariable == -1); } /**< Is the WCSP VAC-epsilon ? Pass1 must be enforced */
+    bool propagate(); /**< Starts one VAC iteration */
+    bool isNull(Cost c) const { return (c < itThreshold); } /**< is the Cost significant (above itThreshold aka theta) */
+
+    void queueVAC(DLink<VariableWithTimeStamp>* link);
+#ifdef INCREMENTALVAC
+    void queueVAC2(DLink<VariableWithTimeStamp>* link);
+#endif
+    void queueSeekSupport(DLink<VariableWithTimeStamp>* link);
+
+    void init();
+    void iniThreshold(); /**< Initialize itThreshold to the strongest cost in the cost scale */
+    void iniThreshold(Cost c);
+    Cost getThreshold() { return itThreshold; }
+    void nextScaleCost(); /**< Sets ItThreshold to the next scale */
+    void histogram(Cost c);
+    void histogram(); /**< Computes the ScaleVAC splitting the cost scale in 20 buckets or less */
+
+    set<int> singletonI;
+    set<int> singleton;
+
+    void iniSingleton();
+    void updateSingleton();
+    void removeSingleton();
+
+    void printStat(bool ini = false);
+    void printTightMatrix();
+
+    void minsumDiffusion(); /**< MinSumDiffusion implementation */
+
+    Cost RASPSFindItThreshold();
+};
+
+#endif /*TB2VAC_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2vacutils.cpp b/code/include/tb2/core/tb2vacutils.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7ff4cbce62603e67501c314c0e3ab5c9ffaff73a
--- /dev/null
+++ b/code/include/tb2/core/tb2vacutils.cpp
@@ -0,0 +1,475 @@
+/*
+ * ****** Set of useful classes to enforce VAC
+ */
+
+#include "search/tb2clusters.hpp"
+#include "tb2vacutils.hpp"
+
+VACVariable::VACVariable(WCSP* wcsp, string n, Value iinf, Value isup)
+    : EnumeratedVariable(wcsp, n, iinf, isup)
+    , vac(wcsp->vac)
+    , myThreshold(MIN_COST)
+{
+    init();
+}
+
+VACVariable::VACVariable(WCSP* wcsp, string n, Value* d, int dsize)
+    : EnumeratedVariable(wcsp, n, d, dsize)
+    , vac(wcsp->vac)
+    , myThreshold(MIN_COST)
+{
+    init();
+}
+
+VACVariable::~VACVariable()
+{
+}
+
+void VACVariable::init()
+{
+    maxk_timeStamp = 0;
+    maxk = 0;
+    for (unsigned int a = 0; a < getDomainInitSize(); a++) {
+        mark.push_back(0);
+        k_timeStamp.push_back(0);
+        k.push_back(0);
+        killer.push_back(0);
+    }
+    linkVACQueue.content.var = this;
+    linkVACQueue.content.timeStamp = -1;
+#ifdef INCREMENTALVAC
+    linkVAC2Queue.content.var = this;
+    linkVAC2Queue.content.timeStamp = -1;
+#endif
+    linkSeekSupport.content.var = this;
+    linkSeekSupport.content.timeStamp = -1;
+}
+
+//void VACVariable::remove(Value value)
+//{
+//    if (ToulBar2::singletonConsistency)
+//        vac->singleton.insert(MAX_DOMAIN_SIZE * wcspIndex + value);
+//    EnumeratedVariable::remove(value);
+//}
+//
+//void VACVariable::removeFast(Value value)
+//{
+//    if (ToulBar2::singletonConsistency)
+//        vac->singleton.insert(MAX_DOMAIN_SIZE * wcspIndex + value);
+//    EnumeratedVariable::removeFast(value);
+//}
+//
+//void VACVariable::increase(Value newInf)
+//{
+//    if (ToulBar2::singletonConsistency)
+//        for (int i = inf; i <= newInf; i++)
+//            vac->singleton.insert(MAX_DOMAIN_SIZE * wcspIndex + i);
+//    EnumeratedVariable::increase(newInf);
+//}
+//
+//void VACVariable::decrease(Value newSup)
+//{
+//    if (ToulBar2::singletonConsistency)
+//        for (int i = sup; i >= newSup; i--)
+//            vac->singleton.insert(MAX_DOMAIN_SIZE * wcspIndex + i);
+//    EnumeratedVariable::decrease(newSup);
+//}
+
+/******************************
+ * min-sum diffusion algorithm
+ */
+
+bool VACVariable::averaging()
+{
+    Tuple tuple;
+    Cost Top = wcsp->getUb();
+    bool change = false;
+    EnumeratedVariable* x;
+    EnumeratedVariable* y;
+    Constraint* ctr = NULL;
+    ConstraintList::iterator itc = getConstrs()->begin();
+    if (itc != getConstrs()->end())
+        ctr = (*itc).constr;
+    while (ctr) {
+        if (ctr->isBinary()) {
+            BinaryConstraint* bctr = (BinaryConstraint*)ctr;
+            x = (EnumeratedVariable*)bctr->getVarDiffFrom((Variable*)this);
+            for (iterator it = begin(); it != end(); ++it) {
+                Cost cu = getCost(*it);
+                Cost cmin = Top;
+                for (iterator itx = x->begin(); itx != x->end(); ++itx) {
+                    Cost cbin = bctr->getCost(this, x, *it, *itx);
+                    if (cbin < cmin)
+                        cmin = cbin;
+                }
+                assert(cmin < Top);
+                Double mean = to_double(cmin + cu) / 2.;
+                Double extc = to_double(cu) - mean;
+                if (abs(extc) >= 1) {
+                    Cost costi = (Long)extc;
+                    for (iterator itx = x->begin(); itx != x->end(); ++itx) {
+                        bctr->addcost(this, x, *it, *itx, costi);
+                    }
+                    if (mean > to_double(cu))
+                        project(*it, -costi);
+                    else
+                        extend(*it, costi);
+                    change = true;
+                }
+            }
+        } else if (ctr->isTernary() && !ctr->isSep()) {
+            TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+            x = (EnumeratedVariable*)tctr->getVar(0);
+            if (x == this)
+                x = (EnumeratedVariable*)tctr->getVar(1);
+            y = (EnumeratedVariable*)tctr->getVarDiffFrom((Variable*)this, (Variable*)x);
+            for (iterator it = begin(); it != end(); ++it) {
+                Cost cu = getCost(*it);
+                Cost cmin = Top;
+                for (iterator itx = x->begin(); itx != x->end(); ++itx) {
+                    for (iterator ity = y->begin(); ity != y->end(); ++ity) {
+                        Cost ctern = tctr->getCost(this, x, y, *it, *itx, *ity);
+                        if (ctern < cmin)
+                            cmin = ctern;
+                    }
+                }
+                assert(cmin < Top);
+                Double mean = to_double(cmin + cu) / 2.;
+                Double extc = to_double(cu) - mean;
+                if (abs(extc) >= 1) {
+                    Cost costi = (Long)extc;
+                    for (iterator itx = x->begin(); itx != x->end(); ++itx) {
+                        for (iterator ity = y->begin(); ity != y->end(); ++ity) {
+                            tctr->addCost(this, x, y, *it, *itx, *ity, costi);
+                        }
+                    }
+                    if (mean > to_double(cu))
+                        project(*it, -costi);
+                    else
+                        extend(*it, costi);
+                    change = true;
+                }
+            }
+        } else if (ctr->isNary() && !ctr->isSep()) {
+            NaryConstraint* nctr = (NaryConstraint*)ctr;
+            for (iterator it = begin(); it != end(); ++it) {
+                Cost cu = getCost(*it);
+                Cost cmin = Top;
+                int tindex = nctr->getIndex(this);
+                Cost cost;
+                Long nbtuples = 0;
+                nctr->first();
+                while (nctr->next(tuple, cost)) {
+                    nbtuples++;
+                    if (toValue(tuple[tindex]) == (*it) && cost < cmin)
+                        cmin = cost;
+                }
+                if (nctr->getDefCost() < cmin && nbtuples < nctr->getDomainSizeProduct() / getDomainSize())
+                    cmin = nctr->getDefCost();
+                //				assert(cmin < Top);
+                Double mean = to_double(cmin + cu) / 2.;
+                Double extc = to_double(cu) - mean;
+                if (abs(extc) >= 1) {
+                    Cost costi = (Cost)extc;
+                    nctr->addtoTuples(this, *it, costi);
+                    if (mean > to_double(cu))
+                        project(*it, -costi);
+                    else
+                        extend(*it, costi);
+                    change = true;
+                }
+            }
+        }
+        ++itc;
+        if (itc != getConstrs()->end())
+            ctr = (*itc).constr;
+        else
+            ctr = NULL;
+    }
+    return change;
+}
+
+/************************************************************
+ * VACBinaryConstraint:
+ *   A class that stores information about a binary cost function
+ */
+
+VACBinaryConstraint::VACBinaryConstraint(WCSP* wcsp, EnumeratedVariable* xx, EnumeratedVariable* yy, vector<Cost>& tab)
+    : BinaryConstraint(wcsp, xx, yy, tab)
+    , myThreshold(MIN_COST)
+{
+    for (unsigned int a = 0; a < xx->getDomainInitSize(); a++) {
+        kX.push_back(0);
+        kX_timeStamp.push_back(0);
+    }
+    for (unsigned int b = 0; b < yy->getDomainInitSize(); b++) {
+        kY.push_back(0);
+        kY_timeStamp.push_back(0);
+    }
+}
+
+VACBinaryConstraint::VACBinaryConstraint(WCSP* wcsp)
+    : BinaryConstraint(wcsp)
+    , myThreshold(MIN_COST)
+{
+}
+
+VACBinaryConstraint::~VACBinaryConstraint()
+{
+}
+
+void VACBinaryConstraint::VACproject(VACVariable* x, Value v, Cost c)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "project(C" << getVar(0)->getName() << "," << getVar(1)->getName() << ", (" << x->getName() << "," << v << "), " << c << ")" << endl), true));
+    wcsp->revise(this);
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (td)
+        td->addDelta(cluster, x, v, c);
+
+    int index = x->toIndex(v);
+    // TO BE REPLACED BY A LOOP ON THE DOMAIN IN ORDER TO AVOID SUBTRACTING TOP???
+    if (!getIndex(x))
+        deltaCostsX[index] += c;
+    else
+        deltaCostsY[index] += c;
+    assert(getCost((EnumeratedVariable*)x, (EnumeratedVariable*)getVarDiffFrom(x), v, getVarDiffFrom(x)->getInf()) >= MIN_COST);
+    assert(getCost((EnumeratedVariable*)x, (EnumeratedVariable*)getVarDiffFrom(x), v, getVarDiffFrom(x)->getSup()) >= MIN_COST);
+    x->VACproject(v, c);
+}
+
+void VACBinaryConstraint::VACextend(VACVariable* x, Value v, Cost c)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "extend(C" << getVar(0)->getName() << "," << getVar(1)->getName() << ", (" << x->getName() << "," << v << "), " << c << ")" << endl), true));
+
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (td)
+        td->addDelta(cluster, x, v, -c);
+
+    int index = x->toIndex(v);
+    // TO BE REPLACED BY A LOOP ON THE DOMAIN IN ORDER TO AVOID SUBTRACTING TOP???
+    if (!getIndex(x))
+        deltaCostsX[index] -= c;
+    else
+        deltaCostsY[index] -= c;
+    x->VACextend(v, c);
+}
+
+bool VACBinaryConstraint::revise(VACVariable* var, Value v)
+{
+    wcsp->revise(this);
+    VACVariable* xi = (VACVariable*)getVar(0);
+    VACVariable* xj = (VACVariable*)getVar(1);
+    Value sup = getSupport(var, v);
+    if (var != xi) {
+        xi = (VACVariable*)getVar(1);
+        xj = (VACVariable*)getVar(0);
+    }
+
+    if (xj->canbe(sup)) {
+        if (xj->getVACCost(sup) > MIN_COST) {
+            xj->removeVAC(sup);
+        } else {
+            if (getVACCost(xi, xj, v, sup) == MIN_COST) {
+                return false;
+            }
+        }
+    }
+
+    for (EnumeratedVariable::iterator it = xj->lower_bound(sup + 1); it != xj->end(); ++it) {
+        Value w = *it;
+        if (xj->getVACCost(w) > MIN_COST) {
+            xj->removeVAC(w);
+        } else {
+            if (getVACCost(xi, xj, v, w) == MIN_COST) {
+                setSupport(xi, v, w);
+                return false;
+            }
+        }
+    }
+
+#ifndef AC2001
+    for (EnumeratedVariable::iterator it = xj->upper_bound(sup - 1); it != xj->rend(); --it) {
+        Value w = *it;
+        if (xj->getVACCost(w) > MIN_COST) {
+            xj->removeVAC(w);
+        } else {
+            if (getVACCost(xi, xj, v, w) == MIN_COST) {
+                setSupport(xi, v, w);
+                return false;
+            }
+        }
+    }
+#endif
+
+    return true;
+}
+
+/************************************************************
+ * VACTernaryConstraint:
+ *   A class that stores information about a ternary cost function
+ */
+/*
+VACTernaryConstraint::VACTernaryConstraint (WCSP *wcsp, EnumeratedVariable *xx, EnumeratedVariable *yy, EnumeratedVariable *zz, BinaryConstraint *xy, BinaryConstraint *xz, BinaryConstraint *yz, vector<Cost> &tab) :  TernaryConstraint(wcsp, xx, yy, zz, xy, xz, yz, tab, storeCost), myThreshold(MIN_COST)
+{
+   for (int a = 0; a < xx->getDomainInitSize(); a++) {
+	   	kX.push_back(0);
+	   	kX_timeStamp.push_back(0);
+   }
+   for (int b = 0; b < yy->getDomainInitSize(); b++) {
+	   	kY.push_back(0);
+	   	kY_timeStamp.push_back(0);
+   }
+   for (int c = 0; c < zz->getDomainInitSize(); c++) {
+	   	kZ.push_back(0);
+	   	kZ_timeStamp.push_back(0);
+   }
+}
+
+VACTernaryConstraint::VACTernaryConstraint (WCSP *wcsp) : TernaryConstraint(wcsp) , myThreshold(MIN_COST)
+{
+   for (int a = 0; a < wcsp->getMaxDomainSize(); a++) {
+	   	kX.push_back(0);
+	   	kX_timeStamp.push_back(0);
+   }
+   for (int b = 0; b < wcsp->getMaxDomainSize(); b++) {
+	   	kY.push_back(0);
+	   	kY_timeStamp.push_back(0);
+   }
+   for (int c = 0; c < wcsp->getDomainInitSize(); c++) {
+	   	kZ.push_back(0);
+	   	kZ_timeStamp.push_back(0);
+   }
+}
+
+VACTernaryConstraint::~VACTernaryConstraint ()
+{
+}
+
+void VACTernaryConstraint::VACproject (VACVariable* x, Value v, Cost c) {
+  assert(ToulBar2::verbose < 4 || ((cout << "project(C" << getVar(0)->getName() << "," << getVar(1)->getName() << "," << getVar(2)->getName() << ", (" << x->getName() << "," << v << "), " << c << ")" << endl), true));
+
+  TreeDecomposition* td = wcsp->getTreeDec();
+  if(td) td->addDelta(cluster,x,v,c);
+
+  int index = x->toIndex(v);
+  // TO BE REPLACED BY A LOOP ON THE DOMAIN IN ORDER TO AVOID SUBTRACTING TOP???
+  if(getIndex(x)==0) deltaCostsX[index] += c;
+  else if(getIndex(x)==1) deltaCostsY[index] += c;
+  else deltaCostsZ[index] += c;
+  x->VACproject(v, c);
+}
+
+void VACTernaryConstraint::VACextend(VACVariable* x, Value v, Cost c) {
+  assert(ToulBar2::verbose < 4 || ((cout << "extend(C" << getVar(0)->getName() << "," << getVar(1)->getName() << "," << getVar(2)->getName() << ", (" << x->getName() << "," << v << "), " << c << ")" << endl), true));
+
+  TreeDecomposition* td = wcsp->getTreeDec();
+  if(td) td->addDelta(cluster,x,v,-c);
+
+  int index = x->toIndex(v);
+  // TO BE REPLACED BY A LOOP ON THE DOMAIN IN ORDER TO AVOID SUBTRACTING TOP???
+  if(getIndex(x)==0) deltaCostsX[index] -= c;
+  else if(getIndex(x)==1) deltaCostsY[index] -= c;
+  else deltaCostsZ[index] -= c;
+  x->VACextend(v, c);
+}
+
+int VACTernaryConstraint::getK (VACVariable* var, Value v, Long timeStamp) {
+  if(var == (VACVariable*) getVar(0)) {
+  	if(kX_timeStamp[var->toIndex(v)] < timeStamp) return 0;
+  	else return kX[var->toIndex(v)];
+  }  else if(var == (VACVariable*) getVar(1)) {
+  	if(kY_timeStamp[var->toIndex(v)] < timeStamp) return 0;
+  	else return kY[var->toIndex(v)];
+  }  else {
+	if(kZ_timeStamp[var->toIndex(v)] < timeStamp) return 0;
+	else return kZ[var->toIndex(v)];
+  }
+}
+
+void VACTernaryConstraint::setK (VACVariable* var, Value v, int c, Long timeStamp) {
+  if(var == getVar(0)) {
+  	kX[var->toIndex(v)] = c;
+  	kX_timeStamp[var->toIndex(v)] = timeStamp;
+  } else if(var == getVar(1)) {
+    kY[var->toIndex(v)] = c;
+   	kY_timeStamp[var->toIndex(v)] = timeStamp; 					   
+  }	 else {
+	kZ[var->toIndex(v)] = c;
+	kZ_timeStamp[var->toIndex(v)] = timeStamp;
+  }
+}
+
+bool VACTernaryConstraint::isNull (Cost c)
+{
+  VACVariable* xi = (VACVariable*) getVar(0);
+  return (xi->isSimplyNull(c) || (c < myThreshold));
+}
+
+bool VACTernaryConstraint::revise (VACVariable* var, Value v) {
+  bool wipeout = false;
+  VACVariable* xi = (VACVariable*) getVar(0);
+  VACVariable* xj = (VACVariable*) getVar(1);
+  VACVariable* xl = (VACVariable*) getVar(2);
+  pair<Value,Value> sup = getSupport(var,v);
+  pair<Value,Value> minsup = sup;
+  if(var != xi) {
+	  if (var != xj) {
+		 xi = (VACVariable*)getVar(2); xj = (VACVariable*)getVar(0); xl = (VACVariable*)getVar(1);
+	  } else {
+		 xi = (VACVariable*)getVar(1); xj = (VACVariable*)getVar(0);
+	  }
+  }
+  Cost cost, minCost = wcsp->getUb();
+
+  assert(getindex(xj) < getindex(xl)); // check support is correctly oriented w.r.t. xj/first and xl/second
+  if(xj->canbe(sup.first) && xl->canbe(sup.second)) {
+	  bool unarytest = true;
+	  if(xj->getVACCost(sup.first) != MIN_COST) { wipeout = xj->removeVAC(sup.first);  unarytest= false;}
+	  if(xl->getVACCost(sup.second) != MIN_COST) { wipeout = xl->removeVAC(sup.second); unarytest= false;}
+	  if (unarytest) {
+		  if (getVACCost(xi,xj,xl,v,sup.first,sup.second) == MIN_COST) {
+		    return false;
+		  }
+	  }
+  }
+
+  for (EnumeratedVariable::iterator it = xj->lower_bound(sup); it != xj->end(); ++it) {
+	  Value w = *it;	
+	  if(xj->getVACCost(w) != MIN_COST) { wipeout = xj->removeVAC(w); xj->queueVAC(); }
+	  else {
+	      cost = getVACCost(xi,xj,v, w);
+	      if (cost == MIN_COST) {		
+	      	setSupport(xi,v,w);
+	        return false;
+	      } else if (cost < minCost) {
+	      	  minCost = cost;
+	          minsup = w;
+	      }
+	  }
+  }
+  for (EnumeratedVariable::iterator it = xj->begin(); it != xj->lower_bound(sup); ++it) {
+	  Value w = *it;	
+	  if(xj->getVACCost(w) != MIN_COST) { wipeout = xj->removeVAC(w); xj->queueVAC(); }
+	  else {
+	      cost = getVACCost(xi,xj,v, w);
+	      if (cost == MIN_COST) {		
+	      	setSupport(xi,v,w);
+	        return false;
+	      } else if (cost < minCost) {
+	      	  minCost = cost;
+	          minsup = w;
+	      }
+	  }
+  }
+
+  setSupport(xi,v,minsup);
+  return true;
+}
+ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2vacutils.hpp b/code/include/tb2/core/tb2vacutils.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..e3d98ec1ce714aac8c756b149821088cf4da7c98
--- /dev/null
+++ b/code/include/tb2/core/tb2vacutils.hpp
@@ -0,0 +1,298 @@
+/** \file tb2vacutils.hpp
+ *  \brief Set of useful classes to enforce VAC
+ */
+
+#ifndef TB2VACUTILS_HPP_
+#define TB2VACUTILS_HPP_
+
+#include "tb2enumvar.hpp"
+#include "tb2binconstr.hpp"
+//#include "tb2ternaryconstr.hpp"
+#include "tb2vac.hpp"
+
+class VACVariable : public EnumeratedVariable {
+
+public:
+private:
+    VACExtension* vac; /**< Ref. to the VAC data-structures */
+
+    vector<Long> mark; /**< The boolean M used to mark values whose deletion is needed to wipe-out */
+    vector<Long> k_timeStamp; /**< timestamp for the counter k (one per value) */
+    vector<int> k; /**< Number of cost requests per value for all cost functions */
+    vector<int> killer; /**< The killer of each value : the other variable index (binary case)*/
+
+    int maxk; /**< The Max number of cost requests seen on this variable, used for stats */
+    Long maxk_timeStamp; /**< timestamp for maxk */
+
+    StoreCost myThreshold; /** The local threshold used to break loops */
+
+    DLink<VariableWithTimeStamp> linkVACQueue;
+#ifdef INCREMENTALVAC
+    DLink<VariableWithTimeStamp> linkVAC2Queue;
+#endif
+    DLink<VariableWithTimeStamp> linkSeekSupport;
+
+    void init();
+
+public:
+    VACVariable(WCSP* wcsp, string n, Value iinf, Value isup);
+    VACVariable(WCSP* wcsp, string n, Value* d, int dsize);
+    ~VACVariable();
+
+    bool removeVAC(Value v)
+    {
+        if (v == inf) {
+            if (v == sup)
+                return true;
+            inf = domain.increase(v + 1);
+        } else if (v == sup) {
+            if (v == inf)
+                return true;
+            sup = domain.decrease(v - 1);
+        } else if (canbe(v)) {
+            domain.erase(v);
+        }
+#ifdef INCREMENTALVAC
+        if (v == maxCostValue || PARTIALORDER) {
+            queueNC();
+        }
+#endif
+        return false;
+    }
+
+    int getMaxK(Long timeStamp)
+    {
+        if (maxk_timeStamp < timeStamp)
+            return 0;
+        else
+            return maxk;
+    }
+
+    int getK(Value v, Long timeStamp)
+    {
+        if (k_timeStamp[toIndex(v)] < timeStamp)
+            return 0;
+        else
+            return k[toIndex(v)];
+    }
+    void setK(Value v, int c, Long timeStamp)
+    {
+        k[toIndex(v)] = c;
+        k_timeStamp[toIndex(v)] = timeStamp;
+        if (maxk_timeStamp < timeStamp) {
+            maxk = 0;
+            maxk_timeStamp = timeStamp;
+        }
+    }
+
+    void addToK(Value v, int c, Long timeStamp)
+    {
+        if (k_timeStamp[toIndex(v)] < timeStamp)
+            k[toIndex(v)] = c;
+        else
+            k[toIndex(v)] += c;
+        if (maxk_timeStamp < timeStamp)
+            maxk = k[toIndex(v)];
+        else if (maxk < k[toIndex(v)])
+            maxk = k[toIndex(v)];
+        maxk_timeStamp = timeStamp;
+        k_timeStamp[toIndex(v)] = timeStamp;
+    }
+
+    bool isMarked(Value v, Long timeStamp) { return (mark[toIndex(v)] >= timeStamp); }
+    void setMark(Value v, Long timeStamp) { mark[toIndex(v)] = timeStamp; }
+
+    int getKiller(Value v) { return killer[toIndex(v)]; }
+    void setKiller(Value v, int i) { killer[toIndex(v)] = i; }
+
+    Cost getVACCost(Value v)
+    {
+        Cost c = getCost(v);
+        if (isNull(c))
+            return MIN_COST;
+        else
+            return c;
+    }
+
+    void setThreshold(Cost c) { myThreshold = c; }
+    Cost getThreshold() { return myThreshold; }
+
+    bool isSimplyNull(Cost c) { return (vac->isNull(c)); }
+    bool isNull(Cost c) { return (vac->isNull(c) || (c < myThreshold)); }
+
+    void queueVAC() { wcsp->vac->queueVAC(&linkVACQueue); }
+#ifdef INCREMENTALVAC
+    void queueVAC2()
+    {
+        wcsp->vac->queueVAC2(&linkVAC2Queue);
+    }
+#endif
+    void queueSeekSupport()
+    {
+        wcsp->vac->queueSeekSupport(&linkSeekSupport);
+    }
+
+    void VACproject(Value v, Cost c) /**< Increases unary cost and may queue for NC enforcing */
+    {
+        costs[toIndex(v)] += c;
+    }
+    void VACextend(Value v, Cost c) /**< Decreases unary cost and may queue for NC enforcing */
+    {
+        assert(c > MIN_COST);
+        costs[toIndex(v)] -= c;
+        if (v == maxCostValue || PARTIALORDER) {
+            queueNC();
+        }
+    }
+
+    bool averaging(); /**< For Min-Sum diffusion */
+
+    void print(ostream& os)
+    {
+        EnumeratedVariable::print(os);
+        cout << " Threshold: " << myThreshold;
+    }
+
+    void KilledOne();
+};
+
+/**
+ * A class that stores information about a binary cost function
+ */
+class VACBinaryConstraint : public BinaryConstraint {
+
+private:
+    vector<int> kX; /**< The k_XY(X,v) counters: nb. of cost request on X,v by this cost function */
+    vector<int> kY; /**< The k_XY(Y,v) counters: nb. of cost request on Y,v by this cost function */
+    vector<Long> kX_timeStamp;
+    vector<Long> kY_timeStamp;
+
+    Cost myThreshold; /** The local threshold used to break loops */
+
+public:
+    VACBinaryConstraint(WCSP* wcsp, EnumeratedVariable* xx, EnumeratedVariable* yy, vector<Cost>& tab);
+    VACBinaryConstraint(WCSP* wcsp);
+    ~VACBinaryConstraint();
+
+    void VACfillElimConstr()
+    {
+        for (unsigned int a = kX.size(); a < sizeX; a++) {
+            kX.push_back(0);
+            kX_timeStamp.push_back(0);
+        }
+        for (unsigned int b = kY.size(); b < sizeY; b++) {
+            kY.push_back(0);
+            kY_timeStamp.push_back(0);
+        }
+    }
+
+    int getK(VACVariable* var, Value v, Long timeStamp)
+    {
+        if (var == (VACVariable*)getVar(0)) {
+            if (kX_timeStamp[var->toIndex(v)] < timeStamp)
+                return 0;
+            else
+                return kX[var->toIndex(v)];
+        } else {
+            if (kY_timeStamp[var->toIndex(v)] < timeStamp)
+                return 0;
+            else
+                return kY[var->toIndex(v)];
+        }
+    }
+
+    void setK(VACVariable* var, Value v, int c, Long timeStamp)
+    {
+        if (var == getVar(0)) {
+            kX[var->toIndex(v)] = c;
+            kX_timeStamp[var->toIndex(v)] = timeStamp;
+        } else {
+            kY[var->toIndex(v)] = c;
+            kY_timeStamp[var->toIndex(v)] = timeStamp;
+        }
+    }
+
+    void setThreshold(Cost c) { myThreshold = c; }
+    Cost getThreshold() { return myThreshold; }
+
+    bool isNull(Cost c)
+    {
+        VACVariable* xi = (VACVariable*)getVar(0);
+        return (xi->isSimplyNull(c) || (c < myThreshold));
+    }
+
+    Cost getVACCost(VACVariable* xx, VACVariable* yy, Value v, Value w)
+    {
+        Cost c = getCost(xx, yy, v, w);
+        if (isNull(c))
+            return MIN_COST;
+        else
+            return c;
+    }
+    void VACproject(VACVariable* x, Value v, Cost c); /**< Modifies Delta counters, then VAC projects on value */
+    void VACextend(VACVariable* x, Value v, Cost c); /**< Modifies Delta counters, then VAC extends from value */
+
+    bool revise(VACVariable* var, Value v); /**< AC2001 based Revise for Pass1 : Revise value wrt this cost function */
+
+    void print(ostream& os)
+    {
+        BinaryConstraint::print(os);
+        cout << "Threshold: " << myThreshold << endl;
+    }
+};
+
+/**
+ * A class that stores information about a ternary cost function
+ */
+//class VACTernaryConstraint : public TernaryConstraint {
+//
+//private:
+//    vector<int> kX; /**< The k_XYZ(X,v) counters: nb. of cost request on X,v by this cost function */
+//    vector<int> kY; /**< The k_XYZ(Y,v) counters: nb. of cost request on Y,v by this cost function */
+//    vector<int> kZ; /**< The k_XYZ(Z,v) counters: nb. of cost request on Z,v by this cost function */
+//    vector<Long> kX_timeStamp;
+//    vector<Long> kY_timeStamp;
+//    vector<Long> kZ_timeStamp;
+//
+//    StoreCost myThreshold; /** The local thresold used to break loops */
+//
+//public:
+//    VACTernaryConstraint(WCSP* wcsp, EnumeratedVariable* xx, EnumeratedVariable* yy, EnumeratedVariable* zz, BinaryConstraint* xy, BinaryConstraint* xz, BinaryConstraint* yz, vector<Cost>& tab);
+//    VACTernaryConstraint(WCSP* wcsp);
+//    ~VACTernaryConstraint();
+//
+//    int getK(VACVariable* var, Value v, Long timeStamp);
+//    void setK(VACVariable* var, Value v, int c, Long timeStamp);
+//
+//    void setThreshold(Cost c) { myThreshold = c; }
+//    Cost getThreshold() { return myThreshold; }
+//
+//    bool isNull(Cost c);
+//
+//    Cost getVACCost(VACVariable* xx, VACVariable* yy, VACVariable* zz, Value u, Value v, Value w)
+//    {
+//        Cost c = getCost(xx, yy, zz, u, v, w);
+//        if (isNull(c))
+//            return MIN_COST;
+//        else
+//            return c;
+//    }
+//    void VACproject(VACVariable* x, Value v, Cost c); /**< Modifies Delta counters, then VAC projects on value */
+//    void VACextend(VACVariable* x, Value v, Cost c); /**< Modifies Delta counters, then VAC extends from value */
+//
+//    bool revise(VACVariable* var, Value v); /**< AC2001 based Revise for Pass1 : Revise value wrt this cost function */
+//
+//    friend ostream& operator<<(ostream& os, VACTernaryConstraint& c)
+//    {
+//        return os;
+//    }
+//};
+
+#endif /*TB2VACUTILS_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2variable.cpp b/code/include/tb2/core/tb2variable.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..32f5b846091a38f00e2af5d87ce20f6b9a0fb680
--- /dev/null
+++ b/code/include/tb2/core/tb2variable.cpp
@@ -0,0 +1,527 @@
+/*
+ * ****** Variable with domain represented by an interval or an enumerated domain *******
+ */
+
+#include "tb2variable.hpp"
+#include "tb2wcsp.hpp"
+#include "tb2binconstr.hpp"
+#include "tb2ternaryconstr.hpp"
+#include "search/tb2clusters.hpp"
+
+/*
+ * Constructors and misc.
+ * 
+ */
+
+Variable::Variable(WCSP* w, string n, Value iinf, Value isup)
+    : WCSPLink(w, w->numberOfVariables())
+    , name(n)
+    , dac(w->numberOfVariables())
+    , timestamp(-1)
+    , pos(-1)
+    , inf(iinf)
+    , sup(isup)
+    , fulleac((isup > iinf) ? 0 : 1)
+    , constrs(&Store::storeConstraint)
+    ,
+    //triangles(&Store::storeConstraint),
+    maxCost(MIN_COST)
+    , maxCostValue(iinf)
+    , NCBucket(-1)
+    , cluster(-1)
+{
+    if (Store::getDepth() > 0) {
+        cerr << "You cannot create a variable during the search!" << endl;
+        exit(EXIT_FAILURE);
+    }
+    w->link(this);
+
+    linkNCBucket.content = this;
+    linkNCQueue.content.var = this;
+    linkNCQueue.content.timeStamp = -1;
+    linkIncDecQueue.content.var = this;
+    linkIncDecQueue.content.timeStamp = -1;
+    linkIncDecQueue.content.incdec = NOTHING_EVENT;
+    linkEliminateQueue.content.var = this;
+    linkEliminateQueue.content.timeStamp = -1;
+    isSep_ = false;
+}
+
+DLink<ConstraintLink>* Variable::link(Constraint* c, int index)
+{
+    ConstraintLink e;
+    e.constr = c;
+    e.scopeIndex = index;
+    DLink<ConstraintLink>* elt = new DLink<ConstraintLink>;
+    elt->content = e;
+    //    if (c->isTriangle()) triangles.push_back(elt,true);
+    //    else
+    constrs.push_back(elt, true);
+    return elt;
+}
+
+int Variable::getCurrentVarId()
+{
+    if (assigned())
+        return -1;
+    if (wcsp->getNbNodes() > timestamp)
+        wcsp->updateCurrentVarsId();
+    assert(pos >= 0);
+    assert(wcsp->getNbNodes() == timestamp);
+    return pos;
+}
+
+void Variable::setCurrentVarId(int idx)
+{
+    pos = idx;
+    timestamp = wcsp->getNbNodes();
+}
+
+int cmpConstraint(const void* p1, const void* p2)
+{
+    DLink<ConstraintLink>* c1 = *((DLink<ConstraintLink>**)p1);
+    DLink<ConstraintLink>* c2 = *((DLink<ConstraintLink>**)p2);
+    int v1 = c1->content.constr->getSmallestVarIndexInScope(c1->content.scopeIndex);
+    int v2 = c2->content.constr->getSmallestVarIndexInScope(c2->content.scopeIndex);
+    if (v1 < v2)
+        return -1;
+    else if (v1 > v2)
+        return 1;
+    else
+        return 0;
+}
+
+int cmpConstraintDAC(const void* p1, const void* p2)
+{
+    DLink<ConstraintLink>* c1 = *((DLink<ConstraintLink>**)p1);
+    DLink<ConstraintLink>* c2 = *((DLink<ConstraintLink>**)p2);
+    int v1 = c1->content.constr->getSmallestDACIndexInScope(c1->content.scopeIndex);
+    int v2 = c2->content.constr->getSmallestDACIndexInScope(c2->content.scopeIndex);
+    if (v1 < v2)
+        return 1;
+    else if (v1 > v2)
+        return -1;
+    else
+        return 0;
+}
+
+int cmpConstraintTightness(const void* p1, const void* p2)
+{
+    DLink<ConstraintLink>* c1 = *((DLink<ConstraintLink>**)p1);
+    DLink<ConstraintLink>* c2 = *((DLink<ConstraintLink>**)p2);
+    double v1 = c1->content.constr->getTightness();
+    double v2 = c2->content.constr->getTightness();
+    if (v1 < v2)
+        return 1;
+    else if (v1 > v2)
+        return -1;
+    else
+        return 0;
+}
+
+void Variable::sortConstraints()
+{
+    int size = constrs.getSize();
+    DLink<ConstraintLink>** sorted = new DLink<ConstraintLink>*[size]; // replace size by MAX_DOMAIN_SIZE in case of compilation problem
+    int i = 0;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        sorted[i++] = iter.getElt();
+    }
+    qsort(sorted, size, sizeof(DLink<ConstraintLink>*), cmpConstraintDAC);
+    for (int i = 0; i < size; i++) {
+        constrs.erase(sorted[i], true);
+        constrs.push_back(sorted[i], true);
+    }
+    delete[] sorted;
+}
+
+void Variable::deconnect(DLink<ConstraintLink>* link, bool reuse)
+{
+    if (!link->removed) {
+        //        if (link->content.constr->isTriangle()) getTriangles()->erase(link, true);
+        //        else
+        getConstrs()->erase(link, true);
+
+        if (getDegree() <= ToulBar2::elimDegree_ || (ToulBar2::elimDegree_preprocessing_ >= 0 && (getDegree() <= min(1, ToulBar2::elimDegree_preprocessing_) || getTrueDegree() <= ToulBar2::elimDegree_preprocessing_)))
+            queueEliminate();
+    }
+    if (reuse) {
+        assert(Store::getDepth() == 0);
+        link->prev = NULL;
+        link->next = NULL;
+    }
+}
+
+int Variable::getTrueDegree()
+{
+    //	if (constrs.getSize() >= ToulBar2::weightedDegree) return getDegree(); ///\warning returns an approximate degree if the constraint list is too large!
+    //    TSCOPE scope1,scope2,scope3;
+    set<int> scope1;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep())
+            continue;
+        for (int k = 0; k < (*iter).constr->arity(); k++) {
+            scope1.insert((*iter).constr->getVar(k)->wcspIndex);
+        }
+        //		(*iter).constr->getScope(scope2);
+        //		for (TSCOPE::iterator iter2=scope2.begin(); iter2 != scope2.end(); ++iter2) {
+        //		   scope1.insert( iter2->first );
+        //		}
+        //     	set_union( scope1.begin(), scope1.end(),
+        //	  		   	   scope2.begin(), scope2.end(),
+        //			  	   inserter(scope3, scope3.begin()) );
+        //		scope1 = scope3;
+        //		scope3.clear();
+    }
+    if (scope1.size() >= 1)
+        return scope1.size() - 1;
+    else
+        return 0;
+}
+
+Double Variable::getMaxElimSize()
+{
+    if (getDegree() == 0)
+        return getDomainSize();
+    if (getDegree() == 1)
+        return (*constrs.begin()).constr->size();
+    //  if (constrs.getSize() >= ToulBar2::weightedDegree) return getDegree(); ///\warning returns an approximate degree if the constraint list is too large!
+    //    TSCOPE scope1,scope2,scope3;
+    map<int, unsigned int> scope1;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep())
+            continue;
+        for (int k = 0; k < (*iter).constr->arity(); k++) {
+            scope1[(*iter).constr->getVar(k)->wcspIndex] = (*iter).constr->getVar(k)->getDomainSize();
+        }
+    }
+    Double sz = 1.;
+    for (map<int, unsigned int>::iterator iter = scope1.begin(); iter != scope1.end(); ++iter) {
+        sz *= (*iter).second;
+    }
+    return sz;
+}
+
+Long Variable::getWeightedDegree()
+{
+    Long res = 0;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        //    	if((*iter).constr->isSep()) continue;
+        res += (*iter).constr->getConflictWeight((*iter).scopeIndex);
+        if ((*iter).constr->isSep())
+            res--; // do not count unused separators
+    }
+    return res;
+}
+
+void Variable::resetWeightedDegree()
+{
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep())
+            continue;
+        (*iter).constr->resetConflictWeight();
+    }
+}
+
+void Variable::conflict()
+{
+    wcsp->conflict();
+}
+
+/*
+ * Propagation methods
+ * 
+ */
+
+void Variable::queueNC()
+{
+    wcsp->queueNC(&linkNCQueue);
+}
+
+void Variable::queueInc()
+{
+    wcsp->queueInc(&linkIncDecQueue);
+}
+
+void Variable::queueDec()
+{
+    wcsp->queueDec(&linkIncDecQueue);
+}
+
+void Variable::queueEliminate()
+{
+    wcsp->queueEliminate(&linkEliminateQueue);
+}
+
+void Variable::changeNCBucket(int newBucket)
+{
+    if (NCBucket != newBucket) {
+        if (ToulBar2::verbose >= 3)
+            cout << "changeNCbucket " << getName() << ": " << NCBucket << " -> " << newBucket << endl;
+        wcsp->changeNCBucket(NCBucket, newBucket, &linkNCBucket);
+        NCBucket = newBucket;
+    }
+}
+
+void Variable::setMaxUnaryCost(Value a, Cost cost)
+{
+    assert(canbe(a));
+    maxCostValue = a;
+    assert(cost >= MIN_COST);
+    if (maxCost != cost) {
+        if (cost > maxCost)
+            queueDEE();
+        maxCost = cost;
+        int newbucket = min(cost2log2gub(cost), wcsp->getNCBucketSize() - 1);
+        changeNCBucket(newbucket);
+    }
+}
+
+void Variable::projectLB(Cost cost)
+{
+    if (cost == MIN_COST)
+        return;
+    if (ToulBar2::verbose >= 2)
+        cout << "lower bound increased " << wcsp->getLb() << " -> " << wcsp->getLb() + cost << endl;
+    if (cost < MIN_COST) {
+        wcsp->decreaseLb(cost);
+    } else {
+        wcsp->increaseLb(cost); // done before cluster LB because of #CSP (assuming a contradiction will occur here)
+    }
+    if (wcsp->td) {
+        if (ToulBar2::verbose >= 2)
+            cout << " in cluster C" << getCluster() << " (from " << wcsp->td->getCluster(getCluster())->getLb() << " to " << wcsp->td->getCluster(getCluster())->getLb() + cost << ")" << endl;
+        wcsp->td->getCluster(getCluster())->increaseLb(cost);
+    }
+}
+
+void Variable::propagateIncDec(int incdec)
+{
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if (incdec & INCREASE_EVENT) {
+            (*iter).constr->increase((*iter).scopeIndex);
+        }
+        if ((*iter).constr->connected() && (incdec & DECREASE_EVENT)) {
+            (*iter).constr->decrease((*iter).scopeIndex);
+        }
+    }
+}
+
+// Looks for the constraint that links this variable with x
+BinaryConstraint* Variable::getConstr(Variable* x)
+{
+    BinaryConstraint* ctr2;
+    TernaryConstraint* ctr3;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep() || (*iter).constr->isGlobal())
+            continue;
+
+        if ((*iter).constr->isBinary()) {
+            ctr2 = (BinaryConstraint*)(*iter).constr;
+            if (ctr2->getIndex(x) >= 0)
+                return ctr2;
+        } else if ((*iter).constr->isTernary()) {
+            ctr3 = (TernaryConstraint*)(*iter).constr;
+            int idx = ctr3->getIndex(x);
+            if (idx >= 0) {
+                int idt = (*iter).scopeIndex;
+                if ((0 != idx) && (0 != idt))
+                    return ctr3->yz;
+                else if ((1 != idx) && (1 != idt))
+                    return ctr3->xz;
+                else
+                    return ctr3->xy;
+            }
+        }
+    }
+    return NULL;
+}
+
+BinaryConstraint* Variable::getConstr(Variable* x, int cid)
+{
+    BinaryConstraint* res;
+    BinaryConstraint* ctr2;
+    TernaryConstraint* ctr3;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep() || (*iter).constr->isGlobal())
+            continue;
+
+        if ((*iter).constr->isBinary()) {
+            ctr2 = (BinaryConstraint*)(*iter).constr;
+            if (ctr2->getIndex(x) >= 0) {
+                res = ctr2;
+                if (res->getCluster() == cid)
+                    return res;
+            }
+        } else if ((*iter).constr->isTernary()) {
+            ctr3 = (TernaryConstraint*)(*iter).constr;
+            int idx = ctr3->getIndex(x);
+            if (idx >= 0) {
+                int idt = (*iter).scopeIndex;
+                if ((0 != idx) && (0 != idt))
+                    res = ctr3->yz;
+                else if ((1 != idx) && (1 != idt))
+                    res = ctr3->xz;
+                else
+                    res = ctr3->xy;
+
+                if (res && res->getCluster() == cid)
+                    return res;
+            }
+        }
+    }
+    return NULL;
+}
+
+// Looks for the ternary constraint that links this variable with x and y
+TernaryConstraint* Variable::getConstr(Variable* x, Variable* y)
+{
+    TernaryConstraint* ctr;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep() || (*iter).constr->isGlobal())
+            continue;
+
+        if ((*iter).constr->isTernary()) {
+            ctr = (TernaryConstraint*)(*iter).constr;
+            if ((ctr->getIndex(x) >= 0) && (ctr->getIndex(y) >= 0))
+                return ctr;
+        }
+    }
+    return NULL;
+}
+
+TernaryConstraint* Variable::getConstr(Variable* x, Variable* y, int cid)
+{
+    TernaryConstraint* ctr = NULL;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep() || (*iter).constr->isGlobal())
+            continue;
+
+        if ((*iter).constr->isTernary()) {
+            ctr = (TernaryConstraint*)(*iter).constr;
+            if ((ctr->getIndex(x) >= 0) && (ctr->getIndex(y) >= 0)) {
+                if (ctr->getCluster() == cid)
+                    return ctr;
+            }
+        }
+    }
+    return NULL;
+}
+
+// returns a ternary constraint if the current variable is linked to one
+TernaryConstraint* Variable::existTernary()
+{
+    TernaryConstraint* ctr;
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep())
+            continue;
+        if ((*iter).constr->isTernary()) {
+            ctr = (TernaryConstraint*)(*iter).constr;
+            return ctr;
+        }
+    }
+    return NULL;
+}
+
+double Variable::strongLinkedby(Variable*& strvar, TernaryConstraint*& tctr1max, TernaryConstraint*& tctr2max)
+{
+    double maxtight = -1;
+    strvar = NULL;
+    tctr1max = NULL;
+    tctr2max = NULL;
+
+    TernaryConstraint* tctr1 = NULL;
+
+    for (ConstraintList::iterator iter = constrs.begin(); iter != constrs.end(); ++iter) {
+        if ((*iter).constr->isSep() || (*iter).constr->isGlobal())
+            continue;
+        if ((*iter).constr->isBinary()) {
+            BinaryConstraint* bctr = (BinaryConstraint*)(*iter).constr;
+            double bintight = bctr->getTightness();
+            if (bintight > maxtight) {
+                maxtight = bintight;
+                strvar = wcsp->getVar(bctr->getSmallestVarIndexInScope((*iter).scopeIndex));
+                tctr1max = NULL;
+                tctr2max = NULL;
+            }
+        } else if ((*iter).constr->isTernary()) {
+            double terntight;
+            tctr1 = (TernaryConstraint*)(*iter).constr;
+            terntight = tctr1->getTightness() + tctr1->xy->getTightness() + tctr1->xz->getTightness() + tctr1->yz->getTightness();
+
+            Variable *x1 = NULL, *x2 = NULL;
+            switch ((*iter).scopeIndex) {
+            case 0:
+                x1 = tctr1->getVar(1);
+                x2 = tctr1->getVar(2);
+                break;
+            case 1:
+                x1 = tctr1->getVar(0);
+                x2 = tctr1->getVar(2);
+                break;
+            case 2:
+                x1 = tctr1->getVar(0);
+                x2 = tctr1->getVar(1);
+                break;
+            default:;
+            }
+
+            if (terntight > maxtight) {
+                maxtight = terntight;
+                strvar = x1;
+                tctr1max = tctr1;
+                tctr1max = NULL;
+            }
+
+            for (ConstraintList::iterator iter2 = iter; iter2 != constrs.end(); ++iter2) {
+                if ((*iter2).constr->isTernary()) {
+                    TernaryConstraint* tctr2 = (TernaryConstraint*)(*iter2).constr;
+                    Variable* commonvar = NULL;
+                    if (tctr2->getIndex(x1) >= 0)
+                        commonvar = x1;
+                    else if (tctr2->getIndex(x2) >= 0)
+                        commonvar = x2;
+
+                    if (commonvar) {
+                        terntight += tctr2->getTightness() + tctr2->xy->getTightness() + tctr2->xz->getTightness() + tctr2->yz->getTightness();
+
+                        if (tctr1->xy->getIndex(commonvar) >= 0)
+                            terntight -= tctr1->xy->getTightness();
+                        else if (tctr1->xz->getIndex(commonvar) >= 0)
+                            terntight -= tctr1->xz->getTightness();
+                        else if (tctr1->yz->getIndex(commonvar) >= 0)
+                            terntight -= tctr1->yz->getTightness();
+
+                        if (terntight > maxtight) {
+                            maxtight = terntight;
+                            strvar = commonvar;
+                            tctr1max = tctr1;
+                            tctr2max = tctr2;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    return maxtight;
+}
+
+ostream& operator<<(ostream& os, Variable& var)
+{
+    os << var.name; // << " #" << var.dac;
+    var.print(os);
+    if (ToulBar2::verbose >= 3) {
+        for (ConstraintList::iterator iter = var.constrs.begin(); iter != var.constrs.end(); ++iter) {
+            os << " (" << (*iter).constr << "," << (*iter).scopeIndex << ")";
+        }
+    }
+    return os;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2variable.hpp b/code/include/tb2/core/tb2variable.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..ada715340881c3ab644ea535ad800f7a498a3acb
--- /dev/null
+++ b/code/include/tb2/core/tb2variable.hpp
@@ -0,0 +1,211 @@
+/** \file tb2variable.hpp
+ *  \brief Abstract Variable class extended with unary costs.
+ * 
+ */
+
+#ifndef TB2VARIABLE_HPP_
+#define TB2VARIABLE_HPP_
+
+#include "utils/tb2btlist.hpp"
+#include "utils/tb2queue.hpp"
+#include "tb2domain.hpp"
+
+/*
+ * Main class
+ * 
+ */
+
+class Variable : public WCSPLink {
+protected:
+    string name;
+    int dac; // DAC order
+
+    Long timestamp;
+    int pos; // current position in the list of unassigned variables
+
+    StoreValue inf;
+    StoreValue sup;
+    StoreInt fulleac; // =1 if assigning this variable and all its neighbors to their EAC support value has a zero cost, =0 otherwise
+
+    ConstraintList constrs;
+    //ConstraintList triangles;
+
+    // incremental NC data
+    StoreCost maxCost;
+    StoreValue maxCostValue;
+    StoreInt NCBucket;
+    DLink<Variable*> linkNCBucket;
+
+    DLink<VariableWithTimeStamp> linkNCQueue;
+    DLink<VariableWithTimeStamp> linkIncDecQueue;
+    DLink<VariableWithTimeStamp> linkEliminateQueue;
+
+    void setMaxUnaryCost(Value a, Cost cost);
+    void changeNCBucket(int newBucket);
+    void conflict();
+
+    // make it private because we don't want copy nor assignment
+    Variable(const Variable& x);
+    Variable& operator=(const Variable& x);
+
+    friend class VACExtension;
+
+public:
+    Variable(WCSP* w, string n, Value iinf, Value isup);
+
+    virtual ~Variable() {}
+
+    virtual bool enumerated() const = 0;
+
+    string getName() const { return name; }
+    int getDACOrder() const { return dac; }
+    void setDACOrder(int order) { dac = order; }
+    Value getInf() const { return inf; }
+    Value getSup() const { return sup; }
+    Value getValue() const
+    {
+        assert(assigned());
+        return inf;
+    }
+    virtual const string& getValueName(int index) const { static const string None = std::string(""); return None; }
+    virtual unsigned int getDomainSize() const = 0;
+    int getCurrentVarId();
+    void setCurrentVarId(int idx);
+
+    bool assigned() const { return inf == sup; }
+    bool unassigned() const { return inf != sup; }
+    virtual bool canbe(Value v) const { return v >= inf && v <= sup; }
+    virtual bool cannotbe(Value v) const { return v < inf || v > sup; }
+
+    virtual void increase(Value newInf, bool isDecision = false) = 0;
+    virtual void decrease(Value newSup, bool isDecision = false) = 0;
+    virtual void remove(Value remValue, bool isDecision = false) = 0;
+    virtual void assign(Value newValue, bool isDecision = false) = 0;
+    virtual void assignLS(Value newValue, ConstraintSet& delayedCtrs, bool force = false) = 0;
+
+    //    ConstraintList *getTriangles() {return &triangles;}
+    ConstraintList* getConstrs() { return &constrs; }
+    int getDegree() { return constrs.getSize(); }
+    int getTrueDegree();
+    Double getMaxElimSize(); /// \brief returns estimated size of the resulting cost function (including this variable) to eliminate itself
+    Long getWeightedDegree();
+    void resetWeightedDegree();
+    DLink<ConstraintLink>* link(Constraint* c, int index);
+    void sortConstraints();
+    virtual void eliminate(){};
+
+    BinaryConstraint* getConstr(Variable* x);
+    TernaryConstraint* getConstr(Variable* x, Variable* y);
+    TernaryConstraint* existTernary();
+    double strongLinkedby(Variable*& strvar, TernaryConstraint*& tctr1, TernaryConstraint*& tctr2);
+    void deconnect(DLink<ConstraintLink>* link, bool reuse = false);
+
+    void projectLB(Cost cost);
+
+    virtual Cost getInfCost() const = 0;
+    virtual Cost getSupCost() const = 0;
+    virtual void projectInfCost(Cost cost) = 0;
+    virtual void projectSupCost(Cost cost) = 0;
+    virtual Cost getCost(const Value value) const = 0;
+
+    virtual Value getSupport() const { return inf; } // If there is no defined support then return inf
+    bool isFullEAC() const { return fulleac; }
+    void setFullEAC() { fulleac = 1; }
+    void unsetFullEAC() { fulleac = 0; }
+
+    Cost getMaxCost() const { return maxCost; }
+    void setMaxCost(Cost cost) { maxCost = cost; }
+    Value getMaxCostValue() const { return maxCostValue; }
+    void setMaxCostValue(Value value) { maxCostValue = value; }
+
+    virtual void propagateNC() = 0;
+    virtual bool verifyNC() = 0;
+    virtual bool isEAC() { return true; }
+    virtual bool verifyDEE() { return true; }
+
+    void queueNC();
+    void queueInc();
+    void queueDec();
+    void queueEliminate();
+    virtual void queueDEE() {}
+
+    void propagateIncDec(int incdec);
+
+    /**********************************************************************/
+    //   added for tree decomposition stuff
+    StoreInt cluster;
+    void setCluster(int c) { cluster = c; }
+    int getCluster() { return cluster; }
+
+    BinaryConstraint* getConstr(Variable* x, int cid);
+    TernaryConstraint* getConstr(Variable* x, Variable* y, int cid);
+
+    bool isSep_;
+    void setSep() { isSep_ = true; }
+    bool isSep() { return isSep_; }
+
+    typedef set<pair<int, int>> TSepLink; // set of pairs <cluster in wihch the variable appears,
+    //  			    position of the variable in the delta structure>
+    TSepLink clusters;
+
+    void addCluster(int c, int pos)
+    {
+        clusters.insert(pair<int, int>(c, pos));
+    }
+
+    TSepLink::iterator itclusters;
+
+    int nbSeparators() { return clusters.size(); }
+
+    void beginCluster() { itclusters = clusters.begin(); }
+
+    bool nextCluster(int& c, int& pos)
+    {
+        if (itclusters != clusters.end()) {
+            c = (*itclusters).first;
+            pos = (*itclusters).second;
+            ++itclusters;
+            return true;
+        } else
+            return false;
+    }
+
+    /*
+    class iterator;
+    friend class iterator;
+    class iterator {
+    public:
+        virtual Value operator*() const =0;
+
+        virtual iterator &operator++() =0;     // Prefix form
+        virtual iterator &operator--() =0;     // Prefix form
+
+        // To see if you're at the end:
+        virtual bool operator==(const iterator &iter) const =0;
+        virtual bool operator!=(const iterator &iter) const =0;
+    };
+    virtual iterator begin() =0;
+    virtual iterator end() =0;
+    virtual iterator rbegin() =0;
+    virtual iterator rend() =0;
+
+    //Finds the first available element whose value is greater or equal to v
+    virtual iterator lower_bound(Value v) =0;
+
+    //Finds the first available element whose value is lower or equal to v
+    virtual iterator upper_bound(Value v) =0;
+     */
+
+    virtual void print(ostream& os) = 0;
+
+    friend ostream& operator<<(ostream& os, Variable& var);
+};
+
+#endif /*TB2VARIABLE_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2wcsp.cpp b/code/include/tb2/core/tb2wcsp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8c32e23eb490784297cf6c9830acdb5b9695ac31
--- /dev/null
+++ b/code/include/tb2/core/tb2wcsp.cpp
@@ -0,0 +1,5392 @@
+/*
+ * ****** Weighted constraint satisfaction problem modeling and local reasoning ********
+ *
+ * Contains also ToulBar2 options expressed by global variable definitions
+ */
+
+#include "tb2wcsp.hpp"
+#include "tb2enumvar.hpp"
+#include "tb2intervar.hpp"
+#include "tb2binconstr.hpp"
+#include "tb2ternaryconstr.hpp"
+#include "tb2naryconstr.hpp"
+#include "tb2arithmetic.hpp"
+#include "applis/tb2pedigree.hpp"
+#include "applis/tb2haplotype.hpp"
+#include "tb2vac.hpp"
+#include "search/tb2clusters.hpp"
+
+#include "tb2globaldecomposable.hpp"
+#include "globals/tb2globalconstr.hpp"
+#ifdef ILOGCPLEX
+#include "global/tb2lpsconstr.hpp"
+#endif
+#include "globals/tb2flowbasedconstr.hpp"
+#include "globals/tb2alldiffconstr.hpp"
+#include "globals/tb2globalcardinalityconstr.hpp"
+#include "globals/tb2sameconstr.hpp"
+#include "globals/tb2regularflowconstr.hpp"
+#include "globals/tb2amongconstr.hpp"
+#include "globals/tb2regulardpconstr.hpp"
+#include "globals/tb2grammarconstr.hpp"
+#include "globals/tb2treeconstr.hpp"
+#include "globals/tb2maxconstr.hpp"
+#include "tb2clause.hpp"
+#include "tb2clqcover.hpp"
+#include "tb2knapsack.hpp"
+
+/*
+ * Global variables with their default value
+ *
+ */
+
+int Store::depth = 0;
+StoreStack<BTList<Value>, DLink<Value>*> Store::storeDomain(STORE_SIZE);
+StoreStack<BTList<ConstraintLink>, DLink<ConstraintLink>*> Store::storeConstraint(STORE_SIZE);
+StoreStack<BTList<Variable*>, DLink<Variable*>*> Store::storeVariable(STORE_SIZE);
+StoreStack<BTList<Separator*>, DLink<Separator*>*> Store::storeSeparator(STORE_SIZE);
+
+int WCSP::wcspCounter = 0;
+
+int ToulBar2::verbose;
+
+bool ToulBar2::FullEAC;
+bool ToulBar2::VACthreshold;
+int ToulBar2::nbTimesIsVAC;
+int ToulBar2::nbTimesIsVACitThresholdMoreThanOne;
+bool ToulBar2::RASPS;
+int ToulBar2::useRASPS;
+bool ToulBar2::RASPSreset;
+int ToulBar2::RASPSnbStrictACVariables;
+Cost ToulBar2::RASPSlastitThreshold;
+bool ToulBar2::RASPSsaveitThresholds;
+vector<pair<Cost, double>> ToulBar2::RASPSitThresholds;
+int ToulBar2::RASPSangle;
+Long ToulBar2::RASPSnbBacktracks;
+int ToulBar2::debug;
+string ToulBar2::externalUB;
+int ToulBar2::showSolutions;
+int ToulBar2::writeSolution;
+FILE* ToulBar2::solutionFile;
+long ToulBar2::solutionFileRewindPos;
+Long ToulBar2::allSolutions;
+int ToulBar2::dumpWCSP;
+bool ToulBar2::approximateCountingBTD;
+int ToulBar2::elimDegree;
+int ToulBar2::elimDegree_preprocessing;
+int ToulBar2::elimDegree_;
+int ToulBar2::elimDegree_preprocessing_;
+int ToulBar2::elimSpaceMaxMB;
+int ToulBar2::preprocessTernaryRPC;
+int ToulBar2::preprocessFunctional;
+bool ToulBar2::costfuncSeparate;
+int ToulBar2::preprocessNary;
+LcLevelType ToulBar2::LcLevel;
+bool ToulBar2::QueueComplexity;
+bool ToulBar2::binaryBranching;
+bool ToulBar2::lastConflict;
+int ToulBar2::dichotomicBranching;
+unsigned int ToulBar2::dichotomicBranchingSize;
+bool ToulBar2::sortDomains;
+map<int, ValueCost*> ToulBar2::sortedDomains;
+bool ToulBar2::solutionBasedPhaseSaving;
+int ToulBar2::lds;
+bool ToulBar2::limited;
+Long ToulBar2::restart;
+Long ToulBar2::backtrackLimit;
+bool ToulBar2::generation;
+int ToulBar2::minsumDiffusion;
+bool ToulBar2::Static_variable_ordering;
+int ToulBar2::weightedDegree;
+int ToulBar2::weightedTightness;
+bool ToulBar2::MSTDAC;
+int ToulBar2::DEE;
+int ToulBar2::DEE_;
+int ToulBar2::nbDecisionVars;
+bool ToulBar2::singletonConsistency;
+bool ToulBar2::vacValueHeuristic;
+
+externalevent ToulBar2::setvalue;
+externalevent ToulBar2::setmin;
+externalevent ToulBar2::setmax;
+externalevent ToulBar2::removevalue;
+externalcostevent ToulBar2::setminobj;
+externalsolution ToulBar2::newsolution;
+Pedigree* ToulBar2::pedigree;
+Haplotype* ToulBar2::haplotype;
+
+bool ToulBar2::cfn;
+bool ToulBar2::gz;
+bool ToulBar2::xz;
+bool ToulBar2::bayesian;
+int ToulBar2::uai;
+string ToulBar2::evidence_file;
+string ToulBar2::stdin_format;
+FILE* ToulBar2::solution_uai_file;
+string ToulBar2::solution_uai_filename;
+string ToulBar2::problemsaved_filename;
+TLogProb ToulBar2::markov_log;
+bool ToulBar2::xmlflag;
+string ToulBar2::map_file;
+bool ToulBar2::maxsateval;
+bool ToulBar2::uaieval;
+
+int ToulBar2::resolution;
+TProb ToulBar2::errorg;
+TLogProb ToulBar2::NormFactor;
+/// Allele frequencies of founders
+/// - 0: 			equal frequencies
+/// - 1: 			probs depending on the frequencies found in the problem
+/// - otherwise:  read probability distribution from command line
+int ToulBar2::foundersprob_class;
+vector<TProb> ToulBar2::allelefreqdistrib;
+bool ToulBar2::consecutiveAllele;
+int ToulBar2::pedigreeCorrectionMode;
+int ToulBar2::pedigreePenalty;
+
+int ToulBar2::vac;
+Cost ToulBar2::costThreshold;
+Cost ToulBar2::costThresholdPre;
+string ToulBar2::costThresholdS;
+string ToulBar2::costThresholdPreS;
+double ToulBar2::trwsAccuracy;
+bool ToulBar2::trwsOrder;
+unsigned int ToulBar2::trwsNIter;
+unsigned int ToulBar2::trwsNIterNoChange;
+unsigned int ToulBar2::trwsNIterComputeUb;
+double ToulBar2::costMultiplier;
+unsigned int ToulBar2::decimalPoint;
+string ToulBar2::deltaUbS;
+Cost ToulBar2::deltaUb;
+Cost ToulBar2::deltaUbAbsolute;
+Double ToulBar2::deltaUbRelativeGap;
+
+unsigned int ToulBar2::divNbSol;
+unsigned int ToulBar2::divBound;
+unsigned int ToulBar2::divWidth;
+unsigned int ToulBar2::divMethod;
+unsigned int ToulBar2::divRelax;
+
+BEP* ToulBar2::bep;
+bool ToulBar2::wcnf;
+bool ToulBar2::qpbo;
+double ToulBar2::qpboQuadraticCoefMultiplier;
+bool ToulBar2::opb;
+
+char* ToulBar2::varOrder;
+int ToulBar2::btdMode;
+int ToulBar2::btdSubTree;
+int ToulBar2::btdRootCluster;
+
+double ToulBar2::startCpuTime;
+
+int ToulBar2::splitClusterMaxSize;
+double ToulBar2::boostingBTD;
+int ToulBar2::maxSeparatorSize;
+int ToulBar2::minProperVarSize;
+
+int ToulBar2::smallSeparatorSize;
+
+bool ToulBar2::isZ;
+TLogProb ToulBar2::logZ;
+TLogProb ToulBar2::logU;
+TLogProb ToulBar2::logepsilon;
+int ToulBar2::Berge_Dec = 0; // berge decomposition flag  > 0 if wregular found in the problem
+
+externalfunc ToulBar2::timeOut;
+bool ToulBar2::interrupted;
+
+bool ToulBar2::learning;
+
+int ToulBar2::seed;
+
+string ToulBar2::incop_cmd;
+
+string ToulBar2::clusterFile;
+ofstream ToulBar2::vnsOutput;
+
+SearchMethod ToulBar2::searchMethod;
+
+VNSSolutionInitMethod ToulBar2::vnsInitSol;
+int ToulBar2::vnsLDSmin;
+int ToulBar2::vnsLDSmax;
+VNSInc ToulBar2::vnsLDSinc;
+int ToulBar2::vnsKmin;
+int ToulBar2::vnsKmax;
+VNSInc ToulBar2::vnsKinc;
+
+int ToulBar2::vnsLDScur;
+int ToulBar2::vnsKcur;
+VNSVariableHeuristic ToulBar2::vnsNeighborVarHeur;
+bool ToulBar2::vnsNeighborChange;
+bool ToulBar2::vnsNeighborSizeSync;
+bool ToulBar2::vnsParallelLimit;
+bool ToulBar2::vnsParallelSync;
+string ToulBar2::vnsOptimumS;
+Cost ToulBar2::vnsOptimum;
+bool ToulBar2::vnsParallel;
+
+Long ToulBar2::hbfs;
+Long ToulBar2::hbfsGlobalLimit;
+Long ToulBar2::hbfsAlpha; // inverse of minimum node redundancy goal limit
+Long ToulBar2::hbfsBeta; // inverse of maximum node redundancy goal limit
+ptrdiff_t ToulBar2::hbfsCPLimit; // limit on the number of choice points stored inside open node list
+ptrdiff_t ToulBar2::hbfsOpenNodeLimit; // limit on the number of open nodes
+
+bool ToulBar2::verifyOpt;
+Cost ToulBar2::verifiedOptimum;
+
+/// \brief initialization of ToulBar2 global variables needed by numberjack/toulbar2
+void tb2init()
+{
+    Store::depth = 0;
+
+    ToulBar2::stdin_format = "";
+    ToulBar2::externalUB = "";
+    ToulBar2::verbose = 0;
+
+    ToulBar2::FullEAC = false;
+    ToulBar2::VACthreshold = false;
+    ToulBar2::nbTimesIsVAC = 0;
+    ToulBar2::nbTimesIsVACitThresholdMoreThanOne = 0;
+    ToulBar2::RASPS = false;
+    ToulBar2::useRASPS = 0;
+    ToulBar2::RASPSreset = false;
+    ToulBar2::RASPSnbStrictACVariables = 0;
+    ToulBar2::RASPSlastitThreshold = 1;
+    ToulBar2::RASPSsaveitThresholds = false;
+    ToulBar2::RASPSangle = 10;
+    ToulBar2::RASPSnbBacktracks = 1000;
+    ToulBar2::RASPSitThresholds.clear();
+
+    ToulBar2::debug = 0;
+    ToulBar2::showSolutions = 0;
+    ToulBar2::writeSolution = 0;
+    ToulBar2::solutionFile = NULL;
+    ToulBar2::solutionFileRewindPos = 0L;
+    ToulBar2::allSolutions = 0;
+    ToulBar2::dumpWCSP = 0;
+    ToulBar2::approximateCountingBTD = false;
+    ToulBar2::elimDegree = 3;
+    ToulBar2::elimDegree_preprocessing = -1;
+    ToulBar2::elimDegree_ = -1;
+    ToulBar2::elimDegree_preprocessing_ = -1;
+    ToulBar2::elimSpaceMaxMB = 0;
+    ToulBar2::preprocessTernaryRPC = 0;
+    ToulBar2::preprocessFunctional = 1;
+    ToulBar2::costfuncSeparate = true;
+    ToulBar2::preprocessNary = 10;
+    ToulBar2::LcLevel = LC_EDAC;
+    ToulBar2::QueueComplexity = false;
+    ToulBar2::binaryBranching = true;
+    ToulBar2::lastConflict = true;
+    ToulBar2::dichotomicBranching = 1;
+    ToulBar2::dichotomicBranchingSize = 10;
+    ToulBar2::sortDomains = false;
+    ToulBar2::solutionBasedPhaseSaving = true;
+    ToulBar2::lds = 0;
+    ToulBar2::limited = false;
+    ToulBar2::restart = -1;
+    ToulBar2::backtrackLimit = LONGLONG_MAX;
+    ToulBar2::generation = false;
+    ToulBar2::minsumDiffusion = 0;
+    ToulBar2::Static_variable_ordering = false;
+    ToulBar2::weightedDegree = 1000000;
+    ToulBar2::weightedTightness = 0;
+    ToulBar2::MSTDAC = false;
+    ToulBar2::DEE = 1;
+    ToulBar2::DEE_ = 0;
+    ToulBar2::nbDecisionVars = 0;
+    ToulBar2::singletonConsistency = false;
+    ToulBar2::vacValueHeuristic = true;
+
+    ToulBar2::setvalue = NULL;
+    ToulBar2::setmin = NULL;
+    ToulBar2::setmax = NULL;
+    ToulBar2::removevalue = NULL;
+    ToulBar2::setminobj = NULL;
+    ToulBar2::newsolution = NULL;
+    ToulBar2::pedigree = NULL;
+    ToulBar2::haplotype = NULL;
+
+    ToulBar2::cfn = false;
+    ToulBar2::gz = false;
+    ToulBar2::xz = false;
+    ToulBar2::bayesian = false;
+    ToulBar2::uai = 0;
+    ToulBar2::solution_uai_file = NULL;
+    ToulBar2::solution_uai_filename = "sol";
+    ToulBar2::problemsaved_filename = "";
+    ToulBar2::markov_log = 0;
+    ToulBar2::xmlflag = false;
+    ToulBar2::maxsateval = false;
+    ToulBar2::uaieval = false;
+
+    ToulBar2::resolution = 7;
+    ToulBar2::errorg = 0.05;
+    ToulBar2::NormFactor = 1;
+    ToulBar2::foundersprob_class = 0;
+    ToulBar2::consecutiveAllele = false;
+    ToulBar2::pedigreeCorrectionMode = 0;
+    ToulBar2::pedigreePenalty = 0;
+    ToulBar2::allelefreqdistrib.clear();
+
+    ToulBar2::vac = 0;
+    ToulBar2::costThresholdS = "";
+    ToulBar2::costThresholdPreS = "";
+    ToulBar2::costThreshold = UNIT_COST;
+    ToulBar2::costThresholdPre = UNIT_COST;
+    ToulBar2::trwsAccuracy = -1; // 0.001;
+    ToulBar2::trwsOrder = false;
+    ToulBar2::trwsNIter = 1000;
+    ToulBar2::trwsNIterNoChange = 5;
+    ToulBar2::trwsNIterComputeUb = 100;
+    ToulBar2::costMultiplier = UNIT_COST;
+    ToulBar2::decimalPoint = 0;
+    ToulBar2::deltaUbS = "0";
+    ToulBar2::deltaUb = MIN_COST;
+    ToulBar2::deltaUbAbsolute = MIN_COST;
+    ToulBar2::deltaUbRelativeGap = 0.;
+
+    ToulBar2::divNbSol = 0;
+    ToulBar2::divBound = 0;
+    ToulBar2::divWidth = 0;
+    ToulBar2::divMethod = 0;
+    ToulBar2::divRelax = 0;
+
+    ToulBar2::bep = NULL;
+    ToulBar2::wcnf = false;
+    ToulBar2::qpbo = false;
+    ToulBar2::qpboQuadraticCoefMultiplier = 2.;
+    ToulBar2::opb = false;
+
+    ToulBar2::varOrder = NULL;
+    ToulBar2::btdMode = 0;
+    ToulBar2::btdSubTree = -1;
+    ToulBar2::btdRootCluster = -1;
+
+    ToulBar2::startCpuTime = 0;
+
+    ToulBar2::splitClusterMaxSize = 0;
+    ToulBar2::boostingBTD = 0.;
+    ToulBar2::maxSeparatorSize = -1;
+    ToulBar2::minProperVarSize = 0;
+
+    ToulBar2::smallSeparatorSize = 4;
+
+    ToulBar2::isZ = false;
+    ToulBar2::logZ = -numeric_limits<TLogProb>::infinity();
+    ToulBar2::logU = -numeric_limits<TLogProb>::infinity();
+    ToulBar2::logepsilon = -numeric_limits<TLogProb>::infinity();
+    ToulBar2::Berge_Dec = 0;
+
+    ToulBar2::timeOut = NULL;
+    ToulBar2::interrupted = false;
+
+    ToulBar2::learning = false;
+
+    ToulBar2::seed = 1;
+
+    ToulBar2::incop_cmd = "";
+
+    ToulBar2::searchMethod = DFBB;
+
+    ToulBar2::clusterFile = "";
+    ToulBar2::vnsOutput.setstate(std::ios::failbit);
+
+    ToulBar2::vnsInitSol = LS_INIT_DFBB;
+    ToulBar2::vnsLDSmin = 1;
+    ToulBar2::vnsLDSmax = -1;
+    ToulBar2::vnsLDSinc = VNS_MULT2;
+    ToulBar2::vnsKmin = 4;
+    ToulBar2::vnsKmax = 0;
+    ToulBar2::vnsKinc = VNS_ADD1JUMP;
+
+    ToulBar2::vnsLDScur = -1;
+    ToulBar2::vnsKcur = 0;
+    ToulBar2::vnsNeighborVarHeur = RANDOMVAR;
+    ToulBar2::vnsNeighborChange = false;
+    ToulBar2::vnsNeighborSizeSync = false;
+    ToulBar2::vnsParallelLimit = false;
+    ToulBar2::vnsParallelSync = false;
+    ToulBar2::vnsOptimumS = "";
+    ToulBar2::vnsOptimum = MIN_COST;
+    ToulBar2::vnsParallel = false;
+
+    ToulBar2::hbfs = 1;
+    ToulBar2::hbfsGlobalLimit = 10000;
+    ToulBar2::hbfsAlpha = 20LL; // i.e., alpha = 1/20 = 0.05
+    ToulBar2::hbfsBeta = 10LL; // i.e., beta = 1/10 = 0.1
+    ToulBar2::hbfsCPLimit = CHOICE_POINT_LIMIT;
+    ToulBar2::hbfsOpenNodeLimit = OPEN_NODE_LIMIT;
+
+    ToulBar2::verifyOpt = false;
+    ToulBar2::verifiedOptimum = MAX_COST;
+}
+
+/// \brief checks compatibility between selected options of ToulBar2 needed by numberjack/toulbar2
+void tb2checkOptions()
+{
+    if (ToulBar2::divBound >= 1 && ToulBar2::divNbSol == 0) {
+        cerr << "Error: ask for zero diverse solutions!" << endl;
+        exit(1);
+    }
+    if (ToulBar2::divNbSol >= 1 && ToulBar2::allSolutions > 0) {
+        if (ToulBar2::verbose >= 0 && ToulBar2::allSolutions > ToulBar2::divNbSol)
+            cout << "Warning! A limit of " << ToulBar2::divNbSol << " diverse solutions has been applied! (try a smaller value with option -a)" << endl;
+        ToulBar2::divNbSol = min((Long)ToulBar2::divNbSol, ToulBar2::allSolutions);
+        ToulBar2::allSolutions = 0;
+    }
+    if (ToulBar2::costMultiplier != UNIT_COST && (ToulBar2::uai || ToulBar2::qpbo || ToulBar2::opb)) {
+        cerr << "Error: cost multiplier cannot be used with UAI, PBO, and QPBO formats. Use option -precision instead." << endl;
+        exit(1);
+    }
+    if (ToulBar2::costMultiplier != UNIT_COST && (ToulBar2::haplotype || ToulBar2::pedigree || ToulBar2::bep || ToulBar2::xmlflag)) {
+        cerr << "Error: cost multiplier not implemented for this file format." << endl;
+        exit(1);
+    }
+    if (ToulBar2::searchMethod != DFBB && ToulBar2::btdMode >= 1) {
+        cerr << "Error: BTD-like search methods are compatible with VNS. Deactivate either '-B' or '-vns'" << endl;
+        exit(1);
+    }
+    if (ToulBar2::searchMethod != DFBB && ToulBar2::restart < 1) {
+        ToulBar2::restart = 1; // Force random variable selection during (LDS) search within variable neighborhood search methods
+    }
+    if ((ToulBar2::allSolutions || ToulBar2::isZ) && ToulBar2::searchMethod != DFBB) {
+        cerr << "Error: cannot find all solutions or compute a partition function with VNS. Deactivate either option." << endl;
+        exit(1);
+    }
+    if (ToulBar2::divNbSol > 1 && ToulBar2::searchMethod != DFBB) {
+        cerr << "Error: cannot find diverse solutions with VNS. Deactivate either option." << endl;
+        exit(1);
+    }
+    if (ToulBar2::approximateCountingBTD && ToulBar2::searchMethod != DFBB) {
+        cerr << "Error: cannot compute an approximate solution count with VNS. Deactivate '-vns' for counting." << endl;
+        exit(1);
+    }
+    if (ToulBar2::searchMethod == RPDGVNS && !ToulBar2::vnsParallelSync && ToulBar2::vnsKinc == VNS_LUBY) {
+        cerr << "Error: Luby operator not implemented for neighborhood growth strategy in asynchronous parallel VNS-like methods, use Add1 instead." << endl;
+        exit(1);
+    }
+    if (ToulBar2::searchMethod == RPDGVNS && !ToulBar2::vnsParallelSync && ToulBar2::vnsLDSinc == VNS_LUBY) {
+        cerr << "Error: Luby operator not implemented for  discrepancy growth strategy in asynchronous parallel VNS-like methods, use Add1 instead." << endl;
+        exit(1);
+    }
+    if (ToulBar2::approximateCountingBTD && ToulBar2::btdMode != 1) {
+        cerr << "Error: BTD search mode required for approximate solution counting (use '-B=1')." << endl;
+        exit(1);
+    }
+    if (ToulBar2::allSolutions && ToulBar2::btdMode > 1) {
+        cerr << "Error: RDS-like method cannot currently enumerate solutions. Use DFS/HBFS search or BTD (feasibility only)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::divNbSol > 1 && ToulBar2::btdMode >= 1) {
+        cerr << "Error: BTD-like methods cannot currently find diverse solutions. Use DFS/HBFS search." << endl;
+        exit(1);
+    }
+    if (ToulBar2::allSolutions && ToulBar2::btdMode == 1 && ToulBar2::elimDegree > 0) {
+        //    if (!ToulBar2::uai || ToulBar2::debug) cout << "Warning! Cannot count all solutions with variable elimination during search (except with degree 0 for #BTD)" << endl;
+        ToulBar2::elimDegree = 0;
+    }
+    if (ToulBar2::allSolutions && ToulBar2::btdMode != 1 && ToulBar2::elimDegree >= 0) {
+        //    if (!ToulBar2::uai || ToulBar2::debug) cout << "Warning! Cannot count all solutions with variable elimination during search (except with degree 0 for #BTD)" << endl;
+        ToulBar2::elimDegree = -1;
+    }
+    if (ToulBar2::allSolutions && ToulBar2::elimDegree_preprocessing >= 0) {
+        //    if (!ToulBar2::uai || ToulBar2::debug) cout << "Warning! Cannot count all solutions with generic variable elimination" << endl;
+        ToulBar2::elimDegree_preprocessing = -1;
+    }
+    if (ToulBar2::allSolutions || ToulBar2::isZ) {
+        ToulBar2::DEE = 0;
+        ToulBar2::FullEAC = false;
+    }
+    if (ToulBar2::lds && ToulBar2::btdMode >= 1) {
+        cerr << "Error: Limited Discrepancy Search not compatible with BTD-like search methods." << endl;
+        exit(1);
+    }
+    if (ToulBar2::lds && ToulBar2::hbfs) {
+        // cout << "Warning! Hybrid best-first search not compatible with Limited Discrepancy Search." << endl;
+        ToulBar2::hbfs = 0;
+    }
+    if (ToulBar2::lds && ToulBar2::solutionBasedPhaseSaving) {
+        // cout << "Warning! Solution based phase saving is not recommended with Limited Discrepancy Search." << endl;
+        ToulBar2::solutionBasedPhaseSaving = false;
+    }
+    if (ToulBar2::hbfs && ToulBar2::btdMode >= 2) {
+        cout << "Warning! Hybrid best-first search not compatible with RDS-like search methods." << endl;
+        ToulBar2::hbfs = 0;
+    }
+    if (ToulBar2::restart >= 0 && ToulBar2::btdMode >= 1) {
+        cerr << "Error: Randomized search with restart not compatible with BTD-like search methods." << endl;
+        exit(1);
+    }
+    if (!ToulBar2::binaryBranching && ToulBar2::btdMode >= 1) {
+        cout << "Warning! N-ary branching not implemented with BTD-like search methods (remove -b: or -B option)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::btdSubTree >= 0 && ToulBar2::btdMode <= 1) {
+        cerr << "Error: cannot restrict solving to a problem rooted at a subtree, use RDS (-B=2)." << endl;
+        exit(1);
+    }
+    if (abs(ToulBar2::vac) > 1 && ToulBar2::btdMode >= 1) { /// \warning VAC supports can break EAC supports (e.g. SPOT5 404.wcsp)
+        cerr << "Error: VAC during search not implemented with BTD-like search methods (use -A only or unset -B)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::FullEAC && ToulBar2::btdMode >= 1) {
+        cerr << "Error: VAC-based variable ordering heuristic not implemented with BTD-like search methods (remove -vacint option)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::FullEAC && ToulBar2::LcLevel != LC_EDAC) { /// \warning VAC-integral assumes EAC supports
+        cerr << "Error: VAC-based variable ordering heuristic requires EDAC local consistency (select EDAC using -k option)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::useRASPS && ToulBar2::btdMode >= 1) {
+        cerr << "Error: VAC-based upper bound probing heuristic not implemented with BTD-like search methods (remove -rasps option)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::useRASPS && !ToulBar2::vac) {
+        cerr << "Error: VAC-based upper bound probing heuristic requires VAC at least in preprocessing (add -A option)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::VACthreshold && !ToulBar2::vac) {
+        cerr << "Error: VAC threshold heuristic requires VAC during search (add -A option)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::vac && (ToulBar2::LcLevel == LC_NC || ToulBar2::LcLevel == LC_DAC)) { /// \warning VAC assumes AC supports
+        cerr << "Error: VAC requires at least AC local consistency (select AC, FDAC, or EDAC using -k option)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::vac && ToulBar2::FullEAC && !ToulBar2::vacValueHeuristic) { /// \warning VAC must update EAC supports in order to make new FullEAC supports based on VAC-integrality
+        ToulBar2::vacValueHeuristic = true;
+    }
+    if (ToulBar2::preprocessFunctional > 0 && (ToulBar2::LcLevel == LC_NC || ToulBar2::LcLevel == LC_DAC)) {
+        cerr << "Error: functional elimination requires at least AC local consistency (select AC, FDAC, or EDAC using -k option)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::learning && ToulBar2::elimDegree >= 0) {
+        cout << "Warning! Cannot perform variable elimination during search with pseudo-boolean learning." << endl;
+        ToulBar2::elimDegree = -1;
+    }
+    if (ToulBar2::incop_cmd.size() > 0 && (ToulBar2::allSolutions || ToulBar2::isZ)) {
+        cout << "Error: Cannot use INCOP local search for (weighted) counting (remove -i option)." << endl;
+        exit(1);
+    }
+    if (!ToulBar2::binaryBranching && ToulBar2::hbfs) {
+        cout << "Error: hybrid best-first search restricted to binary branching (remove -b: or add -hbfs: options)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::dichotomicBranching >= 2 && ToulBar2::hbfs) {
+        cout << "Error: general dichotomic branching not implemented with hybrid best-first search (use simple dichotomic branching or add -hbfs: parameter)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::verifyOpt && (ToulBar2::elimDegree >= 0 || ToulBar2::elimDegree_preprocessing >= 0)) {
+        cout << "Warning! Cannot perform variable elimination while verifying that the optimal solution is preserved." << endl;
+        ToulBar2::elimDegree = -1;
+        ToulBar2::elimDegree_preprocessing = -1;
+    }
+    if (ToulBar2::verifyOpt && ToulBar2::preprocessFunctional > 0) {
+        cout << "Warning! Cannot perform functional elimination while verifying that the optimal solution is preserved." << endl;
+        ToulBar2::preprocessFunctional = 0;
+    }
+    if (ToulBar2::verifyOpt && ToulBar2::DEE >= 1) {
+        cout << "Warning! Cannot perform dead-end elimination while verifying that the optimal solution is preserved." << endl;
+        ToulBar2::DEE = 0;
+    }
+}
+
+/*
+ * WCSP constructors
+ *
+ */
+
+/// \note isDelayedNaryCtr should be false if toulbar2 is used within numberjack
+WCSP::WCSP(Cost upperBound, void* _solver_)
+    : solver(_solver_)
+    , lb(MIN_COST)
+    , ub(upperBound)
+    , negCost(MIN_COST)
+    , solutionCost(MAX_COST)
+    , NCBucketSize(cost2log2gub(upperBound) + 1)
+    , NCBuckets(NCBucketSize, VariableList(&Store::storeVariable))
+    , PendingSeparator(&Store::storeSeparator)
+    , objectiveChanged(false)
+    , nbNodes(0)
+    , nbDEE(0)
+    , lastConflictConstr(NULL)
+    , maxdomainsize(0)
+    ,
+#ifdef NUMBERJACK
+    isDelayedNaryCtr(false)
+    ,
+#else
+    isDelayedNaryCtr(true)
+    ,
+#endif
+    isPartOfOptimalSolution(0)
+    , elimOrder(0)
+    , elimBinOrder(0)
+    , elimTernOrder(0)
+    , maxDegree(-1)
+    , elimSpace(0)
+{
+    instance = wcspCounter++;
+    if (ToulBar2::vac)
+        vac = new VACExtension(this);
+    else
+        vac = NULL;
+
+    td = NULL;
+}
+
+WCSP::~WCSP()
+{
+    if (vars.size())
+        for (unsigned int i = 0; i < vars.size(); i++)
+            delete vars[i];
+    if (constrs.size())
+        for (unsigned int i = 0; i < constrs.size() - 1; i++)
+            delete constrs[i]; // Warning! The last constraint may be badly allocated due to an exception occuring in its constructor (because of propagate) // If there is no constraint then (constrs.size()-1) overflow!
+    if (elimBinConstrs.size())
+        for (unsigned int i = 0; i < elimBinConstrs.size(); i++)
+            delete elimBinConstrs[i];
+    if (elimTernConstrs.size())
+        for (unsigned int i = 0; i < elimTernConstrs.size(); i++)
+            delete elimTernConstrs[i];
+}
+
+WeightedCSP* WeightedCSP::makeWeightedCSP(Cost upperBound, void* solver)
+{
+    WeightedCSP* W = new WCSP(upperBound, solver);
+    return W;
+}
+
+/// \brief create an enumerated variable with its domain bounds
+int WCSP::makeEnumeratedVariable(string n, Value iinf, Value isup)
+{
+    EnumeratedVariable* x;
+    if (!ToulBar2::vac) {
+        x = new EnumeratedVariable(this, n, iinf, isup);
+    } else {
+        x = new VACVariable(this, n, iinf, isup);
+    }
+    if (maxdomainsize < isup - iinf + 1)
+        maxdomainsize = isup - iinf + 1;
+    listofsuccessors.push_back(vector<int>()); // add new variable in the topological order list;
+    return x->wcspIndex;
+}
+
+/// \brief create an enumerated variable with its domain values
+int WCSP::makeEnumeratedVariable(string n, Value* d, int dsize)
+{
+    EnumeratedVariable* x;
+    if (!ToulBar2::vac) {
+        x = new EnumeratedVariable(this, n, d, dsize);
+    } else {
+        x = new VACVariable(this, n, d, dsize);
+    }
+    if (maxdomainsize < dsize)
+        maxdomainsize = dsize;
+    listofsuccessors.push_back(vector<int>()); // add new variable in the topological order list;
+    return x->wcspIndex;
+}
+
+void WCSP::addValueName(int xIndex, const string& name)
+{
+    Variable* x = getVar(xIndex);
+    if (x->enumerated()) {
+        ((EnumeratedVariable*)x)->addValueName(name);
+    }
+}
+
+/// \brief create an interval variable with its domain bounds
+int WCSP::makeIntervalVariable(string n, Value iinf, Value isup)
+{
+    if (ToulBar2::vac) {
+        cerr << "VAC not implemented on interval variables!" << endl;
+        ToulBar2::vac = 0;
+        ToulBar2::minsumDiffusion = 0;
+    }
+    IntervalVariable* x = new IntervalVariable(this, n, iinf, isup);
+    if (maxdomainsize < isup - iinf + 1)
+        maxdomainsize = isup - iinf + 1;
+    listofsuccessors.push_back(vector<int>()); // add new variable in the topological order list;
+    return x->wcspIndex;
+}
+
+/// \brief create a binary cost function from a vector of costs
+/// \param xIndex index of enumerated variable x as returned by makeEnumeratedVariable
+/// \param yIndex index of enumerated variable y
+/// \param costs a flat vector of costs (y indexes moving first)
+///
+/// \note It looks for an existing constraint
+/// (even not connected constraints). It also allocates
+/// memory for a new constraint. For these two reasons it should
+/// ONLY be called before search.
+///
+/// \warning Vector costs must have the same size as Cartesian product of original domains.
+int WCSP::postBinaryConstraint(int xIndex, int yIndex, vector<Cost>& costs)
+{
+    assert(xIndex != yIndex);
+    EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+    EnumeratedVariable* y = (EnumeratedVariable*)vars[yIndex];
+
+    assert(costs.size() == (x->getDomainInitSize() * y->getDomainInitSize()));
+    if (ToulBar2::vac) {
+        for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+            for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+                Cost c = costs[a * y->getDomainInitSize() + b];
+                histogram(c);
+            }
+        }
+    }
+
+    BinaryConstraint* ctr = x->getConstr(y);
+    if (ctr) {
+        ctr->reconnect();
+        ctr->addCosts(x, y, costs);
+        ctr->propagate();
+    } else {
+        if (!ToulBar2::vac) {
+            ctr
+                = new BinaryConstraint(this, (EnumeratedVariable*)vars[xIndex], (EnumeratedVariable*)vars[yIndex], costs);
+        } else {
+            ctr
+                = new VACBinaryConstraint(this, (EnumeratedVariable*)vars[xIndex], (EnumeratedVariable*)vars[yIndex], costs);
+        }
+    }
+
+    return ctr->wcspIndex;
+}
+
+/// \brief create a binary cost function from a vector of floating point values that will be approximated to the ToulBar2:decimalPoint precision
+/// \param xIndex index of enumerated variable x as returned by makeEnumeratedVariable
+/// \param yIndex index of enumerated variable y
+/// \param costs a flat vector of floating point costs (y indexes moving first)
+/// \param incremental true if this cost function is automatically removed when backtracking
+///
+/// \note This must ONLY be called before search.
+///
+/// \warning The cost Vector must have the same size as Cartesian product of original domains.
+int WCSP::postBinaryConstraint(int xIndex, int yIndex, vector<Double>& dcosts, bool incremental)
+{
+    assert(xIndex != yIndex);
+    EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+    EnumeratedVariable* y = (EnumeratedVariable*)vars[yIndex];
+
+    assert(dcosts.size() == (x->getDomainInitSize() * y->getDomainInitSize()));
+
+    long double minCost = std::numeric_limits<long double>::infinity();
+    for (long double cost : dcosts) {
+        minCost = min(minCost, cost);
+    }
+
+    vector<Cost> icosts;
+    icosts.resize(dcosts.size());
+    for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+        for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+            icosts[a * y->getDomainInitSize() + b] = (Cost)(round((dcosts[a * y->getDomainInitSize() + b] - minCost) * pow(10, ToulBar2::decimalPoint)));
+        }
+    }
+    negCost -= (Cost)(round(minCost * pow(10, ToulBar2::decimalPoint)));
+    if (incremental) {
+        return postIncrementalBinaryConstraint(xIndex, yIndex, icosts);
+    } else {
+        return postBinaryConstraint(xIndex, yIndex, icosts);
+    }
+}
+
+/// \brief create a binary cost function from a vector of floating point values that will be approximated to the ToulBar2:decimalPoint precision
+/// \param xIndex index of enumerated variable x as returned by makeEnumeratedVariable
+/// \param yIndex index of enumerated variable y
+/// \param costs a flat vector of floating point costs (y indexes moving first)
+/// \param incremental true if this cost function is automatically removed when backtracking
+///
+/// \note This must ONLY be called before search.
+///
+/// \warning The cost Vector must have the same size as Cartesian product of original domains.
+int WCSP::postTernaryConstraint(int xIndex, int yIndex, int zIndex, vector<Double>& dcosts, bool incremental)
+{
+    assert(xIndex != yIndex);
+    assert(xIndex != zIndex);
+    assert(yIndex != zIndex);
+    EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+    EnumeratedVariable* y = (EnumeratedVariable*)vars[yIndex];
+    EnumeratedVariable* z = (EnumeratedVariable*)vars[zIndex];
+
+    assert(dcosts.size() == (x->getDomainInitSize() * y->getDomainInitSize() * z->getDomainInitSize()));
+
+    long double minCost = std::numeric_limits<long double>::infinity();
+    for (long double cost : dcosts) {
+        minCost = min(minCost, cost);
+    }
+
+    vector<Cost> icosts;
+    icosts.resize(dcosts.size());
+    for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+        for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+            for (unsigned int c = 0; c < z->getDomainInitSize(); c++) {
+                icosts[a * y->getDomainInitSize() * z->getDomainInitSize() + b * z->getDomainInitSize() + c] = (Cost)(round((dcosts[a * y->getDomainInitSize() * z->getDomainInitSize() + b * z->getDomainInitSize() + c] - minCost) * pow(10, ToulBar2::decimalPoint)));
+            }
+        }
+    }
+    negCost -= (Cost)(round(minCost * pow(10, ToulBar2::decimalPoint)));
+    if (incremental) {
+        return postIncrementalTernaryConstraint(xIndex, yIndex, zIndex, icosts);
+    } else {
+        return postTernaryConstraint(xIndex, yIndex, zIndex, icosts);
+    }
+}
+
+/// \brief create a ternary cost function from a flat vector of costs (z indexes moving first)
+int WCSP::postTernaryConstraint(int xIndex, int yIndex, int zIndex, vector<Cost>& costs)
+{
+    assert(xIndex != yIndex && xIndex != zIndex && yIndex != zIndex);
+    EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+    EnumeratedVariable* y = (EnumeratedVariable*)vars[yIndex];
+    EnumeratedVariable* z = (EnumeratedVariable*)vars[zIndex];
+
+    if (ToulBar2::vac) {
+        for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+            for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+                for (unsigned int c = 0; c < z->getDomainInitSize(); c++) {
+                    Cost co = costs[a * y->getDomainInitSize() * z->getDomainInitSize() + b * z->getDomainInitSize() + c];
+                    histogram(co);
+                }
+            }
+        }
+    }
+
+    TernaryConstraint* ctr = x->getConstr(y, z);
+
+    if (!ctr) {
+        unsigned int a, b;
+        vector<Cost> zerocostsxy;
+        vector<Cost> zerocostsxz;
+        vector<Cost> zerocostsyz;
+
+        for (a = 0; a < x->getDomainInitSize(); a++) {
+            for (b = 0; b < y->getDomainInitSize(); b++) {
+                zerocostsxy.push_back(MIN_COST);
+            }
+        }
+        for (a = 0; a < x->getDomainInitSize(); a++) {
+            for (b = 0; b < z->getDomainInitSize(); b++) {
+                zerocostsxz.push_back(MIN_COST);
+            }
+        }
+        for (a = 0; a < y->getDomainInitSize(); a++) {
+            for (b = 0; b < z->getDomainInitSize(); b++) {
+                zerocostsyz.push_back(MIN_COST);
+            }
+        }
+
+        BinaryConstraint* xy = x->getConstr(y);
+        BinaryConstraint* xz = x->getConstr(z);
+        BinaryConstraint* yz = y->getConstr(z);
+
+        if (!ToulBar2::vac) {
+            if (!xy) {
+                xy = new BinaryConstraint(this, x, y, zerocostsxy);
+                xy->deconnect(true);
+            }
+            if (!xz) {
+                xz = new BinaryConstraint(this, x, z, zerocostsxz);
+                xz->deconnect(true);
+            }
+            if (!yz) {
+                yz = new BinaryConstraint(this, y, z, zerocostsyz);
+                yz->deconnect(true);
+            }
+        } else {
+            if (!xy) {
+                xy = new VACBinaryConstraint(this, x, y, zerocostsxy);
+                xy->deconnect(true);
+            }
+            if (!xz) {
+                xz = new VACBinaryConstraint(this, x, z, zerocostsxz);
+                xz->deconnect(true);
+            }
+            if (!yz) {
+                yz = new VACBinaryConstraint(this, y, z, zerocostsyz);
+                yz->deconnect(true);
+            }
+        }
+
+        ctr = new TernaryConstraint(this, x, y, z, xy, xz, yz, costs);
+    } else {
+        ctr->addCosts(x, y, z, costs);
+        ctr->propagate();
+    }
+
+    return ctr->wcspIndex;
+}
+
+/// \brief create a global cost function using a default cost (tuples with a different cost will be enter later using WCSP::postNaryConstraintTuple)
+/// \param scopeIndex array of enumerated variable indexes (as returned by makeEnumeratedVariable)
+/// \param arity size of scopeIndex
+/// \param defval default cost for any tuple
+/// \param nbtuples number of tuples to be inserted after creating this global cost function (optional parameter, zero if unknown)
+/// \param forcenary if false then it may create a specialized global cost function (e.g., a clause) instead of a basic NaryConstraint object
+/// \note should not be used for unary or binary or ternary cost functions
+/// \warning do not forget to initially propagate the global cost function using WCSP::postNaryConstraintEnd
+int WCSP::postNaryConstraintBegin(int* scopeIndex, int arity, Cost defval, Long nbtuples, bool forcenary)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    EnumeratedVariable** scopeVars = new EnumeratedVariable*[arity];
+    bool binary = true;
+    for (int i = 0; i < arity; i++) {
+        scopeVars[i] = (EnumeratedVariable*)vars[scopeIndex[i]];
+        if (scopeVars[i]->getDomainInitSize() != 2)
+            binary = false;
+    }
+    AbstractNaryConstraint* ctr = NULL;
+    if (!forcenary && binary && nbtuples == 1 && defval == MIN_COST && arity > NARYPROJECTIONSIZE) {
+        ctr = new WeightedClause(this, scopeVars, arity);
+    } else {
+        ctr = new NaryConstraint(this, scopeVars, arity, defval, nbtuples);
+    }
+    if (arity > NARYPROJECTIONSIZE) {
+        if (isDelayedNaryCtr)
+            delayedNaryCtr.push_back(ctr->wcspIndex);
+        else {
+            BinaryConstraint* bctr;
+            TernaryConstraint* tctr = new TernaryConstraint(this);
+            elimTernConstrs.push_back(tctr);
+            for (int j = 0; j < 3; j++) {
+                if (!ToulBar2::vac)
+                    bctr = new BinaryConstraint(this);
+                else
+                    bctr = new VACBinaryConstraint(this);
+                elimBinConstrs.push_back(bctr);
+            }
+        }
+    }
+    delete[] scopeVars;
+    return ctr->wcspIndex;
+}
+
+/// \brief set one tuple with a specific cost for global cost function in extension
+/// \param ctrindex index of cost function as returned by WCSP::postNaryConstraintBegin
+/// \param tuple array of values assigned to variables ordered by following the original scope order
+/// \param arity size of the array
+/// \param cost new cost for this tuple
+/// \warning valid only for global cost function in extension
+void WCSP::postNaryConstraintTuple(int ctrindex, Value* tuple, int arity, Cost cost)
+{
+    static Tuple s;
+    if (ToulBar2::vac)
+        histogram(cost);
+    Constraint* ctr = getCtr(ctrindex);
+    //    assert(ctr->extension()); // must be an NaryConstraint or WeightedClause
+    assert(arity == ctr->arity());
+    s.resize(arity);
+    for (int i = 0; i < arity; i++)
+        s[i] = ((EnumeratedVariable*)ctr->getVar(i))->toIndex(tuple[i]);
+    ctr->setTuple(s, cost);
+}
+
+/// \brief set one tuple with a specific cost for global cost function in extension
+/// \param ctrindex index of cost function as returned by WCSP::postNaryConstraintBegin
+/// \param tuple Tuple encoding of values assigned to variables ordered by following the original scope order
+/// \param cost new cost for this tuple
+/// \warning valid only for global cost function in extension
+/// \warning string encoding of tuples is for advanced users only!
+void WCSP::postNaryConstraintTuple(int ctrindex, const Tuple& tuple, Cost cost)
+{
+    if (ToulBar2::vac)
+        histogram(cost);
+    Constraint* ctr = getCtr(ctrindex);
+    //    assert(ctr->extension()); // must be an NaryConstraint or WeightedClause
+    ctr->setTuple(tuple, cost);
+}
+
+void WCSP::postNaryConstraintEnd(int ctrindex)
+{
+    AbstractNaryConstraint* ctr = (AbstractNaryConstraint*)getCtr(ctrindex);
+    if (ctr->arity() <= NARYPROJECTIONSIZE)
+        ctr->projectNaryBeforeSearch();
+    else if (!isDelayedNaryCtr)
+        ctr->propagate();
+}
+
+// Add a temporary (backtrackable) binary constraint for incremental search (like "on the fly ElimVar")
+int WCSP::postIncrementalBinaryConstraint(int xIndex, int yIndex, vector<Cost>& costs)
+{
+    assert(getTreeDec() == NULL);
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(xIndex);
+    EnumeratedVariable* y = (EnumeratedVariable*)getVar(yIndex);
+    BinaryConstraint* xy = x->getConstr(y);
+
+    initElimConstr();
+    BinaryConstraint* xynew = newBinaryConstr(x, y, NULL, NULL);
+    elimBinOrderInc();
+    for (auto iterx = x->begin(); iterx != x->end(); ++iterx) {
+        for (auto itery = y->begin(); itery != y->end(); ++itery) {
+            xynew->setcost(*iterx, *itery, costs[x->toIndex(*iterx) * y->getDomainInitSize() + y->toIndex(*itery)]);
+        }
+    }
+    if (xy) {
+        xy->addCosts(xynew);
+        assert(xynew->deconnected());
+        if (x->unassigned() && y->unassigned())
+            xy->reconnect();
+    } else {
+        xy = xynew;
+        xy->reconnect();
+    }
+    xy->propagate();
+    return xy->wcspIndex;
+}
+
+// Add a temporary (backtrackable) ternary constraint for incremental search (like "on the fly ElimVar")
+int WCSP::postIncrementalTernaryConstraint(int xIndex, int yIndex, int zIndex, vector<Cost>& costs)
+{
+    assert(getTreeDec() == NULL);
+    BinaryConstraint* bctr;
+    TernaryConstraint* xyz = new TernaryConstraint(this);
+    elimTernConstrs.push_back(xyz);
+    for (int j = 0; j < 3; j++) {
+        if (!ToulBar2::vac)
+            bctr = new BinaryConstraint(this);
+        else
+            bctr = new VACBinaryConstraint(this);
+        elimBinConstrs.push_back(bctr);
+    }
+
+    EnumeratedVariable* z = (EnumeratedVariable*)getVar(zIndex);
+    EnumeratedVariable* y = (EnumeratedVariable*)getVar(yIndex);
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(xIndex);
+
+    xyz = newTernaryConstr(x, y, z);
+    elimTernOrderInc();
+    for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+        for (EnumeratedVariable::iterator itery = y->begin(); itery != y->end(); ++itery) {
+            for (EnumeratedVariable::iterator iterz = z->begin(); iterz != z->end(); ++iterz) {
+                xyz->setcost(*iterx, *itery, *iterz, costs[x->toIndex(*iterx) * y->getDomainInitSize() * z->getDomainInitSize() + y->toIndex(*itery) * z->getDomainInitSize() + z->toIndex(*iterz)]);
+            }
+        }
+    }
+
+    TernaryConstraint* ctr = x->getConstr(y, z);
+    if (!ctr) {
+        xyz->fillElimConstrBinaries();
+        xyz->reconnect();
+    } else {
+        ctr->addCosts(xyz);
+        assert(ctr->connected());
+        assert(xyz->deconnected());
+        xyz = ctr;
+    }
+    xyz->propagate();
+    return xyz->wcspIndex;
+}
+
+// Dual representation, Hamming, the dual variables have 2 (divBound + 1) values
+// each value represent a (d,d) or (d,d+1) transition except for the last two
+// that means we are beyond divBound.
+void WCSP::addDivConstraint(const vector<Value> solution, int sol_j, Cost cost)
+{
+    if (ToulBar2::verbose >= 1)
+        cout << "adding diversity constraint (dual)" << endl;
+
+    // add diversity constraint from solution sol_id
+    vector<Cost> vc;
+    EnumeratedVariable* ex;
+
+    EnumeratedVariable* c;
+    EnumeratedVariable* cp = NULL;
+    int cId;
+    int cpId;
+
+    bool first_pos = true;
+
+    for (Variable* x : getDivVariables()) {
+
+        ex = (EnumeratedVariable*)x;
+        int xId = x->wcspIndex; //index of variable x
+
+        // Add constraint between x and c_j_x
+        cId = divVarsId[sol_j][xId]; //index of variable c
+        c = (EnumeratedVariable*)getVar(cId);
+        vc.clear();
+        for (unsigned val_x = 0; val_x < ex->getDomainInitSize(); val_x++) { //val_x = value index ?
+            for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) { // Si les domaines sont réduits, ça ne marche pas!
+                // val_c = delta(divBound+1) + qp
+                unsigned delta = val_c / (ToulBar2::divBound + 1); // the first divBound+1 values of c (delta = 0) are (d,d) transitions, the rest is (d,d+1)
+                vc.push_back(((val_x != (unsigned)solution[xId]) == delta) ? MIN_COST : getUb());
+            }
+        }
+        postIncrementalBinaryConstraint(xId, cId, vc);
+
+        // Add constraint between c_j_x and c_j_x-1
+        vc.clear();
+        if (first_pos) {
+            for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                vc.push_back(((val_c % (ToulBar2::divBound + 1)) == 0) ? MIN_COST : getUb()); // allow only (0,0) and (0,1)
+            }
+            postIncrementalUnaryConstraint(cId, vc);
+            first_pos = false;
+        } else {
+            // add binary constraint between cp and c
+            for (unsigned val_cp = 0; val_cp < cp->getDomainInitSize(); val_cp++) {
+                for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                    unsigned deltap = val_cp / (ToulBar2::divBound + 1); // 1 iff (d,d+1) on previous
+                    unsigned qp = val_cp % (ToulBar2::divBound + 1); // (d,.) on previous, so deltap+qp is (.,d/d+1)
+                    unsigned q = val_c % (ToulBar2::divBound + 1); // (d,.) on current
+                    vc.push_back((q == min(ToulBar2::divBound, qp + deltap)) ? MIN_COST : getUb()); // why min? (Thomas)
+                }
+            }
+            postIncrementalBinaryConstraint(cpId, cId, vc);
+        }
+        cp = c;
+        cpId = cId;
+    }
+
+    //Unary constraint on last var_c to ensure diversity
+    if (!getDivVariables().empty()) {
+        vc.clear();
+        for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+            unsigned q = val_c % (ToulBar2::divBound + 1);
+            unsigned delta = val_c / (ToulBar2::divBound + 1);
+            vc.push_back(q + delta >= ToulBar2::divBound ? MIN_COST : getUb());
+        }
+        postIncrementalUnaryConstraint(cId, vc);
+    }
+}
+
+// Hidden representation: dual + state variables
+void WCSP::addHDivConstraint(const vector<Value> solution, int sol_j, Cost cost)
+{
+    if (ToulBar2::verbose >= 1)
+        cout << "adding diversity constraint (hidden)" << endl;
+
+    // add diversity constraint from solution sol_id
+    vector<Cost> vc;
+    EnumeratedVariable* ex;
+
+    EnumeratedVariable* c = NULL;
+    EnumeratedVariable* h = NULL;
+    EnumeratedVariable* hp = NULL;
+
+    int cId = -1;
+    int hId = -1;
+    int hpId = -1;
+
+    for (unsigned divVarPos = 0; divVarPos < divVariables.size(); divVarPos++) {
+        ex = (EnumeratedVariable*)divVariables[divVarPos];
+        int xId = ex->wcspIndex; //wcsp index of current divVariable
+
+        // Add constraint between ex and c_j_x
+        cId = divVarsId[sol_j][xId]; //index of variable c
+        c = (EnumeratedVariable*)getVar(cId);
+        vc.clear();
+        for (unsigned val_ex = 0; val_ex < ex->getDomainInitSize(); val_ex++) { // val_x = value index ?
+            for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                unsigned delta = val_c / (ToulBar2::divBound + 1);
+                vc.push_back(((val_ex != (unsigned)solution[xId]) == delta) ? MIN_COST : getUb());
+            }
+        }
+        postIncrementalBinaryConstraint(xId, cId, vc);
+
+        // Add constraint between hp_j_x and c_j_x
+        vc.clear();
+        if (divVarPos == 0) {
+            for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                vc.push_back(((val_c % (ToulBar2::divBound + 1)) == 0) ? MIN_COST : getUb());
+            }
+            postIncrementalUnaryConstraint(cId, vc);
+        } else {
+            // add binary constraint between previous hp_j_x and c_j_x
+            for (unsigned val_hp = 0; val_hp < hp->getDomainInitSize(); val_hp++) {
+                for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                    unsigned q = val_c % (ToulBar2::divBound + 1);
+                    vc.push_back((val_hp == q) ? MIN_COST : getUb());
+                }
+            }
+            postIncrementalBinaryConstraint(hpId, cId, vc);
+        }
+
+        // Add constraint between c_j_x and h_j_x a (except last var, done after loop)
+        vc.clear();
+        if (divVarPos < divVariables.size() - 1) {
+            hId = divHVarsId[sol_j][xId]; //index of variable h
+            h = (EnumeratedVariable*)getVar(hId);
+            for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                for (unsigned val_h = 0; val_h < h->getDomainInitSize(); val_h++) {
+                    unsigned q = val_c % (ToulBar2::divBound + 1);
+                    unsigned delta = val_c / (ToulBar2::divBound + 1);
+                    vc.push_back((val_h == min(ToulBar2::divBound, q + delta)) ? MIN_COST : getUb());
+                }
+            }
+            postIncrementalBinaryConstraint(cId, hId, vc);
+        }
+        hp = h;
+        hpId = hId;
+    }
+    //Unary constraint on last var_c to ensure diversity
+    if (!divVariables.empty()) {
+        vc.clear();
+        for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+            unsigned q = val_c % (ToulBar2::divBound + 1);
+            unsigned delta = val_c / (ToulBar2::divBound + 1);
+            vc.push_back(q + delta >= ToulBar2::divBound ? MIN_COST : getUb());
+        }
+        postIncrementalUnaryConstraint(cId, vc);
+    }
+}
+
+// Ternary representation
+void WCSP::addTDivConstraint(const vector<Value> solution, int sol_j, Cost cost)
+{
+    if (ToulBar2::verbose >= 1)
+        cout << "adding diversity constraint (ternary decomposition)" << endl;
+
+    // add diversity constraint from solution sol_id
+    vector<Cost> vc;
+    EnumeratedVariable* ex;
+
+    EnumeratedVariable* h = NULL;
+    EnumeratedVariable* hp = NULL;
+
+    int hId = -1;
+    int hpId = -1;
+
+    for (unsigned divVarPos = 0; divVarPos < divVariables.size(); divVarPos++) {
+        ex = (EnumeratedVariable*)divVariables[divVarPos];
+        int xId = ex->wcspIndex; //wcsp index of current divVariable
+
+        // Add constraint between hp ex and h (except on extremities)
+        vc.clear();
+        if (divVarPos == 0) { // first position, no hp, only distance 0
+            hId = divHVarsId[sol_j][xId]; //index of variable h
+            h = (EnumeratedVariable*)getVar(hId);
+            for (unsigned val_ex = 0; val_ex < ex->getDomainInitSize(); val_ex++) {
+                for (unsigned val_h = 0; val_h < h->getDomainInitSize(); val_h++) {
+                    vc.push_back(((val_ex != (unsigned)solution[xId]) == val_h) ? MIN_COST : getUb());
+                }
+            }
+            postIncrementalBinaryConstraint(xId, hId, vc);
+        } else if (divVarPos + 1 == divVariables.size()) { // last position, no h
+            for (unsigned val_hp = 0; val_hp < hp->getDomainInitSize(); val_hp++) {
+                for (unsigned val_ex = 0; val_ex < ex->getDomainInitSize(); val_ex++) {
+                    vc.push_back((val_hp + (val_ex != (unsigned)solution[xId]) >= ToulBar2::divBound) ? MIN_COST : getUb());
+                }
+            }
+            postIncrementalBinaryConstraint(hpId, xId, vc);
+        } else {
+            hId = divHVarsId[sol_j][xId]; //index of variable h
+            h = (EnumeratedVariable*)getVar(hId);
+            for (unsigned val_hp = 0; val_hp < hp->getDomainInitSize(); val_hp++) {
+                for (unsigned val_ex = 0; val_ex < ex->getDomainInitSize(); val_ex++) {
+                    for (unsigned val_h = 0; val_h < h->getDomainInitSize(); val_h++) {
+                        //cout << "hp " << val_hp << " x " << val_ex << " h " << val_h << "(" << ((val_hp + (val_ex != (unsigned)solution[xId]) == val_h) ? MIN_COST : getUb()) << ")" << endl;
+                        vc.push_back((min(ToulBar2::divBound, val_hp + (val_ex != (unsigned)solution[xId])) == val_h) ? MIN_COST : getUb());
+                    }
+                }
+            }
+            postIncrementalTernaryConstraint(hpId, xId, hId, vc);
+        }
+        hp = h;
+        hpId = hId;
+    }
+}
+
+void WCSP::addMDDConstraint(Mdd mdd, int relaxed)
+{ //sol_j: to recognize the set of variables to use
+    if (ToulBar2::verbose >= 1)
+        cout << "adding relaxed mdd constraint" << endl;
+
+    vector<Variable*> varReverse;
+    for (unsigned v = 0; v < getDivVariables().size(); v++) {
+        varReverse.push_back(getDivVariables()[getDivVariables().size() - v - 1]);
+    }
+    int nLayers = varReverse.size();
+    vector<Cost> vc;
+    bool first_pos = true;
+    EnumeratedVariable* x;
+
+    EnumeratedVariable* c;
+    EnumeratedVariable* cp = NULL;
+    int cId;
+    int cpId = -1;
+
+    unsigned source;
+    unsigned target;
+    for (int layer = 0; layer < nLayers; layer++) {
+        x = (EnumeratedVariable*)varReverse[layer];
+        int xId = x->wcspIndex; //index of variable x
+
+        // Add constraint between x and c_j_x
+        cId = divVarsId[relaxed][xId]; //index of variable c
+        c = (EnumeratedVariable*)getVar(cId);
+        vc.clear();
+        for (unsigned val_x = 0; val_x < x->getDomainInitSize(); val_x++) {
+            for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                source = val_c / (ToulBar2::divWidth);
+                target = val_c % ToulBar2::divWidth;
+                vc.push_back((source < mdd[layer].size() && target < mdd[layer][source].size()) ? mdd[layer][source][target][val_x] : getUb());
+            }
+        }
+        postIncrementalBinaryConstraint(xId, cId, vc);
+
+        vc.clear();
+        for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+            source = val_c / (ToulBar2::divWidth);
+            target = val_c % ToulBar2::divWidth;
+            vc.push_back((source < mdd[layer].size() && target < mdd[layer][source].size()) ? MIN_COST : getUb());
+        }
+        postIncrementalUnaryConstraint(cId, vc);
+        vc.clear();
+        if (first_pos) {
+            first_pos = false;
+        } else {
+            // add binary constraint between cp and c
+            for (unsigned val_cp = 0; val_cp < cp->getDomainInitSize(); val_cp++) {
+                for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                    target = val_cp % (ToulBar2::divWidth);
+                    source = val_c / (ToulBar2::divWidth);
+                    vc.push_back((target == source) ? MIN_COST : getUb());
+                }
+            }
+            postIncrementalBinaryConstraint(cpId, cId, vc);
+            vc.clear();
+        }
+        cp = c;
+        cpId = cId;
+    }
+}
+
+void WCSP::addHMDDConstraint(Mdd mdd, int relaxed)
+{
+    if (ToulBar2::verbose >= 1)
+        cout << "adding relaxed mdd constraint - hidden decomposition" << endl;
+
+    vector<Variable*> varReverse;
+    for (unsigned v = 0; v < getDivVariables().size(); v++) {
+        varReverse.push_back(getDivVariables()[getDivVariables().size() - v - 1]);
+    }
+
+    unsigned nLayers = varReverse.size();
+    vector<Cost> vc;
+    EnumeratedVariable* ex;
+
+    EnumeratedVariable* c;
+    EnumeratedVariable* h = NULL;
+    EnumeratedVariable* hp = NULL;
+
+    int cId;
+    int hId = -1;
+    int hpId = -1;
+    unsigned source;
+    unsigned target;
+
+    for (unsigned layer = 0; layer < nLayers; layer++) {
+        ex = (EnumeratedVariable*)varReverse[layer];
+        int xId = ex->wcspIndex; //wcsp index of current divVariable
+
+        hId = divHVarsId[relaxed][xId]; //index of variable h
+        h = (EnumeratedVariable*)getVar(hId);
+        cId = divVarsId[relaxed][xId];
+        c = (EnumeratedVariable*)getVar(cId);
+        vc.clear();
+        //add constraint between hp and c, except on layer 0
+        if (layer == 0) {
+            for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                source = val_c / (ToulBar2::divWidth);
+                vc.push_back((source == 0) ? MIN_COST : getUb());
+            }
+            postIncrementalUnaryConstraint(cId, vc);
+        } else {
+            for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                source = val_c / (ToulBar2::divWidth);
+                for (unsigned val_hp = 0; val_hp < hp->getDomainInitSize(); val_hp++) {
+                    vc.push_back((val_hp == source) ? MIN_COST : getUb());
+                }
+            }
+            postIncrementalBinaryConstraint(cId, hpId, vc);
+        }
+        vc.clear();
+        //add constraint between c and h
+        if (layer != nLayers - 1) {
+            for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+                source = val_c / (ToulBar2::divWidth);
+                target = val_c % (ToulBar2::divWidth);
+                for (unsigned val_h = 0; val_h < h->getDomainInitSize(); val_h++) {
+                    vc.push_back((val_h == target) ? MIN_COST : getUb());
+                }
+            }
+            postIncrementalBinaryConstraint(cId, hId, vc);
+        }
+        vc.clear();
+        //Add constraint between c and ex
+        for (unsigned val_c = 0; val_c < c->getDomainInitSize(); val_c++) {
+            source = val_c / (ToulBar2::divWidth);
+            target = val_c % (ToulBar2::divWidth);
+            for (unsigned val_ex = 0; val_ex < ex->getDomainInitSize(); val_ex++) {
+                vc.push_back((source < mdd[layer].size() && target < mdd[layer][source].size()) ? mdd[layer][source][target][val_ex] : getUb());
+            }
+        }
+        postIncrementalBinaryConstraint(cId, xId, vc);
+        hp = h;
+        hpId = hId;
+    }
+}
+
+void WCSP::addTMDDConstraint(Mdd mdd, int relaxed)
+{
+    if (ToulBar2::verbose >= 1)
+        cout << "adding relaxed mdd constraint - ternary decomposition" << endl;
+
+    vector<Variable*> varReverse;
+    for (unsigned v = 0; v < getDivVariables().size(); v++) {
+        varReverse.push_back(getDivVariables()[getDivVariables().size() - v - 1]);
+    }
+
+    unsigned nLayers = varReverse.size();
+    vector<Cost> vc;
+    EnumeratedVariable* ex;
+
+    EnumeratedVariable* h = NULL;
+    EnumeratedVariable* hp = NULL;
+
+    int hId = -1;
+    int hpId = -1;
+
+    for (unsigned layer = 0; layer < nLayers; layer++) {
+        ex = (EnumeratedVariable*)varReverse[layer];
+        int xId = ex->wcspIndex; //wcsp index of current divVariable
+
+        vc.clear();
+        // Add constraint between hp ex and h (except on extremities)
+        if (layer == 0) { // first position, no hp, only distance 0
+            hId = divHVarsId[relaxed][xId]; //index of variable h
+            h = (EnumeratedVariable*)getVar(hId);
+            for (unsigned val_ex = 0; val_ex < ex->getDomainInitSize(); val_ex++) {
+                for (unsigned val_h = 0; val_h < h->getDomainInitSize(); val_h++) {
+                    vc.push_back((val_h < mdd[0][0].size()) ? mdd[0][0][val_h][val_ex] : getUb());
+                }
+            }
+            postIncrementalBinaryConstraint(xId, hId, vc);
+        } else if (layer + 1 == nLayers) { // last position, no h
+            for (unsigned val_hp = 0; val_hp < hp->getDomainInitSize(); val_hp++) {
+                for (unsigned val_ex = 0; val_ex < ex->getDomainInitSize(); val_ex++) {
+                    vc.push_back((val_hp < mdd[layer].size()) ? mdd[layer][val_hp][0][val_ex] : getUb());
+                }
+            }
+            postIncrementalBinaryConstraint(hpId, xId, vc);
+        } else {
+            hId = divHVarsId[relaxed][xId]; //index of variable h
+            h = (EnumeratedVariable*)getVar(hId);
+            for (unsigned val_hp = 0; val_hp < hp->getDomainInitSize(); val_hp++) {
+                for (unsigned val_ex = 0; val_ex < ex->getDomainInitSize(); val_ex++) {
+                    for (unsigned val_h = 0; val_h < h->getDomainInitSize(); val_h++) {
+                        vc.push_back((val_hp < mdd[layer].size() && val_h < mdd[layer][val_hp].size()) ? mdd[layer][val_hp][val_h][val_ex] : getUb());
+                    }
+                }
+            }
+            postIncrementalTernaryConstraint(hpId, xId, hId, vc);
+        }
+        hp = h;
+        hpId = hId;
+    }
+}
+
+void WCSP::postWSum(int* scopeIndex, int arity, string semantics, Cost baseCost, string comparator, int rightRes)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    string gcname = "wsum";
+    WeightedSum* decomposableGCF = new WeightedSum(arity, scopeIndex);
+    decomposableGCF->setSemantics(semantics);
+    decomposableGCF->setBaseCost(baseCost);
+    decomposableGCF->setComparator(comparator);
+    decomposableGCF->setRightRes(rightRes);
+    decomposableGCF->addToCostFunctionNetwork(this);
+}
+
+void WCSP::postWVarSum(int* scopeIndex, int arity, string semantics, Cost baseCost, string comparator, int varIndex)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    string gcname = "wvarsum";
+    WeightedVarSum* decomposableGCF = new WeightedVarSum(arity, scopeIndex);
+    decomposableGCF->setSemantics(semantics);
+    decomposableGCF->setBaseCost(baseCost);
+    decomposableGCF->setComparator(comparator);
+    decomposableGCF->setIndex(varIndex);
+    decomposableGCF->addToCostFunctionNetwork(this);
+}
+
+void WCSP::postWAmong(int* scopeIndex, int arity, string semantics, Cost baseCost, Value* values, int nbValues, int lb, int ub)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    WeightedAmong* decomposableGCF = new WeightedAmong(arity, scopeIndex);
+    decomposableGCF->setSemantics(semantics);
+    decomposableGCF->setBaseCost(baseCost);
+    for (int i = 0; i < nbValues; i++) {
+        decomposableGCF->addValue(values[i]);
+    }
+    decomposableGCF->setBounds(lb, ub);
+    decomposableGCF->addToCostFunctionNetwork(this);
+    delete[] values;
+    //delete [] decomposableGCF;
+}
+
+void WCSP::postWVarAmong(int* scopeIndex, int arity, const string& semantics, Cost baseCost, Value* values, int nbValues, int varIndex)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    WeightedVarAmong* decomposableGCF = new WeightedVarAmong(arity, scopeIndex);
+    decomposableGCF->setSemantics(semantics);
+    decomposableGCF->setBaseCost(baseCost);
+    for (int i = 0; i < nbValues; i++) {
+        decomposableGCF->addValue(values[i]);
+    }
+    decomposableGCF->setIndex(varIndex);
+    decomposableGCF->addToCostFunctionNetwork(this);
+    delete[] values;
+}
+
+void WCSP::postWRegular(int* scopeIndex, int arity, int nbStates, vector<pair<int, Cost>> initial_States, vector<pair<int, Cost>> accepting_States, int** Wtransitions,
+    vector<Cost> transitionsCosts)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    WFA* automaton = new WFA(nbStates);
+    for (unsigned int i = 0; i < initial_States.size(); i++) {
+        automaton->getInitialStates().push_back(initial_States[i]);
+    }
+    for (unsigned int i = 0; i < accepting_States.size(); i++) {
+        automaton->getAcceptingStates().push_back(accepting_States[i]);
+    }
+    for (unsigned int i = 0; i < transitionsCosts.size(); i++) {
+        automaton->getTransitions().push_back(new WTransition(Wtransitions[i][0], Wtransitions[i][1], Wtransitions[i][2], transitionsCosts[i]));
+    }
+    WeightedRegular regular(arity, scopeIndex);
+    regular.setWFA(automaton);
+    regular.addToCostFunctionNetwork(this);
+}
+
+void WCSP::postWGcc(int* scopeIndex, int arity, string semantics, Cost baseCost, Value* values, int nbValues, int* lb, int* ub)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    WeightedGcc* decomposableGCF = new WeightedGcc(arity, scopeIndex);
+    decomposableGCF->setSemantics(semantics);
+    decomposableGCF->setBaseCost(baseCost);
+    decomposableGCF->setNbValue(nbValues);
+    for (int i = 0; i < nbValues; i++) {
+        decomposableGCF->setBounds(values[i], lb[i], ub[i]);
+    }
+    decomposableGCF->addToCostFunctionNetwork(this);
+    delete[] values;
+    delete[] lb;
+    delete[] ub;
+}
+
+void WCSP::postWSame(int* scopeIndex, int arity, string semantics, Cost baseCost)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity / 2; i++)
+        for (int j = i + 1; j < arity / 2; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+    for (int i = arity / 2; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+    for (int i = 0; i < arity / 2; i++)
+        for (int j = arity / 2; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    WeightedSame* decomposableGCF = new WeightedSame(arity, scopeIndex);
+    decomposableGCF->setSemantics(semantics);
+    decomposableGCF->setBaseCost(baseCost);
+    decomposableGCF->addToCostFunctionNetwork(this);
+}
+
+void WCSP::postWAllDiff(int* scopeIndex, int arity, string semantics, Cost baseCost)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    WeightedAllDifferent* decomposableGCF = new WeightedAllDifferent(arity, scopeIndex);
+    decomposableGCF->setSemantics(semantics);
+    decomposableGCF->setBaseCost(baseCost);
+    decomposableGCF->addToCostFunctionNetwork(this);
+}
+
+void WCSP::postWSameGcc(int* scopeIndex, int arity, string semantics, Cost baseCost, Value* values, int nbValues, int* lb, int* ub)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity / 2; i++)
+        for (int j = i + 1; j < arity / 2; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+    for (int i = arity / 2; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+    for (int i = 0; i < arity / 2; i++)
+        for (int j = arity / 2; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    WeightedSameGcc* decomposableGCF = new WeightedSameGcc(arity, scopeIndex);
+    decomposableGCF->setSemantics(semantics);
+    decomposableGCF->setBaseCost(baseCost);
+    decomposableGCF->setNbValue(nbValues);
+    for (int i = 0; i < nbValues; i++) {
+        decomposableGCF->setBounds(values[i], lb[i], ub[i]);
+    }
+    decomposableGCF->addToCostFunctionNetwork(this);
+    delete[] values;
+    delete[] lb;
+    delete[] ub;
+}
+
+void WCSP::postWOverlap(int* scopeIndex, int arity, string semantics, Cost baseCost, string comparator, int rightRes)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity / 2; i++)
+        for (int j = i + 1; j < arity / 2; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+    for (int i = arity / 2; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+    for (int i = 0; i < arity / 2; i++)
+        for (int j = arity / 2; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    WeightedOverlap* decomposableGCF = new WeightedOverlap(arity, scopeIndex);
+    decomposableGCF->setSemantics(semantics);
+    decomposableGCF->setBaseCost(baseCost);
+    decomposableGCF->setComparator(comparator);
+    decomposableGCF->setRightRes(rightRes);
+    decomposableGCF->addToCostFunctionNetwork(this);
+}
+
+/// \brief create a monolithic global cost function in intension with a particular semantic
+/// \param scopeIndex array of enumerated variable indexes (as returned by makeEnumeratedVariable)
+/// \param arity size of scopeIndex
+/// \param gcname specific \e keyword name of the global cost function (\e eg salldiff, sgcc, sregular, ssame)
+/// \param file problem file (\see \ref wcspformat)
+/// \deprecated should use postWXXX methods
+int WCSP::postGlobalConstraint(int* scopeIndex, int arity, const string& gcname, istream& file, int* constrcounter, bool mult)
+{
+    if (gcname == "salldiffdp") {
+        string semantics;
+        Cost baseCost;
+        file >> semantics >> baseCost;
+        if (mult)
+            baseCost *= ToulBar2::costMultiplier;
+        postWAllDiff(scopeIndex, arity, semantics, "DAG", baseCost);
+        return -1;
+    } else if (gcname == "sgccdp") {
+        string semantics;
+        Cost baseCost;
+        int nvalues;
+        vector<BoundedObjValue> values;
+        file >> semantics >> baseCost >> nvalues;
+        for (int i = 0; i < nvalues; i++) {
+            int d, high, low;
+            file >> d >> low >> high;
+            values.push_back(BoundedObjValue(d, high, low));
+        }
+        if (mult)
+            baseCost *= ToulBar2::costMultiplier;
+        postWGcc(scopeIndex, arity, semantics, "DAG", baseCost, values);
+        return -1;
+    }else {
+        if(gcname =="knapsack"){
+        postKnapsackConstraint(scopeIndex,arity,file);
+        return -1;}
+    }
+
+    GlobalConstraint* gc = postGlobalCostFunction(scopeIndex, arity, gcname, constrcounter);
+    if (gc == NULL)
+        return -1;
+    if (file) {
+        gc->read(file, mult);
+    }
+    gc->init();
+    return gc->wcspIndex;
+}
+
+GlobalConstraint* WCSP::postGlobalCostFunction(int* scopeIndex, int arity, const string& gcname, int* constrcounter)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    GlobalConstraint* gc = NULL;
+
+    vector<EnumeratedVariable*> scopeVarsV(arity);
+    for (int i = 0; i < arity; i++)
+        scopeVarsV[i] = (EnumeratedVariable*)vars[scopeIndex[i]];
+    auto scopeVars = scopeVarsV.data();
+
+    if (gcname == "salldiff") {
+        gc = new AllDiffConstraint(this, scopeVars, arity);
+    } else if (gcname == "sgcc") {
+        gc = new GlobalCardinalityConstraint(this, scopeVars, arity);
+    } else if (gcname == "ssame") {
+        gc = new SameConstraint(this, scopeVars, arity);
+    } else if (gcname == "sregular") {
+        gc = new RegularFlowConstraint(this, scopeVars, arity);
+#ifdef ILOGCPLEX
+    } else if (gcname == "slinear") {
+        gc = new LPSConstraint(this, scopeVars, arity, constrcounter);
+#endif
+    } else if (gcname == "samong" || gcname == "samongdp") {
+        gc = new AmongConstraint(this, scopeVars, arity);
+    } else if (gcname == "sregulardp") {
+        gc = new RegularDPConstraint(this, scopeVars, arity);
+    } else if (gcname == "sgrammar" || gcname == "sgrammardp") {
+        gc = new GrammarConstraint(this, scopeVars, arity);
+    } else if (gcname == "MST" || gcname == "smstdp") {
+        gc = new TreeConstraint(this, scopeVars, arity);
+    } else if (gcname == "max" || gcname == "smaxdp") {
+        gc = new MaxConstraint(this, scopeVars, arity);
+    } else {
+        cout << gcname << " undefined" << endl;
+        exit(1);
+    }
+
+    if (gc != NULL)
+        globalconstrs.push_back(gc);
+
+    return gc;
+}
+
+int WCSP::postCliqueConstraint(int* scopeIndex, int arity, istream& file)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    vector<EnumeratedVariable*> scopeVars(arity);
+    for (int i = 0; i < arity; i++)
+        scopeVars[i] = (EnumeratedVariable*)vars[scopeIndex[i]];
+    auto cc = new CliqueConstraint(this, scopeVars.data(), arity);
+    cc->read(file);
+    if (isDelayedNaryCtr)
+        delayedNaryCtr.push_back(cc->wcspIndex);
+    else {
+        BinaryConstraint* bctr;
+        TernaryConstraint* tctr = new TernaryConstraint(this);
+        elimTernConstrs.push_back(tctr);
+        for (int j = 0; j < 3; j++) {
+            if (!ToulBar2::vac)
+                bctr = new BinaryConstraint(this);
+            else
+                bctr = new VACBinaryConstraint(this);
+            elimBinConstrs.push_back(bctr);
+        }
+        cc->propagate();
+    }
+    return cc->wcspIndex;
+}
+int WCSP::postKnapsackConstraint(int* scopeIndex, int arity, istream& file)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+        //Eliminate variable with weigth 0.
+    vector<int> Weightzero;
+    vector<Long> weights;
+    int nbzeros=0;
+    Long readw;
+    Long capacity;
+    Long MaxWeight=0;
+    Long NegCapacity=0;
+
+    file >> capacity;
+
+    bool isclause = (capacity <= 1 && arity > 3);
+    Long clausecapacity = 1;
+    vector<tValue> clausetuple(arity, 0);
+
+    for (int i = 0; i != arity; ++i) {
+        file >> readw;
+        isclause &= (readw == 1 || readw == -1);
+        if (readw == -1) {
+            clausetuple[i] = 1;
+            clausecapacity--;
+        }
+        weights.push_back(readw);
+        if(weights[i]==0){
+            Weightzero.push_back(i);
+            nbzeros++;}
+        else if(weights[i]<0)
+            NegCapacity-=weights[i];
+        else
+            MaxWeight+=weights[i];
+    }
+    isclause &= (clausecapacity == capacity);
+    int k=0;
+    for(int i=0; i<nbzeros;i++){
+        weights.erase(weights.begin() + Weightzero[i]-k);
+        for(int j=Weightzero[i]-k;j<arity;j++)
+            *(scopeIndex+j)=*(scopeIndex+j+1);
+        k++;
+        arity--;
+    }
+    vector<EnumeratedVariable*> scopeVars(arity);
+    for (int i = 0; i < arity; i++)
+        scopeVars[i] = (EnumeratedVariable*)vars[scopeIndex[i]];
+    AbstractNaryConstraint* cc = NULL;
+    if (isclause) {
+        assert(arity == (int)clausetuple.size());
+        if (ToulBar2::verbose >= 3) cout << "Knapsack constraint of arity " << arity << " transformed into clause!" << endl;
+        cc = new WeightedClause(this, scopeVars.data(), arity, getUb(), clausetuple);
+    } else {
+        cc = new KnapsackConstraint(this, scopeVars.data(), arity, capacity, weights, MaxWeight,NegCapacity);
+    }
+    if (isDelayedNaryCtr)
+        delayedNaryCtr.push_back(cc->wcspIndex);
+    else {
+        BinaryConstraint* bctr;
+        TernaryConstraint* tctr = new TernaryConstraint(this);
+        elimTernConstrs.push_back(tctr);
+        for (int j = 0; j < 3; j++) {
+            if (!ToulBar2::vac)
+                bctr = new BinaryConstraint(this);
+            else
+                bctr = new VACBinaryConstraint(this);
+            elimBinConstrs.push_back(bctr);
+        }
+        cc->propagate();
+    }
+    return cc->wcspIndex;
+}
+
+// only DAG-based or network-based propagator
+int WCSP::postWAmong(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+    const vector<Value>& values, int lb, int ub)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    if (propagator == "network") {
+        string semantics_ = semantics;
+        int* values_ = (int*)&values[0];
+        postWAmong(scopeIndex, arity, semantics_, baseCost, values_, values.size(), lb, ub);
+        return INT_MIN;
+    }
+
+    AmongConstraint* gc = (AmongConstraint*)postGlobalCostFunction(scopeIndex, arity, "samong");
+    if (gc == NULL)
+        return -1;
+
+    gc->setSemantics(semantics);
+    gc->setBaseCost(baseCost);
+    gc->setUpperBound(ub);
+    gc->setLowerBound(lb);
+    for (unsigned int i = 0; i < values.size(); i++)
+        gc->addBoundingValue(values[i]);
+    gc->init();
+    return gc->wcspIndex;
+}
+
+int WCSP::postWRegular(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+    int nbStates,
+    const vector<WeightedObjInt>& initial_States,
+    const vector<WeightedObjInt>& accepting_States,
+    const vector<DFATransition>& Wtransitions)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    if (propagator == "network") { // Warning! semantics not used
+        vector<pair<int, Cost>> initial_States_;
+        for (unsigned int i = 0; i < initial_States.size(); i++) {
+            initial_States_.push_back(pair<int, Cost>(initial_States[i].val, initial_States[i].weight));
+        }
+        vector<pair<int, Cost>> accepting_States_;
+        for (unsigned int i = 0; i < accepting_States.size(); i++) {
+            accepting_States_.push_back(pair<int, Cost>(accepting_States[i].val, accepting_States[i].weight));
+        }
+        vector<Cost> transitionsCosts;
+        vector<int*> transitions;
+        for (unsigned int i = 0; i < Wtransitions.size(); i++) {
+            int* transition = new int[3];
+            transition[0] = Wtransitions[i].start;
+            transition[1] = Wtransitions[i].end;
+            transition[2] = Wtransitions[i].symbol;
+            transitions.push_back(transition);
+            transitionsCosts.push_back(Wtransitions[i].weight);
+        }
+        postWRegular(scopeIndex, arity, nbStates, initial_States_, accepting_States_, &transitions[0], transitionsCosts);
+        for (unsigned int i = 0; i < Wtransitions.size(); i++) {
+            delete[] transitions[i];
+        }
+
+        return INT_MIN;
+    }
+
+    WeightedAutomaton* wfa = NULL;
+    int constrIndex = -1;
+
+    if (propagator == "flow") {
+        RegularFlowConstraint* gc = (RegularFlowConstraint*)postGlobalCostFunction(scopeIndex, arity, "sregular");
+        if (gc != NULL) {
+            constrIndex = gc->wcspIndex;
+            gc->setSemantics(semantics);
+            gc->setBaseCost(baseCost);
+            wfa = gc->getWeightedAutomaton();
+        }
+    } else {
+        RegularDPConstraint* gc = (RegularDPConstraint*)postGlobalCostFunction(scopeIndex, arity, "sregulardp");
+        if (gc != NULL) {
+            constrIndex = gc->wcspIndex;
+            gc->setSemantics(semantics);
+            gc->setBaseCost(baseCost);
+            wfa = gc->getWeightedAutomaton();
+        }
+    }
+
+    if (wfa != NULL) {
+        wfa->setNumStates(nbStates);
+        for (unsigned int i = 0; i < initial_States.size(); i++) {
+            wfa->addInitialState(initial_States[i].val);
+        }
+        for (unsigned int i = 0; i < accepting_States.size(); i++) {
+            wfa->addFinalState(accepting_States[i].val);
+        }
+        for (unsigned int i = 0; i < Wtransitions.size(); i++) {
+            wfa->addTransition(Wtransitions[i].start, Wtransitions[i].symbol,
+                Wtransitions[i].end, Wtransitions[i].weight);
+        }
+    }
+    if (constrIndex >= 0)
+        ((GlobalConstraint*)getCtr(constrIndex))->init();
+    return constrIndex;
+}
+
+int WCSP::postWGcc(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+    const vector<BoundedObjValue>& values)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    if (propagator == "network") {
+        string semantics_ = semantics;
+        int nbValues = values.size();
+        Value* values_ = new Value[nbValues];
+        int* lb = new int[nbValues];
+        int* ub = new int[nbValues];
+        for (unsigned int i = 0; i < values.size(); i++) {
+            values_[i] = values[i].val;
+            lb[i] = values[i].lower;
+            ub[i] = values[i].upper;
+        }
+        postWGcc(scopeIndex, arity, semantics, baseCost, values_, nbValues, lb, ub);
+        return INT_MIN;
+    }
+
+    if (propagator == "flow") {
+        GlobalCardinalityConstraint* gc = (GlobalCardinalityConstraint*)postGlobalCostFunction(scopeIndex, arity, "sgcc");
+        if (gc == NULL)
+            return -1;
+
+        gc->setSemantics(semantics);
+        gc->setBaseCost(baseCost);
+        for (unsigned int i = 0; i < values.size(); i++) {
+            gc->addValueAndBounds(values[i].val, values[i].lower, values[i].upper);
+        }
+        gc->init();
+        return gc->wcspIndex;
+    } else { // DAG-based propagator
+        for (unsigned int i = 0; i < values.size(); i++) {
+            //Adding a wamong
+            vector<Value> values_;
+            values_.push_back(values[i].val);
+            postWAmong(scopeIndex, arity, semantics, "DAG", baseCost, values_, values[i].lower, values[i].upper);
+        }
+        return INT_MIN;
+    }
+}
+
+int WCSP::postWSame(int* scopeIndexG1, int arityG1, int* scopeIndexG2, int arityG2, const string& semantics, const string& propagator, Cost baseCost)
+{
+    assert(arityG1 >= 2); // does not work for binary or ternary cost functions!!!
+    assert(arityG1 == arityG2);
+#ifndef NDEBUG
+    for (int i = 0; i < arityG1; i++)
+        for (int j = i + 1; j < arityG1; j++)
+            assert(scopeIndexG1[i] != scopeIndexG1[j]);
+    for (int i = 0; i < arityG2; i++)
+        for (int j = i + 1; j < arityG2; j++)
+            assert(scopeIndexG2[i] != scopeIndexG2[j]);
+    for (int i = 0; i < arityG1; i++)
+        for (int j = 1; j < arityG2; j++)
+            assert(scopeIndexG1[i] != scopeIndexG2[j]);
+#endif
+
+    if (propagator == "network") {
+        string semantics_ = semantics;
+        vector<int> scopeIndex;
+        for (int i = 0; i < arityG1; i++)
+            scopeIndex.push_back(scopeIndexG1[i]);
+        for (int i = 0; i < arityG2; i++)
+            scopeIndex.push_back(scopeIndexG2[i]);
+        int arity = arityG1 + arityG2;
+        postWSame(&scopeIndex[0], arity, semantics_, baseCost);
+        return INT_MIN;
+    }
+
+    int* scopeIndex = new int[arityG1 + arityG2];
+    int arity = arityG1 + arityG2;
+    for (int i = 0; i < arityG1; i++) {
+        scopeIndex[i] = scopeIndexG1[i];
+    }
+    for (int i = 0; i < arityG2; i++) {
+        scopeIndex[i + arityG1] = scopeIndexG2[i];
+    }
+
+    SameConstraint* gc = (SameConstraint*)postGlobalCostFunction(scopeIndex, arity, "ssame");
+    if (gc == NULL)
+        return -1;
+
+    gc->setSemantics(semantics);
+    gc->setBaseCost(baseCost);
+    for (int i = 0; i < arityG1; i++)
+        gc->addVariablesToGroup((EnumeratedVariable*)vars[scopeIndexG1[i]], 0);
+    for (int i = 0; i < arityG2; i++)
+        gc->addVariablesToGroup((EnumeratedVariable*)vars[scopeIndexG2[i]], 1);
+
+    delete[] scopeIndex;
+
+    gc->init();
+    return gc->wcspIndex;
+}
+
+int WCSP::postWAllDiff(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    if (propagator == "network") {
+        string semantics_ = semantics;
+        postWAllDiff(scopeIndex, arity, semantics_, baseCost);
+        return INT_MIN;
+    }
+
+    if (propagator == "flow") {
+        GlobalConstraint* gc = postGlobalCostFunction(scopeIndex, arity, "salldiff");
+
+        if (gc == NULL)
+            return -1;
+
+        gc->setSemantics(semantics);
+        gc->setBaseCost(baseCost);
+        gc->init();
+        return gc->wcspIndex;
+    } else { // DAG-based propagation using a decomposition into multiple among cost functions
+        // Counting the number of value
+        int inf = ((EnumeratedVariable*)getVar(scopeIndex[0]))->getInf();
+        int sup = ((EnumeratedVariable*)getVar(scopeIndex[0]))->getSup();
+        for (int variable = 0; variable < arity; ++variable) {
+            int tinf = ((EnumeratedVariable*)getVar(scopeIndex[variable]))->getInf();
+            int tsup = ((EnumeratedVariable*)getVar(scopeIndex[variable]))->getSup();
+            inf = min(inf, tinf);
+            sup = max(sup, tsup);
+        }
+
+        // Adding WeightedAmong over each variable
+        for (int value = inf; value <= sup; value++) {
+            vector<Value> values;
+            values.push_back(value);
+            postWAmong(scopeIndex, arity, semantics, "DAG", baseCost, values, 0, 1);
+        }
+        return INT_MIN;
+    }
+}
+
+int WCSP::postWGrammarCNF(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+    int nbNonTerminal,
+    int startSymbol,
+    const vector<CFGProductionRule> WRuleToTerminal)
+{
+
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+
+    GrammarConstraint* gc = (GrammarConstraint*)postGlobalCostFunction(scopeIndex, arity, "sgrammar");
+
+    if (gc == NULL)
+        return -1;
+
+    gc->setSemantics(semantics);
+    gc->setBaseCost(baseCost);
+
+    WeightedCNFCFG* cnf = gc->getGrammar();
+
+    cnf->setNumNonTerminals(nbNonTerminal);
+    cnf->setStartSymbol(startSymbol);
+
+    for (unsigned int i = 0; i < WRuleToTerminal.size(); i++) {
+        if (WRuleToTerminal[i].order == 1) {
+            cnf->addProduction(WRuleToTerminal[i].from, WRuleToTerminal[i].to[0], 0);
+        } else if (WRuleToTerminal[i].order == 2) {
+            cnf->addProduction(WRuleToTerminal[i].from, WRuleToTerminal[i].to[0], WRuleToTerminal[i].to[1], 0);
+        } else {
+            cout << "Warning: either A->v or A->BC is allowed!" << endl;
+        }
+    }
+
+    gc->init();
+    return gc->wcspIndex;
+}
+
+int WCSP::postMST(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+    TreeConstraint* gc = (TreeConstraint*)postGlobalCostFunction(scopeIndex, arity, "MST");
+    if (gc == NULL)
+        return -1;
+    gc->setSemantics(semantics);
+    gc->setBaseCost(baseCost);
+    gc->init();
+    return gc->wcspIndex;
+}
+
+int WCSP::postMaxWeight(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+    const vector<WeightedVarValPair> weightFunction)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < arity; i++)
+        for (int j = i + 1; j < arity; j++)
+            assert(scopeIndex[i] != scopeIndex[j]);
+#endif
+
+    MaxConstraint* gc = (MaxConstraint*)postGlobalCostFunction(scopeIndex, arity, "max");
+
+    if (gc == NULL)
+        return -1;
+
+    gc->setSemantics(semantics);
+    gc->setBaseCost(baseCost);
+
+    for (unsigned int i = 0; i < weightFunction.size(); i++) {
+        gc->setAssignmentWeight((EnumeratedVariable*)vars[weightFunction[i].varIndex],
+            weightFunction[i].val,
+            weightFunction[i].weight);
+    }
+
+    gc->init();
+    return gc->wcspIndex;
+}
+
+/// \brief add a constant cost to problem lower bound (can be positive or negative)
+void WCSP::postNullaryConstraint(Cost cost)
+{
+    if (cost >= MIN_COST) {
+        increaseLb(cost);
+    } else {
+        decreaseLb(-cost);
+    }
+}
+
+void WCSP::postNullaryConstraint(Double cost)
+{
+    postNullaryConstraint((Cost)(round(cost * pow(10, ToulBar2::decimalPoint))));
+}
+
+/// \brief add unary costs to enumerated variable \e xIndex
+/// \note a unary cost function associated to an enumerated variable is not a Constraint object, it is directly managed inside the EnumeratedVariable class, this is why this function does not return any Constraint index. By doing so, unary costs are better shared inside the cost function network.
+void WCSP::postUnary(int xIndex, vector<Cost>& costs)
+{
+    assert(vars[xIndex]->enumerated());
+    EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+
+    if (ToulBar2::vac) {
+        for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+            Cost c = costs[a];
+            histogram(c);
+        }
+    }
+    for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+        if (costs[a] > MIN_COST)
+            x->project(x->toValue(a), costs[a], true);
+    }
+    x->findSupport();
+    x->queueNC();
+}
+
+/// \brief add unary costs to interval variable \e xIndex
+int WCSP::postUnary(int xIndex, Value* d, int dsize, Cost penalty)
+{
+    assert(!vars[xIndex]->enumerated());
+    Unary* ctr = new Unary(this, (IntervalVariable*)vars[xIndex], d, dsize, penalty);
+    return ctr->wcspIndex;
+}
+
+/// \brief add unary floating point costs approximated to the current ToulBar2::decimalPoint precision to enumerated variable \e xIndex
+/// \note  The ToulBar2::decimapPoint precision must have been set previously for the rest of the CFN existence.
+void WCSP::postUnaryConstraint(int xIndex, vector<Double>& dcosts, bool incremental)
+{
+    assert(vars[xIndex]->enumerated());
+    EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+
+    // normalize the cost function to make it positive
+    Double minCost = std::numeric_limits<Double>::infinity();
+    for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+        minCost = min(minCost, dcosts[a]);
+    }
+    vector<Cost> icosts;
+    icosts.reserve(dcosts.size());
+    for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+        icosts[a] = (Cost)(round((dcosts[a] - minCost) * pow(10, ToulBar2::decimalPoint)));
+    }
+    negCost -= (Cost)(round(minCost * pow(10, ToulBar2::decimalPoint)));
+    if (incremental) {
+        postIncrementalUnaryConstraint(xIndex, icosts);
+    } else {
+        postUnaryConstraint(xIndex, icosts);
+    }
+}
+
+/// \brief create a soft constraint \f$x \geq y + cst\f$ with the associated cost function \f$max( (y + cst - x \leq delta)?(y + cst - x):top , 0 )\f$
+int WCSP::postSupxyc(int xIndex, int yIndex, Value cst, Value delta)
+{
+    assert(xIndex != yIndex);
+    if (!vars[xIndex]->enumerated() && !vars[yIndex]->enumerated()) {
+        Supxyc* ctr = new Supxyc(this, (IntervalVariable*)vars[xIndex], (IntervalVariable*)vars[yIndex], cst, delta);
+        return ctr->wcspIndex;
+    } else if (vars[xIndex]->enumerated() && vars[yIndex]->enumerated()) {
+        EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+        EnumeratedVariable* y = (EnumeratedVariable*)vars[yIndex];
+        vector<Cost> costs;
+        for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+            for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+                costs.push_back(max((y->toValue(b) + cst - x->toValue(a) <= delta) ? ((Cost)((y->toValue(b) + cst - x->toValue(a)) * ToulBar2::costMultiplier)) : getUb(), MIN_COST));
+            }
+        }
+        return postBinaryConstraint(xIndex, yIndex, costs);
+    } else {
+        cerr << "Cannot mix variables with interval and enumerated domains!!!" << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+/// \brief soft binary disjunctive constraint \f$x \geq y + csty \vee y \geq x + cstx\f$ with associated cost function \f$(x \geq y + csty \vee y \geq x + cstx)?0:penalty\f$
+int WCSP::postDisjunction(int xIndex, int yIndex, Value cstx, Value csty, Cost penalty)
+{
+    assert(xIndex != yIndex);
+    if (!vars[xIndex]->enumerated() && !vars[yIndex]->enumerated()) {
+        Disjunction* ctr = new Disjunction(this, (IntervalVariable*)vars[xIndex], (IntervalVariable*)vars[yIndex], cstx, csty, penalty);
+        return ctr->wcspIndex;
+    } else if (vars[xIndex]->enumerated() && vars[yIndex]->enumerated()) {
+        EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+        EnumeratedVariable* y = (EnumeratedVariable*)vars[yIndex];
+        vector<Cost> costs;
+        for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+            for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+                costs.push_back(((x->toValue(a) >= y->toValue(b) + csty) || (y->toValue(b) >= x->toValue(a) + cstx)) ? MIN_COST : penalty);
+            }
+        }
+        return postBinaryConstraint(xIndex, yIndex, costs);
+    } else {
+        cerr << "Cannot mix variables with interval and enumerated domains!!!" << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+/// \brief special disjunctive constraint with three implicit hard constraints \f$x \leq xinfty\f$ and \f$y \leq yinfty\f$ and \f$x < xinfty \wedge y < yinfty \Rightarrow (x \geq y + csty \vee y \geq x + cstx)\f$ and an additional cost function \f$((x = xinfty)?costx:0) + ((y= yinfty)?costy:0)\f$
+int WCSP::postSpecialDisjunction(int xIndex, int yIndex, Value cstx, Value csty, Value xinfty, Value yinfty, Cost costx, Cost costy)
+{
+    assert(xIndex != yIndex);
+    if (!vars[xIndex]->enumerated() && !vars[yIndex]->enumerated()) {
+        SpecialDisjunction* ctr = new SpecialDisjunction(this, (IntervalVariable*)vars[xIndex], (IntervalVariable*)vars[yIndex], cstx, csty, xinfty, yinfty, costx, costy);
+        return ctr->wcspIndex;
+    } else if (vars[xIndex]->enumerated() && vars[yIndex]->enumerated()) {
+        EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+        EnumeratedVariable* y = (EnumeratedVariable*)vars[yIndex];
+        vector<Cost> costs;
+        for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+            for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+                costs.push_back((x->toValue(a) <= xinfty && y->toValue(b) <= yinfty && (x->toValue(a) == xinfty || y->toValue(b) == yinfty || (x->toValue(a) >= y->toValue(b) + csty || y->toValue(b) >= x->toValue(a) + cstx))) ? (((x->toValue(a) == xinfty) ? costx : MIN_COST) + ((y->toValue(b) == yinfty) ? costy : MIN_COST)) : getUb());
+            }
+        }
+        return postBinaryConstraint(xIndex, yIndex, costs);
+    } else {
+        cerr << "Cannot mix variables with interval and enumerated domains!!!" << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+void WCSP::sortConstraints()
+{
+    for (vector<int>::iterator idctr = delayedNaryCtr.begin(); idctr != delayedNaryCtr.end(); ++idctr) {
+        BinaryConstraint* bctr;
+        TernaryConstraint* tctr = new TernaryConstraint(this);
+        elimTernConstrs.push_back(tctr);
+        for (int j = 0; j < 3; j++) {
+            if (!ToulBar2::vac)
+                bctr = new BinaryConstraint(this);
+            else
+                bctr = new VACBinaryConstraint(this);
+            elimBinConstrs.push_back(bctr);
+        }
+    }
+    for (vector<int>::iterator idctr = delayedNaryCtr.begin(); idctr != delayedNaryCtr.end(); ++idctr) {
+        getCtr(*idctr)->propagate();
+    }
+    delayedNaryCtr.clear();
+    isDelayedNaryCtr = false;
+
+    // replaces small arity global cost functions in intension by their equivalent cost functions in extension
+    unsigned int i = 0;
+    while (i < globalconstrs.size()) {
+        if (globalconstrs[i]->connected()) {
+            if (globalconstrs[i]->arity() <= 3) {
+                globalconstrs[i]->projectNaryBeforeSearch(); // deconnect the current element
+                if (i < globalconstrs.size() - 1) {
+                    globalconstrs[i] = globalconstrs[globalconstrs.size() - 1]; // and replace it by the last element
+                }
+                globalconstrs.pop_back(); // decrease vector size by one
+            } else {
+                i++;
+            }
+        } else {
+            if (i < globalconstrs.size() - 1) {
+                globalconstrs[i] = globalconstrs[globalconstrs.size() - 1]; // replace the current element by the last element
+            }
+            globalconstrs.pop_back(); // decrease vector size by one
+        }
+    }
+
+    if (ToulBar2::Berge_Dec > 0) {
+        // flag pour indiquer si une variable a deja ete visitee initialement a faux
+        vector<bool> marked(numberOfVariables(), false);
+        vector<int> revdac;
+        // nouvel ordre DAC inverse
+        //	for (int i = numberOfVariables()-1 ; i >= 0; i--) { if (!marked[i]){ visit(i,revdac,marked,listofsuccessors); }}
+        //	for (unsigned int i = 0; i <  numberOfVariables(); i++) { if (!marked[i]){ visit(i,revdac,marked,listofsuccessors); }}
+
+        //	for (unsigned int i = 0; i< numberOfVariables(); i++) {
+        //		cout << "listofsuccessors(" << i << "):";
+        //		for (unsigned int a = 0; a < listofsuccessors[i].size(); a++) {
+        //			cout << " " << listofsuccessors[i][a];
+        //		}
+        //		cout << endl;
+        //	}
+
+        //Mark native variable
+        for (int i = ((ToulBar2::nbDecisionVars > 0) ? ToulBar2::nbDecisionVars : numberOfVariables()) - 1; i >= 0; i--) {
+            if (!marked[i] && getName(i)[0] != IMPLICIT_VAR_TAG[0]) {
+                visit(i, revdac, marked, listofsuccessors);
+            }
+        }
+        //Mark q variable only
+        for (int i = numberOfVariables() - 1; i >= 0; i--) {
+            if (!marked[i]) {
+                visit(i, revdac, marked, listofsuccessors);
+            }
+        }
+
+        // listofsuccessors.clear(); // appel a la methode clear de l'objet vector
+
+        if (ToulBar2::verbose >= 1) {
+            cout << "BERGE DAC reverse order:";
+            for (unsigned int i = 0; i < numberOfVariables(); i++) {
+                cout << " " << revdac[i];
+            }
+            cout << endl;
+        }
+
+        assert(revdac.size() == numberOfVariables());
+
+        setDACOrder(revdac);
+    }
+    // postpone costly variable elimination heuristics if too many variables
+    if (ToulBar2::varOrder && (numberOfVariables() < LARGE_NB_VARS || reinterpret_cast<uintptr_t>(ToulBar2::varOrder) == MAX_CARD || reinterpret_cast<uintptr_t>(ToulBar2::varOrder) >= ELIM_MAX)) {
+        vector<int> order;
+        if (isAlreadyTreeDec(ToulBar2::varOrder))
+            treeDecFile2Vector(ToulBar2::varOrder, order);
+        else
+            elimOrderFile2Vector(ToulBar2::varOrder, order);
+        setDACOrder(order);
+    }
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        vars[i]->sortConstraints();
+    }
+    AC.sort(false); // sort in decreasing order to get the smallest DAC index first when doing pop() on this queue
+    DAC.sort(true); // sort in increasing order to get the largest DAC index first when doing pop() on this queue
+    EAC1.sort(true); // sort in increasing order to get the smallest DAC index first when doing pop() on the EAC2 queue
+}
+
+void WCSP::updateCurrentVarsId()
+{
+    int pos = 0;
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (vars[i]->unassigned()) {
+            vars[i]->setCurrentVarId(pos);
+            pos++;
+        }
+    }
+}
+
+bool cmpTernaryConstraint(TernaryConstraint* c1, TernaryConstraint* c2)
+{
+    int v1 = c1->getVar(c1->getDACScopeIndex())->getDACOrder();
+    int v2 = c2->getVar(c2->getDACScopeIndex())->getDACOrder();
+    if (v1 < v2)
+        return true;
+    else if (v1 == v2) {
+        v1 = min(c1->getVar((c1->getDACScopeIndex() + 1) % 3)->getDACOrder(), c1->getVar((c1->getDACScopeIndex() + 2) % 3)->getDACOrder());
+        v2 = min(c2->getVar((c2->getDACScopeIndex() + 1) % 3)->getDACOrder(), c2->getVar((c2->getDACScopeIndex() + 2) % 3)->getDACOrder());
+        if (v1 < v2)
+            return true;
+        else if (v1 == v2) {
+            v1 = max(c1->getVar((c1->getDACScopeIndex() + 1) % 3)->getDACOrder(), c1->getVar((c1->getDACScopeIndex() + 2) % 3)->getDACOrder());
+            v2 = max(c2->getVar((c2->getDACScopeIndex() + 1) % 3)->getDACOrder(), c2->getVar((c2->getDACScopeIndex() + 2) % 3)->getDACOrder());
+            return (v1 < v2);
+        }
+    }
+    return false;
+}
+
+void WCSP::processTernary()
+{
+    // double maxtight = 0;
+    // Variable* var;
+    // TernaryConstraint *tctr1max = NULL, *tctr2max = NULL;
+
+    // if (ToulBar2::preprocessTernaryHeuristic) {
+
+    //     for (unsigned int i=0; i<vars.size(); i++) {
+    // 		TernaryConstraint *tctr1, *tctr2;
+    //         double tight = vars[i]->strongLinkedby(var,tctr1,tctr2);
+    //         if(tight > maxtight) { maxtight = tight; tctr1max = tctr1; tctr2max = tctr2; }
+    // 		if(tctr1 && tctr2 && (tctr1 != tctr2)) {
+    // 			tctr1->extendTernary();
+    // 			tctr2->extendTernary();
+    // 			BinaryConstraint* b = tctr1->commonBinary(tctr2);
+    // 			if(b->connected())
+    // 			{
+    //     			tctr1->projectTernaryBinary(b);
+    //     			tctr2->projectTernaryBinary(b);
+    //     			b->propagate();
+    // 			}
+    // 		}
+    //     }
+
+    //     if(ToulBar2::verbose > 0) {
+    //         cout << "Strongest part has mean cost: " << maxtight;
+    //         if(var) cout << "  Variable: " << var->wcspIndex;
+    //         if(tctr1max) cout << ", 1. ternary with tight: " << tctr1max->getTightness();
+    //         if(tctr2max) cout << ", 2. ternary with tight: " << tctr2max->getTightness();
+    //         cout << endl;
+    //     }
+    // }
+
+    vector<TernaryConstraint*> ternaries;
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected() && !constrs[i]->isSep() && constrs[i]->isTernary()) {
+            TernaryConstraint* t = (TernaryConstraint*)constrs[i];
+            ternaries.push_back(t);
+        }
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected()) {
+            TernaryConstraint* t = (TernaryConstraint*)elimTernConstrs[i];
+            ternaries.push_back(t);
+        }
+    sort(ternaries.begin(), ternaries.end(), cmpTernaryConstraint);
+    for (int i = ternaries.size() - 1; i >= 0; i--) {
+        TernaryConstraint* t = ternaries[i];
+        //		cout << "PROJECT&SUBTRACT tern(" << t->getVar(0)->getName() << "," << t->getVar(1)->getName() << "," << t->getVar(2)->getName() << ")" << endl;
+        t->extendTernary();
+        if (ToulBar2::costfuncSeparate)
+            t->decompose();
+        if (t->connected())
+            t->projectTernary();
+    }
+}
+
+/// \defgroup preprocessing Preprocessing techniques
+/// Depending on toulbar2 options, the sequence of preprocessing techniques applied before the search is:
+/// -# \e i-bounded variable elimination with user-defined \e i bound
+/// -# pairwise decomposition of cost functions (binary cost functions are implicitly decomposed by soft AC and empty cost function removals)
+/// -# MinSumDiffusion propagation (see VAC)
+/// -# projects\&substracts n-ary cost functions in extension on all the binary cost functions inside their scope (3 < n < max, see toulbar2 options)
+/// -# functional variable elimination (see \ref varelim)
+/// -# projects\&substracts ternary cost functions in extension on their three binary cost functions inside their scope (before that, extends the existing binary cost functions to the ternary cost function and applies pairwise decomposition)
+/// -# creates new ternary cost functions for all triangles (\e ie occurences of three binary cost functions \e xy, \e yz, \e zx)
+/// -# removes empty cost functions while repeating #1 and #2 until no new cost functions can be removed
+///
+/// \note the propagation loop is called after each preprocessing technique (see \ref WCSP::propagate)
+
+void WCSP::preprocessing()
+{
+    Cost previouslb = getLb();
+
+    Eliminate.clear();
+    if (ToulBar2::elimDegree_preprocessing <= -3) {
+        int deg = medianDegree();
+        Double domsize = medianDomainSize();
+        Double size = (Double)numberOfUnassignedVariables() * (sizeof(tValue) * deg + sizeof(Cost)) * Pow(domsize, deg + 1);
+        if (ToulBar2::debug >= 2)
+            cout << "MAX ESTIMATED ELIM SIZE: " << size << endl;
+        assert(ToulBar2::elimSpaceMaxMB > 0);
+        if (deg >= 3 && deg <= -ToulBar2::elimDegree_preprocessing && size < (Double)ToulBar2::elimSpaceMaxMB * 1024. * 1024.) {
+            ToulBar2::elimDegree_preprocessing = deg;
+            if (ToulBar2::verbose >= 0)
+                cout << "Generic variable elimination of degree " << deg << endl;
+        } else {
+            ToulBar2::elimDegree_preprocessing = -1;
+            if (ToulBar2::verbose >= 0)
+                cout << "Generic variable elimination disabled." << endl;
+        }
+    }
+    if (ToulBar2::elimDegree >= 0 || ToulBar2::elimDegree_preprocessing >= 0 || ToulBar2::preprocessFunctional > 0) {
+        initElimConstrs();
+        if (ToulBar2::elimDegree_preprocessing >= 0) {
+            if (ToulBar2::verbose >= 1)
+                cout << "Variable elimination in preprocessing of true degree <= "
+                     << ToulBar2::elimDegree_preprocessing << endl;
+            ToulBar2::elimDegree_preprocessing_ = ToulBar2::elimDegree_preprocessing;
+            maxDegree = -1;
+            propagate();
+            if (ToulBar2::verbose >= 0)
+                cout << "Maximum degree of generic variable elimination: " << maxDegree << endl;
+        } else if (ToulBar2::elimDegree >= 0) {
+            ToulBar2::elimDegree_ = ToulBar2::elimDegree;
+        }
+    }
+
+    int posConstrs = 0;
+    int posElimTernConstrs = 0;
+    if (ToulBar2::costfuncSeparate) {
+        double time = cpuTime();
+        for (unsigned int i = 0; i < constrs.size(); i++) {
+            if (constrs[i]->connected() && !constrs[i]->isSep()) {
+                constrs[i]->decompose();
+            }
+        }
+        for (int i = 0; i < elimTernOrder; i++) {
+            if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->isSep()) {
+                elimTernConstrs[i]->decompose();
+            }
+        }
+        posConstrs = constrs.size();
+        posElimTernConstrs = elimTernOrder;
+        if (ToulBar2::verbose >= 0)
+            cout << "Cost function decomposition time : " << cpuTime() - time << " seconds.\n";
+    }
+
+    propagate();
+
+    // recompute current DAC order and its reverse
+    if (ToulBar2::varOrder && numberOfVariables() >= LARGE_NB_VARS && numberOfUnassignedVariables() < LARGE_NB_VARS && reinterpret_cast<uintptr_t>(ToulBar2::varOrder) >= MIN_DEGREE && reinterpret_cast<uintptr_t>(ToulBar2::varOrder) <= APPROX_MIN_DEGREE) {
+        vector<int> order;
+        if (isAlreadyTreeDec(ToulBar2::varOrder))
+            treeDecFile2Vector(ToulBar2::varOrder, order);
+        else
+            elimOrderFile2Vector(ToulBar2::varOrder, order);
+        setDACOrder(order);
+    } else {
+#ifdef BOOST
+        if (ToulBar2::MSTDAC) {
+            vector<int> order;
+            spanningTreeOrderingBGL(order);
+            setDACOrder(order);
+        }
+#endif
+    }
+    vector<int> elimorder(numberOfVariables(), -1);
+    vector<int> revelimorder(numberOfVariables(), -1);
+    for (unsigned int i = 0; i < numberOfVariables(); i++) {
+        revelimorder[getVar(i)->getDACOrder()] = i;
+        elimorder[numberOfVariables() - getVar(i)->getDACOrder() - 1] = i;
+    }
+    //	cout << "DAC:";
+    //	for (int i = 0; i < numberOfVariables(); i++) {
+    //		cout << " " << revelimorder[i];
+    //	}
+    //	cout << endl;
+    //	cout << "REVDAC:";
+    //	for (int i = 0; i < numberOfVariables(); i++) {
+    //		cout << " " << elimorder[i];
+    //	}
+    //	cout << endl;
+    do {
+        previouslb = getLb();
+        setDACOrder(revelimorder);
+        setDACOrder(elimorder);
+        if (ToulBar2::verbose >= 0 && getLb() > previouslb) {
+            if (ToulBar2::uai)
+                cout << "Reverse DAC dual bound: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << getDDualBound() << std::setprecision(DECIMAL_POINT) << " energy: " << -(Cost2LogProb(getLb()) + ToulBar2::markov_log) << " (+" << 100. * (getLb() - previouslb) / getLb() << "%)" << endl;
+            else
+                cout << "Reverse DAC dual bound: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << getDDualBound() << std::setprecision(DECIMAL_POINT) << " (+" << 100. * (getLb() - previouslb) / getLb() << "%)" << endl;
+        }
+    } while (getLb() > previouslb && 100. * (getLb() - previouslb) / getLb() > 0.5);
+
+    if (ToulBar2::trwsAccuracy >= 0)
+        propagateTRWS();
+
+    if (ToulBar2::preprocessNary > 0) {
+        for (unsigned int i = 0; i < constrs.size(); i++) {
+            if (constrs[i]->connected() && !constrs[i]->isSep() && constrs[i]->isNary() && constrs[i]->arity() >= 3 && constrs[i]->arity() <= ToulBar2::preprocessNary) {
+                NaryConstraint* nary = (NaryConstraint*)constrs[i];
+                Long nbtuples = nary->getDomainSizeProduct();
+                if ((nbtuples < MAX_NB_TUPLES || nary->size() >= nbtuples) && (nary->size() >= 2 || nary->getDefCost() > MIN_COST)) {
+                    nary->keepAllowedTuples(getUb()); // can be very slow!
+                    nary->preprojectall2();
+                    //			if (nary->connected() && nary->size() >= 4) nary->preproject3();
+                }
+            }
+        }
+        //		processTernary();
+        propagate();
+    }
+
+    // Merge functional (binary bijection only) variables in decision variables
+    bool merged = (ToulBar2::preprocessFunctional > 0);
+    while (merged) {
+        merged = false;
+        for (unsigned int i = 0; i < constrs.size(); i++)
+            if (constrs[i]->connected() && !constrs[i]->isSep() && constrs[i]->isBinary()
+                && (ToulBar2::preprocessFunctional == 1 || constrs[i]->getVar(0)->getDomainSize() == constrs[i]->getVar(1)->getDomainSize())) {
+                BinaryConstraint* xy = (BinaryConstraint*)constrs[i];
+                EnumeratedVariable* x = (EnumeratedVariable*)xy->getVar(0);
+                EnumeratedVariable* y = (EnumeratedVariable*)xy->getVar(1);
+                map<Value, Value> functional;
+                if (xy->isFunctional(x, y, functional) && y->canbeMerged(x)) {
+                    y->mergeTo(xy, functional);
+                    merged = true;
+                    propagate();
+                } else if (xy->isFunctional(y, x, functional) && x->canbeMerged(y)) {
+                    x->mergeTo(xy, functional);
+                    merged = true;
+                    propagate();
+                }
+            }
+        for (int i = 0; i < elimBinOrder; i++)
+            if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->isSep()
+                && elimBinConstrs[i]->getVar(0)->getDomainSize() == elimBinConstrs[i]->getVar(1)->getDomainSize()) {
+                assert(elimBinConstrs[i]->isBinary());
+                BinaryConstraint* xy = (BinaryConstraint*)elimBinConstrs[i];
+                EnumeratedVariable* x = (EnumeratedVariable*)xy->getVar(0);
+                EnumeratedVariable* y = (EnumeratedVariable*)xy->getVar(1);
+                map<Value, Value> functional;
+                if (xy->isFunctional(x, y, functional) && y->canbeMerged(x)) {
+                    y->mergeTo(xy, functional);
+                    merged = true;
+                    propagate();
+                } else if (xy->isFunctional(y, x, functional) && x->canbeMerged(y)) {
+                    x->mergeTo(xy, functional);
+                    merged = true;
+                    propagate();
+                }
+            }
+    }
+
+    if (ToulBar2::preprocessTernaryRPC) {
+        do {
+            previouslb = getLb();
+            ternaryCompletion();
+            setDACOrder(revelimorder);
+            processTernary();
+            propagate();
+            setDACOrder(elimorder);
+            processTernary();
+            propagate();
+            if (ToulBar2::verbose >= 0 && getLb() > previouslb) {
+                if (ToulBar2::uai)
+                    cout << "PIC dual bound: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << getDDualBound() << std::setprecision(DECIMAL_POINT) << " energy: " << -(Cost2LogProb(getLb()) + ToulBar2::markov_log) << " (+" << 100. * (getLb() - previouslb) / getLb() << "%, " << numberOfConstraints() << " cost functions)" << endl;
+                else
+                    cout << "PIC dual bound: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << getDDualBound() << std::setprecision(DECIMAL_POINT) << " (+" << 100. * (getLb() - previouslb) / getLb() << "%, " << numberOfConstraints() << " cost functions)" << endl;
+            }
+        } while (getLb() > previouslb && 100. * (getLb() - previouslb) / getLb() > 0.5);
+    } else if (ToulBar2::preprocessNary > 0) {
+        processTernary();
+        propagate();
+    }
+
+    if (ToulBar2::minsumDiffusion && ToulBar2::vac)
+        vac->minsumDiffusion();
+    if (ToulBar2::vac) {
+        if (ToulBar2::verbose >= 1)
+            cout << "Preprocessing ";
+        vac->printStat(true);
+        for (unsigned int i = 0; i < vars.size(); i++)
+            vars[i]->queueEliminate();
+        propagate();
+    }
+
+    // Deconnect empty cost functions
+    unsigned int nbunvar;
+    do {
+        nbunvar = numberOfUnassignedVariables();
+        for (unsigned int i = 0; i < constrs.size(); i++)
+            if (constrs[i]->connected() && !constrs[i]->isSep() && constrs[i]->universal()) {
+                if (ToulBar2::verbose >= 3)
+                    cout << "deconnect empty cost function: " << *constrs[i];
+                constrs[i]->deconnect(true);
+            }
+        for (int i = 0; i < elimBinOrder; i++)
+            if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->isSep() && elimBinConstrs[i]->universal()) {
+                if (ToulBar2::verbose >= 3)
+                    cout << "deconnect empty cost function: " << *elimBinConstrs[i];
+                elimBinConstrs[i]->deconnect(true);
+            }
+        for (int i = 0; i < elimTernOrder; i++)
+            if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->isSep() && elimTernConstrs[i]->universal()) {
+                if (ToulBar2::verbose >= 3)
+                    cout << "deconnect empty cost function: " << *elimTernConstrs[i];
+                elimTernConstrs[i]->deconnect(true);
+            }
+        if (ToulBar2::costfuncSeparate) {
+            for (unsigned int i = posConstrs; i < constrs.size(); i++) {
+                if (constrs[i]->connected() && !constrs[i]->isSep()) {
+                    constrs[i]->decompose();
+                }
+            }
+            for (int i = posElimTernConstrs; i < elimTernOrder; i++) {
+                if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->isSep()) {
+                    elimTernConstrs[i]->decompose();
+                }
+            }
+            posConstrs = constrs.size();
+            posElimTernConstrs = elimTernOrder;
+        }
+        propagate();
+    } while (numberOfUnassignedVariables() < nbunvar);
+
+    if (ToulBar2::elimDegree >= 0 || ToulBar2::elimDegree_preprocessing >= 0 || ToulBar2::preprocessFunctional > 0) {
+        ToulBar2::elimDegree_preprocessing_ = -1;
+        if (ToulBar2::elimDegree >= 0) {
+            ToulBar2::elimDegree_ = ToulBar2::elimDegree;
+            if (ToulBar2::elimDegree_preprocessing < min(2, ToulBar2::elimDegree)) {
+                for (int i = numberOfVariables() - 1; i >= 0; i--)
+                    vars[i]->queueEliminate();
+                propagate();
+            }
+            if (ToulBar2::verbose >= 1)
+                cout << "Variable elimination during search of degree <= "
+                     << ToulBar2::elimDegree << endl;
+        }
+    }
+
+#ifdef BOOST
+    if (ToulBar2::MSTDAC) {
+        vector<int> order;
+        spanningTreeOrderingBGL(order);
+        setDACOrder(order);
+    }
+#endif
+    if ((ToulBar2::vac && ToulBar2::useRASPS) || (ToulBar2::vac && ToulBar2::VACthreshold)) {
+        ToulBar2::RASPSsaveitThresholds = true;
+        ToulBar2::RASPSitThresholds.clear();
+        propagate();
+        ToulBar2::RASPSsaveitThresholds = false;
+        ToulBar2::RASPSlastitThreshold = vac->RASPSFindItThreshold();
+        if (ToulBar2::VACthreshold || ToulBar2::RASPSangle < 0) {
+            if (ToulBar2::verbose >= 0)
+                cout << "RASPS/VAC threshold: " << ToulBar2::RASPSlastitThreshold << endl;
+            ToulBar2::costThreshold = ToulBar2::RASPSlastitThreshold;
+        } else {
+            if (ToulBar2::verbose >= 0)
+                cout << "RASPS threshold: " << ToulBar2::RASPSlastitThreshold << endl;
+        }
+    }
+    if (ToulBar2::FullEAC) {
+        for (unsigned int i = 0; i < vars.size(); i++) {
+            if (vars[i]->unassigned())
+                vars[i]->isEAC(); // update EAC supports using values from best known solution if provided
+        }
+        for (unsigned int i = 0; i < vars.size(); i++) {
+            if (vars[i]->unassigned())
+                vars[i]->isEAC(); // update Full EAC status using previously updated EAC supports (also used to check all constraints without queueing in FEAC queue)
+        }
+    }
+}
+
+Cost WCSP::finiteUb() const
+{
+    Cost summaxcost = getLb() + UNIT_COST;
+    for (unsigned int i = 0; i < constrs.size(); i++) {
+        if (constrs[i]->connected() && !constrs[i]->isSep()) {
+            summaxcost += constrs[i]->getMaxFiniteCost();
+            if (summaxcost >= MAX_COST)
+                return MAX_COST;
+        }
+    }
+    for (int i = 0; i < elimBinOrder; i++) {
+        if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->isSep()) {
+            summaxcost += elimBinConstrs[i]->getMaxFiniteCost();
+            if (summaxcost >= MAX_COST)
+                return MAX_COST;
+        }
+    }
+    for (int i = 0; i < elimTernOrder; i++) {
+        if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->isSep()) {
+            summaxcost += elimTernConstrs[i]->getMaxFiniteCost();
+            if (summaxcost >= MAX_COST)
+                return MAX_COST;
+        }
+    }
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (NC.empty()) {
+            summaxcost += vars[i]->getMaxCost();
+        } else {
+            if (vars[i]->enumerated()) {
+                Cost maxcost = MIN_COST;
+                EnumeratedVariable* var = (EnumeratedVariable*)vars[i];
+                for (EnumeratedVariable::iterator iter = var->begin(); iter != var->end(); ++iter) {
+                    if (var->getCost(*iter) > maxcost)
+                        maxcost = var->getCost(*iter);
+                }
+                summaxcost += maxcost;
+            } else {
+                summaxcost += max(vars[i]->getInfCost(), vars[i]->getSupCost());
+            }
+        }
+        if (summaxcost >= MAX_COST)
+            return MAX_COST;
+    }
+    return summaxcost;
+}
+
+void WCSP::setInfiniteCost()
+{
+    assert(Store::getDepth() == 0);
+    Cost ub = getUb() - getLb();
+    assert(ub > 0);
+    if (ToulBar2::verbose >= 1)
+        cout << "Set infinite cost to " << ub << endl;
+    for (unsigned int i = 0; i < constrs.size(); i++) {
+        if (constrs[i]->connected() && !constrs[i]->isSep()) {
+            constrs[i]->setInfiniteCost(ub);
+        }
+    }
+    for (int i = 0; i < elimBinOrder; i++) {
+        if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->isSep()) {
+            elimBinConstrs[i]->setInfiniteCost(ub);
+        }
+    }
+    for (int i = 0; i < elimTernOrder; i++) {
+        if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->isSep()) {
+            elimTernConstrs[i]->setInfiniteCost(ub);
+        }
+    }
+}
+
+int WCSP::getMaxCurrentDomainSize() const
+{
+    int max = (vars.size() > 0) ? 1 : 0;
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (vars[i]->unassigned()) {
+            int sz = vars[i]->getDomainSize();
+            if (sz > max)
+                max = sz;
+        }
+    }
+    return max;
+}
+
+unsigned int WCSP::getDomainSizeSum() const
+{
+    unsigned int sum = 0;
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (vars[i]->unassigned())
+            sum += vars[i]->getDomainSize();
+    }
+    return sum;
+}
+
+bool WCSP::getEnumDomain(int varIndex, Value* array)
+{
+    if (EnumeratedVariable* var = dynamic_cast<EnumeratedVariable*>(vars[varIndex])) {
+        var->getDomain(array);
+        return true;
+    } else
+        return false;
+}
+
+bool WCSP::getEnumDomainAndCost(int varIndex, ValueCost* array)
+{
+    if (EnumeratedVariable* var = dynamic_cast<EnumeratedVariable*>(vars[varIndex])) {
+        var->getDomainAndCost(array);
+        return true;
+    } else
+        return false;
+}
+
+unsigned int WCSP::numberOfConnectedConstraints() const
+{
+    int res = 0;
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected() && !constrs[i]->isSep())
+            res++;
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->isSep())
+            res++;
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->isSep())
+            res++;
+    return res;
+}
+
+unsigned int WCSP::medianArity() const
+{
+    unsigned int nb = numberOfConnectedConstraints();
+    if (nb == 0)
+        return 0;
+    int arity[nb];
+    unsigned int pos = 0;
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected() && !constrs[i]->isSep()) {
+            arity[pos] = constrs[i]->arity();
+            pos++;
+        }
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->isSep()) {
+            arity[pos] = 2;
+            pos++;
+        }
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->isSep()) {
+            arity[pos] = 3;
+            pos++;
+        }
+    assert(pos == numberOfConnectedConstraints() && pos == nb);
+    return stochastic_selection<int>(arity, 0, nb - 1, nb / 2);
+}
+
+unsigned int WCSP::numberOfConnectedBinaryConstraints() const
+{
+    unsigned int res = 0;
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected() && constrs[i]->arity() == 2 && !constrs[i]->isSep())
+            res++;
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->isSep())
+            res++;
+    return res;
+}
+
+unsigned int WCSP::medianDomainSize() const
+{
+    unsigned int nbunvars = numberOfUnassignedVariables();
+    if (nbunvars == 0)
+        return 0;
+    unsigned int domain[nbunvars];
+    unsigned int pos = 0;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        if (unassigned(i)) {
+            domain[pos] = getDomainSize(i);
+            pos++;
+        }
+    assert(pos == numberOfUnassignedVariables() && pos == nbunvars);
+    return stochastic_selection<unsigned int>(domain, 0, nbunvars - 1, nbunvars / 2);
+}
+
+unsigned int WCSP::medianDegree() const
+{
+    unsigned int nbunvars = numberOfUnassignedVariables();
+    if (nbunvars == 0)
+        return 0;
+    int degree[nbunvars];
+    unsigned int pos = 0;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        if (unassigned(i)) {
+            degree[pos] = getTrueDegree(i);
+            pos++;
+        }
+    assert(pos == numberOfUnassignedVariables() && pos == nbunvars);
+    return stochastic_selection<int>(degree, 0, nbunvars - 1, nbunvars / 2);
+}
+
+void WCSP::printNCBuckets()
+{
+    int lastbucket = -1;
+    for (int bucket = 0; bucket < NCBucketSize; bucket++) {
+        if (NCBuckets[bucket].begin() != NCBuckets[bucket].end())
+            lastbucket = bucket;
+    }
+
+    for (int bucket = 0; bucket <= lastbucket; bucket++) {
+        cout << "NC " << bucket << ":";
+        for (VariableList::iterator iter = NCBuckets[bucket].begin(); iter != NCBuckets[bucket].end(); ++iter) {
+            cout << " " << (*iter)->getName() << "," << (*iter)->getMaxCostValue() << "," << (*iter)->getMaxCost();
+
+            assert((*iter)->canbe((*iter)->getMaxCostValue()));
+            assert((*iter)->getCost((*iter)->getMaxCostValue()) == (*iter)->getMaxCost() || !LUBTEST((*iter)->getMaxCost(), (*iter)->getCost((*iter)->getMaxCostValue())));
+            assert((bucket && !PARTIALORDER) ? (to_double((*iter)->getMaxCost()) >= (Long)powl(2., bucket)) : ((*iter)->getMaxCost() > MIN_COST));
+            assert(PARTIALORDER || to_double((*iter)->getMaxCost()) < (Long)powl(2., bucket + 1));
+        }
+        cout << endl;
+    }
+}
+
+/** \defgroup verbosity Output messages, verbosity options and debugging
+ *
+ * Depending on verbosity level given as option "-v=level", \p toulbar2 will output:
+ * - (level=0, no verbosity) default output mode: shows version number, number of variables and cost functions read in the problem file,
+ *  number of unassigned variables and cost functions after preprocessing,
+ *  problem upper and lower bounds after preprocessing.
+ *  Outputs current best solution cost found,
+ *  ends by giving the optimum or "No solution".
+ *  Last output line should always be: "end."
+ * - (level=-1, no verbosity) restricted output mode: do not print current best solution cost found
+ * -# (level=1) shows also search choices ("["\e search_depth \e problem_lower_bound \e problem_upper_bound \e sum_of_current_domain_sizes"] Try" \e variable_index \e operator \e value)
+ *  with \e operator being assignment ("=="), value removal ("!="), domain splitting ("<=" or ">=", also showing EAC value in parenthesis)
+ * -# (level=2) shows also current domains (\e variable_index \e list_of_current_domain_values "/" \e number_of_cost_functions (see approximate degree in \ref varelim) "/" \e weighted_degree \e list_of_unary_costs "s:" \e support_value) before each search choice
+ *  and reports problem lower bound increases, NC bucket sort data (see \ref ncbucket), and basic operations on domains of variables
+ * -# (level=3) reports also basic arc EPT operations on cost functions (see \ref softac)
+ * -# (level=4) shows also current list of cost functions for each variable and reports more details on arc EPT operations (showing all changes in cost functions)
+ * -# (level=5) reports more details on cost functions defined in extension giving their content (cost table by first increasing values in the current domain of the last variable in the scope)
+ *
+ * For debugging purposes, another option "-Z=level" allows one to monitor the search:
+ * -# (level 1) shows current search depth (number of search choices from the root of the search tree) and reports statistics on nogoods for BTD-like methods
+ * -# (level 2) idem
+ * -# (level 3) also saves current problem into a file before each search choice
+ *
+ * \note \p toulbar2, compiled in debug mode, can be more verbose and it checks a lot of assertions (pre/post conditions in the code)
+ *
+ * \note \p toulbar2 will output an help message giving available options if run without any parameters
+ *
+ */
+
+void WCSP::print(ostream& os)
+{
+    //    os << "Objective: [" << std::fixed << std::setprecision(ToulBar2::decimalPoint) << getDLb() << "," << getDUb() << "]" << std::setprecision(DECIMAL_POINT) << endl;
+    os << "Objective: [" << getLb() << "," << getUb() << "]" << endl;
+    os << "Variables:" << endl;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        os << *vars[i] << endl;
+    if (ToulBar2::verbose >= 4) {
+        os << "Constraints:" << endl;
+        for (unsigned int i = 0; i < constrs.size(); i++)
+            if (constrs[i]->connected())
+                os << *constrs[i];
+        for (int i = 0; i < elimBinOrder; i++)
+            if (elimBinConstrs[i]->connected())
+                os << *elimBinConstrs[i];
+        for (int i = 0; i < elimTernOrder; i++)
+            if (elimTernConstrs[i]->connected())
+                os << *elimTernConstrs[i];
+    }
+}
+
+void printClique(ostream& os, int arity, Constraint* ctr)
+{
+    assert(arity >= 2);
+    if (arity > MAX_ARITY / 10) {
+        cerr << "warning! cost function arity is too large for primal graph representation." << endl;
+        return;
+    }
+    for (int i = 0; i < arity - 1; i++) {
+        for (int j = i + 1; j < arity; j++) {
+//            os << "v" << ctr->getVar(i)->wcspIndex + 1 << " -- v" << ctr->getVar(j)->wcspIndex + 1 << " [len= " << ctr->getTightness() << "];" << endl;
+            if (ctr->getVar(i)->wcspIndex < ctr->getVar(j)->wcspIndex) {
+                os << ctr->getVar(i)->getName() << " -- " << ctr->getVar(j)->getName() << " [len= " << ctr->getTightness() << "];" << endl;
+            } else {
+                os << ctr->getVar(j)->getName() << " -- " << ctr->getVar(i)->getName() << " [len= " << ctr->getTightness() << "];" << endl;
+            }
+        }
+    }
+}
+
+// Warning! make the assumption that all initial domains start at zero!!!
+void WCSP::dump(ostream& os, bool original)
+{
+    Value maxdomsize = 0;
+    unsigned int maxdomsizeUI = 0;
+    Value xcosts = 0;
+    // dump filename
+    char Pb_basename[512];
+    char Pb_graph[512];
+    char Pb_degree[512];
+
+    strcpy(Pb_basename, ToulBar2::problemsaved_filename.c_str());
+    strcpy(Pb_graph, Pb_basename);
+    strcpy(Pb_degree, Pb_basename);
+
+    if (getLb() > MIN_COST)
+        xcosts++;
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (original && vars[i]->getInf() < 0) {
+            cerr << "Cannot save domain of variable " << vars[i]->getName() << " with negative values!!!" << endl;
+            exit(EXIT_FAILURE);
+        }
+        if (original) {
+            int domsize = (vars[i]->enumerated() ? ((EnumeratedVariable*)vars[i])->getDomainInitSize() : (vars[i]->getSup() + 1));
+            if (domsize > maxdomsize)
+                maxdomsize = domsize;
+        } else {
+            if (vars[i]->unassigned() && vars[i]->getDomainSize() > maxdomsizeUI)
+                maxdomsizeUI
+                    = vars[i]->getDomainSize();
+        }
+        if (vars[i]->enumerated() && (original || vars[i]->unassigned()))
+            xcosts++;
+        //          else if (vars[i]->getInfCost() > MIN_COST || vars[i]->getSupCost() > MIN_COST) {
+        //              cerr << "Cannot save interval variable " << vars[i]->getName() << " with bound unary costs!!!" << endl;
+        //              exit(EXIT_FAILURE);
+        //          }
+    }
+    os << "wcsp " << ((original) ? numberOfVariables() : numberOfUnassignedVariables()) << " "
+       << ((original) ? maxdomsize : maxdomsizeUI) << " " << numberOfConnectedConstraints() + xcosts << " "
+       << getUb() << endl;
+    unsigned int nbvar = 0;
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (original) {
+            if (!vars[i]->enumerated())
+                os << "-";
+            int domsize = (vars[i]->enumerated() ? ((EnumeratedVariable*)vars[i])->getDomainInitSize() : (vars[i]->getSup() + 1));
+            os << domsize;
+            if (i < vars.size() - 1)
+                os << " ";
+        } else if (vars[i]->unassigned()) {
+            nbvar++;
+            if (!vars[i]->enumerated())
+                os << "-";
+            os << vars[i]->getDomainSize();
+            if (nbvar < numberOfUnassignedVariables())
+                os << " ";
+        }
+    }
+    if (((original) ? numberOfVariables() : numberOfUnassignedVariables()) > 0)
+        os << endl;
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected() && !constrs[i]->isSep())
+            constrs[i]->dump(os, original);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->isSep())
+            elimBinConstrs[i]->dump(os, original);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->isSep())
+            elimTernConstrs[i]->dump(os, original);
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (vars[i]->enumerated() && (original || vars[i]->unassigned())) {
+            int size = vars[i]->getDomainSize();
+            ValueCost domcost[size]; // replace size by MAX_DOMAIN_SIZE in case of compilation problem
+            getEnumDomainAndCost(i, domcost);
+            os << "1 " << ((original) ? i : vars[i]->getCurrentVarId()) << " " << getUb() << " " << size << endl;
+            for (int v = 0; v < size; v++) {
+                os << ((original) ? (domcost[v].value) : v) << " "
+                   << ((original) ? domcost[v].cost : min(getUb(), domcost[v].cost)) << endl;
+            }
+        }
+    }
+    if (getLb() > MIN_COST)
+        os << "0 " << getLb() << " 0" << endl;
+
+    if (!ToulBar2::uaieval && ToulBar2::verbose >= 0) {
+        //####################" dump dot file ###############################""
+        strcat(Pb_graph, ".dot");
+        cout << " Graph structure saved in problem.dot " << endl;
+        ofstream pb(Pb_graph);
+        pb << " graph graphname {\n " << endl;
+        int res = 0;
+        for (unsigned int i = 0; i < constrs.size(); i++)
+            if (constrs[i]->connected())
+                res += (constrs[i]->arity() * (constrs[i]->arity() - 1) / 2);
+        for (int i = 0; i < elimBinOrder; i++)
+            if (elimBinConstrs[i]->connected())
+                res += (elimBinConstrs[i]->arity() * (elimBinConstrs[i]->arity() - 1) / 2);
+        for (int i = 0; i < elimTernOrder; i++)
+            if (elimTernConstrs[i]->connected())
+                res += (elimTernConstrs[i]->arity() * (elimTernConstrs[i]->arity() - 1)
+                    / 2);
+        pb << "// number of constraint = " << res << " number of variable=  " << numberOfVariables() << endl;
+        for (unsigned int i = 0; i < constrs.size(); i++)
+            if (!constrs[i]->isSep() && constrs[i]->connected()) {
+                //            pb << constrs[i]->getVar(0)->wcspIndex + 1;
+                //            for (int j=1; j<constrs[i]->arity(); j++) {
+                //                pb << " " << constrs[i]->getVar(j)->wcspIndex + 1;
+                //            }
+                //            pb << endl;
+                printClique(pb, constrs[i]->arity(), constrs[i]);
+            }
+        for (int i = 0; i < elimBinOrder; i++)
+            if (elimBinConstrs[i]->connected()) {
+                //            pb << elimBinConstrs[i]->getVar(0)->wcspIndex + 1;
+                //            for (int j=1; j<elimBinConstrs[i]->arity(); j++) {
+                //                pb << " " << elimBinConstrs[i]->getVar(j)->wcspIndex + 1;
+                //            }
+                //            pb << endl;
+                printClique(pb, elimBinConstrs[i]->arity(), elimBinConstrs[i]);
+            }
+        for (int i = 0; i < elimTernOrder; i++)
+            if (elimTernConstrs[i]->connected()) {
+                //            pb << elimTernConstrs[i]->getVar(0)->wcspIndex + 1;
+                //            for (int j=1; j<elimTernConstrs[i]->arity(); j++) {
+                //                pb << " " << elimTernConstrs[i]->getVar(j)->wcspIndex + 1;
+                //            }
+                //            pb << endl;
+                printClique(pb, elimTernConstrs[i]->arity(), elimTernConstrs[i]);
+            }
+        pb << "}" << endl;
+
+//####################" end dump dot file ###############################""
+//#######################dump degree distribution ###################
+#ifdef BOOST
+        cout << "Connected components: " << connectedComponents() << endl;
+        cout << "Biconnected components: " << biConnectedComponents() << endl;
+        cout << "Diameter : " << diameter() << endl;
+#endif
+
+        int* degDistrib = new int[vars.size()];
+
+        for (unsigned int i = 0; i < vars.size(); i++)
+            degDistrib[i] = 0;
+        for (unsigned int i = 0; i < vars.size(); i++)
+            if (unassigned(i))
+                degDistrib[getTrueDegree(i)]++;
+
+        unsigned int lastnonzero = 0;
+        for (unsigned int i = 0; i < vars.size(); i++)
+            if (degDistrib[i])
+                lastnonzero = i;
+
+        strcat(Pb_degree, ".degree"); // after preprocessing
+        ofstream file(Pb_degree);
+        for (unsigned int i = 0; i <= lastnonzero; i++)
+            if (degDistrib[i])
+                file << i << " " << degDistrib[i] << endl;
+        delete[] degDistrib;
+
+        //#######################dump degree distribution ###################
+    }
+
+    if (ToulBar2::pedigree) {
+        string problemname = ToulBar2::problemsaved_filename;
+        if (problemname.rfind(".wcsp") != string::npos)
+            problemname.replace(problemname.rfind(".wcsp"), 5, ".pre");
+        ToulBar2::pedigree->save((problemname.rfind("problem.pre") == string::npos) ? problemname.c_str() : "problem_corrected.pre", this, false, true);
+    }
+}
+
+void WCSP::dump_CFN(ostream& os, bool original)
+{
+    bool printed = false;
+    std::ios_base::fmtflags f(os.flags());
+    // dump filename in ToulBar2::problemsaved_filename
+
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (vars[i]->getInf() < 0 || !vars[i]->enumerated()) {
+            cerr << "Cannot save domain of variable " << vars[i]->getName() << " (negative values or not enumerated)" << endl;
+            exit(EXIT_FAILURE);
+        }
+    }
+    // Header
+    os << "{\"problem\":{\"name\":\"" << getName() << "\",\"mustbe\":\"" << ((ToulBar2::costMultiplier < 0) ? ">" : "<");
+    os << fixed << setprecision(ToulBar2::decimalPoint);
+    os << getDPrimalBound() << "\"},\n";
+
+    // Domain variables
+    os << "\"variables\":{\n";
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        assert(enumerated(i));
+        EnumeratedVariable* s = static_cast<EnumeratedVariable*>(vars[i]);
+        if (original) {
+            os << "\"" << s->getName() << "\":";
+            os << "[";
+            printed = false;
+            for (size_t p = 0; p < s->getDomainInitSize(); p++) {
+                if (printed)
+                    os << ",";
+                os << "\"" << ((s->isValueNames()) ? s->getValueName(p) : ("v" + std::to_string(s->toValue(p)))) << "\"";
+                printed = true;
+            }
+        } else if (s->unassigned()) {
+            os << "\"" << s->getName() << "\":";
+            int domsize = s->getDomainSize();
+            Value* values = new Value[domsize];
+            s->getDomain(values);
+            os << "[";
+            printed = false;
+            for (int p = 0; p < domsize; p++) {
+                if (printed)
+                    os << ",";
+                os << "\"" << ((s->isValueNames()) ? s->getValueName(s->toIndex(values[p])) : ("v" + std::to_string(values[p]))) << "\"";
+                printed = true;
+            }
+        }
+        os << "]";
+        if (i < vars.size() - 1)
+            os << ",";
+        os << "\n";
+    }
+
+    os << "},\n\"functions\": {\n";
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected() && !constrs[i]->isSep())
+            constrs[i]->dump_CFN(os, original);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->isSep())
+            elimBinConstrs[i]->dump_CFN(os, original);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->isSep())
+            elimTernConstrs[i]->dump_CFN(os, original);
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (vars[i]->enumerated() && (original || vars[i]->unassigned())) {
+            int size = vars[i]->getDomainSize();
+            ValueCost domcost[size]; // replace size by MAX_DOMAIN_SIZE in case of compilation problem
+            getEnumDomainAndCost(i, domcost);
+            os << "\"F_" << ((original) ? i : vars[i]->getCurrentVarId()) << "\":{\"scope\":[";
+            os << vars[i]->getName() << "],\"defaultcost\":" << getDPrimalBound()-negCost << ",\n";
+            os << "\"costs\":[";
+            for (int v = 0; v < size; v++) {
+                os << ((original) ? (((EnumeratedVariable *) vars[i])->toIndex(domcost[v].value)) : v) << ","
+                   << ((original) ? Cost2RDCost(domcost[v].cost) : min(getDPrimalBound()-negCost, Cost2RDCost(domcost[v].cost)));
+                if (v != (size - 1)) {
+                    os << ",";
+                }
+            }
+            os << "]},\n";
+        }
+    }
+    os << "\"F\":{\"scope\":[],\"costs\":[" << getDDualBound() << "]}\n}\n}" << endl;
+    os.flags(f);
+}
+ostream& operator<<(ostream& os, WCSP& wcsp)
+{
+    wcsp.print(os);
+    return os;
+}
+
+ostream& operator<<(ostream& os, WeightedCSP& wcsp)
+{
+    wcsp.print(os);
+    return os;
+}
+
+/*
+ * WCSP propagation methods
+ *
+ */
+
+bool WCSP::verify()
+{
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        if (vars[i]->unassigned()) {
+            if (td) {
+                if (td->isActiveAndInCurrentClusterSubTree(vars[i]->getCluster())) {
+                    if (!vars[i]->verifyNC())
+                        return false;
+#ifdef DEECOMPLETE
+                    if (ToulBar2::DEE_ && !vars[i]->verifyDEE())
+                        return false;
+#endif
+                }
+            } else {
+                if (!vars[i]->verifyNC())
+                    return false;
+#ifdef DEECOMPLETE
+                if (ToulBar2::DEE_ && !vars[i]->verifyDEE())
+                    return false;
+#endif
+            }
+        }
+        // Warning! in the CSP case, EDAC is no equivalent to GAC on ternary constraints due to the combination with binary constraints
+        // Warning bis! isEAC() may change the current support for variables and constraints during verify (when supports are not valid due to VAC epsilon heuristic for instance)
+        bool old_fulleac = false;
+        if (vars[i]->enumerated())
+            old_fulleac = vars[i]->isFullEAC();
+        if (ToulBar2::LcLevel == LC_EDAC && vars[i]->enumerated() && vars[i]->unassigned() && !CSP(getLb(), getUb()) && !((EnumeratedVariable*)vars[i])->isEAC(vars[i]->getSupport())) {
+            if (ToulBar2::verbose >= 4)
+                cout << endl
+                     << *this;
+            cout << "warning! support of variable " << vars[i]->getName() << " not EAC!" << endl;
+            if (!ToulBar2::vacValueHeuristic)
+                return false;
+        }
+        if (ToulBar2::FullEAC && vars[i]->unassigned() && old_fulleac && old_fulleac != vars[i]->isFullEAC()) {
+            if (ToulBar2::verbose >= 4)
+                cout << endl
+                     << *this;
+            if (Store::getDepth() >= 1 || ToulBar2::setvalue != NULL) { // do not report error before preprocessing is done
+                cout << endl
+                     << "check:" << ((EnumeratedVariable*)vars[i])->checkEACGreedySolution() << endl;
+                cout << "warning! support " << vars[i]->getSupport() << " of variable " << vars[i]->getName() << " has wrong FullEAC status!" << endl;
+            }
+            if (Store::getDepth() >= max(1, abs(ToulBar2::vac)))
+                return false;
+        }
+    }
+    if (ToulBar2::LcLevel >= LC_AC) {
+        for (unsigned int i = 0; i < constrs.size(); i++) {
+            if (constrs[i]->connected() && !constrs[i]->verify())
+                return false;
+        }
+        for (int i = 0; i < elimBinOrder; i++) {
+            if (elimBinConstrs[i]->connected() && !elimBinConstrs[i]->verify())
+                return false;
+        }
+        for (int i = 0; i < elimTernOrder; i++) {
+            if (elimTernConstrs[i]->connected() && !elimTernConstrs[i]->verify())
+                return false;
+        }
+    }
+    return true;
+}
+
+void WCSP::whenContradiction()
+{
+    NC.clear();
+    IncDec.clear();
+    AC.clear();
+    DAC.clear();
+    EAC1.clear();
+    EAC2.clear();
+    Eliminate.clear();
+    DEE.clear();
+    FEAC.clear();
+    objectiveChanged = false;
+    nbNodes++;
+}
+
+///\defgroup ncbucket NC bucket sort
+/// maintains a sorted list of variables having non-zero unary costs in order to make NC propagation incremental.\n
+/// - variables are sorted into buckets
+/// - each bucket is associated to a single interval of non-zero costs (using a power-of-two scaling, first bucket interval is [1,2[, second interval is [2,4[, etc.)
+/// - each variable is inserted into the bucket corresponding to its largest unary cost in its domain
+/// - variables having all unary costs equal to zero do not belong to any bucket
+///
+/// NC propagation will revise only variables in the buckets associated to costs sufficiently large wrt current objective bounds.
+
+void WCSP::propagateNC()
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "NCQueue size: " << NC.getSize() << " (" << NCBucketSize << " buckets maxi)" << endl;
+    while (!NC.empty()) {
+        Variable* x = NC.pop();
+        if (x->unassigned())
+            x->propagateNC();
+    }
+    if (ToulBar2::verbose >= 3) {
+        for (unsigned int i = 0; i < vars.size(); i++)
+            cout << *vars[i] << endl;
+    }
+    if (ToulBar2::verbose >= 2)
+        printNCBuckets();
+
+    if (objectiveChanged) {
+        objectiveChanged = false;
+        int bucket = min(cost2log2glb(getUb() - (getLb() + rounding(UNIT_COST) - UNIT_COST)), NCBucketSize - 1);
+        if (bucket < 0)
+            bucket = 0;
+        for (; bucket < NCBucketSize; bucket++) {
+            for (VariableList::iterator iter = NCBuckets[bucket].begin(); iter != NCBuckets[bucket].end();) {
+                Variable* x = *iter;
+                ++iter; // Warning! the iterator could be moved to another place by propagateNC
+                if (x->unassigned() && CUT(x->getMaxCost() + getLb(), getUb())) {
+                    if (td) {
+                        if (td->isActiveAndInCurrentClusterSubTree(x->getCluster()))
+                            x->propagateNC();
+                    } else
+                        x->propagateNC();
+                }
+            }
+        }
+    }
+    if (objectiveChanged || !NC.empty())
+        propagateNC();
+}
+
+void WCSP::propagateIncDec()
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "IncDecQueue size: " << IncDec.getSize() << endl;
+    while (!IncDec.empty()) {
+        int incdec;
+        Variable* x = IncDec.pop(&incdec);
+        if (x->unassigned())
+            x->propagateIncDec(incdec);
+    }
+}
+
+void WCSP::propagateAC()
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "ACQueue size: " << AC.getSize() << endl;
+    if (Store::getDepth() == 0)
+        AC.sort(false);
+    while (!AC.empty()) {
+        EnumeratedVariable* x = (EnumeratedVariable*)((ToulBar2::QueueComplexity) ? AC.pop_min() : AC.pop());
+        if (x->unassigned())
+            x->propagateAC();
+        // Warning! propagateIncDec() necessary to transform inc/dec event into remove event
+        propagateIncDec(); // always examine inc/dec events before remove events
+    }
+}
+
+void WCSP::propagateDAC()
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "DACQueue size: " << DAC.getSize() << endl;
+    if (Store::getDepth() == 0)
+        DAC.sort(true);
+    while (!DAC.empty()) {
+        if (ToulBar2::interrupted)
+            throw TimeOut();
+        EnumeratedVariable* x = (EnumeratedVariable*)((ToulBar2::QueueComplexity) ? DAC.pop_max() : DAC.pop());
+        if (x->unassigned())
+            x->propagateDAC();
+        propagateIncDec(); // always examine inc/dec events before projectFromZero events
+    }
+}
+
+void WCSP::propagateTRWS()
+{
+    bool forwardPass = true;
+    unsigned int nIteration = 0;
+    unsigned int nIterationNoChange = 0;
+    Cost previousEbound = MIN_COST;
+    Cost ebound = MIN_COST;
+    Cost bestUb = getUb();
+    vector<int> orders[2] = { vector<int>(numberOfVariables()), vector<int>(numberOfVariables()) };
+    vector<unsigned int> ranks[2] = { vector<unsigned int>(numberOfVariables()), vector<unsigned int>(numberOfVariables()) };
+    vector<Cost> tmpM(getMaxDomainSize(), numeric_limits<Cost>::max());
+    vector<Value> bestPrimalVal(numberOfVariables(), 0);
+    vector<int> bestPrimalVar(numberOfVariables(), 0);
+    for (unsigned int i = 0; i < numberOfVariables(); ++i) {
+        bestPrimalVar[i] = i;
+        bestPrimalVal[i] = getSupport(i);
+    }
+
+    assert(!td); // warning! tree decomposition must be done after TRW-S
+
+    // Preprocessing: compute order
+    if (ToulBar2::trwsOrder) {
+        // Use monotonic chains
+        unsigned int nVariableUsed = 0;
+        vector<bool> variableUsed(numberOfVariables(), false);
+        unsigned int firstVariableId = 0;
+        while (nVariableUsed != numberOfVariables()) {
+            while (variableUsed[getVar(firstVariableId)->wcspIndex])
+                ++firstVariableId;
+            Variable* firstVariable = getVar(firstVariableId);
+            variableUsed[firstVariable->wcspIndex] = true;
+            ranks[0][firstVariable->wcspIndex] = nVariableUsed;
+            orders[0][nVariableUsed++] = firstVariable->wcspIndex;
+            if (assigned(firstVariableId) || !enumerated(firstVariableId))
+                continue;
+            bool stillPath;
+            do {
+                stillPath = false;
+                for (ConstraintList::iterator iter = firstVariable->getConstrs()->begin(); (iter != firstVariable->getConstrs()->end()) && (!stillPath); ++iter) {
+                    Constraint* constraint = (*iter).constr;
+                    if (constraint->isBinary()) {
+                        BinaryConstraint* binaryConstraint = static_cast<BinaryConstraint*>(constraint);
+                        EnumeratedVariable* otherVariable = static_cast<EnumeratedVariable*>(binaryConstraint->getVarDiffFrom(firstVariable));
+                        if (!variableUsed[otherVariable->wcspIndex]) {
+                            firstVariable = otherVariable;
+                            variableUsed[firstVariable->wcspIndex] = true;
+                            ranks[0][firstVariable->wcspIndex] = nVariableUsed;
+                            orders[0][nVariableUsed++] = firstVariable->wcspIndex;
+                            stillPath = true;
+                        }
+                    }
+                }
+            } while (stillPath);
+        }
+    } else {
+        // Use DAC order
+        for (unsigned int i = 0; i < numberOfVariables(); ++i) {
+            Variable* var = getVar(i);
+            orders[0][var->getDACOrder()] = var->wcspIndex;
+            ranks[0][var->wcspIndex] = var->getDACOrder();
+        }
+    }
+
+    orders[1] = orders[0];
+    reverse(orders[1].begin(), orders[1].end());
+    for (unsigned int i = 0; i < numberOfVariables(); ++i) {
+        ranks[1][i] = numberOfVariables() - ranks[0][i] - 1;
+    }
+
+    // DAC compatible order is the opposite
+    if (*(orders[0].begin()) < *(orders[0].rbegin())) {
+        swap(orders[0], orders[1]);
+        swap(ranks[0], ranks[1]);
+    }
+
+    if (ToulBar2::trwsOrder) {
+        setDACOrder(orders[0]);
+    }
+
+    // Preprocessing: compute gammas
+    for (unsigned int i = 0; i < numberOfVariables(); ++i)
+        if (unassigned(i) && enumerated(i)) {
+            EnumeratedVariable* s = static_cast<EnumeratedVariable*>(getVar(i));
+            unsigned int r = ranks[0][s->wcspIndex];
+            int nCtrIn = 0, nCtrOut = 0;
+            for (ConstraintList::iterator iter = s->getConstrs()->begin(); iter != s->getConstrs()->end(); ++iter) {
+                Constraint* constraint = (*iter).constr;
+                if (constraint->isBinary()) {
+                    BinaryConstraint* binctr = static_cast<BinaryConstraint*>(constraint);
+                    if (ranks[0][binctr->getVarDiffFrom(s)->wcspIndex] < r) {
+                        ++nCtrIn;
+                    } else {
+                        ++nCtrOut;
+                    }
+                }
+            }
+            s->setTRWSGamma(1.0 / (max<unsigned int>(nCtrIn, nCtrOut) + 0.1));
+        }
+    // Preprocessing: reset trwsM
+    for (unsigned int i = 0; i < numberOfConstraints(); i++) {
+        Constraint* ctr = getCtr(i);
+        if (ctr->connected() && ctr->isBinary()) {
+            BinaryConstraint* binctr = static_cast<BinaryConstraint*>(ctr);
+            binctr->trwsM.clear();
+        }
+    }
+    for (int i = 0; i < elimBinOrder; i++) {
+        Constraint* ctr = elimBinConstrs[i];
+        if (ctr->connected()) {
+            BinaryConstraint* binctr = static_cast<BinaryConstraint*>(ctr);
+            binctr->trwsM.clear();
+        }
+    }
+
+    do {
+        vector<int>& order = (forwardPass) ? orders[0] : orders[1];
+        vector<unsigned int>& rank = (forwardPass) ? ranks[0] : ranks[1];
+        ebound = MIN_COST;
+        for (unsigned int i = 0; i < numberOfVariables(); ++i) {
+            if (unassigned(order[i]) && enumerated(order[i])) {
+                if (ToulBar2::interrupted)
+                    throw TimeOut();
+                EnumeratedVariable* s = static_cast<EnumeratedVariable*>(getVar(order[i]));
+                // step 1: normalize unary costs
+                vector<Cost> thetaHat(s->getDomainInitSize(), MIN_COST);
+                Cost delta = numeric_limits<Cost>::max();
+                for (EnumeratedVariable::iterator sIter = s->begin(); sIter != s->end(); ++sIter) {
+                    unsigned int j = s->toIndex(*sIter);
+                    thetaHat[j] = s->getCost(*sIter);
+                    for (ConstraintList::iterator iter = s->getConstrs()->begin(); iter != s->getConstrs()->end(); ++iter) {
+                        Constraint* constraint = (*iter).constr;
+                        if (constraint->isBinary()) {
+                            BinaryConstraint* binctr = static_cast<BinaryConstraint*>(constraint);
+                            thetaHat[j] += binctr->trwsM[j];
+                        }
+                    }
+                    delta = min<Cost>(delta, thetaHat[j]);
+                }
+                if (delta != MIN_COST) {
+                    for (EnumeratedVariable::iterator sIter = s->begin(); sIter != s->end(); ++sIter) {
+                        unsigned int j = s->toIndex(*sIter);
+                        thetaHat[j] -= delta;
+                    }
+                    ebound += delta;
+                }
+                // step 2: message update
+                for (ConstraintList::iterator iter = s->getConstrs()->begin(); iter != s->getConstrs()->end(); ++iter) {
+                    Constraint* constraint = (*iter).constr;
+                    if (constraint->isBinary()) {
+                        BinaryConstraint* binctr = static_cast<BinaryConstraint*>(constraint);
+                        EnumeratedVariable* t = static_cast<EnumeratedVariable*>(binctr->getVarDiffFrom(s));
+                        if (rank[s->wcspIndex] < rank[t->wcspIndex]) {
+                            std::function<Cost(unsigned int, unsigned int)> getCost1 = [binctr](unsigned int x, unsigned int y) { return binctr->getCost(x, y); };
+                            std::function<Cost(unsigned int, unsigned int)> getCost2 = [binctr](unsigned int y, unsigned int x) { return binctr->getCost(x, y); };
+                            auto getCost = (s == binctr->getVar(0)) ? getCost1 : getCost2;
+                            delta = numeric_limits<Cost>::max();
+                            tmpM.resize(max(s->getDomainInitSize(), t->getDomainInitSize()), numeric_limits<Cost>::max());
+                            for (EnumeratedVariable::iterator tIter = t->begin(); tIter != t->end(); ++tIter) {
+                                unsigned int k = t->toIndex(*tIter);
+                                tmpM[k] = numeric_limits<Cost>::max();
+                                for (EnumeratedVariable::iterator sIter = s->begin(); sIter != s->end(); ++sIter) {
+                                    unsigned int j = s->toIndex(*sIter);
+                                    tmpM[k] = min<Cost>(tmpM[k], static_cast<Cost>(trunc(s->getTRWSGamma() * thetaHat[j])) - binctr->trwsM[j] + getCost(j, k));
+                                }
+                                delta = min<Cost>(delta, tmpM[k]);
+                            }
+                            binctr->trwsM = tmpM;
+                            if (delta != MIN_COST) {
+                                for (EnumeratedVariable::iterator tIter = t->begin(); tIter != t->end(); ++tIter) {
+                                    unsigned int k = t->toIndex(*tIter);
+                                    binctr->trwsM[k] -= delta;
+                                }
+                                ebound += delta;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        // step 3: compute ub
+        if ((!forwardPass) && (ToulBar2::trwsNIterComputeUb > 0) && (nIteration > 0) && (nIteration % ToulBar2::trwsNIterComputeUb == 0)) {
+            for (unsigned int i = 0; i < numberOfVariables(); ++i) {
+                if (unassigned(order[i]) && enumerated(order[i])) {
+                    EnumeratedVariable* s = static_cast<EnumeratedVariable*>(getVar(order[i]));
+                    Cost bestCost = numeric_limits<Cost>::max();
+                    for (EnumeratedVariable::iterator sIter = s->begin(); sIter != s->end(); ++sIter) {
+                        Cost cost = s->getCost(*sIter);
+                        unsigned int j = s->toIndex(*sIter);
+                        for (ConstraintList::iterator iter = s->getConstrs()->begin(); iter != s->getConstrs()->end(); ++iter) {
+                            Constraint* constraint = (*iter).constr;
+                            if (constraint->isBinary()) {
+                                BinaryConstraint* binctr = static_cast<BinaryConstraint*>(constraint);
+                                EnumeratedVariable* t = static_cast<EnumeratedVariable*>(binctr->getVarDiffFrom(s));
+                                if (rank[s->wcspIndex] < rank[t->wcspIndex]) {
+                                    cost += binctr->trwsM[j];
+                                } else {
+                                    cost += binctr->getCost(s, t, *sIter, bestPrimalVal[t->wcspIndex]);
+                                }
+                            }
+                        }
+                        if (cost < bestCost || (cost == bestCost && s->getSupport() == *sIter)) {
+                            bestCost = cost;
+                            bestPrimalVal[s->wcspIndex] = *sIter;
+                        }
+                    }
+                }
+            }
+            int depth = Store::getDepth();
+            try {
+                Store::store();
+                assignLS(bestPrimalVar, bestPrimalVal);
+                assert(numberOfUnassignedVariables() == 0);
+                ((Solver*)getSolver())->Solver::newSolution();
+                bestUb = min<Cost>(getUb(), bestUb);
+            } catch (const Contradiction&) {
+                whenContradiction();
+            }
+            Store::restore(depth);
+            enforceUb();
+        }
+        // step 4: reverse ordering
+        double change = 0.0;
+        if (!forwardPass) {
+            ++nIteration;
+            change = (ebound == previousEbound) ? 0.0 : (double)(ebound - previousEbound + 1) / (getLb() + ebound + 1);
+            nIterationNoChange = (change > ToulBar2::trwsAccuracy) ? 0 : nIterationNoChange + 1;
+            if (ToulBar2::verbose >= 0 && !nIterationNoChange) {
+                Double Dglb = (ToulBar2::costMultiplier >= 0 ? Cost2ADCost(getLb() + ebound) : Cost2ADCost(bestUb));
+                Double Dgub = (ToulBar2::costMultiplier >= 0 ? Cost2ADCost(bestUb) : Cost2ADCost(getLb() + ebound));
+                if (ToulBar2::uai)
+                    cout << "TRW-S dual bound: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << Cost2ADCost(getLb() + ebound) << std::setprecision(DECIMAL_POINT) << " energy: " << -(Cost2LogProb(getLb() + ebound) + ToulBar2::markov_log) << " -- primal bound: " << std::setprecision(ToulBar2::decimalPoint) << Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << " energy: " << -(Cost2LogProb(bestUb) + ToulBar2::markov_log) << " (+" << (100 * change) << "%) (accuracy: " << (100.0 * (bestUb - ebound - getLb()) / (bestUb + 1)) << "%) (iter:" << nIteration << ")" << endl;
+                else
+                    cout << "TRW-S bounds: [" << std::fixed << std::setprecision(ToulBar2::decimalPoint) << Dglb << ", " << Dgub << std::setprecision(DECIMAL_POINT) << "] (+" << (100 * change) << "%) (accuracy: " << (100.0 * (bestUb - ebound - getLb()) / (bestUb + 1)) << "%) (iter:" << nIteration << ")" << endl;
+            }
+            previousEbound = ebound;
+        }
+        forwardPass = !forwardPass;
+    } while ((nIteration < ToulBar2::trwsNIter) && (nIterationNoChange < ToulBar2::trwsNIterNoChange));
+
+    // step 5: move to WCSP
+    ToulBar2::trwsAccuracy = -1; // stop TRW-S such that VAC can be done
+    if (ebound <= MIN_COST) {
+        if (ToulBar2::verbose >= 1) {
+            cout << "TRW-S did not improve the lower bound." << endl;
+        }
+    } else {
+        Cost delta = MIN_COST;
+        for (unsigned int i = 0; i < numberOfVariables(); ++i) {
+            if (unassigned(orders[0][i]) && enumerated(orders[0][i])) {
+                if (ToulBar2::interrupted)
+                    throw TimeOut();
+                EnumeratedVariable* s = static_cast<EnumeratedVariable*>(getVar(orders[0][i]));
+                for (ConstraintList::iterator iter = s->getConstrs()->begin(); iter != s->getConstrs()->end(); ++iter) {
+                    Constraint* constraint = (*iter).constr;
+                    if (constraint->isBinary()) {
+                        BinaryConstraint* binctr = static_cast<BinaryConstraint*>(constraint);
+                        EnumeratedVariable* t = static_cast<EnumeratedVariable*>(binctr->getVarDiffFrom(s));
+                        if (ranks[0][s->wcspIndex] < ranks[0][t->wcspIndex]) {
+                            for (EnumeratedVariable::iterator sIter = s->begin(); sIter != s->end(); ++sIter) {
+                                unsigned int j = s->toIndex(*sIter);
+                                binctr->projectTRWS(s, *sIter, binctr->trwsM[j]);
+                            }
+                        }
+                    }
+                }
+                Cost c = s->normalizeTRWS();
+                delta += c;
+                for (EnumeratedVariable::iterator sIter = s->begin(); sIter != s->end(); ++sIter) {
+                    Cost availableCost = static_cast<Cost>(trunc(s->getTRWSGamma() * s->getCost(*sIter)));
+                    for (ConstraintList::iterator iter = s->getConstrs()->begin(); iter != s->getConstrs()->end(); ++iter) {
+                        Constraint* constraint = (*iter).constr;
+                        if (constraint->isBinary()) {
+                            BinaryConstraint* binctr = static_cast<BinaryConstraint*>(constraint);
+                            EnumeratedVariable* t = static_cast<EnumeratedVariable*>(binctr->getVarDiffFrom(s));
+                            if (ranks[0][s->wcspIndex] < ranks[0][t->wcspIndex]) {
+                                binctr->extend(binctr->getIndex(s), *sIter, availableCost);
+                            }
+                        }
+                    }
+                }
+                for (ConstraintList::iterator iter = s->getConstrs()->begin(); iter != s->getConstrs()->end(); ++iter) {
+                    Constraint* constraint = (*iter).constr;
+                    if (constraint->isBinary()) {
+                        BinaryConstraint* binctr = static_cast<BinaryConstraint*>(constraint);
+                        EnumeratedVariable* t = static_cast<EnumeratedVariable*>(binctr->getVarDiffFrom(s));
+                        if (ranks[0][s->wcspIndex] < ranks[0][t->wcspIndex]) {
+                            std::function<Cost(unsigned int, unsigned int)> getCost1 = [binctr](unsigned int x, unsigned int y) { return binctr->getCostTRWS(x, y); };
+                            std::function<Cost(unsigned int, unsigned int)> getCost2 = [binctr](unsigned int y, unsigned int x) { return binctr->getCostTRWS(x, y); };
+                            auto getCost = (s == binctr->getVar(0)) ? getCost1 : getCost2;
+                            Cost minCost = numeric_limits<Cost>::max();
+                            tmpM.resize(max(s->getDomainInitSize(), t->getDomainInitSize()), numeric_limits<Cost>::max());
+                            for (EnumeratedVariable::iterator tIter = t->begin(); tIter != t->end(); ++tIter) {
+                                unsigned int k = t->toIndex(*tIter);
+                                tmpM[k] = numeric_limits<Cost>::max();
+                                for (EnumeratedVariable::iterator sIter = s->begin(); sIter != s->end(); ++sIter) {
+                                    tmpM[k] = min<Cost>(tmpM[k], getCost(*sIter, *tIter));
+                                }
+                                minCost = min<Cost>(minCost, tmpM[k]);
+                            }
+                            for (EnumeratedVariable::iterator tIter = t->begin(); tIter != t->end(); ++tIter) {
+                                unsigned int k = t->toIndex(*tIter);
+                                tmpM[k] -= minCost;
+                            }
+                            binctr->trwsM = tmpM;
+                            for (EnumeratedVariable::iterator tIter = t->begin(); tIter != t->end(); ++tIter) {
+                                binctr->projectTRWS(t, *tIter, binctr->trwsM[t->toValue(*tIter)]);
+                            }
+                            minCost = binctr->normalizeTRWS();
+                            delta += minCost;
+                        }
+                    }
+                }
+            }
+        }
+        increaseLb(delta);
+        propagate(); // propagate again without TRWS and possibly with VAC
+    }
+}
+
+void WCSP::fillEAC2()
+{
+    assert(EAC2.empty());
+    if (ToulBar2::verbose >= 2)
+        cout << "EAC1Queue size: " << EAC1.getSize() << endl;
+    while (!EAC1.empty()) {
+        EnumeratedVariable* x = (EnumeratedVariable*)((ToulBar2::QueueComplexity) ? EAC1.pop_min() : EAC1.pop());
+        if (x->unassigned())
+            x->fillEAC2(true);
+    }
+}
+
+void WCSP::propagateEAC()
+{
+    fillEAC2();
+    if (ToulBar2::verbose >= 2)
+        cout << "EAC2Queue size: " << EAC2.getSize() << endl;
+    if (Store::getDepth() == 0)
+        EAC2.sort(false);
+    while (!EAC2.empty()) {
+        if (ToulBar2::interrupted)
+            throw TimeOut();
+        EnumeratedVariable* x = (EnumeratedVariable*)((ToulBar2::QueueComplexity) ? EAC2.pop_min() : EAC2.pop());
+        if (x->unassigned())
+            x->propagateEAC();
+        propagateIncDec(); // always examine inc/dec events before projectFromZero events
+    }
+}
+
+void WCSP::propagateSeparator()
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "PendingSeparator size: " << PendingSeparator.getSize() << endl;
+    for (SeparatorList::iterator iter = PendingSeparator.begin(); iter != PendingSeparator.end(); ++iter) {
+        (*iter)->propagate();
+    }
+}
+
+void WCSP::propagateDEE()
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "DEEQueue size: " << DEE.getSize() << endl;
+    assert(NC.empty());
+    while (!DEE.empty()) {
+        if (ToulBar2::interrupted)
+            throw TimeOut();
+        EnumeratedVariable* x = (EnumeratedVariable*)DEE.pop();
+        if (x->unassigned() && !((ToulBar2::divNbSol > 1) && Store::getDepth() == 0)) {
+            if (ToulBar2::DEE_ >= 3 || (ToulBar2::DEE_ == 2 && Store::getDepth() == 0)) {
+                for (EnumeratedVariable::iterator itera = x->begin(); itera != x->end(); ++itera) {
+                    for (EnumeratedVariable::iterator iterb = x->lower_bound(*itera + 1); iterb != x->end(); ++iterb) {
+                        assert(x->canbe(*itera));
+                        assert(x->canbe(*iterb));
+                        assert(*itera != *iterb);
+                        x->propagateDEE(*itera, *iterb, false);
+                        if (x->cannotbe(*itera))
+                            break;
+                    }
+                }
+            } else {
+                Value a = x->getSupport();
+                Value b = x->getMaxCostValue();
+                assert(x->canbe(a) && x->getCost(a) == MIN_COST);
+                assert(x->canbe(b) && x->getCost(b) == x->getMaxCost());
+                if (a == b) {
+                    assert(x->getMaxCost() == MIN_COST);
+                    if (a != x->getSup())
+                        b = x->getSup();
+                    else
+                        b = x->getInf();
+                }
+                assert(a != b);
+                x->propagateDEE(a, b);
+            }
+            propagateNC(); // DEE assumes NC already done
+        }
+    }
+}
+
+void WCSP::propagateFEAC()
+{
+    if (ToulBar2::verbose >= 2)
+        cout << "FEACQueue size: " << FEAC.getSize() << endl;
+    while (!FEAC.empty()) {
+        if (ToulBar2::interrupted)
+            throw TimeOut();
+        EnumeratedVariable* x = (EnumeratedVariable*)FEAC.pop();
+        if (x->unassigned())
+            x->reviseEACGreedySolution();
+    }
+}
+
+/// \defgroup varelim Variable elimination
+/// - \e i-bounded variable elimination eliminates all variables with a degree less than or equal to \e i.
+///		It can be done with arbitrary i-bound in preprocessing only and iff all their cost functions are in extension.
+/// - \e i-bounded variable elimination with i-bound less than or equal to two can be done during the search.
+/// - functional variable elimination eliminates all variables which have a bijective or functional binary hard constraint (\e ie ensuring a one-to-one or several-to-one value mapping) and iff all their cost functions are in extension.
+///		It can be done without limit on their degree, in preprocessing only.
+/// \note Variable elimination order used in preprocessing is either lexicographic or given by an external file *.order (see toulbar2 options)
+/// \note 2-bounded variable elimination during search is optimal in the sense that any elimination order should result in the same final graph
+/// \warning It is not possible to display/save solutions when bounded variable elimination is applied in preprocessing
+/// \warning toulbar2 maintains a list of current cost functions for each variable.
+///		It uses the size of these lists as an approximation of variable degrees.
+///		During the search, if variable \e x has three cost functions \e xy, \e xz, \e xyz, its true degree is two but its approximate degree is three.
+///		In toulbar2 options, it is the approximate degree which is given by the user for variable elimination during the search (thus, a value at most three).
+///		But it is the true degree which is given by the user for variable elimination in preprocessing.
+
+void WCSP::eliminate()
+{
+    while (!Eliminate.empty()) {
+        if (ToulBar2::interrupted)
+            throw TimeOut();
+        EnumeratedVariable* x = (EnumeratedVariable*)Eliminate.pop();
+        if (x->unassigned()) {
+            if (td) {
+                if (td->isInCurrentClusterSubTree(x->getCluster()))
+                    x->eliminate();
+            } else
+                x->eliminate();
+        }
+    }
+}
+
+/// \defgroup softac Soft arc consistency and problem reformulation
+/// Soft arc consistency is an incremental lower bound technique for optimization problems.
+/// Its goal is to move costs from high-order (typically arity two or three) cost functions towards the problem lower bound and unary cost functions.
+/// This is achieved by applying iteratively local equivalence-preserving problem transformations (EPTs) until some terminating conditions are met.
+/// \note \e eg an EPT can move costs between a binary cost function and a unary cost function such that the sum of the two functions remains the same for any complete assignment.
+/// \see <em> Arc consistency for Soft Constraints. </em> T. Schiex. Proc. of CP'2000. Singapour, 2000.
+/// \note Soft Arc Consistency in toulbar2 is limited to binary and ternary and some global cost functions (\e eg alldifferent, gcc, regular, same).
+///		Other n-ary cost functions are delayed for propagation until their number of unassigned variables is three or less.
+/// \see <em> Towards Efficient Consistency Enforcement for Global Constraints in Weighted Constraint Satisfaction. </em> Jimmy Ho-Man Lee, Ka Lun Leung. Proc. of IJCAI 2009, pages 559-565. Pasadena, USA, 2009.
+
+/// \defgroup propagation Propagation loop
+/// Propagates soft local consistencies and bounded variable elimination until all the propagation queues are empty or a contradiction occurs.\n
+/// While (queues are not empty or current objective bounds have changed):
+/// -# queue for bounded variable elimination of degree at most two (except at preprocessing)
+/// -# BAC queue
+/// -# EAC queue
+/// -# DAC queue
+/// -# AC queue
+/// -# monolithic (flow-based and DAG-based) global cost function propagation (partly incremental)
+/// -# NC queue
+/// -# returns to #1 until all the previous queues are empty
+/// -# DEE queue
+/// -# returns to #1 until all the previous queues are empty
+/// -# VAC propagation (not incremental)
+/// -# returns to #1 until all the previous queues are empty (and problem is VAC if enable)
+/// -# exploits goods in pending separators for BTD-like methods
+///
+/// Queues are first-in / first-out lists of variables (avoiding multiple insertions).
+/// In case of a contradiction, queues are explicitly emptied by WCSP::whenContradiction
+
+void WCSP::propagate()
+{
+    if (ToulBar2::interrupted)
+        throw TimeOut();
+    revise(NULL);
+    if (ToulBar2::vac)
+        vac->iniThreshold();
+
+    for (vector<GlobalConstraint*>::iterator it = globalconstrs.begin(); it != globalconstrs.end(); it++) {
+        (*(it))->init();
+    }
+    if (isGlobal() && ToulBar2::LcLevel >= LC_EDAC) {
+        for (unsigned int i = 0; i < vars.size(); i++) {
+            EnumeratedVariable* x = (EnumeratedVariable*)vars[i];
+            if (x->unassigned()) {
+                x->setCostProvidingPartition(); // For EAC propagation
+            }
+        }
+    }
+
+    do {
+        do {
+            do {
+                do {
+                    eliminate();
+                    int eac_iter = 0;
+                    while (objectiveChanged || !NC.empty() || !IncDec.empty() || ((ToulBar2::LcLevel == LC_AC || ToulBar2::LcLevel >= LC_FDAC) && !AC.empty())
+                        || (ToulBar2::LcLevel >= LC_DAC
+                               && !DAC.empty())
+                        || (ToulBar2::LcLevel == LC_EDAC && !CSP(getLb(), getUb()) && !EAC1.empty())) {
+                        eac_iter++;
+                        propagateIncDec();
+                        if (ToulBar2::LcLevel == LC_EDAC && !CSP(getLb(), getUb()))
+                            propagateEAC();
+                        assert(IncDec.empty());
+                        if (ToulBar2::LcLevel >= LC_DAC)
+                            propagateDAC();
+                        assert(IncDec.empty());
+                        if (ToulBar2::LcLevel == LC_AC || ToulBar2::LcLevel >= LC_FDAC)
+                            propagateAC();
+                        assert(IncDec.empty());
+
+                        Cost oldLb = getLb();
+                        bool cont = true;
+                        while (cont) {
+                            oldLb = getLb();
+                            cont = false;
+                            for (vector<GlobalConstraint*>::iterator it = globalconstrs.begin(); it != globalconstrs.end(); it++) {
+                                if (ToulBar2::interrupted)
+                                    throw TimeOut();
+                                (*(it))->propagate();
+                                if (ToulBar2::LcLevel == LC_SNIC)
+                                    if (!IncDec.empty())
+                                        cont = true; //For detecting value removal during SNIC enforcement
+                                propagateIncDec();
+                            }
+                            if (ToulBar2::LcLevel == LC_SNIC)
+                                if (!NC.empty() || objectiveChanged)
+                                    cont = true; //For detecting value removal and upper bound change
+                            propagateNC();
+                            if (ToulBar2::LcLevel == LC_SNIC)
+                                if (oldLb != getLb() || !AC.empty()) {
+                                    cont = true;
+                                    AC.clear(); //For detecting value removal and lower bound change
+                                }
+                        }
+                        propagateNC();
+                        if (ToulBar2::DEE_) {
+                            propagateDEE(); // DEE requires NC and can break soft AC but not VAC
+                        }
+                        if (ToulBar2::LcLevel == LC_EDAC && eac_iter > MAX_EAC_ITER) {
+                            EAC1.clear();
+                            cout << "c automatically switch from EDAC to FDAC." << endl;
+                            ToulBar2::LcLevel = LC_FDAC;
+                            break;
+                        } // avoids pathological cases with too many very slow lower bound increase by EAC
+                    }
+                } while (!Eliminate.empty());
+
+                if (ToulBar2::LcLevel < LC_EDAC || CSP(getLb(), getUb()))
+                    EAC1.clear();
+                if (ToulBar2::vac && (ToulBar2::trwsAccuracy < 0) && !CSP(getLb(), getUb())) {
+                    vac->propagate(); // VAC requires soft AC
+                }
+            } while (ToulBar2::vac && !CSP(getLb(), getUb()) && !vac->isVAC());
+        } while (objectiveChanged || !NC.empty() || !IncDec.empty()
+            || ((ToulBar2::LcLevel == LC_AC || ToulBar2::LcLevel >= LC_FDAC) && !AC.empty())
+            || (ToulBar2::LcLevel >= LC_DAC && !DAC.empty())
+            || (ToulBar2::LcLevel == LC_EDAC && !CSP(getLb(), getUb()) && !EAC1.empty())
+            || !Eliminate.empty()
+            || (ToulBar2::vac && !CSP(getLb(), getUb()) && !vac->isVAC()));
+        // TO BE DONE AFTER NORMAL PROPAGATION
+        if (td)
+            propagateSeparator();
+    } while (objectiveChanged);
+    propagateFEAC();
+    revise(NULL);
+
+    for (vector<GlobalConstraint*>::iterator it = globalconstrs.begin(); it != globalconstrs.end(); it++) {
+        (*(it))->end();
+    }
+    assert(verify());
+    assert(!objectiveChanged);
+    assert(NC.empty());
+    assert(IncDec.empty());
+    if (ToulBar2::LcLevel == LC_AC || ToulBar2::LcLevel >= LC_FDAC)
+        assert(AC.empty());
+    else
+        AC.clear();
+    if (ToulBar2::LcLevel >= LC_DAC)
+        assert(DAC.empty());
+    else
+        DAC.clear();
+    assert(EAC1.empty());
+    assert(EAC2.empty());
+    assert(Eliminate.empty());
+    DEE.clear(); // DEE might not be empty if verify() has modified supports
+    assert(FEAC.empty());
+    nbNodes++;
+}
+
+void WCSP::restoreSolution(Cluster* c)
+{
+    static Tuple tctr;
+    int elimo = getElimOrder();
+    for (int i = elimo - 1; i >= 0; i--) {
+        elimInfo ei = elimInfos[i];
+        EnumeratedVariable* x = (EnumeratedVariable*)ei.x;
+        EnumeratedVariable* y = (EnumeratedVariable*)ei.y;
+        EnumeratedVariable* z = (EnumeratedVariable*)ei.z;
+        assert(x);
+        assert(x->assigned());
+        if (c && !c->isVar(x->wcspIndex))
+            continue;
+        if (y && y->unassigned())
+            continue;
+        if (z && z->unassigned())
+            continue;
+        BinaryConstraint* xy = ei.xy;
+        BinaryConstraint* xz = ei.xz;
+        TernaryConstraint* xyz = ei.xyz;
+        Constraint* ctr = ei.ctr;
+        Value vy = -1;
+        Value vz = -1;
+        Cost cctr;
+        int xctrindex = -1;
+        if (y)
+            vy = getValue(y->wcspIndex);
+        if (z)
+            vz = getValue(z->wcspIndex);
+        if (ctr) {
+            ctr->firstlex();
+            ctr->nextlex(tctr, cctr);
+            xctrindex = ctr->getIndex(x);
+            assert(xctrindex >= 0);
+        }
+
+        Value minv = WRONG_VAL;
+        Cost mincost = MAX_COST;
+        for (unsigned int vxi = 0; vxi < x->getDomainInitSize(); vxi++) {
+            Value vx = x->toValue(vxi);
+            if (!x->canbeAfterElim(vx))
+                continue;
+            Cost cxy = MIN_COST;
+            Cost cxz = MIN_COST;
+            Cost cxyz = MIN_COST;
+            cctr = MIN_COST;
+            if (xy) {
+                if (xy->getIndex(y) == 0)
+                    cxy = xy->getCost(vy, vx);
+                else
+                    cxy = xy->getCost(vx, vy);
+            }
+            if (xz) {
+                if (xz->getIndex(z) == 0)
+                    cxz = xz->getCost(vz, vx);
+                else
+                    cxz = xz->getCost(vx, vz);
+            }
+            if (xyz)
+                cxyz = xyz->getCost(x, y, z, vx, vy, vz);
+            if (ctr) {
+                tctr[xctrindex] = vxi;
+                cctr = ctr->evalsubstr(tctr, ctr);
+            }
+            Cost loc = x->getCost(vx) + cxy + cxz + cxyz + cctr;
+            //cout << "test " << vx << "," << x->getCost(vx) << "," << cxy << "," << cxz << "," << cxyz << endl;
+            if (loc < mincost) {
+                mincost = loc;
+                minv = vx;
+            }
+        }
+        //cout << i << ": elim " << x->getName() << "_" << minv << ", y= " << ((y)?y->getName():"-") << "_" << vy << ", z= " << ((z)?z->getName():"-") << "_" << vz << endl;
+        assert(minv != WRONG_VAL);
+        x->assignWhenEliminated(minv);
+    }
+}
+
+// -----------------------------------------------------------
+// Methods for Variable Elimination
+
+// Creates n fake empty constraints and puts them in the pool 'elimBinConstrs'
+
+void WCSP::initElimConstr()
+{
+    BinaryConstraint* xy = NULL;
+    if (!ToulBar2::vac)
+        xy = new BinaryConstraint(this);
+    else
+        xy = new VACBinaryConstraint(this);
+    elimBinConstrs.push_back(xy);
+    elimInfo ei = { NULL, NULL, NULL, NULL, NULL, NULL, NULL };
+    elimInfos.push_back(ei);
+}
+
+void WCSP::initElimConstrs()
+{
+    for (unsigned int i = 0; i < vars.size(); i++)
+        initElimConstr();
+
+    vector<int> order;
+    if (isAlreadyTreeDec(ToulBar2::varOrder))
+        treeDecFile2Vector(ToulBar2::varOrder, order);
+    else
+        elimOrderFile2Vector(ToulBar2::varOrder, order);
+    for (int i = vars.size() - 1; i >= 0; --i)
+        vars[order[i]]->queueEliminate();
+    elimSpace = 0;
+}
+
+// Function that adds a new binary constraint from the pool of fake constraints
+BinaryConstraint* WCSP::newBinaryConstr(EnumeratedVariable* x, EnumeratedVariable* y, Constraint* from1, Constraint* from2)
+{
+    unsigned int newIndex = (int)elimBinOrder;
+    assert(newIndex < elimBinConstrs.size());
+    BinaryConstraint* ctr = (BinaryConstraint*)elimBinConstrs[newIndex];
+    ctr->fillElimConstr(x, y, from1, from2);
+    if (ToulBar2::vac)
+        ((VACBinaryConstraint*)ctr)->VACfillElimConstr();
+    ctr->isDuplicate_ = false;
+    return ctr;
+}
+
+// warning! Do not propagate this new binary cost function
+BinaryConstraint* WCSP::newBinaryConstr(EnumeratedVariable* x, EnumeratedVariable* y, vector<Cost>& costs)
+{
+    if (!ToulBar2::vac) {
+        return new BinaryConstraint(this, x, y, costs);
+    } else {
+        return new VACBinaryConstraint(this, x, y, costs);
+    }
+}
+
+// warning! you must create beforehand three binary constraints in fake pool (elimBinConstrs)
+// if they do not exist in the main pool (constrs)
+TernaryConstraint* WCSP::newTernaryConstr(EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, Constraint* from1)
+{
+    unsigned int newIndex = (int)elimTernOrder;
+    assert(newIndex < elimTernConstrs.size());
+    TernaryConstraint* ctr = (TernaryConstraint*)elimTernConstrs[newIndex];
+    ctr->fillElimConstr(x, y, z, from1);
+    ctr->isDuplicate_ = false;
+    return ctr;
+}
+
+// warning! Do not propagate this new ternary cost function
+TernaryConstraint* WCSP::newTernaryConstr(EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, vector<Cost>& costs)
+{
+    unsigned int a, b;
+    vector<Cost> zerocostsxy;
+    vector<Cost> zerocostsxz;
+    vector<Cost> zerocostsyz;
+
+    for (a = 0; a < x->getDomainInitSize(); a++) {
+        for (b = 0; b < y->getDomainInitSize(); b++) {
+            zerocostsxy.push_back(MIN_COST);
+        }
+    }
+    for (a = 0; a < x->getDomainInitSize(); a++) {
+        for (b = 0; b < z->getDomainInitSize(); b++) {
+            zerocostsxz.push_back(MIN_COST);
+        }
+    }
+    for (a = 0; a < y->getDomainInitSize(); a++) {
+        for (b = 0; b < z->getDomainInitSize(); b++) {
+            zerocostsyz.push_back(MIN_COST);
+        }
+    }
+
+    BinaryConstraint* xy = x->getConstr(y);
+    BinaryConstraint* xz = x->getConstr(z);
+    BinaryConstraint* yz = y->getConstr(z);
+
+    if (!ToulBar2::vac) {
+        if (!xy) {
+            xy = new BinaryConstraint(this, x, y, zerocostsxy);
+            xy->deconnect(true);
+        }
+        if (!xz) {
+            xz = new BinaryConstraint(this, x, z, zerocostsxz);
+            xz->deconnect(true);
+        }
+        if (!yz) {
+            yz = new BinaryConstraint(this, y, z, zerocostsyz);
+            yz->deconnect(true);
+        }
+    } else {
+        if (!xy) {
+            xy = new VACBinaryConstraint(this, x, y, zerocostsxy);
+            xy->deconnect(true);
+        }
+        if (!xz) {
+            xz = new VACBinaryConstraint(this, x, z, zerocostsxz);
+            xz->deconnect(true);
+        }
+        if (!yz) {
+            yz = new VACBinaryConstraint(this, y, z, zerocostsyz);
+            yz->deconnect(true);
+        }
+    }
+
+    TernaryConstraint* ctr = new TernaryConstraint(this, x, y, z, xy, xz, yz, costs);
+    return ctr;
+}
+
+Constraint* WCSP::sum(Constraint* ctr1, Constraint* ctr2)
+{
+    assert(ctr1 != ctr2);
+    if (ctr1->order(ctr2) < 0) {
+        Constraint* ctraux = ctr1;
+        ctr1 = ctr2;
+        ctr2 = ctraux;
+    }
+    if (ToulBar2::verbose >= 1)
+        cout << endl
+             << "Sum of constraints: " << *ctr1 << " " << *ctr2 << endl;
+    assert(ctr1->connected());
+    assert(ctr2->connected());
+    ctr1->deconnect();
+    ctr2->deconnect(true);
+
+    TSCOPE scopeUinv;
+    TSCOPE scopeIinv;
+    ctr1->scopeUnion(scopeUinv, ctr2);
+    ctr1->scopeCommon(scopeIinv, ctr2);
+    int arityU = scopeUinv.size();
+    int arityI = scopeIinv.size();
+
+    if (arityU == ctr2->arity() && ctr2->extension()) {
+        ctr2->sumScopeIncluded(ctr1);
+        ctr2->reconnect();
+        ctr2->propagate();
+        if (ToulBar2::verbose >= 1)
+            cout << endl
+                 << "Scopes Included.  Has result: " << *ctr2 << endl;
+        return ctr2;
+    }
+
+    EnumeratedVariable** scopeU = new EnumeratedVariable*[arityU];
+    EnumeratedVariable** scopeI = new EnumeratedVariable*[arityI];
+    int* scopeUi = new int[arityU];
+
+    int i = 0;
+    TSCOPE::iterator it = scopeIinv.begin();
+    while (it != scopeIinv.end()) {
+        int xi = it->first;
+        assert(xi == vars[xi]->wcspIndex);
+        scopeU[i] = (EnumeratedVariable*)vars[xi];
+        scopeI[i] = scopeU[i];
+        scopeUi[i] = vars[xi]->wcspIndex;
+        it++;
+        i++;
+        scopeUinv.erase(xi);
+    }
+    it = scopeUinv.begin();
+    while (it != scopeUinv.end()) {
+        int xi = it->first;
+        scopeU[i] = (EnumeratedVariable*)vars[xi];
+        scopeUi[i] = vars[xi]->wcspIndex;
+        it++;
+        i++;
+    }
+
+    EnumeratedVariable* x = scopeU[0];
+    EnumeratedVariable* y = scopeU[1];
+
+    Cost Top = getUb();
+    unsigned int vxi, vyi, vzi;
+    Tuple tuple, tuple1, tuple2;
+    Cost cost, cost1, cost2;
+    int ctrIndex = -INT_MAX;
+    Constraint* ctr = NULL;
+    vector<Cost> costs;
+
+    if (arityU > NARYPROJECTIONSIZE) { // || isGlobal()) {
+        ctrIndex = postNaryConstraintBegin(scopeUi, arityU, Top, ctr1->size() * ctr2->size(), true); //TODO: improve estimated number of tuples
+        ctr = getCtr(ctrIndex);
+        assert(ctr->isNary());
+        NaryConstraint* nary = (NaryConstraint*)ctr;
+
+        nary->fillFilters();
+
+        bool tupleXtuple = (ctr1->getDefCost() >= Top) && (ctr2->getDefCost() >= Top);
+
+        if (tupleXtuple) {
+            ctr1->first();
+            while (ctr1->next(tuple1, cost1)) {
+                ctr2->first();
+                while (ctr2->next(tuple2, cost2)) {
+                    nary->insertSum(tuple1, cost1, ctr1, tuple2, cost2, ctr2, true);
+                }
+            }
+        } else {
+            nary->firstlex();
+            while (nary->nextlex(tuple, cost)) {
+                cost1 = ctr1->evalsubstr(tuple, nary);
+                cost2 = ctr2->evalsubstr(tuple, nary);
+                if (cost1 + cost2 < Top)
+                    nary->setTuple(tuple, cost1 + cost2);
+            }
+        }
+    } else if (arityU == 3) {
+        EnumeratedVariable* z = scopeU[2];
+        EnumeratedVariable* scopeTernary[3] = { x, y, z };
+        Tuple t(3, 0);
+        for (vxi = 0; vxi < x->getDomainInitSize(); vxi++)
+            for (vyi = 0; vyi < y->getDomainInitSize(); vyi++)
+                for (vzi = 0; vzi < z->getDomainInitSize(); vzi++) {
+                    Value vx = x->toValue(vxi);
+                    Value vy = y->toValue(vyi);
+                    Value vz = z->toValue(vzi);
+                    Cost costsum = Top;
+                    if (x->canbe(vx) && y->canbe(vy) && z->canbe(vz)) {
+                        costsum = MIN_COST;
+                        if (arityI == 1) {
+                            assert(ctr1->isBinary());
+                            assert(ctr2->isBinary());
+                            costsum += ((BinaryConstraint*)ctr1)->getCost(x, y, vx, vy)
+                                + ((BinaryConstraint*)ctr2)->getCost(x, z, vx, vz);
+                        } else if (arityI == 2) {
+                            assert(ctr1->isBinary());
+                            Cost c = MIN_COST;
+                            if (ctr2->isTernary()) {
+                                c = ((TernaryConstraint*)ctr2)->getCost(x, y, z, vx, vy, vz);
+                            } else {
+                                assert(ctr2->isNary());
+                                t[0] = vxi;
+                                t[1] = vyi;
+                                t[2] = vzi;
+                                c = ((NaryConstraint*)ctr2)->eval(t, scopeTernary);
+                            }
+                            costsum += ((BinaryConstraint*)ctr1)->getCost(x, y, vx, vy) + c;
+                        } else if (arityI == 3) {
+                            assert(ctr1->isTernary());
+                            assert(ctr2->isTernary());
+                            Cost c1 = MIN_COST;
+                            Cost c2 = MIN_COST;
+                            if (ctr1->isTernary()) {
+                                c1 = ((TernaryConstraint*)ctr1)->getCost(x, y, z, vx, vy, vz);
+                            } else {
+                                assert(ctr1->isNary());
+                                t[0] = vxi;
+                                t[1] = vyi;
+                                t[2] = vzi;
+                                c1 = ((NaryConstraint*)ctr1)->eval(t, scopeTernary);
+                            }
+                            if (ctr2->isTernary()) {
+                                c2 = ((TernaryConstraint*)ctr2)->getCost(x, y, z, vx, vy, vz);
+                            } else {
+                                assert(ctr2->isNary());
+                                t[0] = vxi;
+                                t[1] = vyi;
+                                t[2] = vzi;
+                                c2 = ((NaryConstraint*)ctr2)->eval(t, scopeTernary);
+                            }
+                            costsum += c1 + c2;
+                        } else {
+                            assert(false);
+                        }
+                        if (costsum > Top)
+                            costsum = Top;
+                    }
+                    costs.push_back(costsum);
+                }
+        ctrIndex = postTernaryConstraint(x->wcspIndex, y->wcspIndex, z->wcspIndex, costs);
+    } else if (arityU == 2) {
+        BinaryConstraint* bctr1 = (BinaryConstraint*)ctr1;
+        BinaryConstraint* bctr2 = (BinaryConstraint*)ctr2;
+        for (vxi = 0; vxi < x->getDomainInitSize(); vxi++)
+            for (vyi = 0; vyi < y->getDomainInitSize(); vyi++) {
+                Value vx = x->toValue(vxi);
+                Value vy = y->toValue(vyi);
+                Cost costsum = Top;
+                if (x->canbe(vx) && y->canbe(vy)) {
+                    costsum = bctr1->getCost(x, y, vx, vy) + bctr2->getCost(x, y, vx, vy);
+                    if (costsum > Top)
+                        costsum = Top;
+                }
+                costs.push_back(costsum);
+            }
+        ctrIndex = postBinaryConstraint(x->wcspIndex, y->wcspIndex, costs);
+    }
+    assert(ctrIndex > -INT_MAX);
+    delete[] scopeU;
+    delete[] scopeUi;
+    delete[] scopeI;
+    ctr = getCtr(ctrIndex);
+    ctr->propagate();
+    if (ToulBar2::verbose >= 1)
+        cout << endl
+             << "Has result: " << *ctr << endl;
+    return ctr;
+}
+
+void WCSP::project(Constraint*& ctr_inout, EnumeratedVariable* var, Constraint* ctr_copy)
+{
+    if (ctr_inout->getIndex(var) < 0)
+        return;
+    unsigned int vxi, vyi, vzi;
+    int arity = ctr_inout->arity();
+    int truearity = arity;
+    if (arity >= 5) { // n-ary (n>=5) with only 4 unassigned variables is projected on a ternary!
+        truearity = 0;
+        for (int i = 0; i < arity; i++)
+            if (ctr_inout->getVar(i)->unassigned())
+                truearity++;
+        assert(truearity >= 4);
+    }
+
+    if (ToulBar2::verbose >= 1)
+        cout << endl
+             << "Projection of var " << var->wcspIndex << " in ctr: " << *ctr_inout
+             << endl;
+
+    if (truearity - 1 > 3) {
+        if (!ctr_inout->isNary()) {
+            assert(ctr_copy && ctr_copy->isNary());
+            ctr_inout->deconnect();
+            ctr_inout = ctr_copy->copy();
+            ctr_inout->reconnect();
+        }
+        assert(ctr_inout->isNary());
+        ((NaryConstraint*)ctr_inout)->project(var);
+        ctr_inout->propagate();
+        if (ToulBar2::verbose >= 1)
+            cout << endl
+                 << "   has result*: " << *ctr_inout << endl;
+        return;
+    }
+    ctr_inout->deconnect();
+
+    int i, j;
+    int ivars[3];
+    EnumeratedVariable* evars[3];
+
+    j = 0;
+    for (i = 0; i < arity; i++) {
+        EnumeratedVariable* v = (EnumeratedVariable*)ctr_inout->getVar(i);
+        if (v != var && (arity <= 4 || v->unassigned())) {
+            ivars[j] = v->wcspIndex;
+            evars[j] = v;
+            j++;
+        }
+    }
+
+    Constraint* ctr = NULL;
+    Cost Top = MAX_COST; // getUb();
+    int ctrIndex;
+    Tuple t(arity, 0);
+    vector<Cost> costs;
+    Cost negcost = 0;
+
+    switch (truearity - 1) {
+    case 3: {
+        bool isnary = ctr_inout->isNary();
+        if (truearity == 4 && arity >= 5) {
+            for (i = 0; i < arity; i++) {
+                if (ctr_inout->getVar(i)->assigned())
+                    t[ctr_inout->getIndex(ctr_inout->getVar(i))] = ((EnumeratedVariable*)ctr_inout->getVar(i))->toIndex(ctr_inout->getVar(i)->getValue());
+            }
+        }
+        for (vxi = 0; vxi < evars[0]->getDomainInitSize(); vxi++) {
+            for (vyi = 0; vyi < evars[1]->getDomainInitSize(); vyi++) {
+                for (vzi = 0; vzi < evars[2]->getDomainInitSize(); vzi++) {
+                    Value v0 = evars[0]->toValue(vxi);
+                    Value v1 = evars[1]->toValue(vyi);
+                    Value v2 = evars[2]->toValue(vzi);
+                    Cost mincost = Top;
+                    if (evars[0]->canbe(v0) && evars[1]->canbe(v1) && evars[2]->canbe(v2)) {
+                        t[ctr_inout->getIndex(evars[0])] = vxi;
+                        t[ctr_inout->getIndex(evars[1])] = vyi;
+                        t[ctr_inout->getIndex(evars[2])] = vzi;
+
+                        for (EnumeratedVariable::iterator itv = var->begin(); itv != var->end(); ++itv) {
+                            t[ctr_inout->getIndex(var)] = var->toIndex(*itv);
+                            Cost c = ((isnary) ? ((NaryConstraint*)ctr_inout)->eval(t) : ctr_inout->evalsubstr(t, ctr_inout)) + var->getCost(*itv);
+                            if (ToulBar2::isZ)
+                                mincost = LogSumExp(mincost, c);
+                            else if (c < mincost)
+                                mincost = c;
+                        }
+                    }
+                    if (ToulBar2::isZ && mincost < negcost)
+                        negcost = mincost;
+                    costs.push_back(mincost);
+                }
+            }
+        }
+        assert(negcost <= 0);
+        if (negcost < 0) {
+            for (vxi = 0; vxi < evars[0]->getDomainInitSize(); vxi++) {
+                for (vyi = 0; vyi < evars[1]->getDomainInitSize(); vyi++) {
+                    for (vzi = 0; vzi < evars[2]->getDomainInitSize(); vzi++) {
+                        costs[vxi * evars[1]->getDomainInitSize() * evars[2]->getDomainInitSize() + vyi * evars[2]->getDomainInitSize() + vzi] -= negcost;
+                    }
+                }
+            }
+            decreaseLb(negcost);
+        }
+        ctrIndex = postTernaryConstraint(ivars[0], ivars[1], ivars[2], costs);
+        ctr = getCtr(ctrIndex);
+    } break;
+    case 2: {
+        TernaryConstraint* tctr = (TernaryConstraint*)ctr_inout;
+        for (vxi = 0; vxi < evars[0]->getDomainInitSize(); vxi++)
+            for (vyi = 0; vyi < evars[1]->getDomainInitSize(); vyi++) {
+                Value v0 = evars[0]->toValue(vxi);
+                Value v1 = evars[1]->toValue(vyi);
+                Cost mincost = Top;
+                if (evars[0]->canbe(v0) && evars[1]->canbe(v1)) {
+                    for (EnumeratedVariable::iterator itv = var->begin(); itv != var->end(); ++itv) {
+                        Cost c = tctr->getCost(evars[0], evars[1], var, v0, v1, *itv) + var->getCost(*itv);
+                        if (ToulBar2::isZ)
+                            mincost = LogSumExp(mincost, c);
+                        else if (c < mincost)
+                            mincost = c;
+                    }
+                }
+                if (ToulBar2::isZ && mincost < negcost)
+                    negcost = mincost;
+                costs.push_back(mincost);
+            }
+        assert(negcost <= 0);
+        if (negcost < 0) {
+            for (vxi = 0; vxi < evars[0]->getDomainInitSize(); vxi++) {
+                for (vyi = 0; vyi < evars[1]->getDomainInitSize(); vyi++) {
+                    costs[vxi * evars[1]->getDomainInitSize() + vyi] -= negcost;
+                }
+            }
+            decreaseLb(negcost);
+        }
+        ctrIndex = postBinaryConstraint(ivars[0], ivars[1], costs);
+        ctr = getCtr(ctrIndex);
+    } break;
+    case 1: {
+        BinaryConstraint* bctr = ((BinaryConstraint*)ctr_inout);
+        for (vxi = 0; vxi < evars[0]->getDomainInitSize(); vxi++) {
+            Value v0 = evars[0]->toValue(vxi);
+            Cost mincost = Top;
+            if (evars[0]->canbe(v0)) {
+                for (EnumeratedVariable::iterator itv = var->begin(); itv != var->end(); ++itv) {
+                    Cost c = bctr->getCost(evars[0], var, v0, *itv) + var->getCost(*itv);
+                    if (ToulBar2::isZ)
+                        mincost = LogSumExp(mincost, c);
+                    else if (c < mincost)
+                        mincost = c;
+                }
+            }
+            if (ToulBar2::isZ && mincost < negcost)
+                negcost = mincost;
+            costs.push_back(mincost);
+        }
+        assert(negcost <= 0);
+        for (EnumeratedVariable::iterator itv0 = evars[0]->begin(); itv0 != evars[0]->end(); ++itv0) {
+            vxi = evars[0]->toIndex(*itv0);
+            if (costs[vxi] - negcost > MIN_COST)
+                evars[0]->project(*itv0, costs[vxi] - negcost);
+        }
+        evars[0]->findSupport();
+        if (negcost < 0)
+            decreaseLb(negcost);
+    } break;
+    default: {
+        cerr << "Bad resulting cost function arity during generic variable elimination!";
+        exit(EXIT_FAILURE);
+    }
+    }
+    ctr_inout = ctr;
+    if (ctr) {
+        ctr->propagate();
+        if (ToulBar2::verbose >= 1)
+            cout << endl
+                 << "   has result: " << *ctr_inout << endl;
+    }
+}
+
+void WCSP::variableElimination(EnumeratedVariable* var)
+{
+    int degree = var->getTrueDegree();
+    if (ToulBar2::verbose >= 1)
+        cout << endl
+             << "Generic variable elimination of " << var->getName() << "    degree: "
+             << var->getDegree() << " true degree: " << degree << " max elim size: " << var->getMaxElimSize() << endl;
+    if (degree > maxDegree)
+        maxDegree = degree;
+
+    if (var->getDegree() > 0) {
+
+        ConstraintList::iterator it1 = var->getConstrs()->begin();
+        ConstraintList::iterator it2;
+        Constraint* c1 = (*it1).constr;
+        Constraint* c2 = NULL;
+        Constraint* csum = c1;
+        Constraint* csumcopy = NULL;
+
+        while (var->getDegree() > 1) {
+            it1 = var->getConstrs()->begin();
+            it2 = var->getConstrs()->rbegin();
+            c1 = (*it1).constr;
+            c2 = (*it2).constr;
+            csum = sum(c1, c2);
+
+            if (getTreeDec()) {
+                csum->setCluster(var->getCluster());
+            }
+        }
+
+        assert(csum->getIndex(var) >= 0);
+        csumcopy = csum->copy();
+        assert(csumcopy != NULL);
+        elimInfo ei = { var, NULL, NULL, NULL, NULL, NULL, csumcopy };
+        elimInfos[getElimOrder()] = ei;
+        elimOrderInc();
+        elimSpace += csumcopy->space();
+        project(csum, var, csumcopy);
+    } else {
+        if (ToulBar2::isZ) { // add all unary loglike into lowerbound or negCost
+            Cost clogz = MAX_COST;
+            for (EnumeratedVariable::iterator itv = var->begin(); itv != var->end(); ++itv) {
+                clogz = LogSumExp(clogz, var->getCost(*itv));
+            }
+            if (clogz < 0)
+                decreaseLb(clogz);
+            else
+                increaseLb(clogz);
+        }
+    }
+    assert(var->getDegree() == 0);
+
+    var->assign(var->getSupport()); // warning! dummy assigned value
+}
+
+bool WCSP::kconsistency(int xIndex, int yIndex, int zIndex, BinaryConstraint* xy, BinaryConstraint* yz, BinaryConstraint* xz)
+{
+    if ((xIndex == yIndex) || (xIndex == zIndex) || (yIndex == zIndex))
+        return false;
+    EnumeratedVariable* x = (EnumeratedVariable*)vars[xIndex];
+    EnumeratedVariable* y = (EnumeratedVariable*)vars[yIndex];
+    EnumeratedVariable* z = (EnumeratedVariable*)vars[zIndex];
+    TernaryConstraint* tctr = x->getConstr(y, z);
+    if (tctr)
+        return false;
+
+    bool added = false;
+    vector<Cost> costs;
+    Cost ub = getUb();
+    Cost minc = ub;
+    for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+        Value va = x->toValue(a);
+        Cost costa = x->getCost(va);
+        for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+            Value vb = y->toValue(b);
+            Cost costb = y->getCost(vb);
+            for (unsigned int c = 0; c < z->getDomainInitSize(); c++) {
+                Value vc = z->toValue(c);
+                Cost costc = z->getCost(vc);
+                Cost ctuple = ub;
+                if (x->canbe(va) && y->canbe(vb) && z->canbe(vc)) {
+                    ctuple = costa + costb + costc + xy->getCost(x, y, va, vb) + xz->getCost(x, z, va, vc)
+                        + yz->getCost(y, z, vb, vc);
+                }
+                if (ctuple < minc)
+                    minc = ctuple;
+                costs.push_back(ctuple);
+            }
+        }
+    }
+
+    if (minc > MIN_COST) {
+        tctr = new TernaryConstraint(this);
+        elimTernConstrs.push_back(tctr);
+        tctr = newTernaryConstr(x, y, z);
+        tctr->fillElimConstrBinaries();
+        tctr->reconnect();
+        elimTernOrderInc();
+
+        vector<Cost>::iterator it = costs.begin();
+        for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+            Value va = x->toValue(a);
+            Cost costa = x->getCost(va);
+            if (x->canbe(va))
+                x->extend(va, costa);
+            for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+                Value vb = y->toValue(b);
+                Cost costb = y->getCost(vb);
+                if (y->canbe(vb))
+                    y->extend(vb, costb);
+                for (unsigned int c = 0; c < z->getDomainInitSize(); c++) {
+                    Value vc = z->toValue(c);
+                    Cost costc = z->getCost(vc);
+                    if (z->canbe(vc))
+                        z->extend(vc, costc);
+                    if (x->canbe(va) && y->canbe(vb)) {
+                        Cost costab = xy->getCost(x, y, va, vb);
+                        xy->addcost(x, y, va, vb, -costab);
+                    }
+                    if (y->canbe(vb) && z->canbe(vc)) {
+                        Cost costbc = yz->getCost(y, z, vb, vc);
+                        yz->addcost(y, z, vb, vc, -costbc);
+                    }
+                    if (x->canbe(va) && z->canbe(vc)) {
+                        Cost costac = xz->getCost(x, z, va, vc);
+                        xz->addcost(x, z, va, vc, -costac);
+                    }
+                    tctr->setcost(x, y, z, va, vb, vc, *it - minc);
+                    ++it;
+                }
+            }
+        }
+        tctr->projectTernary();
+        increaseLb(minc);
+        if (ToulBar2::verbose >= 1)
+            cout << "new ternary(" << x->wcspIndex << "," << y->wcspIndex << ","
+                 << z->wcspIndex << ")  newDualBound: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << getDDualBound() << std::setprecision(DECIMAL_POINT) << endl;
+        added = true;
+    }
+    return added;
+}
+
+void WCSP::ternaryCompletion()
+{
+    if (numberOfUnassignedVariables() < 3)
+        return;
+
+    Double nbunvars = numberOfUnassignedVariables();
+    Double connectivity = 2. * numberOfConnectedBinaryConstraints() / (nbunvars * (nbunvars - 1));
+    Double domsize = medianDomainSize();
+    Double size = domsize;
+    size = sizeof(StoreCost) * size * size * size * nbunvars * (nbunvars - 1) * (nbunvars - 2) * connectivity * connectivity * connectivity / 6;
+
+    //if (ToulBar2::debug>=2) cout << "MAX ESTIMATED RPC SIZE: " << size << " (" << nbunvars << "," << connectivity <<")" << endl;
+    //if (size > 1024. * 1024. * ToulBar2::preprocessTernaryRPC) {
+    //cout << "Restricted path consistency disabled (" << size/1024./1024. << " >= " << ToulBar2::preprocessTernaryRPC << " MB)" << endl;
+    //ToulBar2::preprocessTernaryRPC = 0;
+    //return;
+    //}
+
+    vector<TripleVarCostSize> triplelist;
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)vars[i];
+        for (ConstraintList::iterator it = x->getConstrs()->begin(); it != x->getConstrs()->end(); ++it) {
+            Constraint* ctr = (*it).constr;
+            if (ctr->isBinary()) {
+                BinaryConstraint* bctr = (BinaryConstraint*)ctr;
+                EnumeratedVariable* y = (EnumeratedVariable*)bctr->getVarDiffFrom(x);
+                if (y->wcspIndex > x->wcspIndex)
+                    for (ConstraintList::iterator it2 = y->getConstrs()->begin(); it2 != y->getConstrs()->end(); ++it2) {
+                        Constraint* ctr2 = (*it2).constr;
+                        if (ctr != ctr2 && ctr2->isBinary()) {
+                            BinaryConstraint* bctr2 = (BinaryConstraint*)ctr2;
+                            EnumeratedVariable* z = (EnumeratedVariable*)bctr2->getVarDiffFrom(y);
+                            if (z->wcspIndex > y->wcspIndex)
+                                for (ConstraintList::iterator it3 = z->getConstrs()->begin(); it3 != z->getConstrs()->end(); ++it3) {
+                                    Constraint* ctr3 = (*it3).constr;
+                                    if (ctr2 != ctr3 && ctr3->isBinary()) {
+                                        BinaryConstraint* bctr3 = (BinaryConstraint*)ctr3;
+                                        EnumeratedVariable* xx = (EnumeratedVariable*)bctr3->getVarDiffFrom(z);
+                                        if (x == xx) {
+                                            // bool added = kconsistency(x->wcspIndex,
+                                            // 		y->wcspIndex, z->wcspIndex, bctr,
+                                            // 		bctr2, bctr3);
+                                            // if (added)
+                                            float tight = bctr->computeTightness() + bctr2->computeTightness() + bctr3->computeTightness();
+                                            long unsigned xsize = x->getDomainInitSize();
+                                            long unsigned ysize = y->getDomainInitSize();
+                                            long unsigned zsize = z->getDomainInitSize();
+                                            TripleVarCostSize tvcs = { x, y, z, tight, xsize * ysize * zsize };
+                                            triplelist.push_back(tvcs);
+                                        }
+                                    }
+                                }
+                        }
+                    }
+            }
+        }
+    }
+
+    Double totalsize = 0.;
+    Double maxsize = 1024. * 1024. * ToulBar2::preprocessTernaryRPC;
+    int ntern = 0;
+
+    sort(triplelist.begin(), triplelist.end());
+    for (vector<TripleVarCostSize>::iterator it = triplelist.begin(); it != triplelist.end(); ++it) {
+        if (totalsize + (Double)sizeof(StoreCost) * it->size <= maxsize) {
+            totalsize += (Double)sizeof(StoreCost) * it->size;
+            vector<Cost> costs(it->size, MIN_COST);
+            postTernaryConstraint(it->x->wcspIndex, it->y->wcspIndex, it->z->wcspIndex, costs);
+            ntern++;
+        }
+    }
+    if (ToulBar2::verbose >= 0)
+        cout << "Added " << ntern << "/" << triplelist.size() << " zero-cost ternary cost functions." << endl;
+}
+
+// -----------------------------------------------------------
+// Methods for Virtual Arc Consistency
+
+void WCSP::histogram(Cost c)
+{
+    if (vac)
+        vac->histogram(c);
+}
+void WCSP::iniSingleton()
+{
+    if (vac)
+        vac->iniSingleton();
+}
+void WCSP::updateSingleton()
+{
+    if (vac)
+        vac->updateSingleton();
+}
+void WCSP::removeSingleton()
+{
+    if (vac)
+        vac->removeSingleton();
+}
+void WCSP::printVACStat()
+{
+    if (vac)
+        vac->printStat();
+}
+
+// -----------------------------------------------------------
+// Methods for Cluster Tree Decomposition
+
+bool WCSP::isAlreadyTreeDec(char* filename)
+{
+    if (filename == NULL || (reinterpret_cast<uintptr_t>(filename) > ELIM_NONE && reinterpret_cast<uintptr_t>(filename) < ELIM_MAX))
+        return false;
+    ifstream file;
+    file.open(filename);
+    if (!file)
+        return false;
+    int clusterid = 0;
+    int parentid = 0;
+    file >> clusterid;
+    if (!file)
+        return false;
+    file >> parentid;
+    file.close();
+    if (parentid == -1)
+        return true;
+    return false;
+}
+
+void WCSP::buildTreeDecomposition()
+{
+    td = new TreeDecomposition(this);
+    double time = cpuTime();
+    if (isAlreadyTreeDec(ToulBar2::varOrder))
+        td->buildFromCovering(ToulBar2::varOrder);
+    else if (ToulBar2::approximateCountingBTD)
+        td->buildFromOrderForApprox();
+    else
+        td->buildFromOrder();
+    if (ToulBar2::verbose >= 0)
+        cout << "Tree decomposition time: " << cpuTime() - time << " seconds." << endl;
+    if (!ToulBar2::approximateCountingBTD) {
+        vector<int> order;
+        td->getElimVarOrder(order);
+        // allows propagation to operate on the whole problem without modifying tree decomposition local lower bounds and delta costs
+        // it is important for RDS-BTD which assumes zero cluster lower bounds and no delta cost moves
+        TreeDecomposition* tmptd = td;
+        td = NULL;
+        setDACOrder(order);
+        td = tmptd;
+        // new constraints may be produced by variable elimination that must be correctly assigned to a cluster
+        for (unsigned int i = 0; i < numberOfConstraints(); i++)
+            if (constrs[i]->getCluster() == -1)
+                constrs[i]->assignCluster();
+        for (int i = 0; i < elimBinOrder; i++)
+            if (elimBinConstrs[i]->connected() && elimBinConstrs[i]->getCluster() == -1)
+                elimBinConstrs[i]->assignCluster();
+        for (int i = 0; i < elimTernOrder; i++)
+            if (elimTernConstrs[i]->connected() && elimTernConstrs[i]->getCluster() == -1)
+                elimTernConstrs[i]->assignCluster();
+        // check if ternary constraint cluster assignments are valid and do corrections if needed
+        for (unsigned int i = 0; i < numberOfConstraints(); i++) {
+            Constraint* ctr = getCtr(i);
+            if (ctr->connected() && !ctr->isSep()) {
+                if (ctr->isTernary()) {
+                    TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                    tctr->setDuplicates();
+                    assert(tctr->xy->getCluster() == tctr->getCluster() && tctr->xz->getCluster() == tctr->getCluster() && tctr->yz->getCluster() == tctr->getCluster());
+                }
+            }
+        }
+        for (int i = 0; i < elimTernOrder; i++)
+            if (elimTernConstrs[i]->connected()) {
+                Constraint* ctr = elimTernConstrs[i];
+                if (ctr->connected() && !ctr->isSep()) {
+                    if (ctr->isTernary()) {
+                        TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                        tctr->setDuplicates();
+                        assert(tctr->xy->getCluster() == tctr->getCluster() && tctr->xz->getCluster() == tctr->getCluster() && tctr->yz->getCluster() == tctr->getCluster());
+                    }
+                }
+            }
+    }
+}
+
+void WCSP::treeDecFile2Vector(char* filename, vector<int>& order)
+{
+    assert(order.size() == 0);
+    map<int, int> clusterIds;
+    int nbclusters = 0;
+
+    set<int> usedvars;
+
+    ifstream file(filename, ios::in);
+    string fstr;
+    while (getline(file, fstr)) {
+        istringstream file(fstr);
+        int num;
+        file >> num;
+        if (!file)
+            break;
+
+        clusterIds[num] = nbclusters;
+        nbclusters++;
+
+        int num_parent;
+        file >> num_parent;
+        assert((num_parent == -1) || (clusterIds.find(num_parent) != clusterIds.end()));
+
+        int v = -1;
+        while (file >> v) {
+            if (usedvars.find(v) == usedvars.end()) {
+                order.push_back(v);
+                usedvars.insert(v);
+            }
+        }
+    }
+    file.close();
+
+    reverse(order.begin(), order.end()); // must return an elimination order, the reverse of a topological order
+
+    if (order.size() != numberOfVariables()) {
+        cerr << "Tree decomposition file does not cover all the variables." << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+void WCSP::elimOrderFile2Vector(char* elimVarOrder, vector<int>& order)
+{
+#ifdef BOOST
+    if (reinterpret_cast<uintptr_t>(elimVarOrder) > ELIM_NONE && reinterpret_cast<uintptr_t>(elimVarOrder) < ELIM_MAX) {
+        switch (reinterpret_cast<uintptr_t>(elimVarOrder)) {
+        case MAX_CARD:
+            maximumCardinalitySearch(order);
+            break;
+        case MIN_DEGREE:
+            minimumDegreeOrdering(order);
+            break;
+        case MIN_FILL:
+            minimumFillInOrdering(order);
+            break;
+        case ELIM_MST:
+            spanningTreeOrderingBGL(order);
+            break;
+        case CUTHILL_MCKEE:
+            reverseCuthillMcKeeOrderingBGL(order);
+            break;
+        case APPROX_MIN_DEGREE:
+            minimumDegreeOrderingBGL(order);
+            break;
+        case ELIM_FILE_ORDER:
+            order.clear();
+            order.reserve(vars.size());
+            for (int i = numberOfVariables() - 1; i >= 0; i--)
+                order.push_back(i);
+            break;
+        default: {
+            cerr << "Variable elimination order " << reinterpret_cast<uintptr_t>(elimVarOrder) << " not implemented yet!" << endl;
+            exit(EXIT_FAILURE);
+        }
+        }
+    } else {
+#endif
+        ifstream file;
+        if (elimVarOrder)
+            file.open(elimVarOrder);
+        if (!elimVarOrder || !file) {
+            if (ToulBar2::verbose >= 1) {
+                cout << "Variable elimination order file missing or unreadable... takes reverse problem file variable index order." << endl;
+            }
+            //		for(unsigned int i=0;i<numberOfVariables();i++) order.push_back(i);
+            for (int i = numberOfVariables() - 1; i >= 0; i--)
+                order.push_back(i);
+        } else {
+            while (file) {
+                int ix;
+                file >> ix;
+                if (file)
+                    order.push_back(ix);
+            }
+        }
+#ifdef BOOST
+    }
+#endif
+    if (order.size() != numberOfVariables()) {
+        cerr << "Variable elimination order file has incorrect number of variables." << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+/// \param order variable elimination order (reverse of DAC order)
+void WCSP::setDACOrder(vector<int>& order)
+{
+    if (order.size() != numberOfVariables()) {
+        cerr << "DAC order has incorrect number of variables." << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    // set DAC order to the inverse of the elimination variable ordering
+    if (ToulBar2::verbose >= 1)
+        cout << "DAC order:";
+    for (int i = order.size() - 1; i >= 0; i--) {
+        if (ToulBar2::verbose >= 1)
+            cout << " " << getVar(order[i])->getName();
+        getVar(order[i])->setDACOrder(order.size() - 1 - i);
+        if (ToulBar2::DEE >= 2)
+            getVar(order[i])->queueDEE();
+    }
+    if (ToulBar2::verbose >= 1)
+        cout << endl;
+
+    sort(divVariables.begin(), divVariables.end(),
+        [](const Variable* v1, const Variable* v2) -> bool {
+            return (v1->getDACOrder() > v2->getDACOrder());
+        });
+
+    for (unsigned int i = 0; i < numberOfConstraints(); i++) {
+        Constraint* ctr = getCtr(i);
+        ctr->setDACScopeIndex();
+        // Postpone global constraint propagation at the end (call to WCSP::propagate())
+        if (ctr->connected() && !ctr->isGlobal() && !ctr->isSep())
+            ctr->propagate();
+    }
+    for (int i = 0; i < elimBinOrder; i++) {
+        Constraint* ctr = elimBinConstrs[i];
+        ctr->setDACScopeIndex();
+        if (ctr->connected())
+            ctr->propagate();
+    }
+    for (int i = 0; i < elimTernOrder; i++) {
+        Constraint* ctr = elimTernConstrs[i];
+        ctr->setDACScopeIndex();
+        if (ctr->connected())
+            ctr->propagate();
+    }
+    propagate();
+    // recompute all tightness: too slow???
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected())
+            constrs[i]->computeTightness();
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            elimBinConstrs[i]->computeTightness();
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            elimTernConstrs[i]->computeTightness();
+}
+
+// -----------------------------------------------------------
+// Functions for dealing with probabilities
+// Warning: ToulBar2::NormFactor has to be initialized
+
+// Converts the decimal Token to a cost and yells if unfeasible.
+// the conversion uses the upper bound precision and ToulBar2::costMultiplier for scaling
+// but does not shift cost using negCost. The input string should not contain white chars.
+
+Cost WCSP::decimalToCost(const string& decimalToken, const unsigned int lineNumber) const
+{
+    size_t dotFound = decimalToken.find('.');
+    size_t readIdx;
+    if (dotFound == std::string::npos) {
+        try {
+            Cost cost = (Cost)std::stoll(decimalToken, &readIdx) * ToulBar2::costMultiplier * (Cost)powl(10, ToulBar2::decimalPoint);
+            if (decimalToken[readIdx])
+                throw std::invalid_argument("Not a cost");
+            return cost;
+        } catch (const std::invalid_argument&) {
+            cerr << "Error: invalid cost '" << decimalToken;
+            if (lineNumber)
+                cerr << "' at line " << lineNumber << endl;
+            else
+                cerr << "' in command line" << endl;
+            exit(1);
+        }
+    }
+
+    bool negative = (decimalToken[0] == '-');
+    string integerPart = (negative ? decimalToken.substr(1, dotFound - 1) : decimalToken.substr(0, dotFound));
+    string decimalPart = decimalToken.substr(dotFound + 1);
+    int shift = ToulBar2::decimalPoint - decimalPart.size();
+
+    Cost cost;
+    try {
+        cost = (std::stoll(integerPart, &readIdx) * (Cost)powl(10, ToulBar2::decimalPoint) * ToulBar2::costMultiplier);
+        if (integerPart[readIdx])
+            throw std::invalid_argument("Not a cost");
+        if (decimalPart.size()) {
+            cost += std::stoll(decimalPart, &readIdx) * (Cost)powl(10, shift) * ToulBar2::costMultiplier;
+            if (decimalPart[readIdx])
+                throw std::invalid_argument("Not a cost");
+        }
+    } catch (const std::invalid_argument&) {
+        cerr << "Error: invalid cost '" << decimalToken;
+        if (lineNumber)
+            cerr << "' at line " << lineNumber << endl;
+        else
+            cerr << "' in command line" << endl;
+        exit(1);
+    }
+    if (negative)
+        cost = -cost;
+    return cost;
+}
+
+Cost WCSP::Prob2Cost(TProb p) const
+{
+    if (p == 0.0)
+        return (MAX_COST - UNIT_COST) / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST;
+    TLogProb res = -Log(p) * ToulBar2::NormFactor;
+    if (res > to_double(MAX_COST)) {
+        cerr << "Overflow when converting probability to cost." << endl;
+        exit(EXIT_FAILURE);
+    }
+    Cost c = (Cost)res;
+    if (c > MAX_COST / 2)
+        return (MAX_COST - UNIT_COST) / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST;
+    return c;
+}
+
+Cost WCSP::LogProb2Cost(TLogProb p) const
+{
+    TLogProb res = -p * ToulBar2::NormFactor;
+    Cost c;
+    if (res > to_double(MAX_COST / 2)) {
+        c = (MAX_COST - UNIT_COST) / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST;
+        //        if (ToulBar2::verbose >= 2) {
+        //            cout << "Warning: converting energy " << -p << " to Top\n";
+        //        }
+    } else
+        c = (Cost)res;
+    return c;
+}
+
+TLogProb WCSP::Cost2LogProb(Cost c) const
+{
+    return -to_double(c) / ToulBar2::NormFactor;
+}
+
+TProb WCSP::Cost2Prob(Cost c) const
+{
+    return Exp(-to_double(c) / ToulBar2::NormFactor);
+}
+
+Cost WCSP::LogSumExp(Cost c1, Cost c2) const // log[exp(c1) + exp(c2)]
+{
+    if (c1 >= MAX_COST / 2)
+        return c2;
+    else if (c2 >= MAX_COST / 2)
+        return c1;
+    else if (c1 == c2)
+        return c1 + LogProb2Cost(Log(2.));
+    else {
+        if (c1 < c2)
+            return c1 + LogProb2Cost(Log1p(Exp(Cost2LogProb(c2 - c1))));
+        else
+            return c2 + LogProb2Cost(Log1p(Exp(Cost2LogProb(c1 - c2))));
+    }
+}
+TLogProb WCSP::LogSumExp(TLogProb logc1, Cost c2) const // log[exp(c1) + exp(c2)]
+{
+    TLogProb logc2 = Cost2LogProb(c2);
+    if (logc1 == -numeric_limits<TLogProb>::infinity())
+        return logc2;
+    else if (c2 >= MAX_COST / 2)
+        return logc1;
+    else {
+        if (logc1 >= logc2)
+            return logc1 + (Log1p(Exp(logc2 - logc1)));
+        else
+            return logc2 + (Log1p(Exp(logc1 - logc2)));
+    }
+}
+
+TLogProb WCSP::LogSumExp(TLogProb logc1, TLogProb logc2) const // log[exp(c1) + exp(c2)]
+{
+    if (logc1 == -numeric_limits<TLogProb>::infinity())
+        return logc2;
+    else if (logc2 == -numeric_limits<TLogProb>::infinity())
+        return logc1;
+    else {
+        if (logc1 >= logc2)
+            return logc1 + (Log1p(Exp(logc2 - logc1)));
+        else
+            return logc2 + (Log1p(Exp(logc1 - logc2)));
+    }
+}
+
+//----------------------------------------
+//procedure when berge acycl constant are present in the problem
+// toulbar2::Berge_Dec has to be initialized > 0;
+
+void WCSP::visit(int i, vector<int>& revdac, vector<bool>& marked, const vector<vector<int>>& listofsuccessors)
+{
+    marked[i] = true;
+    for (unsigned int j = 0; j < listofsuccessors[i].size(); j++) {
+        //   for (int  j = listofsuccessors[i].size()-1 ; j >= 0 ; j--) {
+        if (!marked[listofsuccessors[i][j]])
+            visit(listofsuccessors[i][j], revdac, marked, listofsuccessors);
+    }
+    revdac.push_back(i);
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/core/tb2wcsp.hpp b/code/include/tb2/core/tb2wcsp.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..68f5286c4439e7c1b26fbf6a7879fa77de2b7b56
--- /dev/null
+++ b/code/include/tb2/core/tb2wcsp.hpp
@@ -0,0 +1,796 @@
+/** \file tb2wcsp.hpp
+ *  \brief Weighted constraint satisfaction problem modeling and local reasoning
+ *
+ */
+
+#ifndef TB2WCSP_HPP_
+#define TB2WCSP_HPP_
+
+#include "toulbar2lib.hpp"
+#include "tb2variable.hpp"
+#include "tb2constraint.hpp"
+#include "tb2enumvar.hpp"
+#include "tb2intervar.hpp"
+#include "search/tb2solver.hpp"
+
+class NaryConstraint;
+class GlobalConstraint;
+class FlowBasedGlobalConstraint;
+class AllDiffConstraint;
+class GlobalCardinalityConstraint;
+class SameConstraint;
+class RegularFlowConstraint;
+
+/** Concrete class WCSP containing a weighted constraint satisfaction problem
+ *	- problem lower and upper bound
+ *	- list of variables
+ *	- list of cost functions (created before and during search by variable elimination) composed of constrs, elimBinConstrs, and elimTernConstrs
+ *	- propagation queues (variable-based except for separators)
+ *	- data for bounded variable elimination during search (limited to degree at most two)
+ *
+ * \note In most WCSP member functions, variables are referenced by their lexicographic index number (position in WCSP::vars vector, as returned by \e eg WCSP::makeEnumeratedVariable)
+ *
+ */
+
+class WCSP FINAL : public WeightedCSP {
+    static int wcspCounter; ///< count the number of instances of WCSP class
+    int instance; ///< instance number
+    string name; ///< problem name
+    void* solver; ///< special hook to access solver information
+    StoreCost lb; ///< current problem lower bound
+    Cost ub; ///< current problem upper bound
+    StoreCost negCost; ///< shifting value to be added to problem lowerbound when computing the partition function
+    vector<Variable*> vars; ///< list of all variables
+    vector<Variable*> divVariables; ///< list of variables submitted to diversity requirements
+    vector<map<int, int>> divVarsId; // vector[j][idx] = index of the dual variable that encodes the diversity constraint on sol j at position idx
+    vector<map<int, int>> divHVarsId; // vector[j][idx] = index of the hidden variable that encodes the diversity constraint on sol j between idx/idx+1
+    vector<Value> bestValues; ///< hint for some value ordering heuristics (ONLY used by RDS)
+    vector<Value> solution; ///< remember last solution found
+    vector<pair<Double, vector<Value>>> solutions; ///< remember all solutions found
+    Cost solutionCost; ///< and its cost
+    vector<Constraint*> constrs; ///< list of original cost functions
+    int NCBucketSize; ///< number of buckets for NC bucket sort
+    vector<VariableList> NCBuckets; ///< NC buckets: vector of backtrackable lists of variables
+    Queue NC; ///< NC queue (non backtrackable list)
+    Queue IncDec; ///< BAC queue (non backtrackable list)
+    Queue AC; ///< AC queue (non backtrackable list)
+    Queue DAC; ///< DAC queue (non backtrackable list)
+    Queue EAC1; ///< EAC intermediate queue (non backtrackable list)
+    Queue EAC2; ///< EAC queue (non backtrackable list)
+    Queue Eliminate; ///< Variable Elimination queue (non backtrackable list)
+    Queue FEAC; ///< FullEAC queue (non backtrackable list)
+    SeparatorList PendingSeparator; ///< List of pending separators for BTD-like methods (backtrackable list)
+    Queue DEE; ///< Dead-End Elimination queue (non backtrackable list)
+    bool objectiveChanged; ///< flag if lb or ub has changed (NC propagation needs to be done)
+    Long nbNodes; ///< current number of calls to propagate method (roughly equal to number of search nodes), used as a time-stamp by Queue methods
+    Long nbDEE; ///< number of value removals due to DEE
+    Constraint* lastConflictConstr; ///< hook for last conflict variable heuristic
+    int maxdomainsize; ///< maximum initial domain size found in all variables
+    vector<GlobalConstraint*> globalconstrs; ///< a list of all original global constraints (also inserted in constrs)
+    vector<int> delayedNaryCtr; ///< a list of all original nary constraints in extension (also inserted in constrs)
+    bool isDelayedNaryCtr; ///< postpone naryctr propagation after all variables have been created
+    vector<vector<int>> listofsuccessors; ///< list of topologic order of var used when q variables are  added for decomposing global constraint (berge acyclic)
+    StoreInt isPartOfOptimalSolution; ///< true if the current assignment belongs to an optimal solution recorded into bestValues
+
+    // make it private because we don't want copy nor assignment
+    WCSP(const WCSP& wcsp);
+    WCSP& operator=(const WCSP& wcsp);
+    friend class CFNStreamReader;
+    friend class VACExtension;
+
+public:
+    /// \brief variable elimination information used in backward phase to get a solution during search
+    /// \warning restricted to at most two neighbor variables
+    typedef struct {
+        EnumeratedVariable* x; ///< eliminated variable
+        EnumeratedVariable* y; ///< first neighbor variable if any
+        EnumeratedVariable* z; ///< second neighbor variable if any
+        BinaryConstraint* xy; ///< corresponding binary cost function if any
+        BinaryConstraint* xz; ///< corresponding binary cost function if any
+        TernaryConstraint* xyz; ///< corresponding ternary cost function if any
+        Constraint* ctr; ///< corresponding sum/join cost function if using generic variable elimination
+    } elimInfo;
+
+    /// \brief used for preprocesssTernary to make a list of potential ternary constraints with assciated information
+    struct TripleVarCostSize {
+        EnumeratedVariable* x;
+        EnumeratedVariable* y;
+        EnumeratedVariable* z;
+        float meancost;
+        long unsigned int size;
+
+        bool operator<(const TripleVarCostSize& a) const
+        {
+            return (meancost) > (a.meancost);
+        }
+    };
+
+    StoreInt elimOrder; ///< current number of eliminated variables
+    vector<elimInfo> elimInfos; ///< variable elimination information used in backward phase to get a solution
+    StoreInt elimBinOrder; ///< current number of extra binary cost functions consumed in the corresponding pool
+    StoreInt elimTernOrder; ///< current number of extra ternary cost functions consumed in the corresponding pool
+    vector<Constraint*> elimBinConstrs; ///< pool of (fresh) binary cost functions
+    vector<Constraint*> elimTernConstrs; ///< pool of (fresh) ternary cost functions
+    int maxDegree; ///< maximum degree of eliminated variables found in preprocessing
+    Long elimSpace; ///< estimate of total space required for generic variable elimination
+
+    VACExtension* vac; ///< link to VAC management system
+
+#ifdef XMLFLAG
+    map<int, int> varsDom; ///< structures for solution translation: we don't have to parse the XML file again
+    vector<vector<int>> Doms; ///< structures for solution translation: we don't have to parse the XML file again
+#endif
+
+    WCSP(Cost upperBound, void* solver = NULL);
+
+    virtual ~WCSP();
+
+    // -----------------------------------------------------------
+    // General API for weighted CSP global constraint
+
+    int getIndex() const { return instance; } ///< \brief instantiation occurrence number of current WCSP object
+    string getName() const { return (name.size()>0)?name:"problem"; }
+    void setName(const string& problem) { name = problem; }
+    void* getSolver() const { return solver; }
+
+    Cost getLb() const { return lb; } ///< \brief gets problem internal lower bound
+    Cost getUb() const { return ub; } ///< \brief gets problem internal upper bound
+
+    Double getDDualBound() const { return Cost2ADCost(lb); } ///< \brief gets problem dual bound as a Double representing a decimal cost (upper resp. lower bound for minimization resp. maximization)
+    Double getDPrimalBound() const { return Cost2ADCost(ub); } ///< \brief gets problem primal bound as a Double representing a decimal cost (lower resp. upper bound for minimization resp. maximization)
+
+    Double getDUb() const { return (ToulBar2::costMultiplier < 0 ? Cost2ADCost(lb) : Cost2ADCost(ub)); } ///< \brief gets problem upper bound as a Double representing a decimal cost
+    Double getDLb() const { return (ToulBar2::costMultiplier < 0 ? Cost2ADCost(ub) : Cost2ADCost(lb)); } ///< \brief gets problem lower bound as a Double representing a decimal cost
+
+    void setLb(Cost newLb) { lb = newLb; } ///< \internal sets problem lower bound
+    void setUb(Cost newUb) { ub = newUb; } ///< \internal sets problem upper bound
+
+    /// \brief sets problem upper bound when a new solution is found
+    /// \warning side-effect: adjusts maximum number of buckets (see \ref ncbucket) if called before adding variables to a problem
+    void updateUb(Cost newUb)
+    {
+        if (newUb < ub) {
+            ub = newUb;
+            if (vars.size() == 0)
+                NCBucketSize = cost2log2gub(ub) + 1;
+        }
+    }
+
+    /// \brief enforces problem upper bound when exploring an alternative search node
+    void enforceUb()
+    {
+        if (CUT((Cost)lb, ub))
+            THROWCONTRADICTION;
+        objectiveChanged = true;
+    }
+
+    /// \brief sets problem upper bound and asks for propagation
+    /// \deprecated
+    void decreaseUb(Cost newUb)
+    {
+        if (newUb < ub) {
+            if (CUT((Cost)lb, newUb))
+                THROWCONTRADICTION;
+            ub = newUb;
+            objectiveChanged = true;
+        }
+    }
+
+    /// \brief increases problem lower bound thanks to \e eg soft local consistencies
+    /// \param addLb increment value to be \b added to the problem lower bound
+    void increaseLb(Cost addLb)
+    {
+        assert(addLb >= MIN_COST);
+        if (addLb > MIN_COST) {
+            //		   incWeightedDegree(addLb);
+            Cost newLb = lb + addLb;
+            if (CUT(newLb, ub))
+                THROWCONTRADICTION;
+            lb = newLb;
+            objectiveChanged = true;
+            if (ToulBar2::setminobj)
+                (*ToulBar2::setminobj)(getIndex(), -1, newLb, getSolver());
+        }
+    }
+
+    /// \brief computes the worst-case assignment finite cost (sum of maximum finite cost over all cost functions)
+    /// \return the worst-case assignment finite cost plus one
+    /// \warning current problem should be completely loaded before calling this function
+    Cost finiteUb() const;
+
+    /// \brief updates infinite costs in all cost functions accordingly to the problem global lower and upper bounds
+    /// \warning to be used in preprocessing only
+    void setInfiniteCost();
+
+    void decreaseLb(Cost cost)
+    {
+        negCost += cost;
+    } ///< \internal manages negative costs in probabilistic inference
+    Cost getNegativeLb() const { return negCost; } ///< \internal manages negative costs in probabilistic inference
+
+    bool enumerated(int varIndex) const { return vars[varIndex]->enumerated(); } ///< \brief true if the variable has an enumerated domain
+
+    string getName(int varIndex) const { return vars[varIndex]->getName(); } ///< \note by default, variables names are integers, starting at zero
+    unsigned int getVarIndex(const string& s) const { int i = std::distance(vars.begin(), find_if(vars.begin(), vars.end(), [&s](const Variable *var){return (var->getName()==s);})); assert (i >= 0); return static_cast<unsigned>(i); }
+    Value getInf(int varIndex) const { return vars[varIndex]->getInf(); } ///< \brief minimum current domain value
+    Value getSup(int varIndex) const { return vars[varIndex]->getSup(); } ///< \brief maximum current domain value
+    Value getValue(int varIndex) const { return vars[varIndex]->getValue(); } ///< \brief current assigned value \warning undefined if not assigned yet
+    unsigned int getDomainSize(int varIndex) const { return vars[varIndex]->getDomainSize(); } ///< \brief current domain size
+    vector<Value> getEnumDomain(int varIndex)
+    {
+        vector<Value> array(getDomainSize(varIndex));
+        assert(enumerated(varIndex));
+        getEnumDomain(varIndex, array.data());
+        return array;
+    }
+    bool getEnumDomain(int varIndex, Value* array);
+    vector<pair<Value, Cost>> getEnumDomainAndCost(int varIndex)
+    {
+        vector<pair<Value, Cost>> array(getDomainSize(varIndex));
+        assert(enumerated(varIndex));
+        getEnumDomainAndCost(varIndex, (ValueCost*)array.data());
+        return array;
+    }
+    bool getEnumDomainAndCost(int varIndex, ValueCost* array);
+    unsigned int getDomainInitSize(int varIndex) const
+    {
+        assert(vars[varIndex]->enumerated());
+        return ((EnumeratedVariable*)vars[varIndex])->getDomainInitSize();
+    } ///< \brief gets initial domain size (warning! assumes EnumeratedVariable)
+    Value toValue(int varIndex, unsigned int idx)
+    {
+        assert(vars[varIndex]->enumerated());
+        return ((EnumeratedVariable*)vars[varIndex])->toValue(idx);
+    } ///< \brief gets value from index (warning! assumes EnumeratedVariable)
+    unsigned int toIndex(int varIndex, Value value)
+    {
+        assert(vars[varIndex]->enumerated());
+        return ((EnumeratedVariable*)vars[varIndex])->toIndex(value);
+    } ///< \brief gets index from value (warning! assumes EnumeratedVariable)
+    unsigned int toIndex(int varIndex, const string& valueName)
+    {
+        assert(vars[varIndex]->enumerated());
+        return ((EnumeratedVariable*)vars[varIndex])->toIndex(valueName);
+    }///< \brief gets index from value name (warning! assumes EnumeratedVariable)
+    int getDACOrder(int varIndex) const { return vars[varIndex]->getDACOrder(); } ///< \brief index of the variable in the DAC variable ordering
+    void updateCurrentVarsId(); ///< \brief determines the position of each variable in the current list of unassigned variables (see \ref WCSP::dump)
+
+    bool assigned(int varIndex) const { return vars[varIndex]->assigned(); }
+    bool unassigned(int varIndex) const { return vars[varIndex]->unassigned(); }
+    bool canbe(int varIndex, Value v) const { return vars[varIndex]->canbe(v); }
+    bool cannotbe(int varIndex, Value v) const { return vars[varIndex]->cannotbe(v); }
+    Value nextValue(int varIndex, Value v) const
+    {
+        if (enumerated(varIndex)) {
+            EnumeratedVariable::iterator iter = ((EnumeratedVariable*)vars[varIndex])->lower_bound(v + 1);
+            if (iter != ((EnumeratedVariable*)vars[varIndex])->end())
+                return *iter;
+            else
+                return v;
+        } else {
+            IntervalVariable::iterator iter = ((IntervalVariable*)vars[varIndex])->lower_bound(v + 1);
+            if (iter != ((IntervalVariable*)vars[varIndex])->end())
+                return *iter;
+            else
+                return v;
+        }
+    }
+
+    void increase(int varIndex, Value newInf) { vars[varIndex]->increase(newInf, true); } ///< \brief changes domain lower bound
+    void decrease(int varIndex, Value newSup) { vars[varIndex]->decrease(newSup, true); } ///< \brief changes domain upper bound
+    void assign(int varIndex, Value newValue) { vars[varIndex]->assign(newValue, true); } ///< \brief assigns a variable and immediately propagates this assignment
+    void remove(int varIndex, Value remValue) { vars[varIndex]->remove(remValue, true); } ///< \brief removes a domain value
+
+    /// \brief assigns a set of variables at once and propagates
+    /// \param varIndexes vector of variable indexes as returned by makeXXXVariable
+    /// \param newValues vector of values to be assigned to the corresponding variables
+    /// \param force boolean if true then apply assignLS even if the variable is already assigned
+    /// \note this function is equivalent but faster than a sequence of \ref WCSP::assign. it is particularly useful for Local Search methods such as Large Neighborhood Search.
+    void assignLS(vector<int>& varIndexes, vector<Value>& newValues, bool force = false)
+    {
+        assert(varIndexes.size() == newValues.size());
+        unsigned int size = varIndexes.size();
+        assignLS((size > 0) ? &varIndexes[0] : NULL, (size > 0) ? &newValues[0] : NULL, size, true, force);
+    }
+
+    void assignLS(int* varIndexes, Value* newValues, unsigned int size, bool dopropagate, bool force = false)
+    {
+        ConstraintSet delayedctrs;
+        for (unsigned int i = 0; i < size; i++)
+            vars[varIndexes[i]]->assignLS(newValues[i], delayedctrs, force);
+        for (ConstraintSet::iterator it = delayedctrs.begin(); it != delayedctrs.end(); ++it)
+            if (!(*it)->isGlobal()) {
+                if ((*it)->isSep())
+                    (*it)->assigns();
+                else
+                    (*it)->propagate();
+            }
+        if (dopropagate)
+            propagate();
+    }
+
+    Cost getUnaryCost(int varIndex, Value v) const { return vars[varIndex]->getCost(v); } ///< \brief unary cost associated to a domain value
+    Cost getMaxUnaryCost(int varIndex) const { return vars[varIndex]->getMaxCost(); } ///< \brief maximum unary cost in the domain
+    Value getMaxUnaryCostValue(int varIndex) const { return vars[varIndex]->getMaxCostValue(); } ///< \brief a value having the maximum unary cost in the domain
+    Value getSupport(int varIndex) const { return vars[varIndex]->getSupport(); } ///< \brief unary (NC/EAC) support value
+    Value getBestValue(int varIndex) const { return bestValues[varIndex]; } ///< \brief hint for some value ordering heuristics (ONLY used by RDS)
+    void setBestValue(int varIndex, Value v) { bestValues[varIndex] = v; } ///< \brief hint for some value ordering heuristics (ONLY used by RDS)
+    bool getIsPartOfOptimalSolution() { return (isPartOfOptimalSolution != 0); } ///< \brief special flag used for debugging purposes only
+    void setIsPartOfOptimalSolution(bool v) { isPartOfOptimalSolution = (v ? 1 : 0); } ///< \brief special flag used for debugging purposes only
+
+    int getDegree(int varIndex) const { return vars[varIndex]->getDegree(); } ///< \brief approximate degree of a variable (\e ie number of active cost functions, see \ref varelim)
+    int getTrueDegree(int varIndex) const { return vars[varIndex]->getTrueDegree(); } ///< \brief degree of a variable
+    Long getWeightedDegree(int varIndex) const { return vars[varIndex]->getWeightedDegree(); } ///< \brief weighted degree heuristic
+    void resetWeightedDegree(int varIndex) { vars[varIndex]->resetWeightedDegree(); } ///< \brief initialize weighted degree heuristic
+    void revise(Constraint* c) { lastConflictConstr = c; } ///< \internal last conflict heuristic
+    /// \internal last conflict heuristic
+    void conflict()
+    {
+        if (lastConflictConstr) {
+            if (ToulBar2::verbose >= 2)
+                cout << "Last conflict on " << *lastConflictConstr << endl;
+            lastConflictConstr->incConflictWeight(lastConflictConstr);
+            lastConflictConstr = NULL;
+        }
+    }
+    /// \internal \deprecated
+    void incWeightedDegree(Long incval)
+    {
+        if (lastConflictConstr) {
+            lastConflictConstr->incConflictWeight(incval);
+        }
+    }
+
+    //  set<int> lastConflictSet;
+    //  set<int> getLastConflicts(){
+    //      return lastConflictSet;
+    //  };
+    //  void registerConflicts(){
+    //      lastConflictSet=getConflictVars();
+    //  };
+    //  set<int> getConflictVars(){
+    //      set<int> conflictvar;
+    //      for(vector<Constraint*>::iterator it = constrs.begin();it!=constrs.end();++it)
+    //      {
+    //          if((*it)->getCost() > MIN_COST) // Warning!!! It should test initial costs (or without propagation)
+    //          {
+    //              TSCOPE s;
+    //              (*it)->getScope(s);
+    //              for(TSCOPE::iterator it2=s.begin(); it2!= s.end();++it2)
+    //                  conflictvar.insert((*it2).first);
+    //          }
+    //      }
+    //      return conflictvar;
+    //  }
+
+    void whenContradiction(); ///< \brief after a contradiction, resets propagation queues and increases \ref WCSP::nbNodes
+    void propagate(); ///< \brief propagates until a fix point is reached (or throws a contradiction) and then increases \ref WCSP::nbNodes
+    bool verify(); ///< \brief checks the propagation fix point is reached \warning might change EAC supports
+
+    unsigned int numberOfVariables() const { return vars.size(); } ///< \brief current number of created variables
+    /// \brief returns current number of unassigned variables
+    unsigned int numberOfUnassignedVariables() const
+    {
+        int res = 0;
+        for (unsigned int i = 0; i < vars.size(); i++)
+            if (unassigned(i))
+                res++;
+        return res;
+    }
+    unsigned int numberOfConstraints() const { return constrs.size(); } ///< \brief initial number of cost functions
+    unsigned int numberOfConnectedConstraints() const; ///< \brief current number of cost functions
+    unsigned int numberOfConnectedBinaryConstraints() const; ///< \brief current number of binary cost functions
+    unsigned int medianDomainSize() const; ///< \brief median current domain size of variables
+    unsigned int medianDegree() const; ///< \brief median current degree of variables
+    unsigned int medianArity() const; ///< \brief median arity of current cost functions
+    int getMaxDomainSize() const { return maxdomainsize; } ///< \brief maximum initial domain size found in all variables
+    int getMaxCurrentDomainSize() const; ///< \brief maximum current domain size found in all variables
+    unsigned int getDomainSizeSum() const; ///< \brief total sum of current domain sizes
+    /// \brief Cartesian product of current domain sizes
+    /// \param cartesianProduct result obtained by the GNU Multiple Precision Arithmetic Library GMP
+    void cartProd(BigInteger& cartesianProduct)
+    {
+        for (vector<Variable*>::iterator it = vars.begin(); it != vars.end(); it++) {
+            Variable* x = *it;
+            mpz_mul_si(cartesianProduct.integer, cartesianProduct.integer, x->getDomainSize());
+        }
+    }
+#ifdef BOOST
+    int diameter();
+    int connectedComponents();
+    int biConnectedComponents();
+    void minimumDegreeOrderingBGL(vector<int>& order);
+    void spanningTreeOrderingBGL(vector<int>& order);
+    void reverseCuthillMcKeeOrderingBGL(vector<int>& order);
+    void maximumCardinalitySearch(vector<int>& order);
+    void minimumFillInOrdering(vector<int>& order);
+    void minimumDegreeOrdering(vector<int>& order);
+#endif
+
+    int makeEnumeratedVariable(string n, Value iinf, Value isup);
+    int makeEnumeratedVariable(string n, Value* d, int dsize);
+    void addValueName(int xIndex, const string& name);
+    int makeIntervalVariable(string n, Value iinf, Value isup);
+
+    void postNullaryConstraint(Double cost);
+    void postNullaryConstraint(Cost cost);
+    void postUnary(int xIndex, vector<Cost>& costs);
+    int postUnary(int xIndex, Value* d, int dsize, Cost penalty);
+    void postUnaryConstraint(int xIndex, vector<Double>& costs, bool incremental = false);
+    void postUnaryConstraint(int xIndex, vector<Cost>& costs) { postUnary(xIndex, costs); }
+    void postIncrementalUnaryConstraint(int xIndex, vector<Cost>& costs) { postUnary(xIndex, costs); }
+    int postUnaryConstraint(int xIndex, Value* d, int dsize, Cost penalty) { return postUnary(xIndex, d, dsize, penalty); }
+    int postSupxyc(int xIndex, int yIndex, Value cst, Value deltamax = MAX_VAL - MIN_VAL);
+    int postDisjunction(int xIndex, int yIndex, Value cstx, Value csty, Cost penalty);
+    int postSpecialDisjunction(int xIndex, int yIndex, Value cstx, Value csty, Value xinfty, Value yinfty, Cost costx, Cost costy);
+    int postBinaryConstraint(int xIndex, int yIndex, vector<Double>& costs, bool incremental = false);
+    int postBinaryConstraint(int xIndex, int yIndex, vector<Cost>& costs);
+    int postIncrementalBinaryConstraint(int xIndex, int yIndex, vector<Cost>& costs);
+    int postTernaryConstraint(int xIndex, int yIndex, int zIndex, vector<Double>& costs, bool incremental = false);
+    int postTernaryConstraint(int xIndex, int yIndex, int zIndex, vector<Cost>& costs);
+    int postIncrementalTernaryConstraint(int xIndex, int yIndex, int zIndex, vector<Cost>& costs);
+    int postNaryConstraintBegin(vector<int>& scope, Cost defval, Long nbtuples = 0, bool forcenary = false) { return postNaryConstraintBegin(scope.data(), scope.size(), defval, nbtuples, forcenary); }
+    int postNaryConstraintBegin(int* scopeIndex, int arity, Cost defval, Long nbtuples = 0, bool forcenary = false); /// \warning must call postNaryConstraintEnd after giving cost tuples ; \warning it may create a WeightedClause instead of NaryConstraint
+    void postNaryConstraintTuple(int ctrindex, vector<Value>& tuple, Cost cost) { postNaryConstraintTuple(ctrindex, tuple.data(), tuple.size(), cost); }
+    void postNaryConstraintTuple(int ctrindex, Value* tuple, int arity, Cost cost);
+    void postNaryConstraintTuple(int ctrindex, const Tuple& tuple, Cost cost);
+    void postNaryConstraintEnd(int ctrindex);
+
+    // -----------------------------------------------------------
+    // Methods for diverse solutions
+    // -----------------------------------------------------------
+
+    void addDivConstraint(const vector<Value> solution, int sol_id, Cost cost); // to look for the (j+1)-th solution, with j = sol_id
+    void addHDivConstraint(const vector<Value> solution, int sol_id, Cost cost);
+    void addTDivConstraint(const vector<Value> solution, int sol_id, Cost cost);
+    void addMDDConstraint(Mdd mdd, int relaxed);
+    void addHMDDConstraint(Mdd mdd, int relaxed);
+    void addTMDDConstraint(Mdd mdd, int relaxed);
+
+    const vector<Variable*>& getDivVariables()
+    {
+        return divVariables;
+    }
+
+    int postCliqueConstraint(vector<int>& scope, const string& arguments)
+    {
+        istringstream file(arguments);
+        return postCliqueConstraint(scope.data(), scope.size(), file);
+    }
+    int postCliqueConstraint(int* scopeIndex, int arity, istream& file);
+
+    int postKnapsackConstraint(vector<int>& scope, const string& arguments)
+    {
+        istringstream file(arguments);
+        return postKnapsackConstraint(scope.data(), scope.size(), file);
+    }
+    int postKnapsackConstraint(int* scopeIndex, int arity, istream& file);
+    int postGlobalConstraint(int* scopeIndex, int arity, const string& gcname, istream& file, int* constrcounter = NULL, bool mult = true); ///< \deprecated should use WCSP::postGlobalCostFunction instead \warning does not work for arity below 4 (use binary or ternary cost functions instead)
+
+    GlobalConstraint* postGlobalCostFunction(int* scopeIndex, int arity, const string& name, int* constrcounter = NULL);
+
+    int postWAmong(vector<int>& scope, const string& semantics, const string& propagator, Cost baseCost, const vector<Value>& values, int lb, int ub) { return postWAmong(scope.data(), scope.size(), semantics, propagator, baseCost, values, lb, ub); } ///< \brief post a soft among cost function
+    int postWAmong(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost, const vector<Value>& values, int lb, int ub); ///< \deprecated
+    void postWAmong(int* scopeIndex, int arity, string semantics, Cost baseCost, Value* values, int nbValues, int lb, int ub); ///< \deprecated post a weighted among cost function decomposed as a cost function network
+    void postWVarAmong(vector<int>& scope, const string& semantics, Cost baseCost, vector<Value>& values, int varIndex) { postWVarAmong(scope.data(), scope.size(), semantics, baseCost, values.data(), values.size(), varIndex); } ///< \brief post a weighted among cost function with the number of values encoded as a variable with index \a varIndex (\e network-based propagator only)
+    void postWVarAmong(int* scopeIndex, int arity, const string& semantics, Cost baseCost, Value* values, int nbValues, int varIndex); ///< \deprecated
+    int postWRegular(vector<int>& scope, const string& semantics, const string& propagator, Cost baseCost,
+        int nbStates,
+        const vector<WeightedObjInt>& initial_States,
+        const vector<WeightedObjInt>& accepting_States,
+        const vector<DFATransition>& Wtransitions) { return postWRegular(scope.data(), scope.size(), semantics, propagator, baseCost, nbStates, initial_States, accepting_States, Wtransitions); } ///< \brief post a soft or weighted regular cost function
+    int postWRegular(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+        int nbStates,
+        const vector<WeightedObjInt>& initial_States,
+        const vector<WeightedObjInt>& accepting_States,
+        const vector<DFATransition>& Wtransitions); ///< \deprecated
+    void postWRegular(int* scopeIndex, int arity, int nbStates, vector<pair<int, Cost>> initial_States, vector<pair<int, Cost>> accepting_States, int** Wtransitions, vector<Cost> transitionsCosts); ///< \deprecated post a weighted regular cost function decomposed as a cost function network
+    int postWAllDiff(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost); ///< \brief post a soft alldifferent cost function
+    void postWAllDiff(int* scopeIndex, int arity, string semantics, Cost baseCost); ///< \deprecated post a soft alldifferent cost function decomposed as a cost function network
+    int postWGcc(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+        const vector<BoundedObjValue>& values); ///< \brief post a soft global cardinality cost function
+    void postWGcc(int* scopeIndex, int arity, string semantics, Cost baseCost, Value* values, int nbValues, int* lb, int* ub); ///< \deprecated post a soft global cardinality cost function decomposed as a cost function network
+    int postWSame(int* scopeIndexG1, int arityG1, int* scopeIndexG2, int arityG2, const string& semantics, const string& propagator, Cost baseCost); ///< \brief post a soft same cost function (a group of variables being a permutation of another group with the same size)
+    void postWSame(int* scopeIndex, int arity, string semantics, Cost baseCost); ///< \deprecated post a soft same cost function
+    void postWSameGcc(int* scopeIndex, int arity, string semantics, Cost baseCost, Value* values, int nbValues, int* lb, int* ub); ///< \brief post a combination of a same and gcc cost function decomposed as a cost function network
+    int postWGrammarCNF(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+        int nbSymbols,
+        int startSymbol,
+        const vector<CFGProductionRule> WRuleToTerminal); ///< \brief post a soft/weighted grammar cost function with the dynamic programming propagator and grammar in Chomsky normal form
+    int postMST(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost); ///< \brief post a Spanning Tree hard constraint
+    int postMaxWeight(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+        const vector<WeightedVarValPair> weightFunction); ///< \brief post a weighted max cost function (maximum cost of a set of unary cost functions associated to a set of variables)
+    void postWSum(int* scopeIndex, int arity, string semantics, Cost baseCost, string comparator, int rightRes); ///< \brief post a soft linear constraint with unit coefficients
+    void postWVarSum(int* scopeIndex, int arity, string semantics, Cost baseCost, string comparator, int varIndex); ///< \brief post a soft linear constraint with unit coefficients and variable right-hand side
+    void postWOverlap(int* scopeIndex, int arity, string semantics, Cost baseCost, string comparator, int rightRes); /// \brief post a soft overlap cost function (a group of variables being point-wise equivalent -- and not equal to zero -- to another group with the same size)
+
+    bool isGlobal() { return (globalconstrs.size() > 0); } ///< \brief true if there are soft global cost functions defined in the problem
+
+    Cost read_wcsp(const char* fileName); ///< \brief load problem in any of all formats managed by tb2. Return the global UB known to the solver at start (file and command line).
+    void read_uai2008(const char* fileName); ///< \brief load problem in UAI 2008 format (see http://graphmod.ics.uci.edu/uai08/FileFormat and http://www.cs.huji.ac.il/project/UAI10/fileFormat.php) \warning UAI10 evidence file format not recognized by toulbar2 as it does not allow multiple evidence (you should remove the first value in the file)
+    void read_random(int n, int m, vector<int>& p, int seed, bool forceSubModular = false, string globalname = ""); ///< \brief create a random WCSP with \e n variables, domain size \e m, array \e p where the first element is a percentage of tuples with a nonzero cost and next elements are the number of random cost functions for each different arity (starting with arity two), random seed, a flag to have a percentage (last element in the array \e p) of the binary cost functions being permutated submodular, and a string to use a specific global cost function instead of random cost functions in extension
+    void read_wcnf(const char* fileName); ///< \brief load problem in (w)cnf format (see http://www.maxsat.udl.cat/08/index.php?disp=requirements)
+    void read_qpbo(const char* fileName); ///< \brief load quadratic pseudo-Boolean optimization problem in unconstrained quadratic programming text format (first text line with n, number of variables and m, number of triplets, followed by the m triplets (x,y,cost) describing the sparse symmetric nXn cost matrix with variable indexes such that x <= y and any positive or negative real numbers for costs)
+    void read_opb(const char* fileName); ///< \brief load pseudo-Boolean optimization problem
+    void read_legacy(const char* fileName); ///< \brief common ending section for all readers
+
+    void read_XML(const char* fileName); ///< \brief load problem in XML format (see http://www.cril.univ-artois.fr/~lecoutre/benchmarks.html)
+    void solution_XML(bool opt = false); ///< \brief output solution in Max-CSP 2008 output format
+    void solution_UAI(Cost res); ///< \brief output solution in UAI 2008 output format
+
+    const vector<Value> getSolution() { return solution; }
+    Double getSolutionValue() const { return Cost2ADCost(solutionCost); }
+    Cost getSolutionCost() const { return solutionCost; }
+    const vector<Value> getSolution(Cost* cost_ptr)
+    {
+        if (cost_ptr != NULL)
+            *cost_ptr = solutionCost;
+        return solution;
+    }
+    vector<pair<Double, vector<Value>>> getSolutions() const { return solutions; }
+    void initSolutionCost() { solutionCost = MAX_COST; }
+    void setSolution(Cost cost, TAssign* sol = NULL)
+    {
+        solutionCost = cost;
+        for (unsigned int i = 0; i < numberOfVariables(); i++) {
+            Value v = ((sol != NULL) ? (*sol)[i] : getValue(i));
+            if (!ToulBar2::verifyOpt && ToulBar2::solutionBasedPhaseSaving)
+                setBestValue(i, v);
+            solution[i] = ((ToulBar2::sortDomains && ToulBar2::sortedDomains.find(i) != ToulBar2::sortedDomains.end()) ? ToulBar2::sortedDomains[i][toIndex(i, v)].value : v);
+        }
+        solutions.push_back(make_pair(Cost2ADCost(solutionCost), solution));
+    }
+    void printSolution()
+    {
+        for (unsigned int i = 0; i < numberOfVariables(); i++) {
+            if (enumerated(i) && ((EnumeratedVariable*)getVar(i))->isValueNames()) {
+                EnumeratedVariable* myvar = (EnumeratedVariable*)getVar(i);
+                Value myvalue = solution[i];
+                string valuelabel = myvar->getValueName(myvar->toIndex(myvalue));
+                string varlabel = myvar->getName();
+
+                switch (ToulBar2::showSolutions) {
+                case 1:
+                    cout << myvalue;
+                    break;
+                case 2:
+                    cout << valuelabel;
+                    break;
+                case 3:
+                    cout << varlabel << "=" << valuelabel;
+                    break;
+                default:
+                    break;
+                }
+            } else {
+                cout << solution[i];
+            }
+            cout << (i < numberOfVariables() - 1 ? " " : "");
+        }
+    }
+    void printSolution(ostream& os)
+    {
+        for (unsigned int i = 0; i < numberOfVariables(); i++) {
+            if (enumerated(i) && ((EnumeratedVariable*)getVar(i))->isValueNames()) {
+                EnumeratedVariable* myvar = (EnumeratedVariable*)getVar(i);
+                Value myvalue = solution[i];
+                string valuelabel = myvar->getValueName(myvar->toIndex(myvalue));
+                string varlabel = myvar->getName();
+
+                switch (ToulBar2::writeSolution) {
+                case 1:
+                    os << myvalue;
+                    break;
+                case 2:
+                    os << valuelabel;
+                    break;
+                case 3:
+                    os << varlabel << "=" << valuelabel;
+                    break;
+                default:
+                    break;
+                }
+            } else {
+                os << solution[i];
+            }
+            os << (i < numberOfVariables() - 1 ? " " : "");
+        }
+    }
+    void printSolution(FILE* f)
+    {
+        for (unsigned int i = 0; i < numberOfVariables(); i++) {
+            if (enumerated(i) && ((EnumeratedVariable*)getVar(i))->isValueNames()) {
+                EnumeratedVariable* myvar = (EnumeratedVariable*)getVar(i);
+                Value myvalue = solution[i];
+                string valuelabel = myvar->getValueName(myvar->toIndex(myvalue));
+                string varlabel = myvar->getName();
+
+                switch (ToulBar2::writeSolution) {
+                case 1:
+                    fprintf(f, "%d", myvalue);
+                    break;
+                case 2:
+                    fprintf(f, "%s", valuelabel.c_str());
+                    break;
+                case 3:
+                    fprintf(f, "%s=%s", varlabel.c_str(), valuelabel.c_str());
+                    break;
+                default:
+                    break;
+                }
+            } else {
+                fprintf(f, "%d", solution[i]);
+            }
+            if (i < numberOfVariables() - 1)
+                fprintf(f, " ");
+        }
+    }
+    void printSolutionMaxSAT(ostream& os)
+    {
+        os << "v";
+        for (unsigned int i = 0; i < numberOfVariables(); i++) {
+            os << " " << ((solution[i]) ? ((int)i + 1) : -((int)i + 1));
+        };
+        os << endl;
+    }
+
+    void print(ostream& os); ///< \brief print current domains and active cost functions (see \ref verbosity)
+    void dump(ostream& os, bool original = true); ///< \brief output the current WCSP into a file in wcsp format \param os output file \param original if true then keeps all variables with their original domain size else uses unassigned variables and current domains recoding variable indexes
+    void dump_CFN(ostream& os, bool original = true); ///< \brief output the current WCSP into a file in CFN format \param os output file \param original if true then keeps all variables with their original domain size else uses unassigned variables and current domains recoding variable indexes
+    friend ostream& operator<<(ostream& os, WCSP& wcsp); ///< \relates WCSP::print
+
+    // -----------------------------------------------------------
+    // Specific API for Variable and Constraint classes
+
+    Variable* getVar(int varIndex) const { return vars[varIndex]; }
+    vector<vector<int>>* getListSuccessors() { return &listofsuccessors; }
+    Constraint* getCtr(int ctrIndex) const
+    {
+        if (ctrIndex >= 0) {
+            return constrs[ctrIndex];
+        } else {
+            if (-ctrIndex - 1 >= MAX_ELIM_BIN) {
+                return elimTernConstrs[-ctrIndex - 1 - MAX_ELIM_BIN];
+            } else {
+                return elimBinConstrs[-ctrIndex - 1];
+            }
+        }
+    }
+
+    void link(Variable* x)
+    {
+        vars.push_back(x);
+        bestValues.push_back(x->getSup() + 1);
+        solution.push_back(x->getSup() + 1);
+    }
+    void link(Constraint* c) { constrs.push_back(c); }
+
+    VariableList* getNCBucket(int ibucket) { return &NCBuckets[ibucket]; }
+    int getNCBucketSize() const { return NCBucketSize; }
+    void changeNCBucket(int oldBucket, int newBucket, DLink<Variable*>* elt)
+    {
+        assert(newBucket < NCBucketSize);
+        if (oldBucket >= 0)
+            NCBuckets[oldBucket].erase(elt, true);
+        if (newBucket >= 0)
+            NCBuckets[newBucket].push_back(elt, true);
+    }
+    void printNCBuckets();
+
+    Long getNbNodes() const { return nbNodes; }
+    Long getNbDEE() const { return nbDEE; }
+    void incNbDEE(Long v = 1LL) { nbDEE += v; }
+
+    void queueNC(DLink<VariableWithTimeStamp>* link) { NC.push(link, nbNodes); }
+    void queueInc(DLink<VariableWithTimeStamp>* link) { IncDec.push(link, INCREASE_EVENT, nbNodes); }
+    void queueDec(DLink<VariableWithTimeStamp>* link) { IncDec.push(link, DECREASE_EVENT, nbNodes); }
+    void queueAC(DLink<VariableWithTimeStamp>* link) { AC.push(link, nbNodes); }
+    void queueDAC(DLink<VariableWithTimeStamp>* link) { DAC.push(link, nbNodes); }
+    void queueEAC1(DLink<VariableWithTimeStamp>* link) { EAC1.push(link, nbNodes); }
+    void queueEAC2(DLink<VariableWithTimeStamp>* link) { EAC2.push(link, nbNodes); }
+    void queueEliminate(DLink<VariableWithTimeStamp>* link) { Eliminate.push(link, nbNodes); }
+    void queueSeparator(DLink<Separator*>* link) { PendingSeparator.push_back(link, true); }
+    void unqueueSeparator(DLink<Separator*>* link) { PendingSeparator.erase(link, true); }
+    void queueDEE(DLink<VariableWithTimeStamp>* link) { DEE.push(link, nbNodes); }
+    void queueFEAC(DLink<VariableWithTimeStamp>* link) { FEAC.push(link, nbNodes); }
+
+    void propagateNC(); ///< \brief removes forbidden values
+    void propagateIncDec(); ///< \brief ensures unary bound arc consistency supports (remove forbidden domain bounds)
+    void propagateAC(); ///< \brief ensures unary and binary and ternary arc consistency supports
+    void propagateDAC(); ///< \brief ensures unary and binary and ternary directed arc consistency supports
+    void propagateTRWS(); ///< \brief iterates TRW-S until convergence
+    void fillEAC2();
+    Queue* getQueueEAC1() { return &EAC1; }
+    void propagateEAC(); ///< \brief ensures unary existential arc consistency supports
+    void propagateSeparator(); ///< \brief exploits graph-based learning
+    void propagateDEE(); ///< \brief removes dominated values (dead-end elimination and possibly soft neighborhood substitutability)
+    void propagateFEAC(); ///< \brief seek if new EAC support is also FullEAC support (i.e., compatible with all its EAC value neighbors)
+
+    /// \brief sorts the list of constraints associated to each variable based on smallest problem variable indexes
+    /// \warning side-effect: updates DAC order according to an existing variable elimination order
+    void sortConstraints();
+
+    /// \brief applies preprocessing techniques before the search (depending on toublar2 options)
+    /// \warning to be done \b only before the search
+    void preprocessing();
+
+    // -----------------------------------------------------------
+    // Methods for Variable Elimination
+
+    void initElimConstr();
+    void initElimConstrs();
+
+    int getElimOrder() { return (int)elimOrder; }
+    int getElimBinOrder() { return (int)elimBinOrder; }
+    int getElimTernOrder() { return (int)elimTernOrder; }
+    void elimOrderInc() { elimOrder = elimOrder + 1; }
+    void elimBinOrderInc() { elimBinOrder = elimBinOrder + 1; }
+    void elimTernOrderInc() { elimTernOrder = elimTernOrder + 1; }
+    Constraint* getElimBinCtr(int elimBinIndex) const { return elimBinConstrs[elimBinIndex]; }
+    Constraint* getElimTernCtr(int elimTernIndex) const { return elimTernConstrs[elimTernIndex]; }
+
+    BinaryConstraint* newBinaryConstr(EnumeratedVariable* x, EnumeratedVariable* y, Constraint* from1 = NULL, Constraint* from2 = NULL);
+    BinaryConstraint* newBinaryConstr(EnumeratedVariable* x, EnumeratedVariable* y, vector<Cost>& costs);
+    TernaryConstraint* newTernaryConstr(EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, Constraint* from1 = NULL);
+    TernaryConstraint* newTernaryConstr(EnumeratedVariable* x, EnumeratedVariable* y, EnumeratedVariable* z, vector<Cost>& costs);
+
+    void eliminate();
+    void restoreSolution(Cluster* c = NULL);
+
+    Constraint* sum(Constraint* ctr1, Constraint* ctr2);
+    void project(Constraint*& ctr_inout, EnumeratedVariable* var, Constraint* ctr_copy = NULL);
+    void variableElimination(EnumeratedVariable* var);
+
+    void processTernary(); ///< \brief projects&subtracts ternary cost functions (see \ref preprocessing)
+    void ternaryCompletion();
+    bool kconsistency(int xIndex, int yIndex, int zIndex, BinaryConstraint* xy, BinaryConstraint* yz, BinaryConstraint* xz);
+
+    // -----------------------------------------------------------
+    // Data and methods for Virtual Arc Consistency
+
+    void histogram(Cost c); /// \brief initializes histogram of costs used by Virtual Arc Consistency to speed up its convergence (Bool\f$_\theta\f$ of P)
+    void iniSingleton();
+    void updateSingleton();
+    void removeSingleton();
+    void printVACStat();
+
+    // -----------------------------------------------------------
+    // Data and methods for Cluster Tree Decomposition
+
+    TreeDecomposition* td;
+    TreeDecomposition* getTreeDec() { return td; }
+    static bool isAlreadyTreeDec(char* filename); ///< \brief finds if the given file is a variable ordering or a tree decomposition
+    void buildTreeDecomposition();
+    void elimOrderFile2Vector(char* elimVarOrderFilename, vector<int>& elimVarOrder); ///< \brief returns a reverse topological order from a variable elimination order
+    void treeDecFile2Vector(char* treeDecFilename, vector<int>& elimVarOrder); ///< \brief returns a reverse topological order from a tree decomposition
+    void setDACOrder(vector<int>& elimVarOrder); ///< \brief change DAC order and propagate from scratch
+
+    // dac order reordering when Berge acyclic gobal constraint are present in the wcsp
+    //
+    void visit(int i, vector<int>& revdac, vector<bool>& marked, const vector<vector<int>>& listofsuccessors);
+
+    // -----------------------------------------------------------
+    // Functions dealing with all representations of Costs
+    // warning: ToulBar2::NormFactor has to be initialized
+
+    Cost decimalToCost(const string& decimalToken, const unsigned int lineNumber) const;
+    Cost DoubletoCost(const Double& c) const { return Round(c * powl(10.0, ToulBar2::decimalPoint)) + negCost; }
+    Double Cost2ADCost(const Cost& c) const { return Cost2RDCost(c - negCost); } // Absolute costs
+    Double Cost2RDCost(const Cost& c) const { return ((Double)(c) / Exp10(ToulBar2::decimalPoint) / ToulBar2::costMultiplier); } //Relative costs
+    Cost Prob2Cost(TProb p) const;
+    TProb Cost2Prob(Cost c) const;
+    TLogProb Cost2LogProb(Cost c) const;
+    Cost LogProb2Cost(TLogProb p) const;
+    Cost LogSumExp(Cost c1, Cost c2) const;
+    TLogProb LogSumExp(TLogProb logc1, Cost c2) const;
+    TLogProb LogSumExp(TLogProb logc1, TLogProb logc2) const;
+};
+
+#endif /*TB2WCSP_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2alldiffconstr.cpp b/code/include/tb2/globals/tb2alldiffconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9357105a912a0f42c7f9dbb411f19b88a11be43d
--- /dev/null
+++ b/code/include/tb2/globals/tb2alldiffconstr.cpp
@@ -0,0 +1,217 @@
+#include "tb2alldiffconstr.hpp"
+#include "core/tb2wcsp.hpp"
+
+AllDiffConstraint::AllDiffConstraint(WCSP* wcsp, EnumeratedVariable** scope_in,
+    int arity_in)
+    : FlowBasedGlobalConstraint(wcsp, scope_in, arity_in)
+{
+    buildIndex();
+
+    modeEnum["var"] = AllDiffConstraint::VAR;
+    modeEnum["dec"] = AllDiffConstraint::DEC;
+    modeEnum["decbi"] = AllDiffConstraint::DECBI;
+}
+
+void AllDiffConstraint::buildIndex()
+{
+    vector<Value> D;
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            D.push_back(*iterx);
+        }
+    }
+    sort(D.begin(), D.end());
+    D.erase(unique(D.begin(), D.end()), D.end());
+    for (vector<Value>::iterator i = D.begin(); i != D.end(); i++) {
+        mapval[*i] = arity_ + (int)(i - D.begin()) + 1;
+    }
+    //graph.setSize(arity_+D.size()+2);
+}
+
+void AllDiffConstraint::read(istream& file, bool mult)
+{
+
+    // Only two parameters for control :
+
+    // 1) the cost measure : "var" = mu_var ; "dec" = mu_dec
+    string str;
+    file >> str;
+    // 2) the cost of the violation edge : assume to be a constant function
+    // mapping to def
+    file >> def;
+    if (mult)
+        def *= ToulBar2::costMultiplier;
+    //cout << "str = " << str << endl;
+    /*if (str == "var") {
+		mode = VAR;
+	} else if (str == "dec") {
+		mode = DEC;
+	} else if (str == "decbi") {
+		mode = DECBI;
+		decompose();
+	} else {
+		cout << "unknown mode?\n";
+		exit(0);
+	}*/
+    setSemantics(str);
+}
+
+void AllDiffConstraint::organizeConfig()
+{
+    if (mode == DECBI)
+        decompose();
+}
+
+Cost AllDiffConstraint::evalOriginal(const Tuple& s)
+{
+    Cost tuple_cost = 0;
+    if (mode == DEC) {
+        for (unsigned int i = 0; i < s.size(); i++) {
+            for (unsigned int j = i + 1; j < s.size(); j++) {
+                if (s[i] == s[j])
+                    tuple_cost += def;
+            }
+        }
+    } else {
+        set<tValue> count;
+        for (unsigned int i = 0; i < s.size(); i++) {
+            count.insert(s[i]);
+        }
+        tuple_cost = (s.size() - count.size()) * def;
+    }
+    return tuple_cost;
+}
+
+size_t AllDiffConstraint::GetGraphAllocatedSize()
+{
+    return mapval.size() + arity_ + 2;
+}
+
+void AllDiffConstraint::buildGraph(Graph& g)
+{
+
+    // if (g.size() == 0) g.setSize(mapval.size() + arity_  + 2);
+    // g.clearEdge();
+    for (int i = 0; i < arity_; i++) {
+        g.addEdge(0, i + 1, 0);
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator j = x->begin(); j != x->end(); ++j) {
+            int index = mapval[*j];
+            if (index != 0) {
+                g.addEdge(i + 1, index, -deltaCost[i][x->toIndex(*j)]);
+                vector<Cost> weight = g.getWeight(index, g.size() - 1);
+                Cost count = 0;
+                if (weight.size() != 0) {
+                    if (mode == DEC) {
+                        count = *max_element(weight.begin(), weight.end()) + def;
+                    } else {
+                        count = def;
+                    }
+                }
+                g.addEdge(index, g.size() - 1, count);
+                //g.print();
+            }
+        }
+    }
+}
+
+/*void AllDiffConstraint::getDomainFromGraph(Graph &graph, int varindex, vector<int> &domain) {
+
+	domain.clear();
+	for (vector<List_Node >::iterator k = graph[varindex+1].begin(); 
+			k != graph[varindex+1].end(); k++) {
+		if (k->adj > 0) {
+			for (map<Value, Cost>::iterator i = mapval.begin();i !=
+					mapval.end();i++) {
+				if (i->second == k->adj) domain.push_back(i->first);
+			}
+		}
+	}
+	for (map<Value, Cost>::iterator i = mapval.begin();i !=
+			mapval.end();i++) {
+		for (vector<List_Node >::iterator k = graph[i->second].begin(); 
+				k != graph[i->second].end(); k++) {
+			if (k->adj == varindex+1) {
+				domain.push_back(i->first);
+			}
+		}
+	}
+
+}*/
+
+void AllDiffConstraint::decompose()
+{
+    deconnect();
+    for (int i = 0; i < arity_; i++) {
+        for (int j = i + 1; j < arity_; j++) {
+            EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+            EnumeratedVariable* y = (EnumeratedVariable*)getVar(j);
+            vector<Cost> costs;
+            for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+                for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+                    if (a == b) {
+                        costs.push_back(def);
+                    } else {
+                        costs.push_back(0);
+                    }
+                }
+            }
+            if (ToulBar2::vac) {
+                for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+                    for (unsigned int b = 0; b < y->getDomainInitSize(); b++) {
+                        Cost c = costs[a * y->getDomainInitSize() + b];
+                        wcsp->histogram(c);
+                    }
+                }
+            }
+            BinaryConstraint* ctr = x->getConstr(y);
+            if (ctr) {
+                ctr->reconnect();
+                ctr->addCosts(x, y, costs);
+                ctr->propagate();
+            } else {
+                if (!ToulBar2::vac) {
+                    ctr = new BinaryConstraint(wcsp, x, y, costs);
+                } else {
+                    ctr = new VACBinaryConstraint(wcsp, x, y, costs);
+                }
+            }
+        }
+    }
+}
+
+void AllDiffConstraint::dump(ostream& os, bool original)
+{
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    os << " -1 salldiff " << ((mode == VAR) ? "var" : "dec") << " " << def << endl;
+}
+
+//void AllDiffConstraint::print(ostream& os) {
+//    os << "salldiff(";
+//    for(int i = 0; i < arity_;i++) {
+//        os << scope[i]->wcspIndex;
+//        if(i < arity_-1) os << ",";
+//    }
+//    os << ")[" << ((mode==VAR)?"var":"dec") << "," << def << "]";
+//    if (ToulBar2::verbose >= 4) {
+//        os << endl;
+//        GlobalConstraint::print(os);
+//    }
+//}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2alldiffconstr.hpp b/code/include/tb2/globals/tb2alldiffconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..5b52764716c3256de1b3d867cd315e9e06d951e6
--- /dev/null
+++ b/code/include/tb2/globals/tb2alldiffconstr.hpp
@@ -0,0 +1,58 @@
+/** \file tb2alldiffconstr.hpp
+ *  \brief AllDifferent constraint with mu_var and mu_dec measure
+ *
+ */
+
+#ifndef TB2ALLDIFFCONSTR_HPP_
+#define TB2ALLDIFFCONSTR_HPP_
+
+#include "tb2flowbasedconstr.hpp"
+#include "core/tb2binconstr.hpp"
+#include "core/tb2vacutils.hpp"
+
+class AllDiffConstraint : public FlowBasedGlobalConstraint {
+private:
+    void buildIndex();
+    pair<int, int> mapto(int varindex, Value val)
+    {
+        return make_pair(varindex + 1, mapval[val]);
+    }
+    //void getDomainFromGraph(Graph &graph, int varindex, vector<int> &domain);
+    size_t GetGraphAllocatedSize();
+    void buildGraph(Graph& g);
+
+public:
+    static const int DECBI = 2;
+    static const int DEC = 1;
+    static const int VAR = 0;
+
+    string getName() { return "salldiff"; }
+
+    AllDiffConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int
+                                                                     arity_in);
+
+    ~AllDiffConstraint()
+    {
+    }
+    Cost evalOriginal(const Tuple& s);
+
+    void read(istream& file, bool mult = true);
+    void organizeConfig();
+
+    void decompose();
+    //void initStructure() {if (mode != DECBI) FlowBasedGlobalConstraint::init();}
+    //void end() {if (mode != DECBI) FlowBasedGlobalConstraint::end();}
+    //void findFullSupport2(int index, vector<int> &supportProvide, bool isEAC);
+
+    //    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+};
+
+#endif /*TB2ALLDIFFCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2amongconstr.cpp b/code/include/tb2/globals/tb2amongconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3e4d710ab7c7331657a91abc236ac439d3315589
--- /dev/null
+++ b/code/include/tb2/globals/tb2amongconstr.cpp
@@ -0,0 +1,263 @@
+#include "tb2amongconstr.hpp"
+
+AmongConstraint::AmongConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity)
+    : DPGlobalConstraint(wcsp, scope, arity)
+    , f(NULL)
+    , invf(NULL)
+    , curf(NULL)
+    , minBarU(NULL)
+    , minU(NULL)
+    , ub(0)
+    , lb(0)
+{
+}
+
+AmongConstraint::~AmongConstraint()
+{
+    deleteTable(f);
+    deleteTable(curf);
+    deleteTable(invf);
+    delete[] minBarU;
+    delete[] minU;
+}
+
+void AmongConstraint::read(istream& file, bool mult)
+{
+    string str;
+    file >> str >> def;
+    if (mult)
+        def *= ToulBar2::costMultiplier;
+
+    if (str != "var") {
+        cout << "Error in reading samong()\n";
+        exit(1);
+    }
+
+    file >> lb >> ub;
+
+    int nVal;
+    file >> nVal;
+    for (int i = 0; i < nVal; i++) {
+        Value tmp;
+        file >> tmp;
+        V.insert(tmp);
+    }
+}
+
+void AmongConstraint::dump(ostream& os, bool original)
+{
+    assert(original); //TODO: case original is false
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    os << " -1 samong var " << def << " " << lb << " " << ub << endl;
+    os << V.size();
+    for (set<Value>::iterator it = V.begin(); it != V.end(); ++it) {
+        os << " " << *it;
+    }
+    os << endl;
+}
+
+void AmongConstraint::initMemoization()
+{
+
+    if (lb > ub) {
+        cout << "Error in samong()\n";
+        exit(1);
+    }
+
+    int n = arity();
+
+    resizeTable(f, n + 1, ub + 1);
+    resizeTable(invf, n + 1, ub + 1);
+    resizeTable(curf, n + 1, ub + 1);
+
+    minBarU = new UnaryTableCell[n + 1];
+    minU = new UnaryTableCell[n + 1];
+
+    top = max(MAX_COST, wcsp->getUb());
+}
+
+Cost AmongConstraint::minCostOriginal()
+{
+
+    int n = arity();
+
+    minBarU[0].val = minU[0].val = -1;
+    for (int i = 1; i <= n; i++) {
+        Cost minu, minbaru;
+        minu = minbaru = wcsp->getUb();
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i - 1);
+        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+            Cost uCost(0), baruCost(def);
+            if (V.find(*v) == V.end()) {
+                uCost = def;
+                baruCost = 0;
+            }
+            minu = min(minu, uCost);
+            minbaru = min(minbaru, baruCost);
+        }
+        minBarU[i].val = minbaru;
+        minU[i].val = minu;
+    }
+
+    recomputeTable(curf);
+
+    Cost minCost = wcsp->getUb();
+    for (int j = lb; j <= ub; j++) {
+        minCost = min(minCost, curf[n][j].val);
+    }
+
+    return minCost;
+}
+
+Cost AmongConstraint::minCostOriginal(int var, Value val, bool changed)
+{
+    Result result = minCost(var, val, changed);
+    delete[] result.second;
+    return result.first;
+}
+
+Cost AmongConstraint::evalOriginal(const Tuple& s)
+{
+    int n = arity();
+    int count = 0;
+    for (int i = 0; i < n; i++) {
+        if (V.find(s[i]) != V.end())
+            count++;
+    }
+    return max(0, max(lb - count, count - ub)) * def;
+}
+
+void AmongConstraint::recompute()
+{
+    int n = arity();
+    minBarU[0].val = minU[0].val = -1;
+    for (int i = 1; i <= n; i++) {
+        minBarU[i].val = computeMinBarU(i - 1);
+        minU[i].val = computeMinU(i - 1);
+    }
+
+    recomputeTable(f, invf);
+}
+
+DPGlobalConstraint::Result AmongConstraint::minCost(int var, Value val, bool changed)
+{
+
+    if (changed)
+        recompute();
+
+    Cost ucost(0), barucost(0);
+    if (V.find(val) == V.end()) {
+        ucost = def;
+    } else {
+        barucost = def;
+    }
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(var);
+    ucost -= deltaCost[var][x->toIndex(val)];
+    barucost -= deltaCost[var][x->toIndex(val)];
+
+    Cost minCost = f[var][0].val + barucost + invf[var + 1][0].val;
+    for (int j = 1; j <= ub; j++) {
+        Cost tmpMinCost = min(f[var][j].val + barucost + invf[var + 1][j].val,
+            f[var][j - 1].val + ucost + invf[var + 1][j].val);
+        minCost = min(tmpMinCost, minCost);
+    }
+
+    return DPGlobalConstraint::Result(minCost, NULL);
+}
+
+void AmongConstraint::recomputeTable(DPTableCell** table, DPTableCell** invTable, int startRow)
+{
+    int n = arity();
+
+    if (startRow == 0) {
+        for (int j = 0; j <= ub; j++) {
+            table[0][j].val = j * def;
+            table[0][j].source = -1;
+
+            if (invTable != NULL) {
+                invTable[n][j].val = (j < lb) ? top : 0;
+                invTable[n][j].source = -1;
+            }
+        }
+        startRow++;
+    }
+
+    for (int i = startRow; i <= n; i++) {
+        table[i][0].val = table[i - 1][0].val + minBarU[i].val;
+        table[i][0].source = 0;
+        for (int j = 1; j <= ub; j++) {
+            Cost choice1 = table[i - 1][j].val + minBarU[i].val;
+            Cost choice2 = table[i - 1][j - 1].val + minU[i].val;
+            if (choice1 > choice2) {
+                table[i][j].val = choice2;
+                table[i][j].source = 2;
+            } else {
+                table[i][j].val = choice1;
+                table[i][j].source = 1;
+            }
+        }
+    }
+
+    if (invTable != NULL) {
+        for (int i = n - 1; i >= 0; i--) {
+            for (int j = 0; j < ub; j++) {
+                invTable[i][j].val = 0;
+                Cost choice1 = invTable[i + 1][j].val + minBarU[i + 1].val;
+                Cost choice2 = invTable[i + 1][j + 1].val + minU[i + 1].val;
+                if (choice1 > choice2) {
+                    invTable[i][j].val = choice2;
+                    invTable[i][j].source = 2;
+                } else {
+                    invTable[i][j].val = choice1;
+                    invTable[i][j].source = 1;
+                }
+            }
+            invTable[i][ub].val = invTable[i + 1][ub].val + minBarU[i + 1].val;
+            invTable[i][ub].source = 1;
+        }
+    }
+}
+
+Cost AmongConstraint::computeMinU(int var)
+{
+    Cost minCost = top;
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(var);
+    for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+        Cost ucost = 0;
+        if (V.find(*v) == V.end()) {
+            ucost = def;
+        }
+        minCost = min(minCost, ucost - deltaCost[var][x->toIndex(*v)]);
+    }
+    return minCost;
+}
+
+Cost AmongConstraint::computeMinBarU(int var)
+{
+    Cost minCost = top;
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(var);
+    for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+        Cost ucost = def;
+        if (V.find(*v) == V.end()) {
+            ucost = 0;
+        }
+        minCost = min(minCost, ucost - deltaCost[var][x->toIndex(*v)]);
+    }
+    return minCost;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2amongconstr.hpp b/code/include/tb2/globals/tb2amongconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..218b19fe40cb39879a978d51e1d8313498d99b69
--- /dev/null
+++ b/code/include/tb2/globals/tb2amongconstr.hpp
@@ -0,0 +1,91 @@
+/** \file tb2amongconstr.hpp
+ *  \brief Dynamic programming based global cost function : samong_dp
+ */
+
+#ifndef TB2AMONGCONSTR_HPP_
+#define TB2AMONGCONSTR_HPP_
+
+#include "tb2dpglobalconstr.hpp"
+
+class AmongConstraint : public DPGlobalConstraint {
+private:
+    template <class Source>
+    struct TableCell {
+        Cost val;
+        Source source;
+    };
+
+    typedef TableCell<int> DPTableCell;
+    DPTableCell** f;
+    DPTableCell** invf;
+    DPTableCell** curf;
+    Cost top;
+
+    typedef TableCell<Value> UnaryTableCell;
+    UnaryTableCell *minBarU, *minU;
+
+    template <class T>
+    void resizeTable(T**& table, int width, int heigth)
+    {
+        assert(width >= arity() + 1);
+        table = new T*[width];
+        for (int i = 0; i <= arity(); i++) {
+            table[i] = new T[heigth];
+        }
+    }
+
+    template <class T>
+    void deleteTable(T**& table)
+    {
+        for (int i = 0; i <= arity(); i++)
+            delete[] table[i];
+        delete[] table;
+        table = NULL;
+    }
+
+    set<Value> V;
+    int ub, lb;
+
+    void recomputeTable(DPTableCell** table, DPTableCell** invTable = NULL, int startRow = 0);
+    void recompute();
+
+    Cost computeMinU(int var);
+
+    Cost computeMinBarU(int var);
+
+protected:
+    Cost minCostOriginal();
+    Cost minCostOriginal(int var, Value val, bool changed);
+    Result minCost(int var, Value val, bool changed);
+
+public:
+    AmongConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity);
+    virtual ~AmongConstraint();
+
+    Cost evalOriginal(const Tuple& s);
+
+    void read(istream& file, bool mult = true);
+    void setUpperBound(int upper) { ub = upper; }
+    void setLowerBound(int lower) { lb = lower; }
+    void addBoundingValue(Value value) { V.insert(value); }
+    virtual void initMemoization();
+
+    string getName()
+    {
+        string name = "samong";
+        name += "_" + to_string(lb) + "_" + to_string(ub) + "_" + to_string(V.size());
+        for (set<int>::iterator iter = V.begin(); iter != V.end(); ++iter)
+            name += "_" + to_string(*iter);
+        return name;
+    }
+    void dump(ostream& os, bool original = true);
+};
+
+#endif /*TB2AMONGCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2dpglobalconstr.cpp b/code/include/tb2/globals/tb2dpglobalconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e272821cc5237395bd20e181906e4054b2ed17bf
--- /dev/null
+++ b/code/include/tb2/globals/tb2dpglobalconstr.cpp
@@ -0,0 +1,246 @@
+#include "tb2dpglobalconstr.hpp"
+
+DPGlobalConstraint::DPGlobalConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity)
+    : GlobalConstraint(wcsp, scope, arity, 0)
+    , initialized(false)
+{
+    zero = new vector<bool>[arity];
+    for (int i = 0; i < arity; i++)
+        zero[i] = vector<bool>(scope[i]->getDomainInitSize(), false);
+    preUnaryCosts = new vector<Cost>[arity];
+    for (int i = 0; i < arity; i++)
+        preUnaryCosts[i] = vector<Cost>(scope[i]->getDomainInitSize(), 0);
+}
+
+DPGlobalConstraint::~DPGlobalConstraint()
+{
+    delete[] zero;
+    delete[] preUnaryCosts;
+}
+
+void DPGlobalConstraint::clear()
+{
+    for (int i = 0; i < arity(); i++) {
+        fill(zero[i].begin(), zero[i].end(), false);
+        fill(preUnaryCosts[i].begin(), preUnaryCosts[i].end(), 0);
+    }
+}
+
+void DPGlobalConstraint::record(Value* tuple)
+{
+    if (tuple == NULL)
+        return;
+    for (int i = 0; i < arity(); i++)
+        zero[i][scope[i]->toIndex(tuple[i])] = true;
+    if (ToulBar2::verbose >= 3) {
+        cout << "tuple(";
+        for (int i = 0; i < arity(); i++)
+            cout << tuple[i] << ",";
+        cout << ")" << endl;
+    }
+    delete[] tuple;
+}
+
+void DPGlobalConstraint::propagateNIC()
+{
+
+    Cost least = minCostOriginal();
+    if (least > projectedCost) {
+        wcsp->increaseLb(least - projectedCost);
+        projectedCost = least;
+    }
+}
+
+void DPGlobalConstraint::propagateStrongNIC()
+{
+
+    propagateNIC();
+    Cost ub = wcsp->getUb();
+    Cost lb = wcsp->getLb();
+    bool changed = true;
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* x = scope[i];
+        if (x->assigned())
+            continue;
+        bool first = true;
+        for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+            Cost cost = minCostOriginal(i, *it, changed && first) - projectedCost;
+            changed = first = false;
+            if (cost + x->getCost(*it) + lb >= ub) {
+                x->remove(*it);
+                changed = true;
+            }
+        }
+        x->findSupport();
+    }
+}
+
+void DPGlobalConstraint::propagateAC()
+{
+
+    bool changed = true;
+    clear();
+
+    //Cost thisUb;
+    //thisUb = wcsp->getUb();
+    for (int i = 0; i < arity(); i++) {
+        EnumeratedVariable* x = scope[i];
+        bool first = true;
+        for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+            if (zero[i][x->toIndex(*it)])
+                continue;
+            Result r = minCost(i, *it, changed && first);
+            if (changed && first)
+                changed = false;
+            first = false;
+
+            Cost cost = r.first;
+            /*if(cost >= thisUb || cost + wcsp->getLb() + scope[i]->getCost(*it) >= thisUb){            
+			  x->remove(*it);
+			  changed = true;
+            }else */
+            if (cost > 0) {
+                project(i, *it, cost);
+                changed = true;
+            } else if (cost < 0) {
+                /* Should not happen*/
+                cout << "Warning: AC propagation get negative cost!" << endl;
+                extend(i, *it, -cost);
+                changed = true;
+            }
+            if (x->canbe(*it))
+                record(r.second);
+        }
+        x->findSupport();
+    }
+}
+
+void DPGlobalConstraint::findSupport(int var, bool& changed)
+{
+    EnumeratedVariable* x = scope[var];
+    bool first = true;
+    vector<Value> remove;
+
+    for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+        Cost cost;
+        Result r = pair<Cost, Value*>(0, NULL);
+        if (zero[var][x->toIndex(*it)]) {
+            cost = 0;
+        } else {
+            r = minCost(var, *it, changed && first);
+            if (changed && first)
+                changed = false;
+            first = false;
+            cost = r.first;
+        }
+        //deltaCost[var][x->toIndex(*it)] += x->getCost(*it);
+        deltaCost[var][x->toIndex(*it)] += preUnaryCosts[var][x->toIndex(*it)];
+        //Cost delta = cost - x->getCost(*it);
+        Cost delta = cost - preUnaryCosts[var][x->toIndex(*it)];
+        if (delta > 0) {
+            project(var, *it, delta, true); // NC will be delayed (avoid forward checking on binary/ternay cost functions)
+            assert(x->canbe(*it));
+        } else if (delta < 0) {
+            extend(var, *it, -delta);
+        }
+        if (!zero[var][x->toIndex(*it)] && x->getCost(*it) + wcsp->getLb() < wcsp->getUb())
+            record(r.second);
+    }
+    x->findSupport();
+    changed = true; //Detect any change in variable domain or unary costs
+}
+
+void DPGlobalConstraint::propagateDAC()
+{
+    if (ToulBar2::verbose >= 3)
+        cout << "propagateDAC for " << *this << endl;
+
+    clear();
+
+    for (int ii = 0; ii < arity_; ii++) {
+        EnumeratedVariable* x = scope_dac[ii];
+        int i = scope_inv[x->wcspIndex];
+        for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+            if (x->unassigned()) {
+                deltaCost[i][x->toIndex(*it)] -= x->getCost(*it);
+                preUnaryCosts[i][x->toIndex(*it)] = x->getCost(*it);
+            }
+        }
+    }
+
+    bool changed = true;
+    for (int ii = 0; ii < arity_; ii++) {
+        EnumeratedVariable* x = scope_dac[ii];
+        int i = scope_inv[x->wcspIndex];
+        if (x->unassigned()) {
+            findSupport(i, changed);
+        }
+    }
+}
+
+bool DPGlobalConstraint::isEAC(int var, Value val)
+{
+
+    if (ToulBar2::FullEAC)
+        reviseEACGreedySolution(var, val);
+    for (set<int>::iterator it = fullySupportedSet[var].begin(); it != fullySupportedSet[var].end(); ++it) {
+        EnumeratedVariable* x = scope[*it];
+        if (x->unassigned() && (*it != var)) {
+            for (EnumeratedVariable::iterator jt = x->begin(); jt != x->end(); ++jt) {
+                deltaCost[*it][x->toIndex(*jt)] -= x->getCost(*jt);
+            }
+        }
+    }
+    bool ret = (minCost(var, val, true).first == 0);
+    for (set<int>::iterator it = fullySupportedSet[var].begin(); it != fullySupportedSet[var].end(); ++it) {
+        EnumeratedVariable* x = scope[*it];
+        if (x->unassigned() && (*it != var)) {
+            for (EnumeratedVariable::iterator jt = x->begin(); jt != x->end(); ++jt) {
+                deltaCost[*it][x->toIndex(*jt)] += x->getCost(*jt);
+            }
+        }
+    }
+    return ret;
+}
+
+//TODO: applies DAC order when enumerating variables (fullySupportedSet does not preserve DAC order)
+void DPGlobalConstraint::findFullSupportEAC(int var)
+{
+    assert(fullySupportedSet[var].find(var) == fullySupportedSet[var].end());
+
+    clear();
+    //fullySupportedSet[var].insert(var);
+    for (set<int>::iterator it = fullySupportedSet[var].begin(); it != fullySupportedSet[var].end(); ++it) {
+        EnumeratedVariable* x = scope[*it];
+        if (x->unassigned() && (*it != var)) {
+            for (EnumeratedVariable::iterator jt = x->begin(); jt != x->end(); ++jt) {
+                /* fix the problem in EAC */
+                preUnaryCosts[*it][x->toIndex(*jt)] = x->getCost(*jt);
+                deltaCost[*it][x->toIndex(*jt)] -= x->getCost(*jt);
+            }
+        }
+    }
+    //fullySupportedSet[var].erase(var);
+    EnumeratedVariable* cur = scope[var];
+    for (EnumeratedVariable::iterator jt = cur->begin(); jt != cur->end(); ++jt) {
+        /* fix the problem in EAC */
+        preUnaryCosts[var][cur->toIndex(*jt)] = cur->getCost(*jt);
+        deltaCost[var][cur->toIndex(*jt)] -= cur->getCost(*jt);
+    }
+
+    bool changed = true;
+    findSupport(var, changed);
+    for (set<int>::iterator it = fullySupportedSet[var].begin(); it != fullySupportedSet[var].end(); ++it) {
+        EnumeratedVariable* x = scope[*it];
+        if (x->unassigned() && (*it != var)) {
+            findSupport(*it, changed);
+        }
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2dpglobalconstr.hpp b/code/include/tb2/globals/tb2dpglobalconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..a63c0a5a79cce452410a6fdc85e6e0ed3124eca1
--- /dev/null
+++ b/code/include/tb2/globals/tb2dpglobalconstr.hpp
@@ -0,0 +1,58 @@
+/** \file tb2dpglobalconstr.hpp
+ *  \brief base class of polynomially decomposable cost functions
+ */
+
+#ifndef TB2DPGLOBALCONSTR_HPP_
+#define TB2DPGLOBALCONSTR_HPP_
+
+#include "tb2globalconstr.hpp"
+
+class DPGlobalConstraint : public GlobalConstraint {
+private:
+    vector<bool>* zero;
+    vector<Cost>* preUnaryCosts;
+
+    bool initialized;
+
+    void clear();
+    void record(Value* tuple);
+    using GlobalConstraint::findSupport;
+    void findSupport(int var, bool& changed);
+
+protected:
+    DPGlobalConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity);
+    virtual ~DPGlobalConstraint();
+
+    virtual void initMemoization() {}
+
+    virtual void initStructure()
+    {
+        if (!initialized) {
+            initMemoization();
+            initialized = true;
+        }
+    }
+
+    typedef pair<Cost, Value*> Result;
+    virtual Cost minCostOriginal() = 0;
+    virtual Cost minCostOriginal(int var, Value val, bool changed) = 0;
+    virtual Result minCost(int var, Value val, bool changed) = 0;
+
+    virtual void propagateNIC();
+    virtual void propagateStrongNIC();
+    virtual void propagateAC();
+    virtual void propagateDAC();
+
+    //EAC
+    virtual bool isEAC(int var, Value val);
+    virtual void findFullSupportEAC(int var);
+};
+
+#endif //TB2GLOBALCONSTR3_HPP_
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2flowbasedconstr.cpp b/code/include/tb2/globals/tb2flowbasedconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9e8738f22dee8f748b459dab93665fd2f7ec3fa0
--- /dev/null
+++ b/code/include/tb2/globals/tb2flowbasedconstr.cpp
@@ -0,0 +1,226 @@
+#include "tb2flowbasedconstr.hpp"
+#include "core/tb2wcsp.hpp"
+
+FlowBasedGlobalConstraint::FlowBasedGlobalConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in)
+    : GlobalConstraint(wcsp, scope_in, arity_in, 0)
+    , graph(NULL)
+    , cost(MIN_COST)
+    , zeroEdges(NULL)
+    , hasConfigOrganized(false)
+{
+}
+
+FlowBasedGlobalConstraint::~FlowBasedGlobalConstraint()
+{
+    if (zeroEdges) {
+        for (int i = 0; i < graph->size(); i++)
+            delete[] zeroEdges[i];
+        delete[] zeroEdges;
+    }
+    delete graph;
+}
+
+Cost FlowBasedGlobalConstraint::constructFlow(Graph& g)
+{
+    pair<int, Cost> result = g.minCostFlow(MIN_COST, g.size() - 1);
+    return result.second;
+}
+
+void FlowBasedGlobalConstraint::initStructure()
+{
+
+    if (!hasConfigOrganized) {
+        organizeConfig();
+        hasConfigOrganized = true;
+    }
+
+    if (graph == NULL) {
+        size_t graphSize = GetGraphAllocatedSize();
+        graph = new Graph(graphSize, arity_);
+
+        if (zeroEdges == NULL) {
+            zeroEdges = new bool*[graph->size()];
+            for (int i = 0; i < graph->size(); i++)
+                zeroEdges[i] = new bool[graph->size()];
+        }
+        for (int i = 0; i < graph->size(); i++) {
+            for (int j = 0; j < graph->size(); j++) {
+                zeroEdges[i][j] = false;
+            }
+        }
+
+        buildGraph(*graph);
+        cost = constructFlow(*graph);
+    }
+}
+
+void FlowBasedGlobalConstraint::checkRemoved(Graph& graph, StoreCost& cost, vector<int>& rmv)
+{
+
+    //if (ToulBar2::GCLevel == LC_NC) return;
+
+    pair<Cost, bool> result;
+    vector<int> cDomain, cDomain2;
+    bool deleted = false;
+    //for (int i=0;i<arity_;i++) {
+    for (vector<int>::iterator it = rmv.begin(); it != rmv.end(); it++) {
+        int i = *it;
+        cDomain.clear();
+        getDomainFromGraph(graph, i, cDomain);
+        sort(cDomain.begin(), cDomain.end());
+        EnumeratedVariable* y = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator v = y->begin(); v != y->end(); ++v) {
+            vector<int>::iterator it = find(cDomain.begin(), cDomain.end(), *v);
+            if (it == cDomain.end()) {
+                cout << "non exist a value ?" << endl;
+                for (vector<int>::iterator v = cDomain.begin(); v != cDomain.end(); v++) {
+                    cout << *v << " ";
+                }
+                cout << endl;
+                for (EnumeratedVariable::iterator v = y->begin(); v != y->end(); ++v) {
+                    cout << *v << " ";
+                }
+                cout << endl;
+                graph.print();
+                exit(0);
+            }
+            cDomain.erase(it);
+            deleted = true;
+        }
+        if (!cDomain.empty()) {
+            //bool flag = false;
+            cDomain2.clear();
+            //rmv.push_back(i);
+            for (vector<int>::iterator v = cDomain.begin(); v != cDomain.end(); v++) {
+                pair<int, int> edge = mapto(i, *v);
+                if (!graph.removeEdge(edge.first, edge.second)) {
+                    cDomain2.push_back(*v);
+                }
+            }
+            for (vector<int>::iterator v = cDomain2.begin(); v != cDomain2.end(); v++) {
+                pair<int, int> edge = mapto(i, *v);
+                vector<Cost> weight = graph.getWeight(edge.second, edge.first);
+                if (weight.size() == 0) {
+                    cout << "error for non-existence of edge (" << edge.second << "," << edge.first << ")\n";
+                    graph.print();
+                    exit(0);
+                }
+                result = graph.augment(edge.first, edge.second, true);
+                if (result.second) {
+                    //flag = true;
+                    cost += weight[0] + result.first;
+                    result.second = graph.removeEdge(edge.first, edge.second);
+                }
+                if (!result.second) {
+                    cout << "ERROR cannot delete edge (" << edge.second << "," << edge.first << ")\n";
+                    graph.print();
+                    exit(0);
+                }
+            }
+            if (cost > 0)
+                graph.removeNegativeCycles(cost);
+            deleted = true;
+        }
+    }
+    if (deleted) {
+        for (int i = 0; i < graph.size() && (zeroEdges != NULL); i++) {
+            for (int j = 0; j < graph.size(); j++) {
+                zeroEdges[i][j] = false;
+            }
+        }
+    }
+}
+
+void FlowBasedGlobalConstraint::findProjection(Graph& graph, StoreCost& cost, int varindex, map<Value, Cost>& delta)
+{
+
+    //if (ToulBar2::GCLevel == LC_NC) return;
+
+    pair<Cost, bool> result;
+    delta.clear();
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(varindex);
+    for (EnumeratedVariable::iterator j = x->begin(); j != x->end(); ++j) {
+        pair<int, int> edge = mapto(varindex, *j);
+        Cost tmp = cost;
+        //vector<Cost> weight = graph.getWeight(edge.first, edge.second);
+        //if (!weight.empty()) {
+        if (graph.edgeExist(edge.first, edge.second)) {
+            if (zeroEdges[edge.first][edge.second]) {
+                //cout << "good\n";
+                tmp = cost;
+            } else {
+                vector<pair<int, int>> edges;
+                result = graph.augment(edge.second, edge.first, false, edges);
+                /*if (!result.second) {
+				  printf("error! no shortest path\n");
+				  exit(0);
+				  }*/
+                //tmp = cost+result.first+weight[0];
+                tmp = cost + result.first + graph.getMinWeight(edge.first, edge.second);
+                zeroEdges[edge.first][edge.second] = true;
+                for (vector<pair<int, int>>::iterator i = edges.begin(); i != edges.end(); i++) {
+                    zeroEdges[i->first][i->second] = true;
+                }
+            }
+        }
+        assert(tmp >= 0);
+        delta[*j] = tmp;
+    }
+}
+
+void FlowBasedGlobalConstraint::augmentStructure(Graph& graph, StoreCost& cost, int varindex, map<Value, Cost>& delta)
+{
+
+    for (map<Value, Cost>::iterator i = delta.begin(); i != delta.end(); i++) {
+        pair<int, int> edge = mapto(varindex, i->first);
+        if (!graph.increaseCost(edge.first, edge.second, -i->second)) {
+            graph.increaseCost(edge.second, edge.first, i->second);
+            cost -= i->second;
+        }
+    }
+}
+
+void FlowBasedGlobalConstraint::changeAfterExtend(vector<int>& supports, vector<map<Value, Cost>>& deltas)
+{
+
+    for (unsigned int i = 0; i < supports.size(); i++) {
+        for (map<Value, Cost>::iterator v = deltas[i].begin(); v != deltas[i].end(); v++)
+            v->second *= -1;
+        augmentStructure(*graph, cost, supports[i], deltas[i]);
+        for (map<Value, Cost>::iterator v = deltas[i].begin(); v != deltas[i].end(); v++)
+            v->second *= -1;
+    }
+    graph->removeNegativeCycles(cost);
+    for (int i = 0; i < graph->size(); i++) {
+        for (int j = 0; j < graph->size(); j++) {
+            zeroEdges[i][j] = false;
+        }
+    }
+}
+
+void FlowBasedGlobalConstraint::changeAfterProject(vector<int>& supports, vector<map<Value, Cost>>& deltas)
+{
+
+    for (unsigned int i = 0; i < supports.size(); i++) {
+        augmentStructure(*graph, cost, supports[i], deltas[i]);
+    }
+    graph->removeNegativeCycles(cost);
+}
+
+void FlowBasedGlobalConstraint::getDomainFromGraph(Graph& graph, int varindex, vector<int>& domain)
+{
+
+    domain.clear();
+    for (map<Value, int>::iterator i = mapval.begin(); i != mapval.end(); i++) {
+        if ((graph.edgeExist(i->second, varindex + 1)) || (graph.edgeExist(varindex + 1, i->second))) {
+            domain.push_back(i->first);
+        }
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2flowbasedconstr.hpp b/code/include/tb2/globals/tb2flowbasedconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..ffc711458662416ac0b45587efa6fef44282b274
--- /dev/null
+++ b/code/include/tb2/globals/tb2flowbasedconstr.hpp
@@ -0,0 +1,111 @@
+/** \file tb2flowbasedconstr.hpp
+ *  \brief Global constraint using flow networks structure for propagation
+ *
+ */
+
+#ifndef TB2FLOWBASEDCONSTR_HPP_
+#define TB2FLOWBASEDCONSTR_HPP_
+
+#include "tb2globalconstr.hpp"
+#include "tb2graph.hpp"
+
+class FlowBasedGlobalConstraint : public GlobalConstraint {
+protected:
+    // graph : the flow network corresponding to current cost measure
+    Graph* graph;
+    StoreCost cost;
+
+    // zeroEdges : store the edges containing in a zero cycle.
+    // zeroEdges[i][j] returns true if (i,j) lies in a zero cycle.
+    bool** zeroEdges;
+
+    bool hasConfigOrganized;
+
+    // mapval : map the value to the node in the network
+    map<Value, int> mapval;
+
+    // mapto : map the assignment to the corresponding edge in the network
+    virtual pair<int, int> mapto(int varindex, Value val)
+    {
+        return make_pair(varindex + 1, mapval[val]);
+    }
+
+    // compute the projection from the network. store the projected cost in
+    // the map delta
+    virtual void findProjection(Graph& graph, StoreCost& cost, int varindex, map<Value, Cost>& delta);
+    void findProjection(int varindex, map<Value, Cost>& delta)
+    {
+        findProjection(*graph, cost, varindex, delta);
+    }
+
+    // check whether the network corresponding to the current domains
+    // remove any edge which is corresponded to an infeasible assignment
+    virtual void checkRemoved(Graph& graph, StoreCost& cost, vector<int>& rmv);
+    void checkRemoved(vector<int>& rmv)
+    {
+        checkRemoved(*graph, cost, rmv);
+    }
+
+    virtual void changeAfterExtend(vector<int>& supports, vector<map<Value, Cost>>& deltas);
+    virtual void changeAfterProject(vector<int>& supports, vector<map<Value, Cost>>& deltas);
+    virtual void undoExtend() {}
+
+    // construct the flow network
+    virtual size_t GetGraphAllocatedSize() = 0;
+    virtual void buildGraph(Graph& g) = 0;
+    //inline void buildGraph() {buildGraph(graph);}
+    inline void augmentGraph(int varindex, map<Value, Cost>& delta)
+    {
+        augmentStructure(*graph, cost, varindex, delta);
+        graph->removeNegativeCycles(cost);
+    }
+
+    // construct the flow in the network
+    // the network changed to the residual network
+    virtual Cost constructFlow(Graph& g);
+    //inline Cost constructFlow() {return constructFlow(graph);}
+
+    // compute the domains of a variable from the network
+    virtual void getDomainFromGraph(Graph& graph, int varindex, vector<int>& domain);
+
+    // augment the network by increasing the weight of the edegs
+    // corresponding to the assignment of varindex according to delta
+    virtual void augmentStructure(Graph& graph, StoreCost& cost, int varindex, map<Value, Cost>& delta);
+
+    // compute the cost according to the original cost structure
+    virtual Cost evalOriginal(const Tuple& s) { return MIN_COST; }
+    virtual Cost getMinCost()
+    {
+        return cost;
+    }
+
+public:
+    FlowBasedGlobalConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in);
+
+    virtual ~FlowBasedGlobalConstraint();
+
+    virtual void organizeConfig() {}
+    virtual void initStructure();
+    virtual void end() {}
+
+    //void propagate();
+
+    // check whether the consistency is achieved
+    bool verify() { return true; }
+
+#ifndef NDEBUG
+    bool isStrongNIC();
+    bool isGAC();
+    bool isFDGAC();
+    bool isEDGAC();
+#endif
+};
+
+#endif /*TB2FLOWBASEDCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2globalcardinalityconstr.cpp b/code/include/tb2/globals/tb2globalcardinalityconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..83dc0a515f4f0023b68149d5e242779b3cadfb87
--- /dev/null
+++ b/code/include/tb2/globals/tb2globalcardinalityconstr.cpp
@@ -0,0 +1,331 @@
+#include "tb2globalcardinalityconstr.hpp"
+#include "core/tb2wcsp.hpp"
+
+#define upper_bound first
+#define lower_bound second
+
+GlobalCardinalityConstraint::GlobalCardinalityConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in)
+    : FlowBasedGlobalConstraint(wcsp, scope_in, arity_in)
+{
+    buildIndex();
+
+    modeEnum["var"] = GlobalCardinalityConstraint::VAR;
+    modeEnum["dec"] = GlobalCardinalityConstraint::VALUE;
+    modeEnum["wdec"] = GlobalCardinalityConstraint::WVALUE;
+}
+
+void GlobalCardinalityConstraint::buildIndex()
+{
+    vector<Value> D;
+    mapval.clear();
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            D.push_back(*iterx);
+        }
+    }
+    sort(D.begin(), D.end());
+    D.erase(unique(D.begin(), D.end()), D.end());
+
+    for (vector<Value>::iterator i = D.begin(); i != D.end(); i++) {
+        mapval[*i] = arity_ + (int)(i - D.begin()) + 1;
+    }
+    nDistinctDomainValue = D.size();
+    //graph.setSize(arity_+D.size()+4);
+}
+
+void GlobalCardinalityConstraint::read(istream& file, bool mult)
+{
+    // "var" => softvar
+    // "dec" => softdec
+    // "wdec" => sigmadec
+    string str;
+    int nvalues;
+    //int sumlow = 0, sumhigh = 0;
+    file >> str;
+    //JP Start// alteration
+    /*mode = EMPTY;
+	if (strcmp(str.c_str(), "var") 	== 0) mode = VAR;
+	if (strcmp(str.c_str(), "dec") 	== 0) mode = VALUE;
+	if (strcmp(str.c_str(), "wdec") == 0) mode = WVALUE;
+	if (mode == EMPTY) {
+		cerr << "Error occurred in reading gcc() : No violation measure" << endl;
+		exit(1);
+	}*/
+    setSemantics(str);
+    //JP End//
+    file >> def;
+    if (mult)
+        def *= ToulBar2::costMultiplier;
+    file >> nvalues;
+    //JP End//
+    for (int i = 0; i < nvalues; i++) {
+        int d, high, low;
+        file >> d >> low >> high;
+        if (high < low) {
+            cerr << "Error occurred in reading gcc: upper bound " << high << " smaller than lower bound " << low << endl;
+            THROWCONTRADICTION;
+        }
+        //JP Start//
+        Cost wshortage = def;
+        Cost wexcess = def;
+        if (mode == WVALUE) {
+            file >> wshortage >> wexcess;
+            if (mult) {
+                wshortage *= ToulBar2::costMultiplier;
+                wexcess *= ToulBar2::costMultiplier;
+            }
+        }
+        //JP End//
+        bound[d] = make_pair(high, low);
+        weights[d] = make_pair(wshortage, wexcess);
+        //sumlow += low;
+        //sumhigh += high;
+    }
+}
+
+void GlobalCardinalityConstraint::organizeConfig()
+{
+
+    int sumlow = 0, sumhigh = 0;
+
+    for (map<Value, pair<int, int>>::iterator i = bound.begin(); i != bound.end(); i++) {
+        sumlow += i->second.lower_bound;
+        sumhigh += i->second.upper_bound;
+    }
+
+    for (map<Value, int>::iterator i = mapval.begin(); i != mapval.end(); i++) {
+        if (bound.find(i->first) == bound.end()) {
+            bound[i->first] = make_pair(arity_ + 4, 0);
+            sumhigh += arity_ + 4;
+        }
+    }
+
+    for (map<Value, int>::iterator i = mapval.begin(); i != mapval.end(); i++) {
+        if (weights.find(i->first) == weights.end()) {
+            weights[i->first] = make_pair(def, def);
+        }
+    }
+
+    if ((mode == VAR) && ((arity_ < sumlow) || (arity_ > sumhigh))) {
+        if (ToulBar2::verbose >= 0) {
+            cerr << "Error occurred in gcc() model using variable-based measure : " << endl;
+            cerr << "sum of lower bound is too high / sum of upper bound is too low compared to arity." << endl;
+            cerr << "sum high = " << sumhigh << endl;
+            cerr << "sum low = " << sumlow << endl;
+            cerr << "arity = " << arity_ << endl;
+        }
+        THROWCONTRADICTION;
+    }
+}
+
+Cost GlobalCardinalityConstraint::evalOriginal(const Tuple& s)
+{
+
+    Cost excess = 0, shortage = 0, cost = 0;
+    map<Value, int> appear;
+    for (unsigned int i = 0; i < s.size(); i++) {
+        appear[s[i]]++;
+    }
+    for (map<Value, pair<int, int>>::iterator i = bound.begin(); i != bound.end(); i++) {
+        if (appear[i->first] < i->second.lower_bound) {
+            //JP Start// Alteration
+            Cost lshortage = i->second.lower_bound - appear[i->first];
+            shortage += lshortage;
+            cost += lshortage * weights[i->first].first;
+            //JP End//
+        }
+        if (appear[i->first] > i->second.upper_bound) {
+            //JP Start// Alteration
+            Cost lexcess = appear[i->first] - i->second.upper_bound;
+            excess += lexcess;
+            cost += lexcess * weights[i->first].second;
+            //JP End//
+        }
+    }
+    //JP Start// Alteration
+    if (mode == VAR) {
+        cost = (excess > shortage) ? excess * def : shortage * def;
+    }
+    //JP End//
+    return cost;
+}
+
+size_t GlobalCardinalityConstraint::GetGraphAllocatedSize()
+{
+    return arity_ + nDistinctDomainValue + 4;
+}
+
+void GlobalCardinalityConstraint::buildGraph(Graph& g)
+{
+
+    int n = g.size();
+    int t = n - 3;
+
+    int ss = n - 1;
+    int st = n - 2;
+
+    //g.clearEdge();
+    g.addEdge(t, 0, 0, INF);
+    g.addEdge(0, st, 0, arity_);
+
+    for (int i = 0; i < arity_; i++) {
+        g.addEdge(ss, i + 1, 0, 1);
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+            g.addEdge(i + 1, mapval[*v], -deltaCost[i][x->toIndex(*v)]);
+        }
+    }
+
+    int sumlow = 0;
+    for (map<Value, int>::iterator i = mapval.begin(); i != mapval.end(); i++) {
+        if (bound[i->first].lower_bound != 0)
+            g.addEdge(i->second, st, 0, bound[i->first].lower_bound);
+        if (bound[i->first].upper_bound != bound[i->first].lower_bound)
+            g.addEdge(i->second, t, 0, bound[i->first].upper_bound - bound[i->first].lower_bound);
+        sumlow += bound[i->first].lower_bound;
+    }
+    if (sumlow > 0)
+        g.addEdge(ss, t, 0, sumlow);
+
+    if (mode == VAR) {
+        for (map<Value, int>::iterator i = mapval.begin(); i != mapval.end(); i++) {
+            for (map<Value, int>::iterator j = mapval.begin(); j != mapval.end(); j++) {
+                if (i->first != j->first)
+                    g.addEdge(i->second, j->second, def, arity_);
+            }
+        }
+    } else {
+        for (map<Value, int>::iterator i = mapval.begin(); i != mapval.end(); i++) {
+            //JP Start// Alteration
+            if (bound[i->first].lower_bound > 0)
+                g.addEdge(0, i->second, weights[i->first].first, bound[i->first].lower_bound);
+            g.addEdge(i->second, t, weights[i->first].second, arity_);
+            //JP End//
+        }
+    }
+}
+
+Cost GlobalCardinalityConstraint::constructFlow(Graph& g)
+{
+
+    //cout << "use the one\n";
+    /*pair<int, bool> result;
+	int n = g.size();
+	int ss = n-1;
+	int st = n-2;
+	int fcost = 0;
+	//int fcost = -projectedCost;
+
+	do {
+		int minc = 0;
+		result = g.augment(ss, st, true, minc);
+		if (result.second) fcost += minc*result.first;
+	} while (result.second);*/
+    //checker(g, fcost);
+
+    pair<int, Cost> result = g.minCostFlow(g.size() - 1, g.size() - 2);
+    return result.second;
+    //return fcost;
+}
+
+/*void GlobalCardinalityConstraint::getDomainFromGraph(Graph &graph, int varindex, vector<int> &domain) {
+
+	domain.clear();
+	for (vector<List_Node >::iterator k = graph[varindex+1].begin();
+			k != graph[varindex+1].end(); k++) {
+		if (k->adj > 0) {
+			for (map<Value, int>::iterator i = mapval.begin();i !=
+					mapval.end();i++) {
+				if (i->second == k->adj) domain.push_back(i->first);
+			}
+		}
+	}
+	for (map<Value, int>::iterator i = mapval.begin();i !=
+			mapval.end();i++) {
+		for (vector<List_Node >::iterator k = graph[i->second].begin();
+				k != graph[i->second].end(); k++) {
+			if (k->adj == varindex+1) {
+				domain.push_back(i->first);
+			}
+		}
+	}
+
+}*/
+
+void GlobalCardinalityConstraint::dump(ostream& os, bool original)
+{
+    assert(original); //TODO: case original is false
+    int nvalues = 0;
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    for (map<Value, pair<int, int>>::iterator i = bound.begin(); i != bound.end(); i++)
+        nvalues++;
+    os << " -1 sgcc"
+       << " ";
+    if (mode == VAR)
+        os << "var";
+    if (mode == VALUE)
+        os << "dec";
+    if (mode == WVALUE)
+        os << "wdec";
+    os << " " << def << " " << nvalues << endl;
+    for (map<Value, pair<int, int>>::iterator i = bound.begin(); i != bound.end(); i++) {
+        os << i->first << " " << i->second.lower_bound << " " << i->second.upper_bound;
+        if (mode == WVALUE)
+            os << " " << weights[i->first].first << " " << weights[i->first].second;
+        os << endl;
+    }
+}
+
+string GlobalCardinalityConstraint::getName()
+{
+    string name = "sgcc";
+    int nvalues = 0;
+    for (map<Value, pair<int, int>>::iterator i = bound.begin(); i != bound.end(); i++)
+        nvalues++;
+    name += "[" + to_string(nvalues);
+    for (map<Value, pair<int, int>>::iterator i = bound.begin(); i != bound.end(); i++) {
+        name += "," + to_string(i->first) + "," + to_string(i->second.lower_bound) + "," + to_string(i->second.upper_bound);
+        if (mode == WVALUE)
+            name += "," + to_string(weights[i->first].first) + "," + to_string(weights[i->first].second);
+    }
+    name += "]";
+    return name;
+}
+
+//void GlobalCardinalityConstraint::print(ostream& os) {
+//    int nvalues = 0;
+//
+//    os << "sgcc(";
+//    for(int i = 0; i < arity_;i++) {
+//        os << scope[i]->wcspIndex;
+//        if(i < arity_-1) os << ",";
+//    }
+//    for (map<Value, pair<int,int> >::iterator i = bound.begin(); i !=	bound.end();i++) nvalues++;
+//    os << ")[" ;
+//    if (mode == VAR   ) os << "var";
+//    if (mode == VALUE ) os << "dec";
+//    if (mode == WVALUE) os << "wdec";
+//    os << "," << def << "," << nvalues;
+//    for (map<Value, pair<int,int> >::iterator i = bound.begin(); i !=	bound.end();i++) {
+//        os << "," << i->first << "," << i->second.lower_bound << "," << i->second.upper_bound;
+//        if (mode == WVALUE) os << "," << weights[i->first].first << "," << weights[i->first].second;
+//    }
+//    os << "]";
+//}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2globalcardinalityconstr.hpp b/code/include/tb2/globals/tb2globalcardinalityconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..599687fcd17109f05ca22296bfcb55cef3d0ad9e
--- /dev/null
+++ b/code/include/tb2/globals/tb2globalcardinalityconstr.hpp
@@ -0,0 +1,78 @@
+/** \file tb2globalcardinalityconstr.hpp
+ *  \brief Flow based global cost function : sgcc_flow
+ */
+
+#ifndef TB2GLOBALCARDCONSTR_HPP_
+#define TB2GLOBALCARDCONSTR_HPP_
+
+//#include "glpk.h"
+//#include "stddef.h"
+#include "tb2flowbasedconstr.hpp"
+
+class GlobalCardinalityConstraint : public FlowBasedGlobalConstraint {
+private:
+    map<Value, pair<int, int>> bound;
+    void buildIndex();
+    size_t GetGraphAllocatedSize();
+    void buildGraph(Graph& g);
+    Cost constructFlow(Graph& g);
+    pair<int, int> mapto(int varindex, Value val)
+    {
+        return make_pair(varindex + 1, mapval[val]);
+    }
+    //JP Start// This array stores the respective weight of each bound
+    map<Value, pair<Cost, Cost>> weights;
+    int nDistinctDomainValue;
+    //JP End//
+public:
+    //JP Start// New type
+    static const int EMPTY = -1;
+    static const int WVALUE = 2;
+    //JP End//
+    static const int VALUE = 1;
+    static const int VAR = 0;
+    GlobalCardinalityConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int
+                                                                               arity_in);
+
+    ~GlobalCardinalityConstraint()
+    {
+        /*if (ToulBar2::consistencyLevel != FINE_IC) {
+				cout << "no. of GAC propagation = " << count << endl;
+				cout << "no. of FDAC propagation = " << count_fdac << endl;
+				cout << "no. of error = " << error << endl;
+			}*/
+    }
+
+    string getName();
+    Cost evalOriginal(const Tuple& s);
+    void read(istream& file, bool mult = true);
+
+    //GlobalCostFunctionParameters* getParameters() {return this;}
+    void addValueAndBounds(Value value, int upper = -1, int lower = 0)
+    {
+        if (upper == -1)
+            upper = arity();
+        bound[value] = make_pair(lower, upper);
+    }
+    void addValueAndWeights(Value value, Cost wexcess = -1, Cost wshortage = -1)
+    {
+        if (wexcess == -1)
+            wexcess = def;
+        if (wshortage == -1)
+            wshortage = def;
+        weights[value] = make_pair(wshortage, wexcess);
+    }
+    void organizeConfig();
+
+    //    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+};
+
+#endif /*TB2GLOBALCARDCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2globalconstr.cpp b/code/include/tb2/globals/tb2globalconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b9a408b5a73d418cde13c85cfa8a4421adb1397f
--- /dev/null
+++ b/code/include/tb2/globals/tb2globalconstr.cpp
@@ -0,0 +1,689 @@
+#include "tb2globalconstr.hpp"
+#include "core/tb2wcsp.hpp"
+#include "search/tb2clusters.hpp"
+
+GlobalConstraint::GlobalConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in, Cost defval)
+    : AbstractGlobalConstraint(wcsp, scope_in, arity_in)
+    , extendedCost(NULL)
+    , projectedCost(0)
+    , nonassigned(arity_in)
+    , currentVar(-1)
+    , needPropagateAC(false)
+    , needPropagateDAC(false)
+    , needPropagateEAC(false)
+    , currentDepth(-1)
+    , def(1)
+    , mode(0)
+    , count_nic(0)
+    , count_gac(0)
+    , count_fdac(0)
+    , count_edac(0)
+    , error(0)
+{
+    deltaCost = new vector<StoreCost>[arity_];
+    for (int i = 0; i < arity_in; i++) {
+        deltaCost[i] = vector<StoreCost>(scope_in[i]->getDomainInitSize(), StoreCost(0));
+        fill(deltaCost[i].begin(), deltaCost[i].end(), 0);
+    }
+
+    fullySupportedSet = new set<int>[arity_in];
+
+    preUnaryCosts.resize(arity_in);
+    for (int i = 0; i < arity_in; i++)
+        preUnaryCosts[i].resize(scope[i]->getDomainInitSize(), 0);
+}
+
+GlobalConstraint::~GlobalConstraint()
+{
+    if (deltaCost != NULL)
+        delete[] deltaCost;
+    if (fullySupportedSet != NULL)
+        delete[] fullySupportedSet;
+}
+
+void GlobalConstraint::init()
+{
+    if (deconnected())
+        return;
+    needPropagateAC = true;
+    needPropagateDAC = true;
+    needPropagateEAC = false;
+    EACCost.clear();
+    for (int i = 0; i < arity_; i++)
+        fullySupportedSet[i].clear();
+    /*if ((currentDepth == -1) || (currentDepth >= Store::getDepth())) {
+		initStructure();
+	} else {
+		vector<int> rmv;
+		checkRemoved(rmv);
+	}
+	currentDepth = Store::getDepth();*/
+    initStructure();
+    propagate();
+}
+
+void GlobalConstraint::print(ostream& os)
+{
+    os << this << " " << getName() << "(";
+    int unassigned_ = 0;
+    for (int i = 0; i < arity(); i++) {
+        if (scope[i]->unassigned())
+            unassigned_++;
+        os << scope[i]->wcspIndex;
+        if (i < arity_ - 1)
+            os << ",";
+    }
+    // string smode = "";
+    // for (map<string,int>::iterator iter = modeEnum.begin(); iter != modeEnum.begin(); ++iter) {
+    // 	if ((*iter).second == mode) {
+    // 	  smode = (*iter).first;
+    // 	  break;
+    // 	}
+    // }
+    os << ") mode: " << mode << ",defcost: " << def << ",";
+    os << " unassigned: " << unassigned_ << "/" << nonassigned << "/" << arity();
+    os << endl;
+    if (ToulBar2::verbose >= 4)
+        showCostProvidingPartition();
+    if (ToulBar2::verbose >= 5) {
+        os << "projectedCost: " << projectedCost << endl;
+        for (int i = 0; i < arity(); i++) {
+            os << "deltaCost[" << i << "]:";
+            for (unsigned int j = 0; j < deltaCost[i].size(); j++) {
+                os << " " << deltaCost[i][j];
+            }
+            os << endl;
+            // os << "extendedCost[" << i << "]:";
+            // for(unsigned int j = 0; j < extendedCost[i].size();j++) {os << " " << extendedCost[i][j];}
+            // os << endl;
+        }
+    }
+    if (ToulBar2::verbose >= 6)
+        for (int i = 0; i < arity(); i++)
+            os << *scope[i] << endl;
+}
+
+Cost GlobalConstraint::eval(const Tuple& s)
+{
+
+    Cost tcost = evalOriginal(s);
+    for (unsigned int i = 0; i < s.size(); i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        if (tcost < wcsp->getUb()) {
+            tcost -= deltaCost[i][x->toIndex(s[i])];
+        }
+    }
+    if (tcost < wcsp->getUb()) {
+        tcost -= projectedCost;
+    }
+    assert(tcost >= 0);
+    return tcost;
+}
+
+void GlobalConstraint::assign(int varIndex)
+{
+
+    if (connected(varIndex)) {
+        deconnect(varIndex);
+        nonassigned = nonassigned - 1;
+        if (nonassigned == 0) {
+            deconnect();
+            Tuple t(arity_, 0);
+            for (int i = 0; i < arity_; i++) {
+                t[i] = ((EnumeratedVariable*)getVar(i))->toIndex(getVar(i)->getValue());
+            }
+            wcsp->revise(this);
+            projectLB(eval(t));
+        } else {
+            pushAll();
+            if (ToulBar2::FullEAC)
+                reviseEACGreedySolution();
+        }
+    }
+}
+
+void GlobalConstraint::project(int index, Value value, Cost cost, bool delayed)
+{
+    if (deconnected())
+        return;
+    assert(ToulBar2::verbose < 4 || ((cout << "[" << Store::getDepth() << "] project(" << getName() << ", " << getVar(index)->getName() << ", " << value << ", " << cost << ")" << endl), true));
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(index);
+    // hard binary constraint costs are not changed
+    if (!CUT(cost + wcsp->getLb(), wcsp->getUb())) {
+        TreeDecomposition* td = wcsp->getTreeDec();
+        if (td)
+            td->addDelta(cluster, x, value, cost);
+        deltaCost[index][x->toIndex(value)] += cost; // Warning! Possible overflow???
+    }
+    x->project(value, cost, delayed);
+}
+
+void GlobalConstraint::extend(int index, Value value, Cost cost)
+{
+    assert(ToulBar2::verbose < 4 || ((cout << "[" << Store::getDepth() << "] extend(" << getName() << "," << getVar(index)->getName() << "," << value << ", " << cost << ")" << endl), true));
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(index);
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (td)
+        td->addDelta(cluster, x, value, -cost);
+    deltaCost[index][x->toIndex(value)] -= cost; // Warning! Possible overflow???
+    x->extend(value, cost);
+}
+
+// function used for propagation
+void GlobalConstraint::remove(int index)
+{
+    //vector<int> rmv;
+    currentVar = -1;
+    needPropagateDAC = true;
+    needPropagateAC = true;
+}
+
+void GlobalConstraint::projectFromZero(int index)
+{
+    //vector<int> rmv;
+    currentVar = -1;
+    needPropagateDAC = true;
+}
+
+void GlobalConstraint::propagate()
+{
+
+    for (int i = 0; connected() && i < arity_; i++) {
+        if (getVar(i)->assigned())
+            assign(i);
+    }
+
+    if (deconnected())
+        return;
+
+    needPropagateEAC = false;
+    currentVar = -1;
+
+    wcsp->revise(this);
+
+    vector<int> rmv;
+    for (int i = 0; i < arity_; i++)
+        rmv.push_back(i);
+    checkRemoved(rmv);
+
+    switch (ToulBar2::LcLevel) {
+    case LC_DAC:
+        if (needPropagateDAC || needPropagateAC) {
+            propagateDAC();
+            needPropagateDAC = false;
+            needPropagateAC = false;
+        }
+        break;
+    case LC_EDAC:
+        propagateEAC(); // not implemented yet (uses isEAC and findFullSupportEAC instead)
+    case LC_FDAC:
+        if (needPropagateDAC) {
+            propagateDAC();
+            needPropagateDAC = false;
+        }
+    case LC_AC:
+        if (needPropagateAC) {
+            propagateAC();
+            needPropagateAC = false;
+        }
+        break;
+    case LC_SNIC:
+        propagateStrongNIC();
+        break;
+    default:
+        break;
+    }
+}
+
+void GlobalConstraint::propagateEAC()
+{
+    //not done here but wait for variable's propagateEAC
+
+    //	vector<int> provide;
+    //	provide.resize(arity_);
+    //	vector<map<Value, Cost> > deltas(arity_);
+    //	for (int i=0;i<arity_;i++) {
+    //		EnumeratedVariable *x = (EnumeratedVariable*)getVar(i);
+    //		for (EnumeratedVariable::iterator v = x->begin();v != x->end();++v) {
+    //			provide[i] = i;
+    //			deltas[i][*v] = x->getCost(*v);
+    //		}
+    //	}
+    //	changeAfterExtend(provide, deltas);
+    //
+    //	for (int i=0;i<arity_;i++) {
+    //		if (getVar(i)->unassigned()) {
+    //			map<Value, Cost> delta;
+    //			EnumeratedVariable *x = (EnumeratedVariable*)getVar(i);
+    //			findProjection(i, delta);
+    //			for (map<Value, Cost>::iterator p = delta.begin(); p != delta.end();p++) {
+    //				if (wcsp->getLb() + p->second >= wcsp->getUb()) {
+    //					x->remove(p->first);
+    //				}
+    //			}
+    //		}
+    //	}
+    //	//undoExtend();
+    //    changeAfterProject(provide, deltas);
+}
+
+void GlobalConstraint::propagateDAC()
+{
+    if (ToulBar2::verbose >= 3)
+        cout << "propagateDAC for " << *this << endl;
+
+    vector<map<Value, Cost>> deltas;
+    vector<int> vars;
+    vector<int> rmv;
+    //checkRemoved(rmv);
+    for (int ii = 0; ii < arity_; ii++) {
+        EnumeratedVariable* x = scope_dac[ii];
+        int i = scope_inv[x->wcspIndex];
+        if (x->unassigned()) {
+            map<Value, Cost> delta;
+            for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+                delta[*it] = x->getCost(*it);
+                //deltaCost[i][x->toIndex(*it)] -= x->getCost(*it);
+                preUnaryCosts[i][x->toIndex(*it)] = x->getCost(*it);
+            }
+            vars.push_back(i);
+            deltas.push_back(delta);
+        }
+    }
+    changeAfterExtend(vars, deltas);
+
+    for (int ii = 0; ii < arity_; ii++) {
+        EnumeratedVariable* x = scope_dac[ii];
+        int varindex = scope_inv[x->wcspIndex];
+        if (x->unassigned()) {
+            //delta.clear();
+            map<Value, Cost> delta;
+            findProjection(varindex, delta);
+            for (map<Value, Cost>::iterator i = delta.begin(); i != delta.end(); i++) {
+                //deltaCost[varindex][x->toIndex(i->first)] += preUnaryCosts[varindex][x->toIndex(i->first)];
+                Cost costDelta = i->second - preUnaryCosts[varindex][x->toIndex(i->first)];
+                if (costDelta > 0) {
+                    if (CUT(costDelta + wcsp->getLb(), wcsp->getUb())) {
+                        i->second = preUnaryCosts[varindex][x->toIndex(i->first)];
+                    }
+                    project(varindex, i->first, costDelta, true);
+                } else if (costDelta < 0) {
+                    extend(varindex, i->first, -costDelta);
+                }
+            }
+            changeAfterProject(varindex, delta);
+            x->findSupport();
+
+            rmv.clear();
+            rmv.push_back(varindex);
+            checkRemoved(rmv);
+        }
+    }
+    //vector<int> rmv; //
+    /*for (int i=0;i<arity_;i++) {
+		if (getVar(i)->unassigned()) {
+			checkRemoved(rmv);
+			findFullSupport(i);
+		}
+	}*/
+}
+
+void GlobalConstraint::propagateAC()
+{
+    vector<int> rmv;
+    for (int i = 0; i < arity_; i++) {
+        if (getVar(i)->unassigned()) {
+            findSupport(i);
+            rmv.clear();
+            rmv.push_back(i);
+            checkRemoved(rmv);
+        }
+    }
+}
+
+void GlobalConstraint::propagateStrongNIC()
+{
+    vector<int> rmv;
+    checkRemoved(rmv);
+    bool cont = false;
+    do {
+        cont = false;
+        for (int varindex = 0; varindex < arity_; varindex++) {
+            EnumeratedVariable* x = (EnumeratedVariable*)getVar(varindex);
+            if (x->unassigned()) {
+                unsigned int oldD = x->getDomainSize();
+                checkMinCost(varindex);
+                if (oldD != x->getDomainSize())
+                    cont = true;
+            }
+        }
+        if (cont)
+            checkRemoved(rmv);
+    } while (cont);
+
+    propagateNIC();
+}
+
+void GlobalConstraint::propagateNIC()
+{
+
+    if (deconnected())
+        return;
+    //wcsp->revise(this);
+    vector<int> rmv;
+    checkRemoved(rmv);
+    Cost mincost = getMinCost();
+    if (mincost - projectedCost > 0) {
+        Cost diff = mincost - projectedCost;
+        projectedCost += diff;
+        wcsp->increaseLb(diff);
+    }
+}
+
+/*void GlobalConstraint::getCostsWithUnary(int index, map<Value, Cost> &costs) {
+
+	vector<int> rmv, support;
+	checkRemoved(rmv);
+	vector<map<Value, Cost> > deltas;
+	for (set<int>::iterator i = fullySupportedSet[index].begin();i !=
+			fullySupportedSet[index].end();i++) {
+		EnumeratedVariable *x = (EnumeratedVariable*)getVar(*i);
+		if (x->unassigned() && (*i != index)) {
+			support.push_back(*i);
+			map<Value, Cost> delta;
+			for (EnumeratedVariable::iterator v = x->begin();v != x->end();++v) delta[*v] = x->getCost(*v);
+			deltas.push_back(delta);
+		}
+	}
+	changeAfterExtend(support, deltas);		
+
+	map<Value, Cost> delta;
+	EnumeratedVariable *x = (EnumeratedVariable*)getVar(index);
+	findProjection(index, delta);
+	for (map<Value, Cost>::iterator p = delta.begin(); p != delta.end();p++) {
+		costs[p->first] += p->second;
+	}
+	undoExtend();
+
+}*/
+
+bool GlobalConstraint::isEAC(int index, Value a)
+{
+    if (ToulBar2::FullEAC)
+        reviseEACGreedySolution(index, a);
+    if (currentVar != index) {
+        currentVar = index;
+
+        vector<int> rmv;
+        for (int i = 0; i < arity_; i++)
+            rmv.push_back(i);
+        checkRemoved(rmv);
+
+        vector<int> support;
+        vector<map<Value, Cost>> deltas;
+        for (set<int>::iterator i = fullySupportedSet[index].begin(); i != fullySupportedSet[index].end(); i++) {
+            EnumeratedVariable* x = (EnumeratedVariable*)getVar(*i);
+            if (x->unassigned() && (*i != index)) {
+                support.push_back(*i);
+                map<Value, Cost> delta;
+                for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v)
+                    delta[*v] = x->getCost(*v);
+                deltas.push_back(delta);
+            }
+        }
+        changeAfterExtend(support, deltas);
+        EACCost.clear();
+        findProjection(index, EACCost);
+        //undoExtend();
+        changeAfterProject(support, deltas);
+    }
+    if (EACCost[a] < 0) {
+        cout << "EAC error\n";
+        EACCost[a] = 0;
+    }
+    //if (EACCost[a] > 0) needPropagateEAC = true;
+    return (EACCost[a] == 0);
+}
+
+void GlobalConstraint::fillEAC2(int varindex)
+{
+    currentVar = -1;
+    for (int index = 0; index < arity_; index++) {
+        if (index != varindex) {
+            EnumeratedVariable* var = (EnumeratedVariable*)getVar(index);
+            if (var->unassigned())
+                var->queueEAC2();
+        }
+    }
+}
+
+//TODO: applies DAC order when enumerating variables (fullySupportedSet does not preserve DAC order)
+void GlobalConstraint::findFullSupportEAC(int index)
+{
+    if (ToulBar2::verbose >= 3)
+        cout << "findFullSupportEAC for variable " << index << endl;
+    currentVar = -1;
+    //if (needPropagateEAC)
+    {
+        //needPropagateEAC = false;
+
+        vector<map<Value, Cost>> deltas;
+        vector<int> vars;
+        vector<int> rmv;
+        //vars.push_back(index);
+        vars.push_back(index);
+        for (set<int>::iterator i = fullySupportedSet[index].begin(); i != fullySupportedSet[index].end(); i++) {
+            EnumeratedVariable* x = scope[*i];
+            if (x->unassigned() && (*i != index)) {
+                vars.push_back(*i);
+            }
+        }
+
+        for (vector<int>::iterator i = vars.begin(); i != vars.end(); ++i) {
+            EnumeratedVariable* x = scope[*i];
+            map<Value, Cost> delta;
+            for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+                delta[*it] = x->getCost(*it);
+                //deltaCost[i][x->toIndex(*it)] -= x->getCost(*it);
+                preUnaryCosts[*i][x->toIndex(*it)] = x->getCost(*it);
+            }
+            //vars.push_back(*i);
+            deltas.push_back(delta);
+        }
+        changeAfterExtend(vars, deltas);
+
+        for (vector<int>::iterator it = vars.begin(); it != vars.end(); ++it) {
+            int varindex = *it;
+            EnumeratedVariable* x = scope[varindex];
+            if (x->unassigned()) {
+                //delta.clear();
+                map<Value, Cost> delta;
+                findProjection(varindex, delta);
+                for (map<Value, Cost>::iterator i = delta.begin(); i != delta.end(); i++) {
+                    //deltaCost[varindex][x->toIndex(i->first)] += preUnaryCosts[varindex][x->toIndex(i->first)];
+                    Cost costDelta = i->second - preUnaryCosts[varindex][x->toIndex(i->first)];
+                    if (costDelta > 0) {
+                        if (CUT(costDelta + wcsp->getLb(), wcsp->getUb())) {
+                            i->second = preUnaryCosts[varindex][x->toIndex(i->first)];
+                        }
+                        project(varindex, i->first, costDelta, true);
+                    } else if (costDelta < 0) {
+                        extend(varindex, i->first, -costDelta);
+                    }
+                }
+                changeAfterProject(varindex, delta);
+                x->findSupport();
+
+                rmv.clear();
+                rmv.push_back(varindex);
+                checkRemoved(rmv);
+            }
+        }
+    }
+}
+
+// THIS CODE IS NEVER USED!!!
+//TODO: applies DAC order when enumerating variables
+void GlobalConstraint::findFullSupport(int varindex, vector<int>& support, bool isEAC)
+{
+    if (ToulBar2::verbose >= 3)
+        cout << "findFullSupport for variable " << varindex << endl;
+    //wcsp->revise(this);
+    EnumeratedVariable* var = (EnumeratedVariable*)getVar(varindex);
+    vector<map<Value, Cost>> deltas(support.size());
+    int count = 0;
+    for (vector<int>::iterator i = support.begin(); i != support.end(); i++, count++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(*i);
+        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+            deltas[count][*v] = x->getCost(*v);
+        }
+    }
+    changeAfterExtend(support, deltas);
+
+    map<Value, Cost> delta;
+    findProjection(varindex, delta);
+
+    map<Value, Cost> P;
+    bool allzero = true;
+    for (map<Value, Cost>::iterator i = delta.begin(); i != delta.end(); i++) {
+        if (i->second > 0) {
+            P[i->first] = i->second;
+            allzero = false;
+        } else if (i->second < 0) {
+            P[i->first] = 0;
+            cout << "projection error\n";
+        }
+    }
+
+    if (allzero) {
+        //undoExtend();
+        changeAfterProject(support, deltas);
+        return;
+    } else {
+        count_fdac++;
+    }
+
+    changeAfterProject(varindex, delta);
+
+    //	map<Value,Cost> *E = new map<Value, Cost>[support.size()];
+    vector<map<Value, Cost>> E;
+    E.resize(support.size());
+
+    int index = 0;
+    for (vector<int>::iterator i = support.begin(); i != support.end(); i++, index++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(*i);
+        if (x->unassigned()) {
+            delta.clear();
+            findProjection(*i, delta);
+            for (map<Value, Cost>::iterator j = delta.begin(); j != delta.end(); j++) {
+                E[index][j->first] = min(x->getCost(j->first) - j->second, x->getCost(j->first));
+                /*if (j->second < 0) {
+				  j->second = 0;
+				  }*/
+                //if (E[index][j->first] > 0) extendedCost[*i][j->first] += j->second;
+            }
+            changeAfterProject(*i, delta);
+        }
+    }
+
+    index = 0;
+    for (vector<int>::iterator i = support.begin(); i != support.end(); i++, index++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(*i);
+        if (x->unassigned()) {
+            for (map<Value, Cost>::iterator j = E[index].begin(); j != E[index].end(); j++) {
+                if (j->second > 0)
+                    extend(*i, j->first, j->second);
+            }
+        }
+    }
+    index = 0;
+    for (vector<int>::iterator i = support.begin(); i != support.end(); i++, index++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(*i);
+        if (x->unassigned()) {
+            bool supportbroken = false;
+            for (map<Value, Cost>::iterator j = E[index].begin(); j != E[index].end(); j++) {
+                if (j->second < 0) {
+                    if (j->first == x->getSupport())
+                        supportbroken = true;
+                    project(*i, j->first, -j->second);
+                }
+            }
+            if (supportbroken)
+                x->findSupport();
+        }
+    }
+
+    bool supportbroken = false;
+    for (map<Value, Cost>::iterator i = P.begin(); i != P.end(); i++) {
+        if (i->second > 0) {
+            if (i->first == var->getSupport())
+                supportbroken = true;
+            project(varindex, i->first, i->second);
+        }
+    }
+    if (supportbroken)
+        var->findSupport();
+    //	delete[] E;
+}
+
+void GlobalConstraint::findSupport(int varindex)
+{
+    //wcsp->revise(this);
+    if (ToulBar2::verbose >= 3)
+        cout << "findSupport for variable " << varindex << endl;
+    map<Value, Cost> delta;
+    findProjection(varindex, delta);
+    bool allzero = true;
+    for (map<Value, Cost>::iterator i = delta.begin(); i != delta.end(); i++) {
+        if (i->second > 0)
+            allzero = false;
+    }
+    if (!allzero) {
+        count_gac++;
+        bool supportbroken = false;
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(varindex);
+        x->queueAC();
+        for (map<Value, Cost>::iterator i = delta.begin(); i != delta.end(); i++) {
+            if (i->second > 0) {
+                if (i->first == x->getSupport())
+                    supportbroken = true;
+                project(varindex, i->first, i->second);
+            }
+        }
+        if (supportbroken) {
+            x->findSupport();
+        }
+        changeAfterProject(varindex, delta);
+    }
+}
+
+void GlobalConstraint::checkMinCost(int varindex)
+{
+
+    count_nic++;
+
+    vector<Value> removed;
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(varindex);
+
+    map<Value, Cost> delta;
+    findProjection(varindex, delta);
+
+    for (EnumeratedVariable::iterator j = x->begin(); j != x->end(); ++j) {
+        if (wcsp->getLb() + delta[*j] + x->getCost(*j) - projectedCost >= wcsp->getUb()) {
+            removed.push_back(*j);
+        }
+    }
+    for (vector<Value>::iterator i = removed.begin(); i != removed.end(); i++) {
+        x->remove(*i);
+    }
+
+    if (!removed.empty())
+        x->queueAC();
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2globalconstr.hpp b/code/include/tb2/globals/tb2globalconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..7918df497466dc0c2175ef06082256f1136c113a
--- /dev/null
+++ b/code/include/tb2/globals/tb2globalconstr.hpp
@@ -0,0 +1,218 @@
+/** \file tb2globalconstr.hpp
+ *  \brief Global Constraint using enumerated variables with parameters read from file
+ * 
+ */
+
+#ifndef TB2GLOBALCONSTR_HPP_
+#define TB2GLOBALCONSTR_HPP_
+
+#include "core/tb2abstractconstr.hpp"
+#include "core/tb2naryconstr.hpp"
+#include "core/tb2enumvar.hpp"
+#include "core/tb2wcsp.hpp"
+
+class WeightedAutomaton {
+public:
+    virtual void setNumStates(int nStates) = 0;
+    virtual void addInitialState(int begin) = 0;
+    virtual void addFinalState(int end) = 0;
+    virtual void addTransition(int start, int symbol, int end, Cost weight) = 0;
+};
+
+class GlobalConstraint : public AbstractGlobalConstraint {
+
+protected:
+    vector<StoreCost>* deltaCost; // the cost transferred from/to nary-constraint, must be backtractable
+    vector<StoreCost>* extendedCost; // the cost extended nary-constraint, must be backtractable
+    StoreCost projectedCost; // the cost projected to the C_null constraint, must be backtractable
+    StoreInt nonassigned; // nonassigned variables during search, must be backtrackable (storeint) !
+
+    set<int>* fullySupportedSet;
+
+    map<Value, Cost> EACCost;
+    vector<vector<Cost>> preUnaryCosts;
+    int currentVar;
+    bool needPropagateAC, needPropagateDAC, needPropagateEAC;
+
+    // mode : the cost measure
+    // def : the cost of the violation edge
+    int currentDepth;
+    Cost def;
+    int mode;
+    map<string, int> modeEnum;
+
+    int count_nic, count_gac, count_fdac, count_edac, error;
+
+    // find the minimum cost of the tuple when varindex = v for each v in
+    // D(varindex)
+    virtual void findProjection(int varindex, map<Value, Cost>& delta) {}
+    // check and remove from the constraint structure the value already removed
+    // by others
+    virtual void checkRemoved(vector<int>& rmv) {}
+    // extend the cost stored in deltas[i] from the unary constraint of
+    // supports[i] to the constraint struture
+    virtual void changeAfterExtend(vector<int>& supports, vector<map<Value, Cost>>& deltas) {}
+    virtual void changeAfterExtend(int support, map<Value, Cost>& delta)
+    {
+        vector<int> supports;
+        supports.push_back(support);
+        vector<map<Value, Cost>> deltas;
+        deltas.push_back(delta);
+        changeAfterExtend(supports, deltas);
+    }
+    // project the cost stored in deltas[i] to the unary constraint of
+    // supports[i] from the constraint struture
+    virtual void changeAfterProject(vector<int>& supports, vector<map<Value, Cost>>& deltas) {}
+    virtual void changeAfterProject(int support, map<Value, Cost>& delta)
+    {
+        vector<int> supports;
+        supports.push_back(support);
+        vector<map<Value, Cost>> deltas;
+        deltas.push_back(delta);
+        changeAfterProject(supports, deltas);
+    }
+    void project(int index, Value value, Cost cost, bool delayed = false);
+    void extend(int index, Value value, Cost cost);
+    // undo the previous extension
+    virtual void undoExtend() {}
+    // compute the original cost of the tuple s (i.e. cost without projection)
+    virtual Cost evalOriginal(const Tuple& s) { return 0; }
+
+    // compute the minimum cost of the tuple from all feasible tuples
+
+public:
+    // construtor
+    GlobalConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in, Cost defval);
+    // destrutor
+    virtual ~GlobalConstraint();
+
+    virtual void setBaseCost(Cost cost) { def = cost; }
+    virtual void setSemantics(const string& semantic) { mode = modeEnum[semantic]; }
+
+    bool isGlobal() const { return true; }
+
+    // evaluate the cost of the tuple
+    virtual Cost eval(const Tuple& s);
+
+    double computeTightness() { return 0; }
+    virtual string getName() = 0;
+    virtual void print(ostream& os);
+    virtual void dump(ostream& os, bool original = true) = 0;
+
+    // initialize the constraint structure for enforing consistency
+    void init();
+    virtual void initStructure() {}
+    // clear up the structure
+    virtual void end() {}
+
+    // used for enforcing "EDGAC", still have some bugs
+    virtual bool isEAC(int index, Value a);
+    virtual void fillEAC2(int index);
+    //virtual void getCostsWithUnary(int index, map<Value, Cost> &costs);
+    virtual void propagateEAC();
+    virtual void findFullSupportEAC(int index);
+    virtual void linkCostProvidingPartition(int index, Variable* support)
+    {
+        int sindex = -1;
+        for (int i = 0; i < arity_ && sindex == -1; i++) {
+            if (getVar(i) == support)
+                sindex = i;
+        }
+        if ((sindex != index) && (index != -1)) {
+            fullySupportedSet[index].insert(sindex);
+        }
+    }
+    virtual void showCostProvidingPartition(int i)
+    {
+        cout << getVar(i)->getName() << ": ";
+        for (set<int>::iterator j = fullySupportedSet[i].begin(); j != fullySupportedSet[i].end(); j++) {
+            if (getVar(*j)->unassigned()) {
+                cout << getVar(*j)->getName() << " ";
+            }
+        }
+        cout << endl;
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+            cout << EACCost[*v] << " ";
+        }
+        cout << endl;
+    }
+    virtual void showCostProvidingPartition()
+    {
+        for (int i = 0; i < arity_; i++) {
+            showCostProvidingPartition(i);
+        }
+    }
+
+    //Trick! instead of doing remove(index) now, let AC queue do the job.
+    //So several incdec events on the same constraint can be merged into one AC event
+    virtual void increase(int index) { ((EnumeratedVariable*)getVar(index))->queueAC(); }
+    virtual void decrease(int index) { ((EnumeratedVariable*)getVar(index))->queueAC(); }
+
+    // read the parameter of the constraint parameter from the file
+    virtual void read(istream& file, bool mult = true) = 0;
+
+    // return the minimum cost of the tuples
+    virtual Cost getMinCost() { return 0; }
+
+    virtual bool universal() { return false; }
+
+    /*virtual void valueRemoved(int index, Value value) {
+	  if (ToulBar2::consistencyLevel == FINE_IC) {
+	  propagateStrongNIC();
+	  } 
+	  }*/
+    // Still consider whether we should reduce to binary, as done in nary
+    // constraints
+    virtual void assign(int varIndex);
+
+    // function used for propagation
+    virtual void remove(int index);
+    virtual void projectFromZero(int index);
+    void pushAll()
+    {
+        for (int i = 0; i < arity_; i++) {
+            EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+            if (x->unassigned()) {
+                x->queueEAC1();
+                x->queueDAC();
+                x->queueAC();
+            }
+        }
+    }
+
+    // propagation for the whole constraint
+    virtual void propagate();
+    virtual void propagateDAC();
+    virtual void propagateAC();
+    virtual void propagateStrongNIC();
+    virtual void propagateNIC();
+
+    // used for FDGAC*
+    virtual void findFullSupport(int index)
+    {
+        vector<int> provide;
+        for (int i = index + 1; i < arity_; i++)
+            if (getVar(i)->unassigned())
+                provide.push_back(i);
+        findFullSupport(index, provide, false);
+    }
+    // used for FDGAC* and EDGAC*
+    // find the full support w.r.t. the set of variable support
+    virtual void findFullSupport(int index, vector<int>& support, bool isEAC);
+    // used for GAC*
+    virtual void findSupport(int varindex);
+    // used for Strong NIC*
+    virtual void checkMinCost(int varindex);
+
+    bool verify() { return true; }
+};
+
+#endif /*TB2GLOBALCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2grammarconstr.cpp b/code/include/tb2/globals/tb2grammarconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..67ecbe0a316cc3a56706d4994ffed651822fa874
--- /dev/null
+++ b/code/include/tb2/globals/tb2grammarconstr.cpp
@@ -0,0 +1,318 @@
+#include "tb2grammarconstr.hpp"
+
+GrammarConstraint::GrammarConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity)
+    : DPGlobalConstraint(wcsp, scope, arity)
+{
+    modeEnum["var"] = GrammarConstraint::VAR;
+    modeEnum["weight"] = GrammarConstraint::WEIGHTED;
+}
+
+GrammarConstraint::~GrammarConstraint(void)
+{
+    deleteTable(f);
+    deleteTable(curf);
+    deleteTable(marked);
+    deleteTable(curf);
+
+    for (int i = 0; i < arity(); i++) {
+        delete[] u[i];
+    }
+    delete[] u;
+}
+
+void GrammarConstraint::read(istream& file, bool mult)
+{
+
+    string str;
+    file >> str >> def;
+    if (mult)
+        def *= ToulBar2::costMultiplier;
+
+    /*if (str == "var") mode = VAR;
+    else mode = WEIGHTED;*/
+    this->setSemantics(str);
+
+    // input the grammar, assuming already in CNF with
+    // 1) the terminal and non-terminal are separated
+    // 2) if A-> a and B->a, then A = B
+
+    // enter the number of non-terminals, terminals, and start symbol
+    int nNonTerminals, nTerminals, startSymbol;
+    file >> nNonTerminals >> nTerminals >> startSymbol;
+
+    cfg.setNumNonTerminals(nNonTerminals);
+    cfg.setNumTerminals(nTerminals);
+    cfg.setStartSymbol(startSymbol);
+
+    // enter the number of rules
+    int nRules;
+    file >> nRules;
+
+    // Rule format:
+    // for rule A->BC: 1 A B C <weight>
+    // for rule A->a : 0 A a <weight>
+
+    int type = 0;
+    for (int i = 0; i < nRules; i++) {
+        file >> type;
+        switch (type) {
+        case 0: {
+            int A, v;
+            file >> A >> v;
+            cfg.addProduction(A, v, 0);
+            break;
+        }
+        case 1: {
+            int A, B, C;
+            file >> A >> B >> C;
+            cfg.addProduction(A, B, C, 0);
+            break;
+        }
+        case 2: {
+            int A, v;
+            Cost w;
+            file >> A >> v >> w;
+            if (mult)
+                w *= ToulBar2::costMultiplier;
+            cfg.addProduction(A, v, w);
+            break;
+        }
+        case 3: {
+            int A, B, C;
+            Cost w;
+            file >> A >> B >> C >> w;
+            if (mult)
+                w *= ToulBar2::costMultiplier;
+            cfg.addProduction(A, B, C, w);
+            break;
+        }
+        default:
+            cerr << "Error occurred in reading grammar()" << endl;
+            exit(1);
+        }
+    }
+}
+
+void GrammarConstraint::dump(ostream& os, bool original)
+{
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    os << " -1 sgrammardp " << ((mode == VAR) ? "var" : "weight") << " " << def << endl;
+    cfg.dump(os, original);
+}
+
+void GrammarConstraint::initMemoization()
+{
+
+    if (mode == VAR) {
+        set<int> allValues;
+        for (int i = 0; i < arity(); i++) {
+            EnumeratedVariable* x = scope[i];
+            for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+                allValues.insert(*it);
+            }
+        }
+
+        for (set<int>::iterator it = allValues.begin(); it != allValues.end(); ++it) {
+            if (cfg.toIndex(*it) == -1)
+                cfg.addRedundantRuleTo(*it);
+        }
+
+        cfg.addVariableMeasure(def);
+    }
+
+    top = max(wcsp->getUb(), MAX_COST);
+
+    //Create tables
+    resizeTable(f);
+    resizeTable(up);
+    resizeTable(curf);
+    resizeTable(marked);
+
+    u = new Cost*[arity() + 1];
+    for (int i = 0; i < arity(); i++) {
+        u[i] = new Cost[cfg.getNumNonTerminals()];
+    }
+}
+
+Cost GrammarConstraint::minCostOriginal()
+{
+    int n = arity();
+    for (int i = 0; i < n; i++) {
+        for (int j = 0; j < cfg.getNumTerminals(); j++) {
+            u[i][j] = top;
+            EnumeratedVariable* x = scope[i];
+            for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+                if (u[i][j] > unary(cfg.toValue(j), i, *it))
+                    u[i][j] = unary(cfg.toValue(j), i, *it);
+            }
+        }
+    }
+
+    recomputeTable(curf);
+
+    Cost minCost = curf[0][n - 1][cfg.getStartSymbol()];
+
+    return minCost;
+}
+
+Cost GrammarConstraint::minCostOriginal(int var, Value val, bool changed)
+{
+    return minCost(var, val, changed).first;
+}
+
+Cost GrammarConstraint::eval(const Tuple& s)
+{
+    int n = arity();
+    for (int i = 0; i < n; i++) {
+        for (int j = 0; j < cfg.getNumTerminals(); j++) {
+            u[i][j] = unary(cfg.toValue(j), i, s[i]);
+        }
+    }
+
+    recomputeTable(curf);
+    Cost minCost = curf[0][n - 1][cfg.getStartSymbol()];
+
+    return minCost - projectedCost;
+}
+
+void GrammarConstraint::recompute()
+{
+    int n = arity();
+    for (int i = 0; i < n; i++) {
+        for (int j = 0; j < cfg.getNumTerminals(); j++) {
+            u[i][j] = top;
+            EnumeratedVariable* x = scope[i];
+            for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+                if (u[i][j] > unary(cfg.toValue(j), i, *it)) {
+                    u[i][j] = unary(cfg.toValue(j), i, *it);
+                }
+            }
+        }
+    }
+
+    recomputeTable(f, up);
+}
+
+DPGlobalConstraint::Result GrammarConstraint::minCost(int var, Value val, bool changed)
+{
+    if (changed)
+        recompute();
+
+    int n = arity();
+    Cost minCost = wcsp->getUb();
+
+    for (WCNFCFG::TermProdIterator r = cfg.beginTermProd();
+         r != cfg.endTermProd(); r++) {
+        if ((r->to[0] == val) && marked[var][var][r->from]) {
+            minCost = min(minCost,
+                unary(r->to[0], var, val) + r->weight - up[var][var][r->from] + f[0][n - 1][cfg.getStartSymbol()]);
+        }
+    }
+
+    return DPGlobalConstraint::Result(minCost, NULL);
+}
+
+void GrammarConstraint::recomputeTable(Cost*** table, Cost*** upTable)
+{
+    int n = arity();
+
+    for (int i = 0; i < n; i++) {
+        for (int A = 0; A < cfg.getNumNonTerminals(); A++) {
+            table[i][i][A] = top;
+        }
+        /*for (vector<Rule>::iterator r = nonTerm2term.begin(); r != nonTerm2term.end(); r++) {
+
+            if (table[i][i][r->from] > u[i][r->to[0]] + r->weight) {
+                table[i][i][r->from] = u[i][r->to[0]] + r->weight;
+            }
+
+        }*/
+        for (WCNFCFG::TermProdIterator r = cfg.beginTermProd(); r != cfg.endTermProd(); ++r) {
+            if (table[i][i][r->from] > u[i][cfg.toIndex(r->to[0])] + r->weight) {
+                table[i][i][r->from] = u[i][cfg.toIndex(r->to[0])] + r->weight;
+            }
+        }
+    }
+
+    for (int len = 2; len <= n; len++) {
+        for (int i = 0; i < n - len + 1; i++) {
+            int j = i + len - 1;
+            for (int A = 0; A < cfg.getNumNonTerminals(); A++) {
+                table[i][j][A] = top;
+            }
+            /*for (vector<Rule>::iterator r = nonTerm2nonTerm.begin(); r != nonTerm2nonTerm.end(); r++) {
+                for (int k = i; k < j; k++) {
+                    int tmp = table[i][k][r->to[0]] + table[k + 1][j][r->to[1]] + r->weight;
+                    if (table[i][j][r->from] > tmp) {
+                        table[i][j][r->from] = tmp;
+                    }
+                }
+            }*/
+            for (WCNFCFG::NonTermProdIterator r = cfg.beginNonTermProd(); r != cfg.endNonTermProd(); ++r) {
+                for (int k = i; k < j; k++) {
+                    Cost tmp = table[i][k][r->to[0]] + table[k + 1][j][r->to[1]] + r->weight;
+                    table[i][j][r->from] = min(table[i][j][r->from], tmp);
+                }
+            }
+        }
+    }
+
+    if (upTable != NULL) {
+        for (int i = 0; i < n; i++) {
+            for (int j = 0; j < n; j++) {
+                for (int A = 0; A < cfg.getNumNonTerminals(); A++) {
+                    marked[i][j][A] = false;
+                    upTable[i][j][A] = -top;
+                }
+            }
+        }
+        upTable[0][n - 1][cfg.getStartSymbol()] = table[0][n - 1][cfg.getStartSymbol()];
+        marked[0][n - 1][cfg.getStartSymbol()] = true;
+        for (int len = n; len >= 2; len--) {
+            for (int i = 0; i < n - len + 1; i++) {
+                int j = i + len - 1;
+                //for (vector<Rule>::iterator r = nonTerm2nonTerm.begin(); r != nonTerm2nonTerm.end(); r++) {
+                for (WCNFCFG::NonTermProdIterator r = cfg.beginNonTermProd(); r != cfg.endNonTermProd(); ++r) {
+                    if (marked[i][j][r->from]) {
+                        for (int k = i; k < j; k++) {
+                            Cost tmp = table[i][k][r->to[0]] + table[k + 1][j][r->to[1]] + r->weight;
+                            //if (tmp <= upTable[i][j][r->from])
+                            {
+                                marked[i][k][r->to[0]] = true;
+                                tmp = upTable[i][j][r->from] - table[k + 1][j][r->to[1]] - r->weight;
+                                upTable[i][k][r->to[0]] = max(upTable[i][k][r->to[0]], tmp);
+
+                                marked[k + 1][j][r->to[1]] = true;
+                                tmp = upTable[i][j][r->from] - table[i][k][r->to[0]] - r->weight;
+                                upTable[k + 1][j][r->to[1]] = max(upTable[k + 1][j][r->to[1]], tmp);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+
+Cost GrammarConstraint::unary(int ch, int var, Value v)
+{
+    EnumeratedVariable* x = scope[var];
+    Cost ucost = (v == ch) ? (-deltaCost[var][x->toIndex(v)]) : top;
+    return ucost;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2grammarconstr.hpp b/code/include/tb2/globals/tb2grammarconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..a190395abe538c01f618a1ffe99ae79b30efe86e
--- /dev/null
+++ b/code/include/tb2/globals/tb2grammarconstr.hpp
@@ -0,0 +1,101 @@
+/** \file tb2grammarconstr.hpp
+ *  \brief Dynamic programming based global cost function : sgrammar_dp
+ */
+
+#ifndef TB2GRAMMARCCONSTR_HPP_
+#define TB2GRAMMARCCONSTR_HPP_
+
+#include "tb2dpglobalconstr.hpp"
+#include "tb2grammarutils.hpp"
+
+class GrammarConstraint : public DPGlobalConstraint {
+private:
+    // dimension: i x j x |N|
+    Cost*** f;
+    Cost*** up;
+    bool*** marked;
+
+    Cost*** curf;
+
+    // dimension: i x |sigma|
+    Cost** u;
+
+    // grammar, assuming in CNF
+
+    /*struct Rule {
+        int from;        
+        Cost weight;
+        int to[2];
+    };
+
+    int nNonTerminals, nTerminals, startSymbol;
+    vector<Rule> nonTerm2nonTerm;
+    vector<Rule> nonTerm2term;*/
+    WCNFCFG cfg;
+    Cost top;
+
+    template <class T>
+    void resizeTable(T***& table)
+    {
+        table = new T**[arity() + 1];
+        for (int i = 0; i < arity() + 1; i++) {
+            table[i] = new T*[arity() + 1];
+            for (int j = 0; j < arity() + 1; j++) {
+                table[i][j] = new T[cfg.getNumNonTerminals()];
+            }
+        }
+    }
+
+    template <class T>
+    void deleteTable(T***& table)
+    {
+        for (int i = 0; i < arity() + 1; i++) {
+            for (int j = 0; j < arity() + 1; j++) {
+                delete[] table[i][j];
+            }
+            delete[] table[i];
+        }
+        delete[] table;
+        table = NULL;
+    }
+
+    void recomputeTable(Cost*** table, Cost*** upTable = NULL);
+    void recompute();
+
+    Cost unary(int ch, int var, Value v);
+
+protected:
+    Cost minCostOriginal();
+    Cost minCostOriginal(int var, Value val, bool changed);
+    Result minCost(int var, Value val, bool changed);
+
+public:
+    static const int WEIGHTED = 1;
+    static const int VAR = 0;
+
+    GrammarConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity);
+    virtual ~GrammarConstraint();
+
+    Cost eval(const Tuple& s);
+
+    void read(istream& file, bool mult = true);
+    //void setDefaultViolationCost(Cost cost) {if(configuring) def = cost;}
+    //void setViolationMeasure(int measure) {if(configuring) mode = measure;}
+    WeightedCNFCFG* getGrammar() { return &cfg; }
+    void initMemoization();
+
+    string getName()
+    {
+        return "sgrammar";
+    }
+    void dump(ostream& os, bool original = true);
+};
+
+#endif /* TB2GRAMMARCCONSTR_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2grammarutils.cpp b/code/include/tb2/globals/tb2grammarutils.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0b7c8d3f0aa44cade458a271dfb842209e706064
--- /dev/null
+++ b/code/include/tb2/globals/tb2grammarutils.cpp
@@ -0,0 +1,67 @@
+#include "tb2grammarutils.hpp"
+
+void WCNFCFG::addVariableMeasure(Cost violationCost)
+{
+
+    // Assume A_i -> a_i
+    // 1) for all prod. rules C->A_iB, add C->A_jB with weight = w[C->A_jB] + vioCost, j != i
+    // 2) for all prod. rules C->BA_i, add C->BA_j with weight = w[C->A_jB] + vioCost, j != i
+    set<int> nonTerms;
+    for (vector<WCNFRule>::iterator p = termProd.begin(); p != termProd.end(); ++p) {
+        nonTerms.insert(p->from);
+    }
+    for (int i = 0; i < 2; i++) {
+        vector<WCNFRule> prods(nonTermProd);
+        for (vector<WCNFRule>::iterator p = prods.begin(); p != prods.end(); ++p) {
+            if (nonTerms.find(p->to[i]) != nonTerms.end()) {
+                for (set<int>::iterator A = nonTerms.begin(); A != nonTerms.end(); ++A) {
+                    if (*A != p->to[i]) {
+                        WCNFRule rule = *p;
+                        rule.to[i] = *A;
+                        rule.weight += violationCost;
+                        nonTermProd.push_back(rule);
+                    }
+                }
+            }
+        }
+    }
+
+    sort(nonTermProd.begin(), nonTermProd.end());
+    nonTermProd.erase(unique(nonTermProd.begin(), nonTermProd.end()), nonTermProd.end());
+}
+
+void WCNFCFG::print(ostream& ofs)
+{
+    for (vector<WCNFRule>::iterator p = nonTermProd.begin(); p != nonTermProd.end(); ++p) {
+        ofs << p->from << "->" << p->to[0] << " " << p->to[1] << ": " << p->weight << "\n";
+    }
+    for (vector<WCNFRule>::iterator p = termProd.begin(); p != termProd.end(); ++p) {
+        ofs << p->from << "->" << p->to[0] << ": " << p->weight << "\n";
+    }
+}
+
+void WCNFCFG::dump(ostream& os, bool original)
+{
+    assert(original); //TODO: case original is false
+    os << nNonTerminals << " " << nTerminals << " " << startSymbol << endl;
+    os << nonTermProd.size() + termProd.size() << endl;
+    for (vector<WCNFRule>::iterator p = nonTermProd.begin(); p != nonTermProd.end(); ++p) {
+        if (p->weight == 0)
+            os << "1 " << p->from << " " << p->to[0] << " " << p->to[1] << endl;
+        else
+            os << "3 " << p->from << " " << p->to[0] << " " << p->to[1] << " " << p->weight << endl;
+    }
+    for (vector<WCNFRule>::iterator p = termProd.begin(); p != termProd.end(); ++p) {
+        if (p->weight == 0)
+            os << "0 " << p->from << " " << p->to[0] << endl;
+        else
+            os << "2 " << p->from << " " << p->to[0] << " " << p->weight << endl;
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2grammarutils.hpp b/code/include/tb2/globals/tb2grammarutils.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..33f11ea84250caaea0832faddf70cf59232d7d0f
--- /dev/null
+++ b/code/include/tb2/globals/tb2grammarutils.hpp
@@ -0,0 +1,137 @@
+#ifndef GRAMMARUTILS
+#define GRAMMARUTILS
+
+#include "core/tb2types.hpp"
+
+class WeightedCNFCFG {
+public:
+    virtual void setStartSymbol(int start) = 0;
+    virtual void setNumNonTerminals(int num) = 0;
+    virtual void setNumTerminals(int num) = 0;
+    virtual void addProduction(int A, int B, int C, Cost weight) = 0;
+    virtual void addProduction(int A, int v, Cost weight) = 0;
+};
+
+struct WCNFRule {
+    int from;
+    Cost weight;
+    int to[2];
+    WCNFRule(int A = 0, int B = 0, int C = 0, Cost w = 0)
+        : from(A)
+        , weight(w)
+    {
+        to[0] = B;
+        to[1] = C;
+    }
+
+    bool operator==(const WCNFRule& rule) const
+    {
+        return (from == rule.from) && (to[0] == rule.to[0]) && (to[1] == rule.to[1]);
+    }
+
+    bool operator<(const WCNFRule& rule) const
+    {
+        if (from < rule.from)
+            return true;
+        if ((from == rule.from) && (to[0] < rule.to[0]))
+            return true;
+        if ((from == rule.from) && (to[0] == rule.to[0]) && (to[1] < rule.to[1]))
+            return true;
+        if ((from == rule.from) && (to[0] == rule.to[0]) && (to[1] == rule.to[1]) && (weight < rule.weight))
+            return true;
+        return false;
+    }
+};
+
+class WCNFCFG : public WeightedCNFCFG {
+
+    // Assumption: if A->a and B-> a, then A = B
+
+private:
+    int nNonTerminals, nTerminals, startSymbol;
+    vector<WCNFRule> nonTermProd; // for rules: A -> BC
+    vector<WCNFRule> termProd; // for rules: A -> a
+
+    map<Value, int> valIndex;
+    map<int, Value> indexValue;
+
+public:
+    WCNFCFG(int nNonTerminals = 0)
+        : nNonTerminals(nNonTerminals)
+        , nTerminals(0)
+        , startSymbol(0)
+    {
+    }
+
+    ~WCNFCFG() {}
+
+    void setStartSymbol(int start)
+    { // Only one start symbol
+        startSymbol = start;
+    }
+
+    void setNumNonTerminals(int num)
+    {
+        nNonTerminals = num;
+    }
+
+    void setNumTerminals(int num)
+    {
+        //nTerminals = num;
+    }
+
+    inline int getStartSymbol() { return startSymbol; }
+
+    inline int getNumNonTerminals() { return nNonTerminals; }
+
+    inline int getNumTerminals() { return nTerminals; }
+
+    inline int toIndex(Value v) { return ((valIndex.find(v) == valIndex.end()) ? -1 : valIndex[v]); }
+    inline int toValue(int index) { return indexValue[index]; }
+
+    void addProduction(int A, int B, int C, Cost weight)
+    {
+        WCNFRule rule(A, B, C, weight);
+        nonTermProd.push_back(rule);
+    }
+
+    void addProduction(int A, int v, Cost weight)
+    {
+        WCNFRule rule(A, v, -1, weight);
+        termProd.push_back(rule);
+        valIndex[v] = nTerminals;
+        indexValue[nTerminals] = v;
+        nTerminals++;
+    }
+
+    void addRedundantRuleTo(Value v)
+    {
+        int A = nNonTerminals;
+        addProduction(A, v, 0);
+        nNonTerminals++;
+    }
+
+    void addVariableMeasure(Cost violationCost); // Convert to a weighted CNF s.t. it includes variable-based violation
+
+    /* iterator for rules like A->v*/
+    typedef vector<WCNFRule>::iterator TermProdIterator;
+    inline TermProdIterator beginTermProd() { return termProd.begin(); }
+    inline TermProdIterator endTermProd() { return termProd.end(); }
+
+    /* iterator for rules like A->BC*/
+    typedef vector<WCNFRule>::iterator NonTermProdIterator;
+    inline NonTermProdIterator beginNonTermProd() { return nonTermProd.begin(); }
+    inline NonTermProdIterator endNonTermProd() { return nonTermProd.end(); }
+
+    void print(ostream& ofs);
+    void dump(ostream& os, bool original = true);
+};
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2graph.cpp b/code/include/tb2/globals/tb2graph.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d706aea40c180312bc77dbf1438bfbeae21bebed
--- /dev/null
+++ b/code/include/tb2/globals/tb2graph.cpp
@@ -0,0 +1,637 @@
+#include "tb2graph.hpp"
+
+Graph::Graph(int n, int depth_)
+    : adjlist(n)
+    , vertexList(n)
+    //, potential(n, StoreCost(0))
+    , p(n)
+    , counter(n)
+    , d(n)
+    , gsize(n)
+    , depth(depth_)
+    , intDLinkStore(n * n)
+{
+    for (int i = 0; i < n; i++)
+        vertexList[i] = new Vertex(n, depth_, &intDLinkStore);
+}
+
+Graph::~Graph()
+{
+    for (int i = 0; i < gsize; i++) {
+        delete vertexList[i];
+        for (vector<List_Node*>::iterator it = adjlist[i].begin();
+             it != adjlist[i].end(); it++) {
+            delete *it;
+        }
+    }
+}
+
+int Graph::addEdgeInternal(int u, int v, Cost w, Cost capacity, int tag,
+    bool addReverse, int index)
+{
+
+    if ((u < 0) || (u >= size()))
+        return -1;
+    if ((v < 0) || (v >= size()))
+        return -1;
+
+    int eIndex = -1;
+    if (tag == NO_TAG) {
+        adjlist[u].push_back(new List_Node(depth, v, w, capacity, tag, index));
+        eIndex = adjlist[u].size() - 1;
+        if (capacity > 0) {
+            vertexList[u]->edgeList[v]->push_back(adjlist[u].size() - 1);
+            if (vertexList[u]->edgeList[v]->size() == 1) {
+                vertexList[u]->neighbor.push_back(v);
+            }
+        }
+    } else {
+        bool exist = false;
+        for (BTListWrapper<int>::iterator i = vertexList[u]->edgeList[v]->begin(); i != vertexList[u]->edgeList[v]->end() && !exist; ++i) {
+            List_Node& edge = *(adjlist[u][*i]);
+            if (edge.tag == tag)
+                exist = true;
+        }
+
+        if (!exist) {
+            adjlist[u].push_back(new List_Node(depth, v, w, capacity, tag, index));
+            eIndex = adjlist[u].size() - 1;
+            if (capacity > 0) {
+                vertexList[u]->edgeList[v]->push_back(adjlist[u].size() - 1);
+                if (vertexList[u]->edgeList[v]->size() == 1) {
+                    vertexList[u]->neighbor.push_back(v);
+                }
+            }
+        }
+    }
+
+    if (addReverse) {
+        int rEdgeIndex = addEdgeInternal(v, u, -w, 0, tag, false, eIndex);
+        adjlist[u][eIndex]->rEdgeIndex = rEdgeIndex;
+    }
+
+    return eIndex;
+}
+
+bool Graph::removeEdge(int u, int v, int tag)
+{
+
+    bool exist = false;
+
+    if ((u < 0) || (u >= size()))
+        return exist;
+    if ((v < 0) || (v >= size()))
+        return exist;
+
+    for (BTListWrapper<int>::iterator i = vertexList[u]->edgeList[v]->begin(); i != vertexList[u]->edgeList[v]->end() && !exist; ++i) {
+        List_Node& edge = *(adjlist[u][*i]);
+        if ((tag == NO_TAG) || (tag == edge.tag)) {
+            edge.cap = 0;
+            vertexList[u]->edgeList[v]->erase(i);
+            if (vertexList[u]->edgeList[v]->size() == 0) {
+                vertexList[u]->neighbor.remove(v);
+            }
+            exist = true;
+            break;
+        }
+    }
+
+    return exist;
+}
+
+bool Graph::modifyCost(int u, int v, Cost cost, int tag)
+{
+
+    bool exist = false;
+
+    if ((u < 0) || (u >= size()))
+        return exist;
+    if ((v < 0) || (v >= size()))
+        return exist;
+
+    //int originalWeight = -1;
+    int rEdgeIndex = -1;
+
+    for (BTListWrapper<int>::iterator i = vertexList[u]->edgeList[v]->begin(); i != vertexList[u]->edgeList[v]->end(); ++i) {
+        List_Node& edge = *(adjlist[u][*i]);
+        if ((tag == NO_TAG) || (tag == edge.tag)) {
+            //originalWeight = edge.weight;
+            rEdgeIndex = edge.rEdgeIndex;
+            edge.weight = cost;
+            exist = true;
+            break;
+        }
+    }
+
+    if (exist) {
+        if (rEdgeIndex >= 0) {
+            List_Node& edge = *(adjlist[v][rEdgeIndex]);
+            if (edge.cap == 0) {
+                edge.weight = -cost;
+            }
+        }
+    }
+
+    return exist;
+}
+
+bool Graph::increaseCost(int u, int v, Cost cost, int tag)
+{
+
+    bool exist = false;
+
+    if ((u < 0) || (u >= size()))
+        return exist;
+    if ((v < 0) || (v >= size()))
+        return exist;
+
+    //int originalWeight = -1;
+    int rEdgeIndex = -1;
+    for (BTListWrapper<int>::iterator i = vertexList[u]->edgeList[v]->begin(); i != vertexList[u]->edgeList[v]->end(); ++i) {
+        List_Node& edge = *(adjlist[u][*i]);
+        if ((tag == NO_TAG) || (tag == edge.tag)) {
+            //originalWeight = edge.weight;
+            rEdgeIndex = edge.rEdgeIndex;
+            edge.weight += cost;
+            exist = true;
+            break;
+        }
+    }
+
+    if (exist) {
+        if (rEdgeIndex >= 0) {
+            List_Node& edge = *(adjlist[v][rEdgeIndex]);
+            if (edge.cap == 0) {
+                edge.weight -= cost;
+            }
+        }
+    }
+
+    return exist;
+}
+
+bool Graph::edgeExist(int u, int v)
+{
+    return !(vertexList[u]->edgeList[v]->empty());
+}
+
+vector<Cost> Graph::getWeight(int u, int v, int tag)
+{
+
+    vector<Cost> weight;
+    for (BTListWrapper<int>::iterator i = vertexList[u]->edgeList[v]->begin(); i != vertexList[u]->edgeList[v]->end(); ++i) {
+        List_Node& edge = *(adjlist[u][*i]);
+        if ((tag == NO_TAG) || (tag == edge.tag)) {
+            weight.push_back(edge.weight);
+        }
+    }
+
+    return weight;
+}
+
+Cost Graph::getMinWeight(int u, int v, int tag)
+{
+
+    Cost minWeight = MAX_COST + 2;
+    for (BTListWrapper<int>::iterator i = vertexList[u]->edgeList[v]->begin(); i != vertexList[u]->edgeList[v]->end(); ++i) {
+        List_Node& edge = *(adjlist[u][*i]);
+        if ((tag == NO_TAG) || (tag == edge.tag)) {
+            minWeight = min(minWeight, (Cost)edge.weight);
+        }
+    }
+
+    return minWeight;
+}
+
+void Graph::addFlow(int u, int v, Cost flowval)
+{
+
+    Cost target = getMinWeight(u, v);
+    for (BTListWrapper<int>::iterator i = vertexList[u]->edgeList[v]->begin(); i != vertexList[u]->edgeList[v]->end(); ++i) {
+        List_Node& edge = *(adjlist[u][*i]);
+        if (edge.weight == target) {
+            edge.cap -= flowval;
+            if (edge.cap <= 0) {
+                vertexList[u]->edgeList[v]->erase(i);
+                if (vertexList[u]->edgeList[v]->size() == 0) {
+                    vertexList[u]->neighbor.remove(v);
+                }
+            }
+            assert(edge.rEdgeIndex >= 0);
+            List_Node& redge = *(adjlist[v][edge.rEdgeIndex]);
+            if ((redge.cap == 0) && (flowval > 0)) {
+                vertexList[v]->edgeList[u]->push_back(edge.rEdgeIndex);
+                if (vertexList[v]->edgeList[u]->size() == 1) {
+                    vertexList[v]->neighbor.push_back(u);
+                }
+            }
+            redge.cap += flowval;
+            break;
+        }
+    }
+}
+
+pair<int, Cost> Graph::minCostFlow(int s, int t)
+{
+
+    //int n = size();
+    Cost flow = 0;
+    Cost cost = 0;
+    bool stopped = false;
+
+    //shortest_path(s);
+    //for (int i=0;i<n;i++) potential[i] = d[i];
+    int iterationCount = 0;
+    while (!stopped) {
+        iterationCount++;
+        stopped = false;
+        //shortest_path_with_potential(s);
+        shortest_path(s);
+        int u = t;
+        Cost minc = MAX_COST + 1;
+        while (p[u] != u && !stopped) {
+            int v = p[u];
+            if (v < 0) {
+                stopped = true;
+                break;
+            } else {
+                Cost minw = MAX_COST + 2;
+                for (BTListWrapper<int>::iterator j = vertexList[v]->edgeList[u]->begin(); j != vertexList[v]->edgeList[u]->end(); ++j) {
+                    List_Node& edge = *(adjlist[v][*j]);
+                    if ((minw > edge.weight) && (minc > edge.cap))
+                        minc = edge.cap;
+                }
+                u = v;
+            }
+        }
+
+        if (!stopped) {
+            flow += minc;
+            cost += d[t] * minc;
+            int u = t;
+            while (p[u] != u) {
+                addFlow(p[u], u, minc);
+                u = p[u];
+            }
+            //for (int i=0;i<n;i++) potential[i] += d[i];
+        }
+    }
+
+    return make_pair(flow, cost);
+}
+
+pair<Cost, bool> Graph::augment(int s, int t, bool can_change)
+{
+
+    shortest_path(s);
+    pair<Cost, bool> result;
+    result.first = d[t];
+    result.second = p[t] != -1;
+
+    int u = t;
+    Cost minc = INF + 1;
+    bool exist = false;
+
+    Cost minw = MAX_COST + 3;
+    for (BTListWrapper<int>::iterator i = vertexList[t]->edgeList[s]->begin(); i != vertexList[t]->edgeList[s]->end(); ++i) {
+        List_Node& edge = *(adjlist[t][*i]);
+        assert(edge.cap != 0);
+        if (minw >= edge.weight) {
+            minc = edge.cap;
+            exist = true;
+        }
+    }
+    int count = 0;
+
+    assert(minc > 0);
+
+    std::ostringstream ss;
+    while (p[u] != u && result.second) {
+        int v = p[u];
+        count++;
+        if (count >= size() + 4)
+            break;
+        if (v < 0) {
+            result.second = false;
+            break;
+        } else {
+            Cost minw = MAX_COST + 2;
+            for (BTListWrapper<int>::iterator i = vertexList[v]->edgeList[u]->begin(); i != vertexList[v]->edgeList[u]->end(); ++i) {
+                List_Node& edge = *(adjlist[v][*i]);
+                if (minw >= edge.weight) {
+                    if (minc > edge.cap)
+                        minc = edge.cap;
+                }
+            }
+            u = v;
+        }
+    }
+
+    result.first = d[t] * minc;
+    result.second = p[t] != -1;
+
+    assert(count < size() + 4);
+    assert(minc > 0);
+
+    if (can_change && result.second) {
+        u = t;
+        while (p[u] != u) {
+            addFlow(p[u], u, minc);
+            u = p[u];
+        }
+        if (exist)
+            addFlow(t, s, minc);
+        //for (int i=0;i<size();i++) potential[i] = d[i];
+    }
+
+    return result;
+}
+
+void Graph::removeNegativeCycles(StoreCost& cost)
+{
+
+    int n = size();
+    int pass[n];
+
+    while (1) {
+
+        bool nevloop = false;
+        list<int> Q;
+        for (int i = 0; i < n; i++)
+            Q.push_back(i);
+        shortest_path(Q, nevloop);
+
+        if (!nevloop)
+            break;
+
+        int t = -1;
+        for (int i = 0; i < n; i++) {
+            if (counter[i] > n) {
+                t = i;
+            }
+        }
+        for (int i = 0; i < n; i++)
+            pass[i] = 0;
+        int s = p[t], u = s, v = s;
+        vector<int> path;
+        while (pass[u] == 0) {
+            pass[u] = 1;
+            path.push_back(u);
+            u = p[u];
+        }
+        path.push_back(u);
+
+        t = path.back();
+        for (vector<int>::iterator i = path.begin(); i != path.end(); i++) {
+            if (*i == t) {
+                path.erase(path.begin(), i + 1);
+                break;
+            }
+        }
+
+        reverse(path.begin(), path.end());
+        path.push_back(*(path.begin()));
+
+        Cost weight = 0, minc = INF;
+
+        for (vector<int>::iterator i = path.begin(); i != path.end() - 1; i++) {
+            u = *i;
+            v = *(i + 1);
+            Cost w = INF;
+            Cost c = INF;
+            for (BTListWrapper<int>::iterator j = vertexList[u]->edgeList[v]->begin(); j != vertexList[u]->edgeList[v]->end(); ++j) {
+                List_Node& edge = *(adjlist[u][*j]);
+                if (edge.weight < w) {
+                    w = edge.weight;
+                    c = edge.cap;
+                }
+            }
+            weight += w;
+            if (minc > c)
+                minc = c;
+        }
+
+        if (weight < 0) {
+            for (vector<int>::iterator i = path.begin(); i != path.end() - 1; i++) {
+                u = *i;
+                v = *(i + 1);
+                Cost w = INF;
+                for (BTListWrapper<int>::iterator j = vertexList[u]->edgeList[v]->begin(); j != vertexList[u]->edgeList[v]->end(); ++j) {
+                    List_Node& edge = *(adjlist[u][*j]);
+                    if (edge.weight < w) {
+                        w = edge.weight;
+                    }
+                }
+                addFlow(u, v, minc);
+            }
+            cost += minc * weight;
+        }
+    }
+}
+
+void Graph::print(ostream& os)
+{
+
+    for (int u = 0; u < gsize; u++) {
+        os << u << ": ";
+        for (BTListWrapper<int>::iterator j = vertexList[u]->neighbor.begin(); j != vertexList[u]->neighbor.end(); ++j) {
+            os << *j << "(" << vertexList[u]->edgeList[*j]->size() << ") ";
+        }
+        os << "\n";
+    }
+
+    /*os << "==potential==\n";
+
+	for (int u=0;u<gsize;u++) {
+		os << u << ": " << potential[u] << " ";
+	}
+	os << "\n";
+     */
+    os << "==graph===\n";
+
+    for (int i = 0; i < gsize; i++) {
+        os << i << ":";
+        for (vector<List_Node*>::iterator ptr = adjlist[i].begin(); ptr != adjlist[i].end(); ++ptr) {
+            List_Node* j = *ptr;
+            if (j->cap > 0) {
+                if (j->tag != NO_TAG) {
+                    os << "(" << j->adj << "," << j->weight << "," << j->cap << "," << j->tag << ") ";
+                } else {
+                    os << "(" << j->adj << "," << j->weight << "," << j->cap << ",-) ";
+                }
+            } else {
+                if (j->tag != NO_TAG) {
+                    os << "[[" << j->adj << "," << j->weight << "," << j->cap << "," << j->tag << "]] ";
+                } else {
+                    os << "[[" << j->adj << "," << j->weight << "," << j->cap << ",-]] ";
+                }
+            }
+        }
+        os << endl;
+    }
+}
+
+void Graph::shortest_path(list<int>& sources, bool& nevloop)
+{
+
+    int n = size();
+    for (int i = 0; i < n; i++) {
+        p[i] = -1;
+        d[i] = INF;
+        counter[i] = 0;
+    }
+
+    nevloop = false;
+    list<int>& Q = sources;
+    for (list<int>::iterator i = sources.begin(); i != sources.end(); i++) {
+        counter[*i]++;
+        d[*i] = 0;
+        p[*i] = *i;
+    }
+
+    while (!Q.empty()) {
+        int u = Q.front();
+        if (counter[u] > n + 2) {
+            nevloop = true;
+            break;
+        }
+        Q.pop_front();
+        for (BTListWrapper<int>::iterator j = vertexList[u]->neighbor.begin(); j != vertexList[u]->neighbor.end(); ++j) {
+            BTListWrapper<int>& edgeList = *(vertexList[u]->edgeList[*j]);
+            for (BTListWrapper<int>::iterator k = edgeList.begin(); k != edgeList.end(); ++k) {
+                List_Node& edge = *(adjlist[u][*k]);
+                if ((d[u] + edge.weight < d[edge.adj])) {
+                    d[edge.adj] = d[u] + edge.weight;
+                    p[edge.adj] = u;
+                    Q.push_back(edge.adj);
+                    counter[edge.adj]++;
+                }
+            }
+        }
+    }
+}
+
+void Graph::printPath(int s, int t)
+{
+
+    int u = t;
+    cout << u << " <- ";
+    while (p[u] != u) {
+        cout << p[u] << " <- ";
+        u = p[u];
+    }
+    cout << u << " <- " << endl;
+}
+
+// Not used due to error in updating potentials after argumentation
+/*
+void Graph::shortest_path_with_potential(int s) {
+
+	int n = size();
+	for (int i=0;i<n;i++) {
+		p[i] = -1;  
+		d[i] = INF; 
+		counter[i] = 0; 
+	}
+	d[s] = 0;   p[s] = s;
+
+	priority_queue<pair<Cost, int> > Q;
+	Q.push(make_pair(0, s));	
+	for (int i=0;i<n;i++) {
+		int u = -1;
+		while (!Q.empty()) {
+			pair<Cost, int> top = Q.top();
+			Q.pop();	
+			if (counter[top.second] == 0) {
+				u = top.second;
+				break;
+			}
+		}
+		if (u == -1) break;
+		counter[u]++;
+		for (BTListWrapper<int>::iterator j = vertexList[u]->neighbor.begin(); j !=
+						vertexList[u]->neighbor.end();++j) {
+			BTListWrapper<int> &edgeList = *(vertexList[u]->edgeList[*j]);
+			for (BTListWrapper<int>::iterator k = edgeList.begin(); k !=
+				edgeList.end();++k) {		
+				List_Node &edge = *(adjlist[u][*k]);
+				Cost weight = edge.weight + potential[u] - potential[edge.adj];
+				if (weight < 0) {
+					cout << "(u,v): " << u << " " << edge.adj << " weight: " <<
+					edge.weight << "\n";
+				}
+				assert(weight >= 0);
+				if ((d[u] + weight < d[edge.adj])) {
+					d[edge.adj] = d[u] + weight;
+					p[edge.adj] = u;
+					Q.push(make_pair(-d[edge.adj], edge.adj));
+				}
+			}
+		}
+	}	
+
+	for (int i=0;i<n;i++) {
+		d[i] = d[i] - potential[s] + potential[i];
+	}
+
+}
+ */
+
+/*
+   set<set<int> >& Graph::compute_scc() {
+   if (!p) p = new int[gsize];	
+   if (!d) d = new Cost[gsize];	
+   if (!low) low = new Cost[gsize];	
+   if (!out) out = new bool[gsize];	
+
+   for (int i=0;i<gsize;i++) {
+   d[i] = low[i] = 0;
+   p[i] = -1;
+   out[i] = false;
+   }	
+
+   vector<int> stk;
+   scc.clear();
+   int ts = 0;
+
+   scc_dfs(0, ts, stk);
+
+   return scc;	
+
+   }
+
+   int Graph::scc_dfs(int i, int &ts, vector<int> &stk) {
+   p[i] = 0;
+   ts++;
+   low[i] = d[i] = ts;
+   stk.push_back(i);
+   for (vector<List_Node >::iterator j = adjlist[i].begin();j !=
+   adjlist[i].end();j++) {
+   if (p[j->adj] == -1) {
+   low[i] = min(low[i], scc_dfs(j->adj, ts, stk));
+   } else if (!out[j->adj]) {
+   low[i] = min(low[i], d[i]);
+   }
+   }
+   if (low[i] == d[i]) {
+   set<int> a;
+   while (true) {
+   int t = stk.back();
+   stk.pop_back();
+   out[t] = true;
+   a.insert(t);
+   if (t == i) break;
+   }
+   scc.insert(a);
+   }
+   return low[i];
+
+   }
+ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2graph.hpp b/code/include/tb2/globals/tb2graph.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..78f6dbe601c52f84997d9482ecf1fa4b4f834885
--- /dev/null
+++ b/code/include/tb2/globals/tb2graph.hpp
@@ -0,0 +1,468 @@
+/** \file tb2graph.hpp
+ *  \brief Multiple-edged Graph using the adjacent list structure for modelling the flow model
+ * 
+ */
+
+#ifndef TB2GRAPH
+#define TB2GRAPH
+
+#include "core/tb2types.hpp"
+#include "utils/tb2store.hpp"
+#include "utils/tb2btlist.hpp"
+
+//#define adj first
+//#define weight second
+#define INF (MAX_COST >> 5)
+#define Free(pt)     \
+    if (pt) {        \
+        delete[] pt; \
+        pt = NULL;   \
+    }
+#define NO_TAG (INT_MAX >> 1)
+
+// BTList Wrapper for easier usage
+template <typename T>
+class DLinkStore {
+private:
+    int blkSize;
+    StoreInt curEmpty;
+    StoreInt curUsingBlkIndex;
+    vector<DLink<T>*> blockStore;
+
+public:
+    DLinkStore(int blkSize_)
+        : blkSize(blkSize_)
+        , curEmpty(0)
+        , curUsingBlkIndex(0)
+    {
+        blockStore.push_back(new DLink<T>[blkSize]);
+    }
+    ~DLinkStore()
+    {
+        for (vector<DLink<int>*>::iterator it = blockStore.begin();
+             it != blockStore.end(); it++) {
+            delete[] * it;
+        }
+        blockStore.clear();
+    }
+
+    DLink<T>* allocate(const T& ele)
+    {
+        if (curEmpty >= blkSize) {
+            curEmpty = 0;
+            curUsingBlkIndex = curUsingBlkIndex + 1;
+            if (curUsingBlkIndex >= (int)blockStore.size()) {
+                blockStore.push_back(new DLink<T>[blkSize]);
+            }
+        }
+        DLink<int>* container = &(blockStore[curUsingBlkIndex][curEmpty]);
+        container->content = ele;
+        curEmpty = curEmpty + 1;
+        return container;
+    }
+};
+
+template <typename T>
+class BTListWrapper {
+private:
+    BTList<T> list;
+    DLinkStore<T>* dlinkStore;
+
+public:
+    typedef typename BTList<T>::iterator iterator;
+
+    BTListWrapper(DLinkStore<int>* dlinkStore)
+        : list(&Store::storeIndexList)
+        , dlinkStore(dlinkStore)
+    {
+    }
+
+    ~BTListWrapper() {}
+
+    size_t size()
+    {
+        return list.getSize();
+    }
+    bool empty()
+    {
+        return list.getSize() == 0;
+    }
+    void push_back(const T& ele)
+    {
+        DLink<T>* container = dlinkStore->allocate(ele);
+        list.push_back(container, true);
+    }
+    void remove(const T& ele)
+    {
+        DLink<T>* target = NULL;
+        for (typename BTList<T>::iterator it = list.begin(); it != list.end()
+             && (target == NULL);
+             ++it) {
+            if (*it == ele) {
+                target = it.getElt();
+            }
+        }
+        if (target != NULL) {
+            list.erase(target, true);
+        }
+    }
+    void erase(iterator& it)
+    {
+        list.erase(it.getElt(), true);
+    }
+    iterator begin() { return list.begin(); }
+    iterator end() { return list.end(); }
+};
+
+class Graph {
+
+private:
+    // structure representing an edge
+    struct List_Node {
+        // entities need to backtrack
+        StoreCost weight; // the weight
+        StoreCost cap; //the capacity, if cap = 0, the edge is set to "deleted"
+        // entities need not backtrack
+        int adj; //the node connecting to
+        int tag; // the label of the edge
+        int rEdgeIndex; // the pointer to the opposite edge
+        List_Node(int depth, int a = -1, Cost w = 0, Cost c = 0, int t = NO_TAG, int rIndex = -1)
+            : weight(w)
+            , cap(c)
+            , adj(a)
+            , tag(t)
+            , rEdgeIndex(rIndex)
+        {
+        }
+    };
+
+    // structure representing a node
+    typedef int EdgePtr;
+    struct Vertex {
+        // entities need to backtrack
+        vector<BTListWrapper<EdgePtr>*> edgeList;
+        BTListWrapper<int> neighbor;
+
+        Vertex(int n, int depth, DLinkStore<int>* dLinkStore)
+            : edgeList(n)
+            , neighbor(dLinkStore)
+        {
+            for (int i = 0; i < n; i++)
+                edgeList[i] = new BTListWrapper<int>(dLinkStore);
+        }
+
+        ~Vertex()
+        {
+            for (unsigned int i = 0; i < edgeList.size(); i++)
+                delete edgeList[i];
+        }
+    };
+
+    // native adjacent lists, storing all edges possibly appears during search
+    vector<vector<List_Node*>> adjlist;
+
+    // additional structure for speeding up traveral
+    vector<Vertex*> vertexList;
+
+    // potentials
+    //vector<StoreCost> potential;
+
+    // pre-allocated temporary structure
+    vector<int> p;
+    vector<int> counter;
+    vector<Cost> d;
+
+    // the number of node in the graph
+    int gsize;
+
+    // for backtractable structure
+    int depth;
+    DLinkStore<int> intDLinkStore;
+
+    // do not allow copy
+    Graph(const Graph& g);
+
+public:
+    // constructor
+    Graph(int n, int depth);
+
+    // destructor
+    ~Graph();
+
+    // connect the node from u to v with weight w, capacity c and a tag tag
+    // if tag = -1, multiple edge allowed
+    // if tag != -1, multiple edge not allowed
+    // if addReverse = true, the reverse edge (v,u) with weight = -w and c = 0 will be automatically added
+    void addEdge(int u, int v, Cost w, Cost capacity = 1, int tag = NO_TAG,
+        bool addReverse = true)
+    {
+        addEdgeInternal(u, v, w, capacity, tag, addReverse, -1);
+    }
+    int addEdgeInternal(int u, int v, Cost w, Cost capacity, int tag,
+        bool addReverse, int index);
+
+    // remove the edge from u to v with tag
+    // return true if success
+    // if tag = -1, remove the first edge in the adj. list
+    bool removeEdge(int u, int v, int tag = NO_TAG);
+
+    // modify the weight of the edge from u to v with tag
+    // return true if success
+    // if tag = -1, modify the weight of the first edge in the adj. list
+    bool modifyCost(int u, int v, Cost cost, int tag = NO_TAG);
+
+    // increase the weight of the edge from u to v with tag
+    // return true if success
+    // if tag = -1, increase the weight of the first edge in the adj. list
+    bool increaseCost(int u, int v, Cost cost, int tag = NO_TAG);
+
+    // retur the weight list froom u to v with tag
+    // if tag = -1, return all edges
+    vector<Cost> getWeight(int u, int v, int tag = NO_TAG);
+
+    // Check if any edges going from u to v exists
+    bool edgeExist(int u, int v);
+
+    // retur the minimum weight froom all edges from u to v with tag
+    // if tag = -1, consider all edges from u to v
+    Cost getMinWeight(int u, int v, int tag = NO_TAG);
+
+    // return the number of nodes in the graph
+    int size() const { return gsize; }
+
+    // add a flow of flow value flowval starting from u to v following the
+    // shorteat path
+    // if v and u is connected, the flow is also added to the edge (v,u)
+    void addFlow(int u, int v, Cost flowval);
+
+    // compute the cost of the maximum flow from s to t
+    pair<int, Cost> minCostFlow(int s, int t);
+
+    // add the flow from s to t following the shortest path which capacity is
+    // bounded by the capacaity between s and t (if any)
+    // if can_change = true, augment the graph to the residual graph
+    // return :
+    // a pair <cost,exist>, where cost is the cost of the augmenting path,
+    // exist returns true if such a path from s to t exists.
+    pair<Cost, bool> augment(int s, int t, bool can_change);
+    pair<Cost, bool> augment(int s, int t, bool can_change, vector<pair<int, int>>& edges)
+    {
+        pair<Cost, bool> result = augment(s, t, can_change);
+        if (result.second && !can_change) {
+            edges.clear();
+            int u = t;
+            while (p[u] != u) {
+                edges.push_back(make_pair(p[u], u));
+                u = p[u];
+            }
+        }
+        return result;
+    }
+
+    // remove all negative cycles in the graph by augmentation
+    // cost is modified when all negative cycles are removed.
+    void removeNegativeCycles(StoreCost& cost);
+
+    // shortest path algorithms (using Bellmanford)
+    void shortest_path(list<int>& sources, bool& nevloop);
+
+    void shortest_path(int source)
+    {
+        list<int> sources;
+        bool nevLoop;
+
+        sources.push_back(source);
+        shortest_path(sources, nevLoop);
+
+        if (nevLoop) {
+            cout << "negative loop exists from " << endl;
+            print();
+            exit(1);
+        }
+    }
+
+    void shortest_path(int source, vector<Cost>& pathCost)
+    {
+        shortest_path(source);
+        pathCost.resize(size());
+        for (int i = 0; i < size(); i++)
+            pathCost[i] = d[i];
+    }
+
+    // shortest path algorithm (using Dijkstra with reweighting)
+    // Not used due to error in computing potentials after argumentation
+    /*void shortest_path_with_potential(int source);
+		void shortest_path_with_potential(int source, vector<Cost> &pathCost) {
+			shortest_path_with_potential(source);
+			pathCost.resize(size());
+			for (int i=0;i<size();i++) pathCost[i] = d[i];	
+		}*/
+
+    // just for checking
+    void print()
+    {
+        print(cout);
+    }
+    void print(ostream& os);
+    void printPath(int s, int t);
+
+    // iterate each in-coming edges
+    class iterator;
+    friend class iterator;
+    class iterator {
+        vector<List_Node*>::iterator next_edge;
+
+    public:
+        iterator()
+        {
+        }
+        iterator(vector<List_Node*>::iterator _start)
+            : next_edge(_start)
+        {
+        }
+
+        iterator& operator++()
+        { // Prefix form
+            next_edge++;
+            return *this;
+        }
+
+        iterator& operator--()
+        { // Prefix form
+            next_edge--;
+            return *this;
+        }
+
+        int adjNode()
+        {
+            return (*next_edge)->adj;
+        }
+
+        Cost weight()
+        {
+            return (*next_edge)->weight;
+        }
+
+        Cost capacity()
+        {
+            return (*next_edge)->cap;
+        }
+
+        int tag()
+        {
+            return (*next_edge)->tag;
+        }
+
+        // To see if you're at the end:
+        bool operator==(const iterator& iter) const { return next_edge == iter.next_edge; }
+        bool operator!=(const iterator& iter) const { return next_edge != iter.next_edge; }
+    };
+    iterator begin(int node)
+    {
+        return iterator(adjlist[node].begin());
+    }
+    iterator end(int node)
+    {
+        return iterator(adjlist[node].end());
+    }
+
+    // iterate each in-coming edges between two nodes
+    class edge_iterator;
+    friend class edge_iterator;
+    class edge_iterator {
+        BTListWrapper<int>::iterator next_edge;
+        vector<List_Node*>& edgeInfo;
+
+    public:
+        //edge_iterator() {}
+        edge_iterator(BTListWrapper<int>::iterator _start,
+            vector<List_Node*>& _edgeInfo)
+            : next_edge(_start)
+            , edgeInfo(_edgeInfo)
+        {
+        }
+
+        edge_iterator& operator++()
+        { // Prefix form
+            ++next_edge;
+            return *this;
+        }
+
+        int adjNode()
+        {
+            return edgeInfo[*next_edge]->adj;
+        }
+
+        Cost weight()
+        {
+            return edgeInfo[*next_edge]->weight;
+        }
+
+        Cost capacity()
+        {
+            return edgeInfo[*next_edge]->cap;
+        }
+
+        int tag()
+        {
+            return edgeInfo[*next_edge]->tag;
+        }
+
+        // To see if you're at the end:
+        bool operator==(const edge_iterator& iter) const { return next_edge == iter.next_edge; }
+        bool operator!=(const edge_iterator& iter) const { return next_edge != iter.next_edge; }
+    };
+    edge_iterator begin(int u, int v)
+    {
+        return edge_iterator(vertexList[u]->edgeList[v]->begin(), adjlist[u]);
+    }
+    edge_iterator end(int u, int v)
+    {
+        return edge_iterator(vertexList[u]->edgeList[v]->end(), adjlist[u]);
+    }
+
+    // iterate each neigbouring nodes
+    class node_iterator;
+    friend class node_iterator;
+    class node_iterator {
+        BTListWrapper<int>::iterator next_node;
+
+    public:
+        node_iterator(BTListWrapper<int>::iterator _start)
+            : next_node(_start)
+        {
+        }
+
+        node_iterator& operator++()
+        { // Prefix form
+            ++next_node;
+            return *this;
+        }
+
+        int operator*()
+        {
+            return *next_node;
+        }
+
+        // To see if you're at the end:
+        bool operator==(const node_iterator& iter) const { return next_node == iter.next_node; }
+        bool operator!=(const node_iterator& iter) const { return next_node != iter.next_node; }
+    };
+    node_iterator node_begin(int node)
+    {
+        return node_iterator(vertexList[node]->neighbor.begin());
+    }
+    node_iterator node_end(int node)
+    {
+        return node_iterator(vertexList[node]->neighbor.end());
+    }
+};
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2linearconstr.cpp b/code/include/tb2/globals/tb2linearconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9ea93069c8909099cf623861f258b90b2685ff4c
--- /dev/null
+++ b/code/include/tb2/globals/tb2linearconstr.cpp
@@ -0,0 +1,163 @@
+#include "tb2linearconstr.hpp"
+#include "core/tb2wcsp.hpp"
+
+#define verify
+
+LinearConstraint::LinearConstraint(WCSP* wcsp, EnumeratedVariable** scope_in,
+    int arity_in)
+    : GlobalConstraint(wcsp, scope_in, arity_in, 0)
+{
+    initTest = false;
+}
+
+Cost LinearConstraint::solveMIP(MIP& mip)
+{
+    return mip.solve();
+}
+
+void LinearConstraint::initStructure()
+{
+
+    cost = buildMIP(mip);
+
+    buObj = new int[count];
+
+    propagate();
+}
+
+void LinearConstraint::end()
+{
+    mip.called_time();
+    if (deconnected())
+        return;
+}
+
+void LinearConstraint::checkRemoved(MIP& mip, Cost& cost, vector<int>& rmv)
+{
+
+    pair<Cost, bool> result;
+    vector<int> cDomain, cDomain2;
+    //bool deleted = false;
+    bool flag = false;
+    for (int i = 0; i < arity_; i++) {
+        cDomain.clear();
+        getDomainFromMIP(mip, i, cDomain); // getDomain
+        sort(cDomain.begin(), cDomain.end());
+
+        EnumeratedVariable* y = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator v = y->begin(); v != y->end(); ++v) {
+
+            vector<int>::iterator it = find(cDomain.begin(), cDomain.end(), *v);
+            if (it == cDomain.end()) {
+                cout << "non exist a value ?" << endl;
+                for (vector<int>::iterator v = cDomain.begin(); v != cDomain.end(); v++) {
+                    cout << *v << " ";
+                }
+                cout << endl;
+                for (EnumeratedVariable::iterator v = y->begin(); v != y->end(); ++v) {
+                    cout << *v << " ";
+                }
+                cout << endl;
+                exit(0);
+            }
+            cDomain.erase(it);
+            //deleted = true;
+        }
+
+        if (!cDomain.empty()) {
+            cDomain2.clear();
+            rmv.push_back(i);
+            for (vector<int>::iterator v = cDomain.begin(); v != cDomain.end(); v++) {
+                int var1 = mapvar[i][*v];
+                if (mip.sol(var1) == 1) { // checking if this value is being used
+                    flag = true;
+                }
+                mip.colUpperBound(var1, 0); // removeDomain
+            }
+            //deleted = true;
+        }
+    }
+    if (flag) {
+        cost = solveMIP(); // solve
+    }
+}
+
+void LinearConstraint::findProjection(MIP& mip, Cost& cost, int varindex, map<Value, Cost>& delta)
+{
+
+    pair<Cost, bool> result;
+    delta.clear();
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(varindex);
+    for (EnumeratedVariable::iterator j = x->begin(); j != x->end(); ++j) {
+
+        int var1 = mapvar[varindex][*j];
+        int tmp = cost;
+        cost = tmp = mip.augment(var1); // make sure this value is used...
+
+        assert(tmp >= 0);
+        delta[*j] = tmp;
+    }
+}
+
+void LinearConstraint::augmentStructure(MIP& mip, Cost& cost, int varindex, map<Value, Cost>& delta)
+{
+
+    for (map<Value, Cost>::iterator i = delta.begin(); i != delta.end(); i++) {
+
+        int var1 = mapvar[varindex][i->first];
+        mip.objCoeff(var1, mip.objCoeff(var1) - i->second); // update unary cost
+        if (mip.sol(var1) == 1) { // using this value?
+            cost -= i->second;
+        }
+    }
+}
+
+void LinearConstraint::changeAfterExtend(vector<int>& supports, vector<map<Value, Cost>>& deltas)
+{
+
+    bucost = cost;
+    if (buObj == NULL) {
+        buObj = new int[count];
+    }
+    for (int i = 0; i < count; i++) {
+        buObj[i] = mip.objCoeff(i); // retrieve unary cost
+    }
+    for (unsigned int i = 0; i < supports.size(); i++) {
+        for (map<Value, Cost>::iterator v = deltas[i].begin(); v != deltas[i].end(); v++)
+            v->second *= -1;
+        augmentStructure(mip, cost, supports[i], deltas[i]);
+        for (map<Value, Cost>::iterator v = deltas[i].begin(); v != deltas[i].end(); v++)
+            v->second *= -1;
+    }
+    cost = solveMIP(mip); // solve
+}
+
+void LinearConstraint::changeAfterProject(vector<int>& supports, vector<map<Value, Cost>>& deltas)
+{
+    for (unsigned int i = 0; i < supports.size(); i++) {
+        augmentStructure(mip, cost, supports[i], deltas[i]);
+    }
+}
+
+void LinearConstraint::getDomainFromMIP(MIP& mip, int varindex, vector<int>& domain)
+{
+
+    domain.clear();
+    for (map<Value, int>::iterator v = mapvar[varindex].begin(); v != mapvar[varindex].end(); v++) {
+        if (mip.colUpperBound(v->second) == 1) {
+            domain.push_back(v->first);
+        }
+    }
+}
+
+unsigned LinearConstraint::called_time()
+{
+    return mip.called_time();
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2linearconstr.hpp b/code/include/tb2/globals/tb2linearconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..5fe292b33ae03e47a3d64030dc0e9d9acb8e2148
--- /dev/null
+++ b/code/include/tb2/globals/tb2linearconstr.hpp
@@ -0,0 +1,99 @@
+/** \file tb2linearconstr.hpp
+ *  \brief Global cost functions using linear programming for propagation
+ *
+ */
+
+#ifndef TB2LINEARCONSTR_HPP_
+#define TB2LINEARCONSTR_HPP_
+
+#include "tb2globalconstr.hpp"
+#include "tb2mipsolver.hpp"
+
+class LinearConstraint : public GlobalConstraint {
+protected:
+    bool initTest;
+    MIP mip;
+
+    int* buObj;
+
+    Cost cost, bucost;
+
+    int domainSize;
+
+    int count;
+
+    map<Value, int>* mapvar;
+
+    // compute the projection from the linear program. store the projected cost in
+    // the map delta
+    virtual void findProjection(MIP& mip, Cost& cost, int varindex, map<Value, Cost>& delta);
+    void findProjection(int varindex, map<Value, Cost>& delta)
+    {
+        findProjection(mip, cost, varindex, delta);
+    }
+
+    // check whether the linear program corresponding to the current domains
+    // remove any edge which is corresponded to an infeasible assignment
+    virtual void checkRemoved(MIP& mip, Cost& cost, vector<int>& rmv);
+    void checkRemoved(vector<int>& rmv)
+    {
+        checkRemoved(mip, cost, rmv);
+    }
+
+    virtual void changeAfterExtend(vector<int>& supports, vector<map<Value, Cost>>& deltas);
+    virtual void changeAfterProject(vector<int>& supports, vector<map<Value, Cost>>& deltas);
+    virtual void undoExtend()
+    {
+        cost = bucost;
+        for (int i = 0; i < count; i++) {
+            mip.objCoeff(i, buObj[i]);
+        }
+    }
+
+    // construct the linear program
+    virtual Cost buildMIP(MIP& mip) { return 0; }
+    inline Cost buildMIP() { return buildMIP(mip); }
+
+    inline void augmentMIP(int varindex, map<Value, Cost>& delta)
+    {
+        augmentStructure(mip, cost, varindex, delta);
+    }
+
+    // compute the minimal of the linear program
+    virtual Cost solveMIP(MIP& mip);
+    inline Cost solveMIP() { return solveMIP(mip); }
+
+    // compute the domains of a variable from the linear program
+    virtual void getDomainFromMIP(MIP& mip, int varindex, vector<int>& domain);
+
+    // augment the cost to the linear program
+    virtual void augmentStructure(MIP& mip, Cost& cost, int varindex, map<Value, Cost>& delta);
+
+    // compute the cost according to the original cost struture
+    virtual Cost evalOriginal(const Tuple& s) { return MIN_COST; }
+    virtual Cost getMinCost()
+    {
+        return cost;
+    }
+
+public:
+    LinearConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int
+                                                                    arity_in);
+
+    ~LinearConstraint() {}
+
+    virtual void read(istream& file, bool mult = true) {}
+    virtual void initStructure();
+    virtual void end();
+
+    unsigned called_time();
+};
+
+#endif /*TB2LINEARCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2lpsconstr.cpp b/code/include/tb2/globals/tb2lpsconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..10a4b81c4eedf0002f87222e0d0c83e8e6fa1ed6
--- /dev/null
+++ b/code/include/tb2/globals/tb2lpsconstr.cpp
@@ -0,0 +1,550 @@
+#include "tb2lpsconstr.hpp"
+#include "core/tb2wcsp.hpp"
+
+LPSConstraint::LPSConstraint(WCSP* wcsp, EnumeratedVariable** scope_in,
+    int arity_in, int* constrcounter)
+    : LinearConstraint(wcsp, scope_in, arity_in)
+    , wcspconstrcounter(constrcounter)
+{
+    buildIndex();
+}
+
+void LPSConstraint::buildIndex()
+{
+    vector<Value> D;
+    count = 0; // total number of domains (number of vars * number of domains)
+    count2 = 0; // number of possible domains (union all possible domains)
+    mapvar = new map<Value, int>[arity_];
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            D.push_back(*iterx);
+            mapvar[i].insert(pair<Value, int>(*iterx, count++));
+        }
+    }
+    sort(D.begin(), D.end());
+    D.erase(unique(D.begin(), D.end()), D.end());
+
+    domainSize = D.size();
+
+    for (vector<Value>::iterator i = D.begin(); i != D.end(); i++) {
+        count2++;
+    }
+}
+
+void LPSConstraint::read(istream& file, bool mult)
+{
+
+    string str;
+    int nvalues, low, high, windowsi, d;
+    file >> nwindows;
+#ifndef ILOGCPLEX
+    if (wcspconstrcounter)
+        (*wcspconstrcounter) = (*wcspconstrcounter) + nwindows;
+    cout << "Warning! slinear global cost function skipped... (recompile ToulBar2 with ILOGCPLEX flag)" << endl;
+    deconnect();
+    if (arity_ != (int)wcsp->numberOfVariables())
+        exit(1);
+    return;
+#endif
+    nrows = 0;
+    nslacks = 0;
+    windowVars = (int**)malloc(sizeof(int*) * nwindows);
+    group = (int**)malloc(sizeof(int*) * nwindows);
+
+    string typeID, defstr;
+    for (int i = 0; i < nwindows; i++) {
+        file >> windowsi;
+        windowSize.push_back(windowsi);
+        windowVars[i] = (int*)malloc(sizeof(int) * windowsi);
+        for (int j = 0; j < windowsi; j++) {
+            file >> d;
+            windowVars[i][j] = d;
+        }
+        file >> d;
+        if (d != -1) {
+            cerr << "Error occurred in reading slinear" << endl;
+            exit(1);
+        } else {
+            file >> typeID;
+            windowType.push_back(typeID);
+            file >> defstr;
+            if (strcmp(defstr.c_str(), "def") == 0 || strcmp(defstr.c_str(), "var") == 0) {
+                file >> d;
+                subdef.push_back(d);
+            } else {
+                cerr << "Error occurred in reading slinear def|var" << endl;
+                exit(1);
+            }
+            if (strcmp(windowType[i].c_str(), "salldiff") == 0) {
+                nrows += domainSize;
+                nslacks += domainSize;
+                sumlow.push_back(domainSize);
+                sumhigh.push_back(domainSize);
+            } else if (strcmp(windowType[i].c_str(), "samong") == 0) {
+                nrows += 1;
+                nslacks += 2;
+                file >> low >> high >> nvalues;
+                if (high < low) {
+                    cerr << "Error occurred in reading samong" << endl;
+                    exit(1);
+                }
+                sumlow.push_back(low);
+                sumhigh.push_back(high);
+
+                group[i] = (int*)malloc(sizeof(int) * count2);
+                for (int j = 0; j < count2; j++) {
+                    group[i][j] = 0;
+                }
+                for (int j = 0; j < nvalues; j++) {
+                    file >> d;
+                    group[i][d] = 1;
+                }
+            } else if (strcmp(windowType[i].c_str(), "sgcc") == 0) {
+                file >> d;
+                for (int j = 0; j < d; j++) {
+                    nrows += 1;
+                    nslacks += 2;
+                    windowType[i] = "samong";
+                    file >> nvalues >> low >> high;
+                    if (high < low) {
+                        cerr << "Error occurred in reading sgcc" << endl;
+                        exit(1);
+                    }
+                    group[i] = (int*)malloc(sizeof(int) * count2);
+                    for (int k = 0; k < count2; k++) {
+                        group[i][k] = 0;
+                    }
+                    group[i][nvalues] = 1;
+                    sumlow.push_back(low);
+                    sumhigh.push_back(high);
+                    if (j != d - 1) {
+                        i++;
+                        nwindows++;
+                        windowSize.push_back(windowsi);
+                        windowVars[i] = (int*)malloc(sizeof(int) * windowsi);
+                        for (int k = 0; k < windowsi; k++) {
+                            windowVars[i][k] = windowVars[i - 1][k];
+                        }
+                        subdef[i] = subdef[i - 1];
+                    }
+                }
+            } else if (strcmp(windowType[i].c_str(), "ssame") == 0) {
+                nrows += domainSize;
+                nslacks += domainSize * 2;
+                file >> low >> high;
+                sumlow.push_back(low);
+                sumhigh.push_back(high);
+
+                group[i] = (int*)malloc(sizeof(int) * (low + high));
+                for (int k = 0; k < low + high; k++) {
+                    group[i][k] = -1;
+                }
+                for (int j = 0; j < low; j++) {
+                    file >> d;
+                    for (int k = 0; k < windowsi; k++) {
+                        if (windowVars[i][k] == d) {
+                            if (group[i][k] == -1) {
+                                group[i][k] = 0;
+                            } else {
+                                cerr << "Error occurred in reading ssame" << endl;
+                                exit(1);
+                            }
+                            break;
+                        }
+                    }
+                }
+                for (int j = 0; j < high; j++) {
+                    file >> d;
+                    for (int k = 0; k < windowsi; k++) {
+                        if (windowVars[i][k] == d) {
+                            if (group[i][k] == -1) {
+                                group[i][k] = 1;
+                            } else {
+                                cerr << "Error occurred in reading ssame" << endl;
+                                exit(1);
+                            }
+                            break;
+                        }
+                    }
+                }
+            } else if (strcmp(windowType[i].c_str(), "ssum") == 0) {
+                nrows += 1;
+                nslacks += 2;
+                file >> low >> high >> nvalues;
+                if (high < low) {
+                    cerr << "Error occurred in reading sum" << endl;
+                    exit(1);
+                }
+                sumlow.push_back(low);
+                sumhigh.push_back(high);
+                group[i] = (int*)malloc(sizeof(int) * count2);
+                for (int j = 0; j < count2; j++) {
+                    group[i][j] = 0;
+                }
+                for (int j = 0; j < nvalues; j++) {
+                    file >> d;
+                    group[i][j] = d;
+                }
+            } else if (strcmp(windowType[i].c_str(), "segcc") == 0) {
+                nrows += 1;
+                nslacks += 2;
+                file >> d >> nvalues;
+                sumlow.push_back(d); //abused the sumlow array
+                sumhigh.push_back(0);
+                group[i] = (int*)malloc(sizeof(int) * count2);
+                for (int j = 0; j < count2; j++) {
+                    group[i][j] = 0;
+                }
+                for (int j = 0; j < nvalues; j++) {
+                    file >> d;
+                    group[i][d] = 1;
+                }
+            } else if (strcmp(windowType[i].c_str(), "sdisjunctive") == 0) {
+                nrows += count2;
+                nslacks += count2;
+                file >> d;
+                sumlow.push_back(d); //abused the sumlow array
+                sumhigh.push_back(0);
+                group[i] = (int*)malloc(sizeof(int) * d * 2);
+                for (int j = 0; j < d; j++) {
+                    file >> low >> high;
+                    group[i][j] = low;
+                    group[i][j + d] = high;
+                }
+            } else {
+                cerr << "Error occurred in reading slinear: no linearization method for: " << typeID << endl;
+                exit(1);
+            }
+        }
+    }
+}
+
+Cost LPSConstraint::evalOriginal(const Tuple& s)
+{
+
+    Cost cost = 0;
+    for (int i = 0; i < nwindows; i++) {
+        if (strcmp(windowType[i].c_str(), "salldiff") == 0) {
+            set<char> count;
+            for (int j = 0; j < windowSize[i]; j++) {
+                count.insert(s[windowVars[i][j]]);
+            }
+            cost += (windowSize[i] - count.size()) * subdef[i];
+        } else if (strcmp(windowType[i].c_str(), "samong") == 0) {
+            int appear = 0;
+            for (int j = 0; j < windowSize[i]; j++) {
+                if (group[i][s[windowVars[i][j]]]) {
+                    appear++;
+                }
+            }
+            if (appear < sumlow[i]) {
+                cost += subdef[i] * (sumlow[i] - appear);
+            } else if (appear > sumhigh[i]) {
+                cost += subdef[i] * (appear - sumhigh[i]);
+            }
+        } else if (strcmp(windowType[i].c_str(), "ssame") == 0) {
+            map<char, int> appear;
+            for (int j = 0; j < windowSize[i]; j++) {
+                if (group[i][j] == 0) {
+                    appear[s[windowVars[i][j]]] += subdef[i];
+                } else if (group[i][j] == 1) {
+                    appear[s[windowVars[i][j]]] -= subdef[i];
+                } else {
+                    cerr << "Error occurred in reading ssame()" << endl;
+                    exit(1);
+                }
+            }
+            int sum = 0;
+            for (map<char, int>::iterator it = appear.begin(); it != appear.end(); it++) {
+                sum += (it->second < 0) ? (-(it->second)) : it->second;
+            }
+            cost += sum / 2;
+        } else if (strcmp(windowType[i].c_str(), "ssum") == 0) {
+            int tmpSum = 0;
+            for (int j = 0; j < windowSize[i]; j++) {
+                tmpSum += group[i][s[windowVars[i][j]]];
+            }
+            if (tmpSum < sumlow[i]) {
+                cost += subdef[i] * (sumlow[i] - tmpSum);
+            } else if (tmpSum > sumhigh[i]) {
+                cost += subdef[i] * (tmpSum - sumhigh[i]);
+            }
+        } else if (strcmp(windowType[i].c_str(), "segcc") == 0) {
+            int appear = 0;
+            int tmpSum = s[windowVars[i][sumlow[i]]]; //abused the sumlow array
+            for (int j = 0; j < windowSize[i]; j++) {
+                //cout << s[j];
+                if (group[i][s[windowVars[i][j]]]) {
+                    appear++;
+                }
+            }
+            if (appear < tmpSum) {
+                cost += subdef[i] * (tmpSum - appear);
+            } else if (appear > tmpSum) {
+                cost += subdef[i] * (appear - tmpSum);
+            }
+        } else if (strcmp(windowType[i].c_str(), "sdisjunctive") == 0) {
+            int tmpSum;
+            for (int k = 0; k < count2; k++) {
+                tmpSum = 0;
+
+                for (int j = 0; j < sumlow[i]; j++) {
+                    if (k >= s[windowVars[i][group[i][j]]] && k < s[windowVars[i][group[i][j]]] + group[i][j + sumlow[i]]) {
+                        tmpSum++;
+                    }
+                }
+
+                if (tmpSum > 1) {
+                    cost += (tmpSum - 1) * subdef[i];
+                }
+            }
+        } else {
+            cerr << "Error occurred in evaloriginal: Unknown ID" << endl;
+            exit(1);
+        }
+    }
+    return cost;
+}
+
+Cost LPSConstraint::buildMIP(MIP& mip)
+{
+
+    mip.clear();
+    mip.addRows(nrows);
+    mip.addBool(count);
+    mip.addInt(nslacks);
+
+    double* vars;
+    double* var2;
+    int* idxs;
+    vars = new double[count + nslacks];
+    var2 = new double[count + nslacks];
+    idxs = new int[count + nslacks];
+
+    for (int i = 0; i < count + nslacks; i++) {
+        idxs[i] = i;
+    }
+
+    int rowCount = 0;
+    int slackCount = 0;
+    for (int i = 0; i < nwindows; i++) {
+        if (strcmp(windowType[i].c_str(), "salldiff") == 0) {
+            for (int k = 0; k < domainSize; k++) {
+                for (int j = 0; j < count + nslacks; j++) {
+                    vars[j] = 0;
+                }
+                for (int j = 0; j < windowSize[i]; j++) {
+                    EnumeratedVariable* x = (EnumeratedVariable*)getVar(windowVars[i][j]);
+                    for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+                        if (k == *v) {
+                            vars[mapvar[windowVars[i][j]][*v]] = 1;
+                        }
+                    }
+                }
+                vars[count + slackCount] = -1;
+                mip.objCoeff(count + slackCount, subdef[i]);
+                slackCount++;
+                mip.rowCoeff(rowCount, count + nslacks, idxs, vars);
+                mip.rowBound(rowCount, 0, 1);
+                rowCount++;
+            }
+        } else if (strcmp(windowType[i].c_str(), "samong") == 0) {
+            for (int j = 0; j < count + nslacks; j++) {
+                vars[j] = 0;
+            }
+            for (int j = 0; j < windowSize[i]; j++) {
+                EnumeratedVariable* x = (EnumeratedVariable*)getVar(windowVars[i][j]);
+                for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+
+                    vars[mapvar[windowVars[i][j]][*v]] = group[i][*v];
+                }
+            }
+            vars[count + slackCount] = 1;
+            mip.objCoeff(count + slackCount, subdef[i]);
+            slackCount++;
+            vars[count + slackCount] = -1;
+            mip.objCoeff(count + slackCount, subdef[i]);
+            slackCount++;
+            mip.rowCoeff(rowCount, count + nslacks, idxs, vars);
+            mip.rowBound(rowCount, sumlow[i], sumhigh[i]);
+            rowCount++;
+        } else if (strcmp(windowType[i].c_str(), "ssame") == 0) {
+            for (int k = 0; k < domainSize; k++) {
+                for (int j = 0; j < count + nslacks; j++) {
+                    vars[j] = 0;
+                }
+                for (int j = 0; j < windowSize[i]; j++) {
+                    EnumeratedVariable* x = (EnumeratedVariable*)getVar(windowVars[i][j]);
+                    for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+                        if (k == *v) {
+                            if (group[i][j] == 0) {
+                                vars[mapvar[windowVars[i][j]][*v]] = 1;
+                            } else {
+                                vars[mapvar[windowVars[i][j]][*v]] = -1;
+                            }
+                        }
+                    }
+                }
+                vars[count + slackCount] = -1;
+                mip.objCoeff(count + slackCount, subdef[i]);
+                slackCount++;
+                vars[count + slackCount] = 1;
+                mip.objCoeff(count + slackCount, subdef[i]);
+                slackCount++;
+                mip.rowCoeff(rowCount, count + nslacks, idxs, vars);
+                mip.rowBound(rowCount, 0, 0);
+                rowCount++;
+            }
+        } else if (strcmp(windowType[i].c_str(), "ssum") == 0) {
+            for (int j = 0; j < count + nslacks; j++) {
+                vars[j] = 0;
+            }
+            for (int j = 0; j < windowSize[i]; j++) {
+                EnumeratedVariable* x = (EnumeratedVariable*)getVar(windowVars[i][j]);
+                for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+                    vars[mapvar[windowVars[i][j]][*v]] = group[i][*v];
+                }
+            }
+            vars[count + slackCount] = 1;
+            mip.objCoeff(count + slackCount, subdef[i]);
+            slackCount++;
+            vars[count + slackCount] = -1;
+            mip.objCoeff(count + slackCount, subdef[i]);
+            slackCount++;
+            mip.rowCoeff(rowCount, count + nslacks, idxs, vars);
+            mip.rowBound(rowCount, sumlow[i], sumhigh[i]);
+            rowCount++;
+        } else if (strcmp(windowType[i].c_str(), "segcc") == 0) {
+            for (int j = 0; j < count + nslacks; j++) {
+                vars[j] = 0;
+            }
+            for (int j = 0; j < windowSize[i]; j++) {
+                EnumeratedVariable* x = (EnumeratedVariable*)getVar(windowVars[i][j]);
+                for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+
+                    vars[mapvar[windowVars[i][j]][*v]] = group[i][*v];
+                }
+            }
+            EnumeratedVariable* x = (EnumeratedVariable*)getVar(sumlow[i]);
+            for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+                vars[mapvar[sumlow[i]][*v]] = -(*v);
+            }
+            vars[count + slackCount] = 1;
+            mip.objCoeff(count + slackCount, subdef[i]);
+            slackCount++;
+            vars[count + slackCount] = -1;
+            mip.objCoeff(count + slackCount, subdef[i]);
+            slackCount++;
+            mip.rowCoeff(rowCount, count + nslacks, idxs, vars);
+            mip.rowBound(rowCount, 0, 0);
+            rowCount++;
+        } else if (strcmp(windowType[i].c_str(), "sdisjunctive") == 0) {
+            for (int l = 0; l < count2; l++) {
+                for (int j = 0; j < count + nslacks; j++) {
+                    vars[j] = 0;
+                }
+                for (int j = 0; j < sumlow[i]; j++) {
+                    int k = l - group[i][j + sumlow[i]];
+                    while (k < l) {
+                        EnumeratedVariable* x = (EnumeratedVariable*)getVar(windowVars[i][group[i][j]]);
+                        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+                            if (k == *v) {
+                                vars[mapvar[windowVars[i][group[i][j]]][*v]] = 1;
+                                k++;
+                            } else {
+                                while (k < l && k != *v) {
+                                    k++;
+                                }
+                                if (k == *v) {
+                                    vars[mapvar[windowVars[i][group[i][j]]][*v]] = 1;
+                                    k++;
+                                }
+                            }
+                        }
+                    }
+                }
+                vars[count + slackCount] = -1;
+                mip.objCoeff(count + slackCount, subdef[i]);
+                slackCount++;
+                mip.rowCoeff(rowCount, count + nslacks, idxs, vars);
+                mip.rowBound(rowCount, 0, 1);
+                rowCount++;
+            }
+        } else {
+            cerr << "Error occurred in building mip: Unknown ID" << windowType[i] << endl;
+            exit(1);
+        }
+    }
+
+    for (int i = 0; i < arity_; i++) {
+        mip.addRows(1);
+        for (int j = 0; j < count + nslacks; j++) {
+            var2[j] = 0;
+        }
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+            mip.colUpperBound(mapvar[i][*v], 1);
+            var2[mapvar[i][*v]] = 1;
+            mip.objCoeff(mapvar[i][*v], -deltaCost[i][*v]);
+        }
+        mip.rowCoeff(i + nrows, count, idxs, var2);
+        mip.rowBound(i + nrows, 1, 1);
+    }
+
+    mip.end();
+    mip.solve();
+    return mip.solValue();
+}
+
+Cost LPSConstraint::solveMIP(MIP& mip)
+{
+
+    return mip.solValue();
+}
+
+void LPSConstraint::dump(ostream& os, bool original)
+{
+    int nvalues = 1;
+
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    os << " -1 slinear" << endl
+       << ((mode == VAR) ? "var" : "dec") << " " << def << " " << nvalues << endl;
+
+    os << "bounds " << sumlow[0] << " " << sumhigh[0] << endl;
+}
+
+void LPSConstraint::print(ostream& os)
+{
+    int nvalues = 1;
+
+    os << "slinear(";
+    for (int i = 0; i < arity_; i++) {
+        os << scope[i]->wcspIndex;
+        if (i < arity_ - 1)
+            os << ",";
+    }
+    os << ")[" << ((mode == VAR) ? "var" : "dec") << "," << def << "," << nvalues;
+
+    os << ","
+       << "bounds"
+       << "," << sumlow[0] << "," << sumhigh[0];
+
+    os << "]";
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2lpsconstr.hpp b/code/include/tb2/globals/tb2lpsconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..163451f288e2fd83097aa27701151ac9acbbfe33
--- /dev/null
+++ b/code/include/tb2/globals/tb2lpsconstr.hpp
@@ -0,0 +1,53 @@
+/** \file tb2lpsconstr.hpp
+ *  \brief Linear programming based global cost function : ssum, samong, sgcc, ssame, segcc, sdisjunction
+ */
+
+#ifndef TB2LPSCONSTR_HPP_
+#define TB2LPSCONSTR_HPP_
+
+//#include "stddef.h"
+#include "tb2linearconstr.hpp"
+
+//#define upper_bound first
+//#define lower_bound second
+
+class LPSConstraint : public LinearConstraint {
+private:
+    int nwindows, nrows, nslacks;
+    vector<int> sumlow, sumhigh, windowSize, subdef;
+    vector<string> windowType;
+    int** windowVars;
+    int** group;
+    int count2;
+    int* wcspconstrcounter;
+    void buildIndex();
+    Cost buildMIP(MIP& mip);
+    Cost solveMIP(MIP& mip);
+
+public:
+    static const int VALUE = 1;
+    static const int VAR = 0;
+    LPSConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int
+                                                                 arity_in,
+        int* constrcounter);
+
+    ~LPSConstraint()
+    {
+    }
+
+    string getName() { return "LPS constraint"; }
+    Cost evalOriginal(const Tuple& s);
+    virtual void read(istream& file, bool mult = true);
+
+    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+};
+
+#endif /*TB2LPSCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2maxconstr.cpp b/code/include/tb2/globals/tb2maxconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c39b7563087d8545dbd1305a426d46a36462a590
--- /dev/null
+++ b/code/include/tb2/globals/tb2maxconstr.cpp
@@ -0,0 +1,232 @@
+#include "tb2maxconstr.hpp"
+#include "core/tb2enumvar.hpp"
+
+MaxConstraint::MaxConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity)
+    : DPGlobalConstraint(wcsp, scope, arity)
+    , top(MIN_COST)
+    , largest(MIN_COST)
+{
+    weightMap.resize(arity);
+}
+
+MaxConstraint::~MaxConstraint()
+{
+}
+
+void MaxConstraint::read(istream& file, bool mult)
+{
+    //    int n = arity();
+    // weightMap.resize(n);
+
+    file >> def;
+    if (mult)
+        def *= ToulBar2::costMultiplier;
+    /*for(int i = 0; i < n; i++){
+		EnumeratedVariable * x = scope[i];        
+        for(EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it)
+            weightMap[i][*it] = def; 
+    }*/
+
+    int nTuple;
+    file >> nTuple;
+    top = def;
+    for (int it = 0; it < nTuple; it++) {
+        int varID;
+        unsigned int v;
+        Cost w;
+        file >> varID >> v >> w;
+        if (mult)
+            w *= ToulBar2::costMultiplier;
+        setAssignmentWeight((EnumeratedVariable*)(wcsp->getVar(varID)), v, w);
+    }
+}
+
+void MaxConstraint::dump(ostream& os, bool original)
+{
+    assert(original); //TODO: case original is false
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    os << " -1 smaxdp " << def << endl;
+    int ntuples = 0;
+    for (int i = 0; i < arity_; i++)
+        ntuples += weightMap[i].size();
+    os << ntuples << endl;
+    for (int i = 0; i < arity_; i++) {
+        for (map<Value, Cost>::iterator it = weightMap[i].begin(); it != weightMap[i].end(); ++it) {
+            os << i << " " << it->first << " " << it->second << endl;
+        }
+    }
+    os << endl;
+}
+
+void MaxConstraint::initMemoization()
+{
+    int n = arity();
+    for (int i = 0; i < n; i++) {
+        EnumeratedVariable* x = scope[i];
+        for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+            map<Value, Cost>::iterator pos = weightMap[i].find(*it);
+            if (pos == weightMap[i].end())
+                weightMap[i][*it] = def;
+        }
+    }
+    top = max(MAX_COST, wcsp->getUb());
+    mincosts.resize(n);
+    stack.resize(n);
+    last.resize(n);
+    best.resize(n);
+}
+
+Cost MaxConstraint::evalOriginal(const Tuple& s)
+{
+    Cost largeComp = 0;
+    int n = arity();
+    for (int i = 0; i < n; i++) {
+        if (largeComp < weightMap[i][s[i]])
+            largeComp = weightMap[i][s[i]];
+    }
+    return largeComp;
+}
+
+Cost MaxConstraint::minCostOriginal()
+{
+    findLargest();
+    return largest;
+}
+
+Cost MaxConstraint::minCostOriginal(int var, Value val, bool changed)
+{
+    if (changed)
+        findLargest();
+    return max(weightMap[var][val], largest);
+}
+
+void MaxConstraint::findLargest()
+{
+    largest = 0;
+    for (int i = 0; i < arity(); i++) {
+        EnumeratedVariable* x = scope[i];
+        Cost tmp = top;
+        for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it)
+            if (tmp > weightMap[i][*it])
+                tmp = weightMap[i][*it];
+        if (largest < tmp)
+            largest = tmp;
+    }
+}
+
+void MaxConstraint::recompute()
+{
+
+    int n = arity();
+    sorted.clear();
+    for (int i = 0; i < n; i++) {
+        EnumeratedVariable* x = scope[i];
+        for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it)
+            sorted.push_back(Entry(i, *it, weightMap[i][*it]));
+    }
+
+    sort(sorted.begin(), sorted.end());
+    int m = sorted.size();
+
+    int cnt = 0;
+    Cost sum = 0;
+    query.resize(m);
+    cost.resize(m);
+    for (int i = 0; i < n; i++) {
+        last[i] = -1;
+        stack[i].clear();
+    }
+
+    for (int i = 0; i < m; i++) {
+        int var = sorted[i].var;
+        if (last[var] < 0) {
+            last[var] = i;
+            stack[var].push_back(i);
+            best[var] = unary(sorted[i].var, sorted[i].val);
+            sum += best[var];
+            cnt++;
+        } else {
+            query[last[var]] = i - 1;
+            last[var] = i;
+            if (best[var] > unary(sorted[i].var, sorted[i].val)) {
+                sum -= best[var];
+                best[var] = unary(sorted[i].var, sorted[i].val);
+                sum += best[var];
+                stack[var].push_back(i);
+            }
+        }
+        if (cnt < n)
+            cost[i] = top;
+        else
+            cost[i] = sum + sorted[i].weight - best[var] + unary(sorted[i].var, sorted[i].val);
+    }
+
+    link.resize(m);
+    for (int i = 0; i < m; i++)
+        link[i] = i;
+    for (int i = 0; i < n; i++) {
+        query[last[i]] = m - 1;
+        best[i] = top;
+    }
+
+    tree.resize(0);
+    for (int i = m - 1; i >= 0; i--) {
+        int var = sorted[i].var;
+        int val = sorted[i].val;
+        if (query[i] > i) {
+            Cost cur = cost[ancestor(query[i])];
+            int curVar = sorted[stack[var].back()].var;
+            int curVal = sorted[stack[var].back()].val;
+            cur -= unary(curVar, curVal);
+            best[var] = min(best[var], cur);
+        }
+        if (stack[var].back() == i)
+            stack[var].pop_back();
+        mincosts[var][val] = min(cost[i], best[var] + unary(sorted[i].var, sorted[i].val));
+        while (tree.size() != 0 && cost[*tree.rbegin()] >= cost[i]) {
+            link[*tree.rbegin()] = i;
+            tree.pop_back();
+        }
+        tree.push_back(i);
+    }
+}
+
+DPGlobalConstraint::Result MaxConstraint::minCost(int var, Value val, bool changed)
+{
+    if (changed)
+        recompute();
+    return DPGlobalConstraint::Result(mincosts[var][val], NULL);
+}
+
+Cost MaxConstraint::unary(int var, int val)
+{
+    return -deltaCost[var][scope[var]->toIndex(val)];
+}
+
+int MaxConstraint::ancestor(int i)
+{
+    int ret = i;
+    while (link[ret] != ret)
+        ret = link[ret];
+    for (int j = i; j != ret; j = i) {
+        i = link[i];
+        link[j] = ret;
+    }
+    return ret;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2maxconstr.hpp b/code/include/tb2/globals/tb2maxconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..3fe200a483ccbbccf2286fd10573b97a91920619
--- /dev/null
+++ b/code/include/tb2/globals/tb2maxconstr.hpp
@@ -0,0 +1,101 @@
+/** \file tb2maxconstr.hpp
+ *    \brief Dynamic programming based global Max constraint
+ *
+ */
+
+#ifndef TB2MAXCONSTR_HPP_
+#define TB2MAXCONSTR_HPP_
+
+#include "tb2dpglobalconstr.hpp"
+
+class MaxConstraint : public DPGlobalConstraint {
+
+private:
+    struct Entry {
+        Cost weight;
+        int var, val;
+        Entry()
+            : weight(MIN_COST)
+            , var(0)
+            , val(0)
+        {
+        }
+        Entry(int var, int val, Cost weight)
+        {
+            this->weight = weight;
+            this->var = var;
+            this->val = val;
+        }
+        bool operator<(const Entry& y) const
+        {
+            return weight < y.weight;
+        }
+    };
+
+    vector<map<Value, Cost>> weightMap; //weight of each value
+    Cost top;
+
+    // Data structure for computing the min. cost
+    vector<Entry> sorted;
+    vector<vector<int>> stack;
+    vector<Cost> cost;
+    vector<Cost> best;
+    vector<int> last;
+    vector<int> query;
+    vector<int> link;
+    vector<int> tree;
+    vector<map<Value, Cost>> mincosts;
+
+    Cost unary(int var, int val);
+    int ancestor(int i);
+    void recompute();
+
+    //pick one value out of the n domains with smallest weight,
+    //and choose the largest one
+    Cost largest;
+    void findLargest();
+
+protected:
+    Cost minCostOriginal();
+    Cost minCostOriginal(int var, Value val, bool changed);
+    Result minCost(int var, Value val, bool changed);
+
+    Cost evalOriginal(const Tuple& s);
+
+public:
+    MaxConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity);
+    virtual ~MaxConstraint();
+
+    void read(istream& file, bool mult = true);
+    //void setDefaultViolationCost(Cost cost) {if(configuring) def = cost;}
+    //void setViolationMeasure(int measure) {if(configuring) mode = measure;}
+    void setAssignmentWeight(EnumeratedVariable* variable, Value value, Cost weight)
+    {
+
+        int varID = -1;
+        for (int j = 0; j < arity_ && varID == -1; j++) {
+            if (getVar(j) == variable)
+                varID = j;
+        }
+
+        if (varID == -1) {
+            cout << "Error in reading max\n";
+            exit(0);
+        }
+        weightMap[varID][value] = weight;
+        top = max(top, weight);
+    }
+    void initMemoization();
+
+    string getName() { return "max"; }
+    void dump(ostream& os, bool original = true);
+};
+
+#endif /*TB2MAXCONSTR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2mipsolver.cpp b/code/include/tb2/globals/tb2mipsolver.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6b3f9738ad62b596dfb2cc7981b26305d885b03f
--- /dev/null
+++ b/code/include/tb2/globals/tb2mipsolver.cpp
@@ -0,0 +1,270 @@
+#include "tb2mipsolver.hpp"
+
+MIP::MIP()
+    : solver(NULL)
+{
+#ifdef ILOGCPLEX
+    solver = new IlogMIP();
+#endif
+    if (solver == this) {
+        cout << "Error: Looping In IlogMIP\n";
+        exit(1);
+    }
+}
+
+MIP::~MIP()
+{
+    delete solver;
+}
+
+#ifdef ILOGCPLEX
+
+IlogMIP::IlogMIP()
+{
+    model = (IloModel*)malloc(sizeof(IloModel));
+    *model = IloModel(env);
+
+    var = (IloNumVarArray*)malloc(sizeof(IloNumVarArray));
+    *var = IloNumVarArray(env);
+
+    obj = (IloObjective*)malloc(sizeof(IloObjective));
+    *obj = IloObjective(env, 0, IloObjective::Minimize);
+
+    con = (IloRangeArray*)malloc(sizeof(IloRangeArray));
+    *con = IloRangeArray(env);
+
+    cplex = (IloCplex*)malloc(sizeof(IloCplex));
+    *cplex = IloCplex(env);
+
+    sols = (IloNumArray*)malloc(sizeof(IloNumArray));
+    *sols = IloNumArray(env);
+
+    buObjExpr = (IloNumExprArg*)malloc(sizeof(IloNumExprArg));
+    *buObjExpr = IloNumExprArg();
+
+    cols.clear();
+    rowCount = 0;
+    colCount = 0;
+    objValue = 0;
+
+    cplex->setOut(env.getNullStream());
+    cplex->setWarning(env.getNullStream());
+    cplex->setError(env.getNullStream());
+    called = 0;
+}
+
+void IlogMIP::clear()
+{
+
+    cplex->clear();
+    model->end();
+    *model = IloModel(env);
+    con->endElements();
+    *con = IloRangeArray(env);
+    obj->end();
+    *obj = IloObjective(env, 0, IloObjective::Minimize);
+    var->endElements();
+    *var = IloNumVarArray(env);
+    sols->clear();
+    *sols = IloNumArray(env);
+
+    cols.clear();
+    rowCount = 0;
+    colCount = 0;
+    objValue = 0;
+}
+
+void IlogMIP::end()
+{
+    model->add(*var);
+    model->add(*obj);
+    model->add(*con);
+    cplex->extract(*model);
+}
+
+void IlogMIP::addRows(int n)
+{
+    for (int i = 0; i < n; i++) {
+        con->add(IloRange(env, -IloInfinity, IloInfinity));
+        rowCount++;
+    }
+} // add n new inequalities to the linear program
+
+void IlogMIP::addInt(int n)
+{
+    for (int i = 0; i < n; i++) {
+        var->add(IloNumVar(env, 0.0, IloInfinity));
+        cols.push_back(0);
+        colCount++;
+    }
+} // add n integer variables to the linear program
+
+void IlogMIP::addBool(int n)
+{
+    for (int i = 0; i < n; i++) {
+        var->add(IloNumVar(env, 0.0, 0.0));
+        cols.push_back(0);
+        colCount++;
+    }
+} // add n boolean variables to the linear program
+
+void IlogMIP::addCols(int n)
+{
+    for (int i = 0; i < n; i++) {
+        var->add(IloNumVar(env, 0.0, IloInfinity));
+        cols.push_back(0);
+        colCount++;
+    }
+} // add n numeric variables to the linear program
+
+void IlogMIP::rowBound(int n, int lower, int upper)
+{
+
+    (*con)[n].setBounds(lower, upper);
+} // set the bounds of a variable
+
+void IlogMIP::rowLowerBound(int n, int lower)
+{
+    (*con)[n].setLB(lower);
+} // set the lower bound of a variable
+
+void IlogMIP::rowUpperBound(int n, int upper)
+{
+    (*con)[n].setUB(upper);
+} // set the upper bound of a variable
+
+void IlogMIP::rowCoeff(int n, int count, int indexes[], double values[])
+{
+    for (int i = 0; i < count; i++) {
+        (*con)[n].setLinearCoef((*var)[indexes[i]], values[i]);
+    }
+} // set the coefficients of the variables of a row
+
+int IlogMIP::sol(int var1)
+{
+
+    if (ceil((*sols)[var1]) - (*sols)[var1] < 0.000001) {
+        return ceil((*sols)[var1]);
+    } else {
+        return floor((*sols)[var1]);
+    }
+
+} // return the value of a variable (rounded down)
+
+int IlogMIP::solValue()
+{
+    return objValue;
+} // return the minimal of the current linear program
+
+int IlogMIP::colUpperBound(int var1)
+{
+    return (*var)[var1].getUB();
+} // return the lower bound of a value
+
+void IlogMIP::colUpperBound(int var1, int i)
+{
+    (*var)[var1].setUB(i);
+} // set the upper bound of a value
+
+int IlogMIP::augment(int var1)
+{
+    (*var)[var1].setLB(1);
+    solve();
+    int cost = solValue();
+    assert(sol(var1) == 1);
+    (*var)[var1].setLB(0);
+    return cost;
+} // compute the minimal when a value is used
+
+int IlogMIP::objCoeff(int var1)
+{
+    return cols[var1];
+} // get the coefficient of a variable in the objective function
+
+void IlogMIP::objCoeff(int var1, int i)
+{
+    cols[var1] = i;
+    obj->setLinearCoef((*var)[var1], i);
+} // set the coefficient of a variable in the objective function
+
+int IlogMIP::solve()
+{
+
+    unsigned t0 = clock();
+    cplex->solve();
+    called += clock() - t0;
+    if (cplex->getStatus() != IloAlgorithm::Optimal) {
+        std::cout << "Solution status = " << cplex->getStatus() << std::endl;
+        cout << "IlogMIP solver error." << endl;
+        cout << *con << endl;
+        cout << *obj << endl;
+        cout << *sols << endl;
+        cout << "cost = " << objValue << endl;
+        exit(0);
+    }
+
+    if (cplex->getObjValue() - floor(cplex->getObjValue()) < 0.000001) {
+        objValue = floor(cplex->getObjValue());
+    } else {
+        objValue = ceil(cplex->getObjValue());
+    }
+
+    if (objValue < 0) {
+        objValue = 0;
+    }
+
+    cplex->getValues(*sols, *var);
+
+    return objValue;
+} // solve the current linear program for the minimal and store the values of the variables in the solution
+
+int IlogMIP::sol(int varindex, int value)
+{
+    return sol(mapvar[varindex][value]);
+} // check if the current solution is using this value
+
+void IlogMIP::removeValue(int varindex, int value)
+{
+    colUpperBound(mapvar[varindex][value], 0);
+} // remove the value from the domain of the variable
+
+int IlogMIP::augment(int varindex, int value)
+{
+    if (sol(varindex, value) == 1) {
+        return solValue();
+    } else {
+        return augment(mapvar[varindex][value]);
+    }
+} // return the minimum cost when this value is used
+
+int IlogMIP::coeff(int varindex, int value)
+{
+    return objCoeff(mapvar[varindex][value]);
+} // return the cost projected on this value
+
+void IlogMIP::increaseCoeff(int varindex, int value, int newCoeff)
+{
+    int var1 = mapvar[varindex][value];
+    cols[var1] += newCoeff;
+    obj->setLinearCoef((*var)[var1], cols[var1]);
+} // increase the cost projected on this value
+
+void IlogMIP::backup()
+{
+    *buObjExpr = obj->getExpr();
+} // backup the current solution (used before extensions)
+
+int IlogMIP::restore()
+{
+    obj->setExpr(*buObjExpr);
+    return solve();
+} // restore the solution to the saved one
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2mipsolver.hpp b/code/include/tb2/globals/tb2mipsolver.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..b1ce34989578b09f673179461d41c8751dcc9834
--- /dev/null
+++ b/code/include/tb2/globals/tb2mipsolver.hpp
@@ -0,0 +1,298 @@
+/** \file tb2mipsolver.hpp
+ *  \brief Wrapper interface for MIP solver CPLEX
+ */
+
+#ifndef TB2MIPSOLVER_HPP_
+#define TB2MIPSOLVER_HPP_
+
+#include "core/tb2types.hpp"
+
+class MIP { //Wrapper Interface for MIP solver
+
+private:
+    MIP* solver;
+
+public:
+    MIP();
+
+    virtual ~MIP();
+
+    virtual unsigned called_time()
+    {
+        if (solver)
+            return solver->called_time();
+        return 0;
+    }
+
+    virtual void clear()
+    {
+        if (solver)
+            solver->clear();
+    }
+
+    virtual void end()
+    {
+        if (solver)
+            solver->end();
+    }
+
+    virtual void addRows(int n)
+    {
+        if (solver)
+            solver->addRows(n);
+    }
+
+    virtual void addInt(int n)
+    {
+        if (solver)
+            solver->addInt(n);
+    }
+
+    virtual void addBool(int n)
+    {
+        if (solver)
+            solver->addBool(n);
+    }
+
+    virtual void addCols(int n)
+    {
+        if (solver)
+            solver->addCols(n);
+    }
+
+    virtual void rowBound(int n, int upper, int lower)
+    {
+        if (solver)
+            solver->rowBound(n, upper, lower);
+    }
+
+    virtual void rowLowerBound(int n, int lower)
+    {
+        if (solver)
+            solver->rowLowerBound(n, lower);
+    }
+
+    virtual void rowUpperBound(int n, int upper)
+    {
+        if (solver)
+            solver->rowUpperBound(n, upper);
+    }
+
+    virtual void rowCoeff(int n, int count, int indexes[], double values[])
+    {
+        if (solver)
+            solver->rowCoeff(n, count, indexes, values);
+    }
+
+    virtual int solValue()
+    {
+        if (solver)
+            return solver->solValue();
+        return 0;
+    }
+
+    virtual int sol(int var1)
+    {
+        if (solver)
+            return solver->sol(var1);
+        return 0;
+    }
+
+    virtual int colUpperBound(int var1)
+    {
+        if (solver)
+            return solver->colUpperBound(var1);
+        return 0;
+    }
+
+    virtual void colUpperBound(int var1, int i)
+    {
+        if (solver)
+            return solver->colUpperBound(var1, i);
+    }
+
+    virtual int augment(int var1)
+    {
+        if (solver)
+            return solver->augment(var1);
+        return 0;
+    }
+
+    virtual int objCoeff(int var1)
+    { //Get the coefficient of the variable from the MIP
+        if (solver)
+            return solver->objCoeff(var1);
+        return 0;
+    }
+
+    virtual void objCoeff(int var1, int i)
+    { // Set the coefficient of the variable
+        if (solver)
+            solver->objCoeff(var1, i);
+    }
+
+    virtual int solve()
+    { //return the optimal value from the MIP
+        if (solver)
+            solver->solve();
+        return 0;
+    }
+
+    virtual int sol(int varindex, int value)
+    {
+        if (solver)
+            solver->sol(varindex, value);
+        return 0;
+    }
+
+    virtual void removeValue(int varindex, int value)
+    {
+        if (solver)
+            solver->removeValue(varindex, value);
+    }
+
+    virtual int augment(int varindex, int value)
+    {
+        if (solver)
+            return solver->augment(varindex, value);
+        return 0;
+    }
+    virtual int coeff(int varindex, int value)
+    {
+        if (solver)
+            return solver->coeff(varindex, value);
+        return 0;
+    }
+
+    virtual void increaseCoeff(int varindex, int value, int newCoeff)
+    {
+        if (solver)
+            return solver->increaseCoeff(varindex, value, newCoeff);
+    }
+
+    virtual void getDomain(int varindex, vector<int>& domain)
+    {
+        if (solver)
+            return solver->getDomain(varindex, domain);
+    }
+
+    virtual void backup()
+    {
+        if (solver)
+            solver->backup();
+    }
+
+    virtual int restore()
+    {
+        if (solver)
+            return solver->restore();
+        return 0;
+    }
+};
+
+#endif /*TB2MIPSOLVER_HPP_*/
+
+#ifdef ILOGCPLEX
+#ifndef TB2ILOGMIPSOLVER_HPP_
+#define TB2ILOGMIPSOLVER_HPP_
+
+#include "tb2types.hpp"
+#include <ilcplex/ilocplex.h>
+
+class IlogMIP : public MIP {
+private:
+    IloEnv env;
+    IloModel* model;
+    IloCplex* cplex;
+    IloNumVarArray* var;
+    IloObjective* obj;
+    IloNumExprArg* buObjExpr;
+    IloRangeArray* con;
+    IloNumArray* sols;
+    vector<int> cols;
+    int rowCount;
+    int colCount;
+    int objValue;
+    unsigned called;
+
+public:
+    map<Value, int>* mapvar;
+
+    IlogMIP();
+
+    virtual ~IlogMIP()
+    {
+        env.end();
+    }
+
+    unsigned called_time()
+    {
+        return called;
+    }
+
+    void clear();
+
+    void end();
+
+    void addRows(int n);
+
+    void addInt(int n);
+
+    void addBool(int n);
+
+    void addCols(int n);
+
+    void rowBound(int n, int upper, int lower);
+
+    void rowLowerBound(int n, int lower);
+
+    void rowUpperBound(int n, int upper);
+
+    void rowCoeff(int n, int count, int indexes[], double values[]);
+
+    int solValue();
+
+    int sol(int var1);
+
+    int colUpperBound(int var1);
+
+    void colUpperBound(int var1, int i);
+
+    int augment(int var1);
+
+    int objCoeff(int var1);
+
+    void objCoeff(int var1, int i);
+
+    int solve();
+
+    virtual int sol(int varindex, int value); // if the current solution using this value
+    virtual void removeValue(int varindex, int value); // remove the value from the domain of the structure
+    virtual int augment(int varindex, int value); // return the minimum cost when this value is used
+    virtual int coeff(int varindex, int value); // return the projected cost on this value
+    virtual void increaseCoeff(int varindex, int value, int newCoeff); // increase the projected cost on this value
+
+    virtual void getDomain(int varindex, vector<int>& domain)
+    {
+        domain.clear();
+        for (map<Value, int>::iterator v = mapvar[varindex].begin(); v != mapvar[varindex].end(); v++) {
+            if (colUpperBound(v->second) == 1) {
+                domain.push_back(v->first);
+            }
+        }
+    } // return the corresponding domain in the linear program of a variable in the WCSP
+
+    virtual void backup();
+    virtual int restore();
+};
+
+#endif /*TB2ILOGMIPSOLVER_HPP_*/
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2regulardpconstr.cpp b/code/include/tb2/globals/tb2regulardpconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..47b65d11e9f0bd5028f81a62d9e64b71b584d462
--- /dev/null
+++ b/code/include/tb2/globals/tb2regulardpconstr.cpp
@@ -0,0 +1,241 @@
+#include "tb2regulardpconstr.hpp"
+
+RegularDPConstraint::RegularDPConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity)
+    : DPGlobalConstraint(wcsp, scope, arity)
+    , top(MIN_COST)
+{
+}
+
+RegularDPConstraint::~RegularDPConstraint(void)
+{
+    deleteTable(f);
+    deleteTable(u);
+    deleteTable(invf);
+    deleteTable(curf);
+}
+
+void RegularDPConstraint::read(istream& file, bool mult)
+{
+    string str;
+    file >> str >> def;
+    if (mult)
+        def *= ToulBar2::costMultiplier;
+
+    // input the automaton
+    int nstate;
+    file >> nstate;
+    dfa.setNumStates(nstate);
+    int nstart;
+    file >> nstart;
+    for (int i = 0; i < nstart; i++) {
+        int t;
+        file >> t;
+        dfa.init.push_back(t);
+    }
+    int nfinal;
+    file >> nfinal;
+    for (int i = 0; i < nfinal; i++) {
+        int t;
+        file >> t;
+        dfa.final.push_back(t);
+    }
+    int ntransition;
+    file >> ntransition;
+    for (int i = 0; i < ntransition; i++) {
+        int start, end, symbol;
+        file >> start;
+        file >> symbol;
+        file >> end;
+        dfa.addTransition(start, symbol, end, 0);
+    }
+}
+
+void RegularDPConstraint::initMemoization()
+{
+    dfa.finalize();
+
+    resizeTable(f, arity() + 1, dfa.size());
+    resizeTable(curf, arity() + 1, dfa.size());
+    resizeTable(invf, arity() + 1, dfa.size());
+    resizeTable(u, arity() + 1, dfa.symbol.size());
+
+    top = max(wcsp->getUb(), MAX_COST);
+}
+
+Cost RegularDPConstraint::minCostOriginal()
+{
+    int n = arity();
+    for (int i = 1; i <= n; i++) {
+        for (unsigned int j = 0; j < dfa.symbol.size(); j++) {
+            u[i][j].val = top;
+            EnumeratedVariable* x = scope[i - 1];
+            for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+                if (u[i][j].val > unary(dfa.symbol[j], i - 1, *it))
+                    u[i][j].val = unary(dfa.symbol[j], i - 1, *it);
+            }
+        }
+    }
+
+    recomputeTable(curf);
+
+    Cost minCost = top;
+    for (vector<int>::iterator s = dfa.final.begin(); s != dfa.final.end(); s++)
+        if (minCost > curf[n][*s].val)
+            minCost = curf[n][*s].val;
+
+    return minCost;
+}
+
+Cost RegularDPConstraint::minCostOriginal(int var, Value val, bool changed)
+{
+    return minCost(var, val, changed).first;
+}
+
+Cost RegularDPConstraint::eval(const Tuple& s)
+{
+    int n = arity();
+    for (int i = 1; i <= n; i++) {
+        for (unsigned int j = 0; j < dfa.symbol.size(); j++) {
+            u[i][j].val = unary(dfa.symbol[j], i - 1, s[i - 1]);
+        }
+    }
+
+    recomputeTable(curf);
+
+    Cost minCost = top;
+    for (vector<int>::iterator ss = dfa.final.begin(); ss != dfa.final.end(); ss++)
+        if (minCost > curf[n][*ss].val)
+            minCost = curf[n][*ss].val;
+
+    return minCost - projectedCost;
+}
+
+void RegularDPConstraint::recompute()
+{
+    int n = arity();
+    for (int i = 1; i <= n; i++) {
+        for (unsigned int j = 0; j < dfa.symbol.size(); j++) {
+            u[i][j].val = top;
+            u[i][j].source = -1;
+            EnumeratedVariable* x = scope[i - 1];
+            for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+                if (u[i][j].val > unary(dfa.symbol[j], i - 1, *it)) {
+                    u[i][j].val = unary(dfa.symbol[j], i - 1, *it);
+                    u[i][j].source = *it;
+                }
+            }
+        }
+    }
+    recomputeTable(f, invf);
+}
+
+DPGlobalConstraint::Result RegularDPConstraint::minCost(int var, Value val, bool changed)
+{
+
+    if (changed)
+        recompute();
+
+    Cost minCost = wcsp->getUb();
+    for (int qk = 0; qk < dfa.size(); qk++) {
+        for (vector<pair<int, int>>::iterator qj = dfa.transition[qk].begin(); qj != dfa.transition[qk].end(); qj++) {
+            Cost curCost = f[var][qk].val + unary(qj->first, var, val) + invf[var + 1][qj->second].val;
+            if (minCost > curCost)
+                minCost = curCost;
+        }
+    }
+
+    return DPGlobalConstraint::Result(minCost, NULL);
+}
+
+void RegularDPConstraint::recomputeTable(DPTableCell** table, DPTableCell** invTable, int startRow)
+{
+    int n = arity();
+
+    if (startRow == 0) {
+        for (int j = 0; j < dfa.size(); j++) {
+            table[0][j].val = top;
+            table[0][j].source = make_pair(-1, -1);
+        }
+        for (vector<int>::iterator it = dfa.init.begin(); it != dfa.init.end(); it++) {
+            table[0][*it].val = 0;
+            table[0][*it].source = make_pair(-1, *it);
+        }
+        startRow++;
+    }
+
+    for (int i = startRow; i <= n; i++) {
+        for (int j = 0; j < dfa.size(); j++) {
+            table[i][j].val = top;
+            table[i][j].source = make_pair(-1, -1);
+            for (vector<pair<int, int>>::iterator qk = dfa.invTransition[j].begin(); qk != dfa.invTransition[j].end(); qk++) {
+                Cost curCost = table[i - 1][qk->second].val + u[i][dfa.symbolIndex[qk->first]].val;
+                if (table[i][j].val > curCost) {
+                    table[i][j].val = curCost;
+                    table[i][j].source = make_pair(u[i][dfa.symbolIndex[qk->first]].source, qk->second);
+                }
+            }
+        }
+    }
+
+    if (invTable != NULL) {
+        for (int j = 0; j < dfa.size(); j++)
+            invTable[n][j].val = top;
+        for (vector<int>::iterator it = dfa.final.begin(); it != dfa.final.end(); it++)
+            invTable[n][*it].val = MIN_COST;
+
+        for (int i = n - 1; i >= 0; i--) {
+            for (int j = 0; j < dfa.size(); j++) {
+                invTable[i][j].val = top;
+                for (vector<pair<int, int>>::iterator qj = dfa.transition[j].begin(); qj != dfa.transition[j].end(); qj++) {
+                    Cost curCost = invTable[i + 1][qj->second].val + u[i + 1][dfa.symbolIndex[qj->first]].val;
+                    if (invTable[i][j].val > curCost) {
+                        invTable[i][j].val = curCost;
+                        invTable[i][j].source = make_pair(u[i + 1][dfa.symbolIndex[qj->first]].source, qj->second);
+                    }
+                }
+            }
+        }
+    }
+}
+
+Cost RegularDPConstraint::unary(int ch, int var, Value v)
+{
+    Cost ucost = (v == ch) ? 0 : def;
+    EnumeratedVariable* x = scope[var];
+    return ucost - deltaCost[var][x->toIndex(v)];
+}
+
+void RegularDPConstraint::dump(ostream& os, bool original)
+{
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    os << " -1 sregulardp var " << def << endl;
+    dfa.dump(os, original);
+}
+
+void RegularDPConstraint::print(ostream& os)
+{
+    os << "sregulardp(";
+    for (int i = 0; i < arity_; i++) {
+        os << scope[i]->wcspIndex;
+        if (i < arity_ - 1)
+            os << ",";
+    }
+    os << ")[" << def << "]";
+    dfa.dump(os, true);
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2regulardpconstr.hpp b/code/include/tb2/globals/tb2regulardpconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..0fe49d6c22f9bc950a4c52a5065e7213b10a0ee6
--- /dev/null
+++ b/code/include/tb2/globals/tb2regulardpconstr.hpp
@@ -0,0 +1,179 @@
+/** \file tb2regulardpconstr.hpp
+ *  \brief Dynamic programming based global cost function : sregular_dp
+ */
+
+#ifndef TB2REGULARDPCONSTR_HPP_
+#define TB2REGULARDPCONSTR_HPP_
+
+#include "tb2dpglobalconstr.hpp"
+
+class RegularDPConstraint : public DPGlobalConstraint {
+private:
+    struct DFA : public WeightedAutomaton {
+        vector<int> init;
+        vector<int> final;
+        vector<int> symbol;
+        map<int, int> symbolIndex;
+        vector<pair<int, int>>* transition;
+        vector<pair<int, int>>* invTransition;
+        int nstate;
+
+        DFA()
+        {
+        }
+
+        ~DFA()
+        {
+            delete[] transition;
+            delete[] invTransition;
+        }
+
+        void setNumStates(int size)
+        {
+            transition = new vector<pair<int, int>>[size];
+            invTransition = new vector<pair<int, int>>[size];
+            nstate = size;
+        }
+
+        void addInitialState(int begin)
+        {
+            init.push_back(begin);
+        }
+
+        void addFinalState(int end)
+        {
+            final.push_back(end);
+        }
+
+        int size()
+        {
+            return nstate;
+        }
+
+        void addTransition(int start, int ch, int end, Cost weight)
+        {
+            transition[start].push_back(make_pair(ch, end));
+            invTransition[end].push_back(make_pair(ch, start));
+            symbol.push_back(ch);
+        }
+
+        void finalize()
+        {
+            sort(symbol.begin(), symbol.end());
+            symbol.erase(unique(symbol.begin(), symbol.end()), symbol.end());
+            for (vector<int>::iterator i = symbol.begin(); i != symbol.end(); i++) {
+                symbolIndex[*i] = i - symbol.begin();
+            }
+        }
+
+        void dump(ostream& os, bool original)
+        {
+            assert(original); //TODO: case original is false
+            os << nstate << endl;
+            os << init.size();
+            for (vector<int>::iterator i = init.begin(); i != init.end(); i++)
+                os << " " << *i;
+            os << endl;
+            os << final.size();
+            for (vector<int>::iterator i = final.begin(); i != final.end(); i++)
+                os << " " << *i;
+            os << endl;
+            int nbtrans = 0;
+            for (int s = 0; s < nstate; s++)
+                nbtrans += transition[s].size();
+            os << nbtrans << endl;
+            for (int s = 0; s < nstate; s++) {
+                for (vector<pair<int, int>>::iterator i = transition[s].begin(); i != transition[s].end(); i++)
+                    os << s << " " << i->first << " " << i->second << endl;
+            }
+        }
+
+        void print()
+        {
+            cout << "start state : ";
+            for (vector<int>::iterator i = init.begin(); i != init.end(); i++)
+                cout << *i << " ";
+            cout << endl;
+            for (int s = 0; s < nstate; s++) {
+                for (vector<pair<int, int>>::iterator i = transition[s].begin(); i != transition[s].end(); i++)
+                    cout << s << " -" << i->first << "-> " << i->second << endl;
+            }
+            cout << "end state : ";
+            for (vector<int>::iterator i = final.begin(); i != final.end(); i++)
+                cout << *i << " ";
+            cout << endl;
+        }
+    };
+
+    DFA dfa;
+
+    template <class Source>
+    struct TableCell {
+        Cost val;
+        Source source;
+    };
+
+    typedef TableCell<pair<int, Value>> DPTableCell;
+    DPTableCell** f;
+    DPTableCell** curf;
+    DPTableCell** invf;
+
+    typedef TableCell<Value> UnaryTableCell;
+    UnaryTableCell** u;
+
+    Cost top;
+
+    template <class T>
+    void resizeTable(T**& table, int width, int heigth)
+    {
+        table = new T*[width];
+        for (int i = 0; i <= arity(); i++) {
+            table[i] = new T[heigth];
+        }
+    }
+
+    template <class T>
+    void deleteTable(T**& table)
+    {
+        for (int i = 0; i <= arity(); i++)
+            delete[] table[i];
+        delete[] table;
+        table = NULL;
+    }
+
+    void recomputeTable(DPTableCell** table, DPTableCell** invTable = NULL, int startRow = 0);
+    void recompute();
+
+    Cost unary(int ch, int var, Value v);
+
+protected:
+    Cost minCostOriginal();
+    Cost minCostOriginal(int var, Value val, bool changed);
+    Result minCost(int var, Value val, bool changed);
+
+    void initMemoization();
+
+public:
+    RegularDPConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity);
+    virtual ~RegularDPConstraint();
+
+    Cost eval(const Tuple& s);
+    void read(istream& file, bool mult = true);
+    WeightedAutomaton* getWeightedAutomaton() { return &dfa; }
+    string getName()
+    {
+        return "sregulardp";
+    }
+
+    void dump(ostream& os, bool original);
+    void print(ostream& os);
+};
+
+#endif /* TB2REGULARDPCONSTR_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2regularflowconstr.cpp b/code/include/tb2/globals/tb2regularflowconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2f7e968e2ef12bf3f9941ef7e121afb9d744ee8f
--- /dev/null
+++ b/code/include/tb2/globals/tb2regularflowconstr.cpp
@@ -0,0 +1,487 @@
+#include "tb2regularflowconstr.hpp"
+#include "core/tb2wcsp.hpp"
+
+#include <functional>
+
+RegularFlowConstraint::RegularFlowConstraint(WCSP* wcsp, EnumeratedVariable** scope_in,
+    int arity_in)
+    : FlowBasedGlobalConstraint(wcsp, scope_in, arity_in)
+    , subdef(0)
+    , insdef(0)
+    , deldef(0)
+    , epsilonChar(0)
+{
+
+    tempdomain.resize(arity_);
+    predomain.resize(arity_);
+    curdomain.resize(arity_);
+
+    mapedge.resize(arity_);
+    for (int i = 0; i < arity_; i++)
+        mapedge[i].resize(((EnumeratedVariable*)getVar(i))->getDomainInitSize());
+
+    modeEnum["var"] = RegularFlowConstraint::VAR;
+    modeEnum["edit"] = RegularFlowConstraint::EDIT;
+}
+
+void RegularFlowConstraint::read(istream& file, bool mult)
+{
+
+    string str;
+    file >> str >> def;
+    if (mult)
+        def *= ToulBar2::costMultiplier;
+    /*if (str == "var") {
+        subdef = def;
+        insdef = deldef = 0;
+    } else if (str == "edit") {
+        subdef = insdef = deldef = def;
+    }*/
+    setSemantics(str);
+    // input the automaton
+    int nstate;
+    file >> nstate;
+    dfa.setNumStates(nstate);
+    int nstart;
+    file >> nstart;
+    for (int i = 0; i < nstart; i++) {
+        int t;
+        file >> t;
+        dfa.init.push_back(t);
+    }
+    int nfinal;
+    file >> nfinal;
+    for (int i = 0; i < nfinal; i++) {
+        int t;
+        file >> t;
+        dfa.final.push_back(t);
+    }
+    int ntransition;
+    file >> ntransition;
+    for (int i = 0; i < ntransition; i++) {
+        int start, end, symbol;
+        file >> start;
+        file >> symbol;
+        file >> end;
+        dfa.symbol.insert(symbol);
+        dfa.addTransition(start, symbol, end, 0);
+    }
+}
+
+void RegularFlowConstraint::organizeConfig()
+{
+
+    if (mode == RegularFlowConstraint::VAR) {
+        subdef = def;
+        insdef = deldef = 0;
+    } else if (mode == RegularFlowConstraint::EDIT) {
+        subdef = insdef = deldef = def;
+    }
+
+    //int nstate = dfa.size();
+    //graph.setSize(nstate * (arity_ + 1) + 2);
+
+    if (insdef > 0) {
+        /*Graph g;
+        g.setSize(dfa.size());
+        for (int start = 0; start < dfa.size(); start++) {
+            for (int end = 0; end < dfa.size(); end++) {
+                set<int> sym = dfa.getSymbolNeed(start, end);
+                if (sym.size() != 0 && (start != end)) g.addEdge(start, end, insdef);
+            }
+        }
+        table.resize(dfa.size());
+        for (int s = 0; s < dfa.size(); s++) {
+            g.shortest_path(s, table[s]);
+        } */
+        vector<vector<Cost>> weightTable;
+        weightTable.resize(dfa.size());
+        for (int start = 0; start < dfa.size(); start++) {
+            weightTable[start].resize(dfa.size());
+            fill_n(weightTable[start].begin(), dfa.size(), MAX_COST);
+            for (int end = 0; end < dfa.size(); end++) {
+                if (start != end) {
+                    set<int> sym = dfa.getSymbolNeed(start, end);
+                    if (!sym.empty())
+                        weightTable[start][end] = insdef;
+                }
+            }
+        }
+
+        min_priority_queue<pair<int, Cost>> q;
+
+        table.resize(dfa.size());
+        //g.shortest_path(s, table[s]);
+        for (int s = 0; s < dfa.size(); s++) {
+            vector<Cost>& d = table[s];
+            d.resize(dfa.size());
+            fill_n(d.begin(), dfa.size(), MAX_COST);
+            q.push(make_pair(0, s));
+            while (!q.empty()) {
+                pair<int, Cost> ele = q.top();
+                q.pop();
+                for (int i = 0; i < dfa.size(); i++) {
+                    Cost tmp = ele.first + d[s];
+                    if (d[i] >= tmp) {
+                        d[i] = tmp;
+                        q.push(make_pair(d[i], i));
+                    }
+                }
+            }
+        }
+    }
+
+    buildWeightedDFATable();
+}
+
+void RegularFlowConstraint::buildWeightedDFATable()
+{
+
+    int nstate = dfa.size();
+
+    set<Value> sigma;
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+            sigma.insert(*v);
+        }
+    }
+
+    epsilonChar = (*(dfa.symbol.begin())) - 1;
+    costTb.resize(nstate);
+
+    // [start][char][end]
+    for (int i = 0; i < nstate; i++) {
+        for (vector<pair<int, int>>::iterator it = dfa.transition[i].begin();
+             it != dfa.transition[i].end(); it++) {
+            for (set<int>::iterator jt = sigma.begin();
+                 jt != sigma.end(); jt++) {
+                if (costTb[i].find(*jt) != costTb[i].end())
+                    costTb[i][*jt].insert(make_pair((int)it->second, (Cost)subdef));
+                else {
+                    map<int, Cost> inner;
+                    inner.insert(make_pair((int)it->second, (Cost)subdef));
+                    costTb[i].insert(make_pair(*jt, inner));
+                }
+            }
+            costTb[i][it->first][it->second] = (Cost)0;
+        }
+    }
+
+    if (insdef > 0) {
+        for (int i = 0; i < nstate; i++) {
+            for (vector<pair<int, int>>::iterator it = dfa.transition[i].begin();
+                 it != dfa.transition[i].end(); it++) {
+                costTb[i][epsilonChar][it->second] = insdef;
+            }
+            for (set<int>::iterator jt = sigma.begin();
+                 jt != sigma.end(); jt++) {
+                map<int, Cost>::iterator pos = costTb[i][*jt].find(i);
+                if (pos == costTb[i][*jt].end()) {
+                    costTb[i][*jt][i] = deldef;
+                } else if (pos->second > deldef) {
+                    pos->second = deldef;
+                }
+            }
+        }
+    }
+}
+
+Cost RegularFlowConstraint::evalOriginal(const Tuple& s)
+{
+
+    typedef pair<Cost, pair<int, int>> Element;
+    //priority_queue<Element, vector<Element>, greater<Element> > minqueue;
+    min_priority_queue<Element> minqueue;
+    for (vector<int>::iterator i = dfa.init.begin(); i != dfa.init.end(); i++) {
+        minqueue.push(make_pair(0, make_pair(0, *i)));
+    }
+
+    Cost myResult = wcsp->getUb();
+    while (!minqueue.empty()) {
+        Element ele = minqueue.top();
+        minqueue.pop();
+        Cost weight = ele.first;
+        int curIndex = ele.second.first;
+        int curState = ele.second.second;
+
+        if (curIndex == arity_) {
+            if (find(dfa.final.begin(), dfa.final.end(), curState) != dfa.final.end()) {
+                myResult = weight;
+                break;
+            }
+        } else {
+            int curValue = s[curIndex];
+            for (map<int, Cost>::iterator i = costTb[curState][curValue].begin();
+                 i != costTb[curState][curValue].end(); i++) {
+                Cost nextWeight = weight + i->second;
+                int nextState = i->first;
+                int nextIndex = curIndex + 1;
+                minqueue.push(make_pair(nextWeight, make_pair(nextIndex, nextState)));
+            }
+
+            if (insdef > 0) {
+                for (map<int, Cost>::iterator i = costTb[curState][epsilonChar].begin();
+                     i != costTb[curState][epsilonChar].end(); i++) {
+                    Cost nextWeight = weight + i->second;
+                    int nextState = i->first;
+                    int nextIndex = curIndex;
+                    minqueue.push(make_pair(nextWeight, make_pair(nextIndex, nextState)));
+                }
+            }
+        }
+    }
+
+    return myResult;
+}
+
+size_t RegularFlowConstraint::GetGraphAllocatedSize()
+{
+    return dfa.size() * (arity_ + 1) + 2;
+}
+
+void RegularFlowConstraint::buildGraph(Graph& g)
+{
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        tempdomain[i].clear();
+        predomain[i].clear();
+        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+            tempdomain[i].insert(*v);
+            predomain[i].insert(*v);
+        }
+    }
+    buildGraphBasic(g, true);
+
+    /* g.print();
+
+    exit(0);*/
+}
+
+void RegularFlowConstraint::buildGraphBasic(Graph& g, bool needRebuildIndex)
+{
+
+    //if (g.size() == 0) g.setSize(dfa.size()*(arity_ + 1) + 2);
+
+    //g.clearEdge();
+    for (vector<int>::iterator i = dfa.init.begin(); i != dfa.init.end(); i++) {
+        g.addEdge(0, (*i) + 1, 0, 1, NO_TAG, false);
+    }
+    if (needRebuildIndex) {
+        for (int i = 0; i < arity_; i++) {
+            for (unsigned int j = 0; j < mapedge[i].size(); j++)
+                mapedge[i][j].clear();
+        }
+    }
+
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (int start = 0; start < dfa.size(); start++) {
+            for (int end = 0; end < dfa.size(); end++) {
+                set<int> sym = dfa.getSymbolNeed(start, end);
+                if (sym.size() != 0) {
+                    for (set<int>::iterator v = tempdomain[i].begin(); v != tempdomain[i].end(); v++) {
+                        Cost w = -deltaCost[i][x->toIndex(*v)];
+                        if (sym.find(*v) == sym.end())
+                            w += subdef;
+                        g.addEdge(i * dfa.size() + start + 1, (i + 1) * dfa.size() + end + 1, w, 1, *v, false);
+                        if (needRebuildIndex)
+                            mapedge[i][x->toIndex(*v)].push_back(make_pair(i * dfa.size() + start + 1, (i + 1) * dfa.size() + end + 1));
+                    }
+                    if (insdef > 0)
+                        g.addEdge(i * dfa.size() + start + 1, i * dfa.size() + end + 1, insdef, 1, INS_TAG, false);
+                }
+            }
+        }
+    }
+
+    if (deldef > 0) {
+        for (int i = 0; i < arity_; i++) {
+            EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+            for (int start = 0; start < dfa.size(); start++) {
+                vector<Cost> weight = g.getWeight(i * dfa.size() + start + 1, (i + 1) * dfa.size() + start + 1);
+                if (weight.empty()) {
+                    for (set<int>::iterator v = tempdomain[i].begin(); v != tempdomain[i].end(); v++) {
+                        Cost w = -deltaCost[i][x->toIndex(*v)];
+                        g.addEdge(i * dfa.size() + start + 1, (i + 1) * dfa.size() + start + 1, deldef + w, 1, *v, false);
+                        if (needRebuildIndex)
+                            mapedge[i][x->toIndex(*v)].push_back(make_pair(i * dfa.size() + start + 1, (i + 1) * dfa.size() + start + 1));
+                    }
+                }
+            }
+        }
+    }
+
+    for (vector<int>::iterator i = dfa.final.begin(); i != dfa.final.end(); i++) {
+        g.addEdge((arity_)*dfa.size() + (*i) + 1, g.size() - 1, 0, 1, NO_TAG, false);
+    }
+}
+
+void RegularFlowConstraint::findProjection(Graph& graph, StoreCost& cost, int varindex, map<Value, Cost>& delta)
+{
+
+    //pair<int, bool> result;
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(varindex);
+
+    computeShortestPath(graph, cost);
+
+    for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+        Cost mincost = INF;
+        vector<pair<int, int>>& edges = mapedge[varindex][x->toIndex(*v)];
+        for (vector<pair<int, int>>::iterator i = edges.begin(); i != edges.end(); i++) {
+            pair<int, int> edge = *i;
+            vector<Cost> weight = graph.getWeight(edge.first, edge.second, *v);
+            if (weight.size() > 1)
+                cout << "multiple edges?\n";
+            if (!weight.empty()) {
+                Cost t = weight[0] + fromSource[edge.first] + toSink[edge.second];
+                if (mincost > t)
+                    mincost = t;
+            }
+        }
+        if (mincost == INF) {
+            delta[*v] = wcsp->getUb();
+        } else {
+            delta[*v] = mincost;
+        }
+    }
+}
+
+void RegularFlowConstraint::checkRemoved(Graph& graph, StoreCost& cost, vector<int>& rmv)
+{
+
+    //for (int varindex = 0; varindex < arity_; varindex++) {
+    for (vector<int>::iterator i = rmv.begin(); i != rmv.end(); i++) {
+        int varindex = *i;
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(varindex);
+        for (unsigned int valIndex = 0; valIndex < mapedge[varindex].size(); valIndex++) {
+            if (x->cannotbe(x->toValue(valIndex))) {
+                vector<pair<int, int>>& edges = mapedge[varindex][valIndex];
+                for (vector<pair<int, int>>::iterator i = edges.begin(); i != edges.end(); i++) {
+                    pair<int, int> edge = *i;
+                    graph.removeEdge(edge.first, edge.second, x->toValue(valIndex));
+                }
+            }
+        }
+    }
+}
+
+void RegularFlowConstraint::augmentStructure(Graph& g, StoreCost& cost, int varindex, map<Value, Cost>& delta)
+{
+
+    EnumeratedVariable* x = (EnumeratedVariable*)getVar(varindex);
+    for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+        vector<pair<int, int>>& edges = mapedge[varindex][x->toIndex(*v)];
+        for (vector<pair<int, int>>::iterator e = edges.begin(); e != edges.end(); e++) {
+            vector<Cost> weight = g.getWeight(e->first, e->second, *v);
+            if (weight.size() != 0) {
+                g.increaseCost(e->first, e->second, -delta[*v], *v);
+            }
+        }
+    }
+}
+
+void RegularFlowConstraint::computeShortestPath(Graph& g, StoreCost& cost)
+{
+
+    fromSource.resize(g.size());
+    toSink.resize(g.size());
+    for (unsigned int i = 0; i < fromSource.size(); i++)
+        fromSource[i] = toSink[i] = INF;
+    for (vector<int>::iterator i = dfa.init.begin(); i != dfa.init.end(); i++) {
+        fromSource[(*i) + 1] = MIN_COST;
+    }
+    fromSource[0] = MIN_COST;
+    for (int i = 0; i < arity_ + 1; i++) {
+        bool change = true;
+        while (change) {
+            change = false;
+            for (int j = 0; j < dfa.size(); j++) {
+                int s = i * dfa.size() + j + 1;
+                for (Graph::node_iterator node = g.node_begin(s); node != g.node_end(s); ++node) {
+                    for (Graph::edge_iterator v = g.begin(s, *node); v != g.end(s, *node); ++v) {
+                        if (fromSource[v.adjNode()] > fromSource[s] + v.weight()) {
+                            fromSource[v.adjNode()] = fromSource[s] + v.weight();
+                            change = true;
+                        }
+                    }
+                }
+            }
+        }
+    }
+    toSink[g.size() - 1] = MIN_COST;
+    for (vector<int>::iterator i = dfa.final.begin(); i != dfa.final.end(); i++) {
+        toSink[dfa.size() * (arity_) + (*i) + 1] = MIN_COST;
+    }
+    if (insdef > 0) {
+        for (int j = 0; j < dfa.size(); j++) {
+            int s = (arity_)*dfa.size() + j + 1;
+            for (int k = 0; k < dfa.size(); k++) {
+                int e = (arity_)*dfa.size() + k + 1;
+                if (toSink[e] > toSink[s] + table[j][k]) {
+                    toSink[e] = toSink[s] + table[j][k];
+                }
+            }
+        }
+    }
+    for (int i = arity_ - 1; i >= 0; i--) {
+        bool change = true;
+        while (change) {
+            change = false;
+            for (int j = 0; j < dfa.size(); j++) {
+                int s = i * dfa.size() + j + 1;
+                for (Graph::node_iterator node = g.node_begin(s); node != g.node_end(s); ++node) {
+                    for (Graph::edge_iterator v = g.begin(s, *node); v != g.end(s, *node); ++v) {
+                        if (toSink[s] > toSink[v.adjNode()] + v.weight()) {
+                            toSink[s] = toSink[v.adjNode()] + v.weight();
+                            change = true;
+                        }
+                    }
+                }
+            }
+        }
+    }
+    //cost = graph.augment(0, graph.size() - 1, false).first;
+}
+
+void RegularFlowConstraint::dump(ostream& os, bool original)
+{
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    os << " -1 sregular " << ((insdef == 0 && deldef == 0) ? "var" : "edit") << " " << def << endl;
+    dfa.dump(os, original);
+}
+
+string RegularFlowConstraint::getName()
+{
+    ostringstream name;
+    name << "sregular_" << to_string(subdef) << "_" << to_string(insdef) << "_" << to_string(deldef) << "\n{";
+    dfa.dump(name, true);
+    name << "\n}";
+    return name.str();
+}
+
+//void RegularFlowConstraint::print(ostream& os) {
+//    os << "sregular(";
+//    for (int i = 0; i < arity_; i++) {
+//        os << scope[i]->wcspIndex;
+//        if (i < arity_ - 1) os << ",";
+//    }
+//    os << ")[" << subdef << "," << insdef << "," << deldef << "]";
+//    dfa.dump(os, true);
+//}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2regularflowconstr.hpp b/code/include/tb2/globals/tb2regularflowconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..a235251fc91a9ba75ee70efdb503095e3c82363c
--- /dev/null
+++ b/code/include/tb2/globals/tb2regularflowconstr.hpp
@@ -0,0 +1,192 @@
+/** \file tb2regularflowconstr.hpp
+ *  \brief Flow based global cost function : sregular_flow
+ */
+
+#ifndef TB2REGULARFLOWCONSTR_HPP_
+#define TB2REGULARFLOWCONSTR_HPP_
+
+#include "tb2flowbasedconstr.hpp"
+
+class RegularFlowConstraint : public FlowBasedGlobalConstraint {
+private:
+    struct DFA : public WeightedAutomaton {
+        vector<int> init;
+        vector<int> final;
+        set<int> symbol;
+        vector<pair<int, int>>* transition;
+        int nstate;
+
+        DFA()
+            : transition(NULL)
+            , nstate(0)
+        {
+        }
+
+        ~DFA()
+        {
+            delete[] transition;
+        }
+
+        void setNumStates(int size)
+        {
+            transition = new vector<pair<int, int>>[size];
+            nstate = size;
+        }
+
+        void addInitialState(int begin)
+        {
+            init.push_back(begin);
+        }
+
+        void addFinalState(int end)
+        {
+            final.push_back(end);
+        }
+
+        int size()
+        {
+            return nstate;
+        }
+
+        void addTransition(int start, int ch, int end, Cost weight)
+        {
+            transition[start].push_back(make_pair(ch, end));
+        }
+
+        int getNextState(int start, int ch)
+        {
+            int next = -1;
+            for (vector<pair<int, int>>::iterator i = transition[start].begin();
+                 i != transition[start].end(); i++) {
+                if (i->first == ch)
+                    next = i->second;
+            }
+            return next;
+        }
+
+        set<int> getSymbolNeed(int start, int end)
+        {
+            set<int> require;
+            for (vector<pair<int, int>>::iterator i = transition[start].begin();
+                 i != transition[start].end(); i++) {
+                if (i->second == end)
+                    require.insert(i->first);
+            }
+            return require;
+        }
+
+        void dump(ostream& os, bool original)
+        {
+            assert(original); //TODO: case original is false
+            os << nstate << endl;
+            os << init.size();
+            for (vector<int>::iterator i = init.begin(); i != init.end(); i++)
+                os << " " << *i;
+            os << endl;
+            os << final.size();
+            for (vector<int>::iterator i = final.begin(); i != final.end(); i++)
+                os << " " << *i;
+            os << endl;
+            int nbtrans = 0;
+            for (int s = 0; s < nstate; s++)
+                nbtrans += transition[s].size();
+            os << nbtrans << endl;
+            for (int s = 0; s < nstate; s++) {
+                for (vector<pair<int, int>>::iterator i = transition[s].begin(); i != transition[s].end(); i++)
+                    os << s << " " << i->first << " " << i->second << endl;
+            }
+        }
+
+        void print()
+        {
+            cout << "start state : ";
+            for (vector<int>::iterator i = init.begin(); i != init.end(); i++)
+                cout << *i << " ";
+            cout << endl;
+            for (int s = 0; s < nstate; s++) {
+                for (vector<pair<int, int>>::iterator i = transition[s].begin(); i != transition[s].end(); i++)
+                    cout << s << " -" << i->first << "-> " << i->second << endl;
+            }
+            cout << "end state : ";
+            for (vector<int>::iterator i = final.begin(); i != final.end(); i++)
+                cout << *i << " ";
+            cout << endl;
+        }
+    };
+
+    template <class Element>
+    struct min_priority_queue : public priority_queue<Element, vector<Element>, greater<Element>> {
+    };
+
+    static const int EDIT = 1;
+    static const int VAR = 0;
+
+    static const int INS_TAG = -(INT_MAX >> 3);
+
+    Cost subdef, insdef, deldef;
+    DFA dfa;
+    typedef vector<map<int, map<int, Cost>>> CostTable; //[start][char][end]
+    CostTable costTb;
+    int epsilonChar;
+
+    vector<Cost> fromSource;
+    vector<Cost> toSink;
+    vector<vector<Cost>> table;
+    vector<set<int>> tempdomain;
+    vector<set<int>> predomain;
+    vector<set<int>> curdomain;
+    vector<vector<vector<pair<int, int>>>> mapedge;
+
+    pair<int, int> mapto(int varindex, Value val)
+    {
+        return make_pair(0, 0);
+    }
+
+    Cost constructFlow(Graph& graph)
+    {
+        computeShortestPath(graph, cost);
+        return cost;
+    }
+    void checkRemoved(Graph& graph, StoreCost& cost, vector<int>& rmv);
+    void augmentStructure(Graph& graph, StoreCost& cost, int varindex, map<Value, Cost>& delta);
+    void findProjection(Graph& graph, StoreCost& cost, int varindex, map<Value, Cost>& delta);
+    size_t GetGraphAllocatedSize();
+    void buildGraph(Graph& g);
+    void buildGraphBasic(Graph& g, bool needRebuildIndex);
+    void computeShortestPath(Graph& g, StoreCost& cost);
+
+    void buildWeightedDFATable();
+
+    Cost evalOriginal(const Tuple& s);
+
+public:
+    RegularFlowConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in);
+
+    ~RegularFlowConstraint()
+    {
+    }
+
+    string getName();
+
+    //Cost eval(const Tuple& s);
+    void read(istream& file, bool mult = true);
+    WeightedAutomaton* getWeightedAutomaton() { return &dfa; }
+    void organizeConfig();
+
+    virtual Cost getMinCost()
+    {
+        return constructFlow(*graph);
+    }
+
+    void dump(ostream& os, bool original);
+    //    void print(ostream& os);
+};
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2sameconstr.cpp b/code/include/tb2/globals/tb2sameconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..354a2fd860237af5680ac6aa94c8c966352e8431
--- /dev/null
+++ b/code/include/tb2/globals/tb2sameconstr.cpp
@@ -0,0 +1,191 @@
+#include "tb2sameconstr.hpp"
+#include "core/tb2wcsp.hpp"
+
+SameConstraint::SameConstraint(WCSP* wcsp, EnumeratedVariable** scope_in,
+    int arity_in)
+    : FlowBasedGlobalConstraint(wcsp, scope_in, arity_in)
+{
+    buildIndex();
+}
+
+void SameConstraint::buildIndex()
+{
+    vector<Value> D;
+    for (int i = 0; i < arity_; i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(i);
+        for (EnumeratedVariable::iterator iterx = x->begin(); iterx != x->end(); ++iterx) {
+            D.push_back(*iterx);
+        }
+    }
+    sort(D.begin(), D.end());
+    D.erase(unique(D.begin(), D.end()), D.end());
+    for (vector<Value>::iterator i = D.begin(); i != D.end(); i++) {
+        mapval[*i] = arity_ + (int)(i - D.begin()) + 1;
+    }
+    nDistinctDomainValues = D.size();
+    //graph.setSize(arity_+D.size()+2);
+}
+
+pair<int, int> SameConstraint::mapto(int varindex, Value val)
+{
+    if (binary_search(group[0].begin(), group[0].end(), varindex)) {
+        return make_pair(varindex + 1, mapval[val]);
+        //return make_pair(0,0);
+    } else if (binary_search(group[1].begin(), group[1].end(), varindex)) {
+        return make_pair(mapval[val], varindex + 1);
+        //return make_pair(0,0);
+    } else {
+        cout << "no group belong ?" << endl;
+        exit(0);
+    }
+}
+
+void SameConstraint::read(istream& file, bool mult)
+{
+    file >> def;
+    if (mult)
+        def *= ToulBar2::costMultiplier;
+    int size[2];
+    //cout << "def. value = " << def << endl;
+    //cout << "consistency level = " << ToulBar2::consistencyLevel << endl;
+    file >> size[0];
+    file >> size[1];
+    for (int g = 0; g < 2; g++) {
+        for (int i = 0; i < size[g]; i++) {
+            int var;
+            file >> var;
+            for (int j = 0; j < arity_; j++) {
+                if (wcsp->getVar(var) == getVar(j)) {
+                    group[g].push_back(j);
+                    break;
+                }
+            }
+        }
+        sort(group[g].begin(), group[g].end());
+    }
+}
+
+Cost SameConstraint::evalOriginal(const Tuple& s)
+{
+    Cost tuple_cost = 0;
+    map<tValue, Cost> appear;
+    for (vector<int>::iterator i = group[0].begin(); i != group[0].end(); i++) {
+        appear[s[*i]] += def;
+    }
+    for (vector<int>::iterator i = group[1].begin(); i != group[1].end(); i++) {
+        appear[s[*i]] -= def;
+    }
+    Cost sum = MIN_COST;
+    for (map<tValue, Cost>::iterator i = appear.begin(); i != appear.end(); i++) {
+        sum += (i->second < 0) ? (-(i->second)) : i->second;
+    }
+    tuple_cost += sum / 2;
+    /*for (int i=0;i<s.length();i++) {
+		if (tuple_cost < wcsp->getUb()) {
+			tuple_cost -= deltaCost[i][s[i]];
+		}
+	}
+	tuple_cost -= projectedCost;
+	if (tuple_cost < 0) {
+		cout << "Error ! " << s << " has -ve cost of " << tuple_cost << endl;
+		exit(0);
+	}*/
+    return tuple_cost;
+}
+
+size_t SameConstraint::GetGraphAllocatedSize()
+{
+    return arity_ + nDistinctDomainValues + 2;
+}
+
+void SameConstraint::buildGraph(Graph& g)
+{
+    //g.clearEdge();
+    for (vector<int>::iterator i = group[0].begin(); i != group[0].end(); i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(*i);
+        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+            g.addEdge((*i) + 1, mapval[*v], -deltaCost[*i][x->toIndex(*v)], 1, *v);
+        }
+        g.addEdge(0, (*i) + 1, 0);
+    }
+    for (vector<int>::iterator i = group[1].begin(); i != group[1].end(); i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)getVar(*i);
+        for (EnumeratedVariable::iterator v = x->begin(); v != x->end(); ++v) {
+            g.addEdge(mapval[*v], (*i) + 1, -deltaCost[*i][x->toIndex(*v)], 1, *v);
+        }
+        g.addEdge((*i) + 1, g.size() - 1, 0);
+    }
+    for (map<Value, int>::iterator i = mapval.begin(); i != mapval.end(); i++) {
+        map<Value, int>::iterator j = i;
+        for (j++; j != mapval.end(); j++) {
+            g.addEdge(i->second, j->second, def, arity_);
+            g.addEdge(j->second, i->second, def, arity_);
+        }
+    }
+}
+
+/*void SameConstraint::getDomainFromGraph(Graph &graph, int varindex, vector<int> &domain) {
+
+	domain.clear();
+	for (vector<List_Node >::iterator k = graph[varindex+1].begin(); 
+			k != graph[varindex+1].end(); k++) {
+		for (map<Value, int>::iterator i = mapval.begin();i !=
+				mapval.end();i++) {
+			if (i->second == k->adj) domain.push_back(i->first);
+		}
+	}
+	for (map<Value, int>::iterator i = mapval.begin();i !=
+			mapval.end();i++) {
+		for (vector<List_Node >::iterator k = graph[i->second].begin(); 
+				k != graph[i->second].end(); k++) {
+			if (k->adj == varindex+1) {
+				domain.push_back(i->first);
+			}
+		}
+	}
+
+}*/
+
+void SameConstraint::dump(ostream& os, bool original)
+{
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    os << " -1 ssame " << def << " " << group[0].size() << " " << group[1].size() << endl;
+    for (int g = 0; g < 2; g++) {
+        for (unsigned int i = 0; i < group[g].size(); i++) {
+            os << " " << getVar(group[g][i])->wcspIndex;
+        }
+    }
+    os << endl;
+}
+
+//void SameConstraint::print(ostream& os)
+//{
+//    os << "ssame(";
+//    for(int i = 0; i < arity_;i++) {
+//        os << scope[i]->wcspIndex;
+//        if(i < arity_-1) os << ",";
+//    }
+//    os << ")[" << def << "," << group[0].size() << "," << group[1].size();
+//    for (int g=0; g<2; g++) {
+//        for (unsigned int i = 0; i < group[g].size(); i++) {
+//            os << "," << getVar(group[g][i])->wcspIndex;
+//        }
+//    }
+//    os << "]";
+//}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2sameconstr.hpp b/code/include/tb2/globals/tb2sameconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..e1478a5fee481cf46136f3e1e5198001d8924172
--- /dev/null
+++ b/code/include/tb2/globals/tb2sameconstr.hpp
@@ -0,0 +1,70 @@
+/** \file tb2sameconstr.hpp
+ *  \brief Flow based global cost function : ssame_flow
+ */
+
+#ifndef TB2SAMECONSTR_HPP_
+#define TB2SAMECONSTR_HPP_
+
+#include "tb2flowbasedconstr.hpp"
+
+class SameConstraint : public FlowBasedGlobalConstraint {
+private:
+    //int def;
+    void buildIndex();
+    vector<int> group[2];
+    int nDistinctDomainValues;
+    pair<int, int> mapto(int varindex, Value val);
+    //void checkRemoved(Graph &graph, vector<int> &rmv);
+    size_t GetGraphAllocatedSize();
+    void buildGraph(Graph& g);
+    //void getDomainFromGraph(Graph &graph, int varindex, vector<int> &domain);
+    //void augmentGraph(Graph &graph, int &cost, int varindex);
+public:
+    SameConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int
+                                                                  arity_in);
+
+    ~SameConstraint() {}
+
+    Cost evalOriginal(const Tuple& s);
+    /*void addToGroup(int gp, Variable *var) {
+			for (int i=0;i<arity_;i++) {
+				if (getVar(i) == var) {
+					group[gp][size[gp]] = i;
+					size[gp]++;
+					break;
+				}
+			}
+		}
+		void addToGroupX(Variable *var) {addToGroup(0, var);}
+		void addToGroupY(Variable *var) {addToGroup(1, var);}
+     */
+    string getName() { return "ssame"; }
+    void read(istream& file, bool mult = true);
+    void addVariablesToGroup(EnumeratedVariable* variable, int groupID)
+    {
+
+        for (int j = 0; j < arity_; j++) {
+            if (getVar(j) == variable) {
+                group[groupID].push_back(j);
+                break;
+            }
+        }
+    }
+    void organizeConfig()
+    {
+        for (int g = 0; g < 2; g++)
+            sort(group[g].begin(), group[g].end());
+    }
+
+    //    void print(ostream& os);
+    void dump(ostream& os, bool original = true);
+};
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2treeconstr.cpp b/code/include/tb2/globals/tb2treeconstr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7408e23689fe3de8fd99dbdf5c7f16906fa55508
--- /dev/null
+++ b/code/include/tb2/globals/tb2treeconstr.cpp
@@ -0,0 +1,320 @@
+#include "tb2treeconstr.hpp"
+
+TreeConstraint::TreeConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity)
+    : DPGlobalConstraint(wcsp, scope, arity)
+    , curTreeCost(0)
+    , minTreeEdgeCost(0)
+    , maxTreeEdgeCost(0)
+    , ccTreeRoot(NULL)
+{
+}
+
+TreeConstraint::~TreeConstraint(void) {}
+
+void TreeConstraint::initMemoization()
+{
+
+    //check if the assignments represent a graph
+    // check max value <= max var. index
+    //build value to local var index mapping
+
+    int n = arity();
+
+    for (int i = 0; i < n; i++) {
+        EnumeratedVariable* x = scope[i];
+        int varId = -1;
+        for (int j = 0; j < (int)wcsp->numberOfVariables() && varId == -1; j++) {
+            if (getVar(j) == x)
+                varId = j;
+        }
+        if (varId < 0) {
+            cerr << "variable " << x->getName() << " not found" << endl;
+            exit(1);
+        }
+        val2VarIndex[varId] = i;
+        /*for(EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+			if (*it >= maxVal) maxVal = *it;
+		}*/
+    }
+
+    for (int i = 0; i < n; i++) {
+        EnumeratedVariable* x = scope[i];
+        for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+            if (val2VarIndex.find(*it) == val2VarIndex.end()) {
+                cerr << "Error invalid MST()" << endl;
+                exit(1);
+            }
+        }
+    }
+
+    p.resize(n);
+}
+
+Cost TreeConstraint::minCostOriginal()
+{
+    if (curTreeCost >= wcsp->getUb())
+        return wcsp->getUb();
+    return 0;
+}
+
+Cost TreeConstraint::minCostOriginal(int var, Value val, bool changed)
+{
+    DPGlobalConstraint::Result result = minCost(var, val, changed);
+    return result.first;
+}
+
+Cost TreeConstraint::eval(const Tuple& s)
+{
+
+    int n = arity();
+    int root = -1;
+    int nRoot = 0;
+
+    vector<vector<int>> edgeList;
+    edgeList.resize(n);
+
+    for (int i = 0; i < n; i++) {
+        int val = s[i];
+        if (val2VarIndex[val] == i) {
+            root = i;
+            nRoot++;
+        } else {
+            edgeList[val2VarIndex[val]].push_back(i);
+        }
+    }
+
+    if (nRoot != 1)
+        return wcsp->getUb();
+
+    bool isLoopBack = false;
+
+    stack<int> dfsStack;
+    vector<int> visited;
+    dfsStack.push(root);
+
+    visited.resize(n);
+    fill(visited.begin(), visited.end(), 0);
+
+    while (!dfsStack.empty() && !isLoopBack) {
+        int cur = dfsStack.top();
+        dfsStack.pop();
+        visited[cur] = 1;
+        for (vector<int>::iterator it = edgeList[cur].begin(); it != edgeList[cur].end(); it++) {
+            if (visited[*it] == 1) {
+                isLoopBack = true;
+                break;
+            }
+            dfsStack.push(*it);
+        }
+    }
+
+    if (isLoopBack)
+        return wcsp->getUb();
+
+    bool allvisit = true;
+    for (int i = 0; i < n; i++) {
+        if (!visited[i])
+            allvisit = false;
+    }
+
+    if (!allvisit)
+        return wcsp->getUb();
+
+    return 0;
+}
+
+DPGlobalConstraint::Result TreeConstraint::minCost(int var, Value val, bool changed)
+{
+
+    if (changed)
+        curTreeCost = recomputeCurMST();
+
+    bool consistent = true;
+    if (curTreeCost >= wcsp->getUb()) {
+        consistent = false;
+    } else if (treeEdge.find(make_pair(var, val2VarIndex[val])) == treeEdge.end() && treeEdge.find(make_pair(val2VarIndex[val], var)) == treeEdge.end()) {
+        EnumeratedVariable* x = scope[var];
+        if (x->getCost(val) + curTreeCost - maxTreeEdgeCost > wcsp->getUb()) {
+            consistent = false;
+        } else if (x->getCost(val) + curTreeCost - minTreeEdgeCost > wcsp->getUb()) {
+            int u = var;
+            int v = val2VarIndex[val];
+            CCTreeNodePtr lca = ((pos[u] < pos[v]) ? inorder[RMQ.query(pos[u], pos[v])] : inorder[RMQ.query(pos[v], pos[u])]);
+            Cost maxWeight = lca->weight;
+            if (x->getCost(val) + curTreeCost - maxWeight > wcsp->getUb())
+                consistent = false;
+        }
+    }
+
+    if (consistent)
+        return DPGlobalConstraint::Result(0, NULL);
+    else
+        return DPGlobalConstraint::Result(wcsp->getUb(), NULL);
+}
+
+Cost TreeConstraint::recomputeCurMST()
+{
+    int n = arity();
+    vector<Edge> edgeList;
+    for (int i = 0; i < n; i++) {
+        EnumeratedVariable* x = scope[i];
+        for (EnumeratedVariable::iterator it = x->begin(); it != x->end(); ++it) {
+            if (i != val2VarIndex[*it]) {
+                edgeList.push_back(Edge(val2VarIndex[*it], i, x->getCost(*it)));
+            }
+        }
+    }
+    return recomputeMST(edgeList);
+}
+
+Cost TreeConstraint::recomputeMST(vector<TreeConstraint::Edge>& edgeList)
+{
+
+    int n = arity();
+    Cost treeCost = 0;
+
+    minTreeEdgeCost = INT_MAX;
+    maxTreeEdgeCost = 0;
+    treeEdge.clear();
+    inorder.clear();
+    inorderNodeHeight.clear();
+    ccTree.clear();
+    nodeStore.clear();
+    RMQ.clear();
+
+    nodeStore.reserve(3 * n);
+
+    ccTreeRoot = PtrNULL();
+
+    for (int i = 0; i < n; i++) {
+        p[i] = i;
+        CCTreeNodePtr leaf = createNewNode();
+        leaf->nodeIndex = i;
+        ccTree.push_back(leaf);
+    }
+
+    sort(edgeList.begin(), edgeList.end());
+    for (vector<Edge>::iterator e = edgeList.begin(); e != edgeList.end(); e++) {
+        if (findParent(e->u, p) != findParent(e->v, p)) {
+            unionSet(e->u, e->v, p);
+            treeCost += e->weight;
+            if (minTreeEdgeCost > e->weight)
+                minTreeEdgeCost = e->weight;
+            if (maxTreeEdgeCost < e->weight)
+                maxTreeEdgeCost = e->weight;
+            treeEdge.insert(make_pair(e->u, e->v));
+            joinCCTrees(e->u, e->v, e->weight);
+        }
+    }
+
+    int root = findParent(0, p);
+    for (int i = 1; i < n; i++) {
+        if (findParent(i, p) != root) {
+            treeCost = wcsp->getUb();
+        }
+    }
+
+    if (treeCost < wcsp->getUb()) {
+        for (vector<CCTreeNodePtr>::iterator it = ccTree.begin(); it != ccTree.end(); it++) {
+            if ((*it)->parent == PtrNULL())
+                ccTreeRoot = *it;
+        }
+        InorderTransveral(ccTreeRoot);
+        pos.resize(ccTree.size());
+        for (vector<CCTreeNodePtr>::iterator it = inorder.begin(); it != inorder.end(); it++) {
+            pos[(*it)->nodeIndex] = it - inorder.begin();
+        }
+        RMQ.pre_compute();
+    }
+
+    return treeCost;
+}
+
+int TreeConstraint::findParent(int index, vector<int>& p)
+{
+    while (index != p[index])
+        index = p[index];
+    return index;
+}
+
+void TreeConstraint::unionSet(int u, int v, vector<int>& p)
+{
+    int uRoot = findParent(u, p);
+    int vRoot = findParent(v, p);
+
+    p[uRoot] = vRoot;
+}
+
+void TreeConstraint::joinCCTrees(int u, int v, Cost weight)
+{
+
+    CCTreeNodePtr uRoot = findRoot(ccTree[u]);
+    CCTreeNodePtr vRoot = findRoot(ccTree[v]);
+
+    CCTreeNodePtr newRootNode = createNewNode();
+    newRootNode->nodeIndex = ccTree.size();
+    newRootNode->u = u;
+    newRootNode->v = v;
+    newRootNode->weight = weight;
+    newRootNode->height = max(uRoot->height, vRoot->height) + 1;
+    newRootNode->left = uRoot;
+    newRootNode->right = vRoot;
+
+    uRoot->parent = newRootNode;
+    vRoot->parent = newRootNode;
+
+    ccTree.push_back(newRootNode);
+}
+
+TreeConstraint::CCTreeNodePtr TreeConstraint::findRoot(TreeConstraint::CCTreeNodePtr node)
+{
+
+    if (node->parent == PtrNULL())
+        return node;
+    if (node->parent == node)
+        return node;
+    CCTreeNodePtr parent = findRoot(node->parent);
+    node->parent = parent;
+    return parent;
+}
+
+void TreeConstraint::InorderTransveral(TreeConstraint::CCTreeNodePtr root)
+{
+
+    if (root != PtrNULL()) {
+        InorderTransveral(root->left);
+        inorder.push_back(root);
+        RMQ.push_back(-(root->height));
+        InorderTransveral(root->right);
+    }
+}
+
+TreeConstraint::CCTreeNodePtr TreeConstraint::createNewNode()
+{
+    CCTreeNode newNode;
+    newNode.parent = newNode.left = newNode.right = PtrNULL();
+    nodeStore.push_back(newNode);
+    return &(nodeStore.back());
+}
+
+void TreeConstraint::dump(ostream& os, bool original)
+{
+    if (original) {
+        os << arity_;
+        for (int i = 0; i < arity_; i++)
+            os << " " << scope[i]->wcspIndex;
+    } else {
+        os << nonassigned;
+        for (int i = 0; i < arity_; i++)
+            if (scope[i]->unassigned())
+                os << " " << scope[i]->getCurrentVarId();
+    }
+    os << " -1 smstdp" << endl;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/globals/tb2treeconstr.hpp b/code/include/tb2/globals/tb2treeconstr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..c064cf5458015197eb324a536d394a2b26c7505e
--- /dev/null
+++ b/code/include/tb2/globals/tb2treeconstr.hpp
@@ -0,0 +1,217 @@
+/** \file tb2treeconstr.hpp
+ *  \brief Dynamic programming based global constraint : tree
+ */
+
+#ifndef TB2TREECONSTR_HPP_
+#define TB2TREECONSTR_HPP_
+
+#include "tb2dpglobalconstr.hpp"
+
+//\brief Special query for Tree global constraint
+template <class T>
+class RangeMinQuery {
+
+private:
+    vector<T> A;
+
+    int n;
+    vector<int> pow2array;
+    vector<int> log2array;
+    vector<vector<int>> M;
+
+public:
+    RangeMinQuery()
+        : n(0)
+    {
+    }
+
+    ~RangeMinQuery()
+    {
+    }
+
+    T& operator[](int i) { return A[i]; }
+
+    void push_back(const T& t) { A.push_back(t); }
+
+    int size() { return A.size(); }
+
+    void clear() { A.clear(); }
+
+    void pre_compute()
+    {
+        if (n != (int)A.size()) {
+            pow2array.clear();
+            log2array.clear();
+            M.clear();
+
+            n = A.size();
+            pow2array.resize(n + 1);
+            log2array.resize(n + 1);
+
+            for (int i = 0; i < n + 1; i++)
+                log2array[i] = -1;
+            pow2array[0] = 1;
+            log2array[1] = 0;
+            for (int i = 1; i < n + 1; i++) {
+                pow2array[i] = pow2array[i - 1] * 2;
+                if (pow2array[i] < n + 1)
+                    log2array[pow2array[i]] = i;
+            }
+
+            int logVal = 0;
+            for (int i = 1; i < n + 1; i++) {
+                if (log2array[i] == -1)
+                    log2array[i] = logVal;
+                else
+                    logVal = log2array[i];
+            }
+
+            M.resize(n);
+            for (int i = 0; i < n; i++) {
+                M[i].resize(n);
+            }
+        }
+
+        for (int i = 0; i < n; i++)
+            M[i][0] = i;
+        for (int j = 1; pow2array[j] <= n; j++) {
+            for (int i = 0; i < n - pow2array[j] + 1; i++) {
+                int minL = M[i][j - 1];
+                int minR = M[i + pow2array[j - 1]][j - 1];
+                if (A[minL] < A[minR])
+                    M[i][j] = minL;
+                else
+                    M[i][j] = minR;
+            }
+        }
+    }
+
+    int query(int start, int end)
+    {
+        int logWidth = log2array[end - start + 1];
+        int minL = M[start][logWidth];
+        int minR = M[end - pow2array[logWidth] + 1][logWidth];
+        return ((A[minL] < A[minR]) ? minL : minR);
+    }
+};
+
+class TreeConstraint : public DPGlobalConstraint {
+private:
+    Cost curTreeCost;
+
+    struct Edge {
+        int u;
+        int v;
+        Cost weight;
+        Edge(int u, int v, Cost w)
+            : u(u)
+            , v(v)
+            , weight(w)
+        {
+        }
+        bool operator<(const Edge& e) const { return weight < e.weight; }
+    };
+
+    Cost minTreeEdgeCost;
+    Cost maxTreeEdgeCost;
+    set<pair<int, int>> treeEdge;
+
+    struct CCTreeNode; // Forward declaration
+    vector<CCTreeNode> nodeStore;
+    //typedef vector<CCTreeNode>::iterator CCTreeNodePtr;
+    typedef CCTreeNode* CCTreeNodePtr;
+
+    struct CCTreeNode {
+        int nodeIndex;
+        int u;
+        int v;
+        Cost weight;
+        int height;
+        CCTreeNodePtr parent;
+        CCTreeNodePtr left;
+        CCTreeNodePtr right;
+        CCTreeNode()
+            : nodeIndex(0)
+            , u(-1)
+            , v(-1)
+            , weight(MIN_COST)
+            , height(0)
+            , parent(NULL)
+            , left(NULL)
+            , right(NULL)
+        {
+        }
+    };
+
+    vector<CCTreeNodePtr> ccTree;
+    vector<CCTreeNodePtr> inorder;
+    vector<CCTreeNodePtr> inorderNodeHeight;
+    vector<int> pos;
+    CCTreeNodePtr ccTreeRoot;
+    RangeMinQuery<int> RMQ;
+
+    //CCTreeNodePtr PtrNULL() {return nodeStore.end();}
+    CCTreeNodePtr PtrNULL() { return NULL; }
+    CCTreeNodePtr createNewNode();
+
+    void joinCCTrees(int u, int v, Cost weight);
+    CCTreeNodePtr findRoot(CCTreeNodePtr node);
+    void InorderTransveral(CCTreeNodePtr root);
+
+    // disjoint data set
+    vector<int> p;
+    int findParent(int index, vector<int>& p);
+    void unionSet(int u, int v, vector<int>& p);
+
+    map<int, int> val2VarIndex;
+
+    Cost recomputeCurMST();
+    Cost recomputeMST(vector<Edge>& edgeList);
+
+protected:
+    Cost minCostOriginal();
+    Cost minCostOriginal(int var, Value val, bool changed);
+    Result minCost(int var, Value val, bool changed);
+
+    // This is a hard constraint. SNIC and D(G)AC* are equivalent to AC
+
+    void propagateStrongNIC()
+    {
+        propagateAC();
+    }
+
+    void propagateDAC()
+    {
+        if (ToulBar2::LcLevel == LC_DAC)
+            propagateAC();
+    }
+
+    // No need to run anything for (weak) ED(G)AC*
+    bool isEAC(int var, Value val)
+    {
+        if (ToulBar2::FullEAC)
+            reviseEACGreedySolution(var, val);
+        return true;
+    }
+    void findFullSupportEAC(int var) {}
+
+public:
+    TreeConstraint(WCSP* wcsp, EnumeratedVariable** scope, int arity);
+    virtual ~TreeConstraint();
+
+    Cost eval(const Tuple& s);
+
+    void read(istream& file, bool mult = true) {} //No parameter needed
+    void initMemoization();
+    string getName() { return "MST"; }
+    void dump(ostream& os, bool original = true);
+};
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/ilog/iloglue.cpp b/code/include/tb2/ilog/iloglue.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ca42d554826cdcf254fc2d4a9872658459d13e16
--- /dev/null
+++ b/code/include/tb2/ilog/iloglue.cpp
@@ -0,0 +1,554 @@
+/** \file iloglue.cpp
+ *  \brief Link with Ilog Solver, adding a global soft constraint representing a weighted CSP and propagated by ToulBar2.
+ * 
+ */
+
+// these includes are needed if compiled on new g++ versions (>4.0?)
+#include <climits>
+#include <cstdlib>
+#include <cstring>
+
+#include <ilsolver/ilosolver.h>
+#include <ilsolver/ilctrace.h>
+#include "toulbar2lib.hpp"
+#include "tb2domain.hpp"
+extern ostream& operator<<(ostream& os, WCSP& wcsp);
+
+// TO BE DONE
+// * avoid dedicated search goal:
+// * - adds objective goal to the search
+// * - encapsulates store/restore in IlcWeightedCSPI demons based on getDepth (store) and numberOfFails (restore) (take care of restore is done before wcsp method calls in ilog search goals!)
+// * global wcsp constraint extended by using table constraints
+// * why domain-delta getMinDelta and getMaxDelta methods do not work properly?
+// * separate increase/decrease events from remove events sent towards ToulBar2
+// * test two objective functions on spot5 problems
+// * sport scheduling experiments
+
+// use STL namespace
+ILOSTLBEGIN
+
+IlcIntVar Objective;
+int ProblemSize = 0;
+IlcIntVarArray ProblemVars;
+int UpperBound = MAX_COST; // best solution cost or initial global upper bound
+int* BestSol = NULL; // best solution found during the search
+
+// current IloSolver instance used by libtb2.so to generate a failure
+IloSolver IlogSolver;
+
+// current WeightedCSP instance used by value and variable ordering heuristics
+WeightedCSP* CurrentWeightedCSP = NULL;
+
+// global weighted csp constraint exploiting toulbar2 propagation
+class IlcWeightedCSPI : public IlcConstraintI {
+public:
+    static vector<IlcWeightedCSPI*> AllIlcWeightedCSPI;
+    static int wcspCounter;
+
+    IlcIntVar obj; // objective function
+    int size; // |vars|
+    IlcIntVarArray vars; // all Ilog variables involved in the WCSP network
+    WeightedCSP* wcsp; // WCSP network managed by ToulBar2
+    Domain* unassignedVars; // a WCSP domain containing the list of unassigned variables
+    IlcInt currentNumberOfFails; // counter of search failures to inform ToulBar2 to reset its propagation queues and update its timestamp
+    IlcRevBool synchronized; // if IlcTrue then force a complete synchronization between Ilog and ToulBar2 variable domains and objective
+
+    // unique IlcWeightedCSPI constructor
+    // creates an empty WCSP and add soft constraints from a file if available
+    IlcWeightedCSPI(IloSolver solver,
+        IlcIntVar objective, IlcIntVarArray variables,
+        const char* fileName = NULL)
+        : IlcConstraintI(solver)
+        , obj(objective)
+        , size(variables.getSize())
+        , vars(variables)
+        , wcsp(NULL)
+        , unassignedVars(NULL)
+        , currentNumberOfFails(0)
+        , synchronized(solver, IlcTrue)
+    {
+        // creates a WCSP object
+        wcsp = WeightedCSP::makeWeightedCSP(MAX_COST);
+        // load WCSP problem from a file if available
+        if (fileName) {
+            wcsp->read_wcsp(fileName);
+            assert((unsigned int)size == wcsp->numberOfVariables());
+        }
+        // specific data to check if all variables have been assigned
+        unassignedVars = new Domain(0, size - 1);
+        // memorizes all WeightedCSP instances
+        assert(wcsp->getIndex() == wcspCounter);
+        AllIlcWeightedCSPI.push_back(this);
+        wcspCounter++;
+        CurrentWeightedCSP = wcsp;
+    }
+
+    // destructor
+    ~IlcWeightedCSPI()
+    {
+        AllIlcWeightedCSPI[wcsp->getIndex()] = NULL;
+        delete wcsp;
+        delete unassignedVars;
+    }
+
+    // domain synchronization between obj&vars (Ilog) and wcsp (ToulBar2)
+    void synchronize()
+    {
+        if (ToulBar2::verbose >= 2)
+            cout << "Domain synchronization between IlogSolver and Toulbar2!" << endl;
+        for (int i = 0; i < size; i++) {
+            if (ToulBar2::verbose >= 2)
+                cout << vars[i] << " (" << wcsp->getInf(i) << "," << wcsp->getSup(i) << ")" << endl;
+            vars[i].setMin(wcsp->getInf(i));
+            vars[i].setMax(wcsp->getSup(i));
+            for (int d = wcsp->getInf(i); d <= wcsp->getSup(i); d++) {
+                if (wcsp->cannotbe(i, d)) {
+                    vars[i].removeValue(d);
+                }
+            }
+            wcsp->increase(i, vars[i].getMin());
+            wcsp->decrease(i, vars[i].getMax());
+            for (int d = vars[i].getMin(); d <= vars[i].getMax(); d++) {
+                if (!vars[i].isInDomain(d)) {
+                    wcsp->remove(i, d);
+                }
+            }
+        }
+        obj.setMin(wcsp->getLb());
+        obj.setMax(wcsp->getUb() - 1);
+        wcsp->decreaseUb(obj.getMax() + 1);
+        UpperBound = wcsp->getUb();
+    }
+
+    // if a search node failure has just occured then informs ToulBar2 to reset its propagation queues and update its timestamp
+    void checkFailure()
+    {
+        if (getSolver().getNumberOfFails() != currentNumberOfFails) {
+            currentNumberOfFails = getSolver().getNumberOfFails();
+            wcsp->whenContradiction();
+        }
+    }
+
+    // links the WCSP variables to the ILOG variables
+    void post();
+
+    // global propagation using WCSP propagation queues
+    void propagate()
+    {
+        checkFailure();
+        if (synchronized) {
+            synchronized.setValue(getSolver(), IlcFalse);
+            synchronize();
+        }
+        if (ToulBar2::verbose >= 2)
+            cout << "ILOG: propagate wcsp index " << wcsp->getIndex() << endl;
+        wcsp->decreaseUb(obj.getMax() + 1);
+        wcsp->propagate();
+    }
+
+    // variable varIndex has been assigned
+    void whenValue(const IlcInt varIndex)
+    {
+        checkFailure();
+        if (ToulBar2::verbose >= 2)
+            cout << "ILOG: " << vars[varIndex].getName() << " = " << vars[varIndex].getValue() << endl;
+        wcsp->assign(varIndex, vars[varIndex].getValue());
+        if (unassignedVars->canbe(varIndex)) {
+            unassignedVars->erase(varIndex);
+            if (unassignedVars->empty()) {
+                assert(wcsp->verify());
+                obj.setValue(wcsp->getLb());
+            }
+        }
+        push(); // global propagation done after local propagation
+    }
+
+    // check only modifications on the objective variable
+    void whenRange()
+    {
+        checkFailure();
+        wcsp->enforceUb(); // fail if lower bound >= upper bound and enforce NC*
+        if (obj.getMax() + 1 < wcsp->getUb()) {
+            wcsp->decreaseUb(obj.getMax() + 1);
+        }
+        push(); // global propagation done after local propagation
+    }
+
+    // variable varIndex has its domain reduced
+    void whenDomain(const IlcInt varIndex)
+    {
+        checkFailure();
+        if (!vars[varIndex].isBound()) {
+            for (IlcIntVarDeltaIterator iter(vars[varIndex]); iter.ok(); ++iter) {
+                IlcInt val = *iter;
+                if (ToulBar2::verbose >= 2)
+                    cout << "ILOG: " << vars[varIndex].getName() << " != " << val << endl;
+                wcsp->remove(varIndex, val);
+            }
+            push(); // global propagation done after local propagation
+        }
+    }
+
+    // Not implemented!
+    //   IlcBool isViolated() const;
+    //   void metaPostDemon(IlcDemonI*);
+    //   IlcConstraintI* makeOpposite() const;
+};
+
+vector<IlcWeightedCSPI*> IlcWeightedCSPI::AllIlcWeightedCSPI;
+int IlcWeightedCSPI::wcspCounter = 0;
+
+void tb2setvalue(int wcspId, int varIndex, Value value, void* solver)
+{
+    assert(wcspId < IlcWeightedCSPI::wcspCounter);
+    assert(IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId] != NULL);
+    assert(varIndex < IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId]->size);
+    if (ToulBar2::verbose >= 2)
+        cout << "TOULBAR2: x" << varIndex << " = " << value << endl;
+    IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId]->vars[varIndex].setValue(value);
+}
+
+void tb2removevalue(int wcspId, int varIndex, Value value, void* solver)
+{
+    assert(wcspId < IlcWeightedCSPI::wcspCounter);
+    assert(IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId] != NULL);
+    assert(varIndex < IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId]->size);
+    if (ToulBar2::verbose >= 2)
+        cout << "TOULBAR2: x" << varIndex << " != " << value << endl;
+    IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId]->vars[varIndex].removeValue(value);
+}
+
+void tb2setmin(int wcspId, int varIndex, Value value, void* solver)
+{
+    assert(wcspId < IlcWeightedCSPI::wcspCounter);
+    assert(IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId] != NULL);
+    assert(varIndex < IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId]->size);
+    if (ToulBar2::verbose >= 2)
+        cout << "TOULBAR2: x" << varIndex << " >= " << value << endl;
+    IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId]->vars[varIndex].setMin(value);
+}
+
+void tb2setmax(int wcspId, int varIndex, Value value, void* solver)
+{
+    assert(wcspId < IlcWeightedCSPI::wcspCounter);
+    assert(IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId] != NULL);
+    assert(varIndex < IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId]->size);
+    if (ToulBar2::verbose >= 2)
+        cout << "TOULBAR2: x" << varIndex << " <= " << value << endl;
+    IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId]->vars[varIndex].setMax(value);
+}
+
+void tb2setminobj(int wcspId, int varIndex, Value value, void* solver)
+{
+    assert(wcspId < IlcWeightedCSPI::wcspCounter);
+    assert(IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId] != NULL);
+    assert(varIndex == -1);
+    if (ToulBar2::verbose >= 2)
+        cout << "TOULBAR2: obj"
+             << " >= " << value << endl;
+    IlcWeightedCSPI::AllIlcWeightedCSPI[wcspId]->obj.setMin(value);
+}
+
+ILCCTDEMON1(IlcWeightedCSPWhenValueDemon, IlcWeightedCSPI, whenValue, IlcInt, varIndex);
+ILCCTDEMON1(IlcWeightedCSPWhenDomainDemon, IlcWeightedCSPI, whenDomain, IlcInt, varIndex);
+ILCCTDEMON0(IlcWeightedCSPWhenRangeDemon, IlcWeightedCSPI, whenRange);
+
+void IlcWeightedCSPI::post()
+{
+    ToulBar2::setvalue = ::tb2setvalue;
+    ToulBar2::removevalue = ::tb2removevalue;
+    ToulBar2::setmin = ::tb2setmin;
+    ToulBar2::setmax = ::tb2setmax;
+    ToulBar2::setminobj = ::tb2setminobj;
+    for (int i = 0; i < size; i++) {
+        vars[i].whenValue(IlcWeightedCSPWhenValueDemon(getSolver(), this, i));
+        vars[i].whenDomain(IlcWeightedCSPWhenDomainDemon(getSolver(), this, i));
+    }
+    obj.whenRange(IlcWeightedCSPWhenRangeDemon(getSolver(), this));
+}
+
+IlcConstraint IlcWeightedCSP(IlcIntVar objective, IlcIntVarArray variables, const char* filename)
+{
+    IloSolver solver = objective.getSolver();
+    return IlcConstraint(new (solver.getHeap())
+            IlcWeightedCSPI(solver, objective, variables, filename));
+}
+ILOCPCONSTRAINTWRAPPER3(IloWeightedCSP, solver, IloIntVar, obj, IloIntVarArray, vars,
+    const char*, filename)
+{
+    use(solver, obj);
+    use(solver, vars);
+    return IlcWeightedCSP(solver.getIntVar(obj), solver.getIntVarArray(vars), filename);
+}
+
+ILCGOAL2(IlcGuess, IlcIntVar, var, IlcInt, value)
+{
+    Store::store();
+    if (ToulBar2::verbose >= 1)
+        cout << "[" << getSolver().getSearchNode().getDepth() << "," << Objective.getMin() << "," << UpperBound << "] Try " << var << " = " << value << endl;
+    var.setValue(value);
+    return 0;
+}
+
+ILCGOAL3(IlcRefute, IlcIntVar, var, IlcInt, value, IlcInt, depth)
+{
+    Store::restore(depth);
+    Store::store(); // => store.getDepth() == getSolver().getSearchNode().getDepth()
+    Objective.setMax(UpperBound - 1);
+    if (ToulBar2::verbose >= 1)
+        cout << "[" << getSolver().getSearchNode().getDepth() << "," << Objective.getMin() << "," << UpperBound << "] Refute " << var << " != " << value << endl;
+    var.removeValue(value);
+    return 0;
+}
+
+ILCGOAL0(IlcNewSolution)
+{
+    if (getSolver().isInSearch() && !getSolver().isInRecomputeMode()) {
+        if (ToulBar2::verbose >= 0)
+            cout << "New solution: " << Objective.getMin() << " (" << getSolver().getNumberOfFails() << " fails)" << endl;
+        if (ToulBar2::showSolutions) {
+            for (int i = 0; i < ProblemSize; i++) {
+                cout << ProblemVars[i] << endl;
+            }
+        }
+    }
+    CurrentWeightedCSP->updateUb(Objective.getMin());
+    UpperBound = Objective.getMin();
+    for (int i = 0; i < ProblemSize; i++) {
+        BestSol[i] = ProblemVars[i].getValue();
+    }
+    fail();
+    return 0;
+}
+ILOCPGOALWRAPPER0(IloNewSolution, solver)
+{
+    return IlcNewSolution(solver);
+}
+
+ILCGOAL2(IlcInstantiateVar, IlcIntVar, var, IlcInt, varIndex)
+{
+    IlcInt value;
+    int depth = Store::getDepth();
+
+    if (var.isBound())
+        return 0;
+
+    // value ordering heuristic: try the unary support first
+    value = CurrentWeightedCSP->getSupport(varIndex);
+    if (!var.isInDomain(value)) {
+        value = var.getMin();
+    }
+    return IlcOr(IlcGuess(getSolver(), var, value),
+        IlcAnd(IlcRefute(getSolver(), var, value, depth), this));
+}
+
+// variable ordering heuristic: selects the first unassigned variable with the smallest ratio current domain size divided by actual current degree in the WCSP network
+IlcInt IlcChooseMinSizeIntDivMaxDegree(const IlcIntVarArray vars)
+{
+    int varIndex = -1;
+    ;
+    double best = MAX_VAL - MIN_VAL;
+
+    for (int i = 0; i < vars.getSize(); i++)
+        if (!vars[i].isBound()) {
+            // remove following "+1" when isolated variables are automatically assigned
+            double heuristic = (double)CurrentWeightedCSP->getDomainSize(i) / (CurrentWeightedCSP->getDegree(i) + 1);
+            if (varIndex < 0 || heuristic < best - 1. / 100001.) {
+                best = heuristic;
+                varIndex = i;
+            }
+        }
+    return varIndex;
+}
+
+// For Queens problem
+// variable ordering heuristic: among the unassigned variables with the smallest current domain size, selects the first one with the smallest domain value
+IlcChooseIndex2(IlcChooseMinSizeMin, var.getSize(), var.getMin(), IlcIntVar)
+
+    ILCGOAL1(IlcGenerateVars, IlcIntVarArray, vars)
+{
+    IlcInt index = IlcChooseMinSizeIntDivMaxDegree(vars);
+    //  IlcInt index = IlcChooseMinSizeMin(vars);
+    if (index == -1)
+        return 0;
+    return IlcAnd(IlcInstantiateVar(getSolver(), vars[index], index), this);
+}
+ILOCPGOALWRAPPER1(IloGenerateVars, solver, IloIntVarArray, vars)
+{
+    return IlcGenerateVars(solver, solver.getIntVarArray(vars));
+}
+
+void alldiff(IloEnv& env, IloModel& model, IloIntVarArray& vars)
+{
+    cout << "Add 1 hard AllDiff constraint on all the (permutation) problem variables." << endl;
+    model.add(IloAllDiff(env, vars));
+}
+
+void zebra(IloEnv& env, IloModel& model, IloIntVarArray& vars)
+{
+    cout << "Add 5 hard AllDiff constraints for the Zebra problem." << endl;
+    for (int i = 0; i < 5; i++) {
+        int pos = i * 5;
+        IloIntVarArray vars1(env, 5);
+        vars1[0] = vars[0 + pos];
+        vars1[1] = vars[1 + pos];
+        vars1[2] = vars[2 + pos];
+        vars1[3] = vars[3 + pos];
+        vars1[4] = vars[4 + pos];
+        model.add(IloAllDiff(env, vars1));
+    }
+}
+
+void wqueens(IloEnv& env, IloModel& model, IloIntVarArray& vars)
+{
+    cout << "Add 3 hard AllDiff constraints for the Queens problem." << endl;
+
+    model.add(vars); // ensure vars are the main decision variables
+
+    int nqueen = vars.getSize();
+
+    IloIntVarArray vars1(env, nqueen, -2 * nqueen, 2 * nqueen);
+    IloIntVarArray vars2(env, nqueen, -2 * nqueen, 2 * nqueen);
+
+    for (IloInt i = 0; i < nqueen; i++) {
+        model.add(vars1[i] == vars[i] + i);
+        model.add(vars2[i] == vars[i] - i);
+    }
+
+    model.add(IloAllDiff(env, vars));
+    model.add(IloAllDiff(env, vars1));
+    model.add(IloAllDiff(env, vars2));
+}
+
+void quasi(IloEnv& env, IloModel& model, IloIntVarArray& vars)
+{
+    int n = sqrt((double)vars.getSize());
+    cout << "Add " << n * 2 << " hard AllDiff constraints for the \"homogeneous\" QuasiGroup problem." << endl;
+    for (int i = 0; i < n; i++) {
+        int pos = i * n;
+        IloIntVarArray vars1(env, n);
+        for (int j = 0; j < n; j++) {
+            vars1[j] = vars[pos];
+            pos++;
+        }
+        model.add(IloAllDiff(env, vars1));
+    }
+    for (int j = 0; j < n; j++) {
+        int pos = j;
+        IloIntVarArray vars1(env, n);
+        for (int i = 0; i < n; i++) {
+            vars1[i] = vars[pos];
+            pos += n;
+        }
+        model.add(IloAllDiff(env, vars1));
+    }
+}
+
+// Usage: iloglue problem_name.wcsp [verbosity]
+int main(int argc, char** argv)
+{
+    string pbname;
+    int nbvar, nbval, nbconstr;
+    IloEnv env;
+    IloTimer timer(env);
+
+    if (argc >= 3)
+        ToulBar2::verbose = atoi(argv[2]);
+
+    try {
+        IloModel model(env);
+
+        // open the file
+        ifstream file(argv[1]);
+        if (!file) {
+            cerr << "Could not open file " << argv[1] << endl;
+            exit(EXIT_FAILURE);
+        }
+
+        // reads problem name and sizes
+        file >> pbname;
+        file >> nbvar;
+        file >> nbval;
+        file >> nbconstr;
+
+        // creates the objective function
+        IloIntVar obj(env, 0, MAX_COST, "objective");
+
+        // creates the problem variables
+        IloIntVarArray vars(env, nbvar, 0, MAX_DOMAIN_SIZE - 1);
+        model.add(vars);
+        for (int i = 0; i < nbvar; i++) {
+            char* name = new char[16];
+            sprintf(name, "x%d", i);
+            vars[i].setName(name);
+        }
+
+        // creates a global weighted CSP constraint
+        model.add(IloWeightedCSP(env, obj, vars, argv[1]));
+
+        if (strstr(argv[1], "zebra"))
+            zebra(env, model, vars);
+        if (strstr(argv[1], "wqueens"))
+            wqueens(env, model, vars);
+        if (strstr(argv[1], "quasi"))
+            quasi(env, model, vars);
+        if (strstr(argv[1], "alldiff"))
+            alldiff(env, model, vars);
+
+        //     model.add(IloMinimize(env, obj)); DOES NOT WORK???
+
+        IloSolver solver(model);
+        IlogSolver = solver;
+
+        // creates a goal to store the best solution found DOES NOT WORK???
+        //     IloSolution solution(env);
+        //     solution.add(obj);
+        //     solution.add(vars);
+        //     IloGoal storeSolution = IloStoreSolution(env, solution);
+
+        Objective = solver.getIntVar(obj);
+        ProblemSize = nbvar;
+        ProblemVars = solver.getIntVarArray(vars);
+        BestSol = new int[nbvar];
+        BestSol[0] = -1;
+
+        timer.start();
+
+        //    IlcPrintTrace trace(solver, IlcTraceConstraint);
+        //    solver.setTraceMode(IlcTrue);
+        //    solver.setTrace(trace);
+
+        // chooses high propagation level for AllDiff
+        solver.setDefaultFilterLevel(IloAllDiffCt, IloExtendedLevel);
+
+        // finds an optimal solution
+        solver.solve(IloGenerateVars(env, vars) && IloNewSolution(env));
+        Store::restore(0);
+        // restores the best solution and shows it
+        //     solver.solve(IloRestoreSolution(env,solution));
+        //     cout << solver.getStatus() << " Solution" << endl;
+        //     cout << "Optimum: " << solver.getValue(obj) << " in " << solver.getNumberOfFails() << " fails and " << solver.getTime() << " seconds." << endl;
+        cout << "Optimum: " << UpperBound << " in " << solver.getNumberOfFails() << " fails and " << solver.getTime() << " seconds." << endl;
+        if (ToulBar2::verbose >= 0 && BestSol[0] != -1) {
+            cout << "Optimal solution:";
+            for (int i = 0; i < nbvar; i++) {
+                cout << " " << BestSol[i];
+            }
+            cout << endl;
+        }
+        solver.printInformation();
+    } catch (IloException& ex) {
+        cout << "Error: " << ex << endl;
+    }
+    env.end();
+    return 0;
+}
+
+// Create the tuple set
+// IloIntTupleSet(IloEnv env, const int arity);
+// tuple.add(IloIntArray(env, 3, i, j, m));
+// Create a table constraint = constraint in extension
+// IloConstraint IloTableConstraint(const IloEnv env,
+//                                  const IloNumVarArray vars,
+//                                  const IloNumTupleSet set,
+//                                  IloBool compatible);
diff --git a/code/include/tb2/incop/autotuning2.cpp b/code/include/tb2/incop/autotuning2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..abd9b1cae37406f092ae9c5da1e933ff4079cfca
--- /dev/null
+++ b/code/include/tb2/incop/autotuning2.cpp
@@ -0,0 +1,648 @@
+/* Réglage automatique d'un algo de recherche locale à 1 ou 2 paramètres  */
+
+#include <cerrno>
+#include <stdio.h>
+#include <list>
+#include <vector>
+#include <string>
+#include <set>
+#include <algorithm>
+
+using namespace std;
+#include <iostream>
+
+#include <fstream>
+#include "timer.h"
+
+#include "incop.h"
+#include "incoputil.h"
+#include "autotuning2.h"
+
+#include <math.h>
+#include <unistd.h>
+
+extern ofstream* ofile; // le fichier de sortie
+extern Stat_GWW* Statistiques;
+
+Tuning::Tuning(int pinit, int seed1, int nbessai, int maxtun, int bmin, int bmax)
+{
+    parammin = pinit;
+    parammax = 2 * pinit;
+    seed = seed1;
+    nbtries = nbessai;
+    maxtuning = maxtun;
+    stop = 0;
+    boundmin = bmin;
+    boundmax = bmax;
+    referencetime = 0;
+}
+
+DoubleTuning::DoubleTuning(int pinit, int pinit2, int seed1, int nbessai, int maxtun, int maxtun2, int bmin, int b2min, int bmax, int b2max)
+    : Tuning(pinit, seed1, nbessai, maxtun, bmin, bmax)
+{
+    param2min = pinit2;
+    param2max = 2 * pinit2;
+    parambest = pinit;
+    bound2min = b2min;
+    bound2max = b2max;
+    maxtuning2 = maxtun2;
+}
+
+// arret de la mécanique : temps cpu épuisé ou tout trouvé ou arret 1er trouvé
+int endsolve(double maxtime, int nbtries, int pb)
+{
+    return (Statistiques->total_execution_time > maxtime || Statistiques->trouve[pb] == nbtries || (Statistiques->trouve[pb] && Statistiques->stop_trouve));
+}
+
+// algo de réglage d'un paramètre positif par dichotomie  (algorithme à un parametre)
+void Tuning::run(LSAlgorithm* algo, OpProblem* problem, Configuration** population)
+{
+    int minfound = 0;
+    trynumber = 0;
+    double epsilon = 0.01;
+    //  if (algo->methodname=="greedy" || algo->methodname =="descente") epsilon=0.1;
+    onerunparam(problem, algo, population, parammin);
+    if (end())
+        return;
+    trynumber = 1;
+    valuemin = value;
+    onerunparam(problem, algo, population, parammax);
+    if (end())
+        return;
+    valuemax = value;
+    trynumber = 2;
+    if ((valuemax - problem->lower_bound) > (valuemin - problem->lower_bound) * (1 - epsilon)) { // epsilon sur la moyenne pour eviter d'agrandir le voisinage quand fin jamais atteinte quand le parametre a regler est une longueur de voisinage
+        parambest = parammin;
+        valuebest = valuemin;
+        if (parammin == boundmin)
+            minfound = 1;
+        parammin = parammin / 2;
+        while (!minfound && trynumber < maxtuning && !end()) {
+            trynumber++;
+            onerunparam(problem, algo, population, parammin);
+            if (value > valuebest) {
+                minfound = 1;
+            } else if (parammin == boundmin) {
+                minfound = 1;
+                parambest = parammin;
+                valuebest = value;
+            } else {
+                valuebest = value;
+                parammax = parambest;
+                parambest = parammin;
+                parammin = parammin / 2;
+            }
+        }
+    } else {
+        parambest = parammax;
+        valuebest = valuemax;
+        parammax = parammax * 2;
+        while (!minfound && trynumber < maxtuning && !end() && parammax <= boundmax) {
+            trynumber++;
+            onerunparam(problem, algo, population, parammax);
+            if ((value - problem->lower_bound) > (valuebest - problem->lower_bound) * (1 - epsilon)) {
+                minfound = 1;
+            } else {
+                valuebest = value;
+                parammin = parambest;
+                parambest = parammax;
+                parammax = parammax * 2;
+                if (parammax > boundmax)
+                    parammax = boundmax;
+            }
+        }
+    }
+    while (trynumber < maxtuning && parambest - parammin > 1 && parammax - parambest > 1 && !end() && parambest != 0) {
+        trynumber++;
+        *ofile << " parambest " << parambest << " parammin " << parammin << " parammax " << parammax << endl;
+        paramdico1 = (parambest + parammin) / 2;
+        onerunparam(problem, algo, population, paramdico1);
+        if (end())
+            break;
+        valuedico1 = value;
+        trynumber++;
+        paramdico2 = (parambest + parammax) / 2;
+        onerunparam(problem, algo, population, paramdico2);
+        valuedico2 = value;
+        if (valuedico1 < valuebest && valuedico1 < valuedico2) {
+            valuemax = valuebest;
+            parammax = parambest;
+            valuebest = valuedico1;
+            parambest = paramdico1;
+        } else if (valuedico2 < valuebest) {
+            valuemin = valuebest;
+            parammin = parambest;
+            valuebest = valuedico2;
+            parambest = paramdico2;
+        } else {
+            parammin = paramdico1;
+            parammax = paramdico2;
+        }
+    }
+    *ofile << " best param " << parambest << " best value " << valuebest << endl;
+    *ofile << " Fin reglage " << Statistiques->total_execution_time << endl;
+}
+
+// reglage algo a 2 parametres : 2 boucles imbriquées
+// pour chaque valeur du parametre parametre param2, appel  du reglage du parametre param1 (par simplerun)
+void DoubleTuning::run(LSAlgorithm* algo, OpProblem* problem, Configuration** population)
+{
+    int minfound = 0;
+    trynumber1 = 0;
+    int bestparam1 = parambest;
+    double epsilon = 0.01;
+    *ofile << " reglage boucle externe " << endl;
+    //  if (algo->methodname=="tabu" || algo->methodname == "tabugreedy") epsilon=0.1;
+    simplerun(algo, problem, population, param2min);
+    trynumber1 = 1;
+    if (end())
+        return;
+    int param1min = parambest;
+    value2min = valuebest;
+    simplerun(algo, problem, population, param2max);
+    trynumber1 = 2;
+    if (end())
+        return;
+    int param1max = parambest;
+    value2max = valuebest;
+    if ((value2max - problem->lower_bound) > (value2min - problem->lower_bound) * (1 - epsilon)) { // epsilon sur la moyenne pour eviter d'agrandir le voisinage quand fin jamais atteinte
+        param2best = param2min;
+        value2best = value2min;
+        if (param2min == bound2min)
+            minfound = 1;
+        param2min = param2min / 2;
+        bestparam1 = param1min;
+        while (!minfound && trynumber1 < maxtuning2 && !end()) {
+            trynumber1++;
+            simplerun(algo, problem, population, param2min);
+            if (valuebest > value2best) {
+                minfound = 1;
+            } else if (param2min == bound2min) {
+                minfound = 1;
+                param2best = param2min;
+                bestparam1 = parambest;
+                value2best = valuebest;
+            } else {
+                value2best = valuebest;
+                param2max = param2best;
+                param2best = param2min;
+                bestparam1 = parambest;
+                param2min = param2min / 2;
+            }
+        }
+    } else {
+        param2best = param2max;
+        value2best = value2max;
+        param2max = param2max * 2;
+        bestparam1 = param1max;
+        while (!minfound && trynumber1 < maxtuning2 && !end() && param2max <= bound2max) {
+            trynumber1++;
+            simplerun(algo, problem, population, param2max);
+            if ((valuebest - problem->lower_bound) > (value2best - problem->lower_bound) * (1 - epsilon)) {
+                minfound = 1;
+            } else {
+                value2best = valuebest;
+                param2min = param2best;
+                param2best = param2max;
+                bestparam1 = parambest;
+                param2max = param2max * 2;
+                if (param2max > bound2max)
+                    param2max = bound2max;
+            }
+        }
+    }
+    while (trynumber1 < maxtuning2 && param2best - param2min > 1 && param2max - param2best > 1 && !end() && param2best != 0) {
+        trynumber1++;
+        *ofile << " param2best " << param2best << " param2min " << param2min << " param2max " << param2max << endl;
+        param2dico1 = (param2best + param2min) / 2;
+        simplerun(algo, problem, population, param2dico1);
+        if (end())
+            break;
+        int param1dico1 = parambest;
+        value2dico1 = valuebest;
+        //     *ofile << " valeur dico 1 " << value2dico1 << endl;
+        trynumber1++;
+        param2dico2 = (param2best + param2max) / 2;
+        simplerun(algo, problem, population, param2dico2);
+        int param1dico2 = parambest;
+        value2dico2 = valuebest;
+        //     *ofile << " valeur dico 2 " << value2dico2 << endl;
+        if (value2dico1 < value2best && value2dico1 < value2dico2) {
+            value2max = value2best;
+            param2max = param2best;
+            value2best = value2dico1;
+            param2best = param2dico1;
+            bestparam1 = param1dico1;
+        } else if (value2dico2 < value2best) {
+            value2min = value2best;
+            param2min = param2best;
+            value2best = value2dico2;
+            param2best = param2dico2;
+            bestparam1 = param1dico2;
+        } else {
+            param2min = param2dico1;
+            param2max = param2dico2;
+        }
+    }
+    parambest = bestparam1; // le meilleur reglage de param1 correspondant au meilleur de param2
+    *ofile << " best param2 " << param2best << " best param1 " << parambest << " best value " << value2best << endl;
+    *ofile << " Fin reglage " << Statistiques->total_execution_time << endl;
+}
+
+void DoubleTuning::simplerun(LSAlgorithm* algo, OpProblem* problem, Configuration** population, int param2)
+{
+    int minfound = 0;
+    trynumber = 0;
+    double epsilon = 0.01;
+
+    parammin = parambest;
+    if (parammin == 0)
+        parammin = 1; // pour ne pas stagner en 0
+    parammax = 2 * parammin;
+    *ofile << "reglage boucle intérieure "
+           << "  param extérieur = " << param2 << " param interieur " << parambest << endl;
+    //  if (algo->methodname=="tabu" || algo->methodname == "tabugreedy") epsilon=0.1;
+    //  if (algo->methodname=="idwminmax") epsilon=0.2;
+    if (algo->methodname == "idwaminmax" || algo->methodname == "idwbminmax" || algo->methodname == "idwupk" || algo->methodname == "idwgrupk") {
+        boundmax = param2;
+        if (parammax > boundmax) {
+            parammax = boundmax;
+            parammin = boundmax / 2;
+        }
+    }
+    onerun2param(problem, algo, population, parammin, param2);
+    trynumber = 1;
+    if (end())
+        return;
+    valuemin = value;
+    onerun2param(problem, algo, population, parammax, param2);
+    trynumber = 2;
+    if (end())
+        return;
+    valuemax = value;
+    if ((valuemax - problem->lower_bound) > (valuemin - problem->lower_bound) * (1 - epsilon)) { // epsilon sur la moyenne pour eviter d'agrandir le voisinage quand fin jamais atteinte
+        parambest = parammin;
+        valuebest = valuemin;
+        if (parammin <= boundmin)
+            minfound = 1;
+        parammin = parammin / 2;
+        while (!minfound && trynumber < maxtuning && !end()) {
+            trynumber++;
+            onerun2param(problem, algo, population, parammin, param2);
+            if (value > valuebest) {
+                minfound = 1;
+            } else if (parammin == boundmin) {
+                minfound = 1;
+                parambest = parammin;
+                valuebest = value;
+            } else {
+                valuebest = value;
+                parammax = parambest;
+                parambest = parammin;
+                parammin = parammin / 2;
+            }
+        }
+    } else {
+        parambest = parammax;
+        valuebest = valuemax;
+        if (parammax < boundmax) {
+            parammax = parammax * 2;
+            while (!minfound && trynumber < maxtuning && !end() && parammax <= boundmax) {
+                trynumber++;
+                onerun2param(problem, algo, population, parammax, param2);
+                if ((value - problem->lower_bound) > (valuebest - problem->lower_bound) * (1 - epsilon)) {
+                    minfound = 1;
+                } else {
+                    valuebest = value;
+                    parammin = parambest;
+                    parambest = parammax;
+                    parammax = parammax * 2;
+                    if (parammax > boundmax)
+                        parammax = boundmax;
+                }
+            }
+        }
+    }
+    if (parammax > boundmax)
+        parammax = boundmax;
+    while (trynumber < maxtuning && parambest - parammin > 1 && parammax - parambest > 1 && !end() && parambest != 0) {
+        trynumber++;
+        *ofile << " parambest " << parambest << " parammin " << parammin << " parammax " << parammax << endl;
+        paramdico1 = (parambest + parammin) / 2;
+        onerun2param(problem, algo, population, paramdico1, param2);
+        if (end())
+            break;
+        valuedico1 = value;
+        trynumber++;
+        paramdico2 = (parambest + parammax) / 2;
+        if (parammax > boundmax)
+            parammax = boundmax;
+        onerun2param(problem, algo, population, paramdico2, param2);
+        valuedico2 = value;
+        if (valuedico1 < valuebest && valuedico1 < valuedico2) {
+            valuemax = valuebest;
+            parammax = parambest;
+            valuebest = valuedico1;
+            parambest = paramdico1;
+        } else if (valuedico2 < valuebest) {
+            valuemin = valuebest;
+            parammin = parambest;
+            valuebest = valuedico2;
+            parambest = paramdico2;
+        } else {
+            parammin = paramdico1;
+            parammax = paramdico2;
+        }
+    }
+    *ofile << " param2 " << param2 << " best param1 " << parambest << " best value " << valuebest << endl;
+    *ofile << " Fin reglage interieur " << Statistiques->total_execution_time << endl;
+}
+
+// premier essai : pour étalonner le temps
+int Tuning::firsttry()
+{
+    return (trynumber == 0);
+}
+
+int DoubleTuning::firsttry()
+{
+    return ((trynumber == 0) && (trynumber1 == 0));
+}
+
+// condition arret du reglage : tous essais ont trouvé ou 1 essai a trouvé (cas arret 1 solution)
+int Tuning::end()
+{
+    //  *ofile << "appel de end " << stop << endl;
+    return (Statistiques->trouve[Statistiques->current_pb] == nbtries || stop);
+}
+
+// un reglage : le 1er essai sert à regler la longueur de marche pour effectuer l'essai dans le
+// temps de référence (sauf pour le recuit simulé)
+void Tuning::onerun(OpProblem* problem, LSAlgorithm* algo, Configuration** population)
+{
+
+    Statistiques->init_run();
+    if (!firsttry()
+        && (algo->methodname != "simann")) {
+        executer_essai(problem, algo, population, 1, seed, 0);
+        float trytime = Statistiques->execution_time_try[0];
+        if (Statistiques->trouve[Statistiques->current_pb] == 0) {
+            algo->walklength = (int)(algo->walklength * referencetime / trytime);
+        }
+
+        *ofile << " longueur marche essai " << algo->walklength << endl;
+    }
+
+    Statistiques->init_run();
+
+    for (int nessai = 0; nessai < nbtries; nessai++) {
+        executer_essai(problem, algo, population, 1, seed, nessai);
+        if (Statistiques->stop_trouve && Statistiques->trouve[Statistiques->current_pb]) {
+            stop = 1;
+            break;
+        }
+    }
+    Statistiques->current_try++;
+    //ecriture_stat_probleme();
+    if (firsttry())
+        //    referencetime = Statistiques->execution_time_try[0];
+        referencetime = Statistiques->average_execution_time;
+    value = Statistiques->cost_meanvalue;
+}
+
+// le reglage automatique d'un parametre pour une longueur de marche donnée + le lancement de l'algorithme avec
+// ce réglage
+int autotuning(LSAlgorithm* algo, Configuration** population, OpProblem* problem, int graine1, int nbessais, int tuninit, int tuningwalkrate, int tuningmaxtries)
+{
+    int bmin = 0;
+    int bmax = RAND_MAX;
+    if (algo->methodname == "idwa" || algo->methodname == "idwb" || algo->methodname == "idwbsn")
+        bmin = 1;
+    else if (algo->methodname == "idwgra" || algo->methodname == "idwgrb")
+        bmin = 5; // voisinage au moins de longueur 1
+    int walklength1 = algo->walklength;
+    algo->walklength = walklength1 / tuningwalkrate; // marche divisee par tuningwalkrate pour le reglage
+    *ofile << " reglage parametre : longueur marche " << algo->walklength << endl;
+    Tuning tun(tuninit, graine1, nbessais, tuningmaxtries, bmin, bmax); // objet Tuning
+    tun.run(algo, problem, population); // reglage
+    // mise en place de la recherche avec la valeur du parametre determinee par le reglage
+    algo->walklength = walklength1;
+    tun.trynumber = 0;
+    if (!tun.end())
+        tun.onerunparam(problem, algo, population, tun.parambest);
+    return tun.parambest;
+}
+
+int nb_parameters(LSAlgorithm* algo)
+{
+    if (algo->methodname == "tabu" || algo->methodname == "incrtabu"
+        || algo->methodname == "idwatabu" || algo->methodname == "idwbtabu"
+        || algo->methodname == "idwgratabu" || algo->methodname == "idwgrbtabu"
+        || algo->methodname == "idwaincrtabu" || algo->methodname == "idwbincrtabu"
+        || algo->methodname == "idwgraincrtabu" || algo->methodname == "idwgrbincrtabu"
+        || algo->methodname == "idwaminmax" || algo->methodname == "idwbminmax"
+        || algo->methodname == "idwupk" || algo->methodname == "idwgrupk")
+        return 2;
+    else
+        return 1;
+}
+
+// algo complet
+void autosolving(LSAlgorithm* algo, Configuration** population, OpProblem* problem, int numpb, int graine1, int nbessais, double maxtime, int initwalklength)
+{
+    if (nb_parameters(algo) == 2)
+        autosolving2(algo, population, problem, numpb, graine1, nbessais, maxtime, initwalklength);
+    else
+        autosolving1(algo, population, problem, numpb, graine1, nbessais, maxtime, initwalklength);
+}
+
+// algo complet resolution avec reglage algo à un parametre
+void autosolving1(LSAlgorithm* algo, Configuration** population, OpProblem* problem, int numpb, int graine1, int nbessais, double maxtime, int initwalklength)
+{
+    int pas = 4; // le pas de multiplication de longueur de marche
+    int parameter = 100; // valeur initiale 100
+    int tuningwalkrate = 50; // la division de la marche pour le réglage
+    int tuningmaxtries = 10; // le maximum d'essais pour la dichotomie
+    algo->walklength = initwalklength;
+    while (!endsolve(maxtime, nbessais, numpb)) {
+        *ofile << " ESSAI RESOLUTION :  longueur marche : " << algo->walklength << endl;
+        int tuninit = parameter;
+        if (tuninit == 0)
+            tuninit = 1; // pour ne pas stagner avec la valeur 0
+        parameter = autotuning(algo, population, problem, graine1, nbessais, tuninit, tuningwalkrate, tuningmaxtries);
+        if (algo->walklength > RAND_MAX / pas)
+            break;
+        else
+            algo->walklength = pas * algo->walklength;
+        *ofile << " Temps total utilisé " << Statistiques->total_execution_time << endl;
+    }
+}
+
+// réglage de 2 parametres  : parameter1 et parameter2 (en sortie) + lancement algo avec ce reglage
+void autotuning2(LSAlgorithm* algo, Configuration** population, OpProblem* problem, int graine1, int nbessais, int&
+                                                                                                                   parameter1,
+    int& parameter2, int tuningwalkrate, int tuningmaxtries, int tuningmaxtries2)
+{
+    int bmin = 1;
+    if (algo->methodname == "idwgrupk")
+        bmin = 5;
+    int b2min = 1;
+    int bmax = RAND_MAX;
+    int b2max = RAND_MAX;
+    int walklength1 = algo->walklength;
+    algo->walklength = walklength1 / tuningwalkrate; // marche divisee par tuningwalkrate pour le reglage
+    *ofile << " reglage parametre : longueur marche " << algo->walklength << endl;
+    DoubleTuning tun(parameter1, parameter2, graine1, nbessais, tuningmaxtries, tuningmaxtries2, bmin, b2min, bmax, b2max); // objet DoubleTuning
+    tun.run(algo, problem, population); // reglage
+    // mise en place de la recherche avec la valeur du parametre determinee par le reglage
+    algo->walklength = walklength1;
+    tun.trynumber = 0;
+    tun.trynumber1 = 0;
+    if (!tun.end()) {
+        tun.onerun2param(problem, algo, population, tun.parambest, tun.param2best);
+    }
+    parameter1 = tun.parambest;
+    parameter2 = tun.param2best;
+}
+
+// algo complet resolution avec reglage algo à deux paramètres
+void autosolving2(LSAlgorithm* algo, Configuration** population, OpProblem* problem, int numpb, int graine1, int nbessais, double maxtime, int initwalklength)
+{
+    int pas = 4; // le pas de multiplication de longueur de marche
+    int parameter1 = 10; // valeur initiale 10 pour la liste taboue -> mettre une méthode ; valeur initiale min
+    // pour idwminmax et spare-neighbor pour idwupk et idwupgrk
+    int parameter2 = 100; // valeur initiale 100
+    int tuningwalkrate = 50; // la division de la marche pour le réglage
+    int tuningmaxtries = 5; // le maximum d'essais pour les dichotomies  (parametre intérieur)
+    int tuningmaxtries2 = 5; // le maximum d'essais pour les dichotomies (parametre extérieur)
+    algo->walklength = initwalklength;
+    while (!endsolve(maxtime, nbessais, numpb)) {
+        *ofile << " ESSAI RESOLUTION :  longueur marche : " << algo->walklength << endl;
+        if (parameter1 == 0)
+            parameter1 = 1; // pour ne pas stagner avec la valeur 0
+        if (parameter2 == 0)
+            parameter2 = 1; // pour ne pas stagner avec la valeur 0
+        autotuning2(algo, population, problem, graine1, nbessais, parameter1, parameter2, tuningwalkrate, tuningmaxtries, tuningmaxtries2);
+        if (algo->walklength > RAND_MAX / pas)
+            break;
+        else
+            algo->walklength = pas * algo->walklength;
+        *ofile << " Temps total utilisé " << Statistiques->total_execution_time << endl;
+    }
+}
+
+void DoubleTuning::doubleparameterwrite(LSAlgorithm* algo, int parameter1, int parameter2)
+{
+    *ofile << "methode " << algo->methodname << " ";
+    if (algo->methodname == "idwatabu" || algo->methodname == "idwbtabu" || algo->methodname == "idwaincrtabu" || algo->methodname == "idwbincrtabu")
+        *ofile << " valeur parametre voisinage " << parameter2 << " longueur liste taboue " << parameter1 << endl;
+    else if (algo->methodname == "idwgratabu" || algo->methodname == "idwgrbtabu" || algo->methodname == "idwgraincrtabu" || algo->methodname == "idwgrbincrtabu" || algo->methodname == "tabu" || algo->methodname == "incrtabu")
+        *ofile << " valeur parametre voisinage " << parameter2 / 5 << " longueur liste taboue " << parameter1 << endl;
+    else if (algo->methodname == "idwaminmax" || algo->methodname == "idwbminmax")
+        *ofile << " valeur parametre voisinage  max voisins " << parameter2 << " min voisins " << parameter1 << endl;
+    else if (algo->methodname == "idwupk")
+        *ofile << " valeur parametre voisinage  max voisins " << parameter2 << " remontée " << parameter1 << endl;
+    else if (algo->methodname == "idwgrupk")
+        *ofile << " valeur parametre voisinage  max voisins " << parameter2 / 5 << " remontée " << parameter1 / 5 << endl;
+}
+void Tuning::oneparameterwrite(LSAlgorithm* algo, int parameter)
+{
+    *ofile << "methode " << algo->methodname << " ";
+    if (algo->methodname == "idwa" || algo->methodname == "idwb" || algo->methodname == "idwbsn")
+        *ofile << " valeur parametre voisinage " << parameter << endl;
+    else if (algo->methodname == "idwgra" || algo->methodname == "idwgrb")
+        *ofile << " valeur parametre voisinage " << parameter / 5 << endl;
+    else if (algo->methodname == "metropolis")
+        *ofile << " valeur temperature " << ((double)parameter) / 100 << endl;
+    else if (algo->methodname == "simann")
+        *ofile << " valeur temperature initiale " << ((double)parameter / 100) << endl;
+}
+
+// pour le réglage automatique d'un paramètre
+// indique selon l'algo le parametre à regler et lance le reglage (onerun)
+void Tuning::onerunparam(OpProblem* problem, LSAlgorithm* algo, Configuration** population, int parameter)
+{
+    if (algo->methodname == "idwa" || algo->methodname == "idwbsn") {
+        algo->nbhsearch->maxneighbors = parameter;
+        algo->nbhsearch->minneighbors = 1;
+        algo->nbhsearch->finished = 1;
+    } else if (algo->methodname == "idwb") {
+        algo->nbhsearch->maxneighbors = parameter;
+        algo->nbhsearch->minneighbors = 1;
+        algo->nbhsearch->finished = parameter;
+    } else if (algo->methodname == "idwgra") { // minvoisins=maxvoisins - sortie any (finished=1)
+        algo->nbhsearch->maxneighbors = parameter / 5; // on commence à 20
+        algo->nbhsearch->minneighbors = parameter / 5;
+        algo->nbhsearch->finished = 1;
+    }
+
+    else if (algo->methodname == "idwgrb") { // minvoisins=maxvoisins - sortie best (finished = max)
+        algo->nbhsearch->maxneighbors = parameter / 5; // on commence à 20
+        algo->nbhsearch->minneighbors = parameter / 5;
+        algo->nbhsearch->finished = parameter / 5;
+    }
+
+    else if (algo->methodname == "metropolis") {
+        algo->mheur->adjustparameter(parameter);
+    }
+
+    else if (algo->methodname == "simann") {
+        ((SimulatedAnnealing*)(algo->mheur))->walklength = algo->walklength;
+        algo->mheur->adjustparameter(parameter);
+    }
+    oneparameterwrite(algo, parameter);
+    onerun(problem, algo, population);
+    oneparameterwrite(algo, parameter);
+}
+
+// pour le reglage automatique de 2 paramètres
+void DoubleTuning::onerun2param(OpProblem* problem, LSAlgorithm* algo, Configuration** population, int parameter1, int parameter2)
+{
+    if (algo->methodname == "idwatabu" || algo->methodname == "idwaincrtabu") {
+        algo->nbhsearch->maxneighbors = parameter2;
+        algo->mheur->adjustparameter(parameter1);
+        algo->nbhsearch->finished = 1;
+    } else if (algo->methodname == "idwbtabu" || algo->methodname == "idwbincrtabu") {
+        algo->nbhsearch->maxneighbors = parameter2;
+        algo->mheur->adjustparameter(parameter1);
+        algo->nbhsearch->finished = parameter2;
+    } else if (algo->methodname == "idwgratabu" || algo->methodname == "idwgraincrtabu") {
+        algo->nbhsearch->maxneighbors = parameter2 / 5;
+        algo->nbhsearch->minneighbors = parameter2 / 5;
+        algo->mheur->adjustparameter(parameter1);
+        algo->nbhsearch->finished = 1;
+    } else if (algo->methodname == "idwgrbtabu" || algo->methodname == "idwgrbincrtabu") {
+        algo->nbhsearch->maxneighbors = parameter2 / 5;
+        algo->nbhsearch->minneighbors = parameter2 / 5;
+        algo->mheur->adjustparameter(parameter1);
+        algo->nbhsearch->finished = parameter2 / 5;
+    } else if (algo->methodname == "tabu" || algo->methodname == "incrtabu") {
+        algo->nbhsearch->maxneighbors = parameter2 / 5; // on commence max = 20
+        algo->nbhsearch->minneighbors = parameter2 / 5; // min = max
+        algo->nbhsearch->finished = parameter2 / 5; //  sortie = max
+        algo->mheur->adjustparameter(parameter1);
+    }
+
+    else if (algo->methodname == "idwaminmax") {
+        algo->nbhsearch->maxneighbors = parameter2;
+        algo->nbhsearch->minneighbors = parameter1;
+        algo->nbhsearch->finished = 1;
+    } else if (algo->methodname == "idwbminmax") {
+        algo->nbhsearch->maxneighbors = parameter2;
+        algo->nbhsearch->minneighbors = parameter1;
+        algo->nbhsearch->finished = parameter2;
+    } else if (algo->methodname == "idwupk") {
+        algo->nbhsearch->maxneighbors = parameter2;
+        algo->nbhsearch->minneighbors = 1;
+        algo->nbhsearch->finished = parameter1;
+    }
+
+    else if (algo->methodname == "idwgrupk") {
+        algo->nbhsearch->maxneighbors = parameter2 / 5;
+        algo->nbhsearch->minneighbors = parameter2 / 5;
+        algo->nbhsearch->finished = parameter1 / 5;
+    }
+    doubleparameterwrite(algo, parameter1, parameter2);
+    onerun(problem, algo, population);
+    doubleparameterwrite(algo, parameter1, parameter2);
+}
diff --git a/code/include/tb2/incop/autotuning2.h b/code/include/tb2/incop/autotuning2.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d7c33a50f4656b367871958aeb8868b325ef11e
--- /dev/null
+++ b/code/include/tb2/incop/autotuning2.h
@@ -0,0 +1,78 @@
+#ifndef INCOP_AUTOTUNING2_HPP_
+#define INCOP_AUTOTUNING2_HPP_
+
+/* Reglage automatique d'un algorithme à un paramètre */
+/** Automatic tuning of a local search algorithm with one parameter */
+
+
+class Tuning {
+public:
+    int param;
+    int parammin;
+    int parammax;
+    int parambest;
+    int paramdico1;
+    int paramdico2;
+    int boundmin;
+    int boundmax;
+    double value;
+    double valuemin;
+    double valuemax;
+    double valuebest;
+    double valuedico1;
+    double valuedico2;
+    int seed;
+    int nbtries;
+    int maxtuning;
+    int trynumber;
+    int stop;
+    float referencetime;
+    virtual int firsttry();
+    Tuning(int pinit, int seed1, int nbessai, int maxtun, int bmin, int bmax);
+    virtual void run(LSAlgorithm* algo, OpProblem* problem, Configuration** configuration);
+    virtual void onerun(OpProblem* problem, LSAlgorithm* algo, Configuration** population);
+    virtual void onerunparam(OpProblem* problem, LSAlgorithm* algo, Configuration** population, int param);
+    void oneparameterwrite(LSAlgorithm* algo, int parameter);
+    virtual int end();
+};
+
+void autosolving(LSAlgorithm* algo, Configuration** configuration, OpProblem* problem, int npb, int graine1, int nbessais, double maxtime, int initwalklength);
+int autotuning(LSAlgorithm* algo, Configuration** population, OpProblem* problem, int graine1, int nbessais);
+int endoslve(double maxtime);
+
+/* Réglage automatique d'un algorithme à deux paramètres */
+/** Automatic tuning of a local search algorithm with two parameters */
+class DoubleTuning : public Tuning {
+public:
+    int param2min;
+    int param2max;
+    int param2best;
+    int param2dico1;
+    int param2dico2;
+    int bound2min;
+    int bound2max;
+    double value2;
+    double value2min;
+    double value2max;
+    double value2best;
+    double value2dico1;
+    double value2dico2;
+    int trynumber1;
+    int maxtuning2;
+    int firsttry();
+    DoubleTuning(int pinit1, int pinit2, int seed1, int nbessai, int maxtun, int maxtun2, int bmin, int b2min, int bmax, int b2max);
+    void run(LSAlgorithm* algo, OpProblem* problem, Configuration** configuration);
+    void onerun2param(OpProblem* problem, LSAlgorithm* algo, Configuration** configuration, int parameter1, int parameter2);
+    void simplerun(LSAlgorithm* algo, OpProblem* problem, Configuration** configuration, int parameter);
+    void doubleparameterwrite(LSAlgorithm* algo, int parameter1, int parameter2);
+};
+
+void autosolving2(LSAlgorithm* algo, Configuration** configuration, OpProblem* problem, int npb, int graine1, int nbessais, double maxtime, int initwalklength);
+void autosolving1(LSAlgorithm* algo, Configuration** configuration, OpProblem* problem, int npb, int graine1, int nbessais, double maxtime, int initwalklength);
+
+void autotuning2(LSAlgorithm* algo, Configuration** population, OpProblem* problem, int graine1, int nbessais, int&
+                                                                                                                   parameter1,
+    int& parameter2, int tuningwalkrate, int tuningmaxtries);
+int endoslve(double maxtime);
+
+#endif /* INCOP_AUTOTUNING2_HPP_ */
diff --git a/code/include/tb2/incop/csproblem.cpp b/code/include/tb2/incop/csproblem.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5b5cabb6957b6afd78499b1ad6972127a2e6e393
--- /dev/null
+++ b/code/include/tb2/incop/csproblem.cpp
@@ -0,0 +1,308 @@
+
+/* méthodes des classes  OpProblem, CSProblem, BinaryCSProblem  */
+
+#include <list>
+#include <vector>
+#include <string>
+#include <set>
+#include <algorithm>
+
+using namespace std;
+#include <fstream>
+#include <stdio.h>
+#include "incop.h"
+#include "csproblem.h"
+
+extern ofstream* ofile; // le fichier de sortie
+
+void CSProblem::init_domains(int nbvar, int s)
+{
+    for (int i = 0; i < nbvar; i++)
+        domains[i] = 0;
+}
+
+/* un seul domaine de taille s (valeurs de 0 à s-1) */
+void CSProblem::init_tabdomains(int s)
+{
+    tabdomains[0].clear();
+    for (int i = 0; i < s; i++)
+        tabdomains[0].push_back(i);
+}
+
+/* calcul des variables en conflit : on reconstruit le vecteur des variables en conflit*/
+void CSProblem::compute_var_conflict(Configuration* configuration)
+{
+    configuration->var_conflict.clear();
+    for (int i = 0; i < nbvar; i++) {
+        if (configuration->get_conflicts_problem(this, i, configuration->config[i]) != 0)
+            configuration->var_conflict.push_back(i);
+    }
+}
+
+/* constructeur : par defaut, la borne inférieure (condition d'arret) est 0 */
+
+int CSProblem::variable_domainsize(int var)
+{
+    return tabdomains[domains[var]].size();
+}
+
+CSProblem::CSProblem(int nvar, int nconst)
+{
+    nbvar = nvar;
+    nbconst = nconst;
+    lower_bound = 0;
+}
+
+CSProblem::CSProblem(int nvar, int nconst, int lower)
+{
+    nbvar = nvar;
+    nbconst = nconst;
+    lower_bound = lower;
+}
+
+BinaryCSProblem::BinaryCSProblem(int nbvar, int nbconst)
+    : CSProblem(nbvar, nbconst)
+{
+    ;
+}
+BinaryCSProblem::BinaryCSProblem(int nbvar, int nbconst, int lower)
+    : CSProblem(nbvar, nbconst, lower)
+{
+    ;
+}
+
+CSProblem::~CSProblem()
+{
+    delete currentmove;
+    delete firstmove;
+    delete bestmove;
+}
+
+void CSProblem::init_population(Configuration** population, int populationsize)
+{
+    for (int i = 0; i < populationsize; i++)
+        population[i] = create_configuration();
+    best_config = create_configuration();
+}
+
+/* par defaut , pas d'incrementalité */
+Configuration* CSProblem::create_configuration()
+{
+    return (new Configuration(nbvar));
+}
+
+void CSProblem::best_config_analysis()
+{
+    ;
+}
+
+void CSProblem::random_configuration(Configuration* configuration)
+{
+    for (int j = 0; j < nbvar; j++) {
+        int indice = (int)(mydrand() * variable_domainsize(j));
+        configuration->config[j] = index2value(indice, j);
+        //        *ofile << " j " << j << " " << configuration->config[j] << endl;
+    }
+}
+
+/* choix aleatoire d'une variable */
+int CSProblem::random_variable(Configuration* configuration)
+{
+    //return  (int) (mydrand() * nbvar);
+    return (myrand() % nbvar);
+}
+
+/* cas des variables en conflit : reduction de la taille du voisinage au max(voisinage, nb var conflits * taille_domaine) */
+void CSProblem::adjust_parameters(Configuration* configuration, int& maxneighbors, int& minneighbors)
+{
+    if (maxneighbors > (int)(configuration->var_conflict.size()) * (domainsize - 1))
+        maxneighbors = configuration->var_conflict.size() * (domainsize - 1);
+    if (minneighbors > (int)(configuration->var_conflict.size()) * (domainsize - 1))
+        minneighbors = configuration->var_conflict.size() * (domainsize - 1);
+}
+
+/* on choisit une variable en conflit */
+int CSProblem::random_conflict_variable(Configuration* configuration)
+{
+    // *ofile << "VC " << configuration->var_conflict.size() << endl;
+    // return configuration->var_conflict[(int) (mydrand() * configuration->var_conflict.size())];
+    return configuration->var_conflict[myrand() % configuration->var_conflict.size()];
+}
+
+/* choix aléatoire d'une valeur autre que la courante : renvoie l'indice de la valeur*/
+int CSProblem::random_value(int var, int val)
+
+{
+    if (variable_domainsize(var) == 1)
+        return 0; // domaine a une valeur
+    // int  val_changee = (int) (mydrand() * (tabdomains[domains[var]].size()-1));
+    int val_changee = myrand() % (tabdomains[domains[var]].size() - 1);
+    if (index2value(val_changee, var) >= val)
+        val_changee++;
+    return val_changee;
+}
+
+/* une valeur du domaine de var minimisant les conflits
+  autre que la courante (val)  , tirage aléatoire
+entre valeurs équivalentes : renvoie l'indice de la valeur */
+int CSProblem::min_conflict_value(int var, int val, Configuration* configuration)
+{
+    if (variable_domainsize(var) == 1)
+        return 0; // domaine a une valeur
+    Long minpromises = LONG_MAX;
+    Long promises = 0;
+    int k1 = 1;
+    int j = 0;
+    for (int i = 0; i < (int)(tabdomains[domains[var]].size()); i++) {
+        if (index2value(i, var) == val)
+            i++;
+        if (i == variable_domainsize(var))
+            break;
+        promises = configuration->get_conflicts_problem(this, var, index2value(i, var));
+        if (promises < minpromises) {
+            minpromises = promises;
+            j = i;
+            k1 = 1;
+        } else if (promises == minpromises) {
+            k1++;
+            if (mydrand() < 1 / (double)k1)
+                j = i;
+        }
+    }
+    return j;
+}
+
+/* détermination du prochain mouvement a tester et évaluation de ce mouvement */
+void CSProblem::next_move(Configuration* configuration, Move* move, NeighborhoodSearch* nbhs)
+{
+    if (nbhs->var_conflict)
+        ((CSPMove*)move)->variable = random_conflict_variable(configuration);
+    else
+        ((CSPMove*)move)->variable = random_variable(configuration);
+    // tirage d'un voisin : la valeur n'est pour le moment que l'indice dans le domaine
+    if (nbhs->val_conflict)
+        ((CSPMove*)move)->value = min_conflict_value(((CSPMove*)move)->variable,
+            configuration->config[((CSPMove*)move)->variable], configuration);
+    else
+        ((CSPMove*)move)->value = random_value(((CSPMove*)move)->variable,
+            configuration->config[((CSPMove*)move)->variable]);
+    // passage de l'indice à la valeur
+    ((CSPMove*)move)->value = index2value(((CSPMove*)move)->value, ((CSPMove*)move)->variable);
+
+    move->valuation = move_evaluation(configuration, move);
+    // *ofile << ((CSPMove*)move)->variable << " " << ((CSPMove*)move)->value << " " << move->valuation << endl;
+}
+
+/* exécution d'un mouvement  : fonction de base - affectation du coût du mouvement*/
+void OpProblem::move_execution(Configuration* configuration, Move* move)
+{
+    configuration->valuation = move->valuation;
+}
+
+/* execution d'un mouvement pour un CSP */
+void CSProblem::move_execution(Configuration* configuration, Move* move)
+{
+    OpProblem::move_execution(configuration, move);
+    configuration->config[((CSPMove*)move)->variable] = ((CSPMove*)move)->value;
+}
+
+/* calcul incremental d'un changement de valeur  : valable pour tout type de configuration (noincr, incr, fullincr)*/
+Long CSProblem::move_evaluation(Configuration* configuration, Move* move)
+{
+    int var_changee = ((CSPMove*)move)->variable;
+    int val_changee = ((CSPMove*)move)->value;
+    //  *ofile << " move evaluation " << var_changee << " " << val_changee << " "
+    //	 << configuration->valuation << " " <<
+    //    configuration->get_conflicts_problem(this,var_changee,val_changee)
+    //	 << " " <<
+    //    configuration->get_conflicts_problem(this,var_changee,configuration->config[var_changee])
+    //	 << endl;
+    return (configuration->valuation + configuration->get_conflicts_problem(this, var_changee, val_changee)
+        - configuration->get_conflicts_problem(this, var_changee, configuration->config[var_changee]));
+}
+
+/* optimisation fullincr  :
+   dans le cas full incr,  tout a été préparé dans le tableau tabconflicts qu'il suffit de consulter
+cette optimisation semble inutile */
+/*
+int CSProblem::move_evaluation
+                    (Configuration* configuration,Move* move)
+{ int var_changee = ((CSPMove*)move)-> variable;
+  int val_changee = ((CSPMove*)move)-> value;
+  //  *ofile << " move evaluation " << var_changee << " " << val_changee << " "
+
+  return (configuration->valuation+
+	   ((FullincrCSPConfiguration*)configuration)->tabconflicts[var_changee][val_changee]
+	  -((FullincrCSPConfiguration*)configuration)->tabconflicts[var_changee][configuration->config[var_changee]]);
+}
+*/
+
+/* Ecriture de la meilleure solution trouvée (best_config) */
+void CSProblem::best_config_write()
+{
+    *ofile << " meilleure solution " << endl;
+    for (int i = 0; i < nbvar; i++)
+        *ofile << " variable " << i << " : " << best_config->config[i] << endl;
+}
+
+/* la création des 3 mouvements utilisés par un algo de recherche locale */
+void OpProblem::allocate_moves()
+{
+    firstmove = create_move();
+    bestmove = create_move();
+    currentmove = create_move();
+}
+
+/* vérification du cout de la meilleure solution en le recalculant */
+void OpProblem::best_config_verification()
+{
+    Long value1 = best_config->valuation;
+    Long value2 = config_evaluation(best_config);
+    *ofile << " verification " << value1 << " " << value2 << endl;
+}
+
+/* creation d'un mouvement CSPMove */
+Move* CSProblem::create_move()
+{
+    CSPMove* move = new CSPMove();
+    return (Move*)move;
+}
+
+// creation du tableau des contraintes  : constraint1[i][j] = numero de la contrainte entre i et j (i<j)
+int** csp_constraintdatastructure(int nbvar)
+{
+    int** constraint1 = new int*[nbvar];
+    for (int i = 0; i < nbvar; i++) {
+        constraint1[i] = new int[nbvar];
+        for (int j = 0; j < nbvar; j++)
+            constraint1[i][j] = 0;
+    }
+    return constraint1;
+}
+
+/* mise en place des structures du CSP */
+void CSProblem::set_domains_connections(int* dom, vector<int>* tabledom, vector<int>* connect)
+{
+    domains = dom;
+    tabdomains = tabledom;
+    connections = connect;
+}
+
+void CSProblem::init_domain_tabdomain()
+{
+    init_domains(nbvar, domainsize);
+    init_tabdomains(domainsize);
+}
+
+/* taille du tableau de valeurs pour le tabou incremental : nb de mouvements maximum */
+int CSProblem::nbtabuindex() { return (nbvar * domainsize); }
+
+int CSProblem::tabuindex(Move* move, Configuration* config)
+{
+    return (((CSPMove*)move)->variable * domainsize + ((CSPMove*)move)->value);
+}
+
+int CSProblem::tabuinverseindex(Move* move, Configuration* configuration)
+{
+    return (((CSPMove*)move)->variable * domainsize + configuration->config[((CSPMove*)move)->variable]);
+}
diff --git a/code/include/tb2/incop/csproblem.h b/code/include/tb2/incop/csproblem.h
new file mode 100644
index 0000000000000000000000000000000000000000..8eec8e10de9b6283010d0afa9f434a525520738c
--- /dev/null
+++ b/code/include/tb2/incop/csproblem.h
@@ -0,0 +1,89 @@
+#ifndef INCOP_CSPROBLEM_H_
+#define  INCOP_CSPROBLEM_H_
+
+/* classe des problèmes de satisfaction de contraintes CSP*/
+/** Finite domain CSP class */
+class CSProblem : public OpProblem {
+public:
+    /* nombre de contraintes */
+    /** constraint number */
+    int nbconst;
+
+    /* tableau des domaines : chaque domaine est un vecteur d'entiers */
+    /** domain array : each domain is implemented by a vector of integers */
+    vector<int>* tabdomains;
+    /* pour chaque variable, numéro de son domaine : indice dans le tableau tabdomains */
+    /** for each variable, domain number : index in tabdomains array */
+    int* domains;
+    /* tableau des connexions : pour chaque variable, vecteur des variables connectées */
+    /** connections table : for each variable, vector of connected variables */
+    vector<int>* connections;
+    /* constructeur de base */
+    /** constructor */
+    CSProblem(int nbvar, int nbconst);
+    /* constructeur avec borne inférieure */
+    /** constructor with lower bound (stopping condition when it is reached) */
+    CSProblem(int nbvar, int nbconst, int lower);
+    ~CSProblem();
+    void move_execution(Configuration* configuration, Move* move);
+    /* la taille du domaine de la variable var */
+    /** the domain size of variable var */
+    virtual int variable_domainsize(int var);
+    void random_configuration(Configuration* configuration);
+    /* une variable choisie aléatoirement */
+    /** a variable randomly chosen */
+    virtual int random_variable(Configuration* configuration);
+    /** a variable taking part to a conflict in the configuration */
+    virtual int random_conflict_variable(Configuration* configuration);
+    /* une valeur choisie aléatoirement, si possible distincte de val : retourne l'indice de la valeur dans le domaine */
+    /** a value for variable var, randomly chosen in its domain, if possible distinct with val : returns the index of the value in the domain */
+    virtual int random_value(int var, int val);
+    /* une valeur dans le domaine de la variable minimisant les conflits avec la configuration */
+    /** a value in the domain minimizing the conflict with the configuration (implementation of Minton min-conflict heuristics)
+	returns the index of the value in the domain */
+    virtual int min_conflict_value(int var, int val, Configuration* configuration);
+    /* initialisation des domaines par défaut : un seul domaine numéro 0 pour toutes les variables */
+    /** standard domain initialization : a unique domain number 0 for all variables */
+    virtual void init_domains(int nbvar, int s);
+    /* un seul domaine par défaut : entiers de 0 à s-1 */
+    /** standard unique domain : integers from 0 to s-1 */
+    virtual void init_tabdomains(int s);
+    /* calcul des variables en conflit : on reconstruit le vecteur des variables en conflit d'une configuration*/
+    /** compute the variables in conflict : rebuilding the vector of conflict variables of the configuration*/
+    void compute_var_conflict(Configuration* configuration);
+    void best_config_analysis();
+    void best_config_write();
+    Long move_evaluation(Configuration* configuration, Move* move);
+    void init_population(Configuration** population, int populationsize);
+    Configuration* create_configuration();
+    Move* create_move();
+    void adjust_parameters(Configuration* configuration, int& maxneighbors, int& minneighbors);
+    void next_move(Configuration* configuration, Move* move, NeighborhoodSearch* nbhs);
+    /* met en place les domaines et connexions d'un problème */
+    /** set the domains and connections of a problem */
+    virtual void set_domains_connections(int* dom, vector<int>* tabledom, vector<int>* connect);
+    /* initialisation des domaines : appel de init_domains et init_tabdomains */
+    /** initialization of the domains : call init_domains and init_tabdomains */
+    virtual void init_domain_tabdomain();
+    int tabuindex(Move* move, Configuration* config);
+    int tabuinverseindex(Move* move, Configuration* config);
+    int nbtabuindex();
+};
+
+/* CSP Binaires :  ajout du tableau des  contraintes à partir de 2 variables */
+/** Binary CSPs : addition of the constraints array */
+class BinaryCSProblem : public CSProblem {
+public:
+    /* pour une paire de variables (i,j) (i<j) , constraints[i][j] contient le numéro de contraintes +1 entre ces variables si
+	elles sont connectées, 0 sinon. On se limite à au plus une contrainte par paire de variables : dans le
+	cas contraire on peut utiliser la classe  WeightExtensionBinaryCSP */
+    /** for a couple (i,j) of variables, (i<j) , constraints[i][j] returns the constraint number + 1 if the variables are connected, 0 si the variables are not connected. It is assumed that at most one constraint exists between two variables
+	(if not use WeightExtensionBinaryCSP class) */
+    int** constraints;
+    BinaryCSProblem(int nbvar, int nbconst);
+    BinaryCSProblem(int nbvar, int nbconst, int lower);
+    ~BinaryCSProblem() { ; };
+};
+
+int** csp_constraintdatastructure(int nbvar);
+#endif /* INCOP_CSPROBLEM_H_*/
diff --git a/code/include/tb2/incop/incop.h b/code/include/tb2/incop/incop.h
new file mode 100644
index 0000000000000000000000000000000000000000..e75c5cf5a6d76af265e463c0b42f4cea561b0061
--- /dev/null
+++ b/code/include/tb2/incop/incop.h
@@ -0,0 +1,794 @@
+#ifndef INCOP_H_
+#define INCOP_H_
+
+/* Les définitions des classes de la partie algorithme + OpProblem */
+/** the definitions of classes of the algorithmic part + OpProblem */
+
+#include <climits>
+#include "core/tb2types.hpp"
+
+/* struct Long */
+/* { */
+/*   long long p; */
+
+/*   Long() : p(0) {} */
+/*   Long(const Long &l) : p(l.p) {} */
+/*   Long(const long long v) : p(v) {} */
+/*   double to_double() const {return (double) p;} */
+
+/*   Long &operator=(const Long &r) { */
+/* 	p = r.p; */
+/* 	return *this; */
+/*   } */
+/*   Long &operator+=(const Long &r) { */
+/* 	p += r.p; */
+/* 	return *this; */
+/*   } */
+/*   Long &operator-=(const Long &r) { */
+/* 	p -= r.p; */
+/* 	return *this; */
+/*   } */
+/*   const Long operator-() const {return Long(-p);} */
+/*   friend const Long operator+(const Long& left, const Long& right) { */
+/* 	return Long(left.p + right.p); */
+/*   } */
+/*   friend const Long operator-(const Long& left, const Long& right) { */
+/* 	return Long(left.p - right.p); */
+/*   } */
+/*   friend const Long operator*(const Long& left, const Long& right) { */
+/* 	return Long(left.p * right.p); */
+/*   } */
+/*   friend const Long operator/(const Long& left, const Long& right) { */
+/* 	return Long(left.p / right.p); */
+/*   } */
+/*   friend bool operator==(const Long& left, const Long& right) { */
+/* 	return (left.p == right.p); */
+/*   } */
+/*   friend bool operator!=(const Long& left, const Long& right) { */
+/* 	return (left.p != right.p); */
+/*   } */
+/*   friend bool operator<=(const Long& left, const Long& right) { */
+/* 	return (left.p <= right.p); */
+/*   } */
+/*   friend bool operator>=(const Long& left, const Long& right) { */
+/* 	return (left.p >= right.p); */
+/*   } */
+/*   friend bool operator<(const Long& left, const Long& right) { */
+/* 	return (left.p < right.p); */
+/*   } */
+/*   friend bool operator>(const Long& left, const Long& right) { */
+/* 	return (left.p > right.p); */
+/*   } */
+/*   friend ostream& operator<<(ostream& os, const Long &r) { */
+/*     os << r.p; */
+/* 	return os; */
+/*   } */
+/*   friend istream& operator>>(istream& is, Long& r) { */
+/* 	is >> r.p; */
+/* 	return is;  */
+/*   } */
+/* }; */
+//#define LONG_MAX LONG_LONG_MAX
+
+/* les classes "abstraites" utilisées dans les paramètres des méthodes */
+class OpProblem;
+class IncompleteAlgorithm;
+class Metaheuristic;
+class NeighborhoodSearch;
+class Move;
+
+/* la classe Configuration  le champ config comprend la configuration elle-même sous forme de tableau d'entiers
+le champ valuation contient sa valeur pour l'évaluation */
+
+/** the main class Configuration */
+
+class Configuration
+
+{
+public:
+    int nbvar;
+    int trynumber;
+    /* les valeurs courantes des variables : implanté sous forme de tableau d'entiers*/
+    /** the current values of the variables : implemented with an array of integers*/
+    int* config;
+    /* la valeur de la configuration */
+    /** the configuration value */
+    Long valuation;
+    int var_conflict_size;
+    /* les variables participant à un conflit : implanté sous forme de vecteur */
+    /** the variables taking part to a conflict : implemented with a vector */
+    vector<int> var_conflict;
+    set<int> set_var_conflict;
+    /* indicateur si la configuration a été regroupée (pour GWW) */
+    /** indicates if the configuration has been regrouped before (for GWW) */
+    int regrouped;
+    virtual ~Configuration();
+    Configuration();
+    Configuration(int nbvar);
+    /* copie d'une configuration config2 dans this*/
+    /** copy a configuration config2 into this */
+    virtual void copy_element(Configuration* config2);
+    /* initialisation à 0 de la structure de données des conflits */
+    /** initialization to 0 of the conflict datastructure */
+    virtual void init_conflicts();
+    /* stockage de l'augmentation des conflits de (var,val) de incr */
+    /** store the conflict of (var,val) incremented by incr */
+    virtual void incr_conflicts(int var, int val, int index, Long incr);
+
+    /* stockage du nombre des conflits nbconf de (var,val)  */
+    /** store the number of conflicts nbconf of (var,val) in the conflict datastructure */
+    virtual void set_conflicts(int var, int val, int index, Long nbconf);
+
+    /* nombre de conflits de (var,val) stocké */
+    /** get the number of conflicts (var,val) stored in the conflict datastructure*/
+    virtual Long get_conflicts(int var, int val, int index);
+    /* nombre de conflits de (var,val) , au besoin recalculé */
+    /** get the number of conflicts of (var,val), computed if not stored */
+    virtual Long get_conflicts_problem(OpProblem* problem, int var, int val);
+
+    /* mise à jour des conflits après avoir effectué le mouvement move*/
+    /** update the conflict datastructure after a move is done */
+    virtual void update_conflicts(OpProblem* problem, Move* move);
+};
+
+/* CSPConfiguration : pour les CSP */
+/** CSPConfiguration : for the CSPs */
+class CSPConfiguration : public Configuration {
+public:
+    int domainsize;
+
+    CSPConfiguration(int nbvar, int domsize);
+};
+
+/* L'incrémentalité avec stockage de la participation à l'évaluation des valeurs courantes des
+variables de la configuration : implanté dans tabconflicts (tableau  à une dimension) */
+/** Incremental evaluation with storage in the conflict datastructure
+tabconflicts the participation of the current values of the configuration */
+class IncrCSPConfiguration : public CSPConfiguration {
+public:
+    Long* tabconflicts;
+    IncrCSPConfiguration(int nbvar);
+    IncrCSPConfiguration(int nbvar, int nbcol);
+    ~IncrCSPConfiguration();
+    void copy_element(Configuration* config2);
+    void init_conflicts();
+    void incr_conflicts(int var, int val, int index, Long incr);
+    void set_conflicts(int var, int val, int index, Long nbconf);
+    Long get_conflicts(int var, int val, int index);
+    Long get_conflicts_problem(OpProblem* problem, int var, int val);
+    virtual void set_variableconflicts(int var, int nbconf);
+    void update_conflicts(OpProblem* problem, Move* move);
+};
+
+/* l'incrémentalité totale : participation à l'évaluation de chaque
+valeur de chaque variable stockée dans le  tableau tabconflicts à deux dimensions (variable, indice de la valeur)*/
+/** Full incremental evaluation : the participation of every value of every
+variable is stored in the 2 dimension array tabconflicts (variable, valueindex)
+*/
+class FullincrCSPConfiguration : public CSPConfiguration {
+public:
+    int tabconflictsize;
+    Long** tabconflicts;
+
+    FullincrCSPConfiguration(int nbvar, int domainsize);
+    ~FullincrCSPConfiguration();
+    void copy_element(Configuration* config2);
+    void init_conflicts();
+    void incr_conflicts(int var, int val, int index, Long incr);
+    void set_conflicts(int var, int val, int index, Long nbconf);
+    /* nombre de conflits de (var,val) stocké : utilisation de l'indice de la valeur index*/
+    /** get the number of conflicts (var,val) stored in the conflict datastructure using the value index in the domain */
+    Long get_conflicts(int var, int val, int index);
+    Long get_conflicts_problem(OpProblem* problem, int var, int val);
+    void update_conflicts(OpProblem* problem, Move* move);
+};
+
+/* classe Move */
+/** root class Move */
+class Move {
+public:
+    Long valuation;
+    Move();
+    virtual ~Move() { ; };
+    /* le test d'égalité d'un mouvement (utilisé pour la recherche d'un mouvement dans la liste taboue)*/
+    /** the test of equality of a move (used for searching a move in the tabu list) */
+    virtual int eqmove(Move* move1);
+    /* copie du mouvement move1 dans this */
+    /** copy of move move1 into this */
+    virtual void copymove(Move* move);
+    /* le mouvement a mettre dans la liste taboue */
+    /** the move to be put in the tabu list (to be implemented in the subclasses)*/
+    virtual Move* computetabumove(Configuration* config) { return 0; };
+};
+
+/* classe CSPMove :  un mouvement pour les CSP : variable , valeur */
+/** class CSPMove : a classical move for a CSP : variable, value */
+class CSPMove : public Move {
+public:
+    int variable;
+    int value;
+    CSPMove();
+    ~CSPMove() { ; };
+    int eqmove(Move* move);
+    void copymove(Move* move);
+    /* le mouvement stocké tabou est le mouvement inverse du mouvement effectué */
+    /** the move stored is the inverse of the move done */
+    Move* computetabumove(Configuration* config);
+};
+
+/* classe racine des problèmes d'optimisation (minimisation) */
+/** Root class of Optimization Problems (minimization) */
+
+class OpProblem {
+public:
+    /* la meilleure configuration trouvée */
+    /** the best configuration found */
+    Configuration* best_config;
+    /* nombre de variables */
+    /** the number of variables */
+    int nbvar;
+    /* taille maximum des domaines */
+    /** maximum domain size */
+    int domainsize;
+    /* borne inférieure donnée au départ : sert de condition d'arrêt quand elle est atteinte */
+    /** given lower bound , is used as a stop condition when it is reached */
+    Long lower_bound;
+    /* le mouvement courant */
+    /** the current move being tested */
+    Move* currentmove;
+    /* le premier mouvement faisable essayé dans le voisinage*/
+    /** the first feasible move tried in the neighborhood */
+    Move* firstmove;
+    /* le meilleur mouvement essayé */
+    /** the best move found in the neighborhood */
+    Move* bestmove;
+    OpProblem(){};
+    virtual ~OpProblem(){};
+    /* exécution d'un mouvement (modification de la configuration courante) */
+    /** move execution (modification of the current configuration) */
+    virtual void move_execution(Configuration* configuration, Move* move);
+    /* mise à jour de la structure des conflits (cas IncrCSPConfiguration) */
+    /** update of  the conflict data structure (case IncrCSPConfiguration) */
+    virtual void incr_update_conflicts(IncrCSPConfiguration* configuration, Move* move){};
+    /* mise à jour de la structure des conflits (cas FullincrCSPConfiguration) */
+    /** update of  the conflict data structure (case FullincrCSPConfiguration) */
+    virtual void fullincr_update_conflicts(FullincrCSPConfiguration* configuration, Move* move){};
+    /* création des 3 objets Move (currentmove,bestmove,firstmove) */
+    /** creation of 3 Move objects (currentmove,bestmove,firstmove) */
+    virtual void allocate_moves();
+    /* création d'un mouvement (la classe du mouvement dépend du problène) : méthode implantée dans les sous-classes */
+    /** creation of 1 Move object (the class of the Move depends on the problem) : this method
+	is implemented in subclasses */
+    virtual Move* create_move() { return 0; };
+    /* ajustement des paramètres du voisinage (quand la taille du voisinage est supérieure à maxneighbors) */
+    /** adjustment of the neighborhood parameters (when the size of the actual neighborhood is greater than maxneighbors) */
+    virtual void adjust_parameters(Configuration* configuration, int& maxneighbors, int& minneighbors){};
+    /* prochain mouvement du voisinage à tester */
+    /** next move to be tested (implemented in subclasses)*/
+    virtual void next_move(Configuration* configuration, Move* move, NeighborhoodSearch* nbhs){};
+    /* affectation aléatoire des variables d'une configuration */
+    /** random assignment of the variables of a configuration */
+    virtual void random_configuration(Configuration* configuration){};
+    /* analyse da la meilleure solution */
+    /** analysis of the best configuration */
+    virtual void best_config_analysis(){};
+    /* ecriture de la meilleure solution */
+    /** writing the best solution */
+    virtual void best_config_write(){};
+
+    /* vérification de la meilleure solution (recalcul de son coût) */
+    /** verification of the best solution (its cost is recomputed) */
+    virtual void best_config_verification();
+    /* initialisation d'une population de taille populationsize */
+    /** initialization of the population of size populationsize */
+    virtual void init_population(Configuration** population, int populationsize){};
+    /* création d'une configuration (la classe exacte dépend du problème) */
+    /** create a configuration (the exact class depends on the problem and must defined in subclasses) */
+    virtual Configuration* create_configuration() { return 0; };
+    /* calcul de la participation à l'évaluation de l'affectation (var,val) */
+    /** computation of the participation of (var,val) to the configuration evaluation */
+    virtual Long compute_conflict(Configuration* configuration, int var, int val) { return 0; };
+    /* évaluation d'une configuration */
+    /** evaluation of a configuration */
+    virtual Long config_evaluation(Configuration* configuration) { return 0; };
+    /* évaluation d'un mouvement move sur une configuration */
+    /** evaluation of a configuration if the move is done */
+    virtual Long move_evaluation(Configuration* configuration, Move* move) { return 0; };
+    /* passage de l'indice dans le domaine à la valeur */
+    /** valueindex in the domain to value */
+    virtual int index2value(int index, int var) { return index; };
+    /* passage d'une valeur à son indice dans le domaine de la variable */
+    /** valueindex of value in its domain*/
+    virtual int value2index(int value, int var) { return value; };
+    /* calcule l'ensemble des variables en conflit de la configuration*/
+    /** compute the variables participating to a conflict in the configuration */
+    virtual void compute_var_conflict(Configuration* configuration){};
+    virtual int tabuindex(Move* move, Configuration* configuration) { return 0; };
+    virtual int tabuinverseindex(Move* move, Configuration* configuration) { return 0; };
+    virtual int nbtabuindex() { return 0; };
+};
+
+/* Le voisinage paramétré d'une part par  min voisins explorés,
+max voisins explorés et épuisement voisinage et d'autre part par var_conflict et val_conflict */
+/** Class NeighborhoodSearch : how the neighborhood is explored */
+
+class NeighborhoodSearch {
+public:
+    /* nombre minimum de voisins explorés */
+    /** minimum number of visited neighbors */
+    int minneighbors;
+    /* nombre maximum de voisins explorés */
+    /** maximum number of explored neighbors */
+    int maxneighbors;
+    /* indicateur de comportement quand le voisinage est épuisé sans qu'un voisin n'ait été accepté :
+	0 stagnation, 1 on effectue le 1er mouvement faisable, k on effectue le meilleur mouvement faisable parmi k mouvements essayés non acceptés*/
+    /** behavior indicator when the neighborhood is exhausted and no neighbor has been accepted :
+	0 stagnation, 1 the 1st feasible move is selected, k the best feasible among k tried but not accepted moves is selected */
+    int finished;
+    /* indicateur de restriction aux variables en conflit (0 pas de restriction, 1 restriction) */
+    /** restriction indicator to variables participating in a conflict (0 no restriction, 1 restriction) */
+    int var_conflict;
+    /* indicateur de restriction aux meilleures variables d'une variable (0 pas de restriction, 1 restriction) */
+    /** restriction indicator to best values of a variable (0 no restriction , 1 restriction) */
+    int val_conflict;
+    double nbhrate;
+    NeighborhoodSearch(int maxneigh, int minneigh, int finish, int var_conf, int val_conf, double nbbr);
+    int returnbestmove();
+    void adjust_neighborhood(Configuration* configuration, OpProblem* problem, int& maxneigh, int& minneigh, int nbmoves);
+    virtual void dynamicmaxneighbors(int& maxneigh, int& minneigh, int nbmoves);
+    virtual void initsearch();
+    virtual void spareneighboradjust(Configuration* config, Move* move) { ; }
+    virtual ~NeighborhoodSearch(){};
+};
+
+/* Voisinage avec réglage dynamique du paramètre max-voisins*/
+/** Neighborhood with dynamic parameter tuning */
+class DynamicNeighborhoodSearch : public NeighborhoodSearch {
+public:
+    DynamicNeighborhoodSearch(int maxneigh, int minneigh, int finish, int var_conf, int val_conf, double nbbr);
+    /* valeur initiale du parametre maxneighbors */
+    /** initial value of maxneighbors parameter */
+    int initmaxneighbors;
+    /* valeur initiale du parametre minneighbors */
+    /** initial value of minneighbors parameter */
+    int initminneighbors;
+    /* période de réajustement du paramètre */
+    /** parameter readjustment period */
+    int adjustperiod;
+    void initsearch();
+    /* ajustement des paramètres minneighbors et maxneighbors */
+    /** adjust the parameters maxneighbors and minneighbors */
+    void dynamicmaxneighbors(int& maxneigh, int& minneigh, int nbmoves);
+};
+
+class DynamicSpareneighbor : public NeighborhoodSearch {
+public:
+    DynamicSpareneighbor(int maxneigh, int minneigh, int finish, int var_conf, int val_conf, double nbbr);
+    void spareneighboradjust(Configuration* config, Move* move);
+    int nbmovesdown;
+};
+
+/* Les Algorithmes
+la classe mere : algo de recherche incomplet */
+/** Root class of algorithms */
+
+class IncompleteAlgorithm {
+public:
+    string methodname;
+    /* un seuil peut être utilisé pour empêcher des mouvements de coût supérieur au seuil
+	(utilisé dans les recherches locales des marches de GWW)*/
+    /** a threshold can be used to forbid moves above this threshold (used in LSAlgorithms implementing walks inside GWW)*/
+    Long threshold;
+    virtual ~IncompleteAlgorithm(){};
+    /* marche d'une particule */
+    /** walk for a particule */
+    virtual void randomwalk(OpProblem* problem, Configuration* configuration);
+    virtual void initthreshold(Configuration** population, int popsize) { ; };
+    /* exécution de l'algorithme sur une population (réduite à une particule pour une recherche locale) */
+    /** Run the algorithm on a population (array of configurations) */
+    virtual void run(OpProblem* problem, Configuration** population);
+};
+
+/* la classe des algos de marche aléatoire paramétrée par longueur marche
+un voisinage et une metaheuristique */
+/** The class of local search algorithm on one particle : the random walk is
+parameterized with the walk lengh,a neighborhood and a metaheuristics */
+
+class LSAlgorithm : public IncompleteAlgorithm {
+public:
+    /* longueur de la marche */
+    /** walk length */
+    int walklength;
+    /* le voisinage */
+    /** the way the neighborhood is explored */
+    NeighborhoodSearch* nbhsearch;
+    /* la métaheuristique */
+    /** the metaheuristics used */
+    Metaheuristic* mheur;
+    /* le nombre d'essais de mouvements (pour les stats) */
+    /** number of move tries  (for statistics) */
+    int nhtries;
+    double avgnhtries;
+    double avgsqnhtries;
+    /* nombre de mouvements effectués */
+    /** number of moves done */
+    int nbmoves;
+    LSAlgorithm(int nbmov);
+    ~LSAlgorithm();
+    /* faisabilité d'un mouvement  (sous ou au niveau du seuil pour marche de GWW) */
+    /** feasability of a move (under or at threshold level pour GWW walks) */
+    virtual int isfeasible(Move* move);
+    void randomwalk(OpProblem* problem, Configuration* configuration);
+    /* algorithme d'exploration du voisinage pour sélectionner et effectuer un mouvement à partir de la configuration courante
+	Effectue le mouvement et renvoie 1 si un mvt a ete effectué et 0 si aucun mouvement ne l'a été*/
+    /** Neighborhood exploration algorithm for selecting and do a move from the current configuration :
+	returns 1 if a move has been done and 0 if no move has been done */
+    virtual int configurationmove(OpProblem* problem, Configuration* configuration);
+    void initthreshold(Configuration** population, int popsize);
+    void run(OpProblem* problem, Configuration** population);
+    /* test de meilleur trouvé (renvoie 1 si un meilleur absolu est trouvé)*/
+    /** test if a global best configuration has been found (returns 1 in that case) */
+    int test_bestfound(Move* move);
+};
+
+class LSAlgorithmGWW : public LSAlgorithm {
+public:
+    LSAlgorithmGWW(int nbmov);
+    int isfeasible(Move* move);
+};
+
+/* les différentes métaheuristiques */
+/** Root class for Metaheuritics */
+class Metaheuristic {
+public:
+    virtual ~Metaheuristic(){};
+    /* mise à jour des données de la métaheuristique juste avant qu'un mouvement soit effectué */
+    /** update of the metaheuristic data just before a move is performed */
+    virtual void executebeforemove(Move* move, Configuration* configuration, OpProblem* problem);
+    /* initialisation des données de la métaheuristique */
+    /** initialization of the meteheuristic data at the beginning of a local search */
+    virtual void reinit(OpProblem* problem);
+    /* condition d'acceptation d'un mouvement : renvoie 1 si le mouvement est accepté */
+    /** acceptance condition of a move : returns 1 if the move is accepted */
+    virtual int acceptance(Move* move, Configuration* config);
+    virtual void adjustparameter(int parameter) { ; };
+};
+
+/* marche avec liste taboue : parametree par longueur de la liste : cette liste de mouvements est
+implantee à l'aide d'une liste de Move* */
+/** Walk with using a tabu list : this list of moves is implemented by a list<Move*> structure , the
+actual class of the moves depend on the problems */
+class TabuSearch : public Metaheuristic {
+public:
+    /* longueur maximale de la liste taboue */
+    /** maximum length of the tabulist */
+    int tabulength;
+    /* liste taboue : traitée comme une file */
+    /** tabu list : implemented FIFO */
+    list<Move*> move_list;
+    TabuSearch(int tabul);
+    /* acceptation d'un mouvement : non tabou  (le critère d'aspiration est dans l'algo de recherche du voisin) */
+    /** acceptance of a move : not in the tabulist (the aspiration criterion of a best is in the configurationmove algorithm) */
+    int acceptance(Move* move, Configuration* config);
+    /* test de non présence dans la liste taboue : la présence d'un mvt est faite avec eqmove */
+    /** test of non presence in the tabulist (use of eqmove method) */
+    int nontabumove(Move* move);
+    /* mise à jour de la liste taboue qui est traitée comme une file de longueur maximale tabulength */
+    /** updating of the tabulist which is managed as a FIFO of maximum length tabulength */
+    void executebeforemove(Move* move, Configuration* configuration, OpProblem* problem);
+    /* réinitialisation : la liste taboue est vidée */
+    /** the tabu list is cleared */
+    void reinit(OpProblem* problem);
+    void adjustparameter(int length);
+};
+
+class TabuGreedySearch : public TabuSearch {
+public:
+    TabuGreedySearch(int tabul);
+    int acceptance(Move* move, Configuration* config);
+};
+
+class IncrTabuSearch : public TabuSearch {
+public:
+    IncrTabuSearch(int tabul);
+    int nbiter;
+    vector<int> tabutime;
+    OpProblem* currentproblem;
+    int acceptance(Move* move, Configuration* config);
+    void executebeforemove(Move* move, Configuration* configuration, OpProblem* problem);
+    void reinit(OpProblem* problem);
+};
+
+class IncrTabuGreedySearch : public IncrTabuSearch {
+public:
+    IncrTabuGreedySearch(int tabul);
+    int acceptance(Move* move, Configuration* config);
+};
+
+/* marche Metropolis : un seul paramètre = temperature */
+/** Metropolis algorithm : a unique parameter - a constant temperature */
+class Metropolis : public Metaheuristic {
+public:
+    double temperature;
+    Metropolis(double temp);
+    /* la formule classique de Metropolis d'acceptation d'un mouvement détériorant
+	l'évaluation : probabilité p = exp (-evaluationdelta/temperature) */
+    /** the classical Metropolis formula for accepting a bad move :  probability =  exp (-evaluationdelta/temperature) */
+    int acceptance(Move* move, Configuration* config);
+    void adjustparameter(int parameter);
+};
+
+/* l'acceptation à seuil : un mouvement ne doit pas détériorer l'évaluation plus que le seuil courant ;
+le seuil diminue linéairement de thresholdinit à 0*/
+
+/** Threshold accepting Metaheuristics : a move must no deteriorate the evaluation more than the
+current threshod : the threshold goes down linearly from thresholdinit to 0 */
+class ThresholdAccepting : public Metaheuristic {
+public:
+    /* seuil initial */
+    /** initial threshold */
+    double thresholdinit;
+    /* pas de baisse du seuil */
+    /** constant step to lower the threshold */
+    double delta;
+    /* valeur courante du seuil */
+    /** current value of the threshold */
+    double thresholdaccept; // le seuil tel que géré par TA
+    /* constructeur : 2 arguments seuil initial maxthreshold et nombre de pas,
+	le pas constant delta de baisse du seuil est calculé*/
+    /** constructor : two arguments : maxthreshold the initial threshold and
+	walklength , it computes a constant step for lowering the threshold */
+    ThresholdAccepting(double maxthreshold, int walklength);
+    /* condition d'acceptation : être sous ou au niveau du  seuil */
+    /** acceptance condition : being under or at the threshold */
+    int acceptance(Move* move, Configuration* config);
+    /* le seuil est diminué de delta */
+    /** the threshold is lowered by delta */
+    void executebeforemove(Move* move, Configuration* configuration, OpProblem* problem);
+    /* le seuil est initialisé à thresholdinit */
+    /** the threshold is initialized at thresholdinit */
+    void reinit(OpProblem* problem);
+};
+
+/* le recuit simulé : descente linéaire de température de inittemperature à 0 */
+/** Simulated Annealing : linear temperature descent from inittemperature to 0*/
+class SimulatedAnnealing : public Metaheuristic {
+public:
+    /* temperature initiale */
+    /** initial temperature */
+    double inittemperature;
+    /* pas constant de baisse de temperature */
+    /** constant step for lowering the temperature */
+    double delta;
+    /* temperature courante */
+    /** current temperature */
+    double temperature;
+    int walklength;
+    /* Constructeur : 2 arguments : température initiale et longueur de marche */
+    /** Constructor : 2 parameters  : initial temperature and walk length : the fixed
+	temperature decrement is computed. */
+    SimulatedAnnealing(double initialtemperature, int walklength);
+    /* acceptation en fonction de la temperature : formule classique du recuit simulé
+	probablité d'acceptation d'un mouvement détériorant l'évaluation :
+	probabilité =  exp (-evaluationdelta/temperature) */
+
+    /** Acceptance function of the temperature : classical simulated annealing formula
+	for accepting a bad move :  probability =  exp (-temperature/evaluationdelta) */
+    int acceptance(Move* move, Configuration* config);
+    /* la température est baissée de delta */
+    /** the temperature is lowered by delta */
+    void executebeforemove(Move* move, Configuration* configuration, OpProblem* problem);
+    void reinit(OpProblem* problem);
+    void adjustparameter(int parameter);
+};
+
+/* marche hybride tabou + pourcentages d'acceptation selon sens des mouvements */
+/** Special Tabu search with complementary acceptance condition depending on the move direction */
+
+//                          liste taboue
+
+class TabuAcceptingrate : public TabuSearch {
+public:
+    /* probabilité d'acceptation d'un mauvais   */
+    /** probability of acceptance of a worsening move */
+    float Pd;
+    /* probabilité d'acceptatiion d'un mouvement de même coût que le courant */
+    /** probability of acceptance of a move with same cost */
+    float P0;
+    TabuAcceptingrate(int tabul, float Pd, float P0);
+    /* critère d'acceptation : non tabou et pourcentages d'acceptation suivant sens du mouvement (détériorant, neutre, améliorant) */
+    /** Acceptance condition : non tabu and probabilities depending on the move direction */
+    int acceptance(Move* move, Configuration* config);
+};
+
+/* marche aléatoire : tout voisin faisable est accepté */
+/** Random walk : every feasible neighbor is accepted */
+class RandomSearch : public Metaheuristic {
+public:
+    RandomSearch();
+    int acceptance(Move* move, Configuration* config);
+};
+
+/* marche gloutonne : on accepte un voisin de cout inférieur ou égal à la configuration courante*/
+/** Greedy walk : a neighbor with better or same cost as the current configuration is accepted */
+class GreedySearch : public Metaheuristic {
+public:
+    GreedySearch();
+    int acceptance(Move* move, Configuration* config);
+};
+
+//-------------------------------------------------------------------------------------------------
+
+/* les algos de type GWW
+ les différentes sous classes diffèrent par la gestion du seuil
+et les regroupements de particules */
+
+/** the GWW (Go with the winners) algorithms : the different subclasses
+differ by the way a threshold is managed and the particles are regrouped */
+
+class GWWAlgorithm : public IncompleteAlgorithm {
+public:
+    /* nombre de particules */
+    /** number of particles */
+    int populationsize;
+    /* indicateur de marche uniquement si la particule a été regroupée
+	(utile pour GWW de base, sans recherche locale, uniquement) (1 oui, 0 non) */
+    /** walk indicator : a walk is performed only is the particle has been regrouped : (1 yes, 0 no)
+	(useful for a standard GWW with random walk (and no local search)) */
+    int regrouptest;
+    /* indicateur de baisse du seuil au dernier mouvement de la marche (pour essayer d'empecher la particule d' etre redistribuée) (1 oui, 0 non) */
+    /** parameter if the threshold is lowered at the last move of the walk
+	(for trying to avoid the particle to be redistributed  (1 yes, 0 no)*/
+    int lastmovedescent;
+    /* indicateur d'élitisme : remet-on le meilleur individu dans la population à chaque regroupement (1 oui, 0 non) */
+    /** elitism parameter : is the best particle put again in the population at each regroupment ( 1 yes, 0 no) */
+    int elitism;
+    /* indicateur d'arrêt de la marche en cas de stagnation (1 oui, 0 non) */
+    /** parameter for stopping the walk in case of stagnation (1 yes, 0 no) */
+    int nomovestop;
+    /* le décrément du seuil (calculé par thresholdcomputedelta) */
+    /** the threshold decrement (compted by thresholdcomputedelta) */
+    Long thresholddelta;
+    /* le nombre d'iterations max : utile quand pas de seuil (NothresholdGWWAlgorithm) */
+    /** the maximum number of iterations : useful when no threshold is managed (NothresholdGWWAlgorithm) */
+    int nbiteration;
+    /* le nombre de changements de seuil (pour les statistiques) */
+    /** number of threshold changes (for the statistics) */
+    int thresholdchanges;
+    /* le nombre total d'essais de mouvements entre 2 regroupements (pour les statistiques)*/
+    /** total number of move tries between 2 regroupments (for the statistics) */
+    int total_nhtries;
+    /* le nombre total de mouvements entre 2 regroupements (pour les statistiques)*/
+    /** total number of moves between 2 regroupments (for the statistics) */
+    int total_nbmoves;
+    /* l'algorithme de recherche locale utilisé */
+    /** the local search algorithm used */
+    LSAlgorithm* walkalgorithm;
+    /* destructeur */
+    ~GWWAlgorithm();
+    /* recherche locale sur l'ensemble de la population */
+    /** local search on the whole population */
+    virtual void populationrandomwalk(OpProblem* problem, Configuration** population);
+    /* le nombre de particules au seuil (pour les statistiques),  la population étant déjà triée à l'appel */
+    /** the number of particles at the threshold (for statistics) , the population being yet sorted at the function call*/
+    virtual int nb_threshold_population(Configuration** population);
+    /* une recherche locale pour une particule */
+    /** a local search for a particle */
+    void randomwalk(OpProblem* problem, Configuration* configuration);
+    /* initialisation du seuil */
+    /** intialization of the threshold */
+    void initthreshold(Configuration** population, int popsize);
+    /* méthode de baisse du seuil (le delta a déjà été calculé)*/
+    /** method for lowering the threshold( the delta has already been computed) */
+    virtual void thresholdupdate();
+    /* méthode de calcul du décrément du seuil */
+    /** method for computing the threshold decrement */
+    virtual void thresholdcomputedelta(Configuration** population);
+    /* déroulement de l'algorithme */
+    /** main function for running the algorithm */
+    void run(OpProblem* problem, Configuration** population);
+    /* regroupement des mauvais individus sur les bons */
+    /** regrouping of the best particles on the good ones */
+    virtual void regrouping(Configuration** population);
+    /* en cas d'élitisme, on remet le meilleur dans la population */
+    /** in case of elitism, the best particle is put into the population */
+    void populationkeepbest(OpProblem* problem, Configuration** population);
+    /* incremente le compteur de changements de seuil (pour les statistiques) */
+    /** incrementing the threshold updates counter (for the statistics) */
+    virtual void thresholdchangesupdate();
+};
+
+/* Classe abstraite : GWW avec seuil */
+/** Abstract class : GWW managing a threshold */
+class ThresholdGWWAlgorithm : public GWWAlgorithm {
+public:
+    void thresholdupdate();
+    void thresholdchangesupdate();
+    void initthreshold(Configuration** population, int popsize);
+    int nb_threshold_population(Configuration** population);
+};
+
+/* GWW standard : descente du seuil avec taux fixe */
+/** Standard GWW : threshold descent with a fixed rate */
+class StandardGWWAlgorithm : public ThresholdGWWAlgorithm {
+public:
+    /* taux de baisse du seuil */
+    /** threshold descent constant rate */
+    double thresholddescent;
+    /* seuil minimum (correspond en général à une borne inférieure connue) */
+    /** minimum of the threshold (corresponds generally to a known lowerbound) */
+    Long thresholdmin;
+    void regrouping(Configuration** population);
+    StandardGWWAlgorithm(int population_size, int grtest, int lastmove, int elitisme, int stop, double thresdescent, Long threshmin);
+    void thresholdcomputedelta(Configuration** population);
+};
+
+/* GWW descente du seuil au moins au niveau du pire */
+/** StandardGWW with a threshold descent at least until the worst particle */
+class FastStandardGWWAlgorithm : public StandardGWWAlgorithm {
+public:
+    void thresholdcomputedelta(Configuration** population);
+    FastStandardGWWAlgorithm(int population_size, int grtest, int lastmove, int elitisme, int stop, double thresdescent, Long threshmin);
+};
+
+/* GWW avec descente su seuil en tuant un nombre donné de particules à chaque fois */
+/** GWW with a threshold descent such as a given number of particles is regrouped */
+class AdaptiveGWWAlgorithm : public ThresholdGWWAlgorithm {
+public:
+    /* nombre de mauvaises particules à regrouper sur les bonnes */
+    /** number of bad particles to be regrouped on good ones */
+    int nbkilled;
+    AdaptiveGWWAlgorithm(int population_size, int grtest, int lastmove, int elitisme, int stop, int nbkilled);
+    void regrouping(Configuration** population);
+    void thresholdcomputedelta(Configuration** population);
+};
+
+/* GWW avec descente du seuil au plus bas des valeurs de seuil obtenues par AdaptiveGWWAlgorithm et FastStandardGWWAlgorithm
+ (un nombre de particules et un taux) */
+/** GWW with a threshold descent at the lowest value obtained by AdaptiveGWWAlgorithm et FastStandardGWWAlgorithm
+using a number of particles to be redistributed and a rate */
+class FastAdaptGWWAlgorithm : public AdaptiveGWWAlgorithm {
+public:
+    /* taux de descente du seuil */
+    /** threshold descent rate */
+    double thresholddescent;
+    int nbmaxkilled;
+    FastAdaptGWWAlgorithm(int population_size, int grtest, int lastmove, int elitisme, int stop, int nbkilled, int maxkilled, double thresholddescent);
+    void thresholdcomputedelta(Configuration** population);
+};
+
+/* GWW avec descente du seuil en fonction du médian de la population*/
+/** GWW with a descent depending on a distance between the worst and the median particle */
+class MedianAdaptGWWAlgorithm : public AdaptiveGWWAlgorithm {
+public:
+    /* taux de baisse du seuil : fraction de la distance entre la pire et la médiane (entre 0 et 1) */
+    /** descent rate : porcentage of the distance between the worst and the median particles (between 0 and 1) */
+    double mediandescent;
+    MedianAdaptGWWAlgorithm(int population_size, int grtest, int lastmove, int elitisme, int stop, double mediandescent);
+    void thresholdcomputedelta(Configuration** population);
+};
+
+/* GWW avec descente du seuil en fonction du meilleur de la population*/
+/** GWW with a descent depending on a distance between the worst and the best particle */
+class BestAdaptGWWAlgorithm : public AdaptiveGWWAlgorithm {
+public:
+    /* taux de baisse du seuil : fraction de la distance entre la pire et la meilleure (entre 0 et 1) */
+    /** descent rate : porcentage of the distance between the worst and the best particles (between 0 and 1) */
+
+    double bestdescent;
+    BestAdaptGWWAlgorithm(int population_size, int grtest, int lastmove, int elitisme, int stop, double bestdescent);
+    void thresholdcomputedelta(Configuration** population);
+};
+
+/* GWW sans seuil : 2 paramètres : nombre de tués à chaque itération, nombre d'itérations */
+/** GWW without threshold management : 2 parameters : number of particles redistributed at each iteration , number of iterations */
+class NothresholdGWWAlgorithm : public GWWAlgorithm {
+public:
+    NothresholdGWWAlgorithm(int population_size, int grtest, int lastmove, int elitisme, int stop,
+        int killed, int nbiter);
+    void regrouping(Configuration** population);
+    /* nombre de particules à regrouper à chaque itération */
+    /** number of particles to be regrouped at each iteration */
+    int nbkilled;
+};
+#endif /* INCOP_H_ */
diff --git a/code/include/tb2/incop/incopalgo.cpp b/code/include/tb2/incop/incopalgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5a1fcae6d747af94d66572906c1b83306f23d0c5
--- /dev/null
+++ b/code/include/tb2/incop/incopalgo.cpp
@@ -0,0 +1,1189 @@
+/* le fichier comportant les méthodes des différents algorithmes (gww
+   et recherche locale) , des métaheuristiques, des classes de
+   configurations, */
+
+#include <list>
+#include <vector>
+#include <string>
+#include <set>
+#include <algorithm>
+
+using namespace std;
+#include <fstream>
+#include <math.h>
+#include <unistd.h>
+
+#include "timer.h"
+#include "incop.h"
+#include "incoputil.h"
+
+// les variables globales
+extern Stat_GWW* Statistiques; // defini dans incoputil
+extern int TRACEMODE; // indicateur de trace
+extern ofstream* ofile; // le fichier de sortie
+
+// les constructeurs et destructeurs
+
+LSAlgorithm::LSAlgorithm(int nbmov)
+{
+    walklength = nbmov;
+}
+
+LSAlgorithmGWW::LSAlgorithmGWW(int nbmov)
+    : LSAlgorithm(nbmov)
+{
+    ;
+}
+
+LSAlgorithm::~LSAlgorithm()
+{
+    delete nbhsearch;
+    delete mheur;
+}
+
+NeighborhoodSearch::NeighborhoodSearch(int nbhmin, int nbhmax, int endnbh, int varconf, int valconf, double nbhr)
+{
+    minneighbors = nbhmin, maxneighbors = nbhmax,
+    finished = endnbh, var_conflict = varconf, val_conflict = valconf;
+    nbhrate = nbhr;
+}
+
+TabuSearch::TabuSearch(int tabul)
+{
+    list<Move*> L;
+    tabulength = tabul;
+    move_list = L;
+}
+
+IncrTabuSearch::IncrTabuSearch(int tabul)
+    : TabuSearch(tabul)
+{
+    nbiter = 0;
+}
+
+IncrTabuGreedySearch::IncrTabuGreedySearch(int tabul)
+    : IncrTabuSearch(tabul)
+{
+    ;
+}
+
+TabuGreedySearch::TabuGreedySearch(int tabul)
+    : TabuSearch(tabul)
+{
+    ;
+}
+
+Metropolis::Metropolis(double temp)
+{
+    temperature = temp;
+}
+
+/* constructeur : calcul du pas constant delta de baisse du seuil */
+ThresholdAccepting::ThresholdAccepting(double maxthreshhold, int walklength)
+{
+    thresholdinit = maxthreshhold;
+    delta = thresholdinit / walklength;
+}
+
+/* constructeur : calcul du pas constant delta de baisse de température */
+SimulatedAnnealing::SimulatedAnnealing(double initialtemperature, int walkl)
+{
+    inittemperature = initialtemperature;
+    walklength = walkl;
+    delta = inittemperature / walklength;
+}
+
+void SimulatedAnnealing::adjustparameter(int parameter)
+{
+    inittemperature = ((double)parameter / 100);
+    delta = inittemperature / walklength;
+}
+
+RandomSearch::RandomSearch() { ; }
+
+GreedySearch::GreedySearch() { ; }
+
+GWWAlgorithm::~GWWAlgorithm() { delete walkalgorithm; }
+
+StandardGWWAlgorithm::StandardGWWAlgorithm(int popsize, int grtest, int derniermouv, int elitisme, int stop,
+    double threshdescent, Long thresmin)
+{
+    populationsize = popsize;
+    regrouptest = grtest;
+    thresholddescent = threshdescent;
+    thresholdmin = thresmin;
+    lastmovedescent = derniermouv;
+    elitism = elitisme;
+    nomovestop = stop;
+    nbiteration = RAND_MAX;
+}
+
+FastStandardGWWAlgorithm::FastStandardGWWAlgorithm(int popsize, int grtest, int derniermouv, int elitisme, int stop, double threshdescent, Long thresmin)
+    : StandardGWWAlgorithm(popsize, grtest, derniermouv, elitisme, stop, threshdescent, thresmin)
+{
+    ;
+}
+
+NothresholdGWWAlgorithm::NothresholdGWWAlgorithm(int popsize, int grtest, int derniermouv, int elitisme, int stop,
+    int killed, int nbiter)
+{
+    populationsize = popsize;
+    regrouptest = grtest;
+    lastmovedescent = derniermouv;
+    elitism = elitisme;
+    nomovestop = stop;
+    nbkilled = killed;
+    nbiteration = nbiter;
+}
+
+AdaptiveGWWAlgorithm::AdaptiveGWWAlgorithm(int popsize, int grtest, int derniermouv, int elitisme, int stop, int killed)
+{
+    populationsize = popsize;
+    regrouptest = grtest;
+    lastmovedescent = derniermouv;
+    elitism = elitisme;
+    nomovestop = stop;
+    nbiteration = RAND_MAX;
+    nbkilled = killed;
+}
+
+FastAdaptGWWAlgorithm::FastAdaptGWWAlgorithm(int popsize, int grtest, int derniermouv, int elitisme, int stop, int killed, int maxkilled, double threshdescent)
+    : AdaptiveGWWAlgorithm(popsize, grtest, derniermouv, elitisme, stop, killed)
+{
+    thresholddescent = threshdescent;
+    nbmaxkilled = maxkilled;
+}
+
+MedianAdaptGWWAlgorithm::MedianAdaptGWWAlgorithm(int popsize, int grtest, int derniermouv, int elitisme, int stop, double medianrate)
+    : AdaptiveGWWAlgorithm(popsize, grtest, derniermouv, elitisme, stop, 1)
+{
+    mediandescent = medianrate;
+}
+
+BestAdaptGWWAlgorithm::BestAdaptGWWAlgorithm(int popsize, int grtest, int derniermouv, int elitisme, int stop, double bestrate)
+    : AdaptiveGWWAlgorithm(popsize, grtest, derniermouv, elitisme, stop, 1)
+{
+    bestdescent = bestrate;
+}
+
+/* **********************************************************************************************************
+ les différentes classes de configuration correspondant aux différentes formes d'incrémentalité
+*/
+
+Configuration::Configuration() { ; }
+Configuration::Configuration(int nbv)
+{
+    nbvar = nbv;
+    config = new int[nbv];
+}
+
+CSPConfiguration::CSPConfiguration(int nbv, int domsize)
+    : Configuration(nbv)
+{
+    domainsize = domsize;
+    trynumber = 0;
+}
+
+IncrCSPConfiguration::IncrCSPConfiguration(int nbv, int domsize)
+    : CSPConfiguration(nbv, domsize)
+{
+    tabconflicts = new Long[nbv];
+    for (int i = 0; i < nbv; i++) {
+        tabconflicts[i] = 0;
+    }
+}
+
+FullincrCSPConfiguration::FullincrCSPConfiguration(int nbv, int domsize)
+    : CSPConfiguration(nbv, domsize)
+{
+    tabconflictsize = domsize;
+    tabconflicts = new Long*[nbv];
+    for (int i = 0; i < nbv; i++) {
+        tabconflicts[i] = new Long[domsize];
+        for (int j = 0; j < domsize; j++)
+            tabconflicts[i][j] = 0;
+    }
+}
+
+Configuration::~Configuration() { delete[] config; }
+FullincrCSPConfiguration::~FullincrCSPConfiguration()
+{
+    for (int i = 0; i < nbvar; i++)
+        delete[] tabconflicts[i];
+    delete[] tabconflicts;
+}
+
+IncrCSPConfiguration::~IncrCSPConfiguration()
+{
+    delete[] tabconflicts;
+}
+
+void Configuration::init_conflicts() { ; }
+void Configuration::incr_conflicts(int var, int val, int index, Long incr) { ; }
+void Configuration::set_conflicts(int var, int val, int index, Long nbconf) { ; }
+Long Configuration::get_conflicts(int var, int val, int index) { return 0; }
+Long Configuration::get_conflicts_problem(OpProblem* problem, int var, int val)
+{
+    return problem->compute_conflict(this, var, val);
+}
+
+void Configuration::update_conflicts(OpProblem* problem, Move* move)
+{
+    ;
+}
+
+/* L'implantation semi-incrementale : seuls les nb de conflits des valeurs courantes sont stockés dans
+   tabconflicts (tableau a une dimension) */
+
+void IncrCSPConfiguration::set_conflicts(int var, int val, int index, Long nbconf)
+{
+    if (config[var] == val)
+        tabconflicts[var] = nbconf;
+}
+
+// methode utile ??
+Long IncrCSPConfiguration::get_conflicts(int var, int val, int index)
+{
+    if (config[var] == val)
+        return tabconflicts[var];
+    else
+        return 0;
+}
+
+/* la valeur courante est stockée , pour les autres valeurs, il faut calculer */
+Long IncrCSPConfiguration::get_conflicts_problem(OpProblem* problem, int var, int val)
+{
+    if (config[var] == val)
+        return tabconflicts[var];
+    else
+        return problem->compute_conflict(this, var, val);
+}
+
+void IncrCSPConfiguration::set_variableconflicts(int var, int nbconf)
+{
+    tabconflicts[var] = nbconf;
+}
+
+void IncrCSPConfiguration::incr_conflicts(int var, int val, int index, Long incr)
+{
+    if (config[var] == val)
+        tabconflicts[var] += incr;
+}
+
+void IncrCSPConfiguration::init_conflicts()
+{
+    for (int i = 0; i < nbvar; i++)
+        tabconflicts[i] = 0;
+}
+
+void IncrCSPConfiguration::update_conflicts(OpProblem* problem, Move* move)
+{
+    problem->incr_update_conflicts(this, move);
+}
+
+/* L'implantation toute-incrementale :  les nb de conflits de toutes les valeurs sont stockés dans
+   tabconflicts (tableau à deux dimensions : variable, valeur) */
+
+void FullincrCSPConfiguration::init_conflicts()
+{
+    for (int i = 0; i < nbvar; i++)
+        for (int j = 0; j < tabconflictsize; j++)
+            tabconflicts[i][j] = 0;
+}
+
+Long FullincrCSPConfiguration::get_conflicts_problem(OpProblem* problem, int var, int val)
+{
+    return tabconflicts[var][problem->value2index(val, var)];
+}
+
+Long FullincrCSPConfiguration::get_conflicts(int var, int val, int index)
+{
+    return tabconflicts[var][index];
+}
+
+void FullincrCSPConfiguration::set_conflicts(int var, int val, int index, Long nbconf)
+{
+    tabconflicts[var][index] = nbconf;
+}
+
+void FullincrCSPConfiguration::incr_conflicts(int var, int val, int index, Long incr)
+{
+    tabconflicts[var][index] += incr;
+}
+
+void FullincrCSPConfiguration::update_conflicts(OpProblem* problem, Move* move)
+{
+    problem->fullincr_update_conflicts(this, move);
+}
+
+// copie la config2 dans la config1 (recopie les tableaux de conflits, l'évaluation)
+
+void Configuration::copy_element(Configuration* config2)
+{
+    for (int i = 0; i < nbvar; i++)
+        config[i] = config2->config[i];
+    valuation = config2->valuation;
+}
+
+void IncrCSPConfiguration::copy_element(Configuration* config2)
+{
+    Configuration::copy_element(config2);
+    for (int i = 0; i < nbvar; i++)
+        tabconflicts[i] = ((IncrCSPConfiguration*)config2)->tabconflicts[i];
+}
+
+void FullincrCSPConfiguration::copy_element(Configuration* config2)
+{
+    Configuration::copy_element(config2);
+    for (int i = 0; i < nbvar; i++)
+        for (int j = 0; j < tabconflictsize; j++)
+            tabconflicts[i][j] = ((FullincrCSPConfiguration*)config2)->tabconflicts[i][j];
+}
+
+// ******************************************************************************
+int NeighborhoodSearch::returnbestmove()
+{
+    return ((minneighbors > 1) || (finished >= 2));
+}
+
+// ********************************** LES ALGORITHMES************************************************
+
+void IncompleteAlgorithm::randomwalk(OpProblem* problem, Configuration* configuration)
+{
+    ;
+}
+
+void IncompleteAlgorithm::run(OpProblem* problem, Configuration** population)
+{
+    ;
+}
+
+//---------------------------LSALGORITHM----------------------------------------------------------
+
+/*  Test pour savoir si le mouvement courant peut conduire à une configuration meilleure que toutes
+celles vues jusqu'à présent.
+Cette meilleure valeur est stockée dans l'objet Statistiques.
+(ATTENTION : Statistiques : variable globale ; la meilleure configuration est aussi
+stockée dans le champ best_config du problème, mais cette mise à jour là
+ne peut s'effectuer qu'une fois le mouvement effectué )
+en cas de meilleur trouvé, cette valeur est mise à jour dans l'objet Statistiques et une impression
+est eventuellement faite */
+
+int LSAlgorithm::test_bestfound(Move* move)
+{
+    if (move->valuation < Statistiques->cost_try[Statistiques->current_try]) {
+        if (TRACEMODE) {
+#ifndef __WIN32__
+            stop_timers(VIRTUAL);
+            Statistiques->execution_time_try[Statistiques->current_try] += VIRTUAL_TIMELAPSE;
+#else // timer not supported under windows
+            Statistiques->execution_time_try[Statistiques->current_try];
+#endif
+            ecriture_meilleure_valeur(methodname, move->valuation, threshold, nbmoves, nbhsearch->maxneighbors);
+#ifndef __WIN32__
+            start_timers();
+#endif
+        }
+        Statistiques->cost_try[Statistiques->current_try] = move->valuation;
+
+        return 1;
+    }
+
+    return 0;
+}
+
+/* Analyse des evaluations des nbmove derniers mouvements : renvoie l'écart entre valeurs maximale et minimale
+si la derniere valeur est inferieure a la première , renvoie -1 sinon */
+Long analyselastvaluations(int nbmove)
+{
+    Long valmax = 0, valmin = LONG_MAX;
+    for (int i = Statistiques->costvalues.size() - nbmove;
+         i < (int)Statistiques->costvalues.size(); i++) {
+        if (Statistiques->costvalues[i] > valmax)
+            valmax = Statistiques->costvalues[i];
+        if (Statistiques->costvalues[i] < valmin)
+            valmin = Statistiques->costvalues[i];
+    }
+    if (Statistiques->costvalues[Statistiques->costvalues.size() - 1]
+        >= Statistiques->costvalues[Statistiques->costvalues.size() - nbmove])
+        return (valmax - valmin);
+    else
+        return (-1);
+}
+
+/* voisinage statique : pas de reglage dynamique */
+void NeighborhoodSearch::dynamicmaxneighbors(int& maxneigh, int& minneigh, int nbmoves)
+{
+    ;
+}
+
+void NeighborhoodSearch::initsearch() { ; }
+
+void DynamicNeighborhoodSearch::initsearch()
+{
+    maxneighbors = initmaxneighbors;
+    minneighbors = initminneighbors;
+}
+
+/* Réglage dynamique du parametre maxneighbors en fonction des derniers couts*/
+
+DynamicNeighborhoodSearch::DynamicNeighborhoodSearch(int minneigh, int maxneigh, int finish, int var_conf, int val_conf, double nbbr)
+    : NeighborhoodSearch(minneigh, maxneigh, finish, var_conf, val_conf, nbbr)
+{
+    initmaxneighbors = maxneigh;
+    initminneighbors = minneigh;
+    adjustperiod = 50;
+}
+
+void DynamicNeighborhoodSearch::dynamicmaxneighbors(int& maxneigh, int& minneigh, int nbmoves)
+{
+    if ((nbmoves > 0) && (nbmoves % adjustperiod == 0)) {
+        if (analyselastvaluations(10) == 0) {
+            if (maxneigh <= 20) {
+                if (maxneigh > 2) {
+                    maxneigh--;
+                    maxneighbors--;
+                }
+            } else {
+                maxneigh = (int)(0.9 * maxneigh);
+                maxneighbors = maxneigh;
+            }
+        } else if (analyselastvaluations(10) >= 2) {
+            if (maxneigh <= 20) {
+                maxneigh++;
+                maxneighbors++;
+            } else {
+                if (maxneigh < 10000) {
+                    maxneigh = (int)(1.1 * maxneigh);
+                    maxneighbors = maxneigh;
+                }
+            }
+        }
+
+        if (minneigh > maxneigh)
+            minneigh = maxneigh;
+    }
+}
+
+DynamicSpareneighbor::DynamicSpareneighbor(int minneigh, int maxneigh, int finish, int var_conf, int val_conf, double nbbr)
+    : NeighborhoodSearch(minneigh, maxneigh, finish, var_conf, val_conf, nbbr)
+{
+    nbmovesdown = 0;
+}
+
+void DynamicSpareneighbor::spareneighboradjust(Configuration* config, Move* move)
+{
+    if (config->valuation < move->valuation) {
+        if (Statistiques->nb_moves_up[Statistiques->current_try] == 0) {
+            nbmovesdown = Statistiques->nb_moves_down[Statistiques->current_try];
+        }
+        finished = (int)(finished / (1.2));
+        if (finished == 0)
+            finished = 1;
+        //          *ofile << " butee spare neighbor " << finished <<  " " << move->valuation<<  endl;
+    } else if (config->valuation > move->valuation) {
+        double rate = 1.2 * ((double)(Statistiques->nb_moves_up[Statistiques->current_try]) / (Statistiques->nb_moves_down[Statistiques->current_try] + 1 - nbmovesdown));
+        if (finished * rate - finished > 1)
+            finished = (int)(finished * rate);
+        else
+            finished++;
+        if (finished > maxneighbors)
+            finished = maxneighbors;
+        //    *ofile << " descente " << finished <<  " " << move->valuation << endl;
+    } else {
+        //  *ofile << " plateau " << finished <<  " " << move->valuation << endl;
+    }
+}
+
+void NeighborhoodSearch::adjust_neighborhood(Configuration* configuration, OpProblem* problem,
+    int& maxneigh, int& minneigh, int nbmoves)
+{
+    int nbvariables;
+    minneigh = minneighbors;
+    if (nbhrate) {
+        if (var_conflict)
+            nbvariables = configuration->var_conflict.size();
+        else
+            nbvariables = configuration->nbvar;
+        maxneigh = (int)(nbhrate * nbvariables * (problem->domainsize - 1));
+        if (minneigh > maxneigh)
+            minneigh = maxneigh;
+    } else
+        maxneigh = maxneighbors;
+    // reglage dynamique possible si TRACEMODE=2 (information stockée pour ce reglage)
+    if (TRACEMODE == 2)
+        dynamicmaxneighbors(maxneigh, minneigh, nbmoves);
+    if (var_conflict)
+        problem->adjust_parameters(configuration, maxneigh, minneigh);
+}
+
+/*
+Algo de base qui sélectionne, teste et effectue un mouvement à partir de la configuration courante
+Effectue le mouvement et renvoie 1 si un mvt a été effectué et 0 si aucun mouvement ne l'a été
+*/
+
+int LSAlgorithm::configurationmove(OpProblem* problem, Configuration* configuration)
+{
+    int nbtries = 0;
+
+    Move* bestmove = problem->bestmove;
+    Move* currentmove = problem->currentmove;
+    Move* firstmove = problem->firstmove;
+
+    bestmove->valuation = LONG_MAX;
+
+    int bestfound = 0;
+    int feasiblefound = 0;
+    int accepted = 0;
+    int nbrefused = 0;
+
+    int maxneigh;
+    int minneigh;
+    // cas des variables en conflit : on calcule l'ensemble des variables en conflit
+    if (nbhsearch->var_conflict)
+        problem->compute_var_conflict(configuration);
+
+    // calcul des parametres maxneigh et minneigh à partir du voisinage
+    nbhsearch->adjust_neighborhood(configuration, problem, maxneigh, minneigh, nbmoves);
+
+    // boucle sur les voisins essayés
+    while ((nbtries < minneigh) || ((nbtries < maxneigh) && !accepted)) {
+        problem->next_move(configuration, currentmove, nbhsearch);
+        if (isfeasible(currentmove)) {
+            // première valeur faisable ? (sous seuil)
+            if (!feasiblefound) {
+                firstmove->copymove(currentmove);
+                feasiblefound = 1;
+            }
+
+            // meilleur que le meilleur trouve jusqu'à présent ?
+            if (test_bestfound(currentmove))
+                bestfound = 1;
+
+            // test d'acceptation de la métaheuristique
+            if (bestfound //(aspiration si meilleur_trouve)
+                || ((!accepted) && mheur->acceptance(currentmove, configuration))
+                || (accepted && minneigh > 1 && currentmove->valuation < bestmove->valuation && mheur->acceptance(currentmove, configuration))) {
+                if (!accepted) // 1er acceptable
+                // remise a max de bestcost pour que le 1er acceptable soit le "meilleur du voisinage"
+                {
+                    bestmove->valuation = LONG_MAX;
+                    accepted = 1;
+                }
+                if (minneigh > 1 && currentmove->valuation < bestmove->valuation) // mise a jour du meilleur acceptable
+                {
+                    bestmove->copymove(currentmove);
+                }
+            } else
+            // mise à jour du meilleur dans le voisinage (courant non acceptable et aucun acceptable n'a été trouvé)
+            {
+                if (!accepted && nbhsearch->finished >= 2 && currentmove->valuation < bestmove->valuation
+                    && nbrefused < nbhsearch->finished) {
+                    bestmove->copymove(currentmove);
+                }
+                nbrefused++;
+            }
+        }
+        nbtries++;
+    }
+
+    nhtries += nbtries;
+    avgnhtries = ((nbmoves - 1) * avgnhtries + nbtries) / nbmoves;
+    avgsqnhtries = ((nbmoves - 1) * avgsqnhtries + nbtries * nbtries) / nbmoves;
+    nbmoves++;
+    // choix du mouvement à exécuter
+    // le meilleur accepté ou le meilleur faisable (si aucun accepté)
+    if ((accepted && minneigh > 1) || (!accepted && nbhsearch->finished >= 2)) {
+        currentmove = bestmove;
+    }
+    // le premier faisable si aucun n'est accepté
+    if (!accepted && nbhsearch->finished == 1 && feasiblefound) {
+        currentmove = firstmove;
+    }
+    if ((accepted) || ((nbhsearch->finished != 0) && feasiblefound))
+    // mise à jour des structures de données de l'heuristique, du problème, puis
+    // exécution du mouvement.
+    {
+        nbhsearch->spareneighboradjust(configuration, currentmove);
+        mheur->executebeforemove(currentmove, configuration, problem);
+        configuration->update_conflicts(problem, currentmove);
+        problem->move_execution(configuration, currentmove);
+        //	  *ofile << " valeur " << currentmove->valuation << " verif : " << problem->config_evaluation(configuration)<< endl;
+
+        if (TRACEMODE == 2) {
+            Statistiques->costvalues.push_back(currentmove->valuation);
+            Statistiques->examinedneighbors.push_back(nbtries);
+            //    Statistiques->examinedneighbors.push_back(maxneigh);
+        }
+        if (bestfound)
+        // stockage du nouveau meilleur
+        {
+            problem->best_config->copy_element(configuration);
+        }
+        return 1; // mouvement effectué
+    }
+    return 0; // pas de mouvement effectué
+}
+
+int LSAlgorithm::isfeasible(Move* move)
+{
+    return 1;
+}
+
+/* le test de faisablité d'un mouvement dans une marche de GWW: rester sous le seuil */
+int LSAlgorithmGWW::isfeasible(Move* move)
+{
+    return (move->valuation <= threshold);
+}
+
+/* Une marche aléatoire : on initialise la métaheuristique et on effectue "walklength" mouvements */
+void LSAlgorithm::randomwalk(OpProblem* problem, Configuration* configuration)
+{
+    int res;
+    mheur->reinit(problem);
+    for (int i = 0; i < walklength; i++) {
+        Long aval = configuration->valuation;
+        res = configurationmove(problem, configuration);
+        if (res) {
+            Statistiques->nb_moves[Statistiques->current_try]++;
+            if (configuration->valuation < aval)
+                Statistiques->nb_moves_down[Statistiques->current_try]++;
+            else if (configuration->valuation > aval)
+                Statistiques->nb_moves_up[Statistiques->current_try]++;
+        }
+
+        if (configuration->valuation == problem->lower_bound)
+            break; // critere arret
+    }
+}
+
+/* un algo simple de recherche locale n'a qu'un élément dans la population  */
+void LSAlgorithm::run(OpProblem* problem, Configuration** population)
+
+{
+    nhtries = 0;
+    nbmoves = 1;
+    nbhsearch->initsearch();
+
+    randomwalk(problem, population[0]);
+    //  ecriture_fin_lsrun(avgnhtries,avgsqnhtries);
+}
+
+//************************************** GWW ******************************************************
+
+/* Marche aléatoire (ou recherche locale) de gww
+   le dernier mouvement est avec un seuil baissé pour forcer une amélioration et éviter un regroupement  si lastmovedescent=1
+   En cas de stagnation, on arrête la marche si nomovestop=1
+*/
+
+void GWWAlgorithm::randomwalk(OpProblem* problem, Configuration* configuration)
+{
+    int val;
+    if (configuration->regrouped)
+        for (int i = 0; i < walkalgorithm->walklength - 1; i++) {
+            val = walkalgorithm->configurationmove(problem, configuration);
+            if (val)
+                Statistiques->nb_moves[Statistiques->current_try]++;
+            if (nomovestop) // stagnation : arret de la marche de la particule
+                if (val == 0)
+                    return;
+            if (configuration->valuation == problem->lower_bound)
+                return; // on a trouve une solution : arret
+        }
+    Long thresh1 = walkalgorithm->threshold;
+    if (lastmovedescent)
+        thresholdupdate(); // baisse lors du dernier mouvement (on suppose la meme baisse que la
+    //dernière effectuée)
+    val = walkalgorithm->configurationmove(problem, configuration);
+    if (val)
+        Statistiques->nb_moves[Statistiques->current_try]++;
+    if (lastmovedescent)
+        walkalgorithm->threshold = thresh1; // remise du seuil
+    if (configuration->valuation == problem->lower_bound)
+        return; // on a trouve une solution : arret
+}
+
+/* nombre de particules au seuil avant la baisse du seuil (pour les statistiques) : la population etant triée à l'appel */
+
+int GWWAlgorithm::nb_threshold_population(Configuration** population) { return 0; }
+
+int ThresholdGWWAlgorithm::nb_threshold_population(Configuration** population)
+{
+    int nb_threshold = 0;
+    int i = 0;
+    while (i < populationsize && population[i]->valuation == walkalgorithm->threshold) {
+        nb_threshold++;
+        i++;
+    }
+    return nb_threshold;
+}
+
+/* l'algo GWW : boucle sur regroupement et marche aleatoire */
+void GWWAlgorithm::run(OpProblem* problem, Configuration** population)
+{
+    int nb_pas = nbiteration;
+    Long meilleur = valeur_min(population, populationsize);
+    // initialisation du champ regrouped (=0 si marche depend du regroupement, =1 sinon)
+    for (int i = 0; i < populationsize; i++) {
+        if (regrouptest)
+            population[i]->regrouped = 0;
+        else
+            population[i]->regrouped = 1;
+    }
+
+    thresholdcomputedelta(population);
+    thresholdupdate();
+    *ofile << " premier seuil " << walkalgorithm->threshold;
+    if (walkalgorithm->threshold < meilleur)
+        walkalgorithm->threshold = valeur_max(population, populationsize);
+
+    while (meilleur != problem->lower_bound && walkalgorithm->threshold >= meilleur && nb_pas > 0) {
+        regrouping(population);
+        total_nhtries = 0;
+        total_nbmoves = 0;
+        populationrandomwalk(problem, population);
+        populationsort(population, populationsize);
+        if (elitism)
+            populationkeepbest(problem, population);
+        meilleur = valeur_min(population, populationsize);
+        thresholdcomputedelta(population);
+        if (TRACEMODE)
+            //       ecriture_changement_seuil
+            *ofile << walkalgorithm->threshold << thresholddelta << meilleur
+                   << population[0]->valuation << population[populationsize / 2]->valuation
+                   << total_nhtries << nb_threshold_population(population);
+        thresholdupdate();
+        thresholdchangesupdate();
+        nb_pas--;
+    }
+    Statistiques->thresholdchanges += thresholdchanges;
+    // ecriture_fin_gww(thresholdchanges, total_nbmoves);
+}
+
+/* ELITISME : si le meilleur absolu est meilleur que le meilleur courant, on remplace
+   le plus mauvais de la population par le meilleur absolu */
+
+void GWWAlgorithm::populationkeepbest(OpProblem* problem, Configuration** population)
+{
+    if (population[populationsize - 1]->valuation > problem->best_config->valuation) {
+        population[0]->copy_element(problem->best_config);
+        // *ofile << "best config " << problem->best_config.valuation << " evaluation " << problem->config_evaluation(problem->best_config) << endl;
+        populationsort(population, populationsize);
+    }
+    // *ofile << " meilleur " << population[populationsize-1].valuation;
+}
+
+// les méthodes de baisse du seuil
+
+void GWWAlgorithm::thresholdcomputedelta(Configuration** population)
+{
+    ;
+}
+
+// baisse du seuil avec un taux thresholddescent (valeur typique 0.005) et une valeur thresholdmin
+
+void StandardGWWAlgorithm::thresholdcomputedelta(Configuration** population)
+{
+    thresholddelta = (Long)(thresholddescent * (walkalgorithm->threshold - thresholdmin));
+    if (thresholddelta <= 0)
+        thresholddelta = 1;
+}
+
+/* baisse rapide du seuil avec un taux thresholddescent (valeur typique 0.005)
+    à partir de la plus mauvaise valeur et une valeur thresholdmin */
+void FastStandardGWWAlgorithm::thresholdcomputedelta(Configuration** population)
+{
+    thresholddelta = walkalgorithm->threshold - population[0]->valuation + (Long)(thresholddescent * (population[0]->valuation - thresholdmin));
+    if (thresholddelta <= 0)
+        thresholddelta = 1;
+}
+
+// baisse pour que nbkilled soient tues
+void AdaptiveGWWAlgorithm::thresholdcomputedelta(Configuration** population)
+{
+    Long minval = population[nbkilled - 1]->valuation;
+    if (minval < walkalgorithm->threshold)
+        thresholddelta = walkalgorithm->threshold - minval;
+    else
+        thresholddelta = 1;
+}
+
+/* baisse jusqu'au minimum des valeurs du seuil obtenu par les 2 modes precedents */
+void FastAdaptGWWAlgorithm::thresholdcomputedelta(Configuration** population)
+{
+    if (population[nbmaxkilled - 1]->valuation == walkalgorithm->threshold)
+        thresholddelta = 1;
+    else {
+        Long descent1 = population[nbkilled - 1]->valuation;
+        Long descent2 = (Long)((1 - thresholddescent) * walkalgorithm->threshold);
+        Long descent = min(descent1, descent2);
+
+        thresholddelta = walkalgorithm->threshold - descent;
+    }
+}
+
+/* baisse déterminée par un taux de la distance du pire au médian */
+void MedianAdaptGWWAlgorithm::thresholdcomputedelta(Configuration** population)
+{
+    thresholddelta = 1 + walkalgorithm->threshold - valeur_max(population, populationsize) + (Long)(mediandescent * (valeur_max(population, populationsize) - valeur_mediane(population, populationsize)));
+}
+
+/* baisse déterminée par un taux de la distance du pire au meilleur */
+void BestAdaptGWWAlgorithm::thresholdcomputedelta(Configuration** population)
+{
+    thresholddelta = 1 + walkalgorithm->threshold - valeur_max(population, populationsize) + (Long)(bestdescent * (valeur_max(population, populationsize) - valeur_min(population, populationsize)));
+}
+
+void GWWAlgorithm::thresholdupdate()
+{
+    ;
+}
+
+void ThresholdGWWAlgorithm::thresholdupdate()
+{
+    walkalgorithm->threshold = walkalgorithm->threshold - thresholddelta;
+}
+
+void LSAlgorithm::initthreshold(Configuration** population, int taille)
+{
+    threshold = LONG_MAX;
+}
+
+void GWWAlgorithm::initthreshold(Configuration** population, int taille)
+{
+    walkalgorithm->threshold = LONG_MAX;
+}
+
+void ThresholdGWWAlgorithm::initthreshold(Configuration** population, int taille)
+{
+    walkalgorithm->threshold = valeur_max(population, taille);
+    thresholdchanges = 0;
+}
+
+void GWWAlgorithm::thresholdchangesupdate()
+{
+    ;
+}
+
+void ThresholdGWWAlgorithm::thresholdchangesupdate()
+{
+    thresholdchanges++;
+}
+
+/* Marche (aléatoire ou recherche locale) sur l'ensemble de la population : appel de la marche aléatoire sur chaque élément */
+void GWWAlgorithm::populationrandomwalk(OpProblem* problem, Configuration** population)
+
+{
+    walkalgorithm->nhtries = 0;
+    walkalgorithm->nbmoves = 0;
+    for (int i = 0; i < populationsize; i++) {
+        randomwalk(problem, population[i]);
+        if (population[i]->valuation == problem->lower_bound)
+            break; // arret : borne inferieure atteinte
+    }
+    total_nhtries += walkalgorithm->nhtries;
+    total_nbmoves += walkalgorithm->nbmoves;
+}
+
+/* les méthodes d'interaction entre elements (travail sur la population) */
+
+void GWWAlgorithm::regrouping(Configuration** population)
+{
+    ;
+}
+
+/* Elimination des configurations superieures ou egales au seuil */
+
+void StandardGWWAlgorithm::regrouping(Configuration** population)
+{
+    vector<int> bonnes_config;
+    vector<int> mauvaises_config;
+    for (int i = 0; i < populationsize; i++) {
+        if (population[i]->valuation <= walkalgorithm->threshold)
+            bonnes_config.push_back(i);
+        else
+            mauvaises_config.push_back(i);
+    }
+    for (vector<int>::iterator ci = mauvaises_config.begin(); ci != mauvaises_config.end(); ci++) {
+        int bon = (int)(mydrand() * bonnes_config.size());
+        population[*ci]->copy_element(population[bonnes_config[bon]]);
+        population[*ci]->regrouped = 1;
+        population[bonnes_config[bon]]->regrouped = 1;
+    }
+}
+
+/* Elimination des plus mauvais au dessus du seuil  (la population est triee) */
+
+void AdaptiveGWWAlgorithm::regrouping(Configuration** population)
+{
+    int nb_to_kill = 0;
+    for (int i = 0; i < populationsize; i++) {
+        if (population[i]->valuation <= walkalgorithm->threshold)
+            break;
+        nb_to_kill++;
+    }
+    if (TRACEMODE)
+        ecriture_nb_tues(nb_to_kill);
+    for (int i = 0; i < nb_to_kill; i++) {
+        int bon = ((int)(mydrand() * (populationsize - nb_to_kill))) + nb_to_kill;
+        population[i]->copy_element(population[bon]);
+        population[i]->regrouped = 1;
+        population[bon]->regrouped = 1;
+    }
+}
+
+/* Elimination des nbkilled  plus mauvais */
+
+void NothresholdGWWAlgorithm::regrouping(Configuration** population)
+
+{
+    for (int j = 0; j < nbkilled; j++) {
+        Long val = population[0]->valuation;
+        int mauvais = 0;
+        for (int i = 0; i < populationsize; i++)
+            if (population[i]->valuation > val) {
+                mauvais = i;
+                val = population[i]->valuation;
+            }
+        {
+            int bon = (int)(mydrand() * (populationsize - 1));
+            if (bon >= mauvais)
+                bon++;
+            population[mauvais]->copy_element(population[bon]);
+            population[mauvais]->regrouped = 1;
+            population[mauvais]->regrouped = 1;
+        }
+    }
+}
+
+//*****************************************************************************************************
+
+// les méthodes particulières des algorithmes de recherche locale
+
+void Metaheuristic::reinit(OpProblem* problem)
+{
+    ;
+}
+
+void Metaheuristic::executebeforemove(Move* move, Configuration* configuration, OpProblem* problem)
+{
+    ;
+}
+
+int Metaheuristic::acceptance(Move* move, Configuration* config)
+{
+    return 1;
+}
+
+/* la marche aléatoire : tout mouvement est accepté */
+int RandomSearch::acceptance(Move* move, Configuration* config)
+{
+    return 1;
+}
+
+/* Descente avec plateau : tout mouvement améliorant ou neutre est accepté */
+int GreedySearch::acceptance(Move* move, Configuration* config)
+{
+    return (move->valuation <= config->valuation);
+}
+
+/* Metropolis à temperature constante : condition d'acceptation d'un mouvement */
+
+int Metropolis::acceptance(Move* move, Configuration* config)
+{
+    if ((move->valuation <= config->valuation)
+        || (mydrand() < exp(-(move->valuation - config->valuation) / temperature)))
+        //     (mydrand() < exp(-(move->valuation  - config->valuation).to_double()/temperature)))
+        return 1;
+    else
+        return 0;
+}
+
+void Metropolis::adjustparameter(int temp) // pour le reglage automatique qui ne marche qu'avec des paramètres entiers
+{
+    temperature = ((double)(temp)) / 100;
+}
+
+/* la methode de recherche avec liste taboue */
+
+/* remise a vide de la liste taboue */
+void TabuSearch::reinit(OpProblem* problem)
+{
+    for (list<Move*>::iterator imove = move_list.begin(); imove != move_list.end(); imove++)
+        delete *imove;
+    move_list.clear();
+}
+
+/* remise a zero des dates de fin de temps tabou par mouvement*/
+void IncrTabuSearch::reinit(OpProblem* problem)
+{
+    currentproblem = problem;
+    tabutime.clear();
+    for (int i = 0; i < problem->nbtabuindex(); i++)
+        tabutime.push_back(0);
+    nbiter = 0;
+}
+
+/* acceptation d'un mouvement : non tabou  (le critère d'aspiration est dans l'algo de recherche du voisin) */
+int TabuSearch::acceptance(Move* move, Configuration* config)
+{
+    return (nontabumove(move));
+}
+
+void TabuSearch::adjustparameter(int length) // pour le reglage automatique de la longueur de la liste taboue
+{
+    tabulength = length;
+}
+
+/* acceptation d'un mouvement : non tabou  et améliorant (le critère d'aspiration est dans l'algo de recherche du voisin) */
+int TabuGreedySearch::acceptance(Move* move, Configuration* config)
+{
+    return (move->valuation <= config->valuation && nontabumove(move));
+}
+
+int IncrTabuGreedySearch::acceptance(Move* move, Configuration* config)
+{
+    return (move->valuation <= config->valuation && IncrTabuSearch::acceptance(move, config));
+}
+
+/* la liste taboue est implantée comme une liste de pointeurs sur mouvement : test de présence avec eqmove*/
+int TabuSearch::nontabumove(Move* move)
+{
+    for (list<Move*>::iterator imove = move_list.begin(); imove != move_list.end(); imove++)
+        if ((*imove)->eqmove(move))
+            return 0;
+    return 1;
+}
+
+/* la liste est traitée comme une file de longueur maximale tabulength : fonction de mise à jour avant mouvement */
+void TabuSearch::executebeforemove(Move* move, Configuration* configuration, OpProblem* problem)
+{
+    Move* move1 = move->computetabumove(configuration);
+    move_list.push_back(move1);
+    if ((int)move_list.size() > tabulength) {
+        Move* move2 = move_list.front();
+        delete move2;
+        move_list.pop_front();
+    }
+}
+
+/* la liste tabou est implantée comme une date de fin d'état tabou pour un mouvement */
+int IncrTabuSearch::acceptance(Move* move, Configuration* config)
+{
+    return (tabutime[currentproblem->tabuindex(move, config)] <= nbiter);
+}
+
+void IncrTabuSearch::executebeforemove(Move* move, Configuration* config, OpProblem* problem)
+{
+    tabutime[currentproblem->tabuinverseindex(move, config)] = nbiter + tabulength + 1;
+    nbiter++;
+}
+
+/* l'acceptation à seuil (TA) : méthode d'acceptation d'un mouvement*/
+
+int ThresholdAccepting::acceptance(Move* move, Configuration* config)
+{
+    return ((move->valuation - config->valuation) < thresholdaccept);
+}
+
+void ThresholdAccepting::executebeforemove(Move* move, Configuration* configuration, OpProblem* problem)
+{
+    thresholdaccept -= delta;
+}
+
+/* remise du seuil à thresholdinit */
+void ThresholdAccepting::reinit(OpProblem* problem)
+{
+    thresholdaccept = thresholdinit;
+}
+
+/* le recuit simulé avec baisse de température constante à chaque mouvement*/
+/* le recuit simulé : acceptation en fonction de la température */
+
+int SimulatedAnnealing::acceptance(Move* move, Configuration* config)
+{
+    if ((move->valuation <= config->valuation)
+        || (mydrand() < exp(-(move->valuation - config->valuation) / temperature)))
+        //     (mydrand() < exp(-(move->valuation  - config->valuation).to_double()/temperature)))
+        return 1;
+    else
+        return 0;
+}
+
+/* baisse de température constante de delta à chaque mouvement */
+void SimulatedAnnealing::executebeforemove(Move* move, Configuration* configuration, OpProblem* problem)
+{
+    temperature -= delta;
+}
+
+/* remise de la temperature initiale */
+void SimulatedAnnealing::reinit(OpProblem* problem)
+{
+    temperature = inittemperature;
+}
+
+/* les mouvements */
+
+Move::Move() { valuation = 0; }
+CSPMove::CSPMove()
+{
+    valuation = 0;
+    value = 0;
+    variable = 0;
+}
+
+/* copie de mouvement move1 dans this */
+void Move::copymove(Move* move1)
+{
+    valuation = move1->valuation;
+}
+
+void CSPMove::copymove(Move* move1)
+{
+    valuation = move1->valuation;
+    value = ((CSPMove*)move1)->value;
+    variable = ((CSPMove*)move1)->variable;
+}
+
+/* le mouvement stocké tabou est le mouvement inverse du mouvement effectué */
+Move* CSPMove::computetabumove(Configuration* configuration)
+{
+    CSPMove* tabumove = new CSPMove();
+    tabumove->variable = variable;
+    tabumove->value = configuration->config[tabumove->variable];
+    return tabumove;
+}
+
+/* test d'égalité de 2 mouvements : utile pour la liste taboue */
+int Move::eqmove(Move* move1)
+{
+    return 0;
+}
+
+/* Test que le mvt (variable,valeur) n'est pas tabou. */
+int CSPMove::eqmove(Move* move1)
+{
+    return (
+        ((CSPMove*)move1)->value == value && ((CSPMove*)move1)->variable == variable);
+}
+
+/*-----------------------------------------------------------------------------------------*/
+/*                             TabuAcceptingrate                                           */
+/*-----------------------------------------------------------------------------------------*/
+// implanté comme une sous-classe de TabuSearch
+
+// le constructeur :
+
+TabuAcceptingrate::TabuAcceptingrate(int tabul, float cPd, float cP0)
+    : TabuSearch(tabul)
+{
+    P0 = cP0;
+    Pd = cPd;
+}
+
+/* critère d'acceptation : non tabou et pourcentages d'acceptation suivant sens du mouvement (détériorant, neutre, améliorant) */
+int TabuAcceptingrate::acceptance(Move* move, Configuration* config)
+{
+    return (nontabumove(move)
+        && ((move->valuation < config->valuation) || ((move->valuation == config->valuation) && (mydrand() < P0)) || ((mydrand() < Pd))));
+}
diff --git a/code/include/tb2/incop/incoputil.cpp b/code/include/tb2/incop/incoputil.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1f3d38473d1af5135ddc540efd4f321945fac7f7
--- /dev/null
+++ b/code/include/tb2/incop/incoputil.cpp
@@ -0,0 +1,862 @@
+/* ------------------------------------------------------------
+Les fonctions utilitaires de incop : Statistiques,
+lecture des arguments des algos , ecriture,  lancement d'un essai,
+------------------------------------------------------------ */
+
+#include <assert.h>
+#include <cerrno>
+#include <stdio.h>
+#include <list>
+#include <vector>
+#include <string>
+#include <set>
+#include <algorithm>
+using namespace std;
+#include <iostream>
+#include <fstream>
+#include "timer.h"
+#include "incop.h"
+#include "incoputil.h"
+
+#include <math.h>
+#include <unistd.h>
+
+#include <stdlib.h>
+//#include <signal.h>
+
+ofstream* ofile = NULL; // le fichier de sortie
+
+Stat_GWW* Statistiques; //  l'objet pour les statistiques en variable globale
+// alloué dans le main() avec npb et nbessais
+
+int TRACEMODE = 0; // variable globale : niveau de trace
+
+//struct sigaction Action;  // trombe_ajout : pour les signaux
+
+/* ------------------------------------ STATISTIQUES ---------------------------------------*/
+
+Stat_GWW::Stat_GWW(int number_problems, int number_tries)
+{
+    nb_pbs = number_problems;
+    trouve = new int[number_problems];
+    for (int i = 0; i < number_problems; i++) {
+        trouve[i] = 0;
+    }
+    max_tries = number_tries;
+    cost_try = new Long[number_tries];
+    nb_moves = new int[number_tries];
+    nb_moves_up = new int[number_tries];
+    nb_moves_down = new int[number_tries];
+    nb_moves_avg = 0;
+    total_problem_time = new float[number_problems];
+    execution_time_try = new float[number_tries];
+    total_execution_time = 0.0;
+    current_pb = 0;
+}
+
+Stat_GWW::~Stat_GWW()
+{
+    delete[] trouve;
+    delete[] cost_try;
+    delete[] nb_moves;
+    delete[] nb_moves_up;
+    delete[] nb_moves_down;
+    delete[] total_problem_time;
+    delete[] execution_time_try;
+}
+
+void Stat_GWW::init_pb(int t)
+{
+    current_pb = t;
+    thresholdchanges = 0;
+}
+
+void Stat_GWW::init_run()
+{
+    trouve[current_pb] = 0;
+}
+
+void Stat_GWW::init_try(int trynumber)
+{
+    current_try = trynumber;
+    nb_moves[trynumber] = 0;
+    nb_moves_up[trynumber] = 0;
+    nb_moves_down[trynumber] = 0;
+    execution_time_try[trynumber] = 0;
+    costvalues.push_back(0);
+    costvalues.clear();
+    examinedneighbors.push_back(0);
+    examinedneighbors.clear();
+}
+
+void Stat_GWW::execution_report(int nessai, Long lower_bound)
+{
+#ifdef __WIN32__
+    execution_time_try[nessai] += 1.00;
+    cout << " WARNING : Timer not supported under windows OS : ==> incop exec time is false " << endl;
+#else
+    execution_time_try[nessai] += VIRTUAL_TIMELAPSE;
+#endif
+
+    if (cost_try[nessai] == lower_bound) {
+        trouve[current_pb]++;
+    }
+    ecriture_stat_essai();
+
+    total_execution_time += (float)execution_time_try[nessai];
+    *ofile << " temps total execution " << total_execution_time << endl;
+}
+
+//void sigaction()
+//  {Action.sa_handler=handler_stat;           // trombe_ajout : d�tournement du signal SIGUSR1
+//  sigaction(SIGUSR1, &Action, NULL);        // trombe_ajout : d�tournement du signal SIGUSR1
+//  }
+
+// ajout_trombe : rajout de la fonction suivante pour les signaux !!!
+
+//void handler_stat (int sig) {
+//
+//  *ofile  << "==========================================================================" << endl;
+//  *ofile  << "Signal " << sig << " recu !!" << endl;
+//
+// // ecriture_stat_probleme();   // stats sur les derniers essais du probl�me courant
+//
+//  if (Statistiques->current_pb > 1) {
+//    ecriture_statistiques_global (); // stats sur tous les probl�mes
+//  }
+//
+//  cout << "Fin resolution (interrompue) en : " << Statistiques->total_execution_time
+//       << " secondes" << endl;
+//
+//  sleep(1);
+//
+//  kill (getpid(), 9);   // suicide
+//
+//}
+
+/*----------------------------------- LECTURE DES ARGUMENTS ----------------------------------*/
+
+/* les fonctions de lecture et de v�rification de type et de valeur des donn�es */
+
+int argument2ul(char* arg, const char* message)
+{
+    char* error;
+    int s = strtoul(arg, &error, 10);
+    if (error == arg || errno == ERANGE) {
+        cerr << "Erreur " << message << " pas un entier " << arg << endl;
+        exit(1);
+    }
+    return s;
+}
+
+double argument2d(char* arg, const char* message)
+{
+    char* error;
+    errno = 0;
+    double s = strtod(arg, &error);
+    if (errno == ERANGE || error == arg) {
+        cerr << "Erreur " << message << " pas un nombre " << arg << endl;
+        exit(1);
+    }
+    return s;
+}
+
+double argument2bd(char* arg, const char* message, double min1, double max1)
+{
+    double s = argument2d(arg, message);
+    if ((s < min1) || (s > max1)) {
+        cerr << "Erreur " << message << arg << " doit être compris entre " << min1 << " et " << max1;
+        exit(1);
+    }
+    return s;
+}
+
+int argument2bul(char* arg, const char* message, int min1, int max1)
+{
+    int s = argument2ul(arg, message);
+    if ((s < min1) || (s > max1)) {
+        cerr << "Erreur " << message << arg << " doit être compris entre " << min1 << " et " << max1;
+        exit(1);
+    }
+    return s;
+}
+
+string argument2lp(char* arg, const char* message, list<string>& possibles)
+{
+    string s = arg;
+    if (find(possibles.begin(), possibles.end(), arg) == possibles.end()) {
+        cerr << message << arg << endl;
+        exit(1);
+    }
+    return s;
+}
+
+/* la liste des m�thodes implant�es */
+
+void definir_liste_methodes(list<string>& liste_methodes)
+{
+    liste_methodes.push_back("metropolis");
+    liste_methodes.push_back("tabu");
+    liste_methodes.push_back("incrtabu");
+
+    liste_methodes.push_back("idw"); // idw
+    liste_methodes.push_back("idwa"); // idw avec min-voisins = 1 et epuisement = 1 (any)
+
+    liste_methodes.push_back("idwb"); //  idw min-voisins =1 et epuisement=max-voisins (best)
+    liste_methodes.push_back("idwbsn"); //  idw min-voisins =1 et epuisement=max-voisins dynamique
+    liste_methodes.push_back("idwgra"); // idw min-voisins = max-voisins et epuisement=1 (any)
+
+    liste_methodes.push_back("idwgrb"); // idw min-voisins=max-voisins et epuisement= max-voisins (best)
+
+    liste_methodes.push_back("idwtabu"); // idw avec liste taboue
+    liste_methodes.push_back("idwatabu"); // idwa avec liste taboue
+    liste_methodes.push_back("idwbtabu"); // idwb avec liste taboue
+    liste_methodes.push_back("idwgratabu"); // idwgra avec liste taboue
+    liste_methodes.push_back("idwgrbtabu"); // idwgrb avec liste taboue
+    liste_methodes.push_back("idwincrtabu"); // idw avec liste taboue
+    liste_methodes.push_back("idwaincrtabu"); // idwa avec liste taboue
+    liste_methodes.push_back("idwbincrtabu"); // idwb avec liste taboue
+    liste_methodes.push_back("idwgraincrtabu"); // idwgra avec liste taboue
+    liste_methodes.push_back("idwgrbincrtabu"); // idwgrb avec liste taboue
+
+    liste_methodes.push_back("simann");
+    liste_methodes.push_back("taburate");
+    liste_methodes.push_back("descente");
+    liste_methodes.push_back("greedy"); // idw voisinage explor� (min=max) cf autotuning2.cc
+    liste_methodes.push_back("idwaminmax");
+    liste_methodes.push_back("idwbminmax");
+    liste_methodes.push_back("idwupk");
+    liste_methodes.push_back("idwgrupk");
+    liste_methodes.push_back("grwrate");
+    liste_methodes.push_back("threshold");
+    liste_methodes.push_back("random");
+    liste_methodes.push_back("gww");
+    liste_methodes.push_back("gww-nothreshold");
+    liste_methodes.push_back("gww-killworst");
+    liste_methodes.push_back("gww-adaptkillworst");
+    liste_methodes.push_back("gww-mediandist");
+    liste_methodes.push_back("gww-bestdist");
+    liste_methodes.push_back("gww-adapt");
+}
+
+void arguments_arret(char** argv, int& narg, int& stop)
+{
+    stop = argument2ul(argv[narg + 1], " arret 1re sol");
+    // *ofile << " arret 1re sol " << stop << endl;
+    narg++;
+}
+
+void arguments_tempscpu(char** argv, int& narg, double& maxtime)
+{
+    maxtime = argument2d(argv[narg + 1], " max temps cpu");
+    // *ofile << " temps cpu max " << maxtime << endl;
+    narg++;
+}
+
+void arguments_borneinf(char** argv, int& narg, Long& borneinf)
+{
+    borneinf = argument2ul(argv[narg + 1], " borne inferieure ");
+    // *ofile << " borne inferieure " << borneinf << endl;
+    narg++;
+}
+
+void arguments_methode(char** argv, int& narg, int& graine1, int& nbessais, string& method, list<string>& methodes_possibles)
+{
+    graine1 = argument2ul(argv[narg + 1], " graine du g�n�rateur al�atoire de la m�thode ");
+    nbessais = argument2ul(argv[narg + 2], " nombre d'essais ");
+    method = argument2lp(argv[narg + 3], "methode non implantee ", methodes_possibles);
+
+    narg = narg + 3;
+    //  *ofile << " graine tirage al�atoire " << graine1
+    //	 << " nb essais " << nbessais << " m�thode " << method << endl;
+}
+
+void arguments_tracemode(char** argv, int& narg)
+{
+    TRACEMODE = argument2ul(argv[narg + 1], "indicateur trace ");
+    // *ofile << " mode trace " << TRACEMODE << endl;
+    narg++;
+}
+
+void arguments_algorithme(char** argv, int& narg, int& nbmouv)
+{
+    nbmouv = argument2ul(argv[narg + 1], "longueur marche ");
+    // *ofile << " longueur marche " << nbmouv << endl;
+    narg = narg + 1;
+}
+
+void arguments_metropolis(char** argv, int& narg, double& temp)
+{
+    temp = argument2d(argv[narg + 1], " temperature ");
+    // *ofile << " temperature " << temp;
+    narg = narg + 1;
+}
+
+void arguments_voisinage(char** argv, int& narg, int& taille_voisinage_min, int& taille_voisinage_max, int& fin_voisinage, int& var_conflit, int& val_conflit, int& dynamic)
+
+{
+    string variables_en_conflit = argv[narg + 1];
+
+    if (variables_en_conflit == "cv")
+        var_conflit = 1;
+
+    else
+        var_conflit = 0;
+
+    string minimum_conflit = argv[narg + 2];
+    if (minimum_conflit == "mc")
+        val_conflit = 1;
+    else
+        val_conflit = 0;
+    taille_voisinage_min = argument2ul(argv[narg + 3], " nombre minimum de voisins ");
+    taille_voisinage_max = argument2ul(argv[narg + 4], "nombre maximum de voisins ");
+    //    fin_voisinage=argument2bul(argv[narg+5],"indicateur epuisement voisinage",0,taille_voisinage_max);
+    fin_voisinage = argument2bul(argv[narg + 5], "indicateur epuisement voisinage", 0, RAND_MAX);
+    dynamic = argument2bul(argv[narg + 6], " voisinage dynamique", 0, 1);
+    //    *ofile << " variables en conflit " << variables_en_conflit << " " << var_conflit;
+    //    *ofile << " minimum conflit " << minimum_conflit << " " << val_conflit;
+    //    *ofile << " min voisins " << taille_voisinage_min ;
+    //    *ofile << " max voisins " << taille_voisinage_max;
+    //    *ofile << " epuisement voisinage " << fin_voisinage << endl;
+    //    *ofile << " voisinage dynamique " << dynamic << endl;
+    narg = narg + 6;
+}
+
+void arguments_tabu(char** argv, int& narg, int& longtabu)
+{
+    longtabu = argument2ul(argv[narg + 1], " longueur liste taboue ");
+    // *ofile << " longueur liste taboue " << longtabu;
+    narg = narg + 1;
+}
+
+void arguments_recuit(char** argv, int& narg, double& inittemp)
+{
+    inittemp = argument2d(argv[narg + 1], " temperature initiale ");
+    // *ofile << " temperature initiale " << inittemp;
+    narg = narg + 1;
+}
+
+void arguments_marcheseuil(char** argv, int& narg, int& seuildebut)
+{
+    seuildebut = argument2ul(argv[narg + 1], " seuil debut  ");
+    // *ofile << " seuil debut  " << seuildebut;
+    narg = narg + 1;
+}
+
+void arguments_gww(char** argv, int& narg, int& taille, int& test_regroupement,
+    int& derniermouv, int& elitisme, int& stop)
+{
+    taille = argument2ul(argv[narg + 1], " nombre particules ");
+    test_regroupement = argument2bul(argv[narg + 2], " test regroupement ", 0, 1);
+    derniermouv = argument2bul(argv[narg + 3], " baisse dernier mouvement ", 0, 1);
+    elitisme = argument2bul(argv[narg + 4], " indicateur elitisme ", 0, 1);
+    stop = argument2bul(argv[narg + 5], " indicateur arret stagnation ", 0, 1);
+    // *ofile << " nombre particules " << taille ;
+    // *ofile << " test regroupement " << test_regroupement;
+    // *ofile << " baisse dernier mouvement " << derniermouv;
+    // *ofile << " elitisme " << elitisme;
+    // *ofile << " arret stagnation " << stop;
+    narg = narg + 5;
+}
+
+void arguments_gww_marche(char** argv, int& narg, string& walk_method, list<string>& liste_methodes)
+{
+    walk_method = argument2lp(argv[narg + 1], " methode marche non implant�e ", liste_methodes);
+    //*ofile << " methode marche " << walk_method << endl;
+    narg = narg + 1;
+}
+
+void arguments_gww_standard(char** argv, int& narg, double& descenteseuil, int& seuilmin)
+{
+    descenteseuil = argument2bd(argv[narg + 1], " facteur descente seuil ", 0, 1);
+    seuilmin = argument2ul(argv[narg + 2], " borne inferieure ");
+    // *ofile << " facteur descente seuil " << descenteseuil;
+    // *ofile << " borne-inf�rieure " << seuilmin;
+    narg = narg + 2;
+}
+
+void arguments_gww_descente_rapide(char** argv, int& narg, int& nb_tues, int& nb_tues_max, double& descenteseuil)
+{
+    nb_tues = argument2ul(argv[narg + 1], " nb tu�s ");
+    nb_tues_max = argument2ul(argv[narg + 2], " nb tu�s max ");
+    descenteseuil = argument2bd(argv[narg + 3], " facteur descente seuil ", 0, 1);
+    //*ofile << " nb tu�s " << nb_tues;
+    // *ofile << " nb tues max " << nb_tues_max;
+    // *ofile << " facteur descente seuil " << descenteseuil;
+    narg = narg + 3;
+}
+
+void arguments_gww_distance_median(char** argv, int& narg, double& distance_median)
+{
+    distance_median = argument2bd(argv[narg + 1], " facteur distance median ", 0, 1);
+    // *ofile << " facteur distance median " << distance_median;
+    narg = narg + 1;
+}
+
+void arguments_gww_distance_meilleur(char** argv, int& narg, double& distance_meilleur)
+{
+    distance_meilleur = argument2bd(argv[narg + 1], " facteur distance meilleur ", 0, 1);
+    // *ofile << " facteur distance meilleur " << distance_meilleur;
+    narg = narg + 1;
+}
+
+void arguments_gww_adaptatif(char** argv, int& narg, int& nb_tues)
+{
+    nb_tues = argument2ul(argv[narg + 1], " nb tu�s ");
+    //*ofile << " nb tu�s " << nb_tues;
+    narg++;
+}
+
+void arguments_gww_sans_seuil(char** argv, int& narg, int& nb_tues, int& nb_iter)
+{
+    nb_tues = argument2ul(argv[narg + 1], " nb tu�s ");
+    nb_iter = argument2ul(argv[narg + 2], " nb iterations ");
+    //*ofile << " nb tu�s " << nb_tues;
+    //*ofile << " nb iterations " << nb_iter;
+    narg = narg + 2;
+}
+
+void arguments_taburate(char** argv, int& narg, float& Pd, float& P0, int& longtabu)
+{
+    Pd = argument2bd(argv[narg + 1], " Pd ", 0, 1);
+    P0 = argument2bd(argv[narg + 2], " P0 ", 0, 1);
+    longtabu = argument2ul(argv[narg + 3], " longueur liste taboue ");
+    //  *ofile << " Pd = " << Pd << endl;
+    //  *ofile << " P0 =  " << P0 << endl;
+    //  *ofile << " longueur liste taboue = " << longtabu << endl;
+    narg = narg + 3;
+}
+
+void arguments_grwrate(char** argv, int& narg, double& nbr)
+{
+    nbr = argument2bd(argv[narg + 1], "taux voisinage ", 0, 1);
+    //  *ofile << " taux de voisinage " << nbr << endl;
+    narg++;
+}
+
+/*-----------------------------------------CREATION DES OBJETS ALGORITHMES----------------------------*/
+// lecture des parametres de la marche et creation de l'objet LSAlgorithm
+
+LSAlgorithm* algo_marche(char** argv, int& narg, string& method, int gww)
+
+{
+    LSAlgorithm* algo;
+    Metaheuristic* mheuristic = new Metaheuristic();
+    NeighborhoodSearch* nbhsear;
+    int taille_voisinage_min, taille_voisinage_max, fin_voisinage, var_conflit, val_conflit;
+    int seuildebut = 0;
+    double temp = 0;
+    int longtabu = 0;
+    int dynamic = 0;
+    int nbmouv;
+    double inittemp = 0.0;
+    double nbhr = 0; // defini pour grwrate
+    float Pd = 0.05;
+    float P0 = 0.1;
+    arguments_algorithme(argv, narg, nbmouv);
+    //  *ofile << " methode " << method << endl;
+    if (method == "metropolis")
+        arguments_metropolis(argv, narg, temp);
+    else if (method == "tabu" || method == "incrtabu" || method == "idwtabu" || method == "idwatabu" || method == "idwbtabu" || method == "idwgratabu" || method == "idwgrbtabu" || method == "idwincrtabu" || method == "idwaincrtabu" || method == "idwbincrtabu" || method == "idwgraincrtabu" || method == "idwgrbincrtabu")
+        arguments_tabu(argv, narg, longtabu);
+    else if (method == "simann")
+        arguments_recuit(argv, narg, inittemp);
+    else if (method == "threshold")
+        arguments_marcheseuil(argv, narg, seuildebut);
+    else if (method == "taburate")
+        arguments_taburate(argv, narg, Pd, P0, longtabu);
+    else if (method == "grwrate")
+        arguments_grwrate(argv, narg, nbhr);
+    //  *ofile << " arguments voisinage " << endl;
+    arguments_voisinage(argv, narg, taille_voisinage_min, taille_voisinage_max, fin_voisinage, var_conflit, val_conflit, dynamic);
+    if (gww)
+        algo = new LSAlgorithmGWW(nbmouv);
+    else
+        algo = new LSAlgorithm(nbmouv);
+    if (dynamic) {
+        nbhsear = new DynamicNeighborhoodSearch(taille_voisinage_min, taille_voisinage_max, fin_voisinage, var_conflit, val_conflit, nbhr);
+    } else if (method == "idwbsn")
+        nbhsear = new DynamicSpareneighbor(taille_voisinage_min, taille_voisinage_max, fin_voisinage, var_conflit, val_conflit, nbhr);
+    else
+        nbhsear = new NeighborhoodSearch(taille_voisinage_min, taille_voisinage_max, fin_voisinage, var_conflit, val_conflit, nbhr);
+
+    algo->nbhsearch = nbhsear;
+    if (method == "metropolis")
+        mheuristic = new Metropolis(temp);
+    else if (method == "tabu")
+        mheuristic = new TabuSearch(longtabu);
+    else if (method == "incrtabu")
+        mheuristic = new IncrTabuSearch(longtabu);
+    else if (method == "idwtabu" || method == "idwatabu" || method == "idwbtabu" || method == "idwgratabu" || method == "idwgrbtabu")
+        mheuristic = new TabuGreedySearch(longtabu);
+    else if (method == "idwincrtabu" || method == "idwaincrtabu" || method == "idwbincrtabu" || method == "idwgraincrtabu" || method == "idwgrbincrtabu")
+        mheuristic = new IncrTabuGreedySearch(longtabu);
+    else if (method == "simann")
+        mheuristic = new SimulatedAnnealing(inittemp, nbmouv);
+    else if (method == "threshold")
+        mheuristic = new ThresholdAccepting(seuildebut, nbmouv);
+    else if ((method == "descente") || (method == "greedy") || (method == "grwrate")
+        || (method == "idwupk") || (method == "idwgrupk") || (method == "idwa") || (method == "idwb") || (method == "idwbsn") || (method == "idwgra") || (method == "idwgrb") || (method == "idw") || (method == "idwaminmax") || (method == "idwbminmax"))
+        mheuristic = new GreedySearch();
+    else if (method == "random")
+        mheuristic = new RandomSearch();
+    else if (method == "taburate")
+        mheuristic = new TabuAcceptingrate(longtabu, Pd, P0);
+    algo->mheur = mheuristic;
+    return algo;
+}
+
+// lecture des parametres GWW et creation de l'objet GWWAlgorithm
+
+GWWAlgorithm* algo_gww(char** argv, int& narg, string& method, int& taille, list<string>& liste_methodes)
+{
+    GWWAlgorithm* algogww = new GWWAlgorithm();
+    int testregroupement, nb_tues, nb_tues_max, nb_iter, derniermouv, elitisme, stop;
+    double descenteseuil, distance_median, distance_meilleur;
+    int seuilmin;
+    string walk_method;
+    arguments_gww(argv, narg, taille, testregroupement, derniermouv, elitisme, stop);
+    if (method == "gww-nothreshold") {
+        arguments_gww_sans_seuil(argv, narg, nb_tues, nb_iter);
+        algogww = new NothresholdGWWAlgorithm(taille, testregroupement, derniermouv, elitisme, stop, nb_tues, nb_iter);
+    } else if (method == "gww") {
+        arguments_gww_standard(argv, narg, descenteseuil, seuilmin);
+        algogww = new StandardGWWAlgorithm(taille, testregroupement, derniermouv, elitisme, stop, descenteseuil, seuilmin);
+    } else if (method == "gww-killworst") {
+        arguments_gww_standard(argv, narg, descenteseuil, seuilmin);
+        algogww = new FastStandardGWWAlgorithm(taille, testregroupement, derniermouv, elitisme, stop, descenteseuil, seuilmin);
+    }
+
+    else if (method == "gww-adapt") {
+        arguments_gww_adaptatif(argv, narg, nb_tues);
+        algogww = new AdaptiveGWWAlgorithm(taille, testregroupement, derniermouv, elitisme, stop, nb_tues);
+    } else if (method == "gww-adaptkillworst") {
+        arguments_gww_descente_rapide(argv, narg, nb_tues, nb_tues_max, descenteseuil);
+        algogww = new FastAdaptGWWAlgorithm(taille, testregroupement, derniermouv, elitisme, stop, nb_tues, nb_tues_max, descenteseuil);
+    } else if (method == "gww-mediandist") {
+        arguments_gww_distance_median(argv, narg, distance_median);
+        algogww = new MedianAdaptGWWAlgorithm(taille, testregroupement, derniermouv, elitisme, stop, distance_median);
+    } else if (method == "gww-bestdist") {
+        arguments_gww_distance_meilleur(argv, narg, distance_meilleur);
+        algogww = new BestAdaptGWWAlgorithm(taille, testregroupement, derniermouv, elitisme, stop, distance_meilleur);
+    }
+
+    arguments_gww_marche(argv, narg, walk_method, liste_methodes);
+    algogww->walkalgorithm = algo_marche(argv, narg, walk_method, 1);
+    algogww->walkalgorithm->methodname = method; // bizarrerie a modifier (utilisee pour la trace)
+    return algogww;
+}
+
+// lecture de l'argument method et appel selon l'argument de la cr�ation d'un des  2 principaux types d'algo (LS et GWW)
+IncompleteAlgorithm* algo_creation(char** argv, int& narg, int& taille, int& graine1, int& nbessais)
+{
+    IncompleteAlgorithm* algo = new IncompleteAlgorithm();
+    list<string> liste_methodes;
+    string method;
+    definir_liste_methodes(liste_methodes);
+    arguments_methode(argv, narg, graine1, nbessais, method, liste_methodes);
+    if (method == "gww" || method == "gww-killworst" || method == "gww-nothreshold" || method == "gww-adapt" || method == "gww-adaptkillworst"
+        || method == "gww-mediandist" || method == "gww-bestdist")
+        algo = algo_gww(argv, narg, method, taille, liste_methodes);
+    else {
+        algo = algo_marche(argv, narg, method, 0);
+        taille = 1;
+    }
+    algo->methodname = method;
+    return algo;
+}
+
+//********************************** les utilitaires***********************************************
+
+/* la plus mauvaise valeur de la population */
+Long valeur_max(Configuration** population, int taille)
+{
+    return population[0]->valuation;
+}
+
+/* la meilleure valeur de la population */
+Long valeur_min(Configuration** population, int taille)
+{
+    return population[taille - 1]->valuation;
+}
+
+/* la valeur mediane de la population */
+Long valeur_mediane(Configuration** population, int taille)
+{
+    return population[taille / 2]->valuation;
+}
+
+// le comparateur pour le tri de la population
+static int comparepopulation(const void* e1, const void* e2)
+{
+    return ((*(Configuration**)e1)->valuation < (*(Configuration**)e2)->valuation);
+}
+
+// le tri de la population dans le sens du pire au meilleur
+void populationsort(Configuration** population, int taille)
+{
+    qsort(population, taille, sizeof(Configuration*), comparepopulation);
+}
+
+/* ------------------------------ECRITURES--------------------------------------------------*/
+
+/* le nom du fichier de sortie : pour les tests : resultatsxxx/concat�nation des arguments */
+void ofile_name(char* filename, int argc, char** argv)
+{
+    unsigned offset = sprintf(filename, "%s%s", "results/", argv[2]);
+    char* slide = filename;
+    for (int i = 3; i < argc; i++) {
+        slide += offset;
+        offset = sprintf(slide, "-%s", argv[i]);
+    }
+    cout << filename << endl;
+}
+
+/* les ecritures sur le fichier de sortie *ofile */
+
+void ecriture_graine(int graine, int nessai)
+{
+    *ofile << " essai n. " << nessai << " graine " << graine << endl;
+}
+
+void ecriture_fin_resolution(Long meilleur)
+{
+    *ofile << "meilleure valeur --------->  " << meilleur << " ";
+    *ofile << " nb mouvements " << Statistiques->nb_moves[Statistiques->current_try] << "  ";
+    *ofile << " nb descentes " << Statistiques->nb_moves_down[Statistiques->current_try] << "  ";
+    *ofile << " nb remontees " << Statistiques->nb_moves_up[Statistiques->current_try] << "  " << endl;
+}
+
+void ecriture_debut_resolution(Long pire, Long meilleur, string& method)
+{
+    *ofile << "configuration initiale : "
+           << " pire valeur  " << pire
+           << " meilleure valeur " << meilleur << endl;
+}
+
+void ecriture_stat_essai()
+{
+    *ofile << " Temps essai: " << Statistiques->execution_time_try[Statistiques->current_try]
+           << endl;
+}
+
+void ecriture_stat_probleme()
+{
+    // role : �criture des stats pour le probleme courant avec les essais de 0 � current_try-1
+    int current_problem;
+    int nbessais;
+    float temps_essais_moyen;
+    float nombre_chgseuil_moyen;
+
+    current_problem = Statistiques->current_pb;
+    nbessais = Statistiques->current_try;
+
+    *ofile << "==========================================================================" << endl;
+
+    if (nbessais == 0) {
+        *ofile << " Interruption !! " << endl;
+    } else {
+
+        *ofile << " " << Statistiques->trouve[current_problem] << " essais avec solutions sur "
+               << nbessais << " essais. " << endl;
+
+        double somme = 0;
+        double totalnbmoves = 0;
+        Long meilleur = LONG_MAX;
+        Long pire = 0;
+        double ecart = 0;
+        double moyenne;
+
+        for (int i = 0; i < nbessais; i++) {
+            somme += Statistiques->cost_try[i];
+            //      somme += Statistiques->cost_try[i].to_double();
+            totalnbmoves += Statistiques->nb_moves[i];
+            if (Statistiques->cost_try[i] < meilleur)
+                meilleur = Statistiques->cost_try[i];
+            if (Statistiques->cost_try[i] > pire)
+                pire = Statistiques->cost_try[i];
+        }
+        Statistiques->nb_moves_avg = totalnbmoves / nbessais;
+        moyenne = somme / nbessais;
+        Statistiques->cost_meanvalue = moyenne;
+
+        for (int i = 0; i < nbessais; i++) {
+            ecart += pow((Statistiques->cost_try[i] - moyenne), 2);
+            //      ecart += pow((Statistiques->cost_try [i] - moyenne).to_double(),2);
+        }
+        ecart = sqrt(ecart / nbessais);
+
+        temps_essais_moyen = 0.0;
+        for (int i = 0; i < nbessais; i++) {
+            temps_essais_moyen += Statistiques->execution_time_try[i];
+        }
+        temps_essais_moyen = temps_essais_moyen / nbessais;
+
+        Statistiques->average_execution_time = temps_essais_moyen;
+        nombre_chgseuil_moyen = Statistiques->thresholdchanges / nbessais;
+        *ofile << " Meilleur essai : " << meilleur << endl;
+        *ofile << " Plus mauvais : " << pire << endl;
+        *ofile << " Moyenne : " << moyenne << endl;
+        *ofile << " Ecart type : " << ecart << endl;
+        *ofile << " Temps essai moyen: " << temps_essais_moyen << endl;
+        if (nombre_chgseuil_moyen) // algo de type GWWThresholdAlgorithm
+            *ofile << " Nb changements seuil moyen : " << nombre_chgseuil_moyen << endl;
+        *ofile << " Nb mouvements moyen : " << Statistiques->nb_moves_avg << endl;
+        *ofile << "=========================================================================="
+               << endl
+               << endl;
+    }
+}
+
+void ecriture_changement_seuil(Long seuil, Long delta, Long meilleur, Long pire, Long mediane, int nbessaisvoisins, int nb_au_seuil)
+{
+    *ofile << " --- seuil " << seuil << " delta " << delta
+           << " meilleur " << meilleur
+           << " pire " << pire
+           << " mediane " << mediane
+           << " au seuil " << nb_au_seuil
+           << " voisins test�s " << nbessaisvoisins
+           << endl;
+}
+
+void ecriture_nb_tues(int nb_tues)
+{
+    *ofile << " nombre particules redistribu�es " << nb_tues << endl;
+}
+
+void ecriture_fin_gww(int nb_chang_seuil, int nb_mouv)
+{
+    *ofile << " Fin GWW  : nombre de changements de seuil : " << nb_chang_seuil << endl;
+    *ofile << " nombre total de mouvements : " << nb_mouv << endl;
+}
+
+void ecriture_meilleure_valeur(string& method, Long valeur, Long seuil, int nbmouv, int maxvoisins)
+{
+    *ofile << " meilleure valeur " << valeur;
+    if (method == "gww" || method == "gww-killworst" || method == "gww-adapt" || method == "gww-adaptkillworst" || method == "gww-mediandist"
+        || method == "gww-bestdist")
+        *ofile << " valeur seuil " << seuil;
+    else if (method == "gww-nothreshold")
+        *ofile << " iteration " << nbmouv;
+    else
+        *ofile << " nb mouvements " << nbmouv;
+    *ofile << " temps " << Statistiques->execution_time_try[Statistiques->current_try] << " voisinage " << maxvoisins
+           << endl;
+}
+
+void ecriture_statistiques_global()
+{
+
+    int pbsol; // le nombre de problemes avec au moins un essai r�ussi
+    int npb; // le nombre de problemes etudi�s
+    int nb_succes; // le nombre d'essais r�ussis sur tous les problemes
+
+    npb = Statistiques->current_pb + 1;
+
+    pbsol = 0;
+    for (int t = 0; t < npb; t++) {
+        if (Statistiques->trouve[t] >= 1)
+            pbsol++;
+    }
+    *ofile << "==========================================================================" << endl;
+    *ofile << pbsol << " problemes avec solution(s) sur " << npb << " problemes " << endl;
+
+    *ofile << " Succes par probleme : | ";
+    for (int i = 0; i < npb; i++) {
+        *ofile << Statistiques->trouve[i] << " | ";
+    }
+    *ofile << endl;
+
+    nb_succes = 0;
+    for (int i = 0; i < npb; i++) {
+        nb_succes += Statistiques->trouve[i];
+    }
+    *ofile << " Nb succes " << nb_succes << " sur "
+           << (npb - 1) * Statistiques->max_tries + Statistiques->current_try // nb d'essais achev�s
+           << " essais " << endl;
+
+    if (nb_succes > 0) {
+        *ofile << " temps moyen pour un succes "
+               << Statistiques->total_execution_time / nb_succes << endl;
+    }
+
+    *ofile << " Temps total : " << Statistiques->total_execution_time << endl;
+    *ofile << "==========================================================================" << endl;
+}
+
+void ecriture_fin_lsrun(double avgnhtries, double avgsqnhtries)
+{
+    // *ofile << " nb moyen d'essais par mouvement " << avgnhtries << "  ecart type " << sqrt ( avgsqnhtries - avgnhtries * avgnhtries) << endl;
+    if (TRACEMODE == 2) {
+        *ofile << " valeurs   et nb-voisins ";
+        for (int i = Statistiques->costvalues.size() - 100; i < (int)Statistiques->costvalues.size(); i++) {
+            *ofile << Statistiques->costvalues[i] << "  ";
+            *ofile << Statistiques->examinedneighbors[i] << "  " << endl;
+        }
+    }
+}
+
+/* --------------------------LANCEMENT D'UN ESSAI -------------------------------------------*/
+
+// instanciation aleatoire
+void instanciation_aleatoire(OpProblem* problem, Configuration** population, int taille)
+{
+    for (int i = 0; i < taille; i++)
+        problem->random_configuration(population[i]);
+}
+
+// evaluation de la population
+void calcul_valeur_population(OpProblem* problem, Configuration** population, int taille)
+{
+    for (int i = 0; i < taille; i++)
+        population[i]->valuation = problem->config_evaluation(population[i]);
+}
+
+// execution d'un essai d'un algo sur un  probleme
+void executer_essai(OpProblem* problem, IncompleteAlgorithm* algo, Configuration** population, int taille, int graine1, int nessai, vector<int>* initconfig)
+{
+    // graine du g�n�rateur aleatoire pour l'essai
+    mysrand(graine1 + nessai);
+    //    ecriture_graine(graine1+nessai,nessai);
+
+    Statistiques->init_try(nessai);
+// d�clenchement du chronom�tre
+#ifndef __WIN32__
+    start_timers();
+#endif
+    // population initiale
+
+    instanciation_aleatoire(problem, population, taille);
+    //SdG: initial solution provided by NC/EAC supports given to INCOP
+    if (initconfig && nessai == 0) {
+        assert(initconfig->size() == (unsigned int)population[0]->nbvar);
+        for (int i = 0; i < population[0]->nbvar; i++)
+            population[0]->config[i] = (*initconfig)[i];
+    }
+    //    *ofile << " population instanciee " << endl;
+    // evaluation de la population
+    calcul_valeur_population(problem, population, taille);
+    //    *ofile << " population evaluee " << endl;
+    // tri de la population
+    populationsort(population, taille);
+    // stockage du meilleur dans best_config
+    problem->best_config->copy_element(population[taille - 1]);
+    // pour les algos de type gww avec seuil , le seuil est initialis� au pire de la population, sinon � RAND_MAX
+    algo->initthreshold(population, taille);
+
+    Statistiques->cost_try[nessai] = valeur_min(population, taille);
+    //    ecriture_debut_resolution(valeur_max(population,taille),valeur_min(population,taille),algo->methodname);
+
+    // lancement de la resolution
+    algo->run(problem, population);
+// apres resolution : arret du chronometre
+#ifndef __WIN32__
+    stop_timers(VIRTUAL);
+#endif
+    //    ecriture_fin_resolution(Statistiques->cost_try[nessai]);
+    //    problem->best_config_analysis();
+    //    problem->best_config_write();
+    // verification de best_config en recalculant sa valeur
+    //    problem->best_config_verification();
+    //    Statistiques->execution_report(nessai,problem->lower_bound);
+}
diff --git a/code/include/tb2/incop/incoputil.h b/code/include/tb2/incop/incoputil.h
new file mode 100644
index 0000000000000000000000000000000000000000..9f504fa6d58efedac1499f329216108a493bdc50
--- /dev/null
+++ b/code/include/tb2/incop/incoputil.h
@@ -0,0 +1,71 @@
+#ifndef INCOP_UTIL_H_
+#define INCOP_UTIL_H_
+
+//---------------------------------------------------------------------------------------------
+//    trombe : les stats sous forme de classe (... enfin une struct quoi !)
+
+class Stat_GWW {
+public:
+    int nb_pbs; // Nb de problèmes différents essayés (pour les CSP aléatoires)
+    int* trouve; // trouve[i] (i ds [0,nb_pbs[) : contient le nombre de fois que
+    //           le pb i est résolu (entre 0 et max_tries)
+    int stop_trouve;
+    int current_pb; // Le numéro de problème courant (ds [0,nb_pbs[)
+    //
+    int max_tries; // Le nombre d'essais par problème
+    Long* cost_try; // cost_try [j] (j ds [0,max_tries[): le meilleur cout trouvé à l'essai j
+    float* execution_time_try; // execution_time_try [j] (j ds [0,max_tries[): temps d'exécution
+    //                                              de l'essai j
+    float cost_meanvalue; // la moyenne des meilleurs couts des essais
+    int current_try; // Le numéro d'essai courant (ds [0,max_tries[) pour le problème 'current_pb'
+    int* nb_moves;
+    int* nb_moves_up;
+    int* nb_moves_down;
+
+    double nb_moves_avg;
+    float* total_problem_time;
+    vector<Long> costvalues;
+    vector<int> examinedneighbors;
+    float total_execution_time; // temps d'execution total depuis le début
+    float average_execution_time; // temps d'execution total depuis le début
+    // ofstream* stat_file;           // le fichier où s'affiche les stat
+    int thresholdchanges; // nombre de changements de seuil pour l'ensemble des essais
+    Stat_GWW(int number_pbs, int number_tries);
+    ~Stat_GWW();
+    void init_pb(int t);
+    void init_run();
+    void init_try(int trynumber);
+    void execution_report(int ntry, Long lower_bound);
+};
+
+void sigaction();
+int argument2ul(char* arg, char* message);
+double argument2d(char* arg, char* message);
+double argument2bd(char* arg, char* message, double min1, double max1);
+int argument2bul(char* arg, char* message, int min1, int max1);
+string argument2lp(char* arg, char* message, list<string>& possibles);
+void handler_stat(int sig);
+IncompleteAlgorithm* algo_creation(char** argv, int& narg, int& taille, int& graine1, int& nbessais);
+void executer_essai(OpProblem* problem, IncompleteAlgorithm* algo, Configuration** population, int taille, int graine1, int nessai, vector<int>* initconfig = NULL);
+
+void ecriture_stat_probleme();
+void ecriture_statistiques_global();
+void arguments_tracemode(char** argv, int& narg);
+void arguments_tempscpu(char** argv, int& narg, double& maxtime);
+void arguments_arret(char** argv, int& narg, int& stop);
+void arguments_borneinf(char** argv, int& narg, Long& borneinf);
+
+Long valeur_max(Configuration** population, int taille);
+Long valeur_min(Configuration** population, int taille);
+Long valeur_mediane(Configuration** population, int taille);
+void populationsort(Configuration** population, int taille);
+
+void ecriture_changement_seuil(Long seuil, Long delta, Long meilleur, Long pire, Long mediane, int nbessaisvoisins, int nb_au_seuil);
+void ecriture_nb_tues(int nb_tues);
+void ecriture_fin_gww(int nb_chang_seuil, int nb_mouv);
+void ecriture_meilleure_valeur(string& method, Long valeur, Long seuil, int nbmouv, int maxvoisins);
+void ecriture_fin_lsrun(double avgnhtries, double avgsqnhtries);
+void ecriture_stat_essai();
+void ofile_name(char* filename, int argc, char** argv);
+
+#endif /* INCOP_UTIL_H_ */
diff --git a/code/include/tb2/incop/narycsproblem.cpp b/code/include/tb2/incop/narycsproblem.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f47607d73a98e19f7ad1198f6d63c01931cc96d3
--- /dev/null
+++ b/code/include/tb2/incop/narycsproblem.cpp
@@ -0,0 +1,562 @@
+#include <cerrno>
+#include <stdio.h>
+#include <list>
+#include <vector>
+#include <string>
+#include <set>
+#include <algorithm>
+
+using namespace std;
+#include <iostream>
+#include <fstream>
+
+#include "incop.h"
+#include "incoputil.h"
+#include "csproblem.h"
+#include "narycsproblem.h"
+#include "autotuning2.h"
+
+extern ofstream* ofile; // le fichier de sortie
+
+extern Stat_GWW* Statistiques;
+
+#include "search/tb2solver.hpp"
+#include "core/tb2wcsp.hpp"
+
+INCOP::NaryCSProblem::NaryCSProblem(int nbvar, int nbconst)
+    : CSProblem(nbvar, nbconst)
+{
+    ;
+}
+
+INCOP::NaryConstraint::NaryConstraint(int arit) { arity = arit; }
+
+INCOP::NaryVariable::NaryVariable() { ; }
+
+/** code optimisé pour configuration semi-incrementale IncrCSPConfiguration*/
+/*
+int NaryCSProblem::move_evaluation
+                    (Configuration* configuration,Move* move)
+{int var_changee = ((CSPMove*)move)-> variable;
+ int val_changee = ((CSPMove*)move)-> value;
+ return(configuration->valuation
+       +compute_conflict(configuration,var_changee,val_changee)
+               -((IncrCSPConfiguration*)configuration)->tabconflicts[var_changee]);
+}
+*/
+
+// optimisation pour IncrCSPConfiguration
+/*
+int NaryCSProblem::config_evaluation(Configuration* configuration)
+{
+  configuration->init_conflicts();
+  int value=0;
+  for (int i=0; i< (int) naryconstraints->size();i++)
+    {int nbconf = (*naryconstraints)[i]->constraint_value (configuration);
+      value+= nbconf;
+     for (int j=0 ; j< (*naryconstraints)[i]->arity ; j++)
+       ((IncrCSPConfiguration*)configuration)->tabconflicts[(*naryconstraints)[i]->constrainedvariables[j]] +=nbconf;
+    }
+  return value;
+}
+*/
+
+Long INCOP::NaryCSProblem::config_evaluation(Configuration* configuration)
+{
+    configuration->init_conflicts();
+    Long value = 0;
+    for (int i = 0; i < (int)naryconstraints->size(); i++) {
+        Long nbconf = (*naryconstraints)[i]->constraint_value(configuration);
+        value += nbconf;
+    }
+    for (int i = 0; i < nbvar; i++)
+        for (int j = 0; j < variable_domainsize(i); j++)
+            configuration->incr_conflicts(i, j, j, compute_conflict(configuration, i, j));
+    return value;
+}
+
+Long INCOP::NaryConstraint::constraint_value(Configuration* configuration)
+{
+    int index = 0;
+    for (int i = 0; i < arity; i++)
+        index += configuration->config[constrainedvariables[i]] * multiplyers[i];
+    return tuplevalues[index];
+}
+
+void INCOP::NaryCSProblem::incr_update_conflicts(IncrCSPConfiguration* configuration, Move* move)
+{
+    int var = ((CSPMove*)move)->variable;
+    int value = ((CSPMove*)move)->value;
+    int aval = configuration->config[var];
+    Long actvalue, nctvalue;
+    NaryVariable* varobjct = (*naryvariables)[var];
+    INCOP::NaryConstraint* ct;
+    for (int i = 0; i < (int)(varobjct->constraints).size(); i++) {
+        ct = (varobjct->constraints)[i];
+        actvalue = ct->constraint_value(configuration);
+        configuration->config[var] = value;
+        nctvalue = ct->constraint_value(configuration);
+        configuration->config[var] = aval;
+        for (int j = 0; j < ct->arity; j++) {
+            configuration->tabconflicts[ct->constrainedvariables[j]] += nctvalue - actvalue;
+        }
+    }
+}
+
+void INCOP::NaryCSProblem::fullincr_update_conflicts(FullincrCSPConfiguration* configuration, Move* move)
+{
+    int var = ((CSPMove*)move)->variable;
+    int value = ((CSPMove*)move)->value;
+    int aval = configuration->config[var];
+    Long actvalue, nctvalue;
+    int var1, aval1;
+    INCOP::NaryVariable* varobjct = (*naryvariables)[var];
+    INCOP::NaryConstraint* ct;
+    for (int i = 0; i < (int)(varobjct->constraints).size(); i++) {
+        ct = (varobjct->constraints)[i];
+        for (int j = 0; j < ct->arity; j++) {
+            var1 = ct->constrainedvariables[j];
+            if (var1 != var) {
+                aval1 = configuration->config[var1];
+                for (int k = 0; k < variable_domainsize(var1); k++) {
+                    configuration->config[var1] = k;
+                    actvalue = ct->constraint_value(configuration);
+                    configuration->config[var] = value;
+                    nctvalue = ct->constraint_value(configuration);
+                    configuration->config[var] = aval;
+                    //	       configuration->incr_conflicts(var1,k,k,nctvalue - actvalue);
+                    configuration->tabconflicts[var1][k] += nctvalue - actvalue;
+                }
+                configuration->config[var1] = aval1;
+            }
+        }
+    }
+}
+
+int INCOP::NaryConstraint::compute_index(int* values, vector<Value>* tabdomaines)
+{
+    int index = 0;
+    for (int i = 0; i < arity; i++)
+        index += compute_indexpart(i, values[i], tabdomaines);
+    return index;
+}
+
+int INCOP::NaryConstraint::compute_indexpart(int i, int vali, vector<Value>* tabdomaines)
+{
+    int factor = 1;
+    for (int j = i + 1; j < arity; j++) {
+        factor = factor * tabdomaines[constrainedvariables[j]].size();
+    }
+    return vali * factor;
+}
+
+/** nombre de n-uplets d'une contrainte */
+/* number of tuples of a constraint */
+int INCOP::NaryConstraint::nbtuples(vector<Value>* tabdomaines)
+{
+    int nbtuples = 1;
+    for (int j = 0; j < arity; j++) {
+        nbtuples = nbtuples * tabdomaines[constrainedvariables[j]].size();
+    }
+    return nbtuples;
+}
+
+void INCOP::NaryConstraint::compute_indexmultiplyers(vector<Value>* tabdomaines)
+{
+    for (int i = 0; i < arity; i++)
+        multiplyers.push_back(compute_indexmultiplyer(i, tabdomaines));
+}
+
+int INCOP::NaryConstraint::compute_indexmultiplyer(int i, vector<Value>* tabdomaines)
+{
+    int factor = 1;
+    for (int j = i + 1; j < arity; j++) {
+        factor = factor * tabdomaines[constrainedvariables[j]].size();
+    }
+    return factor;
+}
+
+/** calcul du nombre de conflits d'une affectation - appele par l'évaluation d'un mouvement (cas incr)*/
+
+Long INCOP::NaryCSProblem::compute_conflict(Configuration* configuration, int var, int val)
+{
+    Long value = 0;
+    int aval = configuration->config[var];
+    configuration->config[var] = val;
+    for (int i = 0; i < (int)(*naryvariables)[var]->constraints.size(); i++)
+        value += (*naryvariables)[var]->constraints[i]->constraint_value(configuration);
+    configuration->config[var] = aval;
+    return value;
+}
+
+/** utilisation des configurations "semi-incrementales"IncrCSPConfiguration - les conflits des valeurs courantes des variables
+    sont stockés dans le tableau tabconflicts
+    ou tout-incrémentales  FullincrCSPConfiguration  : les conflits de toutes les valeurs avec la configuration courante
+sont maintenus dans tabconflicts */
+Configuration* INCOP::NaryCSProblem::create_configuration()
+{
+    return (new FullincrCSPConfiguration(nbvar, domainsize));
+    // return (new IncrCSPConfiguration(nbvar,domainsize));
+}
+
+INCOP::NaryCSProblem* weighted_narycsp_creation(int nbvar, int nbconst, int maxdomsize,
+    vector<INCOP::NaryVariable*>* vv, vector<INCOP::NaryConstraint*>* vct)
+{
+    INCOP::NaryCSProblem* p1 = new INCOP::NaryCSProblem(nbvar, nbconst);
+    p1->domainsize = maxdomsize;
+    p1->naryconstraints = vct;
+    p1->naryvariables = vv;
+    return p1;
+}
+
+/** lecture du debut du fichier : le probleme et les variables */
+void wcspdomaines_file_read(WCSP* wcsp, int nbvar, vector<Value>* tabdomaines, vector<Value>& initsolution, vector<int>& initconfig)
+{
+    assert(initsolution.size() == wcsp->numberOfVariables());
+    assert(initconfig.size() == (unsigned int)nbvar);
+    int size = 0;
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++)
+        if (wcsp->unassigned(i)) {
+            for (EnumeratedVariable::iterator it = ((EnumeratedVariable*)wcsp->getVar(i))->begin(); it != ((EnumeratedVariable*)wcsp->getVar(i))->end(); ++it) {
+                if (initsolution[i] == *it)
+                    initconfig[size] = tabdomaines[size].size();
+                tabdomaines[size].push_back(*it);
+            }
+            size++;
+        }
+    assert(size == nbvar);
+}
+
+/** lecture des contraintes */
+int wcspdata_constraint_read(WCSP* wcsp, int nbconst, vector<INCOP::NaryVariable*>* vv, vector<INCOP::NaryConstraint*>* vct,
+    vector<int>* connexions, vector<Value>* tabdomaines)
+{
+    static Tuple tuple;
+    Cost gap = wcsp->getUb() - wcsp->getLb();
+    int nbconst_ = 0;
+    for (unsigned int i = 0; i < wcsp->numberOfConstraints(); i++) {
+        if (wcsp->getCtr(i)->connected() && !wcsp->getCtr(i)->isSep() && !wcsp->getCtr(i)->isGlobal() && wcsp->getCtr(i)->arity() <= ToulBar2::preprocessNary) {
+            int arity = 0;
+            for (int j = 0; j < wcsp->getCtr(i)->arity(); j++)
+                if (wcsp->getCtr(i)->getVar(j)->unassigned())
+                    arity++;
+            INCOP::NaryConstraint* ct = new INCOP::NaryConstraint(arity);
+            vct->push_back(ct);
+            int numvar = 0;
+            for (int j = 0; j < wcsp->getCtr(i)->arity(); j++)
+                if (wcsp->getCtr(i)->getVar(j)->unassigned()) {
+                    numvar = wcsp->getCtr(i)->getVar(j)->getCurrentVarId();
+                    ct->constrainedvariables.push_back(numvar);
+                    (*vv)[numvar]->constraints.push_back(ct);
+                }
+            assert(ct->constrainedvariables.size() == (unsigned int)arity);
+            ct->compute_indexmultiplyers(tabdomaines);
+            Cost cost;
+            wcsp->getCtr(i)->firstlex();
+            while (wcsp->getCtr(i)->nextlex(tuple, cost)) {
+                ct->tuplevalues.push_back(min(gap, cost));
+            }
+            nbconst_++;
+        }
+    }
+    for (int i = 0; i < wcsp->getElimBinOrder(); i++) {
+        Constraint* ctr = wcsp->getElimBinCtr(i);
+        if (ctr->connected() && !ctr->isSep()) {
+            int arity = 2;
+            int numvar = 0;
+            INCOP::NaryConstraint* ct = new INCOP::NaryConstraint(arity);
+            vct->push_back(ct);
+            for (int j = 0; j < arity; j++)
+                if (ctr->getVar(j)->unassigned()) {
+                    numvar = ctr->getVar(j)->getCurrentVarId();
+                    ct->constrainedvariables.push_back(numvar);
+                    (*vv)[numvar]->constraints.push_back(ct);
+                }
+            ct->compute_indexmultiplyers(tabdomaines);
+            Cost cost;
+            ctr->firstlex();
+            while (ctr->nextlex(tuple, cost)) {
+                ct->tuplevalues.push_back(min(gap, cost));
+            }
+            nbconst_++;
+        }
+    }
+    for (int i = 0; i < wcsp->getElimTernOrder(); i++) {
+        Constraint* ctr = wcsp->getElimTernCtr(i);
+        if (ctr->connected() && !ctr->isSep()) {
+            int arity = 3;
+            int numvar = 0;
+            INCOP::NaryConstraint* ct = new INCOP::NaryConstraint(arity);
+            vct->push_back(ct);
+            for (int j = 0; j < arity; j++)
+                if (ctr->getVar(j)->unassigned()) {
+                    numvar = ctr->getVar(j)->getCurrentVarId();
+                    ct->constrainedvariables.push_back(numvar);
+                    (*vv)[numvar]->constraints.push_back(ct);
+                }
+            ct->compute_indexmultiplyers(tabdomaines);
+            Cost cost;
+            ctr->firstlex();
+            while (ctr->nextlex(tuple, cost)) {
+                ct->tuplevalues.push_back(min(gap, cost));
+            }
+            nbconst_++;
+        }
+    }
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        if (wcsp->unassigned(i) && wcsp->getMaxUnaryCost(i) > MIN_COST) {
+            int arity = 1;
+            int numvar = 0;
+            INCOP::NaryConstraint* ct = new INCOP::NaryConstraint(arity);
+            vct->push_back(ct);
+            numvar = wcsp->getVar(i)->getCurrentVarId();
+            ct->constrainedvariables.push_back(numvar);
+            (*vv)[numvar]->constraints.push_back(ct);
+            ct->compute_indexmultiplyers(tabdomaines);
+            for (EnumeratedVariable::iterator it = ((EnumeratedVariable*)wcsp->getVar(i))->begin(); it != ((EnumeratedVariable*)wcsp->getVar(i))->end(); ++it) {
+                ct->tuplevalues.push_back(min(gap, wcsp->getUnaryCost(i, *it)));
+            }
+            nbconst_++;
+        }
+    }
+    assert(nbconst_ <= nbconst);
+    return nbconst_;
+}
+
+int split(char* str, char c, char*** arr)
+{
+    int count = 1;
+    int token_len = 1;
+    int i = 0;
+    char* p;
+    char* t;
+
+    p = str;
+    while (*p != '\0') {
+        if (*p == c)
+            count++;
+        p++;
+    }
+
+    *arr = (char**)malloc(sizeof(char*) * count);
+    if (*arr == NULL)
+        exit(1);
+
+    p = str;
+    while (*p != '\0') {
+        if (*p == c) {
+            (*arr)[i] = (char*)malloc(sizeof(char) * token_len);
+            if ((*arr)[i] == NULL)
+                exit(EXIT_FAILURE);
+
+            token_len = 0;
+            i++;
+        }
+        p++;
+        token_len++;
+    }
+    (*arr)[i] = (char*)malloc(sizeof(char) * token_len);
+    if ((*arr)[i] == NULL)
+        exit(EXIT_FAILURE);
+
+    i = 0;
+    p = str;
+    t = ((*arr)[i]);
+    while (*p != '\0') {
+        if (*p != c) {
+            *t = *p;
+            t++;
+        } else {
+            *t = '\0';
+            i++;
+            t = ((*arr)[i]);
+        }
+        p++;
+    }
+    *t = '\0';
+    return count;
+}
+
+void removeSpaces(string& str)
+{
+    /* remove multiple spaces */
+    int k = 0;
+    for (unsigned int j = 0; j < str.size(); ++j) {
+        if ((str[j] != ' ') || (str[j] == ' ' && str[j + 1] != ' ')) {
+            str[k] = str[j];
+            ++k;
+        }
+    }
+    str.resize(k);
+
+    /* remove space at the end */
+    if (str[k - 1] == ' ')
+        str.erase(str.end() - 1);
+    /* remove space at the begin */
+    if (str[0] == ' ')
+        str.erase(str.begin());
+}
+
+/// \brief solves the current problem using INCOP local search solver by Bertrand Neveu
+/// \return best solution cost found
+/// \param cmd command line argument for narycsp INCOP local search solver (cmd format: lowerbound randomseed nbiterations method nbmoves neighborhoodchoice neighborhoodchoice2 minnbneighbors maxnbneighbors  neighborhoodchoice3 autotuning tracemode)
+/// \param solution best solution assignment found (MUST BE INITIALIZED WITH A DEFAULT ASSIGNMENT)
+/// \warning cannot solve problems with global cost functions
+Cost Solver::narycsp(string cmd, vector<Value>& bestsolution)
+{
+    Long result = MAX_COST;
+
+    string filename = "/dev/stdin";
+    string outputfile = "/dev/stdout";
+    int verbose = ToulBar2::verbose;
+    char line[1024];
+    char** argv = NULL;
+    int tuningmode = 0; // no automatic tuning
+    int argc = 0;
+
+    // remove leading space  from incop command line
+    cmd.erase(cmd.begin(), std::find_if(cmd.begin(), cmd.end(), std::bind1st(std::not_equal_to<char>(), ' ')));
+
+    // remove multiples space in cmd
+    removeSpaces(cmd);
+
+    sprintf(line, "bin/Linux/narycsp %s %s %s", outputfile.c_str(), filename.c_str(), cmd.c_str());
+
+    argc = split(line, ' ', &argv);
+
+    if (verbose > 0) {
+        cout << "---------------------------" << endl;
+        cout << "number of arguments for narycsp: " << argc << endl;
+        cout << "---------------------------" << endl;
+        for (int i = 0; i < argc; i++)
+            cout << "arg #" << i << " --> " << argv[i] << endl;
+        if (ToulBar2::verbose >= 3)
+            cout << *wcsp;
+    }
+
+    INCOP::NaryCSProblem* problem; // pointeur sur le probleme
+
+    // les divers arguments lus dans la ligne de commande
+    int nbvar, nbconst, domsize;
+    Long lbound;
+    int taille, nbessais;
+    int graine1;
+    int narg = 2; // compteur des arguments
+
+    arguments_borneinf(argv, narg, lbound);
+    // lecture des paramètres de l'algo et création de l'objet algo
+    IncompleteAlgorithm* algo = algo_creation(argv, narg, taille, graine1, nbessais);
+
+    // allocation de l'objet pour les stats
+    Statistiques = new Stat_GWW(1, nbessais);
+
+    // argument pour la trace
+    arguments_tracemode(argv, narg);
+    // pour la recuperation du signal 10
+    //  sigaction();
+
+    // argument de temps maximum
+    double maxtime;
+    if (tuningmode)
+        arguments_tempscpu(argv, narg, maxtime);
+
+    // Declaration des variables contenant les structures de données des problemes
+    string pbname;
+    Long upperbound;
+    pbname = wcsp->getName();
+    nbvar = wcsp->numberOfUnassignedVariables();
+    domsize = 0;
+    int nbunarycosts = 0;
+    vector<int> tabvars;
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        if (wcsp->unassigned(i)) {
+            assert(wcsp->enumerated(i));
+            tabvars.push_back(i);
+            if ((int)wcsp->getDomainSize(i) > domsize)
+                domsize = wcsp->getDomainSize(i);
+            if (wcsp->getMaxUnaryCost(i) > MIN_COST)
+                nbunarycosts++;
+        }
+    }
+    nbconst = wcsp->numberOfConnectedConstraints() + nbunarycosts;
+    upperbound = wcsp->getUb();
+
+    vector<int> initconfig(nbvar, 0);
+    vector<Value>* tabdomaines; // les différents types de domaines
+    tabdomaines = new vector<Value>[nbvar];
+    wcspdomaines_file_read((WCSP*)wcsp, nbvar, tabdomaines, bestsolution, initconfig);
+
+    int domaines[nbvar]; // 1 domaine par variable
+    for (int i = 0; i < nbvar; i++) {
+        domaines[i] = i;
+    }
+
+    // Initialisation des structures de données des problémes
+    vector<INCOP::NaryConstraint*> constraints;
+    vector<INCOP::NaryVariable*> variables;
+    vector<int>* connexions;
+    connexions = new vector<int>[nbvar];
+
+    for (int i = 0; i < nbvar; i++) {
+        INCOP::NaryVariable* nv = new INCOP::NaryVariable();
+        variables.push_back(nv);
+    }
+
+    nbconst = wcspdata_constraint_read((WCSP*)wcsp, nbconst, &variables, &constraints, connexions, tabdomaines);
+    int pbnumber = 0;
+    Statistiques->init_pb(pbnumber);
+    problem = weighted_narycsp_creation(nbvar, nbconst, domsize, &variables, &constraints);
+
+    problem->lower_bound = lbound;
+    // mise en place des domaines
+    problem->set_domains_connections(domaines, tabdomaines, connexions);
+
+    // creation de la population et initialisation
+    // La population : tableau de configurations
+    Configuration* population[taille];
+
+    problem->init_population(population, taille);
+
+    problem->allocate_moves();
+
+    if (tuningmode)
+        autosolving((LSAlgorithm*)algo, population, problem, 0, graine1, nbessais, maxtime, 1000000);
+    else {
+        // boucle sur les essais
+        for (int nessai = 0; nessai < nbessais; nessai++) {
+            executer_essai(problem, algo, population, taille, graine1, nessai, &initconfig);
+            if (wcsp->getLb() + problem->best_config->valuation < upperbound) {
+                int depth = Store::getDepth();
+                try {
+                    Store::store();
+                    vector<Value> solution(problem->best_config->nbvar);
+                    for (int i = 0; i < problem->best_config->nbvar; i++) {
+                        solution[i] = tabdomaines[i][problem->best_config->config[i]];
+                    }
+                    wcsp->assignLS(tabvars, solution);
+                    newSolution();
+                    result = wcsp->getUb();
+                    upperbound = result;
+                    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+                        bestsolution[i] = wcsp->getValue(i);
+                        wcsp->setBestValue(i, bestsolution[i]);
+                    }
+                } catch (const Contradiction&) {
+                    wcsp->whenContradiction();
+                }
+                Store::restore(depth);
+            }
+        }
+        // ecriture statistiques
+        Statistiques->current_try++;
+        //      ecriture_stat_probleme();
+    }
+    delete problem;
+    delete[] tabdomaines;
+    delete[] connexions;
+
+    wcsp->enforceUb();
+    wcsp->propagate();
+
+    return result;
+}
diff --git a/code/include/tb2/incop/narycsproblem.h b/code/include/tb2/incop/narycsproblem.h
new file mode 100644
index 0000000000000000000000000000000000000000..7723a1ce8383013f8c26f96cb5655578fb2151b9
--- /dev/null
+++ b/code/include/tb2/incop/narycsproblem.h
@@ -0,0 +1,71 @@
+class WCSP;
+
+namespace INCOP {
+class NaryConstraint;
+class NaryVariable;
+
+/* CSP n-aires en extension résolus en Max-CSP avec poids sur les n-uplets*/
+/** NaryCSPs solved as weighted Max-CSPs with weights on the tuples */
+class NaryCSProblem : public CSProblem {
+public:
+    vector<NaryConstraint*>* naryconstraints;
+    vector<NaryVariable*>* naryvariables;
+    NaryCSProblem(int nbvar, int nbconst);
+    NaryCSProblem(int nbvar, int nbconst, Long lower);
+    ~NaryCSProblem() { ; };
+    // Long move_evaluation(Configuration* configuration,Move* move);
+    // void compute_var_conflict(Configuration* configuration);
+    /* evaluation et remplissage de la structure de données des conflits*/
+    /** evaluation and filling the conflict datastructure */
+    Long config_evaluation(Configuration* configuration);
+    void fullincr_update_conflicts(FullincrCSPConfiguration* configuration, Move* move);
+    /* calcul du nombre de conflits d'une affectation simple dans une configuration */
+    /** number of conflicts of a simple assignment in a complete configuration */
+    Long compute_conflict(Configuration* configuration, int var, int val);
+    // void compute_var_conflict(Configuration* configuration);
+    void incr_update_conflicts(IncrCSPConfiguration* configuration, Move* move);
+    // Long move_evaluation  (Configuration* configuration,Move* move);
+    /* choix du mode d'incrémentalité : IncrCSPConfiguration ou FullincrCSPConfiguration */
+    /** choice of incrementality mode : IncrCSPConfiguration ou FullincrCSPConfiguration */
+    Configuration* create_configuration();
+};
+
+/* Contrainte N-aire en extension avec poids sur les n-uplets qui violent la contrainte */
+/** Nary constraint in extension with weigths defined on the tuples */
+class NaryConstraint {
+public:
+    int arity;
+    NaryConstraint(int arit);
+    /* evaluation de la contrainte : recherche dans le tableau des n-uplets */
+    /** Constraint Evalution : searching in the tuple table */
+    Long constraint_value(Configuration* configuration);
+    int compute_index(int* values, vector<int>* tabdomaines);
+    int compute_indexpart(int i, int vali, vector<int>* tabdomaines);
+    /* variables liées par la contraintes */
+    /** variables linked by the constraint */
+    vector<int> constrainedvariables;
+    /*  table des-n uplets valués*/
+    /** table of valued tuples */
+    vector<Long> tuplevalues;
+    vector<int> multiplyers;
+    void compute_indexmultiplyers(vector<int>* tabdomaines);
+    int compute_indexmultiplyer(int i, vector<int>* tabdomaines);
+    int nbtuples(vector<int>* tabdomaines);
+};
+
+/* Variable liée à une contrainte n-aire */
+/** Variable constrained by a n-ary constraint */
+class NaryVariable {
+public:
+    vector<NaryConstraint*> constraints;
+    NaryVariable();
+};
+}
+
+INCOP::NaryCSProblem* weighted_narycsp_creation(int nbvar, int nbconst, int maxdomsize,
+    vector<INCOP::NaryVariable*>* vv, vector<INCOP::NaryConstraint*>* vct);
+
+void wcspdomaines_file_read(WCSP* wcsp, int nbvar, vector<int>* tabdomaines);
+
+int wcspdata_constraint_read(WCSP* wcsp, int nbconst, vector<INCOP::NaryVariable*>* vv, vector<INCOP::NaryConstraint*>* vct,
+    vector<int>* connexions, vector<int>* tabdomaines);
diff --git a/code/include/tb2/incop/timer.cpp b/code/include/tb2/incop/timer.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7181f2f8eb22a567fcc39b6d947d26af04f50382
--- /dev/null
+++ b/code/include/tb2/incop/timer.cpp
@@ -0,0 +1,59 @@
+#include "timer.h"
+#include <iostream>
+#include <unistd.h>
+
+#ifndef __WIN32__
+#include <sys/time.h>
+#include <sys/resource.h>
+#endif
+
+// extern "C" int getrusage(__rusage_who, struct rusage *rusage);
+
+/*
+ *  The virtual time of day and the real time of day are calculated and
+ *  stored for future use.  The future use consists of subtracting these
+ *  values from similar values obtained at a later time to allow the user
+ *  to get the amount of time used by the backtracking routine.
+ */
+
+#ifdef __WIN32__
+void start_timers(){};
+void stop_timers(Timer type){};
+
+#else
+static struct rusage res;
+static struct timeval tp;
+static Time virtual_utime, virtual_stime;
+Time virtual_ulapse, virtual_slapse;
+static Time real_time;
+Time real_lapse;
+
+void start_timers()
+{
+    getrusage(RUSAGE_SELF, &res);
+    virtual_utime = (Time)res.ru_utime.tv_sec + (Time)res.ru_utime.tv_usec / 1000000.0;
+    virtual_stime = (Time)res.ru_stime.tv_sec + (Time)res.ru_stime.tv_usec / 1000000.0;
+
+    gettimeofday(&tp, NULL);
+    real_time = (Time)tp.tv_sec + (Time)tp.tv_usec / 1000000.0;
+}
+
+/*
+ *  Stop the stopwatch and return the time used in seconds (either
+ *  REAL or VIRTUAL time, depending on ``type'').
+ */
+void stop_timers(Timer type)
+{
+    if (type == REAL) {
+        gettimeofday(&tp, NULL);
+        real_lapse = (Time)tp.tv_sec + (Time)tp.tv_usec / 1000000.0
+            - real_time;
+    } else {
+        getrusage(RUSAGE_SELF, &res);
+        virtual_ulapse = (Time)res.ru_utime.tv_sec + (Time)res.ru_utime.tv_usec / 1000000.0
+            - virtual_utime;
+        virtual_slapse = (Time)res.ru_stime.tv_sec + (Time)res.ru_stime.tv_usec / 1000000.0
+            - virtual_stime;
+    }
+}
+#endif
diff --git a/code/include/tb2/incop/timer.h b/code/include/tb2/incop/timer.h
new file mode 100644
index 0000000000000000000000000000000000000000..5cd214146dd9ce78ca7661869053abf4964ded1f
--- /dev/null
+++ b/code/include/tb2/incop/timer.h
@@ -0,0 +1,17 @@
+#ifndef _timer_h_
+#define _timer_h_
+
+typedef double Time;
+typedef enum type_timer { REAL,
+    VIRTUAL } Timer;
+
+#ifndef __WIN32__
+void start_timers(void);
+void stop_timers(Timer type);
+extern Time real_lapse;
+extern Time virtual_ulapse, virtual_slapse;
+#define REAL_TIMELAPSE (real_lapse)
+#define VIRTUAL_TIMELAPSE (virtual_ulapse + virtual_slapse)
+#endif
+
+#endif
diff --git a/code/include/tb2/pytoulbar2.cpp b/code/include/tb2/pytoulbar2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2ad5cb29d6ead8f20d54680ed2b2119deb24f0aa
--- /dev/null
+++ b/code/include/tb2/pytoulbar2.cpp
@@ -0,0 +1,446 @@
+/** \file pytoulbar2.cpp
+ *  \brief Python wrapper to toulbar2 library
+ *
+<pre>
+    Copyright (c) 2006-2020, toulbar2 team
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+
+    toulbar2 is currently maintained by Simon de Givry, INRAE - MIAT, Toulouse, France (simon.de-givry@inrae.fr)
+</pre>
+ */
+
+//How to manually extract class properties to bind in Python:
+// awk '/^class/{class=$2} /virtual/{gsub("//.*","",$0);gsub("[(].*[)].*","",$0); print "        .def(\"" $NF "\", &" class "::" $NF ")"}' toulbar2lib.hpp
+// awk '/^class /{ok=1;class=$2} go&&/static/{gsub(";.*","",$0); print "        .def_readwrite_static(\"" $NF "\", &" class "::" $NF ")"} ok&&/public/{go=1}' core/tb2types.hpp
+
+//How to compile Python3 pytoulbar2 module library on Linux:
+// apt install pybind11-dev (or else pip3 install pybind11)
+// git clone https://github.com/toulbar2/toulbar2.git
+// cd toulbar2; mkdir build; cd build
+// #compile toulbar2 to produce the python C++ library
+// cmake -DPYTB2=ON ..
+// make
+// the module will be in lib/Linux
+
+//Examples using pytoulbar2 module from Python3:
+// NB: pytoulbar2.cpython* must be in your Python3 path or export PYTHONPATH=.
+// python3 -c "import sys; sys.path.append('.'); import pytoulbar2 as tb2; tb2.init(); m = tb2.Solver(); m.read('../validation/default/example.wcsp'); tb2.option.showSolutions = 1; res = m.solve(); print(res); print(m.solutions())"
+// python3 -c "import sys; sys.path.append('.'); import pytoulbar2 as tb2; tb2.init(); m = tb2.Solver(); m.read('../validation/default/1aho.cfn.gz'); res = m.solve(); print(res); print(m.wcsp.getDPrimalBound()); print(m.solution())"
+// python3 -c "import sys; sys.path.append('.'); import random; import pytoulbar2 as tb2; tb2.init(); m = tb2.Solver(); x=m.wcsp.makeEnumeratedVariable('x', 1, 10); y=m.wcsp.makeEnumeratedVariable('y', 1, 10); z=m.wcsp.makeEnumeratedVariable('z', 1, 10); m.wcsp.postUnaryConstraint(x, [random.randint(0,10) for i in range(10)]); m.wcsp.postUnaryConstraint(y, [random.randint(0,10) for i in range(10)]); m.wcsp.postUnaryConstraint(z, [random.randint(0,10) for i in range(10)]); m.wcsp.postBinaryConstraint(x,y, [random.randint(0,10) for i in range(10) for j in range(10)]); m.wcsp.postBinaryConstraint(x,z,[random.randint(0,10) for i in range(10) for j in range(10)]); m.wcsp.postBinaryConstraint(y,z,[random.randint(0,10) for i in range(10) for j in range(10)]); m.wcsp.sortConstraints(); res = m.solve(); print(res); print(m.wcsp.getDPrimalBound()); print(m.solution());"
+// python3 -c "import sys; sys.path.append('.'); import random; import pytoulbar2 as tb2; tb2.init(); m = tb2.Solver(); tb2.option.verbose = 0; tb2.option.elimDegree_preprocessing=1; tb2.check(); x=m.wcsp.makeEnumeratedVariable('x', 1, 10); y=m.wcsp.makeEnumeratedVariable('y', 1, 10); z=m.wcsp.makeEnumeratedVariable('z', 1, 10); w=m.wcsp.makeEnumeratedVariable('w', 1, 10); m.wcsp.postUnaryConstraint(x, [random.randint(0,10) for i in range(10)]); m.wcsp.postUnaryConstraint(y, [random.randint(0,10) for i in range(10)]); m.wcsp.postUnaryConstraint(z, [random.randint(0,10) for i in range(10)]); m.wcsp.postBinaryConstraint(x,y, [random.randint(0,10) for i in range(10) for j in range(10)]); m.wcsp.postBinaryConstraint(x,z,[random.randint(0,10) for i in range(10) for j in range(10)]); m.wcsp.postBinaryConstraint(y,z,[random.randint(0,10) for i in range(10) for j in range(10)]); nary = m.wcsp.postNaryConstraintBegin([x,y,z,w], 10, 1, False); m.wcsp.postNaryConstraintTuple(nary, [1,1,1,1], 0); m.wcsp.postNaryConstraintEnd(nary); m.wcsp.sortConstraints(); res = m.solve(); print(res); print(m.wcsp.getDPrimalBound()); print(m.solution());"
+
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+//PYBIND11_MAKE_OPAQUE(std::vector<int>);
+
+namespace py = pybind11;
+
+#include "toulbar2lib.hpp"
+#include "utils/tb2store.hpp"
+#include "utils/tb2btlist.hpp"
+#include "search/tb2solver.hpp"
+
+PYBIND11_MODULE(pytoulbar2, m)
+{
+    m.def("init", []() { tb2init(); }); // must be called at the very beginning
+    m.attr("MAX_COST") = py::cast(MAX_COST);
+    m.attr("MIN_COST") = py::cast(MIN_COST);
+
+    py::register_exception<Contradiction>(m, "Contradiction");
+    py::register_exception<SolverOut>(m, "SolverOut");
+
+    py::class_<ToulBar2, std::unique_ptr<ToulBar2, py::nodelete>>(m, "option")
+        .def_readonly_static("version", &ToulBar2::version)
+        .def_readwrite_static("verbose", &ToulBar2::verbose)
+        .def_readwrite_static("debug", &ToulBar2::debug)
+        .def_readwrite_static("externalUB", &ToulBar2::externalUB)
+        .def_readwrite_static("showSolutions", &ToulBar2::showSolutions)
+        //        .def_readwrite_static("writeSolution", &ToulBar2::writeSolution)
+        .def_readwrite_static("allSolutions", &ToulBar2::allSolutions)
+        .def_readwrite_static("dumpWCSP", &ToulBar2::dumpWCSP)
+        .def_readwrite_static("approximateCountingBTD", &ToulBar2::approximateCountingBTD)
+        .def_readwrite_static("binaryBranching", &ToulBar2::binaryBranching)
+        .def_readwrite_static("dichotomicBranching", &ToulBar2::dichotomicBranching)
+        .def_readwrite_static("dichotomicBranchingSize", &ToulBar2::dichotomicBranchingSize)
+        .def_readwrite_static("sortDomains", &ToulBar2::sortDomains)
+        .def_readwrite_static("solutionBasedPhaseSaving", &ToulBar2::solutionBasedPhaseSaving)
+        .def_readwrite_static("elimDegree", &ToulBar2::elimDegree)
+        .def_readwrite_static("elimDegree_preprocessing", &ToulBar2::elimDegree_preprocessing)
+        .def_readwrite_static("elimSpaceMaxMB", &ToulBar2::elimSpaceMaxMB)
+        .def_readwrite_static("minsumDiffusion", &ToulBar2::minsumDiffusion)
+        .def_readwrite_static("preprocessTernaryRPC", &ToulBar2::preprocessTernaryRPC)
+        .def_readwrite_static("preprocessFunctional", &ToulBar2::preprocessFunctional)
+        .def_readwrite_static("costfuncSeparate", &ToulBar2::costfuncSeparate)
+        .def_readwrite_static("preprocessNary", &ToulBar2::preprocessNary)
+        .def_readwrite_static("QueueComplexity", &ToulBar2::QueueComplexity)
+        .def_readwrite_static("Static_variable_ordering", &ToulBar2::Static_variable_ordering)
+        .def_readwrite_static("lastConflict", &ToulBar2::lastConflict)
+        .def_readwrite_static("weightedDegree", &ToulBar2::weightedDegree)
+        .def_readwrite_static("weightedTightness", &ToulBar2::weightedTightness)
+        .def_readwrite_static("MSTDAC", &ToulBar2::MSTDAC)
+        .def_readwrite_static("DEE", &ToulBar2::DEE)
+        .def_readwrite_static("nbDecisionVars", &ToulBar2::nbDecisionVars)
+        .def_readwrite_static("lds", &ToulBar2::lds)
+        .def_readwrite_static("limited", &ToulBar2::limited)
+        .def_readwrite_static("restart", &ToulBar2::restart)
+        .def_readwrite_static("backtrackLimit", &ToulBar2::backtrackLimit)
+        .def_readwrite_static("cfn", &ToulBar2::cfn)
+        .def_readwrite_static("gz", &ToulBar2::gz)
+        .def_readwrite_static("xz", &ToulBar2::xz)
+        .def_readwrite_static("bayesian", &ToulBar2::bayesian)
+        .def_readwrite_static("uai", &ToulBar2::uai)
+        .def_readwrite_static("resolution", &ToulBar2::resolution)
+        .def_readwrite_static("errorg", &ToulBar2::errorg)
+        .def_readwrite_static("NormFactor", &ToulBar2::NormFactor)
+        .def_readwrite_static("vac", &ToulBar2::vac)
+        .def_readwrite_static("costThresholdS", &ToulBar2::costThresholdS)
+        .def_readwrite_static("costThresholdPreS", &ToulBar2::costThresholdPreS)
+        .def_readwrite_static("costThreshold", &ToulBar2::costThreshold)
+        .def_readwrite_static("costThresholdPre", &ToulBar2::costThresholdPre)
+        .def_readwrite_static("FullEAC", &ToulBar2::FullEAC)
+        .def_readwrite_static("VACthreshold", &ToulBar2::VACthreshold)
+        .def_readwrite_static("useRASPS", &ToulBar2::useRASPS)
+        .def_readwrite_static("RASPSreset", &ToulBar2::RASPSreset)
+        .def_readwrite_static("RASPSangle", &ToulBar2::RASPSangle)
+        .def_readwrite_static("RASPSnbBacktracks", &ToulBar2::RASPSnbBacktracks)
+        .def_readwrite_static("trwsAccuracy", &ToulBar2::trwsAccuracy)
+        .def_readwrite_static("trwsOrder", &ToulBar2::trwsOrder)
+        .def_readwrite_static("trwsNIter", &ToulBar2::trwsNIter)
+        .def_readwrite_static("trwsNIterNoChange", &ToulBar2::trwsNIterNoChange)
+        .def_readwrite_static("trwsNIterComputeUb", &ToulBar2::trwsNIterComputeUb)
+        .def_readwrite_static("costMultiplier", &ToulBar2::costMultiplier)
+        .def_readwrite_static("decimalPoint", &ToulBar2::decimalPoint)
+        .def_readwrite_static("absgapstr", &ToulBar2::deltaUbS)
+        .def_readwrite_static("deltaUb", &ToulBar2::deltaUb)
+        .def_readwrite_static("absgap", &ToulBar2::deltaUbAbsolute)
+        .def_readwrite_static("relgap", &ToulBar2::deltaUbRelativeGap)
+        .def_readwrite_static("singletonConsistency", &ToulBar2::singletonConsistency)
+        .def_readwrite_static("vacValueHeuristic", &ToulBar2::vacValueHeuristic)
+        .def_readwrite_static("LcLevel", (int*)&ToulBar2::LcLevel)
+        .def_readwrite_static("wcnf", &ToulBar2::wcnf)
+        .def_readwrite_static("qpbo", &ToulBar2::qpbo)
+        .def_readwrite_static("qpboQuadraticCoefMultiplier", &ToulBar2::qpboQuadraticCoefMultiplier)
+        .def_readwrite_static("opb", &ToulBar2::opb)
+        .def_readwrite_static("divNbSol", &ToulBar2::divNbSol)
+        .def_readwrite_static("divBound", &ToulBar2::divBound)
+        .def_readwrite_static("divWidth", &ToulBar2::divWidth)
+        .def_readwrite_static("divMethod", &ToulBar2::divMethod)
+        .def_readwrite_static("divRelax", &ToulBar2::divRelax)
+        .def_readwrite_static("varOrder", &ToulBar2::varOrder)
+        .def_readwrite_static("btdMode", &ToulBar2::btdMode)
+        .def_readwrite_static("btdSubTree", &ToulBar2::btdSubTree)
+        .def_readwrite_static("btdRootCluster", &ToulBar2::btdRootCluster)
+        //        .def_readwrite_static("maxsateval", &ToulBar2::maxsateval)
+        .def_readwrite_static("xmlflag", &ToulBar2::xmlflag)
+        .def_readwrite_static("markov_log", &ToulBar2::markov_log)
+        .def_readwrite_static("evidence_file", &ToulBar2::evidence_file)
+        .def_readwrite_static("solution_uai_filename", &ToulBar2::solution_uai_filename)
+        .def_readwrite_static("problemsaved_filename", &ToulBar2::problemsaved_filename)
+        .def_readwrite_static("isZ", &ToulBar2::isZ)
+        .def_readwrite_static("logZ", &ToulBar2::logZ)
+        .def_readwrite_static("logU", &ToulBar2::logU)
+        .def_readwrite_static("logepsilon", &ToulBar2::logepsilon)
+        .def_readwrite_static("uaieval", &ToulBar2::uaieval)
+        .def_readwrite_static("stdin_format", &ToulBar2::stdin_format)
+        .def_readwrite_static("startCpuTime", &ToulBar2::startCpuTime)
+        .def_readwrite_static("splitClusterMaxSize", &ToulBar2::splitClusterMaxSize)
+        .def_readwrite_static("boostingBTD", &ToulBar2::boostingBTD)
+        .def_readwrite_static("maxSeparatorSize", &ToulBar2::maxSeparatorSize)
+        .def_readwrite_static("minProperVarSize", &ToulBar2::minProperVarSize)
+        .def_readwrite_static("smallSeparatorSize", &ToulBar2::smallSeparatorSize)
+        .def_readwrite_static("Berge_Dec", &ToulBar2::Berge_Dec)
+        .def_readwrite_static("learning", &ToulBar2::learning)
+        .def_readwrite_static("interrupted", &ToulBar2::interrupted)
+        .def_readwrite_static("seed", &ToulBar2::seed)
+        .def_readwrite_static("incop_cmd", &ToulBar2::incop_cmd)
+        .def_readwrite_static("searchMethod", (int*)&ToulBar2::searchMethod)
+        .def_readwrite_static("clusterFile", &ToulBar2::clusterFile)
+        .def_readwrite_static("vnsInitSol", (int*)&ToulBar2::vnsInitSol)
+        .def_readwrite_static("vnsLDSmin", &ToulBar2::vnsLDSmin)
+        .def_readwrite_static("vnsLDSmax", &ToulBar2::vnsLDSmax)
+        .def_readwrite_static("vnsLDSinc", (int*)&ToulBar2::vnsLDSinc)
+        .def_readwrite_static("vnsKmin", &ToulBar2::vnsKmin)
+        .def_readwrite_static("vnsKmax", &ToulBar2::vnsKmax)
+        .def_readwrite_static("vnsKinc", (int*)&ToulBar2::vnsKinc)
+        .def_readwrite_static("vnsLDScur", &ToulBar2::vnsLDScur)
+        .def_readwrite_static("vnsKcur", &ToulBar2::vnsKcur)
+        .def_readwrite_static("vnsNeighborVarHeur", (int*)&ToulBar2::vnsNeighborVarHeur)
+        .def_readwrite_static("vnsNeighborChange", &ToulBar2::vnsNeighborChange)
+        .def_readwrite_static("vnsNeighborSizeSync", &ToulBar2::vnsNeighborSizeSync)
+        .def_readwrite_static("vnsParallelLimit", &ToulBar2::vnsParallelLimit)
+        .def_readwrite_static("vnsParallelSync", &ToulBar2::vnsParallelSync)
+        .def_readwrite_static("vnsOptimumS", &ToulBar2::vnsOptimumS)
+        .def_readwrite_static("vnsOptimum", &ToulBar2::vnsOptimum)
+        .def_readwrite_static("vnsParallel", &ToulBar2::vnsParallel)
+        .def_readwrite_static("hbfs", &ToulBar2::hbfs)
+        .def_readwrite_static("hbfsGlobalLimit", &ToulBar2::hbfsGlobalLimit)
+        .def_readwrite_static("hbfsAlpha", &ToulBar2::hbfsAlpha)
+        .def_readwrite_static("hbfsBeta", &ToulBar2::hbfsBeta)
+        .def_readwrite_static("hbfsCPLimit", &ToulBar2::hbfsCPLimit)
+        .def_readwrite_static("hbfsOpenNodeLimit", &ToulBar2::hbfsOpenNodeLimit)
+        .def_readwrite_static("verifyOpt", &ToulBar2::verifyOpt)
+        .def_readwrite_static("verifiedOptimum", &ToulBar2::verifiedOptimum);
+    m.def("check", &tb2checkOptions); // should be called after setting the options (and before reading a problem)
+
+    py::class_<Store, std::unique_ptr<Store, py::nodelete>>(m, "store")
+        .def("getDepth", &Store::getDepth)
+        .def("store", &Store::store)
+        .def("restore", static_cast<void (*)(int)>(&Store::restore));
+
+    py::class_<WeightedObjInt>(m, "WeightedObjInt")
+        .def(py::init<int, Cost>())
+        .def_readwrite("val", &WeightedObjInt::val)
+        .def_readwrite("weight", &WeightedObjInt::weight);
+
+    py::class_<DFATransition>(m, "DFATransition")
+        .def(py::init<int, Value, int, Cost>())
+        .def_readwrite("start", &DFATransition::start)
+        .def_readwrite("end", &DFATransition::end)
+        .def_readwrite("symbol", &DFATransition::symbol)
+        .def_readwrite("weight", &DFATransition::weight);
+
+    py::class_<BoundedObjValue>(m, "BoundedObjValue")
+        .def(py::init<Value, unsigned int, unsigned int>())
+        .def_readwrite("val", &BoundedObjValue::val)
+        .def_readwrite("upper", &BoundedObjValue::upper)
+        .def_readwrite("lower", &BoundedObjValue::lower);
+
+    py::class_<WeightedCSP>(m, "WCSP")
+        //        .def(py::init([](Cost ub, WeightedCSPSolver *solver) { return WeightedCSP::makeWeightedCSP(ub, solver); })) // do not create this object directly, but create a Solver object instead and use wcsp property
+        .def("getIndex", &WeightedCSP::getIndex)
+        .def("getName", (string(WeightedCSP::*)() const) & WeightedCSP::getName)
+        .def("setName", &WeightedCSP::setName)
+        .def("getLb", &WeightedCSP::getLb)
+        .def("getUb", &WeightedCSP::getUb)
+        .def("getDPrimalBound", &WeightedCSP::getDPrimalBound)
+        .def("getDDualBound", &WeightedCSP::getDDualBound)
+        .def("getDLb", &WeightedCSP::getDLb)
+        .def("getDUb", &WeightedCSP::getDUb)
+        .def("setUb", &WeightedCSP::setUb)
+        .def("updateUb", &WeightedCSP::updateUb)
+        .def("enforceUb", &WeightedCSP::enforceUb)
+        .def("increaseLb", &WeightedCSP::increaseLb)
+        .def("decreaseLb", &WeightedCSP::decreaseLb)
+        .def("getNegativeLb", &WeightedCSP::getNegativeLb)
+        .def("finiteUb", &WeightedCSP::finiteUb)
+        .def("setInfiniteCost", &WeightedCSP::setInfiniteCost)
+        .def("enumerated", &WeightedCSP::enumerated)
+        .def("getName", (string(WeightedCSP::*)(int) const) & WeightedCSP::getName)
+        .def("getVarIndex", &WeightedCSP::getVarIndex)
+        .def("getInf", &WeightedCSP::getInf)
+        .def("getSup", &WeightedCSP::getSup)
+        .def("getValue", &WeightedCSP::getValue)
+        .def("getDomainSize", &WeightedCSP::getDomainSize)
+        .def("getEnumDomain", (vector<Value>(WeightedCSP::*)(int varIndex)) & WeightedCSP::getEnumDomain)
+        .def("getEnumDomainAndCost", (vector<pair<Value, Cost>>(WeightedCSP::*)(int varIndex)) & WeightedCSP::getEnumDomainAndCost)
+        .def("getDomainInitSize", &WeightedCSP::getDomainInitSize)
+        .def("toValue", &WeightedCSP::toValue)
+        .def("toIndex", (unsigned int (WeightedCSP::*)(int varIndex, Value value)) &WeightedCSP::toIndex)
+        .def("toIndex", (unsigned int (WeightedCSP::*)(int varIndex, const string& valueName)) &WeightedCSP::toIndex)
+        .def("getDACOrder", &WeightedCSP::getDACOrder)
+        .def("assigned", &WeightedCSP::assigned)
+        .def("unassigned", &WeightedCSP::unassigned)
+        .def("canbe", &WeightedCSP::canbe)
+        .def("cannotbe", &WeightedCSP::cannotbe)
+        .def("nextValue", &WeightedCSP::nextValue)
+        .def("increase", &WeightedCSP::increase)
+        .def("decrease", &WeightedCSP::decrease)
+        .def("assign", &WeightedCSP::assign)
+        .def("remove", &WeightedCSP::remove)
+        .def("assignLS", (void (WeightedCSP::*)(vector<int> & varIndexes, vector<Value> & newValues, bool force)) & WeightedCSP::assignLS)
+        .def("getUnaryCost", &WeightedCSP::getUnaryCost)
+        .def("getMaxUnaryCost", &WeightedCSP::getMaxUnaryCost)
+        .def("getMaxUnaryCostValue", &WeightedCSP::getMaxUnaryCostValue)
+        .def("getSupport", &WeightedCSP::getSupport)
+        .def("getBestValue", &WeightedCSP::getBestValue)
+        .def("setBestValue", &WeightedCSP::setBestValue)
+        //        .def("getIsPartOfOptimalSolution", &WeightedCSP::getIsPartOfOptimalSolution)
+        //        .def("setIsPartOfOptimalSolution", &WeightedCSP::setIsPartOfOptimalSolution)
+        .def("getDegree", &WeightedCSP::getDegree)
+        .def("getTrueDegree", &WeightedCSP::getTrueDegree)
+        .def("getWeightedDegree", &WeightedCSP::getWeightedDegree)
+        .def("resetWeightedDegree", &WeightedCSP::resetWeightedDegree)
+        .def("preprocessing", &WeightedCSP::preprocessing)
+        .def("sortConstraints", &WeightedCSP::sortConstraints) // must be called after creating the model
+        .def("whenContradiction", &WeightedCSP::whenContradiction)
+        .def("propagate", &WeightedCSP::propagate)
+        .def("verify", &WeightedCSP::verify)
+        .def("numberOfVariables", &WeightedCSP::numberOfVariables)
+        .def("numberOfUnassignedVariables", &WeightedCSP::numberOfUnassignedVariables)
+        .def("numberOfConstraints", &WeightedCSP::numberOfConstraints)
+        .def("numberOfConnectedConstraints", &WeightedCSP::numberOfConnectedConstraints)
+        .def("numberOfConnectedBinaryConstraints", &WeightedCSP::numberOfConnectedBinaryConstraints)
+        .def("medianDomainSize", &WeightedCSP::medianDomainSize)
+        .def("medianDegree", &WeightedCSP::medianDegree)
+        .def("getMaxDomainSize", &WeightedCSP::getMaxDomainSize)
+        .def("getMaxCurrentDomainSize", &WeightedCSP::getMaxCurrentDomainSize)
+        .def("getDomainSizeSum", &WeightedCSP::getDomainSizeSum)
+        .def("cartProd", &WeightedCSP::cartProd)
+        .def("getNbDEE", &WeightedCSP::getNbDEE)
+        .def("makeEnumeratedVariable", (int (WeightedCSP::*)(string n, Value iinf, Value isup)) &WeightedCSP::makeEnumeratedVariable)
+        .def("addValueName", &WeightedCSP::addValueName)
+        .def("makeIntervalVariable", &WeightedCSP::makeIntervalVariable)
+        .def("postNullaryConstraint", (void (WeightedCSP::*)(Double cost)) & WeightedCSP::postNullaryConstraint)
+        .def("postUnaryConstraint", [](WeightedCSP& s, int xIndex, vector<Double>& costs, bool incremental) {
+            return s.postUnaryConstraint(xIndex, costs, incremental);
+        }, py::arg("xIndex"), py::arg("costs"), py::arg("incremental") = false)
+        .def("postBinaryConstraint", [](WeightedCSP& s, int xIndex, int yIndex, vector<Double>& costs, bool incremental) {
+            return s.postBinaryConstraint(xIndex, yIndex, costs, incremental);
+        }, py::arg("xIndex"), py::arg("yIndex"), py::arg("costs"), py::arg("incremental") = false)
+        .def("postTernaryConstraint", [](WeightedCSP& s, int xIndex, int yIndex, int zIndex, vector<Double>& costs, bool incremental) {
+            return s.postTernaryConstraint(xIndex, yIndex, zIndex, costs, incremental);
+        }, py::arg("xIndex"), py::arg("yIndex"), py::arg("zIndex"), py::arg("costs"), py::arg("incremental") = false)
+        .def("postNaryConstraintBegin", (int (WeightedCSP::*)(vector<int> & scope, Cost defval, Long nbtuples, bool forcenary)) & WeightedCSP::postNaryConstraintBegin)
+        .def("postNaryConstraintTuple", (void (WeightedCSP::*)(int ctrindex, vector<Value>& tuple, Cost cost)) & WeightedCSP::postNaryConstraintTuple)
+        .def("postNaryConstraintEnd", &WeightedCSP::postNaryConstraintEnd)
+        .def("postSupxyc", &WeightedCSP::postSupxyc)
+        .def("postDisjunction", &WeightedCSP::postDisjunction)
+        .def("postSpecialDisjunction", &WeightedCSP::postSpecialDisjunction)
+        .def("postCliqueConstraint", (int (WeightedCSP::*)(vector<int> & scope, const string& arguments)) & WeightedCSP::postCliqueConstraint)
+        .def("postKnapsackConstraint", (int (WeightedCSP::*)(vector<int> & scope, const string& arguments)) & WeightedCSP::postKnapsackConstraint)
+        .def("postWAmong", (int (WeightedCSP::*)(vector<int> & scope, const string& semantics, const string& propagator, Cost baseCost, const vector<Value>& values, int lb, int ub)) & WeightedCSP::postWAmong)
+        .def("postWVarAmong", (void (WeightedCSP::*)(vector<int> & scope, const string& semantics, Cost baseCost, vector<Value>& values, int varIndex)) & WeightedCSP::postWVarAmong)
+        .def("postWRegular", (int (WeightedCSP::*)(vector<int> & scope, const string& semantics, const string& propagator, Cost baseCost, int nbStates, const vector<WeightedObjInt>& initial_States, const vector<WeightedObjInt>& accepting_States, const vector<DFATransition>& Wtransitions)) & WeightedCSP::postWRegular)
+        //        .def("postWAllDiff", (int (WeightedCSP::*)(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost)) &WeightedCSP::postWAllDiff)
+        //        .def("postWGcc", (int (WeightedCSP::*)(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost, const vector<BoundedObjValue>& values)) &WeightedCSP::postWGcc)
+        //        .def("postWSame", (int (WeightedCSP::*)(int* scopeIndexG1, int arityG1, int* scopeIndexG2, int arityG2, const string& semantics, const string& propagator, Cost baseCost)) &WeightedCSP::postWSame)
+        //        .def("postWSameGcc", &WeightedCSP::postWSameGcc)
+        //        .def("postWGrammarCNF", &WeightedCSP::postWGrammarCNF)
+        //        .def("postMST", &WeightedCSP::postMST)
+        //        .def("postMaxWeight", &WeightedCSP::postMaxWeight)
+        //        .def("postWSum", &WeightedCSP::postWSum)
+        //        .def("postWVarSum", &WeightedCSP::postWVarSum)
+        //        .def("postWOverlap", &WeightedCSP::postWOverlap)
+        .def("isGlobal", &WeightedCSP::isGlobal)
+        .def("getSolution", (const vector<Value> (WeightedCSP::*)()) & WeightedCSP::getSolution)
+        .def("initSolutionCost", &WeightedCSP::initSolutionCost)
+        .def("getSolutionValue", &WeightedCSP::getSolutionValue)
+        .def("getSolutionCost", &WeightedCSP::getSolutionCost)
+        .def("getSolutions", &WeightedCSP::getSolutions)
+        //        .def("setSolution", &WeightedCSP::setSolution)
+        .def("printSolution", (void (WeightedCSP::*)(ostream&)) & WeightedCSP::printSolution)
+        .def("print", &WeightedCSP::print)
+        .def("dump", &WeightedCSP::dump)
+        .def("dump_CFN", &WeightedCSP::dump_CFN)
+        .def("decimalToCost", &WeightedCSP::decimalToCost)
+        .def("DoubletoCost", &WeightedCSP::DoubletoCost)
+        .def("Cost2ADCost", &WeightedCSP::Cost2ADCost) // translate internal WCSP cost value to original problem real cost value (CFN)
+        .def("Cost2RDCost", &WeightedCSP::Cost2RDCost)
+        .def("Prob2Cost", &WeightedCSP::Prob2Cost)
+        .def("Cost2Prob", &WeightedCSP::Cost2Prob)
+        .def("Cost2LogProb", &WeightedCSP::Cost2LogProb)
+        .def("LogProb2Cost", &WeightedCSP::LogProb2Cost)
+        .def("LogSumExp", (Cost(WeightedCSP::*)(Cost c1, Cost c2) const) & WeightedCSP::LogSumExp)
+        .def("LogSumExp", (TLogProb(WeightedCSP::*)(TLogProb logc1, Cost c2) const) & WeightedCSP::LogSumExp)
+        .def("LogSumExp", (TLogProb(WeightedCSP::*)(TLogProb logc1, TLogProb logc2) const) & WeightedCSP::LogSumExp);
+
+    py::class_<WeightedCSPSolver>(m, "Solver")
+        .def(py::init([](Cost ub) {
+            ToulBar2::startCpuTime = cpuTime();
+            initCosts();
+            if (ToulBar2::seed < 0) { // initialize seed using current time
+                ToulBar2::seed = abs((int)time(NULL) * getpid() * ToulBar2::seed);
+                if (ToulBar2::verbose >= 0) cout << "Initial random seed is " << ToulBar2::seed << endl;
+            }
+            mysrand(ToulBar2::seed);
+            if (ToulBar2::incop_cmd.size() > 0 && ToulBar2::seed != 1 && ToulBar2::incop_cmd.find("0 1 ") == 0) {
+                string sseed = to_string(ToulBar2::seed);
+                ToulBar2::incop_cmd.replace(2, 1, sseed);
+            }
+            return WeightedCSPSolver::makeWeightedCSPSolver(ub);
+        }), py::arg("ub") = MAX_COST)
+        .def_property_readonly("wcsp", &WeightedCSPSolver::getWCSP, py::return_value_policy::reference_internal)
+        .def("read", [](WeightedCSPSolver& s, const char* fileName) {
+            if (strstr(fileName, ".xz") == &fileName[strlen(fileName) - strlen(".xz")])
+                ToulBar2::xz = true;
+            if (strstr(fileName, ".gz") == &fileName[strlen(fileName) - strlen(".gz")])
+                ToulBar2::gz = true;
+            if (strstr(fileName, ".cfn"))
+                ToulBar2::cfn = true;
+            if (strstr(fileName, ".wcnf") || strstr(fileName, ".cnf"))
+                ToulBar2::wcnf = true;
+            if (strstr(fileName, ".qpbo"))
+                ToulBar2::qpbo = true;
+            if (strstr(fileName, ".opb"))
+                ToulBar2::opb = true;
+            if (strstr(fileName, ".uai")) {
+                ToulBar2::uai = 1;
+                ToulBar2::bayesian = true;
+            }
+            if (strstr(fileName, ".LG")) {
+                ToulBar2::uai = 2;
+                ToulBar2::bayesian = true;
+            }
+#ifdef XMLFLAG
+            if (strstr(fileName, ".xml")) {
+                ToulBar2::xmlflag = true;
+            }
+#endif
+            tb2checkOptions();
+            return s.read_wcsp(fileName);
+        })
+#ifndef __WIN32__
+        .def("timer", [](WeightedCSPSolver& s, int timeout) {
+            signal(SIGINT, timeOut);
+            signal(SIGTERM, timeOut);
+            if (timeout > 0) timer(timeout);
+        })
+#endif
+        .def("solve", [](WeightedCSPSolver& s, bool first) {
+            bool res = false;
+            try {
+                res = s.solve(first);
+            } catch (Contradiction) {
+                s.getWCSP()->whenContradiction();
+                if (ToulBar2::verbose >= 0) cout << "No solution found by initial propagation!" << endl;
+                return false;
+            }
+            return res; }, py::arg("first") = true)
+        .def("beginSolve", &WeightedCSPSolver::beginSolve)
+        .def("preprocessing", &WeightedCSPSolver::preprocessing)
+        .def("recursiveSolve", &WeightedCSPSolver::recursiveSolve)
+        .def("recursiveSolveLDS", &WeightedCSPSolver::recursiveSolveLDS)
+        .def("hybridSolve", &WeightedCSPSolver::hybridSolve)
+        .def("endSolve", &WeightedCSPSolver::endSolve)
+        .def("solution", (const vector<Value> (WeightedCSPSolver::*)()) &WeightedCSPSolver::getSolution)
+        .def("solutionValue", &WeightedCSPSolver::getSolutionValue)
+        .def("solutionCost", &WeightedCSPSolver::getSolutionCost)
+        .def("solutions", &WeightedCSPSolver::getSolutions)
+        .def("getNbNodes", &WeightedCSPSolver::getNbNodes)
+        .def("getNbBacktracks", &WeightedCSPSolver::getNbBacktracks)
+        .def("increase", &WeightedCSPSolver::increase)
+        .def("decrease", &WeightedCSPSolver::decrease)
+        .def("assign", &WeightedCSPSolver::assign)
+        .def("remove", &WeightedCSPSolver::remove)
+        .def("generate", &WeightedCSPSolver::read_random)
+        //        .def("narycsp", &WeightedCSPSolver::narycsp)
+        //        .def("solve_symmax2sat", &WeightedCSPSolver::solve_symmax2sat)
+        .def("dump_wcsp", (void (WeightedCSPSolver::*)(const char*, bool, int)) &WeightedCSPSolver::dump_wcsp)
+        .def("read_solution", &WeightedCSPSolver::read_solution)
+        .def("parse_solution", &WeightedCSPSolver::parse_solution);
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/search/tb2btd.cpp b/code/include/tb2/search/tb2btd.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..42796c64541af41cae8599b8f923dc4454f1854f
--- /dev/null
+++ b/code/include/tb2/search/tb2btd.cpp
@@ -0,0 +1,844 @@
+/*
+ * **************** Backtrack and Russian Doll Search with Tree Decomposition *******************
+ *
+ */
+
+#include "tb2solver.hpp"
+#include "core/tb2domain.hpp"
+#include "tb2clusters.hpp"
+#ifdef OPENMPI
+#include "vns/tb2cpdgvns.hpp"
+#endif
+
+/*
+ * Variable ordering heuristics
+ *
+ */
+
+int Solver::getNextUnassignedVar(Cluster* cluster)
+{
+    if (unassignedVars->empty())
+        return -1;
+    for (TVars::iterator iter = cluster->beginVars(); iter != cluster->endVars(); ++iter) {
+        if (wcsp->unassigned(*iter))
+            return *iter;
+    }
+    return -1;
+}
+
+int Solver::getVarMinDomainDivMaxDegree(Cluster* cluster)
+{
+    if (unassignedVars->empty())
+        return -1;
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+
+    for (TVars::iterator iter = cluster->beginVars(); iter != cluster->endVars(); ++iter) {
+        if (wcsp->unassigned(*iter)) {
+            int deg = wcsp->getDegree(*iter) + 1; // - ((WCSP *)wcsp)->getVar(*iter)->nbSeparators();
+            double heuristic = (double)wcsp->getDomainSize(*iter) / (double)max(deg, 1);
+            if (varIndex < 0 || heuristic < best - epsilon * best
+                || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+                best = heuristic;
+                varIndex = *iter;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            }
+        }
+    }
+    return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxDegreeRandomized(Cluster* cluster)
+{
+    if (unassignedVars->empty())
+        return -1;
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    int ties[cluster->getNbVars()];
+    int nbties = 0;
+
+    for (TVars::iterator iter = cluster->beginVars(); iter != cluster->endVars(); ++iter) {
+        if (wcsp->unassigned(*iter)) {
+            int deg = wcsp->getDegree(*iter) + 1; // - ((WCSP *)wcsp)->getVar(*iter)->nbSeparators();
+            double heuristic = (double)wcsp->getDomainSize(*iter) / (double)max(deg, 1);
+            if (varIndex < 0 || heuristic < best - epsilon * best
+                || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+                best = heuristic;
+                varIndex = *iter;
+                nbties = 1;
+                ties[0] = varIndex;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            } else if (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) {
+                ties[nbties] = *iter;
+                nbties++;
+            }
+        }
+    }
+    if (nbties > 1)
+        return ties[myrand() % nbties];
+    else
+        return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxDegreeLastConflict(Cluster* cluster)
+{
+    if (unassignedVars->empty())
+        return -1;
+
+    if (lastConflictVar != -1 && wcsp->unassigned(lastConflictVar) && cluster->isVar(lastConflictVar))
+        return lastConflictVar;
+
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+
+    for (TVars::iterator iter = cluster->beginVars(); iter != cluster->endVars(); ++iter) {
+        if (wcsp->unassigned(*iter)) {
+            int deg = wcsp->getDegree(*iter) + 1; // - ((WCSP *)wcsp)->getVar(*iter)->nbSeparators();
+            double heuristic = (double)wcsp->getDomainSize(*iter) / (double)max(deg, 1);
+            if (varIndex < 0 || heuristic < best - epsilon * best
+                || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+                best = heuristic;
+                varIndex = *iter;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            }
+        }
+    }
+    return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxDegreeLastConflictRandomized(Cluster* cluster)
+{
+    if (unassignedVars->empty())
+        return -1;
+
+    if (lastConflictVar != -1 && wcsp->unassigned(lastConflictVar) && cluster->isVar(lastConflictVar))
+        return lastConflictVar;
+
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    int ties[cluster->getNbVars()];
+    int nbties = 0;
+
+    for (TVars::iterator iter = cluster->beginVars(); iter != cluster->endVars(); ++iter) {
+        if (wcsp->unassigned(*iter)) {
+            int deg = wcsp->getDegree(*iter) + 1; // - ((WCSP *)wcsp)->getVar(*iter)->nbSeparators();
+            double heuristic = (double)wcsp->getDomainSize(*iter) / (double)max(deg, 1);
+            if (varIndex < 0 || heuristic < best - epsilon * best
+                || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+                best = heuristic;
+                varIndex = *iter;
+                nbties = 1;
+                ties[0] = varIndex;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            } else if (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) {
+                ties[nbties] = *iter;
+                nbties++;
+            }
+        }
+    }
+    if (nbties > 1)
+        return ties[myrand() % nbties];
+    else
+        return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxWeightedDegree(Cluster* cluster)
+{
+    if (unassignedVars->empty())
+        return -1;
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+
+    for (TVars::iterator iter = cluster->beginVars(); iter != cluster->endVars(); ++iter) {
+        if (wcsp->unassigned(*iter)) {
+            Cost unarymediancost = MIN_COST;
+            int domsize = wcsp->getDomainSize(*iter);
+            if (ToulBar2::weightedTightness) {
+                ValueCost array[domsize];
+                wcsp->getEnumDomainAndCost(*iter, array);
+                unarymediancost = stochastic_selection<ValueCost>(array, 0, domsize - 1, domsize / 2).cost;
+            }
+            Long deg = wcsp->getWeightedDegree(*iter) + 1 + unarymediancost; // - ((WCSP *)wcsp)->getVar(*iter)->nbSeparators();
+            double heuristic = (double)domsize / (double)max(deg, (Long)1);
+            if (varIndex < 0 || heuristic < best - epsilon * best
+                || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+                best = heuristic;
+                varIndex = *iter;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            }
+        }
+    }
+    return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxWeightedDegreeRandomized(Cluster* cluster)
+{
+    if (unassignedVars->empty())
+        return -1;
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    int ties[cluster->getNbVars()];
+    int nbties = 0;
+
+    for (TVars::iterator iter = cluster->beginVars(); iter != cluster->endVars(); ++iter) {
+        if (wcsp->unassigned(*iter)) {
+            Cost unarymediancost = MIN_COST;
+            int domsize = wcsp->getDomainSize(*iter);
+            if (ToulBar2::weightedTightness) {
+                ValueCost array[domsize];
+                wcsp->getEnumDomainAndCost(*iter, array);
+                unarymediancost = stochastic_selection<ValueCost>(array, 0, domsize - 1, domsize / 2).cost;
+            }
+            Long deg = wcsp->getWeightedDegree(*iter) + 1 + unarymediancost; // - ((WCSP *)wcsp)->getVar(*iter)->nbSeparators();
+            double heuristic = (double)domsize / (double)max(deg, (Long)1);
+            if (varIndex < 0 || heuristic < best - epsilon * best
+                || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+                best = heuristic;
+                varIndex = *iter;
+                nbties = 1;
+                ties[0] = varIndex;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            } else if (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) {
+                ties[nbties] = *iter;
+                nbties++;
+            }
+        }
+    }
+    if (nbties > 1)
+        return ties[myrand() % nbties];
+    else
+        return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxWeightedDegreeLastConflict(Cluster* cluster)
+{
+    if (unassignedVars->empty())
+        return -1;
+
+    if (lastConflictVar != -1 && wcsp->unassigned(lastConflictVar) && cluster->isVar(lastConflictVar))
+        return lastConflictVar;
+
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+
+    for (TVars::iterator iter = cluster->beginVars(); iter != cluster->endVars(); ++iter) {
+        if (wcsp->unassigned(*iter)) {
+            Cost unarymediancost = MIN_COST;
+            int domsize = wcsp->getDomainSize(*iter);
+            if (ToulBar2::weightedTightness) {
+                ValueCost array[domsize];
+                wcsp->getEnumDomainAndCost(*iter, array);
+                unarymediancost = stochastic_selection<ValueCost>(array, 0, domsize - 1, domsize / 2).cost;
+            }
+            double heuristic = (double)domsize / (double)(wcsp->getWeightedDegree(*iter) + 1 + unarymediancost);
+            //	      Long deg = wcsp->getWeightedDegree(*iter) + 1; // - ((WCSP *)wcsp)->getVar(*iter)->nbSeparators();
+            //        double heuristic = (double) wcsp->getDomainSize(*iter) / (double) max(deg,(Long)1);
+            if (varIndex < 0 || heuristic < best - epsilon * best
+                || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+                best = heuristic;
+                varIndex = *iter;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            }
+        }
+    }
+    return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxWeightedDegreeLastConflictRandomized(Cluster* cluster)
+{
+    if (unassignedVars->empty())
+        return -1;
+
+    if (lastConflictVar != -1 && wcsp->unassigned(lastConflictVar) && cluster->isVar(lastConflictVar))
+        return lastConflictVar;
+
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    int ties[cluster->getNbVars()];
+    int nbties = 0;
+
+    for (TVars::iterator iter = cluster->beginVars(); iter != cluster->endVars(); ++iter) {
+        if (wcsp->unassigned(*iter)) {
+            Cost unarymediancost = MIN_COST;
+            int domsize = wcsp->getDomainSize(*iter);
+            if (ToulBar2::weightedTightness) {
+                ValueCost array[domsize];
+                wcsp->getEnumDomainAndCost(*iter, array);
+                unarymediancost = stochastic_selection<ValueCost>(array, 0, domsize - 1, domsize / 2).cost;
+            }
+            double heuristic = (double)domsize / (double)(wcsp->getWeightedDegree(*iter) + 1 + unarymediancost);
+            //	      Long deg = wcsp->getWeightedDegree(*iter) + 1; // - ((WCSP *)wcsp)->getVar(*iter)->nbSeparators();
+            //        double heuristic = (double) wcsp->getDomainSize(*iter) / (double) max(deg,(Long)1);
+            if (varIndex < 0 || heuristic < best - epsilon * best
+                || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+                best = heuristic;
+                varIndex = *iter;
+                nbties = 1;
+                ties[0] = varIndex;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            } else if (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) {
+                ties[nbties] = *iter;
+                nbties++;
+            }
+        }
+    }
+    if (nbties > 1)
+        return ties[myrand() % nbties];
+    else
+        return varIndex;
+}
+
+/*
+ * Choice points
+ *
+ */
+
+pair<Cost, Cost> Solver::binaryChoicePoint(Cluster* cluster, Cost lbgood, Cost cub, int varIndex, Value value)
+{
+    assert(lbgood < cub);
+    if (ToulBar2::interrupted)
+        throw TimeOut();
+    Cost clb = cub;
+    TreeDecomposition* td = wcsp->getTreeDec();
+    assert(wcsp->unassigned(varIndex));
+    assert(wcsp->canbe(varIndex, value));
+    bool dichotomic = (ToulBar2::dichotomicBranching && ToulBar2::dichotomicBranchingSize < wcsp->getDomainSize(varIndex));
+    Value middle = value;
+    bool increasing = true;
+    if (dichotomic) {
+        middle = (wcsp->getInf(varIndex) + wcsp->getSup(varIndex)) / 2;
+        if (value <= middle)
+            increasing = true;
+        else
+            increasing = false;
+    }
+    try {
+        Store::store();
+        assert(td->getCurrentCluster() == cluster);
+        assert(wcsp->getLb() == cluster->getLbRec());
+        wcsp->setUb(cub);
+        Cost bestlb = lbgood;
+        if (CUT(bestlb, cub))
+            THROWCONTRADICTION;
+        if (ToulBar2::btdMode >= 2) {
+            Cost rds = td->getLbRecRDS();
+            bestlb = MAX(bestlb, rds);
+            if (CUT(bestlb, cub))
+                THROWCONTRADICTION;
+        }
+        lastConflictVar = varIndex;
+        if (dichotomic) {
+            if (increasing)
+                decrease(varIndex, middle);
+            else
+                increase(varIndex, middle + 1);
+        } else
+            assign(varIndex, value);
+        lastConflictVar = -1;
+        bestlb = MAX(bestlb, wcsp->getLb());
+        pair<Cost, Cost> res = recursiveSolve(cluster, bestlb, cub);
+        clb = MIN(res.first, clb);
+        cub = MIN(res.second, cub);
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+    }
+    Store::restore();
+    nbBacktracks++;
+    if (nbBacktracks > nbBacktracksLimit)
+        throw NbBacktracksOut();
+#ifdef OPENMPI
+    if (ToulBar2::vnsParallel && ((nbBacktracks % 128) == 0) && MPI_interrupted())
+        throw TimeOut();
+#endif
+    cluster->nbBacktracks++;
+    try {
+        Store::store();
+        assert(wcsp->getTreeDec()->getCurrentCluster() == cluster);
+        assert(wcsp->getLb() == cluster->getLbRec());
+        wcsp->setUb(cub);
+        Cost bestlb = lbgood;
+        if (CUT(bestlb, cub))
+            THROWCONTRADICTION;
+        if (ToulBar2::btdMode >= 2) {
+            Cost rds = td->getLbRecRDS();
+            bestlb = MAX(bestlb, rds);
+            if (CUT(bestlb, cub))
+                THROWCONTRADICTION;
+        }
+        if (dichotomic) {
+            if (increasing)
+                increase(varIndex, middle + 1, cluster->nbBacktracks >= cluster->hbfsLimit || nbBacktracks >= cluster->hbfsGlobalLimit);
+            else
+                decrease(varIndex, middle, cluster->nbBacktracks >= cluster->hbfsLimit || nbBacktracks >= cluster->hbfsGlobalLimit);
+        } else
+            remove(varIndex, value, cluster->nbBacktracks >= cluster->hbfsLimit || nbBacktracks >= cluster->hbfsGlobalLimit);
+        bestlb = MAX(bestlb, wcsp->getLb());
+        if (!ToulBar2::hbfs && cluster == td->getRoot() && initialDepth + 1 == Store::getDepth()) {
+            initialDepth++;
+            showGap(bestlb, cub);
+        };
+        if (cluster->nbBacktracks >= cluster->hbfsLimit || nbBacktracks >= cluster->hbfsGlobalLimit) {
+            addOpenNode(*(cluster->cp), *(cluster->open), bestlb, cluster->getCurrentDelta());
+        } else {
+            pair<Cost, Cost> res = recursiveSolve(cluster, bestlb, cub);
+            clb = MIN(res.first, clb);
+            cub = MIN(res.second, cub);
+        }
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+    }
+    Store::restore();
+    assert(lbgood <= clb);
+    assert(clb <= cub);
+    return make_pair(clb, cub);
+}
+
+/*
+ * Choice points for solution counting
+ *
+ */
+
+BigInteger Solver::binaryChoicePointSBTD(Cluster* cluster, int varIndex, Value value)
+{
+    if (ToulBar2::interrupted)
+        throw TimeOut();
+    Cost cub = 1;
+    Cost lbgood = 0;
+    BigInteger nbSol = 0, nb = 0;
+    assert(wcsp->unassigned(varIndex));
+    assert(wcsp->canbe(varIndex, value));
+    bool dichotomic = (ToulBar2::dichotomicBranching && ToulBar2::dichotomicBranchingSize < wcsp->getDomainSize(varIndex));
+    Value middle = value;
+    bool increasing = true;
+    if (dichotomic) {
+        middle = (wcsp->getInf(varIndex) + wcsp->getSup(varIndex)) / 2;
+        if (value <= middle)
+            increasing = true;
+        else
+            increasing = false;
+    }
+    try {
+        Store::store();
+        assert(wcsp->getTreeDec()->getCurrentCluster() == cluster);
+
+        wcsp->setUb(cub);
+        if (CUT(lbgood, cub))
+            THROWCONTRADICTION;
+        lastConflictVar = varIndex;
+        if (dichotomic) {
+            if (increasing)
+                decrease(varIndex, middle);
+            else
+                increase(varIndex, middle + 1);
+        } else
+            assign(varIndex, value);
+        lastConflictVar = -1;
+        nb = sharpBTD(cluster);
+        nbSol += nb;
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+    }
+    Store::restore();
+    nbBacktracks++;
+    if (nbBacktracks > nbBacktracksLimit)
+        throw NbBacktracksOut();
+#ifdef OPENMPI
+    if (ToulBar2::vnsParallel && ((nbBacktracks % 128) == 0) && MPI_interrupted())
+        throw TimeOut();
+#endif
+    try {
+        Store::store();
+        assert(wcsp->getTreeDec()->getCurrentCluster() == cluster);
+        //		assert(wcsp->getLb() == cluster->getLbRec());
+        wcsp->setUb(cub);
+        if (CUT(lbgood, cub))
+            THROWCONTRADICTION;
+        if (dichotomic) {
+            if (increasing)
+                increase(varIndex, middle + 1);
+            else
+                decrease(varIndex, middle);
+        } else
+            remove(varIndex, value);
+
+        nb = sharpBTD(cluster);
+        nbSol += nb;
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+    }
+    Store::restore();
+    return nbSol;
+}
+
+/*
+ * Backtrack with Tree Decomposition
+ *
+ */
+
+// Maintains the best (monotonically increasing) lower bound of the cluster in parameter lbgood
+
+pair<Cost, Cost> Solver::recursiveSolve(Cluster* cluster, Cost lbgood, Cost cub)
+{
+    if (ToulBar2::verbose >= 1)
+        cout << "[" << Store::getDepth() << "] recursive solve     cluster: " << cluster->getId() << "     clb: " << lbgood << "     cub: " << cub << "     clb0: " << cluster->getLb() << "     wcsp->lb: " << wcsp->getLb() << "     wcsp->ub: " << wcsp->getUb() << endl;
+    assert(lbgood <= cub);
+    TreeDecomposition* td = wcsp->getTreeDec();
+    int varIndex = -1;
+    if (ToulBar2::Static_variable_ordering)
+        varIndex = getNextUnassignedVar(cluster);
+    else if (ToulBar2::weightedDegree && ToulBar2::lastConflict)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxWeightedDegreeLastConflictRandomized(cluster) : getVarMinDomainDivMaxWeightedDegreeLastConflict(cluster));
+    else if (ToulBar2::lastConflict)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxDegreeLastConflictRandomized(cluster) : getVarMinDomainDivMaxDegreeLastConflict(cluster));
+    else if (ToulBar2::weightedDegree)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxWeightedDegreeRandomized(cluster) : getVarMinDomainDivMaxWeightedDegree(cluster));
+    else
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxDegreeRandomized(cluster) : getVarMinDomainDivMaxDegree(cluster));
+
+    if (varIndex < 0) {
+        // Current cluster is completely assigned
+        Cost clb = wcsp->getLb();
+        assert(clb <= cub);
+        Cost csol = clb;
+
+        for (TClusters::iterator iter = cluster->beginSortedEdges(); clb < cub && iter != cluster->endSortedEdges();) {
+            // Solves each cluster son with local lower and upper bounds
+            Cluster* c = *iter;
+            ++iter;
+            Cost lbSon = MIN_COST;
+            Cost ubSon = MAX_COST;
+            bool good = false;
+            if (!c->isActive()) {
+                c->reactivate();
+                c->nogoodGet(lbSon, ubSon, &c->open);
+                good = true;
+            } else {
+                lbSon = c->getLbRec();
+                ubSon = c->getUb();
+#ifndef NDEBUG
+                Cost dummylb = -MAX_COST;
+                Cost tmpub = -MAX_COST;
+                c->nogoodGet(dummylb, tmpub, &c->open);
+                assert(tmpub == ubSon);
+#endif
+            }
+            if (ToulBar2::verbose >= 2)
+                cout << "lbson: " << lbSon << " ubson: " << ubSon << " lbgood:" << lbgood << " clb: " << clb << " csol: " << csol << " cub: " << cub << " cluster->lb: " << c->getLbRec() << endl;
+            if (lbSon < ubSon) { // we do not have an optimality proof
+                if (clb <= lbgood || (csol < MAX_COST && ubSon >= cub - csol + lbSon)) { // we do not know a good enough son's solution or the currently reconstructed father's solution is not working or the currently reconstructed father's lower bound is not increasing
+                    bool csolution = (csol < MAX_COST && ubSon < cub - csol + lbSon);
+                    assert(!csolution || ubSon < cub - clb + lbSon);
+                    ubSon = MIN(ubSon, cub - clb + lbSon);
+                    td->setCurrentCluster(c);
+                    wcsp->setUb(ubSon);
+                    wcsp->setLb((good) ? c->getLbRec() : lbSon);
+                    try {
+                        Store::store();
+                        wcsp->enforceUb();
+                        wcsp->propagate();
+                        Cost bestlb = MAX(wcsp->getLb(), lbSon);
+                        if (csol < MAX_COST && iter == cluster->endSortedEdges())
+                            bestlb = MAX(bestlb, lbgood - csol + lbSon); // simple trick to provide a better initial lower bound for the last son
+                        if (ToulBar2::btdMode >= 2) {
+                            Cost rds = td->getLbRecRDS();
+                            bestlb = MAX(bestlb, rds);
+                            if (CUT(bestlb, ubSon))
+                                THROWCONTRADICTION;
+                        }
+                        pair<Cost, Cost> res = hybridSolve(c, bestlb, ubSon);
+                        assert(res.first >= bestlb && res.second <= ubSon);
+                        c->nogoodRec(res.first, ((res.second < ubSon) ? res.second : MAX_COST), &c->open);
+                        clb += res.first - lbSon;
+                        if (csol < MAX_COST) {
+                            if (res.second < ubSon || csolution)
+                                csol += res.second - lbSon;
+                            else
+                                csol = MAX_COST;
+                        }
+                    } catch (const Contradiction&) {
+                        wcsp->whenContradiction();
+                        c->nogoodRec(ubSon, MAX_COST, &c->open);
+                        clb += ubSon - lbSon;
+                        if (csolution)
+                            csol += ubSon - lbSon;
+                        else
+                            csol = MAX_COST;
+                    }
+                    Store::restore();
+                } else {
+                    if (csol < MAX_COST) {
+                        assert(ubSon < MAX_COST);
+                        csol += ubSon - lbSon;
+                    }
+                }
+            }
+        }
+        assert(csol >= clb);
+        if (csol < cub) {
+            // A new solution has been found for the current cluster
+            cub = csol;
+            cluster->solutionRec(csol);
+            if (cluster == td->getRoot() || cluster == td->getRootRDS()) {
+                if (ToulBar2::verbose >= 0 || ToulBar2::showSolutions) {
+                    if (!ToulBar2::bayesian)
+                        cout << "New solution: " << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(csol) << std::setprecision(DECIMAL_POINT) << " (" << nbBacktracks << " backtracks, " << nbNodes << " nodes, depth " << Store::getDepth() << ")" << endl;
+                    else
+                        cout << "New solution: " << csol << " energy: " << -(wcsp->Cost2LogProb(csol) + ToulBar2::markov_log) << " prob: " << std::scientific << wcsp->Cost2Prob(csol) * Exp(ToulBar2::markov_log) << std::fixed << " (" << nbBacktracks << " backtracks, " << nbNodes << " nodes, depth " << Store::getDepth() << ")" << endl;
+                }
+                if (cluster == td->getRoot())
+                    td->newSolution(csol);
+                else {
+                    assert(cluster == td->getRootRDS());
+                    // Remember current solution for value ordering heuristic
+                    wcsp->restoreSolution(cluster);
+                    TAssign a;
+                    cluster->getSolution(a);
+                    if (ToulBar2::showSolutions) {
+                        TAssign::iterator it = a.begin();
+                        while (it != a.end()) {
+                            Value v = it->second;
+                            cout << it->first << ":" << v << " ";
+                            ++it;
+                        }
+                        cout << endl;
+                    }
+                }
+            }
+        }
+        Cost bestlb = MAX(lbgood, clb);
+        if (ToulBar2::verbose >= 1)
+            cout << "[" << Store::getDepth() << "] C" << cluster->getId() << " return " << bestlb << " " << cub << endl;
+        assert(bestlb <= cub);
+        if (ToulBar2::hbfs && bestlb < cub) { // keep current node in open list instead of closing it!
+            if (cluster->getNbVars() > 0) {
+                int varid = *cluster->getVars().begin();
+                assert(wcsp->assigned(varid));
+                cluster->cp->addChoicePoint(CP_ASSIGN, varid, wcsp->getValue(varid), true); // dummy additional choice point to avoid the reversal of the last effective choice point for this open node
+            }
+#ifndef NDEBUG
+            OpenList* prevopen = cluster->open;
+            Cost tmplb = MIN_COST;
+            Cost tmpub = MAX_COST;
+            Cost tmpclusterub = cluster->getUb();
+            assert(cluster == wcsp->getTreeDec()->getRoot() || cluster->nogoodGet(tmplb, tmpub, &cluster->open)); // warning! it can destroy cluster->ub
+            cluster->setUb(tmpclusterub);
+            assert(prevopen == cluster->open);
+#endif
+            addOpenNode(*(cluster->cp), *(cluster->open), bestlb, cluster->getCurrentDelta()); // reinsert as a new open node
+            cluster->hbfsLimit = cluster->nbBacktracks; // and stop current visited node
+            bestlb = cub;
+        }
+        return make_pair(bestlb, cub);
+    } else {
+        // Enumerates cluster proper variables
+        *((StoreCost*)searchSize) += ((Cost)(10e6 * Log(wcsp->getDomainSize(varIndex))));
+        pair<Cost, Cost> res = make_pair(MIN_COST, MAX_COST);
+        if (wcsp->enumerated(varIndex)) {
+            assert(wcsp->canbe(varIndex, wcsp->getSupport(varIndex)));
+            // Reuse last solution found if available
+            Value bestval = ((ToulBar2::verifyOpt) ? (wcsp->getSup(varIndex) + 1) : wcsp->getBestValue(varIndex));
+            res = binaryChoicePoint(cluster, lbgood, cub, varIndex, (wcsp->canbe(varIndex, bestval)) ? bestval : wcsp->getSupport(varIndex));
+        } else {
+            res = binaryChoicePoint(cluster, lbgood, cub, varIndex, wcsp->getInf(varIndex));
+        }
+        if (ToulBar2::verbose >= 1)
+            cout << "[" << Store::getDepth() << "] C" << cluster->getId() << " return " << res.first << " " << res.second << endl;
+        assert(res.first >= lbgood);
+        assert(res.second <= cub);
+        assert(res.first <= res.second);
+        return res;
+    }
+}
+
+/*
+ * Russian Doll Search with Tree Decomposition
+ *
+ */
+
+pair<Cost, Cost> Solver::russianDollSearch(Cluster* c, Cost cub)
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+    pair<Cost, Cost> res = make_pair(MIN_COST, cub);
+
+    TClusters::iterator it = c->beginSortedEdges();
+    while (it != c->endSortedEdges()) {
+        russianDollSearch(*it, cub);
+        ++it;
+    }
+
+    try {
+        Store::store();
+
+        Cost nogoodlb = MIN_COST;
+        Cost nogoodub = MAX_COST;
+        if (c != td->getRoot()) {
+            c->deconnectSep();
+            c->nogoodGet(nogoodlb, nogoodub, &c->open); // update c->open and c->ub
+            //	      if (nogoodlb == bestub) {
+            //	          assert(bestub <= cub);
+            //	          Store::restore();
+            //	          return make_pair(bestub,bestub);
+            //	      }
+            assert(c->getLbRec() == MIN_COST);
+            c->setLb(MIN_COST);
+            wcsp->setLb(MIN_COST);
+            td->setCurrentCluster(td->getRoot());
+            Cost lbroot = td->getLbRecRDS();
+            td->setCurrentCluster(c);
+            Cost lbc = td->getLbRecRDS();
+            cub = cub - lbroot + lbc;
+            cub = MIN(cub, nogoodub);
+        }
+        wcsp->setUb(cub);
+        td->setCurrentCluster(c);
+        td->setRootRDS(c);
+        lastConflictVar = -1;
+
+        if (ToulBar2::verbose >= 0)
+            cout << "--- Solving cluster subtree " << c->getId() << " ..." << endl;
+
+        //	  if(c == td->getRoot()) wcsp->propagate(); // needed if there are connected components
+        enforceUb();
+        wcsp->propagate();
+        Cost bestlb = td->getLbRecRDS();
+        bestlb = MAX(bestlb, nogoodlb);
+        if (bestlb >= cub)
+            THROWCONTRADICTION;
+        res = hybridSolve(c, bestlb, cub);
+        assert(res.first >= bestlb);
+        c->setLbRDS(res.first);
+        //	  if (c->sepSize() == 0)  {
+        c->nogoodRec(res.first, ((res.second < cub) ? res.second : MAX_COST), &c->open);
+        //	  }
+
+        if (ToulBar2::debug || ToulBar2::verbose >= 1)
+            c->printStatsRec();
+        if (ToulBar2::verbose >= 0)
+            cout << "---  done  cost = [" << res.first << "," << res.second << "] (" << nbBacktracks << " backtracks, " << nbNodes << " nodes, depth " << Store::getDepth() << ")" << endl
+                 << endl;
+
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+        res.first = res.second;
+        c->setLbRDS(cub);
+        //	  if (c->sepSize() == 0) {
+        c->nogoodRec(cub, MAX_COST, &c->open);
+        //	  }
+    }
+    Store::restore();
+    if (c == td->getRoot()) {
+        c->resetLbRec();
+    } else {
+        if (c->open)
+            *(c->open) = OpenList(); // clear current open list
+        c->resetUbRec(c);
+    }
+    return res;
+}
+
+/*
+ * Backtrack with Tree Decomposition for counting in CSP
+ *
+ */
+
+BigInteger Solver::sharpBTD(Cluster* cluster)
+{
+
+    TreeDecomposition* td = wcsp->getTreeDec();
+    BigInteger NbSol = 0, nb = 0;
+    TCtrs totalList;
+    if (ToulBar2::verbose >= 1)
+        cout << "[" << Store::getDepth() << "] recursive solve     cluster: " << cluster->getId() << " **************************************************************" << endl;
+
+    int varIndex = -1;
+    if (ToulBar2::Static_variable_ordering)
+        varIndex = getNextUnassignedVar(cluster);
+    else if (ToulBar2::weightedDegree && ToulBar2::lastConflict)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxWeightedDegreeLastConflictRandomized(cluster) : getVarMinDomainDivMaxWeightedDegreeLastConflict(cluster));
+    else if (ToulBar2::lastConflict)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxDegreeLastConflictRandomized(cluster) : getVarMinDomainDivMaxDegreeLastConflict(cluster));
+    else if (ToulBar2::weightedDegree)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxWeightedDegreeRandomized(cluster) : getVarMinDomainDivMaxWeightedDegree(cluster));
+    else
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxDegreeRandomized(cluster) : getVarMinDomainDivMaxDegree(cluster));
+
+    if (varIndex < 0) {
+        // Current cluster is completely assigned
+        Cost lb = wcsp->getLb();
+        if (ToulBar2::verbose >= 1)
+            cout << "[" << Store::getDepth() << "] C" << cluster->getId() << " lb= " << lb << endl;
+        NbSol = 1 * cluster->getCount();
+
+        if (ToulBar2::approximateCountingBTD && cluster->getParent() == NULL)
+            totalList = cluster->getCtrsTree();
+
+        for (TClusters::iterator iter = cluster->beginSortedEdges(); NbSol > 0 && iter != cluster->endSortedEdges(); ++iter) {
+            // Solves each cluster son
+            nb = 0;
+            Cluster* c = *iter;
+            if ((nb = c->sgoodGet()) != -1) {
+                nbSGoodsUse++;
+            } else {
+                nb = 0;
+                td->setCurrentCluster(c);
+                try {
+                    Store::store();
+                    if (ToulBar2::approximateCountingBTD) {
+                        if (c->getParent() != NULL && c->getParent()->getParent() == NULL && c->getNbVars() > 1) {
+                            // for this son of root, we disconnect the constraints which isn't in intersection
+                            TCtrs usefulCtrsList = c->getCtrsTree();
+                            c->deconnectDiff(totalList, usefulCtrsList);
+                        }
+                    }
+                    wcsp->propagate();
+                    nb = sharpBTD(c);
+                    c->sgoodRec(0, nb);
+                    nbSGoods++;
+                } catch (const Contradiction&) {
+                    wcsp->whenContradiction();
+                    c->sgoodRec(0, 0); // no solution
+                    nbSGoods++;
+                }
+                Store::restore();
+            }
+            if (cluster->getParent() == NULL && ToulBar2::approximateCountingBTD) {
+                // computation of upper bound of solutions number for each part
+                if (ubSol.find(c->getPart()) == ubSol.end()) {
+                    ubSol[c->getPart()] = 1;
+                }
+                ubSol[c->getPart()] *= nb;
+            }
+            NbSol *= nb;
+        }
+        return NbSol;
+    } else {
+        // Enumerates cluster proper variables
+        if (wcsp->enumerated(varIndex)) {
+            assert(wcsp->canbe(varIndex, wcsp->getSupport(varIndex)));
+            // Reuse last solution found if available
+            Value bestval = wcsp->getBestValue(varIndex);
+
+            NbSol = binaryChoicePointSBTD(cluster, varIndex, (wcsp->canbe(varIndex, bestval)) ? bestval : wcsp->getSupport(varIndex));
+        } else {
+            NbSol = binaryChoicePointSBTD(cluster, varIndex, wcsp->getInf(varIndex));
+        }
+        if (ToulBar2::verbose >= 1)
+            cout << "[" << Store::getDepth() << "] C" << cluster->getId() << " return " << NbSol << endl;
+        return NbSol;
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/search/tb2clusters.cpp b/code/include/tb2/search/tb2clusters.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ce43c77e4da8547dd8becc3945cf340436cedf88
--- /dev/null
+++ b/code/include/tb2/search/tb2clusters.cpp
@@ -0,0 +1,2430 @@
+/*
+ * **************** Data-structure to manage Cluster Tree Decomposition *******************
+ *
+ */
+
+#include "tb2clusters.hpp"
+#include "core/tb2naryconstr.hpp"
+//#include "applis/tb2pedigree.hpp"
+//#include "applis/tb2haplotype.hpp"
+
+/*
+ * Comparison between cluster sons
+ *
+ */
+
+int Cluster::clusterCounter = 0;
+
+bool CmpClusterStructBasic::operator()(const Cluster* lhs, const Cluster* rhs) const
+{
+    return lhs && rhs && (lhs->getIndex() < rhs->getIndex());
+}
+bool CmpClusterStruct::operator()(const Cluster* lhs, const Cluster* rhs) const
+{
+    return lhs && rhs && (lhs->sepSize() < rhs->sepSize() || (lhs->sepSize() == rhs->sepSize() && (lhs->getNbVarsTree() < rhs->getNbVarsTree() || (lhs->getNbVarsTree() == rhs->getNbVarsTree() && lhs->getIndex() < rhs->getIndex()))));
+}
+
+/*
+ * Separator class derived from NaryConstraint
+ *
+ */
+
+Separator::Separator(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in)
+    : AbstractNaryConstraint(wcsp, scope_in, arity_in)
+    , cluster(NULL)
+    , nonassigned(arity_in)
+    , isUsed(false)
+    , lbPrevious(MIN_COST)
+    , optPrevious(false)
+{
+    for (int i = 0; i < arity_in; i++) {
+        unsigned int domsize = scope_in[i]->getDomainInitSize();
+        vars.insert(scope_in[i]->wcspIndex);
+        if (domsize > (unsigned int)std::numeric_limits<tValue>::max()) {
+            cerr << "Nary constraints overflow. Extend tValue type range." << endl;
+            exit(EXIT_FAILURE);
+        }
+    }
+    t = Tuple(arity_in, 0);
+
+    linkSep.content = this;
+
+    // initial "delayed" propagation
+    if (arity_ == 0) {
+        queueSep();
+    } else {
+        for (int i = 0; i < arity_; i++) {
+            if (getVar(i)->assigned())
+                assign(i);
+        }
+    }
+}
+
+Separator::Separator(WCSP* wcsp)
+    : AbstractNaryConstraint(wcsp)
+    , nonassigned(0)
+    , isUsed(false)
+    , lbPrevious(MIN_COST)
+    , optPrevious(false)
+{
+}
+
+void Separator::setup(Cluster* cluster_in)
+{
+    cluster = cluster_in;
+    AbstractNaryConstraint::cluster = cluster_in->getParent()->getId();
+    delta.clear();
+    TVars::iterator it = vars.begin();
+    while (it != vars.end()) {
+        EnumeratedVariable* var = (EnumeratedVariable*)cluster->getWCSP()->getVar(*it);
+        delta.push_back(vector<StoreCost>(var->getDomainInitSize(), StoreCost(MIN_COST)));
+        ++it;
+    }
+
+    int nvars = cluster->getNbVars();
+    if (!nvars)
+        return;
+
+    int nproper = 0;
+    it = cluster->beginVars();
+    while (it != cluster->endVars()) {
+        if (!cluster->isSepVar(*it))
+            nproper++;
+        ++it;
+    }
+    s = Tuple(cluster->getNbVars(), 0);
+}
+
+void Separator::assign(int varIndex)
+{
+    if (connected(varIndex)) {
+        deconnect(varIndex);
+        nonassigned = nonassigned - 1;
+        assert(nonassigned >= 0);
+        if (nonassigned == 0) {
+            assert(!cluster || cluster->isActive());
+            queueSep();
+        }
+    }
+}
+
+void Separator::propagate()
+{
+    if (ToulBar2::verbose >= 3)
+        cout << this << " propagate C" << cluster->getId() << " " << nonassigned << " " << cluster->getParent()->getId() << " " << connected() << endl;
+    for (int i = 0; connected() && i < arity_; i++) {
+        if (getVar(i)->assigned())
+            assign(i);
+    }
+    if (nonassigned == 0 && wcsp->getTreeDec()->isInCurrentClusterSubTree(cluster->getParent()->getId())) {
+        wcsp->revise(this);
+        if (ToulBar2::allSolutions) {
+            Cost res = MIN_COST;
+            BigInteger nb = 0.;
+            getSg(res, nb);
+            if (nb == 0.) {
+                if (ToulBar2::verbose >= 1)
+                    cout << "use #good " << this << endl;
+                THROWCONTRADICTION;
+            } else if (nb > 0.)
+                unqueueSep();
+        } else {
+            Cost clb = MIN_COST;
+            Cost cub = MAX_COST;
+            get(clb, cub, &cluster->open);
+            bool opt = (clb == cub);
+            if (cluster->isActive()) {
+                Cost lbpropa = cluster->getLbRec();
+                Cost lb = clb - lbpropa;
+                if (opt || lb > MIN_COST) {
+                    if (ToulBar2::verbose >= 1)
+                        cout << "nogood C" << cluster->getId() << " used in advance (lbpropa=" << lbpropa << " ,lb+=" << lb << ")" << endl;
+                    assert(lb >= MIN_COST);
+                    if (opt)
+                        unqueueSep();
+                    // atomic operations:
+                    isUsed = true;
+                    cluster->deactivate();
+                    assert(cluster->getParent()->getId() == Constraint::cluster);
+                    cluster->getParent()->increaseLb(lbpropa);
+                    if (lb > MIN_COST)
+                        projectLB(lb); // project into global lb and into parent cluster
+                    lbPrevious = clb;
+                    optPrevious = opt;
+                    // end of atomic operations.
+                }
+            } else if (isUsed && cluster->getParent()->isActive()) {
+                if (clb > lbPrevious || (opt == true && optPrevious == false)) {
+                    if (ToulBar2::verbose >= 1)
+                        cout << "nogood C" << cluster->getId() << " used in advance (lbPrevious=" << lbPrevious << " ,optPrevious=" << optPrevious << " ,clb=" << clb << " ,opt=" << opt << ")" << endl;
+                    if (opt)
+                        unqueueSep();
+                    // atomic operations:
+                    if (clb > lbPrevious)
+                        projectLB(clb - lbPrevious); // project into global lb and into parent cluster
+                    lbPrevious = clb;
+                    optPrevious = opt;
+                    // end of atomic operations.
+                }
+            }
+        }
+    }
+}
+
+void Separator::set(Cost clb, Cost cub, Solver::OpenList** open)
+{
+    assert(clb <= cub);
+    int i = 0;
+    WCSP* wcsp = cluster->getWCSP();
+    Cost deltares = MIN_COST;
+    if (ToulBar2::verbose >= 1)
+        cout << "( ";
+    TVars::iterator it = vars.begin();
+    while (it != vars.end()) {
+        assert(wcsp->assigned(*it));
+        tValue val = wcsp->toIndex(*it, wcsp->getValue(*it));
+        if (ToulBar2::verbose >= 1)
+            cout << "(" << *it << "," << val << ") ";
+        t[i] = val;
+        deltares += delta[i][val];
+        ++it;
+        i++;
+    }
+    if (ToulBar2::verbose >= 1)
+        cout << ")";
+    assert(clb < cub || clb + deltares >= MIN_COST);
+    //assert(nogoods.find(t) == nogoods.end() || nogoods[Tuple(t)].second <= MAX(MIN_COST, c + deltares));
+    TNoGoods::iterator itng = nogoods.find(t);
+    if (ToulBar2::verbose >= 3) {
+        cout << " <C" << cluster->getId() << ",";
+        cout << t;
+        cout << "," << MAX(MIN_COST, clb + deltares) << "," << MAX(MIN_COST, cub + deltares) << ">" << endl;
+    }
+    if (open) {
+        if (*open) {
+            // open node list already found => the corresponding nogood has been created before
+            assert(itng != nogoods.end());
+            assert(*open == &itng->second.third);
+            itng->second.first = MAX(itng->second.first, clb + deltares);
+            itng->second.second = MIN(itng->second.second, MAX(MIN_COST, cub + ((cub < MAX_COST) ? deltares : MIN_COST)));
+            if (ToulBar2::verbose >= 1)
+                cout << " Learn nogood " << itng->second.first << ", cub= " << itng->second.second << ", delta= " << deltares << " on cluster " << cluster->getId() << endl;
+        } else {
+            assert(itng == nogoods.end());
+            nogoods[t] = make_triplet(MAX(MIN_COST, clb + deltares), MAX(MIN_COST, cub + ((cub < MAX_COST) ? deltares : MIN_COST)), Solver::OpenList());
+            if (ToulBar2::verbose >= 1)
+                cout << " Learn nogood " << nogoods[t].first << ", cub= " << nogoods[t].second << ", delta= " << deltares << " on cluster " << cluster->getId() << endl;
+            *open = &nogoods[t].third;
+        }
+    } else {
+        if (itng == nogoods.end()) {
+            nogoods[t] = make_triplet(MAX(MIN_COST, clb + deltares), MAX(MIN_COST, cub + ((cub < MAX_COST) ? deltares : MIN_COST)), Solver::OpenList());
+            if (ToulBar2::verbose >= 1)
+                cout << " Learn nogood " << nogoods[t].first << ", cub= " << nogoods[t].second << ", delta= " << deltares << " on cluster " << cluster->getId() << endl;
+        } else {
+            itng->second.first = MAX(itng->second.first, clb + deltares);
+            itng->second.second = MIN(itng->second.second, MAX(MIN_COST, cub + ((cub < MAX_COST) ? deltares : MIN_COST)));
+            if (ToulBar2::verbose >= 1)
+                cout << " Learn nogood " << itng->second.first << ", cub= " << itng->second.second << ", delta= " << deltares << " on cluster " << cluster->getId() << endl;
+        }
+    }
+}
+
+void Separator::setSg(Cost c, BigInteger nb)
+{
+    int i = 0;
+    WCSP* wcsp = cluster->getWCSP();
+    Cost deltares = MIN_COST;
+    if (ToulBar2::verbose >= 1)
+        cout << "( ";
+    TVars::iterator it = vars.begin();
+    while (it != vars.end()) {
+        assert(wcsp->assigned(*it));
+        tValue val = wcsp->toIndex(*it, wcsp->getValue(*it));
+        if (ToulBar2::verbose >= 1)
+            cout << "(" << *it << "," << val << ") ";
+        t[i] = val;
+        deltares += delta[i][val];
+        ++it;
+        i++;
+    }
+    assert(c + deltares >= MIN_COST);
+    if (ToulBar2::verbose >= 1)
+        cout << ") Learn #good with " << nb << " solutions" << endl; // /" << cluster->getVarsTree().size() << endl;
+    sgoods[t] = TPairSG(MAX(MIN_COST, c + deltares), nb);
+}
+
+Cost Separator::getCurrentDelta()
+{
+    int i = 0;
+    WCSP* wcsp = cluster->getWCSP();
+    Cost sumdelta = MIN_COST;
+    TVars::iterator it = vars.begin();
+    while (it != vars.end()) {
+        if (wcsp->assigned(*it)) {
+            tValue val = wcsp->toIndex(*it, wcsp->getValue(*it));
+            sumdelta += delta[i][val];
+        } else {
+            EnumeratedVariable* x = (EnumeratedVariable*)wcsp->getVar(*it);
+            if (wcsp->td->isDeltaModified(x->wcspIndex)) {
+                Cost del = -MAX_COST;
+                for (EnumeratedVariable::iterator itx = x->begin(); itx != x->end(); ++itx) {
+                    tValue val = x->toIndex(*itx);
+                    // Cost unaryc = x->getCost(val);
+                    // Could use delta[i][val]-unaryc for pure RDS with only one separator per variable
+                    if (del < delta[i][val])
+                        del = delta[i][val];
+                }
+                assert(del > -MAX_COST);
+                sumdelta += del;
+            }
+        }
+        ++it;
+        i++;
+    }
+    return sumdelta;
+}
+
+bool Separator::get(Cost& clb, Cost& cub, Solver::OpenList** open)
+{
+    int i = 0;
+    clb = MIN_COST;
+    cub = MIN_COST;
+
+    if (ToulBar2::verbose >= 1)
+        cout << "( ";
+    TVars::iterator it = vars.begin();
+    while (it != vars.end()) {
+        assert(wcsp->assigned(*it));
+        tValue val = wcsp->toIndex(*it, wcsp->getValue(*it));
+        if (ToulBar2::verbose >= 1)
+            cout << "(" << *it << "," << val << ") ";
+        t[i] = val; // build the tuple
+        clb -= delta[i][val]; // delta structure
+        cub -= delta[i][val]; // delta structure
+        ++it;
+        i++;
+    }
+    TNoGoods::iterator itng = nogoods.find(t);
+    if (itng != nogoods.end()) {
+        TPairNG& p = itng->second; // it is crucial here to get a reference to the data triplet object instead of a copy, otherwise open node list would be copied
+        if (ToulBar2::verbose >= 1)
+            cout << ") Use nogood " << p.first << ", delta=" << clb << " (cub=" << p.second << ") on cluster " << cluster->getId() << " (active=" << cluster->isActive() << ")" << endl;
+        assert(p.first < p.second || clb + p.first >= MIN_COST);
+        clb += p.first;
+        cub += p.second;
+        cub = MAX(MIN_COST, cub);
+        cluster->setUb(cub);
+        if (open)
+            *open = &p.third;
+        if (ToulBar2::btdMode >= 2) {
+            Cost lbrds = cluster->getLbRDS();
+            assert(clb < cub || clb >= lbrds);
+            clb = MAX(lbrds, clb);
+        } else {
+            clb = MAX(MIN_COST, clb);
+        }
+        return true;
+    } else {
+        clb = (ToulBar2::btdMode >= 2) ? cluster->getLbRDS() : MIN_COST;
+        cub = MAX_COST;
+        cluster->setUb(MAX_COST);
+        if (open)
+            *open = NULL;
+        if (ToulBar2::verbose >= 1)
+            cout << ") NOT FOUND for cluster " << cluster->getId() << endl;
+        return false;
+    }
+}
+
+BigInteger Separator::getSg(Cost& res, BigInteger& nb)
+{
+    int i = 0;
+    res = MIN_COST;
+    if (ToulBar2::verbose >= 1)
+        cout << "( ";
+    TVars::iterator it = vars.begin();
+    while (it != vars.end()) {
+        assert(wcsp->assigned(*it));
+        tValue val = wcsp->toIndex(*it, wcsp->getValue(*it));
+        if (ToulBar2::verbose >= 1)
+            cout << "(" << *it << "," << val << ") ";
+        t[i] = val; // build the tuple
+        res -= delta[i][val]; // delta structure
+        ++it;
+        i++;
+    }
+    TSGoods::iterator itsg = sgoods.find(t);
+    if (itsg != sgoods.end()) {
+        TPairSG p = itsg->second;
+        if (ToulBar2::verbose >= 1)
+            cout << ") Use #good  with nb = " << p.second << "solutions on cluster " << cluster->getId() << endl;
+        /*		assert(res + p.first >= MIN_COST);
+		res += p.first;*/
+        nb = p.second;
+        /*res = MAX(MIN_COST,res);*/
+        return nb;
+    } else {
+        /*res = MIN_COST;*/
+        if (ToulBar2::verbose >= 1)
+            cout << ") NOT FOUND for cluster " << cluster->getId() << endl;
+        return nb = -1;
+    }
+}
+
+bool Separator::solGet(TAssign& a, Tuple& sol)
+{
+    int i = 0;
+    TVars::iterator it = vars.begin();
+    while (it != vars.end()) {
+        tValue val = wcsp->toIndex(*it, a[*it]);
+        t[i] = val; // build the tuple
+        ++it;
+        i++;
+    }
+    TPairSol p;
+    TSols::iterator itsol = solutions.find(t);
+    if (itsol != solutions.end()) {
+        p = itsol->second;
+        sol = p.second;
+
+        if (ToulBar2::verbose >= 1) {
+            cout << "asking  solution  sep:";
+            cout << t;
+            cout << "  cost: " << p.first << endl;
+            cout << "  sol: " << sol << endl;
+        }
+
+        return true;
+    }
+    return false;
+}
+
+void Separator::solRec(Cost ub)
+{
+    WCSP* wcsp = cluster->getWCSP();
+
+    Cost deltares = MIN_COST;
+    int i = 0;
+    TVars::iterator it = vars.begin();
+    while (it != vars.end()) {
+        assert(wcsp->assigned(*it));
+        tValue val = wcsp->toIndex(*it, wcsp->getValue(*it));
+        t[i] = val; // build the tuple
+        deltares += delta[i][val];
+        ++it;
+        i++;
+    }
+
+    //  	TPairSol p;
+    //  	TSols::iterator itsol = solutions.find(t);
+    //  	if(itsol != solutions.end()) {
+    //  		p = itsol->second;
+    //  	    assert(p.first > ub + deltares);
+    //  	}
+
+    wcsp->restoreSolution(cluster);
+
+    i = 0;
+    it = cluster->beginVars();
+    while (it != cluster->endVars()) {
+        assert(wcsp->assigned(*it));
+        if (!cluster->isSepVar(*it)) {
+            tValue val = wcsp->toIndex(*it, wcsp->getValue(*it));
+            s[i] = val;
+            i++;
+        }
+        ++it;
+    }
+
+    solutions[t] = TPairSol(ub + deltares, s);
+
+    if (ToulBar2::verbose >= 1) {
+        cout << "recording solution  "
+             << " cost: " << ub << " + delta: " << deltares;
+        cout << " sol: " << s << " sep: " << t << endl;
+    }
+}
+
+void Separator::resetLb()
+{
+    TNoGoods::iterator it = nogoods.begin();
+    while (it != nogoods.end()) {
+        (it->second).first = MIN_COST;
+        (it->second).third = Solver::OpenList();
+        ++it;
+    }
+}
+
+void Separator::resetUb()
+{
+    TNoGoods::iterator it = nogoods.begin();
+    while (it != nogoods.end()) {
+        (it->second).second = MAX_COST;
+        (it->second).third = Solver::OpenList();
+        ++it;
+    }
+}
+
+void Separator::print(ostream& os)
+{
+    os << this << " nogoods(";
+    Double totaltuples = 1;
+    for (int i = 0; i < arity_; i++) {
+        os << scope[i]->getName();
+        if (i < arity_ - 1)
+            os << ",";
+        totaltuples = totaltuples * scope[i]->getDomainInitSize();
+    }
+    os << ")    ";
+    os << " |nogoods| = " << nogoods.size() << " / " << totaltuples << " min:" << ((nogoods.size() == 0) ? MIN_COST : min_element(nogoods.begin(), nogoods.end(), nogoods.value_comp())->second.first) << " (" << cluster->getNbBacktracksClusterTree() << " bt)";
+    if (ToulBar2::verbose >= 4) {
+        os << "nogoods: {";
+        TNoGoods::iterator it = nogoods.begin();
+        while (it != nogoods.end()) {
+            TPairNG p = it->second;
+            os << "<";
+            for (unsigned int i = 0; i < it->first.size(); i++) {
+                os << it->first[i];
+                if (i < it->first.size() - 1)
+                    os << " ";
+            }
+            os << "," << p.first << ">";
+            if (it != nogoods.end())
+                os << " ";
+            it++;
+        }
+        os << "} " << endl;
+    }
+    os << endl;
+}
+
+/*
+ * Cluster class
+ *
+ */
+
+Cluster::Cluster(TreeDecomposition* tdin)
+    : td(tdin)
+    , wcsp(tdin->getWCSP())
+    , id(-1)
+    , parent(NULL)
+    , sep(NULL)
+    , lb(MIN_COST)
+    , ub(MAX_COST)
+    , lbRDS(MIN_COST)
+    , active(true)
+    , countElimVars(1)
+    , cp(NULL)
+    , open(NULL)
+    , hbfsGlobalLimit(LONGLONG_MAX)
+    , hbfsLimit(LONGLONG_MAX)
+    , nbBacktracks(0)
+{
+    instance = clusterCounter++;
+}
+
+Cluster::~Cluster()
+{
+    delete cp;
+}
+
+void Cluster::addVar(Variable* x) { vars.insert(x->wcspIndex); }
+void Cluster::removeVar(Variable* x) { vars.erase(x->wcspIndex); }
+
+void Cluster::addVars(TVars& morevars)
+{
+    vars.insert(morevars.begin(), morevars.end());
+}
+
+void Cluster::addCtr(Constraint* c) { ctrs.insert(c); }
+
+void Cluster::addEdge(Cluster* c) { edges.insert(c); }
+
+TClusters::iterator Cluster::removeEdge(TClusters::iterator it)
+{
+    TClusters::iterator itaux = it;
+    ++it;
+    edges.erase(itaux);
+    return it;
+}
+
+void Cluster::removeEdge(Cluster* c)
+{
+    TClusters::iterator it = edges.find(c);
+    if (it != edges.end())
+        edges.erase(it);
+}
+
+void Cluster::addEdges(TClusters& cls)
+{
+    edges.insert(cls.begin(), cls.end());
+}
+
+void Cluster::addCtrs(TCtrs& ctrsin)
+{
+    ctrs.insert(ctrsin.begin(), ctrsin.end());
+}
+
+TCtrs Cluster::getCtrsTree()
+{
+    TCtrs ctrsTree;
+    for (TClusters::iterator it = descendants.begin(); it != descendants.end(); ++it) {
+        Cluster* c = *it;
+        ctrsTree.insert(c->getCtrs().begin(), c->getCtrs().end());
+    }
+    return ctrsTree;
+}
+
+bool compareCtrs(const Constraint* lhs, const Constraint* rhs)
+{
+    assert(lhs);
+    assert(rhs);
+    return lhs != rhs;
+}
+
+void Cluster::deconnectDiff(TCtrs& listCtrsTot, TCtrs& listCtrs)
+{
+    TCtrs listDiff;
+    set_difference(listCtrsTot.begin(), listCtrsTot.end(), listCtrs.begin(), listCtrs.end(), inserter(listDiff, listDiff.begin()), compareCtrs);
+    for (TCtrs::iterator itctr = listDiff.begin(); itctr != listDiff.end(); ++itctr) {
+        Constraint* ctr = *itctr;
+        ctr->deconnect();
+    }
+}
+
+void Cluster::deconnectSep()
+{
+    if (!sep)
+        return;
+    TVars::iterator its = beginSep();
+    while (its != endSep()) {
+        Variable* x = wcsp->getVar(*its);
+        ConstraintList* xctrs = x->getConstrs();
+        for (ConstraintList::iterator it = xctrs->begin(); it != xctrs->end(); ++it) {
+            Constraint* ctr = (*it).constr;
+            Cluster* ctrc = td->getCluster(ctr->getCluster()); // warning! return parent cluster if sep
+            if (!(ctr->isSep() && isDescendant(ctrc))) {
+                // keep descendant separators connected
+                //			    if (ctr->isSep()) cout << "deconnect separator parent " << ctr->cluster << " " << *ctr << endl;
+                ctr->deconnect();
+            }
+        }
+        x->assign(x->getSupport());
+        ++its;
+    }
+}
+
+void Cluster::resetLbRec()
+{
+    if (sepSize() > 0)
+        sep->resetLb();
+    if (this != td->getRoot())
+        open = NULL;
+    for (TClusters::iterator iter = beginEdges(); iter != endEdges(); ++iter) {
+        (*iter)->resetLbRec();
+    }
+}
+
+void Cluster::resetUbRec(Cluster* root)
+{
+    if (!sep || sepSize() == 0 || !root->sep || root->sepSize() == 0)
+        return;
+    TVars inter;
+    td->intersection(sep->getVars(), root->sep->getVars(), inter);
+    if (inter.size() > 0)
+        sep->resetUb();
+    if (this != td->getRoot())
+        open = NULL;
+    for (TClusters::iterator iter = beginEdges(); iter != endEdges(); ++iter) {
+        (*iter)->resetUbRec(root);
+    }
+}
+
+Cost Cluster::getLbRec() const
+{
+    assert(isActive());
+    Cost res = lb;
+    for (TClusters::iterator iter = beginEdges(); iter != endEdges(); ++iter) {
+        if ((*iter)->isActive())
+            res += (*iter)->getLbRec();
+    }
+    return res;
+}
+
+Cost Cluster::getLbRecRDS()
+{
+    assert(isActive());
+    Cost res = lb;
+    for (TClusters::iterator iter = beginEdges(); iter != endEdges(); ++iter) {
+        if ((*iter)->isActive()) {
+            Cost propa = (*iter)->getLbRecRDS();
+            Cost rds = (*iter)->getLbRDS();
+            res += MAX(propa, rds);
+        }
+    }
+    return res;
+}
+
+void Cluster::reactivate()
+{
+    assert(!isActive());
+    active = true;
+    for (TClusters::iterator iter = beginEdges(); iter != endEdges(); ++iter) {
+        assert(!(*iter)->isActive());
+        if (!(*iter)->sep->used())
+            (*iter)->reactivate();
+    }
+}
+
+void Cluster::deactivate()
+{
+    if (isActive()) {
+        if (ToulBar2::verbose >= 1)
+            cout << "deactive cluster " << getId() << endl;
+        active = false;
+        for (TClusters::iterator iter = beginEdges(); iter != endEdges(); ++iter) {
+            (*iter)->deactivate();
+        }
+    }
+}
+
+void Cluster::setWCSP2Cluster()
+{
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        if (!isVar(i)) {
+            EnumeratedVariable* x = (EnumeratedVariable*)wcsp->getVar(i);
+            for (ConstraintList::iterator it = x->getConstrs()->begin(); it != x->getConstrs()->end(); ++it) {
+                Constraint* ctr = (*it).constr;
+                ctr->deconnect();
+            }
+        }
+    }
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        if (!isVar(i)) {
+            EnumeratedVariable* x = (EnumeratedVariable*)wcsp->getVar(i);
+            x->assign(x->getSupport());
+        }
+    }
+}
+
+void Cluster::getElimVarOrder(vector<int>& elimVarOrder)
+{
+    for (TClusters::reverse_iterator iter = edges.rbegin(); iter != edges.rend(); ++iter) {
+        Cluster* cluster = *iter;
+        cluster->getElimVarOrder(elimVarOrder);
+    }
+    for (TVars::reverse_iterator itp = vars.rbegin(); itp != vars.rend(); ++itp) {
+        if (!isSepVar(*itp)) {
+            elimVarOrder.push_back(*itp);
+        }
+    }
+}
+
+// side-effect: remember last solution
+void Cluster::getSolution(TAssign& sol)
+{
+    static Tuple s; //FIXME: unsafe???
+    TVars::iterator it;
+    if (parent == NULL || this == td->getRootRDS()) {
+        if (vars.size() != 0) {
+            it = beginVars();
+            while (it != endVars()) {
+                assert(wcsp->assigned(*it));
+                sol[*it] = wcsp->getValue(*it);
+                //				cout << *it << " := " << sol[*it] << endl;
+                ++it;
+            }
+        }
+    }
+    if (sep) {
+#ifndef NDEBUG
+        bool found = sep->solGet(sol, s);
+        assert(found);
+#else
+        sep->solGet(sol, s);
+#endif
+        int i = 0;
+        it = beginVars();
+        while (it != endVars()) {
+            if (!isSepVar(*it)) {
+                sol[*it] = wcsp->toValue(*it, s[i]);
+                //				cout << *it << " := " << sol[*it] << endl;
+                if (!ToulBar2::verifyOpt && ToulBar2::solutionBasedPhaseSaving)
+                    wcsp->setBestValue(*it, sol[*it]);
+                i++;
+            }
+            ++it;
+        }
+    }
+    for (TClusters::iterator iter = beginEdges(); iter != endEdges(); ++iter) {
+        Cluster* cluster = *iter;
+        cluster->getSolution(sol);
+    }
+}
+
+bool Cluster::isEdge(Cluster* c)
+{
+    for (TClusters::iterator iter = beginEdges(); iter != endEdges(); ++iter) {
+        Cluster* cluster = *iter;
+        if (c == cluster)
+            return true;
+    }
+    return false;
+}
+
+void Cluster::setup()
+{
+    if (sep)
+        sep->setup(this);
+    if (ToulBar2::hbfs) {
+        if (cp)
+            delete cp;
+        cp = new Solver::CPStore();
+    }
+}
+
+void Cluster::accelerateDescendants()
+{
+    quickdescendants.clear();
+    for (int j = 0; j < td->getNbOfClusters(); j++) {
+        quickdescendants.push_back(descendants.find(td->getCluster(j)) != descendants.end());
+    }
+}
+
+void Cluster::print()
+{
+    //cout << "(" << id << ",n:" << getNbVars() << ",lb:" << getLb() << ") ";
+
+    cout << "cluster " << getId();
+
+    cout << " vars {";
+    TVars::iterator itp = beginVars();
+    while (itp != endVars()) {
+        if (!isSepVar(*itp)) {
+            cout << wcsp->getVar(*itp)->getName() << ",";
+            //cout << *itp << "C" << wcsp->getVar(*itp)->getCluster() << ",";
+            assert(wcsp->getVar(*itp)->getCluster() == -1 || wcsp->getVar(*itp)->getCluster() == getId());
+        }
+        ++itp;
+    }
+    cout << "\b}";
+
+    if (sep) {
+        cout << " U sep {";
+        TVars::iterator its = beginSep();
+        while (its != endSep()) {
+            cout << wcsp->getVar(*its)->getName();
+            ++its;
+            if (its != endSep())
+                cout << ",";
+        }
+        cout << "}";
+    }
+
+    if (!edges.empty()) {
+        cout << " sons {";
+        if (sortedEdges.size() == edges.size()) {
+            TClusters::iterator itc = beginSortedEdges();
+            while (itc != endSortedEdges()) {
+                cout << (*itc)->getId();
+                ++itc;
+                if (itc != endSortedEdges())
+                    cout << ",";
+            }
+        } else {
+            TClusters::iterator itc = beginEdges();
+            while (itc != endEdges()) {
+                cout << (*itc)->getId();
+                ++itc;
+                if (itc != endEdges())
+                    cout << ",";
+            }
+        }
+        cout << "}";
+    }
+
+    /*
+  	cout << " ctrs {";
+  	TCtrs::iterator itctr = beginCtrs();
+  	while(itctr != endCtrs()) {
+  	  Constraint* ctr = *itctr;
+  	  cout << "( ";
+  	  for(int i=0;i<ctr->arity();i++) cout << ctr->getVar(i)->wcspIndex << " ";
+  	  cout << ">C" << ctr->getCluster() << ")";
+  	  ++itctr;
+  	}
+  	cout << "}";
+	cout << " descendants {";
+	TClusters::iterator itd = beginDescendants();
+	while(itd != endDescendants()) {
+      cout << (*itd)->getId();
+      ++itd;
+      if(itd != endDescendants()) cout << ",";
+	}
+	cout << "}";
+     */
+
+    cout << endl;
+}
+
+void Cluster::dump()
+{
+    //cout << "(" << id << ",n:" << getNbVars() << ",lb:" << getLb() << ") ";
+
+    char clusterVarsFilename[128];
+    char sepVarsFilename[128];
+    char sonsFilename[128];
+    char fatherFilename[128];
+    char sepSizeFilename[128];
+
+    sprintf(clusterVarsFilename, "%s.info/%d.vars", getWCSP()->getName().c_str(), getId());
+    sprintf(sepVarsFilename, "%s.info/%d.sep", getWCSP()->getName().c_str(), getId());
+    sprintf(sonsFilename, "%s.info/%d.sons", getWCSP()->getName().c_str(), getId());
+    sprintf(fatherFilename, "%s.info/%d.father", getWCSP()->getName().c_str(), getId());
+    sprintf(sepSizeFilename, "%s.info/%d.sepsize", getWCSP()->getName().c_str(), getId());
+
+    ofstream clusterVarsFile(clusterVarsFilename);
+    ofstream sepVarsFile(sepVarsFilename);
+    ofstream sonsFile(sonsFilename);
+    ofstream fatherFile(fatherFilename);
+    ofstream sepSizeFile(sepSizeFilename);
+
+    if (parent) {
+        fatherFile << parent->getId();
+    } else {
+        fatherFile << "-1";
+    }
+    fatherFile.close();
+
+    long double separatorSize = 1.0;
+
+    if (sep) {
+        TVars::iterator its = beginSep();
+        while (its != endSep()) {
+            clusterVarsFile << wcsp->getVar(*its)->getName() << " ";
+            sepVarsFile << wcsp->getVar(*its)->getName() << " ";
+            separatorSize *= (1.0 + wcsp->getVar(*its)->getSup() - wcsp->getVar(*its)->getInf());
+            ++its;
+        }
+    }
+    sepSizeFile << separatorSize;
+
+    TVars::iterator itp = beginVars();
+    while (itp != endVars()) {
+        if (!isSepVar(*itp)) {
+            clusterVarsFile << wcsp->getVar(*itp)->getName() << " ";
+            assert(wcsp->getVar(*itp)->getCluster() == -1 || wcsp->getVar(*itp)->getCluster() == getId());
+        }
+        ++itp;
+    }
+
+    if (getNbVars() == 0)
+        clusterVarsFile << " ";
+
+    if (!edges.empty()) {
+        TClusters::iterator itc = beginEdges();
+        while (itc != endEdges()) {
+            sonsFile << (*itc)->getId();
+            ++itc;
+            if (itc != endEdges())
+                sonsFile << " ";
+        }
+    }
+
+    clusterVarsFile.close();
+    sepVarsFile.close();
+    sonsFile.close();
+    sepSizeFile.close();
+}
+
+void Cluster::cartProduct(BigInteger& prodCart)
+{
+    for (TVars::iterator it = varsTree.begin(); it != varsTree.end(); it++) {
+        Variable* x = (Variable*)wcsp->getVar(*it);
+        prodCart *= x->getDomainSize();
+    }
+}
+
+/*
+ * Tree Decomposition class
+ *
+ */
+
+TreeDecomposition::TreeDecomposition(WCSP* wcsp_in)
+    : wcsp(wcsp_in)
+    , rootRDS(NULL)
+    , currentCluster(-1)
+    , deltaModified(vector<StoreInt>(wcsp_in->numberOfVariables(), StoreInt(false)))
+{
+}
+
+bool TreeDecomposition::isInCurrentClusterSubTree(int idc)
+{
+    if (idc < 0)
+        return false;
+    Cluster* ci = getCurrentCluster();
+    Cluster* cj = getCluster(idc);
+    assert(ci->isActive());
+    return ci->isDescendant(cj);
+}
+
+bool TreeDecomposition::isActiveAndInCurrentClusterSubTree(int idc)
+{
+    if (idc < 0)
+        return false;
+    Cluster* ci = getCurrentCluster();
+    Cluster* cj = getCluster(idc);
+    assert(ci->isActive());
+    if (!cj->isActive())
+        return false;
+    else
+        return ci->isDescendant(cj);
+}
+
+void TreeDecomposition::fusion(Cluster* ci, Cluster* cj)
+{
+    if (!ci)
+        return;
+    if (!cj)
+        return;
+
+    if (ToulBar2::verbose >= 1)
+        cout << "fusion: " << ci->getId() << " " << cj->getId() << endl;
+
+    ci->addVars(cj->getVars());
+    ci->addCtrs(cj->getCtrs());
+    ci->addEdges(cj->getEdges());
+    TClusters::iterator itk = cj->beginEdges();
+    while (itk != cj->endEdges()) {
+        Cluster* ck = *itk;
+        ++itk;
+        ck->removeEdge(cj);
+        ck->addEdge(ci);
+    }
+    ci->removeEdge(ci);
+    clusters[cj->getId()] = NULL;
+    if (ToulBar2::verbose >= 1) {
+        cout << "fusion ci " << ci->getId() << ",  cj " << cj->getId() << endl;
+        ci->print();
+    }
+    delete cj;
+}
+
+bool TreeDecomposition::treeFusion()
+{
+    bool done = false;
+    for (int j = clusters.size() - 1; j >= 0; j--) {
+        if (!clusters[j])
+            continue;
+        Cluster* cj = clusters[j];
+        if (ToulBar2::verbose >= 3) {
+            cout << "fusion testing ";
+            cj->print();
+        }
+
+        TClusters::iterator it = cj->beginEdges();
+        while (it != cj->endEdges()) {
+            Cluster* c = *it;
+            assert(c == clusters[c->getId()]);
+
+            if ((c->getId() < cj->getId()) && (included(c->getVars(), cj->getVars()) || included(cj->getVars(), c->getVars()))) {
+                c->addVars(cj->getVars());
+                c->addCtrs(cj->getCtrs());
+                c->addEdges(cj->getEdges());
+                TClusters::iterator itk = cj->beginEdges();
+                while (itk != cj->endEdges()) {
+                    Cluster* ck = *itk;
+                    ck->removeEdge(cj);
+                    ck->addEdge(c);
+                    ++itk;
+                }
+                c->removeEdge(c);
+                clusters[cj->getId()] = NULL;
+                if (ToulBar2::verbose >= 1) {
+                    cout << "fusion ci " << c->getId() << ",  cj " << cj->getId() << endl;
+                    c->print();
+                }
+                delete cj;
+                //					done = true;
+                break;
+            }
+            ++it;
+        }
+    }
+    return done;
+}
+
+void TreeDecomposition::treeFusions()
+{
+    while (treeFusion())
+        ;
+
+    TClusters visited;
+    //	Cluster* croot = getBiggerCluster(visited);
+    //	heuristicFusionRec(croot, croot);
+
+    int treewidth = 0;
+    TClusters sclu;
+    for (unsigned int i = 0; i < clusters.size(); i++) {
+        if (clusters[i]) {
+            Cluster* c = clusters[i];
+            sclu.insert(c);
+            if (c->getNbVars() > treewidth)
+                treewidth = c->getNbVars();
+        }
+    }
+    int i = 0;
+    clusters.clear();
+    TClusters::iterator it = sclu.begin();
+    while (it != sclu.end()) {
+        Cluster* c = *it;
+        c->setId(i++);
+        clusters.push_back(*it);
+        ++it;
+    }
+    if (ToulBar2::verbose >= 2)
+        cout << "Tree decomposition width  : " << treewidth - 1 << endl;
+}
+
+void TreeDecomposition::pathFusions(vector<int>& order)
+{
+    vector<Cluster*> rds;
+    int size = clusters.size();
+    vector<bool> connected;
+
+    // detect singleton variables
+    for (int i = 0; i < size; i++) {
+        bool isconnected = (clusters[i]->getNbVars() > 1);
+        for (int j = 0; j < i; j++) {
+            if (clusters[j]->isVar(order[i])) {
+                isconnected = true;
+                break;
+            }
+        }
+        connected.push_back(isconnected);
+    }
+
+    for (int i = 0; i < size; i++) {
+        assert(clusters[i] && clusters[i]->isVar(order[i]));
+        Cluster* c = new Cluster(this);
+        c->addVar(wcsp->getVar(order[i]));
+        if (connected[i]) {
+            for (int j = 0; j < i; j++) {
+                if (clusters[j]->isVar(order[i])) {
+                    for (int l = j + 1; l < i; l++) {
+                        if (connected[l])
+                            rds[l]->addVar(wcsp->getVar(order[j]));
+                    }
+                    c->addVar(wcsp->getVar(order[j]));
+                }
+            }
+            if (rds.size() > 0) {
+                int last = rds.size() - 1;
+                while (last >= 0 && !connected[last])
+                    last--;
+                if (last >= 0) {
+                    c->addEdge(rds[last]);
+                    rds[last]->addEdge(c);
+                }
+            }
+        }
+        rds.push_back(c);
+    }
+
+    // fusion on included clusters
+    for (int i = 0; i < size; i++) {
+        if (i < size - 1 && included(rds[i]->getVars(), rds[i + 1]->getVars())) {
+            rds[i + 1]->removeEdge(rds[i]);
+            rds[i]->removeEdge(rds[i + 1]);
+            if (rds[i]->getEdges().size() > 0) {
+                assert(rds[i]->getEdges().size() == 1);
+                TClusters::iterator it = rds[i]->beginEdges();
+                rds[i + 1]->addEdge(*it);
+                (*it)->removeEdge(rds[i]);
+                (*it)->addEdge(rds[i + 1]);
+            }
+            delete rds[i];
+            rds[i] = NULL;
+        }
+    }
+    clusters.clear();
+    for (int i = 0; i < size; i++) {
+        Cluster* c = rds[i];
+        if (c) {
+            c->setId(clusters.size());
+            clusters.push_back(c);
+        }
+    }
+}
+
+// Minimize tree height when the separators are included
+bool TreeDecomposition::reduceHeight(Cluster* c, Cluster* cparent)
+{
+    assert(c != cparent);
+    TClusters::iterator itj;
+    itj = c->beginEdges();
+    while (itj != c->endEdges()) {
+        Cluster* cj = *itj;
+        ++itj;
+        if (cj != cparent) {
+            TVars cjsep;
+            intersection(c->getVars(), cj->getVars(), cjsep);
+            if (cparent && included(cjsep, cparent->getVars())) {
+                // replacing the cluster higher in the tree
+                //				cout << "move " << cj->getId() << " from " << c->getId() << " to " << cparent->getId() << endl;
+                c->removeEdge(cj);
+                cparent->addEdge(cj);
+                cj->removeEdge(c);
+                cj->addEdge(cparent);
+                return true;
+            } else if (!cparent && cjsep.size() == 0) {
+                c->removeEdge(cj);
+                cj->removeEdge(c);
+                return true;
+            }
+        }
+    }
+    itj = c->beginEdges();
+    while (itj != c->endEdges()) {
+        Cluster* cj = *itj;
+        ++itj;
+        if (cj != cparent) {
+            if (reduceHeight(cj, c))
+                return true;
+        }
+    }
+    return false;
+}
+
+int TreeDecomposition::getNextUnassignedVar(TVars* vars)
+{
+    return *(vars->begin());
+}
+
+int TreeDecomposition::getVarMinDomainDivMaxWeightedDegree(TVars* vars)
+{
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+
+    for (TVars::iterator iter = vars->begin(); iter != vars->end(); ++iter) {
+        Cost unarymediancost = MIN_COST;
+        int domsize = wcsp->getDomainSize(*iter);
+        if (ToulBar2::weightedTightness) {
+            ValueCost array[domsize];
+            wcsp->getEnumDomainAndCost(*iter, array);
+            unarymediancost = stochastic_selection<ValueCost>(array, 0, domsize - 1, domsize / 2).cost;
+        }
+        double heuristic = (double)domsize / (double)(wcsp->getWeightedDegree(*iter) + 1 + unarymediancost);
+        if (varIndex < 0 || heuristic < best - epsilon * best
+            || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+            best = heuristic;
+            varIndex = *iter;
+            worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+        }
+    }
+    return varIndex;
+}
+
+void TreeDecomposition::splitClusterRec(Cluster* c, Cluster* father, unsigned int maxsize)
+{
+    TVars cvars = c->getVars();
+    //  cout << c->getId() << " " << cvars.size() << endl;
+    TVars csep;
+    if (father) {
+        intersection(father->getVars(), c->getVars(), csep);
+    }
+    TVars cproper;
+    difference(cvars, csep, cproper);
+    if (cproper.size() > maxsize && (!father || c->getEdges().size() != 1)) {
+        Cluster* cprev = NULL;
+        TClusters cedges = c->getEdges();
+        if (father)
+            cedges.erase(father);
+        while (cproper.size() > 0) {
+            TVars cnewvars;
+            int varIndex = ((ToulBar2::Static_variable_ordering) ? getNextUnassignedVar(&cproper) : getVarMinDomainDivMaxWeightedDegree(&cproper));
+            for (unsigned int i = 0; i < maxsize && varIndex >= 0; i++) {
+                cnewvars.insert(varIndex);
+                cproper.erase(varIndex);
+                varIndex = ((ToulBar2::Static_variable_ordering) ? getNextUnassignedVar(&cproper) : getVarMinDomainDivMaxWeightedDegree(&cproper));
+            }
+            //	  TVars::iterator it = cproper.begin();
+            //	  for (unsigned int i = 0; i < maxsize && it != cproper.end(); i++) {
+            //		  cnewvars.insert(*it);
+            //		  ++it;
+            //	  }
+            //	  TVars cpropernew;
+            //	  difference(cproper, cnewvars, cpropernew);
+            //	  cproper = cpropernew;
+            if (!cprev) {
+                c->getVars().clear();
+                c->addVars(csep);
+                c->addVars(cnewvars);
+                c->getEdges().clear();
+                if (father)
+                    c->addEdge(father);
+                cprev = c;
+            } else {
+                Cluster* cnew = new Cluster(this);
+                cnew->setId(clusters.size());
+                clusters.push_back(cnew);
+                cnew->addVars(cprev->getVars());
+                cnew->addVars(cnewvars);
+                cnew->addEdge(cprev);
+                cprev->addEdge(cnew);
+                cprev = cnew;
+            }
+        }
+        assert(cprev->getEdges().size() == 1);
+        father = *(cprev->beginEdges());
+        cprev->addEdges(cedges);
+        TClusters::iterator itj = cprev->beginEdges();
+        while (itj != cprev->endEdges()) {
+            Cluster* cj = *itj;
+            if (cj != father) {
+                cj->removeEdge(c);
+                cj->addEdge(cprev);
+            }
+            ++itj;
+        }
+        c = cprev;
+    }
+    TClusters::iterator itj = c->beginEdges();
+    while (itj != c->endEdges()) {
+        Cluster* cj = *itj;
+        if (cj != father)
+            splitClusterRec(cj, c, maxsize);
+        ++itj;
+    }
+}
+
+TVars TreeDecomposition::boostingVarElimRec(Cluster* c, Cluster* father, Cluster* grandfather, unsigned int maxsize)
+{
+    TVars addedVarBySons;
+    TClusters::iterator itj = c->beginEdges();
+    while (itj != c->endEdges()) {
+        Cluster* cj = *itj;
+        ++itj; // warning! must be done before going inside boostingVarElimRec as it can delete current cluster/iterator by the following removeEdge(c) operation
+        if (cj != father) {
+            TVars cjaddedvars;
+            cjaddedvars = boostingVarElimRec(cj, c, father, maxsize);
+            sum(addedVarBySons, cjaddedvars);
+        }
+    }
+    if (father && c->getEdges().size() == 1) {
+        TVars fathersep;
+        if (grandfather) {
+            intersection(father->getVars(), grandfather->getVars(), fathersep);
+        }
+        TVars cvars;
+        sum(fathersep, addedVarBySons);
+        difference(c->getVars(), fathersep, cvars);
+        if (cvars.size() <= maxsize) {
+            //	  	  cout << c->getId() << " which has " << cvars.size() << " vars (except whose from " << ((grandfather)?grandfather->getId():-1) << ") is merged into " << father->getId() << endl;
+            TVars csep;
+            intersection(c->getVars(), father->getVars(), csep);
+            TVars cproper;
+            difference(c->getVars(), csep, cproper);
+            father->addVars(cproper);
+            father->removeEdge(c);
+            clusters.back()->setId(c->getId());
+            clusters[c->getId()] = clusters.back();
+            clusters.pop_back();
+            sum(addedVarBySons, cproper);
+            delete c;
+        }
+    }
+    return addedVarBySons;
+}
+
+void TreeDecomposition::mergeClusterRec(Cluster* c, Cluster* father, unsigned int maxsepsize, unsigned int minpropervar)
+{
+    TClusters::iterator itj = c->beginEdges();
+    while (itj != c->endEdges()) {
+        Cluster* cj = *itj;
+        ++itj; // warning! must be done before going inside boostingVarElimRec as it can delete current cluster/iterator by the following removeEdge(c) operation
+        if (cj != father) {
+            mergeClusterRec(cj, c, maxsepsize, minpropervar);
+        }
+    }
+    if (father) {
+        TVars csep;
+        intersection(c->getVars(), father->getVars(), csep);
+        assert(csep.size() > 0);
+        if ((csep.size() > maxsepsize) || (c->getVars().size() - csep.size() < minpropervar)) {
+            father->addVars(c->getVars());
+            father->addEdges(c->getEdges());
+            TClusters::iterator itk = c->beginEdges();
+            while (itk != c->endEdges()) {
+                Cluster* ck = *itk;
+                ++itk;
+                ck->removeEdge(c);
+                ck->addEdge(father);
+            }
+            father->removeEdge(father);
+            father->removeEdge(c);
+            clusters.back()->setId(c->getId());
+            clusters[c->getId()] = clusters.back();
+            clusters.pop_back();
+            delete c;
+        }
+    }
+}
+
+// Specific code for cluster fusion based on heuristic criteria
+void TreeDecomposition::heuristicFusionRec(Cluster* c, Cluster* noc)
+{
+    TClusters::iterator it = c->beginEdges();
+    while (it != c->endEdges()) {
+        Cluster* cj = *it;
+        ++it;
+        if (cj == c)
+            continue;
+        if (cj == noc)
+            continue;
+        heuristicFusionRec(cj, c);
+    }
+
+    it = c->beginEdges();
+    while (it != c->endEdges()) {
+        Cluster* cj = *it;
+        ++it;
+        if (cj == c)
+            continue;
+        if (cj == noc)
+            continue;
+        TVars varsum;
+        TVars varinter;
+        sum(c->getVars(), cj->getVars(), varsum);
+        intersection(c->getVars(), cj->getVars(), varinter);
+
+        int dif = 2;
+        bool bf1 = (varinter.size() > 2) && (varsum.size() <= (unsigned int)c->getNbVars() + dif);
+        bool bf2 = (varinter.size() > 2) && (varsum.size() <= (unsigned int)cj->getNbVars() + dif);
+        bool bf3 = (varinter.size() > 100);
+        if (bf1 || bf2 || bf3) {
+            fusion(c, cj);
+        }
+    }
+}
+
+Cluster* TreeDecomposition::getBiggerCluster(TClusters& visited)
+{
+    Cluster* cmax = NULL;
+    int maxsize = 0;
+    for (unsigned int i = 0; i < clusters.size(); i++) {
+        Cluster* c = clusters[i];
+        if (!c)
+            continue;
+        if (visited.find(c) == visited.end()) {
+            if (c->getNbVars() > maxsize) {
+                maxsize = c->getNbVars();
+                cmax = c;
+                if (ToulBar2::btdMode == 3)
+                    break;
+            }
+        }
+    }
+    return cmax;
+}
+
+int TreeDecomposition::height(Cluster* r, Cluster* father)
+{
+    int maxh = 0;
+    TClusters::iterator it = r->beginEdges();
+    while (it != r->endEdges()) {
+        Cluster* adjr = *it;
+        if (adjr != father) {
+            int h = height(adjr, r);
+            if (h > maxh)
+                maxh = h;
+        }
+        ++it;
+    }
+    TVars rsep;
+    intersection(r->getVars(), father->getVars(), rsep);
+    return maxh + r->getNbVars() - rsep.size();
+}
+
+int TreeDecomposition::height(Cluster* r)
+{
+    int maxh = 0;
+    TClusters::iterator it = r->beginEdges();
+    while (it != r->endEdges()) {
+        int h = height(*it, r);
+        if (h > maxh)
+            maxh = h;
+        ++it;
+    }
+    return maxh + r->getNbVars();
+}
+
+void TreeDecomposition::makeDescendants(Cluster* c)
+{
+    c->getDescendants().insert(c);
+    sum(c->getVarsTree(), c->getVars());
+    TClusters::iterator itj = c->beginEdges();
+    while (itj != c->endEdges()) {
+        Cluster* cj = *itj;
+        ++itj;
+        makeDescendants(cj);
+        clusterSum(c->getDescendants(), cj->getDescendants());
+        sum(c->getVarsTree(), cj->getVarsTree());
+    }
+}
+
+void TreeDecomposition::makeRootedRec(Cluster* c, TClusters& visited)
+{
+    TClusters::iterator itj = c->beginEdges();
+    while (itj != c->endEdges()) {
+        Cluster* cj = *itj;
+        cj->removeEdge(c);
+        cj->setParent(c);
+        visited.insert(cj);
+
+        if (ToulBar2::searchMethod == DFBB) {
+            TVars cjsep;
+            intersection(c->getVars(), cj->getVars(), cjsep);
+
+            //------- Add the constraint separator
+            int i = 0;
+            int arity = cjsep.size();
+            EnumeratedVariable** scopeVars = new EnumeratedVariable*[arity];
+            TVars::iterator it = cjsep.begin();
+            while (it != cjsep.end()) {
+                scopeVars[i] = (EnumeratedVariable*)wcsp->getVar(*it);
+                ++it;
+                i++;
+            }
+            cj->setSep(new Separator(wcsp, scopeVars, arity));
+            if (ToulBar2::approximateCountingBTD)
+                cj->addCtr(cj->getSep());
+            delete[] scopeVars;
+            //-------
+        }
+
+        makeRootedRec(cj, visited);
+        ++itj;
+    }
+}
+
+int TreeDecomposition::makeRooted()
+{
+    TClusters visited;
+    bool isalreadyrooted = (roots.size() > 0);
+    Cluster* root = NULL;
+    list<Cluster*> temproots;
+    if (isalreadyrooted) {
+        temproots = roots;
+    }
+
+    bool selected = false;
+    while (visited.size() < clusters.size()) {
+        if (isalreadyrooted) {
+            if (temproots.size() > 0) {
+                root = temproots.front();
+                temproots.pop_front();
+            } else {
+                //Error, some clusters are missing in the decomposition tree
+                cerr << "Input tree decomposition file is not valid! (may-be cycles within cluster parents)" << endl;
+                exit(EXIT_FAILURE);
+            }
+        } else {
+            if (!selected && ToulBar2::btdRootCluster >= 0 && ToulBar2::btdRootCluster < (int)clusters.size()) {
+                root = getCluster(ToulBar2::btdRootCluster);
+                selected = true;
+            } else
+                root = getBiggerCluster(visited);
+            roots.push_back(root);
+            while (reduceHeight(root, NULL))
+                ;
+            if (ToulBar2::splitClusterMaxSize >= 1)
+                splitClusterRec(root, NULL, ToulBar2::splitClusterMaxSize);
+            if (ToulBar2::maxSeparatorSize >= 0 || ToulBar2::minProperVarSize >= 2)
+                mergeClusterRec(root, NULL, ToulBar2::maxSeparatorSize, ToulBar2::minProperVarSize);
+            if (ToulBar2::boostingBTD > 0. && ToulBar2::elimDegree >= 1)
+                boostingVarElimRec(root, NULL, NULL, ToulBar2::elimDegree);
+            while (reduceHeight(root, NULL))
+                ;
+        }
+        visited.insert(root);
+        makeRootedRec(root, visited);
+        makeDescendants(root);
+    }
+    if (ToulBar2::searchMethod != DFBB)
+        return 0;
+
+    // if it is a forest then create a unique meta-root cluster with empty separators with its children
+    if (roots.size() > 1) {
+        root = new Cluster(this);
+        root->setId(clusters.size());
+        clusters.push_back(root);
+
+        for (list<Cluster*>::iterator iter = roots.begin(); iter != roots.end(); ++iter) {
+            Cluster* oneroot = *iter;
+
+            EnumeratedVariable** scopeVars = new EnumeratedVariable*[1];
+            oneroot->setSep(new Separator(wcsp, scopeVars, 0));
+            if (oneroot->getNbVars() <= 1 && oneroot->getDescendants().size() == 1) {
+                oneroot->getSep()->unqueueSep();
+            }
+            root->addEdge(oneroot);
+            oneroot->setParent(root);
+            root->getDescendants().insert(root);
+            clusterSum(root->getDescendants(), oneroot->getDescendants());
+        }
+        roots.clear();
+        roots.push_back(root);
+    }
+
+    for (unsigned int i = 0; i < clusters.size(); i++) {
+        Cluster* c = clusters[i];
+        c->accelerateDescendants();
+        if (c->getSep())
+            c->getSep()->setSep();
+        if (!ToulBar2::approximateCountingBTD) {
+            int posx = 0;
+            TVars::iterator itv = c->beginVars();
+            while (itv != c->endVars()) {
+                Variable* var = wcsp->getVar(*itv);
+                if (!c->isSepVar(var->wcspIndex))
+                    var->setCluster(c->getId());
+                else {
+                    var->setSep();
+                    var->addCluster(c->getId(), posx++); // we add the cluster and also the position of the variable for the delta structure
+                }
+                ++itv;
+            }
+        }
+        c->setup();
+    }
+    rootRDS = NULL;
+    root->sortEdgesRec();
+
+    int treewidth = 0;
+    for (unsigned int i = 0; i < clusters.size(); i++) {
+        Cluster* c = clusters[i];
+        if (c->getNbVars() > treewidth)
+            treewidth = c->getNbVars();
+    }
+    if (ToulBar2::verbose >= 0)
+        cout << "Tree decomposition width  : " << treewidth - 1 << endl;
+
+    return height(root);
+}
+
+void TreeDecomposition::buildFromCovering(string filename)
+{
+    if (clusters.size() > 0) {
+        for (unsigned int i = 0; i < clusters.size(); i++) {
+            Cluster* c = clusters[i];
+            if (c)
+                delete c;
+        }
+    }
+    clusters.clear();
+    roots.clear();
+
+    map<int, int> clusterIds;
+    int nbclusters = 0;
+
+    ConstraintSet usedctrs;
+    //    vector<int> order;
+
+    ifstream file(filename.c_str(), ios::in);
+    string fstr;
+    while (getline(file, fstr)) {
+        istringstream file(fstr);
+        int num;
+        file >> num;
+        if (!file)
+            break;
+
+        Cluster* C = new Cluster(this);
+        clusterIds[num] = nbclusters;
+        C->setId(nbclusters);
+        clusters.push_back(C);
+        nbclusters++;
+
+        int num_parent;
+        file >> num_parent;
+        assert((num_parent == -1) || (clusterIds.find(num_parent) != clusterIds.end()));
+
+        int v = -1;
+        while (file >> v) {
+            if (!C->isVar(v)) {
+                C->addVar(wcsp->getVar(v));
+                //                if ((num_parent == -1) || (!clusters[clusterIds[num_parent]]->isVar(v))) {
+                //                  order.push_back(v);
+                //                }
+            }
+        }
+
+        if (num_parent >= 0) {
+            C->addEdge(clusters[clusterIds[num_parent]]);
+            clusters[clusterIds[num_parent]]->addEdge(C);
+        } else {
+            roots.push_back(C);
+        }
+
+        for (TVars::iterator iter = C->getVars().begin(); iter != C->getVars().end(); iter++) {
+            ConstraintList* xctrs = wcsp->getVar(*iter)->getConstrs();
+            for (ConstraintList::iterator it = xctrs->begin(); it != xctrs->end(); ++it) {
+                Constraint* ctr = (*it).constr;
+                bool used = usedctrs.find(ctr) != usedctrs.end();
+                if (!used) {
+                    int k = 0;
+                    while ((k < ctr->arity()) && (C->isVar(ctr->getVar(k)->wcspIndex)))
+                        k++;
+
+                    if (k == ctr->arity()) {
+                        usedctrs.insert(ctr);
+                        C->addCtr(ctr);
+                    }
+                }
+            }
+        }
+    }
+    file.close();
+    //    reverse(order.begin(), order.end()); // must return an elimination order, the reverse of a topological order
+
+    // buildFromOrderNext(order);
+    // if (ToulBar2::btdMode == 3) pathFusions(order); // bug: it assumes cluster.size() == order.size()
+    // else treeFusions(); // we assume there is no cluster separator included into another cluster separator in the input tree decomposition
+
+    for (unsigned int i = 0; i < clusters.size(); i++) {
+        Cluster* c = clusters[i];
+        if (c)
+            c->getDescendants().clear();
+    }
+
+    int h = makeRooted();
+
+    if (ToulBar2::verbose >= 0)
+        cout << "Tree decomposition height : " << h << endl;
+    if (!ToulBar2::approximateCountingBTD) {
+        // assign constraints to clusters and check for duplicate ternary constraints
+        for (unsigned int i = 0; i < wcsp->numberOfConstraints(); i++) {
+            Constraint* ctr = wcsp->getCtr(i);
+            ctr->assignCluster();
+            if (ctr->connected() && !ctr->isSep()) {
+                if (ctr->isTernary()) {
+                    TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                    tctr->xy->setCluster(tctr->getCluster());
+                    tctr->xz->setCluster(tctr->getCluster());
+                    tctr->yz->setCluster(tctr->getCluster());
+                }
+            }
+        }
+        for (int i = 0; i < wcsp->elimBinOrder; i++)
+            if (wcsp->elimBinConstrs[i]->connected()) {
+                Constraint* ctr = wcsp->elimBinConstrs[i];
+                ctr->assignCluster();
+                if (ctr->connected() && !ctr->isSep()) {
+                    if (ctr->isTernary()) {
+                        TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                        tctr->xy->setCluster(tctr->getCluster());
+                        tctr->xz->setCluster(tctr->getCluster());
+                        tctr->yz->setCluster(tctr->getCluster());
+                    }
+                }
+            }
+        for (int i = 0; i < wcsp->elimTernOrder; i++)
+            if (wcsp->elimTernConstrs[i]->connected()) {
+                Constraint* ctr = wcsp->elimTernConstrs[i];
+                ctr->assignCluster();
+                if (ctr->connected() && !ctr->isSep()) {
+                    if (ctr->isTernary()) {
+                        TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                        tctr->xy->setCluster(tctr->getCluster());
+                        tctr->xz->setCluster(tctr->getCluster());
+                        tctr->yz->setCluster(tctr->getCluster());
+                    }
+                }
+            }
+
+        for (unsigned int i = 0; i < wcsp->numberOfConstraints(); i++) {
+            Constraint* ctr = wcsp->getCtr(i);
+            if (ctr->connected() && !ctr->isSep()) {
+                if (ctr->isTernary()) {
+                    TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                    tctr->setDuplicates();
+                    assert(tctr->xy->getCluster() == tctr->getCluster() && tctr->xz->getCluster() == tctr->getCluster() && tctr->yz->getCluster() == tctr->getCluster());
+                }
+            }
+        }
+        for (int i = 0; i < wcsp->elimTernOrder; i++)
+            if (wcsp->elimTernConstrs[i]->connected()) {
+                Constraint* ctr = wcsp->elimTernConstrs[i];
+                if (ctr->connected() && !ctr->isSep()) {
+                    if (ctr->isTernary()) {
+                        TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                        tctr->setDuplicates();
+                        assert(tctr->xy->getCluster() == tctr->getCluster() && tctr->xz->getCluster() == tctr->getCluster() && tctr->yz->getCluster() == tctr->getCluster());
+                    }
+                }
+            }
+    }
+    if (ToulBar2::verbose >= 0)
+        cout << "Number of clusters         : " << clusters.size() << endl;
+    if (ToulBar2::debug >= 1 || ToulBar2::verbose >= 1)
+        print();
+    if (ToulBar2::dumpWCSP)
+        dump();
+    assert(verify());
+}
+
+void TreeDecomposition::buildFromOrder()
+{
+    vector<int> order;
+    assert(!((WCSP*)wcsp)->isAlreadyTreeDec(ToulBar2::varOrder));
+    ((WCSP*)wcsp)->elimOrderFile2Vector(ToulBar2::varOrder, order);
+    if (!ToulBar2::varOrder)
+        reverse(order.begin(), order.end());
+
+    if (clusters.size() > 0) {
+        for (unsigned int i = 0; i < clusters.size(); i++) {
+            Cluster* c = clusters[i];
+            if (c)
+                delete c;
+        }
+    }
+    clusters.clear();
+
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        Cluster* c = new Cluster(this);
+        c->setId(i);
+        c->addVar(wcsp->getVar(order[i]));
+        clusters.push_back(c);
+    }
+    ConstraintSet usedctrs;
+
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        Variable* x = wcsp->getVar(order[i]);
+        Cluster* c = clusters[i];
+
+        ConstraintList* xctrs = x->getConstrs();
+        for (ConstraintList::iterator it = xctrs->begin(); it != xctrs->end(); ++it) {
+            Constraint* ctr = (*it).constr;
+            bool used = usedctrs.find(ctr) != usedctrs.end();
+            if (!used) {
+                usedctrs.insert(ctr);
+                c->addCtr(ctr);
+                for (int k = 0; k < ctr->arity(); k++)
+                    if (ctr->getVar(k)->unassigned())
+                        c->addVar(ctr->getVar(k));
+            }
+        }
+
+        for (unsigned int j = i + 1; j < wcsp->numberOfVariables(); j++) {
+            if (c->isVar(order[j])) {
+                Cluster* cj = clusters[j];
+                TVars::iterator it = c->beginVars();
+                while (it != c->endVars()) {
+                    cj->addVar(wcsp->getVar(*it));
+                    ++it;
+                }
+                cj->removeVar(x);
+                c->addEdge(cj);
+                cj->addEdge(c);
+                break;
+            }
+        }
+    }
+    buildFromOrderNext(order);
+}
+
+void TreeDecomposition::buildFromOrderForApprox()
+{
+
+    vector<int> order;
+    bool firstComponent = true;
+    int sizepart = 0; //number of parts in the built partition
+    ConstraintSet totalusedctrs; // constraints already in a part
+    vector<int> degreeinusedctr; // number of constraints not adding for each variable
+    //	int nbcstr = 0;					//
+    double time;
+
+    assert(!((WCSP*)wcsp)->isAlreadyTreeDec(ToulBar2::varOrder));
+    ((WCSP*)wcsp)->elimOrderFile2Vector(ToulBar2::varOrder, order);
+    if (!ToulBar2::varOrder)
+        reverse(order.begin(), order.end());
+
+    if (clusters.size() > 0) {
+        for (unsigned int i = 0; i < clusters.size(); i++) {
+            Cluster* c = clusters[i];
+            if (c)
+                delete c;
+        }
+    }
+    clusters.clear();
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        Variable* x = wcsp->getVar(i);
+        //		degree.push_back(x->getTrueDegree());
+        degreeinusedctr.push_back(x->getDegree());
+    }
+    time = cpuTime();
+    while (totalusedctrs.size() < wcsp->numberOfConnectedConstraints()) //&& nbparties<4)
+    {
+        ConstraintSet currentusedctrs; // liste des contraintes contenues dans la partie courante
+        TVars currentusedvars; // liste des variables contenues dans la partie courante
+        TVars inusedvars; // liste des variables qui n'ont pas encore ete etudiee dans la partie courante
+        vector<Variable*> currentRevElimOrder; // liste des variables dans l'ordre inverse construit
+        sizepart++;
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+            if (wcsp->unassigned(i)) {
+                if (wcsp->getDegree(i) == 0) {
+                    if (firstComponent) {
+                        currentRevElimOrder.push_back(wcsp->getVar(i));
+                        currentusedvars.insert(i);
+                    }
+                } else {
+                    if (degreeinusedctr[i] > 0)
+                        inusedvars.insert(i);
+                }
+            }
+        }
+
+        maxchord(sizepart, order, totalusedctrs, inusedvars, currentusedvars, currentRevElimOrder, currentusedctrs);
+
+        // insert into tree decomposition
+
+        // supprime les variables qui n'ont aucune contraintes dans la partition
+        for (vector<Variable*>::iterator it = currentRevElimOrder.begin(); it != currentRevElimOrder.end();) {
+            if (currentusedvars.find((*it)->wcspIndex) == currentusedvars.end()) {
+                it = currentRevElimOrder.erase(it);
+            } else
+                ++it;
+        }
+
+        if (sizepart == 1)
+            cout << endl;
+        cout << "part " << sizepart << " : " << currentRevElimOrder.size() << " variables and " << currentusedctrs.size() << " constraints (really added)\n";
+        if (ToulBar2::debug >= 1 || ToulBar2::verbose >= 3) //affichage
+        {
+            cout << "\tVariables : ";
+            for (vector<Variable*>::iterator it = currentRevElimOrder.begin(); it != currentRevElimOrder.end(); it++) {
+                cout << (*it)->wcspIndex << " ";
+            }
+            cout << endl;
+            cout << "\tContraintes : ";
+            for (ConstraintSet::iterator it = currentusedctrs.begin(); it != currentusedctrs.end(); it++) {
+                cout << "[";
+                for (int k = 0; k < (*it)->arity(); k++) {
+                    cout << (*it)->getVar(k)->wcspIndex;
+                    if (k != (*it)->arity() - 1)
+                        cout << " ";
+                }
+                cout << "] ";
+            }
+            cout << endl;
+        }
+
+        insert(sizepart, currentRevElimOrder, currentusedctrs);
+        firstComponent = false;
+    }
+    time = cpuTime() - time;
+    cout << "--> number of parts : " << sizepart << endl;
+    cout << "--> time : " << time << " seconds. " << endl
+         << endl;
+    buildFromOrderNext(order);
+}
+
+void TreeDecomposition::buildFromOrderNext(vector<int>& order)
+{
+
+    if (ToulBar2::verbose >= 2) {
+        cout << "----- Before fusions process: " << endl;
+        for (unsigned int i = 0; i < clusters.size(); i++) {
+            if (!clusters[i])
+                continue;
+            Cluster* c = clusters[i];
+            c->print();
+        }
+        cout << "----- fusions process starting... " << endl;
+    }
+
+    if (ToulBar2::btdMode == 3)
+        pathFusions(order);
+    else
+        treeFusions();
+
+    if (ToulBar2::verbose >= 2) {
+        cout << "----- After fusions process: " << endl;
+        for (unsigned int i = 0; i < clusters.size(); i++) {
+            if (!clusters[i])
+                continue;
+            Cluster* c = clusters[i];
+            c->print();
+        }
+        cout << "----- fusions process ended... " << endl;
+    }
+
+    for (unsigned int i = 0; i < clusters.size(); i++) {
+        Cluster* c = clusters[i];
+        c->getDescendants().clear();
+    }
+
+    roots.clear();
+    int h = makeRooted();
+    if (ToulBar2::searchMethod != DFBB)
+        return;
+    if (ToulBar2::verbose >= 0)
+        cout << "Tree decomposition height : " << h << endl;
+    if (!ToulBar2::approximateCountingBTD) {
+        // assign constraints to clusters and check for duplicate ternary constraints
+        for (unsigned int i = 0; i < wcsp->numberOfConstraints(); i++) {
+            Constraint* ctr = wcsp->getCtr(i);
+            ctr->assignCluster();
+            if (ctr->connected() && !ctr->isSep()) {
+                if (ctr->isTernary()) {
+                    TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                    tctr->xy->setCluster(tctr->getCluster());
+                    tctr->xz->setCluster(tctr->getCluster());
+                    tctr->yz->setCluster(tctr->getCluster());
+                }
+            }
+        }
+        for (int i = 0; i < wcsp->elimBinOrder; i++)
+            if (wcsp->elimBinConstrs[i]->connected()) {
+                Constraint* ctr = wcsp->elimBinConstrs[i];
+                ctr->assignCluster();
+                if (ctr->connected() && !ctr->isSep()) {
+                    if (ctr->isTernary()) {
+                        TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                        tctr->xy->setCluster(tctr->getCluster());
+                        tctr->xz->setCluster(tctr->getCluster());
+                        tctr->yz->setCluster(tctr->getCluster());
+                    }
+                }
+            }
+        for (int i = 0; i < wcsp->elimTernOrder; i++)
+            if (wcsp->elimTernConstrs[i]->connected()) {
+                Constraint* ctr = wcsp->elimTernConstrs[i];
+                ctr->assignCluster();
+                if (ctr->connected() && !ctr->isSep()) {
+                    if (ctr->isTernary()) {
+                        TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                        tctr->xy->setCluster(tctr->getCluster());
+                        tctr->xz->setCluster(tctr->getCluster());
+                        tctr->yz->setCluster(tctr->getCluster());
+                    }
+                }
+            }
+
+        for (unsigned int i = 0; i < wcsp->numberOfConstraints(); i++) {
+            Constraint* ctr = wcsp->getCtr(i);
+            if (ctr->connected() && !ctr->isSep()) {
+                if (ctr->isTernary()) {
+                    TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                    tctr->setDuplicates();
+                    assert(tctr->xy->getCluster() == tctr->getCluster() && tctr->xz->getCluster() == tctr->getCluster() && tctr->yz->getCluster() == tctr->getCluster());
+                }
+            }
+        }
+        for (int i = 0; i < wcsp->elimTernOrder; i++)
+            if (wcsp->elimTernConstrs[i]->connected()) {
+                Constraint* ctr = wcsp->elimTernConstrs[i];
+                if (ctr->connected() && !ctr->isSep()) {
+                    if (ctr->isTernary()) {
+                        TernaryConstraint* tctr = (TernaryConstraint*)ctr;
+                        tctr->setDuplicates();
+                        assert(tctr->xy->getCluster() == tctr->getCluster() && tctr->xz->getCluster() == tctr->getCluster() && tctr->yz->getCluster() == tctr->getCluster());
+                    }
+                }
+            }
+    }
+    if (ToulBar2::verbose >= 0)
+        cout << "Number of clusters        : " << clusters.size() << endl;
+    if (ToulBar2::debug >= 1 || ToulBar2::verbose >= 1)
+        print();
+    if (ToulBar2::dumpWCSP)
+        dump();
+    assert(verify());
+}
+
+void TreeDecomposition::maxchord(int sizepart, vector<int>& order, ConstraintSet& totalusedctrs, TVars& inusedvars, TVars& currentusedvars, vector<Variable*>& currentRevElimOrder, ConstraintSet& currentusedctrs)
+{
+    vector<TVars> listeVars(wcsp->numberOfVariables()); // liste des voisins d'ordre superieur de chaque variable
+    int nbcstr = 0;
+    double time, timetot = 0;
+    while (inusedvars.size() > 0) {
+        int maxsize = -1;
+        Variable* maxvar = NULL; /* next variable */
+
+        //Choose the nex variable
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+            Variable* x = wcsp->getVar(order[i]);
+            if (inusedvars.find(x->wcspIndex) != inusedvars.end()) {
+                int size = listeVars[x->wcspIndex].size();
+                if (size > maxsize) {
+                    maxsize = size;
+                    maxvar = x;
+                }
+            }
+        }
+
+        if (maxvar) {
+            //				cout << "Variable choisie: " << maxvar->wcspIndex << " ";
+            ConstraintList* xctrs = maxvar->getConstrs();
+            for (ConstraintList::iterator it = xctrs->begin(); it != xctrs->end(); ++it) {
+                Constraint* ctr = (*it).constr;
+                bool used = totalusedctrs.find(ctr) != totalusedctrs.end();
+                if (!used) {
+                    TVars scopectr;
+                    TVars sc;
+                    for (int k = 0; k < ctr->arity(); k++) {
+                        Variable* x = ctr->getVar(k);
+                        if (x->wcspIndex != maxvar->wcspIndex && wcsp->unassigned(x->wcspIndex)) {
+                            sc.insert(x->wcspIndex);
+                            if (inusedvars.find(x->wcspIndex) != inusedvars.end())
+                                scopectr.insert(x->wcspIndex);
+                        }
+                    }
+                    if (scopectr.size() == 0) { //all edges of the ctr are in the sub graph => the cstr is added in this current part
+                        if (included(sc, listeVars[maxvar->wcspIndex])) {
+                            ConstraintSet subctr;
+                            nbcstr++;
+                            currentusedctrs.insert(ctr);
+                            totalusedctrs.insert(ctr);
+                            time = cpuTime();
+                            subctr = ctr->subConstraint();
+                            ctrSum(totalusedctrs, subctr);
+                            ctrSum(currentusedctrs, subctr);
+                            time = time - cpuTime();
+                            timetot += time;
+                            sum(currentusedvars, sc);
+                            currentusedvars.insert(maxvar->wcspIndex);
+                        }
+                    }
+
+                    for (TVars::iterator i = scopectr.begin(); i != scopectr.end(); ++i) {
+                        int vari = wcsp->getVar(*i)->wcspIndex;
+                        int varj = maxvar->wcspIndex;
+                        if (included(listeVars[vari], listeVars[varj])) {
+                            listeVars[(*i)].insert(varj);
+                            //--degree[(*i)];
+                        }
+                    }
+                }
+            }
+            currentRevElimOrder.push_back(maxvar);
+            inusedvars.erase(maxvar->wcspIndex);
+        }
+    }
+}
+
+void TreeDecomposition::insert(int sizepart, vector<Variable*> currentRevElimOrder, ConstraintSet currentusedctrs)
+{
+    int firstCluster = clusters.size();
+    for (unsigned int i = 0; i < currentRevElimOrder.size(); i++) {
+        Cluster* c = new Cluster(this);
+        c->setId(clusters.size());
+        c->addVar(currentRevElimOrder[currentRevElimOrder.size() - i - 1]);
+        clusters.push_back(c);
+    }
+    ConstraintSet usedctrs;
+
+    for (unsigned int i = 0; i < currentRevElimOrder.size(); i++) {
+        Cluster* c = clusters[firstCluster + i];
+        c->setPart(sizepart);
+        Variable* x = currentRevElimOrder[currentRevElimOrder.size() - i - 1];
+
+        ConstraintList* xctrs = x->getConstrs();
+        for (ConstraintList::iterator it = xctrs->begin(); it != xctrs->end(); ++it) {
+            Constraint* ctr = (*it).constr;
+            bool used = usedctrs.find(ctr) != usedctrs.end();
+            if (!used) {
+                if (currentusedctrs.find(ctr) != currentusedctrs.end()) {
+                    usedctrs.insert(ctr);
+                    c->addCtr(ctr);
+                    for (int k = 0; k < ctr->arity(); k++) {
+                        if (ctr->getVar(k)->unassigned()) {
+                            //assert(currentusedvars.find(ctr->getVar(k)->wcspIndex) != currentusedvars.end());
+                            c->addVar(ctr->getVar(k));
+                        }
+                    }
+                }
+            }
+        }
+
+        for (unsigned int j = i + 1; j < currentRevElimOrder.size(); j++) {
+            if (c->isVar(currentRevElimOrder[currentRevElimOrder.size() - j - 1]->wcspIndex)) {
+                Cluster* cj = clusters[firstCluster + j];
+                TVars::iterator it = c->beginVars();
+                while (it != c->endVars()) {
+                    cj->addVar(wcsp->getVar(*it));
+                    ++it;
+                }
+                cj->removeVar(x);
+                c->addEdge(cj);
+                cj->addEdge(c);
+                break;
+            }
+        }
+    }
+}
+
+void TreeDecomposition::getElimVarOrder(vector<int>& elimVarOrder)
+{
+    getRoot()->getElimVarOrder(elimVarOrder);
+}
+
+void TreeDecomposition::addDelta(int cyid, EnumeratedVariable* x, Value value, Cost cost)
+{
+    Cluster* cy = getCluster(cyid);
+    Cluster* cx = getCluster(x->getCluster());
+    if (!cy->isDescendant(cx)) {
+        int ckid, posx;
+        assert(x->clusters.size() > 0);
+        if (cost != MIN_COST && !deltaModified[x->wcspIndex])
+            deltaModified[x->wcspIndex] = true;
+        x->beginCluster();
+        while (x->nextCluster(ckid, posx)) {
+            Cluster* ck = getCluster(ckid);
+            if (ck->isDescendant(cy)) {
+                if (ToulBar2::verbose >= 2)
+                    cout << "add delta " << cost << " to var " << x->wcspIndex << " (cluster " << cx->getId() << ") value " << value << " from subtree " << ck->getId() << " (cluster " << cyid << ")" << endl;
+                ck->addDelta(posx, value, cost);
+            }
+        }
+    }
+}
+
+// warning! variables are not assigned to the current new solution
+// use assignment "a" instead
+void TreeDecomposition::newSolution(Cost lb)
+{
+    ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)lb));
+    wcsp->setUb(lb);
+
+    TAssign a;
+
+    Cluster* root = getRoot();
+    wcsp->restoreSolution(root);
+    root->getSolution(a);
+
+    if ((ToulBar2::elimDegree > 0 || ToulBar2::elimDegree_preprocessing > 0 || ToulBar2::preprocessFunctional > 0) && root->getNbVars() == 0) {
+        // recorded solutions in clusters containing a single variable eliminated in preprocessing may be wrong due to variable elimination in preprocessing; must be recovered after complete assignment and restoreSolution
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+            if (wcsp->enumerated(i)) {
+                EnumeratedVariable* x = (EnumeratedVariable*)wcsp->getVar(i);
+                x->assignWhenEliminated(a[i]);
+            }
+        }
+        wcsp->restoreSolution();
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+            if (wcsp->enumerated(i)) {
+                a[i] = wcsp->getValue(i);
+            }
+        }
+    }
+    if (!ToulBar2::isZ)
+        wcsp->setSolution(lb, &a);
+
+    if (ToulBar2::showSolutions) {
+        wcsp->printSolution();
+        cout << endl;
+    }
+
+    if (ToulBar2::writeSolution && ToulBar2::solutionFile != NULL) {
+        if (!ToulBar2::allSolutions)
+            fseek(ToulBar2::solutionFile, ToulBar2::solutionFileRewindPos, SEEK_SET);
+        wcsp->printSolution(ToulBar2::solutionFile);
+        fprintf(ToulBar2::solutionFile, "\n");
+    }
+
+    if (ToulBar2::xmlflag) {
+        cout << "o " << lb << endl;
+    }
+    if (ToulBar2::maxsateval) {
+        cout << "o " << lb << endl;
+    }
+    if (ToulBar2::uaieval && !ToulBar2::isZ) {
+        wcsp->solution_UAI(lb);
+    }
+    // warning: cannot read solution from variable assignments
+    // else if(ToulBar2::pedigree){
+    // 	ToulBar2::pedigree->printSol(wcsp);
+    // }
+    // else if(ToulBar2::haplotype){
+    //   ToulBar2::haplotype->printSol(wcsp);
+    // }
+
+    if (ToulBar2::newsolution)
+        (*ToulBar2::newsolution)(wcsp->getIndex(), wcsp->getSolver());
+}
+
+void TreeDecomposition::intersection(TVars& v1, TVars& v2, TVars& vout)
+{
+    assert(&vout != &v1);
+    assert(&vout != &v2);
+    set_intersection(v1.begin(), v1.end(),
+        v2.begin(), v2.end(),
+        inserter(vout, vout.begin()));
+}
+
+void TreeDecomposition::difference(TVars& v1, TVars& v2, TVars& vout)
+{
+    assert(&vout != &v1);
+    assert(&vout != &v2);
+    set_difference(v1.begin(), v1.end(),
+        v2.begin(), v2.end(),
+        inserter(vout, vout.begin()));
+}
+
+void TreeDecomposition::sum(TVars v1, TVars v2, TVars& vout)
+{
+    set_union(v1.begin(), v1.end(),
+        v2.begin(), v2.end(),
+        inserter(vout, vout.begin()));
+}
+
+void TreeDecomposition::sum(TVars& v1, TVars& v2)
+{
+    v1.insert(v2.begin(), v2.end());
+}
+
+bool TreeDecomposition::included(TVars& v1, TVars& v2)
+{
+    TVars vout;
+    set_union(v1.begin(), v1.end(),
+        v2.begin(), v2.end(),
+        inserter(vout, vout.begin()));
+    return vout.size() == v2.size();
+}
+
+void TreeDecomposition::clusterSum(TClusters v1, TClusters v2, TClusters& vout)
+{
+    set_union(v1.begin(), v1.end(),
+        v2.begin(), v2.end(),
+        inserter(vout, vout.begin()));
+}
+
+void TreeDecomposition::clusterSum(TClusters& v1, TClusters& v2)
+{
+    v1.insert(v2.begin(), v2.end());
+}
+
+void TreeDecomposition::ctrSum(TCtrs v1, TCtrs v2, TCtrs& vout)
+{
+    set_union(v1.begin(), v1.end(),
+        v2.begin(), v2.end(),
+        inserter(vout, vout.begin()));
+}
+
+void TreeDecomposition::ctrSum(TCtrs& v1, TCtrs& v2)
+{
+    v1.insert(v2.begin(), v2.end());
+}
+
+bool TreeDecomposition::verify()
+{
+    if (!ToulBar2::approximateCountingBTD) {
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+            Variable* x = wcsp->getVar(i);
+            if (x->assigned())
+                continue;
+
+            Cluster* ci = clusters[x->getCluster()];
+            if (!ci->isVar(x->wcspIndex) || ci->isSepVar(x->wcspIndex)) {
+                cout << "cluster: " << ci->getId() << " , var " << x->wcspIndex << endl;
+                return false;
+            }
+            //  	    ConstraintList* xctrs = x->getConstrs();
+            //  	    for (ConstraintList::iterator it=xctrs->begin(); it != xctrs->end(); ++it) {
+            //              Constraint* ctr = (*it).constr;
+            //  			Cluster* cj  = clusters[ctr->getCluster()];
+            //              int arity = ctr->arity();
+            //              for(i=0;i<arity;i++) {
+            //          		Variable* x = ctr->getVar(i);
+
+            //              }
+            //  	    }
+        }
+    }
+    return true;
+}
+
+void TreeDecomposition::printStats(Cluster* c)
+{
+    if (!c)
+        return;
+    c->printStats();
+    TClusters::iterator itj = c->beginEdges();
+    while (itj != c->endEdges()) {
+        Cluster* cj = *itj;
+        ++itj;
+        printStats(cj);
+    }
+}
+
+void TreeDecomposition::print(Cluster* c, int recnum)
+{
+    if (!c) {
+        //  		for(unsigned int i=0;i<wcsp->numberOfVariables();i++) {
+        //  			Variable* x = wcsp->getVar(i);
+        //  			x->beginCluster();
+        //  			int c,posx;
+        //  			cout << x->wcspIndex << " appears in sep {";
+        //  			while(x->nextCluster(c,posx)) {
+        //  				cout << c << " ";
+        //  			}
+        //  			cout << "}" << endl;
+        //  		}
+        if (roots.empty())
+            return;
+        c = *roots.begin();
+    }
+
+    for (int i = 0; i < recnum; i++)
+        cout << "  ";
+    c->print();
+
+    TClusters::iterator ita = c->beginSortedEdges();
+    while (ita != c->endSortedEdges()) {
+        print(*ita, recnum + 1);
+        ++ita;
+    }
+}
+
+void TreeDecomposition::dump(Cluster* c)
+{
+    if (!c) {
+        char tmpName[256];
+        sprintf(tmpName, "%s.info", getWCSP()->getName().c_str());
+#ifdef __WIN32__
+        mkdir(tmpName);
+#else
+        mkdir(tmpName, 0777);
+#endif
+
+        sprintf(tmpName, "%s.info/root", getWCSP()->getName().c_str());
+
+        ofstream rootFile(tmpName);
+        if (roots.empty()) {
+            rootFile.close();
+            return;
+        }
+        c = *roots.begin();
+        rootFile << c->getId();
+        rootFile.close();
+    }
+
+    c->dump();
+
+    TClusters::iterator ita = c->beginEdges();
+    while (ita != c->endEdges()) {
+        dump(*ita);
+        ++ita;
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/search/tb2clusters.hpp b/code/include/tb2/search/tb2clusters.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..8e9bef3757cd1854ef46e316194c0f72ff889893
--- /dev/null
+++ b/code/include/tb2/search/tb2clusters.hpp
@@ -0,0 +1,427 @@
+/** \file tb2clusters.hpp
+ *  \brief Cluster Tree Decomposition data-structures.
+ *
+ */
+
+#ifndef TB2CLUSTERS_HPP_
+#define TB2CLUSTERS_HPP_
+
+#include "core/tb2wcsp.hpp"
+#include "tb2solver.hpp"
+#include "core/tb2enumvar.hpp"
+#include "core/tb2naryconstr.hpp"
+
+class Cluster;
+
+typedef set<int> TVars;
+typedef ConstraintSet TCtrs;
+//typedef map<int,Value>     TAssign;
+
+// sort clusters by their id if non-negative else by pointer addresses (warning! stochastic behavior!!)
+struct CmpClusterStructBasic {
+    bool operator()(const Cluster* lhs, const Cluster* rhs) const;
+};
+typedef set<Cluster*, CmpClusterStructBasic> TClusters;
+// sort cluster sons by mean separator size first and by number of variables in their subtree next
+struct CmpClusterStruct {
+    bool operator()(const Cluster* lhs, const Cluster* rhs) const;
+};
+typedef set<Cluster*, CmpClusterStruct> TClustersSorted;
+
+typedef triplet<Cost, Cost, Solver::OpenList> TPairNG;
+typedef pair<Cost, Tuple> TPairSol;
+
+typedef map<Tuple, TPairNG> TNoGoods;
+typedef map<Tuple, TPairSol> TSols;
+
+// for solution counting :
+typedef pair<Cost, BigInteger> TPairSG;
+typedef map<Tuple, TPairSG> TSGoods;
+
+class Separator : public AbstractNaryConstraint {
+private:
+    Cluster* cluster;
+    TVars vars;
+    vector<vector<StoreCost>> delta; // structure to record the costs that leave the cluster
+    StoreInt nonassigned; // number of non assigned variables during search
+    StoreInt isUsed;
+    StoreCost lbPrevious;
+    StoreInt optPrevious;
+
+    TNoGoods nogoods;
+    TSGoods sgoods; // for solution counting
+    TSols solutions;
+    DLink<Separator*> linkSep; // link to insert the separator in PendingSeparator list
+
+    Tuple t; // temporary buffer for a separator tuple
+    Tuple s; // temporary buffer for a solution tuple
+
+public:
+    Separator(WCSP* wcsp, EnumeratedVariable** scope_in, int arity_in);
+    Separator(WCSP* wcsp);
+
+    void setup(Cluster* cluster_in);
+
+    TVars& getVars() { return vars; }
+    int getNbVars() { return vars.size(); }
+    bool is(int i) { return vars.find(i) != vars.end(); }
+    TVars::iterator begin() { return vars.begin(); }
+    TVars::iterator end() { return vars.end(); }
+
+    void set(Cost clb, Cost cub, Solver::OpenList** open = NULL);
+    bool get(Cost& clb, Cost& cub, Solver::OpenList** open = NULL);
+
+    void setSg(Cost c, BigInteger nb);
+    BigInteger getSg(Cost& res, BigInteger& nb);
+
+    void solRec(Cost ub);
+    bool solGet(TAssign& a, Tuple& sol);
+
+    void resetLb();
+    void resetUb();
+
+    void queueSep() { wcsp->queueSeparator(&linkSep); }
+    void unqueueSep() { wcsp->unqueueSeparator(&linkSep); }
+
+    void addDelta(unsigned int posvar, Value value, Cost cost)
+    {
+        assert(posvar < vars.size());
+        delta[posvar][wcsp->toIndex(posvar, value)] += cost;
+    }
+    Cost getCurrentDelta(); // separator variables may be unassigned
+
+    bool used() { return isUsed; }
+
+    void assign(int varIndex);
+    void propagate();
+
+    // NaryConstraint methods not used by Separator class
+    double computeTightness() { return 0; }
+    bool verify() { return true; }
+    void increase(int index) {}
+    void decrease(int index) {}
+    void remove(int index) {}
+    //ConstraintSet subConstraint(){TCtrs s; return s;}
+    void print(ostream& os);
+};
+
+class Cluster {
+private:
+    static int clusterCounter; ///< count the number of instances of Cluster class
+    int instance; ///< instance number
+    TreeDecomposition* td;
+    WCSP* wcsp;
+    int id; // corresponding to the vector index of the cluster in the tree decomposition
+    TVars vars; // contains all variables inside a cluster including separator variables
+    TCtrs ctrs; // intermediate usage by bucket elimination (DO NOT USE)
+    TClusters edges; // adjacent clusters (includes parent cluster before makeRooted is done)
+    TClustersSorted sortedEdges; // cluster sons are sorted after makeRooted is done
+
+    Cluster* parent; // parent cluster
+    TClusters descendants; // set of cluster descendants (including itself)
+    TVars varsTree; // set of variables in cluster descendants (including itself)
+    vector<bool> quickdescendants;
+
+    Separator* sep; // associated separator with parent cluster
+    StoreCost lb; // current cluster lower bound deduced by propagation
+    Cost ub; // current cluster best known solution cost
+    Cost lbRDS; // global cluster lower bound found by RDS
+    StoreInt active; // unactive if a nogood including this cluster has been used by propagation
+
+    StoreBigInteger countElimVars;
+    int num_part; //for approximation: number of the corresponding partition
+
+public:
+    Cluster(TreeDecomposition* tdin);
+    ~Cluster();
+
+    void setup();
+
+    int getIndex() const { return instance; } ///< \brief instantiation occurrence number of current Cluster object
+    int getId() const { return id; } ///< \brief temporary/final index of the cluster in the current tree decomposition
+    void setId(int iid) { id = iid; }
+
+    WCSP* getWCSP() { return wcsp; }
+
+    Separator* getSep() { return sep; }
+    void setSep(Separator* sepin) { sep = sepin; }
+    int sepSize() const
+    {
+        if (sep)
+            return sep->arity();
+        else
+            return 0;
+    }
+    void deconnectSep(); // deconnect all the constraints on separator variables and assigns separator variables to their support value
+    void deconnectDiff(TCtrs& listCtrsTot, TCtrs& listCtrs);
+    bool isSepVar(int i)
+    {
+        if (!sep)
+            return false;
+        return sep->is(i);
+    }
+
+    Solver::CPStore* cp; // choice point cache for open nodes related to this cluster
+    Solver::OpenList* open; // list of open nodes related to this cluster
+    Long hbfsGlobalLimit; // global limit on number of backtracks for hybrid search on the subproblem rooted to this cluster
+    Long hbfsLimit; // local limit on number of backtracks for hybrid search on this cluster only
+    Long nbBacktracks; // current number of backtracks related to this cluster
+    Long getNbBacktracksClusterTree() const
+    {
+        Long res = nbBacktracks;
+        for (TClusters::const_iterator iter = beginEdges(); iter != endEdges(); ++iter)
+            res += (*iter)->getNbBacktracksClusterTree();
+        return res;
+    }
+    vector<Cluster*> sons; // copy of edges allowing sorting
+
+    bool isVar(int i)
+    {
+        TVars::iterator it = vars.find(i);
+        return it != vars.end();
+    }
+    int getNbVars() const { return vars.size(); }
+    TVars& getVars() { return vars; }
+    int getNbVarsTree() const { return varsTree.size(); }
+    TVars& getVarsTree() { return varsTree; }
+    TCtrs getCtrsTree();
+    void addVars(TVars& vars);
+    void addVar(Variable* x);
+    void removeVar(Variable* x);
+
+    void setParent(Cluster* p) { parent = p; }
+    Cluster* getParent() { return parent; }
+    TClusters& getEdges() { return edges; }
+    void addEdges(TClusters& cls);
+    void addEdge(Cluster* c);
+    void removeEdge(Cluster* c);
+    TClusters::iterator removeEdge(TClusters::iterator it);
+
+    TClusters& getDescendants() { return descendants; }
+    bool isEdge(Cluster* c);
+    void accelerateDescendants();
+    bool isDescendant(Cluster* c) { return quickdescendants[c->getId()]; }
+
+    TCtrs& getCtrs() { return ctrs; }
+    void addCtrs(TCtrs& ctrsin);
+    void addCtr(Constraint* c);
+    void sum(TCtrs& c1, TCtrs& c2, TCtrs& ctout);
+
+    bool isActive() const
+    {
+        int a = active;
+        return a == 1;
+    }
+    void deactivate();
+    void reactivate();
+
+    Cost getLb() { return lb; }
+    void setLb(Cost c) { lb = c; }
+    void increaseLb(Cost addToLb) { lb += addToLb; }
+    Cost getUb() const { return ub; }
+    void setUb(Cost c) { ub = c; }
+    Cost getLbRDS()
+    {
+        Cost delta = getCurrentDelta();
+        return MAX(lbRDS - delta, MIN_COST);
+    }
+    void setLbRDS(Cost c)
+    {
+        assert(!sep || sep->getCurrentDelta() == MIN_COST);
+        lbRDS = c;
+    }
+    Cost getLbRec() const;
+    Cost getLbRecRDS();
+
+    void addDelta(int posvar, Value value, Cost cost)
+    {
+        assert(sep);
+        sep->addDelta(posvar, value, cost);
+    }
+    Cost getCurrentDelta() { return (sep) ? sep->getCurrentDelta() : MIN_COST; }
+
+    void nogoodRec(Cost clb, Cost cub, Solver::OpenList** open = NULL)
+    {
+        if (sep)
+            sep->set(clb, cub, open);
+    }
+    bool nogoodGet(Cost& clb, Cost& cub, Solver::OpenList** open = NULL) { return sep->get(clb, cub, open); }
+
+    void resetLbRec();
+    void resetUbRec(Cluster* rootCluster);
+
+    void sgoodRec(Cost c, BigInteger nb)
+    {
+        if (sep)
+            sep->setSg(c, nb);
+    }
+    BigInteger sgoodGet()
+    {
+        Cost c = MIN_COST;
+        BigInteger nb;
+        sep->getSg(c, nb);
+        return nb;
+    }
+    BigInteger getCount() { return countElimVars; }
+    void multCount(unsigned int s) { countElimVars = countElimVars * s; }
+    void cartProduct(BigInteger& cartProd);
+    int getPart() { return num_part; }
+    void setPart(int num) { num_part = num; }
+
+    void solutionRec(Cost c)
+    {
+        setUb(c);
+        if (sep)
+            sep->solRec(c);
+    }
+    void getSolution(TAssign& sol); // updates sol by the recorded solution found for a separator assignment also given in sol
+
+    void setWCSP2Cluster(); // sets the WCSP to the cluster problem, deconnecting the rest
+    void getElimVarOrder(vector<int>& elimVarOrder);
+
+    TVars::iterator beginVars() { return vars.begin(); }
+    TVars::iterator endVars() { return vars.end(); }
+    TVars::iterator beginVarsTree() { return varsTree.begin(); }
+    TVars::iterator endVarsTree() { return varsTree.end(); }
+    TVars::iterator beginSep() { return sep->begin(); }
+    TVars::iterator endSep() { return sep->end(); }
+    TCtrs::iterator beginCtrs() { return ctrs.begin(); }
+    TCtrs::iterator endCtrs() { return ctrs.end(); }
+    TClusters::iterator beginEdges() const { return edges.begin(); }
+    TClusters::iterator endEdges() const { return edges.end(); }
+    TClusters::iterator beginDescendants() { return descendants.begin(); }
+    TClusters::iterator endDescendants() { return descendants.end(); }
+
+    void sortEdgesRec()
+    {
+        for (TClusters::iterator iter = beginEdges(); iter != endEdges(); ++iter)
+            (*iter)->sortEdgesRec();
+        TClustersSorted tmpset(edges.begin(), edges.end(), CmpClusterStruct());
+        sortedEdges = tmpset;
+    }
+    TClusters::iterator beginSortedEdges() const { return sortedEdges.begin(); }
+    TClusters::iterator endSortedEdges() const { return sortedEdges.end(); }
+
+    void print();
+    void dump();
+    void printStats()
+    {
+        if (!sep)
+            return;
+        sep->print(cout);
+    }
+
+    void printStatsRec()
+    {
+        TClusters::iterator it = beginSortedEdges();
+        while (it != endSortedEdges()) {
+            (*it)->sep->print(cout);
+            (*it)->printStatsRec();
+            ++it;
+        }
+    }
+};
+
+class TreeDecomposition {
+private:
+    WCSP* wcsp;
+    vector<Cluster*> clusters;
+    list<Cluster*> roots; // intermediate list used by makeRooted method, only one root at the end
+
+    Cluster* rootRDS; // root cluster of the current RDS iteration
+
+    StoreInt currentCluster; // used to restrict local propagation (NC) and boosting by variable elimination to the current cluster's subtree
+    vector<StoreInt> deltaModified; // accelerator avoiding unnecessary checks to delta structure if it is empty (Boolean value)
+
+public:
+    TreeDecomposition(WCSP* wcsp_in);
+
+    WCSP* getWCSP() { return wcsp; }
+
+    int getNbOfClusters() { return clusters.size(); }
+    Cluster* getCluster(int i)
+    {
+        assert(0 <= i && i < (int)clusters.size());
+        return clusters[i];
+    }
+    Cluster* var2Cluster(int v);
+
+    void setCurrentCluster(Cluster* c) { currentCluster = c->getId(); }
+    Cluster* getCurrentCluster() { return getCluster(currentCluster); }
+
+    bool isInCurrentClusterSubTree(int idc);
+    bool isActiveAndInCurrentClusterSubTree(int idc);
+
+    //main function to build a cluster tree/path decomposition:
+    // - builds a bucket for each variable following a given variable elimination order or directly from a tree decomposition file
+    // - builds a tree/path decomposition from the buckets
+    // - associate constraints to clusters, with special treatment for ternary constraints (duplicate flag)
+    void buildFromCovering(string filename);
+    void buildFromOrder();
+    void buildFromOrderNext(vector<int>& order);
+    void getElimVarOrder(vector<int>& elimVarOrder);
+    void treeFusions(); // merges all redundant clusters
+    bool treeFusion(); // one fusion step
+    void pathFusions(vector<int>& order); // builds a path decomposition of clusters from a given order
+
+    void buildFromOrderForApprox(); //builds a decomposition for approximation solution counting
+    void maxchord(int sizepart, vector<int>& order, ConstraintSet& totalusedctrs, TVars& inusedvars, TVars& currentusedvars, vector<Variable*>& currentRevElimOrder, ConstraintSet& currentusedctrs);
+    void insert(int sizepart, vector<Variable*> currentRevElimOrder, ConstraintSet currentusedctrs);
+
+    void fusion(Cluster* ci, Cluster* cj);
+    bool reduceHeight(Cluster* c, Cluster* father);
+    int getNextUnassignedVar(TVars* vars);
+    int getVarMinDomainDivMaxWeightedDegree(TVars* vars);
+    void splitClusterRec(Cluster* c, Cluster* father, unsigned int maxsize);
+    TVars boostingVarElimRec(Cluster* c, Cluster* father, Cluster* grandfather, unsigned int maxsize);
+    void mergeClusterRec(Cluster* c, Cluster* father, unsigned int maxsepsize, unsigned int minpropervar);
+    void heuristicFusionRec(Cluster* c, Cluster* noc);
+
+    void makeDescendants(Cluster* c);
+    bool isDescendant(Variable* x, Variable* y) { return getCluster(x->getCluster())->isDescendant(getCluster(y->getCluster())); }
+
+    int makeRooted(); // defines a rooted cluster tree decomposition from an undirected one
+    void makeRootedRec(Cluster* c, TClusters& visited);
+    Cluster* getBiggerCluster(TClusters& visited);
+    Cluster* getRoot() { return roots.front(); }
+    Cluster* getRootRDS() { return rootRDS; }
+    void setRootRDS(Cluster* rdsroot) { rootRDS = rdsroot; }
+
+    int height(Cluster* r);
+    int height(Cluster* r, Cluster* father);
+
+    void intersection(TVars& v1, TVars& v2, TVars& vout);
+    void difference(TVars& v1, TVars& v2, TVars& vout);
+    void sum(TVars v1, TVars v2, TVars& vout); // copy inputs to avoid any overlap issues with output
+    void sum(TVars& v1, TVars& v2); // it assumes vout = v1
+    bool included(TVars& v1, TVars& v2); // true if v1 is included in v2
+    void clusterSum(TClusters v1, TClusters v2, TClusters& vout);
+    void clusterSum(TClusters& v1, TClusters& v2);
+    void ctrSum(TCtrs v1, TCtrs v2, TCtrs& vout);
+    void ctrSum(TCtrs& v1, TCtrs& v2);
+
+    bool isDeltaModified(int varIndex) { return deltaModified[varIndex]; }
+    Cost getLbRecRDS()
+    {
+        Cluster* c = getCluster(currentCluster);
+        Cost res = c->getLbRecRDS();
+        return MAX(res, c->getLbRDS());
+    }
+    void addDelta(int c, EnumeratedVariable* x, Value value, Cost cost);
+    void newSolution(Cost lb);
+
+    bool verify();
+
+    void print(Cluster* c = NULL, int recnum = 0);
+    void printStats(Cluster* c = NULL);
+    void dump(Cluster* c = NULL);
+};
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/search/tb2solver.cpp b/code/include/tb2/search/tb2solver.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fe0f4c1de7cae79fcf5bcba9e14421c2fcfb78ad
--- /dev/null
+++ b/code/include/tb2/search/tb2solver.cpp
@@ -0,0 +1,2974 @@
+/*
+ * **************** Generic solver *******************
+ *
+ */
+
+#include "tb2solver.hpp"
+#include "core/tb2vac.hpp"
+#include "core/tb2domain.hpp"
+#include "applis/tb2pedigree.hpp"
+#include "applis/tb2haplotype.hpp"
+#include "applis/tb2bep.hpp"
+#include "tb2clusters.hpp"
+#include "vns/tb2vnsutils.hpp"
+#include "vns/tb2dgvns.hpp"
+#ifdef OPENMPI
+#include "vns/tb2cpdgvns.hpp"
+#include "vns/tb2rpdgvns.hpp"
+#endif
+#include <unistd.h>
+
+extern void setvalue(int wcspId, int varIndex, Value value, void* solver);
+
+const string Solver::CPOperation[CP_MAX] = { "ASSIGN", "REMOVE", "INCREASE", "DECREASE", "RANGEREMOVAL" };
+
+/*
+ * Solver constructors
+ *
+ */
+
+WeightedCSPSolver* WeightedCSPSolver::makeWeightedCSPSolver(Cost ub)
+{
+#ifdef OPENMPI
+    MPIEnv env0;
+    MPI_Comm_size(MPI_COMM_WORLD, &env0.ntasks);
+    MPI_Comm_rank(MPI_COMM_WORLD, &env0.myrank);
+#endif
+    WeightedCSPSolver* solver = NULL;
+    switch (ToulBar2::searchMethod) {
+    case VNS:
+    case DGVNS:
+#ifdef BOOST
+        solver = new VNSSolver(ub);
+#else
+        cerr << "Error: compiling with Boost graph library is needed to allow VNS-like search methods." << endl;
+        exit(EXIT_FAILURE);
+#endif
+        break;
+#ifdef OPENMPI
+    case CPDGVNS:
+#ifdef BOOST
+        solver = new CooperativeParallelDGVNS(ub, env0);
+#else
+        cerr << "Error: compiling with Boost graph library is needed to allow VNS-like search methods." << endl;
+        exit(EXIT_FAILURE);
+#endif
+        break;
+    case RPDGVNS:
+#ifdef BOOST
+        solver = new ReplicatedParallelDGVNS(ub, env0);
+#else
+        cerr << "Error: compiling with Boost graph library is needed to allow VNS-like search methods." << endl;
+        exit(EXIT_FAILURE);
+#endif
+        break;
+#endif
+    case TREEDEC:
+#ifdef BOOST
+        solver = new TreeDecRefinement(ub);
+#else
+        cerr << "Error: compiling with Boost graph library is needed to allow VNS-like search methods." << endl;
+        exit(EXIT_FAILURE);
+#endif
+        break;
+    default:
+        solver = new Solver(ub);
+        break;
+    };
+    return solver;
+}
+
+Solver::Solver(Cost initUpperBound)
+    : nbNodes(0)
+    , nbBacktracks(0)
+    , nbBacktracksLimit(LONGLONG_MAX)
+    , wcsp(NULL)
+    , allVars(NULL)
+    , unassignedVars(NULL)
+    , lastConflictVar(-1)
+    , nbSol(0.)
+    , nbSGoods(0)
+    , nbSGoodsUse(0)
+    , tailleSep(0)
+    , cp(NULL)
+    , open(NULL)
+    , hbfsLimit(LONGLONG_MAX)
+    , nbHybrid(0)
+    , nbHybridContinue(0)
+    , nbHybridNew(0)
+    , nbRecomputationNodes(0)
+    , initialLowerBound(MIN_COST)
+    , globalLowerBound(MIN_COST)
+    , globalUpperBound(MAX_COST)
+    , initialDepth(0)
+    , prevDivSolutionCost(MIN_COST)
+{
+    searchSize = new StoreCost(MIN_COST);
+    wcsp = WeightedCSP::makeWeightedCSP(initUpperBound, (void*)this);
+}
+
+Solver::~Solver()
+{
+    delete cp;
+    delete open;
+    delete unassignedVars;
+    delete[] allVars;
+    delete wcsp;
+    delete ((StoreCost*)searchSize);
+}
+
+void Solver::initVarHeuristic()
+{
+    unassignedVars = new BTList<Value>(&Store::storeDomain);
+    allVars = new DLink<Value>[wcsp->numberOfVariables()];
+    for (unsigned int j = 0; j < wcsp->numberOfVariables(); j++) {
+        unsigned int i = wcsp->getDACOrder(j);
+        allVars[i].content = j;
+    }
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        unassignedVars->push_back(&allVars[i], false);
+        if (wcsp->assigned(allVars[i].content) || (ToulBar2::nbDecisionVars > 0 && allVars[i].content >= ToulBar2::nbDecisionVars))
+            unassignedVars->erase(&allVars[i], false);
+        else
+            wcsp->resetWeightedDegree(allVars[i].content);
+    }
+    // Now function setvalue can be called safely!
+    ToulBar2::setvalue = setvalue;
+}
+
+Cost Solver::read_wcsp(const char* fileName)
+{
+    ToulBar2::setvalue = NULL;
+    return wcsp->read_wcsp(fileName);
+}
+
+void Solver::read_random(int n, int m, vector<int>& p, int seed, bool forceSubModular, string globalname)
+{
+    ToulBar2::setvalue = NULL;
+    wcsp->read_random(n, m, p, seed, forceSubModular, globalname);
+}
+
+void Solver::read_solution(const char* filename, bool updateValueHeuristic)
+{
+    // open the file
+    ifstream file(filename);
+    if (!file) {
+        cout << "Solution file " << filename << " not found.." << endl;
+        return;
+    }
+
+    wcsp->propagate();
+
+    int depth = Store::getDepth();
+    Store::store();
+
+    vector<int> variables;
+    vector<Value> values;
+    int i = 0;
+    while (!file.eof()) {
+        if ((unsigned int)i >= wcsp->numberOfVariables())
+            break;
+        int i_copy = i;
+        Value value = 0;
+        string token;
+        file >> token;
+        if (token.length() == 0)
+            break;
+        if (not isdigit(token[0])) {
+            size_t operation = token.find("=");
+            if (operation != string::npos) {
+                i = wcsp->getVarIndex(token.substr(0, operation));
+                if ((unsigned int)i >= wcsp->numberOfVariables()) {
+                    cerr << "Solution file incorrect! " << i_copy << " " << token << " " << i << endl;
+                    exit(EXIT_FAILURE);
+                }
+                operation++;
+            } else {
+                operation = 0;
+            }
+            if (not isdigit(token[operation])) {
+                unsigned int idx = wcsp->toIndex(i, token.substr(operation, string::npos));
+                if (idx >= wcsp->getDomainInitSize(i)) {
+                    cerr << "Solution file incorrect! " << i_copy << " " << token << " " << i << " " << idx << endl;
+                    exit(EXIT_FAILURE);
+                }
+                value = wcsp->toValue(i, idx);
+            } else {
+                value = atoi(token.substr(operation, string::npos).c_str());
+            }
+        } else {
+            value = atoi(token.c_str());
+        }
+
+        if (ToulBar2::sortDomains && ToulBar2::sortedDomains.find(i) != ToulBar2::sortedDomains.end()) {
+            int j = wcsp->getDomainInitSize(i) - 1;
+            while (j >= 0) {
+                if (ToulBar2::sortedDomains[i][j].value == value)
+                    break;
+                j--;
+            }
+            assert(j >= 0);
+            value = j;
+        }
+        if (!file)
+            break;
+        variables.push_back(i);
+        values.push_back(value);
+        // side-effect: remember last solution
+        if (updateValueHeuristic)
+            wcsp->setBestValue(i, value);
+        //        if (wcsp->unassigned(i)) {
+        //		  assign(i, value);
+        //		  // side-effect: remember last solution
+        //		  wcsp->setBestValue(i, value);
+        //        } else {
+        //		    if (wcsp->getValue(i) != value) {
+        //			  THROWCONTRADICTION;
+        //			} else {
+        //			  wcsp->setBestValue(i, value); // side-effect: remember last solution
+        //			}
+        //        }
+        i = i_copy;
+        i++;
+    }
+    bool contradiction = false;
+    try {
+        wcsp->assignLS(variables, values);
+    } catch (const Contradiction&) {
+        contradiction = true;
+    }
+    assert(wcsp->numberOfUnassignedVariables() == 0);
+    if (contradiction) {
+        if (ToulBar2::verbose >= 0)
+            cout << " Input complete assignment " << filename << " is not a valid solution!" << endl;
+    } else {
+        if (ToulBar2::verbose >= 0)
+            cout << " Input solution cost: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << std::setprecision(DECIMAL_POINT) << " (nb. of unassigned variables: " << wcsp->numberOfUnassignedVariables() << ")" << endl;
+        if (ToulBar2::verifyOpt) {
+            ToulBar2::verifiedOptimum = wcsp->getLb();
+        } else {
+            wcsp->updateUb(wcsp->getLb() + ((updateValueHeuristic) ? UNIT_COST : MIN_COST));
+        }
+    }
+    Store::restore(depth);
+    if (ToulBar2::verifyOpt) {
+        wcsp->setIsPartOfOptimalSolution(true); // must be done after restoring the original problem
+    }
+}
+
+void Solver::parse_solution(const char* certificate, bool updateValueHeuristic)
+{
+    wcsp->propagate();
+
+    //  int depth = Store::getDepth();
+    //    Store::store();
+
+    //certif2 = index(certif2,',');
+    char* certif2;
+    char sep[] = ",";
+    certif2 = strdup(certificate);
+    certif2 = strstr(certif2, sep);
+
+    if (certif2)
+        certif2++;
+
+    vector<int> variables;
+    vector<Value> values;
+    char svar[1024];
+    char svalue[1024];
+    int var;
+    Value value;
+    char operation = '\0';
+    while ((certif2 != NULL) && (certif2[0] != '\0')) {
+        int items = 0;
+        char *ope = strpbrk(certif2+1, "=#<>"); // avoid first character of a variable name (can be an operation char)
+        if (ope) {
+            items++;
+            operation = *ope;
+            items++;
+            strncpy(svar, certif2, ope - certif2);
+            svar[ope - certif2] = '\0';
+            char *nextsep = strpbrk(ope+2, sep);
+            if (nextsep) {
+                items++;
+                strncpy(svalue, ope+1, nextsep-ope-1);
+                svalue[nextsep-ope-1] = '\0';
+            } else {
+                if (strlen(ope+1) > 0) {
+                    items++;
+                    strcpy(svalue, ope+1);
+                }
+            }
+
+        }
+        if (items != 3) {
+            cerr << "Certificate " << certif2 << " incorrect! " << items << endl;
+            exit(EXIT_FAILURE);
+        }
+        certif2 = strstr(certif2, sep);
+        if (certif2)
+            certif2++;
+
+        if (not isdigit(svar[0])) {
+            var = wcsp->getVarIndex(to_string(svar));
+            if ((unsigned int)var >= wcsp->numberOfVariables()) {
+                cerr << "Certificate " << certif2 << " incorrect!" << endl;
+                exit(EXIT_FAILURE);
+            }
+        } else {
+            var = atoi(svar);
+        }
+
+        if (not isdigit(svalue[0])) {
+            unsigned int idx = wcsp->toIndex(var, to_string(svalue));
+            if (idx >= wcsp->getDomainInitSize(var)) {
+                cerr << "Certificate " << certif2 << " incorrect!" << endl;
+                exit(EXIT_FAILURE);
+            }
+            value = wcsp->toValue(var, idx);
+        } else {
+            value = atoi(svalue);
+        }
+
+        if (ToulBar2::sortDomains && ToulBar2::sortedDomains.find(var) != ToulBar2::sortedDomains.end()) {
+            int j = wcsp->getDomainInitSize(var) - 1;
+            while (j >= 0) {
+                if (ToulBar2::sortedDomains[var][j].value == value)
+                    break;
+                j--;
+            }
+            assert(j >= 0);
+            value = j;
+        }
+
+        switch (operation) {
+        case '=': {
+            variables.push_back(var);
+            values.push_back(value);
+            // side-effect: remember last solution
+            if (updateValueHeuristic)
+                wcsp->setBestValue(var, value);
+            break;
+        }
+        case '#': {
+            wcsp->remove(var, value);
+            break;
+        }
+        case '>': {
+            wcsp->increase(var, value + 1);
+            break;
+        }
+        case '<': {
+            wcsp->decrease(var, value - 1);
+            break;
+        }
+        default: {
+            cerr << "unknown choice point '" << operation << "' for partial assignment!!!" << endl;
+            exit(EXIT_FAILURE);
+        }
+        }
+        //        if (wcsp->unassigned(var)) {
+        //          assign(var, value);
+        //          // side-effect: remember last solution
+        //          wcsp->setBestValue(var, value);
+        //        } else {
+        //		  if (wcsp->getValue(var) != value) {
+        //			THROWCONTRADICTION;
+        //		  } else {
+        //			wcsp->setBestValue(var, value); // side-effect: remember last solution
+        //		  }
+        //        }
+    }
+    wcsp->assignLS(variables, values);
+    wcsp->propagate();
+    if (ToulBar2::verbose >= 0)
+        cout << " Input (partial) assignment bounds: [" << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDLb() << "," << wcsp->getDUb() << std::setprecision(DECIMAL_POINT) << "] (nb. of unassigned variables: " << wcsp->numberOfUnassignedVariables() << ")" << endl;
+
+    //    if (ToulBar2::btdMode>=2) wcsp->updateUb(wcsp->getLb()+UNIT_COST);
+    //    Store::restore(depth);
+}
+
+void Solver::dump_wcsp(const char* fileName, bool original, ProblemFormat format)
+{
+    ofstream pb(fileName);
+    switch (format) {
+    case WCSP_FORMAT:
+        wcsp->dump(pb, original);
+        break;
+    case CFN_FORMAT:
+        wcsp->dump_CFN(pb, original);
+        break;
+    default:
+        cerr << "Cannot save in this problem format! " << format << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+set<int> Solver::getUnassignedVars() const
+{
+    assert(unassignedVars);
+    set<int> res;
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        res.insert(*iter);
+    }
+    return res;
+}
+unsigned int Solver::numberOfUnassignedVariables() const
+{
+    assert(unassignedVars);
+    return unassignedVars->getSize();
+}
+
+/*
+ * Link between solver and wcsp: maintain a backtrackable list of unassigned variable indexes
+ *
+ */
+
+void setvalue(int wcspId, int varIndex, Value value, void* _solver_)
+{
+    //    assert(wcspId == 0); // WARNING! assert not compatible with sequential execution of solve() method
+    Solver* solver = (Solver*)_solver_;
+    unsigned int i = solver->getWCSP()->getDACOrder(varIndex);
+    if (!solver->allVars[i].removed) {
+        solver->unassignedVars->erase(&solver->allVars[i], true);
+    }
+}
+
+/*
+ * Variable ordering heuristics
+ *
+ */
+
+/// \defgroup heuristics Variable and value search ordering heuristics
+/// \see <em> Boosting Systematic Search by Weighting Constraints </em>. Frederic Boussemart, Fred Hemery, Christophe Lecoutre, Lakhdar Sais. Proc. of ECAI 2004, pages 146-150. Valencia, Spain, 2004.
+/// \see <em> Last Conflict Based Reasoning </em>. Christophe Lecoutre, Lakhdar Sais, Sebastien Tabary, Vincent Vidal. Proc. of ECAI 2006, pages 133-137. Trentino, Italy, 2006.
+
+int Solver::getNextUnassignedVar()
+{
+    //    if (lastConflictVar != -1 && wcsp->unassigned(lastConflictVar)) return lastConflictVar;
+    return (unassignedVars->empty()) ? -1 : (*unassignedVars->begin());
+}
+
+int Solver::getVarMinDomainDivMaxDegree()
+{
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        double heuristic = (double)wcsp->getDomainSize(*iter) / (double)(wcsp->getDegree(*iter) + 1);
+        if (varIndex < 0 || heuristic < best - epsilon * best
+            || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+            best = heuristic;
+            varIndex = *iter;
+            worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+        }
+    }
+    return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxDegreeRandomized()
+{
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    int ties[unassignedVars->getSize()];
+    int nbties = 0;
+
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        double heuristic = (double)wcsp->getDomainSize(*iter) / (double)(wcsp->getDegree(*iter) + 1);
+        if (varIndex < 0 || heuristic < best - epsilon * best
+            || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+            best = heuristic;
+            varIndex = *iter;
+            nbties = 1;
+            ties[0] = varIndex;
+            worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+        } else if (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) {
+            ties[nbties] = *iter;
+            nbties++;
+        }
+    }
+    if (nbties > 1)
+        return ties[myrand() % nbties];
+    else
+        return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxDegreeLastConflict()
+{
+    if (lastConflictVar != -1 && wcsp->unassigned(lastConflictVar))
+        return lastConflictVar;
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        // remove following "+1" when isolated variables are automatically assigned
+        double heuristic = (double)wcsp->getDomainSize(*iter) / (double)(wcsp->getDegree(*iter) + 1);
+        if (varIndex < 0 || heuristic < best - epsilon * best
+            || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+            best = heuristic;
+            varIndex = *iter;
+            worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+        }
+    }
+    return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxDegreeLastConflictRandomized()
+{
+    if (lastConflictVar != -1 && wcsp->unassigned(lastConflictVar))
+        return lastConflictVar;
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    int ties[unassignedVars->getSize()];
+    int nbties = 0;
+
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        // remove following "+1" when isolated variables are automatically assigned
+        double heuristic = (double)wcsp->getDomainSize(*iter) / (double)(wcsp->getDegree(*iter) + 1);
+        if (varIndex < 0 || heuristic < epsilon * best
+            || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+            best = heuristic;
+            varIndex = *iter;
+            nbties = 1;
+            ties[0] = varIndex;
+            worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            //        } else if ((heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) || ((myrand()%100)==0)) {
+        } else if (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) {
+            ties[nbties] = *iter;
+            nbties++;
+        }
+    }
+    if (nbties > 1) {
+        return ties[myrand() % nbties];
+    } else
+        return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxWeightedDegree()
+{
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        Cost unarymediancost = MIN_COST;
+        int domsize = wcsp->getDomainSize(*iter);
+        if (ToulBar2::weightedTightness) {
+            ValueCost array[domsize];
+            wcsp->getEnumDomainAndCost(*iter, array);
+            unarymediancost = stochastic_selection<ValueCost>(array, 0, domsize - 1, domsize / 2).cost;
+        }
+        double heuristic = (double)domsize / (double)(wcsp->getWeightedDegree(*iter) + 1 + unarymediancost);
+        if (varIndex < 0 || heuristic < best - epsilon * best
+            || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+            best = heuristic;
+            varIndex = *iter;
+            worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+        }
+    }
+    return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxWeightedDegreeRandomized()
+{
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    int ties[unassignedVars->getSize()];
+    int nbties = 0;
+
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        Cost unarymediancost = MIN_COST;
+        int domsize = wcsp->getDomainSize(*iter);
+        if (ToulBar2::weightedTightness) {
+            ValueCost array[domsize];
+            wcsp->getEnumDomainAndCost(*iter, array);
+            unarymediancost = stochastic_selection<ValueCost>(array, 0, domsize - 1, domsize / 2).cost;
+        }
+        double heuristic = (double)domsize / (double)(wcsp->getWeightedDegree(*iter) + 1 + unarymediancost);
+        if (varIndex < 0 || heuristic < best - epsilon * best
+            || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+            best = heuristic;
+            varIndex = *iter;
+            nbties = 1;
+            ties[0] = varIndex;
+            worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+        } else if (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) {
+            ties[nbties] = *iter;
+            nbties++;
+        }
+    }
+    if (nbties > 1)
+        return ties[myrand() % nbties];
+    else
+        return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxWeightedDegreeLastConflict()
+{
+    if (lastConflictVar != -1 && wcsp->unassigned(lastConflictVar))
+        return lastConflictVar;
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        Cost unarymediancost = MIN_COST;
+        int domsize = wcsp->getDomainSize(*iter);
+        if (ToulBar2::weightedTightness) {
+            ValueCost array[domsize];
+            wcsp->getEnumDomainAndCost(*iter, array);
+            unarymediancost = stochastic_selection<ValueCost>(array, 0, domsize - 1, domsize / 2).cost;
+        }
+        //remove following "+1" when isolated variables are automatically assigned
+        Long wdeg = wcsp->getWeightedDegree(*iter);
+        double heuristic = (double)domsize / (double)(wdeg + 1 + unarymediancost);
+        //double heuristic = 1. / (double) (wcsp->getMaxUnaryCost(*iter) + 1);
+        if (ToulBar2::FullEAC) {
+            EnumeratedVariable* var = (EnumeratedVariable*)((WCSP*)wcsp)->getVar(*iter);
+            if (!var->isFullEAC()
+                && ((varIndex < 0)
+                       || (heuristic < best - epsilon * best)
+                       || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost))) {
+                best = heuristic;
+                varIndex = *iter;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            }
+        } else {
+            if ((varIndex < 0)
+                || (heuristic < best - epsilon * best)
+                || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+                best = heuristic;
+                varIndex = *iter;
+                worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            }
+        }
+    }
+
+    if (varIndex == -1) {
+        if (ToulBar2::FullEAC) {
+            if (!unassignedVars->empty()) {
+                if (ToulBar2::verbose >= 2)
+                    cout << "Fast greedy assignment for " << unassignedVars->getSize() << " variables!" << endl;
+                Cost currentUb = wcsp->getUb();
+                Cost newUb = currentUb;
+                int depth = Store::getDepth();
+                try {
+                    Store::store();
+                    vector<int> variables;
+                    vector<Value> values;
+                    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+                        variables.push_back(*iter);
+                        values.push_back(((EnumeratedVariable*)((WCSP*)wcsp)->getVar(*iter))->getSupport());
+                    }
+                    // Fast Greedy Assignment
+                    wcsp->assignLS(variables, values);
+                    nbNodes++;
+                    newSolution(); /* it will update ub */
+                    newUb = wcsp->getUb();
+                } catch (const Contradiction&) {
+                    wcsp->whenContradiction();
+                }
+                Store::restore(depth);
+                if (newUb < currentUb) { /* a better solution has been found */
+                    wcsp->enforceUb(); /* it will generate a contradiction if lb >= ub */
+                    wcsp->propagate(); /* it will generate a contradiction if lb >= ub */
+                }
+                if (unassignedVars->empty()) // a new solution was found and all vars assigned by propagation
+                    varIndex = -1;
+                else {
+                    // Wrong heuristic guess
+                    varIndex = getVarMinDomainDivMaxWeightedDegreeLastConflictRandomized();
+                    assert(varIndex != -1);
+                }
+            }
+        }
+    }
+    return varIndex;
+}
+
+int Solver::getVarMinDomainDivMaxWeightedDegreeLastConflictRandomized()
+{
+    if (lastConflictVar != -1 && wcsp->unassigned(lastConflictVar))
+        return lastConflictVar;
+    int varIndex = -1;
+    Cost worstUnaryCost = MIN_COST;
+    double best = MAX_VAL - MIN_VAL;
+    int ties[unassignedVars->getSize()];
+    int nbties = 0;
+
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        Cost unarymediancost = MIN_COST;
+        int domsize = wcsp->getDomainSize(*iter);
+        if (ToulBar2::weightedTightness) {
+            ValueCost array[domsize];
+            wcsp->getEnumDomainAndCost(*iter, array);
+            unarymediancost = stochastic_selection<ValueCost>(array, 0, domsize - 1, domsize / 2).cost;
+        }
+        // remove following "+1" when isolated variables are automatically assigned
+        double heuristic = (double)domsize / (double)(wcsp->getWeightedDegree(*iter) + 1 + unarymediancost);
+        if (varIndex < 0 || heuristic < best - epsilon * best
+            || (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+            best = heuristic;
+            varIndex = *iter;
+            nbties = 1;
+            ties[0] = varIndex;
+            worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            //       } else if ((heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) || ((myrand()%100)==0)) {
+        } else if (heuristic < best + epsilon * best && wcsp->getMaxUnaryCost(*iter) == worstUnaryCost) {
+            ties[nbties] = *iter;
+            nbties++;
+        }
+    }
+    if (nbties > 1) {
+        return ties[myrand() % nbties];
+    } else
+        return varIndex;
+}
+
+int Solver::getMostUrgent()
+{
+    int varIndex = -1;
+    Value best = MAX_VAL;
+    Cost worstUnaryCost = MIN_COST;
+
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        if (varIndex < 0 || wcsp->getInf(*iter) < best || (wcsp->getInf(*iter) == best && wcsp->getMaxUnaryCost(*iter) > worstUnaryCost)) {
+            best = wcsp->getInf(*iter);
+            worstUnaryCost = wcsp->getMaxUnaryCost(*iter);
+            varIndex = *iter;
+        }
+    }
+    return varIndex;
+}
+
+/*
+ * Choice points
+ *
+ */
+
+/// \brief Enforce WCSP upper-bound and backtrack if ub <= lb or in the case of probabilistic inference if the contribution is too small
+void Solver::enforceUb()
+{
+    wcsp->enforceUb();
+    if (ToulBar2::isZ) {
+        Cost newCost = wcsp->getLb() + wcsp->getNegativeLb();
+        for (BTList<Value>::iterator iter_variable = unassignedVars->begin(); iter_variable != unassignedVars->end(); ++iter_variable) {
+            if (wcsp->enumerated(*iter_variable)) {
+                EnumeratedVariable* var = (EnumeratedVariable*)((WCSP*)wcsp)->getVar(*iter_variable);
+                Cost sumUnaryCosts = MAX_COST;
+                for (EnumeratedVariable::iterator iter_value = var->begin(); iter_value != var->end(); ++iter_value) {
+                    sumUnaryCosts = wcsp->LogSumExp(sumUnaryCosts, var->getCost(*iter_value));
+                }
+                newCost += sumUnaryCosts;
+            } else {
+                newCost += wcsp->LogProb2Cost(Log(wcsp->getDomainSize(*iter_variable)));
+            }
+        }
+        TLogProb newlogU = wcsp->LogSumExp(ToulBar2::logU, newCost);
+        if (newlogU < ToulBar2::logepsilon + ToulBar2::logZ) {
+            if (ToulBar2::verbose >= 1)
+                cout << "ZCUT " << newlogU << " " << ToulBar2::logZ << " " << Store::getDepth() << endl;
+            ToulBar2::logU = newlogU;
+            THROWCONTRADICTION;
+        }
+    }
+}
+
+void Solver::increase(int varIndex, Value value, bool reverse)
+{
+    enforceUb();
+    nbNodes++;
+    if (ToulBar2::verbose >= 1) {
+        if (ToulBar2::verbose >= 2)
+            cout << *wcsp;
+        if (ToulBar2::debug >= 3) {
+            string pbname = "problem" + to_string(nbNodes) + ".wcsp";
+            ofstream pb(pbname.c_str());
+            wcsp->dump(pb);
+            cout << " #" << nbNodes;
+        }
+        cout << "[" << Store::getDepth() << "," << wcsp->getLb() << "," << wcsp->getUb() << "," << wcsp->getDomainSizeSum();
+        if (wcsp->getTreeDec())
+            cout << ",C" << wcsp->getTreeDec()->getCurrentCluster()->getId();
+        cout << "] Try " << wcsp->getName(varIndex) << " >= " << value << " (s:" << wcsp->getSupport(varIndex) << ")" << endl;
+    }
+    wcsp->increase(varIndex, value);
+    wcsp->propagate();
+    if (ToulBar2::hbfs)
+        addChoicePoint(CP_INCREASE, varIndex, value, reverse);
+}
+
+void Solver::decrease(int varIndex, Value value, bool reverse)
+{
+    enforceUb();
+    nbNodes++;
+    if (ToulBar2::verbose >= 1) {
+        if (ToulBar2::verbose >= 2)
+            cout << *wcsp;
+        if (ToulBar2::debug >= 3) {
+            string pbname = "problem" + to_string(nbNodes) + ".wcsp";
+            ofstream pb(pbname.c_str());
+            wcsp->dump(pb);
+            cout << " #" << nbNodes;
+        }
+        cout << "[" << Store::getDepth() << "," << wcsp->getLb() << "," << wcsp->getUb() << "," << wcsp->getDomainSizeSum();
+        if (wcsp->getTreeDec())
+            cout << ",C" << wcsp->getTreeDec()->getCurrentCluster()->getId();
+        cout << "] Try " << wcsp->getName(varIndex) << " <= " << value << " (s:" << wcsp->getSupport(varIndex) << ")" << endl;
+    }
+    wcsp->decrease(varIndex, value);
+    wcsp->propagate();
+    if (ToulBar2::hbfs)
+        addChoicePoint(CP_DECREASE, varIndex, value, reverse);
+}
+
+void Solver::assign(int varIndex, Value value, bool reverse)
+{
+    enforceUb();
+    nbNodes++;
+    if (ToulBar2::debug && ((nbNodes % 128) == 0)) {
+        if (isatty(fileno(stdout)))
+            cout << "\r";
+        cout << Store::getDepth();
+        if (ToulBar2::hbfs) {
+            if (wcsp->getTreeDec()) {
+                Cost delta = wcsp->getTreeDec()->getCurrentCluster()->getCurrentDelta();
+                if (wcsp->getTreeDec()->getCurrentCluster()->open->size() > 0)
+                    cout << " [" << wcsp->getTreeDec()->getCurrentCluster()->open->getLb(delta) << "," << wcsp->getUb() << "]/" << wcsp->getTreeDec()->getCurrentCluster()->open->size() << "/" << wcsp->getTreeDec()->getCurrentCluster()->cp->size() << " " << (100. * (wcsp->getUb() - wcsp->getTreeDec()->getCurrentCluster()->open->getLb(delta)) / wcsp->getUb()) << "%";
+            } else {
+                if (open->size() > 0)
+                    cout << " [" << open->getLb() << "," << wcsp->getUb() << "]/" << open->size() << "/" << cp->size() << "/" << nbNodes << " " << (100. * (wcsp->getUb() - open->getLb()) / wcsp->getUb()) << "%";
+            }
+        } else if (ToulBar2::vnsKmax > 0) {
+            cout << " " << ToulBar2::vnsKcur << " " << ToulBar2::vnsLDScur;
+        }
+        cout << " " << Exp(((Cost)(*((StoreCost*)searchSize))) / 10e6);
+        if (wcsp->getTreeDec())
+            cout << " C" << wcsp->getTreeDec()->getCurrentCluster()->getId();
+        if (isatty(fileno(stdout)))
+            cout << "             ";
+        else
+            cout << endl;
+        cout.flush();
+    }
+    if (ToulBar2::verbose >= 1) {
+        if (ToulBar2::verbose >= 2)
+            cout << *wcsp;
+        if (ToulBar2::debug >= 3) {
+            string pbname = "problem" + to_string(nbNodes) + ".wcsp";
+            ofstream pb(pbname.c_str());
+            wcsp->dump(pb);
+            cout << " #" << nbNodes;
+        }
+        cout << "[" << Store::getDepth() << "," << wcsp->getLb() << "," << wcsp->getUb() << "," << wcsp->getDomainSizeSum();
+        if (wcsp->getTreeDec())
+            cout << ",C" << wcsp->getTreeDec()->getCurrentCluster()->getId();
+        cout << "] Try " << wcsp->getName(varIndex) << " == " << value << endl;
+    }
+    wcsp->assign(varIndex, value);
+    wcsp->propagate();
+    if (ToulBar2::hbfs)
+        addChoicePoint(CP_ASSIGN, varIndex, value, reverse);
+}
+
+void Solver::remove(int varIndex, Value value, bool reverse)
+{
+    enforceUb();
+    nbNodes++;
+    if (ToulBar2::verbose >= 1) {
+        if (ToulBar2::verbose >= 2)
+            cout << *wcsp;
+        if (ToulBar2::debug >= 3) {
+            string pbname = "problem" + to_string(nbNodes) + ".wcsp";
+            ofstream pb(pbname.c_str());
+            wcsp->dump(pb);
+            cout << " #" << nbNodes;
+        }
+        cout << "[" << Store::getDepth() << "," << wcsp->getLb() << "," << wcsp->getUb() << "," << wcsp->getDomainSizeSum();
+        if (wcsp->getTreeDec())
+            cout << ",C" << wcsp->getTreeDec()->getCurrentCluster()->getId();
+        cout << "] Try " << wcsp->getName(varIndex) << " != " << value << endl;
+    }
+    wcsp->remove(varIndex, value);
+    wcsp->propagate();
+    if (ToulBar2::hbfs)
+        addChoicePoint(CP_REMOVE, varIndex, value, reverse);
+}
+
+void Solver::remove(int varIndex, ValueCost* array, int first, int last, bool reverse)
+{
+    enforceUb();
+    nbNodes++;
+    if (ToulBar2::verbose >= 1) {
+        if (ToulBar2::verbose >= 2)
+            cout << *wcsp;
+        if (ToulBar2::debug >= 3) {
+            string pbname = "problem" + to_string(nbNodes) + ".wcsp";
+            ofstream pb(pbname.c_str());
+            wcsp->dump(pb);
+            cout << " #" << nbNodes;
+        }
+        cout << "[" << Store::getDepth() << "," << wcsp->getLb() << "," << wcsp->getUb() << "," << wcsp->getDomainSizeSum();
+        if (wcsp->getTreeDec())
+            cout << ",C" << wcsp->getTreeDec()->getCurrentCluster()->getId();
+        cout << "] Try " << wcsp->getName(varIndex) << " !=";
+        for (int i = first; i <= last; i++)
+            cout << " " << array[i].value;
+        cout << endl;
+    }
+    for (int i = first; i <= last; i++)
+        wcsp->remove(varIndex, array[i].value);
+    wcsp->propagate();
+    if (ToulBar2::hbfs)
+        addChoicePoint(CP_REMOVE_RANGE, varIndex, array[first].value, reverse); // Warning! only first value memorized!
+}
+
+int cmpValueCost(const void* p1, const void* p2)
+{
+    Cost c1 = ((ValueCost*)p1)->cost;
+    Cost c2 = ((ValueCost*)p2)->cost;
+    Value v1 = ((ValueCost*)p1)->value;
+    Value v2 = ((ValueCost*)p2)->value;
+    if (c1 < c2)
+        return -1;
+    else if (c1 > c2)
+        return 1;
+    else if (v1 < v2)
+        return -1;
+    else if (v1 > v2)
+        return 1;
+    else
+        return 0;
+}
+
+void Solver::initGap(Cost newLb, Cost newUb)
+{
+    initialLowerBound = newLb;
+    globalLowerBound = newLb;
+    globalUpperBound = newUb;
+    initialDepth = Store::getDepth();
+}
+
+void Solver::showGap(Cost newLb, Cost newUb)
+{
+    if (newLb > newUb)
+        newLb = newUb;
+    if (newUb > initialLowerBound && Store::getDepth() == initialDepth) {
+        int oldgap = (int)(100. - 100. * (globalLowerBound - initialLowerBound) / (globalUpperBound - initialLowerBound));
+        globalLowerBound = MAX(globalLowerBound, newLb);
+        globalUpperBound = MIN(globalUpperBound, newUb);
+        int newgap = (int)(100. - 100. * (globalLowerBound - initialLowerBound) / (globalUpperBound - initialLowerBound));
+        if (ToulBar2::verbose >= 0 && newgap < oldgap) {
+            Double Dglb = (ToulBar2::costMultiplier >= 0 ? wcsp->Cost2ADCost(globalLowerBound) : wcsp->Cost2ADCost(globalUpperBound));
+            Double Dgub = (ToulBar2::costMultiplier >= 0 ? wcsp->Cost2ADCost(globalUpperBound) : wcsp->Cost2ADCost(globalLowerBound));
+            std::ios_base::fmtflags f(cout.flags());
+            cout << "Optimality gap: [" << std::fixed << std::setprecision(ToulBar2::decimalPoint) << Dglb << ", " << Dgub << "] " << std::setprecision(DECIMAL_POINT) << (100. * (Dgub - Dglb)) / max(fabsl(Dglb), fabsl(Dgub)) << " % (" << nbBacktracks << " backtracks, " << nbNodes << " nodes)" << endl;
+            cout.flags(f);
+        }
+    }
+}
+
+void Solver::binaryChoicePoint(int varIndex, Value value, Cost lb)
+{
+    assert(wcsp->unassigned(varIndex));
+    assert(wcsp->canbe(varIndex, value));
+    if (ToulBar2::interrupted)
+        throw TimeOut();
+    unsigned int domsize = wcsp->getDomainSize(varIndex);
+    bool dichotomic = (ToulBar2::dichotomicBranching && ToulBar2::dichotomicBranchingSize < domsize);
+    Value middle = domsize / 2;
+    bool increasing = true;
+    ValueCost sorted[domsize];
+    //	bool reverse = true; // (ToulBar2::restart>0);
+    if (dichotomic) {
+        if (ToulBar2::dichotomicBranching == 1) {
+            middle = (wcsp->getInf(varIndex) + wcsp->getSup(varIndex)) / 2;
+            //          if (value <= middle || reverse) increasing = true;
+            if (value <= middle)
+                increasing = true;
+            else
+                increasing = false;
+        } else if (ToulBar2::dichotomicBranching == 2) {
+            wcsp->getEnumDomainAndCost(varIndex, sorted);
+            qsort(sorted, domsize, sizeof(ValueCost), cmpValueCost);
+        }
+        //    } else if (reverse) {
+        //    	value = wcsp->getMaxUnaryCostValue(varIndex);
+        //		assert(wcsp->canbe(varIndex,value));
+    }
+    int storedepth = Store::getDepth();
+    try {
+        Store::store();
+        lastConflictVar = varIndex;
+        if (dichotomic) {
+            if (ToulBar2::dichotomicBranching == 1) {
+                if (increasing)
+                    decrease(varIndex, middle);
+                else
+                    increase(varIndex, middle + 1);
+            } else if (ToulBar2::dichotomicBranching == 2) {
+                if (increasing)
+                    remove(varIndex, sorted, middle, domsize - 1);
+                else
+                    remove(varIndex, sorted, 0, middle - 1);
+            }
+            //    	} else if (reverse) {
+            //    		remove(varIndex, value);
+        } else
+            assign(varIndex, value);
+        lastConflictVar = -1;
+        recursiveSolve(lb);
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+    }
+    Store::restore(storedepth);
+    enforceUb();
+    nbBacktracks++;
+    if (nbBacktracks > nbBacktracksLimit)
+        throw NbBacktracksOut();
+#ifdef OPENMPI
+    if (ToulBar2::vnsParallel && ((nbBacktracks % 128) == 0) && MPI_interrupted())
+        throw TimeOut();
+#endif
+    if (dichotomic) {
+        if (ToulBar2::dichotomicBranching == 1) {
+            if (increasing)
+                increase(varIndex, middle + 1, nbBacktracks >= hbfsLimit);
+            else
+                decrease(varIndex, middle, nbBacktracks >= hbfsLimit);
+        } else if (ToulBar2::dichotomicBranching == 2) {
+            if (increasing)
+                remove(varIndex, sorted, 0, middle - 1, nbBacktracks >= hbfsLimit);
+            else
+                remove(varIndex, sorted, middle, domsize - 1, nbBacktracks >= hbfsLimit);
+        }
+        //    } else if (reverse) {
+        //    	assign(varIndex, value, nbBacktracks >= hybridBFSLimit);
+    } else
+        remove(varIndex, value, nbBacktracks >= hbfsLimit);
+    if (!ToulBar2::hbfs)
+        showGap(wcsp->getLb(), wcsp->getUb());
+    if (nbBacktracks >= hbfsLimit)
+        addOpenNode(*cp, *open, MAX(lb, wcsp->getLb()));
+    else
+        recursiveSolve(lb);
+}
+
+void Solver::binaryChoicePointLDS(int varIndex, Value value, int discrepancy)
+{
+    assert(wcsp->unassigned(varIndex));
+    assert(wcsp->canbe(varIndex, value));
+    if (ToulBar2::interrupted)
+        throw TimeOut();
+    unsigned int domsize = wcsp->getDomainSize(varIndex);
+    bool dichotomic = (ToulBar2::dichotomicBranching && ToulBar2::dichotomicBranchingSize < domsize);
+    Value middle = domsize / 2;
+    bool increasing = true;
+    ValueCost sorted[domsize];
+    if (dichotomic) {
+        if (ToulBar2::dichotomicBranching == 1) {
+            middle = (wcsp->getInf(varIndex) + wcsp->getSup(varIndex)) / 2;
+            if (value <= middle)
+                increasing = true;
+            else
+                increasing = false;
+        } else if (ToulBar2::dichotomicBranching == 2) {
+            wcsp->getEnumDomainAndCost(varIndex, sorted);
+            qsort(sorted, domsize, sizeof(ValueCost), cmpValueCost);
+        }
+    }
+    if (discrepancy > 0) {
+        int storedepth = Store::getDepth();
+        try {
+            Store::store();
+            lastConflictVar = varIndex;
+            if (dichotomic) {
+                if (ToulBar2::dichotomicBranching == 1) {
+                    if (increasing)
+                        increase(varIndex, middle + 1);
+                    else
+                        decrease(varIndex, middle);
+                } else if (ToulBar2::dichotomicBranching == 2) {
+                    if (increasing)
+                        remove(varIndex, sorted, 0, middle - 1);
+                    else
+                        remove(varIndex, sorted, middle, domsize - 1);
+                }
+            } else
+                remove(varIndex, value);
+            lastConflictVar = -1;
+            recursiveSolveLDS(discrepancy - 1);
+        } catch (const Contradiction&) {
+            wcsp->whenContradiction();
+        }
+        Store::restore(storedepth);
+        enforceUb();
+        nbBacktracks++;
+        if (nbBacktracks > nbBacktracksLimit)
+            throw NbBacktracksOut();
+#ifdef OPENMPI
+        if (ToulBar2::vnsParallel && ((nbBacktracks % 128) == 0) && MPI_interrupted())
+            throw TimeOut();
+#endif
+        if (dichotomic) {
+            if (ToulBar2::dichotomicBranching == 1) {
+                if (increasing)
+                    decrease(varIndex, middle);
+                else
+                    increase(varIndex, middle + 1);
+            } else if (ToulBar2::dichotomicBranching == 2) {
+                if (increasing)
+                    remove(varIndex, sorted, middle, domsize - 1);
+                else
+                    remove(varIndex, sorted, 0, middle - 1);
+            }
+        } else
+            assign(varIndex, value);
+        if (!ToulBar2::limited)
+            showGap(wcsp->getLb(), wcsp->getUb());
+        recursiveSolveLDS(discrepancy);
+    } else {
+        ToulBar2::limited = true;
+        lastConflictVar = varIndex;
+        if (dichotomic) {
+            if (ToulBar2::dichotomicBranching == 1) {
+                if (increasing)
+                    decrease(varIndex, middle);
+                else
+                    increase(varIndex, middle + 1);
+            } else if (ToulBar2::dichotomicBranching == 2) {
+                if (increasing)
+                    remove(varIndex, sorted, middle, domsize - 1);
+                else
+                    remove(varIndex, sorted, 0, middle - 1);
+            }
+        } else
+            assign(varIndex, value);
+        lastConflictVar = -1;
+        recursiveSolveLDS(0);
+    }
+}
+
+Value Solver::postponeRule(int varIndex)
+{
+    assert(ToulBar2::bep);
+    Value best = ToulBar2::bep->latest[varIndex] + 1;
+
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        if (*iter != varIndex) {
+            Value time = wcsp->getInf(*iter) + ToulBar2::bep->duration[*iter] + ToulBar2::bep->delay[*iter * ToulBar2::bep->size + varIndex];
+            if (time < best) {
+                best = time;
+            }
+        }
+    }
+    return best;
+}
+
+void Solver::scheduleOrPostpone(int varIndex)
+{
+    assert(wcsp->unassigned(varIndex));
+    if (ToulBar2::interrupted)
+        throw TimeOut();
+    Value xinf = wcsp->getInf(varIndex);
+    Value postponeValue = postponeRule(varIndex);
+    postponeValue = max(postponeValue, xinf + 1);
+    assert(postponeValue <= ToulBar2::bep->latest[varIndex] + 1);
+    bool reverse = (wcsp->getUnaryCost(varIndex, xinf) > MIN_COST) ? true : false;
+    int storedepth = Store::getDepth();
+    try {
+        Store::store();
+        if (reverse)
+            increase(varIndex, postponeValue);
+        else
+            assign(varIndex, xinf);
+        recursiveSolve();
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+    }
+    Store::restore(storedepth);
+    enforceUb();
+    nbBacktracks++;
+    if (nbBacktracks > nbBacktracksLimit)
+        throw NbBacktracksOut();
+#ifdef OPENMPI
+    if (ToulBar2::vnsParallel && ((nbBacktracks % 128) == 0) && MPI_interrupted())
+        throw TimeOut();
+#endif
+    if (reverse)
+        assign(varIndex, xinf);
+    else
+        increase(varIndex, postponeValue);
+    recursiveSolve();
+}
+
+void Solver::narySortedChoicePoint(int varIndex, Cost lb)
+{
+    assert(wcsp->enumerated(varIndex));
+    int size = wcsp->getDomainSize(varIndex);
+    ValueCost sorted[size];
+    //ValueCost* sorted = new ValueCost [size];
+    wcsp->getEnumDomainAndCost(varIndex, sorted);
+    qsort(sorted, size, sizeof(ValueCost), cmpValueCost);
+    for (int v = 0; wcsp->getLb() < wcsp->getUb() && v < size; v++) {
+        if (ToulBar2::interrupted)
+            throw TimeOut();
+        int storedepth = Store::getDepth();
+        try {
+            Store::store();
+            assign(varIndex, sorted[v].value);
+            recursiveSolve(lb);
+        } catch (const Contradiction&) {
+            wcsp->whenContradiction();
+        }
+        Store::restore(storedepth);
+    }
+    //delete [] sorted;
+    enforceUb();
+    nbBacktracks++;
+    if (nbBacktracks > nbBacktracksLimit)
+        throw NbBacktracksOut();
+#ifdef OPENMPI
+    if (ToulBar2::vnsParallel && ((nbBacktracks % 128) == 0) && MPI_interrupted())
+        throw TimeOut();
+#endif
+}
+
+void Solver::narySortedChoicePointLDS(int varIndex, int discrepancy)
+{
+    assert(wcsp->enumerated(varIndex));
+    int size = wcsp->getDomainSize(varIndex);
+    ValueCost sorted[size];
+    //ValueCost* sorted = new ValueCost [size];
+    wcsp->getEnumDomainAndCost(varIndex, sorted);
+    qsort(sorted, size, sizeof(ValueCost), cmpValueCost);
+    if (discrepancy < size - 1)
+        ToulBar2::limited = true;
+    for (int v = min(size - 1, discrepancy); wcsp->getLb() < wcsp->getUb() && v >= 0; v--) {
+        if (ToulBar2::interrupted)
+            throw TimeOut();
+        int storedepth = Store::getDepth();
+        try {
+            Store::store();
+            assign(varIndex, sorted[v].value);
+            recursiveSolveLDS(discrepancy - v);
+        } catch (const Contradiction&) {
+            wcsp->whenContradiction();
+        }
+        Store::restore(storedepth);
+    }
+    //delete [] sorted;
+    enforceUb();
+    nbBacktracks++;
+    if (nbBacktracks > nbBacktracksLimit)
+        throw NbBacktracksOut();
+#ifdef OPENMPI
+    if (ToulBar2::vnsParallel && ((nbBacktracks % 128) == 0) && MPI_interrupted())
+        throw TimeOut();
+#endif
+}
+
+void Solver::singletonConsistency()
+{
+    bool deadend;
+    bool done = false;
+    while (!done) {
+        done = true;
+        for (unsigned int varIndex = 0; varIndex < ((ToulBar2::nbDecisionVars > 0) ? ToulBar2::nbDecisionVars : wcsp->numberOfVariables()); varIndex++) {
+            int size = wcsp->getDomainSize(varIndex);
+            ValueCost sorted[size];
+            //ValueCost* sorted = new ValueCost [size];
+            wcsp->iniSingleton();
+            wcsp->getEnumDomainAndCost(varIndex, sorted);
+            qsort(sorted, size, sizeof(ValueCost), cmpValueCost);
+            for (int a = 0; a < size; a++) {
+                deadend = false;
+                int storedepth = Store::getDepth();
+                try {
+                    Store::store();
+                    assign(varIndex, sorted[a].value);
+                } catch (const Contradiction&) {
+                    wcsp->whenContradiction();
+                    deadend = true;
+                    done = false;
+                }
+                Store::restore(storedepth);
+                wcsp->updateSingleton();
+                //cout << "(" << varIndex << "," << a <<  ")" << endl;
+                if (deadend) {
+                    remove(varIndex, sorted[a].value);
+                    if (ToulBar2::verbose >= 0) {
+                        cout << ".";
+                        flush(cout);
+                    }
+                    // WARNING!!! can we stop if the variable is assigned, what about removeSingleton after???
+                }
+            }
+            wcsp->removeSingleton();
+            //delete [] sorted;
+        }
+    }
+    if (ToulBar2::verbose >= 0)
+        cout << "Done Singleton Consistency" << endl;
+}
+
+/*
+ * Hybrid Depth-First and Best-First Branch and Bound
+ *
+ */
+
+void Solver::newSolution()
+{
+#ifndef NDEBUG
+    bool allVarsAssigned = true;
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+        if (wcsp->unassigned(i)) {
+            allVarsAssigned = false;
+            break;
+        }
+    }
+    assert(allVarsAssigned);
+#endif
+    if (!ToulBar2::allSolutions && !ToulBar2::isZ) {
+        ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)wcsp->getLb()));
+        wcsp->updateUb(wcsp->getLb());
+    } else if (!ToulBar2::btdMode)
+        nbSol += 1.;
+    if (ToulBar2::isZ) {
+        ToulBar2::logZ = wcsp->LogSumExp(ToulBar2::logZ, wcsp->getLb() + wcsp->getNegativeLb());
+        if (ToulBar2::debug && (nbBacktracks % 10000LL) == 0 && ToulBar2::logepsilon > -numeric_limits<TLogProb>::infinity())
+            cout << (ToulBar2::logZ + ToulBar2::markov_log) << " , " << (wcsp->LogSumExp(ToulBar2::logZ, ToulBar2::logU) + ToulBar2::markov_log) << endl;
+    }
+    if ((!ToulBar2::allSolutions && !ToulBar2::isZ) || ToulBar2::debug >= 2) {
+        if (ToulBar2::verbose >= 0 || ToulBar2::showSolutions) {
+            if (ToulBar2::haplotype)
+                cout << "***New solution: " << wcsp->getLb() << " log10like: " << ToulBar2::haplotype->Cost2LogProb(wcsp->getLb()) / Log(10.) << " logProb: " << ToulBar2::haplotype->Cost2LogProb(wcsp->getLb()) << " (" << nbBacktracks << " backtracks, " << nbNodes << " nodes, depth " << Store::getDepth() << ")" << endl;
+            else if (!ToulBar2::bayesian)
+                cout << "New solution: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << std::setprecision(DECIMAL_POINT) << " (" << nbBacktracks << " backtracks, " << nbNodes << " nodes, depth " << Store::getDepth() << ")" << endl;
+            else
+                cout << "New solution: " << wcsp->getLb() << " energy: " << -(wcsp->Cost2LogProb(wcsp->getLb() + wcsp->getNegativeLb()) + ToulBar2::markov_log) << " prob: " << std::scientific << wcsp->Cost2Prob(wcsp->getLb() + wcsp->getNegativeLb()) * Exp(ToulBar2::markov_log) << std::fixed << " (" << nbBacktracks << " backtracks, " << nbNodes << " nodes, depth " << Store::getDepth() << ")" << endl;
+        }
+    }
+
+    wcsp->restoreSolution();
+    if (!ToulBar2::isZ)
+        wcsp->setSolution(wcsp->getLb());
+
+    if (ToulBar2::showSolutions) {
+
+        if (ToulBar2::verbose >= 2)
+            cout << *wcsp << endl;
+
+        if (ToulBar2::allSolutions) {
+            cout << std::setprecision(0) << nbSol << " solution(" << std::setprecision(ToulBar2::decimalPoint) << wcsp->getDDualBound() << "): ";
+        }
+
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+            cout << " ";
+            if (ToulBar2::pedigree) {
+                cout << wcsp->getName(i) << ":";
+                ToulBar2::pedigree->printGenotype(cout, wcsp->getValue(i));
+            } else if (ToulBar2::haplotype) {
+                ToulBar2::haplotype->printHaplotype(cout, wcsp->getValue(i), i);
+            } else if (wcsp->enumerated(i) && ((EnumeratedVariable*)((WCSP*)wcsp)->getVar(i))->isValueNames()) {
+                EnumeratedVariable* myvar = (EnumeratedVariable*)((WCSP*)wcsp)->getVar(i);
+                Value myvalue = ((ToulBar2::sortDomains && ToulBar2::sortedDomains.find(i) != ToulBar2::sortedDomains.end()) ? ToulBar2::sortedDomains[i][myvar->toIndex(myvar->getValue())].value : myvar->getValue());
+                string valuelabel = myvar->getValueName(myvar->toIndex(myvalue));
+                string varlabel = myvar->getName();
+
+                switch (ToulBar2::showSolutions) {
+                case 1:
+                    cout << myvalue;
+                    break;
+                case 2:
+                    cout << valuelabel;
+                    break;
+                case 3:
+                    cout << varlabel << "=" << valuelabel;
+                    break;
+                default:
+                    break;
+                }
+            } else {
+                cout << ((ToulBar2::sortDomains && ToulBar2::sortedDomains.find(i) != ToulBar2::sortedDomains.end()) ? ToulBar2::sortedDomains[i][wcsp->toIndex(i, wcsp->getValue(i))].value : wcsp->getValue(i));
+            }
+        }
+        cout << endl;
+        if (ToulBar2::bep)
+            ToulBar2::bep->printSolution((WCSP*)wcsp);
+    }
+    if (ToulBar2::pedigree) {
+        ToulBar2::pedigree->printCorrection((WCSP*)wcsp);
+    }
+    if (ToulBar2::writeSolution) {
+        if (ToulBar2::pedigree) {
+            string problemname = ToulBar2::problemsaved_filename;
+            if (problemname.rfind(".wcsp") != string::npos)
+                problemname.replace(problemname.rfind(".wcsp"), 5, ".pre");
+            else if (problemname.rfind(".cfn") != string::npos)
+                problemname.replace(problemname.rfind(".wcsp"), 4, ".pre");
+            ToulBar2::pedigree->save((problemname.find("problem.pre") == 0) ? "problem_corrected.pre" : problemname.c_str(), (WCSP*)wcsp, true, false);
+            ToulBar2::pedigree->printSol((WCSP*)wcsp);
+            ToulBar2::pedigree->printCorrectSol((WCSP*)wcsp);
+        } else if (ToulBar2::haplotype) {
+            ToulBar2::haplotype->printSol((WCSP*)wcsp);
+        }
+        if (ToulBar2::solutionFile != NULL) {
+            if (!ToulBar2::allSolutions)
+                fseek(ToulBar2::solutionFile, ToulBar2::solutionFileRewindPos, SEEK_SET);
+            wcsp->printSolution(ToulBar2::solutionFile);
+            fprintf(ToulBar2::solutionFile, "\n");
+        }
+    }
+
+    if (ToulBar2::xmlflag) {
+        cout << "o " << wcsp->getLb() << endl; //" ";
+    }
+    if (ToulBar2::maxsateval) {
+        cout << "o " << wcsp->getLb() << endl;
+    }
+    if (ToulBar2::uaieval && !ToulBar2::isZ) {
+        ((WCSP*)wcsp)->solution_UAI(wcsp->getLb());
+    }
+
+    if (ToulBar2::newsolution)
+        (*ToulBar2::newsolution)(wcsp->getIndex(), wcsp->getSolver());
+
+    if (ToulBar2::restart == 0 && !ToulBar2::lds && !ToulBar2::isZ)
+        throw NbBacktracksOut();
+    if (ToulBar2::allSolutions && nbSol >= ToulBar2::allSolutions)
+        throw NbSolutionsOut();
+    if (ToulBar2::divNbSol > 1 && wcsp->getLb() <= prevDivSolutionCost)
+        throw DivSolutionOut();
+}
+
+void Solver::recursiveSolve(Cost lb)
+{
+    int varIndex = -1;
+    if (ToulBar2::bep)
+        varIndex = getMostUrgent();
+    else if (ToulBar2::Static_variable_ordering)
+        varIndex = getNextUnassignedVar();
+    else if (ToulBar2::weightedDegree && ToulBar2::lastConflict)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxWeightedDegreeLastConflictRandomized() : getVarMinDomainDivMaxWeightedDegreeLastConflict());
+    else if (ToulBar2::lastConflict)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxDegreeLastConflictRandomized() : getVarMinDomainDivMaxDegreeLastConflict());
+    else if (ToulBar2::weightedDegree)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxWeightedDegreeRandomized() : getVarMinDomainDivMaxWeightedDegree());
+    else
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxDegreeRandomized() : getVarMinDomainDivMaxDegree());
+    if (varIndex >= 0) {
+        *((StoreCost*)searchSize) += ((Cost)(10e6 * Log(wcsp->getDomainSize(varIndex))));
+        if (ToulBar2::bep)
+            scheduleOrPostpone(varIndex);
+        else if (wcsp->enumerated(varIndex)) {
+            if (ToulBar2::binaryBranching) {
+                assert(wcsp->canbe(varIndex, wcsp->getSupport(varIndex)));
+                // Reuse last solution found if available
+                Value bestval = ((ToulBar2::verifyOpt) ? (wcsp->getSup(varIndex) + 1) : wcsp->getBestValue(varIndex));
+                binaryChoicePoint(varIndex, (wcsp->canbe(varIndex, bestval)) ? bestval : wcsp->getSupport(varIndex), lb);
+            } else
+                narySortedChoicePoint(varIndex, lb);
+        } else {
+            return binaryChoicePoint(varIndex, wcsp->getInf(varIndex), lb);
+        }
+    } else {
+        assert(ToulBar2::isZ || lb <= wcsp->getLb());
+        newSolution();
+    }
+}
+
+void Solver::recursiveSolveLDS(int discrepancy)
+{
+    int varIndex = -1;
+    if (ToulBar2::bep)
+        varIndex = getMostUrgent();
+    else if (ToulBar2::weightedDegree && ToulBar2::lastConflict)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxWeightedDegreeLastConflictRandomized() : getVarMinDomainDivMaxWeightedDegreeLastConflict());
+    else if (ToulBar2::lastConflict)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxDegreeLastConflictRandomized() : getVarMinDomainDivMaxDegreeLastConflict());
+    else if (ToulBar2::weightedDegree)
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxWeightedDegreeRandomized() : getVarMinDomainDivMaxWeightedDegree());
+    else
+        varIndex = ((ToulBar2::restart > 0) ? getVarMinDomainDivMaxDegreeRandomized() : getVarMinDomainDivMaxDegree());
+    if (varIndex >= 0) {
+        if (ToulBar2::bep)
+            scheduleOrPostpone(varIndex);
+        else if (wcsp->enumerated(varIndex)) {
+            if (ToulBar2::binaryBranching) {
+                assert(wcsp->canbe(varIndex, wcsp->getSupport(varIndex)));
+                // Reuse last solution found if available
+                Value bestval = wcsp->getBestValue(varIndex);
+                binaryChoicePointLDS(varIndex, (wcsp->canbe(varIndex, bestval)) ? bestval : wcsp->getSupport(varIndex), discrepancy);
+            } else {
+                narySortedChoicePointLDS(varIndex, discrepancy);
+            }
+        } else {
+            binaryChoicePointLDS(varIndex, wcsp->getInf(varIndex), discrepancy);
+        }
+    } else {
+        newSolution();
+    }
+}
+
+pair<Cost, Cost> Solver::hybridSolve(Cluster* cluster, Cost clb, Cost cub)
+{
+    if (ToulBar2::verbose >= 1 && cluster)
+        cout << "hybridSolve C" << cluster->getId() << " " << clb << " " << cub << endl;
+    assert(clb < cub);
+    assert(wcsp->getUb() == cub);
+    assert(wcsp->getLb() <= clb);
+    if (ToulBar2::hbfs) {
+        CPStore* cp_ = NULL;
+        OpenList* open_ = NULL;
+        Cost delta = MIN_COST;
+        if (cluster) {
+            // BFS with BTD on current cluster (can be root or not)
+            assert(cluster->cp);
+            cp_ = cluster->cp;
+            if (cluster == wcsp->getTreeDec()->getRoot()) {
+                if (!cluster->open)
+                    cluster->open = new OpenList();
+                cluster->setUb(cub); // global problem upper bound
+            } else {
+                delta = cluster->getCurrentDelta();
+                if (!cluster->open) {
+                    cluster->nogoodRec(clb, MAX_COST, &cluster->open); // create an initial empty open list
+                    cluster->setUb(MAX_COST); // no initial solution found for this cluster
+                }
+            }
+            assert(cluster->open);
+            open_ = cluster->open;
+#ifndef NDEBUG
+            OpenList* prevopen = cluster->open;
+            Cost tmplb = MIN_COST;
+            Cost tmpub = MAX_COST;
+            assert(cluster == wcsp->getTreeDec()->getRoot() || cluster->nogoodGet(tmplb, tmpub, &cluster->open));
+            assert(prevopen == cluster->open);
+            assert(cluster == wcsp->getTreeDec()->getRoot() || tmpub == cluster->getUb());
+            assert(cluster != wcsp->getTreeDec()->getRoot() || cub == cluster->getUb());
+#endif
+        } else {
+            // normal BFS without BTD, i.e., hybridSolve is not reentrant
+            if (cp != NULL)
+                delete cp;
+            cp = new CPStore();
+            cp_ = cp;
+            if (open != NULL)
+                delete open;
+            open = new OpenList();
+            open_ = open;
+        }
+        cp_->store();
+        if (open_->size() == 0 || (cluster && (clb >= open_->getClosedNodesLb(delta) || cub > open_->getUb(delta)))) { // start a new list of open nodes if needed
+            if (open_->size() == 0 && (!cluster || cluster->getNbVars() > 0))
+                nbHybridNew++;
+            // reinitialize current open list and insert empty node
+            *open_ = OpenList(MAX(MIN_COST, cub + delta), MAX(MIN_COST, cub + delta));
+            addOpenNode(*cp_, *open_, clb, delta);
+        } else if (!cluster || cluster->getNbVars() > 0)
+            nbHybridContinue++;
+        if (!cluster || cluster->getNbVars() > 0)
+            nbHybrid++; // do not count empty root cluster
+        if (cluster)
+            cluster->hbfsGlobalLimit = ((ToulBar2::hbfsGlobalLimit > 0) ? (nbBacktracks + ToulBar2::hbfsGlobalLimit) : LONGLONG_MAX);
+        Cost initiallb = clb;
+        Cost initialub = cub;
+        open_->updateUb(cub, delta);
+        clb = MAX(clb, open_->getLb(delta));
+        if (ToulBar2::verbose >= 1 && cluster)
+            cout << "hybridSolve-2 C" << cluster->getId() << " " << clb << " " << cub << " " << delta << " " << open_->size() << " " << open_->top().getCost(delta) << " " << open_->getClosedNodesLb(delta) << " " << open_->getUb(delta) << endl;
+        while (clb < cub && !open_->finished() && (!cluster || (clb == initiallb && cub == initialub && nbBacktracks <= cluster->hbfsGlobalLimit))) {
+            if (cluster) {
+                cluster->hbfsLimit = ((ToulBar2::hbfs > 0) ? (cluster->nbBacktracks + ToulBar2::hbfs) : LONGLONG_MAX);
+                assert(wcsp->getTreeDec()->getCurrentCluster() == cluster);
+                wcsp->setUb(cub);
+                assert(cluster->isActive());
+                assert(cluster->getLbRec() == wcsp->getLb());
+            } else
+                hbfsLimit = ((ToulBar2::hbfs > 0) ? (nbBacktracks + ToulBar2::hbfs) : LONGLONG_MAX);
+            int storedepthBFS = Store::getDepth();
+            int storeVAC = ToulBar2::vac;
+            try {
+                Store::store();
+                OpenNode nd = open_->top();
+                open_->pop();
+                if (ToulBar2::verbose >= 3) {
+                    if (wcsp->getTreeDec())
+                        cout << "[C" << wcsp->getTreeDec()->getCurrentCluster()->getId() << "] ";
+                    cout << "[ " << nd.getCost(delta) << ", " << cub << "] ( " << open_->size() << "+1 still open)" << endl;
+                }
+                if (ToulBar2::vac < 0 && Store::getDepth() + (nd.last - nd.first) >= abs(ToulBar2::vac))
+                    ToulBar2::vac = 0;
+                restore(*cp_, nd);
+                Cost bestlb = MAX(nd.getCost(delta), wcsp->getLb());
+                bestlb = MAX(bestlb, clb);
+                if (cluster) {
+                    pair<Cost, Cost> res = recursiveSolve(cluster, bestlb, cub);
+                    assert(res.first <= res.second);
+                    assert(res.first >= bestlb);
+                    assert(res.second <= cub);
+                    assert(res.second == cub || cluster->getUb() == res.second);
+                    assert(open_->empty() || open_->top().getCost(delta) >= nd.getCost(delta));
+                    open_->updateClosedNodesLb(res.first, delta);
+                    open_->updateUb(res.second, delta);
+                    cub = MIN(cub, res.second);
+                } else {
+                    if (ToulBar2::vac < 0)
+                        ToulBar2::vac = 0;
+                    recursiveSolve(bestlb);
+                }
+            } catch (const Contradiction&) {
+                wcsp->whenContradiction();
+            }
+            if (!cluster) { // synchronize current upper bound with DFS (without tree decomposition)
+                cub = wcsp->getUb();
+                open_->updateUb(cub);
+            }
+            Store::restore(storedepthBFS);
+            ToulBar2::vac = storeVAC;
+            cp_->store();
+            if (cp_->size() >= static_cast<std::size_t>(ToulBar2::hbfsCPLimit) || open_->size() >= static_cast<std::size_t>(ToulBar2::hbfsOpenNodeLimit)) {
+                ToulBar2::hbfs = 0;
+                ToulBar2::hbfsGlobalLimit = 0;
+                if (cluster) {
+                    cluster->hbfsGlobalLimit = LONGLONG_MAX;
+                    cluster->hbfsLimit = LONGLONG_MAX;
+                } else
+                    hbfsLimit = LONGLONG_MAX;
+            }
+            clb = MAX(clb, open_->getLb(delta));
+            showGap(clb, cub);
+            if (ToulBar2::hbfs && nbRecomputationNodes > 0) { // wait until a nonempty open node is restored (at least after first global solution is found)
+                assert(nbNodes > 0);
+                if (nbRecomputationNodes > nbNodes / ToulBar2::hbfsBeta && ToulBar2::hbfs <= ToulBar2::hbfsGlobalLimit)
+                    ToulBar2::hbfs *= 2;
+                else if (nbRecomputationNodes < nbNodes / ToulBar2::hbfsAlpha && ToulBar2::hbfs >= 2)
+                    ToulBar2::hbfs /= 2;
+                if (ToulBar2::debug >= 2)
+                    cout << "HBFS backtrack limit: " << ToulBar2::hbfs << endl;
+            }
+        }
+        assert(clb >= initiallb && cub <= initialub);
+    } else {
+        if (cluster) {
+            cluster->hbfsGlobalLimit = LONGLONG_MAX;
+            cluster->hbfsLimit = LONGLONG_MAX;
+            pair<Cost, Cost> res = recursiveSolve(cluster, clb, cub);
+            clb = MAX(clb, res.first);
+            cub = MIN(cub, res.second);
+        } else {
+            hbfsLimit = LONGLONG_MAX;
+            recursiveSolve();
+            cub = wcsp->getUb();
+            clb = cub;
+        }
+    }
+    assert(clb <= cub);
+    return make_pair(clb, cub);
+}
+
+void Solver::beginSolve(Cost ub)
+{
+    // Last-minute compatibility checks for ToulBar2 selected options
+    if (ub <= MIN_COST) {
+        cerr << "Error: wrong initial primal bound (negative or zero)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::allSolutions && ToulBar2::btdMode == 1 && ub > 1) {
+        cerr << "Error: Solution enumeration by BTD-like search methods is only possible for feasability (use -ub=1 and integer costs only)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::allSolutions && ToulBar2::btdMode == 1 && ub == 1 && ToulBar2::hbfs) {
+        cerr << "Error: Hybrid best-first search cannot currently look for all solutions when BTD mode is activated. Shift to DFS (use -hbfs:)." << endl;
+        exit(1);
+    }
+    if (ToulBar2::FullEAC && ToulBar2::vac > 1 && wcsp->numberOfConnectedConstraints() > wcsp->numberOfConnectedBinaryConstraints()) {
+        cerr << "Warning: VAC during search and Full EAC variable ordering heuristic not implemented with non binary cost functions (remove -vacint option)." << endl;
+        exit(1);
+    }
+
+    if (ToulBar2::searchMethod != DFBB) {
+        if (!ToulBar2::lds || ToulBar2::vnsLDSmax < 0)
+            ToulBar2::vnsLDSmax = wcsp->getDomainSizeSum() - wcsp->numberOfUnassignedVariables();
+        if (!ToulBar2::lds)
+            ToulBar2::vnsLDSmin = wcsp->getDomainSizeSum() - wcsp->numberOfUnassignedVariables();
+        if (ToulBar2::vnsKmax <= 0)
+            ToulBar2::vnsKmax = wcsp->numberOfUnassignedVariables();
+    }
+    if (wcsp->isGlobal() && ToulBar2::btdMode >= 1) {
+        cout << "Error: cannot use BTD-like search methods with monolithic global cost functions (remove -B option)." << endl;
+        exit(1);
+    }
+    if (wcsp->isGlobal() && (ToulBar2::elimDegree_preprocessing >= 1 || ToulBar2::elimDegree_preprocessing < -1)) {
+        cout << "Warning! Cannot use generic variable elimination with global cost functions." << endl;
+        ToulBar2::elimDegree_preprocessing = -1;
+    }
+    if (ToulBar2::incop_cmd.size() > 0) {
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+            if (wcsp->unassigned(i) && !wcsp->enumerated(i)) {
+                cout << "Warning! Cannot use INCOP local search with bounds arc propagation (non enumerated variable domains)." << endl;
+                ToulBar2::incop_cmd = "";
+                break;
+            }
+        }
+    }
+    if (((WCSP*)wcsp)->isAlreadyTreeDec(ToulBar2::varOrder)) {
+        if (ToulBar2::btdMode >= 3) {
+            cout << "Warning! Cannot apply path decomposition with a given tree decomposition file." << endl;
+            ToulBar2::btdMode = 2;
+        }
+        if (ToulBar2::btdMode >= 1) {
+            if (ToulBar2::elimDegree_preprocessing > 0) {
+                cout << "Warning! Cannot apply variable elimination in preprocessing with a given tree decomposition file." << endl;
+                ToulBar2::elimDegree_preprocessing = 0;
+            }
+            if (ToulBar2::elimDegree > 0) {
+                cout << "Warning! Cannot apply variable elimination during search with a given tree decomposition file." << endl;
+                ToulBar2::elimDegree = 0;
+            }
+            if (ToulBar2::preprocessFunctional > 0) {
+                cout << "Warning! Cannot apply functional variable elimination with a given tree decomposition file." << endl;
+                ToulBar2::preprocessFunctional = 0;
+            }
+        }
+    }
+
+    nbBacktracks = 0;
+    nbBacktracksLimit = ToulBar2::backtrackLimit;
+    nbNodes = 0;
+    nbRecomputationNodes = 0;
+    lastConflictVar = -1;
+    tailleSep = 0;
+    ToulBar2::limited = false;
+
+    if (ToulBar2::DEE)
+        ToulBar2::DEE_ = ToulBar2::DEE; // enforces PSNS after closing the model
+
+    if (CSP(wcsp->getLb(), wcsp->getUb())) {
+        ToulBar2::LcLevel = LC_AC;
+    }
+
+    if (ToulBar2::isZ) {
+        ToulBar2::logZ = -numeric_limits<TLogProb>::infinity();
+        ToulBar2::logU = -numeric_limits<TLogProb>::infinity();
+    }
+
+    // reactivate on-the-fly variable elimination and dead-end elimination if needed
+    for (int i = wcsp->numberOfVariables() - 1; i >= 0; i--) {
+        if (wcsp->unassigned(i)) {
+            ((WCSP *)wcsp)->getVar(i)->queueEliminate();
+            ((WCSP *)wcsp)->getVar(i)->queueDEE();
+        }
+    }
+}
+
+Cost Solver::preprocessing(Cost initialUpperBound)
+{
+    Long hbfs_ = ToulBar2::hbfs;
+    ToulBar2::hbfs = 0; // do not perform hbfs operations in preprocessing except for building tree decomposition
+    if (!ToulBar2::isZ) {
+        Cost finiteUb = wcsp->finiteUb(); // find worst-case assignment finite cost plus one as new upper bound
+        if (finiteUb < initialUpperBound) {
+            initialUpperBound = finiteUb;
+            ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(finiteUb, wcsp->getUb())));
+            wcsp->updateUb(finiteUb + ToulBar2::deltaUb);
+        }
+        wcsp->setInfiniteCost(); // shrink forbidden costs based on problem lower and upper bounds to avoid integer overflow errors when summing costs
+    }
+    Cost initialLowerBound = wcsp->getLb();
+    wcsp->enforceUb();
+    wcsp->propagate(); // initial propagation
+    if (!ToulBar2::isZ) {
+        Cost finiteUb = wcsp->finiteUb(); // find worst-case assignment finite cost plus one as new upper bound
+        if (finiteUb < initialUpperBound || wcsp->getLb() > initialLowerBound) {
+            if (finiteUb < initialUpperBound) {
+                ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(finiteUb, wcsp->getUb())));
+                wcsp->updateUb(finiteUb + ToulBar2::deltaUb);
+            }
+            wcsp->setInfiniteCost();
+            if (finiteUb < initialUpperBound) {
+                wcsp->enforceUb();
+                wcsp->propagate();
+                initialUpperBound = finiteUb;
+            }
+        }
+    }
+    wcsp->preprocessing(); // preprocessing after initial propagation
+    if (!ToulBar2::isZ) {
+        Cost finiteUb = wcsp->finiteUb(); // find worst-case assignment finite cost plus one as new upper bound
+        if (finiteUb < initialUpperBound) {
+            ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(finiteUb, wcsp->getUb())));
+            wcsp->updateUb(finiteUb + ToulBar2::deltaUb);
+        }
+        wcsp->setInfiniteCost();
+        if (finiteUb < initialUpperBound) {
+            wcsp->enforceUb();
+            wcsp->propagate();
+            initialUpperBound = finiteUb;
+        }
+    }
+    if (ToulBar2::verbose >= 0)
+        cout << "Preprocessing time: " << cpuTime() - ToulBar2::startCpuTime << " seconds." << endl;
+
+    // special data structure to be initialized for variable ordering heuristics
+    initVarHeuristic();
+
+    int lds = ToulBar2::lds;
+    ToulBar2::lds = 0; // avoid TimeOut exception when new solutions found
+    if (ToulBar2::incop_cmd.size() > 0) {
+        double incopStartTime = cpuTime();
+        vector<int> bestsol(getWCSP()->numberOfVariables(), 0);
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++)
+            bestsol[i] = (wcsp->canbe(i, wcsp->getBestValue(i)) ? wcsp->getBestValue(i) : wcsp->getSupport(i));
+        narycsp(ToulBar2::incop_cmd, bestsol);
+        if (ToulBar2::verbose >= 0)
+            cout << "INCOP solving time: " << cpuTime() - incopStartTime << " seconds." << endl;
+    }
+    ToulBar2::lds = lds;
+
+    if (ToulBar2::singletonConsistency) {
+        singletonConsistency();
+        wcsp->propagate();
+    }
+
+    ToulBar2::hbfs = hbfs_; // do not perform hbfs operations in preprocessing except for building tree decomposition
+
+    if (ToulBar2::verbose >= 0)
+        cout << wcsp->numberOfUnassignedVariables() << " unassigned variables, " << wcsp->getDomainSizeSum() << " values in all current domains (med. size:" << wcsp->medianDomainSize() << ", max size:" << wcsp->getMaxCurrentDomainSize() << ") and " << wcsp->numberOfConnectedConstraints() << " non-unary cost functions (med. arity:" << wcsp->medianArity() << ", med. degree:" << wcsp->medianDegree() << ")" << endl;
+    if (ToulBar2::verbose >= 0) {
+        Double Dlb = wcsp->getDLb();
+        Double Dub = wcsp->getDUb();
+        cout << "Initial lower and upper bounds: [" << std::fixed << std::setprecision(ToulBar2::decimalPoint) << Dlb << ", " << Dub << "] " << std::setprecision(DECIMAL_POINT) << (100.0 * (Dub - Dlb)) / max(fabsl(Dlb), fabsl(Dub)) << "%" << endl;
+    }
+    initGap(wcsp->getLb(), wcsp->getUb());
+
+    if (ToulBar2::DEE == 4) {
+        ToulBar2::DEE_ = 0; // only PSNS in preprocessing
+        ToulBar2::DEE = 0; // avoid doing DEE later in the case of incremental solving
+    }
+
+    if (ToulBar2::isZ && ToulBar2::verbose >= 1)
+        cout << "NegativeShiftingCost= " << wcsp->getNegativeLb() << endl;
+
+    if (ToulBar2::btdMode) {
+        if (wcsp->numberOfUnassignedVariables() == 0 || wcsp->numberOfConnectedConstraints() == 0)
+            ToulBar2::approximateCountingBTD = 0;
+        ToulBar2::vac = 0; // VAC is not compatible with restricted tree decomposition propagation
+        wcsp->buildTreeDecomposition();
+    } else if (ToulBar2::weightedDegree && (((Long)wcsp->numberOfConnectedConstraints()) >= ((Long)ToulBar2::weightedDegree))) {
+        if (ToulBar2::verbose >= 0)
+            cout << "Weighted degree heuristic disabled (#costfunctions=" << wcsp->numberOfConnectedConstraints() << " >= " << ToulBar2::weightedDegree << ")" << endl;
+        ToulBar2::weightedDegree = 0;
+    }
+
+    if (ToulBar2::dumpWCSP) {
+        dump_wcsp(ToulBar2::problemsaved_filename.c_str(), false, static_cast<ProblemFormat>((ToulBar2::dumpWCSP >> 1)+(ToulBar2::dumpWCSP & 1)));
+        cout << "end." << endl;
+        exit(0);
+    }
+
+    return initialUpperBound;
+}
+
+bool Solver::solve(bool first)
+{
+    beginSolve(wcsp->getUb());
+
+    Cost initialUpperBound = wcsp->getUb();
+
+    //        Store::store();       // if uncomment then solve() does not change the problem but all preprocessing operations will allocate in backtrackable memory
+    int initdepth = Store::getDepth();
+    try {
+        try {
+            if (first) {
+                initialUpperBound = preprocessing(initialUpperBound);
+            } else {
+                if (ToulBar2::elimDegree >= 0)
+                    ToulBar2::elimDegree_ = ToulBar2::elimDegree;
+                initGap(wcsp->getLb(), wcsp->getUb());
+            }
+
+            Cost upperbound = MAX_COST;
+            if (ToulBar2::restart >= 0) {
+                if (ToulBar2::restart > 0)
+                    nbBacktracksLimit = 1;
+                upperbound = wcsp->getUb();
+            }
+            bool nbbacktracksout = false;
+            int nbrestart = 0;
+            Long currentNbBacktracksLimit = 1;
+            Long nbBacktracksLimitTop = 1;
+            int storedepth = Store::getDepth();
+            do {
+                Store::store();
+                if (ToulBar2::restart >= 0) {
+                    nbbacktracksout = false;
+                    nbrestart++;
+                    // currentNbBacktracksLimit = max(currentNbBacktracksLimit + 1, (Long) (1.2 * (Double) currentNbBacktracksLimit + 0.5));
+                    // if (ToulBar2::lds) currentNbBacktracksLimit *= 4;
+                    currentNbBacktracksLimit = luby(nbrestart);
+                    if (currentNbBacktracksLimit > nbBacktracksLimitTop || (wcsp->getUb() < upperbound)) {
+                        nbBacktracksLimitTop = currentNbBacktracksLimit;
+                        currentNbBacktracksLimit = 1;
+                    }
+                    //			if (!(wcsp->getUb() < upperbound) && nbNodes >= ToulBar2::restart) {
+                    if (nbNodes >= ToulBar2::restart) {
+                        nbBacktracksLimit = ToulBar2::backtrackLimit;
+                        ToulBar2::restart = 0;
+                        if (ToulBar2::verbose >= 0)
+                            cout << "****** Restart " << nbrestart << " with no backtrack limit and UB=" << wcsp->getUb() << " ****** (" << nbNodes << " nodes)" << endl;
+                        if (ToulBar2::debug >= 1 && ToulBar2::weightedDegree > 0) {
+                            int size = unassignedVars->getSize();
+                            ValueCost sorted[size];
+                            int i = 0;
+                            for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+                                sorted[i].value = *iter;
+                                sorted[i].cost = wcsp->getWeightedDegree(*iter);
+                                i++;
+                            }
+                            qsort(sorted, size, sizeof(ValueCost), cmpValueCost);
+                            for (i = 0; i < size; i++) {
+                                cout << wcsp->getName(sorted[i].value) << " " << wcsp->getDomainSize(sorted[i].value) << " " << sorted[i].cost << endl;
+                            }
+                        }
+                    } else {
+                        nbBacktracksLimit = min(ToulBar2::backtrackLimit, nbBacktracks + currentNbBacktracksLimit * 100);
+                        if (ToulBar2::verbose >= 0)
+                            cout << "****** Restart " << nbrestart << " with " << currentNbBacktracksLimit * 100 << " backtracks max and UB=" << wcsp->getUb() << " ****** (" << nbNodes << " nodes)" << endl;
+                    }
+                    upperbound = wcsp->getUb();
+                    enforceUb();
+                    wcsp->propagate();
+                    Store::store();
+                    if (ToulBar2::isZ) {
+                        ToulBar2::logZ = -numeric_limits<TLogProb>::infinity();
+                        ToulBar2::logU = -numeric_limits<TLogProb>::infinity();
+                    }
+                }
+                try {
+                    if (ToulBar2::restart <= 0 && ToulBar2::lds) {
+                        int discrepancy = 0;
+                        do {
+                            if (discrepancy > abs(ToulBar2::lds)) {
+                                if (ToulBar2::verbose >= 0)
+                                    cout << "--- [" << Store::getDepth() << "] Search with no discrepancy limit --- (" << nbNodes << " nodes)" << endl;
+                            } else {
+                                if (ToulBar2::verbose >= 0)
+                                    cout << "--- [" << Store::getDepth() << "] LDS " << discrepancy << " --- (" << nbNodes << " nodes)" << endl;
+                            }
+                            ToulBar2::limited = false;
+                            enforceUb();
+                            wcsp->propagate();
+                            if (ToulBar2::isZ) {
+                                ToulBar2::logZ = -numeric_limits<TLogProb>::infinity();
+                                ToulBar2::logU = -numeric_limits<TLogProb>::infinity();
+                            }
+                            if (discrepancy > abs(ToulBar2::lds)) {
+                                if (ToulBar2::lds < 0) {
+                                    ToulBar2::limited = true;
+                                    THROWCONTRADICTION;
+                                }
+                                ToulBar2::lds = 0;
+                                initialDepth = Store::getDepth();
+                                hybridSolve();
+                            } else {
+                                int storedepth = Store::getDepth();
+                                try {
+                                    Store::store();
+                                    initialDepth = Store::getDepth();
+                                    recursiveSolveLDS(discrepancy);
+                                } catch (const Contradiction&) {
+                                    wcsp->whenContradiction();
+                                }
+                                Store::restore(storedepth);
+                            }
+                            if (discrepancy > 0)
+                                discrepancy *= 2;
+                            else
+                                discrepancy++;
+                        } while (ToulBar2::limited);
+                    } else {
+                        TreeDecomposition* td = wcsp->getTreeDec();
+                        if (td) {
+                            Cost ub = wcsp->getUb();
+                            Cluster* start = td->getRoot();
+                            assert(start->getLbRec() == MIN_COST); // local lower bounds (and delta costs) must be zero!
+                            if (ToulBar2::btdSubTree >= 0)
+                                start = td->getCluster(ToulBar2::btdSubTree);
+                            td->setCurrentCluster(start);
+                            if (start == td->getRoot())
+                                start->setLb(wcsp->getLb()); // initial lower bound found by propagation is associated to tree decompostion root cluster
+                            switch (ToulBar2::btdMode) {
+                            case 0:
+                            case 1: {
+                                if (ToulBar2::allSolutions) {
+                                    timeDeconnect = 0.;
+                                    BigInteger cartesianProduct = 1;
+                                    nbSol = (wcsp->numberOfConnectedConstraints() == 0) ? (wcsp->cartProd(cartesianProduct), cartesianProduct) : sharpBTD(start);
+                                    if (ToulBar2::approximateCountingBTD && nbSol > 0. && td->getRoot()->getNbVars() == 0) { //if there are several parts
+                                        approximate(nbSol, td);
+                                    }
+                                    // computation of maximal separator size
+                                    for (int i = 0; i < td->getNbOfClusters(); i++) {
+                                        if (td->getCluster(i)->sepSize() > tailleSep)
+                                            tailleSep = td->getCluster(i)->sepSize();
+                                    }
+                                } else {
+                                    pair<Cost, Cost> res = make_pair(wcsp->getLb(), ub);
+                                    do {
+                                        int storedepth = Store::getDepth();
+                                        try {
+                                            Store::store();
+                                            td->setCurrentCluster(start);
+                                            enforceUb();
+                                            wcsp->propagate();
+                                            initialDepth = Store::getDepth();
+                                            res = hybridSolve(start, MAX(wcsp->getLb(), res.first), res.second);
+                                            //				                if (res.first < res.second) cout << "Optimality gap: [ " <<  res.first << " , " << res.second << " ] " << (100. * (res.second-res.first)) / res.second << " % (" << nbBacktracks << " backtracks, " << nbNodes << " nodes)" << endl;
+                                        } catch (const Contradiction&) {
+                                            wcsp->whenContradiction();
+                                            res.first = res.second;
+                                        }
+                                        Store::restore(storedepth);
+                                        ub = res.second;
+                                        wcsp->setUb(ub);
+                                    } while (res.first < res.second);
+                                    assert(res.first == res.second);
+                                }
+                                break;
+                            }
+                            case 2:
+                            case 3: {
+                                pair<Cost, Cost> res = make_pair(wcsp->getLb(), ub);
+                                do { //TODO: set up for optimality gap pretty print
+                                    res = russianDollSearch(start, res.second);
+                                    //				        if (res.first < res.second) cout << "Optimality gap: [ " <<  res.first << " , " << res.second << " ] " << (100. * (res.second-res.first)) / res.second << " % (" << nbBacktracks << " backtracks, " << nbNodes << " nodes)" << endl;
+                                } while (res.first < res.second);
+                                assert(res.first == res.second);
+                                ub = start->getLbRDS();
+                                assert(ub == res.second);
+                                wcsp->setUb(ub);
+                                break;
+                            }
+                            default: {
+                                cerr << "Unknown search method B" << ToulBar2::btdMode << endl;
+                                exit(EXIT_FAILURE);
+                            }
+                            }
+                            if (ToulBar2::debug)
+                                start->printStatsRec();
+                            if (ToulBar2::verbose >= 0 && nbHybrid >= 1)
+                                cout << "HBFS open list restarts: " << (100. * (nbHybrid - nbHybridNew - nbHybridContinue) / nbHybrid) << " % and reuse: " << (100. * nbHybridContinue / nbHybrid) << " % of " << nbHybrid << endl;
+                        } else {
+                            if (ToulBar2::useRASPS) {
+                                enforceUb();
+                                wcsp->propagate();
+                                ToulBar2::RASPS = true;
+                                ((WCSP*)wcsp)->vac->iniThreshold(ToulBar2::RASPSlastitThreshold);
+                                ((WCSP*)wcsp)->vac->propagate(); // VAC done again
+                                ToulBar2::RASPS = false;
+                                if (ToulBar2::verbose >= 0)
+                                    cout << "RASPS done in preprocessing (backtrack: " << nbBacktracks << " nodes: " << nbNodes << ")" << endl;
+                                enforceUb();
+                                wcsp->propagate();
+                                if (ToulBar2::RASPSreset) {
+                                    for (unsigned int i = 0; i < wcsp->numberOfVariables(); i++) {
+                                        wcsp->resetWeightedDegree(i);
+                                        wcsp->setBestValue(i, wcsp->getSup(i) + 1);
+                                    }
+                                }
+                            }
+                            if (ToulBar2::divNbSol > 1) {
+                                int initDepth = Store::getDepth();
+                                Cost initUb = initialUpperBound;
+                                prevDivSolutionCost = MIN_COST;
+                                bool incrementalSearch = true;
+                                solTrie.init(wcsp->getDivVariables());
+                                vector<Cost> energies;
+                                bool extrapolatedBound = false;
+
+                                try {
+                                    do {
+                                        if (ToulBar2::verbose >= 0)
+                                            cout << "+++++++++ Search for solution " << energies.size() + 1 << " +++++++++" << endl;
+                                        wcsp->setUb(initUb); // (re-)start search with an initial upper bound
+                                        wcsp->initSolutionCost(); // set solution cost to infinity but do not forget solution vector
+
+                                        //get solution from previous solve and add pairwise Hamming distance constraint
+                                        if (energies.size() > 0 && !extrapolatedBound) {
+                                            switch (ToulBar2::divMethod) {
+                                            case 0:
+                                                wcsp->addDivConstraint(wcsp->getSolution(), energies.size() - 1, initUb);
+                                                break;
+                                            case 1:
+                                                wcsp->addHDivConstraint(wcsp->getSolution(), energies.size() - 1, initUb);
+                                                break;
+                                            case 2:
+                                                wcsp->addTDivConstraint(wcsp->getSolution(), energies.size() - 1, initUb);
+                                                break;
+                                            default:
+                                                cerr << "Error: no such diversity encoding method: " << ToulBar2::divMethod << endl;
+                                                exit(EXIT_FAILURE);
+                                            }
+                                            wcsp->propagate();
+                                        }
+
+                                        Cost eUpperBound = initUb;
+                                        if (!extrapolatedBound) { // previous extrapolated bound was fine
+                                            if (energies.size() >= 2) {
+                                                auto back = energies.end() - 1;
+                                                Cost maxDelta = *(back) - *(--back);
+                                                int maxCount = 5;
+                                                while (back != energies.begin() && --maxCount >= 0) {
+                                                    maxDelta = max(maxDelta, *(back) - *(--back));
+                                                }
+                                                Cost newUb = energies.back() + max(UNIT_COST, 2 * maxDelta);
+                                                if (initUb > newUb) {
+                                                    extrapolatedBound = true;
+                                                    eUpperBound = newUb;
+                                                    wcsp->setUb(eUpperBound); // start search with an extrapolated upper bound
+                                                    if (ToulBar2::verbose >= 0)
+                                                        cout << "+++++++++ predictive bounding: " << wcsp->Cost2ADCost(eUpperBound) << endl;
+                                                }
+                                            }
+                                        } else {
+                                            extrapolatedBound = false;
+                                        }
+
+                                        Store::store(); // protect the current CFN from changes by search or new cost functions
+                                        try {
+                                            try {
+                                                if (ToulBar2::divWidth > 0 && energies.size() > 1) {
+                                                    if (ToulBar2::verbose >= 1)
+                                                        cout << "computing MDD.." << endl;
+                                                    Mdd mdd = computeMDD(&solTrie, initUb);
+                                                    if (ToulBar2::verbose >= 1)
+                                                        cout << "MDD computed." << endl;
+                                                    //ofstream os(to_string(this) + "-wregular.dot");
+                                                    //printLayers(os, mdd);
+                                                    //os.close();
+                                                    switch (ToulBar2::divMethod) {
+                                                    case 0:
+                                                        wcsp->addMDDConstraint(mdd, ToulBar2::divNbSol - 1); //ToulBar2::divNbSol = index of the relaxed constraint
+                                                        break;
+                                                    case 1:
+                                                        wcsp->addHMDDConstraint(mdd, ToulBar2::divNbSol - 1);
+                                                        break;
+                                                    case 2:
+                                                        wcsp->addTMDDConstraint(mdd, ToulBar2::divNbSol - 1);
+                                                        break;
+                                                    default:
+                                                        cerr << "Error: no such diversity encoding method: " << ToulBar2::divMethod << endl;
+                                                        exit(EXIT_FAILURE);
+                                                    }
+                                                }
+                                                // reactivate on-the-fly variable elimination and dead-end elimination
+                                                for (int i = wcsp->numberOfVariables() - 1; i >= 0; i--) {
+                                                    if (wcsp->unassigned(i)) {
+                                                        ((WCSP *)wcsp)->getVar(i)->queueEliminate();
+                                                        ((WCSP *)wcsp)->getVar(i)->queueDEE();
+                                                    }
+                                                }
+                                                wcsp->propagate();
+                                                initialDepth = Store::getDepth();
+                                                hybridSolve(); // do not give prevDivSolutionCost as initial lower bound because it will generate too many open nodes with the same lower bound
+                                            } catch (const DivSolutionOut&) {
+                                                ToulBar2::limited = false;
+                                            }
+                                        } catch (const Contradiction&) {
+                                            wcsp->whenContradiction();
+                                        }
+                                        Store::restore(initDepth); // undo search
+                                        if (wcsp->getSolutionCost() < eUpperBound) {
+                                            assert(wcsp->getSolutionCost() >= prevDivSolutionCost);
+                                            prevDivSolutionCost = wcsp->getSolutionCost();
+                                            energies.push_back(prevDivSolutionCost);
+                                            vector<Value> divSol;
+                                            for (auto const& var : wcsp->getDivVariables()) {
+                                                divSol.push_back(wcsp->getSolution()[var->wcspIndex]);
+                                            }
+                                            solTrie.insertSolution(divSol);
+                                            if (ToulBar2::solutionFile) {
+                                                ToulBar2::solutionFileRewindPos = ftell(ToulBar2::solutionFile);
+                                            }
+                                            incrementalSearch = (energies.size() < ToulBar2::divNbSol && wcsp->getDivVariables().size() > 0 && ToulBar2::divBound <= wcsp->getDivVariables().size());
+                                            extrapolatedBound = false;
+                                        } else { // No solution found
+                                            if (!extrapolatedBound) {
+                                                incrementalSearch = false;
+                                            }
+                                        }
+                                        endSolve(wcsp->getSolutionCost() < eUpperBound, wcsp->getSolutionCost(), !ToulBar2::limited);
+                                    } while (incrementalSearch); // this or an exception (no solution)
+                                } catch (const Contradiction&) {
+                                    wcsp->whenContradiction();
+                                    endSolve(wcsp->getSolutionCost() < initUb, wcsp->getSolutionCost(), !ToulBar2::limited);
+                                }
+                            } else {
+                                initialDepth = Store::getDepth();
+                                hybridSolve();
+                            }
+                        }
+                    }
+                } catch (const NbBacktracksOut&) {
+                    if (nbBacktracks > ToulBar2::backtrackLimit)
+                        throw NbBacktracksOut();
+                    nbbacktracksout = true;
+                    ToulBar2::limited = false;
+                }
+                Store::restore(storedepth);
+            } while (nbbacktracksout);
+        } catch (const Contradiction&) {
+            wcsp->whenContradiction();
+        }
+    } catch (const SolverOut&) {
+    }
+    Store::restore(initdepth);
+    //  Store::restore();         // see above for Store::store()
+
+    if (ToulBar2::divNbSol <= 1)
+        endSolve(wcsp->getSolutionCost() < initialUpperBound, wcsp->getSolutionCost(), !ToulBar2::limited);
+
+    return (ToulBar2::isZ || ToulBar2::allSolutions || wcsp->getSolutionCost() < initialUpperBound);
+}
+
+void Solver::endSolve(bool isSolution, Cost cost, bool isComplete)
+{
+    ToulBar2::DEE_ = 0;
+    ToulBar2::elimDegree_ = -1;
+
+    static string solType[4] = { "Optimum: ", "Primal bound: ", "guaranteed primal bound: ", "Primal bound: " };
+
+    int isLimited = (!isComplete) | ((ToulBar2::deltaUb != MIN_COST) << 1);
+
+    if (ToulBar2::isZ) {
+        if (ToulBar2::verbose >= 1)
+            cout << "NegativeShiftingCost= " << wcsp->getNegativeLb() << endl;
+        if (ToulBar2::uaieval) {
+            rewind(ToulBar2::solution_uai_file);
+            fprintf(ToulBar2::solution_uai_file, "PR\n");
+            fprintf(ToulBar2::solution_uai_file, PrintFormatProb, (wcsp->LogSumExp(ToulBar2::logZ, ToulBar2::logU) + ToulBar2::markov_log) / Log(10.));
+            fprintf(ToulBar2::solution_uai_file, "\n");
+        }
+        cout << (ToulBar2::logZ + ToulBar2::markov_log) << " <= Log(Z) <= ";
+        cout << (wcsp->LogSumExp(ToulBar2::logZ, ToulBar2::logU) + ToulBar2::markov_log) << " in " << nbBacktracks << " backtracks and " << nbNodes << " nodes and " << cpuTime() - ToulBar2::startCpuTime << " seconds" << endl;
+        cout << (ToulBar2::logZ + ToulBar2::markov_log) / Log(10.) << " <= Log10(Z) <= ";
+        cout << (wcsp->LogSumExp(ToulBar2::logZ, ToulBar2::logU) + ToulBar2::markov_log) / Log(10.) << " in " << nbBacktracks << " backtracks and " << nbNodes << " nodes and " << cpuTime() - ToulBar2::startCpuTime << " seconds" << endl;
+        return;
+    }
+    if (ToulBar2::allSolutions) {
+        if (ToulBar2::approximateCountingBTD)
+            cout << "Number of solutions    : ~= " << std::fixed << std::setprecision(0) << nbSol << std::setprecision(DECIMAL_POINT) << endl;
+        else {
+            if (!isComplete)
+                cout << "Number of solutions    : >=  " << std::fixed << std::setprecision(0) << nbSol << std::setprecision(DECIMAL_POINT) << endl;
+            else
+                cout << "Number of solutions    : =  " << std::fixed << std::setprecision(0) << nbSol << std::setprecision(DECIMAL_POINT) << endl;
+        }
+        if (ToulBar2::btdMode >= 1) {
+            cout << "Number of #goods       :    " << nbSGoods << endl;
+            cout << "Number of used #goods  :    " << nbSGoodsUse << endl;
+            cout << "Size of sep            :    " << tailleSep << endl;
+        }
+        cout << "Time                   :    " << cpuTime() - ToulBar2::startCpuTime << " seconds" << endl;
+        cout << "... in " << nbBacktracks << " backtracks and " << nbNodes << " nodes" << ((ToulBar2::DEE) ? (" ( " + to_string(wcsp->getNbDEE()) + " removals by DEE)") : "") << endl;
+        return;
+    }
+
+    if (ToulBar2::vac)
+        wcsp->printVACStat();
+
+    if (ToulBar2::verbose >= 0 && nbHybrid >= 1 && nbNodes > 0)
+        cout << "Node redundancy during HBFS: " << 100. * nbRecomputationNodes / nbNodes << " %" << endl;
+
+    if (isSolution) {
+        if (ToulBar2::verbose >= 0 && !ToulBar2::uai && !ToulBar2::xmlflag && !ToulBar2::maxsateval) {
+            if (ToulBar2::haplotype)
+                cout << endl;
+
+            if (isLimited == 2)
+                cout << "(" << ToulBar2::deltaUbS << "," << std::scientific << ToulBar2::deltaUbRelativeGap << std::fixed << ")-";
+            if (ToulBar2::haplotype)
+                cout << solType[isLimited] << cost << " log10like: " << ToulBar2::haplotype->Cost2LogProb(cost) / Log(10.) << " loglike: " << ToulBar2::haplotype->Cost2LogProb(cost) << " in " << nbBacktracks << " backtracks and " << nbNodes << " nodes" << ((ToulBar2::DEE) ? (" ( " + to_string(wcsp->getNbDEE()) + " removals by DEE)") : "") << " and " << cpuTime() - ToulBar2::startCpuTime << " seconds." << endl;
+            else if (!ToulBar2::bayesian)
+                cout << solType[isLimited] << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(cost) << std::setprecision(DECIMAL_POINT) << " in " << nbBacktracks << " backtracks and " << nbNodes << " nodes" << ((ToulBar2::DEE) ? (" ( " + to_string(wcsp->getNbDEE()) + " removals by DEE)") : "") << " and " << cpuTime() - ToulBar2::startCpuTime << " seconds." << endl;
+            else
+                cout << solType[isLimited] << cost << " energy: " << -(wcsp->Cost2LogProb(cost) + ToulBar2::markov_log) << std::scientific << " prob: " << wcsp->Cost2Prob(cost) * Exp(ToulBar2::markov_log) << std::fixed << " in " << nbBacktracks << " backtracks and " << nbNodes << " nodes" << ((ToulBar2::DEE) ? (" ( " + to_string(wcsp->getNbDEE()) + " removals by DEE)") : "") << " and " << cpuTime() - ToulBar2::startCpuTime << " seconds." << endl;
+        } else {
+            if (ToulBar2::xmlflag) {
+                ((WCSP*)wcsp)->solution_XML(true);
+            } else if (ToulBar2::uai && !ToulBar2::isZ) {
+                if (isLimited == 2)
+                    cout << "(" << ToulBar2::deltaUbS << "," << std::scientific << ToulBar2::deltaUbRelativeGap << std::fixed << ")-";
+                cout << solType[isLimited] << cost << " energy: " << -(wcsp->Cost2LogProb(cost) + ToulBar2::markov_log) << std::scientific << " prob: " << wcsp->Cost2Prob(cost) * Exp(ToulBar2::markov_log) << std::fixed << " in " << nbBacktracks << " backtracks and " << nbNodes << " nodes" << ((ToulBar2::DEE) ? (" ( " + to_string(wcsp->getNbDEE()) + " removals by DEE)") : "") << " and " << cpuTime() - ToulBar2::startCpuTime << " seconds." << endl;
+            } else if (ToulBar2::maxsateval && !isLimited) {
+                cout << "o " << cost << endl;
+                cout << "s OPTIMUM FOUND" << endl;
+                ((WCSP*)wcsp)->printSolutionMaxSAT(cout);
+            }
+        }
+    } else {
+        if (ToulBar2::verbose >= 0)
+            cout << "No solution" << ((!isLimited) ? "" : " found") << " in " << nbBacktracks << " backtracks and " << nbNodes << " nodes" << ((ToulBar2::DEE) ? (" ( " + to_string(wcsp->getNbDEE()) + " removals by DEE)") : "") << " and " << cpuTime() - ToulBar2::startCpuTime << " seconds." << endl;
+        if (ToulBar2::maxsateval && !isLimited) {
+            cout << "o " << cost << endl;
+            cout << "s UNSATISFIABLE" << endl;
+        }
+    }
+}
+
+void Solver::approximate(BigInteger& nbsol, TreeDecomposition* td)
+{
+    BigInteger cartesianProduct = 1;
+    wcsp->cartProd(cartesianProduct);
+    for (map<int, BigInteger>::iterator it = ubSol.begin(); it != ubSol.end(); ++it) {
+        (it->second) *= cartesianProduct;
+    }
+    BigInteger nbSolInter = nbsol * cartesianProduct;
+    BigInteger subCartesianProduct = 1.;
+    for (int i = 0; i < td->getNbOfClusters(); i++) {
+        BigInteger ssCartProd = 1.;
+        if ((td->getCluster(i)->getParent() != NULL) && (td->getCluster(i)->getParent()->getParent() == NULL)) {
+            /* on considere seulement les clusters fils de la racine */
+            Cluster* c = td->getCluster(i);
+            c->cartProduct(ssCartProd);
+            subCartesianProduct *= ssCartProd;
+            (ubSol.find(c->getPart())->second) /= ssCartProd;
+        }
+    }
+    nbsol = (nbSolInter / subCartesianProduct);
+    if (nbsol < 1)
+        nbsol = 1;
+    // the minimum upper bound of solutions number
+    cout << "\nCartesian product \t\t   :    " << std::fixed << std::setprecision(0) << cartesianProduct << std::setprecision(DECIMAL_POINT) << endl;
+    BigInteger minUBsol = cartesianProduct;
+    for (map<int, BigInteger>::iterator it = ubSol.begin(); it != ubSol.end(); ++it) {
+        if (it->second < minUBsol)
+            minUBsol = it->second;
+    }
+    cout << "Upper bound of number of solutions : <= " << std::fixed << std::setprecision(0) << minUBsol << std::setprecision(DECIMAL_POINT) << endl;
+}
+
+// Maximize h' W h where W is expressed by all its
+// non-zero half squared matrix costs (can be positive or negative, with posx <= posy)
+// notice that costs for posx <> posy are multiplied by 2 by this method
+
+// convention: h = 1 <=> x = 0 and h = -1 <=> x = 1
+
+// warning! does not allow infinite costs (no forbidden assignments)
+
+// returns true if at least one solution has been found (array sol being filled with the best solution)
+bool Solver::solve_symmax2sat(int n, int m, int* posx, int* posy, double* cost, int* sol)
+{
+    if (n == 0 || m == 0)
+        return true;
+    ToulBar2::setvalue = NULL;
+
+    // create Boolean variables
+    for (int i = 0; i < n; i++) {
+        wcsp->makeEnumeratedVariable(to_string(i), 0, 1);
+    }
+
+    vector<Cost> unaryCosts0(n, 0);
+    vector<Cost> unaryCosts1(n, 0);
+
+    // find total cost
+    Double sumcost = 0.;
+    for (int e = 0; e < m; e++) {
+        sumcost += 2. * abs(cost[e]);
+    }
+    Double multiplier = ((Double)MAX_COST) / sumcost;
+    multiplier /= MEDIUM_COST;
+
+    // create weighted binary clauses
+    for (int e = 0; e < m; e++) {
+        if (posx[e] != posy[e]) {
+            vector<Cost> costs(4, 0);
+            if (cost[e] > 0) {
+                costs[1] = (Cost)(multiplier * 2. * cost[e]);
+                costs[2] = costs[1];
+            } else {
+                costs[0] = (Cost)(multiplier * -2. * cost[e]);
+                costs[3] = costs[0];
+            }
+            wcsp->postBinaryConstraint(posx[e] - 1, posy[e] - 1, costs);
+        } else {
+            if (cost[e] > 0) {
+                unaryCosts1[posx[e] - 1] += (Cost)(multiplier * cost[e]);
+            } else {
+                unaryCosts0[posx[e] - 1] += (Cost)(multiplier * -cost[e]);
+            }
+        }
+    }
+
+    // create weighted unary clauses
+    for (int i = 0; i < n; i++) {
+        if (unaryCosts0[i] > 0 || unaryCosts1[i] > 0) {
+            vector<Cost> costs(2, 0);
+            costs[0] = unaryCosts0[i];
+            costs[1] = unaryCosts1[i];
+            wcsp->postUnary(i, costs);
+        }
+    }
+    wcsp->sortConstraints();
+
+    if (ToulBar2::verbose >= 0)
+        cout << "Read " << n << " variables, with " << 2 << " values at most, and " << m << " cost functions." << endl;
+    // dump_wcsp("mydebug.wcsp", true);
+
+    // solve using BTD exploiting a lexicographic elimination order with a path decomposition
+
+    ToulBar2::btdMode = 3;
+    ToulBar2::minProperVarSize = 4;
+    ToulBar2::elimDegree_preprocessing = 12; // Prefer variable elimination than search (do not impose a limit on maximum separator size)
+
+    bool res = solve();
+    if (res) {
+        vector<Value> solution = getSolution();
+        assert(solution.size() == getWCSP()->numberOfVariables());
+        for (unsigned int i = 0; i < getWCSP()->numberOfVariables(); i++) {
+            if (solution[i] == 0) {
+                sol[i] = 1;
+            } else {
+                sol[i] = -1;
+            }
+        }
+    }
+    return res;
+}
+
+/// \brief interface for Fortran call
+/// \code
+/// integer     ,dimension(sW),intent(out)        :: H
+/// integer     ,dimension(:)    ,allocatable       :: posx,posy ! On exit dimension value is m
+/// real(kind=dp),dimension(:)   ,allocatable   :: cost
+/// logical :: ok
+/// allocate (posx(sW*sW),posy(sW*sW),cost(sW*sW))
+/// ret = solvesymmax2sat_(n,m,posx,posy,cost,H)
+/// ok = ( ret /= 0 )
+/// deallocate(posx,posy,cost)
+/// \endcode
+int solvesymmax2sat_(int* n, int* m, int* posx, int* posy, double* cost, int* sol)
+{
+    return solveSymMax2SAT(*n, *m, posx, posy, cost, sol);
+}
+
+int solveSymMax2SAT(int n, int m, int* posx, int* posy, double* cost, int* sol)
+{
+    // select verbosity during search
+    ToulBar2::verbose = -1;
+
+    initCosts();
+    Solver solver(MAX_COST);
+
+    ToulBar2::startCpuTime = cpuTime();
+    return solver.solve_symmax2sat(n, m, posx, posy, cost, sol);
+}
+
+/* Hybrid Best-First/Depth-First Search */
+
+void Solver::CPStore::addChoicePoint(ChoicePointOp op, int varIndex, Value value, bool reverse)
+{
+    if (ToulBar2::verbose >= 1)
+        cout << "add choice point " << CPOperation[op] << ((reverse) ? "*" : "") << " (" << varIndex << ", " << value << ") at position " << index << endl;
+    if ((size_t)index >= size()) {
+        assert((size_t)index == size());
+        push_back(ChoicePoint(op, varIndex, value, reverse));
+    } else {
+        operator[](index) = ChoicePoint(op, varIndex, value, reverse);
+    }
+    index = index + 1;
+}
+
+void Solver::addChoicePoint(ChoicePointOp op, int varIndex, Value value, bool reverse)
+{
+    TreeDecomposition* td = wcsp->getTreeDec();
+    if (td) {
+        if (ToulBar2::verbose >= 1)
+            cout << "[C" << td->getCurrentCluster()->getId() << "] ";
+        CPStore* cp_ = td->getCurrentCluster()->cp;
+        CPStore::size_type before = cp_->capacity();
+        cp_->addChoicePoint(op, varIndex, value, reverse);
+        CPStore::size_type after = cp_->capacity();
+        if (ToulBar2::verbose >= 0 && after > before && after > (1 << STORE_SIZE))
+            cout << "c " << after * sizeof(ChoicePointOp) + td->getCurrentCluster()->open->capacity() * sizeof(OpenNode) << " Bytes allocated for hybrid best-first search open nodes at cluster " << td->getCurrentCluster()->getId() << "." << endl;
+    } else {
+        CPStore::size_type before = cp->capacity();
+        cp->addChoicePoint(op, varIndex, value, reverse);
+        CPStore::size_type after = cp->capacity();
+        if (ToulBar2::verbose >= 0 && after > before && after > (1 << STORE_SIZE))
+            cout << "c " << after * sizeof(ChoicePointOp) + open->capacity() * sizeof(OpenNode) << " Bytes allocated for hybrid best-first search open nodes." << endl;
+    }
+}
+
+void Solver::addOpenNode(CPStore& cp, OpenList& open, Cost lb, Cost delta)
+{
+    ptrdiff_t idx = cp.index;
+    if (ToulBar2::verbose >= 1) {
+        if (wcsp->getTreeDec())
+            cout << "[C" << wcsp->getTreeDec()->getCurrentCluster()->getId() << "] ";
+        cout << "add open node " << lb << " + " << delta << " (" << cp.start << ", " << idx << ")" << endl;
+    }
+    assert(cp.start <= idx);
+    open.push(OpenNode(MAX(MIN_COST, lb + delta), cp.start, idx));
+
+    cp.stop = max(cp.stop, idx);
+}
+
+//// BUG: not compatible with boosting search by variable elimination (default dummy assignment may be incompatible with restored choice point)
+//void Solver::restore(CPStore &cp, OpenNode nd)
+//{
+//    if (ToulBar2::verbose >= 1) {
+//        if (wcsp->getTreeDec()) cout << "[C" << wcsp->getTreeDec()->getCurrentCluster()->getId() << "] ";
+//        cout << "restore open node " << nd.getCost(((wcsp->getTreeDec())?wcsp->getTreeDec()->getCurrentCluster()->getCurrentDelta():MIN_COST)) << " (" << nd.first << ", " << nd.last << ")" << endl;
+//    }
+//    for (ptrdiff_t idx = nd.first; idx < nd.last; ++idx) {
+//        assert(idx < cp.size());
+//        if (ToulBar2::verbose >= 1) cout << "retrieve choice point " << CPOperation[cp[idx].op] << ((cp[idx].reverse)?"*":"") << " (" << wcsp->getName(cp[idx].varIndex) << ", " << cp[idx].value << ") at position " << idx  << endl;
+//        if (ToulBar2::verbose >= 1) cout << *((WCSP *) wcsp)->getVar(cp[idx].varIndex) << endl;
+//        assert(!wcsp->getTreeDec() || wcsp->getTreeDec()->getCurrentCluster()->isVar(cp[idx].varIndex));
+//        switch (cp[idx].op) {
+//        case CP_ASSIGN:
+//            if (cp[idx].reverse && idx < nd.last-1) remove(cp[idx].varIndex, cp[idx].value);
+//            else assign(cp[idx].varIndex, cp[idx].value);
+//            break;
+//        case CP_REMOVE:
+//            if (cp[idx].reverse && idx < nd.last-1) assign(cp[idx].varIndex, cp[idx].value);
+//            else remove(cp[idx].varIndex, cp[idx].value);
+//            break;
+//        case CP_INCREASE:
+//            if (cp[idx].reverse && idx < nd.last-1) decrease(cp[idx].varIndex, cp[idx].value - 1);
+//            else increase(cp[idx].varIndex, cp[idx].value);
+//            break;
+//        case CP_DECREASE:
+//            if (cp[idx].reverse && idx < nd.last-1) increase(cp[idx].varIndex, cp[idx].value + 1);
+//            else decrease(cp[idx].varIndex, cp[idx].value);
+//            break;
+//        default:
+//            cerr << "unknown choice point for hybrid best first search!!!" << endl;
+//            exit(EXIT_FAILURE);
+//        }
+//    }
+//}
+
+void Solver::restore(CPStore& cp, OpenNode nd)
+{
+    if (ToulBar2::verbose >= 1) {
+        if (wcsp->getTreeDec()) {
+            cout << "[C" << wcsp->getTreeDec()->getCurrentCluster()->getId() << "] restore open node " << nd.getCost(wcsp->getTreeDec()->getCurrentCluster()->getCurrentDelta()) << " (" << nd.first << ", " << nd.last << ")" << endl;
+        } else {
+            cout << "restore open node " << nd.getCost(MIN_COST) << " (" << nd.first << ", " << nd.last << ")" << endl;
+        }
+    }
+    assert(nd.last >= nd.first);
+    nbRecomputationNodes += nd.last - nd.first;
+
+    ptrdiff_t maxsize = nd.last - nd.first;
+    int assignLS[maxsize];
+    Value valueLS[maxsize];
+    unsigned int size = 0;
+    for (ptrdiff_t idx = nd.first; idx < nd.last; ++idx) {
+        assert((size_t)idx < cp.size());
+        assert(!wcsp->getTreeDec() || wcsp->getTreeDec()->getCurrentCluster()->isVar(cp[idx].varIndex));
+        if ((cp[idx].op == CP_ASSIGN && !(cp[idx].reverse && idx < nd.last - 1)) || (cp[idx].op == CP_REMOVE && cp[idx].reverse && idx < nd.last - 1)) {
+            assignLS[size] = cp[idx].varIndex;
+            valueLS[size] = cp[idx].value;
+            size++;
+        }
+    }
+    wcsp->enforceUb();
+    wcsp->assignLS(assignLS, valueLS, size, false); // fast multiple assignments
+    for (ptrdiff_t idx = nd.first; idx < nd.last; ++idx) {
+        assert((size_t)idx < cp.size());
+        if (ToulBar2::verbose >= 1)
+            cout << "retrieve choice point " << CPOperation[cp[idx].op] << ((cp[idx].reverse) ? "*" : "") << " (" << wcsp->getName(cp[idx].varIndex) << ", " << cp[idx].value << ") at position " << idx << endl;
+        if (ToulBar2::verbose >= 1)
+            cout << *((WCSP*)wcsp)->getVar(cp[idx].varIndex) << endl;
+        nbNodes++;
+        switch (cp[idx].op) { //TODO: some operations (remove,increase,decrease) are useless because of all assigns previously done
+        case CP_ASSIGN: {
+            if (cp[idx].reverse && idx < nd.last - 1) {
+                wcsp->remove(cp[idx].varIndex, cp[idx].value);
+                addChoicePoint(CP_REMOVE, cp[idx].varIndex, cp[idx].value, false);
+            } else
+                addChoicePoint(CP_ASSIGN, cp[idx].varIndex, cp[idx].value, false);
+            break;
+        }
+        case CP_REMOVE: {
+            if (cp[idx].reverse && idx < nd.last - 1) {
+                addChoicePoint(CP_ASSIGN, cp[idx].varIndex, cp[idx].value, false);
+            } else {
+                wcsp->remove(cp[idx].varIndex, cp[idx].value);
+                addChoicePoint(CP_REMOVE, cp[idx].varIndex, cp[idx].value, false);
+            }
+            break;
+        }
+        case CP_INCREASE: {
+            if (cp[idx].reverse && idx < nd.last - 1) {
+                wcsp->decrease(cp[idx].varIndex, cp[idx].value - 1);
+                addChoicePoint(CP_DECREASE, cp[idx].varIndex, cp[idx].value - 1, false);
+            } else {
+                wcsp->increase(cp[idx].varIndex, cp[idx].value);
+                addChoicePoint(CP_INCREASE, cp[idx].varIndex, cp[idx].value, false);
+            }
+            break;
+        }
+        case CP_DECREASE: {
+            if (cp[idx].reverse && idx < nd.last - 1) {
+                wcsp->increase(cp[idx].varIndex, cp[idx].value + 1);
+                addChoicePoint(CP_INCREASE, cp[idx].varIndex, cp[idx].value + 1, false);
+            } else {
+                wcsp->decrease(cp[idx].varIndex, cp[idx].value);
+                addChoicePoint(CP_DECREASE, cp[idx].varIndex, cp[idx].value, false);
+            }
+            break;
+        }
+        default: {
+            cerr << "unknown choice point for hybrid best first search!!!" << endl;
+            exit(EXIT_FAILURE);
+        }
+        }
+    }
+    wcsp->propagate();
+    //if (wcsp->getLb() != nd.getCost(((wcsp->getTreeDec())?wcsp->getTreeDec()->getCurrentCluster()->getCurrentDelta():MIN_COST))) cout << "***** node cost: " << nd.getCost(((wcsp->getTreeDec())?wcsp->getTreeDec()->getCurrentCluster()->getCurrentDelta():MIN_COST)) << " but lb: " << wcsp->getLb() << endl;
+}
+
+Solver::SolutionTrie::TrieNode::TrieNode(size_t w)
+{
+    sons.resize(w, NULL);
+}
+
+Solver::SolutionTrie::TrieNode::~TrieNode()
+{
+    for (size_t i = 0; i < sons.size(); i++)
+        delete sons[i];
+}
+
+vector<size_t> Solver::SolutionTrie::TrieNode::widths;
+
+bool Solver::SolutionTrie::TrieNode::present(Value v)
+{
+    return (sons[v] != NULL);
+}
+
+vector<vector<Solver::SolutionTrie::TrieNode*>> Solver::SolutionTrie::TrieNode::insertNode(Value v, unsigned int pos, vector<vector<TrieNode*>> nodesAtPos)
+{
+    sons[v] = new TrieNode(widths[pos + 1]);
+    nodesAtPos[pos + 1].push_back(sons[v]);
+    return nodesAtPos;
+}
+
+vector<vector<Solver::SolutionTrie::TrieNode*>> Solver::SolutionTrie::TrieNode::insertSolution(const vector<Value>& sol, unsigned int pos, vector<vector<TrieNode*>> nodesAtPos)
+{
+    if (pos < sol.size()) {
+        if (!present(sol[pos])) {
+            nodesAtPos = insertNode(sol[pos], pos, nodesAtPos);
+        }
+        assert((unsigned)sol[pos] < sons.size());
+        return sons[sol[pos]]->insertSolution(sol, pos + 1, nodesAtPos);
+    } else {
+        return nodesAtPos;
+    }
+}
+
+void Solver::SolutionTrie::init(const vector<Variable*>& vv)
+{
+    for (auto var : vv) {
+        Solver::SolutionTrie::TrieNode::widths.push_back(((EnumeratedVariable*)var)->getDomainInitSize());
+    }
+    Solver::SolutionTrie::TrieNode::widths.push_back(0); // for leaf nodes
+    if (!vv.empty()) {
+        root.sons.resize(Solver::SolutionTrie::TrieNode::widths[0], NULL);
+        nodesAtPos.resize(vv.size() + 1);
+        nodesAtPos[0].push_back(&root);
+    }
+}
+void Solver::SolutionTrie::TrieNode::printTrie(vector<Value>& sol)
+{
+    if (sons.size() == 0) {
+        cout << sol << endl;
+    } else {
+        for (size_t i = 0; i < sons.size(); i++)
+            if (sons[i] != NULL) {
+                sol.push_back(i);
+                sons[i]->printTrie(sol);
+                sol.pop_back();
+            }
+    }
+}
+
+size_t Solver::SolutionTrie::TrieNode::nbSolutions = 0;
+
+void Solver::SolutionTrie::insertSolution(const vector<Value>& sol)
+{
+    nodesAtPos = root.insertSolution(sol, 0, nodesAtPos);
+}
+
+void Solver::SolutionTrie::printTrie()
+{
+    vector<Value> sol;
+    root.printTrie(sol);
+}
+
+Mdd Solver::computeMDD(Solver::SolutionTrie* solTrie, Cost cost)
+{
+    //The SolutionTrie computes solution Prefix Tree, in divVariables order.
+    // To merge equivalent nodes, we need the suffix tree, so we reverse the variables order.
+    // variables
+    vector<Variable*> varReverse;
+    for (unsigned v = 0; v < wcsp->getDivVariables().size(); v++) {
+        varReverse.push_back(wcsp->getDivVariables()[wcsp->getDivVariables().size() - v - 1]);
+    }
+    int nLayers = varReverse.size();
+    Mdd mdd(nLayers);
+    vector<int> layerWidth;
+    layerWidth.push_back(1);
+    //solTrie
+    vector<vector<Solver::SolutionTrie::TrieNode*>> nodesAtLayer;
+
+    for (unsigned pos = 0; pos < solTrie->getNodesAtPos().size(); pos++) {
+        nodesAtLayer.push_back(solTrie->getNodesAtPos()[solTrie->getNodesAtPos().size() - pos - 1]);
+    }
+    map<vector<int>, int> DistCountsA;
+    vector<int> initCount(nodesAtLayer[0].size(), 0);
+    DistCountsA[initCount] = 0;
+    map<vector<int>, int> DistCountsB;
+    map<vector<int>, int>& prevDistCounts = DistCountsA;
+    map<vector<int>, int>& nextDistCounts = DistCountsB;
+
+    //for relaxation
+    vector<vector<Cost>> oldArcs; // for arcs redirection during relaxation
+    vector<vector<Cost>> alphap(nLayers + 1); // if divRelax=3, alphap[layer][node] = smallest path weight from root to node, with unary costs.
+    alphap[0].push_back(0); // alphap at root = 0
+
+    for (int layer = 0; layer < nLayers; layer++) { // layer = arcs
+        EnumeratedVariable* x = (EnumeratedVariable*)varReverse[layer];
+
+        mdd[layer].resize(prevDistCounts.size());
+        for (unsigned source = 0; source < prevDistCounts.size(); source++) {
+            mdd[layer][source].resize(ToulBar2::divWidth);
+            for (unsigned target = 0; target < ToulBar2::divWidth; target++) {
+                mdd[layer][source][target].resize(x->getDomainInitSize(), wcsp->getUb());
+            }
+        }
+
+        unsigned source;
+        unsigned target;
+        Cost toPay;
+        for (auto const& nodeState : prevDistCounts) {
+            source = nodeState.second;
+            for (unsigned val = 0; val < x->getDomainInitSize(); val++) {
+                vector<int> nextCount(nodesAtLayer[layer + 1].size(), -1);
+                for (unsigned node_index = 0; node_index < nodesAtLayer[layer + 1].size(); node_index++) {
+                    auto node = nodesAtLayer[layer + 1][node_index];
+                    for (unsigned sol = 0; sol < node->sons.size(); sol++) { // node <---sol----nodep
+                        auto nodep = node->sons[sol];
+                        if (nodep != NULL) {
+                            auto nodep_it = find(nodesAtLayer[layer].begin(), nodesAtLayer[layer].end(), nodep);
+                            unsigned nodep_index = distance(nodesAtLayer[layer].begin(), nodep_it);
+                            assert(nodep_index < nodesAtLayer[layer].size());
+
+                            if (nextCount[node_index] == -1) {
+                                nextCount[node_index] = nodeState.first[nodep_index] + (val != sol);
+                            } else {
+                                nextCount[node_index] = min(nextCount[node_index], nodeState.first[nodep_index] + (val != sol));
+                            }
+                        }
+                    }
+                    nextCount[node_index] = min((unsigned int)nextCount[node_index], ToulBar2::divBound);
+                }
+                //merge nodes that won't lead to a satisfying solution:
+                bool sat = true;
+                for (int count : nextCount) {
+                    if (count < (int)ToulBar2::divBound + layer - nLayers) {
+                        sat = false;
+                        break;
+                    }
+                }
+                if (!sat)
+                    nextCount.resize(nextCount.size(), 0);
+                if (layer != nLayers - 1) {
+                    toPay = MIN_COST;
+                    map<vector<int>, int>::iterator it;
+                    std::tie(it, std::ignore) = nextDistCounts.insert(pair<vector<int>, int>(nextCount, nextDistCounts.size()));
+                    target = (*it).second;
+                } else {
+                    toPay = MIN_COST;
+                    target = 0;
+                    assert(layer + 1 == nLayers);
+                    for (int count : nextCount) {
+                        if (count < (int)ToulBar2::divBound) {
+                            toPay = cost;
+                            break;
+                        }
+                    }
+                }
+                if (target < mdd[layer][source].size()) {
+                    mdd[layer][source][target][val] = toPay;
+                } else {
+                    vector<Cost> newTarget(x->getDomainInitSize(), wcsp->getUb());
+                    // when a new target appears in the mdd, we need to add all arcs from ALL sources!!
+                    for (unsigned s = 0; s < mdd[layer].size(); s++) {
+                        mdd[layer][s].push_back(newTarget);
+                    }
+                    mdd[layer][source][target][val] = toPay;
+                }
+            }
+        }
+        unsigned nTargets = nextDistCounts.size();
+        if (nTargets > ToulBar2::divWidth) {
+            // select nodes for merging
+            int n_merge = nTargets - ToulBar2::divWidth + 1;
+            vector<int> to_merge(nextDistCounts.size(), -1);
+            iota(to_merge.begin(), to_merge.end(), 0);
+            if (ToulBar2::divRelax == 0) {
+                for (int i = 0; i < n_merge; ++i) {
+                    int j = myrand() % (nextDistCounts.size() - i);
+                    std::swap(to_merge[i], to_merge[i + j]);
+                }
+            } else if (ToulBar2::divRelax == 1) {
+                vector<int> stateDiv(nextDistCounts.size());
+                for (const auto& node : nextDistCounts) {
+                    stateDiv[node.second] = accumulate(node.first.begin(), node.first.end(), 0);
+                }
+                auto comparator = [stateDiv](int a, int b) { return stateDiv[a] > stateDiv[b]; };
+                std::sort(to_merge.begin(), to_merge.end(), comparator);
+            } else if (ToulBar2::divRelax == 2) {
+                vector<int> stateDiv(nextDistCounts.size());
+                for (const auto& node : nextDistCounts) {
+                    stateDiv[node.second] = accumulate(node.first.begin(), node.first.end(), 0);
+                }
+                auto comparator = [stateDiv](int a, int b) { return stateDiv[a] < stateDiv[b]; };
+                std::sort(to_merge.begin(), to_merge.end(), comparator);
+            } else if (ToulBar2::divRelax == 3) {
+                vector<Cost> alphaptmp(nTargets, wcsp->getUb());
+                for (unsigned source = 0; source < mdd[layer].size(); source++) {
+                    for (unsigned target = 0; target < mdd[layer][source].size(); target++) {
+                        for (unsigned val = 0; val < x->getDomainInitSize(); val++) {
+                            alphaptmp[target] = min(alphaptmp[target], alphap[layer][source] + mdd[layer][source][target][val] + x->getCost(x->toValue(val)));
+                        }
+                    }
+                }
+                auto comparator = [alphaptmp](int a, int b) { return alphaptmp[a] > alphaptmp[b]; };
+                std::sort(to_merge.begin(), to_merge.end(), comparator);
+            } else {
+                cerr << "Error: no such relaxing method: " << ToulBar2::divRelax;
+            }
+
+            to_merge.resize(n_merge);
+
+            //Merging nodes:TODO
+            //Computing new state for merged nodes
+            vector<int> newCount(nodesAtLayer[layer + 1].size(), -1);
+
+            vector<int> newTarget(nextDistCounts.size(), -1); //vector with new state nodes ids
+            for (int state_index : to_merge) {
+                auto state_it = std::find_if(nextDistCounts.begin(), nextDistCounts.end(), [state_index](const pair<vector<int>, int>& mo) { return mo.second == state_index; });
+                assert(state_it != nextDistCounts.end());
+                for (unsigned nodeid = 0; nodeid < nodesAtLayer[layer + 1].size(); nodeid++) {
+                    if (newCount[nodeid] == -1) {
+                        newCount[nodeid] = state_it->first[nodeid];
+                    } else {
+                        newCount[nodeid] = max(newCount[nodeid], state_it->first[nodeid]);
+                        // we are allowing more solutions - we don't want to remove any solution (!! relaxation)
+                        // exact mdds for each single solution are required
+                    }
+                }
+                nextDistCounts.erase(state_it->first);
+            }
+            //The nodes need to be renumbered - we want nodeids = 0, 1 , ... , divWidth
+            map<vector<int>, int>::iterator it;
+            std::tie(it, std::ignore) = nextDistCounts.insert(pair<vector<int>, int>(newCount, to_merge[0]));
+            int newNode = (*it).second;
+            unsigned nodeid = 0;
+            for (auto state : nextDistCounts) {
+                if (state.second == newNode) {
+                    newTarget[newNode] = nodeid;
+                    for (auto node : to_merge) {
+                        newTarget[node] = nodeid;
+                    }
+                } else {
+                    newTarget[state.second] = nodeid;
+                }
+                nextDistCounts[state.first] = nodeid;
+                nodeid++;
+            }
+            //redirecting arcs in mdd[layer] from each source to new targets
+            for (unsigned source = 0; source < mdd[layer].size(); source++) {
+                oldArcs.clear();
+                oldArcs = mdd[layer][source];
+                mdd[layer][source].resize(nodeid);
+                for (unsigned target = 0; target < nodeid; target++) {
+                    mdd[layer][source][target].resize(x->getDomainInitSize());
+                    for (unsigned val = 0; val < x->getDomainInitSize(); val++) {
+                        mdd[layer][source][target][val] = wcsp->getUb(); // erase all arcs from source
+                    }
+                }
+                for (unsigned oldTarget = 0; oldTarget < oldArcs.size(); oldTarget++) {
+                    for (unsigned val = 0; val < x->getDomainInitSize(); val++) {
+                        mdd[layer][source][newTarget[oldTarget]][val] = min(mdd[layer][source][newTarget[oldTarget]][val], oldArcs[oldTarget][val]);
+                    }
+                }
+            }
+        }
+        if (ToulBar2::divWidth > 0 && ToulBar2::divRelax == 3 && layer != nLayers - 1) {
+            //Computing alphap[layer+1]
+            alphap[layer + 1].resize(ToulBar2::divWidth, wcsp->getUb());
+            for (unsigned source = 0; source < mdd[layer].size(); source++) {
+                for (unsigned target = 0; target < mdd[layer][source].size(); target++) {
+                    for (unsigned val = 0; val < x->getDomainInitSize(); val++) {
+                        alphap[layer + 1][target] = min(alphap[layer + 1][target], alphap[layer][source] + mdd[layer][source][target][val] + x->getCost(x->toValue(val)));
+                    }
+                }
+            }
+        }
+
+        layerWidth.push_back((layer != nLayers - 1) ? nextDistCounts.size() : 1);
+        prevDistCounts.clear();
+        swap(prevDistCounts, nextDistCounts);
+    }
+    return mdd;
+}
+
+std::ostream& Solver::printLayers(std::ostream& os, Mdd mdd)
+{
+
+    os << "digraph \"wregular\" {" << endl;
+    os << "\tgraph [hierarchic=1];" << endl;
+    // Draw vertices
+    int nodeShift = 0;
+    for (unsigned layer = 0; layer < mdd.size(); layer++) {
+        for (unsigned node = 0; node < mdd[layer].size(); node++) {
+            os << "\t" << nodeShift + node << " [name=\"" << layer << "," << node << "\"];" << endl;
+        }
+        nodeShift += mdd[layer].size();
+    }
+    // and Arcs
+    nodeShift = 0;
+    for (unsigned layer = 0; layer < mdd.size(); layer++) {
+        for (unsigned source = 0; source < mdd[layer].size(); source++) {
+            for (unsigned target = 0; target < mdd[layer][source].size(); target++) {
+                for (unsigned val = 0; val < mdd[layer][source][target].size(); val++) {
+                    if (mdd[layer][source][target][val] < wcsp->getUb()) {
+                        os << "\t" << nodeShift + source << " -> " << nodeShift + mdd[layer].size() + target << " [label=\"";
+                        os << val << "," << mdd[layer][source][target][val] << "\"];" << endl;
+                    }
+                }
+            }
+        }
+        nodeShift += mdd[layer].size();
+    }
+    os << "}";
+    return os;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/search/tb2solver.hpp b/code/include/tb2/search/tb2solver.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..cd6cd75b187ff1f10361d8ba300cd8aeaf544d7b
--- /dev/null
+++ b/code/include/tb2/search/tb2solver.hpp
@@ -0,0 +1,348 @@
+/** \file tb2solver.hpp
+ *  \brief Generic solver.
+ *
+ */
+
+#ifndef TB2SOLVER_HPP_
+#define TB2SOLVER_HPP_
+
+#include "toulbar2lib.hpp"
+#include "utils/tb2store.hpp"
+
+template <class T>
+class DLink;
+template <class T>
+class BTList;
+
+class NeighborhoodStructure;
+class RandomNeighborhoodChoice;
+class ClustersNeighborhoodStructure;
+class RandomClusterChoice;
+class ParallelRandomClusterChoice;
+
+const double epsilon = 1e-6; // 1./100001.
+
+class Solver : public WeightedCSPSolver {
+public:
+    class OpenNode {
+        Cost cost; // global lower bound associated to the open node
+    public:
+        ptrdiff_t first; // first position in the list of choice points corresponding to a branch in order to reconstruct the open node
+        ptrdiff_t last; // last position (excluded) in the list of choice points corresponding to a branch in order to reconstruct the open node
+
+        OpenNode(Cost cost_, ptrdiff_t first_, ptrdiff_t last_)
+            : cost(cost_)
+            , first(first_)
+            , last(last_)
+        {
+        }
+        bool operator<(const OpenNode& right) const { return (cost > right.cost) || (cost == right.cost && ((last - first) < (right.last - right.first) || ((last - first) == (right.last - right.first) && last >= right.last))); } // reverse order to get the open node with first, the smallest lower bound, and next, the deepest depth, and next, the oldest time-stamp
+
+        Cost getCost(Cost delta = MIN_COST) const { return MAX(MIN_COST, cost - delta); }
+    };
+
+    class CPStore;
+    class OpenList FINAL : public priority_queue<OpenNode> {
+        Cost clb; // current cluster lower bound built from closed nodes (independent of any soft arc consistency cost moves)
+        Cost cub; // current cluster upper bound (independent of any soft arc consistency cost moves)
+    public:
+        OpenList(Cost lb, Cost ub)
+            : clb(lb)
+            , cub(ub)
+        {
+        }
+        OpenList()
+            : clb(MAX_COST)
+            , cub(MAX_COST)
+        {
+        } /// \warning use also this method to clear an open list
+
+        bool finished() const
+        {
+            assert(clb <= cub);
+            return (empty() || CUT(top().getCost(), clb));
+        }
+        Cost getLb(Cost delta = MIN_COST) const { return MIN(MAX(MIN_COST, clb - delta), (empty() ? MAX_COST : top().getCost(delta))); }
+
+        Cost getClosedNodesLb(Cost delta = MIN_COST) const { return MAX(MIN_COST, clb - delta); }
+        void setClosedNodesLb(Cost lb, Cost delta = MIN_COST)
+        {
+            clb = MAX(MIN_COST, lb + delta);
+            assert(clb <= cub);
+        }
+        void updateClosedNodesLb(Cost lb, Cost delta = MIN_COST) { clb = MIN(clb, MAX(MIN_COST, lb + delta)); }
+
+        Cost getUb(Cost delta = MIN_COST) const { return MAX(MIN_COST, cub - delta); }
+        void setUb(Cost ub, Cost delta = MIN_COST) { cub = MAX(MIN_COST, ub + delta); }
+        void updateUb(Cost ub, Cost delta = MIN_COST)
+        {
+            Cost tmpub = MAX(MIN_COST, ub + delta);
+            cub = MIN(cub, tmpub);
+            clb = MIN(clb, tmpub);
+        }
+
+        size_type capacity() const { return c.capacity(); }
+        priority_queue::container_type::iterator begin() { return c.begin(); }
+        priority_queue::container_type::iterator end() { return c.end(); }
+    };
+
+    class SolutionTrie {
+    public:
+        class TrieNode {
+        public:
+            TrieNode(size_t w = 0);
+            ~TrieNode();
+            vector<vector<TrieNode*>> insertSolution(const vector<Value>& sol, unsigned int pos, vector<vector<TrieNode*>> nodesAtPos);
+            vector<TrieNode*> sons;
+            vector<vector<TrieNode*>> insertNode(Value v, unsigned int pos, vector<vector<TrieNode*>> nodesAtPos);
+            bool present(Value v);
+            void printTrie(vector<Value>& sol);
+            static size_t nbSolutions;
+            static vector<size_t> widths;
+        };
+
+        SolutionTrie(){};
+        ~SolutionTrie(){};
+        void init(const vector<Variable*>& vv);
+        void insertSolution(const vector<Value>& sol);
+        void printTrie();
+        size_t getNbSolutions() { return root.nbSolutions; };
+        vector<vector<TrieNode*>> getNodesAtPos() { return nodesAtPos; };
+
+    private:
+        TrieNode root;
+        vector<vector<TrieNode*>> nodesAtPos;
+    };
+
+    Mdd computeMDD(SolutionTrie* solTrie, Cost cost);
+    ostream& printLayers(ostream& os, Mdd mdd);
+
+    typedef enum {
+        CP_ASSIGN = 0,
+        CP_REMOVE = 1,
+        CP_INCREASE = 2,
+        CP_DECREASE = 3,
+        CP_REMOVE_RANGE = 4,
+        CP_MAX
+    } ChoicePointOp;
+    static const string CPOperation[CP_MAX]; // for pretty print
+
+    struct ChoicePoint {
+        ChoicePointOp op; // choice point operation
+        int varIndex; // variable wcsp's index
+        Value value; // variable's value
+        bool reverse; // true if the choice point corresponds to the last right branch of an open node
+
+        ChoicePoint(ChoicePointOp op_, int var_, Value val_, bool rev_)
+            : op(op_)
+            , varIndex(var_)
+            , value(val_)
+            , reverse(rev_)
+        {
+        }
+    };
+
+    class CPStore FINAL : public vector<ChoicePoint> {
+    public:
+        ptrdiff_t start; // beginning of the current branch
+        ptrdiff_t stop; // deepest saved branch end (should be free at this position)
+        StoreCost index; // current branch depth (should be free at this position)
+
+        CPStore()
+            : start(0)
+            , stop(0)
+            , index(0)
+        {
+        }
+
+        void addChoicePoint(ChoicePointOp op, int varIndex, Value value, bool reverse);
+        void store()
+        {
+            start = stop;
+            index = start;
+        }
+    };
+
+    void addChoicePoint(ChoicePointOp op, int varIndex, Value value, bool reverse);
+    void addOpenNode(CPStore& cp, OpenList& open, Cost lb, Cost delta = MIN_COST); ///< \param delta cost moved out from the cluster by soft arc consistency
+    void restore(CPStore& cp, OpenNode node);
+
+protected:
+    friend class NeighborhoodStructure;
+    friend class RandomNeighborhoodChoice;
+    friend class ClustersNeighborhoodStructure;
+    friend class RandomClusterChoice;
+    friend class ParallelRandomClusterChoice;
+    friend class VACExtension;
+
+    Long nbNodes;
+    Long nbBacktracks;
+    Long nbBacktracksLimit;
+    WeightedCSP* wcsp;
+    DLink<Value>* allVars;
+    BTList<Value>* unassignedVars;
+    int lastConflictVar;
+    void* searchSize;
+
+    BigInteger nbSol;
+    Long nbSGoods; //number of #good which created
+    Long nbSGoodsUse; //number of #good which used
+    map<int, BigInteger> ubSol; // upper bound of solution number
+    double timeDeconnect; // time for the disconnection
+    int tailleSep;
+
+    CPStore* cp; // choice point cache for open nodes (except BTD)
+    OpenList* open; // list of open nodes (except BTD)
+    Long hbfsLimit; // limit on number of backtracks for hybrid search (except BTD)
+    Long nbHybrid;
+    Long nbHybridContinue;
+    Long nbHybridNew;
+    Long nbRecomputationNodes;
+
+    //only for pretty print of optimality gap information
+    Cost initialLowerBound;
+    Cost globalLowerBound;
+    Cost globalUpperBound;
+    int initialDepth;
+    void initGap(Cost newlb, Cost newub);
+    void showGap(Cost newlb, Cost newub);
+
+    Cost prevDivSolutionCost;
+    SolutionTrie solTrie;
+    // Heuristics and search methods
+    /// \warning hidden feature: do not branch on variable indexes from ToulBar2::nbDecisionVars to the last variable
+    void initVarHeuristic();
+    int getVarMinDomainDivMaxWeightedDegreeLastConflictRandomized();
+    int getVarMinDomainDivMaxWeightedDegreeLastConflict();
+    int getVarMinDomainDivMaxWeightedDegreeRandomized();
+    int getVarMinDomainDivMaxWeightedDegree();
+    int getVarMinDomainDivMaxDegreeLastConflictRandomized();
+    int getVarMinDomainDivMaxDegreeLastConflict();
+    int getVarMinDomainDivMaxDegreeRandomized();
+    int getVarMinDomainDivMaxDegree();
+    int getNextUnassignedVar();
+    int getMostUrgent();
+    void increase(int varIndex, Value value, bool reverse = false);
+    void decrease(int varIndex, Value value, bool reverse = false);
+    void assign(int varIndex, Value value, bool reverse = false);
+    void remove(int varIndex, Value value, bool reverse = false);
+    void remove(int varIndex, ValueCost* array, int first, int last, bool reverse = false);
+    void conflict() {}
+    void enforceUb();
+    void singletonConsistency();
+    void binaryChoicePoint(int xIndex, Value value, Cost lb = MIN_COST);
+    void binaryChoicePointLDS(int xIndex, Value value, int discrepancy);
+    void narySortedChoicePoint(int xIndex, Cost lb = MIN_COST);
+    void narySortedChoicePointLDS(int xIndex, int discrepancy);
+    Value postponeRule(int varIndex);
+    void scheduleOrPostpone(int varIndex);
+
+    int getVarMinDomainDivMaxWeightedDegreeLastConflictRandomized(Cluster* cluster);
+    int getVarMinDomainDivMaxWeightedDegreeLastConflict(Cluster* cluster);
+    int getVarMinDomainDivMaxWeightedDegreeRandomized(Cluster* cluster);
+    int getVarMinDomainDivMaxWeightedDegree(Cluster* cluster);
+    int getVarMinDomainDivMaxDegreeLastConflictRandomized(Cluster* cluster);
+    int getVarMinDomainDivMaxDegreeLastConflict(Cluster* cluster);
+    int getVarMinDomainDivMaxDegreeRandomized(Cluster* cluster);
+    int getVarMinDomainDivMaxDegree(Cluster* cluster);
+    int getNextUnassignedVar(Cluster* cluster);
+
+    pair<Cost, Cost> binaryChoicePoint(Cluster* cluster, Cost lbgood, Cost cub, int varIndex, Value value);
+    pair<Cost, Cost> recursiveSolve(Cluster* cluster, Cost lbgood, Cost cub);
+    pair<Cost, Cost> hybridSolve(Cluster* root, Cost clb, Cost cub);
+    pair<Cost, Cost> russianDollSearch(Cluster* c, Cost cub);
+
+    BigInteger binaryChoicePointSBTD(Cluster* cluster, int varIndex, Value value);
+    BigInteger sharpBTD(Cluster* cluster);
+    void approximate(BigInteger& nbsol, TreeDecomposition* td);
+
+public:
+    Solver(Cost initUpperBound);
+    ~Solver();
+
+    Cost read_wcsp(const char* fileName);
+    void read_random(int n, int m, vector<int>& p, int seed, bool forceSubModular = false, string globalname = "");
+
+    Long getNbNodes() const FINAL { return nbNodes; }
+    Long getNbBacktracks() const FINAL { return nbBacktracks; }
+    set<int> getUnassignedVars() const;
+    unsigned int numberOfUnassignedVariables() const; // faster than its WCSP linear-time counterpart, but it is valid only during search
+
+    virtual bool solve(bool first = true);
+
+    // internal methods called by solve, for advanced programmers only!!!
+    void beginSolve(Cost ub);
+    Cost preprocessing(Cost ub);
+    void recursiveSolve(Cost lb = MIN_COST);
+    void recursiveSolveLDS(int discrepancy);
+    pair<Cost, Cost> hybridSolve() { return hybridSolve(NULL, wcsp->getLb(), wcsp->getUb()); }
+    void endSolve(bool isSolution, Cost cost, bool isComplete);
+    // end of internal solve methods
+
+    Cost narycsp(string cmd, vector<Value>& solution);
+
+    bool solve_symmax2sat(int n, int m, int* posx, int* posy, double* cost, int* sol);
+
+    void dump_wcsp(const char* fileName, bool original = true, ProblemFormat format = WCSP_FORMAT);
+    void read_solution(const char* fileName, bool updateValueHeuristic = true);
+    void parse_solution(const char* certificate, bool updateValueHeuristic = true);
+
+    virtual void newSolution();
+    const vector<Value> getSolution() { return wcsp->getSolution(); }
+    Double getSolutionValue() const { return wcsp->getSolutionValue(); }
+    Cost getSolutionCost() const { return wcsp->getSolutionCost(); }
+    Cost getSolution(vector<Value>& solution) const
+    {
+        Cost cost = MAX_COST;
+        solution = wcsp->getSolution(&cost);
+        return cost;
+    }
+    vector<pair<Double, vector<Value>>> getSolutions() const { return wcsp->getSolutions(); }
+
+    friend void setvalue(int wcspId, int varIndex, Value value, void* solver);
+
+    WeightedCSP* getWCSP() FINAL { return wcsp; }
+};
+
+class SolverOut : public std::exception {
+public:
+    SolverOut()
+    {
+        ToulBar2::limited = true;
+        if (ToulBar2::verbose >= 2)
+            cout << SolverOut::what() << endl;
+    }
+    virtual const char* what() const throw() { return "... some solver limit was reached!"; }
+};
+
+class NbBacktracksOut : public SolverOut {
+public:
+    const char* what() const throw() FINAL { return "... limit on the number of backtracks reached!"; }
+};
+
+class NbSolutionsOut : public SolverOut {
+public:
+    const char* what() const throw() FINAL { return "... limit on the number of solutions reached!"; }
+};
+
+class DivSolutionOut : public SolverOut {
+public:
+    const char* what() const throw() FINAL { return "... optimal diverse solution found!"; }
+};
+
+class TimeOut : public SolverOut {
+public:
+    const char* what() const throw() FINAL { return "... time limit reached!"; }
+};
+
+int solveSymMax2SAT(int n, int m, int* posx, int* posy, double* cost, int* sol);
+extern "C" int solvesymmax2sat_(int* n, int* m, int* posx, int* posy, double* cost, int* sol);
+
+#endif /*TB2SOLVER_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/tb2main.cpp b/code/include/tb2/tb2main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fe0d64d539c507ed9533f06b1b5a4b44c30742ec
--- /dev/null
+++ b/code/include/tb2/tb2main.cpp
@@ -0,0 +1,2740 @@
+/*
+ * **************** Main function ***********************************
+ */
+
+#include "toulbar2lib.hpp"
+#include "applis/tb2pedigree.hpp"
+#include "applis/tb2haplotype.hpp"
+#include "applis/tb2bep.hpp"
+#include "vns/tb2vnsutils.hpp"
+#include "vns/tb2dgvns.hpp"
+#ifdef OPENMPI
+#include "vns/tb2cpdgvns.hpp"
+#include "vns/tb2rpdgvns.hpp"
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <cfenv>
+
+const int maxdiscrepancy = 4;
+const Long maxrestarts = 10000;
+const Long hbfsgloballimit = 10000;
+const int raspsangle = 10;
+const Long raspsbacktracks = 1000;
+const double relativegap = 0.0001;
+const int maxdivnbsol = 1000;
+
+// INCOP default command line option
+const string Incop_cmd = "0 1 3 idwa 100000 cv v 0 200 1 0 0";
+
+//* definition of path separtor depending of OS '/'  => Unix ;'\' ==> windows
+#ifdef __WIN32__
+#define PATH_SEP_CHR '\\'
+#define PATH_DELIM ";"
+#else
+#define PATH_SEP_CHR '/'
+#define PATH_DELIM ":"
+#endif
+//*definition of  windows include for command line.
+#ifdef __WIN32__
+#include <windows.h>
+#include <tchar.h>
+#else
+#define TCHAR char
+#define _T(x) x
+#define _tprintf printf
+#define _tmain main
+#define _ttoi atoi
+#endif
+#include "utils/SimpleOpt.h"
+#include "utils/SimpleGlob.h"
+
+// used for debugging purpose.
+// under gdb: p ((BinaryConstraint *) constrs[13])->dump
+// under gdb: p $2(constrs[13], myCout)
+ostream myCout(cout.rdbuf());
+
+void conflict() {}
+
+#ifdef PARETOPAIR_COST
+void initCosts()
+{
+    if (ToulBar2::LcLevel > LC_FDAC) {
+        cerr << "EDAC not implemented on Paretopair => force to FDAC." << endl;
+        ToulBar2::LcLevel = LC_FDAC;
+    }
+    if (ToulBar2::vac) {
+        cerr << "VAC not implemented on Paretopair." << endl;
+        ToulBar2::vac = 0;
+        ToulBar2::minsumDiffusion = 0;
+    }
+    if (ToulBar2::elimDegree >= 0 || ToulBar2::elimDegree_preprocessing >= 0 || ToulBar2::elimDegree_preprocessing < -1) {
+        cerr << "Variable elimination not implemented on Paretopair." << endl;
+        ToulBar2::elimDegree = -1;
+        ToulBar2::elimDegree_preprocessing = -1;
+    }
+    if (ToulBar2::btdMode >= 1) {
+        cerr << "BTD-like methods not implemented on Paretopair." << endl;
+        ToulBar2::btdMode = 0;
+    }
+}
+#endif
+
+/* read upper bound from given file */
+string read_UB(const char* ubfilename)
+{
+    string ubs;
+    ifstream ubfile(ubfilename);
+    if (ubfile.is_open()) {
+        ubfile >> ubs;
+        cout << "UB read from " << ubfilename << "=" << ubs << endl;
+        ubfile.close();
+
+        return ubs;
+
+    } else {
+        cout << "Unable to open file:" << ubfilename << endl;
+        return NULL;
+    }
+}
+
+// chek if a filename end as ext
+bool check_file_ext(const string fileName, const string ext)
+{
+    size_t extLen = ext.length();
+    return ((extLen <= fileName.length()) && (fileName.substr(fileName.length() - extLen) == ext));
+}
+
+enum {
+    OPT_verbose = 0,
+    OPT_debug,
+    OPT_dumpWCSP,
+    OPT_HELP,
+    OPT_stdin,
+
+    // file extension option
+    OPT_wcsp_ext,
+    OPT_wcspgz_ext,
+    OPT_wcspxz_ext,
+    OPT_wcspXML_ext,
+    OPT_cfn_ext,
+    OPT_cfngz_ext,
+    OPT_cfnxz_ext,
+    OPT_order_ext,
+    OPT_uai_ext,
+    OPT_uaigz_ext,
+    OPT_uaixz_ext,
+    OPT_uai_log_ext,
+    OPT_uaigz_log_ext,
+    OPT_uaixz_log_ext,
+    OPT_evid_ext,
+    OPT_map_ext,
+    OPT_sol_ext,
+    OPT_bep_ext,
+    OPT_ub_ext,
+    OPT_pre_ext,
+    OPT_wcnf_ext,
+    OPT_wcnfgz_ext,
+    OPT_wcnfxz_ext,
+    OPT_cnf_ext,
+    OPT_cnfgz_ext,
+    OPT_cnfxz_ext,
+    OPT_qpbo_ext,
+    OPT_qpbogz_ext,
+    OPT_qpboxz_ext,
+    OPT_opb_ext,
+    OPT_opbgz_ext,
+    OPT_opbxz_ext,
+    OPT_treedec_ext,
+    OPT_clusterdec_ext,
+
+    OPT_qpbo_mult,
+    // search option
+    OPT_SEARCH_METHOD,
+    OPT_btdRootCluster,
+    OPT_btdSubTree,
+    OPT_splitClusterMaxSize,
+    OPT_maxSeparatorSize,
+    OPT_boostingBTD,
+    NO_OPT_boostingBTD,
+    OPT_minProperVarSize,
+    OPT_varOrder,
+    OPT_problemsaved_filename,
+    OPT_PARTIAL_ASSIGNMENT,
+    NO_OPT_PARTIAL_ASSIGNMENT,
+    OpT_showSolutions,
+    OPT_writeSolution,
+    OPT_pedigreePenalty,
+    OPT_allSolutions,
+    OPT_binaryBranching,
+    NO_OPT_binaryBranching,
+    OPT_approximateCountingBTD,
+    OPT_Static_variable_ordering,
+    NO_OPT_Static_variable_ordering,
+    OPT_lastConflict,
+    NO_OPT_lastConflict,
+    OPT_dichotomicBranching,
+    NO_OPT_dichotomicBranching,
+    OPT_sortDomains,
+    NO_OPT_sortDomains,
+    OPT_solutionBasedPhaseSaving,
+    NO_OPT_solutionBasedPhaseSaving,
+    OPT_weightedDegree,
+    NO_OPT_weightedDegree,
+    OPT_weightedTightness,
+    NO_OPT_weightedTightness,
+    OPT_nbDecisionVars,
+    OPT_elimDegree,
+    NO_OPT_elimDegree,
+    OPT_elimDegree_preprocessing,
+    NO_OPT_elimDegree_preprocessing,
+    OPT_showSolutions,
+    OPT_costfuncSeparate,
+    NO_OPT_costfuncSeparate,
+    OPT_nopre,
+
+    // VAC OPTION
+    OPT_minsumDiffusion,
+    OPT_vac,
+    NO_OPT_vac,
+    OPT_costThreshold,
+    OPT_costThresholdPre,
+    OPT_trwsAccuracy,
+    OPT_trwsOrder,
+    NO_OPT_trwsOrder,
+    OPT_trwsNIter,
+    OPT_trwsNIterNoChange,
+    OPT_trwsNIterComputeUb,
+    NO_OPT_trws,
+    OPT_costMultiplier,
+    OPT_deltaUbAbsolute,
+    OPT_deltaUbRelative,
+
+    OPT_VACINT,
+    NO_OPT_VACINT,
+    OPT_VACthreshold,
+    NO_OPT_VACthreshold,
+    OPT_RASPS,
+    NO_OPT_RASPS,
+    OPT_RASPSangle,
+    NO_OPT_RASPSangle,
+    OPT_RASPSreset,
+    NO_OPT_RASPSreset,
+    OPT_RASPSlds,
+
+    OPT_singletonConsistency,
+    NO_OPT_singletonConsistency,
+    OPT_vacValueHeuristic,
+    NO_OPT_vacValueHeuristic,
+    OPT_preprocessTernary,
+    NO_OPT_preprocessTernary,
+    OPT_preprocessFunctional,
+    NO_OPT_preprocessFunctional,
+    OPT_preprocessNary,
+    NO_OPT_preprocessNary,
+    OPT_QueueComplexity,
+    NO_OPT_QueueComplexity,
+    OPT_MSTDAC,
+    NO_OPT_MSTDAC,
+    OPT_DEE,
+    NO_OPT_DEE,
+    OPT_lds,
+    NO_OPT_lds,
+    OPT_restart,
+    NO_OPT_restart,
+    OPT_btlimit,
+    NO_OPT_btlimit,
+    OPT_hbfs,
+    NO_OPT_hbfs,
+    OPT_open,
+    OPT_localsearch,
+    NO_OPT_localsearch,
+    OPT_EDAC,
+    OPT_ub,
+    OPT_divDist,
+    OPT_divWidth,
+    OPT_divMethod,
+    OPT_divRelax,
+    OPT_Z,
+    OPT_epsilon,
+    OPT_learning,
+    OPT_timer,
+#ifndef NDEBUG
+    OPT_verifyopt,
+#endif
+    // MENDELESOFT OPTION
+    OPT_generation,
+    MENDEL_OPT_genotypingErrorRate,
+    MENDEL_OPT_resolution,
+    OPT_pedigree_by_MPE,
+    MENDEL_OPT_EQUAL_FREQ,
+    MENDEL_OPT_ESTIMAT_FREQ,
+    MENDEL_OPT_ALLOCATE_FREQ,
+
+    // random generator
+    OPT_seed,
+    OPT_random,
+
+// VNS Methods
+#ifdef BOOST
+    OPT_VNS_search,
+#ifdef OPENMPI
+    OPT_CPDGVNS_search,
+    OPT_RADGVNS_search,
+    OPT_RSDGVNS_search,
+    OPT_plimit,
+#endif
+    OPT_TREEDEC_search,
+    OPT_decfile,
+    OPT_vns_output,
+    OPT_vns_sol_init,
+    OPT_lds_min,
+    OPT_lds_max,
+    OPT_lds_inc,
+    OPT_k_min,
+    OPT_k_max,
+    OPT_k_inc,
+    //    OPT_vns_restart_strategy,
+    //    OPT_vns_var_heur,
+    OPT_neighbor_change,
+    OPT_neighbor_synch,
+    OPT_optimum
+#endif
+};
+
+string getExt(string FileName)
+{
+    // Finds the last persiod character of the string
+    int period = FileName.find_last_of(".");
+    // I use  + 1 because I don't really need to include the period
+    string ext = FileName.substr(period + 1);
+    return ext;
+}
+
+CSimpleOpt::SOption g_rgOptions[] = {
+    { OPT_HELP, (char*)"-h", SO_NONE }, // boolean help
+    { OPT_HELP, (char*)"-?", SO_NONE }, // boolean help
+    { OPT_HELP, (char*)"-help", SO_NONE }, // boolean help
+    { OPT_HELP, (char*)"--help", SO_NONE }, // boolean help
+    { OPT_verbose, (char*)"-v", SO_OPT }, // verbose level
+    { OPT_debug, (char*)"-Z", SO_OPT }, // debug level
+    { OPT_dumpWCSP, (char*)"-z", SO_OPT }, // dump wcsp
+    //stdin format
+    { OPT_stdin, (char*)"--stdin", SO_REQ_SEP },
+
+    // file extension
+    { OPT_wcsp_ext, (char*)"--wcsp_ext", SO_REQ_SEP },
+    { OPT_wcspXML_ext, (char*)"--wcspXML_ext", SO_REQ_SEP },
+    { OPT_cfn_ext, (char*)"--cfn_ext", SO_REQ_SEP },
+    { OPT_cfngz_ext, (char*)"--cfngz_ext", SO_REQ_SEP },
+    { OPT_cfnxz_ext, (char*)"--cfnxz_ext", SO_REQ_SEP },
+    { OPT_order_ext, (char*)"--order_ext", SO_REQ_SEP },
+    { OPT_uai_ext, (char*)"--uai_ext", SO_REQ_SEP },
+    { OPT_uaigz_ext, (char*)"--uaigz_ext", SO_REQ_SEP },
+    { OPT_uaixz_ext, (char*)"--uaixz_ext", SO_REQ_SEP },
+    { OPT_uai_log_ext, (char*)"--uai_log_ext", SO_REQ_SEP },
+    { OPT_uaigz_log_ext, (char*)"--uaigz_log_ext", SO_REQ_SEP },
+    { OPT_uaixz_log_ext, (char*)"--uaixz_log_ext", SO_REQ_SEP },
+    { OPT_evid_ext, (char*)"--evid_ext", SO_REQ_SEP },
+    { OPT_map_ext, (char*)"--map_ext", SO_REQ_SEP },
+    { OPT_sol_ext, (char*)"--sol_ext", SO_REQ_SEP },
+    { OPT_bep_ext, (char*)"--bep_ext", SO_REQ_SEP },
+    { OPT_ub_ext, (char*)"--ub_ext", SO_REQ_SEP },
+    { OPT_pre_ext, (char*)"--pre_ext", SO_REQ_SEP },
+    { OPT_wcnf_ext, (char*)"--wcnf_ext", SO_REQ_SEP },
+    { OPT_wcnfgz_ext, (char*)"--wcnfgz_ext", SO_REQ_SEP },
+    { OPT_wcnfxz_ext, (char*)"--wcnfxz_ext", SO_REQ_SEP },
+    { OPT_cnf_ext, (char*)"--cnf_ext", SO_REQ_SEP },
+    { OPT_cnfgz_ext, (char*)"--cnfgz_ext", SO_REQ_SEP },
+    { OPT_cnfxz_ext, (char*)"--cnfxz_ext", SO_REQ_SEP },
+    { OPT_qpbo_ext, (char*)"--qpbo_ext", SO_REQ_SEP },
+    { OPT_qpbogz_ext, (char*)"--qpbogz_ext", SO_REQ_SEP },
+    { OPT_qpboxz_ext, (char*)"--qpboxz_ext", SO_REQ_SEP },
+    { OPT_opb_ext, (char*)"--opb_ext", SO_REQ_SEP },
+    { OPT_opbgz_ext, (char*)"--opbgz_ext", SO_REQ_SEP },
+    { OPT_opbxz_ext, (char*)"--opbxz_ext", SO_REQ_SEP },
+    { OPT_treedec_ext, (char*)"--treedec_ext", SO_REQ_SEP },
+    { OPT_clusterdec_ext, (char*)"--clusterdec_ext", SO_REQ_SEP },
+
+    { OPT_qpbo_mult, (char*)"-qpmult", SO_REQ_SEP },
+    { OPT_SEARCH_METHOD, (char*)"-B", SO_REQ_SEP }, // -B [0,1,2] search method
+    { OPT_SEARCH_METHOD, (char*)"--search", SO_REQ_SEP },
+    { OPT_btdRootCluster, (char*)"-R", SO_REQ_SEP }, // root cluster used in BTD
+    { OPT_btdRootCluster, (char*)"--RootCluster", SO_REQ_CMB },
+    { OPT_btdSubTree, (char*)"-I", SO_REQ_SEP }, // btd sub tree
+    { OPT_splitClusterMaxSize, (char*)"-j", SO_REQ_SEP },
+    { OPT_maxSeparatorSize, (char*)"-r", SO_REQ_SEP },
+    { OPT_maxSeparatorSize, (char*)"--maxSepSize", SO_REQ_CMB },
+
+    { OPT_minProperVarSize, (char*)"-X", SO_REQ_SEP },
+    { OPT_PARTIAL_ASSIGNMENT, (char*)"-x", SO_OPT },
+    { NO_OPT_PARTIAL_ASSIGNMENT, (char*)"-x:", SO_NONE },
+    { OPT_boostingBTD, (char*)"-E", SO_OPT },
+    { NO_OPT_boostingBTD, (char*)"-E:", SO_NONE },
+    { OPT_varOrder, (char*)"-O", SO_REQ_SEP }, // filename of variable order
+    { OPT_problemsaved_filename, (char*)"--save", SO_REQ_SEP }, // filename of saved problem
+    { OPT_showSolutions, (char*)"-s", SO_OPT }, //print solution found
+    { OPT_showSolutions, (char*)"--show", SO_OPT }, //print solution found
+    { OPT_writeSolution, (char*)"-w", SO_OPT }, //  write last/all solutions found in file (default filename "sol")
+
+    { OPT_pedigreePenalty, (char*)"-u", SO_REQ_SEP }, // int ..
+    { OPT_allSolutions, (char*)"-a", SO_OPT }, // counting option ...print solution found
+    { OPT_approximateCountingBTD, (char*)"-D", SO_NONE }, //approximate counting
+    { OPT_binaryBranching, (char*)"-b", SO_NONE },
+    { OPT_binaryBranching, (char*)"-binaryBranching", SO_NONE },
+    { NO_OPT_binaryBranching, (char*)"-b:", SO_NONE },
+    { NO_OPT_binaryBranching, (char*)"-no--b", SO_NONE },
+    { NO_OPT_binaryBranching, (char*)"-no--binaryBranching", SO_NONE },
+    { OPT_Static_variable_ordering, (char*)"-svo", SO_NONE },
+    { NO_OPT_Static_variable_ordering, (char*)"-svo:", SO_NONE },
+    { OPT_lastConflict, (char*)"-c", SO_NONE },
+    { NO_OPT_lastConflict, (char*)"-c:", SO_NONE },
+    { NO_OPT_lastConflict, (char*)"-no--c", SO_NONE },
+    { NO_OPT_lastConflict, (char*)"--lastConflict--off", SO_NONE },
+    { OPT_dichotomicBranching, (char*)"-d", SO_OPT },
+    { NO_OPT_dichotomicBranching, (char*)"-d:", SO_NONE },
+    { OPT_sortDomains, (char*)"-sortd", SO_NONE },
+    { NO_OPT_sortDomains, (char*)"-sortd:", SO_NONE },
+    { OPT_solutionBasedPhaseSaving, (char*)"-solr", SO_NONE },
+    { NO_OPT_solutionBasedPhaseSaving, (char*)"-solr:", SO_NONE },
+    { OPT_weightedDegree, (char*)"-q", SO_OPT },
+    { NO_OPT_weightedDegree, (char*)"-q:", SO_NONE },
+    { OPT_weightedTightness, (char*)"-m", SO_OPT },
+    { NO_OPT_weightedTightness, (char*)"-m:", SO_NONE },
+    { OPT_nbDecisionVars, (char*)"-var", SO_REQ_SEP },
+
+    { OPT_elimDegree, (char*)"-e", SO_OPT },
+    { NO_OPT_elimDegree, (char*)"-e:", SO_NONE },
+    { OPT_elimDegree_preprocessing, (char*)"-p", SO_OPT },
+    { NO_OPT_elimDegree_preprocessing, (char*)"-p:", SO_NONE },
+    { OPT_costfuncSeparate, (char*)"-dec", SO_NONE },
+    { NO_OPT_costfuncSeparate, (char*)"-dec:", SO_NONE },
+    { OPT_nopre, (char*)"-nopre", SO_NONE },
+    // vac option
+    { OPT_vac, (char*)"-A", SO_OPT },
+    { NO_OPT_vac, (char*)"-A:", SO_NONE },
+    { OPT_vacValueHeuristic, (char*)"-V", SO_NONE },
+    { NO_OPT_vacValueHeuristic, (char*)"-V:", SO_NONE },
+    { OPT_costThreshold, (char*)"-T", SO_REQ_SEP },
+    { OPT_costThresholdPre, (char*)"-P", SO_REQ_SEP },
+    { OPT_costMultiplier, (char*)"-C", SO_REQ_SEP },
+
+    { OPT_VACINT, (char*)"-vacint", SO_OPT },
+    { OPT_VACINT, (char*)"-strictAC", SO_OPT }, //deprecated
+    { OPT_VACINT, (char*)"-sac", SO_OPT }, //deprecated
+    { NO_OPT_VACINT, (char*)"-vacint:", SO_NONE },
+    { NO_OPT_VACINT, (char*)"-sac:", SO_NONE }, //deprecated
+    { OPT_VACthreshold, (char*)"-vacthr", SO_NONE },
+    { OPT_VACthreshold, (char*)"-VACthreshold", SO_NONE }, //deprecated
+    { NO_OPT_VACthreshold, (char*)"-vacthr:", SO_NONE },
+    { OPT_RASPS, (char*)"-rasps", SO_OPT },
+    { OPT_RASPS, (char*)"-RINS", SO_OPT }, //deprecated
+    { OPT_RASPS, (char*)"-rins", SO_OPT }, //deprecated
+    { NO_OPT_RASPS, (char*)"-rasps:", SO_NONE },
+    { NO_OPT_RASPS, (char*)"-RINS:", SO_NONE }, //deprecated
+    { NO_OPT_RASPS, (char*)"-rins:", SO_NONE }, //deprecated
+    { OPT_RASPSangle, (char*)"-raspsdeg", SO_REQ_SEP },
+    { OPT_RASPSangle, (char*)"-RINSangle", SO_OPT }, //deprecated
+    { OPT_RASPSangle, (char*)"-auto", SO_OPT }, //deprecated
+    { NO_OPT_RASPSangle, (char*)"-raspsdeg:", SO_NONE },
+    { NO_OPT_RASPSangle, (char*)"-auto:", SO_NONE }, //deprecated
+    { OPT_RASPSreset, (char*)"-raspsini", SO_NONE },
+    { OPT_RASPSreset, (char*)"-RINSreset:", SO_NONE }, //deprecated
+    { NO_OPT_RASPSreset, (char*)"-raspsini:", SO_NONE },
+    { OPT_RASPSlds, (char*)"-raspslds", SO_OPT },
+
+    { OPT_deltaUbAbsolute, (char*)"-agap", SO_REQ_SEP },
+    { OPT_deltaUbRelative, (char*)"-rgap", SO_OPT },
+    { NO_OPT_trws, (char*)"-trws:", SO_NONE },
+    { OPT_trwsAccuracy, (char*)"-trws", SO_OPT },
+    { OPT_trwsAccuracy, (char*)"--trws-accuracy", SO_REQ_SEP },
+    { OPT_trwsOrder, (char*)"--trws-order", SO_NONE },
+    { NO_OPT_trwsOrder, (char*)"--trws-order:", SO_NONE },
+    { OPT_trwsNIter, (char*)"--trws-n-iters", SO_REQ_SEP },
+    { OPT_trwsNIterNoChange, (char*)"--trws-n-iters-no-change", SO_REQ_SEP },
+    { OPT_trwsNIterComputeUb, (char*)"--trws-n-iters-compute-ub", SO_REQ_SEP },
+
+    //preprocessing
+    { OPT_minsumDiffusion, (char*)"-M", SO_REQ_SEP },
+    { OPT_singletonConsistency, (char*)"-S", SO_NONE },
+    { OPT_preprocessTernary, (char*)"-t", SO_OPT },
+    { NO_OPT_preprocessTernary, (char*)"-t:", SO_NONE },
+    { OPT_preprocessFunctional, (char*)"-f", SO_OPT },
+    { NO_OPT_preprocessFunctional, (char*)"-f:", SO_NONE },
+    { OPT_preprocessNary, (char*)"-n", SO_OPT },
+    { NO_OPT_preprocessNary, (char*)"-n:", SO_NONE },
+
+    { OPT_QueueComplexity, (char*)"-o", SO_NONE },
+    { OPT_MSTDAC, (char*)"-mst", SO_NONE },
+    { NO_OPT_MSTDAC, (char*)"-mst:", SO_NONE },
+    { OPT_DEE, (char*)"-dee", SO_OPT },
+    { NO_OPT_DEE, (char*)"-dee:", SO_OPT },
+    { OPT_lds, (char*)"-l", SO_OPT },
+    { NO_OPT_lds, (char*)"-l:", SO_NONE },
+    { OPT_restart, (char*)"-L", SO_OPT },
+    { NO_OPT_restart, (char*)"-L:", SO_NONE },
+    { OPT_btlimit, (char*)"-bt", SO_OPT },
+    { NO_OPT_btlimit, (char*)"-bt:", SO_NONE },
+    { OPT_hbfs, (char*)"-hbfs", SO_OPT },
+    { OPT_hbfs, (char*)"-bfs", SO_OPT },
+    { NO_OPT_hbfs, (char*)"-hbfs:", SO_NONE },
+    { NO_OPT_hbfs, (char*)"-bfs:", SO_NONE },
+    { OPT_open, (char*)"-open", SO_REQ_SEP },
+    { OPT_localsearch, (char*)"-i", SO_OPT }, // incop option default or string for narycsp argument
+    { OPT_EDAC, (char*)"-k", SO_REQ_SEP },
+    { OPT_ub, (char*)"-ub", SO_REQ_SEP }, // init upper bound in cli
+    { OPT_divDist, (char*)"-div", SO_REQ_SEP }, // distance between solutions
+    { OPT_divWidth, (char*)"-divwidth", SO_REQ_SEP }, // max relaxed MDD width
+    { OPT_divWidth, (char*)"-mdd", SO_REQ_SEP }, // max relaxed MDD width
+    { OPT_divRelax, (char*)"-divrelax", SO_REQ_SEP }, // relaxation method
+    { OPT_divRelax, (char*)"-mddh", SO_REQ_SEP }, // relaxation method
+    { OPT_divMethod, (char*)"-divmethod", SO_REQ_SEP }, // encoding of diversity constraint
+    { OPT_divMethod, (char*)"-divm", SO_REQ_SEP }, // encoding of diversity constraint
+    // MENDELSOFT
+    { OPT_generation, (char*)"-g", SO_NONE }, //sort pedigree by increasing generation number and if equal by increasing individual number
+    //	{ OPT_pedigree_by_MPE,  		(char*) "-y", 				SO_OPT			}, // bayesian flag
+    { MENDEL_OPT_genotypingErrorRate, (char*)"-genoError", SO_REQ_SEP },
+    { MENDEL_OPT_resolution, (char*)"-precision", SO_REQ_SEP },
+    { OPT_pedigree_by_MPE, (char*)"-bayes", SO_NONE }, // bayesian flag
+    { MENDEL_OPT_EQUAL_FREQ, (char*)"-pequal", SO_NONE }, // allocate equal frequencies to all allele
+    { MENDEL_OPT_ESTIMAT_FREQ, (char*)"-probdata", SO_NONE }, //  probs depending on the frequencies found in the current pedigree problem
+    { MENDEL_OPT_ALLOCATE_FREQ, (char*)"-problist", SO_MULTI }, // read probability distribution from command line
+
+    { OPT_Z, (char*)"-logz", SO_NONE }, // compute log partition function (log Z)
+    { OPT_epsilon, (char*)"-epsilon", SO_REQ_SEP }, // approximation parameter for computing Z
+
+    { OPT_learning, (char*)"-learning", SO_NONE }, // pseudoboolean learning during search
+#ifndef NDEBUG
+    { OPT_verifyopt, (char*)"-opt", SO_NONE }, // for debugging purposes, checks the given optimal solution (problem.sol) is not pruned during search
+#endif
+    { OPT_timer, (char*)"-timer", SO_REQ_SEP }, // CPU timer
+
+    // random generator
+    { OPT_seed, (char*)"-seed", SO_REQ_SEP },
+    { OPT_random, (char*)"-random", SO_REQ_SEP }, // init upper bound in cli
+
+// VNS Methods
+#ifdef BOOST
+    { OPT_VNS_search, (char*)"-vns", SO_NONE },
+    { OPT_VNS_search, (char*)"--vns", SO_NONE },
+    { OPT_VNS_search, (char*)"-dgvns", SO_NONE },
+    { OPT_VNS_search, (char*)"--dgvns", SO_NONE },
+#ifdef OPENMPI
+    { OPT_CPDGVNS_search, (char*)"--cpdgvns", SO_NONE },
+    { OPT_RADGVNS_search, (char*)"-radgvns", SO_NONE },
+    { OPT_RADGVNS_search, (char*)"--radgvns", SO_NONE },
+    { OPT_RSDGVNS_search, (char*)"--rsdgvns", SO_NONE },
+    { OPT_plimit, (char*)"--plimit", SO_NONE },
+#endif
+    { OPT_TREEDEC_search, (char*)"--treedec", SO_NONE },
+    { OPT_decfile, (char*)"--decfile", SO_REQ_SEP },
+    { OPT_vns_output, (char*)"--foutput", SO_REQ_SEP },
+    { OPT_vns_sol_init, (char*)"-vnsini", SO_REQ_SEP },
+    { OPT_vns_sol_init, (char*)"-ldsini", SO_REQ_SEP },
+    { OPT_vns_sol_init, (char*)"--solution-init", SO_REQ_SEP },
+    { OPT_lds_min, (char*)"-ldsmin", SO_REQ_SEP },
+    { OPT_lds_max, (char*)"-ldsmax", SO_REQ_SEP },
+    { OPT_lds_inc, (char*)"-ldsinc", SO_REQ_SEP },
+    { OPT_k_min, (char*)"-kmin", SO_REQ_SEP },
+    { OPT_k_min, (char*)"--kinit", SO_REQ_SEP },
+    { OPT_k_max, (char*)"-kmax", SO_REQ_SEP },
+    { OPT_k_max, (char*)"--kmax", SO_REQ_SEP },
+    { OPT_k_inc, (char*)"-kinc", SO_REQ_SEP },
+    //    { OPT_vns_var_heur, (char*) "--variable-heuristic", SO_REQ_SEP },
+    { OPT_neighbor_change, (char*)"--strategy", SO_NONE },
+    { OPT_neighbor_synch, (char*)"--synch", SO_NONE },
+    { OPT_optimum, (char*)"-best", SO_REQ_SEP },
+    { OPT_optimum, (char*)"--best", SO_REQ_SEP },
+#endif
+    SO_END_OF_OPTIONS
+};
+
+void ShowFiles(int argc, TCHAR** argv)
+{
+    // glob files to catch expand wildcards
+    CSimpleGlob glob(SG_GLOB_NODOT | SG_GLOB_NOCHECK);
+    if (SG_SUCCESS != glob.Add(argc, argv)) {
+        _tprintf(_T("Error while globbing files\n"));
+        return;
+    }
+
+    for (int n = 0; n < glob.FileCount(); ++n) {
+        _tprintf(_T("file %2d: '%s'\n"), n, glob.File(n));
+    }
+}
+
+static const TCHAR* GetLastErrorText(int a_nError)
+{
+    switch (a_nError) {
+    case SO_SUCCESS:
+        return _T("Success");
+    case SO_OPT_INVALID:
+        return _T("Unrecognized option");
+    case SO_OPT_MULTIPLE:
+        return _T("Option matched multiple strings");
+    case SO_ARG_INVALID:
+        return _T("Option does not accept argument");
+    case SO_ARG_INVALID_TYPE:
+        return _T("Invalid argument format");
+    case SO_ARG_MISSING:
+        return _T("\n Required argument is missing");
+    case SO_ARG_INVALID_DATA:
+        return _T("Invalid argument data");
+    default:
+        return _T("Unknown error");
+    }
+}
+
+// processing of  multi argument -problist option
+// -problist #arguments arg1 arg2 arg2 ...#argument
+
+static void Pedi_Args(CSimpleOpt& args, int nMultiArgs)
+{
+    TCHAR** rgpszArg = NULL;
+    int nMultiBackup = nMultiArgs;
+
+    // get the number of arguments if necessary
+    if (nMultiArgs == -1) {
+        // first arg is a count of how many we have
+        rgpszArg = args.MultiArg(1);
+
+        if (!rgpszArg) {
+            _tprintf(
+                _T("%s: '%s' (missing argument or please use --help to get command line help)\n \n"),
+                GetLastErrorText(args.LastError()), args.OptionText());
+            return;
+        }
+
+        nMultiArgs = _ttoi(rgpszArg[0]);
+
+        cout << endl;
+        cout << nMultiArgs << "Alleles probability will be read from command line " << endl;
+    }
+
+    // get the arguments to follow
+    rgpszArg = args.MultiArg(nMultiArgs);
+
+    if (nMultiBackup < 0) {
+        for (int n = 0; n < nMultiArgs; ++n) {
+            if (ToulBar2::verbose >= 0)
+                _tprintf(_T("MultiArg %d: %s\n"), n, rgpszArg[n]);
+            float f2;
+            sscanf(rgpszArg[n], "%f", &f2);
+            ToulBar2::allelefreqdistrib.push_back(f2);
+        }
+        if (ToulBar2::verbose >= 0) {
+            for (unsigned int x = 0; x <= sizeof(ToulBar2::allelefreqdistrib); x++)
+                cout << "Allele prob used " << x << "=" << ToulBar2::allelefreqdistrib[x] << endl;
+        }
+        _tprintf(_T("%s: expecting %d args\n"), args.OptionText(), nMultiArgs);
+    }
+
+    if (!rgpszArg) {
+        _tprintf(
+            _T("%s: '%s' (use --help to get command line help)\n"),
+            GetLastErrorText(args.LastError()), args.OptionText());
+        exit(-1);
+    }
+}
+
+/* return current binary path extracted from argv[0] or from the env var $path */
+
+char* find_bindir(const char* bin_name, char* buffer, size_t buflen)
+{
+    struct stat st;
+    char *path, *tok;
+    if (!stat(bin_name, &st)) {
+        char* end = (char*)strrchr(bin_name, PATH_SEP_CHR);
+        static char bin_path[512];
+        if (end) {
+            *end = 0;
+            strncpy(buffer, bin_name, buflen);
+            sprintf(bin_path, "%s%c", buffer, PATH_SEP_CHR);
+        } else {
+            strcpy(buffer, ".");
+            //path separator added to the path value
+            sprintf(bin_path, "%s%c", buffer, PATH_SEP_CHR);
+        }
+        return (bin_path);
+    }
+    path = strdup(getenv("PATH"));
+    tok = strtok(path, PATH_DELIM);
+    while (tok) {
+        snprintf(buffer, buflen, "%s%c%s", tok, PATH_SEP_CHR, bin_name);
+        if (!stat(buffer, &st)) {
+            static char bin_path[512];
+            strncpy(buffer, tok, buflen);
+            free(path);
+            sprintf(bin_path, "%s%c", buffer, PATH_SEP_CHR);
+            return bin_path;
+        }
+        tok = strtok(NULL, PATH_DELIM);
+    }
+    free(path);
+    buffer[0] = 0;
+    return NULL;
+}
+
+//  current unused option letters: 	f F G H J K n N Q U W Y
+void help_msg(char* toulbar2filename)
+{
+    cout << "*************************" << endl;
+#ifdef MENDELSOFT
+    cout << "* MendelSoft Help Message *" << endl;
+#else
+    cout << "* ToulBar2 Help Message *" << endl;
+#endif
+    cout << "*************************" << endl;
+    cout << endl;
+    cout << "Command line is:" << endl;
+    cout << toulbar2filename << " problem_filename [options]" << endl;
+    cout << endl;
+#ifndef MENDELSOFT
+    cout << "Available problem formats (specified by the filename extension) are:" << endl;
+#ifdef BOOST
+    cout << "   *.cfn : Cost Function Network format (see toulbar2 web site)" << endl;
+#endif
+    cout << "   *.wcsp : Weighted CSP format (see toulbar2 web site)" << endl;
+    cout << "   *.wcnf : Weighted Partial Max-SAT format (see Max-SAT Evaluation)" << endl;
+    cout << "   *.cnf : (Max-)SAT format" << endl;
+    cout << "   *.qpbo : quadratic pseudo-Boolean optimization (unconstrained quadratic programming) format (see also option -qpmult)" << endl;
+    cout << "   *.opb : pseudo-Boolean optimization format" << endl;
+    cout << "   *.uai : Bayesian network and Markov Random Field format (see UAI'08 Evaluation) followed by an optional evidence filename (performs MPE task, see -logz for PR task, and write its solution in file .MPE or .PR using the same directory as toulbar2)" << endl;
+    cout << "   *.LG : Bayesian network and Markov Random Field format using logarithms instead of probabilities" << endl;
+#ifdef XMLFLAG
+    cout << "   *.xml : CSP and weighted CSP in XML format XCSP 2.1 (constraints in extension only)";
+#ifdef MAXCSP
+    cout << " (Max-CSP only)";
+#endif
+    cout << endl;
+#endif
+    cout << "   *.pre : pedigree format (see doc/MendelSoft.txt for Mendelian error correction)" << endl;
+    cout << "   *.pre *.map : pedigree and genetic map formats (see doc/HaplotypeHalfSib.txt for haplotype reconstruction in half-sib families)" << endl;
+    cout << "   *.bep  : satellite scheduling format (CHOCO benchmark)" << endl
+         << endl;
+    cout << "   *.order  : variable elimination order" << endl;
+    cout << "   *.cov  : tree decomposition given by a list of clusters in topological order of a rooted forest," << endl;
+    cout << "      each line contains a cluster number, then a cluster parent number with -1 for the root(s) cluster(s), followed by a list of variable indexes" << endl;
+    cout << "   *.dec  : a list of overlapping clusters without the running intersection property used by VNS-like methods," << endl;
+    cout << "      each line contains a list of variable indexes" << endl;
+    cout << "   *.sol  : initial solution for the problem (given as initial upperbound plus one and as default value heuristic, or only as initial upperbound if option -x: is added)" << endl
+         << endl;
+#ifdef BOOST
+    cout << "Note: cfn, cnf, LG, qpbo, opb, uai, wcnf, wcsp formats can be read in gzip'd or xz compressed format, e.g., toulbar2 problem.cfn.xz" << endl;
+#endif
+    cout << "Warning! File formats are recognized by filename extensions. To change the default file format extension, use option --old_ext=\".new\" Examples: --cfn_ext='.json' --wcspgz_ext='.wgz' --sol_ext='.sol2'  " << endl;
+    cout << endl;
+#endif
+    cout << "Available options are (use symbol \":\" after an option to remove a default option):" << endl;
+    cout << "   -help : shows this help message" << endl;
+    cout << "   -ub=[decimal] : initial problem upperbound (default value is " << MAX_COST << ")" << endl;
+    cout << "   -agap=[decimal] : stop search if the absolute optimality gap reduces below the given value (provides guaranteed approximation) (default value is " << ToulBar2::deltaUbS << ")" << endl;
+    cout << "   -rgap=[double] : stop search if the relative optimality gap reduces below the given value (provides guaranteed approximation) (default value is " << ToulBar2::deltaUbRelativeGap << ")" << endl;
+    cout << "   -v=[integer] : verbosity level" << endl;
+    cout << "   -s=[integer] : shows each solution found. 1 prints value numbers, 2 prints value names, 3 prints also variable names (default 1)" << endl;
+#ifndef MENDELSOFT
+    cout << "   -w=[filename] : writes last/all solutions in filename (or \"sol\" if no parameter is given)" << endl;
+    cout << "   -w=[integer] : 1 writes value numbers, 2 writes value names, 3 writes also variable names (default 1)" << endl;
+    cout << "   -precision=[integer] defines the number of digits that should be representable on probabilities in uai/pre files (default value is " << ToulBar2::resolution << ")" << endl;
+    cout << "   -qpmult=[double] defines coefficient multiplier for quadratic terms (default value is " << ToulBar2::qpboQuadraticCoefMultiplier << ")" << endl;
+#else
+    cout << "   -w=[mode] : writes last solution found" << endl;
+    cout << "               mode=0: saves pedigree with erroneous genotypings removed" << endl;
+    cout << "               mode=1: saves pedigree with erroneous genotypings corrected" << endl;
+    cout << "               mode=2: saves pedigree with erroneous genotypings corrected and missing genotypes of informative individuals inferred" << endl;
+    cout << "   --save=[filename] : saves pedigree in filename (or \"pedigree_corrected.pre\" if no parameter is given)" << endl;
+    cout << "   -g : sorts pedigree by increasing generation number and if equal by increasing individual number" << endl;
+    cout << "   -u=[integer] : adds a penalty weight (must use option y also) on genotyped individuals depending on the number of their genotyped children in order to penalize genotyping removals if the number of genotyped children is strictly greater than a given threshold" << endl;
+
+    cout << "   -bayes : pedigree solved by Bayesian MPE . the following option can be tune" << endl;
+    cout << "               -genoError [real]<=> genotyping Error Rate is a prior uniform probability of genotyping errors (default value is " << ToulBar2::errorg << ")" << endl;
+    cout << "               -precision [int]<=> probability Precision is a conversion factor (a power of ten) for representing fixed point numbers (default value is " << ToulBar2::resolution << ")" << endl;
+
+    cout << "         the command line possibly followed by three exclusive options:" << endl;
+    cout << "           -pequal	  : uniform allele probability distribution (default mode) " << endl;
+    cout << "           -probd    : allele probability distribution read from pedigree data" << endl;
+    cout << "           -problist [nbre of prob] p1 p2 p3... : allele probability distribution given explicitely in the command line" << endl
+         << endl;
+#endif
+#ifndef MENDELSOFT
+#ifndef __WIN32__
+    cout << "   -timer=[integer] : CPU time limit in seconds" << endl;
+#endif
+    cout << "   -bt=[integer] : limit on the number of backtracks (" << ToulBar2::backtrackLimit << " by default)" << endl;
+    cout << "   -seed=[integer] : random seed non-negative value or use current time if a negative value is given (default value is " << ToulBar2::seed << ")" << endl;
+    cout << "   --stdin=[format] : read file from pipe ; e.g., cat example.wcsp | toulbar2 --stdin=wcsp" << endl;
+    cout << "   -var=[integer] : searches by branching only on the first -the given value- decision variables, assuming the remaining variables are intermediate variables completely assigned by the decision variables (use a zero if all variables are decision variables) (default value is " << ToulBar2::nbDecisionVars << ")" << endl;
+    cout << "   -b : searches using binary branching always instead of binary branching for interval domains and n-ary branching for enumerated domains";
+    if (ToulBar2::binaryBranching)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -svo : searches using a static variable ordering heuristic (same order as DAC)";
+    if (ToulBar2::Static_variable_ordering)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -c : searches using binary branching with last conflict backjumping variable ordering heuristic";
+    if (ToulBar2::lastConflict)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -q=[integer] : weighted degree variable ordering heuristic if the number of cost functions is less than the given value (default value is " << ToulBar2::weightedDegree << ")" << endl;
+    cout << "   -m=[integer] : variable ordering heuristic based on mean (m=1) or median (m=2) costs (in conjunction with weighted degree heuristic -q) (default value is " << ToulBar2::weightedTightness << ")" << endl;
+    cout << "   -d=[integer] : searches using dichotomic branching (d=1 splitting in the middle of domain range, d=2 splitting in the middle of sorted unary costs) instead of binary branching when current domain size is strictly greater than " << ToulBar2::dichotomicBranchingSize << " (default value is " << ToulBar2::dichotomicBranching << ")" << endl;
+    cout << "   -sortd : sorts domains based on increasing unary costs (warning! works only for binary WCSPs)";
+    if (ToulBar2::sortDomains)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -solr : solution-based phase saving";
+    if (ToulBar2::solutionBasedPhaseSaving)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -e=[integer] : boosting search with variable elimination of small degree (less than or equal to 3) (default value is " << ToulBar2::elimDegree << ")" << endl;
+    cout << "   -p=[integer] : preprocessing only: general variable elimination of degree less than or equal to the given value (default value is " << ToulBar2::elimDegree_preprocessing << ")" << endl;
+    cout << "   -t=[integer] : preprocessing only: simulates restricted path consistency by adding ternary cost functions on triangles of binary cost functions within a given maximum space limit (in MB)";
+    if (ToulBar2::preprocessTernaryRPC)
+        cout << " (" << ToulBar2::preprocessTernaryRPC << " MB)";
+    cout << endl;
+    cout << "   -f=[integer] : preprocessing only: variable elimination of functional (f=1) (resp. bijective (f=2)) variables (default value is " << ToulBar2::preprocessFunctional << ")" << endl;
+    cout << "   -dec : preprocessing only: pairwise decomposition of cost functions with arity >=3 into smaller arity cost functions";
+    if (ToulBar2::costfuncSeparate)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -n=[integer] : preprocessing only: projects n-ary cost functions on all binary cost functions if n is lower than the given value (default value is " << ToulBar2::preprocessNary << ")" << endl;
+#ifdef BOOST
+    cout << "   -mst : maximum spanning tree DAC ordering";
+    if (ToulBar2::MSTDAC)
+        cout << " (default option)";
+    cout << endl;
+#endif
+    cout << "   -nopre : removes all preprocessing options (equivalent to -e: -p: -t: -f: -dec: -n: -mst: -dee: -trws:)" << endl;
+    cout << "   -o : ensures optimal worst-case time complexity of DAC and EAC (can be slower in practice)";
+    if (ToulBar2::QueueComplexity)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -k=[integer] : soft local consistency level (NC with Strong NIC for global cost functions=0, (G)AC=1, D(G)AC=2, FD(G)AC=3, (weak) ED(G)AC=4) (default value is " << ToulBar2::LcLevel << ")" << endl;
+    cout << "   -dee=[integer] : restricted dead-end elimination (value pruning by dominance rule from EAC value (dee>=1 and dee<=3)) and soft neighborhood substitutability (in preprocessing (dee=2 or dee=4) or during search (dee=3)) (default value is " << ToulBar2::DEE << ")" << endl;
+    cout << "   -l=[integer] : limited discrepancy search, use a negative value to stop the search after the given absolute number of discrepancies has been explored (discrepancy bound = " << maxdiscrepancy << " by default)";
+    if (ToulBar2::lds)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -L=[integer] : randomized (quasi-random variable ordering) search with restart (maximum number of nodes/VNS restarts = " << maxrestarts << " by default)";
+    if (ToulBar2::restart >= 0)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -i=[\"string\"] : initial upperbound found by INCOP local search solver." << endl;
+    cout << "       string parameter is optional, using \"" << Incop_cmd << "\" by default with the following meaning:" << endl;
+    cout << "       stoppinglowerbound randomseed nbiterations method nbmoves neighborhoodchoice neighborhoodchoice2 minnbneighbors maxnbneighbors neighborhoodchoice3 autotuning tracemode" << endl;
+#ifdef BOOST
+    cout << "   -vns : unified decomposition guided variable neighborhood search (a problem decomposition can be given as *.dec, *.cov, or *.order input files or using tree decomposition options such as -O)";
+#ifdef OPENMPI
+    //    cout << "   -cpdgvns : initial upperbound found by cooperative parallel DGVNS (usage: \"mpirun -n [NbOfProcess] toulbar2 -cpdgvns problem.wcsp\")" << endl;
+    //    cout << "   -rsdgvns : initial upperbound found by replicated synchronous DGVNS (usage: \"mpirun -n [NbOfProcess] toulbar2 -rsdgvns problem.wcsp\")" << endl;
+    cout << " (usage for parallel version: \"mpirun -n [NbOfProcess] toulbar2 -vns problem.wcsp\")";
+#endif
+    cout << endl;
+    cout << "   -vnsini=[integer] : initial solution for VNS-like methods found (-1) at random, (-2) min domain values, (-3) max domain values, (-4) first solution found by a complete method, (k=0 or more) tree search with k discrepancy max (" << ToulBar2::vnsInitSol << " by default)" << endl;
+    cout << "   -ldsmin=[integer] : minimum discrepancy for VNS-like methods (" << ToulBar2::vnsLDSmin << " by default)" << endl;
+    cout << "   -ldsmax=[integer] : maximum discrepancy for VNS-like methods (number of problem variables multiplied by maximum domain size -1 by default)" << endl;
+    cout << "   -ldsinc=[integer] : discrepancy increment strategy for VNS-like methods using (1) Add1, (2) Mult2, (3) Luby operator (" << ToulBar2::vnsLDSinc << " by default)" << endl;
+    cout << "   -kmin=[integer] : minimum neighborhood size for VNS-like methods (" << ToulBar2::vnsKmin << " by default)" << endl;
+    cout << "   -kmax=[integer] : maximum neighborhood size for VNS-like methods (number of problem variables by default)" << endl;
+    cout << "   -kinc=[integer] : neighborhood size increment strategy for VNS-like methods using (1) Add1, (2) Mult2, (3) Luby operator (4) Add1/Jump (" << ToulBar2::vnsKinc << " by default)" << endl;
+    cout << "   -best=[integer] : stop VNS-like methods if a better solution is found (default value is " << ToulBar2::vnsOptimum << ")" << endl;
+    cout << endl;
+#endif
+    cout << "   -z=[filename] : saves problem in wcsp (by default) or cfn format (see below) in filename (or \"problem.wcsp/.cfn\"  if no parameter is given)" << endl;
+    cout << "                   writes also the  graphviz dot file  and the degree distribution of the input problem (wcsp format only)" << endl;
+    cout << "   -z=[integer] : 1 or 3: saves original instance in 1-wcsp or 3-cfn format (1 by default), 2 or 4: saves after preprocessing in 2-wcsp or 4-cfn format (this option can be combined with the previous one)" << endl;
+    cout << "   -Z=[integer] : debug mode (save problem at each node if verbosity option -v=num >= 1 and -Z=num >=3)" << endl;
+#ifndef NDEBUG
+    cout << "   -opt filename.sol : checks a given optimal solution (given as input filename with \".sol\" extension) is never pruned by propagation (works only if compiled with debug)" << endl;
+#endif
+    cout << "   -x=[(,i[=#<>]a)*] : performs an elementary operation ('=':assign, '#':remove, '<':decrease, '>':increase) with value a on variable of index i (multiple operations are separated by a comma and no space) (without any argument, a complete assignment -- used as initial upper bound and as value heuristic -- read from default file \"sol\" taken as a certificate or given as input filename with \".sol\" extension)" << endl;
+    cout << endl;
+    cout << "   -M=[integer] : preprocessing only: Min Sum Diffusion algorithm (default number of iterations is " << ToulBar2::minsumDiffusion << ")" << endl;
+    cout << "   -A=[integer] : enforces VAC at each search node with a search depth less than the absolute value of a given value, if negative value then VAC is not performed inside depth-first search of hybrid best-first search (default value is " << ToulBar2::vac << ")" << endl;
+    cout << "   -T=[decimal] : threshold cost value for VAC (default value is " << ToulBar2::costThreshold << ")" << endl;
+    cout << "   -P=[decimal] : threshold cost value for VAC during the preprocessing phase (default value is " << ToulBar2::costThresholdPre << ")" << endl;
+    cout << "   -C=[float] : multiplies all costs internally by this number when loading the problem (default value is " << ToulBar2::costMultiplier << ")" << endl;
+    cout << "   -S : preprocessing only: performs singleton consistency (only in conjunction with option \"-A\")";
+    if (ToulBar2::singletonConsistency)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -V : VAC-based value ordering heuristic";
+    if (ToulBar2::vacValueHeuristic)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -vacint : VAC-integrality/Full-EAC variable ordering heuristic";
+    if (ToulBar2::FullEAC)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -vacthr : automatic threshold cost value selection for VAC during search";
+    if (ToulBar2::VACthreshold)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -rasps=[integer] : VAC-based upper bound probing heuristic (0: disable, >0: max. nb. of backtracks) (default value is " << ((ToulBar2::useRASPS) ? ToulBar2::RASPSnbBacktracks : 0) << ")" << endl;
+    cout << "   -raspslds=[integer] : VAC-based upper bound probing heuristic using LDS instead of DFS (0: DFS, >0: max. discrepancy) (default value is " << ((ToulBar2::useRASPS > 1) ? (ToulBar2::useRASPS - 1) : 0) << ")" << endl;
+    cout << "   -raspsdeg=[integer] : automatic threshold cost value selection for probing heuristic (default value is " << ToulBar2::RASPSangle << "°)" << endl;
+    cout << "   -raspsini : reset weighted degree variable ordering heuristic after doing upper bound probing";
+    if (ToulBar2::RASPSreset)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -trws=[float] : enforces TRW-S in preprocessing until a given precision is reached (default value is " << ToulBar2::trwsAccuracy << ")" << endl;
+    cout << "   --trws-order : replaces DAC order by Kolmogorov's TRW-S order";
+    if (ToulBar2::trwsOrder)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   --trws-n-iters=[integer] : enforce at most N iterations of TRW-S (default value is " << ToulBar2::trwsNIter << ")" << endl;
+    cout << "   --trws-n-iters-no-change=[integer] : stop TRW-S when N iterations did not change the lower bound up the given precision (default value is " << ToulBar2::trwsNIterNoChange << ", -1=never)" << endl;
+    cout << "   --trws-n-iters-compute-ub=[integer] : compute UB every N steps in TRW-S (default value is " << ToulBar2::trwsNIterComputeUb << ")" << endl;
+    cout << endl;
+
+    cout << "   -B=[integer] : (0) DFBB, (1) BTD, (2) RDS-BTD, (3) RDS-BTD with path decomposition instead of tree decomposition (default value is " << ToulBar2::btdMode << ")" << endl;
+    cout << "   -O=[filename] : reads a variable elimination order or directly a valid tree decomposition (given by a list of clusters in topological order of a rooted forest, each line contains a cluster number, " << endl;
+    cout << "      followed by a cluster parent number with -1 for the root(s) cluster(s), followed by a list of variable indexes) from a file used for BTD-like and variable elimination methods, and also DAC ordering" << endl;
+#ifdef BOOST
+    cout << "   -O=[negative integer] : build a tree decomposition (if BTD-like and/or variable elimination methods are used) and also a compatible DAC ordering using" << endl;
+    cout << "                           (-" << MAX_CARD << ") maximum cardinality search ordering, (-" << MIN_DEGREE << ") minimum degree ordering, (-" << MIN_FILL << ") minimum fill-in ordering," << endl;
+    cout << "                           (-" << ELIM_MST << ") maximum spanning tree ordering (see -mst), (-" << CUTHILL_MCKEE << ") reverse Cuthill-Mckee ordering, (-" << APPROX_MIN_DEGREE << ") approximate minimum degree ordering," << endl;
+    cout << "                           (-" << ELIM_FILE_ORDER << ") default file ordering (the same if this option is missing, i.e. use the variable order in which variables appear in the problem file)" << endl;
+#endif
+    cout << "   -j=[integer] : splits large clusters into a chain of smaller embedded clusters with a number of proper variables less than this number" << endl;
+    cout << "                (use options \"-B=3 -j=1 -svo -k=1\" for pure RDS, use value 0 for no splitting) (default value is " << ToulBar2::splitClusterMaxSize << ")" << endl;
+    cout << "   -r=[integer] : limit on maximum cluster separator size (merge cluster with its father otherwise, use a negative value for no limit) (default value is " << ToulBar2::maxSeparatorSize << ")" << endl;
+    cout << "   -X=[integer] : limit on minimum number of proper variables in a cluster (merge cluster with its father otherwise, use a zero for no limit) (default value is " << ToulBar2::minProperVarSize << ")" << endl;
+    cout << "   -E=[float] : merges leaf clusters with their fathers if small local treewidth (in conjunction with option \"-e\" and positive threshold value) or ratio of number of separator variables by number of cluster variables above a given threshold (in conjunction with option \"-vns\") (default value is " << ToulBar2::boostingBTD << ")" << endl;
+    cout << "   -R=[integer] : choice for a specific root cluster number" << endl;
+    cout << "   -I=[integer] : choice for solving only a particular rooted cluster subtree (with RDS-BTD only)" << endl
+         << endl;
+    cout << "   -a=[integer] : finds at most a given number of solutions with a cost strictly lower than the initial upper bound and stops, or if no integer is given, finds all solutions (or counts the number of zero-cost satisfiable solutions in conjunction with BTD)";
+    if (ToulBar2::allSolutions)
+        cout << " (default value is " << ToulBar2::allSolutions << ")";
+    cout << endl;
+    cout << "   -div=[integer] : minimum Hamming distance between diverse solutions (use in conjunction with -a=integer with a limit of " << maxdivnbsol << " solutions) (default value is " << ToulBar2::divBound << ")" << endl;
+    cout << "   -divm=[integer] : diversity encoding method: 0:Dual 1:Hidden 2:Ternary (default value is " << ToulBar2::divMethod << ")" << endl;
+    cout << "   -mdd=[integer] : maximum relaxed MDD width for diverse solution global constraint (default value is " << ToulBar2::divWidth << ")" << endl;
+    cout << "   -mddh=[integer] : MDD relaxation heuristic: 0: random, 1: high div, 2: small div, 3: high unary costs (default value is " << ToulBar2::divRelax << ")" << endl;
+    cout << "   -D : approximate satisfiable solution count with BTD";
+    if (ToulBar2::approximateCountingBTD)
+        cout << " (default option)";
+    cout << endl;
+    cout << "   -logz : computes log of probability of evidence (i.e. log partition function or log(Z) or PR task) for graphical models only (problem file extension .uai)" << endl;
+    cout << "   -epsilon=[float] : approximation factor for computing the partition function (greater than 1, default value is " << Exp(-ToulBar2::logepsilon) << ")" << endl;
+    cout << endl;
+    cout << "   -hbfs=[integer] : hybrid best-first search, restarting from the root after a given number of backtracks (default value is " << hbfsgloballimit << ")" << endl;
+    cout << "   -open=[integer] : hybrid best-first search limit on the number of open nodes (default value is " << ToulBar2::hbfsOpenNodeLimit << ")" << endl;
+    cout << "---------------------------" << endl;
+    cout << "Alternatively one can call the random problem generator with the following options: " << endl;
+    cout << endl;
+    cout << "   -random=[bench profile]  : bench profile must be specified as follow :" << endl;
+    cout << "                         n and d are respectively the number of variable and the maximum domain size  of the random problem." << endl;
+    cout << "			" << endl;
+    cout << "       bin-{n}-{d}-{t1}-{p2}-{seed}       :t1 is the tightness in percentage %of random binary cost functions" << endl;
+    cout << "                                          :p2 is the num of binary cost functions to include" << endl;
+    cout << "                                          :the seed parameter is optional (and will overwrite -seed)" << endl;
+
+    cout << "   or:                                                                               " << endl;
+    cout << "       binsub-{n}-{d}-{t1}-{p2}-{p3}-{seed} binary random & submodular cost functions" << endl;
+    cout << "                                          t1 is the tightness in percentage % of random cost functions" << endl;
+    cout << "                                          p2 is the num of binary cost functions to include" << endl;
+    cout << "                                          p3 is the percentage % of submodular cost functions among p2 cost functions" << endl;
+    cout << "                                           (plus 10 permutations of two randomly-chosen values for each domain)" << endl;
+    cout << " or:                                                                               " << endl;
+    cout << "      tern-{n}-{d}-{t1}-{p2}-{p3}-{seed}  p3 is the num of ternary cost functions" << endl;
+    cout << " or:                                                                               " << endl;
+    cout << "      nary-{n}-{d}-{t1}-{p2}-{p3}...-{pn}-{seed}  pn is the num of n-ary cost functions" << endl;
+    cout << " or:                                                                               " << endl;
+    cout << "      salldiff-{n}-{d}-{t1}-{p2}-{p3}...-{pn}-{seed}  pn is the num of salldiff global cost functions (p2 and p3 still being used for the number of random binary and ternary cost functions)" << endl;
+    cout << "---------------------------" << endl;
+    cout << "			" << endl;
+
+    cout << endl;
+#endif
+}
+
+int _tmain(int argc, TCHAR* argv[])
+{
+    //#pragma STDC FENV_ACCESS ON
+    std::fesetround(FE_TONEAREST);
+
+#ifdef OPENMPI
+    MPIEnv env0;
+    MPI_Init(NULL, NULL);
+    MPI_Comm_size(MPI_COMM_WORLD, &env0.ntasks);
+    MPI_Comm_rank(MPI_COMM_WORLD, &env0.myrank);
+#endif
+    tb2init();
+#ifdef OPENMPI
+    if (env0.myrank != 0)
+        ToulBar2::verbose = -1;
+#endif
+
+    setlocale(LC_ALL, "C");
+    bool certificate = false;
+    char* certificateFilename = NULL;
+    char* certificateString = NULL;
+    char* solutionFileName = NULL;
+    char buf[512];
+    char* CurrentBinaryPath = find_bindir(argv[0], buf, 512); // current binary path search
+    int timeout = 0;
+    bool updateValueHeuristic = true;
+
+    // Configuration for MaxSAT Evaluation
+    //	ToulBar2::maxsateval = true;
+    //	ToulBar2::verbose = -1;
+    //	ToulBar2::binaryBranching = false;
+    //	ToulBar2::lds = 1;
+
+    // Configuration for UAI Evaluation
+    // ToulBar2::uaieval = (env0.myrank == 0);
+    //  ToulBar2::verbose = 0;
+    //  ToulBar2::lds = 1;
+    //  ToulBar2::incop_cmd = "0 1 3 idwa 100000 cv v 0 200 1 0 0";
+
+    char* random_desc = NULL; // benchmark description set from command line;
+
+    //default file extension : can be enforced using --foo_ext option in command line
+
+    std::map<std::string, string> file_extension_map;
+    file_extension_map["wcsp_ext"] = ".wcsp";
+    file_extension_map["wcspgz_ext"] = ".wcsp.gz";
+    file_extension_map["wcspxz_ext"] = ".wcsp.xz";
+    file_extension_map["cfn_ext"] = ".cfn";
+    file_extension_map["cfngz_ext"] = ".cfn.gz";
+    file_extension_map["cfnxz_ext"] = ".cfn.xz";
+    file_extension_map["wcspXML_ext"] = ".xml";
+    file_extension_map["order_ext"] = ".order";
+    file_extension_map["ub_ext"] = ".ub";
+    file_extension_map["sol_ext"] = ".sol";
+    file_extension_map["uai_ext"] = ".uai";
+    file_extension_map["uaigz_ext"] = ".uai.gz";
+    file_extension_map["uaixz_ext"] = ".uai.xz";
+    file_extension_map["uai_log_ext"] = ".LG";
+    file_extension_map["uaigz_log_ext"] = ".LG.gz";
+    file_extension_map["uaixz_log_ext"] = ".LG.xz";
+    file_extension_map["evid_ext"] = ".evid";
+    file_extension_map["bep_ext"] = ".bep";
+    file_extension_map["pre_ext"] = ".pre";
+    file_extension_map["map_ext"] = ".map";
+    file_extension_map["wcnf_ext"] = ".wcnf";
+    file_extension_map["wcnfgz_ext"] = ".wcnf.gz";
+    file_extension_map["wcnfxz_ext"] = ".wcnf.xz";
+    file_extension_map["cnf_ext"] = ".cnf";
+    file_extension_map["cnfgz_ext"] = ".cnf.gz";
+    file_extension_map["cnfxz_ext"] = ".cnf.xz";
+    file_extension_map["qpbo_ext"] = ".qpbo";
+    file_extension_map["qpbogz_ext"] = ".qpbo.gz";
+    file_extension_map["qpboxz_ext"] = ".qpbo.xz";
+    file_extension_map["opb_ext"] = ".opb";
+    file_extension_map["opbgz_ext"] = ".opb.gz";
+    file_extension_map["opbxz_ext"] = ".opb.xz";
+    file_extension_map["treedec_ext"] = ".cov";
+    file_extension_map["clusterdec_ext"] = ".dec";
+
+    assert(cout << "Warning! toulbar2 was compiled in debug mode and it can be very slow..." << endl);
+    if (ToulBar2::verbose >= 0) {
+        cout << "c " << CurrentBinaryPath;
+#ifdef MENDELSOFT
+        cout << "mendelsoft";
+#else
+        cout << "toulbar2";
+#endif
+        cout << "  version : " << ToulBar2::version << ", copyright (c) 2006-2020, toulbar2 team" << endl;
+    }
+
+    // --------------------------simple opt ----------------------
+
+    // declare our options parser, pass in the arguments from main
+    // as well as our array of valid options.
+    CSimpleOpt args(argc, argv, g_rgOptions);
+
+    while (args.Next()) {
+
+        if (args.LastError() == SO_SUCCESS) {
+
+            //if (check_file_ext(to_string(args.OptionText()),"_ext") )
+            if (strstr(args.OptionText(), "_ext")) {
+                string force_extension = args.OptionText();
+                force_extension.erase(force_extension.begin(), force_extension.begin() + 2);
+                if (ToulBar2::debug)
+                    cout << "Old extension " << file_extension_map[force_extension] << " --> ";
+                //			cout << " extension " << force_extension << " forced with " << args.OptionArg() << endl;
+                file_extension_map[force_extension] = args.OptionArg();
+
+                if (ToulBar2::debug)
+                    cout << " New extension " << file_extension_map[force_extension] << endl;
+            }
+
+            //  search algorithm
+            if (args.OptionId() == OPT_SEARCH_METHOD) {
+                int mode = 0;
+                if (args.OptionArg() != NULL)
+                    mode = atoi(args.OptionArg());
+                if (mode >= 0)
+                    ToulBar2::btdMode = mode;
+                else
+                    ToulBar2::btdMode = 0;
+                if (ToulBar2::debug)
+                    cout << "Search Method used =  " << mode << endl;
+            }
+
+// VNS
+#ifdef BOOST
+            if (args.OptionId() == OPT_VNS_search) {
+                //                ToulBar2::searchMethod = VNS;
+                //                ToulBar2::vnsNeighborVarHeur = RANDOMVAR;
+                ToulBar2::lds = maxdiscrepancy;
+                ToulBar2::restart = maxrestarts;
+#ifdef OPENMPI
+                if (env0.ntasks > 1) {
+                    ToulBar2::searchMethod = RPDGVNS;
+                    ToulBar2::vnsParallel = true;
+                    ToulBar2::vnsNeighborVarHeur = MASTERCLUSTERRAND;
+                    ToulBar2::vnsParallelSync = false;
+                } else {
+                    ToulBar2::searchMethod = DGVNS;
+                    ToulBar2::vnsNeighborVarHeur = CLUSTERRAND;
+                }
+#else
+                ToulBar2::searchMethod = DGVNS;
+                ToulBar2::vnsNeighborVarHeur = CLUSTERRAND;
+#endif
+            }
+#ifdef OPENMPI
+            if (args.OptionId() == OPT_CPDGVNS_search) {
+                ToulBar2::searchMethod = CPDGVNS;
+                ToulBar2::vnsParallel = true;
+                ToulBar2::vnsNeighborVarHeur = MASTERCLUSTERRAND;
+            }
+            if (args.OptionId() == OPT_RADGVNS_search) {
+                ToulBar2::searchMethod = RPDGVNS;
+                ToulBar2::vnsParallel = true;
+                ToulBar2::vnsNeighborVarHeur = MASTERCLUSTERRAND;
+                ToulBar2::vnsParallelSync = false;
+            }
+            if (args.OptionId() == OPT_RSDGVNS_search) {
+                ToulBar2::searchMethod = RPDGVNS;
+                ToulBar2::vnsParallel = true;
+                ToulBar2::vnsNeighborVarHeur = MASTERCLUSTERRAND;
+                ToulBar2::vnsParallelSync = true;
+            }
+#endif
+            if (args.OptionId() == OPT_TREEDEC_search) {
+                ToulBar2::searchMethod = TREEDEC;
+            }
+            if (args.OptionId() == OPT_decfile) {
+                ToulBar2::clusterFile = args.OptionArg();
+                ifstream decfile(ToulBar2::clusterFile.c_str());
+                if (!decfile) {
+                    cerr << "File " << ToulBar2::clusterFile << " not found!" << endl;
+                    exit(EXIT_FAILURE);
+                }
+            }
+
+            if (args.OptionId() == OPT_vns_output) {
+#ifdef OPENMPI
+                if (env0.myrank == 0) {
+#endif
+                    ToulBar2::vnsOutput.clear();
+                    ToulBar2::vnsOutput.open(args.OptionArg(),
+                        ios::out | ios::trunc);
+                    if (!ToulBar2::vnsOutput) {
+                        cerr << "File " << args.OptionArg() << " cannot be open!" << endl;
+#ifdef OPENMPI
+                        for (int rank = 1; rank < env0.ntasks; ++rank) {
+                            MPI_Send(0, 0, MPI_INT, rank, DIETAG, MPI_COMM_WORLD);
+                        }
+#endif
+                        exit(EXIT_FAILURE);
+                    }
+#ifdef OPENMPI
+                }
+#endif
+            }
+            if (args.OptionId() == OPT_vns_sol_init) {
+                if (args.OptionArg() != NULL)
+                    ToulBar2::vnsInitSol = static_cast<VNSSolutionInitMethod>(atoi(args.OptionArg()));
+            }
+            if (args.OptionId() == OPT_lds_min) {
+                if (args.OptionArg() != NULL)
+                    ToulBar2::vnsLDSmin = atoi(args.OptionArg());
+            }
+            if (args.OptionId() == OPT_lds_max) {
+                if (args.OptionArg() != NULL)
+                    ToulBar2::vnsLDSmax = atoi(args.OptionArg());
+            }
+            if (args.OptionId() == OPT_lds_inc) {
+                if (args.OptionArg() != NULL)
+                    ToulBar2::vnsLDSinc = static_cast<VNSInc>(atoi(args.OptionArg()));
+            }
+            if (args.OptionId() == OPT_k_min) {
+                if (args.OptionArg() != NULL)
+                    ToulBar2::vnsKmin = atoi(args.OptionArg());
+            }
+            if (args.OptionId() == OPT_k_max) {
+                if (args.OptionArg() != NULL)
+                    ToulBar2::vnsKmax = atoi(args.OptionArg());
+            }
+            if (args.OptionId() == OPT_k_inc) {
+                if (args.OptionArg() != NULL)
+                    ToulBar2::vnsKinc = static_cast<VNSInc>(atoi(args.OptionArg()));
+            }
+            //            if (args.OptionId() == OPT_vns_restart_strategy) {
+            //                if (args.OptionArg() != NULL) {
+            //                    string type = args.OptionArg();
+            //                    if (type.compare("0") == 0) {
+            //                        ToulBar2::vnsRestart = VNS_NORESTART;
+            //                    } else if (type.compare("1") == 0) {
+            //                        ToulBar2::vnsRestart = VNS_RESET;
+            //                    } else if (type.compare("2") == 0) {
+            //                        ToulBar2::vnsRestart = VNS_RESET_INC;
+            //                    } else if (type.compare("3") == 0) {
+            //                        ToulBar2::vnsRestart = VNS_FULL_RESTART;
+            //                    } else {
+            //                        if (env0.myrank == 0) {
+            //                            cout << "Error : No implementation found for the given strategy"
+            //                                 << endl;
+            //                            cout << "Program will exit" << endl;
+            //                        }
+            //                        exit(EXIT_FAILURE);
+            //                    }
+            //                } else {
+            //                    cout << "Warning : The strategy for local search method is NoRestart"
+            //                         << endl;
+            //                    cout << "specify for example --reset=2, to use ResetIncr strategy"
+            //                         << endl;
+            //                }
+            //            }
+            //            if (args.OptionId() == OPT_vns_var_heur) {
+            //                if (args.OptionArg() != NULL)
+            //                    ToulBar2::vnsNeighborVarHeur = static_cast<VNSVariableHeuristic>(atoi(args.OptionArg()));
+            //            }
+            if (args.OptionId() == OPT_neighbor_change) {
+                ToulBar2::vnsNeighborChange = true;
+            }
+            if (args.OptionId() == OPT_neighbor_synch) {
+                ToulBar2::vnsNeighborSizeSync = true;
+            }
+#ifdef OPENMPI
+            if (args.OptionId() == OPT_plimit) {
+                ToulBar2::vnsParallelLimit = true;
+            }
+#endif
+            if (args.OptionId() == OPT_optimum) {
+                if (args.OptionArg() != NULL)
+                    //                    ToulBar2::vnsOptimum = atoll(args.OptionArg());
+                    ToulBar2::vnsOptimumS = args.OptionArg();
+            }
+#endif
+
+            if (args.OptionId() == OPT_stdin) {
+                // stdin format reading by default stdin type is cfn format
+                ToulBar2::stdin_format = args.OptionArg();
+                if (ToulBar2::stdin_format.length() == 0) {
+                    ToulBar2::stdin_format = "cfn";
+                } else {
+                    if (ToulBar2::stdin_format.compare("bep") == 0 || ToulBar2::stdin_format.compare("map") == 0 || ToulBar2::stdin_format.compare("pre") == 0) {
+                        cerr << "Error: cannot read this " << ToulBar2::stdin_format << " format using stdin option!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                }
+                //      cout << "pipe STDIN on waited FORMAT : " << ToulBar2::stdin_format<<endl;
+            }
+
+            // BTD root cluster
+            if (args.OptionId() == OPT_btdRootCluster) {
+                int root = atoi(args.OptionArg());
+                if (root > 0)
+                    ToulBar2::btdRootCluster = root;
+            }
+            // btd SubTree initialisation sub cluster
+
+            if (args.OptionId() == OPT_btdSubTree) {
+                int subcluster = atoi(args.OptionArg());
+                if (subcluster >= 1)
+                    ToulBar2::btdSubTree = subcluster;
+            }
+            //cluster Max size
+            if (args.OptionId() == OPT_splitClusterMaxSize) {
+                int cmaxsize = atoi(args.OptionArg());
+                if (cmaxsize >= 1)
+                    ToulBar2::splitClusterMaxSize = cmaxsize;
+            }
+
+            // E : merge leaf clusters with their fathers if small local treewidth
+            if (args.OptionId() == OPT_boostingBTD) {
+                ToulBar2::boostingBTD = 0.7;
+                if (args.OptionArg() != NULL) {
+                    double ratio = atof(args.OptionArg());
+                    if (fabs(ratio) > 0. && fabs(ratio) <= 1.)
+                        ToulBar2::boostingBTD = ratio;
+                }
+                if (ToulBar2::debug)
+                    cout << "boostingBTD ON: " << ToulBar2::boostingBTD << endl;
+            } else if (args.OptionId() == NO_OPT_boostingBTD) {
+                ToulBar2::boostingBTD = 0.;
+                if (ToulBar2::debug)
+                    cout << "boostingBTD OFF " << ToulBar2::boostingBTD << endl;
+            }
+
+            //   -r=[integer] : limit on maximum cluster separator size (merge cluster with its father otherwise, use a negative value for no limit)
+            if (args.OptionId() == OPT_maxSeparatorSize) {
+                int sepmaxsize = atoi(args.OptionArg());
+                if (sepmaxsize >= -1)
+                    ToulBar2::maxSeparatorSize = sepmaxsize;
+            }
+            // minimal number of Proper variable included into each cluster of BTD
+            if (args.OptionId() == OPT_minProperVarSize) {
+                int minpvarsize = atoi(args.OptionArg());
+                if (minpvarsize >= 0)
+                    ToulBar2::minProperVarSize = minpvarsize;
+            }
+            // -help print command line HELP
+            if (args.OptionId() == OPT_HELP) {
+                //	ShowUsage();
+                help_msg(argv[0]);
+                return 0;
+            }
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            ////////////////////////////////////////////////////////////////////////////////////
+            // filename containing variable order
+
+            if (args.OptionId() == OPT_varOrder) {
+                int varElimOrder = atoi(args.OptionArg());
+                if (varElimOrder >= 0) {
+                    char buf[512];
+                    sprintf(buf, "%s", args.OptionArg());
+                    //				if (ToulBar2::varOrder) delete [] ToulBar2::varOrder;
+                    ToulBar2::varOrder = new char[strlen(buf) + 1];
+                    sprintf(ToulBar2::varOrder, "%s", buf);
+                    if (ToulBar2::debug)
+                        cout << "variable order read from file " << args.OptionArg() << endl;
+                } else {
+                    ToulBar2::varOrder = reinterpret_cast<char*>(-varElimOrder);
+                }
+            }
+
+            if (args.OptionId() == OPT_problemsaved_filename) {
+                char buf[512];
+                sprintf(buf, "%s", args.OptionArg());
+                ToulBar2::problemsaved_filename = to_string(buf);
+                //                if (!ToulBar2::dumpWCSP) ToulBar2::dumpWCSP = 1;
+                if (ToulBar2::debug)
+                    cout << "saved problem into file " << ToulBar2::problemsaved_filename << endl;
+            }
+
+            // filename of solution
+            if (args.OptionId() == OPT_PARTIAL_ASSIGNMENT) {
+                if (args.OptionArg() != NULL) {
+                    certificate = true;
+                    certificateString = args.OptionArg();
+                    if (ToulBar2::debug)
+                        cout << "partial assignment to be checked ..." << certificateString << endl;
+                } else {
+                    certificate = true;
+                    certificateFilename = (char*)"sol";
+                    if (ToulBar2::debug)
+                        cout << "certificate of solution read in file: ./" << certificateFilename << endl;
+                }
+            } else if (args.OptionId() == NO_OPT_PARTIAL_ASSIGNMENT) {
+                updateValueHeuristic = false;
+            }
+
+            // show Solutions
+            if (args.OptionId() == OPT_showSolutions) {
+                if (args.OptionArg() != NULL) {
+                    int showType = atoi(args.OptionArg());
+                    if (showType > 0 && showType < 4)
+                        ToulBar2::showSolutions = showType;
+                } else
+                    ToulBar2::showSolutions = 1;
+            }
+
+            //#############################################
+            if (args.OptionId() == OPT_writeSolution) {
+                if (!ToulBar2::writeSolution)
+                    ToulBar2::writeSolution = 1;
+                if (solutionFileName == NULL)
+                    solutionFileName = (char*)"sol";
+
+                if (args.OptionArg() != NULL) {
+                    char* tmpFile = new char[strlen(args.OptionArg()) + 1];
+                    strcpy(tmpFile, args.OptionArg());
+                    if (strlen(tmpFile) == 1 && (tmpFile[0] == '0' || tmpFile[0] == '1' || tmpFile[0] == '2' || tmpFile[0] == '3')) {
+                        if (atoi(tmpFile) <= 2)
+                            ToulBar2::pedigreeCorrectionMode = atoi(tmpFile);
+                        if (atoi(tmpFile) >= 1)
+                            ToulBar2::writeSolution = atoi(tmpFile);
+                    } else {
+                        solutionFileName = tmpFile;
+                    }
+                }
+            }
+
+            if (args.OptionId() == OPT_pedigreePenalty) {
+                ToulBar2::pedigreePenalty = 1;
+                int penaltyThreshold = atoi(args.OptionArg());
+                if (penaltyThreshold >= 1)
+                    ToulBar2::pedigreePenalty = penaltyThreshold;
+            }
+            // counting
+            if (args.OptionId() == OPT_allSolutions) {
+                ToulBar2::allSolutions = LONGLONG_MAX;
+                if (args.OptionArg() != NULL) {
+                    Long nbsol = atoll(args.OptionArg());
+                    if (nbsol > 0)
+                        ToulBar2::allSolutions = nbsol;
+                }
+            }
+
+            // approximate counting
+
+            if (args.OptionId() == OPT_approximateCountingBTD) {
+                ToulBar2::approximateCountingBTD = true;
+                ToulBar2::allSolutions = LONGLONG_MAX;
+                ToulBar2::btdMode = 1;
+            }
+
+            if (args.OptionId() == OPT_binaryBranching) {
+                ToulBar2::binaryBranching = true;
+            }
+            if (args.OptionId() == NO_OPT_binaryBranching) {
+                ToulBar2::binaryBranching = false;
+            }
+
+            // static variable ordering
+
+            if (args.OptionId() == OPT_Static_variable_ordering) {
+                ToulBar2::Static_variable_ordering = true;
+            } else if (args.OptionId() == NO_OPT_Static_variable_ordering) {
+                ToulBar2::Static_variable_ordering = false;
+            }
+
+            // last conflict
+
+            if (args.OptionId() == OPT_lastConflict) {
+                ToulBar2::binaryBranching = true;
+                ToulBar2::lastConflict = true;
+            } else if (args.OptionId() == NO_OPT_lastConflict) {
+                ToulBar2::lastConflict = false;
+            }
+
+            if (args.OptionId() == OPT_dichotomicBranching) {
+                if (args.OptionArg() == NULL) {
+                    ToulBar2::dichotomicBranching = 1;
+                } else {
+                    int dico = atoi(args.OptionArg());
+                    if (dico > 0)
+                        ToulBar2::dichotomicBranching = dico;
+                    cout << "dichotomicBranching=" << ToulBar2::dichotomicBranching << endl;
+                }
+            } else if (args.OptionId() == NO_OPT_dichotomicBranching) {
+                ToulBar2::dichotomicBranching = 0;
+            }
+
+            if (args.OptionId() == OPT_sortDomains) {
+                ToulBar2::sortDomains = true;
+            } else if (args.OptionId() == NO_OPT_sortDomains) {
+                ToulBar2::sortDomains = false;
+            }
+
+            if (args.OptionId() == OPT_solutionBasedPhaseSaving) {
+                ToulBar2::solutionBasedPhaseSaving = true;
+            } else if (args.OptionId() == NO_OPT_solutionBasedPhaseSaving) {
+                ToulBar2::solutionBasedPhaseSaving = false;
+            }
+
+            if (args.OptionId() == OPT_weightedTightness) {
+                if (args.OptionArg() != NULL) {
+                    int weightedtight = atol(args.OptionArg());
+                    if (weightedtight >= 0)
+                        ToulBar2::weightedTightness = weightedtight;
+                } else {
+                    ToulBar2::weightedTightness = 2;
+                }
+                if (ToulBar2::weightedTightness && !ToulBar2::weightedDegree)
+                    ToulBar2::weightedDegree = 1000000;
+            } else if (args.OptionId() == NO_OPT_weightedTightness) {
+                ToulBar2::weightedTightness = 0;
+            }
+
+            // weitghted Degree (var ordering )
+            if (args.OptionId() == OPT_weightedDegree and args.OptionArg() != NULL) {
+                int weighteddegree = atol(args.OptionArg());
+                if (weighteddegree > 0)
+                    ToulBar2::weightedDegree = weighteddegree;
+            } else if (args.OptionId() == NO_OPT_weightedDegree) {
+                ToulBar2::weightedDegree = 0;
+                ToulBar2::weightedTightness = 0;
+                if (ToulBar2::debug)
+                    cout << "ToulBar2::weightedDegree = false" << endl;
+            }
+
+            // LIMIT BRANCHING ON FIRST nbDecisionVars VARIABLES OPTION
+            if (args.OptionId() == OPT_nbDecisionVars) {
+                ToulBar2::nbDecisionVars = atoi(args.OptionArg());
+            }
+
+            //////////////////////////////////////////////////////
+
+            if (args.OptionId() == NO_OPT_elimDegree) {
+                ToulBar2::elimDegree = -1;
+                if (ToulBar2::debug)
+                    cout << "elimDegree OFF " << ToulBar2::elimDegree << endl;
+
+            } else if (args.OptionId() == OPT_elimDegree and args.OptionArg() != NULL) {
+                int ndegree = -1;
+                ndegree = atol(args.OptionArg());
+                if ((ndegree >= 0) && (ndegree <= 3)) {
+                    ToulBar2::elimDegree = ndegree;
+                }
+                if (ToulBar2::debug)
+                    cout << "elimDegree ON " << ToulBar2::elimDegree << endl;
+            }
+            ////////////////////////////////////////////
+
+            // p[integer]: preprocessing only: general variable elimination of degree less than or equal to the given value
+            // elimination degree in preprocessing
+            if (args.OptionId() == OPT_elimDegree_preprocessing) {
+                int ndegree;
+
+                if (args.OptionArg() != NULL) {
+                    ndegree = atoi(args.OptionArg());
+                    if (ndegree != 0)
+                        ToulBar2::elimDegree_preprocessing = ndegree;
+                    if (ndegree < 0)
+                        ToulBar2::elimSpaceMaxMB = 128;
+                } else
+                    ToulBar2::elimDegree_preprocessing = 3;
+                if (ToulBar2::debug)
+                    cout << "elimDegree_preprocessing ON: " << ToulBar2::elimDegree_preprocessing << endl;
+
+            } else if (args.OptionId() == NO_OPT_elimDegree_preprocessing) {
+                ToulBar2::elimDegree_preprocessing = -1;
+                if (ToulBar2::debug)
+                    cout << "elimDegree_preprocessing OFF: " << ToulBar2::elimDegree_preprocessing << endl;
+            }
+
+            // VAC PARAMETER
+            if (args.OptionId() == OPT_minsumDiffusion)
+
+            {
+                if (!ToulBar2::vac)
+                    ToulBar2::vac = 1;
+                ToulBar2::minsumDiffusion = 1000;
+                int nit = atoi(args.OptionArg());
+                if (nit > 0)
+                    ToulBar2::minsumDiffusion = nit;
+            }
+
+            if (args.OptionId() == OPT_vac) {
+                ToulBar2::vac = 1;
+                if (args.OptionArg() == NULL) {
+                    ToulBar2::vac = 1;
+                } else {
+                    int depth = atoi(args.OptionArg());
+                    if (depth != 0)
+                        ToulBar2::vac = depth;
+                }
+                if (ToulBar2::debug)
+                    cout << "VAC propagation ON" << endl;
+
+            } else if (args.OptionId() == NO_OPT_vac) {
+                if (ToulBar2::debug)
+                    cout << "VAC propagation OFF" << endl;
+
+                ToulBar2::vac = 0;
+            }
+
+            if (args.OptionId() == OPT_costThreshold) {
+                //Cost ct = string2Cost(args.OptionArg());
+                //if (ct > UNIT_COST)
+                ToulBar2::costThresholdS = args.OptionArg();
+            }
+
+            if (args.OptionId() == OPT_costThresholdPre) {
+                //Cost ct = string2Cost(args.OptionArg());
+                //if (ct > UNIT_COST)
+                ToulBar2::costThresholdPreS = args.OptionArg();
+            }
+
+            if (args.OptionId() == OPT_costMultiplier) {
+                double co = atof(args.OptionArg());
+                if (co > MIN_COST)
+                    ToulBar2::costMultiplier = co;
+            }
+
+            if (args.OptionId() == OPT_qpbo_mult) {
+                double co = atof(args.OptionArg());
+                if (co != 0.)
+                    ToulBar2::qpboQuadraticCoefMultiplier = co;
+            }
+
+            if (args.OptionId() == OPT_singletonConsistency)
+                ToulBar2::singletonConsistency = true;
+            if (args.OptionId() == OPT_vacValueHeuristic)
+                ToulBar2::vacValueHeuristic = true;
+            else if (args.OptionId() == NO_OPT_vacValueHeuristic)
+                ToulBar2::vacValueHeuristic = false;
+            if (args.OptionId() == OPT_preprocessTernary) {
+                if (args.OptionArg() != NULL) {
+                    int size = atol(args.OptionArg());
+                    if (size >= 0)
+                        ToulBar2::preprocessTernaryRPC = size;
+                } else
+                    ToulBar2::preprocessTernaryRPC = 128;
+            } else if (args.OptionId() == NO_OPT_preprocessTernary) {
+                if (ToulBar2::debug)
+                    cout << "preprocess triangles of binary cost functions into ternary cost functions OFF" << endl;
+                ToulBar2::preprocessTernaryRPC = 0;
+            }
+
+            if (args.OptionId() == OPT_trwsAccuracy) {
+                if (args.OptionArg() == NULL) {
+                    ToulBar2::trwsAccuracy = 0.00001;
+                } else {
+                    double co = atof(args.OptionArg());
+                    if (co >= 0.)
+                        ToulBar2::trwsAccuracy = co;
+                    else
+                        ToulBar2::trwsAccuracy = -1.;
+                }
+            } else if (args.OptionId() == NO_OPT_trws) {
+                ToulBar2::trwsAccuracy = -1.;
+            }
+            if (args.OptionId() == OPT_trwsOrder) {
+                ToulBar2::trwsOrder = true;
+            } else if (args.OptionId() == NO_OPT_trwsOrder) {
+                ToulBar2::trwsOrder = false;
+            }
+            if (args.OptionId() == OPT_trwsNIter) {
+                ToulBar2::trwsNIter = atol(args.OptionArg());
+            }
+            if (args.OptionId() == OPT_trwsNIterNoChange) {
+                ToulBar2::trwsNIterNoChange = atol(args.OptionArg());
+            }
+            if (args.OptionId() == OPT_trwsNIterComputeUb) {
+                ToulBar2::trwsNIterComputeUb = atol(args.OptionArg());
+            }
+
+            // elimination of functional variables
+            if (args.OptionId() == OPT_preprocessFunctional) {
+                if (args.OptionArg() == NULL) {
+                    ToulBar2::preprocessFunctional = 1;
+                } else {
+                    int func = atoi(args.OptionArg());
+                    if (func > 0)
+                        ToulBar2::preprocessFunctional = func;
+                }
+                if (ToulBar2::debug)
+                    cout << "elimination of functional variables ON " << ToulBar2::preprocessFunctional << endl;
+
+            } else if (args.OptionId() == NO_OPT_preprocessFunctional) {
+                if (ToulBar2::debug)
+                    cout << "elimination of functional variables OFF" << endl;
+                ToulBar2::preprocessFunctional = 0;
+            }
+
+            if (args.OptionId() == OPT_costfuncSeparate) {
+                if (ToulBar2::debug)
+                    cout << "decomposition of cost functions" << endl;
+                ToulBar2::costfuncSeparate = true;
+            } else if (args.OptionId() == NO_OPT_costfuncSeparate) {
+                if (ToulBar2::debug)
+                    cout << "decomposition of cost functions OFF" << endl;
+                ToulBar2::costfuncSeparate = false;
+            }
+
+            if (args.OptionId() == NO_OPT_DEE) {
+                if (ToulBar2::debug)
+                    cout << "dead-end elimination OFF" << endl;
+                ToulBar2::DEE = 0;
+            } else if (args.OptionId() == OPT_DEE) {
+                ToulBar2::DEE = 1;
+                if (args.OptionArg() != NULL) {
+                    int dee = atoi(args.OptionArg());
+                    if (dee >= 0)
+                        ToulBar2::DEE = dee;
+                }
+                if (ToulBar2::debug)
+                    cout << "dead-end elimination: " << ToulBar2::DEE << endl;
+            }
+
+            // pre projection of nary cost functions
+            if (args.OptionId() == OPT_preprocessNary) {
+                if (args.OptionArg() == NULL) {
+                    ToulBar2::preprocessNary = 10;
+                } else {
+                    int maxnary = atoi(args.OptionArg());
+                    if (maxnary > 0)
+                        ToulBar2::preprocessNary = maxnary;
+                }
+                if (ToulBar2::debug)
+                    cout << "preproject cost functions with arity lower than " << ToulBar2::preprocessNary << " ON" << endl;
+
+            } else if (args.OptionId() == NO_OPT_preprocessNary) {
+                if (ToulBar2::debug)
+                    cout << "preproject of n-ary cost functions OFF" << endl;
+                ToulBar2::preprocessNary = 0;
+            }
+
+            if (args.OptionId() == OPT_QueueComplexity)
+                ToulBar2::QueueComplexity = true;
+            if (args.OptionId() == OPT_MSTDAC)
+                ToulBar2::MSTDAC = true;
+            else if (args.OptionId() == NO_OPT_MSTDAC)
+                ToulBar2::MSTDAC = false;
+
+            // LDS
+            if (args.OptionId() == OPT_lds) {
+                string comment;
+                if (args.OptionArg() == NULL) {
+                    ToulBar2::lds = maxdiscrepancy;
+                    comment = " (default value) ";
+                } else {
+                    int maxlds = atoi(args.OptionArg());
+                    if (maxlds > 0 || maxlds < 0) {
+                        ToulBar2::lds = maxlds;
+                        ToulBar2::vnsLDSmin = abs(maxlds);
+                        ToulBar2::vnsLDSmax = abs(maxlds);
+                    }
+                }
+                if (ToulBar2::debug)
+                    cout << "LDS ON #iter = " << ToulBar2::lds << comment << endl;
+
+            } else if (args.OptionId() == NO_OPT_lds) {
+                ToulBar2::lds = 0;
+                if (ToulBar2::debug)
+                    cout << "LDS OFF iter = " << ToulBar2::lds << endl;
+            }
+
+            // restart option
+            if (args.OptionId() == OPT_restart) {
+                string comment;
+                if (args.OptionArg() == NULL) {
+                    comment = " (default value) ";
+                    ToulBar2::restart = maxrestarts;
+                } else {
+                    Long maxbt = atoll(args.OptionArg());
+                    if (maxbt >= 0)
+                        ToulBar2::restart = maxbt;
+                }
+                if (ToulBar2::debug)
+                    cout << "restart ON #iter = " << ToulBar2::restart << comment << endl;
+            } else if (args.OptionId() == NO_OPT_restart) {
+                if (ToulBar2::debug)
+                    cout << "restart OFF" << endl;
+                ToulBar2::restart = -1;
+            }
+
+            // backtrack limit option
+            if (args.OptionId() == OPT_btlimit) {
+                string comment;
+                if (args.OptionArg() == NULL) {
+                    comment = " (default value) ";
+                    ToulBar2::backtrackLimit = maxrestarts;
+                } else {
+                    Long maxbt = atoll(args.OptionArg());
+                    if (maxbt >= 0)
+                        ToulBar2::backtrackLimit = maxbt;
+                }
+                if (ToulBar2::debug)
+                    cout << "backtrack limit ON #bt = " << ToulBar2::backtrackLimit << comment << endl;
+            } else if (args.OptionId() == NO_OPT_btlimit) {
+                if (ToulBar2::debug)
+                    cout << "backtrack limit OFF" << endl;
+                ToulBar2::backtrackLimit = LONGLONG_MAX;
+            }
+
+            // hybrid BFS option
+            if (args.OptionId() == OPT_hbfs) {
+                string comment;
+                if (args.OptionArg() == NULL) {
+                    comment = " (default value) ";
+                    ToulBar2::hbfsGlobalLimit = hbfsgloballimit;
+                } else {
+                    Long maxbt = atoll(args.OptionArg());
+                    if (maxbt > 0)
+                        ToulBar2::hbfsGlobalLimit = maxbt;
+                    else
+                        ToulBar2::hbfsGlobalLimit = hbfsgloballimit;
+                }
+                ToulBar2::hbfs = 1; // initial value to perform a greedy search exploration before visiting a new open search node
+                if (ToulBar2::debug)
+                    cout << "hybrid BFS ON with global backtrack limit = " << ToulBar2::hbfsGlobalLimit << comment << endl;
+            } else if (args.OptionId() == NO_OPT_hbfs) {
+                if (ToulBar2::debug)
+                    cout << "hybrid BFS OFF" << endl;
+                ToulBar2::hbfs = 0;
+                ToulBar2::hbfsGlobalLimit = 0;
+            }
+            if (args.OptionId() == OPT_open) {
+                ToulBar2::hbfsOpenNodeLimit = OPEN_NODE_LIMIT;
+                Long openlimit = atoll(args.OptionArg());
+                if (openlimit > 0)
+                    ToulBar2::hbfsOpenNodeLimit = openlimit;
+                if (ToulBar2::hbfsGlobalLimit == 0)
+                    ToulBar2::hbfsGlobalLimit = hbfsgloballimit;
+                ToulBar2::hbfs = 1; // initial value to perform a greedy search exploration before visiting a new open search node
+                if (ToulBar2::debug)
+                    cout << "hybrid BFS ON with open node limit = " << ToulBar2::hbfsOpenNodeLimit << endl;
+            }
+
+            // local search INCOP
+            if (args.OptionId() == OPT_localsearch) {
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::incop_cmd = args.OptionArg();
+                } else {
+                    ToulBar2::incop_cmd = Incop_cmd;
+                }
+            }
+
+            // EDAC OPTION
+            if (args.OptionId() == OPT_EDAC) {
+                ToulBar2::LcLevel = LC_EDAC;
+                LcLevelType lclevel = (LcLevelType)atoi(args.OptionArg());
+                if ((lclevel >= LC_NC) && (lclevel < LC_THEMAX))
+                    ToulBar2::LcLevel = lclevel;
+            }
+
+            ////////////////////////////////////////////////////////////////////////////////////////
+            ////////		MEDELSOFT command line processing 	////////////////////////
+            ////////////////////////////////////////////////////////////////////////////////////////
+
+            // g  sort pedigree by increasing generation number and if equal by increasing individual number
+
+            if (args.OptionId() == OPT_generation) {
+                ToulBar2::generation = true;
+                if (ToulBar2::debug)
+                    cout << "-g flag ==> sort pedigree option ON" << endl;
+            }
+
+            // bayesien -y [genotypinpErrorRate probabilityPrecision genotypePriorMode]  : pedigree solved by Bayesian MPE
+
+            if (args.OptionId() == MENDEL_OPT_genotypingErrorRate) {
+                if (args.OptionArg() != NULL) {
+                    float f;
+                    sscanf(args.OptionArg(), "%f", &f);
+                    ToulBar2::errorg = f;
+                    if (ToulBar2::debug)
+                        cout << "New assignment for genotyping Error Rate = " << ToulBar2::errorg << endl;
+                }
+            }
+
+            if (args.OptionId() == MENDEL_OPT_resolution) {
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::resolution = atoi(args.OptionArg());
+                    if (ToulBar2::debug)
+                        cout << "New assignment for precision = " << ToulBar2::resolution << endl;
+                }
+            }
+
+            if (args.OptionId() == OPT_pedigree_by_MPE) {
+                ToulBar2::bayesian = true;
+                if (ToulBar2::debug)
+                    cout << endl;
+                if (ToulBar2::debug)
+                    cout << "<<< Bayesian mode ON >>>" << endl;
+
+                if (ToulBar2::verbose >= 1) {
+                    cout << endl;
+                    cout << "genotypingErrorRate = " << ToulBar2::errorg << " (default value)" << endl;
+                    cout << "resolution = " << ToulBar2::resolution << " (default value)" << endl;
+                    cout << endl;
+                }
+            }
+
+            if (args.OptionId() == MENDEL_OPT_EQUAL_FREQ && ToulBar2::bayesian) {
+
+                ToulBar2::foundersprob_class = 0;
+                if (ToulBar2::debug)
+                    cout << "equal frequencies used ( default mode)" << ToulBar2::foundersprob_class << endl;
+
+            } else if (args.OptionId() == MENDEL_OPT_ESTIMAT_FREQ && ToulBar2::bayesian) {
+                ToulBar2::foundersprob_class = 1;
+                if (ToulBar2::debug)
+                    cout << " => prob depending on the frequencies found in the current pedigree probleme used" << endl;
+
+            } else if (args.OptionId() == MENDEL_OPT_ALLOCATE_FREQ && ToulBar2::bayesian) {
+                if (ToulBar2::debug)
+                    cout << " => prob frequencies read from command line" << endl;
+                ToulBar2::foundersprob_class = 2;
+                Pedi_Args(args, -1);
+            }
+
+            ////////////////////////////////////////////////////////////////////////////////////////
+            /////				DEBUG and verbose LEVEL  management + DUMP
+            ////////////////////////////////////////////////////////////////////////////////////////
+            //verbose mode
+            //   v: verbosity level
+            if (args.OptionId() == OPT_verbose) {
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::verbose = atoi(args.OptionArg());
+                } else {
+                    ToulBar2::verbose = 0;
+                }
+                if (ToulBar2::debug)
+                    cout << "verbose level = " << ToulBar2::verbose << endl;
+            }
+
+            //  z: save problem in wcsp/cfn format in filename \"problem.wcsp/cfn\" (1/3:before, 2/4:current problem after preprocessing)
+
+            if (args.OptionId() == OPT_dumpWCSP) {
+                if (args.OptionArg() != NULL) {
+                    if (strlen(args.OptionArg()) == 1 && args.OptionArg()[0] >= '1' && args.OptionArg()[0] <= '4') {
+                        ToulBar2::dumpWCSP = atoi(args.OptionArg());
+                        if (ToulBar2::problemsaved_filename.rfind(".cfn") != string::npos && static_cast<ProblemFormat>((ToulBar2::dumpWCSP >> 1)+(ToulBar2::dumpWCSP & 1)) != CFN_FORMAT) {
+                            cerr << "Error: filename extension .cfn not compatible with option -z=" << ToulBar2::dumpWCSP << endl;
+                            exit(EXIT_FAILURE);
+                        }
+                        if (ToulBar2::problemsaved_filename.rfind(".wcsp") != string::npos && static_cast<ProblemFormat>((ToulBar2::dumpWCSP >> 1)+(ToulBar2::dumpWCSP & 1)) != WCSP_FORMAT) {
+                            cerr << "Error: filename extension .wcsp not compatible with option -z=" << ToulBar2::dumpWCSP << endl;
+                            exit(EXIT_FAILURE);
+                        }
+                    } else {
+                        ToulBar2::problemsaved_filename = to_string(args.OptionArg());
+                        if (ToulBar2::problemsaved_filename.rfind(".cfn") != string::npos && !ToulBar2::dumpWCSP)
+                            ToulBar2::dumpWCSP = 3;
+                        else
+                            ToulBar2::dumpWCSP = 1;
+                    }
+                } else if (!ToulBar2::dumpWCSP)
+                    ToulBar2::dumpWCSP = 1;
+
+                if (ToulBar2::debug) {
+                    cout << "Problem will be saved in " << ToulBar2::problemsaved_filename;
+                    cout << "after " << ((ToulBar2::dumpWCSP % 2) ? "loading." : "preprocessing.") << endl;
+                }
+            }
+            //   Z: debug mode (save problem at each node if verbosity option set!)
+            //		for (int j=0; argv[i][j] != 0; j++) if (argv[i][j]=='Z') ToulBar2::debug++;
+
+            if (args.OptionId() == OPT_debug) {
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::debug = atoi(args.OptionArg());
+                } else
+                    ToulBar2::debug = 1;
+                if (ToulBar2::debug)
+                    cout << "debug level = " << ToulBar2::debug << endl;
+            }
+
+            // discrete integration for computing the partition function Z
+            if (args.OptionId() == OPT_Z)
+                ToulBar2::isZ = true;
+
+            if (args.OptionId() == OPT_epsilon) {
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::logepsilon = -Log(atof(args.OptionArg()));
+                    if (ToulBar2::debug)
+                        cout << "New assignment for epsilon = " << Exp(-ToulBar2::logepsilon) << endl;
+                }
+            }
+
+            if (args.OptionId() == OPT_learning) {
+                ToulBar2::learning = true;
+            }
+
+#ifndef NDEBUG
+            if (args.OptionId() == OPT_verifyopt)
+                ToulBar2::verifyOpt = true;
+#endif
+
+            // diversity
+            if (args.OptionId() == OPT_divDist) {
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::divBound = atoi(args.OptionArg());
+                    ToulBar2::divNbSol = maxdivnbsol;
+                    if (ToulBar2::debug)
+                        cout << "Diversity distance = " << ToulBar2::divBound << endl;
+                }
+            }
+
+            if (args.OptionId() == OPT_divWidth) {
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::divWidth = atoi(args.OptionArg());
+                    if (ToulBar2::debug)
+                        cout << "Diversity MDD maximum width = " << ToulBar2::divWidth << endl;
+                }
+            }
+
+            if (args.OptionId() == OPT_divMethod) {
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::divMethod = atoi(args.OptionArg());
+                    if (ToulBar2::debug)
+                        cout << "Diversity method = " << ToulBar2::divMethod << endl;
+                }
+            }
+
+            if (args.OptionId() == OPT_divRelax) {
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::divRelax = atoi(args.OptionArg());
+                    if (ToulBar2::debug)
+                        cout << "Diversity MDD relaxation method = " << ToulBar2::divRelax << endl;
+                }
+            }
+
+            // upper bound initialisation from command line
+            if (args.OptionId() == OPT_ub) {
+                ToulBar2::externalUB = args.OptionArg();
+                rtrim(ToulBar2::externalUB);
+            }
+
+            if (args.OptionId() == OPT_deltaUbAbsolute) {
+                ToulBar2::deltaUbS = args.OptionArg();
+                rtrim(ToulBar2::deltaUbS);
+            }
+
+            if (args.OptionId() == OPT_deltaUbRelative) {
+                ToulBar2::deltaUbRelativeGap = relativegap;
+                if (args.OptionArg() != NULL) {
+                    ToulBar2::deltaUbRelativeGap = atof(args.OptionArg());
+                }
+            }
+
+            // CPU timer
+            if (args.OptionId() == OPT_timer) {
+                if (args.OptionArg() != NULL) {
+                    timeout = atoi(args.OptionArg());
+                    if (ToulBar2::debug)
+                        cout << "TimeOut = " << timeout << endl;
+                }
+            }
+
+            //////////RANDOM GENERATOR///////
+            if (args.OptionId() == OPT_seed) {
+                int seed = atoi(args.OptionArg());
+                ToulBar2::seed = seed;
+            }
+
+            if (args.OptionId() == OPT_random) {
+
+                random_desc = args.OptionArg();
+            }
+
+            if (args.OptionId() == OPT_nopre) {
+                ToulBar2::elimDegree = -1;
+                if (ToulBar2::debug)
+                    cout << "elimDegree OFF " << ToulBar2::elimDegree << endl;
+                ToulBar2::elimDegree_preprocessing = -1;
+                if (ToulBar2::debug)
+                    cout << "elimDegree_preprocessing OFF: " << ToulBar2::elimDegree_preprocessing << endl;
+                if (ToulBar2::debug)
+                    cout << "preprocess triangles of binary cost functions into ternary cost functions OFF" << endl;
+                ToulBar2::preprocessTernaryRPC = 0;
+                if (ToulBar2::debug)
+                    cout << "elimination of functional variables OFF" << endl;
+                ToulBar2::preprocessFunctional = 0;
+                if (ToulBar2::debug)
+                    cout << "preproject of n-ary cost functions OFF" << endl;
+                ToulBar2::preprocessNary = 0;
+                if (ToulBar2::debug)
+                    cout << "decomposition of cost functions OFF" << endl;
+                ToulBar2::costfuncSeparate = false;
+                if (ToulBar2::debug)
+                    cout << "maximum spanning tree DAC ordering OFF" << endl;
+                ToulBar2::MSTDAC = false;
+                if (ToulBar2::debug)
+                    cout << "dead-end elimination OFF" << endl;
+                ToulBar2::DEE = 0;
+                if (ToulBar2::debug)
+                    cout << "TRW-S OFF" << endl;
+                ToulBar2::trwsAccuracy = -1.;
+            }
+
+            if (args.OptionId() == OPT_VACINT) {
+                ToulBar2::FullEAC = true;
+                if (ToulBar2::debug)
+                    cout << "Strict AC ON" << endl;
+            } else if (args.OptionId() == NO_OPT_VACINT) {
+                ToulBar2::FullEAC = false;
+                if (ToulBar2::debug)
+                    cout << "Strict AC OFF" << endl;
+            }
+
+            if (args.OptionId() == OPT_VACthreshold) {
+                ToulBar2::VACthreshold = true;
+                if (ToulBar2::debug)
+                    cout << "VAC iterations during search will go until the threshold calculated by RASPS approach." << endl;
+            } else if (args.OptionId() == NO_OPT_VACthreshold) {
+                ToulBar2::VACthreshold = false;
+                if (ToulBar2::debug)
+                    cout << "VAC automatic threshold OFF" << endl;
+            }
+
+            if (args.OptionId() == OPT_RASPS) {
+                if (args.OptionArg() == NULL) {
+                    if (ToulBar2::useRASPS == 0)
+                        ToulBar2::useRASPS = 1;
+                    ToulBar2::RASPSnbBacktracks = raspsbacktracks;
+                } else {
+                    Long limit = atoll(args.OptionArg());
+                    if (ToulBar2::useRASPS == 0)
+                        ToulBar2::useRASPS = 1;
+                    ToulBar2::RASPSnbBacktracks = limit;
+                }
+                if (ToulBar2::debug)
+                    cout << "RAPS ON " << ToulBar2::RASPSnbBacktracks << endl;
+            } else if (args.OptionId() == NO_OPT_RASPS) {
+                if (ToulBar2::debug)
+                    cout << "RASPS OFF" << endl;
+                ToulBar2::useRASPS = 0;
+            }
+
+            if (args.OptionId() == OPT_RASPSangle) {
+                if (args.OptionArg() == NULL)
+                    ToulBar2::RASPSangle = raspsangle;
+                else {
+                    int n = atoi(args.OptionArg());
+                    ToulBar2::RASPSangle = n;
+                }
+                if (ToulBar2::debug)
+                    cout << "RASPS angle set to " << ToulBar2::RASPSangle << "°" << endl;
+            } else if (args.OptionId() == NO_OPT_RASPSangle) {
+                if (ToulBar2::debug)
+                    cout << "RASPS angle set to 90°" << endl;
+                ToulBar2::RASPSangle = 90;
+            }
+
+            if (args.OptionId() == OPT_RASPSreset) {
+                ToulBar2::RASPSreset = true;
+                if (ToulBar2::debug)
+                    cout << "RASPS reset ON" << endl;
+            } else if (args.OptionId() == NO_OPT_RASPSreset) {
+                ToulBar2::RASPSreset = false;
+                if (ToulBar2::debug)
+                    cout << "RASPS reset OFF" << endl;
+            }
+
+            if (args.OptionId() == OPT_RASPSlds) {
+                if (args.OptionArg() == NULL)
+                    ToulBar2::useRASPS = maxdiscrepancy + 1;
+                else {
+                    int lds = atoi(args.OptionArg());
+                    if (lds > 0)
+                        ToulBar2::useRASPS = lds + 1;
+                }
+                if (ToulBar2::debug)
+                    cout << "RASPSlds" << ToulBar2::useRASPS << endl;
+            }
+        }
+
+        else {
+            cout << "<<<< ERROR >>>>  : " << endl;
+            _tprintf(
+                _T("%s: '%s' (use --help to get command line help)\n"),
+                GetLastErrorText(args.LastError()), args.OptionText());
+
+            _tprintf(_T("invalid Option :%s or Invalid argument: %s \n please check help using --help option "), args.OptionText(), args.OptionArg() ? args.OptionArg() : "");
+
+            return 1;
+        }
+    }
+    // process any files that were passed to us on the command line.
+    // send them to the globber so that all wildcards are expanded
+    // into valid filenames (e.g. *.cpp -> a.cpp, b.cpp, c.cpp, etc)
+    // See the SimpleGlob.h header file for details of the flags.
+    CSimpleGlob glob(SG_GLOB_NODOT | SG_GLOB_NOCHECK);
+    if (SG_SUCCESS != glob.Add(args.FileCount(), args.Files())) {
+        _tprintf(_T("Error while globbing files\n"));
+        return 1;
+    }
+
+    // dump all of the details, the script that was passed on the
+    // command line and the expanded file names
+    if (ToulBar2::verbose > 0) {
+        cout << "cmd line parsing ---> " << glob.FileCount() << " Filename(s) found in command line" << endl;
+    }
+    vector<string> strfile;
+    set<string> strext;
+
+    if (random_desc == NULL) {
+        for (int n = 0; n < glob.FileCount() + ((ToulBar2::stdin_format.size() > 0) ? 1 : 0); ++n) {
+            string problem = "";
+            if (n < glob.FileCount())
+                problem = to_string(glob.File(n));
+
+            if (check_file_ext(problem, file_extension_map["wcsp_ext"]) || ToulBar2::stdin_format.compare("wcsp") == 0) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading wcsp file: " << problem << endl;
+                strext.insert(".wcsp");
+                strfile.push_back(problem);
+            }
+            if (check_file_ext(problem, file_extension_map["wcspgz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading gzip'd wcsp file: " << problem << endl;
+                strext.insert(".wcsp.gz");
+                strfile.push_back(problem);
+                ToulBar2::gz = true;
+            }
+            if (check_file_ext(problem, file_extension_map["wcspxz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading xz compressed wcsp file: " << problem << endl;
+                strext.insert(".wcsp.xz");
+                strfile.push_back(problem);
+                ToulBar2::xz = true;
+            }
+            // CFN file
+            if (check_file_ext(problem, file_extension_map["cfn_ext"]) || ToulBar2::stdin_format.compare("cfn") == 0) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading cfn file: " << problem << endl;
+                strext.insert(".cfn");
+                strfile.push_back(problem);
+                ToulBar2::cfn = true;
+            }
+            // CFN gzip'd file
+            if (check_file_ext(problem, file_extension_map["cfngz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading gzip'd cfn file: " << problem << endl;
+                strext.insert(".cfn.gz");
+                strfile.push_back(problem);
+                ToulBar2::cfn = true;
+                ToulBar2::gz = true;
+            }
+            // CFN xz file
+            if (check_file_ext(problem, file_extension_map["cfnxz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading xz compressed cfn file: " << problem << endl;
+                strext.insert(".cfn.xz");
+                strfile.push_back(problem);
+                ToulBar2::cfn = true;
+                ToulBar2::xz = true;
+            }
+            // uai  file
+            if (check_file_ext(problem, file_extension_map["uai_ext"]) || ToulBar2::stdin_format.compare("uai") == 0) {
+                strfile.push_back(problem);
+                strext.insert(".uai");
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading uai file:  " << problem << endl;
+                ToulBar2::uai = 1;
+                ToulBar2::bayesian = true;
+            }
+            // uai  gzip'd file
+            if (check_file_ext(problem, file_extension_map["uaigz_ext"])) {
+                strfile.push_back(problem);
+                strext.insert(".uai.gz");
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading gzip'd uai file:  " << problem << endl;
+                ToulBar2::uai = 1;
+                ToulBar2::bayesian = true;
+                ToulBar2::gz = true;
+            }
+            // uai xz compressed file
+            if (check_file_ext(problem, file_extension_map["uaixz_ext"])) {
+                strfile.push_back(problem);
+                strext.insert(".uai.xz");
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading xz compressed uai file:  " << problem << endl;
+                ToulBar2::uai = 1;
+                ToulBar2::bayesian = true;
+                ToulBar2::xz = true;
+            }
+            // uai log file
+            if (check_file_ext(problem, file_extension_map["uai_log_ext"]) || ToulBar2::stdin_format.compare("LG") == 0) {
+                strfile.push_back(problem);
+                strext.insert(".LG");
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading uai log file:  " << problem << endl;
+                ToulBar2::uai = 2;
+                ToulBar2::bayesian = true;
+            }
+            // uai log file
+            if (check_file_ext(problem, file_extension_map["uaigz_log_ext"])) {
+                strfile.push_back(problem);
+                strext.insert(".LG.gz");
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading gzip'd uai log file:  " << problem << endl;
+                ToulBar2::uai = 2;
+                ToulBar2::bayesian = true;
+                ToulBar2::gz = true;
+            }
+            // uai log file
+            if (check_file_ext(problem, file_extension_map["uaixz_log_ext"])) {
+                strfile.push_back(problem);
+                strext.insert(".LG.xz");
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading xz compressed uai log file:  " << problem << endl;
+                ToulBar2::uai = 2;
+                ToulBar2::bayesian = true;
+                ToulBar2::xz = true;
+            }
+            // UAI evidence file
+            if (check_file_ext(problem, file_extension_map["evid_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading evidence file:  " << problem << endl;
+                ToulBar2::evidence_file = string(problem);
+            }
+
+            // xml file
+            if (check_file_ext(problem, file_extension_map["wcspXML_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading xml file:" << problem << endl;
+
+                ToulBar2::xmlflag = true;
+                if (!ToulBar2::writeSolution) {
+                    ToulBar2::writeSolution = 1;
+                    solutionFileName = (char*)"sol";
+                }
+                strext.insert(".xml");
+                strfile.push_back(problem);
+            }
+
+            // wcnf or cnf file
+            if (check_file_ext(problem, file_extension_map["wcnf_ext"]) || ToulBar2::stdin_format.compare("wcnf") == 0 || ToulBar2::stdin_format.compare("cnf") == 0) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading wcnf file:" << problem << endl;
+                ToulBar2::wcnf = true;
+                strext.insert(".wcnf");
+                strfile.push_back(problem);
+            } else if (check_file_ext(problem, file_extension_map["cnf_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading cnf file:" << problem << endl;
+                ToulBar2::wcnf = true;
+                strext.insert(".cnf");
+                strfile.push_back(problem);
+            }
+            if (check_file_ext(problem, file_extension_map["wcnfgz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading gzip'd wcnf file:" << problem << endl;
+                ToulBar2::wcnf = true;
+                strext.insert(".wcnf.gz");
+                strfile.push_back(problem);
+                ToulBar2::gz = true;
+            } else if (check_file_ext(problem, file_extension_map["cnfgz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading gzip'd cnf file:" << problem << endl;
+                ToulBar2::wcnf = true;
+                strext.insert(".cnf.gz");
+                strfile.push_back(problem);
+                ToulBar2::gz = true;
+            }
+            if (check_file_ext(problem, file_extension_map["wcnfxz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading xz compressed wcnf file:" << problem << endl;
+                ToulBar2::wcnf = true;
+                strext.insert(".wcnf.xz");
+                strfile.push_back(problem);
+                ToulBar2::xz = true;
+            } else if (check_file_ext(problem, file_extension_map["cnfxz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading xz compressed cnf file:" << problem << endl;
+                ToulBar2::wcnf = true;
+                strext.insert(".cnf.xz");
+                strfile.push_back(problem);
+                ToulBar2::xz = true;
+            }
+
+            // unconstrained quadratic programming file
+            if (check_file_ext(problem, file_extension_map["qpbo_ext"]) || ToulBar2::stdin_format.compare("qpbo") == 0) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading quadratic pseudo-Boolean optimization file:" << problem << endl;
+                ToulBar2::qpbo = true;
+                strext.insert(".qpbo");
+                strfile.push_back(problem);
+            }
+            if (check_file_ext(problem, file_extension_map["qpbogz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading gzip'd quadratic pseudo-Boolean optimization file:" << problem << endl;
+                ToulBar2::qpbo = true;
+                strext.insert(".qpbo.gz");
+                strfile.push_back(problem);
+                ToulBar2::gz = true;
+            }
+            if (check_file_ext(problem, file_extension_map["qpboxz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading xz compressed quadratic pseudo-Boolean optimization file:" << problem << endl;
+                ToulBar2::qpbo = true;
+                strext.insert(".qpbo.xz");
+                strfile.push_back(problem);
+                ToulBar2::xz = true;
+            }
+
+            // pseudo-Boolean optimization file
+            if (check_file_ext(problem, file_extension_map["opb_ext"]) || ToulBar2::stdin_format.compare("opb") == 0) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading pseudo-Boolean optimization file:" << problem << endl;
+                ToulBar2::opb = true;
+                strext.insert(".opb");
+                strfile.push_back(problem);
+            }
+            if (check_file_ext(problem, file_extension_map["opbgz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading gzip'd pseudo-Boolean optimization file:" << problem << endl;
+                ToulBar2::opb = true;
+                strext.insert(".opb.gz");
+                strfile.push_back(problem);
+                ToulBar2::gz = true;
+            }
+            if (check_file_ext(problem, file_extension_map["opbxz_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading xz compressed pseudo-Boolean optimization file:" << problem << endl;
+                ToulBar2::opb = true;
+                strext.insert(".opb.xz");
+                strfile.push_back(problem);
+                ToulBar2::xz = true;
+            }
+
+            // upperbound file
+
+            if (check_file_ext(problem, file_extension_map["ub_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading upper bound from file: " << problem << endl;
+                string ubstring = read_UB(problem.c_str());
+                if (ubstring.c_str() != NULL) {
+                    if (ToulBar2::externalUB.length() != 0) {
+                        cerr << "Error: cannot set upper bound from command line and file simultaneously." << endl;
+                        exit(EXIT_FAILURE);
+                    } else {
+                        ToulBar2::externalUB = ubstring;
+                    }
+                } else {
+                    cerr << "error reading UB in " << problem << endl;
+                    exit(-1);
+                }
+            }
+
+            // bep input file
+            if (check_file_ext(problem, file_extension_map["bep_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading BEP file: " << problem << endl;
+                strext.insert(".bep");
+                strfile.push_back(problem);
+            }
+
+            //////////////////////Mendelian-error analysis and haplotype reconstruction ////////////////////////////////////
+            // map file
+
+            if (check_file_ext(problem, file_extension_map["map_ext"])) {
+                ToulBar2::map_file = string(problem);
+                ToulBar2::haplotype = new Haplotype;
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading map file: " << ToulBar2::map_file << endl;
+
+                if (glob.FileCount() < 2) {
+                    cerr << "pedigree file is missing (.pre): " << endl;
+                    exit(-1);
+                }
+            }
+
+            // pre file
+            if (check_file_ext(problem, file_extension_map["pre_ext"])) {
+                strfile.push_back(problem);
+                strext.insert(".pre");
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading pre file: " << problem << endl;
+                if (glob.FileCount() < 2)
+                    ToulBar2::pedigree = new Pedigree;
+            }
+
+            //////////////////////VARIABLE ORDERING ////////////////////////////////////
+            // filename containing variable order
+            //if (strstr(problem,".order"))
+            if (check_file_ext(problem, file_extension_map["order_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading variable order in file: " << problem << endl;
+                //				if (ToulBar2::varOrder) delete [] ToulBar2::varOrder;
+                ToulBar2::varOrder = new char[problem.length() + 1];
+                sprintf(ToulBar2::varOrder, "%s", problem.c_str());
+            }
+
+            //////////////////////TREE DECOMPOSITION AND VARIABLE ORDERING ////////////////////////////////////
+            // filename containing list of clusters in topological ordering
+            //if (strstr(problem,".cov"))
+            if (check_file_ext(problem, file_extension_map["treedec_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading tree decomposition in file: " << problem << endl;
+                //              if (ToulBar2::varOrder) delete [] ToulBar2::varOrder;
+                ToulBar2::varOrder = new char[problem.length() + 1];
+                sprintf(ToulBar2::varOrder, "%s", problem.c_str());
+                if (!WCSP::isAlreadyTreeDec(ToulBar2::varOrder)) {
+                    cerr << "Input tree decomposition file is not valid! (first cluster must be a root, i.e., parentID=-1)" << endl;
+                    exit(EXIT_FAILURE);
+                }
+                if (ToulBar2::btdMode == 0 && ToulBar2::searchMethod == DFBB)
+                    ToulBar2::btdMode = 1;
+                ToulBar2::clusterFile = string(ToulBar2::varOrder);
+            }
+
+            // filename containing list of clusters without the running intersection property
+            //if (strstr(problem,".dec"))
+            if (check_file_ext(problem, file_extension_map["clusterdec_ext"])) {
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading cluster decomposition in file: " << problem << endl;
+                ToulBar2::clusterFile = problem;
+                ifstream decfile(ToulBar2::clusterFile.c_str());
+                if (!decfile) {
+                    cerr << "File " << ToulBar2::clusterFile << " not found!" << endl;
+                    exit(EXIT_FAILURE);
+                }
+            }
+
+            // read assignment in file or filename of solution
+            if (check_file_ext(problem, file_extension_map["sol_ext"])) {
+                if (certificateString && strcmp(certificateString, "") != 0) {
+                    cerr << "\n COMMAND LINE ERROR cannot read a solution if a partial assignment is given in the command line using -x= argument " << endl;
+                    exit(-1);
+                }
+                if (ToulBar2::verbose >= 0)
+                    cout << "loading solution in file: " << problem << endl;
+
+                certificate = true;
+                certificateFilename = new char[256];
+                sprintf(certificateFilename, "%s", problem.c_str());
+                certificateString = (char*)""; // ensure the search will continue starting from this solution
+            }
+        }
+    }
+
+    // ----------simple opt end ----------------------
+
+    //  command line => check existencise of problem filname argument
+
+    // PB FILENAME
+
+    if (argc <= 1) {
+        cerr << "Problem filename is missing as command line argument!" << endl;
+        cerr << endl;
+        help_msg(argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    //------------------------------tb2 option --------------
+    /////////////////////////////////////////
+    // test on initial ub cost value;
+    /////////////////////////////////////////
+
+    if (ToulBar2::verifyOpt && (!certificate || certificateFilename == NULL)) {
+        cerr << "Error: no optimal solution file given. Cannot verify the optimal solution." << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    //TODO: If --show_options then dump ToulBar2 object here
+
+    ToulBar2::startCpuTime = cpuTime();
+
+    initCosts();
+    Cost globalUb = MAX_COST;
+    WeightedCSPSolver* solver = WeightedCSPSolver::makeWeightedCSPSolver(MAX_COST);
+
+    bool randomproblem = false;
+    bool forceSubModular = false;
+    string randomglobal;
+
+    int n = 10;
+    int m = 2;
+    vector<int> p;
+#ifndef MENDELSOFT
+    if (random_desc != NULL) {
+        int pn[10];
+        int narities = 0;
+        if (strstr(random_desc, "binsub")) {
+            forceSubModular = true;
+            randomproblem = true;
+            sscanf(random_desc, "binsub-%d-%d-%d-%d-%d-%d", &n, &m, &pn[0], &pn[1], &pn[2], &ToulBar2::seed);
+            narities = 2;
+        } else if (strstr(random_desc, "bin")) {
+            randomproblem = true;
+            sscanf(random_desc, "bin-%d-%d-%d-%d-%d", &n, &m, &pn[0], &pn[1], &ToulBar2::seed);
+            narities = 2;
+        } else if (strstr(random_desc, "tern")) {
+            randomproblem = true;
+            sscanf(random_desc, "tern-%d-%d-%d-%d-%d-%d", &n, &m, &pn[0], &pn[1], &pn[2], &ToulBar2::seed);
+            narities = 3;
+        } else // if (strstr(random_desc,"salldiff"))
+        {
+            randomproblem = true;
+            char* pch = strtok(random_desc, "-");
+            randomglobal = string(pch);
+            pch = strtok(NULL, "-");
+            n = atoi(pch);
+            pch = strtok(NULL, "-");
+            m = atoi(pch);
+
+            while (pch != NULL) {
+                pch = strtok(NULL, "-");
+                if (pch != NULL) {
+                    pn[narities] = atoi(pch);
+                    narities++;
+                }
+            }
+            narities--;
+            ToulBar2::seed = pn[narities];
+        }
+        if (pn[0] > 100) {
+            cout << pn[0] << " tightness is a percentage" << endl;
+            pn[0] = 100;
+        }
+        for (int i = 0; i < narities; i++)
+            p.push_back(pn[i]);
+        if (forceSubModular)
+            p.push_back(pn[narities]);
+        if (narities == 0) {
+            cerr << "Random problem generator with no cost functions! (no arity)" << endl;
+            exit(-1);
+        }
+    }
+    if (strext.count(".bep") || (strfile.size() > 0 && strstr((char*)strfile.back().c_str(), "bEpInstance")))
+        ToulBar2::bep = new BEP;
+#endif
+
+    if (ToulBar2::seed < 0) { // initialize seed using current time
+        ToulBar2::seed = abs((int)time(NULL) * getpid() * ToulBar2::seed);
+        if (ToulBar2::verbose >= 0)
+            cout << "Initial random seed is " << ToulBar2::seed << endl;
+    }
+    mysrand(ToulBar2::seed);
+    if (ToulBar2::incop_cmd.size() > 0 && ToulBar2::seed != 1 && ToulBar2::incop_cmd.find("0 1 ") == 0) {
+        string sseed = to_string(ToulBar2::seed);
+        ToulBar2::incop_cmd.replace(2, 1, sseed);
+    }
+
+    tb2checkOptions();
+    try {
+        if (randomproblem)
+            solver->read_random(n, m, p, ToulBar2::seed, forceSubModular, randomglobal);
+        else {
+            if (strfile.size() == 0) {
+                cerr << "No problem file given as input!" << endl;
+                exit(EXIT_FAILURE);
+            } else if (strfile.size() == 1) {
+                globalUb = solver->read_wcsp((char*)strfile.back().c_str());
+                if (globalUb <= MIN_COST) {
+                    THROWCONTRADICTION;
+                }
+            } else {
+                if (strext.size() > 1) {
+                    cerr << "Sorry, multiple problem files must have the same file extension!" << endl;
+                    exit(EXIT_FAILURE);
+                }
+                if (strext.begin()->find(".wcsp") == string::npos && strext.begin()->find(".cfn") == string::npos && strext.begin()->find(".xml") == string::npos) {
+                    cerr << "Sorry, multiple problem files must have a file extension which contains either '.wcsp' or '.cfn' or '.xml'!" << endl;
+                    exit(EXIT_FAILURE);
+                }
+                for (auto f : strfile) {
+                    globalUb = solver->read_wcsp((char*)f.c_str());
+                    if (globalUb <= MIN_COST) {
+                        THROWCONTRADICTION;
+                    }
+                }
+            }
+        }
+
+        //TODO: If --show_options then dump ToulBar2 object here
+
+        if (certificate) {
+            if (certificateFilename != NULL)
+                solver->read_solution(certificateFilename, updateValueHeuristic);
+            else
+                solver->parse_solution(certificateString);
+        }
+
+#ifdef OPENMPI
+        if (env0.myrank == 0) {
+#endif
+            if (ToulBar2::writeSolution) {
+                ToulBar2::solutionFile = fopen(solutionFileName, "w");
+                if (!ToulBar2::solutionFile) {
+                    cerr << "Could not open file " << solutionFileName << endl;
+                    exit(EXIT_FAILURE);
+                }
+            }
+            if (ToulBar2::uaieval) {
+                char* tmpPath = new char[strlen(argv[0]) + 1];
+                strcpy(tmpPath, argv[0]);
+                if (strcmp(tmpPath, "toulbar2") == 0)
+                    strcpy(tmpPath, ".");
+                char* tmpFile = new char[strlen(strfile.back().c_str()) + 1];
+                strcpy(tmpFile, strfile.back().c_str());
+                string filename(tmpPath);
+                filename += "/";
+                filename += basename(tmpFile);
+                size_t wcsppos = string::npos;
+                if (ToulBar2::uaieval && (wcsppos = filename.rfind(".wcsp")) != string::npos)
+                    filename.replace(wcsppos, 5, ".uai");
+                filename += ".";
+                if (ToulBar2::isZ)
+                    filename += "PR";
+                else
+                    filename += "MPE";
+                ToulBar2::solution_uai_filename = filename;
+                ToulBar2::solution_uai_file = fopen(ToulBar2::solution_uai_filename.c_str(), "w");
+                if (!ToulBar2::solution_uai_file) {
+                    cerr << "Could not open file " << ToulBar2::solution_uai_filename << endl;
+                    exit(EXIT_FAILURE);
+                }
+                delete[] tmpPath;
+                delete[] tmpFile;
+            }
+#ifdef OPENMPI
+        }
+#endif
+
+        if (ToulBar2::problemsaved_filename.empty())
+            ToulBar2::problemsaved_filename = ((static_cast<ProblemFormat>((ToulBar2::dumpWCSP >> 1)+(ToulBar2::dumpWCSP & 1)) == CFN_FORMAT) ? "problem.cfn" : "problem.wcsp");
+
+        if (ToulBar2::dumpWCSP % 2) {
+            string problemname = ToulBar2::problemsaved_filename;
+            if (ToulBar2::uaieval) {
+                problemname = ToulBar2::solution_uai_filename;
+                problemname.replace(problemname.rfind(".uai.MPE"), 8, (static_cast<ProblemFormat>((ToulBar2::dumpWCSP >> 1)+(ToulBar2::dumpWCSP & 1)) == CFN_FORMAT) ? ".cfn" : ".wcsp");
+            }
+            solver->dump_wcsp(problemname.c_str(), true, static_cast<ProblemFormat>((ToulBar2::dumpWCSP >> 1)+(ToulBar2::dumpWCSP & 1)));
+        } else if (!certificate || certificateString != NULL || ToulBar2::btdMode >= 2) {
+#ifndef __WIN32__
+            signal(SIGINT, timeOut);
+            signal(SIGTERM, timeOut);
+            if (timeout > 0)
+                timer(timeout);
+#endif
+            solver->solve();
+        }
+    } catch (const Contradiction&) {
+        if (ToulBar2::verbose >= 0)
+            cout << "No solution found by initial propagation!" << endl;
+        if (ToulBar2::isZ) {
+            if (ToulBar2::uaieval) {
+                rewind(ToulBar2::solution_uai_file);
+                fprintf(ToulBar2::solution_uai_file, "PR\n");
+                fprintf(ToulBar2::solution_uai_file, PrintFormatProb, -numeric_limits<TProb>::infinity());
+                fprintf(ToulBar2::solution_uai_file, "\n");
+            }
+            cout << "Log(Z)= ";
+            cout << -numeric_limits<TProb>::infinity() << endl;
+        }
+        if (ToulBar2::maxsateval) {
+            cout << "o " << solver->getWCSP()->getUb() << endl;
+            cout << "s UNSATISFIABLE" << endl;
+        }
+    }
+    if (ToulBar2::verbose >= 0)
+        cout << "end." << endl;
+
+    if (ToulBar2::solutionFile != NULL) {
+        if (ftruncate(fileno(ToulBar2::solutionFile), ftell(ToulBar2::solutionFile)))
+            exit(EXIT_FAILURE);
+        fclose(ToulBar2::solutionFile);
+    }
+    if (ToulBar2::solution_uai_file != NULL) {
+        if (ftruncate(fileno(ToulBar2::solution_uai_file), ftell(ToulBar2::solution_uai_file)))
+            exit(EXIT_FAILURE);
+        fclose(ToulBar2::solution_uai_file);
+    }
+
+    // for the competition it was necessary to write a file with the optimal sol
+    /*char line[1024];
+	  string strfile(argv[1]);
+	  int pos = strfile.find_last_of(".");
+	  string strfilewcsp = strfile.substr(0,pos) + ".ub";
+	  sprintf(line,"echo %d > %s",(int)solver->getWCSP()->getUb(),strfilewcsp.c_str());
+	  system(line); */
+
+    return 0;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/toulbar2lib.hpp b/code/include/tb2/toulbar2lib.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..3c8f539557bc44f711f688dc81fba83c1d0ec971
--- /dev/null
+++ b/code/include/tb2/toulbar2lib.hpp
@@ -0,0 +1,590 @@
+/** \file toulbar2lib.hpp
+ *  \brief Main protocol class of a global soft constraint representing a weighted CSP and a generic WCSP complete tree-search-based solver
+ *
+<pre>
+    Copyright (c) 2006-2020, toulbar2 team
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+
+    toulbar2 is currently maintained by Simon de Givry, INRAE - MIAT, Toulouse, France (simon.de-givry@inrae.fr)
+</pre>
+ */
+
+/*! @mainpage
+
+    <table>
+        <tr><th>Cost Function Network Solver     <td>toulbar2
+        <tr><th>Copyright               <td>toulbar2 team
+        <tr><th>Source                  <td>https://github.com/toulbar2/toulbar2
+    </table>
+
+    See the @link md_README.html README @endlink for more details.
+
+    toulbar2 can be used as a stand-alone solver reading various problem file formats (wcsp, uai, wcnf, qpbo) or as a C++ library.\n
+    This document describes the wcsp native file format and the toulbar2 C++ library API.
+    \note Use cmake flags LIBTB2=ON and TOULBAR2_ONLY=OFF to get the toulbar2 C++ library libtb2.so and toulbar2test executable example.
+    \see ./src/toulbar2test.cpp
+
+    \defgroup wcspformat
+    \defgroup modeling
+    \defgroup solving
+    \defgroup verbosity
+    \defgroup preprocessing
+    \defgroup heuristics
+    \defgroup softac
+    \defgroup VAC
+    \defgroup ncbucket
+    \defgroup varelim
+    \defgroup propagation
+    \defgroup backtrack
+
+*/
+
+#ifndef TOULBAR2LIB_HPP_
+#define TOULBAR2LIB_HPP_
+
+#include "core/tb2types.hpp"
+
+/** Abstract class WeightedCSP representing a weighted constraint satisfaction problem
+ *	- problem lower and upper bounds
+ *	- list of variables with their finite domains (either represented by an enumerated list of values, or by a single interval)
+ *	- list of cost functions (created before and during search by variable elimination of variables with small degree)
+ *	- local consistency propagation (variable-based propagation) including cluster tree decomposition caching (separator-based cache)
+ *
+ * \note Variables are referenced by their lexicographic index number (as returned by \e eg WeightedCSP::makeEnumeratedVariable)
+ * \note Cost functions are referenced by their lexicographic index number (as returned by \e eg WeightedCSP::postBinaryConstraint)
+ *
+ */
+
+class WeightedCSP {
+public:
+    static WeightedCSP* makeWeightedCSP(Cost upperBound, void* solver = NULL); ///< \brief Weighted CSP factory
+
+    virtual ~WeightedCSP() {}
+
+    virtual int getIndex() const = 0; ///< \brief instantiation occurrence number of current WCSP object
+    virtual string getName() const = 0; ///< \brief get WCSP problem name (defaults to filename with no extension)
+    virtual void setName(const string& problem) = 0; ///< \brief set WCSP problem name
+    virtual void* getSolver() const = 0; ///< \brief special hook to access solver information
+
+    virtual Cost getLb() const = 0; ///< \brief gets internal dual lower bound
+    virtual Cost getUb() const = 0; ///< \brief gets internal primal upper bound
+
+    virtual Double getDPrimalBound() const = 0; ///< \brief gets problem primal bound as a Double representing a decimal cost (upper resp. lower bound for minimization resp. maximization)
+    virtual Double getDDualBound() const = 0; ///< \brief gets problem dual bound as a Double representing a decimal cost (lower resp. upper bound for minimization resp. maximization)
+
+    virtual Double getDLb() const = 0; ///< \brief gets problem lower bound as a Double representing a decimal cost
+    virtual Double getDUb() const = 0; ///< \brief gets problem upper bound as a Double representing a decimal cost
+
+    /// \brief sets initial problem upper bound and each time a new solution is found
+    virtual void updateUb(Cost newUb) = 0;
+    /// \brief enforces problem upper bound when exploring an alternative search node
+    virtual void enforceUb() = 0;
+    /// \brief increases problem lower bound thanks to \e eg soft local consistencies
+    /// \param addLb increment value to be \b added to the problem lower bound
+    virtual void increaseLb(Cost addLb) = 0;
+    /// \brief shift problem optimum toward negative costs
+    /// \param shift positive shifting value to be subtracted to the problem optimum when printing the solutions
+    virtual void decreaseLb(Cost shift) = 0;
+    virtual Cost getNegativeLb() const = 0; ///< \brief gets constant term used to subtract to the problem optimum when printing the solutions
+    /// \brief computes the worst-case assignment finite cost (sum of maximum finite cost over all cost functions plus one)
+    /// \return the worst-case assignment finite cost
+    /// \warning current problem should be completely loaded and propagated before calling this function
+    virtual Cost finiteUb() const = 0;
+    /// \brief updates infinite costs in all cost functions accordingly to the problem global lower and upper bounds
+    /// \warning to be used in preprocessing only
+    virtual void setInfiniteCost() = 0;
+
+    virtual bool enumerated(int varIndex) const = 0; ///< \brief true if the variable has an enumerated domain
+
+    virtual string getName(int varIndex) const = 0; ///< \note by default, variables names are integers, starting at zero
+    virtual unsigned int getVarIndex(const string& s) const = 0; ///< return variable index from its name, or numberOfVariables() if not found
+    virtual Value getInf(int varIndex) const = 0; ///< \brief minimum current domain value
+    virtual Value getSup(int varIndex) const = 0; ///< \brief maximum current domain value
+    virtual Value getValue(int varIndex) const = 0; ///< \brief current assigned value \warning undefined if not assigned yet
+    virtual unsigned int getDomainSize(int varIndex) const = 0; ///< \brief current domain size
+    virtual vector<Value> getEnumDomain(int varIndex) = 0; ///< \brief gets current domain values in an array
+    virtual bool getEnumDomain(int varIndex, Value* array) = 0; ///< \deprecated
+    virtual vector<pair<Value, Cost>> getEnumDomainAndCost(int varIndex) = 0; ///< \brief gets current domain values and unary costs in an array
+    virtual bool getEnumDomainAndCost(int varIndex, ValueCost* array) = 0; ///< \deprecated
+    virtual unsigned int getDomainInitSize(int varIndex) const = 0; ///< \brief gets initial domain size (warning! assumes EnumeratedVariable)
+    virtual Value toValue(int varIndex, unsigned int idx) = 0; ///< \brief gets value from index (warning! assumes EnumeratedVariable)
+    virtual unsigned int toIndex(int varIndex, Value value) = 0; ///< \brief gets index from value (warning! assumes EnumeratedVariable)
+    virtual unsigned int toIndex(int varIndex, const string& valueName) = 0; ///< \brief gets index from value name (warning! assumes EnumeratedVariable with value names)
+    virtual int getDACOrder(int varIndex) const = 0; ///< \brief index of the variable in the DAC variable ordering
+
+    virtual bool assigned(int varIndex) const = 0;
+    virtual bool unassigned(int varIndex) const = 0;
+    virtual bool canbe(int varIndex, Value v) const = 0;
+    virtual bool cannotbe(int varIndex, Value v) const = 0;
+    virtual Value nextValue(int varIndex, Value v) const = 0; ///< \brief first value after v in the current domain or v if there is no value
+
+    virtual void increase(int varIndex, Value newInf) = 0; ///< \brief changes domain lower bound
+    virtual void decrease(int varIndex, Value newSup) = 0; ///< \brief changes domain upper bound
+    virtual void assign(int varIndex, Value newValue) = 0; ///< \brief assigns a variable and immediately propagates this assignment
+    virtual void remove(int varIndex, Value remValue) = 0; ///< \brief removes a domain value (valid if done for an enumerated variable or on its domain bounds)
+
+    /// \brief assigns a set of variables at once and propagates (used by Local Search methods such as Large Neighborhood Search)
+    /// \param varIndexes vector of variable indexes as returned by makeXXXVariable
+    /// \param newValues vector of values to be assigned to the corresponding variables
+    virtual void assignLS(vector<int>& varIndexes, vector<Value>& newValues, bool force = false) = 0;
+    virtual void assignLS(int* varIndexes, Value* newValues, unsigned int size, bool dopropagate, bool force = false) = 0;
+
+    virtual Cost getUnaryCost(int varIndex, Value v) const = 0; ///< \brief unary cost associated to a domain value
+    virtual Cost getMaxUnaryCost(int varIndex) const = 0; ///< \brief maximum unary cost in the domain
+    virtual Value getMaxUnaryCostValue(int varIndex) const = 0; ///< \brief a value having the maximum unary cost in the domain
+    virtual Value getSupport(int varIndex) const = 0; ///< \brief NC/EAC unary support value
+    virtual Value getBestValue(int varIndex) const = 0; ///< \brief hint for some value ordering heuristics (only used by RDS)
+    virtual void setBestValue(int varIndex, Value v) = 0; ///< \brief hint for some value ordering heuristics (only used by RDS)
+    virtual bool getIsPartOfOptimalSolution() = 0; ///< \brief special flag used for debugging purposes only
+    virtual void setIsPartOfOptimalSolution(bool v) = 0; ///< \brief special flag used for debugging purposes only
+
+    virtual int getDegree(int varIndex) const = 0; ///< \brief approximate degree of a variable (\e ie number of active cost functions, see \ref varelim)
+    virtual int getTrueDegree(int varIndex) const = 0; ///< \brief degree of a variable
+    virtual Long getWeightedDegree(int varIndex) const = 0; ///< \brief weighted degree heuristic
+    virtual void resetWeightedDegree(int varIndex) = 0; ///< \brief initialize weighted degree heuristic
+
+    virtual void preprocessing() = 0; ///< \brief applies various preprocessing techniques to simplify the current problem
+    /// \brief sorts the list of cost functions associated to each variable based on smallest problem variable indexes
+    /// \warning side-effect: updates DAC order according to an existing variable elimination order
+    /// \note must be called after creating all the cost functions and before solving the problem
+    virtual void sortConstraints() = 0;
+
+    virtual void whenContradiction() = 0; ///< \brief after a contradiction, resets propagation queues
+    virtual void propagate() = 0; ///< \brief propagates until a fix point is reached (or throws a contradiction)
+    virtual bool verify() = 0; ///< \brief checks the propagation fix point is reached
+
+    virtual unsigned int numberOfVariables() const = 0; ///< \brief number of created variables
+    virtual unsigned int numberOfUnassignedVariables() const = 0; ///< \brief current number of unassigned variables
+    virtual unsigned int numberOfConstraints() const = 0; ///< \brief initial number of cost functions (before variable elimination)
+    virtual unsigned int numberOfConnectedConstraints() const = 0; ///< \brief current number of cost functions
+    virtual unsigned int numberOfConnectedBinaryConstraints() const = 0; ///< \brief current number of binary cost functions
+    virtual unsigned int medianDomainSize() const = 0; ///< \brief median current domain size of variables
+    virtual unsigned int medianDegree() const = 0; ///< \brief median current degree of variables
+    virtual unsigned int medianArity() const = 0; ///< \brief median arity of current cost functions
+    virtual int getMaxDomainSize() const = 0; ///< \brief maximum initial domain size found in all variables
+    virtual int getMaxCurrentDomainSize() const = 0; ///< \brief maximum current domain size found in all variables
+    virtual unsigned int getDomainSizeSum() const = 0; ///< \brief total sum of current domain sizes
+    /// \brief Cartesian product of current domain sizes
+    /// \param cartesianProduct result obtained by the GNU Multiple Precision Arithmetic Library GMP
+    virtual void cartProd(BigInteger& cartesianProduct) = 0;
+    virtual Long getNbDEE() const = 0; ///< \brief number of value removals due to dead-end elimination
+
+    /// \defgroup modeling Variable and cost function modeling
+    /// Modeling a Weighted CSP consists in creating variables and cost functions.\n
+    /// Domains of variables can be of two different types:
+    /// - enumerated domain allowing direct access to each value (array) and iteration on current domain in times proportional to the current number of values (double-linked list)
+    /// - interval domain represented by a lower value and an upper value only (useful for large domains)
+    /// .
+    /// \warning Current implementation of toulbar2 has limited modeling and solving facilities for interval domains.
+    /// There is no cost functions accepting both interval and enumerated variables for the moment, which means all the variables should have the same type.
+
+    /// \addtogroup modeling
+    /// Cost functions can be defined in extension (table or maps) or having a specific semantic.\n
+    /// Cost functions in extension depend on their arity:
+    /// - unary cost function (directly associated to an enumerated variable)
+    /// - binary and ternary cost functions (table of costs)
+    /// - n-ary cost functions (n >= 4) defined by a list of tuples with associated costs and a default cost for missing tuples (allows for a compact representation)
+    /// .
+    ///
+    /// Cost functions having a specific semantic (see \ref  wcspformat) are:
+    /// - simple arithmetic and scheduling (temporal disjunction) cost functions on interval variables
+    /// - global cost functions (\e eg soft alldifferent, soft global cardinality constraint, soft same, soft regular, etc) with three different propagator keywords:
+    ///   - \e flow propagator based on flow algorithms with "s" prefix in the keyword (\e salldiff, \e sgcc, \e ssame, \e sregular)
+    ///   - \e DAG propagator based on dynamic programming algorithms with "s" prefix and "dp" postfix (\e samongdp, salldiffdp, sgccdp, sregulardp, sgrammardp, smstdp, smaxdp)
+    ///   - \e network propagator based on cost function network decomposition with "w" prefix (\e wsum, \e wvarsum, \e walldiff, \e wgcc, \e wsame, \e wsamegcc, \e wregular, \e wamong, \e wvaramong, \e woverlap)
+    ///   .
+    /// .
+    /// \note The default semantics (using \e var keyword) of monolithic (flow and DAG-based propagators) global cost functions is to count the number of variables to change in order to restore consistency and to multiply it by the basecost. Other particular semantics may be used in conjunction with the flow-based propagator
+    /// \note The semantics of the network-based propagator approach is either a hard constraint ("hard" keyword) or a soft constraint by multiplying the number of changes by the basecost ("lin" or "var" keyword) or by multiplying the square value of the number of changes by the basecost ("quad" keyword)
+    /// \note A decomposable version exists for each monolithic global cost function, except grammar and MST. The decomposable ones may propagate less than their monolithic counterpart and they introduce extra variables but they can be much faster in practice
+    /// \warning Each global cost function may have less than three propagators implemented
+    /// \warning Current implementation of toulbar2 has limited solving facilities for monolithic global cost functions (no BTD-like methods nor variable elimination)
+    /// \warning Current implementation of toulbar2 disallows global cost functions with less than or equal to three variables in their scope (use cost functions in extension instead)
+    /// \warning Before modeling the problem using make and post, call ::tb2init method to initialize toulbar2 global variables
+    /// \warning After modeling the problem using make and post, call WeightedCSP::sortConstraints method to initialize correctly the model before solving it
+
+    virtual int makeEnumeratedVariable(string n, Value iinf, Value isup) = 0; ///< \brief create an enumerated variable with its domain bounds
+    virtual int makeEnumeratedVariable(string n, Value* d, int dsize) = 0; ///< \brief create an enumerated variable with its domain values
+    virtual void addValueName(int xIndex, const string& valuename) = 0; ///< \brief add next value name \warning should be called on EnumeratedVariable object as many times as its number of initial domain values
+    virtual int makeIntervalVariable(string n, Value iinf, Value isup) = 0; ///< \brief create an interval variable with its domain bounds
+    virtual void postNullaryConstraint(Double cost) = 0;
+    virtual void postNullaryConstraint(Cost cost) = 0;
+    virtual void postUnary(int xIndex, vector<Cost>& costs) = 0; ///< \deprecated Please use the postUnaryConstraint method instead
+    virtual void postUnaryConstraint(int xIndex, vector<Double>& costs, bool incremental = false) = 0;
+    virtual void postUnaryConstraint(int xIndex, vector<Cost>& costs) = 0;
+    virtual void postIncrementalUnaryConstraint(int xIndex, vector<Cost>& costs) = 0;
+    virtual int postBinaryConstraint(int xIndex, int yIndex, vector<Double>& costs, bool incremental = false) = 0;
+    virtual int postBinaryConstraint(int xIndex, int yIndex, vector<Cost>& costs) = 0;
+    virtual int postIncrementalBinaryConstraint(int xIndex, int yIndex, vector<Cost>& costs) = 0;
+    virtual int postTernaryConstraint(int xIndex, int yIndex, int zIndex, vector<Double>& costs, bool incremental = false) = 0;
+    virtual int postTernaryConstraint(int xIndex, int yIndex, int zIndex, vector<Cost>& costs) = 0;
+    virtual int postIncrementalTernaryConstraint(int xIndex, int yIndex, int zIndex, vector<Cost>& costs) = 0;
+    virtual int postNaryConstraintBegin(vector<int>& scope, Cost defval, Long nbtuples = 0, bool forcenary = false) = 0; /// \warning must call WeightedCSP::postNaryConstraintEnd after giving cost tuples
+    virtual int postNaryConstraintBegin(int* scope, int arity, Cost defval, Long nbtuples = 0, bool forcenary = false) = 0; /// \deprecated
+    virtual void postNaryConstraintTuple(int ctrindex, vector<Value>& tuple, Cost cost) = 0;
+    virtual void postNaryConstraintTuple(int ctrindex, Value* tuple, int arity, Cost cost) = 0; /// \deprecated
+    virtual void postNaryConstraintEnd(int ctrindex) = 0; /// \warning must call WeightedCSP::sortConstraints after all cost functions have been posted (see WeightedCSP::sortConstraints)
+    virtual int postUnary(int xIndex, Value* d, int dsize, Cost penalty) = 0; ///< \deprecated Please use the postUnaryConstraint method instead
+    virtual int postUnaryConstraint(int xIndex, Value* d, int dsize, Cost penalty) = 0;
+    virtual int postSupxyc(int xIndex, int yIndex, Value cst, Value deltamax = MAX_VAL - MIN_VAL) = 0;
+    virtual int postDisjunction(int xIndex, int yIndex, Value cstx, Value csty, Cost penalty) = 0;
+    virtual int postSpecialDisjunction(int xIndex, int yIndex, Value cstx, Value csty, Value xinfty, Value yinfty, Cost costx, Cost costy) = 0;
+    virtual int postCliqueConstraint(vector<int>& scope, const string& arguments) = 0;
+    virtual int postCliqueConstraint(int* scopeIndex, int arity, istream& file) = 0; /// \deprecated
+    virtual int postKnapsackConstraint(vector<int>& scope, const string& arguments) = 0;
+    virtual int postKnapsackConstraint(int* scopeIndex, int arity, istream& file) = 0; /// \deprecated
+    virtual int postGlobalConstraint(int* scopeIndex, int arity, const string& gcname, istream& file, int* constrcounter = NULL, bool mult = true) = 0; ///< \deprecated Please use the postWxxx methods instead
+
+    /// \brief post a soft among cost function
+    /// \param scopeIndex an array of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arity the size of the array
+    /// \param semantics the semantics of the global cost function: "var" or -- "hard" or "lin" or "quad" (network-based propagator only)--
+    /// \param propagator the propagation method (only "DAG" or "network")
+    /// \param baseCost the scaling factor of the violation
+    /// \param values a vector of values to be restricted
+    /// \param lb a fixed lower bound for the number variables to be assigned to the values in \a values
+    /// \param ub a fixed upper bound for the number variables to be assigned to the values in \a values
+    virtual int postWAmong(vector<int>& scope, const string& semantics, const string& propagator, Cost baseCost, const vector<Value>& values, int lb, int ub) = 0; ///< post a soft weighted among cost function
+    virtual int postWAmong(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost, const vector<Value>& values, int lb, int ub) = 0; ///< \deprecated
+    virtual void postWAmong(int* scopeIndex, int arity, string semantics, Cost baseCost, Value* values, int nbValues, int lb, int ub) = 0; ///< \deprecated post a weighted among cost function decomposed as a cost function network
+    virtual void postWVarAmong(vector<int>& scope, const string& semantics, Cost baseCost, vector<Value>& values, int varIndex) = 0; ///< \brief post a weighted among cost function with the number of values encoded as a variable with index \a varIndex (\e network-based propagator only)
+    virtual void postWVarAmong(int* scopeIndex, int arity, const string& semantics, Cost baseCost, Value* values, int nbValues, int varIndex) = 0; ///< \deprecated
+
+    /// \brief post a soft or weighted regular cost function
+    /// \param scopeIndex an array of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arity the size of the array
+    /// \param semantics the semantics of the soft global cost function: "var" or "edit" (flow-based propagator) or -- "var" (DAG-based propagator)-- (unused parameter for network-based propagator)
+    /// \param propagator the propagation method ("flow", "DAG", "network")
+    /// \param baseCost the scaling factor of the violation ("flow", "DAG")
+    /// \param nbStates the number of the states in the corresponding DFA. The states are indexed as 0, 1, ..., nbStates-1
+    /// \param initial_States a vector of WeightedObjInt specifying the starting states with weight
+    /// \param accepting_States a vector of WeightedObjInt specifying the final states
+    /// \param Wtransitions a vector of (weighted) transitions
+    /// \warning Weights are ignored in the current implementation of DAG and flow-based propagators
+    virtual int postWRegular(vector<int>& scope, const string& semantics, const string& propagator, Cost baseCost, int nbStates, const vector<WeightedObjInt>& initial_States, const vector<WeightedObjInt>& accepting_States, const vector<DFATransition>& Wtransitions) = 0; ///< post a soft weighted regular cost function
+    virtual int postWRegular(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost, int nbStates, const vector<WeightedObjInt>& initial_States, const vector<WeightedObjInt>& accepting_States, const vector<DFATransition>& Wtransitions) = 0; ///< \deprecated
+    virtual void postWRegular(int* scopeIndex, int arity, int nbStates, vector<pair<int, Cost>> initial_States, vector<pair<int, Cost>> accepting_States, int** Wtransitions, vector<Cost> transitionsCosts) = 0; ///< \deprecated post a weighted regular cost function decomposed as a cost function network
+
+    /// \brief post a soft alldifferent cost function
+    /// \param scopeIndex an array of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arity the size of the array
+    /// \param semantics the semantics of the global cost function: for flow-based propagator: "var" or "dec" or "decbi" (decomposed into a binary cost function complete network), for DAG-based propagator: "var", for network-based propagator: "hard" or "lin" or "quad" (decomposed based on wamong)
+    /// \param propagator the propagation method ("flow", "DAG", "network")
+    /// \param baseCost the scaling factor of the violation
+    virtual int postWAllDiff(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost) = 0;
+    virtual void postWAllDiff(int* scopeIndex, int arity, string semantics, Cost baseCost) = 0; ///< \deprecated post a soft alldifferent cost function decomposed as a cost function network
+
+    /// \brief post a soft global cardinality cost function
+    /// \param scopeIndex an array of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arity the size of the array
+    /// \param semantics the semantics of the global cost function: "var" (DAG-based propagator only) or -- "var" or "dec" or "wdec" (flow-based propagator only) or -- "hard" or "lin" or "quad" (network-based propagator only)--
+    /// \param propagator the propagation method ("flow", "DAG", "network")
+    /// \param baseCost the scaling factor of the violation
+    /// \param values a vector of BoundedObjValue, specifying the lower and upper bounds of each value, restricting the number of variables can be assigned to them
+    virtual int postWGcc(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+        const vector<BoundedObjValue>& values)
+        = 0;
+    virtual void postWGcc(int* scopeIndex, int arity, string semantics, Cost baseCost, Value* values, int nbValues, int* lb, int* ub) = 0; ///< \deprecated post a soft global cardinality cost function decomposed as a cost function network
+
+    /// \brief post a soft same cost function (a group of variables being a permutation of another group with the same size)
+    /// \param scopeIndexG1 an array of the first group of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arityG1 the size of \a scopeIndexG1
+    /// \param scopeIndexG2 an array of the second group of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arityG2 the size of \a scopeIndexG2
+    /// \param semantics the semantics of the global cost function: "var" or -- "hard" or "lin" or "quad" (network-based propagator only)--
+    /// \param propagator the propagation method ("flow" or "network")
+    /// \param baseCost the scaling factor of the violation.
+    virtual int postWSame(int* scopeIndexG1, int arityG1, int* scopeIndexG2, int arityG2, const string& semantics, const string& propagator, Cost baseCost) = 0;
+    virtual void postWSame(int* scopeIndex, int arity, string semantics, Cost baseCost) = 0; ///< \deprecated post a soft same cost function
+    virtual void postWSameGcc(int* scopeIndex, int arity, string semantics, Cost baseCost, Value* values, int nbValues, int* lb, int* ub) = 0; ///< \brief post a combination of a same and gcc cost function decomposed as a cost function network
+
+    /// \brief post a soft/weighted grammar cost function with the dynamic programming propagator and grammar in Chomsky normal form
+    /// \param scopeIndex an array of the first group of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arity the size of \a scopeIndex
+    /// \param semantics the semantics of the global cost function: "var" or "weight"
+    /// \param propagator the propagation method ("DAG" only)
+    /// \param baseCost the scaling factor of the violation
+    /// \param nbSymbols the number of symbols in the corresponding grammar. Symbols are indexed as 0, 1, ..., nbSymbols-1
+    /// \param startSymbol the index of the starting symbol
+    /// \param WRuleToTerminal a vector of \a ::CFGProductionRule. Note that:
+    ///  - if \a order in \a CFGProductionRule is set to 0, it is classified as A -> v, where A is the index of the terminal symbol and v is the value.
+    ///  - if \a order in \a CFGProductionRule is set to 1, it is classified as A -> BC, where A,B,C  the index of the nonterminal symbols.
+    ///  - if \a order in \a CFGProductionRule is set to 2, it is classified as weighted A -> v, where A is the index of the terminal symbol and v is the value.
+    ///  - if \a order in \a CFGProductionRule is set to 3, it is classified as weighted A -> BC, where A,B,C  the index of the nonterminal symbols.
+    ///  - if \a order in \a CFGProductionRule is set to values greater than 3, it is ignored.
+    virtual int postWGrammarCNF(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+        int nbSymbols,
+        int startSymbol,
+        const vector<CFGProductionRule> WRuleToTerminal)
+        = 0;
+
+    /// \brief post a Spanning Tree hard constraint
+    /// \param scopeIndex an array of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arity the size of \a scopeIndex
+    /// \param semantics the semantics of the global cost function: "hard"
+    /// \param propagator the propagation method ("DAG" only)
+    /// \param baseCost unused in the current implementation (MAX_COST)
+    virtual int postMST(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost) = 0;
+
+    /// \brief post a weighted max cost function (maximum cost of a set of unary cost functions associated to a set of variables)
+    /// \param scopeIndex an array of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arity the size of \a scopeIndex
+    /// \param semantics the semantics of the global cost function: "val"
+    /// \param propagator the propagation method ("DAG" only)
+    /// \param baseCost if a variable-value pair does not exist in \a weightFunction, its weight will be mapped to baseCost.
+    /// \param weightFunction a vector of WeightedVarValPair containing a mapping from variable-value pairs to their weights.
+    virtual int postMaxWeight(int* scopeIndex, int arity, const string& semantics, const string& propagator, Cost baseCost,
+        const vector<WeightedVarValPair> weightFunction)
+        = 0;
+
+    /// \brief post a soft linear constraint with unit coefficients
+    /// \param scopeIndex an array of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arity the size of \a scopeIndex
+    /// \param semantics the semantics of the global cost function: "hard" or "lin" or "quad" (network-based propagator only)
+    /// \param propagator the propagation method ("network" only)
+    /// \param baseCost the scaling factor of the violation
+    /// \param comparator the comparison operator of the linear constraint ("==", "!=", "<", "<=", ">,", ">=")
+    /// \param rightRes right-hand side value of the linear constraint
+    virtual void postWSum(int* scopeIndex, int arity, string semantics, Cost baseCost, string comparator, int rightRes) = 0;
+    virtual void postWVarSum(int* scopeIndex, int arity, string semantics, Cost baseCost, string comparator, int varIndex) = 0; ///< \brief post a soft linear constraint with unit coefficients and variable right-hand side
+
+    /// \brief post a soft overlap cost function (a group of variables being point-wise equivalent -- and not equal to zero -- to another group with the same size)
+    /// \param scopeIndex an array of variable indexes as returned by WeightedCSP::makeEnumeratedVariable
+    /// \param arity the size of \a scopeIndex (should be an even value)
+    /// \param semantics the semantics of the global cost function: "hard" or "lin" or "quad" (network-based propagator only)
+    /// \param propagator the propagation method ("network" only)
+    /// \param baseCost the scaling factor of the violation.
+    /// \param comparator the point-wise comparison operator applied to the number of equivalent variables ("==", "!=", "<", "<=", ">,", ">=")
+    /// \param rightRes right-hand side value of the comparison
+    virtual void postWOverlap(int* scopeIndex, int arity, string semantics, Cost baseCost, string comparator, int rightRes) = 0;
+
+    virtual vector<vector<int>>* getListSuccessors() = 0; ///< \brief generating additional variables vector created when berge decomposition are included in the WCSP
+
+    virtual bool isGlobal() = 0; ///< \brief true if there are soft global constraints defined in the problem
+
+    virtual Cost read_wcsp(const char* fileName) = 0; ///< \brief load problem in all format supported by toulbar2. Returns the UB known to the solver before solving (file and command line).
+    virtual void read_legacy(const char* fileName) = 0; ///< \brief load problem in wcsp legacy format
+    virtual void read_uai2008(const char* fileName) = 0; ///< \brief load problem in UAI 2008 format (see http://graphmod.ics.uci.edu/uai08/FileFormat and http://www.cs.huji.ac.il/project/UAI10/fileFormat.php) \warning UAI10 evidence file format not recognized by toulbar2 as it does not allow multiple evidence (you should remove the first value in the file)
+    virtual void read_random(int n, int m, vector<int>& p, int seed, bool forceSubModular = false, string globalname = "") = 0; ///< \brief create a random WCSP with \e n variables, domain size \e m, array \e p where the first element is a percentage of tuples with a nonzero cost and next elements are the number of random cost functions for each different arity (starting with arity two), random seed, a flag to have a percentage (last element in the array \e p) of the binary cost functions being permutated submodular, and a string to use a specific global cost function instead of random cost functions in extension
+    virtual void read_wcnf(const char* fileName) = 0; ///< \brief load problem in (w)cnf format (see http://www.maxsat.udl.cat/08/index.php?disp=requirements)
+    virtual void read_qpbo(const char* fileName) = 0; ///< \brief load quadratic pseudo-Boolean optimization problem in unconstrained quadratic programming text format (first text line with n, number of variables and m, number of triplets, followed by the m triplets (x,y,cost) describing the sparse symmetric nXn cost matrix with variable indexes such that x <= y and any positive or negative real numbers for costs)
+    virtual void read_opb(const char* fileName) = 0; ///< \brief load pseudo-Boolean optimization problem
+
+    virtual const vector<Value> getSolution() = 0; ///< \brief after solving the problem, return the optimal solution (warning! do not use it if doing solution counting or if there is no solution, see WeightedCSPSolver::solve output for that)
+    virtual Double getSolutionValue() const = 0; ///< \brief returns current best solution cost or MAX_COST if no solution found
+    virtual Cost getSolutionCost() const = 0; ///< \brief returns current best solution cost or MAX_COST if no solution found
+    virtual const vector<Value> getSolution(Cost* cost_ptr) = 0; ///< \deprecated \brief returns current best solution and its cost
+    virtual vector<pair<Double, vector<Value>>> getSolutions() const = 0; ///\brief returns all solutions found
+    virtual void initSolutionCost() = 0; ///< \brief invalidate best solution by changing its cost to MAX_COST
+    virtual void setSolution(Cost cost, TAssign* sol = NULL) = 0; ///< \brief set best solution from current assigned values or from a given assignment (for BTD-like methods)
+    virtual void printSolution() = 0; ///< \brief prints current best solution on standard output (using variable and value names if cfn format and ToulBar2::showSolution>1)
+    virtual void printSolution(ostream& os) = 0; ///< \brief prints current best solution (using variable and value names if cfn format and ToulBar2::writeSolution>1)
+    virtual void printSolution(FILE* f) = 0; ///< \brief prints current best solution (using variable and value names if cfn format and ToulBar2::writeSolution>1)
+
+    virtual void print(ostream& os) = 0; ///< \brief print current domains and active cost functions (see \ref verbosity)
+    virtual void dump(ostream& os, bool original = true) = 0; ///< \brief output the current WCSP into a file in wcsp format \param os output file \param original if true then keeps all variables with their original domain size else uses unassigned variables and current domains recoding variable indexes
+    virtual void dump_CFN(ostream& os, bool original = true) = 0; ///< \brief output the current WCSP into a file in wcsp format \param os output file \param original if true then keeps all variables with their original domain size else uses unassigned variables and current domains recoding variable indexes
+
+    // -----------------------------------------------------------
+    // Functions dealing with all representations of Costs
+    // warning: ToulBar2::NormFactor has to be initialized
+
+    virtual Cost decimalToCost(const string& decimalToken, const unsigned int lineNumber) const = 0;
+    virtual Cost DoubletoCost(const Double& c) const = 0;
+    virtual Double Cost2ADCost(const Cost& c) const = 0;
+    virtual Double Cost2RDCost(const Cost& c) const = 0;
+    virtual Cost Prob2Cost(TProb p) const = 0;
+    virtual TProb Cost2Prob(Cost c) const = 0;
+    virtual TLogProb Cost2LogProb(Cost c) const = 0;
+    virtual Cost LogProb2Cost(TLogProb p) const = 0;
+    virtual Cost LogSumExp(Cost c1, Cost c2) const = 0;
+    virtual TLogProb LogSumExp(TLogProb logc1, Cost c2) const = 0;
+    virtual TLogProb LogSumExp(TLogProb logc1, TLogProb logc2) const = 0;
+
+    // -----------------------------------------------------------
+    // Internal WCSP functions DO NOT USE THEM
+
+    virtual void setLb(Cost newLb) = 0; ///< \internal sets problem lower bound
+    virtual void setUb(Cost newUb) = 0; ///< \internal sets problem upper bound
+    virtual void restoreSolution(Cluster* c = NULL) = 0; ///< \internal restores correct values to eliminated variables when all the variables have been assigned
+
+    virtual void buildTreeDecomposition() = 0;
+    virtual TreeDecomposition* getTreeDec() = 0;
+
+    virtual const vector<Variable*>& getDivVariables() = 0; ///< \brief returns all variables on which a diversity request exists
+    virtual void addDivConstraint(const vector<Value> solution, int sol_id, Cost cost) = 0;
+    virtual void addHDivConstraint(const vector<Value> solution, int sol_id, Cost cost) = 0;
+    virtual void addTDivConstraint(const vector<Value> solution, int sol_id, Cost cost) = 0;
+    virtual void addMDDConstraint(Mdd mdd, int relaxed) = 0;
+    virtual void addHMDDConstraint(Mdd mdd, int relaxed) = 0;
+    virtual void addTMDDConstraint(Mdd mdd, int relaxed) = 0;
+
+    virtual void iniSingleton() = 0;
+    virtual void updateSingleton() = 0;
+    virtual void removeSingleton() = 0;
+    virtual void printVACStat() = 0;
+};
+
+ostream& operator<<(ostream& os, WeightedCSP& wcsp); ///< \see WeightedCSP::print
+
+/** Abstract class WeightedCSPSolver representing a WCSP solver
+ *	- link to a WeightedCSP
+ *	- generic complete solving method configurable through global variables (see ::ToulBar2 class and command line options)
+ *	- optimal solution available after problem solving
+ *	- elementary decision operations on domains of variables
+ *	- statistics information (number of nodes and backtracks)
+ *	- problem file format reader (multiple formats, see \ref wcspformat)
+ *	- solution checker (output the cost of a given solution)
+ *
+ */
+
+class WeightedCSPSolver {
+public:
+    static WeightedCSPSolver* makeWeightedCSPSolver(Cost initUpperBound); ///< \brief WeightedCSP Solver factory
+
+    virtual ~WeightedCSPSolver() {}
+
+    virtual WeightedCSP* getWCSP() = 0; ///< \brief access to its associated Weighted CSP
+
+    virtual Long getNbNodes() const = 0; ///< \brief number of search nodes (see WeightedCSPSolver::increase, WeightedCSPSolver::decrease, WeightedCSPSolver::assign, WeightedCSPSolver::remove)
+    virtual Long getNbBacktracks() const = 0; ///< \brief number of backtracks
+
+    virtual void increase(int varIndex, Value value, bool reverse = false) = 0; ///< \brief changes domain lower bound and propagates
+    virtual void decrease(int varIndex, Value value, bool reverse = false) = 0; ///< \brief changes domain upper bound and propagates
+    virtual void assign(int varIndex, Value value, bool reverse = false) = 0; ///< \brief assigns a variable and propagates
+    virtual void remove(int varIndex, Value value, bool reverse = false) = 0; ///< \brief removes a domain value and propagates (valid if done for an enumerated variable or on its domain bounds)
+
+    /** \defgroup solving Solving cost function networks
+     * After creating a Weighted CSP, it can be solved using a local search method INCOP (see WeightedCSPSolver::narycsp) and/or an exact search method (see WeightedCSPSolver::solve).\n
+     * Various options of the solving methods are controlled by ::Toulbar2 static class members (see files ./src/core/tb2types.hpp and ./src/tb2main.cpp).\n
+     * A brief code example reading a wcsp problem given as a single command-line parameter and solving it:
+     * \code
+    #include "toulbar2lib.hpp"
+    #include <string.h>
+    #include <stdio.h>
+    #include <stdlib.h>
+    #include <unistd.h>
+    int main(int argc, char **argv) {
+
+        tb2init(); // must be call before setting specific ToulBar2 options and creating a model
+
+        // Create a solver object
+        initCosts(); // last check for compatibility issues between ToulBar2 options and Cost data-type
+        WeightedCSPSolver *solver = WeightedCSPSolver::makeWeightedCSPSolver(MAX_COST);
+
+        // Read a problem file in wcsp format
+        solver->read_wcsp(argv[1]);
+
+        ToulBar2::verbose = -1;  // change to 0 or higher values to see more trace information
+
+        // Uncomment if solved using INCOP local search followed by a partial Limited Discrepancy Search with a maximum discrepancy of one
+        //  ToulBar2::incop_cmd = "0 1 3 idwa 100000 cv v 0 200 1 0 0";
+        //  ToulBar2::lds = -1;  // remove it or change to a positive value then the search continues by a complete B&B search method
+        // Uncomment the following lines if solved using Decomposition Guided Variable Neighborhood Search with min-fill cluster decomposition and absorption
+        // ToulBar2::lds = 4;
+        // ToulBar2::restart = 10000;
+        // ToulBar2::searchMethod = DGVNS;
+        // ToulBar2::vnsNeighborVarHeur = CLUSTERRAND;
+        // ToulBar2::boostingBTD = 0.7;
+        // ToulBar2::varOrder = reinterpret_cast<char*>(-3);
+
+        if (solver->solve()) {
+            // show (sub-)optimal solution
+            vector<Value> sol;
+            Cost ub = solver->getSolution(sol);
+            cout << "Best solution found cost: " << ub << endl;
+            cout << "Best solution found:";
+            for (unsigned int i=0; i<sol.size(); i++) cout << ((i>0)?",":"") << " x" << i << " = " << sol[i];
+            cout << endl;
+        } else {
+            cout << "No solution found!" << endl;
+        }
+        delete solver;
+    }
+    \endcode
+     * \see another code example in ./src/toulbar2test.cpp
+     * \warning variable domains must start at zero, otherwise recompile libtb2.so without flag WCSPFORMATONLY
+    **/
+
+    virtual Cost read_wcsp(const char* fileName) = 0; ///< \brief reads a Cost function network from a file (format as indicated by ToulBar2:: global variables)
+    virtual void read_random(int n, int m, vector<int>& p, int seed, bool forceSubModular = false, string globalname = "") = 0; ///< \brief create a random WCSP, see WeightedCSP::read_random
+
+    /// \brief simplifies and solves to optimality the problem
+    /// \return false if there is no solution found
+    /// \warning after solving, the current problem has been modified by various preprocessing techniques
+    /// \warning DO NOT READ VALUES OF ASSIGNED VARIABLES USING WeightedCSP::getValue (temporally wrong assignments due to variable elimination in preprocessing) BUT USE WeightedCSPSolver::getSolution INSTEAD
+    virtual bool solve(bool first = true) = 0;
+
+    // internal methods called by solve, for advanced programmers only!!!
+    virtual void beginSolve(Cost ub) = 0;
+    virtual Cost preprocessing(Cost ub) = 0;
+    virtual void recursiveSolve(Cost lb = MIN_COST) = 0;
+    virtual void recursiveSolveLDS(int discrepancy) = 0;
+    virtual pair<Cost, Cost> hybridSolve() = 0;
+    virtual void endSolve(bool isSolution, Cost cost, bool isComplete) = 0;
+    // end of internal solve methods
+
+    /// \brief solves the current problem using INCOP local search solver by Bertrand Neveu
+    /// \return best solution cost found
+    /// \param cmd command line argument for narycsp INCOP local search solver (cmd format: lowerbound randomseed nbiterations method nbmoves neighborhoodchoice neighborhoodchoice2 minnbneighbors maxnbneighbors  neighborhoodchoice3 autotuning tracemode)
+    /// \param solution best solution assignment found (MUST BE INITIALIZED WITH A DEFAULT COMPLETE ASSIGNMENT)
+    /// \warning cannot solve problems with global cost functions
+    /// \note side-effects: updates current problem upper bound and propagates, best solution saved (using WCSP::setBestValue)
+    virtual Cost narycsp(string cmd, vector<Value>& solution) = 0;
+
+    /// \brief quadratic unconstrained pseudo-Boolean optimization
+    /// Maximize \f$h' \times W \times h\f$ where \f$W\f$ is expressed by all its
+    /// non-zero half squared matrix costs (can be positive or negative, with \f$\forall i, posx[i] \leq posy[i]\f$)
+    /// \note costs for \f$posx \neq posy\f$ are multiplied by 2 by this method
+    /// \note by convention: \f$h = 1 \equiv x = 0\f$ and \f$h = -1 \equiv x = 1\f$
+    /// \warning does not allow infinite costs (no forbidden assignments, unconstrained optimization)
+    /// \return true if at least one solution has been found (array \e sol being filled with the best solution)
+    /// \see ::solvesymmax2sat_ for Fortran call
+    virtual bool solve_symmax2sat(int n, int m, int* posx, int* posy, double* cost, int* sol) = 0;
+
+    virtual void dump_wcsp(const char* fileName, bool original = true, ProblemFormat format = WCSP_FORMAT) = 0; ///< \brief output current problem in a file \see WeightedCSP::dump
+    virtual void read_solution(const char* fileName, bool updateValueHeuristic = true) = 0; ///< \brief read a solution from a file
+    virtual void parse_solution(const char* certificate, bool updateValueHeuristic = true) = 0; ///< \brief read a solution from a string (see ToulBar2 option \e -x)
+
+    virtual const vector<Value> getSolution() = 0; ///< \brief after solving the problem, return the optimal solution (warning! do not use it if doing solution counting or if there is no solution, see WeightedCSPSolver::solve output for that)
+    virtual Double getSolutionValue() const = 0; ///< \brief after solving the problem, return the optimal solution value (can be an arbitrary real cost in minimization or preference in maximization, see CFN format) (warning! do not use it if doing solution counting or if there is no solution, see WeightedCSPSolver::solve output for that)
+    virtual Cost getSolutionCost() const = 0; ///< \brief after solving the problem, return the optimal solution nonnegative integer cost (warning! do not use it if doing solution counting or if there is no solution, see WeightedCSPSolver::solve output for that)
+    virtual Cost getSolution(vector<Value>& solution) const = 0; ///< \deprecated \brief after solving the problem, add the optimal solution in the input/output vector and returns its optimum cost (warning! do not use it if doing solution counting or if there is no solution, see WeightedCSPSolver::solve output for that)
+    virtual vector<pair<Double, vector<Value>>> getSolutions() const = 0; ///< \brief after solving the problem, return all solutions found with their corresponding value
+
+    // -----------------------------------------------------------
+    // Internal Solver functions DO NOT USE THEM
+
+    virtual set<int> getUnassignedVars() const = 0; ///< \internal returns the set of unassigned variable indexes \warning not valid before the search (see WeightedCSPSolver::solve)
+    virtual unsigned int numberOfUnassignedVariables() const = 0; ///< \internal returns the number of unassigned variables \warning not valid before the search (see WeightedCSPSolver::solve)
+};
+
+/// \brief initialization of ToulBar2 global variables (needed by numberjack/toulbar2)
+extern void tb2init();
+/// \brief checks compatibility between selected options of ToulBar2 (needed by numberjack/toulbar2)
+extern void tb2checkOptions();
+#endif /*TOULBAR2LIB_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/toulbar2test.cpp b/code/include/tb2/toulbar2test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a6cb32c967ebf28e7237ae7a6077a8439d5f967f
--- /dev/null
+++ b/code/include/tb2/toulbar2test.cpp
@@ -0,0 +1,158 @@
+
+/**
+ * Test toulbar2 API
+ */
+
+#include "toulbar2lib.hpp"
+
+#include "core/tb2wcsp.hpp"
+#include "vns/tb2vnsutils.hpp"
+#include "vns/tb2dgvns.hpp"
+#ifdef OPENMPI
+#include "vns/tb2cpdgvns.hpp"
+#include "vns/tb2rpdgvns.hpp"
+#endif
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+// INCOP default command line option
+const string Incop_cmd = "0 1 3 idwa 100000 cv v 0 200 1 0 0";
+
+int main(int argc, char* argv[])
+{
+#ifdef OPENMPI
+    MPIEnv env0;
+    MPI_Init(NULL, NULL);
+    MPI_Comm_size(MPI_COMM_WORLD, &env0.ntasks);
+    MPI_Comm_rank(MPI_COMM_WORLD, &env0.myrank);
+#endif
+
+    tb2init(); // must be call before setting specific ToulBar2 options and creating a model
+
+#ifdef OPENMPI
+    if (env0.myrank == 0)
+        ToulBar2::verbose = -1; // change to 0 or higher values to see more trace information
+    else
+        ToulBar2::verbose = -1;
+#else
+    ToulBar2::verbose = -1; // change to 0 or higher values to see more trace information
+#endif
+
+    // uncomment if Virtual Arc Consistency (equivalent to Augmented DAG algorithm) enable
+    //	ToulBar2::vac = 1; // option -A
+    //	ToulBar2::vacValueHeuristic = true; // option -V
+    // uncomment if partial Limited Discrepancy Search enable
+    //	ToulBar2::lds = 1;  // option -l=1
+    // uncomment if INCOP local search enable
+    //	ToulBar2::incop_cmd = Incop_cmd; // option -i
+    // uncomment the following lines if variable neighborhood search enable
+    //ToulBar2::lds = 4;
+    //ToulBar2::restart = 10000;
+    //#ifdef OPENMPI
+    //     if (env0.ntasks > 1) {
+    //    	 ToulBar2::searchMethod = RPDGVNS;
+    //    	 ToulBar2::vnsParallel = true;
+    //    	 ToulBar2::vnsNeighborVarHeur = MASTERCLUSTERRAND;
+    //    	 ToulBar2::vnsParallelSync = false;
+    //     } else {
+    //    	 ToulBar2::searchMethod = DGVNS;
+    //    	 ToulBar2::vnsNeighborVarHeur = CLUSTERRAND;
+    //     }
+    //#else
+    //	ToulBar2::searchMethod = DGVNS;
+    //	ToulBar2::vnsNeighborVarHeur = CLUSTERRAND;
+    //**or**
+    //  ToulBar2::searchMethod = VNS;
+    //  ToulBar2::vnsNeighborVarHeur = RANDOMVAR;
+    //#endif
+
+    // create a problem with three 0/1 variables
+    initCosts(); // last check for compatibility issues between ToulBar2 options and Cost data-type
+    WeightedCSPSolver* solver = WeightedCSPSolver::makeWeightedCSPSolver(MAX_COST);
+    int x = solver->getWCSP()->makeEnumeratedVariable("x", 0, 1); // note that for efficiency issue, I assume domain values start at zero (otherwise remove flag -DWCSPFORMATONLY in Makefile)
+    int y = solver->getWCSP()->makeEnumeratedVariable("y", 0, 1);
+    int z = solver->getWCSP()->makeEnumeratedVariable("z", 0, 1);
+
+    // add random unary cost functions on each variable
+    mysrand(getpid());
+    {
+        vector<Cost> costs(2, 0);
+        costs[0] = randomCost(0, 100);
+        costs[1] = randomCost(0, 100);
+        solver->getWCSP()->postUnary(x, costs);
+        costs[0] = randomCost(0, 100);
+        costs[1] = randomCost(0, 100);
+        solver->getWCSP()->postUnary(y, costs);
+        costs[0] = randomCost(0, 100);
+        costs[1] = randomCost(0, 100);
+        solver->getWCSP()->postUnary(z, costs);
+    }
+
+    // add binary cost functions (Ising) on each pair of variables
+    {
+        vector<Cost> costs;
+        for (unsigned int i = 0; i < 2; i++) {
+            for (unsigned int j = 0; j < 2; j++) {
+                costs.push_back((solver->getWCSP()->toValue(x, i) == solver->getWCSP()->toValue(y, j)) ? 0 : 30); // penalizes by a cost=30 if variables are assigned to different values
+            }
+        }
+        solver->getWCSP()->postBinaryConstraint(x, y, costs);
+        solver->getWCSP()->postBinaryConstraint(x, z, costs);
+        solver->getWCSP()->postBinaryConstraint(y, z, costs);
+    }
+
+    // add a ternary hard constraint (x+y=z)
+    {
+        vector<Cost> costs;
+        for (unsigned int i = 0; i < 2; i++) {
+            for (unsigned int j = 0; j < 2; j++) {
+                for (unsigned int k = 0; k < 2; k++) {
+                    costs.push_back((solver->getWCSP()->toValue(x, i) + solver->getWCSP()->toValue(y, j) == solver->getWCSP()->toValue(z, k)) ? 0 : MAX_COST);
+                }
+            }
+        }
+        solver->getWCSP()->postTernaryConstraint(x, y, z, costs);
+    }
+
+    solver->getWCSP()->sortConstraints(); // must be done before the search
+
+    //	int verbose = ToulBar2::verbose;
+    //	ToulBar2::verbose = 5;  // high verbosity to see the cost functions
+    //	solver->getWCSP()->print(cout);
+    //	ToulBar2::verbose = verbose;
+
+    //tb2checkOptions();
+    if (solver->solve()) {
+#ifdef OPENMPI
+        if (env0.myrank == 0) {
+#endif
+            // show optimal solution
+            vector<Value> sol;
+            Cost optimum = solver->getSolution(sol);
+            cout << "Optimum=" << optimum << endl;
+            cout << "Solution: x=" << sol[x] << " ,y=" << sol[y] << " ,z=" << sol[z] << endl;
+#ifdef OPENMPI
+        }
+#endif
+    } else {
+#ifdef OPENMPI
+        if (env0.myrank == 0) {
+#endif
+            cout << "No solution found!" << endl;
+#ifdef OPENMPI
+        }
+#endif
+    }
+    // cout << "Problem lower bound: " << solver->getWCSP()->getLb() << endl; // initial problem lower bound possibly enhanced by value removals at the root during search
+
+    return 0;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/SimpleGlob.h b/code/include/tb2/utils/SimpleGlob.h
new file mode 100644
index 0000000000000000000000000000000000000000..cdbd829d4061c7c65bad5d7f5c901f6bd4cf95d1
--- /dev/null
+++ b/code/include/tb2/utils/SimpleGlob.h
@@ -0,0 +1,994 @@
+/*! @file SimpleGlob.h
+
+    @version 3.6
+
+    @brief A cross-platform file globbing library providing the ability to
+    expand wildcards in command-line arguments to a list of all matching 
+    files. It is designed explicitly to be portable to any platform and has 
+    been tested on Windows and Linux. See CSimpleGlobTempl for the class 
+    definition.
+
+    @section features FEATURES
+    -   MIT Licence allows free use in all software (including GPL and 
+        commercial)
+    -   multi-platform (Windows 95/98/ME/NT/2K/XP, Linux, Unix)
+    -   supports most of the standard linux glob() options
+    -   recognition of a forward paths as equivalent to a backward slash 
+        on Windows. e.g. "c:/path/foo*" is equivalent to "c:\path\foo*".
+    -   implemented with only a single C++ header file
+    -   char, wchar_t and Windows TCHAR in the same program
+    -   complete working examples included
+    -   compiles cleanly at warning level 4 (Windows/VC.NET 2003), 
+        warning level 3 (Windows/VC6) and -Wall (Linux/gcc)
+
+    @section usage USAGE
+    The SimpleGlob class is used by following these steps:
+    <ol>
+    <li> Include the SimpleGlob.h header file
+
+        <pre>
+        \#include "SimpleGlob.h"
+        </pre>
+
+   <li> Instantiate a CSimpleGlob object supplying the appropriate flags.
+
+        <pre>
+        @link CSimpleGlobTempl CSimpleGlob @endlink glob(FLAGS);
+        </pre>
+
+   <li> Add all file specifications to the glob class.
+
+        <pre>
+        glob.Add("file*");
+        glob.Add(argc, argv);
+        </pre>
+
+   <li> Process all files with File(), Files() and FileCount()
+
+        <pre>
+        for (int n = 0; n < glob.FileCount(); ++n) {
+            ProcessFile(glob.File(n));
+        }
+        </pre>
+
+    </ol>
+
+    @section licence MIT LICENCE
+<pre>
+    The licence text below is the boilerplate "MIT Licence" used from:
+    http://www.opensource.org/licenses/mit-license.php
+
+    Copyright (c) 2006-2013, Brodie Thiesfield
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and associated documentation files (the "Software"),
+    to deal in the Software without restriction, including without limitation
+    the rights to use, copy, modify, merge, publish, distribute, sublicense,
+    and/or sell copies of the Software, and to permit persons to whom the
+    Software is furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included
+    in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
+    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
+    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
+    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
+    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+</pre>
+*/
+
+#ifndef INCLUDED_SimpleGlob
+#define INCLUDED_SimpleGlob
+
+/*! @brief The operation of SimpleGlob is fine-tuned via the use of a 
+    combination of the following flags.
+
+    The flags may be passed at initialization of the class and used for every
+    filespec added, or alternatively they may optionally be specified in the
+    call to Add() and be different for each filespec.
+
+    @param SG_GLOB_ERR
+        Return upon read error (e.g. directory does not have read permission)
+
+    @param SG_GLOB_MARK
+        Append a slash (backslash in Windows) to every path which corresponds
+        to a directory
+
+    @param SG_GLOB_NOSORT
+        By default, files are returned in sorted into string order. With this
+        flag, no sorting is done. This is not compatible with 
+        SG_GLOB_FULLSORT.
+
+    @param SG_GLOB_FULLSORT
+        By default, files are sorted in groups belonging to each filespec that
+        was added. For example if the filespec "b*" was added before the 
+        filespec "a*" then the argv array will contain all b* files sorted in 
+        order, followed by all a* files sorted in order. If this flag is 
+        specified, the entire array will be sorted ignoring the filespec 
+        groups.
+
+    @param SG_GLOB_NOCHECK
+        If the pattern doesn't match anything, return the original pattern.
+
+    @param SG_GLOB_TILDE
+        Tilde expansion is carried out (on Unix platforms)
+
+    @param SG_GLOB_ONLYDIR
+        Return only directories which match (not compatible with 
+        SG_GLOB_ONLYFILE)
+
+    @param SG_GLOB_ONLYFILE
+        Return only files which match (not compatible with SG_GLOB_ONLYDIR)
+
+    @param SG_GLOB_NODOT
+        Do not return the "." or ".." special directories.
+ */
+enum SG_Flags {
+    SG_GLOB_ERR = 1 << 0,
+    SG_GLOB_MARK = 1 << 1,
+    SG_GLOB_NOSORT = 1 << 2,
+    SG_GLOB_NOCHECK = 1 << 3,
+    SG_GLOB_TILDE = 1 << 4,
+    SG_GLOB_ONLYDIR = 1 << 5,
+    SG_GLOB_ONLYFILE = 1 << 6,
+    SG_GLOB_NODOT = 1 << 7,
+    SG_GLOB_FULLSORT = 1 << 8
+};
+
+/*! @brief Error return codes */
+enum SG_Error {
+    SG_SUCCESS = 0,
+    SG_ERR_NOMATCH = 1,
+    SG_ERR_MEMORY = -1,
+    SG_ERR_FAILURE = -2
+};
+
+// ---------------------------------------------------------------------------
+// Platform dependent implementations
+
+// if we aren't on Windows and we have ICU available, then enable ICU
+// by default. Define this to 0 to intentially disable it.
+#ifndef SG_HAVE_ICU
+#if !defined(__WIN32__) && defined(USTRING_H)
+#define SG_HAVE_ICU 1
+#else
+#define SG_HAVE_ICU 0
+#endif
+#endif
+
+// don't include this in documentation as it isn't relevant
+#ifndef DOXYGEN
+
+// on Windows we want to use MBCS aware string functions and mimic the
+// Unix glob functionality. On Unix we just use glob.
+#ifdef __WIN32__
+#include <mbstring.h>
+#define sg_strchr ::_mbschr
+#define sg_strrchr ::_mbsrchr
+#define sg_strlen ::_mbslen
+#if __STDC_WANT_SECURE_LIB__
+#define sg_strcpy_s(a, n, b) ::_mbscpy_s(a, n, b)
+#else
+#define sg_strcpy_s(a, n, b) ::_mbscpy(a, b)
+#endif
+#define sg_strcmp ::_mbscmp
+#define sg_strcasecmp ::_mbsicmp
+#define SOCHAR_T unsigned char
+#else
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <glob.h>
+#include <limits.h>
+#define MAX_PATH PATH_MAX
+#define sg_strchr ::strchr
+#define sg_strrchr ::strrchr
+#define sg_strlen ::strlen
+#define sg_strcpy_s(a, n, b) ::strcpy(a, b)
+#define sg_strcmp ::strcmp
+#define sg_strcasecmp ::strcasecmp
+#define SOCHAR_T char
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+// use assertions to test the input data
+#ifdef _DEBUG
+#ifdef _MSC_VER
+#include <crtdbg.h>
+#define SG_ASSERT(b) _ASSERTE(b)
+#else
+#include <assert.h>
+#define SG_ASSERT(b) assert(b)
+#endif
+#else
+#define SG_ASSERT(b)
+#endif
+
+/*! @brief String manipulation functions. */
+class SimpleGlobUtil {
+public:
+    static const char* strchr(const char* s, char c)
+    {
+        return (char*)sg_strchr((const SOCHAR_T*)s, c);
+    }
+    static const wchar_t* strchr(const wchar_t* s, wchar_t c)
+    {
+        return ::wcschr(s, c);
+    }
+#if SG_HAVE_ICU
+    static const UChar* strchr(const UChar* s, UChar c)
+    {
+        return ::u_strchr(s, c);
+    }
+#endif
+
+    static const char* strrchr(const char* s, char c)
+    {
+        return (char*)sg_strrchr((const SOCHAR_T*)s, c);
+    }
+    static const wchar_t* strrchr(const wchar_t* s, wchar_t c)
+    {
+        return ::wcsrchr(s, c);
+    }
+#if SG_HAVE_ICU
+    static const UChar* strrchr(const UChar* s, UChar c)
+    {
+        return ::u_strrchr(s, c);
+    }
+#endif
+
+    // Note: char strlen returns number of bytes, not characters
+    static size_t strlen(const char* s) { return ::strlen(s); }
+    static size_t strlen(const wchar_t* s) { return ::wcslen(s); }
+#if SG_HAVE_ICU
+    static size_t strlen(const UChar* s)
+    {
+        return ::u_strlen(s);
+    }
+#endif
+
+    static void strcpy_s(char* dst, size_t n, const char* src)
+    {
+        (void)n;
+        sg_strcpy_s((SOCHAR_T*)dst, n, (const SOCHAR_T*)src);
+    }
+    static void strcpy_s(wchar_t* dst, size_t n, const wchar_t* src)
+    {
+#if __STDC_WANT_SECURE_LIB__
+        ::wcscpy_s(dst, n, src);
+#else
+        (void)n;
+        ::wcscpy(dst, src);
+#endif
+    }
+#if SG_HAVE_ICU
+    static void strcpy_s(UChar* dst, size_t n, const UChar* src)
+    {
+        ::u_strncpy(dst, src, n);
+    }
+#endif
+
+    static int strcmp(const char* s1, const char* s2)
+    {
+        return sg_strcmp((const SOCHAR_T*)s1, (const SOCHAR_T*)s2);
+    }
+    static int strcmp(const wchar_t* s1, const wchar_t* s2)
+    {
+        return ::wcscmp(s1, s2);
+    }
+#if SG_HAVE_ICU
+    static int strcmp(const UChar* s1, const UChar* s2)
+    {
+        return ::u_strcmp(s1, s2);
+    }
+#endif
+
+    static int strcasecmp(const char* s1, const char* s2)
+    {
+        return sg_strcasecmp((const SOCHAR_T*)s1, (const SOCHAR_T*)s2);
+    }
+#if __WIN32__
+    static int strcasecmp(const wchar_t* s1, const wchar_t* s2)
+    {
+        return ::_wcsicmp(s1, s2);
+    }
+#endif // __WIN32__
+#if SG_HAVE_ICU
+    static int strcasecmp(const UChar* s1, const UChar* s2)
+    {
+        return u_strcasecmp(s1, s2, 0);
+    }
+#endif
+};
+
+enum SG_FileType {
+    SG_FILETYPE_INVALID,
+    SG_FILETYPE_FILE,
+    SG_FILETYPE_DIR
+};
+
+#ifdef __WIN32__
+
+#ifndef INVALID_FILE_ATTRIBUTES
+#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
+#endif
+
+#define SG_PATH_CHAR '\\'
+
+/*! @brief Windows glob implementation. */
+template <class SOCHAR>
+struct SimpleGlobBase {
+    SimpleGlobBase()
+        : m_hFind(INVALID_HANDLE_VALUE)
+    {
+    }
+
+    int FindFirstFileS(const char* a_pszFileSpec, unsigned int)
+    {
+        m_hFind = FindFirstFileA(a_pszFileSpec, &m_oFindDataA);
+        if (m_hFind != INVALID_HANDLE_VALUE) {
+            return SG_SUCCESS;
+        }
+        DWORD dwErr = GetLastError();
+        if (dwErr == ERROR_FILE_NOT_FOUND) {
+            return SG_ERR_NOMATCH;
+        }
+        return SG_ERR_FAILURE;
+    }
+    int FindFirstFileS(const wchar_t* a_pszFileSpec, unsigned int)
+    {
+        m_hFind = FindFirstFileW(a_pszFileSpec, &m_oFindDataW);
+        if (m_hFind != INVALID_HANDLE_VALUE) {
+            return SG_SUCCESS;
+        }
+        DWORD dwErr = GetLastError();
+        if (dwErr == ERROR_FILE_NOT_FOUND) {
+            return SG_ERR_NOMATCH;
+        }
+        return SG_ERR_FAILURE;
+    }
+
+    bool FindNextFileS(char)
+    {
+        return FindNextFileA(m_hFind, &m_oFindDataA) != FALSE;
+    }
+    bool FindNextFileS(wchar_t)
+    {
+        return FindNextFileW(m_hFind, &m_oFindDataW) != FALSE;
+    }
+
+    void FindDone()
+    {
+        FindClose(m_hFind);
+    }
+
+    const char* GetFileNameS(char) const
+    {
+        return m_oFindDataA.cFileName;
+    }
+    const wchar_t* GetFileNameS(wchar_t) const
+    {
+        return m_oFindDataW.cFileName;
+    }
+
+    bool IsDirS(char) const
+    {
+        return this->GetFileTypeS(m_oFindDataA.dwFileAttributes) == SG_FILETYPE_DIR;
+    }
+    bool IsDirS(wchar_t) const
+    {
+        return this->GetFileTypeS(m_oFindDataW.dwFileAttributes) == SG_FILETYPE_DIR;
+    }
+
+    SG_FileType GetFileTypeS(const char* a_pszPath)
+    {
+        return this->GetFileTypeS(GetFileAttributesA(a_pszPath));
+    }
+    SG_FileType GetFileTypeS(const wchar_t* a_pszPath)
+    {
+        return this->GetFileTypeS(GetFileAttributesW(a_pszPath));
+    }
+    SG_FileType GetFileTypeS(DWORD a_dwAttribs) const
+    {
+        if (a_dwAttribs == INVALID_FILE_ATTRIBUTES) {
+            return SG_FILETYPE_INVALID;
+        }
+        if (a_dwAttribs & FILE_ATTRIBUTE_DIRECTORY) {
+            return SG_FILETYPE_DIR;
+        }
+        return SG_FILETYPE_FILE;
+    }
+
+private:
+    HANDLE m_hFind;
+    WIN32_FIND_DATAA m_oFindDataA;
+    WIN32_FIND_DATAW m_oFindDataW;
+};
+
+#else // !__WIN32__
+
+#define SG_PATH_CHAR '/'
+
+/*! @brief Unix glob implementation. */
+template <class SOCHAR>
+struct SimpleGlobBase {
+    SimpleGlobBase()
+    {
+        memset(&m_glob, 0, sizeof(m_glob));
+        m_uiCurr = (size_t)-1;
+    }
+
+    ~SimpleGlobBase()
+    {
+        globfree(&m_glob);
+    }
+
+    void FilePrep()
+    {
+        m_bIsDir = false;
+        size_t len = strlen(m_glob.gl_pathv[m_uiCurr]);
+        if (m_glob.gl_pathv[m_uiCurr][len - 1] == '/') {
+            m_bIsDir = true;
+            m_glob.gl_pathv[m_uiCurr][len - 1] = 0;
+        }
+    }
+
+    int FindFirstFileS(const char* a_pszFileSpec, unsigned int a_uiFlags)
+    {
+        int nFlags = GLOB_MARK | GLOB_NOSORT;
+        if (a_uiFlags & SG_GLOB_ERR)
+            nFlags |= GLOB_ERR;
+        if (a_uiFlags & SG_GLOB_TILDE)
+            nFlags |= GLOB_TILDE;
+        int rc = glob(a_pszFileSpec, nFlags, NULL, &m_glob);
+        if (rc == GLOB_NOSPACE)
+            return SG_ERR_MEMORY;
+        if (rc == GLOB_ABORTED)
+            return SG_ERR_FAILURE;
+        if (rc == GLOB_NOMATCH)
+            return SG_ERR_NOMATCH;
+        m_uiCurr = 0;
+        FilePrep();
+        return SG_SUCCESS;
+    }
+
+#if SG_HAVE_ICU
+    int FindFirstFileS(const UChar* a_pszFileSpec, unsigned int a_uiFlags)
+    {
+        char buf[PATH_MAX] = { 0 };
+        UErrorCode status = U_ZERO_ERROR;
+        u_strToUTF8(buf, sizeof(buf), NULL, a_pszFileSpec, -1, &status);
+        if (U_FAILURE(status))
+            return SG_ERR_FAILURE;
+        return this->FindFirstFileS(buf, a_uiFlags);
+    }
+#endif
+
+    bool FindNextFileS(char)
+    {
+        SG_ASSERT(m_uiCurr != (size_t)-1);
+        if (++m_uiCurr >= m_glob.gl_pathc) {
+            return false;
+        }
+        FilePrep();
+        return true;
+    }
+
+#if SG_HAVE_ICU
+    bool FindNextFileS(UChar)
+    {
+        return this->FindNextFileS((char)0);
+    }
+#endif
+
+    void FindDone()
+    {
+        globfree(&m_glob);
+        memset(&m_glob, 0, sizeof(m_glob));
+        m_uiCurr = (size_t)-1;
+    }
+
+    const char* GetFileNameS(char) const
+    {
+        SG_ASSERT(m_uiCurr != (size_t)-1);
+        return m_glob.gl_pathv[m_uiCurr];
+    }
+
+#if SG_HAVE_ICU
+    const UChar* GetFileNameS(UChar) const
+    {
+        const char* pszFile = this->GetFileNameS((char)0);
+        if (!pszFile)
+            return NULL;
+        UErrorCode status = U_ZERO_ERROR;
+        memset(m_szBuf, 0, sizeof(m_szBuf));
+        u_strFromUTF8(m_szBuf, PATH_MAX, NULL, pszFile, -1, &status);
+        if (U_FAILURE(status))
+            return NULL;
+        return m_szBuf;
+    }
+#endif
+
+    bool IsDirS(char) const
+    {
+        SG_ASSERT(m_uiCurr != (size_t)-1);
+        return m_bIsDir;
+    }
+
+#if SG_HAVE_ICU
+    bool IsDirS(UChar) const
+    {
+        return this->IsDirS((char)0);
+    }
+#endif
+
+    SG_FileType GetFileTypeS(const char* a_pszPath) const
+    {
+        struct stat sb;
+        if (0 != stat(a_pszPath, &sb)) {
+            return SG_FILETYPE_INVALID;
+        }
+        if (S_ISDIR(sb.st_mode)) {
+            return SG_FILETYPE_DIR;
+        }
+        if (S_ISREG(sb.st_mode)) {
+            return SG_FILETYPE_FILE;
+        }
+        return SG_FILETYPE_INVALID;
+    }
+
+#if SG_HAVE_ICU
+    SG_FileType GetFileTypeS(const UChar* a_pszPath) const
+    {
+        char buf[PATH_MAX] = { 0 };
+        UErrorCode status = U_ZERO_ERROR;
+        u_strToUTF8(buf, sizeof(buf), NULL, a_pszPath, -1, &status);
+        if (U_FAILURE(status))
+            return SG_FILETYPE_INVALID;
+        return this->GetFileTypeS(buf);
+    }
+#endif
+
+private:
+    glob_t m_glob;
+    size_t m_uiCurr;
+    bool m_bIsDir;
+#if SG_HAVE_ICU
+    mutable UChar m_szBuf[PATH_MAX];
+#endif
+};
+
+#endif // __WIN32__
+
+#endif // DOXYGEN
+
+// ---------------------------------------------------------------------------
+//                              MAIN TEMPLATE CLASS
+// ---------------------------------------------------------------------------
+
+/*! @brief Implementation of the SimpleGlob class */
+template <class SOCHAR>
+class CSimpleGlobTempl : private SimpleGlobBase<SOCHAR> {
+public:
+    /*! @brief Initialize the class.
+
+        @param a_uiFlags            Combination of SG_GLOB flags.
+        @param a_nReservedSlots     Number of slots in the argv array that
+            should be reserved. In the returned array these slots
+            argv[0] ... argv[a_nReservedSlots-1] will be left empty for
+            the caller to fill in.
+     */
+    CSimpleGlobTempl(unsigned int a_uiFlags = 0, int a_nReservedSlots = 0);
+
+    /*! @brief Deallocate all memory buffers. */
+    ~CSimpleGlobTempl();
+
+    /*! @brief Initialize (or re-initialize) the class in preparation for
+        adding new filespecs.
+
+        All existing files are cleared. Note that allocated memory is only
+        deallocated at object destruction.
+
+        @param a_uiFlags            Combination of SG_GLOB flags.
+        @param a_nReservedSlots     Number of slots in the argv array that
+            should be reserved. In the returned array these slots
+            argv[0] ... argv[a_nReservedSlots-1] will be left empty for
+            the caller to fill in.
+     */
+    int Init(unsigned int a_uiFlags = 0, int a_nReservedSlots = 0);
+
+    /*! @brief Add a new filespec to the glob.
+
+        The filesystem will be immediately scanned for all matching files and
+        directories and they will be added to the glob.
+
+        @param a_pszFileSpec    Filespec to add to the glob.
+
+        @return SG_SUCCESS      Matching files were added to the glob.
+        @return SG_ERR_NOMATCH  Nothing matched the pattern. To ignore this 
+                                error compare return value to >= SG_SUCCESS.
+        @return SG_ERR_MEMORY   Out of memory failure.
+        @return SG_ERR_FAILURE  General failure.
+     */
+    int Add(const SOCHAR* a_pszFileSpec);
+
+    /*! @brief Add an array of filespec to the glob.
+
+        The filesystem will be immediately scanned for all matching files and
+        directories in each filespec and they will be added to the glob.
+
+        @param a_nCount         Number of filespec in the array.
+        @param a_rgpszFileSpec  Array of filespec to add to the glob.
+
+        @return SG_SUCCESS      Matching files were added to the glob.
+        @return SG_ERR_NOMATCH  Nothing matched the pattern. To ignore this 
+                                error compare return value to >= SG_SUCCESS.
+        @return SG_ERR_MEMORY   Out of memory failure.
+        @return SG_ERR_FAILURE  General failure.
+     */
+    int Add(int a_nCount, const SOCHAR* const* a_rgpszFileSpec);
+
+    /*! @brief Return the number of files in the argv array.
+     */
+    inline int FileCount() const { return m_nArgsLen; }
+
+    /*! @brief Return the full argv array. */
+    inline SOCHAR** Files()
+    {
+        SetArgvArrayType(POINTERS);
+        return m_rgpArgs;
+    }
+
+    /*! @brief Return the a single file. */
+    inline SOCHAR* File(int n)
+    {
+        SG_ASSERT(n >= 0 && n < m_nArgsLen);
+        return Files()[n];
+    }
+
+private:
+    CSimpleGlobTempl(const CSimpleGlobTempl&); // disabled
+    CSimpleGlobTempl& operator=(const CSimpleGlobTempl&); // disabled
+
+    /*! @brief The argv array has it's members stored as either an offset into
+        the string buffer, or as pointers to their string in the buffer. The 
+        offsets are used because if the string buffer is dynamically resized, 
+        all pointers into that buffer would become invalid.
+     */
+    enum ARG_ARRAY_TYPE { OFFSETS,
+        POINTERS };
+
+    /*! @brief Change the type of data stored in the argv array. */
+    void SetArgvArrayType(ARG_ARRAY_TYPE a_nNewType);
+
+    /*! @brief Add a filename to the array if it passes all requirements. */
+    int AppendName(const SOCHAR* a_pszFileName, bool a_bIsDir);
+
+    /*! @brief Grow the argv array to the required size. */
+    bool GrowArgvArray(int a_nNewLen);
+
+    /*! @brief Grow the string buffer to the required size. */
+    bool GrowStringBuffer(size_t a_uiMinSize);
+
+    /*! @brief Compare two (possible NULL) strings */
+    static int fileSortCompare(const void* a1, const void* a2);
+
+private:
+    unsigned int m_uiFlags;
+    ARG_ARRAY_TYPE m_nArgArrayType; //!< argv is indexes or pointers
+    SOCHAR** m_rgpArgs; //!< argv
+    int m_nReservedSlots; //!< # client slots in argv array
+    int m_nArgsSize; //!< allocated size of array
+    int m_nArgsLen; //!< used length
+    SOCHAR* m_pBuffer; //!< argv string buffer
+    size_t m_uiBufferSize; //!< allocated size of buffer
+    size_t m_uiBufferLen; //!< used length of buffer
+    SOCHAR m_szPathPrefix[MAX_PATH]; //!< wildcard path prefix
+};
+
+// ---------------------------------------------------------------------------
+//                                  IMPLEMENTATION
+// ---------------------------------------------------------------------------
+
+template <class SOCHAR>
+CSimpleGlobTempl<SOCHAR>::CSimpleGlobTempl(
+    unsigned int a_uiFlags,
+    int a_nReservedSlots)
+{
+    m_rgpArgs = NULL;
+    m_nArgsSize = 0;
+    m_pBuffer = NULL;
+    m_uiBufferSize = 0;
+
+    Init(a_uiFlags, a_nReservedSlots);
+}
+
+template <class SOCHAR>
+CSimpleGlobTempl<SOCHAR>::~CSimpleGlobTempl()
+{
+    if (m_rgpArgs)
+        free(m_rgpArgs);
+    if (m_pBuffer)
+        free(m_pBuffer);
+}
+
+template <class SOCHAR>
+int CSimpleGlobTempl<SOCHAR>::Init(
+    unsigned int a_uiFlags,
+    int a_nReservedSlots)
+{
+    m_nArgArrayType = POINTERS;
+    m_uiFlags = a_uiFlags;
+    m_nArgsLen = a_nReservedSlots;
+    m_nReservedSlots = a_nReservedSlots;
+    m_uiBufferLen = 0;
+
+    if (m_nReservedSlots > 0) {
+        if (!GrowArgvArray(m_nReservedSlots)) {
+            return SG_ERR_MEMORY;
+        }
+        for (int n = 0; n < m_nReservedSlots; ++n) {
+            m_rgpArgs[n] = NULL;
+        }
+    }
+
+    return SG_SUCCESS;
+}
+
+template <class SOCHAR>
+int CSimpleGlobTempl<SOCHAR>::Add(
+    const SOCHAR* a_pszFileSpec)
+{
+#ifdef __WIN32__
+    // Windows FindFirst/FindNext recognizes forward slash as the same as
+    // backward slash and follows the directories. We need to do the same
+    // when calculating the prefix and when we have no wildcards.
+    SOCHAR szFileSpec[MAX_PATH];
+    SimpleGlobUtil::strcpy_s(szFileSpec, MAX_PATH, a_pszFileSpec);
+    const SOCHAR* pszPath = SimpleGlobUtil::strchr(szFileSpec, '/');
+    while (pszPath) {
+        szFileSpec[pszPath - szFileSpec] = SG_PATH_CHAR;
+        pszPath = SimpleGlobUtil::strchr(pszPath + 1, '/');
+    }
+    a_pszFileSpec = szFileSpec;
+#endif
+
+    // if this doesn't contain wildcards then we can just add it directly
+    m_szPathPrefix[0] = 0;
+    if (!SimpleGlobUtil::strchr(a_pszFileSpec, '*') && !SimpleGlobUtil::strchr(a_pszFileSpec, '?')) {
+        SG_FileType nType = this->GetFileTypeS(a_pszFileSpec);
+        if (nType == SG_FILETYPE_INVALID) {
+            if (m_uiFlags & SG_GLOB_NOCHECK) {
+                return AppendName(a_pszFileSpec, false);
+            }
+            return SG_ERR_NOMATCH;
+        }
+        return AppendName(a_pszFileSpec, nType == SG_FILETYPE_DIR);
+    }
+
+#ifdef __WIN32__
+    // Windows doesn't return the directory with the filename, so we need to
+    // extract the path from the search string ourselves and prefix it to the
+    // filename we get back.
+    const SOCHAR* pszFilename = SimpleGlobUtil::strrchr(a_pszFileSpec, SG_PATH_CHAR);
+    if (pszFilename) {
+        SimpleGlobUtil::strcpy_s(m_szPathPrefix, MAX_PATH, a_pszFileSpec);
+        m_szPathPrefix[pszFilename - a_pszFileSpec + 1] = 0;
+    }
+#endif
+
+    // search for the first match on the file
+    int rc = this->FindFirstFileS(a_pszFileSpec, m_uiFlags);
+    if (rc != SG_SUCCESS) {
+        if (rc == SG_ERR_NOMATCH && (m_uiFlags & SG_GLOB_NOCHECK)) {
+            int ok = AppendName(a_pszFileSpec, false);
+            if (ok != SG_SUCCESS)
+                rc = ok;
+        }
+        return rc;
+    }
+
+    // add it and find all subsequent matches
+    int nError, nStartLen = m_nArgsLen;
+    bool bSuccess;
+    do {
+        nError = AppendName(this->GetFileNameS((SOCHAR)0), this->IsDirS((SOCHAR)0));
+        bSuccess = this->FindNextFileS((SOCHAR)0);
+    } while (nError == SG_SUCCESS && bSuccess);
+    SimpleGlobBase<SOCHAR>::FindDone();
+
+    // sort these files if required
+    if (m_nArgsLen > nStartLen && !(m_uiFlags & SG_GLOB_NOSORT)) {
+        if (m_uiFlags & SG_GLOB_FULLSORT) {
+            nStartLen = m_nReservedSlots;
+        }
+        SetArgvArrayType(POINTERS);
+        qsort(
+            m_rgpArgs + nStartLen,
+            m_nArgsLen - nStartLen,
+            sizeof(m_rgpArgs[0]), fileSortCompare);
+    }
+
+    return nError;
+}
+
+template <class SOCHAR>
+int CSimpleGlobTempl<SOCHAR>::Add(
+    int a_nCount,
+    const SOCHAR* const* a_rgpszFileSpec)
+{
+    int nResult;
+    for (int n = 0; n < a_nCount; ++n) {
+        nResult = Add(a_rgpszFileSpec[n]);
+        if (nResult != SG_SUCCESS) {
+            return nResult;
+        }
+    }
+    return SG_SUCCESS;
+}
+
+template <class SOCHAR>
+int CSimpleGlobTempl<SOCHAR>::AppendName(
+    const SOCHAR* a_pszFileName,
+    bool a_bIsDir)
+{
+    // we need the argv array as offsets in case we resize it
+    SetArgvArrayType(OFFSETS);
+
+    // check for special cases which cause us to ignore this entry
+    if ((m_uiFlags & SG_GLOB_ONLYDIR) && !a_bIsDir) {
+        return SG_SUCCESS;
+    }
+    if ((m_uiFlags & SG_GLOB_ONLYFILE) && a_bIsDir) {
+        return SG_SUCCESS;
+    }
+    if ((m_uiFlags & SG_GLOB_NODOT) && a_bIsDir) {
+        if (a_pszFileName[0] == '.') {
+            if (a_pszFileName[1] == '\0') {
+                return SG_SUCCESS;
+            }
+            if (a_pszFileName[1] == '.' && a_pszFileName[2] == '\0') {
+                return SG_SUCCESS;
+            }
+        }
+    }
+
+    // ensure that we have enough room in the argv array
+    if (!GrowArgvArray(m_nArgsLen + 1)) {
+        return SG_ERR_MEMORY;
+    }
+
+    // ensure that we have enough room in the string buffer (+1 for null)
+    size_t uiPrefixLen = SimpleGlobUtil::strlen(m_szPathPrefix);
+    size_t uiLen = uiPrefixLen + SimpleGlobUtil::strlen(a_pszFileName) + 1;
+    if (a_bIsDir && (m_uiFlags & SG_GLOB_MARK) == SG_GLOB_MARK) {
+        ++uiLen; // need space for the backslash
+    }
+    if (!GrowStringBuffer(m_uiBufferLen + uiLen)) {
+        return SG_ERR_MEMORY;
+    }
+
+    // add this entry. m_uiBufferLen is offset from beginning of buffer.
+    m_rgpArgs[m_nArgsLen++] = (SOCHAR*)m_uiBufferLen;
+    SimpleGlobUtil::strcpy_s(m_pBuffer + m_uiBufferLen,
+        m_uiBufferSize - m_uiBufferLen, m_szPathPrefix);
+    SimpleGlobUtil::strcpy_s(m_pBuffer + m_uiBufferLen + uiPrefixLen,
+        m_uiBufferSize - m_uiBufferLen - uiPrefixLen, a_pszFileName);
+    m_uiBufferLen += uiLen;
+
+    // add the directory slash if desired
+    if (a_bIsDir && (m_uiFlags & SG_GLOB_MARK) == SG_GLOB_MARK) {
+        const static SOCHAR szDirSlash[] = { SG_PATH_CHAR, 0 };
+        SimpleGlobUtil::strcpy_s(m_pBuffer + m_uiBufferLen - 2,
+            m_uiBufferSize - (m_uiBufferLen - 2), szDirSlash);
+    }
+
+    return SG_SUCCESS;
+}
+
+template <class SOCHAR>
+void CSimpleGlobTempl<SOCHAR>::SetArgvArrayType(
+    ARG_ARRAY_TYPE a_nNewType)
+{
+    if (m_nArgArrayType == a_nNewType)
+        return;
+    if (a_nNewType == POINTERS) {
+        SG_ASSERT(m_nArgArrayType == OFFSETS);
+        for (int n = 0; n < m_nArgsLen; ++n) {
+            m_rgpArgs[n] = (m_rgpArgs[n] == (SOCHAR*)-1) ? NULL : m_pBuffer + (size_t)m_rgpArgs[n];
+        }
+    } else {
+        SG_ASSERT(a_nNewType == OFFSETS);
+        SG_ASSERT(m_nArgArrayType == POINTERS);
+        for (int n = 0; n < m_nArgsLen; ++n) {
+            m_rgpArgs[n] = (m_rgpArgs[n] == NULL) ? (SOCHAR*)-1 : (SOCHAR*)(m_rgpArgs[n] - m_pBuffer);
+        }
+    }
+    m_nArgArrayType = a_nNewType;
+}
+
+template <class SOCHAR>
+bool CSimpleGlobTempl<SOCHAR>::GrowArgvArray(
+    int a_nNewLen)
+{
+    if (a_nNewLen >= m_nArgsSize) {
+        static const int SG_ARGV_INITIAL_SIZE = 32;
+        int nNewSize = (m_nArgsSize > 0) ? m_nArgsSize * 2 : SG_ARGV_INITIAL_SIZE;
+        while (a_nNewLen >= nNewSize) {
+            nNewSize *= 2;
+        }
+        void* pNewBuffer = realloc(m_rgpArgs, nNewSize * sizeof(SOCHAR*));
+        if (!pNewBuffer)
+            return false;
+        m_nArgsSize = nNewSize;
+        m_rgpArgs = (SOCHAR**)pNewBuffer;
+    }
+    return true;
+}
+
+template <class SOCHAR>
+bool CSimpleGlobTempl<SOCHAR>::GrowStringBuffer(
+    size_t a_uiMinSize)
+{
+    if (a_uiMinSize >= m_uiBufferSize) {
+        static const int SG_BUFFER_INITIAL_SIZE = 1024;
+        size_t uiNewSize = (m_uiBufferSize > 0) ? m_uiBufferSize * 2 : SG_BUFFER_INITIAL_SIZE;
+        while (a_uiMinSize >= uiNewSize) {
+            uiNewSize *= 2;
+        }
+        void* pNewBuffer = realloc(m_pBuffer, uiNewSize * sizeof(SOCHAR));
+        if (!pNewBuffer)
+            return false;
+        m_uiBufferSize = uiNewSize;
+        m_pBuffer = (SOCHAR*)pNewBuffer;
+    }
+    return true;
+}
+
+template <class SOCHAR>
+int CSimpleGlobTempl<SOCHAR>::fileSortCompare(
+    const void* a1,
+    const void* a2)
+{
+    const SOCHAR* s1 = *(const SOCHAR**)a1;
+    const SOCHAR* s2 = *(const SOCHAR**)a2;
+    if (s1 && s2) {
+        return SimpleGlobUtil::strcasecmp(s1, s2);
+    }
+    // NULL sorts first
+    return s1 == s2 ? 0 : (s1 ? 1 : -1);
+}
+
+// ---------------------------------------------------------------------------
+//                                  TYPE DEFINITIONS
+// ---------------------------------------------------------------------------
+
+/*! @brief ASCII/MBCS version of CSimpleGlob */
+typedef CSimpleGlobTempl<char> CSimpleGlobA;
+
+/*! @brief wchar_t version of CSimpleGlob */
+typedef CSimpleGlobTempl<wchar_t> CSimpleGlobW;
+
+#if SG_HAVE_ICU
+/*! @brief UChar version of CSimpleGlob */
+typedef CSimpleGlobTempl<UChar> CSimpleGlobU;
+#endif
+
+#ifdef _UNICODE
+/*! @brief TCHAR version dependent on if _UNICODE is defined */
+#if SG_HAVE_ICU
+#define CSimpleGlob CSimpleGlobU
+#else
+#define CSimpleGlob CSimpleGlobW
+#endif
+#else
+/*! @brief TCHAR version dependent on if _UNICODE is defined */
+#define CSimpleGlob CSimpleGlobA
+#endif
+
+#endif // INCLUDED_SimpleGlob
diff --git a/code/include/tb2/utils/SimpleOpt.h b/code/include/tb2/utils/SimpleOpt.h
new file mode 100644
index 0000000000000000000000000000000000000000..f2cc8cdc919cafc7fb4f4181dfa5b7b160324457
--- /dev/null
+++ b/code/include/tb2/utils/SimpleOpt.h
@@ -0,0 +1,1036 @@
+/*! @file SimpleOpt.h
+
+    @version 3.6
+
+    @brief A cross-platform command line library which can parse almost any
+    of the standard command line formats in use today. It is designed 
+    explicitly to be portable to any platform and has been tested on Windows 
+    and Linux. See CSimpleOptTempl for the class definition.
+
+    @section features FEATURES
+    -   MIT Licence allows free use in all software (including GPL 
+        and commercial)
+    -   multi-platform (Windows 95/98/ME/NT/2K/XP, Linux, Unix)
+    -   supports all lengths of option names:
+        <table width="60%">
+            <tr><td width="30%"> - 
+                <td>switch character only (e.g. use stdin for input)
+            <tr><td> -o          
+                <td>short (single character)
+            <tr><td> -long       
+                <td>long (multiple character, single switch character)
+            <tr><td> --longer    
+                <td>long (multiple character, multiple switch characters)
+        </table>
+    -   supports all types of arguments for options:
+        <table width="60%">
+            <tr><td width="30%"> --option        
+                <td>short/long option flag (no argument)
+            <tr><td> --option ARG    
+                <td>short/long option with separate required argument
+            <tr><td> --option=ARG    
+                <td>short/long option with combined required argument
+            <tr><td> --option[=ARG]  
+                <td>short/long option with combined optional argument
+            <tr><td> -oARG           
+                <td>short option with combined required argument
+            <tr><td> -o[ARG]         
+                <td>short option with combined optional argument
+        </table>
+    -   supports options with multiple or variable numbers of arguments:
+        <table width="60%">
+            <tr><td width="30%"> --multi ARG1 ARG2      
+                <td>Multiple arguments
+            <tr><td> --multi N ARG-1 ARG-2 ... ARG-N    
+                <td>Variable number of arguments
+        </table>
+    -   supports case-insensitive option matching on short, long and/or 
+        word arguments.
+    -   supports options which do not use a switch character. i.e. a special 
+        word which is construed as an option. 
+        e.g. "foo.exe open /directory/file.txt" 
+    -   supports clumping of multiple short options (no arguments) in a string 
+        e.g. "foo.exe -abcdef file1" <==> "foo.exe -a -b -c -d -e -f file1"
+    -   automatic recognition of a single slash as equivalent to a single 
+        hyphen on Windows, e.g. "/f FILE" is equivalent to "-f FILE".
+    -   file arguments can appear anywhere in the argument list:
+        "foo.exe file1.txt -a ARG file2.txt --flag file3.txt file4.txt"
+        files will be returned to the application in the same order they were 
+        supplied on the command line
+    -   short-circuit option matching: "--man" will match "--mandate"
+        invalid options can be handled while continuing to parse the command 
+        line valid options list can be changed dynamically during command line
+        processing, i.e. accept different options depending on an option 
+        supplied earlier in the command line.
+    -   implemented with only a single C++ header file
+    -   optionally use no C runtime or OS functions
+    -   char, wchar_t and Windows TCHAR in the same program
+    -   complete working examples included
+    -   compiles cleanly at warning level 4 (Windows/VC.NET 2003), warning 
+        level 3 (Windows/VC6) and -Wall (Linux/gcc)
+
+    @section usage USAGE
+    The SimpleOpt class is used by following these steps:
+<ol>
+    <li> Include the SimpleOpt.h header file
+        <pre>
+        \#include "SimpleOpt.h"
+        </pre>
+    <li> Define an array of valid options for your program.
+<pre>
+@link CSimpleOptTempl::SOption CSimpleOpt::SOption @endlink g_rgOptions[] = {
+    { OPT_FLAG, _T("-a"),     SO_NONE    }, // "-a"
+    { OPT_FLAG, _T("-b"),     SO_NONE    }, // "-b"
+    { OPT_ARG,  _T("-f"),     SO_REQ_SEP }, // "-f ARG"
+    { OPT_HELP, _T("-?"),     SO_NONE    }, // "-?"
+    { OPT_HELP, _T("--help"), SO_NONE    }, // "--help"
+    SO_END_OF_OPTIONS                       // END
+};
+</pre>
+        Note that all options must start with a hyphen even if the slash will
+        be accepted. This is because the slash character is automatically
+        converted into a hyphen to test against the list of options. 
+        For example, the following line matches both "-?" and "/?" 
+        (on Windows).
+<pre>
+    { OPT_HELP, _T("-?"),     SO_NONE    }, // "-?"
+</pre>
+   <li> Instantiate a CSimpleOpt object supplying argc, argv and the option 
+        table
+<pre>
+@link CSimpleOptTempl CSimpleOpt @endlink args(argc, argv, g_rgOptions);
+</pre>
+   <li> Process the arguments by calling Next() until it returns false. 
+        On each call, first check for an error by calling LastError(), then 
+        either handle the error or process the argument.
+<pre>
+while (args.Next()) {
+    if (args.LastError() == SO_SUCCESS) {
+        handle option: use OptionId(), OptionText() and OptionArg()
+    }
+    else {
+        handle error: see ESOError enums
+    }
+}
+</pre>
+   <li> Process all non-option arguments with File(), Files() and FileCount()
+<pre>
+ShowFiles(args.FileCount(), args.Files());
+</pre>
+    </ol>
+
+    @section notes NOTES
+    -   In MBCS mode, this library is guaranteed to work correctly only when
+        all option names use only ASCII characters.
+    -   Note that if case-insensitive matching is being used then the first
+        matching option in the argument list will be returned.
+
+    @section licence MIT LICENCE
+<pre>
+    The licence text below is the boilerplate "MIT Licence" used from:
+    http://www.opensource.org/licenses/mit-license.php
+
+    Copyright (c) 2006-2013, Brodie Thiesfield
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and associated documentation files (the "Software"),
+    to deal in the Software without restriction, including without limitation
+    the rights to use, copy, modify, merge, publish, distribute, sublicense,
+    and/or sell copies of the Software, and to permit persons to whom the
+    Software is furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included
+    in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
+    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
+    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
+    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
+    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+</pre>
+*/
+
+/* @mainpage
+
+    <table>
+        <tr><th>Library     <td>SimpleOpt
+        <tr><th>Author      <td>Brodie Thiesfield [code at jellycan dot com]
+        <tr><th>Source      <td>http://code.jellycan.com/simpleopt/
+    </table>
+
+    @section SimpleOpt SimpleOpt
+
+    A cross-platform library providing a simple method to parse almost any of
+    the standard command-line formats in use today.
+
+    See the @link SimpleOpt.h SimpleOpt @endlink documentation for full 
+    details.
+
+    @section SimpleGlob SimpleGlob
+
+    A cross-platform file globbing library providing the ability to
+    expand wildcards in command-line arguments to a list of all matching 
+    files.
+
+    See the @link SimpleGlob.h SimpleGlob @endlink documentation for full 
+    details.
+*/
+
+#ifndef INCLUDED_SimpleOpt
+#define INCLUDED_SimpleOpt
+
+// Default the max arguments to a fixed value. If you want to be able to
+// handle any number of arguments, then predefine this to 0 and it will
+// use an internal dynamically allocated buffer instead.
+#ifdef SO_MAX_ARGS
+#define SO_STATICBUF SO_MAX_ARGS
+#else
+#include <stdlib.h> // malloc, free
+#include <string.h> // memcpy
+#define SO_STATICBUF 50
+#endif
+
+//! Error values
+typedef enum _ESOError {
+    //! No error
+    SO_SUCCESS = 0,
+
+    /*! It looks like an option (it starts with a switch character), but 
+        it isn't registered in the option table. */
+    SO_OPT_INVALID = -1,
+
+    /*! Multiple options matched the supplied option text. 
+        Only returned when NOT using SO_O_EXACT. */
+    SO_OPT_MULTIPLE = -2,
+
+    /*! Option doesn't take an argument, but a combined argument was 
+        supplied. */
+    SO_ARG_INVALID = -3,
+
+    /*! SO_REQ_CMB style-argument was supplied to a SO_REQ_SEP option
+        Only returned when using SO_O_PEDANTIC. */
+    SO_ARG_INVALID_TYPE = -4,
+
+    //! Required argument was not supplied
+    SO_ARG_MISSING = -5,
+
+    /*! Option argument looks like another option. 
+        Only returned when NOT using SO_O_NOERR. */
+    SO_ARG_INVALID_DATA = -6
+} ESOError;
+
+//! Option flags
+enum _ESOFlags {
+    /*! Disallow partial matching of option names */
+    SO_O_EXACT = 0x0001,
+
+    /*! Disallow use of slash as an option marker on Windows. 
+        Un*x only ever recognizes a hyphen. */
+    SO_O_NOSLASH = 0x0002,
+
+    /*! Permit arguments on single letter options with no equals sign. 
+        e.g. -oARG or -o[ARG] */
+    SO_O_SHORTARG = 0x0004,
+
+    /*! Permit single character options to be clumped into a single 
+        option string. e.g. "-a -b -c" <==> "-abc" */
+    SO_O_CLUMP = 0x0008,
+
+    /*! Process the entire argv array for options, including the 
+        argv[0] entry. */
+    SO_O_USEALL = 0x0010,
+
+    /*! Do not generate an error for invalid options. errors for missing 
+        arguments will still be generated. invalid options will be 
+        treated as files. invalid options in clumps will be silently 
+        ignored. */
+    SO_O_NOERR = 0x0020,
+
+    /*! Validate argument type pedantically. Return an error when a 
+        separated argument "-opt arg" is supplied by the user as a 
+        combined argument "-opt=arg". By default this is not considered 
+        an error. */
+    SO_O_PEDANTIC = 0x0040,
+
+    /*! Case-insensitive comparisons for short arguments */
+    SO_O_ICASE_SHORT = 0x0100,
+
+    /*! Case-insensitive comparisons for long arguments */
+    SO_O_ICASE_LONG = 0x0200,
+
+    /*! Case-insensitive comparisons for word arguments 
+        i.e. arguments without any hyphens at the start. */
+    SO_O_ICASE_WORD = 0x0400,
+
+    /*! Case-insensitive comparisons for all arg types */
+    SO_O_ICASE = 0x0700
+};
+
+/*! Types of arguments that options may have. Note that some of the _ESOFlags
+    are not compatible with all argument types. SO_O_SHORTARG requires that
+    relevant options use either SO_REQ_CMB or SO_OPT. SO_O_CLUMP requires 
+    that relevant options use only SO_NONE.
+ */
+typedef enum _ESOArgType {
+    /*! No argument. Just the option flags.
+        e.g. -o         --opt */
+    SO_NONE,
+
+    /*! Required separate argument.  
+        e.g. -o ARG     --opt ARG */
+    SO_REQ_SEP,
+
+    /*! Required combined argument.  
+        e.g. -oARG      -o=ARG      --opt=ARG  */
+    SO_REQ_CMB,
+
+    /*! Optional combined argument.  
+        e.g. -o[ARG]    -o[=ARG]    --opt[=ARG] */
+    SO_OPT,
+
+    /*! Multiple separate arguments. The actual number of arguments is
+        determined programatically at the time the argument is processed.
+        e.g. -o N ARG1 ARG2 ... ARGN    --opt N ARG1 ARG2 ... ARGN */
+    SO_MULTI
+} ESOArgType;
+
+//! this option definition must be the last entry in the table
+#define SO_END_OF_OPTIONS \
+    {                     \
+        -1, NULL, SO_NONE \
+    }
+
+#ifdef _DEBUG
+#ifdef _MSC_VER
+#include <crtdbg.h>
+#define SO_ASSERT(b) _ASSERTE(b)
+#else
+#include <assert.h>
+#define SO_ASSERT(b) assert(b)
+#endif
+#else
+#define SO_ASSERT(b) //!< assertion used to test input data
+#endif
+
+// ---------------------------------------------------------------------------
+//                              MAIN TEMPLATE CLASS
+// ---------------------------------------------------------------------------
+
+/*! @brief Implementation of the SimpleOpt class */
+template <class SOCHAR>
+class CSimpleOptTempl {
+public:
+    /*! @brief Structure used to define all known options. */
+    struct SOption {
+        /*! ID to return for this flag. Optional but must be >= 0 */
+        int nId;
+
+        /*! arg string to search for, e.g.  "open", "-", "-f", "--file" 
+            Note that on Windows the slash option marker will be converted
+            to a hyphen so that "-f" will also match "/f". */
+        const SOCHAR* pszArg;
+
+        /*! type of argument accepted by this option */
+        ESOArgType nArgType;
+    };
+
+    /*! @brief Initialize the class. Init() must be called later. */
+    CSimpleOptTempl()
+        : m_rgShuffleBuf(NULL)
+    {
+        Init(0, NULL, NULL, 0);
+    }
+
+    /*! @brief Initialize the class in preparation for use. */
+    CSimpleOptTempl(
+        int argc,
+        SOCHAR* argv[],
+        const SOption* a_rgOptions,
+        int a_nFlags = 0)
+        : m_rgShuffleBuf(NULL)
+    {
+        Init(argc, argv, a_rgOptions, a_nFlags);
+    }
+
+#ifndef SO_MAX_ARGS
+    /*! @brief Deallocate any allocated memory. */
+    ~CSimpleOptTempl()
+    {
+        if (m_rgShuffleBuf)
+            free(m_rgShuffleBuf);
+    }
+#endif
+
+    /*! @brief Initialize the class in preparation for calling Next.
+
+        The table of options pointed to by a_rgOptions does not need to be
+        valid at the time that Init() is called. However on every call to
+        Next() the table pointed to must be a valid options table with the
+        last valid entry set to SO_END_OF_OPTIONS.
+
+        NOTE: the array pointed to by a_argv will be modified by this
+        class and must not be used or modified outside of member calls to
+        this class.
+
+        @param a_argc       Argument array size
+        @param a_argv       Argument array
+        @param a_rgOptions  Valid option array
+        @param a_nFlags     Optional flags to modify the processing of 
+                            the arguments
+
+        @return true        Successful 
+        @return false       if SO_MAX_ARGC > 0:  Too many arguments
+                            if SO_MAX_ARGC == 0: Memory allocation failure
+    */
+    bool Init(
+        int a_argc,
+        SOCHAR* a_argv[],
+        const SOption* a_rgOptions,
+        int a_nFlags = 0);
+
+    /*! @brief Change the current options table during option parsing.
+
+        @param a_rgOptions  Valid option array
+     */
+    inline void SetOptions(const SOption* a_rgOptions)
+    {
+        m_rgOptions = a_rgOptions;
+    }
+
+    /*! @brief Change the current flags during option parsing.
+
+        Note that changing the SO_O_USEALL flag here will have no affect.
+        It must be set using Init() or the constructor.
+
+        @param a_nFlags     Flags to modify the processing of the arguments
+     */
+    inline void SetFlags(int a_nFlags) { m_nFlags = a_nFlags; }
+
+    /*! @brief Query if a particular flag is set */
+    inline bool HasFlag(int a_nFlag) const
+    {
+        return (m_nFlags & a_nFlag) == a_nFlag;
+    }
+
+    /*! @brief Advance to the next option if available.
+
+        When all options have been processed it will return false. When true
+        has been returned, you must check for an invalid or unrecognized
+        option using the LastError() method. This will be return an error 
+        value other than SO_SUCCESS on an error. All standard data 
+        (e.g. OptionText(), OptionArg(), OptionId(), etc) will be available
+        depending on the error.
+
+        After all options have been processed, the remaining files from the
+        command line can be processed in same order as they were passed to
+        the program.
+
+        @return true    option or error available for processing
+        @return false   all options have been processed
+    */
+    bool Next();
+
+    /*! Stops processing of the command line and returns all remaining
+        arguments as files. The next call to Next() will return false.
+     */
+    void Stop();
+
+    /*! @brief Return the last error that occurred.
+
+        This function must always be called before processing the current 
+        option. This function is available only when Next() has returned true.
+     */
+    inline ESOError LastError() const { return m_nLastError; }
+
+    /*! @brief Return the nId value from the options array for the current
+        option.
+
+        This function is available only when Next() has returned true.
+     */
+    inline int OptionId() const { return m_nOptionId; }
+
+    /*! @brief Return the pszArg from the options array for the current 
+        option.
+
+        This function is available only when Next() has returned true.
+     */
+    inline const SOCHAR* OptionText() const { return m_pszOptionText; }
+
+    /*! @brief Return the argument for the current option where one exists.
+
+        If there is no argument for the option, this will return NULL.
+        This function is available only when Next() has returned true.
+     */
+    inline SOCHAR* OptionArg() const { return m_pszOptionArg; }
+
+    /*! @brief Validate and return the desired number of arguments.
+
+        This is only valid when OptionId() has return the ID of an option
+        that is registered as SO_MULTI. It may be called multiple times
+        each time returning the desired number of arguments. Previously
+        returned argument pointers are remain valid.
+
+        If an error occurs during processing, NULL will be returned and
+        the error will be available via LastError().
+
+        @param n    Number of arguments to return.
+     */
+    SOCHAR** MultiArg(int n);
+
+    /*! @brief Returned the number of entries in the Files() array.
+
+        After Next() has returned false, this will be the list of files (or
+        otherwise unprocessed arguments).
+     */
+    inline int FileCount() const { return m_argc - m_nLastArg; }
+
+    /*! @brief Return the specified file argument.
+
+        @param n    Index of the file to return. This must be between 0
+                    and FileCount() - 1;
+     */
+    inline SOCHAR* File(int n) const
+    {
+        SO_ASSERT(n >= 0 && n < FileCount());
+        return m_argv[m_nLastArg + n];
+    }
+
+    /*! @brief Return the array of files. */
+    inline SOCHAR** Files() const { return &m_argv[m_nLastArg]; }
+
+private:
+    CSimpleOptTempl(const CSimpleOptTempl&); // disabled
+    CSimpleOptTempl& operator=(const CSimpleOptTempl&); // disabled
+
+    SOCHAR PrepareArg(SOCHAR* a_pszString) const;
+    bool NextClumped();
+    void ShuffleArg(int a_nStartIdx, int a_nCount);
+    int LookupOption(const SOCHAR* a_pszOption) const;
+    int CalcMatch(const SOCHAR* a_pszSource, const SOCHAR* a_pszTest) const;
+
+    // Find the '=' character within a string.
+    inline SOCHAR* FindEquals(SOCHAR* s) const
+    {
+        while (*s && *s != (SOCHAR)'=')
+            ++s;
+        return *s ? s : NULL;
+    }
+    bool IsEqual(SOCHAR a_cLeft, SOCHAR a_cRight, int a_nArgType) const;
+
+    inline void Copy(SOCHAR** ppDst, SOCHAR** ppSrc, int nCount) const
+    {
+#ifdef SO_MAX_ARGS
+        // keep our promise of no CLIB usage
+        while (nCount-- > 0)
+            *ppDst++ = *ppSrc++;
+#else
+        memmove(ppDst, ppSrc, nCount * sizeof(SOCHAR*));
+#endif
+    }
+
+private:
+    const SOption* m_rgOptions; //!< pointer to options table
+    int m_nFlags; //!< flags
+    int m_nOptionIdx; //!< current argv option index
+    int m_nOptionId; //!< id of current option (-1 = invalid)
+    int m_nNextOption; //!< index of next option
+    int m_nLastArg; //!< last argument, after this are files
+    int m_argc; //!< argc to process
+    SOCHAR** m_argv; //!< argv
+    const SOCHAR* m_pszOptionText; //!< curr option text, e.g. "-f"
+    SOCHAR* m_pszOptionArg; //!< curr option arg, e.g. "c:\file.txt"
+    SOCHAR* m_pszClump; //!< clumped single character options
+    SOCHAR m_szShort[3]; //!< temp for clump and combined args
+    ESOError m_nLastError; //!< error status from the last call
+    SOCHAR** m_rgShuffleBuf; //!< shuffle buffer for large argc
+};
+
+// ---------------------------------------------------------------------------
+//                                  IMPLEMENTATION
+// ---------------------------------------------------------------------------
+
+template <class SOCHAR>
+bool CSimpleOptTempl<SOCHAR>::Init(
+    int a_argc,
+    SOCHAR* a_argv[],
+    const SOption* a_rgOptions,
+    int a_nFlags)
+{
+    m_argc = a_argc;
+    m_nLastArg = a_argc;
+    m_argv = a_argv;
+    m_rgOptions = a_rgOptions;
+    m_nLastError = SO_SUCCESS;
+    m_nOptionIdx = 0;
+    m_nOptionId = -1;
+    m_pszOptionText = NULL;
+    m_pszOptionArg = NULL;
+    m_nNextOption = (a_nFlags & SO_O_USEALL) ? 0 : 1;
+    m_szShort[0] = (SOCHAR)'-';
+    m_szShort[2] = (SOCHAR)'\0';
+    m_nFlags = a_nFlags;
+    m_pszClump = NULL;
+
+#ifdef SO_MAX_ARGS
+    if (m_argc > SO_MAX_ARGS) {
+        m_nLastError = SO_ARG_INVALID_DATA;
+        m_nLastArg = 0;
+        return false;
+    }
+#else
+    if (m_rgShuffleBuf) {
+        free(m_rgShuffleBuf);
+    }
+    if (m_argc > SO_STATICBUF) {
+        m_rgShuffleBuf = (SOCHAR**)malloc(sizeof(SOCHAR*) * m_argc);
+        if (!m_rgShuffleBuf) {
+            return false;
+        }
+    }
+#endif
+
+    return true;
+}
+
+template <class SOCHAR>
+bool CSimpleOptTempl<SOCHAR>::Next()
+{
+#ifdef SO_MAX_ARGS
+    if (m_argc > SO_MAX_ARGS) {
+        SO_ASSERT(!"Too many args! Check the return value of Init()!");
+        return false;
+    }
+#endif
+
+    // process a clumped option string if appropriate
+    if (m_pszClump && *m_pszClump) {
+        // silently discard invalid clumped option
+        bool bIsValid = NextClumped();
+        while (*m_pszClump && !bIsValid && HasFlag(SO_O_NOERR)) {
+            bIsValid = NextClumped();
+        }
+
+        // return this option if valid or we are returning errors
+        if (bIsValid || !HasFlag(SO_O_NOERR)) {
+            return true;
+        }
+    }
+    SO_ASSERT(!m_pszClump || !*m_pszClump);
+    m_pszClump = NULL;
+
+    // init for the next option
+    m_nOptionIdx = m_nNextOption;
+    m_nOptionId = -1;
+    m_pszOptionText = NULL;
+    m_pszOptionArg = NULL;
+    m_nLastError = SO_SUCCESS;
+
+    // find the next option
+    SOCHAR cFirst;
+    int nTableIdx = -1;
+    int nOptIdx = m_nOptionIdx;
+    while (nTableIdx < 0 && nOptIdx < m_nLastArg) {
+        SOCHAR* pszArg = m_argv[nOptIdx];
+        m_pszOptionArg = NULL;
+
+        // find this option in the options table
+        cFirst = PrepareArg(pszArg);
+        if (pszArg[0] == (SOCHAR)'-') {
+            // find any combined argument string and remove equals sign
+            m_pszOptionArg = FindEquals(pszArg);
+            if (m_pszOptionArg) {
+                *m_pszOptionArg++ = (SOCHAR)'\0';
+            }
+        }
+        nTableIdx = LookupOption(pszArg);
+
+        // if we didn't find this option but if it is a short form
+        // option then we try the alternative forms
+        if (nTableIdx < 0
+            && !m_pszOptionArg
+            && pszArg[0] == (SOCHAR)'-'
+            && pszArg[1]
+            && pszArg[1] != (SOCHAR)'-'
+            && pszArg[2]) {
+            // test for a short-form with argument if appropriate
+            if (HasFlag(SO_O_SHORTARG)) {
+                m_szShort[1] = pszArg[1];
+                int nIdx = LookupOption(m_szShort);
+                if (nIdx >= 0
+                    && (m_rgOptions[nIdx].nArgType == SO_REQ_CMB
+                           || m_rgOptions[nIdx].nArgType == SO_OPT)) {
+                    m_pszOptionArg = &pszArg[2];
+                    pszArg = m_szShort;
+                    nTableIdx = nIdx;
+                }
+            }
+
+            // test for a clumped short-form option string and we didn't
+            // match on the short-form argument above
+            if (nTableIdx < 0 && HasFlag(SO_O_CLUMP)) {
+                m_pszClump = &pszArg[1];
+                ++m_nNextOption;
+                if (nOptIdx > m_nOptionIdx) {
+                    ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx);
+                }
+                return Next();
+            }
+        }
+
+        // The option wasn't found. If it starts with a switch character
+        // and we are not suppressing errors for invalid options then it
+        // is reported as an error, otherwise it is data.
+        if (nTableIdx < 0) {
+            if (!HasFlag(SO_O_NOERR) && pszArg[0] == (SOCHAR)'-') {
+                m_pszOptionText = pszArg;
+                break;
+            }
+
+            pszArg[0] = cFirst;
+            ++nOptIdx;
+            if (m_pszOptionArg) {
+                *(--m_pszOptionArg) = (SOCHAR)'=';
+            }
+        }
+    }
+
+    // end of options
+    if (nOptIdx >= m_nLastArg) {
+        if (nOptIdx > m_nOptionIdx) {
+            ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx);
+        }
+        return false;
+    }
+    ++m_nNextOption;
+
+    // get the option id
+    ESOArgType nArgType = SO_NONE;
+    if (nTableIdx < 0) {
+        m_nLastError = (ESOError)nTableIdx; // error code
+    } else {
+        m_nOptionId = m_rgOptions[nTableIdx].nId;
+        m_pszOptionText = m_rgOptions[nTableIdx].pszArg;
+
+        // ensure that the arg type is valid
+        nArgType = m_rgOptions[nTableIdx].nArgType;
+        switch (nArgType) {
+        case SO_NONE:
+            if (m_pszOptionArg) {
+                m_nLastError = SO_ARG_INVALID;
+            }
+            break;
+
+        case SO_REQ_SEP:
+            if (m_pszOptionArg) {
+                // they wanted separate args, but we got a combined one,
+                // unless we are pedantic, just accept it.
+                if (HasFlag(SO_O_PEDANTIC)) {
+                    m_nLastError = SO_ARG_INVALID_TYPE;
+                }
+            }
+            // more processing after we shuffle
+            break;
+
+        case SO_REQ_CMB:
+            if (!m_pszOptionArg) {
+                m_nLastError = SO_ARG_MISSING;
+            }
+            break;
+
+        case SO_OPT:
+            // nothing to do
+            break;
+
+        case SO_MULTI:
+            // nothing to do. Caller must now check for valid arguments
+            // using GetMultiArg()
+            break;
+        }
+    }
+
+    // shuffle the files out of the way
+    if (nOptIdx > m_nOptionIdx) {
+        ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx);
+    }
+
+    // we need to return the separate arg if required, just re-use the
+    // multi-arg code because it all does the same thing
+    if (nArgType == SO_REQ_SEP
+        && !m_pszOptionArg
+        && m_nLastError == SO_SUCCESS) {
+        SOCHAR** ppArgs = MultiArg(1);
+        if (ppArgs) {
+            m_pszOptionArg = *ppArgs;
+        }
+    }
+
+    return true;
+}
+
+template <class SOCHAR>
+void CSimpleOptTempl<SOCHAR>::Stop()
+{
+    if (m_nNextOption < m_nLastArg) {
+        ShuffleArg(m_nNextOption, m_nLastArg - m_nNextOption);
+    }
+}
+
+template <class SOCHAR>
+SOCHAR
+CSimpleOptTempl<SOCHAR>::PrepareArg(
+    SOCHAR* a_pszString) const
+{
+#ifdef __WIN32__
+    // On Windows we can accept the forward slash as a single character
+    // option delimiter, but it cannot replace the '-' option used to
+    // denote stdin. On Un*x paths may start with slash so it may not
+    // be used to start an option.
+    if (!HasFlag(SO_O_NOSLASH)
+        && a_pszString[0] == (SOCHAR)'/'
+        && a_pszString[1]
+        && a_pszString[1] != (SOCHAR)'-') {
+        a_pszString[0] = (SOCHAR)'-';
+        return (SOCHAR)'/';
+    }
+#endif
+    return a_pszString[0];
+}
+
+template <class SOCHAR>
+bool CSimpleOptTempl<SOCHAR>::NextClumped()
+{
+    // prepare for the next clumped option
+    m_szShort[1] = *m_pszClump++;
+    m_nOptionId = -1;
+    m_pszOptionText = NULL;
+    m_pszOptionArg = NULL;
+    m_nLastError = SO_SUCCESS;
+
+    // lookup this option, ensure that we are using exact matching
+    int nSavedFlags = m_nFlags;
+    m_nFlags = SO_O_EXACT;
+    int nTableIdx = LookupOption(m_szShort);
+    m_nFlags = nSavedFlags;
+
+    // unknown option
+    if (nTableIdx < 0) {
+        m_pszOptionText = m_szShort; // invalid option
+        m_nLastError = (ESOError)nTableIdx; // error code
+        return false;
+    }
+
+    // valid option
+    m_pszOptionText = m_rgOptions[nTableIdx].pszArg;
+    ESOArgType nArgType = m_rgOptions[nTableIdx].nArgType;
+    if (nArgType == SO_NONE) {
+        m_nOptionId = m_rgOptions[nTableIdx].nId;
+        return true;
+    }
+
+    if (nArgType == SO_REQ_CMB && *m_pszClump) {
+        m_nOptionId = m_rgOptions[nTableIdx].nId;
+        m_pszOptionArg = m_pszClump;
+        while (*m_pszClump)
+            ++m_pszClump; // must point to an empty string
+        return true;
+    }
+
+    // invalid option as it requires an argument
+    m_nLastError = SO_ARG_MISSING;
+    return true;
+}
+
+// Shuffle arguments to the end of the argv array.
+//
+// For example:
+//      argv[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8" };
+//
+//  ShuffleArg(1, 1) = { "0", "2", "3", "4", "5", "6", "7", "8", "1" };
+//  ShuffleArg(5, 2) = { "0", "1", "2", "3", "4", "7", "8", "5", "6" };
+//  ShuffleArg(2, 4) = { "0", "1", "6", "7", "8", "2", "3", "4", "5" };
+template <class SOCHAR>
+void CSimpleOptTempl<SOCHAR>::ShuffleArg(
+    int a_nStartIdx,
+    int a_nCount)
+{
+    SOCHAR* staticBuf[SO_STATICBUF];
+    SOCHAR** buf = m_rgShuffleBuf ? m_rgShuffleBuf : staticBuf;
+    int nTail = m_argc - a_nStartIdx - a_nCount;
+
+    // make a copy of the elements to be moved
+    Copy(buf, m_argv + a_nStartIdx, a_nCount);
+
+    // move the tail down
+    Copy(m_argv + a_nStartIdx, m_argv + a_nStartIdx + a_nCount, nTail);
+
+    // append the moved elements to the tail
+    Copy(m_argv + a_nStartIdx + nTail, buf, a_nCount);
+
+    // update the index of the last unshuffled arg
+    m_nLastArg -= a_nCount;
+}
+
+// match on the long format strings. partial matches will be
+// accepted only if that feature is enabled.
+template <class SOCHAR>
+int CSimpleOptTempl<SOCHAR>::LookupOption(
+    const SOCHAR* a_pszOption) const
+{
+    int nBestMatch = -1; // index of best match so far
+    int nBestMatchLen = 0; // matching characters of best match
+    int nLastMatchLen = 0; // matching characters of last best match
+
+    for (int n = 0; m_rgOptions[n].nId >= 0; ++n) {
+        // the option table must use hyphens as the option character,
+        // the slash character is converted to a hyphen for testing.
+        SO_ASSERT(m_rgOptions[n].pszArg[0] != (SOCHAR)'/');
+
+        int nMatchLen = CalcMatch(m_rgOptions[n].pszArg, a_pszOption);
+        if (nMatchLen == -1) {
+            return n;
+        }
+        if (nMatchLen > 0 && nMatchLen >= nBestMatchLen) {
+            nLastMatchLen = nBestMatchLen;
+            nBestMatchLen = nMatchLen;
+            nBestMatch = n;
+        }
+    }
+
+    // only partial matches or no match gets to here, ensure that we
+    // don't return a partial match unless it is a clear winner
+    if (HasFlag(SO_O_EXACT) || nBestMatch == -1) {
+        return SO_OPT_INVALID;
+    }
+    return (nBestMatchLen > nLastMatchLen) ? nBestMatch : SO_OPT_MULTIPLE;
+}
+
+// calculate the number of characters that match (case-sensitive)
+// 0 = no match, > 0 == number of characters, -1 == perfect match
+template <class SOCHAR>
+int CSimpleOptTempl<SOCHAR>::CalcMatch(
+    const SOCHAR* a_pszSource,
+    const SOCHAR* a_pszTest) const
+{
+    if (!a_pszSource || !a_pszTest) {
+        return 0;
+    }
+
+    // determine the argument type
+    int nArgType = SO_O_ICASE_LONG;
+    if (a_pszSource[0] != '-') {
+        nArgType = SO_O_ICASE_WORD;
+    } else if (a_pszSource[1] != '-' && !a_pszSource[2]) {
+        nArgType = SO_O_ICASE_SHORT;
+    }
+
+    // match and skip leading hyphens
+    while (*a_pszSource == (SOCHAR)'-' && *a_pszSource == *a_pszTest) {
+        ++a_pszSource;
+        ++a_pszTest;
+    }
+    if (*a_pszSource == (SOCHAR)'-' || *a_pszTest == (SOCHAR)'-') {
+        return 0;
+    }
+
+    // find matching number of characters in the strings
+    int nLen = 0;
+    while (*a_pszSource && IsEqual(*a_pszSource, *a_pszTest, nArgType)) {
+        ++a_pszSource;
+        ++a_pszTest;
+        ++nLen;
+    }
+
+    // if we have exhausted the source...
+    if (!*a_pszSource) {
+        // and the test strings, then it's a perfect match
+        if (!*a_pszTest) {
+            return -1;
+        }
+
+        // otherwise the match failed as the test is longer than
+        // the source. i.e. "--mant" will not match the option "--man".
+        return 0;
+    }
+
+    // if we haven't exhausted the test string then it is not a match
+    // i.e. "--mantle" will not best-fit match to "--mandate" at all.
+    if (*a_pszTest) {
+        return 0;
+    }
+
+    // partial match to the current length of the test string
+    return nLen;
+}
+
+template <class SOCHAR>
+bool CSimpleOptTempl<SOCHAR>::IsEqual(
+    SOCHAR a_cLeft,
+    SOCHAR a_cRight,
+    int a_nArgType) const
+{
+    // if this matches then we are doing case-insensitive matching
+    if (m_nFlags & a_nArgType) {
+        if (a_cLeft >= 'A' && a_cLeft <= 'Z')
+            a_cLeft += 'a' - 'A';
+        if (a_cRight >= 'A' && a_cRight <= 'Z')
+            a_cRight += 'a' - 'A';
+    }
+    return a_cLeft == a_cRight;
+}
+
+// calculate the number of characters that match (case-sensitive)
+// 0 = no match, > 0 == number of characters, -1 == perfect match
+template <class SOCHAR>
+SOCHAR**
+CSimpleOptTempl<SOCHAR>::MultiArg(
+    int a_nCount)
+{
+    // ensure we have enough arguments
+    if (m_nNextOption + a_nCount > m_nLastArg) {
+        m_nLastError = SO_ARG_MISSING;
+        return NULL;
+    }
+
+    // our argument array
+    SOCHAR** rgpszArg = &m_argv[m_nNextOption];
+
+    // Ensure that each of the following don't start with an switch character.
+    // Only make this check if we are returning errors for unknown arguments.
+    if (!HasFlag(SO_O_NOERR)) {
+        for (int n = 0; n < a_nCount; ++n) {
+            SOCHAR ch = PrepareArg(rgpszArg[n]);
+            if (rgpszArg[n][0] == (SOCHAR)'-') {
+                rgpszArg[n][0] = ch;
+                m_nLastError = SO_ARG_INVALID_DATA;
+                return NULL;
+            }
+            rgpszArg[n][0] = ch;
+        }
+    }
+
+    // all good
+    m_nNextOption += a_nCount;
+    return rgpszArg;
+}
+
+// ---------------------------------------------------------------------------
+//                                  TYPE DEFINITIONS
+// ---------------------------------------------------------------------------
+
+/*! @brief ASCII/MBCS version of CSimpleOpt */
+typedef CSimpleOptTempl<char> CSimpleOptA;
+
+/*! @brief wchar_t version of CSimpleOpt */
+typedef CSimpleOptTempl<wchar_t> CSimpleOptW;
+
+#if defined(_UNICODE)
+/*! @brief TCHAR version dependent on if _UNICODE is defined */
+#define CSimpleOpt CSimpleOptW
+#else
+/*! @brief TCHAR version dependent on if _UNICODE is defined */
+#define CSimpleOpt CSimpleOptA
+#endif
+
+#endif // INCLUDED_SimpleOpt
diff --git a/code/include/tb2/utils/lzma-cpp.inc b/code/include/tb2/utils/lzma-cpp.inc
new file mode 100644
index 0000000000000000000000000000000000000000..b6ef95957a846ed577ba38102726dbb5197c1755
--- /dev/null
+++ b/code/include/tb2/utils/lzma-cpp.inc
@@ -0,0 +1,318 @@
+#if (BOOST_VERSION > 107000)
+// (C) Copyright Milan Svoboda 2008.
+// Originally developed under the fusecompress project.
+// Based on bzip2.cpp by:
+// (C) Copyright Jonathan Turkanis 2003.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+// See http://www.boost.org/libs/iostreams for documentation.
+
+// Define BOOST_IOSTREAMS_SOURCE so that <boost/iostreams/detail/config.hpp>
+// knows that we are building the library (possibly exporting code), rather
+// than using it (possibly importing code).
+#define BOOST_IOSTREAMS_SOURCE
+
+#include <lzma.h>
+
+#include <boost/throw_exception.hpp>
+#include <boost/iostreams/detail/config/dyn_link.hpp>
+#include <boost/iostreams/filter/lzma.hpp>
+
+#ifndef BOOST_IOSTREAMS_LZMA_NO_MULTITHREADED
+    #if LZMA_VERSION < 50020002
+        #define BOOST_IOSTREAMS_LZMA_NO_MULTITHREADED
+    #endif
+#endif
+namespace boost { namespace iostreams {
+
+namespace lzma {
+
+                    // Compression levels
+
+const uint32_t no_compression       = 0;
+const uint32_t best_speed           = 1;
+const uint32_t best_compression     = 9;
+const uint32_t default_compression  = 2;
+
+                    // Status codes
+
+const int okay                 = LZMA_OK;
+const int stream_end           = LZMA_STREAM_END;
+const int unsupported_check    = LZMA_UNSUPPORTED_CHECK;
+const int mem_error            = LZMA_MEM_ERROR;
+const int options_error        = LZMA_OPTIONS_ERROR;
+const int data_error           = LZMA_DATA_ERROR;
+const int buf_error            = LZMA_BUF_ERROR;
+const int prog_error           = LZMA_PROG_ERROR;
+
+                    // Flush codes
+
+const int finish               = LZMA_FINISH;
+const int full_flush           = LZMA_FULL_FLUSH;
+const int sync_flush           = LZMA_SYNC_FLUSH;
+const int run                  = LZMA_RUN;
+
+                    // Code for current OS
+
+} // End namespace lzma.
+
+//------------------Implementation of lzma_error------------------------------//
+
+lzma_error::lzma_error(int error)
+    : BOOST_IOSTREAMS_FAILURE("lzma error"), error_(error)
+    { }
+
+void lzma_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(int error)
+{
+    switch (error) {
+    case LZMA_OK:
+    case LZMA_STREAM_END:
+        return;
+    case LZMA_MEM_ERROR:
+        boost::throw_exception(std::bad_alloc());
+    default:
+        boost::throw_exception(lzma_error(error));
+    }
+}
+
+//------------------Implementation of lzma_base-------------------------------//
+
+namespace detail {
+
+lzma_base::lzma_base()
+    : stream_(new lzma_stream), level_(lzma::default_compression), threads_(1)
+    { }
+
+lzma_base::~lzma_base() { delete static_cast<lzma_stream*>(stream_); }
+
+void lzma_base::before( const char*& src_begin, const char* src_end,
+                        char*& dest_begin, char* dest_end )
+{
+    lzma_stream* s = static_cast<lzma_stream*>(stream_);
+    s->next_in = reinterpret_cast<uint8_t*>(const_cast<char*>(src_begin));
+    s->avail_in = static_cast<size_t>(src_end - src_begin);
+    s->next_out = reinterpret_cast<uint8_t*>(dest_begin);
+    s->avail_out= static_cast<size_t>(dest_end - dest_begin);
+}
+
+void lzma_base::after(const char*& src_begin, char*& dest_begin, bool)
+{
+    lzma_stream* s = static_cast<lzma_stream*>(stream_);
+    src_begin = const_cast<const char*>(reinterpret_cast<const char*>(s->next_in));
+    dest_begin = reinterpret_cast<char*>(s->next_out);
+}
+
+int lzma_base::deflate(int action)
+{
+    return lzma_code(static_cast<lzma_stream*>(stream_), static_cast<lzma_action>(action));
+}
+
+int lzma_base::inflate(int action)
+{
+    return lzma_code(static_cast<lzma_stream*>(stream_), static_cast<lzma_action>(action));
+}
+
+void lzma_base::reset(bool compress, bool realloc)
+{
+    lzma_stream* s = static_cast<lzma_stream*>(stream_);
+    lzma_end(s);
+    if (realloc)
+    {
+        init_stream(compress);
+    }
+}
+
+void lzma_base::do_init
+    ( const lzma_params& p, bool compress,
+      lzma::alloc_func, lzma::free_func,
+      void* )
+{
+
+    level_ = p.level;
+    threads_ = p.threads;
+
+#ifndef BOOST_IOSTREAMS_LZMA_NO_MULTITHREADED
+    if (threads_ == 0) {
+        threads_ = lzma_cputhreads();
+    }
+#endif
+
+    init_stream(compress);
+}
+
+void lzma_base::init_stream(bool compress)
+{
+    lzma_stream* s = static_cast<lzma_stream*>(stream_);
+
+    memset(s, 0, sizeof(*s));
+
+#ifndef BOOST_IOSTREAMS_LZMA_NO_MULTITHREADED
+    const lzma_mt opt = { 0, threads_, 0, 1000, level_, NULL, LZMA_CHECK_CRC32 };
+#endif
+    lzma_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(
+        compress ?
+#ifdef BOOST_IOSTREAMS_LZMA_NO_MULTITHREADED
+            lzma_easy_encoder(s, level_, LZMA_CHECK_CRC32) :
+#else
+            lzma_stream_encoder_mt(s, &opt) :
+#endif
+            lzma_stream_decoder(s, 100 * 1024 * 1024, LZMA_CONCATENATED)
+    );
+}
+
+} // End namespace detail.
+
+//----------------------------------------------------------------------------//
+
+} } // End namespaces iostreams, boost.
+
+#else
+// (C) Copyright Milan Svoboda 2008.
+// Originally developed under the fusecompress project.
+// Based on bzip2.cpp by:
+// (C) Copyright Jonathan Turkanis 2003.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+// See http://www.boost.org/libs/iostreams for documentation.
+
+// Define BOOST_IOSTREAMS_SOURCE so that <boost/iostreams/detail/config.hpp>
+// knows that we are building the library (possibly exporting code), rather
+// than using it (possibly importing code).
+#define BOOST_IOSTREAMS_SOURCE
+
+#include <lzma.h>
+
+#include <boost/throw_exception.hpp>
+#include <boost/iostreams/detail/config/dyn_link.hpp>
+#include <boost/iostreams/filter/lzma.hpp>
+
+namespace boost { namespace iostreams {
+
+namespace lzma {
+
+                    // Compression levels
+
+const uint32_t no_compression       = 0;
+const uint32_t best_speed           = 1;
+const uint32_t best_compression     = 9;
+const uint32_t default_compression  = 2;
+
+                    // Status codes
+
+const int okay                 = LZMA_OK;
+const int stream_end           = LZMA_STREAM_END;
+const int unsupported_check    = LZMA_UNSUPPORTED_CHECK;
+const int mem_error            = LZMA_MEM_ERROR;
+const int options_error        = LZMA_OPTIONS_ERROR;
+const int data_error           = LZMA_DATA_ERROR;
+const int buf_error            = LZMA_BUF_ERROR;
+const int prog_error           = LZMA_PROG_ERROR;
+
+                    // Flush codes
+
+const int finish               = LZMA_FINISH;
+const int full_flush           = LZMA_FULL_FLUSH;
+const int sync_flush           = LZMA_SYNC_FLUSH;
+const int run                  = LZMA_RUN;
+
+                    // Code for current OS
+
+} // End namespace lzma.
+
+//------------------Implementation of lzma_error------------------------------//
+
+lzma_error::lzma_error(int error)
+    : BOOST_IOSTREAMS_FAILURE("lzma error"), error_(error)
+    { }
+
+void lzma_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(int error)
+{
+    switch (error) {
+    case LZMA_OK:
+    case LZMA_STREAM_END:
+        return;
+    case LZMA_MEM_ERROR:
+        boost::throw_exception(std::bad_alloc());
+    default:
+        boost::throw_exception(lzma_error(error));
+    }
+}
+
+//------------------Implementation of lzma_base-------------------------------//
+
+namespace detail {
+
+lzma_base::lzma_base()
+    : stream_(new lzma_stream)
+    { }
+
+lzma_base::~lzma_base() { delete static_cast<lzma_stream*>(stream_); }
+
+void lzma_base::before( const char*& src_begin, const char* src_end,
+                        char*& dest_begin, char* dest_end )
+{
+    lzma_stream* s = static_cast<lzma_stream*>(stream_);
+    s->next_in = reinterpret_cast<uint8_t*>(const_cast<char*>(src_begin));
+    s->avail_in = static_cast<size_t>(src_end - src_begin);
+    s->next_out = reinterpret_cast<uint8_t*>(dest_begin);
+    s->avail_out= static_cast<size_t>(dest_end - dest_begin);
+}
+
+void lzma_base::after(const char*& src_begin, char*& dest_begin, bool)
+{
+    lzma_stream* s = static_cast<lzma_stream*>(stream_);
+    src_begin = const_cast<const char*>(reinterpret_cast<const char*>(s->next_in));
+    dest_begin = reinterpret_cast<char*>(s->next_out);
+}
+
+int lzma_base::deflate(int action)
+{
+    return lzma_code(static_cast<lzma_stream*>(stream_), static_cast<lzma_action>(action));
+}
+
+int lzma_base::inflate(int action)
+{
+    return lzma_code(static_cast<lzma_stream*>(stream_), static_cast<lzma_action>(action));
+}
+
+void lzma_base::reset(bool compress, bool realloc)
+{
+    lzma_stream* s = static_cast<lzma_stream*>(stream_);
+    lzma_end(s);
+    if (realloc)
+    {
+        memset(s, 0, sizeof(*s));
+
+        lzma_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(
+            compress ?
+                lzma_easy_encoder(s, level, LZMA_CHECK_CRC32) :
+                lzma_stream_decoder(s, 100 * 1024 * 1024, LZMA_CONCATENATED)
+        );
+    }
+}
+
+void lzma_base::do_init
+    ( const lzma_params& p, bool compress,
+      lzma::alloc_func, lzma::free_func,
+      void* )
+{
+    lzma_stream* s = static_cast<lzma_stream*>(stream_);
+
+    memset(s, 0, sizeof(*s));
+
+    level = p.level;
+    lzma_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(
+        compress ?
+            lzma_easy_encoder(s, p.level, LZMA_CHECK_CRC32) :
+            lzma_stream_decoder(s, 100 * 1024 * 1024, LZMA_CONCATENATED)
+    );
+}
+
+} // End namespace detail.
+
+//----------------------------------------------------------------------------//
+
+} } // End namespaces iostreams, boost.
+#endif
diff --git a/code/include/tb2/utils/tb2automaton.cpp b/code/include/tb2/utils/tb2automaton.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..594627cb932e92c454d61b9d9f237773c4a4f5eb
--- /dev/null
+++ b/code/include/tb2/utils/tb2automaton.cpp
@@ -0,0 +1,115 @@
+#include "tb2automaton.hpp"
+
+WFA::WFA()
+    : nbStates(0)
+{
+}
+
+WFA::WFA(int _nbStates)
+    : nbStates(_nbStates)
+{
+}
+WFA::WFA(istream& file, bool mult)
+{
+    unsigned int _nbStates, nbTransitions, nbStatesInit, nbStatesAccept;
+    file >> _nbStates;
+    nbStates = _nbStates;
+
+    //cout << this << endl;
+    //cout << "nbStates   =" << this->getNbStates() << endl;
+    file >> nbStatesInit;
+    //cout << "nb initSt  = " << nbStatesInit << endl;
+    for (unsigned int state = 0; state < nbStatesInit; state++) {
+        unsigned int init;
+        Cost weight;
+        file >> init >> weight;
+        if (mult)
+            weight *= ToulBar2::costMultiplier;
+        //cout << "reading INIT = " << init << " " << weight << endl;
+        pair<int, Cost> initSt = make_pair(init, weight);
+        //cout << initSt.first << " " << initSt.second << endl;
+        initialStates.push_back(initSt);
+    }
+    file >> nbStatesAccept;
+    //cout << "nb acceptSt = " << nbStatesAccept << endl;
+    for (unsigned int state = 0; state < nbStatesAccept; state++) {
+        unsigned int accept;
+        Cost weight;
+        file >> accept >> weight;
+        if (mult)
+            weight *= ToulBar2::costMultiplier;
+        //cout << "reading ACCEPT = " << accept << " " << weight << endl;
+        pair<int, Cost> acceptSt = make_pair(accept, weight);
+        //cout << acceptSt.first << " " << acceptSt.second << endl;
+        acceptingStates.push_back(acceptSt);
+    }
+    file >> nbTransitions;
+    for (unsigned int transition = 0; transition < nbTransitions; transition++) {
+        unsigned int start, end, symbol;
+        Cost weight;
+        file >> start >> symbol >> end >> weight;
+        if (mult)
+            weight *= ToulBar2::costMultiplier;
+        //cout << "TRANS " << start << "x" <<  symbol << "-->" << end << " w= " << weight << endl;
+        transitions.push_back(new WTransition(start, end, symbol, weight));
+    }
+}
+
+WFA::WFA(int nbSymbols, string forbiddenPattern, Cost cost)
+{
+    /// Preparing the WFA : nbStates, initialStates, acceptingStates ///
+    nbStates = forbiddenPattern.length();
+    initialStates.push_back(make_pair(0, 0));
+    for (unsigned int state = 0; state < nbStates; state++) {
+        acceptingStates.push_back(make_pair(state, 0));
+    }
+    /// Computing transition set
+    for (unsigned int currentState = 0; currentState < nbStates; currentState++) {
+        for (unsigned int symbol = 0; symbol < (unsigned int)nbSymbols; symbol++) {
+            string res = forbiddenPattern.substr(0, currentState) + ((char)(symbol + 48));
+            Cost weight = (res == forbiddenPattern) ? cost : 0;
+            int start = currentState;
+            int end = 0;
+            for (int receptionState = ((int)min(currentState + 1, nbStates - 1)); receptionState > 0; receptionState--) {
+                int stringStart = (currentState + 1 - receptionState);
+                int stringLenght = currentState + 1 - stringStart;
+                string subCurrent = res.substr(stringStart, stringLenght);
+                string subTarget = forbiddenPattern.substr(0, receptionState);
+                if (subCurrent == subTarget) {
+                    end = receptionState;
+                    break;
+                }
+            }
+            transitions.push_back(new WTransition(start, end, symbol, weight));
+        }
+    }
+}
+
+////////////////////////////////////////////////////////////////////////
+
+void WFA::display()
+{
+    cout << "Number of states = " << nbStates << endl;
+    cout << "Initial States : " << endl;
+    for (list<pair<int, Cost>>::iterator it = initialStates.begin(); it != initialStates.end(); it++) {
+        pair<int, int> initial = *it;
+        cout << initial.first << "(" << initial.second << ")" << endl;
+    }
+    cout << "Accepting States : " << endl;
+    for (list<pair<int, Cost>>::iterator it = acceptingStates.begin(); it != acceptingStates.end(); it++) {
+        pair<int, int> accepting = *it;
+        cout << accepting.first << "(" << accepting.second << ")" << endl;
+    }
+    cout << "Transition : " << endl;
+    for (list<WTransition*>::iterator it = transitions.begin(); it != transitions.end(); it++) {
+        WTransition* transition = *it;
+        transition->display();
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2automaton.hpp b/code/include/tb2/utils/tb2automaton.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..41e5f882dc771f1f2188ab5d46a87f672301404e
--- /dev/null
+++ b/code/include/tb2/utils/tb2automaton.hpp
@@ -0,0 +1,60 @@
+/** \file tb2globaldecomposable.hpp
+ *  \brief Decomposable global cost functions : WeightedRegular, WeightedAmong
+ */
+
+#ifndef TB2WFA_HPP_
+#define TB2WFA_HPP_
+
+#include "core/tb2wcsp.hpp"
+#include "core/tb2types.hpp"
+#include "core/tb2enumvar.hpp"
+
+struct WTransition {
+    unsigned int start;
+    unsigned int end;
+    unsigned int symbol;
+    Cost weight;
+
+    WTransition(unsigned int _start, unsigned int _end, unsigned int _symbol, Cost _weight)
+    {
+        start = _start;
+        end = _end;
+        symbol = _symbol;
+        weight = _weight;
+    }
+
+    void display()
+    {
+        cout << start << " x " << symbol << " --(" << weight << ")--> " << end << endl;
+    }
+};
+
+class WFA {
+private:
+    unsigned int nbStates;
+    list<pair<int, Cost>> initialStates;
+    list<pair<int, Cost>> acceptingStates;
+    list<WTransition*> transitions;
+
+public:
+    WFA();
+    WFA(int _nbStates);
+    WFA(istream& file, bool mult = true);
+    WFA(int nbSymbol, string forbiddenPattern, Cost cost);
+
+    inline unsigned int getNbStates() { return nbStates; }
+    inline list<pair<int, Cost>>& getInitialStates() { return initialStates; }
+    inline list<pair<int, Cost>>& getAcceptingStates() { return acceptingStates; }
+    inline list<WTransition*>& getTransitions() { return transitions; }
+
+    void display();
+};
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2boostgraph.cpp b/code/include/tb2/utils/tb2boostgraph.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..aee79f65817829faa645aa636404c56976234982
--- /dev/null
+++ b/code/include/tb2/utils/tb2boostgraph.cpp
@@ -0,0 +1,689 @@
+/*
+ * ****** Graph Algorithms using Boost Graph Library ********
+ *
+ * Variable elimination ordering heuristics developed by Cyril Terrioux <cyril.terrioux@lsis.org>
+ */
+
+#ifdef BOOST
+#include <boost/config.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/graph_utility.hpp>
+#include <boost/graph/graphviz.hpp>
+#include <boost/graph/connected_components.hpp>
+#include <boost/graph/biconnected_components.hpp>
+#include <boost/graph/johnson_all_pairs_shortest.hpp>
+#include <boost/graph/minimum_degree_ordering.hpp>
+#include <boost/graph/prim_minimum_spanning_tree.hpp>
+#include <boost/graph/cuthill_mckee_ordering.hpp>
+
+using namespace boost;
+
+namespace boost {
+struct edge_component_t {
+    enum { num = 555 };
+    typedef edge_property_tag kind;
+} edge_component;
+}
+
+typedef adjacency_list<setS, vecS, undirectedS> Graph;
+typedef adjacency_list<setS, vecS, directedS> DirectedGraph;
+typedef adjacency_list<setS, vecS, undirectedS, no_property,
+    property<edge_weight_t, int, property<edge_component_t, std::size_t>>>
+    IntWeightedGraph;
+typedef adjacency_list<setS, vecS, undirectedS, no_property,
+    property<edge_weight_t, double, property<edge_component_t, std::size_t>>>
+    DoubleWeightedGraph;
+typedef adjacency_list<setS, vecS, undirectedS, property<vertex_color_t, default_color_type, property<vertex_degree_t, int>>> ColoredGraph;
+#endif
+
+#include "core/tb2wcsp.hpp"
+#include "core/tb2binconstr.hpp"
+
+#ifdef BOOST
+
+template <typename T>
+static void addConstraint(Constraint* c, T& g)
+{
+    int a = c->arity();
+    for (int i = 0; i < a; i++) {
+        for (int j = i + 1; j < a; j++) {
+            Variable* vari = c->getVar(i);
+            Variable* varj = c->getVar(j);
+            add_edge(vari->wcspIndex, varj->wcspIndex, g);
+        }
+    }
+}
+
+static void addConstraint(Constraint* c, DirectedGraph& g)
+{
+    int a = c->arity();
+    for (int i = 0; i < a; i++) {
+        for (int j = i + 1; j < a; j++) {
+            Variable* vari = c->getVar(i);
+            Variable* varj = c->getVar(j);
+            add_edge(vari->wcspIndex, varj->wcspIndex, g);
+            add_edge(varj->wcspIndex, vari->wcspIndex, g);
+        }
+    }
+}
+
+static void addConstraint(Constraint* c, IntWeightedGraph& g, int weight = 1)
+{
+    property_map<IntWeightedGraph, edge_weight_t>::type weights = get(edge_weight, g);
+    int a = c->arity();
+    for (int i = 0; i < a; i++) {
+        for (int j = i + 1; j < a; j++) {
+            Variable* vari = c->getVar(i);
+            Variable* varj = c->getVar(j);
+            weights[add_edge(vari->wcspIndex, varj->wcspIndex, g).first] = weight;
+        }
+    }
+}
+
+static void addConstraint(Constraint* c, DoubleWeightedGraph& g, double maxweight = 1000000)
+{
+    property_map<DoubleWeightedGraph, edge_weight_t>::type weights = get(edge_weight, g);
+    int a = c->arity();
+    for (int i = 0; i < a; i++) {
+        for (int j = i + 1; j < a; j++) {
+            Variable* vari = c->getVar(i);
+            Variable* varj = c->getVar(j);
+            weights[add_edge(vari->wcspIndex, varj->wcspIndex, g).first] = maxweight - c->getTightness();
+        }
+    }
+}
+
+int WCSP::connectedComponents()
+{
+    Graph G;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        add_vertex(G);
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected() && !constrs[i]->universal())
+            addConstraint(constrs[i], G);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            addConstraint(elimBinConstrs[i], G);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            addConstraint(elimTernConstrs[i], G);
+    vector<int> component(num_vertices(G));
+    int num = connected_components(G, &component[0]);
+    vector<int> cctruesize(num, 0);
+    for (size_t i = 0; i < num_vertices(G); ++i) {
+        assert(component[i] >= 0 && component[i] < num);
+        if (unassigned(i))
+            cctruesize[component[i]]++;
+    }
+    int res = 0;
+    char c = '(';
+    for (int i = 0; i < num; ++i) {
+        if (cctruesize[i] >= 1) {
+            res++;
+            cout << c << cctruesize[i];
+            c = ' ';
+        }
+    }
+    cout << ")";
+
+    return res;
+}
+
+int WCSP::biConnectedComponents()
+{
+    IntWeightedGraph G;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        add_vertex(G);
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected())
+            addConstraint(constrs[i], G);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            addConstraint(elimBinConstrs[i], G);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            addConstraint(elimTernConstrs[i], G);
+    property_map<IntWeightedGraph, edge_component_t>::type component = get(edge_component, G);
+
+    int num = biconnected_components(G, component);
+
+    vector<int> art_points;
+    articulation_points(G, back_inserter(art_points));
+    cout << "Articulation points: " << art_points.size() << endl;
+    if (art_points.size() > 0) {
+        for (unsigned int i = 0; i < art_points.size(); i++)
+            cout << " " << art_points[i];
+        cout << endl;
+    }
+    return num;
+}
+
+int WCSP::diameter()
+{
+    if (vars.size() >= LARGE_NB_VARS)
+        return -1;
+
+    IntWeightedGraph G;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        add_vertex(G);
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected())
+            addConstraint(constrs[i], G);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            addConstraint(elimBinConstrs[i], G);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            addConstraint(elimTernConstrs[i], G);
+
+    typedef int* int_ptr;
+    int** D;
+    D = new int_ptr[num_vertices(G)];
+    for (unsigned int i = 0; i < num_vertices(G); ++i)
+        D[i] = new int[num_vertices(G)];
+    johnson_all_pairs_shortest_paths(G, D);
+
+    if (ToulBar2::verbose >= 2) {
+        cout << "     ";
+        for (unsigned int i = 0; i < num_vertices(G); ++i) {
+            cout << i << " -> ";
+            for (unsigned int j = 0; j < num_vertices(G); ++j) {
+                cout << " " << D[i][j];
+            }
+            cout << endl;
+        }
+    }
+
+    int maxd = 0;
+    double meand = 0;
+    for (unsigned int i = 0; i < num_vertices(G); ++i) {
+        for (unsigned int j = 0; j < num_vertices(G); ++j) {
+            if (D[i][j] > maxd)
+                maxd = D[i][j];
+            meand += D[i][j];
+        }
+    }
+    meand /= num_vertices(G) * num_vertices(G);
+    if (ToulBar2::verbose >= 1) {
+        cout << "Mean diameter: " << meand << endl;
+    }
+
+    for (unsigned int i = 0; i < num_vertices(G); ++i)
+        delete[] D[i];
+    delete[] D;
+
+    return maxd;
+}
+
+inline bool cmp_vars(Variable* v1, Variable* v2) { return (v1->wcspIndex < v2->wcspIndex); }
+
+/// \brief Minimum Degree Ordering algorithm
+/// \warning Output order usually worse than WCSP::minimumDegreeOrdering ???
+void WCSP::minimumDegreeOrderingBGL(vector<int>& order_inv)
+{
+    DirectedGraph G;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        add_vertex(G);
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected())
+            addConstraint(constrs[i], G);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            addConstraint(elimBinConstrs[i], G);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            addConstraint(elimTernConstrs[i], G);
+
+    int n = num_vertices(G);
+    int delta = 0;
+    typedef vector<int> Vector;
+    Vector inverse_perm(n, 0);
+    Vector perm(n, 0);
+
+    Vector supernode_sizes(n, 1); // init has to be 1
+
+    property_map<DirectedGraph, vertex_index_t>::type id = get(vertex_index, G);
+
+    Vector degree(n, 0);
+
+    minimum_degree_ordering(G,
+        make_iterator_property_map(&degree[0], id, degree[0]),
+        &inverse_perm[0],
+        &perm[0],
+        make_iterator_property_map(&supernode_sizes[0], id, supernode_sizes[0]),
+        delta,
+        id);
+
+    order_inv = inverse_perm;
+    if (ToulBar2::verbose >= 1) {
+        cout << "Minimum degree ordering:";
+        for (size_t i = 0; i < num_vertices(G); ++i) {
+            cout << " " << order_inv[i];
+        }
+        cout << endl;
+    }
+
+    // // \bug reordering of vars array is dubious!!! (invalidates further use of variable indexes)
+    // for (size_t i=0; i < num_vertices(G); ++i) {
+    //    vars[i]->wcspIndex = num_vertices(G) - perm[i] - 1;
+    //  }
+    //  stable_sort(vars.begin(), vars.end(), cmp_vars);
+    //  for (size_t i=0; i < num_vertices(G); ++i) {
+    //    assert(vars[i]->wcspIndex == (int) i);
+    //  }
+
+    assert(order_inv.size() == numberOfVariables());
+}
+
+void WCSP::spanningTreeOrderingBGL(vector<int>& order_inv)
+{
+    double alltight = 0;
+    double maxt = 0;
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected()) {
+            double t = constrs[i]->getTightness();
+            alltight += t;
+            if (t > maxt)
+                maxt = t;
+        }
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected()) {
+            double t = elimBinConstrs[i]->getTightness();
+            alltight += t;
+            if (t > maxt)
+                maxt = t;
+        }
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected()) {
+            double t = elimTernConstrs[i]->getTightness();
+            alltight += t;
+            if (t > maxt)
+                maxt = t;
+        }
+
+    DoubleWeightedGraph G;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        add_vertex(G);
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected())
+            addConstraint(constrs[i], G, maxt);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            addConstraint(elimBinConstrs[i], G, maxt);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            addConstraint(elimTernConstrs[i], G, maxt);
+
+    int n = num_vertices(G);
+
+    vector<graph_traits<DoubleWeightedGraph>::vertex_descriptor> p(n);
+    prim_minimum_spanning_tree(G, &p[0]);
+
+    double tight = 0;
+    bool tightok = true;
+    vector<int> roots;
+    vector<vector<int>> listofsuccessors(n, vector<int>());
+    if (ToulBar2::verbose >= 0)
+        cout << "Maximum spanning tree ordering"; // << endl;
+    for (size_t i = 0; i != p.size(); ++i) {
+        if (p[i] != i) {
+            BinaryConstraint* bctr = getVar(i)->getConstr(getVar(p[i]));
+            if (bctr) {
+                //      cout << "parent[" << i << "] = " << p[i] << " (" << bctr->getTightness() << ")" << endl;
+                tight += bctr->getTightness();
+            } else {
+                tightok = false;
+            }
+            listofsuccessors[p[i]].push_back(i);
+        } else {
+            roots.push_back(i);
+            //      cout << "parent[" << i << "] = no parent" << endl;
+        }
+    }
+    if (ToulBar2::verbose >= 0) {
+        if (tightok)
+            cout << " (" << 100.0 * tight / alltight << "%)";
+        cout << endl;
+    }
+
+    vector<bool> marked(n, false);
+    for (int i = roots.size() - 1; i >= 0; i--) {
+        visit(roots[i], order_inv, marked, listofsuccessors);
+    }
+    for (int i = n - 1; i >= 0; i--) {
+        if (!marked[i]) {
+            visit(i, order_inv, marked, listofsuccessors);
+        }
+    }
+
+    if (ToulBar2::verbose >= 1) {
+        cout << "Maximum spanning tree ordering:";
+        for (int i = 0; i < n; i++) {
+            cout << " " << order_inv[i];
+        }
+        cout << endl;
+    }
+
+    assert(order_inv.size() == numberOfVariables());
+}
+
+void WCSP::reverseCuthillMcKeeOrderingBGL(vector<int>& order_inv)
+{
+    ColoredGraph G;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        add_vertex(G);
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected())
+            addConstraint(constrs[i], G);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            addConstraint(elimBinConstrs[i], G);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            addConstraint(elimTernConstrs[i], G);
+
+    int n = num_vertices(G);
+    vector<int> inverse_perm(n, 0);
+
+    cuthill_mckee_ordering(G, inverse_perm.rbegin(), get(vertex_color, G), make_degree_map(G));
+    order_inv = inverse_perm;
+    if (ToulBar2::verbose >= 1) {
+        cout << "Reverse Cuthill-McKee ordering:";
+        for (size_t i = 0; i < num_vertices(G); ++i) {
+            cout << " " << order_inv[i];
+        }
+        cout << endl;
+    }
+
+    assert(order_inv.size() == numberOfVariables());
+}
+
+/// \brief Maximum Cardinality Search algorithm (Tarjan & Yannakakis)
+/// \note code from Cyril Terrioux
+void WCSP::maximumCardinalitySearch(vector<int>& order_inv)
+{
+    Graph G;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        add_vertex(G);
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected())
+            addConstraint(constrs[i], G);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            addConstraint(elimBinConstrs[i], G);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            addConstraint(elimTernConstrs[i], G);
+
+    int n = num_vertices(G);
+    vector<int> inverse_perm(n, 0);
+
+    vector<vector<int>> sets(n, vector<int>(n));
+    vector<int> size(n);
+    vector<int> card(n);
+    vector<int> degree(n);
+
+    Graph::adjacency_iterator neighbourIt, neighbourEnd;
+
+    /* initialize sets, card and size */
+    for (int v = 0; v < n; v++) {
+        size[v] = 0;
+
+        for (int i = 0; i < n; i++)
+            sets[v][i] = 0;
+
+        sets[0][v] = 1;
+        card[v] = 0;
+        degree[v] = boost::degree(v, G);
+    }
+
+    card[0] = n;
+    int i = n - 1;
+    int j = 0;
+    int v = 0;
+
+    while (i >= 0) {
+        /* choose a vertex */
+        int deg = -1;
+        for (int x = 0; x < n; x++)
+            if ((sets[j][x] == 1) && (degree[x] > deg)) {
+                v = x;
+                deg = degree[x];
+            }
+        sets[j][v] = 0;
+        card[j]--;
+
+        /* build the order */
+        inverse_perm[i] = v;
+        size[v] = -1;
+
+        /* update sets and size */
+        boost::tie(neighbourIt, neighbourEnd) = adjacent_vertices(v, G);
+        for (; neighbourIt != neighbourEnd; ++neighbourIt) {
+            if (size[*neighbourIt] >= 0) {
+                sets[size[*neighbourIt]][*neighbourIt] = 0;
+                card[size[*neighbourIt]]--;
+
+                size[*neighbourIt]++;
+
+                sets[size[*neighbourIt]][*neighbourIt] = 1;
+                card[size[*neighbourIt]]++;
+            }
+        }
+
+        i--;
+        j++;
+        while ((j >= 0) && (card[j] == 0))
+            j--;
+    }
+
+    order_inv = inverse_perm;
+    if (ToulBar2::verbose >= 1) {
+        cout << "MCS ordering:";
+        for (size_t i = 0; i < num_vertices(G); ++i) {
+            cout << " " << order_inv[i];
+        }
+        cout << endl;
+    }
+    assert(order_inv.size() == numberOfVariables());
+}
+
+/// \brief Minimum Fill-In Ordering algorithm
+/// \note code from Cyril Terrioux
+void WCSP::minimumFillInOrdering(vector<int>& order_inv)
+{
+    Graph G;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        add_vertex(G);
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected())
+            addConstraint(constrs[i], G);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            addConstraint(elimBinConstrs[i], G);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            addConstraint(elimTernConstrs[i], G);
+
+    int n = num_vertices(G);
+    vector<int> order(n, -1);
+    order_inv = order;
+
+    vector<int> nb_fillin(n, 0);
+    vector<int> degree(n, 0);
+
+    Graph::adjacency_iterator neighbourIt, neighbourEnd;
+
+    for (int v = 0; v < n; v++) {
+        degree[v] = boost::degree(v, G);
+        /* compute initial number of edges to add for each vertex */
+        boost::tie(neighbourIt, neighbourEnd) = adjacent_vertices(v, G);
+        for (; neighbourIt != neighbourEnd; ++neighbourIt) {
+            Graph::adjacency_iterator neighbourIt2 = neighbourIt;
+            for (++neighbourIt2; neighbourIt2 != neighbourEnd; ++neighbourIt2) {
+                if (!edge(*neighbourIt, *neighbourIt2, G).second)
+                    nb_fillin[v]++;
+            }
+        }
+    }
+    for (int i = 0; i < n - 1; i++) {
+        /* compute number of fill-in edges to add for each unprocessed vertex */
+        /* choose vertex with minimum fill-in */
+        int v = 0;
+        int minfill = n * n;
+        int deg = -1;
+        for (int x = 0; x < n; x++) {
+            if ((order[x] == -1) && ((nb_fillin[x] < minfill) || ((nb_fillin[x] == minfill) && (degree[x] > deg)))) {
+                v = x;
+                minfill = nb_fillin[x];
+                deg = degree[x];
+            }
+        }
+        order[v] = i;
+        order_inv[i] = v;
+
+        /* remove vertex v from nb_fillin */
+        boost::tie(neighbourIt, neighbourEnd) = adjacent_vertices(v, G);
+        for (; neighbourIt != neighbourEnd; ++neighbourIt) {
+            if (order[*neighbourIt] == -1) {
+                Graph::adjacency_iterator neighbourIt2, neighbourEnd2;
+                boost::tie(neighbourIt2, neighbourEnd2) = adjacent_vertices(*neighbourIt, G);
+                for (; neighbourIt2 != neighbourEnd2; ++neighbourIt2) {
+                    if (order[*neighbourIt2] == -1 && !edge(v, *neighbourIt2, G).second)
+                        nb_fillin[*neighbourIt]--;
+                }
+            }
+        }
+        /* add fill-in edges to G */
+        boost::tie(neighbourIt, neighbourEnd) = adjacent_vertices(v, G);
+        for (; neighbourIt != neighbourEnd; ++neighbourIt) {
+            if (order[*neighbourIt] == -1) {
+                Graph::adjacency_iterator neighbourIt2 = neighbourIt;
+                for (++neighbourIt2; neighbourIt2 != neighbourEnd; ++neighbourIt2) {
+                    if ((order[*neighbourIt2] == -1) && !edge(*neighbourIt, *neighbourIt2, G).second) {
+                        add_edge(*neighbourIt, *neighbourIt2, G);
+                        degree[*neighbourIt]++;
+                        degree[*neighbourIt2]++;
+
+                        unsigned int x = *neighbourIt;
+                        unsigned int y = *neighbourIt2;
+                        /* update nb_fillin with missing edges between x and neighbors of y */
+                        Graph::adjacency_iterator neighbourItX, neighbourEndX;
+                        boost::tie(neighbourItX, neighbourEndX) = adjacent_vertices(x, G);
+                        for (; neighbourItX != neighbourEndX; ++neighbourItX) {
+                            if ((order[*neighbourItX] == -1) && (*neighbourItX != y)) {
+                                if (!edge(y, *neighbourItX, G).second)
+                                    nb_fillin[x]++;
+                                else
+                                    nb_fillin[*neighbourItX]--; /* new added edge between x and y has to be removed from nb_fillin  */
+                            }
+                        }
+                        /* update nb_fillin with missing edges between y and neighbors of x */
+                        Graph::adjacency_iterator neighbourItY, neighbourEndY;
+                        boost::tie(neighbourItY, neighbourEndY) = adjacent_vertices(y, G);
+                        for (; neighbourItY != neighbourEndY; ++neighbourItY) {
+                            if ((order[*neighbourItY] == -1) && (*neighbourItY != x) && !edge(x, *neighbourItY, G).second)
+                                nb_fillin[y]++;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    int v = 0;
+    while (order[v] != -1)
+        v++;
+    order[v] = n - 1;
+    order_inv[n - 1] = v;
+    if (ToulBar2::verbose >= 1) {
+        cout << "Min-fill ordering:";
+        for (int j = 0; j < n; ++j) {
+            cout << " " << order_inv[j];
+        }
+        cout << endl;
+    }
+    assert(order_inv.size() == numberOfVariables());
+}
+
+/// \brief Minimum Degree Ordering algorithm
+/// \note code from Cyril Terrioux
+void WCSP::minimumDegreeOrdering(vector<int>& order_inv)
+{
+    Graph G;
+    for (unsigned int i = 0; i < vars.size(); i++)
+        add_vertex(G);
+    for (unsigned int i = 0; i < constrs.size(); i++)
+        if (constrs[i]->connected())
+            addConstraint(constrs[i], G);
+    for (int i = 0; i < elimBinOrder; i++)
+        if (elimBinConstrs[i]->connected())
+            addConstraint(elimBinConstrs[i], G);
+    for (int i = 0; i < elimTernOrder; i++)
+        if (elimTernConstrs[i]->connected())
+            addConstraint(elimTernConstrs[i], G);
+    int n = num_vertices(G);
+    vector<int> order(n, -1);
+    order_inv = order;
+    vector<int> degree(n, 0);
+
+    //    vector<int> preorder;
+    //    reverseCuthillMcKeeOrderingBGL(preorder);
+
+    Graph::adjacency_iterator neighbourIt, neighbourEnd;
+
+    for (int v = 0; v < n; v++) {
+        degree[v] = boost::degree(v, G);
+    }
+    for (int i = 0; i < n - 1; i++) {
+        /* find vertex with minimum degree */
+        int v = 0;
+        int deg_min = n + 1;
+        for (int x = 0; x < n; x++) {
+            //           int x = preorder[xx];
+            if ((order[x] == -1) && (degree[x] < deg_min)) {
+                v = x;
+                deg_min = degree[x];
+            }
+        }
+        order[v] = i;
+        order_inv[i] = v;
+
+        boost::tie(neighbourIt, neighbourEnd) = adjacent_vertices(v, G);
+        for (; neighbourIt != neighbourEnd; ++neighbourIt) {
+            if (order[*neighbourIt] == -1) {
+                degree[*neighbourIt]--;
+                Graph::adjacency_iterator neighbourIt2 = neighbourIt;
+                for (++neighbourIt2; neighbourIt2 != neighbourEnd; ++neighbourIt2) {
+                    if ((order[*neighbourIt2] == -1) && !edge(*neighbourIt, *neighbourIt2, G).second) {
+                        add_edge(*neighbourIt, *neighbourIt2, G);
+                        degree[*neighbourIt]++;
+                        degree[*neighbourIt2]++;
+                    }
+                }
+            }
+        }
+    }
+    int v = 0;
+    while (order[v] != -1)
+        v++;
+    order[v] = n - 1;
+    order_inv[n - 1] = v;
+    if (ToulBar2::verbose >= 1) {
+        cout << "Minimum degree ordering:";
+        for (int j = 0; j < n; ++j) {
+            cout << " " << order_inv[j];
+        }
+        cout << endl;
+    }
+    assert(order_inv.size() == numberOfVariables());
+}
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2btlist.hpp b/code/include/tb2/utils/tb2btlist.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..87d882853c00179b1de3c0c4daf202c5d6af6f61
--- /dev/null
+++ b/code/include/tb2/utils/tb2btlist.hpp
@@ -0,0 +1,260 @@
+/** \file tb2btlist.hpp
+ *  \brief Backtrackable double-linked list.
+ * 
+ * Convention: 
+ * 
+ * elements can be inserted at the end of the list only
+ * these insertions can be undone in the reverse order of their insertion
+ * 
+ * elements can be removed in any order
+ * these removals can be undone in the reverse order of their removal.
+ * 
+ */
+
+#ifndef TB2BTLIST_HPP_
+#define TB2BTLIST_HPP_
+
+#include "tb2store.hpp"
+
+template <class T>
+class DLink {
+public:
+    bool removed; // true if the corresponding element has been removed
+    DLink* next;
+    DLink* prev;
+    T content;
+
+public:
+    DLink<T>()
+        : removed(true)
+        , next(NULL)
+        , prev(NULL)
+    {
+    }
+};
+
+template <class T>
+class BTList {
+    StoreStack<BTList, DLink<T>*>* storeUndo;
+    int size;
+    DLink<T>* head;
+    DLink<T>* last;
+
+public:
+    BTList(StoreStack<BTList, DLink<T>*>* s)
+        : storeUndo(s)
+        , size(0)
+        , head(NULL)
+        , last(NULL)
+    {
+    }
+
+    int getSize() const { return size; }
+    bool empty() const { return size == 0; }
+
+    // Warning! clear() is not a backtrackable operation
+    void clear()
+    {
+        size = 0;
+        head = NULL;
+        last = NULL;
+    }
+
+    bool inBTList(DLink<T>* elt)
+    {
+        for (iterator iter = begin(); iter != end(); ++iter) {
+            if (elt == iter.getElt())
+                return !elt->removed;
+        }
+        return false;
+    }
+
+    void push_back(DLink<T>* elt, bool backtrack)
+    {
+        assert(!inBTList(elt));
+        size++;
+        elt->removed = false;
+        if (last != NULL) {
+            last->next = elt;
+            elt->prev = last;
+        } else {
+            head = elt;
+            elt->prev = NULL;
+        }
+        last = elt;
+        last->next = NULL;
+        if (backtrack)
+            storeUndo->store(this, NULL);
+    }
+
+    void undoPushBack()
+    {
+        assert(last != NULL);
+        size--;
+        last->removed = true;
+        if (last->prev != NULL) {
+            last = last->prev;
+            last->next->prev = NULL;
+            last->next = NULL;
+        } else {
+            head = NULL;
+            last = NULL;
+        }
+    }
+
+    void erase(DLink<T>* elt, bool backtrack)
+    {
+        assert(!elt->removed);
+        size--;
+        elt->removed = true;
+        if (elt->prev != NULL) {
+            assert(!elt->prev->removed);
+            assert(elt->prev->next == elt);
+            elt->prev->next = elt->next;
+        } else
+            head = elt->next;
+        if (elt->next != NULL) {
+            assert(!elt->next->removed);
+            assert(elt->next->prev == elt);
+            elt->next->prev = elt->prev;
+        } else
+            last = elt->prev;
+        if (backtrack) {
+            storeUndo->store(this, elt->prev);
+            storeUndo->store(this, elt);
+        }
+    }
+
+    void undoErase(DLink<T>* elt, DLink<T>* prev)
+    {
+        assert(elt->removed);
+        size++;
+        elt->removed = false;
+        if (prev != NULL) {
+            assert(!prev->removed);
+            elt->prev = prev;
+            elt->next = prev->next;
+            if (prev->next != NULL)
+                prev->next->prev = elt;
+            else
+                last = elt;
+            prev->next = elt;
+        } else {
+            if (head != NULL)
+                head->prev = elt;
+            else
+                last = elt;
+            elt->prev = NULL;
+            elt->next = head;
+            head = elt;
+        }
+    }
+
+    // deprecated method to be used with erase(..) storing just one element
+    //    void undoErase(DLink<T> *elt) {
+    //        assert(elt->removed);
+    //        size++;
+    //        elt->removed = false;
+    //        if (elt->prev != NULL) {
+    //            assert(!elt->prev->removed);
+    //            assert(elt->prev->next == elt->next);
+    //            elt->prev->next = elt;
+    //        } else head = elt;
+    //        if (elt->next != NULL) {
+    //            assert(!elt->next->removed);
+    //            assert(elt->next->prev == elt->prev);
+    //            elt->next->prev = elt;
+    //        } else last = elt;
+    //    }
+
+    DLink<T>* pop_back(bool backtrack)
+    {
+        assert(last != NULL);
+        DLink<T>* oldlast = last;
+        erase(last, backtrack);
+        return oldlast;
+    }
+
+    class iterator {
+        DLink<T>* elt;
+
+    public:
+        iterator() { elt = NULL; }
+        iterator(DLink<T>* e)
+            : elt(e)
+        {
+        }
+
+        T operator*() const
+        {
+            assert(elt != NULL);
+            return elt->content;
+        }
+
+        DLink<T>* getElt() const { return elt; }
+
+        iterator& operator++()
+        { // Prefix form
+            if (elt != NULL) {
+                while (elt->next != NULL && elt->next->removed) {
+                    elt = elt->next;
+                }
+                elt = elt->next;
+            }
+            assert(elt == NULL || !elt->removed);
+            return *this;
+        }
+
+        iterator& operator--()
+        { // Prefix form
+            if (elt != NULL) {
+                while (elt->prev != NULL && elt->prev->removed) {
+                    elt = elt->prev;
+                }
+                elt = elt->prev;
+            }
+            assert(elt == NULL || !elt->removed);
+            return *this;
+        }
+
+        // To see if you're at the end:
+        bool operator==(const iterator& iter) const { return elt == iter.elt; }
+        bool operator!=(const iterator& iter) const { return elt != iter.elt; }
+    };
+
+    iterator begin() { return iterator(head); }
+    iterator end() { return iterator(NULL); }
+    iterator rbegin() { return iterator(last); }
+    iterator rend() { return end(); }
+};
+
+typedef BTList<ConstraintLink> ConstraintList;
+typedef BTList<Variable*> VariableList;
+typedef BTList<Separator*> SeparatorList;
+
+/*
+ * For internal use only! Interaction between tb2store and tb2btlist
+ * 
+ */
+
+template <class T, class V>
+template <class Q>
+void StoreStack<T, V>::restore(BTList<Q>** l, DLink<Q>** elt, ptrdiff_t& x)
+{
+    if (elt[x] == NULL) {
+        l[x]->undoPushBack();
+    } else {
+        assert(l[x] == l[x - 1]);
+        l[x]->undoErase(elt[x], elt[x - 1]);
+        x--;
+    }
+}
+
+#endif /*TB2BTLIST_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2btqueue.cpp b/code/include/tb2/utils/tb2btqueue.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7349ceaffc5e2f6d1f6117eabeaefcfb00c9f69d
--- /dev/null
+++ b/code/include/tb2/utils/tb2btqueue.cpp
@@ -0,0 +1,58 @@
+/*
+ * ****** Propagation backtrackable queue with time stamping *******
+ */
+
+#include "tb2btqueue.hpp"
+#include "core/tb2variable.hpp"
+
+void BTQueue::push(DLink<Variable*>* elt)
+{
+    if (!inBTList(elt)) {
+        push_back(elt, true);
+    }
+}
+
+void BTQueue::remove(DLink<Variable*>* elt)
+{
+    if (inBTList(elt)) {
+        erase(elt, true);
+    }
+}
+
+Variable* BTQueue::pop_back()
+{
+    assert(!empty());
+    DLink<Variable*>* elt = BTList<Variable*>::pop_back(true);
+    return elt->content;
+}
+
+Variable* BTQueue::pop_first()
+{
+    assert(!empty());
+    iterator iter = begin();
+    DLink<Variable*>* elt = iter.getElt();
+    erase(elt, true);
+    return elt->content;
+}
+
+void BTQueue::print(ostream& os)
+{
+    os << "Queue: ";
+    iterator iter = begin();
+    if (iter != end()) {
+        Variable* var = iter.getElt()->content;
+        os << var->getName();
+        for (++iter; iter != end(); ++iter) {
+            var = iter.getElt()->content;
+            os << " " << var->getName();
+        }
+    }
+    os << endl;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2btqueue.hpp b/code/include/tb2/utils/tb2btqueue.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..de3348b5a57124c1cb48d32f4a754d0a7f6201b1
--- /dev/null
+++ b/code/include/tb2/utils/tb2btqueue.hpp
@@ -0,0 +1,48 @@
+/** \file tb2btqueue.hpp
+ *  \brief Backtrackable propagation queue.
+ * 
+ */
+
+#ifndef TB2BTQUEUE_HPP_
+#define TB2BTQUEUE_HPP_
+
+#include "tb2btlist.hpp"
+
+/*
+ * A backtrackable queue
+ */
+class BTQueue : public BTList<Variable*> {
+    // make it private because we don't want copy nor assignment
+    BTQueue(const BTQueue& s);
+    BTQueue& operator=(const BTQueue& s);
+
+public:
+    BTQueue(StoreStack<BTList<Variable*>, DLink<Variable*>*>* sv)
+        : BTList<Variable*>(sv)
+    {
+    }
+
+    int getSize() const { return BTList<Variable*>::getSize(); }
+    bool empty() const { return BTList<Variable*>::empty(); }
+
+    void clear() { BTList<Variable*>::clear(); }
+
+    void push(DLink<Variable*>* elt);
+
+    void remove(DLink<Variable*>* elt);
+
+    Variable* pop_back();
+
+    Variable* pop_first();
+
+    void print(ostream& o);
+};
+
+#endif /*TB2BTQUEUE_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2integer.hpp b/code/include/tb2/utils/tb2integer.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..b9fff38104d3bd705eb2ac0a90456e3ebba68279
--- /dev/null
+++ b/code/include/tb2/utils/tb2integer.hpp
@@ -0,0 +1,163 @@
+/** \file tb2integer.hpp
+ *  \brief Unlimited precision integers with basic operations.
+ *
+ */
+
+#ifndef TB2ENTIERS_HPP_
+#define TB2ENTIERS_HPP_
+
+#include <gmp.h>
+
+/// Unlimited precision integers with basic operations.
+/// \note relies on GNU GMP library.
+struct BigInteger {
+    mpz_t integer; ///< the number
+
+    BigInteger()
+    {
+        mpz_init(integer);
+    }
+    /// allows conversion from a simple double
+    BigInteger(double d_)
+    {
+        mpz_init(integer);
+        mpz_set_d(integer, d_);
+    }
+
+    BigInteger(const BigInteger& i)
+    {
+        mpz_init(integer);
+        mpz_set(integer, i.integer);
+    }
+    ~BigInteger()
+    {
+        mpz_clear(integer);
+    }
+
+    BigInteger& operator=(const BigInteger& i)
+    {
+        mpz_set(integer, i.integer);
+        return *this;
+    }
+    BigInteger& operator+=(const BigInteger& i)
+    {
+        mpz_add(integer, integer, i.integer);
+        return *this;
+    }
+    BigInteger& operator-=(const BigInteger& i)
+    {
+        mpz_sub(integer, integer, i.integer);
+        return *this;
+    }
+    BigInteger& operator*=(const BigInteger& i)
+    {
+        mpz_mul(integer, integer, i.integer);
+        return *this;
+    }
+    BigInteger& operator/=(const BigInteger& i)
+    {
+        // assert(i.integer != 0);
+        mpz_div(integer, integer, i.integer);
+        return *this;
+    }
+    const BigInteger operator-() const
+    {
+        BigInteger i;
+        mpz_neg(i.integer, integer);
+        return i;
+    }
+    friend const BigInteger operator+(const BigInteger& left,
+        const BigInteger& right)
+    {
+        BigInteger i;
+        mpz_add(i.integer, left.integer, right.integer);
+        return i;
+    }
+    friend const BigInteger operator-(const BigInteger& left,
+        const BigInteger& right)
+    {
+        BigInteger i;
+        mpz_sub(i.integer, left.integer, right.integer);
+        return i;
+    }
+    friend const BigInteger operator*(const BigInteger& left,
+        const BigInteger& right)
+    {
+        BigInteger i;
+        mpz_mul(i.integer, left.integer, right.integer);
+        return i;
+    }
+    friend const BigInteger operator/(const BigInteger& left,
+        const BigInteger& right)
+    {
+        BigInteger i;
+        assert(right != 0);
+        mpz_div(i.integer, left.integer, right.integer);
+        return i;
+    }
+    friend bool operator==(const BigInteger& left, const BigInteger& right)
+    {
+        return (mpz_cmp(left.integer, right.integer) == 0);
+    }
+    friend bool operator!=(const BigInteger& left, const BigInteger& right)
+    {
+        return (!(mpz_cmp(left.integer, right.integer) == 0));
+    }
+    friend bool operator<=(const BigInteger& left, const BigInteger& right)
+    {
+        return (mpz_cmp(left.integer, right.integer) <= 0);
+    }
+    friend bool operator>=(const BigInteger& left, const BigInteger& right)
+    {
+        return (mpz_cmp(left.integer, right.integer) >= 0);
+    }
+    friend bool operator<(const BigInteger& left, const BigInteger& right)
+    {
+        return (mpz_cmp(left.integer, right.integer) < 0);
+    }
+    friend bool operator>(const BigInteger& left, const BigInteger& right)
+    {
+        return (mpz_cmp(left.integer, right.integer) > 0);
+    }
+
+    void print(ostream& os) const
+    {
+        char* p = NULL;
+        p = mpz_get_str(p, 10, integer);
+        if (strlen(p) > 300)
+        //if(strlen(p)-1>=6)
+        {
+            os << p[0] << '.';
+            for (int i = 1; i <= 5; i++)
+                os << p[i];
+            if (strlen(p) - 1 < 10)
+                os << "e+0" << strlen(p) - 1;
+            else
+                os << "e+" << strlen(p) - 1;
+        } else
+            os << mpz_get_d(integer); //p;
+        //os << mpz_get_d(integer);
+    }
+    friend ostream& operator<<(ostream& os, const BigInteger& i)
+    {
+        i.print(os);
+        return os;
+    }
+    friend istream& operator>>(istream& is, BigInteger& i)
+    {
+        //
+        double p;
+        is >> p;
+        mpz_set_d(i.integer, p);
+        return is;
+    }
+};
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2paretopair.hpp b/code/include/tb2/utils/tb2paretopair.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..4415ce8dfaa59c523f9d6d77a4fdd8a50fbba6ff
--- /dev/null
+++ b/code/include/tb2/utils/tb2paretopair.hpp
@@ -0,0 +1,278 @@
+/** \file tb2paretopair.hpp
+ *  \brief ParetoPair numbers with basic operations.
+ * 
+ */
+
+#ifndef TB2PARETOPAIR_HPP_
+#define TB2PARETOPAIR_HPP_
+
+struct ParetoPair {
+    int p; //
+    int q; //
+
+    ParetoPair()
+        : p(0)
+        , q(0)
+    {
+    }
+
+    ParetoPair(int p_, int q_)
+        : p(p_)
+        , q(q_)
+    {
+    }
+
+    ParetoPair(int p_)
+        : p(p_)
+        , q(p_)
+    {
+        cerr << "warning! implicit conversion from int to ParetoPair" << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    double to_double() const
+    {
+        cerr << "to_double not implemented on Paretopair";
+        exit(EXIT_FAILURE);
+    }
+
+    ParetoPair(const ParetoPair& r)
+        : p(r.p)
+        , q(r.q)
+    {
+    }
+
+    ParetoPair& operator=(const ParetoPair& r)
+    {
+        p = r.p;
+        q = r.q;
+        return *this;
+    }
+    ParetoPair& operator+=(const ParetoPair& r)
+    {
+        p = (p + r.p);
+        q = (q + r.q);
+        return *this;
+    }
+    ParetoPair& operator-=(const ParetoPair& r)
+    {
+        p = (p - r.p);
+        q = (q - r.q);
+        return *this;
+    }
+    ParetoPair& operator*=(const ParetoPair& r)
+    {
+        p = (p * r.p);
+        q = (q * r.q);
+        return *this;
+    }
+    ParetoPair& operator/=(const ParetoPair& r)
+    {
+        p = (p / r.p);
+        q = (q / r.q);
+        return *this;
+    }
+    const ParetoPair operator-() const { return ParetoPair(-p, -q); }
+
+    friend const ParetoPair operator+(const ParetoPair& left, const ParetoPair& right)
+    {
+        return ParetoPair(left.p + right.p, left.q + right.q);
+    }
+
+    friend const ParetoPair operator-(const ParetoPair& left, const ParetoPair& right)
+    {
+        return ParetoPair(max(0, left.p - right.p), max(0, left.q - right.q));
+    }
+
+    friend const ParetoPair operator*(const ParetoPair& left, const ParetoPair& right)
+    {
+        return ParetoPair(left.p * right.p, left.q * right.q);
+    }
+
+    friend const ParetoPair operator/(const ParetoPair& left, const ParetoPair& right)
+    {
+        return ParetoPair(left.p / right.p, left.q / right.q);
+    }
+
+    friend const ParetoPair operator%(const ParetoPair& left, const ParetoPair& right)
+    {
+        return ParetoPair(left.p % right.p, left.q % right.q);
+    }
+
+    friend bool operator==(const ParetoPair& left, const ParetoPair& right)
+    {
+        return (left.p == right.p) & (left.q == right.q);
+    }
+
+    friend bool operator!=(const ParetoPair& left, const ParetoPair& right)
+    {
+        return (left.p != right.p) | (left.q != right.q);
+    }
+
+    friend bool operator<=(const ParetoPair& left, const ParetoPair& right)
+    {
+        return (left.p <= right.p) & (left.q <= right.q);
+    }
+
+    friend bool operator>=(const ParetoPair& left, const ParetoPair& right)
+    {
+        return (left.p >= right.p) & (left.q >= right.q);
+    }
+
+    friend bool operator<(const ParetoPair& left, const ParetoPair& right)
+    {
+        return ((left.p <= right.p) & (left.q < right.q)) | ((left.p < right.p) & (left.q <= right.q));
+    }
+
+    friend bool operator>(const ParetoPair& left, const ParetoPair& right)
+    {
+        return ((left.p >= right.p) & (left.q > right.q)) | ((left.p > right.p) & (left.q >= right.q));
+    }
+
+    void print(ostream& os) const { os << '(' << p << ',' << q << ')'; }
+
+    friend ostream& operator<<(ostream& os, const ParetoPair& r)
+    {
+        os << '(' << r.p << ',' << r.q << ')';
+        return os;
+    }
+
+    friend istream& operator>>(istream& is, ParetoPair& r)
+    {
+        char c;
+        do {
+            is.get(c);
+        } while (c != '(');
+        is >> r.p;
+        do {
+            is.get(c);
+        } while (c != ',');
+        is >> r.q;
+        do {
+            is.get(c);
+        } while (c != ')');
+        return is;
+    }
+
+    //   friend istream& operator>>(istream& is, ParetoPair& r) {
+    //  		is >> r.p;
+    //  		r.q = r.p;		// READ ONLY INTEGER, NOT PARETOPAIR !!!!!!!!
+    //  		return is;
+    //  	}
+};
+
+const ParetoPair PARETOPAIR_MIN = ParetoPair(0, 0);
+const ParetoPair PARETOPAIR_1 = ParetoPair(1, 1);
+const ParetoPair PARETOPAIR_3 = ParetoPair(3, 3);
+const ParetoPair PARETOPAIR_100 = ParetoPair(100, 100);
+const ParetoPair PARETOPAIR_MAX = ParetoPair((INT_MAX / 2) / 3 / 3, (INT_MAX / 2) / 3 / 3);
+
+inline double to_double(const ParetoPair r)
+{
+    cerr << "to_double not implemented on Paretopair";
+    exit(EXIT_FAILURE);
+}
+inline Long ceil(const ParetoPair r)
+{
+    exit(EXIT_FAILURE);
+    return 0;
+}
+inline Long floor(const ParetoPair r)
+{
+    exit(EXIT_FAILURE);
+    return 0;
+}
+inline ParetoPair randomCost(ParetoPair min, ParetoPair max) { return ParetoPair(min.p + (myrand() % (max.p - min.p + 1)), min.q + (myrand() % (max.q - min.q + 1))); }
+inline ParetoPair string2Cost(char* ptr)
+{
+    int p = 0, q = 0;
+    sscanf(ptr, "(%d,%d)", &p, &q);
+    return ParetoPair(p, q);
+}
+
+inline int cost2log2(int x)
+{
+    if (x == 0)
+        return -1;
+    int l2 = 0;
+    x >>= 1;
+    for (; x != 0; x >>= 1) {
+        ++l2;
+    }
+    return (l2);
+}
+
+inline int cost2log2glb(const ParetoPair& r) { return cost2log2(min(r.p, r.q)); }
+inline int cost2log2gub(const ParetoPair& r) { return cost2log2(max(r.p, r.q)); }
+
+inline ParetoPair MIN(ParetoPair a, ParetoPair b)
+{
+    if (a <= b)
+        return a;
+    else if (b <= a)
+        return b;
+    else
+        exit(EXIT_FAILURE);
+}
+inline ParetoPair MAX(ParetoPair a, ParetoPair b)
+{
+    if (a >= b)
+        return a;
+    else if (b >= a)
+        return b;
+    else
+        exit(EXIT_FAILURE);
+}
+inline ParetoPair MULT(ParetoPair a, double b)
+{
+    assert(b < INT_MAX);
+    if (a >= PARETOPAIR_MAX)
+        return PARETOPAIR_MAX;
+    else if (b <= UNIT_COST)
+        return ParetoPair(a.p * b, a.q * b);
+    else if (a.p < PARETOPAIR_MAX.p / b && a.q < PARETOPAIR_MAX.q / b)
+        return ParetoPair(a.p * b, a.q * b);
+    else {
+        cerr << "Error: cost multiplication overflow!" << endl;
+        exit(1);
+    }
+}
+inline ParetoPair GLB(ParetoPair a, ParetoPair b) { return ParetoPair(min(a.p, b.p), min(a.q, b.q)); }
+inline ParetoPair LUB(ParetoPair a, ParetoPair b) { return ParetoPair(max(a.p, b.p), max(a.q, b.q)); }
+inline bool GLB(ParetoPair* a, ParetoPair b)
+{
+    if (!(b >= *a)) {
+        *a = GLB(*a, b);
+        return true;
+    } else
+        return false;
+}
+inline bool LUB(ParetoPair* a, ParetoPair b)
+{
+    if (!(b <= *a)) {
+        *a = LUB(*a, b);
+        return true;
+    } else
+        return false;
+}
+inline bool GLBTEST(ParetoPair a, ParetoPair b) { return (!(b >= a)); }
+inline bool LUBTEST(ParetoPair a, ParetoPair b) { return (!(b <= a)); }
+inline bool DACTEST(ParetoPair a, ParetoPair b) { return (a.p == 0 && b.p > 0) || (a.q == 0 && b.q > 0); }
+inline bool SUPPORTTEST(ParetoPair a, ParetoPair b) { return DACTEST(a, b); }
+inline bool SUPPORTTEST(ParetoPair a) { return (a.p == 0 || a.q == 0); }
+inline bool CUT(ParetoPair lb, ParetoPair ub) { return !(lb < ub); }
+inline bool CSP(ParetoPair lb, ParetoPair ub)
+{
+    ParetoPair r = ub - lb;
+    return (r == ParetoPair(1, 0)) || (r == ParetoPair(0, 1));
+}
+void initCosts();
+
+#endif /*TB2PARETOPAIR_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2queue.cpp b/code/include/tb2/utils/tb2queue.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bc482f5d6717524c68fb2dcf7d8bda3f740bbfa9
--- /dev/null
+++ b/code/include/tb2/utils/tb2queue.cpp
@@ -0,0 +1,194 @@
+/*
+ * ****** Propagation queue with time stamping *******
+ */
+
+#include "tb2queue.hpp"
+#include "core/tb2variable.hpp"
+
+void Queue::push(DLink<VariableWithTimeStamp>* elt, Long curTimeStamp)
+{
+    if (elt->content.timeStamp < curTimeStamp) {
+        elt->content.timeStamp = curTimeStamp;
+        push_back(elt, false);
+    }
+}
+
+void Queue::push(DLink<VariableWithTimeStamp>* elt, EventType incdec, Long curTimeStamp)
+{
+    elt->content.incdec |= incdec;
+    push(elt, curTimeStamp);
+}
+
+void Queue::remove(DLink<VariableWithTimeStamp>* elt)
+{
+    elt->content.timeStamp = -1;
+    elt->content.incdec = NOTHING_EVENT;
+    erase(elt, false);
+}
+
+Variable* Queue::pop()
+{
+    assert(!empty());
+    DLink<VariableWithTimeStamp>* elt = pop_back(false);
+    elt->content.timeStamp = -1;
+    elt->content.incdec = NOTHING_EVENT;
+    return elt->content.var;
+}
+
+Variable* Queue::pop(int* incdec)
+{
+    assert(!empty());
+    *incdec = (*rbegin()).incdec;
+    return pop();
+}
+
+Variable* Queue::pop_min()
+{
+    assert(!empty());
+    iterator iter = begin();
+    DLink<VariableWithTimeStamp>* elt = iter.getElt();
+    int pos = (*iter).var->getDACOrder();
+    for (++iter; iter != end(); ++iter) {
+        if ((*iter).var->getDACOrder() < pos) {
+            elt = iter.getElt();
+            pos = (*iter).var->getDACOrder();
+        }
+    }
+    erase(elt, false);
+    elt->content.timeStamp = -1;
+    elt->content.incdec = NOTHING_EVENT;
+    return elt->content.var;
+}
+
+Variable* Queue::pop_min(int* incdec)
+{
+    assert(!empty());
+    iterator iter = begin();
+    DLink<VariableWithTimeStamp>* elt = iter.getElt();
+    int pos = (*iter).var->getDACOrder();
+    for (++iter; iter != end(); ++iter) {
+        if ((*iter).var->getDACOrder() < pos) {
+            elt = iter.getElt();
+            pos = (*iter).var->getDACOrder();
+        }
+    }
+    erase(elt, false);
+    elt->content.timeStamp = -1;
+    *incdec = elt->content.incdec;
+    elt->content.incdec = NOTHING_EVENT;
+    return elt->content.var;
+}
+
+Variable* Queue::pop_max()
+{
+    assert(!empty());
+    iterator iter = begin();
+    DLink<VariableWithTimeStamp>* elt = iter.getElt();
+    int pos = (*iter).var->getDACOrder();
+    for (++iter; iter != end(); ++iter) {
+        if ((*iter).var->getDACOrder() > pos) {
+            elt = iter.getElt();
+            pos = (*iter).var->getDACOrder();
+        }
+    }
+    erase(elt, false);
+    elt->content.timeStamp = -1;
+    elt->content.incdec = NOTHING_EVENT;
+    return elt->content.var;
+}
+
+Variable* Queue::pop_max(int* incdec)
+{
+    assert(!empty());
+    iterator iter = begin();
+    DLink<VariableWithTimeStamp>* elt = iter.getElt();
+    int pos = (*iter).var->getDACOrder();
+    for (++iter; iter != end(); ++iter) {
+        if ((*iter).var->getDACOrder() > pos) {
+            elt = iter.getElt();
+            pos = (*iter).var->getDACOrder();
+        }
+    }
+    erase(elt, false);
+    elt->content.timeStamp = -1;
+    *incdec = elt->content.incdec;
+    elt->content.incdec = NOTHING_EVENT;
+    return elt->content.var;
+}
+
+Variable* Queue::pop_first()
+{
+    assert(!empty());
+    iterator iter = begin();
+    DLink<VariableWithTimeStamp>* elt = iter.getElt();
+    erase(elt, false);
+    elt->content.timeStamp = -1;
+    elt->content.incdec = NOTHING_EVENT;
+    return elt->content.var;
+}
+
+int cmpVariableDAC(const void* p1, const void* p2)
+{
+    DLink<VariableWithTimeStamp>* c1 = *((DLink<VariableWithTimeStamp>**)p1);
+    DLink<VariableWithTimeStamp>* c2 = *((DLink<VariableWithTimeStamp>**)p2);
+    int v1 = c1->content.var->getDACOrder();
+    int v2 = c2->content.var->getDACOrder();
+    if (v1 > v2)
+        return 1;
+    else if (v1 < v2)
+        return -1;
+    else
+        return 0;
+}
+
+int cmpVariableRevDAC(const void* p1, const void* p2)
+{
+    DLink<VariableWithTimeStamp>* c1 = *((DLink<VariableWithTimeStamp>**)p1);
+    DLink<VariableWithTimeStamp>* c2 = *((DLink<VariableWithTimeStamp>**)p2);
+    int v1 = c1->content.var->getDACOrder();
+    int v2 = c2->content.var->getDACOrder();
+    if (v1 < v2)
+        return 1;
+    else if (v1 > v2)
+        return -1;
+    else
+        return 0;
+}
+
+void Queue::sort(bool increase)
+{
+    int size = getSize();
+    DLink<VariableWithTimeStamp>** sorted = new DLink<VariableWithTimeStamp>*[size]; // replace size by MAX_BRANCH_SIZE in case of compilation problem
+    int i = 0;
+    for (iterator iter = begin(); iter != end(); ++iter) {
+        sorted[i++] = iter.getElt();
+    }
+    qsort(sorted, size, sizeof(DLink<VariableWithTimeStamp>*), (increase) ? cmpVariableDAC : cmpVariableRevDAC);
+    for (int i = 0; i < size; i++) {
+        erase(sorted[i], false);
+        push_back(sorted[i], false);
+    }
+    delete[] sorted;
+}
+
+void Queue::print(ostream& os)
+{
+    os << "Queue: ";
+    iterator iter = begin();
+    if (iter != end()) {
+        VariableWithTimeStamp vts = iter.getElt()->content;
+        os << "<var:" << vts.var->getName() << ",node:" << vts.timeStamp << "> ";
+        for (++iter; iter != end(); ++iter) {
+            vts = iter.getElt()->content;
+            os << "<var:" << vts.var->getName() << ",node:" << vts.timeStamp << "> ";
+        }
+    }
+    os << endl;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2queue.hpp b/code/include/tb2/utils/tb2queue.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..7ae533af793ef6a639209d5606eeeda87d80f9af
--- /dev/null
+++ b/code/include/tb2/utils/tb2queue.hpp
@@ -0,0 +1,61 @@
+/** \file tb2queue.hpp
+ *  \brief Propagation queue with time stamping.
+ * 
+ */
+
+#ifndef TB2QUEUE_HPP_
+#define TB2QUEUE_HPP_
+
+#include "tb2btlist.hpp"
+
+typedef enum { NOTHING_EVENT = 0,
+    INCREASE_EVENT = 1,
+    DECREASE_EVENT = 2 } EventType;
+
+struct VariableWithTimeStamp {
+    Variable* var;
+    Long timeStamp;
+    int incdec;
+};
+
+class Queue : public BTList<VariableWithTimeStamp> {
+    // make it private because we don't want copy nor assignment
+    Queue(const Queue& s);
+    Queue& operator=(const Queue& s);
+
+public:
+    Queue()
+        : BTList<VariableWithTimeStamp>(NULL)
+    {
+    }
+
+    int getSize() const { return BTList<VariableWithTimeStamp>::getSize(); }
+    bool empty() const { return BTList<VariableWithTimeStamp>::empty(); }
+
+    void clear() { BTList<VariableWithTimeStamp>::clear(); }
+
+    void push(DLink<VariableWithTimeStamp>* elt, Long curTimeStamp);
+    void push(DLink<VariableWithTimeStamp>* elt, EventType incdec, Long curTimeStamp);
+
+    void remove(DLink<VariableWithTimeStamp>* elt);
+
+    Variable* pop();
+    Variable* pop(int* incdec);
+    Variable* pop_min();
+    Variable* pop_min(int* incdec);
+    Variable* pop_max();
+    Variable* pop_max(int* incdec);
+    Variable* pop_first();
+    void sort(bool increase = true);
+
+    void print(ostream& o);
+};
+
+#endif /*TB2QUEUE_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2randomgen.cpp b/code/include/tb2/utils/tb2randomgen.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3465ef8e21b74d52724d08644be0b1a5d2a27f36
--- /dev/null
+++ b/code/include/tb2/utils/tb2randomgen.cpp
@@ -0,0 +1,373 @@
+/*
+ * ****** Random WCSP generator *******
+ */
+
+#include "tb2randomgen.hpp"
+#include "core/tb2constraint.hpp"
+#include "core/tb2variable.hpp"
+#include "core/tb2enumvar.hpp"
+
+bool naryRandom::connected()
+{
+    return true;
+}
+
+void naryRandom::generateGlobalCtr(vector<int>& indexs, string globalname, Cost costMin, Cost costMax)
+{
+    int i;
+    int arity = indexs.size();
+    EnumeratedVariable** scopeVars = new EnumeratedVariable*[arity];
+    int* scopeIndexs = new int[arity];
+    Cost Top = wcsp.getUb();
+    if (costMax < Top)
+        Top = ToulBar2::costMultiplier * costMax;
+
+    for (i = 0; i < arity; i++) {
+        scopeIndexs[i] = indexs[i];
+        scopeVars[i] = (EnumeratedVariable*)wcsp.getVar(indexs[i]);
+    }
+
+    random_shuffle(&scopeIndexs[0], &scopeIndexs[arity - 1]);
+
+    if (globalname == "knapsack") {
+        string arguments;
+        Long capacity = (myrandln() % (Long) costMax);
+        if (capacity==0)
+            capacity++;
+        arguments.append(to_string(capacity));
+        for (i = 0; i < arity; i++) {
+            arguments.append(" ");
+            if((rand() % 100)<50){
+                Long weight = (myrandl() % capacity+1);
+                arguments.append(to_string(weight));}
+            else{
+                Long weight = (-myrandl() % capacity-1);
+                arguments.append(to_string(weight));}
+        }
+        istringstream file(arguments);
+        wcsp.postKnapsackConstraint(scopeIndexs, arity, file);
+    } else if (globalname == "salldiff" || globalname == "salldiffdp" || globalname == "walldiff") {
+        wcsp.postWAllDiff(scopeIndexs, arity, "var", (globalname == "salldiff") ? "flow" : ((globalname == "walldiff") ? "network" : "DAG"), Top);
+    } else if (globalname == "sgcc" || globalname == "sgccdp" || globalname == "wgcc") {
+        // soft alldiff
+        vector<BoundedObjValue> values;
+        for (unsigned int i = 0; i < scopeVars[0]->getDomainInitSize(); i++) {
+            values.push_back(BoundedObjValue(i, 1));
+        }
+        wcsp.postWGcc(scopeIndexs, arity, "var", (globalname == "sgcc") ? "flow" : ((globalname == "wgcc") ? "network" : "DAG"), Top, values);
+    } else if (globalname == "sregular" || globalname == "sregulardp" || globalname == "wregular") {
+        // random parity automaton (XOR)
+        vector<WeightedObjInt> init(1, WeightedObjInt(0));
+        vector<WeightedObjInt> last(1, WeightedObjInt(1));
+        if (globalname == "wregular")
+            last.push_back(WeightedObjInt(0, Top));
+        vector<DFATransition> trans;
+        for (unsigned int i = 0; i < scopeVars[0]->getDomainInitSize(); i++) {
+            trans.push_back(DFATransition(0, i, (i % 2) ? 1 : 0));
+            trans.push_back(DFATransition(1, i, (i % 2) ? 0 : 1));
+        }
+        wcsp.postWRegular(scopeIndexs, arity, "var", (globalname == "sregular") ? "flow" : ((globalname == "wregular") ? "network" : "DAG"), Top, 2, init, last, trans);
+    } else {
+        cerr << "Random generator: unknown global cost function name " << globalname << endl;
+        exit(-1);
+    }
+
+    delete[] scopeIndexs;
+    delete[] scopeVars;
+}
+
+void naryRandom::generateNaryCtr(vector<int>& indexs, long nogoods, Cost costMin, Cost costMax)
+{
+    int i;
+    int arity = indexs.size();
+    EnumeratedVariable** scopeVars = new EnumeratedVariable*[arity];
+    int* scopeIndexs = new int[arity];
+
+    Cost Top = wcsp.getUb();
+    if (costMax < Top)
+        Top = costMax;
+
+    for (i = 0; i < arity; i++) {
+        scopeIndexs[i] = indexs[i];
+        scopeVars[i] = (EnumeratedVariable*)wcsp.getVar(indexs[i]);
+    }
+
+    Constraint* nctr = wcsp.getCtr(wcsp.postNaryConstraintBegin(scopeIndexs, arity, 0, nogoods));
+
+    Tuple s(arity, 0);
+    while (nogoods > 0) {
+        for (i = 0; i < arity; i++)
+            s[i] = myrand() % scopeVars[i]->getDomainInitSize();
+        Cost c = ToulBar2::costMultiplier * randomCost(MIN_COST, costMax);
+        nctr->setTuple(s, c);
+        nogoods--;
+    }
+    nctr->propagate();
+
+    delete[] scopeIndexs;
+    delete[] scopeVars;
+}
+
+void naryRandom::generateTernCtr(int i, int j, int k, long nogoods, Cost costMin, Cost costMax)
+{
+    int a, b, c, dice;
+    EnumeratedVariable* x = (EnumeratedVariable*)wcsp.getVar(i);
+    EnumeratedVariable* y = (EnumeratedVariable*)wcsp.getVar(j);
+    EnumeratedVariable* z = (EnumeratedVariable*)wcsp.getVar(k);
+    int mx = x->getDomainInitSize();
+    int my = y->getDomainInitSize();
+    int mz = z->getDomainInitSize();
+    int total_nogoods = mx * my * mz;
+
+    vector<Cost> costs;
+    for (a = 0; a < mx; a++)
+        for (b = 0; b < my; b++)
+            for (c = 0; c < mz; c++)
+                costs.push_back(MIN_COST);
+
+    while (nogoods > 0) {
+        dice = myrand() % total_nogoods;
+        for (a = 0; a < mx; a++)
+            for (b = 0; b < my; b++)
+                for (c = 0; c < mz; c++) {
+                    if (costs[my * mz * a + b * mz + c] == MIN_COST) {
+                        if (dice == 0) {
+                            costs[my * mz * a + b * mz + c] = ToulBar2::costMultiplier * randomCost(costMin, costMax);
+                            nogoods--;
+                            total_nogoods--;
+                            a = mx;
+                            b = my;
+                            c = mz;
+                        }
+                        dice--;
+                    }
+                }
+    }
+    wcsp.postTernaryConstraint(i, j, k, costs);
+}
+
+void naryRandom::generateSubModularBinCtr(int i, int j, Cost costMin, Cost costMax)
+{
+    int a, b;
+    EnumeratedVariable* x = (EnumeratedVariable*)wcsp.getVar(i);
+    EnumeratedVariable* y = (EnumeratedVariable*)wcsp.getVar(j);
+    int mx = x->getDomainInitSize();
+    int my = y->getDomainInitSize();
+
+    vector<Cost> costs;
+    for (a = 0; a < mx; a++)
+        for (b = 0; b < my; b++)
+            costs.push_back(MIN_COST);
+
+    // row generation
+    for (a = 0; a < mx; a++) {
+        if (myrand() % 2) {
+            Cost c = ToulBar2::costMultiplier * randomCost(costMin, costMax);
+            for (b = 0; b < my; b++)
+                costs[my * a + b] += c;
+        }
+    }
+    // col generation
+    for (b = 0; b < my; b++) {
+        if (myrand() % 2) {
+            Cost c = ToulBar2::costMultiplier * randomCost(costMin, costMax);
+            for (a = 0; a < mx; a++)
+                costs[my * a + b] += c;
+        }
+    }
+
+    // rectangle generation
+    int nrect = myrand() % mx;
+    while (nrect) {
+        Cost c = ToulBar2::costMultiplier * randomCost(costMin, costMax);
+        int lx = myrand() % (mx - 1);
+        int ly = myrand() % (my - 1);
+        for (a = 0; a < lx; a++)
+            for (b = 0; b < ly; b++) {
+                costs[my * (mx - a - 1) + b] += c;
+            }
+        nrect--;
+    }
+
+    wcsp.postBinaryConstraint(i, j, costs);
+}
+
+void naryRandom::generateBinCtr(int i, int j, long nogoods, Cost costMin, Cost costMax)
+{
+    int a, b, dice;
+    EnumeratedVariable* x = (EnumeratedVariable*)wcsp.getVar(i);
+    EnumeratedVariable* y = (EnumeratedVariable*)wcsp.getVar(j);
+    int mx = x->getDomainInitSize();
+    int my = y->getDomainInitSize();
+    int total_nogoods = mx * my;
+
+    vector<Cost> costs;
+    for (a = 0; a < mx; a++)
+        for (b = 0; b < my; b++)
+            costs.push_back(MIN_COST);
+
+    while (nogoods > 0) {
+        dice = myrand() % total_nogoods;
+        for (a = 0; a < mx; a++)
+            for (b = 0; b < my; b++) {
+                if (costs[my * a + b] == MIN_COST) {
+                    if (dice == 0) {
+                        costs[my * a + b] = ToulBar2::costMultiplier * randomCost(costMin, costMax);
+                        nogoods--;
+                        total_nogoods--;
+                        a = mx;
+                        b = my;
+                    }
+                    dice--;
+                }
+            }
+    }
+    wcsp.postBinaryConstraint(i, j, costs);
+}
+
+long long naryRandom::toIndex(vector<int>& index)
+{
+    long long result = 1;
+    for (int i = 0; i < (int)index.size(); i++)
+        result += (long long)powl((double)n, i) * index[i];
+    return result;
+}
+
+void naryRandom::ini(vector<int>& index, int arity, int n)
+{
+    index.clear();
+    int dec = (arity>10)?(myrand()%(n-arity)):0;
+    for (int i = 0; i < arity; i++)
+        index.push_back(i + dec);
+}
+
+bool naryRandom::inc(vector<int>& index)
+{
+    int res = inc(index, index.size() - 1);
+    if (res < 0)
+        return false;
+    else
+        return true;
+}
+
+int naryRandom::inc(vector<int>& index, int i)
+{
+    if (i < 0)
+        return i;
+    assert(i < (int)index.size());
+
+    index[i]++;
+    if (index[i] == n - ((int)index.size() - i - 1)) {
+        int val = inc(index, i - 1);
+        if (val < 0)
+            return -1;
+        index[i] = val + 1;
+        if (index[i] == n)
+            return -1;
+    }
+    return index[i];
+}
+
+void naryRandom::Input(int in_n, int in_m, vector<int>& p, bool forceSubModular, string globalname)
+{
+    n = in_n;
+    m = in_m;
+
+    assert(p.size() >= 2);
+
+    int i, arity;
+    vector<int> indexs;
+    vector<long> numCtrs;
+
+    int maxa = p.size();
+
+    for (arity = 0; arity <= maxa; arity++) {
+        if (arity < 2)
+            numCtrs.push_back(0);
+        else
+            numCtrs.push_back(p[arity - 1]);
+    }
+
+    if (forceSubModular) {
+        numCtrs[maxa] = (numCtrs[maxa - 1] * numCtrs[maxa]) / 100;
+        maxa--;
+    }
+
+    for (i = 0; i < n; i++) {
+        string varname = to_string(i);
+        wcsp.makeEnumeratedVariable(varname, 0, m - 1);
+    }
+
+    for (arity = maxa; arity > 1; arity--) {
+        long nogoods = (long)(((double)p[0] / 100.) * pow((double)m, arity) + 0.5);
+        //long totalarraysize = (long) pow( (double)n, arity);
+        long long tCtrs = static_cast<long long>(n)*static_cast<long long>(n-1);
+        set<long long> scopes;
+        for (i = 2; i < arity; i++) {
+            tCtrs *= (n - i);
+            tCtrs /= i;
+        }
+        if (numCtrs[arity] > tCtrs) {
+            cout << numCtrs[arity] << "  " << arity << "ary constraints and the maximum is " << tCtrs << endl;
+            numCtrs[arity] = tCtrs;
+        }
+
+        while (numCtrs[arity]) {
+            bool oneadded = false;
+            int dice = max(0,min(MAX_ARITY*MAX_ARITY*MAX_ARITY, (int)((long long)myrand() % tCtrs)));
+            ini(indexs, arity, n);
+            do {
+                if (scopes.end() == scopes.find(toIndex(indexs))) {
+                    if (dice == 0) {
+                        scopes.insert(toIndex(indexs));
+                        if (arity > 1) {
+                            switch (arity) {
+                            case 2:
+                                if (!forceSubModular || numCtrs[arity] > numCtrs[maxa + 1])
+                                    generateBinCtr(indexs[0], indexs[1], nogoods);
+                                else
+                                    generateSubModularBinCtr(indexs[0], indexs[1], SMALL_COST, LARGE_COST);
+                                break;
+                            case 3:
+                                generateTernCtr(indexs[0], indexs[1], indexs[2], nogoods);
+                                break;
+                            default:
+                                if (globalname == "" || globalname == "nary")
+                                    generateNaryCtr(indexs, nogoods);
+                                else
+                                    generateGlobalCtr(indexs, globalname);
+                                break;
+                            }
+                        }
+                        tCtrs--;
+                        numCtrs[arity]--;
+                        oneadded = true;
+                    }
+                    dice--;
+                }
+            } while (inc(indexs) && !oneadded);
+        }
+    }
+
+    for (i = 0; i < n; i++) {
+        EnumeratedVariable* x = (EnumeratedVariable*)wcsp.getVar(i);
+        for (unsigned int a = 0; a < x->getDomainInitSize(); a++) {
+            x->project(x->toValue(a), ToulBar2::costMultiplier * randomCost(MIN_COST, LARGE_COST), true);
+        }
+        x->findSupport();
+    }
+
+    if (forceSubModular) {
+        for (i = 0; i < n; i++) {
+            EnumeratedVariable* x = (EnumeratedVariable*)wcsp.getVar(i);
+            x->permuteDomain(10);
+        }
+    }
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2randomgen.hpp b/code/include/tb2/utils/tb2randomgen.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..5c0e0048ed9144e8f07043fc86fca4cd5e8063ba
--- /dev/null
+++ b/code/include/tb2/utils/tb2randomgen.hpp
@@ -0,0 +1,44 @@
+/* \file tb2randomgen.hpp
+ * \brief Random WCSP generator.
+ */
+
+#ifndef TB2RANDOMGEN_H_
+#define TB2RANDOMGEN_H_
+
+#include "core/tb2wcsp.hpp"
+
+class naryRandom {
+public:
+    WCSP& wcsp;
+
+    naryRandom(WCSP* wcspin, int seed = 0)
+        : wcsp(*wcspin)
+    {
+        mysrand(seed);
+    }
+    ~naryRandom() {}
+
+    int n, m;
+
+    bool connected();
+    void generateGlobalCtr(vector<int>& indexs, string globalname, Cost costMin = SMALL_COST, Cost costMax = LARGE_COST);
+    void generateNaryCtr(vector<int>& indexs, long nogoods, Cost costMin = SMALL_COST, Cost costMax = LARGE_COST);
+    void generateTernCtr(int i, int j, int k, long p, Cost costMin = SMALL_COST, Cost costMax = LARGE_COST);
+    void generateBinCtr(int i, int j, long p, Cost costMin = SMALL_COST, Cost costMax = LARGE_COST);
+    void generateSubModularBinCtr(int i, int j, Cost costMin = SMALL_COST, Cost costMax = LARGE_COST);
+    void Input(int in_n, int in_m, vector<int>& p, bool forceSubModular = false, string globalname = "");
+
+    void ini(vector<int>& index, int arity, int n);
+    long long toIndex(vector<int>& index);
+    int inc(vector<int>& index, int i);
+    bool inc(vector<int>& index);
+};
+
+#endif /*TB2RANDOMGEN_H_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2reader.cpp b/code/include/tb2/utils/tb2reader.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d740bb28385a6c1afb880ef90588b6741d81f02a
--- /dev/null
+++ b/code/include/tb2/utils/tb2reader.cpp
@@ -0,0 +1,3997 @@
+/*
+ * **************** Read wcsp format files **************************
+ *
+ */
+
+#include "core/tb2wcsp.hpp"
+#include "core/tb2enumvar.hpp"
+#include "applis/tb2pedigree.hpp"
+#include "applis/tb2haplotype.hpp"
+#include "applis/tb2bep.hpp"
+#include "core/tb2naryconstr.hpp"
+#include "tb2randomgen.hpp"
+#include "core/tb2globaldecomposable.hpp"
+#include "core/tb2clqcover.hpp"
+#include "core/tb2knapsack.hpp"
+
+#ifdef BOOST
+#define BOOST_IOSTREAMS_NO_LIB
+#include <boost/version.hpp>
+#include <boost/tokenizer.hpp>
+#include <boost/iostreams/filtering_streambuf.hpp>
+#include <boost/iostreams/copy.hpp>
+#include <boost/iostreams/filter/gzip.hpp>
+#if (BOOST_VERSION >= 106500)
+#include <boost/iostreams/filter/lzma.hpp>
+#include "lzma-cpp.inc"
+#endif
+#include <boost/algorithm/string.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/compressed_pair.hpp>
+#endif
+
+typedef struct {
+    EnumeratedVariable* var;
+    vector<Cost> costs;
+} TemporaryUnaryConstraint;
+
+/**
+ * \defgroup wcspformat Weighted Constraint Satisfaction Problem file format (wcsp)
+ *
+ * It is a text format composed of a list of numerical and string terms separated by spaces.
+ * Instead of using names for making reference to variables, variable
+ * indexes are employed. The same for domain values. All indexes start at
+ * zero.
+ *
+ * Cost functions can be defined in intention (see below) or in extension, by their list of
+ * tuples. A default cost value is defined per function in order to
+ * reduce the size of the list. Only tuples with a different cost value
+ * should be given (not mandatory). All the cost values must be positive. The arity of a cost function in extension may be
+ * equal to zero. In this case, there is no tuples and the default cost
+ * value is added to the cost of any solution. This can be used to represent
+ * a global lower bound constant of the problem.
+ *
+ * The wcsp file format is composed of three parts: a problem header, the list of
+ * variable domain sizes, and the list of cost functions.
+ *
+ * - Header definition for a given problem:
+ * \verbatim
+ <Problem name>
+ <Number of variables (N)>
+ <Maximum domain size>
+ <Number of cost functions>
+ <Initial global upper bound of the problem (UB)>
+ \endverbatim
+ * The goal is to find an assignment of all the variables with minimum total cost,
+ * strictly lower than UB.
+ * Tuples with a cost greater than or equal to UB are forbidden (hard constraint).
+ *
+ * - Definition of domain sizes
+ * \verbatim
+ <Domain size of variable with index 0>
+ ...
+ <Domain size of variable with index N - 1>
+ \endverbatim
+ * \note domain values range from zero to \e size-1
+ * \note a negative domain size is interpreted as a variable with an interval domain in \f$[0,-size-1]\f$
+ * \warning variables with interval domains are restricted to arithmetic and disjunctive cost functions in intention (see below)
+ * - General definition of cost functions
+ *   - Definition of a cost function in extension
+ * \verbatim
+ <Arity of the cost function>
+ <Index of the first variable in the scope of the cost function>
+ ...
+ <Index of the last variable in the scope of the cost function>
+ <Default cost value>
+ <Number of tuples with a cost different than the default cost>
+ \endverbatim
+ * followed by for every tuple with a cost different than the default cost:
+ * \verbatim
+ <Index of the value assigned to the first variable in the scope>
+ ...
+ <Index of the value assigned to the last variable in the scope>
+ <Cost of the tuple>
+ \endverbatim
+ * \note Shared cost function: A cost function in extension can be shared by several cost functions with the same arity (and same domain sizes) but different scopes. In order to do that, the cost function to be shared must start by a negative scope size. Each shared cost function implicitly receives an occurrence number starting from 1 and incremented at each new shared definition. New cost functions in extension can reuse some previously defined shared cost functions in extension by using a negative number of tuples representing the occurrence number of the desired shared cost function. Note that default costs should be the same in the shared and new cost functions. Here is an example of 4 variables with domain size 4 and one AllDifferent hard constraint decomposed into 6 binary constraints.
+ *   - Shared CF used inside a small example in wcsp format:
+ * \code
+ AllDifferentDecomposedIntoBinaryConstraints 4 4 6 1
+ 4 4 4 4
+ -2 0 1 0 4
+ 0 0 1
+ 1 1 1
+ 2 2 1
+ 3 3 1
+ 2 0 2 0 -1
+ 2 0 3 0 -1
+ 2 1 2 0 -1
+ 2 1 3 0 -1
+ 2 2 3 0 -1
+ \endcode
+ *   - Definition of a cost function in intension by replacing the default cost value by -1 and by giving its keyword name and its K parameters
+ * \verbatim
+ <Arity of the cost function>
+ <Index of the first variable in the scope of the cost function>
+ ...
+ <Index of the last variable in the scope of the cost function>
+ -1
+ <keyword>
+ <parameter1>
+ ...
+ <parameterK>
+ \endverbatim
+ *   .
+ * .
+ * Possible keywords of cost functions defined in intension followed by their specific parameters:
+ * - >= \e cst \e delta to express soft binary constraint \f$x \geq y + cst\f$ with associated cost function \f$max( (y + cst - x \leq delta)?(y + cst - x):UB , 0 )\f$
+ * - > \e cst \e delta to express soft binary constraint \f$x > y + cst\f$ with associated cost function  \f$max( (y + cst + 1 - x \leq delta)?(y + cst + 1 - x):UB , 0 )\f$
+ * - <= \e cst \e delta to express soft binary constraint \f$x \leq y + cst\f$ with associated cost function  \f$max( (x - cst - y \leq delta)?(x - cst - y):UB , 0 )\f$
+ * - < \e cst \e delta to express soft binary constraint \f$x < y + cst\f$ with associated cost function  \f$max( (x - cst + 1 - y \leq delta)?(x - cst + 1 - y):UB , 0 )\f$
+ * - = \e cst \e delta to express soft binary constraint \f$x = y + cst\f$ with associated cost function  \f$(|y + cst - x| \leq delta)?|y + cst - x|:UB\f$
+ * - disj \e cstx \e csty \e penalty to express soft binary disjunctive constraint \f$x \geq y + csty \vee y \geq x + cstx\f$ with associated cost function \f$(x \geq y + csty \vee y \geq x + cstx)?0:penalty\f$
+ * - sdisj \e cstx \e csty \e xinfty \e yinfty \e costx \e costy to express a special disjunctive constraint with three implicit hard constraints \f$x \leq xinfty\f$ and \f$y \leq yinfty\f$ and \f$x < xinfty \wedge y < yinfty \Rightarrow (x \geq y + csty \vee y \geq x + cstx)\f$ and an additional cost function \f$((x = xinfty)?costx:0) + ((y= yinfty)?costy:0)\f$
+ * - Global cost functions using a dedicated propagator:
+ *     - clique \e 1 (\e nb_values (\e value)*)* to express a hard clique cut to restrict the number of variables taking their value into a given set of values (per variable) to at most \e 1 occurrence for all the variables (warning! it assumes also a clique of binary constraints already exists to forbid any two variables using both the restricted values)
+ *     - knapsack \e capacity (\e weight)* to express a reverse knapsack constraint (i.e., a linear constraint on 0/1 variables with >= operator) with capacity and weights are positive or negative integer coefficients (use negative numbers to express a linear constraint with <= operator)
+ *
+ * - Global cost functions using a flow-based propagator:
+ *     - salldiff var|dec|decbi \e cost to express a soft alldifferent constraint with either variable-based (\e var keyword) or decomposition-based (\e dec and \e decbi keywords) cost semantic with a given \e cost per violation (\e decbi decomposes into a binary cost function complete network)
+ *     - sgcc var|dec|wdec \e cost \e nb_values (\e value \e lower_bound \e upper_bound (\e shortage_weight \e excess_weight)?)* to express a soft global cardinality constraint with either variable-based (\e var keyword) or decomposition-based (\e dec keyword) cost semantic with a given \e cost per violation and for each value its lower and upper bound (if \e wdec then violation cost depends on each value shortage or excess weights)
+ *     - ssame \e cost \e list_size1 \e list_size2 (\e variable_index)* (\e variable_index)* to express a permutation constraint on two lists of variables of equal size (implicit variable-based cost semantic)
+ *     - sregular var|edit \e cost \e nb_states \e nb_initial_states (\e state)* \e nb_final_states (\e state)* \e nb_transitions (\e start_state \e symbol_value \e end_state)* to express a soft regular constraint with either variable-based (\e var keyword) or edit distance-based (\e edit keyword) cost semantic with a given \e cost per violation followed by the definition of a deterministic finite automaton with number of states, list of initial and final states, and list of state transitions where symbols are domain values
+ *     .
+ * - Global cost functions using a dynamic programming DAG-based propagator:
+ *     - sregulardp var \e cost \e nb_states \e nb_initial_states (\e state)* \e nb_final_states (\e state)* \e nb_transitions (\e start_state \e symbol_value \e end_state)* to express a soft regular constraint with a variable-based (\e var keyword) cost semantic with a given \e cost per violation followed by the definition of a deterministic finite automaton with number of states, list of initial and final states, and list of state transitions where symbols are domain values
+ *     - sgrammar|sgrammardp var|weight \e cost \e nb_symbols \e nb_values \e start_symbol \e nb_rules ((0 \e terminal_symbol \e value)|(1 \e nonterminal_in \e nonterminal_out_left \e nonterminal_out_right)|(2 \e terminal_symbol \e value \e weight)|(3 \e nonterminal_in \e nonterminal_out_left \e nonterminal_out_right \e weight))* to express a soft/weighted grammar in Chomsky normal form
+ *     - samong|samongdp var \e cost \e lower_bound \e upper_bound \e nb_values (\e value)* to express a soft among constraint to restrict the number of variables taking their value into a given set of values
+ *     - salldiffdp var \e cost to express a soft alldifferent constraint with variable-based (\e var keyword) cost semantic with a given \e cost per violation (decomposes into samongdp cost functions)
+ *     - sgccdp var \e cost \e nb_values (\e value \e lower_bound \e upper_bound)* to express a soft global cardinality constraint with variable-based (\e var keyword) cost semantic with a given \e cost per violation and for each value its lower and upper bound (decomposes into samongdp cost functions)
+ *     - max|smaxdp \e defCost \e nbtuples (\e variable \e value \e cost)* to express a weighted max cost function to find the maximum cost over a set of unary cost functions associated to a set of variables (by default, \e defCost if unspecified)
+ *     - MST|smstdp to express a spanning tree hard constraint where each variable is assigned to its parent variable index in order to build a spanning tree (the root being assigned to itself)
+ *     .
+ * - Global cost functions using a cost function network-based propagator:
+ *     - wregular \e nb_states \e nb_initial_states (\e state and cost)* \e nb_final_states (\e state and cost)* \e nb_transitions (\e start_state \e symbol_value \e end_state \e cost)* to express a weighted regular constraint with weights on initial states, final states, and transitions, followed by the definition of a deterministic finite automaton with number of states, list of initial and final states with their costs, and list of weighted state transitions where symbols are domain values
+ *     - walldiff hard|lin|quad \e cost to express a soft alldifferent constraint as a set of wamong hard constraint (\e hard keyword) or decomposition-based (\e lin and \e quad keywords) cost semantic with a given \e cost per violation
+ *     - wgcc hard|lin|quad \e cost \e nb_values (\e value \e lower_bound \e upper_bound)* to express a soft global cardinality constraint as either a hard constraint (\e hard keyword) or with decomposition-based (\e lin and \e quad keyword) cost semantic with a given \e cost per violation and for each value its lower and upper bound
+ *     - wsame hard|lin|quad \e cost to express a permutation constraint on two lists of variables of equal size (implicitly concatenated in the scope) using implicit decomposition-based cost semantic
+ *     - wsamegcc hard|lin|quad \e cost \e nb_values (\e value \e lower_bound \e upper_bound)* to express the combination of a soft global cardinality constraint and a permutation constraint
+ *     - wamong hard|lin|quad \e cost \e nb_values (\e value)* \e lower_bound \e upper_bound to express a soft among constraint to restrict the number of variables taking their value into a given set of values
+ *     - wvaramong hard \e cost \e nb_values (\e value)* to express a hard among constraint to restrict the number of variables taking their value into a given set of values to be equal to the last variable in the scope
+ *     - woverlap hard|lin|quad \e cost \e comparator \e righthandside  overlaps between two sequences of variables X, Y (i.e. set the fact that Xi and Yi take the same value (not equal to zero))
+ *     - wsum hard|lin|quad \e cost \e comparator \e righthandside to express a soft sum constraint with unit coefficients to test if the sum of a set of variables matches with a given comparator and right-hand-side value
+ *     - wvarsum hard \e cost \e comparator to express a hard sum constraint to restrict the sum to be \e comparator to the value of the last variable in the scope
+ *
+ *       Let us note <> the comparator, K the right-hand-side value associated to the comparator, and Sum the result of the sum over the variables. For each comparator, the gap is defined according to the distance as follows:
+ *       -	if <> is == : gap = abs(K - Sum)
+ *       -  if <> is <= : gap = max(0,Sum - K)
+ *       -  if <> is < : gap = max(0,Sum - K - 1)
+ *       -	if <> is != : gap = 1 if Sum != K and gap = 0 otherwise
+ *       -  if <> is > : gap = max(0,K - Sum + 1);
+ *       -	if <> is >= : gap = max(0,K - Sum);
+ *       .
+ *     .
+ * .
+ *
+ * \warning The decomposition of wsum and wvarsum may use an exponential size (sum of domain sizes).
+ * \warning  \e list_size1 and \e list_size2 must be equal in \e ssame.
+ * \warning  Cost functions defined in intention cannot be shared.
+ *
+ * \note More about network-based global cost functions can be found here https://metivier.users.greyc.fr/decomposable/
+ *
+ * Examples:
+ * - quadratic cost function \f$x0 * x1\f$ in extension with variable domains \f$\{0,1\}\f$ (equivalent to a soft clause \f$\neg x0 \vee \neg x1\f$): \code 2 0 1 0 1 1 1 1 \endcode
+ * - simple arithmetic hard constraint \f$x1 < x2\f$: \code 2 1 2 -1 < 0 0 \endcode
+ * - hard temporal disjunction\f$x1 \geq x2 + 2 \vee x2 \geq x1 + 1\f$: \code 2 1 2 -1 disj 1 2 UB \endcode
+ * - clique cut ({x0,x1,x2,x3}) on Boolean variables such that value 1 is used at most once: \code 4 0 1 2 3 -1 clique 1 1 1 1 1 1 1 1 1 \endcode
+ * - knapsack constraint (2 * x0 + 3 * x1 + 4 * x2 + 5 * x3 >= 10) on four Boolean 0/1 variables: \code 4 0 1 2 3 -1 knapsack 10 2 3 4 5 \endcode
+ * - soft_alldifferent({x0,x1,x2,x3}): \code 4 0 1 2 3 -1 salldiff var 1 \endcode
+ * - soft_gcc({x1,x2,x3,x4}) with each value \e v from 1 to 4 only appearing at least v-1 and at most v+1 times: \code 4 1 2 3 4 -1 sgcc var 1 4 1 0 2 2 1 3 3 2 4 4 3 5 \endcode
+ * - soft_same({x0,x1,x2,x3},{x4,x5,x6,x7}): \code 8 0 1 2 3 4 5 6 7 -1 ssame 1 4 4 0 1 2 3 4 5 6 7 \endcode
+ * - soft_regular({x1,x2,x3,x4}) with DFA (3*)+(4*): \code 4 1 2 3 4 -1 sregular var 1 2 1 0 2 0 1 3 0 3 0 0 4 1 1 4 1 \endcode
+ * - soft_grammar({x0,x1,x2,x3}) with hard cost (1000) producing well-formed parenthesis expressions: \code 4 0 1 2 3 -1 sgrammardp var 1000 4 2 0 6 1 0 0 0 1 0 1 2 1 0 1 3 1 2 0 3 0 1 0 0 3 1 \endcode
+ * - soft_among({x1,x2,x3,x4}) with hard cost (1000) if \f$\sum_{i=1}^4(x_i \in \{1,2\}) < 1\f$ or \f$\sum_{i=1}^4(x_i \in \{1,2\}) > 3\f$: \code 4 1 2 3 4 -1 samongdp var 1000 1 3 2 1 2 \endcode
+ * - soft max({x0,x1,x2,x3}) with cost equal to \f$\max_{i=0}^3((x_i!=i)?1000:(4-i))\f$: \code 4 0 1 2 3 -1 smaxdp 1000 4 0 0 4 1 1 3 2 2 2 3 3 1 \endcode
+ * - wregular({x0,x1,x2,x3}) with DFA (0(10)*2*): \code 4 0 1 2 3 -1 wregular 3 1 0 0 1 2 0 9 0 0 1 0 0 1 1 1 0 2 1 1 1 1 0 0 1 0 0 1 1 2 0 1 1 2 2 0 1 0 2 1 1 1 2 1 \endcode
+ * - wamong ({x1,x2,x3,x4}) with hard cost (1000) if \f$\sum_{i=1}^4(x_i \in \{1,2\}) < 1\f$ or \f$\sum_{i=1}^4(x_i \in \{1,2\}) > 3\f$: \code 4 1 2 3 4 -1 wamong hard 1000 2 1 2 1 3 \endcode
+ * - wvaramong ({x1,x2,x3,x4}) with hard cost (1000) if \f$\sum_{i=1}^3(x_i \in \{1,2\}) \neq x_4\f$: \code 4 1 2 3 4 -1 wvaramong hard 1000 2 1 2 \endcode
+ * - woverlap({x1,x2,x3,x4}) with hard cost (1000) if \f$\sum_{i=1}^2(x_i = x_{i+2}) \geq 1\f$: \code 4 1 2 3 4 -1 woverlap hard 1000 < 1\endcode
+ * - wsum ({x1,x2,x3,x4}) with hard cost (1000) if \f$\sum_{i=1}^4(x_i) \neq 4\f$: \code 4 1 2 3 4 -1 wsum hard 1000 == 4 \endcode
+ * - wvarsum ({x1,x2,x3,x4}) with hard cost (1000) if \f$\sum_{i=1}^3(x_i) \neq x_4\f$: \code 4 1 2 3 4 -1 wvarsum hard 1000 == \endcode
+ * .
+ *
+ * Latin Square 4 x 4 crisp CSP example in wcsp format:
+ * \code
+ latin4 16 4 8 1
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 0 1 2 3 -1 salldiff var 1
+ 4 4 5 6 7 -1 salldiff var 1
+ 4 8 9 10 11 -1 salldiff var 1
+ 4 12 13 14 15 -1 salldiff var 1
+ 4 0 4 8 12 -1 salldiff var 1
+ 4 1 5 9 13 -1 salldiff var 1
+ 4 2 6 10 14 -1 salldiff var 1
+ 4 3 7 11 15 -1 salldiff var 1
+ \endcode
+ *
+ * 4-queens binary weighted CSP example with random unary costs in wcsp format:
+ * \code
+ 4-WQUEENS 4 4 10 5
+ 4 4 4 4
+ 2 0 1 0 10
+ 0 0 5
+ 0 1 5
+ 1 0 5
+ 1 1 5
+ 1 2 5
+ 2 1 5
+ 2 2 5
+ 2 3 5
+ 3 2 5
+ 3 3 5
+ 2 0 2 0 8
+ 0 0 5
+ 0 2 5
+ 1 1 5
+ 1 3 5
+ 2 0 5
+ 2 2 5
+ 3 1 5
+ 3 3 5
+ 2 0 3 0 6
+ 0 0 5
+ 0 3 5
+ 1 1 5
+ 2 2 5
+ 3 0 5
+ 3 3 5
+ 2 1 2 0 10
+ 0 0 5
+ 0 1 5
+ 1 0 5
+ 1 1 5
+ 1 2 5
+ 2 1 5
+ 2 2 5
+ 2 3 5
+ 3 2 5
+ 3 3 5
+ 2 1 3 0 8
+ 0 0 5
+ 0 2 5
+ 1 1 5
+ 1 3 5
+ 2 0 5
+ 2 2 5
+ 3 1 5
+ 3 3 5
+ 2 2 3 0 10
+ 0 0 5
+ 0 1 5
+ 1 0 5
+ 1 1 5
+ 1 2 5
+ 2 1 5
+ 2 2 5
+ 2 3 5
+ 3 2 5
+ 3 3 5
+ 1 0 0 2
+ 1 1
+ 3 1
+ 1 1 0 2
+ 1 1
+ 2 1
+ 1 2 0 2
+ 1 1
+ 2 1
+ 1 3 0 2
+ 0 1
+ 2 1
+ \endcode
+ **/
+
+#ifdef BOOST
+class CFNStreamReader {
+
+public:
+    CFNStreamReader(istream& stream, WCSP* wcsp);
+    ~CFNStreamReader();
+
+    std::pair<int, string> getNextToken();
+    void skipOBrace(); // checks if next token is an opening brace and spits an error otherwise.
+    void skipCBrace(); // checks if next token is a  closing brace and spits an error otherwise.
+    void testJSONTag(const std::pair<int, string>& token, const string& tag);
+    void skipJSONTag(const string& tag);
+    void testAndSkipFirstOBrace();
+    bool isCost(const string& str);
+
+    // WCSP2 reading methods
+    Cost readHeader();
+    pair<unsigned, unsigned> readVariables();
+    unsigned readVariable(unsigned int varIndex);
+    int readDomain(std::vector<string>& valueNames);
+    int getValueIdx(int variableIdx, const string& token, int lineNumber);
+    void readScope(vector<int>& scope);
+    pair<unsigned, unsigned> readCostFunctions();
+    void readZeroAryCostFunction(bool all, Cost defaultCost);
+    void readNaryCostFunction(vector<int>& scope, bool all, Cost defaultCost);
+    void readArithmeticCostFunction();
+    void readGlobalCostFunction(vector<int>& scope, const std::string& globalCfnName, int line);
+
+    void generateGCFStreamFromTemplate(vector<int>& scope, const string& funcName, string GCFTemplate, stringstream& stream);
+
+    void generateGCFStreamSgrammar(vector<int>& scope, stringstream& stream);
+    void generateGCFStreamSsame(vector<int>& scope, stringstream& stream);
+
+    void readIntervalUnaryTable(int varIdx, vector<Value>& authorized);
+    std::vector<Cost> readFunctionCostTable(vector<int> scope, bool all, Cost defaultCost, Cost& minCost);
+    void enforceUB(Cost ub);
+
+    std::map<std::string, int> varNameToIdx;
+    std::vector<std::map<std::string, int>> varValNameToIdx;
+    std::map<std::string, std::vector<pair<string, std::vector<int>>>> tableShares;
+    vector<TemporaryUnaryConstraint> unaryCFs;
+
+private:
+    istream& iStream;
+    WCSP* wcsp;
+    bool getNextLine();
+    unsigned int lineCount;
+    string currentLine;
+    boost::char_separator<char> sep;
+    boost::tokenizer<boost::char_separator<char>>* tok;
+    boost::tokenizer<boost::char_separator<char>>::iterator tok_iter;
+    bool JSONMode;
+};
+
+CFNStreamReader::CFNStreamReader(istream& stream, WCSP* wcsp)
+    : iStream(stream)
+    , wcsp(wcsp)
+{
+    this->lineCount = 0;
+    this->JSONMode = false;
+    this->tok = nullptr;
+    this->sep = boost::char_separator<char>(" \n\f\r\t\":,", "{}[]");
+    Cost upperBound = readHeader();
+    if (ToulBar2::costThresholdS.size())
+        ToulBar2::costThreshold = wcsp->decimalToCost(ToulBar2::costThresholdS, 0);
+    if (ToulBar2::costThresholdPreS.size())
+        ToulBar2::costThresholdPre = wcsp->decimalToCost(ToulBar2::costThresholdPreS, 0);
+    unsigned nvar, nval;
+    tie(nvar, nval) = readVariables();
+    unsigned ncf, maxarity;
+    tie(ncf, maxarity) = readCostFunctions();
+
+    // all negCosts are collected. We should be fine enforcing the UB
+    enforceUB(upperBound);
+    if (ToulBar2::vnsOptimumS.size())
+        ToulBar2::vnsOptimum = wcsp->decimalToCost(ToulBar2::vnsOptimumS, 0) + wcsp->getNegativeLb();
+
+    // merge unary cost functions if they are on the same variable
+    vector<int> seen(nvar, -1);
+    vector<TemporaryUnaryConstraint> newunaryCFs;
+    for (unsigned int u = 0; u < unaryCFs.size(); u++) {
+        if (seen[unaryCFs[u].var->wcspIndex] == -1) {
+            seen[unaryCFs[u].var->wcspIndex] = newunaryCFs.size();
+            newunaryCFs.push_back(unaryCFs[u]);
+        } else {
+            for (unsigned int i = 0; i < unaryCFs[u].var->getDomainInitSize(); i++) {
+                if (newunaryCFs[seen[unaryCFs[u].var->wcspIndex]].costs[i] < wcsp->getUb()) {
+                    if (unaryCFs[u].costs[i] < wcsp->getUb())
+                        newunaryCFs[seen[unaryCFs[u].var->wcspIndex]].costs[i] += unaryCFs[u].costs[i];
+                    else
+                        newunaryCFs[seen[unaryCFs[u].var->wcspIndex]].costs[i] = wcsp->getUb();
+                }
+            }
+        }
+    }
+
+    unaryCFs = newunaryCFs;
+
+    if (ToulBar2::sortDomains) {
+        cout << "Error: cannot sort domains in preprocessing with CFN format (remove option -sortd)." << endl;
+        exit(EXIT_FAILURE);
+        //        if (maxarity > 2) {
+        //            cout << "Error: cannot sort domains in preprocessing with non-binary cost functions." << endl;
+        //            exit(EXIT_FAILURE);
+        //        } else {
+        //            ToulBar2::sortedDomains.clear();
+        //            for (unsigned int u = 0; u < unaryCFs.size(); u++) {
+        //                ToulBar2::sortedDomains[unaryCFs[u].var->wcspIndex] = unaryCFs[u].var->sortDomain(unaryCFs[u].costs);
+        //            }
+        //        }
+    }
+
+    for (auto& cf : unaryCFs) {
+        wcsp->postUnaryConstraint(cf.var->wcspIndex, cf.costs);
+    }
+
+    wcsp->sortConstraints();
+
+    if (ToulBar2::verbose >= 0)
+        cout << "Read " << nvar << " variables, with " << nval << " values at most, and " << ncf << " cost functions, with maximum arity " << maxarity << "." << endl;
+}
+
+// Reads a line. Skips comment lines starting with '#' and // too.
+bool CFNStreamReader::getNextLine()
+{
+    string line;
+    lineCount++;
+    std::getline(iStream, line);
+
+    while (line == "" || line.at(0) == '#') {
+        if (std::getline(iStream, line))
+            lineCount++;
+        else
+            return false;
+    }
+    size_t posJSONcomments = line.find("//");
+    if (posJSONcomments == string::npos) {
+        this->currentLine = line;
+        return true;
+    } else if (posJSONcomments != 0) {
+        this->currentLine = line.substr(0, posJSONcomments);
+        return true;
+    } else
+        return getNextLine(); // tail recurse
+}
+
+// Reads a token using lazily updated line by line reads
+std::pair<int, string> CFNStreamReader::getNextToken()
+{
+    if (tok != nullptr) {
+        if (tok_iter != tok->end()) {
+            string token = *tok_iter;
+            tok_iter = std::next(tok_iter);
+            return make_pair(lineCount, token);
+        } else {
+            delete tok;
+            tok = nullptr;
+            return getNextToken();
+        }
+    } else {
+        if (this->getNextLine()) {
+            tok = new boost::tokenizer<boost::char_separator<char>>(currentLine, sep);
+            tok_iter = tok->begin();
+            return getNextToken();
+        } else {
+            return make_pair(-1, "");
+        }
+    }
+}
+
+CFNStreamReader::~CFNStreamReader()
+{
+    // TODO clear vectors / maps
+}
+
+// Utilities: test opening and closing braces.
+bool inline isOBrace(const string& token) { return ((token == "{") || (token == "[")); }
+bool inline isCBrace(const string& token) { return ((token == "}") || (token == "]")); }
+
+inline void yellOBrace(const string& token, const int& l)
+{
+    if (!isOBrace(token)) {
+        cerr << "Error: expected a '{' or '[' instead of '" << token << "' at line " << l << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+inline void yellCBrace(const string& token, const int& l)
+{
+    if (!isCBrace(token)) {
+        cerr << "Error: expected a ']' or ']' instead of '" << token << "' at line " << l << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+// checks if the next token is an opening brace
+// and yells otherwise
+void CFNStreamReader::skipOBrace()
+{
+    int l;
+    string token;
+
+    std::tie(l, token) = this->getNextToken();
+    yellOBrace(token, l);
+}
+// checks if the next token is a closing brace
+// and yells otherwise
+void CFNStreamReader::skipCBrace()
+{
+    int l;
+    string token;
+
+    std::tie(l, token) = this->getNextToken();
+    yellCBrace(token, l);
+}
+
+// Tests if a read token is the expected (JSON) tag and yells otherwise.
+inline void CFNStreamReader::testJSONTag(const std::pair<int, string>& token, const string& tag)
+{
+    if (token.second != tag) {
+        cerr << "Error: expected '" << tag << "' instead of '" << token.second << "' at line " << token.first << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+// In JSON mode, checks is the next token is the expected (JSON) tag and yells otherwise.
+inline void CFNStreamReader::skipJSONTag(const string& tag)
+{
+    if (JSONMode) {
+        testJSONTag(this->getNextToken(), tag);
+    }
+}
+
+// Checks for the first internal opening brace.
+// If it is preceded by a "problem" tag, activates JSON tag checking.
+void CFNStreamReader::testAndSkipFirstOBrace()
+{
+    int l;
+    string token;
+
+    std::tie(l, token) = this->getNextToken();
+    if (token == "problem") {
+        JSONMode = true;
+        std::tie(l, token) = this->getNextToken();
+    }
+
+    if (!isOBrace(token)) {
+        cerr << "Error: expected a '{' or '[' instead of '" << token << "' at line " << l << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+// Tests if the token starts with a digit, '+, '-' or "." (is a Cost)
+bool CFNStreamReader::isCost(const string& str)
+{
+    // Test if the first char of a string is a decimal digit, point or +/- sign.
+    return (string("0123456789-+.").find(str[0]) != string::npos);
+}
+
+// Reads the problem header (problem name and global Bound) and returns the bound
+// Starts: at the beginning of the stream
+// Ends  : after the closing brace of the header
+Cost CFNStreamReader::readHeader()
+{
+    int lineNumber;
+    string token;
+
+    skipOBrace();
+    testAndSkipFirstOBrace(); // check if we are in JSON mode
+    skipJSONTag("name");
+    std::tie(lineNumber, token) = this->getNextToken();
+
+    // TODO pas de méthode WCSP pour écrire le nom du problème
+    if (ToulBar2::verbose >= 1)
+        cout << "Read problem: " << token << endl;
+
+    skipJSONTag("mustbe");
+    Cost pbBound;
+
+    std::tie(lineNumber, token) = this->getNextToken();
+    if ((token[0] == '<') || token[0] == '>') {
+
+        auto pos = token.find('.');
+        string integerPart = token.substr(1, token.find('.'));
+        string decimalPart;
+
+        if (pos == string::npos) {
+            ToulBar2::decimalPoint = 0;
+        } else {
+            decimalPart = token.substr(token.find('.') + 1);
+            ToulBar2::decimalPoint = decimalPart.size();
+        }
+
+        try {
+            if (pos != string::npos) {
+                pbBound = (std::stoll(integerPart) * (Cost)powl(10, decimalPart.size()));
+                pbBound += ((pbBound >= 0) ? std::stoll(decimalPart) : -std::stoll(decimalPart));
+            } else {
+                pbBound = std::stoll(integerPart);
+            }
+        } catch (const std::invalid_argument&) {
+            cerr << "Error: invalid global bound '" << token << "' at line " << lineNumber << endl;
+            exit(EXIT_FAILURE);
+        }
+    } else {
+        cerr << "Error: global bound '" << token << "' misses upper/lower bound comparator at line " << lineNumber << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    if (token[0] == '>') {
+        ToulBar2::costMultiplier *= -1.0;
+    }
+
+    if (ToulBar2::verbose >= 1)
+        cout << "Read bound: " << pbBound << " with precision " << ToulBar2::decimalPoint << endl;
+    skipCBrace();
+
+    return pbBound;
+}
+
+// Reads the variables and domains and creates them.
+// Starts: after the opening brace of the variables list.
+// Ends:   after the closing brace of the variables list.
+pair<unsigned, unsigned> CFNStreamReader::readVariables()
+{
+    skipJSONTag("variables");
+    // Check first opening brace
+    skipOBrace();
+
+    unsigned domsize;
+    unsigned maxdomsize = 0;
+    unsigned nVar = 0;
+    while ((domsize = readVariable(nVar)) != 0) {
+        maxdomsize = max(maxdomsize, domsize);
+        nVar++;
+    }
+    return make_pair(nVar, maxdomsize);
+}
+
+// Reads the description of the ith variable, creates it and returns the domain size (> 0 iff successful)
+// Starts: after the opening brace of all variables or closing brace of previous variable.
+// Ends:   after the closing brace of all variables or of the variable read otherwise.
+unsigned CFNStreamReader::readVariable(unsigned i)
+{
+    string varName;
+    int domainSize = 0;
+    vector<string> valueNames;
+
+    string token;
+    int lineNumber;
+    std::tie(lineNumber, token) = this->getNextToken();
+
+    if (isCBrace(token)) { // End of variable list
+        return 0;
+    }
+
+    // A domain or domain size is there: the variable has no name
+    // we create an integer name that cannot clash with user names
+    if (isOBrace(token) || isdigit(token[0])) {
+        varName = "x" + to_string(i);
+    } else {
+        varName = token;
+        std::tie(lineNumber, token) = this->getNextToken();
+    }
+    // This is a list of symbols, read it
+    if (isOBrace(token)) {
+        domainSize = readDomain(valueNames);
+    } else { // Just a domain size
+        try {
+            domainSize = stoi(token);
+            if (domainSize >= 0)
+                for (int ii = 0; ii < domainSize; ii++)
+                    valueNames.push_back(to_string(ii));
+        } catch (std::invalid_argument&) {
+            cerr << "Error: expected domain or domain size instead of '" << token << "' at line " << lineNumber << endl;
+        }
+    }
+
+    unsigned int  varIndex = wcsp->getVarIndex(varName);
+    bool newvar = (varIndex == wcsp->numberOfVariables());
+    if (ToulBar2::verbose >= 1)
+        cout << "Variable " << varName << ((newvar)?" new ":" known ") << "with domain size " << domainSize << " read";
+    // Create the toulbar2 variable and store its name in the variable map.
+    if (newvar) {
+        varIndex = ((domainSize >= 0) ? this->wcsp->makeEnumeratedVariable(varName, 0, domainSize - 1) : this->wcsp->makeIntervalVariable(varName, 0, -domainSize - 1));
+    }
+    if (ToulBar2::verbose >= 1)
+        cout  << " # " << varIndex << endl;
+    if (not varNameToIdx.insert(std::pair<string, int>(varName, varIndex)).second) {
+        cerr << "Error: variable name '" << varName << "' not unique at line " << lineNumber << endl;
+        exit(EXIT_FAILURE);
+    }
+    // set the value names (if any) in the Variable.values map
+    varValNameToIdx.resize(max((size_t) varIndex + 1, varValNameToIdx.size() + 1));
+    assert(varValNameToIdx.size() >= varIndex + 1);
+    for (unsigned int ii = 0; ii < valueNames.size(); ++ii) {
+        if (not varValNameToIdx[varIndex].insert(std::pair<string, int>(valueNames[ii], ii)).second) {
+            cerr << "Error: duplicated value name '" << valueNames[ii] << "' for variable '" << wcsp->getName(varIndex) << "'' at line " << lineNumber << endl;
+            exit(EXIT_FAILURE);
+        }
+    }
+    if (newvar) {
+        for (unsigned int ii = 0; ii < valueNames.size(); ++ii)
+            wcsp->addValueName(varIndex, valueNames[ii]);
+    } else {
+        if (((EnumeratedVariable *)wcsp->getVar(varIndex))->getDomainInitSize() != (unsigned int) domainSize) {
+            cerr << "Error: same variable has two different domain sizes " << ((EnumeratedVariable *)wcsp->getVar(varIndex))->getDomainInitSize() << ", " << domainSize << "' for variable '" << wcsp->getName(varIndex) << "'' at line " << lineNumber << endl;
+            exit(EXIT_FAILURE);
+        }
+        for (unsigned int ii = 0; ii < valueNames.size(); ++ii) {
+            if (wcsp->getVar(varIndex)->getValueName(ii) != valueNames[ii]) {
+                cerr << "Error: same variable has two different domains " << valueNames[ii] << "' for variable '" << wcsp->getName(varIndex) << "'' at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            }
+        }
+    }
+
+    return domainSize;
+}
+
+// Reads a domain defined as a set of symbolic values in the valueNames vector and returns domain size.
+// Starts: after the domain opening brace has been read.
+// Ends:   after the domain closing brace has been read.
+int CFNStreamReader::readDomain(std::vector<string>& valueNames)
+{
+    int l;
+    string token;
+    std::tie(l, token) = this->getNextToken();
+
+    while (!isCBrace(token)) {
+        if (isdigit(token[0])) { // not a symbol !
+            cerr << "Error: value name '" << token << "' starts with a digit at line " << l << endl;
+            exit(EXIT_FAILURE);
+        } else {
+            valueNames.push_back(token);
+        }
+        std::tie(l, token) = this->getNextToken();
+    }
+    return valueNames.size();
+}
+// Reads list of authorized values for a unary cost function over an interval variable
+void CFNStreamReader::readIntervalUnaryTable(int varIdx, vector<Value>& authorized)
+{
+    int lineNumber;
+    string token;
+
+    tie(lineNumber, token) = this->getNextToken();
+    while (!isCBrace(token)) {
+        unsigned int valueIdx = getValueIdx(varIdx, token, lineNumber);
+        authorized.push_back(valueIdx);
+
+        tie(lineNumber, token) = this->getNextToken();
+        Cost cost = wcsp->decimalToCost(token, lineNumber);
+        if (cost != MIN_COST) {
+            cerr << "Error: Unary cost function with non zero non default cost at line " << lineNumber << endl;
+            exit(EXIT_FAILURE);
+        }
+    }
+}
+
+// Reads a cost function table for the scope given.
+// If all is set, a lexicographically ordered list of costs is expected.
+// ELse, a list of tuples with their cost is expectd and all other tuples get the defaultCost
+std::vector<Cost> CFNStreamReader::readFunctionCostTable(vector<int> scope, bool all, Cost defaultCost, Cost& minCost)
+{
+    int lineNumber;
+    string token;
+    minCost = MAX_COST;
+
+    if (CUT(defaultCost, wcsp->getUb()) && (defaultCost < MEDIUM_COST * wcsp->getUb()) && wcsp->getUb() < (MAX_COST / MEDIUM_COST))
+        defaultCost *= MEDIUM_COST;
+
+    // Create a vector filled with defaultCost values
+    std::vector<Cost> costVector;
+    long unsigned int costVecSize = 1;
+    for (auto i : scope) {
+        costVecSize *= wcsp->getDomainInitSize(i);
+    }
+    costVector.resize(costVecSize);
+    fill(costVector.begin(), costVector.end(), defaultCost);
+
+    std::tie(lineNumber, token) = this->getNextToken();
+    if (!all) { // will be a tuple:cost table
+        int arity = scope.size();
+        int scopeIdx = 0; // position in the scope
+        int tableIdx = 0; // position in the cost table
+        unsigned long int nbCostInserted = 0;
+
+        while (!isCBrace(token)) {
+            // if we have read a full tuple and cost
+            if (scopeIdx == arity) {
+                Cost cost = wcsp->decimalToCost(token, lineNumber);
+                if (CUT(cost, wcsp->getUb()) && (cost < MEDIUM_COST * wcsp->getUb()) && wcsp->getUb() < (MAX_COST / MEDIUM_COST))
+                    cost *= MEDIUM_COST;
+                // the same tuple has already been defined.
+                if (costVector[tableIdx] != defaultCost) {
+                    cerr << "Error: tuple on scope [ ";
+                    for (int i : scope)
+                        cout << i << " ";
+                    cout << "] with cost " << cost << " redefined at line " << lineNumber << endl;
+                    exit(EXIT_FAILURE);
+                } else {
+                    costVector[tableIdx] = cost;
+                }
+                nbCostInserted++;
+                minCost = min(cost, minCost);
+            } else {
+                // striding in the costs array
+                if (scopeIdx != 0) {
+                    tableIdx *= wcsp->getDomainInitSize(scope[scopeIdx]);
+                }
+                unsigned int valueIdx = getValueIdx(scope[scopeIdx], token, lineNumber);
+                assert(valueIdx >= 0 && valueIdx < wcsp->getDomainInitSize(scope[scopeIdx]));
+                tableIdx += valueIdx;
+            }
+            // If we just finished a tuple reset indices
+            if (scopeIdx == arity) {
+                scopeIdx = tableIdx = 0;
+            } else {
+                scopeIdx++;
+            }
+            std::tie(lineNumber, token) = this->getNextToken();
+        }
+
+        if (nbCostInserted < costVecSize) // there are some defaultCost remaining
+            minCost = min(defaultCost, minCost);
+    }
+    // all is true: we expect a full costs list
+    else {
+        unsigned int tableIdx = 0;
+        while (tableIdx < costVecSize) {
+            Cost cost = wcsp->decimalToCost(token, lineNumber);
+
+            if (CUT(cost, wcsp->getUb()) && (cost < MEDIUM_COST * wcsp->getUb()) && wcsp->getUb() < (MAX_COST / MEDIUM_COST))
+                cost *= MEDIUM_COST;
+
+            minCost = min(cost, minCost);
+
+            costVector[tableIdx] = cost;
+            tableIdx++;
+
+            std::tie(lineNumber, token) = this->getNextToken();
+        }
+        if (tableIdx != costVecSize) {
+            cerr << "Error: incorrect number of costs in cost table ending at line " << lineNumber << endl;
+        }
+    }
+
+    // make all costs non negative and remember the shift
+    for (Cost& c : costVector) {
+        c -= minCost;
+    }
+
+    wcsp->negCost -= minCost;
+    skipCBrace();
+
+    //    for (size_t i = 0; i < costVector.size(); i++)
+    //       cout << i << " " << costVector[i] << endl ;
+
+    return costVector;
+}
+
+// bound is the raw bound from the header (unshifted, unscaled)
+void CFNStreamReader::enforceUB(Cost bound)
+{
+
+    Cost shifted = bound + (wcsp->negCost / ToulBar2::costMultiplier);
+    if (ToulBar2::costMultiplier < 0.0)
+        shifted = -shifted; // shifted unscaled upper bound
+
+    if (shifted <= (MAX_COST - wcsp->negCost) / fabs(ToulBar2::costMultiplier))
+        bound = (bound * ToulBar2::costMultiplier) + wcsp->negCost;
+    else {
+        cerr << "Error: bound generates Cost overflow with -C multiplier = " << ToulBar2::costMultiplier << " ( " << bound << " " << wcsp->negCost << " )" << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    // if the shifted/scaled bound is less than zero, we equivalently set it to zero
+    if (shifted < MIN_COST)
+        bound = MIN_COST;
+    if (ToulBar2::externalUB.length() != 0) {
+        bound = min(bound, wcsp->decimalToCost(ToulBar2::externalUB, 0) + wcsp->negCost);
+    }
+    if (ToulBar2::deltaUbS.length() != 0) {
+        ToulBar2::deltaUbAbsolute = max(MIN_COST, wcsp->decimalToCost(ToulBar2::deltaUbS, 0));
+        ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(bound, wcsp->getUb())));
+        if (ToulBar2::deltaUb > MIN_COST) {
+            // as long as a true certificate as not been found we must compensate for the deltaUb in CUT
+            bound += ToulBar2::deltaUb;
+        }
+    }
+
+    wcsp->updateUb(bound);
+}
+
+// Returns the index of the value name for the given variable
+int CFNStreamReader::getValueIdx(int variableIdx, const string& token, int lineNumber)
+{
+    if (not isdigit(token[0])) {
+        std::map<std::string, int>::iterator it;
+
+        if ((it = varValNameToIdx[variableIdx].find(token)) != varValNameToIdx[variableIdx].end()) {
+            return it->second;
+        } else {
+            cerr << "Error: value name '" << token << "' not in the domain of variable '" << wcsp->getName(variableIdx) << "' at line " << lineNumber << endl;
+            exit(EXIT_FAILURE);
+        }
+    } else {
+        int valueIdx = -1;
+        try {
+            valueIdx = stoi(token);
+        } catch (std::invalid_argument&) {
+            cerr << "Error: value '" << token << "' is not a proper name/index for variable " << wcsp->getName(variableIdx) << " at line " << lineNumber << endl;
+            exit(EXIT_FAILURE);
+        }
+        if (valueIdx < 0 || (unsigned)valueIdx >= wcsp->getDomainInitSize(variableIdx)) {
+            cerr << "Error: value '" << token << "' out of range of variable " << wcsp->getName(variableIdx) << " at line " << lineNumber << endl;
+            exit(EXIT_FAILURE);
+        }
+        return valueIdx;
+    }
+}
+
+// Reads a scope.
+// Starts: after the opening brace of the scope.
+// Ends:   after the closing brace of the scope.
+void CFNStreamReader::readScope(vector<int>& scope)
+{
+    int lineNumber;
+    string token;
+
+    std::tie(lineNumber, token) = this->getNextToken();
+    while (!isCBrace(token)) {
+        // It's a name, convert to index
+        if (not isdigit(token[0])) {
+            map<string, int>::iterator it;
+            if ((it = varNameToIdx.find(token)) != varNameToIdx.end()) {
+                scope.push_back(it->second);
+            } else {
+                cerr << "Error: unknown variable with name '" << token << "' at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            }
+        } else {
+            int varIdx = -1;
+            try {
+                varIdx = stoi(token);
+            } catch (std::invalid_argument&) {
+                cerr << "Error: not a variable name or index " << varIdx << " at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            }
+            if (varIdx < 0 || (unsigned)varIdx >= wcsp->numberOfVariables()) {
+                cerr << "Error: unknown variable index " << varIdx << " at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            } else {
+                scope.push_back(varIdx);
+            }
+        }
+        // prepare for next iteration (will ultimately read final CBrace)
+        std::tie(lineNumber, token) = this->getNextToken();
+    }
+}
+// Reads all cost functions.
+// Starts: after the opening brace of all cost functions.
+// Ends:   at the end of file or after the closing brace of the problem.
+pair<unsigned, unsigned> CFNStreamReader::readCostFunctions()
+{
+    int lineNumber;
+    string token;
+    unsigned nbcf = 0;
+    unsigned maxarity = 0;
+
+    skipJSONTag("functions");
+    skipOBrace();
+
+    std::tie(lineNumber, token) = this->getNextToken(); // start the token pump!
+
+    while ((lineNumber != -1) && !isCBrace(token)) {
+        //  Read function name (if any) and move after next OBrace
+        string funcName;
+        if (!isOBrace(token)) {
+            funcName = token;
+            skipOBrace();
+        }
+        // Reads a scope
+        skipJSONTag("scope");
+        skipOBrace();
+
+        //  Read variable names/indices until CBrace
+        vector<int> scope;
+        readScope(scope);
+        maxarity = max(maxarity, static_cast<unsigned>(scope.size()));
+        nbcf++;
+        bool isUnaryInterval = (scope.size() == 1 && !wcsp->getVar(scope[0])->enumerated()); // Unary over interval variable are special
+        bool isShared = false;
+
+        // Test if function is shared
+        if (funcName.size() != 0) {
+            isShared = (tableShares.find(funcName) != tableShares.end());
+        } else { // If no function name, generate one
+            funcName = "f(";
+            for (const auto& var : scope) {
+                funcName += this->wcsp->getVar(var)->getName();
+                funcName += ",";
+            }
+            funcName[funcName.size() - 1] = ')';
+        }
+
+        if (ToulBar2::verbose >= 1)
+            cout << "Cost function header for " << funcName << " read" << endl;
+
+        //  Test if a defaultCost is there (and tuples will be expected later)
+        bool skipDefaultCost = false;
+        Cost defaultCost = MIN_COST;
+        std::tie(lineNumber, token) = this->getNextToken();
+
+        if (JSONMode) {
+            if (token == "defaultcost") {
+                // read the defaultCost
+                std::tie(lineNumber, token) = this->getNextToken();
+            } else {
+                skipDefaultCost = true;
+            }
+        } else {
+            skipDefaultCost = !isCost(token);
+        }
+
+        if (!skipDefaultCost) { // Set default cost and skip to next token
+            defaultCost = wcsp->decimalToCost(token, lineNumber);
+            std::tie(lineNumber, token) = this->getNextToken();
+        }
+
+        if (isUnaryInterval && defaultCost == MIN_COST) {
+            cerr << "Error: unary function " << funcName << " over an interval variable must have non zero default cost at line " << lineNumber << endl;
+            exit(EXIT_FAILURE);
+        }
+
+        // Discriminate between global/shared and table cost functions
+        bool isGlobal = false;
+        bool isReused = false;
+
+        if (JSONMode) {
+            if (token == "type") { // This is a global/arithmetic
+                isGlobal = true;
+                // read type
+                std::tie(lineNumber, token) = this->getNextToken();
+                skipJSONTag("params");
+                skipOBrace();
+                // ready to read params (after OBrace)
+            } else if (token != "costs") {
+                cerr << "Error: expected tag 'costs' instead of '" << token << "' at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            } else { // cost table: can be reused or explicit
+                std::tie(lineNumber, token) = this->getNextToken();
+                isReused = !isOBrace(token); // no brace, so reused
+                if (isReused) {
+                    if (!skipDefaultCost) {
+                        cerr << "Error: function " << funcName << " sharing cost tables with " << token << " cannot have default costs at line " << lineNumber << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    tableShares[token].push_back(make_pair(funcName, scope));
+                    skipCBrace();
+                }
+            }
+        } else if (!isOBrace(token)) { // Non JSON. No OBrace means reused or global (type)
+            string token2;
+            int lineNumber2;
+            std::tie(lineNumber2, token2) = this->getNextToken();
+            if (isOBrace(token2)) { // parameters are there, so global
+                isGlobal = true;
+            } else if (!isCBrace(token2)) { // reused, nothing expected after the shared fname
+                cerr << "Error: expected closing brace after type at line " << lineNumber2 << endl;
+            } else {
+                if (!skipDefaultCost) {
+                    cerr << "Error: function " << funcName << " sharing cost tables with " << token << " cannot have default costs at line " << lineNumber << endl;
+                    exit(EXIT_FAILURE);
+                }
+                isReused = true;
+                tableShares[token].push_back(make_pair(funcName, scope));
+            }
+        }
+
+        // Table cost function
+        if (!isGlobal && !isReused) {
+            if (scope.size() == 0) {
+                this->readZeroAryCostFunction(skipDefaultCost, defaultCost);
+            } else if (scope.size() > NARYPROJECTIONSIZE) {
+                this->readNaryCostFunction(scope, skipDefaultCost, defaultCost);
+            } else {
+                Cost minCost;
+                vector<Cost> costs;
+                vector<Value> authorized; // list of authorized values for Interval Unary
+
+                if (scope.size() != 1 || wcsp->getVar(scope[0])->enumerated())
+                    costs = this->readFunctionCostTable(scope, skipDefaultCost, defaultCost, minCost);
+                else
+                    readIntervalUnaryTable(scope[0], authorized);
+
+                switch (scope.size()) {
+                case 1:
+                    if (wcsp->getVar(scope[0])->enumerated()) {
+                        TemporaryUnaryConstraint unarycf;
+                        unarycf.var = (EnumeratedVariable*)wcsp->getVar(scope[0]);
+                        assert(costs.size() == unarycf.var->getDomainInitSize());
+                        unarycf.costs = costs;
+                        unaryCFs.push_back(unarycf);
+                        if (isShared) {
+                            unsigned int domSize = wcsp->getDomainInitSize(scope[0]);
+                            for (const auto& ns : tableShares[funcName]) {
+                                if ((ns.second.size() == 1) && wcsp->getVar(ns.second[0])->enumerated() && wcsp->getDomainInitSize(ns.second[0]) == domSize) {
+                                    TemporaryUnaryConstraint unarycf;
+                                    unarycf.var = (EnumeratedVariable*)wcsp->getVar(ns.second[0]);
+                                    assert(costs.size() == unarycf.var->getDomainInitSize());
+                                    unarycf.costs = costs;
+                                    unaryCFs.push_back(unarycf);
+                                    //this->wcsp->postUnaryConstraint(s[0], costs);
+                                    wcsp->negCost -= minCost;
+                                    // TODO must remember name too
+                                } else {
+                                    cerr << "Error: cannot share cost function '" << funcName << "' with '" << ns.first << " on scope { ";
+                                    for (auto v : ns.second)
+                                        cerr << wcsp->getVar(v)->getName() << " ";
+                                    cerr << "}" << endl;
+                                    exit(EXIT_FAILURE);
+                                }
+                            }
+                        }
+                    } else {
+                        wcsp->postUnaryConstraint(scope[0], authorized.data(), authorized.size(), defaultCost);
+                    }
+                    break;
+                case 2: {
+                    int cfIdx = this->wcsp->postBinaryConstraint(scope[0], scope[1], costs);
+                    this->wcsp->getCtr(cfIdx)->setName(funcName);
+                    if (isShared) {
+                        unsigned int domSize0 = wcsp->getDomainInitSize(scope[0]);
+                        unsigned int domSize1 = wcsp->getDomainInitSize(scope[1]);
+                        for (const auto& ns : tableShares[funcName]) {
+                            if ((ns.second.size() == 2) && wcsp->getDomainInitSize(ns.second[0]) == domSize0 && wcsp->getDomainInitSize(ns.second[1]) == domSize1) {
+                                cfIdx = this->wcsp->postBinaryConstraint(ns.second[0], ns.second[1], costs);
+                                wcsp->negCost -= minCost;
+                                this->wcsp->getCtr(cfIdx)->setName(ns.first);
+                            } else {
+                                cerr << "Error: cannot share cost function '" << funcName << "' with '" << ns.first << "' on scope { ";
+                                for (auto v : ns.second)
+                                    cerr << wcsp->getVar(v)->getName() << " ";
+                                cerr << "}" << endl;
+                                exit(EXIT_FAILURE);
+                            }
+                        }
+                    }
+                } break;
+                case 3: {
+                    int cfIdx = this->wcsp->postTernaryConstraint(scope[0], scope[1], scope[2], costs);
+                    wcsp->getCtr(cfIdx)->setName(funcName);
+                    if (isShared) {
+                        unsigned int domSize0 = wcsp->getDomainInitSize(scope[0]);
+                        unsigned int domSize1 = wcsp->getDomainInitSize(scope[1]);
+                        unsigned int domSize2 = wcsp->getDomainInitSize(scope[2]);
+                        for (const auto& ns : tableShares[funcName]) {
+                            if ((ns.second.size() == 3) && wcsp->getDomainInitSize(ns.second[0]) == domSize0 && wcsp->getDomainInitSize(ns.second[1]) == domSize1 && wcsp->getDomainInitSize(ns.second[2]) == domSize2) {
+                                cfIdx = this->wcsp->postTernaryConstraint(ns.second[0], ns.second[1], ns.second[2], costs);
+                                wcsp->negCost -= minCost;
+                                wcsp->getCtr(cfIdx)->setName(ns.first);
+                            } else {
+                                cerr << "Error: cannot share cost function '" << funcName << "' on scope { ";
+                                for (auto v : ns.second)
+                                    cerr << wcsp->getVar(v)->getName() << " ";
+                                cerr << "}" << endl;
+                                exit(EXIT_FAILURE);
+                            }
+                        }
+                    }
+                } break;
+                }
+            }
+        } else if (isReused) {
+            if ((scope.size() <= 1) || (scope.size() > NARYPROJECTIONSIZE) || isGlobal) {
+                cerr << "Error: only unary, binary and ternary cost functions can share cost tables for '" << funcName << " at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            }
+        } else if (isGlobal) {
+            this->readGlobalCostFunction(scope, token, lineNumber);
+        }
+        std::tie(lineNumber, token) = this->getNextToken();
+    } // end of while (token != closing braces = EOF)
+
+    return make_pair(nbcf, maxarity);
+}
+
+// Reads a 0ary function.
+// Starts: after the cost table OBrace
+// Ends:   after the function CBrace
+void CFNStreamReader::readZeroAryCostFunction(bool all, Cost defaultCost)
+{
+    string token;
+    int lineNumber;
+
+    std::tie(lineNumber, token) = this->getNextToken();
+    Cost zeroAryCost = 0;
+
+    if (!isCBrace(token)) { // We have a cost
+        zeroAryCost = wcsp->decimalToCost(token, lineNumber);
+        skipCBrace();
+    } else {
+        if (all) { // We should have a cost
+            cerr << "Error: no cost or default cost given for 0 arity function at line " << lineNumber << endl;
+            exit(EXIT_FAILURE);
+        } else
+            zeroAryCost = defaultCost;
+    }
+    if (zeroAryCost < 0) {
+        wcsp->negCost -= zeroAryCost;
+        zeroAryCost = 0;
+    }
+    wcsp->increaseLb(zeroAryCost);
+    skipCBrace(); // read final function CBrace
+}
+
+// Reads a Nary cost function
+// Starts:
+// Ends  :
+void CFNStreamReader::readNaryCostFunction(vector<int>& scope, bool all, Cost defaultCost)
+{
+    int lineNumber;
+    string token;
+    Cost minCost = MAX_COST;
+
+    // Compute the cardinality of the cartesian product as unsigned long and floating point (log)
+    // the unsigned long may overflow but all tuples cannot be available in this case
+    long double logCard = 0.0;
+    unsigned long card = 1;
+    for (auto i : scope) {
+        logCard += log(wcsp->getDomainInitSize(i));
+        card *= wcsp->getDomainInitSize(i);
+    }
+
+    if (CUT(defaultCost, wcsp->getUb()) && (defaultCost < MEDIUM_COST * wcsp->getUb()) && wcsp->getUb() < (MAX_COST / MEDIUM_COST))
+        defaultCost *= MEDIUM_COST;
+
+    unsigned int arity = scope.size();
+    Tuple tup(arity);
+    map<Tuple, Cost> costFunction;
+    unsigned long int nbTuples = 0;
+    int scopeArray[arity];
+    for (unsigned int i = 0; i < scope.size(); i++) {
+        scopeArray[i] = scope[i];
+    }
+
+    // Start reading
+    std::tie(lineNumber, token) = this->getNextToken();
+    if (not all) {
+        unsigned int scopeIdx = 0; // Index of the cost table tuple
+        while (!isCBrace(token)) {
+            // We have read a full tuple: finish the tuple
+            if (scopeIdx == arity) {
+                Cost cost = wcsp->decimalToCost(token, lineNumber);
+                if (CUT(cost, wcsp->getUb()) && (cost < MEDIUM_COST * wcsp->getUb()) && wcsp->getUb() < (MAX_COST / MEDIUM_COST))
+                    cost *= MEDIUM_COST;
+
+                if (not costFunction.insert(pair<Tuple, Cost>(tup, cost)).second) {
+                    cerr << "Error: tuple on scope [ ";
+                    for (int i : scope)
+                        cout << i << " ";
+                    cout << "] with cost " << cost << " redefined at line " << lineNumber << endl;
+                    exit(EXIT_FAILURE);
+                } else {
+                    nbTuples++;
+                    minCost = min(cost, minCost);
+                }
+            } else {
+                unsigned int valueIdx = getValueIdx(scope[scopeIdx], token, lineNumber);
+                assert(valueIdx >= 0 && valueIdx < wcsp->getDomainInitSize(scope[scopeIdx]));
+                tup[scopeIdx] = valueIdx; // fill Tuple
+            }
+            scopeIdx = ((scopeIdx == arity) ? 0 : scopeIdx + 1);
+            std::tie(lineNumber, token) = this->getNextToken();
+        }
+        // Is there any remaining default cost (either too many tuples or less than we need)
+        if ((logCard > log(std::numeric_limits<unsigned long>::max())) || nbTuples < card) {
+            minCost = min(minCost, defaultCost);
+        }
+
+        int naryIndex = this->wcsp->postNaryConstraintBegin(scopeArray, arity, defaultCost - minCost, nbTuples);
+        for (auto it = costFunction.begin(); it != costFunction.end(); ++it) {
+            this->wcsp->postNaryConstraintTuple(naryIndex, it->first, it->second - minCost); // For each tuple
+        }
+        this->wcsp->postNaryConstraintEnd(naryIndex);
+    }
+    // all tuples in lexico order
+    else {
+        if (ToulBar2::verbose >= 3) {
+            cout << "read nary cost function on ";
+            for (unsigned int i = 0; i < arity; i++) {
+                cout << scope[i] << " ";
+            }
+            cout << endl;
+        }
+
+        int cfIndex = this->wcsp->postNaryConstraintBegin(scopeArray, arity, MIN_COST, LONGLONG_MAX);
+        NaryConstraint* nctr = (NaryConstraint*)this->wcsp->getCtr(cfIndex);
+        Cost cost;
+        vector<Cost> costs;
+
+        // Read all costs
+        while (!isCBrace(token)) {
+            cost = wcsp->decimalToCost(token, lineNumber);
+            costs.push_back(cost);
+            minCost = min(minCost, cost);
+            nbTuples++;
+            std::tie(lineNumber, token) = this->getNextToken();
+        }
+
+        // Test if all tuples have been read
+        if ((logCard > log(std::numeric_limits<unsigned long>::max())) || nbTuples < card) {
+            cerr << "Error : incorrect number of tuples for scope : ";
+            for (unsigned int i = 0; i < arity; i++) {
+                cout << scope[i] << " ";
+            }
+            cout << endl;
+            exit(EXIT_FAILURE);
+        }
+
+        int j = 0;
+        nctr->firstlex();
+        while (nctr->nextlex(tup, cost)) {
+            this->wcsp->postNaryConstraintTuple(cfIndex, tup, costs[j]);
+            j++;
+        }
+        if (ToulBar2::verbose >= 3)
+            cout << "read arity " << arity << " table costs." << endl;
+        this->wcsp->postNaryConstraintEnd(nctr->wcspIndex);
+    }
+    wcsp->negCost -= minCost;
+    skipCBrace(); // Function final CBrace read.
+}
+
+// Reads a global/arithmetic cost function
+// Starts: after the OBrace of parameters
+// Ends:
+void CFNStreamReader::readGlobalCostFunction(vector<int>& scope, const string& funcName, int line)
+{
+    unsigned int arity = scope.size();
+
+    map<string, string> GCFTemplates = {
+        { "clique", ":rhs:N:values:[v+]S" },
+        { "knapsack", ":capacity:N:weights:[N]S" },
+        { "salldiff", ":metric:K:cost:c" },
+        { "sgcc", ":metric:K:cost:c:bounds:[vNN]+" }, // Read first keyword then special case processing
+        { "ssame", "SPECIAL" }, // Special case processing
+        { "sregular", ":metric:K:cost:c:nb_states:N:starts:[N]+:ends:[N]+:transitions:[NvN]+" },
+        { "sregulardp", ":metric:K:cost:C:nb_states:N:starts:[N]+:ends:[N]+:transitions:[NvN]+" },
+        { "sgrammar", "SPECIAL" }, // Special case processing
+        { "sgrammardp", "SPECIAL" }, // Special case processing
+        { "samong", ":metric:K:cost:c:min:N:max:N:values:[v]+" },
+        { "samongdp", ":metric:K:cost:c:min:N:max:N:values:[v]+" },
+        { "salldiffdp", ":metric:K:cost:c" },
+        { "sgccdp", ":metric:K:cost:c:bounds:[vNN]+" },
+        { "max", ":defaultcost:c:tuples:[Vvc]+" },
+        { "smaxdp", ":defaultcost:c:tuples:[Vvc]+" },
+        { "MST", "" },
+        { "smstdp", "" },
+        { "wregular", ":nb_states:N:starts:[NC]+:ends:[NC]+:transitions:[NvNC]+" },
+        { "walldiff", ":metric:K:cost:c" },
+        { "wgcc", ":metric:K:cost:c:bounds:[vNN]+" },
+        { "wsame", ":metric:K:cost:c" },
+        { "wsamegcc", ":metric:K:cost:c:bounds:[vNN]+" },
+        { "wamong", ":metric:K:cost:c:values:[v]+:min:N:max:N" },
+        { "wvaramong", ":metric:K:cost:c:values:[v]+" },
+        { "woverlap", ":metric:K:cost:c:comparator:K:to:N" },
+        { "wsum", ":metric:K:cost:c:comparator:K:to:N" },
+        { "wvarsum", ":metric:K:cost:c:comparator:K" }
+    };
+
+    auto it = GCFTemplates.find(funcName);
+    if (it != GCFTemplates.end()) {
+        // Reads function using template and generates the corresponding stream
+        stringstream paramsStream;
+
+        this->generateGCFStreamFromTemplate(scope, funcName, GCFTemplates[funcName], paramsStream);
+
+        int scopeArray[arity];
+        for (unsigned int i = 0; i < arity; i++) {
+            scopeArray[i] = scope[i];
+        }
+
+        if (funcName[0] == 'w') { // decomposable
+            DecomposableGlobalCostFunction::FactoryDGCF(funcName, arity, scopeArray,
+                paramsStream, false)
+                ->addToCostFunctionNetwork(this->wcsp);
+        } else if (funcName == "clique") {
+            string ps = paramsStream.str();
+            if (ps.size() > 1 && ps[0] == '1' && ps[1] == ' ')
+                this->wcsp->postCliqueConstraint(scopeArray, arity, paramsStream);
+            else {
+                cerr << "Error: the clique global constraint does not accept RHS different from 1 for now at line" << line << endl;
+                exit(EXIT_FAILURE);
+            }
+        } else if (funcName == "knapsack") {
+            string ps = paramsStream.str();
+            this->wcsp->postKnapsackConstraint(scopeArray, arity, paramsStream);
+        } else { // monolithic
+            int nbconstr; // unused int for pointer ref
+            this->wcsp->postGlobalConstraint(scopeArray, arity, funcName, paramsStream, &nbconstr, false);
+        }
+    }
+    // Arithmetic function
+    else {
+        const set<string> arithmeticFuncNames = { ">=", ">", "<=", "<", "=", "disj", "sdisj" };
+
+        if (arithmeticFuncNames.find(funcName) == arithmeticFuncNames.end()) {
+            cerr << "Error: unknown global cost function: " << funcName << " at line " << line << endl;
+            exit(EXIT_FAILURE);
+        }
+
+        if (arity != 2) {
+            cerr << "Error : arithmetic function " << funcName << " has incorrect arity at line " << line << endl;
+            exit(EXIT_FAILURE);
+        }
+
+        if (ToulBar2::costMultiplier < 0.0 || ToulBar2::decimalPoint != 0) {
+            cerr << "Error : arithmetic function " << funcName << " at line " << line << "cannot be used with decimal costs or in maximization mode." << endl;
+            exit(EXIT_FAILURE);
+        }
+
+        pair<int, string> token = this->getNextToken();
+        vector<pair<int, string>> funcParams;
+
+        while (!isCBrace(token.second)) {
+            funcParams.push_back(token);
+            token = this->getNextToken();
+        }
+
+        if (funcName == ">=") {
+            if (funcParams.size() != 2) {
+                cerr << "Error : arithmetic function " << funcName << " has incorrect number of parameters." << endl;
+                exit(EXIT_FAILURE);
+            }
+            try {
+                wcsp->postSupxyc(scope[0], scope[1], stoi(funcParams[0].second), stoi(funcParams[1].second));
+            } catch (std::invalid_argument&) {
+                cerr << "Error: invalid parameters for '" << funcName << "' at line " << funcParams[0].first << endl;
+                exit(EXIT_FAILURE);
+            }
+
+        } else if (funcName == ">") {
+            if (funcParams.size() != 2) {
+                cerr << "Error : arithmetic function " << funcName << " has incorrect number of parameters." << endl;
+                exit(EXIT_FAILURE);
+            }
+            try {
+                wcsp->postSupxyc(scope[0], scope[1], stoi(funcParams[0].second) + 1, stoi(funcParams[1].second));
+            } catch (std::invalid_argument&) {
+                cerr << "Error: invalid parameters for '" << funcName << "' at line " << funcParams[0].first << endl;
+                exit(EXIT_FAILURE);
+            }
+
+        } else if (funcName == "<=") {
+            if (funcParams.size() != 2) {
+                cerr << "Error : arithmetic function " << funcName << " has incorrect number of parameters." << endl;
+                exit(EXIT_FAILURE);
+            }
+            try {
+                wcsp->postSupxyc(scope[0], scope[1], -stoi(funcParams[0].second), stoi(funcParams[1].second));
+            } catch (std::invalid_argument&) {
+                cerr << "Error: invalid parameters for '" << funcName << "' at line " << funcParams[0].first << endl;
+                exit(EXIT_FAILURE);
+            }
+
+        } else if (funcName == "<") {
+            if (funcParams.size() != 2) {
+                cerr << "Error : arithmetic function " << funcName << " has incorrect number of parameters." << endl;
+                exit(EXIT_FAILURE);
+            }
+            try {
+                wcsp->postSupxyc(scope[0], scope[1], -stoi(funcParams[0].second) + 1, stoi(funcParams[1].second));
+            } catch (std::invalid_argument&) {
+                cerr << "Error: invalid parameters for '" << funcName << "' at line " << funcParams[0].first << endl;
+                exit(EXIT_FAILURE);
+            }
+
+        } else if (funcName == "=") {
+            if (funcParams.size() != 2) {
+                cerr << "Error : arithmetic function " << funcName << " has incorrect number of parameters." << endl;
+                exit(EXIT_FAILURE);
+            }
+            try {
+                wcsp->postSupxyc(scope[0], scope[1], stoi(funcParams[0].second), stoi(funcParams[1].second));
+                wcsp->postSupxyc(scope[1], scope[0], -stoi(funcParams[0].second), stoi(funcParams[1].second));
+            } catch (std::invalid_argument&) {
+                cerr << "Error: invalid parameters for '" << funcName << "' at line " << funcParams[0].first << endl;
+                exit(EXIT_FAILURE);
+            }
+        } else if (funcName == "disj") {
+            if (funcParams.size() != 3) {
+                cerr << "Error : arithmetic function " << funcName << " has incorrect number of parameters." << endl;
+                exit(EXIT_FAILURE);
+            }
+            Cost cost = wcsp->decimalToCost(funcParams[2].second, funcParams[2].first);
+            try {
+                wcsp->postDisjunction(scope[0], scope[1], stoi(funcParams[0].second), stoi(funcParams[1].second), cost);
+            } catch (std::invalid_argument&) {
+                cerr << "Error: invalid parameters for '" << funcName << "' at line " << funcParams[0].first << endl;
+                exit(EXIT_FAILURE);
+            }
+
+        } else if (funcName == "sdisj") {
+            if (funcParams.size() != 6) {
+                cerr << "Error : arithmetic function " << funcName << " has incorrect number of parameters." << endl;
+                exit(EXIT_FAILURE);
+            }
+            Cost cost1 = wcsp->decimalToCost(funcParams[4].second, funcParams[4].first);
+            Cost cost2 = wcsp->decimalToCost(funcParams[5].second, funcParams[4].first);
+            try {
+                wcsp->postSpecialDisjunction(scope[0], scope[1], stoi(funcParams[0].second), stoi(funcParams[1].second),
+                    stoi(funcParams[2].second), stoi(funcParams[3].second), cost1, cost2);
+            } catch (std::invalid_argument&) {
+                cerr << "Error: invalid parameters for '" << funcName << "' at line " << funcParams[0].first << endl;
+                exit(EXIT_FAILURE);
+            }
+        }
+        skipCBrace();
+    }
+}
+
+void CFNStreamReader::generateGCFStreamFromTemplate(vector<int>& scope, const string& funcType, string GCFTemplate, stringstream& stream)
+{
+    // -------------------- Special cases are treated separately
+    if (funcType == "sgrammar" || funcType == "sgrammardp") {
+        this->generateGCFStreamSgrammar(scope, stream);
+        return;
+    } else if (funcType == "ssame") {
+        this->generateGCFStreamSsame(scope, stream);
+        return;
+    }
+
+    // -------------------- Function reading using template
+    int lineNumber = -1;
+    string token;
+    vector<char> repeatedSymbols;
+    unsigned int numberOfTuplesRead = 0;
+    bool isOpenedBrace = false;
+    bool variableRepeat = false;
+    vector<pair<char, string>> streamContentVec;
+
+    // Main loop: read template string char by char, and read the CFN file accordingly to the pattern
+    for (unsigned int i = 0; i < GCFTemplate.size(); i++) {
+
+        if (isOpenedBrace) {
+            if (GCFTemplate[i] == ']') {
+                isOpenedBrace = false;
+            } else if (GCFTemplate[i] == '+') {
+                variableRepeat = true;
+                repeatedSymbols.push_back(GCFTemplate[i]);
+            } else {
+                repeatedSymbols.push_back(GCFTemplate[i]);
+            }
+        }
+        // ---------- Read keyword and add it to stream
+        else if (GCFTemplate[i] == 'K') {
+
+            std::tie(lineNumber, token) = this->getNextToken();
+            streamContentVec.push_back(std::make_pair('K', token));
+
+            // Special case of sgcc
+            if (funcType == "sgcc") {
+                if (token == "wdec") {
+                    if (ToulBar2::verbose >= 2)
+                        cout << "Updating template (wdec) : "
+                             << ":metric:K:cost:c:bounds:[vNNcc]+" << endl;
+                    GCFTemplate = ":metric:K:cost:c:bounds:[vNNcc]+";
+                }
+            }
+        }
+        // ---------- Read cost, transform it to cost and add it to stream
+        else if (GCFTemplate[i] == 'C' || GCFTemplate[i] == 'c') {
+
+            std::tie(lineNumber, token) = this->getNextToken();
+            Cost cost = wcsp->decimalToCost(token, lineNumber);
+            if (GCFTemplate[i] == 'c' && cost < 0) {
+                cerr << "Error: the global cost function " << funcType << " cannot accept negative costs at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            }
+            streamContentVec.push_back(std::make_pair(GCFTemplate[i], std::to_string(cost)));
+        }
+        // ---------- Read variable and add it to stream
+        else if (GCFTemplate[i] == 'V') {
+
+            std::tie(lineNumber, token) = this->getNextToken();
+
+            if (not isdigit(token[0])) {
+                auto it = varNameToIdx.find(token);
+                if (it != varNameToIdx.end()) {
+                    token = it->second;
+                } else {
+                    cerr << "Error: unknown variable with name '" << token << "' at line " << lineNumber << endl;
+                    exit(EXIT_FAILURE);
+                }
+            }
+
+            streamContentVec.push_back(std::make_pair('V', token));
+        }
+        // ---------- Read value and add it to stream
+        else if (GCFTemplate[i] == 'v') {
+
+            std::tie(lineNumber, token) = this->getNextToken();
+            // V0 : value MUST be a number
+            for (char c : token) {
+                if (!isdigit(c)) {
+                    cerr << "Error: value index required at line " << lineNumber << " but read " << token << endl;
+                    exit(EXIT_FAILURE);
+                }
+            }
+            streamContentVec.push_back(std::make_pair('v', token));
+
+        }
+        // ---------- Read number and add it to stream
+        else if (GCFTemplate[i] == 'N') {
+
+            std::tie(lineNumber, token) = this->getNextToken();
+            for (char c : token) {
+                if (!isdigit(c) && c != '-') {
+                    cerr << "Error: number required at line " << lineNumber << " but read " << token << endl;
+                    exit(EXIT_FAILURE);
+                }
+            }
+            streamContentVec.push_back(std::make_pair('N', token));
+        }
+        // ---------- Read JSON tag
+        else if (GCFTemplate[i] == ':') {
+            auto idx = GCFTemplate.find_first_of(':', i + 1);
+            string jsonTag = GCFTemplate.substr(i + 1, idx - i - 1); // extract 'jsonTag'
+            i += jsonTag.size() + 1; // Increase i according to length of token read
+            skipJSONTag(jsonTag);
+        }
+        // ---------- Entering a repeated section
+        else if (GCFTemplate[i] == '[') {
+            isOpenedBrace = true;
+        }
+        // Read function repeated section
+        else if ((GCFTemplate[i] == '+' || GCFTemplate[i] == 'S') && !isOpenedBrace) {
+            vector<pair<char, string>> repeatedContentVec; // Function repeated params
+            vector<pair<char, string>> variableRepeatVec; // Stack if internal tuples have unknown size
+            // [ delimiting the start of the list
+            skipOBrace();
+            // Inside the list of parameter tuples
+
+            std::tie(lineNumber, token) = this->getNextToken();
+            while (token != "]") {
+                // Each (non unary) tuple is inside []. Skip first [
+                if (repeatedSymbols.size() > 1 || variableRepeat) {
+                    if (!isOBrace(token)) {
+                        cerr << "Error: expected '[/{' but read " << token << " at line " << lineNumber << endl;
+                        exit(EXIT_FAILURE);
+                    } else
+                        std::tie(lineNumber, token) = this->getNextToken();
+                }
+
+                size_t repeatIndex = 0;
+                while ((repeatIndex < repeatedSymbols.size()) && !isCBrace(token)) {
+                    if (repeatedSymbols[repeatIndex] == '+')
+                        repeatIndex = 0;
+                    char symbol = repeatedSymbols[repeatIndex];
+                    if (symbol == 'N') {
+                        for (char c : token) {
+                            if (!isdigit(c) && c != '-') {
+                                cerr << "Error: integer required at line " << lineNumber << " but read " << token << endl;
+                                exit(EXIT_FAILURE);
+                            }
+                        }
+                        if (variableRepeat)
+                            variableRepeatVec.push_back(std::make_pair('N', token));
+                        else
+                            repeatedContentVec.push_back(std::make_pair('N', token));
+                    } else if (symbol == 'V') {
+                        // If variable name (string)
+                        if (not isdigit(token[0])) {
+                            auto it = varNameToIdx.find(token);
+                            if (it != varNameToIdx.end()) {
+                                token = std::to_string(it->second);
+                            } else {
+                                cerr << "Error: unknown variable with name '" << token << "' at line " << lineNumber << endl;
+                                exit(EXIT_FAILURE);
+                            }
+                        }
+                        if (variableRepeat)
+                            variableRepeatVec.push_back(std::make_pair('V', token));
+                        else
+                            repeatedContentVec.push_back(std::make_pair('V', token));
+                    } else if (symbol == 'v') {
+                        // V0 : value MUST be a number
+                        for (char c : token) {
+                            if (!isdigit(c)) {
+                                cerr << "Error: value index required at line " << lineNumber << " but read " << token << endl;
+                                exit(EXIT_FAILURE);
+                            }
+                        }
+                        if (variableRepeat)
+                            variableRepeatVec.push_back(std::make_pair('v', token));
+                        else
+                            repeatedContentVec.push_back(std::make_pair('v', token));
+                    } else if ((symbol == 'C') || (symbol == 'c')) {
+                        Cost c = wcsp->decimalToCost(token, lineNumber);
+                        if (symbol == 'c' && c < 0) {
+                            cerr << "Error: the global cost function " << funcType << " cannot accept negative costs at line " << lineNumber << endl;
+                            exit(EXIT_FAILURE);
+                        }
+                        if (variableRepeat)
+                            variableRepeatVec.push_back(std::make_pair(symbol, std::to_string(c)));
+                        else
+                            repeatedContentVec.push_back(std::make_pair(symbol, std::to_string(c)));
+                    }
+
+                    repeatIndex++;
+                    std::tie(lineNumber, token) = this->getNextToken();
+                }
+
+                if (repeatedSymbols.size() > 1 || variableRepeat) {
+                    if (!isCBrace(token)) {
+                        cerr << "Error: expected ']/}' but read " << token << " at line " << lineNumber << endl;
+                        exit(EXIT_FAILURE);
+                    } else
+                        std::tie(lineNumber, token) = this->getNextToken();
+                }
+                if (variableRepeat) { // we must push the size of the repeat and its contents
+                    repeatedContentVec.push_back(std::make_pair('N', std::to_string(variableRepeatVec.size())));
+                    repeatedContentVec.insert(repeatedContentVec.end(), variableRepeatVec.begin(), variableRepeatVec.end());
+                    variableRepeatVec.clear();
+                }
+                numberOfTuplesRead++; // Number of tuples read
+            }
+            if (GCFTemplate[i] == 'S' && numberOfTuplesRead != scope.size()) {
+                cerr << "Error: expected " << scope.size() << " tuples for '" << funcType << "' but read " << numberOfTuplesRead << " at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            }
+            // Add number of tuples before the list if the number of expected tuples is not known
+            if (GCFTemplate[i] == '+')
+                streamContentVec.push_back(std::make_pair('N', std::to_string(numberOfTuplesRead)));
+            // Copy repeatedContentVec to streamContent
+            for (pair<char, string> repContentPair : repeatedContentVec) {
+                streamContentVec.push_back(std::make_pair(repContentPair.first, repContentPair.second));
+            }
+
+            // Reset vector for future usage
+            numberOfTuplesRead = 0;
+            repeatedSymbols.clear();
+
+        } // end of if (GCFTemplate[i] == '+')
+    } // end of for (unsigned int i=0; i < GCFTemplate.size(); i++)
+
+    // End of params
+    skipCBrace();
+    // End of function
+    skipCBrace();
+
+    // -------------------- Data processing
+    Cost minCost = MAX_COST;
+
+    // DEBUG DISPLAY
+    if (ToulBar2::verbose >= 2) {
+        cout << "Output Data map :" << endl;
+        for (unsigned int i = 0; i < streamContentVec.size(); i++) {
+            cout << streamContentVec[i].first << "\t" << streamContentVec[i].second << endl;
+        }
+    }
+
+    // FIND MIN COST
+    bool minUpdated = false;
+    for (pair<char, string> streamContentPair : streamContentVec) {
+        if (streamContentPair.first == 'C') {
+            Cost currentCost = (Cost)std::stoll(streamContentPair.second);
+            minCost = MIN(currentCost, minCost);
+            minUpdated = true;
+        }
+    }
+    if (!minUpdated)
+        minCost = 0;
+
+    // WRITE ALL TO STREAM AND SUBSTRACT MIN COST TO ALL COSTS
+    for (unsigned int i = 0; i < streamContentVec.size(); i++) {
+        if (streamContentVec[i].first == 'C') {
+            Cost currentCost = (Cost)std::stoll(streamContentVec[i].second);
+            currentCost -= minCost;
+            streamContentVec[i].second = std::to_string(currentCost);
+        }
+        stream << streamContentVec[i].second << " ";
+    }
+
+    // Correct for negative costs
+    if (funcType == "wregular") { // regular: we can handle all costs. The number of transitions is known and we have one start and end state
+        wcsp->negCost -= ((scope.size() + 2) * minCost); // TODO we could do better and compute different mins for initial/final/transitions.
+    } else
+        wcsp->negCost -= minCost;
+
+    // STREAM DEBUG
+    if (ToulBar2::verbose >= 1)
+        cout << "Stream for " << funcType << ": '" << stream.str() << "'" << endl;
+    return;
+}
+
+/*
+* Example :
+* metric : var
+* cost : 15
+* nb_symbols : 4
+* nb_values : 2
+* start_symbol : 0
+* terminals : [ [1 0] [3 1] ]
+* non_terminals : [ [0 0 0] [0 1 2] [0 1 3] [2 0 3] ]
+* return stream : [var|weight cost nb_symbols nb_values start_symbol nb_rules ((0 terminal_symbol value)|(1 nonterminal_in nonterminal_out_left nonterminal_out_right)|(2 terminal_symbol value weight)|(3 nonterminal_in nonterminal_out_left nonterminal_out_right weight))∗]
+*/
+void CFNStreamReader::generateGCFStreamSgrammar(vector<int>& scope, stringstream& stream)
+{
+
+    int lineNumber;
+    string token;
+    string metric;
+    vector<string> terminal_rules;
+    vector<string> non_terminal_rules;
+
+    skipJSONTag("metric");
+    std::tie(lineNumber, token) = this->getNextToken();
+    metric = token;
+    if (metric != "var" && metric != "weight") {
+        cerr << "Error: sgrammar metric must be either 'var' or 'weight' at line " << lineNumber << endl;
+        exit(EXIT_FAILURE);
+    }
+    // Read cost
+    skipJSONTag("cost");
+    std::tie(lineNumber, token) = this->getNextToken();
+    Cost cost = wcsp->decimalToCost(token, lineNumber);
+    if (cost < 0) {
+        cerr << "Error: sgrammar at line " << lineNumber << "uses a negative cost." << endl;
+        exit(EXIT_FAILURE);
+    }
+    // Read Nb Symbols
+    skipJSONTag("nb_symbols");
+    std::tie(lineNumber, token) = this->getNextToken();
+    string nb_symbols = token;
+    // Read Nb Values
+    skipJSONTag("nb_values");
+    std::tie(lineNumber, token) = this->getNextToken();
+    string nb_values = token;
+    // Read start symbol
+    skipJSONTag("start");
+    std::tie(lineNumber, token) = this->getNextToken();
+    string start_symbol = token;
+
+    skipJSONTag("terminals"); // 0 or 2
+    skipOBrace();
+    std::tie(lineNumber, token) = this->getNextToken(); // Second [ or ]
+    while (token != "]") {
+
+        string terminal_rule;
+        yellOBrace(token, lineNumber);
+        // Read terminal_symbol
+        std::tie(lineNumber, token) = this->getNextToken();
+        terminal_rule += token + " ";
+
+        // Read value
+        std::tie(lineNumber, token) = this->getNextToken();
+        terminal_rule += token + " ";
+
+        if (metric == "weight") {
+            // Read weight
+            std::tie(lineNumber, token) = this->getNextToken();
+            Cost tcost = wcsp->decimalToCost(token, lineNumber);
+            if (tcost < 0) {
+                cerr << "Error: sgrammar at line " << lineNumber << "uses a negative cost." << endl;
+                exit(EXIT_FAILURE);
+            }
+            terminal_rule += std::to_string(tcost) + " ";
+        }
+
+        terminal_rules.push_back(terminal_rule);
+
+        skipCBrace();
+        std::tie(lineNumber, token) = this->getNextToken();
+    }
+
+    skipJSONTag("non_terminals"); // 1 or 3
+    skipOBrace();
+    std::tie(lineNumber, token) = this->getNextToken(); // Second [ or ]
+    while (token != "]") {
+
+        string non_terminal_rule;
+        yellOBrace(token, lineNumber);
+
+        // Read nonterminal_in
+        std::tie(lineNumber, token) = this->getNextToken();
+        non_terminal_rule += token + " ";
+
+        // Read nonterminal_out_left
+        std::tie(lineNumber, token) = this->getNextToken();
+        non_terminal_rule += token + " ";
+
+        // Read nonterminal_out_right
+        std::tie(lineNumber, token) = this->getNextToken();
+        non_terminal_rule += token + " ";
+
+        if (metric == "weight") {
+            // Read weight
+            std::tie(lineNumber, token) = this->getNextToken();
+            Cost tcost = wcsp->decimalToCost(token, lineNumber);
+            if (tcost < 0) {
+                cerr << "Error: sgrammar at line " << lineNumber << "uses a negative cost." << endl;
+                exit(EXIT_FAILURE);
+            }
+            non_terminal_rule += std::to_string(tcost) + " ";
+        }
+
+        non_terminal_rules.push_back(non_terminal_rule);
+
+        skipCBrace();
+        std::tie(lineNumber, token) = this->getNextToken();
+    }
+
+    // End of function, write to stream
+
+    // End of params
+    skipCBrace();
+    // End of function
+    skipCBrace();
+
+    // Cost had no impact on negCost here
+    stream << metric << " " << cost << " " << nb_symbols << " " << nb_values << " " << start_symbol
+           << " " << std::to_string(terminal_rules.size() + non_terminal_rules.size()) << " ";
+    if (metric == "var") {
+        for (string terminal_rule : terminal_rules)
+            stream << "0 " << terminal_rule;
+        for (string non_terminal_rule : non_terminal_rules)
+            stream << "1 " << non_terminal_rule;
+    } else if (metric == "weight") {
+        for (string terminal_rule : terminal_rules)
+            stream << "2 " << terminal_rule;
+        for (string non_terminal_rule : non_terminal_rules)
+            stream << "3 " << non_terminal_rule;
+    }
+
+    if (ToulBar2::verbose >= 1)
+        cout << "Stream for sgrammar : '" << stream.str() << "'" << endl;
+}
+/*
+* Example :
+* cost : 10.8
+* vars1 : [v1 v2 v3]
+* vars2 : [v4 v5 v6]
+* return stream : [cost list_size1 list_size2 (variable_index)∗ (variable_index)∗]
+*/
+void CFNStreamReader::generateGCFStreamSsame(vector<int>& scope, stringstream& stream)
+{
+
+    int lineNumber;
+    string token;
+    vector<string> variables1;
+    vector<string> variables2;
+
+    skipJSONTag("cost");
+    std::tie(lineNumber, token) = this->getNextToken();
+    Cost cost = wcsp->decimalToCost(token, lineNumber);
+    // TODO Cost should be >= 0
+
+    skipJSONTag("vars1");
+    skipOBrace();
+    std::tie(lineNumber, token) = this->getNextToken();
+
+    while (token != "]") {
+
+        if (not isdigit(token[0])) {
+            map<string, int>::iterator it;
+            if ((it = varNameToIdx.find(token)) != varNameToIdx.end()) {
+                token = std::to_string(it->second);
+            } else {
+                cerr << "Error: unknown variable with name '" << token << "' at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            }
+        }
+        variables1.push_back(token);
+
+        std::tie(lineNumber, token) = this->getNextToken();
+    }
+
+    skipJSONTag("vars2");
+    skipOBrace();
+    std::tie(lineNumber, token) = this->getNextToken();
+
+    while (token != "]") {
+
+        if (not isdigit(token[0])) {
+            map<string, int>::iterator it;
+            if ((it = varNameToIdx.find(token)) != varNameToIdx.end()) {
+                token = std::to_string(it->second);
+            } else {
+                cerr << "Error: unknown variable with name '" << token << "' at line " << lineNumber << endl;
+                exit(EXIT_FAILURE);
+            }
+        }
+        variables2.push_back(token);
+
+        std::tie(lineNumber, token) = this->getNextToken();
+    }
+
+    // End of params
+    skipCBrace();
+    // End of function
+    skipCBrace();
+
+    // Cost has no impact on negCost here
+    stream << cost << " ";
+    stream << variables1.size() << " " << variables2.size() << " ";
+    for (string var1 : variables1)
+        stream << var1 << " ";
+    for (string var2 : variables2)
+        stream << var2 << " ";
+
+    if (ToulBar2::verbose >= 1)
+        cout << "Stream for ssame : '" << stream.str() << "'" << endl;
+
+    return;
+}
+#endif
+
+// TB2 entry point for WCSP reading (not only wcsp format).
+// Returns the global UB obtained form both the file and command line in internal Cost units
+Cost WCSP::read_wcsp(const char* fileName)
+{
+    char* Nfile2;
+    Nfile2 = strdup(fileName);
+    name = string(basename(Nfile2));
+    free(Nfile2);
+
+    // Done internally by the CFN reader
+    if (!ToulBar2::cfn) {
+        if (ToulBar2::deltaUbS.length() != 0) {
+            ToulBar2::deltaUbAbsolute = string2Cost(ToulBar2::deltaUbS.c_str());
+            ToulBar2::deltaUb = ToulBar2::deltaUbAbsolute;
+        }
+
+        if (ToulBar2::externalUB.size()) {
+            Cost top = string2Cost(ToulBar2::externalUB.c_str());
+            double K = ToulBar2::costMultiplier;
+            if (top < MAX_COST / K)
+                top = top * K;
+            else
+                top = MAX_COST;
+            ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(top, getUb())));
+            updateUb(top + ToulBar2::deltaUb);
+            // as long as a true certificate as not been found we must compensate for the deltaUb in CUT
+        }
+
+        if (ToulBar2::costThresholdS.size())
+            ToulBar2::costThreshold = string2Cost(ToulBar2::costThresholdS.c_str());
+        if (ToulBar2::costThresholdPreS.size())
+            ToulBar2::costThresholdPre = string2Cost(ToulBar2::costThresholdPreS.c_str());
+        if (ToulBar2::vnsOptimumS.size())
+            ToulBar2::vnsOptimum = string2Cost(ToulBar2::vnsOptimumS.c_str());
+    }
+
+    if (ToulBar2::cfn && !ToulBar2::gz && !ToulBar2::xz) {
+#ifdef BOOST
+        ifstream Rfile;
+        istream& stream = (ToulBar2::stdin_format.length() > 0) ? cin : Rfile;
+        if (ToulBar2::stdin_format.compare("cfn") == 0) {
+            CFNStreamReader fileReader(stream, this);
+            return getUb();
+
+        } else {
+            Rfile.open(fileName);
+            if (!stream) {
+                cerr << "Error: could not open file '" << fileName << "'." << endl;
+                exit(EXIT_FAILURE);
+
+            } else {
+                CFNStreamReader fileReader(stream, this);
+            }
+        }
+#else
+        cerr << "Error: compiling with Boost library is needed to allow to read CFN format files." << endl;
+        exit(EXIT_FAILURE);
+#endif
+    } else if (ToulBar2::cfn && ToulBar2::gz) {
+#ifdef BOOST
+        ifstream Rfile(fileName, std::ios_base::in | std::ios_base::binary);
+        istream& file = Rfile;
+        boost::iostreams::filtering_streambuf<boost::iostreams::input> inbuf;
+        inbuf.push(boost::iostreams::gzip_decompressor());
+        inbuf.push(file);
+        std::istream stream(&inbuf);
+
+        if (!file) {
+            cerr << "Could not open cfn.gz file : " << fileName << endl;
+            exit(EXIT_FAILURE);
+        } else {
+
+            //  inbuf.push(file);
+            CFNStreamReader fileReader(stream, this);
+        }
+#else
+        cerr << "Error: compiling with Boost iostreams library is needed to allow to read gzip'd CFN format files." << endl;
+        exit(EXIT_FAILURE);
+#endif
+    } else if (ToulBar2::cfn && ToulBar2::xz) {
+#ifdef BOOST
+#if (BOOST_VERSION >= 106500)
+        ifstream Rfile(fileName, std::ios_base::in | std::ios_base::binary);
+        istream& file = Rfile;
+        boost::iostreams::filtering_streambuf<boost::iostreams::input> inbuf;
+        inbuf.push(boost::iostreams::lzma_decompressor());
+        inbuf.push(file);
+        std::istream stream(&inbuf);
+
+        if (!file) {
+            cerr << "Could not open cfn.xz file : " << fileName << endl;
+            exit(EXIT_FAILURE);
+        } else {
+
+            //  inbuf.push(file);
+            CFNStreamReader fileReader(stream, this);
+        }
+#else
+        cerr << "Error: compiling with Boost version 1.65 or higher is needed to allow to read xz compressed CFN format files." << endl;
+        exit(EXIT_FAILURE);
+#endif
+#else
+        cerr << "Error: compiling with Boost iostreams library is needed to allow to read xz compressed CFN format files." << endl;
+        exit(EXIT_FAILURE);
+#endif
+    } else if (ToulBar2::haplotype) {
+        ToulBar2::haplotype->read(fileName, this);
+    } else if (ToulBar2::pedigree) {
+        if (!ToulBar2::bayesian)
+            ToulBar2::pedigree->read(fileName, this);
+        else
+            ToulBar2::pedigree->read_bayesian(fileName, this);
+    } else if (ToulBar2::uai) {
+        read_uai2008(fileName);
+    } else if (ToulBar2::xmlflag) {
+        read_XML(fileName);
+    } else if (ToulBar2::bep) {
+        ToulBar2::bep->read(fileName, this);
+    } else if (ToulBar2::wcnf) {
+        read_wcnf(fileName);
+    } else if (ToulBar2::qpbo) {
+        read_qpbo(fileName);
+    } else if (ToulBar2::opb) {
+        read_opb(fileName);
+    } else {
+        read_legacy(fileName);
+    }
+
+    // Diverse variables structure and variables allocation and initialization
+    if (ToulBar2::divNbSol > 1) {
+        for (auto var : vars) {
+            if (var->unassigned() && var->getName()[0] != IMPLICIT_VAR_TAG[0]) {
+                if (var->enumerated()) {
+                    divVariables.push_back(var);
+                } else {
+                    cerr << "Error: cannot control diversity of non enumerated variable: " << var->getName() << endl;
+                    exit(EXIT_FAILURE);
+                }
+            }
+        }
+
+        // Dual variables allocation, only needed for divMethod 0 Dual or 1 Hidden
+        if (ToulBar2::divMethod < 2) {
+            divVarsId.resize(ToulBar2::divNbSol);
+            for (unsigned int j = 0; j < ToulBar2::divNbSol - 1; j++) {
+                for (Variable* x : divVariables) {
+                    int xId = x->wcspIndex;
+                    divVarsId[j][xId] = makeEnumeratedVariable(DIVERSE_VAR_TAG + "c_sol" + std::to_string(j) + "_" + x->getName(), 0, 2 * ToulBar2::divBound + 1);
+                    EnumeratedVariable* theVar = static_cast<EnumeratedVariable*>(getVar(divVarsId[j][xId]));
+                    for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++) {
+                        theVar->addValueName("q" + std::to_string(val % (ToulBar2::divBound + 1)) + ":"
+                            + std::to_string(min(ToulBar2::divBound, (val % (ToulBar2::divBound + 1)) + (val / (ToulBar2::divBound + 1)))));
+                    }
+                }
+            }
+        }
+
+        // Hidden variables, only needed for divMethod 1 Hidden or 2 Ternary
+        if (ToulBar2::divMethod >= 1) {
+            divHVarsId.resize(ToulBar2::divNbSol); // make room for hidden state variables
+            for (unsigned int j = 0; j < ToulBar2::divNbSol - 1; j++) {
+                bool first = true;
+                for (Variable* x : divVariables) {
+                    if (!first) {
+                        int xId = x->wcspIndex;
+                        divHVarsId[j][xId] = makeEnumeratedVariable(DIVERSE_VAR_TAG + "h_sol" + std::to_string(j) + "_" + x->getName(), 0, ToulBar2::divBound);
+                        EnumeratedVariable* theVar = static_cast<EnumeratedVariable*>(getVar(divHVarsId[j][xId]));
+                        for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++) {
+                            theVar->addValueName("q" + std::to_string(val));
+                        }
+                    }
+                    first = false;
+                }
+            }
+        }
+
+        // Joint DivMin MDD
+        if (ToulBar2::divWidth > 0) { //add variables for relaxed constraint
+            if (ToulBar2::divMethod < 2) {
+                for (Variable* x : divVariables) {
+                    int xId = x->wcspIndex;
+                    divVarsId[ToulBar2::divNbSol - 1][xId] = makeEnumeratedVariable(DIVERSE_VAR_TAG + "c_relax_" + x->getName(), 0, ToulBar2::divWidth * ToulBar2::divWidth - 1);
+                    EnumeratedVariable* theVar = static_cast<EnumeratedVariable*>(getVar(divVarsId[ToulBar2::divNbSol - 1][xId]));
+                    for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++) {
+                        theVar->addValueName("Q" + std::to_string(val));
+                    }
+                }
+            }
+            if (ToulBar2::divMethod >= 1) {
+                for (Variable* x : divVariables) {
+                    int xId = x->wcspIndex;
+                    divHVarsId[ToulBar2::divNbSol - 1][xId] = makeEnumeratedVariable(DIVERSE_VAR_TAG + "h_relax_" + x->getName(), 0, ToulBar2::divWidth - 1);
+                    EnumeratedVariable* theVar = static_cast<EnumeratedVariable*>(getVar(divHVarsId[ToulBar2::divNbSol - 1][xId]));
+                    for (unsigned int val = 0; val < theVar->getDomainInitSize(); val++) {
+                        theVar->addValueName("q" + std::to_string(val));
+                    }
+                }
+            }
+        }
+    }
+    return getUb();
+}
+
+// TOULBAR2 WCSP LEGACY PARSER
+void WCSP::read_legacy(const char* fileName)
+{
+    string pbname;
+    unsigned int nbvar, nbval;
+    int nbconstr;
+    int nbvaltrue = 0;
+    Cost top;
+    int i, j, k, t, ic;
+    string varname;
+    int domsize;
+    unsigned int a;
+    unsigned int b;
+    unsigned int c;
+    Cost defval;
+    Cost cost;
+    int ntuples;
+    int arity;
+    string funcname;
+    Value funcparam1;
+    Value funcparam2;
+    vector<TemporaryUnaryConstraint> unaryconstrs;
+    Cost inclowerbound = MIN_COST;
+    int maxarity = 0;
+    vector<int> sharedSize;
+    vector<vector<Cost>> sharedCosts;
+    vector<vector<Tuple>> sharedTuples;
+    vector<Tuple> emptyTuples;
+
+    ifstream rfile(fileName, (ToulBar2::gz || ToulBar2::xz) ? (std::ios_base::in | std::ios_base::binary) : (std::ios_base::in));
+#ifdef BOOST
+    boost::iostreams::filtering_streambuf<boost::iostreams::input> zfile;
+    if (ToulBar2::gz) {
+        zfile.push(boost::iostreams::gzip_decompressor());
+    } else if (ToulBar2::xz) {
+#if (BOOST_VERSION >= 106500)
+        zfile.push(boost::iostreams::lzma_decompressor());
+#else
+        cerr << "Error: compiling with Boost version 1.65 or higher is needed to allow to read xz compressed wcsp format files." << endl;
+        exit(EXIT_FAILURE);
+#endif
+    }
+    zfile.push(rfile);
+    istream ifile(&zfile);
+
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open wcsp file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : ifile;
+#else
+    if (ToulBar2::gz || ToulBar2::xz) {
+        cerr << "Error: compiling with Boost iostreams library is needed to allow to read compressed wcsp format files." << endl;
+        exit(EXIT_FAILURE);
+    }
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open wcsp file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : rfile;
+#endif
+
+    // ---------- PROBLEM HEADER ----------
+    // read problem name and sizes
+    file >> pbname;
+    file >> nbvar;
+    file >> nbval;
+    file >> nbconstr;
+    file >> top;
+    if (ToulBar2::verbose >= 1)
+        cout << "Read problem: " << pbname << endl;
+
+    double K = ToulBar2::costMultiplier;
+    if (top < MAX_COST / K)
+        top = top * K;
+    else
+        top = MAX_COST;
+
+    ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(top, getUb())));
+    updateUb(top + ToulBar2::deltaUb);
+
+    Tuple tup;
+    vector<Tuple> tuples;
+    vector<Cost> costs;
+
+    // read variable domain sizes
+    for (unsigned int i = 0; i < nbvar; i++) {
+        string varname;
+        varname = "x" + to_string(i);
+        file >> domsize;
+        if (domsize > nbvaltrue)
+            nbvaltrue = domsize;
+        if (ToulBar2::verbose >= 3)
+            cout << "read " << ((i >= numberOfVariables()) ? "new" : "known") << " variable " << i << " of size " << domsize << endl;
+        if (i >= numberOfVariables()) {
+            DEBONLY(int theindex =)
+            ((domsize >= 0) ? makeEnumeratedVariable(varname, 0, domsize - 1) : makeIntervalVariable(varname, 0, -domsize - 1));
+            assert(theindex == (int)i);
+        } else {
+            if ((domsize >= 0) != getVar(i)->enumerated()) {
+                cerr << "Variable(" << i << ") " << getVar(i)->getName() << " has a previous domain type (" << (getVar(i)->enumerated() ? ((EnumeratedVariable*)getVar(i))->getDomainInitSize() : getVar(i)->getDomainSize()) << ") different than the new one (" << domsize << ")!" << endl;
+                exit(EXIT_FAILURE);
+            } else if (domsize < 0) {
+                decrease(i, -domsize - 1);
+            } else if (domsize >= 0 && (unsigned int)domsize != ((EnumeratedVariable*)getVar(i))->getDomainInitSize()) {
+                cerr << "Variable(" << i << ") " << getVar(i)->getName() << " has a previous domain size " << (getVar(i)->enumerated() ? ((EnumeratedVariable*)getVar(i))->getDomainInitSize() : getVar(i)->getDomainSize()) << " different than the new one of " << domsize << "!" << endl;
+                exit(EXIT_FAILURE);
+            }
+        }
+    }
+
+    // read each constraint
+    for (ic = 0; ic < nbconstr; ic++) {
+        file >> arity;
+        if (!file) {
+            cerr << "Warning: EOF reached before reading all the cost functions (initial number of cost functions too large?)" << endl;
+            break;
+        }
+        bool shared = (arity < 0);
+        if (shared)
+            arity = -arity;
+        // ARITY > 3
+        if (arity > NARYPROJECTIONSIZE) {
+            maxarity = max(maxarity, arity);
+            if (ToulBar2::verbose >= 3)
+                cout << "read " << arity << "-ary cost function " << ic << " on";
+            int scopeIndex[arity]; // replace arity by MAX_ARITY in case of compilation problem
+            for (i = 0; i < arity; i++) {
+                file >> j;
+                if (ToulBar2::verbose >= 3)
+                    cout << " " << j;
+                scopeIndex[i] = j;
+            }
+            if (ToulBar2::verbose >= 3)
+                cout << endl;
+            file >> defval;
+            if (defval == -1) {
+                string gcname;
+                file >> gcname;
+                if (gcname.substr(0, 1) == "w") { // global cost functions decomposed into a cost function network
+                    DecomposableGlobalCostFunction* decomposableGCF = DecomposableGlobalCostFunction::FactoryDGCF(gcname, arity, scopeIndex, file);
+                    decomposableGCF->addToCostFunctionNetwork(this);
+                } else if (gcname == "clique") {
+                    postCliqueConstraint(scopeIndex, arity, file);
+                } else if (gcname == "knapsack") {
+                    postKnapsackConstraint(scopeIndex, arity, file);
+                } else { // monolithic global cost functions
+                    postGlobalConstraint(scopeIndex, arity, gcname, file, &nbconstr);
+                }
+            } else {
+                if (arity > MAX_ARITY) {
+                    cerr << "Nary cost functions of arity > " << MAX_ARITY << " not supported" << endl;
+                    exit(EXIT_FAILURE);
+                }
+                file >> ntuples;
+                int reusedconstr = -1;
+                bool reused = (ntuples < 0);
+                if (reused) {
+                    reusedconstr = -ntuples - 1;
+                    if (reusedconstr >= (int)sharedSize.size()) {
+                        cerr << "Shared cost function number " << reusedconstr << " not already defined! Cannot reuse it!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    ntuples = sharedSize[reusedconstr];
+                }
+                if ((defval != MIN_COST) || (ntuples > 0)) {
+                    Cost tmpcost = MULT(defval, K);
+                    if (CUT(tmpcost, getUb()) && (tmpcost < MEDIUM_COST * getUb()) && getUb() < (MAX_COST / MEDIUM_COST))
+                        tmpcost *= MEDIUM_COST;
+                    int naryIndex = postNaryConstraintBegin(scopeIndex, arity, tmpcost, ntuples);
+                    NaryConstraint* nary = (NaryConstraint*)constrs[naryIndex];
+
+                    tup.resize(arity);
+                    tuples.clear();
+                    costs.clear();
+                    for (t = 0; t < ntuples; t++) {
+                        if (!reused) {
+                            for (i = 0; i < arity; i++) {
+                                file >> tup[i]; // FIXME: why not translating from Value to tValue?
+                            }
+                            file >> cost;
+                            Cost tmpcost = MULT(cost, K);
+                            if (CUT(tmpcost, getUb()) && (tmpcost < MEDIUM_COST * getUb()) && getUb() < (MAX_COST / MEDIUM_COST))
+                                tmpcost *= MEDIUM_COST;
+                            if (shared) {
+                                tuples.push_back(tup);
+                                costs.push_back(tmpcost);
+                            }
+                            postNaryConstraintTuple(naryIndex, tup, tmpcost);
+                        } else {
+                            postNaryConstraintTuple(naryIndex, sharedTuples[reusedconstr][t], sharedCosts[reusedconstr][t]);
+                        }
+                    }
+                    if (shared) {
+                        assert(ntuples == (int)costs.size());
+                        sharedSize.push_back(costs.size());
+                        sharedCosts.push_back(costs);
+                        sharedTuples.push_back(tuples);
+                    }
+
+                    if (ToulBar2::preprocessNary > 0) {
+                        Cost minc = nary->getMinCost();
+                        if (minc > MIN_COST) {
+                            nary->addtoTuples(-minc);
+                            if (ToulBar2::verbose >= 2)
+                                cout << "IC0 performed for cost function " << nary << " with initial minimum cost " << minc << endl;
+                            inclowerbound += minc;
+                        }
+                    }
+                    postNaryConstraintEnd(naryIndex);
+                }
+            }
+            // ARITY 3
+        } else if (arity == 3) {
+            maxarity = max(maxarity, arity);
+            file >> i;
+            file >> j;
+            file >> k;
+            if ((i == j) || (i == k) || (k == j)) {
+                cerr << "Error: ternary cost function!" << endl;
+                exit(EXIT_FAILURE);
+            }
+            file >> defval;
+            if (defval >= MIN_COST) {
+                assert(vars[i]->enumerated());
+                assert(vars[j]->enumerated());
+                assert(vars[k]->enumerated());
+                EnumeratedVariable* x = (EnumeratedVariable*)vars[i];
+                EnumeratedVariable* y = (EnumeratedVariable*)vars[j];
+                EnumeratedVariable* z = (EnumeratedVariable*)vars[k];
+                if (ToulBar2::verbose >= 3)
+                    cout << "read ternary cost function " << ic << " on " << i << "," << j << "," << k << endl;
+                file >> ntuples;
+                if (ntuples < 0) {
+                    int reusedconstr = -ntuples - 1;
+                    if (reusedconstr >= (int)sharedSize.size()) {
+                        cerr << "Shared cost function number " << reusedconstr << " not already defined! Cannot reuse it!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    ntuples = sharedSize[reusedconstr];
+                    assert(ntuples == (int)(x->getDomainInitSize() * y->getDomainInitSize() * z->getDomainInitSize()));
+                    if ((defval != MIN_COST) || (ntuples > 0))
+                        postTernaryConstraint(i, j, k, sharedCosts[reusedconstr]);
+                    continue;
+                }
+                vector<Cost> costs;
+                for (a = 0; a < x->getDomainInitSize(); a++) {
+                    for (b = 0; b < y->getDomainInitSize(); b++) {
+                        for (c = 0; c < z->getDomainInitSize(); c++) {
+                            Cost tmpcost = MULT(defval, K);
+                            if (CUT(tmpcost, getUb()) && (tmpcost < MEDIUM_COST * getUb()))
+                                tmpcost *= MEDIUM_COST;
+                            costs.push_back(tmpcost);
+                        }
+                    }
+                }
+                for (t = 0; t < ntuples; t++) {
+                    file >> a;
+                    file >> b;
+                    file >> c;
+                    file >> cost;
+                    Cost tmpcost = MULT(cost, K);
+                    if (CUT(tmpcost, getUb()) && (tmpcost < MEDIUM_COST * getUb()) && getUb() < (MAX_COST / MEDIUM_COST))
+                        tmpcost *= MEDIUM_COST;
+                    assert(a >= 0 && a < x->getDomainInitSize());
+                    assert(b >= 0 && b < y->getDomainInitSize());
+                    assert(c >= 0 && c < z->getDomainInitSize());
+                    costs[a * y->getDomainInitSize() * z->getDomainInitSize() + b * z->getDomainInitSize() + c] = tmpcost;
+                }
+                if (shared) {
+                    sharedSize.push_back(costs.size());
+                    sharedCosts.push_back(costs);
+                    sharedTuples.push_back(emptyTuples);
+                }
+                if ((defval != MIN_COST) || (ntuples > 0))
+                    postTernaryConstraint(i, j, k, costs);
+            } else if (defval == -1) {
+                int scopeIndex[3];
+                scopeIndex[0] = i;
+                scopeIndex[1] = j;
+                scopeIndex[2] = k;
+                string gcname;
+                file >> gcname;
+                if (gcname.substr(0, 1) == "w") { // global cost functions decomposed into a cost function network
+                    DecomposableGlobalCostFunction* decomposableGCF = DecomposableGlobalCostFunction::FactoryDGCF(gcname, arity, scopeIndex, file);
+                    decomposableGCF->addToCostFunctionNetwork(this);
+                } else if (gcname == "clique") {
+                    //postCliqueConstraint(scopeIndex, arity, file);
+                    int skipread;
+                    file >> skipread;
+                    for (int a = 0; a < arity; a++) {
+                        file >> skipread;
+                        for (int b = skipread; b > 0; b--)
+                            file >> skipread;
+                    }
+                    assert(vars[i]->enumerated());
+                    assert(vars[j]->enumerated());
+                    assert(vars[k]->enumerated());
+                    EnumeratedVariable* x = (EnumeratedVariable*)vars[i];
+                    EnumeratedVariable* y = (EnumeratedVariable*)vars[j];
+                    EnumeratedVariable* z = (EnumeratedVariable*)vars[k];
+                    vector<Cost> costs((size_t)x->getDomainInitSize() * (size_t)y->getDomainInitSize() * (size_t)z->getDomainInitSize(), MIN_COST);
+                    postTernaryConstraint(i, j, k, costs); //generate a zero-cost ternary constraint instead that will absorb all its binary hard constraints
+                } else { // monolithic global cost functions
+                    postGlobalConstraint(scopeIndex, arity, gcname, file, &nbconstr);
+                }
+            }
+            // ARITY 2
+        } else if (arity == 2) {
+            maxarity = max(maxarity, arity);
+            file >> i;
+            file >> j;
+            if (ToulBar2::verbose >= 3)
+                cout << "read binary cost function " << ic << " on " << i << "," << j << endl;
+            if (i == j) {
+                cerr << "Error: binary cost function with only one variable in its scope!" << endl;
+                exit(EXIT_FAILURE);
+            }
+            file >> defval;
+            if (defval >= MIN_COST) {
+                assert(vars[i]->enumerated());
+                assert(vars[j]->enumerated());
+                EnumeratedVariable* x = (EnumeratedVariable*)vars[i];
+                EnumeratedVariable* y = (EnumeratedVariable*)vars[j];
+                file >> ntuples;
+                if (ntuples < 0) {
+                    int reusedconstr = -ntuples - 1;
+                    if (reusedconstr >= (int)sharedSize.size()) {
+                        cerr << "Shared cost function number " << reusedconstr << " not already defined! Cannot reuse it!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    ntuples = sharedSize[reusedconstr];
+                    assert(ntuples == (int)(x->getDomainInitSize() * y->getDomainInitSize()));
+                    if ((defval != MIN_COST) || (ntuples > 0))
+                        postBinaryConstraint(i, j, sharedCosts[reusedconstr]);
+                    continue;
+                }
+                vector<Cost> costs;
+                for (a = 0; a < x->getDomainInitSize(); a++) {
+                    for (b = 0; b < y->getDomainInitSize(); b++) {
+                        Cost tmpcost = MULT(defval, K);
+                        if (CUT(tmpcost, getUb()) && (tmpcost < MEDIUM_COST * getUb()) && getUb() < (MAX_COST / MEDIUM_COST))
+                            tmpcost *= MEDIUM_COST;
+                        costs.push_back(tmpcost);
+                    }
+                }
+                for (k = 0; k < ntuples; k++) {
+                    file >> a;
+                    file >> b;
+                    file >> cost;
+                    Cost tmpcost = MULT(cost, K);
+                    if (CUT(tmpcost, getUb()) && (tmpcost < MEDIUM_COST * getUb()) && getUb() < (MAX_COST / MEDIUM_COST))
+                        tmpcost *= MEDIUM_COST;
+                    assert(a >= 0 && a < x->getDomainInitSize());
+                    assert(b >= 0 && b < y->getDomainInitSize());
+                    costs[a * y->getDomainInitSize() + b] = tmpcost;
+                }
+                if (shared) {
+                    sharedSize.push_back(costs.size());
+                    sharedCosts.push_back(costs);
+                    sharedTuples.push_back(emptyTuples);
+                }
+                if ((defval != MIN_COST) || (ntuples > 0))
+                    postBinaryConstraint(i, j, costs);
+            } else {
+                file >> funcname;
+                if (funcname == ">=") {
+                    file >> funcparam1;
+                    file >> funcparam2;
+                    postSupxyc(i, j, funcparam1, funcparam2);
+                } else if (funcname == ">") {
+                    file >> funcparam1;
+                    file >> funcparam2;
+                    postSupxyc(i, j, funcparam1 + 1, funcparam2);
+                } else if (funcname == "<=") {
+                    file >> funcparam1;
+                    file >> funcparam2;
+                    postSupxyc(j, i, -funcparam1, funcparam2);
+                } else if (funcname == "<") {
+                    file >> funcparam1;
+                    file >> funcparam2;
+                    postSupxyc(j, i, -funcparam1 + 1, funcparam2);
+                } else if (funcname == "=") {
+                    file >> funcparam1;
+                    file >> funcparam2;
+                    postSupxyc(i, j, funcparam1, funcparam2);
+                    postSupxyc(j, i, -funcparam1, funcparam2);
+                } else if (funcname == "disj") {
+                    Cost funcparam3;
+                    file >> funcparam1;
+                    file >> funcparam2;
+                    file >> funcparam3;
+                    postDisjunction(i, j, funcparam1, funcparam2, MULT(funcparam3, K));
+                } else if (funcname == "sdisj") {
+                    Value funcparam3;
+                    Value funcparam4;
+                    Cost funcparam5;
+                    Cost funcparam6;
+                    file >> funcparam1;
+                    file >> funcparam2;
+                    file >> funcparam3;
+                    file >> funcparam4;
+                    file >> funcparam5;
+                    file >> funcparam6;
+                    postSpecialDisjunction(i, j, funcparam1, funcparam2, funcparam3, funcparam4, MULT(funcparam5, K), MULT(funcparam6, K));
+                } else if(funcname=="knapsack"){
+                        int scopeIndex[2];
+                        scopeIndex[0] = i;
+                        scopeIndex[1] = j;
+                    postKnapsackConstraint(scopeIndex,arity,file);
+                }
+                else{
+                    int scopeIndex[2];
+                    scopeIndex[0] = i;
+                    scopeIndex[1] = j;
+                    if (funcname.substr(0, 1) == "w") { // global cost functions decomposed into a cost function network
+                        DecomposableGlobalCostFunction* decomposableGCF = DecomposableGlobalCostFunction::FactoryDGCF(funcname, arity, scopeIndex, file);
+                        decomposableGCF->addToCostFunctionNetwork(this);
+                    } else { // monolithic global cost functions
+                        postGlobalConstraint(scopeIndex, arity, funcname, file, &nbconstr);
+                    }
+                }
+            }
+            // ARITY 1
+        } else if (arity == 1) {
+            maxarity = max(maxarity, arity);
+            file >> i;
+            if (ToulBar2::verbose >= 3)
+                cout << "read unary cost function " << ic << " on " << i << endl;
+            if (vars[i]->enumerated()) {
+                EnumeratedVariable* x = (EnumeratedVariable*)vars[i];
+                file >> defval;
+                if (defval == -1) {
+                    int scopeIndex[1];
+                    scopeIndex[0] = i;
+                    string gcname;
+                    file >> gcname;
+                    if (gcname.substr(0, 1) == "w") { // global cost functions decomposed into a cost function network
+                        DecomposableGlobalCostFunction* decomposableGCF = DecomposableGlobalCostFunction::FactoryDGCF(gcname, arity, scopeIndex, file);
+                        decomposableGCF->addToCostFunctionNetwork(this);
+                    }else if(gcname=="knapsack"){
+                        int scopeIndex[1];
+                        scopeIndex[0] = i;
+                        postKnapsackConstraint(scopeIndex,arity,file);
+                      }
+                    else { // monolithic global cost functions
+                        postGlobalConstraint(scopeIndex, arity, gcname, file, &nbconstr);
+                    }
+                } else {
+                    file >> ntuples;
+                    TemporaryUnaryConstraint unaryconstr;
+                    unaryconstr.var = x;
+                    if (ntuples < 0) {
+                        int reusedconstr = -ntuples - 1;
+                        if (reusedconstr >= (int)sharedSize.size()) {
+                            cerr << "Shared cost function number " << reusedconstr << " not already defined! Cannot reuse it!" << endl;
+                            exit(EXIT_FAILURE);
+                        }
+                        ntuples = sharedSize[reusedconstr];
+                        assert(ntuples == (int)x->getDomainInitSize());
+                        unaryconstr.costs = sharedCosts[reusedconstr];
+                        unaryconstrs.push_back(unaryconstr);
+                        continue;
+                    }
+                    for (a = 0; a < x->getDomainInitSize(); a++) {
+                        Cost tmpcost = MULT(defval, K);
+                        if (CUT(tmpcost, getUb()) && (tmpcost < MEDIUM_COST * getUb()) && getUb() < (MAX_COST / MEDIUM_COST))
+                            tmpcost *= MEDIUM_COST;
+                        unaryconstr.costs.push_back(tmpcost);
+                    }
+                    for (k = 0; k < ntuples; k++) {
+                        file >> a;
+                        file >> cost;
+                        Cost tmpcost = MULT(cost, K);
+                        if (CUT(tmpcost, getUb()) && (tmpcost < MEDIUM_COST * getUb()) && getUb() < (MAX_COST / MEDIUM_COST))
+                            tmpcost *= MEDIUM_COST;
+                        assert(a >= 0 && a < x->getDomainInitSize());
+                        unaryconstr.costs[a] = tmpcost;
+                    }
+                    if (shared) {
+                        sharedSize.push_back(x->getDomainInitSize());
+                        sharedCosts.push_back(unaryconstr.costs);
+                        sharedTuples.push_back(emptyTuples);
+                    }
+                    unaryconstrs.push_back(unaryconstr);
+                }
+            } else {
+                file >> defval;
+                if (defval == MIN_COST) {
+                    cerr << "Error: unary cost function with zero penalty cost!" << endl;
+                    exit(EXIT_FAILURE);
+                }
+                file >> ntuples;
+                Value* dom = new Value[ntuples];
+                for (k = 0; k < ntuples; k++) {
+                    file >> dom[k];
+                    file >> cost;
+                    if (cost != MIN_COST) {
+                        cerr << "Error: unary cost function with non-zero cost tuple!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                }
+                postUnaryConstraint(i, dom, ntuples, defval);
+                delete[] dom;
+            }
+            // ARITY 0
+        } else if (arity == 0) {
+            file >> defval;
+            file >> ntuples;
+            if (ToulBar2::verbose >= 3)
+                cout << "read global lower bound contribution " << ic << " of " << defval << endl;
+            if (ntuples > 1) {
+                cerr << "Error: global lower bound contribution with several tuples!" << endl;
+                exit(EXIT_FAILURE);
+            }
+            if (ntuples == 1)
+                file >> cost;
+            else
+                cost = defval;
+            inclowerbound += MULT(cost, K);
+        }
+    }
+
+    file >> funcname;
+    if (file) {
+        cerr << "Warning: EOF not reached after reading all the cost functions (initial number of cost functions too small?)" << endl;
+    }
+
+    // merge unarycosts if they are on the same variable
+    vector<int> seen(nbvar, -1);
+    vector<TemporaryUnaryConstraint> newunaryconstrs;
+    for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+        if (seen[unaryconstrs[u].var->wcspIndex] == -1) {
+            seen[unaryconstrs[u].var->wcspIndex] = newunaryconstrs.size();
+            newunaryconstrs.push_back(unaryconstrs[u]);
+        } else {
+            for (unsigned int i = 0; i < unaryconstrs[u].var->getDomainInitSize(); i++) {
+                if (newunaryconstrs[seen[unaryconstrs[u].var->wcspIndex]].costs[i] < getUb()) {
+                    if (unaryconstrs[u].costs[i] < getUb())
+                        newunaryconstrs[seen[unaryconstrs[u].var->wcspIndex]].costs[i] += unaryconstrs[u].costs[i];
+                    else
+                        newunaryconstrs[seen[unaryconstrs[u].var->wcspIndex]].costs[i] = getUb();
+                }
+            }
+        }
+    }
+    unaryconstrs = newunaryconstrs;
+    if (ToulBar2::sortDomains) {
+        if (maxarity > 2) {
+            cerr << "Error: cannot sort domains in preprocessing with non-binary cost functions." << endl;
+            exit(EXIT_FAILURE);
+        } else {
+            ToulBar2::sortedDomains.clear();
+            for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+                ToulBar2::sortedDomains[unaryconstrs[u].var->wcspIndex] = unaryconstrs[u].var->sortDomain(unaryconstrs[u].costs);
+            }
+        }
+    }
+
+    // apply basic initial propagation AFTER complete network loading
+    increaseLb(inclowerbound);
+
+    // unary cost functions are delayed for compatibility issue (same lowerbound found) with old toolbar solver
+    for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+        postUnaryConstraint(unaryconstrs[u].var->wcspIndex, unaryconstrs[u].costs);
+    }
+    sortConstraints();
+
+    if (ToulBar2::verbose >= 0)
+        cout << "Read " << nbvar << " variables, with " << nbvaltrue << " values at most, and " << nbconstr << " cost functions, with maximum arity " << maxarity << "." << endl;
+}
+
+void WCSP::read_random(int n, int m, vector<int>& p, int seed, bool forceSubModular, string globalname)
+{
+    if (ToulBar2::externalUB.size()) {
+        Cost top = string2Cost(ToulBar2::externalUB.c_str());
+        double K = ToulBar2::costMultiplier;
+        if (top < MAX_COST / K)
+            top = top * K;
+        else
+            top = MAX_COST;
+        ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(top, getUb())));
+        updateUb(top + ToulBar2::deltaUb);
+        // as long as a true certificate as not been found we must compensate for the deltaUb in CUT
+    }
+    naryRandom randwcsp(this, seed);
+    randwcsp.Input(n, m, p, forceSubModular, globalname);
+
+    unsigned int nbconstr = numberOfConstraints();
+    sortConstraints();
+
+    if (ToulBar2::verbose >= 0) {
+        cout << "Generated random problem " << n << " variables, with " << m << " values, and " << nbconstr << " cost functions." << endl;
+    }
+}
+
+void WCSP::read_uai2008(const char* fileName)
+{
+    // Compute the factor that enables to capture the difference in log for probability (1-10^resolution):
+    ToulBar2::NormFactor = (-1.0 / Log1p(-Exp10(-(TLogProb)ToulBar2::resolution)));
+    if (ToulBar2::NormFactor > (Pow((TProb)2., (TProb)INTEGERBITS) - 1) / (TLogProb)ToulBar2::resolution) {
+        cerr << "This resolution cannot be ensured on the data type used to represent costs." << endl;
+        exit(EXIT_FAILURE);
+    } else if (ToulBar2::verbose >= 1) {
+        cout << "NormFactor= " << ToulBar2::NormFactor << endl;
+    }
+
+    // Cost inclowerbound = MIN_COST;
+    string uaitype;
+    ifstream rfile(fileName, (ToulBar2::gz || ToulBar2::xz) ? (std::ios_base::in | std::ios_base::binary) : (std::ios_base::in));
+#ifdef BOOST
+    boost::iostreams::filtering_streambuf<boost::iostreams::input> zfile;
+    if (ToulBar2::gz) {
+        zfile.push(boost::iostreams::gzip_decompressor());
+    } else if (ToulBar2::xz) {
+#if (BOOST_VERSION >= 106500)
+        zfile.push(boost::iostreams::lzma_decompressor());
+#else
+        cerr << "Error: compiling with Boost version 1.65 or higher is needed to allow to read xz compressed uai/LG format files." << endl;
+        exit(EXIT_FAILURE);
+#endif
+    }
+    zfile.push(rfile);
+    istream ifile(&zfile);
+
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open uai file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : ifile;
+#else
+    if (ToulBar2::gz || ToulBar2::xz) {
+        cerr << "Error: compiling with Boost iostreams library is needed to allow to read compressed uai format files." << endl;
+        exit(EXIT_FAILURE);
+    }
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open uai file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : rfile;
+#endif
+
+    Cost inclowerbound = MIN_COST;
+    updateUb((MAX_COST - UNIT_COST) / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST);
+    Cost upperbound = UNIT_COST;
+
+    int nbval = 0;
+    int nbvar, nbconstr;
+    int i, j, k, ic;
+    string varname;
+    int domsize;
+    EnumeratedVariable* x;
+    EnumeratedVariable* y;
+    EnumeratedVariable* z;
+    unsigned int a;
+    unsigned int b;
+    unsigned int c;
+    Cost cost;
+    int ntuples;
+    int arity;
+    int maxarity = 0;
+    vector<TemporaryUnaryConstraint> unaryconstrs;
+
+    list<int> lctrs;
+
+    file >> uaitype;
+
+    if (ToulBar2::verbose >= 3)
+        cout << "Reading " << uaitype << "  file." << endl;
+
+    bool markov = (uaitype == string("MARKOV"));
+    //bool bayes = uaitype == string("BAYES");
+
+    file >> nbvar;
+    // read variable domain sizes
+    for (i = 0; i < nbvar; i++) {
+        string varname;
+        varname = "x" + to_string(i);
+        file >> domsize;
+        if (ToulBar2::verbose >= 3)
+            cout << "read variable " << i << " of size " << domsize << endl;
+        if (domsize > nbval)
+            nbval = domsize;
+        DEBONLY(int theindex =)
+        ((domsize >= 0) ? makeEnumeratedVariable(varname, 0, domsize - 1) : makeIntervalVariable(varname, 0, -domsize - 1));
+        assert(theindex == i);
+    }
+
+    file >> nbconstr;
+    // read each constraint
+    for (ic = 0; ic < nbconstr; ic++) {
+        file >> arity;
+        if (!file) {
+            cerr << "Warning: EOF reached before reading all the scopes (initial number of factors too large?)" << endl;
+            break;
+        }
+        maxarity = max(maxarity, arity);
+
+        if (arity > MAX_ARITY) {
+            cerr << "Nary cost functions of arity > " << MAX_ARITY << " not supported" << endl;
+            exit(EXIT_FAILURE);
+        }
+        if (!file) {
+            cerr << "Warning: EOF reached before reading all the cost functions (initial number of cost functions too large?)" << endl;
+            break;
+        }
+
+        if (arity > 3) {
+            int scopeIndex[MAX_ARITY];
+            if (ToulBar2::verbose >= 3)
+                cout << "read nary cost function on ";
+
+            for (i = 0; i < arity; i++) {
+                file >> j;
+                scopeIndex[i] = j;
+                if (ToulBar2::verbose >= 3)
+                    cout << j << " ";
+            }
+            if (ToulBar2::verbose >= 3)
+                cout << endl;
+            lctrs.push_back(postNaryConstraintBegin(scopeIndex, arity, MIN_COST, LONGLONG_MAX));
+            assert(lctrs.back() >= 0);
+        } else if (arity == 3) {
+            file >> i;
+            file >> j;
+            file >> k;
+            if ((i == j) || (i == k) || (k == j)) {
+                cerr << "Error: ternary cost function!" << endl;
+                exit(EXIT_FAILURE);
+            }
+            x = (EnumeratedVariable*)vars[i];
+            y = (EnumeratedVariable*)vars[j];
+            z = (EnumeratedVariable*)vars[k];
+            if (ToulBar2::verbose >= 3)
+                cout << "read ternary cost function " << ic << " on " << i << "," << j << "," << k << endl;
+            vector<Cost> costs;
+            for (a = 0; a < x->getDomainInitSize(); a++) {
+                for (b = 0; b < y->getDomainInitSize(); b++) {
+                    for (c = 0; c < z->getDomainInitSize(); c++) {
+                        costs.push_back(MIN_COST);
+                    }
+                }
+            }
+            lctrs.push_back(postTernaryConstraint(i, j, k, costs));
+            assert(lctrs.back() >= 0);
+        } else if (arity == 2) {
+            file >> i;
+            file >> j;
+            if (ToulBar2::verbose >= 3)
+                cout << "read binary cost function " << ic << " on " << i << "," << j << endl;
+            if (i == j) {
+                cerr << "Error: binary cost function with only one variable in its scope!" << endl;
+                exit(EXIT_FAILURE);
+            }
+            x = (EnumeratedVariable*)vars[i];
+            y = (EnumeratedVariable*)vars[j];
+            vector<Cost> costs;
+            for (a = 0; a < x->getDomainInitSize(); a++) {
+                for (b = 0; b < y->getDomainInitSize(); b++) {
+                    costs.push_back(MIN_COST);
+                }
+            }
+            lctrs.push_back(postBinaryConstraint(i, j, costs));
+            assert(lctrs.back() >= 0);
+        } else if (arity == 1) {
+            file >> i;
+            if (ToulBar2::verbose >= 3)
+                cout << "read unary cost function " << ic << " on " << i << endl;
+            x = (EnumeratedVariable*)vars[i];
+            TemporaryUnaryConstraint unaryconstr;
+            unaryconstr.var = x;
+            unaryconstrs.push_back(unaryconstr);
+            lctrs.push_back(-1);
+        } else if (arity == 0) {
+            lctrs.push_back(-2);
+        }
+    }
+
+    int iunaryctr = 0;
+    int ictr = 0;
+    Constraint* ctr = NULL;
+    TernaryConstraint* tctr = NULL;
+    BinaryConstraint* bctr = NULL;
+    NaryConstraint* nctr = NULL;
+    Tuple s;
+
+    ToulBar2::markov_log = 0; // for the MARKOV Case
+
+    int ntuplesarray[lctrs.size()];
+    vector<vector<Cost>> costs;
+    costs.resize(lctrs.size());
+    list<int>::iterator it = lctrs.begin();
+    while (it != lctrs.end()) {
+        file >> ntuples;
+        if (!file) {
+            cerr << "Warning: EOF reached before reading all the factor tables (initial number of factors too large?)" << endl;
+            break;
+        }
+        ntuplesarray[ictr] = ntuples;
+
+        TProb p;
+        vector<TProb> costsProb;
+
+        TProb maxp = 0.;
+        for (k = 0; k < ntuples; k++) {
+            file >> p;
+            assert(ToulBar2::uai > 1 || (p >= 0. && (markov || p <= 1.)));
+            costsProb.push_back(p);
+            maxp = max(maxp, p);
+        }
+        if (ToulBar2::uai == 1 && maxp == 0.)
+            THROWCONTRADICTION;
+        if (ToulBar2::uai == 2 && maxp < -1e38)
+            THROWCONTRADICTION;
+
+        Cost minc = MAX_COST;
+        Cost maxc = MIN_COST;
+        for (k = 0; k < ntuples; k++) {
+            p = costsProb[k];
+            Cost cost;
+            // ToulBar2::uai is 1 for .uai and 2 for .LG (log domain)
+            if (markov)
+                cost = ((ToulBar2::uai > 1) ? LogProb2Cost((TLogProb)(p - maxp)) : Prob2Cost(p / maxp));
+            else
+                cost = ((ToulBar2::uai > 1) ? LogProb2Cost((TLogProb)p) : Prob2Cost(p));
+            costs[ictr].push_back(cost);
+            if (cost < minc)
+                minc = cost;
+            if (cost > maxc && cost < getUb())
+                maxc = cost;
+        }
+        upperbound += maxc;
+
+        if (ToulBar2::preprocessNary > 0 && minc > MIN_COST) {
+            for (k = 0; k < ntuples; k++) {
+                costs[ictr][k] -= minc;
+            }
+            if (ToulBar2::verbose >= 2)
+                cout << "IC0 performed for cost function " << ictr << " with initial minimum cost " << minc << endl;
+            inclowerbound += minc;
+        }
+
+        if (markov)
+            ToulBar2::markov_log += ((ToulBar2::uai > 1) ? maxp : Log(maxp));
+
+        ictr++;
+        ++it;
+    }
+
+    file >> varname;
+    if (file) {
+        cerr << "Warning: EOF not reached after reading all the factor tables (initial number of factors too small?)" << endl;
+    }
+
+    updateUb(upperbound);
+
+    ictr = 0;
+    it = lctrs.begin();
+    while (it != lctrs.end()) {
+        ntuples = ntuplesarray[ictr];
+        for (k = 0; k < ntuples; k++) {
+            if (CUT(costs[ictr][k], getUb()))
+                costs[ictr][k] = getUb() * MEDIUM_COST;
+        }
+
+        int arity;
+        if (*it == -1) {
+            ctr = NULL;
+            arity = 1;
+        } else if (*it == -2) {
+            ctr = NULL;
+            arity = 0;
+        } else {
+            assert(*it >= 0);
+            ctr = getCtr(*it);
+            arity = ctr->arity();
+        }
+        switch (arity) {
+        case 0: {
+            inclowerbound += costs[ictr][0];
+            break;
+        }
+
+        case 1: {
+            unaryconstrs[iunaryctr].costs.clear();
+            for (a = 0; a < unaryconstrs[iunaryctr].var->getDomainInitSize(); a++) {
+                unaryconstrs[iunaryctr].costs.push_back(costs[ictr][a]);
+            }
+            iunaryctr++;
+            if (ToulBar2::verbose >= 3)
+                cout << "read unary costs." << endl;
+            break;
+        }
+
+        case 2: {
+            bctr = (BinaryConstraint*)ctr;
+            x = (EnumeratedVariable*)bctr->getVar(0);
+            y = (EnumeratedVariable*)bctr->getVar(1);
+            postBinaryConstraint(x->wcspIndex, y->wcspIndex, costs[ictr]);
+            if (ToulBar2::verbose >= 3)
+                cout << "read binary costs." << endl;
+            break;
+        }
+
+        case 3: {
+            tctr = (TernaryConstraint*)ctr;
+            x = (EnumeratedVariable*)tctr->getVar(0);
+            y = (EnumeratedVariable*)tctr->getVar(1);
+            z = (EnumeratedVariable*)tctr->getVar(2);
+            postTernaryConstraint(x->wcspIndex, y->wcspIndex, z->wcspIndex, costs[ictr]);
+            if (ToulBar2::verbose >= 3)
+                cout << "read ternary costs." << endl;
+            break;
+        }
+
+        default: {
+            nctr = (NaryConstraint*)ctr;
+            j = 0;
+            nctr->firstlex();
+            while (nctr->nextlex(s, cost)) {
+                //					  if (costs[j]>MIN_COST) nctr->setTuple(s, costs[j]);
+                postNaryConstraintTuple(nctr->wcspIndex, s, costs[ictr][j]);
+                j++;
+            }
+            if (ToulBar2::verbose >= 3)
+                cout << "read arity " << arity << " table costs." << endl;
+            postNaryConstraintEnd(nctr->wcspIndex);
+            break;
+        }
+        }
+        ictr++;
+        ++it;
+    }
+    if (ToulBar2::verbose >= 1) {
+        cout << "MarkovShiftingValue= " << ToulBar2::markov_log << endl;
+    }
+
+    // apply basic initial propagation AFTER complete network loading
+    increaseLb(inclowerbound);
+
+    for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+        postUnaryConstraint(unaryconstrs[u].var->wcspIndex, unaryconstrs[u].costs);
+    }
+    sortConstraints();
+    if (ToulBar2::verbose >= 0)
+        cout << "Read " << nbvar << " variables, with " << nbval << " values at most, and " << nbconstr << " cost functions, with maximum arity " << maxarity << "." << endl;
+
+    int nevi = 0;
+    ifstream fevid(ToulBar2::evidence_file.c_str());
+    if (!fevid) {
+        string strevid(string(fileName) + string(".evid"));
+        fevid.open(strevid.c_str());
+        if (ToulBar2::verbose >= 0)
+            cout << "No evidence file specified. Trying " << strevid << endl;
+        if (!fevid)
+            if (ToulBar2::verbose >= 0)
+                cout << "No evidence file. " << endl;
+    }
+    if (fevid) {
+        vector<int> variables;
+        vector<Value> values;
+        fevid >> nevi;
+        bool firstevid = true;
+        if (nevi == 0)
+            return;
+        if (nevi == 1)
+            fevid >> nevi; // UAI 2010 evidence file format assumes possible multiple evidence samples, but toulbar2 will search for the first evidence sample only!
+        while (nevi) {
+            if (!fevid) {
+                cerr << "Error: incorrect number of evidences." << endl;
+                exit(EXIT_FAILURE);
+            }
+            fevid >> i;
+            fevid >> j;
+            if (firstevid && !fevid) { // old UAI 2008 evidence format
+                variables.push_back(nevi);
+                values.push_back(i);
+                break;
+            } else
+                firstevid = false;
+            variables.push_back(i);
+            values.push_back(j);
+            nevi--;
+        }
+        assignLS(variables, values);
+    }
+}
+
+void WCSP::solution_UAI(Cost res)
+{
+    if (!ToulBar2::uai && !ToulBar2::uaieval)
+        return;
+    if (ToulBar2::isZ)
+        return;
+    if (ToulBar2::solution_uai_file == NULL)
+        return;
+    // UAI 2012 Challenge output format
+    //	    ToulBar2::solution_file << "-BEGIN-" << endl;
+    rewind(ToulBar2::solution_uai_file);
+    fprintf(ToulBar2::solution_uai_file, "MPE\n");
+    //	ToulBar2::solution_file << "1" << endl; // we assume a single evidence sample
+    //    if (ToulBar2::showSolutions && !ToulBar2::uaieval) {
+    //        cout << "t " << cpuTime() - ToulBar2::startCpuTime << endl;
+    //        cout << "s " << -(Cost2LogProb(res) + ToulBar2::markov_log) << endl;
+    //        cout << numberOfVariables();
+    //        printSolution(cout);
+    //    }
+    fprintf(ToulBar2::solution_uai_file, "%d ", numberOfVariables());
+    printSolution(ToulBar2::solution_uai_file);
+    fprintf(ToulBar2::solution_uai_file, "\n");
+    //	if (opt) {
+    //	  if (ToulBar2::showSolutions) cout << " LU" << endl;
+    //	  ToulBar2::solution_file << " LU" << endl;
+    //	} else {
+    //	  if (ToulBar2::showSolutions) cout << " L" << endl;
+    //	  ToulBar2::solution_file << " L" << endl;
+    //	}
+}
+
+#ifdef XMLFLAG
+#include "./xmlcsp/xmlcsp.h"
+#endif
+
+void WCSP::read_XML(const char* fileName)
+{
+#ifdef XMLFLAG
+    MyCallback xmlCallBack;
+    xmlCallBack.wcsp = this;
+    xmlCallBack.fname = string(fileName);
+    xmlCallBack.convertWCSP = true;
+    try {
+        XMLParser_libxml2<> parser(xmlCallBack);
+        parser.setPreferredExpressionRepresentation(INFIX_C);
+        parser.parse(fileName);
+    } catch (exception& e) {
+        cout.flush();
+        cerr << "\n\tUnexpected exception in XML parsing\n";
+        cerr << "\t" << e.what() << endl;
+        exit(EXIT_FAILURE);
+    }
+#else
+    cerr << "\nXML format without including in Makefile flag XMLFLAG and files ./xmlcsp\n"
+         << endl;
+    exit(EXIT_FAILURE);
+#endif
+}
+
+void WCSP::solution_XML(bool opt)
+{
+#ifdef XMLFLAG
+    if (!ToulBar2::xmlflag)
+        return;
+
+    if (opt)
+        cout << "s OPTIMUM FOUND" << endl;
+
+    //ofstream fsol;
+    //ifstream sol;
+    //sol.open(ToulBar2::writeSolution);
+    //if(!sol) { cout << "cannot open solution file to translate" << endl; exit(EXIT_FAILURE); }
+    //fsol.open("solution");
+    //fsol << "SOL ";
+
+    freopen(NULL, "r", ToulBar2::solutionFile);
+    cout << "v ";
+    for (unsigned int i = 0; i < vars.size(); i++) {
+        int value;
+        //soll >> value;
+        fscanf(ToulBar2::solutionFile, "%d", &value);
+        int index = ((EnumeratedVariable*)getVar(i))->toIndex(value);
+        cout << Doms[varsDom[i]][index] << " ";
+    }
+    cout << endl;
+    freopen(NULL, "w", ToulBar2::solutionFile);
+
+//fsol << endl;
+//fsol.close();
+//sol.close();
+#endif
+}
+
+void WCSP::read_wcnf(const char* fileName)
+{
+    ifstream rfile(fileName, (ToulBar2::gz || ToulBar2::xz) ? (std::ios_base::in | std::ios_base::binary) : (std::ios_base::in));
+#ifdef BOOST
+    boost::iostreams::filtering_streambuf<boost::iostreams::input> zfile;
+    if (ToulBar2::gz) {
+        zfile.push(boost::iostreams::gzip_decompressor());
+    } else if (ToulBar2::xz) {
+#if (BOOST_VERSION >= 106500)
+        zfile.push(boost::iostreams::lzma_decompressor());
+#else
+        cerr << "Error: compiling with Boost version 1.65 or higher is needed to allow to read xz compressed cnf/wcnf format files." << endl;
+        exit(EXIT_FAILURE);
+#endif
+    }
+    zfile.push(rfile);
+    istream ifile(&zfile);
+
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open wcnf file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : ifile;
+#else
+    if (ToulBar2::gz || ToulBar2::xz) {
+        cerr << "Error: compiling with Boost iostreams library is needed to allow to read compressed wcnf format files." << endl;
+        exit(EXIT_FAILURE);
+    }
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open wcnf file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : rfile;
+#endif
+
+    double K = ToulBar2::costMultiplier;
+    Cost inclowerbound = MIN_COST;
+    updateUb((MAX_COST - UNIT_COST) / MEDIUM_COST / MEDIUM_COST);
+
+    int maxarity = 0;
+    vector<TemporaryUnaryConstraint> unaryconstrs;
+
+    int nbvar, nbclauses;
+    string dummy, sflag;
+
+    file >> sflag;
+    while (sflag[0] == 'c') {
+        getline(file, dummy);
+        file >> sflag;
+    }
+    if (sflag != "p") {
+        cerr << "Wrong wcnf format in " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    string format, strtop;
+    Cost top;
+    file >> format;
+    file >> nbvar;
+    file >> nbclauses;
+    if (format == "wcnf") {
+        getline(file, strtop);
+        if (string2Cost((char*)strtop.c_str()) > 0) {
+            if (ToulBar2::verbose >= 0)
+                cout << "c (Weighted) Partial Max-SAT input format" << endl;
+            top = string2Cost((char*)strtop.c_str());
+            if (top < MAX_COST / K)
+                top = top * K;
+            else
+                top = MAX_COST;
+            ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(top, getUb())));
+            updateUb(top + ToulBar2::deltaUb);
+        } else {
+            if (ToulBar2::verbose >= 0)
+                cout << "c Weighted Max-SAT input format" << endl;
+        }
+    } else {
+        if (ToulBar2::verbose >= 0)
+            cout << "c Max-SAT input format" << endl;
+        Cost top = (nbclauses + 1) * K;
+        ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(top, getUb())));
+        updateUb(top + ToulBar2::deltaUb);
+    }
+
+    // create Boolean variables
+    for (int i = 0; i < nbvar; i++) {
+        string varname;
+        varname = "x" + to_string(i);
+        DEBONLY(int theindex =)
+        makeEnumeratedVariable(varname, 0, 1);
+        assert(theindex == i);
+    }
+
+    // Read each clause
+    Tuple tup;
+    for (int ic = 0; ic < nbclauses; ic++) {
+
+        int scopeIndex[MAX_ARITY];
+        tup.clear();
+        int arity = 0;
+        if (ToulBar2::verbose >= 3)
+            cout << "read clause on ";
+        int j = 0;
+        Cost cost = UNIT_COST;
+        if (format == "wcnf")
+            file >> cost;
+        bool tautology = false;
+        do {
+            file >> j;
+            if (j != 0 && !tautology) {
+                scopeIndex[arity] = abs(j) - 1;
+                if (arity < (int)tup.size()) {
+                    tup[arity] = ((j > 0) ? 0 : 1);
+                } else {
+                    tup.push_back((j > 0) ? 0 : 1);
+                }
+                int k = 0;
+                while (k < arity) {
+                    if (scopeIndex[k] == scopeIndex[arity]) {
+                        break;
+                    }
+                    k++;
+                }
+                if (k < arity) {
+                    if (tup[k] != tup[arity]) {
+                        tautology = true;
+                        if (ToulBar2::verbose >= 3)
+                            cout << j << " is a tautology! skipped.";
+                    }
+                    continue;
+                }
+                arity++;
+                if (ToulBar2::verbose >= 3)
+                    cout << j << " ";
+            }
+        } while (j != 0);
+        if (ToulBar2::verbose >= 3)
+            cout << endl;
+        if (tautology)
+            continue;
+
+        maxarity = max(maxarity, arity);
+
+        if (arity > 3) {
+            int index = postNaryConstraintBegin(scopeIndex, arity, MIN_COST, 1);
+            postNaryConstraintTuple(index, tup, MULT(cost, K));
+            postNaryConstraintEnd(index);
+        } else if (arity == 3) {
+            vector<Cost> costs;
+            for (int a = 0; a < 2; a++) {
+                for (int b = 0; b < 2; b++) {
+                    for (int c = 0; c < 2; c++) {
+                        costs.push_back(MIN_COST);
+                    }
+                }
+            }
+            costs[(tup[0]) * 4 + (tup[1]) * 2 + (tup[2])] = MULT(cost, K);
+            postTernaryConstraint(scopeIndex[0], scopeIndex[1], scopeIndex[2], costs);
+        } else if (arity == 2) {
+            vector<Cost> costs;
+            for (int a = 0; a < 2; a++) {
+                for (int b = 0; b < 2; b++) {
+                    costs.push_back(MIN_COST);
+                }
+            }
+            costs[(tup[0]) * 2 + (tup[1])] = MULT(cost, K);
+            postBinaryConstraint(scopeIndex[0], scopeIndex[1], costs);
+        } else if (arity == 1) {
+            EnumeratedVariable* x = (EnumeratedVariable*)vars[scopeIndex[0]];
+            TemporaryUnaryConstraint unaryconstr;
+            unaryconstr.var = x;
+            if ((tup[0]) == 0) {
+                unaryconstr.costs.push_back(MULT(cost, K));
+                unaryconstr.costs.push_back(MIN_COST);
+            } else {
+                unaryconstr.costs.push_back(MIN_COST);
+                unaryconstr.costs.push_back(MULT(cost, K));
+            }
+            unaryconstrs.push_back(unaryconstr);
+        } else if (arity == 0) {
+            inclowerbound += MULT(cost, K);
+        } else {
+            cerr << "Wrong clause arity " << arity << " in " << fileName << endl;
+            exit(EXIT_FAILURE);
+        }
+    }
+
+    file >> dummy;
+    if (file) {
+        cerr << "Warning: EOF not reached after reading all the clauses (initial number of clauses too small?)" << endl;
+    }
+
+    // apply basic initial propagation AFTER complete network loading
+    increaseLb(inclowerbound);
+
+    for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+        postUnaryConstraint(unaryconstrs[u].var->wcspIndex, unaryconstrs[u].costs);
+    }
+    sortConstraints();
+    if (ToulBar2::verbose >= 0)
+        cout << "c Read " << nbvar << " variables, with 2 values at most, and " << nbclauses << " clauses, with maximum arity " << maxarity << "." << endl;
+}
+
+/// \brief minimizes/maximizes \f$ X^t \times W \times X = \sum_{i=1}^N \sum_{j=1}^N W_{ij} \times X_i \times X_j \f$
+/// where W is expressed by its M non-zero triangle matrix terms (W_ij, i<=j, it can be positive or negative float numbers)
+/// \note Quadratic terms for \f$ i < j \f$ are multiplied by 2 (see option -qpmult to change this value) to get a symmetric N*N squared matrix
+/// \note If N is positive, then variable domain values are {0,1}
+/// \note If N is negative, then variable domain values are {1,-1} with value 1 having index 0 and value -1 having index 1 in the output solutions
+/// \note If M is positive then minimizes the quadratic objective function, else maximizes it
+/// \warning It does not allow infinite costs (no forbidden assignments)
+void WCSP::read_qpbo(const char* fileName)
+{
+    ifstream rfile(fileName, (ToulBar2::gz || ToulBar2::xz) ? (std::ios_base::in | std::ios_base::binary) : (std::ios_base::in));
+#ifdef BOOST
+    boost::iostreams::filtering_streambuf<boost::iostreams::input> zfile;
+    if (ToulBar2::gz) {
+        zfile.push(boost::iostreams::gzip_decompressor());
+    } else if (ToulBar2::xz) {
+#if (BOOST_VERSION >= 106500)
+        zfile.push(boost::iostreams::lzma_decompressor());
+#else
+        cerr << "Error: compiling with Boost version 1.65 or higher is needed to allow to read xz compressed qpbo format files." << endl;
+        exit(EXIT_FAILURE);
+#endif
+    }
+    zfile.push(rfile);
+    istream ifile(&zfile);
+
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open qpbo file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : ifile;
+#else
+    if (ToulBar2::gz || ToulBar2::xz) {
+        cerr << "Error: compiling with Boost iostreams library is needed to allow to read compressed qpbo format files." << endl;
+        exit(EXIT_FAILURE);
+    }
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open qpbo file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : rfile;
+#endif
+
+    int n = 0;
+    file >> n;
+    bool booldom = (n >= 0); // n positive means variable domains {0,1} else {1,-1}
+    if (!booldom)
+        n = -n;
+    int m = 0;
+    file >> m;
+    if (n == 0 || m == 0)
+        return;
+    bool minimize = (m >= 0); // m positive means minimize the quadratic function, else maximize it
+    if (!minimize)
+        m = -m;
+    int e = 0;
+    int dummy;
+
+    vector<int> posx(m, 0);
+    vector<int> posy(m, 0);
+    vector<double> cost(m, 0.);
+    for (e = 0; e < m; e++) {
+        file >> posx[e];
+
+        if (!file) {
+            cerr << "Warning: EOF reached before reading all the cost sparse matrix (number of nonzero costs too large?)" << endl;
+            break;
+        }
+        if (posx[e] > n) {
+            cerr << "Warning: variable index too large!" << endl;
+            break;
+        }
+        file >> posy[e];
+        if (posy[e] > n) {
+            cerr << "Warning: variable index too large!" << endl;
+            break;
+        }
+        file >> cost[e];
+    }
+    file >> dummy;
+    if (file) {
+        cerr << "Warning: EOF not reached after reading all the cost sparse matrix (wrong number of nonzero costs too small?)" << endl;
+    }
+    m = e;
+
+    // create Boolean variables
+    for (int i = 0; i < n; i++) {
+        makeEnumeratedVariable("x" + to_string(i), 0, 1);
+    }
+
+    vector<Cost> unaryCosts0(n, 0);
+    vector<Cost> unaryCosts1(n, 0);
+
+    // find total cost
+    Double sumcost = 0.;
+    for (int e = 0; e < m; e++) {
+        sumcost += 2. * abs(cost[e]);
+    }
+    Double multiplier = Exp10((Double)ToulBar2::resolution);
+    ToulBar2::costMultiplier = multiplier;
+    if (!minimize)
+        ToulBar2::costMultiplier *= -1.0;
+    if (multiplier * sumcost >= (Double)MAX_COST) {
+        cerr << "This resolution cannot be ensured on the data type used to represent costs! (see option -precision)" << endl;
+        exit(EXIT_FAILURE);
+    }
+    Cost top = (Cost)multiplier * sumcost + 1;
+    ToulBar2::deltaUb = max(ToulBar2::deltaUbAbsolute, (Cost)(ToulBar2::deltaUbRelativeGap * (Double)min(top, getUb())));
+    updateUb(top + ToulBar2::deltaUb);
+
+    // create weighted binary clauses
+    for (int e = 0; e < m; e++) {
+        if (posx[e] != posy[e]) {
+            vector<Cost> costs(4, 0);
+            if (booldom) {
+                if (cost[e] > 0) {
+                    if (minimize) {
+                        costs[3] = (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * cost[e]);
+                    } else {
+                        costs[0] = (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * cost[e]);
+                        costs[1] = costs[0];
+                        costs[2] = costs[0];
+                        negCost += costs[0];
+                    }
+                } else {
+                    if (minimize) {
+                        costs[0] = (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * -cost[e]);
+                        costs[1] = costs[0];
+                        costs[2] = costs[0];
+                        negCost += costs[0];
+                    } else {
+                        costs[3] = (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * -cost[e]);
+                    }
+                }
+            } else {
+                if (cost[e] > 0) {
+                    if (minimize) {
+                        costs[0] = (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * 2. * cost[e]);
+                        costs[3] = costs[0];
+                        negCost += (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * cost[e]);
+                    } else {
+                        costs[1] = (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * 2. * cost[e]);
+                        costs[2] = costs[1];
+                        negCost += (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * cost[e]);
+                    }
+                } else {
+                    if (minimize) {
+                        costs[1] = (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * -2. * cost[e]);
+                        costs[2] = costs[1];
+                        negCost += (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * -cost[e]);
+                    } else {
+                        costs[0] = (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * -2. * cost[e]);
+                        costs[3] = costs[0];
+                        negCost += (Cost)(multiplier * ToulBar2::qpboQuadraticCoefMultiplier * -cost[e]);
+                    }
+                }
+            }
+            postBinaryConstraint(posx[e] - 1, posy[e] - 1, costs);
+        } else {
+            if (booldom) {
+                if (cost[e] > 0) {
+                    if (minimize) {
+                        unaryCosts1[posx[e] - 1] += (Cost)(multiplier * cost[e]);
+                    } else {
+                        unaryCosts0[posx[e] - 1] += (Cost)(multiplier * cost[e]);
+                        negCost += (Cost)(multiplier * cost[e]);
+                    }
+                } else {
+                    if (minimize) {
+                        unaryCosts0[posx[e] - 1] += (Cost)(multiplier * -cost[e]);
+                        negCost += (Cost)(multiplier * -cost[e]);
+                    } else {
+                        unaryCosts1[posx[e] - 1] += (Cost)(multiplier * -cost[e]);
+                    }
+                }
+            } else {
+                if (cost[e] > 0) {
+                    if (minimize) {
+                        unaryCosts0[posx[e] - 1] += (Cost)(multiplier * 2. * cost[e]);
+                        negCost += (Cost)(multiplier * cost[e]);
+                    } else {
+                        unaryCosts1[posx[e] - 1] += (Cost)(multiplier * 2. * cost[e]);
+                        negCost += (Cost)(multiplier * cost[e]);
+                    }
+                } else {
+                    if (minimize) {
+                        unaryCosts1[posx[e] - 1] += (Cost)(multiplier * -2. * cost[e]);
+                        negCost += (Cost)(multiplier * -cost[e]);
+                    } else {
+                        unaryCosts0[posx[e] - 1] += (Cost)(multiplier * -2. * cost[e]);
+                        negCost += (Cost)(multiplier * -cost[e]);
+                    }
+                }
+            }
+        }
+    }
+
+    // create weighted unary clauses
+    for (int i = 0; i < n; i++) {
+        if (unaryCosts0[i] > 0 || unaryCosts1[i] > 0) {
+            vector<Cost> costs(2, 0);
+            costs[0] = unaryCosts0[i];
+            costs[1] = unaryCosts1[i];
+            postUnaryConstraint(i, costs);
+        }
+    }
+    sortConstraints();
+    if (ToulBar2::verbose >= 0) {
+        cout << "Read " << n << " variables, with " << 2 << " values at most, and " << m << " nonzero matrix costs (quadratic coef. multiplier: " << ToulBar2::qpboQuadraticCoefMultiplier << ", shifting value: " << -negCost << ")" << endl;
+    }
+}
+
+bool isInteger(string &s) {return string("0123456789+-").find(s[0]) != string::npos;}
+/// \param file: input file
+/// \param token: in: previous token, out: new token (read from file or from the end of the previous token)
+/// \param keep: in: relative position to start reading from the previous token (if positive and greater or equal to previous token size then reads from file else if negative subtracts from the end), out: size of the new token
+/// \warning if new token is + or - then replace to +1 or -1
+/// \warning if new token is +varname or -varname then split into +1 varname or -1 varname
+void readToken(istream &file, string &token, int *keep = NULL)
+{
+    if (keep==NULL || *keep >= (int)token.size()) {
+        file >> token;
+    } else if (*keep>=0) {
+        token = token.substr(*keep);
+    }  else {
+        assert(-(*keep) <= (int)token.size());
+        token = token.substr(token.size()+(*keep));
+    }
+    bool twotokens = false;
+    if (token=="+" || token=="-") {
+        token = token + "1";
+    } else if (token.size()>=2 && (token[0]=='+' || token[0]=='-') && string("0123456789").find(token[1]) == string::npos) {
+        twotokens = true;
+        token = to_string(token[0]) + "1" + token.substr(1);
+    }
+    if (keep) {
+        if (twotokens) {
+            *keep = 2;
+        } else {
+            *keep = token.size();
+        }
+    }
+    if (ToulBar2::verbose >= 8) {
+        cout << "##" << token << "##" << endl;
+    }
+}
+
+void WCSP::read_opb(const char* fileName)
+{
+    ifstream rfile(fileName, (ToulBar2::gz || ToulBar2::xz) ? (std::ios_base::in | std::ios_base::binary) : (std::ios_base::in));
+#ifdef BOOST
+    boost::iostreams::filtering_streambuf<boost::iostreams::input> zfile;
+    if (ToulBar2::gz) {
+        zfile.push(boost::iostreams::gzip_decompressor());
+    } else if (ToulBar2::xz) {
+#if (BOOST_VERSION >= 106500)
+        zfile.push(boost::iostreams::lzma_decompressor());
+#else
+        cerr << "Error: compiling with Boost version 1.65 or higher is needed to allow to read xz compressed opb format files." << endl;
+        exit(EXIT_FAILURE);
+#endif
+    }
+    zfile.push(rfile);
+    istream ifile(&zfile);
+
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open opb file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : ifile;
+#else
+    if (ToulBar2::gz || ToulBar2::xz) {
+        cerr << "Error: compiling with Boost iostreams library is needed to allow to read compressed opb format files." << endl;
+        exit(EXIT_FAILURE);
+    }
+    if (ToulBar2::stdin_format.length() == 0 && !rfile) {
+        cerr << "Could not open opb file : " << fileName << endl;
+        exit(EXIT_FAILURE);
+    }
+    istream& file = (ToulBar2::stdin_format.length() > 0) ? cin : rfile;
+#endif
+
+    Cost inclowerbound = MIN_COST;
+    updateUb((MAX_COST - UNIT_COST) / MEDIUM_COST / MEDIUM_COST);
+
+    int maxarity = 0;
+    int nbvar = 0;
+    int nblinear = 0;
+    vector<TemporaryUnaryConstraint> unaryconstrs;
+
+    map<string,int> varnames;
+    string dummy, token;
+    streampos prev;
+
+    // skip initial comments
+    readToken(file, token);
+    while (token[0] == '*') {
+        getline(file, dummy);
+        readToken(file, token);
+    }
+
+    // read linear objective function
+    bool opt = true;
+    int opsize = 4;
+    Double multiplier = Exp10((Double)ToulBar2::resolution);
+    ToulBar2::costMultiplier = multiplier;
+    if (token.substr(0,4) == "min:") {
+    } else if (token.substr(0,4) == "max:") {
+        ToulBar2::costMultiplier *= -1.0;
+    } else {
+        opt = false;
+        opsize = 0;
+        updateUb(UNIT_COST * multiplier);
+    }
+
+    if (opt) {
+        do {
+            Cost cost; // cost can be negative or decimal
+            readToken(file, token, &opsize); // read cost or varname
+            if (!file) break;
+            if (isInteger(token)) {
+                cost = string2Cost((const char *)token.c_str());
+                if (opsize!=(int)token.size() || token.back() != ';') {
+                    readToken(file, token, &opsize); // read varname
+                    assert(!isInteger(token));
+                }
+            } else {
+                cost = UNIT_COST;
+            }
+            if ((cost >= MIN_COST && multiplier * cost >= (Double)(MAX_COST - UNIT_COST) / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST) ||
+                (cost < MIN_COST && multiplier * -cost >= (Double)(MAX_COST - UNIT_COST) / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST / MEDIUM_COST)) {
+                cerr << "This resolution cannot be ensured on the data type used to represent costs! (see option -precision)" << endl;
+                exit(EXIT_FAILURE);
+            }
+            cost *= ToulBar2::costMultiplier;
+            if (token != ";") {
+                vector<int> scopeIndex;
+                while (!isInteger(token)) {
+                    string varname = token.substr(0,token.size()-((token.back()==';')?1:0));
+                    int var = 0;
+                    if (varnames.find(varname) != varnames.end()) {
+                        var = varnames[varname];
+                    } else {
+                        var = makeEnumeratedVariable(varname, 0, 1);
+                        addValueName(var, "v0");
+                        addValueName(var, "v1");
+                        varnames[varname] = var;
+                        nbvar++;
+                    }
+                    if (find(scopeIndex.begin(), scopeIndex.end(), var) == scopeIndex.end()) {
+                        scopeIndex.push_back(var);
+                    }
+                    if (token.back() == ';') break;
+                    readToken(file, token, &opsize);
+                    if (isInteger(token) || token == ";") {
+                        opsize = 0;
+                        break;
+                    }
+                }
+                if (scopeIndex.size() > 3) {
+                    Cost defval = max(MIN_COST, -cost);
+                    int ctr = postNaryConstraintBegin(scopeIndex, defval, 1);
+                    vector<Value> tuple(scopeIndex.size(), 1);
+                    if (cost < MIN_COST) {
+                        postNaryConstraintTuple(ctr, tuple, MIN_COST);
+                        negCost -= cost;
+                    } else {
+                        postNaryConstraintTuple(ctr, tuple, cost);
+                    }
+                    postNaryConstraintEnd(ctr);
+                } else if (scopeIndex.size() == 3) {
+                    vector<Cost> costs(2*2*2, max(MIN_COST, -cost));
+                    if (cost < MIN_COST) {
+                        costs[7] = MIN_COST;
+                        negCost -= cost;
+                    } else {
+                        costs[7] = cost;
+                    }
+                    postTernaryConstraint(scopeIndex[0], scopeIndex[1], scopeIndex[2], costs);
+                } else if (scopeIndex.size() == 2) {
+                    vector<Cost> costs(2*2, max(MIN_COST, -cost));
+                    if (cost < MIN_COST) {
+                        costs[3] = MIN_COST;
+                        negCost -= cost;
+                    } else {
+                        costs[3] = cost;
+                    }
+                    postBinaryConstraint(scopeIndex[0], scopeIndex[1], costs);
+                } else if (scopeIndex.size() == 1) {
+                    EnumeratedVariable* x = (EnumeratedVariable*)vars[scopeIndex[0]];
+                    TemporaryUnaryConstraint unaryconstr;
+                    unaryconstr.var = x;
+                    if (cost < MIN_COST) {
+                        unaryconstr.costs.push_back(-cost);
+                        unaryconstr.costs.push_back(MIN_COST);
+                        negCost -= cost;
+                    } else {
+                        unaryconstr.costs.push_back(MIN_COST);
+                        unaryconstr.costs.push_back(cost);
+                    }
+                    unaryconstrs.push_back(unaryconstr);
+                } else if (scopeIndex.size() == 0) {
+                    inclowerbound += cost;
+                } else {
+                    cerr << "Sorry! Cannot read objective function with non linear term of arity " << scopeIndex.size() << endl;
+                    exit(EXIT_FAILURE);
+                }
+            }
+        } while (token.back() != ';');
+    }
+
+    // read linear constraints
+    while (file) {
+        vector<int> scopeIndex;
+        vector<Cost> coefs;
+        string params;
+        Cost coef; // allows long long coefficients inside linear constraints
+        do {
+            readToken(file, token, &opsize); // read coefficient or operator or comments
+            // skip comments
+            while (file && token[0] == '*') {
+                getline(file, dummy);
+                readToken(file, token, &opsize);
+            }
+            if (!file || token == ";") break;
+            if (token.substr(0,2) == "<=" || token.substr(0,1) == "=" || token.substr(0,2) == ">=") {
+                opsize = (token[0] == '=')?1:2;
+                string op = token.substr(0,opsize);
+                readToken(file, token, &opsize); // read right coef
+                assert(isInteger(token));
+                coef = string2Cost((char*)token.c_str());
+                maxarity = max(maxarity, (int)scopeIndex.size());
+                nblinear++;
+                if (op == ">=" || op == "=") {
+                    params = to_string(coef);
+                    for (unsigned int i=0; i<scopeIndex.size(); i++) {
+                        params += " " + to_string(coefs[i]);
+                    }
+                    postKnapsackConstraint(scopeIndex, params);
+                }
+                if (op == "<=" || op == "=") {
+                    params = to_string(-coef);
+                    for (unsigned int i=0; i<scopeIndex.size(); i++) {
+                        params += " " + to_string(-coefs[i]);
+                    }
+                    postKnapsackConstraint(scopeIndex, params);
+                }
+            } else {
+                assert(token.back() != ';');
+                if (isInteger(token)) {
+                    coef = string2Cost((char*)token.c_str());
+                    readToken(file, token, &opsize); // read varname
+                } else {
+                    coef = 1;
+                }
+                assert(token.back() != ';');
+                assert(!isInteger(token));
+                if (token.back() == '=') {
+                    opsize = (token[token.size()-2] == '<' || token[token.size()-2] == '>')?-2:-1;
+                }
+                string varname = token.substr(0, token.size() + opsize);
+                int var = 0;
+                if (varnames.find(varname) != varnames.end()) {
+                    var = varnames[varname];
+                } else {
+                    var = makeEnumeratedVariable(varname, 0, 1);
+                    addValueName(var, "v0");
+                    addValueName(var, "v1");
+                    varnames[varname] = var;
+                    nbvar++;
+                }
+                if (find(scopeIndex.begin(), scopeIndex.end(), var) == scopeIndex.end()) {
+                    scopeIndex.push_back(var);
+                    coefs.push_back(coef);
+                } else {
+                    coefs[find(scopeIndex.begin(), scopeIndex.end(), var) - scopeIndex.begin()] += coef;
+                }
+            }
+        } while (token.back() != ';');
+    }
+
+    // apply basic initial propagation AFTER complete network loading
+    postNullaryConstraint(inclowerbound);
+
+    for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+        postUnaryConstraint(unaryconstrs[u].var->wcspIndex, unaryconstrs[u].costs);
+    }
+    sortConstraints();
+    if (ToulBar2::verbose >= 0)
+        cout << "c Read " << nbvar << " variables, with 2 values at most, and " << nblinear << " linear constraints, with maximum arity " << maxarity << " (cost multiplier: " << ToulBar2::costMultiplier << ", shifting value: " << -negCost << ")" << endl;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2store.hpp b/code/include/tb2/utils/tb2store.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..36abcc4f3937d593459283f033212af1969f7939
--- /dev/null
+++ b/code/include/tb2/utils/tb2store.hpp
@@ -0,0 +1,342 @@
+/** \file tb2store.hpp
+ *  \brief Generic storable data management.
+ *
+ *	\defgroup backtrack Backtrack management
+ *  Used by backtrack search methods.
+ *  Allows to copy / restore the current state using Store::store and Store::restore methods.
+ *  All storable data modifications are trailed into specific stacks.
+ *
+ *  Trailing stacks are associated to each storable type:
+ *  - Store::storeValue for storable domain values ::StoreValue (value supports, etc)
+ *  - Store::storeCost for storable costs ::StoreCost (inside cost functions, etc)
+ *  - Store::storeDomain for enumerated domains (to manage holes inside domains)
+ *  - Store::storeConstraint for backtrackable lists of constraints
+ *  - Store::storeVariable for backtrackable lists of variables
+ *  - Store::storeSeparator for backtrackable lists of separators (see tree decomposition methods)
+ *  - Store::storeBigInteger for very large integers ::StoreBigInteger used in solution counting methods
+ *
+ *  Memory for each stack is dynamically allocated by part of \f$2^x\f$ with \e x initialized to ::STORE_SIZE and increased when needed.
+ *  \note storable data are not trailed at depth 0.
+ *  \warning ::StoreInt uses Store::storeValue stack (it assumes Value is encoded as int!).
+ *  \warning Current storable data management is not multi-threading safe! (Store is a static virtual class relying on StoreBasic<T> static members)
+ */
+
+#ifndef TB2STORE_HPP_
+#define TB2STORE_HPP_
+
+#include "core/tb2types.hpp"
+
+#ifndef NUMBERJACK
+#ifdef BOOST
+#include <boost/version.hpp>
+#if (BOOST_VERSION >= 105600)
+#include <boost/type_index.hpp>
+#else
+#include <typeinfo>
+#endif
+#else
+#include <typeinfo>
+#endif
+#endif
+
+template <class T>
+class BTList;
+template <class T>
+class DLink;
+class Constraint;
+class Variable;
+class Separator;
+class ConstraintLink;
+
+/*
+ * Storable stack
+ *
+ */
+template <class T, class V>
+class StoreStack {
+    T** pointers;
+    V* content;
+    ptrdiff_t index;
+    ptrdiff_t indexMax;
+    ptrdiff_t base;
+
+    // make it private because we don't want copy nor assignment
+    StoreStack(const StoreStack& s);
+    StoreStack& operator=(const StoreStack& s);
+
+public:
+    StoreStack(int powbckmemory = STORE_SIZE)
+    {
+        if (pow(2., powbckmemory) >= SIZE_MAX) {
+            cerr << "command-line initial memory size parameter " << powbckmemory << " power of two too large!" << endl;
+            exit(EXIT_FAILURE);
+        }
+        indexMax = (ptrdiff_t)pow(2., powbckmemory);
+        pointers = new T*[indexMax];
+        content = new V[indexMax];
+        index = 0;
+        base = 0;
+        if (ToulBar2::verbose > 0) {
+            cout << "c " << indexMax * (sizeof(V) + sizeof(T*)) << " Bytes allocated for "
+#ifndef NUMBERJACK
+#if (BOOST_VERSION >= 105600)
+                 << boost::typeindex::type_id<T>().pretty_name()
+#else
+                 << typeid(T).name()
+#endif
+#endif
+                 << " stack." << endl;
+        }
+    }
+
+    ~StoreStack()
+    {
+        delete[] pointers;
+        delete[] content;
+    }
+
+    void realloc()
+    {
+        T** newpointers = new T*[indexMax * 2];
+        V* newcontent = new V[indexMax * 2];
+        if (!newpointers || !newcontent) {
+            cerr
+#ifndef NUMBERJACK
+#if (BOOST_VERSION >= 105600)
+                << boost::typeindex::type_id<T>().pretty_name()
+#else
+                << typeid(T).name()
+#endif
+#endif
+                << " stack out of memory!" << endl;
+            exit(EXIT_FAILURE);
+        }
+        std::copy(pointers, pointers + indexMax, newpointers);
+        std::copy(content, content + indexMax, newcontent);
+
+        delete[] pointers;
+        delete[] content;
+        pointers = newpointers;
+        content = newcontent;
+        indexMax *= 2;
+        if (ToulBar2::verbose >= 0) {
+            cout << "c " << indexMax * (sizeof(V) + sizeof(T*)) << " Bytes allocated for "
+#ifndef NUMBERJACK
+#if (BOOST_VERSION >= 105600)
+                 << boost::typeindex::type_id<T>().pretty_name()
+#else
+                 << typeid(T).name()
+#endif
+#endif
+                 << " stack." << endl;
+        }
+    }
+
+    void store(T* x, V y)
+    {
+        if (index > 0) {
+            index++;
+            if (index >= indexMax)
+                realloc();
+            content[index] = y;
+            pointers[index] = x;
+        }
+    }
+
+    void store(T* x)
+    {
+        if (index > 0) {
+            index++;
+            if (index >= indexMax)
+                realloc();
+            content[index] = *x;
+            pointers[index] = x;
+        }
+    }
+
+    void store()
+    {
+        index++;
+        if (index >= indexMax)
+            realloc();
+        pointers[index] = (T*)(intptr_t)base;
+        base = index;
+    }
+
+    //	void restore(int **adr, int *val, ptrdiff_t x) {
+    //		*adr[x] = val[x];
+    //	}
+
+    void restore(Value** adr, Value* val, ptrdiff_t x)
+    {
+        *adr[x] = val[x];
+    }
+
+#ifndef INT_COST
+    void restore(Cost** adr, Cost* val, ptrdiff_t x)
+    {
+        *adr[x] = val[x];
+    }
+#endif
+
+    void restore(BigInteger** adr, BigInteger* val, ptrdiff_t x)
+    {
+        *adr[x] = val[x];
+    }
+    template <class Q>
+    void restore(BTList<Q>** l, DLink<Q>** elt, ptrdiff_t& x);
+
+    void restore()
+    {
+        if (index > 0) { // do nothing if already at depth = 0
+            ptrdiff_t x, y;
+
+            x = index + 1;
+            y = base;
+            while (--x != y) {
+                restore(pointers, content, x);
+            }
+
+            index = y - 1;
+            base = (ptrdiff_t)pointers[y];
+        }
+    }
+};
+
+/*
+ * Storable basic types
+ */
+template <class T>
+class StoreBasic {
+    T v;
+
+public:
+    StoreBasic(T vv)
+        : v(vv)
+    {
+    } ///< \warning allows conversion from T to StoreBasic<T>, which may loose the compiler when mixing T and StoreBasic<T> in the same expression: explicit cast needed e.g. in T::v1 + (T) StoreBasic<T>::v2
+
+    operator T() const
+    {
+        return v;
+    } ///< allows conversion from StoreBasic to T
+
+    StoreBasic(const StoreBasic& elt)
+        : v(elt.v)
+    {
+    }
+
+    static void store() { mystore.store(); };
+    static void restore() { mystore.restore(); };
+
+    StoreBasic& operator=(const StoreBasic& elt)
+    { ///< \note assignment has to be backtrackable
+        if (&elt != this && v != elt.v) {
+            mystore.store(&v);
+            v = elt.v;
+        }
+        return *this;
+    }
+
+    StoreBasic& operator=(const T vv)
+    {
+        if (v != vv) {
+            mystore.store(&v);
+            v = vv;
+        }
+        return *this;
+    }
+    StoreBasic& operator+=(const T vv)
+    {
+        if (vv != 0) {
+            mystore.store(&v);
+            v += vv;
+        }
+        return *this;
+    }
+    StoreBasic& operator-=(const T vv)
+    {
+        if (vv != 0) {
+            mystore.store(&v);
+            v -= vv;
+        }
+        return *this;
+    }
+
+    static StoreStack<T, T> mystore;
+};
+
+template <class T>
+StoreStack<T, T> StoreBasic<T>::mystore(STORE_SIZE);
+
+typedef StoreBasic<Value> StoreValue;
+typedef StoreValue StoreInt;
+typedef StoreBasic<Cost> StoreCost;
+typedef StoreBasic<BigInteger> StoreBigInteger;
+typedef StoreCost StoreLong;
+
+/*
+ * Container for all storable stacks
+ */
+class Store {
+protected:
+    virtual ~Store() = 0; // Trick to avoid any instantiation of Store
+
+public:
+    static int depth;
+    static StoreStack<BTList<Value>, DLink<Value>*> storeDomain;
+    static StoreStack<BTList<ConstraintLink>, DLink<ConstraintLink>*> storeConstraint;
+    static StoreStack<BTList<Variable*>, DLink<Variable*>*> storeVariable;
+    static StoreStack<BTList<Separator*>, DLink<Separator*>*> storeSeparator;
+
+    /// \return the current (backtrack / tree search) depth
+    static int getDepth()
+    {
+        return depth;
+    }
+
+    /// makes a copy of the current state
+    static void store()
+    {
+        depth++;
+        StoreValue::store();
+        StoreCost::store();
+        StoreBigInteger::store();
+        storeDomain.store();
+        storeConstraint.store();
+        storeVariable.store();
+        storeSeparator.store();
+    }
+
+    /// restores the current state to the last copy
+    static void restore()
+    {
+        depth--;
+        StoreValue::restore();
+        StoreCost::restore();
+        StoreBigInteger::restore();
+        storeDomain.restore();
+        storeConstraint.restore();
+        storeVariable.restore();
+        storeSeparator.restore();
+    }
+
+    /// restore the current state to the copy made at depth \c newDepth
+    static void restore(int newDepth)
+    {
+        assert(depth >= newDepth);
+        while (depth > newDepth)
+            restore();
+    }
+};
+
+#define storeIndexList storeDomain
+
+#endif /*TB2STORE_HPP_*/
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2system.cpp b/code/include/tb2/utils/tb2system.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0ae25fbf26abae1033793bed66a7d81423aff3c4
--- /dev/null
+++ b/code/include/tb2/utils/tb2system.cpp
@@ -0,0 +1,105 @@
+/*
+ * ****** System dependent functions.
+ */
+
+#include "core/tb2types.hpp"
+
+//Must be included after tb2types.hpp
+#include "tb2system.hpp"
+
+#ifdef LONGDOUBLE_PROB
+const char* PrintFormatProb = "%Lf";
+#else
+const char* PrintFormatProb = "%lf";
+#endif
+/* --------------------------------------------------------------------
+// Timer management functions
+// -------------------------------------------------------------------- */
+#ifndef __WIN32__
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/times.h>
+
+//double cpuTime()
+//{
+//    static struct tms buf;
+//
+//    times(&buf);
+//    double res = ((double) (buf.tms_utime+buf.tms_stime+buf.tms_cutime+buf.tms_cstime)) / ((double) sysconf(_SC_CLK_TCK));
+//    return (res>0)?res:0;
+//}
+
+double cpuTime()
+{
+    static struct rusage buf;
+
+    getrusage(RUSAGE_SELF, &buf);
+    double res = (double)(buf.ru_utime.tv_sec + buf.ru_stime.tv_sec) + (buf.ru_utime.tv_usec + buf.ru_stime.tv_usec) / 1000000.;
+    return (res > 0) ? res : 0;
+}
+
+void timeOut(int sig)
+{
+    if (ToulBar2::verbose >= 0) {
+        cout << endl
+             << "Time limit expired... Aborting..." << endl;
+        cout.flush();
+    }
+
+    if (ToulBar2::solutionFile != NULL) {
+        if (ftruncate(fileno(ToulBar2::solutionFile), ftell(ToulBar2::solutionFile)))
+            exit(EXIT_FAILURE);
+        fclose(ToulBar2::solutionFile);
+    }
+    if (ToulBar2::solution_uai_file != NULL) {
+        if (ftruncate(fileno(ToulBar2::solution_uai_file), ftell(ToulBar2::solution_uai_file)))
+            exit(EXIT_FAILURE);
+        fclose(ToulBar2::solution_uai_file);
+    }
+
+    if (ToulBar2::timeOut)
+        ToulBar2::timeOut();
+    else
+        exit(0);
+}
+
+static struct itimerval thetimer = { { 0, 0 }, { 0, 0 } };
+
+/* set a timer (in seconds) */
+void timer(int t)
+{
+    ToulBar2::interrupted = false;
+    signal(SIGVTALRM, timeOut);
+    thetimer.it_interval.tv_sec = 0;
+    thetimer.it_interval.tv_usec = 0;
+    thetimer.it_value.tv_sec = t;
+    thetimer.it_value.tv_usec = 0;
+    setitimer(ITIMER_VIRTUAL, &thetimer, NULL);
+}
+
+/* stop the current timer */
+void timerStop()
+{
+    thetimer.it_value.tv_sec = 0;
+    thetimer.it_value.tv_usec = 0;
+    setitimer(ITIMER_VIRTUAL, &thetimer, NULL);
+    ToulBar2::interrupted = false;
+}
+
+#else
+void timeOut(int sig) {}
+double cpuTime()
+{
+    return (double)(clock() / CLOCKS_PER_SEC);
+}
+void timer(int t) {}
+void timerStop() {}
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2system.hpp b/code/include/tb2/utils/tb2system.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..714e4912833678d4d1d9b965fef72de1d410fab6
--- /dev/null
+++ b/code/include/tb2/utils/tb2system.hpp
@@ -0,0 +1,251 @@
+/** \file tb2system.hpp
+ *  \brief System dependent functions.
+ * 
+ */
+
+#ifndef TB2SYSTEM_HPP_
+#define TB2SYSTEM_HPP_
+
+#if __cplusplus > 199711L
+#define FINAL final
+#else
+#define FINAL
+#endif
+
+#ifdef QUAD_PROB
+#include <quadmath.h>
+#endif
+
+extern const char* PrintFormatProb;
+
+double cpuTime(); ///< \brief return CPU time in seconds with high resolution (microseconds) if available
+void timeOut(int sig);
+void timer(int t); ///< \brief set a timer (in seconds)
+void timerStop(); ///< \brief stop a timer
+
+typedef long long Long;
+
+#ifndef LONGLONG_MAX
+#ifdef LONG_LONG_MAX
+const Long LONGLONG_MAX = LONG_LONG_MAX;
+#else
+const Long LONGLONG_MAX = LLONG_MAX;
+#endif
+#endif
+
+typedef long double Double;
+
+#ifdef __WIN32__
+#include <random>
+inline void mysrand(long) {};
+inline double mydrand() {
+    static std::ranlux48 source(std::random_device{}());
+    return std::uniform_real_distribution<double>(0,1)(source);
+}
+inline int myrand() {
+    return INT_MAX * mydrand();
+}
+inline Long myrandl() {
+    return LONG_MAX * mydrand();
+}
+inline Long myrandln() {
+    return LONG_MAX * 2. * (mydrand() - 0.5);
+}
+#else
+inline void mysrand(int seed)
+{
+    return srand48(seed);
+}
+inline int myrand() { return (int)lrand48(); }
+inline Long myrandl() { return (Long)((Long)lrand48() /**LONGLONG_MAX*/); }
+inline Long myrandln() { return (Long)((Long)mrand48() /**LONGLONG_MAX*/); }
+inline double mydrand() { return drand48(); }
+#endif
+
+#ifdef DOUBLE_PROB
+inline double Pow(double x, double y)
+{
+    return pow(x, y);
+}
+inline double Exp10(double x) { return exp10(x); }
+inline double Exp(double x) { return exp(x); }
+inline double Log10(double x) { return log10(x); }
+inline double Expm1(double x) { return expm1(x); }
+inline double Log(double x) { return log(x); }
+inline double Log1p(double x) { return log1p(x); }
+#endif
+
+#ifdef LONGDOUBLE_PROB
+inline Double Pow(Double x, Double y)
+{
+    return powl(x, y);
+}
+inline Double Exp10(Double x) { return powl(10.l, (Double)x); }
+inline Double Exp(Double x) { return expl(x); }
+inline Double Log10(Double x) { return log10l(x); }
+inline Double Expm1(Double x) { return expm1l(x); }
+inline Double Log(Double x) { return logl(x); }
+inline Double Log1p(Double x) { return log1pl(x); }
+#endif
+
+#ifdef QUAD_PROB
+inline std::ostream& operator<<(std::ostream& os, const __float128& f)
+{
+    char* y = new char[1000];
+    quadmath_snprintf(y, 1000, "%.30Qg", f);
+    os << y;
+    delete[] y;
+    return os;
+}
+
+inline std::istream& operator>>(std::istream& is, __float128& f)
+{
+    char* y = new char[1000];
+    is >> y;
+    f = strtoflt128(y, NULL);
+    delete[] y;
+    return is;
+}
+
+//inline __float128 abs( __float128 x ){return fabsq( x );}
+//inline __float128 sqrt( __float128 x ){return sqrtq( x );}
+inline __float128 Pow(__float128 x, __float128 y) { return powq(x, y); }
+inline __float128 Exp(__float128 x) { return expq(x); }
+inline __float128 Exp10(__float128 x) { return powq(10, x); } // Assumes 10 is representable.
+inline __float128 Expm1(__float128 x) { return expm1q(x); } // Assumes 10 is representable.
+inline __float128 Log(__float128 x) { return logq(x); }
+inline __float128 Log10(__float128 x) { return log10q(x); }
+inline __float128 Log1p(__float128 x) { return log1pq(x); }
+#endif
+
+#ifdef INT_COST
+inline double to_double(const int cost)
+{
+    return (double)cost;
+}
+inline int ceil(const int e) { return e; }
+inline int floor(const int e) { return e; }
+inline int randomCost(int min, int max) { return min + (myrand() % (max - min + 1)); }
+inline int string2Cost(const char* ptr) { return atoi(ptr); }
+
+//cost= 0 log2= -1
+//cost= 1 log2= 0
+//cost= 2 log2= 1
+//cost= 3 log2= 1
+//cost= 4 log2= 2
+//cost= 5 log2= 2
+//cost= 6 log2= 2
+//cost= 7 log2= 2
+//cost= 8 log2= 3
+//cost= 9 log2= 3
+//cost= 10 log2= 3
+//cost= 11 log2= 3
+//cost= 12 log2= 3
+//cost= 13 log2= 3
+//cost= 14 log2= 3
+//cost= 15 log2= 3
+//cost= 16 log2= 4
+
+// This only works for a 32bits machine
+// and compiler g++ version < 4.0
+
+/*
+    inline int cost2log2(int v)
+    {
+      float x;
+
+      if (v==0) return -1;
+      x=(float) v;
+      return (*(int*)&x >> 23) - 127;
+    }
+    */
+
+inline int cost2log2(int x)
+{
+    if (x <= 0)
+        return -1;
+    int l2 = 0;
+    x >>= 1;
+    for (; x != 0; x >>= 1) {
+        ++l2;
+    }
+    return (l2);
+}
+inline int cost2log2glb(int x) { return cost2log2(x); }
+inline int cost2log2gub(int x) { return cost2log2(x); }
+#endif
+
+#ifdef LONGLONG_COST
+inline double to_double(const Long cost)
+{
+    return (double)cost;
+}
+inline Long ceil(const Long e) { return e; }
+inline Long floor(const Long e) { return e; }
+inline Long randomCost(Long min, Long max) { return min + (myrandl() % (max - min + 1)); }
+
+inline Long string2Cost(const char* ptr)
+{
+    return atoll(ptr);
+}
+
+inline int cost2log2(Long x)
+{
+    if (x <= 0)
+        return -1;
+    int l2 = 0;
+    x >>= 1;
+    for (; x != 0; x >>= 1) {
+        ++l2;
+    }
+    return (l2);
+}
+inline int cost2log2glb(Long x) { return cost2log2(x); }
+inline int cost2log2gub(Long x) { return cost2log2(x); }
+#endif
+
+//luby(0)= N/A
+//luby(1)= 1
+//luby(2)= 1
+//luby(3)= 2
+//luby(4)= 1
+//luby(5)= 1
+//luby(6)= 2
+//luby(7)= 4
+//luby(8)= 1
+//luby(9)= 1
+//luby(10)= 2
+//luby(11)= 1
+//luby(12)= 1
+//luby(13)= 2
+//luby(14)= 4
+//luby(15)= 8
+//luby(16)= 1
+inline Long luby(Long r)
+{
+    int j = cost2log2(r + 1);
+    if (r + 1 == (1L << j))
+        return (1L << (j - 1));
+    else
+        return luby(r - (1L << j) + 1);
+}
+
+// function mkdir
+#include <sys/stat.h>
+
+#ifndef __WIN32__
+#include <signal.h>
+#endif
+
+#ifndef SIZE_MAX
+#define SIZE_MAX ((size_t)-1)
+#endif
+
+#endif /* TB2SYSTEM_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/utils/tb2utils.hpp b/code/include/tb2/utils/tb2utils.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..729692602d6eaea1418523a9155abfcf34c0b62d
--- /dev/null
+++ b/code/include/tb2/utils/tb2utils.hpp
@@ -0,0 +1,217 @@
+/** \file tb2utils.hpp
+ *  \brief Miscelaneous usefull functions.
+ *
+ */
+
+#ifndef TB2UTILS_HPP_
+#define TB2UTILS_HPP_
+
+// these includes are needed if compiled on new g++ versions (>4.0?)
+#include <cstdint>
+#include <climits>
+#include <cstdlib>
+#include <cstring>
+#include <libgen.h>
+
+#ifdef ILOGLUE
+#include <ilsolver/ilosolverint.h>
+#else
+#include <cassert>
+#include <string>
+#include <sstream>
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+#include <cmath>
+#endif
+
+#include <limits>
+#include <iterator>
+#include <vector>
+#include <map>
+#include <sstream>
+#include <set>
+#include <list>
+#include <queue>
+#include <stack>
+#include <functional>
+#include <algorithm>
+#include <numeric>
+using namespace std;
+
+#ifdef NDEBUG
+#define DEBONLY(x)
+#else
+#define DEBONLY(x) x
+#endif
+
+template <typename T1, typename T2, typename T3>
+struct triplet {
+    T1 first;
+    T2 second;
+    T3 third;
+};
+
+template <typename T1, typename T2, typename T3>
+triplet<T1, T2, T3> make_triplet(const T1& m1, const T2& m2, const T3& m3)
+{
+    triplet<T1, T2, T3> ans;
+    ans.first = m1;
+    ans.second = m2;
+    ans.third = m3;
+    return ans;
+}
+
+template <typename T1, typename T2, typename T3>
+ostream& operator<<(ostream& os, triplet<T1, T2, T3> const& p)
+{
+    return os << "triplet{" << p.first << "," << p.second << "," << p.third << "}";
+}
+
+template <typename U, typename T>
+ostream& operator<<(ostream& os, pair<U, T> const& p)
+{
+    return os << "pair{" << p.first << "," << p.second << "}";
+}
+
+// template <typename T>
+// ostream& operator<<(ostream& os, vector<T> const& v)
+// {
+//     os << "v(sz=" << v.size() << ")[";
+//     bool first = true;
+//     for (auto&& t : v) {
+//         if (first)
+//             first = false;
+//         else
+//             os << ",";
+//         os << t;
+//     }
+//     os << "]";
+//     return os;
+// }
+
+// template<class T>
+// T abs(T x) {
+//     if (x < 0) return -(x);
+//     else return x;
+// }
+
+// Warning! Already defined in STL
+//template<class T>
+//T min(T x, T y) {
+//    if (x < y) return x;
+//    else return y;
+//}
+//
+//template<class T>
+//T max(T x, T y) {
+//    if (x > y) return x;
+//    else return y;
+//}
+
+template <class T>
+T min(T* array, int size)
+{
+    assert(size >= 1);
+    T res = array[0];
+    for (int i = 1; i < size; i++) {
+        if (array[i] < res) {
+            res = array[i];
+        }
+    }
+    return res;
+}
+
+template <class T>
+T max(T* array, int size)
+{
+    assert(size >= 1);
+    T res = array[0];
+    for (int i = 1; i < size; i++) {
+        if (array[i] > res) {
+            res = array[i];
+        }
+    }
+    return res;
+}
+
+template <class T>
+inline std::string to_string(const T& t)
+{
+    std::stringstream ss;
+    ss << t;
+    return ss.str();
+}
+
+static inline void rtrim(std::string& s)
+{
+    s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) {
+        return !std::isspace(ch);
+    }).base(),
+        s.end());
+}
+
+template <typename T>
+void free_all(T& t)
+{
+    T tmp;
+    t.swap(tmp);
+}
+
+#include "tb2system.hpp"
+
+// Cormen et al, 1990. pages 152, 158, and 184
+
+template <class T>
+int partition(T A[], int p, int r)
+{
+    T x = A[p];
+    int i = p - 1;
+    int j = r + 1;
+    while (true) {
+        do {
+            j = j - 1;
+        } while (A[j] > x);
+        do {
+            i = i + 1;
+        } while (A[i] < x);
+        if (i < j) {
+            T tmp = A[i];
+            A[i] = A[j];
+            A[j] = tmp;
+        } else
+            return j;
+    }
+}
+
+template <class T>
+int stochastic_partition(T A[], int p, int r)
+{
+    int i = (myrand() % (r - p + 1)) + p;
+    T tmp = A[p];
+    A[p] = A[i];
+    A[i] = tmp;
+    return partition(A, p, r);
+}
+
+template <class T>
+T stochastic_selection(T A[], int p, int r, int i)
+{
+    if (p == r)
+        return A[p];
+    int q = stochastic_partition(A, p, r);
+    int k = q - p + 1;
+    if (i <= k)
+        return stochastic_selection(A, p, q, i);
+    else
+        return stochastic_selection(A, q + 1, r, i - k);
+}
+
+#endif /* TB2UTILS_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2cpdgvns.cpp b/code/include/tb2/vns/tb2cpdgvns.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..08c911e0daad453db194f0dfbb153466ae56813b
--- /dev/null
+++ b/code/include/tb2/vns/tb2cpdgvns.cpp
@@ -0,0 +1,407 @@
+/*
+ * tb2cpdgvns.cpp
+ *
+ *  Created on: 3 mars 2015
+ *      Author: Abdelkader Ouali
+ *      Phd. Student : LITIO, University of Oran. GREYC, University of Caen.
+ */
+
+#include "tb2cpdgvns.hpp"
+#include "core/tb2wcsp.hpp"
+#ifdef OPENMPI
+
+// Conversion Tools
+// Solution to Message
+void CooperativeParallelDGVNS::SolToMsg(
+    MPIEnv& env0, uint cluster, uint numberclu, int kinit, int kmax,
+    Cost bestUb, int sec, int msec, map<int, Value>& bestSolution)
+{
+    env0.sendbuff[0] = cluster;
+    env0.sendbuff[1] = kinit;
+    env0.sendbuff[2] = kmax;
+    env0.sendbuff[3] = sec;
+    env0.sendbuff[4] = msec;
+    env0.sendbuff[5] = numberclu;
+    stringstream nfile;
+    nfile << bestUb;
+    string temp = nfile.str();
+    env0.sendbuff[6] = temp.size();
+    int i = 7;
+    for (string::iterator it = temp.begin(); it != temp.end(); ++it) {
+        env0.sendbuff[i] = *it - '0';
+        i++;
+    }
+    nfile.clear();
+    for (map<int, Value>::iterator it = bestSolution.begin();
+         it != bestSolution.end(); ++it) {
+        env0.sendbuff[i] = it->second;
+        i++;
+    }
+}
+
+//Message to solution
+void CooperativeParallelDGVNS::MsgToSol(
+    MPIEnv& env0, int nov, uint& cluster, uint& numberclu, int& k,
+    int& kmax, Cost& bestUb, int& sec, int& msec, map<int, Value>& bestSolution)
+{
+    cluster = env0.recvbuff[0];
+    k = env0.recvbuff[1];
+    kmax = env0.recvbuff[2];
+    sec = env0.recvbuff[3];
+    msec = env0.recvbuff[4];
+    numberclu = env0.recvbuff[5];
+    uint size = env0.recvbuff[6];
+    bestUb = env0.recvbuff[7];
+    int j = 8;
+    for (uint it = 1; it < size; it++) {
+        bestUb = (bestUb * 10) + env0.recvbuff[j];
+        j++;
+    }
+    for (int i = 0; i < nov; i++) {
+        bestSolution[i] = env0.recvbuff[j];
+        j++;
+    }
+}
+
+//---------------- Class Definition --------------------------//
+
+bool CooperativeParallelDGVNS::solve(bool first)
+{
+    mysrand(abs(ToulBar2::seed) + env0.myrank);
+
+    // Initialization
+    beginSolve(MAX_COST);
+    try {
+        lastUb = MAX_COST;
+        lastSolution.clear();
+        if (first) {
+            preprocessing(MAX_COST);
+        } else {
+            if (ToulBar2::elimDegree >= 0)
+                ToulBar2::elimDegree_ = ToulBar2::elimDegree;
+        }
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+        if (env0.myrank == 0) {
+            if (lastUb < MAX_COST)
+                wcsp->setSolution(lastUb, &lastSolution);
+            endSolve(lastUb < MAX_COST, lastUb, true);
+        }
+        /* Shut down MPI */
+        MPI_Finalize();
+        return (lastUb < MAX_COST);
+    }
+
+    MPI_Barrier(MPI_COMM_WORLD); /* IMPORTANT */
+
+    env0.buffsize = (int)wcsp->numberOfVariables() + 107; // 3 : cluster + k + cost, second time, msecond time, localtime,the rest is the size of solution
+    env0.sendbuff = new int[env0.buffsize];
+    env0.recvbuff = new int[env0.buffsize];
+    if (env0.myrank == 0) {
+        if (ToulBar2::verbose)
+            cout << "Run CPDGVNS method." << endl;
+        master();
+        if (bestUb < MAX_COST)
+            wcsp->setSolution(bestUb, &bestSolution);
+        endSolve(bestUb < MAX_COST, bestUb, false); //TODO: return complete=true if known by the master
+    } else {
+        ToulBar2::showSolutions = false;
+        slave();
+    }
+
+    if (ToulBar2::vnsOutput)
+        ToulBar2::vnsOutput << "Search end"
+                            << " " << cpuTime() << endl;
+
+    /* Shut down MPI */
+    //    MPI_Barrier(MPI_COMM_WORLD); /* IMPORTANT */
+    MPI_Finalize();
+
+    return (bestUb < MAX_COST);
+}
+
+//----------------------- Model Master/Slave -----------------------//
+void CooperativeParallelDGVNS::master()
+{
+    // Structure de voisinage bas�e sur la notion des clusters -  ParallelRandomClusterChoice - et l'initialisation du file - file contenant les clusters pour chaque processus -
+    ParallelRandomClusterChoice* h = new ParallelRandomClusterChoice();
+    h->init(wcsp, this);
+
+    // MPI data
+    int rank;
+    MPI_Status status;
+
+    // verify the number of processes and number of clusters
+    if (env0.ntasks > h->getSize()) {
+        env0.processes = h->getSize();
+    } else {
+        env0.processes = env0.ntasks;
+    }
+    if (ToulBar2::vnsOutput)
+        ToulBar2::vnsOutput << "#param " << ToulBar2::vnsNeighborVarHeur << " " << ToulBar2::vnsKmin << " " << ToulBar2::vnsKmax << " " << ToulBar2::lds << " " << ToulBar2::vnsInitSol << " " << env0.processes << " " << env0.ntasks << " " << h->getSize() << endl;
+    // Generation of initial Solution
+    bool complete = false;
+    bestSolution.clear();
+    bestUb = generateInitSolution(ToulBar2::vnsInitSol, bestSolution, complete);
+    BestTimeS = (int)cpuTime();
+    BestTimeMS = (int)(((Long)cpuTime() * 1000LL) % 1000LL);
+    // Get all clusters from the tree decomposition of constraint graph
+    file = h->getClustersIndex();
+
+    /* Seed the slaves; send one unit of work (initial solution) to each slave. */
+    for (rank = 1; rank < env0.processes; ++rank) {
+        /* choice one free cluster to send it to the processe */
+        uint cluster = getCluster();
+        int adjcluster = 0;
+        int kmax = h->getClustersSize(cluster, adjcluster);
+        while (kmax < ToulBar2::vnsKmin) {
+            adjcluster++;
+            kmax = h->getClustersSize(cluster, adjcluster);
+        }
+        //cout << kmax << " " << adjcluster << endl ;
+        /* Convert initial solution with cluster and kinit parameters in buffer, for each slave process */
+        SolToMsg(env0, cluster, adjcluster, ToulBar2::vnsKmin, ToulBar2::vnsKmax, bestUb, BestTimeS,
+            BestTimeMS, bestSolution);
+
+        /* Send Initial Solution to each process */
+        MPI_Send(&env0.sendbuff[0], /* message buffer */
+            env0.buffsize, /* buffer size */
+            MPI_INT, /* data item is an integer */
+            rank, /* destination process rank */
+            WORKTAG, /* user chosen message tag */
+            MPI_COMM_WORLD); /* default communicator */
+    }
+
+    /* Loop over getting new Best Solutions */
+    uint finished = 0;
+    uint worker = env0.processes - 1;
+    map<int, Value> slastSolution;
+    while (finished < worker) {
+
+        /* Receive result (new better solution) from a slave */
+        MPI_Recv(&env0.recvbuff[0], /* message buffer */
+            env0.buffsize, /* size of data */
+            MPI_INT, /* data item is an integer */
+            MPI_ANY_SOURCE, /* receive from any sender */
+            MPI_ANY_TAG, /* any type of message */
+            MPI_COMM_WORLD, /* default communicator */
+            &status); /* info about the received message */
+        /* setting up the best solution in memory, and checkout if we continue or not */
+        // Parsing the received buffer
+        uint scluster = 0;
+        int sk = 0;
+        int skmax;
+        Cost sbestUb = 0;
+        int sBestTimeS = 0;
+        int sBestTimeMS = 0;
+        uint snumberclu;
+
+        MsgToSol(env0, wcsp->numberOfVariables(), scluster, snumberclu, sk,
+            skmax, sbestUb, sBestTimeS, sBestTimeMS, slastSolution);
+
+        // getting the cluster back
+        file.push_back(scluster);
+        scluster = getCluster();
+        //Updating
+        if (sbestUb <= bestUb
+            && !(BestTimeS == sBestTimeS && BestTimeMS == sBestTimeMS)) {
+            bestUb = sbestUb;
+            BestTimeS = sBestTimeS;
+            BestTimeMS = sBestTimeMS;
+            snumberclu = 0;
+            skmax = h->getClustersSize(scluster, snumberclu);
+            while (skmax < ToulBar2::vnsKmin) {
+                snumberclu++;
+                skmax = h->getClustersSize(scluster, snumberclu);
+            }
+            for (uint v = 0; v < wcsp->numberOfVariables(); v++) {
+                bestSolution[v] = lastSolution[v];
+            }
+            if (ToulBar2::vnsOutput) {
+                ToulBar2::vnsOutput
+                    << "# ------------------------------------------"
+                    << endl;
+                ToulBar2::vnsOutput
+                    << "InstanceVnsBestTime "
+                    << (BestTimeS + float(float(BestTimeMS) / float(100)))
+                    << endl;
+                ToulBar2::vnsOutput << "ReceiveTime " << cpuTime()
+                                    << "# Confirmation" << endl;
+                ToulBar2::vnsOutput << "Cost " << wcsp->Cost2ADCost(bestUb) << endl;
+                ToulBar2::vnsOutput << "Solution "
+                                    << " (" << sk << " "
+                                    << scluster << ") ";
+                for (map<int, Value>::iterator it = bestSolution.begin();
+                     it != bestSolution.end(); ++it)
+                    ToulBar2::vnsOutput << (*it).first << "=" << (*it).second
+                                        << " ";
+                ToulBar2::vnsOutput << endl;
+                ToulBar2::vnsOutput
+                    << "# ------------------------------------------"
+                    << endl;
+            }
+        } else {
+            if (snumberclu < file.size())
+                snumberclu++;
+            skmax = h->getClustersSize(scluster, snumberclu);
+            while (skmax < ToulBar2::vnsKmin) {
+                snumberclu++;
+                skmax = h->getClustersSize(scluster, snumberclu);
+            }
+        }
+        if (bestUb > ToulBar2::vnsOptimum) {
+            SolToMsg(env0, scluster, snumberclu, ToulBar2::vnsKmin, skmax, bestUb,
+                BestTimeS, BestTimeMS, bestSolution);
+            /* Send the best solution to the received slave, for next the search */
+            MPI_Send(&env0.sendbuff[0], /* message buffer */
+                env0.buffsize, /* size of data */
+                MPI_INT, /* data item is an integer */
+                status.MPI_SOURCE, /* to who we just received from */
+                WORKTAG, /* user chosen message tag */
+                MPI_COMM_WORLD); /* default communicator */
+        } else {
+            finished++;
+            MPI_Send(0, 0, MPI_INT, status.MPI_SOURCE, DIETAG, MPI_COMM_WORLD);
+        }
+    }
+    MPI_Request requests[env0.ntasks];
+    for (rank = 1; rank < env0.ntasks; ++rank) {
+        //printf("Send finish empty msg to finish with %d\n",rank);
+        MPI_Isend(0, 0, MPI_INT, rank, DIETAG, MPI_COMM_WORLD, &requests[rank]);
+    }
+}
+
+void CooperativeParallelDGVNS::slave()
+{
+
+    MPI_Status status;
+
+    // Structure de voisinage basée sur la notion des clusters
+    //ParallelRandomClusterChoice* h = NeighborhoodStructure::NeighborhoodStructureFactory(VariableHeuristic(hname), static_cast<WCSP*>(wcsp), this);
+    ParallelRandomClusterChoice* h = new ParallelRandomClusterChoice();
+    h->init(wcsp, this);
+    if (env0.ntasks > h->getSize()) {
+        env0.processes = h->getSize();
+    } else {
+        env0.processes = env0.ntasks;
+    }
+
+    // initializing the timer begin for the hole search of the slave process, in seconds
+    double btime = cpuTime();
+
+    wcsp->setUb(MAX_COST);
+    while (true) {
+        /* Receive a message from the master */
+        MPI_Recv(&env0.recvbuff[0], /* message buffer */
+            env0.buffsize, /* one data item */
+            MPI_INT, /* of type integer */
+            0, /* receive from master */
+            MPI_ANY_TAG, /* any type of message */
+            MPI_COMM_WORLD, /* default communicator */
+            &status); /* info about the received message */
+        //cout << env0.myrank <<" slave begin" << endl ;
+        /* Check the tag of the received message. */
+        if (status.MPI_TAG == DIETAG) {
+            return;
+        }
+
+        /* launch Vns/Lds+cp */
+        VnsLdsCP(env0, btime, h);
+
+        /* Send the result back */
+        MPI_Request request;
+        MPI_Isend(&env0.sendbuff[0], env0.buffsize, MPI_INT, 0, 0,
+            MPI_COMM_WORLD, &request);
+
+        //cout << env0.myrank <<" slave end" << endl ;
+    }
+}
+
+//------------------- Base functions -----------------------//
+
+void CooperativeParallelDGVNS::VnsLdsCP(MPIEnv& env0, double btime, ParallelRandomClusterChoice* h)
+{
+    uint currentcluster = 0;
+    uint numberclu = 0;
+    int kinit = ToulBar2::vnsKmin;
+    int kmax = ToulBar2::vnsKmax;
+
+    MsgToSol(env0, wcsp->numberOfVariables(), currentcluster, numberclu, kinit,
+        kmax, bestUb, BestTimeS, BestTimeMS, bestSolution);
+    for (map<int, Value>::iterator it = bestSolution.begin();
+         it != bestSolution.end(); ++it)
+        lastSolution[(*it).first] = (*it).second;
+    if (ToulBar2::verbose >= 1)
+        cout << "VNS :: Initial Solution cost " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << endl;
+    lastUb = bestUb;
+    if (ToulBar2::verbose >= 5)
+        cout << "VNS :: Initial Solution" << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << endl;
+
+    //vns/lds+cp
+    int k = kinit;
+    //cout << "taille maximal du cluster "<< currentcluster<< " "<< numberclu<< " "<< kmax << endl ;
+    //cout << env0.myrank <<" slave 1" << endl ;
+    //cout << k <<"<="<< kmax <<"&&"<< k <<"<="<< wcsp->numberOfVariables() << "&&"<< ToulBar2::vns_optimum <<"<"  << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) <<"&&"<< (cpuTime()-lbtime)<<endl ;
+    for (; k <= kmax && k <= unassignedVars->getSize() && ToulBar2::vnsOptimum < bestUb;) {
+        //neighborhood and partial instantiation
+        //cout <<"neighborhood"<< " "<<currentcluster<< " "<< numberclu << " " << k << endl ;
+        set<int> neighborhood = h->SlaveGetNeighborhood(currentcluster, numberclu, k);
+
+        if (ToulBar2::verbose >= 1) {
+            cout << env0.myrank << ": LDS " << ToulBar2::lds << " Neighborhood " << k;
+            for (set<int>::iterator it = neighborhood.begin(); it != neighborhood.end(); it++)
+                cout << " " << *it;
+            cout << endl;
+        }
+        vector<int> variables;
+        variables.reserve(unassignedVars->getSize());
+        vector<int> values;
+        values.reserve(unassignedVars->getSize());
+        for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+            int v = *iter;
+            if (neighborhood.find(v) == neighborhood.end()) {
+                variables.push_back(v);
+                values.push_back(lastSolution[v]);
+            }
+        }
+        //repair
+        if (ToulBar2::lds)
+            repair_recursiveSolve(ToulBar2::lds, variables, values, bestUb);
+        else
+            repair_recursiveSolve(variables, values, bestUb);
+        //updating
+        //cout <<"updating "<< k<< endl ;
+        if (lastUb >= bestUb) {
+            k++;
+        } else {
+            bestUb = lastUb;
+            BestTimeS = (int)cpuTime();
+            BestTimeMS = (int)(((Long)cpuTime() * 1000LL) % 1000LL);
+            k = kinit;
+            for (uint v = 0; v < wcsp->numberOfVariables(); v++) {
+                bestSolution[v] = lastSolution[v];
+            }
+        }
+    }
+    //cout << env0.myrank <<" slave 2" << endl ;
+    // return the best solution found
+    SolToMsg(env0, currentcluster, numberclu, k, kmax, bestUb, BestTimeS,
+        BestTimeMS, bestSolution);
+}
+
+/*----------------------------- clustring functions ------------------------------- */
+uint CooperativeParallelDGVNS::getCluster()
+{
+    assert(file.size() != 0);
+    uint c = file[0];
+    file.erase(file.begin());
+    return c;
+}
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2cpdgvns.hpp b/code/include/tb2/vns/tb2cpdgvns.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..bc860329471d82171080584c0283ea0c5b91490c
--- /dev/null
+++ b/code/include/tb2/vns/tb2cpdgvns.hpp
@@ -0,0 +1,85 @@
+/*
+ * \file tb2cpdgvns.hpp
+ * \brief cooperative parallel decomposition guided variable neighborhood search method
+ *
+ *      Author: Abdelkader Ouali
+ *      PhD Student: LITIO, University of Oran ; GREYC, University of Caen.
+ */
+
+#ifndef TB2CPDGVNS_HPP_
+#define TB2CPDGVNS_HPP_
+#ifdef OPENMPI
+
+//#include <omp.h> // include OpenMP Header for parallel execution
+#include <mpi.h> // include MPI Header for parallel execution
+
+#include "tb2vns.hpp"
+
+// MPI definitions
+const int WORKTAG = 1; // also used to return the search was complete
+const int DIETAG = 2;
+
+inline bool MPI_interrupted()
+{
+    MPI_Status status;
+    int flag = 0;
+    MPI_Iprobe(MPI_ANY_SOURCE, DIETAG, MPI_COMM_WORLD, &flag, &status);
+    return flag;
+}
+
+typedef int* unit_of_work_t;
+typedef int* unit_result_t;
+
+class MPIEnv {
+public:
+    int ntasks;
+    int myrank; // rang du processus
+    int processes; // number of process to be initialize according to the number of cluster
+    int buffsize;
+    int* sendbuff;
+    int* recvbuff;
+};
+
+class NeighborhoodStructure;
+class ParallelRandomClusterChoice;
+
+class CooperativeParallelDGVNS : public LocalSearch {
+protected:
+    MPIEnv env0;
+    vector<int> file;
+    int BestTimeS;
+    int BestTimeMS;
+
+public:
+    CooperativeParallelDGVNS(Cost initUpperBound, MPIEnv env0Global)
+        : LocalSearch(initUpperBound)
+    {
+        env0 = env0Global;
+        BestTimeS = 0;
+        BestTimeMS = 0;
+    }
+    ~CooperativeParallelDGVNS() {}
+
+    bool solve(bool first = true);
+    // Model
+    void master();
+    void slave();
+    // Base functions
+    void VnsLdsCP(MPIEnv& env0, double btime, ParallelRandomClusterChoice* h);
+    // Clustering functions
+    uint getCluster();
+
+    // Conversions tools
+    void SolToMsg(MPIEnv& env0, uint cluster, uint numberclu, int kinit, int kmax, Cost bestUb, int sec, int msec, map<int, int>& bestSolution);
+    void MsgToSol(MPIEnv& env0, int nov, uint& cluster, uint& numberclu, int& k, int& kmax, Cost& bestUb, int& sec, int& msec, map<int, int>& bestSolution);
+};
+
+#endif
+#endif /* TB2CPDGVNS_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2dgvns.cpp b/code/include/tb2/vns/tb2dgvns.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..110eacc2f8d6298e8f29792a340cc72424d6f1ed
--- /dev/null
+++ b/code/include/tb2/vns/tb2dgvns.cpp
@@ -0,0 +1,224 @@
+/*
+ * tb2dgvns.cpp
+ *
+ *  Created on: 15 December 2016
+ *      Author: Abdelkader Ouali
+ *      PhD Student: LITIO, University of Oran ; GREYC, University of Caen.
+ */
+
+#include "tb2dgvns.hpp"
+#include "core/tb2wcsp.hpp"
+#ifdef BOOST
+
+bool VNSSolver::solve(bool first)
+{
+    // Initialization
+    beginSolve(MAX_COST);
+    try {
+        lastUb = MAX_COST;
+        lastSolution.clear();
+        if (first) {
+            preprocessing(MAX_COST);
+        } else {
+            if (ToulBar2::elimDegree >= 0)
+                ToulBar2::elimDegree_ = ToulBar2::elimDegree;
+        }
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+        if (lastUb < MAX_COST)
+            wcsp->setSolution(lastUb, &lastSolution);
+        endSolve(lastUb < MAX_COST, lastUb, true);
+        return (lastUb < MAX_COST);
+    }
+
+    // Compute the Initial solution
+    bool complete = false;
+    bestSolution.clear();
+    bestUb = generateInitSolution(ToulBar2::vnsInitSol, bestSolution, complete);
+    if (ToulBar2::verbose >= 1)
+        cout << "VNS: initial solution with" << ((complete) ? " optimal" : "") << " cost " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << endl;
+    try {
+        wcsp->updateUb(bestUb);
+        wcsp->enforceUb();
+        wcsp->propagate(); // warning! some variables might become assigned by propagation to a value different than in bestSolution
+        if (unassignedVars->getSize() == 0) {
+            lastUb = MAX_COST;
+            lastSolution.clear();
+            ToulBar2::lds = 0;
+            newSolution();
+            if (lastUb < MAX_COST)
+                wcsp->setSolution(lastUb, &lastSolution);
+            endSolve(lastUb < MAX_COST, lastUb, true);
+            return (lastUb < MAX_COST);
+        }
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+        if (bestUb < MAX_COST)
+            wcsp->setSolution(bestUb, &bestSolution);
+        endSolve(bestUb < MAX_COST, bestUb, true);
+        return (bestUb < MAX_COST);
+    }
+
+    assert((int)wcsp->numberOfUnassignedVariables() == unassignedVars->getSize());
+    ToulBar2::vnsLDSmax = min(ToulBar2::vnsLDSmax, (int)wcsp->getDomainSizeSum() - (int)wcsp->numberOfUnassignedVariables());
+    ToulBar2::vnsLDSmin = min(ToulBar2::vnsLDSmin, ToulBar2::vnsLDSmax);
+    ToulBar2::vnsKmax = min(ToulBar2::vnsKmax, (int)wcsp->numberOfUnassignedVariables());
+    ToulBar2::vnsKmin = min(ToulBar2::vnsKmin, ToulBar2::vnsKmax);
+    assert(ToulBar2::vnsLDSmin >= 0);
+    assert(ToulBar2::vnsLDSmax >= 0);
+    assert(ToulBar2::vnsLDSmin <= ToulBar2::vnsLDSmax);
+    assert(ToulBar2::vnsKmin >= 0);
+    assert(ToulBar2::vnsKmax >= 0);
+    assert(ToulBar2::vnsKmin <= ToulBar2::vnsKmax);
+
+    // cluster tree initialized AFTER generating initial solution
+    NeighborhoodStructure* h = NULL;
+    switch (ToulBar2::vnsNeighborVarHeur) {
+    case RANDOMVAR:
+        if (ToulBar2::verbose >= 1)
+            cout << "Random Variables Neighborhood Structure selection" << endl;
+        h = new RandomNeighborhoodChoice();
+        break;
+    case CLUSTERRAND:
+        if (ToulBar2::verbose >= 1)
+            cout << "Random Clusters Neighborhood Structure selection" << endl;
+        h = new RandomClusterChoice();
+        break;
+    default:
+        cerr << "Unknown Neighborhood Structure" << endl;
+        exit(EXIT_FAILURE);
+    }
+    h->init(wcsp, this);
+    if (ToulBar2::verbose >= 0 && ToulBar2::vnsNeighborVarHeur == CLUSTERRAND && ((ClustersNeighborhoodStructure*)h)->getSize() > 1) {
+        ClustersNeighborhoodStructure* ch = (ClustersNeighborhoodStructure*)h;
+        if (ToulBar2::verbose >= 1 || ToulBar2::debug)
+            ch->printClusters(cout);
+        cout << "Problem decomposition in " << ch->getSize() << " clusters with size distribution: min: " << ch->getMinClusterSize() << " median: " << ch->getMedianClusterSize() << " mean: " << ch->getMeanClusterSize() << " max: " << ch->getMaxClusterSize() << endl;
+    }
+    //vns/lds+cp
+    bool stop = false;
+    Long nbRestart = 1;
+    Long restart = 1;
+    int lds = ToulBar2::vnsLDSmin;
+    while (!stop && !complete && bestUb > ToulBar2::vnsOptimum) {
+        if (ToulBar2::verbose >= 0 && ToulBar2::restart > 1 && ToulBar2::lds)
+            cout << "****** Restart " << nbRestart << " with " << lds << " discrepancies and UB=" << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << " ****** (" << nbNodes << " nodes)" << endl;
+        Long rank = 1;
+        int k = ToulBar2::vnsKmin;
+        while (!complete && k <= ToulBar2::vnsKmax && bestUb > ToulBar2::vnsOptimum) {
+            //neighborhood and partial instantiation
+            set<int> neighborhood = h->getNeighborhood(k);
+            if (ToulBar2::verbose >= 1) {
+                cout << "LDS " << lds << " Neighborhood " << k << ": ";
+                for (set<int>::iterator it = neighborhood.begin(); it != neighborhood.end(); it++)
+                    cout << " " << *it;
+                cout << endl;
+            }
+            vector<int> variables;
+            variables.reserve(unassignedVars->getSize());
+            vector<int> values;
+            values.reserve(unassignedVars->getSize());
+            for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+                int v = *iter;
+                if (neighborhood.find(v) == neighborhood.end()) {
+                    variables.push_back(v);
+                    values.push_back(bestSolution[v]);
+                }
+            }
+
+            //repair
+            ToulBar2::vnsKcur = k;
+            ToulBar2::vnsLDScur = (ToulBar2::lds) ? lds : -1;
+            if (ToulBar2::lds)
+                complete = repair_recursiveSolve(lds, variables, values, bestUb);
+            else
+                complete = repair_recursiveSolve(variables, values, bestUb);
+
+            //updating
+            if (lastUb >= bestUb) {
+                if (h->incrementK()) {
+                    rank++;
+                    if (k < ToulBar2::vnsKmax) {
+                        switch (ToulBar2::vnsKinc) {
+                        case VNS_ADD1:
+                            k++;
+                            break;
+                        case VNS_MULT2:
+                            k *= 2;
+                            break;
+                        case VNS_LUBY:
+                            k = ToulBar2::vnsKmin * (int)luby(rank);
+                            break;
+                        case VNS_ADD1JUMP:
+                            if (ToulBar2::vnsNeighborVarHeur == RANDOMVAR || k < ((ClustersNeighborhoodStructure*)h)->getMaxClusterSize() + ((ClustersNeighborhoodStructure*)h)->getSize() - 1)
+                                k++;
+                            else
+                                k = ToulBar2::vnsKmax;
+                            break;
+                        default:
+                            cerr << "Unknown neighborhood size increment strategy inside VNS (see option -kinc)!" << endl;
+                            exit(EXIT_FAILURE);
+                        }
+                        k = min(k, ToulBar2::vnsKmax);
+                    } else
+                        k++;
+                    //                    cout << "rank: " << rank << " luby: " << luby(rank) << " k: " << k << " lds: " << ToulBar2::lds << endl;
+                }
+            } else {
+                rank = 1;
+                k = ToulBar2::vnsKmin;
+                restart = 1;
+                lds = ToulBar2::vnsLDSmin;
+                bestUb = lastUb;
+                for (int v = 0; v < (int)wcsp->numberOfVariables(); v++) {
+                    assert(lastSolution.find(v) != lastSolution.end());
+                    bestSolution[v] = lastSolution[v];
+                }
+                if (ToulBar2::verbose >= 1)
+                    cout << "VNS: new solution with cost " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << endl;
+            }
+        }
+        if (!complete && bestUb > ToulBar2::vnsOptimum) {
+            nbRestart++;
+            restart++;
+            if (nbRestart <= ToulBar2::restart && lds < ToulBar2::vnsLDSmax) {
+                if (ToulBar2::lds) {
+                    switch (ToulBar2::vnsLDSinc) {
+                    case VNS_ADD1:
+                        lds++;
+                        break;
+                    case VNS_MULT2:
+                        lds *= 2;
+                        break;
+                    case VNS_LUBY:
+                        lds = ToulBar2::vnsLDSmin * (int)luby(restart);
+                        break;
+                    default:
+                        cerr << "Unknown LDS increment strategy inside VNS (see option -linc)!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    lds = min(lds, ToulBar2::vnsLDSmax);
+                }
+            } else
+                stop = true;
+        }
+    }
+
+    if (ToulBar2::vnsOutput)
+        ToulBar2::vnsOutput.close();
+
+    if (bestUb < MAX_COST)
+        wcsp->setSolution(bestUb, &bestSolution);
+    endSolve(bestUb < MAX_COST, bestUb, complete);
+
+    return (bestUb < MAX_COST);
+}
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2dgvns.hpp b/code/include/tb2/vns/tb2dgvns.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..4392d2980bbdcabf107e440caab15d55ac4fcc81
--- /dev/null
+++ b/code/include/tb2/vns/tb2dgvns.hpp
@@ -0,0 +1,32 @@
+/*
+ * \file tb2dgvns.hpp
+ * \brief sequential decomposition guided variable neighborhood search method
+ *
+ *  Created on: 12 December 2016
+ *      Author: Abdelkader Ouali
+ *      PhD Student: LITIO, University of Oran ; GREYC, University of Caen.
+ */
+
+#ifndef TB2DGVNS_HPP_
+#define TB2DGVNS_HPP_
+
+#include "tb2vns.hpp"
+
+class VNSSolver : public LocalSearch {
+public:
+    VNSSolver(Cost initUpperBound)
+        : LocalSearch(initUpperBound)
+    {
+    }
+    ~VNSSolver() {}
+    bool solve(bool first = true);
+};
+
+#endif /* TB2DGVNS_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2localsearch.cpp b/code/include/tb2/vns/tb2localsearch.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..20797e80437b3db935cc01a6ad7021d5feb73bfa
--- /dev/null
+++ b/code/include/tb2/vns/tb2localsearch.cpp
@@ -0,0 +1,174 @@
+/*
+ * tb2localsearch.cpp
+ *
+ *  Created on: 3 mars 2015
+ *      Author: Abdelkader Ouali
+ *      Phd. Student : LITIO, University of Oran. GREYC, University of Caen.
+ */
+
+#include "tb2localsearch.hpp"
+#include "core/tb2wcsp.hpp"
+
+LocalSearch::LocalSearch(Cost initUpperBound)
+    : Solver(initUpperBound)
+    , bestUb(MAX_COST)
+    , lastUb(MAX_COST)
+{
+}
+
+LocalSearch::~LocalSearch()
+{
+}
+
+void LocalSearch::newSolution()
+{
+    Solver::newSolution();
+    //	static_cast<WCSP*>(wcsp)->registerConflicts();
+    lastSolution.clear();
+    for (unsigned int i = 0; i < wcsp->numberOfVariables(); ++i) {
+        lastSolution[i] = wcsp->getValue(i);
+    }
+    lastUb = wcsp->getLb();
+    if (ToulBar2::lds)
+        throw TimeOut(); // force VNS to restart with smallest search parameters at each solution
+}
+
+/// This function generates the initial solution
+/// \param mode : the generation method
+/// \param solutionInit : a map to store the initial solution
+Cost LocalSearch::generateInitSolution(VNSSolutionInitMethod mode, map<int, Value>& solutionInit, bool& complete)
+{
+    if (lastUb < MAX_COST && lastSolution.size() == wcsp->numberOfVariables()) { // reuse INCOP solution or any solution found
+        for (map<int, Value>::iterator it = lastSolution.begin(); it != lastSolution.end(); ++it) {
+            solutionInit[(*it).first] = (*it).second;
+        }
+        complete = (lastUb == wcsp->getLb());
+        return lastUb;
+    }
+
+    Cost cost = MAX_COST;
+    complete = false;
+    vector<int> dumvariables;
+    vector<int> dumvalues;
+    int lds = ToulBar2::lds;
+    switch (mode) {
+    case LS_INIT_RANDOM:
+        if (ToulBar2::verbose >= 1)
+            cout << "solution init random" << endl;
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); ++i) {
+            int res;
+            Value* val = new Value[wcsp->getDomainSize(i)];
+            wcsp->getEnumDomain(i, val);
+            res = (myrand() % wcsp->getDomainSize(i));
+            solutionInit[i] = *(val + res);
+            delete[] val;
+        }
+        cost = evaluate_partialInstantiation(solutionInit);
+        break;
+    case LS_INIT_INF:
+        if (ToulBar2::verbose >= 1)
+            cout << "solution init inf" << endl;
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); ++i) {
+            solutionInit[i] = wcsp->getInf(i);
+        }
+        cost = evaluate_partialInstantiation(solutionInit);
+        break;
+    case LS_INIT_SUP:
+        if (ToulBar2::verbose >= 1)
+            cout << "solution init sup" << endl;
+        for (unsigned int i = 0; i < wcsp->numberOfVariables(); ++i) {
+            solutionInit[i] = wcsp->getSup(i);
+        }
+        cost = evaluate_partialInstantiation(solutionInit);
+        break;
+    case LS_INIT_DFBB:
+        if (ToulBar2::verbose >= 1)
+            cout << "solution init DFBB" << endl;
+        ToulBar2::lds = 1; // ensures DFBB will stop after the first solution is found if any exists
+        complete = repair_recursiveSolve(dumvariables, dumvalues, wcsp->getUb()); // forbidden assignments are NOT allowed!
+        assert(complete || lastUb < MAX_COST);
+        for (map<int, Value>::iterator it = lastSolution.begin(); it != lastSolution.end(); ++it) {
+            solutionInit[(*it).first] = (*it).second;
+        }
+        cost = lastUb;
+        ToulBar2::lds = lds;
+        break;
+    case LS_INIT_LDS0:
+    default: // search using LDS with 0 or more discrepancies
+        if (ToulBar2::verbose >= 1)
+            cout << "solution init LDS " << mode << endl;
+        ToulBar2::lds = 0; // ensures LDS will explore without stopping at the first solution
+        complete = repair_recursiveSolve(abs(mode), dumvariables, dumvalues, wcsp->getUb()); // first, forbidden assignments are NOT allowed!
+        if (!complete && lastUb == MAX_COST) {
+            complete = repair_recursiveSolve(abs(mode), dumvariables, dumvalues, MAX_COST); // if nothing found, forbidden assignments are allowed!
+        }
+        assert(complete || lastUb < MAX_COST);
+        for (map<int, Value>::iterator it = lastSolution.begin(); it != lastSolution.end(); ++it) {
+            solutionInit[(*it).first] = (*it).second;
+        }
+        cost = lastUb;
+        ToulBar2::lds = lds;
+        break;
+    }
+    return cost;
+}
+
+Cost LocalSearch::evaluate_partialInstantiation(
+    vector<int>& variables, vector<int>& values)
+{
+    Cost cost = MAX_COST;
+    int storedepth = Store::getDepth();
+    Store::store();
+    try {
+        wcsp->setUb(MAX_COST);
+        wcsp->assignLS(variables, values);
+        cost = wcsp->getLb();
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+    }
+    Store::restore(storedepth);
+    return cost;
+}
+
+bool LocalSearch::repair_recursiveSolve(int discrepancy, vector<int>& variables, vector<int>& values, Cost ls_ub)
+{
+    lastUb = MAX_COST;
+    lastSolution.clear();
+    ToulBar2::limited = false;
+    ToulBar2::hbfs = 0; // HBFS not compatible with LDS
+    int storedepth = Store::getDepth();
+    Cost lb = wcsp->getLb();
+    Store::store();
+    try {
+        wcsp->setUb(ls_ub);
+        wcsp->enforceUb();
+        wcsp->propagate();
+        lb = wcsp->getLb();
+        int nbvar = unassignedVars->getSize();
+        ToulBar2::limited = true;
+        wcsp->assignLS(variables, values);
+        if (unassignedVars->getSize() == nbvar)
+            ToulBar2::limited = false;
+        if (ToulBar2::DEE == 4)
+            ToulBar2::DEE_ = 0; // only PSNS in preprocessing
+        try {
+            if (discrepancy >= 0)
+                recursiveSolveLDS(discrepancy);
+            else
+                recursiveSolve();
+        } catch (const TimeOut&) {
+            ToulBar2::limited = true;
+        }
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+    }
+    Store::restore(storedepth);
+    return (!ToulBar2::limited || lastUb == lb);
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2localsearch.hpp b/code/include/tb2/vns/tb2localsearch.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..8abc69c8d3d0461e706723409d7cd6dfc84ca985
--- /dev/null
+++ b/code/include/tb2/vns/tb2localsearch.hpp
@@ -0,0 +1,51 @@
+/*
+ * \file tb2localsearch.hpp
+ * \brief abstract class for local search solvers
+ *
+ *  Created on: 3 mars 2015
+ *      Author: Abdelkader Ouali
+ *      PhD Student: LITIO, University of Oran ; GREYC, University of Caen.
+ */
+
+#ifndef TB2LOCALSEARCH_HPP_
+#define TB2LOCALSEARCH_HPP_
+
+#include "search/tb2solver.hpp"
+
+class LocalSearch : public Solver {
+protected:
+    map<int, Value> bestSolution;
+    map<int, Value> lastSolution;
+    Cost bestUb;
+    Cost lastUb;
+
+public:
+    LocalSearch(Cost initUpperBound);
+    ~LocalSearch();
+
+    Cost generateInitSolution(VNSSolutionInitMethod mode, map<int, int>& solutionInit, bool& complete);
+    Cost evaluate_partialInstantiation(vector<int>& variables, vector<Value>& values);
+    Cost evaluate_partialInstantiation(map<int, Value>& solution)
+    {
+        vector<int> variables;
+        vector<Value> values;
+        for (map<int, Value>::iterator it = solution.begin(); it != solution.end(); ++it) {
+            variables.push_back((*it).first);
+            values.push_back((*it).second);
+        }
+        return evaluate_partialInstantiation(variables, values);
+    }
+    bool repair_recursiveSolve(int discrepancy, vector<int>& variables, vector<int>& values, Cost ls_ub = MAX_COST); /// \warning if discrepancy>=0 then explores with LDS else with a complete search
+    bool repair_recursiveSolve(vector<int>& variables, vector<int>& values, Cost ls_ub = MAX_COST) { return repair_recursiveSolve(-1, variables, values, ls_ub); } /// explores with a complete search
+
+    virtual void newSolution();
+};
+
+#endif /* TB2LOCALSEARCH_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2rpdgvns.cpp b/code/include/tb2/vns/tb2rpdgvns.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e3ebef2817d464c43b5d7e61ec90e6887f9d1d37
--- /dev/null
+++ b/code/include/tb2/vns/tb2rpdgvns.cpp
@@ -0,0 +1,747 @@
+/*
+ * tb2rpdgvns.cpp
+ *
+ *      Author: Abdelkader Ouali
+ *      PhD Student: LITIO, University of Oran ; GREYC, University of Caen.
+ */
+
+#include "tb2rpdgvns.hpp"
+#include "core/tb2wcsp.hpp"
+#ifdef OPENMPI
+
+// Conversion Tools
+// Solution to Message
+void ReplicatedParallelDGVNS::SolToMsg(
+    MPIEnv& env0, int cluster, int k, int discrepancy, Cost bestUb,
+    map<int, Value>& bestSolution)
+{
+    int i = 0;
+    env0.sendbuff[i] = cluster;
+    i++;
+    env0.sendbuff[i] = k;
+    i++;
+    env0.sendbuff[i] = discrepancy;
+    i++;
+    stringstream nfile;
+    nfile << bestUb;
+    string temp = nfile.str();
+    env0.sendbuff[i] = temp.size();
+    i++;
+    for (string::iterator it = temp.begin(); it != temp.end(); ++it) {
+        env0.sendbuff[i] = *it - '0';
+        i++;
+    }
+    nfile.clear();
+    for (map<int, Value>::iterator it = bestSolution.begin();
+         it != bestSolution.end(); ++it) {
+        env0.sendbuff[i] = it->second;
+        i++;
+    }
+}
+
+void ReplicatedParallelDGVNS::SolToMsg2(
+    MPIEnv& env0, Cost bestUb, map<int, Value>& bestSolution)
+{
+    int i = 0;
+    stringstream ss_bestUb;
+    ss_bestUb << bestUb;
+    string temp = ss_bestUb.str();
+    env0.sendbuff[i] = temp.size();
+    i++;
+    for (string::iterator it = temp.begin(); it != temp.end(); ++it) {
+        env0.sendbuff[i] = *it - '0';
+        i++;
+    }
+    ss_bestUb.clear();
+    for (map<int, Value>::iterator it = bestSolution.begin();
+         it != bestSolution.end(); ++it) {
+        env0.sendbuff[i] = it->second;
+        i++;
+    }
+}
+
+//Message to solution
+void ReplicatedParallelDGVNS::MsgToSol(
+    MPIEnv& env0, int nov, int& cluster, int& k, int& discrepancy,
+    Cost& bestUb, map<int, Value>& bestSolution)
+{
+    int j = 0;
+    cluster = env0.recvbuff[j];
+    j++;
+    k = env0.recvbuff[j];
+    j++;
+    discrepancy = env0.recvbuff[j];
+    j++;
+    uint size = env0.recvbuff[j];
+    j++;
+    bestUb = env0.recvbuff[j];
+    j++;
+    for (uint it = 1; it < size; it++) {
+        bestUb = (bestUb * 10) + env0.recvbuff[j];
+        j++;
+    }
+    for (int i = 0; i < nov; i++) {
+        bestSolution[i] = env0.recvbuff[j];
+        j++;
+    }
+}
+
+void ReplicatedParallelDGVNS::MsgToSol2(
+    MPIEnv& env0, int nov, Cost& bestUb, map<int, Value>& bestSolution)
+{
+    int j = 0;
+    uint size = env0.recvbuff[0];
+    j++;
+    bestUb = env0.recvbuff[1];
+    j++;
+    for (uint it = 1; it < size; it++) {
+        bestUb = (bestUb * 10) + env0.recvbuff[j];
+        j++;
+    }
+    for (int i = 0; i < nov; i++) {
+        bestSolution[i] = env0.recvbuff[j];
+        j++;
+    }
+}
+//---------------- Class Definition --------------------------//
+void timeOut()
+{
+    MPI_Abort(MPI_COMM_WORLD, 0);
+    //    MPI_Finalize();
+    //    exit(0);
+}
+
+bool ReplicatedParallelDGVNS::solve(bool first)
+{
+    // Initialization
+    beginSolve(MAX_COST);
+    try {
+        lastUb = MAX_COST;
+        lastSolution.clear();
+        if (first) {
+            preprocessing(MAX_COST);
+        } else {
+            if (ToulBar2::elimDegree >= 0)
+                ToulBar2::elimDegree_ = ToulBar2::elimDegree;
+        }
+    } catch (const Contradiction&) {
+        wcsp->whenContradiction();
+        if (env0.myrank == 0) {
+            if (lastUb < MAX_COST)
+                wcsp->setSolution(lastUb, &lastSolution);
+            endSolve(lastUb < MAX_COST, lastUb, true);
+        }
+        /* Shut down MPI */
+        MPI_Finalize();
+        return (lastUb < MAX_COST);
+    }
+
+    assert((int)wcsp->numberOfUnassignedVariables() == unassignedVars->getSize());
+    ToulBar2::vnsLDSmax = min(ToulBar2::vnsLDSmax, (int)wcsp->getDomainSizeSum() - (int)wcsp->numberOfUnassignedVariables());
+    ToulBar2::vnsLDSmin = min(ToulBar2::vnsLDSmin, ToulBar2::vnsLDSmax);
+    ToulBar2::vnsKmax = min(ToulBar2::vnsKmax, (int)wcsp->numberOfUnassignedVariables());
+    ToulBar2::vnsKmin = min(ToulBar2::vnsKmin, ToulBar2::vnsKmax);
+    assert(ToulBar2::vnsLDSmin >= 0);
+    assert(ToulBar2::vnsLDSmax >= 0);
+    assert(ToulBar2::vnsLDSmin <= ToulBar2::vnsLDSmax);
+    assert(ToulBar2::vnsKmin >= 0);
+    assert(ToulBar2::vnsKmax >= 0);
+    assert(ToulBar2::vnsKmin <= ToulBar2::vnsKmax);
+
+    bool complete = false;
+
+    mysrand(abs(ToulBar2::seed) + env0.myrank);
+
+    MPI_Barrier(MPI_COMM_WORLD); /* IMPORTANT */
+    startTime = MPI_Wtime();
+    ToulBar2::timeOut = timeOut;
+
+    env0.buffsize = (int)wcsp->numberOfVariables() + 108; // 3 : cluster + k + cost, second time, msecond time, localtime,the rest is the size of solution
+    env0.sendbuff = new int[env0.buffsize];
+    env0.recvbuff = new int[env0.buffsize];
+    if (env0.myrank == 0) {
+        if (!ToulBar2::vnsParallelSync) {
+            complete = radgvns();
+            endSolve(bestUb < MAX_COST, bestUb, complete);
+        } else {
+            complete = rsdgvns();
+            endSolve(bestUb < MAX_COST, bestUb, complete);
+        }
+    } else {
+        ToulBar2::showSolutions = false;
+        complete = slave();
+    }
+
+    if (ToulBar2::vnsOutput)
+        ToulBar2::vnsOutput << "Search end"
+                            << " " << cpuTime() << endl;
+    if (ToulBar2::vnsOutput)
+        ToulBar2::vnsOutput.close(); // close the output file
+
+    /* Shut down MPI */
+    MPI_Barrier(MPI_COMM_WORLD); /* IMPORTANT */
+    double elapsedTime = MPI_Wtime() - startTime;
+    double elapsedCPUTime = cpuTime() - ToulBar2::startCpuTime;
+    double totalCPUTime = 0.;
+    MPI_Reduce(&elapsedCPUTime, &totalCPUTime, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
+    if (ToulBar2::verbose >= 0 && env0.myrank == 0) { /* use time on master node */
+        cout << "Total CPU time = " << totalCPUTime << " seconds" << endl;
+        cout << "Solving real-time = " << elapsedTime << " seconds (not including preprocessing time)" << endl;
+    }
+    MPI_Finalize();
+
+    return (bestUb < MAX_COST);
+}
+
+//----------------------- Model Master/Slave -----------------------//
+bool ReplicatedParallelDGVNS::radgvns()
+{
+    if (ToulBar2::verbose >= 1)
+        cout << " RADGVNS kinit=" << ToulBar2::vnsKmin << " kmax=" << ToulBar2::vnsKmax
+             << " discrepancyinit=" << ToulBar2::vnsLDSmin << " discrepancymax=" << ToulBar2::vnsLDSmax << " neighbor change if improved=" << ToulBar2::vnsNeighborChange
+             << " neighbor size synchronization=" << ToulBar2::vnsNeighborSizeSync << " limit number processes=" << ToulBar2::vnsParallelLimit << endl;
+
+    // cluster tree initialized BEFORE generating initial solution
+    ParallelRandomClusterChoice* h = new ParallelRandomClusterChoice();
+    h->init(wcsp, this);
+    if (ToulBar2::verbose >= 0 && ToulBar2::vnsNeighborVarHeur == MASTERCLUSTERRAND && ((ClustersNeighborhoodStructure*)h)->getSize() > 1) {
+        ClustersNeighborhoodStructure* ch = (ClustersNeighborhoodStructure*)h;
+        if (ToulBar2::verbose >= 1 || ToulBar2::debug)
+            ch->printClusters(cout);
+        cout << "Problem decomposition in " << ch->getSize() << " clusters with size distribution: min: " << ch->getMinClusterSize() << " median: " << ch->getMedianClusterSize() << " mean: " << ch->getMeanClusterSize() << " max: " << ch->getMaxClusterSize() << endl;
+    }
+
+    // MPI data
+    MPI_Status status;
+
+    // verify the number of processes and number of clusters
+    env0.processes = env0.ntasks - 1;
+    //    cout << "number of processes=" << env0.processes << endl;
+    // verify the number of processes and number of clusters
+    int npr = 0;
+    if (ToulBar2::vnsParallelLimit) {
+        if (env0.ntasks > h->getSize()) {
+            npr = h->getSize();
+        } else {
+            npr = env0.processes;
+        }
+    } else {
+        npr = env0.processes;
+    }
+
+    if (ToulBar2::vnsOutput)
+        ToulBar2::vnsOutput << "#param " << ToulBar2::vnsNeighborVarHeur << " " << ToulBar2::vnsKmin << " " << ToulBar2::vnsKmax << " " << ToulBar2::vnsLDSmin << " " << ToulBar2::vnsInitSol << " " << env0.processes << " " << env0.ntasks << " " << h->getSize() << endl;
+
+    // Generation of initial Solution
+    file = h->getClustersIndex();
+    //    clusterKmax = vector<bool>(file.size(), false);
+    //    cout << "reading Time=" <<  cpuTime() << endl;
+    //    cout << "initial solution mode : " << ToulBar2::vnsInitSol << endl;
+    bool complete = false;
+    bestSolution.clear();
+    bestUb = generateInitSolution(ToulBar2::vnsInitSol, bestSolution, complete);
+    DumpBestSol(ToulBar2::vnsInitSol != LS_INIT_DFBB && ToulBar2::vnsInitSol < LS_INIT_LDS0);
+
+    // Get all clusters from the tree decomposition of constraint graph
+    int c = 0;
+    if (!complete && bestUb > ToulBar2::vnsOptimum) {
+        for (int p = 1; p < npr + 1; ++p) {
+            pr pr_p = pr();
+            pr_p.cl = c;
+            pr_p.k = ToulBar2::vnsKmin;
+            pr_p.lds = ToulBar2::vnsLDSmin;
+            pr_p.synch = false;
+            vecPR.push_back(pr_p);
+            SolToMsg(env0, pr_p.cl, pr_p.k, pr_p.lds, bestUb, bestSolution);
+            MPI_Send(&env0.sendbuff[0], env0.buffsize, MPI_INT, p, WORKTAG, MPI_COMM_WORLD);
+            c = (c + 1) % file.size();
+        }
+    }
+    Cost pbestUb = MAX_COST;
+    map<int, Value> pbestSolution;
+    while (npr && !complete && bestUb > ToulBar2::vnsOptimum) {
+        MPI_Recv(&env0.recvbuff[0], env0.buffsize, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
+        int pindex = status.MPI_SOURCE - 1;
+        complete = (status.MPI_TAG == WORKTAG);
+        if ((vecPR[pindex].lds >= ToulBar2::vnsLDSmax || ToulBar2::restart == 1) && vecPR[pindex].k >= ToulBar2::vnsKmax)
+            npr = 0;
+        MsgToSol2(env0, wcsp->numberOfVariables(), pbestUb, pbestSolution);
+        NeighborhoodChange(ToulBar2::vnsNeighborChange, pindex, c, ToulBar2::vnsKmin, ((ClustersNeighborhoodStructure*)h)->getMaxClusterSize() + ((ClustersNeighborhoodStructure*)h)->getSize() - 1, ToulBar2::vnsKmax, ToulBar2::vnsLDSmin, ToulBar2::vnsLDSmax, ToulBar2::vnsNeighborSizeSync, pbestUb, pbestSolution);
+        //        if (ToulBar2::restart==1 && find(clusterKmax.begin(), clusterKmax.end(), false) == clusterKmax.end()) npr = 0;
+        if (!complete && bestUb > ToulBar2::vnsOptimum) {
+            SolToMsg(env0, vecPR[pindex].cl, vecPR[pindex].k, vecPR[pindex].lds, bestUb, bestSolution);
+            MPI_Send(&env0.sendbuff[0], env0.buffsize, MPI_INT, status.MPI_SOURCE, WORKTAG, MPI_COMM_WORLD);
+        }
+    }
+
+    MPI_Request requests[env0.ntasks];
+    for (int p = 1; p < env0.ntasks; ++p) {
+        //        MPI_Isend(0, 0, MPI_INT, p, DIETAG, MPI_COMM_WORLD);
+
+        MPI_Isend(NULL, 0, MPI_INT, p, DIETAG, MPI_COMM_WORLD, &requests[p]);
+    }
+
+    return complete && (bestUb < MAX_COST);
+}
+
+bool ReplicatedParallelDGVNS::rsdgvns()
+{
+    if (ToulBar2::verbose >= 1)
+        cout << " RSDGVNS kinit=" << ToulBar2::vnsKmin << " kmax=" << ToulBar2::vnsKmax
+             << " discrepancyinit=" << ToulBar2::vnsLDSmin << " discrepancymax=" << ToulBar2::vnsLDSmax << " neighbor change if improved=" << ToulBar2::vnsNeighborChange
+             << " neighbor size synchronization=" << ToulBar2::vnsNeighborSizeSync << " limit number processes=" << ToulBar2::vnsParallelLimit << endl;
+
+    // cluster tree initialized BEFORE generating initial solution
+    ParallelRandomClusterChoice* h = new ParallelRandomClusterChoice();
+    h->init(wcsp, this);
+    if (ToulBar2::verbose >= 0 && ToulBar2::vnsNeighborVarHeur == MASTERCLUSTERRAND && ((ClustersNeighborhoodStructure*)h)->getSize() > 1) {
+        ClustersNeighborhoodStructure* ch = (ClustersNeighborhoodStructure*)h;
+        if (ToulBar2::verbose >= 1 || ToulBar2::debug)
+            ch->printClusters(cout);
+        cout << "Problem decomposition in " << ch->getSize() << " clusters with size distribution: min: " << ch->getMinClusterSize() << " median: " << ch->getMedianClusterSize() << " mean: " << ch->getMeanClusterSize() << " max: " << ch->getMaxClusterSize() << endl;
+    }
+
+    // MPI data
+    MPI_Status status;
+
+    // Initialization
+    map<int, Value> bestInterSolution;
+    Cost bestInterUb = MAX_COST;
+
+    // verify the number of processes and number of clusters
+    env0.processes = env0.ntasks - 1;
+    cout << "number of processes=" << env0.processes << endl;
+    // verify the number of processes and number of clusters
+    int npr = 0;
+    if (ToulBar2::vnsParallelLimit) {
+        if (env0.ntasks > h->getSize()) {
+            npr = h->getSize();
+        } else {
+            npr = env0.processes;
+        }
+    } else {
+        npr = env0.processes;
+    }
+
+    if (ToulBar2::vnsOutput)
+        ToulBar2::vnsOutput << "#param " << ToulBar2::vnsNeighborVarHeur << " " << ToulBar2::vnsKmin << " " << ToulBar2::vnsKmax << " " << ToulBar2::vnsLDSmin << " " << ToulBar2::vnsInitSol << " " << env0.processes << " " << env0.ntasks << " " << h->getSize() << endl;
+
+    // Generation of initial Solution
+    file = h->getClustersIndex();
+    //    clusterKmax = vector<bool>(file.size(), false);
+    if (ToulBar2::vnsOutput)
+        ToulBar2::vnsOutput << "cslsize " << file.size() << " npr= " << npr << endl;
+
+    bool complete = false;
+    bestSolution.clear();
+    bestUb = generateInitSolution(ToulBar2::vnsInitSol, bestSolution, complete);
+    for (map<int, Value>::iterator it = bestSolution.begin();
+         it != bestSolution.end(); ++it)
+        bestInterSolution[(*it).first] = (*it).second;
+    bestInterUb = bestUb;
+    DumpBestSol(ToulBar2::vnsInitSol != LS_INIT_DFBB && ToulBar2::vnsInitSol < LS_INIT_LDS0);
+
+    // Get all clusters from the tree decomposition of constraint graph
+    int c = 0;
+    bool stop = false;
+    Long nbRestart = 1;
+    Long restart = 1;
+    int lds = ToulBar2::vnsLDSmin;
+    while (npr && !stop && !complete && bestUb > ToulBar2::vnsOptimum) {
+        if (ToulBar2::verbose >= 0 && ToulBar2::restart > 1 && ToulBar2::lds)
+            cout << "****** Restart " << nbRestart << " with " << lds << " discrepancies and UB=" << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << " ****** (" << nbNodes << " nodes)" << endl;
+        Long rank = 1;
+        int k = ToulBar2::vnsKmin;
+        while (npr && !complete && k <= ToulBar2::vnsKmax && bestUb > ToulBar2::vnsOptimum) {
+
+            for (int p = 1; p < npr + 1; ++p) {
+                SolToMsg(env0, c, k, lds, bestUb, bestSolution);
+                MPI_Send(&env0.sendbuff[0], env0.buffsize, MPI_INT, p, WORKTAG, MPI_COMM_WORLD);
+                c = (c + 1) % file.size();
+            }
+
+            int finished = 0;
+            //S"
+            Cost pBestUb;
+            map<int, Value> pBestSolution;
+
+            while (finished < npr) {
+                MPI_Recv(&env0.recvbuff[0], env0.buffsize, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
+                MsgToSol2(env0, wcsp->numberOfVariables(), pBestUb, pBestSolution);
+                if (pBestUb < bestInterUb) {
+                    bestInterUb = pBestUb;
+                    for (int v = 0; v < (int)wcsp->numberOfVariables(); v++) {
+                        bestInterSolution[v] = pBestSolution[v];
+                    }
+                }
+                finished++;
+            }
+
+            if (bestInterUb < bestUb) {
+                rank = 1;
+                k = ToulBar2::vnsKmin;
+                restart = 1;
+                lds = ToulBar2::vnsLDSmin;
+                bestUb = bestInterUb;
+                for (int v = 0; v < (int)wcsp->numberOfVariables(); v++) {
+                    bestSolution[v] = bestInterSolution[v];
+                }
+                DumpBestSol();
+            } else {
+                rank++;
+                if (k < ToulBar2::vnsKmax) {
+                    switch (ToulBar2::vnsKinc) {
+                    case VNS_ADD1:
+                        k++;
+                        break;
+                    case VNS_MULT2:
+                        k *= 2;
+                        break;
+                    case VNS_LUBY:
+                        k = ToulBar2::vnsKmin * (int)luby(rank);
+                        break;
+                    case VNS_ADD1JUMP:
+                        if (ToulBar2::vnsNeighborVarHeur == RANDOMVAR || k < ((ClustersNeighborhoodStructure*)h)->getMaxClusterSize() + ((ClustersNeighborhoodStructure*)h)->getSize() - 1)
+                            k++;
+                        else
+                            k = ToulBar2::vnsKmax;
+                        break;
+                    default:
+                        cerr << "Unknown neighborhood size increment strategy inside VNS (see option -kinc)!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    k = min(k, ToulBar2::vnsKmax);
+                } else
+                    k++;
+            }
+        }
+        if (!complete && bestUb > ToulBar2::vnsOptimum) {
+            nbRestart++;
+            restart++;
+            if (nbRestart <= ToulBar2::restart && lds < ToulBar2::vnsLDSmax) {
+                if (ToulBar2::lds) {
+                    switch (ToulBar2::vnsLDSinc) {
+                    case VNS_ADD1:
+                        lds++;
+                        break;
+                    case VNS_MULT2:
+                        lds *= 2;
+                        break;
+                    case VNS_LUBY:
+                        lds = ToulBar2::vnsLDSmin * (int)luby(restart);
+                        break;
+                    default:
+                        cerr << "Unknown LDS increment strategy inside VNS (see option -linc)!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    lds = min(lds, ToulBar2::vnsLDSmax);
+                }
+            } else
+                stop = true;
+        }
+    }
+
+    MPI_Request requests[env0.ntasks];
+    for (int p = 1; p < env0.ntasks; ++p) {
+        //        MPI_Isend(0, 0, MPI_INT, p, DIETAG, MPI_COMM_WORLD);
+        MPI_Isend(NULL, 0, MPI_INT, p, DIETAG, MPI_COMM_WORLD, &requests[p]);
+    }
+
+    return complete && (bestUb < MAX_COST);
+}
+
+bool ReplicatedParallelDGVNS::slave()
+{
+    // cluster tree initialized BEFORE generating initial solution
+    ParallelRandomClusterChoice* h = new ParallelRandomClusterChoice();
+    h->init(wcsp, this);
+
+    // MPI data
+    MPI_Status status;
+
+    // loop for getting new initial solution to initialize the search process
+    bool complete = false;
+    while (true) {
+        MPI_Recv(&env0.recvbuff[0], env0.buffsize, MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
+        if (status.MPI_TAG == DIETAG)
+            return complete; // warning! always wait for DIETAG before stopping
+        /* launch Vns/Lds+cp */
+        complete = complete || VnsLdsCP(env0, h);
+        /* Send the result back */
+        MPI_Request request;
+        MPI_Isend(&env0.sendbuff[0], env0.buffsize, MPI_INT, 0, complete, MPI_COMM_WORLD, &request);
+    }
+    return complete;
+}
+
+//------------------- Base functions -----------------------//
+
+bool ReplicatedParallelDGVNS::VnsLdsCP(MPIEnv& env0, ParallelRandomClusterChoice* h)
+{
+    int cluster, k, discrepancy;
+    MsgToSol(env0, wcsp->numberOfVariables(), cluster, k, discrepancy, bestUb,
+        bestSolution);
+    for (map<int, Value>::iterator it = bestSolution.begin();
+         it != bestSolution.end(); ++it)
+        lastSolution[(*it).first] = (*it).second;
+    lastUb = bestUb;
+    //vns/lds+cp
+    set<int> neighborhood = h->SlaveGetNeighborhood(cluster, k); // based shuffle
+    vector<int> variables;
+    variables.reserve(unassignedVars->getSize());
+    vector<int> values;
+    values.reserve(unassignedVars->getSize());
+    for (BTList<Value>::iterator iter = unassignedVars->begin(); iter != unassignedVars->end(); ++iter) {
+        int v = *iter;
+        if (neighborhood.find(v) == neighborhood.end()) {
+            variables.push_back(v);
+            values.push_back(lastSolution[v]);
+        }
+    }
+    if (ToulBar2::verbose >= 1) {
+        cout << env0.myrank << ": LDS " << discrepancy << " Neighborhood " << k << ": ";
+        for (set<int>::iterator it = neighborhood.begin(); it != neighborhood.end(); it++)
+            cout << " " << *it;
+        cout << endl;
+    }
+
+    //repair
+    bool complete = false;
+    ToulBar2::vnsKcur = k;
+    ToulBar2::vnsLDScur = (ToulBar2::lds) ? discrepancy : -1;
+    if (ToulBar2::lds)
+        complete = repair_recursiveSolve(discrepancy, variables, values, bestUb);
+    else
+        complete = repair_recursiveSolve(variables, values, bestUb);
+    SolToMsg2(env0, lastUb, lastSolution);
+    return complete;
+}
+
+void ReplicatedParallelDGVNS::NeighborhoodChange(
+    int strategy, int p, int& c, int kinit, int kjump, int kmax, int ldsmin, int ldsmax,
+    bool synch, Cost pBestUb, map<int, Value>& pBestSolution)
+{
+    switch (strategy) {
+    case 0:
+        ChangeClusterAlways(p, c, kinit, kjump, kmax, ldsmin, ldsmax, synch, pBestUb,
+            pBestSolution);
+        break;
+    case 1:
+        ChangeClusterWhenNotImproved(p, c, kinit, kjump, kmax, ldsmin, ldsmax, synch,
+            pBestUb, pBestSolution);
+        break;
+    default:
+        ChangeClusterAlways(p, c, kinit, kjump, kmax, ldsmin, ldsmax, synch, pBestUb,
+            pBestSolution);
+        break;
+    }
+}
+
+void ReplicatedParallelDGVNS::ChangeClusterAlways(
+    int p, int& c, int kinit, int kjump, int kmax, int ldsmin, int ldsmax, bool synch,
+    Cost pBestUb, map<int, Value>& pBestSolution)
+{
+    bool improved = (pBestUb < bestUb);
+    if (pBestUb <= bestUb) {
+        bestUb = pBestUb;
+        for (int v = 0; v < (int)wcsp->numberOfVariables(); v++) {
+            bestSolution[v] = pBestSolution[v];
+        }
+        //		ToulBar2::vnsOutput << "# ------------Change A------------------------------" << endl;
+        //		ToulBar2::vnsOutput << "cluster=" << c <<" process="<< p << " k="<< vecPR[p].k << " Time " << BestTime << endl;
+        if (improved)
+            DumpBestSol();
+        for (int i = 0; synch && i < (int)vecPR.size(); i++) {
+            vecPR[i].synch = true;
+        }
+        vecPR[p].synch = false;
+        vecPR[p].cl = c;
+        vecPR[p].k = kinit;
+        vecPR[p].lds = ldsmin;
+    } else {
+        vecPR[p].cl = c;
+        if (synch && vecPR[p].synch == true) {
+            vecPR[p].k = kinit;
+            vecPR[p].lds = ldsmin;
+            vecPR[p].synch = false;
+        } else {
+            if (vecPR[p].k < kmax) {
+                switch (ToulBar2::vnsKinc) {
+                case VNS_ADD1:
+                case VNS_LUBY:
+                    vecPR[p].k++;
+                    break;
+                case VNS_MULT2:
+                    vecPR[p].k *= 2;
+                    break;
+                case VNS_ADD1JUMP:
+                    if (ToulBar2::vnsNeighborVarHeur == RANDOMVAR || vecPR[p].k < kjump)
+                        vecPR[p].k++;
+                    else
+                        vecPR[p].k = kmax;
+                    break;
+                default:
+                    cerr << "Unknown neighborhood size increment strategy inside VNS (see option -kinc)!" << endl;
+                    exit(EXIT_FAILURE);
+                }
+                vecPR[p].k = min(vecPR[p].k, kmax);
+            } else if (ToulBar2::restart > 1) { // Warning, unbounded number of restarts...
+                vecPR[p].k = kinit;
+                if (ToulBar2::lds) {
+                    switch (ToulBar2::vnsLDSinc) {
+                    case VNS_ADD1:
+                    case VNS_LUBY:
+                        vecPR[p].lds++;
+                        break;
+                    case VNS_MULT2:
+                        vecPR[p].lds *= 2;
+                        break;
+                    default:
+                        cerr << "Unknown LDS increment strategy inside VNS (see option -linc)!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    vecPR[p].lds = min(vecPR[p].lds, ToulBar2::vnsLDSmax);
+                }
+                //            } else {
+                //                clusterKmax[c] = true;
+            }
+        }
+    }
+    c = (c + 1) % file.size();
+}
+
+void ReplicatedParallelDGVNS::ChangeClusterWhenNotImproved(
+    int p, int& c, int kinit, int kjump, int kmax, int ldsmin, int ldsmax, bool synch,
+    Cost pBestUb, map<int, Value>& pBestSolution)
+{
+    bool improved = (pBestUb < bestUb);
+    if (pBestUb <= bestUb) {
+        bestUb = pBestUb;
+        for (int v = 0; v < (int)wcsp->numberOfVariables(); v++) {
+            bestSolution[v] = pBestSolution[v];
+        }
+        //		ToulBar2::vnsOutput << "# -------NOIMP-----------------------------------" << endl;
+        //		ToulBar2::vnsOutput << "cluster="<< c << " process="<< p << " k="<< vecPR[p].k << " Time=" << BestTime <<endl;
+        if (improved)
+            DumpBestSol();
+        for (int i = 0; synch && i < (int)vecPR.size(); i++) {
+            vecPR[i].synch = true;
+        }
+        vecPR[p].synch = false;
+        // keep the current cluster
+        vecPR[p].k = kinit;
+        vecPR[p].lds = ldsmin;
+    } else {
+        vecPR[p].cl = c; // change cluster when no improvement is considered
+        if (synch && vecPR[p].synch == true) {
+            vecPR[p].k = kinit;
+            vecPR[p].lds = ldsmin;
+            vecPR[p].synch = false;
+        } else {
+            if (vecPR[p].k < kmax) {
+                switch (ToulBar2::vnsKinc) {
+                case VNS_ADD1:
+                case VNS_LUBY:
+                    vecPR[p].k++;
+                    break;
+                case VNS_MULT2:
+                    vecPR[p].k *= 2;
+                    break;
+                case VNS_ADD1JUMP:
+                    if (ToulBar2::vnsNeighborVarHeur == RANDOMVAR || vecPR[p].k < kjump)
+                        vecPR[p].k++;
+                    else
+                        vecPR[p].k = kmax;
+                    break;
+                default:
+                    cerr << "Unknown neighborhood size increment strategy inside VNS (see option -kinc)!" << endl;
+                    exit(EXIT_FAILURE);
+                }
+                vecPR[p].k = min(vecPR[p].k, kmax);
+            } else if (ToulBar2::restart > 1) { // Warning, unbounded number of restarts...
+                vecPR[p].k = kinit;
+                if (ToulBar2::lds) {
+                    switch (ToulBar2::vnsLDSinc) {
+                    case VNS_ADD1:
+                    case VNS_LUBY:
+                        vecPR[p].lds++;
+                        break;
+                    case VNS_MULT2:
+                        vecPR[p].lds *= 2;
+                        break;
+                    default:
+                        cerr << "Unknown LDS increment strategy inside VNS (see option -linc)!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    vecPR[p].lds = min(vecPR[p].lds, ToulBar2::vnsLDSmax);
+                }
+                //            } else {
+                //                clusterKmax[c] = true;
+            }
+        }
+        c = (c + 1) % file.size(); // change cluster when no improvement is considered
+    }
+}
+
+void ReplicatedParallelDGVNS::DumpBestSol(bool improved)
+{
+    // Save
+    wcsp->setSolution(bestUb, &bestSolution);
+    if (ToulBar2::vnsOutput) {
+        //cout << "# ------------------------------------------" << endl;
+        ToulBar2::vnsOutput << "InstanceVnsBestTime " << MPI_Wtime() - startTime << endl;
+        ToulBar2::vnsOutput << "Cost " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << endl;
+        ToulBar2::vnsOutput << "Solution ";
+        for (map<int, Value>::iterator it = bestSolution.begin();
+             it != bestSolution.end(); ++it)
+            ToulBar2::vnsOutput << (*it).first << "=" << (*it).second << " ";
+        ToulBar2::vnsOutput << endl;
+        ToulBar2::vnsOutput << "# ------------------------------------------"
+                            << endl;
+    } else {
+        //        cout << "# ------------------------------------------" << endl;
+        //        cout << "InstanceVnsBestTime " << BestTime << endl;
+        //        cout << "Cost "  << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << endl;
+        //        cout << "Solution ";
+        //        for (map<int, Value>::iterator it = bestSolution.begin();
+        //                it != bestSolution.end(); ++it)
+        //            cout << (*it).first << "=" << (*it).second << " ";
+        //        cout << endl;
+        //        cout << "# ------------------------------------------" << endl;
+    }
+    if (improved && ToulBar2::verbose >= 0) {
+        if (!ToulBar2::bayesian)
+            cout << "New solution: " << std::fixed << std::setprecision(ToulBar2::decimalPoint) << wcsp->Cost2ADCost(bestUb) << std::setprecision(DECIMAL_POINT) << " in " << (MPI_Wtime() - startTime) << " seconds." << endl;
+        else
+            cout << "New solution: " << bestUb << " energy: " << -(wcsp->Cost2LogProb(bestUb) + ToulBar2::markov_log) << " prob: " << wcsp->Cost2Prob(bestUb) * Exp(ToulBar2::markov_log) << " in " << MPI_Wtime() - startTime << " seconds." << endl;
+    }
+    if (improved && ToulBar2::showSolutions) {
+        wcsp->printSolution();
+        cout << endl;
+    }
+    if (ToulBar2::writeSolution && ToulBar2::solutionFile != NULL) {
+        fseek(ToulBar2::solutionFile, ToulBar2::solutionFileRewindPos, SEEK_SET);
+        wcsp->printSolution(ToulBar2::solutionFile);
+        fprintf(ToulBar2::solutionFile, "\n");
+    }
+    if (ToulBar2::xmlflag) {
+        cout << "o " << bestUb << endl;
+    }
+    if (ToulBar2::maxsateval) {
+        cout << "o " << bestUb << endl;
+    }
+    if (ToulBar2::uaieval && !ToulBar2::isZ) {
+        ((WCSP*)wcsp)->solution_UAI(bestUb);
+    }
+
+    if (ToulBar2::newsolution)
+        (*ToulBar2::newsolution)(wcsp->getIndex(), wcsp->getSolver());
+}
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2rpdgvns.hpp b/code/include/tb2/vns/tb2rpdgvns.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..573903ec6dc243074811ddd444f01ef2574c21b7
--- /dev/null
+++ b/code/include/tb2/vns/tb2rpdgvns.hpp
@@ -0,0 +1,70 @@
+/*
+ * \file tb2rpdgvns.hpp
+ * \brief replicated parallel decomposition guided variable neighborhood search method
+ *
+ *      Author: Abdelkader Ouali
+ *      PhD Student: LITIO, University of Oran ; GREYC, University of Caen.
+ */
+
+#ifndef TB2RPDGVNS_HPP_
+#define TB2RPDGVNS_HPP_
+#ifdef OPENMPI
+
+#include "tb2cpdgvns.hpp"
+
+struct pr { // use it later
+    int cl;
+    int k;
+    int lds;
+    bool synch;
+};
+
+typedef vector<pr> PR;
+
+class ReplicatedParallelDGVNS : public LocalSearch {
+protected:
+    MPIEnv env0;
+    vector<int> file;
+    PR vecPR;
+    //    vector<bool> clusterKmax;  // clusterKmax[c] is true if cluster c has its k = kmax
+    double startTime;
+
+public:
+    ReplicatedParallelDGVNS(Cost initUpperBound, MPIEnv env0Global)
+        : LocalSearch(initUpperBound)
+        , env0(env0Global)
+        , startTime(.0)
+    {
+    }
+    ~ReplicatedParallelDGVNS() {}
+
+    bool solve(bool first = true);
+    // Model
+    bool radgvns();
+    bool rsdgvns();
+    bool slave();
+    void NeighborhoodChange(int strategy, int p, int& c, int kinit, int kjump, int kmax, int ldsmin, int ldsmax, bool synch, Cost pBestUb, map<int, Value>& pBestSolution);
+    void DumpBestSol(bool improved = true);
+    bool VnsLdsCP(MPIEnv& env0, ParallelRandomClusterChoice* h);
+
+    // strategies
+
+    void ChangeClusterAlways(int p, int& c, int kinit, int kjump, int kmax, int ldsmin, int ldsmax, bool synch, Cost pBestUb, map<int, Value>& pBestSolution);
+    void ChangeClusterWhenNotImproved(int p, int& c, int kinit, int kjump, int kmax, int ldsmin, int ldsmax, bool synch, Cost pBestUb, map<int, Value>& pBestSolution);
+
+    //Conversions tools
+    void SolToMsg(MPIEnv& env0, int cluster, int k, int discrepancy, Cost bestUb, map<int, Value>& bestSolution);
+    void SolToMsg2(MPIEnv& env0, Cost bestUb, map<int, Value>& bestSolution);
+    void MsgToSol(MPIEnv& env0, int nov, int& cluster, int& k, int& discrepancy, Cost& bestUb, map<int, Value>& bestSolution);
+    void MsgToSol2(MPIEnv& env0, int nov, Cost& bestUb, map<int, Value>& bestSolution);
+};
+
+#endif
+#endif /* TB2RPDGVNS_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2vns.cpp b/code/include/tb2/vns/tb2vns.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a120a04e06816128d30284d52dc81a8011de2be5
--- /dev/null
+++ b/code/include/tb2/vns/tb2vns.cpp
@@ -0,0 +1,569 @@
+/*
+ * tb2vns.cpp
+ *
+ *  Created on: 3 mars 2015
+ *      Authors: Mathieu Fontaine, Abdelkader Ouali
+ *      Phd. Student : LITIO, University of Oran. GREYC, University of Caen.
+ */
+
+#ifdef BOOST
+#include "tb2vns.hpp"
+#include "core/tb2wcsp.hpp"
+#include "search/tb2clusters.hpp"
+
+using namespace boost;
+
+// loading decomposition for only a given file
+void ClustersNeighborhoodStructure::load_decomposition()
+{
+    if (ToulBar2::clusterFile != "") {
+        bool cover = false;
+        if (ToulBar2::clusterFile.find(".cov") != string::npos)
+            cover = true;
+        fstream file(ToulBar2::clusterFile.c_str());
+        //file >> clustersNumber;
+        set<int> nbvars;
+        set<int> nbunvars;
+        while (!file.eof()) {
+            string cluster;
+            getline(file, cluster);
+            if (!cluster.empty()) {
+                set<int> tmp;
+                stringstream ss(cluster);
+                if (cover) {
+                    int clusterid, parentid;
+                    ss >> clusterid;
+                    ss >> parentid;
+                }
+                do {
+                    unsigned int var;
+                    ss >> var;
+                    nbvars.insert(var);
+                    if (var >= wcsp->numberOfVariables()) {
+                        cerr << "Error: cluster decomposition contains bad variable index!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    if (wcsp->unassigned(var)) {
+                        tmp.insert(var);
+                        nbunvars.insert(var);
+                    }
+                } while (ss.good());
+                if (tmp.size() > 0) {
+                    TDCluster c = add_vertex(m_graph);
+                    m_graph[c].vars = tmp;
+                }
+            }
+        }
+        file.close();
+        if (nbvars.size() != wcsp->numberOfVariables()) {
+            cerr << "Error: cluster decomposition has missing variables! (" << nbvars.size() << "!=" << wcsp->numberOfVariables() << ")" << endl;
+            exit(EXIT_FAILURE);
+        }
+        assert(nbunvars.size() == wcsp->numberOfUnassignedVariables());
+        TCDGraph::vertex_iterator v, vend, v2;
+        int num = 0;
+        for (tie(v, vend) = vertices(m_graph); v != vend; ++v) {
+            num++;
+            string name;
+            vector<int> cl;
+            ostringstream ss(name);
+            ss << *v << ":(";
+            bool first = true;
+            for (set<int>::iterator i = m_graph[*v].vars.begin();
+                 i != m_graph[*v].vars.end(); ++i) {
+                if (not first)
+                    ss << ",";
+                ss << *i;
+                first = false;
+            }
+            ss << ")";
+            m_graph[*v].name = ss.str();
+            for (v2 = v + 1; v2 != vend; ++v2) {
+                set<int> separator;
+                set<int> v_vars = m_graph[*v].vars;
+                set<int> v2_vars = m_graph[*v2].vars;
+                set_intersection(v_vars.begin(), v_vars.end(), v2_vars.begin(),
+                    v2_vars.end(), inserter(separator, separator.begin()));
+
+                if (separator.size() > 0) {
+                    Cluster_edge sep;
+                    tie(sep, tuples::ignore) = add_edge(*v, *v2, m_graph);
+                    m_graph[sep].vars = separator;
+                    m_graph[sep].size = (float)1 / separator.size();
+                }
+            }
+        }
+    } else if (ToulBar2::varOrder) {
+        set<int> nbunvars;
+        TreeDecomposition* td = new TreeDecomposition((WCSP*)wcsp);
+        double time = cpuTime();
+        td->buildFromOrder();
+        int nc = td->getNbOfClusters();
+        for (int i = 0; i < nc; i++) {
+            Cluster* ct = td->getCluster(i);
+            if (ct->getSep())
+                ct->getSep()->deconnect(); //deconnect separator constraints
+            set<int> unassignedvars;
+            set<int> cvars = ct->getVars();
+            for (TVars::iterator iter = cvars.begin(); iter != cvars.end(); ++iter)
+                if (wcsp->unassigned(*iter)) {
+                    unassignedvars.insert(*iter);
+                    nbunvars.insert(*iter);
+                }
+            if (unassignedvars.size() > 0) {
+                TDCluster c = add_vertex(m_graph);
+                m_graph[c].name = to_string(i);
+                m_graph[c].vars = unassignedvars;
+            }
+        }
+        assert(nbunvars.size() == wcsp->numberOfUnassignedVariables());
+        TCDGraph::vertex_iterator v, vend, v2;
+        for (tie(v, vend) = vertices(m_graph); v != vend; ++v) {
+            for (v2 = v + 1; v2 != vend; ++v2) {
+                set<int> separator;
+                td->intersection(m_graph[*v].vars, m_graph[*v2].vars, separator);
+                if (separator.size() > 0) {
+                    Cluster_edge sep;
+                    tie(sep, tuples::ignore) = add_edge(*v, *v2, m_graph);
+                    m_graph[sep].vars = separator;
+                    m_graph[sep].size = (float)1 / separator.size();
+                }
+            }
+        }
+        if (ToulBar2::verbose >= 0)
+            cout << "Tree decomposition time: " << cpuTime() - time << " seconds." << endl;
+    } else {
+        // make only one big cluster with all the problem variables
+        TDCluster c = add_vertex(m_graph);
+        m_graph[c].name = to_string(0);
+        m_graph[c].vars = l->getUnassignedVars();
+    }
+    if (fabs(ToulBar2::boostingBTD) > 0. && fabs(ToulBar2::boostingBTD) < 1.) {
+        TCDGraph abs_graph; // graph absorption
+        cluster_graph_absorption(m_graph, abs_graph);
+        m_graph = abs_graph;
+    }
+}
+
+double ClustersNeighborhoodStructure::getMeanClusterSize() const
+{
+    uint nbc = getSize();
+    if (nbc == 0)
+        return 0;
+    uint totalsize = 0;
+    for (uint i = 0; i < nbc; i++)
+        totalsize += m_graph[i].vars.size();
+    return (double)totalsize / nbc;
+}
+
+uint ClustersNeighborhoodStructure::getMedianClusterSize() const
+{
+    uint nbc = getSize();
+    if (nbc == 0)
+        return 0;
+    int csize[nbc];
+    for (uint i = 0; i < nbc; i++)
+        csize[i] = m_graph[i].vars.size();
+    return stochastic_selection<int>(csize, 0, nbc - 1, nbc / 2);
+}
+
+void RandomNeighborhoodChoice::init(WeightedCSP* wcsp_, LocalSearch* l_)
+{
+    this->l = l_;
+    wcsp = wcsp_;
+}
+const zone RandomNeighborhoodChoice::getNeighborhood(size_t neighborhood_size)
+{
+    zone neighborhood;
+    vector<int> z(l->unassignedVars->getSize());
+    unsigned int j = 0;
+    for (BTList<Value>::iterator iter = l->unassignedVars->begin(); iter != l->unassignedVars->end(); ++iter) {
+        z[j] = *iter;
+        ++j;
+    }
+    random_shuffle(z.begin(), z.end());
+    assert(neighborhood_size <= z.size());
+    neighborhood.insert(z.begin(), z.begin() + neighborhood_size);
+    return neighborhood;
+}
+const zone RandomNeighborhoodChoice::getNeighborhood(size_t neighborhood_size, zone z) const
+{
+    zone neighborhood;
+    vector<int> zv(z.begin(), z.end());
+    random_shuffle(zv.begin(), zv.end());
+    assert(neighborhood_size <= zv.size());
+    neighborhood.insert(zv.begin(), zv.begin() + neighborhood_size);
+    return neighborhood;
+}
+
+void RandomClusterChoice::init(WeightedCSP* wcsp_, LocalSearch* l_)
+{
+
+    this->l = l_;
+    this->wcsp = wcsp_;
+    maxClusterSize = 0;
+    minClusterSize = wcsp_->numberOfVariables();
+    load_decomposition();
+    TCDGraph::vertex_iterator v, vend;
+    tie(v, vend) = vertices(m_graph);
+    for (; v != vend; ++v) {
+        TCDGraph::out_edge_iterator e, eend;
+        float sum = 0.0;
+        tie(e, eend) = out_edges(*v, (m_graph));
+        for (; e != eend; ++e) {
+            if (m_graph[*v].vars.size() > 0) {
+                m_graph[*v].absorptions[target(*e, m_graph)] = m_graph[*e].vars.size()
+                    / m_graph[*v].vars.size();
+                sum += m_graph[*e].vars.size() / m_graph[*v].vars.size();
+            }
+        }
+        m_graph[*v].absorption = sum / degree(*v, m_graph);
+        clusters.push_back(*v);
+        if (m_graph[*v].vars.size() > maxClusterSize)
+            maxClusterSize = m_graph[*v].vars.size();
+        if (m_graph[*v].vars.size() < minClusterSize)
+            minClusterSize = m_graph[*v].vars.size();
+        set<Constraint*> csts = m_graph[*v].consts;
+        m_graph[*v].lastCost = 0;
+        for (set<Constraint*>::iterator it = csts.begin(); it != csts.end();
+             ++it) {
+            m_graph[*v].lastCost = m_graph[*v].lastCost
+                + (*it)->getConflictWeight();
+        }
+    }
+    if (clusters.size() >= 1 && m_graph[clusters[clusters.size() - 1]].vars.empty()) {
+        clusters.pop_back();
+    }
+    file = clusters;
+    random_shuffle(file.begin(), file.end());
+    insideHeuristic = new RandomNeighborhoodChoice();
+    precK = -1;
+    insideHeuristic->init(wcsp, l);
+}
+
+const zone RandomClusterChoice::getNeighborhood(size_t neighborhood_size)
+{
+    assert(neighborhood_size <= wcsp->numberOfUnassignedVariables());
+    precK = neighborhood_size;
+    set<int> selclusters;
+    if (file.size() == 0) {
+        file = clusters;
+        random_shuffle(file.begin(), file.end());
+    }
+    assert(file.size() > 0);
+    int c = file.back();
+    file.pop_back();
+    selclusters.insert(c);
+    if (ToulBar2::verbose >= 1)
+        cout << "Select cluster " << c << endl;
+    zone z = m_graph[c].vars;
+    //if variables are missing
+    if (z.size() < neighborhood_size) {
+        queue<int> fifo;
+        TCDGraph::adjacency_iterator v, vend;
+        int currclu = c;
+        int i = 0;
+        do {
+            tie(v, vend) = adjacent_vertices(currclu, m_graph);
+            if (v != vend) {
+                vector<int> neighbors(v, vend);
+                //merge neighbors of current cluster
+                random_shuffle(neighbors.begin(), neighbors.end());
+                //add them to list
+                for (vector<int>::iterator it = neighbors.begin();
+                     it != neighbors.end(); ++it) {
+                    if (selclusters.count(*it) == 0) {
+                        fifo.push(*it);
+                        selclusters.insert(*it);
+                    }
+                }
+            }
+            if (fifo.size() == 0) {
+                assert(selclusters.size() < clusters.size());
+                while (selclusters.count(i) > 0) {
+                    i = (i + 1) % clusters.size(); //TODO: use file instead in order to shuffle clusters randomly
+                }
+                fifo.push(clusters[i]);
+                selclusters.insert(clusters[i]);
+            }
+            currclu = fifo.front();
+            fifo.pop();
+            z.insert(m_graph[currclu].vars.begin(),
+                m_graph[currclu].vars.end());
+        } while (z.size() < neighborhood_size);
+    }
+    return insideHeuristic->getNeighborhood(neighborhood_size, z);
+}
+
+const zone RandomClusterChoice::getNeighborhood(size_t neighborhood_size, zone z) const
+{
+    assert("not implemented!!!");
+    return zone();
+}
+
+bool RandomClusterChoice::incrementK()
+{
+    if (file.size() == 0) {
+        file = clusters;
+        random_shuffle(file.begin(), file.end());
+        return true;
+    }
+
+    return true;
+}
+
+void ParallelRandomClusterChoice::init(WeightedCSP* wcsp_, LocalSearch* l_)
+{
+    this->l = l_;
+    this->wcsp = wcsp_;
+    maxClusterSize = 0;
+    minClusterSize = wcsp_->numberOfVariables();
+    load_decomposition();
+    TCDGraph::vertex_iterator v, vend;
+    tie(v, vend) = vertices(m_graph);
+    for (; v != vend; ++v) {
+        TCDGraph::out_edge_iterator e, eend;
+        float sum = 0.0;
+        tie(e, eend) = out_edges(*v, (m_graph));
+        for (; e != eend; ++e) {
+            if (m_graph[*v].vars.size() > 0) {
+                m_graph[*v].absorptions[target(*e, m_graph)] = m_graph[*e].vars.size()
+                    / m_graph[*v].vars.size();
+                sum += m_graph[*e].vars.size() / m_graph[*v].vars.size();
+            }
+        }
+        m_graph[*v].absorption = sum / degree(*v, m_graph);
+        clusters.push_back(*v);
+        if (m_graph[*v].vars.size() > maxClusterSize)
+            maxClusterSize = m_graph[*v].vars.size();
+        if (m_graph[*v].vars.size() < minClusterSize)
+            minClusterSize = m_graph[*v].vars.size();
+        set<Constraint*> csts = m_graph[*v].consts;
+        m_graph[*v].lastCost = 0;
+        for (set<Constraint*>::iterator it = csts.begin(); it != csts.end();
+             ++it) {
+            m_graph[*v].lastCost = m_graph[*v].lastCost
+                + (*it)->getConflictWeight();
+        }
+    }
+    if (clusters.size() >= 1 && m_graph[clusters[clusters.size() - 1]].vars.empty()) {
+        clusters.pop_back();
+    }
+    file = clusters;
+    random_shuffle(file.begin(), file.end());
+    insideHeuristic = new RandomNeighborhoodChoice();
+    precK = -1;
+    insideHeuristic->init(wcsp, l);
+}
+
+const zone ParallelRandomClusterChoice::getNeighborhood(size_t neighborhood_size)
+{
+    precK = neighborhood_size;
+    set<int> selclusters;
+    int c = file.back();
+    file.pop_back();
+    selclusters.insert(c);
+    zone z = m_graph[c].vars;
+    //if variables are missing
+    if (z.size() < neighborhood_size) {
+        queue<int> fifo;
+        TCDGraph::adjacency_iterator v, vend;
+        int currclu = c;
+        int i = 0;
+        do {
+            tie(v, vend) = adjacent_vertices(currclu, m_graph);
+            if (v != vend) {
+                vector<int> neighbors(v, vend);
+                //merge neighbors of current cluster
+                random_shuffle(neighbors.begin(), neighbors.end());
+                //add them to list
+                for (vector<int>::iterator it = neighbors.begin();
+                     it != neighbors.end(); ++it) {
+                    if (selclusters.count(*it) == 0) {
+                        fifo.push(*it);
+                        selclusters.insert(*it);
+                    }
+                }
+            }
+            if (fifo.size() == 0) {
+                assert(selclusters.size() < clusters.size());
+                while (selclusters.count(i) > 0) {
+                    i = (i + 1) % clusters.size(); //TODO: use file instead in order to shuffle clusters randomly
+                }
+                fifo.push(clusters[i]);
+                selclusters.insert(clusters[i]);
+            }
+            currclu = fifo.front();
+            fifo.pop();
+            z.insert(m_graph[currclu].vars.begin(),
+                m_graph[currclu].vars.end());
+        } while (z.size() < neighborhood_size);
+    }
+    return insideHeuristic->getNeighborhood(neighborhood_size, z);
+}
+
+const zone ParallelRandomClusterChoice::getNeighborhood(size_t neighborhood_size, zone z) const
+{
+    assert("Not implemented!!!");
+    return zone();
+}
+
+const zone ParallelRandomClusterChoice::SlaveGetNeighborhood(unsigned int CurrentCluster, size_t neighborhood_size)
+{
+    precK = neighborhood_size;
+    set<int> selclusters;
+    selclusters.insert(CurrentCluster);
+    zone z = m_graph[CurrentCluster].vars;
+    //if variables are missing
+    if (z.size() < neighborhood_size) {
+        queue<int> fifo;
+        TCDGraph::adjacency_iterator v, vend;
+        int currclu = CurrentCluster;
+        int i = 0;
+        do {
+            tie(v, vend) = adjacent_vertices(currclu, m_graph);
+            if (v != vend) {
+                vector<int> neighbors(v, vend);
+                //merge neighbors of current cluster
+                random_shuffle(neighbors.begin(), neighbors.end());
+                //add them to list
+                for (vector<int>::iterator it = neighbors.begin(); it != neighbors.end(); ++it) {
+                    if (selclusters.count(*it) == 0) {
+                        fifo.push(*it);
+                        selclusters.insert(*it);
+                    }
+                }
+            }
+            if (fifo.size() == 0) {
+                assert(selclusters.size() < clusters.size());
+                while (selclusters.count(i) > 0) {
+                    i = (i + 1) % clusters.size(); //TODO: use file instead in order to shuffle clusters randomly
+                }
+                fifo.push(clusters[i]);
+                selclusters.insert(clusters[i]);
+            }
+            currclu = fifo.front();
+            fifo.pop();
+            z.insert(m_graph[currclu].vars.begin(), m_graph[currclu].vars.end());
+        } while (z.size() < neighborhood_size);
+    }
+    return insideHeuristic->getNeighborhood(neighborhood_size, z);
+}
+
+const zone ParallelRandomClusterChoice::SlaveGetNeighborhood(unsigned int CurrentCluster, uint number, size_t NeighborhoodSize)
+{
+    precK = NeighborhoodSize;
+    set<int> selclusters;
+    selclusters.insert(CurrentCluster);
+    zone z = m_graph[CurrentCluster].vars;
+    //if variables are missing
+    if (z.size() < NeighborhoodSize && number > 0) {
+        queue<int> fifo;
+        TCDGraph::adjacency_iterator v, vend;
+        int currclu = CurrentCluster;
+        uint numclu = 0;
+        int i = 0;
+        do {
+            tie(v, vend) = adjacent_vertices(currclu, m_graph);
+            if (v != vend) {
+                vector<int> neighbors(v, vend);
+                //merge neighbors of current cluster
+                random_shuffle(neighbors.begin(), neighbors.end());
+                //add them to list
+                for (vector<int>::iterator it = neighbors.begin();
+                     it != neighbors.end(); ++it) {
+                    if (selclusters.count(*it) == 0) {
+                        fifo.push(*it);
+                        selclusters.insert(*it);
+                    }
+                }
+            }
+            if (fifo.size()) {
+                assert(selclusters.size() < clusters.size());
+                while (selclusters.count(i) > 0) {
+                    i = (i + 1) % clusters.size(); //TODO: use file instead in order to shuffle clusters randomly
+                }
+                fifo.push(clusters[i]);
+                selclusters.insert(clusters[i]);
+            }
+            currclu = fifo.front();
+            fifo.pop();
+            z.insert(m_graph[currclu].vars.begin(),
+                m_graph[currclu].vars.end());
+            numclu++;
+        } while (z.size() < NeighborhoodSize && numclu <= number);
+    }
+
+    if (z.size() < NeighborhoodSize) {
+        NeighborhoodSize = z.size();
+    }
+    return insideHeuristic->getNeighborhood(NeighborhoodSize, z);
+}
+
+bool ParallelRandomClusterChoice::incrementK()
+{
+    if (file.size() == 0) {
+        file = clusters;
+        random_shuffle(file.begin(), file.end());
+        return true;
+    }
+
+    return true;
+}
+
+vector<int> ParallelRandomClusterChoice::getClustersIndex()
+{
+    return clusters;
+}
+
+uint ParallelRandomClusterChoice::getClustersSize(uint c, uint number)
+{
+    zone z = m_graph[c].vars;
+    uint numclu = 0;
+    if (number > 0) {
+        set<int> selclusters;
+        queue<int> fifo;
+        TCDGraph::adjacency_iterator v, vend;
+        int currclu = c;
+        int i = 0;
+        do {
+            tie(v, vend) = adjacent_vertices(currclu, m_graph);
+            if (v != vend) {
+                vector<int> neighbors(v, vend);
+                //merge neighbors of current cluster
+                random_shuffle(neighbors.begin(), neighbors.end());
+                //add them to list
+                for (vector<int>::iterator it = neighbors.begin();
+                     it != neighbors.end(); ++it) {
+                    if (selclusters.count(*it) == 0) {
+                        fifo.push(*it);
+                        selclusters.insert(*it);
+                    }
+                }
+            }
+            if (fifo.size() == 0) {
+                assert(selclusters.size() < clusters.size());
+                while (selclusters.count(i) > 0) {
+                    i = (i + 1) % clusters.size(); //TODO: use file instead in order to shuffle clusters randomly
+                }
+                fifo.push(clusters[i]);
+                selclusters.insert(clusters[i]);
+            }
+            currclu = fifo.front();
+            fifo.pop();
+            z.insert(m_graph[currclu].vars.begin(),
+                m_graph[currclu].vars.end());
+            numclu++;
+        } while (numclu <= number);
+    }
+    return z.size();
+}
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2vns.hpp b/code/include/tb2/vns/tb2vns.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..c09b5bfafce6f17560a5601acb43f51fa5507351
--- /dev/null
+++ b/code/include/tb2/vns/tb2vns.hpp
@@ -0,0 +1,147 @@
+/*
+ * \file tb2vns.hpp
+ * \brief various neighborhood structures for VNS-like algorithms
+ *
+ *  Created on: 3 mars 2015
+ *      Author: Mathieu Fontaine, Abdelkader Ouali
+ *      PhD Student: LITIO, University of Oran ; GREYC, University of Caen.
+ */
+
+#ifndef TB2VNS_HPP_
+#define TB2VNS_HPP_
+
+#include "tb2localsearch.hpp"
+
+#ifdef BOOST
+#include <boost/version.hpp>
+#include <boost/tokenizer.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/foreach.hpp>
+#include <boost/graph/kruskal_min_spanning_tree.hpp>
+#include <boost/graph/connected_components.hpp>
+
+/**
+ * Basic structure
+ */
+
+struct separator {
+    string name;
+    set<int> vars;
+    float size;
+};
+
+struct cluster {
+    string name;
+    set<int> vars;
+    set<Constraint*> consts;
+    map<int, float> absorptions;
+    int degree;
+    Cost lastCost;
+    float absorption;
+    bool mark;
+};
+
+typedef boost::property<boost::vertex_index_t, int> variable_vertex;
+typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, variable_vertex, boost::no_property, boost::graph_name_t> TGraph;
+typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, cluster, separator> TCDGraph;
+typedef boost::graph_traits<TCDGraph>::vertex_descriptor TDCluster;
+typedef boost::graph_traits<TCDGraph>::edge_descriptor Cluster_edge;
+typedef set<int> zone;
+
+#if (BOOST_VERSION >= 103400)
+namespace boost {
+inline bool operator<(const Cluster_edge& __x, const Cluster_edge& __y)
+{
+    return __x.get_property() < __y.get_property();
+}
+}
+#endif
+
+extern void cluster_graph_absorption(TCDGraph& input, TCDGraph& output);
+extern void print_decomposition(ostream& os, TCDGraph& cg);
+
+class NeighborhoodStructure {
+protected:
+    WeightedCSP* wcsp;
+    LocalSearch* l;
+
+public:
+    //initialization
+    virtual void init(WeightedCSP* wcsp_, LocalSearch* l_) = 0;
+    virtual const zone getNeighborhood(size_t neighborhood_size) = 0;
+    virtual const zone getNeighborhood(size_t neighborhood_size, zone z) const = 0;
+    virtual ~NeighborhoodStructure() {}
+    virtual bool incrementK() { return true; }
+};
+
+// for vns/lds-cp
+class RandomNeighborhoodChoice : public NeighborhoodStructure {
+public:
+    virtual void init(WeightedCSP* wcsp_, LocalSearch* l_);
+    virtual const zone getNeighborhood(size_t neighborhood_size);
+    virtual const zone getNeighborhood(size_t neighborhood_size, zone z) const;
+};
+
+class ClustersNeighborhoodStructure : public NeighborhoodStructure {
+protected:
+    vector<int> clusters;
+    TCDGraph m_graph;
+    vector<int> file;
+    NeighborhoodStructure* insideHeuristic;
+    uint counter;
+    uint precK;
+    uint maxClusterSize;
+    uint minClusterSize;
+
+public:
+    void load_decomposition();
+    void printClusters(ostream& os) { print_decomposition(os, m_graph); }
+    int getSize() const
+    {
+        return clusters.size();
+    }
+    int getMaxClusterSize() const
+    {
+        return maxClusterSize;
+    }
+    int getMinClusterSize() const
+    {
+        return minClusterSize;
+    }
+    double getMeanClusterSize() const;
+    uint getMedianClusterSize() const;
+};
+
+// for dgvns
+class RandomClusterChoice : public ClustersNeighborhoodStructure {
+public:
+    virtual void init(WeightedCSP* wcsp_, LocalSearch* l_);
+    virtual const zone getNeighborhood(size_t neighborhood_size);
+    virtual const zone getNeighborhood(size_t neighborhood_size, zone z) const;
+    virtual bool incrementK();
+};
+
+// for rpdgvns
+class ParallelRandomClusterChoice : public ClustersNeighborhoodStructure {
+public:
+    virtual void init(WeightedCSP* wcsp_, LocalSearch* l_);
+    virtual const zone getNeighborhood(size_t neighborhood_size);
+    virtual const zone getNeighborhood(size_t neighborhood_size, zone z) const;
+    // Master / Slave
+    virtual const zone SlaveGetNeighborhood(uint CurrentCluster, size_t neighborhood_size);
+    virtual const zone SlaveGetNeighborhood(uint CurrentCluster, uint number, size_t NeighborhoodSize);
+    virtual bool incrementK(); // for master process
+    virtual vector<int> getClustersIndex();
+    virtual uint getClustersSize(uint c, uint number);
+};
+
+#endif
+#endif /* TB2VNS_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2vnsutils.cpp b/code/include/tb2/vns/tb2vnsutils.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e41812ea2f95b1e6914d3ff7c81e92a6dcb0bbff
--- /dev/null
+++ b/code/include/tb2/vns/tb2vnsutils.cpp
@@ -0,0 +1,368 @@
+/*
+ * tb2vnsutils.cpp
+ *
+ *  Created on: 12 December 2016
+ *      Author: Abdelkader Ouali
+ *      PhD Student: LITIO, University of Oran ; GREYC, University of Caen.
+ */
+
+#ifdef BOOST
+#include "tb2vnsutils.hpp"
+#include "core/tb2wcsp.hpp"
+
+using namespace boost;
+
+void fusionCluster(TCDGraph::vertex_descriptor v, TCDGraph::vertex_descriptor p, TCDGraph& cg)
+{
+    set<int> varsfusion;
+    set_union(cg[v].vars.begin(), cg[v].vars.end(), cg[p].vars.begin(),
+        cg[p].vars.end(), inserter(varsfusion, varsfusion.begin()));
+    cg[p].vars = varsfusion;
+    cg[v].mark = true;
+}
+
+void treeClusterFusion(TCDGraph::vertex_descriptor p, TCDGraph::vertex_descriptor v, TCDGraph& cg)
+{
+    TCDGraph::vertex_iterator vend;
+    tie(tuples::ignore, vend) = vertices(cg);
+    if (degree(v, cg) > 1 || p == *vend) //on est pas sur une feuille
+    {
+        TCDGraph::adjacency_iterator a, aend;
+
+        tie(a, aend) = adjacent_vertices(v, cg);
+        for (; a != aend; ++a) {
+            if (*a != p) {
+
+                treeClusterFusion(v, *a, cg);
+            }
+        }
+    }
+    if (p == *vend)
+        return;
+    set<int> varsinter;
+    set_intersection(cg[v].vars.begin(), cg[v].vars.end(), cg[p].vars.begin(),
+        cg[p].vars.end(), inserter(varsinter, varsinter.begin()));
+    //    int size_res = cg[v].vars.size() + cg[p].vars.size() - varsinter.size();
+
+    // si absorber à 90% merge whatever
+    if ((float)varsinter.size() / (float)cg[v].vars.size() >= fabs(ToulBar2::boostingBTD)
+        || (float)varsinter.size() / (float)cg[p].vars.size() >= fabs(ToulBar2::boostingBTD)) {
+        fusionCluster(v, p, cg);
+        //    } else {
+        //        // si absorber à 70% merge whatever merged size <= 100
+        //        if ((float)varsinter.size() / (float)cg[v].vars.size() >= 0.7
+        //            || (float)varsinter.size() / (float)cg[p].vars.size() >= 0.7) {
+        //            if (size_res <= 100)
+        //                fusionCluster(v, p, cg);
+        //        } else {
+        //            // si absorber à 50% merge whatever merged size <= 50
+        //            if ((float)varsinter.size() / (float)cg[v].vars.size() >= 0.5
+        //                || (float)varsinter.size() / (float)cg[p].vars.size() >= 0.5) {
+        //                if (size_res <= 50)
+        //                    fusionCluster(v, p, cg);
+        //            }
+        //        }
+    }
+}
+
+bool TreeDecRefinement::solve()
+{
+    load_decomposition();
+    cluster_graph_absorption(m_graph, abs_graph);
+    print_decomposition(ToulBar2::vnsOutput, abs_graph);
+    return true;
+}
+
+void print_decomposition(ostream& os, TCDGraph& m_graph)
+{
+    TCDGraph::vertex_iterator v, vend, v2;
+    unsigned int i = 0;
+    for (tie(v, vend) = vertices(m_graph); v != vend; ++v) {
+        zone z = m_graph[i].vars;
+        for (zone::iterator it = z.begin(); it != z.end(); ++it)
+            os << (int)*it << " ";
+        os << endl;
+        i++;
+    }
+}
+
+void TreeDecRefinement::print_dec_satistics()
+{
+    ToulBar2::vnsOutput << "Number of clusters = " << nbClusters << endl;
+    ToulBar2::vnsOutput
+        << "Number of separator variables = " << nbSeparators << " => "
+        << double(nbSeparators) / double(wcsp->numberOfVariables()) << endl;
+    int imax = 0, imin = 0;
+    int max_size = clusters[0].size;
+    int min_size = clusters[0].size;
+    vector<int> data_sizes;
+    vector<int> data_propers;
+    vector<int> data_separators;
+    for (int i = 1; i < nbClusters; i++) {
+        if (clusters[i].size > max_size) {
+            imax = i;
+            max_size = clusters[i].size;
+        }
+        if (clusters[i].size < min_size) {
+            imin = i;
+            min_size = clusters[i].size;
+        }
+        data_sizes.push_back(clusters[i].size);
+        data_propers.push_back(clusters[i].sizeProper);
+        data_separators.push_back(clusters[i].sizeSeparator);
+    }
+    double ecartype_size = ecart_type(data_sizes);
+    double ecartype_propers = ecart_type(data_propers);
+    double ecartype_separators = ecart_type(data_separators);
+    ToulBar2::vnsOutput << "Cluster with maximum size:" << endl;
+    ToulBar2::vnsOutput << "Number of variables: " << clusters[imax].size
+                        << endl;
+    ToulBar2::vnsOutput << "Number of proper variables: " << clusters[imax].sizeProper
+                        << endl;
+    ToulBar2::vnsOutput << "Number of separators: "
+                        << clusters[imax].sizeSeparator << endl;
+
+    ToulBar2::vnsOutput << "Cluster with minimum size:" << endl;
+    ToulBar2::vnsOutput << "Number of variables: " << clusters[imin].size
+                        << endl;
+    ToulBar2::vnsOutput << "Number of proper variables: " << clusters[imin].sizeProper
+                        << endl;
+    ToulBar2::vnsOutput << "Number of separators: "
+                        << clusters[imin].sizeSeparator << endl;
+
+    ToulBar2::vnsOutput << "Clusters deviation (standard deviation):" << endl;
+    ToulBar2::vnsOutput << "Deviation on variables size: " << ecartype_size
+                        << endl;
+    ToulBar2::vnsOutput << "Deviation on proper variables size: " << ecartype_propers
+                        << endl;
+    ToulBar2::vnsOutput << "Deviation on separators size: "
+                        << ecartype_separators << endl;
+
+    ToulBar2::vnsOutput << endl;
+}
+
+double TreeDecRefinement::ecart_type(vector<int> data)
+{
+    double moy = 0.0; //mean
+    double ecart_type = 0.0; //standard deviation
+    vector<double> diff; //array of differences between data and mean
+    diff.reserve(data.size());
+    diff.resize(data.size());
+
+    for (uint i = 0; i < data.size(); i++)
+        moy += data[i];
+    moy /= data.size();
+
+    //compute standard deviation
+    for (uint i = 0; i < data.size(); i++) {
+        diff[i] = pow(data[i] - moy, 2);
+        ecart_type += diff[i];
+    }
+    ecart_type = sqrt(ecart_type / data.size());
+    return ecart_type;
+}
+
+void TreeDecRefinement::load_decomposition()
+{
+    if (ToulBar2::clusterFile != "") {
+        bool cover = false;
+        if (ToulBar2::clusterFile.find(".cov") != string::npos)
+            cover = true;
+        fstream file(ToulBar2::clusterFile.c_str());
+        set<int> nbvars;
+        while (!file.eof()) {
+            string cluster;
+            getline(file, cluster);
+            if (!cluster.empty()) {
+                TDCluster c = add_vertex(m_graph);
+                set<int> tmp;
+                stringstream ss(cluster);
+                if (cover) {
+                    int clusterid, parentid;
+                    ss >> clusterid;
+                    ss >> parentid;
+                }
+                do {
+                    unsigned int var;
+                    ss >> var;
+                    tmp.insert(var);
+                    nbvars.insert(var);
+                    if (var >= wcsp->numberOfVariables()) {
+                        cerr << "Error: cluster decomposition contains bad variable index!" << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                } while (ss.good());
+                m_graph[c].vars = tmp;
+            }
+        }
+        file.close();
+        if (nbvars.size() != wcsp->numberOfVariables()) {
+            cerr << "Error: cluster decomposition has missing variables! (" << nbvars.size() << "!=" << wcsp->numberOfVariables() << ")" << endl;
+            exit(EXIT_FAILURE);
+        }
+        TCDGraph::vertex_iterator v, vend, v2;
+        int num = 0;
+        for (tie(v, vend) = vertices(m_graph); v != vend; ++v) {
+            num++;
+            string name;
+            vector<int> cl;
+            ostringstream ss(name);
+            ss << *v << ":(";
+            bool first = true;
+            for (set<int>::iterator i = m_graph[*v].vars.begin();
+                 i != m_graph[*v].vars.end(); ++i) {
+                if (not first)
+                    ss << ",";
+                ss << *i;
+                first = false;
+            }
+            ss << ")";
+            m_graph[*v].name = ss.str();
+            for (v2 = v + 1; v2 != vend; ++v2) {
+                set<int> separator;
+                set<int> v_vars = m_graph[*v].vars;
+                set<int> v2_vars = m_graph[*v2].vars;
+                set_intersection(v_vars.begin(), v_vars.end(), v2_vars.begin(),
+                    v2_vars.end(), inserter(separator, separator.begin()));
+
+                if (separator.size() > 0) {
+                    Cluster_edge sep;
+                    tie(sep, tuples::ignore) = add_edge(*v, *v2, m_graph);
+                    m_graph[sep].vars = separator;
+                    m_graph[sep].size = (float)1 / separator.size();
+                }
+            }
+        }
+    } else {
+        cerr << "No cluster decomposition file!" << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+void cluster_graph_absorption(TCDGraph& m_graph, TCDGraph& abs_graph)
+{
+    TGraph::vertex_iterator vi, viend;
+    TCDGraph::vertex_iterator v, vend, v2;
+    TCDGraph::edge_iterator e, eend;
+
+    for (tie(v, vend) = vertices(m_graph); v != vend; ++v) {
+        set<int> cl;
+        for (set<int>::iterator i = m_graph[*v].vars.begin();
+             i != m_graph[*v].vars.end(); ++i) {
+            cl.insert(*i);
+        }
+        TDCluster c = add_vertex(abs_graph);
+        abs_graph[c].vars = cl;
+        abs_graph[c].mark = false;
+    }
+    for (tie(v, vend) = vertices(abs_graph); v != vend; ++v) {
+        string name;
+        vector<int> cl;
+        ostringstream ss(name);
+        ss << *v << ":(";
+        bool first = true;
+        for (set<int>::iterator i = abs_graph[*v].vars.begin();
+             i != abs_graph[*v].vars.end(); ++i) {
+            if (not first)
+                ss << ",";
+            ss << *i;
+            first = false;
+        }
+        ss << ")";
+        abs_graph[*v].name = ss.str();
+        for (v2 = v + 1; v2 != vend; ++v2) {
+            set<int> separator;
+            set<int> v_vars = abs_graph[*v].vars;
+            set<int> v2_vars = abs_graph[*v2].vars;
+            set_intersection(v_vars.begin(), v_vars.end(), v2_vars.begin(),
+                v2_vars.end(), inserter(separator, separator.begin()));
+
+            if (separator.size() > 0) {
+                Cluster_edge sep;
+                tie(sep, tuples::ignore) = add_edge(*v, *v2, abs_graph);
+                abs_graph[sep].vars = separator;
+                abs_graph[sep].size = (float)1 / separator.size();
+            }
+        }
+    }
+
+    //creation du spanning tree pour la fusion
+    tie(e, eend) = edges(abs_graph);
+    set<Cluster_edge> edges;
+    for (; e != eend; ++e)
+        edges.insert(*e);
+    set<Cluster_edge> spanning_tree;
+    set<Cluster_edge> removable_edges;
+    kruskal_minimum_spanning_tree(abs_graph,
+        inserter(spanning_tree, spanning_tree.begin()),
+        weight_map(get(&separator::size, abs_graph)));
+    set_difference(edges.begin(), edges.end(), spanning_tree.begin(),
+        spanning_tree.end(),
+        inserter(removable_edges, removable_edges.begin()));
+    remove_edge_if(IsRemovable(removable_edges), abs_graph);
+    std::vector<int> component(num_vertices(abs_graph));
+    int num = connected_components(abs_graph, &component[0]);
+    vector<int> max(num, 0);
+    vector<int> maxv(num, 0);
+    tie(v, vend) = vertices(abs_graph);
+    for (; v != vend; ++v)
+        if (max[component[*v]] < (int)abs_graph[*v].vars.size()) {
+            max[component[*v]] = abs_graph[*v].vars.size();
+            maxv[component[*v]] = *v;
+        }
+    for (int i = 0; i < num; ++i)
+        treeClusterFusion(*vend, maxv[i], abs_graph);
+
+    remove_edge_if(TrueRem(), abs_graph);
+    tie(v, vend) = vertices(abs_graph);
+
+    while (v != vend) {
+        if (abs_graph[*v].mark) {
+            remove_vertex(*v, abs_graph);
+            tie(v, vend) = vertices(abs_graph);
+        } else {
+            ++v;
+        }
+    }
+    num = 0;
+    for (tie(v, vend) = vertices(abs_graph); v != vend; ++v) {
+        num++;
+        string name;
+        vector<int> cl;
+        ostringstream ss(name);
+        ss << *v << ":(";
+        bool first = true;
+        for (set<int>::iterator i = abs_graph[*v].vars.begin();
+             i != abs_graph[*v].vars.end(); ++i) {
+            if (not first)
+                ss << ",";
+            ss << *i;
+            first = false;
+        }
+        ss << ")";
+        abs_graph[*v].name = ss.str();
+        for (v2 = v + 1; v2 != vend; ++v2) {
+            set<int> separator;
+            set<int> v_vars = abs_graph[*v].vars;
+            set<int> v2_vars = abs_graph[*v2].vars;
+            set_intersection(v_vars.begin(), v_vars.end(), v2_vars.begin(),
+                v2_vars.end(), inserter(separator, separator.begin()));
+
+            if (separator.size() > 0) {
+                Cluster_edge sep;
+                tie(sep, tuples::ignore) = add_edge(*v, *v2, abs_graph);
+                abs_graph[sep].vars = separator;
+                abs_graph[sep].size = (float)1 / separator.size();
+            }
+        }
+    }
+}
+
+#endif
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/vns/tb2vnsutils.hpp b/code/include/tb2/vns/tb2vnsutils.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..14f3b7f348df10f478df2bc89c1f8faff908e7d0
--- /dev/null
+++ b/code/include/tb2/vns/tb2vnsutils.hpp
@@ -0,0 +1,155 @@
+/*
+ * \file tb2vnsutils.hpp
+ * \brief absorption of clusters for VNS-like algorithms
+ *
+ *  Created on: 12 December 2016
+ *      Author: Abdelkader Ouali
+ *      PhD Student: LITIO, University of Oran ; GREYC, University of Caen.
+ */
+
+#ifndef TB2VNSUTILS_HPP_
+#define TB2VNSUTILS_HPP_
+#ifdef BOOST
+
+#include "tb2vns.hpp"
+#include "tb2localsearch.hpp"
+#include "tb2cpdgvns.hpp"
+
+void fusionCluster(TCDGraph::vertex_descriptor v, TCDGraph::vertex_descriptor p, TCDGraph& cg);
+void treeClusterFusion(TCDGraph::vertex_descriptor p, TCDGraph::vertex_descriptor v, TCDGraph& cg);
+void cluster_graph_absorption(TCDGraph& input, TCDGraph& output);
+void print_decomposition(ostream& os, TCDGraph& cg);
+
+class TrueRem {
+public:
+    bool operator()(Cluster_edge e)
+    {
+        return true;
+    }
+};
+
+class IsRemovable {
+public:
+    set<Cluster_edge> removable;
+    IsRemovable(set<Cluster_edge>& s)
+    {
+        removable = s;
+    }
+    bool operator()(Cluster_edge e)
+    {
+        return removable.count(e) > 0;
+    }
+};
+
+struct StructCluster {
+    // Variables in the cluster
+    int size;
+    int* variablesIn;
+    // Proper Variables
+    int sizeProper;
+    int* variablesProper;
+    // Separators
+    int sizeSeparator;
+    int* variablesSeparator;
+    // Shortcut to test the belonging
+    int* belong;
+
+    float BestTime;
+
+    bool isIn(int variable)
+    {
+        return belong[variable];
+    }
+    bool isSeparator(int variable)
+    {
+        return (belong[variable] == 2);
+    }
+    bool isProper(int variable)
+    {
+        return (belong[variable] == 1);
+    }
+
+    void display()
+    {
+        cout << size << "\t(s=" << sizeSeparator << "/p=" << sizeProper
+             << ") \t all{";
+        for (int i = 0; i < size; i++) {
+            if (i)
+                cout << ",";
+            if (belong[variablesIn[i]] == 2)
+                cout << "\033[31m\033[1m -";
+            cout << variablesIn[i];
+            if (belong[variablesIn[i]] == 2)
+                cout << "- \033[0m";
+        }
+        cout << "} ";
+        //cout << "sep{";
+        //for (int i = 0 ; i < sizeSeparator ; i++) {
+        //if (i) cout << ",";
+        //cout << variablesSeparator[i];
+        //}
+        //cout << "}";
+        //cout << "sep{";
+        //for (int i = 0 ; i < sizeProper ; i++) {
+        //if (i) cout << ",";
+        //cout << variablesProper[i];
+        //}
+        //cout << "}";
+        cout << endl;
+    }
+    void display2()
+    {
+        ToulBar2::vnsOutput << size << "\t(s=" << sizeSeparator << "/p="
+                            << sizeProper << ") \t all{";
+        for (int i = 0; i < size; i++) {
+            if (i)
+                ToulBar2::vnsOutput << ",";
+            if (belong[variablesIn[i]] == 2)
+                ToulBar2::vnsOutput << " -";
+            ToulBar2::vnsOutput << variablesIn[i];
+            if (belong[variablesIn[i]] == 2)
+                ToulBar2::vnsOutput << "- ";
+        }
+        ToulBar2::vnsOutput << "} ";
+        ToulBar2::vnsOutput << endl;
+    }
+};
+
+class TreeDecRefinement : public LocalSearch {
+protected:
+    // Decomposition
+    TCDGraph m_graph;
+    TCDGraph abs_graph; // graph absorption
+    int nbClusters;
+    int nbSeparators;
+    vector<int> separators;
+    vector<StructCluster> clusters;
+
+public:
+    TreeDecRefinement(Cost initUpperBound)
+        : LocalSearch(initUpperBound)
+        , nbClusters(0)
+        , nbSeparators(0)
+    {
+    }
+    ~TreeDecRefinement() {}
+
+    bool solve();
+
+    // decomposition tools
+    void load_decomposition();
+
+    //
+    void print_dec_satistics();
+    double ecart_type(vector<int> data);
+};
+
+#endif
+#endif /* TB2VNSUTILS_HPP_ */
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* tab-width: 4 */
+/* indent-tabs-mode: nil */
+/* c-default-style: "k&r" */
+/* End: */
diff --git a/code/include/tb2/xmlcsp/AST.hh b/code/include/tb2/xmlcsp/AST.hh
new file mode 100644
index 0000000000000000000000000000000000000000..3b3b77fcc46893af379cf1058c52b33b0fb99ad3
--- /dev/null
+++ b/code/include/tb2/xmlcsp/AST.hh
@@ -0,0 +1,1502 @@
+/*=============================================================================
+ * parser for CSP instances represented in XML format
+ * 
+ * Copyright (c) 2008 Olivier ROUSSEL (olivier.roussel <at> cril.univ-artois.fr)
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *=============================================================================
+ */
+#ifndef _AST_hh_
+#define _AST_hh_
+
+#include <iostream>
+#include <iomanip>
+#include <sstream>
+#include <exception>
+#include <stdexcept>
+#include <string>
+#include <map>
+#include <deque>
+#include <cctype>
+#include <cstdlib>
+#include <cstring>
+
+#include "XMLParser_constants.h"
+#include "C_AST.h"
+
+/**
+ * @file AST.hh
+ * @brief Defines an Abstract Syntax Tree
+ */
+
+namespace CSPXMLParser {
+using namespace std;
+
+/**
+   * TODO
+   *
+   * - handle operator priorities (infix only)
+   * - distinguish booleans from integers in the valuation of an AST
+   */
+
+/**
+   * return value of a function represented in an abstract syntax tree
+   * (AST).
+   *
+   * one day we'll switch to a union with an int/bool/...
+   */
+typedef int FunctionValue;
+
+/// possible types for a variable or an expression
+enum VarType { TYPE_INT,
+    TYPE_BOOL };
+
+/// user provided information about a variable
+struct VarInfo {
+    int id; // identifier corresponding to the variable name
+    VarType type; // type of the variable
+};
+
+typedef map<string, VarInfo> VariableInfo; // list of variables (when used)
+
+/**
+   * an interface to get the value of a variable
+   */
+class VariableValuation {
+public:
+    virtual ~VariableValuation() {}
+
+    /**
+     * return the value of a variable in the current interpretation
+     *
+     * @param id: the identifier of the variable. Whether id is a global
+     * or local identifier is dependent on what has been recorded in the
+     * AST.
+     */
+    virtual FunctionValue getVarValue(unsigned int id) const = 0;
+
+    // ??? could we get rid of the virtual
+};
+
+class ASTList;
+class ASTDict;
+
+/**
+   * @brief An abstract node of an abstract syntax tree (AST).
+   */
+class AST {
+public:
+    virtual ~AST() {}
+
+    /**
+     * compute the value of this expression
+     *
+     * @param varValuation: provides the value of each variable. This
+     * parameter is needed so that the code be usable from several
+     * threads or contexts.
+     */
+    virtual FunctionValue value(const VariableValuation& varValuation) const = 0;
+
+    void expression(ostream& s, Syntax syntax = INFIX_C)
+    {
+        switch (syntax) {
+        case TREE:
+            throw runtime_error("can't use this method to get an AST");
+            break;
+        case PREFIX:
+            prefixExpression(s);
+            break;
+        case INFIX_C:
+            infixExpression(s);
+            break;
+        case POSTFIX:
+            postfixExpression(s);
+            break;
+        case MATHML:
+            mathmlExpression(s);
+            break;
+        default:
+            throw runtime_error("undefined syntax for an expressioin");
+        }
+    }
+
+    /**
+     * return the number of children of this node
+     */
+    virtual int nbArg() const
+    {
+        return 0;
+    }
+
+    int size() const { return nbArg(); }
+
+    /**
+     * return the i-th child of this node
+     */
+    virtual const AST& getArg(int i) const
+    {
+        throw runtime_error("request for an non existing child of an AST node");
+    }
+
+    /**
+     * return the type of this node
+     */
+    virtual NodeType getType() const = 0;
+
+    virtual void prefixExpression(ostream& s) const = 0;
+    virtual void infixExpression(ostream& s) const = 0;
+    virtual void postfixExpression(ostream& s) const = 0;
+
+    void mathmlExpression(ostream& s) const
+    {
+        s << "<math>" << endl;
+        mathmlExpressionRec(s);
+        s << "</math>" << endl;
+    }
+
+    virtual void mathmlExpressionRec(ostream& s) const = 0;
+
+    virtual void setArg(int pos, AST* subExpr) = 0;
+
+    /**
+     * return a tree of C structures (see C_AST.h) representing the AST 
+     *
+     * every structure is allocated with malloc. The tree is owned by
+     * the caller and memory must be freed by the caller.
+     */
+    virtual C_AST* makeCTree() const = 0;
+
+    bool isVar() const { return getType() == VAR; }
+    bool isInteger() const { return getType() == CST_INT; }
+    bool isBoolean() const { return getType() == CST_BOOL; }
+    bool isSymbol() const;
+    bool isOperator() const;
+    bool isList() const { return getType() == LIST; }
+    bool isDict() const { return getType() == DICT; }
+
+    bool hasKey(const string& key) const;
+
+    const string& getVarName() const;
+    int getVarId() const;
+    int getInteger() const;
+    bool getBoolean() const;
+
+    /**
+     * will throw bad_cast if this is not a dictionary
+     */
+    const ASTList& list() const;
+
+    /**
+     * will throw bad_cast if this is not a dictionary
+     */
+    const ASTDict& dict() const;
+
+    const AST& operator[](int i) const;
+    const AST& operator[](const string& key) const;
+};
+
+/**
+   * @brief a symbolic constant represented in the AST.
+   */
+class ASTSymb : public AST {
+protected:
+    const NodeType cst;
+
+public:
+    ASTSymb(NodeType c)
+        : cst(c)
+    {
+    }
+
+    virtual FunctionValue value(const VariableValuation& varValuation) const
+    {
+        throw runtime_error("no valuation defined for a symbolic constant");
+    }
+
+    virtual NodeType getType() const { return cst; }
+
+    /**
+     * return the i-th child of this node
+     */
+    virtual const AST& getArg(int i) const
+    {
+        throw runtime_error("abstract method called");
+    }
+
+    virtual void setArg(int pos, AST* subExpr)
+    {
+        throw runtime_error("abstract method called");
+    }
+
+    virtual void prefixExpression(ostream& s) const
+    {
+        infixExpression(s);
+    }
+
+    virtual void infixExpression(ostream& s) const
+    {
+        switch (cst) {
+        case SYMB_NIL:
+            s << "nil";
+            break;
+        case SYMB_EQ:
+            s << "==";
+            break;
+        case SYMB_NE:
+            s << "!=";
+            break;
+        case SYMB_GE:
+            s << ">=";
+            break;
+        case SYMB_GT:
+            s << ">";
+            break;
+        case SYMB_LE:
+            s << "<=";
+            break;
+        case SYMB_LT:
+            s << "<";
+            break;
+        default:
+            throw runtime_error("unimplemented");
+        }
+    }
+
+    virtual void postfixExpression(ostream& s) const
+    {
+        infixExpression(s);
+    }
+
+    virtual void mathmlExpressionRec(ostream& s) const
+    {
+        throw runtime_error("unimplemented");
+    }
+
+    virtual C_AST* makeCTree() const
+    {
+        C_AST* node = reinterpret_cast<C_AST*>(malloc(sizeof(C_AST)));
+
+        node->type = cst;
+
+        return node;
+    }
+};
+
+/**
+   * @brief A variable represented in the AST.
+   */
+class ASTVar : public AST {
+protected:
+    string name;
+    int id;
+
+public:
+    ASTVar(const string& name, int id = -1)
+    {
+        this->name = name;
+        this->id = id;
+    }
+
+    const string& getName() const { return name; }
+    int getId() const { return id; }
+
+    virtual FunctionValue value(const VariableValuation& varValuation) const
+    {
+        return varValuation.getVarValue(id);
+    }
+
+    virtual NodeType getType() const { return VAR; }
+
+    virtual void setArg(int pos, AST* subExpr)
+    {
+        throw runtime_error("a variable cannot have any argument");
+    }
+
+    virtual void prefixExpression(ostream& s) const
+    {
+        s << name
+          << "/$" << id;
+    }
+
+    virtual void infixExpression(ostream& s) const
+    {
+        s // << name << "/"
+            //<< "$" << id
+            << "parm[" << id << "]";
+    }
+
+    virtual void postfixExpression(ostream& s) const
+    {
+        s << name
+          << "/$" << id;
+    }
+
+    virtual void mathmlExpressionRec(ostream& s) const
+    {
+        s << "  <ci>" << name << "</ci>" << endl;
+    }
+
+    virtual C_AST* makeCTree() const
+    {
+        C_AST_VarNode* node = reinterpret_cast<C_AST_VarNode*>(malloc(sizeof(C_AST_VarNode)));
+
+        node->type = VAR;
+        node->varName = strdup(name.c_str());
+        node->idVar = id;
+
+        return reinterpret_cast<C_AST*>(node);
+    }
+};
+
+/**
+   * @brief An integer constant represented in the AST.
+   */
+class ASTInteger : public AST {
+protected:
+    int val;
+
+public:
+    ASTInteger(int n)
+    {
+        val = n;
+    }
+
+    ASTInteger(const string& expr)
+    {
+        istringstream f(expr);
+        f >> val;
+    }
+
+    int getVal() const { return val; }
+
+    virtual FunctionValue value(const VariableValuation& varValuation) const
+    {
+        return val;
+    }
+
+    virtual NodeType getType() const { return CST_INT; }
+
+    virtual void setArg(int pos, AST* subExpr)
+    {
+        throw runtime_error("a constant cannot have any argument");
+    }
+
+    virtual void prefixExpression(ostream& s) const
+    {
+        s << val;
+    }
+
+    virtual void infixExpression(ostream& s) const
+    {
+        s << val;
+    }
+
+    virtual void postfixExpression(ostream& s) const
+    {
+        s << val;
+    }
+
+    virtual void mathmlExpressionRec(ostream& s) const
+    {
+        s << "  <cn>" << val << "</cn>" << endl;
+    }
+
+    virtual C_AST* makeCTree() const
+    {
+        C_AST_CstNode* node = reinterpret_cast<C_AST_CstNode*>(malloc(sizeof(C_AST_CstNode)));
+
+        node->type = CST_INT;
+        node->val = val;
+
+        return reinterpret_cast<C_AST*>(node);
+    }
+};
+
+/**
+   * @brief A boolean constant represented in the AST.
+   */
+class ASTBoolean : public AST {
+protected:
+    bool val;
+
+public:
+    ASTBoolean(bool v)
+    {
+        val = v;
+    }
+
+    bool getVal() const { return val; }
+
+    virtual FunctionValue value(const VariableValuation& varValuation) const
+    {
+        if (val)
+            return 1;
+        else
+            return 0;
+    }
+
+    virtual NodeType getType() const { return CST_BOOL; }
+
+    virtual void setArg(int pos, AST* subExpr)
+    {
+        throw runtime_error("a constant cannot have any argument");
+    }
+
+    virtual void prefixExpression(ostream& s) const
+    {
+        s << boolalpha << val << noboolalpha;
+    }
+
+    virtual void infixExpression(ostream& s) const
+    {
+        s << boolalpha << val << noboolalpha;
+    }
+
+    virtual void postfixExpression(ostream& s) const
+    {
+        s << boolalpha << val << noboolalpha;
+    }
+
+    virtual void mathmlExpressionRec(ostream& s) const
+    {
+        if (val)
+            s << "  <true/>" << endl;
+        else
+            s << "  <false/>" << endl;
+    }
+
+    virtual C_AST* makeCTree() const
+    {
+        C_AST_CstNode* node = reinterpret_cast<C_AST_CstNode*>(malloc(sizeof(C_AST_CstNode)));
+
+        node->type = CST_BOOL;
+        node->val = val;
+
+        return reinterpret_cast<C_AST*>(node);
+    }
+};
+
+/**
+   * @brief a list of (heterogeneous) elements represented in the AST.
+   */
+class ASTList : public AST {
+protected:
+    deque<AST*> list;
+
+public:
+    ASTList()
+    {
+    }
+
+    ~ASTList()
+    {
+        for (deque<AST*>::iterator it = list.begin(); it != list.end(); ++it)
+            delete *it;
+    }
+
+    virtual FunctionValue value(const VariableValuation& varValuation) const
+    {
+        throw runtime_error("no valuation defined for a list");
+    }
+
+    virtual NodeType getType() const { return LIST; }
+
+    virtual int nbArg() const
+    {
+        return list.size();
+    }
+
+    const AST& operator[](int i) const
+    {
+        return *list[i];
+    }
+
+    void clear()
+    {
+        for (deque<AST*>::size_type i = 0; i < list.size(); ++i)
+            if (list[i])
+                delete list[i];
+
+        list.clear();
+    }
+
+    void push_back(AST* subExpr)
+    {
+        list.push_back(subExpr);
+    }
+
+    void push_front(AST* subExpr)
+    {
+        list.push_front(subExpr);
+    }
+
+    /**
+     * return the i-th child of this node
+     */
+    virtual const AST& getArg(int i) const
+    {
+        return *list[i];
+    }
+
+    virtual void setArg(int pos, AST* subExpr)
+    {
+        throw runtime_error("abstract method called");
+    }
+
+    virtual void prefixExpression(ostream& s) const
+    {
+        s << "[";
+        for (deque<AST*>::const_iterator it = list.begin(); it != list.end(); ++it) {
+            s << ' ';
+            (*it)->prefixExpression(s);
+        }
+        s << " ]";
+    }
+
+    virtual void infixExpression(ostream& s) const
+    {
+        s << "[";
+        for (deque<AST*>::const_iterator it = list.begin(); it != list.end(); ++it) {
+            s << ' ';
+            (*it)->infixExpression(s);
+        }
+        s << " ]";
+    }
+
+    virtual void postfixExpression(ostream& s) const
+    {
+        s << "[";
+        for (deque<AST*>::const_iterator it = list.begin(); it != list.end(); ++it) {
+            s << ' ';
+            (*it)->postfixExpression(s);
+        }
+        s << " ]";
+    }
+
+    virtual void mathmlExpressionRec(ostream& s) const
+    {
+        throw runtime_error("unimplemented");
+    }
+
+    virtual C_AST* makeCTree() const
+    {
+        C_AST_ListNode* node = reinterpret_cast<C_AST_ListNode*>(malloc(sizeof(C_AST_ListNode) + sizeof(void * [list.size()])));
+
+        node->type = LIST;
+        node->size = list.size();
+
+        for (unsigned int i = 0; i < list.size(); ++i)
+            node->items[i] = list[i]->makeCTree();
+
+        return reinterpret_cast<C_AST*>(node);
+    }
+};
+
+/**
+   * @brief an associative array of (heterogeneous) elements
+   * represented in the AST.
+   */
+class ASTDict : public AST {
+protected:
+    map<string, AST*> dict;
+
+public:
+    ASTDict()
+    {
+    }
+
+    ~ASTDict()
+    {
+        for (map<string, AST*>::iterator it = dict.begin(); it != dict.end(); ++it)
+            delete (*it).second;
+    }
+
+    virtual FunctionValue value(const VariableValuation& varValuation) const
+    {
+        throw runtime_error("no valuation defined for a dict");
+    }
+
+    virtual NodeType getType() const { return DICT; }
+
+    virtual int nbArg() const
+    {
+        return dict.size();
+    }
+
+    const AST& operator[](const string& key) const
+    {
+        map<string, AST*>::const_iterator it = dict.find(key);
+
+        if (it == dict.end())
+            throw runtime_error("couldn't find key in dictionary");
+        else
+            return *(*it).second;
+    }
+
+    bool hasKey(const string& key) const
+    {
+        return dict.find(key) != dict.end();
+    }
+
+    /**
+     * return the i-th child of this node
+     */
+    virtual const AST& getArg(int i) const
+    {
+        throw runtime_error("dictionaries can't be accessed by index");
+    }
+
+    virtual void setArg(int pos, AST* subExpr)
+    {
+        throw runtime_error("dictionaries can't be accessed by index");
+    }
+
+    virtual const AST& getArg(const string& key) const
+    {
+        map<string, AST*>::const_iterator it = dict.find(key);
+
+        if (it == dict.end())
+            throw runtime_error("couldn't find key in dictionary");
+        else
+            return *(*it).second;
+    }
+
+    virtual void setArg(const string& key, AST* subExpr)
+    {
+        map<string, AST*>::iterator it = dict.find(key);
+
+        if (it != dict.end())
+            throw runtime_error("multiple assignments to the same key in dictionary");
+        else
+            dict[key] = subExpr;
+    }
+
+    virtual void prefixExpression(ostream& s) const
+    {
+        s << "{";
+        for (map<string, AST*>::const_iterator it = dict.begin(); it != dict.end(); ++it) {
+            s << " /" << (*it).first << ' ';
+            (*it).second->prefixExpression(s);
+        }
+        s << " }";
+    }
+
+    virtual void infixExpression(ostream& s) const
+    {
+        s << "{";
+        for (map<string, AST*>::const_iterator it = dict.begin(); it != dict.end(); ++it) {
+            s << " /" << (*it).first << ' ';
+            (*it).second->infixExpression(s);
+        }
+        s << " }";
+    }
+
+    virtual void postfixExpression(ostream& s) const
+    {
+        s << "{";
+        for (map<string, AST*>::const_iterator it = dict.begin(); it != dict.end(); ++it) {
+            s << " /" << (*it).first << ' ';
+            (*it).second->postfixExpression(s);
+        }
+        s << " }";
+    }
+
+    virtual void mathmlExpressionRec(ostream& s) const
+    {
+        throw runtime_error("unimplemented");
+    }
+
+    virtual C_AST* makeCTree() const
+    {
+        C_AST_DictNode* node = reinterpret_cast<C_AST_DictNode*>(malloc(sizeof(C_AST_DictNode) + sizeof(C_AST_DictEntry[dict.size()])));
+
+        node->type = DICT;
+        node->size = dict.size();
+
+        int i = 0;
+        for (map<string, AST*>::const_iterator it = dict.begin(); it != dict.end(); ++it) {
+            node->items[i].key = strdup((*it).first.c_str());
+            node->items[i].value = (*it).second->makeCTree();
+            ++i;
+        }
+
+        return reinterpret_cast<C_AST*>(node);
+    }
+};
+
+/**
+   * @brief A generic representation of a function inside the AST
+   */
+class ASTAbstractFunction : public AST {
+protected:
+    int nbarg;
+    AST** args;
+
+    const char* prefixSymbol;
+    const char* infixSymbol;
+    const char* mathMLSymbol;
+    NodeType type;
+
+public:
+    ASTAbstractFunction(int nbarg,
+        const char* prefixSymbol,
+        const char* infixSymbol,
+        const char* mathMLSymbol,
+        NodeType type)
+    {
+        if (nbarg < 0)
+            throw runtime_error("number of arguments cannot be negative");
+
+        this->nbarg = nbarg;
+        this->prefixSymbol = prefixSymbol;
+        this->infixSymbol = infixSymbol;
+        this->mathMLSymbol = mathMLSymbol;
+        this->type = type;
+
+        if (nbarg == 0)
+            args = NULL;
+        else {
+            args = new AST*[nbarg];
+            for (int i = 0; i < nbarg; ++i)
+                args[i] = NULL;
+        }
+    }
+
+    virtual ~ASTAbstractFunction()
+    {
+        if (args != NULL) {
+            for (int i = 0; i < nbarg; ++i)
+                if (args[i])
+                    delete args[i];
+
+            delete[] args;
+        }
+    }
+
+    virtual AST* makeNode() = 0;
+
+    virtual void setArg(int pos, AST* subExpr)
+    {
+        if (pos < 0 || pos >= nbarg)
+            throw runtime_error("incorrect argument number");
+
+        args[pos] = subExpr;
+    }
+
+    virtual int nbArg() const
+    {
+        return nbarg;
+    }
+
+    virtual const AST& getArg(int i) const
+    {
+        return *args[i];
+    }
+
+    virtual NodeType getType() const { return type; }
+
+    const char* getPrefixSymbol() { return prefixSymbol; }
+    const char* getInfixSymbol() { return infixSymbol; }
+
+    void prefixExpression(ostream& s) const
+    {
+        s << prefixSymbol << "(";
+
+        if (nbarg != 0 && args[0] != NULL)
+            args[0]->prefixExpression(s);
+
+        for (int i = 1; i < nbarg; ++i) {
+            s << ",";
+            if (args[i] != NULL)
+                args[i]->prefixExpression(s);
+        }
+
+        s << ")";
+    }
+
+    void infixExpression(ostream& s) const
+    {
+        if (infixSymbol != NULL) {
+            if (nbarg == 2) {
+                s << "("; // be careful with priorities
+
+                if (args[0] != NULL)
+                    args[0]->infixExpression(s);
+
+                s << infixSymbol;
+
+                if (args[1] != NULL)
+                    args[1]->infixExpression(s);
+
+                s << ")";
+            } else if (nbarg == 1) {
+                s << infixSymbol << "(";
+                if (args[0] != NULL)
+                    args[0]->infixExpression(s);
+                s << ")";
+            } else
+                throw runtime_error("unexpected arity");
+        } else {
+            s << prefixSymbol << "(";
+
+            if (nbarg != 0 && args[0] != NULL)
+                args[0]->infixExpression(s);
+
+            for (int i = 1; i < nbarg; ++i) {
+                s << ",";
+                if (args[i] != NULL)
+                    args[i]->infixExpression(s);
+            }
+
+            s << ")";
+        }
+    }
+
+    void postfixExpression(ostream& s) const
+    {
+        if (nbarg != 0 && args[0] != NULL)
+            args[0]->postfixExpression(s);
+
+        for (int i = 1; i < nbarg; ++i) {
+            s << " ";
+            if (args[i] != NULL)
+                args[i]->postfixExpression(s);
+        }
+
+        s << " " << prefixSymbol;
+    }
+
+    virtual void mathmlExpressionRec(ostream& s) const
+    {
+        s << "  <apply>" << endl;
+        s << "  <" << mathMLSymbol << "/>" << endl;
+        for (int i = 0; i < nbarg; ++i) {
+            if (args[i] != NULL)
+                args[i]->mathmlExpressionRec(s);
+        }
+        s << "  </apply>" << endl;
+    }
+
+    virtual C_AST* makeCTree() const
+    {
+        C_AST_FxNode* node = reinterpret_cast<C_AST_FxNode*>(malloc(sizeof(C_AST_FxNode) + sizeof(void * [nbarg])));
+
+        node->type = type;
+        node->nbarg = nbarg;
+        for (int i = 0; i < nbarg; ++i)
+            node->args[i] = args[i]->makeCTree();
+
+        return reinterpret_cast<C_AST*>(node);
+    }
+
+protected:
+    /**
+     * check that all args are defined (not NULL)
+     */
+    void checkargs() const
+    {
+        for (int i = 0; i < nbarg; ++i)
+            if (args[i] == NULL)
+                throw runtime_error("missing argument for a function");
+    }
+};
+
+class FunctionNeg : public ASTAbstractFunction {
+public:
+    FunctionNeg()
+        : ASTAbstractFunction(1, "neg", NULL, "minus", F_NEG)
+    {
+    }
+
+    virtual AST* makeNode() { return new FunctionNeg; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+        return -args[0]->value(varValuation);
+    }
+
+    void infixExpression(ostream& s) const
+    {
+        s << "-";
+        s << "("; // ??? avoid these parentheses unless we need them
+
+        if (args[0] != NULL)
+            args[0]->infixExpression(s);
+
+        s << ")";
+    }
+};
+
+class FunctionAbs : public ASTAbstractFunction {
+public:
+    FunctionAbs()
+        : ASTAbstractFunction(1, "abs", NULL, "abs", F_ABS)
+    {
+    }
+
+    virtual AST* makeNode() { return new FunctionAbs; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+        return abs(args[0]->value(varValuation));
+    }
+};
+
+class FunctionAdd : public ASTAbstractFunction {
+public:
+    FunctionAdd()
+        : ASTAbstractFunction(2, "add", "+", "plus", F_ADD)
+    {
+    }
+
+    AST* makeNode() { return new FunctionAdd; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+        return args[0]->value(varValuation) + args[1]->value(varValuation);
+    }
+};
+
+class FunctionSub : public ASTAbstractFunction {
+public:
+    FunctionSub()
+        : ASTAbstractFunction(2, "sub", "-", "minus", F_SUB)
+    {
+    }
+
+    AST* makeNode() { return new FunctionSub; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+        return args[0]->value(varValuation) - args[1]->value(varValuation);
+    }
+};
+
+class FunctionMul : public ASTAbstractFunction {
+public:
+    FunctionMul()
+        : ASTAbstractFunction(2, "mul", "*", "times", F_MUL)
+    {
+    }
+
+    AST* makeNode() { return new FunctionMul; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+        return args[0]->value(varValuation) * args[1]->value(varValuation);
+    }
+};
+
+class FunctionDiv : public ASTAbstractFunction {
+public:
+    FunctionDiv()
+        : ASTAbstractFunction(2, "div", "/", "quotient", F_DIV)
+    {
+    }
+
+    AST* makeNode() { return new FunctionDiv; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        int div = args[1]->value(varValuation);
+
+        if (div == 0)
+            throw runtime_error("divide by 0");
+
+        return args[0]->value(varValuation) / div;
+    }
+};
+
+class FunctionMod : public ASTAbstractFunction {
+public:
+    FunctionMod()
+        : ASTAbstractFunction(2, "mod", "%", "rem", F_MOD)
+    {
+    }
+
+    AST* makeNode() { return new FunctionMod; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        int div = args[1]->value(varValuation);
+
+        if (div == 0)
+            throw runtime_error("modulo by 0");
+
+        // ??? implementation defined !!
+        return args[0]->value(varValuation) % div;
+    }
+};
+
+class FunctionPow : public ASTAbstractFunction {
+public:
+    FunctionPow()
+        : ASTAbstractFunction(2, "pow", NULL, "power", F_POW)
+    {
+    }
+
+    AST* makeNode() { return new FunctionPow; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        long long prod = 1;
+        long long x = args[0]->value(varValuation);
+        int n = args[1]->value(varValuation);
+        int test;
+
+        if (x == 0 && n == 0)
+            throw runtime_error("pow(0,0) is undefined");
+
+        while (n != 0) {
+            if ((test = prod) != prod || (test = x) != x)
+                throw runtime_error("overflow in pow(x,y) computation");
+
+            if (n & 0x01)
+                prod *= x;
+
+            x *= x;
+            n >>= 1;
+        }
+
+        if ((test = prod) != prod) // ??? reliable ?
+            throw runtime_error("overflow in pow(x,y) computation");
+
+        return prod;
+    }
+};
+
+class FunctionIf : public ASTAbstractFunction {
+public:
+    FunctionIf()
+        : ASTAbstractFunction(3, "if", NULL, NULL, F_IF)
+    {
+    }
+
+    AST* makeNode() { return new FunctionIf; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        if (args[0]->value(varValuation))
+            return args[1]->value(varValuation);
+        else
+            return args[2]->value(varValuation);
+    }
+};
+
+class FunctionMin : public ASTAbstractFunction {
+public:
+    FunctionMin()
+        : ASTAbstractFunction(2, "min", NULL, "min", F_MIN)
+    {
+    }
+
+    AST* makeNode() { return new FunctionMin; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return std::min(args[0]->value(varValuation), args[1]->value(varValuation));
+    }
+};
+
+class FunctionMax : public ASTAbstractFunction {
+public:
+    FunctionMax()
+        : ASTAbstractFunction(2, "max", NULL, "max", F_MAX)
+    {
+    }
+
+    AST* makeNode() { return new FunctionMax; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return std::max(args[0]->value(varValuation), args[1]->value(varValuation));
+    }
+};
+
+class FunctionEQ : public ASTAbstractFunction {
+public:
+    FunctionEQ()
+        : ASTAbstractFunction(2, "eq", "==", "eq", F_EQ)
+    {
+    }
+
+    AST* makeNode() { return new FunctionEQ; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return args[0]->value(varValuation) == args[1]->value(varValuation);
+    }
+};
+
+class FunctionNE : public ASTAbstractFunction {
+public:
+    FunctionNE()
+        : ASTAbstractFunction(2, "ne", "!=", "neq", F_NE)
+    {
+    }
+
+    AST* makeNode() { return new FunctionNE; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return args[0]->value(varValuation) != args[1]->value(varValuation);
+    }
+};
+
+class FunctionGE : public ASTAbstractFunction {
+public:
+    FunctionGE()
+        : ASTAbstractFunction(2, "ge", ">=", "geq", F_GE)
+    {
+    }
+
+    AST* makeNode() { return new FunctionGE; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return args[0]->value(varValuation) >= args[1]->value(varValuation);
+    }
+};
+
+class FunctionGT : public ASTAbstractFunction {
+public:
+    FunctionGT()
+        : ASTAbstractFunction(2, "gt", ">", "gt", F_GT)
+    {
+    }
+
+    AST* makeNode() { return new FunctionGT; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+        if (args[0]->value(varValuation) > args[1]->value(varValuation))
+            return FunctionValue(1);
+        else
+            return FunctionValue(0);
+    }
+};
+
+class FunctionLE : public ASTAbstractFunction {
+public:
+    FunctionLE()
+        : ASTAbstractFunction(2, "le", "<=", "leq", F_LE)
+    {
+    }
+
+    AST* makeNode() { return new FunctionLE; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return args[0]->value(varValuation) <= args[1]->value(varValuation);
+    }
+};
+
+class FunctionLT : public ASTAbstractFunction {
+public:
+    FunctionLT()
+        : ASTAbstractFunction(2, "lt", "<", "lt", F_LT)
+    {
+    }
+
+    AST* makeNode() { return new FunctionLT; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+        if (args[0]->value(varValuation) < args[1]->value(varValuation))
+            return FunctionValue(1);
+        else
+            return FunctionValue(0);
+    }
+};
+
+class FunctionNot : public ASTAbstractFunction {
+public:
+    FunctionNot()
+        : ASTAbstractFunction(1, "not", "!", "not", F_NOT)
+    {
+    }
+
+    AST* makeNode() { return new FunctionNot; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return !args[0]->value(varValuation);
+    }
+};
+
+class FunctionAnd : public ASTAbstractFunction {
+public:
+    FunctionAnd()
+        : ASTAbstractFunction(2, "and", "&&", "and", F_AND)
+    {
+    }
+
+    AST* makeNode() { return new FunctionAnd; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return args[0]->value(varValuation) && args[1]->value(varValuation);
+    }
+};
+
+class FunctionOr : public ASTAbstractFunction {
+public:
+    FunctionOr()
+        : ASTAbstractFunction(2, "or", "||", "or", F_OR)
+    {
+    }
+
+    AST* makeNode() { return new FunctionOr; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return args[0]->value(varValuation) || args[1]->value(varValuation);
+    }
+};
+
+class FunctionXor : public ASTAbstractFunction {
+public:
+    FunctionXor()
+        : ASTAbstractFunction(2, "xor", "^", "xor", F_XOR)
+    {
+    }
+
+    AST* makeNode() { return new FunctionXor; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return args[0]->value(varValuation) ^ args[1]->value(varValuation);
+    }
+};
+
+class FunctionIff : public ASTAbstractFunction {
+public:
+    FunctionIff()
+        : ASTAbstractFunction(2, "iff", "==", "equivalent", F_IFF)
+    {
+    }
+
+    AST* makeNode() { return new FunctionIff; }
+
+    FunctionValue value(const VariableValuation& varValuation) const
+    {
+        checkargs();
+
+        return args[0]->value(varValuation) == args[1]->value(varValuation);
+    }
+};
+
+/**
+   * for internal use only
+   *
+   * ??? this should be moved somewhere else
+   */
+class ASTDictKey : public AST {
+private:
+    const string key;
+
+public:
+    ASTDictKey(const string& key)
+        : key(key)
+    {
+    }
+
+    virtual NodeType getType() const { return _DICTKEY; }
+
+    const string& getKey() const { return key; }
+
+    virtual void setArg(int pos, AST* subExpr)
+    {
+        throw runtime_error("abstract method called");
+    }
+
+    virtual FunctionValue value(const VariableValuation& varValuation) const
+    {
+        throw runtime_error("abstract method called");
+    }
+
+    virtual void prefixExpression(ostream& s) const
+    {
+        throw runtime_error("abstract method called");
+    }
+
+    virtual void infixExpression(ostream& s) const
+    {
+        throw runtime_error("abstract method called");
+    }
+
+    virtual void postfixExpression(ostream& s) const
+    {
+        throw runtime_error("abstract method called");
+    }
+
+    virtual void mathmlExpressionRec(ostream& s) const
+    {
+        throw runtime_error("abstract method called");
+    }
+
+    virtual C_AST* makeCTree() const
+    {
+        throw runtime_error("abstract method called");
+    }
+};
+
+inline bool AST::isSymbol() const
+{
+    return dynamic_cast<const ASTSymb*>(this) == this;
+}
+
+inline bool AST::isOperator() const
+{
+    return dynamic_cast<const ASTAbstractFunction*>(this) == this;
+}
+
+inline const string& AST::getVarName() const
+{
+    return dynamic_cast<const ASTVar*>(this)->getName();
+}
+
+inline int AST::getVarId() const
+{
+    return dynamic_cast<const ASTVar*>(this)->getId();
+}
+
+inline int AST::getInteger() const
+{
+    return dynamic_cast<const ASTInteger*>(this)->getVal();
+}
+
+inline bool AST::getBoolean() const
+{
+    return dynamic_cast<const ASTBoolean*>(this)->getVal();
+}
+
+/**
+   * will throw bad_cast if this is not a dictionary
+   */
+inline const ASTList& AST::list() const
+{
+    return dynamic_cast<const ASTList&>(*this);
+}
+
+/**
+   * will throw bad_cast if this is not a dictionary
+   */
+inline const ASTDict& AST::dict() const
+{
+    return dynamic_cast<const ASTDict&>(*this);
+}
+
+inline bool AST::hasKey(const string& key) const
+{
+    return dynamic_cast<const ASTDict*>(this)->hasKey(key);
+}
+
+inline const AST& AST::operator[](int i) const
+{
+    return dynamic_cast<const ASTList&>(*this)[i];
+}
+
+inline const AST& AST::operator[](const string& key) const
+{
+    return dynamic_cast<const ASTDict&>(*this)[key];
+}
+
+/**
+   * this class is used by the parser whenever it needs to create an
+   * AST node.
+   */
+class DefaultASTFactory {
+public:
+    typedef AST ASTType;
+
+    inline static ASTVar* mkVar(const string& name, int id = -1)
+    {
+        return new ASTVar(name, id);
+    }
+
+    inline static ASTInteger* mkInteger(int val)
+    {
+        return new ASTInteger(val);
+    }
+
+    inline static ASTInteger* mkInteger(const string& s)
+    {
+        return new ASTInteger(s);
+    }
+
+    inline static ASTBoolean* mkBoolean(bool val)
+    {
+        return new ASTBoolean(val);
+    }
+
+    inline static ASTSymb* mkSymb(NodeType c)
+    {
+        return new ASTSymb(c);
+    }
+
+    inline static ASTList* mkList()
+    {
+        return new ASTList();
+    }
+
+    inline static ASTDict* mkDict()
+    {
+        return new ASTDict();
+    }
+};
+
+} // namespace
+
+#endif
diff --git a/code/include/tb2/xmlcsp/CSPParserCallback.hh b/code/include/tb2/xmlcsp/CSPParserCallback.hh
new file mode 100644
index 0000000000000000000000000000000000000000..38dc928d921d04b5a61446f925b3db5c9c8236a8
--- /dev/null
+++ b/code/include/tb2/xmlcsp/CSPParserCallback.hh
@@ -0,0 +1,316 @@
+/*=============================================================================
+ * parser for CSP instances represented in XML format
+ * 
+ * Copyright (c) 2008 Olivier ROUSSEL (olivier.roussel <at> cril.univ-artois.fr)
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *=============================================================================
+ */
+#ifndef _CSPParserCallback_h_
+#define _CSPParserCallback_h_
+
+#include <string>
+#include "XMLParser_constants.h"
+#include "AST.hh"
+
+namespace CSPXMLParser {
+
+using namespace std;
+
+enum CSPDefinitionType { RelationType,
+    PredicateType,
+    GlobalConstraintType, // don't change these ones
+    DomainType,
+    VariableType,
+    ConstraintType,
+    UndefinedType }; // UndefinedType must come last
+
+class AST; // Abstract Syntax Tree representing an expression
+
+class CSPParserCallback {
+public:
+    virtual ~CSPParserCallback() {}
+
+    /**
+   * signal the beginning of parsing
+   *
+   * @param name: name of the instance
+   */
+    virtual void beginInstance(const string& name) {}
+
+    /**
+   * this callback is called just after beginInstance() and specifies
+   * the type of the instance
+   *
+   * @param instanceType: type of instance (CSP,WCSP,QCSP,...)
+   */
+    virtual void instanceType(InstanceType instanceType) {}
+
+    /********************************************************************/
+
+    /**
+   * callback called at the beginning of the domains declarations
+   *
+   * @param nbDomains: number of domains that will be declared
+   */
+    virtual void beginDomainsSection(int nbDomains) {}
+
+    /**
+   * callback called at the beginning of the declaration of one domain
+   *
+   * @param name: identifier of the domain
+   * @param idDomain: identifier assigned to the domain name (starting from 0)
+   * @param nbValue: number of values in the domain
+   */
+    virtual void beginDomain(const string& name, int idDomain, int nbValue) {}
+
+    /**
+   * add a single value to the current domain
+   *
+   * @param v: value to add to the domain
+   */
+    virtual void addDomainValue(int v) {}
+
+    /**
+   * add the range of values [first..last] to the current domain
+   *
+   * @param first: first value to add to the domain
+   * @param last: last value to add to the domain
+   */
+    virtual void addDomainValue(int first, int last) {}
+
+    /**
+   * ends the definition of the current domain
+   */
+    virtual void endDomain() {}
+
+    /**
+   * end the definition of all domains
+   */
+    virtual void endDomainsSection() {}
+
+    /********************************************************************/
+
+    /**
+   * callback called at the beginning of the variables declarations
+   *
+   * @param nbVariables: number of variables that will be declared
+   */
+    virtual void beginVariablesSection(int nbVariables) {}
+
+    /**
+   * callback called to define a new variable
+   *
+   * @param name: identifier of the variable
+   * @param idVar: identifier assigned to the variable name (starting from 0)
+   * @param domain: identifier of the variable domain
+   * @param idDomain: identifier assigned to the domain name (starting from 0)
+   */
+    virtual void addVariable(const string& name, int idVar,
+        const string& domain, int idDomain) {}
+
+    /**
+   * end the definition of all variables
+   */
+    virtual void endVariablesSection() {}
+
+    /********************************************************************/
+
+    /**
+   * callback called at the beginning of the relations declarations
+   *
+   * @param nbRelations: number of relations that will be declared
+   */
+    virtual void beginRelationsSection(int nbRelations) {}
+
+    /**
+   * callback called at the beginning of the declaration of one relation
+   *
+   * @param name: identifier of the relation
+   * @param idRel: identifier assigned to the relation name (starting from 0)
+   * @param arity: arity of the relation
+   * @param nbTuples: number of tuples in the relation
+   * @param isSupport: true if tuples represent support, false if
+   *                  tuples represent conflicts
+   */
+    virtual void beginRelation(const string& name, int idRel,
+        int arity, int nbTuples, RelType relType) {}
+
+    /**
+   * this callback is called only for soft relations, just after
+   * beginRelation has been called
+   *
+   * @param name: identifier of the relation
+   * @param idRel: identifier assigned to the relation name (starting from 0)
+   * @param defaultCost: cost of any tuple not explicitely listed in
+   * the relation
+   */
+    virtual void relationDefaultCost(const string& name, int idRel,
+        int defaultCost) {}
+
+    /**
+   * add a single tuple to the current relation
+   *
+   * @param arity: the tuple arity
+   * @param tuple: tuple to add to the relation (contains arity elements)
+   */
+    virtual void addRelationTuple(int arity, int tuple[]) {}
+
+    /**
+   * add a single weighted tuple to the current relation
+   *
+   * @param arity: the tuple arity
+   * @param tuple: tuple to add to the relation (contains arity elements)
+   * @param cost: the cost of this tuple
+   */
+    virtual void addRelationTuple(int arity, int tuple[], int cost) {}
+
+    /**
+   * ends the definition of the current relation
+   */
+    virtual void endRelation() {}
+
+    /**
+   * end the definition of all relations
+   */
+    virtual void endRelationsSection() {}
+
+    /********************************************************************/
+
+    /**
+   * callback called at the beginning of the predicates declarations
+   *
+   * @param nbPredicates: number of predicates that will be declared
+   */
+    virtual void beginPredicatesSection(int nbPredicates) {}
+
+    /**
+   * callback called at the beginning of the declaration of one predicate
+   *
+   * @param name: identifier of the predicate
+   * @param idPred: identifier assigned to the predicate name (starting from 0)
+   */
+    virtual void beginPredicate(const string& name, int idPred) {}
+
+    /**
+   * add a formal parameter to the current predicate
+   *
+   * @param pos: position of the formal parameter (0=first)
+   * @param name: name of the parameter
+   * @param type: type of the parameter
+   */
+    virtual void addFormalParameter(int pos, const string& name, const string& type) {}
+
+    /**
+   * provide the expression of the current predicate
+   *
+   * @param tree: the abstract syntax tree representing the expression
+   */
+    virtual void predicateExpression(AST* tree) {}
+
+    /**
+   * provide the expression of the current predicate
+   *
+   * @param expr: the string representing the expression
+   */
+    virtual void predicateExpression(const string& expr) {}
+
+    /**
+   * ends the definition of the current predicate
+   */
+    virtual void endPredicate() {}
+
+    /**
+   * end the definition of all predicates
+   */
+    virtual void endPredicatesSection() {}
+
+    /********************************************************************/
+
+    /**
+   * callback called at the beginning of the constraints declarations
+   *
+   * @param nbConstraints: number of constraints that will be declared
+   */
+    virtual void beginConstraintsSection(int nbConstraints) {}
+
+    /**
+   * Only for WCSP instances, this callback is called immediately
+   * after the beginConstraintsSection() callback
+   *
+   * @param maximalCost: instanciations with a cost greater or equal
+   * to this cost are not acceptable solutions
+   */
+    virtual void constraintsMaximalCost(int maximalCost) {}
+
+    /**
+   * Only for WCSP instances, this callback is called immediately
+   * after the constraintsMaximalCost() callback
+   *
+   * @param initialCost: constant cost to add to the cost of any
+   * instanciation (sometimes defined as the cost of a 0-ary
+   * constraint)
+   */
+    virtual void constraintsInitialCost(int initialCost) {}
+
+    /**
+   * callback called at the beginning of the declaration of one constraint
+   *
+   * @param name: identifier of the constraint
+   * @param idConstr: identifier assigned to the constraint name (starting from 0)
+   * @param arity: arity of the constraint
+   * @param name: the refererence to the definition of this constraint. May be a relation, a predicate or the name of a global constraint
+   * @param reference: the name of the relation/predicate or global constraint which defines the support/conflict tuples of this constraint
+   * @param type: type of reference (RelationType,PredicateType or
+   *             GlobalConstraintType)
+   * @param id: identifier associated to the reference
+   */
+    virtual void beginConstraint(const string& name, int idConstr,
+        int arity,
+        const string& reference,
+        CSPDefinitionType type, int id,
+        const ASTList& scope) {}
+
+    /**
+   * provides the list of parameters of the constraint
+   *
+   * @param args: the list of effective parameters of the constraint
+   */
+    virtual void constraintParameters(const ASTList& args) {}
+
+    /**
+   * ends the definition of the current constraint
+   */
+    virtual void endConstraint() {}
+
+    /**
+   * end the definition of all constraints
+   */
+    virtual void endConstraintsSection() {}
+
+    /********************************************************************/
+
+    /**
+   * signal the end of parsing
+   */
+    virtual void endInstance() {}
+};
+
+} // namespace
+#endif
diff --git a/code/include/tb2/xmlcsp/C_AST.h b/code/include/tb2/xmlcsp/C_AST.h
new file mode 100644
index 0000000000000000000000000000000000000000..f08f4ad9e3aaed384e9db001591590dd9ff2f8b4
--- /dev/null
+++ b/code/include/tb2/xmlcsp/C_AST.h
@@ -0,0 +1,106 @@
+/*=============================================================================
+ * parser for CSP instances represented in XML format
+ * 
+ * Copyright (c) 2008 Olivier ROUSSEL (olivier.roussel <at> cril.univ-artois.fr)
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *=============================================================================
+ */
+#ifndef _C_AST_h_
+#define _C_AST_h_
+
+#include "XMLParser_constants.h"
+
+/**
+ * 
+ * a simple representation of an Abstract Syntax Tree (AST) for C
+ *
+ */
+
+/*
+ * abtract node (the field type is present in every node of the
+ * tree). All other nodes in the tree "inherit" from this type.
+ *
+ * This is also the representation of a symbolic constant.
+ */
+typedef struct
+{
+    NodeType type;
+} C_AST;
+
+/*
+ * representation of a variable (necessarily a leaf in the tree)
+ */
+typedef struct
+{
+    NodeType type;
+    char* varName;
+    int idVar;
+} C_AST_VarNode;
+
+/*
+ * representation of a constant (boolean or integer -- necessarily a
+ * leaf in the tree)
+ */
+typedef struct
+{
+    NodeType type;
+    int val;
+} C_AST_CstNode;
+
+/*
+ * representation of a function 
+ */
+typedef struct
+{
+    NodeType type;
+    int nbarg;
+    C_AST* args[];
+} C_AST_FxNode;
+
+/*
+ * representation of a list 
+ */
+typedef struct
+{
+    NodeType type;
+    int size; /* number of items in the list */
+    C_AST* items[];
+} C_AST_ListNode;
+
+/*
+ * entry in a dictionary
+ */
+typedef struct
+{
+    char* key;
+    C_AST* value;
+} C_AST_DictEntry;
+
+/*
+ * representation of a dictionary 
+ */
+typedef struct
+{
+    NodeType type;
+    int size; /* number of items in the dictionary */
+    C_AST_DictEntry items[];
+} C_AST_DictNode;
+
+#endif
diff --git a/code/include/tb2/xmlcsp/CostRepresentation.hh b/code/include/tb2/xmlcsp/CostRepresentation.hh
new file mode 100644
index 0000000000000000000000000000000000000000..ae41553f4c304e54d6c719d53730672901e31608
--- /dev/null
+++ b/code/include/tb2/xmlcsp/CostRepresentation.hh
@@ -0,0 +1,66 @@
+/*=============================================================================
+ * parser for CSP instances represented in XML format
+ * 
+ * Copyright (c) 2008 Olivier ROUSSEL (olivier.roussel <at> cril.univ-artois.fr)
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *=============================================================================
+ */
+#ifndef _CostRepresentation_h_
+#define _CostRepresentation_h_
+
+#include <limits>
+
+namespace CSPXMLParser {
+using namespace std;
+
+class DefaultCostRepresentation {
+public:
+    // type which holds a cost
+    typedef int Cost;
+
+    static void assignInfinity(Cost& c)
+    {
+        c = numeric_limits<Cost>::max(); // max. value
+    }
+
+    static bool isInfinity(const Cost& c)
+    {
+        return c == numeric_limits<Cost>::max();
+    }
+};
+
+class AltCostRepresentation {
+public:
+    // type which holds a cost
+    typedef int Cost;
+
+    static void assignInfinity(Cost& c)
+    {
+        c = -1; // conventional value
+    }
+
+    static bool isInfinity(const Cost& c)
+    {
+        return c < 0;
+    }
+};
+
+} // namespace
+#endif
diff --git a/code/include/tb2/xmlcsp/ExpressionParser.hh b/code/include/tb2/xmlcsp/ExpressionParser.hh
new file mode 100644
index 0000000000000000000000000000000000000000..6731868520392c3b4be84833566cca6359fb7679
--- /dev/null
+++ b/code/include/tb2/xmlcsp/ExpressionParser.hh
@@ -0,0 +1,199 @@
+/*=============================================================================
+ * parser for CSP instances represented in XML format
+ * 
+ * Copyright (c) 2008 Olivier ROUSSEL (olivier.roussel <at> cril.univ-artois.fr)
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *=============================================================================
+ */
+#ifndef _ExpressionParser_hh_
+#define _ExpressionParser_hh_
+
+#include <iostream>
+#include <iomanip>
+#include <sstream>
+#include <exception>
+#include <stdexcept>
+#include <string>
+#include <map>
+#include <deque>
+#include <cctype>
+
+#include "AST.hh"
+
+/**
+ * @file ExpressionParser.hh
+ * @brief Defines a parser for prefix/infix/postfix expressions.
+ */
+
+namespace CSPXMLParser {
+using namespace std;
+
+template <class ASTFactory>
+class ExpressionParser {
+private:
+    deque<ASTAbstractFunction*> functionList;
+
+    const VariableInfo* varInfo; // an optional map which provides some
+    // information on the variables that
+    // may occur in the expression
+
+public:
+    ExpressionParser()
+    {
+        varInfo = NULL;
+
+        functionList.push_back(new FunctionNeg);
+        functionList.push_back(new FunctionAbs);
+        functionList.push_back(new FunctionAdd);
+        functionList.push_back(new FunctionSub);
+        functionList.push_back(new FunctionMul);
+        functionList.push_back(new FunctionDiv);
+        functionList.push_back(new FunctionMod);
+        functionList.push_back(new FunctionPow);
+        functionList.push_back(new FunctionIf);
+        functionList.push_back(new FunctionMin);
+        functionList.push_back(new FunctionMax);
+        functionList.push_back(new FunctionEQ);
+        functionList.push_back(new FunctionNE);
+        functionList.push_back(new FunctionGE);
+        functionList.push_back(new FunctionGT);
+        functionList.push_back(new FunctionLE);
+        functionList.push_back(new FunctionLT);
+        functionList.push_back(new FunctionNot);
+        functionList.push_back(new FunctionAnd);
+        functionList.push_back(new FunctionOr);
+        functionList.push_back(new FunctionXor);
+        functionList.push_back(new FunctionIff);
+    }
+
+    ~ExpressionParser()
+    {
+        for (deque<ASTAbstractFunction*>::iterator it = functionList.begin();
+             it != functionList.end(); ++it)
+            delete *it;
+    }
+
+    void setVarInfo(const VariableInfo* varInfo = NULL)
+    {
+        this->varInfo = varInfo;
+    }
+
+    void unsetVarInfo()
+    {
+        this->varInfo = NULL;
+    }
+
+    AST* prefixParser(const string& expr)
+    {
+        string s;
+
+        // remove spaces
+        for (unsigned int i = 0; i < expr.length(); ++i)
+            if (!isspace(expr[i]))
+                s += expr[i];
+
+        return recursivePrefixParser(s);
+    }
+
+    AST* infixParser(const string& expr)
+    {
+        return ASTFactory::mkVar("infix parser unimplemented");
+    }
+
+    AST* postfixParser(const string& expr)
+    {
+        return ASTFactory::mkVar("postfix parser unimplemented");
+    }
+
+private:
+    AST* recursivePrefixParser(const string& f)
+    {
+        int level = 0;
+        int argNum = 0;
+        int subExprStart = 0;
+
+        AST* node = NULL;
+
+        for (unsigned int i = 0; i < f.length(); ++i) {
+            if (f[i] == '(') {
+                if (level == 0) {
+                    node = findPrefixFunction(f.substr(0, i));
+                    subExprStart = i + 1;
+                }
+                ++level;
+            } else {
+                if (level == 1 && (f[i] == ',' || f[i] == ')')) {
+                    node->setArg(argNum, prefixParser(f.substr(subExprStart,
+                                             i - subExprStart)));
+                    ++argNum;
+
+                    subExprStart = i + 1;
+                }
+
+                if (f[i] == ')')
+                    --level;
+            }
+        }
+
+        if (level != 0)
+            throw runtime_error("unbalanced parentheses");
+
+        if (node == NULL) {
+            // no opening parenthese found, this is a constant or a variable
+            if (isalpha(f[0])) {
+                if (f == "true")
+                    node = ASTFactory::mkBoolean(true);
+                else if (f == "false")
+                    node = ASTFactory::mkBoolean(false);
+                else {
+                    // a variable
+                    if (varInfo == NULL)
+                        node = ASTFactory::mkVar(f);
+                    else {
+                        VariableInfo::const_iterator it = varInfo->find(f);
+
+                        if (it == varInfo->end())
+                            throw runtime_error("undefined variable found in expression");
+
+                        node = ASTFactory::mkVar(f, (*it).second.id);
+                    }
+                }
+            } else {
+                // an int
+                node = ASTFactory::mkInteger(f);
+            }
+        }
+
+        return node;
+    }
+
+    AST* findPrefixFunction(const string& name)
+    {
+        for (unsigned int i = 0; i < functionList.size(); ++i)
+            if (functionList[i]->getPrefixSymbol() == name)
+                return functionList[i]->makeNode();
+
+        throw runtime_error("unknown function symbol");
+    }
+};
+
+} // namespace
+
+#endif
diff --git a/code/include/tb2/xmlcsp/XMLParser.hh b/code/include/tb2/xmlcsp/XMLParser.hh
new file mode 100644
index 0000000000000000000000000000000000000000..f50e92c2c341cee904c22356835f8e6a6077f303
--- /dev/null
+++ b/code/include/tb2/xmlcsp/XMLParser.hh
@@ -0,0 +1,2315 @@
+/*=============================================================================
+ * parser for CSP instances represented in XML format
+ * 
+ * Copyright (c) 2008 Olivier ROUSSEL (olivier.roussel <at> cril.univ-artois.fr)
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *=============================================================================
+ */
+#ifndef _XMLParser_h_
+#define _XMLParser_h_
+
+/**
+ * @file XMLParser.h
+ * @brief defines the XMLParser class to parse a CSP instance in XML format
+ */
+
+/*
+ * TODO
+ *
+ * - check that arity and scope of constraints correspond to the parameters
+ *
+ * - handle the formal parameters via the operandStack
+ *
+ * - detect unused attributes
+ * - add the necessary syntax checks
+ * - check the number of elements per section
+ * - check arity and type of formal/effective parameters
+ * - be more explicit on errors
+ */
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <map>
+#include <deque>
+#include <vector>
+#include <sstream>
+#include <stdexcept>
+#include <cassert>
+
+#include "ExpressionParser.hh"
+#include "CostRepresentation.hh"
+#include "CSPParserCallback.hh"
+
+/**
+ * @namespace CSPXMLParser
+ * @brief this namespace encloses all definitions relative to the
+ * CSP XML format parser.
+ */
+namespace CSPXMLParser {
+
+using namespace std;
+
+/**
+   * @brief contains a parser for the CSP XML format.
+   *
+   * This class proposes a parser in SAX mode (to use less memory than
+   * in DOM mode)
+   *
+   * @param Callback the type of the class that will be used to transmit
+   * information from the parser to the solver
+   *
+   * @param XMLLibraryString a class that encapsulates the strings
+   * used by the XML library
+   *
+   * @param XMLLibraryAttributeList a class that encapsulates the list
+   * of attributes of a tag
+   *
+   */
+template <class Callback,
+    class ASTFactory,
+    class CostRepresentation,
+    class XMLLibraryString,
+    class XMLLibraryAttributeList>
+class XMLParser {
+public:
+    // list of attributes and values for a tag
+    typedef XMLLibraryAttributeList AttributeList;
+    typedef XMLLibraryString XMLString;
+    typedef typename ASTFactory::ASTType AST;
+
+private:
+    Callback* cb;
+    Syntax preferredSyntax; // preferred syntax for transmitting an
+    // expression to the solver
+
+    ExpressionParser<ASTFactory> exprParser;
+
+    InstanceType instanceType; // type of instance (CSP, WCSP, QCSP,...)
+
+    /// stores some information on each symbol defined in the CSP instance
+    struct SymbolInfo {
+        CSPDefinitionType type; ///< kind of definition
+        int id; ///< identifier
+
+        // temporary fix ???
+        vector<string>* convOrder;
+
+        SymbolInfo()
+        {
+            id = -1;
+            type = UndefinedType;
+            convOrder = NULL;
+        }
+
+        SymbolInfo(int id, CSPDefinitionType type)
+        {
+            this->id = id;
+            this->type = type;
+            convOrder = NULL;
+        }
+
+        SymbolInfo(int id, CSPDefinitionType type, vector<string>* convOrder)
+        {
+            this->id = id;
+            this->type = type;
+            this->convOrder = convOrder;
+        }
+    };
+
+    typedef map<string, SymbolInfo> SymbolDictionnary;
+
+    SymbolDictionnary symbolDict;
+
+    // stores the next available ID in each category
+    int nextId[UndefinedType];
+
+    /**
+     * register a new symbol in its category.
+     *
+     * @return the identifier assigned to this symbol
+     */
+    int defineSymbol(const string& name, CSPDefinitionType type)
+    {
+        if (type == UndefinedType)
+            throw runtime_error("Cannot register a symbol without a type");
+
+        if (type < 0 || type > UndefinedType)
+            throw runtime_error("internal error: illegal CSPDefinitionType");
+
+        SymbolInfo& info = symbolDict[name];
+
+        if (info.type != UndefinedType)
+            throw runtime_error("symbol " + name + " is defined twice");
+
+        info.type = type;
+        info.id = nextId[type]++;
+
+        return info.id;
+    }
+
+    /**
+     * get the identifier assigned to an already registered symbol
+     *
+     * @param name symbol to look up
+     * @param expectedType if different from UndefinedType, check that
+     * the symbol has the expected type given by this parameter
+     * @return the identifier assigned to this symbol
+     */
+    int getSymbolId(const string& name,
+        CSPDefinitionType expectedType = UndefinedType)
+    {
+        SymbolInfo& info = symbolDict[name];
+
+        if (info.type == UndefinedType)
+            throw runtime_error("symbol " + name + " is undefined");
+
+        if (expectedType != UndefinedType && info.type != expectedType)
+            throw runtime_error("symbol " + name + " doesn't have the expected type");
+
+        return info.id;
+    }
+
+    /**
+     * get the information about an already registered symbol
+     *
+     * @param name symbol to look up
+     * @return type and identifier associated to this symbol
+     */
+    SymbolInfo getSymbolInfo(const string& name)
+    {
+        typename SymbolDictionnary::iterator it = symbolDict.find(name);
+
+        if (it == symbolDict.end())
+            throw runtime_error("symbol " + name + " is undefined");
+
+        return (*it).second;
+    }
+
+    /**
+     * transmit an expression to the solver
+     *
+     */
+    void xmitExpressionToSolver(AST* tree)
+    {
+        if (preferredSyntax == TREE) {
+            getCallback()->predicateExpression(tree);
+        } else {
+            ostringstream tmp;
+
+            tree->expression(tmp, preferredSyntax);
+
+            getCallback()->predicateExpression(tmp.str());
+
+            delete tree;
+        }
+    }
+
+    /**
+     * @brief the action to be performed (callback) when a tag is read in the
+     * XML file
+     */
+    class TagAction {
+    protected:
+        bool activated;
+        XMLParser* parser;
+
+    public:
+        TagAction(XMLParser* parser)
+            : parser(parser)
+        {
+            activated = false;
+        }
+        virtual ~TagAction() {}
+
+        void activate() { activated = true; }
+        void deactivate() { activated = false; }
+
+        bool isActivated() { return activated; }
+
+        /**
+       * return the name of this tag (constant)
+       */
+        virtual const char* getTagName() = 0;
+        virtual void beginTag(const AttributeList& attributes) = 0;
+
+        /**
+       *
+       * @parm last must be true if this is the last chunk of text
+       */
+        virtual void text(const XMLString txt, bool last) = 0;
+        virtual void endTag() = 0;
+
+    protected:
+        /**
+       * check that the parent tag in the XML file has the indicated name
+       *
+       * when name is NULL, check that this tag has no parent in the XML file
+       *
+       * @param parentTag: the expected name of the parent tag or NULL to
+       * check that we have no parent
+       * @param n: 1 for parent, 2 for grand-parent and so on
+       */
+        void checkParentTag(const char* parentTag, int n = 1)
+        {
+            if (this->parser->getParentTagAction(n) == NULL) {
+                if (parentTag != NULL)
+                    throw runtime_error("tag has no parent but it should have one");
+                else
+                    return;
+            }
+
+            if (parentTag == NULL)
+                throw runtime_error("tag should have no parent");
+
+#ifdef debug
+            cout << "parent tag="
+                 << this->parser->getParentTagAction(n)->getTagName() << endl;
+#endif
+            if (strcmp(this->parser->getParentTagAction(n)->getTagName(),
+                    parentTag)
+                != 0)
+                throw runtime_error("wrong parent for tag");
+        }
+    };
+
+    typedef map<XMLString, TagAction*> TagActionList;
+
+    TagActionList tagList;
+
+    struct State {
+        // may we used abridged notations
+        bool abridgedListAllowed, abridgedDictAllowed,
+            abridgedVariableAllowed, abridgedIntegerAllowed;
+
+        bool subtagAllowed;
+
+        State()
+        {
+            subtagAllowed = true;
+
+            setAllAbridgedAllowed(false);
+        }
+
+        void setAllAbridgedAllowed(bool v)
+        {
+            abridgedListAllowed = abridgedDictAllowed = abridgedVariableAllowed = abridgedIntegerAllowed = v;
+        }
+    };
+
+    // the top of the following stacks is at the FRONT
+    deque<TagAction*> actionStack;
+    deque<State> stateStack;
+
+    void registerTagAction(TagActionList& tagList, TagAction* action)
+    {
+        tagList[action->getTagName()] = action;
+    }
+
+    /**
+     * a handler to silently ignore unkown tags
+     */
+    class UnknownTagAction : public TagAction {
+    public:
+        UnknownTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return ""; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            // ignore
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            // ignore
+        }
+
+        virtual void endTag()
+        {
+            // ignore
+        }
+    };
+
+    class InstanceTagAction : public TagAction {
+    public:
+        InstanceTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "instance"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<instance> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            this->parser->getCallback()->endInstance();
+        }
+    };
+
+    class PresentationTagAction : public TagAction {
+    public:
+        PresentationTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "presentation"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->parser->stateStack.front().setAllAbridgedAllowed(false);
+            this->parser->stateStack.front().subtagAllowed = false;
+
+            string name;
+
+            this->checkParentTag("instance");
+
+            if (!attributes["name"].to(name))
+                name = "?";
+
+            string type;
+            if (attributes["type"].to(type)) {
+                if (type == "CSP") {
+                    this->parser->instanceType = CSP_INSTANCE;
+                } else if (type == "WCSP") {
+                    this->parser->instanceType = WCSP_INSTANCE;
+                } else
+                    throw runtime_error("this parser doesn't have support for type "
+                        + type);
+            } else {
+                // CSP by default
+                this->parser->instanceType = CSP_INSTANCE;
+            }
+
+            this->parser->getCallback()->beginInstance(name);
+            this->parser->getCallback()->instanceType(this->parser->instanceType);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            // ignore
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class DomainsTagAction : public TagAction {
+    public:
+        DomainsTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "domains"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            int nbDomains;
+
+            this->checkParentTag("instance");
+
+            if (!attributes["nbDomains"].to(nbDomains))
+                throw runtime_error("expected attribute nbDomains for tag "
+                                    "<domains>");
+
+            this->parser->getCallback()->beginDomainsSection(nbDomains);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<domains> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            this->parser->getCallback()->endDomainsSection();
+        }
+    };
+
+    class DomainTagAction : public TagAction {
+    private:
+        XMLString dotdot;
+
+    public:
+        DomainTagAction(XMLParser* parser)
+            : TagAction(parser)
+            , dotdot("..")
+        {
+            this->parser->stateStack.front().setAllAbridgedAllowed(false);
+            this->parser->stateStack.front().subtagAllowed = false;
+        }
+
+        virtual const char* getTagName() { return "domain"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            string name;
+            int nbValues;
+
+            this->checkParentTag("domains");
+
+            if (!attributes["name"].to(name))
+                throw runtime_error("expected attribute name for tag "
+                                    "<domain>");
+
+            if (!attributes["nbValues"].to(nbValues))
+                throw runtime_error("expected attribute nbValue for tag "
+                                    "<domain>");
+
+            int idDomain = this->parser->defineSymbol(name, DomainType);
+
+            this->parser->getCallback()->beginDomain(name, idDomain, nbValues);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            typename XMLString::Tokenizer tokenizer(txt);
+
+            while (tokenizer.hasMoreTokens()) {
+                XMLString token = tokenizer.nextToken();
+
+                int pos = token.find(dotdot);
+
+                if (pos == XMLString::npos) {
+                    int val;
+                    token.to(val);
+                    this->parser->getCallback()->addDomainValue(val);
+                } else {
+                    int first, last;
+
+                    token.substr(0, pos).to(first);
+                    token.substr(pos + 2).to(last);
+
+                    this->parser->getCallback()->addDomainValue(first, last);
+                }
+            }
+        }
+
+        virtual void endTag()
+        {
+            this->parser->getCallback()->endDomain();
+        }
+    };
+
+    class VariablesTagAction : public TagAction {
+    public:
+        VariablesTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "variables"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            int nbVariables;
+
+            this->checkParentTag("instance");
+
+            if (!attributes["nbVariables"].to(nbVariables))
+                throw runtime_error("expected attribute nbVariables for tag "
+                                    "<variables>");
+
+            this->parser->getCallback()->beginVariablesSection(nbVariables);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<variables> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            this->parser->getCallback()->endVariablesSection();
+        }
+    };
+
+    class VariableTagAction : public TagAction {
+    public:
+        VariableTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "variable"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->parser->stateStack.front().setAllAbridgedAllowed(false);
+            this->parser->stateStack.front().subtagAllowed = false;
+
+            string name;
+            string domain;
+
+            this->checkParentTag("variables");
+
+            if (!attributes["name"].to(name))
+                throw runtime_error("expected attribute name for tag "
+                                    "<variable>");
+
+            if (!attributes["domain"].to(domain))
+                throw runtime_error("expected attribute domain for tag "
+                                    "<variable>");
+
+            int idVar = this->parser->defineSymbol(name, VariableType);
+            int idDomain = this->parser->getSymbolId(domain, DomainType);
+
+            this->parser->getCallback()->addVariable(name, idVar, domain, idDomain);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<variable> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class RelationsTagAction : public TagAction {
+    public:
+        RelationsTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "relations"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            int nbRelations;
+
+            this->checkParentTag("instance");
+
+            if (!attributes["nbRelations"].to(nbRelations))
+                throw runtime_error("expected attribute nbRelation for tag "
+                                    "<relations>");
+
+            this->parser->getCallback()->beginRelationsSection(nbRelations);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<relations> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            this->parser->getCallback()->endRelationsSection();
+        }
+    };
+
+    class RelationTagAction : public TagAction {
+    public:
+        RelationTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+            tuple = NULL;
+            i = 0;
+            nb = 0;
+        }
+
+        virtual ~RelationTagAction()
+        {
+            if (tuple)
+                delete[] tuple;
+        }
+
+        virtual const char* getTagName() { return "relation"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->parser->stateStack.front().setAllAbridgedAllowed(false);
+            this->parser->stateStack.front().subtagAllowed = false;
+
+            string name, semantics;
+
+            this->checkParentTag("relations");
+
+            if (!attributes["arity"].to(arity))
+                throw runtime_error("expected attribute arity for tag "
+                                    "<relation>");
+
+            if (arity <= 0)
+                throw runtime_error("arity must be >0");
+
+            if (!attributes["nbTuples"].to(nbTuples))
+                throw runtime_error("expected attribute nbTuples for tag "
+                                    "<relation>");
+
+            if (!attributes["name"].to(name))
+                throw runtime_error("expected attribute name for tag "
+                                    "<relation>");
+
+            if (!attributes["semantics"].to(semantics))
+                throw runtime_error("expected attribute semantics for tag "
+                                    "<relation>");
+
+            RelType relType;
+
+            isSoft = false;
+            defaultCost = 1;
+
+            if (semantics == "supports")
+                relType = REL_SUPPORT;
+            else if (semantics == "conflicts")
+                relType = REL_CONFLICT;
+            else if (semantics == "soft") {
+                isSoft = true;
+                relType = REL_SOFT;
+            } else
+                throw runtime_error("unknown semantics for tag <relation>");
+
+            if (isSoft) {
+                XMLString dfltCost = attributes["defaultCost"];
+
+                if (dfltCost.isNull())
+                    throw runtime_error("expected attribute defaultCost for tag "
+                                        "<relation>");
+
+                if (dfltCost == XMLString("infinity"))
+                    CostRepresentation::assignInfinity(defaultCost);
+                else
+                    dfltCost.to(defaultCost);
+            }
+
+            int idRel = this->parser->defineSymbol(name, RelationType);
+            this->parser->getCallback()->beginRelation(name, idRel,
+                arity, nbTuples, relType);
+
+            if (isSoft) {
+                this->parser->getCallback()->relationDefaultCost(name, idRel, defaultCost);
+            }
+
+            if (tuple)
+                delete[] tuple;
+
+            tuple = new int[arity];
+
+            i = 0;
+            nb = 0;
+            currentCost = defaultCost;
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            typename XMLString::Tokenizer tokenizer(txt);
+
+            tokenizer.addSeparator('|');
+            tokenizer.addSeparator(':');
+
+            while (tokenizer.hasMoreTokens()) {
+                XMLString token = tokenizer.nextToken();
+
+                //cout << "token=\"" << token << "\"" << endl;
+
+                if (token == XMLString(":")) {
+                    if (isSoft && i == 1) {
+                        // ??? FIXME: currentCost and tuple[0] may be of different types
+                        currentCost = tuple[0];
+                        i = 0;
+                    } else
+                        throw runtime_error("unexpected colon (':') in relation");
+                } else if (token == XMLString("|")) {
+                    if (i == arity)
+                        sendTuple();
+                    else
+                        throw runtime_error("unexpected pipe ('|') in relation");
+                } else {
+                    if (!token.to(tuple[i++]))
+                        throw runtime_error("failed to read integer");
+                }
+
+            } // while
+        }
+
+        virtual void endTag()
+        {
+            if (i == arity)
+                sendTuple();
+
+            if (i != 0)
+                throw runtime_error("last tuple is incomplete !");
+
+            if (nb != nbTuples)
+                throw runtime_error("effective number of tuples doesn't match the announced number");
+
+            this->parser->getCallback()->endRelation();
+        }
+
+    protected:
+        void sendTuple()
+        {
+            if (isSoft)
+                this->parser->getCallback()->addRelationTuple(arity, tuple,
+                    currentCost);
+            else
+                this->parser->getCallback()->addRelationTuple(arity, tuple);
+
+            nb++;
+            i = 0;
+        }
+
+    protected:
+        int arity;
+        int nbTuples;
+
+        /*
+       * the text() method may not get the whole text in one single call
+       * so we must be extra careful
+       */
+
+        int* tuple; // the tuple array
+        int i; // position in the tuple of the next value
+        int nb; // number of tuples read so far
+
+        bool isSoft;
+        typename CostRepresentation::Cost currentCost, defaultCost;
+    };
+
+    class PredicatesTagAction : public TagAction {
+    public:
+        PredicatesTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "predicates"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            int nbPredicates;
+
+            this->checkParentTag("instance");
+
+            if (!attributes["nbPredicates"].to(nbPredicates))
+                throw runtime_error("expected attribute nbPredicate for tag "
+                                    "<predicates>");
+
+            this->parser->getCallback()->beginPredicatesSection(nbPredicates);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<predicates> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            this->parser->getCallback()->endPredicatesSection();
+        }
+    };
+
+    class PredicateTagAction : public TagAction {
+    public:
+        PredicateTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "predicate"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            string name;
+
+            this->checkParentTag("predicates");
+
+            if (!attributes["name"].to(name))
+                throw runtime_error("expected attribute name for tag "
+                                    "<predicate>");
+
+            int idPred = this->parser->defineSymbol(name, PredicateType);
+            this->parser->getCallback()->beginPredicate(name, idPred);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+        }
+
+        virtual void endTag()
+        {
+            this->parser->getCallback()->endPredicate();
+        }
+
+        const VariableInfo* getParmInfo()
+        {
+            return &parametersInfo;
+        }
+
+    private:
+        VariableInfo parametersInfo; // information collected about the
+        // formal parameters
+
+        // this class may alter parametersInfo
+        friend class XMLParser<Callback, ASTFactory, CostRepresentation,
+            XMLString, XMLLibraryAttributeList>::ParametersTagAction;
+    };
+
+    class ParametersTagAction : public TagAction {
+    private:
+        bool formalParameters; // formal or effective parameters ?
+        int pos; // position of a parameter
+        XMLLibraryString formalparms;
+
+    public:
+        ParametersTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "parameters"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            pos = 0;
+            formalparms.clear();
+
+            const char* parentTag = this->parser->getParentTagAction()->getTagName();
+
+            if (strcmp(parentTag, "predicate") == 0) {
+                formalParameters = true;
+            } else if (strcmp(parentTag, "constraint") == 0) {
+                formalParameters = false;
+            } else
+                throw runtime_error("unexpected <parameters> tag");
+
+            if (!formalParameters) {
+                // push a mark to denote the start of the parameters list
+                this->parser->operandStack.push_back(NULL);
+
+                this->parser->stateStack.front().setAllAbridgedAllowed(true);
+            } else {
+                this->parser->stateStack.front().subtagAllowed = false;
+            }
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (formalParameters)
+                formalparms.append(txt);
+            else if (!txt.isWhiteSpace())
+                throw runtime_error("<parameters> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            if (formalParameters)
+                parseFormalParameters(formalparms);
+            else {
+                // create a new list and gather all parameters stored on the
+                // operandStack
+
+                ASTList* args = ASTFactory::mkList();
+
+                while (!this->parser->operandStack.empty()) {
+                    AST* val = this->parser->operandStack.back();
+                    this->parser->operandStack.pop_back();
+
+                    if (val == NULL)
+                        break; // end of parameters list
+
+                    args->push_front(val);
+                }
+
+                // push the list
+                this->parser->operandStack.push_back(args);
+
+#ifdef debug
+                cout << "args=";
+                args->postfixExpression(cout);
+                cout << endl;
+#endif
+            }
+        }
+
+    private:
+        void parseFormalParameters(const XMLString txt)
+        {
+            typename XMLString::Tokenizer tokenizer(txt);
+
+            PredicateTagAction* parent = dynamic_cast<PredicateTagAction*>(this->parser
+                                                                               ->getParentTagAction());
+            if (parent == NULL)
+                throw runtime_error("internal error: couldn't get my parent or wasn't a <predicate>");
+
+            VariableInfo& parmInfo = parent->parametersInfo;
+
+            while (tokenizer.hasMoreTokens()) {
+                XMLString thetype = tokenizer.nextToken();
+
+                if (!tokenizer.hasMoreTokens())
+                    throw runtime_error("missing formal parameter name after type");
+
+                XMLString thename = tokenizer.nextToken();
+
+                string name, type;
+                thename.to(name);
+                thetype.to(type);
+
+                parmInfo[name].id = pos;
+                // ??? parmInfo[name].type=...
+
+                this->parser->getCallback()->addFormalParameter(pos, name, type);
+
+                ++pos;
+            }
+        }
+    };
+
+    class ConstraintTagAction;
+
+    class SymbTagAction : public TagAction {
+    public:
+        SymbTagAction(XMLParser* parser, NodeType symb, const char* tag)
+            : TagAction(parser)
+            , tag(tag)
+            , symb(symb)
+        {
+        }
+
+        virtual const char* getTagName() { return tag.c_str(); }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->parser->operandStack.push_back(ASTFactory::mkSymb(symb));
+
+            this->parser->stateStack.front().setAllAbridgedAllowed(false);
+            this->parser->stateStack.front().subtagAllowed = false;
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            throw runtime_error("<" + tag + "/> tag must not have any text");
+        }
+
+        virtual void endTag()
+        {
+        }
+
+    private:
+        const string tag;
+        NodeType symb;
+    };
+
+    class IntegerConstantTagAction : public TagAction {
+    public:
+        IntegerConstantTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "i"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->parser->stateStack.front().setAllAbridgedAllowed(false);
+            this->parser->stateStack.front().subtagAllowed = false;
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            int val;
+
+            if (!txt.to(val))
+                throw runtime_error("invalid integer in <i> element");
+
+            this->parser->operandStack.push_back(ASTFactory::mkInteger(val));
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class VarTagAction : public TagAction {
+    public:
+        VarTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "var"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            string name;
+
+            this->parser->stateStack.front().setAllAbridgedAllowed(false);
+            this->parser->stateStack.front().subtagAllowed = false;
+
+            if (!attributes["name"].to(name))
+                throw runtime_error("expected attribute name for tag "
+                                    "<var>");
+
+            pushVariable(name);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<var> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+        }
+
+        void pushVariable(const string& name)
+        {
+            int id = this->parser->getSymbolId(name, VariableType);
+
+            this->parser->operandStack.push_back(ASTFactory::mkVar(name, id));
+        }
+    };
+
+    class ListTagAction : public TagAction {
+    public:
+        ListTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "list"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            // push a mark to denote the start of the list
+            this->parser->operandStack.push_back(NULL);
+
+            this->parser->stateStack.front().setAllAbridgedAllowed(true);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<list> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            // create a new list and gather all items stored on the
+            // operandStack (but keep in mind that the
+
+            ASTList* list = ASTFactory::mkList();
+
+            while (!this->parser->operandStack.empty()) {
+                AST* val = this->parser->operandStack.back();
+                this->parser->operandStack.pop_back();
+
+                if (val == NULL)
+                    break; // end of list
+
+                list->push_front(val);
+            }
+
+            // push the list
+            this->parser->operandStack.push_back(list);
+
+#ifdef debug
+            cout << "list=";
+            list->postfixExpression(cout);
+            cout << endl;
+#endif
+        }
+    };
+
+    class DictTagAction : public TagAction {
+    public:
+        DictTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+            conventionalKeyOrder = NULL;
+        }
+
+        virtual const char* getTagName() { return "dict"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            // push a mark to denote the start of the dictionary
+            this->parser->operandStack.push_back(NULL);
+
+            this->parser->stateStack.front().setAllAbridgedAllowed(true);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<dict> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            // create a new dictionary and gather all <key,values> stored
+            // on the operandStack
+
+            ASTDict* dict = ASTFactory::mkDict();
+
+            deque<AST*>& stack = this->parser->operandStack;
+
+            // check if the keys were provided or if we should use the
+            // conventional order.
+            int nbKey = 0, nbVal = 0, base;
+            for (base = stack.size() - 1; base >= 0 && stack[base] != NULL; --base)
+                if (stack[base]->getType() == _DICTKEY)
+                    ++nbKey;
+                else
+                    ++nbVal;
+
+            if (base < 0)
+                throw runtime_error("internal error: lost dict mark");
+            else
+                ++base;
+
+            if (nbKey == 0) {
+                // use conventional order
+                if (!conventionalKeyOrder)
+                    throw runtime_error("no conventional key order defined for this dictionary");
+
+                const vector<string>& keyOrder = *conventionalKeyOrder;
+
+                unsigned int i;
+                for (i = 0; i < stack.size() - base && i < keyOrder.size(); ++i) {
+                    if (stack[base + i]->getType() != SYMB_NIL)
+                        dict->setArg(keyOrder[i], stack[base + i]);
+                    else {
+                        // delete the <nil> objects
+                        delete stack[base + i];
+                    }
+                }
+
+                if (i != keyOrder.size())
+                    throw runtime_error("not enough values in dictionary defined with conventional order");
+
+                assert(stack[base - 1] == NULL);
+                stack.resize(base - 1); // pop values from the stack
+            } else {
+                while (!this->parser->operandStack.empty()) {
+                    AST* val = this->parser->operandStack.back();
+                    this->parser->operandStack.pop_back();
+
+                    if (val == NULL)
+                        break; // end of dictionary
+
+                    if (this->parser->operandStack.empty())
+                        throw runtime_error("internal error");
+
+                    ASTDictKey* key = dynamic_cast<ASTDictKey*>(this->parser->operandStack.back());
+
+                    this->parser->operandStack.pop_back();
+
+                    if (key == NULL)
+                        throw runtime_error("missing key in dictionary");
+
+                    dict->setArg(key->getKey(), val);
+                    delete key;
+                }
+            }
+            // push the dictionary
+            stack.push_back(dict);
+
+#ifdef debug
+            cout << "dict=";
+            dict->postfixExpression(cout);
+            cout << endl;
+//this->parser->dumpOperandStack();
+#endif
+        }
+
+        void setConventionalKeyOrder(const vector<string>* order = NULL)
+        {
+            conventionalKeyOrder = order;
+        }
+
+    private:
+        const vector<string>* conventionalKeyOrder;
+    };
+
+    class DictEntryTagAction : public TagAction {
+    public:
+        DictEntryTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "entry"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            string key;
+
+            if (!attributes["key"].to(key))
+                throw runtime_error("expected attribute key for tag "
+                                    "<entry>");
+
+            this->parser->operandStack.push_back(new ASTDictKey(key));
+
+            this->parser->stateStack.front().setAllAbridgedAllowed(true);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<entry> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class ExpressionTagAction : public TagAction {
+    private:
+        bool inPredicateDefinition;
+
+    public:
+        ExpressionTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "expression"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            const char* parentTag = this->parser->getParentTagAction()->getTagName();
+
+            if (strcmp(parentTag, "predicate") == 0) {
+                inPredicateDefinition = true;
+            } else if (strcmp(parentTag, "constraint") == 0) {
+                inPredicateDefinition = false;
+            } else
+                throw runtime_error("unexpected <expression> tag");
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<expression> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+        }
+
+        bool isPredicateDefinition() { return inPredicateDefinition; }
+    };
+
+    class FunctionalTagAction : public TagAction {
+    public:
+        FunctionalTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "functional"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->checkParentTag("expression");
+            expr.clear();
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            // gather all chunks together
+            txt.appendTo(expr);
+        }
+
+        virtual void endTag()
+        {
+            ExpressionTagAction* parentExpressionTag = dynamic_cast<ExpressionTagAction*>(this->parser->getParentTagAction(1));
+            if (parentExpressionTag == NULL)
+                throw runtime_error("internal error: couldn't get my parent or wasn't an <expression>");
+
+            bool predicateDefinition = parentExpressionTag->isPredicateDefinition();
+
+            if (predicateDefinition) {
+                PredicateTagAction* parentPredicateTag = dynamic_cast<PredicateTagAction*>(this->parser
+                                                                                               ->getParentTagAction(2));
+                if (parentPredicateTag == NULL)
+                    throw runtime_error("internal error: couldn't get my parent or wasn't a <predicate>");
+
+                this->parser->exprParser.setVarInfo(parentPredicateTag->getParmInfo());
+
+                AST* tree = this->parser->exprParser.prefixParser(expr);
+
+                this->parser->exprParser.unsetVarInfo();
+
+                this->parser->xmitExpressionToSolver(tree);
+            } else
+                throw runtime_error("expressions not yet suported as effective parameters"); // ???
+        }
+
+    private:
+        string expr;
+    };
+
+    class InfixTagAction : public TagAction {
+    public:
+        InfixTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "infix"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->checkParentTag("expression");
+            expr.clear();
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            // gather all chunks together
+            txt.appendTo(expr);
+        }
+
+        virtual void endTag()
+        {
+
+            cout << "WARNING: ignoring infix expression: " << expr << endl;
+            return; // ??? currently unsupported
+
+            ExpressionTagAction* parentExpressionTag = dynamic_cast<ExpressionTagAction*>(this->parser
+                                                                                              ->getParentTagAction(1));
+            if (parentExpressionTag == NULL)
+                throw runtime_error("internal error: couldn't get my parent or wasn't an <expression>");
+
+            bool predicateDefinition = parentExpressionTag->isPredicateDefinition();
+
+            if (predicateDefinition) {
+                PredicateTagAction* parentPredicateTag = dynamic_cast<PredicateTagAction*>(this->parser
+                                                                                               ->getParentTagAction(2));
+                if (parentPredicateTag == NULL)
+                    throw runtime_error("internal error: couldn't get my parent or wasn't a <predicate>");
+
+                this->parser->exprParser.setVarInfo(parentPredicateTag->getParmInfo());
+
+                AST* tree = this->parser->exprParser.infixParser(expr);
+
+                this->parser->exprParser.unsetVarInfo();
+
+                ostringstream tmp;
+
+                // prefix
+                tree->expression(tmp);
+                this->parser->getCallback()->predicateExpression(tmp.str());
+
+                delete tree;
+            } else
+                throw runtime_error("expressions not yet supported as effective parameters"); // ???
+        }
+
+    private:
+        string expr;
+    };
+
+    class PostfixTagAction : public TagAction {
+    public:
+        PostfixTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "postfix"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->checkParentTag("expression");
+            expr.clear();
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            // gather all chunks together
+            txt.appendTo(expr);
+        }
+
+        virtual void endTag()
+        {
+            cout << "WARNING: ignoring postfix expression: " << expr << endl;
+            return; // ??? currently unsupported
+
+            ExpressionTagAction* parentExpressionTag = dynamic_cast<ExpressionTagAction*>(this->parser
+                                                                                              ->getParentTagAction(1));
+            if (parentExpressionTag == NULL)
+                throw runtime_error("internal error: couldn't get my parent or wasn't an <expression>");
+
+            bool predicateDefinition = parentExpressionTag->isPredicateDefinition();
+
+            if (predicateDefinition) {
+                PredicateTagAction* parentPredicateTag = dynamic_cast<PredicateTagAction*>(this->parser
+                                                                                               ->getParentTagAction(2));
+                if (parentPredicateTag == NULL)
+                    throw runtime_error("internal error: couldn't get my parent or wasn't a <predicate>");
+
+                this->parser->exprParser.setVarInfo(parentPredicateTag->getParmInfo());
+
+                AST* tree = this->parser->exprParser.postfixParser(expr);
+
+                this->parser->exprParser.unsetVarInfo();
+
+                ostringstream tmp;
+
+                // prefix
+                tree->expression(tmp);
+                this->parser->getCallback()->predicateExpression(tmp.str());
+
+                delete tree;
+            } else
+                throw runtime_error("expressions not yet suported as effective parameters"); // ???
+        }
+
+    private:
+        string expr;
+    };
+
+    class ConstraintsTagAction : public TagAction {
+    public:
+        ConstraintsTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "constraints"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            int nbConstraints;
+
+            this->checkParentTag("instance");
+
+            if (!attributes["nbConstraints"].to(nbConstraints))
+                throw runtime_error("expected attribute nbConstraints for tag "
+                                    "<constraints>");
+
+            this->parser->getCallback()->beginConstraintsSection(nbConstraints);
+
+            if (this->parser->instanceType == WCSP_INSTANCE) {
+                typename CostRepresentation::Cost maximalCost, initialCost;
+
+                if (!attributes["maximalCost"].to(maximalCost))
+                    throw runtime_error("attribute maximalCost is required for tag "
+                                        "<constraints> in WCSP instances");
+
+                this->parser->getCallback()->constraintsMaximalCost(maximalCost);
+
+                if (attributes["initialCost"].to(initialCost))
+                    this->parser->getCallback()->constraintsInitialCost(initialCost);
+            }
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<constraints> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            this->parser->getCallback()->endConstraintsSection();
+        }
+    };
+
+    class ConstraintTagAction : public TagAction {
+    public:
+        ConstraintTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "constraint"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            string name, reference;
+            int arity;
+
+            initialOperandStackSize = this->parser->operandStack.size();
+
+            this->checkParentTag("constraints");
+
+            if (!attributes["arity"].to(arity))
+                throw runtime_error("expected attribute arity for tag "
+                                    "<constraint>");
+
+            if (!attributes["name"].to(name))
+                throw runtime_error("expected attribute name for tag "
+                                    "<constraint>");
+
+            if (!attributes["reference"].to(reference))
+                throw runtime_error("expected attribute reference for tag "
+                                    "<constraint>");
+
+            if (reference.length() > 7 && reference.substr(0, 7) == "global:") {
+                // global constraints are case insensitive
+                for (unsigned int i = 0; i < reference.size(); ++i)
+                    reference[i] = tolower(reference[i]);
+            }
+
+            SymbolInfo info = this->parser->getSymbolInfo(reference);
+
+            // temporary way to set up conventional dict. order ???
+            if (info.convOrder)
+                this->parser->dictTagAction->setConventionalKeyOrder(info.convOrder);
+
+            XMLString scope = attributes["scope"];
+            if (scope.isNull())
+                throw runtime_error("expected attribute scope for tag "
+                                    "<constraint>");
+
+            // clear scopeList
+            scopeList.clear();
+
+            typename XMLString::Tokenizer tokenizer(scope);
+
+            while (tokenizer.hasMoreTokens()) {
+                string var;
+
+                tokenizer.nextToken().to(var);
+                int idVar = this->parser->getSymbolId(var, VariableType);
+                scopeList.push_back(ASTFactory::mkVar(var, idVar));
+
+                scopeInfo[var].id = idVar;
+                //scopeInfo[var].type=...; ???
+            }
+
+            int idConstr = this->parser->defineSymbol(name, ConstraintType);
+            this->parser->getCallback()->beginConstraint(name, idConstr, arity,
+                reference,
+                info.type,
+                info.id,
+                scopeList);
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("<constraint> tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+            if (this->parser->operandStack.size() - initialOperandStackSize == 1) {
+                ASTList* args = dynamic_cast<ASTList*>(this->parser->operandStack.back());
+
+                this->parser->operandStack.pop_back();
+
+                if (args == NULL)
+                    throw runtime_error("constraint parameters doesn't appear to be a list");
+                this->parser->getCallback()->constraintParameters(*args);
+
+                delete args;
+            } else if (this->parser->operandStack.size() == initialOperandStackSize) {
+                // no parameter given to the constraint, pass the scope list
+                this->parser->getCallback()->constraintParameters(scopeList);
+            } else
+                throw runtime_error("internal error while handling constraint parameters");
+
+            this->parser->getCallback()->endConstraint();
+
+            this->parser->dictTagAction->setConventionalKeyOrder();
+        }
+
+        const VariableInfo& getScopeInfo()
+        {
+            return scopeInfo;
+        }
+
+    private:
+        ASTList scopeList;
+        VariableInfo scopeInfo;
+        unsigned int initialOperandStackSize;
+    };
+
+    class ExtensionTagAction : public TagAction {
+    public:
+        ExtensionTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "extension"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            // ignore
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            // ignore
+        }
+
+        virtual void endTag()
+        {
+            // ignore
+        }
+    };
+
+    /*************************************************************************
+     *
+     * MathML tags
+     *
+     *************************************************************************/
+
+    class MathMLFunctionTagAction : public TagAction {
+    public:
+        MathMLFunctionTagAction(XMLParser* parser,
+            ASTAbstractFunction* ast)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() = 0;
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->checkParentTag("apply");
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            if (!txt.isWhiteSpace())
+                throw runtime_error("MathML function tag should not have meaningful text");
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class MathTagAction : public TagAction {
+    public:
+        MathTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "math"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->checkParentTag("expression");
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class ApplyTagAction : public TagAction {
+    public:
+        ApplyTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "apply"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            //this->checkParentTag("expression");
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class CITagAction : public TagAction {
+    public:
+        CITagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "ci"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            //this->checkParentTag("expression");
+
+            // ??? don't allow subtags
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class CNTagAction : public TagAction {
+    public:
+        CNTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "cn"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            //this->checkParentTag("expression");
+
+            // ??? don't allow subtags
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class TrueTagAction : public TagAction {
+    public:
+        TrueTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "true"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->parser->stateStack.front().setAllAbridgedAllowed(false);
+            this->parser->stateStack.front().subtagAllowed = false;
+
+            this->parser->operandStack.push_back(ASTFactory::mkBoolean(true));
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            throw runtime_error("<true/> tag should not contain text");
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+    class FalseTagAction : public TagAction {
+    public:
+        FalseTagAction(XMLParser* parser)
+            : TagAction(parser)
+        {
+        }
+
+        virtual const char* getTagName() { return "false"; }
+
+        virtual void beginTag(const AttributeList& attributes)
+        {
+            this->parser->stateStack.front().setAllAbridgedAllowed(false);
+            this->parser->stateStack.front().subtagAllowed = false;
+
+            this->parser->operandStack.push_back(ASTFactory::mkBoolean(false));
+        }
+
+        virtual void text(const XMLString txt, bool last)
+        {
+            throw runtime_error("<false/> tag should not contain text");
+        }
+
+        virtual void endTag()
+        {
+        }
+    };
+
+public:
+    XMLParser(Callback& cb)
+    {
+        preferredSyntax = TREE;
+
+        this->cb = &cb;
+
+        unknownTagHandler = new UnknownTagAction(this);
+
+        // symbolic constants
+        registerTagAction(tagList, new SymbTagAction(this, SYMB_NIL, "nil"));
+        registerTagAction(tagList, new SymbTagAction(this, SYMB_EQ, "eq"));
+        registerTagAction(tagList, new SymbTagAction(this, SYMB_NE, "ne"));
+        registerTagAction(tagList, new SymbTagAction(this, SYMB_GE, "ge"));
+        registerTagAction(tagList, new SymbTagAction(this, SYMB_GT, "gt"));
+        registerTagAction(tagList, new SymbTagAction(this, SYMB_LE, "le"));
+        registerTagAction(tagList, new SymbTagAction(this, SYMB_LT, "lt"));
+
+        // base constructions
+        registerTagAction(tagList, varTagAction = new VarTagAction(this));
+        registerTagAction(tagList, new IntegerConstantTagAction(this));
+        registerTagAction(tagList, new ListTagAction(this));
+        registerTagAction(tagList, dictTagAction = new DictTagAction(this));
+        registerTagAction(tagList, new DictEntryTagAction(this));
+
+        registerTagAction(tagList, new InstanceTagAction(this));
+        registerTagAction(tagList, new PresentationTagAction(this));
+        registerTagAction(tagList, new DomainsTagAction(this));
+        registerTagAction(tagList, new DomainTagAction(this));
+        registerTagAction(tagList, new VariablesTagAction(this));
+        registerTagAction(tagList, new VariableTagAction(this));
+        registerTagAction(tagList, new RelationsTagAction(this));
+        registerTagAction(tagList, new RelationTagAction(this));
+        registerTagAction(tagList, new PredicatesTagAction(this));
+        registerTagAction(tagList, new PredicateTagAction(this));
+
+        registerTagAction(tagList, new ParametersTagAction(this));
+        registerTagAction(tagList, new ExpressionTagAction(this));
+
+        registerTagAction(tagList, new FunctionalTagAction(this));
+        registerTagAction(tagList, new InfixTagAction(this));
+        registerTagAction(tagList, new PostfixTagAction(this));
+
+        registerTagAction(tagList, new ConstraintsTagAction(this));
+        registerTagAction(tagList, new ConstraintTagAction(this));
+
+        registerTagAction(tagList, new ExtensionTagAction(this));
+
+        // mathml
+        //registerTagAction(tagList,new MathTagAction(this));
+        //registerTagAction(tagList,new ApplyTagAction(this));
+        //registerTagAction(tagList,new CITagAction(this));
+        //registerTagAction(tagList,new TrueTagAction(this));
+        //registerTagAction(tagList,new FalseTagAction(this));
+
+        cumulative_dictOrder.push_back("origin");
+        cumulative_dictOrder.push_back("duration");
+        cumulative_dictOrder.push_back("end");
+        cumulative_dictOrder.push_back("height");
+
+        weightedSum_dictOrder.push_back("coef");
+        weightedSum_dictOrder.push_back("var");
+    }
+
+    ~XMLParser()
+    {
+        delete unknownTagHandler;
+        for (typename TagActionList::iterator it = tagList.begin();
+             it != tagList.end(); ++it)
+            delete (*it).second;
+    }
+
+    Callback* getCallback()
+    {
+        return cb;
+    }
+
+    /**
+     * get the parent tag action that is n levels higher in the current
+     * branch of the XML parse tree
+     */
+    TagAction* getParentTagAction(int n = 1)
+    {
+        if (n < 0 || n >= (int)actionStack.size())
+            return NULL;
+
+        return actionStack[n];
+    }
+
+    /**
+     * choose the representation of an expression that the parser must
+     * use to transmit an expression to the solver
+     *
+     * @param syntax 
+     *   @arg TREE    transmit as an Abstract Syntax Tree (AST)
+     *   @arg PREFIX  transmit as a string (prefix notation)
+     *   @arg INFIX_C transmit as a string (C infix notation)
+     *   @arg POSTFIX transmit as a string (postfix notation)
+     *   @arg MATHML  transmit as a string (MathML expression) 
+     *
+     */
+    void setPreferredExpressionRepresentation(Syntax syntax)
+    {
+        preferredSyntax = syntax;
+    }
+
+    /**
+     * callbacks from the XML parser
+     */
+    void startDocument()
+    {
+        clearStacks();
+        symbolDict.clear();
+
+        // register global constraints
+        symbolDict["global:alldifferent"] = SymbolInfo(0, GlobalConstraintType);
+        symbolDict["global:cumulative"] = SymbolInfo(4, GlobalConstraintType, &cumulative_dictOrder);
+        symbolDict["global:weightedsum"] = SymbolInfo(5, GlobalConstraintType, &weightedSum_dictOrder);
+        symbolDict["global:element"] = SymbolInfo(6, GlobalConstraintType);
+
+        for (int i = 0; i < UndefinedType; ++i)
+            nextId[i] = 0;
+    }
+
+    void endDocument()
+    {
+    }
+
+    void startElement(XMLString name, const AttributeList& attributes)
+    {
+        // consume the last tokens before we switch to the next element
+        if (!textLeft.empty()) {
+            handleAbridgedNotation(textLeft, true);
+            textLeft.clear();
+        }
+
+        if (!stateStack.empty() && !stateStack.front().subtagAllowed)
+            throw runtime_error("this element must not contain any element");
+
+        typename TagActionList::iterator iAction = tagList.find(name);
+        TagAction* action;
+
+        if (iAction != tagList.end()) {
+            action = (*iAction).second;
+
+            // ???
+            //if (!action->isActivated())
+            //  throw runtime_error("unexpected tag");
+        } else {
+            // add a handler to ignore the text and end element
+            action = unknownTagHandler;
+
+            cerr << "WARNING: unknown tag <" << name
+                 << "> will be ignored"
+                 << endl;
+        }
+
+        stateStack.push_front(State());
+        actionStack.push_front(action);
+        action->beginTag(attributes);
+    }
+
+    void endElement(XMLString name)
+    {
+        // consume the last tokens
+        if (!textLeft.empty()) {
+            handleAbridgedNotation(textLeft, true);
+            textLeft.clear();
+        }
+
+        typename TagActionList::iterator iAction = tagList.find(name);
+
+        if (iAction != tagList.end())
+            (*iAction).second->endTag();
+
+        actionStack.pop_front();
+        stateStack.pop_front();
+    }
+
+    void characters(XMLString chars)
+    {
+        //cout << "chars=" << chars << "#" << endl;
+
+        if (actionStack.empty()) {
+            if (chars.isWhiteSpace())
+                return;
+            else
+                throw runtime_error("Text found outside any tag");
+        }
+
+        if (!textLeft.empty()) {
+            // break at first space, concatenate with textLeft and call
+            // text()
+            typename XMLString::iterator it = chars.begin(), end = chars.end();
+
+            while (it != end && !it.isWhiteSpace()) {
+                textLeft.append(*it);
+                ++it;
+            }
+
+            while (it != end && it.isWhiteSpace()) {
+                textLeft.append(*it);
+                ++it;
+            }
+
+            handleAbridgedNotation(textLeft, false);
+            textLeft.clear();
+
+            chars = chars.substr(it, chars.end());
+        }
+
+        // break after last space, call text() with the first part and
+        // store the last part in textLeft
+
+        typename XMLString::iterator it, brk;
+
+        brk = chars.end();
+        while (brk != chars.begin()) {
+            --brk;
+            if (brk.isWhiteSpace()) {
+                ++brk;
+                break;
+            }
+        }
+
+        for (it = brk; it != chars.end(); ++it)
+            textLeft.append(*it);
+
+        chars = chars.substr(chars.begin(), brk);
+
+        if (!chars.empty())
+            handleAbridgedNotation(chars, false);
+    }
+
+    void handleAbridgedNotation(XMLString chars, bool lastChunk)
+    {
+        typename XMLString::iterator it, beg, end;
+
+        it = chars.begin();
+        beg = chars.begin();
+        end = chars.end();
+
+        while (it != end) {
+            // skip spaces
+            while (it != end && it.isWhiteSpace())
+                ++it;
+
+            if (it == end)
+                break;
+
+            // does it look like a special token?
+            int c = *it;
+            switch (c) {
+            case '[':
+                //cout << "got [" << endl;
+                if (stateStack.front().abridgedListAllowed) {
+                    if (beg != it)
+                        actionStack.front()->text(chars.substr(beg, it), true);
+
+                    stateStack.push_front(State());
+                    actionStack.push_front(tagList["list"]);
+                    actionStack.front()->beginTag(AttributeList());
+                    ++it;
+                    beg = it;
+                    continue;
+                }
+                break;
+            case ']':
+                //cout << "got ]" << endl;
+                if (stateStack.front().abridgedListAllowed) {
+                    if (beg != it)
+                        actionStack.front()->text(chars.substr(beg, it), true);
+
+                    actionStack.front()->endTag();
+                    actionStack.pop_front();
+                    stateStack.pop_front();
+                    ++it;
+                    beg = it;
+                    continue;
+                }
+                break;
+
+            case '{':
+                //cout << "got {" << endl;
+                if (stateStack.front().abridgedDictAllowed) {
+                    if (beg != it)
+                        actionStack.front()->text(chars.substr(beg, it), true);
+
+                    stateStack.push_front(State());
+                    actionStack.push_front(tagList["dict"]);
+                    actionStack.front()->beginTag(AttributeList());
+                    ++it;
+                    beg = it;
+                    continue;
+                }
+                break;
+            case '}':
+                //cout << "got }" << endl;
+                if (stateStack.front().abridgedDictAllowed) {
+                    if (beg != it)
+                        actionStack.front()->text(chars.substr(beg, it), true);
+
+                    actionStack.front()->endTag();
+                    actionStack.pop_front();
+                    stateStack.pop_front();
+                    ++it;
+                    beg = it;
+                    continue;
+                }
+                break;
+
+            case '/':
+                //cout << "got /" << endl;
+                if (stateStack.front().abridgedDictAllowed) {
+                    if (beg != it)
+                        actionStack.front()->text(chars.substr(beg, it), true);
+
+                    typename XMLString::iterator begKey, endKey;
+
+                    ++it;
+                    begKey = it;
+                    endKey = it;
+                    while (endKey != end && isalpha(*endKey))
+                        ++endKey;
+
+                    string key;
+
+                    chars.substr(begKey, endKey).to(key);
+
+                    operandStack.push_back(new ASTDictKey(key));
+
+                    it = endKey;
+                    beg = endKey;
+                    continue;
+                }
+                break;
+
+            default:
+                if (stateStack.front().abridgedVariableAllowed && (c == '_' || isalpha(c))) {
+                    typename XMLString::iterator endVar = it;
+                    ++endVar;
+                    while (endVar != end && (isdigit(*endVar) || isalpha(*endVar) || *endVar == '_'))
+                        ++endVar;
+
+                    if (beg != it)
+                        actionStack.front()->text(chars.substr(beg, it), true);
+
+                    string name;
+                    chars.substr(it, endVar).to(name);
+                    varTagAction->pushVariable(name);
+
+                    it = endVar;
+                    beg = it;
+                    continue;
+                } else if (stateStack.front().abridgedIntegerAllowed && (isdigit(c) || c == '+' || c == '-')) {
+                    typename XMLString::iterator endNum = it;
+                    ++endNum;
+                    while (endNum != end && isdigit(*endNum))
+                        ++endNum;
+
+                    // ??? test for . (real) and .. (interval)
+
+                    if (beg != it)
+                        actionStack.front()->text(chars.substr(beg, it), true);
+
+                    stateStack.push_front(State());
+                    actionStack.push_front(tagList["i"]);
+                    actionStack.front()->beginTag(AttributeList());
+                    actionStack.front()->text(chars.substr(it, endNum), true);
+                    actionStack.front()->endTag();
+                    actionStack.pop_front();
+                    stateStack.pop_front();
+                    it = endNum;
+                    beg = it;
+                    continue;
+                }
+                break;
+            }
+
+            // no special token
+            while (it != end && !it.isWhiteSpace())
+                ++it;
+        }
+
+        if (beg != end)
+            actionStack.front()->text(chars.substr(beg, end), lastChunk);
+    }
+
+protected:
+    void clearStacks()
+    {
+        clearOperandStack();
+        stateStack.clear();
+    }
+
+    void clearOperandStack()
+    {
+        for (unsigned int i = 0; i < operandStack.size(); ++i)
+            delete operandStack[i];
+
+        operandStack.clear();
+    }
+
+    void dumpOperandStack()
+    {
+        cout << "operand stack:\n";
+
+        for (int i = 0; i < operandStack.size(); ++i) {
+            cout << "  ";
+            if (operandStack[i] == NULL)
+                cout << "NULL";
+            else
+                operandStack[i]->postfixExpression(cout);
+
+            cout << endl;
+        }
+    }
+
+protected:
+    // text which is left for the next call to characters() because it
+    // may not be a complete token
+    XMLLibraryString textLeft;
+
+    // specific actions
+    VarTagAction* varTagAction;
+    DictTagAction* dictTagAction;
+    TagAction* unknownTagHandler; // handler to help ignore all unknown tags
+
+    // stack of operands to construct list, dictionaries, predicate
+    // parameters and so on
+    deque<AST*> operandStack;
+
+    // ??? temporary solution
+    // conventional order for some global constraints
+    vector<string> cumulative_dictOrder, weightedSum_dictOrder;
+}; // class XMLParser
+
+} // namespace
+
+// Local Variables:
+// mode: C++
+// End:
+
+#endif
diff --git a/code/include/tb2/xmlcsp/XMLParser_constants.h b/code/include/tb2/xmlcsp/XMLParser_constants.h
new file mode 100644
index 0000000000000000000000000000000000000000..21ee0ee6aab792f0f241f09f35b9a606684a8c63
--- /dev/null
+++ b/code/include/tb2/xmlcsp/XMLParser_constants.h
@@ -0,0 +1,94 @@
+/*=============================================================================
+ * parser for CSP instances represented in XML format
+ * 
+ * Copyright (c) 2008 Olivier ROUSSEL (olivier.roussel <at> cril.univ-artois.fr)
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *=============================================================================
+ */
+#ifndef _XMLParser_constants_h_
+#define _XMLParser_constants_h_
+
+/*
+ * declarations shared by C and C++
+ */
+
+/* different types of instance */
+typedef enum { CSP_INSTANCE,
+    WCSP_INSTANCE,
+    QCSP_INSTANCE } InstanceType;
+
+/* different definitions of relations */
+typedef enum { REL_CONFLICT,
+    REL_SUPPORT,
+    REL_SOFT } RelType;
+
+/* different ways to represent an expression */
+typedef enum { TREE,
+    PREFIX,
+    INFIX_C,
+    POSTFIX,
+    MATHML } Syntax;
+
+/* different type of nodes in an AST (abstract syntax tree) */
+typedef enum {
+    VAR,
+    /* constants */
+    CST_BOOL,
+    CST_INT,
+    /* data structures */
+    LIST,
+    DICT,
+    /* operators */
+    F_NEG,
+    F_ABS,
+    F_ADD,
+    F_SUB,
+    F_MUL,
+    F_DIV,
+    F_MOD,
+    F_POW,
+    F_IF,
+    F_MIN,
+    F_MAX,
+    F_EQ,
+    F_NE,
+    F_GE,
+    F_GT,
+    F_LE,
+    F_LT,
+    F_NOT,
+    F_AND,
+    F_OR,
+    F_XOR,
+    F_IFF,
+    /* symbolic constants */
+    SYMB_NIL,
+    SYMB_EQ,
+    SYMB_NE,
+    SYMB_GE,
+    SYMB_GT,
+    SYMB_LE,
+    SYMB_LT,
+
+    /* for internal use by the parser */
+    _DICTKEY
+} NodeType;
+
+#endif
diff --git a/code/include/tb2/xmlcsp/XMLParser_libxml2.hh b/code/include/tb2/xmlcsp/XMLParser_libxml2.hh
new file mode 100644
index 0000000000000000000000000000000000000000..5c41d3994b4583275e3584b4b708e577e08e0568
--- /dev/null
+++ b/code/include/tb2/xmlcsp/XMLParser_libxml2.hh
@@ -0,0 +1,841 @@
+/*=============================================================================
+ * parser for CSP instances represented in XML format
+ * 
+ * Copyright (c) 2008 Olivier ROUSSEL (olivier.roussel <at> cril.univ-artois.fr)
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *=============================================================================
+ */
+#ifndef _XMLParser_libxml2_h_
+#define _XMLParser_libxml2_h_
+
+#include <iostream>
+#include <stdexcept>
+#include <cerrno>
+#include <climits>
+#include <libxml/parser.h>
+
+#include "XMLParser.hh"
+
+namespace CSPXMLParser {
+using namespace std;
+
+/**
+   * A class to represent a UTF8 encoded string passed by the XML
+   * parser. This string is normally read-only and the memory is not
+   * owned by this class. The end of the string is represented
+   * either by the first NUL character, or by an end pointer
+   * (whichever comes first). The end pointer is used to represent
+   * substring without having to copy the substring.
+   *
+   * The append() method provides a limited interface to a writeable
+   * string. When this method is used, memory is allocated (and owned
+   * by this class) and is automatically resized when necessary. This
+   * is a kind of copy-on-write mechanism.
+   *
+   * This class can also represent a null string (in the SQL sense).
+   */
+class UTF8String {
+public:
+    typedef unsigned char Byte;
+
+    static const int npos = INT_MAX;
+
+    UTF8String()
+    {
+        _beg = _end = NULL;
+        allocated = 0;
+    }
+
+    UTF8String(const UTF8String& s)
+    {
+        _beg = s._beg;
+        _end = s._end;
+        allocated = 0;
+    }
+
+    UTF8String(const Byte* b, const Byte* e)
+    {
+        _beg = b;
+        _end = e;
+        allocated = 0;
+    }
+
+    // nul terminated string
+    UTF8String(const Byte* s)
+    {
+        _beg = s;
+        _end = NULL;
+        allocated = 0;
+    }
+
+    // nul terminated string
+    UTF8String(const char* s)
+    {
+        _beg = reinterpret_cast<const Byte*>(s);
+        _end = NULL;
+        allocated = 0;
+    }
+
+    ~UTF8String()
+    {
+        if (allocated)
+            delete[] _beg;
+    }
+
+    bool isNull() const { return _beg == NULL; }
+
+    bool empty() const { return _beg == _end || (_beg && *_beg == 0); }
+
+    int byteLength() const
+    {
+        if (!_end && _beg) {
+            // identify the end of the string
+            _end = _beg;
+            while (*_end)
+                ++_end;
+        }
+
+        return _end - _beg;
+    }
+
+    void clear()
+    {
+        _end = _beg;
+    }
+
+    /**
+     * an iterator on characters
+     */
+    class iterator {
+    private:
+        const Byte* p;
+
+    public:
+        iterator() { p = NULL; }
+
+        explicit iterator(const Byte* s) { p = s; }
+
+        int operator*()
+        {
+            int ch = *p;
+
+            switch (codeLength(ch)) {
+            case 1:
+                return ch;
+            case 2:
+                ch &= 0x1F;
+                addNextByte(ch);
+                return ch;
+            case 3:
+                if ((ch == 0xE0 && p[1] < 0xA0)
+                    || (ch == 0xED && p[1] > 0x9F))
+                    throw runtime_error("invalid UTF8 character");
+
+                ch &= 0x0F;
+                addNextByte(ch);
+                addNextByte(ch);
+                return ch;
+            case 4:
+                if ((ch == 0xF0 && p[1] < 0x90)
+                    || (ch == 0xF4 && p[1] > 0x8F))
+                    throw runtime_error("invalid UTF8 character");
+
+                ch &= 0x07;
+                addNextByte(ch);
+                addNextByte(ch);
+                addNextByte(ch);
+                return ch;
+            default:
+                throw runtime_error("internal bug");
+            }
+        }
+
+        iterator& operator++() // prefix
+        {
+            p += codeLength(*p);
+            return *this;
+        }
+
+        iterator operator++(int) // postfix
+        {
+            iterator tmp = *this;
+            p += codeLength(*p);
+            return tmp;
+        }
+
+        iterator& operator--() // prefix
+        {
+            const Byte* q = p;
+
+            do {
+                --p;
+            } while ((*p & 0xC0) == 0x80);
+
+            if (p + codeLength(*p) != q)
+                throw runtime_error("invalid UTF8 sequence");
+
+            return *this;
+        }
+
+        iterator operator--(int) // postfix
+        {
+            iterator tmp = *this;
+            --(*this);
+            return tmp;
+        }
+
+        iterator& operator=(iterator it)
+        {
+            p = it.p;
+            return *this;
+        }
+
+        bool operator!=(iterator it)
+        {
+            return p != it.p;
+        }
+
+        bool operator==(iterator it)
+        {
+            return p == it.p;
+        }
+
+        inline bool isWhiteSpace() const
+        {
+            return *p < 128 && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t'
+                                   || *p == '\v' || *p == '\f');
+        }
+
+        const Byte* getPointer() const { return p; }
+
+        Byte firstByte() const { return *p; }
+
+    protected:
+        /**
+       * return the number of bytes of the current code point
+       */
+        inline int codeLength(int ch)
+        {
+            if (ch < 0x80)
+                return 1; // only one byte
+            else if (ch < 0xC2)
+                throw runtime_error("invalid UTF8 character");
+            else if (ch < 0xD0)
+                return 2; // 2 bytes
+            else if (ch < 0xF0)
+                return 3; // 3 bytes
+            else if (ch < 0xF5)
+                return 4; // 4 bytes
+            else
+                throw runtime_error("invalid UTF8 character");
+        }
+
+        inline void addNextByte(int& ch)
+        {
+            ch <<= 6;
+            ++p;
+            if (*p < 0x80 || *p >= 0xC0)
+                throw runtime_error("invalid UTF8 character");
+            ch |= *p & 0x3F;
+        }
+    };
+
+    iterator begin() const { return iterator(_beg); }
+    iterator end() const
+    {
+        if (!_end && _beg) {
+            // identify the end of the string
+            _end = _beg;
+            while (*_end)
+                ++_end;
+        }
+        return iterator(_end);
+    }
+
+    void append(int ch)
+    {
+        if (_end + 4 > _beg + allocated)
+            resize();
+
+        // when it's allocated, it's writeable
+        Byte* p = const_cast<Byte*>(_end);
+        write(p, ch);
+        _end = p;
+    }
+
+    void append(UTF8String s)
+    {
+        for (iterator it = s.begin(); it != s.end() && *it; ++it)
+            append(*it);
+    }
+
+    /**
+     * returns true iff the string contains only white space
+     */
+    bool isWhiteSpace() const
+    {
+        iterator it(_beg), end(_end);
+
+        while (it != end && it.isWhiteSpace())
+            ++it;
+
+        return it == end || it.firstByte() == 0;
+    }
+
+    int firstChar() const
+    {
+        return *iterator(_beg);
+    }
+
+    // return the position of sub in this string or npos if not found
+    int find(UTF8String sub) const
+    {
+        int pos = 0;
+        int firstChar = sub.firstChar();
+
+        for (iterator it(_beg), end(_end); it != end && it.firstByte(); ++it) {
+            if (*it != firstChar)
+                ++pos;
+            else {
+                // try to find a match
+                iterator itSub(sub._beg), endSub(sub._end), it2(it);
+
+                ++itSub;
+                ++it2;
+
+                while (it2 != end && it2.firstByte() && itSub != endSub && itSub.firstByte() && *it2 == *itSub) {
+                    ++it;
+                    ++itSub;
+                }
+
+                if (itSub == endSub || itSub.firstByte() == 0)
+                    return pos; // found it
+
+                if (it2 == end || it2.firstByte() == 0)
+                    return npos; // can't find it any more
+            }
+        }
+
+        return npos; // not found
+    }
+
+    UTF8String substr(int pos, int count = npos)
+    {
+        const Byte* beg;
+        iterator it(_beg), end(_end);
+
+        for (int i = 0; i < pos && it != end && it.firstByte(); ++i)
+            ++it;
+
+        beg = it.getPointer();
+
+        for (int i = 0; i < count && it != end && it.firstByte(); ++i)
+            ++it;
+
+        return UTF8String(beg, it.getPointer());
+    }
+
+    UTF8String substr(iterator beg, iterator end)
+    {
+        return UTF8String(beg.getPointer(), end.getPointer());
+    }
+
+    bool operator==(const UTF8String s) const
+    {
+        const Byte *p = _beg, *q = s._beg;
+
+        while (p != _end && q != s._end && *p && *q && *p == *q) {
+            ++p;
+            ++q;
+        }
+
+        return (*p == 0 || p == _end) && (*q == 0 || q == s._end);
+    }
+
+    bool operator!=(const UTF8String s) const
+    {
+        return !operator==(s);
+    }
+
+    bool operator<(const UTF8String s) const
+    {
+        const Byte *p = _beg, *q = s._beg;
+
+        while (p != _end && q != s._end && *p && *q && *p == *q) {
+            ++p;
+            ++q;
+        }
+
+        return (q != s._end && *q != 0) && ((p == _end || *p == 0) || *p < *q);
+    }
+
+    /**
+     * returns true iff value was successfully transfered in the variable
+     */
+    template <typename T>
+    bool to(T& v) const
+    {
+        throw runtime_error("don't know how to convert to this type");
+    }
+
+    void appendTo(string& v) const
+    {
+        // fill v with the UTF8 encoding
+
+        for (const Byte* p = _beg; p != _end && *p; ++p)
+            v += *p;
+    }
+
+    friend ostream& operator<<(ostream& f, const UTF8String s);
+
+    class Tokenizer {
+    private:
+        iterator it, end;
+        vector<int> separators;
+
+    public:
+        Tokenizer(const UTF8String s)
+            : it(s._beg)
+            , end(s._end)
+        {
+            skipWhiteSpace();
+        }
+
+        /**
+       * Character ch will be returned as one token
+       */
+        void addSeparator(int ch)
+        {
+            separators.push_back(ch);
+        }
+
+        bool hasMoreTokens()
+        {
+            return it != end && *it;
+        }
+
+        UTF8String nextToken()
+        {
+            const Byte *b = it.getPointer(), *e;
+
+            if (it == end || it.firstByte() == 0)
+                return UTF8String();
+
+            if (isSeparator(*it))
+                ++it;
+            else
+                while (it != end && *it && !it.isWhiteSpace() && !isSeparator(*it))
+                    ++it;
+
+            e = it.getPointer();
+
+            skipWhiteSpace();
+
+            return UTF8String(b, e);
+        }
+
+    protected:
+        inline bool isSeparator(int ch)
+        {
+            for (vector<int>::const_iterator it = separators.begin();
+                 it != separators.end(); ++it)
+                if (*it == ch)
+                    return true;
+
+            return false;
+        }
+
+        inline void skipWhiteSpace()
+        {
+            while (it != end && *it && it.isWhiteSpace())
+                ++it;
+        }
+    };
+
+protected:
+    void resize()
+    {
+        if (allocated) {
+            const Byte* q;
+            Byte *tmp, *p;
+
+            tmp = new Byte[2 * allocated];
+
+            for (p = tmp, q = _beg; q != _end; ++p, ++q)
+                *p = *q;
+
+            delete[] _beg;
+            _beg = tmp;
+            _end = p;
+            allocated *= 2;
+        } else {
+            allocated = 64;
+            _beg = _end = new Byte[allocated];
+        }
+    }
+
+    void write(Byte*& p, int ch)
+    {
+        if (ch < 0x80)
+            *p++ = ch;
+        else if (ch < 0x800) {
+            *p++ = 0xC0 | (ch >> 6);
+            *p++ = 0x80 | (ch & 0x3F);
+        } else if (ch < 0x10000) {
+            if (ch >= 0xD800 && ch <= 0xDFFF)
+                throw runtime_error("invalid UTF8 character");
+
+            *p++ = 0xE0 | (ch >> 12);
+            *p++ = 0x80 | ((ch >> 6) & 0x3F);
+            *p++ = 0x80 | (ch & 0x3F);
+        } else if (ch < 0x110000) {
+            *p++ = 0xF0 | (ch >> 18);
+            *p++ = 0x80 | ((ch >> 12) & 0x3F);
+            *p++ = 0x80 | ((ch >> 6) & 0x3F);
+            *p++ = 0x80 | (ch & 0x3F);
+        } else
+            throw runtime_error("invalid UTF8 character");
+    }
+
+protected:
+    const Byte* _beg;
+    mutable const Byte* _end;
+    int allocated; // size of allocated array (or 0 if don't own the memory)
+};
+
+ostream& operator<<(ostream& f, const UTF8String s)
+{
+    // directly output UTF8
+    f.write(reinterpret_cast<const char*>(s._beg), s.byteLength());
+    return f;
+}
+
+template <>
+bool UTF8String::to<string>(string& v) const
+{
+    // fill v with the UTF8 encoding
+    v.clear();
+
+    for (const Byte* p = _beg; p != _end && *p; ++p)
+        v += *p;
+
+    return true;
+}
+
+template <>
+bool UTF8String::to<int>(int& v) const
+{
+    iterator it(_beg), end(_end);
+    bool neg = false;
+
+    while (it != end && it.isWhiteSpace())
+        ++it;
+
+    if (it == end || it.firstByte() == 0) // end of string?
+        return false;
+
+    if (*it == '+')
+        ++it;
+    else if (*it == '-') {
+        ++it;
+        neg = true;
+    }
+
+    v = 0;
+    while (it != end && *it >= '0' && *it <= '9') {
+        //??? #warning "must check for overflows"
+        v = v * 10 + (*it - '0');
+        ++it;
+    }
+
+    if (neg)
+        v = -v;
+
+    while (it != end && it.isWhiteSpace())
+        ++it;
+
+    return it == end || it.firstByte() == 0;
+}
+
+class AttributeValue {
+protected:
+    bool exists;
+    const UTF8String val;
+
+public:
+    typedef unsigned char Byte;
+
+    AttributeValue()
+    {
+        exists = false;
+    }
+
+    AttributeValue(const Byte* v)
+        : val(v)
+    {
+        exists = true;
+    }
+
+    operator const UTF8String()
+    {
+        return val;
+    }
+
+    template <typename T>
+    bool to(T& v)
+    {
+        if (exists)
+            return val.to(v);
+        else
+            return false;
+    }
+};
+
+/**
+   * represents the attribute list of a XML tag
+   */
+class AttributeList {
+public:
+    typedef unsigned char Byte;
+
+    /**
+     * an empty list of attributes
+     */
+    AttributeList()
+    {
+        n = 0;
+        list = NULL;
+    }
+
+    AttributeList(const Byte** attr)
+    {
+        list = attr;
+
+        n = 0;
+        if (list == NULL)
+            return;
+
+        while (list[n] != NULL)
+            n += 2;
+
+        n /= 2;
+    }
+
+    inline int size() const
+    {
+        return n;
+    }
+
+    bool exist(const char* name) const
+    {
+        for (int i = 0; i < n; ++i)
+            if (xmlStrEqual(list[2 * i], reinterpret_cast<const Byte*>(name)))
+                return true;
+
+        return false;
+    }
+
+    AttributeValue operator[](const char* name) const
+    {
+        for (int i = 0; i < n; ++i)
+            if (xmlStrEqual(list[2 * i], reinterpret_cast<const Byte*>(name)))
+                return AttributeValue(list[2 * i + 1]);
+
+        return AttributeValue();
+    }
+
+    inline UTF8String getName(int i) const
+    {
+        return UTF8String(list[2 * i]);
+    }
+
+    inline AttributeValue getValue(int i) const
+    {
+        return AttributeValue(list[2 * i + 1]);
+    }
+
+private:
+    int n; // number of attributes
+    const Byte** list; // list[2*i] is the name of the i-th attribute,
+    // list[2*i+1] is its value
+};
+
+/**
+   * @brief the parser using the libxml2 library
+   */
+template <class Callback = CSPParserCallback,
+    class ASTFactory = DefaultASTFactory,
+    class CostRepresentation = DefaultCostRepresentation>
+class XMLParser_libxml2 {
+public:
+    XMLParser_libxml2(Callback& callback)
+        : cspParser(callback)
+    {
+        LIBXML_TEST_VERSION
+    }
+
+    int parse(istream& in)
+    {
+        /**
+       * We don't use the DOM interface because it reads the document as
+       * a whole and it is too memory consuming. The TextReader
+       * interface is better because it reads only one node at a
+       * time,but the text of a node is read as a whole and this can
+       * still be large for the definition of some
+       * relations. Therefore, we use the SAX interface.
+       *
+       * We also use the push mode to be able to read from any C++
+       * stream.
+       */
+        const char* filename = NULL; // name of the input file
+        xmlSAXHandler handler;
+        xmlParserCtxtPtr parserCtxt;
+
+        const int bufSize = 4096;
+        char* buffer = new char[bufSize];
+
+        int size;
+
+        xmlSAXVersion(&handler, 1); // use SAX1 for now ???
+
+        handler.startDocument = startDocument;
+        handler.endDocument = endDocument;
+        handler.characters = characters;
+        handler.startElement = startElement;
+        handler.endElement = endElement;
+        handler.comment = comment;
+
+        try {
+            xmlSubstituteEntitiesDefault(1);
+
+            in.read(buffer, bufSize);
+            size = in.gcount();
+
+            if (size > 0) {
+                parserCtxt = xmlCreatePushParserCtxt(&handler, &cspParser,
+                    buffer, size, filename);
+
+                while (in.good()) {
+                    in.read(buffer, bufSize);
+                    size = in.gcount();
+
+                    if (size > 0)
+                        xmlParseChunk(parserCtxt, buffer, size, 0);
+                }
+
+                xmlParseChunk(parserCtxt, buffer, 0, 1);
+
+                xmlFreeParserCtxt(parserCtxt);
+
+                xmlCleanupParser();
+            }
+        } catch (runtime_error& e) {
+            // ???
+            cout << "Exception at line " << parserCtxt->input->line << endl;
+            throw(e);
+        }
+
+        delete[] buffer;
+
+        return 0;
+    }
+
+    int parse(const char* filename)
+    {
+        ifstream in(filename);
+        return parse(in);
+    }
+
+    void setPreferredExpressionRepresentation(Syntax syntax)
+    {
+        cspParser.setPreferredExpressionRepresentation(syntax);
+    }
+
+protected:
+    typedef XMLParser<Callback, ASTFactory, CostRepresentation,
+        UTF8String, AttributeList>
+        Parser;
+
+    /*************************************************************************
+     *
+     * SAX Handler
+     *
+     *************************************************************************/
+
+    static void comment(void* parser, const xmlChar* value)
+    {
+    }
+
+    static void startDocument(void* parser)
+    {
+#ifdef debug
+        cout << "Parsing begins" << endl;
+#endif
+        static_cast<Parser*>(parser)->startDocument();
+    }
+
+    static void endDocument(void* parser)
+    {
+#ifdef debug
+        cout << "Parsing ends" << endl;
+#endif
+        static_cast<Parser*>(parser)->endDocument();
+    }
+
+    static void characters(void* parser, const xmlChar* ch, int len)
+    {
+#ifdef debug
+        cout << "    chars '" << UTF8String(ch, ch + len) << "'" << endl;
+#endif
+        static_cast<Parser*>(parser)->characters(UTF8String(ch, ch + len));
+    }
+
+    static void startElement(void* parser,
+        const xmlChar* name,
+        const xmlChar** attr)
+    {
+        AttributeList attributes(attr);
+
+#ifdef debug
+        cout << "  begin element " << UTF8String(name) << endl;
+        for (int i = 0; i < attributes.size(); ++i) {
+            cout << "    attribute " << attributes.getName(i)
+                 << " = " << attributes.getValue(i) << endl;
+        }
+#endif
+
+        static_cast<Parser*>(parser)->startElement(UTF8String(name),
+            attributes);
+    }
+
+    static void endElement(void* parser, const xmlChar* name)
+    {
+#ifdef debug
+        cout << "  end element " << UTF8String(name) << endl;
+#endif
+        static_cast<Parser*>(parser)->endElement(UTF8String(name));
+    }
+
+protected:
+    Parser cspParser;
+};
+}
+
+#endif
diff --git a/code/include/tb2/xmlcsp/xmlcsp.h b/code/include/tb2/xmlcsp/xmlcsp.h
new file mode 100644
index 0000000000000000000000000000000000000000..130c8504dbeccd485dab2c6c733503e9d4074cd5
--- /dev/null
+++ b/code/include/tb2/xmlcsp/xmlcsp.h
@@ -0,0 +1,666 @@
+
+
+#include "core/tb2wcsp.hpp"
+// We suppose that the XMLCSP library is placed in the directory
+// xmlcsp from toulbar2, so tb2wcsp.hpp is in the parent directory
+
+#include <iostream>
+#include <fstream>
+#include <list>
+#include <map>
+#include <vector>
+
+#include "XMLParser_libxml2.hh"
+
+using namespace CSPXMLParser;
+
+/*
+ * A simple demo to illustrate how to use the XML CSP parser 
+ */
+
+#define MAXDOMS 100000
+#define MAXDOMSIZE MAX_DOMAIN_SIZE
+#define MAXDOMSIZEZERO 1000
+#define MAX_COST_XML MAX_COST
+
+/**
+ * The methods of this class will be called by the XML parser to
+ * report the elements of the definition of the CSP instance to your
+ * own solver.
+ *
+ * This sample callback merely prints the data it receives. You must
+ * modify it to transmit the informations to your solver.
+ *
+ * The description of each method can be found in
+ * C++/include/CSPParserCallback.hh
+ */
+class MyCallback : public CSPParserCallback {
+public:
+    WCSP* wcsp;
+
+    bool convertWCSP;
+    string fname;
+    ofstream f;
+    bool intension;
+
+private:
+    int nvars;
+    int wcsp_nvars;
+    map<int, string> varName;
+    map<int, int> xml2wcspIndex;
+
+    typedef struct {
+        int arity;
+        int def;
+        list<int*> tuples;
+        RelType type;
+        int id;
+        int defaultCost;
+    } relation;
+
+    typedef struct {
+        int id;
+        AST* exp;
+        string expstr;
+    } predicate;
+
+    typedef struct {
+        list<int> scope;
+        int arity;
+        int type;
+        string ref;
+    } ctr;
+
+    map<string, relation*> rels;
+    map<string, predicate*> preds;
+    list<ctr*> ctrs;
+
+    int currentDom;
+    relation* currentR;
+    predicate* currentP;
+    ctr* currentC;
+    int currentIndexArity;
+
+    vector<int> nDoms;
+    vector<vector<int> > DomsToIndex;
+
+    int maxDomSize;
+
+    bool firstDomainValue;
+    bool firstTuple;
+    string constraintReference;
+
+    Cost initialLowerBound;
+
+public:
+    virtual void beginInstance(const string& name)
+    {
+        wcsp->Doms.resize(MAXDOMS);
+        nDoms.resize(MAXDOMS);
+        DomsToIndex.resize(MAXDOMS);
+
+        for (int i = 0; i < MAXDOMS; i++)
+            nDoms[i] = 0;
+        maxDomSize = 0;
+
+        wcsp->updateUb(MAX_COST_XML);
+        initialLowerBound = MIN_COST;
+        nvars = 0;
+        wcsp_nvars = wcsp->numberOfVariables();
+    }
+
+    virtual void beginDomainsSection(int nbDomains)
+    {
+    }
+
+    virtual void beginDomain(const string& name, int idDomain, int nbValue)
+    {
+        firstDomainValue = true;
+        currentDom = idDomain;
+        wcsp->Doms[currentDom].resize(nbValue);
+        DomsToIndex[currentDom].resize(MAXDOMSIZE);
+    }
+
+    virtual void addDomainValue(int v)
+    {
+        wcsp->Doms[currentDom][nDoms[currentDom]] = v;
+        DomsToIndex[currentDom][MAXDOMSIZEZERO + v] = nDoms[currentDom];
+        nDoms[currentDom]++;
+        if (!firstDomainValue)
+            firstDomainValue = false;
+    }
+
+    virtual void addDomainValue(int first, int last)
+    {
+        for (int i = first; i <= last; i++)
+            addDomainValue(i);
+    }
+
+    virtual void endDomain() {}
+    virtual void endDomainsSection() {}
+
+    virtual void beginVariablesSection(int nbVariables) {}
+
+    virtual void addVariable(const string& name, int idVar,
+        const string& domain, int idDomain)
+    {
+        int varindex = wcsp->getVarIndex(name);
+        if (varindex == wcsp->numberOfVariables()) {
+            varindex = wcsp_nvars;
+            wcsp_nvars++;
+        }
+        wcsp->varsDom[varindex] = idDomain;
+        varName[nvars] = name;
+        xml2wcspIndex[nvars] = varindex;
+        if (maxDomSize < nDoms[idDomain])
+            maxDomSize = nDoms[idDomain];
+        nvars++;
+    }
+
+    virtual void endVariablesSection() {}
+    virtual void beginRelationsSection(int nbRelations) {}
+
+    virtual void beginRelation(const string& name, int idRel,
+        int arity, int nbTuples, RelType relType)
+    {
+        relation* r = new relation;
+        r->id = idRel;
+        r->arity = arity;
+        r->type = relType;
+        r->defaultCost = 0;
+        currentR = r;
+        rels[name] = r;
+
+        switch (relType) {
+        case REL_SUPPORT:
+            break;
+        case REL_CONFLICT:
+            break;
+        case REL_SOFT:
+            break;
+        default:
+            throw runtime_error("unknown relation type");
+        }
+
+        firstTuple = true;
+    }
+
+    virtual void relationDefaultCost(const string& name, int idRel,
+        int defaultCost)
+    {
+        currentR->defaultCost = defaultCost;
+    }
+
+    virtual void addRelationTuple(int arity, int tuple[])
+    {
+        firstTuple = false;
+        int* t = new int[arity];
+        for (int i = 0; i < arity; ++i)
+            t[i] = tuple[i];
+        currentR->tuples.push_back(t);
+    }
+
+    virtual void addRelationTuple(int arity, int tuple[], int cost)
+    {
+        firstTuple = false;
+        int* t = new int[arity + 1];
+        for (int i = 0; i < arity; ++i)
+            t[i] = tuple[i];
+        t[arity] = cost;
+        currentR->tuples.push_back(t);
+    }
+
+    virtual void endRelation() {}
+    virtual void endRelationsSection() {}
+
+    virtual void beginPredicatesSection(int nbPredicates)
+    {
+        //cout << "<predicates nbPredicates='" << nbPredicates << "'>" << endl;
+    }
+
+    virtual void beginPredicate(const string& name, int idPred)
+    {
+        predicate* p = new predicate;
+        p->id = idPred;
+        p->exp = NULL;
+        preds[name] = p;
+        currentP = p;
+        intension = true;
+        cerr << "Warning!!! Predicate " << name << " not implemented, just skip it..." << endl;
+    }
+
+    virtual void addFormalParameter(int pos, const string& name,
+        const string& type)
+    {
+        //cout << "   formal parameter " << pos << ": " << type << " " << name << endl;
+    }
+
+    virtual void predicateExpression(AST* tree)
+    {
+        //cout << "   predicate definition (AST) = ";
+        //tree->prefixExpression(cout);
+        //cout << endl;
+    }
+
+    virtual void predicateExpression(const string& expr)
+    {
+        currentP->expstr = expr;
+    }
+
+    virtual void endPredicate() {}
+    virtual void endPredicatesSection() {}
+    virtual void beginConstraintsSection(int nbConstraints) {}
+
+    virtual void beginConstraint(const string& name, int idConstr,
+        int arity,
+        const string& reference,
+        CSPDefinitionType type, int id,
+        const ASTList& scope)
+    {
+        currentC = new ctr;
+        currentC->arity = arity;
+        currentC->type = type;
+        currentC->ref = reference;
+
+        for (int i = 0; i < scope.size(); i++) {
+            currentC->scope.push_back(scope[i].getVarId());
+        }
+
+        constraintReference = reference;
+    }
+
+    virtual void constraintsMaximalCost(int maximalCost)
+    {
+        wcsp->updateUb(maximalCost);
+    }
+
+    virtual void constraintsInitialCost(int initialCost)
+    {
+        initialLowerBound = initialCost;
+    }
+
+    virtual void constraintParameters(const ASTList& args)
+    {
+        if (constraintReference == "global:cumulative") {
+            const AST& tasks = args[0];
+            const AST& limit = args[1];
+            for (int i = 0; i < tasks.size(); ++i) {
+                const AST& desc = tasks[i];
+                if (desc.hasKey("origin")) {
+                    if (desc["origin"].isVar()) {
+                    } else if (desc["origin"].isInteger()) {
+                    }
+                }
+                if (desc.hasKey("duration")) {
+                    if (desc["duration"].isVar()) {
+                    } else if (desc["duration"].isInteger()) {
+                    }
+                }
+                if (desc.hasKey("end")) {
+                    if (desc["end"].isVar()) {
+                    } else if (desc["end"].isInteger()) {
+                    }
+                }
+                if (desc.hasKey("height")) {
+                    if (desc["height"].isVar()) {
+                    } else if (desc["height"].isInteger()) {
+                    }
+                }
+            }
+            if (limit.isVar()) {
+            } else if (limit.isInteger()) {
+            }
+        } else if (constraintReference == "global:element") {
+            const AST& index = args[0];
+            const AST& table = args[1];
+            const AST& value = args[2];
+
+            if (index.isVar()) {
+            } else {
+            }
+            for (int i = 0; i < table.size(); ++i) {
+                if (table[i].isVar()) {
+                } else {
+                }
+            }
+            if (value.isVar()) {
+            } else {
+            }
+        } else if (constraintReference == "global:weightedsum") {
+            /*const AST &sum=args[0];
+		const AST &op=args[1];
+		const AST &rhs=args[2];
+
+		cout << sum[0]["coef"].getInteger() 
+			 << "*" << sum[0]["var"].getVarName()
+			 << showpos;
+		for(int i=1;i<sum.size();++i)
+		  cout << sum[i]["coef"].getInteger() 
+			   << "*" << sum[i]["var"].getVarName();
+
+		cout << noshowpos;
+		op.infixExpression(cout);
+		if (rhs.isVar()) {}
+		else {}
+		*/
+        } else {
+            //cout << "constraint parameters=";
+            //args.postfixExpression(cout);
+            //cout << endl;
+        }
+    }
+
+    virtual void endConstraint()
+    {
+        ctrs.push_back(currentC);
+    }
+
+    /**
+   * end the definition of all constraints
+   */
+    virtual void endConstraintsSection()
+    {
+    }
+
+    /********************************************************************/
+
+    void createWCSP()
+    {
+        int i = 0;
+        map<int, string>::iterator it = varName.begin();
+        while (it != varName.end()) {
+            int domsize = nDoms[wcsp->varsDom[xml2wcspIndex[it->first]]];
+            string varname = it->second;
+            int varindex = wcsp->getVarIndex(varname);
+            if (ToulBar2::verbose >= 3)
+                cout << "read " << ((varindex < wcsp->numberOfVariables())?"known":"new") << " variable " << i << " of size " << domsize << endl;
+            if (varindex == wcsp->numberOfVariables()) {
+                if (domsize >= 0) {
+                    varindex = wcsp->makeEnumeratedVariable(varname, 0, domsize - 1);
+                    for (int idx = 0; idx < domsize; idx++) {
+                        int v = wcsp->Doms[wcsp->varsDom[varindex]][idx];
+                        ((EnumeratedVariable *) wcsp->getVar(varindex))->addValueName("v" + to_string(v));
+                    }
+                } else {
+                    varindex = wcsp->makeIntervalVariable(varname, 0, -domsize - 1);
+                }
+            } else {
+                if (wcsp->enumerated(varindex)) {
+                    assert(domsize >= 0);
+                    if (domsize != wcsp->getDomainInitSize(varindex)) {
+                        cerr << "wrong domain size " << domsize << " compared to previous one " << wcsp->getDomainInitSize(varindex) << endl;
+                        exit(EXIT_FAILURE);
+                    }
+                    for (int idx = 0; idx < domsize; idx++) {
+                        int v = wcsp->Doms[wcsp->varsDom[varindex]][idx];
+                        string vname = "v" + to_string(v);
+                        if (((EnumeratedVariable *) wcsp->getVar(varindex))->getValueName(idx) != vname) {
+                            cerr << "wrong domain value name " << vname << " compared to previous one " << ((EnumeratedVariable *) wcsp->getVar(varindex))->getValueName(idx) << endl;
+                            exit(EXIT_FAILURE);
+                        }
+                    }
+                } else {
+                    wcsp->increase(varindex, 0);
+                    wcsp->decrease(varindex, abs(domsize) - 1);
+                }
+            }
+            assert(varindex == xml2wcspIndex[it->first]);
+            ++it;
+            i++;
+        }
+
+        unsigned int a;
+        unsigned int b;
+        unsigned int c;
+        Cost inclowerbound = initialLowerBound;
+        vector<TemporaryUnaryConstraint> unaryconstrs;
+        int indexUnary = -1;
+
+        list<ctr*>::iterator itc = ctrs.begin();
+        while (itc != ctrs.end()) {
+            ctr* cxml = *itc;
+            int arity = cxml->arity;
+            relation* r = NULL;
+
+            if (cxml->type == RelationType) {
+                EnumeratedVariable** scopeVar = new EnumeratedVariable*[arity];
+                int* scopeIndex = new int[arity];
+                int* values = new int[arity];
+                Tuple strvalues(arity, 0);
+                map<int, int> scopeOrder;
+
+                int index = 0;
+                list<int>::iterator its = cxml->scope.begin();
+                while (its != cxml->scope.end()) {
+                    int id = xml2wcspIndex[*its];
+                    scopeOrder[id] = index;
+                    ++its;
+                    index++;
+                }
+
+                index = 0;
+                map<int, int>::iterator ito = scopeOrder.begin();
+                while (ito != scopeOrder.end()) {
+                    int id = ito->first;
+                    scopeIndex[index] = id;
+                    scopeVar[index] = (EnumeratedVariable*)wcsp->getVar(id);
+                    index++;
+                    ++ito;
+                }
+
+                map<string, relation*>::iterator it = rels.find(cxml->ref);
+                if (it != rels.end()) {
+                    r = it->second;
+                    int ntuples = r->tuples.size();
+                    Cost defval;
+
+                    if (r->type == REL_SUPPORT) {
+#ifdef MAXCSP
+                        defval = UNIT_COST;
+#else
+                        defval = MAX_COST_XML;
+#endif
+                    } else if (r->type == REL_SOFT) {
+                        defval = r->defaultCost;
+                    } else {
+                        defval = MIN_COST;
+                    }
+
+                    int ctrIndex = -1;
+                    Constraint* ctr = NULL;
+                    if (arity > 3) {
+                        ctrIndex = wcsp->postNaryConstraintBegin(scopeIndex, arity, defval, r->tuples.size());
+                        ctr = wcsp->getCtr(ctrIndex);
+                        list<int*>::iterator itl = r->tuples.begin();
+                        while (itl != r->tuples.end()) {
+                            int* t = *itl;
+                            for (int i = 0; i < r->arity; i++) {
+                                int pos = scopeOrder[scopeIndex[i]];
+                                strvalues[i] = DomsToIndex[wcsp->varsDom[scopeIndex[i]]][MAXDOMSIZEZERO + t[pos]];
+                            }
+                            if (r->type == REL_SUPPORT) {
+                                wcsp->postNaryConstraintTuple(ctrIndex, strvalues, MIN_COST);
+                            } else if (r->type == REL_CONFLICT) {
+#ifdef MAXCSP
+                                wcsp->postNaryConstraintTuple(ctrIndex, strvalues, UNIT_COST);
+#else
+                                wcsp->postNaryConstraintTuple(ctrIndex, strvalues, MAX_COST_XML);
+#endif
+                            } else if (r->type == REL_SOFT) {
+                                wcsp->postNaryConstraintTuple(ctrIndex, strvalues, t[arity]);
+                            } else {
+                                wcsp->postNaryConstraintTuple(ctrIndex, strvalues, MAX_COST_XML);
+                            }
+
+                            ++itl;
+                        }
+                        wcsp->postNaryConstraintEnd(ctrIndex);
+                    } else if (arity == 3) {
+                        int i = scopeIndex[0];
+                        int j = scopeIndex[1];
+                        int k = scopeIndex[2];
+                        EnumeratedVariable* x = scopeVar[0];
+                        EnumeratedVariable* y = scopeVar[1];
+                        EnumeratedVariable* z = scopeVar[2];
+                        if (ToulBar2::verbose >= 3)
+                            cout << "read ternary constraint "
+                                 << " on " << i << "," << j << "," << k << endl;
+                        vector<Cost> costs;
+                        for (a = 0; a < x->getDomainInitSize(); a++) {
+                            for (b = 0; b < y->getDomainInitSize(); b++) {
+                                for (c = 0; c < z->getDomainInitSize(); c++) {
+                                    costs.push_back(defval);
+                                }
+                            }
+                        }
+                        list<int*>::iterator itl = r->tuples.begin();
+                        while (itl != r->tuples.end()) {
+                            int* t = *itl;
+                            for (int i = 0; i < r->arity; i++) {
+                                int pos = scopeOrder[scopeIndex[i]];
+                                values[i] = DomsToIndex[wcsp->varsDom[scopeIndex[i]]][MAXDOMSIZEZERO + t[pos]];
+                            }
+                            int pos = values[0] * y->getDomainInitSize() * z->getDomainInitSize() + values[1] * z->getDomainInitSize() + values[2];
+                            if (r->type == REL_SUPPORT) {
+                                costs[pos] = MIN_COST;
+                            } else if (r->type == REL_CONFLICT) {
+#ifdef MAXCSP
+                                costs[pos] = UNIT_COST;
+#else
+                                costs[pos] = MAX_COST_XML;
+#endif
+                            } else if (r->type == REL_SOFT) {
+                                costs[pos] = t[arity];
+                            } else {
+                                costs[pos] = MAX_COST_XML;
+                            }
+                            ++itl;
+                        }
+                        if ((defval != MIN_COST) || (ntuples > 0))
+                            ctrIndex = wcsp->postTernaryConstraint(i, j, k, costs);
+                    } else if (arity == 2) {
+                        int i = scopeIndex[0];
+                        int j = scopeIndex[1];
+                        EnumeratedVariable* x = scopeVar[0];
+                        EnumeratedVariable* y = scopeVar[1];
+                        if (ToulBar2::verbose >= 3)
+                            cout << "read binary constraint "
+                                 << " on " << i << "," << j << endl;
+                        vector<Cost> costs;
+                        for (a = 0; a < x->getDomainInitSize(); a++) {
+                            for (b = 0; b < y->getDomainInitSize(); b++) {
+                                costs.push_back(defval);
+                            }
+                        }
+                        list<int*>::iterator itl = r->tuples.begin();
+                        while (itl != r->tuples.end()) {
+                            int* t = *itl;
+                            for (int i = 0; i < r->arity; i++) {
+                                int pos = scopeOrder[scopeIndex[i]];
+                                values[i] = DomsToIndex[wcsp->varsDom[scopeIndex[i]]][MAXDOMSIZEZERO + t[pos]];
+                            }
+                            int pos = values[0] * y->getDomainInitSize() + values[1];
+                            if (r->type == REL_SUPPORT) {
+                                costs[pos] = MIN_COST;
+                            } else if (r->type == REL_CONFLICT) {
+#ifdef MAXCSP
+                                costs[pos] = UNIT_COST;
+#else
+                                costs[pos] = MAX_COST_XML;
+#endif
+                            } else if (r->type == REL_SOFT) {
+                                costs[pos] = t[arity];
+                            } else {
+                                costs[pos] = MAX_COST_XML;
+                            }
+                            ++itl;
+                        }
+                        if ((defval != MIN_COST) || (ntuples > 0))
+                            ctrIndex = wcsp->postBinaryConstraint(i, j, costs);
+                    } else if (arity == 1) {
+                        int i = scopeIndex[0];
+                        EnumeratedVariable* x = (EnumeratedVariable*)wcsp->getVar(i);
+                        if (ToulBar2::verbose >= 3)
+                            cout << "read unary constraint on " << i << endl;
+                        if (x->enumerated()) {
+                            TemporaryUnaryConstraint unaryconstr;
+                            unaryconstr.var = x;
+                            for (a = 0; a < x->getDomainInitSize(); a++) {
+                                unaryconstr.costs.push_back(defval);
+                            }
+                            indexUnary = unaryconstrs.size();
+                            unaryconstrs.push_back(unaryconstr);
+                            x->queueNC();
+
+                            list<int*>::iterator itl = r->tuples.begin();
+                            while (itl != r->tuples.end()) {
+                                int* t = *itl;
+                                for (int i = 0; i < r->arity; i++) {
+                                    int pos = scopeOrder[scopeIndex[i]];
+                                    values[i] = DomsToIndex[wcsp->varsDom[scopeIndex[i]]][MAXDOMSIZEZERO + t[pos]];
+                                }
+                                if (r->type == REL_SUPPORT) {
+                                    unaryconstrs[indexUnary].costs[values[0]] = MIN_COST;
+                                } else if (r->type == REL_CONFLICT) {
+#ifdef MAXCSP
+                                    unaryconstrs[indexUnary].costs[values[0]] = UNIT_COST;
+#else
+                                    unaryconstrs[indexUnary].costs[values[0]] = MAX_COST_XML;
+#endif
+                                } else if (r->type == REL_SOFT) {
+                                    unaryconstrs[indexUnary].costs[values[0]] = t[arity];
+                                } else {
+                                    unaryconstrs[indexUnary].costs[values[0]] = MAX_COST_XML;
+                                }
+                                ++itl;
+                            }
+                        }
+                    } else if (arity == 0) {
+                    }
+
+                    if (ctrIndex >= 0)
+                        ctr = wcsp->getCtr(ctrIndex);
+                    if (ctr && ToulBar2::verbose >= 4)
+                        cout << *ctr << endl;
+                }
+                delete[] scopeVar;
+                delete[] scopeIndex;
+                delete[] values;
+            }
+            if (cxml->type == PredicateType)
+                intension = true;
+            itc++;
+        }
+
+        map<string, relation*>::iterator itr = rels.begin();
+        while (itr != rels.end()) {
+            relation* r = itr->second;
+            list<int*>::iterator itl = r->tuples.begin();
+            while (itl != r->tuples.end()) {
+                delete[] * itl;
+                ++itl;
+            }
+            ++itr;
+        }
+
+        // apply basic initial propagation AFTER complete network loading
+        wcsp->increaseLb(inclowerbound);
+
+        for (unsigned int u = 0; u < unaryconstrs.size(); u++) {
+            wcsp->postUnaryConstraint(unaryconstrs[u].var->wcspIndex, unaryconstrs[u].costs);
+        }
+        wcsp->sortConstraints();
+        f.close();
+
+        nDoms.clear();
+        DomsToIndex.clear();
+        rels.clear();
+        preds.clear();
+        ctrs.clear();
+    }
+
+    virtual void endInstance()
+    {
+        createWCSP();
+    }
+};
diff --git a/code/src/MDP/Backward_induction.cpp b/code/src/MDP/Backward_induction.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..0359d866ea766089b28963f44a9ffbcf218fafde
--- /dev/null
+++ b/code/src/MDP/Backward_induction.cpp
@@ -0,0 +1,109 @@
+#include "Backward_induction.hpp"
+
+namespace MDP{
+    using namespace std;
+    using namespace algebra;
+    using namespace common;
+
+
+Backward_Induction::Backward_Induction():
+    state_values(SEARCH.horizon + 1, Vector(PROBLEM.states_number, 0)),
+    state_Qvalues(SEARCH.horizon + 1, vector(PROBLEM.actions_joint_number, Vector(PROBLEM.states_number, 0))){
+}
+
+void Backward_Induction::solve(){
+    if (SEARCH.verbose)
+        cout << utils::get_solver_repr("MDP:Backward_Induction:solve()") << endl;
+
+    SEARCH.start();
+
+    auto state_sets = Backward_Induction::get_reachable_states();
+    //-- verbose
+    if (SEARCH.verbose >= utils::Verbose::medium){
+        cout << "reachable states number (by step): ";
+        for (int step = 0; step <= SEARCH.horizon; step++)
+            cout << state_sets.at(step).size() << " ";
+        cout << endl;
+    }
+
+    //-- backup
+    for (int step = SEARCH.horizon - 1; step >= 0 ; step--){
+        for (const int & x: state_sets.at(step)){
+            double best_val = -INFINITY;  
+            for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+                double val = PROBLEM.rewards_matrix(x, u);
+                const auto &reachables = PROBLEM.reachables_from_x_u[x][u];
+                for (const auto & reached: reachables){
+                    val += PROBLEM.discount * reached.proba * this->get_value(step + 1, reached.y);
+                }
+                this->_set_Qvalue(step, x, u, val);
+                best_val = max(best_val, val);
+            }
+            this->_set_value(step, x, best_val);
+        }
+    }
+    double elapsed_time = SEARCH.get_time();
+
+    if (SEARCH.verbose){
+        cout << "Initial belief value: " << this->get_value(0, PROBLEM.belief_init) << endl;
+        cout << "Time elapsed: " << elapsed_time << endl;
+    }
+}
+
+/// @brief Fill state_sets (reachable states per time-step from initial belief).
+vector<State_Set> Backward_Induction::get_reachable_states(){
+    vector<State_Set> state_sets(SEARCH.horizon + 1);
+
+    //-- initial
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        if (PROBLEM.belief_init[x] > 0)
+            state_sets.at(0).insert(x);
+    }
+
+    //-- reachables
+    for (int step = 0; step < SEARCH.horizon; step++){
+        State_Set & state_set_next = state_sets.at(step + 1);
+        for (int x: state_sets.at(step)){
+            for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+                const auto &reachables = PROBLEM.reachables_from_x_u[x][u];
+                for (const auto & reached: reachables){
+                    state_set_next.insert(reached.y);
+                }
+            }
+        }    
+    }
+
+    return state_sets;
+}
+
+
+double Backward_Induction::get_value(int time_step, int state)const{
+    return this->state_values.at(time_step)[state];
+}
+
+
+double Backward_Induction::get_value(int time_step, const Vector & belief) const{
+    return this->state_values.at(time_step).dot(belief);
+}
+
+
+double Backward_Induction::get_Qvalue(int time_step, int action, int state) const{
+    return this->state_Qvalues.at(time_step).at(action)[state];
+}
+
+
+double Backward_Induction::get_Qvalue(int time_step, int action, const Vector & belief) const{
+    return this->state_Qvalues.at(time_step).at(action).dot(belief);
+}
+
+void Backward_Induction::_set_value(int time_step, int state, double value){
+    this->state_values.at(time_step)[state] = value;
+}
+
+
+void Backward_Induction::_set_Qvalue(int time_step, int state, int action, double value){
+    this->state_Qvalues.at(time_step).at(action)[state] = value;
+}
+
+
+}
\ No newline at end of file
diff --git a/code/src/MDP/Backward_induction.hpp b/code/src/MDP/Backward_induction.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..916e292950f4d1b8f63a07b660596c75ec6ef575
--- /dev/null
+++ b/code/src/MDP/Backward_induction.hpp
@@ -0,0 +1,34 @@
+#pragma once
+
+#include "../core/_module.hpp"
+
+
+namespace MDP{
+    using namespace std;
+    using namespace algebra;
+
+    using State_Set = unordered_set<int>;
+
+
+    class Backward_Induction{
+        vector<Vector> state_values; // for each time-step
+        vector<vector<Vector>> state_Qvalues; // for each time-step, foreach joint-action
+
+    public:
+        Backward_Induction();
+
+        void solve();
+        double get_value(int time_step, int state) const;
+        double get_value(int time_step, const Vector & belief) const;
+        double get_Qvalue(int time_step, int action, int state) const;
+        double get_Qvalue(int time_step, int action, const Vector & belief) const;
+
+        static vector<State_Set> get_reachable_states(); // for each time-step
+
+    protected:
+        void _set_value(int time_step, int state, double value);
+        void _set_Qvalue(int time_step, int state, int action, double value);
+
+    };
+
+}
\ No newline at end of file
diff --git a/code/src/MDP/CMakeLists.txt b/code/src/MDP/CMakeLists.txt
new file mode 100755
index 0000000000000000000000000000000000000000..ab661583e068c963c710d27404221f136d19e185
--- /dev/null
+++ b/code/src/MDP/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 3.8)
+file(GLOB_RECURSE SRCS ${CMAKE_SOURCE_DIR}/src/MDP/*.cpp)
+add_library(MDP ${SRCS})
\ No newline at end of file
diff --git a/code/src/MDP/_module.hpp b/code/src/MDP/_module.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..035035f3c7b5d360c0d3f385c6292c292da38241
--- /dev/null
+++ b/code/src/MDP/_module.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+#include "Backward_induction.hpp"
\ No newline at end of file
diff --git a/code/src/POMDP/CMakeLists.txt b/code/src/POMDP/CMakeLists.txt
new file mode 100755
index 0000000000000000000000000000000000000000..e36139035ce93364c7c9f2809ceadc457d0c54c2
--- /dev/null
+++ b/code/src/POMDP/CMakeLists.txt
@@ -0,0 +1,4 @@
+cmake_minimum_required(VERSION 3.8)
+file(GLOB_RECURSE SRCS ${CMAKE_SOURCE_DIR}/src/POMDP/*.cpp)
+add_library(POMDP ${SRCS})
+target_link_libraries(POMDP MDP)
\ No newline at end of file
diff --git a/code/src/POMDP/HSVI.cpp b/code/src/POMDP/HSVI.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..58156ce063beb9dbf24b59e2eeaf35c849fc7f89
--- /dev/null
+++ b/code/src/POMDP/HSVI.cpp
@@ -0,0 +1,167 @@
+#include "HSVI.hpp"
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+HSVI::HSVI(): lower_bounds(Hyperplane_LowerBounds(SEARCH.horizon)){
+    
+    //-- solve MDP
+    MDP::Backward_Induction mdp_solver;
+    mdp_solver.solve();
+
+    //-- corner values from MDP
+    vector<Vector> corner_values(SEARCH.horizon + 1, Vector(PROBLEM.states_number));
+    for (int step = 0; step <= SEARCH.horizon; step++)
+        for (int x = 0; x < PROBLEM.states_number; x++)
+            corner_values.at(step)[x] = mdp_solver.get_value(step, x);
+        
+    //-- build upper bounds
+    this->upper_bounds = Sawtooth_Bounds(SEARCH.horizon, corner_values);
+}
+
+void HSVI::solve(){
+    if (SEARCH.verbose)
+        cout << utils::get_solver_repr("POMDP:HSVI:solve()") << endl;
+    SEARCH.start();
+
+    //-- main loop
+    int iter = 0;
+    try{
+        this->_print_b0_bound(iter);
+        while(_getWidth(PROBLEM.belief_init, 0) >= SEARCH.width_tolerance && iter++ < this->MAX_ITER){
+            explore(PROBLEM.belief_init, SEARCH.width_tolerance, 0); // throw exception on timeout
+            this->_print_b0_bound(iter);
+        }
+    }
+    catch (sdm_exception::Exception &e){
+        e.print();
+    }
+    double time_elapsed = SEARCH.get_time();
+
+    //-- prune (solution is often used in decPOMDP)
+    this->lower_bounds.prune();
+    this->upper_bounds.prune();
+
+    //-- verbose
+    if (SEARCH.verbose){
+        if (SEARCH.verbose >= utils::Verbose::medium){
+            cout << this->lower_bounds << endl;
+            cout << this->upper_bounds << endl;
+        }
+        cout << "time_elapsed " << time_elapsed << " iter " << iter << endl;
+    }
+}
+
+/// @todo: replace by log()
+void HSVI::_print_b0_bound(int iter) const{
+    if (SEARCH.verbose < utils::Verbose::medium)
+        return;
+    cout << "b0 bound: [" << this->lower_bounds.at(0).get_value(PROBLEM.belief_init)
+        << ", " << this->upper_bounds.at(0).get_value(PROBLEM.belief_init) << "]"
+        << " iter " << iter
+        << endl;
+};
+
+/// @brief Recurrent function:
+/// First forward: select (action, observation) at each time-step.
+/// Then backward: update lower and upper bounds.
+void HSVI::explore(Belief belief, double precision, int step){
+    if (SEARCH.is_timeout_POMDP()) 
+        throw sdm_exception::Exception(sdm_exception::timeout, "POMDP/HSVI : explore");
+
+    //-- HSVI stopping criteria
+    if (step == SEARCH.horizon)
+        return;
+    double lower_init = this->lower_bounds.at(step).get_value(belief);
+    double upper_init = this->upper_bounds.at(step).get_value(belief);
+    if (upper_init - lower_init < precision)
+        return;
+    
+    //-- select (action, observation)
+    int greedy_action, obs;
+    Belief belief_next;
+    double upper_value;
+    tie(greedy_action, upper_value) = this->_select_action(belief, step);
+    tie(obs, belief_next)  = this->_select_obs(belief, step, greedy_action);
+
+    //-- explore new belief
+    this->explore(belief_next, precision / PROBLEM.discount, step + 1);
+    
+    //-- update bounds
+    if (step < SEARCH.horizon - 1)
+        tie(std::ignore, upper_value) = this->_select_action(belief, step);
+    if (upper_value < upper_init)
+        this->upper_bounds[step].update(belief, upper_value);
+    if (upper_value - lower_init > precision)
+        this->lower_bounds[step].update(belief, this->lower_bounds[step + 1], lower_init);
+    
+}
+
+
+
+/// @brief Select action: greedy w.r.t. the upper bound, i.e. w.r.t. Q_upper(belief, action)
+/// @return The pair (action, Q_value).
+pair<int, double> HSVI::_select_action(const Belief & belief, int step) const{
+    double best_upper_value = -INFINITY;
+    int best_action;
+    for(int action = 0; action < PROBLEM.actions_joint_number; action++){
+        double value = this->get_Q_UpperVal(belief, action, step);
+        if (value > best_upper_value){
+            best_upper_value = value;
+            best_action = action;
+        }
+    }
+    return make_pair(best_action, best_upper_value);
+}
+
+double HSVI::get_UpperVal(const Belief & belief, int step) const{
+    return this->upper_bounds.at(step).get_value(belief);
+}
+
+double HSVI::get_Q_UpperVal(const Belief & belief, int action, int step) const{
+    //-- reward
+    double reward = belief.getExpectedReward(action);
+
+    if (step >= SEARCH.horizon - 1)
+        return reward;
+
+    //-- V_next
+    const auto & upper_bound_next = this->upper_bounds.at(step + 1);
+    double V_next = 0;
+    for (auto & obs_belief: belief.get_reacheable_beliefs(action)){ // @todo (perf) stocker reachable_beliefs[belief]
+        V_next += upper_bound_next.get_value(obs_belief.second);
+    }
+
+    //-- discounted sum
+    return reward + PROBLEM.discount * V_next;
+}
+
+/// @brief Select the observation that maximizes the width between bounds.
+/// @return the pair <selected_obs, new_belief> where new_belief is the successor of belief for (action, selected_obs)
+pair<int, Belief> HSVI::_select_obs(const Belief & belief, int step, int action) const{
+    int best_obs = -1;
+    Belief best_belief;
+    double best_value = -INFINITY;
+    for (auto & obs_belief: belief.get_reacheable_beliefs(action)){
+        Belief & newBelief = obs_belief.second;
+        double value = this->_getWidth(newBelief, step + 1);
+        if(value > best_value) {
+            best_obs = obs_belief.first;
+            best_value = value;
+            best_belief = newBelief;
+        }
+    }
+    best_belief.normalize();
+    return make_pair(best_obs, best_belief);
+}
+
+/// @brief Compute the width between upper and lower bound (the gap).
+double HSVI::_getWidth(const Belief & belief, int step)const{
+    double lower = this->lower_bounds.at(step).get_value(belief);
+    double upper = this->upper_bounds.at(step).get_value(belief);
+    return upper - lower;
+}
+
+
+}
\ No newline at end of file
diff --git a/code/src/POMDP/HSVI.hpp b/code/src/POMDP/HSVI.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..6ba95c2123c202e26f432f8cc57d4052a4afc929
--- /dev/null
+++ b/code/src/POMDP/HSVI.hpp
@@ -0,0 +1,37 @@
+///@ref "Heuristic Search Value Iteration for POMDPs" [Smith, 2007]
+
+#pragma once
+
+#include "../core/_module.hpp"
+#include "../MDP/_module.hpp"
+#include "belief.hpp"
+#include "max_plane.hpp"
+#include "sawtooth.hpp"
+
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+
+class HSVI{
+    static constexpr double MAX_ITER = 1000;
+
+public:
+    Hyperplane_LowerBounds lower_bounds;
+    Sawtooth_Bounds upper_bounds;
+    
+    HSVI(); 
+    void solve();
+    double get_UpperVal(const Belief &, int step) const;
+    double get_Q_UpperVal(const Belief &, int action, int step) const;
+    void explore(Belief, double precision, int step);
+
+protected:
+    double _getWidth(const Belief &, int step)const;
+    pair<int, double> _select_action(const Belief &, int step) const;
+    pair<int, Belief> _select_obs(const Belief &, int step, int action) const;
+    void _print_b0_bound(int iter) const;
+};
+
+}
\ No newline at end of file
diff --git a/code/src/POMDP/PBVI.cpp b/code/src/POMDP/PBVI.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cb4f156d3b2c4e314a856f3b48fc29f88001681f
--- /dev/null
+++ b/code/src/POMDP/PBVI.cpp
@@ -0,0 +1,143 @@
+#include "PBVI.hpp"
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+
+PBVI::PBVI():
+logger(SEARCH.log_filename, SEARCH.verbose),
+b0(PROBLEM.belief_init),
+lower_bounds(Hyperplane_LowerBounds(SEARCH.horizon)){
+    this->bags.resize(SEARCH.horizon + 1);
+    this->bags.at(0).push_back(this->b0);
+}
+
+
+/// @brief main function for PBVI algorithm:
+/// repeat expansions (new beliefs in the bags) / backups (improve estimation)				 
+void PBVI::solve(int iter_max){
+    //-- verbose
+    if (SEARCH.verbose)
+        cout << utils::get_solver_repr("POMDP:PBVI:solve()") << endl;
+    this->logger.write({"seed", "time", "iter", "LB0_value", "bag_sizes", "LB_sizes"});
+
+    //-- main loop
+    SEARCH.start();
+    int iter = 0;
+    this->_log(iter, 0);
+    while (iter++ < iter_max){
+        //-- expansion
+        for (int step = 0; step < SEARCH.horizon - 1; step++){
+            this->_expand(step);
+        }
+        //-- backup
+        for (int step = SEARCH.horizon - 1; step >= 0; step--){
+            auto & bound = this->lower_bounds[step];
+            auto & next_bound = this->lower_bounds[step + 1];
+            for (auto & belief: this->bags.at(step))
+                bound.update(belief, next_bound);
+        }
+        //-- verbose
+        this->_log(iter, 0);
+    }
+
+    //-- verbose
+    if (SEARCH.verbose > utils::Verbose::none){
+        double elapsed_time = SEARCH.get_time();
+        double value = this->lower_bounds[0].get_value(this->b0);
+        cout << "elapsed_time " << elapsed_time << " final value " << value << " iter " << iter - 1 << endl;
+    }
+}
+
+
+/// @brief add some beliefs in PBVI point-sets (in next-time step bag)
+void PBVI::_expand(int step){
+
+    auto & bag =  this->bags.at(step);
+    auto & bag_next =  this->bags.at(step + 1);
+    int select_number = max(bag_next.size(), size_t(1));
+
+    //-- for each bag oState, we are looking for good successors
+    int selected_number = 0;
+    for (auto &belief: bag){    
+        if (SEARCH.is_timeout())
+            throw sdm_exception::Exception(sdm_exception::timeout, "PBVI::expand");
+        
+        auto[belief_next, dist] = this->_select_distance(belief, step);
+
+        if (dist > this->DIST_THRESHOLD){
+            bag_next.push_back(belief_next);
+            selected_number++;
+        }
+
+        if (selected_number >= select_number)
+            break;
+    }
+}
+
+
+/// @brief Select the reachable belief with the largest distance to the bag.
+/// @return A pair (belief, distance)
+pair<Belief, double> PBVI::_select_distance(const Belief &belief, int step) const{
+    static double high_thresh = .05; // early stop
+
+    double dist_max = -INFINITY;
+    Belief best_newBelief;
+
+    for(int action = 0; action < PROBLEM.actions_joint_number; action++){
+        for (auto & obs_belief: belief.get_reacheable_beliefs(action)){
+            Belief & newBelief = obs_belief.second;
+            newBelief.normalize();
+            double dist = this->_get_dist(newBelief, step + 1);
+            // best ?
+            if (dist > dist_max){
+                dist_max = dist;
+                best_newBelief = newBelief;
+            }
+            if (dist >= high_thresh)
+                break;
+        }
+    }
+
+    return make_pair(best_newBelief, dist_max);
+}
+
+
+/// @brief Compute L1 distance
+/// @warning not reliable if the distance is < threshold (perfs)
+double PBVI::_get_dist(const Belief & belief, int step) const{
+    double dist_min = INFINITY;
+    for (const auto & other: this->bags.at(step)){
+        double dist = (belief - other).cwiseAbs().sum();
+        dist_min = min(dist_min, dist);
+        if (dist_min < this->DIST_THRESHOLD){ // @warning: break if the distance is < threshold (perfs)
+            break;
+        }
+    }
+    return dist_min;
+}
+
+
+void PBVI::_log(int iter, int step){
+    //-- prepare data to write
+    double value = this->lower_bounds[0].get_value(this->b0);
+    ostringstream bag_stream;
+    for (const auto & bag: this->bags)
+        bag_stream << " " << bag.size();
+    ostringstream bound_stream;
+    for (const auto & bound: this->lower_bounds.lower_bounds)
+        bound_stream << " " << bound.size();
+
+    //-- write
+    this->logger.write({to_string(SEARCH.seed),
+                        to_string(SEARCH.get_time()), 
+                        to_string(iter),
+                        to_string(value),
+                        " " + bag_stream.str(),
+                        " " + bound_stream.str()
+                        });
+}
+
+
+}
\ No newline at end of file
diff --git a/code/src/POMDP/PBVI.hpp b/code/src/POMDP/PBVI.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..26f0c22f94f2312b74656ab4dba38f23e89f649d
--- /dev/null
+++ b/code/src/POMDP/PBVI.hpp
@@ -0,0 +1,36 @@
+#pragma once
+
+#include <unordered_map>
+
+#include "../core/_module.hpp"
+#include "../MDP/_module.hpp"
+#include "belief.hpp"
+#include "max_plane.hpp"
+#include "sawtooth.hpp"
+
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+    class PBVI{
+        static constexpr double DIST_THRESHOLD = 1e-6; // under this distance, two points cannot be in the same bag
+
+        utils::Logger logger;
+        Belief b0; // initial belief (from problem definition)
+        Hyperplane_LowerBounds lower_bounds;
+        vector<vector<Belief>> bags; // a bag for each time-step
+
+    public:
+        PBVI();
+
+        void solve(int iter_max = 5);
+        
+    protected:
+        void _expand(int step);
+        pair<Belief, double> _select_distance(const Belief &, int step) const; // expansion based on distance
+        double _get_dist(const Belief &, int step) const; // distance to the bag
+        void _log(int iter, int step);
+    };
+
+}
diff --git a/code/src/POMDP/_module.hpp b/code/src/POMDP/_module.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..efb1cd85f73900f875e403a3d243ae9dcb04e8e9
--- /dev/null
+++ b/code/src/POMDP/_module.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+#include "HSVI.hpp"
+#include "PBVI.hpp"
diff --git a/code/src/POMDP/belief.cpp b/code/src/POMDP/belief.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..6ed831266aae3903d0913d4c09036833157039f9
--- /dev/null
+++ b/code/src/POMDP/belief.cpp
@@ -0,0 +1,96 @@
+#include "belief.hpp"
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+Belief::Belief(){}
+
+Belief::Belief(size_t size_, double val): Vector(size_, val){}
+
+Belief::Belief(const Vector & belief): Vector(belief){}
+
+Belief::Belief(const initializer_list<double> & beliefs): Vector(beliefs){}
+
+Belief::Belief(const Belief & old_belief, int action): Belief(old_belief.size(), 0){
+    assert(PROBLEM.states_number == (int)old_belief.size());
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        double x_proba = old_belief[x];
+        for(int y = 0; y < PROBLEM.states_number; y++){
+            this->operator[](y) += x_proba * PROBLEM.get_y_proba(x, action, y);
+        }
+    }
+}
+
+/// @brief Normalize to obtain a vector whose sum is 1.
+/// @return The sum before normalization.
+double Belief::normalize(){
+    double sum = this->sum();
+    this->array() /= sum;
+    return sum;
+}
+
+/// @brief Compute the new beliefs reachables from (belief, action)
+/// @return A map: obs -> new_belief
+/// @warning THE BELIEFS ARE NOT NORMALIZED 
+unordered_map<int, Belief> Belief::get_reacheable_beliefs(int action) const{
+    unordered_map<int, Belief> new_beliefs; // map: obs -> new_belief
+
+    Belief belief_null(this->size(), 0);
+
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        if (this->operator[](x) < 1e-8)
+            continue;
+        for (const auto & reached: PROBLEM.reachables_from_x_u[x][action]){
+            double proba = reached.proba * this->operator[](x);
+            auto got = new_beliefs.find(reached.joint_obs);
+            if (got != new_beliefs.end()){
+                got->second[reached.y] += proba;
+            }
+            else{
+                Belief new_belief = belief_null;
+                new_belief[reached.y] = proba;
+                new_beliefs.emplace(reached.joint_obs, new_belief);
+            }
+        }
+    }
+
+    return new_beliefs;
+}
+
+
+double Belief::getExpectedReward(int action) const{
+    return PROBLEM.rewards_matrix.col(action).dot(*this);
+}
+
+
+bool Belief::operator==(const Vector & other) const{
+    static const double approx_factor = 1e6;
+    assert(this->size() == other.size());
+    for (int i = 0; i < (int)this->size(); i++){
+        if (int(this->operator[](i) * approx_factor) != int(other[i] * approx_factor))
+            return false;
+    }
+    return true;
+}
+
+
+////////////////////////
+// hash
+////////////////////////
+
+Vector Belief_Hash::weights;
+
+void Belief_Hash::init(){
+    weights = Vector(PROBLEM.states_number);
+    int weight = 1;
+    for (auto & val: weights)
+        val = weight++;
+}
+
+size_t Belief_Hash::operator()(Belief const& belief) const {
+    return size_t(belief.dot(weights) * 1e9);
+}
+
+
+}
\ No newline at end of file
diff --git a/code/src/POMDP/belief.hpp b/code/src/POMDP/belief.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..b7417cc13c8f11472143d9cd62ab4ad7a4582702
--- /dev/null
+++ b/code/src/POMDP/belief.hpp
@@ -0,0 +1,56 @@
+#pragma once
+
+#include "../core/_module.hpp"
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+struct Belief: Vector{
+
+    Belief();
+    Belief(size_t size_, double val);
+    Belief(const initializer_list<double> &);
+    Belief(const Vector &);
+    Belief(const Belief &, int action);
+
+    unordered_map<int, Belief> get_reacheable_beliefs(int action) const;
+    double getExpectedReward(int action) const;
+    double normalize();
+    
+    bool operator==(const Vector & other) const;
+
+    friend ostream &operator<<(ostream &os, const Belief &b){
+        os << b.transpose();
+        return os;
+    }
+};
+
+/*struct Belief_Hash{
+    size_t operator()(Belief const& b) const {      
+        size_t seed = 0; 
+        for (auto val: b){
+            utils::hash_combine(seed, int(val * 1e7));
+        }
+        return seed;
+    }
+};
+
+struct Belief_Hash_Approx{
+    size_t operator()(Belief const& b) const {      
+        size_t seed = 0;
+        for (auto val: b){
+            utils::hash_combine(seed, int(val * 1e4));
+        }
+        return seed;
+    }
+};*/
+
+struct Belief_Hash{
+    static Vector weights;
+    static void init();
+    size_t operator()(Belief const& belief) const;
+};
+
+
+}
\ No newline at end of file
diff --git a/code/src/POMDP/max_plane.cpp b/code/src/POMDP/max_plane.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..ede7b2ade4ff4f50be1805ffc2f96cb1f1a3ef09
--- /dev/null
+++ b/code/src/POMDP/max_plane.cpp
@@ -0,0 +1,209 @@
+#include "max_plane.hpp"
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+///////////////////////////
+// Hyperplane
+/// @brief An hyperplane is represented by a Vector.
+/// The value of a belief w.r.t. this hyperplane is given by the scalar product <belief, hyperplane_vector>.
+//////////////////////////
+
+Hyperplane::Hyperplane(): id(ID()){}
+Hyperplane::Hyperplane(int dim): Vector(dim), id(ID()){}
+Hyperplane::Hyperplane(int dim, double val): Vector(dim, val), id(ID()){}
+Hyperplane::Hyperplane(const initializer_list<double> & list): Vector(list), id(ID()){}
+
+/// @brief Compute the scalar product <belief, hyperplane_vector>.
+double Hyperplane::get_value(const Belief &belief) const{
+    return this->dot(belief);
+}
+
+///@brief Dominated if other values are greater for every dimension.
+bool Hyperplane::is_dominated(const Hyperplane& other) const{
+    if (this->id == other.id)
+        return false;
+    return (*this <= other); // Vector comparaison
+}
+
+bool Hyperplane::is_dominated(const vector<Hyperplane> & others)  const{
+    for(const Hyperplane & other : others) {
+        if(this->is_dominated(other))
+            return true;
+    }
+    return false;
+}
+
+///////////////////////////
+// Hyperplane_LowerBound
+//////////////////////////
+
+Hyperplane_LowerBound::Hyperplane_LowerBound(){}
+
+Hyperplane_LowerBound::Hyperplane_LowerBound(Hyperplane initialVector){
+    this->dimension = PROBLEM.states_number;
+    this->_add_hyperplane(initialVector);
+}
+
+/// @brief The maximum belief value w.r.t. the hyperplanes.
+double Hyperplane_LowerBound::get_value(const Belief & belief) const{
+    double value = -INFINITY;
+    for(const Hyperplane & hyperplane : this->hyperplanes) {
+        value = max(value, hyperplane.get_value(belief));
+    }
+    return value;
+}
+
+/// @brief add an hyperplane, see [Smith, 2007] Algorithm 3
+void Hyperplane_LowerBound::update(const Belief & belief, const Hyperplane_LowerBound & next_bound, double previous_value) {
+    Hyperplane best_BetaA;
+    if (previous_value == -INFINITY)
+        previous_value = this->get_value(belief);
+    double best_Value = previous_value;
+    for(int act = 0; act < PROBLEM.actions_joint_number; act++){
+        Beta_Map betas_o = this->_get_betas_o(belief, act, next_bound);
+        Hyperplane beta_a = this->_get_beta(act, betas_o, belief);
+        double scalarValue = beta_a.get_value(belief);
+        if(scalarValue > best_Value) {
+            best_Value = scalarValue;
+            best_BetaA = beta_a;
+        }
+    }
+    if (best_Value > previous_value)
+        this->_add_hyperplane(best_BetaA);
+}
+
+/// @brief Compute the \\beta_{a,o} hyperplanes (as defined in [Smith, 2007] Algorithm 3), i.e
+/// @brief given an action, for each possible observation: 
+/// @brief 1) compute the corresponding belief
+/// @brief 2) select the best (next-time step) hyperplane
+Beta_Map Hyperplane_LowerBound::_get_betas_o(const Belief & belief, int action, const Hyperplane_LowerBound & next_bound){
+    Beta_Map betas_o;
+    
+    for (auto & obs_belief: belief.get_reacheable_beliefs(action)){
+        Belief & newBelief = obs_belief.second;
+        Hyperplane beta_ao = next_bound._get_representative(newBelief);
+        betas_o.emplace(obs_belief.first, beta_ao);
+    }
+
+    return betas_o;
+}
+
+/// @brief Compute the \\beta_a hyperplane (as defined in [Smith, 2007] Algorithm 3).
+Hyperplane Hyperplane_LowerBound::_get_beta(int action, const Beta_Map & betas_o, const Belief & belief){
+    Hyperplane beta_a(this->dimension);
+
+    for(int x = 0; x < this->dimension; x++) {
+	    double x_val = 0.0;
+        if (belief[x] > 1e-8){		 
+            const auto &reachables = PROBLEM.reachables_from_x_u[x][action];
+            for (const auto & reachable: reachables){
+                auto got_hyperplane = betas_o.find(reachable.joint_obs); 
+                if (got_hyperplane != betas_o.end()){
+                    x_val += reachable.proba * got_hyperplane->second[reachable.y];
+                }
+            }
+        }
+        beta_a[x] = PROBLEM.rewards_matrix(x, action) + x_val * PROBLEM.discount;
+    }
+
+    return beta_a;
+}
+
+
+/// @brief Find the best hyperplane, i.e. argmax get_value
+Hyperplane Hyperplane_LowerBound::_get_representative(const Belief& belief) const{
+    Hyperplane representative;
+    double value = -INFINITY;
+    
+    for(const Hyperplane & hyperplane : this->hyperplanes) {
+        double temp = hyperplane.get_value(belief);
+        if(value < temp) {
+            value = temp;
+            representative = hyperplane;
+        }
+    }
+    return representative;
+}
+
+/// @brief Add the hyperplane + (conditional) pruning.
+void Hyperplane_LowerBound::_add_hyperplane(const Hyperplane& hyperplane) {
+    if(hyperplane.is_dominated(this->hyperplanes))
+        return;
+
+    this->hyperplanes.push_back(hyperplane);
+    this->newHyperplanes.push_back(hyperplane);
+    if (this->hyperplanes.size() > PRUNE_THRESH * size_last_pruning) {
+        this->prune();
+    }
+}
+
+/// @brief 1) Erase each hyperplane of hyperplanes that is dominated by one hyperplane of newHyperplanes.
+/// @brief 2) Clear newHyperplanes.
+void Hyperplane_LowerBound::prune() {
+
+    if(this->newHyperplanes.size() <= 1) {
+        return;
+    }
+
+    vector<Hyperplane> tempSet;
+    for(const Hyperplane & hyperplane : this->hyperplanes) {
+        if (!hyperplane.is_dominated(this->newHyperplanes)) {
+            tempSet.push_back(hyperplane);
+        }
+    }
+    this->hyperplanes = tempSet;
+    this->newHyperplanes.clear();
+    size_last_pruning = this->hyperplanes.size();
+}
+
+int Hyperplane_LowerBound::size() const{
+	return this->hyperplanes.size();
+}
+
+
+///////////////////////////
+// Hyperplane_LowerBounds
+///@brief a collection of bounds (one for each time-step)
+///@todo init lowerBounds: use a better method (e.g. fast informed)
+//////////////////////////
+
+Hyperplane_LowerBounds::Hyperplane_LowerBounds(){}
+
+Hyperplane_LowerBounds::Hyperplane_LowerBounds(int horizon){
+    this->lower_bounds.resize(horizon + 1);
+
+    //-- pessimist reward = max_{actions} min_{states} r(s, a)
+    double pessimist_reward = -INFINITY;
+    for (int a = 0; a < PROBLEM.actions_joint_number; a++){            
+        double min_action_reward = PROBLEM.rewards_matrix.min(0, a);
+        pessimist_reward = max(pessimist_reward, min_action_reward);
+    }
+
+    //-- make bounds:
+    //--      pessimist values for each time-step
+    //--      for a given time-step, same value for each state
+    double valueToGo_pessimist = 0;  
+    for(int step = horizon; step >= 0; step--){          
+        Hyperplane initialVector(PROBLEM.states_number, valueToGo_pessimist);
+        this->lower_bounds[step] = Hyperplane_LowerBound(initialVector);
+        valueToGo_pessimist = pessimist_reward + PROBLEM.discount * valueToGo_pessimist;
+    }
+}
+
+void Hyperplane_LowerBounds::prune(){
+    for (auto & bound: this->lower_bounds){
+        bound.prune();
+    }
+}
+
+Hyperplane_LowerBound Hyperplane_LowerBounds::at(int step) const{
+    return this->lower_bounds.at(step);
+}
+
+Hyperplane_LowerBound & Hyperplane_LowerBounds::operator[](int step){
+    return this->lower_bounds[step];
+}
+
+}
\ No newline at end of file
diff --git a/code/src/POMDP/max_plane.hpp b/code/src/POMDP/max_plane.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..acc3d905b428688b2e4ebebc2cda264dcc8c0e0b
--- /dev/null
+++ b/code/src/POMDP/max_plane.hpp
@@ -0,0 +1,90 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "belief.hpp"
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+struct Hyperplane: Vector{
+    Hyperplane();
+    Hyperplane(int dim);
+    Hyperplane(int dim, double val);
+    Hyperplane(const initializer_list<double> & list);
+
+    bool is_dominated(const Hyperplane & ) const;
+    bool is_dominated(const vector<Hyperplane> & ) const;
+    double get_value(const Belief &belief) const;
+
+private:
+    static int ID (){
+       static int ID = 0;
+       return ID ++;
+    }
+    int id;
+};
+
+using Beta_Map = unordered_map<int, Hyperplane>; // map action or observation to hyperplane
+
+class Hyperplane_LowerBound{
+    static constexpr double PRUNE_THRESH = 1.25; // prune when hyperplanes.size() > PRUNE_THRESH * size_last_pruning
+    
+    int dimension; // The dimension of the state space
+    vector<Hyperplane> hyperplanes;
+    vector<Hyperplane> newHyperplanes; // The hyperplanes added after the last pruning
+    int size_last_pruning = 0; // The number of hyperplanes in the set when the last pruning was made
+
+public:
+    Hyperplane_LowerBound();
+    Hyperplane_LowerBound(Hyperplane initialVector);
+
+    double get_value(const Belief & )const;
+    void update(const Belief & belief, const Hyperplane_LowerBound & next_bound, double previous_value = -INFINITY);
+    int size() const;
+    void prune();
+    
+    //-- print
+    friend ostream &operator<<(ostream &os, const Hyperplane_LowerBound &l){
+        cout << "** Hyperplane_LowerBound:" << endl;
+        cout << "dimension " << l.dimension
+            << " hyperplanes_size " << l.hyperplanes.size()
+            << " newHyperplanes_size " << l.newHyperplanes.size()
+            << " size_last_pruning " << l.size_last_pruning
+            << endl;
+        cout << "hyperplanes: " << endl;
+        for (Hyperplane hyperplane: l.hyperplanes){
+            cout << hyperplane.transpose() << endl;
+        }
+        return os;
+    }
+
+private:    
+    Beta_Map _get_betas_o(const Belief & belief, int action, const Hyperplane_LowerBound & next_bound);
+    Hyperplane _get_beta(int action, const Beta_Map & betas_o, const Belief & belief);
+    void _add_hyperplane(const Hyperplane& hyperplane);
+    Hyperplane _get_representative(const Belief &) const;
+};
+
+struct Hyperplane_LowerBounds{
+    vector<Hyperplane_LowerBound> lower_bounds; // a lower bound by time-step
+
+    Hyperplane_LowerBounds();
+    Hyperplane_LowerBounds(int horizon);
+
+    void prune();
+    Hyperplane_LowerBound at(int step) const;
+    Hyperplane_LowerBound & operator[](int step);
+
+    //-- print
+    friend ostream &operator<<(ostream &os, const Hyperplane_LowerBounds &h){
+        cout << "Hyperplane_LowerBounds size: ";
+        int horizon = h.lower_bounds.size() - 1;
+        for (int step = 0; step <= horizon; step++){
+            cout << h.lower_bounds.at(step).size() << " ";
+        }
+        return os;
+    }
+};
+
+}
\ No newline at end of file
diff --git a/code/src/POMDP/sawtooth.cpp b/code/src/POMDP/sawtooth.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..9ac925a6a5d7ead3243f6f6733a26122c211d2b2
--- /dev/null
+++ b/code/src/POMDP/sawtooth.cpp
@@ -0,0 +1,181 @@
+#include "sawtooth.hpp"
+
+#include "../core/_module.hpp"
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+///////////////////////////
+// Tooth
+//////////////////////////
+
+Tooth::Tooth(const Vector & vertex, double value): id(ID()), vertex(vertex), value(value){}
+
+///////////////////////////
+// Sawtooth_Bound
+//////////////////////////
+
+Sawtooth_Bound::Sawtooth_Bound(){}
+
+Sawtooth_Bound::Sawtooth_Bound(const Vector & cornerValues) {
+    this->dimension = cornerValues.size();
+    this->cornerValues = cornerValues;
+}
+
+/// @brief see Smith thesis algo 4.9 p.110 => SAWTOOTH.evaluate
+double Sawtooth_Bound::get_value(const Vector & belief) const {
+    double x0 = this->cornerValues.dot(belief);
+    double min_val = 0;
+    for(const Tooth & tooth : teeth) {
+        double val = _get_value(belief, tooth);
+        min_val = min(min_val, val);
+    }
+    return x0 + min_val;
+}
+
+double Sawtooth_Bound::_get_value(const Vector & belief, const Tooth & tooth) const{
+    double phi = INFINITY;
+    for(int d = 0; d < this->dimension; d++) {
+        if(tooth.vertex[d] > 0){
+            double b = belief[d];
+            if (b < 1e-8)
+                return 0;
+            phi = min(phi, b / tooth.vertex[d]);
+        }
+    }
+    return phi * (tooth.value - this->cornerValues.dot(tooth.vertex));
+}
+
+
+bool Sawtooth_Bound::_isPointDominated(const Tooth & tooth1, const Tooth & tooth2) const{
+    if (tooth1.id == tooth2.id)
+        return false;
+    double x0 = this->cornerValues.dot(tooth1.vertex);
+    double value = x0 + this->_get_value(tooth1.vertex, tooth2);
+    return value <= tooth1.value;
+}
+
+bool Sawtooth_Bound::_isPointDominated(const Tooth & tooth, const vector<Tooth> & toothCollection) const{
+    if (this->cornerValues.dot(tooth.vertex) <= tooth.value)
+        return true;   
+    for(const Tooth & tooth2 : toothCollection) {
+        if(_isPointDominated(tooth, tooth2)) {
+            return true;
+        }
+    }
+    return false;
+}
+
+void Sawtooth_Bound::_add_tooth(const Tooth & tooth) {
+    if(_isPointDominated(tooth, this->teeth))
+        return;
+
+    this->teeth.push_back(tooth);
+    this->newTeeth.push_back(tooth);
+    if (this->teeth.size() >= this->size_last_pruning * PRUNE_THRESH) {
+        this->prune();
+    }
+}
+
+void Sawtooth_Bound::prune(){
+    if(this->newTeeth.empty())
+        return;
+
+    vector<Tooth> newPointSet;
+    for(const Tooth & tooth : this->teeth) {
+        if(!_isPointDominated(tooth, this->newTeeth))
+            newPointSet.push_back(tooth);
+    }
+
+    this->newTeeth.clear();
+    this->teeth = newPointSet;
+    this->size_last_pruning = this->teeth.size();
+}
+
+int Sawtooth_Bound::size() const{
+    return this->teeth.size();
+}
+
+void Sawtooth_Bound::update(const Belief & belief, double value) {
+    //-- the belief is a corner ?
+    for (int d = 0; d < this->dimension; d++){
+        if (belief[d] >= 1 - 1e-8){
+            //-- yes
+            this->cornerValues[d] = value;
+            return;
+        }
+    }
+    //-- no
+    Tooth tooth = Tooth(belief, value);
+    this->_add_tooth(tooth);
+}
+
+
+///////////////////////////
+// Sawtooth_Bounds
+//////////////////////////
+
+Sawtooth_Bounds::Sawtooth_Bounds(){}
+
+Sawtooth_Bounds::Sawtooth_Bounds(int horizon, vector<Vector> MDP_corner_values){
+    this->upper_bounds.resize(horizon + 1);
+    for(int step = horizon; step >= 0; step--){
+        this->upper_bounds.at(step) = Sawtooth_Bound(MDP_corner_values.at(step));
+    }
+}
+
+/// @brief Smith thesis algo 4.2 (page 81)
+///         ONLY FOR INFINITE HORIZON
+Vector Sawtooth_Bounds::_fastInformedInit(const Vector & MDP_corner_values){
+    static const double PRECISION = 1e-3;
+
+    vector<Vector> alphas(PROBLEM.actions_joint_number, MDP_corner_values);
+    double epsilon;
+    do{
+        epsilon = -INFINITY;
+        for (int act = 0; act < PROBLEM.actions_joint_number; act++){
+            Vector beta_a(PROBLEM.states_number, 0);
+            for (int x = 0; x < PROBLEM.states_number; x++){
+                Vector beta_o(PROBLEM.observations_joint_number, -INFINITY);
+                for (const auto & reached: PROBLEM.reachables_from_x_u[x][act]){
+                    for (const Vector & alpha: alphas){
+                        beta_o[reached.joint_obs] = max(beta_o[reached.joint_obs], reached.proba * alpha[reached.y]);
+                    }
+                }
+                beta_a[x] = PROBLEM.rewards_matrix(x, act);
+                for (int obs = 0; obs < PROBLEM.observations_joint_number; obs++){
+                    if (beta_o[obs] > -INFINITY)
+                        beta_a[x] += PROBLEM.discount * beta_o[obs];
+                }
+                epsilon = max(epsilon, abs(beta_a[x] - alphas[act][x]));
+            }
+            alphas[act] = beta_a;
+        }
+    }while(epsilon > PRECISION);
+    
+    Vector values(PROBLEM.states_number, -INFINITY);
+    for (int act = 0; act < PROBLEM.actions_joint_number; act++){
+        for (int x = 0; x < PROBLEM.states_number; x++){
+            values[x] = max(values[x], alphas.at(act)[x]);
+        }
+    }
+
+    return values;
+}
+
+void Sawtooth_Bounds::prune(){
+    for (auto & bound: this->upper_bounds){
+        bound.prune();
+    }
+}
+
+Sawtooth_Bound Sawtooth_Bounds::at(int step) const{
+    return this->upper_bounds.at(step);
+}
+
+Sawtooth_Bound & Sawtooth_Bounds::operator[](int step){
+    return this->upper_bounds[step];
+}
+
+}
\ No newline at end of file
diff --git a/code/src/POMDP/sawtooth.hpp b/code/src/POMDP/sawtooth.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..7aa5c81c2732ee54fd065707b8fc2150623a94f3
--- /dev/null
+++ b/code/src/POMDP/sawtooth.hpp
@@ -0,0 +1,101 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "belief.hpp"
+
+namespace POMDP{
+using namespace std;
+using namespace common;
+
+
+struct Tooth{
+    int id;
+    Vector vertex;
+    double value;
+    
+    Tooth(const Vector & vertex, double value);
+
+    friend ostream &operator<<(ostream &os, const Tooth &tooth){
+        os << tooth.vertex.transpose() << " : " << tooth.value;
+        return os;
+    }
+
+private:
+    static int ID (){
+       static int ID = 0;
+       return ID ++;
+    }
+};
+
+class Sawtooth_Bound{
+    static constexpr double PRUNE_THRESH = 1.25; // prune when teeth.size() > PRUNE_THRESH * size_last_pruning
+
+    int dimension; // dimension of the state space
+    Vector cornerValues;  
+    vector<Tooth> teeth; // The list of teeth used in the representation
+    vector<Tooth> newTeeth; // The list of new teeth (relative to the last pruning)
+    size_t size_last_pruning = 0; // The number of teeth in the set when the last pruning was made
+
+    void _add_tooth(const Tooth &);
+    double _get_value(const Vector &, const Tooth &) const;
+    bool _isPointDominated(const Tooth &, const vector<Tooth> &) const;
+    bool _isPointDominated(const Tooth &, const Tooth &) const;
+
+public:
+    Sawtooth_Bound();
+    Sawtooth_Bound(const Vector & cornerValues);
+
+    int size() const;
+
+    void update(const Belief & , double value);
+    // double get_value(const Belief & ) const;
+    double get_value(const Vector & belief) const;
+    void prune();
+
+    //-- print
+    friend ostream &operator<<(ostream &os, const Sawtooth_Bound &s){
+        os << "** Sawtooth_Bound:" << endl;
+        os << "dimension " << s.dimension
+            << " teeth_size " << s.teeth.size()
+            << " newteeth_size " << s.newTeeth.size()
+            << " size_last_pruning " << s.size_last_pruning
+            << endl;
+        os << "cornerValues " << s.cornerValues.transpose() << endl;
+        os << "teeth: " << endl;
+        for (Tooth tooth: s.teeth){
+            os << "\t" << tooth << endl;
+        }
+        return os;
+    }
+};
+
+////////////////////////////////
+// Sawtooth_Bounds:
+// a collection of bounds (one for each time-step)
+////////////////////////////////
+
+class Sawtooth_Bounds{
+    vector<Sawtooth_Bound> upper_bounds; // a bound by time-step
+
+    Vector _fastInformedInit(const Vector & MDP_corner_values);
+
+public:
+    Sawtooth_Bounds();
+    Sawtooth_Bounds(int horizon, vector<Vector> corner_values);
+
+    void prune();
+    Sawtooth_Bound at(int step) const;
+    Sawtooth_Bound & operator[](int step);
+
+    //-- print
+    friend ostream &operator<<(ostream &os, const Sawtooth_Bounds &s){
+        cout << "Sawtooth_Bounds size: ";
+        int horizon = s.upper_bounds.size() - 1;
+        for (int step = 0; step <= horizon; step++){
+            cout << s.upper_bounds.at(step).size() << " ";
+        }
+        return os;
+    }
+};
+
+}
\ No newline at end of file
diff --git a/code/src/core/CMakeLists.txt b/code/src/core/CMakeLists.txt
new file mode 100755
index 0000000000000000000000000000000000000000..77a0fca5a17843100176077661f02011441cd3f3
--- /dev/null
+++ b/code/src/core/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 3.8)
+file(GLOB_RECURSE SRCS ${CMAKE_SOURCE_DIR}/src/core/*.cpp)
+add_library(core ${SRCS})
diff --git a/code/src/core/_module.hpp b/code/src/core/_module.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..690d6296c46c5a6425afa711f32861ed47cf5e79
--- /dev/null
+++ b/code/src/core/_module.hpp
@@ -0,0 +1,8 @@
+#pragma once
+
+#include "utils.hpp"
+#include "exception.hpp"
+#include "linear_algebra/Vector.hpp"
+#include "linear_algebra/matrix.hpp"
+#include "common.hpp"
+#include "options.hpp"
diff --git a/code/src/core/common.cpp b/code/src/core/common.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..15d7424149cb496e516ed0db293338e2c11aa83b
--- /dev/null
+++ b/code/src/core/common.cpp
@@ -0,0 +1,156 @@
+#include "common.hpp"
+
+#include <iostream>
+#include <vector>
+#include <string>
+#include <random>
+
+
+namespace common{
+using namespace std;
+using namespace algebra;
+
+double Problem_Data::get_y_proba(int x, int j_action, int y){
+    const auto & y_probas = this->dynamics_T[j_action][x];
+    auto got = y_probas.find(y);
+    return got == y_probas.end() ? 0 : got->second;
+}
+
+double Problem_Data::get_z_proba(int y, int j_action, int z){
+    const auto & z_probas = this->dynamics_O[j_action][y];
+    auto got = z_probas.find(z);
+    return got == z_probas.end() ? 0 : got->second;
+}
+
+double Problem_Data::get_proba_u_x_z(int u, int x, int z){
+    const auto & z_probas = this->probas_u_x_z[u][x];
+    auto got = z_probas.find(z);
+    return got == z_probas.end() ? 0 : got->second;
+}
+
+
+void Problem_Data::finalize(bool set_obs_joint2indiv){
+    this->agents.clear();
+    for (int agent = 0; agent < this->agents_number; agent++)
+        this->agents.push_back(agent);
+
+    if (set_obs_joint2indiv){
+        this->_set_obs_joint2indiv();
+    }
+    this->_finalize_probas();
+
+    if (SEARCH.verbose >= utils::Verbose::medium){
+        cout << "Problem: "
+            << " states " << this->states_number
+            << " actions " << this->actions_joint_number
+            << " obs " << this->observations_joint_number
+            << endl; 
+    }
+}
+
+void Problem_Data::_finalize_probas(){
+    this->reachables_from_x.resize(this->states_number);
+    for (int x = 0; x < this->states_number; x++){
+        vector<vector<Reachable>> vec_x;
+        auto & reach_from_x = this->reachables_from_x.at(x);
+        for (int u = 0; u < this->actions_joint_number; u++){
+            vector<Reachable> vec_u;
+            double weight=0, weight2=0;
+            for (auto const & y_proba: this->dynamics_T[u][x]){
+                int y = y_proba.first;
+                double proba_y = y_proba.second;
+                weight += proba_y;
+                for (auto const & z_proba: this->dynamics_O[u][y]){
+                    double proba = proba_y * z_proba.second;
+                    weight2 += proba;
+                    int z = z_proba.first;
+                    if (this->get_proba_u_x_z(u, x, z) == 0)
+                        this->probas_u_x_z[u][x][z] = proba;
+                    else
+                        this->probas_u_x_z[u][x][z] += proba;
+                    auto indiv_obs = this->observations_joint2indiv[z];
+                    vec_u.push_back(Reachable{y, proba, z});
+                    reach_from_x.insert(make_pair(y, z));
+                }
+            }
+            vec_x.push_back(vec_u);
+
+            //-- check accuracy
+	        assert(abs(weight - 1) < 1e-5);
+            assert(abs(weight2 - 1) < 1e-5);
+        }
+        reachables_from_x_u.push_back(vec_x);
+    }
+
+}
+
+void Problem_Data::_set_obs_joint2indiv_recur(int agent, vector<int> &obs_sequence){
+    if (agent == this->agents_number){
+        int obs_joint = utils::get_jointIndex(obs_sequence, this->observations_number_byAgent, this->agents_number);
+        this->observations_joint2indiv[obs_joint] = obs_sequence;
+        return;
+    }
+    for (int obs = 0; obs < this->observations_number_byAgent[agent]; obs++){
+        vector<int> new_sequence = obs_sequence;
+        new_sequence.push_back(obs);
+        _set_obs_joint2indiv_recur(agent + 1, new_sequence);
+    }
+}
+
+/// @brief build observations_joint2indiv to find individual observations from a joint number
+void Problem_Data::_set_obs_joint2indiv(){
+    this->observations_joint2indiv.resize(this->observations_joint_number);
+    vector<int> empty_seq;
+    this->_set_obs_joint2indiv_recur(0, empty_seq);
+}
+
+
+
+string get_problem_repr(){
+    using namespace utils;
+    auto color = Colors::magenta;
+    ostringstream msg;
+
+    //-- problem title
+    if (SEARCH.verbose){
+        msg << _get_colorStr({color, Colors::bold})
+            << "PROBLEM: " << PROBLEM.bench_name
+            << " horizon " << SEARCH.horizon 
+            << " agents " << PROBLEM.agents_number
+            << _get_colorStr(Colors::reset)
+            << endl;
+    }
+
+    //-- bench infos
+    if (SEARCH.verbose >= Verbose::medium){
+        msg << _get_colorStr(color)
+            << "\t states_number: " << PROBLEM.states_number
+            << " actions_joint_number: " << PROBLEM.actions_joint_number
+            << " observations_joint_number: " << PROBLEM.observations_joint_number
+            << endl
+            << "\t belief_init: " << PROBLEM.belief_init.transpose()
+            << _get_colorStr(Colors::reset)
+            << endl;
+    }
+
+    return msg.str();
+}
+
+string get_search_repr(){
+    using namespace utils;
+    auto color = Colors::cyan;
+    ostringstream msg;
+    if (SEARCH.verbose){
+        msg << _get_colorStr({color, Colors::bold})
+            << "ALGO: " << SEARCH.algo_name
+            << " LPE " << (SEARCH.compress ? "yes": "no")
+            << " MemoryLength " << SEARCH.truncation 
+            << _get_colorStr(Colors::reset)
+            << endl;
+    }
+
+    return msg.str();
+}
+
+
+}
\ No newline at end of file
diff --git a/code/src/core/common.hpp b/code/src/core/common.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..413c840d20abff1be12772f12fb1726e8e14215e
--- /dev/null
+++ b/code/src/core/common.hpp
@@ -0,0 +1,143 @@
+#pragma once
+
+#include <vector>
+#include <string>
+#include <random>
+#include <chrono>
+#include <unordered_map>
+#include <unordered_set>
+#include <sstream>
+
+
+#include "utils.hpp"
+#include "linear_algebra/Vector.hpp"
+#include "linear_algebra/matrix.hpp"
+
+
+namespace common{
+using namespace std;
+using namespace algebra;
+
+    /// @brief Problem definition.
+    /// Contains data: discount factor, agents name, reward matrix ...
+    /// x is the current state , y the next state, z the observation, u the control value
+    struct Problem_Data{
+
+        //-- general (names are optional)
+        double discount;
+        bool criterion_reward;
+        int agents_number;
+        vector<int> agents;
+        vector<string> agents_name; // optional
+        string bench_name;
+        //-- states
+        int states_number = -1;
+        Vector belief_init;
+        vector<string> states_name; // optional
+        unordered_map<string, int> names2states; // optional
+        //-- observations
+        int observations_joint_number;
+        vector<int> observations_number_byAgent;
+        vector<vector<string>> observations_names_byAgent; // optional
+        vector<unordered_map<string, int>> agents_names2obs; // optional
+        //-- actions
+        int actions_joint_number;  
+        vector<int> actions_number_byAgent;   
+        vector<vector<string>> actions_names_byAgent; // optional
+        vector<unordered_map<string, int>> agents_names2actions; // optional
+        //-- rewards  
+        Matrix<double> rewards_matrix; // (x,u)
+        //-- dynamics
+        unordered_map<int, unordered_map<int, unordered_map<int, double>>> dynamics_T; // dynamics_T[u][x][y]: p(y |u, x)
+        unordered_map<int, unordered_map<int, unordered_map<int, double>>> dynamics_O; // dynamics_O[u][y][z]: p(z |u,y)
+        
+        //-- additional data to allow fast computation (set in finalize())
+        int last_agent;
+        unordered_map<int, unordered_map<int, unordered_map<int, double>>> probas_u_x_z; // p(z |x,u)
+        vector<vector<int>> observations_joint2indiv;
+        struct Reachable{
+            int y;
+            double proba;
+            int joint_obs;
+        };
+        vector<vector<vector<Reachable>>> reachables_from_x_u; // reachables_from_x_u[x][u] = a vector of Reachable
+        vector<unordered_set<pair<int, int>, utils::Pair_Hash<int,int>>> reachables_from_x; // reachables_from_x[x] = a set of (x, obs)
+
+        //-- utils
+        double get_y_proba(int x, int j_action, int y);
+        double get_z_proba(int y, int j_action, int z);
+        double get_proba_u_x_z(int u, int x, int z);
+
+        //-- to compute additional data
+        void finalize(bool set_obs_joint2indiv = true);
+
+    protected:
+        void _finalize_probas();
+        void _set_obs_joint2indiv();
+        void _set_obs_joint2indiv_recur(int agent, vector<int> &obs_sequence);
+
+    }inline PROBLEM;
+
+
+    enum Solvers_DecisionRules{enumeration, milp, wcsp};
+    inline string SOLVERS_DRS_STR[3] = {"enumeration", "milp", "wcsp"};
+    enum Relaxation{mdp, pomdp};
+
+    struct Search_Parameters{
+        //-- general
+        int seed;
+        int horizon;
+        double timeout; // in seconds
+        int iter_max;
+        string log_filename;
+        utils::Verbose verbose;
+        string algo_name;
+        Solvers_DecisionRules solver_drs;
+        Relaxation relaxation;
+        //-- POMDP
+        double timeout_POMDP;
+        //-- compression
+        bool compress;
+        int truncation;
+        double compress_threshold;
+        //-- PBVI
+        double pbvi_distance_threshold; // under this threshold, an oState is considered to already be in the pointSet 
+        int pbvi_candidates_number = 100; // number of random decision rule tried by oState
+        //-- HSVI
+        double width_tolerance = 1e-3;
+        //-- RL
+        double lr_critic_start;
+        double lr_actor_start;
+        float epsilon_start;
+        //-- oSarsa
+        bool use_reward_shaping; // for sequential-oSarsa
+        bool use_portfolio;
+        bool use_simulatedAnnealing;
+
+        void start(){
+            utils::seed_init(this->seed, this->verbose);
+            this->reset_time();
+        }
+
+        void reset_time(){
+            MARKTIME
+        }
+
+        double get_time(){
+            return TIME;
+        }
+
+        bool is_timeout(){
+            return TIME > this->timeout;
+        }
+        bool is_timeout_POMDP(){
+            return TIME > this->timeout_POMDP;
+        }
+
+    }inline SEARCH;
+
+
+    //-- print
+    string get_problem_repr();
+    string get_search_repr();
+}
diff --git a/code/src/core/exception.hpp b/code/src/core/exception.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..a5efccea7d7c48f0d810d74a8bc495dc68afc131
--- /dev/null
+++ b/code/src/core/exception.hpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include "utils.hpp"
+
+#include <cstring>
+#include <exception>
+#include <sstream>
+
+
+namespace sdm_exception{
+    using namespace std;
+
+    enum Exception_Type{timeout, cplex, toulbar, parser, unitaryTest, option, bad_joke};
+    inline const int EXCEPTIONS_NUMBER = 7;
+    inline string EXCEPTIONS_STR[EXCEPTIONS_NUMBER] = {"timeout", "cplex", "toulbar", "parser", "unitary test", "option", "bad_joke"};
+
+    class Exception : virtual public std::exception{
+        Exception_Type type;
+        string error_message;
+
+    public:
+        explicit Exception(Exception_Type type, const string &msg_): type(type), error_message(msg_){}
+
+        void print(){
+            ostringstream msg;
+            msg << "EXCEPTION " << EXCEPTIONS_STR[type] << ": " << error_message << endl;
+            utils::_print_color(utils::Colors::red, msg.str());
+        }
+        
+    };
+
+}
\ No newline at end of file
diff --git a/code/src/core/linear_algebra/Vector.hpp b/code/src/core/linear_algebra/Vector.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..33b4bba672b1cc58a931849705318ec15ea9eab0
--- /dev/null
+++ b/code/src/core/linear_algebra/Vector.hpp
@@ -0,0 +1,73 @@
+#pragma once
+
+#include <eigen3/Eigen/Dense>
+
+
+
+namespace algebra{  
+  using namespace std;
+  
+    //-- colVector is an Eigen::Matrix of dimension: size x 1
+  template <typename T = double>
+  using colVector = Eigen::Matrix<T, Eigen::Dynamic, 1>;
+
+  //-- _Vector iherit form colVector, so it is an Eigen::Matrix.  
+  //--    Hence one can also use inherited methods/operators from Eigen:
+  //--    e.g. resize(int), size(), sum(), ==, []
+  template <typename T = double>
+  struct _Vector: public colVector<T>{
+
+    _Vector(): colVector<T>(0){};
+
+    _Vector(size_t size): colVector<T>(size){};
+
+    _Vector(size_t size, T val): colVector<T>(size){
+      this->setConstant(val);
+    };
+
+    _Vector(const initializer_list<T> & list): colVector<T>(list.size()){      
+      int i = 0;
+      for (const T val: list){
+        (*this)(i++) = val;
+      }
+    }
+
+    _Vector(const vector<T> & list): colVector<T>(list.size()){      
+      int i = 0;
+      for (const T val: list){
+        (*this)(i++) = val;
+      }
+    }
+    
+    T max() const{
+      return this->maxCoeff();
+    }
+
+    T min() const{
+      return this->minCoeff();
+    }
+
+    T operator^(const _Vector& other) const {
+      return this->dot(other);
+    }
+    
+    T operator<=(const _Vector& other) const {
+      return ((this->array() - other.array()) <= 0).all();
+    }
+
+    T operator+(const _Vector& other) const{
+      return this->array() + other.array();
+    }
+    
+    void expand(int n_val){
+      this->conservativeResize(this->size() + n_val);  
+    }
+    
+  };
+
+  using Vector = _Vector<double>;
+  using Vector_int = _Vector<int>;
+
+  
+  
+}
diff --git a/code/src/core/linear_algebra/matrix.hpp b/code/src/core/linear_algebra/matrix.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..7579a5175d5da9d0328122c0c7c37976563f49df
--- /dev/null
+++ b/code/src/core/linear_algebra/matrix.hpp
@@ -0,0 +1,41 @@
+#pragma once
+
+#include <eigen3/Eigen/Dense>
+
+
+namespace algebra{
+  template <typename T = double>
+  using dynMatrix = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>;
+
+  template <typename T = double>
+  class Matrix: public dynMatrix<T>{
+    public:
+    Matrix(): dynMatrix<T>(0, 0){};
+    Matrix(size_t rows, size_t cols): dynMatrix<T>(rows, cols){};
+    Matrix(size_t rows, size_t cols, T val): dynMatrix<T>(rows, cols){
+      this->init(val);
+    };
+
+    void init(T val){
+      this->setConstant(val);
+    }
+
+    T max() const{
+      return this->maxCoeff();
+    }
+
+    T min() const{
+      return this->minCoeff();
+    }
+
+    /// @brief return the max value of a the i^th col (resp. the i^th row) for dim = 0 (resp. dim = 1)  
+    T max(int dim, int i){
+      return dim == 0 ? this->col(i).maxCoeff(): this->row(i).maxCoeff();
+    }
+
+    /// @brief return the min value of a the i^th col (resp. the i^th row) for dim = 0 (resp. dim = 1)  
+    T min(int dim, int i){
+      return dim == 0 ? this->col(i).minCoeff(): this->row(i).minCoeff();
+    }
+  };
+}
diff --git a/code/src/core/linear_algebra/tensor.hpp b/code/src/core/linear_algebra/tensor.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..9f5883e188e45cbd64d44f6a7ed80e9a7ceec755
--- /dev/null
+++ b/code/src/core/linear_algebra/tensor.hpp
@@ -0,0 +1,37 @@
+#pragma once
+#include <eigen3/unsupported/Eigen/CXX11/Tensor>
+
+
+namespace algebra{
+  using dynTensor1 = Eigen::Tensor<double, 1>;
+  using dynTensor2 = Eigen::Tensor<double, 2>;
+  using dynTensor3 = Eigen::Tensor<double, 3>;
+  using dynTensor4 = Eigen::Tensor<double, 4>;
+  
+  class Tensor1: public dynTensor1{
+    public:
+    Tensor1(): dynTensor1(0){};
+    Tensor1(int dim1): dynTensor1(dim1){};
+    Tensor1(int dim1, double val): Tensor1(dim1){
+        this->setConstant(val);
+    }
+  };
+
+  class Tensor3: public dynTensor3{
+    public:
+    Tensor3(): dynTensor3(0, 0, 0){};
+    Tensor3(int dim1, int dim2, int dim3): dynTensor3(dim1, dim2, dim3){};
+    Tensor3(int dim1, int dim2, int dim3, double val): Tensor3(dim1, dim2, dim3){
+        this->setConstant(val);
+    }
+  };
+
+  class Tensor4: public dynTensor4{
+    public:
+    Tensor4(): dynTensor4(0, 0, 0, 0){};
+    Tensor4(int dim1, int dim2, int dim3, int dim4): dynTensor4(dim1, dim2, dim3, dim4){};
+    Tensor4(int dim1, int dim2, int dim3, int dim4, double val): Tensor4(dim1, dim2, dim3, dim4){
+        this->setConstant(val);
+    }
+  };
+}
diff --git a/code/src/core/options.cpp b/code/src/core/options.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..acb8a743a1b5d3290935c021b44641dfbc6f10e9
--- /dev/null
+++ b/code/src/core/options.cpp
@@ -0,0 +1,143 @@
+#include "options.hpp"
+
+namespace sdmsOptions{
+using namespace std;
+using namespace common;
+
+void set(int argv, char** args){
+
+    //-- default values
+    string algo_name = "oSarsa";
+    string bench_name = "tiger";
+    int horizon = 3;
+    int agents_number = 2;
+    int truncation = 3;
+    int iter_max = 100;
+    int seed = -1;
+    double timeout = 600;
+    string log_filename = "";
+    int verbose = utils::Verbose::medium;
+    bool compress = false;
+    double compress_threshold = 1e-8;
+    double pbvi_distance_threshold = 1e-2;
+    double lr_actor_start = 1e-3;
+    double lr_critic_start = 1e-2;
+    double epsilon_start = .5;
+    string relaxation = "mdp";
+	bool use_reward_shaping = false; // sequential oSarsa
+	bool use_portfolio = true; // oSarsa
+	bool use_simulatedAnnealing = true; // oSarsa
+
+
+#ifdef BOOST
+    namespace po = boost::program_options;
+	po::options_description desc("Allowed options");
+    desc.add_options()
+	("help,h", "produce help message")
+	("algo-name,n", po::value<string>(&algo_name)->default_value(algo_name), "algo name")
+	("problem-name,f", po::value<string>(&bench_name)->default_value(bench_name), "benchmark name -- e.g. mabc, recycling, tiger, boxPushingUAI07, Grid3x3corners, Mars")
+	("planning-horizon,p", po::value<int>(&horizon)->default_value(horizon), "planning horizon")
+	("agents-number,N", po::value<int>(&agents_number)->default_value(agents_number), "number of agents")
+	("memory,m", po::value<int>(&truncation)->default_value(truncation), "history max length (TPE compression) >= 1")
+	("iterations,i", po::value<int>(&iter_max)->default_value(iter_max), "algorithm iterations number")
+	("seed,s", po::value<int>(&seed)->default_value(seed), "the seed -- if -1 then random seed")
+	("timeout,t", po::value<double>(&timeout)->default_value(timeout), "algorithm timeout (in seconds))")
+	("log_filename,l", po::value<string>(&log_filename)->default_value(log_filename), "logger filename (save in csv format) -- if empty, do not save")  
+	("verbose,v", po::value<int>(&verbose)->default_value(verbose), "verbose -- none = 0, low = 1, medium = 2, high = 3")
+	("compress,c", po::value<bool>(&compress)->default_value(compress), "use LPE compression -- 0 or 1")
+	("compress-thresh,C", po::value<double>(&compress_threshold)->default_value(compress_threshold), "compression threshold")
+	("pbvi_distance_threshold,d", po::value<double>(&pbvi_distance_threshold)->default_value(pbvi_distance_threshold), "threshold to consider wether occupancy states are similar (PBVI algorithm)")
+  	("lr-actor-start,a", po::value<double>(&lr_actor_start)->default_value(lr_actor_start), "initial learning rate for actor")
+	("lr-critic-start,b", po::value<double>(&lr_critic_start)->default_value(lr_critic_start), "initial learning rate for critic")
+	("epsilon_start,e", po::value<double>(&epsilon_start)->default_value(epsilon_start), "initial epsilon-greedy value")
+	("relaxation,r", po::value<string>(&relaxation)->default_value(relaxation), "relaxation -- in {mdp, pomdp}")
+	("use-rew-shaping,u", po::value<bool>(&use_reward_shaping)->default_value(use_reward_shaping), "use reward shaping (oSarsa sequential) -- 0 or 1")
+	("use-portfolio,P", po::value<bool>(&use_portfolio)->default_value(use_portfolio), "use portfolio (oSarsa) -- 0 or 1")
+	("use-simulated-annealing,S", po::value<bool>(&use_simulatedAnnealing)->default_value(use_simulatedAnnealing), "use simulated annealing (oSarsa) -- 0 or 1")
+	;
+
+	po::variables_map vm;
+	po::store(po::parse_command_line(argv, args, desc), vm);
+	if(vm.count("help")){
+		cout << "Basic Command Line Parameter" << endl << desc << endl;
+		throw sdm_exception::Exception(sdm_exception::option, "help");
+	}
+	po::notify(vm);
+#else
+    Args_Parser input(argv, args);
+
+    if(input.exists("--algo-name"))         algo_name = input.get("--algo-name");
+	else if(input.exists("-n"))             algo_name = input.get("-n");
+	if(input.exists("--problem-name"))      bench_name = input.get("--problem-name");
+	else if(input.exists("-f"))             bench_name = input.get("-f");
+	if(input.exists("--planning-horizon"))	horizon = stoi(input.get("--planning-horizon"));
+	else if(input.exists("-p"))		        horizon = stoi(input.get("-p"));
+	if(input.exists("--agents-number"))		agents_number = stoi(input.get("--agents-number"));
+	else if(input.exists("-N"))		        agents_number = stoi(input.get("-N"));
+	if(input.exists("--memory"))            truncation = stoi(input.get("--memory"));
+	else if(input.exists("-m"))             truncation = stoi(input.get("-m"));
+	if(input.exists("--iterations"))        iter_max = stoi(input.get("--iterations"));
+	else if(input.exists("-i"))             iter_max = stoi(input.get("-i"));
+	if(input.exists("--seed"))              seed = stoi(input.get("--seed"));
+	else if(input.exists("-s"))		        seed = stoi(input.get("-s"));
+	if(input.exists("--timeout"))           timeout = stof(input.get("--timeout"));
+	else if(input.exists("-t"))		        timeout = stof(input.get("-t"));
+	if(input.exists("--log_filename"))		log_filename = input.get("--log_filename");
+	else if(input.exists("-l"))		        log_filename = input.get("-l");
+	if(input.exists("--verbose"))		    verbose = stoi(input.get("--verbose"));
+	else if(input.exists("-v"))		        verbose = stoi(input.get("-v"));
+	if(input.exists("--compress"))		    compress = stoi(input.get("--compress"));
+	else if(input.exists("-c"))		        compress = stoi(input.get("-c"));
+	if(input.exists("--compress-thresh"))	compress_threshold = stod(input.get("--compress-thresh"));
+	else if(input.exists("-C"))		        compress_threshold = stod(input.get("-C"));
+	if(input.exists("--pbvi_distance_threshold"))	pbvi_distance_threshold = stof(input.get("--pbvi_distance_threshold"));
+	else if(input.exists("-d"))		                pbvi_distance_threshold = stof(input.get("-d"));
+	if(input.exists("--lr-actor-start"))	lr_actor_start = stof(input.get("--lr-actor-start"));
+	else if(input.exists("-a"))		        lr_actor_start = stof(input.get("-a"));
+	if(input.exists("--lr-critic-start"))	lr_critic_start = stof(input.get("--lr-critic-start"));
+	else if(input.exists("-b"))		        lr_critic_start = stof(input.get("-b"));
+	if(input.exists("--epsilon_start"))		epsilon_start = stof(input.get("--epsilon_start"));
+	else if(input.exists("-e"))		        epsilon_start = stof(input.get("-e"));
+	if(input.exists("--use-rew-shaping"))	use_reward_shaping = stoi(input.get("--use-rew-shaping"));
+	else if(input.exists("-u"))		        use_reward_shaping = stoi(input.get("-u"));
+	if(input.exists("--use-portfolio"))	use_portfolio = stoi(input.get("--use-portfolio"));
+	else if(input.exists("-P"))		        use_portfolio = stoi(input.get("-P"));
+	if(input.exists("--use-simulated-annealing"))	use_simulatedAnnealing = stoi(input.get("--use-simulated-annealing"));
+	else if(input.exists("-S"))		        use_simulatedAnnealing = stoi(input.get("-S"));
+#endif
+
+
+    SEARCH.algo_name = algo_name;
+    PROBLEM.bench_name = bench_name;
+    PROBLEM.agents_number = agents_number;
+    SEARCH.horizon = horizon;
+    SEARCH.truncation = truncation;
+    SEARCH.iter_max = iter_max;
+    SEARCH.seed = seed;
+    SEARCH.timeout = timeout;
+    SEARCH.log_filename = log_filename;
+    SEARCH.verbose = (utils::Verbose)verbose;
+    SEARCH.compress = compress;
+    SEARCH.compress_threshold = compress_threshold;
+    SEARCH.pbvi_distance_threshold = pbvi_distance_threshold;
+    SEARCH.lr_actor_start = lr_actor_start;
+    SEARCH.lr_critic_start = lr_critic_start;
+    SEARCH.epsilon_start = epsilon_start;
+	SEARCH.use_reward_shaping = use_reward_shaping;
+	SEARCH.use_portfolio = use_portfolio;
+	SEARCH.use_simulatedAnnealing = use_simulatedAnnealing;
+
+
+    SEARCH.timeout_POMDP = min(50.0, SEARCH.timeout / 10.0);
+	if (SEARCH.truncation == -1)
+		SEARCH.truncation = SEARCH.horizon - 1;
+	if (relaxation.compare("mdp") == 0)
+		SEARCH.relaxation = Relaxation::mdp;
+	else if (relaxation.compare("pomdp") == 0)
+		SEARCH.relaxation = Relaxation::pomdp;
+	else
+		throw sdm_exception::Exception(sdm_exception::option, "unknown Relaxation");
+
+}
+
+} // end namespace
\ No newline at end of file
diff --git a/code/src/core/options.hpp b/code/src/core/options.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..c4d06cfd8feee8cf459666a71af2268e2f3172e1
--- /dev/null
+++ b/code/src/core/options.hpp
@@ -0,0 +1,39 @@
+#pragma once
+
+#include "exception.hpp"
+#include "common.hpp"
+#ifdef BOOST
+    #include <boost/program_options.hpp>
+#endif
+
+
+namespace sdmsOptions{
+    using namespace std;
+
+
+    void set(int argv, char** args);
+
+
+    class Args_Parser{
+        vector <string> tokens;
+    public:
+            Args_Parser(int &argc, char **argv){
+                for (int i = 1; i < argc; ++i)
+                    this->tokens.push_back(string(argv[i]));
+            }
+
+            const string& get(const string &option) const{
+                auto itr =  find(this->tokens.begin(), this->tokens.end(), option);
+                if (itr != this->tokens.end() && ++itr != this->tokens.end()){
+                    return *itr;
+                }
+                static const string empty_string("");
+                return empty_string;
+            }
+
+            bool exists(const string &option) const{
+                return find(this->tokens.begin(), this->tokens.end(), option)
+                    != this->tokens.end();
+            }
+    };
+}
\ No newline at end of file
diff --git a/code/src/core/utils.cpp b/code/src/core/utils.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..e6b620de55a0ffcbc7c32ba596cd5cadca19a15f
--- /dev/null
+++ b/code/src/core/utils.cpp
@@ -0,0 +1,174 @@
+#include "utils.hpp"
+#include <iostream>
+#include <algorithm>
+#include <cmath>
+
+
+namespace utils{
+    
+    
+    /// @brief return an index for a joint action/obs
+    /// @param indiv_indices: individual actions/obs
+    /// @param max_indices: number of allowed action/obs by agent, /!\ required: > 0 for all agents 
+    /// @param agents_number: number of agents
+    /// @return the index, e.g. to construct rewards[x][u_index]
+    /// @example vector<int> a{1,0,0},b{2,1,2}; int index = get_jointIndex(a, b, 3);
+    int get_jointIndex(const vector<int>& indiv_indices, const vector<int>& max_indices, int agents_number){
+        // check inputs 
+        assert(indiv_indices.size() == (size_t)agents_number);
+        assert(max_indices.size() == (size_t)agents_number);
+        assert(all_of(max_indices.begin(), max_indices.end(), [](int number){return number > 0;}));
+
+        // compute index
+        int index = indiv_indices[agents_number - 1];
+        for (int i = agents_number - 2, product = 1; i >= 0; i--){
+            product *= max_indices[i + 1];
+            index += indiv_indices[i] * product;        
+        }
+        return index;
+    }
+
+    /// @brief Compute the inverse of get_jointIndex.
+    /// Fill indiv_indices.
+    /// @example vector<int> a{6,0,3},b{7,5,4}; int jointIndex = get_jointIndex(a, b, 3); get_indivIndices(a, b, 3, jointIndex);
+    vector<int> get_indivIndices(const vector<int>& max_indices, int agents_number, int jointIndex){
+        vector<int> indiv_indices(agents_number);
+        for (int agent = 0; agent < agents_number; agent ++){
+            int prod = accumulate(max_indices.begin() + agent + 1, max_indices.end(), 1, std::multiplies<int>());
+            int q = jointIndex / prod;
+            indiv_indices[agent] = q;
+            jointIndex = jointIndex % prod;
+        }
+        return indiv_indices;
+    }
+
+    /////////////////////////////
+    // ANSI 
+    // https://en.wikipedia.org/wiki/ANSI_escape_code
+    /////////////////////////////
+
+    string _get_colorStr(int color){
+        return "\033[" + std::to_string(color) + "m"; 
+    }
+
+    string _get_colorStr(initializer_list<int> color_list){
+        string msg;
+        for (int color: color_list)
+            msg += _get_colorStr(color);  
+        return  msg; 
+    }
+
+    void _print_color(int color, string msg){
+        cout << _get_colorStr(color) << msg << _get_colorStr(Colors::reset);
+    }
+
+    void _print_color(initializer_list<int> color_list, string msg){
+        cout << _get_colorStr(color_list) << msg << _get_colorStr(Colors::reset);
+    }
+
+    string get_solver_repr(string solver_name){
+        return _get_colorStr(Colors::cyan)  
+             + "===== " + solver_name + " =====" 
+             + _get_colorStr(Colors::reset);
+    }
+
+    string print_problem(string filename, int horizon, int agents_number){
+        return _get_colorStr({Colors::magenta, Colors::underline})
+                + "======== PROBLEM: " + filename 
+                + " horizon " + std::to_string(horizon) 
+                + " agents " + std::to_string(agents_number) 
+                + " ========" 
+                + _get_colorStr(Colors::reset);
+    }
+
+    void print_red(string msg){
+        _print_color(Colors::red, msg);
+    }
+
+    void print_green(string msg){
+        _print_color(Colors::green, msg);
+    }
+
+    void print_yellow(string msg){
+        _print_color(Colors::yellow, msg);
+    }
+
+    void print_magenta(string msg){
+        _print_color(Colors::magenta, msg);
+    }
+
+    void print_cyan(string msg){
+        _print_color(Colors::cyan, msg);
+    }
+
+    /////////////////////////////
+    // seed
+    /////////////////////////////
+
+    void seed_init(int seed, bool verbose){
+        if (seed == -1){ // random seed
+            MARKTIME
+            int wasting_time = utils::fast_calc::fastRandRange(10);
+            seed = TIME * 1e9 + wasting_time;
+        }
+        utils::fast_calc::seed_init(seed);
+        if (verbose){
+            cout << "=== seed init === " << seed << endl;
+        }
+    }
+
+    /////////////////////////////
+    // logger
+    /////////////////////////////
+
+    ///@brief Constructor: open file.
+    Logger::Logger(string filename, Verbose verbose, bool append_mode)
+    : filename(filename), verbose(verbose), append_mode(append_mode){
+        if (!this->filename.empty()){
+            if (this->verbose > utils::Verbose::low){
+                cout << "Logger open file" << this->filename << endl;
+                cout << "append_mode " << this->append_mode << endl;
+            }
+            if (!this->append_mode)
+                this->file.open(filename, ios::out | ios::trunc); // erase file content
+            else
+                this->file.open(filename, ios::out | ios::app); // will write at the end
+        }
+    }
+
+    ///@brief Destructor: close file.
+    Logger::~Logger(){
+        if (!this->filename.empty()){
+            if (this->verbose > utils::Verbose::low)
+                cout << "Logger close file" << this->filename << endl;
+            this->file.close();
+        }
+    }
+
+    /// @brief Write in file (write the list of string as a csv row, i.e. with "," separator).
+    /// @param list A list of string.
+    void Logger::write(const initializer_list<string> & list, double time){
+        this->last_write_time = time;
+        //-- print ?
+        if (this->verbose){
+            int width = 150 / (double)list.size();
+            for (auto it = list.begin(); it != list.end(); it++){
+                cout.width(width);
+                cout << *it;
+            }
+            cout << endl; 
+        }
+        //-- write in file ?
+        if (!this->filename.empty()){
+            for (auto it = list.begin(); it < list.end() - 1; it++)
+                this->file << *it << ",";
+            this->file << *(list.end() - 1) << endl; 
+        }
+    }
+
+    double Logger::get_time_sinceLastWrite(double current_time){
+        return current_time - this->last_write_time;
+    }
+
+
+}
\ No newline at end of file
diff --git a/code/src/core/utils.hpp b/code/src/core/utils.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..fdeba102b726e598138ed0e643c6e0ac1e2f1214
--- /dev/null
+++ b/code/src/core/utils.hpp
@@ -0,0 +1,174 @@
+#pragma once
+
+#include "assert.h"
+#include <vector>
+#include <cstdint>
+#include <iostream>
+#include <numeric>
+#include <functional>
+#include <bitset>
+#include <initializer_list>
+#include <string>
+#include <fstream>
+#include <sstream>
+#include <chrono>
+
+
+//-- define MARKTIME and TIME as a simple way to compute elapsed time
+inline std::chrono::high_resolution_clock::time_point now;
+#define MARKTIME now = std::chrono::high_resolution_clock::now();
+#define TIME std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::high_resolution_clock::now() - now).count()
+inline std::chrono::high_resolution_clock::time_point _now;
+#define _MARKTIME _now = std::chrono::high_resolution_clock::now();
+#define _TIME std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::high_resolution_clock::now() - _now).count()
+
+namespace utils{    
+    using namespace std;
+
+    int get_jointIndex(const vector<int>& , const vector<int>& , int );
+    vector<int> get_indivIndices(const vector<int>& max_indices, int agents_number, int jointIndex);
+
+    //-- ANSI
+    enum Colors:int{
+        black=30, red, green, yellow, blue, magenta, cyan, white, // foreground
+        black_b=40, red_b, green_b, yellow_b, blue_b, magenta_b, cyan_b, white_b, // background
+        reset=0, bold=1, underline=4, inverse=7, bold_off=21, underline_off=24, inverse_off=27 // inverse = swap foreground and background colours
+        };
+    string _get_colorStr(int color);
+    string _get_colorStr(initializer_list<int> color_list);
+    void _print_color(int color, string msg);
+    void _print_color(initializer_list<int> color_list, string msg);
+    string get_solver_repr(string solver_name);
+    void print_red(string msg);
+    void print_green(string msg);
+    void print_yellow(string msg);
+    void print_magenta(string msg);
+    void print_cyan(string msg);
+    
+
+    //-- product
+    template <typename T>
+    T get_product(const initializer_list<T> & list){
+        return accumulate(list.begin(), list.end(), 1, std::multiplies<T>());
+    }
+
+    template <typename T>
+    T get_product(const vector<T> & list){
+        return accumulate(list.begin(), list.end(), 1, std::multiplies<T>());
+    }
+
+    //-- kronecker
+    template<typename T>
+    inline double kronecker(T i, T j){
+        return i == j ? 1 : 0;
+    }
+
+    //-- hash
+    template <class T>
+    inline void hash_combine(size_t & s, const T & v)
+    {
+        hash<T> h;
+        s^= h(v) + 0x9e3779b9 + (s<< 6) + (s>> 2);
+    }
+
+    template <class T1, class T2>
+    struct Pair_Hash{// : unary_function<pair<T1, T2>, size_t> {
+        size_t operator()(pair<T1, T2> const& val) const {      
+            size_t seed = 0;
+            hash_combine(seed, val.first);
+            hash_combine(seed, val.second);            
+            return seed;
+        }
+    };
+
+    //-- binary
+
+    /// @brief Print the bits of a number.
+    template<typename T>
+    string get_binary_repr(T x){
+        ostringstream os;
+        os << "0b" << (bitset<8*sizeof(T)>(x));
+        return os.str();
+    }
+    
+    //-- seed
+    void seed_init(int seed = -1, bool verbose = true);
+
+    //-- fast calc
+    namespace fast_calc{
+        inline unsigned int g_seed;
+        ///@brief Seed the generator
+        inline void seed_init(int seed) {
+            g_seed = seed;
+        }
+        ///@brief returns one integer, similar output value range as C lib.
+        inline int _rand() {
+            g_seed = (214013*g_seed+2531011);
+            return (g_seed>>16)&0x7FFF;
+        }
+
+        inline int fastRandRange(int maxSize) { // return an integer from [0;maxSize[
+            return _rand() % maxSize;
+        }
+
+
+        ///@brief return an integer from [0;maxSize[
+        inline int rand_range(int maxSize) {
+            return _rand() % maxSize;
+        }
+        ///@brief return an integer from [a;b]
+        inline int rand_int(int a, int b) {
+            return(a + rand_range(b - a + 1));
+        }
+        ///@brief return a number in [0,1]
+        template<typename T = double>
+        inline T rand() {
+            return (static_cast<T>(_rand()) / 0x7FFF);
+        }
+        ///@brief return a double in [a, b]
+        inline double rand_double(double a, double b) {
+            return a + (static_cast<double>(_rand()) / 0x7FFF)*(b-a);
+        }
+        ///@brief return a size_t
+        template<typename T>
+        inline T rand_hash(){
+            static const int nb_bits = sizeof(T)*8;
+            T val = 0;
+            T one = 1;
+            for (int b=0; b<nb_bits; b++){
+                if (rand_double(0, 1) > 0.5)
+                    val |= (one<<b);
+            }
+            return val;
+        }
+        static inline double log(const double& x){
+            union{double f;uint32_t i;} vx = { x };
+            double y = vx.i;y *= 8.2629582881927490e-8f;
+            return(y - 87.989971088f);
+        }
+        static inline double sqrt(const double& x){
+            union{int i;double x;}u;u.x=x;u.i=(1<<29)+(u.i>>1)-(1<<22);
+            return(u.x);
+        }
+    }
+
+    //////////////////
+    // Logger
+    //////////////////
+    enum Verbose: int {none = 0, low = 1, medium = 2, high = 3};
+
+    class Logger{ 
+        fstream file;
+        string filename;
+        Verbose verbose;
+        bool append_mode;
+        double last_write_time;
+    public:
+
+        Logger(string filename, Verbose verbose, bool append_mode = false);
+        ~Logger();
+
+        void write(const initializer_list<string> & list, double time = 0);
+        double get_time_sinceLastWrite(double current_time);        
+    };
+}
diff --git a/code/src/decPOMDP/CMakeLists.txt b/code/src/decPOMDP/CMakeLists.txt
new file mode 100755
index 0000000000000000000000000000000000000000..5a5aacf50e346e5bf15a57d565ed80996bcc54c9
--- /dev/null
+++ b/code/src/decPOMDP/CMakeLists.txt
@@ -0,0 +1,4 @@
+cmake_minimum_required(VERSION 3.8)
+file(GLOB_RECURSE SRCS ${CMAKE_SOURCE_DIR}/src/decPOMDP/*.cpp)
+add_library(decPOMDP ${SRCS})
+target_link_libraries(decPOMDP ${CPLEX_LIBRARIES})
\ No newline at end of file
diff --git a/code/src/decPOMDP/core/HSVI_base.hpp b/code/src/decPOMDP/core/HSVI_base.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..7a039fa0776e2a5b9d258fa65600f2aca4c1a236
--- /dev/null
+++ b/code/src/decPOMDP/core/HSVI_base.hpp
@@ -0,0 +1,118 @@
+#pragma once
+
+#include "occupancy_state_base.hpp"
+
+
+namespace decPOMDP{
+
+
+template <class Occupancy_State = Occupancy_State_Base>
+class HSVI_Base {
+protected:
+
+    Occupancy_State oState0; // initial oState (from initial belief)
+    vector<double> width_tolerances; // for each time-step (discounted)
+
+    //-- log
+    utils::Logger logger;
+
+public:
+    HSVI_Base();
+    
+    int solve(); // return 0 if success else -1
+
+    virtual Point_Bounds get_bounds(Occupancy_State &) = 0;
+
+protected:
+    void _explore(Occupancy_State &);
+
+    virtual pair<Occupancy_State, Point_Bounds> _select_greedy(Occupancy_State &) = 0;
+    virtual void _set_bounds(Occupancy_State &, const Point_Bounds &) = 0;
+    virtual void _log_init() = 0;
+    virtual void _log(int iter) = 0;
+};
+
+
+
+template <class Occupancy_State>
+HSVI_Base<Occupancy_State>::HSVI_Base():
+    oState0(PROBLEM.belief_init),
+    logger(SEARCH.log_filename, SEARCH.verbose){
+
+    //-- tolerances
+    this->width_tolerances.resize(SEARCH.horizon);
+    for (int step = 0; step < SEARCH.horizon; step++)
+        this->width_tolerances.at(step) = SEARCH.width_tolerance * pow(PROBLEM.discount, step);
+}
+
+
+template <class Occupancy_State>
+int HSVI_Base<Occupancy_State>::solve(){
+
+    //-- verbose (solver info)
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:HSVI:solve()") << endl;
+    }
+
+    //-- logger (initialize)
+    this->_log_init();
+
+    //-- main loop
+    SEARCH.start();
+    int iter = 0;
+    this->_log(iter);
+    while(this->get_bounds(this->oState0).get_width() >= SEARCH.width_tolerance && iter++ < SEARCH.iter_max){
+        this->_explore(this->oState0);
+        this->_log(iter);
+    }
+    double final_gap = this->get_bounds(this->oState0).get_width();
+    bool success = abs(final_gap) <= SEARCH.width_tolerance;
+
+    //-- verbose (result info)
+    if (SEARCH.verbose){
+        double elapsed_time = SEARCH.get_time();
+        ostringstream msg;
+        msg << "elapsed_time " << elapsed_time << " final gap " << final_gap << " iter " << iter << endl;
+        if (success)
+            utils::_print_color(utils::Colors::green, msg.str());
+        else
+            utils::_print_color(utils::Colors::red, msg.str());
+    }
+
+    return (success ? 0 : -1);
+}
+
+
+/// @brief HSVI exploration (recurrent)
+template <class Occupancy_State>
+void HSVI_Base<Occupancy_State>::_explore(Occupancy_State & oState){
+    
+    //-- HSVI stopping criteria
+    if (oState.get_step() == SEARCH.horizon)
+        return;
+    double tolerance = this->width_tolerances.at(oState.get_step());
+    Point_Bounds bounds_init = this->get_bounds(oState);
+    if (bounds_init.get_width() < tolerance)
+        return;
+    
+    //-- greedy selection
+    auto [oState_next, bounds_greedy] = this->_select_greedy(oState);
+
+    if (bounds_greedy.get_width() > tolerance){
+        //-- explore next-time step
+        this->_explore(oState_next);
+
+        //-- re-evaluate upper bound. Useless for step = horizon - 1 as UB(horizon) = 0.
+        // if (oState.get_tau() < this->horizon_tau - 1){
+            tie(std::ignore, bounds_greedy) = this->_select_greedy(oState);
+        // }
+    }
+
+    //-- update bounds
+    bounds_greedy.lower = max(bounds_greedy.lower, bounds_init.lower); // ?? useful ?? //
+    bounds_greedy.upper = min(bounds_greedy.upper, bounds_init.upper); // ?? useful ?? //
+    this->_set_bounds(oState, bounds_greedy); 
+}
+
+
+}
diff --git a/code/src/decPOMDP/core/HSVI_tabular_base.hpp b/code/src/decPOMDP/core/HSVI_tabular_base.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..8c2abe0ebab166450a58300e1a1505a4831be6d7
--- /dev/null
+++ b/code/src/decPOMDP/core/HSVI_tabular_base.hpp
@@ -0,0 +1,83 @@
+#pragma once
+
+#include "HSVI_base.hpp"
+
+
+namespace decPOMDP{
+
+
+    template <class Occupancy_State = Occupancy_State_Base>
+    class HSVI_Tabular_Base: public HSVI_Base<Occupancy_State> {
+    
+    protected:
+        //-- we store the (tabular) values in a mapping: oState -> Point_Bounds (i.e. oState -> lower/upper bounds)
+        //--    Remark:
+        //--        The mapping uses the uncompressed version to hash/compare oStates.
+        //--        The reason is: _select_greedy() enumerate the decision rules, compute the oState successor, and then evaluate it. 
+        //--        It is too time-consuming to compress all the successors.
+        using oState_Bounds_Map = unordered_map<Occupancy_State, Point_Bounds, oStateHash_Uncompressed, oState_Equal_Uncompressed>;
+
+        //-- tabular value function
+        vector<oState_Bounds_Map> bounds; // oStates value bounds
+        vector<double> pessimist_values; // a pessimist value foreach time-step (for lower bounds init)
+        
+    public:
+        HSVI_Tabular_Base();
+
+        virtual Point_Bounds get_bounds(Occupancy_State &) = 0;
+
+    protected:
+        //-- log
+        virtual void _log_init();
+        virtual void _log(int iter);
+
+        //-- tabular
+        virtual pair<Occupancy_State, Point_Bounds> _select_greedy(Occupancy_State &) = 0;
+        virtual void _set_bounds(Occupancy_State &, const Point_Bounds &) = 0;
+
+        //-- relaxation (MDP or POMDP)
+        double _get_relaxation_value(Occupancy_State &);
+        virtual double _get_mdp_value(Occupancy_State &) = 0;
+    
+};
+
+
+
+template <class Occupancy_State>
+HSVI_Tabular_Base<Occupancy_State>::HSVI_Tabular_Base(): HSVI_Base<Occupancy_State>(){}
+
+
+template <class Occupancy_State>
+void HSVI_Tabular_Base<Occupancy_State>::_log_init(){
+    this->logger.write({"time", "iter", "L0 value", "U0 value", "gap0", "oStates number"});
+}
+
+
+template <class Occupancy_State>
+void HSVI_Tabular_Base<Occupancy_State>::_log(int iter){
+
+    //-- prepare data to log
+    Point_Bounds point_bounds = this->get_bounds(this->oState0);
+    ostringstream bound_stream;
+    for (auto const & bound: this->bounds)
+        bound_stream << bound.size() << " ";
+
+    //-- log
+    this->logger.write({
+                        to_string(SEARCH.get_time()), 
+                        to_string(iter),
+                        to_string(point_bounds.lower),
+                        to_string(point_bounds.upper),
+                        to_string(point_bounds.upper - point_bounds.lower),
+                        bound_stream.str()
+                        });
+}
+
+
+template <class Occupancy_State>
+double HSVI_Tabular_Base<Occupancy_State>::_get_relaxation_value(Occupancy_State & oState){
+    return this->_get_mdp_value(oState);
+}
+
+
+}
diff --git a/code/src/decPOMDP/core/_module.hpp b/code/src/decPOMDP/core/_module.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..897732ebec8287194c0259666c965c36301dfa57
--- /dev/null
+++ b/code/src/decPOMDP/core/_module.hpp
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "support.hpp"
+#include "decision_rule.hpp"
+#include "occupancy_state_base.hpp"
+#include "milp.hpp"
+#include "distribution.hpp"
+
+struct Point_Bounds{ // tabular algorithms utility (just two scalar values: lower/upper bounds)
+    double upper;
+    double lower;
+
+    Point_Bounds(){}
+    Point_Bounds(double lower, double upper): upper(upper), lower(lower){}
+    
+    double get_width()const{
+        return this->upper - this->lower;
+    }
+
+    friend std::ostream &operator<<(std::ostream &os, const Point_Bounds &bounds){
+        os << "[" << bounds.lower << " ; " << bounds.upper << "]";
+        return os;
+    }
+};
+
+#include "HSVI_base.hpp"
+#include "HSVI_tabular_base.hpp"
diff --git a/code/src/decPOMDP/core/decision_rule.cpp b/code/src/decPOMDP/core/decision_rule.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..5af19b7665f63ff42f4388983564bcca21836db9
--- /dev/null
+++ b/code/src/decPOMDP/core/decision_rule.cpp
@@ -0,0 +1,348 @@
+#include "decision_rule.hpp"
+
+namespace decPOMDP{
+
+Decision_Rule::Decision_Rule(){}
+Decision_Rule::Decision_Rule(RuleType type): type(type){}        
+Decision_Rule::Decision_Rule(int blind_action): type(RuleType::BLIND_DR), blind_action(blind_action){}
+
+int Decision_Rule::get_action(const Support & iHist, int agent){
+    int action;
+    auto got = this->iHist_action_map.find(iHist);
+
+    switch (this->type){
+        case RuleType::REGULAR:
+            if (got != this->iHist_action_map.end()){
+                action = got->second;
+            }
+            else{
+                action = this->default_action;
+            }
+            break;
+        case RuleType::RANDOM:
+            if (got != this->iHist_action_map.end()){
+                action = got->second;
+            }
+            else{
+                action = utils::fast_calc::rand_range(PROBLEM.actions_number_byAgent[agent]);
+                this->iHist_action_map[iHist] = action;
+            }
+            break;
+        case RuleType::BLIND_DR:
+            action = this->blind_action; 
+            break;
+        default:
+            assert(false);                        
+    }
+    return action;
+}
+
+void Decision_Rule::set_action(const Support & iHist, int action){
+    this->iHist_action_map[iHist] = action;
+}
+
+/// @brief Blind heuristic (do not use state nor observation): \\
+/// @brief argmax_{actions} min_{states} reward(state, action) 
+/// @return <the action, a lower bound for the reward>
+pair<int, double> Decision_Rule::blind_heuristic(){
+    double lower_bound = -INFINITY;
+    int heuristic_action;
+    for (int action = 0; action < PROBLEM.actions_joint_number; action++){            
+        double reward = PROBLEM.rewards_matrix.min(0, action);
+        if (reward > lower_bound){
+            lower_bound = reward;
+            heuristic_action = action;
+        }
+    }
+
+    return make_pair(heuristic_action, lower_bound);
+};
+
+
+/// @brief Myopic heuristic (use state + previous agents actions): \\
+/// @brief argmax_{u^{agent}} max_{u^{agent+1:}} reward(state, <u^{:agent-1},u^agent,u^{agent+1:}>) \\
+/// @brief i.e. the greedy individual action w.r.t reward(state, u) given u^{:agent-1} and assuming next agents will be greedy.
+/// @param supp: must contain x and u^{:agent-1}. Can contain history values (we will extract x and u).
+/*pair<int, double> Decision_Rule::myopic_heuristic(int agent, Support supp){
+    double lower_bound = -INFINITY;
+    int heuristic_iu;
+    for (int iu = 0; iu < PROBLEM.actions_number_byAgent.at(agent); iu++){
+        supp.set_iAction(agent, iu);
+        double reward;
+        if (agent == PROBLEM.last_agent){
+            int ju = supp.get_jAction();
+            reward = PROBLEM.rewards_matrix(supp.get_hiddenState(), ju);
+cout << "\t ju " << ju << " r " << reward << endl;
+        }
+        else{
+            tie(std::ignore, reward) = Decision_Rule::myopic_heuristic(agent + 1, supp);
+        }
+        if (reward > lower_bound){
+            lower_bound = reward;
+            heuristic_iu = iu;
+        }
+    }
+    return make_pair(heuristic_iu, lower_bound);
+}*/
+
+
+///@brief Worst heuristic: 
+/// argmin_{actions} min_{states} reward(state, action)
+///@return <the action, a lower bound for the reward>
+pair<int, double> Decision_Rule::worst_heuristic(){
+    double lower_bound = INFINITY;
+    int heuristic_action;
+    for (int action = 0; action < PROBLEM.actions_joint_number; action++){    
+        double reward = PROBLEM.rewards_matrix.min(0, action);
+        if (reward < lower_bound){
+            lower_bound = reward;
+            heuristic_action = action;
+        }
+    }
+    return make_pair(heuristic_action, lower_bound);
+}
+
+///@brief Lucky heuristic: 
+/// argmax_{actions} max_{states} reward(state, action)
+///@return <the action, a higher bound for the reward>
+pair<int, double> Decision_Rule::lucky_heuristic(){
+    double higher_bound = -INFINITY;
+    int heuristic_action;
+    for (int action = 0; action < PROBLEM.actions_joint_number; action++){    
+        double reward = PROBLEM.rewards_matrix.max(0, action);
+        if (reward > higher_bound){
+            higher_bound = reward;
+            heuristic_action = action;
+        }
+    }
+    return make_pair(heuristic_action, higher_bound);
+}
+
+size_t Decision_Rule::size() const{
+    return this->iHist_action_map.size();
+}
+
+bool Decision_Rule::operator==(const Decision_Rule & other) const{
+    return this->iHist_action_map == other.iHist_action_map;
+}
+
+string Decision_Rule::get_repr(int agent, int step) const{
+    ostringstream os;
+    if (this->default_action != ACTION_NOT_FOUND)
+        os << "default_action " << this->default_action << endl;
+    for (const auto & iHist_action: this->iHist_action_map){
+        os << " <agent" << agent << ">";
+        os << "  hist: " ;
+        for (int oldness = min(SEARCH.truncation, step) - 1; oldness >= 0; oldness--){
+            int z = iHist_action.first.get_observation(agent, oldness);
+            os << " " << z;
+        }
+        os << " action: " <<  iHist_action.second << endl;
+    }
+    return os.str();
+}
+
+ostream &operator<<(ostream &os, const Decision_Rule &d){
+    for (auto & iHist_action: d.iHist_action_map){
+        os << iHist_action.first << " => " <<  iHist_action.second << endl;
+    }
+    return os;
+}
+
+//------------------------------------
+//-- Joint_DecisionRule
+//------------------------------------
+Joint_DecisionRule::Joint_DecisionRule(){};
+Joint_DecisionRule::Joint_DecisionRule(int nb_agents): decision_rules(nb_agents){}
+Joint_DecisionRule::Joint_DecisionRule(const vector<Decision_Rule> & drs): decision_rules(drs){}
+
+int Joint_DecisionRule::get_iAction(int agent, const Support & ih){
+    return this->decision_rules.at(agent).get_action(ih);
+}
+
+void Joint_DecisionRule::set_iAction(int agent, const Support & ih, int action){
+    this->decision_rules.at(agent).set_action(ih, action);
+}
+
+/// @brief Return a joint action.
+/// @param supp a joint_history (can contain extra values: we will extract individual histories)
+int Joint_DecisionRule::get_jAction(const Support & supp){
+    Support temp;
+    for (int agent: PROBLEM.agents){
+        int iAction = this->get_iAction(agent, supp.get_iHistory(agent));
+        if (iAction == ACTION_NOT_FOUND)
+            return ACTION_NOT_FOUND;
+        temp.set_iAction(agent, iAction);
+    }
+    return temp.get_jAction();
+}
+
+void Joint_DecisionRule::set_jAction(const Support & supp, int action){
+    Support temp;
+    temp.set_jAction(action);
+    for (int agent: PROBLEM.agents){
+        int iu = temp.get_iAction(agent);
+        this->set_iAction(agent, supp.get_iHistory(agent), iu);
+    }
+}
+
+void Joint_DecisionRule::set_default_actions(vector<int> actions){
+    for (int agent: PROBLEM.agents){
+        this->decision_rules.at(agent).default_action = actions.at(agent);
+    }
+}
+
+
+ostream &operator<<(ostream &os, const Joint_DecisionRule & jdr){
+    int nb_agents = jdr.decision_rules.size();
+    for (int agent = 0; agent < nb_agents; agent++)
+        os << "** agent " << agent << endl << jdr.decision_rules.at(agent);
+    return os;
+}
+
+string Joint_DecisionRule::get_repr(int step) const{
+    ostringstream os;
+    int nb_agents = this->decision_rules.size();
+    for (int agent = 0; agent < nb_agents; agent++){
+        if (agent > 0)
+            os << "\t -------------- \n";
+        os <<  this->decision_rules.at(agent).get_repr(agent, step);
+    }
+    return os.str();
+}
+
+
+//------------------------------------
+//-- policy
+//------------------------------------
+
+Policy::Policy(int horizon, int nb_agents): joint_drs(horizon, Joint_DecisionRule(nb_agents)){}
+
+int Policy::get_iAction(int step, int agent, const Support & ih){
+    return this->joint_drs.at(step).get_iAction(agent, ih);
+}
+
+/// @brief Return a joint action.
+/// @param supp a joint_history (can contain x or u values: we will extract individual histories)
+int Policy::get_jAction(int step, const Support & supp){
+    return this->joint_drs.at(step).get_jAction(supp);
+}
+
+Decision_Rule & Policy::get_decisionRule(int step, int agent){
+    return this->joint_drs.at(step).decision_rules.at(agent);
+}
+
+Joint_DecisionRule & Policy::get_joint_decisionRule(int step){
+    return this->joint_drs.at(step);
+}
+
+
+void Policy::set_decisionRule(int step, int agent, const Decision_Rule & dr){
+    this->joint_drs.at(step).decision_rules.at(agent) = dr;
+}
+
+ostream &operator<<(ostream &os, const Policy & pi){
+    int horizon = pi.joint_drs.size();
+    for (int step = 0; step < horizon; step++){
+        const auto & jdr = pi.joint_drs.at(step);
+        os << "==== Step " << step << endl
+           << jdr.get_repr(step);
+    }
+    return os;
+}
+
+///////////////////////////
+// Variations_Generator
+//////////////////////////
+
+vector<Decision_Rule> Variations_Generator::get_decision_rules(const unordered_set<Support> & iHistories, int actions_number){
+    // get variations
+    int variations_length = iHistories.size();
+    const Variations & variations = this->_get_variations(variations_length, actions_number);
+    int variations_number = variations.size();
+
+    // generate decision rules
+    vector<Decision_Rule> decision_rules(variations_number);
+    for (int i = 0; i < variations_number; i++){
+        Decision_Rule & dr = decision_rules.at(i);
+        int j = 0;
+        for (const Support & iHist: iHistories){
+            dr.set_action(iHist, variations.at(i).at(j++));
+        }
+    }
+    return decision_rules;
+}
+
+void Variations_Generator::clear(){
+    this->variations_map.clear();
+}
+
+Variations& Variations_Generator::_get_variations(int length, int actions_number){
+    //-- already generated ?
+    if (this->STORE){
+        auto got = this->variations_map.find(length);
+        if (got != this->variations_map.end()){
+            auto got2 = got->second.find(actions_number);
+            if (got2 != got->second.end()){
+                return got2->second;
+            }
+        }
+    }
+    // generate 
+    int n_variations = pow<int, int>(actions_number, length); 
+    assert(0 <= n_variations && n_variations < (int)1e8);
+    vector<int> vec(length, ACTION_NOT_FOUND);
+    this->variations = Variations(n_variations, vec);            
+    this->length = length;
+    this->actions_number = actions_number;
+    this->num_variation = 0;
+    this->_generate(0, vec);
+    if (this->STORE){
+        this->variations_map[length][actions_number] = this->variations;
+    }
+    return this->variations;//this->variations_map.at(length).at(actions_number);
+}
+
+void Variations_Generator::_generate(int depth, const vector<int> &variation){
+    if (depth == this->length){
+        variations.at(num_variation++) = variation;
+        return;
+    }
+    for (int action = 0; action < actions_number; action++){
+        vector<int> variation2 = variation;        
+        variation2.at(depth) = action;
+        this->_generate(depth + 1, variation2);                
+    }
+}
+
+///////////////////////////
+// Decision_Rules_Enumeration
+//////////////////////////
+
+Decision_Rules_Enumeration::Decision_Rules_Enumeration(int agents_number): agents_number(agents_number){
+    this->decision_rules.resize(agents_number);
+    this->size_byAgent.resize(agents_number, 0);
+}
+
+void Decision_Rules_Enumeration::add_agent(const unordered_set<Support> & supports, int actions_number){
+    int & agent = this->agents_num;
+    this->decision_rules.at(agent) = VARIATIONS_GENERATOR.get_decision_rules(supports, actions_number);
+    this->size_byAgent.at(agent) = this->decision_rules.at(agent).size();
+    this->size = utils::get_product(this->size_byAgent);
+    agent++;
+}
+
+
+vector<Decision_Rule> Decision_Rules_Enumeration::get(int index){
+    vector<int> indiv_indices = utils::get_indivIndices(this->size_byAgent, PROBLEM.agents_number, index);
+    vector<Decision_Rule> drs(this->agents_number);
+    for (int agent = 0; agent < this->agents_number; agent++){
+        int dr_index = indiv_indices.at(agent);
+        drs.at(agent) = this->decision_rules.at(agent).at(dr_index);
+    }
+    return drs;
+}
+
+
+
+}
\ No newline at end of file
diff --git a/code/src/decPOMDP/core/decision_rule.hpp b/code/src/decPOMDP/core/decision_rule.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..b9635434c67fa85e3d4165320c89154947afb7bf
--- /dev/null
+++ b/code/src/decPOMDP/core/decision_rule.hpp
@@ -0,0 +1,135 @@
+#pragma once
+
+#include "support.hpp" 
+
+#include <iostream> 
+#include <unordered_map>
+
+namespace decPOMDP{
+using namespace std;
+
+
+enum RuleType{
+    REGULAR,
+    RANDOM, // sample an individual policy in the determinist policy space (i.e. for a given individual history, always select the same action)
+    BLIND_DR // constant action (regardless the individual history) 
+};
+inline int ACTION_NOT_FOUND = -1;
+
+
+/// @brief A decision rule map supports to action.
+struct Decision_Rule{
+    RuleType type = RuleType::REGULAR;
+    Support_Int_Map iHist_action_map; // map individual histories (represented by a support) to individual actions (an integer)
+    int blind_action = -1;
+    int default_action = ACTION_NOT_FOUND;
+
+    Decision_Rule();
+    Decision_Rule(RuleType);
+    Decision_Rule(int constant_action);
+    
+    int get_action(const Support & iHist, int agent = -1);
+    void set_action(const Support & iHist, int action);
+    size_t size() const;
+    bool operator==(const Decision_Rule & other) const;
+
+    static pair<int, double> worst_heuristic(); // return <the action, a lower bound for the reward>
+    static pair<int, double> blind_heuristic(); // return <the action, a lower bound for the reward>
+    static pair<int, double> myopic_heuristic(int agent, Support); // return <the action, a lower bound for the reward>
+    static pair<int, double> lucky_heuristic(); // return <the action, an higher bound for the reward>
+
+    friend ostream &operator<<(ostream &os, const Decision_Rule &d);
+    string get_repr(int agent, int step) const;
+};
+
+
+//------------------------------------
+//-- policy
+//------------------------------------
+
+/// @brief A joint decision rule is a collection of Decision_Rule (for each agent).
+struct Joint_DecisionRule{
+    vector<Decision_Rule> decision_rules; // for each agent
+
+    Joint_DecisionRule();
+    Joint_DecisionRule(int nb_agents);
+    Joint_DecisionRule(const vector<Decision_Rule> &);
+
+    int get_iAction(int agent, const Support & ih);
+    int get_jAction(const Support & supp);
+    void set_iAction(int agent, const Support & ih, int action);
+    void set_jAction(const Support & supp, int action);
+    void set_default_actions(vector<int> actions);
+
+    friend ostream &operator<<(ostream &os, const Joint_DecisionRule & jdr);
+    string get_repr(int step) const;
+};
+
+
+/// @brief A policy is composed by
+/// a decision rule for each agent and for each time-step.    
+class Policy{
+    vector<Joint_DecisionRule> joint_drs; // for each time-step
+
+public:
+    Policy(int horizon, int nb_agents);
+
+    int get_iAction(int step, int agent, const Support & ih);
+    int get_jAction(int step, const Support & supp);
+
+    Decision_Rule & get_decisionRule(int step, int agent);
+    Joint_DecisionRule & get_joint_decisionRule(int step); 
+    
+    void set_decisionRule(int step, int agent, const Decision_Rule &);
+
+    friend ostream &operator<<(ostream &os, const Policy & pi);
+};
+
+
+//------------------------------------
+//-- enumeration
+//------------------------------------
+
+using Variation = vector<int>;
+using Variations = vector<Variation>;
+
+/// @brief A variation is a vector of actions.
+class Variations_Generator{
+    static const bool STORE = true;
+
+public:
+    vector<Decision_Rule> get_decision_rules(const unordered_set<Support> &, int actions_number);
+    void clear();
+
+private:
+    Variations variations;
+    int length;
+    int actions_number;
+    int num_variation;
+    
+    //-- memoize
+    unordered_map<int, unordered_map<int, Variations>> variations_map; // variations[length][actions_number]
+
+    void _generate(int depth, const Variation &);
+    Variations& _get_variations(int length, int actions_number);
+
+}inline VARIATIONS_GENERATOR;
+
+
+/// @brief Compute all decision rules for a given oState
+class Decision_Rules_Enumeration{
+    int agents_number;
+    int agents_num = 0;
+    vector<int> size_byAgent; // decision rules number by agent
+    vector<vector<Decision_Rule>> decision_rules;
+
+public:
+    int size = 0; // total joint decision rules number
+
+    Decision_Rules_Enumeration(int agents_number);
+    void add_agent(const unordered_set<Support> &, int agent_actions_number);
+    vector<Decision_Rule> get(int index);
+    Joint_DecisionRule get_joint_drs(int index);
+};
+
+}
\ No newline at end of file
diff --git a/code/src/decPOMDP/core/distribution.cpp b/code/src/decPOMDP/core/distribution.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5fba4949c337f3fbca503965d5602c8599dc731c
--- /dev/null
+++ b/code/src/decPOMDP/core/distribution.cpp
@@ -0,0 +1,103 @@
+#include "distribution.hpp"
+#include <stdlib.h>     /* srand, rand */
+
+namespace decPOMDP{
+using namespace std;
+
+
+Distribution::Distribution(){}
+
+Distribution::Distribution(size_t size_){
+    //-- uniform distribution
+    double val = 1 / double(size_);
+    this->probabilities  = Vector(size_, val);
+}
+
+Distribution::Distribution(const Vector & distrib): probabilities(distrib){}
+
+Distribution::Distribution(const initializer_list<double> & distrib): probabilities(distrib){}
+
+/// @brief To get a valid distribution (sum = 1)
+void Distribution::normalize(){
+    double sum = this->probabilities.sum();
+    this->probabilities.array() /= sum;
+}
+
+/// @brief Return an index \in [0, size) 
+/// following the distribution probabilities 
+int Distribution::sample() const{
+    double rnd = utils::fast_calc::rand();
+    double sum = 0;
+    int index = 0;
+
+    int _size = this->probabilities.size();
+    for (int i = 0; i < _size; i++){
+        sum += this->probabilities[i];
+        if (sum >= rnd)
+            return index;
+        index++;
+    }
+    return index - 1;
+}
+
+int Distribution::argmax() const{
+    double max = -INFINITY;
+    int arg = -1;
+
+    int _size = this->probabilities.size();
+    for (int i = 0; i < _size; i++){
+        double val = this->probabilities[i];
+        if (val > max){
+            max = val;
+            arg = i;
+        }
+    }
+    return arg;
+}
+
+size_t Distribution::size() const{
+    return this->probabilities.size();
+}
+
+double Distribution::get_probability(int index) const{
+    return this->probabilities[index];
+}
+void Distribution::set_probability(int index, double value){
+    this->probabilities[index] = value;
+    this->normalize();
+}
+
+
+Distribution_Softmax::Distribution_Softmax(size_t size_): Distribution(size_){
+    this->activations  = Vector(size_, 0);
+}
+
+void Distribution_Softmax::set_probability(int index, double value){
+    cout << "Distribution_Softmax set_probability() not allowed ... " << index << " " << value << endl;
+    throw -1;
+}
+
+const Vector & Distribution_Softmax::get_activations() const{
+    return this->activations;
+}
+
+Vector Distribution_Softmax::get_logGradient(int index) const{
+    int size_ = this->size();
+    Vector gradient(size_);
+    for (int i = 0; i < size_; i++){
+        gradient[i] = utils::kronecker(i, index) - this->get_probability(index);
+    }
+    return gradient;
+}
+
+
+void Distribution_Softmax::set_activations(const Vector & values){
+    //-- set activations
+    this->activations = values;
+    //-- update probabilities
+    this->probabilities.array() = values.array().exp();
+    this->normalize();
+}
+
+
+}
\ No newline at end of file
diff --git a/code/src/decPOMDP/core/distribution.hpp b/code/src/decPOMDP/core/distribution.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..6bc73232ee6b1ae6bd2f71f782880a6cbb5de63e
--- /dev/null
+++ b/code/src/decPOMDP/core/distribution.hpp
@@ -0,0 +1,46 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+
+namespace decPOMDP{
+using namespace std;
+using namespace algebra;
+
+struct Distribution{
+
+    Vector probabilities;
+
+    Distribution();
+    Distribution(size_t size_); // uniform distribution
+    Distribution(const initializer_list<double> & distrib);
+    Distribution(const Vector & distrib);
+
+    double get_probability(int index) const;
+    void set_probability(int index, double value);
+    void normalize();
+    int sample() const;
+    int argmax() const;
+    size_t size() const;
+
+    friend ostream &operator<<(ostream &os, const Distribution &d){
+        os << "[" << d.probabilities.transpose() << "]";
+        return os;
+    }
+};
+
+struct Distribution_Softmax: public Distribution{
+
+    Vector activations;
+
+    Distribution_Softmax(size_t size_);
+
+    void set_probability(int index, double value); // rise an error (not allowed, see set_activations)
+    
+    //--  specific to Distribution_Softmax
+    const Vector & get_activations() const;
+    void set_activations(const Vector &);
+    Vector get_logGradient(int index) const;
+};
+
+
+}
\ No newline at end of file
diff --git a/code/src/decPOMDP/core/milp.cpp b/code/src/decPOMDP/core/milp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..043d011d57eefccf2748cd13396810e22af1a1af
--- /dev/null
+++ b/code/src/decPOMDP/core/milp.cpp
@@ -0,0 +1,217 @@
+#include "milp.hpp"
+
+#include <iostream>
+
+namespace decPOMDP{
+using namespace std;
+
+////////////////////////////////
+// Cplex_Base
+////////////////////////////////
+
+Cplex_Base::Cplex_Base(bool maximize): maximize(maximize){
+    //-- initialize cplex objects
+    this->con = IloRangeArray(this->env);
+    this->var = IloNumVarArray(this->env);
+    this->objective = maximize ? IloMaximize(this->env): IloMinimize(this->env);
+    this->model = IloModel(this->env);
+}
+
+/// @brief To avoid memory leak.
+Cplex_Base::~Cplex_Base(){
+    this->env.end();
+}
+
+
+//-- variable names
+string Cplex_Base::_get_Vobj_name(){
+    return "Vobj";
+}
+string Cplex_Base::_get_Vih_name(Support ih){
+    return "Vih." + to_string(ih.get_container());
+}
+string Cplex_Base::_get_iDecision_name(Support ih, int iu, int agent) {
+    return "iu" + to_string(iu) + ".ih." + to_string(ih.get_container()) + ".ag" + to_string(agent);
+}
+string Cplex_Base::_get_jDecision_name(Support jh, int ju) {
+    return "ju." + to_string(ju) + ".jh." + to_string(jh.get_container());
+}
+string Cplex_Base::_get_theta_name(int tooth_id){
+    return "th." + to_string(tooth_id);
+}
+string Cplex_Base::_get_omega_name(int tooth_id, Support supp){
+    return "w." + to_string(tooth_id) + ".supp." + to_string(supp.get_container());
+}
+string Cplex_Base::_get_jh_name(Support jh){
+    return "jh." + to_string(jh.get_container());
+}
+string Cplex_Base::_get_sawtoothDiff_name(){
+    return "swDiff";
+}
+
+void Cplex_Base::_build_var(const string & var_name){
+    this->names_id_map.emplace(var_name, this->var_number++);
+}
+
+const IloNumVar & Cplex_Base::_get_var(const string & var_name){
+    return this->var[this->names_id_map.at(var_name)];
+}
+
+const IloNumVar & Cplex_Base::get_var_Vobj(){
+    return this->_get_var(this->_get_Vobj_name());
+}
+const IloNumVar & Cplex_Base::get_var_Vih(Support ih){
+    return this->_get_var(this->_get_Vih_name(ih));
+}
+const IloNumVar & Cplex_Base::get_var_iDecision(Support ih, int iu, int agent){
+    return this->_get_var(this->_get_iDecision_name(ih, iu, agent));
+}
+const IloNumVar & Cplex_Base::get_var_jDecision(Support jh, int ju){
+    return this->_get_var(this->_get_jDecision_name(jh, ju));
+}
+const IloNumVar & Cplex_Base::get_var_theta(int tooth_id){
+    return this->_get_var(this->_get_theta_name(tooth_id));
+}
+const IloNumVar & Cplex_Base::get_var_omega(int tooth_id, Support supp){
+    return this->_get_var(this->_get_omega_name(tooth_id, supp));
+}
+const IloNumVar & Cplex_Base::get_var_jh(Support jh){
+    return this->_get_var(this->_get_jh_name(jh));
+}
+const IloNumVar & Cplex_Base::get_var_sawtoothDiff(){
+    return this->_get_var(this->_get_sawtoothDiff_name());
+}
+
+/// @brief Solve the problem.
+/// @return The objective value of the solution.
+double Cplex_Base::solve(){
+    this->model.add(this->con);
+    this->model.add(this->objective);
+    this->cplex = IloCplex(this->model);
+    this->cplex.setOut(this->env.getNullStream());
+    this->cplex.setWarning(this->env.getNullStream()); // no warning
+    this->cplex.setParam(IloCplex::Param::Threads, 1); // set the number of CPU
+    this->cplex.setParam(IloCplex::Param::TimeLimit, SEARCH.timeout);
+//-- feasibility tolerance
+//--    https://www.ibm.com/docs/en/icos/20.1.0?topic=parameters-feasibility-tolerance
+//--    IloCplex::Param::Simplex::Tolerances::Feasibility
+//--    in [1e-9, 1e-1], default = 1e-6
+//--    with a value > default (e.g. 1e-3): doesn't help
+//--    with a value < default (e.g. 1e-8): many problems fail
+//--    CODE:
+//--    this->cplex.setParam(IloCplex::Param::Simplex::Tolerances::Feasibility, 1e-8);
+
+    double sol_value;
+    if(this->cplex.solve()){
+        //==== success ====
+        //-- read the objective value
+        sol_value = this->cplex.getObjValue();
+    }
+    else{
+        /*
+        //==== failed ====
+        //-- export model in a text file
+        this->exportModel("cplex_failed.lp");
+        //-- verbose
+        cout << _get_colorStr(utils::Colors::red) << _get_colorStr(utils::Colors::bold);
+        this->env.error() << "Failed to optimize MILP" << endl;
+        cout << _get_colorStr(utils::Colors::reset);
+        //-- solve again, with details
+        cout << _get_colorStr(utils::Colors::red);
+        this->cplex = IloCplex(this->model);
+        this->cplex.solve();
+        cout << _get_colorStr(utils::Colors::reset) << endl;
+        */
+        sol_value = this->maximize ? -INFINITY : INFINITY; 
+            
+    }
+    return sol_value;
+}
+
+
+/// @brief Save model in a text file.
+void Cplex_Base::exportModel(string filename) const{
+    this->cplex.exportModel(filename.c_str());
+    if (SEARCH.verbose){
+        utils::print_yellow("Cplex: export model in ");
+        utils::print_yellow(filename.c_str());
+        utils::print_yellow("\n");
+    }
+}
+
+
+void Cplex_Base::build_decisionRule_decentralized_deterministic(Occupancy_State_Base * oState, bool use_compress){
+    if (!oState->is_compressed)
+        use_compress = false;
+
+    //-- Build a(u|h)
+    for (const auto & jh_beliefProba: oState->get_beliefState(use_compress)){
+        Support jh = jh_beliefProba.first;
+        for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+            string var_name = this->_get_jDecision_name(jh, ju);
+            this->_build_var(var_name);
+            var.add(IloNumVar(env, 0, 1, var_name.c_str()));
+        }
+    }
+
+    //-- Build deterministic ai(ui|hi)
+    for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+        for(const Support & ihistory : oState->get_iHistories(agent, use_compress)){
+            for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; ++iu){
+                string var_name = this->_get_iDecision_name(ihistory, iu, agent);
+                this->_build_var(var_name);
+                this->var.add(IloBoolVar(env, 0, 1, var_name.c_str())); // deterministic  (boolean)
+            }
+        }
+    }
+    //-- Build constraints \sum_{ui} ai(ui|hi) = 1  
+    for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+        for(const auto& ih : oState->get_iHistories(agent, use_compress)){
+            this->con.add(IloRange(env, 1.0, 1.0)); // = 1
+            for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; ++iu){
+                const auto & var_i_decision = this->get_var_iDecision(ih, iu, agent);
+                this->con[con_number].setLinearCoef(var_i_decision, +1.0); // \sum_{ui} ai(ui|hi) = 1 
+            }
+            con_number++;
+        }
+    }
+
+    //-- Build decentralized constraints  a(u|h) <= ai(ui|hi) for each (u, h), for each agent i
+    for (const auto & jh_beliefProba: oState->get_beliefState(use_compress)){
+        Support jh = jh_beliefProba.first;
+        for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+            const auto & var_j_decision = this->get_var_jDecision(jh, ju);
+            for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+                auto actions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, ju);
+                auto ih = jh.get_iHistory(agent);
+                const auto & var_i_decision = this->get_var_iDecision(ih, actions.at(agent), agent);
+                this->con.add(IloRange(env, -IloInfinity, 0.0)); // <= 0
+                this->con[con_number].setLinearCoef(var_j_decision, +1.0); // a(u|h) <= 0
+                this->con[con_number].setLinearCoef(var_i_decision, -1.0); // a(u|h) - ai(ui|hi) <= 0
+                con_number++;
+            }
+        }
+    }
+
+    //-- Build decentralized constraints a(u|h) >= \sum_i ai(ui|hi) + 1 - n  
+    for (const auto & jh_beliefProba: oState->get_beliefState(use_compress)){
+        Support jh = jh_beliefProba.first;
+        for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+            this->con.add(IloRange(env, 1 - PROBLEM.agents_number, IloInfinity)); // >= 1 - n
+            const auto & var_j_decision = this->get_var_jDecision(jh, ju);
+            this->con[con_number].setLinearCoef(var_j_decision, +1.0); // a(u|h) >= 1 - n
+            for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+                auto actions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, ju);
+                auto ih = jh.get_iHistory(agent); 
+                const auto & var_i_decision = this->get_var_iDecision(ih, actions.at(agent), agent);
+                this->con[con_number].setLinearCoef(var_i_decision, -1.0); // a(u|h) - \sum_i ai(ui|hi) >= 1 - n 
+            }
+            con_number++;
+        }
+    }
+
+}
+
+
+
+} // end namespace
diff --git a/code/src/decPOMDP/core/milp.hpp b/code/src/decPOMDP/core/milp.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..6ce68d05307b64e6735363a8a419fd07510c1779
--- /dev/null
+++ b/code/src/decPOMDP/core/milp.hpp
@@ -0,0 +1,69 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+#include "support.hpp"
+#include "occupancy_state_base.hpp"
+
+#include <map>
+
+//-- include cplex
+#ifndef CPLEX_NOT_FOUND
+    #include <ilcplex/ilocplex.h>
+    ILOSTLBEGIN
+#endif
+
+namespace decPOMDP{
+using namespace std;
+
+
+struct Cplex_Base{
+    int var_number = 0;
+    int con_number = 0;
+    map<string, int> names_id_map;
+    bool maximize; // maximize or minimize the objective
+
+    //-- cplex objects
+    IloEnv env;
+    IloRangeArray con;
+    IloNumVarArray var;
+    IloObjective objective;
+    IloModel model;
+    IloCplex cplex;
+
+    //-- constructor
+    Cplex_Base(bool maximize);
+    ~Cplex_Base();
+
+    //-- main public methods
+    double solve();
+    void build_decisionRule_decentralized_deterministic(Occupancy_State_Base *, bool use_compress=true);
+    void exportModel(string filename) const;
+    
+    //-- variables names
+    string _get_Vobj_name();
+    string _get_Vih_name(Support ih);
+    string _get_iDecision_name(Support ih, int iu, int agent);
+    string _get_jDecision_name(Support jh, int ju);
+    string _get_theta_name(int tooth_id);
+    string _get_omega_name(int tooth_id, Support jh);
+    string _get_jh_name(Support jh);
+    string _get_sawtoothDiff_name();
+
+    //-- build variables
+    void _build_var(const string & var_name);
+    
+    //-- get variables
+    const IloNumVar & _get_var(const string & var_name);
+    const IloNumVar & get_var_Vobj();
+    const IloNumVar & get_var_Vih(Support ih);
+    const IloNumVar & get_var_iDecision(Support ih, int iu, int agent);
+    const IloNumVar & get_var_jDecision(Support jh, int ju);
+    const IloNumVar & get_var_theta(int tooth_id);
+    const IloNumVar & get_var_omega(int tooth_id, Support jh);
+    const IloNumVar & get_var_jh(Support jh);
+    const IloNumVar & get_var_sawtoothDiff();
+
+};
+
+
+} // end namespace
diff --git a/code/src/decPOMDP/core/occupancy_state_base.cpp b/code/src/decPOMDP/core/occupancy_state_base.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9bfdbaddb8f88cf2f76009b450c889307918f3fc
--- /dev/null
+++ b/code/src/decPOMDP/core/occupancy_state_base.cpp
@@ -0,0 +1,525 @@
+#include "occupancy_state_base.hpp"
+
+namespace decPOMDP{
+using namespace std;
+
+Occupancy_State_Base::Occupancy_State_Base(): belief(PROBLEM.states_number, 0){}
+
+Occupancy_State_Base::Occupancy_State_Base(const Vector & belief_init):
+    belief(belief_init){
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        if (belief_init[x] > 0){
+            Support supp;
+            supp.set_hiddenState(x);
+            this->supports_proba[supp] = belief_init[x];
+        }
+    }
+    if (SEARCH.compress)
+        this->compress();
+}
+
+const Support_Val_OrderMap & Occupancy_State_Base::get_supports_probas(bool compact) const{
+    if (compact){
+        assert(this->is_compressed);
+        return this->supports_proba_compact;
+    }
+    return this->supports_proba;
+}
+
+/// @brief Compute the individual histories of agent
+///     and store it for computational efficiency,
+///     in iHistories or iHistories_compact depending on compression choice.
+/// @param compact: bool, whether using compression
+/// @return A set of supports = individual histories of agent
+Support_Set & Occupancy_State_Base::get_iHistories(int agent, bool compact){
+    if (compact)
+        assert(this->is_compressed);
+
+    auto & vec_ihs = compact ? this->iHistories_compact : this->iHistories;
+
+    //-- already stored ?
+    if (vec_ihs.empty())
+        vec_ihs.resize(PROBLEM.agents_number);
+    auto & ihs = vec_ihs.at(agent);
+    if (!ihs.empty())
+        return ihs;
+
+    //-- compute the set
+    for (const auto & supp_proba : get_supports_probas(compact)){
+        ihs.emplace(supp_proba.first.get_iHistory(agent));
+    }
+    return ihs;
+}
+
+int Occupancy_State_Base::get_jAction(vector<Decision_Rule> & drs, const Support & support) const{
+    Support temp;
+    for (int agent: PROBLEM.agents){
+        int iu = this->get_iAction(drs.at(agent), support, agent);
+        temp.set_iAction(agent, iu);
+    }
+    return temp.get_jAction();
+}
+
+int Occupancy_State_Base::get_iAction(Decision_Rule & dr, const Support & support, int agent) const{
+    return dr.get_action(support.get_iHistory(agent), agent);
+}
+
+const POMDP::Belief & Occupancy_State_Base::get_belief() const{
+    return this->belief;
+}
+
+/// @brief Compute the mapping: joint history -> (belief, proba).
+/// Let jh be a joint history, then
+/// proba = s(jh) and belief = [s(x0 | jh), s(x1 | jh), ...],
+/// i.e. belief is normalized.
+Belief_State & Occupancy_State_Base::get_beliefState(bool compact){
+    if (compact)
+        assert(this->is_compressed);
+
+    auto & jhs_beliefProba = compact ? this->bState_compressed : this->bState;
+
+    //-- already stored ?
+    if (!jhs_beliefProba.empty())
+        return jhs_beliefProba;
+
+    //-- compute the map
+    POMDP::Belief belief_null(PROBLEM.states_number, 0);
+    for (const auto & support_proba: this->get_supports_probas(compact)){
+        auto support = support_proba.first;
+        const Support & jh = support.get_jHistory();
+        int x = support.get_hiddenState();
+
+        //-- jh already in the map ?
+        auto got = jhs_beliefProba.find(jh);
+        double proba = support_proba.second;
+        if (got != jhs_beliefProba.end()){
+            //-- yes: update
+            got->second.first[x] += proba; // update the belief
+            got->second.second += proba; // update the proba
+        }
+        else{
+            //-- no: build a new belief
+            POMDP::Belief new_belief = belief_null;
+            new_belief[x] = proba;
+            jhs_beliefProba[jh] = make_pair(new_belief, proba);       
+        }
+    }
+    
+    //-- normalize the beliefs
+    for (auto & jh_beliefProba: jhs_beliefProba){
+        jh_beliefProba.second.first.normalize();
+    }
+
+    return jhs_beliefProba;
+}
+
+
+/// @brief Compute the mapping: individual history -> (belief, proba).
+/// Let ih be an individual history, then
+/// proba = s(ih) and belief = [s(x0, ih), s(x1, ih), ...].
+Belief_State Occupancy_State_Base::get_private_beliefState(int agent, bool compact){
+    if (compact)
+        assert(this->is_compressed);
+    
+    Belief_State private_bState;
+
+    //-- compute the map
+    POMDP::Belief belief_null(PROBLEM.states_number, 0);
+    for (const auto & support_proba: this->get_supports_probas(compact)){
+        auto support = support_proba.first;
+        double proba = support_proba.second;
+        
+        const Support & ih = support.get_iHistory(agent);
+        int x = support.get_hiddenState();
+
+        //-- ih already in the map ?
+        auto got = private_bState.find(ih);
+        if (got != private_bState.end()){
+            //-- yes: update
+            got->second.first[x] += proba; // update the belief
+            got->second.second += proba; // update the proba
+        }
+        else{
+            //-- no: build a new belief
+            POMDP::Belief new_belief = belief_null;
+            new_belief[x] = proba;
+            private_bState[ih] = make_pair(new_belief, proba);       
+        }
+    }
+    
+    //-- normalize the beliefs
+    for (auto & ih_beliefProba: private_bState){
+        ih_beliefProba.second.first.normalize();
+    }
+
+    return private_bState;
+}
+
+
+/// @brief Compute the mapping: joint histories -> {support -> proba}
+unordered_map<Support, Support_Val_Map> Occupancy_State_Base::get_jhs_supportsProba(bool compact){
+    unordered_map<Support, Support_Val_Map> jhs_supportsProba;
+    for (const auto & support_proba: this->get_supports_probas(compact)){
+        auto jh = support_proba.first.get_jHistory();
+        jhs_supportsProba[jh].insert(support_proba);
+    }
+    return jhs_supportsProba;
+}
+
+
+/// @brief Compute the mapping: individual histories -> {support -> proba}
+unordered_map<Support, Support_Val_Map> Occupancy_State_Base::get_private_oState(int agent, bool compact){
+    unordered_map<Support, Support_Val_Map> ihs_supportsProba;
+    for (const auto & support_proba: this->get_supports_probas(compact)){
+        auto ih = support_proba.first.get_iHistory(agent);
+        ihs_supportsProba[ih].insert(support_proba);
+    }
+    return ihs_supportsProba;
+}
+
+
+/// @brief Compute the mapping: h^{agent} -> belief_state, i.e.
+/// h^{agent} -> ( jh -> (belief, proba) ), where
+/// proba = s(jh) and belief = [s(x0, jh), s(x1, jh), ...].
+unordered_map<Support, Belief_State> Occupancy_State_Base::get_ih_beliefState(int agent, bool compact){
+
+    //-- we'll "split" the beliefState
+    const auto & beliefState = this->get_beliefState(compact);
+
+    //-- build the conditionnal beliefState
+    unordered_map<Support, Belief_State> ih_beliefState;
+    
+    for (const auto & jh_beliefProba: beliefState){
+        Support jh = jh_beliefProba.first; // h^{:}
+        Support ih = jh.get_iHistory(agent); // h^{agent}  
+        ih_beliefState[ih][jh] = jh_beliefProba.second;
+    }
+
+    return ih_beliefState;
+}
+
+
+
+/// @brief Compute the mapping: h^{agent} -> ( h^{agent+1:} -> (belief, proba) ), where
+/// proba = s(h^{agent+1:}) and belief = [s(x0, h^{agent+1:}), s(x1, h^{agent+1:}), ...].
+unordered_map<Support, Belief_State> Occupancy_State_Base::get_ih_beliefStateNext(int agent, bool compact){
+    assert(agent < PROBLEM.last_agent);
+
+    //-- we'll "split" the beliefState
+    const auto & beliefState = this->get_beliefState(compact);
+
+    //-- build
+    unordered_map<Support, Belief_State> ih_beliefState;
+    for (auto jh_beliefProba: beliefState){
+        Support jh = jh_beliefProba.first; // h^{:}
+        //-- "split" jh
+        Support ih = jh.get_iHistory(agent); // h^{agent}
+        Support ihs_nexts = jh.get_partial(agent + 1); // h^{agent+1:}
+        //-- fill the mapping
+        bool exists = false;
+        auto got_ih = ih_beliefState.find(ih);
+        if (got_ih != ih_beliefState.end()){
+            auto got_nexts = got_ih->second.find(ihs_nexts); 
+            if (got_nexts != got_ih->second.end()){
+                exists = true;
+                auto & belief = got_nexts->second.first;
+                auto & proba = got_nexts->second.second;
+                double proba2 = jh_beliefProba.second.second;
+                belief.array() = (proba * belief.array() + proba2 * jh_beliefProba.second.first.array()) / (proba + proba2);
+                proba += proba2;
+            }
+        }
+        if (!exists){
+            ih_beliefState[ih][ihs_nexts] = jh_beliefProba.second;
+        }
+    }
+
+    return ih_beliefState;
+}
+
+///@brief Compare the distribution of <state, histories>,
+///         on the compressed distribution if this oState and other are compressed,
+///         else on (one-step) uncompressed.
+bool Occupancy_State_Base::_equal(const Occupancy_State_Base & other, bool compact) const{
+    static const double TOLERANCE = 1e-6;
+
+    const auto & supports_probas = this->get_supports_probas(compact);
+    const auto & supports_probas2 = other.get_supports_probas(compact);
+
+    if (supports_probas.size() != supports_probas2.size())
+        return false;
+
+    //-- the mappings supports_proba are ordered:
+    //--    lexicographic order on supports, i.e. on <state, histories>
+    auto it2 = supports_probas2.begin();
+    for (auto it=supports_proba.begin(); it!=supports_proba.end(); ++it){
+        //-- compare supports
+        if (it->first != it2->first)
+            return false;
+        //-- compare proba
+        if (abs(it->second - it2->second) > TOLERANCE)
+            return false;
+        //-- next
+        it2++;
+    }
+    return true;
+}
+
+
+bool Occupancy_State_Base::operator==(const Occupancy_State_Base & other) const{
+    bool compact = this->is_compressed && other.is_compressed;
+    return this->_equal(other, compact);
+}
+
+
+/// @brief Update probability for a given support:
+/// - if the support is known: add the given value,
+/// - else: set the given value.
+/// Also update belief.
+void Occupancy_State_Base::_update_proba(Support support, double proba){
+    auto & supports_probas = this->supports_proba;
+    auto got = supports_probas.find(support);
+    if (got != supports_probas.end()){
+        got->second += proba;
+    }
+    else{
+        supports_probas.emplace(support, proba);
+    }
+    this->belief[support.get_hiddenState()] += proba;
+}
+
+/// @brief Normalize support probabilities to obtain a sum = 1 
+void Occupancy_State_Base::normalize(){
+    static const double TOLERANCE = 1e-10;
+    double sum = this->get_probas_sum();
+    if (abs(sum - 1) > TOLERANCE){
+        for (auto it = this->supports_proba.begin(); it != this->supports_proba.end(); it++){
+            it->second /= sum;
+        }
+    }
+}
+
+///@brief Erase the supports associated to low probabilities,
+/// and normalize if some supports have been erased.
+void Occupancy_State_Base::_prune(){
+    static const double PRUNE_TRESHOLD = 1e-7; // low probability
+
+    auto & supps_proba = this->supports_proba_compact; // on compressed ! 
+
+    int n_pruned = 0;
+    for (auto it = supps_proba.begin(); it != supps_proba.end(); ){
+        if (it->second < PRUNE_TRESHOLD){
+            it = supps_proba.erase(it); // prune
+            n_pruned++;
+        }
+        else{
+            it++;
+        }
+    }
+    if (n_pruned > 0){
+        this->normalize();
+    }
+}
+
+double Occupancy_State_Base::get_probas_sum() const{
+    return accumulate(this->supports_proba.begin(), this->supports_proba.end(), (double)0, 
+                        [](double x, auto y){return x + y.second;});
+}
+
+int Occupancy_State_Base::get_step() const{
+    return this->step;
+}
+
+int Occupancy_State_Base::size_support() const{
+    return this->supports_proba.size();
+}
+
+int Occupancy_State_Base::size_support_compressed() const{
+    return this->supports_proba_compact.size();
+}
+
+int Occupancy_State_Base::get_next_agent() const{
+    return this->next_agent;
+}
+
+/// @brief Compute L1 distance with another occupancy state.
+/// L1 distance is the sum on each support of : abs(proba(support) - other->proba(support)).
+double Occupancy_State_Base::get_dist(const Occupancy_State_Base &other) const{
+    static const bool USE_COMPRESS = false; // NOT COMPRESSED
+    double dist = 0;
+    const auto & supports_probas = this->get_supports_probas(USE_COMPRESS);
+    for (const auto & support_proba: other.get_supports_probas(USE_COMPRESS)){
+        auto got = supports_probas.find(support_proba.first);
+        bool found = got != supports_probas.end();
+        if (found){
+            dist += abs(support_proba.second - got->second);
+        }
+        else{
+            dist += support_proba.second;
+        }
+    }
+    return dist;
+}
+
+///////////////////////////
+// compression (LPE)
+//////////////////////////
+
+
+Support Occupancy_State_Base::get_label(const Support& support) const{
+    if (!this->is_compressed)
+        return support;
+    auto got = this->labels.find(support); 
+    assert(got != this->labels.end());
+    return got->second;
+}
+
+
+map<Support, Support> Occupancy_State_Base::get_labels() const{
+    return this->labels;
+}
+
+
+/// @brief Test whether the mappings supports_probas1 and supports_probas2 are similar,
+///     i.e. whether they contain the same pairs (support, value)
+///     with a tolerance fixed by SEARCH.compress_threshold
+bool Occupancy_State_Base::_test_iHistories_Equivalence(const Support_Val_OrderMap& supports_probas1, const Support_Val_OrderMap& supports_probas2) const {    
+    for(auto& support_proba: supports_probas1){
+        double proba1 = support_proba.second;
+        
+        auto got = supports_probas2.find(support_proba.first);
+        double proba2 = got != supports_probas2.end() ? got->second: 0;
+        
+        if(abs(proba1 - proba2) > SEARCH.compress_threshold)
+            return false;
+    }
+    return true;
+}
+
+
+/// @brief LPE compression.
+/// Modify:
+///     this->supports_proba_compact (compression of this->supports_proba)
+///     this->labels (this->labels[supp] = label foreach supp in this->supports_proba)
+///     this->is_compressed (= true)
+void Occupancy_State_Base::compress(){
+    assert(!this->is_compressed || (this->get_step() == 0 && this->get_next_agent() == 0));
+
+    if (this->next_agent != 0){
+        //-- sequential case, intermediate agents: done in do_step()
+        this->is_compressed = true;        
+        return;
+    }
+
+    //-- equivalences store correspondances iHist -> support (foreach agent)
+    vector<map<Support, Support>> equivalences(PROBLEM.agents_number);
+
+    auto to_compress = this->get_supports_probas(false);
+
+    for (int agent: PROBLEM.agents){
+
+        //-- compute the (ordered) mapping:
+        //--    iHist ->  <proba iHist, map: iMasked_supp -> proba> (iMasked_supp being the support without the agent iHist)
+        auto results = this->_get_iHistory_supports_map(agent, to_compress);
+
+        //-- compute equivalence classes
+        //--    for an agent, a class is the mapping: iHist -> label 
+        //--    (where label is the lower iHist in the class following lexicographic ordering)
+        for(auto res1= results.begin(); res1 != results.end(); res1++){ //-- foreach iHist
+            const Support_Val_OrderMap & supports_probas1 = res1->second.second;
+            for(auto res2 = std::next(res1); res2 != results.end();){ //-- foreach iHist2 > iHist
+                const auto & supports_probas2 = res2->second.second;
+                if(_test_iHistories_Equivalence(supports_probas1, supports_probas2)){
+                    //-- update equivalence class
+                    equivalences.at(agent)[res2->first] = res1->first; // iHist is the label of iHist2
+                    res1->second.first += res2->second.first; // add iHist2 proba to the label proba
+                    res2 = results.erase(res2); // erase iHist2
+                }
+                else{
+                    res2++;
+                }
+            }
+        }
+
+        //-- update compact supports_proba
+        to_compress.clear();
+        for (auto res: results){ // res = <iHist, <iHist proba, map: imasked support -> normalized proba>>>
+            Support iHist = res.first;
+            double iHist_proba = res.second.first;
+            for(auto & support_proba : res.second.second){
+                Support support = support_proba.first;
+                double proba = iHist_proba * support_proba.second;
+                support.set_iHistory(agent, iHist);
+
+                auto got = to_compress.find(support);
+                if (got != to_compress.end()){
+                    got->second += proba;
+                }
+                else{
+                    to_compress.emplace(support, proba);
+                }
+            }
+        }
+    }
+
+    this->supports_proba_compact = to_compress;
+
+    //-- finalize
+    //--    memoize labels
+    for (const auto& support_proba: this->get_supports_probas(false)){
+        Support supp = support_proba.first;
+        Support label = supp;
+        for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+            Support iHistory =  supp.get_iHistory(agent);
+            auto got = equivalences.at(agent).find(iHistory);
+            if(got != equivalences.at(agent).end()){
+                label.set_iHistory(agent, got->second);
+            }
+        }
+
+        this->labels[supp] = label;
+    }
+
+    // this->_prune(); cout << "warning: prune (compress)" << endl; ////////////
+
+    this->is_compressed = true;
+}
+
+
+/// @brief Compression utility.
+///     Compute the mapping: iHist -> pair<double, map<Support, double>>
+///        where pair<double, map<Support, double>> correspond to <proba iHist, map: iMasked_supp -> proba>
+///        (iMasked_supp being the support without the agent iHist, i.e. masked).
+map<Support, pair<double, Support_Val_OrderMap>> Occupancy_State_Base::_get_iHistory_supports_map(int agent, const Support_Val_OrderMap & to_compress) const{
+    map<Support, pair<double, Support_Val_OrderMap>> results;
+    
+    //-- fill the mapping
+    for (const auto & support_proba: to_compress){
+        Support iHist = support_proba.first.get_iHistory(agent);
+        Support iMasked_supp = support_proba.first.get_iHist_masked(agent);
+        double iMasked_proba = support_proba.second;
+
+        //-- update
+        if (results.find(iHist) == results.end()){
+            Support_Val_OrderMap iMasked = {{iMasked_supp, iMasked_proba}};
+            auto p = make_pair(iMasked_proba, iMasked);
+            results.emplace(iHist, p);
+        }
+        else{
+            results[iHist].first += iMasked_proba; // ihist total proba
+            results[iHist].second.emplace(iMasked_supp, iMasked_proba);
+        }
+    }
+
+    //-- normalize probas
+    //--    i.e. for a given iHist, the sum of iMasked probas equals 1
+    for (auto& result: results){
+        double proba = result.second.first;
+        for (auto & iMaskedSupp_proba: result.second.second)
+            results[result.first].second[iMaskedSupp_proba.first] /= proba;
+    }
+
+    return results;
+}
+
+}// end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/core/occupancy_state_base.hpp b/code/src/decPOMDP/core/occupancy_state_base.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..1ac66ca4a4f189f51eb9a5bc2cc3133feaf6335e
--- /dev/null
+++ b/code/src/decPOMDP/core/occupancy_state_base.hpp
@@ -0,0 +1,122 @@
+#pragma once
+
+#include "../../POMDP/_module.hpp"
+#include "support.hpp"
+#include "decision_rule.hpp"
+
+#include <iostream>
+#include <unordered_map>
+#include <map>
+#include <initializer_list>
+
+namespace decPOMDP{
+using namespace std;
+
+
+using Belief_State = unordered_map<Support, pair<POMDP::Belief, double>>;
+
+
+class Occupancy_State_Base{
+protected:
+    int next_agent = 0; // next agent to play
+    int step = 0;  // time-step
+    Support_Val_OrderMap supports_proba; // main data
+    Support_Val_OrderMap supports_proba_compact; // main data (compressed)
+    //-- memoization
+    POMDP::Belief belief;
+    Belief_State bState;
+    Belief_State bState_compressed;
+    vector<unordered_set<Support>> iHistories;
+    vector<unordered_set<Support>> iHistories_compact;
+    //-- compression
+    map<Support, Support> labels;
+
+public:
+    bool is_compressed = false;
+    double relax_value = -INFINITY; // relaxation value (from mdp/pomdp solution)
+
+    //-- constructors
+    Occupancy_State_Base();
+    Occupancy_State_Base(const Vector & belief_init); // for root occupancy state
+    virtual void test() = 0;
+    virtual ~Occupancy_State_Base(){}
+    
+    //-- get methods
+    const Support_Val_OrderMap & get_supports_probas(bool compact) const;
+    int get_jAction(vector<Decision_Rule> &, const Support &) const;
+    int get_iAction(Decision_Rule &, const Support &, int agent) const;
+    const POMDP::Belief & get_belief() const;
+    Belief_State & get_beliefState(bool compact);
+    Belief_State get_private_beliefState(int agent, bool compact);
+    unordered_map<Support, Belief_State> get_ih_beliefState(int agent, bool compact);
+    unordered_map<Support, Belief_State> get_ih_beliefStateNext(int agent, bool compact);
+    unordered_map<Support, unordered_map<Support, double>> get_jhs_supportsProba(bool compact);
+    unordered_map<Support, unordered_map<Support, double>> get_private_oState(int agent, bool compact);
+    Support_Set & get_iHistories(int agent, bool compact);
+    int get_step() const;
+    double get_dist(const Occupancy_State_Base &other) const;
+    int size_support() const;
+    int size_support_compressed() const;
+    int get_next_agent() const;
+
+    //-- normalization
+    void normalize();
+    double get_probas_sum()const;
+
+    //-- compression
+    void compress();
+    Support get_label(const Support&) const;
+    map<Support, Support> get_labels() const;
+
+    //-- operators
+    bool _equal(const Occupancy_State_Base & other, bool compact) const;
+    bool operator==(const Occupancy_State_Base & other) const;
+
+protected:
+    void _update_proba(Support, double);
+    void _prune();
+    
+    //-- compression
+    map<Support, pair<double, map<Support, double>>> _get_iHistory_supports_map(int agent, const Support_Val_OrderMap &) const;
+    bool _test_iHistories_Equivalence(const Support_Val_OrderMap& arg1, const Support_Val_OrderMap& arg2) const;
+};
+
+
+struct oStateHash{
+    static constexpr double TOLERANCE = 1e-6;
+    static constexpr double approx_factor = 1 / TOLERANCE;
+
+    static size_t get_hash(const Occupancy_State_Base & oState, bool compact){
+        size_t seed = 0;
+        for (const auto & supp_proba: oState.get_supports_probas(compact)){
+            utils::hash_combine(seed, supp_proba.first.get_container());
+            int approx_proba = int(supp_proba.second * approx_factor); // rounding
+            utils::hash_combine(seed, approx_proba);
+        }
+        return seed;
+    }
+
+    size_t operator()(const Occupancy_State_Base & oState) const {
+        return this->get_hash(oState, oState.is_compressed);
+    }
+};
+
+
+struct oStateHash_Uncompressed{
+
+    size_t operator()(const Occupancy_State_Base & oState) const {
+        return oStateHash::get_hash(oState, false);
+    }
+};
+
+
+struct oState_Equal_Uncompressed{
+
+    bool operator()(const Occupancy_State_Base & a, const Occupancy_State_Base & b) const{
+        bool compact = false;
+        return a._equal(b, compact);
+    }
+};
+
+
+}// end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/core/support.cpp b/code/src/decPOMDP/core/support.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..9149d66dae5405fa8e36542d0efb5aee58e3cf9b
--- /dev/null
+++ b/code/src/decPOMDP/core/support.cpp
@@ -0,0 +1,383 @@
+#include "support.hpp"
+
+namespace decPOMDP{
+using namespace std;
+using namespace common;
+
+int Support::N_BITS_HIDDEN_STATE; // bits number for x
+int* Support::N_BITS_iOBS; // bits number for an observation by [agent]
+int* Support::N_BITS_iACTIONS; // bits number for a command by [agent]
+
+int** Support::BITS_START_iOBS; // first bit of [step][agent] observations
+int* Support::BITS_START_iACTIONS; // first bit of U[agent]
+
+uint64_t Support::MASKS[64];
+uint64_t** Support::MASKS_iOBS; // MASKS_iOBS[step][agent]
+uint64_t* Support::MASKS_iACTIONS; // MASKS_iACTION[agent]
+uint64_t Support::MASK_ACTIONS;
+uint64_t* Support::MASKS_iHISTORIES;
+uint64_t Support::MASKS_jHISTORIES;
+uint64_t Support::MASKS_jOBS; // the last observations (all individual last observation)
+uint64_t Support::MASK_HIDDEN_STATE;
+
+unordered_map<uint64_t, int> Support::MAP_SUPPORTS_jACTIONS;  // map: Support iACTIONS -> joint actions
+uint64_t* Support::jACTIONS;  // map: joint actions -> Support iACTIONS
+uint64_t* Support::jOBSERVATIONS;
+
+///////////////////////////////////////
+/// bitset representation
+///////////////////////////////////////
+
+/// @brief precompute utilities for bitset representation of supports
+/// BITSET REPRESENTATION:
+///  hidden state: x
+///      x
+///  individual control values
+///      u[agent=0]
+///      ...
+///      u[agent=n-1]
+///  historics:
+///      z[step=0][agent=0], z[step=1][agent=0], ... z[step=TRUNC-1][agent=0]
+///      ...
+///      z[step=0][agent=n-1], z[step=1][agent=n-1], ... z[step=TRUNC-1][agent=n-1]
+///  => total: bits_required
+void Support::init(){
+    if (SEARCH.verbose >= utils::Verbose::medium)
+        cout << "=== Support::init()" << endl;
+    int start = 0;
+
+    //-- MASKS
+    MASKS[0] = 0UL;
+    for (int i = 1; i < 64; i++)
+        MASKS[i] = MASKS[i-1] | (1UL << (i - 1));
+
+    //-- hidden state x
+    N_BITS_HIDDEN_STATE = ceil(log2<int>(PROBLEM.states_number));
+    MASK_HIDDEN_STATE = MASKS[N_BITS_HIDDEN_STATE];
+    start += N_BITS_HIDDEN_STATE;
+
+    //-- individual actions
+    N_BITS_iACTIONS = new int[PROBLEM.agents_number];
+    BITS_START_iACTIONS = new int[PROBLEM.agents_number];
+    MASKS_iACTIONS = new uint64_t[PROBLEM.agents_number];
+    MASK_ACTIONS = 0UL;
+    for (int agent: PROBLEM.agents){
+        BITS_START_iACTIONS[agent] = start;
+        N_BITS_iACTIONS[agent] = ceil(log2<int>(PROBLEM.actions_number_byAgent[agent])); 
+        MASKS_iACTIONS[agent] = MASKS[N_BITS_iACTIONS[agent]] << start;
+        MASK_ACTIONS |= MASKS_iACTIONS[agent];
+        start += N_BITS_iACTIONS[agent];
+    }
+
+    //-- Histories
+    N_BITS_iOBS = new int[PROBLEM.agents_number];
+    BITS_START_iOBS = new int*[SEARCH.truncation];
+    MASKS_iOBS = new uint64_t*[SEARCH.truncation];
+    MASKS_iHISTORIES = new uint64_t[PROBLEM.agents_number];
+    MASKS_jHISTORIES = 0UL;
+    MASKS_jOBS = 0UL;
+    for (int agent: PROBLEM.agents){            
+        N_BITS_iOBS[agent] = ceil(log2<int>(PROBLEM.observations_number_byAgent[agent]));
+    }
+    for (int step = 0; step < SEARCH.truncation; step++){
+        BITS_START_iOBS[step] = new int[PROBLEM.agents_number];
+        MASKS_iOBS[step] = new uint64_t[PROBLEM.agents_number];
+    }
+    for (int agent: PROBLEM.agents){
+        MASKS_iHISTORIES[agent] = 0UL;
+        for (int step = 0; step < SEARCH.truncation; step++){
+            BITS_START_iOBS[step][agent] = start;
+            MASKS_iOBS[step][agent] = MASKS[N_BITS_iOBS[agent]] << start;
+            MASKS_iHISTORIES[agent] |= MASKS_iOBS[step][agent];
+            start += N_BITS_iOBS[agent];
+        }
+        MASKS_jHISTORIES |= MASKS_iHISTORIES[agent];
+        if (SEARCH.truncation > 0)
+            MASKS_jOBS |= MASKS_iOBS[SEARCH.truncation - 1][agent];
+    }
+    
+
+    //-- bits required
+    int bits_required = N_BITS_HIDDEN_STATE
+                        + accumulate(N_BITS_iACTIONS, N_BITS_iACTIONS + PROBLEM.agents_number, 0)
+                        + SEARCH.truncation * accumulate(N_BITS_iOBS, N_BITS_iOBS + PROBLEM.agents_number, 0);
+    if (SEARCH.verbose >= utils::Verbose::medium)
+        cout << "bits required " << bits_required << " (truncation " << SEARCH.truncation << ")" << endl;
+    assert(start == bits_required);
+    assert(bits_required <= (int)sizeof(uint64_t)*8);
+
+    //-- joint actions map
+    MAP_SUPPORTS_jACTIONS.clear();
+    jACTIONS = new uint64_t[PROBLEM.actions_joint_number];
+    for (int jaction = 0; jaction < PROBLEM.actions_joint_number; jaction++){
+        vector<int> actions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, jaction);
+        Support supp;
+        for (int agent: PROBLEM.agents){
+            supp.set_iAction(agent, actions.at(agent));
+        }
+        Support supp_act(supp.container & MASK_ACTIONS);
+        MAP_SUPPORTS_jACTIONS[supp_act.container] = jaction;
+        jACTIONS[jaction] = supp_act.container;
+    }
+
+    //-- joint obs
+    jOBSERVATIONS = new uint64_t[PROBLEM.observations_joint_number];
+    for (int z = 0; z < PROBLEM.observations_joint_number; z++){
+        Support supp((uint64_t)0);
+        vector<int> iObs = PROBLEM.observations_joint2indiv[z];
+        for (int agent: PROBLEM.agents){
+            supp.set_iObservation(agent, iObs[agent]);
+        }
+        jOBSERVATIONS[z] = supp.get_container();
+    }
+
+}
+
+///////////////////////////////////////
+/// constructors
+///////////////////////////////////////
+Support::Support(){}
+
+Support::Support(uint64_t container): container(container){}
+
+Support::Support(int x, Support jh, int ju){
+    *this = jh;
+    this->set_hiddenState(x);
+    this->set_jAction(ju);
+}
+
+///////////////////////////////////////
+/// get methods
+///////////////////////////////////////
+
+uint64_t Support::get_container() const{
+    return container;
+}
+
+int Support::get_hiddenState() const{
+    return container & MASK_HIDDEN_STATE;
+}
+
+int Support::get_iAction(int agent) const{
+    return (container & MASKS_iACTIONS[agent]) >> BITS_START_iACTIONS[agent];
+}
+
+vector<int> Support::get_iActions() const{
+    vector<int> actions(PROBLEM.agents_number);
+    for (int agent: PROBLEM.agents)
+        actions[agent] = this->get_iAction(agent);
+    return actions;
+}
+
+int Support::get_jAction() const{
+    return MAP_SUPPORTS_jACTIONS.at(container & MASK_ACTIONS);
+}
+
+Support Support::get_iHistory(int agent) const{            
+    return container & MASKS_iHISTORIES[agent];
+}
+
+
+Support Support::get_jHistory() const{            
+    return container & MASKS_jHISTORIES;
+}
+
+/// @brief Build a support composed of histories for agents [first_agent : PROBLEM.last_agent],
+/// i.e. return the joint history where histories af agents [0: first_agent -1] has been erased.
+Support Support::get_partial(int first_agent) const{    
+    Support partial(this->get_jHistory());
+    for (int agent = 0; agent < first_agent; agent++){
+        partial.clear_iHistory(agent);
+    }
+    return partial.container;
+}
+
+bool Support::operator==(const Support & other) const{
+    return other.container == this->container;
+}
+
+bool Support::operator!=(const Support & other) const{
+    return other.container != this->container;
+}
+
+bool Support::operator<(const Support & other) const{
+    return this->container < other.container;
+}
+
+Support Support::get_iHist_masked(int agent) const {
+   return (container & ~MASKS_iHISTORIES[agent]); // mask the agent individual History
+}
+
+
+///////////////////////////////////////
+/// set methods
+///////////////////////////////////////
+
+void Support::set_hiddenState(int state){
+    container = (container & ~MASK_HIDDEN_STATE) | state;
+}
+
+void Support::set_iAction(int agent, int action){
+    container = (container & ~MASKS_iACTIONS[agent]) | ((uint64_t)action << BITS_START_iACTIONS[agent]);
+}
+
+void Support::set_jAction(int jAction){
+    container = (container & ~MASK_ACTIONS) | jACTIONS[jAction];
+}
+
+void Support::set_iObservation(int agent, int observation){
+    if (SEARCH.truncation > 1){
+        this->_shift_iObservations(agent);
+    }
+    else if (SEARCH.truncation == 0){
+        return;
+    }
+    container &= ~MASKS_iOBS[SEARCH.truncation-1][agent]; // erase old value
+    container |= ((uint64_t)observation << BITS_START_iOBS[SEARCH.truncation-1][agent]); // set new value
+}
+
+void Support::set_jObservation(int jObs){
+    if (SEARCH.truncation > 1){
+        for (int agent: PROBLEM.agents){
+            this->_shift_iObservations(agent);
+        }
+    }
+    container = (container & ~MASKS_jOBS) | jOBSERVATIONS[jObs];
+}
+
+void Support::clear_actions(){
+    container &= ~MASK_ACTIONS;
+}
+
+void Support::clear_iHistory(int agent){
+    container &= ~MASKS_iHISTORIES[agent];
+}
+
+void Support::set_iHistory(int agent, const Support& other){
+   this->clear_iHistory(agent);
+   container |= other.container; // set other individual History
+}
+
+Support Support::do_step(int hidden_state, int jObs) const{
+    Support supp_next = *this;
+    supp_next.set_hiddenState(hidden_state);
+    supp_next.set_jObservation(jObs);
+    supp_next.clear_actions();
+    return supp_next;
+}
+
+///////////////////////////////////////
+/// protected
+///////////////////////////////////////
+
+void Support::_shift_iObservations(int agent){
+    uint64_t val = (container >> N_BITS_iOBS[agent]) & MASKS_iHISTORIES[agent];
+    container = (container & ~MASKS_iHISTORIES[agent]) | val;
+}
+
+int Support::get_observation(int agent, int oldness) const{ 
+    assert(oldness < SEARCH.truncation);
+    int idx = SEARCH.truncation - oldness - 1;
+    return (container & MASKS_iOBS[idx][agent]) >> BITS_START_iOBS[idx][agent];
+}
+
+
+///////////////////////////////////////
+/// print / debug
+///////////////////////////////////////
+ostream &operator<<(ostream &os, const Support &supp){
+    os << supp.get_repr();
+    return os;
+}
+
+string Support::get_zs_repr(int step, int agent) const{
+    ostringstream os;
+    for (int oldness = min(SEARCH.truncation, step) - 1; oldness >= 0; oldness--){
+        int z = this->get_observation(agent, oldness);
+        os << " " << z;
+    }
+    return os.str();
+}
+
+string Support::get_ih_repr(int step, int agent) const{
+    ostringstream os;
+    os << " <agent" << agent << ">";
+    os << "  hist: " ;
+    os << get_zs_repr(step, agent);
+    return os.str();
+}
+
+
+/// @param step for history
+/// @param next_agent for action
+string Support::get_repr(int step, int next_agent) const{
+    ostringstream os;
+    os << "x = " << this->get_hiddenState();
+    for (int agent: PROBLEM.agents){
+        os << " <agent" << agent << ">";
+        int u = this->get_iAction(agent);
+        if (agent < next_agent)
+            os << " action: " <<  u;
+        os << "  hist: " ;
+        os << get_zs_repr(step, agent);
+    }
+    return os.str();
+}
+
+void Support::demo(){
+    const auto randInt = utils::fast_calc::rand_range;
+
+    cout << "=== Support demo:" << endl;
+
+    // Randomly pick values for:
+    //  - state x
+    //  - step
+    //  - actions / observations historics
+    Support support;    
+    
+    int x = randInt(PROBLEM.states_number);
+    int step = randInt(SEARCH.truncation);
+    int last_agent = randInt(PROBLEM.agents_number);
+    int u_max = PROBLEM.actions_joint_number;
+    int z_max = PROBLEM.observations_joint_number;
+
+    vector<int> seq_act;
+    vector<int> seq_obs;
+    for (int t=0; t <= step; t++){
+        seq_act.push_back(randInt(u_max));
+        seq_obs.push_back(randInt(z_max));
+    }
+
+    // Set container with these values:
+    support.set_hiddenState(x);
+    for (int t=0; t <= step; t++){
+        vector<int> act_indivs = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, seq_act[t]);
+        vector<int> obs_indivs = PROBLEM.observations_joint2indiv[seq_obs[t]];
+        assert(PROBLEM.agents_number == (int)obs_indivs.size());
+        for (int agent: PROBLEM.agents){
+            support.set_iObservation(agent, obs_indivs.at(agent));
+            support.set_iAction(agent, act_indivs.at(agent));
+            if (t == step && agent == last_agent)
+                break;
+        }
+        // support.set_jAction(seq_act[t]);
+    }
+    
+    // print
+    cout << "WRITE "
+            << "x:" << x << " "
+            << "step:" << step << " (trunc=" << SEARCH.truncation << ") " 
+            << "seq_act:";
+    for (int t=0; t <= step; t++)
+        cout << seq_act[t] << " ";
+    cout << "seq_obs:";
+    for (int t=0; t <= step; t++)
+        cout << seq_obs[t] << " ";
+    cout << "last_agent " << last_agent;
+    cout << endl;
+    cout << "SUPPORT ";
+    cout << support.get_repr() << endl;
+}
+
+
+}// end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/core/support.hpp b/code/src/decPOMDP/core/support.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..b91fd23ae9642d1cd2ce4b73952a5570d6b1fc03
--- /dev/null
+++ b/code/src/decPOMDP/core/support.hpp
@@ -0,0 +1,106 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+
+#include <iostream> 
+#include <unordered_map>
+#include <map>
+
+
+namespace decPOMDP{
+using namespace std;
+using namespace common;
+
+
+    /// @brief An occupancy state support is represented by a 64 bits number.
+    class Support{
+        uint64_t container = 0UL;
+
+    // public:
+        //-- bitset representation
+        static int N_BITS_HIDDEN_STATE; // bits number for hidden state
+        static int* N_BITS_iACTIONS; // bits number for a command by [agent]
+        static int* N_BITS_iOBS; // bits number for an observation by [agent]
+        
+        static int** BITS_START_iOBS; // first bit of [step][agent] observations
+        static int* BITS_START_iACTIONS; // first bit of U[agent]
+
+        static uint64_t MASKS[64];
+        static uint64_t** MASKS_iOBS; // MASKS_iOBS[step][agent]
+        static uint64_t* MASKS_iACTIONS; // MASKS_iACTION[agent]
+        static uint64_t MASK_ACTIONS;
+        static uint64_t* MASKS_iHISTORIES;
+        static uint64_t MASKS_jHISTORIES;
+        static uint64_t MASK_HIDDEN_STATE; // hidden state = <x, last individuals u for intermediate agents>
+        static uint64_t MASKS_jOBS; // the last observations (all individual last observation)
+
+        static unordered_map<uint64_t, int> MAP_SUPPORTS_jACTIONS; // map: Support iACTIONS -> joint actions
+        static uint64_t* jACTIONS;
+        static uint64_t* jOBSERVATIONS;
+        
+    public:
+        static void init();
+        
+        //-- constructors
+        Support();
+        Support(uint64_t);
+        Support(int x, Support jh, int ju);
+
+        //-- get methods
+        uint64_t get_container() const; // return the container, i.e. the whole support
+        int get_hiddenState() const;
+        int get_observation(int agent, int oldness) const;
+        int get_jAction()const;
+        int get_iAction(int) const;
+        vector<int> get_iActions() const;
+        Support get_jHistory() const;
+        Support get_partial(int first_agent) const;
+        Support get_iHistory(int) const;
+        Support get_iHist_masked(int) const;
+
+        //-- set methods
+        void set_hiddenState(int);
+        void set_jObservation(int jObs);
+        void set_iObservation(int agent, int observation);
+        void set_iAction(int agent, int action);
+        void set_jAction(int);
+        void clear_actions();
+        void set_iHistory(int, const Support&);
+        void clear_iHistory(int);
+        Support do_step(int hidden_state, int jObs) const;
+
+    protected:
+        void _shift_iObservations(int agent);
+
+    public:
+        //-- operators
+        bool operator==(const Support &) const;
+        bool operator!=(const Support &) const;
+        bool operator<(const Support &) const;
+
+        //-- print / debug    
+        static void demo();
+        friend ostream &operator<<(ostream &os, const Support &supp);
+        string get_repr(int step = 100, int next_agent = 100) const;
+        string get_ih_repr(int step, int agent) const;
+        string get_zs_repr(int step, int agent) const;
+
+    };
+
+    using Support_Val_OrderMap = map<Support, double>;
+    using Support_Val_Map = unordered_map<Support, double>;
+    using Support_Int_Map = unordered_map<Support, int>;
+    using Support_Set = unordered_set<Support>;
+
+}// end namespace
+
+
+//-- hash
+namespace std {
+    template <>
+    struct hash<decPOMDP::Support> {
+        size_t operator()(const decPOMDP::Support & supp) const{
+            return supp.get_container();
+        }
+    };
+}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/Astar.cpp b/code/src/decPOMDP/sequential/Astar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3f156606b4ffb5453eb7c63a67327d4c064fc9dd
--- /dev/null
+++ b/code/src/decPOMDP/sequential/Astar.cpp
@@ -0,0 +1,140 @@
+#include "Astar.hpp"
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+///////////////////////
+// Node
+///////////////////////
+
+Node::Node(){}
+
+Node::Node(const Occupancy_State & oState, double rew_so_far, double rew_to_go):
+    oState(oState), rew_so_far(rew_so_far), rew_to_go(rew_to_go){}
+
+
+double Node::get_eval() const{
+    return this->rew_so_far + this->rew_to_go;
+}
+
+bool Node::is_terminal() const{
+    return this->oState.get_step() > SEARCH.horizon - 1;
+}
+
+bool Node::operator<(const Node & other) const{
+    return this->get_eval() < other.get_eval() + 1e-12 * this->oState.get_tau();
+}
+
+ostream &operator<<(ostream &os, const Node & node){
+    os << "Node " << " step " << node.oState.get_step() << " agent " << node.oState.get_next_agent()
+        << " rew_so_far " << node.rew_so_far << " rew_to_go " << node.rew_to_go;
+    return os;
+}
+
+
+///////////////////////
+// Astar
+///////////////////////
+
+Astar::Astar(): logger(SEARCH.log_filename, SEARCH.verbose){
+    //-- solve relaxed problem
+    this->mdp_sol.solve();
+
+    //-- init close lists
+    this->close_lists.resize(SEARCH.horizon * PROBLEM.agents_number + 1);
+    this->visited.resize(SEARCH.horizon * PROBLEM.agents_number + 1);
+
+    //-- init open lists
+    Occupancy_State oState0(PROBLEM.belief_init);
+    Node node0(oState0, 0, this->_get_heuristic_value(oState0));
+    this->open_list.push(node0);
+}
+
+void Astar::solve(){
+    //-- verbose (solver info)
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:sequential:Astar:solve() ") << endl;
+    }
+
+    //-- initialize the logger
+    this->logger.write({"time", "step", "agent", "eval", "rew_so_far", "rew_to_go", "list size"});
+
+    SEARCH.start();
+    
+    while (!this->open_list.empty()){
+        //-- next node
+        Node node;
+        int tau;
+        do{
+            node = this->open_list.top();
+            tau = node.oState.get_tau();
+            this->open_list.pop();
+        }while(this->close_lists.at(tau).find(node.oState) != this->close_lists.at(tau).end());
+        this->_log(node);
+        if (node.is_terminal()){
+            break;
+        }
+        this->close_lists.at(tau).insert(node.oState);
+
+        auto & oState = node.oState;
+        int agent = oState.get_next_agent();
+        if (SEARCH.compress)
+            oState.compress();
+        double rew_so_far = node.rew_so_far;
+        double discount = pow(PROBLEM.discount, oState.get_step());
+
+        //-- compute decision rules
+        vector<Decision_Rule> drs = VARIATIONS_GENERATOR.get_decision_rules(oState.get_iHistories(agent, oState.is_compressed),
+                                                                        PROBLEM.actions_number_byAgent[agent]);
+        
+        //-- enumerate decision rules
+        //-- => add nodes in the queue 
+        for (Decision_Rule & decision_rule: drs){
+            if (SEARCH.is_timeout())
+                throw sdm_exception::Exception(sdm_exception::timeout, "Astar::solve()");            
+            //-- compute reward, oState_next
+            double reward = oState.get_expected_reward(decision_rule);
+            double rew_so_far_next = rew_so_far + discount * reward;
+            Occupancy_State oState_next = oState.do_step(decision_rule);
+            //-- new node ?
+            if (this->_useful(oState_next, rew_so_far_next)){
+                Node node_next(oState_next, rew_so_far_next, this->_get_heuristic_value(oState_next));
+                this->open_list.push(node_next);
+                this->visited.at(tau+1).emplace(oState_next, rew_so_far_next);
+            }          
+        }
+    }
+}
+
+
+double Astar::_get_heuristic_value(Occupancy_State & oState){
+    return this->mdp_sol.get_value(oState);
+}
+
+
+bool Astar::_useful(Occupancy_State & oState, double reward_so_far) const{
+    int tau = oState.get_tau();
+    auto got = this->visited.at(tau).find(oState);
+    if (got == this->visited.at(tau).end())
+        return true;
+    return got->second < reward_so_far;
+}
+
+
+void Astar::_log(Node & node){
+    double time = SEARCH.get_time();
+
+    this->logger.write({
+                        to_string(time), 
+                        to_string(node.oState.get_step()),
+                        to_string(node.oState.get_next_agent()),
+                        to_string(node.get_eval()),
+                        to_string(node.rew_so_far),
+                        to_string(node.rew_to_go),
+                        to_string(this->open_list.size())
+                        }, time);
+}
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/Astar.hpp b/code/src/decPOMDP/sequential/Astar.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..5ef85b197759efd783c54fa4f3ade6ffdc0f02f2
--- /dev/null
+++ b/code/src/decPOMDP/sequential/Astar.hpp
@@ -0,0 +1,51 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/mdp_solution.hpp"
+
+#include <queue>
+
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+
+struct Node{
+    Occupancy_State oState;
+    double rew_so_far = 0; // sum of discounted rewards
+    double rew_to_go; // eval of future rewards
+    
+    Node();
+    Node(const Occupancy_State &, double rew_so_far, double rew_to_go);
+
+    double get_eval() const;
+    bool is_terminal() const;
+    bool operator<(const Node &) const;
+    friend ostream &operator<<(ostream &os, const Node &);
+};
+
+
+
+class Astar{
+
+    priority_queue<Node> open_list;
+    vector<unordered_set<Occupancy_State, oStateHash>> close_lists; // one list by time-step
+    vector<unordered_map<Occupancy_State, double, oStateHash>> visited; // mapping: oState -> rew_to_go
+    MDP_Solution mdp_sol;
+    utils::Logger logger;
+
+public:
+    Astar();
+    void solve();
+
+protected:
+    double _get_heuristic_value(Occupancy_State &);
+    bool _useful(Occupancy_State &, double reward_so_far) const;
+    void _log(Node &);
+};
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/HSVI.cpp b/code/src/decPOMDP/sequential/HSVI.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3c3aa30ceb07bbc16be01e1e9b589864e9f5a6c1
--- /dev/null
+++ b/code/src/decPOMDP/sequential/HSVI.cpp
@@ -0,0 +1,182 @@
+#include "HSVI.hpp"
+
+#include <sstream>
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+    HSVI::HSVI():
+        oState0(PROBLEM.belief_init),
+        logger(SEARCH.log_filename, SEARCH.verbose),
+        horizon_tau(SEARCH.horizon * PROBLEM.agents_number){
+
+        this->lower_bounds = Hyperplane_LowerBounds(this->horizon_tau);
+        this->upper_bounds = Sawtooth_Bounds(this->horizon_tau);
+        this->convexHull_bounds = ConvexHull_Bounds(this->horizon_tau);
+
+        //-- tolerance for each time step
+        if (!this->USE_ANYTIME)
+            this->_set_tolerance(SEARCH.width_tolerance);
+    }
+
+
+    /// @brief main public function
+    void HSVI::solve(){
+
+        //-- verbose (solver info)
+        if (SEARCH.verbose){
+            cout << utils::get_solver_repr("decPOMDP:HSVI:solve() " + SOLVERS_DRS_STR[SEARCH.solver_drs]) << endl;
+        }
+
+        //-- initialize the logger
+        this->logger.write({"time", "iter", "L0 value", "U0 value", "gap0", "L sizes", "U sizes"});
+
+        //-- main loop
+        SEARCH.start();
+        int iter = 0;
+        this->_log(iter);
+
+        double width0 = this->_getWidth(this->oState0);
+        double tolerance0 = width0 / 2.0;
+        if (this->USE_ANYTIME)
+            this->_set_tolerance(tolerance0);
+        
+        while(width0 >= SEARCH.width_tolerance){
+            bool improved = this->_explore(this->oState0);
+            this->_log(++iter);
+            if (!improved){
+                tolerance0 /= 2.0;
+                if (this->USE_ANYTIME)
+                    this->_set_tolerance(tolerance0);
+                //     throw sdm_exception::Exception(sdm_exception::bad_joke, "decPOMDP:HSVI:solve() no improvement during last iteration");
+            }
+            width0 = this->_getWidth(this->oState0);
+            if (width0 <= tolerance0){
+                tolerance0 = width0 / 2.0;
+                if (this->USE_ANYTIME)
+                    this->_set_tolerance(tolerance0);
+            }
+        }
+
+        //-- verbose (result info)
+        if (SEARCH.verbose){
+            double elapsed_time = SEARCH.get_time();
+            double final_gap = this->_getWidth(this->oState0);
+            ostringstream msg;
+            msg << "elapsed_time " << elapsed_time << " final gap " << final_gap << " iter " << iter << endl;
+            if (abs(final_gap) <= SEARCH.width_tolerance)
+                utils::print_green(msg.str());
+            else
+                utils::print_red(msg.str());
+        }
+    }
+
+
+    /// @brief print / store results
+    void HSVI::_log(int iter){
+        
+        //-- prepare data to log
+        double lower_value = this->lower_bounds.get_value(this->oState0);
+        double upper_value = this->USE_CONVEX_HULL ?
+                             this->convexHull_bounds.get_value(this->oState0) :
+                             upper_value = this->upper_bounds.get_value(this->oState0);
+        
+        ostringstream lower_stream;
+        for (auto const & bound: this->lower_bounds.lower_bounds)
+            lower_stream << bound.size() << " ";
+        ostringstream upper_stream;
+        if (this->USE_CONVEX_HULL){
+            for (auto const & bound: this->convexHull_bounds.get_bounds())
+                upper_stream << bound.size() << " ";
+        }
+        else{
+            for (auto const & bound: this->upper_bounds.get_bounds())
+                upper_stream << bound.size() << " ";
+        }
+        
+
+        //-- log
+        this->logger.write({
+                            to_string(SEARCH.get_time()), 
+                            to_string(iter),
+                            to_string(lower_value),
+                            to_string(upper_value),
+                            to_string(upper_value - lower_value),
+                            lower_stream.str(),
+                            upper_stream.str()
+                            });
+    }
+
+
+    /// @brief HSVI (recurrent) exploration
+    /// @return A boolean: whether a bound improvement has been made (lower or upper bound).
+    bool HSVI::_explore(Occupancy_State & oState){
+        
+        //-- HSVI stopping criteria
+        int step = oState.get_step();
+        if (step == SEARCH.horizon)
+            return false;
+        double lower_init = this->lower_bounds.get_value(oState);
+        double upper_init = this->USE_CONVEX_HULL ?
+                            this->convexHull_bounds.get_value(oState) :
+                            this->upper_bounds.get_value(oState);
+        if (upper_init - lower_init < this->width_tolerances.at(step))
+            return false;
+        int tau = oState.get_tau();
+
+        //-- greedy selection
+        auto [oState_next, upper_value] = this->USE_CONVEX_HULL ?
+                                          this->convexHull_bounds.select_greedy(oState) :
+                                          this->upper_bounds.select_greedy(oState);
+
+        //-- explore next-time step
+        bool improved = this->_explore(oState_next);
+
+        //-- update bounds
+        if (tau < this->horizon_tau - 1){ // re-evaluate upper bound. Useless for step = horizon - 1, as UB(horizon) = 0.
+            tie(std::ignore, upper_value) = this->USE_CONVEX_HULL ?
+                                            this->convexHull_bounds.select_greedy(oState) :
+                                            this->upper_bounds.select_greedy(oState);
+        }
+
+        if (upper_value < upper_init){ // update upper bound. Useless if its evaluation was not improved.
+            if (this->USE_CONVEX_HULL)
+                this->convexHull_bounds.update(oState, upper_value);
+            else
+                this->upper_bounds.update(oState, upper_value);
+            improved = true;
+        }
+
+        if (upper_value - lower_init > this->width_tolerances.at(step)){ // update lower bound. Useless if tolerance is reached.
+            vector<Occupancy_State> oStates = {oState};
+            double lower_value = this->lower_bounds.at(tau).update(oStates, oState.get_next_agent());
+            if (lower_value > lower_init){
+                improved = true;
+            }
+        }
+        return improved;
+    }
+
+
+    /// @brief get the difference between lower/upper bounds evaluation
+    double HSVI::_getWidth(Occupancy_State & oState){
+        double lower_value = this->lower_bounds.get_value(oState);
+        double upper_value = this->USE_CONVEX_HULL ?
+                             this->convexHull_bounds.get_value(oState) :
+                             this->upper_bounds.get_value(oState);
+        return upper_value - lower_value;
+    }
+
+    /// @brief  Set tolerance values, i.e. a threshold (for each time-step):
+    ///         if the gap (= upper bound value - lower bound value) is under this threshold
+    ///         the found solution is considered as optimal.
+    /// @param tolerance0 The value for time-step 0.
+    void HSVI::_set_tolerance(double tolerance0){
+        this->width_tolerances.resize(SEARCH.horizon);
+        for (int step = 0; step < SEARCH.horizon; step++)
+            this->width_tolerances.at(step) = tolerance0 * pow(PROBLEM.discount, step);
+    }
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/HSVI.hpp b/code/src/decPOMDP/sequential/HSVI.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..4b1608d0030229067a472fa79b0e6230e0b3fbac
--- /dev/null
+++ b/code/src/decPOMDP/sequential/HSVI.hpp
@@ -0,0 +1,45 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/max_plane.hpp"
+#include "value_representation/sawtooth.hpp"
+#include "value_representation/convex_hull.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+    class HSVI {
+        static const bool USE_CONVEX_HULL = false; // otherwise use sawtooth
+        static const bool USE_ANYTIME = false;
+
+        Occupancy_State oState0; // initial oState (from initial belief)
+        vector<double> width_tolerances; // for each time-step (discounted)
+
+        //-- value representations
+        Hyperplane_LowerBounds lower_bounds;
+        Sawtooth_Bounds upper_bounds;
+        ConvexHull_Bounds convexHull_bounds;
+
+        //-- log
+        utils::Logger logger;
+
+        //-- sequential
+        int horizon_tau;
+
+    public:
+        HSVI();
+
+        void solve();
+
+    protected:
+        bool _explore(Occupancy_State &);
+        double _getWidth(Occupancy_State &);
+        void _log(int iter);
+        void _set_tolerance(double tolerance0);
+    };
+
+
+}}
diff --git a/code/src/decPOMDP/sequential/HSVI_tabular.cpp b/code/src/decPOMDP/sequential/HSVI_tabular.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e871e76aa8b84cfc1707046ddef61f08247c8208
--- /dev/null
+++ b/code/src/decPOMDP/sequential/HSVI_tabular.cpp
@@ -0,0 +1,131 @@
+#include "HSVI_tabular.hpp"
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+/// @brief constructor
+HSVI_Tabular::HSVI_Tabular(): HSVI_Tabular_Base<Occupancy_State>(){
+    this->mdp_sol.solve();
+    
+    //-- sequential
+    this->horizon_tau = SEARCH.horizon * PROBLEM.agents_number;
+
+    //--    initial lower bounds value
+    this->pessimist_values.resize(this->horizon_tau + 1);
+    auto [blind_action, blind_reward] = Decision_Rule::blind_heuristic();
+    auto [worst_action, worst_reward] = Decision_Rule::worst_heuristic();
+    double valueToGo_pessimistFirst = 0;  
+    double valueToGo_pessimistOthers = 0;
+    for(int step = SEARCH.horizon; step >= 0; step--){
+        for (int agent: PROBLEM.agents){
+            int tau = Occupancy_State::get_tau(step, agent);
+            if (tau <= this->horizon_tau){
+                this->pessimist_values.at(tau) = agent == 0 ? valueToGo_pessimistFirst : valueToGo_pessimistOthers;
+            }
+        }
+        valueToGo_pessimistFirst = blind_reward + PROBLEM.discount * valueToGo_pessimistFirst;
+        valueToGo_pessimistOthers = worst_reward + PROBLEM.discount * valueToGo_pessimistFirst;
+    }
+
+    //-- tabular
+    this->bounds.resize(this->horizon_tau + 1);
+}
+
+
+/// @brief greedy search: decision_rules that maximize Q(oState, decision_rules).
+///     All possible decision rules are enumerated.
+///     For each one, the oState successor (oState_next) is evaluated: Vnext = get_bounds(oState_next).
+///     The decision rules with the larger Q value (Q = reward expectation + discount * Vnext) is greedy. 
+/// @return the pair: (greedy_oState_next, greedy bounds value)
+pair<Occupancy_State, Point_Bounds> HSVI_Tabular::_select_greedy(Occupancy_State & oState){
+    
+    //-- compute decision rules
+    //--    We only use an agent decision rules,
+    //--    in contrast to the simultaneous case where the cartesian prduct of decision rules is enumerated.
+    int agent = oState.get_next_agent();
+    vector<Decision_Rule> drs = VARIATIONS_GENERATOR.get_decision_rules(oState.get_iHistories(agent, SEARCH.compress),
+                                                                        PROBLEM.actions_number_byAgent[agent]);
+
+    //-- enumerate decision rules
+    Occupancy_State greedy_oState_next;
+    Point_Bounds greedy_bounds(-INFINITY, -INFINITY);
+    double greedy_width = -INFINITY;
+
+    for (Decision_Rule & decision_rule: drs){
+        
+        if (SEARCH.is_timeout())
+            throw sdm_exception::Exception(sdm_exception::timeout, "HSVI_Tabular::_select_greedy");
+        
+        //-- compute Q(oState, decision_rule)
+        double reward = oState.get_expected_reward(decision_rule);
+        Occupancy_State oState_next = oState.do_step(decision_rule);
+        Point_Bounds V_next_bounds = this->get_bounds(oState_next);
+        double lower = reward + PROBLEM.discount * V_next_bounds.lower;
+        double upper = reward + PROBLEM.discount * V_next_bounds.upper;
+
+        //-- greedy ?
+        if (upper > greedy_bounds.upper){
+            greedy_bounds.upper = upper;
+            greedy_oState_next = oState_next;
+        }
+        greedy_bounds.lower = max(greedy_bounds.lower, lower);
+    }
+
+    //-- compress
+    if (SEARCH.compress)
+        greedy_oState_next.compress();
+    
+    return make_pair(greedy_oState_next, greedy_bounds);
+}
+
+
+///////////////////////////
+// TABULAR
+// the tabular value function is represented by the mapping (this->bounds):
+// Occupancy_State -> Point_Bounds
+//////////////////////////
+
+
+/// @brief get the estimation of an oState value.
+/// 1) Looking for the value in the mapping: oStates -> value bounds
+/// 2) Return an initial value: 
+///      lower bound = pessimistic estimation from blind strategy;
+///      upper bound = optimistic estimation from pomdp solution.
+/// @return a Point_Bounds, i.e. two scalar values: lower/upper bounds.  
+Point_Bounds HSVI_Tabular::get_bounds(Occupancy_State &oState){
+    int tau = oState.get_tau();
+
+    //-- 1) stored in the mapping ?
+    auto got = this->bounds.at(tau).find(oState);
+    if (got != this->bounds.at(tau).end()){
+        return got->second;
+    }
+
+    //-- 2) compute initial value
+    return Point_Bounds(this->pessimist_values.at(tau),
+                        this->_get_relaxation_value(oState));
+}
+
+
+void HSVI_Tabular::_set_bounds(Occupancy_State &oState, const Point_Bounds & point_bounds){
+    int tau = oState.get_tau();
+    this->bounds.at(tau)[oState] = point_bounds;
+}
+
+
+///////////////////////////
+// RELAXATION:
+// upper-bound relaxation (MDP or POMDP),
+// i.e. optimistic evaluation of an oState
+//////////////////////////
+
+
+double HSVI_Tabular::_get_mdp_value(Occupancy_State & oState){
+    return this->mdp_sol.get_value(oState);
+}
+
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/HSVI_tabular.hpp b/code/src/decPOMDP/sequential/HSVI_tabular.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..f1787c12a6692abf8308beb2542477601a1819f4
--- /dev/null
+++ b/code/src/decPOMDP/sequential/HSVI_tabular.hpp
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/mdp_solution.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+    class HSVI_Tabular: public HSVI_Tabular_Base<Occupancy_State>{
+        MDP_Solution mdp_sol;        
+        int horizon_tau; // sequential
+        
+    public:
+        HSVI_Tabular();
+
+        virtual Point_Bounds get_bounds(Occupancy_State &);
+
+    protected:
+        
+        //-- tabular
+        virtual pair<Occupancy_State, Point_Bounds> _select_greedy(Occupancy_State &);
+        virtual void _set_bounds(Occupancy_State &, const Point_Bounds &);
+
+        //-- relaxation (MDP or POMDP)
+        virtual double _get_mdp_value(Occupancy_State &);
+
+    };
+
+
+}}
+
+
diff --git a/code/src/decPOMDP/sequential/PBVI.cpp b/code/src/decPOMDP/sequential/PBVI.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6ff3364c3990f89bd8f135c46e73a30f602dab90
--- /dev/null
+++ b/code/src/decPOMDP/sequential/PBVI.cpp
@@ -0,0 +1,232 @@
+#include "PBVI.hpp"
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+/// @brief constructor
+PBVI::PBVI(POMDP::HSVI * hsvi_pomdp):logger(SEARCH.log_filename, SEARCH.verbose){
+        
+    this->oState0 = Occupancy_State(PROBLEM.belief_init);
+    this->horizon_tau = SEARCH.horizon * PROBLEM.agents_number;
+    this->pomdp_solution = POMDP_Solution(hsvi_pomdp, this->horizon_tau);
+    this->lower_bounds = Hyperplane_LowerBounds(this->horizon_tau);
+    this->bags.resize(this->horizon_tau + 1);
+    this->bags.at(0).push_back(this->oState0);
+}
+
+
+/// @brief main function for PBVI algorithm:
+///     repeat expansions (new occupancy states) / backups (improve occupancy states estimation)				 
+void PBVI::solve(){
+    //-- verbose (solver info)
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:sequential:PBVI:solve()") << endl;
+    }
+
+    //-- initialize the logger   
+    this->logger.write({"seed", "time", "iter", "LB0_value", "bag_sizes", "LB_sizes"});
+
+    //-- main loop
+    SEARCH.start();
+    int iter = 0;
+    this->_log(iter, 0);
+    while (iter++ < SEARCH.iter_max){
+        //-- expansion
+        for (int tau = 0; tau < this->horizon_tau - 1; tau++){
+            this->_expand(tau, iter);
+        }
+        //-- backup
+        for (int tau = this->horizon_tau - 1; tau >= 0; tau--){
+            auto & bag = this->bags.at(tau);
+            int next_agent = bag.at(0).get_next_agent();
+            this->lower_bounds.at(tau).update(bag, next_agent);
+        }
+        //-- verbose
+        this->_log(iter, 0);
+    }
+
+    //-- verbose (result info)
+    if (SEARCH.verbose){
+        double elapsed_time = SEARCH.get_time();
+        double value = this->lower_bounds.get_value(this->oState0);
+        ostringstream msg;
+        msg << "elapsed_time " << elapsed_time << " final value " << value << " iter " << iter - 1 << endl;
+        utils::_print_color(utils::Colors::bold, msg.str());
+    }
+
+// for (const auto & bag: this->bags){
+//     for (auto oState: bag){
+//         cout << oState;
+//     }
+//     cout << "______" << endl;
+// }
+}
+
+void PBVI::_log(int iter, int tau){
+    //-- prepare data to log
+    double value = this->lower_bounds.get_value(this->oState0);
+    ostringstream bag_stream;
+    for (const auto & bag: this->bags)
+        bag_stream << " " << bag.size();
+    ostringstream bound_stream;
+    for (const auto & bound: this->lower_bounds.lower_bounds)
+        bound_stream << " " << bound.size();
+
+
+    this->logger.write({to_string(SEARCH.seed),
+                        to_string(SEARCH.get_time()), 
+                        to_string(iter),
+                        to_string(value),
+                        " " + bag_stream.str(),
+                        " " + bound_stream.str()
+                        });
+}
+
+
+/// @brief add some oStates in PBVI point-sets (in next-time step bag)
+/// @param tau (sequential) time-step
+void PBVI::_expand(int tau, int iter){
+
+    auto & bag =  this->bags.at(tau);
+    auto & bag_next =  this->bags.at(tau + 1);
+    int select_number = max(bag_next.size(), size_t(1));
+
+    int selected_number = 0;
+    int loops = 1;//ceil(select_number / (double)bag.size());
+    for (int i = 0; i < loops && selected_number < select_number; i++){
+        //-- for each bag oState, we are looking for good successors
+        for (auto &oState: bag){    
+            if (SEARCH.is_timeout())
+                throw sdm_exception::Exception(sdm_exception::timeout, "PBVI::expand");
+            
+            //-- looking for a successor
+            Occupancy_State oState_next;
+            double dist;
+            // double rnd = utils::fast_calc::rand_double(0, 1);
+            if (iter % 2 == 0){// (rnd < .5){
+                tie(oState_next, dist) = this->_select_distance(oState);
+            }
+            else{
+                tie(oState_next, dist) = this->_select_POMDP(oState);
+            }
+            
+            //-- add it to the next bag
+            if (dist > SEARCH.pbvi_distance_threshold){
+                if (SEARCH.compress)
+                    oState_next.compress();
+                bag_next.push_back(oState_next);
+                selected_number++;
+            }
+
+            //-- done ?     
+            if (selected_number >= select_number)
+                break;
+        }
+    }
+}
+
+
+/// @brief Try a batch of random policy, keep the best successor (POMDP value).
+/// @return A pair (the selected oState, oState distance)
+pair<Occupancy_State, double> PBVI::_select_POMDP(Occupancy_State &oState){
+    int tau = oState.get_tau();
+    int agent = oState.get_next_agent();
+
+#define expand_enumerate
+
+#ifdef expand_enumerate
+    //-- compute decision rules
+    //--    We only use an agent decision rule,
+    //--    in contrast to the simultaneous case where the cartesian prduct of decision rules is enumerated.
+    vector<Decision_Rule> drs = VARIATIONS_GENERATOR.get_decision_rules(oState.get_iHistories(agent, true),
+                                                                        PROBLEM.actions_number_byAgent[agent]);
+
+    //-- enumerate decision rules
+    double max_pomdpValue = -INFINITY;
+    Occupancy_State best_oState_next;
+    double selected_dist = -INFINITY;
+    for (Decision_Rule & decision_rule: drs){
+        //-- eval decision rule
+        double reward = oState.get_expected_reward(decision_rule);
+        Occupancy_State oState_next = oState.do_step(decision_rule);
+        double pomdpValue = reward + PROBLEM.discount * this->pomdp_solution.get_value(oState_next);
+
+        // best ?
+        if (pomdpValue > max_pomdpValue){
+            double dist = this->_get_dist(oState_next);
+            if (selected_dist < 0 ||  dist > SEARCH.pbvi_distance_threshold){
+                max_pomdpValue = pomdpValue;
+                best_oState_next = oState_next;
+                selected_dist = dist;
+            }
+        }
+    }
+#else
+    double max_pomdpValue = -INFINITY;
+    Occupancy_State best_oState_next;
+    double selected_dist = 0;
+    for (int i = 0; i < SEARCH.pbvi_candidates_number; i++){
+        //-- eval random decision rule
+        Decision_Rule decision_rule(RuleType::RANDOM);
+        Occupancy_State oState_next = oState.do_step(decision_rule);
+        double reward = oState.get_expected_reward(decision_rule);
+        double pomdpValue = reward + PROBLEM.discount * this->pomdp_solution.get_value(oState_next);
+
+        // best ?
+        if (pomdpValue > max_pomdpValue){
+            double dist = this->_get_dist(oState_next);
+            if (i == 0 ||  dist > SEARCH.pbvi_distance_threshold){
+                max_pomdpValue = pomdpValue;
+                best_oState_next = oState_next;
+                selected_dist = dist;
+            }
+        }
+    }
+#endif
+
+    return make_pair(best_oState_next, selected_dist);
+}
+
+
+/// @brief Try a batch of random policy, keep the best successor (distance).
+/// @return A pair (the selected oState, oState distance)
+pair<Occupancy_State, double> PBVI::_select_distance(const Occupancy_State &oState) const{
+    double dist_max = -INFINITY;
+    Occupancy_State best_oState_next;
+
+    for (int i = 0; i < SEARCH.pbvi_candidates_number; i++){
+        //-- eval random decision rule
+        Decision_Rule decision_rule(RuleType::RANDOM);
+        Occupancy_State oState_next = oState.do_step(decision_rule);
+        double dist = this->_get_dist(oState_next);
+        // best ?
+        if (dist > dist_max){
+            dist_max = dist;
+            best_oState_next = oState_next;
+        }
+        if (dist >= .5) // sufficiently high (perfs)
+            break;
+    }
+
+    return make_pair(best_oState_next, dist_max);
+}
+
+
+/// @brief Compute L1 distance between an occupancy state (oState) and a occupancy state set (pointSet), 
+/// i.e. min_{s in pointSet} distance(oState, s)			 
+double PBVI::_get_dist(const Occupancy_State &oState) const{
+    int tau = oState.get_tau();
+    double dist_min = INFINITY;
+    for (const auto & other: this->bags.at(tau)){
+        dist_min = min(dist_min, oState.get_dist(other));
+        if (dist_min < SEARCH.pbvi_distance_threshold){ // Warning: break if the distance is < threshold
+            break;
+        }
+    }
+    return dist_min;
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/PBVI.hpp b/code/src/decPOMDP/sequential/PBVI.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..49b2107941fc1874d603557ed9b5398c8fdbb09e
--- /dev/null
+++ b/code/src/decPOMDP/sequential/PBVI.hpp
@@ -0,0 +1,38 @@
+#pragma once
+
+#include <unordered_map>
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/pomdp_solution.hpp"
+#include "value_representation/max_plane.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+    class PBVI{
+        int horizon_tau;
+
+        utils::Logger logger;
+        POMDP_Solution pomdp_solution; // for exploration
+        Occupancy_State oState0; // initial oState (from initial belief)
+        Hyperplane_LowerBounds lower_bounds;
+        vector<vector<Occupancy_State>> bags; 
+
+    public:
+        PBVI(POMDP::HSVI * hsvi_pomdp);
+
+        void solve();
+        
+    protected:
+        void _expand(int tau, int iter);
+        void _backup(int tau);
+        pair<Occupancy_State, double> _select_POMDP(Occupancy_State &oState);
+        pair<Occupancy_State, double> _select_distance(const Occupancy_State &oState) const;
+        double _get_dist(const Occupancy_State &oState) const;
+        void _log(int iter, int tau);
+    };
+
+}}
diff --git a/code/src/decPOMDP/sequential/PBVI_tabular.cpp b/code/src/decPOMDP/sequential/PBVI_tabular.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7e17cc7cf655290d2e41a38ca3a776ce5579ac37
--- /dev/null
+++ b/code/src/decPOMDP/sequential/PBVI_tabular.cpp
@@ -0,0 +1,262 @@
+#include "PBVI_tabular.hpp"
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+/// @brief constructor
+PBVI_Tabular::PBVI_Tabular(POMDP::HSVI * hsvi_pomdp): logger(SEARCH.log_filename, SEARCH.verbose){
+        
+    this->oState0 = Occupancy_State(PROBLEM.belief_init);
+    this->horizon_tau = SEARCH.horizon * PROBLEM.agents_number;
+    this->pomdp_solution = POMDP_Solution(hsvi_pomdp, this->horizon_tau);
+
+    //-- initial lower bounds value (for each time-step):
+    //--    pessimistic estimation from blind strategy
+    this->bounds.resize(this->horizon_tau + 1);
+    this->pessimist_values.resize(this->horizon_tau + 1);
+
+    auto [blind_action, blind_reward] = Decision_Rule::blind_heuristic();
+    auto [worst_action, worst_reward] = Decision_Rule::worst_heuristic();
+
+    double valueToGo_pessimistFirst = 0;  
+    double valueToGo_pessimistOthers = 0;
+    for(int step = SEARCH.horizon; step >= 0; step--){
+        for (int agent: PROBLEM.agents){
+            int tau = Occupancy_State::get_tau(step, agent);
+            if (tau <= this->horizon_tau){
+                this->pessimist_values.at(tau) = agent == 0 ? valueToGo_pessimistFirst : valueToGo_pessimistOthers;
+            }
+        }
+        valueToGo_pessimistFirst = blind_reward + PROBLEM.discount * valueToGo_pessimistFirst;
+        valueToGo_pessimistOthers = worst_reward + PROBLEM.discount * valueToGo_pessimistFirst;
+    }
+    this->bounds.at(0)[this->oState0] = this->pessimist_values.at(0);
+
+}
+
+
+/// @brief main function for PBVI algorithm:
+///     repeat expansions (new occupancy states) / backups (improve occupancy states estimation)				 
+void PBVI_Tabular::solve(){
+    //-- verbose (solver info)
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:sequential:PBVI_Tabular:solve()") << endl;
+    }
+
+    //-- initialize the logger   
+    this->logger.write({"seed", "time", "iter", "L0 value", "oStates number"});
+
+    //-- main loop
+    SEARCH.start();
+    int iter = 0;
+    this->_log(iter, 0);
+    while (iter++ < SEARCH.iter_max){
+        //-- expansion
+        for (int tau = 0; tau < this->horizon_tau - 1; tau++){
+            this->_expand(tau, iter);
+        }
+        //-- backup
+        for (int tau = this->horizon_tau - 1; tau >= 0; tau--){
+            this->_backup(tau);
+        }
+        //-- verbose
+        this->_log(iter, 0);
+    }
+
+    //-- verbose (result info)
+    if (SEARCH.verbose){
+        double elapsed_time = SEARCH.get_time();
+        double value = this->_get_tabular_lb(this->oState0);
+        ostringstream msg;
+        msg << "elapsed_time " << elapsed_time << " final value " << value << " iter " << iter - 1 << endl;
+        utils::_print_color(utils::Colors::bold, msg.str());
+
+// for (int tau = 0; tau < this->horizon_tau -1; tau++){
+//     auto const & bound = this->bounds.at(tau);
+//     cout << "________" << endl;
+//     for (auto oState_value: bound)
+//         cout << oState_value.first << oState_value.second << endl;
+// }
+
+    }
+}
+
+void PBVI_Tabular::_log(int iter, int tau){
+    //-- prepare data to log
+    double value = this->_get_tabular_lb(this->oState0);
+    ostringstream bound_stream;
+    for (auto const & bound: this->bounds)
+        bound_stream << " " << bound.size();
+
+
+    this->logger.write({to_string(SEARCH.seed),
+                        to_string(SEARCH.get_time()), 
+                        to_string(iter),
+                        to_string(value),
+                        bound_stream.str()
+                        });
+}
+
+
+void PBVI_Tabular::_backup(int tau){													   
+    for (auto & oState_value: this->bounds.at(tau)){
+        auto oState = oState_value.first;
+
+        //-- compute decision rules
+        //--    We only use an agent decision rules,
+        //--    in contrast to the simultaneous case where the cartesian prduct of decision rules is enumerated.
+        int agent = oState.get_next_agent();
+        auto & ihs_set = oState.get_iHistories(agent, true);
+        vector<Decision_Rule> drs = VARIATIONS_GENERATOR.get_decision_rules(ihs_set, PROBLEM.actions_number_byAgent[agent]);
+        //-- enumerate decision rules
+        double greedy_value = -INFINITY;
+        for (Decision_Rule & decision_rule: drs){
+            if (SEARCH.is_timeout())
+                throw sdm_exception::Exception(sdm_exception::timeout, "PBVI_Tabular::backup");
+            //-- compute Q(oState, decision_rule)
+            double reward = oState.get_expected_reward(decision_rule);
+            Occupancy_State oState_next = oState.do_step(decision_rule);
+            double V_next = this->_get_tabular_lb(oState_next);
+            double value = reward + PROBLEM.discount * V_next;
+            greedy_value = max(greedy_value, value);
+        }
+
+        //-- set bound value
+        if (greedy_value > oState_value.second)
+            this->bounds.at(tau)[oState] = greedy_value;
+
+    }
+
+}
+
+/// @brief get the estimation of an oState lower bound.
+/// 1) Looking for the value in the mapping: oStates -> lower value bound
+/// 2) Return an initial value: 
+///      pessimistic estimation from blind strategy
+/// @return a Point_Bounds, i.e. two scalar values: lower/upper bounds.  
+double PBVI_Tabular::_get_tabular_lb(const Occupancy_State &oState) const{
+    int tau = oState.get_tau();
+
+    //-- 1) stored in the mapping ?
+    auto & values = this->bounds.at(tau);
+    auto got = values.find(oState);
+    if (got != values.end()){
+        return got->second;
+    }
+
+    //-- 2) initial value
+    return this->pessimist_values.at(tau);
+}
+
+/// @brief add some oStates in PBVI point-sets
+/// @param step time-step 	 
+void PBVI_Tabular::_expand(int tau, int iter){
+
+    const auto & bound =  this->bounds.at(tau);
+    auto & bound_next =  this->bounds.at(tau + 1);
+    int select_number = max(bound_next.size(), size_t(1));
+    
+    int selected_number = 0;
+    int loops = ceil(select_number / (double)bound.size());
+    for (int i = 0; i < loops && selected_number < select_number; i++){
+        //-- for each bound oState, we are looking for good successors
+        for (const auto &oState_value: bound){    
+            if (SEARCH.is_timeout())
+                throw sdm_exception::Exception(sdm_exception::timeout, "PBVI_Tabular::expand");
+            
+            //-- looking for a successor
+            Occupancy_State oState_next;
+            double dist;
+            // double rnd = utils::fast_calc::rand_double(0, 1);
+            if (iter % 2 == 0){// (rnd < .5){
+                tie(oState_next, dist) = this->_select_distance(oState_value.first, bound_next);
+            }
+            else{
+                tie(oState_next, dist) = this->_select_POMDP(oState_value.first, bound_next);
+            }
+            
+            //-- add it to the next bound
+            if (dist > SEARCH.pbvi_distance_threshold){
+                if (SEARCH.compress)
+                    oState_next.compress();
+                bound_next[oState_next] = -INFINITY;
+                selected_number++;
+            }
+
+            //-- done ?     
+            if (selected_number >= select_number)
+                break;
+        }
+    }
+}
+
+/// @brief Try a batch of random policy, keep the best successor (POMDP value).
+/// @return A pair (the selected oState, oState distance)
+pair<Occupancy_State, double> PBVI_Tabular::_select_POMDP(const Occupancy_State &oState, const oState_LB_Map & bound_next){
+    int tau = oState.get_tau();
+
+    double max_pomdpValue = -INFINITY;
+    Occupancy_State best_oState_next;
+    double selected_dist = 0;
+    for (int i = 0; i < SEARCH.pbvi_candidates_number; i++){
+        //-- eval random decision rule
+        Decision_Rule decision_rule(RuleType::RANDOM);
+        Occupancy_State oState_next = oState.do_step(decision_rule);
+        double reward = oState.get_expected_reward(decision_rule);
+        double pomdpValue = reward + PROBLEM.discount * this->pomdp_solution.get_value(oState_next);
+
+        // best ?
+        if (pomdpValue > max_pomdpValue){
+            double dist = this->_get_dist(oState_next, bound_next);
+            if (i == 0 ||  dist > SEARCH.pbvi_distance_threshold){
+                max_pomdpValue = pomdpValue;
+                best_oState_next = oState_next;
+                selected_dist = dist;
+            }
+        }
+    }
+    
+    return make_pair(best_oState_next, selected_dist);
+}
+
+
+/// @brief Try a batch of random policy, keep the best successor (distance).
+/// @return A pair (the selected oState, oState distance)
+pair<Occupancy_State, double> PBVI_Tabular::_select_distance(const Occupancy_State &oState, const oState_LB_Map & bound_next) const{
+    double dist_max = -INFINITY;
+    Occupancy_State best_oState_next;
+
+    for (int i = 0; i < SEARCH.pbvi_candidates_number; i++){
+        //-- eval random decision rule
+        Decision_Rule decision_rule(RuleType::RANDOM);
+        Occupancy_State oState_next = oState.do_step(decision_rule);
+        double dist = this->_get_dist(oState_next, bound_next);
+        // best ?
+        if (dist > dist_max){
+            dist_max = dist;
+            best_oState_next = oState_next;
+        }
+        if (dist >= .5) // sufficiently high (perfs)
+            break;
+    }
+
+    return make_pair(best_oState_next, dist_max);
+}
+
+
+/// @brief Compute L1 distance between an occupancy state (oState) and a occupancy state set (pointSet), 
+/// i.e. min_{s in pointSet} distance(oState, s)			 
+double PBVI_Tabular::_get_dist(const Occupancy_State &oState, const oState_LB_Map & bound) const{
+    double dist_min = INFINITY;
+    for (const auto & oState_value: bound){
+        dist_min = min(dist_min, oState.get_dist(oState_value.first));
+        if (dist_min < SEARCH.pbvi_distance_threshold) // Warning: break if the distance is < threshold  
+            break;
+    }
+    return dist_min;
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/PBVI_tabular.hpp b/code/src/decPOMDP/sequential/PBVI_tabular.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..45f8ea9b0150b516ac2fa9524ca5e18eba783901
--- /dev/null
+++ b/code/src/decPOMDP/sequential/PBVI_tabular.hpp
@@ -0,0 +1,45 @@
+#pragma once
+
+#include <unordered_map>
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/pomdp_solution.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+    //-- we store the (tabular) values in a mapping: oState -> lower bound value
+    //--    Remark:
+    //--        The mapping uses the uncompressed version to hash/compare oStates.
+    //--        The reason is: _select_greedy() enumerate the decision rules, compute the oState successor, and then evaluate it. 
+    //--        It is too time-consuming to compress all the successors.
+    using oState_LB_Map = unordered_map<Occupancy_State, double, oStateHash_Uncompressed, oState_Equal_Uncompressed>;
+
+    class PBVI_Tabular{
+        int horizon_tau;
+
+        utils::Logger logger;
+        POMDP_Solution pomdp_solution; // for exploration
+        Occupancy_State oState0; // initial oState (from initial belief)
+        vector<oState_LB_Map> bounds; // oStates value bounds
+        vector<double> pessimist_values; // a pessimist value for all tau (for lower bounds init)
+        
+    public:
+        PBVI_Tabular(POMDP::HSVI * hsvi_pomdp);
+
+        void solve();
+        
+    protected:
+        void _expand(int tau, int iter);
+        void _backup(int tau);
+        double _get_tabular_lb(const Occupancy_State &oState) const;
+        pair<Occupancy_State, double> _select_POMDP(const Occupancy_State &oState, const oState_LB_Map & bound_next);
+        pair<Occupancy_State, double> _select_distance(const Occupancy_State &oState, const oState_LB_Map & oState_set_next) const;
+        double _get_dist(const Occupancy_State &oState, const oState_LB_Map & bound) const;
+        void _log(int iter, int tau);
+    };
+
+}}
diff --git a/code/src/decPOMDP/sequential/_module.hpp b/code/src/decPOMDP/sequential/_module.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..2ade292ec6a5184e435f15f27b004b47285fcea7
--- /dev/null
+++ b/code/src/decPOMDP/sequential/_module.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "HSVI_tabular.hpp"
+#include "PBVI_tabular.hpp"
+#include "PBVI.hpp"
+#include "HSVI.hpp"
+#include "oSarsa.hpp"
+#include "oSarsa_v2.hpp"
+#include "Astar.hpp"
+#include "tests_unitary/_module.hpp"
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/oSarsa.cpp b/code/src/decPOMDP/sequential/oSarsa.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..37dad0ff699196aa65b45dcef58333ec33b7d33d
--- /dev/null
+++ b/code/src/decPOMDP/sequential/oSarsa.cpp
@@ -0,0 +1,536 @@
+#include "oSarsa.hpp"
+#include "../core/distribution.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+oSarsa::oSarsa():
+    horizon_tau(SEARCH.horizon * PROBLEM.agents_number),
+    oState0(PROBLEM.belief_init),
+    policy(SEARCH.horizon, PROBLEM.agents_number),
+    final_policy(policy),
+    Qfunctions(horizon_tau),
+    reachable_sets(horizon_tau),
+    logger(SEARCH.log_filename, SEARCH.verbose){
+
+    //-- solve the MDP (for heuristic selection of decision-rules)
+    this->mdp_sol.solve();
+
+    //-- blind actions (for heuristic selection of decision-rules)
+    auto [blind_ju, temp] = Decision_Rule::blind_heuristic();
+    this->blind_actions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, blind_ju);
+
+}
+
+
+/// @brief main public function
+void oSarsa::solve(){
+
+    //-- verbose (solver info)
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:oSarsa:solve() ") << endl;
+    }
+
+    //-- initialize the algo
+    this->logger.write({"time", "iter", "value", "estim", "best", "Q sizes", "epsilon"});
+    this->_set_reachables();
+    SEARCH.start();
+    this->_init_policy();
+    this->_update_Q();
+    
+    if (SEARCH.verbose >= 10){ // debug
+        cout << "POLICY init " << endl << this->policy << endl;
+        cout << "Q_VALUES init" << endl;
+        for (int tau = 0; tau < horizon_tau; tau++){
+            auto [step, agent] = Occupancy_State::get_step_agent(tau);
+            cout << "=== step " << step << " agent " << agent << endl;
+            cout << this->Qfunctions.at(tau).get_repr(step, agent);
+        }
+    }
+    
+    //-- main loop
+    int iter = 0;
+    this->_log(iter);
+    double log_period = SEARCH.timeout / 250.0;
+    while(!SEARCH.is_timeout()){
+        iter++;
+        this->epsilon = this->_get_epsilon(iter);
+        this->temperature = this->_get_temperature(this->epsilon);
+        this->_update_policy();
+        this->_update_Q();
+        
+        //-- log
+        double time_sinceLastLog = this->logger.get_time_sinceLastWrite(SEARCH.get_time());
+        if (iter == 1 || this->improved || time_sinceLastLog > log_period)
+            this->_log(iter);
+    }
+
+    //-- verbose (final policy)
+    if (SEARCH.verbose >= 10){
+        cout << "POLICY final " << endl << this->final_policy << endl;
+    }
+}
+
+
+/// @brief Build initial policy: \\
+/// evaluate 1) the blind strategy, 2) the MDP heuristic \\
+/// and keep the best.
+void oSarsa::_init_policy(){
+    Policy new_policy(SEARCH.horizon, PROBLEM.agents_number);
+    
+    for (int i = 0; i < 2; i++){
+        if (i > 0 && !SEARCH.use_portfolio)
+            break;
+        auto oState = this->oState0;
+        double R_sum = 0;
+        for (int tau = 0; tau < horizon_tau; tau++){
+            auto [step, agent] = Occupancy_State::get_step_agent(tau);
+            Decision_Rule & dr = new_policy.get_decisionRule(step, agent);
+
+            //-- select the decision rule
+            if (i == 0)
+                dr = this->_select_blind(oState);
+            else
+                dr = this->_select_MDP(oState);
+
+            dr.default_action = this->blind_actions.at(agent);
+            this->_extend_jointDecisionRule_LPE(dr, oState);
+
+            //-- update R_sum, oState
+            double discount = pow(PROBLEM.discount, step);
+            R_sum += discount * this->rew_shaping.get_expected_reward(oState, dr);
+            if (tau < this->horizon_tau - 1){
+                oState.is_compressed = false; // in order to maintain uncompressed support (and not just one-step uncompressed)
+                oState = oState.do_step(dr);
+                if (SEARCH.compress)
+                    oState.compress();
+            }
+        }
+        if (R_sum > this->final_eval){
+            this->final_eval = R_sum;
+            this->policy = new_policy;
+        }
+    }
+
+    this->improved_lastTau = horizon_tau - 1;
+    this->final_policy = this->policy;
+}
+
+
+/// @brief For each time-step, select epsilon-greedy decision rules. \\
+/// If cumulative rewards along the trajectory is better than current_eval, then update this->policy. \\
+/// We also follow simulated annealing method.
+void oSarsa::_update_policy(){
+    Policy new_policy(SEARCH.horizon, PROBLEM.agents_number);
+    double R_sum = 0; // sum of expected rewards along the trajectory
+    this->improved_lastTau = -1;
+    double best_eval = this->_get_Qvalue(this->oState0, this->policy.get_decisionRule(0, 0));
+    
+    auto oState = this->oState0;
+    for (int tau = 0; tau < horizon_tau; tau++){
+        auto [step, agent] = Occupancy_State::get_step_agent(tau);
+        double discount = pow(PROBLEM.discount, step);
+        
+        //-- select the decision rule
+        Decision_Rule dr = this->_select_epsilon_greedy(oState);
+        
+        //-- update R_sum, new_policy, oState
+        R_sum += discount * this->rew_shaping.get_expected_reward(oState, dr);
+        new_policy.get_decisionRule(step, agent) = dr;
+        if (tau < this->horizon_tau - 1){
+            oState.is_compressed = false; // in order to maintain uncompressed support (and not just one-step uncompressed)
+            oState = oState.do_step(dr);
+            if (SEARCH.compress)
+                oState.compress();
+        }
+
+        //-- evaluate
+        double new_eval = R_sum;
+        if (tau < horizon_tau - 1){
+            auto [next_step, next_agent] = Occupancy_State::get_step_agent(tau + 1);
+            auto & dr_next = this->policy.get_decisionRule(next_step, next_agent);
+            new_eval += discount * PROBLEM.discount * this->_get_Qvalue(oState, dr_next);
+        }
+
+        //-- improved (or "simulated annealing" criterion) ?
+        double diff_eval = new_eval - best_eval;
+        if (diff_eval > 1e-6){
+            best_eval = new_eval;
+            this->improved_lastTau = tau;
+        }
+        else if (this->_accept_decrease(-diff_eval, agent) && SEARCH.use_simulatedAnnealing){
+            this->improved_lastTau = tau;
+        }
+    }
+    //-- policy improved ?
+    if (this->improved_lastTau >= 0){
+        //-- copy the new_policy plan, i.e. actions for all <x,o> met in the new_trajectory
+        //--    but keep policy actions for <x,o> met on previous trajectories that are not met in this trajectory
+        for (int tau = 0; tau <= this->improved_lastTau; tau++){
+            auto [step, agent] = Occupancy_State::get_step_agent(tau);
+            for (auto & ih_iu: new_policy.get_decisionRule(step, agent).iHist_action_map){
+                this->policy.get_decisionRule(step, agent).set_action(ih_iu.first, ih_iu.second);
+            }
+        }
+    }
+
+    this->improved = best_eval > this->final_eval;
+    if (this->improved){
+        this->final_eval = best_eval;
+        this->final_policy = this->policy;
+    }
+}
+
+
+/// @brief Update q_t(x,o,u^,iu), backward in time, for time-steps t in [0; Tau], \\
+/// @brief for each <x,o,u^> in the reachable set, and for each individual action iu, \\
+/// @brief where u^ denotes u^{:agent-1} (sequential framework) \\
+/// @brief and where Tau is the last step for which policy was updated during current iteration.
+void oSarsa::_update_Q(){
+
+    for (int tau = this->improved_lastTau; tau >= 0; tau--){
+        auto [step, agent] = Occupancy_State::get_step_agent(tau);
+        Qvalues_Tabular & q_func = this->Qfunctions.at(tau);
+        for (Support supp: this->reachable_sets.at(tau)){ // supp = <x,o,u^>
+            for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+                supp.set_iAction(agent, iu); // supp = <x,o,u^,iu>
+                this->_update_q(supp, this->policy, tau);
+            }
+        }
+    }
+}
+
+
+/// @brief Update q(x,o,u^,iu):  \\
+/// @brief if last_agent, q(x,o,ju) = r(x,ju) + discount * sum_{x',o'} Pr(x',o'|x,ju) * q_func(x',o',iu') \\
+/// @brief else, q(x,o,u^,iu) = r(x,u^,iu) + q_func(x',o',<u^,iu>,iu')
+/// @brief with iu' from the current policy.
+/// @note r = reward shaping
+/// @param supp a concise representation of <x,o,u^,iu>
+void oSarsa::_update_q(Support supp, Policy &pi, int tau){
+    int x = supp.get_hiddenState();
+    int ju = supp.get_jAction(); // ju = u^{1:agent}
+    auto [step, agent] = Occupancy_State::get_step_agent(tau);
+    auto [next_step, next_agent] = Occupancy_State::get_step_agent(tau + 1);
+    double q_estim;
+    if (agent == PROBLEM.last_agent){
+        q_estim = this->rew_shaping.get_reward(agent, x, ju);// PROBLEM.rewards_matrix(x, ju);
+        if (step < SEARCH.horizon - 1){
+            const auto & q_func_next = this->Qfunctions.at(tau + 1);
+            for (const auto & reached: PROBLEM.reachables_from_x_u[x][ju]){
+                auto next_supp = supp.do_step(reached.y, reached.joint_obs); // <x',o'>
+                int next_iu = pi.get_iAction(next_step, next_agent, next_supp.get_iHistory(next_agent)); 
+                next_supp.set_iAction(next_agent, next_iu); // <x',o',u^1>
+                double next_q = q_func_next.get_value(next_supp);
+                q_estim += PROBLEM.discount * reached.proba * next_q;
+            }
+        }
+    }
+    else{
+        auto next_supp = supp;
+        int next_iu = pi.get_iAction(next_step, next_agent, next_supp.get_iHistory(next_agent)); 
+        next_supp.set_iAction(next_agent, next_iu); // <x,o,<u^,iu>,iu'>
+        const auto & q_func_next = this->Qfunctions.at(tau + 1);
+        q_estim = this->rew_shaping.get_reward(agent, x, ju) + q_func_next.get_value(next_supp);
+    }
+
+    //-- update q_func(x,o,u)
+    auto & q_func = this->Qfunctions.at(tau);
+
+    //-- deterministic oMDP => LEARNING RATE = 1
+    //-- q_func(x,o,u) = q_estim
+    q_func.set_value(supp, q_estim);
+    
+    // //-- with a learning rate < 1
+    // static const double lr = .1;
+    // double new_q = (1 - lr) * q_func.get_value(supp) + lr * q_estim;
+    // q_func.set_value(supp, new_q);
+}
+
+
+Decision_Rule oSarsa::_select_epsilon_greedy(Occupancy_State & oState){
+    //-- pick the selection mode
+    if (oState.get_next_agent() == 0){
+        this->greedy = this->epsilon < utils::fast_calc::rand_double(0, 1);
+        if (SEARCH.use_portfolio)
+            this->rnd_0_1 = utils::fast_calc::rand_double(0, 1);    
+    }
+    else if (utils::fast_calc::rand_range(PROBLEM.agents_number) == 0){
+        if (SEARCH.use_portfolio)
+            this->rnd_0_1 = utils::fast_calc::rand_double(0, 1);    
+    }
+
+    //-- select a decision rule (greedy or an heuristic)
+    Decision_Rule dr;
+    if (this->greedy){
+        dr = this->_select_greedy(oState);
+    }
+    else{
+        if (this->rnd_0_1 < .25)
+            dr = this->_select_blind(oState);
+        else if (this->rnd_0_1 < .5)
+            dr = this->_select_MDP(oState);
+        else
+            dr = this->_select_random(oState); 
+    }
+    this->_extend_jointDecisionRule_LPE(dr, oState);
+    return dr;
+}
+
+
+/// @brief Compute the greedy decision rule for oState s w.r.t. the Q values.
+Decision_Rule oSarsa::_select_greedy(Occupancy_State & oState){
+    Decision_Rule greedy_dr;
+    int agent = oState.get_next_agent();
+    auto const & q_func = this->Qfunctions.at(oState.get_tau());
+    //-- for each individual history ih we are looking the greedy iu w.r.t. Q
+    for (const auto & ih_supportsProba: oState.get_private_oState(agent, oState.is_compressed)){
+        double best_val = -INFINITY;
+        for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+            double val = 0;
+            for (const auto & supp_proba: ih_supportsProba.second){
+                auto supp = supp_proba.first;
+                supp.set_iAction(agent, iu);
+                val += supp_proba.second * q_func.get_value(supp);
+            }
+            if (val > best_val){
+                best_val = val;
+                greedy_dr.set_action(ih_supportsProba.first, iu);
+            }
+        }
+    }
+    return greedy_dr; 
+}
+
+
+/// @brief Compute a random decision-rule associated to an oState, \\
+/// @brief i.e. for each individual history of the next agent i, a sample of a uniform distribution on U^i.
+Decision_Rule oSarsa::_select_random(Occupancy_State & oState){
+    Decision_Rule dr;
+
+    int agent = oState.get_next_agent();
+    int actions_number = PROBLEM.actions_number_byAgent.at(agent);
+    for (const Support & ih: oState.get_iHistories(agent, oState.is_compressed)){
+        int random_iu = utils::fast_calc::fastRandRange(actions_number);
+        dr.set_action(ih, random_iu);
+    }
+
+    return dr;
+}
+
+
+/// @brief Select the greedy decision rule w.r.t. the MDP solution: \\
+/// for each individual history ih, select the greedy individual action w.r.t. the MDP.
+Decision_Rule oSarsa::_select_MDP(Occupancy_State & oState){
+    Decision_Rule dr;
+    int agent = oState.get_next_agent();
+    int step = oState.get_step();
+    //-- for each ih we select the greedy iu w.r.t. MDP
+    for (const auto & ih_supportsProba: oState.get_private_oState(agent, oState.is_compressed)){
+        double best_val = -INFINITY;
+        for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+            double val = 0;
+            for (const auto & supp_proba: ih_supportsProba.second){
+                auto supp = supp_proba.first;
+                supp.set_iAction(agent, iu);
+                val += supp_proba.second * mdp_sol.get_value(supp, agent + 1, step);
+            }
+            if (val > best_val){
+                best_val = val;
+                dr.set_action(ih_supportsProba.first, iu);
+            }
+        }
+    }
+    return dr;
+}
+
+
+/// @brief Compute the blind decision-rule,
+/// i.e. for each individual history, the  individual action is the blind action.
+Decision_Rule oSarsa::_select_blind(Occupancy_State & oState){
+    Decision_Rule dr;
+    int agent = oState.get_next_agent();
+    for (const Support & ih: oState.get_iHistories(agent, oState.is_compressed)){
+        dr.set_action(ih, this->blind_actions.at(agent));
+    }
+    return dr;
+}
+
+
+double oSarsa::_get_epsilon(int iter) const{
+    if (iter == 1)
+        return 0; // we want a greedy search after init
+    
+    //-- epsilon is linear w.r.t. time, from 1 to 0
+    return (1.0 - SEARCH.get_time() / SEARCH.timeout) *  SEARCH.epsilon_start;
+}
+
+
+/// @brief "simulated annealing" criterion (to avoid local optimum): \\
+/// acceptance rule of non-improving strategy.
+bool oSarsa::_accept_decrease(double decrease, int agent) const{
+    if (this->temperature < 1e-5)
+        return false;
+    if (decrease < -1e-6)
+        return false;
+    if (agent < PROBLEM.last_agent)
+        return false;
+    if (utils::fast_calc::fastRandRange(SEARCH.horizon) > 0)
+        return false;
+    double proba_accept = exp(-decrease / this->temperature);
+    return utils::fast_calc::rand() < proba_accept;
+}
+
+
+double oSarsa::_get_temperature(double epsilon) const{
+    return 4 * epsilon;
+}
+
+
+/// @brief Compute (exact) value: compute the oState trajectory, then value = the cumulative expective rewards. \\
+/// @brief From tau0 (the tau of oState) to horizon.
+/// @note Should not be useful (only for debug) as the Q value estimate is exact.
+double oSarsa::_get_exactValue(Occupancy_State oState, Policy & pi) const{
+    double R_sum = 0; // sum of expected rewards along the trajectory
+    double discount = PROBLEM.discount;
+    int tau = oState.get_tau();
+    while (tau < this->horizon_tau){
+        auto & dr = pi.get_decisionRule(oState.get_step(), oState.get_next_agent());
+        R_sum += discount * oState.get_expected_reward(dr);
+        if (tau < this->horizon_tau - 1){
+            oState.is_compressed = false; // in order to maintain uncompressed support (and not just one-step uncompressed)
+            oState = oState.do_step(dr);
+            if (SEARCH.compress)
+                oState.compress();
+            discount *= PROBLEM.discount;
+        }
+        tau++;
+    }
+    return R_sum;
+}
+
+
+/// @brief Compute q(s,a) = sum_{<x,o,u^>} s(<x,o,u^>) * q(<x,o,iu>), \\
+/// @brief where iu = dr(o) is the individual action and u^ denotes u^{:agent-1} (sequential framework). \\
+/// @brief Elements of oState support are supposed to contain u^{:agent-1}.
+/// @param dr: the decision rule to evaluate.
+double oSarsa::_get_Qvalue(Occupancy_State & oState, Decision_Rule & dr) const{
+    double value = 0;
+    int tau = oState.get_tau();
+    int agent = oState.get_next_agent();
+    const auto & q_func = this->Qfunctions.at(tau);
+    for (const auto & supp_proba: oState.get_supports_probas(oState.is_compressed)){
+        auto supp = supp_proba.first; // <x,o,u^>
+        int iu = dr.get_action(supp.get_iHistory(agent));
+        supp.set_iAction(agent, iu); // <x,o,u^,iu>
+        double q_supp = q_func.get_value(supp);
+        value += supp_proba.second * q_supp;
+    }
+    return value;
+}
+
+
+/// @brief Compute sets <x,o,u^> which are reachables from initial belief,
+/// for each time-step and each agent.
+void oSarsa::_set_reachables(){
+    //-- for tau = 0
+    //--    reachables: {<x,o,u^>} == {<x>, belief_init[x] > 0}
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        if (PROBLEM.belief_init[x] > 0){
+            Support supp;
+            supp.set_hiddenState(x);
+            this->reachable_sets.at(0).insert(supp);
+        }
+    }
+
+    //-- for tau > 0
+    for (int tau = 1; tau < horizon_tau; tau++){
+        auto [step, agent] = Occupancy_State::get_step_agent(tau);
+        if (agent == 0){
+            //-- reachables: union of {<x',o'>} reached from <x,o>, for each <x,o> in the set of agent 0 at step - 1 
+            for (Support supp: this->reachable_sets.at(tau - 1)){
+                int x = supp.get_hiddenState();
+                for (auto x_z: PROBLEM.reachables_from_x.at(x)){
+                    Support supp_next = supp.do_step(x_z.first, x_z.second);
+                    this->reachable_sets.at(tau).insert(supp_next);
+                }
+            }
+        }
+        else{
+            //-- reachables: {<x,o,u^,iu>, iu \in U^{agent-1}, <x,o,u^> in reachables[agent-1]}
+            for (Support supp: this->reachable_sets.at(tau - 1)){
+                for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent - 1]; iu++){
+                    supp.set_iAction(agent - 1, iu);
+                    this->reachable_sets.at(tau).insert(supp);
+                }
+            }
+        }
+    }
+
+    //-- verbose
+    if (SEARCH.verbose > utils::Verbose::medium){
+        cout << "Reachables <x,o>, i.e. <hidden state, joint history>:" << endl;
+        for (int tau = 0; tau < horizon_tau; tau++){
+            auto [step, agent] = Occupancy_State::get_step_agent(tau);
+            cout << "\t step " << step 
+                << " agent " << agent 
+                << " size " << this->reachable_sets.at(tau).size()
+                << endl;
+        }
+    }
+}
+
+/// @brief If LPE compression is active, we extend the policy to the whole uncompressed support. \\
+/// @brief Compressed policy is built on history labels. Here we copy their action, to other equivalent joint histories. \\
+/// @brief See [Optimally solving Dec-POMDPs as continuous-state MDPs: Theory and algorithms, 2014, Def. 19] for details on labels.
+void oSarsa::_extend_jointDecisionRule_LPE(Decision_Rule & dr, Occupancy_State & oState) const{
+    if (!oState.is_compressed)
+        return;
+
+    int agent = oState.get_next_agent();
+    for (const auto & supp_proba: oState.get_supports_probas(false)){
+        Support supp = supp_proba.first;
+        Support label = oState.get_label(supp);
+        Support ih = supp.get_iHistory(agent);
+        Support ih_label = label.get_iHistory(agent);
+        if (ih == ih_label)
+            continue;
+        int action = dr.get_action(ih_label);
+        dr.set_action(ih, action);
+    }
+}
+
+
+/// @brief Print some information about the algorithm computations.
+/// @param iter iteration number 
+void oSarsa::_log(int iter){
+    //-- prepare data to log
+    ostringstream Q_sizes;
+    if (iter <= 1){
+        for (int tau = 0; tau < horizon_tau; tau++){
+            auto [step, agent] = Occupancy_State::get_step_agent(tau);
+            if (agent == 0 && tau > 0)
+                Q_sizes << "|";
+            Q_sizes << this->Qfunctions.at(tau).size() << " ";
+        }            
+    }
+    double value = this->_get_exactValue(this->oState0, this->policy);
+    double eval = this->_get_Qvalue(this->oState0, this->policy.get_decisionRule(0, 0));
+    
+    //-- log
+    this->logger.write({
+                        to_string(SEARCH.get_time()), 
+                        to_string(iter),
+                        to_string(value),
+                        to_string(eval),
+                        to_string(this->final_eval),
+                        Q_sizes.str(),
+                        to_string(this->epsilon)
+                        }, SEARCH.get_time());
+}
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/oSarsa.hpp b/code/src/decPOMDP/sequential/oSarsa.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..464ff44aea28bf7ab029f1564d4bb93b2fe3b67e
--- /dev/null
+++ b/code/src/decPOMDP/sequential/oSarsa.hpp
@@ -0,0 +1,82 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/Q_representation.hpp"
+#include "value_representation/mdp_solution.hpp"
+#include "value_representation/reward_shaping.hpp"
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+class oSarsa{
+    int horizon_tau; // sequential horizon
+    Occupancy_State oState0; // initial oState (from initial belief)
+
+    //-- policy
+    Policy policy;
+    vector<Qvalues_Tabular> Qfunctions; // Qfunctions[tau]: associated to policy suffix
+    int improved_lastTau = -1;
+
+    //-- epsilon-greedy
+    double epsilon;
+    bool greedy;
+    double rnd_0_1 = 1.0; // for portfolio choice
+    MDP_Solution mdp_sol;
+    vector<int> blind_actions;
+
+    //-- simulated annealing
+    double temperature;
+    bool improved;
+    double final_eval = -INFINITY;
+    Policy final_policy;
+    
+    //-- reward shaping    
+    Reward_Shaping rew_shaping;
+
+    //-- reachables
+    vector<Support_Set> reachable_sets; // reachable_sets[tau]: sets of reachables <x,o,u^>
+
+    utils::Logger logger;
+
+public:
+    oSarsa();
+
+    void solve();
+
+protected:
+    //-- oSarsa main functions
+
+    void _init_policy();
+    void _update_policy(); // policy improvement
+    void _update_Q(); // backup operator
+    void _update_q(Support, Policy &, int tau);
+    
+
+    //-- epsilon greedy
+
+    Decision_Rule _select_epsilon_greedy(Occupancy_State &);
+    Decision_Rule _select_greedy(Occupancy_State &);
+    Decision_Rule _select_random(Occupancy_State &);
+    Decision_Rule _select_MDP(Occupancy_State &);
+    Decision_Rule _select_blind(Occupancy_State &);
+    double _get_epsilon(int iter) const;
+
+    //-- simulated annealing
+
+    bool _accept_decrease(double decrease, int agent) const;
+    double _get_temperature(double epsilon) const;
+
+    //-- utils
+
+    double _get_exactValue(Occupancy_State oState, Policy & pi) const;
+    double _get_Qvalue(Occupancy_State &, Decision_Rule &) const;
+    void _set_reachables();
+    void _extend_jointDecisionRule_LPE(Decision_Rule &, Occupancy_State &) const;
+    void _log(int iter);
+};
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/oSarsa_v2.cpp b/code/src/decPOMDP/sequential/oSarsa_v2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ab28b1a32f09d2316302fa164c73535efa667072
--- /dev/null
+++ b/code/src/decPOMDP/sequential/oSarsa_v2.cpp
@@ -0,0 +1,495 @@
+#include "oSarsa_v2.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+oSarsa_v2::oSarsa_v2():
+    horizon_tau(SEARCH.horizon * PROBLEM.agents_number),
+    oState0(PROBLEM.belief_init),
+    logger(SEARCH.log_filename, SEARCH.verbose){
+
+    //-- compute default actions (blind strategy)
+    int default_jAction;
+    tie(default_jAction, std::ignore) = Decision_Rule::blind_heuristic();
+    this->default_iActions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, default_jAction);
+
+    this->_set_partial_actions();
+}
+
+
+/// @brief main public function
+void oSarsa_v2::solve(){
+    //-- verbose
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:sequential:oSarsa:solve() ") << endl;
+    }
+
+    //-- initialize the logger
+    this->logger.write({"time", "iter", "value", "estim", "Q sizes", "epsilon"});
+
+    //-- initialize the algo
+    SEARCH.start();
+    auto Q = this->_init_Q();
+    auto [policy, trajectory] = this->_init_policy();
+    bool is_updated = true;
+    this->_update_Q(Q, policy, trajectory);
+
+    //-- debug
+    if (SEARCH.verbose >= utils::Verbose::high){
+        cout << "POLICY " << endl << policy << endl;
+        cout << "Q_VALUES " << endl;
+        for (int step = 0; step < SEARCH.horizon; step++){
+            for (int agent: PROBLEM.agents){
+                cout << "=== step " << step << " agent " << agent;
+                cout << Q.at(step).at(agent).get_repr(step, agent);
+            }
+        }
+    }
+    // return;
+
+    //-- main loop
+    this->_log(Q, policy, trajectory, 0);
+    double log_period = SEARCH.timeout / 250.0; // in seconds
+    int iter = 1;
+    while(!SEARCH.is_timeout()){
+        //-- epsilon value
+        if (iter == 1)
+            this->epsilon = 0;
+        else
+            this->epsilon = (1.0 - SEARCH.get_time() / SEARCH.timeout) *  SEARCH.epsilon_start;
+        //-- update policy
+        tie(is_updated, trajectory) = this->_update_policy(Q, policy, trajectory);
+        //-- update Q
+        if (is_updated)
+            this->_update_Q(Q, policy, trajectory);
+        //-- log
+        double time_sinceLastLog = this->logger.get_time_sinceLastWrite(SEARCH.get_time());
+        if (iter == 1 || time_sinceLastLog > log_period){
+            this->_log(Q, policy, trajectory, iter);
+        }
+        iter++;
+    }
+
+}
+
+
+Qfunctions oSarsa_v2::_init_Q(){
+    Qfunctions Q(SEARCH.horizon);//, vector<Qvalues_Tabular_v2>(PROBLEM.agents_number));
+    for (int step = 0; step < SEARCH.horizon; step++)
+        for (int agent: PROBLEM.agents)
+            Q.at(step).push_back(Qvalues_Tabular_v2(agent));
+    
+    //-- default Q values : Q_t(<x,u^,iu>)
+    //-- where iu is the individual action and u^ denotes u^{:agent-1} (sequential framework).
+    auto [worst_action, worst_reward] = Decision_Rule::worst_heuristic();
+    auto [blind_action, blind_reward] = Decision_Rule::blind_heuristic();
+
+    auto state_sets = MDP::Backward_Induction::get_reachable_states();
+
+    for (int step = 0; step < SEARCH.horizon; step++){
+        for (int x: state_sets.at(step)){
+            for (int agent: PROBLEM.agents){
+                for (int ju: this->partial_actions.at(agent)){
+                    Support supp_u; 
+                    supp_u.set_jAction(ju);
+                    double value = this->_get_worst_reward(x, supp_u, agent + 1)
+                        + max(0, SEARCH.horizon - 1 - step) * worst_reward;/////////// blind_reward;
+                    Q.at(step).at(agent).set_default_value(x, ju, value);
+                }
+            }
+        }
+    }
+
+    return Q;
+}
+
+
+/// @brief Util function (fill partial_actions).
+void oSarsa_v2::_set_partial_actions(int agent, Support supp){
+    if (agent > PROBLEM.last_agent)
+        return;
+    if (agent == 0)
+        this->partial_actions.resize(PROBLEM.agents_number, vector<int>());
+    for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+        supp.set_iAction(agent, iu);
+        int ju = supp.get_jAction();
+        this->partial_actions.at(agent).push_back(ju);
+        this->_set_partial_actions(agent + 1, supp);
+    }
+}
+
+
+/// @param supp_u A concise representation of <u^{:next_agent-1}>
+/// @param next_agent The next agent to choose its action.
+double oSarsa_v2::_get_worst_reward(int x, Support supp_u, int next_agent) const{
+    if (next_agent > PROBLEM.last_agent)
+        return PROBLEM.rewards_matrix(x, supp_u.get_jAction());
+    double value = INFINITY;
+    for (int iu = 0; iu < PROBLEM.actions_number_byAgent[next_agent]; iu++){
+        supp_u.set_iAction(next_agent, iu);
+        value = min(value, this->_get_worst_reward(x, supp_u, next_agent + 1));
+    }
+    return value;
+}
+
+
+
+/// @brief Compute the initial policy = default_action[agent] regardless the step or the history.
+/// @return The pair (policy, trajectory) with trajectory = the sequence of oStates obtained from policy. 
+pair<Policy, Trajectory> oSarsa_v2::_init_policy(){
+
+    //-- policy
+    Policy pi(SEARCH.horizon, PROBLEM.agents_number);
+    for (int step = 0; step < SEARCH.horizon; step++){
+        for (int agent: PROBLEM.agents){
+            auto & dr = pi.get_decisionRule(step, agent);
+            dr.default_action = this->default_iActions.at(agent);
+        }
+    }
+
+    //-- trajectory
+    //--    on time-steps {0, 1, ..., horizon - 2}  (we don't need the final state)
+    Occupancy_State oState = this->oState0;
+    Trajectory traj(this->horizon_tau);
+    traj.at(0) = oState;
+    for (int tau = 0; tau < this->horizon_tau - 2; tau++){
+        auto & dr = pi.get_decisionRule(oState.get_step(), oState.get_next_agent());
+        oState = oState.do_step(dr);
+        if (SEARCH.compress)
+            oState.compress();
+        traj.at(tau + 1) = oState;
+    }
+    return make_pair(pi, traj);
+
+}
+
+
+void oSarsa_v2::_update_Q(Qfunctions & Q, Policy & pi, Trajectory & traj){
+
+double eval_before = this->_get_Qvalue(Q, this->oState0, pi.get_decisionRule(0, 0));
+double value = this->_get_exactValue(traj, pi);
+
+    for (int tau = this->horizon_tau - 2; tau >= 0; tau--){
+        auto [step, agent] = Occupancy_State::get_step_agent(tau);
+        auto & oState = traj.at(tau);
+        auto & q = Q.at(step).at(agent);
+        q.clear();
+        q.set_labels(oState.get_labels());
+        for (auto supp_proba: oState.get_supports_probas(false)){//oState.is_compressed)){
+            Support supp = supp_proba.first;
+            
+            // int iu_pi = pi.get_decisionRule(step, agent).get_action(supp.get_iHistory(agent));
+            // for (int iu: {iu_pi}){//, this->default_iActions.at(agent)}){
+            //     supp.set_iAction(agent, iu);
+            //     this->_sarsa_update(Q, supp, pi, step, agent);
+            // }
+
+            // for (int iu = 0; iu < PROBLEM.actions_number_byAgent.at(agent); iu++){
+            //     supp.set_iAction(agent, iu);
+            //     this->_sarsa_update(Q, supp, pi, step, agent);
+            // }
+
+            for (int ju: this->partial_actions.at(agent)){
+                supp.set_jAction(ju);
+                this->_sarsa_update(Q, supp, pi, step, agent);
+            }
+        }
+    }
+
+double eval_after = this->_get_Qvalue(Q, this->oState0, pi.get_decisionRule(0, 0));
+cout << "eval_before " << eval_before << " eval_after " << eval_after << " value " << value << endl;
+
+}
+
+
+pair<bool, Trajectory> oSarsa_v2::_update_policy(Qfunctions & Q, Policy & pi, Trajectory & traj){
+    double current_eval = this->_get_Qvalue(Q, this->oState0, pi.get_decisionRule(0, 0));
+    double best_eval = current_eval + 1e-6;
+    
+    double R_sum = 0;
+    int improved_last_tau = -1;
+    Trajectory new_traj(this->horizon_tau);
+    Policy new_pi(SEARCH.horizon, PROBLEM.agents_number);
+    auto oState = this->oState0;
+    
+    for (int tau = 0; tau < this->horizon_tau; tau++){
+        new_traj.at(tau) = oState;
+        int step = oState.get_step();
+        int agent = oState.get_next_agent();
+        double discount = pow(PROBLEM.discount, step);
+    
+        //-- select the decision rule
+        Decision_Rule dr = this->_select_epsilon_greedy(Q, oState);
+        
+        //-- update R_sum, new_policy, oState
+        R_sum += discount * oState.get_expected_reward(dr);
+        new_pi.get_decisionRule(step, agent) = dr;
+        if (tau < this->horizon_tau - 1){
+            oState = oState.do_step(dr);
+            if (SEARCH.compress)
+                oState.compress();
+        }
+
+        //-- evaluation improved ?
+        int next_step = (agent == PROBLEM.last_agent) ? step + 1 : step;
+        int next_agent = (agent == PROBLEM.last_agent) ? 0 : agent + 1;
+        double q_next = (tau == this->horizon_tau - 1) ? 0 : this->_get_Qvalue(Q, oState, pi.get_decisionRule(next_step, next_agent));
+        double new_eval =  R_sum + discount * PROBLEM.discount * q_next;
+        if (new_eval > best_eval){
+            improved_last_tau = tau;
+            best_eval = new_eval;
+            //-- verbose
+            if (SEARCH.verbose >= utils::Verbose::medium){
+                cout << "$$$ improved: step" << step << " agent " << agent
+                    << " from " << current_eval << " to " << new_eval
+                    << " diff " << (new_eval - current_eval) 
+                    << endl;
+            }
+        }
+    }
+
+    //-- finalize pi and traj
+    bool is_updated = improved_last_tau >= 0;
+    if (is_updated){
+        for (int tau = 0; tau < this->horizon_tau; tau++){
+            auto [step, agent] = Occupancy_State::get_step_agent(tau);
+            if (tau <= improved_last_tau){
+                //-- update pi
+                this->_update_decisionRule(pi.get_decisionRule(step, agent),
+                                           new_pi.get_decisionRule(step, agent));
+            }
+            else if (tau < this->horizon_tau - 1){
+                //-- update new_traj
+                new_traj.at(tau + 1) = new_traj.at(tau).do_step(pi.get_decisionRule(step, agent));
+                if (SEARCH.compress)
+                    new_traj.at(tau + 1).compress();
+            }
+        }        
+        return make_pair(is_updated, new_traj);
+    }
+    else{
+        return make_pair(is_updated, traj);
+    }
+}
+
+
+Decision_Rule oSarsa_v2::_select_epsilon_greedy(Qfunctions & Q, Occupancy_State & oState){
+    Decision_Rule dr;
+
+    bool use_random = this->epsilon > utils::fast_calc::rand_double(0, 1);
+    if (use_random){
+        double rnd = utils::fast_calc::rand_double(0, 1);
+        if (rnd < .25)
+            dr = this->_get_default_decisionRule(oState);
+        else
+            dr = this->_get_random_decisionRule(oState);
+    }
+    else{ 
+        double val;
+        tie(dr, val) = this->_select_greedy(Q, oState);
+    }
+
+    return dr;
+}
+
+
+/// @brief Compute the greedy decision rule for oState s, \\
+/// @brief i.e. the mapping: <x,o,u^> -> greedy_iu for each <x,o,u^> in supp(s) with \\
+/// @brief greedy_iu = argmax_{iu} q(<x,o,u^>,iu)
+/// @return The pair<greedy_decision_rule, greedy_value> \\
+/// @return where greedy_value = sum_{<x,o,u^>} s(<x,o,u^>) * q(<x,o,u^>,greedy_iu)
+pair<Decision_Rule, double> oSarsa_v2::_select_greedy(Qfunctions & Q, Occupancy_State & oState){
+    Decision_Rule greedy_dr;
+    double greedy_value = 0;
+
+    int step = oState.get_step();
+    int agent = oState.get_next_agent();
+    
+    Qvalues_Tabular_v2 & q_func = Q.at(step).at(agent);
+
+    for (const auto & ih_supportsProba: oState.get_private_oState(agent, oState.is_compressed)){
+        //-- for each ih we are looking the greedy iu
+        auto ih = ih_supportsProba.first;
+        double best_val = -INFINITY;
+        int best_iu = -1;
+        for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+            double val = 0;
+            for (const auto & supp_proba: ih_supportsProba.second){
+                auto supp = supp_proba.first;
+                supp.set_iAction(agent, iu);
+                val += supp_proba.second * q_func.get_value(supp);
+            }
+            //-- greedy iu ?
+            if (val > best_val){
+                best_val = val;
+                best_iu = iu;
+            }
+        }
+        greedy_value += best_val;
+        //-- update the decision rule
+        greedy_dr.set_action(ih, best_iu);
+    }
+
+    return make_pair(greedy_dr, greedy_value); 
+}
+
+
+Decision_Rule oSarsa_v2::_get_default_decisionRule(Occupancy_State & oState){
+    Decision_Rule dr;
+
+    int agent = oState.get_next_agent();
+    // auto ihs = oState.get_iHistories(agent, oState.is_compressed);
+    // for (const Support & ih: ihs){
+    //     dr.set_action(ih, this->default_iActions.at(agent));
+    // }
+    dr.default_action = this->default_iActions.at(agent);
+
+    return dr;
+}
+
+
+/// @brief Compute a random decision-rule associated to an oState, \\
+/// @brief i.e. the mapping: ih -> random_iu, \\
+/// @brief for each individual history ih of the next agent, with random_iu sampled from a uniform distrution on U^i.
+Decision_Rule oSarsa_v2::_get_random_decisionRule(Occupancy_State & oState){
+    Decision_Rule dr;
+
+    int agent = oState.get_next_agent();
+    int actions_number = PROBLEM.actions_number_byAgent.at(agent);
+    for (const Support & ih: oState.get_iHistories(agent, oState.is_compressed)){
+        int random_iu = utils::fast_calc::fastRandRange(actions_number);
+        dr.set_action(ih, random_iu);
+    }
+
+    return dr;
+}
+
+
+/// @brief Update q(x,o,u^,iu):  \\
+/// @brief if last_agent, ju=<u^,iu> and  q(x,o,ju) = r(x,ju) + discount * sum_{x',o'} Pr(x',o'|x,ju) * q_func(x',o',iu') \\
+/// @brief else, q(x,o,u^,iu) = q_func(x',o',<u^,iu>,iu') \\
+/// @brief with iu' from the current policy. \\
+/// @param supp a concise representation of <x,o,u^,iu>
+void oSarsa_v2::_sarsa_update(Qfunctions & Q, Support supp, Policy &pi, int step, int agent){
+    int x = supp.get_hiddenState();
+    double q_estim;
+    if (agent == PROBLEM.last_agent){ // then supp = <x,o,ju>
+        int ju = supp.get_jAction();
+        q_estim = PROBLEM.rewards_matrix(x, ju);
+        if (step < SEARCH.horizon - 1){
+            int next_step = step + 1;
+            int next_agent = 0;
+            const auto & q_func_next = Q.at(next_step).at(next_agent);
+            for (const auto & reached: PROBLEM.reachables_from_x_u[x][ju]){
+                auto next_supp = supp.do_step(reached.y, reached.joint_obs); // <x',o'>
+                int next_iu = pi.get_iAction(next_step, next_agent, next_supp.get_iHistory(next_agent));
+                
+                next_supp.set_iAction(next_agent, next_iu); // <x',o',u^1>
+                double next_q = q_func_next.get_value(next_supp);
+                q_estim += PROBLEM.discount * reached.proba * next_q;
+            }
+        }
+    }
+    else{
+        int next_step = step;
+        int next_agent = agent + 1;
+        auto next_supp = supp;
+        int next_iu = pi.get_iAction(next_step, next_agent, next_supp.get_iHistory(next_agent)); 
+        next_supp.set_iAction(next_agent, next_iu); // <x,o,<u^,iu>,iu'>
+        const auto & q_func_next = Q.at(next_step).at(next_agent);
+        q_estim = PROBLEM.discount * q_func_next.get_value(next_supp);
+    }
+
+    //-- update q_func(x,o,u)
+    auto & q_func = Q.at(step).at(agent);
+
+    //-- deterministic oMDP => LEARNING RATE = 1
+    //-- q_func(x,o,u) = q_estim
+    q_func.set_value(supp, q_estim);
+    
+    // //-- with a learning rate < 1
+    // static const double lr = .1;
+    // double new_q = (1 - lr) * q_func.get_value(supp) + lr * q_estim;
+    // q_func.set_value(supp, new_q);
+}
+
+
+/// @brief Compute q(s,a) = sum_{<x,o,u^>} s(<x,o,u^>) * q(<x,o,iu>), \\
+/// @brief where iu = dr(o) is the individual action and u^ denotes u^{:agent-1} (sequential framework). \\
+/// @brief Elements of oState support are supposed to contain u^{:agent-1}.
+/// @param dr: the decision rule to evaluate.
+double oSarsa_v2::_get_Qvalue(Qfunctions & Q, Occupancy_State & oState, Decision_Rule & dr) const{
+    double value = 0;
+    int agent = oState.get_next_agent();
+    int step = oState.get_step();
+    const auto & q_func = Q.at(step).at(agent);
+    for (const auto & supp_proba: oState.get_supports_probas(oState.is_compressed)){
+        auto supp = supp_proba.first; // <x,o,u^>
+        int iu = dr.get_action(supp.get_iHistory(agent));
+        supp.set_iAction(agent, iu); // <x,o,u^,iu>
+        value += supp_proba.second * q_func.get_value(supp);
+    }
+    return value;
+}
+
+
+void oSarsa_v2::_update_decisionRule(Decision_Rule & to_update, const Decision_Rule & partial) const{
+    for (auto & ih_iu: partial.iHist_action_map){
+        to_update.set_action(ih_iu.first, ih_iu.second);
+    }
+    /*int default_action = to_update.default_action;
+    to_update = partial;
+    to_update.default_action = default_action;*/
+}
+
+
+/// @brief Compute (exact) value: the cumulative expective rewards along the trajectory.
+double oSarsa_v2::_get_exactValue(Trajectory & traj, Policy & pi) const{
+    double R_sum = 0; // sum of expected rewards
+    for (int tau = 0; tau < this->horizon_tau; tau++){
+        auto [step, agent] = Occupancy_State::get_step_agent(tau);
+        auto & dr = pi.get_decisionRule(step, agent);
+        const auto & oState = traj.at(tau);
+        R_sum += pow(PROBLEM.discount, step) * oState.get_expected_reward(dr);
+        if (tau == this->horizon_tau - 2){
+            //-- we compute traj[horizon_tau - 1] which is not computed in init_policy() and update_policy()
+            traj.at(tau + 1) = traj.at(tau).do_step(dr);
+            if (SEARCH.compress)
+                traj.at(tau + 1).compress();
+        }
+    }
+    return R_sum;
+}
+
+
+void oSarsa_v2::_log(Qfunctions & Q, Policy & policy, Trajectory & traj, int iter){
+
+    //-- prepare data to log
+    ostringstream Q_sizes;
+    // if (iter <= 1){
+        for (auto const & agents_q_func: Q){
+            for (auto const & q_func: agents_q_func){ 
+                Q_sizes << q_func.size() << " ";
+            }
+            Q_sizes << "|";
+        }
+    // }
+    double value = this->_get_exactValue(traj, policy);
+    double eval = this->_get_Qvalue(Q, this->oState0, policy.get_decisionRule(0, 0));
+    
+    //-- log
+    this->logger.write({
+                        to_string(SEARCH.get_time()), 
+                        to_string(iter),
+                        to_string(value),
+                        to_string(eval),
+                        Q_sizes.str(),
+                        to_string(this->epsilon)
+                        }, SEARCH.get_time());
+}
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/oSarsa_v2.hpp b/code/src/decPOMDP/sequential/oSarsa_v2.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..0e592adc561f3611b32c7711812eb80591822649
--- /dev/null
+++ b/code/src/decPOMDP/sequential/oSarsa_v2.hpp
@@ -0,0 +1,62 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/Q_representation.hpp"
+#include "value_representation/mdp_solution.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+using Qfunctions = vector<vector<Qvalues_Tabular_v2>>;
+
+class oSarsa_v2{    
+    double epsilon;
+    int horizon_tau;
+    Occupancy_State oState0;
+
+    vector<vector<int>> partial_actions; // for each agent: the list of available partial_u = <u^0, u^1, ..., u^agent>
+    vector<int> default_iActions; // for each agent: the default action for the current plan  
+    
+    utils::Logger logger;
+
+public:
+    oSarsa_v2();
+
+    void solve();
+
+protected:
+
+    //-- oSarsa main functions: policy improvement, Qvalues update
+
+    pair<Policy, Trajectory> _init_policy();
+    Qfunctions _init_Q();
+    pair<bool, Trajectory> _update_policy(Qfunctions &, Policy &, Trajectory &);
+    void _update_Q(Qfunctions &, Policy &, Trajectory &);
+    void _sarsa_update(Qfunctions &, Support, Policy &, int step, int agent);
+
+    //-- epsilon greedy
+
+    Decision_Rule _select_epsilon_greedy(Qfunctions &, Occupancy_State &);
+    pair<Decision_Rule, double> _select_greedy(Qfunctions &, Occupancy_State &);
+    Decision_Rule _get_random_decisionRule(Occupancy_State &);
+    Decision_Rule _get_default_decisionRule(Occupancy_State &);
+
+    //-- sub-functions
+
+    double _get_worst_reward(int x, Support supp_u, int agent) const;
+    double _get_Qvalue(Qfunctions &, Occupancy_State &, Decision_Rule &) const;
+    double _get_exactValue(Trajectory &, Policy &) const;
+    void _update_decisionRule(Decision_Rule & to_update, const Decision_Rule & partial) const;
+    void _set_partial_actions(int agent=0, Support supp=0);
+
+    //-- utils
+
+    void _log(Qfunctions &, Policy &, Trajectory &, int iter);
+};
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/occupancy_state.cpp b/code/src/decPOMDP/sequential/occupancy_state.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..321e96581502f311f00b6fc9e96369411ef39eb6
--- /dev/null
+++ b/code/src/decPOMDP/sequential/occupancy_state.cpp
@@ -0,0 +1,231 @@
+#include "occupancy_state.hpp"
+
+#include <iostream>
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+Occupancy_State::Occupancy_State(): Occupancy_State_Base(){}
+Occupancy_State::Occupancy_State(const Vector & belief_init): Occupancy_State_Base(belief_init){}
+Occupancy_State::Occupancy_State(int step, int next_agent): 
+    Occupancy_State_Base(){
+    this->step = step;
+    this->next_agent = next_agent;
+}
+
+
+/// @brief Compute the next occupancy state.
+/// @param decision_rule The agent decision rule.
+Occupancy_State Occupancy_State::do_step(Decision_Rule &decision_rule) const{
+    int next_agent = this->next_agent == PROBLEM.last_agent ? 0 : this->next_agent + 1;
+    int next_step = this->next_agent == PROBLEM.last_agent ? this->step + 1 : this->step;
+    Occupancy_State oState_next(next_step, next_agent);
+
+    if (this->next_agent != PROBLEM.last_agent){
+        oState_next.belief = this->belief; // intermediate agent: we only insert her actions in the supports
+        int agent = this->next_agent;
+        //-- update uncompressed support, i.e. supports_proba
+        for (const auto & support_proba: this->supports_proba){
+            auto support = support_proba.first;
+            //-- find action
+            auto label = this->get_label(support);
+            int action = decision_rule.get_action(label.get_iHistory(agent), agent);
+            //-- update
+            support.set_iAction(agent, action);
+            oState_next.supports_proba.emplace(support, support_proba.second);
+        }
+        //-- update compressed support, i.e. supports_proba_compact
+        for (const auto & support_proba: this->supports_proba_compact){
+            auto support = support_proba.first;
+            int action = decision_rule.get_action(support.get_iHistory(agent), agent);
+            support.set_iAction(agent, action);
+            oState_next.supports_proba_compact.emplace(support, support_proba.second);
+        }
+        //-- update labels, i.e. labels
+        for (const auto & supp_label: this->labels){
+            auto support = supp_label.first;
+            auto label = supp_label.second;
+            int action = decision_rule.get_action(label.get_iHistory(agent), agent);
+            label.set_iAction(agent, action);
+            support.set_iAction(agent, action);
+            oState_next.labels.emplace(support, label);
+        }
+    }
+    else{
+        for (auto & support_proba: this->get_supports_probas(this->is_compressed)){
+            auto support = support_proba.first;
+            double proba = support_proba.second;
+            //-- individual action
+            int action = this->get_iAction(decision_rule, support, this->next_agent);
+            support.set_iAction(this->next_agent, action);
+            //-- new supports: reachables from the (hidden_state, action_joint)
+            const auto &reachables = PROBLEM.reachables_from_x_u[support.get_hiddenState()][support.get_jAction()];
+            for (const auto & reached: reachables){
+                auto next_support = support.do_step(reached.y, reached.joint_obs);
+                oState_next._update_proba(next_support, proba * reached.proba);
+            }
+        }
+    }
+
+    return oState_next;
+}
+
+vector<Occupancy_State> Occupancy_State::do_step(vector<Decision_Rule> &decision_rules)const{
+    vector<Occupancy_State> oStates;
+    oStates.reserve(PROBLEM.agents_number);
+    const Occupancy_State * oState = this;
+    for (int agent: PROBLEM.agents){
+         oStates.push_back(oState->do_step(decision_rules.at(agent)));
+         oState = &oStates.at(agent);
+    }
+    return oStates;
+}
+
+/// @brief Compute expected one-step reward, given (next-agent) individual decision-rule.
+double Occupancy_State::get_expected_reward(Decision_Rule & decision_rule) const{        
+    if (this->next_agent != PROBLEM.last_agent)
+        return 0;
+    double reward = 0;
+    for (auto & supp_proba: this->get_supports_probas(this->is_compressed)){
+        //-- find jaction from: i) decision_rule (for this agent) ii) supp_proba (former agent) 
+        auto supp = supp_proba.first;
+        int action = this->get_iAction(decision_rule, supp, this->next_agent); 
+        supp.set_iAction(this->next_agent, action);
+        int action_joint = supp.get_jAction();
+        //-- reward
+        reward += supp_proba.second * PROBLEM.rewards_matrix(supp.get_hiddenState(), action_joint);
+    }
+    return reward;
+}
+
+
+int Occupancy_State::get_tau(int step, int agent){
+    return step * PROBLEM.agents_number + agent;
+}
+
+pair<int, int> Occupancy_State::get_step_agent(int tau){
+    return make_pair(tau / PROBLEM.agents_number, tau % PROBLEM.agents_number);
+}
+
+int Occupancy_State::get_tau() const{
+    return  Occupancy_State::get_tau(this->step, this->next_agent);
+}
+
+
+/// @brief Compute transitions probabilities for p(s,a):
+///        Pr(supp' | s, iu, ih) * s(ih), i.e. for a(iu |ih) == 1
+/// @return A map: supp' -> (map: <ih, iu> -> proba)
+unordered_map<Support, Support_Val_Map> Occupancy_State::get_transitions() const{
+    int agent = this->get_next_agent();
+
+    //-- compute transitions probabilities (utility for ratio computation):
+    //--    Pr(supp' | s, iu, ih) * s(ih), i.e. for a(iu |ih) == 1
+    unordered_map<Support, Support_Val_Map> transitions; // transitions[supp'][<ih,iu>]
+    for (const auto & supp_proba: this->get_supports_probas(this->is_compressed)){
+        Support supp = supp_proba.first;
+        double proba = supp_proba.second;
+        for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+            auto ihiu = supp.get_iHistory(agent);
+            ihiu.set_iAction(agent, iu); // <ih, iu>
+            supp.set_iAction(agent, iu); // <supp, iu>
+            if (agent == PROBLEM.last_agent){
+                const auto &reachables = PROBLEM.reachables_from_x_u[supp.get_hiddenState()][supp.get_jAction()];
+                for (const auto & reached: reachables){
+                    //-- proba = s(x,u^{:agent-1},jh) Pr()
+                    //-- reached.proba = Pr(y,z | x,ju) ???
+                    auto next_support = supp.do_step(reached.y, reached.joint_obs);
+                    auto got_next = transitions.find(next_support);
+                    if (got_next != transitions.end() && got_next->second.find(ihiu) != got_next->second.end())
+                        transitions[next_support][ihiu] += proba * reached.proba;
+                    else
+                        transitions[next_support][ihiu] = proba * reached.proba;
+                }
+            }
+            else{
+                auto next_support = supp;
+                auto got_next = transitions.find(next_support);
+                if (got_next != transitions.end() && got_next->second.find(ihiu) != got_next->second.end())
+                    transitions[next_support][ihiu] += proba;
+                else
+                    transitions[next_support][ihiu] = proba;
+            }
+        }
+    }
+    
+    return transitions;
+}
+
+
+/// @brief check whether this contains an unreachable support
+bool Occupancy_State::allReachable(const unordered_map<Support, Support_Val_Map> & transitions, bool compact) const{
+    compact = compact && this->is_compressed;
+    auto const & supps_proba = this->get_supports_probas(compact);
+    for (const auto & supp_proba: supps_proba){
+        if (transitions.find(supp_proba.first) == transitions.end())
+            return false;
+    }
+    return true;
+}
+
+
+ostream &operator<<(ostream &os, const Occupancy_State &s){
+    const auto & supports_proba = s.get_supports_probas(s.is_compressed);
+    os << "step " << s.step
+        << " next agent " << s.next_agent
+        << " compressed ?" << (s.is_compressed ? " YES": " NO") 
+        << " size " << supports_proba.size()
+        << endl;
+    for (const auto & support_proba: supports_proba){
+        os << support_proba.first.get_repr(s.step, s.next_agent) << "  proba: " <<  support_proba.second << endl;
+    }
+    return os;
+}
+
+
+string Occupancy_State::get_repr_short() const{
+    ostringstream os;
+    os << "step " << step
+        << " next agent " << next_agent
+        << " compressed ?" << (is_compressed ? " YES": " NO") 
+        << " size_supp " << size_support();
+    if (is_compressed)
+        os << " size_compact " << size_support_compressed();
+
+    int cpt1=0, cpt2=0, cpt3=0, cpt4=0, cpt5=0;
+    for (const auto & support_proba: get_supports_probas(is_compressed)){
+        double proba = support_proba.second;
+        if (proba > 1e-1) cpt1++;
+        else if (proba > 1e-2) cpt2++;
+        else if (proba > 1e-3) cpt3++;
+        else if (proba > 1e-4) cpt4++;
+        else cpt5++;
+    }
+    os << " >1e-1 " << cpt1
+        << " >1e-2 " << cpt2
+        << " >1e-3 " << cpt3
+        << " >1e-4 " << cpt4
+        << " <1e-4 " << cpt5;
+    return os.str();
+}
+
+////////////////////////////////
+// Occupancy_State_Corner:
+// An occupancy state with only one support.
+////////////////////////////////
+
+Occupancy_State_Corner::Occupancy_State_Corner(int step, int next_agent, const Support & support): 
+    Occupancy_State(step, next_agent){
+    this->_update_proba(support, 1.0);
+    if (SEARCH.compress){
+        this->supports_proba_compact = this->supports_proba;
+        this->is_compressed = true;
+    }
+}
+
+Occupancy_State_Corner::Occupancy_State_Corner(const Occupancy_State & oState, const Support & support):
+    Occupancy_State_Corner(oState.get_step(), oState.get_next_agent(), support){
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/occupancy_state.hpp b/code/src/decPOMDP/sequential/occupancy_state.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..36dd175094b8b5d212b73f912df5dae84c2ec5fa
--- /dev/null
+++ b/code/src/decPOMDP/sequential/occupancy_state.hpp
@@ -0,0 +1,48 @@
+#pragma once
+
+#include "../core/_module.hpp"
+
+#include <iostream>
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+    using jHist_BeliefActions_Map = unordered_map<Support, pair<POMDP::Belief, vector<int>>>;
+
+    class Occupancy_State: public Occupancy_State_Base{
+
+    public:
+        Occupancy_State();
+        Occupancy_State(const Vector & belief_init); // for root occupancy state
+        Occupancy_State(int step, int next_agent); // for successors (next oState)
+        virtual void test(){}
+        ~Occupancy_State(){}
+        
+        Occupancy_State do_step(Decision_Rule &)const; // one agent is playing
+        vector<Occupancy_State> do_step(vector<Decision_Rule> &)const; // all agent are playing
+        double get_expected_reward(Decision_Rule & ) const;
+        static int get_tau(int step, int agent);
+        static pair<int, int> get_step_agent(int tau);
+        int get_tau() const;
+
+        unordered_map<Support, Support_Val_Map> get_transitions() const;
+        bool allReachable(const unordered_map<Support, Support_Val_Map> & transitions, bool compact=true) const;
+
+        friend ostream &operator<<(ostream &os, const Occupancy_State &s);
+        string get_repr_short() const;
+
+    protected:
+    };
+
+    using Trajectory = vector<Occupancy_State>;
+
+    class Occupancy_State_Corner: public Occupancy_State{
+
+    public:
+        Occupancy_State_Corner(int step, int next_agent, const Support & support);
+        Occupancy_State_Corner(const Occupancy_State &, const Support &);
+    };
+
+
+}} // end namespace
diff --git a/code/src/decPOMDP/sequential/tests_unitary/_module.hpp b/code/src/decPOMDP/sequential/tests_unitary/_module.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..74a083bc4f8a1b5eb8ad7909b39a4582b462a7ee
--- /dev/null
+++ b/code/src/decPOMDP/sequential/tests_unitary/_module.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+#include "test_compression.hpp"
diff --git a/code/src/decPOMDP/sequential/tests_unitary/test_compression.cpp b/code/src/decPOMDP/sequential/tests_unitary/test_compression.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..04d251d470d3994a6b60f6719b5676a59e8c4f74
--- /dev/null
+++ b/code/src/decPOMDP/sequential/tests_unitary/test_compression.cpp
@@ -0,0 +1,80 @@
+#include "test_compression.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+namespace tests_unitary{
+
+
+/// @brief Test the validity of the compression (an exception is rised otherwise).
+/// Compare the expected rewards from compressed / one-step uncompressed versions of oState.
+/// The expected rewards are collected from a trajectory:
+/// random decision rules are sampled for the compressed oState,
+/// and are extended for the uncompressed oState through labels correspondance.
+void test_compression(){
+    if (!SEARCH.compress)
+        throw sdm_exception::Exception(sdm_exception::unitaryTest, "Compression option required.");
+    SEARCH.start(); // for seed
+
+    //-- init oStates
+    Occupancy_State oState_compressed(PROBLEM.belief_init);
+    Occupancy_State oState_uncompressed(PROBLEM.belief_init); // one-step uncompressed
+
+    for (int step = 0; step < SEARCH.horizon; step++){
+        for (int agent: PROBLEM.agents){
+            //-- decision rule
+            Decision_Rule dr_compressed = get_decisionRule_blind(oState_compressed.get_next_agent());
+            if (step == SEARCH.horizon - 1)
+                dr_compressed.default_action = 0;
+            
+            //-- extend the decision rules for one-step uncompressed
+            Decision_Rule dr_uncompressed(RuleType::REGULAR);
+            for (const auto & supp_proba: oState_uncompressed.get_supports_probas(false)){
+                Support supp_label = oState_compressed.get_label(supp_proba.first);
+                int iu = dr_compressed.get_action(supp_label.get_iHistory(agent), agent);
+                dr_uncompressed.set_action(supp_proba.first.get_iHistory(agent), iu);
+            }
+
+            //-- update compressed oState
+            double rew_compressed = oState_compressed.get_expected_reward(dr_compressed);
+            oState_compressed = oState_compressed.do_step(dr_compressed);
+            oState_compressed.compress();
+            // if (step == 4)
+                // cout << "== compressed oState " << endl << oState_compressed << endl;
+            cout << oState_compressed.get_repr_short() << endl;
+
+            //-- update one-step uncompressed oState
+            double rew_uncompressed = oState_uncompressed.get_expected_reward(dr_uncompressed); // compute BEFORE compression
+            if (step > 0 || agent > 0)
+                oState_uncompressed.compress();
+            oState_uncompressed = oState_uncompressed.do_step(dr_uncompressed);
+            // cout << "== UNcompressed oState " << endl << oState_uncompressed << endl;  
+
+            //-- UNITARY TEST: compare rewards
+            cout << "$$$$$$ rew_compr " << rew_compressed << " rew_uncompr " << rew_uncompressed << endl;
+            if (abs(rew_compressed - rew_uncompressed) > 1e-3)
+                throw sdm_exception::Exception(sdm_exception::unitaryTest, "test compression failed");
+        }
+    }
+
+}
+
+
+Decision_Rule get_decisionRule_blind(int agent){
+    //-- blind strategy
+    auto [default_jAction, val] = Decision_Rule::blind_heuristic();
+    auto default_iActions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, default_jAction);
+    Decision_Rule dr;
+    dr.default_action = default_iActions.at(agent);
+
+    return dr;
+}    
+
+Decision_Rule get_decisionRule_random(){
+    //-- random decision rules
+    Decision_Rule dr(RuleType::RANDOM);
+    return dr;
+}
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/tests_unitary/test_compression.hpp b/code/src/decPOMDP/sequential/tests_unitary/test_compression.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..3bcc8a11916d5947964812246bfd3bb6051a27e1
--- /dev/null
+++ b/code/src/decPOMDP/sequential/tests_unitary/test_compression.hpp
@@ -0,0 +1,12 @@
+#include "../../core/_module.hpp"
+#include "../occupancy_state.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+namespace tests_unitary{
+    
+    void test_compression();
+    Decision_Rule get_decisionRule_random();
+    Decision_Rule get_decisionRule_blind(int agent);
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/Q_representation.cpp b/code/src/decPOMDP/sequential/value_representation/Q_representation.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..98ff5b7308635a1802c654dde939e5fdd4d70ae5
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/Q_representation.cpp
@@ -0,0 +1,154 @@
+#include "Q_representation.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+Qvalues_Tabular::Qvalues_Tabular(){}
+
+
+/// @brief The size of the container, i.e. the number of Qvalues stored in the mapping.
+size_t Qvalues_Tabular::size() const{
+    return this->container.size();
+}
+
+
+/// @brief Look for the q value associated to a tuple (x,o,u^,iu). \\
+/// @brief where iu is the individual action and u^ denotes u^{:agent-1} (sequential framework). \\
+/// @warning If this value is not found, raise an error.
+/// @param supp a concise representation of <x,o,u^,iu>.
+double Qvalues_Tabular::get_value(const Support & supp) const{
+    const auto got = this->container.find(supp);
+    // if (got == this->container.end())
+    //     return 0;
+    return got->second;
+}
+
+
+/// @param supp = concise representation of <x,o,u^,iu>.
+void Qvalues_Tabular::set_value(const Support & supp, double val){
+    this->container[supp] = val;
+}
+
+
+ostream &operator<<(ostream &os, const Qvalues_Tabular & q_func){
+    for (auto & supp_val: q_func.container){
+        os  << supp_val.first
+            << " val: " <<  supp_val.second << endl;
+    }
+    return os;
+}
+
+string Qvalues_Tabular::get_repr(int step, int agent) const{
+    ostringstream os;
+    for (auto & supp_val: this->container){
+        os  << supp_val.first.get_repr(step, agent + 1) 
+            << " val: " <<  supp_val.second << endl;
+    }
+    return os.str();
+}
+
+
+///////////////////////////////////////
+// v2
+///////////////////////////////////////
+Qvalues_Tabular_v2::Qvalues_Tabular_v2(int agent): agent(agent){}
+
+
+/// @brief The size of the container, i.e. the number of Qvalues stored in the mapping.
+size_t Qvalues_Tabular_v2::size() const{
+    return this->container.size();
+}
+
+
+/// @brief Look for the q value associated to a tuple (x,o,u^,iu). \\
+/// @brief where iu is the individual action and u^ denotes u^{:agent-1} (sequential framework). \\
+/// @brief If this value is not found, return a default value.
+/// @param supp a concise representation of <x,o,u^,iu>.
+double Qvalues_Tabular_v2::get_value(const Support & supp) const{
+    Support label = this->get_label(supp);
+    const auto got = this->container.find(label);
+    if (got != this->container.end())
+        return got->second;
+    return this->get_default_value(label);
+}
+
+
+double Qvalues_Tabular_v2::get_default_value(const Support & supp) const{
+    return this->get_default_value(supp.get_hiddenState(), supp.get_jAction());
+}
+
+
+double Qvalues_Tabular_v2::get_default_value(int x, int ju) const{
+    Support xu(x, 0, ju);
+    return this->default_values.at(xu);
+}
+
+
+/// @brief Clear the mapping: <x,o,u> -> value  \\
+/// @brief filled with set_value() \\
+/// @brief AND the pointer on the corresponding oState \\
+/// @brief BUT NOT the default values filled with set_default_value()
+void Qvalues_Tabular_v2::clear(){
+    this->container.clear();
+    this->labels.clear();
+}
+
+
+void Qvalues_Tabular_v2::set_labels(map<Support, Support> labels){
+    this->labels = labels;
+}
+
+
+Support Qvalues_Tabular_v2::get_label(Support supp) const{
+    int iu = supp.get_iAction(this->agent);
+    Support supp_ = supp; supp_.set_iAction(this->agent, 0);
+
+    auto got = this->labels.find(supp_);
+    if (got == this->labels.end())
+        return supp;
+    Support label = got->second;
+    label.set_iAction(this->agent, iu);
+    return label;
+}
+
+
+void Qvalues_Tabular_v2::set_value(const Support & supp, double val){
+    this->container[supp] = val;
+}
+
+
+void Qvalues_Tabular_v2::set_default_value(int x, int ju, double val){
+    Support xu(x, 0, ju);
+    this->default_values[xu] = val;
+}
+
+
+ostream &operator<<(ostream &os, const Qvalues_Tabular_v2 & q_func){
+    for (auto & supp_val: q_func.container){
+        os << supp_val.first << "  val: " <<  supp_val.second << endl;
+    }
+    return os;
+}
+
+string Qvalues_Tabular_v2::get_repr(int step, int agent) const{
+    ostringstream os;
+    os << " container_size " << this->container.size() << " default_size " << this->default_values.size() << endl;
+    for (auto & supp_val: this->container){
+        os << supp_val.first.get_repr(step, agent + 1)
+            << "  val: " << supp_val.second
+            << endl;
+    }
+    for (auto & supp_val: this->default_values){
+        os << supp_val.first.get_repr(0, agent + 1) // don't print history (default_values depend on x and u)
+            << "  val: " << supp_val.second
+            << " (default value)"
+            << endl;
+    }
+    return os.str();
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/Q_representation.hpp b/code/src/decPOMDP/sequential/value_representation/Q_representation.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..2fe0f7a21fbc16ebe6776167d98c4672a6c3ec96
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/Q_representation.hpp
@@ -0,0 +1,57 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+#include "../occupancy_state.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+    class Qvalues_Tabular{
+        Support_Val_Map container; // map: support -> value
+        
+        //-- for default values
+        int step;
+        int agent;
+
+    public:
+        Qvalues_Tabular();
+
+        double get_value(const Support &) const;
+        void set_value(const Support &, double val);
+        size_t size() const;
+        
+        friend ostream &operator<<(ostream &os, const Qvalues_Tabular & q_func);
+        string get_repr(int step, int agent) const;
+    };
+
+
+    class Qvalues_Tabular_v2{
+        Support_Val_Map container; // map: <x,o,u> -> value
+        Support_Val_Map default_values; // map: <x,u> -> value
+        map<Support, Support> labels;
+        int agent;
+        
+    public:
+        Qvalues_Tabular_v2(int agent);
+        
+        double get_value(const Support &) const;
+        double get_default_value(const Support &) const;
+        double get_default_value(int x, int ju) const;
+        void set_value(const Support &, double val);
+        void set_default_value(int x, int ju, double val);
+        void set_labels(map<Support, Support> );
+        Support get_label(Support) const;
+        void clear();
+        size_t size() const;
+
+
+        string get_repr(int step, int agent) const;
+        friend ostream &operator<<(ostream &os, const Qvalues_Tabular_v2 & q_func);
+    };
+
+
+
+}} // end namespace
diff --git a/code/src/decPOMDP/sequential/value_representation/convex_hull.cpp b/code/src/decPOMDP/sequential/value_representation/convex_hull.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f59a565341d8d16f209df8d9111a8fd466a0e3fb
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/convex_hull.cpp
@@ -0,0 +1,229 @@
+#include "convex_hull.hpp"
+#include "milp.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+////////////////////////////////
+// ConvexHull_Point
+////////////////////////////////
+
+ConvexHull_Point::ConvexHull_Point(Occupancy_State & oState, double value): id(ID()), oState(oState), value(value){}
+
+bool ConvexHull_Point::operator==(const ConvexHull_Point & other) const{
+    return this->id == other.id;
+}
+bool ConvexHull_Point::operator!=(const ConvexHull_Point & other) const{
+    return this->id != other.id;
+}
+
+ostream &operator<<(ostream &os, const ConvexHull_Point &point){
+    os << point.oState << " : " << point.value;
+    return os;
+}
+
+////////////////////////////////
+// ConvexHull_Bound
+////////////////////////////////
+
+ConvexHull_Bound::ConvexHull_Bound() {}
+
+
+int ConvexHull_Bound::size() const{
+    return this->points.size();
+}
+
+
+/// @brief 1) Build the LP problem: first complete the ConvexHull_Bound with corner points.
+/// 2) Solve the LP problem and return the solution value.
+double ConvexHull_Bound::_get_value(Occupancy_State &oState, MDP_Solution & mdp_sol, bool export_lp) {
+
+    Cplex_ConvexHull_Eval lp(oState, this->points, mdp_sol);
+    double sol_value = lp.solve();
+
+    if (export_lp){
+        lp.cplex.exportModel("cplex_convexHull_eval.lp");
+    }
+
+    return sol_value;
+}
+
+
+/// @brief Add a new point ConvexHull_Point to the bag.
+void ConvexHull_Bound::update(Occupancy_State & oState, double value) {
+    ConvexHull_Point new_point = ConvexHull_Point(oState, value);
+    this->points.push_back(new_point);
+
+    ///@todo pruning
+}
+
+////////////////////////////////
+// ConvexHull_Bounds:
+// a collection of bounds (one for each time-step)
+////////////////////////////////
+
+ConvexHull_Bounds::ConvexHull_Bounds(){
+    if (!this->mdp_sol.solved)
+        this->mdp_sol.solve();
+}
+ConvexHull_Bounds::ConvexHull_Bounds(int horizon){
+    if (!this->mdp_sol.solved)
+        this->mdp_sol.solve();
+    this->bounds = vector<ConvexHull_Bound>(horizon + 1);
+}
+
+
+double ConvexHull_Bounds::get_relax_value(Occupancy_State & oState){
+    return this->mdp_sol.get_value(oState);
+}
+
+
+const vector<ConvexHull_Bound> & ConvexHull_Bounds::get_bounds() const{
+    return this->bounds;
+}
+
+
+double ConvexHull_Bounds::get_value(Occupancy_State & oState, bool export_lp){
+    int tau = oState.get_tau();
+    return this->bounds.at(tau)._get_value(oState, this->mdp_sol, export_lp);
+}
+
+
+void ConvexHull_Bounds::update(Occupancy_State & oState, double value){
+    int tau = oState.get_tau();
+    this->bounds.at(tau).update(oState, value);
+}
+
+
+/// @brief Compute Qvalue(oState, drs), from Bellman evaluation:
+/// 1) Compute the successor oState_next.
+/// 2) Compute value = R(oState, drs) + \gamma V(oState_next).
+/// Main use: greedy selection with enumeration (i.e. evaluate each decision rules).
+pair<Occupancy_State, double> ConvexHull_Bounds::_eval_decisionRule(Occupancy_State & oState, Decision_Rule & decision_rule, bool export_lp){
+    
+    Occupancy_State oState_next = oState.do_step(decision_rule);
+    if (SEARCH.compress)
+        oState_next.compress();
+    double reward = oState.get_expected_reward(decision_rule);
+    double V_next = this->get_value(oState_next, export_lp);
+    double Qvalue = reward + PROBLEM.discount * V_next;
+    return make_pair(oState_next, Qvalue);
+}
+
+
+/// @brief greedy search
+/// @return the pair: (the successor of oState applying the greedy decision rules, the upper bound value)
+pair<Occupancy_State, double> ConvexHull_Bounds::select_greedy(Occupancy_State & oState){
+    Occupancy_State oState_next;
+    double upper_value;
+double test;
+ostringstream msg;
+    switch (SEARCH.solver_drs)
+    {
+    case enumeration:
+        tie(oState_next, upper_value) = this->_select_greedy_enum(oState);
+        break;
+    case milp:
+        tie(oState_next, test) = this->_select_greedy_milp(oState);
+        tie(oState_next, upper_value) = this->_select_greedy_enum(oState);
+
+        msg << "=====" 
+                << " agent " << oState.get_next_agent()
+                << " step " << oState.get_step()
+                << " points " << this->bounds.at(oState.get_tau() + 1).points.size()
+                << " milp " << test 
+                << " enum " << upper_value << endl;
+        if(abs(test - upper_value) < 1e-3)
+            utils::_print_color(utils::Colors::green, msg.str());
+        else
+            utils::_print_color(utils::Colors::red, msg.str());
+        // assert(abs(test - upper_value) < 1e-3);
+        break;
+    default:
+        throw sdm_exception::Exception(sdm_exception::bad_joke, "ConvexHull_Bounds::select_greedy() unknown decision rules solver");
+        break;
+    }
+    
+    return make_pair(oState_next, upper_value);
+}
+
+pair<Occupancy_State, double> ConvexHull_Bounds::_select_greedy_milp(Occupancy_State & oState){
+    /// @todo compute oState_next
+    Occupancy_State oState_next;
+
+    const auto & next_points = this->bounds.at(oState.get_tau() + 1).points;
+    Cplex_ConvexHull_Select lp(oState, next_points, this->mdp_sol);
+    double sol_value = lp.solve();
+
+#ifdef DEBUG
+    //-- write LP selection problem in a file
+    lp.cplex.exportModel("cplex_convexHull_select.lp");
+#endif
+
+    return make_pair(oState_next, sol_value);
+}
+
+
+/// @brief greedy search: decision_rules that maximize Q(oState, decision_rules)
+/// @return the pair: (the successor of oState applying the greedy decision rules, the upper bound value)
+pair<Occupancy_State, double> ConvexHull_Bounds::_select_greedy_enum(Occupancy_State & oState){
+    double greedy_value = -INFINITY;// init_value;
+    Occupancy_State greedy_oState_next;
+
+    int agent = oState.get_next_agent();
+
+    //-- compute decision rules
+    //--    We only use an agent decision rules,
+    //--    in contrast to the simultaneous case where the cartesian product of individual decision rules is enumerated.
+    vector<Decision_Rule> drs = VARIATIONS_GENERATOR.get_decision_rules(oState.get_iHistories(agent, oState.is_compressed),
+                                                                        PROBLEM.actions_number_byAgent[agent]);
+
+    //-- enumerate decision rules
+#ifdef DEBUG
+    Decision_Rule greedy_dr;
+#endif
+    for (Decision_Rule & decision_rule: drs){
+        //-- timeout ?
+        if (SEARCH.is_timeout())
+            throw sdm_exception::Exception(sdm_exception::timeout, "ConvexHull_Bounds::_select_greedy_enum()");
+        auto[oState_next, val_dr] = this->_eval_decisionRule(oState, decision_rule);
+        //-- greedy ?
+        if (val_dr > greedy_value){
+            greedy_value = val_dr;
+            greedy_oState_next = oState_next;
+#ifdef DEBUG
+    greedy_dr = decision_rule;
+#endif
+        }
+    }
+    //-- compress
+    if (SEARCH.compress && !greedy_oState_next.is_compressed)
+        greedy_oState_next.compress();
+
+#ifdef DEBUG
+    //-- Re-evaluate best decision rule,
+    //-- in order to EXPORT THE CPLEX MODEL 
+    this->_eval_decisionRule(oState, greedy_dr, true);
+#endif
+
+    return make_pair(greedy_oState_next, greedy_value);
+}
+
+
+void ConvexHull_Bounds::clear(int tau){
+    this->bounds.at(tau).points.clear();
+}
+
+
+ostream &operator<<(ostream &os, const ConvexHull_Bounds &s){
+    cout << " *** ConvexHull_Bounds size :";
+    for (const auto & l: s.bounds){
+        os << l.size() << " ";
+    }
+    return os;
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/convex_hull.hpp b/code/src/decPOMDP/sequential/value_representation/convex_hull.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..ff4bde07e7164824c6e66d0517b7800abdae4354
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/convex_hull.hpp
@@ -0,0 +1,83 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+#include "../occupancy_state.hpp"
+#include "mdp_solution.hpp"
+
+#include <unordered_map>
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+struct ConvexHull_Point{
+    int id;
+    Occupancy_State oState;
+    double value;
+    
+    ConvexHull_Point(Occupancy_State &, double value);
+
+    bool operator==(const ConvexHull_Point & other) const;
+    bool operator!=(const ConvexHull_Point & other) const;
+    
+    friend ostream &operator<<(ostream &os, const ConvexHull_Point &point);
+
+private:
+    static int ID (){
+       static int ID = 0;
+       return ID ++;
+    }
+
+};
+
+////////////////////////////////
+// ConvexHull_Bound:
+////////////////////////////////
+class ConvexHull_Bounds;
+
+class ConvexHull_Bound{
+
+    vector<ConvexHull_Point> points;
+
+public:
+    ConvexHull_Bound();
+    
+    int size() const;
+
+    void update(Occupancy_State &, double value);
+
+    friend ConvexHull_Bounds;
+
+protected:
+    double _get_value(Occupancy_State &, MDP_Solution & mdp_sol, bool export_lp=false);
+};
+
+////////////////////////////////
+// ConvexHull_Bounds:
+////////////////////////////////
+
+class ConvexHull_Bounds{
+    vector<ConvexHull_Bound> bounds; // a bound by time-step
+    MDP_Solution mdp_sol;
+
+public:
+    ConvexHull_Bounds();
+    ConvexHull_Bounds(int horizon);
+
+    double get_value(Occupancy_State &, bool export_lp=false);
+    void update(Occupancy_State &, double value);
+    void clear(int tau);
+    const vector<ConvexHull_Bound> & get_bounds() const;
+    pair<Occupancy_State, double> select_greedy(Occupancy_State &);
+
+    double get_relax_value(Occupancy_State &);
+protected:
+    pair<Occupancy_State, double> _eval_decisionRule(Occupancy_State &, Decision_Rule &, bool export_lp=false);
+    pair<Occupancy_State, double> _select_greedy_enum(Occupancy_State &);
+    pair<Occupancy_State, double> _select_greedy_milp(Occupancy_State &);
+    friend ostream &operator<<(ostream &os, const ConvexHull_Bounds &s);
+};
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/max_plane.cpp b/code/src/decPOMDP/sequential/value_representation/max_plane.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..6475036b9523c625504e756f065b71f8ed1554e3
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/max_plane.cpp
@@ -0,0 +1,331 @@
+#include "max_plane.hpp"
+
+//-- include cplex
+#ifndef CPLEX_NOT_FOUND
+    #include <ilcplex/ilocplex.h>
+    ILOSTLBEGIN
+#endif
+//-- include toulbar
+#ifdef TB2
+    #include "toulbar2lib.hpp"
+#endif
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+///////////////////////////
+// Hyperplane
+//////////////////////////
+
+Hyperplane::Hyperplane(): id(ID()){}
+
+size_t Hyperplane::size() const{
+    return this->container.size();
+}
+
+double Hyperplane::get_value(Occupancy_State_Base * oState, double default_value) const{
+    double val = 0;
+    for (const auto & support_proba: oState->get_supports_probas(oState->is_compressed)){
+        auto support = support_proba.first;
+        double proba = support_proba.second;        
+        val += proba * this->get_value(support, default_value); // @todo use label if not found ?
+    }
+    return val;
+}
+
+/// @brief if the support does not exist, return default_val
+double Hyperplane::get_value(const Support & support , double default_val) const{
+    const auto got = this->container.find(support);
+    return got == this->container.end() ? default_val : got->second;
+}
+
+/// @brief /!\ if the support does not exist, an error will occur
+double Hyperplane::get_value(const Support & support) const{
+    return this->container.at(support);
+}
+
+void Hyperplane::set_value(const Support & support, double val){
+    this->container[support] = val;
+}
+
+///@brief Dominated if other values are greater for every dimension.
+bool Hyperplane::is_dominated(const Hyperplane& other, double default_val) const{
+    if (this->id == other.id)
+        return false;
+    for (const auto & support_value: this->container){
+        if (this->get_value(support_value.first) > other.get_value(support_value.first, default_val))
+            return false;
+    }
+    return true;
+}
+
+bool Hyperplane::is_dominated(const vector<Hyperplane> & others, double default_val) const{
+    for(const Hyperplane & other : others) {
+        if(this->is_dominated(other, default_val))
+            return true;
+    }
+    return false;
+}
+
+///////////////////////////
+// Hyperplane_LowerBound
+//////////////////////////
+
+Hyperplane_LowerBound::Hyperplane_LowerBound(){}
+
+Hyperplane_LowerBound::Hyperplane_LowerBound(
+    const Hyperplane & hyperplane, double default_val, double oState_minVal, Hyperplane_LowerBound *next_bound):
+    hyperplanes({hyperplane}), default_val(default_val), oState_minVal(oState_minVal), next_bound(next_bound){}
+
+int Hyperplane_LowerBound::size() const{
+	return this->hyperplanes.size();
+}
+
+double Hyperplane_LowerBound::get_value(Occupancy_State_Base * point) const{
+    double value = -INFINITY;
+    for(const Hyperplane & hyperplane : this->hyperplanes) {
+        value = max(value, hyperplane.get_value(point, this->default_val));
+    }
+    return max(this->oState_minVal, value);
+}
+
+double Hyperplane_LowerBound::get_value(Support support) const{
+    double value = -INFINITY;
+    for(const Hyperplane & hyperplane : this->hyperplanes) {
+        value = max(value, hyperplane.get_value(support, this->default_val));
+    }
+    return value;
+}
+
+
+void Hyperplane_LowerBound::_add_hyperplane(const Hyperplane & hyperplane){
+    if(hyperplane.is_dominated(this->hyperplanes, this->default_val))
+        return;
+
+    this->hyperplanes.push_back(hyperplane);
+    this->newHyperplanes.push_back(hyperplane);
+    if (this->hyperplanes.size() > PRUNE_THRESH * size_last_pruning) {
+        this->_prune();
+    }
+}
+
+
+/// @brief 1) Erase each hyperplane of hyperplanes that is dominated by one hyperplane of newHyperplanes.
+/// @brief 2) Clear newHyperplanes.
+void Hyperplane_LowerBound::_prune() {
+
+    if(this->newHyperplanes.size() <= 1) {
+        return;
+    }
+
+    vector<Hyperplane> tempSet;
+    for(const Hyperplane & hyperplane : this->hyperplanes) {
+        if (!hyperplane.is_dominated(this->newHyperplanes, this->default_val)) {
+            tempSet.push_back(hyperplane);
+        }
+    }
+    this->hyperplanes = tempSet;
+    this->newHyperplanes.clear();
+    size_last_pruning = this->hyperplanes.size();
+}
+
+
+/// @brief add an hyperplane for each oState
+double Hyperplane_LowerBound::update(vector<Occupancy_State> & oStates, int agent){
+    this->_set_betas(oStates, agent);
+
+    double upper_value = -INFINITY; // for improvement monitoring
+
+    //-- greedy selection for each oState
+    for (auto & oState: oStates){
+        double init_value = this->get_value(& oState);
+
+        //-- select decision rule
+        double best_val = -INFINITY;// init_value;
+        Beta_Map best_beta;
+        Decision_Rule best_dr;
+        for (const Beta_Map & beta_k : this->betas){
+            double val_k = 0;
+            Decision_Rule dr_k;
+            for (Support ih: oState.get_iHistories(agent, oState.is_compressed)){
+                double val_ih = -INFINITY;
+                for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+                    double val_iu = 0;
+                    for (const auto supp_proba: oState.get_supports_probas(oState.is_compressed)){
+                        Support supp = supp_proba.first;
+                        if (ih != supp.get_iHistory(agent))
+                            continue;
+                        supp.set_iAction(agent, iu);
+                        val_iu += supp_proba.second * beta_k.at(supp);
+                    }
+                    if (val_iu > val_ih){
+                        val_ih = val_iu;
+                        dr_k.set_action(ih, iu);
+                    }
+                }
+                val_k += val_ih;
+            }
+            //-- best ?
+            if (val_k > best_val){
+                best_val = val_k;
+                best_beta = beta_k;
+                best_dr = dr_k;
+            }
+        }
+
+        //-- new hyperplane
+        if (best_val > init_value){
+            this->_build_hyperplane(oState, best_dr, best_beta);
+        }
+        upper_value = max(upper_value, best_val);
+    }
+
+    return upper_value;
+}
+
+
+/// @brief Evaluate for each beta, keep the best.
+/// @return A pair (the best evaluation, the corresponding beta)
+/// @warning: assume that   this->_set_betas(oState)   has been called before
+pair<double, Beta_Map> Hyperplane_LowerBound::_eval_decisionRule(Occupancy_State & oState, Decision_Rule & decision_rule){
+    int agent = oState.get_next_agent();
+
+    double best_val = -INFINITY;
+    Beta_Map best_beta;
+    for (const Beta_Map & beta_k : this->betas){
+        double val_k = 0;
+        for (const auto supp_proba: oState.get_supports_probas(oState.is_compressed)){
+            Support supp = supp_proba.first;
+            int iu = decision_rule.get_action(supp.get_iHistory(agent));
+            supp.set_iAction(agent, iu);
+            val_k += supp_proba.second * beta_k.at(supp);
+        }
+        //-- best ?
+        if (val_k > best_val){
+            best_val = val_k;
+            best_beta = beta_k;
+        }
+    }
+    return make_pair(best_val, best_beta);
+}
+
+
+void Hyperplane_LowerBound::_build_hyperplane(Occupancy_State & oState, Decision_Rule & decision_rule, const Beta_Map & best_beta){
+    int agent = oState.get_next_agent();
+
+    Hyperplane new_alpha;
+    for (const auto & supp_proba: oState.get_supports_probas(false)){ // does not use compression (to fill more hyperplane supports)
+        Support supp_child = oState.get_label(supp_proba.first); // use the label: the decision rule is computed from the compressed supports
+        int iu = decision_rule.get_action(supp_child.get_iHistory(agent));
+        supp_child.set_iAction(agent, iu);
+        new_alpha.set_value(supp_proba.first, best_beta.at(supp_child)); // set supp value = label value (they are equivalent)
+    }
+    this->_add_hyperplane(new_alpha);
+}
+
+
+void Hyperplane_LowerBound::_set_betas(vector<Occupancy_State> & oStates, int next_agent){
+    //-- fill the set of oStates support
+    Support_Set support_set;
+    for (const auto & oState: oStates){
+        for (const auto& support_proba: oState.get_supports_probas(oState.is_compressed)){ // @todo test without compression
+            support_set.emplace(support_proba.first);
+        }
+    }
+    //-- compute betas
+    this->_set_betas(support_set, next_agent);
+}
+
+void Hyperplane_LowerBound::_set_betas(Occupancy_State_Base * oState, int next_agent){
+    //-- fill the set of oStates support
+    Support_Set support_set;
+    for (const auto& support_proba: oState->get_supports_probas(oState->is_compressed)){
+        support_set.emplace(support_proba.first);
+    }
+    //-- compute betas
+    this->_set_betas(support_set, next_agent);
+}
+
+/// @brief Compute a beta for each next-time step hyperplane
+void Hyperplane_LowerBound::_set_betas(Support_Set & support_set, int next_agent){
+    this->betas.clear();
+    this->betas.reserve(this->next_bound->size());
+    double default_val = this->next_bound->default_val;
+
+    for (const Hyperplane & alpha: this->next_bound->hyperplanes){
+        Beta_Map beta_map;
+        for (Support support: support_set){
+            int x = support.get_hiddenState();
+            for (int iu = 0; iu < PROBLEM.actions_number_byAgent.at(next_agent); iu++){
+                double q_o_u;
+                support.set_iAction(next_agent, iu);
+                if (next_agent == PROBLEM.last_agent){ // last agent
+                    int ju = support.get_jAction();
+                    q_o_u = PROBLEM.rewards_matrix(x, ju);
+                    for (const auto & reached: PROBLEM.reachables_from_x_u[x][ju]){
+                        auto next_support = support.do_step(reached.y, reached.joint_obs);
+                        q_o_u += PROBLEM.discount * reached.proba * alpha.get_value(next_support, default_val);
+                    }
+                }
+                else{ // other agents
+                    q_o_u = 0; // immediate reward
+                    q_o_u += PROBLEM.discount * alpha.get_value(support, default_val);
+                }
+                beta_map[support] = q_o_u;
+            }
+        }
+        this->betas.push_back(beta_map);
+    }
+}
+
+///////////////////////////
+// Hyperplane_LowerBounds
+///@brief a collection of bounds (one for each time-step)
+//////////////////////////
+Hyperplane_LowerBounds::Hyperplane_LowerBounds(){}
+
+Hyperplane_LowerBounds::Hyperplane_LowerBounds(int horizon_tau){
+    this->lower_bounds.resize(horizon_tau + 1);
+
+    double blind_reward;
+    tie(std::ignore, blind_reward) = Decision_Rule::blind_heuristic();
+    double worst_reward;
+    tie(std::ignore, worst_reward) = Decision_Rule::worst_heuristic();
+
+    //-- make bounds:
+    //--   pessimist values for each time-step
+    //--   for a given time-step, same value for each state
+    double valueToGo_worst = 0;
+    double valueToGo_blind_first = 0;
+    double valueToGo_blind_others = 0;
+if (SEARCH.verbose >= utils::Verbose::medium)
+cout << "=== Hyperplane_LowerBounds init" << endl;
+    for(int step = SEARCH.horizon; step >= 0; step--){
+        for (int agent: PROBLEM.agents){
+            int tau = Occupancy_State::get_tau(step, agent);
+            if (tau <= horizon_tau){
+                double valueToGo_blind = agent == 0 ? valueToGo_blind_first : valueToGo_blind_others;
+                auto bound_next = tau < horizon_tau ? & this->lower_bounds.at(tau + 1): nullptr;
+                this->lower_bounds.at(tau) = Hyperplane_LowerBound(Hyperplane(), valueToGo_worst, valueToGo_blind, bound_next);
+if (SEARCH.verbose >= utils::Verbose::medium)
+cout << "tau " << tau << " agent " << agent << " worst, blind " << valueToGo_worst << ", " << valueToGo_blind << endl;
+            }
+        }
+        valueToGo_worst = worst_reward + PROBLEM.discount * valueToGo_worst;
+        valueToGo_blind_first = blind_reward + PROBLEM.discount * valueToGo_blind_first;
+        valueToGo_blind_others = worst_reward + PROBLEM.discount * valueToGo_blind_first;
+    }
+}
+
+Hyperplane_LowerBound & Hyperplane_LowerBounds::at(int tau){
+    return this->lower_bounds.at(tau);
+}
+
+double Hyperplane_LowerBounds::get_value(Occupancy_State & oState) const{
+    return this->lower_bounds.at(oState.get_tau()).get_value(& oState);
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/max_plane.hpp b/code/src/decPOMDP/sequential/value_representation/max_plane.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..68b1476acb779209787b6ffd20db0af727991f0c
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/max_plane.hpp
@@ -0,0 +1,116 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+#include "../occupancy_state.hpp"
+
+#include <unordered_map>
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+struct Hyperplane{
+    Support_Val_Map container; // map: support -> value
+
+    Hyperplane();
+
+    bool is_dominated(const Hyperplane &, double default_val) const;
+    bool is_dominated(const vector<Hyperplane> & , double default_val) const;
+    double get_value(Occupancy_State_Base *, double default_value) const;
+    double get_value(const Support &, double default_val) const;
+    double get_value(const Support & support) const;
+    void set_value(const Support &, double val);
+    size_t size() const;
+
+    //-- print
+    friend ostream &operator<<(ostream &os, const Hyperplane &h){
+        for (auto & support_val: h.container){
+            os << support_val.first << "  val: " <<  support_val.second << endl;
+        }
+        return os;
+    }
+
+private:
+    static int ID (){
+       static int ID = 0;
+       return ID ++;
+    }
+    int id;
+};
+
+///////////////////////////
+// Hyperplane_LowerBound
+//////////////////////////
+
+using Beta_Map = Support_Val_Map; // @todo: use the Hyperplane class
+
+class Hyperplane_LowerBound{
+    static constexpr double PRUNE_THRESH = 1.25; // prune when hyperplanes.size() > PRUNE_THRESH * size_last_pruning
+
+    vector<Hyperplane> hyperplanes;
+    vector<Hyperplane> newHyperplanes;
+    int size_last_pruning = 0; // The number of hyperplanes in the set when the last pruning was made
+    double default_val; // support value when a support is not in the alpha map.
+    double oState_minVal;
+    Hyperplane_LowerBound *next_bound; // next time-step bound
+    vector<Beta_Map> betas;
+
+public:
+    Hyperplane_LowerBound();
+    Hyperplane_LowerBound(const Hyperplane &, double default_val, double oState_minVal, Hyperplane_LowerBound *next_bound);
+
+    double update(vector<Occupancy_State> & oStates, int next_agent);
+    double get_value(Occupancy_State_Base *)const;
+    double get_value(Support) const;
+    int size() const; // hyperplanes size
+
+    //-- print
+    friend ostream &operator<<(ostream &os, const Hyperplane_LowerBound &l){
+        int size = l.size();
+        cout << "hyperplanes number " << size << endl;
+        for (int i = 0; i < size; i++){
+            cout << "hyperplane " << i << ":"<< endl;
+            os << l.hyperplanes.at(i);
+        }
+        return os;
+    }
+
+private:
+    void _prune();
+    void _add_hyperplane(const Hyperplane &);
+
+    void _build_hyperplane(Occupancy_State &, Decision_Rule &, const Beta_Map & );
+    
+    void _set_betas(Occupancy_State_Base *, int next_agent);
+    void _set_betas(vector<Occupancy_State> &, int next_agent);
+    void _set_betas(Support_Set &, int next_agent);
+
+    pair<double, Beta_Map> _eval_decisionRule(Occupancy_State &, Decision_Rule &);
+};
+
+///////////////////////////
+// Hyperplane_LowerBounds
+///@brief a collection of bounds (one for each time-step)
+//////////////////////////
+
+struct Hyperplane_LowerBounds{
+    vector<Hyperplane_LowerBound> lower_bounds; // a lower bound by time-step
+
+    Hyperplane_LowerBounds();
+    Hyperplane_LowerBounds(int horizon);
+
+    Hyperplane_LowerBound & at(int step);
+    double get_value(Occupancy_State &) const;
+
+    //-- print
+    friend ostream &operator<<(ostream &os, const Hyperplane_LowerBounds &ls){
+        cout << " *** LowerBounds size :";
+        for (auto &l: ls.lower_bounds){
+            os << l.size() << " ";
+        }
+        return os;
+    }
+};
+
+
+}} // end namespace
diff --git a/code/src/decPOMDP/sequential/value_representation/mdp_solution.cpp b/code/src/decPOMDP/sequential/value_representation/mdp_solution.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..33af4f320baa4cebeb75536e89d52fa39dbef753
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/mdp_solution.cpp
@@ -0,0 +1,88 @@
+#include "mdp_solution.hpp"
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+MDP_Solution::MDP_Solution(){
+}
+
+
+void MDP_Solution::solve(){
+    this->mdp_solver.solve();
+    this->solved = true;
+}
+
+
+double MDP_Solution::get_value(Occupancy_State &oState){
+    //-- stored in the oState ?
+    if (oState.relax_value > -INFINITY)
+        return oState.relax_value;    
+
+    //-- compute
+    int step = oState.get_step();
+    if (step == SEARCH.horizon)
+        return 0; // terminal value
+
+    int agent = oState.get_next_agent();
+    double oState_value = 0;
+    if (agent == 0){
+        //-- similar to simultaneous case
+        const auto & belief = oState.get_belief();
+        oState_value = this->mdp_solver.get_value(step, belief);
+    }
+    else{
+        //-- recurrent greedy selection of individual actions
+        //--    support -> iAction
+        for (const auto & support_proba: oState.get_supports_probas(oState.is_compressed)){
+            Support supp = support_proba.first;
+            double proba = support_proba.second;
+            oState_value += proba * this->get_value(supp, agent, step);
+        }
+        
+    }
+    
+    //-- store
+    oState.relax_value = oState_value;
+
+    return oState_value;
+}
+
+
+/// @brief recurrent function:
+/// select greedy actions for agents [agent, agent + 1, ..., PROBLEM.last_agent]
+/// @param supp A support containing: i) the hidden state ii) indiv actions for agents < agent
+/// @param agent The agent that take decision
+double MDP_Solution::get_value(Support supp, int agent, int step) const{
+    if (agent > PROBLEM.last_agent){
+        int ju = supp.get_jAction();
+        return this->mdp_solver.get_Qvalue(step, ju, supp.get_hiddenState());
+    }
+
+    double val = -INFINITY;
+    for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+        supp.set_iAction(agent, iu);
+        double iu_val = this->get_value(supp, agent + 1, step); // recurrence
+        val = max(val, iu_val);
+    }
+    return val;
+}
+
+double MDP_Solution::get_value(const POMDP::Belief & belief, Support supp, int agent, int step) const{
+    if (agent > PROBLEM.last_agent){
+        int ju = supp.get_jAction();
+        return this->mdp_solver.get_Qvalue(step, ju, belief);
+    }
+
+    double val = -INFINITY;
+    for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+        supp.set_iAction(agent, iu);
+        double iu_val = this->get_value(belief, supp, agent + 1, step); // recurrence
+        val = max(val, iu_val);
+    }
+    return val;
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/mdp_solution.hpp b/code/src/decPOMDP/sequential/value_representation/mdp_solution.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..9cca2b0f270d2e62d796a600bce0024ceda61d83
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/mdp_solution.hpp
@@ -0,0 +1,29 @@
+#pragma once
+
+#include "../occupancy_state.hpp"
+
+#include <unordered_map>
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+    class MDP_Solution{
+
+        MDP::Backward_Induction mdp_solver;
+        
+    public:
+        bool solved = false;
+        
+        MDP_Solution();
+
+        void solve();
+
+        double get_value(Occupancy_State &oState);
+        double get_value(Support supp, int agent, int step) const;
+        double get_value(const POMDP::Belief & belief, Support supp, int agent, int step) const;
+        
+    protected:
+    };
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/milp.cpp b/code/src/decPOMDP/sequential/value_representation/milp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1c2bb4fa1cb09a712e476c1f6f46f648b9fb9678
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/milp.cpp
@@ -0,0 +1,624 @@
+#include "milp.hpp"
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+////////////////////////////////
+// sawtooth
+////////////////////////////////
+
+Cplex_Sawtooth::Cplex_Sawtooth(Occupancy_State & oState, const vector<Tooth> & teeth, MDP_Solution & mdp_sol):
+    Cplex_Base(true){ // maximization problem
+    
+    int step = oState.get_step();
+    int agent = oState.get_next_agent();
+
+    unordered_map<Support, Support_Val_Map> transitions = oState.get_transitions();
+    
+    this->_build_decisionRule(oState);
+
+    //-- Build Variables: sawtooth diff variable
+    string sw_name = this->_get_sawtoothDiff_name();
+    this->_build_var(sw_name);
+    this->var.add(IloNumVar(env, -IloInfinity, 0, sw_name.c_str())); // a negative value
+
+    //-- ====== DRAFT EQUATION (23)     Objective: Q_MDP(s, a) + sawtooth_diff
+    //-- compute map: <ih, iu> -> s(ih) * Q_MDP(x, u^{:agent})
+    Support_Val_Map coeffs;
+    for (auto & supp_proba: oState.get_supports_probas(oState.is_compressed)){
+        auto supp = supp_proba.first;
+        double proba = supp_proba.second;
+        int x = supp.get_hiddenState();
+        Support ihiu(supp.get_iHistory(agent));
+        for (int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+            ihiu.set_iAction(agent, iu);
+            supp.set_iAction(agent, iu);
+            double coeff_relax = proba * mdp_sol.get_value(supp, agent + 1, step); // s(ih) * Q_MDP(x, u^{:agent})
+            auto got_coeff = coeffs.find(ihiu);
+            if (got_coeff == coeffs.end()){
+                coeffs.emplace(ihiu, coeff_relax);
+            }
+            else{
+                got_coeff->second += coeff_relax;
+            }
+        }
+    }    
+    //--    set objective function
+    for (const auto & ihiu_coeff : coeffs){
+        Support ihiu = ihiu_coeff.first;
+        double coeff = ihiu_coeff.second;
+        const auto & var_i_decision = this->get_var_iDecision(ihiu.get_iHistory(agent), ihiu.get_iAction(agent), agent);
+        this->objective.setLinearCoef(var_i_decision, coeff); // Objective: Q_MDP(s, a)
+    }
+    if (!teeth.empty()){
+        this->objective.setLinearCoef(this->get_var_sawtoothDiff(), 1.0); // Objective: Q_MDP(s, a) + sawtooth_diff
+    }
+
+
+//////////////////
+// if (!teeth.empty()){
+    // cout << oState << endl;
+// }
+//////////////////
+
+    bool USE_TOOTH_COMPACT = false;
+
+    for (const Tooth & tooth: teeth){
+        //-- check whether all tooth oState supports are reachable from oState
+        if (!tooth.oState.allReachable(transitions, USE_TOOTH_COMPACT))
+            continue;
+
+        auto const & tooth_supps_proba = tooth.oState.get_supports_probas(USE_TOOTH_COMPACT);
+
+///////////////
+// cout << "tooth supp' : " << endl;
+// for (const auto & supp_proba: tooth_supps_proba){
+//     cout << supp_proba.first << "   " << supp_proba.second << endl;
+// }
+///////////////
+
+        //-- ====== DRAFT EQUATION (25):    \sum_{supp'} w_k(supp') = 1
+        for (const auto & supp_proba: tooth_supps_proba){
+            string var_name = this->_get_omega_name(tooth.id, supp_proba.first);
+            this->_build_var(var_name);
+            this->var.add(IloBoolVar(this->env, 0, 1, var_name.c_str())); // Build w_k(supp')
+        }
+        double minimum = 1.0;
+        this->con.add(IloRange(this->env, 1.0, 1.0)); // con: = 1
+        for (const auto & supp_proba: tooth_supps_proba){
+            const auto & var_omega = this->get_var_omega(tooth.id, supp_proba.first);
+            this->con[this->con_number].setLinearCoef(var_omega, 1.0); // con: \sum_{supp'} w_k(supp') = 1
+            minimum = min(minimum, supp_proba.second);
+        }
+        this->con_number++;
+
+        //-- ====== DRAFT EQUATION (24):   sawtooth_diff < ratio * (v_k - V_k) + (1 - w_k(supp')) M , for each supp'
+        //--        ratio = Pr(supp' | s, a) / s_k(supp')
+        //--                where Pr(supp' | s, a) = \sum_{iu} \sum_{ih} Pr(supp' | s, iu, ih) * s(ih) * a(iu | ih)
+        //--                with Pr(supp' | s, iu, ih) * s(ih) stored in transitions[supp'][<ih,iu>]
+
+        for (const auto & tooth_supp_proba: tooth_supps_proba){
+            Support tooth_supp = tooth_supp_proba.first;
+            double tooth_proba = tooth_supp_proba.second;
+            //-- init constraint
+            const double M = 10.0 / minimum;
+            this->con.add(IloRange(this->env, -IloInfinity, M)); // con: <= M
+            this->con[this->con_number].setLinearCoef(this->get_var_sawtoothDiff(), 1.0); // con: sawtooth_diff <= M
+            this->con[this->con_number].setLinearCoef(this->get_var_omega(tooth.id, tooth_supp), M); // con: sawtooth_diff + M * w_k(supp')) <= M
+            //-- ratios
+            for (const auto & ihiu_proba: transitions.at(tooth_supp)){ // REMARK: we checked that all tooth supports were reachables
+                double ratio = ihiu_proba.second / tooth_proba; // ihiu_proba.second = Pr(supp' | supp, iu) * s(supp)
+                double coeff = -ratio * (tooth.value - tooth.relax_value);
+                Support ihiu = ihiu_proba.first;
+// cout << "tooth_supp " << tooth_supp.get_container()
+//     << " tooth_proba " << tooth_proba
+//     << " iu " << ihiu.get_iAction(agent)
+//     << " Pr " << ihiu_proba.second
+//     <<  " RATIO " << ratio
+//     << " coeff " << coeff
+//     << endl;
+
+                const auto & var_i_decision = this->get_var_iDecision(ihiu.get_iHistory(agent), ihiu.get_iAction(agent), agent);
+                this->con[this->con_number].setLinearCoef(var_i_decision, coeff); // con: sawtooth_diff + M * w_k(supp')) - ratio * (v_k - V_k)<= M
+            }
+
+            this->con_number++;
+        }
+    }
+}
+
+
+/// @brief Build (deterministic) decision variables ia(iu, ih) and the constraints sum_{iu} ia(iu| ih) = 1,
+/// where ia stands for the individual decision rule.
+/// Deterministic: each ia(iu, ih) is a boolean.
+void Cplex_Sawtooth::_build_decisionRule(Occupancy_State & oState){
+    int agent = oState.get_next_agent();
+    
+    //-- Build Variables: ai(ui|hi)
+    for(const Support & ihistory : oState.get_iHistories(agent, oState.is_compressed)){
+        for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; ++iu){
+            string var_name = this->_get_iDecision_name(ihistory, iu, agent);
+            this->_build_var(var_name);
+            this->var.add(IloBoolVar(env, 0, 1, var_name.c_str())); // deterministic (boolean)
+        }
+    }
+
+    //-- Build Constraints: policy \sum_{ui} ai(ui|hi) = 1  
+    for(const auto& ihistory : oState.get_iHistories(agent, oState.is_compressed)){
+        this->con.add(IloRange(env, 1.0, 1.0));
+        for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; ++iu){
+            this->con[con_number].setLinearCoef(this->get_var_iDecision(ihistory, iu, agent), 1.0);
+        }
+        this->con_number++;
+    }
+}
+
+
+/// @brief Build the decision rule (build upon cplex solution).
+/// @warning Require solve() first.
+Decision_Rule Cplex_Sawtooth::get_decisionRule(Occupancy_State & oState){
+    Decision_Rule decision_rule;
+    int agent = oState.get_next_agent();
+    for(const auto & ihistory : oState.get_iHistories(agent, oState.is_compressed)){
+        int n = 0; // sanity check: validity of the deterministic decision rule
+        for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+            const auto & var_i_decision = this->get_var_iDecision(ihistory, iu, agent);
+            double value = this->cplex.getValue(var_i_decision);
+            if (value > .5){
+                n++;
+                decision_rule.set_action(ihistory, iu);
+            }
+        }
+        assert(n == 1);
+    }
+    return decision_rule;
+}
+
+
+////////////////////////////////
+// convex-hull
+////////////////////////////////
+
+Cplex_ConvexHull::Cplex_ConvexHull(bool maximize): 
+    Cplex_Base(maximize){
+}
+
+///@brief: Common to Eval / Select.
+void Cplex_ConvexHull::build_theta_k_variables(){
+    
+    assert(!this->points.empty()); // The points set must be filled before.
+
+    //-- Build Variables: theta_k (points weights)
+    for (const auto & point: this->points){
+        string var_name = this->_get_theta_name(point.id);
+        this->_build_var(var_name);
+        this->var.add(IloNumVar(env, 0.0, 1.0, var_name.c_str()));
+    }
+
+    //-- Build Constraint: \sum_{k} theta_k = 1
+    //--    USELESS: we constrain oState to be a combination of the points oStates, involving \sum_{k} theta_k = 1
+    // this->con.add(IloRange(env, 1.0, 1.0));
+    // for (const auto & point: points){
+    //     this->con[con_number].setLinearCoef(this->get_var_theta(point.id), 1.0);
+    // }
+    // con_number++;
+}
+
+//------------------------------------
+//-- convex-hull eval
+//------------------------------------
+
+Cplex_ConvexHull_Eval::Cplex_ConvexHull_Eval(Occupancy_State & oState, const vector<ConvexHull_Point> & bag, MDP_Solution & mdp_sol):
+    Cplex_ConvexHull(false){ // minimize
+
+    this->fill_points_set(oState, bag, mdp_sol);
+    this->build_theta_k(oState);
+
+    //-- Build objective function: \sum_{k} theta_k * value_k
+    for (const auto & point: this->points){
+        this->objective.setLinearCoef(this->get_var_theta(point.id), point.value);
+    }
+}
+
+
+/// @brief Fill this->points.  
+void Cplex_ConvexHull_Eval::fill_points_set(Occupancy_State & oState, const vector<ConvexHull_Point> & bag, MDP_Solution & mdp_sol){
+    //-- Corner points:
+    //--    A point for each element of the oState support.
+    //--    This point is the pair (corner_oState, relax_value).
+    auto const & supps_proba = oState.get_supports_probas(oState.is_compressed); // oState support
+    this->points.reserve(supps_proba.size());
+    for (const auto & supp_proba: supps_proba){
+        Occupancy_State_Corner corner(oState, supp_proba.first);
+        double relax_value = mdp_sol.get_value(corner);
+        ConvexHull_Point corner_point(corner, relax_value);
+        this->points.push_back(corner_point);
+    }
+
+    //-- Add bag points of interest (i.e. which support is included in oState support).
+    for (const auto & point: bag){
+        if (this->_is_valid(point, oState)){
+            this->points.push_back(point);
+        }
+    }
+}
+
+
+///@brief Build theta_k variables and constraints.
+void Cplex_ConvexHull_Eval::build_theta_k(Occupancy_State & oState){
+    assert(!this->points.empty()); // The points set must be filled before.
+
+    this->build_theta_k_variables();
+    
+    //-- Build Constraints: theta_k (oState is a combination of the points oStates)
+    //--    s(supp) = \sum_{k} theta_k * s_k(supp), for each supp of oState s
+    //--    remark: this always admits a solution as the points set contain the corner points
+    auto const & supps_proba = oState.get_supports_probas(oState.is_compressed);
+    for (const auto & supp_proba: supps_proba){
+        double proba = supp_proba.second;
+        this->con.add(IloRange(env, proba, proba));
+        for (auto & point: this->points){
+            const auto & point_supports_probas = point.oState.get_supports_probas(point.oState.is_compressed);
+            auto got = point_supports_probas.find(supp_proba.first);
+            if (got != point_supports_probas.end()){
+                double proba_point = got->second;
+                this->con[con_number].setLinearCoef(this->get_var_theta(point.id), proba_point);
+            }
+        }
+        con_number++;
+    }
+}
+
+
+/// @brief Check whether the point support is included in oState support.
+/// Otherwise, the point k is not of interest. Indeed we are looking for s = sum_{k} theta_k * s_k.
+bool Cplex_ConvexHull_Eval::_is_valid(const ConvexHull_Point & point, Occupancy_State & oState){
+    const auto & supps_proba = oState.get_supports_probas(oState.is_compressed);
+    const auto & point_supports_probas = point.oState.get_supports_probas(point.oState.is_compressed);
+    for (const auto & supp_proba: point_supports_probas){
+        if (supps_proba.find(supp_proba.first) == supps_proba.end()){
+            return false;
+        }
+    }
+    return true;
+}
+
+
+//------------------------------------
+//-- convex-hull select
+//------------------------------------
+
+Cplex_ConvexHull_Select::Cplex_ConvexHull_Select(Occupancy_State & oState, const vector<ConvexHull_Point> & bag, MDP_Solution & mdp_sol):
+    Cplex_ConvexHull(false){
+
+    int agent = oState.get_next_agent();
+    auto const & supps_proba = oState.get_supports_probas(oState.is_compressed);
+    auto const & iHistories = oState.get_iHistories(agent, oState.is_compressed);
+
+    this->fill_points_set(oState, bag, mdp_sol);
+    this->build_theta_k_variables();
+    this->_build_decisionRule(oState);
+
+    //-- === DRAFT EQUATION (26) ===    objective function V
+    string V_name = this->_get_Vobj_name();
+    this->_build_var(V_name);
+    this->var.add(IloNumVar(env, -IloInfinity, IloInfinity, V_name.c_str()));
+    this->objective.setLinearCoef(this->get_var_Vobj(), 1.0); // objective: V
+
+    //-- === DRAFT EQUATION (27) ===    p(s, a) = \sum_{k} theta_k * s_k
+    //--    for each reachable supp' from <ih,iu>
+    //--        Pr(supp' | s, a) = \sum_{k} theta_k * s_k(supp')
+    //--        where Pr(supp' | s, a) = \sum_{ih} \sum_{iu} Pr(supp' | ih, iu) * s(ih) * a(iu | ih)
+    //--        transitions provide  Pr(supp' | iu, ih) * s(ih) = transitions[supp'][<ih,iu>]]
+    for (const auto & suppNext_ihiuProba: this->transitions){
+        this->con.add(IloRange(env, .0, .0)); // con: = 0
+        Support suppNext = suppNext_ihiuProba.first;
+        for (const auto & ihiu_proba: suppNext_ihiuProba.second){
+            Support ihiu = ihiu_proba.first;
+            double proba = ihiu_proba.second; // Pr(supp' | iu, ih) * s(ih)
+            const auto & var_i_decision = this->get_var_iDecision(ihiu.get_iHistory(agent), ihiu.get_iAction(agent), agent);
+            this->con[con_number].setLinearCoef(var_i_decision, proba); // con: p(s,a)  = 0
+
+            unordered_map<int, double> coeffs; // map: point.id -> coeff (SANITY CHECK)
+            for (auto & point: this->points){
+                //-- looking for suppNext in the point support
+                const auto & point_supports_probas = point.oState.get_supports_probas(point.oState.is_compressed);
+                auto got = point_supports_probas.find(suppNext);
+                if (got != point_supports_probas.end()){
+                    double proba_point = got->second;
+                    assert(coeffs.find(point.id) == coeffs.end()); coeffs.emplace(point.id, -proba_point); // SANITY CHECK
+                    this->con[con_number].setLinearCoef(this->get_var_theta(point.id), -proba_point); // con: p(s,a) - \sum_{k} theta_k * s_k(supp') = 0 
+                }
+            }
+        }
+        con_number++;
+    }
+
+    //-- === DRAFT EQUATION (28) ===    V = r(s, a) + \sum_{k} theta_k * value_k 
+    //--                                where  r(s, a) = \sum_{supp} \sum{iu} r(x, u) * s(supp) * a(iu|ih)
+    //--                                with    u = <u^{:agent-1}, iu> and u^{:agent-1} is contained in supp
+    this->con.add(IloRange(env, .0, .0)); // con: = 0
+    this->con[con_number].setLinearCoef(this->get_var_Vobj(), 1.0); // con: V = 0
+    for (const auto & point: this->points){
+        this->con[con_number].setLinearCoef(this->get_var_theta(point.id), -point.value); // con: V - \sum_{k} theta_k * value_k = 0
+    }
+    if (agent == PROBLEM.last_agent){ // else r(s, a) = 0
+        Support_Val_Map coeffs;
+        for (const auto & supp_proba: supps_proba){
+            Support supp = supp_proba.first;
+            double proba = supp_proba.second;
+            Support ihiu = supp.get_iHistory(agent);
+            for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+                supp.set_iAction(agent, iu);
+                int ju = supp.get_jAction();
+                double reward = PROBLEM.rewards_matrix(supp.get_hiddenState(), ju);
+                double coeff = -reward * proba;
+
+                ihiu.set_iAction(agent, iu);
+                auto got = coeffs.find(ihiu);
+                if (got == coeffs.end())
+                    coeffs[ihiu] = coeff;
+                else
+                    got->second += coeff;
+            }
+        }
+        for (auto ih: iHistories){
+            for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+                Support ihiu = ih;
+                ihiu.set_iAction(agent, iu);                
+                const auto & var_i_decision = this->get_var_iDecision(ih, iu, agent);
+                this->con[con_number].setLinearCoef(var_i_decision, coeffs.at(ihiu)); // con: V - r(s,a) = 0
+            }
+        }
+    }
+    con_number++;
+    
+    //-- === DRAFT EQUATION (29) ===    V = \sum_{ih} V(ih)
+    for(const Support & ihistory : iHistories){
+        string var_name = this->_get_Vih_name(ihistory);
+        this->_build_var(var_name);
+        this->var.add(IloNumVar(env, -IloInfinity, IloInfinity, var_name.c_str())); // build V(ih)
+    }
+    this->con.add(IloRange(env, .0, .0)); // con: = 0
+    this->con[con_number].setLinearCoef(this->get_var_Vobj(), 1.0); // con: V = 0
+    for(const Support & ihistory : iHistories){
+        this->con[con_number].setLinearCoef(this->get_var_Vih(ihistory), -1.0); // con: V - \sum_{ih} V(ih) = 0
+    }
+    con_number++;
+
+    //-- ===== FOR DRAFT EQUATIONS (30) V(ih) >= \sum_{k} theta_k * w_k(ih, iu), for each (ih, iu)
+    //--                                where w_k(ih, iu) = \sum_{supp} s(supp) * [r(s,u) + value_k] * delta
+    //--                                                    where delta = 1 if ih \in supp and 0 else
+    //--                                                    and   u = <u^{:agent-1}, iu> and u^{:agent-1} is contained in supp
+    for(Support ih : iHistories){ // ih
+        for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+            this->con.add(IloRange(env, .0, IloInfinity)); // con: >= 0
+            this->con[con_number].setLinearCoef(this->get_var_Vih(ih), 1.0); // con: V(ih) >= 0
+            for (const auto & point: this->points){
+                double w = 0;
+                for (const auto & supp_proba: supps_proba){
+                    Support supp = supp_proba.first;
+                    if (supp.get_iHistory(agent) != ih)
+                        continue;
+                    double reward = 0;
+                    if (agent == PROBLEM.last_agent){
+                        supp.set_iAction(agent, iu);
+                        reward = PROBLEM.rewards_matrix(supp.get_hiddenState(), supp.get_jAction());
+                    }
+                    w += supp_proba.second * (reward +  point.value);
+                }
+                this->con[con_number].setLinearCoef(this->get_var_theta(point.id), -w); // con: V (ih) - \sum_{k} theta_k * w_k(ih, iu) >= 0
+            }
+            con_number++;
+        }
+    }
+
+}
+
+
+/// @brief Build (stochastic) decision variables ia(iu, ih) and the constraints sum_{iu} ia(iu| ih) = 1,
+/// where ia stands for the individual decision rule.
+/// Stochastic: each ia(iu, ih) is a real number in  [0; 1].
+void Cplex_ConvexHull_Select::_build_decisionRule(Occupancy_State & oState){
+    int agent = oState.get_next_agent();
+    auto const & iHistories = oState.get_iHistories(agent, oState.is_compressed);
+
+    //-- build decision variables (for each ih, for each iu) 
+    for(const Support & ihistory : iHistories){
+        for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; ++iu){
+            string var_name = this->_get_iDecision_name(ihistory, iu, agent);
+            this->_build_var(var_name);
+            this->var.add(IloNumVar(env, 0.0, 1.0, var_name.c_str())); // stochastic: real in [0; 1]
+        }
+    }
+    //-- build constraints (for each ih)
+    for(const auto& ihistory : oState.get_iHistories(agent, oState.is_compressed)){
+        this->con.add(IloRange(env, 1.0, 1.0)); // con: = 1
+        for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; ++iu){
+            this->con[con_number].setLinearCoef(this->get_var_iDecision(ihistory, iu, agent), 1.0); // con: \sum_{iu} ia(iu|ih) = 1
+        }
+        this->con_number++;
+    }
+}
+
+/// @brief Fill this->points.  
+void Cplex_ConvexHull_Select::fill_points_set(Occupancy_State & oState, const vector<ConvexHull_Point> & bag, MDP_Solution & mdp_sol){
+    //--    First compute transitions probabilities:
+    this->transitions = oState.get_transitions();
+
+    //-- Corner points:
+    //--    A point for each reachable supp' (i.e. for each <x,h> reachable from oState)
+    int next_step = oState.get_next_agent() == PROBLEM.last_agent ? oState.get_step() + 1 : oState.get_step();
+    int next_agent = oState.get_next_agent() == PROBLEM.last_agent ? 0 : oState.get_next_agent() + 1;
+
+    this->points.reserve(transitions.size());
+    for (const auto & it: transitions){ 
+        const auto & suppNext = it.first;
+        Occupancy_State_Corner corner(next_step, next_agent, suppNext);
+        double relax_value = mdp_sol.get_value(corner);
+        ConvexHull_Point corner_point(corner, relax_value);
+        this->points.push_back(corner_point);
+    }
+
+    //-- Add bag points of interest (which all support elements are reachable from oState).
+    //--    Fill the points set
+    for (const auto & point: bag){
+        if (point.oState.allReachable(this->transitions)){
+            this->points.push_back(point);
+        }
+    }
+}
+
+
+////////////////////////////////
+//////////////// TEST
+////////////////////////////////
+Cplex_ConvexHull_Select_Test::Cplex_ConvexHull_Select_Test(Occupancy_State & oState, const vector<ConvexHull_Point> & bag, MDP_Solution & mdp_sol):
+    Cplex_ConvexHull(false){
+    
+    int agent = oState.get_next_agent();
+    auto const & supps_proba = oState.get_supports_probas(oState.is_compressed);
+    auto const & iHistories = oState.get_iHistories(agent, oState.is_compressed);
+
+    this->fill_points_set(oState, bag, mdp_sol);
+    this->build_theta_k_variables();
+
+    //-- Build Decision Variables: \sum_{iu} ia(iu|ih) = 1 
+    for(const Support & ihistory : iHistories){
+        for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; ++iu){
+            string var_name = this->_get_iDecision_name(ihistory, iu, agent);
+            this->_build_var(var_name);
+            this->var.add(IloNumVar(env, 0.0, 1.0, var_name.c_str())); // stochastic: real in [0; 1]
+        }
+    }
+    for(const auto& ihistory : oState.get_iHistories(agent, oState.is_compressed)){
+        this->con.add(IloRange(env, 1.0, 1.0)); // con: = 1
+        for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; ++iu){
+            this->con[con_number].setLinearCoef(this->get_var_iDecision(ihistory, iu, agent), 1.0); // con: \sum_{iu} ia(iu|ih) = 1
+        }
+        this->con_number++;
+    }
+
+    ////////////////////////
+    //-- V= q(s, a) = r(s, a) + \sum theta_k v_k
+    ////////////////////////
+
+    //-- === DRAFT EQUATION (78) ===    objective function V = q(s,a^*) = r(s,a^*) + \sum_{k} theta_k * value_k
+    //--                                where q(s, a) = r(s, a) + \sum_{k} theta_k * value_k 
+    //--                                with  r(s, a) = \sum_{supp} \sum{iu} r(x, u) * s(supp) * a(iu|ih)
+    string V_name = this->_get_Vobj_name();
+    this->_build_var(V_name);
+    this->var.add(IloNumVar(env, -IloInfinity, IloInfinity, V_name.c_str()));
+    this->objective.setLinearCoef(this->get_var_Vobj(), 1.0); // objective: V
+    this->con.add(IloRange(env, .0, .0)); // con: = 0
+    this->con[con_number].setLinearCoef(get_var_Vobj(), 1.0); // con: V = 0
+    Support_Val_Map coeffs;
+    if (agent == PROBLEM.last_agent){ // else r(s, a) = 0
+        for (const auto & supp_proba: supps_proba){
+            Support supp = supp_proba.first;
+            double proba = supp_proba.second;
+            Support ihiu = supp.get_iHistory(agent);
+            for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+                supp.set_iAction(agent, iu);
+                int ju = supp.get_jAction();
+                double reward = PROBLEM.rewards_matrix(supp.get_hiddenState(), ju);
+                double coeff = -reward * proba;
+
+                ihiu.set_iAction(agent, iu);
+                auto got = coeffs.find(ihiu);
+                if (got == coeffs.end())
+                    coeffs[ihiu] = coeff;
+                else
+                    got->second += coeff;
+            }
+        }
+        for (auto ih: iHistories){
+            for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+                Support ihiu = ih;
+                ihiu.set_iAction(agent, iu);                
+                const auto & var_i_decision = this->get_var_iDecision(ih, iu, agent);
+                this->con[con_number].setLinearCoef(var_i_decision, coeffs.at(ihiu)); // con: V - r(s,a) = 0
+            }
+        }
+    }
+    for (const auto & point: this->points){
+        this->con[con_number].setLinearCoef(this->get_var_theta(point.id), -point.value); // con: V - r(s,a) - \sum_{k} theta_k * value_k = 0
+    }
+    con_number++;
+
+    //-- === DRAFT EQUATION (79)=(27) ===    p(s, a) = \sum_{k} theta_k * s_k
+    //--    for each supp' reachable from s
+    //--        Pr(supp' | s, a) = \sum_{k} theta_k * s_k(supp')
+    //--        where Pr(supp' | s, a) = \sum_{ih} \sum_{iu} Pr(supp' | ih, iu) * s(ih) * a(iu | ih)
+    //--        transitions provide  Pr(supp' | iu, ih) * s(ih) = transitions[supp'][<ih,iu>]]
+    
+    for (const auto & suppNext_ihiuProba: this->transitions){
+        this->con.add(IloRange(env, .0, .0)); // con: = 0
+        Support suppNext = suppNext_ihiuProba.first;
+        for (const auto & ihiu_proba: suppNext_ihiuProba.second){
+            Support ihiu = ihiu_proba.first;
+            double proba = ihiu_proba.second; // Pr(supp' | iu, ih) * s(ih)
+            const auto & var_i_decision = this->get_var_iDecision(ihiu.get_iHistory(agent), ihiu.get_iAction(agent), agent);
+            this->con[con_number].setLinearCoef(var_i_decision, proba); // con: p(s,a)  = 0
+            for (const auto & point: this->points){
+                //-- looking for suppNext in the point support
+                const auto & point_supports_probas = point.oState.get_supports_probas(point.oState.is_compressed);
+                auto got = point_supports_probas.find(suppNext);
+                if (got != point_supports_probas.end()){
+                    double proba_point = got->second;
+                    this->con[con_number].setLinearCoef(this->get_var_theta(point.id), -proba_point); // con: p(s,a) - \sum_{k} theta_k * s_k(supp') = 0 
+                }
+            }
+        }
+        con_number++;
+    }
+
+    //-- === DRAFT EQUATION (80) ===    V >= q(s,a) for each a
+    //-- compute agent decision rules
+    vector<Decision_Rule> drs = VARIATIONS_GENERATOR.get_decision_rules(oState.get_iHistories(agent, oState.is_compressed),
+                                                                        PROBLEM.actions_number_byAgent[agent]);
+    //-- constraints
+    for (Decision_Rule & dr: drs){
+        Occupancy_State oState_next = oState.do_step(dr);
+        if (SEARCH.compress)
+            oState_next.compress();
+        Cplex_ConvexHull_Eval lp(oState_next, bag, mdp_sol);
+        double sol_value = lp.solve();
+        double value = oState.get_expected_reward(dr) + PROBLEM.discount * sol_value;
+        this->con.add(IloRange(env, value, IloInfinity));
+        this->con[con_number].setLinearCoef(get_var_Vobj(), 1.0);
+        con_number++;
+    }
+}
+
+/// @brief Fill this->points.  
+void Cplex_ConvexHull_Select_Test::fill_points_set(Occupancy_State & oState, const vector<ConvexHull_Point> & bag, MDP_Solution & mdp_sol){
+    //--    First compute transitions probabilities:
+    this->transitions = oState.get_transitions();
+
+    //-- Corner points:
+    //--    A point for each reachable supp' (i.e. for each <x,h> reachable from oState)
+    int next_step = oState.get_next_agent() == PROBLEM.last_agent ? oState.get_step() + 1 : oState.get_step();
+    int next_agent = oState.get_next_agent() == PROBLEM.last_agent ? 0 : oState.get_next_agent() + 1;
+
+    this->points.reserve(transitions.size());
+    for (const auto & it: transitions){ 
+        const auto & suppNext = it.first;
+        Occupancy_State_Corner corner(next_step, next_agent, suppNext);
+        double relax_value = mdp_sol.get_value(corner);
+        ConvexHull_Point corner_point(corner, relax_value);
+        this->points.push_back(corner_point);
+    }
+
+    //-- Add bag points of interest (which all support elements are reachable from oState).
+    //--    Fill the points set
+    for (const auto & point: bag){
+        if (point.oState.allReachable(this->transitions)){
+            this->points.push_back(point);
+        }
+    }
+}
+
+}} // end namespace
diff --git a/code/src/decPOMDP/sequential/value_representation/milp.hpp b/code/src/decPOMDP/sequential/value_representation/milp.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..0ef8193b2eeff97b607c041e9b21e89cf59d8e18
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/milp.hpp
@@ -0,0 +1,81 @@
+#pragma once
+
+#include "../../core/milp.hpp"
+#include "../occupancy_state.hpp"
+#include "sawtooth.hpp" // for Tooth
+#include "convex_hull.hpp" // for ConvexHull_Point
+
+
+//-- include cplex
+#ifndef CPLEX_NOT_FOUND
+    #include <ilcplex/ilocplex.h>
+    ILOSTLBEGIN
+#endif
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+////////////////////////////////
+// sawtooth
+//      decision rule selection
+////////////////////////////////
+
+struct Cplex_Sawtooth: Cplex_Base{
+    
+    Cplex_Sawtooth(Occupancy_State &, const vector<Tooth> &, MDP_Solution &);
+
+    Decision_Rule get_decisionRule(Occupancy_State &);
+    void _build_decisionRule(Occupancy_State &);
+};
+
+
+////////////////////////////////
+// convex-hull 
+//      evaluation
+//      decision rule selection
+////////////////////////////////
+
+struct Cplex_ConvexHull: Cplex_Base{
+    vector<ConvexHull_Point> points;
+
+    Cplex_ConvexHull(bool maximize);
+    
+    virtual void fill_points_set(Occupancy_State &, const vector<ConvexHull_Point> &, MDP_Solution &) = 0;
+    
+    void build_theta_k_variables();
+};
+
+
+struct Cplex_ConvexHull_Eval: Cplex_ConvexHull{
+    Cplex_ConvexHull_Eval(Occupancy_State &, const vector<ConvexHull_Point> &, MDP_Solution &);
+
+    virtual void fill_points_set(Occupancy_State &, const vector<ConvexHull_Point> &, MDP_Solution &);
+    void build_theta_k(Occupancy_State &);
+    
+    bool _is_valid(const ConvexHull_Point &, Occupancy_State &);
+};
+
+
+struct Cplex_ConvexHull_Select: Cplex_ConvexHull{
+    unordered_map<Support, Support_Val_Map> transitions; // probas[supp'][<ih,iu>]
+
+    Cplex_ConvexHull_Select(Occupancy_State &, const vector<ConvexHull_Point> &, MDP_Solution &);
+
+    virtual void fill_points_set(Occupancy_State &, const vector<ConvexHull_Point> &, MDP_Solution &);
+    void _build_decisionRule(Occupancy_State &);
+};
+
+
+// TEST simpler version ==== DRAFT EQUATIONS (78),(79),(80) 
+struct Cplex_ConvexHull_Select_Test: Cplex_ConvexHull{
+    unordered_map<Support, Support_Val_Map> transitions; // probas[supp'][<ih,iu>]
+    
+    Cplex_ConvexHull_Select_Test(Occupancy_State &, const vector<ConvexHull_Point> &, MDP_Solution &);
+    virtual void fill_points_set(Occupancy_State &, const vector<ConvexHull_Point> &, MDP_Solution &);
+};
+
+
+
+}} // end namespace
diff --git a/code/src/decPOMDP/sequential/value_representation/pomdp_solution.cpp b/code/src/decPOMDP/sequential/value_representation/pomdp_solution.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e2c080ebaa68f68d80560992a36b5ceca408a3c5
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/pomdp_solution.cpp
@@ -0,0 +1,163 @@
+#include "pomdp_solution.hpp"
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+POMDP_Solution::POMDP_Solution(){}
+
+
+/// @brief constructor
+POMDP_Solution::POMDP_Solution(POMDP::HSVI * hsvi_pomdp, int horizon_tau): 
+hsvi_pomdp(hsvi_pomdp), horizon_tau(horizon_tau) {
+    //-- resize mappings (a map for each time-step)
+    this->oState_values.resize(horizon_tau + 1);
+    this->beliefs_values.resize(SEARCH.horizon + 1);
+    this->beliefs_Qvalue.resize(SEARCH.horizon + 1);
+    for (auto & temp: this->beliefs_Qvalue)
+        temp.resize(PROBLEM.actions_joint_number);
+}
+
+
+/// @brief oState evaluation.
+/// 1) Looking for the value in the oState (faster)
+/// 2) Looking for the value in the mapping: oState -> pomdp value
+/// 3) Compute the oState value (by addition of joint histories values)
+double POMDP_Solution::get_value(Occupancy_State &oState){
+    int tau = oState.get_tau();
+    if (tau == this->horizon_tau)
+        return 0; // terminal value
+
+    //-- 1) stored in the oState ?
+    if (oState.relax_value > -INFINITY)
+        return oState.relax_value;
+    
+    //-- 2) stored in the mapping ?
+    const auto & values = this->oState_values.at(tau);
+    auto got = values.find(oState);
+    if (got != values.end()){
+        return got->second;
+    }
+
+    //-- 3) compute
+    int agent = oState.get_next_agent();
+    int step = oState.get_step();
+    double oState_value = 0;
+    if (agent == 0){
+        //-- similar to simultaneous case:
+        //--   Vpomdp(s) = \sum_{jh} s(jh) * Vpomdp(belief), where belief = [s(x0 | jh), s(x1 | jh), ...]   (1)
+        for (const auto & jh_beliefProba: oState.get_beliefState(oState.is_compressed)){
+            const POMDP::Belief & belief = jh_beliefProba.second.first;
+            double proba = jh_beliefProba.second.second;
+            oState_value += proba * this->get_value(step, belief); // s(jh) * Vpomdp(belief)
+        }
+    }
+    else{ 
+        /// @todo for agents_number > 2
+
+//-- based on individual belief
+        for (const auto & ih_beliefState: oState.get_ih_beliefState(agent, oState.is_compressed)){
+            double ih_value = -INFINITY;
+            Support actions;
+            for (int iu1 = 0; iu1 < PROBLEM.actions_number_byAgent[agent]; iu1++){
+                double iu1_val = 0;
+                actions.set_iAction(1, iu1);
+                for (auto jh_beliefProba: ih_beliefState.second){
+                    int iu0 = jh_beliefProba.first.get_iAction(0); // we know iu0
+                    actions.set_iAction(0, iu0);
+                    double proba = jh_beliefProba.second.second;
+                    iu1_val += proba * this->get_Qvalue(step, actions.get_jAction(), jh_beliefProba.second.first);
+                }
+                ih_value = max(ih_value, iu1_val);
+            }
+            oState_value += ih_value;
+        }
+
+//-- based on joint belief
+        // for (const auto & jh_beliefProba: oState.get_beliefState(oState.is_compressed)){
+        //     double jh_proba = jh_beliefProba.second.second;
+        //     const auto & belief = jh_beliefProba.second.first;
+
+        //     //-- action of first agent (iu0) is known
+        //     Support actions;
+        //     int iu0 = jh_beliefProba.first.get_iAction(0); // we know iu0
+        //     actions.set_iAction(0, iu0);
+
+        //     //-- best response of last agent
+        //     double jh_value = -INFINITY;
+        //     for (int iu1 = 0; iu1 < PROBLEM.actions_number_byAgent[agent]; iu1++){
+        //         actions.set_iAction(1, iu1);
+        //         double iu1_val = jh_proba * this->get_Qvalue(step, actions.get_jAction(), belief);
+        //         jh_value = max(jh_value, iu1_val);
+        //     }
+
+        //     oState_value += jh_value;
+        // }
+    }
+    //-- store
+    oState.relax_value = oState_value;
+    this->oState_values.at(tau)[oState] = oState_value;
+
+    return oState_value;
+}
+
+
+/// @brief Belief evaluation.
+/// 1) Looking for the value in the mapping: belief -> pomdp value
+/// 2) Compute the belief value
+double POMDP_Solution::get_value(int step, const POMDP::Belief & belief){
+    //-- 1) stored ?
+    auto & values = this->beliefs_values.at(step);
+    auto got = values.find(belief);
+    if (got != values.end()){
+        return got->second;
+    }
+
+    //-- 2) no: compute
+    double value = this->hsvi_pomdp->get_UpperVal(belief, step);
+
+    //-- store
+    values[belief] = value;
+
+    return value;
+}
+
+
+double POMDP_Solution::get_Qvalue(int step, int joint_action, const POMDP::Belief & belief){
+
+    //-- 1) stored ?
+    auto & values = this->beliefs_Qvalue.at(step).at(joint_action);
+    auto got = values.find(belief);
+    if (got != values.end()){
+        return got->second;
+    }
+
+    //-- 2) no: compute
+#if true //-- @todo check which is faster: use hsvi_pomdp->get_Q_UpperVal() or the following. More generally is it worth to memoize beliefs values ?
+    //-- Remark:
+    //--    The following lines could simplify to 
+    //--        Qvalues.at(ju) = this->hsvi_pomdp->get_Q_UpperVal(belief, ju, step);
+    //--    But for performance we use the stored mapping.
+    double Qvalue = belief.getExpectedReward(joint_action);
+    if (step < SEARCH.horizon - 1){
+        double V_next = 0;
+        for (auto & obs_belief: belief.get_reacheable_beliefs(joint_action)){ // @todo (perf): stocker reachables
+            POMDP::Belief & newBelief = obs_belief.second;
+            double sum = newBelief.normalize();
+            V_next += sum * this->get_value(step + 1, newBelief); // here we use the stored mapping
+        }
+        Qvalue += PROBLEM.discount * V_next;
+    }
+#else
+    double Qvalue = this->hsvi_pomdp->get_Q_UpperVal(belief, joint_action, step);
+#endif
+    
+    //-- store
+    values[belief] = Qvalue;
+    
+    return Qvalue;
+}
+
+
+    
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/pomdp_solution.hpp b/code/src/decPOMDP/sequential/value_representation/pomdp_solution.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..1c8a65cf58085b8fe3d6ace672e8023a1a332b8c
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/pomdp_solution.hpp
@@ -0,0 +1,44 @@
+#pragma once
+
+#include "../occupancy_state.hpp"
+
+#include <unordered_map>
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+    class POMDP_Solution{
+
+        using oState_Value_Map = unordered_map<Occupancy_State, double, oStateHash>;
+        using Belief_Value_Map = unordered_map<POMDP::Belief, double, POMDP::Belief_Hash>;
+
+        int horizon_tau;
+        //-- POMDP solution
+        POMDP::HSVI * hsvi_pomdp;
+        //-- Mappings: belief/oState -> evaluation
+        vector<oState_Value_Map> oState_values; // a map for each time-step
+        vector<Belief_Value_Map> beliefs_values; // a map for each time-step
+        vector<vector<Belief_Value_Map>> beliefs_Qvalue; // a map for each (time-step, joint action)
+
+    public:
+        POMDP_Solution();
+        POMDP_Solution(POMDP::HSVI * hsvi_pomdp, int horizon_tau);
+        double get_value(Occupancy_State &oState);
+        double get_value(int step, const POMDP::Belief & belief);
+        double get_Qvalue(int tau, int joint_action, const POMDP::Belief & belief);
+        
+    protected:
+        // double get_expected_reward(const POMDP::Belief & belief, int action_joint) const;
+
+    public:
+        friend ostream &operator<<(ostream &os, const POMDP_Solution &sol){
+            os << "belief numbers ";
+            for (auto beliefs_value: sol.beliefs_values)
+                os << beliefs_value.size() << " ";
+            return os;
+        }
+    };
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/reward_shaping.cpp b/code/src/decPOMDP/sequential/value_representation/reward_shaping.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cdb0e34f330554a552720e7a3039631c5fa4803e
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/reward_shaping.cpp
@@ -0,0 +1,128 @@
+#include "reward_shaping.hpp"
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+/// @brief Constructor.
+/// Fill rewards_matrices (a matrix by agent) that replace PROBLEM.rewards_matrix.
+Reward_Shaping::Reward_Shaping(){
+    if (!SEARCH.use_reward_shaping)
+        return;
+    cout << "$$$$$ Reward_Shaping : init $$$$$" << endl;
+
+    //-- init matrices
+    this->rewards_matrices.resize(PROBLEM.agents_number,
+        Matrix<double>(PROBLEM.states_number, PROBLEM.actions_joint_number, -INFINITY));
+    
+    //-- fill matrices
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        this->_set_rewards(x);
+    }
+
+    //-- verbose
+    if (SEARCH.verbose >= utils::Verbose::high){
+        cout << "=== reward shaping: " << endl;
+        for (int x = 0; x < PROBLEM.states_number; x++){
+            cout << "x " << x << endl;
+            for (int joint_action = 0; joint_action < PROBLEM.actions_joint_number; joint_action++){
+                double original_reward = PROBLEM.rewards_matrix(x, joint_action);
+                cout << "\t ju " << joint_action
+                    << " r(x,ju) " << original_reward;
+                vector<int> actions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, joint_action);
+                Support supp_ju;
+                double sum = 0;
+                for (int agent: PROBLEM.agents){
+                    supp_ju.set_iAction(agent, actions.at(agent));
+                    double indiv_rew = this->rewards_matrices.at(agent)(x, supp_ju.get_jAction());
+                    cout << " | agent " << agent
+                         << " iu " << actions.at(agent)
+                         << " r " << indiv_rew;
+                    sum += indiv_rew;
+                }
+                cout << endl;
+                assert(abs(original_reward - sum) < 1e-8);
+            }
+        }
+    }
+}
+
+
+double Reward_Shaping::get_expected_reward(const Occupancy_State & oState, Decision_Rule & decision_rule) const{
+    if (!SEARCH.use_reward_shaping)
+        return oState.get_expected_reward(decision_rule);
+
+    int agent = oState.get_next_agent();
+    double reward = 0;
+    const auto &rew_mat = this->rewards_matrices.at(agent);
+    for (auto & support_proba: oState.get_supports_probas(oState.is_compressed)){
+        auto supp = support_proba.first;
+        int iu = oState.get_iAction(decision_rule, supp, agent); // individual action
+        supp.set_iAction(agent, iu);
+        int ju = supp.get_jAction(); // (partial) joint action : <u^1, u^2, ..., u^agent>
+        reward += support_proba.second * rew_mat(supp.get_hiddenState(), ju);
+    }
+    return reward;
+}
+
+
+/// @brief Get the value stored in this->rewards_matrices.
+/// @param agent Current agent number. 
+/// @param x State number.
+/// @param action The "partial joint action" corresponding to the agent and its predecessors,  i.e. u^{1:agent} .
+/// @return The reward value.
+double Reward_Shaping::get_reward(int agent, int x, int action) const{
+    if (!SEARCH.use_reward_shaping){
+        if (agent < PROBLEM.last_agent)
+            return 0;
+        else
+            return PROBLEM.rewards_matrix(x, action);
+    }
+    
+    return this->rewards_matrices.at(agent)(x, action);
+}
+
+
+/// @brief Recursively fill agent reward matrices:
+/// the call with only the first argument, i.e. _set_reward(x),
+/// fill r(x, <u_0, u_1, ...., u_i>) foreach i in [0, n-1].
+void Reward_Shaping::_set_rewards(int x, int ju, int agent, double prev_sum){
+    if (agent > PROBLEM.last_agent)
+        return;
+    
+    Support supp_ju;
+    supp_ju.set_jAction(ju);
+    for (int iu = 0; iu < PROBLEM.actions_number_byAgent.at(agent); iu++){
+        supp_ju.set_iAction(agent, iu);
+        ju = supp_ju.get_jAction();
+        double reward = this->_get_max_reward(x, ju, agent)
+                        - prev_sum;
+        this->rewards_matrices.at(agent)(x, ju) = reward; // fill the agent reward matrix
+        this->_set_rewards(x, ju, agent + 1, prev_sum + reward); // recursion
+    }
+}
+
+/// @brief Given the action of the first agents, compute the maximum reward for the state x,
+/// i.e. compute: r(x, u^{:agent-1}) =  max_{u^{agent+1:}} r(x,<u^{:agent-1}, u^{agent+1:}>)
+/// @param x a state
+/// @param ju u^{:agent-1}
+/// @param agent The last agent whose action is set.
+/// @return r(x, u^{:agent-1})
+double Reward_Shaping::_get_max_reward(int x, int ju, int agent) const{
+    if (agent == PROBLEM.last_agent)
+        return PROBLEM.rewards_matrix(x, ju);
+    
+    double max_reward = -INFINITY;
+    Support supp_ju;
+    supp_ju.set_jAction(ju);
+    for (int iu = 0; iu < PROBLEM.actions_number_byAgent.at(agent + 1); iu++){
+        supp_ju.set_iAction(agent + 1, iu);
+        ju = supp_ju.get_jAction();
+        double iu_value = this->_get_max_reward(x, ju, agent + 1);
+        max_reward = max(max_reward, iu_value);
+    }
+    return max_reward;
+}
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/reward_shaping.hpp b/code/src/decPOMDP/sequential/value_representation/reward_shaping.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..243f12384f5fa4061073c4752948d988495928bf
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/reward_shaping.hpp
@@ -0,0 +1,29 @@
+#pragma once
+
+#include <vector>
+
+#include "../../core/_module.hpp"
+#include "../occupancy_state.hpp"
+
+
+namespace decPOMDP{
+namespace sequential{
+    using namespace std;
+
+
+    class Reward_Shaping{
+        vector<Matrix<double>> rewards_matrices; // reward shaping by agent, in order to improve exploration
+        int horizon_tau;
+
+    public:
+        Reward_Shaping();
+        
+        double get_expected_reward(const Occupancy_State &, Decision_Rule &) const;
+        double get_reward(int agent, int x, int action) const;
+
+    private:
+        void _set_rewards(int x, int ju = 0, int agent = 0, double prev_sum = 0);
+        double _get_max_reward(int x, int ju = 0, int agent = 0) const;
+    };
+
+}}
diff --git a/code/src/decPOMDP/sequential/value_representation/sawtooth.cpp b/code/src/decPOMDP/sequential/value_representation/sawtooth.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..014e314f7d25f5ae5869e79da0211e2454af10b7
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/sawtooth.cpp
@@ -0,0 +1,303 @@
+#include "sawtooth.hpp"
+#include "milp.hpp"
+
+#include <sstream>
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+////////////////////////////////
+// Tooth
+////////////////////////////////
+
+Tooth::Tooth(Occupancy_State & oState, double value, double relax_value):
+    id(ID()),
+    oState(oState),
+    value(value),
+    relax_value(relax_value){
+}
+
+bool Tooth::operator==(const Tooth & other) const{
+    return this->id == other.id;
+}
+bool Tooth::operator!=(const Tooth & other) const{
+    return this->id != other.id;
+}
+
+ostream &operator<<(ostream &os, const Tooth &tooth){
+    os << tooth.oState << " : " << tooth.value;
+    return os;
+}
+
+////////////////////////////////
+// Sawtooth_Bound
+////////////////////////////////
+
+Sawtooth_Bound::Sawtooth_Bound() {}
+
+/// @brief The size is the teeth number. 
+int Sawtooth_Bound::size() const{
+    return this->teeth.size();
+}
+
+
+/// @brief The value of an oState is the best value w.r.t. the teeth (i.e. the min value). 
+double Sawtooth_Bound::get_value(Occupancy_State &oState, double relax_val) {
+    double min_diff = 0; // min_diff <= 0
+    for(Tooth & tooth : this->teeth) {
+        double diff = this->_get_maxDiff(oState, tooth);
+        min_diff = min(min_diff, diff);
+    }
+    return relax_val + min_diff;
+}
+
+
+/// @brief The value v of an oState s w.r.t. a tooth is:
+///     v = Vrelax(s) + max_{jh} tooth_slope(jh) / s(jh)    with tooth_slope < 0
+double Sawtooth_Bound::_get_value(Occupancy_State & oState, double relax_val, Tooth & tooth){
+    return relax_val + this->_get_maxDiff(oState, tooth); 
+}
+
+
+/// @brief Maximum (ponderated) tooth slope.
+/// @return A value <= 0.
+double Sawtooth_Bound::_get_maxDiff(Occupancy_State & oState, Tooth & tooth){
+
+    bool use_compress = oState.is_compressed && tooth.oState.is_compressed;
+    
+    const auto & supps_proba = oState.get_supports_probas(use_compress);
+    const auto & tooth_supps_proba = tooth.oState.get_supports_probas(use_compress);
+
+    if (tooth_supps_proba.size() > supps_proba.size())
+        return 0;
+    
+    double min_ratio = INFINITY;
+    for (const auto & tooth_supp_proba: tooth_supps_proba){
+        auto supp_proba = supps_proba.find(tooth_supp_proba.first); 
+        if (supp_proba == supps_proba.end()){
+            ///@todo SEARCH IN LABELS ?????????
+            return 0;
+        }
+        else{
+            double ratio = supp_proba->second / tooth_supp_proba.second;
+            min_ratio = min(min_ratio, ratio);
+        }
+    }
+    return min_ratio * (tooth.value - tooth.relax_value);
+}
+
+
+/// @brief A tooth ta = (s_a, v_a) is point-dominated by a tooth tb,
+///     if the value of s_a w.r.t. tb is better than v_a.
+bool Sawtooth_Bound::_isPointDominated(Tooth & ta, Tooth & tb){
+    return ta != tb && this->_get_value(ta.oState, ta.oState.relax_value, tb) <= ta.value;
+}
+
+
+bool Sawtooth_Bound::_isPointDominated(Tooth & tooth, vector<Tooth> & toothCollection){
+
+    if (tooth.relax_value <= tooth.value)
+        return true;
+
+    for(Tooth & tooth2 : toothCollection) {
+        if(this->_isPointDominated(tooth, tooth2))
+            return true;
+    }
+
+    return false;
+}
+
+
+/// @brief Append a new tooth = a couple (oState, value) and prune teeth that this new one dominates.
+/// Warning: assume that this tooth is not dominated by any existing tooth (greedy selection should check that before).
+void Sawtooth_Bound::update(Occupancy_State & oState, double value, double relax_value) {
+    Tooth new_tooth = Tooth(oState, value, relax_value);
+    
+#if false // useless: update() should only be called if an improving value have been found during greedy selection
+    if (this->_isPointDominated(new_tooth, this->teeth)){
+	    return;
+    }
+#endif
+
+    //-- pruning (keep only teeth that are not dominated by the new one)
+    for (auto it = this->teeth.begin(); it != this->teeth.end(); ){
+        if(this->_isPointDominated(*it, new_tooth))
+            it = this->teeth.erase(it); // prune
+        else
+            it++;
+    }
+
+    //-- add the new tooth
+    this->teeth.push_back(new_tooth);
+}
+
+
+////////////////////////////////
+// Sawtooth_Bounds:
+// a collection of bounds (one for each time-step)
+////////////////////////////////
+
+Sawtooth_Bounds::Sawtooth_Bounds(){
+    if (!this->mdp_sol.solved)
+        this->mdp_sol.solve();
+}
+
+Sawtooth_Bounds::Sawtooth_Bounds(int horizon): Sawtooth_Bounds(){
+    this->bounds = vector<Sawtooth_Bound>(horizon + 1);
+}
+
+
+double Sawtooth_Bounds::_get_relax_value(Occupancy_State & oState){
+    return this->mdp_sol.get_value(oState);
+}
+
+
+const vector<Sawtooth_Bound> & Sawtooth_Bounds::get_bounds() const{
+    return this->bounds;
+}
+
+
+const vector<Tooth> & Sawtooth_Bounds::get_teeth(int tau) const{
+    return this->bounds.at(tau).teeth;
+}
+
+
+/// @brief The value of an oState is the best value w.r.t. the teeth (at corresponding time-step). 
+double Sawtooth_Bounds::get_value(Occupancy_State & oState){
+    int tau = oState.get_tau();
+    double relax_value = this->_get_relax_value(oState);
+    return this->bounds.at(tau).get_value(oState, relax_value);
+}
+
+
+void Sawtooth_Bounds::update(Occupancy_State & oState, double value){
+    int tau = oState.get_tau();
+    this->bounds.at(tau).update(oState, value, this->_get_relax_value(oState));
+}
+
+
+/// @brief Compute Qvalue(oState, drs), from Bellman evaluation:
+/// 1) Compute the successor oState_next.
+/// 2) Compute value = R(oState, drs) + \gamma V(oState_next).
+/// Main use: greedy selection with enumeration (i.e. evaluate each decision rules).
+pair<Occupancy_State, double> Sawtooth_Bounds::_eval_decisionRule(Occupancy_State & oState, Decision_Rule & decision_rule){
+    Occupancy_State oState_next;
+    double value;
+    bool last_action = (oState.get_step() >= SEARCH.horizon -1) && (oState.get_next_agent() == PROBLEM.last_agent);
+    if (last_action){
+        value = oState.get_expected_reward(decision_rule);
+    }
+    else{
+        oState_next = oState.do_step(decision_rule);
+        if (SEARCH.compress)
+            oState_next.compress();
+        value = oState.get_expected_reward(decision_rule) + PROBLEM.discount * this->get_value(oState_next);
+    }
+    return make_pair(oState_next, value);
+}
+
+
+/// @brief greedy search
+/// @return the pair: (the successor of oState applying the greedy decision rules, the upper bound value)
+pair<Occupancy_State, double> Sawtooth_Bounds::select_greedy(Occupancy_State & oState){
+    Occupancy_State oState_next;
+    double upper_value;
+
+double test;
+int teeth_number = this->bounds.at(oState.get_tau() + 1).teeth.size();
+ostringstream msg;
+    switch (SEARCH.solver_drs)
+    {
+    case enumeration:
+        tie(oState_next, upper_value) = this->_select_greedy_enum(oState);
+        break;
+    case milp:
+        //-- debug: compare milp solution vs enum
+        tie(oState_next, test) = this->_select_greedy_milp(oState);
+        upper_value = test;//tie(oState_next, upper_value) = this->_select_greedy_enum(oState);
+        // msg << "=====" 
+        //         << " agent " << oState.get_next_agent()
+        //         << " step " << oState.get_step()
+        //         << " teeth " << teeth_number
+        //         << " milp " << test 
+        //         << " enum " << upper_value << endl;
+        // if(abs(test - upper_value) < 1e-3)
+        //     utils::_print_color(utils::Colors::green, msg.str());
+        // else
+        //     utils::_print_color(utils::Colors::red, msg.str());
+        // assert(abs(test - upper_value) < 1e-3);
+        break;
+    default:
+        throw sdm_exception::Exception(sdm_exception::bad_joke, "Sawtooth_Bounds::select_greedy() unknown decision rules solver");
+        break;
+    }
+    
+    return make_pair(oState_next, upper_value);
+}
+
+
+/// @brief greedy search: decision_rules that maximize Q(oState, decision_rules)
+/// @return the pair: (the successor of oState applying the greedy decision rules, the upper bound value)
+pair<Occupancy_State, double> Sawtooth_Bounds::_select_greedy_enum(Occupancy_State & oState){
+    double greedy_value = -INFINITY;// init_value;
+    Occupancy_State greedy_oState_next;
+
+    int agent = oState.get_next_agent();
+
+    //-- compute decision rules
+    //--    We only use an agent decision rules,
+    //--    in contrast to the simultaneous case where the cartesian product of individual decision rules is enumerated.
+    vector<Decision_Rule> drs = VARIATIONS_GENERATOR.get_decision_rules(oState.get_iHistories(agent, oState.is_compressed),
+                                                                        PROBLEM.actions_number_byAgent[agent]);
+
+    //-- enumerate decision rules
+    for (Decision_Rule & decision_rule: drs){
+        //-- timeout ?
+        if (SEARCH.is_timeout())
+            throw sdm_exception::Exception(sdm_exception::timeout, "Sawtooth_Bounds::_select_greedy_enum()");
+        auto[oState_next, val_dr] = this->_eval_decisionRule(oState, decision_rule);
+        //-- greedy ?
+        if (val_dr > greedy_value){
+            greedy_value = val_dr;
+            greedy_oState_next = oState_next;
+        }
+    }
+    //-- compress
+    if (SEARCH.compress && !greedy_oState_next.is_compressed)
+        greedy_oState_next.compress();
+
+    return make_pair(greedy_oState_next, greedy_value);
+}
+
+
+pair<Occupancy_State, double> Sawtooth_Bounds::_select_greedy_milp(Occupancy_State & oState){
+    Sawtooth_Bound & bound_next = this->bounds.at(oState.get_tau() + 1);
+
+    Cplex_Sawtooth milp(oState, bound_next.teeth, this->mdp_sol);
+
+    //-- solve milp
+    double sol_value = milp.solve();
+    Decision_Rule sol_dr = milp.get_decisionRule(oState);
+    // milp.cplex.exportModel("sawtooth_cplex.lp");
+
+    //-- build oState_next
+    Occupancy_State oState_next = oState.do_step(sol_dr);
+    if (SEARCH.compress)
+        oState_next.compress();
+
+    return make_pair(oState_next, sol_value);    
+    
+}
+
+
+ostream &operator<<(ostream &os, const Sawtooth_Bounds &s){
+    cout << " *** Sawtooth_Bounds size :";
+    for (const auto & l: s.bounds){
+        os << l.size() << " ";
+    }
+    return os;
+}
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/sequential/value_representation/sawtooth.hpp b/code/src/decPOMDP/sequential/value_representation/sawtooth.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..e7b71a3165586d0819c660736b0a8239510076f8
--- /dev/null
+++ b/code/src/decPOMDP/sequential/value_representation/sawtooth.hpp
@@ -0,0 +1,94 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+#include "../occupancy_state.hpp"
+#include "mdp_solution.hpp"
+
+#include <unordered_map>
+
+namespace decPOMDP{
+namespace sequential{
+using namespace std;
+
+
+struct Tooth{
+    int id;
+    Occupancy_State oState;
+    double value;
+
+    unordered_map<Support, double> jhs_slope;  // memoization for sawtooth algorithm
+    double relax_value;
+    
+    Tooth(Occupancy_State &, double value, double relax_value);
+
+    bool operator==(const Tooth & other) const;
+    bool operator!=(const Tooth & other) const;
+    
+    friend ostream &operator<<(ostream &os, const Tooth &tooth);
+
+private:
+    static int ID (){
+       static int ID = 0;
+       return ID ++;
+    }
+
+};
+
+////////////////////////////////
+// Sawtooth_Bound:
+////////////////////////////////
+class Sawtooth_Bounds;
+
+class Sawtooth_Bound{
+
+    vector<Tooth> teeth;
+
+public:
+    Sawtooth_Bound();
+    
+    int size() const;
+
+    friend Sawtooth_Bounds;
+
+protected:
+    void update(Occupancy_State &, double value, double relax_val);
+    double get_value(Occupancy_State &, double relax_val);
+
+    double _get_value(Occupancy_State &, double relax_val, Tooth &);
+    double _get_maxDiff(Occupancy_State &, Tooth &);
+    bool _isPointDominated(Tooth &, vector<Tooth> &);
+    bool _isPointDominated(Tooth &, Tooth &);
+};
+
+
+////////////////////////////////
+// Sawtooth_Bounds:
+////////////////////////////////
+
+class Sawtooth_Bounds{
+    vector<Sawtooth_Bound> bounds; // a bound by time-step
+    MDP_Solution mdp_sol;
+
+public:
+    Sawtooth_Bounds();
+    Sawtooth_Bounds(int horizon);
+
+    double get_value(Occupancy_State &);
+    void update(Occupancy_State &, double value);
+    const vector<Sawtooth_Bound> & get_bounds() const;
+    const vector<Tooth> & get_teeth(int tau) const;
+
+    pair<Occupancy_State, double> select_greedy(Occupancy_State &);
+    
+protected:
+    double _get_relax_value(Occupancy_State &);
+    pair<Occupancy_State, double> _eval_decisionRule(Occupancy_State &, Decision_Rule &);
+    pair<Occupancy_State, double> _select_greedy_enum(Occupancy_State &);
+    pair<Occupancy_State, double> _select_greedy_milp(Occupancy_State &);
+    
+    
+    friend ostream &operator<<(ostream &os, const Sawtooth_Bounds &s);
+};
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/Astar.cpp b/code/src/decPOMDP/simultaneous/Astar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6af709d4227f46683561c9e1b678d25c44a6d36c
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/Astar.cpp
@@ -0,0 +1,157 @@
+#include "Astar.hpp"
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+///////////////////////
+// Node
+///////////////////////
+
+Node::Node(){}
+
+Node::Node(const Occupancy_State & oState, double rew_so_far, double rew_to_go):
+    oState(oState), rew_so_far(rew_so_far), rew_to_go(rew_to_go){}
+
+
+double Node::get_eval() const{
+    return this->rew_so_far + this->rew_to_go;
+}
+
+bool Node::is_terminal() const{
+    return this->oState.get_step() > SEARCH.horizon - 1;
+}
+
+bool Node::operator<(const Node & other) const{
+    return this->get_eval() < other.get_eval() + 1e-12 * this->oState.get_step();
+}
+
+ostream &operator<<(ostream &os, const Node & node){
+    os << "Node " << " step " << node.oState.get_step()
+        << " rew_so_far " << node.rew_so_far << " rew_to_go " << node.rew_to_go;
+    return os;
+}
+
+
+///////////////////////
+// Astar
+///////////////////////
+
+Astar::Astar(POMDP::HSVI * hsvi_pomdp):
+logger(SEARCH.log_filename, SEARCH.verbose),
+pomdp_sol(hsvi_pomdp){
+    //-- solve relaxed problem
+    this->mdp_sol.solve();
+
+    //-- init close lists
+    this->close_lists.resize(SEARCH.horizon + 1);
+    this->visited.resize(SEARCH.horizon + 1);
+
+    //-- init open list
+    Occupancy_State oState0(PROBLEM.belief_init);
+    Node node0(oState0, 0, this->_get_heuristic_value(oState0));
+    this->open_list.push(node0);
+}
+
+void Astar::solve(){
+    //-- verbose (solver info)
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:simultaneous:Astar:solve() ") << endl;
+    }
+
+    //-- initialize the logger
+    this->logger.write({"time", "step", "eval", "rew_so_far", "rew_to_go", "list size"});
+
+    SEARCH.start();
+
+    while (!this->open_list.empty()){
+        //-- next node
+        Node node;
+        int step;
+        do{
+            node = this->open_list.top();
+            step = node.oState.get_step();
+            this->open_list.pop();
+        }while(this->close_lists.at(step).find(node.oState) != this->close_lists.at(step).end());
+        this->_log(node);
+        if (node.is_terminal()){
+            break;
+        }
+        this->close_lists.at(step).insert(node.oState);
+
+        auto & oState = node.oState;
+        if (SEARCH.compress)
+            oState.compress();
+        double rew_so_far = node.rew_so_far;
+        double discount = pow(PROBLEM.discount, oState.get_step());
+
+        //-- compute decision rules
+        Decision_Rules_Enumeration drs_enum(PROBLEM.agents_number);
+        for (int agent: PROBLEM.agents){
+            drs_enum.add_agent(node.oState.get_iHistories(agent, oState.is_compressed), PROBLEM.actions_number_byAgent[agent]);
+        }
+        //-- enumerate decision rules
+        //-- => add useful nodes in the queue 
+        for (int i = 0; i < drs_enum.size; i++){
+            if (SEARCH.is_timeout())
+                throw sdm_exception::Exception(sdm_exception::timeout, "Astar::solve()");
+            vector<Decision_Rule> drs = drs_enum.get(i);
+            
+            //-- compute reward, oState_next
+            double reward = oState.get_expected_reward(drs);
+            double rew_so_far_next = rew_so_far + discount * reward;
+            Occupancy_State oState_next = oState.do_step(drs);
+            
+            //-- add node ?
+            if (this->_useful(oState_next, rew_so_far_next)){
+                Node node_next(oState_next, rew_so_far_next, this->_get_heuristic_value(oState_next));
+                this->open_list.push(node_next);
+                this->visited.at(step+1).emplace(oState_next, rew_so_far_next);
+            }          
+        }
+    }
+}
+
+
+double Astar::_get_heuristic_value(Occupancy_State & oState){
+    double value;
+    switch (SEARCH.relaxation)
+    {
+    case Relaxation::mdp:
+        value = this->mdp_sol.get_value(oState);
+        break;
+    case Relaxation::pomdp:
+        value = this->pomdp_sol.get_value(oState);
+        break;
+    default:
+        throw sdm_exception::Exception(sdm_exception::option, "unknown heuristic");
+        break;
+    }
+    return value;
+}
+
+
+bool Astar::_useful(Occupancy_State & oState, double reward_so_far) const{
+    int step = oState.get_step();
+    auto got = this->visited.at(step).find(oState);
+    if (got == this->visited.at(step).end())
+        return true;
+    return got->second < reward_so_far;
+}
+
+
+void Astar::_log(Node & node){
+    double time = SEARCH.get_time();
+
+    this->logger.write({
+                        to_string(time), 
+                        to_string(node.oState.get_step()),
+                        to_string(node.get_eval()),
+                        to_string(node.rew_so_far),
+                        to_string(node.rew_to_go),
+                        to_string(this->open_list.size())
+                        }, time);
+}
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/Astar.hpp b/code/src/decPOMDP/simultaneous/Astar.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..e6bccb4584eec2b6e3a883d8cfb47f6f65817aeb
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/Astar.hpp
@@ -0,0 +1,48 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/mdp_solution.hpp"
+#include "value_representation/pomdp_solution.hpp"
+
+#include <queue>
+
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+
+
+struct Node{
+    Occupancy_State oState;
+    double rew_so_far = 0; // sum of discounted rewards
+    double rew_to_go; // eval of future rewards
+    
+    Node();
+    Node(const Occupancy_State &, double rew_so_far, double rew_to_go);
+
+    double get_eval() const;
+    bool is_terminal() const;
+    bool operator<(const Node &) const;
+    friend ostream &operator<<(ostream &os, const Node &);
+};
+
+
+class Astar{
+    priority_queue<Node> open_list;
+    vector<unordered_set<Occupancy_State, oStateHash>> close_lists; // one list by time-step
+    vector<unordered_map<Occupancy_State, double, oStateHash>> visited; // mapping: oState -> rew_to_go
+    MDP_Solution mdp_sol;
+    POMDP_Solution pomdp_sol;
+    utils::Logger logger;
+public:
+    Astar(POMDP::HSVI *);
+    void solve();
+protected:
+    double _get_heuristic_value(Occupancy_State &);
+    bool _useful(Occupancy_State &, double reward_so_far) const;
+    void _log(Node &);
+};
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/HSVI.cpp b/code/src/decPOMDP/simultaneous/HSVI.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2024a02593c0eeb63161b6076412d302e128813e
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/HSVI.cpp
@@ -0,0 +1,130 @@
+#include "HSVI.hpp"
+
+#include <sstream>
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+HSVI::HSVI():
+    oState0(PROBLEM.belief_init),
+    lower_bounds(SEARCH.horizon),
+    upper_bounds(),
+    logger(SEARCH.log_filename, SEARCH.verbose){
+
+    //-- tolerance for each time step
+    this->width_tolerances.resize(SEARCH.horizon);
+    for (int step = 0; step < SEARCH.horizon; step++)
+        this->width_tolerances.at(step) = SEARCH.width_tolerance * pow(PROBLEM.discount, step);
+}
+
+
+/// @brief main public function
+void HSVI::solve(){
+
+    //-- verbose (solver info)
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:HSVI:solve() " + SOLVERS_DRS_STR[SEARCH.solver_drs]) << endl;
+    }
+
+    //-- initialize the logger
+    this->logger.write({"time", "iter", "L0 value", "U0 value", "gap0", "L sizes", "U sizes"});
+
+    //-- main loop
+    SEARCH.start();
+    int iter = 0;
+    this->_log(iter);
+    while(this->_getWidth(this->oState0) >= SEARCH.width_tolerance && iter++ < SEARCH.iter_max){
+        bool improved = this->_explore(this->oState0);
+        this->_log(iter);
+        if (!improved)
+            throw sdm_exception::Exception(sdm_exception::bad_joke, "decPOMDP:HSVI:solve() no improvement during last iteration");
+    }
+
+    //-- verbose (result info)
+    if (SEARCH.verbose){
+        double elapsed_time = SEARCH.get_time();
+        double final_gap = this->_getWidth(this->oState0);
+        ostringstream msg;
+        msg << "elapsed_time " << elapsed_time << " final gap " << final_gap << " iter " << iter << endl;
+        if (abs(final_gap) <= SEARCH.width_tolerance)
+            utils::_print_color(utils::Colors::green, msg.str());
+        else
+            utils::_print_color(utils::Colors::red, msg.str());
+    }
+}
+
+
+/// @brief print / store results
+void HSVI::_log(int iter){
+    
+    //-- prepare data to log
+    double lower_value = this->lower_bounds.get_value(&this->oState0);
+    double upper_value = this->upper_bounds.get_value(this->oState0);
+    ostringstream lower_stream;
+    for (auto const & bound: this->lower_bounds.lower_bounds)
+        lower_stream << bound.size() << " ";
+    ostringstream upper_stream;
+    for (auto const & bound: this->upper_bounds.get_bounds())
+        upper_stream << bound.size() << " ";
+
+    //-- log
+    this->logger.write({
+                        to_string(SEARCH.get_time()), 
+                        to_string(iter),
+                        to_string(lower_value),
+                        to_string(upper_value),
+                        to_string(upper_value - lower_value),
+                        lower_stream.str(),
+                        upper_stream.str()
+                        });
+}
+
+
+/// @brief HSVI (recurrent) exploration
+/// @return A boolean: whether a bound improvement has been made (lower or upper bound).
+bool HSVI::_explore(Occupancy_State & oState){
+    
+    //-- HSVI stopping criteria
+    int step = oState.get_step();
+    if (step == SEARCH.horizon)
+        return false;
+    double lower_init = this->lower_bounds.get_value(&oState);
+    double upper_init = this->upper_bounds.get_value(oState);
+    if (upper_init - lower_init < this->width_tolerances.at(step))
+        return false;
+
+    //-- greedy selection
+    auto [oState_next, upper_value] = this->upper_bounds.select_greedy(oState, lower_init, upper_init);    
+
+    //-- explore next-time step
+    bool improved = this->_explore(oState_next);
+
+    //-- update bounds
+    if (step < SEARCH.horizon - 1){ // re-evaluate upper bound. Useless for step = horizon - 1, as UB(horizon) = 0.
+        tie(std::ignore, upper_value) = this->upper_bounds.select_greedy(oState, lower_init, upper_value);
+    }
+    if (upper_value < upper_init){ // update upper bound. Useless if its evaluation was not improved.
+        this->upper_bounds.update(oState, upper_value);
+        improved = true;
+    }
+    if (upper_value - lower_init > this->width_tolerances.at(step)){ // update lower bound. Useless if tolerance is reached.
+        double lower_value = this->lower_bounds.at(step).update(&oState, lower_init);
+        if (lower_value > lower_init){
+            improved = true;
+        }
+    }
+    return improved;
+}
+
+
+/// @brief get the difference between lower/upper bounds evaluation
+double HSVI::_getWidth(Occupancy_State & oState){
+    double lower_value = this->lower_bounds.get_value(&oState);
+    double upper_value = this->upper_bounds.get_value(oState);
+    return upper_value - lower_value;
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/HSVI.hpp b/code/src/decPOMDP/simultaneous/HSVI.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..acd81baf2eae6fb42580ed180fffb42627085b7a
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/HSVI.hpp
@@ -0,0 +1,36 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/max_plane.hpp"
+#include "value_representation/sawtooth.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+
+    class HSVI {
+
+        Occupancy_State oState0; // initial oState (from initial belief)
+        vector<double> width_tolerances; // for each time-step (discounted)
+
+        //-- value representations
+        Hyperplane_LowerBounds lower_bounds;
+        Sawtooth_Bounds upper_bounds;
+
+        //-- log
+        utils::Logger logger;
+        
+    public:
+        HSVI();
+
+        void solve();
+
+    protected:
+        bool _explore(Occupancy_State &);
+        double _getWidth(Occupancy_State &);
+        void _log(int iter);
+    };
+
+}}
diff --git a/code/src/decPOMDP/simultaneous/HSVI_tabular.cpp b/code/src/decPOMDP/simultaneous/HSVI_tabular.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..b60c8e446965ef2847a36013ab9b8336b85f2b49
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/HSVI_tabular.cpp
@@ -0,0 +1,121 @@
+#include "HSVI_tabular.hpp"
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+
+
+/// @brief constructor
+HSVI_Tabular::HSVI_Tabular(): HSVI_Tabular_Base<Occupancy_State>(){
+    this->mdp_sol.solve();
+    
+    //--    initial lower bounds value
+    this->bounds.resize(SEARCH.horizon + 1);
+    this->pessimist_values.resize(SEARCH.horizon + 1);
+    auto [blind_action, blind_reward] = Decision_Rule::blind_heuristic();
+    double valueToGo_pessimist = 0;
+    for(int step = SEARCH.horizon; step >= 0; step--){           
+        this->pessimist_values.at(step) = valueToGo_pessimist;
+        valueToGo_pessimist = blind_reward + PROBLEM.discount * valueToGo_pessimist;
+    }
+
+    //-- tabular
+    this->bounds.resize(SEARCH.horizon + 1);    
+}
+
+
+/// @brief greedy search: decision_rules that maximize Q(oState, decision_rules).
+///     All possible decision rules are enumerated.
+///     For each one, the oState successor (oState_next) is evaluated: Vnext = get_bounds(oState_next).
+///     The decision rules with the larger Q value (Q = reward expectation + discount * Vnext) is greedy. 
+/// @return the pair: (greedy_oState_next, greedy bounds value)
+pair<Occupancy_State, Point_Bounds> HSVI_Tabular::_select_greedy(Occupancy_State & oState){
+    
+    //-- compute decision rules 
+    Decision_Rules_Enumeration drs_enum(PROBLEM.agents_number);
+    for (int agent: PROBLEM.agents){
+        drs_enum.add_agent(oState.get_iHistories(agent, SEARCH.compress), PROBLEM.actions_number_byAgent[agent]);
+    }
+
+    //-- enumerate decision rules
+    Occupancy_State greedy_oState_next;
+    Point_Bounds greedy_bounds(-INFINITY, -INFINITY);
+    double greedy_width = -INFINITY;
+
+    for (int i = 0; i < drs_enum.size; i++){
+
+        if (SEARCH.is_timeout()) 
+            throw sdm_exception::Exception(sdm_exception::timeout, "HSVI_Tabular::_select_greedy");
+        
+        vector<Decision_Rule> drs = drs_enum.get(i);
+        
+        //-- compute Q(oState, drs)
+        double reward = oState.get_expected_reward(drs);
+        Occupancy_State oState_next = oState.do_step(drs);
+        Point_Bounds V_next_bounds = this->get_bounds(oState_next);
+        double lower = reward + PROBLEM.discount * V_next_bounds.lower;
+        double upper = reward + PROBLEM.discount * V_next_bounds.upper;
+        
+        //-- greedy ?
+        if (upper > greedy_bounds.upper){
+            greedy_bounds.upper = upper;
+            greedy_oState_next = oState_next;
+        }
+        greedy_bounds.lower = max(greedy_bounds.lower, lower);
+    }
+
+    //-- compress
+    if (SEARCH.compress)
+        greedy_oState_next.compress();
+    
+    return make_pair(greedy_oState_next, greedy_bounds);
+}
+
+
+///////////////////////////
+// TABULAR
+// the tabular value function is represented by the mapping (this->bounds):
+// Occupancy_State -> Point_Bounds
+//////////////////////////
+
+/// @brief get the estimation of an oState value.
+/// 1) Looking for the value in the mapping: oStates -> value bounds
+/// 2) Return an initial value: 
+///      lower bound = pessimistic estimation from blind strategy;
+///      upper bound = optimistic estimation from relaxation solution.
+/// @return a Point_Bounds, i.e. two scalar values: lower/upper bounds.  
+Point_Bounds HSVI_Tabular::get_bounds(Occupancy_State &oState){
+
+    int step = oState.get_step();
+
+    //-- 1) stored in the mapping ?
+    auto got = this->bounds.at(step).find(oState);
+    if (got != this->bounds.at(step).end()){
+        return got->second;
+    }
+
+    //-- 2) initial value
+    return Point_Bounds(this->pessimist_values.at(step),
+                        this->_get_relaxation_value(oState));
+}
+
+
+void HSVI_Tabular::_set_bounds(Occupancy_State &oState, const Point_Bounds & point_bounds){
+    int step = oState.get_step();
+    this->bounds.at(step)[oState] = point_bounds;
+}
+
+
+///////////////////////////
+// RELAXATION:
+// upper-bound relaxation (MDP or POMDP)
+// optimistic evaluation of an oState
+//////////////////////////
+
+
+double HSVI_Tabular::_get_mdp_value(Occupancy_State & oState){
+    return this->mdp_sol.get_value(oState);
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/HSVI_tabular.hpp b/code/src/decPOMDP/simultaneous/HSVI_tabular.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..8fa1b4a587001b8bdea84451c4a4ab43d21663df
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/HSVI_tabular.hpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/mdp_solution.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+
+    class HSVI_Tabular: public HSVI_Tabular_Base<Occupancy_State>{
+        MDP_Solution mdp_sol;
+        
+    public:
+        HSVI_Tabular();
+
+        virtual Point_Bounds get_bounds(Occupancy_State &);
+
+    protected:
+
+        //-- tabular
+        virtual pair<Occupancy_State, Point_Bounds> _select_greedy(Occupancy_State &);
+        virtual void _set_bounds(Occupancy_State &, const Point_Bounds &);
+
+        //-- relaxation (MDP or POMDP)
+        virtual double _get_mdp_value(Occupancy_State &);
+
+    };
+
+
+}}
diff --git a/code/src/decPOMDP/simultaneous/_module.hpp b/code/src/decPOMDP/simultaneous/_module.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..a320eb397e722e9efe6bbe0b996f86251ff0fcaf
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/_module.hpp
@@ -0,0 +1,9 @@
+#pragma once
+
+
+#include "HSVI_tabular.hpp"
+#include "HSVI.hpp"
+#include "oSarsa.hpp"
+#include "Astar.hpp"
+#include "local_algorithms/_module.hpp"
+#include "tests_unitary/_module.hpp"
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/A2C/algorithm.cpp b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/algorithm.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..457f450fed21ac25d82a762fae4219cce14e4074
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/algorithm.cpp
@@ -0,0 +1,255 @@
+#include "algorithm.hpp"
+
+#include <cstring> 
+#include <algorithm>
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace A2C{
+    using namespace std;
+
+
+Episode::Episode(){
+    this->transitions.reserve(SEARCH.horizon);
+    this->supports_actor.reserve(SEARCH.horizon);
+    this->supports_critic.reserve(SEARCH.horizon);
+}
+
+void Episode::step(const Transition & transition, const Support & support_actor, const Support & support_critic){
+    assert(this->time_step == transition.step);
+
+    this->transitions.push_back(transition);
+    this->supports_actor.push_back(support_actor);
+    this->supports_critic.push_back(support_critic);
+
+    this->time_step++;
+    this->done = transition.done;
+    this->discount *= PROBLEM.discount;
+    this->sum_rewards += this->discount * transition.reward;
+}
+
+
+////////////////////
+// Critic
+////////////////////
+
+Critic::Critic(): container(SEARCH.horizon){}
+
+double Critic::get_value(int time_step, const Support & support) const{
+    const Support_Val_Map & values = this->container.at(time_step);
+    auto got = values.find(support);
+    if (got != values.end()){
+        return got->second;
+    }
+    return this->default_val;
+}
+
+void Critic::set_value(int time_step, const Support & support, double value){
+    this->container.at(time_step)[support] = value;
+}
+
+
+////////////////////
+// Actor_Critic
+////////////////////
+
+Actor_Critic::Actor_Critic():
+    lr_critic_start(SEARCH.lr_critic_start),
+    lr_actor_start(SEARCH.lr_actor_start),
+    actor(SEARCH.horizon, PROBLEM.agents_number),
+    critic(),
+    logger(SEARCH.log_filename, SEARCH.verbose){}
+
+void Actor_Critic::solve(){
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:A2C:solve() ") << endl;
+    }
+
+    SEARCH.start();
+    this->logger.write({"seed", "time", "episode", "value", "smooth_collect", "lr_actor", "lr_critic"});
+
+    Environment env;
+    static const int smooth_T = int(1e4); // a number of episodes
+    double log_period = SEARCH.timeout / 250.0; // in seconds
+    double rewards_smoothed = 0;
+
+    auto cos_annealing = [](double lr_start){
+        return lr_start / 2.0 * (cos(M_PI * ((int(SEARCH.get_time() + 1) - 1) % int(SEARCH.timeout + 1)) / SEARCH.timeout) + 1);
+    };
+    
+    for (int epoch = 1; !SEARCH.is_timeout(); epoch++){
+        this->lr_critic = cos_annealing(this->lr_critic_start);
+        this->lr_actor = cos_annealing(this->lr_actor_start);
+        
+        //-- run episode
+        Episode episode = this->_run_episode(env);
+
+        //-- update policy and values estimation
+        this->_update(episode);
+
+        //-- logger
+        rewards_smoothed += epoch == 1 ? episode.sum_rewards : (episode.sum_rewards - rewards_smoothed) / (double)smooth_T;
+        double time_sinceLastLog = this->logger.get_time_sinceLastWrite(SEARCH.get_time());
+        if (epoch == 1 || time_sinceLastLog > log_period){
+            this->_log(episode, epoch, rewards_smoothed);
+        }
+    }
+
+    //-- finalize
+    double time_elapsed = SEARCH.get_time();
+    cout << "time_elapsed " << time_elapsed << endl;
+}
+
+void Actor_Critic::_log(const Episode & episode, int epoch, double rewards_smoothed){
+    if (SEARCH.verbose >= utils::Verbose::high){
+        //-- initial value/policy
+        int time_step = 0;
+        const Transition & transition = episode.transitions.at(time_step);
+        const Support & support_actor = episode.supports_actor.at(time_step);
+        // const Support & support_critic = episode.supports_critic.at(time_step);
+        int joint_act = transition.joint_act;
+        vector<int> indivs_act = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, joint_act);
+        for (int agent = 0; agent < PROBLEM.agents_number; agent++){
+            Support iSupport = this->_get_iActor_support(agent, indivs_act, support_actor);
+            cout << "\t actor " << agent
+                << this->actor.get_decisionRule(time_step, agent).get_distrib(iSupport) 
+                << endl;
+        }
+    }
+    this->logger.write({to_string(SEARCH.seed),
+                        to_string(SEARCH.get_time()), 
+                        to_string(epoch),
+                        to_string(this->evaluate()),
+                        to_string(rewards_smoothed),
+                        to_string(this->lr_actor),
+                        to_string(this->lr_critic)},
+                        SEARCH.get_time());
+}
+
+Episode Actor_Critic::_run_episode(Environment & env){
+    //-- init the episode
+    env.reset();
+    Episode episode;
+    Support support_actor; // infos for actor
+    Support support_critic; // infos for critic
+
+    //-- run the episode
+    while (!episode.done){
+        //-- joint action
+        int joint_act = this->_actor_select(episode.time_step, support_actor);
+
+        //-- update critic info
+        support_critic = support_actor;
+        // support_critic.set_jAction(joint_act);
+        
+        //-- do environment step
+        Transition transition = env.step(joint_act);
+
+        //-- store transition
+        episode.step(transition, support_actor, support_critic);
+
+        //-- update actor info
+        support_actor.set_jObservation(transition.joint_obs);
+    }
+    return episode;
+}
+
+void Actor_Critic::_update(const Episode & episode){
+    double next_critic_value = 0;
+
+    for (int t = SEARCH.horizon -1; t >= 0; t-- ){
+        const Transition & transition = episode.transitions.at(t);
+        const Support & support_actor = episode.supports_actor.at(t);
+        const Support & support_critic = episode.supports_critic.at(t);
+
+        //-- Critic
+        double critic_value = this->critic.get_value(t, support_critic);
+        double TD_value = transition.reward + PROBLEM.discount * next_critic_value; 
+        double TD_error = TD_value - critic_value;
+        double new_critic_value = critic_value + this->lr_critic * TD_error;
+        this->critic.set_value(t, support_critic, new_critic_value);
+        next_critic_value = critic_value;
+        
+        //-- Actor: Update (individual) policies
+        double advantage = TD_value - new_critic_value;
+        int joint_act = transition.joint_act;
+        vector<int> indivs_act = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, joint_act);
+        for (int agent = 0; agent < PROBLEM.agents_number; agent++){
+            //-- find the agent action distribution (for the iHist associated with the support)
+            Decision_Rule_Softmax & decision_rule = this->actor.get_decisionRule(t, agent);
+            Support iSupport = this->_get_iActor_support(agent, indivs_act, support_actor);
+            Distribution_Softmax & distrib = decision_rule.get_distrib(iSupport);
+            //-- update the agent action distribution (softmax)
+            algebra::Vector activations = distrib.get_activations();
+            algebra::Vector gradient = distrib.get_logGradient(indivs_act.at(agent));
+            activations.array() += this->lr_actor * advantage * gradient.array();
+            distrib.set_activations(activations);
+        }
+    }
+}
+
+/// @brief Select joint_action from (individual) stochastic policies (actors). 
+/// @param time_step Episode time-step.
+/// @param support Contains infos required to take decision.
+/// @param greedy Whether sample / greedy.
+/// @return A joint action.
+int Actor_Critic::_actor_select(int time_step, const Support & support, bool greedy){
+    //-- sample individual actions from (stochastic) policy 
+    vector<int> indiv_actions(PROBLEM.agents_number, 0);
+    for (int agent = PROBLEM.agents_number - 1; agent >= 0; agent--){
+        Decision_Rule_Softmax & decision_rule = this->actor.get_decisionRule(time_step, agent);
+        Support iSupport = this->_get_iActor_support(agent, indiv_actions, support);
+        decision_rule.check_distrib(iSupport, PROBLEM.actions_number_byAgent[agent]);
+        if (greedy)
+            indiv_actions.at(agent) = decision_rule.greedy(iSupport);
+        else
+            indiv_actions.at(agent) = decision_rule.sample(iSupport);
+    }
+    //-- compute joint action
+    int joint_act = utils::get_jointIndex(indiv_actions, PROBLEM.actions_number_byAgent, PROBLEM.agents_number);
+    return joint_act;
+}
+
+/// @brief To take a decision, an agent i is informed of
+/// - observations history: o^{i:n} 
+Support Actor_Critic::_get_iActor_support(int agent, vector<int> indiv_actions, const Support & support){
+    Support iSupport(support.get_iHistory(agent)); // o^{i:n}
+    return iSupport;
+}
+
+
+/// @brief Exact evaluation (model-based).
+/// Use an occupancy state trajectory, following the agents policy,
+/// allowing an exact evaluation in one single pass.
+/// @return The value of V^{agent policies}(belief_init).
+double Actor_Critic::evaluate(){
+    double eval = 0; // result
+
+    Occupancy_State oState(PROBLEM.belief_init);
+    //-- oState trajectory
+    for (int step = 0; step < SEARCH.horizon; step++){    
+        
+        //-- greedy decision rules
+        vector<Decision_Rule> drs(PROBLEM.agents_number); 
+        const auto & supps_proba = oState.get_supports_probas(false);
+        for (const auto & supp_proba: supps_proba){
+            auto supp = supp_proba.first;
+            int joint_act = this->_actor_select(step, supp);
+            vector<int> indivs_act = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, joint_act);
+            for (int i = 0; i < PROBLEM.agents_number; i++){
+                drs.at(i).set_action(supp.get_iHistory(i), indivs_act.at(i));
+            }
+        }
+        
+        //-- expected rewards
+        eval += oState.get_expected_reward(drs);
+
+        //-- update oState
+        oState = oState.do_step(drs);
+    }
+
+    return eval;
+}
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/A2C/algorithm.hpp b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/algorithm.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..bdf7fc140c7bfb83824e2eba83125b6ed8efe361
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/algorithm.hpp
@@ -0,0 +1,84 @@
+#pragma once
+
+#include "environment.hpp"
+#include "decision_rule_stochastic.hpp"
+#include "../../occupancy_state.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace A2C{
+    using namespace std;
+
+
+//////////////////
+// Episode:
+//      Store an episode data. For each time-step:
+//          - a Transition = data returned by the environment (obs, reward, done).
+//          - data available for the critic (supports_critic)
+//          - data available for the actor, i.e. for the agents (supports_actor)
+//////////////////
+
+struct Episode{
+    vector<Transition> transitions;  // for each time-step
+    vector<Support> supports_actor; // for each time-step
+    vector<Support> supports_critic; // for each time-step
+
+    bool done = false;
+    int time_step = 0;
+    double sum_rewards = 0;
+    double discount = 1;
+
+    Episode();
+
+    void step(const Transition &, const Support & support_actor, const Support & support_critic);
+};
+
+
+//////////////////
+// Critic:
+//      Store estimations. Provide get/set methods.
+//////////////////
+
+struct Critic{
+    static constexpr double default_val = 0;
+
+    vector<unordered_map<Support, double>> container; // for each time_step, map: individual history -> value estimation
+
+    Critic();
+    double get_value(int time_step, const Support &) const;
+    void set_value(int time_step, const Support &, double value);
+};
+
+
+//////////////////
+// Actor_Critic:
+//      The algorithm to solve the problem.
+//////////////////
+
+class Actor_Critic{
+    double lr_critic_start, lr_critic;
+    double lr_actor_start, lr_actor;
+
+    Policy_Softmax actor;
+    Critic critic;
+    utils::Logger logger;
+    
+public:
+    Actor_Critic();
+    
+    void solve();
+    double evaluate(); // accurate evaluation on occupancy states
+    
+protected:
+    Episode _run_episode(Environment &);
+    void _update(const Episode &);
+    int _actor_select(int time_step, const Support &, bool greedy=false);
+    Support _get_iActor_support(int agent, vector<int> indiv_actions, const Support & support);
+    void _log(const Episode & episode, int epoch, double value);
+
+};
+
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/A2C/decision_rule_stochastic.cpp b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/decision_rule_stochastic.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2a0b5d5e9855e770af1bcc14e29d80b1c4b2f462
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/decision_rule_stochastic.cpp
@@ -0,0 +1,84 @@
+#include "decision_rule_stochastic.hpp"
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+
+
+const Distribution & Decision_Rule_Stochastic::get_distrib(const Support & support, int agent_actions_number){
+    auto got = this->action_map.find(support);
+    if (got != this->action_map.end()){
+        return got->second;
+    }
+    auto got_emplaced = this->action_map.emplace(support, Distribution(agent_actions_number));
+    return got_emplaced.first->second;
+}
+
+Distribution & Decision_Rule_Stochastic::get_distrib(const Support & support){
+    return this->action_map.at(support);
+}
+
+int Decision_Rule_Stochastic::sample(const Support & support, int agent_actions_number){
+    const Distribution & distrib = this->get_distrib(support, agent_actions_number);
+    return distrib.sample();
+}
+
+void Decision_Rule_Stochastic::set_distrib(const Support & support, const Distribution & distrib){
+    this->action_map[support] = distrib;
+}
+
+size_t Decision_Rule_Stochastic::size() const{
+    return this->action_map.size();
+}
+
+
+
+Policy_Stochastic::Policy_Stochastic(int horizon, int agents_number)
+    : action_map(vector<vector<Decision_Rule_Stochastic>>(horizon, vector<Decision_Rule_Stochastic>(agents_number))) {}
+
+Decision_Rule_Stochastic & Policy_Stochastic::get_decisionRule(int step, int agent){
+    return action_map.at(step).at(agent);
+}
+
+vector<Decision_Rule_Stochastic> & Policy_Stochastic::get_decisionRules(int step){
+    return action_map.at(step);
+}
+
+
+////////////////////////
+// Softmax
+////////////////////////
+
+void Decision_Rule_Softmax::check_distrib(const Support & support, int agent_actions_number){
+    auto got = this->action_map.find(support);
+    if (got == this->action_map.end()){
+        this->action_map.emplace(support, Distribution_Softmax(agent_actions_number));
+    }
+}
+
+Distribution_Softmax & Decision_Rule_Softmax::get_distrib(const Support & support){
+    return this->action_map.at(support);
+}
+
+int Decision_Rule_Softmax::sample(const Support & support){
+    return this->get_distrib(support).sample();
+}
+
+int Decision_Rule_Softmax::greedy(const Support & support){
+    return this->get_distrib(support).argmax();
+}
+
+
+Policy_Softmax::Policy_Softmax(int horizon, int agents_number)
+    : action_map(vector<vector<Decision_Rule_Softmax>>(horizon, vector<Decision_Rule_Softmax>(agents_number))) {}
+
+Decision_Rule_Softmax & Policy_Softmax::get_decisionRule(int step, int agent){
+    return action_map.at(step).at(agent);
+}
+
+vector<Decision_Rule_Softmax> & Policy_Softmax::get_decisionRules(int step){
+    return action_map.at(step);
+}
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/A2C/decision_rule_stochastic.hpp b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/decision_rule_stochastic.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..ce0a5f2c7a5b245d196308d8b6662f107b5e7d31
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/decision_rule_stochastic.hpp
@@ -0,0 +1,53 @@
+#include "../../../core/_module.hpp"
+
+#pragma once
+
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+
+/// @brief A stochastic decision rule,
+/// map: individual history -> distribution of action.
+struct Decision_Rule_Stochastic{
+    unordered_map<Support, Distribution> action_map; // map: individual history -> distribution of action
+
+    const Distribution & get_distrib(const Support &, int agent_actions_number);
+    Distribution & get_distrib(const Support &);
+    int sample(const Support &, int agent_actions_number);
+    void set_distrib(const Support &, const Distribution &);
+    size_t size() const;
+};
+
+/// @brief A multiagent stochastic policy,
+/// i.e. a stochastic decision rule for each time-step and for each agent.
+struct Policy_Stochastic{
+    vector<vector<Decision_Rule_Stochastic>> action_map; // decision_rules[step][agent]
+
+    Policy_Stochastic(int horizon, int agents_number);
+
+    Decision_Rule_Stochastic & get_decisionRule(int step, int agent);
+    vector<Decision_Rule_Stochastic> & get_decisionRules(int step);
+};
+
+
+struct Decision_Rule_Softmax{
+    unordered_map<Support, Distribution_Softmax> action_map; // map: individual history -> distribution of action
+
+    void check_distrib(const Support &, int agent_actions_number);
+    Distribution_Softmax & get_distrib(const Support &);
+    int sample(const Support &);
+    int greedy(const Support &);
+};
+
+struct Policy_Softmax{
+    vector<vector<Decision_Rule_Softmax>> action_map; // decision_rules[step][agent]
+
+    Policy_Softmax(int horizon, int agents_number);
+
+    Decision_Rule_Softmax & get_decisionRule(int step, int agent);
+    vector<Decision_Rule_Softmax> & get_decisionRules(int step);
+};
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/A2C/environment.cpp b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/environment.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fea63fb12ea5f7c1828038478587319d71fd7c72
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/environment.cpp
@@ -0,0 +1,98 @@
+#include "environment.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace A2C{
+    using namespace std;
+
+Transition::Transition(int joint_act, int joint_obs, double reward, bool done, int step):
+    joint_act(joint_act), joint_obs(joint_obs), reward(reward), done(done), step(step){}
+
+
+Environment::Environment(){
+    this->reset();
+}
+
+/// @brief gym-like: initialize a new episode
+/// BUT don't return an observation (observation are only returned after an action)
+void Environment::reset(){
+    this->state = Distribution(PROBLEM.belief_init).sample();
+    this->time_step = 0;
+}
+
+/// @brief gym-like: process a time-step, return <obs, reward, done>
+/// @param joint_action: an action number to apply
+/// @return a Transition, i.e. a structure with joint_obs, reward, done, etc.
+Transition Environment::step(int joint_action){
+    //-- reward
+    double reward = PROBLEM.rewards_matrix(this->state, joint_action);
+
+    //-- apply (stochastic) dynamics: new state, obs
+    const auto &reachables = PROBLEM.reachables_from_x_u[this->state][joint_action];
+    Vector probas(reachables.size());
+    int index = 0;
+    for (const auto & reachable: reachables){
+        probas[index++] =  reachable.proba;
+    }
+    Distribution distrib(probas);
+    const auto & reached = reachables.at(distrib.sample());
+    this->state = reached.y;
+    int joint_obs = reached.joint_obs;
+
+    //-- finalize
+    this->time_step++;
+    return Transition(joint_action, joint_obs, reward, this->_done(), this->time_step - 1);
+}
+
+/// @brief gym-like: print informations about the current state
+void Environment::render() const{
+    cout << "==== Environment render: "
+        << "step " << this->time_step << " / " << SEARCH.horizon             
+        << endl;
+    bool state_name_exists = (int)PROBLEM.states_name.size() > this->state;
+    if (state_name_exists)
+        cout << "state: " << PROBLEM.states_name.at(this->state);
+    else
+        cout << "state: " << this->state;
+    cout << endl;
+}
+
+int Environment::sample_action()const{
+    Distribution distrib(PROBLEM.actions_joint_number);
+    return distrib.sample();
+}
+
+bool Environment::_done() const{
+    return this->time_step >= SEARCH.horizon;
+}
+
+void Environment::demo(){
+    //-- init episode
+    Environment env;
+    env.reset();
+    bool done = false;
+    double sum_rewards = 0;
+
+    //-- run an episode
+    while (!done){
+        //-- sample action (random)
+        int joint_act = env.sample_action();
+        
+        //-- do step
+        Transition transition = env.step(joint_act);
+        done = transition.done;
+        
+        //-- verbose
+        sum_rewards += transition.reward;
+        env.render();
+        cout << "joint_action " << joint_act 
+                << " reward " << transition.reward 
+                << " joint_observation " << transition.joint_obs
+                << endl;
+    }
+    cout << "sum_rewards " << sum_rewards << endl;
+}
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/A2C/environment.hpp b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/environment.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..9a2a2d46ef93173546d28aa5c563fbde203172b6
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/A2C/environment.hpp
@@ -0,0 +1,48 @@
+/////////////////
+///@brief:
+// Wrap the decPOMDP problem into a gym-like environment:
+// - main methods: reset(), step(), render()
+/////////////////
+#include "../../../core/_module.hpp"
+
+#pragma once
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace A2C{
+    using namespace std;
+
+struct Transition{
+    int joint_act;
+    int joint_obs;
+    double reward;
+    bool done;
+    int step;
+
+    Transition(int joint_act, int joint_obs, double reward, bool done, int step);
+};
+
+class Environment{
+    int state;
+    int time_step;
+
+public:
+    //-- constructor
+    Environment();
+
+    //-- gym like methods
+    void reset();
+    Transition step(int joint_action);
+    void render() const;
+
+    int sample_action()const;
+
+    //-- debug
+    static void demo();
+
+protected:
+    bool _done() const;
+};
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/IQL/algorithm.cpp b/code/src/decPOMDP/simultaneous/local_algorithms/IQL/algorithm.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9dba1c5856075c4fe7ebcac7b6190005b6a00e8c
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/IQL/algorithm.cpp
@@ -0,0 +1,276 @@
+#include "algorithm.hpp"
+
+#include <cstring> 
+#include <algorithm>
+
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace IQL{
+    using namespace std;
+
+
+////////////////////
+// Episode
+////////////////////
+
+Episode::Episode(){
+    this->transitions.reserve(SEARCH.horizon);
+    this->iHists.resize(PROBLEM.agents_number);
+}
+
+void Episode::step(const Transition & transition){
+    assert(this->t == transition.step);
+    this->transitions.push_back(transition);
+    
+    this->iHists = transition.iHists;
+    this->t++;
+    this->done = transition.done;
+    this->discount *= PROBLEM.discount;
+    this->sum_rewards += this->discount * transition.reward;
+}
+
+
+////////////////////
+// Agent
+////////////////////
+
+Agent::Agent(int agent_num):
+    Qvalues(SEARCH.horizon),
+    agent_num(agent_num){
+}
+
+float Agent::get_Qvalue(int t, Support iHist, int action) const{
+    iHist.set_jAction(action);
+    const auto & Qvalues = this->Qvalues.at(t);
+    auto got = Qvalues.find(iHist);
+    return got != Qvalues.end() ? got->second : this->default_val;
+}
+
+void Agent::set_Qvalue(int t, Support iHist, int action, float value){
+    iHist.set_jAction(action);
+    this->Qvalues.at(t)[iHist] = value;
+}
+
+/// @brief Find the greedy action for a given indiv history.
+/// @param t Time-step.
+/// @param iHist Individual History. 
+/// @return The pair <action, value>.
+pair<int, float> Agent::get_greedy(int t, const Support & iHist) const{
+    pair<int, float> greedy(-1, -INFINITY); // result
+    //-- iterate on indiv actions
+    int actions_number = PROBLEM.actions_number_byAgent[agent_num];
+    for (int iu = 0; iu < actions_number; iu++){
+        float val = this->get_Qvalue(t, iHist, iu);
+        if (val > greedy.second){ // greedy ?
+            greedy = make_pair(iu, val);
+        }
+    }
+    return greedy;
+}
+
+
+/// @brief Fill the map: iHist -> iAction 
+/// for each iHist of oState. 
+/// @param oState 
+/// @return 
+Decision_Rule Agent::select_decisionRule(Occupancy_State & oState){
+    Decision_Rule dr; // result
+
+    int t = oState.get_step();
+    bool use_compress = false;
+    Support_Set iHists_set = oState.get_iHistories(this->agent_num, use_compress);
+    for (const auto & iHist: iHists_set){
+        auto [action, Qvalue] = this->get_greedy(t, iHist);
+        dr.set_action(iHist, action);
+    }
+    return dr;
+}
+
+////////////////////
+// IndependentLearning
+////////////////////
+
+IndependentLearning::IndependentLearning():
+    lr_critic_start(SEARCH.lr_critic_start),
+    epsilon_start(SEARCH.epsilon_start),
+    logger(SEARCH.log_filename, SEARCH.verbose){
+
+    //-- build agents
+    this->agents.reserve(PROBLEM.agents_number);
+    for (int i = 0; i < PROBLEM.agents_number; i++){
+        this->agents.push_back(Agent(i));
+    }
+}
+
+
+void IndependentLearning::solve(){
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:IQL:solve() ") << endl;
+    }
+
+    SEARCH.start();
+    this->logger.write({"seed", "time", "episode", "value", "smooth_collect", "lr_critic", "epsilon"});
+    
+
+    Environment env;
+    static const int smooth_T = int(5e3); // a number of episodes
+    double log_period = SEARCH.timeout / 250.0; // in seconds
+    float rewards_smoothed = 0;
+
+    // auto cos_annealing = [](float lr_start){
+    //     return lr_start / 2.0 * (cos(M_PI * ((int(SEARCH.get_time() + 1) - 1) % int(SEARCH.timeout + 1)) / SEARCH.timeout) + 1);
+    // };
+
+    auto lin_annealing = [](float lr_start){
+        return lr_start * (1 - SEARCH.get_time() / SEARCH.timeout);
+    };
+    
+    //-- iterations of: 1) run episode 2) update Qvalues
+    for (int epoch = 1; !SEARCH.is_timeout(); epoch++){
+        //-- learning-rate and epsilon update
+        this->lr_critic = lin_annealing(this->lr_critic_start);
+        this->epsilon = lin_annealing(this->epsilon_start);
+        if (SEARCH.get_time() > .9 * SEARCH.timeout)
+            this->epsilon = 0;
+
+        //-- 1) run episode
+        Episode episode = this->_run_episode(env);
+
+        //-- 2) update Qvalues
+        this->_update_Qvalues(episode);
+
+        //-- log
+        rewards_smoothed += epoch == 1 ? episode.sum_rewards : (episode.sum_rewards - rewards_smoothed) / (float)smooth_T;
+        double time_sinceLastLog = this->logger.get_time_sinceLastWrite(SEARCH.get_time());
+        if (epoch == 1 || time_sinceLastLog > log_period){
+            this->_log(epoch, rewards_smoothed);
+        }
+    }
+}
+
+
+Episode IndependentLearning::_run_episode(Environment & env){
+    //-- init the episode
+    env.reset();
+    Episode episode;
+
+    //-- run the episode
+    while (!episode.done){
+        //-- select joint action (epsilon-greedy)
+        int joint_act = -1;
+        bool greedy = this->epsilon < utils::fast_calc::rand();
+        if (greedy){
+            //-- agents individual selection
+            vector<int> indiv_actions(PROBLEM.agents_number);
+            for (int i = 0; i < PROBLEM.agents_number; i++){
+                const auto agent = this->agents.at(i);
+                const auto iHist = env.get_iHist(i);
+                tie(indiv_actions.at(i), std::ignore) = agent.get_greedy(episode.t, iHist);
+            }
+            joint_act = utils::get_jointIndex(indiv_actions, PROBLEM.actions_number_byAgent , PROBLEM.agents_number);
+        }
+        else{
+            //-- random
+            joint_act = utils::fast_calc::rand_range(PROBLEM.actions_joint_number);
+        }
+        //-- do environment step
+        Transition transition = env.step(joint_act);
+
+        //-- store transition
+        episode.step(transition);
+    }
+
+    return episode;
+}
+
+
+void IndependentLearning::_update_Qvalues(const Episode & episode){
+    vector<float> Vnext(PROBLEM.agents_number, 0); // for TD error
+    for (int t = SEARCH.horizon -1; t >= 0; t-- ){
+        const auto & transition = episode.transitions.at(t);
+        vector<int> indivs_act = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, transition.joint_act);
+        //-- update agents individually
+        for (int i = 0; i < PROBLEM.agents_number; i++){
+            auto & agent = this->agents.at(i);
+            const auto & iHist = transition.iHists.at(i);
+            int indiv_act = indivs_act.at(i);
+            //-- compute new Q value
+            float Qvalue = agent.get_Qvalue(t, iHist, indiv_act);
+            float TD_value = transition.reward + PROBLEM.discount * Vnext.at(i);
+            Qvalue += this->lr_critic * (TD_value - Qvalue);
+            //-- set Q value
+            agent.set_Qvalue(t, iHist, indiv_act, Qvalue);
+            //-- Vnext
+            tie(std::ignore, Vnext.at(i)) = agent.get_greedy(t, iHist);
+        }
+    }
+}
+
+
+void IndependentLearning::_log(int epoch, float rewards_smoothed){
+    this->logger.write({to_string(SEARCH.seed),
+                        to_string(SEARCH.get_time()), 
+                        to_string(epoch),
+                        to_string(this->evaluate()),
+                        to_string(rewards_smoothed),
+                        to_string(this->lr_critic),
+                        to_string(this->epsilon)},
+                        SEARCH.get_time());
+}
+
+
+/// @brief Exact evaluation (model-based).
+/// Use an occupancy state trajectory, following the agents policy,
+/// allowing an exact evaluation in one single pass.
+/// @return The value of V^{agent policies}(belief_init).
+float IndependentLearning::evaluate(){
+    float eval = 0; // result
+
+    Occupancy_State oState(PROBLEM.belief_init);
+    //-- oState trajectory
+    for (int step = 0; step < SEARCH.horizon; step++){    
+        //-- greedy decision rules
+        vector<Decision_Rule> drs(PROBLEM.agents_number); 
+        for (int i = 0; i < PROBLEM.agents_number; i++){
+            drs.at(i) = this->agents.at(i).select_decisionRule(oState);
+        }
+        //-- expected rewards
+        eval += oState.get_expected_reward(drs);
+
+        //-- update oState
+        oState = oState.do_step(drs);
+    }
+
+    /*Environment env(SEARCH.horizon);
+    int N = 1000;
+    for (int epoch = 1; epoch < N; epoch++){
+        //-- init the episode
+        env.reset();
+        Episode episode(horizon);
+        //-- run the episode
+        while (!episode.done){
+            //-- select joint action (epsilon-greedy)
+            int joint_act = -1;
+            //-- agents individual selection
+            vector<int> indiv_actions(PROBLEM.agents_number);
+            for (int i = 0; i < PROBLEM.agents_number; i++){
+                const auto & agent = this->agents.at(i);
+                const auto & iHist = env.iHists.at(i);
+                tie(indiv_actions.at(i), std::ignore) = agent.get_greedy(env.t, iHist);
+            }
+            joint_act = utils::get_jointIndex(indiv_actions, PROBLEM.actions_number_byAgent , PROBLEM.agents_number);
+            //-- do environment step
+            Transition transition = env.step(joint_act);
+            //-- store transition
+            episode.step(transition);
+        }
+        eval += episode.sum_rewards / (float)N;
+    }*/
+
+
+    return eval;
+}
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/IQL/algorithm.hpp b/code/src/decPOMDP/simultaneous/local_algorithms/IQL/algorithm.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..2524d95b0d1917385746d2046e7da3fcb18e63bb
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/IQL/algorithm.hpp
@@ -0,0 +1,72 @@
+#pragma once
+
+#include "environment.hpp"
+#include "../../occupancy_state.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace IQL{
+    using namespace std;
+
+
+/// @brief Episode: Store an episode data. For each time-step:
+//          a Transition = data returned by the environment (obs, reward, done, etc.).
+struct Episode{
+    vector<Transition> transitions;  // for each time-step
+    vector<Support> iHists; // data available for the agents for current time-step
+
+    bool done = false;
+    int t = 0;
+    float sum_rewards = 0;
+    float discount = 1;
+
+    Episode();
+
+    void step(const Transition &);
+};
+
+
+/// @brief Agent: maintain individual Qvalues(indiv history, indiv action).
+/// During execution, given an indiv history, agent select greedily an indiv action (w.r.t. Qvalues).
+class Agent{
+    static constexpr float default_val = 0; // value for an unknown iHistory
+    vector<Support_Val_Map> Qvalues; // for each time_step, map: <indiv history, indiv action> -> Qvalue
+    int agent_num;
+
+public:
+    Agent(int agent_num);
+
+    //-- Q values
+    float get_Qvalue(int time_step, Support iHist, int action) const;
+    void set_Qvalue(int time_step, Support iHist, int action, float value);
+
+    //-- action selection
+    pair<int, float> get_greedy(int time_step, const Support & iHist) const;
+    Decision_Rule select_decisionRule(Occupancy_State &);
+};
+
+
+class IndependentLearning{
+    float lr_critic_start, lr_critic;
+    float epsilon, epsilon_start;
+
+    vector<Agent> agents;
+    int horizon; // problem time-step horizon
+    utils::Logger logger;
+    
+public:
+    IndependentLearning();
+    
+    void solve(); // main function
+    float evaluate(); // accurate evaluation on occupancy states
+    
+protected:
+    Episode _run_episode(Environment &);
+    void _update_Qvalues(const Episode &);
+    void _log(int epoch, float value);
+
+};
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/IQL/environment.cpp b/code/src/decPOMDP/simultaneous/local_algorithms/IQL/environment.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..efe8801c2a278681044bb63799f94d32f6e42991
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/IQL/environment.cpp
@@ -0,0 +1,111 @@
+#include "environment.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace IQL{
+    using namespace std;
+
+Transition::Transition(int joint_act, int joint_obs, double reward, bool done, int step, const vector<Support> & iHists):
+    joint_act(joint_act), joint_obs(joint_obs), reward(reward), done(done), step(step), iHists(iHists){}
+
+
+Environment::Environment(){
+    this->reset();
+}
+
+/// @brief gym-like: initialize a new episode
+/// BUT don't return an observation (observation are only returned after an action)
+void Environment::reset(){
+    this->state = Distribution(PROBLEM.belief_init).sample();
+    this->time_step = 0;
+    this->iHists = vector<Support>(PROBLEM.agents_number);
+    Support empty;
+    this->jHist = empty;
+}
+
+/// @brief gym-like: process a time-step, return <obs, reward, done>
+/// @param joint_action: an action number to apply
+/// @return a Transition, i.e. a structure with joint_obs, reward, done, etc.
+Transition Environment::step(int joint_action){
+    //-- reward
+    double reward = PROBLEM.rewards_matrix(this->state, joint_action);
+
+    //-- apply (stochastic) dynamics: new state, obs
+    const auto &reachables = PROBLEM.reachables_from_x_u[this->state][joint_action];
+    Vector probas(reachables.size());
+    int index = 0;
+    for (const auto & reachable: reachables){
+        probas[index++] =  reachable.proba;
+    }
+    Distribution distrib(probas);
+    const auto & reached = reachables.at(distrib.sample());
+    this->state = reached.y;
+    int joint_obs = reached.joint_obs;
+
+    //-- finalize
+    this->time_step++;
+    Transition transition(joint_action, joint_obs, reward, this->_done(), this->time_step - 1, this->iHists);
+    //--    update individual histories iHists, i.e. infos available for agents
+    this->jHist.set_jObservation(joint_obs); // helpful to update iHists
+    for (int i = 0; i < PROBLEM.agents_number; i++){
+        this->iHists.at(i) = this->jHist.get_iHistory(i);
+    }
+    return transition;
+}
+
+/// @brief gym-like: print informations about the current state
+void Environment::render() const{
+    cout << "==== Environment render: "
+        << "step " << this->time_step << " / " << SEARCH.horizon             
+        << endl;
+    bool state_name_exists = (int)PROBLEM.states_name.size() > this->state;
+    if (state_name_exists)
+        cout << "state: " << PROBLEM.states_name.at(this->state);
+    else
+        cout << "state: " << this->state;
+    cout << endl;
+}
+
+Support Environment::get_iHist(int agent) const{
+    return this->iHists.at(agent);
+}
+
+int Environment::sample_action() const{
+    Distribution distrib(PROBLEM.actions_joint_number);
+    return distrib.sample();
+}
+
+bool Environment::_done() const{
+    return this->time_step >= SEARCH.horizon;
+}
+
+void Environment::demo(){
+    //-- init episode
+    Environment env;
+    env.reset();
+    bool done = false;
+    double sum_rewards = 0;
+
+    //-- run an episode
+    while (!done){
+        //-- sample action (random)
+        int joint_act = env.sample_action();
+        
+        //-- do step
+        Transition transition = env.step(joint_act);
+        done = transition.done;
+        
+        //-- verbose
+        sum_rewards += transition.reward;
+        env.render();
+        cout << "joint_action " << joint_act 
+                << " reward " << transition.reward 
+                << " joint_observation " << transition.joint_obs
+                << endl;
+    }
+    cout << "sum_rewards " << sum_rewards << endl;
+}
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/IQL/environment.hpp b/code/src/decPOMDP/simultaneous/local_algorithms/IQL/environment.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..4ffe7515fc002b5c1f9caf49dfed6ef3a4f2cbfd
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/IQL/environment.hpp
@@ -0,0 +1,52 @@
+/////////////////
+///@brief:
+// Wrap the decPOMDP problem into a gym-like environment:
+// - main methods: reset(), step(), render()
+/////////////////
+#include "../../../core/_module.hpp"
+
+#pragma once
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace IQL{
+    using namespace std;
+
+struct Transition{
+    int joint_act;
+    int joint_obs;
+    double reward;
+    bool done;
+    int step;
+    vector<Support> iHists; // data available for the agents for current time-step t
+
+    Transition(int joint_act, int joint_obs, double reward, bool done, int step, const vector<Support> & iHists);
+};
+
+class Environment{
+    int state;
+    int time_step;
+    vector<Support> iHists; // iHists[agent]: sequences of individual observations
+    Support jHist;
+
+public:
+    //-- constructor
+    Environment();
+
+    //-- gym like methods
+    void reset();
+    Transition step(int joint_action);
+    void render() const;
+    int sample_action()const;
+
+    Support get_iHist(int agent) const; 
+
+    //-- debug
+    static void demo();
+
+protected:
+    bool _done() const;
+};
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/local_algorithms/_module.hpp b/code/src/decPOMDP/simultaneous/local_algorithms/_module.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..10ecc9221fbba30a8781514ef117dad8a67b1755
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/local_algorithms/_module.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+#include "A2C/algorithm.hpp"
+#include "IQL/algorithm.hpp"
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/oSarsa.cpp b/code/src/decPOMDP/simultaneous/oSarsa.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..89cfa867565a237eefd2bac889ee14c0cfe0064e
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/oSarsa.cpp
@@ -0,0 +1,522 @@
+#include "oSarsa.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+oSarsa::oSarsa():
+    oState0(PROBLEM.belief_init),
+    policy(SEARCH.horizon, PROBLEM.agents_number),
+    final_policy(policy),
+    Qfunctions(SEARCH.horizon),
+    reachable_sets(SEARCH.horizon),
+    logger(SEARCH.log_filename, SEARCH.verbose){
+
+    //-- solve the MDP (for heuristic selection of decision-rules)
+    this->mdp_sol.solve();
+    
+    //-- blind actions (for heuristic selection of decision-rules)
+    int default_jAction;
+    tie(default_jAction, std::ignore) = Decision_Rule::blind_heuristic();
+    this->blind_actions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, default_jAction);
+}
+
+
+/// @brief main public function
+void oSarsa::solve(){
+
+    //-- verbose (solver info)
+    if (SEARCH.verbose){
+        cout << utils::get_solver_repr("decPOMDP:oSarsa:solve() ") << endl;
+    }
+
+    //-- initialize the algo
+    this->logger.write({"time", "iter", "value", "estim", "best", "Q sizes", "epsilon"});
+    this->_set_reachables();
+    SEARCH.start();
+    this->_init_policy();
+    this->_update_Q();
+    
+    if (SEARCH.verbose >= 10){ // debug
+        cout << "POLICY init " << endl << this->policy << endl;
+        cout << "Q_VALUES" << endl;
+        for (int step = 0; step < SEARCH.horizon; step++){
+            cout << "=== step " << step << endl;
+            cout << this->Qfunctions.at(step).get_repr(step);
+        }
+    }
+
+    //-- main loop
+    this->_log(0);
+    double log_period = SEARCH.timeout / 250.0; // in seconds
+    int iter = 1;
+    while(!SEARCH.is_timeout()){
+        this->epsilon = this->_get_epsilon(iter);
+        this->temperature = this->_get_temperature(this->epsilon);
+        this->_update_policy();
+        this->_update_Q();
+
+        //-- log
+        double time_sinceLastLog = this->logger.get_time_sinceLastWrite(SEARCH.get_time());
+        if (iter == 1 || time_sinceLastLog > log_period){
+            this->_log(iter);
+        }
+        iter++;
+    }
+
+    //-- debug
+    if (SEARCH.verbose >= 10)
+        cout << "POLICY finale" << endl << this->final_policy << endl;
+}
+
+
+/// @brief Build initial policy, and initial trajectory.
+void oSarsa::_init_policy(){
+    Policy new_policy(SEARCH.horizon, PROBLEM.agents_number);
+    
+    for (int i = 0; i < 2; i++){
+        if (i > 0 && !SEARCH.use_portfolio)
+            break;
+        auto oState = this->oState0;
+        double R_sum = 0;
+        for (int step = 0; step < SEARCH.horizon; step++){
+            auto & jdr = new_policy.get_joint_decisionRule(step);
+
+            //-- select the decision rule
+            if (i == 0)
+                jdr = this->_select_blind(oState);
+            else
+                jdr = this->_select_MDP(oState);
+
+            jdr.set_default_actions(this->blind_actions);
+            this->_extend_jointDecisionRule_LPE(jdr, oState);
+
+            //-- update R_sum, oState
+            double discount = pow(PROBLEM.discount, step);
+            R_sum += discount * oState.get_expected_reward(jdr);
+            if (step < SEARCH.horizon - 1){
+                oState.is_compressed = false; // in order to maintain uncompressed support (and not just one-step uncompressed)
+                oState = oState.do_step(jdr);
+                if (SEARCH.compress)
+                    oState.compress();
+            }
+        }
+        if (R_sum > this->final_eval){
+            this->final_eval = R_sum;
+            this->policy = new_policy;
+        }
+    }
+
+    this->improved_last_step = SEARCH.horizon - 1;
+    this->final_policy = this->policy;
+}
+
+
+/// @brief For each time-step, select epsilon-greedy decision rules.
+/// If cumulative rewards along the trajectory is better than current_eval,
+/// then update this->policy.
+void oSarsa::_update_policy(){    
+    Policy new_policy(SEARCH.horizon, PROBLEM.agents_number);
+    double R_sum = 0; // sum of expected rewards along the trajectory
+
+    double current_eval = this->_get_Qvalue(this->oState0, this->policy.get_joint_decisionRule(0));
+    double best_eval = current_eval;
+
+    this->improved_last_step = -1;
+    auto oState = this->oState0;
+    for (int step = 0; step < SEARCH.horizon; step++){
+        if (SEARCH.is_timeout())
+            throw sdm_exception::Exception(sdm_exception::timeout, "_update_policy");
+        double discount = pow(PROBLEM.discount, step);
+        
+        //-- select joint decision rule
+        Joint_DecisionRule jdr = this->_select_epsilon_greedy(oState, this->epsilon);
+        
+        //-- update R_sum, new_policy, oState
+        R_sum += discount * oState.get_expected_reward(jdr);
+        new_policy.get_joint_decisionRule(step) = jdr;
+        if (step < SEARCH.horizon - 1){
+            oState.is_compressed = false; // in order to maintain uncompressed support (and not just one-step uncompressed)
+            oState = oState.do_step(jdr);
+            if (SEARCH.compress)
+                oState.compress();
+        }
+
+        //-- evaluate
+        double new_eval =  R_sum;
+        if (step < SEARCH.horizon -1){
+            new_eval += discount * PROBLEM.discount * this->_get_Qvalue(oState, this->policy.get_joint_decisionRule(step + 1));
+        }
+
+        //-- improved (or "simulated annealing" criterion) ?
+        double diff_eval = new_eval - best_eval;
+        if (diff_eval > 1e-6){
+            this->improved_last_step = step;
+            best_eval = new_eval;
+        }
+        else if (this->_accept_decrease(-diff_eval)){ // simulated annealing criterion
+            this->improved_last_step = step;
+        }
+    }
+
+    //-- policy improved ?
+    if (this->improved_last_step >= 0){
+        //-- copy the new_policy plan, i.e. actions for all <x,o> met in the new_trajectory
+        //--    but keep policy actions for <x,o> met on previous trajectories that are not met in new_trajectory
+        for (int step = 0; step <= this->improved_last_step; step++){
+            for (int agent: PROBLEM.agents){
+                auto & dr = this->policy.get_decisionRule(step, agent);
+                auto & new_dr = new_policy.get_decisionRule(step, agent);
+                for (auto & ih_iu: new_dr.iHist_action_map){
+                    dr.set_action(ih_iu.first, ih_iu.second);
+                }
+            }
+        }
+    }
+
+    this->improved = best_eval > this->final_eval;
+    if (this->improved){
+        this->final_eval = best_eval;
+        this->final_policy = this->policy;
+    }
+
+}
+
+
+/// @brief Update q_t(x,o,u), backward in time, for time-steps in [0; T],
+/// @brief for each <x,o> in the reachable set, and for each u in U, \\
+/// @brief where T is the last step for which policy was updated during current iteration.
+void oSarsa::_update_Q(){
+    //-- we consider all reachable <x,o> (from any policy) 
+    for (int step = this->improved_last_step; step >= 0 ; step--){
+        if (SEARCH.is_timeout())
+            throw sdm_exception::Exception(sdm_exception::timeout, "_update_Q");
+        Qvalues_Tabular & q_func = this->Qfunctions.at(step);
+        for (Support supp: this->reachable_sets.at(step)){
+            for (int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                supp.set_jAction(ju);
+                this->_update_q(supp, this->policy, step);
+            }
+        }
+    }
+}
+
+
+/// @brief Update q(x,o,u):  \\
+/// @brief q(x,o,u) = r(x,u) + discount * sum_{x',o'} Pr(x',o'|x,u) * q_func(x',o',u') \\
+/// @brief with u' from the current policy. \\
+/// @brief Remark: the algorithm is named Sarsa, because this update involves the tuple
+/// (state, action, reward, state_next, action_next), here corresponding to (<x,o>, u, reward, <x',o'>, u') .
+void oSarsa::_update_q(Support x_o_u, Policy &pi, int step){
+    int x = x_o_u.get_hiddenState();
+    int ju = x_o_u.get_jAction();
+    double q_estim = PROBLEM.rewards_matrix(x, ju);
+    if (step < SEARCH.horizon - 1){
+        const auto & q_func_next = this->Qfunctions.at(step + 1);
+        for (const auto & reached: PROBLEM.reachables_from_x_u[x][ju]){
+            auto next_supp = x_o_u.do_step(reached.y, reached.joint_obs); // <x',o'>
+            int next_ju = pi.get_jAction(step + 1, next_supp); // u'
+            next_supp.set_jAction(next_ju); // <x',o',u'>
+            double next_q = q_func_next.get_value(next_supp);
+            q_estim += PROBLEM.discount * reached.proba * next_q;
+        }
+    }
+
+    //-- update q_func(x,o,u)
+    auto & q_func = this->Qfunctions.at(step);
+
+    //-- deterministic oMDP => LEARNING RATE = 1
+    q_func.set_value(x_o_u, q_estim);
+    
+    // //-- q_func(x,o,u) = (1 - lr) * q_func(x,o,u) + lr * q_estim
+    // static const double lr = .1;
+    // double new_q = (1 - lr) * q_func.get_value(x_o_u) + lr * q_estim;
+    // q_func.set_value(x_o_u, new_q);
+}
+
+
+Joint_DecisionRule oSarsa::_select_epsilon_greedy(Occupancy_State & oState, double eps){
+    Joint_DecisionRule jdr;
+
+    bool use_random = eps > utils::fast_calc::rand_double(0, 1);
+    if (use_random){
+        double rnd = 1.0;
+        if (SEARCH.use_portfolio)
+            rnd = utils::fast_calc::rand_double(0, 1);
+        if (rnd < .25)
+            jdr = this->_select_blind(oState);
+        else if (rnd < .5)
+            jdr = this->_select_MDP(oState);
+        else
+            jdr = this->_select_random(oState);
+    }
+    else{ 
+        double val_milp, val_enum;
+        #ifndef CPLEX_NOT_FOUND
+        tie(jdr, val_milp) = this->_select_greedy_milp(oState);
+        #else
+        tie(jdr, val_enum) = this->_select_greedy_enum(oState);
+        #endif
+    }
+
+    this->_extend_jointDecisionRule_LPE(jdr, oState);
+
+    return jdr;
+}
+
+
+pair<Joint_DecisionRule, double> oSarsa::_select_greedy_enum(Occupancy_State & oState){
+    Joint_DecisionRule greedy_jdr(PROBLEM.agents_number);
+    double greedy_value = -INFINITY;
+
+    //-- compute decision rules
+    Decision_Rules_Enumeration drs_enum(PROBLEM.agents_number);
+    for (int agent: PROBLEM.agents){
+        drs_enum.add_agent(oState.get_iHistories(agent, oState.is_compressed), PROBLEM.actions_number_byAgent[agent]);
+    }
+
+    //-- enumerate decision rules
+    int step = oState.get_step();
+    Qvalues_Tabular & q_func = this->Qfunctions.at(step);
+    for (int i = 0; i < drs_enum.size; i++){
+        if (SEARCH.is_timeout())
+            throw sdm_exception::Exception(sdm_exception::timeout, "_select_greedy_enum");
+        //-- evaluate decision rule
+        Joint_DecisionRule jdr(drs_enum.get(i));
+        double jdr_value = this->_get_Qvalue(oState, jdr);
+        //-- greedy ?
+        if (jdr_value > greedy_value){
+            greedy_value = jdr_value;
+            greedy_jdr = jdr;
+        }
+    }
+
+    return make_pair(greedy_jdr, greedy_value); 
+}
+
+pair<Joint_DecisionRule, double> oSarsa::_select_greedy_milp(Occupancy_State & oState){
+#ifndef CPLEX_NOT_FOUND
+    
+    int step = oState.get_step();
+    Cplex_Qtabular milp(oState, this->Qfunctions.at(step));
+    double sol_value = milp.solve();
+    // milp.exportModel("oSarsa.lp");
+    Joint_DecisionRule jdr = milp.get_sol_jointDecisionRule(oState);
+    return make_pair(jdr, sol_value);
+
+#else
+    return make_pair(Joint_DecisionRule(), -INFINITY);
+#endif // end CPLEX_FOUND
+
+}
+
+
+Joint_DecisionRule oSarsa::_select_random(Occupancy_State & oState){
+    Joint_DecisionRule jdr(PROBLEM.agents_number);
+
+    //-- for each individual history, the associated action is chosen randomly
+    for (int agent: PROBLEM.agents){
+        int actions_number = PROBLEM.actions_number_byAgent.at(agent);
+        auto ihs = oState.get_iHistories(agent, oState.is_compressed);
+        for (const Support & ih: ihs){
+            int random_iu = utils::fast_calc::fastRandRange(actions_number);
+            jdr.set_iAction(agent, ih, random_iu);
+        }
+    }
+
+    return jdr;
+}
+
+
+Joint_DecisionRule oSarsa::_select_MDP(Occupancy_State & oState){
+    Joint_DecisionRule jdr(PROBLEM.agents_number);
+
+    int step = oState.get_step();
+    for (int agent: PROBLEM.agents){
+        for (const auto & ih_supportsProba: oState.get_private_oState(agent, oState.is_compressed)){
+            //-- for each ih we are looking the greedy iu w.r.t. MDP
+            double best_val = -INFINITY;
+            int best_ju = -1;
+            for (int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                double val = 0;
+                for (const auto & supp_proba: ih_supportsProba.second){
+                    int x = supp_proba.first.get_hiddenState();
+                    val += supp_proba.second * mdp_sol.get_Qvalue(step, ju, x);
+                }
+                //-- greedy iu ?
+                if (val > best_val){
+                    best_val = val;
+                    best_ju = ju;
+                }
+            }
+            auto i_actions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, best_ju);
+            int best_iu = i_actions.at(agent);
+            //-- update the decision rule
+            jdr.set_iAction(agent, ih_supportsProba.first, best_iu);
+        }
+    }
+            
+    return jdr;
+}
+
+
+Joint_DecisionRule oSarsa::_select_blind(Occupancy_State & oState){
+    Joint_DecisionRule jdr(PROBLEM.agents_number);
+    for (int agent: PROBLEM.agents){
+        auto ihs = oState.get_iHistories(agent, oState.is_compressed);
+        for (const Support & ih: ihs){
+            jdr.set_iAction(agent, ih, this->blind_actions.at(agent));
+        }
+    }
+    return jdr;
+}
+
+
+double oSarsa::_get_epsilon(int iter) const{
+    if (iter == 1)
+        return 0; // we want a greedy search after init
+    
+    //-- epsilon is linear w.r.t. time, from 1 to 0
+    return (1.0 - SEARCH.get_time() / SEARCH.timeout) *  SEARCH.epsilon_start;    
+}
+
+
+/// @brief "simulated annealing" criterion (to avoid local optimum): \\
+/// acceptance rule of non-improving strategy.
+bool oSarsa::_accept_decrease(double decrease) const{
+    if (!SEARCH.use_simulatedAnnealing)
+        return false;
+
+    if (this->temperature < 1e-5)
+        return false;
+    if (decrease < -1e-6)
+        return false;
+    if (utils::fast_calc::fastRandRange(SEARCH.horizon) > 0)
+        return false;
+    double proba_accept = exp(-decrease / this->temperature);
+    return utils::fast_calc::rand() < proba_accept;
+}
+
+
+double oSarsa::_get_temperature(double epsilon) const{
+    return 4 * epsilon;
+}
+
+
+/// @brief Compute (exact) value: compute the oState trajectory, then value = the cumulative expective rewards. \\
+/// @brief From t0 (the time-step of oState) to horizon.
+double oSarsa::_get_exactValue(Occupancy_State oState, Policy & pi) const{
+    double R_sum = 0; // sum of expected rewards along the trajectory
+    double discount = PROBLEM.discount;
+
+    for (int step = 0; step < SEARCH.horizon; step++){
+        auto & jdr = pi.get_joint_decisionRule(step);
+        R_sum += discount * oState.get_expected_reward(jdr);
+        if (step < SEARCH.horizon - 1){
+            oState = oState.do_step(jdr);
+            if (SEARCH.compress)
+                oState.compress();
+            discount *= PROBLEM.discount;
+        }
+    }
+    return R_sum;
+}
+
+
+/// @brief Compute q(s,a) = sum_{<x,o>} s(<x,o>) * q(<x,o,u>) with u = a(o).
+double oSarsa::_get_Qvalue(Occupancy_State & oState, Joint_DecisionRule & jdr) const{
+
+    double jdr_value = 0;
+    const auto & q_func = this->Qfunctions.at(oState.get_step());
+    for (const auto & supp_proba: oState.get_supports_probas(oState.is_compressed)){
+        auto supp = supp_proba.first; // <x,o>
+        int ju = jdr.get_jAction(supp);
+        supp.set_jAction(ju); // <x,o,u>
+        jdr_value += supp_proba.second * q_func.get_value(supp);
+    }
+    return jdr_value;
+}
+
+
+/// @brief Compute sets <x,o> which are reachables from initial belief,
+/// for each time-step.
+void oSarsa::_set_reachables(){
+    //-- step 0
+    int step = 0;
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        if (PROBLEM.belief_init[x] > 0){
+            Support supp;
+            supp.set_hiddenState(x);
+            this->reachable_sets.at(step).insert(supp);
+        }
+    }
+
+    //-- next time-steps
+    for (int step = 1; step < SEARCH.horizon; step++){
+        auto & reach_next = this->reachable_sets.at(step);
+        for (Support supp: this->reachable_sets.at(step - 1)){
+            int x = supp.get_hiddenState();
+            for (auto x_z: PROBLEM.reachables_from_x.at(x)){
+                Support supp_next = supp.do_step(x_z.first, x_z.second);
+                reach_next.insert(supp_next);
+            }
+        }
+    }
+
+    //-- verbose
+    if (SEARCH.verbose >= utils::Verbose::medium){
+        cout << "Reachables <x,o>, i.e. <hidden state, joint history>:" << endl;
+        for (int step = 0; step < SEARCH.horizon; step++){
+            cout << "\t step " << step << " size " << this->reachable_sets.at(step).size() << endl;
+        }
+    }
+
+}
+
+
+/// @brief If LPE compression is active, we extend the policy (to the whole one-step uncompressed support). \\
+/// @brief Policy is built on (joint history) labels. Here we copy their action, to other equivalent joint histories. \\
+/// @brief See [Optimally solving Dec-POMDPs as continuous-state MDPs: Theory and algorithms, 2014, Def. 19] for details on labels.
+void oSarsa::_extend_jointDecisionRule_LPE(Joint_DecisionRule & jdr, Occupancy_State & oState) const{
+    if (!oState.is_compressed)
+        return;
+
+    for (const auto & supp_proba: oState.get_supports_probas(false)){
+        Support supp = supp_proba.first;
+        Support label = oState.get_label(supp);
+        if (label != supp)
+            jdr.set_jAction(supp, jdr.get_jAction(label));
+    }
+}
+
+
+void oSarsa::_log(int iter){
+
+    //-- prepare data to log
+    double time = SEARCH.get_time();
+    //--    Q_sizes: size of Qfunction representation (for each time-step)
+    ostringstream Q_sizes;
+    if (iter <= 1){
+        for (auto const & q_func: this->Qfunctions)
+            Q_sizes << q_func.size() << " ";
+    }
+    //--    evaluations of current policy (based on Qfunction at time-step 0)
+    double value = this->_get_exactValue(this->oState0, this->policy);
+    double eval = this->_get_Qvalue(this->oState0, this->policy.get_joint_decisionRule(0));
+
+    //-- log
+    this->logger.write({
+                        to_string(time), 
+                        to_string(iter),
+                        to_string(value),
+                        to_string(eval),
+                        to_string(this->final_eval),
+                        Q_sizes.str(),
+                        to_string(this->epsilon)
+                        }, time);
+}
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/oSarsa.hpp b/code/src/decPOMDP/simultaneous/oSarsa.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..4fa55d8bc655a39c17d7d3d65877c6001455e19e
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/oSarsa.hpp
@@ -0,0 +1,77 @@
+#pragma once
+
+#include "../core/_module.hpp"
+#include "occupancy_state.hpp"
+#include "value_representation/Q_representation.hpp"
+#include "value_representation/Q_representation_milp.hpp"
+#include "value_representation/mdp_solution.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+
+
+class oSarsa{
+    Occupancy_State oState0; // initial oState (from initial belief)
+
+    //-- policy
+    Policy policy; // to optimize
+    vector<Qvalues_Tabular> Qfunctions; // policy evaluation
+    int improved_last_step = -1;
+    
+    //-- epsilon-greedy
+    double epsilon;
+    MDP_Solution mdp_sol;
+    vector<int> blind_actions;
+
+    //-- simulated annealing
+    double temperature;
+    bool improved;
+    double final_eval = -INFINITY;
+    Policy final_policy;
+
+    //-- reachables
+    vector<Support_Set> reachable_sets; // reachable (x,o) for each time-step
+    
+    utils::Logger logger;
+
+
+public:
+    oSarsa();
+
+    void solve();
+
+protected:
+    //-- oSarsa main functions
+
+    void _init_policy();
+    void _update_policy(); // policy improvement
+    void _update_Q(); // backup operator
+    void _update_q(Support x_o_u, Policy &, int step);
+
+    //-- epsilon greedy
+    
+    Joint_DecisionRule _select_epsilon_greedy(Occupancy_State &, double eps);
+    pair<Joint_DecisionRule, double> _select_greedy_enum(Occupancy_State &);
+    pair<Joint_DecisionRule, double> _select_greedy_milp(Occupancy_State &);
+    Joint_DecisionRule _select_random(Occupancy_State &);
+    Joint_DecisionRule _select_MDP(Occupancy_State &);
+    Joint_DecisionRule _select_blind(Occupancy_State &);
+    double _get_epsilon(int iter) const;
+    
+    //-- simulated annealing
+
+    bool _accept_decrease(double decrease) const;
+    double _get_temperature(double epsilon) const;
+
+    //-- utils
+    double _get_exactValue(Occupancy_State oState, Policy & pi) const;
+    double _get_Qvalue(Occupancy_State &, Joint_DecisionRule &) const;
+    void _set_reachables();
+    void _extend_jointDecisionRule_LPE(Joint_DecisionRule &, Occupancy_State &) const;
+    void _log(int iter);
+};
+
+
+}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/occupancy_state.cpp b/code/src/decPOMDP/simultaneous/occupancy_state.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..ac6b519ddf3d8b9c65ba41d8b882c249830b953b
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/occupancy_state.cpp
@@ -0,0 +1,70 @@
+#include "occupancy_state.hpp"
+
+#include <iostream>
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+Occupancy_State::Occupancy_State(): Occupancy_State_Base(){}
+
+Occupancy_State::Occupancy_State(int step): Occupancy_State_Base(){
+    this->step = step;
+}
+
+Occupancy_State::Occupancy_State(const Vector & belief_init): Occupancy_State_Base(belief_init){}
+
+Occupancy_State Occupancy_State::do_step(vector<Decision_Rule> & drs)const{
+    Occupancy_State oState_next(this->step + 1);
+
+    for (const auto & support_proba: this->get_supports_probas(this->is_compressed)){
+        const auto & support = support_proba.first;
+        double proba = support_proba.second;
+        int joint_action = this->get_jAction(drs, support);
+        //-- new supports: reachables from the (hidden_state, action_joint)
+        const auto &reachables = PROBLEM.reachables_from_x_u[support.get_hiddenState()][joint_action];
+        for (const auto & reached: reachables){
+            auto next_support = support.do_step(reached.y, reached.joint_obs);
+            oState_next._update_proba(next_support, proba * reached.proba);
+        }
+    }
+    //-- finalize oState_next
+    // oState_next.normalize();
+    // oState_next._prune();
+    return oState_next;
+}
+
+Occupancy_State Occupancy_State::do_step(Joint_DecisionRule & drs)const{
+    return this->do_step(drs.decision_rules);
+}
+
+/// @brief Compute expected one-step reward, given individual decision-rules.
+double Occupancy_State::get_expected_reward(vector<Decision_Rule> & drs) const{        
+    double reward = 0;
+    for (auto & supp_proba: this->get_supports_probas(this->is_compressed)){
+        Support supp = supp_proba.first;
+        int action_joint = this->get_jAction(drs, supp);
+        reward += supp_proba.second * PROBLEM.rewards_matrix(supp.get_hiddenState(), action_joint);
+    }
+    return reward;
+}
+
+double Occupancy_State::get_expected_reward(Joint_DecisionRule & drs) const{
+    return this->get_expected_reward(drs.decision_rules);
+}
+
+ostream &operator<<(ostream &os, const Occupancy_State &s){
+    const auto & supports_proba = s.get_supports_probas(s.is_compressed);
+    os << "step " << s.step
+        << " compressed ?" << (s.is_compressed ? " YES": " NO") 
+        << " size " << supports_proba.size()
+        << endl;
+    os << "belief " << s.belief.transpose() << endl;
+    for (const auto & support_proba: supports_proba){
+        os << support_proba.first << "  proba: " <<  support_proba.second << endl;
+    }
+    return os;
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/occupancy_state.hpp b/code/src/decPOMDP/simultaneous/occupancy_state.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..583960ca1168edde638f863f7a4981bc9833ae40
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/occupancy_state.hpp
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "../core/_module.hpp"
+
+#include <iostream>
+
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+    class Occupancy_State: public Occupancy_State_Base{
+
+    public:
+        Occupancy_State();
+        Occupancy_State(const Vector & belief_init); // for root occupancy state
+        Occupancy_State(int time_step); // for successors (next oState)
+        virtual void test(){}
+        ~Occupancy_State(){}
+
+        Occupancy_State do_step(vector<Decision_Rule> & drs) const; // all agent are playing
+        Occupancy_State do_step(Joint_DecisionRule & drs) const;
+        double get_expected_reward(vector<Decision_Rule> & drs) const;
+        double get_expected_reward(Joint_DecisionRule & drs) const;
+
+        friend ostream &operator<<(ostream &os, const Occupancy_State &s);
+
+    };
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/tests_unitary/_module.hpp b/code/src/decPOMDP/simultaneous/tests_unitary/_module.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..74a083bc4f8a1b5eb8ad7909b39a4582b462a7ee
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/tests_unitary/_module.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+#include "test_compression.hpp"
diff --git a/code/src/decPOMDP/simultaneous/tests_unitary/test_compression.cpp b/code/src/decPOMDP/simultaneous/tests_unitary/test_compression.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dbbf255cab36841afc030d90ec800164c5989f8c
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/tests_unitary/test_compression.cpp
@@ -0,0 +1,102 @@
+#include "test_compression.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace tests_unitary{
+
+/// @brief Test the accuracy of the compression.
+/// Compare the expected rewards from compressed / one-step uncompressed versions of oState.
+/// The expected rewards are collected from a trajectory:
+/// random decision rules are sampled for the compressed oState,
+/// and are extended for the uncompressed oState through labels correspondance.
+void test_compression(){
+    static const int EPOCHS = 1;
+
+    //-- verbose
+    ostringstream msg;
+    msg << "decPOMDP:simultaneous:tests:compression "
+        << " compress_threshold " << SEARCH.compress_threshold;
+    cout << utils::get_solver_repr(msg.str()) << endl;
+    utils::Logger logger(SEARCH.log_filename, SEARCH.verbose);
+    logger.write({"time", "episode", "rews sum", "rews_error", "Uncompressed sum size", "Compressed sum size"});
+    
+    //-- run
+    SEARCH.start(); // for timer
+    for (int episode = 0; episode < EPOCHS; episode++){
+        Occupancy_State oState_compressed(PROBLEM.belief_init);
+        Occupancy_State oState_uncompressed(PROBLEM.belief_init); // one-step uncompressed
+
+        double rews_sum = 0, rews_sum2 = 0;
+        int sizes_sum = 0, sizes_sum2 = 0;
+
+        for (int step = 0; step < SEARCH.horizon; step++){
+
+            //-- decision rules
+            vector<Decision_Rule> drs_compressed = get_decisionRules(oState_compressed);
+            //--    extend the decision rules for one-step uncompressed
+            vector<Decision_Rule> drs_uncompressed(PROBLEM.agents_number, Decision_Rule(RuleType::REGULAR));
+            for (const auto & supp_proba: oState_uncompressed.get_supports_probas(false)){
+                Support supp_label = oState_compressed.get_label(supp_proba.first);
+                for (int agent: PROBLEM.agents){
+                    int iu = oState_compressed.get_iAction(drs_compressed.at(agent), supp_label, agent);
+                    drs_uncompressed.at(agent).set_action(supp_proba.first.get_iHistory(agent), iu);
+                }
+            }
+
+            //-- expected rewards
+            double rew_compressed = oState_compressed.get_expected_reward(drs_compressed);
+            double rew_uncompressed = oState_uncompressed.get_expected_reward(drs_uncompressed);
+            rews_sum += rew_compressed;
+            rews_sum2 += rew_uncompressed;
+            
+            //-- DEBUG
+            if (abs(rew_compressed - rew_uncompressed) > 1e-3){
+                // cout << "rew_compressed " << rew_compressed << " rew_uncompressed " << rew_uncompressed << endl;
+                // cout << "== compressed oState " << endl << oState_compressed << endl;
+                // cout << "== UNcompressed oState " << endl << oState_uncompressed << endl;
+                // throw sdm_exception::Exception(sdm_exception::unitaryTest, "test compression failed");
+            }
+
+            //-- apply decision rules            
+            oState_compressed = oState_compressed.do_step(drs_compressed);
+            oState_compressed.compress();
+cout << oState_compressed;
+            oState_uncompressed.compress(); // compress AFTER expected_reward BEFORE do_step (to test rewards on one-step uncompressed)
+            oState_uncompressed = oState_uncompressed.do_step(drs_uncompressed);
+            sizes_sum += oState_uncompressed.size_support();
+            sizes_sum2 += oState_compressed.size_support_compressed();
+        }
+
+        //-- log
+        double time = SEARCH.get_time();
+        logger.write({
+                        to_string(time), 
+                        to_string(episode),
+                        to_string(rews_sum),
+                        to_string(abs(rews_sum2 - rews_sum)),
+                        to_string(sizes_sum),
+                        to_string(sizes_sum2),
+                        }, time);
+    }
+}
+
+
+vector<Decision_Rule> get_decisionRules(Occupancy_State & oState){
+    //-- blind strategy
+    auto [default_jAction, val] = Decision_Rule::blind_heuristic();
+    auto default_iActions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, default_jAction);
+    vector<Decision_Rule> drs_compressed(PROBLEM.agents_number);
+    for (int agent: PROBLEM.agents)
+        drs_compressed.at(agent).default_action = default_iActions.at(agent);
+    
+
+    //-- random decision rules
+    // vector<Decision_Rule> drs_compressed(PROBLEM.agents_number, Decision_Rule(RuleType::RANDOM));
+
+
+    return drs_compressed;
+}
+
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/tests_unitary/test_compression.hpp b/code/src/decPOMDP/simultaneous/tests_unitary/test_compression.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..d15e2b9f15a363228e2ef70d457e52cfc3482897
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/tests_unitary/test_compression.hpp
@@ -0,0 +1,12 @@
+#include "../../core/_module.hpp"
+#include "../occupancy_state.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+namespace tests_unitary{
+
+    void test_compression();
+    vector<Decision_Rule> get_decisionRules(Occupancy_State &);
+
+}}}
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/value_representation/Q_representation.cpp b/code/src/decPOMDP/simultaneous/value_representation/Q_representation.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b1810215b06d004e774e1c090f67cc3f3d3d4ab8
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/Q_representation.cpp
@@ -0,0 +1,73 @@
+#include "Q_representation.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+/// @brief The size of the container, i.e. the number of Qvalues stored in the mapping.
+size_t Qvalues_Tabular::size() const{
+    return this->container.size();
+}
+
+
+/// @brief Look for the q value associated to a tuple (x,o,u).
+/// @brief If this value is not found, return a default value.
+/// @param supp A Support = concise representation of <x,o,u>.
+double Qvalues_Tabular::get_value(const Support & supp) const{
+    const auto got = this->container.find(supp);
+    if (got != this->container.end())
+        return got->second;
+    return this->get_default_value(supp);    
+}
+
+
+double Qvalues_Tabular::get_default_value(const Support & supp) const{
+    return this->get_default_value(supp.get_hiddenState(), supp.get_jAction());
+}
+
+
+double Qvalues_Tabular::get_default_value(int x, int ju) const{
+    Support xu(x, 0, ju);
+    return this->default_values.at(xu);
+}
+
+
+/// @brief Clear the mapping: <x,o,u> -> value (but not the default values)
+void Qvalues_Tabular::clear(){
+    this->container.clear();
+}
+
+
+void Qvalues_Tabular::set_value(const Support & supp, double val){
+    this->container[supp] = val;
+}
+
+
+void Qvalues_Tabular::set_default_value(int x, int ju, double val){
+    Support xu(x, 0, ju);
+    this->default_values[xu] = val;
+}
+
+
+ostream &operator<<(ostream &os, const Qvalues_Tabular & q_func){
+    for (auto & supp_val: q_func.container){
+        os  << supp_val.first
+            << " val: " <<  supp_val.second << endl;
+    }
+    return os;
+}
+
+string Qvalues_Tabular::get_repr(int step) const{
+    ostringstream os;
+    for (auto & supp_val: this->container){
+        os  << supp_val.first.get_repr(step, PROBLEM.last_agent + 1) 
+            << " val: " <<  supp_val.second << endl;
+    }
+    return os.str();
+}
+
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/value_representation/Q_representation.hpp b/code/src/decPOMDP/simultaneous/value_representation/Q_representation.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..377fdb7eb7ed1abfc48cc9e67ccb7896b0c7ab00
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/Q_representation.hpp
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+    class Qvalues_Tabular{
+        Support_Val_Map container; // map: <x,o,u> -> value
+        Support_Val_Map default_values; // map: <x,u> -> value
+        
+    public:
+        
+        double get_value(const Support &) const;
+        double get_default_value(const Support &) const;
+        double get_default_value(int x, int ju) const;
+        void clear();
+        void set_value(const Support &, double val);
+        void set_default_value(int x, int ju, double val);
+        size_t size() const;
+
+        friend ostream &operator<<(ostream &os, const Qvalues_Tabular & q_func);
+        string get_repr(int step) const;
+    };
+
+
+
+}} // end namespace
diff --git a/code/src/decPOMDP/simultaneous/value_representation/Q_representation_milp.cpp b/code/src/decPOMDP/simultaneous/value_representation/Q_representation_milp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..61470a44452c38ba449f3ef2d56d384162269f13
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/Q_representation_milp.cpp
@@ -0,0 +1,82 @@
+#include "Q_representation_milp.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+
+Cplex_Qtabular::Cplex_Qtabular(Occupancy_State & oState, Qvalues_Tabular & q_values): Cplex_Base(maximize){
+    //-- Build Vobj = objective variable
+    string var_name = this->_get_Vobj_name();
+    this->_build_var(var_name);
+    this->var.add(IloNumVar(env, -IloInfinity, IloInfinity, var_name.c_str()));
+    this->objective.setLinearCoef(this->get_var_Vobj(), 1); // Build objective funtion V(s)
+    
+    //-- build decision rules
+    this->build_decisionRule_decentralized_deterministic(&oState, oState.is_compressed);
+
+    //-- V(s) = \sum_{x,o,u} s(x,o) * Q(x,o,u) * a(u|o)
+    //--    precompute
+    Support_Val_Map coeffs; // mapping:  <o,u> -> \sum_{x} s(x,o) * Q(x,o,u)
+    for (const auto & supp_proba: oState.get_supports_probas(oState.is_compressed)){
+        int x = supp_proba.first.get_hiddenState();
+        Support jh = supp_proba.first.get_jHistory();
+        for (int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+            Support x_o_u(x, jh, ju);
+            Support o_u(0, jh, ju);
+            double coeff = supp_proba.second * q_values.get_value(x_o_u); // s(x,o) * Q(x,o,u)
+            auto got = coeffs.find(o_u);
+            if (got == coeffs.end()){
+                coeffs.emplace(o_u, coeff);
+            }
+            else{
+                got->second += coeff;
+            }
+        }
+    }
+    //--    build constraints
+    this->con.add(IloRange(this->env, -IloInfinity, 0.0)); // con: <= 0
+    this->con[this->con_number].setLinearCoef(this->get_var_Vobj(), 1.0); // con: V <= 0
+    for (const auto & supp_proba: oState.get_supports_probas(oState.is_compressed)){
+        Support jh = supp_proba.first.get_jHistory();
+        for (int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+            Support o_u(0, jh, ju);
+            double coeff = coeffs.at(o_u);
+            const auto & var_j_decision = this->get_var_jDecision(jh, ju);
+            this->con[this->con_number].setLinearCoef(var_j_decision, -coeff); // con: V - \sum_{x,o,u} s(x,o) * Q(x,o,u) * a(u|o) <= 0
+        }
+    }
+    this->con_number++;
+    
+}
+
+/// @brief Get the action
+/// @warning Require solve() first.
+Joint_DecisionRule Cplex_Qtabular::get_sol_jointDecisionRule(Occupancy_State & oState){
+    Joint_DecisionRule jdr(PROBLEM.agents_number);
+    for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+        for(const auto & ih: oState.get_iHistories(agent, oState.is_compressed)){
+int selected_number = 0;
+            for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+                const auto & var_i_decision = this->get_var_iDecision(ih, iu, agent);
+                // IloBool selected = this->cplex.getValue(var_i_decision);
+                double selected = this->cplex.getValue(var_i_decision);
+                if (selected > .5){
+                    jdr.set_iAction(agent, ih, iu);
+selected_number++;
+                }
+            }
+if (selected_number != 1){
+cout << "selected_number" << selected_number << endl;
+throw sdm_exception::Exception(sdm_exception::cplex, "get_sol_jointDecisionRule");
+}
+
+        }
+    }
+    return jdr;
+}
+
+
+}} // end namespace
diff --git a/code/src/decPOMDP/simultaneous/value_representation/Q_representation_milp.hpp b/code/src/decPOMDP/simultaneous/value_representation/Q_representation_milp.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..db0a52f31707ac2c36a3f28d7e74a162eafe9ee5
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/Q_representation_milp.hpp
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "../../core/milp.hpp"
+#include "../occupancy_state.hpp"
+#include "Q_representation.hpp"
+
+
+#ifndef CPLEX_NOT_FOUND
+    #include <ilcplex/ilocplex.h>
+    ILOSTLBEGIN
+#endif
+
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+
+struct Cplex_Qtabular: Cplex_Base{
+    static const bool maximize = true;
+
+    Cplex_Qtabular(Occupancy_State &, Qvalues_Tabular &);
+
+    Joint_DecisionRule get_sol_jointDecisionRule(Occupancy_State &);
+    
+};
+
+
+}} // end namespace
diff --git a/code/src/decPOMDP/simultaneous/value_representation/max_plane.cpp b/code/src/decPOMDP/simultaneous/value_representation/max_plane.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..017cf2bb085c762459b89733d2441127954d306d
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/max_plane.cpp
@@ -0,0 +1,573 @@
+#include "max_plane.hpp"
+
+#ifndef CPLEX_NOT_FOUND
+    #include <ilcplex/ilocplex.h>
+    ILOSTLBEGIN
+#endif
+#ifdef TB2
+    #include "toulbar2lib.hpp"
+#endif
+
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+///////////////////////////
+// Hyperplane
+//////////////////////////
+
+Hyperplane::Hyperplane(): id(ID()){}
+
+size_t Hyperplane::size() const{
+    return this->container.size();
+}
+
+double Hyperplane::get_value(Occupancy_State_Base * oState, double default_value) const{
+    double val = 0;
+    for (const auto & support_proba: oState->get_supports_probas(oState->is_compressed)){
+        auto support = support_proba.first;
+        double proba = support_proba.second;        
+        val += proba * this->get_value(support, default_value); // @todo use label if not found ?
+    }
+    return val;
+}
+
+/// @brief if the support does not exist, return default_val
+double Hyperplane::get_value(const Support & support , double default_val) const{
+    const auto got = this->container.find(support);
+    return got == this->container.end() ? default_val : got->second;
+}
+
+/// @brief /!\ if the support does not exist, an error will occur
+double Hyperplane::get_value(const Support & support) const{
+    return this->container.at(support);
+}
+
+void Hyperplane::set_value(const Support & support, double val){
+    this->container[support] = val;
+}
+
+///@brief Dominated if other values are greater for every dimension.
+bool Hyperplane::is_dominated(const Hyperplane& other, double default_val) const{
+    if (this->id == other.id)
+        return false;
+    for (const auto & support_value: this->container){
+        if (this->get_value(support_value.first) > other.get_value(support_value.first, default_val))
+            return false;
+    }
+    return true;
+}
+
+bool Hyperplane::is_dominated(const vector<Hyperplane> & others, double default_val) const{
+    for(const Hyperplane & other : others) {
+        if(this->is_dominated(other, default_val))
+            return true;
+    }
+    return false;
+}
+
+///////////////////////////
+// Hyperplane_LowerBound
+//////////////////////////
+
+Hyperplane_LowerBound::Hyperplane_LowerBound(){}
+
+Hyperplane_LowerBound::Hyperplane_LowerBound(
+    const Hyperplane & hyperplane, double default_val, double oState_min_value, Hyperplane_LowerBound *next_bound):
+    hyperplanes({hyperplane}), default_val(default_val), oState_min_value(oState_min_value), next_bound(next_bound){}
+
+int Hyperplane_LowerBound::size() const{
+	return this->hyperplanes.size();
+}
+
+double Hyperplane_LowerBound::get_value(Occupancy_State_Base * point) const{
+    double value = -INFINITY;
+    for(const Hyperplane & hyperplane : this->hyperplanes) {
+        value = max(value, hyperplane.get_value(point, this->default_val));
+    }
+    return max(this->oState_min_value, value);
+}
+
+double Hyperplane_LowerBound::get_value(Support support) const{
+    double value = -INFINITY;
+    for(const Hyperplane & hyperplane : this->hyperplanes) {
+        value = max(value, hyperplane.get_value(support, this->default_val));
+    }
+    return value;
+}
+
+void Hyperplane_LowerBound::_add_hyperplane(const Hyperplane & hyperplane){
+    if(hyperplane.is_dominated(this->hyperplanes, this->default_val))
+        return;
+
+    this->hyperplanes.push_back(hyperplane);
+    this->newHyperplanes.push_back(hyperplane);
+    if (this->hyperplanes.size() > PRUNE_THRESH * size_last_pruning) {
+        this->_prune();
+    }
+}
+
+/// @brief 1) Erase each hyperplane of hyperplanes that is dominated by one hyperplane of newHyperplanes.
+/// @brief 2) Clear newHyperplanes.
+void Hyperplane_LowerBound::_prune() {
+
+    if(this->newHyperplanes.size() <= 1) {
+        return;
+    }
+
+    vector<Hyperplane> tempSet;
+    for(const Hyperplane & hyperplane : this->hyperplanes) {
+        if (!hyperplane.is_dominated(this->newHyperplanes, this->default_val)) {
+            tempSet.push_back(hyperplane);
+        }
+    }
+    this->hyperplanes = tempSet;
+    this->newHyperplanes.clear();
+    size_last_pruning = this->hyperplanes.size();
+}
+
+
+/// @brief add an hyperplane for each oState
+double Hyperplane_LowerBound::update(Occupancy_State_Base * oState, double init_value){
+    this->_set_betas(oState);
+
+    //-- greedy selection
+    vector<Decision_Rule> sol_drs;
+    Beta_Map sol_beta;
+    double sol_value;
+    switch (SEARCH.solver_drs)
+    {
+    case enumeration:
+        tie(sol_drs, sol_beta, sol_value) = this->_update_enum(oState, init_value);
+        break;
+    case milp:
+        tie(sol_drs, sol_beta, sol_value) = this->_update_milp(oState, init_value);
+        break;
+    case wcsp:
+        tie(sol_drs, sol_beta, sol_value) = this->_update_wcsp(oState, init_value);
+        break;
+    default:
+        throw sdm_exception::Exception(sdm_exception::bad_joke, "Hyperplane_LowerBound::update unknown solver");
+        break;
+    }
+
+    //-- new hyperplane
+    if (sol_value > init_value){
+        this->_build_hyperplane(oState, sol_drs, sol_beta);
+    }
+
+    return sol_value;
+}
+
+tuple<vector<Decision_Rule>, Beta_Map, double> Hyperplane_LowerBound::_update_wcsp(Occupancy_State_Base * oState, double init_val) {
+#ifdef TB2
+    static const auto get_j_decision_name = [](Support jhistory, int jaction) {return "jh." + to_string(jhistory.get_container()) + ".ju." + to_string(jaction);};
+    static const auto get_i_decision_name = [](int agent, Support ihistory) {return "ag." + to_string(agent) + ".ih." + to_string(ihistory.get_container());};
+    unordered_map<string, int> names_id_map;
+
+    long long best_cost = LONG_MAX;
+    Beta_Map best_beta;
+    vector<int> best_sol;
+
+    for (const Beta_Map & beta_k : this->betas){
+        unordered_map<string, double> names_coef_map;
+
+        //-- initialize wcsp
+        tb2init();
+        ToulBar2::verbose = -1;
+        initCosts();
+        WeightedCSPSolver* wcsp_solver = WeightedCSPSolver::makeWeightedCSPSolver(MAX_COST);
+
+        //-- Build variables ai(ui|hi)
+        for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+            for(const Support & ihistory : oState->get_iHistories(agent, oState->is_compressed)){
+                string i_name = get_i_decision_name(agent, ihistory);
+                int var_index = wcsp_solver->getWCSP()->makeEnumeratedVariable(i_name, 0, PROBLEM.actions_number_byAgent[agent] - 1);
+                names_id_map[i_name] = var_index;
+            }
+        }
+
+        //-- Build objective funtion: \sum_{h,u} a(u|h) \sum_x s(x,h) * beta(x,h,u)
+        names_coef_map.clear();
+        for (const auto & supp_proba: oState->get_supports_probas(oState->is_compressed)){ 
+            for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                Support supp = supp_proba.first;
+                string j_name = get_j_decision_name(supp.get_jHistory(), ju);
+                supp.set_jAction(ju);
+                if (names_coef_map.find(j_name) == names_coef_map.end()){
+                    names_coef_map[j_name] = 0;
+                }
+                names_coef_map.at(j_name) += supp_proba.second * beta_k.at(supp);
+            }
+        }
+        static const long long offset = 1000000000000;
+        for (const auto & jh_bP: oState->get_beliefState(oState->is_compressed)){
+            //-- max_val
+            double max_val = 1000;
+            // for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+            //     string j_name = get_j_decision_name(jh, ju);
+            //     max_val = max(max_val, names_coef_map[j_name]); // we are not able to compare solutions with a max_val that depend on beta_k  -> compute max_val[j_name] outside the beta_k loop
+            // }
+
+            //-- costs
+            vector<Cost> costs;
+            costs.reserve(PROBLEM.actions_joint_number);
+            for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                string j_name = get_j_decision_name(jh_bP.first, ju);
+                double coef = names_coef_map[j_name];
+                costs.push_back(offset * (max_val - coef));
+            }
+            assert(PROBLEM.agents_number == 2);
+            int var_index0 = names_id_map.at(get_i_decision_name(0, jh_bP.first.get_iHistory(0)));
+            int var_index1 = names_id_map.at(get_i_decision_name(1, jh_bP.first.get_iHistory(1)));
+            //-- @todo check : CETTE FONCTION (postBinaryConstraint) ENGENDRE UNE FUITE DE MEMOIRE 
+            wcsp_solver->getWCSP()->postBinaryConstraint(var_index0, var_index1, costs);
+        }
+
+        //-- solve
+        wcsp_solver->getWCSP()->sortConstraints();
+        if (wcsp_solver->solve()){
+            vector<int> sol;
+            wcsp_solver->getSolution(sol);
+
+            long long cost_k = wcsp_solver->getSolutionValue();
+            //-- best ?            
+            if(cost_k < best_cost){
+                best_cost = cost_k;
+                best_beta = beta_k;
+                best_sol = sol;
+            }
+        }
+        else{
+            throw sdm_exception::Exception(sdm_exception::toulbar, "decPOMDP::hyperplane::_update_wcsp() no solution ?");
+        }
+
+    }// end foreach beta
+
+    //-- build decision rules
+    vector<Decision_Rule> best_drs(PROBLEM.agents_number);    
+    for(int agent = 0; agent < PROBLEM.agents_number; ++agent){
+        for(const Support & ihistory : oState->get_iHistories(agent, oState->is_compressed)){
+            int var_index = names_id_map[get_i_decision_name(agent, ihistory)];
+            int u = best_sol[var_index];
+            best_drs.at(agent).set_action(ihistory, u);
+        }
+    }
+
+    //-- eval
+    double eval;
+    tie(eval, best_beta) = this->_eval_decisionRules(oState, best_drs);
+    eval = max(eval, init_val);
+    
+    return make_tuple(best_drs, best_beta, eval);
+
+#endif  // end TB2
+}
+
+tuple<vector<Decision_Rule>, Beta_Map, double> Hyperplane_LowerBound::_update_milp(Occupancy_State_Base * oState, double init_val) {
+#ifndef CPLEX_NOT_FOUND
+
+    static const auto get_j_decision_name = [](Support jhistory, int jaction) {return "jh." + to_string(jhistory.get_container()) + ".ju." + to_string(jaction);};
+    static const auto get_i_decision_name = [](int agent, Support ihistory, int action) {return "ag." + to_string(agent) + ".ih." + to_string(ihistory.get_container()) + ".ia." + to_string(action);};
+
+    IloEnv env;
+    IloRangeArray con(env);
+    IloBoolVarArray var(env);
+    IloObjective objective = IloMaximize(env);
+    IloModel model(env);
+    
+    int var_number = 0, con_number = 0;
+    unordered_map<string, int> names_id_map; 
+    unordered_map<string, double> names_coef_map;
+    
+    //-- Build variables a(u|h)
+    for (const auto & jh_bP: oState->get_beliefState(oState->is_compressed)){
+        for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+            names_id_map[get_j_decision_name(jh_bP.first, ju)] = var_number++;
+            var.add(IloBoolVar(env, 0, 1));
+        }
+    }
+    
+    //-- Build variables ai(ui|hi)
+    for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+        for(const Support & ihistory : oState->get_iHistories(agent, oState->is_compressed)){
+            for(int ju = 0; ju < PROBLEM.actions_number_byAgent[agent]; ++ju){
+                names_id_map[get_i_decision_name(agent, ihistory, ju)] = var_number++;
+                var.add(IloBoolVar(env, 0, 1)); // \in {0, 1}
+            }
+        }
+    }
+
+    //-- Build decentralized constraints  a(u|h) <= ai(ui|hi)
+    for (const auto & jh_bP: oState->get_beliefState(oState->is_compressed)){
+        for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+            const auto & var_j_decision = var[names_id_map[get_j_decision_name(jh_bP.first, ju)]];
+            for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+                con.add(IloRange(env, -IloInfinity, 0.0)); // <= 0
+                con[con_number].setLinearCoef(var_j_decision, +1.0); // a(u|h) <= 0
+                auto ia = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, ju);
+                auto ih = jh_bP.first.get_iHistory(agent); 
+                const auto & var_i_decision = var[names_id_map[get_i_decision_name(agent, ih, ia.at(agent))]];
+                con[con_number].setLinearCoef(var_i_decision, -1.0); // a(u|h) - ai(ui|hi) <= 0
+                con_number++;
+            }
+        }
+    }   
+
+    //-- Build decentralized constraints a(u|h) >= \sum_i ai(ui|hi) + 1 - n  
+    for (const auto & jh_bP: oState->get_beliefState(oState->is_compressed)){
+        for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+            con.add(IloRange(env, 1 - PROBLEM.agents_number, +IloInfinity)); // >= 1 - n
+            const auto & var_j_decision = var[names_id_map[get_j_decision_name(jh_bP.first, ju)]];
+            con[con_number].setLinearCoef(var_j_decision, +1.0); // a(u|h) >= 1 - n
+            for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+                auto ia = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, ju);
+                auto ih = jh_bP.first.get_iHistory(agent); 
+                const auto & var_i_decision = var[names_id_map[get_i_decision_name(agent, ih, ia.at(agent))]];
+                con[con_number].setLinearCoef(var_i_decision, -1.0); // a(u|h) - \sum_i ai(ui|hi) >= 1 - n 
+            }
+            con_number++;
+        }
+    }
+
+    // Build deterministic policy \sum_{ui} ai(ui|hi) = 1  
+    for(int agent=0; agent<PROBLEM.agents_number; ++agent){
+        for(const auto& ihistory : oState->get_iHistories(agent, oState->is_compressed)){
+            con.add(IloRange(env, 1.0, 1.0)); // = 1
+            for(int a=0; a<PROBLEM.actions_number_byAgent[agent]; ++a){
+                const auto & var_i_decision = var[names_id_map[get_i_decision_name(agent, ihistory, a)]];
+                con[con_number].setLinearCoef(var_i_decision, +1.0); // \sum_{ui} ai(ui|hi) = 1 
+            }
+            con_number++;
+        }
+    }
+
+    //-- common cplex problem
+    model.add(con);
+    IloCplex cplex(model);
+    cplex.setOut(env.getNullStream()); // no verbose
+    cplex.setWarning(env.getNullStream()); // no warning
+    cplex.setParam(IloCplex::Param::Threads, 1); // set the number of CPU
+
+    double best_val = init_val;
+    Beta_Map best_beta;
+    IloNumArray best_vals(env);
+    for (const Beta_Map & beta_k : this->betas){
+        //-- objective funtion (specific part of cplex problem)
+        double val_k;
+        try{
+            //-- Build objective funtion: \sum_{h,u} a(u|h) \sum_x s(x,h) * beta(x,h,u)
+            names_coef_map.clear();
+            for (const auto & supp_proba: oState->get_supports_probas(oState->is_compressed)){ 
+                for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                    Support supp = supp_proba.first;
+                    auto var_name = get_j_decision_name(supp.get_jHistory(), ju);
+                    supp.set_jAction(ju);
+                    if (names_coef_map.find(var_name) == names_coef_map.end()){
+                        names_coef_map[var_name] = 0;
+                    }
+                    names_coef_map[var_name] += supp_proba.second * beta_k.at(supp);
+                }
+            }
+            for(const auto& name_coef : names_coef_map){
+                objective.setLinearCoef(var[names_id_map[name_coef.first]], name_coef.second);
+            }
+
+            //-- solve
+            model.add(objective);
+            cplex.extract(model);
+            if(!cplex.solve()){
+                env.error() << "Failed to optimize MILP" << endl;
+            }
+            else{
+                val_k = cplex.getObjValue(); // objective value
+                //-- best ?
+                if(val_k > best_val){
+                    best_val = val_k;
+                    best_beta = beta_k;
+                    cplex.getValues(best_vals, var);
+                }
+            }
+        }
+        catch(IloException& e){
+            cerr << "Concert exception caught: " << e << endl;
+            throw sdm_exception::Exception(sdm_exception::cplex, "IloException");
+        } 
+        catch(const exception& exc){
+            cerr << "Non-Concert exception caught: " << exc.what() << endl;
+            throw sdm_exception::Exception(sdm_exception::cplex, "milp exception");
+        }                
+    }
+    env.end();
+
+    vector<Decision_Rule> best_drs(PROBLEM.agents_number);
+    if (best_val > init_val){
+        //-- build decision rules
+        for(int agent = 0; agent < PROBLEM.agents_number; ++agent){
+            for(const Support & ihistory : oState->get_iHistories(agent, oState->is_compressed)){
+                for(int u = 0; u < PROBLEM.actions_number_byAgent[agent]; u++){
+                    double val = best_vals[names_id_map[get_i_decision_name(agent, ihistory, u)]];
+                    if(val > 0.0){
+                        best_drs.at(agent).set_action(ihistory, u);
+                    }
+                }
+            }
+        }
+    }
+
+    return make_tuple(best_drs, best_beta, best_val);
+
+#endif // end CPLEX_FOUND
+}
+
+
+tuple<vector<Decision_Rule>, Beta_Map, double> Hyperplane_LowerBound::_update_enum(Occupancy_State_Base * oState, double init_val) {
+    
+    //-- Compute decision rules
+    Decision_Rules_Enumeration drs_enum(PROBLEM.agents_number);
+    for (int agent: PROBLEM.agents)
+        drs_enum.add_agent(oState->get_iHistories(agent, oState->is_compressed), PROBLEM.actions_number_byAgent[agent]);
+
+    //-- iterate on all decision rules
+    double best_val = init_val;
+    Beta_Map best_beta;
+    vector<Decision_Rule> best_drs;
+    for (int i = 0; i < drs_enum.size; i++){
+        vector<Decision_Rule> drs = drs_enum.get(i);
+        auto [val_drs, beta_k] = this->_eval_decisionRules(oState, drs);
+        if (val_drs > best_val){
+            best_drs = drs;
+            best_val = val_drs;
+            best_beta = beta_k;
+        }
+    }
+
+    return make_tuple(best_drs, best_beta, best_val);
+}
+
+/// @warning: assume that   this->_set_betas(oState)   has been called before
+pair<double, Beta_Map> Hyperplane_LowerBound::_eval_decisionRules(Occupancy_State_Base * oState, vector<Decision_Rule> & drs){
+    double best_val = -INFINITY;
+    Beta_Map best_beta;
+
+    for (const Beta_Map & beta_k : this->betas){
+        double val_drs = 0;
+        for (const auto supp_proba: oState->get_supports_probas(oState->is_compressed)){
+            Support supp = supp_proba.first;
+            double proba = supp_proba.second;
+            int action_joint = oState->get_jAction(drs, supp);
+            supp.set_jAction(action_joint);
+            val_drs += proba* beta_k.at(supp);
+        }
+        if (val_drs > best_val){
+            best_val = val_drs;
+            best_beta = beta_k;
+        }
+    }
+    return make_pair(best_val, best_beta);
+}
+
+void Hyperplane_LowerBound::_build_hyperplane(Occupancy_State_Base * oState, vector<Decision_Rule> & drs, const Beta_Map & best_beta){
+    Hyperplane new_alpha;
+    for (const auto & supp_proba: oState->get_supports_probas(false)){
+        //-- Find the support value
+        Support supp_child = oState->get_label(supp_proba.first);
+        int action_joint = oState->get_jAction(drs, supp_child);
+        supp_child.set_jAction(action_joint);
+        double val = best_beta.at(supp_child);
+        //-- set the hyperplane support value
+        new_alpha.set_value(supp_proba.first, val);
+    }
+    this->_add_hyperplane(new_alpha);
+}
+
+void Hyperplane_LowerBound::_set_betas(vector<Occupancy_State_Base *> & oStates){    
+    //-- fill the set of oStates support
+    Support_Set support_set;
+    for (const Occupancy_State_Base * oState: oStates){
+        for (const auto& support_proba: oState->get_supports_probas(oState->is_compressed)){ // @todo test without compression ?
+            support_set.emplace(support_proba.first);
+        }
+    }
+    //-- compute betas
+    this->_set_betas(support_set);
+}
+
+void Hyperplane_LowerBound::_set_betas(Occupancy_State_Base * oState){
+    //-- fill the set of oStates support
+    Support_Set support_set;
+    for (const auto& support_proba: oState->get_supports_probas(oState->is_compressed)){
+        support_set.emplace(support_proba.first);
+    }
+    //-- compute betas
+    this->_set_betas(support_set);
+}
+
+/// @brief Compute a beta for each next-time step hyperplane
+void Hyperplane_LowerBound::_set_betas(Support_Set & support_set){
+    this->betas.clear();
+    this->betas.reserve(this->next_bound->size());
+    
+    double default_val = this->next_bound->default_val;
+
+    //-- for each next-time hyperplane
+    for (const Hyperplane & alpha: this->next_bound->hyperplanes){
+        Beta_Map beta_map;
+        //-- for each hyperplane support
+        for (Support support: support_set){
+            int x = support.get_hiddenState();
+            //-- for each joint action
+            for (int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                double q_o_u = PROBLEM.rewards_matrix(x, ju);
+                //-- for each reachable support from the (hidden_state, action_joint)
+                const auto &reachables = PROBLEM.reachables_from_x_u[x][ju];
+                for (const auto & reached: reachables){
+                    auto next_support = support.do_step(reached.y, reached.joint_obs);
+                    q_o_u += PROBLEM.discount * reached.proba * alpha.get_value(next_support, default_val);
+                }
+                support.set_jAction(ju);
+                beta_map[support] = q_o_u;
+            }
+        }
+        this->betas.push_back(beta_map);
+    }
+}
+
+///////////////////////////
+// Hyperplane_LowerBounds
+///@brief a collection of bounds (one for each time-step)
+//////////////////////////
+Hyperplane_LowerBounds::Hyperplane_LowerBounds(int horizon){
+    this->lower_bounds.resize(horizon + 1);
+
+    // pessimist reward = max_{actions} min_{states} r(s, a)
+    double blind_reward;
+    tie(std::ignore, blind_reward) = Decision_Rule::blind_heuristic();
+    double worst_reward;
+    tie(std::ignore, worst_reward) = Decision_Rule::worst_heuristic();
+
+    //-- make bounds:
+    //--   pessimist values for each time-step
+    //--   for a given time-step, same value for each state
+    double valueToGo_worst = 0;
+    double valueToGo_blind = 0;
+    for(int step = horizon; step >= 0; step--){
+        this->lower_bounds.at(step) = Hyperplane_LowerBound(Hyperplane(), valueToGo_worst, valueToGo_blind, 
+                                       step < horizon ? &this->lower_bounds.at(step + 1): nullptr);
+        valueToGo_worst = worst_reward + PROBLEM.discount * valueToGo_worst;
+        valueToGo_blind = blind_reward + PROBLEM.discount * valueToGo_blind;
+    }
+}
+
+Hyperplane_LowerBound & Hyperplane_LowerBounds::at(int step){
+    return this->lower_bounds.at(step);
+}
+
+double Hyperplane_LowerBounds::get_value(Occupancy_State_Base * oState) const{
+    return this->lower_bounds.at(oState->get_step()).get_value(oState);
+}
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/value_representation/max_plane.hpp b/code/src/decPOMDP/simultaneous/value_representation/max_plane.hpp
new file mode 100755
index 0000000000000000000000000000000000000000..2296503cf005e7a3c12f79dabfed3ac0a273f591
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/max_plane.hpp
@@ -0,0 +1,117 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+
+#include <unordered_map>
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+struct Hyperplane{
+    Support_Val_Map container; // map: support -> value
+
+    Hyperplane();
+
+    bool is_dominated(const Hyperplane &, double default_val) const;
+    bool is_dominated(const vector<Hyperplane> & , double default_val) const;
+    double get_value(Occupancy_State_Base *, double default_value) const;
+    double get_value(const Support &, double default_val) const;
+    double get_value(const Support & support) const;
+    void set_value(const Support &, double val);
+    size_t size() const;
+
+    //-- print
+    friend ostream &operator<<(ostream &os, const Hyperplane &h){
+        for (auto & support_val: h.container){
+            os << support_val.first << "  val: " <<  support_val.second << endl;
+        }
+        return os;
+    }
+
+private:
+    static int ID (){
+       static int ID = 0;
+       return ID ++;
+    }
+    int id;
+};
+
+///////////////////////////
+// Hyperplane_LowerBound
+//////////////////////////
+
+using Beta_Map = Support_Val_Map; // @todo: use the Hyperplane class
+
+class Hyperplane_LowerBound{
+    static constexpr double PRUNE_THRESH = 1.25; // prune when hyperplanes.size() > PRUNE_THRESH * size_last_pruning
+
+    vector<Hyperplane> hyperplanes;
+    vector<Hyperplane> newHyperplanes;
+    int size_last_pruning = 0; // The number of hyperplanes in the set when the last pruning was made
+    double default_val; // support value when a support is not in the alpha map.
+    double oState_min_value;
+    Hyperplane_LowerBound *next_bound; // next time-step bound
+    vector<Beta_Map> betas;
+
+public:
+    Hyperplane_LowerBound();
+    Hyperplane_LowerBound(const Hyperplane &, double default_val, double oState_min_value, Hyperplane_LowerBound *next_bound);
+
+    double update(Occupancy_State_Base *, double init_value);
+    double get_value(Occupancy_State_Base *)const;
+    double get_value(Support) const;
+    int size() const; // hyperplanes size
+
+    //-- print
+    friend ostream &operator<<(ostream &os, const Hyperplane_LowerBound &l){
+        int size = l.size();
+        cout << "hyperplanes number " << size << endl;
+        for (int i = 0; i < size; i++){
+            cout << "hyperplane " << i << ":"<< endl;
+            os << l.hyperplanes.at(i);
+        }
+        return os;
+    }
+
+private:
+    void _prune();
+    void _add_hyperplane(const Hyperplane &);
+
+    void _build_hyperplane(Occupancy_State_Base *, vector<Decision_Rule> &, const Beta_Map & );
+    tuple<vector<Decision_Rule>, Beta_Map, double> _update_enum(Occupancy_State_Base *, double init_val);
+    tuple<vector<Decision_Rule>, Beta_Map, double> _update_milp(Occupancy_State_Base *, double init_val);
+    tuple<vector<Decision_Rule>, Beta_Map, double> _update_wcsp(Occupancy_State_Base *, double init_val);
+    
+    void _set_betas(Occupancy_State_Base *);
+    void _set_betas(vector<Occupancy_State_Base *> &);
+    void _set_betas(Support_Set &);
+
+    pair<double, Beta_Map> _eval_decisionRules(Occupancy_State_Base *, vector<Decision_Rule> &);
+};
+
+///////////////////////////
+// Hyperplane_LowerBounds
+///@brief a collection of bounds (one for each time-step)
+//////////////////////////
+
+struct Hyperplane_LowerBounds{
+    vector<Hyperplane_LowerBound> lower_bounds; // a lower bound by time-step
+
+    Hyperplane_LowerBounds(int horizon);
+
+    Hyperplane_LowerBound & at(int step);
+    double get_value(Occupancy_State_Base *) const;
+
+    //-- print
+    friend ostream &operator<<(ostream &os, const Hyperplane_LowerBounds &ls){
+        cout << " *** LowerBounds size :";
+        for (auto &l: ls.lower_bounds){
+            os << l.size() << " ";
+        }
+        return os;
+    }
+};
+
+
+}} // end namespace
diff --git a/code/src/decPOMDP/simultaneous/value_representation/mdp_solution.cpp b/code/src/decPOMDP/simultaneous/value_representation/mdp_solution.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..05b7645962b08a810b84b1d0687bb398617d8326
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/mdp_solution.cpp
@@ -0,0 +1,44 @@
+#include "mdp_solution.hpp"
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+MDP_Solution::MDP_Solution(){
+}
+
+void MDP_Solution::solve(){
+    this->mdp_solver.solve();
+}
+
+
+double MDP_Solution::get_value(Occupancy_State &oState){
+    //-- stored in the oState ?
+    if (oState.relax_value > -INFINITY)
+        return oState.relax_value;
+
+    //-- compute
+    int step = oState.get_step();
+    if (step == SEARCH.horizon)
+        return 0; // terminal value
+    const auto & belief = oState.get_belief();
+    double value = this->mdp_solver.get_value(step, belief);
+
+    //-- store
+    oState.relax_value = value;
+
+    return value;
+}
+
+
+double MDP_Solution::get_Qvalue(int step, int action, const POMDP::Belief & belief){
+    return this->mdp_solver.get_Qvalue(step, action, belief);
+}
+
+
+double MDP_Solution::get_Qvalue(int step, int action, int state){
+    return this->mdp_solver.get_Qvalue(step, action, state);
+}
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/value_representation/mdp_solution.hpp b/code/src/decPOMDP/simultaneous/value_representation/mdp_solution.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..bdbc37df082faf96abb336f4e44b8f05d57ec4ae
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/mdp_solution.hpp
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "../occupancy_state.hpp"
+
+#include <unordered_map>
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+
+    class MDP_Solution{
+
+        MDP::Backward_Induction mdp_solver;
+        
+    public:
+        MDP_Solution();
+        void solve();
+
+        double get_value(Occupancy_State &oState);
+        double get_Qvalue(int step, int action, const POMDP::Belief & belief);
+        double get_Qvalue(int step, int action, int state);
+    };
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/value_representation/pomdp_solution.cpp b/code/src/decPOMDP/simultaneous/value_representation/pomdp_solution.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..90617621ad2acdab271461ca0f7a844563181a5f
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/pomdp_solution.cpp
@@ -0,0 +1,114 @@
+#include "pomdp_solution.hpp"
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+    
+    
+    /// @brief constructor
+    POMDP_Solution::POMDP_Solution(POMDP::HSVI * hsvi_pomdp): hsvi_pomdp(hsvi_pomdp) {
+        //-- resize mappings (a map for each time-step)
+        this->oState_values.resize(SEARCH.horizon + 1);
+        this->beliefs_values.resize(SEARCH.horizon + 1);
+        this->beliefs_Qvalues.resize(SEARCH.horizon + 1);
+    }
+
+
+    /// @brief oState evaluation.
+    /// 1) Looking for the value in the oState (faster)
+    /// 2) Looking for the value in the mapping: oState -> pomdp value
+    /// 3) Compute the oState value (by addition of joint histories values)
+    double POMDP_Solution::get_value(Occupancy_State &oState){
+        int step = oState.get_step();
+        if (step == SEARCH.horizon)
+            return 0; // terminal value
+
+        //-- 1) stored in the oState ?
+        if (oState.relax_value > -INFINITY)
+            return oState.relax_value;
+        
+        //-- 2) stored in the mapping ?
+        const auto & values = this->oState_values.at(step);
+        auto got = values.find(oState);
+        if (got != values.end()){
+            return got->second;
+        }
+
+        //-- 3) compute
+        double oState_value = 0;
+        for (const auto & jh_beliefProba: oState.get_beliefState(oState.is_compressed)){
+            oState_value += jh_beliefProba.second.second * this->get_value(step, jh_beliefProba.second.first);
+        }
+
+        //-- store
+        oState.relax_value = oState_value;
+        this->oState_values.at(step)[oState] = oState_value;
+
+        return oState_value;
+    }
+
+
+    /// @brief Belief evaluation.
+    /// 1) Looking for the value in the mapping: belief -> pomdp value
+    /// 2) Compute the belief value
+    double POMDP_Solution::get_value(int step, const POMDP::Belief & belief){
+        //-- 1) stored ?
+        auto & values = this->beliefs_values[step];
+        auto got = values.find(belief);
+        if (got != values.end()){
+            return got->second;
+        }
+
+        //-- 2) no: compute
+        double value = this->hsvi_pomdp->get_UpperVal(belief, step);
+
+        //-- store
+        values[belief] = value;
+
+        return value;
+    }
+
+
+    /// @brief Belief Qvalues for all joint action.
+    /// 1) Looking for the values in the mapping: belief -> pomdp Qvalues
+    /// 2) Compute the belief Qvalues
+    /// @return A vector of Qvalue (a value for each joint action).
+    const vector<double> & POMDP_Solution::get_Qvalues(int step, const POMDP::Belief & belief){ 
+        //-- 1) stored ?
+        auto & values = this->beliefs_Qvalues.at(step);
+        auto got = values.find(belief);
+        if (got != values.end()){
+            return got->second;
+        }
+
+        //-- 2) no: compute
+        vector<double> Qvalues(PROBLEM.actions_joint_number);
+        for (int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+#if false //-- @todo check which is faster: use hsvi_pomdp->get_Q_UpperVal() or the following. More generally is it worth to memoize beliefs values ?
+            //-- Remark:
+            //--    The following lines could simplify to 
+            //--        Qvalues.at(ju) = this->hsvi_pomdp->get_Q_UpperVal(belief, ju, step);
+            //--    But for performance we use the "local" mapping.
+            double Qvalue = belief.getExpectedReward(ju);
+            if (step < SEARCH.horizon - 1){
+                double V_next = 0;
+                for (auto & obs_belief: belief.get_reacheable_beliefs(ju)){
+                    POMDP::Belief & newBelief = obs_belief.second;
+                    V_next += this->get_value(step + 1, newBelief); // here we use the "local" mapping
+                }
+                Qvalue += PROBLEM.discount * V_next;
+            }
+            Qvalues.at(ju) = Qvalue;
+#else
+            Qvalues.at(ju) = this->hsvi_pomdp->get_Q_UpperVal(belief, ju, step);
+#endif
+        }
+        
+        //-- store
+        values[belief] = Qvalues;
+        
+        return values[belief];
+    }
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/value_representation/pomdp_solution.hpp b/code/src/decPOMDP/simultaneous/value_representation/pomdp_solution.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..f18498ce660ad120e48b7e1b5fb55d20da553c7b
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/pomdp_solution.hpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include "../occupancy_state.hpp"
+
+#include <unordered_map>
+
+namespace decPOMDP{
+namespace simultaneous{
+    using namespace std;
+
+    class POMDP_Solution{
+
+        using oState_Value_Map = unordered_map<Occupancy_State, double, oStateHash>;
+        using Belief_Value_Map = unordered_map<POMDP::Belief, double, POMDP::Belief_Hash>;
+        using Belief_QValues_Map = unordered_map<POMDP::Belief, vector<double>, POMDP::Belief_Hash>;
+
+    public:
+        //-- POMDP solution
+        POMDP::HSVI * hsvi_pomdp;
+        //-- Mappings: belief/oState -> evaluation
+        vector<oState_Value_Map> oState_values; // a map for each time-step
+        vector<Belief_Value_Map> beliefs_values; // a map for each time-step
+        vector<Belief_QValues_Map> beliefs_Qvalues; // a map for each time-step
+
+        POMDP_Solution(POMDP::HSVI * hsvi_pomdp);
+        double get_value(Occupancy_State &oState);
+        double get_value(int step, const POMDP::Belief & belief);
+        const vector<double> & get_Qvalues(int step, const POMDP::Belief & belief);
+
+    };
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/value_representation/sawtooth.cpp b/code/src/decPOMDP/simultaneous/value_representation/sawtooth.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4eda32bb5331348da320fbbb87c85bbfb57bf787
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/sawtooth.cpp
@@ -0,0 +1,538 @@
+#include "sawtooth.hpp"
+#include "sawtooth_milp.hpp"
+
+
+#ifndef CPLEX_NOT_FOUND
+    #include <ilcplex/ilocplex.h>
+    ILOSTLBEGIN
+#endif
+#ifdef TB2
+    #include "toulbar2lib.hpp"
+#endif
+
+#include <sstream>
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+////////////////////////////////
+// Tooth
+////////////////////////////////
+
+Tooth::Tooth(Occupancy_State & oState, double value, double relax_value):
+    oState(oState),
+    value(value),
+    id(ID()),
+    relax_value(relax_value){
+
+    //-- memoize the tooth slopes (for each joint history)
+    /*for (const auto & jh_beliefProba: oState.get_beliefState(oState.is_compressed)){
+        //-- compute: slope_jh = (tooth_value - relax_value) / Pr(jh)
+        this->jhs_slope.emplace(jh_beliefProba.first, (value - relax_value) / jh_beliefProba.second.second);
+    }*/
+}
+
+bool Tooth::operator==(const Tooth & other) const{
+    return this->id == other.id;
+}
+
+bool Tooth::operator!=(const Tooth & other) const{
+    return this->id != other.id;
+}
+
+ostream & operator<<(ostream &os, const Tooth &tooth){
+    os << tooth.oState << " : " << tooth.value;
+    return os;
+}
+
+////////////////////////////////
+// Sawtooth_Bound
+////////////////////////////////
+
+Sawtooth_Bound::Sawtooth_Bound() {}
+
+Sawtooth_Bound::Sawtooth_Bound(MDP_Solution & mdp_sol):
+    mdp_sol(&mdp_sol){}
+
+
+/// @brief Number of teeth. 
+int Sawtooth_Bound::size() const{
+    return this->teeth.size();
+}
+
+
+/// @brief The value of an oState is the best value w.r.t. the teeth (i.e. the min value). 
+double Sawtooth_Bound::get_value(Occupancy_State &oState) {
+    double min_diff = 0; // min_diff \leq 0
+    for(Tooth & tooth : this->teeth) {
+        double diff = this->_get_maxDiff(oState, tooth);
+        min_diff = min(min_diff, diff);
+    }
+    double relax_val = this->mdp_sol->get_value(oState);
+    return relax_val + min_diff;
+}
+
+
+/// @brief The value v of an oState s w.r.t. a tooth is:
+///     v = Vrelax(s) + max_{jh} tooth_slope(jh) / s(jh)    with tooth_slope < 0
+double Sawtooth_Bound::_get_value(Occupancy_State & oState, Tooth & tooth){
+    return this->mdp_sol->get_value(oState) + this->_get_maxDiff(oState, tooth); 
+}
+
+
+/// @brief Maximum (ponderated) tooth slope.
+/// @return A value <= 0.
+double Sawtooth_Bound::_get_maxDiff(Occupancy_State & oState, Tooth & tooth){
+    bool use_compress = oState.is_compressed && tooth.oState.is_compressed;
+    
+    const auto & supps_proba = oState.get_supports_probas(use_compress);
+    const auto & tooth_supps_proba = tooth.oState.get_supports_probas(use_compress);
+
+    if (tooth_supps_proba.size() > supps_proba.size())
+        return 0;
+    
+    double min_ratio = INFINITY;
+    for (const auto & tooth_supp_proba: tooth_supps_proba){
+        auto supp_proba = supps_proba.find(tooth_supp_proba.first); 
+        if (supp_proba == supps_proba.end()){
+            ///@todo SEARCH IN LABELS ?????????
+            return 0;
+        }
+        else{
+            double ratio = supp_proba->second / tooth_supp_proba.second;
+            min_ratio = min(min_ratio, ratio);
+        }
+    }
+    return min_ratio * (tooth.value - tooth.relax_value);
+}
+
+
+/// @brief A tooth ta = (s_a, v_a) is point-dominated by a tooth tb,
+///     iif the value of s_a w.r.t. tb is better than v_a.
+bool Sawtooth_Bound::_isPointDominated(Tooth & ta, Tooth & tb){
+    return ta != tb && this->_get_value(ta.oState, tb) <= ta.value;
+}
+
+
+bool Sawtooth_Bound::_isPointDominated(Tooth & tooth, vector<Tooth> & toothCollection){
+
+    if (tooth.relax_value <= tooth.value)
+        return true;
+
+    for(Tooth & tooth2 : toothCollection) {
+        if(this->_isPointDominated(tooth, tooth2))
+            return true;
+    }
+
+    return false;
+}
+
+
+/// @brief Append a new tooth = a couple (oState, value) and prune teeth that this new one dominates.
+/// @warning assume that this tooth is not dominated by any existing tooth (greedy selection should check that before).
+void Sawtooth_Bound::update(Occupancy_State & oState, double value) {
+    double relax_value = this->mdp_sol->get_value(oState);
+    Tooth new_tooth = Tooth(oState, value, relax_value);
+    
+#if false // useless: update() should only be called if an improving value have been found during greedy selection
+    if (this->_isPointDominated(new_tooth, this->teeth)){
+	    return;
+    }
+#endif
+
+    //-- pruning (keep only teeth that are not dominated by the new one)
+    for (auto it = this->teeth.begin(); it != this->teeth.end(); ){
+        if(this->_isPointDominated(*it, new_tooth))
+            it = this->teeth.erase(it); // prune
+        else
+            it++;
+    }
+
+    //-- add the new tooth
+    this->teeth.push_back(new_tooth);
+}
+
+
+////////////////////////////////
+// Sawtooth_Bounds:
+// a collection of bounds (one for each time-step)
+////////////////////////////////
+
+Sawtooth_Bounds::Sawtooth_Bounds():
+    bounds(SEARCH.horizon + 1, Sawtooth_Bound(this->mdp_sol)){    
+    this->mdp_sol.solve();
+}
+
+
+const vector<Sawtooth_Bound> & Sawtooth_Bounds::get_bounds() const{
+    return this->bounds;
+}
+
+
+/// @brief The value of an oState is the best value w.r.t. the teeth (at corresponding time-step). 
+double Sawtooth_Bounds::get_value(Occupancy_State & oState){
+    int step = oState.get_step();
+    return this->bounds.at(step).get_value(oState);
+}
+
+
+void Sawtooth_Bounds::update(Occupancy_State & oState, double value){
+    int step = oState.get_step();
+    this->bounds.at(step).update(oState, value);
+}
+
+
+/// @brief Compute Qvalue(oState, drs), from Bellman evaluation:
+/// 1) Compute the successor oState_next.
+/// 2) Compute value = R(oState, drs) + \gamma V(oState_next).
+/// Main use: greedy selection with enumeration (i.e. evaluate each decision rules).
+pair<Occupancy_State, double> Sawtooth_Bounds::_eval_decisionRules(Occupancy_State & oState, vector<Decision_Rule> & drs){
+    Occupancy_State oState_next = oState.do_step(drs);
+    if (SEARCH.compress)
+        oState_next.compress();
+    double value = oState.get_expected_reward(drs) + PROBLEM.discount * this->get_value(oState_next);
+    return make_pair(oState_next, value);
+}
+
+
+/// @brief greedy search: decision_rules that maximize Q(oState, decision_rules)
+/// @return the pair: (the successor of oState applying the greedy decision rules, the upper bound value)
+pair<Occupancy_State, double> Sawtooth_Bounds::select_greedy(Occupancy_State & oState, double min_val, double max_val){
+    
+    Occupancy_State oState_next;
+    double upper_value;
+
+    switch (SEARCH.solver_drs)
+    {
+    case enumeration:
+        tie(oState_next, upper_value) = this->_select_greedy_enum(oState);
+        break;
+    case milp:
+        //-- debug: compare milp vs enum (enum is OK)
+        // cout << "teeth " << this->bounds.at(oState.get_step() + 1).teeth.size() << " ";
+        // cout << "step " << oState.get_step() << " ";
+        tie(oState_next, upper_value) = this->_select_greedy_milp(oState);
+        // cout << "milp " << upper_value;
+        // tie(oState_next, upper_value) = this->_select_greedy_enum(oState);
+        // cout << " enum " << upper_value << endl;
+        break;
+    case wcsp:
+        //-- debug: compare wcsp vs enum
+        cout << "teeth " << this->bounds.at(oState.get_step() + 1).teeth.size() << " ";
+        cout << "step " << oState.get_step() << " ";
+        tie(oState_next, upper_value) = this->_select_greedy_wcsp(oState);
+        cout << "wcsp " << upper_value;
+        tie(oState_next, upper_value) = this->_select_greedy_enum(oState);
+        cout << " enum " << upper_value << endl;
+        break;
+    default:
+        throw sdm_exception::Exception(sdm_exception::bad_joke, "Sawtooth_Bounds::select_greedy() unknown decision rules solver");
+        break;
+    }
+    return make_pair(oState_next, upper_value);
+}
+
+
+pair<Occupancy_State, double> Sawtooth_Bounds::_select_greedy_enum(Occupancy_State & oState){
+    Occupancy_State greedy_oState_next;
+    double greedy_value = -INFINITY;
+
+    //-- compute decision rules
+    Decision_Rules_Enumeration drs_enum(PROBLEM.agents_number);
+    for (int agent: PROBLEM.agents){
+        drs_enum.add_agent(oState.get_iHistories(agent, oState.is_compressed), PROBLEM.actions_number_byAgent[agent]);
+    }
+
+    //-- iterate on joint decision rules
+    for (int i = 0; i < drs_enum.size; i++){
+        //-- timeout ?
+        if (SEARCH.is_timeout()) 
+            throw sdm_exception::Exception(sdm_exception::timeout, "Sawtooth_Bounds::_select_greedy_enum()");
+        //-- evaluate decision rule
+        vector<Decision_Rule> drs = drs_enum.get(i);
+        auto[oState_next, drs_value] = this->_eval_decisionRules(oState, drs);
+        //-- greedy ?
+        if (drs_value > greedy_value){
+            greedy_value = drs_value;
+            greedy_oState_next = oState_next;
+        }
+    }
+
+    //-- compress
+    if (SEARCH.compress && !greedy_oState_next.is_compressed)
+        greedy_oState_next.compress();
+
+    return make_pair(greedy_oState_next, greedy_value);
+}
+
+
+pair<Occupancy_State, double> Sawtooth_Bounds::_select_greedy_wcsp(Occupancy_State & oState){
+#ifdef TB2
+    int step = oState.get_step();
+    Sawtooth_Bound & bound_next = this->bounds.at(step + 1);
+    vector<Tooth> & teeth = bound_next.teeth;
+
+
+    static const auto get_j_decision_name = [](Support jhistory, int jaction) {return "jh." + to_string(jhistory.get_container()) + ".ju." + to_string(jaction);};
+    static const auto get_i_decision_name = [](int agent, Support ihistory) {return "ag." + to_string(agent) + ".ih." + to_string(ihistory.get_container());};
+    unordered_map<string, int> names_id_map;
+
+
+    if (teeth.empty()){
+        //-- initialize wcsp
+        tb2init();
+        ToulBar2::verbose = -1;
+        initCosts();
+        WeightedCSPSolver* wcsp_solver = WeightedCSPSolver::makeWeightedCSPSolver(MAX_COST);
+
+        //-- Build variables ai(ui|hi)
+        for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+            for(const Support & ihistory : oState.get_iHistories(agent, oState.is_compressed)){
+                string i_name = get_i_decision_name(agent, ihistory);
+                int var_index = wcsp_solver->getWCSP()->makeEnumeratedVariable(i_name, 0, PROBLEM.actions_number_byAgent[agent] - 1);
+                names_id_map[i_name] = var_index;
+            }
+        }
+
+        static const long long offset = 1000000000000;
+        double max_val = 1000;
+        for (const auto & jh_bP: oState.get_beliefState(oState.is_compressed)){
+            const Support & jh = jh_bP.first;
+            const POMDP::Belief & belief = jh_bP.second.first; // belief is normalized
+            double proba = jh_bP.second.second;
+            //-- costs
+            vector<Cost> costs;
+            costs.reserve(PROBLEM.actions_joint_number);
+            for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                string j_name = get_j_decision_name(jh_bP.first, ju);
+                double Qrelax = proba * this->mdp_sol.get_Qvalue(step, ju, belief);
+                costs.push_back(offset * (max_val - Qrelax));
+            }
+            assert(PROBLEM.agents_number == 2);
+            int var_index0 = names_id_map.at(get_i_decision_name(0, jh_bP.first.get_iHistory(0)));
+            int var_index1 = names_id_map.at(get_i_decision_name(1, jh_bP.first.get_iHistory(1)));
+            //-- @todo check : CETTE FONCTION (postBinaryConstraint) ENGENDRE UNE FUITE DE MEMOIRE 
+            wcsp_solver->getWCSP()->postBinaryConstraint(var_index0, var_index1, costs);
+        }
+
+        //-- solve
+        vector<int> sol;
+        wcsp_solver->getWCSP()->sortConstraints();
+        if (wcsp_solver->solve()){
+            wcsp_solver->getSolution(sol);
+            // long long cost_k = wcsp_solver->getSolutionValue();
+        }
+        else{
+            throw sdm_exception::Exception(sdm_exception::toulbar, "decPOMDP::hyperplane::_update_wcsp() no solution ?");
+        }
+
+        //-- build decision rules
+        vector<Decision_Rule> best_drs(PROBLEM.agents_number);    
+        for(int agent = 0; agent < PROBLEM.agents_number; ++agent){
+            for(const Support & ihistory : oState.get_iHistories(agent, oState.is_compressed)){
+                int var_index = names_id_map[get_i_decision_name(agent, ihistory)];
+                int iu = sol[var_index];
+                best_drs.at(agent).set_action(ihistory, iu);
+            }
+        }
+
+        //-- eval
+        auto[oState_next, drs_value] = this->_eval_decisionRules(oState, best_drs);
+
+        //-- finalize
+        if (SEARCH.compress)
+            oState_next.compress();
+
+        return make_pair(oState_next, drs_value);
+
+    }
+#else
+    return make_pair(Occupancy_State(), -1);
+#endif // end TB2
+}
+
+
+pair<Occupancy_State, double> Sawtooth_Bounds::_select_greedy_milp(Occupancy_State & oState){
+#ifndef CPLEX_NOT_FOUND
+    int step = oState.get_step();
+    Sawtooth_Bound & bound_next = this->bounds.at(step + 1);
+    vector<Tooth> & teeth = bound_next.teeth;
+
+    Cplex_Sawtooth milp(oState, teeth);
+    
+    //-- Build sawtooth constraints
+    
+    if (teeth.empty()){ 
+        //-- greedy upper bound w.r.t. relax solution:
+
+        //-- constraint     
+        //--        V <= \sum_{<x,h>,u} a(u|h) Qrelax(x,u) s(<x,h>)
+        //--    OR  V <= \sum_{h} a(u|h) Qrelax(h,u) s(h)   where Qrelax(h,u) = Qrelax(belief(h),u)
+        milp.con.add(IloRange(milp.env, -IloInfinity, 0.0)); // con: <= 0
+        milp.con[milp.con_number].setLinearCoef(milp.get_var_Vobj(), 1.0); // con: V <= 0
+        
+        /*
+        //-- V <= \sum_{<x,h>,u} a(u|h) Qrelax(x,u) Pr(<x,h>)
+        //-- we build the mapping  <u, h> -> \sum_{x} Qrelax(x,u) s(<x,h>)
+        //--    for each <x,h>
+        unordered_map<Support, double> jhus_coeff;
+        for (const auto & supp_proba: oState.get_supports_probas(oState.is_compressed)){
+            const int x = supp_proba.first.get_hiddenState();
+            Support jhu = supp_proba.first.get_jHistory();
+            const double proba = supp_proba.second;
+            //--    for each u
+            for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                double Qrelax = this->mdp_sol.get_Qvalue(step, ju, x);
+                jhu.set_jAction(ju);
+                auto jhu_coeff = jhus_coeff.find(jhu);
+                if (jhu_coeff == jhus_coeff.end()){
+                    jhus_coeff.emplace(jhu, -Qrelax * proba);
+                }
+                else{
+                    jhu_coeff->second += -Qrelax * proba;
+                }
+            }
+        }
+        for (const auto & jhu_coeff : jhus_coeff){
+            Support jhu = jhu_coeff.first;
+            int ju = jhu.get_jAction();
+            jhu.clear_actions();
+            const auto & var_j_decision = milp.get_var_jDecision(jhu, ju);
+            milp.con[milp.con_number].setLinearCoef(var_j_decision, jhu_coeff.second); // con: V - \sum_{h} a(u|h) Qrelax(h,u) <= 0
+        }
+        milp.con_number++;
+        */
+
+        //--  V <= \sum_{h,u} a(u|h) * Qrelax(h,u) * s(h)
+        //--    for each h
+        for (const auto & jh_beliefProba : oState.get_beliefState(oState.is_compressed)){
+            const Support & jh = jh_beliefProba.first;
+            const POMDP::Belief & belief = jh_beliefProba.second.first; // belief is normalized
+            double proba = jh_beliefProba.second.second;
+            //--    for each u
+            for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                double Qrelax = proba * this->mdp_sol.get_Qvalue(step, ju, belief);
+                const auto & var_j_decision = milp.get_var_jDecision(jh, ju);
+                milp.con[milp.con_number].setLinearCoef(var_j_decision, -Qrelax); // con: V - \sum_{h} a(u|h) Qrelax(h,u) <= 0
+            }
+        }
+        milp.con_number++;
+    }
+    else{
+
+        //-- compute transitions probabilities (utility for ratio computation):
+        //--    Pr(x',h' | x,h,u)
+        //--    i.e. the proba to obtain <x',h'> from <x,h> with control u  
+        unordered_map<Support, unordered_map<Support, double>> transitions; // Pr[xhu][x'h']
+        for (const auto & supp_proba: oState.get_supports_probas(oState.is_compressed)){
+            Support supp = supp_proba.first;
+            for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                const auto &reachables = PROBLEM.reachables_from_x_u[supp.get_hiddenState()][ju];
+                supp.set_jAction(ju);
+                for (const auto & reached: reachables){
+                    auto next_support = supp.do_step(reached.y, reached.joint_obs);
+                    transitions[supp][next_support] = reached.proba;
+                }
+            }
+        }
+
+        for (Tooth & tooth: teeth){
+            const auto & var_Phi = milp.get_var_theta(tooth.id);
+
+            //-- 1) constraint     V <= \sum_{h} a(u|h) * Qrelax(h,u) * s(h) - Phi_k * (v_k - V_k) 
+            milp.con.add(IloRange(milp.env, -IloInfinity, 0.0)); // con: <= 0
+            milp.con[milp.con_number].setLinearCoef(milp.get_var_Vobj(), 1.0); // V <= 0
+            //--    for each h
+            for (const auto & jh_beliefProba : oState.get_beliefState(oState.is_compressed)){
+                const Support & jh = jh_beliefProba.first;
+                const POMDP::Belief & belief = jh_beliefProba.second.first; // belief is normalized
+                double proba = jh_beliefProba.second.second;
+                //--    for each u
+                for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                    double Qrelax = proba * this->mdp_sol.get_Qvalue(step, ju, belief);
+                    const auto & var_j_decision = milp.get_var_jDecision(jh, ju);
+                    milp.con[milp.con_number].setLinearCoef(var_j_decision, -Qrelax); // con: V - \sum_{h} a(u|h) Qrelax(h,u) <= 0
+                }
+            }
+            milp.con[milp.con_number].setLinearCoef(var_Phi, (tooth.value - tooth.relax_value)); // con: V +  Phi_k (v_k - V_k) - \sum_{h} a(u|h) Qrelax(h,u) <= 0
+            milp.con_number++;
+
+            //-- 2) constraint     \sum_{<x',h'>} w_k(<x',h'>) = 1
+            double minimum = 1.0;
+            milp.con.add(IloRange(milp.env, 1.0, 1.0)); // con: = 1
+            for (const auto & supp_proba: tooth.oState.get_supports_probas(tooth.oState.is_compressed)){
+                const auto & var_omega = milp.get_var_omega(tooth.id, supp_proba.first);
+                milp.con[milp.con_number].setLinearCoef(var_omega, 1.0); // con: \sum_{<x',h'>} w_k(<x',h'>) = 1
+                minimum = min(minimum, supp_proba.second);
+            }
+            milp.con_number++;
+
+            //-- 3) constraints:
+            //--    Phi_k <= M (1 - w_k(<x',h'>)) + ratio(<x',h'>), foreach <x',h'> in support(tooth.oState)
+            //      where    ratio(x',h') = s'(x',h'|a) / s_tooth(x',h')
+            //                            = \sum_{<x,h>} \sum_{u} Pr(x',h' | x,h,u) * s(<x,h>) * a(u | h)  / s_tooth(x',h')
+            //      with Phi_k, w_k(<x',h'>), a(u | h) the variables
+            const double M = 100.0 / minimum;
+// cout << "CON " << endl << oState << endl;
+            for (const auto & tooth_supp_proba: tooth.oState.get_supports_probas(tooth.oState.is_compressed)){
+                Support tooth_supp = tooth_supp_proba.first; // <x',h'>
+                //-- init constraint
+                milp.con.add(IloRange(milp.env, -IloInfinity, M)); // con: <= M
+                milp.con[milp.con_number].setLinearCoef(var_Phi, 1.0); // con: Phi_k <= M
+                const auto & w_k = milp.get_var_omega(tooth.id, tooth_supp);
+                milp.con[milp.con_number].setLinearCoef(w_k, M); // con: Phi_k + M * w_k(<x',h'>)) <= M
+                
+                //-- ratio
+                double ratio = 0;
+                for (const auto & supp_proba: oState.get_supports_probas(oState.is_compressed)){
+                    Support xh = supp_proba.first; // <x,h>
+                    for(int ju = 0; ju < PROBLEM.actions_joint_number; ju++){
+                        Support xhu = xh;
+                        xhu.set_jAction(ju); // <x,h,u>
+                        auto got = transitions.find(xhu);
+                        assert(got != transitions.end());
+                        auto got2 = got->second.find(tooth_supp); // Pr(x',h' | x,h,u)
+                        if (got2 != got->second.end()){
+                            double coeff = got2->second * supp_proba.second / tooth_supp_proba.second; // Pr(x',h' | x,h,u) * s(<x,h>) / s_tooth(x',h')
+                            //-- fill constraint
+// cout << "name " << milp._get_jDecision_name(xh.get_jHistory(), ju) << endl;
+                            const auto & a = milp.get_var_jDecision(xh.get_jHistory(), ju); // a(u | h)
+                            milp.con[milp.con_number].setLinearCoef(a, coeff); // con: Phi_k + M * w_k(<x',h'>)) + \sum_{<x,h>} \sum_{u} Pr(x',h' | x,h,u) * s(<x,h>) * a(u | h)  / s_tooth(x',h') <= M
+                        }
+                    }
+                }
+                milp.con_number++;
+            }
+
+        } // end foreach tooth
+    }
+
+    //---- solve ----
+    //-- solve milp
+    double sol_value = milp.solve();
+    vector<Decision_Rule> sol_drs = milp.get_sol_decisionRules(oState);
+    
+    //-- finalize
+    Occupancy_State greedy_oState_next = oState.do_step(sol_drs);
+    if (SEARCH.compress)
+        greedy_oState_next.compress();
+
+    return make_pair(greedy_oState_next, sol_value);
+
+#else
+    return make_pair(Occupancy_State(), -1);
+#endif // end CPLEX_FOUND
+}
+
+
+ostream &operator<<(ostream &os, const Sawtooth_Bounds &s){
+    cout << " *** Sawtooth_Bounds size :";
+    for (const auto & l: s.bounds){
+        os << l.size() << " ";
+    }
+    return os;
+}
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/value_representation/sawtooth.hpp b/code/src/decPOMDP/simultaneous/value_representation/sawtooth.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..cc3192b1a37dbae59107e258c20a61c3fc3b5bde
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/sawtooth.hpp
@@ -0,0 +1,102 @@
+#pragma once
+
+#include "../../core/_module.hpp"
+#include "../occupancy_state.hpp"
+#include "mdp_solution.hpp"
+
+#include <unordered_map>
+
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+////////////////////////////////
+// Tooth:
+// a point, i.e. a couple (oState, value).
+////////////////////////////////
+
+struct Tooth{
+    Occupancy_State oState;
+    double value;
+
+    int id; // for operator==
+    unordered_map<Support, double> jhs_slope; // memoization for sawtooth algorithm
+    double relax_value;
+    
+    Tooth(Occupancy_State &, double value, double relax_value);
+
+    bool operator==(const Tooth & other) const;
+    bool operator!=(const Tooth & other) const;
+    friend ostream &operator<<(ostream &os, const Tooth &tooth);
+
+private:
+    static int ID (){
+       static int ID = 0;
+       return ID ++;
+    }
+
+};
+
+
+////////////////////////////////
+// Sawtooth_Bound:
+// a collection of teeth, corresponding to a time-step.
+////////////////////////////////
+
+class Sawtooth_Bounds;
+
+class Sawtooth_Bound{
+    vector<Tooth> teeth;
+
+    MDP_Solution * mdp_sol;
+    
+public:
+    Sawtooth_Bound();
+    Sawtooth_Bound(MDP_Solution &);
+    
+    int size() const;
+
+    friend Sawtooth_Bounds;
+
+protected:
+    void update(Occupancy_State &, double value);
+    double get_value(Occupancy_State &);
+
+    double _get_value(Occupancy_State &, Tooth &);
+    double _get_maxDiff(Occupancy_State &, Tooth &);
+    bool _isPointDominated(Tooth &, vector<Tooth> &);
+    bool _isPointDominated(Tooth &, Tooth &);
+};
+
+
+////////////////////////////////
+// Sawtooth_Bounds:
+// a collection of Sawtooth_Bound, for each time-step.
+////////////////////////////////
+
+class Sawtooth_Bounds{
+    vector<Sawtooth_Bound> bounds; // a bound by time-step
+    MDP_Solution mdp_sol;
+
+public:
+    Sawtooth_Bounds();
+
+    double get_value(Occupancy_State &);
+    void update(Occupancy_State &, double value);
+    const vector<Sawtooth_Bound> & get_bounds() const;
+
+    pair<Occupancy_State, double> select_greedy(Occupancy_State &, double min_val, double max_val);
+    
+protected:
+    pair<Occupancy_State, double> _eval_decisionRules(Occupancy_State &, vector<Decision_Rule> &);
+    pair<Occupancy_State, double> _select_greedy_enum(Occupancy_State &);
+    pair<Occupancy_State, double> _select_greedy_milp(Occupancy_State &);
+    pair<Occupancy_State, double> _select_greedy_wcsp(Occupancy_State &);
+    
+    friend ostream &operator<<(ostream &os, const Sawtooth_Bounds &s);
+};
+
+
+}} // end namespace
\ No newline at end of file
diff --git a/code/src/decPOMDP/simultaneous/value_representation/sawtooth_milp.cpp b/code/src/decPOMDP/simultaneous/value_representation/sawtooth_milp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..91ba58867c1ab7eca30be780ee1da1d88414ebf7
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/sawtooth_milp.cpp
@@ -0,0 +1,54 @@
+#include "sawtooth_milp.hpp"
+
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+Cplex_Sawtooth::Cplex_Sawtooth(Occupancy_State & oState, vector<Tooth> & teeth): Cplex_Base(maximize){
+    //-- Build Vobj = objective variable
+    string var_name = this->_get_Vobj_name();
+    this->_build_var(var_name);
+    this->var.add(IloNumVar(env, -IloInfinity, IloInfinity, var_name.c_str()));
+    this->objective.setLinearCoef(this->get_var_Vobj(), 1); // Build objective funtion
+    
+    //-- build decision rules
+    this->build_decisionRule_decentralized_deterministic(&oState);
+
+    //-- Build teeth variables
+    for (Tooth & tooth: teeth){
+        //-- Phi_k
+        string var_name = this->_get_theta_name(tooth.id);
+        this->_build_var(var_name);
+        this->var.add(IloNumVar(env, -IloInfinity, IloInfinity, var_name.c_str()));
+        //-- w_k(<x',h'>)
+        for (const auto & supp_proba: tooth.oState.get_supports_probas(tooth.oState.is_compressed)){
+            string var_name = this->_get_omega_name(tooth.id, supp_proba.first);
+            this->_build_var(var_name);
+            this->var.add(IloBoolVar(env, 0, 1, var_name.c_str()));
+        }
+    }
+    
+    
+}
+
+/// @brief Get the action
+/// @warning Require solve() first.
+vector<Decision_Rule> Cplex_Sawtooth::get_sol_decisionRules(Occupancy_State & oState){
+    vector<Decision_Rule> sol_drs(PROBLEM.agents_number);
+    for(int agent = 0; agent < PROBLEM.agents_number; agent++){
+        for(const auto & ih: oState.get_iHistories(agent, oState.is_compressed)){
+            for(int iu = 0; iu < PROBLEM.actions_number_byAgent[agent]; iu++){
+                string var_name = this->_get_iDecision_name(ih, iu, agent);
+                IloBool selected = this->cplex.getValue(this->_get_var(var_name));
+                if (selected){
+                    sol_drs.at(agent).set_action(ih, iu);
+                }
+            }
+        }
+    }
+    return sol_drs;
+}
+
+}} // end namespace
diff --git a/code/src/decPOMDP/simultaneous/value_representation/sawtooth_milp.hpp b/code/src/decPOMDP/simultaneous/value_representation/sawtooth_milp.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..737c81af72a01c267049ebb9c1856c1232c3b618
--- /dev/null
+++ b/code/src/decPOMDP/simultaneous/value_representation/sawtooth_milp.hpp
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "../../core/milp.hpp"
+#include "../occupancy_state.hpp"
+#include "sawtooth.hpp" // for Tooth
+
+
+#ifndef CPLEX_NOT_FOUND
+    #include <ilcplex/ilocplex.h>
+    ILOSTLBEGIN
+#endif
+
+namespace decPOMDP{
+namespace simultaneous{
+using namespace std;
+
+
+struct Cplex_Sawtooth: Cplex_Base{
+    static const bool maximize = true;
+
+    Cplex_Sawtooth(Occupancy_State &, vector<Tooth> &);
+
+    vector<Decision_Rule> get_sol_decisionRules(Occupancy_State &);
+    
+};
+
+
+}} // end namespace
diff --git a/code/src/main.cpp b/code/src/main.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..8a28a7252e7b3b4203b52c802df679c3d0dc535c
--- /dev/null
+++ b/code/src/main.cpp
@@ -0,0 +1,137 @@
+#include "core/_module.hpp"
+#include "parser/_module.hpp"
+#include "POMDP/_module.hpp"
+#include "decPOMDP/simultaneous/_module.hpp"
+#include "decPOMDP/sequential/_module.hpp"
+#include "problem_examples/dpomdp/_module.hpp"
+
+
+int main(int argv, char** args){
+	string bench_dir = "src/problem_examples/dpomdp";
+	
+	int success = -1;
+try{
+	using namespace std;
+	using namespace common;
+
+	//-- options
+	sdmsOptions::set(argv, args); // fill SEARCH
+	
+	//-- parse/encode problem (into the global structure PROBLEM)
+	int agents_number = PROBLEM.agents_number; 
+	if (agents_number == 2){
+		//-- read the problem from .dpomdp file (classic benchmarks)		
+		string bench_filename = bench_dir + "/" + PROBLEM.bench_name + "_light.dpomdp";
+		parser_light::Parser parser(bench_filename);
+		parser.encode_problem();
+	}
+	else{
+		//-- generate the problem (extended benchmarks)
+		if (PROBLEM.bench_name.compare("tiger") == 0)
+			problem_examples::tiger::generate(agents_number);
+		else if (PROBLEM.bench_name.compare("recycling") == 0)
+			problem_examples::recycling::generate(agents_number);
+		else if (PROBLEM.bench_name.compare("mabc") == 0)
+			problem_examples::mabc::generate(agents_number);
+		else if (PROBLEM.bench_name.compare("Grid3x3corners") == 0)
+			problem_examples::grid3x3::generate(agents_number);
+		else if (PROBLEM.bench_name.compare("GridSmall") == 0)
+			problem_examples::gridsmall::generate(agents_number);
+		else if (PROBLEM.bench_name.compare("maracas") == 0)
+			problem_examples::maracas::generate(7, 3, {0.08704331, 0.33404927, 0.3454578,  0.49780798, 0.84268494, 0.85180578, 0.91685254});
+		else{
+			throw sdm_exception::Exception(sdm_exception::option,
+				"unknown benchmark (check benchmark name and/or the number of agents)");
+		}
+	}
+	if (SEARCH.verbose)
+		cout << get_problem_repr();
+
+	//-- common init
+	POMDP::Belief_Hash::init();
+	decPOMDP::Support::init();
+
+//-- unitary test
+// decPOMDP::simultaneous::tests_unitary::test_compression();
+// decPOMDP::sequential::tests_unitary::test_compression();
+// return 0;
+
+	//-- solve
+	if (SEARCH.verbose)
+		cout << get_search_repr();
+	if (SEARCH.algo_name.compare("oSarsa") == 0){
+		decPOMDP::simultaneous::oSarsa().solve();
+	}
+	else if (SEARCH.algo_name.compare("oSarsa-seq") == 0){
+		decPOMDP::sequential::oSarsa().solve();
+		// decPOMDP::sequential::oSarsa_v2().solve();
+	}
+	else if (SEARCH.algo_name.compare("A2C") == 0){
+    	decPOMDP::simultaneous::A2C::Actor_Critic().solve();
+  	}
+	else if (SEARCH.algo_name.compare("IQL") == 0){
+    	decPOMDP::simultaneous::IQL::IndependentLearning().solve();
+  	}
+	else if (SEARCH.algo_name.compare("hsvi-tab") == 0){
+		decPOMDP::simultaneous::HSVI_Tabular().solve();
+	}
+	else if (SEARCH.algo_name.compare("hsvi-seq-tab") == 0){
+		decPOMDP::sequential::HSVI_Tabular().solve();
+	}
+	else if (SEARCH.algo_name.compare("hsvi-enum") == 0){
+		SEARCH.solver_drs = Solvers_DecisionRules::enumeration;
+		decPOMDP::simultaneous::HSVI().solve();
+	}
+	else if (SEARCH.algo_name.compare("hsvi-seq-enum") == 0){
+		SEARCH.solver_drs = Solvers_DecisionRules::enumeration;
+		decPOMDP::sequential::HSVI().solve();
+	}
+	else if (SEARCH.algo_name.compare("hsvi-milp") == 0){
+		#ifndef CPLEX_NOT_FOUND
+			SEARCH.solver_drs = Solvers_DecisionRules::milp;
+			decPOMDP::simultaneous::HSVI().solve();
+		#else
+			throw sdm_exception::Exception(sdm_exception::cplex, "hsvi-milp: CPLEX NOT FOUND");
+		#endif
+	}
+	else if (SEARCH.algo_name.compare("hsvi-seq-milp") == 0){
+		#ifndef CPLEX_NOT_FOUND
+			SEARCH.solver_drs = Solvers_DecisionRules::milp;
+			decPOMDP::sequential::HSVI().solve();
+		#else
+			throw sdm_exception::Exception(sdm_exception::cplex, "hsvi-seq-milp: CPLEX NOT FOUND");
+		#endif
+	}
+	else if (SEARCH.algo_name.compare("hsvi-wcsp") == 0){
+		#ifdef TB2
+			SEARCH.solver_drs = Solvers_DecisionRules::wcsp;
+			decPOMDP::simultaneous::HSVI().solve();
+		#else
+			throw sdm_exception::Exception(sdm_exception::toulbar, "hsvi-wcsp: TOULBAR NOT FOUND");
+		#endif
+	}
+	else if (SEARCH.algo_name.compare("pbvi-seq-tab") == 0){
+		POMDP::HSVI hsvi_pomdp; hsvi_pomdp.solve();
+		decPOMDP::sequential::PBVI_Tabular(&hsvi_pomdp).solve();
+	}
+	else if (SEARCH.algo_name.compare("pbvi-seq") == 0){
+		POMDP::HSVI hsvi_pomdp; hsvi_pomdp.solve();
+		decPOMDP::sequential::PBVI(&hsvi_pomdp).solve();
+	}
+	else if (SEARCH.algo_name.compare("Astar") == 0){
+		POMDP::HSVI hsvi_pomdp; hsvi_pomdp.solve();
+    	decPOMDP::simultaneous::Astar(&hsvi_pomdp).solve();
+  	}
+	else if (SEARCH.algo_name.compare("Astar-seq") == 0){
+    	decPOMDP::sequential::Astar().solve();
+  	}
+	else{
+		throw sdm_exception::Exception(sdm_exception::bad_joke, "algorithm " + SEARCH.algo_name + " unknown");
+	}
+}
+catch (sdm_exception::Exception &e){
+	e.print();
+}
+
+	return success;
+}
diff --git a/code/src/parser/CMakeLists.txt b/code/src/parser/CMakeLists.txt
new file mode 100755
index 0000000000000000000000000000000000000000..ec72c9fe351ff061854688146ce85213c55c669b
--- /dev/null
+++ b/code/src/parser/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required(VERSION 3.8)
+# project(libparser)
+file(GLOB_RECURSE SRCS ${CMAKE_SOURCE_DIR}/src/parser/*.cpp)
+add_library(parser ${SRCS})
+target_link_libraries(parser core)
\ No newline at end of file
diff --git a/code/src/parser/_module.hpp b/code/src/parser/_module.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..8f3cdfcf0c31d97b52770afbd60b57aeb131a028
--- /dev/null
+++ b/code/src/parser/_module.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+#include "parser_light.hpp"
\ No newline at end of file
diff --git a/code/src/parser/parser_light.cpp b/code/src/parser/parser_light.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2f6b3cc6556effb41dba3ea4cebd0932d7f9ebf0
--- /dev/null
+++ b/code/src/parser/parser_light.cpp
@@ -0,0 +1,222 @@
+#include "parser_light.hpp"
+
+namespace parser_light{
+using namespace std;
+
+
+Parser::Parser(const std::string filename){
+    this->_parse_header(filename);
+    this->_parse_dynamics(filename);    
+}
+
+
+void Parser::encode_problem(){
+    using namespace common;
+
+    //-- header
+    PROBLEM.discount = this->discount;
+    PROBLEM.agents_number =  this->agents_number;
+    PROBLEM.states_number =  this->states_number;
+    PROBLEM.belief_init = Vector(this->belief_init);
+    PROBLEM.observations_number_byAgent = this->observations_number_byAgent;
+    PROBLEM.actions_number_byAgent = this->actions_number_byAgent;
+
+    PROBLEM.last_agent = PROBLEM.agents_number - 1;
+    PROBLEM.observations_joint_number = this->observations_joint_number;
+    PROBLEM.actions_joint_number = this->actions_joint_number;
+
+    //-- dynamics / rewards
+    PROBLEM.dynamics_T = this->dynamics_T;
+    PROBLEM.dynamics_O = this->dynamics_O;
+    PROBLEM.rewards_matrix = this->rewards_matrix;
+
+    //-- finalize
+    PROBLEM.finalize();
+}
+
+
+ifstream Parser::_open_file(std::string filename){
+    ifstream infile;
+    infile.open(filename);
+	if(!infile){       
+        string temp = "../" + filename; // maybe we're in the build folder
+        infile.open(temp);
+        if(!infile){
+        	cout << "Could not open input file " << temp << endl; 
+            throw -1;
+		}
+	}
+    return infile;
+}
+
+
+/// @brief get agents number, discount and all the state, action and observation space
+void Parser::_parse_header(std::string filename){
+    ifstream infile = this->_open_file(filename);
+
+    int actions_read_index = -1;
+    int obs_read_index = -1;
+    bool ReadActions = false;
+    bool ReadObservations = false;
+    bool ReadStart = false; // end at here
+    
+	string line;
+    while (getline(infile, line) && !ReadStart){
+        istringstream is(line);
+		if (line.empty() || line.at(0) == '#') // empty line or comment line ?
+			continue;
+        string s;
+        int temp_num = 0;
+        bool ReadAgents = false;
+        bool ReadDiscount = false;
+        bool ReadStates = false;
+        while (is >> s){
+            if (s == "agents:"){
+                ReadAgents = true;
+            }
+            else if (s == "discount:"){
+                ReadDiscount = true;
+            }
+            else if (s == "states:"){
+                ReadStates = true;
+            }
+            else if (s == "actions:"){
+                ReadActions = true;
+            }
+            else if (s == "observations:"){
+                ReadObservations = true;
+            }
+            else if (s == "start:"){
+                ReadStart = true;
+            }
+
+            // Get Agents number, init Actions and Observations
+            if (ReadAgents && temp_num == 1){
+                this->agents_number = stoi(s);
+                this->actions_number_byAgent = vector<int>(this->agents_number, 0);
+                this->observations_number_byAgent = vector<int>(this->agents_number, 0);
+            }
+            // Get discount factor
+            if (ReadDiscount && temp_num == 1){
+                discount = stod(s);
+            }
+            // Get all the States
+            if (ReadStates && temp_num > 0){
+                this->states_number++;
+            }
+            // Get all actions
+            if (ReadActions && actions_read_index < this->agents_number && actions_read_index > -1){
+                this->actions_number_byAgent.at(actions_read_index)++;
+            }
+            // Get all observations
+            if (ReadObservations && obs_read_index < this->agents_number && obs_read_index > -1){
+                this->observations_number_byAgent.at(obs_read_index)++;
+            }
+            // Get intial belief
+            if (ReadStart && temp_num > 0){
+                double pb = stod(s);
+                this->belief_init.push_back(pb);
+            }
+            temp_num += 1;
+        }
+
+        if (ReadActions){
+            actions_read_index += 1;
+        }
+        if (ReadObservations){
+            obs_read_index += 1;
+        }
+    }
+    this->observations_joint_number = utils::get_product(this->observations_number_byAgent);
+    this->actions_joint_number = utils::get_product(this->actions_number_byAgent);
+    infile.close();
+}
+
+
+/// @brief get transitions, observations and rewards
+void Parser::_parse_dynamics(std::string filename){
+    ifstream infile = this->_open_file(filename);
+
+    this->rewards_matrix = algebra::Matrix<double>(this->states_number, this->actions_joint_number, 0);
+    string line;
+    while (getline(infile, line)){
+        istringstream is(line);
+		if (line.empty() || line.at(0) == '#') // empty line or comment line ?
+			continue;
+
+        string s;
+        int temp_num = 0;
+        bool buildTrans = false;
+        bool buildObs = false;
+        bool buildReward = false;
+        int aI = 0;
+        int sI = 0;
+        int oI = 0;
+        int snewI = 0;
+        double pb = 0;
+        vector<int> actions(this->agents_number);
+        vector<int> obs_indicies(this->agents_number);
+        while (is >> s){
+            if (s == "T:"){
+                buildTrans = true;
+            }
+            else if (s == "O:"){
+                buildObs = true;
+            }
+            else if (s == "R:"){
+                buildReward = true;
+            }
+
+            if (0 < temp_num && temp_num < 1 + this->agents_number){
+                if (buildTrans || buildObs || buildReward){
+                    actions[temp_num - 1] = stoi(s);
+                }
+            }
+            else if (temp_num == 4){
+                if (buildTrans || buildObs || buildReward){
+                    sI = stoi(s);
+                }
+            }
+            else if (5 < temp_num && temp_num < 6 + this->agents_number){
+                if (buildTrans){
+                    if (temp_num == 6){
+                        snewI = stoi(s);
+                    }
+                }
+                if (buildObs){
+                    obs_indicies[temp_num - 6] = stoi(s);
+                }
+            }
+            else if (temp_num == 8){
+                if (buildTrans){
+                    pb = stod(s);
+                    aI = utils::get_jointIndex(actions, this->actions_number_byAgent, this->agents_number);
+                    if (pb > 1e-9)
+                        this->dynamics_T[aI][sI][snewI] = pb;
+                }
+            }
+            else if (temp_num == 9){
+                if (buildObs){
+                    pb = stod(s);
+                    aI = utils::get_jointIndex(actions, this->actions_number_byAgent, this->agents_number);
+                    oI = utils::get_jointIndex(obs_indicies, this->observations_number_byAgent, this->agents_number);
+                    if (pb > 1e-9)
+                        this->dynamics_O[aI][sI][oI] = pb;
+                }
+            }
+            else if (temp_num == 10){
+                if (buildReward){
+                    pb = stod(s);
+                    aI = utils::get_jointIndex(actions, this->actions_number_byAgent, this->agents_number);
+                    this->rewards_matrix(sI,aI) = pb;
+                }
+            }
+
+            temp_num += 1;
+        }
+    }
+    infile.close();
+}
+
+
+} // end namespace
\ No newline at end of file
diff --git a/code/src/parser/parser_light.hpp b/code/src/parser/parser_light.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..4b566a51772c0a0fb06955af31698bdbb6f58ef3
--- /dev/null
+++ b/code/src/parser/parser_light.hpp
@@ -0,0 +1,40 @@
+#pragma once
+
+#include "../core/_module.hpp"
+
+#include <fstream>
+#include <string>
+#include <sstream>
+#include <vector>
+#include <map>
+#include <iostream>
+
+namespace parser_light{
+    using namespace std;
+
+    struct Parser{
+        //-- header data
+        double discount;
+        int agents_number;
+        int states_number = 0;  
+        vector<int> actions_number_byAgent;
+        int actions_joint_number = -1;
+        vector<int> observations_number_byAgent;
+        int observations_joint_number = -1;
+        vector<double> belief_init;
+        //-- dynamics data
+        unordered_map<int, unordered_map<int, unordered_map<int, double>>> dynamics_T; // dynamics_T[u][x][y]: p(y |u, x)
+        unordered_map<int, unordered_map<int, unordered_map<int, double>>> dynamics_O; // dynamics_O[u][y][z]: p(z |u,y)
+        algebra::Matrix<double> rewards_matrix; // rewards_matrix(x,u)
+
+        //-- constructor
+        Parser(const std::string filename);
+        
+        void encode_problem();
+        ifstream _open_file(std::string filename);
+        void _parse_header(std::string filename);
+        void _parse_dynamics(std::string filename);
+    };
+
+
+} // end namespace
\ No newline at end of file
diff --git a/code/src/problem_examples/CMakeLists.txt b/code/src/problem_examples/CMakeLists.txt
new file mode 100755
index 0000000000000000000000000000000000000000..40beef1ca642b1426ef006debc01a9685f3679eb
--- /dev/null
+++ b/code/src/problem_examples/CMakeLists.txt
@@ -0,0 +1,4 @@
+cmake_minimum_required(VERSION 3.8)
+file(GLOB_RECURSE SRCS ${CMAKE_SOURCE_DIR}/src/problem_examples/*.cpp)
+add_library(EXAMPLES ${SRCS})
+target_link_libraries(EXAMPLES)
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/Grid3x3corners.dpomdp b/code/src/problem_examples/dpomdp/Grid3x3corners.dpomdp
new file mode 100755
index 0000000000000000000000000000000000000000..46e9d03b6964b06756231206e0b5fd862819df7b
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/Grid3x3corners.dpomdp
@@ -0,0 +1,23947 @@
+# Meeting in a 3x3 grid
+# From Amato, Dibangoye & Zilberstein, ICAPS 2009
+# Extracted from code provided by Christoper Amato
+# $Id: Grid3x3corners.dpomdp 3595 2009-08-20 11:57:34Z mtjspaan $
+agents: 2
+discount: 1
+values: "reward"
+states: 81
+start:
+0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+actions:
+5
+5
+observations:
+9
+9
+T: 0 0 : 0 : 0 : 0.64
+T: 0 0 : 0 : 1 : 0.08
+T: 0 0 : 0 : 3 : 0.08
+T: 0 0 : 0 : 9 : 0.08
+T: 0 0 : 0 : 10 : 0.01
+T: 0 0 : 0 : 12 : 0.01
+T: 0 0 : 0 : 27 : 0.08
+T: 0 0 : 0 : 28 : 0.01
+T: 0 0 : 0 : 30 : 0.01
+T: 0 1 : 0 : 0 : 0.24
+T: 0 1 : 0 : 1 : 0.08
+T: 0 1 : 0 : 3 : 0.48
+T: 0 1 : 0 : 9 : 0.03
+T: 0 1 : 0 : 10 : 0.01
+T: 0 1 : 0 : 12 : 0.06
+T: 0 1 : 0 : 27 : 0.03
+T: 0 1 : 0 : 28 : 0.01
+T: 0 1 : 0 : 30 : 0.06
+T: 0 2 : 0 : 0 : 0.64
+T: 0 2 : 0 : 1 : 0.08
+T: 0 2 : 0 : 3 : 0.08
+T: 0 2 : 0 : 9 : 0.08
+T: 0 2 : 0 : 10 : 0.01
+T: 0 2 : 0 : 12 : 0.01
+T: 0 2 : 0 : 27 : 0.08
+T: 0 2 : 0 : 28 : 0.01
+T: 0 2 : 0 : 30 : 0.01
+T: 0 3 : 0 : 0 : 0.24
+T: 0 3 : 0 : 1 : 0.48
+T: 0 3 : 0 : 3 : 0.08
+T: 0 3 : 0 : 9 : 0.03
+T: 0 3 : 0 : 10 : 0.06
+T: 0 3 : 0 : 12 : 0.01
+T: 0 3 : 0 : 27 : 0.03
+T: 0 3 : 0 : 28 : 0.06
+T: 0 3 : 0 : 30 : 0.01
+T: 0 4 : 0 : 0 : 0.8
+T: 0 4 : 0 : 9 : 0.1
+T: 0 4 : 0 : 27 : 0.1
+T: 1 0 : 0 : 0 : 0.24
+T: 1 0 : 0 : 1 : 0.03
+T: 1 0 : 0 : 3 : 0.03
+T: 1 0 : 0 : 9 : 0.08
+T: 1 0 : 0 : 10 : 0.01
+T: 1 0 : 0 : 12 : 0.01
+T: 1 0 : 0 : 27 : 0.48
+T: 1 0 : 0 : 28 : 0.06
+T: 1 0 : 0 : 30 : 0.06
+T: 1 1 : 0 : 0 : 0.09
+T: 1 1 : 0 : 1 : 0.03
+T: 1 1 : 0 : 3 : 0.18
+T: 1 1 : 0 : 9 : 0.03
+T: 1 1 : 0 : 10 : 0.01
+T: 1 1 : 0 : 12 : 0.06
+T: 1 1 : 0 : 27 : 0.18
+T: 1 1 : 0 : 28 : 0.06
+T: 1 1 : 0 : 30 : 0.36
+T: 1 2 : 0 : 0 : 0.24
+T: 1 2 : 0 : 1 : 0.03
+T: 1 2 : 0 : 3 : 0.03
+T: 1 2 : 0 : 9 : 0.08
+T: 1 2 : 0 : 10 : 0.01
+T: 1 2 : 0 : 12 : 0.01
+T: 1 2 : 0 : 27 : 0.48
+T: 1 2 : 0 : 28 : 0.06
+T: 1 2 : 0 : 30 : 0.06
+T: 1 3 : 0 : 0 : 0.09
+T: 1 3 : 0 : 1 : 0.18
+T: 1 3 : 0 : 3 : 0.03
+T: 1 3 : 0 : 9 : 0.03
+T: 1 3 : 0 : 10 : 0.06
+T: 1 3 : 0 : 12 : 0.01
+T: 1 3 : 0 : 27 : 0.18
+T: 1 3 : 0 : 28 : 0.36
+T: 1 3 : 0 : 30 : 0.06
+T: 1 4 : 0 : 0 : 0.3
+T: 1 4 : 0 : 9 : 0.1
+T: 1 4 : 0 : 27 : 0.6
+T: 2 0 : 0 : 0 : 0.64
+T: 2 0 : 0 : 1 : 0.08
+T: 2 0 : 0 : 3 : 0.08
+T: 2 0 : 0 : 9 : 0.08
+T: 2 0 : 0 : 10 : 0.01
+T: 2 0 : 0 : 12 : 0.01
+T: 2 0 : 0 : 27 : 0.08
+T: 2 0 : 0 : 28 : 0.01
+T: 2 0 : 0 : 30 : 0.01
+T: 2 1 : 0 : 0 : 0.24
+T: 2 1 : 0 : 1 : 0.08
+T: 2 1 : 0 : 3 : 0.48
+T: 2 1 : 0 : 9 : 0.03
+T: 2 1 : 0 : 10 : 0.01
+T: 2 1 : 0 : 12 : 0.06
+T: 2 1 : 0 : 27 : 0.03
+T: 2 1 : 0 : 28 : 0.01
+T: 2 1 : 0 : 30 : 0.06
+T: 2 2 : 0 : 0 : 0.64
+T: 2 2 : 0 : 1 : 0.08
+T: 2 2 : 0 : 3 : 0.08
+T: 2 2 : 0 : 9 : 0.08
+T: 2 2 : 0 : 10 : 0.01
+T: 2 2 : 0 : 12 : 0.01
+T: 2 2 : 0 : 27 : 0.08
+T: 2 2 : 0 : 28 : 0.01
+T: 2 2 : 0 : 30 : 0.01
+T: 2 3 : 0 : 0 : 0.24
+T: 2 3 : 0 : 1 : 0.48
+T: 2 3 : 0 : 3 : 0.08
+T: 2 3 : 0 : 9 : 0.03
+T: 2 3 : 0 : 10 : 0.06
+T: 2 3 : 0 : 12 : 0.01
+T: 2 3 : 0 : 27 : 0.03
+T: 2 3 : 0 : 28 : 0.06
+T: 2 3 : 0 : 30 : 0.01
+T: 2 4 : 0 : 0 : 0.8
+T: 2 4 : 0 : 9 : 0.1
+T: 2 4 : 0 : 27 : 0.1
+T: 3 0 : 0 : 0 : 0.24
+T: 3 0 : 0 : 1 : 0.03
+T: 3 0 : 0 : 3 : 0.03
+T: 3 0 : 0 : 9 : 0.48
+T: 3 0 : 0 : 10 : 0.06
+T: 3 0 : 0 : 12 : 0.06
+T: 3 0 : 0 : 27 : 0.08
+T: 3 0 : 0 : 28 : 0.01
+T: 3 0 : 0 : 30 : 0.01
+T: 3 1 : 0 : 0 : 0.09
+T: 3 1 : 0 : 1 : 0.03
+T: 3 1 : 0 : 3 : 0.18
+T: 3 1 : 0 : 9 : 0.18
+T: 3 1 : 0 : 10 : 0.06
+T: 3 1 : 0 : 12 : 0.36
+T: 3 1 : 0 : 27 : 0.03
+T: 3 1 : 0 : 28 : 0.01
+T: 3 1 : 0 : 30 : 0.06
+T: 3 2 : 0 : 0 : 0.24
+T: 3 2 : 0 : 1 : 0.03
+T: 3 2 : 0 : 3 : 0.03
+T: 3 2 : 0 : 9 : 0.48
+T: 3 2 : 0 : 10 : 0.06
+T: 3 2 : 0 : 12 : 0.06
+T: 3 2 : 0 : 27 : 0.08
+T: 3 2 : 0 : 28 : 0.01
+T: 3 2 : 0 : 30 : 0.01
+T: 3 3 : 0 : 0 : 0.09
+T: 3 3 : 0 : 1 : 0.18
+T: 3 3 : 0 : 3 : 0.03
+T: 3 3 : 0 : 9 : 0.18
+T: 3 3 : 0 : 10 : 0.36
+T: 3 3 : 0 : 12 : 0.06
+T: 3 3 : 0 : 27 : 0.03
+T: 3 3 : 0 : 28 : 0.06
+T: 3 3 : 0 : 30 : 0.01
+T: 3 4 : 0 : 0 : 0.3
+T: 3 4 : 0 : 9 : 0.6
+T: 3 4 : 0 : 27 : 0.1
+T: 4 0 : 0 : 0 : 0.8
+T: 4 0 : 0 : 1 : 0.1
+T: 4 0 : 0 : 3 : 0.1
+T: 4 1 : 0 : 0 : 0.3
+T: 4 1 : 0 : 1 : 0.1
+T: 4 1 : 0 : 3 : 0.6
+T: 4 2 : 0 : 0 : 0.8
+T: 4 2 : 0 : 1 : 0.1
+T: 4 2 : 0 : 3 : 0.1
+T: 4 3 : 0 : 0 : 0.3
+T: 4 3 : 0 : 1 : 0.6
+T: 4 3 : 0 : 3 : 0.1
+T: 4 4 : 0 : 0 : 1.0
+T: 0 0 : 1 : 0 : 0.08
+T: 0 0 : 1 : 1 : 0.56
+T: 0 0 : 1 : 2 : 0.08
+T: 0 0 : 1 : 4 : 0.08
+T: 0 0 : 1 : 9 : 0.01
+T: 0 0 : 1 : 10 : 0.07
+T: 0 0 : 1 : 11 : 0.01
+T: 0 0 : 1 : 13 : 0.01
+T: 0 0 : 1 : 27 : 0.01
+T: 0 0 : 1 : 28 : 0.07
+T: 0 0 : 1 : 29 : 0.01
+T: 0 0 : 1 : 31 : 0.01
+T: 0 1 : 1 : 0 : 0.08
+T: 0 1 : 1 : 1 : 0.16
+T: 0 1 : 1 : 2 : 0.08
+T: 0 1 : 1 : 4 : 0.48
+T: 0 1 : 1 : 9 : 0.01
+T: 0 1 : 1 : 10 : 0.02
+T: 0 1 : 1 : 11 : 0.01
+T: 0 1 : 1 : 13 : 0.06
+T: 0 1 : 1 : 27 : 0.01
+T: 0 1 : 1 : 28 : 0.02
+T: 0 1 : 1 : 29 : 0.01
+T: 0 1 : 1 : 31 : 0.06
+T: 0 2 : 1 : 0 : 0.48
+T: 0 2 : 1 : 1 : 0.16
+T: 0 2 : 1 : 2 : 0.08
+T: 0 2 : 1 : 4 : 0.08
+T: 0 2 : 1 : 9 : 0.06
+T: 0 2 : 1 : 10 : 0.02
+T: 0 2 : 1 : 11 : 0.01
+T: 0 2 : 1 : 13 : 0.01
+T: 0 2 : 1 : 27 : 0.06
+T: 0 2 : 1 : 28 : 0.02
+T: 0 2 : 1 : 29 : 0.01
+T: 0 2 : 1 : 31 : 0.01
+T: 0 3 : 1 : 0 : 0.08
+T: 0 3 : 1 : 1 : 0.16
+T: 0 3 : 1 : 2 : 0.48
+T: 0 3 : 1 : 4 : 0.08
+T: 0 3 : 1 : 9 : 0.01
+T: 0 3 : 1 : 10 : 0.02
+T: 0 3 : 1 : 11 : 0.06
+T: 0 3 : 1 : 13 : 0.01
+T: 0 3 : 1 : 27 : 0.01
+T: 0 3 : 1 : 28 : 0.02
+T: 0 3 : 1 : 29 : 0.06
+T: 0 3 : 1 : 31 : 0.01
+T: 0 4 : 1 : 1 : 0.8
+T: 0 4 : 1 : 10 : 0.1
+T: 0 4 : 1 : 28 : 0.1
+T: 1 0 : 1 : 0 : 0.03
+T: 1 0 : 1 : 1 : 0.21
+T: 1 0 : 1 : 2 : 0.03
+T: 1 0 : 1 : 4 : 0.03
+T: 1 0 : 1 : 9 : 0.01
+T: 1 0 : 1 : 10 : 0.07
+T: 1 0 : 1 : 11 : 0.01
+T: 1 0 : 1 : 13 : 0.01
+T: 1 0 : 1 : 27 : 0.06
+T: 1 0 : 1 : 28 : 0.42
+T: 1 0 : 1 : 29 : 0.06
+T: 1 0 : 1 : 31 : 0.06
+T: 1 1 : 1 : 0 : 0.03
+T: 1 1 : 1 : 1 : 0.060
+T: 1 1 : 1 : 2 : 0.03
+T: 1 1 : 1 : 4 : 0.18
+T: 1 1 : 1 : 9 : 0.01
+T: 1 1 : 1 : 10 : 0.02
+T: 1 1 : 1 : 11 : 0.01
+T: 1 1 : 1 : 13 : 0.06
+T: 1 1 : 1 : 27 : 0.06
+T: 1 1 : 1 : 28 : 0.12
+T: 1 1 : 1 : 29 : 0.06
+T: 1 1 : 1 : 31 : 0.36
+T: 1 2 : 1 : 0 : 0.18
+T: 1 2 : 1 : 1 : 0.060
+T: 1 2 : 1 : 2 : 0.03
+T: 1 2 : 1 : 4 : 0.03
+T: 1 2 : 1 : 9 : 0.06
+T: 1 2 : 1 : 10 : 0.02
+T: 1 2 : 1 : 11 : 0.01
+T: 1 2 : 1 : 13 : 0.01
+T: 1 2 : 1 : 27 : 0.36
+T: 1 2 : 1 : 28 : 0.12
+T: 1 2 : 1 : 29 : 0.06
+T: 1 2 : 1 : 31 : 0.06
+T: 1 3 : 1 : 0 : 0.03
+T: 1 3 : 1 : 1 : 0.060
+T: 1 3 : 1 : 2 : 0.18
+T: 1 3 : 1 : 4 : 0.03
+T: 1 3 : 1 : 9 : 0.01
+T: 1 3 : 1 : 10 : 0.02
+T: 1 3 : 1 : 11 : 0.06
+T: 1 3 : 1 : 13 : 0.01
+T: 1 3 : 1 : 27 : 0.06
+T: 1 3 : 1 : 28 : 0.12
+T: 1 3 : 1 : 29 : 0.36
+T: 1 3 : 1 : 31 : 0.06
+T: 1 4 : 1 : 1 : 0.3
+T: 1 4 : 1 : 10 : 0.1
+T: 1 4 : 1 : 28 : 0.6
+T: 2 0 : 1 : 0 : 0.08
+T: 2 0 : 1 : 1 : 0.56
+T: 2 0 : 1 : 2 : 0.08
+T: 2 0 : 1 : 4 : 0.08
+T: 2 0 : 1 : 9 : 0.01
+T: 2 0 : 1 : 10 : 0.07
+T: 2 0 : 1 : 11 : 0.01
+T: 2 0 : 1 : 13 : 0.01
+T: 2 0 : 1 : 27 : 0.01
+T: 2 0 : 1 : 28 : 0.07
+T: 2 0 : 1 : 29 : 0.01
+T: 2 0 : 1 : 31 : 0.01
+T: 2 1 : 1 : 0 : 0.08
+T: 2 1 : 1 : 1 : 0.16
+T: 2 1 : 1 : 2 : 0.08
+T: 2 1 : 1 : 4 : 0.48
+T: 2 1 : 1 : 9 : 0.01
+T: 2 1 : 1 : 10 : 0.02
+T: 2 1 : 1 : 11 : 0.01
+T: 2 1 : 1 : 13 : 0.06
+T: 2 1 : 1 : 27 : 0.01
+T: 2 1 : 1 : 28 : 0.02
+T: 2 1 : 1 : 29 : 0.01
+T: 2 1 : 1 : 31 : 0.06
+T: 2 2 : 1 : 0 : 0.48
+T: 2 2 : 1 : 1 : 0.16
+T: 2 2 : 1 : 2 : 0.08
+T: 2 2 : 1 : 4 : 0.08
+T: 2 2 : 1 : 9 : 0.06
+T: 2 2 : 1 : 10 : 0.02
+T: 2 2 : 1 : 11 : 0.01
+T: 2 2 : 1 : 13 : 0.01
+T: 2 2 : 1 : 27 : 0.06
+T: 2 2 : 1 : 28 : 0.02
+T: 2 2 : 1 : 29 : 0.01
+T: 2 2 : 1 : 31 : 0.01
+T: 2 3 : 1 : 0 : 0.08
+T: 2 3 : 1 : 1 : 0.16
+T: 2 3 : 1 : 2 : 0.48
+T: 2 3 : 1 : 4 : 0.08
+T: 2 3 : 1 : 9 : 0.01
+T: 2 3 : 1 : 10 : 0.02
+T: 2 3 : 1 : 11 : 0.06
+T: 2 3 : 1 : 13 : 0.01
+T: 2 3 : 1 : 27 : 0.01
+T: 2 3 : 1 : 28 : 0.02
+T: 2 3 : 1 : 29 : 0.06
+T: 2 3 : 1 : 31 : 0.01
+T: 2 4 : 1 : 1 : 0.8
+T: 2 4 : 1 : 10 : 0.1
+T: 2 4 : 1 : 28 : 0.1
+T: 3 0 : 1 : 0 : 0.03
+T: 3 0 : 1 : 1 : 0.21
+T: 3 0 : 1 : 2 : 0.03
+T: 3 0 : 1 : 4 : 0.03
+T: 3 0 : 1 : 9 : 0.06
+T: 3 0 : 1 : 10 : 0.42
+T: 3 0 : 1 : 11 : 0.06
+T: 3 0 : 1 : 13 : 0.06
+T: 3 0 : 1 : 27 : 0.01
+T: 3 0 : 1 : 28 : 0.07
+T: 3 0 : 1 : 29 : 0.01
+T: 3 0 : 1 : 31 : 0.01
+T: 3 1 : 1 : 0 : 0.03
+T: 3 1 : 1 : 1 : 0.060
+T: 3 1 : 1 : 2 : 0.03
+T: 3 1 : 1 : 4 : 0.18
+T: 3 1 : 1 : 9 : 0.06
+T: 3 1 : 1 : 10 : 0.12
+T: 3 1 : 1 : 11 : 0.06
+T: 3 1 : 1 : 13 : 0.36
+T: 3 1 : 1 : 27 : 0.01
+T: 3 1 : 1 : 28 : 0.02
+T: 3 1 : 1 : 29 : 0.01
+T: 3 1 : 1 : 31 : 0.06
+T: 3 2 : 1 : 0 : 0.18
+T: 3 2 : 1 : 1 : 0.060
+T: 3 2 : 1 : 2 : 0.03
+T: 3 2 : 1 : 4 : 0.03
+T: 3 2 : 1 : 9 : 0.36
+T: 3 2 : 1 : 10 : 0.12
+T: 3 2 : 1 : 11 : 0.06
+T: 3 2 : 1 : 13 : 0.06
+T: 3 2 : 1 : 27 : 0.06
+T: 3 2 : 1 : 28 : 0.02
+T: 3 2 : 1 : 29 : 0.01
+T: 3 2 : 1 : 31 : 0.01
+T: 3 3 : 1 : 0 : 0.03
+T: 3 3 : 1 : 1 : 0.060
+T: 3 3 : 1 : 2 : 0.18
+T: 3 3 : 1 : 4 : 0.03
+T: 3 3 : 1 : 9 : 0.06
+T: 3 3 : 1 : 10 : 0.12
+T: 3 3 : 1 : 11 : 0.36
+T: 3 3 : 1 : 13 : 0.06
+T: 3 3 : 1 : 27 : 0.01
+T: 3 3 : 1 : 28 : 0.02
+T: 3 3 : 1 : 29 : 0.06
+T: 3 3 : 1 : 31 : 0.01
+T: 3 4 : 1 : 1 : 0.3
+T: 3 4 : 1 : 10 : 0.6
+T: 3 4 : 1 : 28 : 0.1
+T: 4 0 : 1 : 0 : 0.1
+T: 4 0 : 1 : 1 : 0.7
+T: 4 0 : 1 : 2 : 0.1
+T: 4 0 : 1 : 4 : 0.1
+T: 4 1 : 1 : 0 : 0.1
+T: 4 1 : 1 : 1 : 0.2
+T: 4 1 : 1 : 2 : 0.1
+T: 4 1 : 1 : 4 : 0.6
+T: 4 2 : 1 : 0 : 0.6
+T: 4 2 : 1 : 1 : 0.2
+T: 4 2 : 1 : 2 : 0.1
+T: 4 2 : 1 : 4 : 0.1
+T: 4 3 : 1 : 0 : 0.1
+T: 4 3 : 1 : 1 : 0.2
+T: 4 3 : 1 : 2 : 0.6
+T: 4 3 : 1 : 4 : 0.1
+T: 4 4 : 1 : 1 : 1.0
+T: 0 0 : 2 : 1 : 0.08
+T: 0 0 : 2 : 2 : 0.64
+T: 0 0 : 2 : 5 : 0.08
+T: 0 0 : 2 : 10 : 0.01
+T: 0 0 : 2 : 11 : 0.08
+T: 0 0 : 2 : 14 : 0.01
+T: 0 0 : 2 : 28 : 0.01
+T: 0 0 : 2 : 29 : 0.08
+T: 0 0 : 2 : 32 : 0.01
+T: 0 1 : 2 : 1 : 0.08
+T: 0 1 : 2 : 2 : 0.24
+T: 0 1 : 2 : 5 : 0.48
+T: 0 1 : 2 : 10 : 0.01
+T: 0 1 : 2 : 11 : 0.03
+T: 0 1 : 2 : 14 : 0.06
+T: 0 1 : 2 : 28 : 0.01
+T: 0 1 : 2 : 29 : 0.03
+T: 0 1 : 2 : 32 : 0.06
+T: 0 2 : 2 : 1 : 0.48
+T: 0 2 : 2 : 2 : 0.24
+T: 0 2 : 2 : 5 : 0.08
+T: 0 2 : 2 : 10 : 0.06
+T: 0 2 : 2 : 11 : 0.03
+T: 0 2 : 2 : 14 : 0.01
+T: 0 2 : 2 : 28 : 0.06
+T: 0 2 : 2 : 29 : 0.03
+T: 0 2 : 2 : 32 : 0.01
+T: 0 3 : 2 : 1 : 0.08
+T: 0 3 : 2 : 2 : 0.64
+T: 0 3 : 2 : 5 : 0.08
+T: 0 3 : 2 : 10 : 0.01
+T: 0 3 : 2 : 11 : 0.08
+T: 0 3 : 2 : 14 : 0.01
+T: 0 3 : 2 : 28 : 0.01
+T: 0 3 : 2 : 29 : 0.08
+T: 0 3 : 2 : 32 : 0.01
+T: 0 4 : 2 : 2 : 0.8
+T: 0 4 : 2 : 11 : 0.1
+T: 0 4 : 2 : 29 : 0.1
+T: 1 0 : 2 : 1 : 0.03
+T: 1 0 : 2 : 2 : 0.24
+T: 1 0 : 2 : 5 : 0.03
+T: 1 0 : 2 : 10 : 0.01
+T: 1 0 : 2 : 11 : 0.08
+T: 1 0 : 2 : 14 : 0.01
+T: 1 0 : 2 : 28 : 0.06
+T: 1 0 : 2 : 29 : 0.48
+T: 1 0 : 2 : 32 : 0.06
+T: 1 1 : 2 : 1 : 0.03
+T: 1 1 : 2 : 2 : 0.09
+T: 1 1 : 2 : 5 : 0.18
+T: 1 1 : 2 : 10 : 0.01
+T: 1 1 : 2 : 11 : 0.03
+T: 1 1 : 2 : 14 : 0.06
+T: 1 1 : 2 : 28 : 0.06
+T: 1 1 : 2 : 29 : 0.18
+T: 1 1 : 2 : 32 : 0.36
+T: 1 2 : 2 : 1 : 0.18
+T: 1 2 : 2 : 2 : 0.09
+T: 1 2 : 2 : 5 : 0.03
+T: 1 2 : 2 : 10 : 0.06
+T: 1 2 : 2 : 11 : 0.03
+T: 1 2 : 2 : 14 : 0.01
+T: 1 2 : 2 : 28 : 0.36
+T: 1 2 : 2 : 29 : 0.18
+T: 1 2 : 2 : 32 : 0.06
+T: 1 3 : 2 : 1 : 0.03
+T: 1 3 : 2 : 2 : 0.24
+T: 1 3 : 2 : 5 : 0.03
+T: 1 3 : 2 : 10 : 0.01
+T: 1 3 : 2 : 11 : 0.08
+T: 1 3 : 2 : 14 : 0.01
+T: 1 3 : 2 : 28 : 0.06
+T: 1 3 : 2 : 29 : 0.48
+T: 1 3 : 2 : 32 : 0.06
+T: 1 4 : 2 : 2 : 0.3
+T: 1 4 : 2 : 11 : 0.1
+T: 1 4 : 2 : 29 : 0.6
+T: 2 0 : 2 : 1 : 0.08
+T: 2 0 : 2 : 2 : 0.64
+T: 2 0 : 2 : 5 : 0.08
+T: 2 0 : 2 : 10 : 0.01
+T: 2 0 : 2 : 11 : 0.08
+T: 2 0 : 2 : 14 : 0.01
+T: 2 0 : 2 : 28 : 0.01
+T: 2 0 : 2 : 29 : 0.08
+T: 2 0 : 2 : 32 : 0.01
+T: 2 1 : 2 : 1 : 0.08
+T: 2 1 : 2 : 2 : 0.24
+T: 2 1 : 2 : 5 : 0.48
+T: 2 1 : 2 : 10 : 0.01
+T: 2 1 : 2 : 11 : 0.03
+T: 2 1 : 2 : 14 : 0.06
+T: 2 1 : 2 : 28 : 0.01
+T: 2 1 : 2 : 29 : 0.03
+T: 2 1 : 2 : 32 : 0.06
+T: 2 2 : 2 : 1 : 0.48
+T: 2 2 : 2 : 2 : 0.24
+T: 2 2 : 2 : 5 : 0.08
+T: 2 2 : 2 : 10 : 0.06
+T: 2 2 : 2 : 11 : 0.03
+T: 2 2 : 2 : 14 : 0.01
+T: 2 2 : 2 : 28 : 0.06
+T: 2 2 : 2 : 29 : 0.03
+T: 2 2 : 2 : 32 : 0.01
+T: 2 3 : 2 : 1 : 0.08
+T: 2 3 : 2 : 2 : 0.64
+T: 2 3 : 2 : 5 : 0.08
+T: 2 3 : 2 : 10 : 0.01
+T: 2 3 : 2 : 11 : 0.08
+T: 2 3 : 2 : 14 : 0.01
+T: 2 3 : 2 : 28 : 0.01
+T: 2 3 : 2 : 29 : 0.08
+T: 2 3 : 2 : 32 : 0.01
+T: 2 4 : 2 : 2 : 0.8
+T: 2 4 : 2 : 11 : 0.1
+T: 2 4 : 2 : 29 : 0.1
+T: 3 0 : 2 : 1 : 0.03
+T: 3 0 : 2 : 2 : 0.24
+T: 3 0 : 2 : 5 : 0.03
+T: 3 0 : 2 : 10 : 0.06
+T: 3 0 : 2 : 11 : 0.48
+T: 3 0 : 2 : 14 : 0.06
+T: 3 0 : 2 : 28 : 0.01
+T: 3 0 : 2 : 29 : 0.08
+T: 3 0 : 2 : 32 : 0.01
+T: 3 1 : 2 : 1 : 0.03
+T: 3 1 : 2 : 2 : 0.09
+T: 3 1 : 2 : 5 : 0.18
+T: 3 1 : 2 : 10 : 0.06
+T: 3 1 : 2 : 11 : 0.18
+T: 3 1 : 2 : 14 : 0.36
+T: 3 1 : 2 : 28 : 0.01
+T: 3 1 : 2 : 29 : 0.03
+T: 3 1 : 2 : 32 : 0.06
+T: 3 2 : 2 : 1 : 0.18
+T: 3 2 : 2 : 2 : 0.09
+T: 3 2 : 2 : 5 : 0.03
+T: 3 2 : 2 : 10 : 0.36
+T: 3 2 : 2 : 11 : 0.18
+T: 3 2 : 2 : 14 : 0.06
+T: 3 2 : 2 : 28 : 0.06
+T: 3 2 : 2 : 29 : 0.03
+T: 3 2 : 2 : 32 : 0.01
+T: 3 3 : 2 : 1 : 0.03
+T: 3 3 : 2 : 2 : 0.24
+T: 3 3 : 2 : 5 : 0.03
+T: 3 3 : 2 : 10 : 0.06
+T: 3 3 : 2 : 11 : 0.48
+T: 3 3 : 2 : 14 : 0.06
+T: 3 3 : 2 : 28 : 0.01
+T: 3 3 : 2 : 29 : 0.08
+T: 3 3 : 2 : 32 : 0.01
+T: 3 4 : 2 : 2 : 0.3
+T: 3 4 : 2 : 11 : 0.6
+T: 3 4 : 2 : 29 : 0.1
+T: 4 0 : 2 : 1 : 0.1
+T: 4 0 : 2 : 2 : 0.8
+T: 4 0 : 2 : 5 : 0.1
+T: 4 1 : 2 : 1 : 0.1
+T: 4 1 : 2 : 2 : 0.3
+T: 4 1 : 2 : 5 : 0.6
+T: 4 2 : 2 : 1 : 0.6
+T: 4 2 : 2 : 2 : 0.3
+T: 4 2 : 2 : 5 : 0.1
+T: 4 3 : 2 : 1 : 0.1
+T: 4 3 : 2 : 2 : 0.8
+T: 4 3 : 2 : 5 : 0.1
+T: 4 4 : 2 : 2 : 1.0
+T: 0 0 : 3 : 0 : 0.48
+T: 0 0 : 3 : 3 : 0.16
+T: 0 0 : 3 : 4 : 0.08
+T: 0 0 : 3 : 6 : 0.08
+T: 0 0 : 3 : 9 : 0.06
+T: 0 0 : 3 : 12 : 0.02
+T: 0 0 : 3 : 13 : 0.01
+T: 0 0 : 3 : 15 : 0.01
+T: 0 0 : 3 : 27 : 0.06
+T: 0 0 : 3 : 30 : 0.02
+T: 0 0 : 3 : 31 : 0.01
+T: 0 0 : 3 : 33 : 0.01
+T: 0 1 : 3 : 0 : 0.08
+T: 0 1 : 3 : 3 : 0.16
+T: 0 1 : 3 : 4 : 0.08
+T: 0 1 : 3 : 6 : 0.48
+T: 0 1 : 3 : 9 : 0.01
+T: 0 1 : 3 : 12 : 0.02
+T: 0 1 : 3 : 13 : 0.01
+T: 0 1 : 3 : 15 : 0.06
+T: 0 1 : 3 : 27 : 0.01
+T: 0 1 : 3 : 30 : 0.02
+T: 0 1 : 3 : 31 : 0.01
+T: 0 1 : 3 : 33 : 0.06
+T: 0 2 : 3 : 0 : 0.08
+T: 0 2 : 3 : 3 : 0.56
+T: 0 2 : 3 : 4 : 0.08
+T: 0 2 : 3 : 6 : 0.08
+T: 0 2 : 3 : 9 : 0.01
+T: 0 2 : 3 : 12 : 0.07
+T: 0 2 : 3 : 13 : 0.01
+T: 0 2 : 3 : 15 : 0.01
+T: 0 2 : 3 : 27 : 0.01
+T: 0 2 : 3 : 30 : 0.07
+T: 0 2 : 3 : 31 : 0.01
+T: 0 2 : 3 : 33 : 0.01
+T: 0 3 : 3 : 0 : 0.08
+T: 0 3 : 3 : 3 : 0.16
+T: 0 3 : 3 : 4 : 0.48
+T: 0 3 : 3 : 6 : 0.08
+T: 0 3 : 3 : 9 : 0.01
+T: 0 3 : 3 : 12 : 0.02
+T: 0 3 : 3 : 13 : 0.06
+T: 0 3 : 3 : 15 : 0.01
+T: 0 3 : 3 : 27 : 0.01
+T: 0 3 : 3 : 30 : 0.02
+T: 0 3 : 3 : 31 : 0.06
+T: 0 3 : 3 : 33 : 0.01
+T: 0 4 : 3 : 3 : 0.8
+T: 0 4 : 3 : 12 : 0.1
+T: 0 4 : 3 : 30 : 0.1
+T: 1 0 : 3 : 0 : 0.18
+T: 1 0 : 3 : 3 : 0.060
+T: 1 0 : 3 : 4 : 0.03
+T: 1 0 : 3 : 6 : 0.03
+T: 1 0 : 3 : 9 : 0.06
+T: 1 0 : 3 : 12 : 0.02
+T: 1 0 : 3 : 13 : 0.01
+T: 1 0 : 3 : 15 : 0.01
+T: 1 0 : 3 : 27 : 0.36
+T: 1 0 : 3 : 30 : 0.12
+T: 1 0 : 3 : 31 : 0.06
+T: 1 0 : 3 : 33 : 0.06
+T: 1 1 : 3 : 0 : 0.03
+T: 1 1 : 3 : 3 : 0.060
+T: 1 1 : 3 : 4 : 0.03
+T: 1 1 : 3 : 6 : 0.18
+T: 1 1 : 3 : 9 : 0.01
+T: 1 1 : 3 : 12 : 0.02
+T: 1 1 : 3 : 13 : 0.01
+T: 1 1 : 3 : 15 : 0.06
+T: 1 1 : 3 : 27 : 0.06
+T: 1 1 : 3 : 30 : 0.12
+T: 1 1 : 3 : 31 : 0.06
+T: 1 1 : 3 : 33 : 0.36
+T: 1 2 : 3 : 0 : 0.03
+T: 1 2 : 3 : 3 : 0.21
+T: 1 2 : 3 : 4 : 0.03
+T: 1 2 : 3 : 6 : 0.03
+T: 1 2 : 3 : 9 : 0.01
+T: 1 2 : 3 : 12 : 0.07
+T: 1 2 : 3 : 13 : 0.01
+T: 1 2 : 3 : 15 : 0.01
+T: 1 2 : 3 : 27 : 0.06
+T: 1 2 : 3 : 30 : 0.42
+T: 1 2 : 3 : 31 : 0.06
+T: 1 2 : 3 : 33 : 0.06
+T: 1 3 : 3 : 0 : 0.03
+T: 1 3 : 3 : 3 : 0.060
+T: 1 3 : 3 : 4 : 0.18
+T: 1 3 : 3 : 6 : 0.03
+T: 1 3 : 3 : 9 : 0.01
+T: 1 3 : 3 : 12 : 0.02
+T: 1 3 : 3 : 13 : 0.06
+T: 1 3 : 3 : 15 : 0.01
+T: 1 3 : 3 : 27 : 0.06
+T: 1 3 : 3 : 30 : 0.12
+T: 1 3 : 3 : 31 : 0.36
+T: 1 3 : 3 : 33 : 0.06
+T: 1 4 : 3 : 3 : 0.3
+T: 1 4 : 3 : 12 : 0.1
+T: 1 4 : 3 : 30 : 0.6
+T: 2 0 : 3 : 0 : 0.48
+T: 2 0 : 3 : 3 : 0.16
+T: 2 0 : 3 : 4 : 0.08
+T: 2 0 : 3 : 6 : 0.08
+T: 2 0 : 3 : 9 : 0.06
+T: 2 0 : 3 : 12 : 0.02
+T: 2 0 : 3 : 13 : 0.01
+T: 2 0 : 3 : 15 : 0.01
+T: 2 0 : 3 : 27 : 0.06
+T: 2 0 : 3 : 30 : 0.02
+T: 2 0 : 3 : 31 : 0.01
+T: 2 0 : 3 : 33 : 0.01
+T: 2 1 : 3 : 0 : 0.08
+T: 2 1 : 3 : 3 : 0.16
+T: 2 1 : 3 : 4 : 0.08
+T: 2 1 : 3 : 6 : 0.48
+T: 2 1 : 3 : 9 : 0.01
+T: 2 1 : 3 : 12 : 0.02
+T: 2 1 : 3 : 13 : 0.01
+T: 2 1 : 3 : 15 : 0.06
+T: 2 1 : 3 : 27 : 0.01
+T: 2 1 : 3 : 30 : 0.02
+T: 2 1 : 3 : 31 : 0.01
+T: 2 1 : 3 : 33 : 0.06
+T: 2 2 : 3 : 0 : 0.08
+T: 2 2 : 3 : 3 : 0.56
+T: 2 2 : 3 : 4 : 0.08
+T: 2 2 : 3 : 6 : 0.08
+T: 2 2 : 3 : 9 : 0.01
+T: 2 2 : 3 : 12 : 0.07
+T: 2 2 : 3 : 13 : 0.01
+T: 2 2 : 3 : 15 : 0.01
+T: 2 2 : 3 : 27 : 0.01
+T: 2 2 : 3 : 30 : 0.07
+T: 2 2 : 3 : 31 : 0.01
+T: 2 2 : 3 : 33 : 0.01
+T: 2 3 : 3 : 0 : 0.08
+T: 2 3 : 3 : 3 : 0.16
+T: 2 3 : 3 : 4 : 0.48
+T: 2 3 : 3 : 6 : 0.08
+T: 2 3 : 3 : 9 : 0.01
+T: 2 3 : 3 : 12 : 0.02
+T: 2 3 : 3 : 13 : 0.06
+T: 2 3 : 3 : 15 : 0.01
+T: 2 3 : 3 : 27 : 0.01
+T: 2 3 : 3 : 30 : 0.02
+T: 2 3 : 3 : 31 : 0.06
+T: 2 3 : 3 : 33 : 0.01
+T: 2 4 : 3 : 3 : 0.8
+T: 2 4 : 3 : 12 : 0.1
+T: 2 4 : 3 : 30 : 0.1
+T: 3 0 : 3 : 0 : 0.18
+T: 3 0 : 3 : 3 : 0.060
+T: 3 0 : 3 : 4 : 0.03
+T: 3 0 : 3 : 6 : 0.03
+T: 3 0 : 3 : 9 : 0.36
+T: 3 0 : 3 : 12 : 0.12
+T: 3 0 : 3 : 13 : 0.06
+T: 3 0 : 3 : 15 : 0.06
+T: 3 0 : 3 : 27 : 0.06
+T: 3 0 : 3 : 30 : 0.02
+T: 3 0 : 3 : 31 : 0.01
+T: 3 0 : 3 : 33 : 0.01
+T: 3 1 : 3 : 0 : 0.03
+T: 3 1 : 3 : 3 : 0.060
+T: 3 1 : 3 : 4 : 0.03
+T: 3 1 : 3 : 6 : 0.18
+T: 3 1 : 3 : 9 : 0.06
+T: 3 1 : 3 : 12 : 0.12
+T: 3 1 : 3 : 13 : 0.06
+T: 3 1 : 3 : 15 : 0.36
+T: 3 1 : 3 : 27 : 0.01
+T: 3 1 : 3 : 30 : 0.02
+T: 3 1 : 3 : 31 : 0.01
+T: 3 1 : 3 : 33 : 0.06
+T: 3 2 : 3 : 0 : 0.03
+T: 3 2 : 3 : 3 : 0.21
+T: 3 2 : 3 : 4 : 0.03
+T: 3 2 : 3 : 6 : 0.03
+T: 3 2 : 3 : 9 : 0.06
+T: 3 2 : 3 : 12 : 0.42
+T: 3 2 : 3 : 13 : 0.06
+T: 3 2 : 3 : 15 : 0.06
+T: 3 2 : 3 : 27 : 0.01
+T: 3 2 : 3 : 30 : 0.07
+T: 3 2 : 3 : 31 : 0.01
+T: 3 2 : 3 : 33 : 0.01
+T: 3 3 : 3 : 0 : 0.03
+T: 3 3 : 3 : 3 : 0.060
+T: 3 3 : 3 : 4 : 0.18
+T: 3 3 : 3 : 6 : 0.03
+T: 3 3 : 3 : 9 : 0.06
+T: 3 3 : 3 : 12 : 0.12
+T: 3 3 : 3 : 13 : 0.36
+T: 3 3 : 3 : 15 : 0.06
+T: 3 3 : 3 : 27 : 0.01
+T: 3 3 : 3 : 30 : 0.02
+T: 3 3 : 3 : 31 : 0.06
+T: 3 3 : 3 : 33 : 0.01
+T: 3 4 : 3 : 3 : 0.3
+T: 3 4 : 3 : 12 : 0.6
+T: 3 4 : 3 : 30 : 0.1
+T: 4 0 : 3 : 0 : 0.6
+T: 4 0 : 3 : 3 : 0.2
+T: 4 0 : 3 : 4 : 0.1
+T: 4 0 : 3 : 6 : 0.1
+T: 4 1 : 3 : 0 : 0.1
+T: 4 1 : 3 : 3 : 0.2
+T: 4 1 : 3 : 4 : 0.1
+T: 4 1 : 3 : 6 : 0.6
+T: 4 2 : 3 : 0 : 0.1
+T: 4 2 : 3 : 3 : 0.7
+T: 4 2 : 3 : 4 : 0.1
+T: 4 2 : 3 : 6 : 0.1
+T: 4 3 : 3 : 0 : 0.1
+T: 4 3 : 3 : 3 : 0.2
+T: 4 3 : 3 : 4 : 0.6
+T: 4 3 : 3 : 6 : 0.1
+T: 4 4 : 3 : 3 : 1.0
+T: 0 0 : 4 : 1 : 0.48
+T: 0 0 : 4 : 3 : 0.08
+T: 0 0 : 4 : 4 : 0.08
+T: 0 0 : 4 : 5 : 0.08
+T: 0 0 : 4 : 7 : 0.08
+T: 0 0 : 4 : 10 : 0.06
+T: 0 0 : 4 : 12 : 0.01
+T: 0 0 : 4 : 13 : 0.01
+T: 0 0 : 4 : 14 : 0.01
+T: 0 0 : 4 : 16 : 0.01
+T: 0 0 : 4 : 28 : 0.06
+T: 0 0 : 4 : 30 : 0.01
+T: 0 0 : 4 : 31 : 0.01
+T: 0 0 : 4 : 32 : 0.01
+T: 0 0 : 4 : 34 : 0.01
+T: 0 1 : 4 : 1 : 0.08
+T: 0 1 : 4 : 3 : 0.08
+T: 0 1 : 4 : 4 : 0.08
+T: 0 1 : 4 : 5 : 0.08
+T: 0 1 : 4 : 7 : 0.48
+T: 0 1 : 4 : 10 : 0.01
+T: 0 1 : 4 : 12 : 0.01
+T: 0 1 : 4 : 13 : 0.01
+T: 0 1 : 4 : 14 : 0.01
+T: 0 1 : 4 : 16 : 0.06
+T: 0 1 : 4 : 28 : 0.01
+T: 0 1 : 4 : 30 : 0.01
+T: 0 1 : 4 : 31 : 0.01
+T: 0 1 : 4 : 32 : 0.01
+T: 0 1 : 4 : 34 : 0.06
+T: 0 2 : 4 : 1 : 0.08
+T: 0 2 : 4 : 3 : 0.48
+T: 0 2 : 4 : 4 : 0.08
+T: 0 2 : 4 : 5 : 0.08
+T: 0 2 : 4 : 7 : 0.08
+T: 0 2 : 4 : 10 : 0.01
+T: 0 2 : 4 : 12 : 0.06
+T: 0 2 : 4 : 13 : 0.01
+T: 0 2 : 4 : 14 : 0.01
+T: 0 2 : 4 : 16 : 0.01
+T: 0 2 : 4 : 28 : 0.01
+T: 0 2 : 4 : 30 : 0.06
+T: 0 2 : 4 : 31 : 0.01
+T: 0 2 : 4 : 32 : 0.01
+T: 0 2 : 4 : 34 : 0.01
+T: 0 3 : 4 : 1 : 0.08
+T: 0 3 : 4 : 3 : 0.08
+T: 0 3 : 4 : 4 : 0.08
+T: 0 3 : 4 : 5 : 0.48
+T: 0 3 : 4 : 7 : 0.08
+T: 0 3 : 4 : 10 : 0.01
+T: 0 3 : 4 : 12 : 0.01
+T: 0 3 : 4 : 13 : 0.01
+T: 0 3 : 4 : 14 : 0.06
+T: 0 3 : 4 : 16 : 0.01
+T: 0 3 : 4 : 28 : 0.01
+T: 0 3 : 4 : 30 : 0.01
+T: 0 3 : 4 : 31 : 0.01
+T: 0 3 : 4 : 32 : 0.06
+T: 0 3 : 4 : 34 : 0.01
+T: 0 4 : 4 : 4 : 0.8
+T: 0 4 : 4 : 13 : 0.1
+T: 0 4 : 4 : 31 : 0.1
+T: 1 0 : 4 : 1 : 0.18
+T: 1 0 : 4 : 3 : 0.03
+T: 1 0 : 4 : 4 : 0.03
+T: 1 0 : 4 : 5 : 0.03
+T: 1 0 : 4 : 7 : 0.03
+T: 1 0 : 4 : 10 : 0.06
+T: 1 0 : 4 : 12 : 0.01
+T: 1 0 : 4 : 13 : 0.01
+T: 1 0 : 4 : 14 : 0.01
+T: 1 0 : 4 : 16 : 0.01
+T: 1 0 : 4 : 28 : 0.36
+T: 1 0 : 4 : 30 : 0.06
+T: 1 0 : 4 : 31 : 0.06
+T: 1 0 : 4 : 32 : 0.06
+T: 1 0 : 4 : 34 : 0.06
+T: 1 1 : 4 : 1 : 0.03
+T: 1 1 : 4 : 3 : 0.03
+T: 1 1 : 4 : 4 : 0.03
+T: 1 1 : 4 : 5 : 0.03
+T: 1 1 : 4 : 7 : 0.18
+T: 1 1 : 4 : 10 : 0.01
+T: 1 1 : 4 : 12 : 0.01
+T: 1 1 : 4 : 13 : 0.01
+T: 1 1 : 4 : 14 : 0.01
+T: 1 1 : 4 : 16 : 0.06
+T: 1 1 : 4 : 28 : 0.06
+T: 1 1 : 4 : 30 : 0.06
+T: 1 1 : 4 : 31 : 0.06
+T: 1 1 : 4 : 32 : 0.06
+T: 1 1 : 4 : 34 : 0.36
+T: 1 2 : 4 : 1 : 0.03
+T: 1 2 : 4 : 3 : 0.18
+T: 1 2 : 4 : 4 : 0.03
+T: 1 2 : 4 : 5 : 0.03
+T: 1 2 : 4 : 7 : 0.03
+T: 1 2 : 4 : 10 : 0.01
+T: 1 2 : 4 : 12 : 0.06
+T: 1 2 : 4 : 13 : 0.01
+T: 1 2 : 4 : 14 : 0.01
+T: 1 2 : 4 : 16 : 0.01
+T: 1 2 : 4 : 28 : 0.06
+T: 1 2 : 4 : 30 : 0.36
+T: 1 2 : 4 : 31 : 0.06
+T: 1 2 : 4 : 32 : 0.06
+T: 1 2 : 4 : 34 : 0.06
+T: 1 3 : 4 : 1 : 0.03
+T: 1 3 : 4 : 3 : 0.03
+T: 1 3 : 4 : 4 : 0.03
+T: 1 3 : 4 : 5 : 0.18
+T: 1 3 : 4 : 7 : 0.03
+T: 1 3 : 4 : 10 : 0.01
+T: 1 3 : 4 : 12 : 0.01
+T: 1 3 : 4 : 13 : 0.01
+T: 1 3 : 4 : 14 : 0.06
+T: 1 3 : 4 : 16 : 0.01
+T: 1 3 : 4 : 28 : 0.06
+T: 1 3 : 4 : 30 : 0.06
+T: 1 3 : 4 : 31 : 0.06
+T: 1 3 : 4 : 32 : 0.36
+T: 1 3 : 4 : 34 : 0.06
+T: 1 4 : 4 : 4 : 0.3
+T: 1 4 : 4 : 13 : 0.1
+T: 1 4 : 4 : 31 : 0.6
+T: 2 0 : 4 : 1 : 0.48
+T: 2 0 : 4 : 3 : 0.08
+T: 2 0 : 4 : 4 : 0.08
+T: 2 0 : 4 : 5 : 0.08
+T: 2 0 : 4 : 7 : 0.08
+T: 2 0 : 4 : 10 : 0.06
+T: 2 0 : 4 : 12 : 0.01
+T: 2 0 : 4 : 13 : 0.01
+T: 2 0 : 4 : 14 : 0.01
+T: 2 0 : 4 : 16 : 0.01
+T: 2 0 : 4 : 28 : 0.06
+T: 2 0 : 4 : 30 : 0.01
+T: 2 0 : 4 : 31 : 0.01
+T: 2 0 : 4 : 32 : 0.01
+T: 2 0 : 4 : 34 : 0.01
+T: 2 1 : 4 : 1 : 0.08
+T: 2 1 : 4 : 3 : 0.08
+T: 2 1 : 4 : 4 : 0.08
+T: 2 1 : 4 : 5 : 0.08
+T: 2 1 : 4 : 7 : 0.48
+T: 2 1 : 4 : 10 : 0.01
+T: 2 1 : 4 : 12 : 0.01
+T: 2 1 : 4 : 13 : 0.01
+T: 2 1 : 4 : 14 : 0.01
+T: 2 1 : 4 : 16 : 0.06
+T: 2 1 : 4 : 28 : 0.01
+T: 2 1 : 4 : 30 : 0.01
+T: 2 1 : 4 : 31 : 0.01
+T: 2 1 : 4 : 32 : 0.01
+T: 2 1 : 4 : 34 : 0.06
+T: 2 2 : 4 : 1 : 0.08
+T: 2 2 : 4 : 3 : 0.48
+T: 2 2 : 4 : 4 : 0.08
+T: 2 2 : 4 : 5 : 0.08
+T: 2 2 : 4 : 7 : 0.08
+T: 2 2 : 4 : 10 : 0.01
+T: 2 2 : 4 : 12 : 0.06
+T: 2 2 : 4 : 13 : 0.01
+T: 2 2 : 4 : 14 : 0.01
+T: 2 2 : 4 : 16 : 0.01
+T: 2 2 : 4 : 28 : 0.01
+T: 2 2 : 4 : 30 : 0.06
+T: 2 2 : 4 : 31 : 0.01
+T: 2 2 : 4 : 32 : 0.01
+T: 2 2 : 4 : 34 : 0.01
+T: 2 3 : 4 : 1 : 0.08
+T: 2 3 : 4 : 3 : 0.08
+T: 2 3 : 4 : 4 : 0.08
+T: 2 3 : 4 : 5 : 0.48
+T: 2 3 : 4 : 7 : 0.08
+T: 2 3 : 4 : 10 : 0.01
+T: 2 3 : 4 : 12 : 0.01
+T: 2 3 : 4 : 13 : 0.01
+T: 2 3 : 4 : 14 : 0.06
+T: 2 3 : 4 : 16 : 0.01
+T: 2 3 : 4 : 28 : 0.01
+T: 2 3 : 4 : 30 : 0.01
+T: 2 3 : 4 : 31 : 0.01
+T: 2 3 : 4 : 32 : 0.06
+T: 2 3 : 4 : 34 : 0.01
+T: 2 4 : 4 : 4 : 0.8
+T: 2 4 : 4 : 13 : 0.1
+T: 2 4 : 4 : 31 : 0.1
+T: 3 0 : 4 : 1 : 0.18
+T: 3 0 : 4 : 3 : 0.03
+T: 3 0 : 4 : 4 : 0.03
+T: 3 0 : 4 : 5 : 0.03
+T: 3 0 : 4 : 7 : 0.03
+T: 3 0 : 4 : 10 : 0.36
+T: 3 0 : 4 : 12 : 0.06
+T: 3 0 : 4 : 13 : 0.06
+T: 3 0 : 4 : 14 : 0.06
+T: 3 0 : 4 : 16 : 0.06
+T: 3 0 : 4 : 28 : 0.06
+T: 3 0 : 4 : 30 : 0.01
+T: 3 0 : 4 : 31 : 0.01
+T: 3 0 : 4 : 32 : 0.01
+T: 3 0 : 4 : 34 : 0.01
+T: 3 1 : 4 : 1 : 0.03
+T: 3 1 : 4 : 3 : 0.03
+T: 3 1 : 4 : 4 : 0.03
+T: 3 1 : 4 : 5 : 0.03
+T: 3 1 : 4 : 7 : 0.18
+T: 3 1 : 4 : 10 : 0.06
+T: 3 1 : 4 : 12 : 0.06
+T: 3 1 : 4 : 13 : 0.06
+T: 3 1 : 4 : 14 : 0.06
+T: 3 1 : 4 : 16 : 0.36
+T: 3 1 : 4 : 28 : 0.01
+T: 3 1 : 4 : 30 : 0.01
+T: 3 1 : 4 : 31 : 0.01
+T: 3 1 : 4 : 32 : 0.01
+T: 3 1 : 4 : 34 : 0.06
+T: 3 2 : 4 : 1 : 0.03
+T: 3 2 : 4 : 3 : 0.18
+T: 3 2 : 4 : 4 : 0.03
+T: 3 2 : 4 : 5 : 0.03
+T: 3 2 : 4 : 7 : 0.03
+T: 3 2 : 4 : 10 : 0.06
+T: 3 2 : 4 : 12 : 0.36
+T: 3 2 : 4 : 13 : 0.06
+T: 3 2 : 4 : 14 : 0.06
+T: 3 2 : 4 : 16 : 0.06
+T: 3 2 : 4 : 28 : 0.01
+T: 3 2 : 4 : 30 : 0.06
+T: 3 2 : 4 : 31 : 0.01
+T: 3 2 : 4 : 32 : 0.01
+T: 3 2 : 4 : 34 : 0.01
+T: 3 3 : 4 : 1 : 0.03
+T: 3 3 : 4 : 3 : 0.03
+T: 3 3 : 4 : 4 : 0.03
+T: 3 3 : 4 : 5 : 0.18
+T: 3 3 : 4 : 7 : 0.03
+T: 3 3 : 4 : 10 : 0.06
+T: 3 3 : 4 : 12 : 0.06
+T: 3 3 : 4 : 13 : 0.06
+T: 3 3 : 4 : 14 : 0.36
+T: 3 3 : 4 : 16 : 0.06
+T: 3 3 : 4 : 28 : 0.01
+T: 3 3 : 4 : 30 : 0.01
+T: 3 3 : 4 : 31 : 0.01
+T: 3 3 : 4 : 32 : 0.06
+T: 3 3 : 4 : 34 : 0.01
+T: 3 4 : 4 : 4 : 0.3
+T: 3 4 : 4 : 13 : 0.6
+T: 3 4 : 4 : 31 : 0.1
+T: 4 0 : 4 : 1 : 0.6
+T: 4 0 : 4 : 3 : 0.1
+T: 4 0 : 4 : 4 : 0.1
+T: 4 0 : 4 : 5 : 0.1
+T: 4 0 : 4 : 7 : 0.1
+T: 4 1 : 4 : 1 : 0.1
+T: 4 1 : 4 : 3 : 0.1
+T: 4 1 : 4 : 4 : 0.1
+T: 4 1 : 4 : 5 : 0.1
+T: 4 1 : 4 : 7 : 0.6
+T: 4 2 : 4 : 1 : 0.1
+T: 4 2 : 4 : 3 : 0.6
+T: 4 2 : 4 : 4 : 0.1
+T: 4 2 : 4 : 5 : 0.1
+T: 4 2 : 4 : 7 : 0.1
+T: 4 3 : 4 : 1 : 0.1
+T: 4 3 : 4 : 3 : 0.1
+T: 4 3 : 4 : 4 : 0.1
+T: 4 3 : 4 : 5 : 0.6
+T: 4 3 : 4 : 7 : 0.1
+T: 4 4 : 4 : 4 : 1.0
+T: 0 0 : 5 : 2 : 0.48
+T: 0 0 : 5 : 4 : 0.08
+T: 0 0 : 5 : 5 : 0.16
+T: 0 0 : 5 : 8 : 0.08
+T: 0 0 : 5 : 11 : 0.06
+T: 0 0 : 5 : 13 : 0.01
+T: 0 0 : 5 : 14 : 0.02
+T: 0 0 : 5 : 17 : 0.01
+T: 0 0 : 5 : 29 : 0.06
+T: 0 0 : 5 : 31 : 0.01
+T: 0 0 : 5 : 32 : 0.02
+T: 0 0 : 5 : 35 : 0.01
+T: 0 1 : 5 : 2 : 0.08
+T: 0 1 : 5 : 4 : 0.08
+T: 0 1 : 5 : 5 : 0.16
+T: 0 1 : 5 : 8 : 0.48
+T: 0 1 : 5 : 11 : 0.01
+T: 0 1 : 5 : 13 : 0.01
+T: 0 1 : 5 : 14 : 0.02
+T: 0 1 : 5 : 17 : 0.06
+T: 0 1 : 5 : 29 : 0.01
+T: 0 1 : 5 : 31 : 0.01
+T: 0 1 : 5 : 32 : 0.02
+T: 0 1 : 5 : 35 : 0.06
+T: 0 2 : 5 : 2 : 0.08
+T: 0 2 : 5 : 4 : 0.48
+T: 0 2 : 5 : 5 : 0.16
+T: 0 2 : 5 : 8 : 0.08
+T: 0 2 : 5 : 11 : 0.01
+T: 0 2 : 5 : 13 : 0.06
+T: 0 2 : 5 : 14 : 0.02
+T: 0 2 : 5 : 17 : 0.01
+T: 0 2 : 5 : 29 : 0.01
+T: 0 2 : 5 : 31 : 0.06
+T: 0 2 : 5 : 32 : 0.02
+T: 0 2 : 5 : 35 : 0.01
+T: 0 3 : 5 : 2 : 0.08
+T: 0 3 : 5 : 4 : 0.08
+T: 0 3 : 5 : 5 : 0.56
+T: 0 3 : 5 : 8 : 0.08
+T: 0 3 : 5 : 11 : 0.01
+T: 0 3 : 5 : 13 : 0.01
+T: 0 3 : 5 : 14 : 0.07
+T: 0 3 : 5 : 17 : 0.01
+T: 0 3 : 5 : 29 : 0.01
+T: 0 3 : 5 : 31 : 0.01
+T: 0 3 : 5 : 32 : 0.07
+T: 0 3 : 5 : 35 : 0.01
+T: 0 4 : 5 : 5 : 0.8
+T: 0 4 : 5 : 14 : 0.1
+T: 0 4 : 5 : 32 : 0.1
+T: 1 0 : 5 : 2 : 0.18
+T: 1 0 : 5 : 4 : 0.03
+T: 1 0 : 5 : 5 : 0.060
+T: 1 0 : 5 : 8 : 0.03
+T: 1 0 : 5 : 11 : 0.06
+T: 1 0 : 5 : 13 : 0.01
+T: 1 0 : 5 : 14 : 0.02
+T: 1 0 : 5 : 17 : 0.01
+T: 1 0 : 5 : 29 : 0.36
+T: 1 0 : 5 : 31 : 0.06
+T: 1 0 : 5 : 32 : 0.12
+T: 1 0 : 5 : 35 : 0.06
+T: 1 1 : 5 : 2 : 0.03
+T: 1 1 : 5 : 4 : 0.03
+T: 1 1 : 5 : 5 : 0.060
+T: 1 1 : 5 : 8 : 0.18
+T: 1 1 : 5 : 11 : 0.01
+T: 1 1 : 5 : 13 : 0.01
+T: 1 1 : 5 : 14 : 0.02
+T: 1 1 : 5 : 17 : 0.06
+T: 1 1 : 5 : 29 : 0.06
+T: 1 1 : 5 : 31 : 0.06
+T: 1 1 : 5 : 32 : 0.12
+T: 1 1 : 5 : 35 : 0.36
+T: 1 2 : 5 : 2 : 0.03
+T: 1 2 : 5 : 4 : 0.18
+T: 1 2 : 5 : 5 : 0.060
+T: 1 2 : 5 : 8 : 0.03
+T: 1 2 : 5 : 11 : 0.01
+T: 1 2 : 5 : 13 : 0.06
+T: 1 2 : 5 : 14 : 0.02
+T: 1 2 : 5 : 17 : 0.01
+T: 1 2 : 5 : 29 : 0.06
+T: 1 2 : 5 : 31 : 0.36
+T: 1 2 : 5 : 32 : 0.12
+T: 1 2 : 5 : 35 : 0.06
+T: 1 3 : 5 : 2 : 0.03
+T: 1 3 : 5 : 4 : 0.03
+T: 1 3 : 5 : 5 : 0.21
+T: 1 3 : 5 : 8 : 0.03
+T: 1 3 : 5 : 11 : 0.01
+T: 1 3 : 5 : 13 : 0.01
+T: 1 3 : 5 : 14 : 0.07
+T: 1 3 : 5 : 17 : 0.01
+T: 1 3 : 5 : 29 : 0.06
+T: 1 3 : 5 : 31 : 0.06
+T: 1 3 : 5 : 32 : 0.42
+T: 1 3 : 5 : 35 : 0.06
+T: 1 4 : 5 : 5 : 0.3
+T: 1 4 : 5 : 14 : 0.1
+T: 1 4 : 5 : 32 : 0.6
+T: 2 0 : 5 : 2 : 0.48
+T: 2 0 : 5 : 4 : 0.08
+T: 2 0 : 5 : 5 : 0.16
+T: 2 0 : 5 : 8 : 0.08
+T: 2 0 : 5 : 11 : 0.06
+T: 2 0 : 5 : 13 : 0.01
+T: 2 0 : 5 : 14 : 0.02
+T: 2 0 : 5 : 17 : 0.01
+T: 2 0 : 5 : 29 : 0.06
+T: 2 0 : 5 : 31 : 0.01
+T: 2 0 : 5 : 32 : 0.02
+T: 2 0 : 5 : 35 : 0.01
+T: 2 1 : 5 : 2 : 0.08
+T: 2 1 : 5 : 4 : 0.08
+T: 2 1 : 5 : 5 : 0.16
+T: 2 1 : 5 : 8 : 0.48
+T: 2 1 : 5 : 11 : 0.01
+T: 2 1 : 5 : 13 : 0.01
+T: 2 1 : 5 : 14 : 0.02
+T: 2 1 : 5 : 17 : 0.06
+T: 2 1 : 5 : 29 : 0.01
+T: 2 1 : 5 : 31 : 0.01
+T: 2 1 : 5 : 32 : 0.02
+T: 2 1 : 5 : 35 : 0.06
+T: 2 2 : 5 : 2 : 0.08
+T: 2 2 : 5 : 4 : 0.48
+T: 2 2 : 5 : 5 : 0.16
+T: 2 2 : 5 : 8 : 0.08
+T: 2 2 : 5 : 11 : 0.01
+T: 2 2 : 5 : 13 : 0.06
+T: 2 2 : 5 : 14 : 0.02
+T: 2 2 : 5 : 17 : 0.01
+T: 2 2 : 5 : 29 : 0.01
+T: 2 2 : 5 : 31 : 0.06
+T: 2 2 : 5 : 32 : 0.02
+T: 2 2 : 5 : 35 : 0.01
+T: 2 3 : 5 : 2 : 0.08
+T: 2 3 : 5 : 4 : 0.08
+T: 2 3 : 5 : 5 : 0.56
+T: 2 3 : 5 : 8 : 0.08
+T: 2 3 : 5 : 11 : 0.01
+T: 2 3 : 5 : 13 : 0.01
+T: 2 3 : 5 : 14 : 0.07
+T: 2 3 : 5 : 17 : 0.01
+T: 2 3 : 5 : 29 : 0.01
+T: 2 3 : 5 : 31 : 0.01
+T: 2 3 : 5 : 32 : 0.07
+T: 2 3 : 5 : 35 : 0.01
+T: 2 4 : 5 : 5 : 0.8
+T: 2 4 : 5 : 14 : 0.1
+T: 2 4 : 5 : 32 : 0.1
+T: 3 0 : 5 : 2 : 0.18
+T: 3 0 : 5 : 4 : 0.03
+T: 3 0 : 5 : 5 : 0.060
+T: 3 0 : 5 : 8 : 0.03
+T: 3 0 : 5 : 11 : 0.36
+T: 3 0 : 5 : 13 : 0.06
+T: 3 0 : 5 : 14 : 0.12
+T: 3 0 : 5 : 17 : 0.06
+T: 3 0 : 5 : 29 : 0.06
+T: 3 0 : 5 : 31 : 0.01
+T: 3 0 : 5 : 32 : 0.02
+T: 3 0 : 5 : 35 : 0.01
+T: 3 1 : 5 : 2 : 0.03
+T: 3 1 : 5 : 4 : 0.03
+T: 3 1 : 5 : 5 : 0.060
+T: 3 1 : 5 : 8 : 0.18
+T: 3 1 : 5 : 11 : 0.06
+T: 3 1 : 5 : 13 : 0.06
+T: 3 1 : 5 : 14 : 0.12
+T: 3 1 : 5 : 17 : 0.36
+T: 3 1 : 5 : 29 : 0.01
+T: 3 1 : 5 : 31 : 0.01
+T: 3 1 : 5 : 32 : 0.02
+T: 3 1 : 5 : 35 : 0.06
+T: 3 2 : 5 : 2 : 0.03
+T: 3 2 : 5 : 4 : 0.18
+T: 3 2 : 5 : 5 : 0.060
+T: 3 2 : 5 : 8 : 0.03
+T: 3 2 : 5 : 11 : 0.06
+T: 3 2 : 5 : 13 : 0.36
+T: 3 2 : 5 : 14 : 0.12
+T: 3 2 : 5 : 17 : 0.06
+T: 3 2 : 5 : 29 : 0.01
+T: 3 2 : 5 : 31 : 0.06
+T: 3 2 : 5 : 32 : 0.02
+T: 3 2 : 5 : 35 : 0.01
+T: 3 3 : 5 : 2 : 0.03
+T: 3 3 : 5 : 4 : 0.03
+T: 3 3 : 5 : 5 : 0.21
+T: 3 3 : 5 : 8 : 0.03
+T: 3 3 : 5 : 11 : 0.06
+T: 3 3 : 5 : 13 : 0.06
+T: 3 3 : 5 : 14 : 0.42
+T: 3 3 : 5 : 17 : 0.06
+T: 3 3 : 5 : 29 : 0.01
+T: 3 3 : 5 : 31 : 0.01
+T: 3 3 : 5 : 32 : 0.07
+T: 3 3 : 5 : 35 : 0.01
+T: 3 4 : 5 : 5 : 0.3
+T: 3 4 : 5 : 14 : 0.6
+T: 3 4 : 5 : 32 : 0.1
+T: 4 0 : 5 : 2 : 0.6
+T: 4 0 : 5 : 4 : 0.1
+T: 4 0 : 5 : 5 : 0.2
+T: 4 0 : 5 : 8 : 0.1
+T: 4 1 : 5 : 2 : 0.1
+T: 4 1 : 5 : 4 : 0.1
+T: 4 1 : 5 : 5 : 0.2
+T: 4 1 : 5 : 8 : 0.6
+T: 4 2 : 5 : 2 : 0.1
+T: 4 2 : 5 : 4 : 0.6
+T: 4 2 : 5 : 5 : 0.2
+T: 4 2 : 5 : 8 : 0.1
+T: 4 3 : 5 : 2 : 0.1
+T: 4 3 : 5 : 4 : 0.1
+T: 4 3 : 5 : 5 : 0.7
+T: 4 3 : 5 : 8 : 0.1
+T: 4 4 : 5 : 5 : 1.0
+T: 0 0 : 6 : 3 : 0.48
+T: 0 0 : 6 : 6 : 0.24
+T: 0 0 : 6 : 7 : 0.08
+T: 0 0 : 6 : 12 : 0.06
+T: 0 0 : 6 : 15 : 0.03
+T: 0 0 : 6 : 16 : 0.01
+T: 0 0 : 6 : 30 : 0.06
+T: 0 0 : 6 : 33 : 0.03
+T: 0 0 : 6 : 34 : 0.01
+T: 0 1 : 6 : 3 : 0.08
+T: 0 1 : 6 : 6 : 0.64
+T: 0 1 : 6 : 7 : 0.08
+T: 0 1 : 6 : 12 : 0.01
+T: 0 1 : 6 : 15 : 0.08
+T: 0 1 : 6 : 16 : 0.01
+T: 0 1 : 6 : 30 : 0.01
+T: 0 1 : 6 : 33 : 0.08
+T: 0 1 : 6 : 34 : 0.01
+T: 0 2 : 6 : 3 : 0.08
+T: 0 2 : 6 : 6 : 0.64
+T: 0 2 : 6 : 7 : 0.08
+T: 0 2 : 6 : 12 : 0.01
+T: 0 2 : 6 : 15 : 0.08
+T: 0 2 : 6 : 16 : 0.01
+T: 0 2 : 6 : 30 : 0.01
+T: 0 2 : 6 : 33 : 0.08
+T: 0 2 : 6 : 34 : 0.01
+T: 0 3 : 6 : 3 : 0.08
+T: 0 3 : 6 : 6 : 0.24
+T: 0 3 : 6 : 7 : 0.48
+T: 0 3 : 6 : 12 : 0.01
+T: 0 3 : 6 : 15 : 0.03
+T: 0 3 : 6 : 16 : 0.06
+T: 0 3 : 6 : 30 : 0.01
+T: 0 3 : 6 : 33 : 0.03
+T: 0 3 : 6 : 34 : 0.06
+T: 0 4 : 6 : 6 : 0.8
+T: 0 4 : 6 : 15 : 0.1
+T: 0 4 : 6 : 33 : 0.1
+T: 1 0 : 6 : 3 : 0.18
+T: 1 0 : 6 : 6 : 0.09
+T: 1 0 : 6 : 7 : 0.03
+T: 1 0 : 6 : 12 : 0.06
+T: 1 0 : 6 : 15 : 0.03
+T: 1 0 : 6 : 16 : 0.01
+T: 1 0 : 6 : 30 : 0.36
+T: 1 0 : 6 : 33 : 0.18
+T: 1 0 : 6 : 34 : 0.06
+T: 1 1 : 6 : 3 : 0.03
+T: 1 1 : 6 : 6 : 0.24
+T: 1 1 : 6 : 7 : 0.03
+T: 1 1 : 6 : 12 : 0.01
+T: 1 1 : 6 : 15 : 0.08
+T: 1 1 : 6 : 16 : 0.01
+T: 1 1 : 6 : 30 : 0.06
+T: 1 1 : 6 : 33 : 0.48
+T: 1 1 : 6 : 34 : 0.06
+T: 1 2 : 6 : 3 : 0.03
+T: 1 2 : 6 : 6 : 0.24
+T: 1 2 : 6 : 7 : 0.03
+T: 1 2 : 6 : 12 : 0.01
+T: 1 2 : 6 : 15 : 0.08
+T: 1 2 : 6 : 16 : 0.01
+T: 1 2 : 6 : 30 : 0.06
+T: 1 2 : 6 : 33 : 0.48
+T: 1 2 : 6 : 34 : 0.06
+T: 1 3 : 6 : 3 : 0.03
+T: 1 3 : 6 : 6 : 0.09
+T: 1 3 : 6 : 7 : 0.18
+T: 1 3 : 6 : 12 : 0.01
+T: 1 3 : 6 : 15 : 0.03
+T: 1 3 : 6 : 16 : 0.06
+T: 1 3 : 6 : 30 : 0.06
+T: 1 3 : 6 : 33 : 0.18
+T: 1 3 : 6 : 34 : 0.36
+T: 1 4 : 6 : 6 : 0.3
+T: 1 4 : 6 : 15 : 0.1
+T: 1 4 : 6 : 33 : 0.6
+T: 2 0 : 6 : 3 : 0.48
+T: 2 0 : 6 : 6 : 0.24
+T: 2 0 : 6 : 7 : 0.08
+T: 2 0 : 6 : 12 : 0.06
+T: 2 0 : 6 : 15 : 0.03
+T: 2 0 : 6 : 16 : 0.01
+T: 2 0 : 6 : 30 : 0.06
+T: 2 0 : 6 : 33 : 0.03
+T: 2 0 : 6 : 34 : 0.01
+T: 2 1 : 6 : 3 : 0.08
+T: 2 1 : 6 : 6 : 0.64
+T: 2 1 : 6 : 7 : 0.08
+T: 2 1 : 6 : 12 : 0.01
+T: 2 1 : 6 : 15 : 0.08
+T: 2 1 : 6 : 16 : 0.01
+T: 2 1 : 6 : 30 : 0.01
+T: 2 1 : 6 : 33 : 0.08
+T: 2 1 : 6 : 34 : 0.01
+T: 2 2 : 6 : 3 : 0.08
+T: 2 2 : 6 : 6 : 0.64
+T: 2 2 : 6 : 7 : 0.08
+T: 2 2 : 6 : 12 : 0.01
+T: 2 2 : 6 : 15 : 0.08
+T: 2 2 : 6 : 16 : 0.01
+T: 2 2 : 6 : 30 : 0.01
+T: 2 2 : 6 : 33 : 0.08
+T: 2 2 : 6 : 34 : 0.01
+T: 2 3 : 6 : 3 : 0.08
+T: 2 3 : 6 : 6 : 0.24
+T: 2 3 : 6 : 7 : 0.48
+T: 2 3 : 6 : 12 : 0.01
+T: 2 3 : 6 : 15 : 0.03
+T: 2 3 : 6 : 16 : 0.06
+T: 2 3 : 6 : 30 : 0.01
+T: 2 3 : 6 : 33 : 0.03
+T: 2 3 : 6 : 34 : 0.06
+T: 2 4 : 6 : 6 : 0.8
+T: 2 4 : 6 : 15 : 0.1
+T: 2 4 : 6 : 33 : 0.1
+T: 3 0 : 6 : 3 : 0.18
+T: 3 0 : 6 : 6 : 0.09
+T: 3 0 : 6 : 7 : 0.03
+T: 3 0 : 6 : 12 : 0.36
+T: 3 0 : 6 : 15 : 0.18
+T: 3 0 : 6 : 16 : 0.06
+T: 3 0 : 6 : 30 : 0.06
+T: 3 0 : 6 : 33 : 0.03
+T: 3 0 : 6 : 34 : 0.01
+T: 3 1 : 6 : 3 : 0.03
+T: 3 1 : 6 : 6 : 0.24
+T: 3 1 : 6 : 7 : 0.03
+T: 3 1 : 6 : 12 : 0.06
+T: 3 1 : 6 : 15 : 0.48
+T: 3 1 : 6 : 16 : 0.06
+T: 3 1 : 6 : 30 : 0.01
+T: 3 1 : 6 : 33 : 0.08
+T: 3 1 : 6 : 34 : 0.01
+T: 3 2 : 6 : 3 : 0.03
+T: 3 2 : 6 : 6 : 0.24
+T: 3 2 : 6 : 7 : 0.03
+T: 3 2 : 6 : 12 : 0.06
+T: 3 2 : 6 : 15 : 0.48
+T: 3 2 : 6 : 16 : 0.06
+T: 3 2 : 6 : 30 : 0.01
+T: 3 2 : 6 : 33 : 0.08
+T: 3 2 : 6 : 34 : 0.01
+T: 3 3 : 6 : 3 : 0.03
+T: 3 3 : 6 : 6 : 0.09
+T: 3 3 : 6 : 7 : 0.18
+T: 3 3 : 6 : 12 : 0.06
+T: 3 3 : 6 : 15 : 0.18
+T: 3 3 : 6 : 16 : 0.36
+T: 3 3 : 6 : 30 : 0.01
+T: 3 3 : 6 : 33 : 0.03
+T: 3 3 : 6 : 34 : 0.06
+T: 3 4 : 6 : 6 : 0.3
+T: 3 4 : 6 : 15 : 0.6
+T: 3 4 : 6 : 33 : 0.1
+T: 4 0 : 6 : 3 : 0.6
+T: 4 0 : 6 : 6 : 0.3
+T: 4 0 : 6 : 7 : 0.1
+T: 4 1 : 6 : 3 : 0.1
+T: 4 1 : 6 : 6 : 0.8
+T: 4 1 : 6 : 7 : 0.1
+T: 4 2 : 6 : 3 : 0.1
+T: 4 2 : 6 : 6 : 0.8
+T: 4 2 : 6 : 7 : 0.1
+T: 4 3 : 6 : 3 : 0.1
+T: 4 3 : 6 : 6 : 0.3
+T: 4 3 : 6 : 7 : 0.6
+T: 4 4 : 6 : 6 : 1.0
+T: 0 0 : 7 : 4 : 0.48
+T: 0 0 : 7 : 6 : 0.08
+T: 0 0 : 7 : 7 : 0.16
+T: 0 0 : 7 : 8 : 0.08
+T: 0 0 : 7 : 13 : 0.06
+T: 0 0 : 7 : 15 : 0.01
+T: 0 0 : 7 : 16 : 0.02
+T: 0 0 : 7 : 17 : 0.01
+T: 0 0 : 7 : 31 : 0.06
+T: 0 0 : 7 : 33 : 0.01
+T: 0 0 : 7 : 34 : 0.02
+T: 0 0 : 7 : 35 : 0.01
+T: 0 1 : 7 : 4 : 0.08
+T: 0 1 : 7 : 6 : 0.08
+T: 0 1 : 7 : 7 : 0.56
+T: 0 1 : 7 : 8 : 0.08
+T: 0 1 : 7 : 13 : 0.01
+T: 0 1 : 7 : 15 : 0.01
+T: 0 1 : 7 : 16 : 0.07
+T: 0 1 : 7 : 17 : 0.01
+T: 0 1 : 7 : 31 : 0.01
+T: 0 1 : 7 : 33 : 0.01
+T: 0 1 : 7 : 34 : 0.07
+T: 0 1 : 7 : 35 : 0.01
+T: 0 2 : 7 : 4 : 0.08
+T: 0 2 : 7 : 6 : 0.48
+T: 0 2 : 7 : 7 : 0.16
+T: 0 2 : 7 : 8 : 0.08
+T: 0 2 : 7 : 13 : 0.01
+T: 0 2 : 7 : 15 : 0.06
+T: 0 2 : 7 : 16 : 0.02
+T: 0 2 : 7 : 17 : 0.01
+T: 0 2 : 7 : 31 : 0.01
+T: 0 2 : 7 : 33 : 0.06
+T: 0 2 : 7 : 34 : 0.02
+T: 0 2 : 7 : 35 : 0.01
+T: 0 3 : 7 : 4 : 0.08
+T: 0 3 : 7 : 6 : 0.08
+T: 0 3 : 7 : 7 : 0.16
+T: 0 3 : 7 : 8 : 0.48
+T: 0 3 : 7 : 13 : 0.01
+T: 0 3 : 7 : 15 : 0.01
+T: 0 3 : 7 : 16 : 0.02
+T: 0 3 : 7 : 17 : 0.06
+T: 0 3 : 7 : 31 : 0.01
+T: 0 3 : 7 : 33 : 0.01
+T: 0 3 : 7 : 34 : 0.02
+T: 0 3 : 7 : 35 : 0.06
+T: 0 4 : 7 : 7 : 0.8
+T: 0 4 : 7 : 16 : 0.1
+T: 0 4 : 7 : 34 : 0.1
+T: 1 0 : 7 : 4 : 0.18
+T: 1 0 : 7 : 6 : 0.03
+T: 1 0 : 7 : 7 : 0.060
+T: 1 0 : 7 : 8 : 0.03
+T: 1 0 : 7 : 13 : 0.06
+T: 1 0 : 7 : 15 : 0.01
+T: 1 0 : 7 : 16 : 0.02
+T: 1 0 : 7 : 17 : 0.01
+T: 1 0 : 7 : 31 : 0.36
+T: 1 0 : 7 : 33 : 0.06
+T: 1 0 : 7 : 34 : 0.12
+T: 1 0 : 7 : 35 : 0.06
+T: 1 1 : 7 : 4 : 0.03
+T: 1 1 : 7 : 6 : 0.03
+T: 1 1 : 7 : 7 : 0.21
+T: 1 1 : 7 : 8 : 0.03
+T: 1 1 : 7 : 13 : 0.01
+T: 1 1 : 7 : 15 : 0.01
+T: 1 1 : 7 : 16 : 0.07
+T: 1 1 : 7 : 17 : 0.01
+T: 1 1 : 7 : 31 : 0.06
+T: 1 1 : 7 : 33 : 0.06
+T: 1 1 : 7 : 34 : 0.42
+T: 1 1 : 7 : 35 : 0.06
+T: 1 2 : 7 : 4 : 0.03
+T: 1 2 : 7 : 6 : 0.18
+T: 1 2 : 7 : 7 : 0.060
+T: 1 2 : 7 : 8 : 0.03
+T: 1 2 : 7 : 13 : 0.01
+T: 1 2 : 7 : 15 : 0.06
+T: 1 2 : 7 : 16 : 0.02
+T: 1 2 : 7 : 17 : 0.01
+T: 1 2 : 7 : 31 : 0.06
+T: 1 2 : 7 : 33 : 0.36
+T: 1 2 : 7 : 34 : 0.12
+T: 1 2 : 7 : 35 : 0.06
+T: 1 3 : 7 : 4 : 0.03
+T: 1 3 : 7 : 6 : 0.03
+T: 1 3 : 7 : 7 : 0.060
+T: 1 3 : 7 : 8 : 0.18
+T: 1 3 : 7 : 13 : 0.01
+T: 1 3 : 7 : 15 : 0.01
+T: 1 3 : 7 : 16 : 0.02
+T: 1 3 : 7 : 17 : 0.06
+T: 1 3 : 7 : 31 : 0.06
+T: 1 3 : 7 : 33 : 0.06
+T: 1 3 : 7 : 34 : 0.12
+T: 1 3 : 7 : 35 : 0.36
+T: 1 4 : 7 : 7 : 0.3
+T: 1 4 : 7 : 16 : 0.1
+T: 1 4 : 7 : 34 : 0.6
+T: 2 0 : 7 : 4 : 0.48
+T: 2 0 : 7 : 6 : 0.08
+T: 2 0 : 7 : 7 : 0.16
+T: 2 0 : 7 : 8 : 0.08
+T: 2 0 : 7 : 13 : 0.06
+T: 2 0 : 7 : 15 : 0.01
+T: 2 0 : 7 : 16 : 0.02
+T: 2 0 : 7 : 17 : 0.01
+T: 2 0 : 7 : 31 : 0.06
+T: 2 0 : 7 : 33 : 0.01
+T: 2 0 : 7 : 34 : 0.02
+T: 2 0 : 7 : 35 : 0.01
+T: 2 1 : 7 : 4 : 0.08
+T: 2 1 : 7 : 6 : 0.08
+T: 2 1 : 7 : 7 : 0.56
+T: 2 1 : 7 : 8 : 0.08
+T: 2 1 : 7 : 13 : 0.01
+T: 2 1 : 7 : 15 : 0.01
+T: 2 1 : 7 : 16 : 0.07
+T: 2 1 : 7 : 17 : 0.01
+T: 2 1 : 7 : 31 : 0.01
+T: 2 1 : 7 : 33 : 0.01
+T: 2 1 : 7 : 34 : 0.07
+T: 2 1 : 7 : 35 : 0.01
+T: 2 2 : 7 : 4 : 0.08
+T: 2 2 : 7 : 6 : 0.48
+T: 2 2 : 7 : 7 : 0.16
+T: 2 2 : 7 : 8 : 0.08
+T: 2 2 : 7 : 13 : 0.01
+T: 2 2 : 7 : 15 : 0.06
+T: 2 2 : 7 : 16 : 0.02
+T: 2 2 : 7 : 17 : 0.01
+T: 2 2 : 7 : 31 : 0.01
+T: 2 2 : 7 : 33 : 0.06
+T: 2 2 : 7 : 34 : 0.02
+T: 2 2 : 7 : 35 : 0.01
+T: 2 3 : 7 : 4 : 0.08
+T: 2 3 : 7 : 6 : 0.08
+T: 2 3 : 7 : 7 : 0.16
+T: 2 3 : 7 : 8 : 0.48
+T: 2 3 : 7 : 13 : 0.01
+T: 2 3 : 7 : 15 : 0.01
+T: 2 3 : 7 : 16 : 0.02
+T: 2 3 : 7 : 17 : 0.06
+T: 2 3 : 7 : 31 : 0.01
+T: 2 3 : 7 : 33 : 0.01
+T: 2 3 : 7 : 34 : 0.02
+T: 2 3 : 7 : 35 : 0.06
+T: 2 4 : 7 : 7 : 0.8
+T: 2 4 : 7 : 16 : 0.1
+T: 2 4 : 7 : 34 : 0.1
+T: 3 0 : 7 : 4 : 0.18
+T: 3 0 : 7 : 6 : 0.03
+T: 3 0 : 7 : 7 : 0.060
+T: 3 0 : 7 : 8 : 0.03
+T: 3 0 : 7 : 13 : 0.36
+T: 3 0 : 7 : 15 : 0.06
+T: 3 0 : 7 : 16 : 0.12
+T: 3 0 : 7 : 17 : 0.06
+T: 3 0 : 7 : 31 : 0.06
+T: 3 0 : 7 : 33 : 0.01
+T: 3 0 : 7 : 34 : 0.02
+T: 3 0 : 7 : 35 : 0.01
+T: 3 1 : 7 : 4 : 0.03
+T: 3 1 : 7 : 6 : 0.03
+T: 3 1 : 7 : 7 : 0.21
+T: 3 1 : 7 : 8 : 0.03
+T: 3 1 : 7 : 13 : 0.06
+T: 3 1 : 7 : 15 : 0.06
+T: 3 1 : 7 : 16 : 0.42
+T: 3 1 : 7 : 17 : 0.06
+T: 3 1 : 7 : 31 : 0.01
+T: 3 1 : 7 : 33 : 0.01
+T: 3 1 : 7 : 34 : 0.07
+T: 3 1 : 7 : 35 : 0.01
+T: 3 2 : 7 : 4 : 0.03
+T: 3 2 : 7 : 6 : 0.18
+T: 3 2 : 7 : 7 : 0.060
+T: 3 2 : 7 : 8 : 0.03
+T: 3 2 : 7 : 13 : 0.06
+T: 3 2 : 7 : 15 : 0.36
+T: 3 2 : 7 : 16 : 0.12
+T: 3 2 : 7 : 17 : 0.06
+T: 3 2 : 7 : 31 : 0.01
+T: 3 2 : 7 : 33 : 0.06
+T: 3 2 : 7 : 34 : 0.02
+T: 3 2 : 7 : 35 : 0.01
+T: 3 3 : 7 : 4 : 0.03
+T: 3 3 : 7 : 6 : 0.03
+T: 3 3 : 7 : 7 : 0.060
+T: 3 3 : 7 : 8 : 0.18
+T: 3 3 : 7 : 13 : 0.06
+T: 3 3 : 7 : 15 : 0.06
+T: 3 3 : 7 : 16 : 0.12
+T: 3 3 : 7 : 17 : 0.36
+T: 3 3 : 7 : 31 : 0.01
+T: 3 3 : 7 : 33 : 0.01
+T: 3 3 : 7 : 34 : 0.02
+T: 3 3 : 7 : 35 : 0.06
+T: 3 4 : 7 : 7 : 0.3
+T: 3 4 : 7 : 16 : 0.6
+T: 3 4 : 7 : 34 : 0.1
+T: 4 0 : 7 : 4 : 0.6
+T: 4 0 : 7 : 6 : 0.1
+T: 4 0 : 7 : 7 : 0.2
+T: 4 0 : 7 : 8 : 0.1
+T: 4 1 : 7 : 4 : 0.1
+T: 4 1 : 7 : 6 : 0.1
+T: 4 1 : 7 : 7 : 0.7
+T: 4 1 : 7 : 8 : 0.1
+T: 4 2 : 7 : 4 : 0.1
+T: 4 2 : 7 : 6 : 0.6
+T: 4 2 : 7 : 7 : 0.2
+T: 4 2 : 7 : 8 : 0.1
+T: 4 3 : 7 : 4 : 0.1
+T: 4 3 : 7 : 6 : 0.1
+T: 4 3 : 7 : 7 : 0.2
+T: 4 3 : 7 : 8 : 0.6
+T: 4 4 : 7 : 7 : 1.0
+T: 0 0 : 8 : 5 : 0.48
+T: 0 0 : 8 : 7 : 0.08
+T: 0 0 : 8 : 8 : 0.24
+T: 0 0 : 8 : 14 : 0.06
+T: 0 0 : 8 : 16 : 0.01
+T: 0 0 : 8 : 17 : 0.03
+T: 0 0 : 8 : 32 : 0.06
+T: 0 0 : 8 : 34 : 0.01
+T: 0 0 : 8 : 35 : 0.03
+T: 0 1 : 8 : 5 : 0.08
+T: 0 1 : 8 : 7 : 0.08
+T: 0 1 : 8 : 8 : 0.64
+T: 0 1 : 8 : 14 : 0.01
+T: 0 1 : 8 : 16 : 0.01
+T: 0 1 : 8 : 17 : 0.08
+T: 0 1 : 8 : 32 : 0.01
+T: 0 1 : 8 : 34 : 0.01
+T: 0 1 : 8 : 35 : 0.08
+T: 0 2 : 8 : 5 : 0.08
+T: 0 2 : 8 : 7 : 0.48
+T: 0 2 : 8 : 8 : 0.24
+T: 0 2 : 8 : 14 : 0.01
+T: 0 2 : 8 : 16 : 0.06
+T: 0 2 : 8 : 17 : 0.03
+T: 0 2 : 8 : 32 : 0.01
+T: 0 2 : 8 : 34 : 0.06
+T: 0 2 : 8 : 35 : 0.03
+T: 0 3 : 8 : 5 : 0.08
+T: 0 3 : 8 : 7 : 0.08
+T: 0 3 : 8 : 8 : 0.64
+T: 0 3 : 8 : 14 : 0.01
+T: 0 3 : 8 : 16 : 0.01
+T: 0 3 : 8 : 17 : 0.08
+T: 0 3 : 8 : 32 : 0.01
+T: 0 3 : 8 : 34 : 0.01
+T: 0 3 : 8 : 35 : 0.08
+T: 0 4 : 8 : 8 : 0.8
+T: 0 4 : 8 : 17 : 0.1
+T: 0 4 : 8 : 35 : 0.1
+T: 1 0 : 8 : 5 : 0.18
+T: 1 0 : 8 : 7 : 0.03
+T: 1 0 : 8 : 8 : 0.09
+T: 1 0 : 8 : 14 : 0.06
+T: 1 0 : 8 : 16 : 0.01
+T: 1 0 : 8 : 17 : 0.03
+T: 1 0 : 8 : 32 : 0.36
+T: 1 0 : 8 : 34 : 0.06
+T: 1 0 : 8 : 35 : 0.18
+T: 1 1 : 8 : 5 : 0.03
+T: 1 1 : 8 : 7 : 0.03
+T: 1 1 : 8 : 8 : 0.24
+T: 1 1 : 8 : 14 : 0.01
+T: 1 1 : 8 : 16 : 0.01
+T: 1 1 : 8 : 17 : 0.08
+T: 1 1 : 8 : 32 : 0.06
+T: 1 1 : 8 : 34 : 0.06
+T: 1 1 : 8 : 35 : 0.48
+T: 1 2 : 8 : 5 : 0.03
+T: 1 2 : 8 : 7 : 0.18
+T: 1 2 : 8 : 8 : 0.09
+T: 1 2 : 8 : 14 : 0.01
+T: 1 2 : 8 : 16 : 0.06
+T: 1 2 : 8 : 17 : 0.03
+T: 1 2 : 8 : 32 : 0.06
+T: 1 2 : 8 : 34 : 0.36
+T: 1 2 : 8 : 35 : 0.18
+T: 1 3 : 8 : 5 : 0.03
+T: 1 3 : 8 : 7 : 0.03
+T: 1 3 : 8 : 8 : 0.24
+T: 1 3 : 8 : 14 : 0.01
+T: 1 3 : 8 : 16 : 0.01
+T: 1 3 : 8 : 17 : 0.08
+T: 1 3 : 8 : 32 : 0.06
+T: 1 3 : 8 : 34 : 0.06
+T: 1 3 : 8 : 35 : 0.48
+T: 1 4 : 8 : 8 : 0.3
+T: 1 4 : 8 : 17 : 0.1
+T: 1 4 : 8 : 35 : 0.6
+T: 2 0 : 8 : 5 : 0.48
+T: 2 0 : 8 : 7 : 0.08
+T: 2 0 : 8 : 8 : 0.24
+T: 2 0 : 8 : 14 : 0.06
+T: 2 0 : 8 : 16 : 0.01
+T: 2 0 : 8 : 17 : 0.03
+T: 2 0 : 8 : 32 : 0.06
+T: 2 0 : 8 : 34 : 0.01
+T: 2 0 : 8 : 35 : 0.03
+T: 2 1 : 8 : 5 : 0.08
+T: 2 1 : 8 : 7 : 0.08
+T: 2 1 : 8 : 8 : 0.64
+T: 2 1 : 8 : 14 : 0.01
+T: 2 1 : 8 : 16 : 0.01
+T: 2 1 : 8 : 17 : 0.08
+T: 2 1 : 8 : 32 : 0.01
+T: 2 1 : 8 : 34 : 0.01
+T: 2 1 : 8 : 35 : 0.08
+T: 2 2 : 8 : 5 : 0.08
+T: 2 2 : 8 : 7 : 0.48
+T: 2 2 : 8 : 8 : 0.24
+T: 2 2 : 8 : 14 : 0.01
+T: 2 2 : 8 : 16 : 0.06
+T: 2 2 : 8 : 17 : 0.03
+T: 2 2 : 8 : 32 : 0.01
+T: 2 2 : 8 : 34 : 0.06
+T: 2 2 : 8 : 35 : 0.03
+T: 2 3 : 8 : 5 : 0.08
+T: 2 3 : 8 : 7 : 0.08
+T: 2 3 : 8 : 8 : 0.64
+T: 2 3 : 8 : 14 : 0.01
+T: 2 3 : 8 : 16 : 0.01
+T: 2 3 : 8 : 17 : 0.08
+T: 2 3 : 8 : 32 : 0.01
+T: 2 3 : 8 : 34 : 0.01
+T: 2 3 : 8 : 35 : 0.08
+T: 2 4 : 8 : 8 : 0.8
+T: 2 4 : 8 : 17 : 0.1
+T: 2 4 : 8 : 35 : 0.1
+T: 3 0 : 8 : 5 : 0.18
+T: 3 0 : 8 : 7 : 0.03
+T: 3 0 : 8 : 8 : 0.09
+T: 3 0 : 8 : 14 : 0.36
+T: 3 0 : 8 : 16 : 0.06
+T: 3 0 : 8 : 17 : 0.18
+T: 3 0 : 8 : 32 : 0.06
+T: 3 0 : 8 : 34 : 0.01
+T: 3 0 : 8 : 35 : 0.03
+T: 3 1 : 8 : 5 : 0.03
+T: 3 1 : 8 : 7 : 0.03
+T: 3 1 : 8 : 8 : 0.24
+T: 3 1 : 8 : 14 : 0.06
+T: 3 1 : 8 : 16 : 0.06
+T: 3 1 : 8 : 17 : 0.48
+T: 3 1 : 8 : 32 : 0.01
+T: 3 1 : 8 : 34 : 0.01
+T: 3 1 : 8 : 35 : 0.08
+T: 3 2 : 8 : 5 : 0.03
+T: 3 2 : 8 : 7 : 0.18
+T: 3 2 : 8 : 8 : 0.09
+T: 3 2 : 8 : 14 : 0.06
+T: 3 2 : 8 : 16 : 0.36
+T: 3 2 : 8 : 17 : 0.18
+T: 3 2 : 8 : 32 : 0.01
+T: 3 2 : 8 : 34 : 0.06
+T: 3 2 : 8 : 35 : 0.03
+T: 3 3 : 8 : 5 : 0.03
+T: 3 3 : 8 : 7 : 0.03
+T: 3 3 : 8 : 8 : 0.24
+T: 3 3 : 8 : 14 : 0.06
+T: 3 3 : 8 : 16 : 0.06
+T: 3 3 : 8 : 17 : 0.48
+T: 3 3 : 8 : 32 : 0.01
+T: 3 3 : 8 : 34 : 0.01
+T: 3 3 : 8 : 35 : 0.08
+T: 3 4 : 8 : 8 : 0.3
+T: 3 4 : 8 : 17 : 0.6
+T: 3 4 : 8 : 35 : 0.1
+T: 4 0 : 8 : 5 : 0.6
+T: 4 0 : 8 : 7 : 0.1
+T: 4 0 : 8 : 8 : 0.3
+T: 4 1 : 8 : 5 : 0.1
+T: 4 1 : 8 : 7 : 0.1
+T: 4 1 : 8 : 8 : 0.8
+T: 4 2 : 8 : 5 : 0.1
+T: 4 2 : 8 : 7 : 0.6
+T: 4 2 : 8 : 8 : 0.3
+T: 4 3 : 8 : 5 : 0.1
+T: 4 3 : 8 : 7 : 0.1
+T: 4 3 : 8 : 8 : 0.8
+T: 4 4 : 8 : 8 : 1.0
+T: 0 0 : 9 : 0 : 0.08
+T: 0 0 : 9 : 1 : 0.01
+T: 0 0 : 9 : 3 : 0.01
+T: 0 0 : 9 : 9 : 0.56
+T: 0 0 : 9 : 10 : 0.07
+T: 0 0 : 9 : 12 : 0.07
+T: 0 0 : 9 : 18 : 0.08
+T: 0 0 : 9 : 19 : 0.01
+T: 0 0 : 9 : 21 : 0.01
+T: 0 0 : 9 : 36 : 0.08
+T: 0 0 : 9 : 37 : 0.01
+T: 0 0 : 9 : 39 : 0.01
+T: 0 1 : 9 : 0 : 0.03
+T: 0 1 : 9 : 1 : 0.01
+T: 0 1 : 9 : 3 : 0.06
+T: 0 1 : 9 : 9 : 0.21
+T: 0 1 : 9 : 10 : 0.07
+T: 0 1 : 9 : 12 : 0.42
+T: 0 1 : 9 : 18 : 0.03
+T: 0 1 : 9 : 19 : 0.01
+T: 0 1 : 9 : 21 : 0.06
+T: 0 1 : 9 : 36 : 0.03
+T: 0 1 : 9 : 37 : 0.01
+T: 0 1 : 9 : 39 : 0.06
+T: 0 2 : 9 : 0 : 0.08
+T: 0 2 : 9 : 1 : 0.01
+T: 0 2 : 9 : 3 : 0.01
+T: 0 2 : 9 : 9 : 0.56
+T: 0 2 : 9 : 10 : 0.07
+T: 0 2 : 9 : 12 : 0.07
+T: 0 2 : 9 : 18 : 0.08
+T: 0 2 : 9 : 19 : 0.01
+T: 0 2 : 9 : 21 : 0.01
+T: 0 2 : 9 : 36 : 0.08
+T: 0 2 : 9 : 37 : 0.01
+T: 0 2 : 9 : 39 : 0.01
+T: 0 3 : 9 : 0 : 0.03
+T: 0 3 : 9 : 1 : 0.06
+T: 0 3 : 9 : 3 : 0.01
+T: 0 3 : 9 : 9 : 0.21
+T: 0 3 : 9 : 10 : 0.42
+T: 0 3 : 9 : 12 : 0.07
+T: 0 3 : 9 : 18 : 0.03
+T: 0 3 : 9 : 19 : 0.06
+T: 0 3 : 9 : 21 : 0.01
+T: 0 3 : 9 : 36 : 0.03
+T: 0 3 : 9 : 37 : 0.06
+T: 0 3 : 9 : 39 : 0.01
+T: 0 4 : 9 : 0 : 0.1
+T: 0 4 : 9 : 9 : 0.7
+T: 0 4 : 9 : 18 : 0.1
+T: 0 4 : 9 : 36 : 0.1
+T: 1 0 : 9 : 0 : 0.08
+T: 1 0 : 9 : 1 : 0.01
+T: 1 0 : 9 : 3 : 0.01
+T: 1 0 : 9 : 9 : 0.16
+T: 1 0 : 9 : 10 : 0.02
+T: 1 0 : 9 : 12 : 0.02
+T: 1 0 : 9 : 18 : 0.08
+T: 1 0 : 9 : 19 : 0.01
+T: 1 0 : 9 : 21 : 0.01
+T: 1 0 : 9 : 36 : 0.48
+T: 1 0 : 9 : 37 : 0.06
+T: 1 0 : 9 : 39 : 0.06
+T: 1 1 : 9 : 0 : 0.03
+T: 1 1 : 9 : 1 : 0.01
+T: 1 1 : 9 : 3 : 0.06
+T: 1 1 : 9 : 9 : 0.060
+T: 1 1 : 9 : 10 : 0.02
+T: 1 1 : 9 : 12 : 0.12
+T: 1 1 : 9 : 18 : 0.03
+T: 1 1 : 9 : 19 : 0.01
+T: 1 1 : 9 : 21 : 0.06
+T: 1 1 : 9 : 36 : 0.18
+T: 1 1 : 9 : 37 : 0.06
+T: 1 1 : 9 : 39 : 0.36
+T: 1 2 : 9 : 0 : 0.08
+T: 1 2 : 9 : 1 : 0.01
+T: 1 2 : 9 : 3 : 0.01
+T: 1 2 : 9 : 9 : 0.16
+T: 1 2 : 9 : 10 : 0.02
+T: 1 2 : 9 : 12 : 0.02
+T: 1 2 : 9 : 18 : 0.08
+T: 1 2 : 9 : 19 : 0.01
+T: 1 2 : 9 : 21 : 0.01
+T: 1 2 : 9 : 36 : 0.48
+T: 1 2 : 9 : 37 : 0.06
+T: 1 2 : 9 : 39 : 0.06
+T: 1 3 : 9 : 0 : 0.03
+T: 1 3 : 9 : 1 : 0.06
+T: 1 3 : 9 : 3 : 0.01
+T: 1 3 : 9 : 9 : 0.060
+T: 1 3 : 9 : 10 : 0.12
+T: 1 3 : 9 : 12 : 0.02
+T: 1 3 : 9 : 18 : 0.03
+T: 1 3 : 9 : 19 : 0.06
+T: 1 3 : 9 : 21 : 0.01
+T: 1 3 : 9 : 36 : 0.18
+T: 1 3 : 9 : 37 : 0.36
+T: 1 3 : 9 : 39 : 0.06
+T: 1 4 : 9 : 0 : 0.1
+T: 1 4 : 9 : 9 : 0.2
+T: 1 4 : 9 : 18 : 0.1
+T: 1 4 : 9 : 36 : 0.6
+T: 2 0 : 9 : 0 : 0.48
+T: 2 0 : 9 : 1 : 0.06
+T: 2 0 : 9 : 3 : 0.06
+T: 2 0 : 9 : 9 : 0.16
+T: 2 0 : 9 : 10 : 0.02
+T: 2 0 : 9 : 12 : 0.02
+T: 2 0 : 9 : 18 : 0.08
+T: 2 0 : 9 : 19 : 0.01
+T: 2 0 : 9 : 21 : 0.01
+T: 2 0 : 9 : 36 : 0.08
+T: 2 0 : 9 : 37 : 0.01
+T: 2 0 : 9 : 39 : 0.01
+T: 2 1 : 9 : 0 : 0.18
+T: 2 1 : 9 : 1 : 0.06
+T: 2 1 : 9 : 3 : 0.36
+T: 2 1 : 9 : 9 : 0.060
+T: 2 1 : 9 : 10 : 0.02
+T: 2 1 : 9 : 12 : 0.12
+T: 2 1 : 9 : 18 : 0.03
+T: 2 1 : 9 : 19 : 0.01
+T: 2 1 : 9 : 21 : 0.06
+T: 2 1 : 9 : 36 : 0.03
+T: 2 1 : 9 : 37 : 0.01
+T: 2 1 : 9 : 39 : 0.06
+T: 2 2 : 9 : 0 : 0.48
+T: 2 2 : 9 : 1 : 0.06
+T: 2 2 : 9 : 3 : 0.06
+T: 2 2 : 9 : 9 : 0.16
+T: 2 2 : 9 : 10 : 0.02
+T: 2 2 : 9 : 12 : 0.02
+T: 2 2 : 9 : 18 : 0.08
+T: 2 2 : 9 : 19 : 0.01
+T: 2 2 : 9 : 21 : 0.01
+T: 2 2 : 9 : 36 : 0.08
+T: 2 2 : 9 : 37 : 0.01
+T: 2 2 : 9 : 39 : 0.01
+T: 2 3 : 9 : 0 : 0.18
+T: 2 3 : 9 : 1 : 0.36
+T: 2 3 : 9 : 3 : 0.06
+T: 2 3 : 9 : 9 : 0.060
+T: 2 3 : 9 : 10 : 0.12
+T: 2 3 : 9 : 12 : 0.02
+T: 2 3 : 9 : 18 : 0.03
+T: 2 3 : 9 : 19 : 0.06
+T: 2 3 : 9 : 21 : 0.01
+T: 2 3 : 9 : 36 : 0.03
+T: 2 3 : 9 : 37 : 0.06
+T: 2 3 : 9 : 39 : 0.01
+T: 2 4 : 9 : 0 : 0.6
+T: 2 4 : 9 : 9 : 0.2
+T: 2 4 : 9 : 18 : 0.1
+T: 2 4 : 9 : 36 : 0.1
+T: 3 0 : 9 : 0 : 0.08
+T: 3 0 : 9 : 1 : 0.01
+T: 3 0 : 9 : 3 : 0.01
+T: 3 0 : 9 : 9 : 0.16
+T: 3 0 : 9 : 10 : 0.02
+T: 3 0 : 9 : 12 : 0.02
+T: 3 0 : 9 : 18 : 0.48
+T: 3 0 : 9 : 19 : 0.06
+T: 3 0 : 9 : 21 : 0.06
+T: 3 0 : 9 : 36 : 0.08
+T: 3 0 : 9 : 37 : 0.01
+T: 3 0 : 9 : 39 : 0.01
+T: 3 1 : 9 : 0 : 0.03
+T: 3 1 : 9 : 1 : 0.01
+T: 3 1 : 9 : 3 : 0.06
+T: 3 1 : 9 : 9 : 0.060
+T: 3 1 : 9 : 10 : 0.02
+T: 3 1 : 9 : 12 : 0.12
+T: 3 1 : 9 : 18 : 0.18
+T: 3 1 : 9 : 19 : 0.06
+T: 3 1 : 9 : 21 : 0.36
+T: 3 1 : 9 : 36 : 0.03
+T: 3 1 : 9 : 37 : 0.01
+T: 3 1 : 9 : 39 : 0.06
+T: 3 2 : 9 : 0 : 0.08
+T: 3 2 : 9 : 1 : 0.01
+T: 3 2 : 9 : 3 : 0.01
+T: 3 2 : 9 : 9 : 0.16
+T: 3 2 : 9 : 10 : 0.02
+T: 3 2 : 9 : 12 : 0.02
+T: 3 2 : 9 : 18 : 0.48
+T: 3 2 : 9 : 19 : 0.06
+T: 3 2 : 9 : 21 : 0.06
+T: 3 2 : 9 : 36 : 0.08
+T: 3 2 : 9 : 37 : 0.01
+T: 3 2 : 9 : 39 : 0.01
+T: 3 3 : 9 : 0 : 0.03
+T: 3 3 : 9 : 1 : 0.06
+T: 3 3 : 9 : 3 : 0.01
+T: 3 3 : 9 : 9 : 0.060
+T: 3 3 : 9 : 10 : 0.12
+T: 3 3 : 9 : 12 : 0.02
+T: 3 3 : 9 : 18 : 0.18
+T: 3 3 : 9 : 19 : 0.36
+T: 3 3 : 9 : 21 : 0.06
+T: 3 3 : 9 : 36 : 0.03
+T: 3 3 : 9 : 37 : 0.06
+T: 3 3 : 9 : 39 : 0.01
+T: 3 4 : 9 : 0 : 0.1
+T: 3 4 : 9 : 9 : 0.2
+T: 3 4 : 9 : 18 : 0.6
+T: 3 4 : 9 : 36 : 0.1
+T: 4 0 : 9 : 9 : 0.8
+T: 4 0 : 9 : 10 : 0.1
+T: 4 0 : 9 : 12 : 0.1
+T: 4 1 : 9 : 9 : 0.3
+T: 4 1 : 9 : 10 : 0.1
+T: 4 1 : 9 : 12 : 0.6
+T: 4 2 : 9 : 9 : 0.8
+T: 4 2 : 9 : 10 : 0.1
+T: 4 2 : 9 : 12 : 0.1
+T: 4 3 : 9 : 9 : 0.3
+T: 4 3 : 9 : 10 : 0.6
+T: 4 3 : 9 : 12 : 0.1
+T: 4 4 : 9 : 9 : 1.0
+T: 0 0 : 10 : 0 : 0.01
+T: 0 0 : 10 : 1 : 0.07
+T: 0 0 : 10 : 2 : 0.01
+T: 0 0 : 10 : 4 : 0.01
+T: 0 0 : 10 : 9 : 0.07
+T: 0 0 : 10 : 10 : 0.49
+T: 0 0 : 10 : 11 : 0.07
+T: 0 0 : 10 : 13 : 0.07
+T: 0 0 : 10 : 18 : 0.01
+T: 0 0 : 10 : 19 : 0.07
+T: 0 0 : 10 : 20 : 0.01
+T: 0 0 : 10 : 22 : 0.01
+T: 0 0 : 10 : 36 : 0.01
+T: 0 0 : 10 : 37 : 0.07
+T: 0 0 : 10 : 38 : 0.01
+T: 0 0 : 10 : 40 : 0.01
+T: 0 1 : 10 : 0 : 0.01
+T: 0 1 : 10 : 1 : 0.02
+T: 0 1 : 10 : 2 : 0.01
+T: 0 1 : 10 : 4 : 0.06
+T: 0 1 : 10 : 9 : 0.07
+T: 0 1 : 10 : 10 : 0.14
+T: 0 1 : 10 : 11 : 0.07
+T: 0 1 : 10 : 13 : 0.42
+T: 0 1 : 10 : 18 : 0.01
+T: 0 1 : 10 : 19 : 0.02
+T: 0 1 : 10 : 20 : 0.01
+T: 0 1 : 10 : 22 : 0.06
+T: 0 1 : 10 : 36 : 0.01
+T: 0 1 : 10 : 37 : 0.02
+T: 0 1 : 10 : 38 : 0.01
+T: 0 1 : 10 : 40 : 0.06
+T: 0 2 : 10 : 0 : 0.06
+T: 0 2 : 10 : 1 : 0.02
+T: 0 2 : 10 : 2 : 0.01
+T: 0 2 : 10 : 4 : 0.01
+T: 0 2 : 10 : 9 : 0.42
+T: 0 2 : 10 : 10 : 0.14
+T: 0 2 : 10 : 11 : 0.07
+T: 0 2 : 10 : 13 : 0.07
+T: 0 2 : 10 : 18 : 0.06
+T: 0 2 : 10 : 19 : 0.02
+T: 0 2 : 10 : 20 : 0.01
+T: 0 2 : 10 : 22 : 0.01
+T: 0 2 : 10 : 36 : 0.06
+T: 0 2 : 10 : 37 : 0.02
+T: 0 2 : 10 : 38 : 0.01
+T: 0 2 : 10 : 40 : 0.01
+T: 0 3 : 10 : 0 : 0.01
+T: 0 3 : 10 : 1 : 0.02
+T: 0 3 : 10 : 2 : 0.06
+T: 0 3 : 10 : 4 : 0.01
+T: 0 3 : 10 : 9 : 0.07
+T: 0 3 : 10 : 10 : 0.14
+T: 0 3 : 10 : 11 : 0.42
+T: 0 3 : 10 : 13 : 0.07
+T: 0 3 : 10 : 18 : 0.01
+T: 0 3 : 10 : 19 : 0.02
+T: 0 3 : 10 : 20 : 0.06
+T: 0 3 : 10 : 22 : 0.01
+T: 0 3 : 10 : 36 : 0.01
+T: 0 3 : 10 : 37 : 0.02
+T: 0 3 : 10 : 38 : 0.06
+T: 0 3 : 10 : 40 : 0.01
+T: 0 4 : 10 : 1 : 0.1
+T: 0 4 : 10 : 10 : 0.7
+T: 0 4 : 10 : 19 : 0.1
+T: 0 4 : 10 : 37 : 0.1
+T: 1 0 : 10 : 0 : 0.01
+T: 1 0 : 10 : 1 : 0.07
+T: 1 0 : 10 : 2 : 0.01
+T: 1 0 : 10 : 4 : 0.01
+T: 1 0 : 10 : 9 : 0.02
+T: 1 0 : 10 : 10 : 0.14
+T: 1 0 : 10 : 11 : 0.02
+T: 1 0 : 10 : 13 : 0.02
+T: 1 0 : 10 : 18 : 0.01
+T: 1 0 : 10 : 19 : 0.07
+T: 1 0 : 10 : 20 : 0.01
+T: 1 0 : 10 : 22 : 0.01
+T: 1 0 : 10 : 36 : 0.06
+T: 1 0 : 10 : 37 : 0.42
+T: 1 0 : 10 : 38 : 0.06
+T: 1 0 : 10 : 40 : 0.06
+T: 1 1 : 10 : 0 : 0.01
+T: 1 1 : 10 : 1 : 0.02
+T: 1 1 : 10 : 2 : 0.01
+T: 1 1 : 10 : 4 : 0.06
+T: 1 1 : 10 : 9 : 0.02
+T: 1 1 : 10 : 10 : 0.040
+T: 1 1 : 10 : 11 : 0.02
+T: 1 1 : 10 : 13 : 0.12
+T: 1 1 : 10 : 18 : 0.01
+T: 1 1 : 10 : 19 : 0.02
+T: 1 1 : 10 : 20 : 0.01
+T: 1 1 : 10 : 22 : 0.06
+T: 1 1 : 10 : 36 : 0.06
+T: 1 1 : 10 : 37 : 0.12
+T: 1 1 : 10 : 38 : 0.06
+T: 1 1 : 10 : 40 : 0.36
+T: 1 2 : 10 : 0 : 0.06
+T: 1 2 : 10 : 1 : 0.02
+T: 1 2 : 10 : 2 : 0.01
+T: 1 2 : 10 : 4 : 0.01
+T: 1 2 : 10 : 9 : 0.12
+T: 1 2 : 10 : 10 : 0.040
+T: 1 2 : 10 : 11 : 0.02
+T: 1 2 : 10 : 13 : 0.02
+T: 1 2 : 10 : 18 : 0.06
+T: 1 2 : 10 : 19 : 0.02
+T: 1 2 : 10 : 20 : 0.01
+T: 1 2 : 10 : 22 : 0.01
+T: 1 2 : 10 : 36 : 0.36
+T: 1 2 : 10 : 37 : 0.12
+T: 1 2 : 10 : 38 : 0.06
+T: 1 2 : 10 : 40 : 0.06
+T: 1 3 : 10 : 0 : 0.01
+T: 1 3 : 10 : 1 : 0.02
+T: 1 3 : 10 : 2 : 0.06
+T: 1 3 : 10 : 4 : 0.01
+T: 1 3 : 10 : 9 : 0.02
+T: 1 3 : 10 : 10 : 0.040
+T: 1 3 : 10 : 11 : 0.12
+T: 1 3 : 10 : 13 : 0.02
+T: 1 3 : 10 : 18 : 0.01
+T: 1 3 : 10 : 19 : 0.02
+T: 1 3 : 10 : 20 : 0.06
+T: 1 3 : 10 : 22 : 0.01
+T: 1 3 : 10 : 36 : 0.06
+T: 1 3 : 10 : 37 : 0.12
+T: 1 3 : 10 : 38 : 0.36
+T: 1 3 : 10 : 40 : 0.06
+T: 1 4 : 10 : 1 : 0.1
+T: 1 4 : 10 : 10 : 0.2
+T: 1 4 : 10 : 19 : 0.1
+T: 1 4 : 10 : 37 : 0.6
+T: 2 0 : 10 : 0 : 0.06
+T: 2 0 : 10 : 1 : 0.42
+T: 2 0 : 10 : 2 : 0.06
+T: 2 0 : 10 : 4 : 0.06
+T: 2 0 : 10 : 9 : 0.02
+T: 2 0 : 10 : 10 : 0.14
+T: 2 0 : 10 : 11 : 0.02
+T: 2 0 : 10 : 13 : 0.02
+T: 2 0 : 10 : 18 : 0.01
+T: 2 0 : 10 : 19 : 0.07
+T: 2 0 : 10 : 20 : 0.01
+T: 2 0 : 10 : 22 : 0.01
+T: 2 0 : 10 : 36 : 0.01
+T: 2 0 : 10 : 37 : 0.07
+T: 2 0 : 10 : 38 : 0.01
+T: 2 0 : 10 : 40 : 0.01
+T: 2 1 : 10 : 0 : 0.06
+T: 2 1 : 10 : 1 : 0.12
+T: 2 1 : 10 : 2 : 0.06
+T: 2 1 : 10 : 4 : 0.36
+T: 2 1 : 10 : 9 : 0.02
+T: 2 1 : 10 : 10 : 0.040
+T: 2 1 : 10 : 11 : 0.02
+T: 2 1 : 10 : 13 : 0.12
+T: 2 1 : 10 : 18 : 0.01
+T: 2 1 : 10 : 19 : 0.02
+T: 2 1 : 10 : 20 : 0.01
+T: 2 1 : 10 : 22 : 0.06
+T: 2 1 : 10 : 36 : 0.01
+T: 2 1 : 10 : 37 : 0.02
+T: 2 1 : 10 : 38 : 0.01
+T: 2 1 : 10 : 40 : 0.06
+T: 2 2 : 10 : 0 : 0.36
+T: 2 2 : 10 : 1 : 0.12
+T: 2 2 : 10 : 2 : 0.06
+T: 2 2 : 10 : 4 : 0.06
+T: 2 2 : 10 : 9 : 0.12
+T: 2 2 : 10 : 10 : 0.040
+T: 2 2 : 10 : 11 : 0.02
+T: 2 2 : 10 : 13 : 0.02
+T: 2 2 : 10 : 18 : 0.06
+T: 2 2 : 10 : 19 : 0.02
+T: 2 2 : 10 : 20 : 0.01
+T: 2 2 : 10 : 22 : 0.01
+T: 2 2 : 10 : 36 : 0.06
+T: 2 2 : 10 : 37 : 0.02
+T: 2 2 : 10 : 38 : 0.01
+T: 2 2 : 10 : 40 : 0.01
+T: 2 3 : 10 : 0 : 0.06
+T: 2 3 : 10 : 1 : 0.12
+T: 2 3 : 10 : 2 : 0.36
+T: 2 3 : 10 : 4 : 0.06
+T: 2 3 : 10 : 9 : 0.02
+T: 2 3 : 10 : 10 : 0.040
+T: 2 3 : 10 : 11 : 0.12
+T: 2 3 : 10 : 13 : 0.02
+T: 2 3 : 10 : 18 : 0.01
+T: 2 3 : 10 : 19 : 0.02
+T: 2 3 : 10 : 20 : 0.06
+T: 2 3 : 10 : 22 : 0.01
+T: 2 3 : 10 : 36 : 0.01
+T: 2 3 : 10 : 37 : 0.02
+T: 2 3 : 10 : 38 : 0.06
+T: 2 3 : 10 : 40 : 0.01
+T: 2 4 : 10 : 1 : 0.6
+T: 2 4 : 10 : 10 : 0.2
+T: 2 4 : 10 : 19 : 0.1
+T: 2 4 : 10 : 37 : 0.1
+T: 3 0 : 10 : 0 : 0.01
+T: 3 0 : 10 : 1 : 0.07
+T: 3 0 : 10 : 2 : 0.01
+T: 3 0 : 10 : 4 : 0.01
+T: 3 0 : 10 : 9 : 0.02
+T: 3 0 : 10 : 10 : 0.14
+T: 3 0 : 10 : 11 : 0.02
+T: 3 0 : 10 : 13 : 0.02
+T: 3 0 : 10 : 18 : 0.06
+T: 3 0 : 10 : 19 : 0.42
+T: 3 0 : 10 : 20 : 0.06
+T: 3 0 : 10 : 22 : 0.06
+T: 3 0 : 10 : 36 : 0.01
+T: 3 0 : 10 : 37 : 0.07
+T: 3 0 : 10 : 38 : 0.01
+T: 3 0 : 10 : 40 : 0.01
+T: 3 1 : 10 : 0 : 0.01
+T: 3 1 : 10 : 1 : 0.02
+T: 3 1 : 10 : 2 : 0.01
+T: 3 1 : 10 : 4 : 0.06
+T: 3 1 : 10 : 9 : 0.02
+T: 3 1 : 10 : 10 : 0.040
+T: 3 1 : 10 : 11 : 0.02
+T: 3 1 : 10 : 13 : 0.12
+T: 3 1 : 10 : 18 : 0.06
+T: 3 1 : 10 : 19 : 0.12
+T: 3 1 : 10 : 20 : 0.06
+T: 3 1 : 10 : 22 : 0.36
+T: 3 1 : 10 : 36 : 0.01
+T: 3 1 : 10 : 37 : 0.02
+T: 3 1 : 10 : 38 : 0.01
+T: 3 1 : 10 : 40 : 0.06
+T: 3 2 : 10 : 0 : 0.06
+T: 3 2 : 10 : 1 : 0.02
+T: 3 2 : 10 : 2 : 0.01
+T: 3 2 : 10 : 4 : 0.01
+T: 3 2 : 10 : 9 : 0.12
+T: 3 2 : 10 : 10 : 0.040
+T: 3 2 : 10 : 11 : 0.02
+T: 3 2 : 10 : 13 : 0.02
+T: 3 2 : 10 : 18 : 0.36
+T: 3 2 : 10 : 19 : 0.12
+T: 3 2 : 10 : 20 : 0.06
+T: 3 2 : 10 : 22 : 0.06
+T: 3 2 : 10 : 36 : 0.06
+T: 3 2 : 10 : 37 : 0.02
+T: 3 2 : 10 : 38 : 0.01
+T: 3 2 : 10 : 40 : 0.01
+T: 3 3 : 10 : 0 : 0.01
+T: 3 3 : 10 : 1 : 0.02
+T: 3 3 : 10 : 2 : 0.06
+T: 3 3 : 10 : 4 : 0.01
+T: 3 3 : 10 : 9 : 0.02
+T: 3 3 : 10 : 10 : 0.040
+T: 3 3 : 10 : 11 : 0.12
+T: 3 3 : 10 : 13 : 0.02
+T: 3 3 : 10 : 18 : 0.06
+T: 3 3 : 10 : 19 : 0.12
+T: 3 3 : 10 : 20 : 0.36
+T: 3 3 : 10 : 22 : 0.06
+T: 3 3 : 10 : 36 : 0.01
+T: 3 3 : 10 : 37 : 0.02
+T: 3 3 : 10 : 38 : 0.06
+T: 3 3 : 10 : 40 : 0.01
+T: 3 4 : 10 : 1 : 0.1
+T: 3 4 : 10 : 10 : 0.2
+T: 3 4 : 10 : 19 : 0.6
+T: 3 4 : 10 : 37 : 0.1
+T: 4 0 : 10 : 9 : 0.1
+T: 4 0 : 10 : 10 : 0.7
+T: 4 0 : 10 : 11 : 0.1
+T: 4 0 : 10 : 13 : 0.1
+T: 4 1 : 10 : 9 : 0.1
+T: 4 1 : 10 : 10 : 0.2
+T: 4 1 : 10 : 11 : 0.1
+T: 4 1 : 10 : 13 : 0.6
+T: 4 2 : 10 : 9 : 0.6
+T: 4 2 : 10 : 10 : 0.2
+T: 4 2 : 10 : 11 : 0.1
+T: 4 2 : 10 : 13 : 0.1
+T: 4 3 : 10 : 9 : 0.1
+T: 4 3 : 10 : 10 : 0.2
+T: 4 3 : 10 : 11 : 0.6
+T: 4 3 : 10 : 13 : 0.1
+T: 4 4 : 10 : 10 : 1.0
+T: 0 0 : 11 : 1 : 0.01
+T: 0 0 : 11 : 2 : 0.08
+T: 0 0 : 11 : 5 : 0.01
+T: 0 0 : 11 : 10 : 0.07
+T: 0 0 : 11 : 11 : 0.56
+T: 0 0 : 11 : 14 : 0.07
+T: 0 0 : 11 : 19 : 0.01
+T: 0 0 : 11 : 20 : 0.08
+T: 0 0 : 11 : 23 : 0.01
+T: 0 0 : 11 : 37 : 0.01
+T: 0 0 : 11 : 38 : 0.08
+T: 0 0 : 11 : 41 : 0.01
+T: 0 1 : 11 : 1 : 0.01
+T: 0 1 : 11 : 2 : 0.03
+T: 0 1 : 11 : 5 : 0.06
+T: 0 1 : 11 : 10 : 0.07
+T: 0 1 : 11 : 11 : 0.21
+T: 0 1 : 11 : 14 : 0.42
+T: 0 1 : 11 : 19 : 0.01
+T: 0 1 : 11 : 20 : 0.03
+T: 0 1 : 11 : 23 : 0.06
+T: 0 1 : 11 : 37 : 0.01
+T: 0 1 : 11 : 38 : 0.03
+T: 0 1 : 11 : 41 : 0.06
+T: 0 2 : 11 : 1 : 0.06
+T: 0 2 : 11 : 2 : 0.03
+T: 0 2 : 11 : 5 : 0.01
+T: 0 2 : 11 : 10 : 0.42
+T: 0 2 : 11 : 11 : 0.21
+T: 0 2 : 11 : 14 : 0.07
+T: 0 2 : 11 : 19 : 0.06
+T: 0 2 : 11 : 20 : 0.03
+T: 0 2 : 11 : 23 : 0.01
+T: 0 2 : 11 : 37 : 0.06
+T: 0 2 : 11 : 38 : 0.03
+T: 0 2 : 11 : 41 : 0.01
+T: 0 3 : 11 : 1 : 0.01
+T: 0 3 : 11 : 2 : 0.08
+T: 0 3 : 11 : 5 : 0.01
+T: 0 3 : 11 : 10 : 0.07
+T: 0 3 : 11 : 11 : 0.56
+T: 0 3 : 11 : 14 : 0.07
+T: 0 3 : 11 : 19 : 0.01
+T: 0 3 : 11 : 20 : 0.08
+T: 0 3 : 11 : 23 : 0.01
+T: 0 3 : 11 : 37 : 0.01
+T: 0 3 : 11 : 38 : 0.08
+T: 0 3 : 11 : 41 : 0.01
+T: 0 4 : 11 : 2 : 0.1
+T: 0 4 : 11 : 11 : 0.7
+T: 0 4 : 11 : 20 : 0.1
+T: 0 4 : 11 : 38 : 0.1
+T: 1 0 : 11 : 1 : 0.01
+T: 1 0 : 11 : 2 : 0.08
+T: 1 0 : 11 : 5 : 0.01
+T: 1 0 : 11 : 10 : 0.02
+T: 1 0 : 11 : 11 : 0.16
+T: 1 0 : 11 : 14 : 0.02
+T: 1 0 : 11 : 19 : 0.01
+T: 1 0 : 11 : 20 : 0.08
+T: 1 0 : 11 : 23 : 0.01
+T: 1 0 : 11 : 37 : 0.06
+T: 1 0 : 11 : 38 : 0.48
+T: 1 0 : 11 : 41 : 0.06
+T: 1 1 : 11 : 1 : 0.01
+T: 1 1 : 11 : 2 : 0.03
+T: 1 1 : 11 : 5 : 0.06
+T: 1 1 : 11 : 10 : 0.02
+T: 1 1 : 11 : 11 : 0.060
+T: 1 1 : 11 : 14 : 0.12
+T: 1 1 : 11 : 19 : 0.01
+T: 1 1 : 11 : 20 : 0.03
+T: 1 1 : 11 : 23 : 0.06
+T: 1 1 : 11 : 37 : 0.06
+T: 1 1 : 11 : 38 : 0.18
+T: 1 1 : 11 : 41 : 0.36
+T: 1 2 : 11 : 1 : 0.06
+T: 1 2 : 11 : 2 : 0.03
+T: 1 2 : 11 : 5 : 0.01
+T: 1 2 : 11 : 10 : 0.12
+T: 1 2 : 11 : 11 : 0.060
+T: 1 2 : 11 : 14 : 0.02
+T: 1 2 : 11 : 19 : 0.06
+T: 1 2 : 11 : 20 : 0.03
+T: 1 2 : 11 : 23 : 0.01
+T: 1 2 : 11 : 37 : 0.36
+T: 1 2 : 11 : 38 : 0.18
+T: 1 2 : 11 : 41 : 0.06
+T: 1 3 : 11 : 1 : 0.01
+T: 1 3 : 11 : 2 : 0.08
+T: 1 3 : 11 : 5 : 0.01
+T: 1 3 : 11 : 10 : 0.02
+T: 1 3 : 11 : 11 : 0.16
+T: 1 3 : 11 : 14 : 0.02
+T: 1 3 : 11 : 19 : 0.01
+T: 1 3 : 11 : 20 : 0.08
+T: 1 3 : 11 : 23 : 0.01
+T: 1 3 : 11 : 37 : 0.06
+T: 1 3 : 11 : 38 : 0.48
+T: 1 3 : 11 : 41 : 0.06
+T: 1 4 : 11 : 2 : 0.1
+T: 1 4 : 11 : 11 : 0.2
+T: 1 4 : 11 : 20 : 0.1
+T: 1 4 : 11 : 38 : 0.6
+T: 2 0 : 11 : 1 : 0.06
+T: 2 0 : 11 : 2 : 0.48
+T: 2 0 : 11 : 5 : 0.06
+T: 2 0 : 11 : 10 : 0.02
+T: 2 0 : 11 : 11 : 0.16
+T: 2 0 : 11 : 14 : 0.02
+T: 2 0 : 11 : 19 : 0.01
+T: 2 0 : 11 : 20 : 0.08
+T: 2 0 : 11 : 23 : 0.01
+T: 2 0 : 11 : 37 : 0.01
+T: 2 0 : 11 : 38 : 0.08
+T: 2 0 : 11 : 41 : 0.01
+T: 2 1 : 11 : 1 : 0.06
+T: 2 1 : 11 : 2 : 0.18
+T: 2 1 : 11 : 5 : 0.36
+T: 2 1 : 11 : 10 : 0.02
+T: 2 1 : 11 : 11 : 0.060
+T: 2 1 : 11 : 14 : 0.12
+T: 2 1 : 11 : 19 : 0.01
+T: 2 1 : 11 : 20 : 0.03
+T: 2 1 : 11 : 23 : 0.06
+T: 2 1 : 11 : 37 : 0.01
+T: 2 1 : 11 : 38 : 0.03
+T: 2 1 : 11 : 41 : 0.06
+T: 2 2 : 11 : 1 : 0.36
+T: 2 2 : 11 : 2 : 0.18
+T: 2 2 : 11 : 5 : 0.06
+T: 2 2 : 11 : 10 : 0.12
+T: 2 2 : 11 : 11 : 0.060
+T: 2 2 : 11 : 14 : 0.02
+T: 2 2 : 11 : 19 : 0.06
+T: 2 2 : 11 : 20 : 0.03
+T: 2 2 : 11 : 23 : 0.01
+T: 2 2 : 11 : 37 : 0.06
+T: 2 2 : 11 : 38 : 0.03
+T: 2 2 : 11 : 41 : 0.01
+T: 2 3 : 11 : 1 : 0.06
+T: 2 3 : 11 : 2 : 0.48
+T: 2 3 : 11 : 5 : 0.06
+T: 2 3 : 11 : 10 : 0.02
+T: 2 3 : 11 : 11 : 0.16
+T: 2 3 : 11 : 14 : 0.02
+T: 2 3 : 11 : 19 : 0.01
+T: 2 3 : 11 : 20 : 0.08
+T: 2 3 : 11 : 23 : 0.01
+T: 2 3 : 11 : 37 : 0.01
+T: 2 3 : 11 : 38 : 0.08
+T: 2 3 : 11 : 41 : 0.01
+T: 2 4 : 11 : 2 : 0.6
+T: 2 4 : 11 : 11 : 0.2
+T: 2 4 : 11 : 20 : 0.1
+T: 2 4 : 11 : 38 : 0.1
+T: 3 0 : 11 : 1 : 0.01
+T: 3 0 : 11 : 2 : 0.08
+T: 3 0 : 11 : 5 : 0.01
+T: 3 0 : 11 : 10 : 0.02
+T: 3 0 : 11 : 11 : 0.16
+T: 3 0 : 11 : 14 : 0.02
+T: 3 0 : 11 : 19 : 0.06
+T: 3 0 : 11 : 20 : 0.48
+T: 3 0 : 11 : 23 : 0.06
+T: 3 0 : 11 : 37 : 0.01
+T: 3 0 : 11 : 38 : 0.08
+T: 3 0 : 11 : 41 : 0.01
+T: 3 1 : 11 : 1 : 0.01
+T: 3 1 : 11 : 2 : 0.03
+T: 3 1 : 11 : 5 : 0.06
+T: 3 1 : 11 : 10 : 0.02
+T: 3 1 : 11 : 11 : 0.060
+T: 3 1 : 11 : 14 : 0.12
+T: 3 1 : 11 : 19 : 0.06
+T: 3 1 : 11 : 20 : 0.18
+T: 3 1 : 11 : 23 : 0.36
+T: 3 1 : 11 : 37 : 0.01
+T: 3 1 : 11 : 38 : 0.03
+T: 3 1 : 11 : 41 : 0.06
+T: 3 2 : 11 : 1 : 0.06
+T: 3 2 : 11 : 2 : 0.03
+T: 3 2 : 11 : 5 : 0.01
+T: 3 2 : 11 : 10 : 0.12
+T: 3 2 : 11 : 11 : 0.060
+T: 3 2 : 11 : 14 : 0.02
+T: 3 2 : 11 : 19 : 0.36
+T: 3 2 : 11 : 20 : 0.18
+T: 3 2 : 11 : 23 : 0.06
+T: 3 2 : 11 : 37 : 0.06
+T: 3 2 : 11 : 38 : 0.03
+T: 3 2 : 11 : 41 : 0.01
+T: 3 3 : 11 : 1 : 0.01
+T: 3 3 : 11 : 2 : 0.08
+T: 3 3 : 11 : 5 : 0.01
+T: 3 3 : 11 : 10 : 0.02
+T: 3 3 : 11 : 11 : 0.16
+T: 3 3 : 11 : 14 : 0.02
+T: 3 3 : 11 : 19 : 0.06
+T: 3 3 : 11 : 20 : 0.48
+T: 3 3 : 11 : 23 : 0.06
+T: 3 3 : 11 : 37 : 0.01
+T: 3 3 : 11 : 38 : 0.08
+T: 3 3 : 11 : 41 : 0.01
+T: 3 4 : 11 : 2 : 0.1
+T: 3 4 : 11 : 11 : 0.2
+T: 3 4 : 11 : 20 : 0.6
+T: 3 4 : 11 : 38 : 0.1
+T: 4 0 : 11 : 10 : 0.1
+T: 4 0 : 11 : 11 : 0.8
+T: 4 0 : 11 : 14 : 0.1
+T: 4 1 : 11 : 10 : 0.1
+T: 4 1 : 11 : 11 : 0.3
+T: 4 1 : 11 : 14 : 0.6
+T: 4 2 : 11 : 10 : 0.6
+T: 4 2 : 11 : 11 : 0.3
+T: 4 2 : 11 : 14 : 0.1
+T: 4 3 : 11 : 10 : 0.1
+T: 4 3 : 11 : 11 : 0.8
+T: 4 3 : 11 : 14 : 0.1
+T: 4 4 : 11 : 11 : 1.0
+T: 0 0 : 12 : 0 : 0.06
+T: 0 0 : 12 : 3 : 0.02
+T: 0 0 : 12 : 4 : 0.01
+T: 0 0 : 12 : 6 : 0.01
+T: 0 0 : 12 : 9 : 0.42
+T: 0 0 : 12 : 12 : 0.14
+T: 0 0 : 12 : 13 : 0.07
+T: 0 0 : 12 : 15 : 0.07
+T: 0 0 : 12 : 18 : 0.06
+T: 0 0 : 12 : 21 : 0.02
+T: 0 0 : 12 : 22 : 0.01
+T: 0 0 : 12 : 24 : 0.01
+T: 0 0 : 12 : 36 : 0.06
+T: 0 0 : 12 : 39 : 0.02
+T: 0 0 : 12 : 40 : 0.01
+T: 0 0 : 12 : 42 : 0.01
+T: 0 1 : 12 : 0 : 0.01
+T: 0 1 : 12 : 3 : 0.02
+T: 0 1 : 12 : 4 : 0.01
+T: 0 1 : 12 : 6 : 0.06
+T: 0 1 : 12 : 9 : 0.07
+T: 0 1 : 12 : 12 : 0.14
+T: 0 1 : 12 : 13 : 0.07
+T: 0 1 : 12 : 15 : 0.42
+T: 0 1 : 12 : 18 : 0.01
+T: 0 1 : 12 : 21 : 0.02
+T: 0 1 : 12 : 22 : 0.01
+T: 0 1 : 12 : 24 : 0.06
+T: 0 1 : 12 : 36 : 0.01
+T: 0 1 : 12 : 39 : 0.02
+T: 0 1 : 12 : 40 : 0.01
+T: 0 1 : 12 : 42 : 0.06
+T: 0 2 : 12 : 0 : 0.01
+T: 0 2 : 12 : 3 : 0.07
+T: 0 2 : 12 : 4 : 0.01
+T: 0 2 : 12 : 6 : 0.01
+T: 0 2 : 12 : 9 : 0.07
+T: 0 2 : 12 : 12 : 0.49
+T: 0 2 : 12 : 13 : 0.07
+T: 0 2 : 12 : 15 : 0.07
+T: 0 2 : 12 : 18 : 0.01
+T: 0 2 : 12 : 21 : 0.07
+T: 0 2 : 12 : 22 : 0.01
+T: 0 2 : 12 : 24 : 0.01
+T: 0 2 : 12 : 36 : 0.01
+T: 0 2 : 12 : 39 : 0.07
+T: 0 2 : 12 : 40 : 0.01
+T: 0 2 : 12 : 42 : 0.01
+T: 0 3 : 12 : 0 : 0.01
+T: 0 3 : 12 : 3 : 0.02
+T: 0 3 : 12 : 4 : 0.06
+T: 0 3 : 12 : 6 : 0.01
+T: 0 3 : 12 : 9 : 0.07
+T: 0 3 : 12 : 12 : 0.14
+T: 0 3 : 12 : 13 : 0.42
+T: 0 3 : 12 : 15 : 0.07
+T: 0 3 : 12 : 18 : 0.01
+T: 0 3 : 12 : 21 : 0.02
+T: 0 3 : 12 : 22 : 0.06
+T: 0 3 : 12 : 24 : 0.01
+T: 0 3 : 12 : 36 : 0.01
+T: 0 3 : 12 : 39 : 0.02
+T: 0 3 : 12 : 40 : 0.06
+T: 0 3 : 12 : 42 : 0.01
+T: 0 4 : 12 : 3 : 0.1
+T: 0 4 : 12 : 12 : 0.7
+T: 0 4 : 12 : 21 : 0.1
+T: 0 4 : 12 : 39 : 0.1
+T: 1 0 : 12 : 0 : 0.06
+T: 1 0 : 12 : 3 : 0.02
+T: 1 0 : 12 : 4 : 0.01
+T: 1 0 : 12 : 6 : 0.01
+T: 1 0 : 12 : 9 : 0.12
+T: 1 0 : 12 : 12 : 0.040
+T: 1 0 : 12 : 13 : 0.02
+T: 1 0 : 12 : 15 : 0.02
+T: 1 0 : 12 : 18 : 0.06
+T: 1 0 : 12 : 21 : 0.02
+T: 1 0 : 12 : 22 : 0.01
+T: 1 0 : 12 : 24 : 0.01
+T: 1 0 : 12 : 36 : 0.36
+T: 1 0 : 12 : 39 : 0.12
+T: 1 0 : 12 : 40 : 0.06
+T: 1 0 : 12 : 42 : 0.06
+T: 1 1 : 12 : 0 : 0.01
+T: 1 1 : 12 : 3 : 0.02
+T: 1 1 : 12 : 4 : 0.01
+T: 1 1 : 12 : 6 : 0.06
+T: 1 1 : 12 : 9 : 0.02
+T: 1 1 : 12 : 12 : 0.040
+T: 1 1 : 12 : 13 : 0.02
+T: 1 1 : 12 : 15 : 0.12
+T: 1 1 : 12 : 18 : 0.01
+T: 1 1 : 12 : 21 : 0.02
+T: 1 1 : 12 : 22 : 0.01
+T: 1 1 : 12 : 24 : 0.06
+T: 1 1 : 12 : 36 : 0.06
+T: 1 1 : 12 : 39 : 0.12
+T: 1 1 : 12 : 40 : 0.06
+T: 1 1 : 12 : 42 : 0.36
+T: 1 2 : 12 : 0 : 0.01
+T: 1 2 : 12 : 3 : 0.07
+T: 1 2 : 12 : 4 : 0.01
+T: 1 2 : 12 : 6 : 0.01
+T: 1 2 : 12 : 9 : 0.02
+T: 1 2 : 12 : 12 : 0.14
+T: 1 2 : 12 : 13 : 0.02
+T: 1 2 : 12 : 15 : 0.02
+T: 1 2 : 12 : 18 : 0.01
+T: 1 2 : 12 : 21 : 0.07
+T: 1 2 : 12 : 22 : 0.01
+T: 1 2 : 12 : 24 : 0.01
+T: 1 2 : 12 : 36 : 0.06
+T: 1 2 : 12 : 39 : 0.42
+T: 1 2 : 12 : 40 : 0.06
+T: 1 2 : 12 : 42 : 0.06
+T: 1 3 : 12 : 0 : 0.01
+T: 1 3 : 12 : 3 : 0.02
+T: 1 3 : 12 : 4 : 0.06
+T: 1 3 : 12 : 6 : 0.01
+T: 1 3 : 12 : 9 : 0.02
+T: 1 3 : 12 : 12 : 0.040
+T: 1 3 : 12 : 13 : 0.12
+T: 1 3 : 12 : 15 : 0.02
+T: 1 3 : 12 : 18 : 0.01
+T: 1 3 : 12 : 21 : 0.02
+T: 1 3 : 12 : 22 : 0.06
+T: 1 3 : 12 : 24 : 0.01
+T: 1 3 : 12 : 36 : 0.06
+T: 1 3 : 12 : 39 : 0.12
+T: 1 3 : 12 : 40 : 0.36
+T: 1 3 : 12 : 42 : 0.06
+T: 1 4 : 12 : 3 : 0.1
+T: 1 4 : 12 : 12 : 0.2
+T: 1 4 : 12 : 21 : 0.1
+T: 1 4 : 12 : 39 : 0.6
+T: 2 0 : 12 : 0 : 0.36
+T: 2 0 : 12 : 3 : 0.12
+T: 2 0 : 12 : 4 : 0.06
+T: 2 0 : 12 : 6 : 0.06
+T: 2 0 : 12 : 9 : 0.12
+T: 2 0 : 12 : 12 : 0.040
+T: 2 0 : 12 : 13 : 0.02
+T: 2 0 : 12 : 15 : 0.02
+T: 2 0 : 12 : 18 : 0.06
+T: 2 0 : 12 : 21 : 0.02
+T: 2 0 : 12 : 22 : 0.01
+T: 2 0 : 12 : 24 : 0.01
+T: 2 0 : 12 : 36 : 0.06
+T: 2 0 : 12 : 39 : 0.02
+T: 2 0 : 12 : 40 : 0.01
+T: 2 0 : 12 : 42 : 0.01
+T: 2 1 : 12 : 0 : 0.06
+T: 2 1 : 12 : 3 : 0.12
+T: 2 1 : 12 : 4 : 0.06
+T: 2 1 : 12 : 6 : 0.36
+T: 2 1 : 12 : 9 : 0.02
+T: 2 1 : 12 : 12 : 0.040
+T: 2 1 : 12 : 13 : 0.02
+T: 2 1 : 12 : 15 : 0.12
+T: 2 1 : 12 : 18 : 0.01
+T: 2 1 : 12 : 21 : 0.02
+T: 2 1 : 12 : 22 : 0.01
+T: 2 1 : 12 : 24 : 0.06
+T: 2 1 : 12 : 36 : 0.01
+T: 2 1 : 12 : 39 : 0.02
+T: 2 1 : 12 : 40 : 0.01
+T: 2 1 : 12 : 42 : 0.06
+T: 2 2 : 12 : 0 : 0.06
+T: 2 2 : 12 : 3 : 0.42
+T: 2 2 : 12 : 4 : 0.06
+T: 2 2 : 12 : 6 : 0.06
+T: 2 2 : 12 : 9 : 0.02
+T: 2 2 : 12 : 12 : 0.14
+T: 2 2 : 12 : 13 : 0.02
+T: 2 2 : 12 : 15 : 0.02
+T: 2 2 : 12 : 18 : 0.01
+T: 2 2 : 12 : 21 : 0.07
+T: 2 2 : 12 : 22 : 0.01
+T: 2 2 : 12 : 24 : 0.01
+T: 2 2 : 12 : 36 : 0.01
+T: 2 2 : 12 : 39 : 0.07
+T: 2 2 : 12 : 40 : 0.01
+T: 2 2 : 12 : 42 : 0.01
+T: 2 3 : 12 : 0 : 0.06
+T: 2 3 : 12 : 3 : 0.12
+T: 2 3 : 12 : 4 : 0.36
+T: 2 3 : 12 : 6 : 0.06
+T: 2 3 : 12 : 9 : 0.02
+T: 2 3 : 12 : 12 : 0.040
+T: 2 3 : 12 : 13 : 0.12
+T: 2 3 : 12 : 15 : 0.02
+T: 2 3 : 12 : 18 : 0.01
+T: 2 3 : 12 : 21 : 0.02
+T: 2 3 : 12 : 22 : 0.06
+T: 2 3 : 12 : 24 : 0.01
+T: 2 3 : 12 : 36 : 0.01
+T: 2 3 : 12 : 39 : 0.02
+T: 2 3 : 12 : 40 : 0.06
+T: 2 3 : 12 : 42 : 0.01
+T: 2 4 : 12 : 3 : 0.6
+T: 2 4 : 12 : 12 : 0.2
+T: 2 4 : 12 : 21 : 0.1
+T: 2 4 : 12 : 39 : 0.1
+T: 3 0 : 12 : 0 : 0.06
+T: 3 0 : 12 : 3 : 0.02
+T: 3 0 : 12 : 4 : 0.01
+T: 3 0 : 12 : 6 : 0.01
+T: 3 0 : 12 : 9 : 0.12
+T: 3 0 : 12 : 12 : 0.040
+T: 3 0 : 12 : 13 : 0.02
+T: 3 0 : 12 : 15 : 0.02
+T: 3 0 : 12 : 18 : 0.36
+T: 3 0 : 12 : 21 : 0.12
+T: 3 0 : 12 : 22 : 0.06
+T: 3 0 : 12 : 24 : 0.06
+T: 3 0 : 12 : 36 : 0.06
+T: 3 0 : 12 : 39 : 0.02
+T: 3 0 : 12 : 40 : 0.01
+T: 3 0 : 12 : 42 : 0.01
+T: 3 1 : 12 : 0 : 0.01
+T: 3 1 : 12 : 3 : 0.02
+T: 3 1 : 12 : 4 : 0.01
+T: 3 1 : 12 : 6 : 0.06
+T: 3 1 : 12 : 9 : 0.02
+T: 3 1 : 12 : 12 : 0.040
+T: 3 1 : 12 : 13 : 0.02
+T: 3 1 : 12 : 15 : 0.12
+T: 3 1 : 12 : 18 : 0.06
+T: 3 1 : 12 : 21 : 0.12
+T: 3 1 : 12 : 22 : 0.06
+T: 3 1 : 12 : 24 : 0.36
+T: 3 1 : 12 : 36 : 0.01
+T: 3 1 : 12 : 39 : 0.02
+T: 3 1 : 12 : 40 : 0.01
+T: 3 1 : 12 : 42 : 0.06
+T: 3 2 : 12 : 0 : 0.01
+T: 3 2 : 12 : 3 : 0.07
+T: 3 2 : 12 : 4 : 0.01
+T: 3 2 : 12 : 6 : 0.01
+T: 3 2 : 12 : 9 : 0.02
+T: 3 2 : 12 : 12 : 0.14
+T: 3 2 : 12 : 13 : 0.02
+T: 3 2 : 12 : 15 : 0.02
+T: 3 2 : 12 : 18 : 0.06
+T: 3 2 : 12 : 21 : 0.42
+T: 3 2 : 12 : 22 : 0.06
+T: 3 2 : 12 : 24 : 0.06
+T: 3 2 : 12 : 36 : 0.01
+T: 3 2 : 12 : 39 : 0.07
+T: 3 2 : 12 : 40 : 0.01
+T: 3 2 : 12 : 42 : 0.01
+T: 3 3 : 12 : 0 : 0.01
+T: 3 3 : 12 : 3 : 0.02
+T: 3 3 : 12 : 4 : 0.06
+T: 3 3 : 12 : 6 : 0.01
+T: 3 3 : 12 : 9 : 0.02
+T: 3 3 : 12 : 12 : 0.040
+T: 3 3 : 12 : 13 : 0.12
+T: 3 3 : 12 : 15 : 0.02
+T: 3 3 : 12 : 18 : 0.06
+T: 3 3 : 12 : 21 : 0.12
+T: 3 3 : 12 : 22 : 0.36
+T: 3 3 : 12 : 24 : 0.06
+T: 3 3 : 12 : 36 : 0.01
+T: 3 3 : 12 : 39 : 0.02
+T: 3 3 : 12 : 40 : 0.06
+T: 3 3 : 12 : 42 : 0.01
+T: 3 4 : 12 : 3 : 0.1
+T: 3 4 : 12 : 12 : 0.2
+T: 3 4 : 12 : 21 : 0.6
+T: 3 4 : 12 : 39 : 0.1
+T: 4 0 : 12 : 9 : 0.6
+T: 4 0 : 12 : 12 : 0.2
+T: 4 0 : 12 : 13 : 0.1
+T: 4 0 : 12 : 15 : 0.1
+T: 4 1 : 12 : 9 : 0.1
+T: 4 1 : 12 : 12 : 0.2
+T: 4 1 : 12 : 13 : 0.1
+T: 4 1 : 12 : 15 : 0.6
+T: 4 2 : 12 : 9 : 0.1
+T: 4 2 : 12 : 12 : 0.7
+T: 4 2 : 12 : 13 : 0.1
+T: 4 2 : 12 : 15 : 0.1
+T: 4 3 : 12 : 9 : 0.1
+T: 4 3 : 12 : 12 : 0.2
+T: 4 3 : 12 : 13 : 0.6
+T: 4 3 : 12 : 15 : 0.1
+T: 4 4 : 12 : 12 : 1.0
+T: 0 0 : 13 : 1 : 0.06
+T: 0 0 : 13 : 3 : 0.01
+T: 0 0 : 13 : 4 : 0.01
+T: 0 0 : 13 : 5 : 0.01
+T: 0 0 : 13 : 7 : 0.01
+T: 0 0 : 13 : 10 : 0.42
+T: 0 0 : 13 : 12 : 0.07
+T: 0 0 : 13 : 13 : 0.07
+T: 0 0 : 13 : 14 : 0.07
+T: 0 0 : 13 : 16 : 0.07
+T: 0 0 : 13 : 19 : 0.06
+T: 0 0 : 13 : 21 : 0.01
+T: 0 0 : 13 : 22 : 0.01
+T: 0 0 : 13 : 23 : 0.01
+T: 0 0 : 13 : 25 : 0.01
+T: 0 0 : 13 : 37 : 0.06
+T: 0 0 : 13 : 39 : 0.01
+T: 0 0 : 13 : 40 : 0.01
+T: 0 0 : 13 : 41 : 0.01
+T: 0 0 : 13 : 43 : 0.01
+T: 0 1 : 13 : 1 : 0.01
+T: 0 1 : 13 : 3 : 0.01
+T: 0 1 : 13 : 4 : 0.01
+T: 0 1 : 13 : 5 : 0.01
+T: 0 1 : 13 : 7 : 0.06
+T: 0 1 : 13 : 10 : 0.07
+T: 0 1 : 13 : 12 : 0.07
+T: 0 1 : 13 : 13 : 0.07
+T: 0 1 : 13 : 14 : 0.07
+T: 0 1 : 13 : 16 : 0.42
+T: 0 1 : 13 : 19 : 0.01
+T: 0 1 : 13 : 21 : 0.01
+T: 0 1 : 13 : 22 : 0.01
+T: 0 1 : 13 : 23 : 0.01
+T: 0 1 : 13 : 25 : 0.06
+T: 0 1 : 13 : 37 : 0.01
+T: 0 1 : 13 : 39 : 0.01
+T: 0 1 : 13 : 40 : 0.01
+T: 0 1 : 13 : 41 : 0.01
+T: 0 1 : 13 : 43 : 0.06
+T: 0 2 : 13 : 1 : 0.01
+T: 0 2 : 13 : 3 : 0.06
+T: 0 2 : 13 : 4 : 0.01
+T: 0 2 : 13 : 5 : 0.01
+T: 0 2 : 13 : 7 : 0.01
+T: 0 2 : 13 : 10 : 0.07
+T: 0 2 : 13 : 12 : 0.42
+T: 0 2 : 13 : 13 : 0.07
+T: 0 2 : 13 : 14 : 0.07
+T: 0 2 : 13 : 16 : 0.07
+T: 0 2 : 13 : 19 : 0.01
+T: 0 2 : 13 : 21 : 0.06
+T: 0 2 : 13 : 22 : 0.01
+T: 0 2 : 13 : 23 : 0.01
+T: 0 2 : 13 : 25 : 0.01
+T: 0 2 : 13 : 37 : 0.01
+T: 0 2 : 13 : 39 : 0.06
+T: 0 2 : 13 : 40 : 0.01
+T: 0 2 : 13 : 41 : 0.01
+T: 0 2 : 13 : 43 : 0.01
+T: 0 3 : 13 : 1 : 0.01
+T: 0 3 : 13 : 3 : 0.01
+T: 0 3 : 13 : 4 : 0.01
+T: 0 3 : 13 : 5 : 0.06
+T: 0 3 : 13 : 7 : 0.01
+T: 0 3 : 13 : 10 : 0.07
+T: 0 3 : 13 : 12 : 0.07
+T: 0 3 : 13 : 13 : 0.07
+T: 0 3 : 13 : 14 : 0.42
+T: 0 3 : 13 : 16 : 0.07
+T: 0 3 : 13 : 19 : 0.01
+T: 0 3 : 13 : 21 : 0.01
+T: 0 3 : 13 : 22 : 0.01
+T: 0 3 : 13 : 23 : 0.06
+T: 0 3 : 13 : 25 : 0.01
+T: 0 3 : 13 : 37 : 0.01
+T: 0 3 : 13 : 39 : 0.01
+T: 0 3 : 13 : 40 : 0.01
+T: 0 3 : 13 : 41 : 0.06
+T: 0 3 : 13 : 43 : 0.01
+T: 0 4 : 13 : 4 : 0.1
+T: 0 4 : 13 : 13 : 0.7
+T: 0 4 : 13 : 22 : 0.1
+T: 0 4 : 13 : 40 : 0.1
+T: 1 0 : 13 : 1 : 0.06
+T: 1 0 : 13 : 3 : 0.01
+T: 1 0 : 13 : 4 : 0.01
+T: 1 0 : 13 : 5 : 0.01
+T: 1 0 : 13 : 7 : 0.01
+T: 1 0 : 13 : 10 : 0.12
+T: 1 0 : 13 : 12 : 0.02
+T: 1 0 : 13 : 13 : 0.02
+T: 1 0 : 13 : 14 : 0.02
+T: 1 0 : 13 : 16 : 0.02
+T: 1 0 : 13 : 19 : 0.06
+T: 1 0 : 13 : 21 : 0.01
+T: 1 0 : 13 : 22 : 0.01
+T: 1 0 : 13 : 23 : 0.01
+T: 1 0 : 13 : 25 : 0.01
+T: 1 0 : 13 : 37 : 0.36
+T: 1 0 : 13 : 39 : 0.06
+T: 1 0 : 13 : 40 : 0.06
+T: 1 0 : 13 : 41 : 0.06
+T: 1 0 : 13 : 43 : 0.06
+T: 1 1 : 13 : 1 : 0.01
+T: 1 1 : 13 : 3 : 0.01
+T: 1 1 : 13 : 4 : 0.01
+T: 1 1 : 13 : 5 : 0.01
+T: 1 1 : 13 : 7 : 0.06
+T: 1 1 : 13 : 10 : 0.02
+T: 1 1 : 13 : 12 : 0.02
+T: 1 1 : 13 : 13 : 0.02
+T: 1 1 : 13 : 14 : 0.02
+T: 1 1 : 13 : 16 : 0.12
+T: 1 1 : 13 : 19 : 0.01
+T: 1 1 : 13 : 21 : 0.01
+T: 1 1 : 13 : 22 : 0.01
+T: 1 1 : 13 : 23 : 0.01
+T: 1 1 : 13 : 25 : 0.06
+T: 1 1 : 13 : 37 : 0.06
+T: 1 1 : 13 : 39 : 0.06
+T: 1 1 : 13 : 40 : 0.06
+T: 1 1 : 13 : 41 : 0.06
+T: 1 1 : 13 : 43 : 0.36
+T: 1 2 : 13 : 1 : 0.01
+T: 1 2 : 13 : 3 : 0.06
+T: 1 2 : 13 : 4 : 0.01
+T: 1 2 : 13 : 5 : 0.01
+T: 1 2 : 13 : 7 : 0.01
+T: 1 2 : 13 : 10 : 0.02
+T: 1 2 : 13 : 12 : 0.12
+T: 1 2 : 13 : 13 : 0.02
+T: 1 2 : 13 : 14 : 0.02
+T: 1 2 : 13 : 16 : 0.02
+T: 1 2 : 13 : 19 : 0.01
+T: 1 2 : 13 : 21 : 0.06
+T: 1 2 : 13 : 22 : 0.01
+T: 1 2 : 13 : 23 : 0.01
+T: 1 2 : 13 : 25 : 0.01
+T: 1 2 : 13 : 37 : 0.06
+T: 1 2 : 13 : 39 : 0.36
+T: 1 2 : 13 : 40 : 0.06
+T: 1 2 : 13 : 41 : 0.06
+T: 1 2 : 13 : 43 : 0.06
+T: 1 3 : 13 : 1 : 0.01
+T: 1 3 : 13 : 3 : 0.01
+T: 1 3 : 13 : 4 : 0.01
+T: 1 3 : 13 : 5 : 0.06
+T: 1 3 : 13 : 7 : 0.01
+T: 1 3 : 13 : 10 : 0.02
+T: 1 3 : 13 : 12 : 0.02
+T: 1 3 : 13 : 13 : 0.02
+T: 1 3 : 13 : 14 : 0.12
+T: 1 3 : 13 : 16 : 0.02
+T: 1 3 : 13 : 19 : 0.01
+T: 1 3 : 13 : 21 : 0.01
+T: 1 3 : 13 : 22 : 0.01
+T: 1 3 : 13 : 23 : 0.06
+T: 1 3 : 13 : 25 : 0.01
+T: 1 3 : 13 : 37 : 0.06
+T: 1 3 : 13 : 39 : 0.06
+T: 1 3 : 13 : 40 : 0.06
+T: 1 3 : 13 : 41 : 0.36
+T: 1 3 : 13 : 43 : 0.06
+T: 1 4 : 13 : 4 : 0.1
+T: 1 4 : 13 : 13 : 0.2
+T: 1 4 : 13 : 22 : 0.1
+T: 1 4 : 13 : 40 : 0.6
+T: 2 0 : 13 : 1 : 0.36
+T: 2 0 : 13 : 3 : 0.06
+T: 2 0 : 13 : 4 : 0.06
+T: 2 0 : 13 : 5 : 0.06
+T: 2 0 : 13 : 7 : 0.06
+T: 2 0 : 13 : 10 : 0.12
+T: 2 0 : 13 : 12 : 0.02
+T: 2 0 : 13 : 13 : 0.02
+T: 2 0 : 13 : 14 : 0.02
+T: 2 0 : 13 : 16 : 0.02
+T: 2 0 : 13 : 19 : 0.06
+T: 2 0 : 13 : 21 : 0.01
+T: 2 0 : 13 : 22 : 0.01
+T: 2 0 : 13 : 23 : 0.01
+T: 2 0 : 13 : 25 : 0.01
+T: 2 0 : 13 : 37 : 0.06
+T: 2 0 : 13 : 39 : 0.01
+T: 2 0 : 13 : 40 : 0.01
+T: 2 0 : 13 : 41 : 0.01
+T: 2 0 : 13 : 43 : 0.01
+T: 2 1 : 13 : 1 : 0.06
+T: 2 1 : 13 : 3 : 0.06
+T: 2 1 : 13 : 4 : 0.06
+T: 2 1 : 13 : 5 : 0.06
+T: 2 1 : 13 : 7 : 0.36
+T: 2 1 : 13 : 10 : 0.02
+T: 2 1 : 13 : 12 : 0.02
+T: 2 1 : 13 : 13 : 0.02
+T: 2 1 : 13 : 14 : 0.02
+T: 2 1 : 13 : 16 : 0.12
+T: 2 1 : 13 : 19 : 0.01
+T: 2 1 : 13 : 21 : 0.01
+T: 2 1 : 13 : 22 : 0.01
+T: 2 1 : 13 : 23 : 0.01
+T: 2 1 : 13 : 25 : 0.06
+T: 2 1 : 13 : 37 : 0.01
+T: 2 1 : 13 : 39 : 0.01
+T: 2 1 : 13 : 40 : 0.01
+T: 2 1 : 13 : 41 : 0.01
+T: 2 1 : 13 : 43 : 0.06
+T: 2 2 : 13 : 1 : 0.06
+T: 2 2 : 13 : 3 : 0.36
+T: 2 2 : 13 : 4 : 0.06
+T: 2 2 : 13 : 5 : 0.06
+T: 2 2 : 13 : 7 : 0.06
+T: 2 2 : 13 : 10 : 0.02
+T: 2 2 : 13 : 12 : 0.12
+T: 2 2 : 13 : 13 : 0.02
+T: 2 2 : 13 : 14 : 0.02
+T: 2 2 : 13 : 16 : 0.02
+T: 2 2 : 13 : 19 : 0.01
+T: 2 2 : 13 : 21 : 0.06
+T: 2 2 : 13 : 22 : 0.01
+T: 2 2 : 13 : 23 : 0.01
+T: 2 2 : 13 : 25 : 0.01
+T: 2 2 : 13 : 37 : 0.01
+T: 2 2 : 13 : 39 : 0.06
+T: 2 2 : 13 : 40 : 0.01
+T: 2 2 : 13 : 41 : 0.01
+T: 2 2 : 13 : 43 : 0.01
+T: 2 3 : 13 : 1 : 0.06
+T: 2 3 : 13 : 3 : 0.06
+T: 2 3 : 13 : 4 : 0.06
+T: 2 3 : 13 : 5 : 0.36
+T: 2 3 : 13 : 7 : 0.06
+T: 2 3 : 13 : 10 : 0.02
+T: 2 3 : 13 : 12 : 0.02
+T: 2 3 : 13 : 13 : 0.02
+T: 2 3 : 13 : 14 : 0.12
+T: 2 3 : 13 : 16 : 0.02
+T: 2 3 : 13 : 19 : 0.01
+T: 2 3 : 13 : 21 : 0.01
+T: 2 3 : 13 : 22 : 0.01
+T: 2 3 : 13 : 23 : 0.06
+T: 2 3 : 13 : 25 : 0.01
+T: 2 3 : 13 : 37 : 0.01
+T: 2 3 : 13 : 39 : 0.01
+T: 2 3 : 13 : 40 : 0.01
+T: 2 3 : 13 : 41 : 0.06
+T: 2 3 : 13 : 43 : 0.01
+T: 2 4 : 13 : 4 : 0.6
+T: 2 4 : 13 : 13 : 0.2
+T: 2 4 : 13 : 22 : 0.1
+T: 2 4 : 13 : 40 : 0.1
+T: 3 0 : 13 : 1 : 0.06
+T: 3 0 : 13 : 3 : 0.01
+T: 3 0 : 13 : 4 : 0.01
+T: 3 0 : 13 : 5 : 0.01
+T: 3 0 : 13 : 7 : 0.01
+T: 3 0 : 13 : 10 : 0.12
+T: 3 0 : 13 : 12 : 0.02
+T: 3 0 : 13 : 13 : 0.02
+T: 3 0 : 13 : 14 : 0.02
+T: 3 0 : 13 : 16 : 0.02
+T: 3 0 : 13 : 19 : 0.36
+T: 3 0 : 13 : 21 : 0.06
+T: 3 0 : 13 : 22 : 0.06
+T: 3 0 : 13 : 23 : 0.06
+T: 3 0 : 13 : 25 : 0.06
+T: 3 0 : 13 : 37 : 0.06
+T: 3 0 : 13 : 39 : 0.01
+T: 3 0 : 13 : 40 : 0.01
+T: 3 0 : 13 : 41 : 0.01
+T: 3 0 : 13 : 43 : 0.01
+T: 3 1 : 13 : 1 : 0.01
+T: 3 1 : 13 : 3 : 0.01
+T: 3 1 : 13 : 4 : 0.01
+T: 3 1 : 13 : 5 : 0.01
+T: 3 1 : 13 : 7 : 0.06
+T: 3 1 : 13 : 10 : 0.02
+T: 3 1 : 13 : 12 : 0.02
+T: 3 1 : 13 : 13 : 0.02
+T: 3 1 : 13 : 14 : 0.02
+T: 3 1 : 13 : 16 : 0.12
+T: 3 1 : 13 : 19 : 0.06
+T: 3 1 : 13 : 21 : 0.06
+T: 3 1 : 13 : 22 : 0.06
+T: 3 1 : 13 : 23 : 0.06
+T: 3 1 : 13 : 25 : 0.36
+T: 3 1 : 13 : 37 : 0.01
+T: 3 1 : 13 : 39 : 0.01
+T: 3 1 : 13 : 40 : 0.01
+T: 3 1 : 13 : 41 : 0.01
+T: 3 1 : 13 : 43 : 0.06
+T: 3 2 : 13 : 1 : 0.01
+T: 3 2 : 13 : 3 : 0.06
+T: 3 2 : 13 : 4 : 0.01
+T: 3 2 : 13 : 5 : 0.01
+T: 3 2 : 13 : 7 : 0.01
+T: 3 2 : 13 : 10 : 0.02
+T: 3 2 : 13 : 12 : 0.12
+T: 3 2 : 13 : 13 : 0.02
+T: 3 2 : 13 : 14 : 0.02
+T: 3 2 : 13 : 16 : 0.02
+T: 3 2 : 13 : 19 : 0.06
+T: 3 2 : 13 : 21 : 0.36
+T: 3 2 : 13 : 22 : 0.06
+T: 3 2 : 13 : 23 : 0.06
+T: 3 2 : 13 : 25 : 0.06
+T: 3 2 : 13 : 37 : 0.01
+T: 3 2 : 13 : 39 : 0.06
+T: 3 2 : 13 : 40 : 0.01
+T: 3 2 : 13 : 41 : 0.01
+T: 3 2 : 13 : 43 : 0.01
+T: 3 3 : 13 : 1 : 0.01
+T: 3 3 : 13 : 3 : 0.01
+T: 3 3 : 13 : 4 : 0.01
+T: 3 3 : 13 : 5 : 0.06
+T: 3 3 : 13 : 7 : 0.01
+T: 3 3 : 13 : 10 : 0.02
+T: 3 3 : 13 : 12 : 0.02
+T: 3 3 : 13 : 13 : 0.02
+T: 3 3 : 13 : 14 : 0.12
+T: 3 3 : 13 : 16 : 0.02
+T: 3 3 : 13 : 19 : 0.06
+T: 3 3 : 13 : 21 : 0.06
+T: 3 3 : 13 : 22 : 0.06
+T: 3 3 : 13 : 23 : 0.36
+T: 3 3 : 13 : 25 : 0.06
+T: 3 3 : 13 : 37 : 0.01
+T: 3 3 : 13 : 39 : 0.01
+T: 3 3 : 13 : 40 : 0.01
+T: 3 3 : 13 : 41 : 0.06
+T: 3 3 : 13 : 43 : 0.01
+T: 3 4 : 13 : 4 : 0.1
+T: 3 4 : 13 : 13 : 0.2
+T: 3 4 : 13 : 22 : 0.6
+T: 3 4 : 13 : 40 : 0.1
+T: 4 0 : 13 : 10 : 0.6
+T: 4 0 : 13 : 12 : 0.1
+T: 4 0 : 13 : 13 : 0.1
+T: 4 0 : 13 : 14 : 0.1
+T: 4 0 : 13 : 16 : 0.1
+T: 4 1 : 13 : 10 : 0.1
+T: 4 1 : 13 : 12 : 0.1
+T: 4 1 : 13 : 13 : 0.1
+T: 4 1 : 13 : 14 : 0.1
+T: 4 1 : 13 : 16 : 0.6
+T: 4 2 : 13 : 10 : 0.1
+T: 4 2 : 13 : 12 : 0.6
+T: 4 2 : 13 : 13 : 0.1
+T: 4 2 : 13 : 14 : 0.1
+T: 4 2 : 13 : 16 : 0.1
+T: 4 3 : 13 : 10 : 0.1
+T: 4 3 : 13 : 12 : 0.1
+T: 4 3 : 13 : 13 : 0.1
+T: 4 3 : 13 : 14 : 0.6
+T: 4 3 : 13 : 16 : 0.1
+T: 4 4 : 13 : 13 : 1.0
+T: 0 0 : 14 : 2 : 0.06
+T: 0 0 : 14 : 4 : 0.01
+T: 0 0 : 14 : 5 : 0.02
+T: 0 0 : 14 : 8 : 0.01
+T: 0 0 : 14 : 11 : 0.42
+T: 0 0 : 14 : 13 : 0.07
+T: 0 0 : 14 : 14 : 0.14
+T: 0 0 : 14 : 17 : 0.07
+T: 0 0 : 14 : 20 : 0.06
+T: 0 0 : 14 : 22 : 0.01
+T: 0 0 : 14 : 23 : 0.02
+T: 0 0 : 14 : 26 : 0.01
+T: 0 0 : 14 : 38 : 0.06
+T: 0 0 : 14 : 40 : 0.01
+T: 0 0 : 14 : 41 : 0.02
+T: 0 0 : 14 : 44 : 0.01
+T: 0 1 : 14 : 2 : 0.01
+T: 0 1 : 14 : 4 : 0.01
+T: 0 1 : 14 : 5 : 0.02
+T: 0 1 : 14 : 8 : 0.06
+T: 0 1 : 14 : 11 : 0.07
+T: 0 1 : 14 : 13 : 0.07
+T: 0 1 : 14 : 14 : 0.14
+T: 0 1 : 14 : 17 : 0.42
+T: 0 1 : 14 : 20 : 0.01
+T: 0 1 : 14 : 22 : 0.01
+T: 0 1 : 14 : 23 : 0.02
+T: 0 1 : 14 : 26 : 0.06
+T: 0 1 : 14 : 38 : 0.01
+T: 0 1 : 14 : 40 : 0.01
+T: 0 1 : 14 : 41 : 0.02
+T: 0 1 : 14 : 44 : 0.06
+T: 0 2 : 14 : 2 : 0.01
+T: 0 2 : 14 : 4 : 0.06
+T: 0 2 : 14 : 5 : 0.02
+T: 0 2 : 14 : 8 : 0.01
+T: 0 2 : 14 : 11 : 0.07
+T: 0 2 : 14 : 13 : 0.42
+T: 0 2 : 14 : 14 : 0.14
+T: 0 2 : 14 : 17 : 0.07
+T: 0 2 : 14 : 20 : 0.01
+T: 0 2 : 14 : 22 : 0.06
+T: 0 2 : 14 : 23 : 0.02
+T: 0 2 : 14 : 26 : 0.01
+T: 0 2 : 14 : 38 : 0.01
+T: 0 2 : 14 : 40 : 0.06
+T: 0 2 : 14 : 41 : 0.02
+T: 0 2 : 14 : 44 : 0.01
+T: 0 3 : 14 : 2 : 0.01
+T: 0 3 : 14 : 4 : 0.01
+T: 0 3 : 14 : 5 : 0.07
+T: 0 3 : 14 : 8 : 0.01
+T: 0 3 : 14 : 11 : 0.07
+T: 0 3 : 14 : 13 : 0.07
+T: 0 3 : 14 : 14 : 0.49
+T: 0 3 : 14 : 17 : 0.07
+T: 0 3 : 14 : 20 : 0.01
+T: 0 3 : 14 : 22 : 0.01
+T: 0 3 : 14 : 23 : 0.07
+T: 0 3 : 14 : 26 : 0.01
+T: 0 3 : 14 : 38 : 0.01
+T: 0 3 : 14 : 40 : 0.01
+T: 0 3 : 14 : 41 : 0.07
+T: 0 3 : 14 : 44 : 0.01
+T: 0 4 : 14 : 5 : 0.1
+T: 0 4 : 14 : 14 : 0.7
+T: 0 4 : 14 : 23 : 0.1
+T: 0 4 : 14 : 41 : 0.1
+T: 1 0 : 14 : 2 : 0.06
+T: 1 0 : 14 : 4 : 0.01
+T: 1 0 : 14 : 5 : 0.02
+T: 1 0 : 14 : 8 : 0.01
+T: 1 0 : 14 : 11 : 0.12
+T: 1 0 : 14 : 13 : 0.02
+T: 1 0 : 14 : 14 : 0.040
+T: 1 0 : 14 : 17 : 0.02
+T: 1 0 : 14 : 20 : 0.06
+T: 1 0 : 14 : 22 : 0.01
+T: 1 0 : 14 : 23 : 0.02
+T: 1 0 : 14 : 26 : 0.01
+T: 1 0 : 14 : 38 : 0.36
+T: 1 0 : 14 : 40 : 0.06
+T: 1 0 : 14 : 41 : 0.12
+T: 1 0 : 14 : 44 : 0.06
+T: 1 1 : 14 : 2 : 0.01
+T: 1 1 : 14 : 4 : 0.01
+T: 1 1 : 14 : 5 : 0.02
+T: 1 1 : 14 : 8 : 0.06
+T: 1 1 : 14 : 11 : 0.02
+T: 1 1 : 14 : 13 : 0.02
+T: 1 1 : 14 : 14 : 0.040
+T: 1 1 : 14 : 17 : 0.12
+T: 1 1 : 14 : 20 : 0.01
+T: 1 1 : 14 : 22 : 0.01
+T: 1 1 : 14 : 23 : 0.02
+T: 1 1 : 14 : 26 : 0.06
+T: 1 1 : 14 : 38 : 0.06
+T: 1 1 : 14 : 40 : 0.06
+T: 1 1 : 14 : 41 : 0.12
+T: 1 1 : 14 : 44 : 0.36
+T: 1 2 : 14 : 2 : 0.01
+T: 1 2 : 14 : 4 : 0.06
+T: 1 2 : 14 : 5 : 0.02
+T: 1 2 : 14 : 8 : 0.01
+T: 1 2 : 14 : 11 : 0.02
+T: 1 2 : 14 : 13 : 0.12
+T: 1 2 : 14 : 14 : 0.040
+T: 1 2 : 14 : 17 : 0.02
+T: 1 2 : 14 : 20 : 0.01
+T: 1 2 : 14 : 22 : 0.06
+T: 1 2 : 14 : 23 : 0.02
+T: 1 2 : 14 : 26 : 0.01
+T: 1 2 : 14 : 38 : 0.06
+T: 1 2 : 14 : 40 : 0.36
+T: 1 2 : 14 : 41 : 0.12
+T: 1 2 : 14 : 44 : 0.06
+T: 1 3 : 14 : 2 : 0.01
+T: 1 3 : 14 : 4 : 0.01
+T: 1 3 : 14 : 5 : 0.07
+T: 1 3 : 14 : 8 : 0.01
+T: 1 3 : 14 : 11 : 0.02
+T: 1 3 : 14 : 13 : 0.02
+T: 1 3 : 14 : 14 : 0.14
+T: 1 3 : 14 : 17 : 0.02
+T: 1 3 : 14 : 20 : 0.01
+T: 1 3 : 14 : 22 : 0.01
+T: 1 3 : 14 : 23 : 0.07
+T: 1 3 : 14 : 26 : 0.01
+T: 1 3 : 14 : 38 : 0.06
+T: 1 3 : 14 : 40 : 0.06
+T: 1 3 : 14 : 41 : 0.42
+T: 1 3 : 14 : 44 : 0.06
+T: 1 4 : 14 : 5 : 0.1
+T: 1 4 : 14 : 14 : 0.2
+T: 1 4 : 14 : 23 : 0.1
+T: 1 4 : 14 : 41 : 0.6
+T: 2 0 : 14 : 2 : 0.36
+T: 2 0 : 14 : 4 : 0.06
+T: 2 0 : 14 : 5 : 0.12
+T: 2 0 : 14 : 8 : 0.06
+T: 2 0 : 14 : 11 : 0.12
+T: 2 0 : 14 : 13 : 0.02
+T: 2 0 : 14 : 14 : 0.040
+T: 2 0 : 14 : 17 : 0.02
+T: 2 0 : 14 : 20 : 0.06
+T: 2 0 : 14 : 22 : 0.01
+T: 2 0 : 14 : 23 : 0.02
+T: 2 0 : 14 : 26 : 0.01
+T: 2 0 : 14 : 38 : 0.06
+T: 2 0 : 14 : 40 : 0.01
+T: 2 0 : 14 : 41 : 0.02
+T: 2 0 : 14 : 44 : 0.01
+T: 2 1 : 14 : 2 : 0.06
+T: 2 1 : 14 : 4 : 0.06
+T: 2 1 : 14 : 5 : 0.12
+T: 2 1 : 14 : 8 : 0.36
+T: 2 1 : 14 : 11 : 0.02
+T: 2 1 : 14 : 13 : 0.02
+T: 2 1 : 14 : 14 : 0.040
+T: 2 1 : 14 : 17 : 0.12
+T: 2 1 : 14 : 20 : 0.01
+T: 2 1 : 14 : 22 : 0.01
+T: 2 1 : 14 : 23 : 0.02
+T: 2 1 : 14 : 26 : 0.06
+T: 2 1 : 14 : 38 : 0.01
+T: 2 1 : 14 : 40 : 0.01
+T: 2 1 : 14 : 41 : 0.02
+T: 2 1 : 14 : 44 : 0.06
+T: 2 2 : 14 : 2 : 0.06
+T: 2 2 : 14 : 4 : 0.36
+T: 2 2 : 14 : 5 : 0.12
+T: 2 2 : 14 : 8 : 0.06
+T: 2 2 : 14 : 11 : 0.02
+T: 2 2 : 14 : 13 : 0.12
+T: 2 2 : 14 : 14 : 0.040
+T: 2 2 : 14 : 17 : 0.02
+T: 2 2 : 14 : 20 : 0.01
+T: 2 2 : 14 : 22 : 0.06
+T: 2 2 : 14 : 23 : 0.02
+T: 2 2 : 14 : 26 : 0.01
+T: 2 2 : 14 : 38 : 0.01
+T: 2 2 : 14 : 40 : 0.06
+T: 2 2 : 14 : 41 : 0.02
+T: 2 2 : 14 : 44 : 0.01
+T: 2 3 : 14 : 2 : 0.06
+T: 2 3 : 14 : 4 : 0.06
+T: 2 3 : 14 : 5 : 0.42
+T: 2 3 : 14 : 8 : 0.06
+T: 2 3 : 14 : 11 : 0.02
+T: 2 3 : 14 : 13 : 0.02
+T: 2 3 : 14 : 14 : 0.14
+T: 2 3 : 14 : 17 : 0.02
+T: 2 3 : 14 : 20 : 0.01
+T: 2 3 : 14 : 22 : 0.01
+T: 2 3 : 14 : 23 : 0.07
+T: 2 3 : 14 : 26 : 0.01
+T: 2 3 : 14 : 38 : 0.01
+T: 2 3 : 14 : 40 : 0.01
+T: 2 3 : 14 : 41 : 0.07
+T: 2 3 : 14 : 44 : 0.01
+T: 2 4 : 14 : 5 : 0.6
+T: 2 4 : 14 : 14 : 0.2
+T: 2 4 : 14 : 23 : 0.1
+T: 2 4 : 14 : 41 : 0.1
+T: 3 0 : 14 : 2 : 0.06
+T: 3 0 : 14 : 4 : 0.01
+T: 3 0 : 14 : 5 : 0.02
+T: 3 0 : 14 : 8 : 0.01
+T: 3 0 : 14 : 11 : 0.12
+T: 3 0 : 14 : 13 : 0.02
+T: 3 0 : 14 : 14 : 0.040
+T: 3 0 : 14 : 17 : 0.02
+T: 3 0 : 14 : 20 : 0.36
+T: 3 0 : 14 : 22 : 0.06
+T: 3 0 : 14 : 23 : 0.12
+T: 3 0 : 14 : 26 : 0.06
+T: 3 0 : 14 : 38 : 0.06
+T: 3 0 : 14 : 40 : 0.01
+T: 3 0 : 14 : 41 : 0.02
+T: 3 0 : 14 : 44 : 0.01
+T: 3 1 : 14 : 2 : 0.01
+T: 3 1 : 14 : 4 : 0.01
+T: 3 1 : 14 : 5 : 0.02
+T: 3 1 : 14 : 8 : 0.06
+T: 3 1 : 14 : 11 : 0.02
+T: 3 1 : 14 : 13 : 0.02
+T: 3 1 : 14 : 14 : 0.040
+T: 3 1 : 14 : 17 : 0.12
+T: 3 1 : 14 : 20 : 0.06
+T: 3 1 : 14 : 22 : 0.06
+T: 3 1 : 14 : 23 : 0.12
+T: 3 1 : 14 : 26 : 0.36
+T: 3 1 : 14 : 38 : 0.01
+T: 3 1 : 14 : 40 : 0.01
+T: 3 1 : 14 : 41 : 0.02
+T: 3 1 : 14 : 44 : 0.06
+T: 3 2 : 14 : 2 : 0.01
+T: 3 2 : 14 : 4 : 0.06
+T: 3 2 : 14 : 5 : 0.02
+T: 3 2 : 14 : 8 : 0.01
+T: 3 2 : 14 : 11 : 0.02
+T: 3 2 : 14 : 13 : 0.12
+T: 3 2 : 14 : 14 : 0.040
+T: 3 2 : 14 : 17 : 0.02
+T: 3 2 : 14 : 20 : 0.06
+T: 3 2 : 14 : 22 : 0.36
+T: 3 2 : 14 : 23 : 0.12
+T: 3 2 : 14 : 26 : 0.06
+T: 3 2 : 14 : 38 : 0.01
+T: 3 2 : 14 : 40 : 0.06
+T: 3 2 : 14 : 41 : 0.02
+T: 3 2 : 14 : 44 : 0.01
+T: 3 3 : 14 : 2 : 0.01
+T: 3 3 : 14 : 4 : 0.01
+T: 3 3 : 14 : 5 : 0.07
+T: 3 3 : 14 : 8 : 0.01
+T: 3 3 : 14 : 11 : 0.02
+T: 3 3 : 14 : 13 : 0.02
+T: 3 3 : 14 : 14 : 0.14
+T: 3 3 : 14 : 17 : 0.02
+T: 3 3 : 14 : 20 : 0.06
+T: 3 3 : 14 : 22 : 0.06
+T: 3 3 : 14 : 23 : 0.42
+T: 3 3 : 14 : 26 : 0.06
+T: 3 3 : 14 : 38 : 0.01
+T: 3 3 : 14 : 40 : 0.01
+T: 3 3 : 14 : 41 : 0.07
+T: 3 3 : 14 : 44 : 0.01
+T: 3 4 : 14 : 5 : 0.1
+T: 3 4 : 14 : 14 : 0.2
+T: 3 4 : 14 : 23 : 0.6
+T: 3 4 : 14 : 41 : 0.1
+T: 4 0 : 14 : 11 : 0.6
+T: 4 0 : 14 : 13 : 0.1
+T: 4 0 : 14 : 14 : 0.2
+T: 4 0 : 14 : 17 : 0.1
+T: 4 1 : 14 : 11 : 0.1
+T: 4 1 : 14 : 13 : 0.1
+T: 4 1 : 14 : 14 : 0.2
+T: 4 1 : 14 : 17 : 0.6
+T: 4 2 : 14 : 11 : 0.1
+T: 4 2 : 14 : 13 : 0.6
+T: 4 2 : 14 : 14 : 0.2
+T: 4 2 : 14 : 17 : 0.1
+T: 4 3 : 14 : 11 : 0.1
+T: 4 3 : 14 : 13 : 0.1
+T: 4 3 : 14 : 14 : 0.7
+T: 4 3 : 14 : 17 : 0.1
+T: 4 4 : 14 : 14 : 1.0
+T: 0 0 : 15 : 3 : 0.06
+T: 0 0 : 15 : 6 : 0.03
+T: 0 0 : 15 : 7 : 0.01
+T: 0 0 : 15 : 12 : 0.42
+T: 0 0 : 15 : 15 : 0.21
+T: 0 0 : 15 : 16 : 0.07
+T: 0 0 : 15 : 21 : 0.06
+T: 0 0 : 15 : 24 : 0.03
+T: 0 0 : 15 : 25 : 0.01
+T: 0 0 : 15 : 39 : 0.06
+T: 0 0 : 15 : 42 : 0.03
+T: 0 0 : 15 : 43 : 0.01
+T: 0 1 : 15 : 3 : 0.01
+T: 0 1 : 15 : 6 : 0.08
+T: 0 1 : 15 : 7 : 0.01
+T: 0 1 : 15 : 12 : 0.07
+T: 0 1 : 15 : 15 : 0.56
+T: 0 1 : 15 : 16 : 0.07
+T: 0 1 : 15 : 21 : 0.01
+T: 0 1 : 15 : 24 : 0.08
+T: 0 1 : 15 : 25 : 0.01
+T: 0 1 : 15 : 39 : 0.01
+T: 0 1 : 15 : 42 : 0.08
+T: 0 1 : 15 : 43 : 0.01
+T: 0 2 : 15 : 3 : 0.01
+T: 0 2 : 15 : 6 : 0.08
+T: 0 2 : 15 : 7 : 0.01
+T: 0 2 : 15 : 12 : 0.07
+T: 0 2 : 15 : 15 : 0.56
+T: 0 2 : 15 : 16 : 0.07
+T: 0 2 : 15 : 21 : 0.01
+T: 0 2 : 15 : 24 : 0.08
+T: 0 2 : 15 : 25 : 0.01
+T: 0 2 : 15 : 39 : 0.01
+T: 0 2 : 15 : 42 : 0.08
+T: 0 2 : 15 : 43 : 0.01
+T: 0 3 : 15 : 3 : 0.01
+T: 0 3 : 15 : 6 : 0.03
+T: 0 3 : 15 : 7 : 0.06
+T: 0 3 : 15 : 12 : 0.07
+T: 0 3 : 15 : 15 : 0.21
+T: 0 3 : 15 : 16 : 0.42
+T: 0 3 : 15 : 21 : 0.01
+T: 0 3 : 15 : 24 : 0.03
+T: 0 3 : 15 : 25 : 0.06
+T: 0 3 : 15 : 39 : 0.01
+T: 0 3 : 15 : 42 : 0.03
+T: 0 3 : 15 : 43 : 0.06
+T: 0 4 : 15 : 6 : 0.1
+T: 0 4 : 15 : 15 : 0.7
+T: 0 4 : 15 : 24 : 0.1
+T: 0 4 : 15 : 42 : 0.1
+T: 1 0 : 15 : 3 : 0.06
+T: 1 0 : 15 : 6 : 0.03
+T: 1 0 : 15 : 7 : 0.01
+T: 1 0 : 15 : 12 : 0.12
+T: 1 0 : 15 : 15 : 0.060
+T: 1 0 : 15 : 16 : 0.02
+T: 1 0 : 15 : 21 : 0.06
+T: 1 0 : 15 : 24 : 0.03
+T: 1 0 : 15 : 25 : 0.01
+T: 1 0 : 15 : 39 : 0.36
+T: 1 0 : 15 : 42 : 0.18
+T: 1 0 : 15 : 43 : 0.06
+T: 1 1 : 15 : 3 : 0.01
+T: 1 1 : 15 : 6 : 0.08
+T: 1 1 : 15 : 7 : 0.01
+T: 1 1 : 15 : 12 : 0.02
+T: 1 1 : 15 : 15 : 0.16
+T: 1 1 : 15 : 16 : 0.02
+T: 1 1 : 15 : 21 : 0.01
+T: 1 1 : 15 : 24 : 0.08
+T: 1 1 : 15 : 25 : 0.01
+T: 1 1 : 15 : 39 : 0.06
+T: 1 1 : 15 : 42 : 0.48
+T: 1 1 : 15 : 43 : 0.06
+T: 1 2 : 15 : 3 : 0.01
+T: 1 2 : 15 : 6 : 0.08
+T: 1 2 : 15 : 7 : 0.01
+T: 1 2 : 15 : 12 : 0.02
+T: 1 2 : 15 : 15 : 0.16
+T: 1 2 : 15 : 16 : 0.02
+T: 1 2 : 15 : 21 : 0.01
+T: 1 2 : 15 : 24 : 0.08
+T: 1 2 : 15 : 25 : 0.01
+T: 1 2 : 15 : 39 : 0.06
+T: 1 2 : 15 : 42 : 0.48
+T: 1 2 : 15 : 43 : 0.06
+T: 1 3 : 15 : 3 : 0.01
+T: 1 3 : 15 : 6 : 0.03
+T: 1 3 : 15 : 7 : 0.06
+T: 1 3 : 15 : 12 : 0.02
+T: 1 3 : 15 : 15 : 0.060
+T: 1 3 : 15 : 16 : 0.12
+T: 1 3 : 15 : 21 : 0.01
+T: 1 3 : 15 : 24 : 0.03
+T: 1 3 : 15 : 25 : 0.06
+T: 1 3 : 15 : 39 : 0.06
+T: 1 3 : 15 : 42 : 0.18
+T: 1 3 : 15 : 43 : 0.36
+T: 1 4 : 15 : 6 : 0.1
+T: 1 4 : 15 : 15 : 0.2
+T: 1 4 : 15 : 24 : 0.1
+T: 1 4 : 15 : 42 : 0.6
+T: 2 0 : 15 : 3 : 0.36
+T: 2 0 : 15 : 6 : 0.18
+T: 2 0 : 15 : 7 : 0.06
+T: 2 0 : 15 : 12 : 0.12
+T: 2 0 : 15 : 15 : 0.060
+T: 2 0 : 15 : 16 : 0.02
+T: 2 0 : 15 : 21 : 0.06
+T: 2 0 : 15 : 24 : 0.03
+T: 2 0 : 15 : 25 : 0.01
+T: 2 0 : 15 : 39 : 0.06
+T: 2 0 : 15 : 42 : 0.03
+T: 2 0 : 15 : 43 : 0.01
+T: 2 1 : 15 : 3 : 0.06
+T: 2 1 : 15 : 6 : 0.48
+T: 2 1 : 15 : 7 : 0.06
+T: 2 1 : 15 : 12 : 0.02
+T: 2 1 : 15 : 15 : 0.16
+T: 2 1 : 15 : 16 : 0.02
+T: 2 1 : 15 : 21 : 0.01
+T: 2 1 : 15 : 24 : 0.08
+T: 2 1 : 15 : 25 : 0.01
+T: 2 1 : 15 : 39 : 0.01
+T: 2 1 : 15 : 42 : 0.08
+T: 2 1 : 15 : 43 : 0.01
+T: 2 2 : 15 : 3 : 0.06
+T: 2 2 : 15 : 6 : 0.48
+T: 2 2 : 15 : 7 : 0.06
+T: 2 2 : 15 : 12 : 0.02
+T: 2 2 : 15 : 15 : 0.16
+T: 2 2 : 15 : 16 : 0.02
+T: 2 2 : 15 : 21 : 0.01
+T: 2 2 : 15 : 24 : 0.08
+T: 2 2 : 15 : 25 : 0.01
+T: 2 2 : 15 : 39 : 0.01
+T: 2 2 : 15 : 42 : 0.08
+T: 2 2 : 15 : 43 : 0.01
+T: 2 3 : 15 : 3 : 0.06
+T: 2 3 : 15 : 6 : 0.18
+T: 2 3 : 15 : 7 : 0.36
+T: 2 3 : 15 : 12 : 0.02
+T: 2 3 : 15 : 15 : 0.060
+T: 2 3 : 15 : 16 : 0.12
+T: 2 3 : 15 : 21 : 0.01
+T: 2 3 : 15 : 24 : 0.03
+T: 2 3 : 15 : 25 : 0.06
+T: 2 3 : 15 : 39 : 0.01
+T: 2 3 : 15 : 42 : 0.03
+T: 2 3 : 15 : 43 : 0.06
+T: 2 4 : 15 : 6 : 0.6
+T: 2 4 : 15 : 15 : 0.2
+T: 2 4 : 15 : 24 : 0.1
+T: 2 4 : 15 : 42 : 0.1
+T: 3 0 : 15 : 3 : 0.06
+T: 3 0 : 15 : 6 : 0.03
+T: 3 0 : 15 : 7 : 0.01
+T: 3 0 : 15 : 12 : 0.12
+T: 3 0 : 15 : 15 : 0.060
+T: 3 0 : 15 : 16 : 0.02
+T: 3 0 : 15 : 21 : 0.36
+T: 3 0 : 15 : 24 : 0.18
+T: 3 0 : 15 : 25 : 0.06
+T: 3 0 : 15 : 39 : 0.06
+T: 3 0 : 15 : 42 : 0.03
+T: 3 0 : 15 : 43 : 0.01
+T: 3 1 : 15 : 3 : 0.01
+T: 3 1 : 15 : 6 : 0.08
+T: 3 1 : 15 : 7 : 0.01
+T: 3 1 : 15 : 12 : 0.02
+T: 3 1 : 15 : 15 : 0.16
+T: 3 1 : 15 : 16 : 0.02
+T: 3 1 : 15 : 21 : 0.06
+T: 3 1 : 15 : 24 : 0.48
+T: 3 1 : 15 : 25 : 0.06
+T: 3 1 : 15 : 39 : 0.01
+T: 3 1 : 15 : 42 : 0.08
+T: 3 1 : 15 : 43 : 0.01
+T: 3 2 : 15 : 3 : 0.01
+T: 3 2 : 15 : 6 : 0.08
+T: 3 2 : 15 : 7 : 0.01
+T: 3 2 : 15 : 12 : 0.02
+T: 3 2 : 15 : 15 : 0.16
+T: 3 2 : 15 : 16 : 0.02
+T: 3 2 : 15 : 21 : 0.06
+T: 3 2 : 15 : 24 : 0.48
+T: 3 2 : 15 : 25 : 0.06
+T: 3 2 : 15 : 39 : 0.01
+T: 3 2 : 15 : 42 : 0.08
+T: 3 2 : 15 : 43 : 0.01
+T: 3 3 : 15 : 3 : 0.01
+T: 3 3 : 15 : 6 : 0.03
+T: 3 3 : 15 : 7 : 0.06
+T: 3 3 : 15 : 12 : 0.02
+T: 3 3 : 15 : 15 : 0.060
+T: 3 3 : 15 : 16 : 0.12
+T: 3 3 : 15 : 21 : 0.06
+T: 3 3 : 15 : 24 : 0.18
+T: 3 3 : 15 : 25 : 0.36
+T: 3 3 : 15 : 39 : 0.01
+T: 3 3 : 15 : 42 : 0.03
+T: 3 3 : 15 : 43 : 0.06
+T: 3 4 : 15 : 6 : 0.1
+T: 3 4 : 15 : 15 : 0.2
+T: 3 4 : 15 : 24 : 0.6
+T: 3 4 : 15 : 42 : 0.1
+T: 4 0 : 15 : 12 : 0.6
+T: 4 0 : 15 : 15 : 0.3
+T: 4 0 : 15 : 16 : 0.1
+T: 4 1 : 15 : 12 : 0.1
+T: 4 1 : 15 : 15 : 0.8
+T: 4 1 : 15 : 16 : 0.1
+T: 4 2 : 15 : 12 : 0.1
+T: 4 2 : 15 : 15 : 0.8
+T: 4 2 : 15 : 16 : 0.1
+T: 4 3 : 15 : 12 : 0.1
+T: 4 3 : 15 : 15 : 0.3
+T: 4 3 : 15 : 16 : 0.6
+T: 4 4 : 15 : 15 : 1.0
+T: 0 0 : 16 : 4 : 0.06
+T: 0 0 : 16 : 6 : 0.01
+T: 0 0 : 16 : 7 : 0.02
+T: 0 0 : 16 : 8 : 0.01
+T: 0 0 : 16 : 13 : 0.42
+T: 0 0 : 16 : 15 : 0.07
+T: 0 0 : 16 : 16 : 0.14
+T: 0 0 : 16 : 17 : 0.07
+T: 0 0 : 16 : 22 : 0.06
+T: 0 0 : 16 : 24 : 0.01
+T: 0 0 : 16 : 25 : 0.02
+T: 0 0 : 16 : 26 : 0.01
+T: 0 0 : 16 : 40 : 0.06
+T: 0 0 : 16 : 42 : 0.01
+T: 0 0 : 16 : 43 : 0.02
+T: 0 0 : 16 : 44 : 0.01
+T: 0 1 : 16 : 4 : 0.01
+T: 0 1 : 16 : 6 : 0.01
+T: 0 1 : 16 : 7 : 0.07
+T: 0 1 : 16 : 8 : 0.01
+T: 0 1 : 16 : 13 : 0.07
+T: 0 1 : 16 : 15 : 0.07
+T: 0 1 : 16 : 16 : 0.49
+T: 0 1 : 16 : 17 : 0.07
+T: 0 1 : 16 : 22 : 0.01
+T: 0 1 : 16 : 24 : 0.01
+T: 0 1 : 16 : 25 : 0.07
+T: 0 1 : 16 : 26 : 0.01
+T: 0 1 : 16 : 40 : 0.01
+T: 0 1 : 16 : 42 : 0.01
+T: 0 1 : 16 : 43 : 0.07
+T: 0 1 : 16 : 44 : 0.01
+T: 0 2 : 16 : 4 : 0.01
+T: 0 2 : 16 : 6 : 0.06
+T: 0 2 : 16 : 7 : 0.02
+T: 0 2 : 16 : 8 : 0.01
+T: 0 2 : 16 : 13 : 0.07
+T: 0 2 : 16 : 15 : 0.42
+T: 0 2 : 16 : 16 : 0.14
+T: 0 2 : 16 : 17 : 0.07
+T: 0 2 : 16 : 22 : 0.01
+T: 0 2 : 16 : 24 : 0.06
+T: 0 2 : 16 : 25 : 0.02
+T: 0 2 : 16 : 26 : 0.01
+T: 0 2 : 16 : 40 : 0.01
+T: 0 2 : 16 : 42 : 0.06
+T: 0 2 : 16 : 43 : 0.02
+T: 0 2 : 16 : 44 : 0.01
+T: 0 3 : 16 : 4 : 0.01
+T: 0 3 : 16 : 6 : 0.01
+T: 0 3 : 16 : 7 : 0.02
+T: 0 3 : 16 : 8 : 0.06
+T: 0 3 : 16 : 13 : 0.07
+T: 0 3 : 16 : 15 : 0.07
+T: 0 3 : 16 : 16 : 0.14
+T: 0 3 : 16 : 17 : 0.42
+T: 0 3 : 16 : 22 : 0.01
+T: 0 3 : 16 : 24 : 0.01
+T: 0 3 : 16 : 25 : 0.02
+T: 0 3 : 16 : 26 : 0.06
+T: 0 3 : 16 : 40 : 0.01
+T: 0 3 : 16 : 42 : 0.01
+T: 0 3 : 16 : 43 : 0.02
+T: 0 3 : 16 : 44 : 0.06
+T: 0 4 : 16 : 7 : 0.1
+T: 0 4 : 16 : 16 : 0.7
+T: 0 4 : 16 : 25 : 0.1
+T: 0 4 : 16 : 43 : 0.1
+T: 1 0 : 16 : 4 : 0.06
+T: 1 0 : 16 : 6 : 0.01
+T: 1 0 : 16 : 7 : 0.02
+T: 1 0 : 16 : 8 : 0.01
+T: 1 0 : 16 : 13 : 0.12
+T: 1 0 : 16 : 15 : 0.02
+T: 1 0 : 16 : 16 : 0.040
+T: 1 0 : 16 : 17 : 0.02
+T: 1 0 : 16 : 22 : 0.06
+T: 1 0 : 16 : 24 : 0.01
+T: 1 0 : 16 : 25 : 0.02
+T: 1 0 : 16 : 26 : 0.01
+T: 1 0 : 16 : 40 : 0.36
+T: 1 0 : 16 : 42 : 0.06
+T: 1 0 : 16 : 43 : 0.12
+T: 1 0 : 16 : 44 : 0.06
+T: 1 1 : 16 : 4 : 0.01
+T: 1 1 : 16 : 6 : 0.01
+T: 1 1 : 16 : 7 : 0.07
+T: 1 1 : 16 : 8 : 0.01
+T: 1 1 : 16 : 13 : 0.02
+T: 1 1 : 16 : 15 : 0.02
+T: 1 1 : 16 : 16 : 0.14
+T: 1 1 : 16 : 17 : 0.02
+T: 1 1 : 16 : 22 : 0.01
+T: 1 1 : 16 : 24 : 0.01
+T: 1 1 : 16 : 25 : 0.07
+T: 1 1 : 16 : 26 : 0.01
+T: 1 1 : 16 : 40 : 0.06
+T: 1 1 : 16 : 42 : 0.06
+T: 1 1 : 16 : 43 : 0.42
+T: 1 1 : 16 : 44 : 0.06
+T: 1 2 : 16 : 4 : 0.01
+T: 1 2 : 16 : 6 : 0.06
+T: 1 2 : 16 : 7 : 0.02
+T: 1 2 : 16 : 8 : 0.01
+T: 1 2 : 16 : 13 : 0.02
+T: 1 2 : 16 : 15 : 0.12
+T: 1 2 : 16 : 16 : 0.040
+T: 1 2 : 16 : 17 : 0.02
+T: 1 2 : 16 : 22 : 0.01
+T: 1 2 : 16 : 24 : 0.06
+T: 1 2 : 16 : 25 : 0.02
+T: 1 2 : 16 : 26 : 0.01
+T: 1 2 : 16 : 40 : 0.06
+T: 1 2 : 16 : 42 : 0.36
+T: 1 2 : 16 : 43 : 0.12
+T: 1 2 : 16 : 44 : 0.06
+T: 1 3 : 16 : 4 : 0.01
+T: 1 3 : 16 : 6 : 0.01
+T: 1 3 : 16 : 7 : 0.02
+T: 1 3 : 16 : 8 : 0.06
+T: 1 3 : 16 : 13 : 0.02
+T: 1 3 : 16 : 15 : 0.02
+T: 1 3 : 16 : 16 : 0.040
+T: 1 3 : 16 : 17 : 0.12
+T: 1 3 : 16 : 22 : 0.01
+T: 1 3 : 16 : 24 : 0.01
+T: 1 3 : 16 : 25 : 0.02
+T: 1 3 : 16 : 26 : 0.06
+T: 1 3 : 16 : 40 : 0.06
+T: 1 3 : 16 : 42 : 0.06
+T: 1 3 : 16 : 43 : 0.12
+T: 1 3 : 16 : 44 : 0.36
+T: 1 4 : 16 : 7 : 0.1
+T: 1 4 : 16 : 16 : 0.2
+T: 1 4 : 16 : 25 : 0.1
+T: 1 4 : 16 : 43 : 0.6
+T: 2 0 : 16 : 4 : 0.36
+T: 2 0 : 16 : 6 : 0.06
+T: 2 0 : 16 : 7 : 0.12
+T: 2 0 : 16 : 8 : 0.06
+T: 2 0 : 16 : 13 : 0.12
+T: 2 0 : 16 : 15 : 0.02
+T: 2 0 : 16 : 16 : 0.040
+T: 2 0 : 16 : 17 : 0.02
+T: 2 0 : 16 : 22 : 0.06
+T: 2 0 : 16 : 24 : 0.01
+T: 2 0 : 16 : 25 : 0.02
+T: 2 0 : 16 : 26 : 0.01
+T: 2 0 : 16 : 40 : 0.06
+T: 2 0 : 16 : 42 : 0.01
+T: 2 0 : 16 : 43 : 0.02
+T: 2 0 : 16 : 44 : 0.01
+T: 2 1 : 16 : 4 : 0.06
+T: 2 1 : 16 : 6 : 0.06
+T: 2 1 : 16 : 7 : 0.42
+T: 2 1 : 16 : 8 : 0.06
+T: 2 1 : 16 : 13 : 0.02
+T: 2 1 : 16 : 15 : 0.02
+T: 2 1 : 16 : 16 : 0.14
+T: 2 1 : 16 : 17 : 0.02
+T: 2 1 : 16 : 22 : 0.01
+T: 2 1 : 16 : 24 : 0.01
+T: 2 1 : 16 : 25 : 0.07
+T: 2 1 : 16 : 26 : 0.01
+T: 2 1 : 16 : 40 : 0.01
+T: 2 1 : 16 : 42 : 0.01
+T: 2 1 : 16 : 43 : 0.07
+T: 2 1 : 16 : 44 : 0.01
+T: 2 2 : 16 : 4 : 0.06
+T: 2 2 : 16 : 6 : 0.36
+T: 2 2 : 16 : 7 : 0.12
+T: 2 2 : 16 : 8 : 0.06
+T: 2 2 : 16 : 13 : 0.02
+T: 2 2 : 16 : 15 : 0.12
+T: 2 2 : 16 : 16 : 0.040
+T: 2 2 : 16 : 17 : 0.02
+T: 2 2 : 16 : 22 : 0.01
+T: 2 2 : 16 : 24 : 0.06
+T: 2 2 : 16 : 25 : 0.02
+T: 2 2 : 16 : 26 : 0.01
+T: 2 2 : 16 : 40 : 0.01
+T: 2 2 : 16 : 42 : 0.06
+T: 2 2 : 16 : 43 : 0.02
+T: 2 2 : 16 : 44 : 0.01
+T: 2 3 : 16 : 4 : 0.06
+T: 2 3 : 16 : 6 : 0.06
+T: 2 3 : 16 : 7 : 0.12
+T: 2 3 : 16 : 8 : 0.36
+T: 2 3 : 16 : 13 : 0.02
+T: 2 3 : 16 : 15 : 0.02
+T: 2 3 : 16 : 16 : 0.040
+T: 2 3 : 16 : 17 : 0.12
+T: 2 3 : 16 : 22 : 0.01
+T: 2 3 : 16 : 24 : 0.01
+T: 2 3 : 16 : 25 : 0.02
+T: 2 3 : 16 : 26 : 0.06
+T: 2 3 : 16 : 40 : 0.01
+T: 2 3 : 16 : 42 : 0.01
+T: 2 3 : 16 : 43 : 0.02
+T: 2 3 : 16 : 44 : 0.06
+T: 2 4 : 16 : 7 : 0.6
+T: 2 4 : 16 : 16 : 0.2
+T: 2 4 : 16 : 25 : 0.1
+T: 2 4 : 16 : 43 : 0.1
+T: 3 0 : 16 : 4 : 0.06
+T: 3 0 : 16 : 6 : 0.01
+T: 3 0 : 16 : 7 : 0.02
+T: 3 0 : 16 : 8 : 0.01
+T: 3 0 : 16 : 13 : 0.12
+T: 3 0 : 16 : 15 : 0.02
+T: 3 0 : 16 : 16 : 0.040
+T: 3 0 : 16 : 17 : 0.02
+T: 3 0 : 16 : 22 : 0.36
+T: 3 0 : 16 : 24 : 0.06
+T: 3 0 : 16 : 25 : 0.12
+T: 3 0 : 16 : 26 : 0.06
+T: 3 0 : 16 : 40 : 0.06
+T: 3 0 : 16 : 42 : 0.01
+T: 3 0 : 16 : 43 : 0.02
+T: 3 0 : 16 : 44 : 0.01
+T: 3 1 : 16 : 4 : 0.01
+T: 3 1 : 16 : 6 : 0.01
+T: 3 1 : 16 : 7 : 0.07
+T: 3 1 : 16 : 8 : 0.01
+T: 3 1 : 16 : 13 : 0.02
+T: 3 1 : 16 : 15 : 0.02
+T: 3 1 : 16 : 16 : 0.14
+T: 3 1 : 16 : 17 : 0.02
+T: 3 1 : 16 : 22 : 0.06
+T: 3 1 : 16 : 24 : 0.06
+T: 3 1 : 16 : 25 : 0.42
+T: 3 1 : 16 : 26 : 0.06
+T: 3 1 : 16 : 40 : 0.01
+T: 3 1 : 16 : 42 : 0.01
+T: 3 1 : 16 : 43 : 0.07
+T: 3 1 : 16 : 44 : 0.01
+T: 3 2 : 16 : 4 : 0.01
+T: 3 2 : 16 : 6 : 0.06
+T: 3 2 : 16 : 7 : 0.02
+T: 3 2 : 16 : 8 : 0.01
+T: 3 2 : 16 : 13 : 0.02
+T: 3 2 : 16 : 15 : 0.12
+T: 3 2 : 16 : 16 : 0.040
+T: 3 2 : 16 : 17 : 0.02
+T: 3 2 : 16 : 22 : 0.06
+T: 3 2 : 16 : 24 : 0.36
+T: 3 2 : 16 : 25 : 0.12
+T: 3 2 : 16 : 26 : 0.06
+T: 3 2 : 16 : 40 : 0.01
+T: 3 2 : 16 : 42 : 0.06
+T: 3 2 : 16 : 43 : 0.02
+T: 3 2 : 16 : 44 : 0.01
+T: 3 3 : 16 : 4 : 0.01
+T: 3 3 : 16 : 6 : 0.01
+T: 3 3 : 16 : 7 : 0.02
+T: 3 3 : 16 : 8 : 0.06
+T: 3 3 : 16 : 13 : 0.02
+T: 3 3 : 16 : 15 : 0.02
+T: 3 3 : 16 : 16 : 0.040
+T: 3 3 : 16 : 17 : 0.12
+T: 3 3 : 16 : 22 : 0.06
+T: 3 3 : 16 : 24 : 0.06
+T: 3 3 : 16 : 25 : 0.12
+T: 3 3 : 16 : 26 : 0.36
+T: 3 3 : 16 : 40 : 0.01
+T: 3 3 : 16 : 42 : 0.01
+T: 3 3 : 16 : 43 : 0.02
+T: 3 3 : 16 : 44 : 0.06
+T: 3 4 : 16 : 7 : 0.1
+T: 3 4 : 16 : 16 : 0.2
+T: 3 4 : 16 : 25 : 0.6
+T: 3 4 : 16 : 43 : 0.1
+T: 4 0 : 16 : 13 : 0.6
+T: 4 0 : 16 : 15 : 0.1
+T: 4 0 : 16 : 16 : 0.2
+T: 4 0 : 16 : 17 : 0.1
+T: 4 1 : 16 : 13 : 0.1
+T: 4 1 : 16 : 15 : 0.1
+T: 4 1 : 16 : 16 : 0.7
+T: 4 1 : 16 : 17 : 0.1
+T: 4 2 : 16 : 13 : 0.1
+T: 4 2 : 16 : 15 : 0.6
+T: 4 2 : 16 : 16 : 0.2
+T: 4 2 : 16 : 17 : 0.1
+T: 4 3 : 16 : 13 : 0.1
+T: 4 3 : 16 : 15 : 0.1
+T: 4 3 : 16 : 16 : 0.2
+T: 4 3 : 16 : 17 : 0.6
+T: 4 4 : 16 : 16 : 1.0
+T: 0 0 : 17 : 5 : 0.06
+T: 0 0 : 17 : 7 : 0.01
+T: 0 0 : 17 : 8 : 0.03
+T: 0 0 : 17 : 14 : 0.42
+T: 0 0 : 17 : 16 : 0.07
+T: 0 0 : 17 : 17 : 0.21
+T: 0 0 : 17 : 23 : 0.06
+T: 0 0 : 17 : 25 : 0.01
+T: 0 0 : 17 : 26 : 0.03
+T: 0 0 : 17 : 41 : 0.06
+T: 0 0 : 17 : 43 : 0.01
+T: 0 0 : 17 : 44 : 0.03
+T: 0 1 : 17 : 5 : 0.01
+T: 0 1 : 17 : 7 : 0.01
+T: 0 1 : 17 : 8 : 0.08
+T: 0 1 : 17 : 14 : 0.07
+T: 0 1 : 17 : 16 : 0.07
+T: 0 1 : 17 : 17 : 0.56
+T: 0 1 : 17 : 23 : 0.01
+T: 0 1 : 17 : 25 : 0.01
+T: 0 1 : 17 : 26 : 0.08
+T: 0 1 : 17 : 41 : 0.01
+T: 0 1 : 17 : 43 : 0.01
+T: 0 1 : 17 : 44 : 0.08
+T: 0 2 : 17 : 5 : 0.01
+T: 0 2 : 17 : 7 : 0.06
+T: 0 2 : 17 : 8 : 0.03
+T: 0 2 : 17 : 14 : 0.07
+T: 0 2 : 17 : 16 : 0.42
+T: 0 2 : 17 : 17 : 0.21
+T: 0 2 : 17 : 23 : 0.01
+T: 0 2 : 17 : 25 : 0.06
+T: 0 2 : 17 : 26 : 0.03
+T: 0 2 : 17 : 41 : 0.01
+T: 0 2 : 17 : 43 : 0.06
+T: 0 2 : 17 : 44 : 0.03
+T: 0 3 : 17 : 5 : 0.01
+T: 0 3 : 17 : 7 : 0.01
+T: 0 3 : 17 : 8 : 0.08
+T: 0 3 : 17 : 14 : 0.07
+T: 0 3 : 17 : 16 : 0.07
+T: 0 3 : 17 : 17 : 0.56
+T: 0 3 : 17 : 23 : 0.01
+T: 0 3 : 17 : 25 : 0.01
+T: 0 3 : 17 : 26 : 0.08
+T: 0 3 : 17 : 41 : 0.01
+T: 0 3 : 17 : 43 : 0.01
+T: 0 3 : 17 : 44 : 0.08
+T: 0 4 : 17 : 8 : 0.1
+T: 0 4 : 17 : 17 : 0.7
+T: 0 4 : 17 : 26 : 0.1
+T: 0 4 : 17 : 44 : 0.1
+T: 1 0 : 17 : 5 : 0.06
+T: 1 0 : 17 : 7 : 0.01
+T: 1 0 : 17 : 8 : 0.03
+T: 1 0 : 17 : 14 : 0.12
+T: 1 0 : 17 : 16 : 0.02
+T: 1 0 : 17 : 17 : 0.060
+T: 1 0 : 17 : 23 : 0.06
+T: 1 0 : 17 : 25 : 0.01
+T: 1 0 : 17 : 26 : 0.03
+T: 1 0 : 17 : 41 : 0.36
+T: 1 0 : 17 : 43 : 0.06
+T: 1 0 : 17 : 44 : 0.18
+T: 1 1 : 17 : 5 : 0.01
+T: 1 1 : 17 : 7 : 0.01
+T: 1 1 : 17 : 8 : 0.08
+T: 1 1 : 17 : 14 : 0.02
+T: 1 1 : 17 : 16 : 0.02
+T: 1 1 : 17 : 17 : 0.16
+T: 1 1 : 17 : 23 : 0.01
+T: 1 1 : 17 : 25 : 0.01
+T: 1 1 : 17 : 26 : 0.08
+T: 1 1 : 17 : 41 : 0.06
+T: 1 1 : 17 : 43 : 0.06
+T: 1 1 : 17 : 44 : 0.48
+T: 1 2 : 17 : 5 : 0.01
+T: 1 2 : 17 : 7 : 0.06
+T: 1 2 : 17 : 8 : 0.03
+T: 1 2 : 17 : 14 : 0.02
+T: 1 2 : 17 : 16 : 0.12
+T: 1 2 : 17 : 17 : 0.060
+T: 1 2 : 17 : 23 : 0.01
+T: 1 2 : 17 : 25 : 0.06
+T: 1 2 : 17 : 26 : 0.03
+T: 1 2 : 17 : 41 : 0.06
+T: 1 2 : 17 : 43 : 0.36
+T: 1 2 : 17 : 44 : 0.18
+T: 1 3 : 17 : 5 : 0.01
+T: 1 3 : 17 : 7 : 0.01
+T: 1 3 : 17 : 8 : 0.08
+T: 1 3 : 17 : 14 : 0.02
+T: 1 3 : 17 : 16 : 0.02
+T: 1 3 : 17 : 17 : 0.16
+T: 1 3 : 17 : 23 : 0.01
+T: 1 3 : 17 : 25 : 0.01
+T: 1 3 : 17 : 26 : 0.08
+T: 1 3 : 17 : 41 : 0.06
+T: 1 3 : 17 : 43 : 0.06
+T: 1 3 : 17 : 44 : 0.48
+T: 1 4 : 17 : 8 : 0.1
+T: 1 4 : 17 : 17 : 0.2
+T: 1 4 : 17 : 26 : 0.1
+T: 1 4 : 17 : 44 : 0.6
+T: 2 0 : 17 : 5 : 0.36
+T: 2 0 : 17 : 7 : 0.06
+T: 2 0 : 17 : 8 : 0.18
+T: 2 0 : 17 : 14 : 0.12
+T: 2 0 : 17 : 16 : 0.02
+T: 2 0 : 17 : 17 : 0.060
+T: 2 0 : 17 : 23 : 0.06
+T: 2 0 : 17 : 25 : 0.01
+T: 2 0 : 17 : 26 : 0.03
+T: 2 0 : 17 : 41 : 0.06
+T: 2 0 : 17 : 43 : 0.01
+T: 2 0 : 17 : 44 : 0.03
+T: 2 1 : 17 : 5 : 0.06
+T: 2 1 : 17 : 7 : 0.06
+T: 2 1 : 17 : 8 : 0.48
+T: 2 1 : 17 : 14 : 0.02
+T: 2 1 : 17 : 16 : 0.02
+T: 2 1 : 17 : 17 : 0.16
+T: 2 1 : 17 : 23 : 0.01
+T: 2 1 : 17 : 25 : 0.01
+T: 2 1 : 17 : 26 : 0.08
+T: 2 1 : 17 : 41 : 0.01
+T: 2 1 : 17 : 43 : 0.01
+T: 2 1 : 17 : 44 : 0.08
+T: 2 2 : 17 : 5 : 0.06
+T: 2 2 : 17 : 7 : 0.36
+T: 2 2 : 17 : 8 : 0.18
+T: 2 2 : 17 : 14 : 0.02
+T: 2 2 : 17 : 16 : 0.12
+T: 2 2 : 17 : 17 : 0.060
+T: 2 2 : 17 : 23 : 0.01
+T: 2 2 : 17 : 25 : 0.06
+T: 2 2 : 17 : 26 : 0.03
+T: 2 2 : 17 : 41 : 0.01
+T: 2 2 : 17 : 43 : 0.06
+T: 2 2 : 17 : 44 : 0.03
+T: 2 3 : 17 : 5 : 0.06
+T: 2 3 : 17 : 7 : 0.06
+T: 2 3 : 17 : 8 : 0.48
+T: 2 3 : 17 : 14 : 0.02
+T: 2 3 : 17 : 16 : 0.02
+T: 2 3 : 17 : 17 : 0.16
+T: 2 3 : 17 : 23 : 0.01
+T: 2 3 : 17 : 25 : 0.01
+T: 2 3 : 17 : 26 : 0.08
+T: 2 3 : 17 : 41 : 0.01
+T: 2 3 : 17 : 43 : 0.01
+T: 2 3 : 17 : 44 : 0.08
+T: 2 4 : 17 : 8 : 0.6
+T: 2 4 : 17 : 17 : 0.2
+T: 2 4 : 17 : 26 : 0.1
+T: 2 4 : 17 : 44 : 0.1
+T: 3 0 : 17 : 5 : 0.06
+T: 3 0 : 17 : 7 : 0.01
+T: 3 0 : 17 : 8 : 0.03
+T: 3 0 : 17 : 14 : 0.12
+T: 3 0 : 17 : 16 : 0.02
+T: 3 0 : 17 : 17 : 0.060
+T: 3 0 : 17 : 23 : 0.36
+T: 3 0 : 17 : 25 : 0.06
+T: 3 0 : 17 : 26 : 0.18
+T: 3 0 : 17 : 41 : 0.06
+T: 3 0 : 17 : 43 : 0.01
+T: 3 0 : 17 : 44 : 0.03
+T: 3 1 : 17 : 5 : 0.01
+T: 3 1 : 17 : 7 : 0.01
+T: 3 1 : 17 : 8 : 0.08
+T: 3 1 : 17 : 14 : 0.02
+T: 3 1 : 17 : 16 : 0.02
+T: 3 1 : 17 : 17 : 0.16
+T: 3 1 : 17 : 23 : 0.06
+T: 3 1 : 17 : 25 : 0.06
+T: 3 1 : 17 : 26 : 0.48
+T: 3 1 : 17 : 41 : 0.01
+T: 3 1 : 17 : 43 : 0.01
+T: 3 1 : 17 : 44 : 0.08
+T: 3 2 : 17 : 5 : 0.01
+T: 3 2 : 17 : 7 : 0.06
+T: 3 2 : 17 : 8 : 0.03
+T: 3 2 : 17 : 14 : 0.02
+T: 3 2 : 17 : 16 : 0.12
+T: 3 2 : 17 : 17 : 0.060
+T: 3 2 : 17 : 23 : 0.06
+T: 3 2 : 17 : 25 : 0.36
+T: 3 2 : 17 : 26 : 0.18
+T: 3 2 : 17 : 41 : 0.01
+T: 3 2 : 17 : 43 : 0.06
+T: 3 2 : 17 : 44 : 0.03
+T: 3 3 : 17 : 5 : 0.01
+T: 3 3 : 17 : 7 : 0.01
+T: 3 3 : 17 : 8 : 0.08
+T: 3 3 : 17 : 14 : 0.02
+T: 3 3 : 17 : 16 : 0.02
+T: 3 3 : 17 : 17 : 0.16
+T: 3 3 : 17 : 23 : 0.06
+T: 3 3 : 17 : 25 : 0.06
+T: 3 3 : 17 : 26 : 0.48
+T: 3 3 : 17 : 41 : 0.01
+T: 3 3 : 17 : 43 : 0.01
+T: 3 3 : 17 : 44 : 0.08
+T: 3 4 : 17 : 8 : 0.1
+T: 3 4 : 17 : 17 : 0.2
+T: 3 4 : 17 : 26 : 0.6
+T: 3 4 : 17 : 44 : 0.1
+T: 4 0 : 17 : 14 : 0.6
+T: 4 0 : 17 : 16 : 0.1
+T: 4 0 : 17 : 17 : 0.3
+T: 4 1 : 17 : 14 : 0.1
+T: 4 1 : 17 : 16 : 0.1
+T: 4 1 : 17 : 17 : 0.8
+T: 4 2 : 17 : 14 : 0.1
+T: 4 2 : 17 : 16 : 0.6
+T: 4 2 : 17 : 17 : 0.3
+T: 4 3 : 17 : 14 : 0.1
+T: 4 3 : 17 : 16 : 0.1
+T: 4 3 : 17 : 17 : 0.8
+T: 4 4 : 17 : 17 : 1.0
+T: 0 0 : 18 : 9 : 0.08
+T: 0 0 : 18 : 10 : 0.01
+T: 0 0 : 18 : 12 : 0.01
+T: 0 0 : 18 : 18 : 0.64
+T: 0 0 : 18 : 19 : 0.08
+T: 0 0 : 18 : 21 : 0.08
+T: 0 0 : 18 : 45 : 0.08
+T: 0 0 : 18 : 46 : 0.01
+T: 0 0 : 18 : 48 : 0.01
+T: 0 1 : 18 : 9 : 0.03
+T: 0 1 : 18 : 10 : 0.01
+T: 0 1 : 18 : 12 : 0.06
+T: 0 1 : 18 : 18 : 0.24
+T: 0 1 : 18 : 19 : 0.08
+T: 0 1 : 18 : 21 : 0.48
+T: 0 1 : 18 : 45 : 0.03
+T: 0 1 : 18 : 46 : 0.01
+T: 0 1 : 18 : 48 : 0.06
+T: 0 2 : 18 : 9 : 0.08
+T: 0 2 : 18 : 10 : 0.01
+T: 0 2 : 18 : 12 : 0.01
+T: 0 2 : 18 : 18 : 0.64
+T: 0 2 : 18 : 19 : 0.08
+T: 0 2 : 18 : 21 : 0.08
+T: 0 2 : 18 : 45 : 0.08
+T: 0 2 : 18 : 46 : 0.01
+T: 0 2 : 18 : 48 : 0.01
+T: 0 3 : 18 : 9 : 0.03
+T: 0 3 : 18 : 10 : 0.06
+T: 0 3 : 18 : 12 : 0.01
+T: 0 3 : 18 : 18 : 0.24
+T: 0 3 : 18 : 19 : 0.48
+T: 0 3 : 18 : 21 : 0.08
+T: 0 3 : 18 : 45 : 0.03
+T: 0 3 : 18 : 46 : 0.06
+T: 0 3 : 18 : 48 : 0.01
+T: 0 4 : 18 : 9 : 0.1
+T: 0 4 : 18 : 18 : 0.8
+T: 0 4 : 18 : 45 : 0.1
+T: 1 0 : 18 : 9 : 0.08
+T: 1 0 : 18 : 10 : 0.01
+T: 1 0 : 18 : 12 : 0.01
+T: 1 0 : 18 : 18 : 0.24
+T: 1 0 : 18 : 19 : 0.03
+T: 1 0 : 18 : 21 : 0.03
+T: 1 0 : 18 : 45 : 0.48
+T: 1 0 : 18 : 46 : 0.06
+T: 1 0 : 18 : 48 : 0.06
+T: 1 1 : 18 : 9 : 0.03
+T: 1 1 : 18 : 10 : 0.01
+T: 1 1 : 18 : 12 : 0.06
+T: 1 1 : 18 : 18 : 0.09
+T: 1 1 : 18 : 19 : 0.03
+T: 1 1 : 18 : 21 : 0.18
+T: 1 1 : 18 : 45 : 0.18
+T: 1 1 : 18 : 46 : 0.06
+T: 1 1 : 18 : 48 : 0.36
+T: 1 2 : 18 : 9 : 0.08
+T: 1 2 : 18 : 10 : 0.01
+T: 1 2 : 18 : 12 : 0.01
+T: 1 2 : 18 : 18 : 0.24
+T: 1 2 : 18 : 19 : 0.03
+T: 1 2 : 18 : 21 : 0.03
+T: 1 2 : 18 : 45 : 0.48
+T: 1 2 : 18 : 46 : 0.06
+T: 1 2 : 18 : 48 : 0.06
+T: 1 3 : 18 : 9 : 0.03
+T: 1 3 : 18 : 10 : 0.06
+T: 1 3 : 18 : 12 : 0.01
+T: 1 3 : 18 : 18 : 0.09
+T: 1 3 : 18 : 19 : 0.18
+T: 1 3 : 18 : 21 : 0.03
+T: 1 3 : 18 : 45 : 0.18
+T: 1 3 : 18 : 46 : 0.36
+T: 1 3 : 18 : 48 : 0.06
+T: 1 4 : 18 : 9 : 0.1
+T: 1 4 : 18 : 18 : 0.3
+T: 1 4 : 18 : 45 : 0.6
+T: 2 0 : 18 : 9 : 0.48
+T: 2 0 : 18 : 10 : 0.06
+T: 2 0 : 18 : 12 : 0.06
+T: 2 0 : 18 : 18 : 0.24
+T: 2 0 : 18 : 19 : 0.03
+T: 2 0 : 18 : 21 : 0.03
+T: 2 0 : 18 : 45 : 0.08
+T: 2 0 : 18 : 46 : 0.01
+T: 2 0 : 18 : 48 : 0.01
+T: 2 1 : 18 : 9 : 0.18
+T: 2 1 : 18 : 10 : 0.06
+T: 2 1 : 18 : 12 : 0.36
+T: 2 1 : 18 : 18 : 0.09
+T: 2 1 : 18 : 19 : 0.03
+T: 2 1 : 18 : 21 : 0.18
+T: 2 1 : 18 : 45 : 0.03
+T: 2 1 : 18 : 46 : 0.01
+T: 2 1 : 18 : 48 : 0.06
+T: 2 2 : 18 : 9 : 0.48
+T: 2 2 : 18 : 10 : 0.06
+T: 2 2 : 18 : 12 : 0.06
+T: 2 2 : 18 : 18 : 0.24
+T: 2 2 : 18 : 19 : 0.03
+T: 2 2 : 18 : 21 : 0.03
+T: 2 2 : 18 : 45 : 0.08
+T: 2 2 : 18 : 46 : 0.01
+T: 2 2 : 18 : 48 : 0.01
+T: 2 3 : 18 : 9 : 0.18
+T: 2 3 : 18 : 10 : 0.36
+T: 2 3 : 18 : 12 : 0.06
+T: 2 3 : 18 : 18 : 0.09
+T: 2 3 : 18 : 19 : 0.18
+T: 2 3 : 18 : 21 : 0.03
+T: 2 3 : 18 : 45 : 0.03
+T: 2 3 : 18 : 46 : 0.06
+T: 2 3 : 18 : 48 : 0.01
+T: 2 4 : 18 : 9 : 0.6
+T: 2 4 : 18 : 18 : 0.3
+T: 2 4 : 18 : 45 : 0.1
+T: 3 0 : 18 : 9 : 0.08
+T: 3 0 : 18 : 10 : 0.01
+T: 3 0 : 18 : 12 : 0.01
+T: 3 0 : 18 : 18 : 0.64
+T: 3 0 : 18 : 19 : 0.08
+T: 3 0 : 18 : 21 : 0.08
+T: 3 0 : 18 : 45 : 0.08
+T: 3 0 : 18 : 46 : 0.01
+T: 3 0 : 18 : 48 : 0.01
+T: 3 1 : 18 : 9 : 0.03
+T: 3 1 : 18 : 10 : 0.01
+T: 3 1 : 18 : 12 : 0.06
+T: 3 1 : 18 : 18 : 0.24
+T: 3 1 : 18 : 19 : 0.08
+T: 3 1 : 18 : 21 : 0.48
+T: 3 1 : 18 : 45 : 0.03
+T: 3 1 : 18 : 46 : 0.01
+T: 3 1 : 18 : 48 : 0.06
+T: 3 2 : 18 : 9 : 0.08
+T: 3 2 : 18 : 10 : 0.01
+T: 3 2 : 18 : 12 : 0.01
+T: 3 2 : 18 : 18 : 0.64
+T: 3 2 : 18 : 19 : 0.08
+T: 3 2 : 18 : 21 : 0.08
+T: 3 2 : 18 : 45 : 0.08
+T: 3 2 : 18 : 46 : 0.01
+T: 3 2 : 18 : 48 : 0.01
+T: 3 3 : 18 : 9 : 0.03
+T: 3 3 : 18 : 10 : 0.06
+T: 3 3 : 18 : 12 : 0.01
+T: 3 3 : 18 : 18 : 0.24
+T: 3 3 : 18 : 19 : 0.48
+T: 3 3 : 18 : 21 : 0.08
+T: 3 3 : 18 : 45 : 0.03
+T: 3 3 : 18 : 46 : 0.06
+T: 3 3 : 18 : 48 : 0.01
+T: 3 4 : 18 : 9 : 0.1
+T: 3 4 : 18 : 18 : 0.8
+T: 3 4 : 18 : 45 : 0.1
+T: 4 0 : 18 : 18 : 0.8
+T: 4 0 : 18 : 19 : 0.1
+T: 4 0 : 18 : 21 : 0.1
+T: 4 1 : 18 : 18 : 0.3
+T: 4 1 : 18 : 19 : 0.1
+T: 4 1 : 18 : 21 : 0.6
+T: 4 2 : 18 : 18 : 0.8
+T: 4 2 : 18 : 19 : 0.1
+T: 4 2 : 18 : 21 : 0.1
+T: 4 3 : 18 : 18 : 0.3
+T: 4 3 : 18 : 19 : 0.6
+T: 4 3 : 18 : 21 : 0.1
+T: 4 4 : 18 : 18 : 1.0
+T: 0 0 : 19 : 9 : 0.01
+T: 0 0 : 19 : 10 : 0.07
+T: 0 0 : 19 : 11 : 0.01
+T: 0 0 : 19 : 13 : 0.01
+T: 0 0 : 19 : 18 : 0.08
+T: 0 0 : 19 : 19 : 0.56
+T: 0 0 : 19 : 20 : 0.08
+T: 0 0 : 19 : 22 : 0.08
+T: 0 0 : 19 : 45 : 0.01
+T: 0 0 : 19 : 46 : 0.07
+T: 0 0 : 19 : 47 : 0.01
+T: 0 0 : 19 : 49 : 0.01
+T: 0 1 : 19 : 9 : 0.01
+T: 0 1 : 19 : 10 : 0.02
+T: 0 1 : 19 : 11 : 0.01
+T: 0 1 : 19 : 13 : 0.06
+T: 0 1 : 19 : 18 : 0.08
+T: 0 1 : 19 : 19 : 0.16
+T: 0 1 : 19 : 20 : 0.08
+T: 0 1 : 19 : 22 : 0.48
+T: 0 1 : 19 : 45 : 0.01
+T: 0 1 : 19 : 46 : 0.02
+T: 0 1 : 19 : 47 : 0.01
+T: 0 1 : 19 : 49 : 0.06
+T: 0 2 : 19 : 9 : 0.06
+T: 0 2 : 19 : 10 : 0.02
+T: 0 2 : 19 : 11 : 0.01
+T: 0 2 : 19 : 13 : 0.01
+T: 0 2 : 19 : 18 : 0.48
+T: 0 2 : 19 : 19 : 0.16
+T: 0 2 : 19 : 20 : 0.08
+T: 0 2 : 19 : 22 : 0.08
+T: 0 2 : 19 : 45 : 0.06
+T: 0 2 : 19 : 46 : 0.02
+T: 0 2 : 19 : 47 : 0.01
+T: 0 2 : 19 : 49 : 0.01
+T: 0 3 : 19 : 9 : 0.01
+T: 0 3 : 19 : 10 : 0.02
+T: 0 3 : 19 : 11 : 0.06
+T: 0 3 : 19 : 13 : 0.01
+T: 0 3 : 19 : 18 : 0.08
+T: 0 3 : 19 : 19 : 0.16
+T: 0 3 : 19 : 20 : 0.48
+T: 0 3 : 19 : 22 : 0.08
+T: 0 3 : 19 : 45 : 0.01
+T: 0 3 : 19 : 46 : 0.02
+T: 0 3 : 19 : 47 : 0.06
+T: 0 3 : 19 : 49 : 0.01
+T: 0 4 : 19 : 10 : 0.1
+T: 0 4 : 19 : 19 : 0.8
+T: 0 4 : 19 : 46 : 0.1
+T: 1 0 : 19 : 9 : 0.01
+T: 1 0 : 19 : 10 : 0.07
+T: 1 0 : 19 : 11 : 0.01
+T: 1 0 : 19 : 13 : 0.01
+T: 1 0 : 19 : 18 : 0.03
+T: 1 0 : 19 : 19 : 0.21
+T: 1 0 : 19 : 20 : 0.03
+T: 1 0 : 19 : 22 : 0.03
+T: 1 0 : 19 : 45 : 0.06
+T: 1 0 : 19 : 46 : 0.42
+T: 1 0 : 19 : 47 : 0.06
+T: 1 0 : 19 : 49 : 0.06
+T: 1 1 : 19 : 9 : 0.01
+T: 1 1 : 19 : 10 : 0.02
+T: 1 1 : 19 : 11 : 0.01
+T: 1 1 : 19 : 13 : 0.06
+T: 1 1 : 19 : 18 : 0.03
+T: 1 1 : 19 : 19 : 0.060
+T: 1 1 : 19 : 20 : 0.03
+T: 1 1 : 19 : 22 : 0.18
+T: 1 1 : 19 : 45 : 0.06
+T: 1 1 : 19 : 46 : 0.12
+T: 1 1 : 19 : 47 : 0.06
+T: 1 1 : 19 : 49 : 0.36
+T: 1 2 : 19 : 9 : 0.06
+T: 1 2 : 19 : 10 : 0.02
+T: 1 2 : 19 : 11 : 0.01
+T: 1 2 : 19 : 13 : 0.01
+T: 1 2 : 19 : 18 : 0.18
+T: 1 2 : 19 : 19 : 0.060
+T: 1 2 : 19 : 20 : 0.03
+T: 1 2 : 19 : 22 : 0.03
+T: 1 2 : 19 : 45 : 0.36
+T: 1 2 : 19 : 46 : 0.12
+T: 1 2 : 19 : 47 : 0.06
+T: 1 2 : 19 : 49 : 0.06
+T: 1 3 : 19 : 9 : 0.01
+T: 1 3 : 19 : 10 : 0.02
+T: 1 3 : 19 : 11 : 0.06
+T: 1 3 : 19 : 13 : 0.01
+T: 1 3 : 19 : 18 : 0.03
+T: 1 3 : 19 : 19 : 0.060
+T: 1 3 : 19 : 20 : 0.18
+T: 1 3 : 19 : 22 : 0.03
+T: 1 3 : 19 : 45 : 0.06
+T: 1 3 : 19 : 46 : 0.12
+T: 1 3 : 19 : 47 : 0.36
+T: 1 3 : 19 : 49 : 0.06
+T: 1 4 : 19 : 10 : 0.1
+T: 1 4 : 19 : 19 : 0.3
+T: 1 4 : 19 : 46 : 0.6
+T: 2 0 : 19 : 9 : 0.06
+T: 2 0 : 19 : 10 : 0.42
+T: 2 0 : 19 : 11 : 0.06
+T: 2 0 : 19 : 13 : 0.06
+T: 2 0 : 19 : 18 : 0.03
+T: 2 0 : 19 : 19 : 0.21
+T: 2 0 : 19 : 20 : 0.03
+T: 2 0 : 19 : 22 : 0.03
+T: 2 0 : 19 : 45 : 0.01
+T: 2 0 : 19 : 46 : 0.07
+T: 2 0 : 19 : 47 : 0.01
+T: 2 0 : 19 : 49 : 0.01
+T: 2 1 : 19 : 9 : 0.06
+T: 2 1 : 19 : 10 : 0.12
+T: 2 1 : 19 : 11 : 0.06
+T: 2 1 : 19 : 13 : 0.36
+T: 2 1 : 19 : 18 : 0.03
+T: 2 1 : 19 : 19 : 0.060
+T: 2 1 : 19 : 20 : 0.03
+T: 2 1 : 19 : 22 : 0.18
+T: 2 1 : 19 : 45 : 0.01
+T: 2 1 : 19 : 46 : 0.02
+T: 2 1 : 19 : 47 : 0.01
+T: 2 1 : 19 : 49 : 0.06
+T: 2 2 : 19 : 9 : 0.36
+T: 2 2 : 19 : 10 : 0.12
+T: 2 2 : 19 : 11 : 0.06
+T: 2 2 : 19 : 13 : 0.06
+T: 2 2 : 19 : 18 : 0.18
+T: 2 2 : 19 : 19 : 0.060
+T: 2 2 : 19 : 20 : 0.03
+T: 2 2 : 19 : 22 : 0.03
+T: 2 2 : 19 : 45 : 0.06
+T: 2 2 : 19 : 46 : 0.02
+T: 2 2 : 19 : 47 : 0.01
+T: 2 2 : 19 : 49 : 0.01
+T: 2 3 : 19 : 9 : 0.06
+T: 2 3 : 19 : 10 : 0.12
+T: 2 3 : 19 : 11 : 0.36
+T: 2 3 : 19 : 13 : 0.06
+T: 2 3 : 19 : 18 : 0.03
+T: 2 3 : 19 : 19 : 0.060
+T: 2 3 : 19 : 20 : 0.18
+T: 2 3 : 19 : 22 : 0.03
+T: 2 3 : 19 : 45 : 0.01
+T: 2 3 : 19 : 46 : 0.02
+T: 2 3 : 19 : 47 : 0.06
+T: 2 3 : 19 : 49 : 0.01
+T: 2 4 : 19 : 10 : 0.6
+T: 2 4 : 19 : 19 : 0.3
+T: 2 4 : 19 : 46 : 0.1
+T: 3 0 : 19 : 9 : 0.01
+T: 3 0 : 19 : 10 : 0.07
+T: 3 0 : 19 : 11 : 0.01
+T: 3 0 : 19 : 13 : 0.01
+T: 3 0 : 19 : 18 : 0.08
+T: 3 0 : 19 : 19 : 0.56
+T: 3 0 : 19 : 20 : 0.08
+T: 3 0 : 19 : 22 : 0.08
+T: 3 0 : 19 : 45 : 0.01
+T: 3 0 : 19 : 46 : 0.07
+T: 3 0 : 19 : 47 : 0.01
+T: 3 0 : 19 : 49 : 0.01
+T: 3 1 : 19 : 9 : 0.01
+T: 3 1 : 19 : 10 : 0.02
+T: 3 1 : 19 : 11 : 0.01
+T: 3 1 : 19 : 13 : 0.06
+T: 3 1 : 19 : 18 : 0.08
+T: 3 1 : 19 : 19 : 0.16
+T: 3 1 : 19 : 20 : 0.08
+T: 3 1 : 19 : 22 : 0.48
+T: 3 1 : 19 : 45 : 0.01
+T: 3 1 : 19 : 46 : 0.02
+T: 3 1 : 19 : 47 : 0.01
+T: 3 1 : 19 : 49 : 0.06
+T: 3 2 : 19 : 9 : 0.06
+T: 3 2 : 19 : 10 : 0.02
+T: 3 2 : 19 : 11 : 0.01
+T: 3 2 : 19 : 13 : 0.01
+T: 3 2 : 19 : 18 : 0.48
+T: 3 2 : 19 : 19 : 0.16
+T: 3 2 : 19 : 20 : 0.08
+T: 3 2 : 19 : 22 : 0.08
+T: 3 2 : 19 : 45 : 0.06
+T: 3 2 : 19 : 46 : 0.02
+T: 3 2 : 19 : 47 : 0.01
+T: 3 2 : 19 : 49 : 0.01
+T: 3 3 : 19 : 9 : 0.01
+T: 3 3 : 19 : 10 : 0.02
+T: 3 3 : 19 : 11 : 0.06
+T: 3 3 : 19 : 13 : 0.01
+T: 3 3 : 19 : 18 : 0.08
+T: 3 3 : 19 : 19 : 0.16
+T: 3 3 : 19 : 20 : 0.48
+T: 3 3 : 19 : 22 : 0.08
+T: 3 3 : 19 : 45 : 0.01
+T: 3 3 : 19 : 46 : 0.02
+T: 3 3 : 19 : 47 : 0.06
+T: 3 3 : 19 : 49 : 0.01
+T: 3 4 : 19 : 10 : 0.1
+T: 3 4 : 19 : 19 : 0.8
+T: 3 4 : 19 : 46 : 0.1
+T: 4 0 : 19 : 18 : 0.1
+T: 4 0 : 19 : 19 : 0.7
+T: 4 0 : 19 : 20 : 0.1
+T: 4 0 : 19 : 22 : 0.1
+T: 4 1 : 19 : 18 : 0.1
+T: 4 1 : 19 : 19 : 0.2
+T: 4 1 : 19 : 20 : 0.1
+T: 4 1 : 19 : 22 : 0.6
+T: 4 2 : 19 : 18 : 0.6
+T: 4 2 : 19 : 19 : 0.2
+T: 4 2 : 19 : 20 : 0.1
+T: 4 2 : 19 : 22 : 0.1
+T: 4 3 : 19 : 18 : 0.1
+T: 4 3 : 19 : 19 : 0.2
+T: 4 3 : 19 : 20 : 0.6
+T: 4 3 : 19 : 22 : 0.1
+T: 4 4 : 19 : 19 : 1.0
+T: 0 0 : 20 : 10 : 0.01
+T: 0 0 : 20 : 11 : 0.08
+T: 0 0 : 20 : 14 : 0.01
+T: 0 0 : 20 : 19 : 0.08
+T: 0 0 : 20 : 20 : 0.64
+T: 0 0 : 20 : 23 : 0.08
+T: 0 0 : 20 : 46 : 0.01
+T: 0 0 : 20 : 47 : 0.08
+T: 0 0 : 20 : 50 : 0.01
+T: 0 1 : 20 : 10 : 0.01
+T: 0 1 : 20 : 11 : 0.03
+T: 0 1 : 20 : 14 : 0.06
+T: 0 1 : 20 : 19 : 0.08
+T: 0 1 : 20 : 20 : 0.24
+T: 0 1 : 20 : 23 : 0.48
+T: 0 1 : 20 : 46 : 0.01
+T: 0 1 : 20 : 47 : 0.03
+T: 0 1 : 20 : 50 : 0.06
+T: 0 2 : 20 : 10 : 0.06
+T: 0 2 : 20 : 11 : 0.03
+T: 0 2 : 20 : 14 : 0.01
+T: 0 2 : 20 : 19 : 0.48
+T: 0 2 : 20 : 20 : 0.24
+T: 0 2 : 20 : 23 : 0.08
+T: 0 2 : 20 : 46 : 0.06
+T: 0 2 : 20 : 47 : 0.03
+T: 0 2 : 20 : 50 : 0.01
+T: 0 3 : 20 : 10 : 0.01
+T: 0 3 : 20 : 11 : 0.08
+T: 0 3 : 20 : 14 : 0.01
+T: 0 3 : 20 : 19 : 0.08
+T: 0 3 : 20 : 20 : 0.64
+T: 0 3 : 20 : 23 : 0.08
+T: 0 3 : 20 : 46 : 0.01
+T: 0 3 : 20 : 47 : 0.08
+T: 0 3 : 20 : 50 : 0.01
+T: 0 4 : 20 : 11 : 0.1
+T: 0 4 : 20 : 20 : 0.8
+T: 0 4 : 20 : 47 : 0.1
+T: 1 0 : 20 : 10 : 0.01
+T: 1 0 : 20 : 11 : 0.08
+T: 1 0 : 20 : 14 : 0.01
+T: 1 0 : 20 : 19 : 0.03
+T: 1 0 : 20 : 20 : 0.24
+T: 1 0 : 20 : 23 : 0.03
+T: 1 0 : 20 : 46 : 0.06
+T: 1 0 : 20 : 47 : 0.48
+T: 1 0 : 20 : 50 : 0.06
+T: 1 1 : 20 : 10 : 0.01
+T: 1 1 : 20 : 11 : 0.03
+T: 1 1 : 20 : 14 : 0.06
+T: 1 1 : 20 : 19 : 0.03
+T: 1 1 : 20 : 20 : 0.09
+T: 1 1 : 20 : 23 : 0.18
+T: 1 1 : 20 : 46 : 0.06
+T: 1 1 : 20 : 47 : 0.18
+T: 1 1 : 20 : 50 : 0.36
+T: 1 2 : 20 : 10 : 0.06
+T: 1 2 : 20 : 11 : 0.03
+T: 1 2 : 20 : 14 : 0.01
+T: 1 2 : 20 : 19 : 0.18
+T: 1 2 : 20 : 20 : 0.09
+T: 1 2 : 20 : 23 : 0.03
+T: 1 2 : 20 : 46 : 0.36
+T: 1 2 : 20 : 47 : 0.18
+T: 1 2 : 20 : 50 : 0.06
+T: 1 3 : 20 : 10 : 0.01
+T: 1 3 : 20 : 11 : 0.08
+T: 1 3 : 20 : 14 : 0.01
+T: 1 3 : 20 : 19 : 0.03
+T: 1 3 : 20 : 20 : 0.24
+T: 1 3 : 20 : 23 : 0.03
+T: 1 3 : 20 : 46 : 0.06
+T: 1 3 : 20 : 47 : 0.48
+T: 1 3 : 20 : 50 : 0.06
+T: 1 4 : 20 : 11 : 0.1
+T: 1 4 : 20 : 20 : 0.3
+T: 1 4 : 20 : 47 : 0.6
+T: 2 0 : 20 : 10 : 0.06
+T: 2 0 : 20 : 11 : 0.48
+T: 2 0 : 20 : 14 : 0.06
+T: 2 0 : 20 : 19 : 0.03
+T: 2 0 : 20 : 20 : 0.24
+T: 2 0 : 20 : 23 : 0.03
+T: 2 0 : 20 : 46 : 0.01
+T: 2 0 : 20 : 47 : 0.08
+T: 2 0 : 20 : 50 : 0.01
+T: 2 1 : 20 : 10 : 0.06
+T: 2 1 : 20 : 11 : 0.18
+T: 2 1 : 20 : 14 : 0.36
+T: 2 1 : 20 : 19 : 0.03
+T: 2 1 : 20 : 20 : 0.09
+T: 2 1 : 20 : 23 : 0.18
+T: 2 1 : 20 : 46 : 0.01
+T: 2 1 : 20 : 47 : 0.03
+T: 2 1 : 20 : 50 : 0.06
+T: 2 2 : 20 : 10 : 0.36
+T: 2 2 : 20 : 11 : 0.18
+T: 2 2 : 20 : 14 : 0.06
+T: 2 2 : 20 : 19 : 0.18
+T: 2 2 : 20 : 20 : 0.09
+T: 2 2 : 20 : 23 : 0.03
+T: 2 2 : 20 : 46 : 0.06
+T: 2 2 : 20 : 47 : 0.03
+T: 2 2 : 20 : 50 : 0.01
+T: 2 3 : 20 : 10 : 0.06
+T: 2 3 : 20 : 11 : 0.48
+T: 2 3 : 20 : 14 : 0.06
+T: 2 3 : 20 : 19 : 0.03
+T: 2 3 : 20 : 20 : 0.24
+T: 2 3 : 20 : 23 : 0.03
+T: 2 3 : 20 : 46 : 0.01
+T: 2 3 : 20 : 47 : 0.08
+T: 2 3 : 20 : 50 : 0.01
+T: 2 4 : 20 : 11 : 0.6
+T: 2 4 : 20 : 20 : 0.3
+T: 2 4 : 20 : 47 : 0.1
+T: 3 0 : 20 : 10 : 0.01
+T: 3 0 : 20 : 11 : 0.08
+T: 3 0 : 20 : 14 : 0.01
+T: 3 0 : 20 : 19 : 0.08
+T: 3 0 : 20 : 20 : 0.64
+T: 3 0 : 20 : 23 : 0.08
+T: 3 0 : 20 : 46 : 0.01
+T: 3 0 : 20 : 47 : 0.08
+T: 3 0 : 20 : 50 : 0.01
+T: 3 1 : 20 : 10 : 0.01
+T: 3 1 : 20 : 11 : 0.03
+T: 3 1 : 20 : 14 : 0.06
+T: 3 1 : 20 : 19 : 0.08
+T: 3 1 : 20 : 20 : 0.24
+T: 3 1 : 20 : 23 : 0.48
+T: 3 1 : 20 : 46 : 0.01
+T: 3 1 : 20 : 47 : 0.03
+T: 3 1 : 20 : 50 : 0.06
+T: 3 2 : 20 : 10 : 0.06
+T: 3 2 : 20 : 11 : 0.03
+T: 3 2 : 20 : 14 : 0.01
+T: 3 2 : 20 : 19 : 0.48
+T: 3 2 : 20 : 20 : 0.24
+T: 3 2 : 20 : 23 : 0.08
+T: 3 2 : 20 : 46 : 0.06
+T: 3 2 : 20 : 47 : 0.03
+T: 3 2 : 20 : 50 : 0.01
+T: 3 3 : 20 : 10 : 0.01
+T: 3 3 : 20 : 11 : 0.08
+T: 3 3 : 20 : 14 : 0.01
+T: 3 3 : 20 : 19 : 0.08
+T: 3 3 : 20 : 20 : 0.64
+T: 3 3 : 20 : 23 : 0.08
+T: 3 3 : 20 : 46 : 0.01
+T: 3 3 : 20 : 47 : 0.08
+T: 3 3 : 20 : 50 : 0.01
+T: 3 4 : 20 : 11 : 0.1
+T: 3 4 : 20 : 20 : 0.8
+T: 3 4 : 20 : 47 : 0.1
+T: 4 0 : 20 : 19 : 0.1
+T: 4 0 : 20 : 20 : 0.8
+T: 4 0 : 20 : 23 : 0.1
+T: 4 1 : 20 : 19 : 0.1
+T: 4 1 : 20 : 20 : 0.3
+T: 4 1 : 20 : 23 : 0.6
+T: 4 2 : 20 : 19 : 0.6
+T: 4 2 : 20 : 20 : 0.3
+T: 4 2 : 20 : 23 : 0.1
+T: 4 3 : 20 : 19 : 0.1
+T: 4 3 : 20 : 20 : 0.8
+T: 4 3 : 20 : 23 : 0.1
+T: 4 4 : 20 : 20 : 1.0
+T: 0 0 : 21 : 9 : 0.06
+T: 0 0 : 21 : 12 : 0.02
+T: 0 0 : 21 : 13 : 0.01
+T: 0 0 : 21 : 15 : 0.01
+T: 0 0 : 21 : 18 : 0.48
+T: 0 0 : 21 : 21 : 0.16
+T: 0 0 : 21 : 22 : 0.08
+T: 0 0 : 21 : 24 : 0.08
+T: 0 0 : 21 : 45 : 0.06
+T: 0 0 : 21 : 48 : 0.02
+T: 0 0 : 21 : 49 : 0.01
+T: 0 0 : 21 : 51 : 0.01
+T: 0 1 : 21 : 9 : 0.01
+T: 0 1 : 21 : 12 : 0.02
+T: 0 1 : 21 : 13 : 0.01
+T: 0 1 : 21 : 15 : 0.06
+T: 0 1 : 21 : 18 : 0.08
+T: 0 1 : 21 : 21 : 0.16
+T: 0 1 : 21 : 22 : 0.08
+T: 0 1 : 21 : 24 : 0.48
+T: 0 1 : 21 : 45 : 0.01
+T: 0 1 : 21 : 48 : 0.02
+T: 0 1 : 21 : 49 : 0.01
+T: 0 1 : 21 : 51 : 0.06
+T: 0 2 : 21 : 9 : 0.01
+T: 0 2 : 21 : 12 : 0.07
+T: 0 2 : 21 : 13 : 0.01
+T: 0 2 : 21 : 15 : 0.01
+T: 0 2 : 21 : 18 : 0.08
+T: 0 2 : 21 : 21 : 0.56
+T: 0 2 : 21 : 22 : 0.08
+T: 0 2 : 21 : 24 : 0.08
+T: 0 2 : 21 : 45 : 0.01
+T: 0 2 : 21 : 48 : 0.07
+T: 0 2 : 21 : 49 : 0.01
+T: 0 2 : 21 : 51 : 0.01
+T: 0 3 : 21 : 9 : 0.01
+T: 0 3 : 21 : 12 : 0.02
+T: 0 3 : 21 : 13 : 0.06
+T: 0 3 : 21 : 15 : 0.01
+T: 0 3 : 21 : 18 : 0.08
+T: 0 3 : 21 : 21 : 0.16
+T: 0 3 : 21 : 22 : 0.48
+T: 0 3 : 21 : 24 : 0.08
+T: 0 3 : 21 : 45 : 0.01
+T: 0 3 : 21 : 48 : 0.02
+T: 0 3 : 21 : 49 : 0.06
+T: 0 3 : 21 : 51 : 0.01
+T: 0 4 : 21 : 12 : 0.1
+T: 0 4 : 21 : 21 : 0.8
+T: 0 4 : 21 : 48 : 0.1
+T: 1 0 : 21 : 9 : 0.06
+T: 1 0 : 21 : 12 : 0.02
+T: 1 0 : 21 : 13 : 0.01
+T: 1 0 : 21 : 15 : 0.01
+T: 1 0 : 21 : 18 : 0.18
+T: 1 0 : 21 : 21 : 0.060
+T: 1 0 : 21 : 22 : 0.03
+T: 1 0 : 21 : 24 : 0.03
+T: 1 0 : 21 : 45 : 0.36
+T: 1 0 : 21 : 48 : 0.12
+T: 1 0 : 21 : 49 : 0.06
+T: 1 0 : 21 : 51 : 0.06
+T: 1 1 : 21 : 9 : 0.01
+T: 1 1 : 21 : 12 : 0.02
+T: 1 1 : 21 : 13 : 0.01
+T: 1 1 : 21 : 15 : 0.06
+T: 1 1 : 21 : 18 : 0.03
+T: 1 1 : 21 : 21 : 0.060
+T: 1 1 : 21 : 22 : 0.03
+T: 1 1 : 21 : 24 : 0.18
+T: 1 1 : 21 : 45 : 0.06
+T: 1 1 : 21 : 48 : 0.12
+T: 1 1 : 21 : 49 : 0.06
+T: 1 1 : 21 : 51 : 0.36
+T: 1 2 : 21 : 9 : 0.01
+T: 1 2 : 21 : 12 : 0.07
+T: 1 2 : 21 : 13 : 0.01
+T: 1 2 : 21 : 15 : 0.01
+T: 1 2 : 21 : 18 : 0.03
+T: 1 2 : 21 : 21 : 0.21
+T: 1 2 : 21 : 22 : 0.03
+T: 1 2 : 21 : 24 : 0.03
+T: 1 2 : 21 : 45 : 0.06
+T: 1 2 : 21 : 48 : 0.42
+T: 1 2 : 21 : 49 : 0.06
+T: 1 2 : 21 : 51 : 0.06
+T: 1 3 : 21 : 9 : 0.01
+T: 1 3 : 21 : 12 : 0.02
+T: 1 3 : 21 : 13 : 0.06
+T: 1 3 : 21 : 15 : 0.01
+T: 1 3 : 21 : 18 : 0.03
+T: 1 3 : 21 : 21 : 0.060
+T: 1 3 : 21 : 22 : 0.18
+T: 1 3 : 21 : 24 : 0.03
+T: 1 3 : 21 : 45 : 0.06
+T: 1 3 : 21 : 48 : 0.12
+T: 1 3 : 21 : 49 : 0.36
+T: 1 3 : 21 : 51 : 0.06
+T: 1 4 : 21 : 12 : 0.1
+T: 1 4 : 21 : 21 : 0.3
+T: 1 4 : 21 : 48 : 0.6
+T: 2 0 : 21 : 9 : 0.36
+T: 2 0 : 21 : 12 : 0.12
+T: 2 0 : 21 : 13 : 0.06
+T: 2 0 : 21 : 15 : 0.06
+T: 2 0 : 21 : 18 : 0.18
+T: 2 0 : 21 : 21 : 0.060
+T: 2 0 : 21 : 22 : 0.03
+T: 2 0 : 21 : 24 : 0.03
+T: 2 0 : 21 : 45 : 0.06
+T: 2 0 : 21 : 48 : 0.02
+T: 2 0 : 21 : 49 : 0.01
+T: 2 0 : 21 : 51 : 0.01
+T: 2 1 : 21 : 9 : 0.06
+T: 2 1 : 21 : 12 : 0.12
+T: 2 1 : 21 : 13 : 0.06
+T: 2 1 : 21 : 15 : 0.36
+T: 2 1 : 21 : 18 : 0.03
+T: 2 1 : 21 : 21 : 0.060
+T: 2 1 : 21 : 22 : 0.03
+T: 2 1 : 21 : 24 : 0.18
+T: 2 1 : 21 : 45 : 0.01
+T: 2 1 : 21 : 48 : 0.02
+T: 2 1 : 21 : 49 : 0.01
+T: 2 1 : 21 : 51 : 0.06
+T: 2 2 : 21 : 9 : 0.06
+T: 2 2 : 21 : 12 : 0.42
+T: 2 2 : 21 : 13 : 0.06
+T: 2 2 : 21 : 15 : 0.06
+T: 2 2 : 21 : 18 : 0.03
+T: 2 2 : 21 : 21 : 0.21
+T: 2 2 : 21 : 22 : 0.03
+T: 2 2 : 21 : 24 : 0.03
+T: 2 2 : 21 : 45 : 0.01
+T: 2 2 : 21 : 48 : 0.07
+T: 2 2 : 21 : 49 : 0.01
+T: 2 2 : 21 : 51 : 0.01
+T: 2 3 : 21 : 9 : 0.06
+T: 2 3 : 21 : 12 : 0.12
+T: 2 3 : 21 : 13 : 0.36
+T: 2 3 : 21 : 15 : 0.06
+T: 2 3 : 21 : 18 : 0.03
+T: 2 3 : 21 : 21 : 0.060
+T: 2 3 : 21 : 22 : 0.18
+T: 2 3 : 21 : 24 : 0.03
+T: 2 3 : 21 : 45 : 0.01
+T: 2 3 : 21 : 48 : 0.02
+T: 2 3 : 21 : 49 : 0.06
+T: 2 3 : 21 : 51 : 0.01
+T: 2 4 : 21 : 12 : 0.6
+T: 2 4 : 21 : 21 : 0.3
+T: 2 4 : 21 : 48 : 0.1
+T: 3 0 : 21 : 9 : 0.06
+T: 3 0 : 21 : 12 : 0.02
+T: 3 0 : 21 : 13 : 0.01
+T: 3 0 : 21 : 15 : 0.01
+T: 3 0 : 21 : 18 : 0.48
+T: 3 0 : 21 : 21 : 0.16
+T: 3 0 : 21 : 22 : 0.08
+T: 3 0 : 21 : 24 : 0.08
+T: 3 0 : 21 : 45 : 0.06
+T: 3 0 : 21 : 48 : 0.02
+T: 3 0 : 21 : 49 : 0.01
+T: 3 0 : 21 : 51 : 0.01
+T: 3 1 : 21 : 9 : 0.01
+T: 3 1 : 21 : 12 : 0.02
+T: 3 1 : 21 : 13 : 0.01
+T: 3 1 : 21 : 15 : 0.06
+T: 3 1 : 21 : 18 : 0.08
+T: 3 1 : 21 : 21 : 0.16
+T: 3 1 : 21 : 22 : 0.08
+T: 3 1 : 21 : 24 : 0.48
+T: 3 1 : 21 : 45 : 0.01
+T: 3 1 : 21 : 48 : 0.02
+T: 3 1 : 21 : 49 : 0.01
+T: 3 1 : 21 : 51 : 0.06
+T: 3 2 : 21 : 9 : 0.01
+T: 3 2 : 21 : 12 : 0.07
+T: 3 2 : 21 : 13 : 0.01
+T: 3 2 : 21 : 15 : 0.01
+T: 3 2 : 21 : 18 : 0.08
+T: 3 2 : 21 : 21 : 0.56
+T: 3 2 : 21 : 22 : 0.08
+T: 3 2 : 21 : 24 : 0.08
+T: 3 2 : 21 : 45 : 0.01
+T: 3 2 : 21 : 48 : 0.07
+T: 3 2 : 21 : 49 : 0.01
+T: 3 2 : 21 : 51 : 0.01
+T: 3 3 : 21 : 9 : 0.01
+T: 3 3 : 21 : 12 : 0.02
+T: 3 3 : 21 : 13 : 0.06
+T: 3 3 : 21 : 15 : 0.01
+T: 3 3 : 21 : 18 : 0.08
+T: 3 3 : 21 : 21 : 0.16
+T: 3 3 : 21 : 22 : 0.48
+T: 3 3 : 21 : 24 : 0.08
+T: 3 3 : 21 : 45 : 0.01
+T: 3 3 : 21 : 48 : 0.02
+T: 3 3 : 21 : 49 : 0.06
+T: 3 3 : 21 : 51 : 0.01
+T: 3 4 : 21 : 12 : 0.1
+T: 3 4 : 21 : 21 : 0.8
+T: 3 4 : 21 : 48 : 0.1
+T: 4 0 : 21 : 18 : 0.6
+T: 4 0 : 21 : 21 : 0.2
+T: 4 0 : 21 : 22 : 0.1
+T: 4 0 : 21 : 24 : 0.1
+T: 4 1 : 21 : 18 : 0.1
+T: 4 1 : 21 : 21 : 0.2
+T: 4 1 : 21 : 22 : 0.1
+T: 4 1 : 21 : 24 : 0.6
+T: 4 2 : 21 : 18 : 0.1
+T: 4 2 : 21 : 21 : 0.7
+T: 4 2 : 21 : 22 : 0.1
+T: 4 2 : 21 : 24 : 0.1
+T: 4 3 : 21 : 18 : 0.1
+T: 4 3 : 21 : 21 : 0.2
+T: 4 3 : 21 : 22 : 0.6
+T: 4 3 : 21 : 24 : 0.1
+T: 4 4 : 21 : 21 : 1.0
+T: 0 0 : 22 : 10 : 0.06
+T: 0 0 : 22 : 12 : 0.01
+T: 0 0 : 22 : 13 : 0.01
+T: 0 0 : 22 : 14 : 0.01
+T: 0 0 : 22 : 16 : 0.01
+T: 0 0 : 22 : 19 : 0.48
+T: 0 0 : 22 : 21 : 0.08
+T: 0 0 : 22 : 22 : 0.08
+T: 0 0 : 22 : 23 : 0.08
+T: 0 0 : 22 : 25 : 0.08
+T: 0 0 : 22 : 46 : 0.06
+T: 0 0 : 22 : 48 : 0.01
+T: 0 0 : 22 : 49 : 0.01
+T: 0 0 : 22 : 50 : 0.01
+T: 0 0 : 22 : 52 : 0.01
+T: 0 1 : 22 : 10 : 0.01
+T: 0 1 : 22 : 12 : 0.01
+T: 0 1 : 22 : 13 : 0.01
+T: 0 1 : 22 : 14 : 0.01
+T: 0 1 : 22 : 16 : 0.06
+T: 0 1 : 22 : 19 : 0.08
+T: 0 1 : 22 : 21 : 0.08
+T: 0 1 : 22 : 22 : 0.08
+T: 0 1 : 22 : 23 : 0.08
+T: 0 1 : 22 : 25 : 0.48
+T: 0 1 : 22 : 46 : 0.01
+T: 0 1 : 22 : 48 : 0.01
+T: 0 1 : 22 : 49 : 0.01
+T: 0 1 : 22 : 50 : 0.01
+T: 0 1 : 22 : 52 : 0.06
+T: 0 2 : 22 : 10 : 0.01
+T: 0 2 : 22 : 12 : 0.06
+T: 0 2 : 22 : 13 : 0.01
+T: 0 2 : 22 : 14 : 0.01
+T: 0 2 : 22 : 16 : 0.01
+T: 0 2 : 22 : 19 : 0.08
+T: 0 2 : 22 : 21 : 0.48
+T: 0 2 : 22 : 22 : 0.08
+T: 0 2 : 22 : 23 : 0.08
+T: 0 2 : 22 : 25 : 0.08
+T: 0 2 : 22 : 46 : 0.01
+T: 0 2 : 22 : 48 : 0.06
+T: 0 2 : 22 : 49 : 0.01
+T: 0 2 : 22 : 50 : 0.01
+T: 0 2 : 22 : 52 : 0.01
+T: 0 3 : 22 : 10 : 0.01
+T: 0 3 : 22 : 12 : 0.01
+T: 0 3 : 22 : 13 : 0.01
+T: 0 3 : 22 : 14 : 0.06
+T: 0 3 : 22 : 16 : 0.01
+T: 0 3 : 22 : 19 : 0.08
+T: 0 3 : 22 : 21 : 0.08
+T: 0 3 : 22 : 22 : 0.08
+T: 0 3 : 22 : 23 : 0.48
+T: 0 3 : 22 : 25 : 0.08
+T: 0 3 : 22 : 46 : 0.01
+T: 0 3 : 22 : 48 : 0.01
+T: 0 3 : 22 : 49 : 0.01
+T: 0 3 : 22 : 50 : 0.06
+T: 0 3 : 22 : 52 : 0.01
+T: 0 4 : 22 : 13 : 0.1
+T: 0 4 : 22 : 22 : 0.8
+T: 0 4 : 22 : 49 : 0.1
+T: 1 0 : 22 : 10 : 0.06
+T: 1 0 : 22 : 12 : 0.01
+T: 1 0 : 22 : 13 : 0.01
+T: 1 0 : 22 : 14 : 0.01
+T: 1 0 : 22 : 16 : 0.01
+T: 1 0 : 22 : 19 : 0.18
+T: 1 0 : 22 : 21 : 0.03
+T: 1 0 : 22 : 22 : 0.03
+T: 1 0 : 22 : 23 : 0.03
+T: 1 0 : 22 : 25 : 0.03
+T: 1 0 : 22 : 46 : 0.36
+T: 1 0 : 22 : 48 : 0.06
+T: 1 0 : 22 : 49 : 0.06
+T: 1 0 : 22 : 50 : 0.06
+T: 1 0 : 22 : 52 : 0.06
+T: 1 1 : 22 : 10 : 0.01
+T: 1 1 : 22 : 12 : 0.01
+T: 1 1 : 22 : 13 : 0.01
+T: 1 1 : 22 : 14 : 0.01
+T: 1 1 : 22 : 16 : 0.06
+T: 1 1 : 22 : 19 : 0.03
+T: 1 1 : 22 : 21 : 0.03
+T: 1 1 : 22 : 22 : 0.03
+T: 1 1 : 22 : 23 : 0.03
+T: 1 1 : 22 : 25 : 0.18
+T: 1 1 : 22 : 46 : 0.06
+T: 1 1 : 22 : 48 : 0.06
+T: 1 1 : 22 : 49 : 0.06
+T: 1 1 : 22 : 50 : 0.06
+T: 1 1 : 22 : 52 : 0.36
+T: 1 2 : 22 : 10 : 0.01
+T: 1 2 : 22 : 12 : 0.06
+T: 1 2 : 22 : 13 : 0.01
+T: 1 2 : 22 : 14 : 0.01
+T: 1 2 : 22 : 16 : 0.01
+T: 1 2 : 22 : 19 : 0.03
+T: 1 2 : 22 : 21 : 0.18
+T: 1 2 : 22 : 22 : 0.03
+T: 1 2 : 22 : 23 : 0.03
+T: 1 2 : 22 : 25 : 0.03
+T: 1 2 : 22 : 46 : 0.06
+T: 1 2 : 22 : 48 : 0.36
+T: 1 2 : 22 : 49 : 0.06
+T: 1 2 : 22 : 50 : 0.06
+T: 1 2 : 22 : 52 : 0.06
+T: 1 3 : 22 : 10 : 0.01
+T: 1 3 : 22 : 12 : 0.01
+T: 1 3 : 22 : 13 : 0.01
+T: 1 3 : 22 : 14 : 0.06
+T: 1 3 : 22 : 16 : 0.01
+T: 1 3 : 22 : 19 : 0.03
+T: 1 3 : 22 : 21 : 0.03
+T: 1 3 : 22 : 22 : 0.03
+T: 1 3 : 22 : 23 : 0.18
+T: 1 3 : 22 : 25 : 0.03
+T: 1 3 : 22 : 46 : 0.06
+T: 1 3 : 22 : 48 : 0.06
+T: 1 3 : 22 : 49 : 0.06
+T: 1 3 : 22 : 50 : 0.36
+T: 1 3 : 22 : 52 : 0.06
+T: 1 4 : 22 : 13 : 0.1
+T: 1 4 : 22 : 22 : 0.3
+T: 1 4 : 22 : 49 : 0.6
+T: 2 0 : 22 : 10 : 0.36
+T: 2 0 : 22 : 12 : 0.06
+T: 2 0 : 22 : 13 : 0.06
+T: 2 0 : 22 : 14 : 0.06
+T: 2 0 : 22 : 16 : 0.06
+T: 2 0 : 22 : 19 : 0.18
+T: 2 0 : 22 : 21 : 0.03
+T: 2 0 : 22 : 22 : 0.03
+T: 2 0 : 22 : 23 : 0.03
+T: 2 0 : 22 : 25 : 0.03
+T: 2 0 : 22 : 46 : 0.06
+T: 2 0 : 22 : 48 : 0.01
+T: 2 0 : 22 : 49 : 0.01
+T: 2 0 : 22 : 50 : 0.01
+T: 2 0 : 22 : 52 : 0.01
+T: 2 1 : 22 : 10 : 0.06
+T: 2 1 : 22 : 12 : 0.06
+T: 2 1 : 22 : 13 : 0.06
+T: 2 1 : 22 : 14 : 0.06
+T: 2 1 : 22 : 16 : 0.36
+T: 2 1 : 22 : 19 : 0.03
+T: 2 1 : 22 : 21 : 0.03
+T: 2 1 : 22 : 22 : 0.03
+T: 2 1 : 22 : 23 : 0.03
+T: 2 1 : 22 : 25 : 0.18
+T: 2 1 : 22 : 46 : 0.01
+T: 2 1 : 22 : 48 : 0.01
+T: 2 1 : 22 : 49 : 0.01
+T: 2 1 : 22 : 50 : 0.01
+T: 2 1 : 22 : 52 : 0.06
+T: 2 2 : 22 : 10 : 0.06
+T: 2 2 : 22 : 12 : 0.36
+T: 2 2 : 22 : 13 : 0.06
+T: 2 2 : 22 : 14 : 0.06
+T: 2 2 : 22 : 16 : 0.06
+T: 2 2 : 22 : 19 : 0.03
+T: 2 2 : 22 : 21 : 0.18
+T: 2 2 : 22 : 22 : 0.03
+T: 2 2 : 22 : 23 : 0.03
+T: 2 2 : 22 : 25 : 0.03
+T: 2 2 : 22 : 46 : 0.01
+T: 2 2 : 22 : 48 : 0.06
+T: 2 2 : 22 : 49 : 0.01
+T: 2 2 : 22 : 50 : 0.01
+T: 2 2 : 22 : 52 : 0.01
+T: 2 3 : 22 : 10 : 0.06
+T: 2 3 : 22 : 12 : 0.06
+T: 2 3 : 22 : 13 : 0.06
+T: 2 3 : 22 : 14 : 0.36
+T: 2 3 : 22 : 16 : 0.06
+T: 2 3 : 22 : 19 : 0.03
+T: 2 3 : 22 : 21 : 0.03
+T: 2 3 : 22 : 22 : 0.03
+T: 2 3 : 22 : 23 : 0.18
+T: 2 3 : 22 : 25 : 0.03
+T: 2 3 : 22 : 46 : 0.01
+T: 2 3 : 22 : 48 : 0.01
+T: 2 3 : 22 : 49 : 0.01
+T: 2 3 : 22 : 50 : 0.06
+T: 2 3 : 22 : 52 : 0.01
+T: 2 4 : 22 : 13 : 0.6
+T: 2 4 : 22 : 22 : 0.3
+T: 2 4 : 22 : 49 : 0.1
+T: 3 0 : 22 : 10 : 0.06
+T: 3 0 : 22 : 12 : 0.01
+T: 3 0 : 22 : 13 : 0.01
+T: 3 0 : 22 : 14 : 0.01
+T: 3 0 : 22 : 16 : 0.01
+T: 3 0 : 22 : 19 : 0.48
+T: 3 0 : 22 : 21 : 0.08
+T: 3 0 : 22 : 22 : 0.08
+T: 3 0 : 22 : 23 : 0.08
+T: 3 0 : 22 : 25 : 0.08
+T: 3 0 : 22 : 46 : 0.06
+T: 3 0 : 22 : 48 : 0.01
+T: 3 0 : 22 : 49 : 0.01
+T: 3 0 : 22 : 50 : 0.01
+T: 3 0 : 22 : 52 : 0.01
+T: 3 1 : 22 : 10 : 0.01
+T: 3 1 : 22 : 12 : 0.01
+T: 3 1 : 22 : 13 : 0.01
+T: 3 1 : 22 : 14 : 0.01
+T: 3 1 : 22 : 16 : 0.06
+T: 3 1 : 22 : 19 : 0.08
+T: 3 1 : 22 : 21 : 0.08
+T: 3 1 : 22 : 22 : 0.08
+T: 3 1 : 22 : 23 : 0.08
+T: 3 1 : 22 : 25 : 0.48
+T: 3 1 : 22 : 46 : 0.01
+T: 3 1 : 22 : 48 : 0.01
+T: 3 1 : 22 : 49 : 0.01
+T: 3 1 : 22 : 50 : 0.01
+T: 3 1 : 22 : 52 : 0.06
+T: 3 2 : 22 : 10 : 0.01
+T: 3 2 : 22 : 12 : 0.06
+T: 3 2 : 22 : 13 : 0.01
+T: 3 2 : 22 : 14 : 0.01
+T: 3 2 : 22 : 16 : 0.01
+T: 3 2 : 22 : 19 : 0.08
+T: 3 2 : 22 : 21 : 0.48
+T: 3 2 : 22 : 22 : 0.08
+T: 3 2 : 22 : 23 : 0.08
+T: 3 2 : 22 : 25 : 0.08
+T: 3 2 : 22 : 46 : 0.01
+T: 3 2 : 22 : 48 : 0.06
+T: 3 2 : 22 : 49 : 0.01
+T: 3 2 : 22 : 50 : 0.01
+T: 3 2 : 22 : 52 : 0.01
+T: 3 3 : 22 : 10 : 0.01
+T: 3 3 : 22 : 12 : 0.01
+T: 3 3 : 22 : 13 : 0.01
+T: 3 3 : 22 : 14 : 0.06
+T: 3 3 : 22 : 16 : 0.01
+T: 3 3 : 22 : 19 : 0.08
+T: 3 3 : 22 : 21 : 0.08
+T: 3 3 : 22 : 22 : 0.08
+T: 3 3 : 22 : 23 : 0.48
+T: 3 3 : 22 : 25 : 0.08
+T: 3 3 : 22 : 46 : 0.01
+T: 3 3 : 22 : 48 : 0.01
+T: 3 3 : 22 : 49 : 0.01
+T: 3 3 : 22 : 50 : 0.06
+T: 3 3 : 22 : 52 : 0.01
+T: 3 4 : 22 : 13 : 0.1
+T: 3 4 : 22 : 22 : 0.8
+T: 3 4 : 22 : 49 : 0.1
+T: 4 0 : 22 : 19 : 0.6
+T: 4 0 : 22 : 21 : 0.1
+T: 4 0 : 22 : 22 : 0.1
+T: 4 0 : 22 : 23 : 0.1
+T: 4 0 : 22 : 25 : 0.1
+T: 4 1 : 22 : 19 : 0.1
+T: 4 1 : 22 : 21 : 0.1
+T: 4 1 : 22 : 22 : 0.1
+T: 4 1 : 22 : 23 : 0.1
+T: 4 1 : 22 : 25 : 0.6
+T: 4 2 : 22 : 19 : 0.1
+T: 4 2 : 22 : 21 : 0.6
+T: 4 2 : 22 : 22 : 0.1
+T: 4 2 : 22 : 23 : 0.1
+T: 4 2 : 22 : 25 : 0.1
+T: 4 3 : 22 : 19 : 0.1
+T: 4 3 : 22 : 21 : 0.1
+T: 4 3 : 22 : 22 : 0.1
+T: 4 3 : 22 : 23 : 0.6
+T: 4 3 : 22 : 25 : 0.1
+T: 4 4 : 22 : 22 : 1.0
+T: 0 0 : 23 : 11 : 0.06
+T: 0 0 : 23 : 13 : 0.01
+T: 0 0 : 23 : 14 : 0.02
+T: 0 0 : 23 : 17 : 0.01
+T: 0 0 : 23 : 20 : 0.48
+T: 0 0 : 23 : 22 : 0.08
+T: 0 0 : 23 : 23 : 0.16
+T: 0 0 : 23 : 26 : 0.08
+T: 0 0 : 23 : 47 : 0.06
+T: 0 0 : 23 : 49 : 0.01
+T: 0 0 : 23 : 50 : 0.02
+T: 0 0 : 23 : 53 : 0.01
+T: 0 1 : 23 : 11 : 0.01
+T: 0 1 : 23 : 13 : 0.01
+T: 0 1 : 23 : 14 : 0.02
+T: 0 1 : 23 : 17 : 0.06
+T: 0 1 : 23 : 20 : 0.08
+T: 0 1 : 23 : 22 : 0.08
+T: 0 1 : 23 : 23 : 0.16
+T: 0 1 : 23 : 26 : 0.48
+T: 0 1 : 23 : 47 : 0.01
+T: 0 1 : 23 : 49 : 0.01
+T: 0 1 : 23 : 50 : 0.02
+T: 0 1 : 23 : 53 : 0.06
+T: 0 2 : 23 : 11 : 0.01
+T: 0 2 : 23 : 13 : 0.06
+T: 0 2 : 23 : 14 : 0.02
+T: 0 2 : 23 : 17 : 0.01
+T: 0 2 : 23 : 20 : 0.08
+T: 0 2 : 23 : 22 : 0.48
+T: 0 2 : 23 : 23 : 0.16
+T: 0 2 : 23 : 26 : 0.08
+T: 0 2 : 23 : 47 : 0.01
+T: 0 2 : 23 : 49 : 0.06
+T: 0 2 : 23 : 50 : 0.02
+T: 0 2 : 23 : 53 : 0.01
+T: 0 3 : 23 : 11 : 0.01
+T: 0 3 : 23 : 13 : 0.01
+T: 0 3 : 23 : 14 : 0.07
+T: 0 3 : 23 : 17 : 0.01
+T: 0 3 : 23 : 20 : 0.08
+T: 0 3 : 23 : 22 : 0.08
+T: 0 3 : 23 : 23 : 0.56
+T: 0 3 : 23 : 26 : 0.08
+T: 0 3 : 23 : 47 : 0.01
+T: 0 3 : 23 : 49 : 0.01
+T: 0 3 : 23 : 50 : 0.07
+T: 0 3 : 23 : 53 : 0.01
+T: 0 4 : 23 : 14 : 0.1
+T: 0 4 : 23 : 23 : 0.8
+T: 0 4 : 23 : 50 : 0.1
+T: 1 0 : 23 : 11 : 0.06
+T: 1 0 : 23 : 13 : 0.01
+T: 1 0 : 23 : 14 : 0.02
+T: 1 0 : 23 : 17 : 0.01
+T: 1 0 : 23 : 20 : 0.18
+T: 1 0 : 23 : 22 : 0.03
+T: 1 0 : 23 : 23 : 0.060
+T: 1 0 : 23 : 26 : 0.03
+T: 1 0 : 23 : 47 : 0.36
+T: 1 0 : 23 : 49 : 0.06
+T: 1 0 : 23 : 50 : 0.12
+T: 1 0 : 23 : 53 : 0.06
+T: 1 1 : 23 : 11 : 0.01
+T: 1 1 : 23 : 13 : 0.01
+T: 1 1 : 23 : 14 : 0.02
+T: 1 1 : 23 : 17 : 0.06
+T: 1 1 : 23 : 20 : 0.03
+T: 1 1 : 23 : 22 : 0.03
+T: 1 1 : 23 : 23 : 0.060
+T: 1 1 : 23 : 26 : 0.18
+T: 1 1 : 23 : 47 : 0.06
+T: 1 1 : 23 : 49 : 0.06
+T: 1 1 : 23 : 50 : 0.12
+T: 1 1 : 23 : 53 : 0.36
+T: 1 2 : 23 : 11 : 0.01
+T: 1 2 : 23 : 13 : 0.06
+T: 1 2 : 23 : 14 : 0.02
+T: 1 2 : 23 : 17 : 0.01
+T: 1 2 : 23 : 20 : 0.03
+T: 1 2 : 23 : 22 : 0.18
+T: 1 2 : 23 : 23 : 0.060
+T: 1 2 : 23 : 26 : 0.03
+T: 1 2 : 23 : 47 : 0.06
+T: 1 2 : 23 : 49 : 0.36
+T: 1 2 : 23 : 50 : 0.12
+T: 1 2 : 23 : 53 : 0.06
+T: 1 3 : 23 : 11 : 0.01
+T: 1 3 : 23 : 13 : 0.01
+T: 1 3 : 23 : 14 : 0.07
+T: 1 3 : 23 : 17 : 0.01
+T: 1 3 : 23 : 20 : 0.03
+T: 1 3 : 23 : 22 : 0.03
+T: 1 3 : 23 : 23 : 0.21
+T: 1 3 : 23 : 26 : 0.03
+T: 1 3 : 23 : 47 : 0.06
+T: 1 3 : 23 : 49 : 0.06
+T: 1 3 : 23 : 50 : 0.42
+T: 1 3 : 23 : 53 : 0.06
+T: 1 4 : 23 : 14 : 0.1
+T: 1 4 : 23 : 23 : 0.3
+T: 1 4 : 23 : 50 : 0.6
+T: 2 0 : 23 : 11 : 0.36
+T: 2 0 : 23 : 13 : 0.06
+T: 2 0 : 23 : 14 : 0.12
+T: 2 0 : 23 : 17 : 0.06
+T: 2 0 : 23 : 20 : 0.18
+T: 2 0 : 23 : 22 : 0.03
+T: 2 0 : 23 : 23 : 0.060
+T: 2 0 : 23 : 26 : 0.03
+T: 2 0 : 23 : 47 : 0.06
+T: 2 0 : 23 : 49 : 0.01
+T: 2 0 : 23 : 50 : 0.02
+T: 2 0 : 23 : 53 : 0.01
+T: 2 1 : 23 : 11 : 0.06
+T: 2 1 : 23 : 13 : 0.06
+T: 2 1 : 23 : 14 : 0.12
+T: 2 1 : 23 : 17 : 0.36
+T: 2 1 : 23 : 20 : 0.03
+T: 2 1 : 23 : 22 : 0.03
+T: 2 1 : 23 : 23 : 0.060
+T: 2 1 : 23 : 26 : 0.18
+T: 2 1 : 23 : 47 : 0.01
+T: 2 1 : 23 : 49 : 0.01
+T: 2 1 : 23 : 50 : 0.02
+T: 2 1 : 23 : 53 : 0.06
+T: 2 2 : 23 : 11 : 0.06
+T: 2 2 : 23 : 13 : 0.36
+T: 2 2 : 23 : 14 : 0.12
+T: 2 2 : 23 : 17 : 0.06
+T: 2 2 : 23 : 20 : 0.03
+T: 2 2 : 23 : 22 : 0.18
+T: 2 2 : 23 : 23 : 0.060
+T: 2 2 : 23 : 26 : 0.03
+T: 2 2 : 23 : 47 : 0.01
+T: 2 2 : 23 : 49 : 0.06
+T: 2 2 : 23 : 50 : 0.02
+T: 2 2 : 23 : 53 : 0.01
+T: 2 3 : 23 : 11 : 0.06
+T: 2 3 : 23 : 13 : 0.06
+T: 2 3 : 23 : 14 : 0.42
+T: 2 3 : 23 : 17 : 0.06
+T: 2 3 : 23 : 20 : 0.03
+T: 2 3 : 23 : 22 : 0.03
+T: 2 3 : 23 : 23 : 0.21
+T: 2 3 : 23 : 26 : 0.03
+T: 2 3 : 23 : 47 : 0.01
+T: 2 3 : 23 : 49 : 0.01
+T: 2 3 : 23 : 50 : 0.07
+T: 2 3 : 23 : 53 : 0.01
+T: 2 4 : 23 : 14 : 0.6
+T: 2 4 : 23 : 23 : 0.3
+T: 2 4 : 23 : 50 : 0.1
+T: 3 0 : 23 : 11 : 0.06
+T: 3 0 : 23 : 13 : 0.01
+T: 3 0 : 23 : 14 : 0.02
+T: 3 0 : 23 : 17 : 0.01
+T: 3 0 : 23 : 20 : 0.48
+T: 3 0 : 23 : 22 : 0.08
+T: 3 0 : 23 : 23 : 0.16
+T: 3 0 : 23 : 26 : 0.08
+T: 3 0 : 23 : 47 : 0.06
+T: 3 0 : 23 : 49 : 0.01
+T: 3 0 : 23 : 50 : 0.02
+T: 3 0 : 23 : 53 : 0.01
+T: 3 1 : 23 : 11 : 0.01
+T: 3 1 : 23 : 13 : 0.01
+T: 3 1 : 23 : 14 : 0.02
+T: 3 1 : 23 : 17 : 0.06
+T: 3 1 : 23 : 20 : 0.08
+T: 3 1 : 23 : 22 : 0.08
+T: 3 1 : 23 : 23 : 0.16
+T: 3 1 : 23 : 26 : 0.48
+T: 3 1 : 23 : 47 : 0.01
+T: 3 1 : 23 : 49 : 0.01
+T: 3 1 : 23 : 50 : 0.02
+T: 3 1 : 23 : 53 : 0.06
+T: 3 2 : 23 : 11 : 0.01
+T: 3 2 : 23 : 13 : 0.06
+T: 3 2 : 23 : 14 : 0.02
+T: 3 2 : 23 : 17 : 0.01
+T: 3 2 : 23 : 20 : 0.08
+T: 3 2 : 23 : 22 : 0.48
+T: 3 2 : 23 : 23 : 0.16
+T: 3 2 : 23 : 26 : 0.08
+T: 3 2 : 23 : 47 : 0.01
+T: 3 2 : 23 : 49 : 0.06
+T: 3 2 : 23 : 50 : 0.02
+T: 3 2 : 23 : 53 : 0.01
+T: 3 3 : 23 : 11 : 0.01
+T: 3 3 : 23 : 13 : 0.01
+T: 3 3 : 23 : 14 : 0.07
+T: 3 3 : 23 : 17 : 0.01
+T: 3 3 : 23 : 20 : 0.08
+T: 3 3 : 23 : 22 : 0.08
+T: 3 3 : 23 : 23 : 0.56
+T: 3 3 : 23 : 26 : 0.08
+T: 3 3 : 23 : 47 : 0.01
+T: 3 3 : 23 : 49 : 0.01
+T: 3 3 : 23 : 50 : 0.07
+T: 3 3 : 23 : 53 : 0.01
+T: 3 4 : 23 : 14 : 0.1
+T: 3 4 : 23 : 23 : 0.8
+T: 3 4 : 23 : 50 : 0.1
+T: 4 0 : 23 : 20 : 0.6
+T: 4 0 : 23 : 22 : 0.1
+T: 4 0 : 23 : 23 : 0.2
+T: 4 0 : 23 : 26 : 0.1
+T: 4 1 : 23 : 20 : 0.1
+T: 4 1 : 23 : 22 : 0.1
+T: 4 1 : 23 : 23 : 0.2
+T: 4 1 : 23 : 26 : 0.6
+T: 4 2 : 23 : 20 : 0.1
+T: 4 2 : 23 : 22 : 0.6
+T: 4 2 : 23 : 23 : 0.2
+T: 4 2 : 23 : 26 : 0.1
+T: 4 3 : 23 : 20 : 0.1
+T: 4 3 : 23 : 22 : 0.1
+T: 4 3 : 23 : 23 : 0.7
+T: 4 3 : 23 : 26 : 0.1
+T: 4 4 : 23 : 23 : 1.0
+T: 0 0 : 24 : 12 : 0.06
+T: 0 0 : 24 : 15 : 0.03
+T: 0 0 : 24 : 16 : 0.01
+T: 0 0 : 24 : 21 : 0.48
+T: 0 0 : 24 : 24 : 0.24
+T: 0 0 : 24 : 25 : 0.08
+T: 0 0 : 24 : 48 : 0.06
+T: 0 0 : 24 : 51 : 0.03
+T: 0 0 : 24 : 52 : 0.01
+T: 0 1 : 24 : 12 : 0.01
+T: 0 1 : 24 : 15 : 0.08
+T: 0 1 : 24 : 16 : 0.01
+T: 0 1 : 24 : 21 : 0.08
+T: 0 1 : 24 : 24 : 0.64
+T: 0 1 : 24 : 25 : 0.08
+T: 0 1 : 24 : 48 : 0.01
+T: 0 1 : 24 : 51 : 0.08
+T: 0 1 : 24 : 52 : 0.01
+T: 0 2 : 24 : 12 : 0.01
+T: 0 2 : 24 : 15 : 0.08
+T: 0 2 : 24 : 16 : 0.01
+T: 0 2 : 24 : 21 : 0.08
+T: 0 2 : 24 : 24 : 0.64
+T: 0 2 : 24 : 25 : 0.08
+T: 0 2 : 24 : 48 : 0.01
+T: 0 2 : 24 : 51 : 0.08
+T: 0 2 : 24 : 52 : 0.01
+T: 0 3 : 24 : 12 : 0.01
+T: 0 3 : 24 : 15 : 0.03
+T: 0 3 : 24 : 16 : 0.06
+T: 0 3 : 24 : 21 : 0.08
+T: 0 3 : 24 : 24 : 0.24
+T: 0 3 : 24 : 25 : 0.48
+T: 0 3 : 24 : 48 : 0.01
+T: 0 3 : 24 : 51 : 0.03
+T: 0 3 : 24 : 52 : 0.06
+T: 0 4 : 24 : 15 : 0.1
+T: 0 4 : 24 : 24 : 0.8
+T: 0 4 : 24 : 51 : 0.1
+T: 1 0 : 24 : 12 : 0.06
+T: 1 0 : 24 : 15 : 0.03
+T: 1 0 : 24 : 16 : 0.01
+T: 1 0 : 24 : 21 : 0.18
+T: 1 0 : 24 : 24 : 0.09
+T: 1 0 : 24 : 25 : 0.03
+T: 1 0 : 24 : 48 : 0.36
+T: 1 0 : 24 : 51 : 0.18
+T: 1 0 : 24 : 52 : 0.06
+T: 1 1 : 24 : 12 : 0.01
+T: 1 1 : 24 : 15 : 0.08
+T: 1 1 : 24 : 16 : 0.01
+T: 1 1 : 24 : 21 : 0.03
+T: 1 1 : 24 : 24 : 0.24
+T: 1 1 : 24 : 25 : 0.03
+T: 1 1 : 24 : 48 : 0.06
+T: 1 1 : 24 : 51 : 0.48
+T: 1 1 : 24 : 52 : 0.06
+T: 1 2 : 24 : 12 : 0.01
+T: 1 2 : 24 : 15 : 0.08
+T: 1 2 : 24 : 16 : 0.01
+T: 1 2 : 24 : 21 : 0.03
+T: 1 2 : 24 : 24 : 0.24
+T: 1 2 : 24 : 25 : 0.03
+T: 1 2 : 24 : 48 : 0.06
+T: 1 2 : 24 : 51 : 0.48
+T: 1 2 : 24 : 52 : 0.06
+T: 1 3 : 24 : 12 : 0.01
+T: 1 3 : 24 : 15 : 0.03
+T: 1 3 : 24 : 16 : 0.06
+T: 1 3 : 24 : 21 : 0.03
+T: 1 3 : 24 : 24 : 0.09
+T: 1 3 : 24 : 25 : 0.18
+T: 1 3 : 24 : 48 : 0.06
+T: 1 3 : 24 : 51 : 0.18
+T: 1 3 : 24 : 52 : 0.36
+T: 1 4 : 24 : 15 : 0.1
+T: 1 4 : 24 : 24 : 0.3
+T: 1 4 : 24 : 51 : 0.6
+T: 2 0 : 24 : 12 : 0.36
+T: 2 0 : 24 : 15 : 0.18
+T: 2 0 : 24 : 16 : 0.06
+T: 2 0 : 24 : 21 : 0.18
+T: 2 0 : 24 : 24 : 0.09
+T: 2 0 : 24 : 25 : 0.03
+T: 2 0 : 24 : 48 : 0.06
+T: 2 0 : 24 : 51 : 0.03
+T: 2 0 : 24 : 52 : 0.01
+T: 2 1 : 24 : 12 : 0.06
+T: 2 1 : 24 : 15 : 0.48
+T: 2 1 : 24 : 16 : 0.06
+T: 2 1 : 24 : 21 : 0.03
+T: 2 1 : 24 : 24 : 0.24
+T: 2 1 : 24 : 25 : 0.03
+T: 2 1 : 24 : 48 : 0.01
+T: 2 1 : 24 : 51 : 0.08
+T: 2 1 : 24 : 52 : 0.01
+T: 2 2 : 24 : 12 : 0.06
+T: 2 2 : 24 : 15 : 0.48
+T: 2 2 : 24 : 16 : 0.06
+T: 2 2 : 24 : 21 : 0.03
+T: 2 2 : 24 : 24 : 0.24
+T: 2 2 : 24 : 25 : 0.03
+T: 2 2 : 24 : 48 : 0.01
+T: 2 2 : 24 : 51 : 0.08
+T: 2 2 : 24 : 52 : 0.01
+T: 2 3 : 24 : 12 : 0.06
+T: 2 3 : 24 : 15 : 0.18
+T: 2 3 : 24 : 16 : 0.36
+T: 2 3 : 24 : 21 : 0.03
+T: 2 3 : 24 : 24 : 0.09
+T: 2 3 : 24 : 25 : 0.18
+T: 2 3 : 24 : 48 : 0.01
+T: 2 3 : 24 : 51 : 0.03
+T: 2 3 : 24 : 52 : 0.06
+T: 2 4 : 24 : 15 : 0.6
+T: 2 4 : 24 : 24 : 0.3
+T: 2 4 : 24 : 51 : 0.1
+T: 3 0 : 24 : 12 : 0.06
+T: 3 0 : 24 : 15 : 0.03
+T: 3 0 : 24 : 16 : 0.01
+T: 3 0 : 24 : 21 : 0.48
+T: 3 0 : 24 : 24 : 0.24
+T: 3 0 : 24 : 25 : 0.08
+T: 3 0 : 24 : 48 : 0.06
+T: 3 0 : 24 : 51 : 0.03
+T: 3 0 : 24 : 52 : 0.01
+T: 3 1 : 24 : 12 : 0.01
+T: 3 1 : 24 : 15 : 0.08
+T: 3 1 : 24 : 16 : 0.01
+T: 3 1 : 24 : 21 : 0.08
+T: 3 1 : 24 : 24 : 0.64
+T: 3 1 : 24 : 25 : 0.08
+T: 3 1 : 24 : 48 : 0.01
+T: 3 1 : 24 : 51 : 0.08
+T: 3 1 : 24 : 52 : 0.01
+T: 3 2 : 24 : 12 : 0.01
+T: 3 2 : 24 : 15 : 0.08
+T: 3 2 : 24 : 16 : 0.01
+T: 3 2 : 24 : 21 : 0.08
+T: 3 2 : 24 : 24 : 0.64
+T: 3 2 : 24 : 25 : 0.08
+T: 3 2 : 24 : 48 : 0.01
+T: 3 2 : 24 : 51 : 0.08
+T: 3 2 : 24 : 52 : 0.01
+T: 3 3 : 24 : 12 : 0.01
+T: 3 3 : 24 : 15 : 0.03
+T: 3 3 : 24 : 16 : 0.06
+T: 3 3 : 24 : 21 : 0.08
+T: 3 3 : 24 : 24 : 0.24
+T: 3 3 : 24 : 25 : 0.48
+T: 3 3 : 24 : 48 : 0.01
+T: 3 3 : 24 : 51 : 0.03
+T: 3 3 : 24 : 52 : 0.06
+T: 3 4 : 24 : 15 : 0.1
+T: 3 4 : 24 : 24 : 0.8
+T: 3 4 : 24 : 51 : 0.1
+T: 4 0 : 24 : 21 : 0.6
+T: 4 0 : 24 : 24 : 0.3
+T: 4 0 : 24 : 25 : 0.1
+T: 4 1 : 24 : 21 : 0.1
+T: 4 1 : 24 : 24 : 0.8
+T: 4 1 : 24 : 25 : 0.1
+T: 4 2 : 24 : 21 : 0.1
+T: 4 2 : 24 : 24 : 0.8
+T: 4 2 : 24 : 25 : 0.1
+T: 4 3 : 24 : 21 : 0.1
+T: 4 3 : 24 : 24 : 0.3
+T: 4 3 : 24 : 25 : 0.6
+T: 4 4 : 24 : 24 : 1.0
+T: 0 0 : 25 : 13 : 0.06
+T: 0 0 : 25 : 15 : 0.01
+T: 0 0 : 25 : 16 : 0.02
+T: 0 0 : 25 : 17 : 0.01
+T: 0 0 : 25 : 22 : 0.48
+T: 0 0 : 25 : 24 : 0.08
+T: 0 0 : 25 : 25 : 0.16
+T: 0 0 : 25 : 26 : 0.08
+T: 0 0 : 25 : 49 : 0.06
+T: 0 0 : 25 : 51 : 0.01
+T: 0 0 : 25 : 52 : 0.02
+T: 0 0 : 25 : 53 : 0.01
+T: 0 1 : 25 : 13 : 0.01
+T: 0 1 : 25 : 15 : 0.01
+T: 0 1 : 25 : 16 : 0.07
+T: 0 1 : 25 : 17 : 0.01
+T: 0 1 : 25 : 22 : 0.08
+T: 0 1 : 25 : 24 : 0.08
+T: 0 1 : 25 : 25 : 0.56
+T: 0 1 : 25 : 26 : 0.08
+T: 0 1 : 25 : 49 : 0.01
+T: 0 1 : 25 : 51 : 0.01
+T: 0 1 : 25 : 52 : 0.07
+T: 0 1 : 25 : 53 : 0.01
+T: 0 2 : 25 : 13 : 0.01
+T: 0 2 : 25 : 15 : 0.06
+T: 0 2 : 25 : 16 : 0.02
+T: 0 2 : 25 : 17 : 0.01
+T: 0 2 : 25 : 22 : 0.08
+T: 0 2 : 25 : 24 : 0.48
+T: 0 2 : 25 : 25 : 0.16
+T: 0 2 : 25 : 26 : 0.08
+T: 0 2 : 25 : 49 : 0.01
+T: 0 2 : 25 : 51 : 0.06
+T: 0 2 : 25 : 52 : 0.02
+T: 0 2 : 25 : 53 : 0.01
+T: 0 3 : 25 : 13 : 0.01
+T: 0 3 : 25 : 15 : 0.01
+T: 0 3 : 25 : 16 : 0.02
+T: 0 3 : 25 : 17 : 0.06
+T: 0 3 : 25 : 22 : 0.08
+T: 0 3 : 25 : 24 : 0.08
+T: 0 3 : 25 : 25 : 0.16
+T: 0 3 : 25 : 26 : 0.48
+T: 0 3 : 25 : 49 : 0.01
+T: 0 3 : 25 : 51 : 0.01
+T: 0 3 : 25 : 52 : 0.02
+T: 0 3 : 25 : 53 : 0.06
+T: 0 4 : 25 : 16 : 0.1
+T: 0 4 : 25 : 25 : 0.8
+T: 0 4 : 25 : 52 : 0.1
+T: 1 0 : 25 : 13 : 0.06
+T: 1 0 : 25 : 15 : 0.01
+T: 1 0 : 25 : 16 : 0.02
+T: 1 0 : 25 : 17 : 0.01
+T: 1 0 : 25 : 22 : 0.18
+T: 1 0 : 25 : 24 : 0.03
+T: 1 0 : 25 : 25 : 0.060
+T: 1 0 : 25 : 26 : 0.03
+T: 1 0 : 25 : 49 : 0.36
+T: 1 0 : 25 : 51 : 0.06
+T: 1 0 : 25 : 52 : 0.12
+T: 1 0 : 25 : 53 : 0.06
+T: 1 1 : 25 : 13 : 0.01
+T: 1 1 : 25 : 15 : 0.01
+T: 1 1 : 25 : 16 : 0.07
+T: 1 1 : 25 : 17 : 0.01
+T: 1 1 : 25 : 22 : 0.03
+T: 1 1 : 25 : 24 : 0.03
+T: 1 1 : 25 : 25 : 0.21
+T: 1 1 : 25 : 26 : 0.03
+T: 1 1 : 25 : 49 : 0.06
+T: 1 1 : 25 : 51 : 0.06
+T: 1 1 : 25 : 52 : 0.42
+T: 1 1 : 25 : 53 : 0.06
+T: 1 2 : 25 : 13 : 0.01
+T: 1 2 : 25 : 15 : 0.06
+T: 1 2 : 25 : 16 : 0.02
+T: 1 2 : 25 : 17 : 0.01
+T: 1 2 : 25 : 22 : 0.03
+T: 1 2 : 25 : 24 : 0.18
+T: 1 2 : 25 : 25 : 0.060
+T: 1 2 : 25 : 26 : 0.03
+T: 1 2 : 25 : 49 : 0.06
+T: 1 2 : 25 : 51 : 0.36
+T: 1 2 : 25 : 52 : 0.12
+T: 1 2 : 25 : 53 : 0.06
+T: 1 3 : 25 : 13 : 0.01
+T: 1 3 : 25 : 15 : 0.01
+T: 1 3 : 25 : 16 : 0.02
+T: 1 3 : 25 : 17 : 0.06
+T: 1 3 : 25 : 22 : 0.03
+T: 1 3 : 25 : 24 : 0.03
+T: 1 3 : 25 : 25 : 0.060
+T: 1 3 : 25 : 26 : 0.18
+T: 1 3 : 25 : 49 : 0.06
+T: 1 3 : 25 : 51 : 0.06
+T: 1 3 : 25 : 52 : 0.12
+T: 1 3 : 25 : 53 : 0.36
+T: 1 4 : 25 : 16 : 0.1
+T: 1 4 : 25 : 25 : 0.3
+T: 1 4 : 25 : 52 : 0.6
+T: 2 0 : 25 : 13 : 0.36
+T: 2 0 : 25 : 15 : 0.06
+T: 2 0 : 25 : 16 : 0.12
+T: 2 0 : 25 : 17 : 0.06
+T: 2 0 : 25 : 22 : 0.18
+T: 2 0 : 25 : 24 : 0.03
+T: 2 0 : 25 : 25 : 0.060
+T: 2 0 : 25 : 26 : 0.03
+T: 2 0 : 25 : 49 : 0.06
+T: 2 0 : 25 : 51 : 0.01
+T: 2 0 : 25 : 52 : 0.02
+T: 2 0 : 25 : 53 : 0.01
+T: 2 1 : 25 : 13 : 0.06
+T: 2 1 : 25 : 15 : 0.06
+T: 2 1 : 25 : 16 : 0.42
+T: 2 1 : 25 : 17 : 0.06
+T: 2 1 : 25 : 22 : 0.03
+T: 2 1 : 25 : 24 : 0.03
+T: 2 1 : 25 : 25 : 0.21
+T: 2 1 : 25 : 26 : 0.03
+T: 2 1 : 25 : 49 : 0.01
+T: 2 1 : 25 : 51 : 0.01
+T: 2 1 : 25 : 52 : 0.07
+T: 2 1 : 25 : 53 : 0.01
+T: 2 2 : 25 : 13 : 0.06
+T: 2 2 : 25 : 15 : 0.36
+T: 2 2 : 25 : 16 : 0.12
+T: 2 2 : 25 : 17 : 0.06
+T: 2 2 : 25 : 22 : 0.03
+T: 2 2 : 25 : 24 : 0.18
+T: 2 2 : 25 : 25 : 0.060
+T: 2 2 : 25 : 26 : 0.03
+T: 2 2 : 25 : 49 : 0.01
+T: 2 2 : 25 : 51 : 0.06
+T: 2 2 : 25 : 52 : 0.02
+T: 2 2 : 25 : 53 : 0.01
+T: 2 3 : 25 : 13 : 0.06
+T: 2 3 : 25 : 15 : 0.06
+T: 2 3 : 25 : 16 : 0.12
+T: 2 3 : 25 : 17 : 0.36
+T: 2 3 : 25 : 22 : 0.03
+T: 2 3 : 25 : 24 : 0.03
+T: 2 3 : 25 : 25 : 0.060
+T: 2 3 : 25 : 26 : 0.18
+T: 2 3 : 25 : 49 : 0.01
+T: 2 3 : 25 : 51 : 0.01
+T: 2 3 : 25 : 52 : 0.02
+T: 2 3 : 25 : 53 : 0.06
+T: 2 4 : 25 : 16 : 0.6
+T: 2 4 : 25 : 25 : 0.3
+T: 2 4 : 25 : 52 : 0.1
+T: 3 0 : 25 : 13 : 0.06
+T: 3 0 : 25 : 15 : 0.01
+T: 3 0 : 25 : 16 : 0.02
+T: 3 0 : 25 : 17 : 0.01
+T: 3 0 : 25 : 22 : 0.48
+T: 3 0 : 25 : 24 : 0.08
+T: 3 0 : 25 : 25 : 0.16
+T: 3 0 : 25 : 26 : 0.08
+T: 3 0 : 25 : 49 : 0.06
+T: 3 0 : 25 : 51 : 0.01
+T: 3 0 : 25 : 52 : 0.02
+T: 3 0 : 25 : 53 : 0.01
+T: 3 1 : 25 : 13 : 0.01
+T: 3 1 : 25 : 15 : 0.01
+T: 3 1 : 25 : 16 : 0.07
+T: 3 1 : 25 : 17 : 0.01
+T: 3 1 : 25 : 22 : 0.08
+T: 3 1 : 25 : 24 : 0.08
+T: 3 1 : 25 : 25 : 0.56
+T: 3 1 : 25 : 26 : 0.08
+T: 3 1 : 25 : 49 : 0.01
+T: 3 1 : 25 : 51 : 0.01
+T: 3 1 : 25 : 52 : 0.07
+T: 3 1 : 25 : 53 : 0.01
+T: 3 2 : 25 : 13 : 0.01
+T: 3 2 : 25 : 15 : 0.06
+T: 3 2 : 25 : 16 : 0.02
+T: 3 2 : 25 : 17 : 0.01
+T: 3 2 : 25 : 22 : 0.08
+T: 3 2 : 25 : 24 : 0.48
+T: 3 2 : 25 : 25 : 0.16
+T: 3 2 : 25 : 26 : 0.08
+T: 3 2 : 25 : 49 : 0.01
+T: 3 2 : 25 : 51 : 0.06
+T: 3 2 : 25 : 52 : 0.02
+T: 3 2 : 25 : 53 : 0.01
+T: 3 3 : 25 : 13 : 0.01
+T: 3 3 : 25 : 15 : 0.01
+T: 3 3 : 25 : 16 : 0.02
+T: 3 3 : 25 : 17 : 0.06
+T: 3 3 : 25 : 22 : 0.08
+T: 3 3 : 25 : 24 : 0.08
+T: 3 3 : 25 : 25 : 0.16
+T: 3 3 : 25 : 26 : 0.48
+T: 3 3 : 25 : 49 : 0.01
+T: 3 3 : 25 : 51 : 0.01
+T: 3 3 : 25 : 52 : 0.02
+T: 3 3 : 25 : 53 : 0.06
+T: 3 4 : 25 : 16 : 0.1
+T: 3 4 : 25 : 25 : 0.8
+T: 3 4 : 25 : 52 : 0.1
+T: 4 0 : 25 : 22 : 0.6
+T: 4 0 : 25 : 24 : 0.1
+T: 4 0 : 25 : 25 : 0.2
+T: 4 0 : 25 : 26 : 0.1
+T: 4 1 : 25 : 22 : 0.1
+T: 4 1 : 25 : 24 : 0.1
+T: 4 1 : 25 : 25 : 0.7
+T: 4 1 : 25 : 26 : 0.1
+T: 4 2 : 25 : 22 : 0.1
+T: 4 2 : 25 : 24 : 0.6
+T: 4 2 : 25 : 25 : 0.2
+T: 4 2 : 25 : 26 : 0.1
+T: 4 3 : 25 : 22 : 0.1
+T: 4 3 : 25 : 24 : 0.1
+T: 4 3 : 25 : 25 : 0.2
+T: 4 3 : 25 : 26 : 0.6
+T: 4 4 : 25 : 25 : 1.0
+T: 0 0 : 26 : 14 : 0.06
+T: 0 0 : 26 : 16 : 0.01
+T: 0 0 : 26 : 17 : 0.03
+T: 0 0 : 26 : 23 : 0.48
+T: 0 0 : 26 : 25 : 0.08
+T: 0 0 : 26 : 26 : 0.24
+T: 0 0 : 26 : 50 : 0.06
+T: 0 0 : 26 : 52 : 0.01
+T: 0 0 : 26 : 53 : 0.03
+T: 0 1 : 26 : 14 : 0.01
+T: 0 1 : 26 : 16 : 0.01
+T: 0 1 : 26 : 17 : 0.08
+T: 0 1 : 26 : 23 : 0.08
+T: 0 1 : 26 : 25 : 0.08
+T: 0 1 : 26 : 26 : 0.64
+T: 0 1 : 26 : 50 : 0.01
+T: 0 1 : 26 : 52 : 0.01
+T: 0 1 : 26 : 53 : 0.08
+T: 0 2 : 26 : 14 : 0.01
+T: 0 2 : 26 : 16 : 0.06
+T: 0 2 : 26 : 17 : 0.03
+T: 0 2 : 26 : 23 : 0.08
+T: 0 2 : 26 : 25 : 0.48
+T: 0 2 : 26 : 26 : 0.24
+T: 0 2 : 26 : 50 : 0.01
+T: 0 2 : 26 : 52 : 0.06
+T: 0 2 : 26 : 53 : 0.03
+T: 0 3 : 26 : 14 : 0.01
+T: 0 3 : 26 : 16 : 0.01
+T: 0 3 : 26 : 17 : 0.08
+T: 0 3 : 26 : 23 : 0.08
+T: 0 3 : 26 : 25 : 0.08
+T: 0 3 : 26 : 26 : 0.64
+T: 0 3 : 26 : 50 : 0.01
+T: 0 3 : 26 : 52 : 0.01
+T: 0 3 : 26 : 53 : 0.08
+T: 0 4 : 26 : 17 : 0.1
+T: 0 4 : 26 : 26 : 0.8
+T: 0 4 : 26 : 53 : 0.1
+T: 1 0 : 26 : 14 : 0.06
+T: 1 0 : 26 : 16 : 0.01
+T: 1 0 : 26 : 17 : 0.03
+T: 1 0 : 26 : 23 : 0.18
+T: 1 0 : 26 : 25 : 0.03
+T: 1 0 : 26 : 26 : 0.09
+T: 1 0 : 26 : 50 : 0.36
+T: 1 0 : 26 : 52 : 0.06
+T: 1 0 : 26 : 53 : 0.18
+T: 1 1 : 26 : 14 : 0.01
+T: 1 1 : 26 : 16 : 0.01
+T: 1 1 : 26 : 17 : 0.08
+T: 1 1 : 26 : 23 : 0.03
+T: 1 1 : 26 : 25 : 0.03
+T: 1 1 : 26 : 26 : 0.24
+T: 1 1 : 26 : 50 : 0.06
+T: 1 1 : 26 : 52 : 0.06
+T: 1 1 : 26 : 53 : 0.48
+T: 1 2 : 26 : 14 : 0.01
+T: 1 2 : 26 : 16 : 0.06
+T: 1 2 : 26 : 17 : 0.03
+T: 1 2 : 26 : 23 : 0.03
+T: 1 2 : 26 : 25 : 0.18
+T: 1 2 : 26 : 26 : 0.09
+T: 1 2 : 26 : 50 : 0.06
+T: 1 2 : 26 : 52 : 0.36
+T: 1 2 : 26 : 53 : 0.18
+T: 1 3 : 26 : 14 : 0.01
+T: 1 3 : 26 : 16 : 0.01
+T: 1 3 : 26 : 17 : 0.08
+T: 1 3 : 26 : 23 : 0.03
+T: 1 3 : 26 : 25 : 0.03
+T: 1 3 : 26 : 26 : 0.24
+T: 1 3 : 26 : 50 : 0.06
+T: 1 3 : 26 : 52 : 0.06
+T: 1 3 : 26 : 53 : 0.48
+T: 1 4 : 26 : 17 : 0.1
+T: 1 4 : 26 : 26 : 0.3
+T: 1 4 : 26 : 53 : 0.6
+T: 2 0 : 26 : 14 : 0.36
+T: 2 0 : 26 : 16 : 0.06
+T: 2 0 : 26 : 17 : 0.18
+T: 2 0 : 26 : 23 : 0.18
+T: 2 0 : 26 : 25 : 0.03
+T: 2 0 : 26 : 26 : 0.09
+T: 2 0 : 26 : 50 : 0.06
+T: 2 0 : 26 : 52 : 0.01
+T: 2 0 : 26 : 53 : 0.03
+T: 2 1 : 26 : 14 : 0.06
+T: 2 1 : 26 : 16 : 0.06
+T: 2 1 : 26 : 17 : 0.48
+T: 2 1 : 26 : 23 : 0.03
+T: 2 1 : 26 : 25 : 0.03
+T: 2 1 : 26 : 26 : 0.24
+T: 2 1 : 26 : 50 : 0.01
+T: 2 1 : 26 : 52 : 0.01
+T: 2 1 : 26 : 53 : 0.08
+T: 2 2 : 26 : 14 : 0.06
+T: 2 2 : 26 : 16 : 0.36
+T: 2 2 : 26 : 17 : 0.18
+T: 2 2 : 26 : 23 : 0.03
+T: 2 2 : 26 : 25 : 0.18
+T: 2 2 : 26 : 26 : 0.09
+T: 2 2 : 26 : 50 : 0.01
+T: 2 2 : 26 : 52 : 0.06
+T: 2 2 : 26 : 53 : 0.03
+T: 2 3 : 26 : 14 : 0.06
+T: 2 3 : 26 : 16 : 0.06
+T: 2 3 : 26 : 17 : 0.48
+T: 2 3 : 26 : 23 : 0.03
+T: 2 3 : 26 : 25 : 0.03
+T: 2 3 : 26 : 26 : 0.24
+T: 2 3 : 26 : 50 : 0.01
+T: 2 3 : 26 : 52 : 0.01
+T: 2 3 : 26 : 53 : 0.08
+T: 2 4 : 26 : 17 : 0.6
+T: 2 4 : 26 : 26 : 0.3
+T: 2 4 : 26 : 53 : 0.1
+T: 3 0 : 26 : 14 : 0.06
+T: 3 0 : 26 : 16 : 0.01
+T: 3 0 : 26 : 17 : 0.03
+T: 3 0 : 26 : 23 : 0.48
+T: 3 0 : 26 : 25 : 0.08
+T: 3 0 : 26 : 26 : 0.24
+T: 3 0 : 26 : 50 : 0.06
+T: 3 0 : 26 : 52 : 0.01
+T: 3 0 : 26 : 53 : 0.03
+T: 3 1 : 26 : 14 : 0.01
+T: 3 1 : 26 : 16 : 0.01
+T: 3 1 : 26 : 17 : 0.08
+T: 3 1 : 26 : 23 : 0.08
+T: 3 1 : 26 : 25 : 0.08
+T: 3 1 : 26 : 26 : 0.64
+T: 3 1 : 26 : 50 : 0.01
+T: 3 1 : 26 : 52 : 0.01
+T: 3 1 : 26 : 53 : 0.08
+T: 3 2 : 26 : 14 : 0.01
+T: 3 2 : 26 : 16 : 0.06
+T: 3 2 : 26 : 17 : 0.03
+T: 3 2 : 26 : 23 : 0.08
+T: 3 2 : 26 : 25 : 0.48
+T: 3 2 : 26 : 26 : 0.24
+T: 3 2 : 26 : 50 : 0.01
+T: 3 2 : 26 : 52 : 0.06
+T: 3 2 : 26 : 53 : 0.03
+T: 3 3 : 26 : 14 : 0.01
+T: 3 3 : 26 : 16 : 0.01
+T: 3 3 : 26 : 17 : 0.08
+T: 3 3 : 26 : 23 : 0.08
+T: 3 3 : 26 : 25 : 0.08
+T: 3 3 : 26 : 26 : 0.64
+T: 3 3 : 26 : 50 : 0.01
+T: 3 3 : 26 : 52 : 0.01
+T: 3 3 : 26 : 53 : 0.08
+T: 3 4 : 26 : 17 : 0.1
+T: 3 4 : 26 : 26 : 0.8
+T: 3 4 : 26 : 53 : 0.1
+T: 4 0 : 26 : 23 : 0.6
+T: 4 0 : 26 : 25 : 0.1
+T: 4 0 : 26 : 26 : 0.3
+T: 4 1 : 26 : 23 : 0.1
+T: 4 1 : 26 : 25 : 0.1
+T: 4 1 : 26 : 26 : 0.8
+T: 4 2 : 26 : 23 : 0.1
+T: 4 2 : 26 : 25 : 0.6
+T: 4 2 : 26 : 26 : 0.3
+T: 4 3 : 26 : 23 : 0.1
+T: 4 3 : 26 : 25 : 0.1
+T: 4 3 : 26 : 26 : 0.8
+T: 4 4 : 26 : 26 : 1.0
+T: 0 0 : 27 : 0 : 0.48
+T: 0 0 : 27 : 1 : 0.06
+T: 0 0 : 27 : 3 : 0.06
+T: 0 0 : 27 : 27 : 0.16
+T: 0 0 : 27 : 28 : 0.02
+T: 0 0 : 27 : 30 : 0.02
+T: 0 0 : 27 : 36 : 0.08
+T: 0 0 : 27 : 37 : 0.01
+T: 0 0 : 27 : 39 : 0.01
+T: 0 0 : 27 : 54 : 0.08
+T: 0 0 : 27 : 55 : 0.01
+T: 0 0 : 27 : 57 : 0.01
+T: 0 1 : 27 : 0 : 0.18
+T: 0 1 : 27 : 1 : 0.06
+T: 0 1 : 27 : 3 : 0.36
+T: 0 1 : 27 : 27 : 0.060
+T: 0 1 : 27 : 28 : 0.02
+T: 0 1 : 27 : 30 : 0.12
+T: 0 1 : 27 : 36 : 0.03
+T: 0 1 : 27 : 37 : 0.01
+T: 0 1 : 27 : 39 : 0.06
+T: 0 1 : 27 : 54 : 0.03
+T: 0 1 : 27 : 55 : 0.01
+T: 0 1 : 27 : 57 : 0.06
+T: 0 2 : 27 : 0 : 0.48
+T: 0 2 : 27 : 1 : 0.06
+T: 0 2 : 27 : 3 : 0.06
+T: 0 2 : 27 : 27 : 0.16
+T: 0 2 : 27 : 28 : 0.02
+T: 0 2 : 27 : 30 : 0.02
+T: 0 2 : 27 : 36 : 0.08
+T: 0 2 : 27 : 37 : 0.01
+T: 0 2 : 27 : 39 : 0.01
+T: 0 2 : 27 : 54 : 0.08
+T: 0 2 : 27 : 55 : 0.01
+T: 0 2 : 27 : 57 : 0.01
+T: 0 3 : 27 : 0 : 0.18
+T: 0 3 : 27 : 1 : 0.36
+T: 0 3 : 27 : 3 : 0.06
+T: 0 3 : 27 : 27 : 0.060
+T: 0 3 : 27 : 28 : 0.12
+T: 0 3 : 27 : 30 : 0.02
+T: 0 3 : 27 : 36 : 0.03
+T: 0 3 : 27 : 37 : 0.06
+T: 0 3 : 27 : 39 : 0.01
+T: 0 3 : 27 : 54 : 0.03
+T: 0 3 : 27 : 55 : 0.06
+T: 0 3 : 27 : 57 : 0.01
+T: 0 4 : 27 : 0 : 0.6
+T: 0 4 : 27 : 27 : 0.2
+T: 0 4 : 27 : 36 : 0.1
+T: 0 4 : 27 : 54 : 0.1
+T: 1 0 : 27 : 0 : 0.08
+T: 1 0 : 27 : 1 : 0.01
+T: 1 0 : 27 : 3 : 0.01
+T: 1 0 : 27 : 27 : 0.16
+T: 1 0 : 27 : 28 : 0.02
+T: 1 0 : 27 : 30 : 0.02
+T: 1 0 : 27 : 36 : 0.08
+T: 1 0 : 27 : 37 : 0.01
+T: 1 0 : 27 : 39 : 0.01
+T: 1 0 : 27 : 54 : 0.48
+T: 1 0 : 27 : 55 : 0.06
+T: 1 0 : 27 : 57 : 0.06
+T: 1 1 : 27 : 0 : 0.03
+T: 1 1 : 27 : 1 : 0.01
+T: 1 1 : 27 : 3 : 0.06
+T: 1 1 : 27 : 27 : 0.060
+T: 1 1 : 27 : 28 : 0.02
+T: 1 1 : 27 : 30 : 0.12
+T: 1 1 : 27 : 36 : 0.03
+T: 1 1 : 27 : 37 : 0.01
+T: 1 1 : 27 : 39 : 0.06
+T: 1 1 : 27 : 54 : 0.18
+T: 1 1 : 27 : 55 : 0.06
+T: 1 1 : 27 : 57 : 0.36
+T: 1 2 : 27 : 0 : 0.08
+T: 1 2 : 27 : 1 : 0.01
+T: 1 2 : 27 : 3 : 0.01
+T: 1 2 : 27 : 27 : 0.16
+T: 1 2 : 27 : 28 : 0.02
+T: 1 2 : 27 : 30 : 0.02
+T: 1 2 : 27 : 36 : 0.08
+T: 1 2 : 27 : 37 : 0.01
+T: 1 2 : 27 : 39 : 0.01
+T: 1 2 : 27 : 54 : 0.48
+T: 1 2 : 27 : 55 : 0.06
+T: 1 2 : 27 : 57 : 0.06
+T: 1 3 : 27 : 0 : 0.03
+T: 1 3 : 27 : 1 : 0.06
+T: 1 3 : 27 : 3 : 0.01
+T: 1 3 : 27 : 27 : 0.060
+T: 1 3 : 27 : 28 : 0.12
+T: 1 3 : 27 : 30 : 0.02
+T: 1 3 : 27 : 36 : 0.03
+T: 1 3 : 27 : 37 : 0.06
+T: 1 3 : 27 : 39 : 0.01
+T: 1 3 : 27 : 54 : 0.18
+T: 1 3 : 27 : 55 : 0.36
+T: 1 3 : 27 : 57 : 0.06
+T: 1 4 : 27 : 0 : 0.1
+T: 1 4 : 27 : 27 : 0.2
+T: 1 4 : 27 : 36 : 0.1
+T: 1 4 : 27 : 54 : 0.6
+T: 2 0 : 27 : 0 : 0.08
+T: 2 0 : 27 : 1 : 0.01
+T: 2 0 : 27 : 3 : 0.01
+T: 2 0 : 27 : 27 : 0.56
+T: 2 0 : 27 : 28 : 0.07
+T: 2 0 : 27 : 30 : 0.07
+T: 2 0 : 27 : 36 : 0.08
+T: 2 0 : 27 : 37 : 0.01
+T: 2 0 : 27 : 39 : 0.01
+T: 2 0 : 27 : 54 : 0.08
+T: 2 0 : 27 : 55 : 0.01
+T: 2 0 : 27 : 57 : 0.01
+T: 2 1 : 27 : 0 : 0.03
+T: 2 1 : 27 : 1 : 0.01
+T: 2 1 : 27 : 3 : 0.06
+T: 2 1 : 27 : 27 : 0.21
+T: 2 1 : 27 : 28 : 0.07
+T: 2 1 : 27 : 30 : 0.42
+T: 2 1 : 27 : 36 : 0.03
+T: 2 1 : 27 : 37 : 0.01
+T: 2 1 : 27 : 39 : 0.06
+T: 2 1 : 27 : 54 : 0.03
+T: 2 1 : 27 : 55 : 0.01
+T: 2 1 : 27 : 57 : 0.06
+T: 2 2 : 27 : 0 : 0.08
+T: 2 2 : 27 : 1 : 0.01
+T: 2 2 : 27 : 3 : 0.01
+T: 2 2 : 27 : 27 : 0.56
+T: 2 2 : 27 : 28 : 0.07
+T: 2 2 : 27 : 30 : 0.07
+T: 2 2 : 27 : 36 : 0.08
+T: 2 2 : 27 : 37 : 0.01
+T: 2 2 : 27 : 39 : 0.01
+T: 2 2 : 27 : 54 : 0.08
+T: 2 2 : 27 : 55 : 0.01
+T: 2 2 : 27 : 57 : 0.01
+T: 2 3 : 27 : 0 : 0.03
+T: 2 3 : 27 : 1 : 0.06
+T: 2 3 : 27 : 3 : 0.01
+T: 2 3 : 27 : 27 : 0.21
+T: 2 3 : 27 : 28 : 0.42
+T: 2 3 : 27 : 30 : 0.07
+T: 2 3 : 27 : 36 : 0.03
+T: 2 3 : 27 : 37 : 0.06
+T: 2 3 : 27 : 39 : 0.01
+T: 2 3 : 27 : 54 : 0.03
+T: 2 3 : 27 : 55 : 0.06
+T: 2 3 : 27 : 57 : 0.01
+T: 2 4 : 27 : 0 : 0.1
+T: 2 4 : 27 : 27 : 0.7
+T: 2 4 : 27 : 36 : 0.1
+T: 2 4 : 27 : 54 : 0.1
+T: 3 0 : 27 : 0 : 0.08
+T: 3 0 : 27 : 1 : 0.01
+T: 3 0 : 27 : 3 : 0.01
+T: 3 0 : 27 : 27 : 0.16
+T: 3 0 : 27 : 28 : 0.02
+T: 3 0 : 27 : 30 : 0.02
+T: 3 0 : 27 : 36 : 0.48
+T: 3 0 : 27 : 37 : 0.06
+T: 3 0 : 27 : 39 : 0.06
+T: 3 0 : 27 : 54 : 0.08
+T: 3 0 : 27 : 55 : 0.01
+T: 3 0 : 27 : 57 : 0.01
+T: 3 1 : 27 : 0 : 0.03
+T: 3 1 : 27 : 1 : 0.01
+T: 3 1 : 27 : 3 : 0.06
+T: 3 1 : 27 : 27 : 0.060
+T: 3 1 : 27 : 28 : 0.02
+T: 3 1 : 27 : 30 : 0.12
+T: 3 1 : 27 : 36 : 0.18
+T: 3 1 : 27 : 37 : 0.06
+T: 3 1 : 27 : 39 : 0.36
+T: 3 1 : 27 : 54 : 0.03
+T: 3 1 : 27 : 55 : 0.01
+T: 3 1 : 27 : 57 : 0.06
+T: 3 2 : 27 : 0 : 0.08
+T: 3 2 : 27 : 1 : 0.01
+T: 3 2 : 27 : 3 : 0.01
+T: 3 2 : 27 : 27 : 0.16
+T: 3 2 : 27 : 28 : 0.02
+T: 3 2 : 27 : 30 : 0.02
+T: 3 2 : 27 : 36 : 0.48
+T: 3 2 : 27 : 37 : 0.06
+T: 3 2 : 27 : 39 : 0.06
+T: 3 2 : 27 : 54 : 0.08
+T: 3 2 : 27 : 55 : 0.01
+T: 3 2 : 27 : 57 : 0.01
+T: 3 3 : 27 : 0 : 0.03
+T: 3 3 : 27 : 1 : 0.06
+T: 3 3 : 27 : 3 : 0.01
+T: 3 3 : 27 : 27 : 0.060
+T: 3 3 : 27 : 28 : 0.12
+T: 3 3 : 27 : 30 : 0.02
+T: 3 3 : 27 : 36 : 0.18
+T: 3 3 : 27 : 37 : 0.36
+T: 3 3 : 27 : 39 : 0.06
+T: 3 3 : 27 : 54 : 0.03
+T: 3 3 : 27 : 55 : 0.06
+T: 3 3 : 27 : 57 : 0.01
+T: 3 4 : 27 : 0 : 0.1
+T: 3 4 : 27 : 27 : 0.2
+T: 3 4 : 27 : 36 : 0.6
+T: 3 4 : 27 : 54 : 0.1
+T: 4 0 : 27 : 27 : 0.8
+T: 4 0 : 27 : 28 : 0.1
+T: 4 0 : 27 : 30 : 0.1
+T: 4 1 : 27 : 27 : 0.3
+T: 4 1 : 27 : 28 : 0.1
+T: 4 1 : 27 : 30 : 0.6
+T: 4 2 : 27 : 27 : 0.8
+T: 4 2 : 27 : 28 : 0.1
+T: 4 2 : 27 : 30 : 0.1
+T: 4 3 : 27 : 27 : 0.3
+T: 4 3 : 27 : 28 : 0.6
+T: 4 3 : 27 : 30 : 0.1
+T: 4 4 : 27 : 27 : 1.0
+T: 0 0 : 28 : 0 : 0.06
+T: 0 0 : 28 : 1 : 0.42
+T: 0 0 : 28 : 2 : 0.06
+T: 0 0 : 28 : 4 : 0.06
+T: 0 0 : 28 : 27 : 0.02
+T: 0 0 : 28 : 28 : 0.14
+T: 0 0 : 28 : 29 : 0.02
+T: 0 0 : 28 : 31 : 0.02
+T: 0 0 : 28 : 36 : 0.01
+T: 0 0 : 28 : 37 : 0.07
+T: 0 0 : 28 : 38 : 0.01
+T: 0 0 : 28 : 40 : 0.01
+T: 0 0 : 28 : 54 : 0.01
+T: 0 0 : 28 : 55 : 0.07
+T: 0 0 : 28 : 56 : 0.01
+T: 0 0 : 28 : 58 : 0.01
+T: 0 1 : 28 : 0 : 0.06
+T: 0 1 : 28 : 1 : 0.12
+T: 0 1 : 28 : 2 : 0.06
+T: 0 1 : 28 : 4 : 0.36
+T: 0 1 : 28 : 27 : 0.02
+T: 0 1 : 28 : 28 : 0.040
+T: 0 1 : 28 : 29 : 0.02
+T: 0 1 : 28 : 31 : 0.12
+T: 0 1 : 28 : 36 : 0.01
+T: 0 1 : 28 : 37 : 0.02
+T: 0 1 : 28 : 38 : 0.01
+T: 0 1 : 28 : 40 : 0.06
+T: 0 1 : 28 : 54 : 0.01
+T: 0 1 : 28 : 55 : 0.02
+T: 0 1 : 28 : 56 : 0.01
+T: 0 1 : 28 : 58 : 0.06
+T: 0 2 : 28 : 0 : 0.36
+T: 0 2 : 28 : 1 : 0.12
+T: 0 2 : 28 : 2 : 0.06
+T: 0 2 : 28 : 4 : 0.06
+T: 0 2 : 28 : 27 : 0.12
+T: 0 2 : 28 : 28 : 0.040
+T: 0 2 : 28 : 29 : 0.02
+T: 0 2 : 28 : 31 : 0.02
+T: 0 2 : 28 : 36 : 0.06
+T: 0 2 : 28 : 37 : 0.02
+T: 0 2 : 28 : 38 : 0.01
+T: 0 2 : 28 : 40 : 0.01
+T: 0 2 : 28 : 54 : 0.06
+T: 0 2 : 28 : 55 : 0.02
+T: 0 2 : 28 : 56 : 0.01
+T: 0 2 : 28 : 58 : 0.01
+T: 0 3 : 28 : 0 : 0.06
+T: 0 3 : 28 : 1 : 0.12
+T: 0 3 : 28 : 2 : 0.36
+T: 0 3 : 28 : 4 : 0.06
+T: 0 3 : 28 : 27 : 0.02
+T: 0 3 : 28 : 28 : 0.040
+T: 0 3 : 28 : 29 : 0.12
+T: 0 3 : 28 : 31 : 0.02
+T: 0 3 : 28 : 36 : 0.01
+T: 0 3 : 28 : 37 : 0.02
+T: 0 3 : 28 : 38 : 0.06
+T: 0 3 : 28 : 40 : 0.01
+T: 0 3 : 28 : 54 : 0.01
+T: 0 3 : 28 : 55 : 0.02
+T: 0 3 : 28 : 56 : 0.06
+T: 0 3 : 28 : 58 : 0.01
+T: 0 4 : 28 : 1 : 0.6
+T: 0 4 : 28 : 28 : 0.2
+T: 0 4 : 28 : 37 : 0.1
+T: 0 4 : 28 : 55 : 0.1
+T: 1 0 : 28 : 0 : 0.01
+T: 1 0 : 28 : 1 : 0.07
+T: 1 0 : 28 : 2 : 0.01
+T: 1 0 : 28 : 4 : 0.01
+T: 1 0 : 28 : 27 : 0.02
+T: 1 0 : 28 : 28 : 0.14
+T: 1 0 : 28 : 29 : 0.02
+T: 1 0 : 28 : 31 : 0.02
+T: 1 0 : 28 : 36 : 0.01
+T: 1 0 : 28 : 37 : 0.07
+T: 1 0 : 28 : 38 : 0.01
+T: 1 0 : 28 : 40 : 0.01
+T: 1 0 : 28 : 54 : 0.06
+T: 1 0 : 28 : 55 : 0.42
+T: 1 0 : 28 : 56 : 0.06
+T: 1 0 : 28 : 58 : 0.06
+T: 1 1 : 28 : 0 : 0.01
+T: 1 1 : 28 : 1 : 0.02
+T: 1 1 : 28 : 2 : 0.01
+T: 1 1 : 28 : 4 : 0.06
+T: 1 1 : 28 : 27 : 0.02
+T: 1 1 : 28 : 28 : 0.040
+T: 1 1 : 28 : 29 : 0.02
+T: 1 1 : 28 : 31 : 0.12
+T: 1 1 : 28 : 36 : 0.01
+T: 1 1 : 28 : 37 : 0.02
+T: 1 1 : 28 : 38 : 0.01
+T: 1 1 : 28 : 40 : 0.06
+T: 1 1 : 28 : 54 : 0.06
+T: 1 1 : 28 : 55 : 0.12
+T: 1 1 : 28 : 56 : 0.06
+T: 1 1 : 28 : 58 : 0.36
+T: 1 2 : 28 : 0 : 0.06
+T: 1 2 : 28 : 1 : 0.02
+T: 1 2 : 28 : 2 : 0.01
+T: 1 2 : 28 : 4 : 0.01
+T: 1 2 : 28 : 27 : 0.12
+T: 1 2 : 28 : 28 : 0.040
+T: 1 2 : 28 : 29 : 0.02
+T: 1 2 : 28 : 31 : 0.02
+T: 1 2 : 28 : 36 : 0.06
+T: 1 2 : 28 : 37 : 0.02
+T: 1 2 : 28 : 38 : 0.01
+T: 1 2 : 28 : 40 : 0.01
+T: 1 2 : 28 : 54 : 0.36
+T: 1 2 : 28 : 55 : 0.12
+T: 1 2 : 28 : 56 : 0.06
+T: 1 2 : 28 : 58 : 0.06
+T: 1 3 : 28 : 0 : 0.01
+T: 1 3 : 28 : 1 : 0.02
+T: 1 3 : 28 : 2 : 0.06
+T: 1 3 : 28 : 4 : 0.01
+T: 1 3 : 28 : 27 : 0.02
+T: 1 3 : 28 : 28 : 0.040
+T: 1 3 : 28 : 29 : 0.12
+T: 1 3 : 28 : 31 : 0.02
+T: 1 3 : 28 : 36 : 0.01
+T: 1 3 : 28 : 37 : 0.02
+T: 1 3 : 28 : 38 : 0.06
+T: 1 3 : 28 : 40 : 0.01
+T: 1 3 : 28 : 54 : 0.06
+T: 1 3 : 28 : 55 : 0.12
+T: 1 3 : 28 : 56 : 0.36
+T: 1 3 : 28 : 58 : 0.06
+T: 1 4 : 28 : 1 : 0.1
+T: 1 4 : 28 : 28 : 0.2
+T: 1 4 : 28 : 37 : 0.1
+T: 1 4 : 28 : 55 : 0.6
+T: 2 0 : 28 : 0 : 0.01
+T: 2 0 : 28 : 1 : 0.07
+T: 2 0 : 28 : 2 : 0.01
+T: 2 0 : 28 : 4 : 0.01
+T: 2 0 : 28 : 27 : 0.07
+T: 2 0 : 28 : 28 : 0.49
+T: 2 0 : 28 : 29 : 0.07
+T: 2 0 : 28 : 31 : 0.07
+T: 2 0 : 28 : 36 : 0.01
+T: 2 0 : 28 : 37 : 0.07
+T: 2 0 : 28 : 38 : 0.01
+T: 2 0 : 28 : 40 : 0.01
+T: 2 0 : 28 : 54 : 0.01
+T: 2 0 : 28 : 55 : 0.07
+T: 2 0 : 28 : 56 : 0.01
+T: 2 0 : 28 : 58 : 0.01
+T: 2 1 : 28 : 0 : 0.01
+T: 2 1 : 28 : 1 : 0.02
+T: 2 1 : 28 : 2 : 0.01
+T: 2 1 : 28 : 4 : 0.06
+T: 2 1 : 28 : 27 : 0.07
+T: 2 1 : 28 : 28 : 0.14
+T: 2 1 : 28 : 29 : 0.07
+T: 2 1 : 28 : 31 : 0.42
+T: 2 1 : 28 : 36 : 0.01
+T: 2 1 : 28 : 37 : 0.02
+T: 2 1 : 28 : 38 : 0.01
+T: 2 1 : 28 : 40 : 0.06
+T: 2 1 : 28 : 54 : 0.01
+T: 2 1 : 28 : 55 : 0.02
+T: 2 1 : 28 : 56 : 0.01
+T: 2 1 : 28 : 58 : 0.06
+T: 2 2 : 28 : 0 : 0.06
+T: 2 2 : 28 : 1 : 0.02
+T: 2 2 : 28 : 2 : 0.01
+T: 2 2 : 28 : 4 : 0.01
+T: 2 2 : 28 : 27 : 0.42
+T: 2 2 : 28 : 28 : 0.14
+T: 2 2 : 28 : 29 : 0.07
+T: 2 2 : 28 : 31 : 0.07
+T: 2 2 : 28 : 36 : 0.06
+T: 2 2 : 28 : 37 : 0.02
+T: 2 2 : 28 : 38 : 0.01
+T: 2 2 : 28 : 40 : 0.01
+T: 2 2 : 28 : 54 : 0.06
+T: 2 2 : 28 : 55 : 0.02
+T: 2 2 : 28 : 56 : 0.01
+T: 2 2 : 28 : 58 : 0.01
+T: 2 3 : 28 : 0 : 0.01
+T: 2 3 : 28 : 1 : 0.02
+T: 2 3 : 28 : 2 : 0.06
+T: 2 3 : 28 : 4 : 0.01
+T: 2 3 : 28 : 27 : 0.07
+T: 2 3 : 28 : 28 : 0.14
+T: 2 3 : 28 : 29 : 0.42
+T: 2 3 : 28 : 31 : 0.07
+T: 2 3 : 28 : 36 : 0.01
+T: 2 3 : 28 : 37 : 0.02
+T: 2 3 : 28 : 38 : 0.06
+T: 2 3 : 28 : 40 : 0.01
+T: 2 3 : 28 : 54 : 0.01
+T: 2 3 : 28 : 55 : 0.02
+T: 2 3 : 28 : 56 : 0.06
+T: 2 3 : 28 : 58 : 0.01
+T: 2 4 : 28 : 1 : 0.1
+T: 2 4 : 28 : 28 : 0.7
+T: 2 4 : 28 : 37 : 0.1
+T: 2 4 : 28 : 55 : 0.1
+T: 3 0 : 28 : 0 : 0.01
+T: 3 0 : 28 : 1 : 0.07
+T: 3 0 : 28 : 2 : 0.01
+T: 3 0 : 28 : 4 : 0.01
+T: 3 0 : 28 : 27 : 0.02
+T: 3 0 : 28 : 28 : 0.14
+T: 3 0 : 28 : 29 : 0.02
+T: 3 0 : 28 : 31 : 0.02
+T: 3 0 : 28 : 36 : 0.06
+T: 3 0 : 28 : 37 : 0.42
+T: 3 0 : 28 : 38 : 0.06
+T: 3 0 : 28 : 40 : 0.06
+T: 3 0 : 28 : 54 : 0.01
+T: 3 0 : 28 : 55 : 0.07
+T: 3 0 : 28 : 56 : 0.01
+T: 3 0 : 28 : 58 : 0.01
+T: 3 1 : 28 : 0 : 0.01
+T: 3 1 : 28 : 1 : 0.02
+T: 3 1 : 28 : 2 : 0.01
+T: 3 1 : 28 : 4 : 0.06
+T: 3 1 : 28 : 27 : 0.02
+T: 3 1 : 28 : 28 : 0.040
+T: 3 1 : 28 : 29 : 0.02
+T: 3 1 : 28 : 31 : 0.12
+T: 3 1 : 28 : 36 : 0.06
+T: 3 1 : 28 : 37 : 0.12
+T: 3 1 : 28 : 38 : 0.06
+T: 3 1 : 28 : 40 : 0.36
+T: 3 1 : 28 : 54 : 0.01
+T: 3 1 : 28 : 55 : 0.02
+T: 3 1 : 28 : 56 : 0.01
+T: 3 1 : 28 : 58 : 0.06
+T: 3 2 : 28 : 0 : 0.06
+T: 3 2 : 28 : 1 : 0.02
+T: 3 2 : 28 : 2 : 0.01
+T: 3 2 : 28 : 4 : 0.01
+T: 3 2 : 28 : 27 : 0.12
+T: 3 2 : 28 : 28 : 0.040
+T: 3 2 : 28 : 29 : 0.02
+T: 3 2 : 28 : 31 : 0.02
+T: 3 2 : 28 : 36 : 0.36
+T: 3 2 : 28 : 37 : 0.12
+T: 3 2 : 28 : 38 : 0.06
+T: 3 2 : 28 : 40 : 0.06
+T: 3 2 : 28 : 54 : 0.06
+T: 3 2 : 28 : 55 : 0.02
+T: 3 2 : 28 : 56 : 0.01
+T: 3 2 : 28 : 58 : 0.01
+T: 3 3 : 28 : 0 : 0.01
+T: 3 3 : 28 : 1 : 0.02
+T: 3 3 : 28 : 2 : 0.06
+T: 3 3 : 28 : 4 : 0.01
+T: 3 3 : 28 : 27 : 0.02
+T: 3 3 : 28 : 28 : 0.040
+T: 3 3 : 28 : 29 : 0.12
+T: 3 3 : 28 : 31 : 0.02
+T: 3 3 : 28 : 36 : 0.06
+T: 3 3 : 28 : 37 : 0.12
+T: 3 3 : 28 : 38 : 0.36
+T: 3 3 : 28 : 40 : 0.06
+T: 3 3 : 28 : 54 : 0.01
+T: 3 3 : 28 : 55 : 0.02
+T: 3 3 : 28 : 56 : 0.06
+T: 3 3 : 28 : 58 : 0.01
+T: 3 4 : 28 : 1 : 0.1
+T: 3 4 : 28 : 28 : 0.2
+T: 3 4 : 28 : 37 : 0.6
+T: 3 4 : 28 : 55 : 0.1
+T: 4 0 : 28 : 27 : 0.1
+T: 4 0 : 28 : 28 : 0.7
+T: 4 0 : 28 : 29 : 0.1
+T: 4 0 : 28 : 31 : 0.1
+T: 4 1 : 28 : 27 : 0.1
+T: 4 1 : 28 : 28 : 0.2
+T: 4 1 : 28 : 29 : 0.1
+T: 4 1 : 28 : 31 : 0.6
+T: 4 2 : 28 : 27 : 0.6
+T: 4 2 : 28 : 28 : 0.2
+T: 4 2 : 28 : 29 : 0.1
+T: 4 2 : 28 : 31 : 0.1
+T: 4 3 : 28 : 27 : 0.1
+T: 4 3 : 28 : 28 : 0.2
+T: 4 3 : 28 : 29 : 0.6
+T: 4 3 : 28 : 31 : 0.1
+T: 4 4 : 28 : 28 : 1.0
+T: 0 0 : 29 : 1 : 0.06
+T: 0 0 : 29 : 2 : 0.48
+T: 0 0 : 29 : 5 : 0.06
+T: 0 0 : 29 : 28 : 0.02
+T: 0 0 : 29 : 29 : 0.16
+T: 0 0 : 29 : 32 : 0.02
+T: 0 0 : 29 : 37 : 0.01
+T: 0 0 : 29 : 38 : 0.08
+T: 0 0 : 29 : 41 : 0.01
+T: 0 0 : 29 : 55 : 0.01
+T: 0 0 : 29 : 56 : 0.08
+T: 0 0 : 29 : 59 : 0.01
+T: 0 1 : 29 : 1 : 0.06
+T: 0 1 : 29 : 2 : 0.18
+T: 0 1 : 29 : 5 : 0.36
+T: 0 1 : 29 : 28 : 0.02
+T: 0 1 : 29 : 29 : 0.060
+T: 0 1 : 29 : 32 : 0.12
+T: 0 1 : 29 : 37 : 0.01
+T: 0 1 : 29 : 38 : 0.03
+T: 0 1 : 29 : 41 : 0.06
+T: 0 1 : 29 : 55 : 0.01
+T: 0 1 : 29 : 56 : 0.03
+T: 0 1 : 29 : 59 : 0.06
+T: 0 2 : 29 : 1 : 0.36
+T: 0 2 : 29 : 2 : 0.18
+T: 0 2 : 29 : 5 : 0.06
+T: 0 2 : 29 : 28 : 0.12
+T: 0 2 : 29 : 29 : 0.060
+T: 0 2 : 29 : 32 : 0.02
+T: 0 2 : 29 : 37 : 0.06
+T: 0 2 : 29 : 38 : 0.03
+T: 0 2 : 29 : 41 : 0.01
+T: 0 2 : 29 : 55 : 0.06
+T: 0 2 : 29 : 56 : 0.03
+T: 0 2 : 29 : 59 : 0.01
+T: 0 3 : 29 : 1 : 0.06
+T: 0 3 : 29 : 2 : 0.48
+T: 0 3 : 29 : 5 : 0.06
+T: 0 3 : 29 : 28 : 0.02
+T: 0 3 : 29 : 29 : 0.16
+T: 0 3 : 29 : 32 : 0.02
+T: 0 3 : 29 : 37 : 0.01
+T: 0 3 : 29 : 38 : 0.08
+T: 0 3 : 29 : 41 : 0.01
+T: 0 3 : 29 : 55 : 0.01
+T: 0 3 : 29 : 56 : 0.08
+T: 0 3 : 29 : 59 : 0.01
+T: 0 4 : 29 : 2 : 0.6
+T: 0 4 : 29 : 29 : 0.2
+T: 0 4 : 29 : 38 : 0.1
+T: 0 4 : 29 : 56 : 0.1
+T: 1 0 : 29 : 1 : 0.01
+T: 1 0 : 29 : 2 : 0.08
+T: 1 0 : 29 : 5 : 0.01
+T: 1 0 : 29 : 28 : 0.02
+T: 1 0 : 29 : 29 : 0.16
+T: 1 0 : 29 : 32 : 0.02
+T: 1 0 : 29 : 37 : 0.01
+T: 1 0 : 29 : 38 : 0.08
+T: 1 0 : 29 : 41 : 0.01
+T: 1 0 : 29 : 55 : 0.06
+T: 1 0 : 29 : 56 : 0.48
+T: 1 0 : 29 : 59 : 0.06
+T: 1 1 : 29 : 1 : 0.01
+T: 1 1 : 29 : 2 : 0.03
+T: 1 1 : 29 : 5 : 0.06
+T: 1 1 : 29 : 28 : 0.02
+T: 1 1 : 29 : 29 : 0.060
+T: 1 1 : 29 : 32 : 0.12
+T: 1 1 : 29 : 37 : 0.01
+T: 1 1 : 29 : 38 : 0.03
+T: 1 1 : 29 : 41 : 0.06
+T: 1 1 : 29 : 55 : 0.06
+T: 1 1 : 29 : 56 : 0.18
+T: 1 1 : 29 : 59 : 0.36
+T: 1 2 : 29 : 1 : 0.06
+T: 1 2 : 29 : 2 : 0.03
+T: 1 2 : 29 : 5 : 0.01
+T: 1 2 : 29 : 28 : 0.12
+T: 1 2 : 29 : 29 : 0.060
+T: 1 2 : 29 : 32 : 0.02
+T: 1 2 : 29 : 37 : 0.06
+T: 1 2 : 29 : 38 : 0.03
+T: 1 2 : 29 : 41 : 0.01
+T: 1 2 : 29 : 55 : 0.36
+T: 1 2 : 29 : 56 : 0.18
+T: 1 2 : 29 : 59 : 0.06
+T: 1 3 : 29 : 1 : 0.01
+T: 1 3 : 29 : 2 : 0.08
+T: 1 3 : 29 : 5 : 0.01
+T: 1 3 : 29 : 28 : 0.02
+T: 1 3 : 29 : 29 : 0.16
+T: 1 3 : 29 : 32 : 0.02
+T: 1 3 : 29 : 37 : 0.01
+T: 1 3 : 29 : 38 : 0.08
+T: 1 3 : 29 : 41 : 0.01
+T: 1 3 : 29 : 55 : 0.06
+T: 1 3 : 29 : 56 : 0.48
+T: 1 3 : 29 : 59 : 0.06
+T: 1 4 : 29 : 2 : 0.1
+T: 1 4 : 29 : 29 : 0.2
+T: 1 4 : 29 : 38 : 0.1
+T: 1 4 : 29 : 56 : 0.6
+T: 2 0 : 29 : 1 : 0.01
+T: 2 0 : 29 : 2 : 0.08
+T: 2 0 : 29 : 5 : 0.01
+T: 2 0 : 29 : 28 : 0.07
+T: 2 0 : 29 : 29 : 0.56
+T: 2 0 : 29 : 32 : 0.07
+T: 2 0 : 29 : 37 : 0.01
+T: 2 0 : 29 : 38 : 0.08
+T: 2 0 : 29 : 41 : 0.01
+T: 2 0 : 29 : 55 : 0.01
+T: 2 0 : 29 : 56 : 0.08
+T: 2 0 : 29 : 59 : 0.01
+T: 2 1 : 29 : 1 : 0.01
+T: 2 1 : 29 : 2 : 0.03
+T: 2 1 : 29 : 5 : 0.06
+T: 2 1 : 29 : 28 : 0.07
+T: 2 1 : 29 : 29 : 0.21
+T: 2 1 : 29 : 32 : 0.42
+T: 2 1 : 29 : 37 : 0.01
+T: 2 1 : 29 : 38 : 0.03
+T: 2 1 : 29 : 41 : 0.06
+T: 2 1 : 29 : 55 : 0.01
+T: 2 1 : 29 : 56 : 0.03
+T: 2 1 : 29 : 59 : 0.06
+T: 2 2 : 29 : 1 : 0.06
+T: 2 2 : 29 : 2 : 0.03
+T: 2 2 : 29 : 5 : 0.01
+T: 2 2 : 29 : 28 : 0.42
+T: 2 2 : 29 : 29 : 0.21
+T: 2 2 : 29 : 32 : 0.07
+T: 2 2 : 29 : 37 : 0.06
+T: 2 2 : 29 : 38 : 0.03
+T: 2 2 : 29 : 41 : 0.01
+T: 2 2 : 29 : 55 : 0.06
+T: 2 2 : 29 : 56 : 0.03
+T: 2 2 : 29 : 59 : 0.01
+T: 2 3 : 29 : 1 : 0.01
+T: 2 3 : 29 : 2 : 0.08
+T: 2 3 : 29 : 5 : 0.01
+T: 2 3 : 29 : 28 : 0.07
+T: 2 3 : 29 : 29 : 0.56
+T: 2 3 : 29 : 32 : 0.07
+T: 2 3 : 29 : 37 : 0.01
+T: 2 3 : 29 : 38 : 0.08
+T: 2 3 : 29 : 41 : 0.01
+T: 2 3 : 29 : 55 : 0.01
+T: 2 3 : 29 : 56 : 0.08
+T: 2 3 : 29 : 59 : 0.01
+T: 2 4 : 29 : 2 : 0.1
+T: 2 4 : 29 : 29 : 0.7
+T: 2 4 : 29 : 38 : 0.1
+T: 2 4 : 29 : 56 : 0.1
+T: 3 0 : 29 : 1 : 0.01
+T: 3 0 : 29 : 2 : 0.08
+T: 3 0 : 29 : 5 : 0.01
+T: 3 0 : 29 : 28 : 0.02
+T: 3 0 : 29 : 29 : 0.16
+T: 3 0 : 29 : 32 : 0.02
+T: 3 0 : 29 : 37 : 0.06
+T: 3 0 : 29 : 38 : 0.48
+T: 3 0 : 29 : 41 : 0.06
+T: 3 0 : 29 : 55 : 0.01
+T: 3 0 : 29 : 56 : 0.08
+T: 3 0 : 29 : 59 : 0.01
+T: 3 1 : 29 : 1 : 0.01
+T: 3 1 : 29 : 2 : 0.03
+T: 3 1 : 29 : 5 : 0.06
+T: 3 1 : 29 : 28 : 0.02
+T: 3 1 : 29 : 29 : 0.060
+T: 3 1 : 29 : 32 : 0.12
+T: 3 1 : 29 : 37 : 0.06
+T: 3 1 : 29 : 38 : 0.18
+T: 3 1 : 29 : 41 : 0.36
+T: 3 1 : 29 : 55 : 0.01
+T: 3 1 : 29 : 56 : 0.03
+T: 3 1 : 29 : 59 : 0.06
+T: 3 2 : 29 : 1 : 0.06
+T: 3 2 : 29 : 2 : 0.03
+T: 3 2 : 29 : 5 : 0.01
+T: 3 2 : 29 : 28 : 0.12
+T: 3 2 : 29 : 29 : 0.060
+T: 3 2 : 29 : 32 : 0.02
+T: 3 2 : 29 : 37 : 0.36
+T: 3 2 : 29 : 38 : 0.18
+T: 3 2 : 29 : 41 : 0.06
+T: 3 2 : 29 : 55 : 0.06
+T: 3 2 : 29 : 56 : 0.03
+T: 3 2 : 29 : 59 : 0.01
+T: 3 3 : 29 : 1 : 0.01
+T: 3 3 : 29 : 2 : 0.08
+T: 3 3 : 29 : 5 : 0.01
+T: 3 3 : 29 : 28 : 0.02
+T: 3 3 : 29 : 29 : 0.16
+T: 3 3 : 29 : 32 : 0.02
+T: 3 3 : 29 : 37 : 0.06
+T: 3 3 : 29 : 38 : 0.48
+T: 3 3 : 29 : 41 : 0.06
+T: 3 3 : 29 : 55 : 0.01
+T: 3 3 : 29 : 56 : 0.08
+T: 3 3 : 29 : 59 : 0.01
+T: 3 4 : 29 : 2 : 0.1
+T: 3 4 : 29 : 29 : 0.2
+T: 3 4 : 29 : 38 : 0.6
+T: 3 4 : 29 : 56 : 0.1
+T: 4 0 : 29 : 28 : 0.1
+T: 4 0 : 29 : 29 : 0.8
+T: 4 0 : 29 : 32 : 0.1
+T: 4 1 : 29 : 28 : 0.1
+T: 4 1 : 29 : 29 : 0.3
+T: 4 1 : 29 : 32 : 0.6
+T: 4 2 : 29 : 28 : 0.6
+T: 4 2 : 29 : 29 : 0.3
+T: 4 2 : 29 : 32 : 0.1
+T: 4 3 : 29 : 28 : 0.1
+T: 4 3 : 29 : 29 : 0.8
+T: 4 3 : 29 : 32 : 0.1
+T: 4 4 : 29 : 29 : 1.0
+T: 0 0 : 30 : 0 : 0.36
+T: 0 0 : 30 : 3 : 0.12
+T: 0 0 : 30 : 4 : 0.06
+T: 0 0 : 30 : 6 : 0.06
+T: 0 0 : 30 : 27 : 0.12
+T: 0 0 : 30 : 30 : 0.040
+T: 0 0 : 30 : 31 : 0.02
+T: 0 0 : 30 : 33 : 0.02
+T: 0 0 : 30 : 36 : 0.06
+T: 0 0 : 30 : 39 : 0.02
+T: 0 0 : 30 : 40 : 0.01
+T: 0 0 : 30 : 42 : 0.01
+T: 0 0 : 30 : 54 : 0.06
+T: 0 0 : 30 : 57 : 0.02
+T: 0 0 : 30 : 58 : 0.01
+T: 0 0 : 30 : 60 : 0.01
+T: 0 1 : 30 : 0 : 0.06
+T: 0 1 : 30 : 3 : 0.12
+T: 0 1 : 30 : 4 : 0.06
+T: 0 1 : 30 : 6 : 0.36
+T: 0 1 : 30 : 27 : 0.02
+T: 0 1 : 30 : 30 : 0.040
+T: 0 1 : 30 : 31 : 0.02
+T: 0 1 : 30 : 33 : 0.12
+T: 0 1 : 30 : 36 : 0.01
+T: 0 1 : 30 : 39 : 0.02
+T: 0 1 : 30 : 40 : 0.01
+T: 0 1 : 30 : 42 : 0.06
+T: 0 1 : 30 : 54 : 0.01
+T: 0 1 : 30 : 57 : 0.02
+T: 0 1 : 30 : 58 : 0.01
+T: 0 1 : 30 : 60 : 0.06
+T: 0 2 : 30 : 0 : 0.06
+T: 0 2 : 30 : 3 : 0.42
+T: 0 2 : 30 : 4 : 0.06
+T: 0 2 : 30 : 6 : 0.06
+T: 0 2 : 30 : 27 : 0.02
+T: 0 2 : 30 : 30 : 0.14
+T: 0 2 : 30 : 31 : 0.02
+T: 0 2 : 30 : 33 : 0.02
+T: 0 2 : 30 : 36 : 0.01
+T: 0 2 : 30 : 39 : 0.07
+T: 0 2 : 30 : 40 : 0.01
+T: 0 2 : 30 : 42 : 0.01
+T: 0 2 : 30 : 54 : 0.01
+T: 0 2 : 30 : 57 : 0.07
+T: 0 2 : 30 : 58 : 0.01
+T: 0 2 : 30 : 60 : 0.01
+T: 0 3 : 30 : 0 : 0.06
+T: 0 3 : 30 : 3 : 0.12
+T: 0 3 : 30 : 4 : 0.36
+T: 0 3 : 30 : 6 : 0.06
+T: 0 3 : 30 : 27 : 0.02
+T: 0 3 : 30 : 30 : 0.040
+T: 0 3 : 30 : 31 : 0.12
+T: 0 3 : 30 : 33 : 0.02
+T: 0 3 : 30 : 36 : 0.01
+T: 0 3 : 30 : 39 : 0.02
+T: 0 3 : 30 : 40 : 0.06
+T: 0 3 : 30 : 42 : 0.01
+T: 0 3 : 30 : 54 : 0.01
+T: 0 3 : 30 : 57 : 0.02
+T: 0 3 : 30 : 58 : 0.06
+T: 0 3 : 30 : 60 : 0.01
+T: 0 4 : 30 : 3 : 0.6
+T: 0 4 : 30 : 30 : 0.2
+T: 0 4 : 30 : 39 : 0.1
+T: 0 4 : 30 : 57 : 0.1
+T: 1 0 : 30 : 0 : 0.06
+T: 1 0 : 30 : 3 : 0.02
+T: 1 0 : 30 : 4 : 0.01
+T: 1 0 : 30 : 6 : 0.01
+T: 1 0 : 30 : 27 : 0.12
+T: 1 0 : 30 : 30 : 0.040
+T: 1 0 : 30 : 31 : 0.02
+T: 1 0 : 30 : 33 : 0.02
+T: 1 0 : 30 : 36 : 0.06
+T: 1 0 : 30 : 39 : 0.02
+T: 1 0 : 30 : 40 : 0.01
+T: 1 0 : 30 : 42 : 0.01
+T: 1 0 : 30 : 54 : 0.36
+T: 1 0 : 30 : 57 : 0.12
+T: 1 0 : 30 : 58 : 0.06
+T: 1 0 : 30 : 60 : 0.06
+T: 1 1 : 30 : 0 : 0.01
+T: 1 1 : 30 : 3 : 0.02
+T: 1 1 : 30 : 4 : 0.01
+T: 1 1 : 30 : 6 : 0.06
+T: 1 1 : 30 : 27 : 0.02
+T: 1 1 : 30 : 30 : 0.040
+T: 1 1 : 30 : 31 : 0.02
+T: 1 1 : 30 : 33 : 0.12
+T: 1 1 : 30 : 36 : 0.01
+T: 1 1 : 30 : 39 : 0.02
+T: 1 1 : 30 : 40 : 0.01
+T: 1 1 : 30 : 42 : 0.06
+T: 1 1 : 30 : 54 : 0.06
+T: 1 1 : 30 : 57 : 0.12
+T: 1 1 : 30 : 58 : 0.06
+T: 1 1 : 30 : 60 : 0.36
+T: 1 2 : 30 : 0 : 0.01
+T: 1 2 : 30 : 3 : 0.07
+T: 1 2 : 30 : 4 : 0.01
+T: 1 2 : 30 : 6 : 0.01
+T: 1 2 : 30 : 27 : 0.02
+T: 1 2 : 30 : 30 : 0.14
+T: 1 2 : 30 : 31 : 0.02
+T: 1 2 : 30 : 33 : 0.02
+T: 1 2 : 30 : 36 : 0.01
+T: 1 2 : 30 : 39 : 0.07
+T: 1 2 : 30 : 40 : 0.01
+T: 1 2 : 30 : 42 : 0.01
+T: 1 2 : 30 : 54 : 0.06
+T: 1 2 : 30 : 57 : 0.42
+T: 1 2 : 30 : 58 : 0.06
+T: 1 2 : 30 : 60 : 0.06
+T: 1 3 : 30 : 0 : 0.01
+T: 1 3 : 30 : 3 : 0.02
+T: 1 3 : 30 : 4 : 0.06
+T: 1 3 : 30 : 6 : 0.01
+T: 1 3 : 30 : 27 : 0.02
+T: 1 3 : 30 : 30 : 0.040
+T: 1 3 : 30 : 31 : 0.12
+T: 1 3 : 30 : 33 : 0.02
+T: 1 3 : 30 : 36 : 0.01
+T: 1 3 : 30 : 39 : 0.02
+T: 1 3 : 30 : 40 : 0.06
+T: 1 3 : 30 : 42 : 0.01
+T: 1 3 : 30 : 54 : 0.06
+T: 1 3 : 30 : 57 : 0.12
+T: 1 3 : 30 : 58 : 0.36
+T: 1 3 : 30 : 60 : 0.06
+T: 1 4 : 30 : 3 : 0.1
+T: 1 4 : 30 : 30 : 0.2
+T: 1 4 : 30 : 39 : 0.1
+T: 1 4 : 30 : 57 : 0.6
+T: 2 0 : 30 : 0 : 0.06
+T: 2 0 : 30 : 3 : 0.02
+T: 2 0 : 30 : 4 : 0.01
+T: 2 0 : 30 : 6 : 0.01
+T: 2 0 : 30 : 27 : 0.42
+T: 2 0 : 30 : 30 : 0.14
+T: 2 0 : 30 : 31 : 0.07
+T: 2 0 : 30 : 33 : 0.07
+T: 2 0 : 30 : 36 : 0.06
+T: 2 0 : 30 : 39 : 0.02
+T: 2 0 : 30 : 40 : 0.01
+T: 2 0 : 30 : 42 : 0.01
+T: 2 0 : 30 : 54 : 0.06
+T: 2 0 : 30 : 57 : 0.02
+T: 2 0 : 30 : 58 : 0.01
+T: 2 0 : 30 : 60 : 0.01
+T: 2 1 : 30 : 0 : 0.01
+T: 2 1 : 30 : 3 : 0.02
+T: 2 1 : 30 : 4 : 0.01
+T: 2 1 : 30 : 6 : 0.06
+T: 2 1 : 30 : 27 : 0.07
+T: 2 1 : 30 : 30 : 0.14
+T: 2 1 : 30 : 31 : 0.07
+T: 2 1 : 30 : 33 : 0.42
+T: 2 1 : 30 : 36 : 0.01
+T: 2 1 : 30 : 39 : 0.02
+T: 2 1 : 30 : 40 : 0.01
+T: 2 1 : 30 : 42 : 0.06
+T: 2 1 : 30 : 54 : 0.01
+T: 2 1 : 30 : 57 : 0.02
+T: 2 1 : 30 : 58 : 0.01
+T: 2 1 : 30 : 60 : 0.06
+T: 2 2 : 30 : 0 : 0.01
+T: 2 2 : 30 : 3 : 0.07
+T: 2 2 : 30 : 4 : 0.01
+T: 2 2 : 30 : 6 : 0.01
+T: 2 2 : 30 : 27 : 0.07
+T: 2 2 : 30 : 30 : 0.49
+T: 2 2 : 30 : 31 : 0.07
+T: 2 2 : 30 : 33 : 0.07
+T: 2 2 : 30 : 36 : 0.01
+T: 2 2 : 30 : 39 : 0.07
+T: 2 2 : 30 : 40 : 0.01
+T: 2 2 : 30 : 42 : 0.01
+T: 2 2 : 30 : 54 : 0.01
+T: 2 2 : 30 : 57 : 0.07
+T: 2 2 : 30 : 58 : 0.01
+T: 2 2 : 30 : 60 : 0.01
+T: 2 3 : 30 : 0 : 0.01
+T: 2 3 : 30 : 3 : 0.02
+T: 2 3 : 30 : 4 : 0.06
+T: 2 3 : 30 : 6 : 0.01
+T: 2 3 : 30 : 27 : 0.07
+T: 2 3 : 30 : 30 : 0.14
+T: 2 3 : 30 : 31 : 0.42
+T: 2 3 : 30 : 33 : 0.07
+T: 2 3 : 30 : 36 : 0.01
+T: 2 3 : 30 : 39 : 0.02
+T: 2 3 : 30 : 40 : 0.06
+T: 2 3 : 30 : 42 : 0.01
+T: 2 3 : 30 : 54 : 0.01
+T: 2 3 : 30 : 57 : 0.02
+T: 2 3 : 30 : 58 : 0.06
+T: 2 3 : 30 : 60 : 0.01
+T: 2 4 : 30 : 3 : 0.1
+T: 2 4 : 30 : 30 : 0.7
+T: 2 4 : 30 : 39 : 0.1
+T: 2 4 : 30 : 57 : 0.1
+T: 3 0 : 30 : 0 : 0.06
+T: 3 0 : 30 : 3 : 0.02
+T: 3 0 : 30 : 4 : 0.01
+T: 3 0 : 30 : 6 : 0.01
+T: 3 0 : 30 : 27 : 0.12
+T: 3 0 : 30 : 30 : 0.040
+T: 3 0 : 30 : 31 : 0.02
+T: 3 0 : 30 : 33 : 0.02
+T: 3 0 : 30 : 36 : 0.36
+T: 3 0 : 30 : 39 : 0.12
+T: 3 0 : 30 : 40 : 0.06
+T: 3 0 : 30 : 42 : 0.06
+T: 3 0 : 30 : 54 : 0.06
+T: 3 0 : 30 : 57 : 0.02
+T: 3 0 : 30 : 58 : 0.01
+T: 3 0 : 30 : 60 : 0.01
+T: 3 1 : 30 : 0 : 0.01
+T: 3 1 : 30 : 3 : 0.02
+T: 3 1 : 30 : 4 : 0.01
+T: 3 1 : 30 : 6 : 0.06
+T: 3 1 : 30 : 27 : 0.02
+T: 3 1 : 30 : 30 : 0.040
+T: 3 1 : 30 : 31 : 0.02
+T: 3 1 : 30 : 33 : 0.12
+T: 3 1 : 30 : 36 : 0.06
+T: 3 1 : 30 : 39 : 0.12
+T: 3 1 : 30 : 40 : 0.06
+T: 3 1 : 30 : 42 : 0.36
+T: 3 1 : 30 : 54 : 0.01
+T: 3 1 : 30 : 57 : 0.02
+T: 3 1 : 30 : 58 : 0.01
+T: 3 1 : 30 : 60 : 0.06
+T: 3 2 : 30 : 0 : 0.01
+T: 3 2 : 30 : 3 : 0.07
+T: 3 2 : 30 : 4 : 0.01
+T: 3 2 : 30 : 6 : 0.01
+T: 3 2 : 30 : 27 : 0.02
+T: 3 2 : 30 : 30 : 0.14
+T: 3 2 : 30 : 31 : 0.02
+T: 3 2 : 30 : 33 : 0.02
+T: 3 2 : 30 : 36 : 0.06
+T: 3 2 : 30 : 39 : 0.42
+T: 3 2 : 30 : 40 : 0.06
+T: 3 2 : 30 : 42 : 0.06
+T: 3 2 : 30 : 54 : 0.01
+T: 3 2 : 30 : 57 : 0.07
+T: 3 2 : 30 : 58 : 0.01
+T: 3 2 : 30 : 60 : 0.01
+T: 3 3 : 30 : 0 : 0.01
+T: 3 3 : 30 : 3 : 0.02
+T: 3 3 : 30 : 4 : 0.06
+T: 3 3 : 30 : 6 : 0.01
+T: 3 3 : 30 : 27 : 0.02
+T: 3 3 : 30 : 30 : 0.040
+T: 3 3 : 30 : 31 : 0.12
+T: 3 3 : 30 : 33 : 0.02
+T: 3 3 : 30 : 36 : 0.06
+T: 3 3 : 30 : 39 : 0.12
+T: 3 3 : 30 : 40 : 0.36
+T: 3 3 : 30 : 42 : 0.06
+T: 3 3 : 30 : 54 : 0.01
+T: 3 3 : 30 : 57 : 0.02
+T: 3 3 : 30 : 58 : 0.06
+T: 3 3 : 30 : 60 : 0.01
+T: 3 4 : 30 : 3 : 0.1
+T: 3 4 : 30 : 30 : 0.2
+T: 3 4 : 30 : 39 : 0.6
+T: 3 4 : 30 : 57 : 0.1
+T: 4 0 : 30 : 27 : 0.6
+T: 4 0 : 30 : 30 : 0.2
+T: 4 0 : 30 : 31 : 0.1
+T: 4 0 : 30 : 33 : 0.1
+T: 4 1 : 30 : 27 : 0.1
+T: 4 1 : 30 : 30 : 0.2
+T: 4 1 : 30 : 31 : 0.1
+T: 4 1 : 30 : 33 : 0.6
+T: 4 2 : 30 : 27 : 0.1
+T: 4 2 : 30 : 30 : 0.7
+T: 4 2 : 30 : 31 : 0.1
+T: 4 2 : 30 : 33 : 0.1
+T: 4 3 : 30 : 27 : 0.1
+T: 4 3 : 30 : 30 : 0.2
+T: 4 3 : 30 : 31 : 0.6
+T: 4 3 : 30 : 33 : 0.1
+T: 4 4 : 30 : 30 : 1.0
+T: 0 0 : 31 : 1 : 0.36
+T: 0 0 : 31 : 3 : 0.06
+T: 0 0 : 31 : 4 : 0.06
+T: 0 0 : 31 : 5 : 0.06
+T: 0 0 : 31 : 7 : 0.06
+T: 0 0 : 31 : 28 : 0.12
+T: 0 0 : 31 : 30 : 0.02
+T: 0 0 : 31 : 31 : 0.02
+T: 0 0 : 31 : 32 : 0.02
+T: 0 0 : 31 : 34 : 0.02
+T: 0 0 : 31 : 37 : 0.06
+T: 0 0 : 31 : 39 : 0.01
+T: 0 0 : 31 : 40 : 0.01
+T: 0 0 : 31 : 41 : 0.01
+T: 0 0 : 31 : 43 : 0.01
+T: 0 0 : 31 : 55 : 0.06
+T: 0 0 : 31 : 57 : 0.01
+T: 0 0 : 31 : 58 : 0.01
+T: 0 0 : 31 : 59 : 0.01
+T: 0 0 : 31 : 61 : 0.01
+T: 0 1 : 31 : 1 : 0.06
+T: 0 1 : 31 : 3 : 0.06
+T: 0 1 : 31 : 4 : 0.06
+T: 0 1 : 31 : 5 : 0.06
+T: 0 1 : 31 : 7 : 0.36
+T: 0 1 : 31 : 28 : 0.02
+T: 0 1 : 31 : 30 : 0.02
+T: 0 1 : 31 : 31 : 0.02
+T: 0 1 : 31 : 32 : 0.02
+T: 0 1 : 31 : 34 : 0.12
+T: 0 1 : 31 : 37 : 0.01
+T: 0 1 : 31 : 39 : 0.01
+T: 0 1 : 31 : 40 : 0.01
+T: 0 1 : 31 : 41 : 0.01
+T: 0 1 : 31 : 43 : 0.06
+T: 0 1 : 31 : 55 : 0.01
+T: 0 1 : 31 : 57 : 0.01
+T: 0 1 : 31 : 58 : 0.01
+T: 0 1 : 31 : 59 : 0.01
+T: 0 1 : 31 : 61 : 0.06
+T: 0 2 : 31 : 1 : 0.06
+T: 0 2 : 31 : 3 : 0.36
+T: 0 2 : 31 : 4 : 0.06
+T: 0 2 : 31 : 5 : 0.06
+T: 0 2 : 31 : 7 : 0.06
+T: 0 2 : 31 : 28 : 0.02
+T: 0 2 : 31 : 30 : 0.12
+T: 0 2 : 31 : 31 : 0.02
+T: 0 2 : 31 : 32 : 0.02
+T: 0 2 : 31 : 34 : 0.02
+T: 0 2 : 31 : 37 : 0.01
+T: 0 2 : 31 : 39 : 0.06
+T: 0 2 : 31 : 40 : 0.01
+T: 0 2 : 31 : 41 : 0.01
+T: 0 2 : 31 : 43 : 0.01
+T: 0 2 : 31 : 55 : 0.01
+T: 0 2 : 31 : 57 : 0.06
+T: 0 2 : 31 : 58 : 0.01
+T: 0 2 : 31 : 59 : 0.01
+T: 0 2 : 31 : 61 : 0.01
+T: 0 3 : 31 : 1 : 0.06
+T: 0 3 : 31 : 3 : 0.06
+T: 0 3 : 31 : 4 : 0.06
+T: 0 3 : 31 : 5 : 0.36
+T: 0 3 : 31 : 7 : 0.06
+T: 0 3 : 31 : 28 : 0.02
+T: 0 3 : 31 : 30 : 0.02
+T: 0 3 : 31 : 31 : 0.02
+T: 0 3 : 31 : 32 : 0.12
+T: 0 3 : 31 : 34 : 0.02
+T: 0 3 : 31 : 37 : 0.01
+T: 0 3 : 31 : 39 : 0.01
+T: 0 3 : 31 : 40 : 0.01
+T: 0 3 : 31 : 41 : 0.06
+T: 0 3 : 31 : 43 : 0.01
+T: 0 3 : 31 : 55 : 0.01
+T: 0 3 : 31 : 57 : 0.01
+T: 0 3 : 31 : 58 : 0.01
+T: 0 3 : 31 : 59 : 0.06
+T: 0 3 : 31 : 61 : 0.01
+T: 0 4 : 31 : 4 : 0.6
+T: 0 4 : 31 : 31 : 0.2
+T: 0 4 : 31 : 40 : 0.1
+T: 0 4 : 31 : 58 : 0.1
+T: 1 0 : 31 : 1 : 0.06
+T: 1 0 : 31 : 3 : 0.01
+T: 1 0 : 31 : 4 : 0.01
+T: 1 0 : 31 : 5 : 0.01
+T: 1 0 : 31 : 7 : 0.01
+T: 1 0 : 31 : 28 : 0.12
+T: 1 0 : 31 : 30 : 0.02
+T: 1 0 : 31 : 31 : 0.02
+T: 1 0 : 31 : 32 : 0.02
+T: 1 0 : 31 : 34 : 0.02
+T: 1 0 : 31 : 37 : 0.06
+T: 1 0 : 31 : 39 : 0.01
+T: 1 0 : 31 : 40 : 0.01
+T: 1 0 : 31 : 41 : 0.01
+T: 1 0 : 31 : 43 : 0.01
+T: 1 0 : 31 : 55 : 0.36
+T: 1 0 : 31 : 57 : 0.06
+T: 1 0 : 31 : 58 : 0.06
+T: 1 0 : 31 : 59 : 0.06
+T: 1 0 : 31 : 61 : 0.06
+T: 1 1 : 31 : 1 : 0.01
+T: 1 1 : 31 : 3 : 0.01
+T: 1 1 : 31 : 4 : 0.01
+T: 1 1 : 31 : 5 : 0.01
+T: 1 1 : 31 : 7 : 0.06
+T: 1 1 : 31 : 28 : 0.02
+T: 1 1 : 31 : 30 : 0.02
+T: 1 1 : 31 : 31 : 0.02
+T: 1 1 : 31 : 32 : 0.02
+T: 1 1 : 31 : 34 : 0.12
+T: 1 1 : 31 : 37 : 0.01
+T: 1 1 : 31 : 39 : 0.01
+T: 1 1 : 31 : 40 : 0.01
+T: 1 1 : 31 : 41 : 0.01
+T: 1 1 : 31 : 43 : 0.06
+T: 1 1 : 31 : 55 : 0.06
+T: 1 1 : 31 : 57 : 0.06
+T: 1 1 : 31 : 58 : 0.06
+T: 1 1 : 31 : 59 : 0.06
+T: 1 1 : 31 : 61 : 0.36
+T: 1 2 : 31 : 1 : 0.01
+T: 1 2 : 31 : 3 : 0.06
+T: 1 2 : 31 : 4 : 0.01
+T: 1 2 : 31 : 5 : 0.01
+T: 1 2 : 31 : 7 : 0.01
+T: 1 2 : 31 : 28 : 0.02
+T: 1 2 : 31 : 30 : 0.12
+T: 1 2 : 31 : 31 : 0.02
+T: 1 2 : 31 : 32 : 0.02
+T: 1 2 : 31 : 34 : 0.02
+T: 1 2 : 31 : 37 : 0.01
+T: 1 2 : 31 : 39 : 0.06
+T: 1 2 : 31 : 40 : 0.01
+T: 1 2 : 31 : 41 : 0.01
+T: 1 2 : 31 : 43 : 0.01
+T: 1 2 : 31 : 55 : 0.06
+T: 1 2 : 31 : 57 : 0.36
+T: 1 2 : 31 : 58 : 0.06
+T: 1 2 : 31 : 59 : 0.06
+T: 1 2 : 31 : 61 : 0.06
+T: 1 3 : 31 : 1 : 0.01
+T: 1 3 : 31 : 3 : 0.01
+T: 1 3 : 31 : 4 : 0.01
+T: 1 3 : 31 : 5 : 0.06
+T: 1 3 : 31 : 7 : 0.01
+T: 1 3 : 31 : 28 : 0.02
+T: 1 3 : 31 : 30 : 0.02
+T: 1 3 : 31 : 31 : 0.02
+T: 1 3 : 31 : 32 : 0.12
+T: 1 3 : 31 : 34 : 0.02
+T: 1 3 : 31 : 37 : 0.01
+T: 1 3 : 31 : 39 : 0.01
+T: 1 3 : 31 : 40 : 0.01
+T: 1 3 : 31 : 41 : 0.06
+T: 1 3 : 31 : 43 : 0.01
+T: 1 3 : 31 : 55 : 0.06
+T: 1 3 : 31 : 57 : 0.06
+T: 1 3 : 31 : 58 : 0.06
+T: 1 3 : 31 : 59 : 0.36
+T: 1 3 : 31 : 61 : 0.06
+T: 1 4 : 31 : 4 : 0.1
+T: 1 4 : 31 : 31 : 0.2
+T: 1 4 : 31 : 40 : 0.1
+T: 1 4 : 31 : 58 : 0.6
+T: 2 0 : 31 : 1 : 0.06
+T: 2 0 : 31 : 3 : 0.01
+T: 2 0 : 31 : 4 : 0.01
+T: 2 0 : 31 : 5 : 0.01
+T: 2 0 : 31 : 7 : 0.01
+T: 2 0 : 31 : 28 : 0.42
+T: 2 0 : 31 : 30 : 0.07
+T: 2 0 : 31 : 31 : 0.07
+T: 2 0 : 31 : 32 : 0.07
+T: 2 0 : 31 : 34 : 0.07
+T: 2 0 : 31 : 37 : 0.06
+T: 2 0 : 31 : 39 : 0.01
+T: 2 0 : 31 : 40 : 0.01
+T: 2 0 : 31 : 41 : 0.01
+T: 2 0 : 31 : 43 : 0.01
+T: 2 0 : 31 : 55 : 0.06
+T: 2 0 : 31 : 57 : 0.01
+T: 2 0 : 31 : 58 : 0.01
+T: 2 0 : 31 : 59 : 0.01
+T: 2 0 : 31 : 61 : 0.01
+T: 2 1 : 31 : 1 : 0.01
+T: 2 1 : 31 : 3 : 0.01
+T: 2 1 : 31 : 4 : 0.01
+T: 2 1 : 31 : 5 : 0.01
+T: 2 1 : 31 : 7 : 0.06
+T: 2 1 : 31 : 28 : 0.07
+T: 2 1 : 31 : 30 : 0.07
+T: 2 1 : 31 : 31 : 0.07
+T: 2 1 : 31 : 32 : 0.07
+T: 2 1 : 31 : 34 : 0.42
+T: 2 1 : 31 : 37 : 0.01
+T: 2 1 : 31 : 39 : 0.01
+T: 2 1 : 31 : 40 : 0.01
+T: 2 1 : 31 : 41 : 0.01
+T: 2 1 : 31 : 43 : 0.06
+T: 2 1 : 31 : 55 : 0.01
+T: 2 1 : 31 : 57 : 0.01
+T: 2 1 : 31 : 58 : 0.01
+T: 2 1 : 31 : 59 : 0.01
+T: 2 1 : 31 : 61 : 0.06
+T: 2 2 : 31 : 1 : 0.01
+T: 2 2 : 31 : 3 : 0.06
+T: 2 2 : 31 : 4 : 0.01
+T: 2 2 : 31 : 5 : 0.01
+T: 2 2 : 31 : 7 : 0.01
+T: 2 2 : 31 : 28 : 0.07
+T: 2 2 : 31 : 30 : 0.42
+T: 2 2 : 31 : 31 : 0.07
+T: 2 2 : 31 : 32 : 0.07
+T: 2 2 : 31 : 34 : 0.07
+T: 2 2 : 31 : 37 : 0.01
+T: 2 2 : 31 : 39 : 0.06
+T: 2 2 : 31 : 40 : 0.01
+T: 2 2 : 31 : 41 : 0.01
+T: 2 2 : 31 : 43 : 0.01
+T: 2 2 : 31 : 55 : 0.01
+T: 2 2 : 31 : 57 : 0.06
+T: 2 2 : 31 : 58 : 0.01
+T: 2 2 : 31 : 59 : 0.01
+T: 2 2 : 31 : 61 : 0.01
+T: 2 3 : 31 : 1 : 0.01
+T: 2 3 : 31 : 3 : 0.01
+T: 2 3 : 31 : 4 : 0.01
+T: 2 3 : 31 : 5 : 0.06
+T: 2 3 : 31 : 7 : 0.01
+T: 2 3 : 31 : 28 : 0.07
+T: 2 3 : 31 : 30 : 0.07
+T: 2 3 : 31 : 31 : 0.07
+T: 2 3 : 31 : 32 : 0.42
+T: 2 3 : 31 : 34 : 0.07
+T: 2 3 : 31 : 37 : 0.01
+T: 2 3 : 31 : 39 : 0.01
+T: 2 3 : 31 : 40 : 0.01
+T: 2 3 : 31 : 41 : 0.06
+T: 2 3 : 31 : 43 : 0.01
+T: 2 3 : 31 : 55 : 0.01
+T: 2 3 : 31 : 57 : 0.01
+T: 2 3 : 31 : 58 : 0.01
+T: 2 3 : 31 : 59 : 0.06
+T: 2 3 : 31 : 61 : 0.01
+T: 2 4 : 31 : 4 : 0.1
+T: 2 4 : 31 : 31 : 0.7
+T: 2 4 : 31 : 40 : 0.1
+T: 2 4 : 31 : 58 : 0.1
+T: 3 0 : 31 : 1 : 0.06
+T: 3 0 : 31 : 3 : 0.01
+T: 3 0 : 31 : 4 : 0.01
+T: 3 0 : 31 : 5 : 0.01
+T: 3 0 : 31 : 7 : 0.01
+T: 3 0 : 31 : 28 : 0.12
+T: 3 0 : 31 : 30 : 0.02
+T: 3 0 : 31 : 31 : 0.02
+T: 3 0 : 31 : 32 : 0.02
+T: 3 0 : 31 : 34 : 0.02
+T: 3 0 : 31 : 37 : 0.36
+T: 3 0 : 31 : 39 : 0.06
+T: 3 0 : 31 : 40 : 0.06
+T: 3 0 : 31 : 41 : 0.06
+T: 3 0 : 31 : 43 : 0.06
+T: 3 0 : 31 : 55 : 0.06
+T: 3 0 : 31 : 57 : 0.01
+T: 3 0 : 31 : 58 : 0.01
+T: 3 0 : 31 : 59 : 0.01
+T: 3 0 : 31 : 61 : 0.01
+T: 3 1 : 31 : 1 : 0.01
+T: 3 1 : 31 : 3 : 0.01
+T: 3 1 : 31 : 4 : 0.01
+T: 3 1 : 31 : 5 : 0.01
+T: 3 1 : 31 : 7 : 0.06
+T: 3 1 : 31 : 28 : 0.02
+T: 3 1 : 31 : 30 : 0.02
+T: 3 1 : 31 : 31 : 0.02
+T: 3 1 : 31 : 32 : 0.02
+T: 3 1 : 31 : 34 : 0.12
+T: 3 1 : 31 : 37 : 0.06
+T: 3 1 : 31 : 39 : 0.06
+T: 3 1 : 31 : 40 : 0.06
+T: 3 1 : 31 : 41 : 0.06
+T: 3 1 : 31 : 43 : 0.36
+T: 3 1 : 31 : 55 : 0.01
+T: 3 1 : 31 : 57 : 0.01
+T: 3 1 : 31 : 58 : 0.01
+T: 3 1 : 31 : 59 : 0.01
+T: 3 1 : 31 : 61 : 0.06
+T: 3 2 : 31 : 1 : 0.01
+T: 3 2 : 31 : 3 : 0.06
+T: 3 2 : 31 : 4 : 0.01
+T: 3 2 : 31 : 5 : 0.01
+T: 3 2 : 31 : 7 : 0.01
+T: 3 2 : 31 : 28 : 0.02
+T: 3 2 : 31 : 30 : 0.12
+T: 3 2 : 31 : 31 : 0.02
+T: 3 2 : 31 : 32 : 0.02
+T: 3 2 : 31 : 34 : 0.02
+T: 3 2 : 31 : 37 : 0.06
+T: 3 2 : 31 : 39 : 0.36
+T: 3 2 : 31 : 40 : 0.06
+T: 3 2 : 31 : 41 : 0.06
+T: 3 2 : 31 : 43 : 0.06
+T: 3 2 : 31 : 55 : 0.01
+T: 3 2 : 31 : 57 : 0.06
+T: 3 2 : 31 : 58 : 0.01
+T: 3 2 : 31 : 59 : 0.01
+T: 3 2 : 31 : 61 : 0.01
+T: 3 3 : 31 : 1 : 0.01
+T: 3 3 : 31 : 3 : 0.01
+T: 3 3 : 31 : 4 : 0.01
+T: 3 3 : 31 : 5 : 0.06
+T: 3 3 : 31 : 7 : 0.01
+T: 3 3 : 31 : 28 : 0.02
+T: 3 3 : 31 : 30 : 0.02
+T: 3 3 : 31 : 31 : 0.02
+T: 3 3 : 31 : 32 : 0.12
+T: 3 3 : 31 : 34 : 0.02
+T: 3 3 : 31 : 37 : 0.06
+T: 3 3 : 31 : 39 : 0.06
+T: 3 3 : 31 : 40 : 0.06
+T: 3 3 : 31 : 41 : 0.36
+T: 3 3 : 31 : 43 : 0.06
+T: 3 3 : 31 : 55 : 0.01
+T: 3 3 : 31 : 57 : 0.01
+T: 3 3 : 31 : 58 : 0.01
+T: 3 3 : 31 : 59 : 0.06
+T: 3 3 : 31 : 61 : 0.01
+T: 3 4 : 31 : 4 : 0.1
+T: 3 4 : 31 : 31 : 0.2
+T: 3 4 : 31 : 40 : 0.6
+T: 3 4 : 31 : 58 : 0.1
+T: 4 0 : 31 : 28 : 0.6
+T: 4 0 : 31 : 30 : 0.1
+T: 4 0 : 31 : 31 : 0.1
+T: 4 0 : 31 : 32 : 0.1
+T: 4 0 : 31 : 34 : 0.1
+T: 4 1 : 31 : 28 : 0.1
+T: 4 1 : 31 : 30 : 0.1
+T: 4 1 : 31 : 31 : 0.1
+T: 4 1 : 31 : 32 : 0.1
+T: 4 1 : 31 : 34 : 0.6
+T: 4 2 : 31 : 28 : 0.1
+T: 4 2 : 31 : 30 : 0.6
+T: 4 2 : 31 : 31 : 0.1
+T: 4 2 : 31 : 32 : 0.1
+T: 4 2 : 31 : 34 : 0.1
+T: 4 3 : 31 : 28 : 0.1
+T: 4 3 : 31 : 30 : 0.1
+T: 4 3 : 31 : 31 : 0.1
+T: 4 3 : 31 : 32 : 0.6
+T: 4 3 : 31 : 34 : 0.1
+T: 4 4 : 31 : 31 : 1.0
+T: 0 0 : 32 : 2 : 0.36
+T: 0 0 : 32 : 4 : 0.06
+T: 0 0 : 32 : 5 : 0.12
+T: 0 0 : 32 : 8 : 0.06
+T: 0 0 : 32 : 29 : 0.12
+T: 0 0 : 32 : 31 : 0.02
+T: 0 0 : 32 : 32 : 0.040
+T: 0 0 : 32 : 35 : 0.02
+T: 0 0 : 32 : 38 : 0.06
+T: 0 0 : 32 : 40 : 0.01
+T: 0 0 : 32 : 41 : 0.02
+T: 0 0 : 32 : 44 : 0.01
+T: 0 0 : 32 : 56 : 0.06
+T: 0 0 : 32 : 58 : 0.01
+T: 0 0 : 32 : 59 : 0.02
+T: 0 0 : 32 : 62 : 0.01
+T: 0 1 : 32 : 2 : 0.06
+T: 0 1 : 32 : 4 : 0.06
+T: 0 1 : 32 : 5 : 0.12
+T: 0 1 : 32 : 8 : 0.36
+T: 0 1 : 32 : 29 : 0.02
+T: 0 1 : 32 : 31 : 0.02
+T: 0 1 : 32 : 32 : 0.040
+T: 0 1 : 32 : 35 : 0.12
+T: 0 1 : 32 : 38 : 0.01
+T: 0 1 : 32 : 40 : 0.01
+T: 0 1 : 32 : 41 : 0.02
+T: 0 1 : 32 : 44 : 0.06
+T: 0 1 : 32 : 56 : 0.01
+T: 0 1 : 32 : 58 : 0.01
+T: 0 1 : 32 : 59 : 0.02
+T: 0 1 : 32 : 62 : 0.06
+T: 0 2 : 32 : 2 : 0.06
+T: 0 2 : 32 : 4 : 0.36
+T: 0 2 : 32 : 5 : 0.12
+T: 0 2 : 32 : 8 : 0.06
+T: 0 2 : 32 : 29 : 0.02
+T: 0 2 : 32 : 31 : 0.12
+T: 0 2 : 32 : 32 : 0.040
+T: 0 2 : 32 : 35 : 0.02
+T: 0 2 : 32 : 38 : 0.01
+T: 0 2 : 32 : 40 : 0.06
+T: 0 2 : 32 : 41 : 0.02
+T: 0 2 : 32 : 44 : 0.01
+T: 0 2 : 32 : 56 : 0.01
+T: 0 2 : 32 : 58 : 0.06
+T: 0 2 : 32 : 59 : 0.02
+T: 0 2 : 32 : 62 : 0.01
+T: 0 3 : 32 : 2 : 0.06
+T: 0 3 : 32 : 4 : 0.06
+T: 0 3 : 32 : 5 : 0.42
+T: 0 3 : 32 : 8 : 0.06
+T: 0 3 : 32 : 29 : 0.02
+T: 0 3 : 32 : 31 : 0.02
+T: 0 3 : 32 : 32 : 0.14
+T: 0 3 : 32 : 35 : 0.02
+T: 0 3 : 32 : 38 : 0.01
+T: 0 3 : 32 : 40 : 0.01
+T: 0 3 : 32 : 41 : 0.07
+T: 0 3 : 32 : 44 : 0.01
+T: 0 3 : 32 : 56 : 0.01
+T: 0 3 : 32 : 58 : 0.01
+T: 0 3 : 32 : 59 : 0.07
+T: 0 3 : 32 : 62 : 0.01
+T: 0 4 : 32 : 5 : 0.6
+T: 0 4 : 32 : 32 : 0.2
+T: 0 4 : 32 : 41 : 0.1
+T: 0 4 : 32 : 59 : 0.1
+T: 1 0 : 32 : 2 : 0.06
+T: 1 0 : 32 : 4 : 0.01
+T: 1 0 : 32 : 5 : 0.02
+T: 1 0 : 32 : 8 : 0.01
+T: 1 0 : 32 : 29 : 0.12
+T: 1 0 : 32 : 31 : 0.02
+T: 1 0 : 32 : 32 : 0.040
+T: 1 0 : 32 : 35 : 0.02
+T: 1 0 : 32 : 38 : 0.06
+T: 1 0 : 32 : 40 : 0.01
+T: 1 0 : 32 : 41 : 0.02
+T: 1 0 : 32 : 44 : 0.01
+T: 1 0 : 32 : 56 : 0.36
+T: 1 0 : 32 : 58 : 0.06
+T: 1 0 : 32 : 59 : 0.12
+T: 1 0 : 32 : 62 : 0.06
+T: 1 1 : 32 : 2 : 0.01
+T: 1 1 : 32 : 4 : 0.01
+T: 1 1 : 32 : 5 : 0.02
+T: 1 1 : 32 : 8 : 0.06
+T: 1 1 : 32 : 29 : 0.02
+T: 1 1 : 32 : 31 : 0.02
+T: 1 1 : 32 : 32 : 0.040
+T: 1 1 : 32 : 35 : 0.12
+T: 1 1 : 32 : 38 : 0.01
+T: 1 1 : 32 : 40 : 0.01
+T: 1 1 : 32 : 41 : 0.02
+T: 1 1 : 32 : 44 : 0.06
+T: 1 1 : 32 : 56 : 0.06
+T: 1 1 : 32 : 58 : 0.06
+T: 1 1 : 32 : 59 : 0.12
+T: 1 1 : 32 : 62 : 0.36
+T: 1 2 : 32 : 2 : 0.01
+T: 1 2 : 32 : 4 : 0.06
+T: 1 2 : 32 : 5 : 0.02
+T: 1 2 : 32 : 8 : 0.01
+T: 1 2 : 32 : 29 : 0.02
+T: 1 2 : 32 : 31 : 0.12
+T: 1 2 : 32 : 32 : 0.040
+T: 1 2 : 32 : 35 : 0.02
+T: 1 2 : 32 : 38 : 0.01
+T: 1 2 : 32 : 40 : 0.06
+T: 1 2 : 32 : 41 : 0.02
+T: 1 2 : 32 : 44 : 0.01
+T: 1 2 : 32 : 56 : 0.06
+T: 1 2 : 32 : 58 : 0.36
+T: 1 2 : 32 : 59 : 0.12
+T: 1 2 : 32 : 62 : 0.06
+T: 1 3 : 32 : 2 : 0.01
+T: 1 3 : 32 : 4 : 0.01
+T: 1 3 : 32 : 5 : 0.07
+T: 1 3 : 32 : 8 : 0.01
+T: 1 3 : 32 : 29 : 0.02
+T: 1 3 : 32 : 31 : 0.02
+T: 1 3 : 32 : 32 : 0.14
+T: 1 3 : 32 : 35 : 0.02
+T: 1 3 : 32 : 38 : 0.01
+T: 1 3 : 32 : 40 : 0.01
+T: 1 3 : 32 : 41 : 0.07
+T: 1 3 : 32 : 44 : 0.01
+T: 1 3 : 32 : 56 : 0.06
+T: 1 3 : 32 : 58 : 0.06
+T: 1 3 : 32 : 59 : 0.42
+T: 1 3 : 32 : 62 : 0.06
+T: 1 4 : 32 : 5 : 0.1
+T: 1 4 : 32 : 32 : 0.2
+T: 1 4 : 32 : 41 : 0.1
+T: 1 4 : 32 : 59 : 0.6
+T: 2 0 : 32 : 2 : 0.06
+T: 2 0 : 32 : 4 : 0.01
+T: 2 0 : 32 : 5 : 0.02
+T: 2 0 : 32 : 8 : 0.01
+T: 2 0 : 32 : 29 : 0.42
+T: 2 0 : 32 : 31 : 0.07
+T: 2 0 : 32 : 32 : 0.14
+T: 2 0 : 32 : 35 : 0.07
+T: 2 0 : 32 : 38 : 0.06
+T: 2 0 : 32 : 40 : 0.01
+T: 2 0 : 32 : 41 : 0.02
+T: 2 0 : 32 : 44 : 0.01
+T: 2 0 : 32 : 56 : 0.06
+T: 2 0 : 32 : 58 : 0.01
+T: 2 0 : 32 : 59 : 0.02
+T: 2 0 : 32 : 62 : 0.01
+T: 2 1 : 32 : 2 : 0.01
+T: 2 1 : 32 : 4 : 0.01
+T: 2 1 : 32 : 5 : 0.02
+T: 2 1 : 32 : 8 : 0.06
+T: 2 1 : 32 : 29 : 0.07
+T: 2 1 : 32 : 31 : 0.07
+T: 2 1 : 32 : 32 : 0.14
+T: 2 1 : 32 : 35 : 0.42
+T: 2 1 : 32 : 38 : 0.01
+T: 2 1 : 32 : 40 : 0.01
+T: 2 1 : 32 : 41 : 0.02
+T: 2 1 : 32 : 44 : 0.06
+T: 2 1 : 32 : 56 : 0.01
+T: 2 1 : 32 : 58 : 0.01
+T: 2 1 : 32 : 59 : 0.02
+T: 2 1 : 32 : 62 : 0.06
+T: 2 2 : 32 : 2 : 0.01
+T: 2 2 : 32 : 4 : 0.06
+T: 2 2 : 32 : 5 : 0.02
+T: 2 2 : 32 : 8 : 0.01
+T: 2 2 : 32 : 29 : 0.07
+T: 2 2 : 32 : 31 : 0.42
+T: 2 2 : 32 : 32 : 0.14
+T: 2 2 : 32 : 35 : 0.07
+T: 2 2 : 32 : 38 : 0.01
+T: 2 2 : 32 : 40 : 0.06
+T: 2 2 : 32 : 41 : 0.02
+T: 2 2 : 32 : 44 : 0.01
+T: 2 2 : 32 : 56 : 0.01
+T: 2 2 : 32 : 58 : 0.06
+T: 2 2 : 32 : 59 : 0.02
+T: 2 2 : 32 : 62 : 0.01
+T: 2 3 : 32 : 2 : 0.01
+T: 2 3 : 32 : 4 : 0.01
+T: 2 3 : 32 : 5 : 0.07
+T: 2 3 : 32 : 8 : 0.01
+T: 2 3 : 32 : 29 : 0.07
+T: 2 3 : 32 : 31 : 0.07
+T: 2 3 : 32 : 32 : 0.49
+T: 2 3 : 32 : 35 : 0.07
+T: 2 3 : 32 : 38 : 0.01
+T: 2 3 : 32 : 40 : 0.01
+T: 2 3 : 32 : 41 : 0.07
+T: 2 3 : 32 : 44 : 0.01
+T: 2 3 : 32 : 56 : 0.01
+T: 2 3 : 32 : 58 : 0.01
+T: 2 3 : 32 : 59 : 0.07
+T: 2 3 : 32 : 62 : 0.01
+T: 2 4 : 32 : 5 : 0.1
+T: 2 4 : 32 : 32 : 0.7
+T: 2 4 : 32 : 41 : 0.1
+T: 2 4 : 32 : 59 : 0.1
+T: 3 0 : 32 : 2 : 0.06
+T: 3 0 : 32 : 4 : 0.01
+T: 3 0 : 32 : 5 : 0.02
+T: 3 0 : 32 : 8 : 0.01
+T: 3 0 : 32 : 29 : 0.12
+T: 3 0 : 32 : 31 : 0.02
+T: 3 0 : 32 : 32 : 0.040
+T: 3 0 : 32 : 35 : 0.02
+T: 3 0 : 32 : 38 : 0.36
+T: 3 0 : 32 : 40 : 0.06
+T: 3 0 : 32 : 41 : 0.12
+T: 3 0 : 32 : 44 : 0.06
+T: 3 0 : 32 : 56 : 0.06
+T: 3 0 : 32 : 58 : 0.01
+T: 3 0 : 32 : 59 : 0.02
+T: 3 0 : 32 : 62 : 0.01
+T: 3 1 : 32 : 2 : 0.01
+T: 3 1 : 32 : 4 : 0.01
+T: 3 1 : 32 : 5 : 0.02
+T: 3 1 : 32 : 8 : 0.06
+T: 3 1 : 32 : 29 : 0.02
+T: 3 1 : 32 : 31 : 0.02
+T: 3 1 : 32 : 32 : 0.040
+T: 3 1 : 32 : 35 : 0.12
+T: 3 1 : 32 : 38 : 0.06
+T: 3 1 : 32 : 40 : 0.06
+T: 3 1 : 32 : 41 : 0.12
+T: 3 1 : 32 : 44 : 0.36
+T: 3 1 : 32 : 56 : 0.01
+T: 3 1 : 32 : 58 : 0.01
+T: 3 1 : 32 : 59 : 0.02
+T: 3 1 : 32 : 62 : 0.06
+T: 3 2 : 32 : 2 : 0.01
+T: 3 2 : 32 : 4 : 0.06
+T: 3 2 : 32 : 5 : 0.02
+T: 3 2 : 32 : 8 : 0.01
+T: 3 2 : 32 : 29 : 0.02
+T: 3 2 : 32 : 31 : 0.12
+T: 3 2 : 32 : 32 : 0.040
+T: 3 2 : 32 : 35 : 0.02
+T: 3 2 : 32 : 38 : 0.06
+T: 3 2 : 32 : 40 : 0.36
+T: 3 2 : 32 : 41 : 0.12
+T: 3 2 : 32 : 44 : 0.06
+T: 3 2 : 32 : 56 : 0.01
+T: 3 2 : 32 : 58 : 0.06
+T: 3 2 : 32 : 59 : 0.02
+T: 3 2 : 32 : 62 : 0.01
+T: 3 3 : 32 : 2 : 0.01
+T: 3 3 : 32 : 4 : 0.01
+T: 3 3 : 32 : 5 : 0.07
+T: 3 3 : 32 : 8 : 0.01
+T: 3 3 : 32 : 29 : 0.02
+T: 3 3 : 32 : 31 : 0.02
+T: 3 3 : 32 : 32 : 0.14
+T: 3 3 : 32 : 35 : 0.02
+T: 3 3 : 32 : 38 : 0.06
+T: 3 3 : 32 : 40 : 0.06
+T: 3 3 : 32 : 41 : 0.42
+T: 3 3 : 32 : 44 : 0.06
+T: 3 3 : 32 : 56 : 0.01
+T: 3 3 : 32 : 58 : 0.01
+T: 3 3 : 32 : 59 : 0.07
+T: 3 3 : 32 : 62 : 0.01
+T: 3 4 : 32 : 5 : 0.1
+T: 3 4 : 32 : 32 : 0.2
+T: 3 4 : 32 : 41 : 0.6
+T: 3 4 : 32 : 59 : 0.1
+T: 4 0 : 32 : 29 : 0.6
+T: 4 0 : 32 : 31 : 0.1
+T: 4 0 : 32 : 32 : 0.2
+T: 4 0 : 32 : 35 : 0.1
+T: 4 1 : 32 : 29 : 0.1
+T: 4 1 : 32 : 31 : 0.1
+T: 4 1 : 32 : 32 : 0.2
+T: 4 1 : 32 : 35 : 0.6
+T: 4 2 : 32 : 29 : 0.1
+T: 4 2 : 32 : 31 : 0.6
+T: 4 2 : 32 : 32 : 0.2
+T: 4 2 : 32 : 35 : 0.1
+T: 4 3 : 32 : 29 : 0.1
+T: 4 3 : 32 : 31 : 0.1
+T: 4 3 : 32 : 32 : 0.7
+T: 4 3 : 32 : 35 : 0.1
+T: 4 4 : 32 : 32 : 1.0
+T: 0 0 : 33 : 3 : 0.36
+T: 0 0 : 33 : 6 : 0.18
+T: 0 0 : 33 : 7 : 0.06
+T: 0 0 : 33 : 30 : 0.12
+T: 0 0 : 33 : 33 : 0.060
+T: 0 0 : 33 : 34 : 0.02
+T: 0 0 : 33 : 39 : 0.06
+T: 0 0 : 33 : 42 : 0.03
+T: 0 0 : 33 : 43 : 0.01
+T: 0 0 : 33 : 57 : 0.06
+T: 0 0 : 33 : 60 : 0.03
+T: 0 0 : 33 : 61 : 0.01
+T: 0 1 : 33 : 3 : 0.06
+T: 0 1 : 33 : 6 : 0.48
+T: 0 1 : 33 : 7 : 0.06
+T: 0 1 : 33 : 30 : 0.02
+T: 0 1 : 33 : 33 : 0.16
+T: 0 1 : 33 : 34 : 0.02
+T: 0 1 : 33 : 39 : 0.01
+T: 0 1 : 33 : 42 : 0.08
+T: 0 1 : 33 : 43 : 0.01
+T: 0 1 : 33 : 57 : 0.01
+T: 0 1 : 33 : 60 : 0.08
+T: 0 1 : 33 : 61 : 0.01
+T: 0 2 : 33 : 3 : 0.06
+T: 0 2 : 33 : 6 : 0.48
+T: 0 2 : 33 : 7 : 0.06
+T: 0 2 : 33 : 30 : 0.02
+T: 0 2 : 33 : 33 : 0.16
+T: 0 2 : 33 : 34 : 0.02
+T: 0 2 : 33 : 39 : 0.01
+T: 0 2 : 33 : 42 : 0.08
+T: 0 2 : 33 : 43 : 0.01
+T: 0 2 : 33 : 57 : 0.01
+T: 0 2 : 33 : 60 : 0.08
+T: 0 2 : 33 : 61 : 0.01
+T: 0 3 : 33 : 3 : 0.06
+T: 0 3 : 33 : 6 : 0.18
+T: 0 3 : 33 : 7 : 0.36
+T: 0 3 : 33 : 30 : 0.02
+T: 0 3 : 33 : 33 : 0.060
+T: 0 3 : 33 : 34 : 0.12
+T: 0 3 : 33 : 39 : 0.01
+T: 0 3 : 33 : 42 : 0.03
+T: 0 3 : 33 : 43 : 0.06
+T: 0 3 : 33 : 57 : 0.01
+T: 0 3 : 33 : 60 : 0.03
+T: 0 3 : 33 : 61 : 0.06
+T: 0 4 : 33 : 6 : 0.6
+T: 0 4 : 33 : 33 : 0.2
+T: 0 4 : 33 : 42 : 0.1
+T: 0 4 : 33 : 60 : 0.1
+T: 1 0 : 33 : 3 : 0.06
+T: 1 0 : 33 : 6 : 0.03
+T: 1 0 : 33 : 7 : 0.01
+T: 1 0 : 33 : 30 : 0.12
+T: 1 0 : 33 : 33 : 0.060
+T: 1 0 : 33 : 34 : 0.02
+T: 1 0 : 33 : 39 : 0.06
+T: 1 0 : 33 : 42 : 0.03
+T: 1 0 : 33 : 43 : 0.01
+T: 1 0 : 33 : 57 : 0.36
+T: 1 0 : 33 : 60 : 0.18
+T: 1 0 : 33 : 61 : 0.06
+T: 1 1 : 33 : 3 : 0.01
+T: 1 1 : 33 : 6 : 0.08
+T: 1 1 : 33 : 7 : 0.01
+T: 1 1 : 33 : 30 : 0.02
+T: 1 1 : 33 : 33 : 0.16
+T: 1 1 : 33 : 34 : 0.02
+T: 1 1 : 33 : 39 : 0.01
+T: 1 1 : 33 : 42 : 0.08
+T: 1 1 : 33 : 43 : 0.01
+T: 1 1 : 33 : 57 : 0.06
+T: 1 1 : 33 : 60 : 0.48
+T: 1 1 : 33 : 61 : 0.06
+T: 1 2 : 33 : 3 : 0.01
+T: 1 2 : 33 : 6 : 0.08
+T: 1 2 : 33 : 7 : 0.01
+T: 1 2 : 33 : 30 : 0.02
+T: 1 2 : 33 : 33 : 0.16
+T: 1 2 : 33 : 34 : 0.02
+T: 1 2 : 33 : 39 : 0.01
+T: 1 2 : 33 : 42 : 0.08
+T: 1 2 : 33 : 43 : 0.01
+T: 1 2 : 33 : 57 : 0.06
+T: 1 2 : 33 : 60 : 0.48
+T: 1 2 : 33 : 61 : 0.06
+T: 1 3 : 33 : 3 : 0.01
+T: 1 3 : 33 : 6 : 0.03
+T: 1 3 : 33 : 7 : 0.06
+T: 1 3 : 33 : 30 : 0.02
+T: 1 3 : 33 : 33 : 0.060
+T: 1 3 : 33 : 34 : 0.12
+T: 1 3 : 33 : 39 : 0.01
+T: 1 3 : 33 : 42 : 0.03
+T: 1 3 : 33 : 43 : 0.06
+T: 1 3 : 33 : 57 : 0.06
+T: 1 3 : 33 : 60 : 0.18
+T: 1 3 : 33 : 61 : 0.36
+T: 1 4 : 33 : 6 : 0.1
+T: 1 4 : 33 : 33 : 0.2
+T: 1 4 : 33 : 42 : 0.1
+T: 1 4 : 33 : 60 : 0.6
+T: 2 0 : 33 : 3 : 0.06
+T: 2 0 : 33 : 6 : 0.03
+T: 2 0 : 33 : 7 : 0.01
+T: 2 0 : 33 : 30 : 0.42
+T: 2 0 : 33 : 33 : 0.21
+T: 2 0 : 33 : 34 : 0.07
+T: 2 0 : 33 : 39 : 0.06
+T: 2 0 : 33 : 42 : 0.03
+T: 2 0 : 33 : 43 : 0.01
+T: 2 0 : 33 : 57 : 0.06
+T: 2 0 : 33 : 60 : 0.03
+T: 2 0 : 33 : 61 : 0.01
+T: 2 1 : 33 : 3 : 0.01
+T: 2 1 : 33 : 6 : 0.08
+T: 2 1 : 33 : 7 : 0.01
+T: 2 1 : 33 : 30 : 0.07
+T: 2 1 : 33 : 33 : 0.56
+T: 2 1 : 33 : 34 : 0.07
+T: 2 1 : 33 : 39 : 0.01
+T: 2 1 : 33 : 42 : 0.08
+T: 2 1 : 33 : 43 : 0.01
+T: 2 1 : 33 : 57 : 0.01
+T: 2 1 : 33 : 60 : 0.08
+T: 2 1 : 33 : 61 : 0.01
+T: 2 2 : 33 : 3 : 0.01
+T: 2 2 : 33 : 6 : 0.08
+T: 2 2 : 33 : 7 : 0.01
+T: 2 2 : 33 : 30 : 0.07
+T: 2 2 : 33 : 33 : 0.56
+T: 2 2 : 33 : 34 : 0.07
+T: 2 2 : 33 : 39 : 0.01
+T: 2 2 : 33 : 42 : 0.08
+T: 2 2 : 33 : 43 : 0.01
+T: 2 2 : 33 : 57 : 0.01
+T: 2 2 : 33 : 60 : 0.08
+T: 2 2 : 33 : 61 : 0.01
+T: 2 3 : 33 : 3 : 0.01
+T: 2 3 : 33 : 6 : 0.03
+T: 2 3 : 33 : 7 : 0.06
+T: 2 3 : 33 : 30 : 0.07
+T: 2 3 : 33 : 33 : 0.21
+T: 2 3 : 33 : 34 : 0.42
+T: 2 3 : 33 : 39 : 0.01
+T: 2 3 : 33 : 42 : 0.03
+T: 2 3 : 33 : 43 : 0.06
+T: 2 3 : 33 : 57 : 0.01
+T: 2 3 : 33 : 60 : 0.03
+T: 2 3 : 33 : 61 : 0.06
+T: 2 4 : 33 : 6 : 0.1
+T: 2 4 : 33 : 33 : 0.7
+T: 2 4 : 33 : 42 : 0.1
+T: 2 4 : 33 : 60 : 0.1
+T: 3 0 : 33 : 3 : 0.06
+T: 3 0 : 33 : 6 : 0.03
+T: 3 0 : 33 : 7 : 0.01
+T: 3 0 : 33 : 30 : 0.12
+T: 3 0 : 33 : 33 : 0.060
+T: 3 0 : 33 : 34 : 0.02
+T: 3 0 : 33 : 39 : 0.36
+T: 3 0 : 33 : 42 : 0.18
+T: 3 0 : 33 : 43 : 0.06
+T: 3 0 : 33 : 57 : 0.06
+T: 3 0 : 33 : 60 : 0.03
+T: 3 0 : 33 : 61 : 0.01
+T: 3 1 : 33 : 3 : 0.01
+T: 3 1 : 33 : 6 : 0.08
+T: 3 1 : 33 : 7 : 0.01
+T: 3 1 : 33 : 30 : 0.02
+T: 3 1 : 33 : 33 : 0.16
+T: 3 1 : 33 : 34 : 0.02
+T: 3 1 : 33 : 39 : 0.06
+T: 3 1 : 33 : 42 : 0.48
+T: 3 1 : 33 : 43 : 0.06
+T: 3 1 : 33 : 57 : 0.01
+T: 3 1 : 33 : 60 : 0.08
+T: 3 1 : 33 : 61 : 0.01
+T: 3 2 : 33 : 3 : 0.01
+T: 3 2 : 33 : 6 : 0.08
+T: 3 2 : 33 : 7 : 0.01
+T: 3 2 : 33 : 30 : 0.02
+T: 3 2 : 33 : 33 : 0.16
+T: 3 2 : 33 : 34 : 0.02
+T: 3 2 : 33 : 39 : 0.06
+T: 3 2 : 33 : 42 : 0.48
+T: 3 2 : 33 : 43 : 0.06
+T: 3 2 : 33 : 57 : 0.01
+T: 3 2 : 33 : 60 : 0.08
+T: 3 2 : 33 : 61 : 0.01
+T: 3 3 : 33 : 3 : 0.01
+T: 3 3 : 33 : 6 : 0.03
+T: 3 3 : 33 : 7 : 0.06
+T: 3 3 : 33 : 30 : 0.02
+T: 3 3 : 33 : 33 : 0.060
+T: 3 3 : 33 : 34 : 0.12
+T: 3 3 : 33 : 39 : 0.06
+T: 3 3 : 33 : 42 : 0.18
+T: 3 3 : 33 : 43 : 0.36
+T: 3 3 : 33 : 57 : 0.01
+T: 3 3 : 33 : 60 : 0.03
+T: 3 3 : 33 : 61 : 0.06
+T: 3 4 : 33 : 6 : 0.1
+T: 3 4 : 33 : 33 : 0.2
+T: 3 4 : 33 : 42 : 0.6
+T: 3 4 : 33 : 60 : 0.1
+T: 4 0 : 33 : 30 : 0.6
+T: 4 0 : 33 : 33 : 0.3
+T: 4 0 : 33 : 34 : 0.1
+T: 4 1 : 33 : 30 : 0.1
+T: 4 1 : 33 : 33 : 0.8
+T: 4 1 : 33 : 34 : 0.1
+T: 4 2 : 33 : 30 : 0.1
+T: 4 2 : 33 : 33 : 0.8
+T: 4 2 : 33 : 34 : 0.1
+T: 4 3 : 33 : 30 : 0.1
+T: 4 3 : 33 : 33 : 0.3
+T: 4 3 : 33 : 34 : 0.6
+T: 4 4 : 33 : 33 : 1.0
+T: 0 0 : 34 : 4 : 0.36
+T: 0 0 : 34 : 6 : 0.06
+T: 0 0 : 34 : 7 : 0.12
+T: 0 0 : 34 : 8 : 0.06
+T: 0 0 : 34 : 31 : 0.12
+T: 0 0 : 34 : 33 : 0.02
+T: 0 0 : 34 : 34 : 0.040
+T: 0 0 : 34 : 35 : 0.02
+T: 0 0 : 34 : 40 : 0.06
+T: 0 0 : 34 : 42 : 0.01
+T: 0 0 : 34 : 43 : 0.02
+T: 0 0 : 34 : 44 : 0.01
+T: 0 0 : 34 : 58 : 0.06
+T: 0 0 : 34 : 60 : 0.01
+T: 0 0 : 34 : 61 : 0.02
+T: 0 0 : 34 : 62 : 0.01
+T: 0 1 : 34 : 4 : 0.06
+T: 0 1 : 34 : 6 : 0.06
+T: 0 1 : 34 : 7 : 0.42
+T: 0 1 : 34 : 8 : 0.06
+T: 0 1 : 34 : 31 : 0.02
+T: 0 1 : 34 : 33 : 0.02
+T: 0 1 : 34 : 34 : 0.14
+T: 0 1 : 34 : 35 : 0.02
+T: 0 1 : 34 : 40 : 0.01
+T: 0 1 : 34 : 42 : 0.01
+T: 0 1 : 34 : 43 : 0.07
+T: 0 1 : 34 : 44 : 0.01
+T: 0 1 : 34 : 58 : 0.01
+T: 0 1 : 34 : 60 : 0.01
+T: 0 1 : 34 : 61 : 0.07
+T: 0 1 : 34 : 62 : 0.01
+T: 0 2 : 34 : 4 : 0.06
+T: 0 2 : 34 : 6 : 0.36
+T: 0 2 : 34 : 7 : 0.12
+T: 0 2 : 34 : 8 : 0.06
+T: 0 2 : 34 : 31 : 0.02
+T: 0 2 : 34 : 33 : 0.12
+T: 0 2 : 34 : 34 : 0.040
+T: 0 2 : 34 : 35 : 0.02
+T: 0 2 : 34 : 40 : 0.01
+T: 0 2 : 34 : 42 : 0.06
+T: 0 2 : 34 : 43 : 0.02
+T: 0 2 : 34 : 44 : 0.01
+T: 0 2 : 34 : 58 : 0.01
+T: 0 2 : 34 : 60 : 0.06
+T: 0 2 : 34 : 61 : 0.02
+T: 0 2 : 34 : 62 : 0.01
+T: 0 3 : 34 : 4 : 0.06
+T: 0 3 : 34 : 6 : 0.06
+T: 0 3 : 34 : 7 : 0.12
+T: 0 3 : 34 : 8 : 0.36
+T: 0 3 : 34 : 31 : 0.02
+T: 0 3 : 34 : 33 : 0.02
+T: 0 3 : 34 : 34 : 0.040
+T: 0 3 : 34 : 35 : 0.12
+T: 0 3 : 34 : 40 : 0.01
+T: 0 3 : 34 : 42 : 0.01
+T: 0 3 : 34 : 43 : 0.02
+T: 0 3 : 34 : 44 : 0.06
+T: 0 3 : 34 : 58 : 0.01
+T: 0 3 : 34 : 60 : 0.01
+T: 0 3 : 34 : 61 : 0.02
+T: 0 3 : 34 : 62 : 0.06
+T: 0 4 : 34 : 7 : 0.6
+T: 0 4 : 34 : 34 : 0.2
+T: 0 4 : 34 : 43 : 0.1
+T: 0 4 : 34 : 61 : 0.1
+T: 1 0 : 34 : 4 : 0.06
+T: 1 0 : 34 : 6 : 0.01
+T: 1 0 : 34 : 7 : 0.02
+T: 1 0 : 34 : 8 : 0.01
+T: 1 0 : 34 : 31 : 0.12
+T: 1 0 : 34 : 33 : 0.02
+T: 1 0 : 34 : 34 : 0.040
+T: 1 0 : 34 : 35 : 0.02
+T: 1 0 : 34 : 40 : 0.06
+T: 1 0 : 34 : 42 : 0.01
+T: 1 0 : 34 : 43 : 0.02
+T: 1 0 : 34 : 44 : 0.01
+T: 1 0 : 34 : 58 : 0.36
+T: 1 0 : 34 : 60 : 0.06
+T: 1 0 : 34 : 61 : 0.12
+T: 1 0 : 34 : 62 : 0.06
+T: 1 1 : 34 : 4 : 0.01
+T: 1 1 : 34 : 6 : 0.01
+T: 1 1 : 34 : 7 : 0.07
+T: 1 1 : 34 : 8 : 0.01
+T: 1 1 : 34 : 31 : 0.02
+T: 1 1 : 34 : 33 : 0.02
+T: 1 1 : 34 : 34 : 0.14
+T: 1 1 : 34 : 35 : 0.02
+T: 1 1 : 34 : 40 : 0.01
+T: 1 1 : 34 : 42 : 0.01
+T: 1 1 : 34 : 43 : 0.07
+T: 1 1 : 34 : 44 : 0.01
+T: 1 1 : 34 : 58 : 0.06
+T: 1 1 : 34 : 60 : 0.06
+T: 1 1 : 34 : 61 : 0.42
+T: 1 1 : 34 : 62 : 0.06
+T: 1 2 : 34 : 4 : 0.01
+T: 1 2 : 34 : 6 : 0.06
+T: 1 2 : 34 : 7 : 0.02
+T: 1 2 : 34 : 8 : 0.01
+T: 1 2 : 34 : 31 : 0.02
+T: 1 2 : 34 : 33 : 0.12
+T: 1 2 : 34 : 34 : 0.040
+T: 1 2 : 34 : 35 : 0.02
+T: 1 2 : 34 : 40 : 0.01
+T: 1 2 : 34 : 42 : 0.06
+T: 1 2 : 34 : 43 : 0.02
+T: 1 2 : 34 : 44 : 0.01
+T: 1 2 : 34 : 58 : 0.06
+T: 1 2 : 34 : 60 : 0.36
+T: 1 2 : 34 : 61 : 0.12
+T: 1 2 : 34 : 62 : 0.06
+T: 1 3 : 34 : 4 : 0.01
+T: 1 3 : 34 : 6 : 0.01
+T: 1 3 : 34 : 7 : 0.02
+T: 1 3 : 34 : 8 : 0.06
+T: 1 3 : 34 : 31 : 0.02
+T: 1 3 : 34 : 33 : 0.02
+T: 1 3 : 34 : 34 : 0.040
+T: 1 3 : 34 : 35 : 0.12
+T: 1 3 : 34 : 40 : 0.01
+T: 1 3 : 34 : 42 : 0.01
+T: 1 3 : 34 : 43 : 0.02
+T: 1 3 : 34 : 44 : 0.06
+T: 1 3 : 34 : 58 : 0.06
+T: 1 3 : 34 : 60 : 0.06
+T: 1 3 : 34 : 61 : 0.12
+T: 1 3 : 34 : 62 : 0.36
+T: 1 4 : 34 : 7 : 0.1
+T: 1 4 : 34 : 34 : 0.2
+T: 1 4 : 34 : 43 : 0.1
+T: 1 4 : 34 : 61 : 0.6
+T: 2 0 : 34 : 4 : 0.06
+T: 2 0 : 34 : 6 : 0.01
+T: 2 0 : 34 : 7 : 0.02
+T: 2 0 : 34 : 8 : 0.01
+T: 2 0 : 34 : 31 : 0.42
+T: 2 0 : 34 : 33 : 0.07
+T: 2 0 : 34 : 34 : 0.14
+T: 2 0 : 34 : 35 : 0.07
+T: 2 0 : 34 : 40 : 0.06
+T: 2 0 : 34 : 42 : 0.01
+T: 2 0 : 34 : 43 : 0.02
+T: 2 0 : 34 : 44 : 0.01
+T: 2 0 : 34 : 58 : 0.06
+T: 2 0 : 34 : 60 : 0.01
+T: 2 0 : 34 : 61 : 0.02
+T: 2 0 : 34 : 62 : 0.01
+T: 2 1 : 34 : 4 : 0.01
+T: 2 1 : 34 : 6 : 0.01
+T: 2 1 : 34 : 7 : 0.07
+T: 2 1 : 34 : 8 : 0.01
+T: 2 1 : 34 : 31 : 0.07
+T: 2 1 : 34 : 33 : 0.07
+T: 2 1 : 34 : 34 : 0.49
+T: 2 1 : 34 : 35 : 0.07
+T: 2 1 : 34 : 40 : 0.01
+T: 2 1 : 34 : 42 : 0.01
+T: 2 1 : 34 : 43 : 0.07
+T: 2 1 : 34 : 44 : 0.01
+T: 2 1 : 34 : 58 : 0.01
+T: 2 1 : 34 : 60 : 0.01
+T: 2 1 : 34 : 61 : 0.07
+T: 2 1 : 34 : 62 : 0.01
+T: 2 2 : 34 : 4 : 0.01
+T: 2 2 : 34 : 6 : 0.06
+T: 2 2 : 34 : 7 : 0.02
+T: 2 2 : 34 : 8 : 0.01
+T: 2 2 : 34 : 31 : 0.07
+T: 2 2 : 34 : 33 : 0.42
+T: 2 2 : 34 : 34 : 0.14
+T: 2 2 : 34 : 35 : 0.07
+T: 2 2 : 34 : 40 : 0.01
+T: 2 2 : 34 : 42 : 0.06
+T: 2 2 : 34 : 43 : 0.02
+T: 2 2 : 34 : 44 : 0.01
+T: 2 2 : 34 : 58 : 0.01
+T: 2 2 : 34 : 60 : 0.06
+T: 2 2 : 34 : 61 : 0.02
+T: 2 2 : 34 : 62 : 0.01
+T: 2 3 : 34 : 4 : 0.01
+T: 2 3 : 34 : 6 : 0.01
+T: 2 3 : 34 : 7 : 0.02
+T: 2 3 : 34 : 8 : 0.06
+T: 2 3 : 34 : 31 : 0.07
+T: 2 3 : 34 : 33 : 0.07
+T: 2 3 : 34 : 34 : 0.14
+T: 2 3 : 34 : 35 : 0.42
+T: 2 3 : 34 : 40 : 0.01
+T: 2 3 : 34 : 42 : 0.01
+T: 2 3 : 34 : 43 : 0.02
+T: 2 3 : 34 : 44 : 0.06
+T: 2 3 : 34 : 58 : 0.01
+T: 2 3 : 34 : 60 : 0.01
+T: 2 3 : 34 : 61 : 0.02
+T: 2 3 : 34 : 62 : 0.06
+T: 2 4 : 34 : 7 : 0.1
+T: 2 4 : 34 : 34 : 0.7
+T: 2 4 : 34 : 43 : 0.1
+T: 2 4 : 34 : 61 : 0.1
+T: 3 0 : 34 : 4 : 0.06
+T: 3 0 : 34 : 6 : 0.01
+T: 3 0 : 34 : 7 : 0.02
+T: 3 0 : 34 : 8 : 0.01
+T: 3 0 : 34 : 31 : 0.12
+T: 3 0 : 34 : 33 : 0.02
+T: 3 0 : 34 : 34 : 0.040
+T: 3 0 : 34 : 35 : 0.02
+T: 3 0 : 34 : 40 : 0.36
+T: 3 0 : 34 : 42 : 0.06
+T: 3 0 : 34 : 43 : 0.12
+T: 3 0 : 34 : 44 : 0.06
+T: 3 0 : 34 : 58 : 0.06
+T: 3 0 : 34 : 60 : 0.01
+T: 3 0 : 34 : 61 : 0.02
+T: 3 0 : 34 : 62 : 0.01
+T: 3 1 : 34 : 4 : 0.01
+T: 3 1 : 34 : 6 : 0.01
+T: 3 1 : 34 : 7 : 0.07
+T: 3 1 : 34 : 8 : 0.01
+T: 3 1 : 34 : 31 : 0.02
+T: 3 1 : 34 : 33 : 0.02
+T: 3 1 : 34 : 34 : 0.14
+T: 3 1 : 34 : 35 : 0.02
+T: 3 1 : 34 : 40 : 0.06
+T: 3 1 : 34 : 42 : 0.06
+T: 3 1 : 34 : 43 : 0.42
+T: 3 1 : 34 : 44 : 0.06
+T: 3 1 : 34 : 58 : 0.01
+T: 3 1 : 34 : 60 : 0.01
+T: 3 1 : 34 : 61 : 0.07
+T: 3 1 : 34 : 62 : 0.01
+T: 3 2 : 34 : 4 : 0.01
+T: 3 2 : 34 : 6 : 0.06
+T: 3 2 : 34 : 7 : 0.02
+T: 3 2 : 34 : 8 : 0.01
+T: 3 2 : 34 : 31 : 0.02
+T: 3 2 : 34 : 33 : 0.12
+T: 3 2 : 34 : 34 : 0.040
+T: 3 2 : 34 : 35 : 0.02
+T: 3 2 : 34 : 40 : 0.06
+T: 3 2 : 34 : 42 : 0.36
+T: 3 2 : 34 : 43 : 0.12
+T: 3 2 : 34 : 44 : 0.06
+T: 3 2 : 34 : 58 : 0.01
+T: 3 2 : 34 : 60 : 0.06
+T: 3 2 : 34 : 61 : 0.02
+T: 3 2 : 34 : 62 : 0.01
+T: 3 3 : 34 : 4 : 0.01
+T: 3 3 : 34 : 6 : 0.01
+T: 3 3 : 34 : 7 : 0.02
+T: 3 3 : 34 : 8 : 0.06
+T: 3 3 : 34 : 31 : 0.02
+T: 3 3 : 34 : 33 : 0.02
+T: 3 3 : 34 : 34 : 0.040
+T: 3 3 : 34 : 35 : 0.12
+T: 3 3 : 34 : 40 : 0.06
+T: 3 3 : 34 : 42 : 0.06
+T: 3 3 : 34 : 43 : 0.12
+T: 3 3 : 34 : 44 : 0.36
+T: 3 3 : 34 : 58 : 0.01
+T: 3 3 : 34 : 60 : 0.01
+T: 3 3 : 34 : 61 : 0.02
+T: 3 3 : 34 : 62 : 0.06
+T: 3 4 : 34 : 7 : 0.1
+T: 3 4 : 34 : 34 : 0.2
+T: 3 4 : 34 : 43 : 0.6
+T: 3 4 : 34 : 61 : 0.1
+T: 4 0 : 34 : 31 : 0.6
+T: 4 0 : 34 : 33 : 0.1
+T: 4 0 : 34 : 34 : 0.2
+T: 4 0 : 34 : 35 : 0.1
+T: 4 1 : 34 : 31 : 0.1
+T: 4 1 : 34 : 33 : 0.1
+T: 4 1 : 34 : 34 : 0.7
+T: 4 1 : 34 : 35 : 0.1
+T: 4 2 : 34 : 31 : 0.1
+T: 4 2 : 34 : 33 : 0.6
+T: 4 2 : 34 : 34 : 0.2
+T: 4 2 : 34 : 35 : 0.1
+T: 4 3 : 34 : 31 : 0.1
+T: 4 3 : 34 : 33 : 0.1
+T: 4 3 : 34 : 34 : 0.2
+T: 4 3 : 34 : 35 : 0.6
+T: 4 4 : 34 : 34 : 1.0
+T: 0 0 : 35 : 5 : 0.36
+T: 0 0 : 35 : 7 : 0.06
+T: 0 0 : 35 : 8 : 0.18
+T: 0 0 : 35 : 32 : 0.12
+T: 0 0 : 35 : 34 : 0.02
+T: 0 0 : 35 : 35 : 0.060
+T: 0 0 : 35 : 41 : 0.06
+T: 0 0 : 35 : 43 : 0.01
+T: 0 0 : 35 : 44 : 0.03
+T: 0 0 : 35 : 59 : 0.06
+T: 0 0 : 35 : 61 : 0.01
+T: 0 0 : 35 : 62 : 0.03
+T: 0 1 : 35 : 5 : 0.06
+T: 0 1 : 35 : 7 : 0.06
+T: 0 1 : 35 : 8 : 0.48
+T: 0 1 : 35 : 32 : 0.02
+T: 0 1 : 35 : 34 : 0.02
+T: 0 1 : 35 : 35 : 0.16
+T: 0 1 : 35 : 41 : 0.01
+T: 0 1 : 35 : 43 : 0.01
+T: 0 1 : 35 : 44 : 0.08
+T: 0 1 : 35 : 59 : 0.01
+T: 0 1 : 35 : 61 : 0.01
+T: 0 1 : 35 : 62 : 0.08
+T: 0 2 : 35 : 5 : 0.06
+T: 0 2 : 35 : 7 : 0.36
+T: 0 2 : 35 : 8 : 0.18
+T: 0 2 : 35 : 32 : 0.02
+T: 0 2 : 35 : 34 : 0.12
+T: 0 2 : 35 : 35 : 0.060
+T: 0 2 : 35 : 41 : 0.01
+T: 0 2 : 35 : 43 : 0.06
+T: 0 2 : 35 : 44 : 0.03
+T: 0 2 : 35 : 59 : 0.01
+T: 0 2 : 35 : 61 : 0.06
+T: 0 2 : 35 : 62 : 0.03
+T: 0 3 : 35 : 5 : 0.06
+T: 0 3 : 35 : 7 : 0.06
+T: 0 3 : 35 : 8 : 0.48
+T: 0 3 : 35 : 32 : 0.02
+T: 0 3 : 35 : 34 : 0.02
+T: 0 3 : 35 : 35 : 0.16
+T: 0 3 : 35 : 41 : 0.01
+T: 0 3 : 35 : 43 : 0.01
+T: 0 3 : 35 : 44 : 0.08
+T: 0 3 : 35 : 59 : 0.01
+T: 0 3 : 35 : 61 : 0.01
+T: 0 3 : 35 : 62 : 0.08
+T: 0 4 : 35 : 8 : 0.6
+T: 0 4 : 35 : 35 : 0.2
+T: 0 4 : 35 : 44 : 0.1
+T: 0 4 : 35 : 62 : 0.1
+T: 1 0 : 35 : 5 : 0.06
+T: 1 0 : 35 : 7 : 0.01
+T: 1 0 : 35 : 8 : 0.03
+T: 1 0 : 35 : 32 : 0.12
+T: 1 0 : 35 : 34 : 0.02
+T: 1 0 : 35 : 35 : 0.060
+T: 1 0 : 35 : 41 : 0.06
+T: 1 0 : 35 : 43 : 0.01
+T: 1 0 : 35 : 44 : 0.03
+T: 1 0 : 35 : 59 : 0.36
+T: 1 0 : 35 : 61 : 0.06
+T: 1 0 : 35 : 62 : 0.18
+T: 1 1 : 35 : 5 : 0.01
+T: 1 1 : 35 : 7 : 0.01
+T: 1 1 : 35 : 8 : 0.08
+T: 1 1 : 35 : 32 : 0.02
+T: 1 1 : 35 : 34 : 0.02
+T: 1 1 : 35 : 35 : 0.16
+T: 1 1 : 35 : 41 : 0.01
+T: 1 1 : 35 : 43 : 0.01
+T: 1 1 : 35 : 44 : 0.08
+T: 1 1 : 35 : 59 : 0.06
+T: 1 1 : 35 : 61 : 0.06
+T: 1 1 : 35 : 62 : 0.48
+T: 1 2 : 35 : 5 : 0.01
+T: 1 2 : 35 : 7 : 0.06
+T: 1 2 : 35 : 8 : 0.03
+T: 1 2 : 35 : 32 : 0.02
+T: 1 2 : 35 : 34 : 0.12
+T: 1 2 : 35 : 35 : 0.060
+T: 1 2 : 35 : 41 : 0.01
+T: 1 2 : 35 : 43 : 0.06
+T: 1 2 : 35 : 44 : 0.03
+T: 1 2 : 35 : 59 : 0.06
+T: 1 2 : 35 : 61 : 0.36
+T: 1 2 : 35 : 62 : 0.18
+T: 1 3 : 35 : 5 : 0.01
+T: 1 3 : 35 : 7 : 0.01
+T: 1 3 : 35 : 8 : 0.08
+T: 1 3 : 35 : 32 : 0.02
+T: 1 3 : 35 : 34 : 0.02
+T: 1 3 : 35 : 35 : 0.16
+T: 1 3 : 35 : 41 : 0.01
+T: 1 3 : 35 : 43 : 0.01
+T: 1 3 : 35 : 44 : 0.08
+T: 1 3 : 35 : 59 : 0.06
+T: 1 3 : 35 : 61 : 0.06
+T: 1 3 : 35 : 62 : 0.48
+T: 1 4 : 35 : 8 : 0.1
+T: 1 4 : 35 : 35 : 0.2
+T: 1 4 : 35 : 44 : 0.1
+T: 1 4 : 35 : 62 : 0.6
+T: 2 0 : 35 : 5 : 0.06
+T: 2 0 : 35 : 7 : 0.01
+T: 2 0 : 35 : 8 : 0.03
+T: 2 0 : 35 : 32 : 0.42
+T: 2 0 : 35 : 34 : 0.07
+T: 2 0 : 35 : 35 : 0.21
+T: 2 0 : 35 : 41 : 0.06
+T: 2 0 : 35 : 43 : 0.01
+T: 2 0 : 35 : 44 : 0.03
+T: 2 0 : 35 : 59 : 0.06
+T: 2 0 : 35 : 61 : 0.01
+T: 2 0 : 35 : 62 : 0.03
+T: 2 1 : 35 : 5 : 0.01
+T: 2 1 : 35 : 7 : 0.01
+T: 2 1 : 35 : 8 : 0.08
+T: 2 1 : 35 : 32 : 0.07
+T: 2 1 : 35 : 34 : 0.07
+T: 2 1 : 35 : 35 : 0.56
+T: 2 1 : 35 : 41 : 0.01
+T: 2 1 : 35 : 43 : 0.01
+T: 2 1 : 35 : 44 : 0.08
+T: 2 1 : 35 : 59 : 0.01
+T: 2 1 : 35 : 61 : 0.01
+T: 2 1 : 35 : 62 : 0.08
+T: 2 2 : 35 : 5 : 0.01
+T: 2 2 : 35 : 7 : 0.06
+T: 2 2 : 35 : 8 : 0.03
+T: 2 2 : 35 : 32 : 0.07
+T: 2 2 : 35 : 34 : 0.42
+T: 2 2 : 35 : 35 : 0.21
+T: 2 2 : 35 : 41 : 0.01
+T: 2 2 : 35 : 43 : 0.06
+T: 2 2 : 35 : 44 : 0.03
+T: 2 2 : 35 : 59 : 0.01
+T: 2 2 : 35 : 61 : 0.06
+T: 2 2 : 35 : 62 : 0.03
+T: 2 3 : 35 : 5 : 0.01
+T: 2 3 : 35 : 7 : 0.01
+T: 2 3 : 35 : 8 : 0.08
+T: 2 3 : 35 : 32 : 0.07
+T: 2 3 : 35 : 34 : 0.07
+T: 2 3 : 35 : 35 : 0.56
+T: 2 3 : 35 : 41 : 0.01
+T: 2 3 : 35 : 43 : 0.01
+T: 2 3 : 35 : 44 : 0.08
+T: 2 3 : 35 : 59 : 0.01
+T: 2 3 : 35 : 61 : 0.01
+T: 2 3 : 35 : 62 : 0.08
+T: 2 4 : 35 : 8 : 0.1
+T: 2 4 : 35 : 35 : 0.7
+T: 2 4 : 35 : 44 : 0.1
+T: 2 4 : 35 : 62 : 0.1
+T: 3 0 : 35 : 5 : 0.06
+T: 3 0 : 35 : 7 : 0.01
+T: 3 0 : 35 : 8 : 0.03
+T: 3 0 : 35 : 32 : 0.12
+T: 3 0 : 35 : 34 : 0.02
+T: 3 0 : 35 : 35 : 0.060
+T: 3 0 : 35 : 41 : 0.36
+T: 3 0 : 35 : 43 : 0.06
+T: 3 0 : 35 : 44 : 0.18
+T: 3 0 : 35 : 59 : 0.06
+T: 3 0 : 35 : 61 : 0.01
+T: 3 0 : 35 : 62 : 0.03
+T: 3 1 : 35 : 5 : 0.01
+T: 3 1 : 35 : 7 : 0.01
+T: 3 1 : 35 : 8 : 0.08
+T: 3 1 : 35 : 32 : 0.02
+T: 3 1 : 35 : 34 : 0.02
+T: 3 1 : 35 : 35 : 0.16
+T: 3 1 : 35 : 41 : 0.06
+T: 3 1 : 35 : 43 : 0.06
+T: 3 1 : 35 : 44 : 0.48
+T: 3 1 : 35 : 59 : 0.01
+T: 3 1 : 35 : 61 : 0.01
+T: 3 1 : 35 : 62 : 0.08
+T: 3 2 : 35 : 5 : 0.01
+T: 3 2 : 35 : 7 : 0.06
+T: 3 2 : 35 : 8 : 0.03
+T: 3 2 : 35 : 32 : 0.02
+T: 3 2 : 35 : 34 : 0.12
+T: 3 2 : 35 : 35 : 0.060
+T: 3 2 : 35 : 41 : 0.06
+T: 3 2 : 35 : 43 : 0.36
+T: 3 2 : 35 : 44 : 0.18
+T: 3 2 : 35 : 59 : 0.01
+T: 3 2 : 35 : 61 : 0.06
+T: 3 2 : 35 : 62 : 0.03
+T: 3 3 : 35 : 5 : 0.01
+T: 3 3 : 35 : 7 : 0.01
+T: 3 3 : 35 : 8 : 0.08
+T: 3 3 : 35 : 32 : 0.02
+T: 3 3 : 35 : 34 : 0.02
+T: 3 3 : 35 : 35 : 0.16
+T: 3 3 : 35 : 41 : 0.06
+T: 3 3 : 35 : 43 : 0.06
+T: 3 3 : 35 : 44 : 0.48
+T: 3 3 : 35 : 59 : 0.01
+T: 3 3 : 35 : 61 : 0.01
+T: 3 3 : 35 : 62 : 0.08
+T: 3 4 : 35 : 8 : 0.1
+T: 3 4 : 35 : 35 : 0.2
+T: 3 4 : 35 : 44 : 0.6
+T: 3 4 : 35 : 62 : 0.1
+T: 4 0 : 35 : 32 : 0.6
+T: 4 0 : 35 : 34 : 0.1
+T: 4 0 : 35 : 35 : 0.3
+T: 4 1 : 35 : 32 : 0.1
+T: 4 1 : 35 : 34 : 0.1
+T: 4 1 : 35 : 35 : 0.8
+T: 4 2 : 35 : 32 : 0.1
+T: 4 2 : 35 : 34 : 0.6
+T: 4 2 : 35 : 35 : 0.3
+T: 4 3 : 35 : 32 : 0.1
+T: 4 3 : 35 : 34 : 0.1
+T: 4 3 : 35 : 35 : 0.8
+T: 4 4 : 35 : 35 : 1.0
+T: 0 0 : 36 : 9 : 0.48
+T: 0 0 : 36 : 10 : 0.06
+T: 0 0 : 36 : 12 : 0.06
+T: 0 0 : 36 : 27 : 0.08
+T: 0 0 : 36 : 28 : 0.01
+T: 0 0 : 36 : 30 : 0.01
+T: 0 0 : 36 : 36 : 0.08
+T: 0 0 : 36 : 37 : 0.01
+T: 0 0 : 36 : 39 : 0.01
+T: 0 0 : 36 : 45 : 0.08
+T: 0 0 : 36 : 46 : 0.01
+T: 0 0 : 36 : 48 : 0.01
+T: 0 0 : 36 : 63 : 0.08
+T: 0 0 : 36 : 64 : 0.01
+T: 0 0 : 36 : 66 : 0.01
+T: 0 1 : 36 : 9 : 0.18
+T: 0 1 : 36 : 10 : 0.06
+T: 0 1 : 36 : 12 : 0.36
+T: 0 1 : 36 : 27 : 0.03
+T: 0 1 : 36 : 28 : 0.01
+T: 0 1 : 36 : 30 : 0.06
+T: 0 1 : 36 : 36 : 0.03
+T: 0 1 : 36 : 37 : 0.01
+T: 0 1 : 36 : 39 : 0.06
+T: 0 1 : 36 : 45 : 0.03
+T: 0 1 : 36 : 46 : 0.01
+T: 0 1 : 36 : 48 : 0.06
+T: 0 1 : 36 : 63 : 0.03
+T: 0 1 : 36 : 64 : 0.01
+T: 0 1 : 36 : 66 : 0.06
+T: 0 2 : 36 : 9 : 0.48
+T: 0 2 : 36 : 10 : 0.06
+T: 0 2 : 36 : 12 : 0.06
+T: 0 2 : 36 : 27 : 0.08
+T: 0 2 : 36 : 28 : 0.01
+T: 0 2 : 36 : 30 : 0.01
+T: 0 2 : 36 : 36 : 0.08
+T: 0 2 : 36 : 37 : 0.01
+T: 0 2 : 36 : 39 : 0.01
+T: 0 2 : 36 : 45 : 0.08
+T: 0 2 : 36 : 46 : 0.01
+T: 0 2 : 36 : 48 : 0.01
+T: 0 2 : 36 : 63 : 0.08
+T: 0 2 : 36 : 64 : 0.01
+T: 0 2 : 36 : 66 : 0.01
+T: 0 3 : 36 : 9 : 0.18
+T: 0 3 : 36 : 10 : 0.36
+T: 0 3 : 36 : 12 : 0.06
+T: 0 3 : 36 : 27 : 0.03
+T: 0 3 : 36 : 28 : 0.06
+T: 0 3 : 36 : 30 : 0.01
+T: 0 3 : 36 : 36 : 0.03
+T: 0 3 : 36 : 37 : 0.06
+T: 0 3 : 36 : 39 : 0.01
+T: 0 3 : 36 : 45 : 0.03
+T: 0 3 : 36 : 46 : 0.06
+T: 0 3 : 36 : 48 : 0.01
+T: 0 3 : 36 : 63 : 0.03
+T: 0 3 : 36 : 64 : 0.06
+T: 0 3 : 36 : 66 : 0.01
+T: 0 4 : 36 : 9 : 0.6
+T: 0 4 : 36 : 27 : 0.1
+T: 0 4 : 36 : 36 : 0.1
+T: 0 4 : 36 : 45 : 0.1
+T: 0 4 : 36 : 63 : 0.1
+T: 1 0 : 36 : 9 : 0.08
+T: 1 0 : 36 : 10 : 0.01
+T: 1 0 : 36 : 12 : 0.01
+T: 1 0 : 36 : 27 : 0.08
+T: 1 0 : 36 : 28 : 0.01
+T: 1 0 : 36 : 30 : 0.01
+T: 1 0 : 36 : 36 : 0.08
+T: 1 0 : 36 : 37 : 0.01
+T: 1 0 : 36 : 39 : 0.01
+T: 1 0 : 36 : 45 : 0.08
+T: 1 0 : 36 : 46 : 0.01
+T: 1 0 : 36 : 48 : 0.01
+T: 1 0 : 36 : 63 : 0.48
+T: 1 0 : 36 : 64 : 0.06
+T: 1 0 : 36 : 66 : 0.06
+T: 1 1 : 36 : 9 : 0.03
+T: 1 1 : 36 : 10 : 0.01
+T: 1 1 : 36 : 12 : 0.06
+T: 1 1 : 36 : 27 : 0.03
+T: 1 1 : 36 : 28 : 0.01
+T: 1 1 : 36 : 30 : 0.06
+T: 1 1 : 36 : 36 : 0.03
+T: 1 1 : 36 : 37 : 0.01
+T: 1 1 : 36 : 39 : 0.06
+T: 1 1 : 36 : 45 : 0.03
+T: 1 1 : 36 : 46 : 0.01
+T: 1 1 : 36 : 48 : 0.06
+T: 1 1 : 36 : 63 : 0.18
+T: 1 1 : 36 : 64 : 0.06
+T: 1 1 : 36 : 66 : 0.36
+T: 1 2 : 36 : 9 : 0.08
+T: 1 2 : 36 : 10 : 0.01
+T: 1 2 : 36 : 12 : 0.01
+T: 1 2 : 36 : 27 : 0.08
+T: 1 2 : 36 : 28 : 0.01
+T: 1 2 : 36 : 30 : 0.01
+T: 1 2 : 36 : 36 : 0.08
+T: 1 2 : 36 : 37 : 0.01
+T: 1 2 : 36 : 39 : 0.01
+T: 1 2 : 36 : 45 : 0.08
+T: 1 2 : 36 : 46 : 0.01
+T: 1 2 : 36 : 48 : 0.01
+T: 1 2 : 36 : 63 : 0.48
+T: 1 2 : 36 : 64 : 0.06
+T: 1 2 : 36 : 66 : 0.06
+T: 1 3 : 36 : 9 : 0.03
+T: 1 3 : 36 : 10 : 0.06
+T: 1 3 : 36 : 12 : 0.01
+T: 1 3 : 36 : 27 : 0.03
+T: 1 3 : 36 : 28 : 0.06
+T: 1 3 : 36 : 30 : 0.01
+T: 1 3 : 36 : 36 : 0.03
+T: 1 3 : 36 : 37 : 0.06
+T: 1 3 : 36 : 39 : 0.01
+T: 1 3 : 36 : 45 : 0.03
+T: 1 3 : 36 : 46 : 0.06
+T: 1 3 : 36 : 48 : 0.01
+T: 1 3 : 36 : 63 : 0.18
+T: 1 3 : 36 : 64 : 0.36
+T: 1 3 : 36 : 66 : 0.06
+T: 1 4 : 36 : 9 : 0.1
+T: 1 4 : 36 : 27 : 0.1
+T: 1 4 : 36 : 36 : 0.1
+T: 1 4 : 36 : 45 : 0.1
+T: 1 4 : 36 : 63 : 0.6
+T: 2 0 : 36 : 9 : 0.08
+T: 2 0 : 36 : 10 : 0.01
+T: 2 0 : 36 : 12 : 0.01
+T: 2 0 : 36 : 27 : 0.48
+T: 2 0 : 36 : 28 : 0.06
+T: 2 0 : 36 : 30 : 0.06
+T: 2 0 : 36 : 36 : 0.08
+T: 2 0 : 36 : 37 : 0.01
+T: 2 0 : 36 : 39 : 0.01
+T: 2 0 : 36 : 45 : 0.08
+T: 2 0 : 36 : 46 : 0.01
+T: 2 0 : 36 : 48 : 0.01
+T: 2 0 : 36 : 63 : 0.08
+T: 2 0 : 36 : 64 : 0.01
+T: 2 0 : 36 : 66 : 0.01
+T: 2 1 : 36 : 9 : 0.03
+T: 2 1 : 36 : 10 : 0.01
+T: 2 1 : 36 : 12 : 0.06
+T: 2 1 : 36 : 27 : 0.18
+T: 2 1 : 36 : 28 : 0.06
+T: 2 1 : 36 : 30 : 0.36
+T: 2 1 : 36 : 36 : 0.03
+T: 2 1 : 36 : 37 : 0.01
+T: 2 1 : 36 : 39 : 0.06
+T: 2 1 : 36 : 45 : 0.03
+T: 2 1 : 36 : 46 : 0.01
+T: 2 1 : 36 : 48 : 0.06
+T: 2 1 : 36 : 63 : 0.03
+T: 2 1 : 36 : 64 : 0.01
+T: 2 1 : 36 : 66 : 0.06
+T: 2 2 : 36 : 9 : 0.08
+T: 2 2 : 36 : 10 : 0.01
+T: 2 2 : 36 : 12 : 0.01
+T: 2 2 : 36 : 27 : 0.48
+T: 2 2 : 36 : 28 : 0.06
+T: 2 2 : 36 : 30 : 0.06
+T: 2 2 : 36 : 36 : 0.08
+T: 2 2 : 36 : 37 : 0.01
+T: 2 2 : 36 : 39 : 0.01
+T: 2 2 : 36 : 45 : 0.08
+T: 2 2 : 36 : 46 : 0.01
+T: 2 2 : 36 : 48 : 0.01
+T: 2 2 : 36 : 63 : 0.08
+T: 2 2 : 36 : 64 : 0.01
+T: 2 2 : 36 : 66 : 0.01
+T: 2 3 : 36 : 9 : 0.03
+T: 2 3 : 36 : 10 : 0.06
+T: 2 3 : 36 : 12 : 0.01
+T: 2 3 : 36 : 27 : 0.18
+T: 2 3 : 36 : 28 : 0.36
+T: 2 3 : 36 : 30 : 0.06
+T: 2 3 : 36 : 36 : 0.03
+T: 2 3 : 36 : 37 : 0.06
+T: 2 3 : 36 : 39 : 0.01
+T: 2 3 : 36 : 45 : 0.03
+T: 2 3 : 36 : 46 : 0.06
+T: 2 3 : 36 : 48 : 0.01
+T: 2 3 : 36 : 63 : 0.03
+T: 2 3 : 36 : 64 : 0.06
+T: 2 3 : 36 : 66 : 0.01
+T: 2 4 : 36 : 9 : 0.1
+T: 2 4 : 36 : 27 : 0.6
+T: 2 4 : 36 : 36 : 0.1
+T: 2 4 : 36 : 45 : 0.1
+T: 2 4 : 36 : 63 : 0.1
+T: 3 0 : 36 : 9 : 0.08
+T: 3 0 : 36 : 10 : 0.01
+T: 3 0 : 36 : 12 : 0.01
+T: 3 0 : 36 : 27 : 0.08
+T: 3 0 : 36 : 28 : 0.01
+T: 3 0 : 36 : 30 : 0.01
+T: 3 0 : 36 : 36 : 0.08
+T: 3 0 : 36 : 37 : 0.01
+T: 3 0 : 36 : 39 : 0.01
+T: 3 0 : 36 : 45 : 0.48
+T: 3 0 : 36 : 46 : 0.06
+T: 3 0 : 36 : 48 : 0.06
+T: 3 0 : 36 : 63 : 0.08
+T: 3 0 : 36 : 64 : 0.01
+T: 3 0 : 36 : 66 : 0.01
+T: 3 1 : 36 : 9 : 0.03
+T: 3 1 : 36 : 10 : 0.01
+T: 3 1 : 36 : 12 : 0.06
+T: 3 1 : 36 : 27 : 0.03
+T: 3 1 : 36 : 28 : 0.01
+T: 3 1 : 36 : 30 : 0.06
+T: 3 1 : 36 : 36 : 0.03
+T: 3 1 : 36 : 37 : 0.01
+T: 3 1 : 36 : 39 : 0.06
+T: 3 1 : 36 : 45 : 0.18
+T: 3 1 : 36 : 46 : 0.06
+T: 3 1 : 36 : 48 : 0.36
+T: 3 1 : 36 : 63 : 0.03
+T: 3 1 : 36 : 64 : 0.01
+T: 3 1 : 36 : 66 : 0.06
+T: 3 2 : 36 : 9 : 0.08
+T: 3 2 : 36 : 10 : 0.01
+T: 3 2 : 36 : 12 : 0.01
+T: 3 2 : 36 : 27 : 0.08
+T: 3 2 : 36 : 28 : 0.01
+T: 3 2 : 36 : 30 : 0.01
+T: 3 2 : 36 : 36 : 0.08
+T: 3 2 : 36 : 37 : 0.01
+T: 3 2 : 36 : 39 : 0.01
+T: 3 2 : 36 : 45 : 0.48
+T: 3 2 : 36 : 46 : 0.06
+T: 3 2 : 36 : 48 : 0.06
+T: 3 2 : 36 : 63 : 0.08
+T: 3 2 : 36 : 64 : 0.01
+T: 3 2 : 36 : 66 : 0.01
+T: 3 3 : 36 : 9 : 0.03
+T: 3 3 : 36 : 10 : 0.06
+T: 3 3 : 36 : 12 : 0.01
+T: 3 3 : 36 : 27 : 0.03
+T: 3 3 : 36 : 28 : 0.06
+T: 3 3 : 36 : 30 : 0.01
+T: 3 3 : 36 : 36 : 0.03
+T: 3 3 : 36 : 37 : 0.06
+T: 3 3 : 36 : 39 : 0.01
+T: 3 3 : 36 : 45 : 0.18
+T: 3 3 : 36 : 46 : 0.36
+T: 3 3 : 36 : 48 : 0.06
+T: 3 3 : 36 : 63 : 0.03
+T: 3 3 : 36 : 64 : 0.06
+T: 3 3 : 36 : 66 : 0.01
+T: 3 4 : 36 : 9 : 0.1
+T: 3 4 : 36 : 27 : 0.1
+T: 3 4 : 36 : 36 : 0.1
+T: 3 4 : 36 : 45 : 0.6
+T: 3 4 : 36 : 63 : 0.1
+T: 4 0 : 36 : 36 : 0.8
+T: 4 0 : 36 : 37 : 0.1
+T: 4 0 : 36 : 39 : 0.1
+T: 4 1 : 36 : 36 : 0.3
+T: 4 1 : 36 : 37 : 0.1
+T: 4 1 : 36 : 39 : 0.6
+T: 4 2 : 36 : 36 : 0.8
+T: 4 2 : 36 : 37 : 0.1
+T: 4 2 : 36 : 39 : 0.1
+T: 4 3 : 36 : 36 : 0.3
+T: 4 3 : 36 : 37 : 0.6
+T: 4 3 : 36 : 39 : 0.1
+T: 4 4 : 36 : 36 : 1.0
+T: 0 0 : 37 : 9 : 0.06
+T: 0 0 : 37 : 10 : 0.42
+T: 0 0 : 37 : 11 : 0.06
+T: 0 0 : 37 : 13 : 0.06
+T: 0 0 : 37 : 27 : 0.01
+T: 0 0 : 37 : 28 : 0.07
+T: 0 0 : 37 : 29 : 0.01
+T: 0 0 : 37 : 31 : 0.01
+T: 0 0 : 37 : 36 : 0.01
+T: 0 0 : 37 : 37 : 0.07
+T: 0 0 : 37 : 38 : 0.01
+T: 0 0 : 37 : 40 : 0.01
+T: 0 0 : 37 : 45 : 0.01
+T: 0 0 : 37 : 46 : 0.07
+T: 0 0 : 37 : 47 : 0.01
+T: 0 0 : 37 : 49 : 0.01
+T: 0 0 : 37 : 63 : 0.01
+T: 0 0 : 37 : 64 : 0.07
+T: 0 0 : 37 : 65 : 0.01
+T: 0 0 : 37 : 67 : 0.01
+T: 0 1 : 37 : 9 : 0.06
+T: 0 1 : 37 : 10 : 0.12
+T: 0 1 : 37 : 11 : 0.06
+T: 0 1 : 37 : 13 : 0.36
+T: 0 1 : 37 : 27 : 0.01
+T: 0 1 : 37 : 28 : 0.02
+T: 0 1 : 37 : 29 : 0.01
+T: 0 1 : 37 : 31 : 0.06
+T: 0 1 : 37 : 36 : 0.01
+T: 0 1 : 37 : 37 : 0.02
+T: 0 1 : 37 : 38 : 0.01
+T: 0 1 : 37 : 40 : 0.06
+T: 0 1 : 37 : 45 : 0.01
+T: 0 1 : 37 : 46 : 0.02
+T: 0 1 : 37 : 47 : 0.01
+T: 0 1 : 37 : 49 : 0.06
+T: 0 1 : 37 : 63 : 0.01
+T: 0 1 : 37 : 64 : 0.02
+T: 0 1 : 37 : 65 : 0.01
+T: 0 1 : 37 : 67 : 0.06
+T: 0 2 : 37 : 9 : 0.36
+T: 0 2 : 37 : 10 : 0.12
+T: 0 2 : 37 : 11 : 0.06
+T: 0 2 : 37 : 13 : 0.06
+T: 0 2 : 37 : 27 : 0.06
+T: 0 2 : 37 : 28 : 0.02
+T: 0 2 : 37 : 29 : 0.01
+T: 0 2 : 37 : 31 : 0.01
+T: 0 2 : 37 : 36 : 0.06
+T: 0 2 : 37 : 37 : 0.02
+T: 0 2 : 37 : 38 : 0.01
+T: 0 2 : 37 : 40 : 0.01
+T: 0 2 : 37 : 45 : 0.06
+T: 0 2 : 37 : 46 : 0.02
+T: 0 2 : 37 : 47 : 0.01
+T: 0 2 : 37 : 49 : 0.01
+T: 0 2 : 37 : 63 : 0.06
+T: 0 2 : 37 : 64 : 0.02
+T: 0 2 : 37 : 65 : 0.01
+T: 0 2 : 37 : 67 : 0.01
+T: 0 3 : 37 : 9 : 0.06
+T: 0 3 : 37 : 10 : 0.12
+T: 0 3 : 37 : 11 : 0.36
+T: 0 3 : 37 : 13 : 0.06
+T: 0 3 : 37 : 27 : 0.01
+T: 0 3 : 37 : 28 : 0.02
+T: 0 3 : 37 : 29 : 0.06
+T: 0 3 : 37 : 31 : 0.01
+T: 0 3 : 37 : 36 : 0.01
+T: 0 3 : 37 : 37 : 0.02
+T: 0 3 : 37 : 38 : 0.06
+T: 0 3 : 37 : 40 : 0.01
+T: 0 3 : 37 : 45 : 0.01
+T: 0 3 : 37 : 46 : 0.02
+T: 0 3 : 37 : 47 : 0.06
+T: 0 3 : 37 : 49 : 0.01
+T: 0 3 : 37 : 63 : 0.01
+T: 0 3 : 37 : 64 : 0.02
+T: 0 3 : 37 : 65 : 0.06
+T: 0 3 : 37 : 67 : 0.01
+T: 0 4 : 37 : 10 : 0.6
+T: 0 4 : 37 : 28 : 0.1
+T: 0 4 : 37 : 37 : 0.1
+T: 0 4 : 37 : 46 : 0.1
+T: 0 4 : 37 : 64 : 0.1
+T: 1 0 : 37 : 9 : 0.01
+T: 1 0 : 37 : 10 : 0.07
+T: 1 0 : 37 : 11 : 0.01
+T: 1 0 : 37 : 13 : 0.01
+T: 1 0 : 37 : 27 : 0.01
+T: 1 0 : 37 : 28 : 0.07
+T: 1 0 : 37 : 29 : 0.01
+T: 1 0 : 37 : 31 : 0.01
+T: 1 0 : 37 : 36 : 0.01
+T: 1 0 : 37 : 37 : 0.07
+T: 1 0 : 37 : 38 : 0.01
+T: 1 0 : 37 : 40 : 0.01
+T: 1 0 : 37 : 45 : 0.01
+T: 1 0 : 37 : 46 : 0.07
+T: 1 0 : 37 : 47 : 0.01
+T: 1 0 : 37 : 49 : 0.01
+T: 1 0 : 37 : 63 : 0.06
+T: 1 0 : 37 : 64 : 0.42
+T: 1 0 : 37 : 65 : 0.06
+T: 1 0 : 37 : 67 : 0.06
+T: 1 1 : 37 : 9 : 0.01
+T: 1 1 : 37 : 10 : 0.02
+T: 1 1 : 37 : 11 : 0.01
+T: 1 1 : 37 : 13 : 0.06
+T: 1 1 : 37 : 27 : 0.01
+T: 1 1 : 37 : 28 : 0.02
+T: 1 1 : 37 : 29 : 0.01
+T: 1 1 : 37 : 31 : 0.06
+T: 1 1 : 37 : 36 : 0.01
+T: 1 1 : 37 : 37 : 0.02
+T: 1 1 : 37 : 38 : 0.01
+T: 1 1 : 37 : 40 : 0.06
+T: 1 1 : 37 : 45 : 0.01
+T: 1 1 : 37 : 46 : 0.02
+T: 1 1 : 37 : 47 : 0.01
+T: 1 1 : 37 : 49 : 0.06
+T: 1 1 : 37 : 63 : 0.06
+T: 1 1 : 37 : 64 : 0.12
+T: 1 1 : 37 : 65 : 0.06
+T: 1 1 : 37 : 67 : 0.36
+T: 1 2 : 37 : 9 : 0.06
+T: 1 2 : 37 : 10 : 0.02
+T: 1 2 : 37 : 11 : 0.01
+T: 1 2 : 37 : 13 : 0.01
+T: 1 2 : 37 : 27 : 0.06
+T: 1 2 : 37 : 28 : 0.02
+T: 1 2 : 37 : 29 : 0.01
+T: 1 2 : 37 : 31 : 0.01
+T: 1 2 : 37 : 36 : 0.06
+T: 1 2 : 37 : 37 : 0.02
+T: 1 2 : 37 : 38 : 0.01
+T: 1 2 : 37 : 40 : 0.01
+T: 1 2 : 37 : 45 : 0.06
+T: 1 2 : 37 : 46 : 0.02
+T: 1 2 : 37 : 47 : 0.01
+T: 1 2 : 37 : 49 : 0.01
+T: 1 2 : 37 : 63 : 0.36
+T: 1 2 : 37 : 64 : 0.12
+T: 1 2 : 37 : 65 : 0.06
+T: 1 2 : 37 : 67 : 0.06
+T: 1 3 : 37 : 9 : 0.01
+T: 1 3 : 37 : 10 : 0.02
+T: 1 3 : 37 : 11 : 0.06
+T: 1 3 : 37 : 13 : 0.01
+T: 1 3 : 37 : 27 : 0.01
+T: 1 3 : 37 : 28 : 0.02
+T: 1 3 : 37 : 29 : 0.06
+T: 1 3 : 37 : 31 : 0.01
+T: 1 3 : 37 : 36 : 0.01
+T: 1 3 : 37 : 37 : 0.02
+T: 1 3 : 37 : 38 : 0.06
+T: 1 3 : 37 : 40 : 0.01
+T: 1 3 : 37 : 45 : 0.01
+T: 1 3 : 37 : 46 : 0.02
+T: 1 3 : 37 : 47 : 0.06
+T: 1 3 : 37 : 49 : 0.01
+T: 1 3 : 37 : 63 : 0.06
+T: 1 3 : 37 : 64 : 0.12
+T: 1 3 : 37 : 65 : 0.36
+T: 1 3 : 37 : 67 : 0.06
+T: 1 4 : 37 : 10 : 0.1
+T: 1 4 : 37 : 28 : 0.1
+T: 1 4 : 37 : 37 : 0.1
+T: 1 4 : 37 : 46 : 0.1
+T: 1 4 : 37 : 64 : 0.6
+T: 2 0 : 37 : 9 : 0.01
+T: 2 0 : 37 : 10 : 0.07
+T: 2 0 : 37 : 11 : 0.01
+T: 2 0 : 37 : 13 : 0.01
+T: 2 0 : 37 : 27 : 0.06
+T: 2 0 : 37 : 28 : 0.42
+T: 2 0 : 37 : 29 : 0.06
+T: 2 0 : 37 : 31 : 0.06
+T: 2 0 : 37 : 36 : 0.01
+T: 2 0 : 37 : 37 : 0.07
+T: 2 0 : 37 : 38 : 0.01
+T: 2 0 : 37 : 40 : 0.01
+T: 2 0 : 37 : 45 : 0.01
+T: 2 0 : 37 : 46 : 0.07
+T: 2 0 : 37 : 47 : 0.01
+T: 2 0 : 37 : 49 : 0.01
+T: 2 0 : 37 : 63 : 0.01
+T: 2 0 : 37 : 64 : 0.07
+T: 2 0 : 37 : 65 : 0.01
+T: 2 0 : 37 : 67 : 0.01
+T: 2 1 : 37 : 9 : 0.01
+T: 2 1 : 37 : 10 : 0.02
+T: 2 1 : 37 : 11 : 0.01
+T: 2 1 : 37 : 13 : 0.06
+T: 2 1 : 37 : 27 : 0.06
+T: 2 1 : 37 : 28 : 0.12
+T: 2 1 : 37 : 29 : 0.06
+T: 2 1 : 37 : 31 : 0.36
+T: 2 1 : 37 : 36 : 0.01
+T: 2 1 : 37 : 37 : 0.02
+T: 2 1 : 37 : 38 : 0.01
+T: 2 1 : 37 : 40 : 0.06
+T: 2 1 : 37 : 45 : 0.01
+T: 2 1 : 37 : 46 : 0.02
+T: 2 1 : 37 : 47 : 0.01
+T: 2 1 : 37 : 49 : 0.06
+T: 2 1 : 37 : 63 : 0.01
+T: 2 1 : 37 : 64 : 0.02
+T: 2 1 : 37 : 65 : 0.01
+T: 2 1 : 37 : 67 : 0.06
+T: 2 2 : 37 : 9 : 0.06
+T: 2 2 : 37 : 10 : 0.02
+T: 2 2 : 37 : 11 : 0.01
+T: 2 2 : 37 : 13 : 0.01
+T: 2 2 : 37 : 27 : 0.36
+T: 2 2 : 37 : 28 : 0.12
+T: 2 2 : 37 : 29 : 0.06
+T: 2 2 : 37 : 31 : 0.06
+T: 2 2 : 37 : 36 : 0.06
+T: 2 2 : 37 : 37 : 0.02
+T: 2 2 : 37 : 38 : 0.01
+T: 2 2 : 37 : 40 : 0.01
+T: 2 2 : 37 : 45 : 0.06
+T: 2 2 : 37 : 46 : 0.02
+T: 2 2 : 37 : 47 : 0.01
+T: 2 2 : 37 : 49 : 0.01
+T: 2 2 : 37 : 63 : 0.06
+T: 2 2 : 37 : 64 : 0.02
+T: 2 2 : 37 : 65 : 0.01
+T: 2 2 : 37 : 67 : 0.01
+T: 2 3 : 37 : 9 : 0.01
+T: 2 3 : 37 : 10 : 0.02
+T: 2 3 : 37 : 11 : 0.06
+T: 2 3 : 37 : 13 : 0.01
+T: 2 3 : 37 : 27 : 0.06
+T: 2 3 : 37 : 28 : 0.12
+T: 2 3 : 37 : 29 : 0.36
+T: 2 3 : 37 : 31 : 0.06
+T: 2 3 : 37 : 36 : 0.01
+T: 2 3 : 37 : 37 : 0.02
+T: 2 3 : 37 : 38 : 0.06
+T: 2 3 : 37 : 40 : 0.01
+T: 2 3 : 37 : 45 : 0.01
+T: 2 3 : 37 : 46 : 0.02
+T: 2 3 : 37 : 47 : 0.06
+T: 2 3 : 37 : 49 : 0.01
+T: 2 3 : 37 : 63 : 0.01
+T: 2 3 : 37 : 64 : 0.02
+T: 2 3 : 37 : 65 : 0.06
+T: 2 3 : 37 : 67 : 0.01
+T: 2 4 : 37 : 10 : 0.1
+T: 2 4 : 37 : 28 : 0.6
+T: 2 4 : 37 : 37 : 0.1
+T: 2 4 : 37 : 46 : 0.1
+T: 2 4 : 37 : 64 : 0.1
+T: 3 0 : 37 : 9 : 0.01
+T: 3 0 : 37 : 10 : 0.07
+T: 3 0 : 37 : 11 : 0.01
+T: 3 0 : 37 : 13 : 0.01
+T: 3 0 : 37 : 27 : 0.01
+T: 3 0 : 37 : 28 : 0.07
+T: 3 0 : 37 : 29 : 0.01
+T: 3 0 : 37 : 31 : 0.01
+T: 3 0 : 37 : 36 : 0.01
+T: 3 0 : 37 : 37 : 0.07
+T: 3 0 : 37 : 38 : 0.01
+T: 3 0 : 37 : 40 : 0.01
+T: 3 0 : 37 : 45 : 0.06
+T: 3 0 : 37 : 46 : 0.42
+T: 3 0 : 37 : 47 : 0.06
+T: 3 0 : 37 : 49 : 0.06
+T: 3 0 : 37 : 63 : 0.01
+T: 3 0 : 37 : 64 : 0.07
+T: 3 0 : 37 : 65 : 0.01
+T: 3 0 : 37 : 67 : 0.01
+T: 3 1 : 37 : 9 : 0.01
+T: 3 1 : 37 : 10 : 0.02
+T: 3 1 : 37 : 11 : 0.01
+T: 3 1 : 37 : 13 : 0.06
+T: 3 1 : 37 : 27 : 0.01
+T: 3 1 : 37 : 28 : 0.02
+T: 3 1 : 37 : 29 : 0.01
+T: 3 1 : 37 : 31 : 0.06
+T: 3 1 : 37 : 36 : 0.01
+T: 3 1 : 37 : 37 : 0.02
+T: 3 1 : 37 : 38 : 0.01
+T: 3 1 : 37 : 40 : 0.06
+T: 3 1 : 37 : 45 : 0.06
+T: 3 1 : 37 : 46 : 0.12
+T: 3 1 : 37 : 47 : 0.06
+T: 3 1 : 37 : 49 : 0.36
+T: 3 1 : 37 : 63 : 0.01
+T: 3 1 : 37 : 64 : 0.02
+T: 3 1 : 37 : 65 : 0.01
+T: 3 1 : 37 : 67 : 0.06
+T: 3 2 : 37 : 9 : 0.06
+T: 3 2 : 37 : 10 : 0.02
+T: 3 2 : 37 : 11 : 0.01
+T: 3 2 : 37 : 13 : 0.01
+T: 3 2 : 37 : 27 : 0.06
+T: 3 2 : 37 : 28 : 0.02
+T: 3 2 : 37 : 29 : 0.01
+T: 3 2 : 37 : 31 : 0.01
+T: 3 2 : 37 : 36 : 0.06
+T: 3 2 : 37 : 37 : 0.02
+T: 3 2 : 37 : 38 : 0.01
+T: 3 2 : 37 : 40 : 0.01
+T: 3 2 : 37 : 45 : 0.36
+T: 3 2 : 37 : 46 : 0.12
+T: 3 2 : 37 : 47 : 0.06
+T: 3 2 : 37 : 49 : 0.06
+T: 3 2 : 37 : 63 : 0.06
+T: 3 2 : 37 : 64 : 0.02
+T: 3 2 : 37 : 65 : 0.01
+T: 3 2 : 37 : 67 : 0.01
+T: 3 3 : 37 : 9 : 0.01
+T: 3 3 : 37 : 10 : 0.02
+T: 3 3 : 37 : 11 : 0.06
+T: 3 3 : 37 : 13 : 0.01
+T: 3 3 : 37 : 27 : 0.01
+T: 3 3 : 37 : 28 : 0.02
+T: 3 3 : 37 : 29 : 0.06
+T: 3 3 : 37 : 31 : 0.01
+T: 3 3 : 37 : 36 : 0.01
+T: 3 3 : 37 : 37 : 0.02
+T: 3 3 : 37 : 38 : 0.06
+T: 3 3 : 37 : 40 : 0.01
+T: 3 3 : 37 : 45 : 0.06
+T: 3 3 : 37 : 46 : 0.12
+T: 3 3 : 37 : 47 : 0.36
+T: 3 3 : 37 : 49 : 0.06
+T: 3 3 : 37 : 63 : 0.01
+T: 3 3 : 37 : 64 : 0.02
+T: 3 3 : 37 : 65 : 0.06
+T: 3 3 : 37 : 67 : 0.01
+T: 3 4 : 37 : 10 : 0.1
+T: 3 4 : 37 : 28 : 0.1
+T: 3 4 : 37 : 37 : 0.1
+T: 3 4 : 37 : 46 : 0.6
+T: 3 4 : 37 : 64 : 0.1
+T: 4 0 : 37 : 36 : 0.1
+T: 4 0 : 37 : 37 : 0.7
+T: 4 0 : 37 : 38 : 0.1
+T: 4 0 : 37 : 40 : 0.1
+T: 4 1 : 37 : 36 : 0.1
+T: 4 1 : 37 : 37 : 0.2
+T: 4 1 : 37 : 38 : 0.1
+T: 4 1 : 37 : 40 : 0.6
+T: 4 2 : 37 : 36 : 0.6
+T: 4 2 : 37 : 37 : 0.2
+T: 4 2 : 37 : 38 : 0.1
+T: 4 2 : 37 : 40 : 0.1
+T: 4 3 : 37 : 36 : 0.1
+T: 4 3 : 37 : 37 : 0.2
+T: 4 3 : 37 : 38 : 0.6
+T: 4 3 : 37 : 40 : 0.1
+T: 4 4 : 37 : 37 : 1.0
+T: 0 0 : 38 : 10 : 0.06
+T: 0 0 : 38 : 11 : 0.48
+T: 0 0 : 38 : 14 : 0.06
+T: 0 0 : 38 : 28 : 0.01
+T: 0 0 : 38 : 29 : 0.08
+T: 0 0 : 38 : 32 : 0.01
+T: 0 0 : 38 : 37 : 0.01
+T: 0 0 : 38 : 38 : 0.08
+T: 0 0 : 38 : 41 : 0.01
+T: 0 0 : 38 : 46 : 0.01
+T: 0 0 : 38 : 47 : 0.08
+T: 0 0 : 38 : 50 : 0.01
+T: 0 0 : 38 : 64 : 0.01
+T: 0 0 : 38 : 65 : 0.08
+T: 0 0 : 38 : 68 : 0.01
+T: 0 1 : 38 : 10 : 0.06
+T: 0 1 : 38 : 11 : 0.18
+T: 0 1 : 38 : 14 : 0.36
+T: 0 1 : 38 : 28 : 0.01
+T: 0 1 : 38 : 29 : 0.03
+T: 0 1 : 38 : 32 : 0.06
+T: 0 1 : 38 : 37 : 0.01
+T: 0 1 : 38 : 38 : 0.03
+T: 0 1 : 38 : 41 : 0.06
+T: 0 1 : 38 : 46 : 0.01
+T: 0 1 : 38 : 47 : 0.03
+T: 0 1 : 38 : 50 : 0.06
+T: 0 1 : 38 : 64 : 0.01
+T: 0 1 : 38 : 65 : 0.03
+T: 0 1 : 38 : 68 : 0.06
+T: 0 2 : 38 : 10 : 0.36
+T: 0 2 : 38 : 11 : 0.18
+T: 0 2 : 38 : 14 : 0.06
+T: 0 2 : 38 : 28 : 0.06
+T: 0 2 : 38 : 29 : 0.03
+T: 0 2 : 38 : 32 : 0.01
+T: 0 2 : 38 : 37 : 0.06
+T: 0 2 : 38 : 38 : 0.03
+T: 0 2 : 38 : 41 : 0.01
+T: 0 2 : 38 : 46 : 0.06
+T: 0 2 : 38 : 47 : 0.03
+T: 0 2 : 38 : 50 : 0.01
+T: 0 2 : 38 : 64 : 0.06
+T: 0 2 : 38 : 65 : 0.03
+T: 0 2 : 38 : 68 : 0.01
+T: 0 3 : 38 : 10 : 0.06
+T: 0 3 : 38 : 11 : 0.48
+T: 0 3 : 38 : 14 : 0.06
+T: 0 3 : 38 : 28 : 0.01
+T: 0 3 : 38 : 29 : 0.08
+T: 0 3 : 38 : 32 : 0.01
+T: 0 3 : 38 : 37 : 0.01
+T: 0 3 : 38 : 38 : 0.08
+T: 0 3 : 38 : 41 : 0.01
+T: 0 3 : 38 : 46 : 0.01
+T: 0 3 : 38 : 47 : 0.08
+T: 0 3 : 38 : 50 : 0.01
+T: 0 3 : 38 : 64 : 0.01
+T: 0 3 : 38 : 65 : 0.08
+T: 0 3 : 38 : 68 : 0.01
+T: 0 4 : 38 : 11 : 0.6
+T: 0 4 : 38 : 29 : 0.1
+T: 0 4 : 38 : 38 : 0.1
+T: 0 4 : 38 : 47 : 0.1
+T: 0 4 : 38 : 65 : 0.1
+T: 1 0 : 38 : 10 : 0.01
+T: 1 0 : 38 : 11 : 0.08
+T: 1 0 : 38 : 14 : 0.01
+T: 1 0 : 38 : 28 : 0.01
+T: 1 0 : 38 : 29 : 0.08
+T: 1 0 : 38 : 32 : 0.01
+T: 1 0 : 38 : 37 : 0.01
+T: 1 0 : 38 : 38 : 0.08
+T: 1 0 : 38 : 41 : 0.01
+T: 1 0 : 38 : 46 : 0.01
+T: 1 0 : 38 : 47 : 0.08
+T: 1 0 : 38 : 50 : 0.01
+T: 1 0 : 38 : 64 : 0.06
+T: 1 0 : 38 : 65 : 0.48
+T: 1 0 : 38 : 68 : 0.06
+T: 1 1 : 38 : 10 : 0.01
+T: 1 1 : 38 : 11 : 0.03
+T: 1 1 : 38 : 14 : 0.06
+T: 1 1 : 38 : 28 : 0.01
+T: 1 1 : 38 : 29 : 0.03
+T: 1 1 : 38 : 32 : 0.06
+T: 1 1 : 38 : 37 : 0.01
+T: 1 1 : 38 : 38 : 0.03
+T: 1 1 : 38 : 41 : 0.06
+T: 1 1 : 38 : 46 : 0.01
+T: 1 1 : 38 : 47 : 0.03
+T: 1 1 : 38 : 50 : 0.06
+T: 1 1 : 38 : 64 : 0.06
+T: 1 1 : 38 : 65 : 0.18
+T: 1 1 : 38 : 68 : 0.36
+T: 1 2 : 38 : 10 : 0.06
+T: 1 2 : 38 : 11 : 0.03
+T: 1 2 : 38 : 14 : 0.01
+T: 1 2 : 38 : 28 : 0.06
+T: 1 2 : 38 : 29 : 0.03
+T: 1 2 : 38 : 32 : 0.01
+T: 1 2 : 38 : 37 : 0.06
+T: 1 2 : 38 : 38 : 0.03
+T: 1 2 : 38 : 41 : 0.01
+T: 1 2 : 38 : 46 : 0.06
+T: 1 2 : 38 : 47 : 0.03
+T: 1 2 : 38 : 50 : 0.01
+T: 1 2 : 38 : 64 : 0.36
+T: 1 2 : 38 : 65 : 0.18
+T: 1 2 : 38 : 68 : 0.06
+T: 1 3 : 38 : 10 : 0.01
+T: 1 3 : 38 : 11 : 0.08
+T: 1 3 : 38 : 14 : 0.01
+T: 1 3 : 38 : 28 : 0.01
+T: 1 3 : 38 : 29 : 0.08
+T: 1 3 : 38 : 32 : 0.01
+T: 1 3 : 38 : 37 : 0.01
+T: 1 3 : 38 : 38 : 0.08
+T: 1 3 : 38 : 41 : 0.01
+T: 1 3 : 38 : 46 : 0.01
+T: 1 3 : 38 : 47 : 0.08
+T: 1 3 : 38 : 50 : 0.01
+T: 1 3 : 38 : 64 : 0.06
+T: 1 3 : 38 : 65 : 0.48
+T: 1 3 : 38 : 68 : 0.06
+T: 1 4 : 38 : 11 : 0.1
+T: 1 4 : 38 : 29 : 0.1
+T: 1 4 : 38 : 38 : 0.1
+T: 1 4 : 38 : 47 : 0.1
+T: 1 4 : 38 : 65 : 0.6
+T: 2 0 : 38 : 10 : 0.01
+T: 2 0 : 38 : 11 : 0.08
+T: 2 0 : 38 : 14 : 0.01
+T: 2 0 : 38 : 28 : 0.06
+T: 2 0 : 38 : 29 : 0.48
+T: 2 0 : 38 : 32 : 0.06
+T: 2 0 : 38 : 37 : 0.01
+T: 2 0 : 38 : 38 : 0.08
+T: 2 0 : 38 : 41 : 0.01
+T: 2 0 : 38 : 46 : 0.01
+T: 2 0 : 38 : 47 : 0.08
+T: 2 0 : 38 : 50 : 0.01
+T: 2 0 : 38 : 64 : 0.01
+T: 2 0 : 38 : 65 : 0.08
+T: 2 0 : 38 : 68 : 0.01
+T: 2 1 : 38 : 10 : 0.01
+T: 2 1 : 38 : 11 : 0.03
+T: 2 1 : 38 : 14 : 0.06
+T: 2 1 : 38 : 28 : 0.06
+T: 2 1 : 38 : 29 : 0.18
+T: 2 1 : 38 : 32 : 0.36
+T: 2 1 : 38 : 37 : 0.01
+T: 2 1 : 38 : 38 : 0.03
+T: 2 1 : 38 : 41 : 0.06
+T: 2 1 : 38 : 46 : 0.01
+T: 2 1 : 38 : 47 : 0.03
+T: 2 1 : 38 : 50 : 0.06
+T: 2 1 : 38 : 64 : 0.01
+T: 2 1 : 38 : 65 : 0.03
+T: 2 1 : 38 : 68 : 0.06
+T: 2 2 : 38 : 10 : 0.06
+T: 2 2 : 38 : 11 : 0.03
+T: 2 2 : 38 : 14 : 0.01
+T: 2 2 : 38 : 28 : 0.36
+T: 2 2 : 38 : 29 : 0.18
+T: 2 2 : 38 : 32 : 0.06
+T: 2 2 : 38 : 37 : 0.06
+T: 2 2 : 38 : 38 : 0.03
+T: 2 2 : 38 : 41 : 0.01
+T: 2 2 : 38 : 46 : 0.06
+T: 2 2 : 38 : 47 : 0.03
+T: 2 2 : 38 : 50 : 0.01
+T: 2 2 : 38 : 64 : 0.06
+T: 2 2 : 38 : 65 : 0.03
+T: 2 2 : 38 : 68 : 0.01
+T: 2 3 : 38 : 10 : 0.01
+T: 2 3 : 38 : 11 : 0.08
+T: 2 3 : 38 : 14 : 0.01
+T: 2 3 : 38 : 28 : 0.06
+T: 2 3 : 38 : 29 : 0.48
+T: 2 3 : 38 : 32 : 0.06
+T: 2 3 : 38 : 37 : 0.01
+T: 2 3 : 38 : 38 : 0.08
+T: 2 3 : 38 : 41 : 0.01
+T: 2 3 : 38 : 46 : 0.01
+T: 2 3 : 38 : 47 : 0.08
+T: 2 3 : 38 : 50 : 0.01
+T: 2 3 : 38 : 64 : 0.01
+T: 2 3 : 38 : 65 : 0.08
+T: 2 3 : 38 : 68 : 0.01
+T: 2 4 : 38 : 11 : 0.1
+T: 2 4 : 38 : 29 : 0.6
+T: 2 4 : 38 : 38 : 0.1
+T: 2 4 : 38 : 47 : 0.1
+T: 2 4 : 38 : 65 : 0.1
+T: 3 0 : 38 : 10 : 0.01
+T: 3 0 : 38 : 11 : 0.08
+T: 3 0 : 38 : 14 : 0.01
+T: 3 0 : 38 : 28 : 0.01
+T: 3 0 : 38 : 29 : 0.08
+T: 3 0 : 38 : 32 : 0.01
+T: 3 0 : 38 : 37 : 0.01
+T: 3 0 : 38 : 38 : 0.08
+T: 3 0 : 38 : 41 : 0.01
+T: 3 0 : 38 : 46 : 0.06
+T: 3 0 : 38 : 47 : 0.48
+T: 3 0 : 38 : 50 : 0.06
+T: 3 0 : 38 : 64 : 0.01
+T: 3 0 : 38 : 65 : 0.08
+T: 3 0 : 38 : 68 : 0.01
+T: 3 1 : 38 : 10 : 0.01
+T: 3 1 : 38 : 11 : 0.03
+T: 3 1 : 38 : 14 : 0.06
+T: 3 1 : 38 : 28 : 0.01
+T: 3 1 : 38 : 29 : 0.03
+T: 3 1 : 38 : 32 : 0.06
+T: 3 1 : 38 : 37 : 0.01
+T: 3 1 : 38 : 38 : 0.03
+T: 3 1 : 38 : 41 : 0.06
+T: 3 1 : 38 : 46 : 0.06
+T: 3 1 : 38 : 47 : 0.18
+T: 3 1 : 38 : 50 : 0.36
+T: 3 1 : 38 : 64 : 0.01
+T: 3 1 : 38 : 65 : 0.03
+T: 3 1 : 38 : 68 : 0.06
+T: 3 2 : 38 : 10 : 0.06
+T: 3 2 : 38 : 11 : 0.03
+T: 3 2 : 38 : 14 : 0.01
+T: 3 2 : 38 : 28 : 0.06
+T: 3 2 : 38 : 29 : 0.03
+T: 3 2 : 38 : 32 : 0.01
+T: 3 2 : 38 : 37 : 0.06
+T: 3 2 : 38 : 38 : 0.03
+T: 3 2 : 38 : 41 : 0.01
+T: 3 2 : 38 : 46 : 0.36
+T: 3 2 : 38 : 47 : 0.18
+T: 3 2 : 38 : 50 : 0.06
+T: 3 2 : 38 : 64 : 0.06
+T: 3 2 : 38 : 65 : 0.03
+T: 3 2 : 38 : 68 : 0.01
+T: 3 3 : 38 : 10 : 0.01
+T: 3 3 : 38 : 11 : 0.08
+T: 3 3 : 38 : 14 : 0.01
+T: 3 3 : 38 : 28 : 0.01
+T: 3 3 : 38 : 29 : 0.08
+T: 3 3 : 38 : 32 : 0.01
+T: 3 3 : 38 : 37 : 0.01
+T: 3 3 : 38 : 38 : 0.08
+T: 3 3 : 38 : 41 : 0.01
+T: 3 3 : 38 : 46 : 0.06
+T: 3 3 : 38 : 47 : 0.48
+T: 3 3 : 38 : 50 : 0.06
+T: 3 3 : 38 : 64 : 0.01
+T: 3 3 : 38 : 65 : 0.08
+T: 3 3 : 38 : 68 : 0.01
+T: 3 4 : 38 : 11 : 0.1
+T: 3 4 : 38 : 29 : 0.1
+T: 3 4 : 38 : 38 : 0.1
+T: 3 4 : 38 : 47 : 0.6
+T: 3 4 : 38 : 65 : 0.1
+T: 4 0 : 38 : 37 : 0.1
+T: 4 0 : 38 : 38 : 0.8
+T: 4 0 : 38 : 41 : 0.1
+T: 4 1 : 38 : 37 : 0.1
+T: 4 1 : 38 : 38 : 0.3
+T: 4 1 : 38 : 41 : 0.6
+T: 4 2 : 38 : 37 : 0.6
+T: 4 2 : 38 : 38 : 0.3
+T: 4 2 : 38 : 41 : 0.1
+T: 4 3 : 38 : 37 : 0.1
+T: 4 3 : 38 : 38 : 0.8
+T: 4 3 : 38 : 41 : 0.1
+T: 4 4 : 38 : 38 : 1.0
+T: 0 0 : 39 : 9 : 0.36
+T: 0 0 : 39 : 12 : 0.12
+T: 0 0 : 39 : 13 : 0.06
+T: 0 0 : 39 : 15 : 0.06
+T: 0 0 : 39 : 27 : 0.06
+T: 0 0 : 39 : 30 : 0.02
+T: 0 0 : 39 : 31 : 0.01
+T: 0 0 : 39 : 33 : 0.01
+T: 0 0 : 39 : 36 : 0.06
+T: 0 0 : 39 : 39 : 0.02
+T: 0 0 : 39 : 40 : 0.01
+T: 0 0 : 39 : 42 : 0.01
+T: 0 0 : 39 : 45 : 0.06
+T: 0 0 : 39 : 48 : 0.02
+T: 0 0 : 39 : 49 : 0.01
+T: 0 0 : 39 : 51 : 0.01
+T: 0 0 : 39 : 63 : 0.06
+T: 0 0 : 39 : 66 : 0.02
+T: 0 0 : 39 : 67 : 0.01
+T: 0 0 : 39 : 69 : 0.01
+T: 0 1 : 39 : 9 : 0.06
+T: 0 1 : 39 : 12 : 0.12
+T: 0 1 : 39 : 13 : 0.06
+T: 0 1 : 39 : 15 : 0.36
+T: 0 1 : 39 : 27 : 0.01
+T: 0 1 : 39 : 30 : 0.02
+T: 0 1 : 39 : 31 : 0.01
+T: 0 1 : 39 : 33 : 0.06
+T: 0 1 : 39 : 36 : 0.01
+T: 0 1 : 39 : 39 : 0.02
+T: 0 1 : 39 : 40 : 0.01
+T: 0 1 : 39 : 42 : 0.06
+T: 0 1 : 39 : 45 : 0.01
+T: 0 1 : 39 : 48 : 0.02
+T: 0 1 : 39 : 49 : 0.01
+T: 0 1 : 39 : 51 : 0.06
+T: 0 1 : 39 : 63 : 0.01
+T: 0 1 : 39 : 66 : 0.02
+T: 0 1 : 39 : 67 : 0.01
+T: 0 1 : 39 : 69 : 0.06
+T: 0 2 : 39 : 9 : 0.06
+T: 0 2 : 39 : 12 : 0.42
+T: 0 2 : 39 : 13 : 0.06
+T: 0 2 : 39 : 15 : 0.06
+T: 0 2 : 39 : 27 : 0.01
+T: 0 2 : 39 : 30 : 0.07
+T: 0 2 : 39 : 31 : 0.01
+T: 0 2 : 39 : 33 : 0.01
+T: 0 2 : 39 : 36 : 0.01
+T: 0 2 : 39 : 39 : 0.07
+T: 0 2 : 39 : 40 : 0.01
+T: 0 2 : 39 : 42 : 0.01
+T: 0 2 : 39 : 45 : 0.01
+T: 0 2 : 39 : 48 : 0.07
+T: 0 2 : 39 : 49 : 0.01
+T: 0 2 : 39 : 51 : 0.01
+T: 0 2 : 39 : 63 : 0.01
+T: 0 2 : 39 : 66 : 0.07
+T: 0 2 : 39 : 67 : 0.01
+T: 0 2 : 39 : 69 : 0.01
+T: 0 3 : 39 : 9 : 0.06
+T: 0 3 : 39 : 12 : 0.12
+T: 0 3 : 39 : 13 : 0.36
+T: 0 3 : 39 : 15 : 0.06
+T: 0 3 : 39 : 27 : 0.01
+T: 0 3 : 39 : 30 : 0.02
+T: 0 3 : 39 : 31 : 0.06
+T: 0 3 : 39 : 33 : 0.01
+T: 0 3 : 39 : 36 : 0.01
+T: 0 3 : 39 : 39 : 0.02
+T: 0 3 : 39 : 40 : 0.06
+T: 0 3 : 39 : 42 : 0.01
+T: 0 3 : 39 : 45 : 0.01
+T: 0 3 : 39 : 48 : 0.02
+T: 0 3 : 39 : 49 : 0.06
+T: 0 3 : 39 : 51 : 0.01
+T: 0 3 : 39 : 63 : 0.01
+T: 0 3 : 39 : 66 : 0.02
+T: 0 3 : 39 : 67 : 0.06
+T: 0 3 : 39 : 69 : 0.01
+T: 0 4 : 39 : 12 : 0.6
+T: 0 4 : 39 : 30 : 0.1
+T: 0 4 : 39 : 39 : 0.1
+T: 0 4 : 39 : 48 : 0.1
+T: 0 4 : 39 : 66 : 0.1
+T: 1 0 : 39 : 9 : 0.06
+T: 1 0 : 39 : 12 : 0.02
+T: 1 0 : 39 : 13 : 0.01
+T: 1 0 : 39 : 15 : 0.01
+T: 1 0 : 39 : 27 : 0.06
+T: 1 0 : 39 : 30 : 0.02
+T: 1 0 : 39 : 31 : 0.01
+T: 1 0 : 39 : 33 : 0.01
+T: 1 0 : 39 : 36 : 0.06
+T: 1 0 : 39 : 39 : 0.02
+T: 1 0 : 39 : 40 : 0.01
+T: 1 0 : 39 : 42 : 0.01
+T: 1 0 : 39 : 45 : 0.06
+T: 1 0 : 39 : 48 : 0.02
+T: 1 0 : 39 : 49 : 0.01
+T: 1 0 : 39 : 51 : 0.01
+T: 1 0 : 39 : 63 : 0.36
+T: 1 0 : 39 : 66 : 0.12
+T: 1 0 : 39 : 67 : 0.06
+T: 1 0 : 39 : 69 : 0.06
+T: 1 1 : 39 : 9 : 0.01
+T: 1 1 : 39 : 12 : 0.02
+T: 1 1 : 39 : 13 : 0.01
+T: 1 1 : 39 : 15 : 0.06
+T: 1 1 : 39 : 27 : 0.01
+T: 1 1 : 39 : 30 : 0.02
+T: 1 1 : 39 : 31 : 0.01
+T: 1 1 : 39 : 33 : 0.06
+T: 1 1 : 39 : 36 : 0.01
+T: 1 1 : 39 : 39 : 0.02
+T: 1 1 : 39 : 40 : 0.01
+T: 1 1 : 39 : 42 : 0.06
+T: 1 1 : 39 : 45 : 0.01
+T: 1 1 : 39 : 48 : 0.02
+T: 1 1 : 39 : 49 : 0.01
+T: 1 1 : 39 : 51 : 0.06
+T: 1 1 : 39 : 63 : 0.06
+T: 1 1 : 39 : 66 : 0.12
+T: 1 1 : 39 : 67 : 0.06
+T: 1 1 : 39 : 69 : 0.36
+T: 1 2 : 39 : 9 : 0.01
+T: 1 2 : 39 : 12 : 0.07
+T: 1 2 : 39 : 13 : 0.01
+T: 1 2 : 39 : 15 : 0.01
+T: 1 2 : 39 : 27 : 0.01
+T: 1 2 : 39 : 30 : 0.07
+T: 1 2 : 39 : 31 : 0.01
+T: 1 2 : 39 : 33 : 0.01
+T: 1 2 : 39 : 36 : 0.01
+T: 1 2 : 39 : 39 : 0.07
+T: 1 2 : 39 : 40 : 0.01
+T: 1 2 : 39 : 42 : 0.01
+T: 1 2 : 39 : 45 : 0.01
+T: 1 2 : 39 : 48 : 0.07
+T: 1 2 : 39 : 49 : 0.01
+T: 1 2 : 39 : 51 : 0.01
+T: 1 2 : 39 : 63 : 0.06
+T: 1 2 : 39 : 66 : 0.42
+T: 1 2 : 39 : 67 : 0.06
+T: 1 2 : 39 : 69 : 0.06
+T: 1 3 : 39 : 9 : 0.01
+T: 1 3 : 39 : 12 : 0.02
+T: 1 3 : 39 : 13 : 0.06
+T: 1 3 : 39 : 15 : 0.01
+T: 1 3 : 39 : 27 : 0.01
+T: 1 3 : 39 : 30 : 0.02
+T: 1 3 : 39 : 31 : 0.06
+T: 1 3 : 39 : 33 : 0.01
+T: 1 3 : 39 : 36 : 0.01
+T: 1 3 : 39 : 39 : 0.02
+T: 1 3 : 39 : 40 : 0.06
+T: 1 3 : 39 : 42 : 0.01
+T: 1 3 : 39 : 45 : 0.01
+T: 1 3 : 39 : 48 : 0.02
+T: 1 3 : 39 : 49 : 0.06
+T: 1 3 : 39 : 51 : 0.01
+T: 1 3 : 39 : 63 : 0.06
+T: 1 3 : 39 : 66 : 0.12
+T: 1 3 : 39 : 67 : 0.36
+T: 1 3 : 39 : 69 : 0.06
+T: 1 4 : 39 : 12 : 0.1
+T: 1 4 : 39 : 30 : 0.1
+T: 1 4 : 39 : 39 : 0.1
+T: 1 4 : 39 : 48 : 0.1
+T: 1 4 : 39 : 66 : 0.6
+T: 2 0 : 39 : 9 : 0.06
+T: 2 0 : 39 : 12 : 0.02
+T: 2 0 : 39 : 13 : 0.01
+T: 2 0 : 39 : 15 : 0.01
+T: 2 0 : 39 : 27 : 0.36
+T: 2 0 : 39 : 30 : 0.12
+T: 2 0 : 39 : 31 : 0.06
+T: 2 0 : 39 : 33 : 0.06
+T: 2 0 : 39 : 36 : 0.06
+T: 2 0 : 39 : 39 : 0.02
+T: 2 0 : 39 : 40 : 0.01
+T: 2 0 : 39 : 42 : 0.01
+T: 2 0 : 39 : 45 : 0.06
+T: 2 0 : 39 : 48 : 0.02
+T: 2 0 : 39 : 49 : 0.01
+T: 2 0 : 39 : 51 : 0.01
+T: 2 0 : 39 : 63 : 0.06
+T: 2 0 : 39 : 66 : 0.02
+T: 2 0 : 39 : 67 : 0.01
+T: 2 0 : 39 : 69 : 0.01
+T: 2 1 : 39 : 9 : 0.01
+T: 2 1 : 39 : 12 : 0.02
+T: 2 1 : 39 : 13 : 0.01
+T: 2 1 : 39 : 15 : 0.06
+T: 2 1 : 39 : 27 : 0.06
+T: 2 1 : 39 : 30 : 0.12
+T: 2 1 : 39 : 31 : 0.06
+T: 2 1 : 39 : 33 : 0.36
+T: 2 1 : 39 : 36 : 0.01
+T: 2 1 : 39 : 39 : 0.02
+T: 2 1 : 39 : 40 : 0.01
+T: 2 1 : 39 : 42 : 0.06
+T: 2 1 : 39 : 45 : 0.01
+T: 2 1 : 39 : 48 : 0.02
+T: 2 1 : 39 : 49 : 0.01
+T: 2 1 : 39 : 51 : 0.06
+T: 2 1 : 39 : 63 : 0.01
+T: 2 1 : 39 : 66 : 0.02
+T: 2 1 : 39 : 67 : 0.01
+T: 2 1 : 39 : 69 : 0.06
+T: 2 2 : 39 : 9 : 0.01
+T: 2 2 : 39 : 12 : 0.07
+T: 2 2 : 39 : 13 : 0.01
+T: 2 2 : 39 : 15 : 0.01
+T: 2 2 : 39 : 27 : 0.06
+T: 2 2 : 39 : 30 : 0.42
+T: 2 2 : 39 : 31 : 0.06
+T: 2 2 : 39 : 33 : 0.06
+T: 2 2 : 39 : 36 : 0.01
+T: 2 2 : 39 : 39 : 0.07
+T: 2 2 : 39 : 40 : 0.01
+T: 2 2 : 39 : 42 : 0.01
+T: 2 2 : 39 : 45 : 0.01
+T: 2 2 : 39 : 48 : 0.07
+T: 2 2 : 39 : 49 : 0.01
+T: 2 2 : 39 : 51 : 0.01
+T: 2 2 : 39 : 63 : 0.01
+T: 2 2 : 39 : 66 : 0.07
+T: 2 2 : 39 : 67 : 0.01
+T: 2 2 : 39 : 69 : 0.01
+T: 2 3 : 39 : 9 : 0.01
+T: 2 3 : 39 : 12 : 0.02
+T: 2 3 : 39 : 13 : 0.06
+T: 2 3 : 39 : 15 : 0.01
+T: 2 3 : 39 : 27 : 0.06
+T: 2 3 : 39 : 30 : 0.12
+T: 2 3 : 39 : 31 : 0.36
+T: 2 3 : 39 : 33 : 0.06
+T: 2 3 : 39 : 36 : 0.01
+T: 2 3 : 39 : 39 : 0.02
+T: 2 3 : 39 : 40 : 0.06
+T: 2 3 : 39 : 42 : 0.01
+T: 2 3 : 39 : 45 : 0.01
+T: 2 3 : 39 : 48 : 0.02
+T: 2 3 : 39 : 49 : 0.06
+T: 2 3 : 39 : 51 : 0.01
+T: 2 3 : 39 : 63 : 0.01
+T: 2 3 : 39 : 66 : 0.02
+T: 2 3 : 39 : 67 : 0.06
+T: 2 3 : 39 : 69 : 0.01
+T: 2 4 : 39 : 12 : 0.1
+T: 2 4 : 39 : 30 : 0.6
+T: 2 4 : 39 : 39 : 0.1
+T: 2 4 : 39 : 48 : 0.1
+T: 2 4 : 39 : 66 : 0.1
+T: 3 0 : 39 : 9 : 0.06
+T: 3 0 : 39 : 12 : 0.02
+T: 3 0 : 39 : 13 : 0.01
+T: 3 0 : 39 : 15 : 0.01
+T: 3 0 : 39 : 27 : 0.06
+T: 3 0 : 39 : 30 : 0.02
+T: 3 0 : 39 : 31 : 0.01
+T: 3 0 : 39 : 33 : 0.01
+T: 3 0 : 39 : 36 : 0.06
+T: 3 0 : 39 : 39 : 0.02
+T: 3 0 : 39 : 40 : 0.01
+T: 3 0 : 39 : 42 : 0.01
+T: 3 0 : 39 : 45 : 0.36
+T: 3 0 : 39 : 48 : 0.12
+T: 3 0 : 39 : 49 : 0.06
+T: 3 0 : 39 : 51 : 0.06
+T: 3 0 : 39 : 63 : 0.06
+T: 3 0 : 39 : 66 : 0.02
+T: 3 0 : 39 : 67 : 0.01
+T: 3 0 : 39 : 69 : 0.01
+T: 3 1 : 39 : 9 : 0.01
+T: 3 1 : 39 : 12 : 0.02
+T: 3 1 : 39 : 13 : 0.01
+T: 3 1 : 39 : 15 : 0.06
+T: 3 1 : 39 : 27 : 0.01
+T: 3 1 : 39 : 30 : 0.02
+T: 3 1 : 39 : 31 : 0.01
+T: 3 1 : 39 : 33 : 0.06
+T: 3 1 : 39 : 36 : 0.01
+T: 3 1 : 39 : 39 : 0.02
+T: 3 1 : 39 : 40 : 0.01
+T: 3 1 : 39 : 42 : 0.06
+T: 3 1 : 39 : 45 : 0.06
+T: 3 1 : 39 : 48 : 0.12
+T: 3 1 : 39 : 49 : 0.06
+T: 3 1 : 39 : 51 : 0.36
+T: 3 1 : 39 : 63 : 0.01
+T: 3 1 : 39 : 66 : 0.02
+T: 3 1 : 39 : 67 : 0.01
+T: 3 1 : 39 : 69 : 0.06
+T: 3 2 : 39 : 9 : 0.01
+T: 3 2 : 39 : 12 : 0.07
+T: 3 2 : 39 : 13 : 0.01
+T: 3 2 : 39 : 15 : 0.01
+T: 3 2 : 39 : 27 : 0.01
+T: 3 2 : 39 : 30 : 0.07
+T: 3 2 : 39 : 31 : 0.01
+T: 3 2 : 39 : 33 : 0.01
+T: 3 2 : 39 : 36 : 0.01
+T: 3 2 : 39 : 39 : 0.07
+T: 3 2 : 39 : 40 : 0.01
+T: 3 2 : 39 : 42 : 0.01
+T: 3 2 : 39 : 45 : 0.06
+T: 3 2 : 39 : 48 : 0.42
+T: 3 2 : 39 : 49 : 0.06
+T: 3 2 : 39 : 51 : 0.06
+T: 3 2 : 39 : 63 : 0.01
+T: 3 2 : 39 : 66 : 0.07
+T: 3 2 : 39 : 67 : 0.01
+T: 3 2 : 39 : 69 : 0.01
+T: 3 3 : 39 : 9 : 0.01
+T: 3 3 : 39 : 12 : 0.02
+T: 3 3 : 39 : 13 : 0.06
+T: 3 3 : 39 : 15 : 0.01
+T: 3 3 : 39 : 27 : 0.01
+T: 3 3 : 39 : 30 : 0.02
+T: 3 3 : 39 : 31 : 0.06
+T: 3 3 : 39 : 33 : 0.01
+T: 3 3 : 39 : 36 : 0.01
+T: 3 3 : 39 : 39 : 0.02
+T: 3 3 : 39 : 40 : 0.06
+T: 3 3 : 39 : 42 : 0.01
+T: 3 3 : 39 : 45 : 0.06
+T: 3 3 : 39 : 48 : 0.12
+T: 3 3 : 39 : 49 : 0.36
+T: 3 3 : 39 : 51 : 0.06
+T: 3 3 : 39 : 63 : 0.01
+T: 3 3 : 39 : 66 : 0.02
+T: 3 3 : 39 : 67 : 0.06
+T: 3 3 : 39 : 69 : 0.01
+T: 3 4 : 39 : 12 : 0.1
+T: 3 4 : 39 : 30 : 0.1
+T: 3 4 : 39 : 39 : 0.1
+T: 3 4 : 39 : 48 : 0.6
+T: 3 4 : 39 : 66 : 0.1
+T: 4 0 : 39 : 36 : 0.6
+T: 4 0 : 39 : 39 : 0.2
+T: 4 0 : 39 : 40 : 0.1
+T: 4 0 : 39 : 42 : 0.1
+T: 4 1 : 39 : 36 : 0.1
+T: 4 1 : 39 : 39 : 0.2
+T: 4 1 : 39 : 40 : 0.1
+T: 4 1 : 39 : 42 : 0.6
+T: 4 2 : 39 : 36 : 0.1
+T: 4 2 : 39 : 39 : 0.7
+T: 4 2 : 39 : 40 : 0.1
+T: 4 2 : 39 : 42 : 0.1
+T: 4 3 : 39 : 36 : 0.1
+T: 4 3 : 39 : 39 : 0.2
+T: 4 3 : 39 : 40 : 0.6
+T: 4 3 : 39 : 42 : 0.1
+T: 4 4 : 39 : 39 : 1.0
+T: 0 0 : 40 : 10 : 0.36
+T: 0 0 : 40 : 12 : 0.06
+T: 0 0 : 40 : 13 : 0.06
+T: 0 0 : 40 : 14 : 0.06
+T: 0 0 : 40 : 16 : 0.06
+T: 0 0 : 40 : 28 : 0.06
+T: 0 0 : 40 : 30 : 0.01
+T: 0 0 : 40 : 31 : 0.01
+T: 0 0 : 40 : 32 : 0.01
+T: 0 0 : 40 : 34 : 0.01
+T: 0 0 : 40 : 37 : 0.06
+T: 0 0 : 40 : 39 : 0.01
+T: 0 0 : 40 : 40 : 0.01
+T: 0 0 : 40 : 41 : 0.01
+T: 0 0 : 40 : 43 : 0.01
+T: 0 0 : 40 : 46 : 0.06
+T: 0 0 : 40 : 48 : 0.01
+T: 0 0 : 40 : 49 : 0.01
+T: 0 0 : 40 : 50 : 0.01
+T: 0 0 : 40 : 52 : 0.01
+T: 0 0 : 40 : 64 : 0.06
+T: 0 0 : 40 : 66 : 0.01
+T: 0 0 : 40 : 67 : 0.01
+T: 0 0 : 40 : 68 : 0.01
+T: 0 0 : 40 : 70 : 0.01
+T: 0 1 : 40 : 10 : 0.06
+T: 0 1 : 40 : 12 : 0.06
+T: 0 1 : 40 : 13 : 0.06
+T: 0 1 : 40 : 14 : 0.06
+T: 0 1 : 40 : 16 : 0.36
+T: 0 1 : 40 : 28 : 0.01
+T: 0 1 : 40 : 30 : 0.01
+T: 0 1 : 40 : 31 : 0.01
+T: 0 1 : 40 : 32 : 0.01
+T: 0 1 : 40 : 34 : 0.06
+T: 0 1 : 40 : 37 : 0.01
+T: 0 1 : 40 : 39 : 0.01
+T: 0 1 : 40 : 40 : 0.01
+T: 0 1 : 40 : 41 : 0.01
+T: 0 1 : 40 : 43 : 0.06
+T: 0 1 : 40 : 46 : 0.01
+T: 0 1 : 40 : 48 : 0.01
+T: 0 1 : 40 : 49 : 0.01
+T: 0 1 : 40 : 50 : 0.01
+T: 0 1 : 40 : 52 : 0.06
+T: 0 1 : 40 : 64 : 0.01
+T: 0 1 : 40 : 66 : 0.01
+T: 0 1 : 40 : 67 : 0.01
+T: 0 1 : 40 : 68 : 0.01
+T: 0 1 : 40 : 70 : 0.06
+T: 0 2 : 40 : 10 : 0.06
+T: 0 2 : 40 : 12 : 0.36
+T: 0 2 : 40 : 13 : 0.06
+T: 0 2 : 40 : 14 : 0.06
+T: 0 2 : 40 : 16 : 0.06
+T: 0 2 : 40 : 28 : 0.01
+T: 0 2 : 40 : 30 : 0.06
+T: 0 2 : 40 : 31 : 0.01
+T: 0 2 : 40 : 32 : 0.01
+T: 0 2 : 40 : 34 : 0.01
+T: 0 2 : 40 : 37 : 0.01
+T: 0 2 : 40 : 39 : 0.06
+T: 0 2 : 40 : 40 : 0.01
+T: 0 2 : 40 : 41 : 0.01
+T: 0 2 : 40 : 43 : 0.01
+T: 0 2 : 40 : 46 : 0.01
+T: 0 2 : 40 : 48 : 0.06
+T: 0 2 : 40 : 49 : 0.01
+T: 0 2 : 40 : 50 : 0.01
+T: 0 2 : 40 : 52 : 0.01
+T: 0 2 : 40 : 64 : 0.01
+T: 0 2 : 40 : 66 : 0.06
+T: 0 2 : 40 : 67 : 0.01
+T: 0 2 : 40 : 68 : 0.01
+T: 0 2 : 40 : 70 : 0.01
+T: 0 3 : 40 : 10 : 0.06
+T: 0 3 : 40 : 12 : 0.06
+T: 0 3 : 40 : 13 : 0.06
+T: 0 3 : 40 : 14 : 0.36
+T: 0 3 : 40 : 16 : 0.06
+T: 0 3 : 40 : 28 : 0.01
+T: 0 3 : 40 : 30 : 0.01
+T: 0 3 : 40 : 31 : 0.01
+T: 0 3 : 40 : 32 : 0.06
+T: 0 3 : 40 : 34 : 0.01
+T: 0 3 : 40 : 37 : 0.01
+T: 0 3 : 40 : 39 : 0.01
+T: 0 3 : 40 : 40 : 0.01
+T: 0 3 : 40 : 41 : 0.06
+T: 0 3 : 40 : 43 : 0.01
+T: 0 3 : 40 : 46 : 0.01
+T: 0 3 : 40 : 48 : 0.01
+T: 0 3 : 40 : 49 : 0.01
+T: 0 3 : 40 : 50 : 0.06
+T: 0 3 : 40 : 52 : 0.01
+T: 0 3 : 40 : 64 : 0.01
+T: 0 3 : 40 : 66 : 0.01
+T: 0 3 : 40 : 67 : 0.01
+T: 0 3 : 40 : 68 : 0.06
+T: 0 3 : 40 : 70 : 0.01
+T: 0 4 : 40 : 13 : 0.6
+T: 0 4 : 40 : 31 : 0.1
+T: 0 4 : 40 : 40 : 0.1
+T: 0 4 : 40 : 49 : 0.1
+T: 0 4 : 40 : 67 : 0.1
+T: 1 0 : 40 : 10 : 0.06
+T: 1 0 : 40 : 12 : 0.01
+T: 1 0 : 40 : 13 : 0.01
+T: 1 0 : 40 : 14 : 0.01
+T: 1 0 : 40 : 16 : 0.01
+T: 1 0 : 40 : 28 : 0.06
+T: 1 0 : 40 : 30 : 0.01
+T: 1 0 : 40 : 31 : 0.01
+T: 1 0 : 40 : 32 : 0.01
+T: 1 0 : 40 : 34 : 0.01
+T: 1 0 : 40 : 37 : 0.06
+T: 1 0 : 40 : 39 : 0.01
+T: 1 0 : 40 : 40 : 0.01
+T: 1 0 : 40 : 41 : 0.01
+T: 1 0 : 40 : 43 : 0.01
+T: 1 0 : 40 : 46 : 0.06
+T: 1 0 : 40 : 48 : 0.01
+T: 1 0 : 40 : 49 : 0.01
+T: 1 0 : 40 : 50 : 0.01
+T: 1 0 : 40 : 52 : 0.01
+T: 1 0 : 40 : 64 : 0.36
+T: 1 0 : 40 : 66 : 0.06
+T: 1 0 : 40 : 67 : 0.06
+T: 1 0 : 40 : 68 : 0.06
+T: 1 0 : 40 : 70 : 0.06
+T: 1 1 : 40 : 10 : 0.01
+T: 1 1 : 40 : 12 : 0.01
+T: 1 1 : 40 : 13 : 0.01
+T: 1 1 : 40 : 14 : 0.01
+T: 1 1 : 40 : 16 : 0.06
+T: 1 1 : 40 : 28 : 0.01
+T: 1 1 : 40 : 30 : 0.01
+T: 1 1 : 40 : 31 : 0.01
+T: 1 1 : 40 : 32 : 0.01
+T: 1 1 : 40 : 34 : 0.06
+T: 1 1 : 40 : 37 : 0.01
+T: 1 1 : 40 : 39 : 0.01
+T: 1 1 : 40 : 40 : 0.01
+T: 1 1 : 40 : 41 : 0.01
+T: 1 1 : 40 : 43 : 0.06
+T: 1 1 : 40 : 46 : 0.01
+T: 1 1 : 40 : 48 : 0.01
+T: 1 1 : 40 : 49 : 0.01
+T: 1 1 : 40 : 50 : 0.01
+T: 1 1 : 40 : 52 : 0.06
+T: 1 1 : 40 : 64 : 0.06
+T: 1 1 : 40 : 66 : 0.06
+T: 1 1 : 40 : 67 : 0.06
+T: 1 1 : 40 : 68 : 0.06
+T: 1 1 : 40 : 70 : 0.36
+T: 1 2 : 40 : 10 : 0.01
+T: 1 2 : 40 : 12 : 0.06
+T: 1 2 : 40 : 13 : 0.01
+T: 1 2 : 40 : 14 : 0.01
+T: 1 2 : 40 : 16 : 0.01
+T: 1 2 : 40 : 28 : 0.01
+T: 1 2 : 40 : 30 : 0.06
+T: 1 2 : 40 : 31 : 0.01
+T: 1 2 : 40 : 32 : 0.01
+T: 1 2 : 40 : 34 : 0.01
+T: 1 2 : 40 : 37 : 0.01
+T: 1 2 : 40 : 39 : 0.06
+T: 1 2 : 40 : 40 : 0.01
+T: 1 2 : 40 : 41 : 0.01
+T: 1 2 : 40 : 43 : 0.01
+T: 1 2 : 40 : 46 : 0.01
+T: 1 2 : 40 : 48 : 0.06
+T: 1 2 : 40 : 49 : 0.01
+T: 1 2 : 40 : 50 : 0.01
+T: 1 2 : 40 : 52 : 0.01
+T: 1 2 : 40 : 64 : 0.06
+T: 1 2 : 40 : 66 : 0.36
+T: 1 2 : 40 : 67 : 0.06
+T: 1 2 : 40 : 68 : 0.06
+T: 1 2 : 40 : 70 : 0.06
+T: 1 3 : 40 : 10 : 0.01
+T: 1 3 : 40 : 12 : 0.01
+T: 1 3 : 40 : 13 : 0.01
+T: 1 3 : 40 : 14 : 0.06
+T: 1 3 : 40 : 16 : 0.01
+T: 1 3 : 40 : 28 : 0.01
+T: 1 3 : 40 : 30 : 0.01
+T: 1 3 : 40 : 31 : 0.01
+T: 1 3 : 40 : 32 : 0.06
+T: 1 3 : 40 : 34 : 0.01
+T: 1 3 : 40 : 37 : 0.01
+T: 1 3 : 40 : 39 : 0.01
+T: 1 3 : 40 : 40 : 0.01
+T: 1 3 : 40 : 41 : 0.06
+T: 1 3 : 40 : 43 : 0.01
+T: 1 3 : 40 : 46 : 0.01
+T: 1 3 : 40 : 48 : 0.01
+T: 1 3 : 40 : 49 : 0.01
+T: 1 3 : 40 : 50 : 0.06
+T: 1 3 : 40 : 52 : 0.01
+T: 1 3 : 40 : 64 : 0.06
+T: 1 3 : 40 : 66 : 0.06
+T: 1 3 : 40 : 67 : 0.06
+T: 1 3 : 40 : 68 : 0.36
+T: 1 3 : 40 : 70 : 0.06
+T: 1 4 : 40 : 13 : 0.1
+T: 1 4 : 40 : 31 : 0.1
+T: 1 4 : 40 : 40 : 0.1
+T: 1 4 : 40 : 49 : 0.1
+T: 1 4 : 40 : 67 : 0.6
+T: 2 0 : 40 : 10 : 0.06
+T: 2 0 : 40 : 12 : 0.01
+T: 2 0 : 40 : 13 : 0.01
+T: 2 0 : 40 : 14 : 0.01
+T: 2 0 : 40 : 16 : 0.01
+T: 2 0 : 40 : 28 : 0.36
+T: 2 0 : 40 : 30 : 0.06
+T: 2 0 : 40 : 31 : 0.06
+T: 2 0 : 40 : 32 : 0.06
+T: 2 0 : 40 : 34 : 0.06
+T: 2 0 : 40 : 37 : 0.06
+T: 2 0 : 40 : 39 : 0.01
+T: 2 0 : 40 : 40 : 0.01
+T: 2 0 : 40 : 41 : 0.01
+T: 2 0 : 40 : 43 : 0.01
+T: 2 0 : 40 : 46 : 0.06
+T: 2 0 : 40 : 48 : 0.01
+T: 2 0 : 40 : 49 : 0.01
+T: 2 0 : 40 : 50 : 0.01
+T: 2 0 : 40 : 52 : 0.01
+T: 2 0 : 40 : 64 : 0.06
+T: 2 0 : 40 : 66 : 0.01
+T: 2 0 : 40 : 67 : 0.01
+T: 2 0 : 40 : 68 : 0.01
+T: 2 0 : 40 : 70 : 0.01
+T: 2 1 : 40 : 10 : 0.01
+T: 2 1 : 40 : 12 : 0.01
+T: 2 1 : 40 : 13 : 0.01
+T: 2 1 : 40 : 14 : 0.01
+T: 2 1 : 40 : 16 : 0.06
+T: 2 1 : 40 : 28 : 0.06
+T: 2 1 : 40 : 30 : 0.06
+T: 2 1 : 40 : 31 : 0.06
+T: 2 1 : 40 : 32 : 0.06
+T: 2 1 : 40 : 34 : 0.36
+T: 2 1 : 40 : 37 : 0.01
+T: 2 1 : 40 : 39 : 0.01
+T: 2 1 : 40 : 40 : 0.01
+T: 2 1 : 40 : 41 : 0.01
+T: 2 1 : 40 : 43 : 0.06
+T: 2 1 : 40 : 46 : 0.01
+T: 2 1 : 40 : 48 : 0.01
+T: 2 1 : 40 : 49 : 0.01
+T: 2 1 : 40 : 50 : 0.01
+T: 2 1 : 40 : 52 : 0.06
+T: 2 1 : 40 : 64 : 0.01
+T: 2 1 : 40 : 66 : 0.01
+T: 2 1 : 40 : 67 : 0.01
+T: 2 1 : 40 : 68 : 0.01
+T: 2 1 : 40 : 70 : 0.06
+T: 2 2 : 40 : 10 : 0.01
+T: 2 2 : 40 : 12 : 0.06
+T: 2 2 : 40 : 13 : 0.01
+T: 2 2 : 40 : 14 : 0.01
+T: 2 2 : 40 : 16 : 0.01
+T: 2 2 : 40 : 28 : 0.06
+T: 2 2 : 40 : 30 : 0.36
+T: 2 2 : 40 : 31 : 0.06
+T: 2 2 : 40 : 32 : 0.06
+T: 2 2 : 40 : 34 : 0.06
+T: 2 2 : 40 : 37 : 0.01
+T: 2 2 : 40 : 39 : 0.06
+T: 2 2 : 40 : 40 : 0.01
+T: 2 2 : 40 : 41 : 0.01
+T: 2 2 : 40 : 43 : 0.01
+T: 2 2 : 40 : 46 : 0.01
+T: 2 2 : 40 : 48 : 0.06
+T: 2 2 : 40 : 49 : 0.01
+T: 2 2 : 40 : 50 : 0.01
+T: 2 2 : 40 : 52 : 0.01
+T: 2 2 : 40 : 64 : 0.01
+T: 2 2 : 40 : 66 : 0.06
+T: 2 2 : 40 : 67 : 0.01
+T: 2 2 : 40 : 68 : 0.01
+T: 2 2 : 40 : 70 : 0.01
+T: 2 3 : 40 : 10 : 0.01
+T: 2 3 : 40 : 12 : 0.01
+T: 2 3 : 40 : 13 : 0.01
+T: 2 3 : 40 : 14 : 0.06
+T: 2 3 : 40 : 16 : 0.01
+T: 2 3 : 40 : 28 : 0.06
+T: 2 3 : 40 : 30 : 0.06
+T: 2 3 : 40 : 31 : 0.06
+T: 2 3 : 40 : 32 : 0.36
+T: 2 3 : 40 : 34 : 0.06
+T: 2 3 : 40 : 37 : 0.01
+T: 2 3 : 40 : 39 : 0.01
+T: 2 3 : 40 : 40 : 0.01
+T: 2 3 : 40 : 41 : 0.06
+T: 2 3 : 40 : 43 : 0.01
+T: 2 3 : 40 : 46 : 0.01
+T: 2 3 : 40 : 48 : 0.01
+T: 2 3 : 40 : 49 : 0.01
+T: 2 3 : 40 : 50 : 0.06
+T: 2 3 : 40 : 52 : 0.01
+T: 2 3 : 40 : 64 : 0.01
+T: 2 3 : 40 : 66 : 0.01
+T: 2 3 : 40 : 67 : 0.01
+T: 2 3 : 40 : 68 : 0.06
+T: 2 3 : 40 : 70 : 0.01
+T: 2 4 : 40 : 13 : 0.1
+T: 2 4 : 40 : 31 : 0.6
+T: 2 4 : 40 : 40 : 0.1
+T: 2 4 : 40 : 49 : 0.1
+T: 2 4 : 40 : 67 : 0.1
+T: 3 0 : 40 : 10 : 0.06
+T: 3 0 : 40 : 12 : 0.01
+T: 3 0 : 40 : 13 : 0.01
+T: 3 0 : 40 : 14 : 0.01
+T: 3 0 : 40 : 16 : 0.01
+T: 3 0 : 40 : 28 : 0.06
+T: 3 0 : 40 : 30 : 0.01
+T: 3 0 : 40 : 31 : 0.01
+T: 3 0 : 40 : 32 : 0.01
+T: 3 0 : 40 : 34 : 0.01
+T: 3 0 : 40 : 37 : 0.06
+T: 3 0 : 40 : 39 : 0.01
+T: 3 0 : 40 : 40 : 0.01
+T: 3 0 : 40 : 41 : 0.01
+T: 3 0 : 40 : 43 : 0.01
+T: 3 0 : 40 : 46 : 0.36
+T: 3 0 : 40 : 48 : 0.06
+T: 3 0 : 40 : 49 : 0.06
+T: 3 0 : 40 : 50 : 0.06
+T: 3 0 : 40 : 52 : 0.06
+T: 3 0 : 40 : 64 : 0.06
+T: 3 0 : 40 : 66 : 0.01
+T: 3 0 : 40 : 67 : 0.01
+T: 3 0 : 40 : 68 : 0.01
+T: 3 0 : 40 : 70 : 0.01
+T: 3 1 : 40 : 10 : 0.01
+T: 3 1 : 40 : 12 : 0.01
+T: 3 1 : 40 : 13 : 0.01
+T: 3 1 : 40 : 14 : 0.01
+T: 3 1 : 40 : 16 : 0.06
+T: 3 1 : 40 : 28 : 0.01
+T: 3 1 : 40 : 30 : 0.01
+T: 3 1 : 40 : 31 : 0.01
+T: 3 1 : 40 : 32 : 0.01
+T: 3 1 : 40 : 34 : 0.06
+T: 3 1 : 40 : 37 : 0.01
+T: 3 1 : 40 : 39 : 0.01
+T: 3 1 : 40 : 40 : 0.01
+T: 3 1 : 40 : 41 : 0.01
+T: 3 1 : 40 : 43 : 0.06
+T: 3 1 : 40 : 46 : 0.06
+T: 3 1 : 40 : 48 : 0.06
+T: 3 1 : 40 : 49 : 0.06
+T: 3 1 : 40 : 50 : 0.06
+T: 3 1 : 40 : 52 : 0.36
+T: 3 1 : 40 : 64 : 0.01
+T: 3 1 : 40 : 66 : 0.01
+T: 3 1 : 40 : 67 : 0.01
+T: 3 1 : 40 : 68 : 0.01
+T: 3 1 : 40 : 70 : 0.06
+T: 3 2 : 40 : 10 : 0.01
+T: 3 2 : 40 : 12 : 0.06
+T: 3 2 : 40 : 13 : 0.01
+T: 3 2 : 40 : 14 : 0.01
+T: 3 2 : 40 : 16 : 0.01
+T: 3 2 : 40 : 28 : 0.01
+T: 3 2 : 40 : 30 : 0.06
+T: 3 2 : 40 : 31 : 0.01
+T: 3 2 : 40 : 32 : 0.01
+T: 3 2 : 40 : 34 : 0.01
+T: 3 2 : 40 : 37 : 0.01
+T: 3 2 : 40 : 39 : 0.06
+T: 3 2 : 40 : 40 : 0.01
+T: 3 2 : 40 : 41 : 0.01
+T: 3 2 : 40 : 43 : 0.01
+T: 3 2 : 40 : 46 : 0.06
+T: 3 2 : 40 : 48 : 0.36
+T: 3 2 : 40 : 49 : 0.06
+T: 3 2 : 40 : 50 : 0.06
+T: 3 2 : 40 : 52 : 0.06
+T: 3 2 : 40 : 64 : 0.01
+T: 3 2 : 40 : 66 : 0.06
+T: 3 2 : 40 : 67 : 0.01
+T: 3 2 : 40 : 68 : 0.01
+T: 3 2 : 40 : 70 : 0.01
+T: 3 3 : 40 : 10 : 0.01
+T: 3 3 : 40 : 12 : 0.01
+T: 3 3 : 40 : 13 : 0.01
+T: 3 3 : 40 : 14 : 0.06
+T: 3 3 : 40 : 16 : 0.01
+T: 3 3 : 40 : 28 : 0.01
+T: 3 3 : 40 : 30 : 0.01
+T: 3 3 : 40 : 31 : 0.01
+T: 3 3 : 40 : 32 : 0.06
+T: 3 3 : 40 : 34 : 0.01
+T: 3 3 : 40 : 37 : 0.01
+T: 3 3 : 40 : 39 : 0.01
+T: 3 3 : 40 : 40 : 0.01
+T: 3 3 : 40 : 41 : 0.06
+T: 3 3 : 40 : 43 : 0.01
+T: 3 3 : 40 : 46 : 0.06
+T: 3 3 : 40 : 48 : 0.06
+T: 3 3 : 40 : 49 : 0.06
+T: 3 3 : 40 : 50 : 0.36
+T: 3 3 : 40 : 52 : 0.06
+T: 3 3 : 40 : 64 : 0.01
+T: 3 3 : 40 : 66 : 0.01
+T: 3 3 : 40 : 67 : 0.01
+T: 3 3 : 40 : 68 : 0.06
+T: 3 3 : 40 : 70 : 0.01
+T: 3 4 : 40 : 13 : 0.1
+T: 3 4 : 40 : 31 : 0.1
+T: 3 4 : 40 : 40 : 0.1
+T: 3 4 : 40 : 49 : 0.6
+T: 3 4 : 40 : 67 : 0.1
+T: 4 0 : 40 : 37 : 0.6
+T: 4 0 : 40 : 39 : 0.1
+T: 4 0 : 40 : 40 : 0.1
+T: 4 0 : 40 : 41 : 0.1
+T: 4 0 : 40 : 43 : 0.1
+T: 4 1 : 40 : 37 : 0.1
+T: 4 1 : 40 : 39 : 0.1
+T: 4 1 : 40 : 40 : 0.1
+T: 4 1 : 40 : 41 : 0.1
+T: 4 1 : 40 : 43 : 0.6
+T: 4 2 : 40 : 37 : 0.1
+T: 4 2 : 40 : 39 : 0.6
+T: 4 2 : 40 : 40 : 0.1
+T: 4 2 : 40 : 41 : 0.1
+T: 4 2 : 40 : 43 : 0.1
+T: 4 3 : 40 : 37 : 0.1
+T: 4 3 : 40 : 39 : 0.1
+T: 4 3 : 40 : 40 : 0.1
+T: 4 3 : 40 : 41 : 0.6
+T: 4 3 : 40 : 43 : 0.1
+T: 4 4 : 40 : 40 : 1.0
+T: 0 0 : 41 : 11 : 0.36
+T: 0 0 : 41 : 13 : 0.06
+T: 0 0 : 41 : 14 : 0.12
+T: 0 0 : 41 : 17 : 0.06
+T: 0 0 : 41 : 29 : 0.06
+T: 0 0 : 41 : 31 : 0.01
+T: 0 0 : 41 : 32 : 0.02
+T: 0 0 : 41 : 35 : 0.01
+T: 0 0 : 41 : 38 : 0.06
+T: 0 0 : 41 : 40 : 0.01
+T: 0 0 : 41 : 41 : 0.02
+T: 0 0 : 41 : 44 : 0.01
+T: 0 0 : 41 : 47 : 0.06
+T: 0 0 : 41 : 49 : 0.01
+T: 0 0 : 41 : 50 : 0.02
+T: 0 0 : 41 : 53 : 0.01
+T: 0 0 : 41 : 65 : 0.06
+T: 0 0 : 41 : 67 : 0.01
+T: 0 0 : 41 : 68 : 0.02
+T: 0 0 : 41 : 71 : 0.01
+T: 0 1 : 41 : 11 : 0.06
+T: 0 1 : 41 : 13 : 0.06
+T: 0 1 : 41 : 14 : 0.12
+T: 0 1 : 41 : 17 : 0.36
+T: 0 1 : 41 : 29 : 0.01
+T: 0 1 : 41 : 31 : 0.01
+T: 0 1 : 41 : 32 : 0.02
+T: 0 1 : 41 : 35 : 0.06
+T: 0 1 : 41 : 38 : 0.01
+T: 0 1 : 41 : 40 : 0.01
+T: 0 1 : 41 : 41 : 0.02
+T: 0 1 : 41 : 44 : 0.06
+T: 0 1 : 41 : 47 : 0.01
+T: 0 1 : 41 : 49 : 0.01
+T: 0 1 : 41 : 50 : 0.02
+T: 0 1 : 41 : 53 : 0.06
+T: 0 1 : 41 : 65 : 0.01
+T: 0 1 : 41 : 67 : 0.01
+T: 0 1 : 41 : 68 : 0.02
+T: 0 1 : 41 : 71 : 0.06
+T: 0 2 : 41 : 11 : 0.06
+T: 0 2 : 41 : 13 : 0.36
+T: 0 2 : 41 : 14 : 0.12
+T: 0 2 : 41 : 17 : 0.06
+T: 0 2 : 41 : 29 : 0.01
+T: 0 2 : 41 : 31 : 0.06
+T: 0 2 : 41 : 32 : 0.02
+T: 0 2 : 41 : 35 : 0.01
+T: 0 2 : 41 : 38 : 0.01
+T: 0 2 : 41 : 40 : 0.06
+T: 0 2 : 41 : 41 : 0.02
+T: 0 2 : 41 : 44 : 0.01
+T: 0 2 : 41 : 47 : 0.01
+T: 0 2 : 41 : 49 : 0.06
+T: 0 2 : 41 : 50 : 0.02
+T: 0 2 : 41 : 53 : 0.01
+T: 0 2 : 41 : 65 : 0.01
+T: 0 2 : 41 : 67 : 0.06
+T: 0 2 : 41 : 68 : 0.02
+T: 0 2 : 41 : 71 : 0.01
+T: 0 3 : 41 : 11 : 0.06
+T: 0 3 : 41 : 13 : 0.06
+T: 0 3 : 41 : 14 : 0.42
+T: 0 3 : 41 : 17 : 0.06
+T: 0 3 : 41 : 29 : 0.01
+T: 0 3 : 41 : 31 : 0.01
+T: 0 3 : 41 : 32 : 0.07
+T: 0 3 : 41 : 35 : 0.01
+T: 0 3 : 41 : 38 : 0.01
+T: 0 3 : 41 : 40 : 0.01
+T: 0 3 : 41 : 41 : 0.07
+T: 0 3 : 41 : 44 : 0.01
+T: 0 3 : 41 : 47 : 0.01
+T: 0 3 : 41 : 49 : 0.01
+T: 0 3 : 41 : 50 : 0.07
+T: 0 3 : 41 : 53 : 0.01
+T: 0 3 : 41 : 65 : 0.01
+T: 0 3 : 41 : 67 : 0.01
+T: 0 3 : 41 : 68 : 0.07
+T: 0 3 : 41 : 71 : 0.01
+T: 0 4 : 41 : 14 : 0.6
+T: 0 4 : 41 : 32 : 0.1
+T: 0 4 : 41 : 41 : 0.1
+T: 0 4 : 41 : 50 : 0.1
+T: 0 4 : 41 : 68 : 0.1
+T: 1 0 : 41 : 11 : 0.06
+T: 1 0 : 41 : 13 : 0.01
+T: 1 0 : 41 : 14 : 0.02
+T: 1 0 : 41 : 17 : 0.01
+T: 1 0 : 41 : 29 : 0.06
+T: 1 0 : 41 : 31 : 0.01
+T: 1 0 : 41 : 32 : 0.02
+T: 1 0 : 41 : 35 : 0.01
+T: 1 0 : 41 : 38 : 0.06
+T: 1 0 : 41 : 40 : 0.01
+T: 1 0 : 41 : 41 : 0.02
+T: 1 0 : 41 : 44 : 0.01
+T: 1 0 : 41 : 47 : 0.06
+T: 1 0 : 41 : 49 : 0.01
+T: 1 0 : 41 : 50 : 0.02
+T: 1 0 : 41 : 53 : 0.01
+T: 1 0 : 41 : 65 : 0.36
+T: 1 0 : 41 : 67 : 0.06
+T: 1 0 : 41 : 68 : 0.12
+T: 1 0 : 41 : 71 : 0.06
+T: 1 1 : 41 : 11 : 0.01
+T: 1 1 : 41 : 13 : 0.01
+T: 1 1 : 41 : 14 : 0.02
+T: 1 1 : 41 : 17 : 0.06
+T: 1 1 : 41 : 29 : 0.01
+T: 1 1 : 41 : 31 : 0.01
+T: 1 1 : 41 : 32 : 0.02
+T: 1 1 : 41 : 35 : 0.06
+T: 1 1 : 41 : 38 : 0.01
+T: 1 1 : 41 : 40 : 0.01
+T: 1 1 : 41 : 41 : 0.02
+T: 1 1 : 41 : 44 : 0.06
+T: 1 1 : 41 : 47 : 0.01
+T: 1 1 : 41 : 49 : 0.01
+T: 1 1 : 41 : 50 : 0.02
+T: 1 1 : 41 : 53 : 0.06
+T: 1 1 : 41 : 65 : 0.06
+T: 1 1 : 41 : 67 : 0.06
+T: 1 1 : 41 : 68 : 0.12
+T: 1 1 : 41 : 71 : 0.36
+T: 1 2 : 41 : 11 : 0.01
+T: 1 2 : 41 : 13 : 0.06
+T: 1 2 : 41 : 14 : 0.02
+T: 1 2 : 41 : 17 : 0.01
+T: 1 2 : 41 : 29 : 0.01
+T: 1 2 : 41 : 31 : 0.06
+T: 1 2 : 41 : 32 : 0.02
+T: 1 2 : 41 : 35 : 0.01
+T: 1 2 : 41 : 38 : 0.01
+T: 1 2 : 41 : 40 : 0.06
+T: 1 2 : 41 : 41 : 0.02
+T: 1 2 : 41 : 44 : 0.01
+T: 1 2 : 41 : 47 : 0.01
+T: 1 2 : 41 : 49 : 0.06
+T: 1 2 : 41 : 50 : 0.02
+T: 1 2 : 41 : 53 : 0.01
+T: 1 2 : 41 : 65 : 0.06
+T: 1 2 : 41 : 67 : 0.36
+T: 1 2 : 41 : 68 : 0.12
+T: 1 2 : 41 : 71 : 0.06
+T: 1 3 : 41 : 11 : 0.01
+T: 1 3 : 41 : 13 : 0.01
+T: 1 3 : 41 : 14 : 0.07
+T: 1 3 : 41 : 17 : 0.01
+T: 1 3 : 41 : 29 : 0.01
+T: 1 3 : 41 : 31 : 0.01
+T: 1 3 : 41 : 32 : 0.07
+T: 1 3 : 41 : 35 : 0.01
+T: 1 3 : 41 : 38 : 0.01
+T: 1 3 : 41 : 40 : 0.01
+T: 1 3 : 41 : 41 : 0.07
+T: 1 3 : 41 : 44 : 0.01
+T: 1 3 : 41 : 47 : 0.01
+T: 1 3 : 41 : 49 : 0.01
+T: 1 3 : 41 : 50 : 0.07
+T: 1 3 : 41 : 53 : 0.01
+T: 1 3 : 41 : 65 : 0.06
+T: 1 3 : 41 : 67 : 0.06
+T: 1 3 : 41 : 68 : 0.42
+T: 1 3 : 41 : 71 : 0.06
+T: 1 4 : 41 : 14 : 0.1
+T: 1 4 : 41 : 32 : 0.1
+T: 1 4 : 41 : 41 : 0.1
+T: 1 4 : 41 : 50 : 0.1
+T: 1 4 : 41 : 68 : 0.6
+T: 2 0 : 41 : 11 : 0.06
+T: 2 0 : 41 : 13 : 0.01
+T: 2 0 : 41 : 14 : 0.02
+T: 2 0 : 41 : 17 : 0.01
+T: 2 0 : 41 : 29 : 0.36
+T: 2 0 : 41 : 31 : 0.06
+T: 2 0 : 41 : 32 : 0.12
+T: 2 0 : 41 : 35 : 0.06
+T: 2 0 : 41 : 38 : 0.06
+T: 2 0 : 41 : 40 : 0.01
+T: 2 0 : 41 : 41 : 0.02
+T: 2 0 : 41 : 44 : 0.01
+T: 2 0 : 41 : 47 : 0.06
+T: 2 0 : 41 : 49 : 0.01
+T: 2 0 : 41 : 50 : 0.02
+T: 2 0 : 41 : 53 : 0.01
+T: 2 0 : 41 : 65 : 0.06
+T: 2 0 : 41 : 67 : 0.01
+T: 2 0 : 41 : 68 : 0.02
+T: 2 0 : 41 : 71 : 0.01
+T: 2 1 : 41 : 11 : 0.01
+T: 2 1 : 41 : 13 : 0.01
+T: 2 1 : 41 : 14 : 0.02
+T: 2 1 : 41 : 17 : 0.06
+T: 2 1 : 41 : 29 : 0.06
+T: 2 1 : 41 : 31 : 0.06
+T: 2 1 : 41 : 32 : 0.12
+T: 2 1 : 41 : 35 : 0.36
+T: 2 1 : 41 : 38 : 0.01
+T: 2 1 : 41 : 40 : 0.01
+T: 2 1 : 41 : 41 : 0.02
+T: 2 1 : 41 : 44 : 0.06
+T: 2 1 : 41 : 47 : 0.01
+T: 2 1 : 41 : 49 : 0.01
+T: 2 1 : 41 : 50 : 0.02
+T: 2 1 : 41 : 53 : 0.06
+T: 2 1 : 41 : 65 : 0.01
+T: 2 1 : 41 : 67 : 0.01
+T: 2 1 : 41 : 68 : 0.02
+T: 2 1 : 41 : 71 : 0.06
+T: 2 2 : 41 : 11 : 0.01
+T: 2 2 : 41 : 13 : 0.06
+T: 2 2 : 41 : 14 : 0.02
+T: 2 2 : 41 : 17 : 0.01
+T: 2 2 : 41 : 29 : 0.06
+T: 2 2 : 41 : 31 : 0.36
+T: 2 2 : 41 : 32 : 0.12
+T: 2 2 : 41 : 35 : 0.06
+T: 2 2 : 41 : 38 : 0.01
+T: 2 2 : 41 : 40 : 0.06
+T: 2 2 : 41 : 41 : 0.02
+T: 2 2 : 41 : 44 : 0.01
+T: 2 2 : 41 : 47 : 0.01
+T: 2 2 : 41 : 49 : 0.06
+T: 2 2 : 41 : 50 : 0.02
+T: 2 2 : 41 : 53 : 0.01
+T: 2 2 : 41 : 65 : 0.01
+T: 2 2 : 41 : 67 : 0.06
+T: 2 2 : 41 : 68 : 0.02
+T: 2 2 : 41 : 71 : 0.01
+T: 2 3 : 41 : 11 : 0.01
+T: 2 3 : 41 : 13 : 0.01
+T: 2 3 : 41 : 14 : 0.07
+T: 2 3 : 41 : 17 : 0.01
+T: 2 3 : 41 : 29 : 0.06
+T: 2 3 : 41 : 31 : 0.06
+T: 2 3 : 41 : 32 : 0.42
+T: 2 3 : 41 : 35 : 0.06
+T: 2 3 : 41 : 38 : 0.01
+T: 2 3 : 41 : 40 : 0.01
+T: 2 3 : 41 : 41 : 0.07
+T: 2 3 : 41 : 44 : 0.01
+T: 2 3 : 41 : 47 : 0.01
+T: 2 3 : 41 : 49 : 0.01
+T: 2 3 : 41 : 50 : 0.07
+T: 2 3 : 41 : 53 : 0.01
+T: 2 3 : 41 : 65 : 0.01
+T: 2 3 : 41 : 67 : 0.01
+T: 2 3 : 41 : 68 : 0.07
+T: 2 3 : 41 : 71 : 0.01
+T: 2 4 : 41 : 14 : 0.1
+T: 2 4 : 41 : 32 : 0.6
+T: 2 4 : 41 : 41 : 0.1
+T: 2 4 : 41 : 50 : 0.1
+T: 2 4 : 41 : 68 : 0.1
+T: 3 0 : 41 : 11 : 0.06
+T: 3 0 : 41 : 13 : 0.01
+T: 3 0 : 41 : 14 : 0.02
+T: 3 0 : 41 : 17 : 0.01
+T: 3 0 : 41 : 29 : 0.06
+T: 3 0 : 41 : 31 : 0.01
+T: 3 0 : 41 : 32 : 0.02
+T: 3 0 : 41 : 35 : 0.01
+T: 3 0 : 41 : 38 : 0.06
+T: 3 0 : 41 : 40 : 0.01
+T: 3 0 : 41 : 41 : 0.02
+T: 3 0 : 41 : 44 : 0.01
+T: 3 0 : 41 : 47 : 0.36
+T: 3 0 : 41 : 49 : 0.06
+T: 3 0 : 41 : 50 : 0.12
+T: 3 0 : 41 : 53 : 0.06
+T: 3 0 : 41 : 65 : 0.06
+T: 3 0 : 41 : 67 : 0.01
+T: 3 0 : 41 : 68 : 0.02
+T: 3 0 : 41 : 71 : 0.01
+T: 3 1 : 41 : 11 : 0.01
+T: 3 1 : 41 : 13 : 0.01
+T: 3 1 : 41 : 14 : 0.02
+T: 3 1 : 41 : 17 : 0.06
+T: 3 1 : 41 : 29 : 0.01
+T: 3 1 : 41 : 31 : 0.01
+T: 3 1 : 41 : 32 : 0.02
+T: 3 1 : 41 : 35 : 0.06
+T: 3 1 : 41 : 38 : 0.01
+T: 3 1 : 41 : 40 : 0.01
+T: 3 1 : 41 : 41 : 0.02
+T: 3 1 : 41 : 44 : 0.06
+T: 3 1 : 41 : 47 : 0.06
+T: 3 1 : 41 : 49 : 0.06
+T: 3 1 : 41 : 50 : 0.12
+T: 3 1 : 41 : 53 : 0.36
+T: 3 1 : 41 : 65 : 0.01
+T: 3 1 : 41 : 67 : 0.01
+T: 3 1 : 41 : 68 : 0.02
+T: 3 1 : 41 : 71 : 0.06
+T: 3 2 : 41 : 11 : 0.01
+T: 3 2 : 41 : 13 : 0.06
+T: 3 2 : 41 : 14 : 0.02
+T: 3 2 : 41 : 17 : 0.01
+T: 3 2 : 41 : 29 : 0.01
+T: 3 2 : 41 : 31 : 0.06
+T: 3 2 : 41 : 32 : 0.02
+T: 3 2 : 41 : 35 : 0.01
+T: 3 2 : 41 : 38 : 0.01
+T: 3 2 : 41 : 40 : 0.06
+T: 3 2 : 41 : 41 : 0.02
+T: 3 2 : 41 : 44 : 0.01
+T: 3 2 : 41 : 47 : 0.06
+T: 3 2 : 41 : 49 : 0.36
+T: 3 2 : 41 : 50 : 0.12
+T: 3 2 : 41 : 53 : 0.06
+T: 3 2 : 41 : 65 : 0.01
+T: 3 2 : 41 : 67 : 0.06
+T: 3 2 : 41 : 68 : 0.02
+T: 3 2 : 41 : 71 : 0.01
+T: 3 3 : 41 : 11 : 0.01
+T: 3 3 : 41 : 13 : 0.01
+T: 3 3 : 41 : 14 : 0.07
+T: 3 3 : 41 : 17 : 0.01
+T: 3 3 : 41 : 29 : 0.01
+T: 3 3 : 41 : 31 : 0.01
+T: 3 3 : 41 : 32 : 0.07
+T: 3 3 : 41 : 35 : 0.01
+T: 3 3 : 41 : 38 : 0.01
+T: 3 3 : 41 : 40 : 0.01
+T: 3 3 : 41 : 41 : 0.07
+T: 3 3 : 41 : 44 : 0.01
+T: 3 3 : 41 : 47 : 0.06
+T: 3 3 : 41 : 49 : 0.06
+T: 3 3 : 41 : 50 : 0.42
+T: 3 3 : 41 : 53 : 0.06
+T: 3 3 : 41 : 65 : 0.01
+T: 3 3 : 41 : 67 : 0.01
+T: 3 3 : 41 : 68 : 0.07
+T: 3 3 : 41 : 71 : 0.01
+T: 3 4 : 41 : 14 : 0.1
+T: 3 4 : 41 : 32 : 0.1
+T: 3 4 : 41 : 41 : 0.1
+T: 3 4 : 41 : 50 : 0.6
+T: 3 4 : 41 : 68 : 0.1
+T: 4 0 : 41 : 38 : 0.6
+T: 4 0 : 41 : 40 : 0.1
+T: 4 0 : 41 : 41 : 0.2
+T: 4 0 : 41 : 44 : 0.1
+T: 4 1 : 41 : 38 : 0.1
+T: 4 1 : 41 : 40 : 0.1
+T: 4 1 : 41 : 41 : 0.2
+T: 4 1 : 41 : 44 : 0.6
+T: 4 2 : 41 : 38 : 0.1
+T: 4 2 : 41 : 40 : 0.6
+T: 4 2 : 41 : 41 : 0.2
+T: 4 2 : 41 : 44 : 0.1
+T: 4 3 : 41 : 38 : 0.1
+T: 4 3 : 41 : 40 : 0.1
+T: 4 3 : 41 : 41 : 0.7
+T: 4 3 : 41 : 44 : 0.1
+T: 4 4 : 41 : 41 : 1.0
+T: 0 0 : 42 : 12 : 0.36
+T: 0 0 : 42 : 15 : 0.18
+T: 0 0 : 42 : 16 : 0.06
+T: 0 0 : 42 : 30 : 0.06
+T: 0 0 : 42 : 33 : 0.03
+T: 0 0 : 42 : 34 : 0.01
+T: 0 0 : 42 : 39 : 0.06
+T: 0 0 : 42 : 42 : 0.03
+T: 0 0 : 42 : 43 : 0.01
+T: 0 0 : 42 : 48 : 0.06
+T: 0 0 : 42 : 51 : 0.03
+T: 0 0 : 42 : 52 : 0.01
+T: 0 0 : 42 : 66 : 0.06
+T: 0 0 : 42 : 69 : 0.03
+T: 0 0 : 42 : 70 : 0.01
+T: 0 1 : 42 : 12 : 0.06
+T: 0 1 : 42 : 15 : 0.48
+T: 0 1 : 42 : 16 : 0.06
+T: 0 1 : 42 : 30 : 0.01
+T: 0 1 : 42 : 33 : 0.08
+T: 0 1 : 42 : 34 : 0.01
+T: 0 1 : 42 : 39 : 0.01
+T: 0 1 : 42 : 42 : 0.08
+T: 0 1 : 42 : 43 : 0.01
+T: 0 1 : 42 : 48 : 0.01
+T: 0 1 : 42 : 51 : 0.08
+T: 0 1 : 42 : 52 : 0.01
+T: 0 1 : 42 : 66 : 0.01
+T: 0 1 : 42 : 69 : 0.08
+T: 0 1 : 42 : 70 : 0.01
+T: 0 2 : 42 : 12 : 0.06
+T: 0 2 : 42 : 15 : 0.48
+T: 0 2 : 42 : 16 : 0.06
+T: 0 2 : 42 : 30 : 0.01
+T: 0 2 : 42 : 33 : 0.08
+T: 0 2 : 42 : 34 : 0.01
+T: 0 2 : 42 : 39 : 0.01
+T: 0 2 : 42 : 42 : 0.08
+T: 0 2 : 42 : 43 : 0.01
+T: 0 2 : 42 : 48 : 0.01
+T: 0 2 : 42 : 51 : 0.08
+T: 0 2 : 42 : 52 : 0.01
+T: 0 2 : 42 : 66 : 0.01
+T: 0 2 : 42 : 69 : 0.08
+T: 0 2 : 42 : 70 : 0.01
+T: 0 3 : 42 : 12 : 0.06
+T: 0 3 : 42 : 15 : 0.18
+T: 0 3 : 42 : 16 : 0.36
+T: 0 3 : 42 : 30 : 0.01
+T: 0 3 : 42 : 33 : 0.03
+T: 0 3 : 42 : 34 : 0.06
+T: 0 3 : 42 : 39 : 0.01
+T: 0 3 : 42 : 42 : 0.03
+T: 0 3 : 42 : 43 : 0.06
+T: 0 3 : 42 : 48 : 0.01
+T: 0 3 : 42 : 51 : 0.03
+T: 0 3 : 42 : 52 : 0.06
+T: 0 3 : 42 : 66 : 0.01
+T: 0 3 : 42 : 69 : 0.03
+T: 0 3 : 42 : 70 : 0.06
+T: 0 4 : 42 : 15 : 0.6
+T: 0 4 : 42 : 33 : 0.1
+T: 0 4 : 42 : 42 : 0.1
+T: 0 4 : 42 : 51 : 0.1
+T: 0 4 : 42 : 69 : 0.1
+T: 1 0 : 42 : 12 : 0.06
+T: 1 0 : 42 : 15 : 0.03
+T: 1 0 : 42 : 16 : 0.01
+T: 1 0 : 42 : 30 : 0.06
+T: 1 0 : 42 : 33 : 0.03
+T: 1 0 : 42 : 34 : 0.01
+T: 1 0 : 42 : 39 : 0.06
+T: 1 0 : 42 : 42 : 0.03
+T: 1 0 : 42 : 43 : 0.01
+T: 1 0 : 42 : 48 : 0.06
+T: 1 0 : 42 : 51 : 0.03
+T: 1 0 : 42 : 52 : 0.01
+T: 1 0 : 42 : 66 : 0.36
+T: 1 0 : 42 : 69 : 0.18
+T: 1 0 : 42 : 70 : 0.06
+T: 1 1 : 42 : 12 : 0.01
+T: 1 1 : 42 : 15 : 0.08
+T: 1 1 : 42 : 16 : 0.01
+T: 1 1 : 42 : 30 : 0.01
+T: 1 1 : 42 : 33 : 0.08
+T: 1 1 : 42 : 34 : 0.01
+T: 1 1 : 42 : 39 : 0.01
+T: 1 1 : 42 : 42 : 0.08
+T: 1 1 : 42 : 43 : 0.01
+T: 1 1 : 42 : 48 : 0.01
+T: 1 1 : 42 : 51 : 0.08
+T: 1 1 : 42 : 52 : 0.01
+T: 1 1 : 42 : 66 : 0.06
+T: 1 1 : 42 : 69 : 0.48
+T: 1 1 : 42 : 70 : 0.06
+T: 1 2 : 42 : 12 : 0.01
+T: 1 2 : 42 : 15 : 0.08
+T: 1 2 : 42 : 16 : 0.01
+T: 1 2 : 42 : 30 : 0.01
+T: 1 2 : 42 : 33 : 0.08
+T: 1 2 : 42 : 34 : 0.01
+T: 1 2 : 42 : 39 : 0.01
+T: 1 2 : 42 : 42 : 0.08
+T: 1 2 : 42 : 43 : 0.01
+T: 1 2 : 42 : 48 : 0.01
+T: 1 2 : 42 : 51 : 0.08
+T: 1 2 : 42 : 52 : 0.01
+T: 1 2 : 42 : 66 : 0.06
+T: 1 2 : 42 : 69 : 0.48
+T: 1 2 : 42 : 70 : 0.06
+T: 1 3 : 42 : 12 : 0.01
+T: 1 3 : 42 : 15 : 0.03
+T: 1 3 : 42 : 16 : 0.06
+T: 1 3 : 42 : 30 : 0.01
+T: 1 3 : 42 : 33 : 0.03
+T: 1 3 : 42 : 34 : 0.06
+T: 1 3 : 42 : 39 : 0.01
+T: 1 3 : 42 : 42 : 0.03
+T: 1 3 : 42 : 43 : 0.06
+T: 1 3 : 42 : 48 : 0.01
+T: 1 3 : 42 : 51 : 0.03
+T: 1 3 : 42 : 52 : 0.06
+T: 1 3 : 42 : 66 : 0.06
+T: 1 3 : 42 : 69 : 0.18
+T: 1 3 : 42 : 70 : 0.36
+T: 1 4 : 42 : 15 : 0.1
+T: 1 4 : 42 : 33 : 0.1
+T: 1 4 : 42 : 42 : 0.1
+T: 1 4 : 42 : 51 : 0.1
+T: 1 4 : 42 : 69 : 0.6
+T: 2 0 : 42 : 12 : 0.06
+T: 2 0 : 42 : 15 : 0.03
+T: 2 0 : 42 : 16 : 0.01
+T: 2 0 : 42 : 30 : 0.36
+T: 2 0 : 42 : 33 : 0.18
+T: 2 0 : 42 : 34 : 0.06
+T: 2 0 : 42 : 39 : 0.06
+T: 2 0 : 42 : 42 : 0.03
+T: 2 0 : 42 : 43 : 0.01
+T: 2 0 : 42 : 48 : 0.06
+T: 2 0 : 42 : 51 : 0.03
+T: 2 0 : 42 : 52 : 0.01
+T: 2 0 : 42 : 66 : 0.06
+T: 2 0 : 42 : 69 : 0.03
+T: 2 0 : 42 : 70 : 0.01
+T: 2 1 : 42 : 12 : 0.01
+T: 2 1 : 42 : 15 : 0.08
+T: 2 1 : 42 : 16 : 0.01
+T: 2 1 : 42 : 30 : 0.06
+T: 2 1 : 42 : 33 : 0.48
+T: 2 1 : 42 : 34 : 0.06
+T: 2 1 : 42 : 39 : 0.01
+T: 2 1 : 42 : 42 : 0.08
+T: 2 1 : 42 : 43 : 0.01
+T: 2 1 : 42 : 48 : 0.01
+T: 2 1 : 42 : 51 : 0.08
+T: 2 1 : 42 : 52 : 0.01
+T: 2 1 : 42 : 66 : 0.01
+T: 2 1 : 42 : 69 : 0.08
+T: 2 1 : 42 : 70 : 0.01
+T: 2 2 : 42 : 12 : 0.01
+T: 2 2 : 42 : 15 : 0.08
+T: 2 2 : 42 : 16 : 0.01
+T: 2 2 : 42 : 30 : 0.06
+T: 2 2 : 42 : 33 : 0.48
+T: 2 2 : 42 : 34 : 0.06
+T: 2 2 : 42 : 39 : 0.01
+T: 2 2 : 42 : 42 : 0.08
+T: 2 2 : 42 : 43 : 0.01
+T: 2 2 : 42 : 48 : 0.01
+T: 2 2 : 42 : 51 : 0.08
+T: 2 2 : 42 : 52 : 0.01
+T: 2 2 : 42 : 66 : 0.01
+T: 2 2 : 42 : 69 : 0.08
+T: 2 2 : 42 : 70 : 0.01
+T: 2 3 : 42 : 12 : 0.01
+T: 2 3 : 42 : 15 : 0.03
+T: 2 3 : 42 : 16 : 0.06
+T: 2 3 : 42 : 30 : 0.06
+T: 2 3 : 42 : 33 : 0.18
+T: 2 3 : 42 : 34 : 0.36
+T: 2 3 : 42 : 39 : 0.01
+T: 2 3 : 42 : 42 : 0.03
+T: 2 3 : 42 : 43 : 0.06
+T: 2 3 : 42 : 48 : 0.01
+T: 2 3 : 42 : 51 : 0.03
+T: 2 3 : 42 : 52 : 0.06
+T: 2 3 : 42 : 66 : 0.01
+T: 2 3 : 42 : 69 : 0.03
+T: 2 3 : 42 : 70 : 0.06
+T: 2 4 : 42 : 15 : 0.1
+T: 2 4 : 42 : 33 : 0.6
+T: 2 4 : 42 : 42 : 0.1
+T: 2 4 : 42 : 51 : 0.1
+T: 2 4 : 42 : 69 : 0.1
+T: 3 0 : 42 : 12 : 0.06
+T: 3 0 : 42 : 15 : 0.03
+T: 3 0 : 42 : 16 : 0.01
+T: 3 0 : 42 : 30 : 0.06
+T: 3 0 : 42 : 33 : 0.03
+T: 3 0 : 42 : 34 : 0.01
+T: 3 0 : 42 : 39 : 0.06
+T: 3 0 : 42 : 42 : 0.03
+T: 3 0 : 42 : 43 : 0.01
+T: 3 0 : 42 : 48 : 0.36
+T: 3 0 : 42 : 51 : 0.18
+T: 3 0 : 42 : 52 : 0.06
+T: 3 0 : 42 : 66 : 0.06
+T: 3 0 : 42 : 69 : 0.03
+T: 3 0 : 42 : 70 : 0.01
+T: 3 1 : 42 : 12 : 0.01
+T: 3 1 : 42 : 15 : 0.08
+T: 3 1 : 42 : 16 : 0.01
+T: 3 1 : 42 : 30 : 0.01
+T: 3 1 : 42 : 33 : 0.08
+T: 3 1 : 42 : 34 : 0.01
+T: 3 1 : 42 : 39 : 0.01
+T: 3 1 : 42 : 42 : 0.08
+T: 3 1 : 42 : 43 : 0.01
+T: 3 1 : 42 : 48 : 0.06
+T: 3 1 : 42 : 51 : 0.48
+T: 3 1 : 42 : 52 : 0.06
+T: 3 1 : 42 : 66 : 0.01
+T: 3 1 : 42 : 69 : 0.08
+T: 3 1 : 42 : 70 : 0.01
+T: 3 2 : 42 : 12 : 0.01
+T: 3 2 : 42 : 15 : 0.08
+T: 3 2 : 42 : 16 : 0.01
+T: 3 2 : 42 : 30 : 0.01
+T: 3 2 : 42 : 33 : 0.08
+T: 3 2 : 42 : 34 : 0.01
+T: 3 2 : 42 : 39 : 0.01
+T: 3 2 : 42 : 42 : 0.08
+T: 3 2 : 42 : 43 : 0.01
+T: 3 2 : 42 : 48 : 0.06
+T: 3 2 : 42 : 51 : 0.48
+T: 3 2 : 42 : 52 : 0.06
+T: 3 2 : 42 : 66 : 0.01
+T: 3 2 : 42 : 69 : 0.08
+T: 3 2 : 42 : 70 : 0.01
+T: 3 3 : 42 : 12 : 0.01
+T: 3 3 : 42 : 15 : 0.03
+T: 3 3 : 42 : 16 : 0.06
+T: 3 3 : 42 : 30 : 0.01
+T: 3 3 : 42 : 33 : 0.03
+T: 3 3 : 42 : 34 : 0.06
+T: 3 3 : 42 : 39 : 0.01
+T: 3 3 : 42 : 42 : 0.03
+T: 3 3 : 42 : 43 : 0.06
+T: 3 3 : 42 : 48 : 0.06
+T: 3 3 : 42 : 51 : 0.18
+T: 3 3 : 42 : 52 : 0.36
+T: 3 3 : 42 : 66 : 0.01
+T: 3 3 : 42 : 69 : 0.03
+T: 3 3 : 42 : 70 : 0.06
+T: 3 4 : 42 : 15 : 0.1
+T: 3 4 : 42 : 33 : 0.1
+T: 3 4 : 42 : 42 : 0.1
+T: 3 4 : 42 : 51 : 0.6
+T: 3 4 : 42 : 69 : 0.1
+T: 4 0 : 42 : 39 : 0.6
+T: 4 0 : 42 : 42 : 0.3
+T: 4 0 : 42 : 43 : 0.1
+T: 4 1 : 42 : 39 : 0.1
+T: 4 1 : 42 : 42 : 0.8
+T: 4 1 : 42 : 43 : 0.1
+T: 4 2 : 42 : 39 : 0.1
+T: 4 2 : 42 : 42 : 0.8
+T: 4 2 : 42 : 43 : 0.1
+T: 4 3 : 42 : 39 : 0.1
+T: 4 3 : 42 : 42 : 0.3
+T: 4 3 : 42 : 43 : 0.6
+T: 4 4 : 42 : 42 : 1.0
+T: 0 0 : 43 : 13 : 0.36
+T: 0 0 : 43 : 15 : 0.06
+T: 0 0 : 43 : 16 : 0.12
+T: 0 0 : 43 : 17 : 0.06
+T: 0 0 : 43 : 31 : 0.06
+T: 0 0 : 43 : 33 : 0.01
+T: 0 0 : 43 : 34 : 0.02
+T: 0 0 : 43 : 35 : 0.01
+T: 0 0 : 43 : 40 : 0.06
+T: 0 0 : 43 : 42 : 0.01
+T: 0 0 : 43 : 43 : 0.02
+T: 0 0 : 43 : 44 : 0.01
+T: 0 0 : 43 : 49 : 0.06
+T: 0 0 : 43 : 51 : 0.01
+T: 0 0 : 43 : 52 : 0.02
+T: 0 0 : 43 : 53 : 0.01
+T: 0 0 : 43 : 67 : 0.06
+T: 0 0 : 43 : 69 : 0.01
+T: 0 0 : 43 : 70 : 0.02
+T: 0 0 : 43 : 71 : 0.01
+T: 0 1 : 43 : 13 : 0.06
+T: 0 1 : 43 : 15 : 0.06
+T: 0 1 : 43 : 16 : 0.42
+T: 0 1 : 43 : 17 : 0.06
+T: 0 1 : 43 : 31 : 0.01
+T: 0 1 : 43 : 33 : 0.01
+T: 0 1 : 43 : 34 : 0.07
+T: 0 1 : 43 : 35 : 0.01
+T: 0 1 : 43 : 40 : 0.01
+T: 0 1 : 43 : 42 : 0.01
+T: 0 1 : 43 : 43 : 0.07
+T: 0 1 : 43 : 44 : 0.01
+T: 0 1 : 43 : 49 : 0.01
+T: 0 1 : 43 : 51 : 0.01
+T: 0 1 : 43 : 52 : 0.07
+T: 0 1 : 43 : 53 : 0.01
+T: 0 1 : 43 : 67 : 0.01
+T: 0 1 : 43 : 69 : 0.01
+T: 0 1 : 43 : 70 : 0.07
+T: 0 1 : 43 : 71 : 0.01
+T: 0 2 : 43 : 13 : 0.06
+T: 0 2 : 43 : 15 : 0.36
+T: 0 2 : 43 : 16 : 0.12
+T: 0 2 : 43 : 17 : 0.06
+T: 0 2 : 43 : 31 : 0.01
+T: 0 2 : 43 : 33 : 0.06
+T: 0 2 : 43 : 34 : 0.02
+T: 0 2 : 43 : 35 : 0.01
+T: 0 2 : 43 : 40 : 0.01
+T: 0 2 : 43 : 42 : 0.06
+T: 0 2 : 43 : 43 : 0.02
+T: 0 2 : 43 : 44 : 0.01
+T: 0 2 : 43 : 49 : 0.01
+T: 0 2 : 43 : 51 : 0.06
+T: 0 2 : 43 : 52 : 0.02
+T: 0 2 : 43 : 53 : 0.01
+T: 0 2 : 43 : 67 : 0.01
+T: 0 2 : 43 : 69 : 0.06
+T: 0 2 : 43 : 70 : 0.02
+T: 0 2 : 43 : 71 : 0.01
+T: 0 3 : 43 : 13 : 0.06
+T: 0 3 : 43 : 15 : 0.06
+T: 0 3 : 43 : 16 : 0.12
+T: 0 3 : 43 : 17 : 0.36
+T: 0 3 : 43 : 31 : 0.01
+T: 0 3 : 43 : 33 : 0.01
+T: 0 3 : 43 : 34 : 0.02
+T: 0 3 : 43 : 35 : 0.06
+T: 0 3 : 43 : 40 : 0.01
+T: 0 3 : 43 : 42 : 0.01
+T: 0 3 : 43 : 43 : 0.02
+T: 0 3 : 43 : 44 : 0.06
+T: 0 3 : 43 : 49 : 0.01
+T: 0 3 : 43 : 51 : 0.01
+T: 0 3 : 43 : 52 : 0.02
+T: 0 3 : 43 : 53 : 0.06
+T: 0 3 : 43 : 67 : 0.01
+T: 0 3 : 43 : 69 : 0.01
+T: 0 3 : 43 : 70 : 0.02
+T: 0 3 : 43 : 71 : 0.06
+T: 0 4 : 43 : 16 : 0.6
+T: 0 4 : 43 : 34 : 0.1
+T: 0 4 : 43 : 43 : 0.1
+T: 0 4 : 43 : 52 : 0.1
+T: 0 4 : 43 : 70 : 0.1
+T: 1 0 : 43 : 13 : 0.06
+T: 1 0 : 43 : 15 : 0.01
+T: 1 0 : 43 : 16 : 0.02
+T: 1 0 : 43 : 17 : 0.01
+T: 1 0 : 43 : 31 : 0.06
+T: 1 0 : 43 : 33 : 0.01
+T: 1 0 : 43 : 34 : 0.02
+T: 1 0 : 43 : 35 : 0.01
+T: 1 0 : 43 : 40 : 0.06
+T: 1 0 : 43 : 42 : 0.01
+T: 1 0 : 43 : 43 : 0.02
+T: 1 0 : 43 : 44 : 0.01
+T: 1 0 : 43 : 49 : 0.06
+T: 1 0 : 43 : 51 : 0.01
+T: 1 0 : 43 : 52 : 0.02
+T: 1 0 : 43 : 53 : 0.01
+T: 1 0 : 43 : 67 : 0.36
+T: 1 0 : 43 : 69 : 0.06
+T: 1 0 : 43 : 70 : 0.12
+T: 1 0 : 43 : 71 : 0.06
+T: 1 1 : 43 : 13 : 0.01
+T: 1 1 : 43 : 15 : 0.01
+T: 1 1 : 43 : 16 : 0.07
+T: 1 1 : 43 : 17 : 0.01
+T: 1 1 : 43 : 31 : 0.01
+T: 1 1 : 43 : 33 : 0.01
+T: 1 1 : 43 : 34 : 0.07
+T: 1 1 : 43 : 35 : 0.01
+T: 1 1 : 43 : 40 : 0.01
+T: 1 1 : 43 : 42 : 0.01
+T: 1 1 : 43 : 43 : 0.07
+T: 1 1 : 43 : 44 : 0.01
+T: 1 1 : 43 : 49 : 0.01
+T: 1 1 : 43 : 51 : 0.01
+T: 1 1 : 43 : 52 : 0.07
+T: 1 1 : 43 : 53 : 0.01
+T: 1 1 : 43 : 67 : 0.06
+T: 1 1 : 43 : 69 : 0.06
+T: 1 1 : 43 : 70 : 0.42
+T: 1 1 : 43 : 71 : 0.06
+T: 1 2 : 43 : 13 : 0.01
+T: 1 2 : 43 : 15 : 0.06
+T: 1 2 : 43 : 16 : 0.02
+T: 1 2 : 43 : 17 : 0.01
+T: 1 2 : 43 : 31 : 0.01
+T: 1 2 : 43 : 33 : 0.06
+T: 1 2 : 43 : 34 : 0.02
+T: 1 2 : 43 : 35 : 0.01
+T: 1 2 : 43 : 40 : 0.01
+T: 1 2 : 43 : 42 : 0.06
+T: 1 2 : 43 : 43 : 0.02
+T: 1 2 : 43 : 44 : 0.01
+T: 1 2 : 43 : 49 : 0.01
+T: 1 2 : 43 : 51 : 0.06
+T: 1 2 : 43 : 52 : 0.02
+T: 1 2 : 43 : 53 : 0.01
+T: 1 2 : 43 : 67 : 0.06
+T: 1 2 : 43 : 69 : 0.36
+T: 1 2 : 43 : 70 : 0.12
+T: 1 2 : 43 : 71 : 0.06
+T: 1 3 : 43 : 13 : 0.01
+T: 1 3 : 43 : 15 : 0.01
+T: 1 3 : 43 : 16 : 0.02
+T: 1 3 : 43 : 17 : 0.06
+T: 1 3 : 43 : 31 : 0.01
+T: 1 3 : 43 : 33 : 0.01
+T: 1 3 : 43 : 34 : 0.02
+T: 1 3 : 43 : 35 : 0.06
+T: 1 3 : 43 : 40 : 0.01
+T: 1 3 : 43 : 42 : 0.01
+T: 1 3 : 43 : 43 : 0.02
+T: 1 3 : 43 : 44 : 0.06
+T: 1 3 : 43 : 49 : 0.01
+T: 1 3 : 43 : 51 : 0.01
+T: 1 3 : 43 : 52 : 0.02
+T: 1 3 : 43 : 53 : 0.06
+T: 1 3 : 43 : 67 : 0.06
+T: 1 3 : 43 : 69 : 0.06
+T: 1 3 : 43 : 70 : 0.12
+T: 1 3 : 43 : 71 : 0.36
+T: 1 4 : 43 : 16 : 0.1
+T: 1 4 : 43 : 34 : 0.1
+T: 1 4 : 43 : 43 : 0.1
+T: 1 4 : 43 : 52 : 0.1
+T: 1 4 : 43 : 70 : 0.6
+T: 2 0 : 43 : 13 : 0.06
+T: 2 0 : 43 : 15 : 0.01
+T: 2 0 : 43 : 16 : 0.02
+T: 2 0 : 43 : 17 : 0.01
+T: 2 0 : 43 : 31 : 0.36
+T: 2 0 : 43 : 33 : 0.06
+T: 2 0 : 43 : 34 : 0.12
+T: 2 0 : 43 : 35 : 0.06
+T: 2 0 : 43 : 40 : 0.06
+T: 2 0 : 43 : 42 : 0.01
+T: 2 0 : 43 : 43 : 0.02
+T: 2 0 : 43 : 44 : 0.01
+T: 2 0 : 43 : 49 : 0.06
+T: 2 0 : 43 : 51 : 0.01
+T: 2 0 : 43 : 52 : 0.02
+T: 2 0 : 43 : 53 : 0.01
+T: 2 0 : 43 : 67 : 0.06
+T: 2 0 : 43 : 69 : 0.01
+T: 2 0 : 43 : 70 : 0.02
+T: 2 0 : 43 : 71 : 0.01
+T: 2 1 : 43 : 13 : 0.01
+T: 2 1 : 43 : 15 : 0.01
+T: 2 1 : 43 : 16 : 0.07
+T: 2 1 : 43 : 17 : 0.01
+T: 2 1 : 43 : 31 : 0.06
+T: 2 1 : 43 : 33 : 0.06
+T: 2 1 : 43 : 34 : 0.42
+T: 2 1 : 43 : 35 : 0.06
+T: 2 1 : 43 : 40 : 0.01
+T: 2 1 : 43 : 42 : 0.01
+T: 2 1 : 43 : 43 : 0.07
+T: 2 1 : 43 : 44 : 0.01
+T: 2 1 : 43 : 49 : 0.01
+T: 2 1 : 43 : 51 : 0.01
+T: 2 1 : 43 : 52 : 0.07
+T: 2 1 : 43 : 53 : 0.01
+T: 2 1 : 43 : 67 : 0.01
+T: 2 1 : 43 : 69 : 0.01
+T: 2 1 : 43 : 70 : 0.07
+T: 2 1 : 43 : 71 : 0.01
+T: 2 2 : 43 : 13 : 0.01
+T: 2 2 : 43 : 15 : 0.06
+T: 2 2 : 43 : 16 : 0.02
+T: 2 2 : 43 : 17 : 0.01
+T: 2 2 : 43 : 31 : 0.06
+T: 2 2 : 43 : 33 : 0.36
+T: 2 2 : 43 : 34 : 0.12
+T: 2 2 : 43 : 35 : 0.06
+T: 2 2 : 43 : 40 : 0.01
+T: 2 2 : 43 : 42 : 0.06
+T: 2 2 : 43 : 43 : 0.02
+T: 2 2 : 43 : 44 : 0.01
+T: 2 2 : 43 : 49 : 0.01
+T: 2 2 : 43 : 51 : 0.06
+T: 2 2 : 43 : 52 : 0.02
+T: 2 2 : 43 : 53 : 0.01
+T: 2 2 : 43 : 67 : 0.01
+T: 2 2 : 43 : 69 : 0.06
+T: 2 2 : 43 : 70 : 0.02
+T: 2 2 : 43 : 71 : 0.01
+T: 2 3 : 43 : 13 : 0.01
+T: 2 3 : 43 : 15 : 0.01
+T: 2 3 : 43 : 16 : 0.02
+T: 2 3 : 43 : 17 : 0.06
+T: 2 3 : 43 : 31 : 0.06
+T: 2 3 : 43 : 33 : 0.06
+T: 2 3 : 43 : 34 : 0.12
+T: 2 3 : 43 : 35 : 0.36
+T: 2 3 : 43 : 40 : 0.01
+T: 2 3 : 43 : 42 : 0.01
+T: 2 3 : 43 : 43 : 0.02
+T: 2 3 : 43 : 44 : 0.06
+T: 2 3 : 43 : 49 : 0.01
+T: 2 3 : 43 : 51 : 0.01
+T: 2 3 : 43 : 52 : 0.02
+T: 2 3 : 43 : 53 : 0.06
+T: 2 3 : 43 : 67 : 0.01
+T: 2 3 : 43 : 69 : 0.01
+T: 2 3 : 43 : 70 : 0.02
+T: 2 3 : 43 : 71 : 0.06
+T: 2 4 : 43 : 16 : 0.1
+T: 2 4 : 43 : 34 : 0.6
+T: 2 4 : 43 : 43 : 0.1
+T: 2 4 : 43 : 52 : 0.1
+T: 2 4 : 43 : 70 : 0.1
+T: 3 0 : 43 : 13 : 0.06
+T: 3 0 : 43 : 15 : 0.01
+T: 3 0 : 43 : 16 : 0.02
+T: 3 0 : 43 : 17 : 0.01
+T: 3 0 : 43 : 31 : 0.06
+T: 3 0 : 43 : 33 : 0.01
+T: 3 0 : 43 : 34 : 0.02
+T: 3 0 : 43 : 35 : 0.01
+T: 3 0 : 43 : 40 : 0.06
+T: 3 0 : 43 : 42 : 0.01
+T: 3 0 : 43 : 43 : 0.02
+T: 3 0 : 43 : 44 : 0.01
+T: 3 0 : 43 : 49 : 0.36
+T: 3 0 : 43 : 51 : 0.06
+T: 3 0 : 43 : 52 : 0.12
+T: 3 0 : 43 : 53 : 0.06
+T: 3 0 : 43 : 67 : 0.06
+T: 3 0 : 43 : 69 : 0.01
+T: 3 0 : 43 : 70 : 0.02
+T: 3 0 : 43 : 71 : 0.01
+T: 3 1 : 43 : 13 : 0.01
+T: 3 1 : 43 : 15 : 0.01
+T: 3 1 : 43 : 16 : 0.07
+T: 3 1 : 43 : 17 : 0.01
+T: 3 1 : 43 : 31 : 0.01
+T: 3 1 : 43 : 33 : 0.01
+T: 3 1 : 43 : 34 : 0.07
+T: 3 1 : 43 : 35 : 0.01
+T: 3 1 : 43 : 40 : 0.01
+T: 3 1 : 43 : 42 : 0.01
+T: 3 1 : 43 : 43 : 0.07
+T: 3 1 : 43 : 44 : 0.01
+T: 3 1 : 43 : 49 : 0.06
+T: 3 1 : 43 : 51 : 0.06
+T: 3 1 : 43 : 52 : 0.42
+T: 3 1 : 43 : 53 : 0.06
+T: 3 1 : 43 : 67 : 0.01
+T: 3 1 : 43 : 69 : 0.01
+T: 3 1 : 43 : 70 : 0.07
+T: 3 1 : 43 : 71 : 0.01
+T: 3 2 : 43 : 13 : 0.01
+T: 3 2 : 43 : 15 : 0.06
+T: 3 2 : 43 : 16 : 0.02
+T: 3 2 : 43 : 17 : 0.01
+T: 3 2 : 43 : 31 : 0.01
+T: 3 2 : 43 : 33 : 0.06
+T: 3 2 : 43 : 34 : 0.02
+T: 3 2 : 43 : 35 : 0.01
+T: 3 2 : 43 : 40 : 0.01
+T: 3 2 : 43 : 42 : 0.06
+T: 3 2 : 43 : 43 : 0.02
+T: 3 2 : 43 : 44 : 0.01
+T: 3 2 : 43 : 49 : 0.06
+T: 3 2 : 43 : 51 : 0.36
+T: 3 2 : 43 : 52 : 0.12
+T: 3 2 : 43 : 53 : 0.06
+T: 3 2 : 43 : 67 : 0.01
+T: 3 2 : 43 : 69 : 0.06
+T: 3 2 : 43 : 70 : 0.02
+T: 3 2 : 43 : 71 : 0.01
+T: 3 3 : 43 : 13 : 0.01
+T: 3 3 : 43 : 15 : 0.01
+T: 3 3 : 43 : 16 : 0.02
+T: 3 3 : 43 : 17 : 0.06
+T: 3 3 : 43 : 31 : 0.01
+T: 3 3 : 43 : 33 : 0.01
+T: 3 3 : 43 : 34 : 0.02
+T: 3 3 : 43 : 35 : 0.06
+T: 3 3 : 43 : 40 : 0.01
+T: 3 3 : 43 : 42 : 0.01
+T: 3 3 : 43 : 43 : 0.02
+T: 3 3 : 43 : 44 : 0.06
+T: 3 3 : 43 : 49 : 0.06
+T: 3 3 : 43 : 51 : 0.06
+T: 3 3 : 43 : 52 : 0.12
+T: 3 3 : 43 : 53 : 0.36
+T: 3 3 : 43 : 67 : 0.01
+T: 3 3 : 43 : 69 : 0.01
+T: 3 3 : 43 : 70 : 0.02
+T: 3 3 : 43 : 71 : 0.06
+T: 3 4 : 43 : 16 : 0.1
+T: 3 4 : 43 : 34 : 0.1
+T: 3 4 : 43 : 43 : 0.1
+T: 3 4 : 43 : 52 : 0.6
+T: 3 4 : 43 : 70 : 0.1
+T: 4 0 : 43 : 40 : 0.6
+T: 4 0 : 43 : 42 : 0.1
+T: 4 0 : 43 : 43 : 0.2
+T: 4 0 : 43 : 44 : 0.1
+T: 4 1 : 43 : 40 : 0.1
+T: 4 1 : 43 : 42 : 0.1
+T: 4 1 : 43 : 43 : 0.7
+T: 4 1 : 43 : 44 : 0.1
+T: 4 2 : 43 : 40 : 0.1
+T: 4 2 : 43 : 42 : 0.6
+T: 4 2 : 43 : 43 : 0.2
+T: 4 2 : 43 : 44 : 0.1
+T: 4 3 : 43 : 40 : 0.1
+T: 4 3 : 43 : 42 : 0.1
+T: 4 3 : 43 : 43 : 0.2
+T: 4 3 : 43 : 44 : 0.6
+T: 4 4 : 43 : 43 : 1.0
+T: 0 0 : 44 : 14 : 0.36
+T: 0 0 : 44 : 16 : 0.06
+T: 0 0 : 44 : 17 : 0.18
+T: 0 0 : 44 : 32 : 0.06
+T: 0 0 : 44 : 34 : 0.01
+T: 0 0 : 44 : 35 : 0.03
+T: 0 0 : 44 : 41 : 0.06
+T: 0 0 : 44 : 43 : 0.01
+T: 0 0 : 44 : 44 : 0.03
+T: 0 0 : 44 : 50 : 0.06
+T: 0 0 : 44 : 52 : 0.01
+T: 0 0 : 44 : 53 : 0.03
+T: 0 0 : 44 : 68 : 0.06
+T: 0 0 : 44 : 70 : 0.01
+T: 0 0 : 44 : 71 : 0.03
+T: 0 1 : 44 : 14 : 0.06
+T: 0 1 : 44 : 16 : 0.06
+T: 0 1 : 44 : 17 : 0.48
+T: 0 1 : 44 : 32 : 0.01
+T: 0 1 : 44 : 34 : 0.01
+T: 0 1 : 44 : 35 : 0.08
+T: 0 1 : 44 : 41 : 0.01
+T: 0 1 : 44 : 43 : 0.01
+T: 0 1 : 44 : 44 : 0.08
+T: 0 1 : 44 : 50 : 0.01
+T: 0 1 : 44 : 52 : 0.01
+T: 0 1 : 44 : 53 : 0.08
+T: 0 1 : 44 : 68 : 0.01
+T: 0 1 : 44 : 70 : 0.01
+T: 0 1 : 44 : 71 : 0.08
+T: 0 2 : 44 : 14 : 0.06
+T: 0 2 : 44 : 16 : 0.36
+T: 0 2 : 44 : 17 : 0.18
+T: 0 2 : 44 : 32 : 0.01
+T: 0 2 : 44 : 34 : 0.06
+T: 0 2 : 44 : 35 : 0.03
+T: 0 2 : 44 : 41 : 0.01
+T: 0 2 : 44 : 43 : 0.06
+T: 0 2 : 44 : 44 : 0.03
+T: 0 2 : 44 : 50 : 0.01
+T: 0 2 : 44 : 52 : 0.06
+T: 0 2 : 44 : 53 : 0.03
+T: 0 2 : 44 : 68 : 0.01
+T: 0 2 : 44 : 70 : 0.06
+T: 0 2 : 44 : 71 : 0.03
+T: 0 3 : 44 : 14 : 0.06
+T: 0 3 : 44 : 16 : 0.06
+T: 0 3 : 44 : 17 : 0.48
+T: 0 3 : 44 : 32 : 0.01
+T: 0 3 : 44 : 34 : 0.01
+T: 0 3 : 44 : 35 : 0.08
+T: 0 3 : 44 : 41 : 0.01
+T: 0 3 : 44 : 43 : 0.01
+T: 0 3 : 44 : 44 : 0.08
+T: 0 3 : 44 : 50 : 0.01
+T: 0 3 : 44 : 52 : 0.01
+T: 0 3 : 44 : 53 : 0.08
+T: 0 3 : 44 : 68 : 0.01
+T: 0 3 : 44 : 70 : 0.01
+T: 0 3 : 44 : 71 : 0.08
+T: 0 4 : 44 : 17 : 0.6
+T: 0 4 : 44 : 35 : 0.1
+T: 0 4 : 44 : 44 : 0.1
+T: 0 4 : 44 : 53 : 0.1
+T: 0 4 : 44 : 71 : 0.1
+T: 1 0 : 44 : 14 : 0.06
+T: 1 0 : 44 : 16 : 0.01
+T: 1 0 : 44 : 17 : 0.03
+T: 1 0 : 44 : 32 : 0.06
+T: 1 0 : 44 : 34 : 0.01
+T: 1 0 : 44 : 35 : 0.03
+T: 1 0 : 44 : 41 : 0.06
+T: 1 0 : 44 : 43 : 0.01
+T: 1 0 : 44 : 44 : 0.03
+T: 1 0 : 44 : 50 : 0.06
+T: 1 0 : 44 : 52 : 0.01
+T: 1 0 : 44 : 53 : 0.03
+T: 1 0 : 44 : 68 : 0.36
+T: 1 0 : 44 : 70 : 0.06
+T: 1 0 : 44 : 71 : 0.18
+T: 1 1 : 44 : 14 : 0.01
+T: 1 1 : 44 : 16 : 0.01
+T: 1 1 : 44 : 17 : 0.08
+T: 1 1 : 44 : 32 : 0.01
+T: 1 1 : 44 : 34 : 0.01
+T: 1 1 : 44 : 35 : 0.08
+T: 1 1 : 44 : 41 : 0.01
+T: 1 1 : 44 : 43 : 0.01
+T: 1 1 : 44 : 44 : 0.08
+T: 1 1 : 44 : 50 : 0.01
+T: 1 1 : 44 : 52 : 0.01
+T: 1 1 : 44 : 53 : 0.08
+T: 1 1 : 44 : 68 : 0.06
+T: 1 1 : 44 : 70 : 0.06
+T: 1 1 : 44 : 71 : 0.48
+T: 1 2 : 44 : 14 : 0.01
+T: 1 2 : 44 : 16 : 0.06
+T: 1 2 : 44 : 17 : 0.03
+T: 1 2 : 44 : 32 : 0.01
+T: 1 2 : 44 : 34 : 0.06
+T: 1 2 : 44 : 35 : 0.03
+T: 1 2 : 44 : 41 : 0.01
+T: 1 2 : 44 : 43 : 0.06
+T: 1 2 : 44 : 44 : 0.03
+T: 1 2 : 44 : 50 : 0.01
+T: 1 2 : 44 : 52 : 0.06
+T: 1 2 : 44 : 53 : 0.03
+T: 1 2 : 44 : 68 : 0.06
+T: 1 2 : 44 : 70 : 0.36
+T: 1 2 : 44 : 71 : 0.18
+T: 1 3 : 44 : 14 : 0.01
+T: 1 3 : 44 : 16 : 0.01
+T: 1 3 : 44 : 17 : 0.08
+T: 1 3 : 44 : 32 : 0.01
+T: 1 3 : 44 : 34 : 0.01
+T: 1 3 : 44 : 35 : 0.08
+T: 1 3 : 44 : 41 : 0.01
+T: 1 3 : 44 : 43 : 0.01
+T: 1 3 : 44 : 44 : 0.08
+T: 1 3 : 44 : 50 : 0.01
+T: 1 3 : 44 : 52 : 0.01
+T: 1 3 : 44 : 53 : 0.08
+T: 1 3 : 44 : 68 : 0.06
+T: 1 3 : 44 : 70 : 0.06
+T: 1 3 : 44 : 71 : 0.48
+T: 1 4 : 44 : 17 : 0.1
+T: 1 4 : 44 : 35 : 0.1
+T: 1 4 : 44 : 44 : 0.1
+T: 1 4 : 44 : 53 : 0.1
+T: 1 4 : 44 : 71 : 0.6
+T: 2 0 : 44 : 14 : 0.06
+T: 2 0 : 44 : 16 : 0.01
+T: 2 0 : 44 : 17 : 0.03
+T: 2 0 : 44 : 32 : 0.36
+T: 2 0 : 44 : 34 : 0.06
+T: 2 0 : 44 : 35 : 0.18
+T: 2 0 : 44 : 41 : 0.06
+T: 2 0 : 44 : 43 : 0.01
+T: 2 0 : 44 : 44 : 0.03
+T: 2 0 : 44 : 50 : 0.06
+T: 2 0 : 44 : 52 : 0.01
+T: 2 0 : 44 : 53 : 0.03
+T: 2 0 : 44 : 68 : 0.06
+T: 2 0 : 44 : 70 : 0.01
+T: 2 0 : 44 : 71 : 0.03
+T: 2 1 : 44 : 14 : 0.01
+T: 2 1 : 44 : 16 : 0.01
+T: 2 1 : 44 : 17 : 0.08
+T: 2 1 : 44 : 32 : 0.06
+T: 2 1 : 44 : 34 : 0.06
+T: 2 1 : 44 : 35 : 0.48
+T: 2 1 : 44 : 41 : 0.01
+T: 2 1 : 44 : 43 : 0.01
+T: 2 1 : 44 : 44 : 0.08
+T: 2 1 : 44 : 50 : 0.01
+T: 2 1 : 44 : 52 : 0.01
+T: 2 1 : 44 : 53 : 0.08
+T: 2 1 : 44 : 68 : 0.01
+T: 2 1 : 44 : 70 : 0.01
+T: 2 1 : 44 : 71 : 0.08
+T: 2 2 : 44 : 14 : 0.01
+T: 2 2 : 44 : 16 : 0.06
+T: 2 2 : 44 : 17 : 0.03
+T: 2 2 : 44 : 32 : 0.06
+T: 2 2 : 44 : 34 : 0.36
+T: 2 2 : 44 : 35 : 0.18
+T: 2 2 : 44 : 41 : 0.01
+T: 2 2 : 44 : 43 : 0.06
+T: 2 2 : 44 : 44 : 0.03
+T: 2 2 : 44 : 50 : 0.01
+T: 2 2 : 44 : 52 : 0.06
+T: 2 2 : 44 : 53 : 0.03
+T: 2 2 : 44 : 68 : 0.01
+T: 2 2 : 44 : 70 : 0.06
+T: 2 2 : 44 : 71 : 0.03
+T: 2 3 : 44 : 14 : 0.01
+T: 2 3 : 44 : 16 : 0.01
+T: 2 3 : 44 : 17 : 0.08
+T: 2 3 : 44 : 32 : 0.06
+T: 2 3 : 44 : 34 : 0.06
+T: 2 3 : 44 : 35 : 0.48
+T: 2 3 : 44 : 41 : 0.01
+T: 2 3 : 44 : 43 : 0.01
+T: 2 3 : 44 : 44 : 0.08
+T: 2 3 : 44 : 50 : 0.01
+T: 2 3 : 44 : 52 : 0.01
+T: 2 3 : 44 : 53 : 0.08
+T: 2 3 : 44 : 68 : 0.01
+T: 2 3 : 44 : 70 : 0.01
+T: 2 3 : 44 : 71 : 0.08
+T: 2 4 : 44 : 17 : 0.1
+T: 2 4 : 44 : 35 : 0.6
+T: 2 4 : 44 : 44 : 0.1
+T: 2 4 : 44 : 53 : 0.1
+T: 2 4 : 44 : 71 : 0.1
+T: 3 0 : 44 : 14 : 0.06
+T: 3 0 : 44 : 16 : 0.01
+T: 3 0 : 44 : 17 : 0.03
+T: 3 0 : 44 : 32 : 0.06
+T: 3 0 : 44 : 34 : 0.01
+T: 3 0 : 44 : 35 : 0.03
+T: 3 0 : 44 : 41 : 0.06
+T: 3 0 : 44 : 43 : 0.01
+T: 3 0 : 44 : 44 : 0.03
+T: 3 0 : 44 : 50 : 0.36
+T: 3 0 : 44 : 52 : 0.06
+T: 3 0 : 44 : 53 : 0.18
+T: 3 0 : 44 : 68 : 0.06
+T: 3 0 : 44 : 70 : 0.01
+T: 3 0 : 44 : 71 : 0.03
+T: 3 1 : 44 : 14 : 0.01
+T: 3 1 : 44 : 16 : 0.01
+T: 3 1 : 44 : 17 : 0.08
+T: 3 1 : 44 : 32 : 0.01
+T: 3 1 : 44 : 34 : 0.01
+T: 3 1 : 44 : 35 : 0.08
+T: 3 1 : 44 : 41 : 0.01
+T: 3 1 : 44 : 43 : 0.01
+T: 3 1 : 44 : 44 : 0.08
+T: 3 1 : 44 : 50 : 0.06
+T: 3 1 : 44 : 52 : 0.06
+T: 3 1 : 44 : 53 : 0.48
+T: 3 1 : 44 : 68 : 0.01
+T: 3 1 : 44 : 70 : 0.01
+T: 3 1 : 44 : 71 : 0.08
+T: 3 2 : 44 : 14 : 0.01
+T: 3 2 : 44 : 16 : 0.06
+T: 3 2 : 44 : 17 : 0.03
+T: 3 2 : 44 : 32 : 0.01
+T: 3 2 : 44 : 34 : 0.06
+T: 3 2 : 44 : 35 : 0.03
+T: 3 2 : 44 : 41 : 0.01
+T: 3 2 : 44 : 43 : 0.06
+T: 3 2 : 44 : 44 : 0.03
+T: 3 2 : 44 : 50 : 0.06
+T: 3 2 : 44 : 52 : 0.36
+T: 3 2 : 44 : 53 : 0.18
+T: 3 2 : 44 : 68 : 0.01
+T: 3 2 : 44 : 70 : 0.06
+T: 3 2 : 44 : 71 : 0.03
+T: 3 3 : 44 : 14 : 0.01
+T: 3 3 : 44 : 16 : 0.01
+T: 3 3 : 44 : 17 : 0.08
+T: 3 3 : 44 : 32 : 0.01
+T: 3 3 : 44 : 34 : 0.01
+T: 3 3 : 44 : 35 : 0.08
+T: 3 3 : 44 : 41 : 0.01
+T: 3 3 : 44 : 43 : 0.01
+T: 3 3 : 44 : 44 : 0.08
+T: 3 3 : 44 : 50 : 0.06
+T: 3 3 : 44 : 52 : 0.06
+T: 3 3 : 44 : 53 : 0.48
+T: 3 3 : 44 : 68 : 0.01
+T: 3 3 : 44 : 70 : 0.01
+T: 3 3 : 44 : 71 : 0.08
+T: 3 4 : 44 : 17 : 0.1
+T: 3 4 : 44 : 35 : 0.1
+T: 3 4 : 44 : 44 : 0.1
+T: 3 4 : 44 : 53 : 0.6
+T: 3 4 : 44 : 71 : 0.1
+T: 4 0 : 44 : 41 : 0.6
+T: 4 0 : 44 : 43 : 0.1
+T: 4 0 : 44 : 44 : 0.3
+T: 4 1 : 44 : 41 : 0.1
+T: 4 1 : 44 : 43 : 0.1
+T: 4 1 : 44 : 44 : 0.8
+T: 4 2 : 44 : 41 : 0.1
+T: 4 2 : 44 : 43 : 0.6
+T: 4 2 : 44 : 44 : 0.3
+T: 4 3 : 44 : 41 : 0.1
+T: 4 3 : 44 : 43 : 0.1
+T: 4 3 : 44 : 44 : 0.8
+T: 4 4 : 44 : 44 : 1.0
+T: 0 0 : 45 : 18 : 0.48
+T: 0 0 : 45 : 19 : 0.06
+T: 0 0 : 45 : 21 : 0.06
+T: 0 0 : 45 : 36 : 0.08
+T: 0 0 : 45 : 37 : 0.01
+T: 0 0 : 45 : 39 : 0.01
+T: 0 0 : 45 : 45 : 0.16
+T: 0 0 : 45 : 46 : 0.02
+T: 0 0 : 45 : 48 : 0.02
+T: 0 0 : 45 : 72 : 0.08
+T: 0 0 : 45 : 73 : 0.01
+T: 0 0 : 45 : 75 : 0.01
+T: 0 1 : 45 : 18 : 0.18
+T: 0 1 : 45 : 19 : 0.06
+T: 0 1 : 45 : 21 : 0.36
+T: 0 1 : 45 : 36 : 0.03
+T: 0 1 : 45 : 37 : 0.01
+T: 0 1 : 45 : 39 : 0.06
+T: 0 1 : 45 : 45 : 0.060
+T: 0 1 : 45 : 46 : 0.02
+T: 0 1 : 45 : 48 : 0.12
+T: 0 1 : 45 : 72 : 0.03
+T: 0 1 : 45 : 73 : 0.01
+T: 0 1 : 45 : 75 : 0.06
+T: 0 2 : 45 : 18 : 0.48
+T: 0 2 : 45 : 19 : 0.06
+T: 0 2 : 45 : 21 : 0.06
+T: 0 2 : 45 : 36 : 0.08
+T: 0 2 : 45 : 37 : 0.01
+T: 0 2 : 45 : 39 : 0.01
+T: 0 2 : 45 : 45 : 0.16
+T: 0 2 : 45 : 46 : 0.02
+T: 0 2 : 45 : 48 : 0.02
+T: 0 2 : 45 : 72 : 0.08
+T: 0 2 : 45 : 73 : 0.01
+T: 0 2 : 45 : 75 : 0.01
+T: 0 3 : 45 : 18 : 0.18
+T: 0 3 : 45 : 19 : 0.36
+T: 0 3 : 45 : 21 : 0.06
+T: 0 3 : 45 : 36 : 0.03
+T: 0 3 : 45 : 37 : 0.06
+T: 0 3 : 45 : 39 : 0.01
+T: 0 3 : 45 : 45 : 0.060
+T: 0 3 : 45 : 46 : 0.12
+T: 0 3 : 45 : 48 : 0.02
+T: 0 3 : 45 : 72 : 0.03
+T: 0 3 : 45 : 73 : 0.06
+T: 0 3 : 45 : 75 : 0.01
+T: 0 4 : 45 : 18 : 0.6
+T: 0 4 : 45 : 36 : 0.1
+T: 0 4 : 45 : 45 : 0.2
+T: 0 4 : 45 : 72 : 0.1
+T: 1 0 : 45 : 18 : 0.08
+T: 1 0 : 45 : 19 : 0.01
+T: 1 0 : 45 : 21 : 0.01
+T: 1 0 : 45 : 36 : 0.08
+T: 1 0 : 45 : 37 : 0.01
+T: 1 0 : 45 : 39 : 0.01
+T: 1 0 : 45 : 45 : 0.16
+T: 1 0 : 45 : 46 : 0.02
+T: 1 0 : 45 : 48 : 0.02
+T: 1 0 : 45 : 72 : 0.48
+T: 1 0 : 45 : 73 : 0.06
+T: 1 0 : 45 : 75 : 0.06
+T: 1 1 : 45 : 18 : 0.03
+T: 1 1 : 45 : 19 : 0.01
+T: 1 1 : 45 : 21 : 0.06
+T: 1 1 : 45 : 36 : 0.03
+T: 1 1 : 45 : 37 : 0.01
+T: 1 1 : 45 : 39 : 0.06
+T: 1 1 : 45 : 45 : 0.060
+T: 1 1 : 45 : 46 : 0.02
+T: 1 1 : 45 : 48 : 0.12
+T: 1 1 : 45 : 72 : 0.18
+T: 1 1 : 45 : 73 : 0.06
+T: 1 1 : 45 : 75 : 0.36
+T: 1 2 : 45 : 18 : 0.08
+T: 1 2 : 45 : 19 : 0.01
+T: 1 2 : 45 : 21 : 0.01
+T: 1 2 : 45 : 36 : 0.08
+T: 1 2 : 45 : 37 : 0.01
+T: 1 2 : 45 : 39 : 0.01
+T: 1 2 : 45 : 45 : 0.16
+T: 1 2 : 45 : 46 : 0.02
+T: 1 2 : 45 : 48 : 0.02
+T: 1 2 : 45 : 72 : 0.48
+T: 1 2 : 45 : 73 : 0.06
+T: 1 2 : 45 : 75 : 0.06
+T: 1 3 : 45 : 18 : 0.03
+T: 1 3 : 45 : 19 : 0.06
+T: 1 3 : 45 : 21 : 0.01
+T: 1 3 : 45 : 36 : 0.03
+T: 1 3 : 45 : 37 : 0.06
+T: 1 3 : 45 : 39 : 0.01
+T: 1 3 : 45 : 45 : 0.060
+T: 1 3 : 45 : 46 : 0.12
+T: 1 3 : 45 : 48 : 0.02
+T: 1 3 : 45 : 72 : 0.18
+T: 1 3 : 45 : 73 : 0.36
+T: 1 3 : 45 : 75 : 0.06
+T: 1 4 : 45 : 18 : 0.1
+T: 1 4 : 45 : 36 : 0.1
+T: 1 4 : 45 : 45 : 0.2
+T: 1 4 : 45 : 72 : 0.6
+T: 2 0 : 45 : 18 : 0.08
+T: 2 0 : 45 : 19 : 0.01
+T: 2 0 : 45 : 21 : 0.01
+T: 2 0 : 45 : 36 : 0.48
+T: 2 0 : 45 : 37 : 0.06
+T: 2 0 : 45 : 39 : 0.06
+T: 2 0 : 45 : 45 : 0.16
+T: 2 0 : 45 : 46 : 0.02
+T: 2 0 : 45 : 48 : 0.02
+T: 2 0 : 45 : 72 : 0.08
+T: 2 0 : 45 : 73 : 0.01
+T: 2 0 : 45 : 75 : 0.01
+T: 2 1 : 45 : 18 : 0.03
+T: 2 1 : 45 : 19 : 0.01
+T: 2 1 : 45 : 21 : 0.06
+T: 2 1 : 45 : 36 : 0.18
+T: 2 1 : 45 : 37 : 0.06
+T: 2 1 : 45 : 39 : 0.36
+T: 2 1 : 45 : 45 : 0.060
+T: 2 1 : 45 : 46 : 0.02
+T: 2 1 : 45 : 48 : 0.12
+T: 2 1 : 45 : 72 : 0.03
+T: 2 1 : 45 : 73 : 0.01
+T: 2 1 : 45 : 75 : 0.06
+T: 2 2 : 45 : 18 : 0.08
+T: 2 2 : 45 : 19 : 0.01
+T: 2 2 : 45 : 21 : 0.01
+T: 2 2 : 45 : 36 : 0.48
+T: 2 2 : 45 : 37 : 0.06
+T: 2 2 : 45 : 39 : 0.06
+T: 2 2 : 45 : 45 : 0.16
+T: 2 2 : 45 : 46 : 0.02
+T: 2 2 : 45 : 48 : 0.02
+T: 2 2 : 45 : 72 : 0.08
+T: 2 2 : 45 : 73 : 0.01
+T: 2 2 : 45 : 75 : 0.01
+T: 2 3 : 45 : 18 : 0.03
+T: 2 3 : 45 : 19 : 0.06
+T: 2 3 : 45 : 21 : 0.01
+T: 2 3 : 45 : 36 : 0.18
+T: 2 3 : 45 : 37 : 0.36
+T: 2 3 : 45 : 39 : 0.06
+T: 2 3 : 45 : 45 : 0.060
+T: 2 3 : 45 : 46 : 0.12
+T: 2 3 : 45 : 48 : 0.02
+T: 2 3 : 45 : 72 : 0.03
+T: 2 3 : 45 : 73 : 0.06
+T: 2 3 : 45 : 75 : 0.01
+T: 2 4 : 45 : 18 : 0.1
+T: 2 4 : 45 : 36 : 0.6
+T: 2 4 : 45 : 45 : 0.2
+T: 2 4 : 45 : 72 : 0.1
+T: 3 0 : 45 : 18 : 0.08
+T: 3 0 : 45 : 19 : 0.01
+T: 3 0 : 45 : 21 : 0.01
+T: 3 0 : 45 : 36 : 0.08
+T: 3 0 : 45 : 37 : 0.01
+T: 3 0 : 45 : 39 : 0.01
+T: 3 0 : 45 : 45 : 0.56
+T: 3 0 : 45 : 46 : 0.07
+T: 3 0 : 45 : 48 : 0.07
+T: 3 0 : 45 : 72 : 0.08
+T: 3 0 : 45 : 73 : 0.01
+T: 3 0 : 45 : 75 : 0.01
+T: 3 1 : 45 : 18 : 0.03
+T: 3 1 : 45 : 19 : 0.01
+T: 3 1 : 45 : 21 : 0.06
+T: 3 1 : 45 : 36 : 0.03
+T: 3 1 : 45 : 37 : 0.01
+T: 3 1 : 45 : 39 : 0.06
+T: 3 1 : 45 : 45 : 0.21
+T: 3 1 : 45 : 46 : 0.07
+T: 3 1 : 45 : 48 : 0.42
+T: 3 1 : 45 : 72 : 0.03
+T: 3 1 : 45 : 73 : 0.01
+T: 3 1 : 45 : 75 : 0.06
+T: 3 2 : 45 : 18 : 0.08
+T: 3 2 : 45 : 19 : 0.01
+T: 3 2 : 45 : 21 : 0.01
+T: 3 2 : 45 : 36 : 0.08
+T: 3 2 : 45 : 37 : 0.01
+T: 3 2 : 45 : 39 : 0.01
+T: 3 2 : 45 : 45 : 0.56
+T: 3 2 : 45 : 46 : 0.07
+T: 3 2 : 45 : 48 : 0.07
+T: 3 2 : 45 : 72 : 0.08
+T: 3 2 : 45 : 73 : 0.01
+T: 3 2 : 45 : 75 : 0.01
+T: 3 3 : 45 : 18 : 0.03
+T: 3 3 : 45 : 19 : 0.06
+T: 3 3 : 45 : 21 : 0.01
+T: 3 3 : 45 : 36 : 0.03
+T: 3 3 : 45 : 37 : 0.06
+T: 3 3 : 45 : 39 : 0.01
+T: 3 3 : 45 : 45 : 0.21
+T: 3 3 : 45 : 46 : 0.42
+T: 3 3 : 45 : 48 : 0.07
+T: 3 3 : 45 : 72 : 0.03
+T: 3 3 : 45 : 73 : 0.06
+T: 3 3 : 45 : 75 : 0.01
+T: 3 4 : 45 : 18 : 0.1
+T: 3 4 : 45 : 36 : 0.1
+T: 3 4 : 45 : 45 : 0.7
+T: 3 4 : 45 : 72 : 0.1
+T: 4 0 : 45 : 45 : 0.8
+T: 4 0 : 45 : 46 : 0.1
+T: 4 0 : 45 : 48 : 0.1
+T: 4 1 : 45 : 45 : 0.3
+T: 4 1 : 45 : 46 : 0.1
+T: 4 1 : 45 : 48 : 0.6
+T: 4 2 : 45 : 45 : 0.8
+T: 4 2 : 45 : 46 : 0.1
+T: 4 2 : 45 : 48 : 0.1
+T: 4 3 : 45 : 45 : 0.3
+T: 4 3 : 45 : 46 : 0.6
+T: 4 3 : 45 : 48 : 0.1
+T: 4 4 : 45 : 45 : 1.0
+T: 0 0 : 46 : 18 : 0.06
+T: 0 0 : 46 : 19 : 0.42
+T: 0 0 : 46 : 20 : 0.06
+T: 0 0 : 46 : 22 : 0.06
+T: 0 0 : 46 : 36 : 0.01
+T: 0 0 : 46 : 37 : 0.07
+T: 0 0 : 46 : 38 : 0.01
+T: 0 0 : 46 : 40 : 0.01
+T: 0 0 : 46 : 45 : 0.02
+T: 0 0 : 46 : 46 : 0.14
+T: 0 0 : 46 : 47 : 0.02
+T: 0 0 : 46 : 49 : 0.02
+T: 0 0 : 46 : 72 : 0.01
+T: 0 0 : 46 : 73 : 0.07
+T: 0 0 : 46 : 74 : 0.01
+T: 0 0 : 46 : 76 : 0.01
+T: 0 1 : 46 : 18 : 0.06
+T: 0 1 : 46 : 19 : 0.12
+T: 0 1 : 46 : 20 : 0.06
+T: 0 1 : 46 : 22 : 0.36
+T: 0 1 : 46 : 36 : 0.01
+T: 0 1 : 46 : 37 : 0.02
+T: 0 1 : 46 : 38 : 0.01
+T: 0 1 : 46 : 40 : 0.06
+T: 0 1 : 46 : 45 : 0.02
+T: 0 1 : 46 : 46 : 0.040
+T: 0 1 : 46 : 47 : 0.02
+T: 0 1 : 46 : 49 : 0.12
+T: 0 1 : 46 : 72 : 0.01
+T: 0 1 : 46 : 73 : 0.02
+T: 0 1 : 46 : 74 : 0.01
+T: 0 1 : 46 : 76 : 0.06
+T: 0 2 : 46 : 18 : 0.36
+T: 0 2 : 46 : 19 : 0.12
+T: 0 2 : 46 : 20 : 0.06
+T: 0 2 : 46 : 22 : 0.06
+T: 0 2 : 46 : 36 : 0.06
+T: 0 2 : 46 : 37 : 0.02
+T: 0 2 : 46 : 38 : 0.01
+T: 0 2 : 46 : 40 : 0.01
+T: 0 2 : 46 : 45 : 0.12
+T: 0 2 : 46 : 46 : 0.040
+T: 0 2 : 46 : 47 : 0.02
+T: 0 2 : 46 : 49 : 0.02
+T: 0 2 : 46 : 72 : 0.06
+T: 0 2 : 46 : 73 : 0.02
+T: 0 2 : 46 : 74 : 0.01
+T: 0 2 : 46 : 76 : 0.01
+T: 0 3 : 46 : 18 : 0.06
+T: 0 3 : 46 : 19 : 0.12
+T: 0 3 : 46 : 20 : 0.36
+T: 0 3 : 46 : 22 : 0.06
+T: 0 3 : 46 : 36 : 0.01
+T: 0 3 : 46 : 37 : 0.02
+T: 0 3 : 46 : 38 : 0.06
+T: 0 3 : 46 : 40 : 0.01
+T: 0 3 : 46 : 45 : 0.02
+T: 0 3 : 46 : 46 : 0.040
+T: 0 3 : 46 : 47 : 0.12
+T: 0 3 : 46 : 49 : 0.02
+T: 0 3 : 46 : 72 : 0.01
+T: 0 3 : 46 : 73 : 0.02
+T: 0 3 : 46 : 74 : 0.06
+T: 0 3 : 46 : 76 : 0.01
+T: 0 4 : 46 : 19 : 0.6
+T: 0 4 : 46 : 37 : 0.1
+T: 0 4 : 46 : 46 : 0.2
+T: 0 4 : 46 : 73 : 0.1
+T: 1 0 : 46 : 18 : 0.01
+T: 1 0 : 46 : 19 : 0.07
+T: 1 0 : 46 : 20 : 0.01
+T: 1 0 : 46 : 22 : 0.01
+T: 1 0 : 46 : 36 : 0.01
+T: 1 0 : 46 : 37 : 0.07
+T: 1 0 : 46 : 38 : 0.01
+T: 1 0 : 46 : 40 : 0.01
+T: 1 0 : 46 : 45 : 0.02
+T: 1 0 : 46 : 46 : 0.14
+T: 1 0 : 46 : 47 : 0.02
+T: 1 0 : 46 : 49 : 0.02
+T: 1 0 : 46 : 72 : 0.06
+T: 1 0 : 46 : 73 : 0.42
+T: 1 0 : 46 : 74 : 0.06
+T: 1 0 : 46 : 76 : 0.06
+T: 1 1 : 46 : 18 : 0.01
+T: 1 1 : 46 : 19 : 0.02
+T: 1 1 : 46 : 20 : 0.01
+T: 1 1 : 46 : 22 : 0.06
+T: 1 1 : 46 : 36 : 0.01
+T: 1 1 : 46 : 37 : 0.02
+T: 1 1 : 46 : 38 : 0.01
+T: 1 1 : 46 : 40 : 0.06
+T: 1 1 : 46 : 45 : 0.02
+T: 1 1 : 46 : 46 : 0.040
+T: 1 1 : 46 : 47 : 0.02
+T: 1 1 : 46 : 49 : 0.12
+T: 1 1 : 46 : 72 : 0.06
+T: 1 1 : 46 : 73 : 0.12
+T: 1 1 : 46 : 74 : 0.06
+T: 1 1 : 46 : 76 : 0.36
+T: 1 2 : 46 : 18 : 0.06
+T: 1 2 : 46 : 19 : 0.02
+T: 1 2 : 46 : 20 : 0.01
+T: 1 2 : 46 : 22 : 0.01
+T: 1 2 : 46 : 36 : 0.06
+T: 1 2 : 46 : 37 : 0.02
+T: 1 2 : 46 : 38 : 0.01
+T: 1 2 : 46 : 40 : 0.01
+T: 1 2 : 46 : 45 : 0.12
+T: 1 2 : 46 : 46 : 0.040
+T: 1 2 : 46 : 47 : 0.02
+T: 1 2 : 46 : 49 : 0.02
+T: 1 2 : 46 : 72 : 0.36
+T: 1 2 : 46 : 73 : 0.12
+T: 1 2 : 46 : 74 : 0.06
+T: 1 2 : 46 : 76 : 0.06
+T: 1 3 : 46 : 18 : 0.01
+T: 1 3 : 46 : 19 : 0.02
+T: 1 3 : 46 : 20 : 0.06
+T: 1 3 : 46 : 22 : 0.01
+T: 1 3 : 46 : 36 : 0.01
+T: 1 3 : 46 : 37 : 0.02
+T: 1 3 : 46 : 38 : 0.06
+T: 1 3 : 46 : 40 : 0.01
+T: 1 3 : 46 : 45 : 0.02
+T: 1 3 : 46 : 46 : 0.040
+T: 1 3 : 46 : 47 : 0.12
+T: 1 3 : 46 : 49 : 0.02
+T: 1 3 : 46 : 72 : 0.06
+T: 1 3 : 46 : 73 : 0.12
+T: 1 3 : 46 : 74 : 0.36
+T: 1 3 : 46 : 76 : 0.06
+T: 1 4 : 46 : 19 : 0.1
+T: 1 4 : 46 : 37 : 0.1
+T: 1 4 : 46 : 46 : 0.2
+T: 1 4 : 46 : 73 : 0.6
+T: 2 0 : 46 : 18 : 0.01
+T: 2 0 : 46 : 19 : 0.07
+T: 2 0 : 46 : 20 : 0.01
+T: 2 0 : 46 : 22 : 0.01
+T: 2 0 : 46 : 36 : 0.06
+T: 2 0 : 46 : 37 : 0.42
+T: 2 0 : 46 : 38 : 0.06
+T: 2 0 : 46 : 40 : 0.06
+T: 2 0 : 46 : 45 : 0.02
+T: 2 0 : 46 : 46 : 0.14
+T: 2 0 : 46 : 47 : 0.02
+T: 2 0 : 46 : 49 : 0.02
+T: 2 0 : 46 : 72 : 0.01
+T: 2 0 : 46 : 73 : 0.07
+T: 2 0 : 46 : 74 : 0.01
+T: 2 0 : 46 : 76 : 0.01
+T: 2 1 : 46 : 18 : 0.01
+T: 2 1 : 46 : 19 : 0.02
+T: 2 1 : 46 : 20 : 0.01
+T: 2 1 : 46 : 22 : 0.06
+T: 2 1 : 46 : 36 : 0.06
+T: 2 1 : 46 : 37 : 0.12
+T: 2 1 : 46 : 38 : 0.06
+T: 2 1 : 46 : 40 : 0.36
+T: 2 1 : 46 : 45 : 0.02
+T: 2 1 : 46 : 46 : 0.040
+T: 2 1 : 46 : 47 : 0.02
+T: 2 1 : 46 : 49 : 0.12
+T: 2 1 : 46 : 72 : 0.01
+T: 2 1 : 46 : 73 : 0.02
+T: 2 1 : 46 : 74 : 0.01
+T: 2 1 : 46 : 76 : 0.06
+T: 2 2 : 46 : 18 : 0.06
+T: 2 2 : 46 : 19 : 0.02
+T: 2 2 : 46 : 20 : 0.01
+T: 2 2 : 46 : 22 : 0.01
+T: 2 2 : 46 : 36 : 0.36
+T: 2 2 : 46 : 37 : 0.12
+T: 2 2 : 46 : 38 : 0.06
+T: 2 2 : 46 : 40 : 0.06
+T: 2 2 : 46 : 45 : 0.12
+T: 2 2 : 46 : 46 : 0.040
+T: 2 2 : 46 : 47 : 0.02
+T: 2 2 : 46 : 49 : 0.02
+T: 2 2 : 46 : 72 : 0.06
+T: 2 2 : 46 : 73 : 0.02
+T: 2 2 : 46 : 74 : 0.01
+T: 2 2 : 46 : 76 : 0.01
+T: 2 3 : 46 : 18 : 0.01
+T: 2 3 : 46 : 19 : 0.02
+T: 2 3 : 46 : 20 : 0.06
+T: 2 3 : 46 : 22 : 0.01
+T: 2 3 : 46 : 36 : 0.06
+T: 2 3 : 46 : 37 : 0.12
+T: 2 3 : 46 : 38 : 0.36
+T: 2 3 : 46 : 40 : 0.06
+T: 2 3 : 46 : 45 : 0.02
+T: 2 3 : 46 : 46 : 0.040
+T: 2 3 : 46 : 47 : 0.12
+T: 2 3 : 46 : 49 : 0.02
+T: 2 3 : 46 : 72 : 0.01
+T: 2 3 : 46 : 73 : 0.02
+T: 2 3 : 46 : 74 : 0.06
+T: 2 3 : 46 : 76 : 0.01
+T: 2 4 : 46 : 19 : 0.1
+T: 2 4 : 46 : 37 : 0.6
+T: 2 4 : 46 : 46 : 0.2
+T: 2 4 : 46 : 73 : 0.1
+T: 3 0 : 46 : 18 : 0.01
+T: 3 0 : 46 : 19 : 0.07
+T: 3 0 : 46 : 20 : 0.01
+T: 3 0 : 46 : 22 : 0.01
+T: 3 0 : 46 : 36 : 0.01
+T: 3 0 : 46 : 37 : 0.07
+T: 3 0 : 46 : 38 : 0.01
+T: 3 0 : 46 : 40 : 0.01
+T: 3 0 : 46 : 45 : 0.07
+T: 3 0 : 46 : 46 : 0.49
+T: 3 0 : 46 : 47 : 0.07
+T: 3 0 : 46 : 49 : 0.07
+T: 3 0 : 46 : 72 : 0.01
+T: 3 0 : 46 : 73 : 0.07
+T: 3 0 : 46 : 74 : 0.01
+T: 3 0 : 46 : 76 : 0.01
+T: 3 1 : 46 : 18 : 0.01
+T: 3 1 : 46 : 19 : 0.02
+T: 3 1 : 46 : 20 : 0.01
+T: 3 1 : 46 : 22 : 0.06
+T: 3 1 : 46 : 36 : 0.01
+T: 3 1 : 46 : 37 : 0.02
+T: 3 1 : 46 : 38 : 0.01
+T: 3 1 : 46 : 40 : 0.06
+T: 3 1 : 46 : 45 : 0.07
+T: 3 1 : 46 : 46 : 0.14
+T: 3 1 : 46 : 47 : 0.07
+T: 3 1 : 46 : 49 : 0.42
+T: 3 1 : 46 : 72 : 0.01
+T: 3 1 : 46 : 73 : 0.02
+T: 3 1 : 46 : 74 : 0.01
+T: 3 1 : 46 : 76 : 0.06
+T: 3 2 : 46 : 18 : 0.06
+T: 3 2 : 46 : 19 : 0.02
+T: 3 2 : 46 : 20 : 0.01
+T: 3 2 : 46 : 22 : 0.01
+T: 3 2 : 46 : 36 : 0.06
+T: 3 2 : 46 : 37 : 0.02
+T: 3 2 : 46 : 38 : 0.01
+T: 3 2 : 46 : 40 : 0.01
+T: 3 2 : 46 : 45 : 0.42
+T: 3 2 : 46 : 46 : 0.14
+T: 3 2 : 46 : 47 : 0.07
+T: 3 2 : 46 : 49 : 0.07
+T: 3 2 : 46 : 72 : 0.06
+T: 3 2 : 46 : 73 : 0.02
+T: 3 2 : 46 : 74 : 0.01
+T: 3 2 : 46 : 76 : 0.01
+T: 3 3 : 46 : 18 : 0.01
+T: 3 3 : 46 : 19 : 0.02
+T: 3 3 : 46 : 20 : 0.06
+T: 3 3 : 46 : 22 : 0.01
+T: 3 3 : 46 : 36 : 0.01
+T: 3 3 : 46 : 37 : 0.02
+T: 3 3 : 46 : 38 : 0.06
+T: 3 3 : 46 : 40 : 0.01
+T: 3 3 : 46 : 45 : 0.07
+T: 3 3 : 46 : 46 : 0.14
+T: 3 3 : 46 : 47 : 0.42
+T: 3 3 : 46 : 49 : 0.07
+T: 3 3 : 46 : 72 : 0.01
+T: 3 3 : 46 : 73 : 0.02
+T: 3 3 : 46 : 74 : 0.06
+T: 3 3 : 46 : 76 : 0.01
+T: 3 4 : 46 : 19 : 0.1
+T: 3 4 : 46 : 37 : 0.1
+T: 3 4 : 46 : 46 : 0.7
+T: 3 4 : 46 : 73 : 0.1
+T: 4 0 : 46 : 45 : 0.1
+T: 4 0 : 46 : 46 : 0.7
+T: 4 0 : 46 : 47 : 0.1
+T: 4 0 : 46 : 49 : 0.1
+T: 4 1 : 46 : 45 : 0.1
+T: 4 1 : 46 : 46 : 0.2
+T: 4 1 : 46 : 47 : 0.1
+T: 4 1 : 46 : 49 : 0.6
+T: 4 2 : 46 : 45 : 0.6
+T: 4 2 : 46 : 46 : 0.2
+T: 4 2 : 46 : 47 : 0.1
+T: 4 2 : 46 : 49 : 0.1
+T: 4 3 : 46 : 45 : 0.1
+T: 4 3 : 46 : 46 : 0.2
+T: 4 3 : 46 : 47 : 0.6
+T: 4 3 : 46 : 49 : 0.1
+T: 4 4 : 46 : 46 : 1.0
+T: 0 0 : 47 : 19 : 0.06
+T: 0 0 : 47 : 20 : 0.48
+T: 0 0 : 47 : 23 : 0.06
+T: 0 0 : 47 : 37 : 0.01
+T: 0 0 : 47 : 38 : 0.08
+T: 0 0 : 47 : 41 : 0.01
+T: 0 0 : 47 : 46 : 0.02
+T: 0 0 : 47 : 47 : 0.16
+T: 0 0 : 47 : 50 : 0.02
+T: 0 0 : 47 : 73 : 0.01
+T: 0 0 : 47 : 74 : 0.08
+T: 0 0 : 47 : 77 : 0.01
+T: 0 1 : 47 : 19 : 0.06
+T: 0 1 : 47 : 20 : 0.18
+T: 0 1 : 47 : 23 : 0.36
+T: 0 1 : 47 : 37 : 0.01
+T: 0 1 : 47 : 38 : 0.03
+T: 0 1 : 47 : 41 : 0.06
+T: 0 1 : 47 : 46 : 0.02
+T: 0 1 : 47 : 47 : 0.060
+T: 0 1 : 47 : 50 : 0.12
+T: 0 1 : 47 : 73 : 0.01
+T: 0 1 : 47 : 74 : 0.03
+T: 0 1 : 47 : 77 : 0.06
+T: 0 2 : 47 : 19 : 0.36
+T: 0 2 : 47 : 20 : 0.18
+T: 0 2 : 47 : 23 : 0.06
+T: 0 2 : 47 : 37 : 0.06
+T: 0 2 : 47 : 38 : 0.03
+T: 0 2 : 47 : 41 : 0.01
+T: 0 2 : 47 : 46 : 0.12
+T: 0 2 : 47 : 47 : 0.060
+T: 0 2 : 47 : 50 : 0.02
+T: 0 2 : 47 : 73 : 0.06
+T: 0 2 : 47 : 74 : 0.03
+T: 0 2 : 47 : 77 : 0.01
+T: 0 3 : 47 : 19 : 0.06
+T: 0 3 : 47 : 20 : 0.48
+T: 0 3 : 47 : 23 : 0.06
+T: 0 3 : 47 : 37 : 0.01
+T: 0 3 : 47 : 38 : 0.08
+T: 0 3 : 47 : 41 : 0.01
+T: 0 3 : 47 : 46 : 0.02
+T: 0 3 : 47 : 47 : 0.16
+T: 0 3 : 47 : 50 : 0.02
+T: 0 3 : 47 : 73 : 0.01
+T: 0 3 : 47 : 74 : 0.08
+T: 0 3 : 47 : 77 : 0.01
+T: 0 4 : 47 : 20 : 0.6
+T: 0 4 : 47 : 38 : 0.1
+T: 0 4 : 47 : 47 : 0.2
+T: 0 4 : 47 : 74 : 0.1
+T: 1 0 : 47 : 19 : 0.01
+T: 1 0 : 47 : 20 : 0.08
+T: 1 0 : 47 : 23 : 0.01
+T: 1 0 : 47 : 37 : 0.01
+T: 1 0 : 47 : 38 : 0.08
+T: 1 0 : 47 : 41 : 0.01
+T: 1 0 : 47 : 46 : 0.02
+T: 1 0 : 47 : 47 : 0.16
+T: 1 0 : 47 : 50 : 0.02
+T: 1 0 : 47 : 73 : 0.06
+T: 1 0 : 47 : 74 : 0.48
+T: 1 0 : 47 : 77 : 0.06
+T: 1 1 : 47 : 19 : 0.01
+T: 1 1 : 47 : 20 : 0.03
+T: 1 1 : 47 : 23 : 0.06
+T: 1 1 : 47 : 37 : 0.01
+T: 1 1 : 47 : 38 : 0.03
+T: 1 1 : 47 : 41 : 0.06
+T: 1 1 : 47 : 46 : 0.02
+T: 1 1 : 47 : 47 : 0.060
+T: 1 1 : 47 : 50 : 0.12
+T: 1 1 : 47 : 73 : 0.06
+T: 1 1 : 47 : 74 : 0.18
+T: 1 1 : 47 : 77 : 0.36
+T: 1 2 : 47 : 19 : 0.06
+T: 1 2 : 47 : 20 : 0.03
+T: 1 2 : 47 : 23 : 0.01
+T: 1 2 : 47 : 37 : 0.06
+T: 1 2 : 47 : 38 : 0.03
+T: 1 2 : 47 : 41 : 0.01
+T: 1 2 : 47 : 46 : 0.12
+T: 1 2 : 47 : 47 : 0.060
+T: 1 2 : 47 : 50 : 0.02
+T: 1 2 : 47 : 73 : 0.36
+T: 1 2 : 47 : 74 : 0.18
+T: 1 2 : 47 : 77 : 0.06
+T: 1 3 : 47 : 19 : 0.01
+T: 1 3 : 47 : 20 : 0.08
+T: 1 3 : 47 : 23 : 0.01
+T: 1 3 : 47 : 37 : 0.01
+T: 1 3 : 47 : 38 : 0.08
+T: 1 3 : 47 : 41 : 0.01
+T: 1 3 : 47 : 46 : 0.02
+T: 1 3 : 47 : 47 : 0.16
+T: 1 3 : 47 : 50 : 0.02
+T: 1 3 : 47 : 73 : 0.06
+T: 1 3 : 47 : 74 : 0.48
+T: 1 3 : 47 : 77 : 0.06
+T: 1 4 : 47 : 20 : 0.1
+T: 1 4 : 47 : 38 : 0.1
+T: 1 4 : 47 : 47 : 0.2
+T: 1 4 : 47 : 74 : 0.6
+T: 2 0 : 47 : 19 : 0.01
+T: 2 0 : 47 : 20 : 0.08
+T: 2 0 : 47 : 23 : 0.01
+T: 2 0 : 47 : 37 : 0.06
+T: 2 0 : 47 : 38 : 0.48
+T: 2 0 : 47 : 41 : 0.06
+T: 2 0 : 47 : 46 : 0.02
+T: 2 0 : 47 : 47 : 0.16
+T: 2 0 : 47 : 50 : 0.02
+T: 2 0 : 47 : 73 : 0.01
+T: 2 0 : 47 : 74 : 0.08
+T: 2 0 : 47 : 77 : 0.01
+T: 2 1 : 47 : 19 : 0.01
+T: 2 1 : 47 : 20 : 0.03
+T: 2 1 : 47 : 23 : 0.06
+T: 2 1 : 47 : 37 : 0.06
+T: 2 1 : 47 : 38 : 0.18
+T: 2 1 : 47 : 41 : 0.36
+T: 2 1 : 47 : 46 : 0.02
+T: 2 1 : 47 : 47 : 0.060
+T: 2 1 : 47 : 50 : 0.12
+T: 2 1 : 47 : 73 : 0.01
+T: 2 1 : 47 : 74 : 0.03
+T: 2 1 : 47 : 77 : 0.06
+T: 2 2 : 47 : 19 : 0.06
+T: 2 2 : 47 : 20 : 0.03
+T: 2 2 : 47 : 23 : 0.01
+T: 2 2 : 47 : 37 : 0.36
+T: 2 2 : 47 : 38 : 0.18
+T: 2 2 : 47 : 41 : 0.06
+T: 2 2 : 47 : 46 : 0.12
+T: 2 2 : 47 : 47 : 0.060
+T: 2 2 : 47 : 50 : 0.02
+T: 2 2 : 47 : 73 : 0.06
+T: 2 2 : 47 : 74 : 0.03
+T: 2 2 : 47 : 77 : 0.01
+T: 2 3 : 47 : 19 : 0.01
+T: 2 3 : 47 : 20 : 0.08
+T: 2 3 : 47 : 23 : 0.01
+T: 2 3 : 47 : 37 : 0.06
+T: 2 3 : 47 : 38 : 0.48
+T: 2 3 : 47 : 41 : 0.06
+T: 2 3 : 47 : 46 : 0.02
+T: 2 3 : 47 : 47 : 0.16
+T: 2 3 : 47 : 50 : 0.02
+T: 2 3 : 47 : 73 : 0.01
+T: 2 3 : 47 : 74 : 0.08
+T: 2 3 : 47 : 77 : 0.01
+T: 2 4 : 47 : 20 : 0.1
+T: 2 4 : 47 : 38 : 0.6
+T: 2 4 : 47 : 47 : 0.2
+T: 2 4 : 47 : 74 : 0.1
+T: 3 0 : 47 : 19 : 0.01
+T: 3 0 : 47 : 20 : 0.08
+T: 3 0 : 47 : 23 : 0.01
+T: 3 0 : 47 : 37 : 0.01
+T: 3 0 : 47 : 38 : 0.08
+T: 3 0 : 47 : 41 : 0.01
+T: 3 0 : 47 : 46 : 0.07
+T: 3 0 : 47 : 47 : 0.56
+T: 3 0 : 47 : 50 : 0.07
+T: 3 0 : 47 : 73 : 0.01
+T: 3 0 : 47 : 74 : 0.08
+T: 3 0 : 47 : 77 : 0.01
+T: 3 1 : 47 : 19 : 0.01
+T: 3 1 : 47 : 20 : 0.03
+T: 3 1 : 47 : 23 : 0.06
+T: 3 1 : 47 : 37 : 0.01
+T: 3 1 : 47 : 38 : 0.03
+T: 3 1 : 47 : 41 : 0.06
+T: 3 1 : 47 : 46 : 0.07
+T: 3 1 : 47 : 47 : 0.21
+T: 3 1 : 47 : 50 : 0.42
+T: 3 1 : 47 : 73 : 0.01
+T: 3 1 : 47 : 74 : 0.03
+T: 3 1 : 47 : 77 : 0.06
+T: 3 2 : 47 : 19 : 0.06
+T: 3 2 : 47 : 20 : 0.03
+T: 3 2 : 47 : 23 : 0.01
+T: 3 2 : 47 : 37 : 0.06
+T: 3 2 : 47 : 38 : 0.03
+T: 3 2 : 47 : 41 : 0.01
+T: 3 2 : 47 : 46 : 0.42
+T: 3 2 : 47 : 47 : 0.21
+T: 3 2 : 47 : 50 : 0.07
+T: 3 2 : 47 : 73 : 0.06
+T: 3 2 : 47 : 74 : 0.03
+T: 3 2 : 47 : 77 : 0.01
+T: 3 3 : 47 : 19 : 0.01
+T: 3 3 : 47 : 20 : 0.08
+T: 3 3 : 47 : 23 : 0.01
+T: 3 3 : 47 : 37 : 0.01
+T: 3 3 : 47 : 38 : 0.08
+T: 3 3 : 47 : 41 : 0.01
+T: 3 3 : 47 : 46 : 0.07
+T: 3 3 : 47 : 47 : 0.56
+T: 3 3 : 47 : 50 : 0.07
+T: 3 3 : 47 : 73 : 0.01
+T: 3 3 : 47 : 74 : 0.08
+T: 3 3 : 47 : 77 : 0.01
+T: 3 4 : 47 : 20 : 0.1
+T: 3 4 : 47 : 38 : 0.1
+T: 3 4 : 47 : 47 : 0.7
+T: 3 4 : 47 : 74 : 0.1
+T: 4 0 : 47 : 46 : 0.1
+T: 4 0 : 47 : 47 : 0.8
+T: 4 0 : 47 : 50 : 0.1
+T: 4 1 : 47 : 46 : 0.1
+T: 4 1 : 47 : 47 : 0.3
+T: 4 1 : 47 : 50 : 0.6
+T: 4 2 : 47 : 46 : 0.6
+T: 4 2 : 47 : 47 : 0.3
+T: 4 2 : 47 : 50 : 0.1
+T: 4 3 : 47 : 46 : 0.1
+T: 4 3 : 47 : 47 : 0.8
+T: 4 3 : 47 : 50 : 0.1
+T: 4 4 : 47 : 47 : 1.0
+T: 0 0 : 48 : 18 : 0.36
+T: 0 0 : 48 : 21 : 0.12
+T: 0 0 : 48 : 22 : 0.06
+T: 0 0 : 48 : 24 : 0.06
+T: 0 0 : 48 : 36 : 0.06
+T: 0 0 : 48 : 39 : 0.02
+T: 0 0 : 48 : 40 : 0.01
+T: 0 0 : 48 : 42 : 0.01
+T: 0 0 : 48 : 45 : 0.12
+T: 0 0 : 48 : 48 : 0.040
+T: 0 0 : 48 : 49 : 0.02
+T: 0 0 : 48 : 51 : 0.02
+T: 0 0 : 48 : 72 : 0.06
+T: 0 0 : 48 : 75 : 0.02
+T: 0 0 : 48 : 76 : 0.01
+T: 0 0 : 48 : 78 : 0.01
+T: 0 1 : 48 : 18 : 0.06
+T: 0 1 : 48 : 21 : 0.12
+T: 0 1 : 48 : 22 : 0.06
+T: 0 1 : 48 : 24 : 0.36
+T: 0 1 : 48 : 36 : 0.01
+T: 0 1 : 48 : 39 : 0.02
+T: 0 1 : 48 : 40 : 0.01
+T: 0 1 : 48 : 42 : 0.06
+T: 0 1 : 48 : 45 : 0.02
+T: 0 1 : 48 : 48 : 0.040
+T: 0 1 : 48 : 49 : 0.02
+T: 0 1 : 48 : 51 : 0.12
+T: 0 1 : 48 : 72 : 0.01
+T: 0 1 : 48 : 75 : 0.02
+T: 0 1 : 48 : 76 : 0.01
+T: 0 1 : 48 : 78 : 0.06
+T: 0 2 : 48 : 18 : 0.06
+T: 0 2 : 48 : 21 : 0.42
+T: 0 2 : 48 : 22 : 0.06
+T: 0 2 : 48 : 24 : 0.06
+T: 0 2 : 48 : 36 : 0.01
+T: 0 2 : 48 : 39 : 0.07
+T: 0 2 : 48 : 40 : 0.01
+T: 0 2 : 48 : 42 : 0.01
+T: 0 2 : 48 : 45 : 0.02
+T: 0 2 : 48 : 48 : 0.14
+T: 0 2 : 48 : 49 : 0.02
+T: 0 2 : 48 : 51 : 0.02
+T: 0 2 : 48 : 72 : 0.01
+T: 0 2 : 48 : 75 : 0.07
+T: 0 2 : 48 : 76 : 0.01
+T: 0 2 : 48 : 78 : 0.01
+T: 0 3 : 48 : 18 : 0.06
+T: 0 3 : 48 : 21 : 0.12
+T: 0 3 : 48 : 22 : 0.36
+T: 0 3 : 48 : 24 : 0.06
+T: 0 3 : 48 : 36 : 0.01
+T: 0 3 : 48 : 39 : 0.02
+T: 0 3 : 48 : 40 : 0.06
+T: 0 3 : 48 : 42 : 0.01
+T: 0 3 : 48 : 45 : 0.02
+T: 0 3 : 48 : 48 : 0.040
+T: 0 3 : 48 : 49 : 0.12
+T: 0 3 : 48 : 51 : 0.02
+T: 0 3 : 48 : 72 : 0.01
+T: 0 3 : 48 : 75 : 0.02
+T: 0 3 : 48 : 76 : 0.06
+T: 0 3 : 48 : 78 : 0.01
+T: 0 4 : 48 : 21 : 0.6
+T: 0 4 : 48 : 39 : 0.1
+T: 0 4 : 48 : 48 : 0.2
+T: 0 4 : 48 : 75 : 0.1
+T: 1 0 : 48 : 18 : 0.06
+T: 1 0 : 48 : 21 : 0.02
+T: 1 0 : 48 : 22 : 0.01
+T: 1 0 : 48 : 24 : 0.01
+T: 1 0 : 48 : 36 : 0.06
+T: 1 0 : 48 : 39 : 0.02
+T: 1 0 : 48 : 40 : 0.01
+T: 1 0 : 48 : 42 : 0.01
+T: 1 0 : 48 : 45 : 0.12
+T: 1 0 : 48 : 48 : 0.040
+T: 1 0 : 48 : 49 : 0.02
+T: 1 0 : 48 : 51 : 0.02
+T: 1 0 : 48 : 72 : 0.36
+T: 1 0 : 48 : 75 : 0.12
+T: 1 0 : 48 : 76 : 0.06
+T: 1 0 : 48 : 78 : 0.06
+T: 1 1 : 48 : 18 : 0.01
+T: 1 1 : 48 : 21 : 0.02
+T: 1 1 : 48 : 22 : 0.01
+T: 1 1 : 48 : 24 : 0.06
+T: 1 1 : 48 : 36 : 0.01
+T: 1 1 : 48 : 39 : 0.02
+T: 1 1 : 48 : 40 : 0.01
+T: 1 1 : 48 : 42 : 0.06
+T: 1 1 : 48 : 45 : 0.02
+T: 1 1 : 48 : 48 : 0.040
+T: 1 1 : 48 : 49 : 0.02
+T: 1 1 : 48 : 51 : 0.12
+T: 1 1 : 48 : 72 : 0.06
+T: 1 1 : 48 : 75 : 0.12
+T: 1 1 : 48 : 76 : 0.06
+T: 1 1 : 48 : 78 : 0.36
+T: 1 2 : 48 : 18 : 0.01
+T: 1 2 : 48 : 21 : 0.07
+T: 1 2 : 48 : 22 : 0.01
+T: 1 2 : 48 : 24 : 0.01
+T: 1 2 : 48 : 36 : 0.01
+T: 1 2 : 48 : 39 : 0.07
+T: 1 2 : 48 : 40 : 0.01
+T: 1 2 : 48 : 42 : 0.01
+T: 1 2 : 48 : 45 : 0.02
+T: 1 2 : 48 : 48 : 0.14
+T: 1 2 : 48 : 49 : 0.02
+T: 1 2 : 48 : 51 : 0.02
+T: 1 2 : 48 : 72 : 0.06
+T: 1 2 : 48 : 75 : 0.42
+T: 1 2 : 48 : 76 : 0.06
+T: 1 2 : 48 : 78 : 0.06
+T: 1 3 : 48 : 18 : 0.01
+T: 1 3 : 48 : 21 : 0.02
+T: 1 3 : 48 : 22 : 0.06
+T: 1 3 : 48 : 24 : 0.01
+T: 1 3 : 48 : 36 : 0.01
+T: 1 3 : 48 : 39 : 0.02
+T: 1 3 : 48 : 40 : 0.06
+T: 1 3 : 48 : 42 : 0.01
+T: 1 3 : 48 : 45 : 0.02
+T: 1 3 : 48 : 48 : 0.040
+T: 1 3 : 48 : 49 : 0.12
+T: 1 3 : 48 : 51 : 0.02
+T: 1 3 : 48 : 72 : 0.06
+T: 1 3 : 48 : 75 : 0.12
+T: 1 3 : 48 : 76 : 0.36
+T: 1 3 : 48 : 78 : 0.06
+T: 1 4 : 48 : 21 : 0.1
+T: 1 4 : 48 : 39 : 0.1
+T: 1 4 : 48 : 48 : 0.2
+T: 1 4 : 48 : 75 : 0.6
+T: 2 0 : 48 : 18 : 0.06
+T: 2 0 : 48 : 21 : 0.02
+T: 2 0 : 48 : 22 : 0.01
+T: 2 0 : 48 : 24 : 0.01
+T: 2 0 : 48 : 36 : 0.36
+T: 2 0 : 48 : 39 : 0.12
+T: 2 0 : 48 : 40 : 0.06
+T: 2 0 : 48 : 42 : 0.06
+T: 2 0 : 48 : 45 : 0.12
+T: 2 0 : 48 : 48 : 0.040
+T: 2 0 : 48 : 49 : 0.02
+T: 2 0 : 48 : 51 : 0.02
+T: 2 0 : 48 : 72 : 0.06
+T: 2 0 : 48 : 75 : 0.02
+T: 2 0 : 48 : 76 : 0.01
+T: 2 0 : 48 : 78 : 0.01
+T: 2 1 : 48 : 18 : 0.01
+T: 2 1 : 48 : 21 : 0.02
+T: 2 1 : 48 : 22 : 0.01
+T: 2 1 : 48 : 24 : 0.06
+T: 2 1 : 48 : 36 : 0.06
+T: 2 1 : 48 : 39 : 0.12
+T: 2 1 : 48 : 40 : 0.06
+T: 2 1 : 48 : 42 : 0.36
+T: 2 1 : 48 : 45 : 0.02
+T: 2 1 : 48 : 48 : 0.040
+T: 2 1 : 48 : 49 : 0.02
+T: 2 1 : 48 : 51 : 0.12
+T: 2 1 : 48 : 72 : 0.01
+T: 2 1 : 48 : 75 : 0.02
+T: 2 1 : 48 : 76 : 0.01
+T: 2 1 : 48 : 78 : 0.06
+T: 2 2 : 48 : 18 : 0.01
+T: 2 2 : 48 : 21 : 0.07
+T: 2 2 : 48 : 22 : 0.01
+T: 2 2 : 48 : 24 : 0.01
+T: 2 2 : 48 : 36 : 0.06
+T: 2 2 : 48 : 39 : 0.42
+T: 2 2 : 48 : 40 : 0.06
+T: 2 2 : 48 : 42 : 0.06
+T: 2 2 : 48 : 45 : 0.02
+T: 2 2 : 48 : 48 : 0.14
+T: 2 2 : 48 : 49 : 0.02
+T: 2 2 : 48 : 51 : 0.02
+T: 2 2 : 48 : 72 : 0.01
+T: 2 2 : 48 : 75 : 0.07
+T: 2 2 : 48 : 76 : 0.01
+T: 2 2 : 48 : 78 : 0.01
+T: 2 3 : 48 : 18 : 0.01
+T: 2 3 : 48 : 21 : 0.02
+T: 2 3 : 48 : 22 : 0.06
+T: 2 3 : 48 : 24 : 0.01
+T: 2 3 : 48 : 36 : 0.06
+T: 2 3 : 48 : 39 : 0.12
+T: 2 3 : 48 : 40 : 0.36
+T: 2 3 : 48 : 42 : 0.06
+T: 2 3 : 48 : 45 : 0.02
+T: 2 3 : 48 : 48 : 0.040
+T: 2 3 : 48 : 49 : 0.12
+T: 2 3 : 48 : 51 : 0.02
+T: 2 3 : 48 : 72 : 0.01
+T: 2 3 : 48 : 75 : 0.02
+T: 2 3 : 48 : 76 : 0.06
+T: 2 3 : 48 : 78 : 0.01
+T: 2 4 : 48 : 21 : 0.1
+T: 2 4 : 48 : 39 : 0.6
+T: 2 4 : 48 : 48 : 0.2
+T: 2 4 : 48 : 75 : 0.1
+T: 3 0 : 48 : 18 : 0.06
+T: 3 0 : 48 : 21 : 0.02
+T: 3 0 : 48 : 22 : 0.01
+T: 3 0 : 48 : 24 : 0.01
+T: 3 0 : 48 : 36 : 0.06
+T: 3 0 : 48 : 39 : 0.02
+T: 3 0 : 48 : 40 : 0.01
+T: 3 0 : 48 : 42 : 0.01
+T: 3 0 : 48 : 45 : 0.42
+T: 3 0 : 48 : 48 : 0.14
+T: 3 0 : 48 : 49 : 0.07
+T: 3 0 : 48 : 51 : 0.07
+T: 3 0 : 48 : 72 : 0.06
+T: 3 0 : 48 : 75 : 0.02
+T: 3 0 : 48 : 76 : 0.01
+T: 3 0 : 48 : 78 : 0.01
+T: 3 1 : 48 : 18 : 0.01
+T: 3 1 : 48 : 21 : 0.02
+T: 3 1 : 48 : 22 : 0.01
+T: 3 1 : 48 : 24 : 0.06
+T: 3 1 : 48 : 36 : 0.01
+T: 3 1 : 48 : 39 : 0.02
+T: 3 1 : 48 : 40 : 0.01
+T: 3 1 : 48 : 42 : 0.06
+T: 3 1 : 48 : 45 : 0.07
+T: 3 1 : 48 : 48 : 0.14
+T: 3 1 : 48 : 49 : 0.07
+T: 3 1 : 48 : 51 : 0.42
+T: 3 1 : 48 : 72 : 0.01
+T: 3 1 : 48 : 75 : 0.02
+T: 3 1 : 48 : 76 : 0.01
+T: 3 1 : 48 : 78 : 0.06
+T: 3 2 : 48 : 18 : 0.01
+T: 3 2 : 48 : 21 : 0.07
+T: 3 2 : 48 : 22 : 0.01
+T: 3 2 : 48 : 24 : 0.01
+T: 3 2 : 48 : 36 : 0.01
+T: 3 2 : 48 : 39 : 0.07
+T: 3 2 : 48 : 40 : 0.01
+T: 3 2 : 48 : 42 : 0.01
+T: 3 2 : 48 : 45 : 0.07
+T: 3 2 : 48 : 48 : 0.49
+T: 3 2 : 48 : 49 : 0.07
+T: 3 2 : 48 : 51 : 0.07
+T: 3 2 : 48 : 72 : 0.01
+T: 3 2 : 48 : 75 : 0.07
+T: 3 2 : 48 : 76 : 0.01
+T: 3 2 : 48 : 78 : 0.01
+T: 3 3 : 48 : 18 : 0.01
+T: 3 3 : 48 : 21 : 0.02
+T: 3 3 : 48 : 22 : 0.06
+T: 3 3 : 48 : 24 : 0.01
+T: 3 3 : 48 : 36 : 0.01
+T: 3 3 : 48 : 39 : 0.02
+T: 3 3 : 48 : 40 : 0.06
+T: 3 3 : 48 : 42 : 0.01
+T: 3 3 : 48 : 45 : 0.07
+T: 3 3 : 48 : 48 : 0.14
+T: 3 3 : 48 : 49 : 0.42
+T: 3 3 : 48 : 51 : 0.07
+T: 3 3 : 48 : 72 : 0.01
+T: 3 3 : 48 : 75 : 0.02
+T: 3 3 : 48 : 76 : 0.06
+T: 3 3 : 48 : 78 : 0.01
+T: 3 4 : 48 : 21 : 0.1
+T: 3 4 : 48 : 39 : 0.1
+T: 3 4 : 48 : 48 : 0.7
+T: 3 4 : 48 : 75 : 0.1
+T: 4 0 : 48 : 45 : 0.6
+T: 4 0 : 48 : 48 : 0.2
+T: 4 0 : 48 : 49 : 0.1
+T: 4 0 : 48 : 51 : 0.1
+T: 4 1 : 48 : 45 : 0.1
+T: 4 1 : 48 : 48 : 0.2
+T: 4 1 : 48 : 49 : 0.1
+T: 4 1 : 48 : 51 : 0.6
+T: 4 2 : 48 : 45 : 0.1
+T: 4 2 : 48 : 48 : 0.7
+T: 4 2 : 48 : 49 : 0.1
+T: 4 2 : 48 : 51 : 0.1
+T: 4 3 : 48 : 45 : 0.1
+T: 4 3 : 48 : 48 : 0.2
+T: 4 3 : 48 : 49 : 0.6
+T: 4 3 : 48 : 51 : 0.1
+T: 4 4 : 48 : 48 : 1.0
+T: 0 0 : 49 : 19 : 0.36
+T: 0 0 : 49 : 21 : 0.06
+T: 0 0 : 49 : 22 : 0.06
+T: 0 0 : 49 : 23 : 0.06
+T: 0 0 : 49 : 25 : 0.06
+T: 0 0 : 49 : 37 : 0.06
+T: 0 0 : 49 : 39 : 0.01
+T: 0 0 : 49 : 40 : 0.01
+T: 0 0 : 49 : 41 : 0.01
+T: 0 0 : 49 : 43 : 0.01
+T: 0 0 : 49 : 46 : 0.12
+T: 0 0 : 49 : 48 : 0.02
+T: 0 0 : 49 : 49 : 0.02
+T: 0 0 : 49 : 50 : 0.02
+T: 0 0 : 49 : 52 : 0.02
+T: 0 0 : 49 : 73 : 0.06
+T: 0 0 : 49 : 75 : 0.01
+T: 0 0 : 49 : 76 : 0.01
+T: 0 0 : 49 : 77 : 0.01
+T: 0 0 : 49 : 79 : 0.01
+T: 0 1 : 49 : 19 : 0.06
+T: 0 1 : 49 : 21 : 0.06
+T: 0 1 : 49 : 22 : 0.06
+T: 0 1 : 49 : 23 : 0.06
+T: 0 1 : 49 : 25 : 0.36
+T: 0 1 : 49 : 37 : 0.01
+T: 0 1 : 49 : 39 : 0.01
+T: 0 1 : 49 : 40 : 0.01
+T: 0 1 : 49 : 41 : 0.01
+T: 0 1 : 49 : 43 : 0.06
+T: 0 1 : 49 : 46 : 0.02
+T: 0 1 : 49 : 48 : 0.02
+T: 0 1 : 49 : 49 : 0.02
+T: 0 1 : 49 : 50 : 0.02
+T: 0 1 : 49 : 52 : 0.12
+T: 0 1 : 49 : 73 : 0.01
+T: 0 1 : 49 : 75 : 0.01
+T: 0 1 : 49 : 76 : 0.01
+T: 0 1 : 49 : 77 : 0.01
+T: 0 1 : 49 : 79 : 0.06
+T: 0 2 : 49 : 19 : 0.06
+T: 0 2 : 49 : 21 : 0.36
+T: 0 2 : 49 : 22 : 0.06
+T: 0 2 : 49 : 23 : 0.06
+T: 0 2 : 49 : 25 : 0.06
+T: 0 2 : 49 : 37 : 0.01
+T: 0 2 : 49 : 39 : 0.06
+T: 0 2 : 49 : 40 : 0.01
+T: 0 2 : 49 : 41 : 0.01
+T: 0 2 : 49 : 43 : 0.01
+T: 0 2 : 49 : 46 : 0.02
+T: 0 2 : 49 : 48 : 0.12
+T: 0 2 : 49 : 49 : 0.02
+T: 0 2 : 49 : 50 : 0.02
+T: 0 2 : 49 : 52 : 0.02
+T: 0 2 : 49 : 73 : 0.01
+T: 0 2 : 49 : 75 : 0.06
+T: 0 2 : 49 : 76 : 0.01
+T: 0 2 : 49 : 77 : 0.01
+T: 0 2 : 49 : 79 : 0.01
+T: 0 3 : 49 : 19 : 0.06
+T: 0 3 : 49 : 21 : 0.06
+T: 0 3 : 49 : 22 : 0.06
+T: 0 3 : 49 : 23 : 0.36
+T: 0 3 : 49 : 25 : 0.06
+T: 0 3 : 49 : 37 : 0.01
+T: 0 3 : 49 : 39 : 0.01
+T: 0 3 : 49 : 40 : 0.01
+T: 0 3 : 49 : 41 : 0.06
+T: 0 3 : 49 : 43 : 0.01
+T: 0 3 : 49 : 46 : 0.02
+T: 0 3 : 49 : 48 : 0.02
+T: 0 3 : 49 : 49 : 0.02
+T: 0 3 : 49 : 50 : 0.12
+T: 0 3 : 49 : 52 : 0.02
+T: 0 3 : 49 : 73 : 0.01
+T: 0 3 : 49 : 75 : 0.01
+T: 0 3 : 49 : 76 : 0.01
+T: 0 3 : 49 : 77 : 0.06
+T: 0 3 : 49 : 79 : 0.01
+T: 0 4 : 49 : 22 : 0.6
+T: 0 4 : 49 : 40 : 0.1
+T: 0 4 : 49 : 49 : 0.2
+T: 0 4 : 49 : 76 : 0.1
+T: 1 0 : 49 : 19 : 0.06
+T: 1 0 : 49 : 21 : 0.01
+T: 1 0 : 49 : 22 : 0.01
+T: 1 0 : 49 : 23 : 0.01
+T: 1 0 : 49 : 25 : 0.01
+T: 1 0 : 49 : 37 : 0.06
+T: 1 0 : 49 : 39 : 0.01
+T: 1 0 : 49 : 40 : 0.01
+T: 1 0 : 49 : 41 : 0.01
+T: 1 0 : 49 : 43 : 0.01
+T: 1 0 : 49 : 46 : 0.12
+T: 1 0 : 49 : 48 : 0.02
+T: 1 0 : 49 : 49 : 0.02
+T: 1 0 : 49 : 50 : 0.02
+T: 1 0 : 49 : 52 : 0.02
+T: 1 0 : 49 : 73 : 0.36
+T: 1 0 : 49 : 75 : 0.06
+T: 1 0 : 49 : 76 : 0.06
+T: 1 0 : 49 : 77 : 0.06
+T: 1 0 : 49 : 79 : 0.06
+T: 1 1 : 49 : 19 : 0.01
+T: 1 1 : 49 : 21 : 0.01
+T: 1 1 : 49 : 22 : 0.01
+T: 1 1 : 49 : 23 : 0.01
+T: 1 1 : 49 : 25 : 0.06
+T: 1 1 : 49 : 37 : 0.01
+T: 1 1 : 49 : 39 : 0.01
+T: 1 1 : 49 : 40 : 0.01
+T: 1 1 : 49 : 41 : 0.01
+T: 1 1 : 49 : 43 : 0.06
+T: 1 1 : 49 : 46 : 0.02
+T: 1 1 : 49 : 48 : 0.02
+T: 1 1 : 49 : 49 : 0.02
+T: 1 1 : 49 : 50 : 0.02
+T: 1 1 : 49 : 52 : 0.12
+T: 1 1 : 49 : 73 : 0.06
+T: 1 1 : 49 : 75 : 0.06
+T: 1 1 : 49 : 76 : 0.06
+T: 1 1 : 49 : 77 : 0.06
+T: 1 1 : 49 : 79 : 0.36
+T: 1 2 : 49 : 19 : 0.01
+T: 1 2 : 49 : 21 : 0.06
+T: 1 2 : 49 : 22 : 0.01
+T: 1 2 : 49 : 23 : 0.01
+T: 1 2 : 49 : 25 : 0.01
+T: 1 2 : 49 : 37 : 0.01
+T: 1 2 : 49 : 39 : 0.06
+T: 1 2 : 49 : 40 : 0.01
+T: 1 2 : 49 : 41 : 0.01
+T: 1 2 : 49 : 43 : 0.01
+T: 1 2 : 49 : 46 : 0.02
+T: 1 2 : 49 : 48 : 0.12
+T: 1 2 : 49 : 49 : 0.02
+T: 1 2 : 49 : 50 : 0.02
+T: 1 2 : 49 : 52 : 0.02
+T: 1 2 : 49 : 73 : 0.06
+T: 1 2 : 49 : 75 : 0.36
+T: 1 2 : 49 : 76 : 0.06
+T: 1 2 : 49 : 77 : 0.06
+T: 1 2 : 49 : 79 : 0.06
+T: 1 3 : 49 : 19 : 0.01
+T: 1 3 : 49 : 21 : 0.01
+T: 1 3 : 49 : 22 : 0.01
+T: 1 3 : 49 : 23 : 0.06
+T: 1 3 : 49 : 25 : 0.01
+T: 1 3 : 49 : 37 : 0.01
+T: 1 3 : 49 : 39 : 0.01
+T: 1 3 : 49 : 40 : 0.01
+T: 1 3 : 49 : 41 : 0.06
+T: 1 3 : 49 : 43 : 0.01
+T: 1 3 : 49 : 46 : 0.02
+T: 1 3 : 49 : 48 : 0.02
+T: 1 3 : 49 : 49 : 0.02
+T: 1 3 : 49 : 50 : 0.12
+T: 1 3 : 49 : 52 : 0.02
+T: 1 3 : 49 : 73 : 0.06
+T: 1 3 : 49 : 75 : 0.06
+T: 1 3 : 49 : 76 : 0.06
+T: 1 3 : 49 : 77 : 0.36
+T: 1 3 : 49 : 79 : 0.06
+T: 1 4 : 49 : 22 : 0.1
+T: 1 4 : 49 : 40 : 0.1
+T: 1 4 : 49 : 49 : 0.2
+T: 1 4 : 49 : 76 : 0.6
+T: 2 0 : 49 : 19 : 0.06
+T: 2 0 : 49 : 21 : 0.01
+T: 2 0 : 49 : 22 : 0.01
+T: 2 0 : 49 : 23 : 0.01
+T: 2 0 : 49 : 25 : 0.01
+T: 2 0 : 49 : 37 : 0.36
+T: 2 0 : 49 : 39 : 0.06
+T: 2 0 : 49 : 40 : 0.06
+T: 2 0 : 49 : 41 : 0.06
+T: 2 0 : 49 : 43 : 0.06
+T: 2 0 : 49 : 46 : 0.12
+T: 2 0 : 49 : 48 : 0.02
+T: 2 0 : 49 : 49 : 0.02
+T: 2 0 : 49 : 50 : 0.02
+T: 2 0 : 49 : 52 : 0.02
+T: 2 0 : 49 : 73 : 0.06
+T: 2 0 : 49 : 75 : 0.01
+T: 2 0 : 49 : 76 : 0.01
+T: 2 0 : 49 : 77 : 0.01
+T: 2 0 : 49 : 79 : 0.01
+T: 2 1 : 49 : 19 : 0.01
+T: 2 1 : 49 : 21 : 0.01
+T: 2 1 : 49 : 22 : 0.01
+T: 2 1 : 49 : 23 : 0.01
+T: 2 1 : 49 : 25 : 0.06
+T: 2 1 : 49 : 37 : 0.06
+T: 2 1 : 49 : 39 : 0.06
+T: 2 1 : 49 : 40 : 0.06
+T: 2 1 : 49 : 41 : 0.06
+T: 2 1 : 49 : 43 : 0.36
+T: 2 1 : 49 : 46 : 0.02
+T: 2 1 : 49 : 48 : 0.02
+T: 2 1 : 49 : 49 : 0.02
+T: 2 1 : 49 : 50 : 0.02
+T: 2 1 : 49 : 52 : 0.12
+T: 2 1 : 49 : 73 : 0.01
+T: 2 1 : 49 : 75 : 0.01
+T: 2 1 : 49 : 76 : 0.01
+T: 2 1 : 49 : 77 : 0.01
+T: 2 1 : 49 : 79 : 0.06
+T: 2 2 : 49 : 19 : 0.01
+T: 2 2 : 49 : 21 : 0.06
+T: 2 2 : 49 : 22 : 0.01
+T: 2 2 : 49 : 23 : 0.01
+T: 2 2 : 49 : 25 : 0.01
+T: 2 2 : 49 : 37 : 0.06
+T: 2 2 : 49 : 39 : 0.36
+T: 2 2 : 49 : 40 : 0.06
+T: 2 2 : 49 : 41 : 0.06
+T: 2 2 : 49 : 43 : 0.06
+T: 2 2 : 49 : 46 : 0.02
+T: 2 2 : 49 : 48 : 0.12
+T: 2 2 : 49 : 49 : 0.02
+T: 2 2 : 49 : 50 : 0.02
+T: 2 2 : 49 : 52 : 0.02
+T: 2 2 : 49 : 73 : 0.01
+T: 2 2 : 49 : 75 : 0.06
+T: 2 2 : 49 : 76 : 0.01
+T: 2 2 : 49 : 77 : 0.01
+T: 2 2 : 49 : 79 : 0.01
+T: 2 3 : 49 : 19 : 0.01
+T: 2 3 : 49 : 21 : 0.01
+T: 2 3 : 49 : 22 : 0.01
+T: 2 3 : 49 : 23 : 0.06
+T: 2 3 : 49 : 25 : 0.01
+T: 2 3 : 49 : 37 : 0.06
+T: 2 3 : 49 : 39 : 0.06
+T: 2 3 : 49 : 40 : 0.06
+T: 2 3 : 49 : 41 : 0.36
+T: 2 3 : 49 : 43 : 0.06
+T: 2 3 : 49 : 46 : 0.02
+T: 2 3 : 49 : 48 : 0.02
+T: 2 3 : 49 : 49 : 0.02
+T: 2 3 : 49 : 50 : 0.12
+T: 2 3 : 49 : 52 : 0.02
+T: 2 3 : 49 : 73 : 0.01
+T: 2 3 : 49 : 75 : 0.01
+T: 2 3 : 49 : 76 : 0.01
+T: 2 3 : 49 : 77 : 0.06
+T: 2 3 : 49 : 79 : 0.01
+T: 2 4 : 49 : 22 : 0.1
+T: 2 4 : 49 : 40 : 0.6
+T: 2 4 : 49 : 49 : 0.2
+T: 2 4 : 49 : 76 : 0.1
+T: 3 0 : 49 : 19 : 0.06
+T: 3 0 : 49 : 21 : 0.01
+T: 3 0 : 49 : 22 : 0.01
+T: 3 0 : 49 : 23 : 0.01
+T: 3 0 : 49 : 25 : 0.01
+T: 3 0 : 49 : 37 : 0.06
+T: 3 0 : 49 : 39 : 0.01
+T: 3 0 : 49 : 40 : 0.01
+T: 3 0 : 49 : 41 : 0.01
+T: 3 0 : 49 : 43 : 0.01
+T: 3 0 : 49 : 46 : 0.42
+T: 3 0 : 49 : 48 : 0.07
+T: 3 0 : 49 : 49 : 0.07
+T: 3 0 : 49 : 50 : 0.07
+T: 3 0 : 49 : 52 : 0.07
+T: 3 0 : 49 : 73 : 0.06
+T: 3 0 : 49 : 75 : 0.01
+T: 3 0 : 49 : 76 : 0.01
+T: 3 0 : 49 : 77 : 0.01
+T: 3 0 : 49 : 79 : 0.01
+T: 3 1 : 49 : 19 : 0.01
+T: 3 1 : 49 : 21 : 0.01
+T: 3 1 : 49 : 22 : 0.01
+T: 3 1 : 49 : 23 : 0.01
+T: 3 1 : 49 : 25 : 0.06
+T: 3 1 : 49 : 37 : 0.01
+T: 3 1 : 49 : 39 : 0.01
+T: 3 1 : 49 : 40 : 0.01
+T: 3 1 : 49 : 41 : 0.01
+T: 3 1 : 49 : 43 : 0.06
+T: 3 1 : 49 : 46 : 0.07
+T: 3 1 : 49 : 48 : 0.07
+T: 3 1 : 49 : 49 : 0.07
+T: 3 1 : 49 : 50 : 0.07
+T: 3 1 : 49 : 52 : 0.42
+T: 3 1 : 49 : 73 : 0.01
+T: 3 1 : 49 : 75 : 0.01
+T: 3 1 : 49 : 76 : 0.01
+T: 3 1 : 49 : 77 : 0.01
+T: 3 1 : 49 : 79 : 0.06
+T: 3 2 : 49 : 19 : 0.01
+T: 3 2 : 49 : 21 : 0.06
+T: 3 2 : 49 : 22 : 0.01
+T: 3 2 : 49 : 23 : 0.01
+T: 3 2 : 49 : 25 : 0.01
+T: 3 2 : 49 : 37 : 0.01
+T: 3 2 : 49 : 39 : 0.06
+T: 3 2 : 49 : 40 : 0.01
+T: 3 2 : 49 : 41 : 0.01
+T: 3 2 : 49 : 43 : 0.01
+T: 3 2 : 49 : 46 : 0.07
+T: 3 2 : 49 : 48 : 0.42
+T: 3 2 : 49 : 49 : 0.07
+T: 3 2 : 49 : 50 : 0.07
+T: 3 2 : 49 : 52 : 0.07
+T: 3 2 : 49 : 73 : 0.01
+T: 3 2 : 49 : 75 : 0.06
+T: 3 2 : 49 : 76 : 0.01
+T: 3 2 : 49 : 77 : 0.01
+T: 3 2 : 49 : 79 : 0.01
+T: 3 3 : 49 : 19 : 0.01
+T: 3 3 : 49 : 21 : 0.01
+T: 3 3 : 49 : 22 : 0.01
+T: 3 3 : 49 : 23 : 0.06
+T: 3 3 : 49 : 25 : 0.01
+T: 3 3 : 49 : 37 : 0.01
+T: 3 3 : 49 : 39 : 0.01
+T: 3 3 : 49 : 40 : 0.01
+T: 3 3 : 49 : 41 : 0.06
+T: 3 3 : 49 : 43 : 0.01
+T: 3 3 : 49 : 46 : 0.07
+T: 3 3 : 49 : 48 : 0.07
+T: 3 3 : 49 : 49 : 0.07
+T: 3 3 : 49 : 50 : 0.42
+T: 3 3 : 49 : 52 : 0.07
+T: 3 3 : 49 : 73 : 0.01
+T: 3 3 : 49 : 75 : 0.01
+T: 3 3 : 49 : 76 : 0.01
+T: 3 3 : 49 : 77 : 0.06
+T: 3 3 : 49 : 79 : 0.01
+T: 3 4 : 49 : 22 : 0.1
+T: 3 4 : 49 : 40 : 0.1
+T: 3 4 : 49 : 49 : 0.7
+T: 3 4 : 49 : 76 : 0.1
+T: 4 0 : 49 : 46 : 0.6
+T: 4 0 : 49 : 48 : 0.1
+T: 4 0 : 49 : 49 : 0.1
+T: 4 0 : 49 : 50 : 0.1
+T: 4 0 : 49 : 52 : 0.1
+T: 4 1 : 49 : 46 : 0.1
+T: 4 1 : 49 : 48 : 0.1
+T: 4 1 : 49 : 49 : 0.1
+T: 4 1 : 49 : 50 : 0.1
+T: 4 1 : 49 : 52 : 0.6
+T: 4 2 : 49 : 46 : 0.1
+T: 4 2 : 49 : 48 : 0.6
+T: 4 2 : 49 : 49 : 0.1
+T: 4 2 : 49 : 50 : 0.1
+T: 4 2 : 49 : 52 : 0.1
+T: 4 3 : 49 : 46 : 0.1
+T: 4 3 : 49 : 48 : 0.1
+T: 4 3 : 49 : 49 : 0.1
+T: 4 3 : 49 : 50 : 0.6
+T: 4 3 : 49 : 52 : 0.1
+T: 4 4 : 49 : 49 : 1.0
+T: 0 0 : 50 : 20 : 0.36
+T: 0 0 : 50 : 22 : 0.06
+T: 0 0 : 50 : 23 : 0.12
+T: 0 0 : 50 : 26 : 0.06
+T: 0 0 : 50 : 38 : 0.06
+T: 0 0 : 50 : 40 : 0.01
+T: 0 0 : 50 : 41 : 0.02
+T: 0 0 : 50 : 44 : 0.01
+T: 0 0 : 50 : 47 : 0.12
+T: 0 0 : 50 : 49 : 0.02
+T: 0 0 : 50 : 50 : 0.040
+T: 0 0 : 50 : 53 : 0.02
+T: 0 0 : 50 : 74 : 0.06
+T: 0 0 : 50 : 76 : 0.01
+T: 0 0 : 50 : 77 : 0.02
+T: 0 0 : 50 : 80 : 0.01
+T: 0 1 : 50 : 20 : 0.06
+T: 0 1 : 50 : 22 : 0.06
+T: 0 1 : 50 : 23 : 0.12
+T: 0 1 : 50 : 26 : 0.36
+T: 0 1 : 50 : 38 : 0.01
+T: 0 1 : 50 : 40 : 0.01
+T: 0 1 : 50 : 41 : 0.02
+T: 0 1 : 50 : 44 : 0.06
+T: 0 1 : 50 : 47 : 0.02
+T: 0 1 : 50 : 49 : 0.02
+T: 0 1 : 50 : 50 : 0.040
+T: 0 1 : 50 : 53 : 0.12
+T: 0 1 : 50 : 74 : 0.01
+T: 0 1 : 50 : 76 : 0.01
+T: 0 1 : 50 : 77 : 0.02
+T: 0 1 : 50 : 80 : 0.06
+T: 0 2 : 50 : 20 : 0.06
+T: 0 2 : 50 : 22 : 0.36
+T: 0 2 : 50 : 23 : 0.12
+T: 0 2 : 50 : 26 : 0.06
+T: 0 2 : 50 : 38 : 0.01
+T: 0 2 : 50 : 40 : 0.06
+T: 0 2 : 50 : 41 : 0.02
+T: 0 2 : 50 : 44 : 0.01
+T: 0 2 : 50 : 47 : 0.02
+T: 0 2 : 50 : 49 : 0.12
+T: 0 2 : 50 : 50 : 0.040
+T: 0 2 : 50 : 53 : 0.02
+T: 0 2 : 50 : 74 : 0.01
+T: 0 2 : 50 : 76 : 0.06
+T: 0 2 : 50 : 77 : 0.02
+T: 0 2 : 50 : 80 : 0.01
+T: 0 3 : 50 : 20 : 0.06
+T: 0 3 : 50 : 22 : 0.06
+T: 0 3 : 50 : 23 : 0.42
+T: 0 3 : 50 : 26 : 0.06
+T: 0 3 : 50 : 38 : 0.01
+T: 0 3 : 50 : 40 : 0.01
+T: 0 3 : 50 : 41 : 0.07
+T: 0 3 : 50 : 44 : 0.01
+T: 0 3 : 50 : 47 : 0.02
+T: 0 3 : 50 : 49 : 0.02
+T: 0 3 : 50 : 50 : 0.14
+T: 0 3 : 50 : 53 : 0.02
+T: 0 3 : 50 : 74 : 0.01
+T: 0 3 : 50 : 76 : 0.01
+T: 0 3 : 50 : 77 : 0.07
+T: 0 3 : 50 : 80 : 0.01
+T: 0 4 : 50 : 23 : 0.6
+T: 0 4 : 50 : 41 : 0.1
+T: 0 4 : 50 : 50 : 0.2
+T: 0 4 : 50 : 77 : 0.1
+T: 1 0 : 50 : 20 : 0.06
+T: 1 0 : 50 : 22 : 0.01
+T: 1 0 : 50 : 23 : 0.02
+T: 1 0 : 50 : 26 : 0.01
+T: 1 0 : 50 : 38 : 0.06
+T: 1 0 : 50 : 40 : 0.01
+T: 1 0 : 50 : 41 : 0.02
+T: 1 0 : 50 : 44 : 0.01
+T: 1 0 : 50 : 47 : 0.12
+T: 1 0 : 50 : 49 : 0.02
+T: 1 0 : 50 : 50 : 0.040
+T: 1 0 : 50 : 53 : 0.02
+T: 1 0 : 50 : 74 : 0.36
+T: 1 0 : 50 : 76 : 0.06
+T: 1 0 : 50 : 77 : 0.12
+T: 1 0 : 50 : 80 : 0.06
+T: 1 1 : 50 : 20 : 0.01
+T: 1 1 : 50 : 22 : 0.01
+T: 1 1 : 50 : 23 : 0.02
+T: 1 1 : 50 : 26 : 0.06
+T: 1 1 : 50 : 38 : 0.01
+T: 1 1 : 50 : 40 : 0.01
+T: 1 1 : 50 : 41 : 0.02
+T: 1 1 : 50 : 44 : 0.06
+T: 1 1 : 50 : 47 : 0.02
+T: 1 1 : 50 : 49 : 0.02
+T: 1 1 : 50 : 50 : 0.040
+T: 1 1 : 50 : 53 : 0.12
+T: 1 1 : 50 : 74 : 0.06
+T: 1 1 : 50 : 76 : 0.06
+T: 1 1 : 50 : 77 : 0.12
+T: 1 1 : 50 : 80 : 0.36
+T: 1 2 : 50 : 20 : 0.01
+T: 1 2 : 50 : 22 : 0.06
+T: 1 2 : 50 : 23 : 0.02
+T: 1 2 : 50 : 26 : 0.01
+T: 1 2 : 50 : 38 : 0.01
+T: 1 2 : 50 : 40 : 0.06
+T: 1 2 : 50 : 41 : 0.02
+T: 1 2 : 50 : 44 : 0.01
+T: 1 2 : 50 : 47 : 0.02
+T: 1 2 : 50 : 49 : 0.12
+T: 1 2 : 50 : 50 : 0.040
+T: 1 2 : 50 : 53 : 0.02
+T: 1 2 : 50 : 74 : 0.06
+T: 1 2 : 50 : 76 : 0.36
+T: 1 2 : 50 : 77 : 0.12
+T: 1 2 : 50 : 80 : 0.06
+T: 1 3 : 50 : 20 : 0.01
+T: 1 3 : 50 : 22 : 0.01
+T: 1 3 : 50 : 23 : 0.07
+T: 1 3 : 50 : 26 : 0.01
+T: 1 3 : 50 : 38 : 0.01
+T: 1 3 : 50 : 40 : 0.01
+T: 1 3 : 50 : 41 : 0.07
+T: 1 3 : 50 : 44 : 0.01
+T: 1 3 : 50 : 47 : 0.02
+T: 1 3 : 50 : 49 : 0.02
+T: 1 3 : 50 : 50 : 0.14
+T: 1 3 : 50 : 53 : 0.02
+T: 1 3 : 50 : 74 : 0.06
+T: 1 3 : 50 : 76 : 0.06
+T: 1 3 : 50 : 77 : 0.42
+T: 1 3 : 50 : 80 : 0.06
+T: 1 4 : 50 : 23 : 0.1
+T: 1 4 : 50 : 41 : 0.1
+T: 1 4 : 50 : 50 : 0.2
+T: 1 4 : 50 : 77 : 0.6
+T: 2 0 : 50 : 20 : 0.06
+T: 2 0 : 50 : 22 : 0.01
+T: 2 0 : 50 : 23 : 0.02
+T: 2 0 : 50 : 26 : 0.01
+T: 2 0 : 50 : 38 : 0.36
+T: 2 0 : 50 : 40 : 0.06
+T: 2 0 : 50 : 41 : 0.12
+T: 2 0 : 50 : 44 : 0.06
+T: 2 0 : 50 : 47 : 0.12
+T: 2 0 : 50 : 49 : 0.02
+T: 2 0 : 50 : 50 : 0.040
+T: 2 0 : 50 : 53 : 0.02
+T: 2 0 : 50 : 74 : 0.06
+T: 2 0 : 50 : 76 : 0.01
+T: 2 0 : 50 : 77 : 0.02
+T: 2 0 : 50 : 80 : 0.01
+T: 2 1 : 50 : 20 : 0.01
+T: 2 1 : 50 : 22 : 0.01
+T: 2 1 : 50 : 23 : 0.02
+T: 2 1 : 50 : 26 : 0.06
+T: 2 1 : 50 : 38 : 0.06
+T: 2 1 : 50 : 40 : 0.06
+T: 2 1 : 50 : 41 : 0.12
+T: 2 1 : 50 : 44 : 0.36
+T: 2 1 : 50 : 47 : 0.02
+T: 2 1 : 50 : 49 : 0.02
+T: 2 1 : 50 : 50 : 0.040
+T: 2 1 : 50 : 53 : 0.12
+T: 2 1 : 50 : 74 : 0.01
+T: 2 1 : 50 : 76 : 0.01
+T: 2 1 : 50 : 77 : 0.02
+T: 2 1 : 50 : 80 : 0.06
+T: 2 2 : 50 : 20 : 0.01
+T: 2 2 : 50 : 22 : 0.06
+T: 2 2 : 50 : 23 : 0.02
+T: 2 2 : 50 : 26 : 0.01
+T: 2 2 : 50 : 38 : 0.06
+T: 2 2 : 50 : 40 : 0.36
+T: 2 2 : 50 : 41 : 0.12
+T: 2 2 : 50 : 44 : 0.06
+T: 2 2 : 50 : 47 : 0.02
+T: 2 2 : 50 : 49 : 0.12
+T: 2 2 : 50 : 50 : 0.040
+T: 2 2 : 50 : 53 : 0.02
+T: 2 2 : 50 : 74 : 0.01
+T: 2 2 : 50 : 76 : 0.06
+T: 2 2 : 50 : 77 : 0.02
+T: 2 2 : 50 : 80 : 0.01
+T: 2 3 : 50 : 20 : 0.01
+T: 2 3 : 50 : 22 : 0.01
+T: 2 3 : 50 : 23 : 0.07
+T: 2 3 : 50 : 26 : 0.01
+T: 2 3 : 50 : 38 : 0.06
+T: 2 3 : 50 : 40 : 0.06
+T: 2 3 : 50 : 41 : 0.42
+T: 2 3 : 50 : 44 : 0.06
+T: 2 3 : 50 : 47 : 0.02
+T: 2 3 : 50 : 49 : 0.02
+T: 2 3 : 50 : 50 : 0.14
+T: 2 3 : 50 : 53 : 0.02
+T: 2 3 : 50 : 74 : 0.01
+T: 2 3 : 50 : 76 : 0.01
+T: 2 3 : 50 : 77 : 0.07
+T: 2 3 : 50 : 80 : 0.01
+T: 2 4 : 50 : 23 : 0.1
+T: 2 4 : 50 : 41 : 0.6
+T: 2 4 : 50 : 50 : 0.2
+T: 2 4 : 50 : 77 : 0.1
+T: 3 0 : 50 : 20 : 0.06
+T: 3 0 : 50 : 22 : 0.01
+T: 3 0 : 50 : 23 : 0.02
+T: 3 0 : 50 : 26 : 0.01
+T: 3 0 : 50 : 38 : 0.06
+T: 3 0 : 50 : 40 : 0.01
+T: 3 0 : 50 : 41 : 0.02
+T: 3 0 : 50 : 44 : 0.01
+T: 3 0 : 50 : 47 : 0.42
+T: 3 0 : 50 : 49 : 0.07
+T: 3 0 : 50 : 50 : 0.14
+T: 3 0 : 50 : 53 : 0.07
+T: 3 0 : 50 : 74 : 0.06
+T: 3 0 : 50 : 76 : 0.01
+T: 3 0 : 50 : 77 : 0.02
+T: 3 0 : 50 : 80 : 0.01
+T: 3 1 : 50 : 20 : 0.01
+T: 3 1 : 50 : 22 : 0.01
+T: 3 1 : 50 : 23 : 0.02
+T: 3 1 : 50 : 26 : 0.06
+T: 3 1 : 50 : 38 : 0.01
+T: 3 1 : 50 : 40 : 0.01
+T: 3 1 : 50 : 41 : 0.02
+T: 3 1 : 50 : 44 : 0.06
+T: 3 1 : 50 : 47 : 0.07
+T: 3 1 : 50 : 49 : 0.07
+T: 3 1 : 50 : 50 : 0.14
+T: 3 1 : 50 : 53 : 0.42
+T: 3 1 : 50 : 74 : 0.01
+T: 3 1 : 50 : 76 : 0.01
+T: 3 1 : 50 : 77 : 0.02
+T: 3 1 : 50 : 80 : 0.06
+T: 3 2 : 50 : 20 : 0.01
+T: 3 2 : 50 : 22 : 0.06
+T: 3 2 : 50 : 23 : 0.02
+T: 3 2 : 50 : 26 : 0.01
+T: 3 2 : 50 : 38 : 0.01
+T: 3 2 : 50 : 40 : 0.06
+T: 3 2 : 50 : 41 : 0.02
+T: 3 2 : 50 : 44 : 0.01
+T: 3 2 : 50 : 47 : 0.07
+T: 3 2 : 50 : 49 : 0.42
+T: 3 2 : 50 : 50 : 0.14
+T: 3 2 : 50 : 53 : 0.07
+T: 3 2 : 50 : 74 : 0.01
+T: 3 2 : 50 : 76 : 0.06
+T: 3 2 : 50 : 77 : 0.02
+T: 3 2 : 50 : 80 : 0.01
+T: 3 3 : 50 : 20 : 0.01
+T: 3 3 : 50 : 22 : 0.01
+T: 3 3 : 50 : 23 : 0.07
+T: 3 3 : 50 : 26 : 0.01
+T: 3 3 : 50 : 38 : 0.01
+T: 3 3 : 50 : 40 : 0.01
+T: 3 3 : 50 : 41 : 0.07
+T: 3 3 : 50 : 44 : 0.01
+T: 3 3 : 50 : 47 : 0.07
+T: 3 3 : 50 : 49 : 0.07
+T: 3 3 : 50 : 50 : 0.49
+T: 3 3 : 50 : 53 : 0.07
+T: 3 3 : 50 : 74 : 0.01
+T: 3 3 : 50 : 76 : 0.01
+T: 3 3 : 50 : 77 : 0.07
+T: 3 3 : 50 : 80 : 0.01
+T: 3 4 : 50 : 23 : 0.1
+T: 3 4 : 50 : 41 : 0.1
+T: 3 4 : 50 : 50 : 0.7
+T: 3 4 : 50 : 77 : 0.1
+T: 4 0 : 50 : 47 : 0.6
+T: 4 0 : 50 : 49 : 0.1
+T: 4 0 : 50 : 50 : 0.2
+T: 4 0 : 50 : 53 : 0.1
+T: 4 1 : 50 : 47 : 0.1
+T: 4 1 : 50 : 49 : 0.1
+T: 4 1 : 50 : 50 : 0.2
+T: 4 1 : 50 : 53 : 0.6
+T: 4 2 : 50 : 47 : 0.1
+T: 4 2 : 50 : 49 : 0.6
+T: 4 2 : 50 : 50 : 0.2
+T: 4 2 : 50 : 53 : 0.1
+T: 4 3 : 50 : 47 : 0.1
+T: 4 3 : 50 : 49 : 0.1
+T: 4 3 : 50 : 50 : 0.7
+T: 4 3 : 50 : 53 : 0.1
+T: 4 4 : 50 : 50 : 1.0
+T: 0 0 : 51 : 21 : 0.36
+T: 0 0 : 51 : 24 : 0.18
+T: 0 0 : 51 : 25 : 0.06
+T: 0 0 : 51 : 39 : 0.06
+T: 0 0 : 51 : 42 : 0.03
+T: 0 0 : 51 : 43 : 0.01
+T: 0 0 : 51 : 48 : 0.12
+T: 0 0 : 51 : 51 : 0.060
+T: 0 0 : 51 : 52 : 0.02
+T: 0 0 : 51 : 75 : 0.06
+T: 0 0 : 51 : 78 : 0.03
+T: 0 0 : 51 : 79 : 0.01
+T: 0 1 : 51 : 21 : 0.06
+T: 0 1 : 51 : 24 : 0.48
+T: 0 1 : 51 : 25 : 0.06
+T: 0 1 : 51 : 39 : 0.01
+T: 0 1 : 51 : 42 : 0.08
+T: 0 1 : 51 : 43 : 0.01
+T: 0 1 : 51 : 48 : 0.02
+T: 0 1 : 51 : 51 : 0.16
+T: 0 1 : 51 : 52 : 0.02
+T: 0 1 : 51 : 75 : 0.01
+T: 0 1 : 51 : 78 : 0.08
+T: 0 1 : 51 : 79 : 0.01
+T: 0 2 : 51 : 21 : 0.06
+T: 0 2 : 51 : 24 : 0.48
+T: 0 2 : 51 : 25 : 0.06
+T: 0 2 : 51 : 39 : 0.01
+T: 0 2 : 51 : 42 : 0.08
+T: 0 2 : 51 : 43 : 0.01
+T: 0 2 : 51 : 48 : 0.02
+T: 0 2 : 51 : 51 : 0.16
+T: 0 2 : 51 : 52 : 0.02
+T: 0 2 : 51 : 75 : 0.01
+T: 0 2 : 51 : 78 : 0.08
+T: 0 2 : 51 : 79 : 0.01
+T: 0 3 : 51 : 21 : 0.06
+T: 0 3 : 51 : 24 : 0.18
+T: 0 3 : 51 : 25 : 0.36
+T: 0 3 : 51 : 39 : 0.01
+T: 0 3 : 51 : 42 : 0.03
+T: 0 3 : 51 : 43 : 0.06
+T: 0 3 : 51 : 48 : 0.02
+T: 0 3 : 51 : 51 : 0.060
+T: 0 3 : 51 : 52 : 0.12
+T: 0 3 : 51 : 75 : 0.01
+T: 0 3 : 51 : 78 : 0.03
+T: 0 3 : 51 : 79 : 0.06
+T: 0 4 : 51 : 24 : 0.6
+T: 0 4 : 51 : 42 : 0.1
+T: 0 4 : 51 : 51 : 0.2
+T: 0 4 : 51 : 78 : 0.1
+T: 1 0 : 51 : 21 : 0.06
+T: 1 0 : 51 : 24 : 0.03
+T: 1 0 : 51 : 25 : 0.01
+T: 1 0 : 51 : 39 : 0.06
+T: 1 0 : 51 : 42 : 0.03
+T: 1 0 : 51 : 43 : 0.01
+T: 1 0 : 51 : 48 : 0.12
+T: 1 0 : 51 : 51 : 0.060
+T: 1 0 : 51 : 52 : 0.02
+T: 1 0 : 51 : 75 : 0.36
+T: 1 0 : 51 : 78 : 0.18
+T: 1 0 : 51 : 79 : 0.06
+T: 1 1 : 51 : 21 : 0.01
+T: 1 1 : 51 : 24 : 0.08
+T: 1 1 : 51 : 25 : 0.01
+T: 1 1 : 51 : 39 : 0.01
+T: 1 1 : 51 : 42 : 0.08
+T: 1 1 : 51 : 43 : 0.01
+T: 1 1 : 51 : 48 : 0.02
+T: 1 1 : 51 : 51 : 0.16
+T: 1 1 : 51 : 52 : 0.02
+T: 1 1 : 51 : 75 : 0.06
+T: 1 1 : 51 : 78 : 0.48
+T: 1 1 : 51 : 79 : 0.06
+T: 1 2 : 51 : 21 : 0.01
+T: 1 2 : 51 : 24 : 0.08
+T: 1 2 : 51 : 25 : 0.01
+T: 1 2 : 51 : 39 : 0.01
+T: 1 2 : 51 : 42 : 0.08
+T: 1 2 : 51 : 43 : 0.01
+T: 1 2 : 51 : 48 : 0.02
+T: 1 2 : 51 : 51 : 0.16
+T: 1 2 : 51 : 52 : 0.02
+T: 1 2 : 51 : 75 : 0.06
+T: 1 2 : 51 : 78 : 0.48
+T: 1 2 : 51 : 79 : 0.06
+T: 1 3 : 51 : 21 : 0.01
+T: 1 3 : 51 : 24 : 0.03
+T: 1 3 : 51 : 25 : 0.06
+T: 1 3 : 51 : 39 : 0.01
+T: 1 3 : 51 : 42 : 0.03
+T: 1 3 : 51 : 43 : 0.06
+T: 1 3 : 51 : 48 : 0.02
+T: 1 3 : 51 : 51 : 0.060
+T: 1 3 : 51 : 52 : 0.12
+T: 1 3 : 51 : 75 : 0.06
+T: 1 3 : 51 : 78 : 0.18
+T: 1 3 : 51 : 79 : 0.36
+T: 1 4 : 51 : 24 : 0.1
+T: 1 4 : 51 : 42 : 0.1
+T: 1 4 : 51 : 51 : 0.2
+T: 1 4 : 51 : 78 : 0.6
+T: 2 0 : 51 : 21 : 0.06
+T: 2 0 : 51 : 24 : 0.03
+T: 2 0 : 51 : 25 : 0.01
+T: 2 0 : 51 : 39 : 0.36
+T: 2 0 : 51 : 42 : 0.18
+T: 2 0 : 51 : 43 : 0.06
+T: 2 0 : 51 : 48 : 0.12
+T: 2 0 : 51 : 51 : 0.060
+T: 2 0 : 51 : 52 : 0.02
+T: 2 0 : 51 : 75 : 0.06
+T: 2 0 : 51 : 78 : 0.03
+T: 2 0 : 51 : 79 : 0.01
+T: 2 1 : 51 : 21 : 0.01
+T: 2 1 : 51 : 24 : 0.08
+T: 2 1 : 51 : 25 : 0.01
+T: 2 1 : 51 : 39 : 0.06
+T: 2 1 : 51 : 42 : 0.48
+T: 2 1 : 51 : 43 : 0.06
+T: 2 1 : 51 : 48 : 0.02
+T: 2 1 : 51 : 51 : 0.16
+T: 2 1 : 51 : 52 : 0.02
+T: 2 1 : 51 : 75 : 0.01
+T: 2 1 : 51 : 78 : 0.08
+T: 2 1 : 51 : 79 : 0.01
+T: 2 2 : 51 : 21 : 0.01
+T: 2 2 : 51 : 24 : 0.08
+T: 2 2 : 51 : 25 : 0.01
+T: 2 2 : 51 : 39 : 0.06
+T: 2 2 : 51 : 42 : 0.48
+T: 2 2 : 51 : 43 : 0.06
+T: 2 2 : 51 : 48 : 0.02
+T: 2 2 : 51 : 51 : 0.16
+T: 2 2 : 51 : 52 : 0.02
+T: 2 2 : 51 : 75 : 0.01
+T: 2 2 : 51 : 78 : 0.08
+T: 2 2 : 51 : 79 : 0.01
+T: 2 3 : 51 : 21 : 0.01
+T: 2 3 : 51 : 24 : 0.03
+T: 2 3 : 51 : 25 : 0.06
+T: 2 3 : 51 : 39 : 0.06
+T: 2 3 : 51 : 42 : 0.18
+T: 2 3 : 51 : 43 : 0.36
+T: 2 3 : 51 : 48 : 0.02
+T: 2 3 : 51 : 51 : 0.060
+T: 2 3 : 51 : 52 : 0.12
+T: 2 3 : 51 : 75 : 0.01
+T: 2 3 : 51 : 78 : 0.03
+T: 2 3 : 51 : 79 : 0.06
+T: 2 4 : 51 : 24 : 0.1
+T: 2 4 : 51 : 42 : 0.6
+T: 2 4 : 51 : 51 : 0.2
+T: 2 4 : 51 : 78 : 0.1
+T: 3 0 : 51 : 21 : 0.06
+T: 3 0 : 51 : 24 : 0.03
+T: 3 0 : 51 : 25 : 0.01
+T: 3 0 : 51 : 39 : 0.06
+T: 3 0 : 51 : 42 : 0.03
+T: 3 0 : 51 : 43 : 0.01
+T: 3 0 : 51 : 48 : 0.42
+T: 3 0 : 51 : 51 : 0.21
+T: 3 0 : 51 : 52 : 0.07
+T: 3 0 : 51 : 75 : 0.06
+T: 3 0 : 51 : 78 : 0.03
+T: 3 0 : 51 : 79 : 0.01
+T: 3 1 : 51 : 21 : 0.01
+T: 3 1 : 51 : 24 : 0.08
+T: 3 1 : 51 : 25 : 0.01
+T: 3 1 : 51 : 39 : 0.01
+T: 3 1 : 51 : 42 : 0.08
+T: 3 1 : 51 : 43 : 0.01
+T: 3 1 : 51 : 48 : 0.07
+T: 3 1 : 51 : 51 : 0.56
+T: 3 1 : 51 : 52 : 0.07
+T: 3 1 : 51 : 75 : 0.01
+T: 3 1 : 51 : 78 : 0.08
+T: 3 1 : 51 : 79 : 0.01
+T: 3 2 : 51 : 21 : 0.01
+T: 3 2 : 51 : 24 : 0.08
+T: 3 2 : 51 : 25 : 0.01
+T: 3 2 : 51 : 39 : 0.01
+T: 3 2 : 51 : 42 : 0.08
+T: 3 2 : 51 : 43 : 0.01
+T: 3 2 : 51 : 48 : 0.07
+T: 3 2 : 51 : 51 : 0.56
+T: 3 2 : 51 : 52 : 0.07
+T: 3 2 : 51 : 75 : 0.01
+T: 3 2 : 51 : 78 : 0.08
+T: 3 2 : 51 : 79 : 0.01
+T: 3 3 : 51 : 21 : 0.01
+T: 3 3 : 51 : 24 : 0.03
+T: 3 3 : 51 : 25 : 0.06
+T: 3 3 : 51 : 39 : 0.01
+T: 3 3 : 51 : 42 : 0.03
+T: 3 3 : 51 : 43 : 0.06
+T: 3 3 : 51 : 48 : 0.07
+T: 3 3 : 51 : 51 : 0.21
+T: 3 3 : 51 : 52 : 0.42
+T: 3 3 : 51 : 75 : 0.01
+T: 3 3 : 51 : 78 : 0.03
+T: 3 3 : 51 : 79 : 0.06
+T: 3 4 : 51 : 24 : 0.1
+T: 3 4 : 51 : 42 : 0.1
+T: 3 4 : 51 : 51 : 0.7
+T: 3 4 : 51 : 78 : 0.1
+T: 4 0 : 51 : 48 : 0.6
+T: 4 0 : 51 : 51 : 0.3
+T: 4 0 : 51 : 52 : 0.1
+T: 4 1 : 51 : 48 : 0.1
+T: 4 1 : 51 : 51 : 0.8
+T: 4 1 : 51 : 52 : 0.1
+T: 4 2 : 51 : 48 : 0.1
+T: 4 2 : 51 : 51 : 0.8
+T: 4 2 : 51 : 52 : 0.1
+T: 4 3 : 51 : 48 : 0.1
+T: 4 3 : 51 : 51 : 0.3
+T: 4 3 : 51 : 52 : 0.6
+T: 4 4 : 51 : 51 : 1.0
+T: 0 0 : 52 : 22 : 0.36
+T: 0 0 : 52 : 24 : 0.06
+T: 0 0 : 52 : 25 : 0.12
+T: 0 0 : 52 : 26 : 0.06
+T: 0 0 : 52 : 40 : 0.06
+T: 0 0 : 52 : 42 : 0.01
+T: 0 0 : 52 : 43 : 0.02
+T: 0 0 : 52 : 44 : 0.01
+T: 0 0 : 52 : 49 : 0.12
+T: 0 0 : 52 : 51 : 0.02
+T: 0 0 : 52 : 52 : 0.040
+T: 0 0 : 52 : 53 : 0.02
+T: 0 0 : 52 : 76 : 0.06
+T: 0 0 : 52 : 78 : 0.01
+T: 0 0 : 52 : 79 : 0.02
+T: 0 0 : 52 : 80 : 0.01
+T: 0 1 : 52 : 22 : 0.06
+T: 0 1 : 52 : 24 : 0.06
+T: 0 1 : 52 : 25 : 0.42
+T: 0 1 : 52 : 26 : 0.06
+T: 0 1 : 52 : 40 : 0.01
+T: 0 1 : 52 : 42 : 0.01
+T: 0 1 : 52 : 43 : 0.07
+T: 0 1 : 52 : 44 : 0.01
+T: 0 1 : 52 : 49 : 0.02
+T: 0 1 : 52 : 51 : 0.02
+T: 0 1 : 52 : 52 : 0.14
+T: 0 1 : 52 : 53 : 0.02
+T: 0 1 : 52 : 76 : 0.01
+T: 0 1 : 52 : 78 : 0.01
+T: 0 1 : 52 : 79 : 0.07
+T: 0 1 : 52 : 80 : 0.01
+T: 0 2 : 52 : 22 : 0.06
+T: 0 2 : 52 : 24 : 0.36
+T: 0 2 : 52 : 25 : 0.12
+T: 0 2 : 52 : 26 : 0.06
+T: 0 2 : 52 : 40 : 0.01
+T: 0 2 : 52 : 42 : 0.06
+T: 0 2 : 52 : 43 : 0.02
+T: 0 2 : 52 : 44 : 0.01
+T: 0 2 : 52 : 49 : 0.02
+T: 0 2 : 52 : 51 : 0.12
+T: 0 2 : 52 : 52 : 0.040
+T: 0 2 : 52 : 53 : 0.02
+T: 0 2 : 52 : 76 : 0.01
+T: 0 2 : 52 : 78 : 0.06
+T: 0 2 : 52 : 79 : 0.02
+T: 0 2 : 52 : 80 : 0.01
+T: 0 3 : 52 : 22 : 0.06
+T: 0 3 : 52 : 24 : 0.06
+T: 0 3 : 52 : 25 : 0.12
+T: 0 3 : 52 : 26 : 0.36
+T: 0 3 : 52 : 40 : 0.01
+T: 0 3 : 52 : 42 : 0.01
+T: 0 3 : 52 : 43 : 0.02
+T: 0 3 : 52 : 44 : 0.06
+T: 0 3 : 52 : 49 : 0.02
+T: 0 3 : 52 : 51 : 0.02
+T: 0 3 : 52 : 52 : 0.040
+T: 0 3 : 52 : 53 : 0.12
+T: 0 3 : 52 : 76 : 0.01
+T: 0 3 : 52 : 78 : 0.01
+T: 0 3 : 52 : 79 : 0.02
+T: 0 3 : 52 : 80 : 0.06
+T: 0 4 : 52 : 25 : 0.6
+T: 0 4 : 52 : 43 : 0.1
+T: 0 4 : 52 : 52 : 0.2
+T: 0 4 : 52 : 79 : 0.1
+T: 1 0 : 52 : 22 : 0.06
+T: 1 0 : 52 : 24 : 0.01
+T: 1 0 : 52 : 25 : 0.02
+T: 1 0 : 52 : 26 : 0.01
+T: 1 0 : 52 : 40 : 0.06
+T: 1 0 : 52 : 42 : 0.01
+T: 1 0 : 52 : 43 : 0.02
+T: 1 0 : 52 : 44 : 0.01
+T: 1 0 : 52 : 49 : 0.12
+T: 1 0 : 52 : 51 : 0.02
+T: 1 0 : 52 : 52 : 0.040
+T: 1 0 : 52 : 53 : 0.02
+T: 1 0 : 52 : 76 : 0.36
+T: 1 0 : 52 : 78 : 0.06
+T: 1 0 : 52 : 79 : 0.12
+T: 1 0 : 52 : 80 : 0.06
+T: 1 1 : 52 : 22 : 0.01
+T: 1 1 : 52 : 24 : 0.01
+T: 1 1 : 52 : 25 : 0.07
+T: 1 1 : 52 : 26 : 0.01
+T: 1 1 : 52 : 40 : 0.01
+T: 1 1 : 52 : 42 : 0.01
+T: 1 1 : 52 : 43 : 0.07
+T: 1 1 : 52 : 44 : 0.01
+T: 1 1 : 52 : 49 : 0.02
+T: 1 1 : 52 : 51 : 0.02
+T: 1 1 : 52 : 52 : 0.14
+T: 1 1 : 52 : 53 : 0.02
+T: 1 1 : 52 : 76 : 0.06
+T: 1 1 : 52 : 78 : 0.06
+T: 1 1 : 52 : 79 : 0.42
+T: 1 1 : 52 : 80 : 0.06
+T: 1 2 : 52 : 22 : 0.01
+T: 1 2 : 52 : 24 : 0.06
+T: 1 2 : 52 : 25 : 0.02
+T: 1 2 : 52 : 26 : 0.01
+T: 1 2 : 52 : 40 : 0.01
+T: 1 2 : 52 : 42 : 0.06
+T: 1 2 : 52 : 43 : 0.02
+T: 1 2 : 52 : 44 : 0.01
+T: 1 2 : 52 : 49 : 0.02
+T: 1 2 : 52 : 51 : 0.12
+T: 1 2 : 52 : 52 : 0.040
+T: 1 2 : 52 : 53 : 0.02
+T: 1 2 : 52 : 76 : 0.06
+T: 1 2 : 52 : 78 : 0.36
+T: 1 2 : 52 : 79 : 0.12
+T: 1 2 : 52 : 80 : 0.06
+T: 1 3 : 52 : 22 : 0.01
+T: 1 3 : 52 : 24 : 0.01
+T: 1 3 : 52 : 25 : 0.02
+T: 1 3 : 52 : 26 : 0.06
+T: 1 3 : 52 : 40 : 0.01
+T: 1 3 : 52 : 42 : 0.01
+T: 1 3 : 52 : 43 : 0.02
+T: 1 3 : 52 : 44 : 0.06
+T: 1 3 : 52 : 49 : 0.02
+T: 1 3 : 52 : 51 : 0.02
+T: 1 3 : 52 : 52 : 0.040
+T: 1 3 : 52 : 53 : 0.12
+T: 1 3 : 52 : 76 : 0.06
+T: 1 3 : 52 : 78 : 0.06
+T: 1 3 : 52 : 79 : 0.12
+T: 1 3 : 52 : 80 : 0.36
+T: 1 4 : 52 : 25 : 0.1
+T: 1 4 : 52 : 43 : 0.1
+T: 1 4 : 52 : 52 : 0.2
+T: 1 4 : 52 : 79 : 0.6
+T: 2 0 : 52 : 22 : 0.06
+T: 2 0 : 52 : 24 : 0.01
+T: 2 0 : 52 : 25 : 0.02
+T: 2 0 : 52 : 26 : 0.01
+T: 2 0 : 52 : 40 : 0.36
+T: 2 0 : 52 : 42 : 0.06
+T: 2 0 : 52 : 43 : 0.12
+T: 2 0 : 52 : 44 : 0.06
+T: 2 0 : 52 : 49 : 0.12
+T: 2 0 : 52 : 51 : 0.02
+T: 2 0 : 52 : 52 : 0.040
+T: 2 0 : 52 : 53 : 0.02
+T: 2 0 : 52 : 76 : 0.06
+T: 2 0 : 52 : 78 : 0.01
+T: 2 0 : 52 : 79 : 0.02
+T: 2 0 : 52 : 80 : 0.01
+T: 2 1 : 52 : 22 : 0.01
+T: 2 1 : 52 : 24 : 0.01
+T: 2 1 : 52 : 25 : 0.07
+T: 2 1 : 52 : 26 : 0.01
+T: 2 1 : 52 : 40 : 0.06
+T: 2 1 : 52 : 42 : 0.06
+T: 2 1 : 52 : 43 : 0.42
+T: 2 1 : 52 : 44 : 0.06
+T: 2 1 : 52 : 49 : 0.02
+T: 2 1 : 52 : 51 : 0.02
+T: 2 1 : 52 : 52 : 0.14
+T: 2 1 : 52 : 53 : 0.02
+T: 2 1 : 52 : 76 : 0.01
+T: 2 1 : 52 : 78 : 0.01
+T: 2 1 : 52 : 79 : 0.07
+T: 2 1 : 52 : 80 : 0.01
+T: 2 2 : 52 : 22 : 0.01
+T: 2 2 : 52 : 24 : 0.06
+T: 2 2 : 52 : 25 : 0.02
+T: 2 2 : 52 : 26 : 0.01
+T: 2 2 : 52 : 40 : 0.06
+T: 2 2 : 52 : 42 : 0.36
+T: 2 2 : 52 : 43 : 0.12
+T: 2 2 : 52 : 44 : 0.06
+T: 2 2 : 52 : 49 : 0.02
+T: 2 2 : 52 : 51 : 0.12
+T: 2 2 : 52 : 52 : 0.040
+T: 2 2 : 52 : 53 : 0.02
+T: 2 2 : 52 : 76 : 0.01
+T: 2 2 : 52 : 78 : 0.06
+T: 2 2 : 52 : 79 : 0.02
+T: 2 2 : 52 : 80 : 0.01
+T: 2 3 : 52 : 22 : 0.01
+T: 2 3 : 52 : 24 : 0.01
+T: 2 3 : 52 : 25 : 0.02
+T: 2 3 : 52 : 26 : 0.06
+T: 2 3 : 52 : 40 : 0.06
+T: 2 3 : 52 : 42 : 0.06
+T: 2 3 : 52 : 43 : 0.12
+T: 2 3 : 52 : 44 : 0.36
+T: 2 3 : 52 : 49 : 0.02
+T: 2 3 : 52 : 51 : 0.02
+T: 2 3 : 52 : 52 : 0.040
+T: 2 3 : 52 : 53 : 0.12
+T: 2 3 : 52 : 76 : 0.01
+T: 2 3 : 52 : 78 : 0.01
+T: 2 3 : 52 : 79 : 0.02
+T: 2 3 : 52 : 80 : 0.06
+T: 2 4 : 52 : 25 : 0.1
+T: 2 4 : 52 : 43 : 0.6
+T: 2 4 : 52 : 52 : 0.2
+T: 2 4 : 52 : 79 : 0.1
+T: 3 0 : 52 : 22 : 0.06
+T: 3 0 : 52 : 24 : 0.01
+T: 3 0 : 52 : 25 : 0.02
+T: 3 0 : 52 : 26 : 0.01
+T: 3 0 : 52 : 40 : 0.06
+T: 3 0 : 52 : 42 : 0.01
+T: 3 0 : 52 : 43 : 0.02
+T: 3 0 : 52 : 44 : 0.01
+T: 3 0 : 52 : 49 : 0.42
+T: 3 0 : 52 : 51 : 0.07
+T: 3 0 : 52 : 52 : 0.14
+T: 3 0 : 52 : 53 : 0.07
+T: 3 0 : 52 : 76 : 0.06
+T: 3 0 : 52 : 78 : 0.01
+T: 3 0 : 52 : 79 : 0.02
+T: 3 0 : 52 : 80 : 0.01
+T: 3 1 : 52 : 22 : 0.01
+T: 3 1 : 52 : 24 : 0.01
+T: 3 1 : 52 : 25 : 0.07
+T: 3 1 : 52 : 26 : 0.01
+T: 3 1 : 52 : 40 : 0.01
+T: 3 1 : 52 : 42 : 0.01
+T: 3 1 : 52 : 43 : 0.07
+T: 3 1 : 52 : 44 : 0.01
+T: 3 1 : 52 : 49 : 0.07
+T: 3 1 : 52 : 51 : 0.07
+T: 3 1 : 52 : 52 : 0.49
+T: 3 1 : 52 : 53 : 0.07
+T: 3 1 : 52 : 76 : 0.01
+T: 3 1 : 52 : 78 : 0.01
+T: 3 1 : 52 : 79 : 0.07
+T: 3 1 : 52 : 80 : 0.01
+T: 3 2 : 52 : 22 : 0.01
+T: 3 2 : 52 : 24 : 0.06
+T: 3 2 : 52 : 25 : 0.02
+T: 3 2 : 52 : 26 : 0.01
+T: 3 2 : 52 : 40 : 0.01
+T: 3 2 : 52 : 42 : 0.06
+T: 3 2 : 52 : 43 : 0.02
+T: 3 2 : 52 : 44 : 0.01
+T: 3 2 : 52 : 49 : 0.07
+T: 3 2 : 52 : 51 : 0.42
+T: 3 2 : 52 : 52 : 0.14
+T: 3 2 : 52 : 53 : 0.07
+T: 3 2 : 52 : 76 : 0.01
+T: 3 2 : 52 : 78 : 0.06
+T: 3 2 : 52 : 79 : 0.02
+T: 3 2 : 52 : 80 : 0.01
+T: 3 3 : 52 : 22 : 0.01
+T: 3 3 : 52 : 24 : 0.01
+T: 3 3 : 52 : 25 : 0.02
+T: 3 3 : 52 : 26 : 0.06
+T: 3 3 : 52 : 40 : 0.01
+T: 3 3 : 52 : 42 : 0.01
+T: 3 3 : 52 : 43 : 0.02
+T: 3 3 : 52 : 44 : 0.06
+T: 3 3 : 52 : 49 : 0.07
+T: 3 3 : 52 : 51 : 0.07
+T: 3 3 : 52 : 52 : 0.14
+T: 3 3 : 52 : 53 : 0.42
+T: 3 3 : 52 : 76 : 0.01
+T: 3 3 : 52 : 78 : 0.01
+T: 3 3 : 52 : 79 : 0.02
+T: 3 3 : 52 : 80 : 0.06
+T: 3 4 : 52 : 25 : 0.1
+T: 3 4 : 52 : 43 : 0.1
+T: 3 4 : 52 : 52 : 0.7
+T: 3 4 : 52 : 79 : 0.1
+T: 4 0 : 52 : 49 : 0.6
+T: 4 0 : 52 : 51 : 0.1
+T: 4 0 : 52 : 52 : 0.2
+T: 4 0 : 52 : 53 : 0.1
+T: 4 1 : 52 : 49 : 0.1
+T: 4 1 : 52 : 51 : 0.1
+T: 4 1 : 52 : 52 : 0.7
+T: 4 1 : 52 : 53 : 0.1
+T: 4 2 : 52 : 49 : 0.1
+T: 4 2 : 52 : 51 : 0.6
+T: 4 2 : 52 : 52 : 0.2
+T: 4 2 : 52 : 53 : 0.1
+T: 4 3 : 52 : 49 : 0.1
+T: 4 3 : 52 : 51 : 0.1
+T: 4 3 : 52 : 52 : 0.2
+T: 4 3 : 52 : 53 : 0.6
+T: 4 4 : 52 : 52 : 1.0
+T: 0 0 : 53 : 23 : 0.36
+T: 0 0 : 53 : 25 : 0.06
+T: 0 0 : 53 : 26 : 0.18
+T: 0 0 : 53 : 41 : 0.06
+T: 0 0 : 53 : 43 : 0.01
+T: 0 0 : 53 : 44 : 0.03
+T: 0 0 : 53 : 50 : 0.12
+T: 0 0 : 53 : 52 : 0.02
+T: 0 0 : 53 : 53 : 0.060
+T: 0 0 : 53 : 77 : 0.06
+T: 0 0 : 53 : 79 : 0.01
+T: 0 0 : 53 : 80 : 0.03
+T: 0 1 : 53 : 23 : 0.06
+T: 0 1 : 53 : 25 : 0.06
+T: 0 1 : 53 : 26 : 0.48
+T: 0 1 : 53 : 41 : 0.01
+T: 0 1 : 53 : 43 : 0.01
+T: 0 1 : 53 : 44 : 0.08
+T: 0 1 : 53 : 50 : 0.02
+T: 0 1 : 53 : 52 : 0.02
+T: 0 1 : 53 : 53 : 0.16
+T: 0 1 : 53 : 77 : 0.01
+T: 0 1 : 53 : 79 : 0.01
+T: 0 1 : 53 : 80 : 0.08
+T: 0 2 : 53 : 23 : 0.06
+T: 0 2 : 53 : 25 : 0.36
+T: 0 2 : 53 : 26 : 0.18
+T: 0 2 : 53 : 41 : 0.01
+T: 0 2 : 53 : 43 : 0.06
+T: 0 2 : 53 : 44 : 0.03
+T: 0 2 : 53 : 50 : 0.02
+T: 0 2 : 53 : 52 : 0.12
+T: 0 2 : 53 : 53 : 0.060
+T: 0 2 : 53 : 77 : 0.01
+T: 0 2 : 53 : 79 : 0.06
+T: 0 2 : 53 : 80 : 0.03
+T: 0 3 : 53 : 23 : 0.06
+T: 0 3 : 53 : 25 : 0.06
+T: 0 3 : 53 : 26 : 0.48
+T: 0 3 : 53 : 41 : 0.01
+T: 0 3 : 53 : 43 : 0.01
+T: 0 3 : 53 : 44 : 0.08
+T: 0 3 : 53 : 50 : 0.02
+T: 0 3 : 53 : 52 : 0.02
+T: 0 3 : 53 : 53 : 0.16
+T: 0 3 : 53 : 77 : 0.01
+T: 0 3 : 53 : 79 : 0.01
+T: 0 3 : 53 : 80 : 0.08
+T: 0 4 : 53 : 26 : 0.6
+T: 0 4 : 53 : 44 : 0.1
+T: 0 4 : 53 : 53 : 0.2
+T: 0 4 : 53 : 80 : 0.1
+T: 1 0 : 53 : 23 : 0.06
+T: 1 0 : 53 : 25 : 0.01
+T: 1 0 : 53 : 26 : 0.03
+T: 1 0 : 53 : 41 : 0.06
+T: 1 0 : 53 : 43 : 0.01
+T: 1 0 : 53 : 44 : 0.03
+T: 1 0 : 53 : 50 : 0.12
+T: 1 0 : 53 : 52 : 0.02
+T: 1 0 : 53 : 53 : 0.060
+T: 1 0 : 53 : 77 : 0.36
+T: 1 0 : 53 : 79 : 0.06
+T: 1 0 : 53 : 80 : 0.18
+T: 1 1 : 53 : 23 : 0.01
+T: 1 1 : 53 : 25 : 0.01
+T: 1 1 : 53 : 26 : 0.08
+T: 1 1 : 53 : 41 : 0.01
+T: 1 1 : 53 : 43 : 0.01
+T: 1 1 : 53 : 44 : 0.08
+T: 1 1 : 53 : 50 : 0.02
+T: 1 1 : 53 : 52 : 0.02
+T: 1 1 : 53 : 53 : 0.16
+T: 1 1 : 53 : 77 : 0.06
+T: 1 1 : 53 : 79 : 0.06
+T: 1 1 : 53 : 80 : 0.48
+T: 1 2 : 53 : 23 : 0.01
+T: 1 2 : 53 : 25 : 0.06
+T: 1 2 : 53 : 26 : 0.03
+T: 1 2 : 53 : 41 : 0.01
+T: 1 2 : 53 : 43 : 0.06
+T: 1 2 : 53 : 44 : 0.03
+T: 1 2 : 53 : 50 : 0.02
+T: 1 2 : 53 : 52 : 0.12
+T: 1 2 : 53 : 53 : 0.060
+T: 1 2 : 53 : 77 : 0.06
+T: 1 2 : 53 : 79 : 0.36
+T: 1 2 : 53 : 80 : 0.18
+T: 1 3 : 53 : 23 : 0.01
+T: 1 3 : 53 : 25 : 0.01
+T: 1 3 : 53 : 26 : 0.08
+T: 1 3 : 53 : 41 : 0.01
+T: 1 3 : 53 : 43 : 0.01
+T: 1 3 : 53 : 44 : 0.08
+T: 1 3 : 53 : 50 : 0.02
+T: 1 3 : 53 : 52 : 0.02
+T: 1 3 : 53 : 53 : 0.16
+T: 1 3 : 53 : 77 : 0.06
+T: 1 3 : 53 : 79 : 0.06
+T: 1 3 : 53 : 80 : 0.48
+T: 1 4 : 53 : 26 : 0.1
+T: 1 4 : 53 : 44 : 0.1
+T: 1 4 : 53 : 53 : 0.2
+T: 1 4 : 53 : 80 : 0.6
+T: 2 0 : 53 : 23 : 0.06
+T: 2 0 : 53 : 25 : 0.01
+T: 2 0 : 53 : 26 : 0.03
+T: 2 0 : 53 : 41 : 0.36
+T: 2 0 : 53 : 43 : 0.06
+T: 2 0 : 53 : 44 : 0.18
+T: 2 0 : 53 : 50 : 0.12
+T: 2 0 : 53 : 52 : 0.02
+T: 2 0 : 53 : 53 : 0.060
+T: 2 0 : 53 : 77 : 0.06
+T: 2 0 : 53 : 79 : 0.01
+T: 2 0 : 53 : 80 : 0.03
+T: 2 1 : 53 : 23 : 0.01
+T: 2 1 : 53 : 25 : 0.01
+T: 2 1 : 53 : 26 : 0.08
+T: 2 1 : 53 : 41 : 0.06
+T: 2 1 : 53 : 43 : 0.06
+T: 2 1 : 53 : 44 : 0.48
+T: 2 1 : 53 : 50 : 0.02
+T: 2 1 : 53 : 52 : 0.02
+T: 2 1 : 53 : 53 : 0.16
+T: 2 1 : 53 : 77 : 0.01
+T: 2 1 : 53 : 79 : 0.01
+T: 2 1 : 53 : 80 : 0.08
+T: 2 2 : 53 : 23 : 0.01
+T: 2 2 : 53 : 25 : 0.06
+T: 2 2 : 53 : 26 : 0.03
+T: 2 2 : 53 : 41 : 0.06
+T: 2 2 : 53 : 43 : 0.36
+T: 2 2 : 53 : 44 : 0.18
+T: 2 2 : 53 : 50 : 0.02
+T: 2 2 : 53 : 52 : 0.12
+T: 2 2 : 53 : 53 : 0.060
+T: 2 2 : 53 : 77 : 0.01
+T: 2 2 : 53 : 79 : 0.06
+T: 2 2 : 53 : 80 : 0.03
+T: 2 3 : 53 : 23 : 0.01
+T: 2 3 : 53 : 25 : 0.01
+T: 2 3 : 53 : 26 : 0.08
+T: 2 3 : 53 : 41 : 0.06
+T: 2 3 : 53 : 43 : 0.06
+T: 2 3 : 53 : 44 : 0.48
+T: 2 3 : 53 : 50 : 0.02
+T: 2 3 : 53 : 52 : 0.02
+T: 2 3 : 53 : 53 : 0.16
+T: 2 3 : 53 : 77 : 0.01
+T: 2 3 : 53 : 79 : 0.01
+T: 2 3 : 53 : 80 : 0.08
+T: 2 4 : 53 : 26 : 0.1
+T: 2 4 : 53 : 44 : 0.6
+T: 2 4 : 53 : 53 : 0.2
+T: 2 4 : 53 : 80 : 0.1
+T: 3 0 : 53 : 23 : 0.06
+T: 3 0 : 53 : 25 : 0.01
+T: 3 0 : 53 : 26 : 0.03
+T: 3 0 : 53 : 41 : 0.06
+T: 3 0 : 53 : 43 : 0.01
+T: 3 0 : 53 : 44 : 0.03
+T: 3 0 : 53 : 50 : 0.42
+T: 3 0 : 53 : 52 : 0.07
+T: 3 0 : 53 : 53 : 0.21
+T: 3 0 : 53 : 77 : 0.06
+T: 3 0 : 53 : 79 : 0.01
+T: 3 0 : 53 : 80 : 0.03
+T: 3 1 : 53 : 23 : 0.01
+T: 3 1 : 53 : 25 : 0.01
+T: 3 1 : 53 : 26 : 0.08
+T: 3 1 : 53 : 41 : 0.01
+T: 3 1 : 53 : 43 : 0.01
+T: 3 1 : 53 : 44 : 0.08
+T: 3 1 : 53 : 50 : 0.07
+T: 3 1 : 53 : 52 : 0.07
+T: 3 1 : 53 : 53 : 0.56
+T: 3 1 : 53 : 77 : 0.01
+T: 3 1 : 53 : 79 : 0.01
+T: 3 1 : 53 : 80 : 0.08
+T: 3 2 : 53 : 23 : 0.01
+T: 3 2 : 53 : 25 : 0.06
+T: 3 2 : 53 : 26 : 0.03
+T: 3 2 : 53 : 41 : 0.01
+T: 3 2 : 53 : 43 : 0.06
+T: 3 2 : 53 : 44 : 0.03
+T: 3 2 : 53 : 50 : 0.07
+T: 3 2 : 53 : 52 : 0.42
+T: 3 2 : 53 : 53 : 0.21
+T: 3 2 : 53 : 77 : 0.01
+T: 3 2 : 53 : 79 : 0.06
+T: 3 2 : 53 : 80 : 0.03
+T: 3 3 : 53 : 23 : 0.01
+T: 3 3 : 53 : 25 : 0.01
+T: 3 3 : 53 : 26 : 0.08
+T: 3 3 : 53 : 41 : 0.01
+T: 3 3 : 53 : 43 : 0.01
+T: 3 3 : 53 : 44 : 0.08
+T: 3 3 : 53 : 50 : 0.07
+T: 3 3 : 53 : 52 : 0.07
+T: 3 3 : 53 : 53 : 0.56
+T: 3 3 : 53 : 77 : 0.01
+T: 3 3 : 53 : 79 : 0.01
+T: 3 3 : 53 : 80 : 0.08
+T: 3 4 : 53 : 26 : 0.1
+T: 3 4 : 53 : 44 : 0.1
+T: 3 4 : 53 : 53 : 0.7
+T: 3 4 : 53 : 80 : 0.1
+T: 4 0 : 53 : 50 : 0.6
+T: 4 0 : 53 : 52 : 0.1
+T: 4 0 : 53 : 53 : 0.3
+T: 4 1 : 53 : 50 : 0.1
+T: 4 1 : 53 : 52 : 0.1
+T: 4 1 : 53 : 53 : 0.8
+T: 4 2 : 53 : 50 : 0.1
+T: 4 2 : 53 : 52 : 0.6
+T: 4 2 : 53 : 53 : 0.3
+T: 4 3 : 53 : 50 : 0.1
+T: 4 3 : 53 : 52 : 0.1
+T: 4 3 : 53 : 53 : 0.8
+T: 4 4 : 53 : 53 : 1.0
+T: 0 0 : 54 : 27 : 0.48
+T: 0 0 : 54 : 28 : 0.06
+T: 0 0 : 54 : 30 : 0.06
+T: 0 0 : 54 : 54 : 0.24
+T: 0 0 : 54 : 55 : 0.03
+T: 0 0 : 54 : 57 : 0.03
+T: 0 0 : 54 : 63 : 0.08
+T: 0 0 : 54 : 64 : 0.01
+T: 0 0 : 54 : 66 : 0.01
+T: 0 1 : 54 : 27 : 0.18
+T: 0 1 : 54 : 28 : 0.06
+T: 0 1 : 54 : 30 : 0.36
+T: 0 1 : 54 : 54 : 0.09
+T: 0 1 : 54 : 55 : 0.03
+T: 0 1 : 54 : 57 : 0.18
+T: 0 1 : 54 : 63 : 0.03
+T: 0 1 : 54 : 64 : 0.01
+T: 0 1 : 54 : 66 : 0.06
+T: 0 2 : 54 : 27 : 0.48
+T: 0 2 : 54 : 28 : 0.06
+T: 0 2 : 54 : 30 : 0.06
+T: 0 2 : 54 : 54 : 0.24
+T: 0 2 : 54 : 55 : 0.03
+T: 0 2 : 54 : 57 : 0.03
+T: 0 2 : 54 : 63 : 0.08
+T: 0 2 : 54 : 64 : 0.01
+T: 0 2 : 54 : 66 : 0.01
+T: 0 3 : 54 : 27 : 0.18
+T: 0 3 : 54 : 28 : 0.36
+T: 0 3 : 54 : 30 : 0.06
+T: 0 3 : 54 : 54 : 0.09
+T: 0 3 : 54 : 55 : 0.18
+T: 0 3 : 54 : 57 : 0.03
+T: 0 3 : 54 : 63 : 0.03
+T: 0 3 : 54 : 64 : 0.06
+T: 0 3 : 54 : 66 : 0.01
+T: 0 4 : 54 : 27 : 0.6
+T: 0 4 : 54 : 54 : 0.3
+T: 0 4 : 54 : 63 : 0.1
+T: 1 0 : 54 : 27 : 0.08
+T: 1 0 : 54 : 28 : 0.01
+T: 1 0 : 54 : 30 : 0.01
+T: 1 0 : 54 : 54 : 0.64
+T: 1 0 : 54 : 55 : 0.08
+T: 1 0 : 54 : 57 : 0.08
+T: 1 0 : 54 : 63 : 0.08
+T: 1 0 : 54 : 64 : 0.01
+T: 1 0 : 54 : 66 : 0.01
+T: 1 1 : 54 : 27 : 0.03
+T: 1 1 : 54 : 28 : 0.01
+T: 1 1 : 54 : 30 : 0.06
+T: 1 1 : 54 : 54 : 0.24
+T: 1 1 : 54 : 55 : 0.08
+T: 1 1 : 54 : 57 : 0.48
+T: 1 1 : 54 : 63 : 0.03
+T: 1 1 : 54 : 64 : 0.01
+T: 1 1 : 54 : 66 : 0.06
+T: 1 2 : 54 : 27 : 0.08
+T: 1 2 : 54 : 28 : 0.01
+T: 1 2 : 54 : 30 : 0.01
+T: 1 2 : 54 : 54 : 0.64
+T: 1 2 : 54 : 55 : 0.08
+T: 1 2 : 54 : 57 : 0.08
+T: 1 2 : 54 : 63 : 0.08
+T: 1 2 : 54 : 64 : 0.01
+T: 1 2 : 54 : 66 : 0.01
+T: 1 3 : 54 : 27 : 0.03
+T: 1 3 : 54 : 28 : 0.06
+T: 1 3 : 54 : 30 : 0.01
+T: 1 3 : 54 : 54 : 0.24
+T: 1 3 : 54 : 55 : 0.48
+T: 1 3 : 54 : 57 : 0.08
+T: 1 3 : 54 : 63 : 0.03
+T: 1 3 : 54 : 64 : 0.06
+T: 1 3 : 54 : 66 : 0.01
+T: 1 4 : 54 : 27 : 0.1
+T: 1 4 : 54 : 54 : 0.8
+T: 1 4 : 54 : 63 : 0.1
+T: 2 0 : 54 : 27 : 0.08
+T: 2 0 : 54 : 28 : 0.01
+T: 2 0 : 54 : 30 : 0.01
+T: 2 0 : 54 : 54 : 0.64
+T: 2 0 : 54 : 55 : 0.08
+T: 2 0 : 54 : 57 : 0.08
+T: 2 0 : 54 : 63 : 0.08
+T: 2 0 : 54 : 64 : 0.01
+T: 2 0 : 54 : 66 : 0.01
+T: 2 1 : 54 : 27 : 0.03
+T: 2 1 : 54 : 28 : 0.01
+T: 2 1 : 54 : 30 : 0.06
+T: 2 1 : 54 : 54 : 0.24
+T: 2 1 : 54 : 55 : 0.08
+T: 2 1 : 54 : 57 : 0.48
+T: 2 1 : 54 : 63 : 0.03
+T: 2 1 : 54 : 64 : 0.01
+T: 2 1 : 54 : 66 : 0.06
+T: 2 2 : 54 : 27 : 0.08
+T: 2 2 : 54 : 28 : 0.01
+T: 2 2 : 54 : 30 : 0.01
+T: 2 2 : 54 : 54 : 0.64
+T: 2 2 : 54 : 55 : 0.08
+T: 2 2 : 54 : 57 : 0.08
+T: 2 2 : 54 : 63 : 0.08
+T: 2 2 : 54 : 64 : 0.01
+T: 2 2 : 54 : 66 : 0.01
+T: 2 3 : 54 : 27 : 0.03
+T: 2 3 : 54 : 28 : 0.06
+T: 2 3 : 54 : 30 : 0.01
+T: 2 3 : 54 : 54 : 0.24
+T: 2 3 : 54 : 55 : 0.48
+T: 2 3 : 54 : 57 : 0.08
+T: 2 3 : 54 : 63 : 0.03
+T: 2 3 : 54 : 64 : 0.06
+T: 2 3 : 54 : 66 : 0.01
+T: 2 4 : 54 : 27 : 0.1
+T: 2 4 : 54 : 54 : 0.8
+T: 2 4 : 54 : 63 : 0.1
+T: 3 0 : 54 : 27 : 0.08
+T: 3 0 : 54 : 28 : 0.01
+T: 3 0 : 54 : 30 : 0.01
+T: 3 0 : 54 : 54 : 0.24
+T: 3 0 : 54 : 55 : 0.03
+T: 3 0 : 54 : 57 : 0.03
+T: 3 0 : 54 : 63 : 0.48
+T: 3 0 : 54 : 64 : 0.06
+T: 3 0 : 54 : 66 : 0.06
+T: 3 1 : 54 : 27 : 0.03
+T: 3 1 : 54 : 28 : 0.01
+T: 3 1 : 54 : 30 : 0.06
+T: 3 1 : 54 : 54 : 0.09
+T: 3 1 : 54 : 55 : 0.03
+T: 3 1 : 54 : 57 : 0.18
+T: 3 1 : 54 : 63 : 0.18
+T: 3 1 : 54 : 64 : 0.06
+T: 3 1 : 54 : 66 : 0.36
+T: 3 2 : 54 : 27 : 0.08
+T: 3 2 : 54 : 28 : 0.01
+T: 3 2 : 54 : 30 : 0.01
+T: 3 2 : 54 : 54 : 0.24
+T: 3 2 : 54 : 55 : 0.03
+T: 3 2 : 54 : 57 : 0.03
+T: 3 2 : 54 : 63 : 0.48
+T: 3 2 : 54 : 64 : 0.06
+T: 3 2 : 54 : 66 : 0.06
+T: 3 3 : 54 : 27 : 0.03
+T: 3 3 : 54 : 28 : 0.06
+T: 3 3 : 54 : 30 : 0.01
+T: 3 3 : 54 : 54 : 0.09
+T: 3 3 : 54 : 55 : 0.18
+T: 3 3 : 54 : 57 : 0.03
+T: 3 3 : 54 : 63 : 0.18
+T: 3 3 : 54 : 64 : 0.36
+T: 3 3 : 54 : 66 : 0.06
+T: 3 4 : 54 : 27 : 0.1
+T: 3 4 : 54 : 54 : 0.3
+T: 3 4 : 54 : 63 : 0.6
+T: 4 0 : 54 : 54 : 0.8
+T: 4 0 : 54 : 55 : 0.1
+T: 4 0 : 54 : 57 : 0.1
+T: 4 1 : 54 : 54 : 0.3
+T: 4 1 : 54 : 55 : 0.1
+T: 4 1 : 54 : 57 : 0.6
+T: 4 2 : 54 : 54 : 0.8
+T: 4 2 : 54 : 55 : 0.1
+T: 4 2 : 54 : 57 : 0.1
+T: 4 3 : 54 : 54 : 0.3
+T: 4 3 : 54 : 55 : 0.6
+T: 4 3 : 54 : 57 : 0.1
+T: 4 4 : 54 : 54 : 1.0
+T: 0 0 : 55 : 27 : 0.06
+T: 0 0 : 55 : 28 : 0.42
+T: 0 0 : 55 : 29 : 0.06
+T: 0 0 : 55 : 31 : 0.06
+T: 0 0 : 55 : 54 : 0.03
+T: 0 0 : 55 : 55 : 0.21
+T: 0 0 : 55 : 56 : 0.03
+T: 0 0 : 55 : 58 : 0.03
+T: 0 0 : 55 : 63 : 0.01
+T: 0 0 : 55 : 64 : 0.07
+T: 0 0 : 55 : 65 : 0.01
+T: 0 0 : 55 : 67 : 0.01
+T: 0 1 : 55 : 27 : 0.06
+T: 0 1 : 55 : 28 : 0.12
+T: 0 1 : 55 : 29 : 0.06
+T: 0 1 : 55 : 31 : 0.36
+T: 0 1 : 55 : 54 : 0.03
+T: 0 1 : 55 : 55 : 0.060
+T: 0 1 : 55 : 56 : 0.03
+T: 0 1 : 55 : 58 : 0.18
+T: 0 1 : 55 : 63 : 0.01
+T: 0 1 : 55 : 64 : 0.02
+T: 0 1 : 55 : 65 : 0.01
+T: 0 1 : 55 : 67 : 0.06
+T: 0 2 : 55 : 27 : 0.36
+T: 0 2 : 55 : 28 : 0.12
+T: 0 2 : 55 : 29 : 0.06
+T: 0 2 : 55 : 31 : 0.06
+T: 0 2 : 55 : 54 : 0.18
+T: 0 2 : 55 : 55 : 0.060
+T: 0 2 : 55 : 56 : 0.03
+T: 0 2 : 55 : 58 : 0.03
+T: 0 2 : 55 : 63 : 0.06
+T: 0 2 : 55 : 64 : 0.02
+T: 0 2 : 55 : 65 : 0.01
+T: 0 2 : 55 : 67 : 0.01
+T: 0 3 : 55 : 27 : 0.06
+T: 0 3 : 55 : 28 : 0.12
+T: 0 3 : 55 : 29 : 0.36
+T: 0 3 : 55 : 31 : 0.06
+T: 0 3 : 55 : 54 : 0.03
+T: 0 3 : 55 : 55 : 0.060
+T: 0 3 : 55 : 56 : 0.18
+T: 0 3 : 55 : 58 : 0.03
+T: 0 3 : 55 : 63 : 0.01
+T: 0 3 : 55 : 64 : 0.02
+T: 0 3 : 55 : 65 : 0.06
+T: 0 3 : 55 : 67 : 0.01
+T: 0 4 : 55 : 28 : 0.6
+T: 0 4 : 55 : 55 : 0.3
+T: 0 4 : 55 : 64 : 0.1
+T: 1 0 : 55 : 27 : 0.01
+T: 1 0 : 55 : 28 : 0.07
+T: 1 0 : 55 : 29 : 0.01
+T: 1 0 : 55 : 31 : 0.01
+T: 1 0 : 55 : 54 : 0.08
+T: 1 0 : 55 : 55 : 0.56
+T: 1 0 : 55 : 56 : 0.08
+T: 1 0 : 55 : 58 : 0.08
+T: 1 0 : 55 : 63 : 0.01
+T: 1 0 : 55 : 64 : 0.07
+T: 1 0 : 55 : 65 : 0.01
+T: 1 0 : 55 : 67 : 0.01
+T: 1 1 : 55 : 27 : 0.01
+T: 1 1 : 55 : 28 : 0.02
+T: 1 1 : 55 : 29 : 0.01
+T: 1 1 : 55 : 31 : 0.06
+T: 1 1 : 55 : 54 : 0.08
+T: 1 1 : 55 : 55 : 0.16
+T: 1 1 : 55 : 56 : 0.08
+T: 1 1 : 55 : 58 : 0.48
+T: 1 1 : 55 : 63 : 0.01
+T: 1 1 : 55 : 64 : 0.02
+T: 1 1 : 55 : 65 : 0.01
+T: 1 1 : 55 : 67 : 0.06
+T: 1 2 : 55 : 27 : 0.06
+T: 1 2 : 55 : 28 : 0.02
+T: 1 2 : 55 : 29 : 0.01
+T: 1 2 : 55 : 31 : 0.01
+T: 1 2 : 55 : 54 : 0.48
+T: 1 2 : 55 : 55 : 0.16
+T: 1 2 : 55 : 56 : 0.08
+T: 1 2 : 55 : 58 : 0.08
+T: 1 2 : 55 : 63 : 0.06
+T: 1 2 : 55 : 64 : 0.02
+T: 1 2 : 55 : 65 : 0.01
+T: 1 2 : 55 : 67 : 0.01
+T: 1 3 : 55 : 27 : 0.01
+T: 1 3 : 55 : 28 : 0.02
+T: 1 3 : 55 : 29 : 0.06
+T: 1 3 : 55 : 31 : 0.01
+T: 1 3 : 55 : 54 : 0.08
+T: 1 3 : 55 : 55 : 0.16
+T: 1 3 : 55 : 56 : 0.48
+T: 1 3 : 55 : 58 : 0.08
+T: 1 3 : 55 : 63 : 0.01
+T: 1 3 : 55 : 64 : 0.02
+T: 1 3 : 55 : 65 : 0.06
+T: 1 3 : 55 : 67 : 0.01
+T: 1 4 : 55 : 28 : 0.1
+T: 1 4 : 55 : 55 : 0.8
+T: 1 4 : 55 : 64 : 0.1
+T: 2 0 : 55 : 27 : 0.01
+T: 2 0 : 55 : 28 : 0.07
+T: 2 0 : 55 : 29 : 0.01
+T: 2 0 : 55 : 31 : 0.01
+T: 2 0 : 55 : 54 : 0.08
+T: 2 0 : 55 : 55 : 0.56
+T: 2 0 : 55 : 56 : 0.08
+T: 2 0 : 55 : 58 : 0.08
+T: 2 0 : 55 : 63 : 0.01
+T: 2 0 : 55 : 64 : 0.07
+T: 2 0 : 55 : 65 : 0.01
+T: 2 0 : 55 : 67 : 0.01
+T: 2 1 : 55 : 27 : 0.01
+T: 2 1 : 55 : 28 : 0.02
+T: 2 1 : 55 : 29 : 0.01
+T: 2 1 : 55 : 31 : 0.06
+T: 2 1 : 55 : 54 : 0.08
+T: 2 1 : 55 : 55 : 0.16
+T: 2 1 : 55 : 56 : 0.08
+T: 2 1 : 55 : 58 : 0.48
+T: 2 1 : 55 : 63 : 0.01
+T: 2 1 : 55 : 64 : 0.02
+T: 2 1 : 55 : 65 : 0.01
+T: 2 1 : 55 : 67 : 0.06
+T: 2 2 : 55 : 27 : 0.06
+T: 2 2 : 55 : 28 : 0.02
+T: 2 2 : 55 : 29 : 0.01
+T: 2 2 : 55 : 31 : 0.01
+T: 2 2 : 55 : 54 : 0.48
+T: 2 2 : 55 : 55 : 0.16
+T: 2 2 : 55 : 56 : 0.08
+T: 2 2 : 55 : 58 : 0.08
+T: 2 2 : 55 : 63 : 0.06
+T: 2 2 : 55 : 64 : 0.02
+T: 2 2 : 55 : 65 : 0.01
+T: 2 2 : 55 : 67 : 0.01
+T: 2 3 : 55 : 27 : 0.01
+T: 2 3 : 55 : 28 : 0.02
+T: 2 3 : 55 : 29 : 0.06
+T: 2 3 : 55 : 31 : 0.01
+T: 2 3 : 55 : 54 : 0.08
+T: 2 3 : 55 : 55 : 0.16
+T: 2 3 : 55 : 56 : 0.48
+T: 2 3 : 55 : 58 : 0.08
+T: 2 3 : 55 : 63 : 0.01
+T: 2 3 : 55 : 64 : 0.02
+T: 2 3 : 55 : 65 : 0.06
+T: 2 3 : 55 : 67 : 0.01
+T: 2 4 : 55 : 28 : 0.1
+T: 2 4 : 55 : 55 : 0.8
+T: 2 4 : 55 : 64 : 0.1
+T: 3 0 : 55 : 27 : 0.01
+T: 3 0 : 55 : 28 : 0.07
+T: 3 0 : 55 : 29 : 0.01
+T: 3 0 : 55 : 31 : 0.01
+T: 3 0 : 55 : 54 : 0.03
+T: 3 0 : 55 : 55 : 0.21
+T: 3 0 : 55 : 56 : 0.03
+T: 3 0 : 55 : 58 : 0.03
+T: 3 0 : 55 : 63 : 0.06
+T: 3 0 : 55 : 64 : 0.42
+T: 3 0 : 55 : 65 : 0.06
+T: 3 0 : 55 : 67 : 0.06
+T: 3 1 : 55 : 27 : 0.01
+T: 3 1 : 55 : 28 : 0.02
+T: 3 1 : 55 : 29 : 0.01
+T: 3 1 : 55 : 31 : 0.06
+T: 3 1 : 55 : 54 : 0.03
+T: 3 1 : 55 : 55 : 0.060
+T: 3 1 : 55 : 56 : 0.03
+T: 3 1 : 55 : 58 : 0.18
+T: 3 1 : 55 : 63 : 0.06
+T: 3 1 : 55 : 64 : 0.12
+T: 3 1 : 55 : 65 : 0.06
+T: 3 1 : 55 : 67 : 0.36
+T: 3 2 : 55 : 27 : 0.06
+T: 3 2 : 55 : 28 : 0.02
+T: 3 2 : 55 : 29 : 0.01
+T: 3 2 : 55 : 31 : 0.01
+T: 3 2 : 55 : 54 : 0.18
+T: 3 2 : 55 : 55 : 0.060
+T: 3 2 : 55 : 56 : 0.03
+T: 3 2 : 55 : 58 : 0.03
+T: 3 2 : 55 : 63 : 0.36
+T: 3 2 : 55 : 64 : 0.12
+T: 3 2 : 55 : 65 : 0.06
+T: 3 2 : 55 : 67 : 0.06
+T: 3 3 : 55 : 27 : 0.01
+T: 3 3 : 55 : 28 : 0.02
+T: 3 3 : 55 : 29 : 0.06
+T: 3 3 : 55 : 31 : 0.01
+T: 3 3 : 55 : 54 : 0.03
+T: 3 3 : 55 : 55 : 0.060
+T: 3 3 : 55 : 56 : 0.18
+T: 3 3 : 55 : 58 : 0.03
+T: 3 3 : 55 : 63 : 0.06
+T: 3 3 : 55 : 64 : 0.12
+T: 3 3 : 55 : 65 : 0.36
+T: 3 3 : 55 : 67 : 0.06
+T: 3 4 : 55 : 28 : 0.1
+T: 3 4 : 55 : 55 : 0.3
+T: 3 4 : 55 : 64 : 0.6
+T: 4 0 : 55 : 54 : 0.1
+T: 4 0 : 55 : 55 : 0.7
+T: 4 0 : 55 : 56 : 0.1
+T: 4 0 : 55 : 58 : 0.1
+T: 4 1 : 55 : 54 : 0.1
+T: 4 1 : 55 : 55 : 0.2
+T: 4 1 : 55 : 56 : 0.1
+T: 4 1 : 55 : 58 : 0.6
+T: 4 2 : 55 : 54 : 0.6
+T: 4 2 : 55 : 55 : 0.2
+T: 4 2 : 55 : 56 : 0.1
+T: 4 2 : 55 : 58 : 0.1
+T: 4 3 : 55 : 54 : 0.1
+T: 4 3 : 55 : 55 : 0.2
+T: 4 3 : 55 : 56 : 0.6
+T: 4 3 : 55 : 58 : 0.1
+T: 4 4 : 55 : 55 : 1.0
+T: 0 0 : 56 : 28 : 0.06
+T: 0 0 : 56 : 29 : 0.48
+T: 0 0 : 56 : 32 : 0.06
+T: 0 0 : 56 : 55 : 0.03
+T: 0 0 : 56 : 56 : 0.24
+T: 0 0 : 56 : 59 : 0.03
+T: 0 0 : 56 : 64 : 0.01
+T: 0 0 : 56 : 65 : 0.08
+T: 0 0 : 56 : 68 : 0.01
+T: 0 1 : 56 : 28 : 0.06
+T: 0 1 : 56 : 29 : 0.18
+T: 0 1 : 56 : 32 : 0.36
+T: 0 1 : 56 : 55 : 0.03
+T: 0 1 : 56 : 56 : 0.09
+T: 0 1 : 56 : 59 : 0.18
+T: 0 1 : 56 : 64 : 0.01
+T: 0 1 : 56 : 65 : 0.03
+T: 0 1 : 56 : 68 : 0.06
+T: 0 2 : 56 : 28 : 0.36
+T: 0 2 : 56 : 29 : 0.18
+T: 0 2 : 56 : 32 : 0.06
+T: 0 2 : 56 : 55 : 0.18
+T: 0 2 : 56 : 56 : 0.09
+T: 0 2 : 56 : 59 : 0.03
+T: 0 2 : 56 : 64 : 0.06
+T: 0 2 : 56 : 65 : 0.03
+T: 0 2 : 56 : 68 : 0.01
+T: 0 3 : 56 : 28 : 0.06
+T: 0 3 : 56 : 29 : 0.48
+T: 0 3 : 56 : 32 : 0.06
+T: 0 3 : 56 : 55 : 0.03
+T: 0 3 : 56 : 56 : 0.24
+T: 0 3 : 56 : 59 : 0.03
+T: 0 3 : 56 : 64 : 0.01
+T: 0 3 : 56 : 65 : 0.08
+T: 0 3 : 56 : 68 : 0.01
+T: 0 4 : 56 : 29 : 0.6
+T: 0 4 : 56 : 56 : 0.3
+T: 0 4 : 56 : 65 : 0.1
+T: 1 0 : 56 : 28 : 0.01
+T: 1 0 : 56 : 29 : 0.08
+T: 1 0 : 56 : 32 : 0.01
+T: 1 0 : 56 : 55 : 0.08
+T: 1 0 : 56 : 56 : 0.64
+T: 1 0 : 56 : 59 : 0.08
+T: 1 0 : 56 : 64 : 0.01
+T: 1 0 : 56 : 65 : 0.08
+T: 1 0 : 56 : 68 : 0.01
+T: 1 1 : 56 : 28 : 0.01
+T: 1 1 : 56 : 29 : 0.03
+T: 1 1 : 56 : 32 : 0.06
+T: 1 1 : 56 : 55 : 0.08
+T: 1 1 : 56 : 56 : 0.24
+T: 1 1 : 56 : 59 : 0.48
+T: 1 1 : 56 : 64 : 0.01
+T: 1 1 : 56 : 65 : 0.03
+T: 1 1 : 56 : 68 : 0.06
+T: 1 2 : 56 : 28 : 0.06
+T: 1 2 : 56 : 29 : 0.03
+T: 1 2 : 56 : 32 : 0.01
+T: 1 2 : 56 : 55 : 0.48
+T: 1 2 : 56 : 56 : 0.24
+T: 1 2 : 56 : 59 : 0.08
+T: 1 2 : 56 : 64 : 0.06
+T: 1 2 : 56 : 65 : 0.03
+T: 1 2 : 56 : 68 : 0.01
+T: 1 3 : 56 : 28 : 0.01
+T: 1 3 : 56 : 29 : 0.08
+T: 1 3 : 56 : 32 : 0.01
+T: 1 3 : 56 : 55 : 0.08
+T: 1 3 : 56 : 56 : 0.64
+T: 1 3 : 56 : 59 : 0.08
+T: 1 3 : 56 : 64 : 0.01
+T: 1 3 : 56 : 65 : 0.08
+T: 1 3 : 56 : 68 : 0.01
+T: 1 4 : 56 : 29 : 0.1
+T: 1 4 : 56 : 56 : 0.8
+T: 1 4 : 56 : 65 : 0.1
+T: 2 0 : 56 : 28 : 0.01
+T: 2 0 : 56 : 29 : 0.08
+T: 2 0 : 56 : 32 : 0.01
+T: 2 0 : 56 : 55 : 0.08
+T: 2 0 : 56 : 56 : 0.64
+T: 2 0 : 56 : 59 : 0.08
+T: 2 0 : 56 : 64 : 0.01
+T: 2 0 : 56 : 65 : 0.08
+T: 2 0 : 56 : 68 : 0.01
+T: 2 1 : 56 : 28 : 0.01
+T: 2 1 : 56 : 29 : 0.03
+T: 2 1 : 56 : 32 : 0.06
+T: 2 1 : 56 : 55 : 0.08
+T: 2 1 : 56 : 56 : 0.24
+T: 2 1 : 56 : 59 : 0.48
+T: 2 1 : 56 : 64 : 0.01
+T: 2 1 : 56 : 65 : 0.03
+T: 2 1 : 56 : 68 : 0.06
+T: 2 2 : 56 : 28 : 0.06
+T: 2 2 : 56 : 29 : 0.03
+T: 2 2 : 56 : 32 : 0.01
+T: 2 2 : 56 : 55 : 0.48
+T: 2 2 : 56 : 56 : 0.24
+T: 2 2 : 56 : 59 : 0.08
+T: 2 2 : 56 : 64 : 0.06
+T: 2 2 : 56 : 65 : 0.03
+T: 2 2 : 56 : 68 : 0.01
+T: 2 3 : 56 : 28 : 0.01
+T: 2 3 : 56 : 29 : 0.08
+T: 2 3 : 56 : 32 : 0.01
+T: 2 3 : 56 : 55 : 0.08
+T: 2 3 : 56 : 56 : 0.64
+T: 2 3 : 56 : 59 : 0.08
+T: 2 3 : 56 : 64 : 0.01
+T: 2 3 : 56 : 65 : 0.08
+T: 2 3 : 56 : 68 : 0.01
+T: 2 4 : 56 : 29 : 0.1
+T: 2 4 : 56 : 56 : 0.8
+T: 2 4 : 56 : 65 : 0.1
+T: 3 0 : 56 : 28 : 0.01
+T: 3 0 : 56 : 29 : 0.08
+T: 3 0 : 56 : 32 : 0.01
+T: 3 0 : 56 : 55 : 0.03
+T: 3 0 : 56 : 56 : 0.24
+T: 3 0 : 56 : 59 : 0.03
+T: 3 0 : 56 : 64 : 0.06
+T: 3 0 : 56 : 65 : 0.48
+T: 3 0 : 56 : 68 : 0.06
+T: 3 1 : 56 : 28 : 0.01
+T: 3 1 : 56 : 29 : 0.03
+T: 3 1 : 56 : 32 : 0.06
+T: 3 1 : 56 : 55 : 0.03
+T: 3 1 : 56 : 56 : 0.09
+T: 3 1 : 56 : 59 : 0.18
+T: 3 1 : 56 : 64 : 0.06
+T: 3 1 : 56 : 65 : 0.18
+T: 3 1 : 56 : 68 : 0.36
+T: 3 2 : 56 : 28 : 0.06
+T: 3 2 : 56 : 29 : 0.03
+T: 3 2 : 56 : 32 : 0.01
+T: 3 2 : 56 : 55 : 0.18
+T: 3 2 : 56 : 56 : 0.09
+T: 3 2 : 56 : 59 : 0.03
+T: 3 2 : 56 : 64 : 0.36
+T: 3 2 : 56 : 65 : 0.18
+T: 3 2 : 56 : 68 : 0.06
+T: 3 3 : 56 : 28 : 0.01
+T: 3 3 : 56 : 29 : 0.08
+T: 3 3 : 56 : 32 : 0.01
+T: 3 3 : 56 : 55 : 0.03
+T: 3 3 : 56 : 56 : 0.24
+T: 3 3 : 56 : 59 : 0.03
+T: 3 3 : 56 : 64 : 0.06
+T: 3 3 : 56 : 65 : 0.48
+T: 3 3 : 56 : 68 : 0.06
+T: 3 4 : 56 : 29 : 0.1
+T: 3 4 : 56 : 56 : 0.3
+T: 3 4 : 56 : 65 : 0.6
+T: 4 0 : 56 : 55 : 0.1
+T: 4 0 : 56 : 56 : 0.8
+T: 4 0 : 56 : 59 : 0.1
+T: 4 1 : 56 : 55 : 0.1
+T: 4 1 : 56 : 56 : 0.3
+T: 4 1 : 56 : 59 : 0.6
+T: 4 2 : 56 : 55 : 0.6
+T: 4 2 : 56 : 56 : 0.3
+T: 4 2 : 56 : 59 : 0.1
+T: 4 3 : 56 : 55 : 0.1
+T: 4 3 : 56 : 56 : 0.8
+T: 4 3 : 56 : 59 : 0.1
+T: 4 4 : 56 : 56 : 1.0
+T: 0 0 : 57 : 27 : 0.36
+T: 0 0 : 57 : 30 : 0.12
+T: 0 0 : 57 : 31 : 0.06
+T: 0 0 : 57 : 33 : 0.06
+T: 0 0 : 57 : 54 : 0.18
+T: 0 0 : 57 : 57 : 0.060
+T: 0 0 : 57 : 58 : 0.03
+T: 0 0 : 57 : 60 : 0.03
+T: 0 0 : 57 : 63 : 0.06
+T: 0 0 : 57 : 66 : 0.02
+T: 0 0 : 57 : 67 : 0.01
+T: 0 0 : 57 : 69 : 0.01
+T: 0 1 : 57 : 27 : 0.06
+T: 0 1 : 57 : 30 : 0.12
+T: 0 1 : 57 : 31 : 0.06
+T: 0 1 : 57 : 33 : 0.36
+T: 0 1 : 57 : 54 : 0.03
+T: 0 1 : 57 : 57 : 0.060
+T: 0 1 : 57 : 58 : 0.03
+T: 0 1 : 57 : 60 : 0.18
+T: 0 1 : 57 : 63 : 0.01
+T: 0 1 : 57 : 66 : 0.02
+T: 0 1 : 57 : 67 : 0.01
+T: 0 1 : 57 : 69 : 0.06
+T: 0 2 : 57 : 27 : 0.06
+T: 0 2 : 57 : 30 : 0.42
+T: 0 2 : 57 : 31 : 0.06
+T: 0 2 : 57 : 33 : 0.06
+T: 0 2 : 57 : 54 : 0.03
+T: 0 2 : 57 : 57 : 0.21
+T: 0 2 : 57 : 58 : 0.03
+T: 0 2 : 57 : 60 : 0.03
+T: 0 2 : 57 : 63 : 0.01
+T: 0 2 : 57 : 66 : 0.07
+T: 0 2 : 57 : 67 : 0.01
+T: 0 2 : 57 : 69 : 0.01
+T: 0 3 : 57 : 27 : 0.06
+T: 0 3 : 57 : 30 : 0.12
+T: 0 3 : 57 : 31 : 0.36
+T: 0 3 : 57 : 33 : 0.06
+T: 0 3 : 57 : 54 : 0.03
+T: 0 3 : 57 : 57 : 0.060
+T: 0 3 : 57 : 58 : 0.18
+T: 0 3 : 57 : 60 : 0.03
+T: 0 3 : 57 : 63 : 0.01
+T: 0 3 : 57 : 66 : 0.02
+T: 0 3 : 57 : 67 : 0.06
+T: 0 3 : 57 : 69 : 0.01
+T: 0 4 : 57 : 30 : 0.6
+T: 0 4 : 57 : 57 : 0.3
+T: 0 4 : 57 : 66 : 0.1
+T: 1 0 : 57 : 27 : 0.06
+T: 1 0 : 57 : 30 : 0.02
+T: 1 0 : 57 : 31 : 0.01
+T: 1 0 : 57 : 33 : 0.01
+T: 1 0 : 57 : 54 : 0.48
+T: 1 0 : 57 : 57 : 0.16
+T: 1 0 : 57 : 58 : 0.08
+T: 1 0 : 57 : 60 : 0.08
+T: 1 0 : 57 : 63 : 0.06
+T: 1 0 : 57 : 66 : 0.02
+T: 1 0 : 57 : 67 : 0.01
+T: 1 0 : 57 : 69 : 0.01
+T: 1 1 : 57 : 27 : 0.01
+T: 1 1 : 57 : 30 : 0.02
+T: 1 1 : 57 : 31 : 0.01
+T: 1 1 : 57 : 33 : 0.06
+T: 1 1 : 57 : 54 : 0.08
+T: 1 1 : 57 : 57 : 0.16
+T: 1 1 : 57 : 58 : 0.08
+T: 1 1 : 57 : 60 : 0.48
+T: 1 1 : 57 : 63 : 0.01
+T: 1 1 : 57 : 66 : 0.02
+T: 1 1 : 57 : 67 : 0.01
+T: 1 1 : 57 : 69 : 0.06
+T: 1 2 : 57 : 27 : 0.01
+T: 1 2 : 57 : 30 : 0.07
+T: 1 2 : 57 : 31 : 0.01
+T: 1 2 : 57 : 33 : 0.01
+T: 1 2 : 57 : 54 : 0.08
+T: 1 2 : 57 : 57 : 0.56
+T: 1 2 : 57 : 58 : 0.08
+T: 1 2 : 57 : 60 : 0.08
+T: 1 2 : 57 : 63 : 0.01
+T: 1 2 : 57 : 66 : 0.07
+T: 1 2 : 57 : 67 : 0.01
+T: 1 2 : 57 : 69 : 0.01
+T: 1 3 : 57 : 27 : 0.01
+T: 1 3 : 57 : 30 : 0.02
+T: 1 3 : 57 : 31 : 0.06
+T: 1 3 : 57 : 33 : 0.01
+T: 1 3 : 57 : 54 : 0.08
+T: 1 3 : 57 : 57 : 0.16
+T: 1 3 : 57 : 58 : 0.48
+T: 1 3 : 57 : 60 : 0.08
+T: 1 3 : 57 : 63 : 0.01
+T: 1 3 : 57 : 66 : 0.02
+T: 1 3 : 57 : 67 : 0.06
+T: 1 3 : 57 : 69 : 0.01
+T: 1 4 : 57 : 30 : 0.1
+T: 1 4 : 57 : 57 : 0.8
+T: 1 4 : 57 : 66 : 0.1
+T: 2 0 : 57 : 27 : 0.06
+T: 2 0 : 57 : 30 : 0.02
+T: 2 0 : 57 : 31 : 0.01
+T: 2 0 : 57 : 33 : 0.01
+T: 2 0 : 57 : 54 : 0.48
+T: 2 0 : 57 : 57 : 0.16
+T: 2 0 : 57 : 58 : 0.08
+T: 2 0 : 57 : 60 : 0.08
+T: 2 0 : 57 : 63 : 0.06
+T: 2 0 : 57 : 66 : 0.02
+T: 2 0 : 57 : 67 : 0.01
+T: 2 0 : 57 : 69 : 0.01
+T: 2 1 : 57 : 27 : 0.01
+T: 2 1 : 57 : 30 : 0.02
+T: 2 1 : 57 : 31 : 0.01
+T: 2 1 : 57 : 33 : 0.06
+T: 2 1 : 57 : 54 : 0.08
+T: 2 1 : 57 : 57 : 0.16
+T: 2 1 : 57 : 58 : 0.08
+T: 2 1 : 57 : 60 : 0.48
+T: 2 1 : 57 : 63 : 0.01
+T: 2 1 : 57 : 66 : 0.02
+T: 2 1 : 57 : 67 : 0.01
+T: 2 1 : 57 : 69 : 0.06
+T: 2 2 : 57 : 27 : 0.01
+T: 2 2 : 57 : 30 : 0.07
+T: 2 2 : 57 : 31 : 0.01
+T: 2 2 : 57 : 33 : 0.01
+T: 2 2 : 57 : 54 : 0.08
+T: 2 2 : 57 : 57 : 0.56
+T: 2 2 : 57 : 58 : 0.08
+T: 2 2 : 57 : 60 : 0.08
+T: 2 2 : 57 : 63 : 0.01
+T: 2 2 : 57 : 66 : 0.07
+T: 2 2 : 57 : 67 : 0.01
+T: 2 2 : 57 : 69 : 0.01
+T: 2 3 : 57 : 27 : 0.01
+T: 2 3 : 57 : 30 : 0.02
+T: 2 3 : 57 : 31 : 0.06
+T: 2 3 : 57 : 33 : 0.01
+T: 2 3 : 57 : 54 : 0.08
+T: 2 3 : 57 : 57 : 0.16
+T: 2 3 : 57 : 58 : 0.48
+T: 2 3 : 57 : 60 : 0.08
+T: 2 3 : 57 : 63 : 0.01
+T: 2 3 : 57 : 66 : 0.02
+T: 2 3 : 57 : 67 : 0.06
+T: 2 3 : 57 : 69 : 0.01
+T: 2 4 : 57 : 30 : 0.1
+T: 2 4 : 57 : 57 : 0.8
+T: 2 4 : 57 : 66 : 0.1
+T: 3 0 : 57 : 27 : 0.06
+T: 3 0 : 57 : 30 : 0.02
+T: 3 0 : 57 : 31 : 0.01
+T: 3 0 : 57 : 33 : 0.01
+T: 3 0 : 57 : 54 : 0.18
+T: 3 0 : 57 : 57 : 0.060
+T: 3 0 : 57 : 58 : 0.03
+T: 3 0 : 57 : 60 : 0.03
+T: 3 0 : 57 : 63 : 0.36
+T: 3 0 : 57 : 66 : 0.12
+T: 3 0 : 57 : 67 : 0.06
+T: 3 0 : 57 : 69 : 0.06
+T: 3 1 : 57 : 27 : 0.01
+T: 3 1 : 57 : 30 : 0.02
+T: 3 1 : 57 : 31 : 0.01
+T: 3 1 : 57 : 33 : 0.06
+T: 3 1 : 57 : 54 : 0.03
+T: 3 1 : 57 : 57 : 0.060
+T: 3 1 : 57 : 58 : 0.03
+T: 3 1 : 57 : 60 : 0.18
+T: 3 1 : 57 : 63 : 0.06
+T: 3 1 : 57 : 66 : 0.12
+T: 3 1 : 57 : 67 : 0.06
+T: 3 1 : 57 : 69 : 0.36
+T: 3 2 : 57 : 27 : 0.01
+T: 3 2 : 57 : 30 : 0.07
+T: 3 2 : 57 : 31 : 0.01
+T: 3 2 : 57 : 33 : 0.01
+T: 3 2 : 57 : 54 : 0.03
+T: 3 2 : 57 : 57 : 0.21
+T: 3 2 : 57 : 58 : 0.03
+T: 3 2 : 57 : 60 : 0.03
+T: 3 2 : 57 : 63 : 0.06
+T: 3 2 : 57 : 66 : 0.42
+T: 3 2 : 57 : 67 : 0.06
+T: 3 2 : 57 : 69 : 0.06
+T: 3 3 : 57 : 27 : 0.01
+T: 3 3 : 57 : 30 : 0.02
+T: 3 3 : 57 : 31 : 0.06
+T: 3 3 : 57 : 33 : 0.01
+T: 3 3 : 57 : 54 : 0.03
+T: 3 3 : 57 : 57 : 0.060
+T: 3 3 : 57 : 58 : 0.18
+T: 3 3 : 57 : 60 : 0.03
+T: 3 3 : 57 : 63 : 0.06
+T: 3 3 : 57 : 66 : 0.12
+T: 3 3 : 57 : 67 : 0.36
+T: 3 3 : 57 : 69 : 0.06
+T: 3 4 : 57 : 30 : 0.1
+T: 3 4 : 57 : 57 : 0.3
+T: 3 4 : 57 : 66 : 0.6
+T: 4 0 : 57 : 54 : 0.6
+T: 4 0 : 57 : 57 : 0.2
+T: 4 0 : 57 : 58 : 0.1
+T: 4 0 : 57 : 60 : 0.1
+T: 4 1 : 57 : 54 : 0.1
+T: 4 1 : 57 : 57 : 0.2
+T: 4 1 : 57 : 58 : 0.1
+T: 4 1 : 57 : 60 : 0.6
+T: 4 2 : 57 : 54 : 0.1
+T: 4 2 : 57 : 57 : 0.7
+T: 4 2 : 57 : 58 : 0.1
+T: 4 2 : 57 : 60 : 0.1
+T: 4 3 : 57 : 54 : 0.1
+T: 4 3 : 57 : 57 : 0.2
+T: 4 3 : 57 : 58 : 0.6
+T: 4 3 : 57 : 60 : 0.1
+T: 4 4 : 57 : 57 : 1.0
+T: 0 0 : 58 : 28 : 0.36
+T: 0 0 : 58 : 30 : 0.06
+T: 0 0 : 58 : 31 : 0.06
+T: 0 0 : 58 : 32 : 0.06
+T: 0 0 : 58 : 34 : 0.06
+T: 0 0 : 58 : 55 : 0.18
+T: 0 0 : 58 : 57 : 0.03
+T: 0 0 : 58 : 58 : 0.03
+T: 0 0 : 58 : 59 : 0.03
+T: 0 0 : 58 : 61 : 0.03
+T: 0 0 : 58 : 64 : 0.06
+T: 0 0 : 58 : 66 : 0.01
+T: 0 0 : 58 : 67 : 0.01
+T: 0 0 : 58 : 68 : 0.01
+T: 0 0 : 58 : 70 : 0.01
+T: 0 1 : 58 : 28 : 0.06
+T: 0 1 : 58 : 30 : 0.06
+T: 0 1 : 58 : 31 : 0.06
+T: 0 1 : 58 : 32 : 0.06
+T: 0 1 : 58 : 34 : 0.36
+T: 0 1 : 58 : 55 : 0.03
+T: 0 1 : 58 : 57 : 0.03
+T: 0 1 : 58 : 58 : 0.03
+T: 0 1 : 58 : 59 : 0.03
+T: 0 1 : 58 : 61 : 0.18
+T: 0 1 : 58 : 64 : 0.01
+T: 0 1 : 58 : 66 : 0.01
+T: 0 1 : 58 : 67 : 0.01
+T: 0 1 : 58 : 68 : 0.01
+T: 0 1 : 58 : 70 : 0.06
+T: 0 2 : 58 : 28 : 0.06
+T: 0 2 : 58 : 30 : 0.36
+T: 0 2 : 58 : 31 : 0.06
+T: 0 2 : 58 : 32 : 0.06
+T: 0 2 : 58 : 34 : 0.06
+T: 0 2 : 58 : 55 : 0.03
+T: 0 2 : 58 : 57 : 0.18
+T: 0 2 : 58 : 58 : 0.03
+T: 0 2 : 58 : 59 : 0.03
+T: 0 2 : 58 : 61 : 0.03
+T: 0 2 : 58 : 64 : 0.01
+T: 0 2 : 58 : 66 : 0.06
+T: 0 2 : 58 : 67 : 0.01
+T: 0 2 : 58 : 68 : 0.01
+T: 0 2 : 58 : 70 : 0.01
+T: 0 3 : 58 : 28 : 0.06
+T: 0 3 : 58 : 30 : 0.06
+T: 0 3 : 58 : 31 : 0.06
+T: 0 3 : 58 : 32 : 0.36
+T: 0 3 : 58 : 34 : 0.06
+T: 0 3 : 58 : 55 : 0.03
+T: 0 3 : 58 : 57 : 0.03
+T: 0 3 : 58 : 58 : 0.03
+T: 0 3 : 58 : 59 : 0.18
+T: 0 3 : 58 : 61 : 0.03
+T: 0 3 : 58 : 64 : 0.01
+T: 0 3 : 58 : 66 : 0.01
+T: 0 3 : 58 : 67 : 0.01
+T: 0 3 : 58 : 68 : 0.06
+T: 0 3 : 58 : 70 : 0.01
+T: 0 4 : 58 : 31 : 0.6
+T: 0 4 : 58 : 58 : 0.3
+T: 0 4 : 58 : 67 : 0.1
+T: 1 0 : 58 : 28 : 0.06
+T: 1 0 : 58 : 30 : 0.01
+T: 1 0 : 58 : 31 : 0.01
+T: 1 0 : 58 : 32 : 0.01
+T: 1 0 : 58 : 34 : 0.01
+T: 1 0 : 58 : 55 : 0.48
+T: 1 0 : 58 : 57 : 0.08
+T: 1 0 : 58 : 58 : 0.08
+T: 1 0 : 58 : 59 : 0.08
+T: 1 0 : 58 : 61 : 0.08
+T: 1 0 : 58 : 64 : 0.06
+T: 1 0 : 58 : 66 : 0.01
+T: 1 0 : 58 : 67 : 0.01
+T: 1 0 : 58 : 68 : 0.01
+T: 1 0 : 58 : 70 : 0.01
+T: 1 1 : 58 : 28 : 0.01
+T: 1 1 : 58 : 30 : 0.01
+T: 1 1 : 58 : 31 : 0.01
+T: 1 1 : 58 : 32 : 0.01
+T: 1 1 : 58 : 34 : 0.06
+T: 1 1 : 58 : 55 : 0.08
+T: 1 1 : 58 : 57 : 0.08
+T: 1 1 : 58 : 58 : 0.08
+T: 1 1 : 58 : 59 : 0.08
+T: 1 1 : 58 : 61 : 0.48
+T: 1 1 : 58 : 64 : 0.01
+T: 1 1 : 58 : 66 : 0.01
+T: 1 1 : 58 : 67 : 0.01
+T: 1 1 : 58 : 68 : 0.01
+T: 1 1 : 58 : 70 : 0.06
+T: 1 2 : 58 : 28 : 0.01
+T: 1 2 : 58 : 30 : 0.06
+T: 1 2 : 58 : 31 : 0.01
+T: 1 2 : 58 : 32 : 0.01
+T: 1 2 : 58 : 34 : 0.01
+T: 1 2 : 58 : 55 : 0.08
+T: 1 2 : 58 : 57 : 0.48
+T: 1 2 : 58 : 58 : 0.08
+T: 1 2 : 58 : 59 : 0.08
+T: 1 2 : 58 : 61 : 0.08
+T: 1 2 : 58 : 64 : 0.01
+T: 1 2 : 58 : 66 : 0.06
+T: 1 2 : 58 : 67 : 0.01
+T: 1 2 : 58 : 68 : 0.01
+T: 1 2 : 58 : 70 : 0.01
+T: 1 3 : 58 : 28 : 0.01
+T: 1 3 : 58 : 30 : 0.01
+T: 1 3 : 58 : 31 : 0.01
+T: 1 3 : 58 : 32 : 0.06
+T: 1 3 : 58 : 34 : 0.01
+T: 1 3 : 58 : 55 : 0.08
+T: 1 3 : 58 : 57 : 0.08
+T: 1 3 : 58 : 58 : 0.08
+T: 1 3 : 58 : 59 : 0.48
+T: 1 3 : 58 : 61 : 0.08
+T: 1 3 : 58 : 64 : 0.01
+T: 1 3 : 58 : 66 : 0.01
+T: 1 3 : 58 : 67 : 0.01
+T: 1 3 : 58 : 68 : 0.06
+T: 1 3 : 58 : 70 : 0.01
+T: 1 4 : 58 : 31 : 0.1
+T: 1 4 : 58 : 58 : 0.8
+T: 1 4 : 58 : 67 : 0.1
+T: 2 0 : 58 : 28 : 0.06
+T: 2 0 : 58 : 30 : 0.01
+T: 2 0 : 58 : 31 : 0.01
+T: 2 0 : 58 : 32 : 0.01
+T: 2 0 : 58 : 34 : 0.01
+T: 2 0 : 58 : 55 : 0.48
+T: 2 0 : 58 : 57 : 0.08
+T: 2 0 : 58 : 58 : 0.08
+T: 2 0 : 58 : 59 : 0.08
+T: 2 0 : 58 : 61 : 0.08
+T: 2 0 : 58 : 64 : 0.06
+T: 2 0 : 58 : 66 : 0.01
+T: 2 0 : 58 : 67 : 0.01
+T: 2 0 : 58 : 68 : 0.01
+T: 2 0 : 58 : 70 : 0.01
+T: 2 1 : 58 : 28 : 0.01
+T: 2 1 : 58 : 30 : 0.01
+T: 2 1 : 58 : 31 : 0.01
+T: 2 1 : 58 : 32 : 0.01
+T: 2 1 : 58 : 34 : 0.06
+T: 2 1 : 58 : 55 : 0.08
+T: 2 1 : 58 : 57 : 0.08
+T: 2 1 : 58 : 58 : 0.08
+T: 2 1 : 58 : 59 : 0.08
+T: 2 1 : 58 : 61 : 0.48
+T: 2 1 : 58 : 64 : 0.01
+T: 2 1 : 58 : 66 : 0.01
+T: 2 1 : 58 : 67 : 0.01
+T: 2 1 : 58 : 68 : 0.01
+T: 2 1 : 58 : 70 : 0.06
+T: 2 2 : 58 : 28 : 0.01
+T: 2 2 : 58 : 30 : 0.06
+T: 2 2 : 58 : 31 : 0.01
+T: 2 2 : 58 : 32 : 0.01
+T: 2 2 : 58 : 34 : 0.01
+T: 2 2 : 58 : 55 : 0.08
+T: 2 2 : 58 : 57 : 0.48
+T: 2 2 : 58 : 58 : 0.08
+T: 2 2 : 58 : 59 : 0.08
+T: 2 2 : 58 : 61 : 0.08
+T: 2 2 : 58 : 64 : 0.01
+T: 2 2 : 58 : 66 : 0.06
+T: 2 2 : 58 : 67 : 0.01
+T: 2 2 : 58 : 68 : 0.01
+T: 2 2 : 58 : 70 : 0.01
+T: 2 3 : 58 : 28 : 0.01
+T: 2 3 : 58 : 30 : 0.01
+T: 2 3 : 58 : 31 : 0.01
+T: 2 3 : 58 : 32 : 0.06
+T: 2 3 : 58 : 34 : 0.01
+T: 2 3 : 58 : 55 : 0.08
+T: 2 3 : 58 : 57 : 0.08
+T: 2 3 : 58 : 58 : 0.08
+T: 2 3 : 58 : 59 : 0.48
+T: 2 3 : 58 : 61 : 0.08
+T: 2 3 : 58 : 64 : 0.01
+T: 2 3 : 58 : 66 : 0.01
+T: 2 3 : 58 : 67 : 0.01
+T: 2 3 : 58 : 68 : 0.06
+T: 2 3 : 58 : 70 : 0.01
+T: 2 4 : 58 : 31 : 0.1
+T: 2 4 : 58 : 58 : 0.8
+T: 2 4 : 58 : 67 : 0.1
+T: 3 0 : 58 : 28 : 0.06
+T: 3 0 : 58 : 30 : 0.01
+T: 3 0 : 58 : 31 : 0.01
+T: 3 0 : 58 : 32 : 0.01
+T: 3 0 : 58 : 34 : 0.01
+T: 3 0 : 58 : 55 : 0.18
+T: 3 0 : 58 : 57 : 0.03
+T: 3 0 : 58 : 58 : 0.03
+T: 3 0 : 58 : 59 : 0.03
+T: 3 0 : 58 : 61 : 0.03
+T: 3 0 : 58 : 64 : 0.36
+T: 3 0 : 58 : 66 : 0.06
+T: 3 0 : 58 : 67 : 0.06
+T: 3 0 : 58 : 68 : 0.06
+T: 3 0 : 58 : 70 : 0.06
+T: 3 1 : 58 : 28 : 0.01
+T: 3 1 : 58 : 30 : 0.01
+T: 3 1 : 58 : 31 : 0.01
+T: 3 1 : 58 : 32 : 0.01
+T: 3 1 : 58 : 34 : 0.06
+T: 3 1 : 58 : 55 : 0.03
+T: 3 1 : 58 : 57 : 0.03
+T: 3 1 : 58 : 58 : 0.03
+T: 3 1 : 58 : 59 : 0.03
+T: 3 1 : 58 : 61 : 0.18
+T: 3 1 : 58 : 64 : 0.06
+T: 3 1 : 58 : 66 : 0.06
+T: 3 1 : 58 : 67 : 0.06
+T: 3 1 : 58 : 68 : 0.06
+T: 3 1 : 58 : 70 : 0.36
+T: 3 2 : 58 : 28 : 0.01
+T: 3 2 : 58 : 30 : 0.06
+T: 3 2 : 58 : 31 : 0.01
+T: 3 2 : 58 : 32 : 0.01
+T: 3 2 : 58 : 34 : 0.01
+T: 3 2 : 58 : 55 : 0.03
+T: 3 2 : 58 : 57 : 0.18
+T: 3 2 : 58 : 58 : 0.03
+T: 3 2 : 58 : 59 : 0.03
+T: 3 2 : 58 : 61 : 0.03
+T: 3 2 : 58 : 64 : 0.06
+T: 3 2 : 58 : 66 : 0.36
+T: 3 2 : 58 : 67 : 0.06
+T: 3 2 : 58 : 68 : 0.06
+T: 3 2 : 58 : 70 : 0.06
+T: 3 3 : 58 : 28 : 0.01
+T: 3 3 : 58 : 30 : 0.01
+T: 3 3 : 58 : 31 : 0.01
+T: 3 3 : 58 : 32 : 0.06
+T: 3 3 : 58 : 34 : 0.01
+T: 3 3 : 58 : 55 : 0.03
+T: 3 3 : 58 : 57 : 0.03
+T: 3 3 : 58 : 58 : 0.03
+T: 3 3 : 58 : 59 : 0.18
+T: 3 3 : 58 : 61 : 0.03
+T: 3 3 : 58 : 64 : 0.06
+T: 3 3 : 58 : 66 : 0.06
+T: 3 3 : 58 : 67 : 0.06
+T: 3 3 : 58 : 68 : 0.36
+T: 3 3 : 58 : 70 : 0.06
+T: 3 4 : 58 : 31 : 0.1
+T: 3 4 : 58 : 58 : 0.3
+T: 3 4 : 58 : 67 : 0.6
+T: 4 0 : 58 : 55 : 0.6
+T: 4 0 : 58 : 57 : 0.1
+T: 4 0 : 58 : 58 : 0.1
+T: 4 0 : 58 : 59 : 0.1
+T: 4 0 : 58 : 61 : 0.1
+T: 4 1 : 58 : 55 : 0.1
+T: 4 1 : 58 : 57 : 0.1
+T: 4 1 : 58 : 58 : 0.1
+T: 4 1 : 58 : 59 : 0.1
+T: 4 1 : 58 : 61 : 0.6
+T: 4 2 : 58 : 55 : 0.1
+T: 4 2 : 58 : 57 : 0.6
+T: 4 2 : 58 : 58 : 0.1
+T: 4 2 : 58 : 59 : 0.1
+T: 4 2 : 58 : 61 : 0.1
+T: 4 3 : 58 : 55 : 0.1
+T: 4 3 : 58 : 57 : 0.1
+T: 4 3 : 58 : 58 : 0.1
+T: 4 3 : 58 : 59 : 0.6
+T: 4 3 : 58 : 61 : 0.1
+T: 4 4 : 58 : 58 : 1.0
+T: 0 0 : 59 : 29 : 0.36
+T: 0 0 : 59 : 31 : 0.06
+T: 0 0 : 59 : 32 : 0.12
+T: 0 0 : 59 : 35 : 0.06
+T: 0 0 : 59 : 56 : 0.18
+T: 0 0 : 59 : 58 : 0.03
+T: 0 0 : 59 : 59 : 0.060
+T: 0 0 : 59 : 62 : 0.03
+T: 0 0 : 59 : 65 : 0.06
+T: 0 0 : 59 : 67 : 0.01
+T: 0 0 : 59 : 68 : 0.02
+T: 0 0 : 59 : 71 : 0.01
+T: 0 1 : 59 : 29 : 0.06
+T: 0 1 : 59 : 31 : 0.06
+T: 0 1 : 59 : 32 : 0.12
+T: 0 1 : 59 : 35 : 0.36
+T: 0 1 : 59 : 56 : 0.03
+T: 0 1 : 59 : 58 : 0.03
+T: 0 1 : 59 : 59 : 0.060
+T: 0 1 : 59 : 62 : 0.18
+T: 0 1 : 59 : 65 : 0.01
+T: 0 1 : 59 : 67 : 0.01
+T: 0 1 : 59 : 68 : 0.02
+T: 0 1 : 59 : 71 : 0.06
+T: 0 2 : 59 : 29 : 0.06
+T: 0 2 : 59 : 31 : 0.36
+T: 0 2 : 59 : 32 : 0.12
+T: 0 2 : 59 : 35 : 0.06
+T: 0 2 : 59 : 56 : 0.03
+T: 0 2 : 59 : 58 : 0.18
+T: 0 2 : 59 : 59 : 0.060
+T: 0 2 : 59 : 62 : 0.03
+T: 0 2 : 59 : 65 : 0.01
+T: 0 2 : 59 : 67 : 0.06
+T: 0 2 : 59 : 68 : 0.02
+T: 0 2 : 59 : 71 : 0.01
+T: 0 3 : 59 : 29 : 0.06
+T: 0 3 : 59 : 31 : 0.06
+T: 0 3 : 59 : 32 : 0.42
+T: 0 3 : 59 : 35 : 0.06
+T: 0 3 : 59 : 56 : 0.03
+T: 0 3 : 59 : 58 : 0.03
+T: 0 3 : 59 : 59 : 0.21
+T: 0 3 : 59 : 62 : 0.03
+T: 0 3 : 59 : 65 : 0.01
+T: 0 3 : 59 : 67 : 0.01
+T: 0 3 : 59 : 68 : 0.07
+T: 0 3 : 59 : 71 : 0.01
+T: 0 4 : 59 : 32 : 0.6
+T: 0 4 : 59 : 59 : 0.3
+T: 0 4 : 59 : 68 : 0.1
+T: 1 0 : 59 : 29 : 0.06
+T: 1 0 : 59 : 31 : 0.01
+T: 1 0 : 59 : 32 : 0.02
+T: 1 0 : 59 : 35 : 0.01
+T: 1 0 : 59 : 56 : 0.48
+T: 1 0 : 59 : 58 : 0.08
+T: 1 0 : 59 : 59 : 0.16
+T: 1 0 : 59 : 62 : 0.08
+T: 1 0 : 59 : 65 : 0.06
+T: 1 0 : 59 : 67 : 0.01
+T: 1 0 : 59 : 68 : 0.02
+T: 1 0 : 59 : 71 : 0.01
+T: 1 1 : 59 : 29 : 0.01
+T: 1 1 : 59 : 31 : 0.01
+T: 1 1 : 59 : 32 : 0.02
+T: 1 1 : 59 : 35 : 0.06
+T: 1 1 : 59 : 56 : 0.08
+T: 1 1 : 59 : 58 : 0.08
+T: 1 1 : 59 : 59 : 0.16
+T: 1 1 : 59 : 62 : 0.48
+T: 1 1 : 59 : 65 : 0.01
+T: 1 1 : 59 : 67 : 0.01
+T: 1 1 : 59 : 68 : 0.02
+T: 1 1 : 59 : 71 : 0.06
+T: 1 2 : 59 : 29 : 0.01
+T: 1 2 : 59 : 31 : 0.06
+T: 1 2 : 59 : 32 : 0.02
+T: 1 2 : 59 : 35 : 0.01
+T: 1 2 : 59 : 56 : 0.08
+T: 1 2 : 59 : 58 : 0.48
+T: 1 2 : 59 : 59 : 0.16
+T: 1 2 : 59 : 62 : 0.08
+T: 1 2 : 59 : 65 : 0.01
+T: 1 2 : 59 : 67 : 0.06
+T: 1 2 : 59 : 68 : 0.02
+T: 1 2 : 59 : 71 : 0.01
+T: 1 3 : 59 : 29 : 0.01
+T: 1 3 : 59 : 31 : 0.01
+T: 1 3 : 59 : 32 : 0.07
+T: 1 3 : 59 : 35 : 0.01
+T: 1 3 : 59 : 56 : 0.08
+T: 1 3 : 59 : 58 : 0.08
+T: 1 3 : 59 : 59 : 0.56
+T: 1 3 : 59 : 62 : 0.08
+T: 1 3 : 59 : 65 : 0.01
+T: 1 3 : 59 : 67 : 0.01
+T: 1 3 : 59 : 68 : 0.07
+T: 1 3 : 59 : 71 : 0.01
+T: 1 4 : 59 : 32 : 0.1
+T: 1 4 : 59 : 59 : 0.8
+T: 1 4 : 59 : 68 : 0.1
+T: 2 0 : 59 : 29 : 0.06
+T: 2 0 : 59 : 31 : 0.01
+T: 2 0 : 59 : 32 : 0.02
+T: 2 0 : 59 : 35 : 0.01
+T: 2 0 : 59 : 56 : 0.48
+T: 2 0 : 59 : 58 : 0.08
+T: 2 0 : 59 : 59 : 0.16
+T: 2 0 : 59 : 62 : 0.08
+T: 2 0 : 59 : 65 : 0.06
+T: 2 0 : 59 : 67 : 0.01
+T: 2 0 : 59 : 68 : 0.02
+T: 2 0 : 59 : 71 : 0.01
+T: 2 1 : 59 : 29 : 0.01
+T: 2 1 : 59 : 31 : 0.01
+T: 2 1 : 59 : 32 : 0.02
+T: 2 1 : 59 : 35 : 0.06
+T: 2 1 : 59 : 56 : 0.08
+T: 2 1 : 59 : 58 : 0.08
+T: 2 1 : 59 : 59 : 0.16
+T: 2 1 : 59 : 62 : 0.48
+T: 2 1 : 59 : 65 : 0.01
+T: 2 1 : 59 : 67 : 0.01
+T: 2 1 : 59 : 68 : 0.02
+T: 2 1 : 59 : 71 : 0.06
+T: 2 2 : 59 : 29 : 0.01
+T: 2 2 : 59 : 31 : 0.06
+T: 2 2 : 59 : 32 : 0.02
+T: 2 2 : 59 : 35 : 0.01
+T: 2 2 : 59 : 56 : 0.08
+T: 2 2 : 59 : 58 : 0.48
+T: 2 2 : 59 : 59 : 0.16
+T: 2 2 : 59 : 62 : 0.08
+T: 2 2 : 59 : 65 : 0.01
+T: 2 2 : 59 : 67 : 0.06
+T: 2 2 : 59 : 68 : 0.02
+T: 2 2 : 59 : 71 : 0.01
+T: 2 3 : 59 : 29 : 0.01
+T: 2 3 : 59 : 31 : 0.01
+T: 2 3 : 59 : 32 : 0.07
+T: 2 3 : 59 : 35 : 0.01
+T: 2 3 : 59 : 56 : 0.08
+T: 2 3 : 59 : 58 : 0.08
+T: 2 3 : 59 : 59 : 0.56
+T: 2 3 : 59 : 62 : 0.08
+T: 2 3 : 59 : 65 : 0.01
+T: 2 3 : 59 : 67 : 0.01
+T: 2 3 : 59 : 68 : 0.07
+T: 2 3 : 59 : 71 : 0.01
+T: 2 4 : 59 : 32 : 0.1
+T: 2 4 : 59 : 59 : 0.8
+T: 2 4 : 59 : 68 : 0.1
+T: 3 0 : 59 : 29 : 0.06
+T: 3 0 : 59 : 31 : 0.01
+T: 3 0 : 59 : 32 : 0.02
+T: 3 0 : 59 : 35 : 0.01
+T: 3 0 : 59 : 56 : 0.18
+T: 3 0 : 59 : 58 : 0.03
+T: 3 0 : 59 : 59 : 0.060
+T: 3 0 : 59 : 62 : 0.03
+T: 3 0 : 59 : 65 : 0.36
+T: 3 0 : 59 : 67 : 0.06
+T: 3 0 : 59 : 68 : 0.12
+T: 3 0 : 59 : 71 : 0.06
+T: 3 1 : 59 : 29 : 0.01
+T: 3 1 : 59 : 31 : 0.01
+T: 3 1 : 59 : 32 : 0.02
+T: 3 1 : 59 : 35 : 0.06
+T: 3 1 : 59 : 56 : 0.03
+T: 3 1 : 59 : 58 : 0.03
+T: 3 1 : 59 : 59 : 0.060
+T: 3 1 : 59 : 62 : 0.18
+T: 3 1 : 59 : 65 : 0.06
+T: 3 1 : 59 : 67 : 0.06
+T: 3 1 : 59 : 68 : 0.12
+T: 3 1 : 59 : 71 : 0.36
+T: 3 2 : 59 : 29 : 0.01
+T: 3 2 : 59 : 31 : 0.06
+T: 3 2 : 59 : 32 : 0.02
+T: 3 2 : 59 : 35 : 0.01
+T: 3 2 : 59 : 56 : 0.03
+T: 3 2 : 59 : 58 : 0.18
+T: 3 2 : 59 : 59 : 0.060
+T: 3 2 : 59 : 62 : 0.03
+T: 3 2 : 59 : 65 : 0.06
+T: 3 2 : 59 : 67 : 0.36
+T: 3 2 : 59 : 68 : 0.12
+T: 3 2 : 59 : 71 : 0.06
+T: 3 3 : 59 : 29 : 0.01
+T: 3 3 : 59 : 31 : 0.01
+T: 3 3 : 59 : 32 : 0.07
+T: 3 3 : 59 : 35 : 0.01
+T: 3 3 : 59 : 56 : 0.03
+T: 3 3 : 59 : 58 : 0.03
+T: 3 3 : 59 : 59 : 0.21
+T: 3 3 : 59 : 62 : 0.03
+T: 3 3 : 59 : 65 : 0.06
+T: 3 3 : 59 : 67 : 0.06
+T: 3 3 : 59 : 68 : 0.42
+T: 3 3 : 59 : 71 : 0.06
+T: 3 4 : 59 : 32 : 0.1
+T: 3 4 : 59 : 59 : 0.3
+T: 3 4 : 59 : 68 : 0.6
+T: 4 0 : 59 : 56 : 0.6
+T: 4 0 : 59 : 58 : 0.1
+T: 4 0 : 59 : 59 : 0.2
+T: 4 0 : 59 : 62 : 0.1
+T: 4 1 : 59 : 56 : 0.1
+T: 4 1 : 59 : 58 : 0.1
+T: 4 1 : 59 : 59 : 0.2
+T: 4 1 : 59 : 62 : 0.6
+T: 4 2 : 59 : 56 : 0.1
+T: 4 2 : 59 : 58 : 0.6
+T: 4 2 : 59 : 59 : 0.2
+T: 4 2 : 59 : 62 : 0.1
+T: 4 3 : 59 : 56 : 0.1
+T: 4 3 : 59 : 58 : 0.1
+T: 4 3 : 59 : 59 : 0.7
+T: 4 3 : 59 : 62 : 0.1
+T: 4 4 : 59 : 59 : 1.0
+T: 0 0 : 60 : 30 : 0.36
+T: 0 0 : 60 : 33 : 0.18
+T: 0 0 : 60 : 34 : 0.06
+T: 0 0 : 60 : 57 : 0.18
+T: 0 0 : 60 : 60 : 0.09
+T: 0 0 : 60 : 61 : 0.03
+T: 0 0 : 60 : 66 : 0.06
+T: 0 0 : 60 : 69 : 0.03
+T: 0 0 : 60 : 70 : 0.01
+T: 0 1 : 60 : 30 : 0.06
+T: 0 1 : 60 : 33 : 0.48
+T: 0 1 : 60 : 34 : 0.06
+T: 0 1 : 60 : 57 : 0.03
+T: 0 1 : 60 : 60 : 0.24
+T: 0 1 : 60 : 61 : 0.03
+T: 0 1 : 60 : 66 : 0.01
+T: 0 1 : 60 : 69 : 0.08
+T: 0 1 : 60 : 70 : 0.01
+T: 0 2 : 60 : 30 : 0.06
+T: 0 2 : 60 : 33 : 0.48
+T: 0 2 : 60 : 34 : 0.06
+T: 0 2 : 60 : 57 : 0.03
+T: 0 2 : 60 : 60 : 0.24
+T: 0 2 : 60 : 61 : 0.03
+T: 0 2 : 60 : 66 : 0.01
+T: 0 2 : 60 : 69 : 0.08
+T: 0 2 : 60 : 70 : 0.01
+T: 0 3 : 60 : 30 : 0.06
+T: 0 3 : 60 : 33 : 0.18
+T: 0 3 : 60 : 34 : 0.36
+T: 0 3 : 60 : 57 : 0.03
+T: 0 3 : 60 : 60 : 0.09
+T: 0 3 : 60 : 61 : 0.18
+T: 0 3 : 60 : 66 : 0.01
+T: 0 3 : 60 : 69 : 0.03
+T: 0 3 : 60 : 70 : 0.06
+T: 0 4 : 60 : 33 : 0.6
+T: 0 4 : 60 : 60 : 0.3
+T: 0 4 : 60 : 69 : 0.1
+T: 1 0 : 60 : 30 : 0.06
+T: 1 0 : 60 : 33 : 0.03
+T: 1 0 : 60 : 34 : 0.01
+T: 1 0 : 60 : 57 : 0.48
+T: 1 0 : 60 : 60 : 0.24
+T: 1 0 : 60 : 61 : 0.08
+T: 1 0 : 60 : 66 : 0.06
+T: 1 0 : 60 : 69 : 0.03
+T: 1 0 : 60 : 70 : 0.01
+T: 1 1 : 60 : 30 : 0.01
+T: 1 1 : 60 : 33 : 0.08
+T: 1 1 : 60 : 34 : 0.01
+T: 1 1 : 60 : 57 : 0.08
+T: 1 1 : 60 : 60 : 0.64
+T: 1 1 : 60 : 61 : 0.08
+T: 1 1 : 60 : 66 : 0.01
+T: 1 1 : 60 : 69 : 0.08
+T: 1 1 : 60 : 70 : 0.01
+T: 1 2 : 60 : 30 : 0.01
+T: 1 2 : 60 : 33 : 0.08
+T: 1 2 : 60 : 34 : 0.01
+T: 1 2 : 60 : 57 : 0.08
+T: 1 2 : 60 : 60 : 0.64
+T: 1 2 : 60 : 61 : 0.08
+T: 1 2 : 60 : 66 : 0.01
+T: 1 2 : 60 : 69 : 0.08
+T: 1 2 : 60 : 70 : 0.01
+T: 1 3 : 60 : 30 : 0.01
+T: 1 3 : 60 : 33 : 0.03
+T: 1 3 : 60 : 34 : 0.06
+T: 1 3 : 60 : 57 : 0.08
+T: 1 3 : 60 : 60 : 0.24
+T: 1 3 : 60 : 61 : 0.48
+T: 1 3 : 60 : 66 : 0.01
+T: 1 3 : 60 : 69 : 0.03
+T: 1 3 : 60 : 70 : 0.06
+T: 1 4 : 60 : 33 : 0.1
+T: 1 4 : 60 : 60 : 0.8
+T: 1 4 : 60 : 69 : 0.1
+T: 2 0 : 60 : 30 : 0.06
+T: 2 0 : 60 : 33 : 0.03
+T: 2 0 : 60 : 34 : 0.01
+T: 2 0 : 60 : 57 : 0.48
+T: 2 0 : 60 : 60 : 0.24
+T: 2 0 : 60 : 61 : 0.08
+T: 2 0 : 60 : 66 : 0.06
+T: 2 0 : 60 : 69 : 0.03
+T: 2 0 : 60 : 70 : 0.01
+T: 2 1 : 60 : 30 : 0.01
+T: 2 1 : 60 : 33 : 0.08
+T: 2 1 : 60 : 34 : 0.01
+T: 2 1 : 60 : 57 : 0.08
+T: 2 1 : 60 : 60 : 0.64
+T: 2 1 : 60 : 61 : 0.08
+T: 2 1 : 60 : 66 : 0.01
+T: 2 1 : 60 : 69 : 0.08
+T: 2 1 : 60 : 70 : 0.01
+T: 2 2 : 60 : 30 : 0.01
+T: 2 2 : 60 : 33 : 0.08
+T: 2 2 : 60 : 34 : 0.01
+T: 2 2 : 60 : 57 : 0.08
+T: 2 2 : 60 : 60 : 0.64
+T: 2 2 : 60 : 61 : 0.08
+T: 2 2 : 60 : 66 : 0.01
+T: 2 2 : 60 : 69 : 0.08
+T: 2 2 : 60 : 70 : 0.01
+T: 2 3 : 60 : 30 : 0.01
+T: 2 3 : 60 : 33 : 0.03
+T: 2 3 : 60 : 34 : 0.06
+T: 2 3 : 60 : 57 : 0.08
+T: 2 3 : 60 : 60 : 0.24
+T: 2 3 : 60 : 61 : 0.48
+T: 2 3 : 60 : 66 : 0.01
+T: 2 3 : 60 : 69 : 0.03
+T: 2 3 : 60 : 70 : 0.06
+T: 2 4 : 60 : 33 : 0.1
+T: 2 4 : 60 : 60 : 0.8
+T: 2 4 : 60 : 69 : 0.1
+T: 3 0 : 60 : 30 : 0.06
+T: 3 0 : 60 : 33 : 0.03
+T: 3 0 : 60 : 34 : 0.01
+T: 3 0 : 60 : 57 : 0.18
+T: 3 0 : 60 : 60 : 0.09
+T: 3 0 : 60 : 61 : 0.03
+T: 3 0 : 60 : 66 : 0.36
+T: 3 0 : 60 : 69 : 0.18
+T: 3 0 : 60 : 70 : 0.06
+T: 3 1 : 60 : 30 : 0.01
+T: 3 1 : 60 : 33 : 0.08
+T: 3 1 : 60 : 34 : 0.01
+T: 3 1 : 60 : 57 : 0.03
+T: 3 1 : 60 : 60 : 0.24
+T: 3 1 : 60 : 61 : 0.03
+T: 3 1 : 60 : 66 : 0.06
+T: 3 1 : 60 : 69 : 0.48
+T: 3 1 : 60 : 70 : 0.06
+T: 3 2 : 60 : 30 : 0.01
+T: 3 2 : 60 : 33 : 0.08
+T: 3 2 : 60 : 34 : 0.01
+T: 3 2 : 60 : 57 : 0.03
+T: 3 2 : 60 : 60 : 0.24
+T: 3 2 : 60 : 61 : 0.03
+T: 3 2 : 60 : 66 : 0.06
+T: 3 2 : 60 : 69 : 0.48
+T: 3 2 : 60 : 70 : 0.06
+T: 3 3 : 60 : 30 : 0.01
+T: 3 3 : 60 : 33 : 0.03
+T: 3 3 : 60 : 34 : 0.06
+T: 3 3 : 60 : 57 : 0.03
+T: 3 3 : 60 : 60 : 0.09
+T: 3 3 : 60 : 61 : 0.18
+T: 3 3 : 60 : 66 : 0.06
+T: 3 3 : 60 : 69 : 0.18
+T: 3 3 : 60 : 70 : 0.36
+T: 3 4 : 60 : 33 : 0.1
+T: 3 4 : 60 : 60 : 0.3
+T: 3 4 : 60 : 69 : 0.6
+T: 4 0 : 60 : 57 : 0.6
+T: 4 0 : 60 : 60 : 0.3
+T: 4 0 : 60 : 61 : 0.1
+T: 4 1 : 60 : 57 : 0.1
+T: 4 1 : 60 : 60 : 0.8
+T: 4 1 : 60 : 61 : 0.1
+T: 4 2 : 60 : 57 : 0.1
+T: 4 2 : 60 : 60 : 0.8
+T: 4 2 : 60 : 61 : 0.1
+T: 4 3 : 60 : 57 : 0.1
+T: 4 3 : 60 : 60 : 0.3
+T: 4 3 : 60 : 61 : 0.6
+T: 4 4 : 60 : 60 : 1.0
+T: 0 0 : 61 : 31 : 0.36
+T: 0 0 : 61 : 33 : 0.06
+T: 0 0 : 61 : 34 : 0.12
+T: 0 0 : 61 : 35 : 0.06
+T: 0 0 : 61 : 58 : 0.18
+T: 0 0 : 61 : 60 : 0.03
+T: 0 0 : 61 : 61 : 0.060
+T: 0 0 : 61 : 62 : 0.03
+T: 0 0 : 61 : 67 : 0.06
+T: 0 0 : 61 : 69 : 0.01
+T: 0 0 : 61 : 70 : 0.02
+T: 0 0 : 61 : 71 : 0.01
+T: 0 1 : 61 : 31 : 0.06
+T: 0 1 : 61 : 33 : 0.06
+T: 0 1 : 61 : 34 : 0.42
+T: 0 1 : 61 : 35 : 0.06
+T: 0 1 : 61 : 58 : 0.03
+T: 0 1 : 61 : 60 : 0.03
+T: 0 1 : 61 : 61 : 0.21
+T: 0 1 : 61 : 62 : 0.03
+T: 0 1 : 61 : 67 : 0.01
+T: 0 1 : 61 : 69 : 0.01
+T: 0 1 : 61 : 70 : 0.07
+T: 0 1 : 61 : 71 : 0.01
+T: 0 2 : 61 : 31 : 0.06
+T: 0 2 : 61 : 33 : 0.36
+T: 0 2 : 61 : 34 : 0.12
+T: 0 2 : 61 : 35 : 0.06
+T: 0 2 : 61 : 58 : 0.03
+T: 0 2 : 61 : 60 : 0.18
+T: 0 2 : 61 : 61 : 0.060
+T: 0 2 : 61 : 62 : 0.03
+T: 0 2 : 61 : 67 : 0.01
+T: 0 2 : 61 : 69 : 0.06
+T: 0 2 : 61 : 70 : 0.02
+T: 0 2 : 61 : 71 : 0.01
+T: 0 3 : 61 : 31 : 0.06
+T: 0 3 : 61 : 33 : 0.06
+T: 0 3 : 61 : 34 : 0.12
+T: 0 3 : 61 : 35 : 0.36
+T: 0 3 : 61 : 58 : 0.03
+T: 0 3 : 61 : 60 : 0.03
+T: 0 3 : 61 : 61 : 0.060
+T: 0 3 : 61 : 62 : 0.18
+T: 0 3 : 61 : 67 : 0.01
+T: 0 3 : 61 : 69 : 0.01
+T: 0 3 : 61 : 70 : 0.02
+T: 0 3 : 61 : 71 : 0.06
+T: 0 4 : 61 : 34 : 0.6
+T: 0 4 : 61 : 61 : 0.3
+T: 0 4 : 61 : 70 : 0.1
+T: 1 0 : 61 : 31 : 0.06
+T: 1 0 : 61 : 33 : 0.01
+T: 1 0 : 61 : 34 : 0.02
+T: 1 0 : 61 : 35 : 0.01
+T: 1 0 : 61 : 58 : 0.48
+T: 1 0 : 61 : 60 : 0.08
+T: 1 0 : 61 : 61 : 0.16
+T: 1 0 : 61 : 62 : 0.08
+T: 1 0 : 61 : 67 : 0.06
+T: 1 0 : 61 : 69 : 0.01
+T: 1 0 : 61 : 70 : 0.02
+T: 1 0 : 61 : 71 : 0.01
+T: 1 1 : 61 : 31 : 0.01
+T: 1 1 : 61 : 33 : 0.01
+T: 1 1 : 61 : 34 : 0.07
+T: 1 1 : 61 : 35 : 0.01
+T: 1 1 : 61 : 58 : 0.08
+T: 1 1 : 61 : 60 : 0.08
+T: 1 1 : 61 : 61 : 0.56
+T: 1 1 : 61 : 62 : 0.08
+T: 1 1 : 61 : 67 : 0.01
+T: 1 1 : 61 : 69 : 0.01
+T: 1 1 : 61 : 70 : 0.07
+T: 1 1 : 61 : 71 : 0.01
+T: 1 2 : 61 : 31 : 0.01
+T: 1 2 : 61 : 33 : 0.06
+T: 1 2 : 61 : 34 : 0.02
+T: 1 2 : 61 : 35 : 0.01
+T: 1 2 : 61 : 58 : 0.08
+T: 1 2 : 61 : 60 : 0.48
+T: 1 2 : 61 : 61 : 0.16
+T: 1 2 : 61 : 62 : 0.08
+T: 1 2 : 61 : 67 : 0.01
+T: 1 2 : 61 : 69 : 0.06
+T: 1 2 : 61 : 70 : 0.02
+T: 1 2 : 61 : 71 : 0.01
+T: 1 3 : 61 : 31 : 0.01
+T: 1 3 : 61 : 33 : 0.01
+T: 1 3 : 61 : 34 : 0.02
+T: 1 3 : 61 : 35 : 0.06
+T: 1 3 : 61 : 58 : 0.08
+T: 1 3 : 61 : 60 : 0.08
+T: 1 3 : 61 : 61 : 0.16
+T: 1 3 : 61 : 62 : 0.48
+T: 1 3 : 61 : 67 : 0.01
+T: 1 3 : 61 : 69 : 0.01
+T: 1 3 : 61 : 70 : 0.02
+T: 1 3 : 61 : 71 : 0.06
+T: 1 4 : 61 : 34 : 0.1
+T: 1 4 : 61 : 61 : 0.8
+T: 1 4 : 61 : 70 : 0.1
+T: 2 0 : 61 : 31 : 0.06
+T: 2 0 : 61 : 33 : 0.01
+T: 2 0 : 61 : 34 : 0.02
+T: 2 0 : 61 : 35 : 0.01
+T: 2 0 : 61 : 58 : 0.48
+T: 2 0 : 61 : 60 : 0.08
+T: 2 0 : 61 : 61 : 0.16
+T: 2 0 : 61 : 62 : 0.08
+T: 2 0 : 61 : 67 : 0.06
+T: 2 0 : 61 : 69 : 0.01
+T: 2 0 : 61 : 70 : 0.02
+T: 2 0 : 61 : 71 : 0.01
+T: 2 1 : 61 : 31 : 0.01
+T: 2 1 : 61 : 33 : 0.01
+T: 2 1 : 61 : 34 : 0.07
+T: 2 1 : 61 : 35 : 0.01
+T: 2 1 : 61 : 58 : 0.08
+T: 2 1 : 61 : 60 : 0.08
+T: 2 1 : 61 : 61 : 0.56
+T: 2 1 : 61 : 62 : 0.08
+T: 2 1 : 61 : 67 : 0.01
+T: 2 1 : 61 : 69 : 0.01
+T: 2 1 : 61 : 70 : 0.07
+T: 2 1 : 61 : 71 : 0.01
+T: 2 2 : 61 : 31 : 0.01
+T: 2 2 : 61 : 33 : 0.06
+T: 2 2 : 61 : 34 : 0.02
+T: 2 2 : 61 : 35 : 0.01
+T: 2 2 : 61 : 58 : 0.08
+T: 2 2 : 61 : 60 : 0.48
+T: 2 2 : 61 : 61 : 0.16
+T: 2 2 : 61 : 62 : 0.08
+T: 2 2 : 61 : 67 : 0.01
+T: 2 2 : 61 : 69 : 0.06
+T: 2 2 : 61 : 70 : 0.02
+T: 2 2 : 61 : 71 : 0.01
+T: 2 3 : 61 : 31 : 0.01
+T: 2 3 : 61 : 33 : 0.01
+T: 2 3 : 61 : 34 : 0.02
+T: 2 3 : 61 : 35 : 0.06
+T: 2 3 : 61 : 58 : 0.08
+T: 2 3 : 61 : 60 : 0.08
+T: 2 3 : 61 : 61 : 0.16
+T: 2 3 : 61 : 62 : 0.48
+T: 2 3 : 61 : 67 : 0.01
+T: 2 3 : 61 : 69 : 0.01
+T: 2 3 : 61 : 70 : 0.02
+T: 2 3 : 61 : 71 : 0.06
+T: 2 4 : 61 : 34 : 0.1
+T: 2 4 : 61 : 61 : 0.8
+T: 2 4 : 61 : 70 : 0.1
+T: 3 0 : 61 : 31 : 0.06
+T: 3 0 : 61 : 33 : 0.01
+T: 3 0 : 61 : 34 : 0.02
+T: 3 0 : 61 : 35 : 0.01
+T: 3 0 : 61 : 58 : 0.18
+T: 3 0 : 61 : 60 : 0.03
+T: 3 0 : 61 : 61 : 0.060
+T: 3 0 : 61 : 62 : 0.03
+T: 3 0 : 61 : 67 : 0.36
+T: 3 0 : 61 : 69 : 0.06
+T: 3 0 : 61 : 70 : 0.12
+T: 3 0 : 61 : 71 : 0.06
+T: 3 1 : 61 : 31 : 0.01
+T: 3 1 : 61 : 33 : 0.01
+T: 3 1 : 61 : 34 : 0.07
+T: 3 1 : 61 : 35 : 0.01
+T: 3 1 : 61 : 58 : 0.03
+T: 3 1 : 61 : 60 : 0.03
+T: 3 1 : 61 : 61 : 0.21
+T: 3 1 : 61 : 62 : 0.03
+T: 3 1 : 61 : 67 : 0.06
+T: 3 1 : 61 : 69 : 0.06
+T: 3 1 : 61 : 70 : 0.42
+T: 3 1 : 61 : 71 : 0.06
+T: 3 2 : 61 : 31 : 0.01
+T: 3 2 : 61 : 33 : 0.06
+T: 3 2 : 61 : 34 : 0.02
+T: 3 2 : 61 : 35 : 0.01
+T: 3 2 : 61 : 58 : 0.03
+T: 3 2 : 61 : 60 : 0.18
+T: 3 2 : 61 : 61 : 0.060
+T: 3 2 : 61 : 62 : 0.03
+T: 3 2 : 61 : 67 : 0.06
+T: 3 2 : 61 : 69 : 0.36
+T: 3 2 : 61 : 70 : 0.12
+T: 3 2 : 61 : 71 : 0.06
+T: 3 3 : 61 : 31 : 0.01
+T: 3 3 : 61 : 33 : 0.01
+T: 3 3 : 61 : 34 : 0.02
+T: 3 3 : 61 : 35 : 0.06
+T: 3 3 : 61 : 58 : 0.03
+T: 3 3 : 61 : 60 : 0.03
+T: 3 3 : 61 : 61 : 0.060
+T: 3 3 : 61 : 62 : 0.18
+T: 3 3 : 61 : 67 : 0.06
+T: 3 3 : 61 : 69 : 0.06
+T: 3 3 : 61 : 70 : 0.12
+T: 3 3 : 61 : 71 : 0.36
+T: 3 4 : 61 : 34 : 0.1
+T: 3 4 : 61 : 61 : 0.3
+T: 3 4 : 61 : 70 : 0.6
+T: 4 0 : 61 : 58 : 0.6
+T: 4 0 : 61 : 60 : 0.1
+T: 4 0 : 61 : 61 : 0.2
+T: 4 0 : 61 : 62 : 0.1
+T: 4 1 : 61 : 58 : 0.1
+T: 4 1 : 61 : 60 : 0.1
+T: 4 1 : 61 : 61 : 0.7
+T: 4 1 : 61 : 62 : 0.1
+T: 4 2 : 61 : 58 : 0.1
+T: 4 2 : 61 : 60 : 0.6
+T: 4 2 : 61 : 61 : 0.2
+T: 4 2 : 61 : 62 : 0.1
+T: 4 3 : 61 : 58 : 0.1
+T: 4 3 : 61 : 60 : 0.1
+T: 4 3 : 61 : 61 : 0.2
+T: 4 3 : 61 : 62 : 0.6
+T: 4 4 : 61 : 61 : 1.0
+T: 0 0 : 62 : 32 : 0.36
+T: 0 0 : 62 : 34 : 0.06
+T: 0 0 : 62 : 35 : 0.18
+T: 0 0 : 62 : 59 : 0.18
+T: 0 0 : 62 : 61 : 0.03
+T: 0 0 : 62 : 62 : 0.09
+T: 0 0 : 62 : 68 : 0.06
+T: 0 0 : 62 : 70 : 0.01
+T: 0 0 : 62 : 71 : 0.03
+T: 0 1 : 62 : 32 : 0.06
+T: 0 1 : 62 : 34 : 0.06
+T: 0 1 : 62 : 35 : 0.48
+T: 0 1 : 62 : 59 : 0.03
+T: 0 1 : 62 : 61 : 0.03
+T: 0 1 : 62 : 62 : 0.24
+T: 0 1 : 62 : 68 : 0.01
+T: 0 1 : 62 : 70 : 0.01
+T: 0 1 : 62 : 71 : 0.08
+T: 0 2 : 62 : 32 : 0.06
+T: 0 2 : 62 : 34 : 0.36
+T: 0 2 : 62 : 35 : 0.18
+T: 0 2 : 62 : 59 : 0.03
+T: 0 2 : 62 : 61 : 0.18
+T: 0 2 : 62 : 62 : 0.09
+T: 0 2 : 62 : 68 : 0.01
+T: 0 2 : 62 : 70 : 0.06
+T: 0 2 : 62 : 71 : 0.03
+T: 0 3 : 62 : 32 : 0.06
+T: 0 3 : 62 : 34 : 0.06
+T: 0 3 : 62 : 35 : 0.48
+T: 0 3 : 62 : 59 : 0.03
+T: 0 3 : 62 : 61 : 0.03
+T: 0 3 : 62 : 62 : 0.24
+T: 0 3 : 62 : 68 : 0.01
+T: 0 3 : 62 : 70 : 0.01
+T: 0 3 : 62 : 71 : 0.08
+T: 0 4 : 62 : 35 : 0.6
+T: 0 4 : 62 : 62 : 0.3
+T: 0 4 : 62 : 71 : 0.1
+T: 1 0 : 62 : 32 : 0.06
+T: 1 0 : 62 : 34 : 0.01
+T: 1 0 : 62 : 35 : 0.03
+T: 1 0 : 62 : 59 : 0.48
+T: 1 0 : 62 : 61 : 0.08
+T: 1 0 : 62 : 62 : 0.24
+T: 1 0 : 62 : 68 : 0.06
+T: 1 0 : 62 : 70 : 0.01
+T: 1 0 : 62 : 71 : 0.03
+T: 1 1 : 62 : 32 : 0.01
+T: 1 1 : 62 : 34 : 0.01
+T: 1 1 : 62 : 35 : 0.08
+T: 1 1 : 62 : 59 : 0.08
+T: 1 1 : 62 : 61 : 0.08
+T: 1 1 : 62 : 62 : 0.64
+T: 1 1 : 62 : 68 : 0.01
+T: 1 1 : 62 : 70 : 0.01
+T: 1 1 : 62 : 71 : 0.08
+T: 1 2 : 62 : 32 : 0.01
+T: 1 2 : 62 : 34 : 0.06
+T: 1 2 : 62 : 35 : 0.03
+T: 1 2 : 62 : 59 : 0.08
+T: 1 2 : 62 : 61 : 0.48
+T: 1 2 : 62 : 62 : 0.24
+T: 1 2 : 62 : 68 : 0.01
+T: 1 2 : 62 : 70 : 0.06
+T: 1 2 : 62 : 71 : 0.03
+T: 1 3 : 62 : 32 : 0.01
+T: 1 3 : 62 : 34 : 0.01
+T: 1 3 : 62 : 35 : 0.08
+T: 1 3 : 62 : 59 : 0.08
+T: 1 3 : 62 : 61 : 0.08
+T: 1 3 : 62 : 62 : 0.64
+T: 1 3 : 62 : 68 : 0.01
+T: 1 3 : 62 : 70 : 0.01
+T: 1 3 : 62 : 71 : 0.08
+T: 1 4 : 62 : 35 : 0.1
+T: 1 4 : 62 : 62 : 0.8
+T: 1 4 : 62 : 71 : 0.1
+T: 2 0 : 62 : 32 : 0.06
+T: 2 0 : 62 : 34 : 0.01
+T: 2 0 : 62 : 35 : 0.03
+T: 2 0 : 62 : 59 : 0.48
+T: 2 0 : 62 : 61 : 0.08
+T: 2 0 : 62 : 62 : 0.24
+T: 2 0 : 62 : 68 : 0.06
+T: 2 0 : 62 : 70 : 0.01
+T: 2 0 : 62 : 71 : 0.03
+T: 2 1 : 62 : 32 : 0.01
+T: 2 1 : 62 : 34 : 0.01
+T: 2 1 : 62 : 35 : 0.08
+T: 2 1 : 62 : 59 : 0.08
+T: 2 1 : 62 : 61 : 0.08
+T: 2 1 : 62 : 62 : 0.64
+T: 2 1 : 62 : 68 : 0.01
+T: 2 1 : 62 : 70 : 0.01
+T: 2 1 : 62 : 71 : 0.08
+T: 2 2 : 62 : 32 : 0.01
+T: 2 2 : 62 : 34 : 0.06
+T: 2 2 : 62 : 35 : 0.03
+T: 2 2 : 62 : 59 : 0.08
+T: 2 2 : 62 : 61 : 0.48
+T: 2 2 : 62 : 62 : 0.24
+T: 2 2 : 62 : 68 : 0.01
+T: 2 2 : 62 : 70 : 0.06
+T: 2 2 : 62 : 71 : 0.03
+T: 2 3 : 62 : 32 : 0.01
+T: 2 3 : 62 : 34 : 0.01
+T: 2 3 : 62 : 35 : 0.08
+T: 2 3 : 62 : 59 : 0.08
+T: 2 3 : 62 : 61 : 0.08
+T: 2 3 : 62 : 62 : 0.64
+T: 2 3 : 62 : 68 : 0.01
+T: 2 3 : 62 : 70 : 0.01
+T: 2 3 : 62 : 71 : 0.08
+T: 2 4 : 62 : 35 : 0.1
+T: 2 4 : 62 : 62 : 0.8
+T: 2 4 : 62 : 71 : 0.1
+T: 3 0 : 62 : 32 : 0.06
+T: 3 0 : 62 : 34 : 0.01
+T: 3 0 : 62 : 35 : 0.03
+T: 3 0 : 62 : 59 : 0.18
+T: 3 0 : 62 : 61 : 0.03
+T: 3 0 : 62 : 62 : 0.09
+T: 3 0 : 62 : 68 : 0.36
+T: 3 0 : 62 : 70 : 0.06
+T: 3 0 : 62 : 71 : 0.18
+T: 3 1 : 62 : 32 : 0.01
+T: 3 1 : 62 : 34 : 0.01
+T: 3 1 : 62 : 35 : 0.08
+T: 3 1 : 62 : 59 : 0.03
+T: 3 1 : 62 : 61 : 0.03
+T: 3 1 : 62 : 62 : 0.24
+T: 3 1 : 62 : 68 : 0.06
+T: 3 1 : 62 : 70 : 0.06
+T: 3 1 : 62 : 71 : 0.48
+T: 3 2 : 62 : 32 : 0.01
+T: 3 2 : 62 : 34 : 0.06
+T: 3 2 : 62 : 35 : 0.03
+T: 3 2 : 62 : 59 : 0.03
+T: 3 2 : 62 : 61 : 0.18
+T: 3 2 : 62 : 62 : 0.09
+T: 3 2 : 62 : 68 : 0.06
+T: 3 2 : 62 : 70 : 0.36
+T: 3 2 : 62 : 71 : 0.18
+T: 3 3 : 62 : 32 : 0.01
+T: 3 3 : 62 : 34 : 0.01
+T: 3 3 : 62 : 35 : 0.08
+T: 3 3 : 62 : 59 : 0.03
+T: 3 3 : 62 : 61 : 0.03
+T: 3 3 : 62 : 62 : 0.24
+T: 3 3 : 62 : 68 : 0.06
+T: 3 3 : 62 : 70 : 0.06
+T: 3 3 : 62 : 71 : 0.48
+T: 3 4 : 62 : 35 : 0.1
+T: 3 4 : 62 : 62 : 0.3
+T: 3 4 : 62 : 71 : 0.6
+T: 4 0 : 62 : 59 : 0.6
+T: 4 0 : 62 : 61 : 0.1
+T: 4 0 : 62 : 62 : 0.3
+T: 4 1 : 62 : 59 : 0.1
+T: 4 1 : 62 : 61 : 0.1
+T: 4 1 : 62 : 62 : 0.8
+T: 4 2 : 62 : 59 : 0.1
+T: 4 2 : 62 : 61 : 0.6
+T: 4 2 : 62 : 62 : 0.3
+T: 4 3 : 62 : 59 : 0.1
+T: 4 3 : 62 : 61 : 0.1
+T: 4 3 : 62 : 62 : 0.8
+T: 4 4 : 62 : 62 : 1.0
+T: 0 0 : 63 : 36 : 0.48
+T: 0 0 : 63 : 37 : 0.06
+T: 0 0 : 63 : 39 : 0.06
+T: 0 0 : 63 : 54 : 0.08
+T: 0 0 : 63 : 55 : 0.01
+T: 0 0 : 63 : 57 : 0.01
+T: 0 0 : 63 : 63 : 0.16
+T: 0 0 : 63 : 64 : 0.02
+T: 0 0 : 63 : 66 : 0.02
+T: 0 0 : 63 : 72 : 0.08
+T: 0 0 : 63 : 73 : 0.01
+T: 0 0 : 63 : 75 : 0.01
+T: 0 1 : 63 : 36 : 0.18
+T: 0 1 : 63 : 37 : 0.06
+T: 0 1 : 63 : 39 : 0.36
+T: 0 1 : 63 : 54 : 0.03
+T: 0 1 : 63 : 55 : 0.01
+T: 0 1 : 63 : 57 : 0.06
+T: 0 1 : 63 : 63 : 0.060
+T: 0 1 : 63 : 64 : 0.02
+T: 0 1 : 63 : 66 : 0.12
+T: 0 1 : 63 : 72 : 0.03
+T: 0 1 : 63 : 73 : 0.01
+T: 0 1 : 63 : 75 : 0.06
+T: 0 2 : 63 : 36 : 0.48
+T: 0 2 : 63 : 37 : 0.06
+T: 0 2 : 63 : 39 : 0.06
+T: 0 2 : 63 : 54 : 0.08
+T: 0 2 : 63 : 55 : 0.01
+T: 0 2 : 63 : 57 : 0.01
+T: 0 2 : 63 : 63 : 0.16
+T: 0 2 : 63 : 64 : 0.02
+T: 0 2 : 63 : 66 : 0.02
+T: 0 2 : 63 : 72 : 0.08
+T: 0 2 : 63 : 73 : 0.01
+T: 0 2 : 63 : 75 : 0.01
+T: 0 3 : 63 : 36 : 0.18
+T: 0 3 : 63 : 37 : 0.36
+T: 0 3 : 63 : 39 : 0.06
+T: 0 3 : 63 : 54 : 0.03
+T: 0 3 : 63 : 55 : 0.06
+T: 0 3 : 63 : 57 : 0.01
+T: 0 3 : 63 : 63 : 0.060
+T: 0 3 : 63 : 64 : 0.12
+T: 0 3 : 63 : 66 : 0.02
+T: 0 3 : 63 : 72 : 0.03
+T: 0 3 : 63 : 73 : 0.06
+T: 0 3 : 63 : 75 : 0.01
+T: 0 4 : 63 : 36 : 0.6
+T: 0 4 : 63 : 54 : 0.1
+T: 0 4 : 63 : 63 : 0.2
+T: 0 4 : 63 : 72 : 0.1
+T: 1 0 : 63 : 36 : 0.08
+T: 1 0 : 63 : 37 : 0.01
+T: 1 0 : 63 : 39 : 0.01
+T: 1 0 : 63 : 54 : 0.08
+T: 1 0 : 63 : 55 : 0.01
+T: 1 0 : 63 : 57 : 0.01
+T: 1 0 : 63 : 63 : 0.56
+T: 1 0 : 63 : 64 : 0.07
+T: 1 0 : 63 : 66 : 0.07
+T: 1 0 : 63 : 72 : 0.08
+T: 1 0 : 63 : 73 : 0.01
+T: 1 0 : 63 : 75 : 0.01
+T: 1 1 : 63 : 36 : 0.03
+T: 1 1 : 63 : 37 : 0.01
+T: 1 1 : 63 : 39 : 0.06
+T: 1 1 : 63 : 54 : 0.03
+T: 1 1 : 63 : 55 : 0.01
+T: 1 1 : 63 : 57 : 0.06
+T: 1 1 : 63 : 63 : 0.21
+T: 1 1 : 63 : 64 : 0.07
+T: 1 1 : 63 : 66 : 0.42
+T: 1 1 : 63 : 72 : 0.03
+T: 1 1 : 63 : 73 : 0.01
+T: 1 1 : 63 : 75 : 0.06
+T: 1 2 : 63 : 36 : 0.08
+T: 1 2 : 63 : 37 : 0.01
+T: 1 2 : 63 : 39 : 0.01
+T: 1 2 : 63 : 54 : 0.08
+T: 1 2 : 63 : 55 : 0.01
+T: 1 2 : 63 : 57 : 0.01
+T: 1 2 : 63 : 63 : 0.56
+T: 1 2 : 63 : 64 : 0.07
+T: 1 2 : 63 : 66 : 0.07
+T: 1 2 : 63 : 72 : 0.08
+T: 1 2 : 63 : 73 : 0.01
+T: 1 2 : 63 : 75 : 0.01
+T: 1 3 : 63 : 36 : 0.03
+T: 1 3 : 63 : 37 : 0.06
+T: 1 3 : 63 : 39 : 0.01
+T: 1 3 : 63 : 54 : 0.03
+T: 1 3 : 63 : 55 : 0.06
+T: 1 3 : 63 : 57 : 0.01
+T: 1 3 : 63 : 63 : 0.21
+T: 1 3 : 63 : 64 : 0.42
+T: 1 3 : 63 : 66 : 0.07
+T: 1 3 : 63 : 72 : 0.03
+T: 1 3 : 63 : 73 : 0.06
+T: 1 3 : 63 : 75 : 0.01
+T: 1 4 : 63 : 36 : 0.1
+T: 1 4 : 63 : 54 : 0.1
+T: 1 4 : 63 : 63 : 0.7
+T: 1 4 : 63 : 72 : 0.1
+T: 2 0 : 63 : 36 : 0.08
+T: 2 0 : 63 : 37 : 0.01
+T: 2 0 : 63 : 39 : 0.01
+T: 2 0 : 63 : 54 : 0.48
+T: 2 0 : 63 : 55 : 0.06
+T: 2 0 : 63 : 57 : 0.06
+T: 2 0 : 63 : 63 : 0.16
+T: 2 0 : 63 : 64 : 0.02
+T: 2 0 : 63 : 66 : 0.02
+T: 2 0 : 63 : 72 : 0.08
+T: 2 0 : 63 : 73 : 0.01
+T: 2 0 : 63 : 75 : 0.01
+T: 2 1 : 63 : 36 : 0.03
+T: 2 1 : 63 : 37 : 0.01
+T: 2 1 : 63 : 39 : 0.06
+T: 2 1 : 63 : 54 : 0.18
+T: 2 1 : 63 : 55 : 0.06
+T: 2 1 : 63 : 57 : 0.36
+T: 2 1 : 63 : 63 : 0.060
+T: 2 1 : 63 : 64 : 0.02
+T: 2 1 : 63 : 66 : 0.12
+T: 2 1 : 63 : 72 : 0.03
+T: 2 1 : 63 : 73 : 0.01
+T: 2 1 : 63 : 75 : 0.06
+T: 2 2 : 63 : 36 : 0.08
+T: 2 2 : 63 : 37 : 0.01
+T: 2 2 : 63 : 39 : 0.01
+T: 2 2 : 63 : 54 : 0.48
+T: 2 2 : 63 : 55 : 0.06
+T: 2 2 : 63 : 57 : 0.06
+T: 2 2 : 63 : 63 : 0.16
+T: 2 2 : 63 : 64 : 0.02
+T: 2 2 : 63 : 66 : 0.02
+T: 2 2 : 63 : 72 : 0.08
+T: 2 2 : 63 : 73 : 0.01
+T: 2 2 : 63 : 75 : 0.01
+T: 2 3 : 63 : 36 : 0.03
+T: 2 3 : 63 : 37 : 0.06
+T: 2 3 : 63 : 39 : 0.01
+T: 2 3 : 63 : 54 : 0.18
+T: 2 3 : 63 : 55 : 0.36
+T: 2 3 : 63 : 57 : 0.06
+T: 2 3 : 63 : 63 : 0.060
+T: 2 3 : 63 : 64 : 0.12
+T: 2 3 : 63 : 66 : 0.02
+T: 2 3 : 63 : 72 : 0.03
+T: 2 3 : 63 : 73 : 0.06
+T: 2 3 : 63 : 75 : 0.01
+T: 2 4 : 63 : 36 : 0.1
+T: 2 4 : 63 : 54 : 0.6
+T: 2 4 : 63 : 63 : 0.2
+T: 2 4 : 63 : 72 : 0.1
+T: 3 0 : 63 : 36 : 0.08
+T: 3 0 : 63 : 37 : 0.01
+T: 3 0 : 63 : 39 : 0.01
+T: 3 0 : 63 : 54 : 0.08
+T: 3 0 : 63 : 55 : 0.01
+T: 3 0 : 63 : 57 : 0.01
+T: 3 0 : 63 : 63 : 0.16
+T: 3 0 : 63 : 64 : 0.02
+T: 3 0 : 63 : 66 : 0.02
+T: 3 0 : 63 : 72 : 0.48
+T: 3 0 : 63 : 73 : 0.06
+T: 3 0 : 63 : 75 : 0.06
+T: 3 1 : 63 : 36 : 0.03
+T: 3 1 : 63 : 37 : 0.01
+T: 3 1 : 63 : 39 : 0.06
+T: 3 1 : 63 : 54 : 0.03
+T: 3 1 : 63 : 55 : 0.01
+T: 3 1 : 63 : 57 : 0.06
+T: 3 1 : 63 : 63 : 0.060
+T: 3 1 : 63 : 64 : 0.02
+T: 3 1 : 63 : 66 : 0.12
+T: 3 1 : 63 : 72 : 0.18
+T: 3 1 : 63 : 73 : 0.06
+T: 3 1 : 63 : 75 : 0.36
+T: 3 2 : 63 : 36 : 0.08
+T: 3 2 : 63 : 37 : 0.01
+T: 3 2 : 63 : 39 : 0.01
+T: 3 2 : 63 : 54 : 0.08
+T: 3 2 : 63 : 55 : 0.01
+T: 3 2 : 63 : 57 : 0.01
+T: 3 2 : 63 : 63 : 0.16
+T: 3 2 : 63 : 64 : 0.02
+T: 3 2 : 63 : 66 : 0.02
+T: 3 2 : 63 : 72 : 0.48
+T: 3 2 : 63 : 73 : 0.06
+T: 3 2 : 63 : 75 : 0.06
+T: 3 3 : 63 : 36 : 0.03
+T: 3 3 : 63 : 37 : 0.06
+T: 3 3 : 63 : 39 : 0.01
+T: 3 3 : 63 : 54 : 0.03
+T: 3 3 : 63 : 55 : 0.06
+T: 3 3 : 63 : 57 : 0.01
+T: 3 3 : 63 : 63 : 0.060
+T: 3 3 : 63 : 64 : 0.12
+T: 3 3 : 63 : 66 : 0.02
+T: 3 3 : 63 : 72 : 0.18
+T: 3 3 : 63 : 73 : 0.36
+T: 3 3 : 63 : 75 : 0.06
+T: 3 4 : 63 : 36 : 0.1
+T: 3 4 : 63 : 54 : 0.1
+T: 3 4 : 63 : 63 : 0.2
+T: 3 4 : 63 : 72 : 0.6
+T: 4 0 : 63 : 63 : 0.8
+T: 4 0 : 63 : 64 : 0.1
+T: 4 0 : 63 : 66 : 0.1
+T: 4 1 : 63 : 63 : 0.3
+T: 4 1 : 63 : 64 : 0.1
+T: 4 1 : 63 : 66 : 0.6
+T: 4 2 : 63 : 63 : 0.8
+T: 4 2 : 63 : 64 : 0.1
+T: 4 2 : 63 : 66 : 0.1
+T: 4 3 : 63 : 63 : 0.3
+T: 4 3 : 63 : 64 : 0.6
+T: 4 3 : 63 : 66 : 0.1
+T: 4 4 : 63 : 63 : 1.0
+T: 0 0 : 64 : 36 : 0.06
+T: 0 0 : 64 : 37 : 0.42
+T: 0 0 : 64 : 38 : 0.06
+T: 0 0 : 64 : 40 : 0.06
+T: 0 0 : 64 : 54 : 0.01
+T: 0 0 : 64 : 55 : 0.07
+T: 0 0 : 64 : 56 : 0.01
+T: 0 0 : 64 : 58 : 0.01
+T: 0 0 : 64 : 63 : 0.02
+T: 0 0 : 64 : 64 : 0.14
+T: 0 0 : 64 : 65 : 0.02
+T: 0 0 : 64 : 67 : 0.02
+T: 0 0 : 64 : 72 : 0.01
+T: 0 0 : 64 : 73 : 0.07
+T: 0 0 : 64 : 74 : 0.01
+T: 0 0 : 64 : 76 : 0.01
+T: 0 1 : 64 : 36 : 0.06
+T: 0 1 : 64 : 37 : 0.12
+T: 0 1 : 64 : 38 : 0.06
+T: 0 1 : 64 : 40 : 0.36
+T: 0 1 : 64 : 54 : 0.01
+T: 0 1 : 64 : 55 : 0.02
+T: 0 1 : 64 : 56 : 0.01
+T: 0 1 : 64 : 58 : 0.06
+T: 0 1 : 64 : 63 : 0.02
+T: 0 1 : 64 : 64 : 0.040
+T: 0 1 : 64 : 65 : 0.02
+T: 0 1 : 64 : 67 : 0.12
+T: 0 1 : 64 : 72 : 0.01
+T: 0 1 : 64 : 73 : 0.02
+T: 0 1 : 64 : 74 : 0.01
+T: 0 1 : 64 : 76 : 0.06
+T: 0 2 : 64 : 36 : 0.36
+T: 0 2 : 64 : 37 : 0.12
+T: 0 2 : 64 : 38 : 0.06
+T: 0 2 : 64 : 40 : 0.06
+T: 0 2 : 64 : 54 : 0.06
+T: 0 2 : 64 : 55 : 0.02
+T: 0 2 : 64 : 56 : 0.01
+T: 0 2 : 64 : 58 : 0.01
+T: 0 2 : 64 : 63 : 0.12
+T: 0 2 : 64 : 64 : 0.040
+T: 0 2 : 64 : 65 : 0.02
+T: 0 2 : 64 : 67 : 0.02
+T: 0 2 : 64 : 72 : 0.06
+T: 0 2 : 64 : 73 : 0.02
+T: 0 2 : 64 : 74 : 0.01
+T: 0 2 : 64 : 76 : 0.01
+T: 0 3 : 64 : 36 : 0.06
+T: 0 3 : 64 : 37 : 0.12
+T: 0 3 : 64 : 38 : 0.36
+T: 0 3 : 64 : 40 : 0.06
+T: 0 3 : 64 : 54 : 0.01
+T: 0 3 : 64 : 55 : 0.02
+T: 0 3 : 64 : 56 : 0.06
+T: 0 3 : 64 : 58 : 0.01
+T: 0 3 : 64 : 63 : 0.02
+T: 0 3 : 64 : 64 : 0.040
+T: 0 3 : 64 : 65 : 0.12
+T: 0 3 : 64 : 67 : 0.02
+T: 0 3 : 64 : 72 : 0.01
+T: 0 3 : 64 : 73 : 0.02
+T: 0 3 : 64 : 74 : 0.06
+T: 0 3 : 64 : 76 : 0.01
+T: 0 4 : 64 : 37 : 0.6
+T: 0 4 : 64 : 55 : 0.1
+T: 0 4 : 64 : 64 : 0.2
+T: 0 4 : 64 : 73 : 0.1
+T: 1 0 : 64 : 36 : 0.01
+T: 1 0 : 64 : 37 : 0.07
+T: 1 0 : 64 : 38 : 0.01
+T: 1 0 : 64 : 40 : 0.01
+T: 1 0 : 64 : 54 : 0.01
+T: 1 0 : 64 : 55 : 0.07
+T: 1 0 : 64 : 56 : 0.01
+T: 1 0 : 64 : 58 : 0.01
+T: 1 0 : 64 : 63 : 0.07
+T: 1 0 : 64 : 64 : 0.49
+T: 1 0 : 64 : 65 : 0.07
+T: 1 0 : 64 : 67 : 0.07
+T: 1 0 : 64 : 72 : 0.01
+T: 1 0 : 64 : 73 : 0.07
+T: 1 0 : 64 : 74 : 0.01
+T: 1 0 : 64 : 76 : 0.01
+T: 1 1 : 64 : 36 : 0.01
+T: 1 1 : 64 : 37 : 0.02
+T: 1 1 : 64 : 38 : 0.01
+T: 1 1 : 64 : 40 : 0.06
+T: 1 1 : 64 : 54 : 0.01
+T: 1 1 : 64 : 55 : 0.02
+T: 1 1 : 64 : 56 : 0.01
+T: 1 1 : 64 : 58 : 0.06
+T: 1 1 : 64 : 63 : 0.07
+T: 1 1 : 64 : 64 : 0.14
+T: 1 1 : 64 : 65 : 0.07
+T: 1 1 : 64 : 67 : 0.42
+T: 1 1 : 64 : 72 : 0.01
+T: 1 1 : 64 : 73 : 0.02
+T: 1 1 : 64 : 74 : 0.01
+T: 1 1 : 64 : 76 : 0.06
+T: 1 2 : 64 : 36 : 0.06
+T: 1 2 : 64 : 37 : 0.02
+T: 1 2 : 64 : 38 : 0.01
+T: 1 2 : 64 : 40 : 0.01
+T: 1 2 : 64 : 54 : 0.06
+T: 1 2 : 64 : 55 : 0.02
+T: 1 2 : 64 : 56 : 0.01
+T: 1 2 : 64 : 58 : 0.01
+T: 1 2 : 64 : 63 : 0.42
+T: 1 2 : 64 : 64 : 0.14
+T: 1 2 : 64 : 65 : 0.07
+T: 1 2 : 64 : 67 : 0.07
+T: 1 2 : 64 : 72 : 0.06
+T: 1 2 : 64 : 73 : 0.02
+T: 1 2 : 64 : 74 : 0.01
+T: 1 2 : 64 : 76 : 0.01
+T: 1 3 : 64 : 36 : 0.01
+T: 1 3 : 64 : 37 : 0.02
+T: 1 3 : 64 : 38 : 0.06
+T: 1 3 : 64 : 40 : 0.01
+T: 1 3 : 64 : 54 : 0.01
+T: 1 3 : 64 : 55 : 0.02
+T: 1 3 : 64 : 56 : 0.06
+T: 1 3 : 64 : 58 : 0.01
+T: 1 3 : 64 : 63 : 0.07
+T: 1 3 : 64 : 64 : 0.14
+T: 1 3 : 64 : 65 : 0.42
+T: 1 3 : 64 : 67 : 0.07
+T: 1 3 : 64 : 72 : 0.01
+T: 1 3 : 64 : 73 : 0.02
+T: 1 3 : 64 : 74 : 0.06
+T: 1 3 : 64 : 76 : 0.01
+T: 1 4 : 64 : 37 : 0.1
+T: 1 4 : 64 : 55 : 0.1
+T: 1 4 : 64 : 64 : 0.7
+T: 1 4 : 64 : 73 : 0.1
+T: 2 0 : 64 : 36 : 0.01
+T: 2 0 : 64 : 37 : 0.07
+T: 2 0 : 64 : 38 : 0.01
+T: 2 0 : 64 : 40 : 0.01
+T: 2 0 : 64 : 54 : 0.06
+T: 2 0 : 64 : 55 : 0.42
+T: 2 0 : 64 : 56 : 0.06
+T: 2 0 : 64 : 58 : 0.06
+T: 2 0 : 64 : 63 : 0.02
+T: 2 0 : 64 : 64 : 0.14
+T: 2 0 : 64 : 65 : 0.02
+T: 2 0 : 64 : 67 : 0.02
+T: 2 0 : 64 : 72 : 0.01
+T: 2 0 : 64 : 73 : 0.07
+T: 2 0 : 64 : 74 : 0.01
+T: 2 0 : 64 : 76 : 0.01
+T: 2 1 : 64 : 36 : 0.01
+T: 2 1 : 64 : 37 : 0.02
+T: 2 1 : 64 : 38 : 0.01
+T: 2 1 : 64 : 40 : 0.06
+T: 2 1 : 64 : 54 : 0.06
+T: 2 1 : 64 : 55 : 0.12
+T: 2 1 : 64 : 56 : 0.06
+T: 2 1 : 64 : 58 : 0.36
+T: 2 1 : 64 : 63 : 0.02
+T: 2 1 : 64 : 64 : 0.040
+T: 2 1 : 64 : 65 : 0.02
+T: 2 1 : 64 : 67 : 0.12
+T: 2 1 : 64 : 72 : 0.01
+T: 2 1 : 64 : 73 : 0.02
+T: 2 1 : 64 : 74 : 0.01
+T: 2 1 : 64 : 76 : 0.06
+T: 2 2 : 64 : 36 : 0.06
+T: 2 2 : 64 : 37 : 0.02
+T: 2 2 : 64 : 38 : 0.01
+T: 2 2 : 64 : 40 : 0.01
+T: 2 2 : 64 : 54 : 0.36
+T: 2 2 : 64 : 55 : 0.12
+T: 2 2 : 64 : 56 : 0.06
+T: 2 2 : 64 : 58 : 0.06
+T: 2 2 : 64 : 63 : 0.12
+T: 2 2 : 64 : 64 : 0.040
+T: 2 2 : 64 : 65 : 0.02
+T: 2 2 : 64 : 67 : 0.02
+T: 2 2 : 64 : 72 : 0.06
+T: 2 2 : 64 : 73 : 0.02
+T: 2 2 : 64 : 74 : 0.01
+T: 2 2 : 64 : 76 : 0.01
+T: 2 3 : 64 : 36 : 0.01
+T: 2 3 : 64 : 37 : 0.02
+T: 2 3 : 64 : 38 : 0.06
+T: 2 3 : 64 : 40 : 0.01
+T: 2 3 : 64 : 54 : 0.06
+T: 2 3 : 64 : 55 : 0.12
+T: 2 3 : 64 : 56 : 0.36
+T: 2 3 : 64 : 58 : 0.06
+T: 2 3 : 64 : 63 : 0.02
+T: 2 3 : 64 : 64 : 0.040
+T: 2 3 : 64 : 65 : 0.12
+T: 2 3 : 64 : 67 : 0.02
+T: 2 3 : 64 : 72 : 0.01
+T: 2 3 : 64 : 73 : 0.02
+T: 2 3 : 64 : 74 : 0.06
+T: 2 3 : 64 : 76 : 0.01
+T: 2 4 : 64 : 37 : 0.1
+T: 2 4 : 64 : 55 : 0.6
+T: 2 4 : 64 : 64 : 0.2
+T: 2 4 : 64 : 73 : 0.1
+T: 3 0 : 64 : 36 : 0.01
+T: 3 0 : 64 : 37 : 0.07
+T: 3 0 : 64 : 38 : 0.01
+T: 3 0 : 64 : 40 : 0.01
+T: 3 0 : 64 : 54 : 0.01
+T: 3 0 : 64 : 55 : 0.07
+T: 3 0 : 64 : 56 : 0.01
+T: 3 0 : 64 : 58 : 0.01
+T: 3 0 : 64 : 63 : 0.02
+T: 3 0 : 64 : 64 : 0.14
+T: 3 0 : 64 : 65 : 0.02
+T: 3 0 : 64 : 67 : 0.02
+T: 3 0 : 64 : 72 : 0.06
+T: 3 0 : 64 : 73 : 0.42
+T: 3 0 : 64 : 74 : 0.06
+T: 3 0 : 64 : 76 : 0.06
+T: 3 1 : 64 : 36 : 0.01
+T: 3 1 : 64 : 37 : 0.02
+T: 3 1 : 64 : 38 : 0.01
+T: 3 1 : 64 : 40 : 0.06
+T: 3 1 : 64 : 54 : 0.01
+T: 3 1 : 64 : 55 : 0.02
+T: 3 1 : 64 : 56 : 0.01
+T: 3 1 : 64 : 58 : 0.06
+T: 3 1 : 64 : 63 : 0.02
+T: 3 1 : 64 : 64 : 0.040
+T: 3 1 : 64 : 65 : 0.02
+T: 3 1 : 64 : 67 : 0.12
+T: 3 1 : 64 : 72 : 0.06
+T: 3 1 : 64 : 73 : 0.12
+T: 3 1 : 64 : 74 : 0.06
+T: 3 1 : 64 : 76 : 0.36
+T: 3 2 : 64 : 36 : 0.06
+T: 3 2 : 64 : 37 : 0.02
+T: 3 2 : 64 : 38 : 0.01
+T: 3 2 : 64 : 40 : 0.01
+T: 3 2 : 64 : 54 : 0.06
+T: 3 2 : 64 : 55 : 0.02
+T: 3 2 : 64 : 56 : 0.01
+T: 3 2 : 64 : 58 : 0.01
+T: 3 2 : 64 : 63 : 0.12
+T: 3 2 : 64 : 64 : 0.040
+T: 3 2 : 64 : 65 : 0.02
+T: 3 2 : 64 : 67 : 0.02
+T: 3 2 : 64 : 72 : 0.36
+T: 3 2 : 64 : 73 : 0.12
+T: 3 2 : 64 : 74 : 0.06
+T: 3 2 : 64 : 76 : 0.06
+T: 3 3 : 64 : 36 : 0.01
+T: 3 3 : 64 : 37 : 0.02
+T: 3 3 : 64 : 38 : 0.06
+T: 3 3 : 64 : 40 : 0.01
+T: 3 3 : 64 : 54 : 0.01
+T: 3 3 : 64 : 55 : 0.02
+T: 3 3 : 64 : 56 : 0.06
+T: 3 3 : 64 : 58 : 0.01
+T: 3 3 : 64 : 63 : 0.02
+T: 3 3 : 64 : 64 : 0.040
+T: 3 3 : 64 : 65 : 0.12
+T: 3 3 : 64 : 67 : 0.02
+T: 3 3 : 64 : 72 : 0.06
+T: 3 3 : 64 : 73 : 0.12
+T: 3 3 : 64 : 74 : 0.36
+T: 3 3 : 64 : 76 : 0.06
+T: 3 4 : 64 : 37 : 0.1
+T: 3 4 : 64 : 55 : 0.1
+T: 3 4 : 64 : 64 : 0.2
+T: 3 4 : 64 : 73 : 0.6
+T: 4 0 : 64 : 63 : 0.1
+T: 4 0 : 64 : 64 : 0.7
+T: 4 0 : 64 : 65 : 0.1
+T: 4 0 : 64 : 67 : 0.1
+T: 4 1 : 64 : 63 : 0.1
+T: 4 1 : 64 : 64 : 0.2
+T: 4 1 : 64 : 65 : 0.1
+T: 4 1 : 64 : 67 : 0.6
+T: 4 2 : 64 : 63 : 0.6
+T: 4 2 : 64 : 64 : 0.2
+T: 4 2 : 64 : 65 : 0.1
+T: 4 2 : 64 : 67 : 0.1
+T: 4 3 : 64 : 63 : 0.1
+T: 4 3 : 64 : 64 : 0.2
+T: 4 3 : 64 : 65 : 0.6
+T: 4 3 : 64 : 67 : 0.1
+T: 4 4 : 64 : 64 : 1.0
+T: 0 0 : 65 : 37 : 0.06
+T: 0 0 : 65 : 38 : 0.48
+T: 0 0 : 65 : 41 : 0.06
+T: 0 0 : 65 : 55 : 0.01
+T: 0 0 : 65 : 56 : 0.08
+T: 0 0 : 65 : 59 : 0.01
+T: 0 0 : 65 : 64 : 0.02
+T: 0 0 : 65 : 65 : 0.16
+T: 0 0 : 65 : 68 : 0.02
+T: 0 0 : 65 : 73 : 0.01
+T: 0 0 : 65 : 74 : 0.08
+T: 0 0 : 65 : 77 : 0.01
+T: 0 1 : 65 : 37 : 0.06
+T: 0 1 : 65 : 38 : 0.18
+T: 0 1 : 65 : 41 : 0.36
+T: 0 1 : 65 : 55 : 0.01
+T: 0 1 : 65 : 56 : 0.03
+T: 0 1 : 65 : 59 : 0.06
+T: 0 1 : 65 : 64 : 0.02
+T: 0 1 : 65 : 65 : 0.060
+T: 0 1 : 65 : 68 : 0.12
+T: 0 1 : 65 : 73 : 0.01
+T: 0 1 : 65 : 74 : 0.03
+T: 0 1 : 65 : 77 : 0.06
+T: 0 2 : 65 : 37 : 0.36
+T: 0 2 : 65 : 38 : 0.18
+T: 0 2 : 65 : 41 : 0.06
+T: 0 2 : 65 : 55 : 0.06
+T: 0 2 : 65 : 56 : 0.03
+T: 0 2 : 65 : 59 : 0.01
+T: 0 2 : 65 : 64 : 0.12
+T: 0 2 : 65 : 65 : 0.060
+T: 0 2 : 65 : 68 : 0.02
+T: 0 2 : 65 : 73 : 0.06
+T: 0 2 : 65 : 74 : 0.03
+T: 0 2 : 65 : 77 : 0.01
+T: 0 3 : 65 : 37 : 0.06
+T: 0 3 : 65 : 38 : 0.48
+T: 0 3 : 65 : 41 : 0.06
+T: 0 3 : 65 : 55 : 0.01
+T: 0 3 : 65 : 56 : 0.08
+T: 0 3 : 65 : 59 : 0.01
+T: 0 3 : 65 : 64 : 0.02
+T: 0 3 : 65 : 65 : 0.16
+T: 0 3 : 65 : 68 : 0.02
+T: 0 3 : 65 : 73 : 0.01
+T: 0 3 : 65 : 74 : 0.08
+T: 0 3 : 65 : 77 : 0.01
+T: 0 4 : 65 : 38 : 0.6
+T: 0 4 : 65 : 56 : 0.1
+T: 0 4 : 65 : 65 : 0.2
+T: 0 4 : 65 : 74 : 0.1
+T: 1 0 : 65 : 37 : 0.01
+T: 1 0 : 65 : 38 : 0.08
+T: 1 0 : 65 : 41 : 0.01
+T: 1 0 : 65 : 55 : 0.01
+T: 1 0 : 65 : 56 : 0.08
+T: 1 0 : 65 : 59 : 0.01
+T: 1 0 : 65 : 64 : 0.07
+T: 1 0 : 65 : 65 : 0.56
+T: 1 0 : 65 : 68 : 0.07
+T: 1 0 : 65 : 73 : 0.01
+T: 1 0 : 65 : 74 : 0.08
+T: 1 0 : 65 : 77 : 0.01
+T: 1 1 : 65 : 37 : 0.01
+T: 1 1 : 65 : 38 : 0.03
+T: 1 1 : 65 : 41 : 0.06
+T: 1 1 : 65 : 55 : 0.01
+T: 1 1 : 65 : 56 : 0.03
+T: 1 1 : 65 : 59 : 0.06
+T: 1 1 : 65 : 64 : 0.07
+T: 1 1 : 65 : 65 : 0.21
+T: 1 1 : 65 : 68 : 0.42
+T: 1 1 : 65 : 73 : 0.01
+T: 1 1 : 65 : 74 : 0.03
+T: 1 1 : 65 : 77 : 0.06
+T: 1 2 : 65 : 37 : 0.06
+T: 1 2 : 65 : 38 : 0.03
+T: 1 2 : 65 : 41 : 0.01
+T: 1 2 : 65 : 55 : 0.06
+T: 1 2 : 65 : 56 : 0.03
+T: 1 2 : 65 : 59 : 0.01
+T: 1 2 : 65 : 64 : 0.42
+T: 1 2 : 65 : 65 : 0.21
+T: 1 2 : 65 : 68 : 0.07
+T: 1 2 : 65 : 73 : 0.06
+T: 1 2 : 65 : 74 : 0.03
+T: 1 2 : 65 : 77 : 0.01
+T: 1 3 : 65 : 37 : 0.01
+T: 1 3 : 65 : 38 : 0.08
+T: 1 3 : 65 : 41 : 0.01
+T: 1 3 : 65 : 55 : 0.01
+T: 1 3 : 65 : 56 : 0.08
+T: 1 3 : 65 : 59 : 0.01
+T: 1 3 : 65 : 64 : 0.07
+T: 1 3 : 65 : 65 : 0.56
+T: 1 3 : 65 : 68 : 0.07
+T: 1 3 : 65 : 73 : 0.01
+T: 1 3 : 65 : 74 : 0.08
+T: 1 3 : 65 : 77 : 0.01
+T: 1 4 : 65 : 38 : 0.1
+T: 1 4 : 65 : 56 : 0.1
+T: 1 4 : 65 : 65 : 0.7
+T: 1 4 : 65 : 74 : 0.1
+T: 2 0 : 65 : 37 : 0.01
+T: 2 0 : 65 : 38 : 0.08
+T: 2 0 : 65 : 41 : 0.01
+T: 2 0 : 65 : 55 : 0.06
+T: 2 0 : 65 : 56 : 0.48
+T: 2 0 : 65 : 59 : 0.06
+T: 2 0 : 65 : 64 : 0.02
+T: 2 0 : 65 : 65 : 0.16
+T: 2 0 : 65 : 68 : 0.02
+T: 2 0 : 65 : 73 : 0.01
+T: 2 0 : 65 : 74 : 0.08
+T: 2 0 : 65 : 77 : 0.01
+T: 2 1 : 65 : 37 : 0.01
+T: 2 1 : 65 : 38 : 0.03
+T: 2 1 : 65 : 41 : 0.06
+T: 2 1 : 65 : 55 : 0.06
+T: 2 1 : 65 : 56 : 0.18
+T: 2 1 : 65 : 59 : 0.36
+T: 2 1 : 65 : 64 : 0.02
+T: 2 1 : 65 : 65 : 0.060
+T: 2 1 : 65 : 68 : 0.12
+T: 2 1 : 65 : 73 : 0.01
+T: 2 1 : 65 : 74 : 0.03
+T: 2 1 : 65 : 77 : 0.06
+T: 2 2 : 65 : 37 : 0.06
+T: 2 2 : 65 : 38 : 0.03
+T: 2 2 : 65 : 41 : 0.01
+T: 2 2 : 65 : 55 : 0.36
+T: 2 2 : 65 : 56 : 0.18
+T: 2 2 : 65 : 59 : 0.06
+T: 2 2 : 65 : 64 : 0.12
+T: 2 2 : 65 : 65 : 0.060
+T: 2 2 : 65 : 68 : 0.02
+T: 2 2 : 65 : 73 : 0.06
+T: 2 2 : 65 : 74 : 0.03
+T: 2 2 : 65 : 77 : 0.01
+T: 2 3 : 65 : 37 : 0.01
+T: 2 3 : 65 : 38 : 0.08
+T: 2 3 : 65 : 41 : 0.01
+T: 2 3 : 65 : 55 : 0.06
+T: 2 3 : 65 : 56 : 0.48
+T: 2 3 : 65 : 59 : 0.06
+T: 2 3 : 65 : 64 : 0.02
+T: 2 3 : 65 : 65 : 0.16
+T: 2 3 : 65 : 68 : 0.02
+T: 2 3 : 65 : 73 : 0.01
+T: 2 3 : 65 : 74 : 0.08
+T: 2 3 : 65 : 77 : 0.01
+T: 2 4 : 65 : 38 : 0.1
+T: 2 4 : 65 : 56 : 0.6
+T: 2 4 : 65 : 65 : 0.2
+T: 2 4 : 65 : 74 : 0.1
+T: 3 0 : 65 : 37 : 0.01
+T: 3 0 : 65 : 38 : 0.08
+T: 3 0 : 65 : 41 : 0.01
+T: 3 0 : 65 : 55 : 0.01
+T: 3 0 : 65 : 56 : 0.08
+T: 3 0 : 65 : 59 : 0.01
+T: 3 0 : 65 : 64 : 0.02
+T: 3 0 : 65 : 65 : 0.16
+T: 3 0 : 65 : 68 : 0.02
+T: 3 0 : 65 : 73 : 0.06
+T: 3 0 : 65 : 74 : 0.48
+T: 3 0 : 65 : 77 : 0.06
+T: 3 1 : 65 : 37 : 0.01
+T: 3 1 : 65 : 38 : 0.03
+T: 3 1 : 65 : 41 : 0.06
+T: 3 1 : 65 : 55 : 0.01
+T: 3 1 : 65 : 56 : 0.03
+T: 3 1 : 65 : 59 : 0.06
+T: 3 1 : 65 : 64 : 0.02
+T: 3 1 : 65 : 65 : 0.060
+T: 3 1 : 65 : 68 : 0.12
+T: 3 1 : 65 : 73 : 0.06
+T: 3 1 : 65 : 74 : 0.18
+T: 3 1 : 65 : 77 : 0.36
+T: 3 2 : 65 : 37 : 0.06
+T: 3 2 : 65 : 38 : 0.03
+T: 3 2 : 65 : 41 : 0.01
+T: 3 2 : 65 : 55 : 0.06
+T: 3 2 : 65 : 56 : 0.03
+T: 3 2 : 65 : 59 : 0.01
+T: 3 2 : 65 : 64 : 0.12
+T: 3 2 : 65 : 65 : 0.060
+T: 3 2 : 65 : 68 : 0.02
+T: 3 2 : 65 : 73 : 0.36
+T: 3 2 : 65 : 74 : 0.18
+T: 3 2 : 65 : 77 : 0.06
+T: 3 3 : 65 : 37 : 0.01
+T: 3 3 : 65 : 38 : 0.08
+T: 3 3 : 65 : 41 : 0.01
+T: 3 3 : 65 : 55 : 0.01
+T: 3 3 : 65 : 56 : 0.08
+T: 3 3 : 65 : 59 : 0.01
+T: 3 3 : 65 : 64 : 0.02
+T: 3 3 : 65 : 65 : 0.16
+T: 3 3 : 65 : 68 : 0.02
+T: 3 3 : 65 : 73 : 0.06
+T: 3 3 : 65 : 74 : 0.48
+T: 3 3 : 65 : 77 : 0.06
+T: 3 4 : 65 : 38 : 0.1
+T: 3 4 : 65 : 56 : 0.1
+T: 3 4 : 65 : 65 : 0.2
+T: 3 4 : 65 : 74 : 0.6
+T: 4 0 : 65 : 64 : 0.1
+T: 4 0 : 65 : 65 : 0.8
+T: 4 0 : 65 : 68 : 0.1
+T: 4 1 : 65 : 64 : 0.1
+T: 4 1 : 65 : 65 : 0.3
+T: 4 1 : 65 : 68 : 0.6
+T: 4 2 : 65 : 64 : 0.6
+T: 4 2 : 65 : 65 : 0.3
+T: 4 2 : 65 : 68 : 0.1
+T: 4 3 : 65 : 64 : 0.1
+T: 4 3 : 65 : 65 : 0.8
+T: 4 3 : 65 : 68 : 0.1
+T: 4 4 : 65 : 65 : 1.0
+T: 0 0 : 66 : 36 : 0.36
+T: 0 0 : 66 : 39 : 0.12
+T: 0 0 : 66 : 40 : 0.06
+T: 0 0 : 66 : 42 : 0.06
+T: 0 0 : 66 : 54 : 0.06
+T: 0 0 : 66 : 57 : 0.02
+T: 0 0 : 66 : 58 : 0.01
+T: 0 0 : 66 : 60 : 0.01
+T: 0 0 : 66 : 63 : 0.12
+T: 0 0 : 66 : 66 : 0.040
+T: 0 0 : 66 : 67 : 0.02
+T: 0 0 : 66 : 69 : 0.02
+T: 0 0 : 66 : 72 : 0.06
+T: 0 0 : 66 : 75 : 0.02
+T: 0 0 : 66 : 76 : 0.01
+T: 0 0 : 66 : 78 : 0.01
+T: 0 1 : 66 : 36 : 0.06
+T: 0 1 : 66 : 39 : 0.12
+T: 0 1 : 66 : 40 : 0.06
+T: 0 1 : 66 : 42 : 0.36
+T: 0 1 : 66 : 54 : 0.01
+T: 0 1 : 66 : 57 : 0.02
+T: 0 1 : 66 : 58 : 0.01
+T: 0 1 : 66 : 60 : 0.06
+T: 0 1 : 66 : 63 : 0.02
+T: 0 1 : 66 : 66 : 0.040
+T: 0 1 : 66 : 67 : 0.02
+T: 0 1 : 66 : 69 : 0.12
+T: 0 1 : 66 : 72 : 0.01
+T: 0 1 : 66 : 75 : 0.02
+T: 0 1 : 66 : 76 : 0.01
+T: 0 1 : 66 : 78 : 0.06
+T: 0 2 : 66 : 36 : 0.06
+T: 0 2 : 66 : 39 : 0.42
+T: 0 2 : 66 : 40 : 0.06
+T: 0 2 : 66 : 42 : 0.06
+T: 0 2 : 66 : 54 : 0.01
+T: 0 2 : 66 : 57 : 0.07
+T: 0 2 : 66 : 58 : 0.01
+T: 0 2 : 66 : 60 : 0.01
+T: 0 2 : 66 : 63 : 0.02
+T: 0 2 : 66 : 66 : 0.14
+T: 0 2 : 66 : 67 : 0.02
+T: 0 2 : 66 : 69 : 0.02
+T: 0 2 : 66 : 72 : 0.01
+T: 0 2 : 66 : 75 : 0.07
+T: 0 2 : 66 : 76 : 0.01
+T: 0 2 : 66 : 78 : 0.01
+T: 0 3 : 66 : 36 : 0.06
+T: 0 3 : 66 : 39 : 0.12
+T: 0 3 : 66 : 40 : 0.36
+T: 0 3 : 66 : 42 : 0.06
+T: 0 3 : 66 : 54 : 0.01
+T: 0 3 : 66 : 57 : 0.02
+T: 0 3 : 66 : 58 : 0.06
+T: 0 3 : 66 : 60 : 0.01
+T: 0 3 : 66 : 63 : 0.02
+T: 0 3 : 66 : 66 : 0.040
+T: 0 3 : 66 : 67 : 0.12
+T: 0 3 : 66 : 69 : 0.02
+T: 0 3 : 66 : 72 : 0.01
+T: 0 3 : 66 : 75 : 0.02
+T: 0 3 : 66 : 76 : 0.06
+T: 0 3 : 66 : 78 : 0.01
+T: 0 4 : 66 : 39 : 0.6
+T: 0 4 : 66 : 57 : 0.1
+T: 0 4 : 66 : 66 : 0.2
+T: 0 4 : 66 : 75 : 0.1
+T: 1 0 : 66 : 36 : 0.06
+T: 1 0 : 66 : 39 : 0.02
+T: 1 0 : 66 : 40 : 0.01
+T: 1 0 : 66 : 42 : 0.01
+T: 1 0 : 66 : 54 : 0.06
+T: 1 0 : 66 : 57 : 0.02
+T: 1 0 : 66 : 58 : 0.01
+T: 1 0 : 66 : 60 : 0.01
+T: 1 0 : 66 : 63 : 0.42
+T: 1 0 : 66 : 66 : 0.14
+T: 1 0 : 66 : 67 : 0.07
+T: 1 0 : 66 : 69 : 0.07
+T: 1 0 : 66 : 72 : 0.06
+T: 1 0 : 66 : 75 : 0.02
+T: 1 0 : 66 : 76 : 0.01
+T: 1 0 : 66 : 78 : 0.01
+T: 1 1 : 66 : 36 : 0.01
+T: 1 1 : 66 : 39 : 0.02
+T: 1 1 : 66 : 40 : 0.01
+T: 1 1 : 66 : 42 : 0.06
+T: 1 1 : 66 : 54 : 0.01
+T: 1 1 : 66 : 57 : 0.02
+T: 1 1 : 66 : 58 : 0.01
+T: 1 1 : 66 : 60 : 0.06
+T: 1 1 : 66 : 63 : 0.07
+T: 1 1 : 66 : 66 : 0.14
+T: 1 1 : 66 : 67 : 0.07
+T: 1 1 : 66 : 69 : 0.42
+T: 1 1 : 66 : 72 : 0.01
+T: 1 1 : 66 : 75 : 0.02
+T: 1 1 : 66 : 76 : 0.01
+T: 1 1 : 66 : 78 : 0.06
+T: 1 2 : 66 : 36 : 0.01
+T: 1 2 : 66 : 39 : 0.07
+T: 1 2 : 66 : 40 : 0.01
+T: 1 2 : 66 : 42 : 0.01
+T: 1 2 : 66 : 54 : 0.01
+T: 1 2 : 66 : 57 : 0.07
+T: 1 2 : 66 : 58 : 0.01
+T: 1 2 : 66 : 60 : 0.01
+T: 1 2 : 66 : 63 : 0.07
+T: 1 2 : 66 : 66 : 0.49
+T: 1 2 : 66 : 67 : 0.07
+T: 1 2 : 66 : 69 : 0.07
+T: 1 2 : 66 : 72 : 0.01
+T: 1 2 : 66 : 75 : 0.07
+T: 1 2 : 66 : 76 : 0.01
+T: 1 2 : 66 : 78 : 0.01
+T: 1 3 : 66 : 36 : 0.01
+T: 1 3 : 66 : 39 : 0.02
+T: 1 3 : 66 : 40 : 0.06
+T: 1 3 : 66 : 42 : 0.01
+T: 1 3 : 66 : 54 : 0.01
+T: 1 3 : 66 : 57 : 0.02
+T: 1 3 : 66 : 58 : 0.06
+T: 1 3 : 66 : 60 : 0.01
+T: 1 3 : 66 : 63 : 0.07
+T: 1 3 : 66 : 66 : 0.14
+T: 1 3 : 66 : 67 : 0.42
+T: 1 3 : 66 : 69 : 0.07
+T: 1 3 : 66 : 72 : 0.01
+T: 1 3 : 66 : 75 : 0.02
+T: 1 3 : 66 : 76 : 0.06
+T: 1 3 : 66 : 78 : 0.01
+T: 1 4 : 66 : 39 : 0.1
+T: 1 4 : 66 : 57 : 0.1
+T: 1 4 : 66 : 66 : 0.7
+T: 1 4 : 66 : 75 : 0.1
+T: 2 0 : 66 : 36 : 0.06
+T: 2 0 : 66 : 39 : 0.02
+T: 2 0 : 66 : 40 : 0.01
+T: 2 0 : 66 : 42 : 0.01
+T: 2 0 : 66 : 54 : 0.36
+T: 2 0 : 66 : 57 : 0.12
+T: 2 0 : 66 : 58 : 0.06
+T: 2 0 : 66 : 60 : 0.06
+T: 2 0 : 66 : 63 : 0.12
+T: 2 0 : 66 : 66 : 0.040
+T: 2 0 : 66 : 67 : 0.02
+T: 2 0 : 66 : 69 : 0.02
+T: 2 0 : 66 : 72 : 0.06
+T: 2 0 : 66 : 75 : 0.02
+T: 2 0 : 66 : 76 : 0.01
+T: 2 0 : 66 : 78 : 0.01
+T: 2 1 : 66 : 36 : 0.01
+T: 2 1 : 66 : 39 : 0.02
+T: 2 1 : 66 : 40 : 0.01
+T: 2 1 : 66 : 42 : 0.06
+T: 2 1 : 66 : 54 : 0.06
+T: 2 1 : 66 : 57 : 0.12
+T: 2 1 : 66 : 58 : 0.06
+T: 2 1 : 66 : 60 : 0.36
+T: 2 1 : 66 : 63 : 0.02
+T: 2 1 : 66 : 66 : 0.040
+T: 2 1 : 66 : 67 : 0.02
+T: 2 1 : 66 : 69 : 0.12
+T: 2 1 : 66 : 72 : 0.01
+T: 2 1 : 66 : 75 : 0.02
+T: 2 1 : 66 : 76 : 0.01
+T: 2 1 : 66 : 78 : 0.06
+T: 2 2 : 66 : 36 : 0.01
+T: 2 2 : 66 : 39 : 0.07
+T: 2 2 : 66 : 40 : 0.01
+T: 2 2 : 66 : 42 : 0.01
+T: 2 2 : 66 : 54 : 0.06
+T: 2 2 : 66 : 57 : 0.42
+T: 2 2 : 66 : 58 : 0.06
+T: 2 2 : 66 : 60 : 0.06
+T: 2 2 : 66 : 63 : 0.02
+T: 2 2 : 66 : 66 : 0.14
+T: 2 2 : 66 : 67 : 0.02
+T: 2 2 : 66 : 69 : 0.02
+T: 2 2 : 66 : 72 : 0.01
+T: 2 2 : 66 : 75 : 0.07
+T: 2 2 : 66 : 76 : 0.01
+T: 2 2 : 66 : 78 : 0.01
+T: 2 3 : 66 : 36 : 0.01
+T: 2 3 : 66 : 39 : 0.02
+T: 2 3 : 66 : 40 : 0.06
+T: 2 3 : 66 : 42 : 0.01
+T: 2 3 : 66 : 54 : 0.06
+T: 2 3 : 66 : 57 : 0.12
+T: 2 3 : 66 : 58 : 0.36
+T: 2 3 : 66 : 60 : 0.06
+T: 2 3 : 66 : 63 : 0.02
+T: 2 3 : 66 : 66 : 0.040
+T: 2 3 : 66 : 67 : 0.12
+T: 2 3 : 66 : 69 : 0.02
+T: 2 3 : 66 : 72 : 0.01
+T: 2 3 : 66 : 75 : 0.02
+T: 2 3 : 66 : 76 : 0.06
+T: 2 3 : 66 : 78 : 0.01
+T: 2 4 : 66 : 39 : 0.1
+T: 2 4 : 66 : 57 : 0.6
+T: 2 4 : 66 : 66 : 0.2
+T: 2 4 : 66 : 75 : 0.1
+T: 3 0 : 66 : 36 : 0.06
+T: 3 0 : 66 : 39 : 0.02
+T: 3 0 : 66 : 40 : 0.01
+T: 3 0 : 66 : 42 : 0.01
+T: 3 0 : 66 : 54 : 0.06
+T: 3 0 : 66 : 57 : 0.02
+T: 3 0 : 66 : 58 : 0.01
+T: 3 0 : 66 : 60 : 0.01
+T: 3 0 : 66 : 63 : 0.12
+T: 3 0 : 66 : 66 : 0.040
+T: 3 0 : 66 : 67 : 0.02
+T: 3 0 : 66 : 69 : 0.02
+T: 3 0 : 66 : 72 : 0.36
+T: 3 0 : 66 : 75 : 0.12
+T: 3 0 : 66 : 76 : 0.06
+T: 3 0 : 66 : 78 : 0.06
+T: 3 1 : 66 : 36 : 0.01
+T: 3 1 : 66 : 39 : 0.02
+T: 3 1 : 66 : 40 : 0.01
+T: 3 1 : 66 : 42 : 0.06
+T: 3 1 : 66 : 54 : 0.01
+T: 3 1 : 66 : 57 : 0.02
+T: 3 1 : 66 : 58 : 0.01
+T: 3 1 : 66 : 60 : 0.06
+T: 3 1 : 66 : 63 : 0.02
+T: 3 1 : 66 : 66 : 0.040
+T: 3 1 : 66 : 67 : 0.02
+T: 3 1 : 66 : 69 : 0.12
+T: 3 1 : 66 : 72 : 0.06
+T: 3 1 : 66 : 75 : 0.12
+T: 3 1 : 66 : 76 : 0.06
+T: 3 1 : 66 : 78 : 0.36
+T: 3 2 : 66 : 36 : 0.01
+T: 3 2 : 66 : 39 : 0.07
+T: 3 2 : 66 : 40 : 0.01
+T: 3 2 : 66 : 42 : 0.01
+T: 3 2 : 66 : 54 : 0.01
+T: 3 2 : 66 : 57 : 0.07
+T: 3 2 : 66 : 58 : 0.01
+T: 3 2 : 66 : 60 : 0.01
+T: 3 2 : 66 : 63 : 0.02
+T: 3 2 : 66 : 66 : 0.14
+T: 3 2 : 66 : 67 : 0.02
+T: 3 2 : 66 : 69 : 0.02
+T: 3 2 : 66 : 72 : 0.06
+T: 3 2 : 66 : 75 : 0.42
+T: 3 2 : 66 : 76 : 0.06
+T: 3 2 : 66 : 78 : 0.06
+T: 3 3 : 66 : 36 : 0.01
+T: 3 3 : 66 : 39 : 0.02
+T: 3 3 : 66 : 40 : 0.06
+T: 3 3 : 66 : 42 : 0.01
+T: 3 3 : 66 : 54 : 0.01
+T: 3 3 : 66 : 57 : 0.02
+T: 3 3 : 66 : 58 : 0.06
+T: 3 3 : 66 : 60 : 0.01
+T: 3 3 : 66 : 63 : 0.02
+T: 3 3 : 66 : 66 : 0.040
+T: 3 3 : 66 : 67 : 0.12
+T: 3 3 : 66 : 69 : 0.02
+T: 3 3 : 66 : 72 : 0.06
+T: 3 3 : 66 : 75 : 0.12
+T: 3 3 : 66 : 76 : 0.36
+T: 3 3 : 66 : 78 : 0.06
+T: 3 4 : 66 : 39 : 0.1
+T: 3 4 : 66 : 57 : 0.1
+T: 3 4 : 66 : 66 : 0.2
+T: 3 4 : 66 : 75 : 0.6
+T: 4 0 : 66 : 63 : 0.6
+T: 4 0 : 66 : 66 : 0.2
+T: 4 0 : 66 : 67 : 0.1
+T: 4 0 : 66 : 69 : 0.1
+T: 4 1 : 66 : 63 : 0.1
+T: 4 1 : 66 : 66 : 0.2
+T: 4 1 : 66 : 67 : 0.1
+T: 4 1 : 66 : 69 : 0.6
+T: 4 2 : 66 : 63 : 0.1
+T: 4 2 : 66 : 66 : 0.7
+T: 4 2 : 66 : 67 : 0.1
+T: 4 2 : 66 : 69 : 0.1
+T: 4 3 : 66 : 63 : 0.1
+T: 4 3 : 66 : 66 : 0.2
+T: 4 3 : 66 : 67 : 0.6
+T: 4 3 : 66 : 69 : 0.1
+T: 4 4 : 66 : 66 : 1.0
+T: 0 0 : 67 : 37 : 0.36
+T: 0 0 : 67 : 39 : 0.06
+T: 0 0 : 67 : 40 : 0.06
+T: 0 0 : 67 : 41 : 0.06
+T: 0 0 : 67 : 43 : 0.06
+T: 0 0 : 67 : 55 : 0.06
+T: 0 0 : 67 : 57 : 0.01
+T: 0 0 : 67 : 58 : 0.01
+T: 0 0 : 67 : 59 : 0.01
+T: 0 0 : 67 : 61 : 0.01
+T: 0 0 : 67 : 64 : 0.12
+T: 0 0 : 67 : 66 : 0.02
+T: 0 0 : 67 : 67 : 0.02
+T: 0 0 : 67 : 68 : 0.02
+T: 0 0 : 67 : 70 : 0.02
+T: 0 0 : 67 : 73 : 0.06
+T: 0 0 : 67 : 75 : 0.01
+T: 0 0 : 67 : 76 : 0.01
+T: 0 0 : 67 : 77 : 0.01
+T: 0 0 : 67 : 79 : 0.01
+T: 0 1 : 67 : 37 : 0.06
+T: 0 1 : 67 : 39 : 0.06
+T: 0 1 : 67 : 40 : 0.06
+T: 0 1 : 67 : 41 : 0.06
+T: 0 1 : 67 : 43 : 0.36
+T: 0 1 : 67 : 55 : 0.01
+T: 0 1 : 67 : 57 : 0.01
+T: 0 1 : 67 : 58 : 0.01
+T: 0 1 : 67 : 59 : 0.01
+T: 0 1 : 67 : 61 : 0.06
+T: 0 1 : 67 : 64 : 0.02
+T: 0 1 : 67 : 66 : 0.02
+T: 0 1 : 67 : 67 : 0.02
+T: 0 1 : 67 : 68 : 0.02
+T: 0 1 : 67 : 70 : 0.12
+T: 0 1 : 67 : 73 : 0.01
+T: 0 1 : 67 : 75 : 0.01
+T: 0 1 : 67 : 76 : 0.01
+T: 0 1 : 67 : 77 : 0.01
+T: 0 1 : 67 : 79 : 0.06
+T: 0 2 : 67 : 37 : 0.06
+T: 0 2 : 67 : 39 : 0.36
+T: 0 2 : 67 : 40 : 0.06
+T: 0 2 : 67 : 41 : 0.06
+T: 0 2 : 67 : 43 : 0.06
+T: 0 2 : 67 : 55 : 0.01
+T: 0 2 : 67 : 57 : 0.06
+T: 0 2 : 67 : 58 : 0.01
+T: 0 2 : 67 : 59 : 0.01
+T: 0 2 : 67 : 61 : 0.01
+T: 0 2 : 67 : 64 : 0.02
+T: 0 2 : 67 : 66 : 0.12
+T: 0 2 : 67 : 67 : 0.02
+T: 0 2 : 67 : 68 : 0.02
+T: 0 2 : 67 : 70 : 0.02
+T: 0 2 : 67 : 73 : 0.01
+T: 0 2 : 67 : 75 : 0.06
+T: 0 2 : 67 : 76 : 0.01
+T: 0 2 : 67 : 77 : 0.01
+T: 0 2 : 67 : 79 : 0.01
+T: 0 3 : 67 : 37 : 0.06
+T: 0 3 : 67 : 39 : 0.06
+T: 0 3 : 67 : 40 : 0.06
+T: 0 3 : 67 : 41 : 0.36
+T: 0 3 : 67 : 43 : 0.06
+T: 0 3 : 67 : 55 : 0.01
+T: 0 3 : 67 : 57 : 0.01
+T: 0 3 : 67 : 58 : 0.01
+T: 0 3 : 67 : 59 : 0.06
+T: 0 3 : 67 : 61 : 0.01
+T: 0 3 : 67 : 64 : 0.02
+T: 0 3 : 67 : 66 : 0.02
+T: 0 3 : 67 : 67 : 0.02
+T: 0 3 : 67 : 68 : 0.12
+T: 0 3 : 67 : 70 : 0.02
+T: 0 3 : 67 : 73 : 0.01
+T: 0 3 : 67 : 75 : 0.01
+T: 0 3 : 67 : 76 : 0.01
+T: 0 3 : 67 : 77 : 0.06
+T: 0 3 : 67 : 79 : 0.01
+T: 0 4 : 67 : 40 : 0.6
+T: 0 4 : 67 : 58 : 0.1
+T: 0 4 : 67 : 67 : 0.2
+T: 0 4 : 67 : 76 : 0.1
+T: 1 0 : 67 : 37 : 0.06
+T: 1 0 : 67 : 39 : 0.01
+T: 1 0 : 67 : 40 : 0.01
+T: 1 0 : 67 : 41 : 0.01
+T: 1 0 : 67 : 43 : 0.01
+T: 1 0 : 67 : 55 : 0.06
+T: 1 0 : 67 : 57 : 0.01
+T: 1 0 : 67 : 58 : 0.01
+T: 1 0 : 67 : 59 : 0.01
+T: 1 0 : 67 : 61 : 0.01
+T: 1 0 : 67 : 64 : 0.42
+T: 1 0 : 67 : 66 : 0.07
+T: 1 0 : 67 : 67 : 0.07
+T: 1 0 : 67 : 68 : 0.07
+T: 1 0 : 67 : 70 : 0.07
+T: 1 0 : 67 : 73 : 0.06
+T: 1 0 : 67 : 75 : 0.01
+T: 1 0 : 67 : 76 : 0.01
+T: 1 0 : 67 : 77 : 0.01
+T: 1 0 : 67 : 79 : 0.01
+T: 1 1 : 67 : 37 : 0.01
+T: 1 1 : 67 : 39 : 0.01
+T: 1 1 : 67 : 40 : 0.01
+T: 1 1 : 67 : 41 : 0.01
+T: 1 1 : 67 : 43 : 0.06
+T: 1 1 : 67 : 55 : 0.01
+T: 1 1 : 67 : 57 : 0.01
+T: 1 1 : 67 : 58 : 0.01
+T: 1 1 : 67 : 59 : 0.01
+T: 1 1 : 67 : 61 : 0.06
+T: 1 1 : 67 : 64 : 0.07
+T: 1 1 : 67 : 66 : 0.07
+T: 1 1 : 67 : 67 : 0.07
+T: 1 1 : 67 : 68 : 0.07
+T: 1 1 : 67 : 70 : 0.42
+T: 1 1 : 67 : 73 : 0.01
+T: 1 1 : 67 : 75 : 0.01
+T: 1 1 : 67 : 76 : 0.01
+T: 1 1 : 67 : 77 : 0.01
+T: 1 1 : 67 : 79 : 0.06
+T: 1 2 : 67 : 37 : 0.01
+T: 1 2 : 67 : 39 : 0.06
+T: 1 2 : 67 : 40 : 0.01
+T: 1 2 : 67 : 41 : 0.01
+T: 1 2 : 67 : 43 : 0.01
+T: 1 2 : 67 : 55 : 0.01
+T: 1 2 : 67 : 57 : 0.06
+T: 1 2 : 67 : 58 : 0.01
+T: 1 2 : 67 : 59 : 0.01
+T: 1 2 : 67 : 61 : 0.01
+T: 1 2 : 67 : 64 : 0.07
+T: 1 2 : 67 : 66 : 0.42
+T: 1 2 : 67 : 67 : 0.07
+T: 1 2 : 67 : 68 : 0.07
+T: 1 2 : 67 : 70 : 0.07
+T: 1 2 : 67 : 73 : 0.01
+T: 1 2 : 67 : 75 : 0.06
+T: 1 2 : 67 : 76 : 0.01
+T: 1 2 : 67 : 77 : 0.01
+T: 1 2 : 67 : 79 : 0.01
+T: 1 3 : 67 : 37 : 0.01
+T: 1 3 : 67 : 39 : 0.01
+T: 1 3 : 67 : 40 : 0.01
+T: 1 3 : 67 : 41 : 0.06
+T: 1 3 : 67 : 43 : 0.01
+T: 1 3 : 67 : 55 : 0.01
+T: 1 3 : 67 : 57 : 0.01
+T: 1 3 : 67 : 58 : 0.01
+T: 1 3 : 67 : 59 : 0.06
+T: 1 3 : 67 : 61 : 0.01
+T: 1 3 : 67 : 64 : 0.07
+T: 1 3 : 67 : 66 : 0.07
+T: 1 3 : 67 : 67 : 0.07
+T: 1 3 : 67 : 68 : 0.42
+T: 1 3 : 67 : 70 : 0.07
+T: 1 3 : 67 : 73 : 0.01
+T: 1 3 : 67 : 75 : 0.01
+T: 1 3 : 67 : 76 : 0.01
+T: 1 3 : 67 : 77 : 0.06
+T: 1 3 : 67 : 79 : 0.01
+T: 1 4 : 67 : 40 : 0.1
+T: 1 4 : 67 : 58 : 0.1
+T: 1 4 : 67 : 67 : 0.7
+T: 1 4 : 67 : 76 : 0.1
+T: 2 0 : 67 : 37 : 0.06
+T: 2 0 : 67 : 39 : 0.01
+T: 2 0 : 67 : 40 : 0.01
+T: 2 0 : 67 : 41 : 0.01
+T: 2 0 : 67 : 43 : 0.01
+T: 2 0 : 67 : 55 : 0.36
+T: 2 0 : 67 : 57 : 0.06
+T: 2 0 : 67 : 58 : 0.06
+T: 2 0 : 67 : 59 : 0.06
+T: 2 0 : 67 : 61 : 0.06
+T: 2 0 : 67 : 64 : 0.12
+T: 2 0 : 67 : 66 : 0.02
+T: 2 0 : 67 : 67 : 0.02
+T: 2 0 : 67 : 68 : 0.02
+T: 2 0 : 67 : 70 : 0.02
+T: 2 0 : 67 : 73 : 0.06
+T: 2 0 : 67 : 75 : 0.01
+T: 2 0 : 67 : 76 : 0.01
+T: 2 0 : 67 : 77 : 0.01
+T: 2 0 : 67 : 79 : 0.01
+T: 2 1 : 67 : 37 : 0.01
+T: 2 1 : 67 : 39 : 0.01
+T: 2 1 : 67 : 40 : 0.01
+T: 2 1 : 67 : 41 : 0.01
+T: 2 1 : 67 : 43 : 0.06
+T: 2 1 : 67 : 55 : 0.06
+T: 2 1 : 67 : 57 : 0.06
+T: 2 1 : 67 : 58 : 0.06
+T: 2 1 : 67 : 59 : 0.06
+T: 2 1 : 67 : 61 : 0.36
+T: 2 1 : 67 : 64 : 0.02
+T: 2 1 : 67 : 66 : 0.02
+T: 2 1 : 67 : 67 : 0.02
+T: 2 1 : 67 : 68 : 0.02
+T: 2 1 : 67 : 70 : 0.12
+T: 2 1 : 67 : 73 : 0.01
+T: 2 1 : 67 : 75 : 0.01
+T: 2 1 : 67 : 76 : 0.01
+T: 2 1 : 67 : 77 : 0.01
+T: 2 1 : 67 : 79 : 0.06
+T: 2 2 : 67 : 37 : 0.01
+T: 2 2 : 67 : 39 : 0.06
+T: 2 2 : 67 : 40 : 0.01
+T: 2 2 : 67 : 41 : 0.01
+T: 2 2 : 67 : 43 : 0.01
+T: 2 2 : 67 : 55 : 0.06
+T: 2 2 : 67 : 57 : 0.36
+T: 2 2 : 67 : 58 : 0.06
+T: 2 2 : 67 : 59 : 0.06
+T: 2 2 : 67 : 61 : 0.06
+T: 2 2 : 67 : 64 : 0.02
+T: 2 2 : 67 : 66 : 0.12
+T: 2 2 : 67 : 67 : 0.02
+T: 2 2 : 67 : 68 : 0.02
+T: 2 2 : 67 : 70 : 0.02
+T: 2 2 : 67 : 73 : 0.01
+T: 2 2 : 67 : 75 : 0.06
+T: 2 2 : 67 : 76 : 0.01
+T: 2 2 : 67 : 77 : 0.01
+T: 2 2 : 67 : 79 : 0.01
+T: 2 3 : 67 : 37 : 0.01
+T: 2 3 : 67 : 39 : 0.01
+T: 2 3 : 67 : 40 : 0.01
+T: 2 3 : 67 : 41 : 0.06
+T: 2 3 : 67 : 43 : 0.01
+T: 2 3 : 67 : 55 : 0.06
+T: 2 3 : 67 : 57 : 0.06
+T: 2 3 : 67 : 58 : 0.06
+T: 2 3 : 67 : 59 : 0.36
+T: 2 3 : 67 : 61 : 0.06
+T: 2 3 : 67 : 64 : 0.02
+T: 2 3 : 67 : 66 : 0.02
+T: 2 3 : 67 : 67 : 0.02
+T: 2 3 : 67 : 68 : 0.12
+T: 2 3 : 67 : 70 : 0.02
+T: 2 3 : 67 : 73 : 0.01
+T: 2 3 : 67 : 75 : 0.01
+T: 2 3 : 67 : 76 : 0.01
+T: 2 3 : 67 : 77 : 0.06
+T: 2 3 : 67 : 79 : 0.01
+T: 2 4 : 67 : 40 : 0.1
+T: 2 4 : 67 : 58 : 0.6
+T: 2 4 : 67 : 67 : 0.2
+T: 2 4 : 67 : 76 : 0.1
+T: 3 0 : 67 : 37 : 0.06
+T: 3 0 : 67 : 39 : 0.01
+T: 3 0 : 67 : 40 : 0.01
+T: 3 0 : 67 : 41 : 0.01
+T: 3 0 : 67 : 43 : 0.01
+T: 3 0 : 67 : 55 : 0.06
+T: 3 0 : 67 : 57 : 0.01
+T: 3 0 : 67 : 58 : 0.01
+T: 3 0 : 67 : 59 : 0.01
+T: 3 0 : 67 : 61 : 0.01
+T: 3 0 : 67 : 64 : 0.12
+T: 3 0 : 67 : 66 : 0.02
+T: 3 0 : 67 : 67 : 0.02
+T: 3 0 : 67 : 68 : 0.02
+T: 3 0 : 67 : 70 : 0.02
+T: 3 0 : 67 : 73 : 0.36
+T: 3 0 : 67 : 75 : 0.06
+T: 3 0 : 67 : 76 : 0.06
+T: 3 0 : 67 : 77 : 0.06
+T: 3 0 : 67 : 79 : 0.06
+T: 3 1 : 67 : 37 : 0.01
+T: 3 1 : 67 : 39 : 0.01
+T: 3 1 : 67 : 40 : 0.01
+T: 3 1 : 67 : 41 : 0.01
+T: 3 1 : 67 : 43 : 0.06
+T: 3 1 : 67 : 55 : 0.01
+T: 3 1 : 67 : 57 : 0.01
+T: 3 1 : 67 : 58 : 0.01
+T: 3 1 : 67 : 59 : 0.01
+T: 3 1 : 67 : 61 : 0.06
+T: 3 1 : 67 : 64 : 0.02
+T: 3 1 : 67 : 66 : 0.02
+T: 3 1 : 67 : 67 : 0.02
+T: 3 1 : 67 : 68 : 0.02
+T: 3 1 : 67 : 70 : 0.12
+T: 3 1 : 67 : 73 : 0.06
+T: 3 1 : 67 : 75 : 0.06
+T: 3 1 : 67 : 76 : 0.06
+T: 3 1 : 67 : 77 : 0.06
+T: 3 1 : 67 : 79 : 0.36
+T: 3 2 : 67 : 37 : 0.01
+T: 3 2 : 67 : 39 : 0.06
+T: 3 2 : 67 : 40 : 0.01
+T: 3 2 : 67 : 41 : 0.01
+T: 3 2 : 67 : 43 : 0.01
+T: 3 2 : 67 : 55 : 0.01
+T: 3 2 : 67 : 57 : 0.06
+T: 3 2 : 67 : 58 : 0.01
+T: 3 2 : 67 : 59 : 0.01
+T: 3 2 : 67 : 61 : 0.01
+T: 3 2 : 67 : 64 : 0.02
+T: 3 2 : 67 : 66 : 0.12
+T: 3 2 : 67 : 67 : 0.02
+T: 3 2 : 67 : 68 : 0.02
+T: 3 2 : 67 : 70 : 0.02
+T: 3 2 : 67 : 73 : 0.06
+T: 3 2 : 67 : 75 : 0.36
+T: 3 2 : 67 : 76 : 0.06
+T: 3 2 : 67 : 77 : 0.06
+T: 3 2 : 67 : 79 : 0.06
+T: 3 3 : 67 : 37 : 0.01
+T: 3 3 : 67 : 39 : 0.01
+T: 3 3 : 67 : 40 : 0.01
+T: 3 3 : 67 : 41 : 0.06
+T: 3 3 : 67 : 43 : 0.01
+T: 3 3 : 67 : 55 : 0.01
+T: 3 3 : 67 : 57 : 0.01
+T: 3 3 : 67 : 58 : 0.01
+T: 3 3 : 67 : 59 : 0.06
+T: 3 3 : 67 : 61 : 0.01
+T: 3 3 : 67 : 64 : 0.02
+T: 3 3 : 67 : 66 : 0.02
+T: 3 3 : 67 : 67 : 0.02
+T: 3 3 : 67 : 68 : 0.12
+T: 3 3 : 67 : 70 : 0.02
+T: 3 3 : 67 : 73 : 0.06
+T: 3 3 : 67 : 75 : 0.06
+T: 3 3 : 67 : 76 : 0.06
+T: 3 3 : 67 : 77 : 0.36
+T: 3 3 : 67 : 79 : 0.06
+T: 3 4 : 67 : 40 : 0.1
+T: 3 4 : 67 : 58 : 0.1
+T: 3 4 : 67 : 67 : 0.2
+T: 3 4 : 67 : 76 : 0.6
+T: 4 0 : 67 : 64 : 0.6
+T: 4 0 : 67 : 66 : 0.1
+T: 4 0 : 67 : 67 : 0.1
+T: 4 0 : 67 : 68 : 0.1
+T: 4 0 : 67 : 70 : 0.1
+T: 4 1 : 67 : 64 : 0.1
+T: 4 1 : 67 : 66 : 0.1
+T: 4 1 : 67 : 67 : 0.1
+T: 4 1 : 67 : 68 : 0.1
+T: 4 1 : 67 : 70 : 0.6
+T: 4 2 : 67 : 64 : 0.1
+T: 4 2 : 67 : 66 : 0.6
+T: 4 2 : 67 : 67 : 0.1
+T: 4 2 : 67 : 68 : 0.1
+T: 4 2 : 67 : 70 : 0.1
+T: 4 3 : 67 : 64 : 0.1
+T: 4 3 : 67 : 66 : 0.1
+T: 4 3 : 67 : 67 : 0.1
+T: 4 3 : 67 : 68 : 0.6
+T: 4 3 : 67 : 70 : 0.1
+T: 4 4 : 67 : 67 : 1.0
+T: 0 0 : 68 : 38 : 0.36
+T: 0 0 : 68 : 40 : 0.06
+T: 0 0 : 68 : 41 : 0.12
+T: 0 0 : 68 : 44 : 0.06
+T: 0 0 : 68 : 56 : 0.06
+T: 0 0 : 68 : 58 : 0.01
+T: 0 0 : 68 : 59 : 0.02
+T: 0 0 : 68 : 62 : 0.01
+T: 0 0 : 68 : 65 : 0.12
+T: 0 0 : 68 : 67 : 0.02
+T: 0 0 : 68 : 68 : 0.040
+T: 0 0 : 68 : 71 : 0.02
+T: 0 0 : 68 : 74 : 0.06
+T: 0 0 : 68 : 76 : 0.01
+T: 0 0 : 68 : 77 : 0.02
+T: 0 0 : 68 : 80 : 0.01
+T: 0 1 : 68 : 38 : 0.06
+T: 0 1 : 68 : 40 : 0.06
+T: 0 1 : 68 : 41 : 0.12
+T: 0 1 : 68 : 44 : 0.36
+T: 0 1 : 68 : 56 : 0.01
+T: 0 1 : 68 : 58 : 0.01
+T: 0 1 : 68 : 59 : 0.02
+T: 0 1 : 68 : 62 : 0.06
+T: 0 1 : 68 : 65 : 0.02
+T: 0 1 : 68 : 67 : 0.02
+T: 0 1 : 68 : 68 : 0.040
+T: 0 1 : 68 : 71 : 0.12
+T: 0 1 : 68 : 74 : 0.01
+T: 0 1 : 68 : 76 : 0.01
+T: 0 1 : 68 : 77 : 0.02
+T: 0 1 : 68 : 80 : 0.06
+T: 0 2 : 68 : 38 : 0.06
+T: 0 2 : 68 : 40 : 0.36
+T: 0 2 : 68 : 41 : 0.12
+T: 0 2 : 68 : 44 : 0.06
+T: 0 2 : 68 : 56 : 0.01
+T: 0 2 : 68 : 58 : 0.06
+T: 0 2 : 68 : 59 : 0.02
+T: 0 2 : 68 : 62 : 0.01
+T: 0 2 : 68 : 65 : 0.02
+T: 0 2 : 68 : 67 : 0.12
+T: 0 2 : 68 : 68 : 0.040
+T: 0 2 : 68 : 71 : 0.02
+T: 0 2 : 68 : 74 : 0.01
+T: 0 2 : 68 : 76 : 0.06
+T: 0 2 : 68 : 77 : 0.02
+T: 0 2 : 68 : 80 : 0.01
+T: 0 3 : 68 : 38 : 0.06
+T: 0 3 : 68 : 40 : 0.06
+T: 0 3 : 68 : 41 : 0.42
+T: 0 3 : 68 : 44 : 0.06
+T: 0 3 : 68 : 56 : 0.01
+T: 0 3 : 68 : 58 : 0.01
+T: 0 3 : 68 : 59 : 0.07
+T: 0 3 : 68 : 62 : 0.01
+T: 0 3 : 68 : 65 : 0.02
+T: 0 3 : 68 : 67 : 0.02
+T: 0 3 : 68 : 68 : 0.14
+T: 0 3 : 68 : 71 : 0.02
+T: 0 3 : 68 : 74 : 0.01
+T: 0 3 : 68 : 76 : 0.01
+T: 0 3 : 68 : 77 : 0.07
+T: 0 3 : 68 : 80 : 0.01
+T: 0 4 : 68 : 41 : 0.6
+T: 0 4 : 68 : 59 : 0.1
+T: 0 4 : 68 : 68 : 0.2
+T: 0 4 : 68 : 77 : 0.1
+T: 1 0 : 68 : 38 : 0.06
+T: 1 0 : 68 : 40 : 0.01
+T: 1 0 : 68 : 41 : 0.02
+T: 1 0 : 68 : 44 : 0.01
+T: 1 0 : 68 : 56 : 0.06
+T: 1 0 : 68 : 58 : 0.01
+T: 1 0 : 68 : 59 : 0.02
+T: 1 0 : 68 : 62 : 0.01
+T: 1 0 : 68 : 65 : 0.42
+T: 1 0 : 68 : 67 : 0.07
+T: 1 0 : 68 : 68 : 0.14
+T: 1 0 : 68 : 71 : 0.07
+T: 1 0 : 68 : 74 : 0.06
+T: 1 0 : 68 : 76 : 0.01
+T: 1 0 : 68 : 77 : 0.02
+T: 1 0 : 68 : 80 : 0.01
+T: 1 1 : 68 : 38 : 0.01
+T: 1 1 : 68 : 40 : 0.01
+T: 1 1 : 68 : 41 : 0.02
+T: 1 1 : 68 : 44 : 0.06
+T: 1 1 : 68 : 56 : 0.01
+T: 1 1 : 68 : 58 : 0.01
+T: 1 1 : 68 : 59 : 0.02
+T: 1 1 : 68 : 62 : 0.06
+T: 1 1 : 68 : 65 : 0.07
+T: 1 1 : 68 : 67 : 0.07
+T: 1 1 : 68 : 68 : 0.14
+T: 1 1 : 68 : 71 : 0.42
+T: 1 1 : 68 : 74 : 0.01
+T: 1 1 : 68 : 76 : 0.01
+T: 1 1 : 68 : 77 : 0.02
+T: 1 1 : 68 : 80 : 0.06
+T: 1 2 : 68 : 38 : 0.01
+T: 1 2 : 68 : 40 : 0.06
+T: 1 2 : 68 : 41 : 0.02
+T: 1 2 : 68 : 44 : 0.01
+T: 1 2 : 68 : 56 : 0.01
+T: 1 2 : 68 : 58 : 0.06
+T: 1 2 : 68 : 59 : 0.02
+T: 1 2 : 68 : 62 : 0.01
+T: 1 2 : 68 : 65 : 0.07
+T: 1 2 : 68 : 67 : 0.42
+T: 1 2 : 68 : 68 : 0.14
+T: 1 2 : 68 : 71 : 0.07
+T: 1 2 : 68 : 74 : 0.01
+T: 1 2 : 68 : 76 : 0.06
+T: 1 2 : 68 : 77 : 0.02
+T: 1 2 : 68 : 80 : 0.01
+T: 1 3 : 68 : 38 : 0.01
+T: 1 3 : 68 : 40 : 0.01
+T: 1 3 : 68 : 41 : 0.07
+T: 1 3 : 68 : 44 : 0.01
+T: 1 3 : 68 : 56 : 0.01
+T: 1 3 : 68 : 58 : 0.01
+T: 1 3 : 68 : 59 : 0.07
+T: 1 3 : 68 : 62 : 0.01
+T: 1 3 : 68 : 65 : 0.07
+T: 1 3 : 68 : 67 : 0.07
+T: 1 3 : 68 : 68 : 0.49
+T: 1 3 : 68 : 71 : 0.07
+T: 1 3 : 68 : 74 : 0.01
+T: 1 3 : 68 : 76 : 0.01
+T: 1 3 : 68 : 77 : 0.07
+T: 1 3 : 68 : 80 : 0.01
+T: 1 4 : 68 : 41 : 0.1
+T: 1 4 : 68 : 59 : 0.1
+T: 1 4 : 68 : 68 : 0.7
+T: 1 4 : 68 : 77 : 0.1
+T: 2 0 : 68 : 38 : 0.06
+T: 2 0 : 68 : 40 : 0.01
+T: 2 0 : 68 : 41 : 0.02
+T: 2 0 : 68 : 44 : 0.01
+T: 2 0 : 68 : 56 : 0.36
+T: 2 0 : 68 : 58 : 0.06
+T: 2 0 : 68 : 59 : 0.12
+T: 2 0 : 68 : 62 : 0.06
+T: 2 0 : 68 : 65 : 0.12
+T: 2 0 : 68 : 67 : 0.02
+T: 2 0 : 68 : 68 : 0.040
+T: 2 0 : 68 : 71 : 0.02
+T: 2 0 : 68 : 74 : 0.06
+T: 2 0 : 68 : 76 : 0.01
+T: 2 0 : 68 : 77 : 0.02
+T: 2 0 : 68 : 80 : 0.01
+T: 2 1 : 68 : 38 : 0.01
+T: 2 1 : 68 : 40 : 0.01
+T: 2 1 : 68 : 41 : 0.02
+T: 2 1 : 68 : 44 : 0.06
+T: 2 1 : 68 : 56 : 0.06
+T: 2 1 : 68 : 58 : 0.06
+T: 2 1 : 68 : 59 : 0.12
+T: 2 1 : 68 : 62 : 0.36
+T: 2 1 : 68 : 65 : 0.02
+T: 2 1 : 68 : 67 : 0.02
+T: 2 1 : 68 : 68 : 0.040
+T: 2 1 : 68 : 71 : 0.12
+T: 2 1 : 68 : 74 : 0.01
+T: 2 1 : 68 : 76 : 0.01
+T: 2 1 : 68 : 77 : 0.02
+T: 2 1 : 68 : 80 : 0.06
+T: 2 2 : 68 : 38 : 0.01
+T: 2 2 : 68 : 40 : 0.06
+T: 2 2 : 68 : 41 : 0.02
+T: 2 2 : 68 : 44 : 0.01
+T: 2 2 : 68 : 56 : 0.06
+T: 2 2 : 68 : 58 : 0.36
+T: 2 2 : 68 : 59 : 0.12
+T: 2 2 : 68 : 62 : 0.06
+T: 2 2 : 68 : 65 : 0.02
+T: 2 2 : 68 : 67 : 0.12
+T: 2 2 : 68 : 68 : 0.040
+T: 2 2 : 68 : 71 : 0.02
+T: 2 2 : 68 : 74 : 0.01
+T: 2 2 : 68 : 76 : 0.06
+T: 2 2 : 68 : 77 : 0.02
+T: 2 2 : 68 : 80 : 0.01
+T: 2 3 : 68 : 38 : 0.01
+T: 2 3 : 68 : 40 : 0.01
+T: 2 3 : 68 : 41 : 0.07
+T: 2 3 : 68 : 44 : 0.01
+T: 2 3 : 68 : 56 : 0.06
+T: 2 3 : 68 : 58 : 0.06
+T: 2 3 : 68 : 59 : 0.42
+T: 2 3 : 68 : 62 : 0.06
+T: 2 3 : 68 : 65 : 0.02
+T: 2 3 : 68 : 67 : 0.02
+T: 2 3 : 68 : 68 : 0.14
+T: 2 3 : 68 : 71 : 0.02
+T: 2 3 : 68 : 74 : 0.01
+T: 2 3 : 68 : 76 : 0.01
+T: 2 3 : 68 : 77 : 0.07
+T: 2 3 : 68 : 80 : 0.01
+T: 2 4 : 68 : 41 : 0.1
+T: 2 4 : 68 : 59 : 0.6
+T: 2 4 : 68 : 68 : 0.2
+T: 2 4 : 68 : 77 : 0.1
+T: 3 0 : 68 : 38 : 0.06
+T: 3 0 : 68 : 40 : 0.01
+T: 3 0 : 68 : 41 : 0.02
+T: 3 0 : 68 : 44 : 0.01
+T: 3 0 : 68 : 56 : 0.06
+T: 3 0 : 68 : 58 : 0.01
+T: 3 0 : 68 : 59 : 0.02
+T: 3 0 : 68 : 62 : 0.01
+T: 3 0 : 68 : 65 : 0.12
+T: 3 0 : 68 : 67 : 0.02
+T: 3 0 : 68 : 68 : 0.040
+T: 3 0 : 68 : 71 : 0.02
+T: 3 0 : 68 : 74 : 0.36
+T: 3 0 : 68 : 76 : 0.06
+T: 3 0 : 68 : 77 : 0.12
+T: 3 0 : 68 : 80 : 0.06
+T: 3 1 : 68 : 38 : 0.01
+T: 3 1 : 68 : 40 : 0.01
+T: 3 1 : 68 : 41 : 0.02
+T: 3 1 : 68 : 44 : 0.06
+T: 3 1 : 68 : 56 : 0.01
+T: 3 1 : 68 : 58 : 0.01
+T: 3 1 : 68 : 59 : 0.02
+T: 3 1 : 68 : 62 : 0.06
+T: 3 1 : 68 : 65 : 0.02
+T: 3 1 : 68 : 67 : 0.02
+T: 3 1 : 68 : 68 : 0.040
+T: 3 1 : 68 : 71 : 0.12
+T: 3 1 : 68 : 74 : 0.06
+T: 3 1 : 68 : 76 : 0.06
+T: 3 1 : 68 : 77 : 0.12
+T: 3 1 : 68 : 80 : 0.36
+T: 3 2 : 68 : 38 : 0.01
+T: 3 2 : 68 : 40 : 0.06
+T: 3 2 : 68 : 41 : 0.02
+T: 3 2 : 68 : 44 : 0.01
+T: 3 2 : 68 : 56 : 0.01
+T: 3 2 : 68 : 58 : 0.06
+T: 3 2 : 68 : 59 : 0.02
+T: 3 2 : 68 : 62 : 0.01
+T: 3 2 : 68 : 65 : 0.02
+T: 3 2 : 68 : 67 : 0.12
+T: 3 2 : 68 : 68 : 0.040
+T: 3 2 : 68 : 71 : 0.02
+T: 3 2 : 68 : 74 : 0.06
+T: 3 2 : 68 : 76 : 0.36
+T: 3 2 : 68 : 77 : 0.12
+T: 3 2 : 68 : 80 : 0.06
+T: 3 3 : 68 : 38 : 0.01
+T: 3 3 : 68 : 40 : 0.01
+T: 3 3 : 68 : 41 : 0.07
+T: 3 3 : 68 : 44 : 0.01
+T: 3 3 : 68 : 56 : 0.01
+T: 3 3 : 68 : 58 : 0.01
+T: 3 3 : 68 : 59 : 0.07
+T: 3 3 : 68 : 62 : 0.01
+T: 3 3 : 68 : 65 : 0.02
+T: 3 3 : 68 : 67 : 0.02
+T: 3 3 : 68 : 68 : 0.14
+T: 3 3 : 68 : 71 : 0.02
+T: 3 3 : 68 : 74 : 0.06
+T: 3 3 : 68 : 76 : 0.06
+T: 3 3 : 68 : 77 : 0.42
+T: 3 3 : 68 : 80 : 0.06
+T: 3 4 : 68 : 41 : 0.1
+T: 3 4 : 68 : 59 : 0.1
+T: 3 4 : 68 : 68 : 0.2
+T: 3 4 : 68 : 77 : 0.6
+T: 4 0 : 68 : 65 : 0.6
+T: 4 0 : 68 : 67 : 0.1
+T: 4 0 : 68 : 68 : 0.2
+T: 4 0 : 68 : 71 : 0.1
+T: 4 1 : 68 : 65 : 0.1
+T: 4 1 : 68 : 67 : 0.1
+T: 4 1 : 68 : 68 : 0.2
+T: 4 1 : 68 : 71 : 0.6
+T: 4 2 : 68 : 65 : 0.1
+T: 4 2 : 68 : 67 : 0.6
+T: 4 2 : 68 : 68 : 0.2
+T: 4 2 : 68 : 71 : 0.1
+T: 4 3 : 68 : 65 : 0.1
+T: 4 3 : 68 : 67 : 0.1
+T: 4 3 : 68 : 68 : 0.7
+T: 4 3 : 68 : 71 : 0.1
+T: 4 4 : 68 : 68 : 1.0
+T: 0 0 : 69 : 39 : 0.36
+T: 0 0 : 69 : 42 : 0.18
+T: 0 0 : 69 : 43 : 0.06
+T: 0 0 : 69 : 57 : 0.06
+T: 0 0 : 69 : 60 : 0.03
+T: 0 0 : 69 : 61 : 0.01
+T: 0 0 : 69 : 66 : 0.12
+T: 0 0 : 69 : 69 : 0.060
+T: 0 0 : 69 : 70 : 0.02
+T: 0 0 : 69 : 75 : 0.06
+T: 0 0 : 69 : 78 : 0.03
+T: 0 0 : 69 : 79 : 0.01
+T: 0 1 : 69 : 39 : 0.06
+T: 0 1 : 69 : 42 : 0.48
+T: 0 1 : 69 : 43 : 0.06
+T: 0 1 : 69 : 57 : 0.01
+T: 0 1 : 69 : 60 : 0.08
+T: 0 1 : 69 : 61 : 0.01
+T: 0 1 : 69 : 66 : 0.02
+T: 0 1 : 69 : 69 : 0.16
+T: 0 1 : 69 : 70 : 0.02
+T: 0 1 : 69 : 75 : 0.01
+T: 0 1 : 69 : 78 : 0.08
+T: 0 1 : 69 : 79 : 0.01
+T: 0 2 : 69 : 39 : 0.06
+T: 0 2 : 69 : 42 : 0.48
+T: 0 2 : 69 : 43 : 0.06
+T: 0 2 : 69 : 57 : 0.01
+T: 0 2 : 69 : 60 : 0.08
+T: 0 2 : 69 : 61 : 0.01
+T: 0 2 : 69 : 66 : 0.02
+T: 0 2 : 69 : 69 : 0.16
+T: 0 2 : 69 : 70 : 0.02
+T: 0 2 : 69 : 75 : 0.01
+T: 0 2 : 69 : 78 : 0.08
+T: 0 2 : 69 : 79 : 0.01
+T: 0 3 : 69 : 39 : 0.06
+T: 0 3 : 69 : 42 : 0.18
+T: 0 3 : 69 : 43 : 0.36
+T: 0 3 : 69 : 57 : 0.01
+T: 0 3 : 69 : 60 : 0.03
+T: 0 3 : 69 : 61 : 0.06
+T: 0 3 : 69 : 66 : 0.02
+T: 0 3 : 69 : 69 : 0.060
+T: 0 3 : 69 : 70 : 0.12
+T: 0 3 : 69 : 75 : 0.01
+T: 0 3 : 69 : 78 : 0.03
+T: 0 3 : 69 : 79 : 0.06
+T: 0 4 : 69 : 42 : 0.6
+T: 0 4 : 69 : 60 : 0.1
+T: 0 4 : 69 : 69 : 0.2
+T: 0 4 : 69 : 78 : 0.1
+T: 1 0 : 69 : 39 : 0.06
+T: 1 0 : 69 : 42 : 0.03
+T: 1 0 : 69 : 43 : 0.01
+T: 1 0 : 69 : 57 : 0.06
+T: 1 0 : 69 : 60 : 0.03
+T: 1 0 : 69 : 61 : 0.01
+T: 1 0 : 69 : 66 : 0.42
+T: 1 0 : 69 : 69 : 0.21
+T: 1 0 : 69 : 70 : 0.07
+T: 1 0 : 69 : 75 : 0.06
+T: 1 0 : 69 : 78 : 0.03
+T: 1 0 : 69 : 79 : 0.01
+T: 1 1 : 69 : 39 : 0.01
+T: 1 1 : 69 : 42 : 0.08
+T: 1 1 : 69 : 43 : 0.01
+T: 1 1 : 69 : 57 : 0.01
+T: 1 1 : 69 : 60 : 0.08
+T: 1 1 : 69 : 61 : 0.01
+T: 1 1 : 69 : 66 : 0.07
+T: 1 1 : 69 : 69 : 0.56
+T: 1 1 : 69 : 70 : 0.07
+T: 1 1 : 69 : 75 : 0.01
+T: 1 1 : 69 : 78 : 0.08
+T: 1 1 : 69 : 79 : 0.01
+T: 1 2 : 69 : 39 : 0.01
+T: 1 2 : 69 : 42 : 0.08
+T: 1 2 : 69 : 43 : 0.01
+T: 1 2 : 69 : 57 : 0.01
+T: 1 2 : 69 : 60 : 0.08
+T: 1 2 : 69 : 61 : 0.01
+T: 1 2 : 69 : 66 : 0.07
+T: 1 2 : 69 : 69 : 0.56
+T: 1 2 : 69 : 70 : 0.07
+T: 1 2 : 69 : 75 : 0.01
+T: 1 2 : 69 : 78 : 0.08
+T: 1 2 : 69 : 79 : 0.01
+T: 1 3 : 69 : 39 : 0.01
+T: 1 3 : 69 : 42 : 0.03
+T: 1 3 : 69 : 43 : 0.06
+T: 1 3 : 69 : 57 : 0.01
+T: 1 3 : 69 : 60 : 0.03
+T: 1 3 : 69 : 61 : 0.06
+T: 1 3 : 69 : 66 : 0.07
+T: 1 3 : 69 : 69 : 0.21
+T: 1 3 : 69 : 70 : 0.42
+T: 1 3 : 69 : 75 : 0.01
+T: 1 3 : 69 : 78 : 0.03
+T: 1 3 : 69 : 79 : 0.06
+T: 1 4 : 69 : 42 : 0.1
+T: 1 4 : 69 : 60 : 0.1
+T: 1 4 : 69 : 69 : 0.7
+T: 1 4 : 69 : 78 : 0.1
+T: 2 0 : 69 : 39 : 0.06
+T: 2 0 : 69 : 42 : 0.03
+T: 2 0 : 69 : 43 : 0.01
+T: 2 0 : 69 : 57 : 0.36
+T: 2 0 : 69 : 60 : 0.18
+T: 2 0 : 69 : 61 : 0.06
+T: 2 0 : 69 : 66 : 0.12
+T: 2 0 : 69 : 69 : 0.060
+T: 2 0 : 69 : 70 : 0.02
+T: 2 0 : 69 : 75 : 0.06
+T: 2 0 : 69 : 78 : 0.03
+T: 2 0 : 69 : 79 : 0.01
+T: 2 1 : 69 : 39 : 0.01
+T: 2 1 : 69 : 42 : 0.08
+T: 2 1 : 69 : 43 : 0.01
+T: 2 1 : 69 : 57 : 0.06
+T: 2 1 : 69 : 60 : 0.48
+T: 2 1 : 69 : 61 : 0.06
+T: 2 1 : 69 : 66 : 0.02
+T: 2 1 : 69 : 69 : 0.16
+T: 2 1 : 69 : 70 : 0.02
+T: 2 1 : 69 : 75 : 0.01
+T: 2 1 : 69 : 78 : 0.08
+T: 2 1 : 69 : 79 : 0.01
+T: 2 2 : 69 : 39 : 0.01
+T: 2 2 : 69 : 42 : 0.08
+T: 2 2 : 69 : 43 : 0.01
+T: 2 2 : 69 : 57 : 0.06
+T: 2 2 : 69 : 60 : 0.48
+T: 2 2 : 69 : 61 : 0.06
+T: 2 2 : 69 : 66 : 0.02
+T: 2 2 : 69 : 69 : 0.16
+T: 2 2 : 69 : 70 : 0.02
+T: 2 2 : 69 : 75 : 0.01
+T: 2 2 : 69 : 78 : 0.08
+T: 2 2 : 69 : 79 : 0.01
+T: 2 3 : 69 : 39 : 0.01
+T: 2 3 : 69 : 42 : 0.03
+T: 2 3 : 69 : 43 : 0.06
+T: 2 3 : 69 : 57 : 0.06
+T: 2 3 : 69 : 60 : 0.18
+T: 2 3 : 69 : 61 : 0.36
+T: 2 3 : 69 : 66 : 0.02
+T: 2 3 : 69 : 69 : 0.060
+T: 2 3 : 69 : 70 : 0.12
+T: 2 3 : 69 : 75 : 0.01
+T: 2 3 : 69 : 78 : 0.03
+T: 2 3 : 69 : 79 : 0.06
+T: 2 4 : 69 : 42 : 0.1
+T: 2 4 : 69 : 60 : 0.6
+T: 2 4 : 69 : 69 : 0.2
+T: 2 4 : 69 : 78 : 0.1
+T: 3 0 : 69 : 39 : 0.06
+T: 3 0 : 69 : 42 : 0.03
+T: 3 0 : 69 : 43 : 0.01
+T: 3 0 : 69 : 57 : 0.06
+T: 3 0 : 69 : 60 : 0.03
+T: 3 0 : 69 : 61 : 0.01
+T: 3 0 : 69 : 66 : 0.12
+T: 3 0 : 69 : 69 : 0.060
+T: 3 0 : 69 : 70 : 0.02
+T: 3 0 : 69 : 75 : 0.36
+T: 3 0 : 69 : 78 : 0.18
+T: 3 0 : 69 : 79 : 0.06
+T: 3 1 : 69 : 39 : 0.01
+T: 3 1 : 69 : 42 : 0.08
+T: 3 1 : 69 : 43 : 0.01
+T: 3 1 : 69 : 57 : 0.01
+T: 3 1 : 69 : 60 : 0.08
+T: 3 1 : 69 : 61 : 0.01
+T: 3 1 : 69 : 66 : 0.02
+T: 3 1 : 69 : 69 : 0.16
+T: 3 1 : 69 : 70 : 0.02
+T: 3 1 : 69 : 75 : 0.06
+T: 3 1 : 69 : 78 : 0.48
+T: 3 1 : 69 : 79 : 0.06
+T: 3 2 : 69 : 39 : 0.01
+T: 3 2 : 69 : 42 : 0.08
+T: 3 2 : 69 : 43 : 0.01
+T: 3 2 : 69 : 57 : 0.01
+T: 3 2 : 69 : 60 : 0.08
+T: 3 2 : 69 : 61 : 0.01
+T: 3 2 : 69 : 66 : 0.02
+T: 3 2 : 69 : 69 : 0.16
+T: 3 2 : 69 : 70 : 0.02
+T: 3 2 : 69 : 75 : 0.06
+T: 3 2 : 69 : 78 : 0.48
+T: 3 2 : 69 : 79 : 0.06
+T: 3 3 : 69 : 39 : 0.01
+T: 3 3 : 69 : 42 : 0.03
+T: 3 3 : 69 : 43 : 0.06
+T: 3 3 : 69 : 57 : 0.01
+T: 3 3 : 69 : 60 : 0.03
+T: 3 3 : 69 : 61 : 0.06
+T: 3 3 : 69 : 66 : 0.02
+T: 3 3 : 69 : 69 : 0.060
+T: 3 3 : 69 : 70 : 0.12
+T: 3 3 : 69 : 75 : 0.06
+T: 3 3 : 69 : 78 : 0.18
+T: 3 3 : 69 : 79 : 0.36
+T: 3 4 : 69 : 42 : 0.1
+T: 3 4 : 69 : 60 : 0.1
+T: 3 4 : 69 : 69 : 0.2
+T: 3 4 : 69 : 78 : 0.6
+T: 4 0 : 69 : 66 : 0.6
+T: 4 0 : 69 : 69 : 0.3
+T: 4 0 : 69 : 70 : 0.1
+T: 4 1 : 69 : 66 : 0.1
+T: 4 1 : 69 : 69 : 0.8
+T: 4 1 : 69 : 70 : 0.1
+T: 4 2 : 69 : 66 : 0.1
+T: 4 2 : 69 : 69 : 0.8
+T: 4 2 : 69 : 70 : 0.1
+T: 4 3 : 69 : 66 : 0.1
+T: 4 3 : 69 : 69 : 0.3
+T: 4 3 : 69 : 70 : 0.6
+T: 4 4 : 69 : 69 : 1.0
+T: 0 0 : 70 : 40 : 0.36
+T: 0 0 : 70 : 42 : 0.06
+T: 0 0 : 70 : 43 : 0.12
+T: 0 0 : 70 : 44 : 0.06
+T: 0 0 : 70 : 58 : 0.06
+T: 0 0 : 70 : 60 : 0.01
+T: 0 0 : 70 : 61 : 0.02
+T: 0 0 : 70 : 62 : 0.01
+T: 0 0 : 70 : 67 : 0.12
+T: 0 0 : 70 : 69 : 0.02
+T: 0 0 : 70 : 70 : 0.040
+T: 0 0 : 70 : 71 : 0.02
+T: 0 0 : 70 : 76 : 0.06
+T: 0 0 : 70 : 78 : 0.01
+T: 0 0 : 70 : 79 : 0.02
+T: 0 0 : 70 : 80 : 0.01
+T: 0 1 : 70 : 40 : 0.06
+T: 0 1 : 70 : 42 : 0.06
+T: 0 1 : 70 : 43 : 0.42
+T: 0 1 : 70 : 44 : 0.06
+T: 0 1 : 70 : 58 : 0.01
+T: 0 1 : 70 : 60 : 0.01
+T: 0 1 : 70 : 61 : 0.07
+T: 0 1 : 70 : 62 : 0.01
+T: 0 1 : 70 : 67 : 0.02
+T: 0 1 : 70 : 69 : 0.02
+T: 0 1 : 70 : 70 : 0.14
+T: 0 1 : 70 : 71 : 0.02
+T: 0 1 : 70 : 76 : 0.01
+T: 0 1 : 70 : 78 : 0.01
+T: 0 1 : 70 : 79 : 0.07
+T: 0 1 : 70 : 80 : 0.01
+T: 0 2 : 70 : 40 : 0.06
+T: 0 2 : 70 : 42 : 0.36
+T: 0 2 : 70 : 43 : 0.12
+T: 0 2 : 70 : 44 : 0.06
+T: 0 2 : 70 : 58 : 0.01
+T: 0 2 : 70 : 60 : 0.06
+T: 0 2 : 70 : 61 : 0.02
+T: 0 2 : 70 : 62 : 0.01
+T: 0 2 : 70 : 67 : 0.02
+T: 0 2 : 70 : 69 : 0.12
+T: 0 2 : 70 : 70 : 0.040
+T: 0 2 : 70 : 71 : 0.02
+T: 0 2 : 70 : 76 : 0.01
+T: 0 2 : 70 : 78 : 0.06
+T: 0 2 : 70 : 79 : 0.02
+T: 0 2 : 70 : 80 : 0.01
+T: 0 3 : 70 : 40 : 0.06
+T: 0 3 : 70 : 42 : 0.06
+T: 0 3 : 70 : 43 : 0.12
+T: 0 3 : 70 : 44 : 0.36
+T: 0 3 : 70 : 58 : 0.01
+T: 0 3 : 70 : 60 : 0.01
+T: 0 3 : 70 : 61 : 0.02
+T: 0 3 : 70 : 62 : 0.06
+T: 0 3 : 70 : 67 : 0.02
+T: 0 3 : 70 : 69 : 0.02
+T: 0 3 : 70 : 70 : 0.040
+T: 0 3 : 70 : 71 : 0.12
+T: 0 3 : 70 : 76 : 0.01
+T: 0 3 : 70 : 78 : 0.01
+T: 0 3 : 70 : 79 : 0.02
+T: 0 3 : 70 : 80 : 0.06
+T: 0 4 : 70 : 43 : 0.6
+T: 0 4 : 70 : 61 : 0.1
+T: 0 4 : 70 : 70 : 0.2
+T: 0 4 : 70 : 79 : 0.1
+T: 1 0 : 70 : 40 : 0.06
+T: 1 0 : 70 : 42 : 0.01
+T: 1 0 : 70 : 43 : 0.02
+T: 1 0 : 70 : 44 : 0.01
+T: 1 0 : 70 : 58 : 0.06
+T: 1 0 : 70 : 60 : 0.01
+T: 1 0 : 70 : 61 : 0.02
+T: 1 0 : 70 : 62 : 0.01
+T: 1 0 : 70 : 67 : 0.42
+T: 1 0 : 70 : 69 : 0.07
+T: 1 0 : 70 : 70 : 0.14
+T: 1 0 : 70 : 71 : 0.07
+T: 1 0 : 70 : 76 : 0.06
+T: 1 0 : 70 : 78 : 0.01
+T: 1 0 : 70 : 79 : 0.02
+T: 1 0 : 70 : 80 : 0.01
+T: 1 1 : 70 : 40 : 0.01
+T: 1 1 : 70 : 42 : 0.01
+T: 1 1 : 70 : 43 : 0.07
+T: 1 1 : 70 : 44 : 0.01
+T: 1 1 : 70 : 58 : 0.01
+T: 1 1 : 70 : 60 : 0.01
+T: 1 1 : 70 : 61 : 0.07
+T: 1 1 : 70 : 62 : 0.01
+T: 1 1 : 70 : 67 : 0.07
+T: 1 1 : 70 : 69 : 0.07
+T: 1 1 : 70 : 70 : 0.49
+T: 1 1 : 70 : 71 : 0.07
+T: 1 1 : 70 : 76 : 0.01
+T: 1 1 : 70 : 78 : 0.01
+T: 1 1 : 70 : 79 : 0.07
+T: 1 1 : 70 : 80 : 0.01
+T: 1 2 : 70 : 40 : 0.01
+T: 1 2 : 70 : 42 : 0.06
+T: 1 2 : 70 : 43 : 0.02
+T: 1 2 : 70 : 44 : 0.01
+T: 1 2 : 70 : 58 : 0.01
+T: 1 2 : 70 : 60 : 0.06
+T: 1 2 : 70 : 61 : 0.02
+T: 1 2 : 70 : 62 : 0.01
+T: 1 2 : 70 : 67 : 0.07
+T: 1 2 : 70 : 69 : 0.42
+T: 1 2 : 70 : 70 : 0.14
+T: 1 2 : 70 : 71 : 0.07
+T: 1 2 : 70 : 76 : 0.01
+T: 1 2 : 70 : 78 : 0.06
+T: 1 2 : 70 : 79 : 0.02
+T: 1 2 : 70 : 80 : 0.01
+T: 1 3 : 70 : 40 : 0.01
+T: 1 3 : 70 : 42 : 0.01
+T: 1 3 : 70 : 43 : 0.02
+T: 1 3 : 70 : 44 : 0.06
+T: 1 3 : 70 : 58 : 0.01
+T: 1 3 : 70 : 60 : 0.01
+T: 1 3 : 70 : 61 : 0.02
+T: 1 3 : 70 : 62 : 0.06
+T: 1 3 : 70 : 67 : 0.07
+T: 1 3 : 70 : 69 : 0.07
+T: 1 3 : 70 : 70 : 0.14
+T: 1 3 : 70 : 71 : 0.42
+T: 1 3 : 70 : 76 : 0.01
+T: 1 3 : 70 : 78 : 0.01
+T: 1 3 : 70 : 79 : 0.02
+T: 1 3 : 70 : 80 : 0.06
+T: 1 4 : 70 : 43 : 0.1
+T: 1 4 : 70 : 61 : 0.1
+T: 1 4 : 70 : 70 : 0.7
+T: 1 4 : 70 : 79 : 0.1
+T: 2 0 : 70 : 40 : 0.06
+T: 2 0 : 70 : 42 : 0.01
+T: 2 0 : 70 : 43 : 0.02
+T: 2 0 : 70 : 44 : 0.01
+T: 2 0 : 70 : 58 : 0.36
+T: 2 0 : 70 : 60 : 0.06
+T: 2 0 : 70 : 61 : 0.12
+T: 2 0 : 70 : 62 : 0.06
+T: 2 0 : 70 : 67 : 0.12
+T: 2 0 : 70 : 69 : 0.02
+T: 2 0 : 70 : 70 : 0.040
+T: 2 0 : 70 : 71 : 0.02
+T: 2 0 : 70 : 76 : 0.06
+T: 2 0 : 70 : 78 : 0.01
+T: 2 0 : 70 : 79 : 0.02
+T: 2 0 : 70 : 80 : 0.01
+T: 2 1 : 70 : 40 : 0.01
+T: 2 1 : 70 : 42 : 0.01
+T: 2 1 : 70 : 43 : 0.07
+T: 2 1 : 70 : 44 : 0.01
+T: 2 1 : 70 : 58 : 0.06
+T: 2 1 : 70 : 60 : 0.06
+T: 2 1 : 70 : 61 : 0.42
+T: 2 1 : 70 : 62 : 0.06
+T: 2 1 : 70 : 67 : 0.02
+T: 2 1 : 70 : 69 : 0.02
+T: 2 1 : 70 : 70 : 0.14
+T: 2 1 : 70 : 71 : 0.02
+T: 2 1 : 70 : 76 : 0.01
+T: 2 1 : 70 : 78 : 0.01
+T: 2 1 : 70 : 79 : 0.07
+T: 2 1 : 70 : 80 : 0.01
+T: 2 2 : 70 : 40 : 0.01
+T: 2 2 : 70 : 42 : 0.06
+T: 2 2 : 70 : 43 : 0.02
+T: 2 2 : 70 : 44 : 0.01
+T: 2 2 : 70 : 58 : 0.06
+T: 2 2 : 70 : 60 : 0.36
+T: 2 2 : 70 : 61 : 0.12
+T: 2 2 : 70 : 62 : 0.06
+T: 2 2 : 70 : 67 : 0.02
+T: 2 2 : 70 : 69 : 0.12
+T: 2 2 : 70 : 70 : 0.040
+T: 2 2 : 70 : 71 : 0.02
+T: 2 2 : 70 : 76 : 0.01
+T: 2 2 : 70 : 78 : 0.06
+T: 2 2 : 70 : 79 : 0.02
+T: 2 2 : 70 : 80 : 0.01
+T: 2 3 : 70 : 40 : 0.01
+T: 2 3 : 70 : 42 : 0.01
+T: 2 3 : 70 : 43 : 0.02
+T: 2 3 : 70 : 44 : 0.06
+T: 2 3 : 70 : 58 : 0.06
+T: 2 3 : 70 : 60 : 0.06
+T: 2 3 : 70 : 61 : 0.12
+T: 2 3 : 70 : 62 : 0.36
+T: 2 3 : 70 : 67 : 0.02
+T: 2 3 : 70 : 69 : 0.02
+T: 2 3 : 70 : 70 : 0.040
+T: 2 3 : 70 : 71 : 0.12
+T: 2 3 : 70 : 76 : 0.01
+T: 2 3 : 70 : 78 : 0.01
+T: 2 3 : 70 : 79 : 0.02
+T: 2 3 : 70 : 80 : 0.06
+T: 2 4 : 70 : 43 : 0.1
+T: 2 4 : 70 : 61 : 0.6
+T: 2 4 : 70 : 70 : 0.2
+T: 2 4 : 70 : 79 : 0.1
+T: 3 0 : 70 : 40 : 0.06
+T: 3 0 : 70 : 42 : 0.01
+T: 3 0 : 70 : 43 : 0.02
+T: 3 0 : 70 : 44 : 0.01
+T: 3 0 : 70 : 58 : 0.06
+T: 3 0 : 70 : 60 : 0.01
+T: 3 0 : 70 : 61 : 0.02
+T: 3 0 : 70 : 62 : 0.01
+T: 3 0 : 70 : 67 : 0.12
+T: 3 0 : 70 : 69 : 0.02
+T: 3 0 : 70 : 70 : 0.040
+T: 3 0 : 70 : 71 : 0.02
+T: 3 0 : 70 : 76 : 0.36
+T: 3 0 : 70 : 78 : 0.06
+T: 3 0 : 70 : 79 : 0.12
+T: 3 0 : 70 : 80 : 0.06
+T: 3 1 : 70 : 40 : 0.01
+T: 3 1 : 70 : 42 : 0.01
+T: 3 1 : 70 : 43 : 0.07
+T: 3 1 : 70 : 44 : 0.01
+T: 3 1 : 70 : 58 : 0.01
+T: 3 1 : 70 : 60 : 0.01
+T: 3 1 : 70 : 61 : 0.07
+T: 3 1 : 70 : 62 : 0.01
+T: 3 1 : 70 : 67 : 0.02
+T: 3 1 : 70 : 69 : 0.02
+T: 3 1 : 70 : 70 : 0.14
+T: 3 1 : 70 : 71 : 0.02
+T: 3 1 : 70 : 76 : 0.06
+T: 3 1 : 70 : 78 : 0.06
+T: 3 1 : 70 : 79 : 0.42
+T: 3 1 : 70 : 80 : 0.06
+T: 3 2 : 70 : 40 : 0.01
+T: 3 2 : 70 : 42 : 0.06
+T: 3 2 : 70 : 43 : 0.02
+T: 3 2 : 70 : 44 : 0.01
+T: 3 2 : 70 : 58 : 0.01
+T: 3 2 : 70 : 60 : 0.06
+T: 3 2 : 70 : 61 : 0.02
+T: 3 2 : 70 : 62 : 0.01
+T: 3 2 : 70 : 67 : 0.02
+T: 3 2 : 70 : 69 : 0.12
+T: 3 2 : 70 : 70 : 0.040
+T: 3 2 : 70 : 71 : 0.02
+T: 3 2 : 70 : 76 : 0.06
+T: 3 2 : 70 : 78 : 0.36
+T: 3 2 : 70 : 79 : 0.12
+T: 3 2 : 70 : 80 : 0.06
+T: 3 3 : 70 : 40 : 0.01
+T: 3 3 : 70 : 42 : 0.01
+T: 3 3 : 70 : 43 : 0.02
+T: 3 3 : 70 : 44 : 0.06
+T: 3 3 : 70 : 58 : 0.01
+T: 3 3 : 70 : 60 : 0.01
+T: 3 3 : 70 : 61 : 0.02
+T: 3 3 : 70 : 62 : 0.06
+T: 3 3 : 70 : 67 : 0.02
+T: 3 3 : 70 : 69 : 0.02
+T: 3 3 : 70 : 70 : 0.040
+T: 3 3 : 70 : 71 : 0.12
+T: 3 3 : 70 : 76 : 0.06
+T: 3 3 : 70 : 78 : 0.06
+T: 3 3 : 70 : 79 : 0.12
+T: 3 3 : 70 : 80 : 0.36
+T: 3 4 : 70 : 43 : 0.1
+T: 3 4 : 70 : 61 : 0.1
+T: 3 4 : 70 : 70 : 0.2
+T: 3 4 : 70 : 79 : 0.6
+T: 4 0 : 70 : 67 : 0.6
+T: 4 0 : 70 : 69 : 0.1
+T: 4 0 : 70 : 70 : 0.2
+T: 4 0 : 70 : 71 : 0.1
+T: 4 1 : 70 : 67 : 0.1
+T: 4 1 : 70 : 69 : 0.1
+T: 4 1 : 70 : 70 : 0.7
+T: 4 1 : 70 : 71 : 0.1
+T: 4 2 : 70 : 67 : 0.1
+T: 4 2 : 70 : 69 : 0.6
+T: 4 2 : 70 : 70 : 0.2
+T: 4 2 : 70 : 71 : 0.1
+T: 4 3 : 70 : 67 : 0.1
+T: 4 3 : 70 : 69 : 0.1
+T: 4 3 : 70 : 70 : 0.2
+T: 4 3 : 70 : 71 : 0.6
+T: 4 4 : 70 : 70 : 1.0
+T: 0 0 : 71 : 41 : 0.36
+T: 0 0 : 71 : 43 : 0.06
+T: 0 0 : 71 : 44 : 0.18
+T: 0 0 : 71 : 59 : 0.06
+T: 0 0 : 71 : 61 : 0.01
+T: 0 0 : 71 : 62 : 0.03
+T: 0 0 : 71 : 68 : 0.12
+T: 0 0 : 71 : 70 : 0.02
+T: 0 0 : 71 : 71 : 0.060
+T: 0 0 : 71 : 77 : 0.06
+T: 0 0 : 71 : 79 : 0.01
+T: 0 0 : 71 : 80 : 0.03
+T: 0 1 : 71 : 41 : 0.06
+T: 0 1 : 71 : 43 : 0.06
+T: 0 1 : 71 : 44 : 0.48
+T: 0 1 : 71 : 59 : 0.01
+T: 0 1 : 71 : 61 : 0.01
+T: 0 1 : 71 : 62 : 0.08
+T: 0 1 : 71 : 68 : 0.02
+T: 0 1 : 71 : 70 : 0.02
+T: 0 1 : 71 : 71 : 0.16
+T: 0 1 : 71 : 77 : 0.01
+T: 0 1 : 71 : 79 : 0.01
+T: 0 1 : 71 : 80 : 0.08
+T: 0 2 : 71 : 41 : 0.06
+T: 0 2 : 71 : 43 : 0.36
+T: 0 2 : 71 : 44 : 0.18
+T: 0 2 : 71 : 59 : 0.01
+T: 0 2 : 71 : 61 : 0.06
+T: 0 2 : 71 : 62 : 0.03
+T: 0 2 : 71 : 68 : 0.02
+T: 0 2 : 71 : 70 : 0.12
+T: 0 2 : 71 : 71 : 0.060
+T: 0 2 : 71 : 77 : 0.01
+T: 0 2 : 71 : 79 : 0.06
+T: 0 2 : 71 : 80 : 0.03
+T: 0 3 : 71 : 41 : 0.06
+T: 0 3 : 71 : 43 : 0.06
+T: 0 3 : 71 : 44 : 0.48
+T: 0 3 : 71 : 59 : 0.01
+T: 0 3 : 71 : 61 : 0.01
+T: 0 3 : 71 : 62 : 0.08
+T: 0 3 : 71 : 68 : 0.02
+T: 0 3 : 71 : 70 : 0.02
+T: 0 3 : 71 : 71 : 0.16
+T: 0 3 : 71 : 77 : 0.01
+T: 0 3 : 71 : 79 : 0.01
+T: 0 3 : 71 : 80 : 0.08
+T: 0 4 : 71 : 44 : 0.6
+T: 0 4 : 71 : 62 : 0.1
+T: 0 4 : 71 : 71 : 0.2
+T: 0 4 : 71 : 80 : 0.1
+T: 1 0 : 71 : 41 : 0.06
+T: 1 0 : 71 : 43 : 0.01
+T: 1 0 : 71 : 44 : 0.03
+T: 1 0 : 71 : 59 : 0.06
+T: 1 0 : 71 : 61 : 0.01
+T: 1 0 : 71 : 62 : 0.03
+T: 1 0 : 71 : 68 : 0.42
+T: 1 0 : 71 : 70 : 0.07
+T: 1 0 : 71 : 71 : 0.21
+T: 1 0 : 71 : 77 : 0.06
+T: 1 0 : 71 : 79 : 0.01
+T: 1 0 : 71 : 80 : 0.03
+T: 1 1 : 71 : 41 : 0.01
+T: 1 1 : 71 : 43 : 0.01
+T: 1 1 : 71 : 44 : 0.08
+T: 1 1 : 71 : 59 : 0.01
+T: 1 1 : 71 : 61 : 0.01
+T: 1 1 : 71 : 62 : 0.08
+T: 1 1 : 71 : 68 : 0.07
+T: 1 1 : 71 : 70 : 0.07
+T: 1 1 : 71 : 71 : 0.56
+T: 1 1 : 71 : 77 : 0.01
+T: 1 1 : 71 : 79 : 0.01
+T: 1 1 : 71 : 80 : 0.08
+T: 1 2 : 71 : 41 : 0.01
+T: 1 2 : 71 : 43 : 0.06
+T: 1 2 : 71 : 44 : 0.03
+T: 1 2 : 71 : 59 : 0.01
+T: 1 2 : 71 : 61 : 0.06
+T: 1 2 : 71 : 62 : 0.03
+T: 1 2 : 71 : 68 : 0.07
+T: 1 2 : 71 : 70 : 0.42
+T: 1 2 : 71 : 71 : 0.21
+T: 1 2 : 71 : 77 : 0.01
+T: 1 2 : 71 : 79 : 0.06
+T: 1 2 : 71 : 80 : 0.03
+T: 1 3 : 71 : 41 : 0.01
+T: 1 3 : 71 : 43 : 0.01
+T: 1 3 : 71 : 44 : 0.08
+T: 1 3 : 71 : 59 : 0.01
+T: 1 3 : 71 : 61 : 0.01
+T: 1 3 : 71 : 62 : 0.08
+T: 1 3 : 71 : 68 : 0.07
+T: 1 3 : 71 : 70 : 0.07
+T: 1 3 : 71 : 71 : 0.56
+T: 1 3 : 71 : 77 : 0.01
+T: 1 3 : 71 : 79 : 0.01
+T: 1 3 : 71 : 80 : 0.08
+T: 1 4 : 71 : 44 : 0.1
+T: 1 4 : 71 : 62 : 0.1
+T: 1 4 : 71 : 71 : 0.7
+T: 1 4 : 71 : 80 : 0.1
+T: 2 0 : 71 : 41 : 0.06
+T: 2 0 : 71 : 43 : 0.01
+T: 2 0 : 71 : 44 : 0.03
+T: 2 0 : 71 : 59 : 0.36
+T: 2 0 : 71 : 61 : 0.06
+T: 2 0 : 71 : 62 : 0.18
+T: 2 0 : 71 : 68 : 0.12
+T: 2 0 : 71 : 70 : 0.02
+T: 2 0 : 71 : 71 : 0.060
+T: 2 0 : 71 : 77 : 0.06
+T: 2 0 : 71 : 79 : 0.01
+T: 2 0 : 71 : 80 : 0.03
+T: 2 1 : 71 : 41 : 0.01
+T: 2 1 : 71 : 43 : 0.01
+T: 2 1 : 71 : 44 : 0.08
+T: 2 1 : 71 : 59 : 0.06
+T: 2 1 : 71 : 61 : 0.06
+T: 2 1 : 71 : 62 : 0.48
+T: 2 1 : 71 : 68 : 0.02
+T: 2 1 : 71 : 70 : 0.02
+T: 2 1 : 71 : 71 : 0.16
+T: 2 1 : 71 : 77 : 0.01
+T: 2 1 : 71 : 79 : 0.01
+T: 2 1 : 71 : 80 : 0.08
+T: 2 2 : 71 : 41 : 0.01
+T: 2 2 : 71 : 43 : 0.06
+T: 2 2 : 71 : 44 : 0.03
+T: 2 2 : 71 : 59 : 0.06
+T: 2 2 : 71 : 61 : 0.36
+T: 2 2 : 71 : 62 : 0.18
+T: 2 2 : 71 : 68 : 0.02
+T: 2 2 : 71 : 70 : 0.12
+T: 2 2 : 71 : 71 : 0.060
+T: 2 2 : 71 : 77 : 0.01
+T: 2 2 : 71 : 79 : 0.06
+T: 2 2 : 71 : 80 : 0.03
+T: 2 3 : 71 : 41 : 0.01
+T: 2 3 : 71 : 43 : 0.01
+T: 2 3 : 71 : 44 : 0.08
+T: 2 3 : 71 : 59 : 0.06
+T: 2 3 : 71 : 61 : 0.06
+T: 2 3 : 71 : 62 : 0.48
+T: 2 3 : 71 : 68 : 0.02
+T: 2 3 : 71 : 70 : 0.02
+T: 2 3 : 71 : 71 : 0.16
+T: 2 3 : 71 : 77 : 0.01
+T: 2 3 : 71 : 79 : 0.01
+T: 2 3 : 71 : 80 : 0.08
+T: 2 4 : 71 : 44 : 0.1
+T: 2 4 : 71 : 62 : 0.6
+T: 2 4 : 71 : 71 : 0.2
+T: 2 4 : 71 : 80 : 0.1
+T: 3 0 : 71 : 41 : 0.06
+T: 3 0 : 71 : 43 : 0.01
+T: 3 0 : 71 : 44 : 0.03
+T: 3 0 : 71 : 59 : 0.06
+T: 3 0 : 71 : 61 : 0.01
+T: 3 0 : 71 : 62 : 0.03
+T: 3 0 : 71 : 68 : 0.12
+T: 3 0 : 71 : 70 : 0.02
+T: 3 0 : 71 : 71 : 0.060
+T: 3 0 : 71 : 77 : 0.36
+T: 3 0 : 71 : 79 : 0.06
+T: 3 0 : 71 : 80 : 0.18
+T: 3 1 : 71 : 41 : 0.01
+T: 3 1 : 71 : 43 : 0.01
+T: 3 1 : 71 : 44 : 0.08
+T: 3 1 : 71 : 59 : 0.01
+T: 3 1 : 71 : 61 : 0.01
+T: 3 1 : 71 : 62 : 0.08
+T: 3 1 : 71 : 68 : 0.02
+T: 3 1 : 71 : 70 : 0.02
+T: 3 1 : 71 : 71 : 0.16
+T: 3 1 : 71 : 77 : 0.06
+T: 3 1 : 71 : 79 : 0.06
+T: 3 1 : 71 : 80 : 0.48
+T: 3 2 : 71 : 41 : 0.01
+T: 3 2 : 71 : 43 : 0.06
+T: 3 2 : 71 : 44 : 0.03
+T: 3 2 : 71 : 59 : 0.01
+T: 3 2 : 71 : 61 : 0.06
+T: 3 2 : 71 : 62 : 0.03
+T: 3 2 : 71 : 68 : 0.02
+T: 3 2 : 71 : 70 : 0.12
+T: 3 2 : 71 : 71 : 0.060
+T: 3 2 : 71 : 77 : 0.06
+T: 3 2 : 71 : 79 : 0.36
+T: 3 2 : 71 : 80 : 0.18
+T: 3 3 : 71 : 41 : 0.01
+T: 3 3 : 71 : 43 : 0.01
+T: 3 3 : 71 : 44 : 0.08
+T: 3 3 : 71 : 59 : 0.01
+T: 3 3 : 71 : 61 : 0.01
+T: 3 3 : 71 : 62 : 0.08
+T: 3 3 : 71 : 68 : 0.02
+T: 3 3 : 71 : 70 : 0.02
+T: 3 3 : 71 : 71 : 0.16
+T: 3 3 : 71 : 77 : 0.06
+T: 3 3 : 71 : 79 : 0.06
+T: 3 3 : 71 : 80 : 0.48
+T: 3 4 : 71 : 44 : 0.1
+T: 3 4 : 71 : 62 : 0.1
+T: 3 4 : 71 : 71 : 0.2
+T: 3 4 : 71 : 80 : 0.6
+T: 4 0 : 71 : 68 : 0.6
+T: 4 0 : 71 : 70 : 0.1
+T: 4 0 : 71 : 71 : 0.3
+T: 4 1 : 71 : 68 : 0.1
+T: 4 1 : 71 : 70 : 0.1
+T: 4 1 : 71 : 71 : 0.8
+T: 4 2 : 71 : 68 : 0.1
+T: 4 2 : 71 : 70 : 0.6
+T: 4 2 : 71 : 71 : 0.3
+T: 4 3 : 71 : 68 : 0.1
+T: 4 3 : 71 : 70 : 0.1
+T: 4 3 : 71 : 71 : 0.8
+T: 4 4 : 71 : 71 : 1.0
+T: 0 0 : 72 : 45 : 0.48
+T: 0 0 : 72 : 46 : 0.06
+T: 0 0 : 72 : 48 : 0.06
+T: 0 0 : 72 : 63 : 0.08
+T: 0 0 : 72 : 64 : 0.01
+T: 0 0 : 72 : 66 : 0.01
+T: 0 0 : 72 : 72 : 0.24
+T: 0 0 : 72 : 73 : 0.03
+T: 0 0 : 72 : 75 : 0.03
+T: 0 1 : 72 : 45 : 0.18
+T: 0 1 : 72 : 46 : 0.06
+T: 0 1 : 72 : 48 : 0.36
+T: 0 1 : 72 : 63 : 0.03
+T: 0 1 : 72 : 64 : 0.01
+T: 0 1 : 72 : 66 : 0.06
+T: 0 1 : 72 : 72 : 0.09
+T: 0 1 : 72 : 73 : 0.03
+T: 0 1 : 72 : 75 : 0.18
+T: 0 2 : 72 : 45 : 0.48
+T: 0 2 : 72 : 46 : 0.06
+T: 0 2 : 72 : 48 : 0.06
+T: 0 2 : 72 : 63 : 0.08
+T: 0 2 : 72 : 64 : 0.01
+T: 0 2 : 72 : 66 : 0.01
+T: 0 2 : 72 : 72 : 0.24
+T: 0 2 : 72 : 73 : 0.03
+T: 0 2 : 72 : 75 : 0.03
+T: 0 3 : 72 : 45 : 0.18
+T: 0 3 : 72 : 46 : 0.36
+T: 0 3 : 72 : 48 : 0.06
+T: 0 3 : 72 : 63 : 0.03
+T: 0 3 : 72 : 64 : 0.06
+T: 0 3 : 72 : 66 : 0.01
+T: 0 3 : 72 : 72 : 0.09
+T: 0 3 : 72 : 73 : 0.18
+T: 0 3 : 72 : 75 : 0.03
+T: 0 4 : 72 : 45 : 0.6
+T: 0 4 : 72 : 63 : 0.1
+T: 0 4 : 72 : 72 : 0.3
+T: 1 0 : 72 : 45 : 0.08
+T: 1 0 : 72 : 46 : 0.01
+T: 1 0 : 72 : 48 : 0.01
+T: 1 0 : 72 : 63 : 0.08
+T: 1 0 : 72 : 64 : 0.01
+T: 1 0 : 72 : 66 : 0.01
+T: 1 0 : 72 : 72 : 0.64
+T: 1 0 : 72 : 73 : 0.08
+T: 1 0 : 72 : 75 : 0.08
+T: 1 1 : 72 : 45 : 0.03
+T: 1 1 : 72 : 46 : 0.01
+T: 1 1 : 72 : 48 : 0.06
+T: 1 1 : 72 : 63 : 0.03
+T: 1 1 : 72 : 64 : 0.01
+T: 1 1 : 72 : 66 : 0.06
+T: 1 1 : 72 : 72 : 0.24
+T: 1 1 : 72 : 73 : 0.08
+T: 1 1 : 72 : 75 : 0.48
+T: 1 2 : 72 : 45 : 0.08
+T: 1 2 : 72 : 46 : 0.01
+T: 1 2 : 72 : 48 : 0.01
+T: 1 2 : 72 : 63 : 0.08
+T: 1 2 : 72 : 64 : 0.01
+T: 1 2 : 72 : 66 : 0.01
+T: 1 2 : 72 : 72 : 0.64
+T: 1 2 : 72 : 73 : 0.08
+T: 1 2 : 72 : 75 : 0.08
+T: 1 3 : 72 : 45 : 0.03
+T: 1 3 : 72 : 46 : 0.06
+T: 1 3 : 72 : 48 : 0.01
+T: 1 3 : 72 : 63 : 0.03
+T: 1 3 : 72 : 64 : 0.06
+T: 1 3 : 72 : 66 : 0.01
+T: 1 3 : 72 : 72 : 0.24
+T: 1 3 : 72 : 73 : 0.48
+T: 1 3 : 72 : 75 : 0.08
+T: 1 4 : 72 : 45 : 0.1
+T: 1 4 : 72 : 63 : 0.1
+T: 1 4 : 72 : 72 : 0.8
+T: 2 0 : 72 : 45 : 0.08
+T: 2 0 : 72 : 46 : 0.01
+T: 2 0 : 72 : 48 : 0.01
+T: 2 0 : 72 : 63 : 0.48
+T: 2 0 : 72 : 64 : 0.06
+T: 2 0 : 72 : 66 : 0.06
+T: 2 0 : 72 : 72 : 0.24
+T: 2 0 : 72 : 73 : 0.03
+T: 2 0 : 72 : 75 : 0.03
+T: 2 1 : 72 : 45 : 0.03
+T: 2 1 : 72 : 46 : 0.01
+T: 2 1 : 72 : 48 : 0.06
+T: 2 1 : 72 : 63 : 0.18
+T: 2 1 : 72 : 64 : 0.06
+T: 2 1 : 72 : 66 : 0.36
+T: 2 1 : 72 : 72 : 0.09
+T: 2 1 : 72 : 73 : 0.03
+T: 2 1 : 72 : 75 : 0.18
+T: 2 2 : 72 : 45 : 0.08
+T: 2 2 : 72 : 46 : 0.01
+T: 2 2 : 72 : 48 : 0.01
+T: 2 2 : 72 : 63 : 0.48
+T: 2 2 : 72 : 64 : 0.06
+T: 2 2 : 72 : 66 : 0.06
+T: 2 2 : 72 : 72 : 0.24
+T: 2 2 : 72 : 73 : 0.03
+T: 2 2 : 72 : 75 : 0.03
+T: 2 3 : 72 : 45 : 0.03
+T: 2 3 : 72 : 46 : 0.06
+T: 2 3 : 72 : 48 : 0.01
+T: 2 3 : 72 : 63 : 0.18
+T: 2 3 : 72 : 64 : 0.36
+T: 2 3 : 72 : 66 : 0.06
+T: 2 3 : 72 : 72 : 0.09
+T: 2 3 : 72 : 73 : 0.18
+T: 2 3 : 72 : 75 : 0.03
+T: 2 4 : 72 : 45 : 0.1
+T: 2 4 : 72 : 63 : 0.6
+T: 2 4 : 72 : 72 : 0.3
+T: 3 0 : 72 : 45 : 0.08
+T: 3 0 : 72 : 46 : 0.01
+T: 3 0 : 72 : 48 : 0.01
+T: 3 0 : 72 : 63 : 0.08
+T: 3 0 : 72 : 64 : 0.01
+T: 3 0 : 72 : 66 : 0.01
+T: 3 0 : 72 : 72 : 0.64
+T: 3 0 : 72 : 73 : 0.08
+T: 3 0 : 72 : 75 : 0.08
+T: 3 1 : 72 : 45 : 0.03
+T: 3 1 : 72 : 46 : 0.01
+T: 3 1 : 72 : 48 : 0.06
+T: 3 1 : 72 : 63 : 0.03
+T: 3 1 : 72 : 64 : 0.01
+T: 3 1 : 72 : 66 : 0.06
+T: 3 1 : 72 : 72 : 0.24
+T: 3 1 : 72 : 73 : 0.08
+T: 3 1 : 72 : 75 : 0.48
+T: 3 2 : 72 : 45 : 0.08
+T: 3 2 : 72 : 46 : 0.01
+T: 3 2 : 72 : 48 : 0.01
+T: 3 2 : 72 : 63 : 0.08
+T: 3 2 : 72 : 64 : 0.01
+T: 3 2 : 72 : 66 : 0.01
+T: 3 2 : 72 : 72 : 0.64
+T: 3 2 : 72 : 73 : 0.08
+T: 3 2 : 72 : 75 : 0.08
+T: 3 3 : 72 : 45 : 0.03
+T: 3 3 : 72 : 46 : 0.06
+T: 3 3 : 72 : 48 : 0.01
+T: 3 3 : 72 : 63 : 0.03
+T: 3 3 : 72 : 64 : 0.06
+T: 3 3 : 72 : 66 : 0.01
+T: 3 3 : 72 : 72 : 0.24
+T: 3 3 : 72 : 73 : 0.48
+T: 3 3 : 72 : 75 : 0.08
+T: 3 4 : 72 : 45 : 0.1
+T: 3 4 : 72 : 63 : 0.1
+T: 3 4 : 72 : 72 : 0.8
+T: 4 0 : 72 : 72 : 0.8
+T: 4 0 : 72 : 73 : 0.1
+T: 4 0 : 72 : 75 : 0.1
+T: 4 1 : 72 : 72 : 0.3
+T: 4 1 : 72 : 73 : 0.1
+T: 4 1 : 72 : 75 : 0.6
+T: 4 2 : 72 : 72 : 0.8
+T: 4 2 : 72 : 73 : 0.1
+T: 4 2 : 72 : 75 : 0.1
+T: 4 3 : 72 : 72 : 0.3
+T: 4 3 : 72 : 73 : 0.6
+T: 4 3 : 72 : 75 : 0.1
+T: 4 4 : 72 : 72 : 1.0
+T: 0 0 : 73 : 45 : 0.06
+T: 0 0 : 73 : 46 : 0.42
+T: 0 0 : 73 : 47 : 0.06
+T: 0 0 : 73 : 49 : 0.06
+T: 0 0 : 73 : 63 : 0.01
+T: 0 0 : 73 : 64 : 0.07
+T: 0 0 : 73 : 65 : 0.01
+T: 0 0 : 73 : 67 : 0.01
+T: 0 0 : 73 : 72 : 0.03
+T: 0 0 : 73 : 73 : 0.21
+T: 0 0 : 73 : 74 : 0.03
+T: 0 0 : 73 : 76 : 0.03
+T: 0 1 : 73 : 45 : 0.06
+T: 0 1 : 73 : 46 : 0.12
+T: 0 1 : 73 : 47 : 0.06
+T: 0 1 : 73 : 49 : 0.36
+T: 0 1 : 73 : 63 : 0.01
+T: 0 1 : 73 : 64 : 0.02
+T: 0 1 : 73 : 65 : 0.01
+T: 0 1 : 73 : 67 : 0.06
+T: 0 1 : 73 : 72 : 0.03
+T: 0 1 : 73 : 73 : 0.060
+T: 0 1 : 73 : 74 : 0.03
+T: 0 1 : 73 : 76 : 0.18
+T: 0 2 : 73 : 45 : 0.36
+T: 0 2 : 73 : 46 : 0.12
+T: 0 2 : 73 : 47 : 0.06
+T: 0 2 : 73 : 49 : 0.06
+T: 0 2 : 73 : 63 : 0.06
+T: 0 2 : 73 : 64 : 0.02
+T: 0 2 : 73 : 65 : 0.01
+T: 0 2 : 73 : 67 : 0.01
+T: 0 2 : 73 : 72 : 0.18
+T: 0 2 : 73 : 73 : 0.060
+T: 0 2 : 73 : 74 : 0.03
+T: 0 2 : 73 : 76 : 0.03
+T: 0 3 : 73 : 45 : 0.06
+T: 0 3 : 73 : 46 : 0.12
+T: 0 3 : 73 : 47 : 0.36
+T: 0 3 : 73 : 49 : 0.06
+T: 0 3 : 73 : 63 : 0.01
+T: 0 3 : 73 : 64 : 0.02
+T: 0 3 : 73 : 65 : 0.06
+T: 0 3 : 73 : 67 : 0.01
+T: 0 3 : 73 : 72 : 0.03
+T: 0 3 : 73 : 73 : 0.060
+T: 0 3 : 73 : 74 : 0.18
+T: 0 3 : 73 : 76 : 0.03
+T: 0 4 : 73 : 46 : 0.6
+T: 0 4 : 73 : 64 : 0.1
+T: 0 4 : 73 : 73 : 0.3
+T: 1 0 : 73 : 45 : 0.01
+T: 1 0 : 73 : 46 : 0.07
+T: 1 0 : 73 : 47 : 0.01
+T: 1 0 : 73 : 49 : 0.01
+T: 1 0 : 73 : 63 : 0.01
+T: 1 0 : 73 : 64 : 0.07
+T: 1 0 : 73 : 65 : 0.01
+T: 1 0 : 73 : 67 : 0.01
+T: 1 0 : 73 : 72 : 0.08
+T: 1 0 : 73 : 73 : 0.56
+T: 1 0 : 73 : 74 : 0.08
+T: 1 0 : 73 : 76 : 0.08
+T: 1 1 : 73 : 45 : 0.01
+T: 1 1 : 73 : 46 : 0.02
+T: 1 1 : 73 : 47 : 0.01
+T: 1 1 : 73 : 49 : 0.06
+T: 1 1 : 73 : 63 : 0.01
+T: 1 1 : 73 : 64 : 0.02
+T: 1 1 : 73 : 65 : 0.01
+T: 1 1 : 73 : 67 : 0.06
+T: 1 1 : 73 : 72 : 0.08
+T: 1 1 : 73 : 73 : 0.16
+T: 1 1 : 73 : 74 : 0.08
+T: 1 1 : 73 : 76 : 0.48
+T: 1 2 : 73 : 45 : 0.06
+T: 1 2 : 73 : 46 : 0.02
+T: 1 2 : 73 : 47 : 0.01
+T: 1 2 : 73 : 49 : 0.01
+T: 1 2 : 73 : 63 : 0.06
+T: 1 2 : 73 : 64 : 0.02
+T: 1 2 : 73 : 65 : 0.01
+T: 1 2 : 73 : 67 : 0.01
+T: 1 2 : 73 : 72 : 0.48
+T: 1 2 : 73 : 73 : 0.16
+T: 1 2 : 73 : 74 : 0.08
+T: 1 2 : 73 : 76 : 0.08
+T: 1 3 : 73 : 45 : 0.01
+T: 1 3 : 73 : 46 : 0.02
+T: 1 3 : 73 : 47 : 0.06
+T: 1 3 : 73 : 49 : 0.01
+T: 1 3 : 73 : 63 : 0.01
+T: 1 3 : 73 : 64 : 0.02
+T: 1 3 : 73 : 65 : 0.06
+T: 1 3 : 73 : 67 : 0.01
+T: 1 3 : 73 : 72 : 0.08
+T: 1 3 : 73 : 73 : 0.16
+T: 1 3 : 73 : 74 : 0.48
+T: 1 3 : 73 : 76 : 0.08
+T: 1 4 : 73 : 46 : 0.1
+T: 1 4 : 73 : 64 : 0.1
+T: 1 4 : 73 : 73 : 0.8
+T: 2 0 : 73 : 45 : 0.01
+T: 2 0 : 73 : 46 : 0.07
+T: 2 0 : 73 : 47 : 0.01
+T: 2 0 : 73 : 49 : 0.01
+T: 2 0 : 73 : 63 : 0.06
+T: 2 0 : 73 : 64 : 0.42
+T: 2 0 : 73 : 65 : 0.06
+T: 2 0 : 73 : 67 : 0.06
+T: 2 0 : 73 : 72 : 0.03
+T: 2 0 : 73 : 73 : 0.21
+T: 2 0 : 73 : 74 : 0.03
+T: 2 0 : 73 : 76 : 0.03
+T: 2 1 : 73 : 45 : 0.01
+T: 2 1 : 73 : 46 : 0.02
+T: 2 1 : 73 : 47 : 0.01
+T: 2 1 : 73 : 49 : 0.06
+T: 2 1 : 73 : 63 : 0.06
+T: 2 1 : 73 : 64 : 0.12
+T: 2 1 : 73 : 65 : 0.06
+T: 2 1 : 73 : 67 : 0.36
+T: 2 1 : 73 : 72 : 0.03
+T: 2 1 : 73 : 73 : 0.060
+T: 2 1 : 73 : 74 : 0.03
+T: 2 1 : 73 : 76 : 0.18
+T: 2 2 : 73 : 45 : 0.06
+T: 2 2 : 73 : 46 : 0.02
+T: 2 2 : 73 : 47 : 0.01
+T: 2 2 : 73 : 49 : 0.01
+T: 2 2 : 73 : 63 : 0.36
+T: 2 2 : 73 : 64 : 0.12
+T: 2 2 : 73 : 65 : 0.06
+T: 2 2 : 73 : 67 : 0.06
+T: 2 2 : 73 : 72 : 0.18
+T: 2 2 : 73 : 73 : 0.060
+T: 2 2 : 73 : 74 : 0.03
+T: 2 2 : 73 : 76 : 0.03
+T: 2 3 : 73 : 45 : 0.01
+T: 2 3 : 73 : 46 : 0.02
+T: 2 3 : 73 : 47 : 0.06
+T: 2 3 : 73 : 49 : 0.01
+T: 2 3 : 73 : 63 : 0.06
+T: 2 3 : 73 : 64 : 0.12
+T: 2 3 : 73 : 65 : 0.36
+T: 2 3 : 73 : 67 : 0.06
+T: 2 3 : 73 : 72 : 0.03
+T: 2 3 : 73 : 73 : 0.060
+T: 2 3 : 73 : 74 : 0.18
+T: 2 3 : 73 : 76 : 0.03
+T: 2 4 : 73 : 46 : 0.1
+T: 2 4 : 73 : 64 : 0.6
+T: 2 4 : 73 : 73 : 0.3
+T: 3 0 : 73 : 45 : 0.01
+T: 3 0 : 73 : 46 : 0.07
+T: 3 0 : 73 : 47 : 0.01
+T: 3 0 : 73 : 49 : 0.01
+T: 3 0 : 73 : 63 : 0.01
+T: 3 0 : 73 : 64 : 0.07
+T: 3 0 : 73 : 65 : 0.01
+T: 3 0 : 73 : 67 : 0.01
+T: 3 0 : 73 : 72 : 0.08
+T: 3 0 : 73 : 73 : 0.56
+T: 3 0 : 73 : 74 : 0.08
+T: 3 0 : 73 : 76 : 0.08
+T: 3 1 : 73 : 45 : 0.01
+T: 3 1 : 73 : 46 : 0.02
+T: 3 1 : 73 : 47 : 0.01
+T: 3 1 : 73 : 49 : 0.06
+T: 3 1 : 73 : 63 : 0.01
+T: 3 1 : 73 : 64 : 0.02
+T: 3 1 : 73 : 65 : 0.01
+T: 3 1 : 73 : 67 : 0.06
+T: 3 1 : 73 : 72 : 0.08
+T: 3 1 : 73 : 73 : 0.16
+T: 3 1 : 73 : 74 : 0.08
+T: 3 1 : 73 : 76 : 0.48
+T: 3 2 : 73 : 45 : 0.06
+T: 3 2 : 73 : 46 : 0.02
+T: 3 2 : 73 : 47 : 0.01
+T: 3 2 : 73 : 49 : 0.01
+T: 3 2 : 73 : 63 : 0.06
+T: 3 2 : 73 : 64 : 0.02
+T: 3 2 : 73 : 65 : 0.01
+T: 3 2 : 73 : 67 : 0.01
+T: 3 2 : 73 : 72 : 0.48
+T: 3 2 : 73 : 73 : 0.16
+T: 3 2 : 73 : 74 : 0.08
+T: 3 2 : 73 : 76 : 0.08
+T: 3 3 : 73 : 45 : 0.01
+T: 3 3 : 73 : 46 : 0.02
+T: 3 3 : 73 : 47 : 0.06
+T: 3 3 : 73 : 49 : 0.01
+T: 3 3 : 73 : 63 : 0.01
+T: 3 3 : 73 : 64 : 0.02
+T: 3 3 : 73 : 65 : 0.06
+T: 3 3 : 73 : 67 : 0.01
+T: 3 3 : 73 : 72 : 0.08
+T: 3 3 : 73 : 73 : 0.16
+T: 3 3 : 73 : 74 : 0.48
+T: 3 3 : 73 : 76 : 0.08
+T: 3 4 : 73 : 46 : 0.1
+T: 3 4 : 73 : 64 : 0.1
+T: 3 4 : 73 : 73 : 0.8
+T: 4 0 : 73 : 72 : 0.1
+T: 4 0 : 73 : 73 : 0.7
+T: 4 0 : 73 : 74 : 0.1
+T: 4 0 : 73 : 76 : 0.1
+T: 4 1 : 73 : 72 : 0.1
+T: 4 1 : 73 : 73 : 0.2
+T: 4 1 : 73 : 74 : 0.1
+T: 4 1 : 73 : 76 : 0.6
+T: 4 2 : 73 : 72 : 0.6
+T: 4 2 : 73 : 73 : 0.2
+T: 4 2 : 73 : 74 : 0.1
+T: 4 2 : 73 : 76 : 0.1
+T: 4 3 : 73 : 72 : 0.1
+T: 4 3 : 73 : 73 : 0.2
+T: 4 3 : 73 : 74 : 0.6
+T: 4 3 : 73 : 76 : 0.1
+T: 4 4 : 73 : 73 : 1.0
+T: 0 0 : 74 : 46 : 0.06
+T: 0 0 : 74 : 47 : 0.48
+T: 0 0 : 74 : 50 : 0.06
+T: 0 0 : 74 : 64 : 0.01
+T: 0 0 : 74 : 65 : 0.08
+T: 0 0 : 74 : 68 : 0.01
+T: 0 0 : 74 : 73 : 0.03
+T: 0 0 : 74 : 74 : 0.24
+T: 0 0 : 74 : 77 : 0.03
+T: 0 1 : 74 : 46 : 0.06
+T: 0 1 : 74 : 47 : 0.18
+T: 0 1 : 74 : 50 : 0.36
+T: 0 1 : 74 : 64 : 0.01
+T: 0 1 : 74 : 65 : 0.03
+T: 0 1 : 74 : 68 : 0.06
+T: 0 1 : 74 : 73 : 0.03
+T: 0 1 : 74 : 74 : 0.09
+T: 0 1 : 74 : 77 : 0.18
+T: 0 2 : 74 : 46 : 0.36
+T: 0 2 : 74 : 47 : 0.18
+T: 0 2 : 74 : 50 : 0.06
+T: 0 2 : 74 : 64 : 0.06
+T: 0 2 : 74 : 65 : 0.03
+T: 0 2 : 74 : 68 : 0.01
+T: 0 2 : 74 : 73 : 0.18
+T: 0 2 : 74 : 74 : 0.09
+T: 0 2 : 74 : 77 : 0.03
+T: 0 3 : 74 : 46 : 0.06
+T: 0 3 : 74 : 47 : 0.48
+T: 0 3 : 74 : 50 : 0.06
+T: 0 3 : 74 : 64 : 0.01
+T: 0 3 : 74 : 65 : 0.08
+T: 0 3 : 74 : 68 : 0.01
+T: 0 3 : 74 : 73 : 0.03
+T: 0 3 : 74 : 74 : 0.24
+T: 0 3 : 74 : 77 : 0.03
+T: 0 4 : 74 : 47 : 0.6
+T: 0 4 : 74 : 65 : 0.1
+T: 0 4 : 74 : 74 : 0.3
+T: 1 0 : 74 : 46 : 0.01
+T: 1 0 : 74 : 47 : 0.08
+T: 1 0 : 74 : 50 : 0.01
+T: 1 0 : 74 : 64 : 0.01
+T: 1 0 : 74 : 65 : 0.08
+T: 1 0 : 74 : 68 : 0.01
+T: 1 0 : 74 : 73 : 0.08
+T: 1 0 : 74 : 74 : 0.64
+T: 1 0 : 74 : 77 : 0.08
+T: 1 1 : 74 : 46 : 0.01
+T: 1 1 : 74 : 47 : 0.03
+T: 1 1 : 74 : 50 : 0.06
+T: 1 1 : 74 : 64 : 0.01
+T: 1 1 : 74 : 65 : 0.03
+T: 1 1 : 74 : 68 : 0.06
+T: 1 1 : 74 : 73 : 0.08
+T: 1 1 : 74 : 74 : 0.24
+T: 1 1 : 74 : 77 : 0.48
+T: 1 2 : 74 : 46 : 0.06
+T: 1 2 : 74 : 47 : 0.03
+T: 1 2 : 74 : 50 : 0.01
+T: 1 2 : 74 : 64 : 0.06
+T: 1 2 : 74 : 65 : 0.03
+T: 1 2 : 74 : 68 : 0.01
+T: 1 2 : 74 : 73 : 0.48
+T: 1 2 : 74 : 74 : 0.24
+T: 1 2 : 74 : 77 : 0.08
+T: 1 3 : 74 : 46 : 0.01
+T: 1 3 : 74 : 47 : 0.08
+T: 1 3 : 74 : 50 : 0.01
+T: 1 3 : 74 : 64 : 0.01
+T: 1 3 : 74 : 65 : 0.08
+T: 1 3 : 74 : 68 : 0.01
+T: 1 3 : 74 : 73 : 0.08
+T: 1 3 : 74 : 74 : 0.64
+T: 1 3 : 74 : 77 : 0.08
+T: 1 4 : 74 : 47 : 0.1
+T: 1 4 : 74 : 65 : 0.1
+T: 1 4 : 74 : 74 : 0.8
+T: 2 0 : 74 : 46 : 0.01
+T: 2 0 : 74 : 47 : 0.08
+T: 2 0 : 74 : 50 : 0.01
+T: 2 0 : 74 : 64 : 0.06
+T: 2 0 : 74 : 65 : 0.48
+T: 2 0 : 74 : 68 : 0.06
+T: 2 0 : 74 : 73 : 0.03
+T: 2 0 : 74 : 74 : 0.24
+T: 2 0 : 74 : 77 : 0.03
+T: 2 1 : 74 : 46 : 0.01
+T: 2 1 : 74 : 47 : 0.03
+T: 2 1 : 74 : 50 : 0.06
+T: 2 1 : 74 : 64 : 0.06
+T: 2 1 : 74 : 65 : 0.18
+T: 2 1 : 74 : 68 : 0.36
+T: 2 1 : 74 : 73 : 0.03
+T: 2 1 : 74 : 74 : 0.09
+T: 2 1 : 74 : 77 : 0.18
+T: 2 2 : 74 : 46 : 0.06
+T: 2 2 : 74 : 47 : 0.03
+T: 2 2 : 74 : 50 : 0.01
+T: 2 2 : 74 : 64 : 0.36
+T: 2 2 : 74 : 65 : 0.18
+T: 2 2 : 74 : 68 : 0.06
+T: 2 2 : 74 : 73 : 0.18
+T: 2 2 : 74 : 74 : 0.09
+T: 2 2 : 74 : 77 : 0.03
+T: 2 3 : 74 : 46 : 0.01
+T: 2 3 : 74 : 47 : 0.08
+T: 2 3 : 74 : 50 : 0.01
+T: 2 3 : 74 : 64 : 0.06
+T: 2 3 : 74 : 65 : 0.48
+T: 2 3 : 74 : 68 : 0.06
+T: 2 3 : 74 : 73 : 0.03
+T: 2 3 : 74 : 74 : 0.24
+T: 2 3 : 74 : 77 : 0.03
+T: 2 4 : 74 : 47 : 0.1
+T: 2 4 : 74 : 65 : 0.6
+T: 2 4 : 74 : 74 : 0.3
+T: 3 0 : 74 : 46 : 0.01
+T: 3 0 : 74 : 47 : 0.08
+T: 3 0 : 74 : 50 : 0.01
+T: 3 0 : 74 : 64 : 0.01
+T: 3 0 : 74 : 65 : 0.08
+T: 3 0 : 74 : 68 : 0.01
+T: 3 0 : 74 : 73 : 0.08
+T: 3 0 : 74 : 74 : 0.64
+T: 3 0 : 74 : 77 : 0.08
+T: 3 1 : 74 : 46 : 0.01
+T: 3 1 : 74 : 47 : 0.03
+T: 3 1 : 74 : 50 : 0.06
+T: 3 1 : 74 : 64 : 0.01
+T: 3 1 : 74 : 65 : 0.03
+T: 3 1 : 74 : 68 : 0.06
+T: 3 1 : 74 : 73 : 0.08
+T: 3 1 : 74 : 74 : 0.24
+T: 3 1 : 74 : 77 : 0.48
+T: 3 2 : 74 : 46 : 0.06
+T: 3 2 : 74 : 47 : 0.03
+T: 3 2 : 74 : 50 : 0.01
+T: 3 2 : 74 : 64 : 0.06
+T: 3 2 : 74 : 65 : 0.03
+T: 3 2 : 74 : 68 : 0.01
+T: 3 2 : 74 : 73 : 0.48
+T: 3 2 : 74 : 74 : 0.24
+T: 3 2 : 74 : 77 : 0.08
+T: 3 3 : 74 : 46 : 0.01
+T: 3 3 : 74 : 47 : 0.08
+T: 3 3 : 74 : 50 : 0.01
+T: 3 3 : 74 : 64 : 0.01
+T: 3 3 : 74 : 65 : 0.08
+T: 3 3 : 74 : 68 : 0.01
+T: 3 3 : 74 : 73 : 0.08
+T: 3 3 : 74 : 74 : 0.64
+T: 3 3 : 74 : 77 : 0.08
+T: 3 4 : 74 : 47 : 0.1
+T: 3 4 : 74 : 65 : 0.1
+T: 3 4 : 74 : 74 : 0.8
+T: 4 0 : 74 : 73 : 0.1
+T: 4 0 : 74 : 74 : 0.8
+T: 4 0 : 74 : 77 : 0.1
+T: 4 1 : 74 : 73 : 0.1
+T: 4 1 : 74 : 74 : 0.3
+T: 4 1 : 74 : 77 : 0.6
+T: 4 2 : 74 : 73 : 0.6
+T: 4 2 : 74 : 74 : 0.3
+T: 4 2 : 74 : 77 : 0.1
+T: 4 3 : 74 : 73 : 0.1
+T: 4 3 : 74 : 74 : 0.8
+T: 4 3 : 74 : 77 : 0.1
+T: 4 4 : 74 : 74 : 1.0
+T: 0 0 : 75 : 45 : 0.36
+T: 0 0 : 75 : 48 : 0.12
+T: 0 0 : 75 : 49 : 0.06
+T: 0 0 : 75 : 51 : 0.06
+T: 0 0 : 75 : 63 : 0.06
+T: 0 0 : 75 : 66 : 0.02
+T: 0 0 : 75 : 67 : 0.01
+T: 0 0 : 75 : 69 : 0.01
+T: 0 0 : 75 : 72 : 0.18
+T: 0 0 : 75 : 75 : 0.060
+T: 0 0 : 75 : 76 : 0.03
+T: 0 0 : 75 : 78 : 0.03
+T: 0 1 : 75 : 45 : 0.06
+T: 0 1 : 75 : 48 : 0.12
+T: 0 1 : 75 : 49 : 0.06
+T: 0 1 : 75 : 51 : 0.36
+T: 0 1 : 75 : 63 : 0.01
+T: 0 1 : 75 : 66 : 0.02
+T: 0 1 : 75 : 67 : 0.01
+T: 0 1 : 75 : 69 : 0.06
+T: 0 1 : 75 : 72 : 0.03
+T: 0 1 : 75 : 75 : 0.060
+T: 0 1 : 75 : 76 : 0.03
+T: 0 1 : 75 : 78 : 0.18
+T: 0 2 : 75 : 45 : 0.06
+T: 0 2 : 75 : 48 : 0.42
+T: 0 2 : 75 : 49 : 0.06
+T: 0 2 : 75 : 51 : 0.06
+T: 0 2 : 75 : 63 : 0.01
+T: 0 2 : 75 : 66 : 0.07
+T: 0 2 : 75 : 67 : 0.01
+T: 0 2 : 75 : 69 : 0.01
+T: 0 2 : 75 : 72 : 0.03
+T: 0 2 : 75 : 75 : 0.21
+T: 0 2 : 75 : 76 : 0.03
+T: 0 2 : 75 : 78 : 0.03
+T: 0 3 : 75 : 45 : 0.06
+T: 0 3 : 75 : 48 : 0.12
+T: 0 3 : 75 : 49 : 0.36
+T: 0 3 : 75 : 51 : 0.06
+T: 0 3 : 75 : 63 : 0.01
+T: 0 3 : 75 : 66 : 0.02
+T: 0 3 : 75 : 67 : 0.06
+T: 0 3 : 75 : 69 : 0.01
+T: 0 3 : 75 : 72 : 0.03
+T: 0 3 : 75 : 75 : 0.060
+T: 0 3 : 75 : 76 : 0.18
+T: 0 3 : 75 : 78 : 0.03
+T: 0 4 : 75 : 48 : 0.6
+T: 0 4 : 75 : 66 : 0.1
+T: 0 4 : 75 : 75 : 0.3
+T: 1 0 : 75 : 45 : 0.06
+T: 1 0 : 75 : 48 : 0.02
+T: 1 0 : 75 : 49 : 0.01
+T: 1 0 : 75 : 51 : 0.01
+T: 1 0 : 75 : 63 : 0.06
+T: 1 0 : 75 : 66 : 0.02
+T: 1 0 : 75 : 67 : 0.01
+T: 1 0 : 75 : 69 : 0.01
+T: 1 0 : 75 : 72 : 0.48
+T: 1 0 : 75 : 75 : 0.16
+T: 1 0 : 75 : 76 : 0.08
+T: 1 0 : 75 : 78 : 0.08
+T: 1 1 : 75 : 45 : 0.01
+T: 1 1 : 75 : 48 : 0.02
+T: 1 1 : 75 : 49 : 0.01
+T: 1 1 : 75 : 51 : 0.06
+T: 1 1 : 75 : 63 : 0.01
+T: 1 1 : 75 : 66 : 0.02
+T: 1 1 : 75 : 67 : 0.01
+T: 1 1 : 75 : 69 : 0.06
+T: 1 1 : 75 : 72 : 0.08
+T: 1 1 : 75 : 75 : 0.16
+T: 1 1 : 75 : 76 : 0.08
+T: 1 1 : 75 : 78 : 0.48
+T: 1 2 : 75 : 45 : 0.01
+T: 1 2 : 75 : 48 : 0.07
+T: 1 2 : 75 : 49 : 0.01
+T: 1 2 : 75 : 51 : 0.01
+T: 1 2 : 75 : 63 : 0.01
+T: 1 2 : 75 : 66 : 0.07
+T: 1 2 : 75 : 67 : 0.01
+T: 1 2 : 75 : 69 : 0.01
+T: 1 2 : 75 : 72 : 0.08
+T: 1 2 : 75 : 75 : 0.56
+T: 1 2 : 75 : 76 : 0.08
+T: 1 2 : 75 : 78 : 0.08
+T: 1 3 : 75 : 45 : 0.01
+T: 1 3 : 75 : 48 : 0.02
+T: 1 3 : 75 : 49 : 0.06
+T: 1 3 : 75 : 51 : 0.01
+T: 1 3 : 75 : 63 : 0.01
+T: 1 3 : 75 : 66 : 0.02
+T: 1 3 : 75 : 67 : 0.06
+T: 1 3 : 75 : 69 : 0.01
+T: 1 3 : 75 : 72 : 0.08
+T: 1 3 : 75 : 75 : 0.16
+T: 1 3 : 75 : 76 : 0.48
+T: 1 3 : 75 : 78 : 0.08
+T: 1 4 : 75 : 48 : 0.1
+T: 1 4 : 75 : 66 : 0.1
+T: 1 4 : 75 : 75 : 0.8
+T: 2 0 : 75 : 45 : 0.06
+T: 2 0 : 75 : 48 : 0.02
+T: 2 0 : 75 : 49 : 0.01
+T: 2 0 : 75 : 51 : 0.01
+T: 2 0 : 75 : 63 : 0.36
+T: 2 0 : 75 : 66 : 0.12
+T: 2 0 : 75 : 67 : 0.06
+T: 2 0 : 75 : 69 : 0.06
+T: 2 0 : 75 : 72 : 0.18
+T: 2 0 : 75 : 75 : 0.060
+T: 2 0 : 75 : 76 : 0.03
+T: 2 0 : 75 : 78 : 0.03
+T: 2 1 : 75 : 45 : 0.01
+T: 2 1 : 75 : 48 : 0.02
+T: 2 1 : 75 : 49 : 0.01
+T: 2 1 : 75 : 51 : 0.06
+T: 2 1 : 75 : 63 : 0.06
+T: 2 1 : 75 : 66 : 0.12
+T: 2 1 : 75 : 67 : 0.06
+T: 2 1 : 75 : 69 : 0.36
+T: 2 1 : 75 : 72 : 0.03
+T: 2 1 : 75 : 75 : 0.060
+T: 2 1 : 75 : 76 : 0.03
+T: 2 1 : 75 : 78 : 0.18
+T: 2 2 : 75 : 45 : 0.01
+T: 2 2 : 75 : 48 : 0.07
+T: 2 2 : 75 : 49 : 0.01
+T: 2 2 : 75 : 51 : 0.01
+T: 2 2 : 75 : 63 : 0.06
+T: 2 2 : 75 : 66 : 0.42
+T: 2 2 : 75 : 67 : 0.06
+T: 2 2 : 75 : 69 : 0.06
+T: 2 2 : 75 : 72 : 0.03
+T: 2 2 : 75 : 75 : 0.21
+T: 2 2 : 75 : 76 : 0.03
+T: 2 2 : 75 : 78 : 0.03
+T: 2 3 : 75 : 45 : 0.01
+T: 2 3 : 75 : 48 : 0.02
+T: 2 3 : 75 : 49 : 0.06
+T: 2 3 : 75 : 51 : 0.01
+T: 2 3 : 75 : 63 : 0.06
+T: 2 3 : 75 : 66 : 0.12
+T: 2 3 : 75 : 67 : 0.36
+T: 2 3 : 75 : 69 : 0.06
+T: 2 3 : 75 : 72 : 0.03
+T: 2 3 : 75 : 75 : 0.060
+T: 2 3 : 75 : 76 : 0.18
+T: 2 3 : 75 : 78 : 0.03
+T: 2 4 : 75 : 48 : 0.1
+T: 2 4 : 75 : 66 : 0.6
+T: 2 4 : 75 : 75 : 0.3
+T: 3 0 : 75 : 45 : 0.06
+T: 3 0 : 75 : 48 : 0.02
+T: 3 0 : 75 : 49 : 0.01
+T: 3 0 : 75 : 51 : 0.01
+T: 3 0 : 75 : 63 : 0.06
+T: 3 0 : 75 : 66 : 0.02
+T: 3 0 : 75 : 67 : 0.01
+T: 3 0 : 75 : 69 : 0.01
+T: 3 0 : 75 : 72 : 0.48
+T: 3 0 : 75 : 75 : 0.16
+T: 3 0 : 75 : 76 : 0.08
+T: 3 0 : 75 : 78 : 0.08
+T: 3 1 : 75 : 45 : 0.01
+T: 3 1 : 75 : 48 : 0.02
+T: 3 1 : 75 : 49 : 0.01
+T: 3 1 : 75 : 51 : 0.06
+T: 3 1 : 75 : 63 : 0.01
+T: 3 1 : 75 : 66 : 0.02
+T: 3 1 : 75 : 67 : 0.01
+T: 3 1 : 75 : 69 : 0.06
+T: 3 1 : 75 : 72 : 0.08
+T: 3 1 : 75 : 75 : 0.16
+T: 3 1 : 75 : 76 : 0.08
+T: 3 1 : 75 : 78 : 0.48
+T: 3 2 : 75 : 45 : 0.01
+T: 3 2 : 75 : 48 : 0.07
+T: 3 2 : 75 : 49 : 0.01
+T: 3 2 : 75 : 51 : 0.01
+T: 3 2 : 75 : 63 : 0.01
+T: 3 2 : 75 : 66 : 0.07
+T: 3 2 : 75 : 67 : 0.01
+T: 3 2 : 75 : 69 : 0.01
+T: 3 2 : 75 : 72 : 0.08
+T: 3 2 : 75 : 75 : 0.56
+T: 3 2 : 75 : 76 : 0.08
+T: 3 2 : 75 : 78 : 0.08
+T: 3 3 : 75 : 45 : 0.01
+T: 3 3 : 75 : 48 : 0.02
+T: 3 3 : 75 : 49 : 0.06
+T: 3 3 : 75 : 51 : 0.01
+T: 3 3 : 75 : 63 : 0.01
+T: 3 3 : 75 : 66 : 0.02
+T: 3 3 : 75 : 67 : 0.06
+T: 3 3 : 75 : 69 : 0.01
+T: 3 3 : 75 : 72 : 0.08
+T: 3 3 : 75 : 75 : 0.16
+T: 3 3 : 75 : 76 : 0.48
+T: 3 3 : 75 : 78 : 0.08
+T: 3 4 : 75 : 48 : 0.1
+T: 3 4 : 75 : 66 : 0.1
+T: 3 4 : 75 : 75 : 0.8
+T: 4 0 : 75 : 72 : 0.6
+T: 4 0 : 75 : 75 : 0.2
+T: 4 0 : 75 : 76 : 0.1
+T: 4 0 : 75 : 78 : 0.1
+T: 4 1 : 75 : 72 : 0.1
+T: 4 1 : 75 : 75 : 0.2
+T: 4 1 : 75 : 76 : 0.1
+T: 4 1 : 75 : 78 : 0.6
+T: 4 2 : 75 : 72 : 0.1
+T: 4 2 : 75 : 75 : 0.7
+T: 4 2 : 75 : 76 : 0.1
+T: 4 2 : 75 : 78 : 0.1
+T: 4 3 : 75 : 72 : 0.1
+T: 4 3 : 75 : 75 : 0.2
+T: 4 3 : 75 : 76 : 0.6
+T: 4 3 : 75 : 78 : 0.1
+T: 4 4 : 75 : 75 : 1.0
+T: 0 0 : 76 : 46 : 0.36
+T: 0 0 : 76 : 48 : 0.06
+T: 0 0 : 76 : 49 : 0.06
+T: 0 0 : 76 : 50 : 0.06
+T: 0 0 : 76 : 52 : 0.06
+T: 0 0 : 76 : 64 : 0.06
+T: 0 0 : 76 : 66 : 0.01
+T: 0 0 : 76 : 67 : 0.01
+T: 0 0 : 76 : 68 : 0.01
+T: 0 0 : 76 : 70 : 0.01
+T: 0 0 : 76 : 73 : 0.18
+T: 0 0 : 76 : 75 : 0.03
+T: 0 0 : 76 : 76 : 0.03
+T: 0 0 : 76 : 77 : 0.03
+T: 0 0 : 76 : 79 : 0.03
+T: 0 1 : 76 : 46 : 0.06
+T: 0 1 : 76 : 48 : 0.06
+T: 0 1 : 76 : 49 : 0.06
+T: 0 1 : 76 : 50 : 0.06
+T: 0 1 : 76 : 52 : 0.36
+T: 0 1 : 76 : 64 : 0.01
+T: 0 1 : 76 : 66 : 0.01
+T: 0 1 : 76 : 67 : 0.01
+T: 0 1 : 76 : 68 : 0.01
+T: 0 1 : 76 : 70 : 0.06
+T: 0 1 : 76 : 73 : 0.03
+T: 0 1 : 76 : 75 : 0.03
+T: 0 1 : 76 : 76 : 0.03
+T: 0 1 : 76 : 77 : 0.03
+T: 0 1 : 76 : 79 : 0.18
+T: 0 2 : 76 : 46 : 0.06
+T: 0 2 : 76 : 48 : 0.36
+T: 0 2 : 76 : 49 : 0.06
+T: 0 2 : 76 : 50 : 0.06
+T: 0 2 : 76 : 52 : 0.06
+T: 0 2 : 76 : 64 : 0.01
+T: 0 2 : 76 : 66 : 0.06
+T: 0 2 : 76 : 67 : 0.01
+T: 0 2 : 76 : 68 : 0.01
+T: 0 2 : 76 : 70 : 0.01
+T: 0 2 : 76 : 73 : 0.03
+T: 0 2 : 76 : 75 : 0.18
+T: 0 2 : 76 : 76 : 0.03
+T: 0 2 : 76 : 77 : 0.03
+T: 0 2 : 76 : 79 : 0.03
+T: 0 3 : 76 : 46 : 0.06
+T: 0 3 : 76 : 48 : 0.06
+T: 0 3 : 76 : 49 : 0.06
+T: 0 3 : 76 : 50 : 0.36
+T: 0 3 : 76 : 52 : 0.06
+T: 0 3 : 76 : 64 : 0.01
+T: 0 3 : 76 : 66 : 0.01
+T: 0 3 : 76 : 67 : 0.01
+T: 0 3 : 76 : 68 : 0.06
+T: 0 3 : 76 : 70 : 0.01
+T: 0 3 : 76 : 73 : 0.03
+T: 0 3 : 76 : 75 : 0.03
+T: 0 3 : 76 : 76 : 0.03
+T: 0 3 : 76 : 77 : 0.18
+T: 0 3 : 76 : 79 : 0.03
+T: 0 4 : 76 : 49 : 0.6
+T: 0 4 : 76 : 67 : 0.1
+T: 0 4 : 76 : 76 : 0.3
+T: 1 0 : 76 : 46 : 0.06
+T: 1 0 : 76 : 48 : 0.01
+T: 1 0 : 76 : 49 : 0.01
+T: 1 0 : 76 : 50 : 0.01
+T: 1 0 : 76 : 52 : 0.01
+T: 1 0 : 76 : 64 : 0.06
+T: 1 0 : 76 : 66 : 0.01
+T: 1 0 : 76 : 67 : 0.01
+T: 1 0 : 76 : 68 : 0.01
+T: 1 0 : 76 : 70 : 0.01
+T: 1 0 : 76 : 73 : 0.48
+T: 1 0 : 76 : 75 : 0.08
+T: 1 0 : 76 : 76 : 0.08
+T: 1 0 : 76 : 77 : 0.08
+T: 1 0 : 76 : 79 : 0.08
+T: 1 1 : 76 : 46 : 0.01
+T: 1 1 : 76 : 48 : 0.01
+T: 1 1 : 76 : 49 : 0.01
+T: 1 1 : 76 : 50 : 0.01
+T: 1 1 : 76 : 52 : 0.06
+T: 1 1 : 76 : 64 : 0.01
+T: 1 1 : 76 : 66 : 0.01
+T: 1 1 : 76 : 67 : 0.01
+T: 1 1 : 76 : 68 : 0.01
+T: 1 1 : 76 : 70 : 0.06
+T: 1 1 : 76 : 73 : 0.08
+T: 1 1 : 76 : 75 : 0.08
+T: 1 1 : 76 : 76 : 0.08
+T: 1 1 : 76 : 77 : 0.08
+T: 1 1 : 76 : 79 : 0.48
+T: 1 2 : 76 : 46 : 0.01
+T: 1 2 : 76 : 48 : 0.06
+T: 1 2 : 76 : 49 : 0.01
+T: 1 2 : 76 : 50 : 0.01
+T: 1 2 : 76 : 52 : 0.01
+T: 1 2 : 76 : 64 : 0.01
+T: 1 2 : 76 : 66 : 0.06
+T: 1 2 : 76 : 67 : 0.01
+T: 1 2 : 76 : 68 : 0.01
+T: 1 2 : 76 : 70 : 0.01
+T: 1 2 : 76 : 73 : 0.08
+T: 1 2 : 76 : 75 : 0.48
+T: 1 2 : 76 : 76 : 0.08
+T: 1 2 : 76 : 77 : 0.08
+T: 1 2 : 76 : 79 : 0.08
+T: 1 3 : 76 : 46 : 0.01
+T: 1 3 : 76 : 48 : 0.01
+T: 1 3 : 76 : 49 : 0.01
+T: 1 3 : 76 : 50 : 0.06
+T: 1 3 : 76 : 52 : 0.01
+T: 1 3 : 76 : 64 : 0.01
+T: 1 3 : 76 : 66 : 0.01
+T: 1 3 : 76 : 67 : 0.01
+T: 1 3 : 76 : 68 : 0.06
+T: 1 3 : 76 : 70 : 0.01
+T: 1 3 : 76 : 73 : 0.08
+T: 1 3 : 76 : 75 : 0.08
+T: 1 3 : 76 : 76 : 0.08
+T: 1 3 : 76 : 77 : 0.48
+T: 1 3 : 76 : 79 : 0.08
+T: 1 4 : 76 : 49 : 0.1
+T: 1 4 : 76 : 67 : 0.1
+T: 1 4 : 76 : 76 : 0.8
+T: 2 0 : 76 : 46 : 0.06
+T: 2 0 : 76 : 48 : 0.01
+T: 2 0 : 76 : 49 : 0.01
+T: 2 0 : 76 : 50 : 0.01
+T: 2 0 : 76 : 52 : 0.01
+T: 2 0 : 76 : 64 : 0.36
+T: 2 0 : 76 : 66 : 0.06
+T: 2 0 : 76 : 67 : 0.06
+T: 2 0 : 76 : 68 : 0.06
+T: 2 0 : 76 : 70 : 0.06
+T: 2 0 : 76 : 73 : 0.18
+T: 2 0 : 76 : 75 : 0.03
+T: 2 0 : 76 : 76 : 0.03
+T: 2 0 : 76 : 77 : 0.03
+T: 2 0 : 76 : 79 : 0.03
+T: 2 1 : 76 : 46 : 0.01
+T: 2 1 : 76 : 48 : 0.01
+T: 2 1 : 76 : 49 : 0.01
+T: 2 1 : 76 : 50 : 0.01
+T: 2 1 : 76 : 52 : 0.06
+T: 2 1 : 76 : 64 : 0.06
+T: 2 1 : 76 : 66 : 0.06
+T: 2 1 : 76 : 67 : 0.06
+T: 2 1 : 76 : 68 : 0.06
+T: 2 1 : 76 : 70 : 0.36
+T: 2 1 : 76 : 73 : 0.03
+T: 2 1 : 76 : 75 : 0.03
+T: 2 1 : 76 : 76 : 0.03
+T: 2 1 : 76 : 77 : 0.03
+T: 2 1 : 76 : 79 : 0.18
+T: 2 2 : 76 : 46 : 0.01
+T: 2 2 : 76 : 48 : 0.06
+T: 2 2 : 76 : 49 : 0.01
+T: 2 2 : 76 : 50 : 0.01
+T: 2 2 : 76 : 52 : 0.01
+T: 2 2 : 76 : 64 : 0.06
+T: 2 2 : 76 : 66 : 0.36
+T: 2 2 : 76 : 67 : 0.06
+T: 2 2 : 76 : 68 : 0.06
+T: 2 2 : 76 : 70 : 0.06
+T: 2 2 : 76 : 73 : 0.03
+T: 2 2 : 76 : 75 : 0.18
+T: 2 2 : 76 : 76 : 0.03
+T: 2 2 : 76 : 77 : 0.03
+T: 2 2 : 76 : 79 : 0.03
+T: 2 3 : 76 : 46 : 0.01
+T: 2 3 : 76 : 48 : 0.01
+T: 2 3 : 76 : 49 : 0.01
+T: 2 3 : 76 : 50 : 0.06
+T: 2 3 : 76 : 52 : 0.01
+T: 2 3 : 76 : 64 : 0.06
+T: 2 3 : 76 : 66 : 0.06
+T: 2 3 : 76 : 67 : 0.06
+T: 2 3 : 76 : 68 : 0.36
+T: 2 3 : 76 : 70 : 0.06
+T: 2 3 : 76 : 73 : 0.03
+T: 2 3 : 76 : 75 : 0.03
+T: 2 3 : 76 : 76 : 0.03
+T: 2 3 : 76 : 77 : 0.18
+T: 2 3 : 76 : 79 : 0.03
+T: 2 4 : 76 : 49 : 0.1
+T: 2 4 : 76 : 67 : 0.6
+T: 2 4 : 76 : 76 : 0.3
+T: 3 0 : 76 : 46 : 0.06
+T: 3 0 : 76 : 48 : 0.01
+T: 3 0 : 76 : 49 : 0.01
+T: 3 0 : 76 : 50 : 0.01
+T: 3 0 : 76 : 52 : 0.01
+T: 3 0 : 76 : 64 : 0.06
+T: 3 0 : 76 : 66 : 0.01
+T: 3 0 : 76 : 67 : 0.01
+T: 3 0 : 76 : 68 : 0.01
+T: 3 0 : 76 : 70 : 0.01
+T: 3 0 : 76 : 73 : 0.48
+T: 3 0 : 76 : 75 : 0.08
+T: 3 0 : 76 : 76 : 0.08
+T: 3 0 : 76 : 77 : 0.08
+T: 3 0 : 76 : 79 : 0.08
+T: 3 1 : 76 : 46 : 0.01
+T: 3 1 : 76 : 48 : 0.01
+T: 3 1 : 76 : 49 : 0.01
+T: 3 1 : 76 : 50 : 0.01
+T: 3 1 : 76 : 52 : 0.06
+T: 3 1 : 76 : 64 : 0.01
+T: 3 1 : 76 : 66 : 0.01
+T: 3 1 : 76 : 67 : 0.01
+T: 3 1 : 76 : 68 : 0.01
+T: 3 1 : 76 : 70 : 0.06
+T: 3 1 : 76 : 73 : 0.08
+T: 3 1 : 76 : 75 : 0.08
+T: 3 1 : 76 : 76 : 0.08
+T: 3 1 : 76 : 77 : 0.08
+T: 3 1 : 76 : 79 : 0.48
+T: 3 2 : 76 : 46 : 0.01
+T: 3 2 : 76 : 48 : 0.06
+T: 3 2 : 76 : 49 : 0.01
+T: 3 2 : 76 : 50 : 0.01
+T: 3 2 : 76 : 52 : 0.01
+T: 3 2 : 76 : 64 : 0.01
+T: 3 2 : 76 : 66 : 0.06
+T: 3 2 : 76 : 67 : 0.01
+T: 3 2 : 76 : 68 : 0.01
+T: 3 2 : 76 : 70 : 0.01
+T: 3 2 : 76 : 73 : 0.08
+T: 3 2 : 76 : 75 : 0.48
+T: 3 2 : 76 : 76 : 0.08
+T: 3 2 : 76 : 77 : 0.08
+T: 3 2 : 76 : 79 : 0.08
+T: 3 3 : 76 : 46 : 0.01
+T: 3 3 : 76 : 48 : 0.01
+T: 3 3 : 76 : 49 : 0.01
+T: 3 3 : 76 : 50 : 0.06
+T: 3 3 : 76 : 52 : 0.01
+T: 3 3 : 76 : 64 : 0.01
+T: 3 3 : 76 : 66 : 0.01
+T: 3 3 : 76 : 67 : 0.01
+T: 3 3 : 76 : 68 : 0.06
+T: 3 3 : 76 : 70 : 0.01
+T: 3 3 : 76 : 73 : 0.08
+T: 3 3 : 76 : 75 : 0.08
+T: 3 3 : 76 : 76 : 0.08
+T: 3 3 : 76 : 77 : 0.48
+T: 3 3 : 76 : 79 : 0.08
+T: 3 4 : 76 : 49 : 0.1
+T: 3 4 : 76 : 67 : 0.1
+T: 3 4 : 76 : 76 : 0.8
+T: 4 0 : 76 : 73 : 0.6
+T: 4 0 : 76 : 75 : 0.1
+T: 4 0 : 76 : 76 : 0.1
+T: 4 0 : 76 : 77 : 0.1
+T: 4 0 : 76 : 79 : 0.1
+T: 4 1 : 76 : 73 : 0.1
+T: 4 1 : 76 : 75 : 0.1
+T: 4 1 : 76 : 76 : 0.1
+T: 4 1 : 76 : 77 : 0.1
+T: 4 1 : 76 : 79 : 0.6
+T: 4 2 : 76 : 73 : 0.1
+T: 4 2 : 76 : 75 : 0.6
+T: 4 2 : 76 : 76 : 0.1
+T: 4 2 : 76 : 77 : 0.1
+T: 4 2 : 76 : 79 : 0.1
+T: 4 3 : 76 : 73 : 0.1
+T: 4 3 : 76 : 75 : 0.1
+T: 4 3 : 76 : 76 : 0.1
+T: 4 3 : 76 : 77 : 0.6
+T: 4 3 : 76 : 79 : 0.1
+T: 4 4 : 76 : 76 : 1.0
+T: 0 0 : 77 : 47 : 0.36
+T: 0 0 : 77 : 49 : 0.06
+T: 0 0 : 77 : 50 : 0.12
+T: 0 0 : 77 : 53 : 0.06
+T: 0 0 : 77 : 65 : 0.06
+T: 0 0 : 77 : 67 : 0.01
+T: 0 0 : 77 : 68 : 0.02
+T: 0 0 : 77 : 71 : 0.01
+T: 0 0 : 77 : 74 : 0.18
+T: 0 0 : 77 : 76 : 0.03
+T: 0 0 : 77 : 77 : 0.060
+T: 0 0 : 77 : 80 : 0.03
+T: 0 1 : 77 : 47 : 0.06
+T: 0 1 : 77 : 49 : 0.06
+T: 0 1 : 77 : 50 : 0.12
+T: 0 1 : 77 : 53 : 0.36
+T: 0 1 : 77 : 65 : 0.01
+T: 0 1 : 77 : 67 : 0.01
+T: 0 1 : 77 : 68 : 0.02
+T: 0 1 : 77 : 71 : 0.06
+T: 0 1 : 77 : 74 : 0.03
+T: 0 1 : 77 : 76 : 0.03
+T: 0 1 : 77 : 77 : 0.060
+T: 0 1 : 77 : 80 : 0.18
+T: 0 2 : 77 : 47 : 0.06
+T: 0 2 : 77 : 49 : 0.36
+T: 0 2 : 77 : 50 : 0.12
+T: 0 2 : 77 : 53 : 0.06
+T: 0 2 : 77 : 65 : 0.01
+T: 0 2 : 77 : 67 : 0.06
+T: 0 2 : 77 : 68 : 0.02
+T: 0 2 : 77 : 71 : 0.01
+T: 0 2 : 77 : 74 : 0.03
+T: 0 2 : 77 : 76 : 0.18
+T: 0 2 : 77 : 77 : 0.060
+T: 0 2 : 77 : 80 : 0.03
+T: 0 3 : 77 : 47 : 0.06
+T: 0 3 : 77 : 49 : 0.06
+T: 0 3 : 77 : 50 : 0.42
+T: 0 3 : 77 : 53 : 0.06
+T: 0 3 : 77 : 65 : 0.01
+T: 0 3 : 77 : 67 : 0.01
+T: 0 3 : 77 : 68 : 0.07
+T: 0 3 : 77 : 71 : 0.01
+T: 0 3 : 77 : 74 : 0.03
+T: 0 3 : 77 : 76 : 0.03
+T: 0 3 : 77 : 77 : 0.21
+T: 0 3 : 77 : 80 : 0.03
+T: 0 4 : 77 : 50 : 0.6
+T: 0 4 : 77 : 68 : 0.1
+T: 0 4 : 77 : 77 : 0.3
+T: 1 0 : 77 : 47 : 0.06
+T: 1 0 : 77 : 49 : 0.01
+T: 1 0 : 77 : 50 : 0.02
+T: 1 0 : 77 : 53 : 0.01
+T: 1 0 : 77 : 65 : 0.06
+T: 1 0 : 77 : 67 : 0.01
+T: 1 0 : 77 : 68 : 0.02
+T: 1 0 : 77 : 71 : 0.01
+T: 1 0 : 77 : 74 : 0.48
+T: 1 0 : 77 : 76 : 0.08
+T: 1 0 : 77 : 77 : 0.16
+T: 1 0 : 77 : 80 : 0.08
+T: 1 1 : 77 : 47 : 0.01
+T: 1 1 : 77 : 49 : 0.01
+T: 1 1 : 77 : 50 : 0.02
+T: 1 1 : 77 : 53 : 0.06
+T: 1 1 : 77 : 65 : 0.01
+T: 1 1 : 77 : 67 : 0.01
+T: 1 1 : 77 : 68 : 0.02
+T: 1 1 : 77 : 71 : 0.06
+T: 1 1 : 77 : 74 : 0.08
+T: 1 1 : 77 : 76 : 0.08
+T: 1 1 : 77 : 77 : 0.16
+T: 1 1 : 77 : 80 : 0.48
+T: 1 2 : 77 : 47 : 0.01
+T: 1 2 : 77 : 49 : 0.06
+T: 1 2 : 77 : 50 : 0.02
+T: 1 2 : 77 : 53 : 0.01
+T: 1 2 : 77 : 65 : 0.01
+T: 1 2 : 77 : 67 : 0.06
+T: 1 2 : 77 : 68 : 0.02
+T: 1 2 : 77 : 71 : 0.01
+T: 1 2 : 77 : 74 : 0.08
+T: 1 2 : 77 : 76 : 0.48
+T: 1 2 : 77 : 77 : 0.16
+T: 1 2 : 77 : 80 : 0.08
+T: 1 3 : 77 : 47 : 0.01
+T: 1 3 : 77 : 49 : 0.01
+T: 1 3 : 77 : 50 : 0.07
+T: 1 3 : 77 : 53 : 0.01
+T: 1 3 : 77 : 65 : 0.01
+T: 1 3 : 77 : 67 : 0.01
+T: 1 3 : 77 : 68 : 0.07
+T: 1 3 : 77 : 71 : 0.01
+T: 1 3 : 77 : 74 : 0.08
+T: 1 3 : 77 : 76 : 0.08
+T: 1 3 : 77 : 77 : 0.56
+T: 1 3 : 77 : 80 : 0.08
+T: 1 4 : 77 : 50 : 0.1
+T: 1 4 : 77 : 68 : 0.1
+T: 1 4 : 77 : 77 : 0.8
+T: 2 0 : 77 : 47 : 0.06
+T: 2 0 : 77 : 49 : 0.01
+T: 2 0 : 77 : 50 : 0.02
+T: 2 0 : 77 : 53 : 0.01
+T: 2 0 : 77 : 65 : 0.36
+T: 2 0 : 77 : 67 : 0.06
+T: 2 0 : 77 : 68 : 0.12
+T: 2 0 : 77 : 71 : 0.06
+T: 2 0 : 77 : 74 : 0.18
+T: 2 0 : 77 : 76 : 0.03
+T: 2 0 : 77 : 77 : 0.060
+T: 2 0 : 77 : 80 : 0.03
+T: 2 1 : 77 : 47 : 0.01
+T: 2 1 : 77 : 49 : 0.01
+T: 2 1 : 77 : 50 : 0.02
+T: 2 1 : 77 : 53 : 0.06
+T: 2 1 : 77 : 65 : 0.06
+T: 2 1 : 77 : 67 : 0.06
+T: 2 1 : 77 : 68 : 0.12
+T: 2 1 : 77 : 71 : 0.36
+T: 2 1 : 77 : 74 : 0.03
+T: 2 1 : 77 : 76 : 0.03
+T: 2 1 : 77 : 77 : 0.060
+T: 2 1 : 77 : 80 : 0.18
+T: 2 2 : 77 : 47 : 0.01
+T: 2 2 : 77 : 49 : 0.06
+T: 2 2 : 77 : 50 : 0.02
+T: 2 2 : 77 : 53 : 0.01
+T: 2 2 : 77 : 65 : 0.06
+T: 2 2 : 77 : 67 : 0.36
+T: 2 2 : 77 : 68 : 0.12
+T: 2 2 : 77 : 71 : 0.06
+T: 2 2 : 77 : 74 : 0.03
+T: 2 2 : 77 : 76 : 0.18
+T: 2 2 : 77 : 77 : 0.060
+T: 2 2 : 77 : 80 : 0.03
+T: 2 3 : 77 : 47 : 0.01
+T: 2 3 : 77 : 49 : 0.01
+T: 2 3 : 77 : 50 : 0.07
+T: 2 3 : 77 : 53 : 0.01
+T: 2 3 : 77 : 65 : 0.06
+T: 2 3 : 77 : 67 : 0.06
+T: 2 3 : 77 : 68 : 0.42
+T: 2 3 : 77 : 71 : 0.06
+T: 2 3 : 77 : 74 : 0.03
+T: 2 3 : 77 : 76 : 0.03
+T: 2 3 : 77 : 77 : 0.21
+T: 2 3 : 77 : 80 : 0.03
+T: 2 4 : 77 : 50 : 0.1
+T: 2 4 : 77 : 68 : 0.6
+T: 2 4 : 77 : 77 : 0.3
+T: 3 0 : 77 : 47 : 0.06
+T: 3 0 : 77 : 49 : 0.01
+T: 3 0 : 77 : 50 : 0.02
+T: 3 0 : 77 : 53 : 0.01
+T: 3 0 : 77 : 65 : 0.06
+T: 3 0 : 77 : 67 : 0.01
+T: 3 0 : 77 : 68 : 0.02
+T: 3 0 : 77 : 71 : 0.01
+T: 3 0 : 77 : 74 : 0.48
+T: 3 0 : 77 : 76 : 0.08
+T: 3 0 : 77 : 77 : 0.16
+T: 3 0 : 77 : 80 : 0.08
+T: 3 1 : 77 : 47 : 0.01
+T: 3 1 : 77 : 49 : 0.01
+T: 3 1 : 77 : 50 : 0.02
+T: 3 1 : 77 : 53 : 0.06
+T: 3 1 : 77 : 65 : 0.01
+T: 3 1 : 77 : 67 : 0.01
+T: 3 1 : 77 : 68 : 0.02
+T: 3 1 : 77 : 71 : 0.06
+T: 3 1 : 77 : 74 : 0.08
+T: 3 1 : 77 : 76 : 0.08
+T: 3 1 : 77 : 77 : 0.16
+T: 3 1 : 77 : 80 : 0.48
+T: 3 2 : 77 : 47 : 0.01
+T: 3 2 : 77 : 49 : 0.06
+T: 3 2 : 77 : 50 : 0.02
+T: 3 2 : 77 : 53 : 0.01
+T: 3 2 : 77 : 65 : 0.01
+T: 3 2 : 77 : 67 : 0.06
+T: 3 2 : 77 : 68 : 0.02
+T: 3 2 : 77 : 71 : 0.01
+T: 3 2 : 77 : 74 : 0.08
+T: 3 2 : 77 : 76 : 0.48
+T: 3 2 : 77 : 77 : 0.16
+T: 3 2 : 77 : 80 : 0.08
+T: 3 3 : 77 : 47 : 0.01
+T: 3 3 : 77 : 49 : 0.01
+T: 3 3 : 77 : 50 : 0.07
+T: 3 3 : 77 : 53 : 0.01
+T: 3 3 : 77 : 65 : 0.01
+T: 3 3 : 77 : 67 : 0.01
+T: 3 3 : 77 : 68 : 0.07
+T: 3 3 : 77 : 71 : 0.01
+T: 3 3 : 77 : 74 : 0.08
+T: 3 3 : 77 : 76 : 0.08
+T: 3 3 : 77 : 77 : 0.56
+T: 3 3 : 77 : 80 : 0.08
+T: 3 4 : 77 : 50 : 0.1
+T: 3 4 : 77 : 68 : 0.1
+T: 3 4 : 77 : 77 : 0.8
+T: 4 0 : 77 : 74 : 0.6
+T: 4 0 : 77 : 76 : 0.1
+T: 4 0 : 77 : 77 : 0.2
+T: 4 0 : 77 : 80 : 0.1
+T: 4 1 : 77 : 74 : 0.1
+T: 4 1 : 77 : 76 : 0.1
+T: 4 1 : 77 : 77 : 0.2
+T: 4 1 : 77 : 80 : 0.6
+T: 4 2 : 77 : 74 : 0.1
+T: 4 2 : 77 : 76 : 0.6
+T: 4 2 : 77 : 77 : 0.2
+T: 4 2 : 77 : 80 : 0.1
+T: 4 3 : 77 : 74 : 0.1
+T: 4 3 : 77 : 76 : 0.1
+T: 4 3 : 77 : 77 : 0.7
+T: 4 3 : 77 : 80 : 0.1
+T: 4 4 : 77 : 77 : 1.0
+T: 0 0 : 78 : 48 : 0.36
+T: 0 0 : 78 : 51 : 0.18
+T: 0 0 : 78 : 52 : 0.06
+T: 0 0 : 78 : 66 : 0.06
+T: 0 0 : 78 : 69 : 0.03
+T: 0 0 : 78 : 70 : 0.01
+T: 0 0 : 78 : 75 : 0.18
+T: 0 0 : 78 : 78 : 0.09
+T: 0 0 : 78 : 79 : 0.03
+T: 0 1 : 78 : 48 : 0.06
+T: 0 1 : 78 : 51 : 0.48
+T: 0 1 : 78 : 52 : 0.06
+T: 0 1 : 78 : 66 : 0.01
+T: 0 1 : 78 : 69 : 0.08
+T: 0 1 : 78 : 70 : 0.01
+T: 0 1 : 78 : 75 : 0.03
+T: 0 1 : 78 : 78 : 0.24
+T: 0 1 : 78 : 79 : 0.03
+T: 0 2 : 78 : 48 : 0.06
+T: 0 2 : 78 : 51 : 0.48
+T: 0 2 : 78 : 52 : 0.06
+T: 0 2 : 78 : 66 : 0.01
+T: 0 2 : 78 : 69 : 0.08
+T: 0 2 : 78 : 70 : 0.01
+T: 0 2 : 78 : 75 : 0.03
+T: 0 2 : 78 : 78 : 0.24
+T: 0 2 : 78 : 79 : 0.03
+T: 0 3 : 78 : 48 : 0.06
+T: 0 3 : 78 : 51 : 0.18
+T: 0 3 : 78 : 52 : 0.36
+T: 0 3 : 78 : 66 : 0.01
+T: 0 3 : 78 : 69 : 0.03
+T: 0 3 : 78 : 70 : 0.06
+T: 0 3 : 78 : 75 : 0.03
+T: 0 3 : 78 : 78 : 0.09
+T: 0 3 : 78 : 79 : 0.18
+T: 0 4 : 78 : 51 : 0.6
+T: 0 4 : 78 : 69 : 0.1
+T: 0 4 : 78 : 78 : 0.3
+T: 1 0 : 78 : 48 : 0.06
+T: 1 0 : 78 : 51 : 0.03
+T: 1 0 : 78 : 52 : 0.01
+T: 1 0 : 78 : 66 : 0.06
+T: 1 0 : 78 : 69 : 0.03
+T: 1 0 : 78 : 70 : 0.01
+T: 1 0 : 78 : 75 : 0.48
+T: 1 0 : 78 : 78 : 0.24
+T: 1 0 : 78 : 79 : 0.08
+T: 1 1 : 78 : 48 : 0.01
+T: 1 1 : 78 : 51 : 0.08
+T: 1 1 : 78 : 52 : 0.01
+T: 1 1 : 78 : 66 : 0.01
+T: 1 1 : 78 : 69 : 0.08
+T: 1 1 : 78 : 70 : 0.01
+T: 1 1 : 78 : 75 : 0.08
+T: 1 1 : 78 : 78 : 0.64
+T: 1 1 : 78 : 79 : 0.08
+T: 1 2 : 78 : 48 : 0.01
+T: 1 2 : 78 : 51 : 0.08
+T: 1 2 : 78 : 52 : 0.01
+T: 1 2 : 78 : 66 : 0.01
+T: 1 2 : 78 : 69 : 0.08
+T: 1 2 : 78 : 70 : 0.01
+T: 1 2 : 78 : 75 : 0.08
+T: 1 2 : 78 : 78 : 0.64
+T: 1 2 : 78 : 79 : 0.08
+T: 1 3 : 78 : 48 : 0.01
+T: 1 3 : 78 : 51 : 0.03
+T: 1 3 : 78 : 52 : 0.06
+T: 1 3 : 78 : 66 : 0.01
+T: 1 3 : 78 : 69 : 0.03
+T: 1 3 : 78 : 70 : 0.06
+T: 1 3 : 78 : 75 : 0.08
+T: 1 3 : 78 : 78 : 0.24
+T: 1 3 : 78 : 79 : 0.48
+T: 1 4 : 78 : 51 : 0.1
+T: 1 4 : 78 : 69 : 0.1
+T: 1 4 : 78 : 78 : 0.8
+T: 2 0 : 78 : 48 : 0.06
+T: 2 0 : 78 : 51 : 0.03
+T: 2 0 : 78 : 52 : 0.01
+T: 2 0 : 78 : 66 : 0.36
+T: 2 0 : 78 : 69 : 0.18
+T: 2 0 : 78 : 70 : 0.06
+T: 2 0 : 78 : 75 : 0.18
+T: 2 0 : 78 : 78 : 0.09
+T: 2 0 : 78 : 79 : 0.03
+T: 2 1 : 78 : 48 : 0.01
+T: 2 1 : 78 : 51 : 0.08
+T: 2 1 : 78 : 52 : 0.01
+T: 2 1 : 78 : 66 : 0.06
+T: 2 1 : 78 : 69 : 0.48
+T: 2 1 : 78 : 70 : 0.06
+T: 2 1 : 78 : 75 : 0.03
+T: 2 1 : 78 : 78 : 0.24
+T: 2 1 : 78 : 79 : 0.03
+T: 2 2 : 78 : 48 : 0.01
+T: 2 2 : 78 : 51 : 0.08
+T: 2 2 : 78 : 52 : 0.01
+T: 2 2 : 78 : 66 : 0.06
+T: 2 2 : 78 : 69 : 0.48
+T: 2 2 : 78 : 70 : 0.06
+T: 2 2 : 78 : 75 : 0.03
+T: 2 2 : 78 : 78 : 0.24
+T: 2 2 : 78 : 79 : 0.03
+T: 2 3 : 78 : 48 : 0.01
+T: 2 3 : 78 : 51 : 0.03
+T: 2 3 : 78 : 52 : 0.06
+T: 2 3 : 78 : 66 : 0.06
+T: 2 3 : 78 : 69 : 0.18
+T: 2 3 : 78 : 70 : 0.36
+T: 2 3 : 78 : 75 : 0.03
+T: 2 3 : 78 : 78 : 0.09
+T: 2 3 : 78 : 79 : 0.18
+T: 2 4 : 78 : 51 : 0.1
+T: 2 4 : 78 : 69 : 0.6
+T: 2 4 : 78 : 78 : 0.3
+T: 3 0 : 78 : 48 : 0.06
+T: 3 0 : 78 : 51 : 0.03
+T: 3 0 : 78 : 52 : 0.01
+T: 3 0 : 78 : 66 : 0.06
+T: 3 0 : 78 : 69 : 0.03
+T: 3 0 : 78 : 70 : 0.01
+T: 3 0 : 78 : 75 : 0.48
+T: 3 0 : 78 : 78 : 0.24
+T: 3 0 : 78 : 79 : 0.08
+T: 3 1 : 78 : 48 : 0.01
+T: 3 1 : 78 : 51 : 0.08
+T: 3 1 : 78 : 52 : 0.01
+T: 3 1 : 78 : 66 : 0.01
+T: 3 1 : 78 : 69 : 0.08
+T: 3 1 : 78 : 70 : 0.01
+T: 3 1 : 78 : 75 : 0.08
+T: 3 1 : 78 : 78 : 0.64
+T: 3 1 : 78 : 79 : 0.08
+T: 3 2 : 78 : 48 : 0.01
+T: 3 2 : 78 : 51 : 0.08
+T: 3 2 : 78 : 52 : 0.01
+T: 3 2 : 78 : 66 : 0.01
+T: 3 2 : 78 : 69 : 0.08
+T: 3 2 : 78 : 70 : 0.01
+T: 3 2 : 78 : 75 : 0.08
+T: 3 2 : 78 : 78 : 0.64
+T: 3 2 : 78 : 79 : 0.08
+T: 3 3 : 78 : 48 : 0.01
+T: 3 3 : 78 : 51 : 0.03
+T: 3 3 : 78 : 52 : 0.06
+T: 3 3 : 78 : 66 : 0.01
+T: 3 3 : 78 : 69 : 0.03
+T: 3 3 : 78 : 70 : 0.06
+T: 3 3 : 78 : 75 : 0.08
+T: 3 3 : 78 : 78 : 0.24
+T: 3 3 : 78 : 79 : 0.48
+T: 3 4 : 78 : 51 : 0.1
+T: 3 4 : 78 : 69 : 0.1
+T: 3 4 : 78 : 78 : 0.8
+T: 4 0 : 78 : 75 : 0.6
+T: 4 0 : 78 : 78 : 0.3
+T: 4 0 : 78 : 79 : 0.1
+T: 4 1 : 78 : 75 : 0.1
+T: 4 1 : 78 : 78 : 0.8
+T: 4 1 : 78 : 79 : 0.1
+T: 4 2 : 78 : 75 : 0.1
+T: 4 2 : 78 : 78 : 0.8
+T: 4 2 : 78 : 79 : 0.1
+T: 4 3 : 78 : 75 : 0.1
+T: 4 3 : 78 : 78 : 0.3
+T: 4 3 : 78 : 79 : 0.6
+T: 4 4 : 78 : 78 : 1.0
+T: 0 0 : 79 : 49 : 0.36
+T: 0 0 : 79 : 51 : 0.06
+T: 0 0 : 79 : 52 : 0.12
+T: 0 0 : 79 : 53 : 0.06
+T: 0 0 : 79 : 67 : 0.06
+T: 0 0 : 79 : 69 : 0.01
+T: 0 0 : 79 : 70 : 0.02
+T: 0 0 : 79 : 71 : 0.01
+T: 0 0 : 79 : 76 : 0.18
+T: 0 0 : 79 : 78 : 0.03
+T: 0 0 : 79 : 79 : 0.060
+T: 0 0 : 79 : 80 : 0.03
+T: 0 1 : 79 : 49 : 0.06
+T: 0 1 : 79 : 51 : 0.06
+T: 0 1 : 79 : 52 : 0.42
+T: 0 1 : 79 : 53 : 0.06
+T: 0 1 : 79 : 67 : 0.01
+T: 0 1 : 79 : 69 : 0.01
+T: 0 1 : 79 : 70 : 0.07
+T: 0 1 : 79 : 71 : 0.01
+T: 0 1 : 79 : 76 : 0.03
+T: 0 1 : 79 : 78 : 0.03
+T: 0 1 : 79 : 79 : 0.21
+T: 0 1 : 79 : 80 : 0.03
+T: 0 2 : 79 : 49 : 0.06
+T: 0 2 : 79 : 51 : 0.36
+T: 0 2 : 79 : 52 : 0.12
+T: 0 2 : 79 : 53 : 0.06
+T: 0 2 : 79 : 67 : 0.01
+T: 0 2 : 79 : 69 : 0.06
+T: 0 2 : 79 : 70 : 0.02
+T: 0 2 : 79 : 71 : 0.01
+T: 0 2 : 79 : 76 : 0.03
+T: 0 2 : 79 : 78 : 0.18
+T: 0 2 : 79 : 79 : 0.060
+T: 0 2 : 79 : 80 : 0.03
+T: 0 3 : 79 : 49 : 0.06
+T: 0 3 : 79 : 51 : 0.06
+T: 0 3 : 79 : 52 : 0.12
+T: 0 3 : 79 : 53 : 0.36
+T: 0 3 : 79 : 67 : 0.01
+T: 0 3 : 79 : 69 : 0.01
+T: 0 3 : 79 : 70 : 0.02
+T: 0 3 : 79 : 71 : 0.06
+T: 0 3 : 79 : 76 : 0.03
+T: 0 3 : 79 : 78 : 0.03
+T: 0 3 : 79 : 79 : 0.060
+T: 0 3 : 79 : 80 : 0.18
+T: 0 4 : 79 : 52 : 0.6
+T: 0 4 : 79 : 70 : 0.1
+T: 0 4 : 79 : 79 : 0.3
+T: 1 0 : 79 : 49 : 0.06
+T: 1 0 : 79 : 51 : 0.01
+T: 1 0 : 79 : 52 : 0.02
+T: 1 0 : 79 : 53 : 0.01
+T: 1 0 : 79 : 67 : 0.06
+T: 1 0 : 79 : 69 : 0.01
+T: 1 0 : 79 : 70 : 0.02
+T: 1 0 : 79 : 71 : 0.01
+T: 1 0 : 79 : 76 : 0.48
+T: 1 0 : 79 : 78 : 0.08
+T: 1 0 : 79 : 79 : 0.16
+T: 1 0 : 79 : 80 : 0.08
+T: 1 1 : 79 : 49 : 0.01
+T: 1 1 : 79 : 51 : 0.01
+T: 1 1 : 79 : 52 : 0.07
+T: 1 1 : 79 : 53 : 0.01
+T: 1 1 : 79 : 67 : 0.01
+T: 1 1 : 79 : 69 : 0.01
+T: 1 1 : 79 : 70 : 0.07
+T: 1 1 : 79 : 71 : 0.01
+T: 1 1 : 79 : 76 : 0.08
+T: 1 1 : 79 : 78 : 0.08
+T: 1 1 : 79 : 79 : 0.56
+T: 1 1 : 79 : 80 : 0.08
+T: 1 2 : 79 : 49 : 0.01
+T: 1 2 : 79 : 51 : 0.06
+T: 1 2 : 79 : 52 : 0.02
+T: 1 2 : 79 : 53 : 0.01
+T: 1 2 : 79 : 67 : 0.01
+T: 1 2 : 79 : 69 : 0.06
+T: 1 2 : 79 : 70 : 0.02
+T: 1 2 : 79 : 71 : 0.01
+T: 1 2 : 79 : 76 : 0.08
+T: 1 2 : 79 : 78 : 0.48
+T: 1 2 : 79 : 79 : 0.16
+T: 1 2 : 79 : 80 : 0.08
+T: 1 3 : 79 : 49 : 0.01
+T: 1 3 : 79 : 51 : 0.01
+T: 1 3 : 79 : 52 : 0.02
+T: 1 3 : 79 : 53 : 0.06
+T: 1 3 : 79 : 67 : 0.01
+T: 1 3 : 79 : 69 : 0.01
+T: 1 3 : 79 : 70 : 0.02
+T: 1 3 : 79 : 71 : 0.06
+T: 1 3 : 79 : 76 : 0.08
+T: 1 3 : 79 : 78 : 0.08
+T: 1 3 : 79 : 79 : 0.16
+T: 1 3 : 79 : 80 : 0.48
+T: 1 4 : 79 : 52 : 0.1
+T: 1 4 : 79 : 70 : 0.1
+T: 1 4 : 79 : 79 : 0.8
+T: 2 0 : 79 : 49 : 0.06
+T: 2 0 : 79 : 51 : 0.01
+T: 2 0 : 79 : 52 : 0.02
+T: 2 0 : 79 : 53 : 0.01
+T: 2 0 : 79 : 67 : 0.36
+T: 2 0 : 79 : 69 : 0.06
+T: 2 0 : 79 : 70 : 0.12
+T: 2 0 : 79 : 71 : 0.06
+T: 2 0 : 79 : 76 : 0.18
+T: 2 0 : 79 : 78 : 0.03
+T: 2 0 : 79 : 79 : 0.060
+T: 2 0 : 79 : 80 : 0.03
+T: 2 1 : 79 : 49 : 0.01
+T: 2 1 : 79 : 51 : 0.01
+T: 2 1 : 79 : 52 : 0.07
+T: 2 1 : 79 : 53 : 0.01
+T: 2 1 : 79 : 67 : 0.06
+T: 2 1 : 79 : 69 : 0.06
+T: 2 1 : 79 : 70 : 0.42
+T: 2 1 : 79 : 71 : 0.06
+T: 2 1 : 79 : 76 : 0.03
+T: 2 1 : 79 : 78 : 0.03
+T: 2 1 : 79 : 79 : 0.21
+T: 2 1 : 79 : 80 : 0.03
+T: 2 2 : 79 : 49 : 0.01
+T: 2 2 : 79 : 51 : 0.06
+T: 2 2 : 79 : 52 : 0.02
+T: 2 2 : 79 : 53 : 0.01
+T: 2 2 : 79 : 67 : 0.06
+T: 2 2 : 79 : 69 : 0.36
+T: 2 2 : 79 : 70 : 0.12
+T: 2 2 : 79 : 71 : 0.06
+T: 2 2 : 79 : 76 : 0.03
+T: 2 2 : 79 : 78 : 0.18
+T: 2 2 : 79 : 79 : 0.060
+T: 2 2 : 79 : 80 : 0.03
+T: 2 3 : 79 : 49 : 0.01
+T: 2 3 : 79 : 51 : 0.01
+T: 2 3 : 79 : 52 : 0.02
+T: 2 3 : 79 : 53 : 0.06
+T: 2 3 : 79 : 67 : 0.06
+T: 2 3 : 79 : 69 : 0.06
+T: 2 3 : 79 : 70 : 0.12
+T: 2 3 : 79 : 71 : 0.36
+T: 2 3 : 79 : 76 : 0.03
+T: 2 3 : 79 : 78 : 0.03
+T: 2 3 : 79 : 79 : 0.060
+T: 2 3 : 79 : 80 : 0.18
+T: 2 4 : 79 : 52 : 0.1
+T: 2 4 : 79 : 70 : 0.6
+T: 2 4 : 79 : 79 : 0.3
+T: 3 0 : 79 : 49 : 0.06
+T: 3 0 : 79 : 51 : 0.01
+T: 3 0 : 79 : 52 : 0.02
+T: 3 0 : 79 : 53 : 0.01
+T: 3 0 : 79 : 67 : 0.06
+T: 3 0 : 79 : 69 : 0.01
+T: 3 0 : 79 : 70 : 0.02
+T: 3 0 : 79 : 71 : 0.01
+T: 3 0 : 79 : 76 : 0.48
+T: 3 0 : 79 : 78 : 0.08
+T: 3 0 : 79 : 79 : 0.16
+T: 3 0 : 79 : 80 : 0.08
+T: 3 1 : 79 : 49 : 0.01
+T: 3 1 : 79 : 51 : 0.01
+T: 3 1 : 79 : 52 : 0.07
+T: 3 1 : 79 : 53 : 0.01
+T: 3 1 : 79 : 67 : 0.01
+T: 3 1 : 79 : 69 : 0.01
+T: 3 1 : 79 : 70 : 0.07
+T: 3 1 : 79 : 71 : 0.01
+T: 3 1 : 79 : 76 : 0.08
+T: 3 1 : 79 : 78 : 0.08
+T: 3 1 : 79 : 79 : 0.56
+T: 3 1 : 79 : 80 : 0.08
+T: 3 2 : 79 : 49 : 0.01
+T: 3 2 : 79 : 51 : 0.06
+T: 3 2 : 79 : 52 : 0.02
+T: 3 2 : 79 : 53 : 0.01
+T: 3 2 : 79 : 67 : 0.01
+T: 3 2 : 79 : 69 : 0.06
+T: 3 2 : 79 : 70 : 0.02
+T: 3 2 : 79 : 71 : 0.01
+T: 3 2 : 79 : 76 : 0.08
+T: 3 2 : 79 : 78 : 0.48
+T: 3 2 : 79 : 79 : 0.16
+T: 3 2 : 79 : 80 : 0.08
+T: 3 3 : 79 : 49 : 0.01
+T: 3 3 : 79 : 51 : 0.01
+T: 3 3 : 79 : 52 : 0.02
+T: 3 3 : 79 : 53 : 0.06
+T: 3 3 : 79 : 67 : 0.01
+T: 3 3 : 79 : 69 : 0.01
+T: 3 3 : 79 : 70 : 0.02
+T: 3 3 : 79 : 71 : 0.06
+T: 3 3 : 79 : 76 : 0.08
+T: 3 3 : 79 : 78 : 0.08
+T: 3 3 : 79 : 79 : 0.16
+T: 3 3 : 79 : 80 : 0.48
+T: 3 4 : 79 : 52 : 0.1
+T: 3 4 : 79 : 70 : 0.1
+T: 3 4 : 79 : 79 : 0.8
+T: 4 0 : 79 : 76 : 0.6
+T: 4 0 : 79 : 78 : 0.1
+T: 4 0 : 79 : 79 : 0.2
+T: 4 0 : 79 : 80 : 0.1
+T: 4 1 : 79 : 76 : 0.1
+T: 4 1 : 79 : 78 : 0.1
+T: 4 1 : 79 : 79 : 0.7
+T: 4 1 : 79 : 80 : 0.1
+T: 4 2 : 79 : 76 : 0.1
+T: 4 2 : 79 : 78 : 0.6
+T: 4 2 : 79 : 79 : 0.2
+T: 4 2 : 79 : 80 : 0.1
+T: 4 3 : 79 : 76 : 0.1
+T: 4 3 : 79 : 78 : 0.1
+T: 4 3 : 79 : 79 : 0.2
+T: 4 3 : 79 : 80 : 0.6
+T: 4 4 : 79 : 79 : 1.0
+T: 0 0 : 80 : 50 : 0.36
+T: 0 0 : 80 : 52 : 0.06
+T: 0 0 : 80 : 53 : 0.18
+T: 0 0 : 80 : 68 : 0.06
+T: 0 0 : 80 : 70 : 0.01
+T: 0 0 : 80 : 71 : 0.03
+T: 0 0 : 80 : 77 : 0.18
+T: 0 0 : 80 : 79 : 0.03
+T: 0 0 : 80 : 80 : 0.09
+T: 0 1 : 80 : 50 : 0.06
+T: 0 1 : 80 : 52 : 0.06
+T: 0 1 : 80 : 53 : 0.48
+T: 0 1 : 80 : 68 : 0.01
+T: 0 1 : 80 : 70 : 0.01
+T: 0 1 : 80 : 71 : 0.08
+T: 0 1 : 80 : 77 : 0.03
+T: 0 1 : 80 : 79 : 0.03
+T: 0 1 : 80 : 80 : 0.24
+T: 0 2 : 80 : 50 : 0.06
+T: 0 2 : 80 : 52 : 0.36
+T: 0 2 : 80 : 53 : 0.18
+T: 0 2 : 80 : 68 : 0.01
+T: 0 2 : 80 : 70 : 0.06
+T: 0 2 : 80 : 71 : 0.03
+T: 0 2 : 80 : 77 : 0.03
+T: 0 2 : 80 : 79 : 0.18
+T: 0 2 : 80 : 80 : 0.09
+T: 0 3 : 80 : 50 : 0.06
+T: 0 3 : 80 : 52 : 0.06
+T: 0 3 : 80 : 53 : 0.48
+T: 0 3 : 80 : 68 : 0.01
+T: 0 3 : 80 : 70 : 0.01
+T: 0 3 : 80 : 71 : 0.08
+T: 0 3 : 80 : 77 : 0.03
+T: 0 3 : 80 : 79 : 0.03
+T: 0 3 : 80 : 80 : 0.24
+T: 0 4 : 80 : 53 : 0.6
+T: 0 4 : 80 : 71 : 0.1
+T: 0 4 : 80 : 80 : 0.3
+T: 1 0 : 80 : 50 : 0.06
+T: 1 0 : 80 : 52 : 0.01
+T: 1 0 : 80 : 53 : 0.03
+T: 1 0 : 80 : 68 : 0.06
+T: 1 0 : 80 : 70 : 0.01
+T: 1 0 : 80 : 71 : 0.03
+T: 1 0 : 80 : 77 : 0.48
+T: 1 0 : 80 : 79 : 0.08
+T: 1 0 : 80 : 80 : 0.24
+T: 1 1 : 80 : 50 : 0.01
+T: 1 1 : 80 : 52 : 0.01
+T: 1 1 : 80 : 53 : 0.08
+T: 1 1 : 80 : 68 : 0.01
+T: 1 1 : 80 : 70 : 0.01
+T: 1 1 : 80 : 71 : 0.08
+T: 1 1 : 80 : 77 : 0.08
+T: 1 1 : 80 : 79 : 0.08
+T: 1 1 : 80 : 80 : 0.64
+T: 1 2 : 80 : 50 : 0.01
+T: 1 2 : 80 : 52 : 0.06
+T: 1 2 : 80 : 53 : 0.03
+T: 1 2 : 80 : 68 : 0.01
+T: 1 2 : 80 : 70 : 0.06
+T: 1 2 : 80 : 71 : 0.03
+T: 1 2 : 80 : 77 : 0.08
+T: 1 2 : 80 : 79 : 0.48
+T: 1 2 : 80 : 80 : 0.24
+T: 1 3 : 80 : 50 : 0.01
+T: 1 3 : 80 : 52 : 0.01
+T: 1 3 : 80 : 53 : 0.08
+T: 1 3 : 80 : 68 : 0.01
+T: 1 3 : 80 : 70 : 0.01
+T: 1 3 : 80 : 71 : 0.08
+T: 1 3 : 80 : 77 : 0.08
+T: 1 3 : 80 : 79 : 0.08
+T: 1 3 : 80 : 80 : 0.64
+T: 1 4 : 80 : 53 : 0.1
+T: 1 4 : 80 : 71 : 0.1
+T: 1 4 : 80 : 80 : 0.8
+T: 2 0 : 80 : 50 : 0.06
+T: 2 0 : 80 : 52 : 0.01
+T: 2 0 : 80 : 53 : 0.03
+T: 2 0 : 80 : 68 : 0.36
+T: 2 0 : 80 : 70 : 0.06
+T: 2 0 : 80 : 71 : 0.18
+T: 2 0 : 80 : 77 : 0.18
+T: 2 0 : 80 : 79 : 0.03
+T: 2 0 : 80 : 80 : 0.09
+T: 2 1 : 80 : 50 : 0.01
+T: 2 1 : 80 : 52 : 0.01
+T: 2 1 : 80 : 53 : 0.08
+T: 2 1 : 80 : 68 : 0.06
+T: 2 1 : 80 : 70 : 0.06
+T: 2 1 : 80 : 71 : 0.48
+T: 2 1 : 80 : 77 : 0.03
+T: 2 1 : 80 : 79 : 0.03
+T: 2 1 : 80 : 80 : 0.24
+T: 2 2 : 80 : 50 : 0.01
+T: 2 2 : 80 : 52 : 0.06
+T: 2 2 : 80 : 53 : 0.03
+T: 2 2 : 80 : 68 : 0.06
+T: 2 2 : 80 : 70 : 0.36
+T: 2 2 : 80 : 71 : 0.18
+T: 2 2 : 80 : 77 : 0.03
+T: 2 2 : 80 : 79 : 0.18
+T: 2 2 : 80 : 80 : 0.09
+T: 2 3 : 80 : 50 : 0.01
+T: 2 3 : 80 : 52 : 0.01
+T: 2 3 : 80 : 53 : 0.08
+T: 2 3 : 80 : 68 : 0.06
+T: 2 3 : 80 : 70 : 0.06
+T: 2 3 : 80 : 71 : 0.48
+T: 2 3 : 80 : 77 : 0.03
+T: 2 3 : 80 : 79 : 0.03
+T: 2 3 : 80 : 80 : 0.24
+T: 2 4 : 80 : 53 : 0.1
+T: 2 4 : 80 : 71 : 0.6
+T: 2 4 : 80 : 80 : 0.3
+T: 3 0 : 80 : 50 : 0.06
+T: 3 0 : 80 : 52 : 0.01
+T: 3 0 : 80 : 53 : 0.03
+T: 3 0 : 80 : 68 : 0.06
+T: 3 0 : 80 : 70 : 0.01
+T: 3 0 : 80 : 71 : 0.03
+T: 3 0 : 80 : 77 : 0.48
+T: 3 0 : 80 : 79 : 0.08
+T: 3 0 : 80 : 80 : 0.24
+T: 3 1 : 80 : 50 : 0.01
+T: 3 1 : 80 : 52 : 0.01
+T: 3 1 : 80 : 53 : 0.08
+T: 3 1 : 80 : 68 : 0.01
+T: 3 1 : 80 : 70 : 0.01
+T: 3 1 : 80 : 71 : 0.08
+T: 3 1 : 80 : 77 : 0.08
+T: 3 1 : 80 : 79 : 0.08
+T: 3 1 : 80 : 80 : 0.64
+T: 3 2 : 80 : 50 : 0.01
+T: 3 2 : 80 : 52 : 0.06
+T: 3 2 : 80 : 53 : 0.03
+T: 3 2 : 80 : 68 : 0.01
+T: 3 2 : 80 : 70 : 0.06
+T: 3 2 : 80 : 71 : 0.03
+T: 3 2 : 80 : 77 : 0.08
+T: 3 2 : 80 : 79 : 0.48
+T: 3 2 : 80 : 80 : 0.24
+T: 3 3 : 80 : 50 : 0.01
+T: 3 3 : 80 : 52 : 0.01
+T: 3 3 : 80 : 53 : 0.08
+T: 3 3 : 80 : 68 : 0.01
+T: 3 3 : 80 : 70 : 0.01
+T: 3 3 : 80 : 71 : 0.08
+T: 3 3 : 80 : 77 : 0.08
+T: 3 3 : 80 : 79 : 0.08
+T: 3 3 : 80 : 80 : 0.64
+T: 3 4 : 80 : 53 : 0.1
+T: 3 4 : 80 : 71 : 0.1
+T: 3 4 : 80 : 80 : 0.8
+T: 4 0 : 80 : 77 : 0.6
+T: 4 0 : 80 : 79 : 0.1
+T: 4 0 : 80 : 80 : 0.3
+T: 4 1 : 80 : 77 : 0.1
+T: 4 1 : 80 : 79 : 0.1
+T: 4 1 : 80 : 80 : 0.8
+T: 4 2 : 80 : 77 : 0.1
+T: 4 2 : 80 : 79 : 0.6
+T: 4 2 : 80 : 80 : 0.3
+T: 4 3 : 80 : 77 : 0.1
+T: 4 3 : 80 : 79 : 0.1
+T: 4 3 : 80 : 80 : 0.8
+T: 4 4 : 80 : 80 : 1.0
+O: 0 0 : 0 : 0 0 : 1.0
+O: 0 1 : 0 : 0 0 : 1.0
+O: 0 2 : 0 : 0 0 : 1.0
+O: 0 3 : 0 : 0 0 : 1.0
+O: 0 4 : 0 : 0 0 : 1.0
+O: 1 0 : 0 : 0 0 : 1.0
+O: 1 1 : 0 : 0 0 : 1.0
+O: 1 2 : 0 : 0 0 : 1.0
+O: 1 3 : 0 : 0 0 : 1.0
+O: 1 4 : 0 : 0 0 : 1.0
+O: 2 0 : 0 : 0 0 : 1.0
+O: 2 1 : 0 : 0 0 : 1.0
+O: 2 2 : 0 : 0 0 : 1.0
+O: 2 3 : 0 : 0 0 : 1.0
+O: 2 4 : 0 : 0 0 : 1.0
+O: 3 0 : 0 : 0 0 : 1.0
+O: 3 1 : 0 : 0 0 : 1.0
+O: 3 2 : 0 : 0 0 : 1.0
+O: 3 3 : 0 : 0 0 : 1.0
+O: 3 4 : 0 : 0 0 : 1.0
+O: 4 0 : 0 : 0 0 : 1.0
+O: 4 1 : 0 : 0 0 : 1.0
+O: 4 2 : 0 : 0 0 : 1.0
+O: 4 3 : 0 : 0 0 : 1.0
+O: 4 4 : 0 : 0 0 : 1.0
+O: 0 0 : 1 : 0 1 : 1.0
+O: 0 1 : 1 : 0 1 : 1.0
+O: 0 2 : 1 : 0 1 : 1.0
+O: 0 3 : 1 : 0 1 : 1.0
+O: 0 4 : 1 : 0 1 : 1.0
+O: 1 0 : 1 : 0 1 : 1.0
+O: 1 1 : 1 : 0 1 : 1.0
+O: 1 2 : 1 : 0 1 : 1.0
+O: 1 3 : 1 : 0 1 : 1.0
+O: 1 4 : 1 : 0 1 : 1.0
+O: 2 0 : 1 : 0 1 : 1.0
+O: 2 1 : 1 : 0 1 : 1.0
+O: 2 2 : 1 : 0 1 : 1.0
+O: 2 3 : 1 : 0 1 : 1.0
+O: 2 4 : 1 : 0 1 : 1.0
+O: 3 0 : 1 : 0 1 : 1.0
+O: 3 1 : 1 : 0 1 : 1.0
+O: 3 2 : 1 : 0 1 : 1.0
+O: 3 3 : 1 : 0 1 : 1.0
+O: 3 4 : 1 : 0 1 : 1.0
+O: 4 0 : 1 : 0 1 : 1.0
+O: 4 1 : 1 : 0 1 : 1.0
+O: 4 2 : 1 : 0 1 : 1.0
+O: 4 3 : 1 : 0 1 : 1.0
+O: 4 4 : 1 : 0 1 : 1.0
+O: 0 0 : 2 : 0 2 : 1.0
+O: 0 1 : 2 : 0 2 : 1.0
+O: 0 2 : 2 : 0 2 : 1.0
+O: 0 3 : 2 : 0 2 : 1.0
+O: 0 4 : 2 : 0 2 : 1.0
+O: 1 0 : 2 : 0 2 : 1.0
+O: 1 1 : 2 : 0 2 : 1.0
+O: 1 2 : 2 : 0 2 : 1.0
+O: 1 3 : 2 : 0 2 : 1.0
+O: 1 4 : 2 : 0 2 : 1.0
+O: 2 0 : 2 : 0 2 : 1.0
+O: 2 1 : 2 : 0 2 : 1.0
+O: 2 2 : 2 : 0 2 : 1.0
+O: 2 3 : 2 : 0 2 : 1.0
+O: 2 4 : 2 : 0 2 : 1.0
+O: 3 0 : 2 : 0 2 : 1.0
+O: 3 1 : 2 : 0 2 : 1.0
+O: 3 2 : 2 : 0 2 : 1.0
+O: 3 3 : 2 : 0 2 : 1.0
+O: 3 4 : 2 : 0 2 : 1.0
+O: 4 0 : 2 : 0 2 : 1.0
+O: 4 1 : 2 : 0 2 : 1.0
+O: 4 2 : 2 : 0 2 : 1.0
+O: 4 3 : 2 : 0 2 : 1.0
+O: 4 4 : 2 : 0 2 : 1.0
+O: 0 0 : 3 : 0 3 : 1.0
+O: 0 1 : 3 : 0 3 : 1.0
+O: 0 2 : 3 : 0 3 : 1.0
+O: 0 3 : 3 : 0 3 : 1.0
+O: 0 4 : 3 : 0 3 : 1.0
+O: 1 0 : 3 : 0 3 : 1.0
+O: 1 1 : 3 : 0 3 : 1.0
+O: 1 2 : 3 : 0 3 : 1.0
+O: 1 3 : 3 : 0 3 : 1.0
+O: 1 4 : 3 : 0 3 : 1.0
+O: 2 0 : 3 : 0 3 : 1.0
+O: 2 1 : 3 : 0 3 : 1.0
+O: 2 2 : 3 : 0 3 : 1.0
+O: 2 3 : 3 : 0 3 : 1.0
+O: 2 4 : 3 : 0 3 : 1.0
+O: 3 0 : 3 : 0 3 : 1.0
+O: 3 1 : 3 : 0 3 : 1.0
+O: 3 2 : 3 : 0 3 : 1.0
+O: 3 3 : 3 : 0 3 : 1.0
+O: 3 4 : 3 : 0 3 : 1.0
+O: 4 0 : 3 : 0 3 : 1.0
+O: 4 1 : 3 : 0 3 : 1.0
+O: 4 2 : 3 : 0 3 : 1.0
+O: 4 3 : 3 : 0 3 : 1.0
+O: 4 4 : 3 : 0 3 : 1.0
+O: 0 0 : 4 : 0 4 : 1.0
+O: 0 1 : 4 : 0 4 : 1.0
+O: 0 2 : 4 : 0 4 : 1.0
+O: 0 3 : 4 : 0 4 : 1.0
+O: 0 4 : 4 : 0 4 : 1.0
+O: 1 0 : 4 : 0 4 : 1.0
+O: 1 1 : 4 : 0 4 : 1.0
+O: 1 2 : 4 : 0 4 : 1.0
+O: 1 3 : 4 : 0 4 : 1.0
+O: 1 4 : 4 : 0 4 : 1.0
+O: 2 0 : 4 : 0 4 : 1.0
+O: 2 1 : 4 : 0 4 : 1.0
+O: 2 2 : 4 : 0 4 : 1.0
+O: 2 3 : 4 : 0 4 : 1.0
+O: 2 4 : 4 : 0 4 : 1.0
+O: 3 0 : 4 : 0 4 : 1.0
+O: 3 1 : 4 : 0 4 : 1.0
+O: 3 2 : 4 : 0 4 : 1.0
+O: 3 3 : 4 : 0 4 : 1.0
+O: 3 4 : 4 : 0 4 : 1.0
+O: 4 0 : 4 : 0 4 : 1.0
+O: 4 1 : 4 : 0 4 : 1.0
+O: 4 2 : 4 : 0 4 : 1.0
+O: 4 3 : 4 : 0 4 : 1.0
+O: 4 4 : 4 : 0 4 : 1.0
+O: 0 0 : 5 : 0 5 : 1.0
+O: 0 1 : 5 : 0 5 : 1.0
+O: 0 2 : 5 : 0 5 : 1.0
+O: 0 3 : 5 : 0 5 : 1.0
+O: 0 4 : 5 : 0 5 : 1.0
+O: 1 0 : 5 : 0 5 : 1.0
+O: 1 1 : 5 : 0 5 : 1.0
+O: 1 2 : 5 : 0 5 : 1.0
+O: 1 3 : 5 : 0 5 : 1.0
+O: 1 4 : 5 : 0 5 : 1.0
+O: 2 0 : 5 : 0 5 : 1.0
+O: 2 1 : 5 : 0 5 : 1.0
+O: 2 2 : 5 : 0 5 : 1.0
+O: 2 3 : 5 : 0 5 : 1.0
+O: 2 4 : 5 : 0 5 : 1.0
+O: 3 0 : 5 : 0 5 : 1.0
+O: 3 1 : 5 : 0 5 : 1.0
+O: 3 2 : 5 : 0 5 : 1.0
+O: 3 3 : 5 : 0 5 : 1.0
+O: 3 4 : 5 : 0 5 : 1.0
+O: 4 0 : 5 : 0 5 : 1.0
+O: 4 1 : 5 : 0 5 : 1.0
+O: 4 2 : 5 : 0 5 : 1.0
+O: 4 3 : 5 : 0 5 : 1.0
+O: 4 4 : 5 : 0 5 : 1.0
+O: 0 0 : 6 : 0 6 : 1.0
+O: 0 1 : 6 : 0 6 : 1.0
+O: 0 2 : 6 : 0 6 : 1.0
+O: 0 3 : 6 : 0 6 : 1.0
+O: 0 4 : 6 : 0 6 : 1.0
+O: 1 0 : 6 : 0 6 : 1.0
+O: 1 1 : 6 : 0 6 : 1.0
+O: 1 2 : 6 : 0 6 : 1.0
+O: 1 3 : 6 : 0 6 : 1.0
+O: 1 4 : 6 : 0 6 : 1.0
+O: 2 0 : 6 : 0 6 : 1.0
+O: 2 1 : 6 : 0 6 : 1.0
+O: 2 2 : 6 : 0 6 : 1.0
+O: 2 3 : 6 : 0 6 : 1.0
+O: 2 4 : 6 : 0 6 : 1.0
+O: 3 0 : 6 : 0 6 : 1.0
+O: 3 1 : 6 : 0 6 : 1.0
+O: 3 2 : 6 : 0 6 : 1.0
+O: 3 3 : 6 : 0 6 : 1.0
+O: 3 4 : 6 : 0 6 : 1.0
+O: 4 0 : 6 : 0 6 : 1.0
+O: 4 1 : 6 : 0 6 : 1.0
+O: 4 2 : 6 : 0 6 : 1.0
+O: 4 3 : 6 : 0 6 : 1.0
+O: 4 4 : 6 : 0 6 : 1.0
+O: 0 0 : 7 : 0 7 : 1.0
+O: 0 1 : 7 : 0 7 : 1.0
+O: 0 2 : 7 : 0 7 : 1.0
+O: 0 3 : 7 : 0 7 : 1.0
+O: 0 4 : 7 : 0 7 : 1.0
+O: 1 0 : 7 : 0 7 : 1.0
+O: 1 1 : 7 : 0 7 : 1.0
+O: 1 2 : 7 : 0 7 : 1.0
+O: 1 3 : 7 : 0 7 : 1.0
+O: 1 4 : 7 : 0 7 : 1.0
+O: 2 0 : 7 : 0 7 : 1.0
+O: 2 1 : 7 : 0 7 : 1.0
+O: 2 2 : 7 : 0 7 : 1.0
+O: 2 3 : 7 : 0 7 : 1.0
+O: 2 4 : 7 : 0 7 : 1.0
+O: 3 0 : 7 : 0 7 : 1.0
+O: 3 1 : 7 : 0 7 : 1.0
+O: 3 2 : 7 : 0 7 : 1.0
+O: 3 3 : 7 : 0 7 : 1.0
+O: 3 4 : 7 : 0 7 : 1.0
+O: 4 0 : 7 : 0 7 : 1.0
+O: 4 1 : 7 : 0 7 : 1.0
+O: 4 2 : 7 : 0 7 : 1.0
+O: 4 3 : 7 : 0 7 : 1.0
+O: 4 4 : 7 : 0 7 : 1.0
+O: 0 0 : 8 : 0 8 : 1.0
+O: 0 1 : 8 : 0 8 : 1.0
+O: 0 2 : 8 : 0 8 : 1.0
+O: 0 3 : 8 : 0 8 : 1.0
+O: 0 4 : 8 : 0 8 : 1.0
+O: 1 0 : 8 : 0 8 : 1.0
+O: 1 1 : 8 : 0 8 : 1.0
+O: 1 2 : 8 : 0 8 : 1.0
+O: 1 3 : 8 : 0 8 : 1.0
+O: 1 4 : 8 : 0 8 : 1.0
+O: 2 0 : 8 : 0 8 : 1.0
+O: 2 1 : 8 : 0 8 : 1.0
+O: 2 2 : 8 : 0 8 : 1.0
+O: 2 3 : 8 : 0 8 : 1.0
+O: 2 4 : 8 : 0 8 : 1.0
+O: 3 0 : 8 : 0 8 : 1.0
+O: 3 1 : 8 : 0 8 : 1.0
+O: 3 2 : 8 : 0 8 : 1.0
+O: 3 3 : 8 : 0 8 : 1.0
+O: 3 4 : 8 : 0 8 : 1.0
+O: 4 0 : 8 : 0 8 : 1.0
+O: 4 1 : 8 : 0 8 : 1.0
+O: 4 2 : 8 : 0 8 : 1.0
+O: 4 3 : 8 : 0 8 : 1.0
+O: 4 4 : 8 : 0 8 : 1.0
+O: 0 0 : 9 : 1 0 : 1.0
+O: 0 1 : 9 : 1 0 : 1.0
+O: 0 2 : 9 : 1 0 : 1.0
+O: 0 3 : 9 : 1 0 : 1.0
+O: 0 4 : 9 : 1 0 : 1.0
+O: 1 0 : 9 : 1 0 : 1.0
+O: 1 1 : 9 : 1 0 : 1.0
+O: 1 2 : 9 : 1 0 : 1.0
+O: 1 3 : 9 : 1 0 : 1.0
+O: 1 4 : 9 : 1 0 : 1.0
+O: 2 0 : 9 : 1 0 : 1.0
+O: 2 1 : 9 : 1 0 : 1.0
+O: 2 2 : 9 : 1 0 : 1.0
+O: 2 3 : 9 : 1 0 : 1.0
+O: 2 4 : 9 : 1 0 : 1.0
+O: 3 0 : 9 : 1 0 : 1.0
+O: 3 1 : 9 : 1 0 : 1.0
+O: 3 2 : 9 : 1 0 : 1.0
+O: 3 3 : 9 : 1 0 : 1.0
+O: 3 4 : 9 : 1 0 : 1.0
+O: 4 0 : 9 : 1 0 : 1.0
+O: 4 1 : 9 : 1 0 : 1.0
+O: 4 2 : 9 : 1 0 : 1.0
+O: 4 3 : 9 : 1 0 : 1.0
+O: 4 4 : 9 : 1 0 : 1.0
+O: 0 0 : 10 : 1 1 : 1.0
+O: 0 1 : 10 : 1 1 : 1.0
+O: 0 2 : 10 : 1 1 : 1.0
+O: 0 3 : 10 : 1 1 : 1.0
+O: 0 4 : 10 : 1 1 : 1.0
+O: 1 0 : 10 : 1 1 : 1.0
+O: 1 1 : 10 : 1 1 : 1.0
+O: 1 2 : 10 : 1 1 : 1.0
+O: 1 3 : 10 : 1 1 : 1.0
+O: 1 4 : 10 : 1 1 : 1.0
+O: 2 0 : 10 : 1 1 : 1.0
+O: 2 1 : 10 : 1 1 : 1.0
+O: 2 2 : 10 : 1 1 : 1.0
+O: 2 3 : 10 : 1 1 : 1.0
+O: 2 4 : 10 : 1 1 : 1.0
+O: 3 0 : 10 : 1 1 : 1.0
+O: 3 1 : 10 : 1 1 : 1.0
+O: 3 2 : 10 : 1 1 : 1.0
+O: 3 3 : 10 : 1 1 : 1.0
+O: 3 4 : 10 : 1 1 : 1.0
+O: 4 0 : 10 : 1 1 : 1.0
+O: 4 1 : 10 : 1 1 : 1.0
+O: 4 2 : 10 : 1 1 : 1.0
+O: 4 3 : 10 : 1 1 : 1.0
+O: 4 4 : 10 : 1 1 : 1.0
+O: 0 0 : 11 : 1 2 : 1.0
+O: 0 1 : 11 : 1 2 : 1.0
+O: 0 2 : 11 : 1 2 : 1.0
+O: 0 3 : 11 : 1 2 : 1.0
+O: 0 4 : 11 : 1 2 : 1.0
+O: 1 0 : 11 : 1 2 : 1.0
+O: 1 1 : 11 : 1 2 : 1.0
+O: 1 2 : 11 : 1 2 : 1.0
+O: 1 3 : 11 : 1 2 : 1.0
+O: 1 4 : 11 : 1 2 : 1.0
+O: 2 0 : 11 : 1 2 : 1.0
+O: 2 1 : 11 : 1 2 : 1.0
+O: 2 2 : 11 : 1 2 : 1.0
+O: 2 3 : 11 : 1 2 : 1.0
+O: 2 4 : 11 : 1 2 : 1.0
+O: 3 0 : 11 : 1 2 : 1.0
+O: 3 1 : 11 : 1 2 : 1.0
+O: 3 2 : 11 : 1 2 : 1.0
+O: 3 3 : 11 : 1 2 : 1.0
+O: 3 4 : 11 : 1 2 : 1.0
+O: 4 0 : 11 : 1 2 : 1.0
+O: 4 1 : 11 : 1 2 : 1.0
+O: 4 2 : 11 : 1 2 : 1.0
+O: 4 3 : 11 : 1 2 : 1.0
+O: 4 4 : 11 : 1 2 : 1.0
+O: 0 0 : 12 : 1 3 : 1.0
+O: 0 1 : 12 : 1 3 : 1.0
+O: 0 2 : 12 : 1 3 : 1.0
+O: 0 3 : 12 : 1 3 : 1.0
+O: 0 4 : 12 : 1 3 : 1.0
+O: 1 0 : 12 : 1 3 : 1.0
+O: 1 1 : 12 : 1 3 : 1.0
+O: 1 2 : 12 : 1 3 : 1.0
+O: 1 3 : 12 : 1 3 : 1.0
+O: 1 4 : 12 : 1 3 : 1.0
+O: 2 0 : 12 : 1 3 : 1.0
+O: 2 1 : 12 : 1 3 : 1.0
+O: 2 2 : 12 : 1 3 : 1.0
+O: 2 3 : 12 : 1 3 : 1.0
+O: 2 4 : 12 : 1 3 : 1.0
+O: 3 0 : 12 : 1 3 : 1.0
+O: 3 1 : 12 : 1 3 : 1.0
+O: 3 2 : 12 : 1 3 : 1.0
+O: 3 3 : 12 : 1 3 : 1.0
+O: 3 4 : 12 : 1 3 : 1.0
+O: 4 0 : 12 : 1 3 : 1.0
+O: 4 1 : 12 : 1 3 : 1.0
+O: 4 2 : 12 : 1 3 : 1.0
+O: 4 3 : 12 : 1 3 : 1.0
+O: 4 4 : 12 : 1 3 : 1.0
+O: 0 0 : 13 : 1 4 : 1.0
+O: 0 1 : 13 : 1 4 : 1.0
+O: 0 2 : 13 : 1 4 : 1.0
+O: 0 3 : 13 : 1 4 : 1.0
+O: 0 4 : 13 : 1 4 : 1.0
+O: 1 0 : 13 : 1 4 : 1.0
+O: 1 1 : 13 : 1 4 : 1.0
+O: 1 2 : 13 : 1 4 : 1.0
+O: 1 3 : 13 : 1 4 : 1.0
+O: 1 4 : 13 : 1 4 : 1.0
+O: 2 0 : 13 : 1 4 : 1.0
+O: 2 1 : 13 : 1 4 : 1.0
+O: 2 2 : 13 : 1 4 : 1.0
+O: 2 3 : 13 : 1 4 : 1.0
+O: 2 4 : 13 : 1 4 : 1.0
+O: 3 0 : 13 : 1 4 : 1.0
+O: 3 1 : 13 : 1 4 : 1.0
+O: 3 2 : 13 : 1 4 : 1.0
+O: 3 3 : 13 : 1 4 : 1.0
+O: 3 4 : 13 : 1 4 : 1.0
+O: 4 0 : 13 : 1 4 : 1.0
+O: 4 1 : 13 : 1 4 : 1.0
+O: 4 2 : 13 : 1 4 : 1.0
+O: 4 3 : 13 : 1 4 : 1.0
+O: 4 4 : 13 : 1 4 : 1.0
+O: 0 0 : 14 : 1 5 : 1.0
+O: 0 1 : 14 : 1 5 : 1.0
+O: 0 2 : 14 : 1 5 : 1.0
+O: 0 3 : 14 : 1 5 : 1.0
+O: 0 4 : 14 : 1 5 : 1.0
+O: 1 0 : 14 : 1 5 : 1.0
+O: 1 1 : 14 : 1 5 : 1.0
+O: 1 2 : 14 : 1 5 : 1.0
+O: 1 3 : 14 : 1 5 : 1.0
+O: 1 4 : 14 : 1 5 : 1.0
+O: 2 0 : 14 : 1 5 : 1.0
+O: 2 1 : 14 : 1 5 : 1.0
+O: 2 2 : 14 : 1 5 : 1.0
+O: 2 3 : 14 : 1 5 : 1.0
+O: 2 4 : 14 : 1 5 : 1.0
+O: 3 0 : 14 : 1 5 : 1.0
+O: 3 1 : 14 : 1 5 : 1.0
+O: 3 2 : 14 : 1 5 : 1.0
+O: 3 3 : 14 : 1 5 : 1.0
+O: 3 4 : 14 : 1 5 : 1.0
+O: 4 0 : 14 : 1 5 : 1.0
+O: 4 1 : 14 : 1 5 : 1.0
+O: 4 2 : 14 : 1 5 : 1.0
+O: 4 3 : 14 : 1 5 : 1.0
+O: 4 4 : 14 : 1 5 : 1.0
+O: 0 0 : 15 : 1 6 : 1.0
+O: 0 1 : 15 : 1 6 : 1.0
+O: 0 2 : 15 : 1 6 : 1.0
+O: 0 3 : 15 : 1 6 : 1.0
+O: 0 4 : 15 : 1 6 : 1.0
+O: 1 0 : 15 : 1 6 : 1.0
+O: 1 1 : 15 : 1 6 : 1.0
+O: 1 2 : 15 : 1 6 : 1.0
+O: 1 3 : 15 : 1 6 : 1.0
+O: 1 4 : 15 : 1 6 : 1.0
+O: 2 0 : 15 : 1 6 : 1.0
+O: 2 1 : 15 : 1 6 : 1.0
+O: 2 2 : 15 : 1 6 : 1.0
+O: 2 3 : 15 : 1 6 : 1.0
+O: 2 4 : 15 : 1 6 : 1.0
+O: 3 0 : 15 : 1 6 : 1.0
+O: 3 1 : 15 : 1 6 : 1.0
+O: 3 2 : 15 : 1 6 : 1.0
+O: 3 3 : 15 : 1 6 : 1.0
+O: 3 4 : 15 : 1 6 : 1.0
+O: 4 0 : 15 : 1 6 : 1.0
+O: 4 1 : 15 : 1 6 : 1.0
+O: 4 2 : 15 : 1 6 : 1.0
+O: 4 3 : 15 : 1 6 : 1.0
+O: 4 4 : 15 : 1 6 : 1.0
+O: 0 0 : 16 : 1 7 : 1.0
+O: 0 1 : 16 : 1 7 : 1.0
+O: 0 2 : 16 : 1 7 : 1.0
+O: 0 3 : 16 : 1 7 : 1.0
+O: 0 4 : 16 : 1 7 : 1.0
+O: 1 0 : 16 : 1 7 : 1.0
+O: 1 1 : 16 : 1 7 : 1.0
+O: 1 2 : 16 : 1 7 : 1.0
+O: 1 3 : 16 : 1 7 : 1.0
+O: 1 4 : 16 : 1 7 : 1.0
+O: 2 0 : 16 : 1 7 : 1.0
+O: 2 1 : 16 : 1 7 : 1.0
+O: 2 2 : 16 : 1 7 : 1.0
+O: 2 3 : 16 : 1 7 : 1.0
+O: 2 4 : 16 : 1 7 : 1.0
+O: 3 0 : 16 : 1 7 : 1.0
+O: 3 1 : 16 : 1 7 : 1.0
+O: 3 2 : 16 : 1 7 : 1.0
+O: 3 3 : 16 : 1 7 : 1.0
+O: 3 4 : 16 : 1 7 : 1.0
+O: 4 0 : 16 : 1 7 : 1.0
+O: 4 1 : 16 : 1 7 : 1.0
+O: 4 2 : 16 : 1 7 : 1.0
+O: 4 3 : 16 : 1 7 : 1.0
+O: 4 4 : 16 : 1 7 : 1.0
+O: 0 0 : 17 : 1 8 : 1.0
+O: 0 1 : 17 : 1 8 : 1.0
+O: 0 2 : 17 : 1 8 : 1.0
+O: 0 3 : 17 : 1 8 : 1.0
+O: 0 4 : 17 : 1 8 : 1.0
+O: 1 0 : 17 : 1 8 : 1.0
+O: 1 1 : 17 : 1 8 : 1.0
+O: 1 2 : 17 : 1 8 : 1.0
+O: 1 3 : 17 : 1 8 : 1.0
+O: 1 4 : 17 : 1 8 : 1.0
+O: 2 0 : 17 : 1 8 : 1.0
+O: 2 1 : 17 : 1 8 : 1.0
+O: 2 2 : 17 : 1 8 : 1.0
+O: 2 3 : 17 : 1 8 : 1.0
+O: 2 4 : 17 : 1 8 : 1.0
+O: 3 0 : 17 : 1 8 : 1.0
+O: 3 1 : 17 : 1 8 : 1.0
+O: 3 2 : 17 : 1 8 : 1.0
+O: 3 3 : 17 : 1 8 : 1.0
+O: 3 4 : 17 : 1 8 : 1.0
+O: 4 0 : 17 : 1 8 : 1.0
+O: 4 1 : 17 : 1 8 : 1.0
+O: 4 2 : 17 : 1 8 : 1.0
+O: 4 3 : 17 : 1 8 : 1.0
+O: 4 4 : 17 : 1 8 : 1.0
+O: 0 0 : 18 : 2 0 : 1.0
+O: 0 1 : 18 : 2 0 : 1.0
+O: 0 2 : 18 : 2 0 : 1.0
+O: 0 3 : 18 : 2 0 : 1.0
+O: 0 4 : 18 : 2 0 : 1.0
+O: 1 0 : 18 : 2 0 : 1.0
+O: 1 1 : 18 : 2 0 : 1.0
+O: 1 2 : 18 : 2 0 : 1.0
+O: 1 3 : 18 : 2 0 : 1.0
+O: 1 4 : 18 : 2 0 : 1.0
+O: 2 0 : 18 : 2 0 : 1.0
+O: 2 1 : 18 : 2 0 : 1.0
+O: 2 2 : 18 : 2 0 : 1.0
+O: 2 3 : 18 : 2 0 : 1.0
+O: 2 4 : 18 : 2 0 : 1.0
+O: 3 0 : 18 : 2 0 : 1.0
+O: 3 1 : 18 : 2 0 : 1.0
+O: 3 2 : 18 : 2 0 : 1.0
+O: 3 3 : 18 : 2 0 : 1.0
+O: 3 4 : 18 : 2 0 : 1.0
+O: 4 0 : 18 : 2 0 : 1.0
+O: 4 1 : 18 : 2 0 : 1.0
+O: 4 2 : 18 : 2 0 : 1.0
+O: 4 3 : 18 : 2 0 : 1.0
+O: 4 4 : 18 : 2 0 : 1.0
+O: 0 0 : 19 : 2 1 : 1.0
+O: 0 1 : 19 : 2 1 : 1.0
+O: 0 2 : 19 : 2 1 : 1.0
+O: 0 3 : 19 : 2 1 : 1.0
+O: 0 4 : 19 : 2 1 : 1.0
+O: 1 0 : 19 : 2 1 : 1.0
+O: 1 1 : 19 : 2 1 : 1.0
+O: 1 2 : 19 : 2 1 : 1.0
+O: 1 3 : 19 : 2 1 : 1.0
+O: 1 4 : 19 : 2 1 : 1.0
+O: 2 0 : 19 : 2 1 : 1.0
+O: 2 1 : 19 : 2 1 : 1.0
+O: 2 2 : 19 : 2 1 : 1.0
+O: 2 3 : 19 : 2 1 : 1.0
+O: 2 4 : 19 : 2 1 : 1.0
+O: 3 0 : 19 : 2 1 : 1.0
+O: 3 1 : 19 : 2 1 : 1.0
+O: 3 2 : 19 : 2 1 : 1.0
+O: 3 3 : 19 : 2 1 : 1.0
+O: 3 4 : 19 : 2 1 : 1.0
+O: 4 0 : 19 : 2 1 : 1.0
+O: 4 1 : 19 : 2 1 : 1.0
+O: 4 2 : 19 : 2 1 : 1.0
+O: 4 3 : 19 : 2 1 : 1.0
+O: 4 4 : 19 : 2 1 : 1.0
+O: 0 0 : 20 : 2 2 : 1.0
+O: 0 1 : 20 : 2 2 : 1.0
+O: 0 2 : 20 : 2 2 : 1.0
+O: 0 3 : 20 : 2 2 : 1.0
+O: 0 4 : 20 : 2 2 : 1.0
+O: 1 0 : 20 : 2 2 : 1.0
+O: 1 1 : 20 : 2 2 : 1.0
+O: 1 2 : 20 : 2 2 : 1.0
+O: 1 3 : 20 : 2 2 : 1.0
+O: 1 4 : 20 : 2 2 : 1.0
+O: 2 0 : 20 : 2 2 : 1.0
+O: 2 1 : 20 : 2 2 : 1.0
+O: 2 2 : 20 : 2 2 : 1.0
+O: 2 3 : 20 : 2 2 : 1.0
+O: 2 4 : 20 : 2 2 : 1.0
+O: 3 0 : 20 : 2 2 : 1.0
+O: 3 1 : 20 : 2 2 : 1.0
+O: 3 2 : 20 : 2 2 : 1.0
+O: 3 3 : 20 : 2 2 : 1.0
+O: 3 4 : 20 : 2 2 : 1.0
+O: 4 0 : 20 : 2 2 : 1.0
+O: 4 1 : 20 : 2 2 : 1.0
+O: 4 2 : 20 : 2 2 : 1.0
+O: 4 3 : 20 : 2 2 : 1.0
+O: 4 4 : 20 : 2 2 : 1.0
+O: 0 0 : 21 : 2 3 : 1.0
+O: 0 1 : 21 : 2 3 : 1.0
+O: 0 2 : 21 : 2 3 : 1.0
+O: 0 3 : 21 : 2 3 : 1.0
+O: 0 4 : 21 : 2 3 : 1.0
+O: 1 0 : 21 : 2 3 : 1.0
+O: 1 1 : 21 : 2 3 : 1.0
+O: 1 2 : 21 : 2 3 : 1.0
+O: 1 3 : 21 : 2 3 : 1.0
+O: 1 4 : 21 : 2 3 : 1.0
+O: 2 0 : 21 : 2 3 : 1.0
+O: 2 1 : 21 : 2 3 : 1.0
+O: 2 2 : 21 : 2 3 : 1.0
+O: 2 3 : 21 : 2 3 : 1.0
+O: 2 4 : 21 : 2 3 : 1.0
+O: 3 0 : 21 : 2 3 : 1.0
+O: 3 1 : 21 : 2 3 : 1.0
+O: 3 2 : 21 : 2 3 : 1.0
+O: 3 3 : 21 : 2 3 : 1.0
+O: 3 4 : 21 : 2 3 : 1.0
+O: 4 0 : 21 : 2 3 : 1.0
+O: 4 1 : 21 : 2 3 : 1.0
+O: 4 2 : 21 : 2 3 : 1.0
+O: 4 3 : 21 : 2 3 : 1.0
+O: 4 4 : 21 : 2 3 : 1.0
+O: 0 0 : 22 : 2 4 : 1.0
+O: 0 1 : 22 : 2 4 : 1.0
+O: 0 2 : 22 : 2 4 : 1.0
+O: 0 3 : 22 : 2 4 : 1.0
+O: 0 4 : 22 : 2 4 : 1.0
+O: 1 0 : 22 : 2 4 : 1.0
+O: 1 1 : 22 : 2 4 : 1.0
+O: 1 2 : 22 : 2 4 : 1.0
+O: 1 3 : 22 : 2 4 : 1.0
+O: 1 4 : 22 : 2 4 : 1.0
+O: 2 0 : 22 : 2 4 : 1.0
+O: 2 1 : 22 : 2 4 : 1.0
+O: 2 2 : 22 : 2 4 : 1.0
+O: 2 3 : 22 : 2 4 : 1.0
+O: 2 4 : 22 : 2 4 : 1.0
+O: 3 0 : 22 : 2 4 : 1.0
+O: 3 1 : 22 : 2 4 : 1.0
+O: 3 2 : 22 : 2 4 : 1.0
+O: 3 3 : 22 : 2 4 : 1.0
+O: 3 4 : 22 : 2 4 : 1.0
+O: 4 0 : 22 : 2 4 : 1.0
+O: 4 1 : 22 : 2 4 : 1.0
+O: 4 2 : 22 : 2 4 : 1.0
+O: 4 3 : 22 : 2 4 : 1.0
+O: 4 4 : 22 : 2 4 : 1.0
+O: 0 0 : 23 : 2 5 : 1.0
+O: 0 1 : 23 : 2 5 : 1.0
+O: 0 2 : 23 : 2 5 : 1.0
+O: 0 3 : 23 : 2 5 : 1.0
+O: 0 4 : 23 : 2 5 : 1.0
+O: 1 0 : 23 : 2 5 : 1.0
+O: 1 1 : 23 : 2 5 : 1.0
+O: 1 2 : 23 : 2 5 : 1.0
+O: 1 3 : 23 : 2 5 : 1.0
+O: 1 4 : 23 : 2 5 : 1.0
+O: 2 0 : 23 : 2 5 : 1.0
+O: 2 1 : 23 : 2 5 : 1.0
+O: 2 2 : 23 : 2 5 : 1.0
+O: 2 3 : 23 : 2 5 : 1.0
+O: 2 4 : 23 : 2 5 : 1.0
+O: 3 0 : 23 : 2 5 : 1.0
+O: 3 1 : 23 : 2 5 : 1.0
+O: 3 2 : 23 : 2 5 : 1.0
+O: 3 3 : 23 : 2 5 : 1.0
+O: 3 4 : 23 : 2 5 : 1.0
+O: 4 0 : 23 : 2 5 : 1.0
+O: 4 1 : 23 : 2 5 : 1.0
+O: 4 2 : 23 : 2 5 : 1.0
+O: 4 3 : 23 : 2 5 : 1.0
+O: 4 4 : 23 : 2 5 : 1.0
+O: 0 0 : 24 : 2 6 : 1.0
+O: 0 1 : 24 : 2 6 : 1.0
+O: 0 2 : 24 : 2 6 : 1.0
+O: 0 3 : 24 : 2 6 : 1.0
+O: 0 4 : 24 : 2 6 : 1.0
+O: 1 0 : 24 : 2 6 : 1.0
+O: 1 1 : 24 : 2 6 : 1.0
+O: 1 2 : 24 : 2 6 : 1.0
+O: 1 3 : 24 : 2 6 : 1.0
+O: 1 4 : 24 : 2 6 : 1.0
+O: 2 0 : 24 : 2 6 : 1.0
+O: 2 1 : 24 : 2 6 : 1.0
+O: 2 2 : 24 : 2 6 : 1.0
+O: 2 3 : 24 : 2 6 : 1.0
+O: 2 4 : 24 : 2 6 : 1.0
+O: 3 0 : 24 : 2 6 : 1.0
+O: 3 1 : 24 : 2 6 : 1.0
+O: 3 2 : 24 : 2 6 : 1.0
+O: 3 3 : 24 : 2 6 : 1.0
+O: 3 4 : 24 : 2 6 : 1.0
+O: 4 0 : 24 : 2 6 : 1.0
+O: 4 1 : 24 : 2 6 : 1.0
+O: 4 2 : 24 : 2 6 : 1.0
+O: 4 3 : 24 : 2 6 : 1.0
+O: 4 4 : 24 : 2 6 : 1.0
+O: 0 0 : 25 : 2 7 : 1.0
+O: 0 1 : 25 : 2 7 : 1.0
+O: 0 2 : 25 : 2 7 : 1.0
+O: 0 3 : 25 : 2 7 : 1.0
+O: 0 4 : 25 : 2 7 : 1.0
+O: 1 0 : 25 : 2 7 : 1.0
+O: 1 1 : 25 : 2 7 : 1.0
+O: 1 2 : 25 : 2 7 : 1.0
+O: 1 3 : 25 : 2 7 : 1.0
+O: 1 4 : 25 : 2 7 : 1.0
+O: 2 0 : 25 : 2 7 : 1.0
+O: 2 1 : 25 : 2 7 : 1.0
+O: 2 2 : 25 : 2 7 : 1.0
+O: 2 3 : 25 : 2 7 : 1.0
+O: 2 4 : 25 : 2 7 : 1.0
+O: 3 0 : 25 : 2 7 : 1.0
+O: 3 1 : 25 : 2 7 : 1.0
+O: 3 2 : 25 : 2 7 : 1.0
+O: 3 3 : 25 : 2 7 : 1.0
+O: 3 4 : 25 : 2 7 : 1.0
+O: 4 0 : 25 : 2 7 : 1.0
+O: 4 1 : 25 : 2 7 : 1.0
+O: 4 2 : 25 : 2 7 : 1.0
+O: 4 3 : 25 : 2 7 : 1.0
+O: 4 4 : 25 : 2 7 : 1.0
+O: 0 0 : 26 : 2 8 : 1.0
+O: 0 1 : 26 : 2 8 : 1.0
+O: 0 2 : 26 : 2 8 : 1.0
+O: 0 3 : 26 : 2 8 : 1.0
+O: 0 4 : 26 : 2 8 : 1.0
+O: 1 0 : 26 : 2 8 : 1.0
+O: 1 1 : 26 : 2 8 : 1.0
+O: 1 2 : 26 : 2 8 : 1.0
+O: 1 3 : 26 : 2 8 : 1.0
+O: 1 4 : 26 : 2 8 : 1.0
+O: 2 0 : 26 : 2 8 : 1.0
+O: 2 1 : 26 : 2 8 : 1.0
+O: 2 2 : 26 : 2 8 : 1.0
+O: 2 3 : 26 : 2 8 : 1.0
+O: 2 4 : 26 : 2 8 : 1.0
+O: 3 0 : 26 : 2 8 : 1.0
+O: 3 1 : 26 : 2 8 : 1.0
+O: 3 2 : 26 : 2 8 : 1.0
+O: 3 3 : 26 : 2 8 : 1.0
+O: 3 4 : 26 : 2 8 : 1.0
+O: 4 0 : 26 : 2 8 : 1.0
+O: 4 1 : 26 : 2 8 : 1.0
+O: 4 2 : 26 : 2 8 : 1.0
+O: 4 3 : 26 : 2 8 : 1.0
+O: 4 4 : 26 : 2 8 : 1.0
+O: 0 0 : 27 : 3 0 : 1.0
+O: 0 1 : 27 : 3 0 : 1.0
+O: 0 2 : 27 : 3 0 : 1.0
+O: 0 3 : 27 : 3 0 : 1.0
+O: 0 4 : 27 : 3 0 : 1.0
+O: 1 0 : 27 : 3 0 : 1.0
+O: 1 1 : 27 : 3 0 : 1.0
+O: 1 2 : 27 : 3 0 : 1.0
+O: 1 3 : 27 : 3 0 : 1.0
+O: 1 4 : 27 : 3 0 : 1.0
+O: 2 0 : 27 : 3 0 : 1.0
+O: 2 1 : 27 : 3 0 : 1.0
+O: 2 2 : 27 : 3 0 : 1.0
+O: 2 3 : 27 : 3 0 : 1.0
+O: 2 4 : 27 : 3 0 : 1.0
+O: 3 0 : 27 : 3 0 : 1.0
+O: 3 1 : 27 : 3 0 : 1.0
+O: 3 2 : 27 : 3 0 : 1.0
+O: 3 3 : 27 : 3 0 : 1.0
+O: 3 4 : 27 : 3 0 : 1.0
+O: 4 0 : 27 : 3 0 : 1.0
+O: 4 1 : 27 : 3 0 : 1.0
+O: 4 2 : 27 : 3 0 : 1.0
+O: 4 3 : 27 : 3 0 : 1.0
+O: 4 4 : 27 : 3 0 : 1.0
+O: 0 0 : 28 : 3 1 : 1.0
+O: 0 1 : 28 : 3 1 : 1.0
+O: 0 2 : 28 : 3 1 : 1.0
+O: 0 3 : 28 : 3 1 : 1.0
+O: 0 4 : 28 : 3 1 : 1.0
+O: 1 0 : 28 : 3 1 : 1.0
+O: 1 1 : 28 : 3 1 : 1.0
+O: 1 2 : 28 : 3 1 : 1.0
+O: 1 3 : 28 : 3 1 : 1.0
+O: 1 4 : 28 : 3 1 : 1.0
+O: 2 0 : 28 : 3 1 : 1.0
+O: 2 1 : 28 : 3 1 : 1.0
+O: 2 2 : 28 : 3 1 : 1.0
+O: 2 3 : 28 : 3 1 : 1.0
+O: 2 4 : 28 : 3 1 : 1.0
+O: 3 0 : 28 : 3 1 : 1.0
+O: 3 1 : 28 : 3 1 : 1.0
+O: 3 2 : 28 : 3 1 : 1.0
+O: 3 3 : 28 : 3 1 : 1.0
+O: 3 4 : 28 : 3 1 : 1.0
+O: 4 0 : 28 : 3 1 : 1.0
+O: 4 1 : 28 : 3 1 : 1.0
+O: 4 2 : 28 : 3 1 : 1.0
+O: 4 3 : 28 : 3 1 : 1.0
+O: 4 4 : 28 : 3 1 : 1.0
+O: 0 0 : 29 : 3 2 : 1.0
+O: 0 1 : 29 : 3 2 : 1.0
+O: 0 2 : 29 : 3 2 : 1.0
+O: 0 3 : 29 : 3 2 : 1.0
+O: 0 4 : 29 : 3 2 : 1.0
+O: 1 0 : 29 : 3 2 : 1.0
+O: 1 1 : 29 : 3 2 : 1.0
+O: 1 2 : 29 : 3 2 : 1.0
+O: 1 3 : 29 : 3 2 : 1.0
+O: 1 4 : 29 : 3 2 : 1.0
+O: 2 0 : 29 : 3 2 : 1.0
+O: 2 1 : 29 : 3 2 : 1.0
+O: 2 2 : 29 : 3 2 : 1.0
+O: 2 3 : 29 : 3 2 : 1.0
+O: 2 4 : 29 : 3 2 : 1.0
+O: 3 0 : 29 : 3 2 : 1.0
+O: 3 1 : 29 : 3 2 : 1.0
+O: 3 2 : 29 : 3 2 : 1.0
+O: 3 3 : 29 : 3 2 : 1.0
+O: 3 4 : 29 : 3 2 : 1.0
+O: 4 0 : 29 : 3 2 : 1.0
+O: 4 1 : 29 : 3 2 : 1.0
+O: 4 2 : 29 : 3 2 : 1.0
+O: 4 3 : 29 : 3 2 : 1.0
+O: 4 4 : 29 : 3 2 : 1.0
+O: 0 0 : 30 : 3 3 : 1.0
+O: 0 1 : 30 : 3 3 : 1.0
+O: 0 2 : 30 : 3 3 : 1.0
+O: 0 3 : 30 : 3 3 : 1.0
+O: 0 4 : 30 : 3 3 : 1.0
+O: 1 0 : 30 : 3 3 : 1.0
+O: 1 1 : 30 : 3 3 : 1.0
+O: 1 2 : 30 : 3 3 : 1.0
+O: 1 3 : 30 : 3 3 : 1.0
+O: 1 4 : 30 : 3 3 : 1.0
+O: 2 0 : 30 : 3 3 : 1.0
+O: 2 1 : 30 : 3 3 : 1.0
+O: 2 2 : 30 : 3 3 : 1.0
+O: 2 3 : 30 : 3 3 : 1.0
+O: 2 4 : 30 : 3 3 : 1.0
+O: 3 0 : 30 : 3 3 : 1.0
+O: 3 1 : 30 : 3 3 : 1.0
+O: 3 2 : 30 : 3 3 : 1.0
+O: 3 3 : 30 : 3 3 : 1.0
+O: 3 4 : 30 : 3 3 : 1.0
+O: 4 0 : 30 : 3 3 : 1.0
+O: 4 1 : 30 : 3 3 : 1.0
+O: 4 2 : 30 : 3 3 : 1.0
+O: 4 3 : 30 : 3 3 : 1.0
+O: 4 4 : 30 : 3 3 : 1.0
+O: 0 0 : 31 : 3 4 : 1.0
+O: 0 1 : 31 : 3 4 : 1.0
+O: 0 2 : 31 : 3 4 : 1.0
+O: 0 3 : 31 : 3 4 : 1.0
+O: 0 4 : 31 : 3 4 : 1.0
+O: 1 0 : 31 : 3 4 : 1.0
+O: 1 1 : 31 : 3 4 : 1.0
+O: 1 2 : 31 : 3 4 : 1.0
+O: 1 3 : 31 : 3 4 : 1.0
+O: 1 4 : 31 : 3 4 : 1.0
+O: 2 0 : 31 : 3 4 : 1.0
+O: 2 1 : 31 : 3 4 : 1.0
+O: 2 2 : 31 : 3 4 : 1.0
+O: 2 3 : 31 : 3 4 : 1.0
+O: 2 4 : 31 : 3 4 : 1.0
+O: 3 0 : 31 : 3 4 : 1.0
+O: 3 1 : 31 : 3 4 : 1.0
+O: 3 2 : 31 : 3 4 : 1.0
+O: 3 3 : 31 : 3 4 : 1.0
+O: 3 4 : 31 : 3 4 : 1.0
+O: 4 0 : 31 : 3 4 : 1.0
+O: 4 1 : 31 : 3 4 : 1.0
+O: 4 2 : 31 : 3 4 : 1.0
+O: 4 3 : 31 : 3 4 : 1.0
+O: 4 4 : 31 : 3 4 : 1.0
+O: 0 0 : 32 : 3 5 : 1.0
+O: 0 1 : 32 : 3 5 : 1.0
+O: 0 2 : 32 : 3 5 : 1.0
+O: 0 3 : 32 : 3 5 : 1.0
+O: 0 4 : 32 : 3 5 : 1.0
+O: 1 0 : 32 : 3 5 : 1.0
+O: 1 1 : 32 : 3 5 : 1.0
+O: 1 2 : 32 : 3 5 : 1.0
+O: 1 3 : 32 : 3 5 : 1.0
+O: 1 4 : 32 : 3 5 : 1.0
+O: 2 0 : 32 : 3 5 : 1.0
+O: 2 1 : 32 : 3 5 : 1.0
+O: 2 2 : 32 : 3 5 : 1.0
+O: 2 3 : 32 : 3 5 : 1.0
+O: 2 4 : 32 : 3 5 : 1.0
+O: 3 0 : 32 : 3 5 : 1.0
+O: 3 1 : 32 : 3 5 : 1.0
+O: 3 2 : 32 : 3 5 : 1.0
+O: 3 3 : 32 : 3 5 : 1.0
+O: 3 4 : 32 : 3 5 : 1.0
+O: 4 0 : 32 : 3 5 : 1.0
+O: 4 1 : 32 : 3 5 : 1.0
+O: 4 2 : 32 : 3 5 : 1.0
+O: 4 3 : 32 : 3 5 : 1.0
+O: 4 4 : 32 : 3 5 : 1.0
+O: 0 0 : 33 : 3 6 : 1.0
+O: 0 1 : 33 : 3 6 : 1.0
+O: 0 2 : 33 : 3 6 : 1.0
+O: 0 3 : 33 : 3 6 : 1.0
+O: 0 4 : 33 : 3 6 : 1.0
+O: 1 0 : 33 : 3 6 : 1.0
+O: 1 1 : 33 : 3 6 : 1.0
+O: 1 2 : 33 : 3 6 : 1.0
+O: 1 3 : 33 : 3 6 : 1.0
+O: 1 4 : 33 : 3 6 : 1.0
+O: 2 0 : 33 : 3 6 : 1.0
+O: 2 1 : 33 : 3 6 : 1.0
+O: 2 2 : 33 : 3 6 : 1.0
+O: 2 3 : 33 : 3 6 : 1.0
+O: 2 4 : 33 : 3 6 : 1.0
+O: 3 0 : 33 : 3 6 : 1.0
+O: 3 1 : 33 : 3 6 : 1.0
+O: 3 2 : 33 : 3 6 : 1.0
+O: 3 3 : 33 : 3 6 : 1.0
+O: 3 4 : 33 : 3 6 : 1.0
+O: 4 0 : 33 : 3 6 : 1.0
+O: 4 1 : 33 : 3 6 : 1.0
+O: 4 2 : 33 : 3 6 : 1.0
+O: 4 3 : 33 : 3 6 : 1.0
+O: 4 4 : 33 : 3 6 : 1.0
+O: 0 0 : 34 : 3 7 : 1.0
+O: 0 1 : 34 : 3 7 : 1.0
+O: 0 2 : 34 : 3 7 : 1.0
+O: 0 3 : 34 : 3 7 : 1.0
+O: 0 4 : 34 : 3 7 : 1.0
+O: 1 0 : 34 : 3 7 : 1.0
+O: 1 1 : 34 : 3 7 : 1.0
+O: 1 2 : 34 : 3 7 : 1.0
+O: 1 3 : 34 : 3 7 : 1.0
+O: 1 4 : 34 : 3 7 : 1.0
+O: 2 0 : 34 : 3 7 : 1.0
+O: 2 1 : 34 : 3 7 : 1.0
+O: 2 2 : 34 : 3 7 : 1.0
+O: 2 3 : 34 : 3 7 : 1.0
+O: 2 4 : 34 : 3 7 : 1.0
+O: 3 0 : 34 : 3 7 : 1.0
+O: 3 1 : 34 : 3 7 : 1.0
+O: 3 2 : 34 : 3 7 : 1.0
+O: 3 3 : 34 : 3 7 : 1.0
+O: 3 4 : 34 : 3 7 : 1.0
+O: 4 0 : 34 : 3 7 : 1.0
+O: 4 1 : 34 : 3 7 : 1.0
+O: 4 2 : 34 : 3 7 : 1.0
+O: 4 3 : 34 : 3 7 : 1.0
+O: 4 4 : 34 : 3 7 : 1.0
+O: 0 0 : 35 : 3 8 : 1.0
+O: 0 1 : 35 : 3 8 : 1.0
+O: 0 2 : 35 : 3 8 : 1.0
+O: 0 3 : 35 : 3 8 : 1.0
+O: 0 4 : 35 : 3 8 : 1.0
+O: 1 0 : 35 : 3 8 : 1.0
+O: 1 1 : 35 : 3 8 : 1.0
+O: 1 2 : 35 : 3 8 : 1.0
+O: 1 3 : 35 : 3 8 : 1.0
+O: 1 4 : 35 : 3 8 : 1.0
+O: 2 0 : 35 : 3 8 : 1.0
+O: 2 1 : 35 : 3 8 : 1.0
+O: 2 2 : 35 : 3 8 : 1.0
+O: 2 3 : 35 : 3 8 : 1.0
+O: 2 4 : 35 : 3 8 : 1.0
+O: 3 0 : 35 : 3 8 : 1.0
+O: 3 1 : 35 : 3 8 : 1.0
+O: 3 2 : 35 : 3 8 : 1.0
+O: 3 3 : 35 : 3 8 : 1.0
+O: 3 4 : 35 : 3 8 : 1.0
+O: 4 0 : 35 : 3 8 : 1.0
+O: 4 1 : 35 : 3 8 : 1.0
+O: 4 2 : 35 : 3 8 : 1.0
+O: 4 3 : 35 : 3 8 : 1.0
+O: 4 4 : 35 : 3 8 : 1.0
+O: 0 0 : 36 : 4 0 : 1.0
+O: 0 1 : 36 : 4 0 : 1.0
+O: 0 2 : 36 : 4 0 : 1.0
+O: 0 3 : 36 : 4 0 : 1.0
+O: 0 4 : 36 : 4 0 : 1.0
+O: 1 0 : 36 : 4 0 : 1.0
+O: 1 1 : 36 : 4 0 : 1.0
+O: 1 2 : 36 : 4 0 : 1.0
+O: 1 3 : 36 : 4 0 : 1.0
+O: 1 4 : 36 : 4 0 : 1.0
+O: 2 0 : 36 : 4 0 : 1.0
+O: 2 1 : 36 : 4 0 : 1.0
+O: 2 2 : 36 : 4 0 : 1.0
+O: 2 3 : 36 : 4 0 : 1.0
+O: 2 4 : 36 : 4 0 : 1.0
+O: 3 0 : 36 : 4 0 : 1.0
+O: 3 1 : 36 : 4 0 : 1.0
+O: 3 2 : 36 : 4 0 : 1.0
+O: 3 3 : 36 : 4 0 : 1.0
+O: 3 4 : 36 : 4 0 : 1.0
+O: 4 0 : 36 : 4 0 : 1.0
+O: 4 1 : 36 : 4 0 : 1.0
+O: 4 2 : 36 : 4 0 : 1.0
+O: 4 3 : 36 : 4 0 : 1.0
+O: 4 4 : 36 : 4 0 : 1.0
+O: 0 0 : 37 : 4 1 : 1.0
+O: 0 1 : 37 : 4 1 : 1.0
+O: 0 2 : 37 : 4 1 : 1.0
+O: 0 3 : 37 : 4 1 : 1.0
+O: 0 4 : 37 : 4 1 : 1.0
+O: 1 0 : 37 : 4 1 : 1.0
+O: 1 1 : 37 : 4 1 : 1.0
+O: 1 2 : 37 : 4 1 : 1.0
+O: 1 3 : 37 : 4 1 : 1.0
+O: 1 4 : 37 : 4 1 : 1.0
+O: 2 0 : 37 : 4 1 : 1.0
+O: 2 1 : 37 : 4 1 : 1.0
+O: 2 2 : 37 : 4 1 : 1.0
+O: 2 3 : 37 : 4 1 : 1.0
+O: 2 4 : 37 : 4 1 : 1.0
+O: 3 0 : 37 : 4 1 : 1.0
+O: 3 1 : 37 : 4 1 : 1.0
+O: 3 2 : 37 : 4 1 : 1.0
+O: 3 3 : 37 : 4 1 : 1.0
+O: 3 4 : 37 : 4 1 : 1.0
+O: 4 0 : 37 : 4 1 : 1.0
+O: 4 1 : 37 : 4 1 : 1.0
+O: 4 2 : 37 : 4 1 : 1.0
+O: 4 3 : 37 : 4 1 : 1.0
+O: 4 4 : 37 : 4 1 : 1.0
+O: 0 0 : 38 : 4 2 : 1.0
+O: 0 1 : 38 : 4 2 : 1.0
+O: 0 2 : 38 : 4 2 : 1.0
+O: 0 3 : 38 : 4 2 : 1.0
+O: 0 4 : 38 : 4 2 : 1.0
+O: 1 0 : 38 : 4 2 : 1.0
+O: 1 1 : 38 : 4 2 : 1.0
+O: 1 2 : 38 : 4 2 : 1.0
+O: 1 3 : 38 : 4 2 : 1.0
+O: 1 4 : 38 : 4 2 : 1.0
+O: 2 0 : 38 : 4 2 : 1.0
+O: 2 1 : 38 : 4 2 : 1.0
+O: 2 2 : 38 : 4 2 : 1.0
+O: 2 3 : 38 : 4 2 : 1.0
+O: 2 4 : 38 : 4 2 : 1.0
+O: 3 0 : 38 : 4 2 : 1.0
+O: 3 1 : 38 : 4 2 : 1.0
+O: 3 2 : 38 : 4 2 : 1.0
+O: 3 3 : 38 : 4 2 : 1.0
+O: 3 4 : 38 : 4 2 : 1.0
+O: 4 0 : 38 : 4 2 : 1.0
+O: 4 1 : 38 : 4 2 : 1.0
+O: 4 2 : 38 : 4 2 : 1.0
+O: 4 3 : 38 : 4 2 : 1.0
+O: 4 4 : 38 : 4 2 : 1.0
+O: 0 0 : 39 : 4 3 : 1.0
+O: 0 1 : 39 : 4 3 : 1.0
+O: 0 2 : 39 : 4 3 : 1.0
+O: 0 3 : 39 : 4 3 : 1.0
+O: 0 4 : 39 : 4 3 : 1.0
+O: 1 0 : 39 : 4 3 : 1.0
+O: 1 1 : 39 : 4 3 : 1.0
+O: 1 2 : 39 : 4 3 : 1.0
+O: 1 3 : 39 : 4 3 : 1.0
+O: 1 4 : 39 : 4 3 : 1.0
+O: 2 0 : 39 : 4 3 : 1.0
+O: 2 1 : 39 : 4 3 : 1.0
+O: 2 2 : 39 : 4 3 : 1.0
+O: 2 3 : 39 : 4 3 : 1.0
+O: 2 4 : 39 : 4 3 : 1.0
+O: 3 0 : 39 : 4 3 : 1.0
+O: 3 1 : 39 : 4 3 : 1.0
+O: 3 2 : 39 : 4 3 : 1.0
+O: 3 3 : 39 : 4 3 : 1.0
+O: 3 4 : 39 : 4 3 : 1.0
+O: 4 0 : 39 : 4 3 : 1.0
+O: 4 1 : 39 : 4 3 : 1.0
+O: 4 2 : 39 : 4 3 : 1.0
+O: 4 3 : 39 : 4 3 : 1.0
+O: 4 4 : 39 : 4 3 : 1.0
+O: 0 0 : 40 : 4 4 : 1.0
+O: 0 1 : 40 : 4 4 : 1.0
+O: 0 2 : 40 : 4 4 : 1.0
+O: 0 3 : 40 : 4 4 : 1.0
+O: 0 4 : 40 : 4 4 : 1.0
+O: 1 0 : 40 : 4 4 : 1.0
+O: 1 1 : 40 : 4 4 : 1.0
+O: 1 2 : 40 : 4 4 : 1.0
+O: 1 3 : 40 : 4 4 : 1.0
+O: 1 4 : 40 : 4 4 : 1.0
+O: 2 0 : 40 : 4 4 : 1.0
+O: 2 1 : 40 : 4 4 : 1.0
+O: 2 2 : 40 : 4 4 : 1.0
+O: 2 3 : 40 : 4 4 : 1.0
+O: 2 4 : 40 : 4 4 : 1.0
+O: 3 0 : 40 : 4 4 : 1.0
+O: 3 1 : 40 : 4 4 : 1.0
+O: 3 2 : 40 : 4 4 : 1.0
+O: 3 3 : 40 : 4 4 : 1.0
+O: 3 4 : 40 : 4 4 : 1.0
+O: 4 0 : 40 : 4 4 : 1.0
+O: 4 1 : 40 : 4 4 : 1.0
+O: 4 2 : 40 : 4 4 : 1.0
+O: 4 3 : 40 : 4 4 : 1.0
+O: 4 4 : 40 : 4 4 : 1.0
+O: 0 0 : 41 : 4 5 : 1.0
+O: 0 1 : 41 : 4 5 : 1.0
+O: 0 2 : 41 : 4 5 : 1.0
+O: 0 3 : 41 : 4 5 : 1.0
+O: 0 4 : 41 : 4 5 : 1.0
+O: 1 0 : 41 : 4 5 : 1.0
+O: 1 1 : 41 : 4 5 : 1.0
+O: 1 2 : 41 : 4 5 : 1.0
+O: 1 3 : 41 : 4 5 : 1.0
+O: 1 4 : 41 : 4 5 : 1.0
+O: 2 0 : 41 : 4 5 : 1.0
+O: 2 1 : 41 : 4 5 : 1.0
+O: 2 2 : 41 : 4 5 : 1.0
+O: 2 3 : 41 : 4 5 : 1.0
+O: 2 4 : 41 : 4 5 : 1.0
+O: 3 0 : 41 : 4 5 : 1.0
+O: 3 1 : 41 : 4 5 : 1.0
+O: 3 2 : 41 : 4 5 : 1.0
+O: 3 3 : 41 : 4 5 : 1.0
+O: 3 4 : 41 : 4 5 : 1.0
+O: 4 0 : 41 : 4 5 : 1.0
+O: 4 1 : 41 : 4 5 : 1.0
+O: 4 2 : 41 : 4 5 : 1.0
+O: 4 3 : 41 : 4 5 : 1.0
+O: 4 4 : 41 : 4 5 : 1.0
+O: 0 0 : 42 : 4 6 : 1.0
+O: 0 1 : 42 : 4 6 : 1.0
+O: 0 2 : 42 : 4 6 : 1.0
+O: 0 3 : 42 : 4 6 : 1.0
+O: 0 4 : 42 : 4 6 : 1.0
+O: 1 0 : 42 : 4 6 : 1.0
+O: 1 1 : 42 : 4 6 : 1.0
+O: 1 2 : 42 : 4 6 : 1.0
+O: 1 3 : 42 : 4 6 : 1.0
+O: 1 4 : 42 : 4 6 : 1.0
+O: 2 0 : 42 : 4 6 : 1.0
+O: 2 1 : 42 : 4 6 : 1.0
+O: 2 2 : 42 : 4 6 : 1.0
+O: 2 3 : 42 : 4 6 : 1.0
+O: 2 4 : 42 : 4 6 : 1.0
+O: 3 0 : 42 : 4 6 : 1.0
+O: 3 1 : 42 : 4 6 : 1.0
+O: 3 2 : 42 : 4 6 : 1.0
+O: 3 3 : 42 : 4 6 : 1.0
+O: 3 4 : 42 : 4 6 : 1.0
+O: 4 0 : 42 : 4 6 : 1.0
+O: 4 1 : 42 : 4 6 : 1.0
+O: 4 2 : 42 : 4 6 : 1.0
+O: 4 3 : 42 : 4 6 : 1.0
+O: 4 4 : 42 : 4 6 : 1.0
+O: 0 0 : 43 : 4 7 : 1.0
+O: 0 1 : 43 : 4 7 : 1.0
+O: 0 2 : 43 : 4 7 : 1.0
+O: 0 3 : 43 : 4 7 : 1.0
+O: 0 4 : 43 : 4 7 : 1.0
+O: 1 0 : 43 : 4 7 : 1.0
+O: 1 1 : 43 : 4 7 : 1.0
+O: 1 2 : 43 : 4 7 : 1.0
+O: 1 3 : 43 : 4 7 : 1.0
+O: 1 4 : 43 : 4 7 : 1.0
+O: 2 0 : 43 : 4 7 : 1.0
+O: 2 1 : 43 : 4 7 : 1.0
+O: 2 2 : 43 : 4 7 : 1.0
+O: 2 3 : 43 : 4 7 : 1.0
+O: 2 4 : 43 : 4 7 : 1.0
+O: 3 0 : 43 : 4 7 : 1.0
+O: 3 1 : 43 : 4 7 : 1.0
+O: 3 2 : 43 : 4 7 : 1.0
+O: 3 3 : 43 : 4 7 : 1.0
+O: 3 4 : 43 : 4 7 : 1.0
+O: 4 0 : 43 : 4 7 : 1.0
+O: 4 1 : 43 : 4 7 : 1.0
+O: 4 2 : 43 : 4 7 : 1.0
+O: 4 3 : 43 : 4 7 : 1.0
+O: 4 4 : 43 : 4 7 : 1.0
+O: 0 0 : 44 : 4 8 : 1.0
+O: 0 1 : 44 : 4 8 : 1.0
+O: 0 2 : 44 : 4 8 : 1.0
+O: 0 3 : 44 : 4 8 : 1.0
+O: 0 4 : 44 : 4 8 : 1.0
+O: 1 0 : 44 : 4 8 : 1.0
+O: 1 1 : 44 : 4 8 : 1.0
+O: 1 2 : 44 : 4 8 : 1.0
+O: 1 3 : 44 : 4 8 : 1.0
+O: 1 4 : 44 : 4 8 : 1.0
+O: 2 0 : 44 : 4 8 : 1.0
+O: 2 1 : 44 : 4 8 : 1.0
+O: 2 2 : 44 : 4 8 : 1.0
+O: 2 3 : 44 : 4 8 : 1.0
+O: 2 4 : 44 : 4 8 : 1.0
+O: 3 0 : 44 : 4 8 : 1.0
+O: 3 1 : 44 : 4 8 : 1.0
+O: 3 2 : 44 : 4 8 : 1.0
+O: 3 3 : 44 : 4 8 : 1.0
+O: 3 4 : 44 : 4 8 : 1.0
+O: 4 0 : 44 : 4 8 : 1.0
+O: 4 1 : 44 : 4 8 : 1.0
+O: 4 2 : 44 : 4 8 : 1.0
+O: 4 3 : 44 : 4 8 : 1.0
+O: 4 4 : 44 : 4 8 : 1.0
+O: 0 0 : 45 : 5 0 : 1.0
+O: 0 1 : 45 : 5 0 : 1.0
+O: 0 2 : 45 : 5 0 : 1.0
+O: 0 3 : 45 : 5 0 : 1.0
+O: 0 4 : 45 : 5 0 : 1.0
+O: 1 0 : 45 : 5 0 : 1.0
+O: 1 1 : 45 : 5 0 : 1.0
+O: 1 2 : 45 : 5 0 : 1.0
+O: 1 3 : 45 : 5 0 : 1.0
+O: 1 4 : 45 : 5 0 : 1.0
+O: 2 0 : 45 : 5 0 : 1.0
+O: 2 1 : 45 : 5 0 : 1.0
+O: 2 2 : 45 : 5 0 : 1.0
+O: 2 3 : 45 : 5 0 : 1.0
+O: 2 4 : 45 : 5 0 : 1.0
+O: 3 0 : 45 : 5 0 : 1.0
+O: 3 1 : 45 : 5 0 : 1.0
+O: 3 2 : 45 : 5 0 : 1.0
+O: 3 3 : 45 : 5 0 : 1.0
+O: 3 4 : 45 : 5 0 : 1.0
+O: 4 0 : 45 : 5 0 : 1.0
+O: 4 1 : 45 : 5 0 : 1.0
+O: 4 2 : 45 : 5 0 : 1.0
+O: 4 3 : 45 : 5 0 : 1.0
+O: 4 4 : 45 : 5 0 : 1.0
+O: 0 0 : 46 : 5 1 : 1.0
+O: 0 1 : 46 : 5 1 : 1.0
+O: 0 2 : 46 : 5 1 : 1.0
+O: 0 3 : 46 : 5 1 : 1.0
+O: 0 4 : 46 : 5 1 : 1.0
+O: 1 0 : 46 : 5 1 : 1.0
+O: 1 1 : 46 : 5 1 : 1.0
+O: 1 2 : 46 : 5 1 : 1.0
+O: 1 3 : 46 : 5 1 : 1.0
+O: 1 4 : 46 : 5 1 : 1.0
+O: 2 0 : 46 : 5 1 : 1.0
+O: 2 1 : 46 : 5 1 : 1.0
+O: 2 2 : 46 : 5 1 : 1.0
+O: 2 3 : 46 : 5 1 : 1.0
+O: 2 4 : 46 : 5 1 : 1.0
+O: 3 0 : 46 : 5 1 : 1.0
+O: 3 1 : 46 : 5 1 : 1.0
+O: 3 2 : 46 : 5 1 : 1.0
+O: 3 3 : 46 : 5 1 : 1.0
+O: 3 4 : 46 : 5 1 : 1.0
+O: 4 0 : 46 : 5 1 : 1.0
+O: 4 1 : 46 : 5 1 : 1.0
+O: 4 2 : 46 : 5 1 : 1.0
+O: 4 3 : 46 : 5 1 : 1.0
+O: 4 4 : 46 : 5 1 : 1.0
+O: 0 0 : 47 : 5 2 : 1.0
+O: 0 1 : 47 : 5 2 : 1.0
+O: 0 2 : 47 : 5 2 : 1.0
+O: 0 3 : 47 : 5 2 : 1.0
+O: 0 4 : 47 : 5 2 : 1.0
+O: 1 0 : 47 : 5 2 : 1.0
+O: 1 1 : 47 : 5 2 : 1.0
+O: 1 2 : 47 : 5 2 : 1.0
+O: 1 3 : 47 : 5 2 : 1.0
+O: 1 4 : 47 : 5 2 : 1.0
+O: 2 0 : 47 : 5 2 : 1.0
+O: 2 1 : 47 : 5 2 : 1.0
+O: 2 2 : 47 : 5 2 : 1.0
+O: 2 3 : 47 : 5 2 : 1.0
+O: 2 4 : 47 : 5 2 : 1.0
+O: 3 0 : 47 : 5 2 : 1.0
+O: 3 1 : 47 : 5 2 : 1.0
+O: 3 2 : 47 : 5 2 : 1.0
+O: 3 3 : 47 : 5 2 : 1.0
+O: 3 4 : 47 : 5 2 : 1.0
+O: 4 0 : 47 : 5 2 : 1.0
+O: 4 1 : 47 : 5 2 : 1.0
+O: 4 2 : 47 : 5 2 : 1.0
+O: 4 3 : 47 : 5 2 : 1.0
+O: 4 4 : 47 : 5 2 : 1.0
+O: 0 0 : 48 : 5 3 : 1.0
+O: 0 1 : 48 : 5 3 : 1.0
+O: 0 2 : 48 : 5 3 : 1.0
+O: 0 3 : 48 : 5 3 : 1.0
+O: 0 4 : 48 : 5 3 : 1.0
+O: 1 0 : 48 : 5 3 : 1.0
+O: 1 1 : 48 : 5 3 : 1.0
+O: 1 2 : 48 : 5 3 : 1.0
+O: 1 3 : 48 : 5 3 : 1.0
+O: 1 4 : 48 : 5 3 : 1.0
+O: 2 0 : 48 : 5 3 : 1.0
+O: 2 1 : 48 : 5 3 : 1.0
+O: 2 2 : 48 : 5 3 : 1.0
+O: 2 3 : 48 : 5 3 : 1.0
+O: 2 4 : 48 : 5 3 : 1.0
+O: 3 0 : 48 : 5 3 : 1.0
+O: 3 1 : 48 : 5 3 : 1.0
+O: 3 2 : 48 : 5 3 : 1.0
+O: 3 3 : 48 : 5 3 : 1.0
+O: 3 4 : 48 : 5 3 : 1.0
+O: 4 0 : 48 : 5 3 : 1.0
+O: 4 1 : 48 : 5 3 : 1.0
+O: 4 2 : 48 : 5 3 : 1.0
+O: 4 3 : 48 : 5 3 : 1.0
+O: 4 4 : 48 : 5 3 : 1.0
+O: 0 0 : 49 : 5 4 : 1.0
+O: 0 1 : 49 : 5 4 : 1.0
+O: 0 2 : 49 : 5 4 : 1.0
+O: 0 3 : 49 : 5 4 : 1.0
+O: 0 4 : 49 : 5 4 : 1.0
+O: 1 0 : 49 : 5 4 : 1.0
+O: 1 1 : 49 : 5 4 : 1.0
+O: 1 2 : 49 : 5 4 : 1.0
+O: 1 3 : 49 : 5 4 : 1.0
+O: 1 4 : 49 : 5 4 : 1.0
+O: 2 0 : 49 : 5 4 : 1.0
+O: 2 1 : 49 : 5 4 : 1.0
+O: 2 2 : 49 : 5 4 : 1.0
+O: 2 3 : 49 : 5 4 : 1.0
+O: 2 4 : 49 : 5 4 : 1.0
+O: 3 0 : 49 : 5 4 : 1.0
+O: 3 1 : 49 : 5 4 : 1.0
+O: 3 2 : 49 : 5 4 : 1.0
+O: 3 3 : 49 : 5 4 : 1.0
+O: 3 4 : 49 : 5 4 : 1.0
+O: 4 0 : 49 : 5 4 : 1.0
+O: 4 1 : 49 : 5 4 : 1.0
+O: 4 2 : 49 : 5 4 : 1.0
+O: 4 3 : 49 : 5 4 : 1.0
+O: 4 4 : 49 : 5 4 : 1.0
+O: 0 0 : 50 : 5 5 : 1.0
+O: 0 1 : 50 : 5 5 : 1.0
+O: 0 2 : 50 : 5 5 : 1.0
+O: 0 3 : 50 : 5 5 : 1.0
+O: 0 4 : 50 : 5 5 : 1.0
+O: 1 0 : 50 : 5 5 : 1.0
+O: 1 1 : 50 : 5 5 : 1.0
+O: 1 2 : 50 : 5 5 : 1.0
+O: 1 3 : 50 : 5 5 : 1.0
+O: 1 4 : 50 : 5 5 : 1.0
+O: 2 0 : 50 : 5 5 : 1.0
+O: 2 1 : 50 : 5 5 : 1.0
+O: 2 2 : 50 : 5 5 : 1.0
+O: 2 3 : 50 : 5 5 : 1.0
+O: 2 4 : 50 : 5 5 : 1.0
+O: 3 0 : 50 : 5 5 : 1.0
+O: 3 1 : 50 : 5 5 : 1.0
+O: 3 2 : 50 : 5 5 : 1.0
+O: 3 3 : 50 : 5 5 : 1.0
+O: 3 4 : 50 : 5 5 : 1.0
+O: 4 0 : 50 : 5 5 : 1.0
+O: 4 1 : 50 : 5 5 : 1.0
+O: 4 2 : 50 : 5 5 : 1.0
+O: 4 3 : 50 : 5 5 : 1.0
+O: 4 4 : 50 : 5 5 : 1.0
+O: 0 0 : 51 : 5 6 : 1.0
+O: 0 1 : 51 : 5 6 : 1.0
+O: 0 2 : 51 : 5 6 : 1.0
+O: 0 3 : 51 : 5 6 : 1.0
+O: 0 4 : 51 : 5 6 : 1.0
+O: 1 0 : 51 : 5 6 : 1.0
+O: 1 1 : 51 : 5 6 : 1.0
+O: 1 2 : 51 : 5 6 : 1.0
+O: 1 3 : 51 : 5 6 : 1.0
+O: 1 4 : 51 : 5 6 : 1.0
+O: 2 0 : 51 : 5 6 : 1.0
+O: 2 1 : 51 : 5 6 : 1.0
+O: 2 2 : 51 : 5 6 : 1.0
+O: 2 3 : 51 : 5 6 : 1.0
+O: 2 4 : 51 : 5 6 : 1.0
+O: 3 0 : 51 : 5 6 : 1.0
+O: 3 1 : 51 : 5 6 : 1.0
+O: 3 2 : 51 : 5 6 : 1.0
+O: 3 3 : 51 : 5 6 : 1.0
+O: 3 4 : 51 : 5 6 : 1.0
+O: 4 0 : 51 : 5 6 : 1.0
+O: 4 1 : 51 : 5 6 : 1.0
+O: 4 2 : 51 : 5 6 : 1.0
+O: 4 3 : 51 : 5 6 : 1.0
+O: 4 4 : 51 : 5 6 : 1.0
+O: 0 0 : 52 : 5 7 : 1.0
+O: 0 1 : 52 : 5 7 : 1.0
+O: 0 2 : 52 : 5 7 : 1.0
+O: 0 3 : 52 : 5 7 : 1.0
+O: 0 4 : 52 : 5 7 : 1.0
+O: 1 0 : 52 : 5 7 : 1.0
+O: 1 1 : 52 : 5 7 : 1.0
+O: 1 2 : 52 : 5 7 : 1.0
+O: 1 3 : 52 : 5 7 : 1.0
+O: 1 4 : 52 : 5 7 : 1.0
+O: 2 0 : 52 : 5 7 : 1.0
+O: 2 1 : 52 : 5 7 : 1.0
+O: 2 2 : 52 : 5 7 : 1.0
+O: 2 3 : 52 : 5 7 : 1.0
+O: 2 4 : 52 : 5 7 : 1.0
+O: 3 0 : 52 : 5 7 : 1.0
+O: 3 1 : 52 : 5 7 : 1.0
+O: 3 2 : 52 : 5 7 : 1.0
+O: 3 3 : 52 : 5 7 : 1.0
+O: 3 4 : 52 : 5 7 : 1.0
+O: 4 0 : 52 : 5 7 : 1.0
+O: 4 1 : 52 : 5 7 : 1.0
+O: 4 2 : 52 : 5 7 : 1.0
+O: 4 3 : 52 : 5 7 : 1.0
+O: 4 4 : 52 : 5 7 : 1.0
+O: 0 0 : 53 : 5 8 : 1.0
+O: 0 1 : 53 : 5 8 : 1.0
+O: 0 2 : 53 : 5 8 : 1.0
+O: 0 3 : 53 : 5 8 : 1.0
+O: 0 4 : 53 : 5 8 : 1.0
+O: 1 0 : 53 : 5 8 : 1.0
+O: 1 1 : 53 : 5 8 : 1.0
+O: 1 2 : 53 : 5 8 : 1.0
+O: 1 3 : 53 : 5 8 : 1.0
+O: 1 4 : 53 : 5 8 : 1.0
+O: 2 0 : 53 : 5 8 : 1.0
+O: 2 1 : 53 : 5 8 : 1.0
+O: 2 2 : 53 : 5 8 : 1.0
+O: 2 3 : 53 : 5 8 : 1.0
+O: 2 4 : 53 : 5 8 : 1.0
+O: 3 0 : 53 : 5 8 : 1.0
+O: 3 1 : 53 : 5 8 : 1.0
+O: 3 2 : 53 : 5 8 : 1.0
+O: 3 3 : 53 : 5 8 : 1.0
+O: 3 4 : 53 : 5 8 : 1.0
+O: 4 0 : 53 : 5 8 : 1.0
+O: 4 1 : 53 : 5 8 : 1.0
+O: 4 2 : 53 : 5 8 : 1.0
+O: 4 3 : 53 : 5 8 : 1.0
+O: 4 4 : 53 : 5 8 : 1.0
+O: 0 0 : 54 : 6 0 : 1.0
+O: 0 1 : 54 : 6 0 : 1.0
+O: 0 2 : 54 : 6 0 : 1.0
+O: 0 3 : 54 : 6 0 : 1.0
+O: 0 4 : 54 : 6 0 : 1.0
+O: 1 0 : 54 : 6 0 : 1.0
+O: 1 1 : 54 : 6 0 : 1.0
+O: 1 2 : 54 : 6 0 : 1.0
+O: 1 3 : 54 : 6 0 : 1.0
+O: 1 4 : 54 : 6 0 : 1.0
+O: 2 0 : 54 : 6 0 : 1.0
+O: 2 1 : 54 : 6 0 : 1.0
+O: 2 2 : 54 : 6 0 : 1.0
+O: 2 3 : 54 : 6 0 : 1.0
+O: 2 4 : 54 : 6 0 : 1.0
+O: 3 0 : 54 : 6 0 : 1.0
+O: 3 1 : 54 : 6 0 : 1.0
+O: 3 2 : 54 : 6 0 : 1.0
+O: 3 3 : 54 : 6 0 : 1.0
+O: 3 4 : 54 : 6 0 : 1.0
+O: 4 0 : 54 : 6 0 : 1.0
+O: 4 1 : 54 : 6 0 : 1.0
+O: 4 2 : 54 : 6 0 : 1.0
+O: 4 3 : 54 : 6 0 : 1.0
+O: 4 4 : 54 : 6 0 : 1.0
+O: 0 0 : 55 : 6 1 : 1.0
+O: 0 1 : 55 : 6 1 : 1.0
+O: 0 2 : 55 : 6 1 : 1.0
+O: 0 3 : 55 : 6 1 : 1.0
+O: 0 4 : 55 : 6 1 : 1.0
+O: 1 0 : 55 : 6 1 : 1.0
+O: 1 1 : 55 : 6 1 : 1.0
+O: 1 2 : 55 : 6 1 : 1.0
+O: 1 3 : 55 : 6 1 : 1.0
+O: 1 4 : 55 : 6 1 : 1.0
+O: 2 0 : 55 : 6 1 : 1.0
+O: 2 1 : 55 : 6 1 : 1.0
+O: 2 2 : 55 : 6 1 : 1.0
+O: 2 3 : 55 : 6 1 : 1.0
+O: 2 4 : 55 : 6 1 : 1.0
+O: 3 0 : 55 : 6 1 : 1.0
+O: 3 1 : 55 : 6 1 : 1.0
+O: 3 2 : 55 : 6 1 : 1.0
+O: 3 3 : 55 : 6 1 : 1.0
+O: 3 4 : 55 : 6 1 : 1.0
+O: 4 0 : 55 : 6 1 : 1.0
+O: 4 1 : 55 : 6 1 : 1.0
+O: 4 2 : 55 : 6 1 : 1.0
+O: 4 3 : 55 : 6 1 : 1.0
+O: 4 4 : 55 : 6 1 : 1.0
+O: 0 0 : 56 : 6 2 : 1.0
+O: 0 1 : 56 : 6 2 : 1.0
+O: 0 2 : 56 : 6 2 : 1.0
+O: 0 3 : 56 : 6 2 : 1.0
+O: 0 4 : 56 : 6 2 : 1.0
+O: 1 0 : 56 : 6 2 : 1.0
+O: 1 1 : 56 : 6 2 : 1.0
+O: 1 2 : 56 : 6 2 : 1.0
+O: 1 3 : 56 : 6 2 : 1.0
+O: 1 4 : 56 : 6 2 : 1.0
+O: 2 0 : 56 : 6 2 : 1.0
+O: 2 1 : 56 : 6 2 : 1.0
+O: 2 2 : 56 : 6 2 : 1.0
+O: 2 3 : 56 : 6 2 : 1.0
+O: 2 4 : 56 : 6 2 : 1.0
+O: 3 0 : 56 : 6 2 : 1.0
+O: 3 1 : 56 : 6 2 : 1.0
+O: 3 2 : 56 : 6 2 : 1.0
+O: 3 3 : 56 : 6 2 : 1.0
+O: 3 4 : 56 : 6 2 : 1.0
+O: 4 0 : 56 : 6 2 : 1.0
+O: 4 1 : 56 : 6 2 : 1.0
+O: 4 2 : 56 : 6 2 : 1.0
+O: 4 3 : 56 : 6 2 : 1.0
+O: 4 4 : 56 : 6 2 : 1.0
+O: 0 0 : 57 : 6 3 : 1.0
+O: 0 1 : 57 : 6 3 : 1.0
+O: 0 2 : 57 : 6 3 : 1.0
+O: 0 3 : 57 : 6 3 : 1.0
+O: 0 4 : 57 : 6 3 : 1.0
+O: 1 0 : 57 : 6 3 : 1.0
+O: 1 1 : 57 : 6 3 : 1.0
+O: 1 2 : 57 : 6 3 : 1.0
+O: 1 3 : 57 : 6 3 : 1.0
+O: 1 4 : 57 : 6 3 : 1.0
+O: 2 0 : 57 : 6 3 : 1.0
+O: 2 1 : 57 : 6 3 : 1.0
+O: 2 2 : 57 : 6 3 : 1.0
+O: 2 3 : 57 : 6 3 : 1.0
+O: 2 4 : 57 : 6 3 : 1.0
+O: 3 0 : 57 : 6 3 : 1.0
+O: 3 1 : 57 : 6 3 : 1.0
+O: 3 2 : 57 : 6 3 : 1.0
+O: 3 3 : 57 : 6 3 : 1.0
+O: 3 4 : 57 : 6 3 : 1.0
+O: 4 0 : 57 : 6 3 : 1.0
+O: 4 1 : 57 : 6 3 : 1.0
+O: 4 2 : 57 : 6 3 : 1.0
+O: 4 3 : 57 : 6 3 : 1.0
+O: 4 4 : 57 : 6 3 : 1.0
+O: 0 0 : 58 : 6 4 : 1.0
+O: 0 1 : 58 : 6 4 : 1.0
+O: 0 2 : 58 : 6 4 : 1.0
+O: 0 3 : 58 : 6 4 : 1.0
+O: 0 4 : 58 : 6 4 : 1.0
+O: 1 0 : 58 : 6 4 : 1.0
+O: 1 1 : 58 : 6 4 : 1.0
+O: 1 2 : 58 : 6 4 : 1.0
+O: 1 3 : 58 : 6 4 : 1.0
+O: 1 4 : 58 : 6 4 : 1.0
+O: 2 0 : 58 : 6 4 : 1.0
+O: 2 1 : 58 : 6 4 : 1.0
+O: 2 2 : 58 : 6 4 : 1.0
+O: 2 3 : 58 : 6 4 : 1.0
+O: 2 4 : 58 : 6 4 : 1.0
+O: 3 0 : 58 : 6 4 : 1.0
+O: 3 1 : 58 : 6 4 : 1.0
+O: 3 2 : 58 : 6 4 : 1.0
+O: 3 3 : 58 : 6 4 : 1.0
+O: 3 4 : 58 : 6 4 : 1.0
+O: 4 0 : 58 : 6 4 : 1.0
+O: 4 1 : 58 : 6 4 : 1.0
+O: 4 2 : 58 : 6 4 : 1.0
+O: 4 3 : 58 : 6 4 : 1.0
+O: 4 4 : 58 : 6 4 : 1.0
+O: 0 0 : 59 : 6 5 : 1.0
+O: 0 1 : 59 : 6 5 : 1.0
+O: 0 2 : 59 : 6 5 : 1.0
+O: 0 3 : 59 : 6 5 : 1.0
+O: 0 4 : 59 : 6 5 : 1.0
+O: 1 0 : 59 : 6 5 : 1.0
+O: 1 1 : 59 : 6 5 : 1.0
+O: 1 2 : 59 : 6 5 : 1.0
+O: 1 3 : 59 : 6 5 : 1.0
+O: 1 4 : 59 : 6 5 : 1.0
+O: 2 0 : 59 : 6 5 : 1.0
+O: 2 1 : 59 : 6 5 : 1.0
+O: 2 2 : 59 : 6 5 : 1.0
+O: 2 3 : 59 : 6 5 : 1.0
+O: 2 4 : 59 : 6 5 : 1.0
+O: 3 0 : 59 : 6 5 : 1.0
+O: 3 1 : 59 : 6 5 : 1.0
+O: 3 2 : 59 : 6 5 : 1.0
+O: 3 3 : 59 : 6 5 : 1.0
+O: 3 4 : 59 : 6 5 : 1.0
+O: 4 0 : 59 : 6 5 : 1.0
+O: 4 1 : 59 : 6 5 : 1.0
+O: 4 2 : 59 : 6 5 : 1.0
+O: 4 3 : 59 : 6 5 : 1.0
+O: 4 4 : 59 : 6 5 : 1.0
+O: 0 0 : 60 : 6 6 : 1.0
+O: 0 1 : 60 : 6 6 : 1.0
+O: 0 2 : 60 : 6 6 : 1.0
+O: 0 3 : 60 : 6 6 : 1.0
+O: 0 4 : 60 : 6 6 : 1.0
+O: 1 0 : 60 : 6 6 : 1.0
+O: 1 1 : 60 : 6 6 : 1.0
+O: 1 2 : 60 : 6 6 : 1.0
+O: 1 3 : 60 : 6 6 : 1.0
+O: 1 4 : 60 : 6 6 : 1.0
+O: 2 0 : 60 : 6 6 : 1.0
+O: 2 1 : 60 : 6 6 : 1.0
+O: 2 2 : 60 : 6 6 : 1.0
+O: 2 3 : 60 : 6 6 : 1.0
+O: 2 4 : 60 : 6 6 : 1.0
+O: 3 0 : 60 : 6 6 : 1.0
+O: 3 1 : 60 : 6 6 : 1.0
+O: 3 2 : 60 : 6 6 : 1.0
+O: 3 3 : 60 : 6 6 : 1.0
+O: 3 4 : 60 : 6 6 : 1.0
+O: 4 0 : 60 : 6 6 : 1.0
+O: 4 1 : 60 : 6 6 : 1.0
+O: 4 2 : 60 : 6 6 : 1.0
+O: 4 3 : 60 : 6 6 : 1.0
+O: 4 4 : 60 : 6 6 : 1.0
+O: 0 0 : 61 : 6 7 : 1.0
+O: 0 1 : 61 : 6 7 : 1.0
+O: 0 2 : 61 : 6 7 : 1.0
+O: 0 3 : 61 : 6 7 : 1.0
+O: 0 4 : 61 : 6 7 : 1.0
+O: 1 0 : 61 : 6 7 : 1.0
+O: 1 1 : 61 : 6 7 : 1.0
+O: 1 2 : 61 : 6 7 : 1.0
+O: 1 3 : 61 : 6 7 : 1.0
+O: 1 4 : 61 : 6 7 : 1.0
+O: 2 0 : 61 : 6 7 : 1.0
+O: 2 1 : 61 : 6 7 : 1.0
+O: 2 2 : 61 : 6 7 : 1.0
+O: 2 3 : 61 : 6 7 : 1.0
+O: 2 4 : 61 : 6 7 : 1.0
+O: 3 0 : 61 : 6 7 : 1.0
+O: 3 1 : 61 : 6 7 : 1.0
+O: 3 2 : 61 : 6 7 : 1.0
+O: 3 3 : 61 : 6 7 : 1.0
+O: 3 4 : 61 : 6 7 : 1.0
+O: 4 0 : 61 : 6 7 : 1.0
+O: 4 1 : 61 : 6 7 : 1.0
+O: 4 2 : 61 : 6 7 : 1.0
+O: 4 3 : 61 : 6 7 : 1.0
+O: 4 4 : 61 : 6 7 : 1.0
+O: 0 0 : 62 : 6 8 : 1.0
+O: 0 1 : 62 : 6 8 : 1.0
+O: 0 2 : 62 : 6 8 : 1.0
+O: 0 3 : 62 : 6 8 : 1.0
+O: 0 4 : 62 : 6 8 : 1.0
+O: 1 0 : 62 : 6 8 : 1.0
+O: 1 1 : 62 : 6 8 : 1.0
+O: 1 2 : 62 : 6 8 : 1.0
+O: 1 3 : 62 : 6 8 : 1.0
+O: 1 4 : 62 : 6 8 : 1.0
+O: 2 0 : 62 : 6 8 : 1.0
+O: 2 1 : 62 : 6 8 : 1.0
+O: 2 2 : 62 : 6 8 : 1.0
+O: 2 3 : 62 : 6 8 : 1.0
+O: 2 4 : 62 : 6 8 : 1.0
+O: 3 0 : 62 : 6 8 : 1.0
+O: 3 1 : 62 : 6 8 : 1.0
+O: 3 2 : 62 : 6 8 : 1.0
+O: 3 3 : 62 : 6 8 : 1.0
+O: 3 4 : 62 : 6 8 : 1.0
+O: 4 0 : 62 : 6 8 : 1.0
+O: 4 1 : 62 : 6 8 : 1.0
+O: 4 2 : 62 : 6 8 : 1.0
+O: 4 3 : 62 : 6 8 : 1.0
+O: 4 4 : 62 : 6 8 : 1.0
+O: 0 0 : 63 : 7 0 : 1.0
+O: 0 1 : 63 : 7 0 : 1.0
+O: 0 2 : 63 : 7 0 : 1.0
+O: 0 3 : 63 : 7 0 : 1.0
+O: 0 4 : 63 : 7 0 : 1.0
+O: 1 0 : 63 : 7 0 : 1.0
+O: 1 1 : 63 : 7 0 : 1.0
+O: 1 2 : 63 : 7 0 : 1.0
+O: 1 3 : 63 : 7 0 : 1.0
+O: 1 4 : 63 : 7 0 : 1.0
+O: 2 0 : 63 : 7 0 : 1.0
+O: 2 1 : 63 : 7 0 : 1.0
+O: 2 2 : 63 : 7 0 : 1.0
+O: 2 3 : 63 : 7 0 : 1.0
+O: 2 4 : 63 : 7 0 : 1.0
+O: 3 0 : 63 : 7 0 : 1.0
+O: 3 1 : 63 : 7 0 : 1.0
+O: 3 2 : 63 : 7 0 : 1.0
+O: 3 3 : 63 : 7 0 : 1.0
+O: 3 4 : 63 : 7 0 : 1.0
+O: 4 0 : 63 : 7 0 : 1.0
+O: 4 1 : 63 : 7 0 : 1.0
+O: 4 2 : 63 : 7 0 : 1.0
+O: 4 3 : 63 : 7 0 : 1.0
+O: 4 4 : 63 : 7 0 : 1.0
+O: 0 0 : 64 : 7 1 : 1.0
+O: 0 1 : 64 : 7 1 : 1.0
+O: 0 2 : 64 : 7 1 : 1.0
+O: 0 3 : 64 : 7 1 : 1.0
+O: 0 4 : 64 : 7 1 : 1.0
+O: 1 0 : 64 : 7 1 : 1.0
+O: 1 1 : 64 : 7 1 : 1.0
+O: 1 2 : 64 : 7 1 : 1.0
+O: 1 3 : 64 : 7 1 : 1.0
+O: 1 4 : 64 : 7 1 : 1.0
+O: 2 0 : 64 : 7 1 : 1.0
+O: 2 1 : 64 : 7 1 : 1.0
+O: 2 2 : 64 : 7 1 : 1.0
+O: 2 3 : 64 : 7 1 : 1.0
+O: 2 4 : 64 : 7 1 : 1.0
+O: 3 0 : 64 : 7 1 : 1.0
+O: 3 1 : 64 : 7 1 : 1.0
+O: 3 2 : 64 : 7 1 : 1.0
+O: 3 3 : 64 : 7 1 : 1.0
+O: 3 4 : 64 : 7 1 : 1.0
+O: 4 0 : 64 : 7 1 : 1.0
+O: 4 1 : 64 : 7 1 : 1.0
+O: 4 2 : 64 : 7 1 : 1.0
+O: 4 3 : 64 : 7 1 : 1.0
+O: 4 4 : 64 : 7 1 : 1.0
+O: 0 0 : 65 : 7 2 : 1.0
+O: 0 1 : 65 : 7 2 : 1.0
+O: 0 2 : 65 : 7 2 : 1.0
+O: 0 3 : 65 : 7 2 : 1.0
+O: 0 4 : 65 : 7 2 : 1.0
+O: 1 0 : 65 : 7 2 : 1.0
+O: 1 1 : 65 : 7 2 : 1.0
+O: 1 2 : 65 : 7 2 : 1.0
+O: 1 3 : 65 : 7 2 : 1.0
+O: 1 4 : 65 : 7 2 : 1.0
+O: 2 0 : 65 : 7 2 : 1.0
+O: 2 1 : 65 : 7 2 : 1.0
+O: 2 2 : 65 : 7 2 : 1.0
+O: 2 3 : 65 : 7 2 : 1.0
+O: 2 4 : 65 : 7 2 : 1.0
+O: 3 0 : 65 : 7 2 : 1.0
+O: 3 1 : 65 : 7 2 : 1.0
+O: 3 2 : 65 : 7 2 : 1.0
+O: 3 3 : 65 : 7 2 : 1.0
+O: 3 4 : 65 : 7 2 : 1.0
+O: 4 0 : 65 : 7 2 : 1.0
+O: 4 1 : 65 : 7 2 : 1.0
+O: 4 2 : 65 : 7 2 : 1.0
+O: 4 3 : 65 : 7 2 : 1.0
+O: 4 4 : 65 : 7 2 : 1.0
+O: 0 0 : 66 : 7 3 : 1.0
+O: 0 1 : 66 : 7 3 : 1.0
+O: 0 2 : 66 : 7 3 : 1.0
+O: 0 3 : 66 : 7 3 : 1.0
+O: 0 4 : 66 : 7 3 : 1.0
+O: 1 0 : 66 : 7 3 : 1.0
+O: 1 1 : 66 : 7 3 : 1.0
+O: 1 2 : 66 : 7 3 : 1.0
+O: 1 3 : 66 : 7 3 : 1.0
+O: 1 4 : 66 : 7 3 : 1.0
+O: 2 0 : 66 : 7 3 : 1.0
+O: 2 1 : 66 : 7 3 : 1.0
+O: 2 2 : 66 : 7 3 : 1.0
+O: 2 3 : 66 : 7 3 : 1.0
+O: 2 4 : 66 : 7 3 : 1.0
+O: 3 0 : 66 : 7 3 : 1.0
+O: 3 1 : 66 : 7 3 : 1.0
+O: 3 2 : 66 : 7 3 : 1.0
+O: 3 3 : 66 : 7 3 : 1.0
+O: 3 4 : 66 : 7 3 : 1.0
+O: 4 0 : 66 : 7 3 : 1.0
+O: 4 1 : 66 : 7 3 : 1.0
+O: 4 2 : 66 : 7 3 : 1.0
+O: 4 3 : 66 : 7 3 : 1.0
+O: 4 4 : 66 : 7 3 : 1.0
+O: 0 0 : 67 : 7 4 : 1.0
+O: 0 1 : 67 : 7 4 : 1.0
+O: 0 2 : 67 : 7 4 : 1.0
+O: 0 3 : 67 : 7 4 : 1.0
+O: 0 4 : 67 : 7 4 : 1.0
+O: 1 0 : 67 : 7 4 : 1.0
+O: 1 1 : 67 : 7 4 : 1.0
+O: 1 2 : 67 : 7 4 : 1.0
+O: 1 3 : 67 : 7 4 : 1.0
+O: 1 4 : 67 : 7 4 : 1.0
+O: 2 0 : 67 : 7 4 : 1.0
+O: 2 1 : 67 : 7 4 : 1.0
+O: 2 2 : 67 : 7 4 : 1.0
+O: 2 3 : 67 : 7 4 : 1.0
+O: 2 4 : 67 : 7 4 : 1.0
+O: 3 0 : 67 : 7 4 : 1.0
+O: 3 1 : 67 : 7 4 : 1.0
+O: 3 2 : 67 : 7 4 : 1.0
+O: 3 3 : 67 : 7 4 : 1.0
+O: 3 4 : 67 : 7 4 : 1.0
+O: 4 0 : 67 : 7 4 : 1.0
+O: 4 1 : 67 : 7 4 : 1.0
+O: 4 2 : 67 : 7 4 : 1.0
+O: 4 3 : 67 : 7 4 : 1.0
+O: 4 4 : 67 : 7 4 : 1.0
+O: 0 0 : 68 : 7 5 : 1.0
+O: 0 1 : 68 : 7 5 : 1.0
+O: 0 2 : 68 : 7 5 : 1.0
+O: 0 3 : 68 : 7 5 : 1.0
+O: 0 4 : 68 : 7 5 : 1.0
+O: 1 0 : 68 : 7 5 : 1.0
+O: 1 1 : 68 : 7 5 : 1.0
+O: 1 2 : 68 : 7 5 : 1.0
+O: 1 3 : 68 : 7 5 : 1.0
+O: 1 4 : 68 : 7 5 : 1.0
+O: 2 0 : 68 : 7 5 : 1.0
+O: 2 1 : 68 : 7 5 : 1.0
+O: 2 2 : 68 : 7 5 : 1.0
+O: 2 3 : 68 : 7 5 : 1.0
+O: 2 4 : 68 : 7 5 : 1.0
+O: 3 0 : 68 : 7 5 : 1.0
+O: 3 1 : 68 : 7 5 : 1.0
+O: 3 2 : 68 : 7 5 : 1.0
+O: 3 3 : 68 : 7 5 : 1.0
+O: 3 4 : 68 : 7 5 : 1.0
+O: 4 0 : 68 : 7 5 : 1.0
+O: 4 1 : 68 : 7 5 : 1.0
+O: 4 2 : 68 : 7 5 : 1.0
+O: 4 3 : 68 : 7 5 : 1.0
+O: 4 4 : 68 : 7 5 : 1.0
+O: 0 0 : 69 : 7 6 : 1.0
+O: 0 1 : 69 : 7 6 : 1.0
+O: 0 2 : 69 : 7 6 : 1.0
+O: 0 3 : 69 : 7 6 : 1.0
+O: 0 4 : 69 : 7 6 : 1.0
+O: 1 0 : 69 : 7 6 : 1.0
+O: 1 1 : 69 : 7 6 : 1.0
+O: 1 2 : 69 : 7 6 : 1.0
+O: 1 3 : 69 : 7 6 : 1.0
+O: 1 4 : 69 : 7 6 : 1.0
+O: 2 0 : 69 : 7 6 : 1.0
+O: 2 1 : 69 : 7 6 : 1.0
+O: 2 2 : 69 : 7 6 : 1.0
+O: 2 3 : 69 : 7 6 : 1.0
+O: 2 4 : 69 : 7 6 : 1.0
+O: 3 0 : 69 : 7 6 : 1.0
+O: 3 1 : 69 : 7 6 : 1.0
+O: 3 2 : 69 : 7 6 : 1.0
+O: 3 3 : 69 : 7 6 : 1.0
+O: 3 4 : 69 : 7 6 : 1.0
+O: 4 0 : 69 : 7 6 : 1.0
+O: 4 1 : 69 : 7 6 : 1.0
+O: 4 2 : 69 : 7 6 : 1.0
+O: 4 3 : 69 : 7 6 : 1.0
+O: 4 4 : 69 : 7 6 : 1.0
+O: 0 0 : 70 : 7 7 : 1.0
+O: 0 1 : 70 : 7 7 : 1.0
+O: 0 2 : 70 : 7 7 : 1.0
+O: 0 3 : 70 : 7 7 : 1.0
+O: 0 4 : 70 : 7 7 : 1.0
+O: 1 0 : 70 : 7 7 : 1.0
+O: 1 1 : 70 : 7 7 : 1.0
+O: 1 2 : 70 : 7 7 : 1.0
+O: 1 3 : 70 : 7 7 : 1.0
+O: 1 4 : 70 : 7 7 : 1.0
+O: 2 0 : 70 : 7 7 : 1.0
+O: 2 1 : 70 : 7 7 : 1.0
+O: 2 2 : 70 : 7 7 : 1.0
+O: 2 3 : 70 : 7 7 : 1.0
+O: 2 4 : 70 : 7 7 : 1.0
+O: 3 0 : 70 : 7 7 : 1.0
+O: 3 1 : 70 : 7 7 : 1.0
+O: 3 2 : 70 : 7 7 : 1.0
+O: 3 3 : 70 : 7 7 : 1.0
+O: 3 4 : 70 : 7 7 : 1.0
+O: 4 0 : 70 : 7 7 : 1.0
+O: 4 1 : 70 : 7 7 : 1.0
+O: 4 2 : 70 : 7 7 : 1.0
+O: 4 3 : 70 : 7 7 : 1.0
+O: 4 4 : 70 : 7 7 : 1.0
+O: 0 0 : 71 : 7 8 : 1.0
+O: 0 1 : 71 : 7 8 : 1.0
+O: 0 2 : 71 : 7 8 : 1.0
+O: 0 3 : 71 : 7 8 : 1.0
+O: 0 4 : 71 : 7 8 : 1.0
+O: 1 0 : 71 : 7 8 : 1.0
+O: 1 1 : 71 : 7 8 : 1.0
+O: 1 2 : 71 : 7 8 : 1.0
+O: 1 3 : 71 : 7 8 : 1.0
+O: 1 4 : 71 : 7 8 : 1.0
+O: 2 0 : 71 : 7 8 : 1.0
+O: 2 1 : 71 : 7 8 : 1.0
+O: 2 2 : 71 : 7 8 : 1.0
+O: 2 3 : 71 : 7 8 : 1.0
+O: 2 4 : 71 : 7 8 : 1.0
+O: 3 0 : 71 : 7 8 : 1.0
+O: 3 1 : 71 : 7 8 : 1.0
+O: 3 2 : 71 : 7 8 : 1.0
+O: 3 3 : 71 : 7 8 : 1.0
+O: 3 4 : 71 : 7 8 : 1.0
+O: 4 0 : 71 : 7 8 : 1.0
+O: 4 1 : 71 : 7 8 : 1.0
+O: 4 2 : 71 : 7 8 : 1.0
+O: 4 3 : 71 : 7 8 : 1.0
+O: 4 4 : 71 : 7 8 : 1.0
+O: 0 0 : 72 : 8 0 : 1.0
+O: 0 1 : 72 : 8 0 : 1.0
+O: 0 2 : 72 : 8 0 : 1.0
+O: 0 3 : 72 : 8 0 : 1.0
+O: 0 4 : 72 : 8 0 : 1.0
+O: 1 0 : 72 : 8 0 : 1.0
+O: 1 1 : 72 : 8 0 : 1.0
+O: 1 2 : 72 : 8 0 : 1.0
+O: 1 3 : 72 : 8 0 : 1.0
+O: 1 4 : 72 : 8 0 : 1.0
+O: 2 0 : 72 : 8 0 : 1.0
+O: 2 1 : 72 : 8 0 : 1.0
+O: 2 2 : 72 : 8 0 : 1.0
+O: 2 3 : 72 : 8 0 : 1.0
+O: 2 4 : 72 : 8 0 : 1.0
+O: 3 0 : 72 : 8 0 : 1.0
+O: 3 1 : 72 : 8 0 : 1.0
+O: 3 2 : 72 : 8 0 : 1.0
+O: 3 3 : 72 : 8 0 : 1.0
+O: 3 4 : 72 : 8 0 : 1.0
+O: 4 0 : 72 : 8 0 : 1.0
+O: 4 1 : 72 : 8 0 : 1.0
+O: 4 2 : 72 : 8 0 : 1.0
+O: 4 3 : 72 : 8 0 : 1.0
+O: 4 4 : 72 : 8 0 : 1.0
+O: 0 0 : 73 : 8 1 : 1.0
+O: 0 1 : 73 : 8 1 : 1.0
+O: 0 2 : 73 : 8 1 : 1.0
+O: 0 3 : 73 : 8 1 : 1.0
+O: 0 4 : 73 : 8 1 : 1.0
+O: 1 0 : 73 : 8 1 : 1.0
+O: 1 1 : 73 : 8 1 : 1.0
+O: 1 2 : 73 : 8 1 : 1.0
+O: 1 3 : 73 : 8 1 : 1.0
+O: 1 4 : 73 : 8 1 : 1.0
+O: 2 0 : 73 : 8 1 : 1.0
+O: 2 1 : 73 : 8 1 : 1.0
+O: 2 2 : 73 : 8 1 : 1.0
+O: 2 3 : 73 : 8 1 : 1.0
+O: 2 4 : 73 : 8 1 : 1.0
+O: 3 0 : 73 : 8 1 : 1.0
+O: 3 1 : 73 : 8 1 : 1.0
+O: 3 2 : 73 : 8 1 : 1.0
+O: 3 3 : 73 : 8 1 : 1.0
+O: 3 4 : 73 : 8 1 : 1.0
+O: 4 0 : 73 : 8 1 : 1.0
+O: 4 1 : 73 : 8 1 : 1.0
+O: 4 2 : 73 : 8 1 : 1.0
+O: 4 3 : 73 : 8 1 : 1.0
+O: 4 4 : 73 : 8 1 : 1.0
+O: 0 0 : 74 : 8 2 : 1.0
+O: 0 1 : 74 : 8 2 : 1.0
+O: 0 2 : 74 : 8 2 : 1.0
+O: 0 3 : 74 : 8 2 : 1.0
+O: 0 4 : 74 : 8 2 : 1.0
+O: 1 0 : 74 : 8 2 : 1.0
+O: 1 1 : 74 : 8 2 : 1.0
+O: 1 2 : 74 : 8 2 : 1.0
+O: 1 3 : 74 : 8 2 : 1.0
+O: 1 4 : 74 : 8 2 : 1.0
+O: 2 0 : 74 : 8 2 : 1.0
+O: 2 1 : 74 : 8 2 : 1.0
+O: 2 2 : 74 : 8 2 : 1.0
+O: 2 3 : 74 : 8 2 : 1.0
+O: 2 4 : 74 : 8 2 : 1.0
+O: 3 0 : 74 : 8 2 : 1.0
+O: 3 1 : 74 : 8 2 : 1.0
+O: 3 2 : 74 : 8 2 : 1.0
+O: 3 3 : 74 : 8 2 : 1.0
+O: 3 4 : 74 : 8 2 : 1.0
+O: 4 0 : 74 : 8 2 : 1.0
+O: 4 1 : 74 : 8 2 : 1.0
+O: 4 2 : 74 : 8 2 : 1.0
+O: 4 3 : 74 : 8 2 : 1.0
+O: 4 4 : 74 : 8 2 : 1.0
+O: 0 0 : 75 : 8 3 : 1.0
+O: 0 1 : 75 : 8 3 : 1.0
+O: 0 2 : 75 : 8 3 : 1.0
+O: 0 3 : 75 : 8 3 : 1.0
+O: 0 4 : 75 : 8 3 : 1.0
+O: 1 0 : 75 : 8 3 : 1.0
+O: 1 1 : 75 : 8 3 : 1.0
+O: 1 2 : 75 : 8 3 : 1.0
+O: 1 3 : 75 : 8 3 : 1.0
+O: 1 4 : 75 : 8 3 : 1.0
+O: 2 0 : 75 : 8 3 : 1.0
+O: 2 1 : 75 : 8 3 : 1.0
+O: 2 2 : 75 : 8 3 : 1.0
+O: 2 3 : 75 : 8 3 : 1.0
+O: 2 4 : 75 : 8 3 : 1.0
+O: 3 0 : 75 : 8 3 : 1.0
+O: 3 1 : 75 : 8 3 : 1.0
+O: 3 2 : 75 : 8 3 : 1.0
+O: 3 3 : 75 : 8 3 : 1.0
+O: 3 4 : 75 : 8 3 : 1.0
+O: 4 0 : 75 : 8 3 : 1.0
+O: 4 1 : 75 : 8 3 : 1.0
+O: 4 2 : 75 : 8 3 : 1.0
+O: 4 3 : 75 : 8 3 : 1.0
+O: 4 4 : 75 : 8 3 : 1.0
+O: 0 0 : 76 : 8 4 : 1.0
+O: 0 1 : 76 : 8 4 : 1.0
+O: 0 2 : 76 : 8 4 : 1.0
+O: 0 3 : 76 : 8 4 : 1.0
+O: 0 4 : 76 : 8 4 : 1.0
+O: 1 0 : 76 : 8 4 : 1.0
+O: 1 1 : 76 : 8 4 : 1.0
+O: 1 2 : 76 : 8 4 : 1.0
+O: 1 3 : 76 : 8 4 : 1.0
+O: 1 4 : 76 : 8 4 : 1.0
+O: 2 0 : 76 : 8 4 : 1.0
+O: 2 1 : 76 : 8 4 : 1.0
+O: 2 2 : 76 : 8 4 : 1.0
+O: 2 3 : 76 : 8 4 : 1.0
+O: 2 4 : 76 : 8 4 : 1.0
+O: 3 0 : 76 : 8 4 : 1.0
+O: 3 1 : 76 : 8 4 : 1.0
+O: 3 2 : 76 : 8 4 : 1.0
+O: 3 3 : 76 : 8 4 : 1.0
+O: 3 4 : 76 : 8 4 : 1.0
+O: 4 0 : 76 : 8 4 : 1.0
+O: 4 1 : 76 : 8 4 : 1.0
+O: 4 2 : 76 : 8 4 : 1.0
+O: 4 3 : 76 : 8 4 : 1.0
+O: 4 4 : 76 : 8 4 : 1.0
+O: 0 0 : 77 : 8 5 : 1.0
+O: 0 1 : 77 : 8 5 : 1.0
+O: 0 2 : 77 : 8 5 : 1.0
+O: 0 3 : 77 : 8 5 : 1.0
+O: 0 4 : 77 : 8 5 : 1.0
+O: 1 0 : 77 : 8 5 : 1.0
+O: 1 1 : 77 : 8 5 : 1.0
+O: 1 2 : 77 : 8 5 : 1.0
+O: 1 3 : 77 : 8 5 : 1.0
+O: 1 4 : 77 : 8 5 : 1.0
+O: 2 0 : 77 : 8 5 : 1.0
+O: 2 1 : 77 : 8 5 : 1.0
+O: 2 2 : 77 : 8 5 : 1.0
+O: 2 3 : 77 : 8 5 : 1.0
+O: 2 4 : 77 : 8 5 : 1.0
+O: 3 0 : 77 : 8 5 : 1.0
+O: 3 1 : 77 : 8 5 : 1.0
+O: 3 2 : 77 : 8 5 : 1.0
+O: 3 3 : 77 : 8 5 : 1.0
+O: 3 4 : 77 : 8 5 : 1.0
+O: 4 0 : 77 : 8 5 : 1.0
+O: 4 1 : 77 : 8 5 : 1.0
+O: 4 2 : 77 : 8 5 : 1.0
+O: 4 3 : 77 : 8 5 : 1.0
+O: 4 4 : 77 : 8 5 : 1.0
+O: 0 0 : 78 : 8 6 : 1.0
+O: 0 1 : 78 : 8 6 : 1.0
+O: 0 2 : 78 : 8 6 : 1.0
+O: 0 3 : 78 : 8 6 : 1.0
+O: 0 4 : 78 : 8 6 : 1.0
+O: 1 0 : 78 : 8 6 : 1.0
+O: 1 1 : 78 : 8 6 : 1.0
+O: 1 2 : 78 : 8 6 : 1.0
+O: 1 3 : 78 : 8 6 : 1.0
+O: 1 4 : 78 : 8 6 : 1.0
+O: 2 0 : 78 : 8 6 : 1.0
+O: 2 1 : 78 : 8 6 : 1.0
+O: 2 2 : 78 : 8 6 : 1.0
+O: 2 3 : 78 : 8 6 : 1.0
+O: 2 4 : 78 : 8 6 : 1.0
+O: 3 0 : 78 : 8 6 : 1.0
+O: 3 1 : 78 : 8 6 : 1.0
+O: 3 2 : 78 : 8 6 : 1.0
+O: 3 3 : 78 : 8 6 : 1.0
+O: 3 4 : 78 : 8 6 : 1.0
+O: 4 0 : 78 : 8 6 : 1.0
+O: 4 1 : 78 : 8 6 : 1.0
+O: 4 2 : 78 : 8 6 : 1.0
+O: 4 3 : 78 : 8 6 : 1.0
+O: 4 4 : 78 : 8 6 : 1.0
+O: 0 0 : 79 : 8 7 : 1.0
+O: 0 1 : 79 : 8 7 : 1.0
+O: 0 2 : 79 : 8 7 : 1.0
+O: 0 3 : 79 : 8 7 : 1.0
+O: 0 4 : 79 : 8 7 : 1.0
+O: 1 0 : 79 : 8 7 : 1.0
+O: 1 1 : 79 : 8 7 : 1.0
+O: 1 2 : 79 : 8 7 : 1.0
+O: 1 3 : 79 : 8 7 : 1.0
+O: 1 4 : 79 : 8 7 : 1.0
+O: 2 0 : 79 : 8 7 : 1.0
+O: 2 1 : 79 : 8 7 : 1.0
+O: 2 2 : 79 : 8 7 : 1.0
+O: 2 3 : 79 : 8 7 : 1.0
+O: 2 4 : 79 : 8 7 : 1.0
+O: 3 0 : 79 : 8 7 : 1.0
+O: 3 1 : 79 : 8 7 : 1.0
+O: 3 2 : 79 : 8 7 : 1.0
+O: 3 3 : 79 : 8 7 : 1.0
+O: 3 4 : 79 : 8 7 : 1.0
+O: 4 0 : 79 : 8 7 : 1.0
+O: 4 1 : 79 : 8 7 : 1.0
+O: 4 2 : 79 : 8 7 : 1.0
+O: 4 3 : 79 : 8 7 : 1.0
+O: 4 4 : 79 : 8 7 : 1.0
+O: 0 0 : 80 : 8 8 : 1.0
+O: 0 1 : 80 : 8 8 : 1.0
+O: 0 2 : 80 : 8 8 : 1.0
+O: 0 3 : 80 : 8 8 : 1.0
+O: 0 4 : 80 : 8 8 : 1.0
+O: 1 0 : 80 : 8 8 : 1.0
+O: 1 1 : 80 : 8 8 : 1.0
+O: 1 2 : 80 : 8 8 : 1.0
+O: 1 3 : 80 : 8 8 : 1.0
+O: 1 4 : 80 : 8 8 : 1.0
+O: 2 0 : 80 : 8 8 : 1.0
+O: 2 1 : 80 : 8 8 : 1.0
+O: 2 2 : 80 : 8 8 : 1.0
+O: 2 3 : 80 : 8 8 : 1.0
+O: 2 4 : 80 : 8 8 : 1.0
+O: 3 0 : 80 : 8 8 : 1.0
+O: 3 1 : 80 : 8 8 : 1.0
+O: 3 2 : 80 : 8 8 : 1.0
+O: 3 3 : 80 : 8 8 : 1.0
+O: 3 4 : 80 : 8 8 : 1.0
+O: 4 0 : 80 : 8 8 : 1.0
+O: 4 1 : 80 : 8 8 : 1.0
+O: 4 2 : 80 : 8 8 : 1.0
+O: 4 3 : 80 : 8 8 : 1.0
+O: 4 4 : 80 : 8 8 : 1.0
+R: 0 0 : 0 : 1.0
+R: 0 1 : 0 : 1.0
+R: 0 2 : 0 : 1.0
+R: 0 3 : 0 : 1.0
+R: 0 4 : 0 : 1.0
+R: 1 0 : 0 : 1.0
+R: 1 1 : 0 : 1.0
+R: 1 2 : 0 : 1.0
+R: 1 3 : 0 : 1.0
+R: 1 4 : 0 : 1.0
+R: 2 0 : 0 : 1.0
+R: 2 1 : 0 : 1.0
+R: 2 2 : 0 : 1.0
+R: 2 3 : 0 : 1.0
+R: 2 4 : 0 : 1.0
+R: 3 0 : 0 : 1.0
+R: 3 1 : 0 : 1.0
+R: 3 2 : 0 : 1.0
+R: 3 3 : 0 : 1.0
+R: 3 4 : 0 : 1.0
+R: 4 0 : 0 : 1.0
+R: 4 1 : 0 : 1.0
+R: 4 2 : 0 : 1.0
+R: 4 3 : 0 : 1.0
+R: 4 4 : 0 : 1.0
+R: 0 0 : 1 : 0.0
+R: 0 1 : 1 : 0.0
+R: 0 2 : 1 : 0.0
+R: 0 3 : 1 : 0.0
+R: 0 4 : 1 : 0.0
+R: 1 0 : 1 : 0.0
+R: 1 1 : 1 : 0.0
+R: 1 2 : 1 : 0.0
+R: 1 3 : 1 : 0.0
+R: 1 4 : 1 : 0.0
+R: 2 0 : 1 : 0.0
+R: 2 1 : 1 : 0.0
+R: 2 2 : 1 : 0.0
+R: 2 3 : 1 : 0.0
+R: 2 4 : 1 : 0.0
+R: 3 0 : 1 : 0.0
+R: 3 1 : 1 : 0.0
+R: 3 2 : 1 : 0.0
+R: 3 3 : 1 : 0.0
+R: 3 4 : 1 : 0.0
+R: 4 0 : 1 : 0.0
+R: 4 1 : 1 : 0.0
+R: 4 2 : 1 : 0.0
+R: 4 3 : 1 : 0.0
+R: 4 4 : 1 : 0.0
+R: 0 0 : 2 : 0.0
+R: 0 1 : 2 : 0.0
+R: 0 2 : 2 : 0.0
+R: 0 3 : 2 : 0.0
+R: 0 4 : 2 : 0.0
+R: 1 0 : 2 : 0.0
+R: 1 1 : 2 : 0.0
+R: 1 2 : 2 : 0.0
+R: 1 3 : 2 : 0.0
+R: 1 4 : 2 : 0.0
+R: 2 0 : 2 : 0.0
+R: 2 1 : 2 : 0.0
+R: 2 2 : 2 : 0.0
+R: 2 3 : 2 : 0.0
+R: 2 4 : 2 : 0.0
+R: 3 0 : 2 : 0.0
+R: 3 1 : 2 : 0.0
+R: 3 2 : 2 : 0.0
+R: 3 3 : 2 : 0.0
+R: 3 4 : 2 : 0.0
+R: 4 0 : 2 : 0.0
+R: 4 1 : 2 : 0.0
+R: 4 2 : 2 : 0.0
+R: 4 3 : 2 : 0.0
+R: 4 4 : 2 : 0.0
+R: 0 0 : 3 : 0.0
+R: 0 1 : 3 : 0.0
+R: 0 2 : 3 : 0.0
+R: 0 3 : 3 : 0.0
+R: 0 4 : 3 : 0.0
+R: 1 0 : 3 : 0.0
+R: 1 1 : 3 : 0.0
+R: 1 2 : 3 : 0.0
+R: 1 3 : 3 : 0.0
+R: 1 4 : 3 : 0.0
+R: 2 0 : 3 : 0.0
+R: 2 1 : 3 : 0.0
+R: 2 2 : 3 : 0.0
+R: 2 3 : 3 : 0.0
+R: 2 4 : 3 : 0.0
+R: 3 0 : 3 : 0.0
+R: 3 1 : 3 : 0.0
+R: 3 2 : 3 : 0.0
+R: 3 3 : 3 : 0.0
+R: 3 4 : 3 : 0.0
+R: 4 0 : 3 : 0.0
+R: 4 1 : 3 : 0.0
+R: 4 2 : 3 : 0.0
+R: 4 3 : 3 : 0.0
+R: 4 4 : 3 : 0.0
+R: 0 0 : 4 : 0.0
+R: 0 1 : 4 : 0.0
+R: 0 2 : 4 : 0.0
+R: 0 3 : 4 : 0.0
+R: 0 4 : 4 : 0.0
+R: 1 0 : 4 : 0.0
+R: 1 1 : 4 : 0.0
+R: 1 2 : 4 : 0.0
+R: 1 3 : 4 : 0.0
+R: 1 4 : 4 : 0.0
+R: 2 0 : 4 : 0.0
+R: 2 1 : 4 : 0.0
+R: 2 2 : 4 : 0.0
+R: 2 3 : 4 : 0.0
+R: 2 4 : 4 : 0.0
+R: 3 0 : 4 : 0.0
+R: 3 1 : 4 : 0.0
+R: 3 2 : 4 : 0.0
+R: 3 3 : 4 : 0.0
+R: 3 4 : 4 : 0.0
+R: 4 0 : 4 : 0.0
+R: 4 1 : 4 : 0.0
+R: 4 2 : 4 : 0.0
+R: 4 3 : 4 : 0.0
+R: 4 4 : 4 : 0.0
+R: 0 0 : 5 : 0.0
+R: 0 1 : 5 : 0.0
+R: 0 2 : 5 : 0.0
+R: 0 3 : 5 : 0.0
+R: 0 4 : 5 : 0.0
+R: 1 0 : 5 : 0.0
+R: 1 1 : 5 : 0.0
+R: 1 2 : 5 : 0.0
+R: 1 3 : 5 : 0.0
+R: 1 4 : 5 : 0.0
+R: 2 0 : 5 : 0.0
+R: 2 1 : 5 : 0.0
+R: 2 2 : 5 : 0.0
+R: 2 3 : 5 : 0.0
+R: 2 4 : 5 : 0.0
+R: 3 0 : 5 : 0.0
+R: 3 1 : 5 : 0.0
+R: 3 2 : 5 : 0.0
+R: 3 3 : 5 : 0.0
+R: 3 4 : 5 : 0.0
+R: 4 0 : 5 : 0.0
+R: 4 1 : 5 : 0.0
+R: 4 2 : 5 : 0.0
+R: 4 3 : 5 : 0.0
+R: 4 4 : 5 : 0.0
+R: 0 0 : 6 : 0.0
+R: 0 1 : 6 : 0.0
+R: 0 2 : 6 : 0.0
+R: 0 3 : 6 : 0.0
+R: 0 4 : 6 : 0.0
+R: 1 0 : 6 : 0.0
+R: 1 1 : 6 : 0.0
+R: 1 2 : 6 : 0.0
+R: 1 3 : 6 : 0.0
+R: 1 4 : 6 : 0.0
+R: 2 0 : 6 : 0.0
+R: 2 1 : 6 : 0.0
+R: 2 2 : 6 : 0.0
+R: 2 3 : 6 : 0.0
+R: 2 4 : 6 : 0.0
+R: 3 0 : 6 : 0.0
+R: 3 1 : 6 : 0.0
+R: 3 2 : 6 : 0.0
+R: 3 3 : 6 : 0.0
+R: 3 4 : 6 : 0.0
+R: 4 0 : 6 : 0.0
+R: 4 1 : 6 : 0.0
+R: 4 2 : 6 : 0.0
+R: 4 3 : 6 : 0.0
+R: 4 4 : 6 : 0.0
+R: 0 0 : 7 : 0.0
+R: 0 1 : 7 : 0.0
+R: 0 2 : 7 : 0.0
+R: 0 3 : 7 : 0.0
+R: 0 4 : 7 : 0.0
+R: 1 0 : 7 : 0.0
+R: 1 1 : 7 : 0.0
+R: 1 2 : 7 : 0.0
+R: 1 3 : 7 : 0.0
+R: 1 4 : 7 : 0.0
+R: 2 0 : 7 : 0.0
+R: 2 1 : 7 : 0.0
+R: 2 2 : 7 : 0.0
+R: 2 3 : 7 : 0.0
+R: 2 4 : 7 : 0.0
+R: 3 0 : 7 : 0.0
+R: 3 1 : 7 : 0.0
+R: 3 2 : 7 : 0.0
+R: 3 3 : 7 : 0.0
+R: 3 4 : 7 : 0.0
+R: 4 0 : 7 : 0.0
+R: 4 1 : 7 : 0.0
+R: 4 2 : 7 : 0.0
+R: 4 3 : 7 : 0.0
+R: 4 4 : 7 : 0.0
+R: 0 0 : 8 : 0.0
+R: 0 1 : 8 : 0.0
+R: 0 2 : 8 : 0.0
+R: 0 3 : 8 : 0.0
+R: 0 4 : 8 : 0.0
+R: 1 0 : 8 : 0.0
+R: 1 1 : 8 : 0.0
+R: 1 2 : 8 : 0.0
+R: 1 3 : 8 : 0.0
+R: 1 4 : 8 : 0.0
+R: 2 0 : 8 : 0.0
+R: 2 1 : 8 : 0.0
+R: 2 2 : 8 : 0.0
+R: 2 3 : 8 : 0.0
+R: 2 4 : 8 : 0.0
+R: 3 0 : 8 : 0.0
+R: 3 1 : 8 : 0.0
+R: 3 2 : 8 : 0.0
+R: 3 3 : 8 : 0.0
+R: 3 4 : 8 : 0.0
+R: 4 0 : 8 : 0.0
+R: 4 1 : 8 : 0.0
+R: 4 2 : 8 : 0.0
+R: 4 3 : 8 : 0.0
+R: 4 4 : 8 : 0.0
+R: 0 0 : 9 : 0.0
+R: 0 1 : 9 : 0.0
+R: 0 2 : 9 : 0.0
+R: 0 3 : 9 : 0.0
+R: 0 4 : 9 : 0.0
+R: 1 0 : 9 : 0.0
+R: 1 1 : 9 : 0.0
+R: 1 2 : 9 : 0.0
+R: 1 3 : 9 : 0.0
+R: 1 4 : 9 : 0.0
+R: 2 0 : 9 : 0.0
+R: 2 1 : 9 : 0.0
+R: 2 2 : 9 : 0.0
+R: 2 3 : 9 : 0.0
+R: 2 4 : 9 : 0.0
+R: 3 0 : 9 : 0.0
+R: 3 1 : 9 : 0.0
+R: 3 2 : 9 : 0.0
+R: 3 3 : 9 : 0.0
+R: 3 4 : 9 : 0.0
+R: 4 0 : 9 : 0.0
+R: 4 1 : 9 : 0.0
+R: 4 2 : 9 : 0.0
+R: 4 3 : 9 : 0.0
+R: 4 4 : 9 : 0.0
+R: 0 0 : 10 : 0.0
+R: 0 1 : 10 : 0.0
+R: 0 2 : 10 : 0.0
+R: 0 3 : 10 : 0.0
+R: 0 4 : 10 : 0.0
+R: 1 0 : 10 : 0.0
+R: 1 1 : 10 : 0.0
+R: 1 2 : 10 : 0.0
+R: 1 3 : 10 : 0.0
+R: 1 4 : 10 : 0.0
+R: 2 0 : 10 : 0.0
+R: 2 1 : 10 : 0.0
+R: 2 2 : 10 : 0.0
+R: 2 3 : 10 : 0.0
+R: 2 4 : 10 : 0.0
+R: 3 0 : 10 : 0.0
+R: 3 1 : 10 : 0.0
+R: 3 2 : 10 : 0.0
+R: 3 3 : 10 : 0.0
+R: 3 4 : 10 : 0.0
+R: 4 0 : 10 : 0.0
+R: 4 1 : 10 : 0.0
+R: 4 2 : 10 : 0.0
+R: 4 3 : 10 : 0.0
+R: 4 4 : 10 : 0.0
+R: 0 0 : 11 : 0.0
+R: 0 1 : 11 : 0.0
+R: 0 2 : 11 : 0.0
+R: 0 3 : 11 : 0.0
+R: 0 4 : 11 : 0.0
+R: 1 0 : 11 : 0.0
+R: 1 1 : 11 : 0.0
+R: 1 2 : 11 : 0.0
+R: 1 3 : 11 : 0.0
+R: 1 4 : 11 : 0.0
+R: 2 0 : 11 : 0.0
+R: 2 1 : 11 : 0.0
+R: 2 2 : 11 : 0.0
+R: 2 3 : 11 : 0.0
+R: 2 4 : 11 : 0.0
+R: 3 0 : 11 : 0.0
+R: 3 1 : 11 : 0.0
+R: 3 2 : 11 : 0.0
+R: 3 3 : 11 : 0.0
+R: 3 4 : 11 : 0.0
+R: 4 0 : 11 : 0.0
+R: 4 1 : 11 : 0.0
+R: 4 2 : 11 : 0.0
+R: 4 3 : 11 : 0.0
+R: 4 4 : 11 : 0.0
+R: 0 0 : 12 : 0.0
+R: 0 1 : 12 : 0.0
+R: 0 2 : 12 : 0.0
+R: 0 3 : 12 : 0.0
+R: 0 4 : 12 : 0.0
+R: 1 0 : 12 : 0.0
+R: 1 1 : 12 : 0.0
+R: 1 2 : 12 : 0.0
+R: 1 3 : 12 : 0.0
+R: 1 4 : 12 : 0.0
+R: 2 0 : 12 : 0.0
+R: 2 1 : 12 : 0.0
+R: 2 2 : 12 : 0.0
+R: 2 3 : 12 : 0.0
+R: 2 4 : 12 : 0.0
+R: 3 0 : 12 : 0.0
+R: 3 1 : 12 : 0.0
+R: 3 2 : 12 : 0.0
+R: 3 3 : 12 : 0.0
+R: 3 4 : 12 : 0.0
+R: 4 0 : 12 : 0.0
+R: 4 1 : 12 : 0.0
+R: 4 2 : 12 : 0.0
+R: 4 3 : 12 : 0.0
+R: 4 4 : 12 : 0.0
+R: 0 0 : 13 : 0.0
+R: 0 1 : 13 : 0.0
+R: 0 2 : 13 : 0.0
+R: 0 3 : 13 : 0.0
+R: 0 4 : 13 : 0.0
+R: 1 0 : 13 : 0.0
+R: 1 1 : 13 : 0.0
+R: 1 2 : 13 : 0.0
+R: 1 3 : 13 : 0.0
+R: 1 4 : 13 : 0.0
+R: 2 0 : 13 : 0.0
+R: 2 1 : 13 : 0.0
+R: 2 2 : 13 : 0.0
+R: 2 3 : 13 : 0.0
+R: 2 4 : 13 : 0.0
+R: 3 0 : 13 : 0.0
+R: 3 1 : 13 : 0.0
+R: 3 2 : 13 : 0.0
+R: 3 3 : 13 : 0.0
+R: 3 4 : 13 : 0.0
+R: 4 0 : 13 : 0.0
+R: 4 1 : 13 : 0.0
+R: 4 2 : 13 : 0.0
+R: 4 3 : 13 : 0.0
+R: 4 4 : 13 : 0.0
+R: 0 0 : 14 : 0.0
+R: 0 1 : 14 : 0.0
+R: 0 2 : 14 : 0.0
+R: 0 3 : 14 : 0.0
+R: 0 4 : 14 : 0.0
+R: 1 0 : 14 : 0.0
+R: 1 1 : 14 : 0.0
+R: 1 2 : 14 : 0.0
+R: 1 3 : 14 : 0.0
+R: 1 4 : 14 : 0.0
+R: 2 0 : 14 : 0.0
+R: 2 1 : 14 : 0.0
+R: 2 2 : 14 : 0.0
+R: 2 3 : 14 : 0.0
+R: 2 4 : 14 : 0.0
+R: 3 0 : 14 : 0.0
+R: 3 1 : 14 : 0.0
+R: 3 2 : 14 : 0.0
+R: 3 3 : 14 : 0.0
+R: 3 4 : 14 : 0.0
+R: 4 0 : 14 : 0.0
+R: 4 1 : 14 : 0.0
+R: 4 2 : 14 : 0.0
+R: 4 3 : 14 : 0.0
+R: 4 4 : 14 : 0.0
+R: 0 0 : 15 : 0.0
+R: 0 1 : 15 : 0.0
+R: 0 2 : 15 : 0.0
+R: 0 3 : 15 : 0.0
+R: 0 4 : 15 : 0.0
+R: 1 0 : 15 : 0.0
+R: 1 1 : 15 : 0.0
+R: 1 2 : 15 : 0.0
+R: 1 3 : 15 : 0.0
+R: 1 4 : 15 : 0.0
+R: 2 0 : 15 : 0.0
+R: 2 1 : 15 : 0.0
+R: 2 2 : 15 : 0.0
+R: 2 3 : 15 : 0.0
+R: 2 4 : 15 : 0.0
+R: 3 0 : 15 : 0.0
+R: 3 1 : 15 : 0.0
+R: 3 2 : 15 : 0.0
+R: 3 3 : 15 : 0.0
+R: 3 4 : 15 : 0.0
+R: 4 0 : 15 : 0.0
+R: 4 1 : 15 : 0.0
+R: 4 2 : 15 : 0.0
+R: 4 3 : 15 : 0.0
+R: 4 4 : 15 : 0.0
+R: 0 0 : 16 : 0.0
+R: 0 1 : 16 : 0.0
+R: 0 2 : 16 : 0.0
+R: 0 3 : 16 : 0.0
+R: 0 4 : 16 : 0.0
+R: 1 0 : 16 : 0.0
+R: 1 1 : 16 : 0.0
+R: 1 2 : 16 : 0.0
+R: 1 3 : 16 : 0.0
+R: 1 4 : 16 : 0.0
+R: 2 0 : 16 : 0.0
+R: 2 1 : 16 : 0.0
+R: 2 2 : 16 : 0.0
+R: 2 3 : 16 : 0.0
+R: 2 4 : 16 : 0.0
+R: 3 0 : 16 : 0.0
+R: 3 1 : 16 : 0.0
+R: 3 2 : 16 : 0.0
+R: 3 3 : 16 : 0.0
+R: 3 4 : 16 : 0.0
+R: 4 0 : 16 : 0.0
+R: 4 1 : 16 : 0.0
+R: 4 2 : 16 : 0.0
+R: 4 3 : 16 : 0.0
+R: 4 4 : 16 : 0.0
+R: 0 0 : 17 : 0.0
+R: 0 1 : 17 : 0.0
+R: 0 2 : 17 : 0.0
+R: 0 3 : 17 : 0.0
+R: 0 4 : 17 : 0.0
+R: 1 0 : 17 : 0.0
+R: 1 1 : 17 : 0.0
+R: 1 2 : 17 : 0.0
+R: 1 3 : 17 : 0.0
+R: 1 4 : 17 : 0.0
+R: 2 0 : 17 : 0.0
+R: 2 1 : 17 : 0.0
+R: 2 2 : 17 : 0.0
+R: 2 3 : 17 : 0.0
+R: 2 4 : 17 : 0.0
+R: 3 0 : 17 : 0.0
+R: 3 1 : 17 : 0.0
+R: 3 2 : 17 : 0.0
+R: 3 3 : 17 : 0.0
+R: 3 4 : 17 : 0.0
+R: 4 0 : 17 : 0.0
+R: 4 1 : 17 : 0.0
+R: 4 2 : 17 : 0.0
+R: 4 3 : 17 : 0.0
+R: 4 4 : 17 : 0.0
+R: 0 0 : 18 : 0.0
+R: 0 1 : 18 : 0.0
+R: 0 2 : 18 : 0.0
+R: 0 3 : 18 : 0.0
+R: 0 4 : 18 : 0.0
+R: 1 0 : 18 : 0.0
+R: 1 1 : 18 : 0.0
+R: 1 2 : 18 : 0.0
+R: 1 3 : 18 : 0.0
+R: 1 4 : 18 : 0.0
+R: 2 0 : 18 : 0.0
+R: 2 1 : 18 : 0.0
+R: 2 2 : 18 : 0.0
+R: 2 3 : 18 : 0.0
+R: 2 4 : 18 : 0.0
+R: 3 0 : 18 : 0.0
+R: 3 1 : 18 : 0.0
+R: 3 2 : 18 : 0.0
+R: 3 3 : 18 : 0.0
+R: 3 4 : 18 : 0.0
+R: 4 0 : 18 : 0.0
+R: 4 1 : 18 : 0.0
+R: 4 2 : 18 : 0.0
+R: 4 3 : 18 : 0.0
+R: 4 4 : 18 : 0.0
+R: 0 0 : 19 : 0.0
+R: 0 1 : 19 : 0.0
+R: 0 2 : 19 : 0.0
+R: 0 3 : 19 : 0.0
+R: 0 4 : 19 : 0.0
+R: 1 0 : 19 : 0.0
+R: 1 1 : 19 : 0.0
+R: 1 2 : 19 : 0.0
+R: 1 3 : 19 : 0.0
+R: 1 4 : 19 : 0.0
+R: 2 0 : 19 : 0.0
+R: 2 1 : 19 : 0.0
+R: 2 2 : 19 : 0.0
+R: 2 3 : 19 : 0.0
+R: 2 4 : 19 : 0.0
+R: 3 0 : 19 : 0.0
+R: 3 1 : 19 : 0.0
+R: 3 2 : 19 : 0.0
+R: 3 3 : 19 : 0.0
+R: 3 4 : 19 : 0.0
+R: 4 0 : 19 : 0.0
+R: 4 1 : 19 : 0.0
+R: 4 2 : 19 : 0.0
+R: 4 3 : 19 : 0.0
+R: 4 4 : 19 : 0.0
+R: 0 0 : 20 : 0.0
+R: 0 1 : 20 : 0.0
+R: 0 2 : 20 : 0.0
+R: 0 3 : 20 : 0.0
+R: 0 4 : 20 : 0.0
+R: 1 0 : 20 : 0.0
+R: 1 1 : 20 : 0.0
+R: 1 2 : 20 : 0.0
+R: 1 3 : 20 : 0.0
+R: 1 4 : 20 : 0.0
+R: 2 0 : 20 : 0.0
+R: 2 1 : 20 : 0.0
+R: 2 2 : 20 : 0.0
+R: 2 3 : 20 : 0.0
+R: 2 4 : 20 : 0.0
+R: 3 0 : 20 : 0.0
+R: 3 1 : 20 : 0.0
+R: 3 2 : 20 : 0.0
+R: 3 3 : 20 : 0.0
+R: 3 4 : 20 : 0.0
+R: 4 0 : 20 : 0.0
+R: 4 1 : 20 : 0.0
+R: 4 2 : 20 : 0.0
+R: 4 3 : 20 : 0.0
+R: 4 4 : 20 : 0.0
+R: 0 0 : 21 : 0.0
+R: 0 1 : 21 : 0.0
+R: 0 2 : 21 : 0.0
+R: 0 3 : 21 : 0.0
+R: 0 4 : 21 : 0.0
+R: 1 0 : 21 : 0.0
+R: 1 1 : 21 : 0.0
+R: 1 2 : 21 : 0.0
+R: 1 3 : 21 : 0.0
+R: 1 4 : 21 : 0.0
+R: 2 0 : 21 : 0.0
+R: 2 1 : 21 : 0.0
+R: 2 2 : 21 : 0.0
+R: 2 3 : 21 : 0.0
+R: 2 4 : 21 : 0.0
+R: 3 0 : 21 : 0.0
+R: 3 1 : 21 : 0.0
+R: 3 2 : 21 : 0.0
+R: 3 3 : 21 : 0.0
+R: 3 4 : 21 : 0.0
+R: 4 0 : 21 : 0.0
+R: 4 1 : 21 : 0.0
+R: 4 2 : 21 : 0.0
+R: 4 3 : 21 : 0.0
+R: 4 4 : 21 : 0.0
+R: 0 0 : 22 : 0.0
+R: 0 1 : 22 : 0.0
+R: 0 2 : 22 : 0.0
+R: 0 3 : 22 : 0.0
+R: 0 4 : 22 : 0.0
+R: 1 0 : 22 : 0.0
+R: 1 1 : 22 : 0.0
+R: 1 2 : 22 : 0.0
+R: 1 3 : 22 : 0.0
+R: 1 4 : 22 : 0.0
+R: 2 0 : 22 : 0.0
+R: 2 1 : 22 : 0.0
+R: 2 2 : 22 : 0.0
+R: 2 3 : 22 : 0.0
+R: 2 4 : 22 : 0.0
+R: 3 0 : 22 : 0.0
+R: 3 1 : 22 : 0.0
+R: 3 2 : 22 : 0.0
+R: 3 3 : 22 : 0.0
+R: 3 4 : 22 : 0.0
+R: 4 0 : 22 : 0.0
+R: 4 1 : 22 : 0.0
+R: 4 2 : 22 : 0.0
+R: 4 3 : 22 : 0.0
+R: 4 4 : 22 : 0.0
+R: 0 0 : 23 : 0.0
+R: 0 1 : 23 : 0.0
+R: 0 2 : 23 : 0.0
+R: 0 3 : 23 : 0.0
+R: 0 4 : 23 : 0.0
+R: 1 0 : 23 : 0.0
+R: 1 1 : 23 : 0.0
+R: 1 2 : 23 : 0.0
+R: 1 3 : 23 : 0.0
+R: 1 4 : 23 : 0.0
+R: 2 0 : 23 : 0.0
+R: 2 1 : 23 : 0.0
+R: 2 2 : 23 : 0.0
+R: 2 3 : 23 : 0.0
+R: 2 4 : 23 : 0.0
+R: 3 0 : 23 : 0.0
+R: 3 1 : 23 : 0.0
+R: 3 2 : 23 : 0.0
+R: 3 3 : 23 : 0.0
+R: 3 4 : 23 : 0.0
+R: 4 0 : 23 : 0.0
+R: 4 1 : 23 : 0.0
+R: 4 2 : 23 : 0.0
+R: 4 3 : 23 : 0.0
+R: 4 4 : 23 : 0.0
+R: 0 0 : 24 : 0.0
+R: 0 1 : 24 : 0.0
+R: 0 2 : 24 : 0.0
+R: 0 3 : 24 : 0.0
+R: 0 4 : 24 : 0.0
+R: 1 0 : 24 : 0.0
+R: 1 1 : 24 : 0.0
+R: 1 2 : 24 : 0.0
+R: 1 3 : 24 : 0.0
+R: 1 4 : 24 : 0.0
+R: 2 0 : 24 : 0.0
+R: 2 1 : 24 : 0.0
+R: 2 2 : 24 : 0.0
+R: 2 3 : 24 : 0.0
+R: 2 4 : 24 : 0.0
+R: 3 0 : 24 : 0.0
+R: 3 1 : 24 : 0.0
+R: 3 2 : 24 : 0.0
+R: 3 3 : 24 : 0.0
+R: 3 4 : 24 : 0.0
+R: 4 0 : 24 : 0.0
+R: 4 1 : 24 : 0.0
+R: 4 2 : 24 : 0.0
+R: 4 3 : 24 : 0.0
+R: 4 4 : 24 : 0.0
+R: 0 0 : 25 : 0.0
+R: 0 1 : 25 : 0.0
+R: 0 2 : 25 : 0.0
+R: 0 3 : 25 : 0.0
+R: 0 4 : 25 : 0.0
+R: 1 0 : 25 : 0.0
+R: 1 1 : 25 : 0.0
+R: 1 2 : 25 : 0.0
+R: 1 3 : 25 : 0.0
+R: 1 4 : 25 : 0.0
+R: 2 0 : 25 : 0.0
+R: 2 1 : 25 : 0.0
+R: 2 2 : 25 : 0.0
+R: 2 3 : 25 : 0.0
+R: 2 4 : 25 : 0.0
+R: 3 0 : 25 : 0.0
+R: 3 1 : 25 : 0.0
+R: 3 2 : 25 : 0.0
+R: 3 3 : 25 : 0.0
+R: 3 4 : 25 : 0.0
+R: 4 0 : 25 : 0.0
+R: 4 1 : 25 : 0.0
+R: 4 2 : 25 : 0.0
+R: 4 3 : 25 : 0.0
+R: 4 4 : 25 : 0.0
+R: 0 0 : 26 : 0.0
+R: 0 1 : 26 : 0.0
+R: 0 2 : 26 : 0.0
+R: 0 3 : 26 : 0.0
+R: 0 4 : 26 : 0.0
+R: 1 0 : 26 : 0.0
+R: 1 1 : 26 : 0.0
+R: 1 2 : 26 : 0.0
+R: 1 3 : 26 : 0.0
+R: 1 4 : 26 : 0.0
+R: 2 0 : 26 : 0.0
+R: 2 1 : 26 : 0.0
+R: 2 2 : 26 : 0.0
+R: 2 3 : 26 : 0.0
+R: 2 4 : 26 : 0.0
+R: 3 0 : 26 : 0.0
+R: 3 1 : 26 : 0.0
+R: 3 2 : 26 : 0.0
+R: 3 3 : 26 : 0.0
+R: 3 4 : 26 : 0.0
+R: 4 0 : 26 : 0.0
+R: 4 1 : 26 : 0.0
+R: 4 2 : 26 : 0.0
+R: 4 3 : 26 : 0.0
+R: 4 4 : 26 : 0.0
+R: 0 0 : 27 : 0.0
+R: 0 1 : 27 : 0.0
+R: 0 2 : 27 : 0.0
+R: 0 3 : 27 : 0.0
+R: 0 4 : 27 : 0.0
+R: 1 0 : 27 : 0.0
+R: 1 1 : 27 : 0.0
+R: 1 2 : 27 : 0.0
+R: 1 3 : 27 : 0.0
+R: 1 4 : 27 : 0.0
+R: 2 0 : 27 : 0.0
+R: 2 1 : 27 : 0.0
+R: 2 2 : 27 : 0.0
+R: 2 3 : 27 : 0.0
+R: 2 4 : 27 : 0.0
+R: 3 0 : 27 : 0.0
+R: 3 1 : 27 : 0.0
+R: 3 2 : 27 : 0.0
+R: 3 3 : 27 : 0.0
+R: 3 4 : 27 : 0.0
+R: 4 0 : 27 : 0.0
+R: 4 1 : 27 : 0.0
+R: 4 2 : 27 : 0.0
+R: 4 3 : 27 : 0.0
+R: 4 4 : 27 : 0.0
+R: 0 0 : 28 : 0.0
+R: 0 1 : 28 : 0.0
+R: 0 2 : 28 : 0.0
+R: 0 3 : 28 : 0.0
+R: 0 4 : 28 : 0.0
+R: 1 0 : 28 : 0.0
+R: 1 1 : 28 : 0.0
+R: 1 2 : 28 : 0.0
+R: 1 3 : 28 : 0.0
+R: 1 4 : 28 : 0.0
+R: 2 0 : 28 : 0.0
+R: 2 1 : 28 : 0.0
+R: 2 2 : 28 : 0.0
+R: 2 3 : 28 : 0.0
+R: 2 4 : 28 : 0.0
+R: 3 0 : 28 : 0.0
+R: 3 1 : 28 : 0.0
+R: 3 2 : 28 : 0.0
+R: 3 3 : 28 : 0.0
+R: 3 4 : 28 : 0.0
+R: 4 0 : 28 : 0.0
+R: 4 1 : 28 : 0.0
+R: 4 2 : 28 : 0.0
+R: 4 3 : 28 : 0.0
+R: 4 4 : 28 : 0.0
+R: 0 0 : 29 : 0.0
+R: 0 1 : 29 : 0.0
+R: 0 2 : 29 : 0.0
+R: 0 3 : 29 : 0.0
+R: 0 4 : 29 : 0.0
+R: 1 0 : 29 : 0.0
+R: 1 1 : 29 : 0.0
+R: 1 2 : 29 : 0.0
+R: 1 3 : 29 : 0.0
+R: 1 4 : 29 : 0.0
+R: 2 0 : 29 : 0.0
+R: 2 1 : 29 : 0.0
+R: 2 2 : 29 : 0.0
+R: 2 3 : 29 : 0.0
+R: 2 4 : 29 : 0.0
+R: 3 0 : 29 : 0.0
+R: 3 1 : 29 : 0.0
+R: 3 2 : 29 : 0.0
+R: 3 3 : 29 : 0.0
+R: 3 4 : 29 : 0.0
+R: 4 0 : 29 : 0.0
+R: 4 1 : 29 : 0.0
+R: 4 2 : 29 : 0.0
+R: 4 3 : 29 : 0.0
+R: 4 4 : 29 : 0.0
+R: 0 0 : 30 : 0.0
+R: 0 1 : 30 : 0.0
+R: 0 2 : 30 : 0.0
+R: 0 3 : 30 : 0.0
+R: 0 4 : 30 : 0.0
+R: 1 0 : 30 : 0.0
+R: 1 1 : 30 : 0.0
+R: 1 2 : 30 : 0.0
+R: 1 3 : 30 : 0.0
+R: 1 4 : 30 : 0.0
+R: 2 0 : 30 : 0.0
+R: 2 1 : 30 : 0.0
+R: 2 2 : 30 : 0.0
+R: 2 3 : 30 : 0.0
+R: 2 4 : 30 : 0.0
+R: 3 0 : 30 : 0.0
+R: 3 1 : 30 : 0.0
+R: 3 2 : 30 : 0.0
+R: 3 3 : 30 : 0.0
+R: 3 4 : 30 : 0.0
+R: 4 0 : 30 : 0.0
+R: 4 1 : 30 : 0.0
+R: 4 2 : 30 : 0.0
+R: 4 3 : 30 : 0.0
+R: 4 4 : 30 : 0.0
+R: 0 0 : 31 : 0.0
+R: 0 1 : 31 : 0.0
+R: 0 2 : 31 : 0.0
+R: 0 3 : 31 : 0.0
+R: 0 4 : 31 : 0.0
+R: 1 0 : 31 : 0.0
+R: 1 1 : 31 : 0.0
+R: 1 2 : 31 : 0.0
+R: 1 3 : 31 : 0.0
+R: 1 4 : 31 : 0.0
+R: 2 0 : 31 : 0.0
+R: 2 1 : 31 : 0.0
+R: 2 2 : 31 : 0.0
+R: 2 3 : 31 : 0.0
+R: 2 4 : 31 : 0.0
+R: 3 0 : 31 : 0.0
+R: 3 1 : 31 : 0.0
+R: 3 2 : 31 : 0.0
+R: 3 3 : 31 : 0.0
+R: 3 4 : 31 : 0.0
+R: 4 0 : 31 : 0.0
+R: 4 1 : 31 : 0.0
+R: 4 2 : 31 : 0.0
+R: 4 3 : 31 : 0.0
+R: 4 4 : 31 : 0.0
+R: 0 0 : 32 : 0.0
+R: 0 1 : 32 : 0.0
+R: 0 2 : 32 : 0.0
+R: 0 3 : 32 : 0.0
+R: 0 4 : 32 : 0.0
+R: 1 0 : 32 : 0.0
+R: 1 1 : 32 : 0.0
+R: 1 2 : 32 : 0.0
+R: 1 3 : 32 : 0.0
+R: 1 4 : 32 : 0.0
+R: 2 0 : 32 : 0.0
+R: 2 1 : 32 : 0.0
+R: 2 2 : 32 : 0.0
+R: 2 3 : 32 : 0.0
+R: 2 4 : 32 : 0.0
+R: 3 0 : 32 : 0.0
+R: 3 1 : 32 : 0.0
+R: 3 2 : 32 : 0.0
+R: 3 3 : 32 : 0.0
+R: 3 4 : 32 : 0.0
+R: 4 0 : 32 : 0.0
+R: 4 1 : 32 : 0.0
+R: 4 2 : 32 : 0.0
+R: 4 3 : 32 : 0.0
+R: 4 4 : 32 : 0.0
+R: 0 0 : 33 : 0.0
+R: 0 1 : 33 : 0.0
+R: 0 2 : 33 : 0.0
+R: 0 3 : 33 : 0.0
+R: 0 4 : 33 : 0.0
+R: 1 0 : 33 : 0.0
+R: 1 1 : 33 : 0.0
+R: 1 2 : 33 : 0.0
+R: 1 3 : 33 : 0.0
+R: 1 4 : 33 : 0.0
+R: 2 0 : 33 : 0.0
+R: 2 1 : 33 : 0.0
+R: 2 2 : 33 : 0.0
+R: 2 3 : 33 : 0.0
+R: 2 4 : 33 : 0.0
+R: 3 0 : 33 : 0.0
+R: 3 1 : 33 : 0.0
+R: 3 2 : 33 : 0.0
+R: 3 3 : 33 : 0.0
+R: 3 4 : 33 : 0.0
+R: 4 0 : 33 : 0.0
+R: 4 1 : 33 : 0.0
+R: 4 2 : 33 : 0.0
+R: 4 3 : 33 : 0.0
+R: 4 4 : 33 : 0.0
+R: 0 0 : 34 : 0.0
+R: 0 1 : 34 : 0.0
+R: 0 2 : 34 : 0.0
+R: 0 3 : 34 : 0.0
+R: 0 4 : 34 : 0.0
+R: 1 0 : 34 : 0.0
+R: 1 1 : 34 : 0.0
+R: 1 2 : 34 : 0.0
+R: 1 3 : 34 : 0.0
+R: 1 4 : 34 : 0.0
+R: 2 0 : 34 : 0.0
+R: 2 1 : 34 : 0.0
+R: 2 2 : 34 : 0.0
+R: 2 3 : 34 : 0.0
+R: 2 4 : 34 : 0.0
+R: 3 0 : 34 : 0.0
+R: 3 1 : 34 : 0.0
+R: 3 2 : 34 : 0.0
+R: 3 3 : 34 : 0.0
+R: 3 4 : 34 : 0.0
+R: 4 0 : 34 : 0.0
+R: 4 1 : 34 : 0.0
+R: 4 2 : 34 : 0.0
+R: 4 3 : 34 : 0.0
+R: 4 4 : 34 : 0.0
+R: 0 0 : 35 : 0.0
+R: 0 1 : 35 : 0.0
+R: 0 2 : 35 : 0.0
+R: 0 3 : 35 : 0.0
+R: 0 4 : 35 : 0.0
+R: 1 0 : 35 : 0.0
+R: 1 1 : 35 : 0.0
+R: 1 2 : 35 : 0.0
+R: 1 3 : 35 : 0.0
+R: 1 4 : 35 : 0.0
+R: 2 0 : 35 : 0.0
+R: 2 1 : 35 : 0.0
+R: 2 2 : 35 : 0.0
+R: 2 3 : 35 : 0.0
+R: 2 4 : 35 : 0.0
+R: 3 0 : 35 : 0.0
+R: 3 1 : 35 : 0.0
+R: 3 2 : 35 : 0.0
+R: 3 3 : 35 : 0.0
+R: 3 4 : 35 : 0.0
+R: 4 0 : 35 : 0.0
+R: 4 1 : 35 : 0.0
+R: 4 2 : 35 : 0.0
+R: 4 3 : 35 : 0.0
+R: 4 4 : 35 : 0.0
+R: 0 0 : 36 : 0.0
+R: 0 1 : 36 : 0.0
+R: 0 2 : 36 : 0.0
+R: 0 3 : 36 : 0.0
+R: 0 4 : 36 : 0.0
+R: 1 0 : 36 : 0.0
+R: 1 1 : 36 : 0.0
+R: 1 2 : 36 : 0.0
+R: 1 3 : 36 : 0.0
+R: 1 4 : 36 : 0.0
+R: 2 0 : 36 : 0.0
+R: 2 1 : 36 : 0.0
+R: 2 2 : 36 : 0.0
+R: 2 3 : 36 : 0.0
+R: 2 4 : 36 : 0.0
+R: 3 0 : 36 : 0.0
+R: 3 1 : 36 : 0.0
+R: 3 2 : 36 : 0.0
+R: 3 3 : 36 : 0.0
+R: 3 4 : 36 : 0.0
+R: 4 0 : 36 : 0.0
+R: 4 1 : 36 : 0.0
+R: 4 2 : 36 : 0.0
+R: 4 3 : 36 : 0.0
+R: 4 4 : 36 : 0.0
+R: 0 0 : 37 : 0.0
+R: 0 1 : 37 : 0.0
+R: 0 2 : 37 : 0.0
+R: 0 3 : 37 : 0.0
+R: 0 4 : 37 : 0.0
+R: 1 0 : 37 : 0.0
+R: 1 1 : 37 : 0.0
+R: 1 2 : 37 : 0.0
+R: 1 3 : 37 : 0.0
+R: 1 4 : 37 : 0.0
+R: 2 0 : 37 : 0.0
+R: 2 1 : 37 : 0.0
+R: 2 2 : 37 : 0.0
+R: 2 3 : 37 : 0.0
+R: 2 4 : 37 : 0.0
+R: 3 0 : 37 : 0.0
+R: 3 1 : 37 : 0.0
+R: 3 2 : 37 : 0.0
+R: 3 3 : 37 : 0.0
+R: 3 4 : 37 : 0.0
+R: 4 0 : 37 : 0.0
+R: 4 1 : 37 : 0.0
+R: 4 2 : 37 : 0.0
+R: 4 3 : 37 : 0.0
+R: 4 4 : 37 : 0.0
+R: 0 0 : 38 : 0.0
+R: 0 1 : 38 : 0.0
+R: 0 2 : 38 : 0.0
+R: 0 3 : 38 : 0.0
+R: 0 4 : 38 : 0.0
+R: 1 0 : 38 : 0.0
+R: 1 1 : 38 : 0.0
+R: 1 2 : 38 : 0.0
+R: 1 3 : 38 : 0.0
+R: 1 4 : 38 : 0.0
+R: 2 0 : 38 : 0.0
+R: 2 1 : 38 : 0.0
+R: 2 2 : 38 : 0.0
+R: 2 3 : 38 : 0.0
+R: 2 4 : 38 : 0.0
+R: 3 0 : 38 : 0.0
+R: 3 1 : 38 : 0.0
+R: 3 2 : 38 : 0.0
+R: 3 3 : 38 : 0.0
+R: 3 4 : 38 : 0.0
+R: 4 0 : 38 : 0.0
+R: 4 1 : 38 : 0.0
+R: 4 2 : 38 : 0.0
+R: 4 3 : 38 : 0.0
+R: 4 4 : 38 : 0.0
+R: 0 0 : 39 : 0.0
+R: 0 1 : 39 : 0.0
+R: 0 2 : 39 : 0.0
+R: 0 3 : 39 : 0.0
+R: 0 4 : 39 : 0.0
+R: 1 0 : 39 : 0.0
+R: 1 1 : 39 : 0.0
+R: 1 2 : 39 : 0.0
+R: 1 3 : 39 : 0.0
+R: 1 4 : 39 : 0.0
+R: 2 0 : 39 : 0.0
+R: 2 1 : 39 : 0.0
+R: 2 2 : 39 : 0.0
+R: 2 3 : 39 : 0.0
+R: 2 4 : 39 : 0.0
+R: 3 0 : 39 : 0.0
+R: 3 1 : 39 : 0.0
+R: 3 2 : 39 : 0.0
+R: 3 3 : 39 : 0.0
+R: 3 4 : 39 : 0.0
+R: 4 0 : 39 : 0.0
+R: 4 1 : 39 : 0.0
+R: 4 2 : 39 : 0.0
+R: 4 3 : 39 : 0.0
+R: 4 4 : 39 : 0.0
+R: 0 0 : 40 : 0.0
+R: 0 1 : 40 : 0.0
+R: 0 2 : 40 : 0.0
+R: 0 3 : 40 : 0.0
+R: 0 4 : 40 : 0.0
+R: 1 0 : 40 : 0.0
+R: 1 1 : 40 : 0.0
+R: 1 2 : 40 : 0.0
+R: 1 3 : 40 : 0.0
+R: 1 4 : 40 : 0.0
+R: 2 0 : 40 : 0.0
+R: 2 1 : 40 : 0.0
+R: 2 2 : 40 : 0.0
+R: 2 3 : 40 : 0.0
+R: 2 4 : 40 : 0.0
+R: 3 0 : 40 : 0.0
+R: 3 1 : 40 : 0.0
+R: 3 2 : 40 : 0.0
+R: 3 3 : 40 : 0.0
+R: 3 4 : 40 : 0.0
+R: 4 0 : 40 : 0.0
+R: 4 1 : 40 : 0.0
+R: 4 2 : 40 : 0.0
+R: 4 3 : 40 : 0.0
+R: 4 4 : 40 : 0.0
+R: 0 0 : 41 : 0.0
+R: 0 1 : 41 : 0.0
+R: 0 2 : 41 : 0.0
+R: 0 3 : 41 : 0.0
+R: 0 4 : 41 : 0.0
+R: 1 0 : 41 : 0.0
+R: 1 1 : 41 : 0.0
+R: 1 2 : 41 : 0.0
+R: 1 3 : 41 : 0.0
+R: 1 4 : 41 : 0.0
+R: 2 0 : 41 : 0.0
+R: 2 1 : 41 : 0.0
+R: 2 2 : 41 : 0.0
+R: 2 3 : 41 : 0.0
+R: 2 4 : 41 : 0.0
+R: 3 0 : 41 : 0.0
+R: 3 1 : 41 : 0.0
+R: 3 2 : 41 : 0.0
+R: 3 3 : 41 : 0.0
+R: 3 4 : 41 : 0.0
+R: 4 0 : 41 : 0.0
+R: 4 1 : 41 : 0.0
+R: 4 2 : 41 : 0.0
+R: 4 3 : 41 : 0.0
+R: 4 4 : 41 : 0.0
+R: 0 0 : 42 : 0.0
+R: 0 1 : 42 : 0.0
+R: 0 2 : 42 : 0.0
+R: 0 3 : 42 : 0.0
+R: 0 4 : 42 : 0.0
+R: 1 0 : 42 : 0.0
+R: 1 1 : 42 : 0.0
+R: 1 2 : 42 : 0.0
+R: 1 3 : 42 : 0.0
+R: 1 4 : 42 : 0.0
+R: 2 0 : 42 : 0.0
+R: 2 1 : 42 : 0.0
+R: 2 2 : 42 : 0.0
+R: 2 3 : 42 : 0.0
+R: 2 4 : 42 : 0.0
+R: 3 0 : 42 : 0.0
+R: 3 1 : 42 : 0.0
+R: 3 2 : 42 : 0.0
+R: 3 3 : 42 : 0.0
+R: 3 4 : 42 : 0.0
+R: 4 0 : 42 : 0.0
+R: 4 1 : 42 : 0.0
+R: 4 2 : 42 : 0.0
+R: 4 3 : 42 : 0.0
+R: 4 4 : 42 : 0.0
+R: 0 0 : 43 : 0.0
+R: 0 1 : 43 : 0.0
+R: 0 2 : 43 : 0.0
+R: 0 3 : 43 : 0.0
+R: 0 4 : 43 : 0.0
+R: 1 0 : 43 : 0.0
+R: 1 1 : 43 : 0.0
+R: 1 2 : 43 : 0.0
+R: 1 3 : 43 : 0.0
+R: 1 4 : 43 : 0.0
+R: 2 0 : 43 : 0.0
+R: 2 1 : 43 : 0.0
+R: 2 2 : 43 : 0.0
+R: 2 3 : 43 : 0.0
+R: 2 4 : 43 : 0.0
+R: 3 0 : 43 : 0.0
+R: 3 1 : 43 : 0.0
+R: 3 2 : 43 : 0.0
+R: 3 3 : 43 : 0.0
+R: 3 4 : 43 : 0.0
+R: 4 0 : 43 : 0.0
+R: 4 1 : 43 : 0.0
+R: 4 2 : 43 : 0.0
+R: 4 3 : 43 : 0.0
+R: 4 4 : 43 : 0.0
+R: 0 0 : 44 : 0.0
+R: 0 1 : 44 : 0.0
+R: 0 2 : 44 : 0.0
+R: 0 3 : 44 : 0.0
+R: 0 4 : 44 : 0.0
+R: 1 0 : 44 : 0.0
+R: 1 1 : 44 : 0.0
+R: 1 2 : 44 : 0.0
+R: 1 3 : 44 : 0.0
+R: 1 4 : 44 : 0.0
+R: 2 0 : 44 : 0.0
+R: 2 1 : 44 : 0.0
+R: 2 2 : 44 : 0.0
+R: 2 3 : 44 : 0.0
+R: 2 4 : 44 : 0.0
+R: 3 0 : 44 : 0.0
+R: 3 1 : 44 : 0.0
+R: 3 2 : 44 : 0.0
+R: 3 3 : 44 : 0.0
+R: 3 4 : 44 : 0.0
+R: 4 0 : 44 : 0.0
+R: 4 1 : 44 : 0.0
+R: 4 2 : 44 : 0.0
+R: 4 3 : 44 : 0.0
+R: 4 4 : 44 : 0.0
+R: 0 0 : 45 : 0.0
+R: 0 1 : 45 : 0.0
+R: 0 2 : 45 : 0.0
+R: 0 3 : 45 : 0.0
+R: 0 4 : 45 : 0.0
+R: 1 0 : 45 : 0.0
+R: 1 1 : 45 : 0.0
+R: 1 2 : 45 : 0.0
+R: 1 3 : 45 : 0.0
+R: 1 4 : 45 : 0.0
+R: 2 0 : 45 : 0.0
+R: 2 1 : 45 : 0.0
+R: 2 2 : 45 : 0.0
+R: 2 3 : 45 : 0.0
+R: 2 4 : 45 : 0.0
+R: 3 0 : 45 : 0.0
+R: 3 1 : 45 : 0.0
+R: 3 2 : 45 : 0.0
+R: 3 3 : 45 : 0.0
+R: 3 4 : 45 : 0.0
+R: 4 0 : 45 : 0.0
+R: 4 1 : 45 : 0.0
+R: 4 2 : 45 : 0.0
+R: 4 3 : 45 : 0.0
+R: 4 4 : 45 : 0.0
+R: 0 0 : 46 : 0.0
+R: 0 1 : 46 : 0.0
+R: 0 2 : 46 : 0.0
+R: 0 3 : 46 : 0.0
+R: 0 4 : 46 : 0.0
+R: 1 0 : 46 : 0.0
+R: 1 1 : 46 : 0.0
+R: 1 2 : 46 : 0.0
+R: 1 3 : 46 : 0.0
+R: 1 4 : 46 : 0.0
+R: 2 0 : 46 : 0.0
+R: 2 1 : 46 : 0.0
+R: 2 2 : 46 : 0.0
+R: 2 3 : 46 : 0.0
+R: 2 4 : 46 : 0.0
+R: 3 0 : 46 : 0.0
+R: 3 1 : 46 : 0.0
+R: 3 2 : 46 : 0.0
+R: 3 3 : 46 : 0.0
+R: 3 4 : 46 : 0.0
+R: 4 0 : 46 : 0.0
+R: 4 1 : 46 : 0.0
+R: 4 2 : 46 : 0.0
+R: 4 3 : 46 : 0.0
+R: 4 4 : 46 : 0.0
+R: 0 0 : 47 : 0.0
+R: 0 1 : 47 : 0.0
+R: 0 2 : 47 : 0.0
+R: 0 3 : 47 : 0.0
+R: 0 4 : 47 : 0.0
+R: 1 0 : 47 : 0.0
+R: 1 1 : 47 : 0.0
+R: 1 2 : 47 : 0.0
+R: 1 3 : 47 : 0.0
+R: 1 4 : 47 : 0.0
+R: 2 0 : 47 : 0.0
+R: 2 1 : 47 : 0.0
+R: 2 2 : 47 : 0.0
+R: 2 3 : 47 : 0.0
+R: 2 4 : 47 : 0.0
+R: 3 0 : 47 : 0.0
+R: 3 1 : 47 : 0.0
+R: 3 2 : 47 : 0.0
+R: 3 3 : 47 : 0.0
+R: 3 4 : 47 : 0.0
+R: 4 0 : 47 : 0.0
+R: 4 1 : 47 : 0.0
+R: 4 2 : 47 : 0.0
+R: 4 3 : 47 : 0.0
+R: 4 4 : 47 : 0.0
+R: 0 0 : 48 : 0.0
+R: 0 1 : 48 : 0.0
+R: 0 2 : 48 : 0.0
+R: 0 3 : 48 : 0.0
+R: 0 4 : 48 : 0.0
+R: 1 0 : 48 : 0.0
+R: 1 1 : 48 : 0.0
+R: 1 2 : 48 : 0.0
+R: 1 3 : 48 : 0.0
+R: 1 4 : 48 : 0.0
+R: 2 0 : 48 : 0.0
+R: 2 1 : 48 : 0.0
+R: 2 2 : 48 : 0.0
+R: 2 3 : 48 : 0.0
+R: 2 4 : 48 : 0.0
+R: 3 0 : 48 : 0.0
+R: 3 1 : 48 : 0.0
+R: 3 2 : 48 : 0.0
+R: 3 3 : 48 : 0.0
+R: 3 4 : 48 : 0.0
+R: 4 0 : 48 : 0.0
+R: 4 1 : 48 : 0.0
+R: 4 2 : 48 : 0.0
+R: 4 3 : 48 : 0.0
+R: 4 4 : 48 : 0.0
+R: 0 0 : 49 : 0.0
+R: 0 1 : 49 : 0.0
+R: 0 2 : 49 : 0.0
+R: 0 3 : 49 : 0.0
+R: 0 4 : 49 : 0.0
+R: 1 0 : 49 : 0.0
+R: 1 1 : 49 : 0.0
+R: 1 2 : 49 : 0.0
+R: 1 3 : 49 : 0.0
+R: 1 4 : 49 : 0.0
+R: 2 0 : 49 : 0.0
+R: 2 1 : 49 : 0.0
+R: 2 2 : 49 : 0.0
+R: 2 3 : 49 : 0.0
+R: 2 4 : 49 : 0.0
+R: 3 0 : 49 : 0.0
+R: 3 1 : 49 : 0.0
+R: 3 2 : 49 : 0.0
+R: 3 3 : 49 : 0.0
+R: 3 4 : 49 : 0.0
+R: 4 0 : 49 : 0.0
+R: 4 1 : 49 : 0.0
+R: 4 2 : 49 : 0.0
+R: 4 3 : 49 : 0.0
+R: 4 4 : 49 : 0.0
+R: 0 0 : 50 : 0.0
+R: 0 1 : 50 : 0.0
+R: 0 2 : 50 : 0.0
+R: 0 3 : 50 : 0.0
+R: 0 4 : 50 : 0.0
+R: 1 0 : 50 : 0.0
+R: 1 1 : 50 : 0.0
+R: 1 2 : 50 : 0.0
+R: 1 3 : 50 : 0.0
+R: 1 4 : 50 : 0.0
+R: 2 0 : 50 : 0.0
+R: 2 1 : 50 : 0.0
+R: 2 2 : 50 : 0.0
+R: 2 3 : 50 : 0.0
+R: 2 4 : 50 : 0.0
+R: 3 0 : 50 : 0.0
+R: 3 1 : 50 : 0.0
+R: 3 2 : 50 : 0.0
+R: 3 3 : 50 : 0.0
+R: 3 4 : 50 : 0.0
+R: 4 0 : 50 : 0.0
+R: 4 1 : 50 : 0.0
+R: 4 2 : 50 : 0.0
+R: 4 3 : 50 : 0.0
+R: 4 4 : 50 : 0.0
+R: 0 0 : 51 : 0.0
+R: 0 1 : 51 : 0.0
+R: 0 2 : 51 : 0.0
+R: 0 3 : 51 : 0.0
+R: 0 4 : 51 : 0.0
+R: 1 0 : 51 : 0.0
+R: 1 1 : 51 : 0.0
+R: 1 2 : 51 : 0.0
+R: 1 3 : 51 : 0.0
+R: 1 4 : 51 : 0.0
+R: 2 0 : 51 : 0.0
+R: 2 1 : 51 : 0.0
+R: 2 2 : 51 : 0.0
+R: 2 3 : 51 : 0.0
+R: 2 4 : 51 : 0.0
+R: 3 0 : 51 : 0.0
+R: 3 1 : 51 : 0.0
+R: 3 2 : 51 : 0.0
+R: 3 3 : 51 : 0.0
+R: 3 4 : 51 : 0.0
+R: 4 0 : 51 : 0.0
+R: 4 1 : 51 : 0.0
+R: 4 2 : 51 : 0.0
+R: 4 3 : 51 : 0.0
+R: 4 4 : 51 : 0.0
+R: 0 0 : 52 : 0.0
+R: 0 1 : 52 : 0.0
+R: 0 2 : 52 : 0.0
+R: 0 3 : 52 : 0.0
+R: 0 4 : 52 : 0.0
+R: 1 0 : 52 : 0.0
+R: 1 1 : 52 : 0.0
+R: 1 2 : 52 : 0.0
+R: 1 3 : 52 : 0.0
+R: 1 4 : 52 : 0.0
+R: 2 0 : 52 : 0.0
+R: 2 1 : 52 : 0.0
+R: 2 2 : 52 : 0.0
+R: 2 3 : 52 : 0.0
+R: 2 4 : 52 : 0.0
+R: 3 0 : 52 : 0.0
+R: 3 1 : 52 : 0.0
+R: 3 2 : 52 : 0.0
+R: 3 3 : 52 : 0.0
+R: 3 4 : 52 : 0.0
+R: 4 0 : 52 : 0.0
+R: 4 1 : 52 : 0.0
+R: 4 2 : 52 : 0.0
+R: 4 3 : 52 : 0.0
+R: 4 4 : 52 : 0.0
+R: 0 0 : 53 : 0.0
+R: 0 1 : 53 : 0.0
+R: 0 2 : 53 : 0.0
+R: 0 3 : 53 : 0.0
+R: 0 4 : 53 : 0.0
+R: 1 0 : 53 : 0.0
+R: 1 1 : 53 : 0.0
+R: 1 2 : 53 : 0.0
+R: 1 3 : 53 : 0.0
+R: 1 4 : 53 : 0.0
+R: 2 0 : 53 : 0.0
+R: 2 1 : 53 : 0.0
+R: 2 2 : 53 : 0.0
+R: 2 3 : 53 : 0.0
+R: 2 4 : 53 : 0.0
+R: 3 0 : 53 : 0.0
+R: 3 1 : 53 : 0.0
+R: 3 2 : 53 : 0.0
+R: 3 3 : 53 : 0.0
+R: 3 4 : 53 : 0.0
+R: 4 0 : 53 : 0.0
+R: 4 1 : 53 : 0.0
+R: 4 2 : 53 : 0.0
+R: 4 3 : 53 : 0.0
+R: 4 4 : 53 : 0.0
+R: 0 0 : 54 : 0.0
+R: 0 1 : 54 : 0.0
+R: 0 2 : 54 : 0.0
+R: 0 3 : 54 : 0.0
+R: 0 4 : 54 : 0.0
+R: 1 0 : 54 : 0.0
+R: 1 1 : 54 : 0.0
+R: 1 2 : 54 : 0.0
+R: 1 3 : 54 : 0.0
+R: 1 4 : 54 : 0.0
+R: 2 0 : 54 : 0.0
+R: 2 1 : 54 : 0.0
+R: 2 2 : 54 : 0.0
+R: 2 3 : 54 : 0.0
+R: 2 4 : 54 : 0.0
+R: 3 0 : 54 : 0.0
+R: 3 1 : 54 : 0.0
+R: 3 2 : 54 : 0.0
+R: 3 3 : 54 : 0.0
+R: 3 4 : 54 : 0.0
+R: 4 0 : 54 : 0.0
+R: 4 1 : 54 : 0.0
+R: 4 2 : 54 : 0.0
+R: 4 3 : 54 : 0.0
+R: 4 4 : 54 : 0.0
+R: 0 0 : 55 : 0.0
+R: 0 1 : 55 : 0.0
+R: 0 2 : 55 : 0.0
+R: 0 3 : 55 : 0.0
+R: 0 4 : 55 : 0.0
+R: 1 0 : 55 : 0.0
+R: 1 1 : 55 : 0.0
+R: 1 2 : 55 : 0.0
+R: 1 3 : 55 : 0.0
+R: 1 4 : 55 : 0.0
+R: 2 0 : 55 : 0.0
+R: 2 1 : 55 : 0.0
+R: 2 2 : 55 : 0.0
+R: 2 3 : 55 : 0.0
+R: 2 4 : 55 : 0.0
+R: 3 0 : 55 : 0.0
+R: 3 1 : 55 : 0.0
+R: 3 2 : 55 : 0.0
+R: 3 3 : 55 : 0.0
+R: 3 4 : 55 : 0.0
+R: 4 0 : 55 : 0.0
+R: 4 1 : 55 : 0.0
+R: 4 2 : 55 : 0.0
+R: 4 3 : 55 : 0.0
+R: 4 4 : 55 : 0.0
+R: 0 0 : 56 : 0.0
+R: 0 1 : 56 : 0.0
+R: 0 2 : 56 : 0.0
+R: 0 3 : 56 : 0.0
+R: 0 4 : 56 : 0.0
+R: 1 0 : 56 : 0.0
+R: 1 1 : 56 : 0.0
+R: 1 2 : 56 : 0.0
+R: 1 3 : 56 : 0.0
+R: 1 4 : 56 : 0.0
+R: 2 0 : 56 : 0.0
+R: 2 1 : 56 : 0.0
+R: 2 2 : 56 : 0.0
+R: 2 3 : 56 : 0.0
+R: 2 4 : 56 : 0.0
+R: 3 0 : 56 : 0.0
+R: 3 1 : 56 : 0.0
+R: 3 2 : 56 : 0.0
+R: 3 3 : 56 : 0.0
+R: 3 4 : 56 : 0.0
+R: 4 0 : 56 : 0.0
+R: 4 1 : 56 : 0.0
+R: 4 2 : 56 : 0.0
+R: 4 3 : 56 : 0.0
+R: 4 4 : 56 : 0.0
+R: 0 0 : 57 : 0.0
+R: 0 1 : 57 : 0.0
+R: 0 2 : 57 : 0.0
+R: 0 3 : 57 : 0.0
+R: 0 4 : 57 : 0.0
+R: 1 0 : 57 : 0.0
+R: 1 1 : 57 : 0.0
+R: 1 2 : 57 : 0.0
+R: 1 3 : 57 : 0.0
+R: 1 4 : 57 : 0.0
+R: 2 0 : 57 : 0.0
+R: 2 1 : 57 : 0.0
+R: 2 2 : 57 : 0.0
+R: 2 3 : 57 : 0.0
+R: 2 4 : 57 : 0.0
+R: 3 0 : 57 : 0.0
+R: 3 1 : 57 : 0.0
+R: 3 2 : 57 : 0.0
+R: 3 3 : 57 : 0.0
+R: 3 4 : 57 : 0.0
+R: 4 0 : 57 : 0.0
+R: 4 1 : 57 : 0.0
+R: 4 2 : 57 : 0.0
+R: 4 3 : 57 : 0.0
+R: 4 4 : 57 : 0.0
+R: 0 0 : 58 : 0.0
+R: 0 1 : 58 : 0.0
+R: 0 2 : 58 : 0.0
+R: 0 3 : 58 : 0.0
+R: 0 4 : 58 : 0.0
+R: 1 0 : 58 : 0.0
+R: 1 1 : 58 : 0.0
+R: 1 2 : 58 : 0.0
+R: 1 3 : 58 : 0.0
+R: 1 4 : 58 : 0.0
+R: 2 0 : 58 : 0.0
+R: 2 1 : 58 : 0.0
+R: 2 2 : 58 : 0.0
+R: 2 3 : 58 : 0.0
+R: 2 4 : 58 : 0.0
+R: 3 0 : 58 : 0.0
+R: 3 1 : 58 : 0.0
+R: 3 2 : 58 : 0.0
+R: 3 3 : 58 : 0.0
+R: 3 4 : 58 : 0.0
+R: 4 0 : 58 : 0.0
+R: 4 1 : 58 : 0.0
+R: 4 2 : 58 : 0.0
+R: 4 3 : 58 : 0.0
+R: 4 4 : 58 : 0.0
+R: 0 0 : 59 : 0.0
+R: 0 1 : 59 : 0.0
+R: 0 2 : 59 : 0.0
+R: 0 3 : 59 : 0.0
+R: 0 4 : 59 : 0.0
+R: 1 0 : 59 : 0.0
+R: 1 1 : 59 : 0.0
+R: 1 2 : 59 : 0.0
+R: 1 3 : 59 : 0.0
+R: 1 4 : 59 : 0.0
+R: 2 0 : 59 : 0.0
+R: 2 1 : 59 : 0.0
+R: 2 2 : 59 : 0.0
+R: 2 3 : 59 : 0.0
+R: 2 4 : 59 : 0.0
+R: 3 0 : 59 : 0.0
+R: 3 1 : 59 : 0.0
+R: 3 2 : 59 : 0.0
+R: 3 3 : 59 : 0.0
+R: 3 4 : 59 : 0.0
+R: 4 0 : 59 : 0.0
+R: 4 1 : 59 : 0.0
+R: 4 2 : 59 : 0.0
+R: 4 3 : 59 : 0.0
+R: 4 4 : 59 : 0.0
+R: 0 0 : 60 : 0.0
+R: 0 1 : 60 : 0.0
+R: 0 2 : 60 : 0.0
+R: 0 3 : 60 : 0.0
+R: 0 4 : 60 : 0.0
+R: 1 0 : 60 : 0.0
+R: 1 1 : 60 : 0.0
+R: 1 2 : 60 : 0.0
+R: 1 3 : 60 : 0.0
+R: 1 4 : 60 : 0.0
+R: 2 0 : 60 : 0.0
+R: 2 1 : 60 : 0.0
+R: 2 2 : 60 : 0.0
+R: 2 3 : 60 : 0.0
+R: 2 4 : 60 : 0.0
+R: 3 0 : 60 : 0.0
+R: 3 1 : 60 : 0.0
+R: 3 2 : 60 : 0.0
+R: 3 3 : 60 : 0.0
+R: 3 4 : 60 : 0.0
+R: 4 0 : 60 : 0.0
+R: 4 1 : 60 : 0.0
+R: 4 2 : 60 : 0.0
+R: 4 3 : 60 : 0.0
+R: 4 4 : 60 : 0.0
+R: 0 0 : 61 : 0.0
+R: 0 1 : 61 : 0.0
+R: 0 2 : 61 : 0.0
+R: 0 3 : 61 : 0.0
+R: 0 4 : 61 : 0.0
+R: 1 0 : 61 : 0.0
+R: 1 1 : 61 : 0.0
+R: 1 2 : 61 : 0.0
+R: 1 3 : 61 : 0.0
+R: 1 4 : 61 : 0.0
+R: 2 0 : 61 : 0.0
+R: 2 1 : 61 : 0.0
+R: 2 2 : 61 : 0.0
+R: 2 3 : 61 : 0.0
+R: 2 4 : 61 : 0.0
+R: 3 0 : 61 : 0.0
+R: 3 1 : 61 : 0.0
+R: 3 2 : 61 : 0.0
+R: 3 3 : 61 : 0.0
+R: 3 4 : 61 : 0.0
+R: 4 0 : 61 : 0.0
+R: 4 1 : 61 : 0.0
+R: 4 2 : 61 : 0.0
+R: 4 3 : 61 : 0.0
+R: 4 4 : 61 : 0.0
+R: 0 0 : 62 : 0.0
+R: 0 1 : 62 : 0.0
+R: 0 2 : 62 : 0.0
+R: 0 3 : 62 : 0.0
+R: 0 4 : 62 : 0.0
+R: 1 0 : 62 : 0.0
+R: 1 1 : 62 : 0.0
+R: 1 2 : 62 : 0.0
+R: 1 3 : 62 : 0.0
+R: 1 4 : 62 : 0.0
+R: 2 0 : 62 : 0.0
+R: 2 1 : 62 : 0.0
+R: 2 2 : 62 : 0.0
+R: 2 3 : 62 : 0.0
+R: 2 4 : 62 : 0.0
+R: 3 0 : 62 : 0.0
+R: 3 1 : 62 : 0.0
+R: 3 2 : 62 : 0.0
+R: 3 3 : 62 : 0.0
+R: 3 4 : 62 : 0.0
+R: 4 0 : 62 : 0.0
+R: 4 1 : 62 : 0.0
+R: 4 2 : 62 : 0.0
+R: 4 3 : 62 : 0.0
+R: 4 4 : 62 : 0.0
+R: 0 0 : 63 : 0.0
+R: 0 1 : 63 : 0.0
+R: 0 2 : 63 : 0.0
+R: 0 3 : 63 : 0.0
+R: 0 4 : 63 : 0.0
+R: 1 0 : 63 : 0.0
+R: 1 1 : 63 : 0.0
+R: 1 2 : 63 : 0.0
+R: 1 3 : 63 : 0.0
+R: 1 4 : 63 : 0.0
+R: 2 0 : 63 : 0.0
+R: 2 1 : 63 : 0.0
+R: 2 2 : 63 : 0.0
+R: 2 3 : 63 : 0.0
+R: 2 4 : 63 : 0.0
+R: 3 0 : 63 : 0.0
+R: 3 1 : 63 : 0.0
+R: 3 2 : 63 : 0.0
+R: 3 3 : 63 : 0.0
+R: 3 4 : 63 : 0.0
+R: 4 0 : 63 : 0.0
+R: 4 1 : 63 : 0.0
+R: 4 2 : 63 : 0.0
+R: 4 3 : 63 : 0.0
+R: 4 4 : 63 : 0.0
+R: 0 0 : 64 : 0.0
+R: 0 1 : 64 : 0.0
+R: 0 2 : 64 : 0.0
+R: 0 3 : 64 : 0.0
+R: 0 4 : 64 : 0.0
+R: 1 0 : 64 : 0.0
+R: 1 1 : 64 : 0.0
+R: 1 2 : 64 : 0.0
+R: 1 3 : 64 : 0.0
+R: 1 4 : 64 : 0.0
+R: 2 0 : 64 : 0.0
+R: 2 1 : 64 : 0.0
+R: 2 2 : 64 : 0.0
+R: 2 3 : 64 : 0.0
+R: 2 4 : 64 : 0.0
+R: 3 0 : 64 : 0.0
+R: 3 1 : 64 : 0.0
+R: 3 2 : 64 : 0.0
+R: 3 3 : 64 : 0.0
+R: 3 4 : 64 : 0.0
+R: 4 0 : 64 : 0.0
+R: 4 1 : 64 : 0.0
+R: 4 2 : 64 : 0.0
+R: 4 3 : 64 : 0.0
+R: 4 4 : 64 : 0.0
+R: 0 0 : 65 : 0.0
+R: 0 1 : 65 : 0.0
+R: 0 2 : 65 : 0.0
+R: 0 3 : 65 : 0.0
+R: 0 4 : 65 : 0.0
+R: 1 0 : 65 : 0.0
+R: 1 1 : 65 : 0.0
+R: 1 2 : 65 : 0.0
+R: 1 3 : 65 : 0.0
+R: 1 4 : 65 : 0.0
+R: 2 0 : 65 : 0.0
+R: 2 1 : 65 : 0.0
+R: 2 2 : 65 : 0.0
+R: 2 3 : 65 : 0.0
+R: 2 4 : 65 : 0.0
+R: 3 0 : 65 : 0.0
+R: 3 1 : 65 : 0.0
+R: 3 2 : 65 : 0.0
+R: 3 3 : 65 : 0.0
+R: 3 4 : 65 : 0.0
+R: 4 0 : 65 : 0.0
+R: 4 1 : 65 : 0.0
+R: 4 2 : 65 : 0.0
+R: 4 3 : 65 : 0.0
+R: 4 4 : 65 : 0.0
+R: 0 0 : 66 : 0.0
+R: 0 1 : 66 : 0.0
+R: 0 2 : 66 : 0.0
+R: 0 3 : 66 : 0.0
+R: 0 4 : 66 : 0.0
+R: 1 0 : 66 : 0.0
+R: 1 1 : 66 : 0.0
+R: 1 2 : 66 : 0.0
+R: 1 3 : 66 : 0.0
+R: 1 4 : 66 : 0.0
+R: 2 0 : 66 : 0.0
+R: 2 1 : 66 : 0.0
+R: 2 2 : 66 : 0.0
+R: 2 3 : 66 : 0.0
+R: 2 4 : 66 : 0.0
+R: 3 0 : 66 : 0.0
+R: 3 1 : 66 : 0.0
+R: 3 2 : 66 : 0.0
+R: 3 3 : 66 : 0.0
+R: 3 4 : 66 : 0.0
+R: 4 0 : 66 : 0.0
+R: 4 1 : 66 : 0.0
+R: 4 2 : 66 : 0.0
+R: 4 3 : 66 : 0.0
+R: 4 4 : 66 : 0.0
+R: 0 0 : 67 : 0.0
+R: 0 1 : 67 : 0.0
+R: 0 2 : 67 : 0.0
+R: 0 3 : 67 : 0.0
+R: 0 4 : 67 : 0.0
+R: 1 0 : 67 : 0.0
+R: 1 1 : 67 : 0.0
+R: 1 2 : 67 : 0.0
+R: 1 3 : 67 : 0.0
+R: 1 4 : 67 : 0.0
+R: 2 0 : 67 : 0.0
+R: 2 1 : 67 : 0.0
+R: 2 2 : 67 : 0.0
+R: 2 3 : 67 : 0.0
+R: 2 4 : 67 : 0.0
+R: 3 0 : 67 : 0.0
+R: 3 1 : 67 : 0.0
+R: 3 2 : 67 : 0.0
+R: 3 3 : 67 : 0.0
+R: 3 4 : 67 : 0.0
+R: 4 0 : 67 : 0.0
+R: 4 1 : 67 : 0.0
+R: 4 2 : 67 : 0.0
+R: 4 3 : 67 : 0.0
+R: 4 4 : 67 : 0.0
+R: 0 0 : 68 : 0.0
+R: 0 1 : 68 : 0.0
+R: 0 2 : 68 : 0.0
+R: 0 3 : 68 : 0.0
+R: 0 4 : 68 : 0.0
+R: 1 0 : 68 : 0.0
+R: 1 1 : 68 : 0.0
+R: 1 2 : 68 : 0.0
+R: 1 3 : 68 : 0.0
+R: 1 4 : 68 : 0.0
+R: 2 0 : 68 : 0.0
+R: 2 1 : 68 : 0.0
+R: 2 2 : 68 : 0.0
+R: 2 3 : 68 : 0.0
+R: 2 4 : 68 : 0.0
+R: 3 0 : 68 : 0.0
+R: 3 1 : 68 : 0.0
+R: 3 2 : 68 : 0.0
+R: 3 3 : 68 : 0.0
+R: 3 4 : 68 : 0.0
+R: 4 0 : 68 : 0.0
+R: 4 1 : 68 : 0.0
+R: 4 2 : 68 : 0.0
+R: 4 3 : 68 : 0.0
+R: 4 4 : 68 : 0.0
+R: 0 0 : 69 : 0.0
+R: 0 1 : 69 : 0.0
+R: 0 2 : 69 : 0.0
+R: 0 3 : 69 : 0.0
+R: 0 4 : 69 : 0.0
+R: 1 0 : 69 : 0.0
+R: 1 1 : 69 : 0.0
+R: 1 2 : 69 : 0.0
+R: 1 3 : 69 : 0.0
+R: 1 4 : 69 : 0.0
+R: 2 0 : 69 : 0.0
+R: 2 1 : 69 : 0.0
+R: 2 2 : 69 : 0.0
+R: 2 3 : 69 : 0.0
+R: 2 4 : 69 : 0.0
+R: 3 0 : 69 : 0.0
+R: 3 1 : 69 : 0.0
+R: 3 2 : 69 : 0.0
+R: 3 3 : 69 : 0.0
+R: 3 4 : 69 : 0.0
+R: 4 0 : 69 : 0.0
+R: 4 1 : 69 : 0.0
+R: 4 2 : 69 : 0.0
+R: 4 3 : 69 : 0.0
+R: 4 4 : 69 : 0.0
+R: 0 0 : 70 : 0.0
+R: 0 1 : 70 : 0.0
+R: 0 2 : 70 : 0.0
+R: 0 3 : 70 : 0.0
+R: 0 4 : 70 : 0.0
+R: 1 0 : 70 : 0.0
+R: 1 1 : 70 : 0.0
+R: 1 2 : 70 : 0.0
+R: 1 3 : 70 : 0.0
+R: 1 4 : 70 : 0.0
+R: 2 0 : 70 : 0.0
+R: 2 1 : 70 : 0.0
+R: 2 2 : 70 : 0.0
+R: 2 3 : 70 : 0.0
+R: 2 4 : 70 : 0.0
+R: 3 0 : 70 : 0.0
+R: 3 1 : 70 : 0.0
+R: 3 2 : 70 : 0.0
+R: 3 3 : 70 : 0.0
+R: 3 4 : 70 : 0.0
+R: 4 0 : 70 : 0.0
+R: 4 1 : 70 : 0.0
+R: 4 2 : 70 : 0.0
+R: 4 3 : 70 : 0.0
+R: 4 4 : 70 : 0.0
+R: 0 0 : 71 : 0.0
+R: 0 1 : 71 : 0.0
+R: 0 2 : 71 : 0.0
+R: 0 3 : 71 : 0.0
+R: 0 4 : 71 : 0.0
+R: 1 0 : 71 : 0.0
+R: 1 1 : 71 : 0.0
+R: 1 2 : 71 : 0.0
+R: 1 3 : 71 : 0.0
+R: 1 4 : 71 : 0.0
+R: 2 0 : 71 : 0.0
+R: 2 1 : 71 : 0.0
+R: 2 2 : 71 : 0.0
+R: 2 3 : 71 : 0.0
+R: 2 4 : 71 : 0.0
+R: 3 0 : 71 : 0.0
+R: 3 1 : 71 : 0.0
+R: 3 2 : 71 : 0.0
+R: 3 3 : 71 : 0.0
+R: 3 4 : 71 : 0.0
+R: 4 0 : 71 : 0.0
+R: 4 1 : 71 : 0.0
+R: 4 2 : 71 : 0.0
+R: 4 3 : 71 : 0.0
+R: 4 4 : 71 : 0.0
+R: 0 0 : 72 : 0.0
+R: 0 1 : 72 : 0.0
+R: 0 2 : 72 : 0.0
+R: 0 3 : 72 : 0.0
+R: 0 4 : 72 : 0.0
+R: 1 0 : 72 : 0.0
+R: 1 1 : 72 : 0.0
+R: 1 2 : 72 : 0.0
+R: 1 3 : 72 : 0.0
+R: 1 4 : 72 : 0.0
+R: 2 0 : 72 : 0.0
+R: 2 1 : 72 : 0.0
+R: 2 2 : 72 : 0.0
+R: 2 3 : 72 : 0.0
+R: 2 4 : 72 : 0.0
+R: 3 0 : 72 : 0.0
+R: 3 1 : 72 : 0.0
+R: 3 2 : 72 : 0.0
+R: 3 3 : 72 : 0.0
+R: 3 4 : 72 : 0.0
+R: 4 0 : 72 : 0.0
+R: 4 1 : 72 : 0.0
+R: 4 2 : 72 : 0.0
+R: 4 3 : 72 : 0.0
+R: 4 4 : 72 : 0.0
+R: 0 0 : 73 : 0.0
+R: 0 1 : 73 : 0.0
+R: 0 2 : 73 : 0.0
+R: 0 3 : 73 : 0.0
+R: 0 4 : 73 : 0.0
+R: 1 0 : 73 : 0.0
+R: 1 1 : 73 : 0.0
+R: 1 2 : 73 : 0.0
+R: 1 3 : 73 : 0.0
+R: 1 4 : 73 : 0.0
+R: 2 0 : 73 : 0.0
+R: 2 1 : 73 : 0.0
+R: 2 2 : 73 : 0.0
+R: 2 3 : 73 : 0.0
+R: 2 4 : 73 : 0.0
+R: 3 0 : 73 : 0.0
+R: 3 1 : 73 : 0.0
+R: 3 2 : 73 : 0.0
+R: 3 3 : 73 : 0.0
+R: 3 4 : 73 : 0.0
+R: 4 0 : 73 : 0.0
+R: 4 1 : 73 : 0.0
+R: 4 2 : 73 : 0.0
+R: 4 3 : 73 : 0.0
+R: 4 4 : 73 : 0.0
+R: 0 0 : 74 : 0.0
+R: 0 1 : 74 : 0.0
+R: 0 2 : 74 : 0.0
+R: 0 3 : 74 : 0.0
+R: 0 4 : 74 : 0.0
+R: 1 0 : 74 : 0.0
+R: 1 1 : 74 : 0.0
+R: 1 2 : 74 : 0.0
+R: 1 3 : 74 : 0.0
+R: 1 4 : 74 : 0.0
+R: 2 0 : 74 : 0.0
+R: 2 1 : 74 : 0.0
+R: 2 2 : 74 : 0.0
+R: 2 3 : 74 : 0.0
+R: 2 4 : 74 : 0.0
+R: 3 0 : 74 : 0.0
+R: 3 1 : 74 : 0.0
+R: 3 2 : 74 : 0.0
+R: 3 3 : 74 : 0.0
+R: 3 4 : 74 : 0.0
+R: 4 0 : 74 : 0.0
+R: 4 1 : 74 : 0.0
+R: 4 2 : 74 : 0.0
+R: 4 3 : 74 : 0.0
+R: 4 4 : 74 : 0.0
+R: 0 0 : 75 : 0.0
+R: 0 1 : 75 : 0.0
+R: 0 2 : 75 : 0.0
+R: 0 3 : 75 : 0.0
+R: 0 4 : 75 : 0.0
+R: 1 0 : 75 : 0.0
+R: 1 1 : 75 : 0.0
+R: 1 2 : 75 : 0.0
+R: 1 3 : 75 : 0.0
+R: 1 4 : 75 : 0.0
+R: 2 0 : 75 : 0.0
+R: 2 1 : 75 : 0.0
+R: 2 2 : 75 : 0.0
+R: 2 3 : 75 : 0.0
+R: 2 4 : 75 : 0.0
+R: 3 0 : 75 : 0.0
+R: 3 1 : 75 : 0.0
+R: 3 2 : 75 : 0.0
+R: 3 3 : 75 : 0.0
+R: 3 4 : 75 : 0.0
+R: 4 0 : 75 : 0.0
+R: 4 1 : 75 : 0.0
+R: 4 2 : 75 : 0.0
+R: 4 3 : 75 : 0.0
+R: 4 4 : 75 : 0.0
+R: 0 0 : 76 : 0.0
+R: 0 1 : 76 : 0.0
+R: 0 2 : 76 : 0.0
+R: 0 3 : 76 : 0.0
+R: 0 4 : 76 : 0.0
+R: 1 0 : 76 : 0.0
+R: 1 1 : 76 : 0.0
+R: 1 2 : 76 : 0.0
+R: 1 3 : 76 : 0.0
+R: 1 4 : 76 : 0.0
+R: 2 0 : 76 : 0.0
+R: 2 1 : 76 : 0.0
+R: 2 2 : 76 : 0.0
+R: 2 3 : 76 : 0.0
+R: 2 4 : 76 : 0.0
+R: 3 0 : 76 : 0.0
+R: 3 1 : 76 : 0.0
+R: 3 2 : 76 : 0.0
+R: 3 3 : 76 : 0.0
+R: 3 4 : 76 : 0.0
+R: 4 0 : 76 : 0.0
+R: 4 1 : 76 : 0.0
+R: 4 2 : 76 : 0.0
+R: 4 3 : 76 : 0.0
+R: 4 4 : 76 : 0.0
+R: 0 0 : 77 : 0.0
+R: 0 1 : 77 : 0.0
+R: 0 2 : 77 : 0.0
+R: 0 3 : 77 : 0.0
+R: 0 4 : 77 : 0.0
+R: 1 0 : 77 : 0.0
+R: 1 1 : 77 : 0.0
+R: 1 2 : 77 : 0.0
+R: 1 3 : 77 : 0.0
+R: 1 4 : 77 : 0.0
+R: 2 0 : 77 : 0.0
+R: 2 1 : 77 : 0.0
+R: 2 2 : 77 : 0.0
+R: 2 3 : 77 : 0.0
+R: 2 4 : 77 : 0.0
+R: 3 0 : 77 : 0.0
+R: 3 1 : 77 : 0.0
+R: 3 2 : 77 : 0.0
+R: 3 3 : 77 : 0.0
+R: 3 4 : 77 : 0.0
+R: 4 0 : 77 : 0.0
+R: 4 1 : 77 : 0.0
+R: 4 2 : 77 : 0.0
+R: 4 3 : 77 : 0.0
+R: 4 4 : 77 : 0.0
+R: 0 0 : 78 : 0.0
+R: 0 1 : 78 : 0.0
+R: 0 2 : 78 : 0.0
+R: 0 3 : 78 : 0.0
+R: 0 4 : 78 : 0.0
+R: 1 0 : 78 : 0.0
+R: 1 1 : 78 : 0.0
+R: 1 2 : 78 : 0.0
+R: 1 3 : 78 : 0.0
+R: 1 4 : 78 : 0.0
+R: 2 0 : 78 : 0.0
+R: 2 1 : 78 : 0.0
+R: 2 2 : 78 : 0.0
+R: 2 3 : 78 : 0.0
+R: 2 4 : 78 : 0.0
+R: 3 0 : 78 : 0.0
+R: 3 1 : 78 : 0.0
+R: 3 2 : 78 : 0.0
+R: 3 3 : 78 : 0.0
+R: 3 4 : 78 : 0.0
+R: 4 0 : 78 : 0.0
+R: 4 1 : 78 : 0.0
+R: 4 2 : 78 : 0.0
+R: 4 3 : 78 : 0.0
+R: 4 4 : 78 : 0.0
+R: 0 0 : 79 : 0.0
+R: 0 1 : 79 : 0.0
+R: 0 2 : 79 : 0.0
+R: 0 3 : 79 : 0.0
+R: 0 4 : 79 : 0.0
+R: 1 0 : 79 : 0.0
+R: 1 1 : 79 : 0.0
+R: 1 2 : 79 : 0.0
+R: 1 3 : 79 : 0.0
+R: 1 4 : 79 : 0.0
+R: 2 0 : 79 : 0.0
+R: 2 1 : 79 : 0.0
+R: 2 2 : 79 : 0.0
+R: 2 3 : 79 : 0.0
+R: 2 4 : 79 : 0.0
+R: 3 0 : 79 : 0.0
+R: 3 1 : 79 : 0.0
+R: 3 2 : 79 : 0.0
+R: 3 3 : 79 : 0.0
+R: 3 4 : 79 : 0.0
+R: 4 0 : 79 : 0.0
+R: 4 1 : 79 : 0.0
+R: 4 2 : 79 : 0.0
+R: 4 3 : 79 : 0.0
+R: 4 4 : 79 : 0.0
+R: 0 0 : 80 : 1.0
+R: 0 1 : 80 : 1.0
+R: 0 2 : 80 : 1.0
+R: 0 3 : 80 : 1.0
+R: 0 4 : 80 : 1.0
+R: 1 0 : 80 : 1.0
+R: 1 1 : 80 : 1.0
+R: 1 2 : 80 : 1.0
+R: 1 3 : 80 : 1.0
+R: 1 4 : 80 : 1.0
+R: 2 0 : 80 : 1.0
+R: 2 1 : 80 : 1.0
+R: 2 2 : 80 : 1.0
+R: 2 3 : 80 : 1.0
+R: 2 4 : 80 : 1.0
+R: 3 0 : 80 : 1.0
+R: 3 1 : 80 : 1.0
+R: 3 2 : 80 : 1.0
+R: 3 3 : 80 : 1.0
+R: 3 4 : 80 : 1.0
+R: 4 0 : 80 : 1.0
+R: 4 1 : 80 : 1.0
+R: 4 2 : 80 : 1.0
+R: 4 3 : 80 : 1.0
+R: 4 4 : 80 : 1.0
diff --git a/code/src/problem_examples/dpomdp/Grid3x3corners_light.dpomdp b/code/src/problem_examples/dpomdp/Grid3x3corners_light.dpomdp
new file mode 100644
index 0000000000000000000000000000000000000000..e6f5fcd7919025b745206a8d4d296f96451fdb78
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/Grid3x3corners_light.dpomdp
@@ -0,0 +1,23941 @@
+agents: 2
+discount: 1
+states: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 
+actions:
+0 1 2 3 4 
+0 1 2 3 4 
+observations:
+0 1 2 3 4 5 6 7 8 
+0 1 2 3 4 5 6 7 8 
+start: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+T: 4 4 : 80 : 80 : 1
+T: 4 4 : 79 : 79 : 1
+T: 4 4 : 78 : 78 : 1
+T: 4 4 : 35 : 35 : 1
+T: 4 4 : 34 : 34 : 1
+T: 4 4 : 33 : 33 : 1
+T: 4 4 : 32 : 32 : 1
+T: 4 4 : 31 : 31 : 1
+T: 4 4 : 30 : 30 : 1
+T: 4 4 : 29 : 29 : 1
+T: 4 4 : 28 : 28 : 1
+T: 4 4 : 27 : 27 : 1
+T: 4 4 : 26 : 26 : 1
+T: 4 4 : 25 : 25 : 1
+T: 4 4 : 24 : 24 : 1
+T: 4 4 : 23 : 23 : 1
+T: 4 4 : 22 : 22 : 1
+T: 4 4 : 21 : 21 : 1
+T: 4 4 : 20 : 20 : 1
+T: 4 4 : 19 : 19 : 1
+T: 4 4 : 18 : 18 : 1
+T: 4 4 : 17 : 17 : 1
+T: 4 4 : 16 : 16 : 1
+T: 4 4 : 5 : 5 : 1
+T: 4 4 : 4 : 4 : 1
+T: 4 4 : 3 : 3 : 1
+T: 4 4 : 2 : 2 : 1
+T: 4 4 : 0 : 0 : 1
+T: 4 4 : 1 : 1 : 1
+T: 4 4 : 6 : 6 : 1
+T: 4 4 : 7 : 7 : 1
+T: 4 4 : 8 : 8 : 1
+T: 4 4 : 9 : 9 : 1
+T: 4 4 : 10 : 10 : 1
+T: 4 4 : 11 : 11 : 1
+T: 4 4 : 12 : 12 : 1
+T: 4 4 : 13 : 13 : 1
+T: 4 4 : 14 : 14 : 1
+T: 4 4 : 15 : 15 : 1
+T: 4 4 : 36 : 36 : 1
+T: 4 4 : 37 : 37 : 1
+T: 4 4 : 38 : 38 : 1
+T: 4 4 : 39 : 39 : 1
+T: 4 4 : 40 : 40 : 1
+T: 4 4 : 41 : 41 : 1
+T: 4 4 : 42 : 42 : 1
+T: 4 4 : 43 : 43 : 1
+T: 4 4 : 44 : 44 : 1
+T: 4 4 : 45 : 45 : 1
+T: 4 4 : 46 : 46 : 1
+T: 4 4 : 47 : 47 : 1
+T: 4 4 : 48 : 48 : 1
+T: 4 4 : 49 : 49 : 1
+T: 4 4 : 50 : 50 : 1
+T: 4 4 : 51 : 51 : 1
+T: 4 4 : 52 : 52 : 1
+T: 4 4 : 53 : 53 : 1
+T: 4 4 : 54 : 54 : 1
+T: 4 4 : 55 : 55 : 1
+T: 4 4 : 56 : 56 : 1
+T: 4 4 : 57 : 57 : 1
+T: 4 4 : 58 : 58 : 1
+T: 4 4 : 59 : 59 : 1
+T: 4 4 : 60 : 60 : 1
+T: 4 4 : 61 : 61 : 1
+T: 4 4 : 62 : 62 : 1
+T: 4 4 : 63 : 63 : 1
+T: 4 4 : 64 : 64 : 1
+T: 4 4 : 65 : 65 : 1
+T: 4 4 : 66 : 66 : 1
+T: 4 4 : 67 : 67 : 1
+T: 4 4 : 68 : 68 : 1
+T: 4 4 : 69 : 69 : 1
+T: 4 4 : 70 : 70 : 1
+T: 4 4 : 71 : 71 : 1
+T: 4 4 : 72 : 72 : 1
+T: 4 4 : 73 : 73 : 1
+T: 4 4 : 74 : 74 : 1
+T: 4 4 : 75 : 75 : 1
+T: 4 4 : 76 : 76 : 1
+T: 4 4 : 77 : 77 : 1
+T: 4 3 : 80 : 80 : 0.8
+T: 4 3 : 80 : 77 : 0.1
+T: 4 3 : 80 : 79 : 0.1
+T: 4 3 : 79 : 80 : 0.6
+T: 4 3 : 79 : 79 : 0.2
+T: 4 3 : 79 : 76 : 0.1
+T: 4 3 : 79 : 78 : 0.1
+T: 4 3 : 78 : 79 : 0.6
+T: 4 3 : 78 : 75 : 0.1
+T: 4 3 : 78 : 78 : 0.3
+T: 4 3 : 35 : 35 : 0.8
+T: 4 3 : 35 : 32 : 0.1
+T: 4 3 : 35 : 34 : 0.1
+T: 4 3 : 34 : 35 : 0.6
+T: 4 3 : 34 : 34 : 0.2
+T: 4 3 : 34 : 31 : 0.1
+T: 4 3 : 34 : 33 : 0.1
+T: 4 3 : 33 : 34 : 0.6
+T: 4 3 : 33 : 30 : 0.1
+T: 4 3 : 33 : 33 : 0.3
+T: 4 3 : 32 : 35 : 0.1
+T: 4 3 : 32 : 32 : 0.7
+T: 4 3 : 32 : 29 : 0.1
+T: 4 3 : 32 : 31 : 0.1
+T: 4 3 : 31 : 34 : 0.1
+T: 4 3 : 31 : 32 : 0.6
+T: 4 3 : 31 : 31 : 0.1
+T: 4 3 : 31 : 28 : 0.1
+T: 4 3 : 31 : 30 : 0.1
+T: 4 3 : 30 : 33 : 0.1
+T: 4 3 : 30 : 31 : 0.6
+T: 4 3 : 30 : 27 : 0.1
+T: 4 3 : 30 : 30 : 0.2
+T: 4 3 : 29 : 32 : 0.1
+T: 4 3 : 29 : 28 : 0.1
+T: 4 3 : 29 : 29 : 0.8
+T: 4 3 : 28 : 31 : 0.1
+T: 4 3 : 28 : 29 : 0.6
+T: 4 3 : 28 : 27 : 0.1
+T: 4 3 : 28 : 28 : 0.2
+T: 4 3 : 27 : 30 : 0.1
+T: 4 3 : 27 : 27 : 0.3
+T: 4 3 : 27 : 28 : 0.6
+T: 4 3 : 26 : 26 : 0.8
+T: 4 3 : 26 : 23 : 0.1
+T: 4 3 : 26 : 25 : 0.1
+T: 4 3 : 25 : 26 : 0.6
+T: 4 3 : 25 : 25 : 0.2
+T: 4 3 : 25 : 22 : 0.1
+T: 4 3 : 25 : 24 : 0.1
+T: 4 3 : 24 : 25 : 0.6
+T: 4 3 : 24 : 21 : 0.1
+T: 4 3 : 24 : 24 : 0.3
+T: 4 3 : 23 : 26 : 0.1
+T: 4 3 : 23 : 23 : 0.7
+T: 4 3 : 23 : 20 : 0.1
+T: 4 3 : 23 : 22 : 0.1
+T: 4 3 : 22 : 25 : 0.1
+T: 4 3 : 22 : 23 : 0.6
+T: 4 3 : 22 : 22 : 0.1
+T: 4 3 : 22 : 19 : 0.1
+T: 4 3 : 22 : 21 : 0.1
+T: 4 3 : 21 : 24 : 0.1
+T: 4 3 : 21 : 22 : 0.6
+T: 4 3 : 21 : 18 : 0.1
+T: 4 3 : 21 : 21 : 0.2
+T: 4 3 : 20 : 23 : 0.1
+T: 4 3 : 20 : 19 : 0.1
+T: 4 3 : 20 : 20 : 0.8
+T: 4 3 : 19 : 22 : 0.1
+T: 4 3 : 19 : 20 : 0.6
+T: 4 3 : 19 : 18 : 0.1
+T: 4 3 : 19 : 19 : 0.2
+T: 4 3 : 18 : 21 : 0.1
+T: 4 3 : 18 : 18 : 0.3
+T: 4 3 : 18 : 19 : 0.6
+T: 4 3 : 17 : 17 : 0.8
+T: 4 3 : 17 : 14 : 0.1
+T: 4 3 : 17 : 16 : 0.1
+T: 4 3 : 16 : 17 : 0.6
+T: 4 3 : 16 : 16 : 0.2
+T: 4 3 : 16 : 13 : 0.1
+T: 4 3 : 16 : 15 : 0.1
+T: 4 3 : 5 : 8 : 0.1
+T: 4 3 : 5 : 5 : 0.7
+T: 4 3 : 5 : 2 : 0.1
+T: 4 3 : 5 : 4 : 0.1
+T: 4 3 : 4 : 7 : 0.1
+T: 4 3 : 4 : 5 : 0.6
+T: 4 3 : 4 : 4 : 0.1
+T: 4 3 : 4 : 1 : 0.1
+T: 4 3 : 4 : 3 : 0.1
+T: 4 3 : 3 : 6 : 0.1
+T: 4 3 : 3 : 4 : 0.6
+T: 4 3 : 3 : 0 : 0.1
+T: 4 3 : 3 : 3 : 0.2
+T: 4 3 : 2 : 5 : 0.1
+T: 4 3 : 2 : 1 : 0.1
+T: 4 3 : 2 : 2 : 0.8
+T: 4 3 : 0 : 3 : 0.1
+T: 4 3 : 0 : 0 : 0.3
+T: 4 3 : 0 : 1 : 0.6
+T: 4 3 : 1 : 4 : 0.1
+T: 4 3 : 1 : 2 : 0.6
+T: 4 3 : 1 : 0 : 0.1
+T: 4 3 : 1 : 1 : 0.2
+T: 4 3 : 6 : 7 : 0.6
+T: 4 3 : 6 : 3 : 0.1
+T: 4 3 : 6 : 6 : 0.3
+T: 4 3 : 7 : 8 : 0.6
+T: 4 3 : 7 : 7 : 0.2
+T: 4 3 : 7 : 4 : 0.1
+T: 4 3 : 7 : 6 : 0.1
+T: 4 3 : 8 : 8 : 0.8
+T: 4 3 : 8 : 5 : 0.1
+T: 4 3 : 8 : 7 : 0.1
+T: 4 3 : 9 : 12 : 0.1
+T: 4 3 : 9 : 9 : 0.3
+T: 4 3 : 9 : 10 : 0.6
+T: 4 3 : 10 : 13 : 0.1
+T: 4 3 : 10 : 11 : 0.6
+T: 4 3 : 10 : 9 : 0.1
+T: 4 3 : 10 : 10 : 0.2
+T: 4 3 : 11 : 14 : 0.1
+T: 4 3 : 11 : 10 : 0.1
+T: 4 3 : 11 : 11 : 0.8
+T: 4 3 : 12 : 15 : 0.1
+T: 4 3 : 12 : 13 : 0.6
+T: 4 3 : 12 : 9 : 0.1
+T: 4 3 : 12 : 12 : 0.2
+T: 4 3 : 13 : 16 : 0.1
+T: 4 3 : 13 : 14 : 0.6
+T: 4 3 : 13 : 13 : 0.1
+T: 4 3 : 13 : 10 : 0.1
+T: 4 3 : 13 : 12 : 0.1
+T: 4 3 : 14 : 17 : 0.1
+T: 4 3 : 14 : 14 : 0.7
+T: 4 3 : 14 : 11 : 0.1
+T: 4 3 : 14 : 13 : 0.1
+T: 4 3 : 15 : 16 : 0.6
+T: 4 3 : 15 : 12 : 0.1
+T: 4 3 : 15 : 15 : 0.3
+T: 4 3 : 36 : 39 : 0.1
+T: 4 3 : 36 : 36 : 0.3
+T: 4 3 : 36 : 37 : 0.6
+T: 4 3 : 37 : 40 : 0.1
+T: 4 3 : 37 : 38 : 0.6
+T: 4 3 : 37 : 36 : 0.1
+T: 4 3 : 37 : 37 : 0.2
+T: 4 3 : 38 : 41 : 0.1
+T: 4 3 : 38 : 37 : 0.1
+T: 4 3 : 38 : 38 : 0.8
+T: 4 3 : 39 : 42 : 0.1
+T: 4 3 : 39 : 40 : 0.6
+T: 4 3 : 39 : 36 : 0.1
+T: 4 3 : 39 : 39 : 0.2
+T: 4 3 : 40 : 43 : 0.1
+T: 4 3 : 40 : 41 : 0.6
+T: 4 3 : 40 : 40 : 0.1
+T: 4 3 : 40 : 37 : 0.1
+T: 4 3 : 40 : 39 : 0.1
+T: 4 3 : 41 : 44 : 0.1
+T: 4 3 : 41 : 41 : 0.7
+T: 4 3 : 41 : 38 : 0.1
+T: 4 3 : 41 : 40 : 0.1
+T: 4 3 : 42 : 43 : 0.6
+T: 4 3 : 42 : 39 : 0.1
+T: 4 3 : 42 : 42 : 0.3
+T: 4 3 : 43 : 44 : 0.6
+T: 4 3 : 43 : 43 : 0.2
+T: 4 3 : 43 : 40 : 0.1
+T: 4 3 : 43 : 42 : 0.1
+T: 4 3 : 44 : 44 : 0.8
+T: 4 3 : 44 : 41 : 0.1
+T: 4 3 : 44 : 43 : 0.1
+T: 4 3 : 45 : 48 : 0.1
+T: 4 3 : 45 : 45 : 0.3
+T: 4 3 : 45 : 46 : 0.6
+T: 4 3 : 46 : 49 : 0.1
+T: 4 3 : 46 : 47 : 0.6
+T: 4 3 : 46 : 45 : 0.1
+T: 4 3 : 46 : 46 : 0.2
+T: 4 3 : 47 : 50 : 0.1
+T: 4 3 : 47 : 46 : 0.1
+T: 4 3 : 47 : 47 : 0.8
+T: 4 3 : 48 : 51 : 0.1
+T: 4 3 : 48 : 49 : 0.6
+T: 4 3 : 48 : 45 : 0.1
+T: 4 3 : 48 : 48 : 0.2
+T: 4 3 : 49 : 52 : 0.1
+T: 4 3 : 49 : 50 : 0.6
+T: 4 3 : 49 : 49 : 0.1
+T: 4 3 : 49 : 46 : 0.1
+T: 4 3 : 49 : 48 : 0.1
+T: 4 3 : 50 : 53 : 0.1
+T: 4 3 : 50 : 50 : 0.7
+T: 4 3 : 50 : 47 : 0.1
+T: 4 3 : 50 : 49 : 0.1
+T: 4 3 : 51 : 52 : 0.6
+T: 4 3 : 51 : 48 : 0.1
+T: 4 3 : 51 : 51 : 0.3
+T: 4 3 : 52 : 53 : 0.6
+T: 4 3 : 52 : 52 : 0.2
+T: 4 3 : 52 : 49 : 0.1
+T: 4 3 : 52 : 51 : 0.1
+T: 4 3 : 53 : 53 : 0.8
+T: 4 3 : 53 : 50 : 0.1
+T: 4 3 : 53 : 52 : 0.1
+T: 4 3 : 54 : 57 : 0.1
+T: 4 3 : 54 : 54 : 0.3
+T: 4 3 : 54 : 55 : 0.6
+T: 4 3 : 55 : 58 : 0.1
+T: 4 3 : 55 : 56 : 0.6
+T: 4 3 : 55 : 54 : 0.1
+T: 4 3 : 55 : 55 : 0.2
+T: 4 3 : 56 : 59 : 0.1
+T: 4 3 : 56 : 55 : 0.1
+T: 4 3 : 56 : 56 : 0.8
+T: 4 3 : 57 : 60 : 0.1
+T: 4 3 : 57 : 58 : 0.6
+T: 4 3 : 57 : 54 : 0.1
+T: 4 3 : 57 : 57 : 0.2
+T: 4 3 : 58 : 61 : 0.1
+T: 4 3 : 58 : 59 : 0.6
+T: 4 3 : 58 : 58 : 0.1
+T: 4 3 : 58 : 55 : 0.1
+T: 4 3 : 58 : 57 : 0.1
+T: 4 3 : 59 : 62 : 0.1
+T: 4 3 : 59 : 59 : 0.7
+T: 4 3 : 59 : 56 : 0.1
+T: 4 3 : 59 : 58 : 0.1
+T: 4 3 : 60 : 61 : 0.6
+T: 4 3 : 60 : 57 : 0.1
+T: 4 3 : 60 : 60 : 0.3
+T: 4 3 : 61 : 62 : 0.6
+T: 4 3 : 61 : 61 : 0.2
+T: 4 3 : 61 : 58 : 0.1
+T: 4 3 : 61 : 60 : 0.1
+T: 4 3 : 62 : 62 : 0.8
+T: 4 3 : 62 : 59 : 0.1
+T: 4 3 : 62 : 61 : 0.1
+T: 4 3 : 63 : 66 : 0.1
+T: 4 3 : 63 : 63 : 0.3
+T: 4 3 : 63 : 64 : 0.6
+T: 4 3 : 64 : 67 : 0.1
+T: 4 3 : 64 : 65 : 0.6
+T: 4 3 : 64 : 63 : 0.1
+T: 4 3 : 64 : 64 : 0.2
+T: 4 3 : 65 : 68 : 0.1
+T: 4 3 : 65 : 64 : 0.1
+T: 4 3 : 65 : 65 : 0.8
+T: 4 3 : 66 : 69 : 0.1
+T: 4 3 : 66 : 67 : 0.6
+T: 4 3 : 66 : 63 : 0.1
+T: 4 3 : 66 : 66 : 0.2
+T: 4 3 : 67 : 70 : 0.1
+T: 4 3 : 67 : 68 : 0.6
+T: 4 3 : 67 : 67 : 0.1
+T: 4 3 : 67 : 64 : 0.1
+T: 4 3 : 67 : 66 : 0.1
+T: 4 3 : 68 : 71 : 0.1
+T: 4 3 : 68 : 68 : 0.7
+T: 4 3 : 68 : 65 : 0.1
+T: 4 3 : 68 : 67 : 0.1
+T: 4 3 : 69 : 70 : 0.6
+T: 4 3 : 69 : 66 : 0.1
+T: 4 3 : 69 : 69 : 0.3
+T: 4 3 : 70 : 71 : 0.6
+T: 4 3 : 70 : 70 : 0.2
+T: 4 3 : 70 : 67 : 0.1
+T: 4 3 : 70 : 69 : 0.1
+T: 4 3 : 71 : 71 : 0.8
+T: 4 3 : 71 : 68 : 0.1
+T: 4 3 : 71 : 70 : 0.1
+T: 4 3 : 72 : 75 : 0.1
+T: 4 3 : 72 : 72 : 0.3
+T: 4 3 : 72 : 73 : 0.6
+T: 4 3 : 73 : 76 : 0.1
+T: 4 3 : 73 : 74 : 0.6
+T: 4 3 : 73 : 72 : 0.1
+T: 4 3 : 73 : 73 : 0.2
+T: 4 3 : 74 : 77 : 0.1
+T: 4 3 : 74 : 73 : 0.1
+T: 4 3 : 74 : 74 : 0.8
+T: 4 3 : 75 : 78 : 0.1
+T: 4 3 : 75 : 76 : 0.6
+T: 4 3 : 75 : 72 : 0.1
+T: 4 3 : 75 : 75 : 0.2
+T: 4 3 : 76 : 79 : 0.1
+T: 4 3 : 76 : 77 : 0.6
+T: 4 3 : 76 : 76 : 0.1
+T: 4 3 : 76 : 73 : 0.1
+T: 4 3 : 76 : 75 : 0.1
+T: 4 3 : 77 : 80 : 0.1
+T: 4 3 : 77 : 77 : 0.7
+T: 4 3 : 77 : 74 : 0.1
+T: 4 3 : 77 : 76 : 0.1
+T: 4 2 : 80 : 80 : 0.3
+T: 4 2 : 80 : 77 : 0.1
+T: 4 2 : 80 : 79 : 0.6
+T: 4 2 : 79 : 80 : 0.1
+T: 4 2 : 79 : 79 : 0.2
+T: 4 2 : 79 : 76 : 0.1
+T: 4 2 : 79 : 78 : 0.6
+T: 4 2 : 78 : 79 : 0.1
+T: 4 2 : 78 : 75 : 0.1
+T: 4 2 : 78 : 78 : 0.8
+T: 4 2 : 35 : 35 : 0.3
+T: 4 2 : 35 : 32 : 0.1
+T: 4 2 : 35 : 34 : 0.6
+T: 4 2 : 34 : 35 : 0.1
+T: 4 2 : 34 : 34 : 0.2
+T: 4 2 : 34 : 31 : 0.1
+T: 4 2 : 34 : 33 : 0.6
+T: 4 2 : 33 : 34 : 0.1
+T: 4 2 : 33 : 30 : 0.1
+T: 4 2 : 33 : 33 : 0.8
+T: 4 2 : 32 : 35 : 0.1
+T: 4 2 : 32 : 32 : 0.2
+T: 4 2 : 32 : 29 : 0.1
+T: 4 2 : 32 : 31 : 0.6
+T: 4 2 : 31 : 34 : 0.1
+T: 4 2 : 31 : 32 : 0.1
+T: 4 2 : 31 : 31 : 0.1
+T: 4 2 : 31 : 28 : 0.1
+T: 4 2 : 31 : 30 : 0.6
+T: 4 2 : 30 : 33 : 0.1
+T: 4 2 : 30 : 31 : 0.1
+T: 4 2 : 30 : 27 : 0.1
+T: 4 2 : 30 : 30 : 0.7
+T: 4 2 : 29 : 32 : 0.1
+T: 4 2 : 29 : 28 : 0.6
+T: 4 2 : 29 : 29 : 0.3
+T: 4 2 : 28 : 31 : 0.1
+T: 4 2 : 28 : 29 : 0.1
+T: 4 2 : 28 : 27 : 0.6
+T: 4 2 : 28 : 28 : 0.2
+T: 4 2 : 27 : 30 : 0.1
+T: 4 2 : 27 : 27 : 0.8
+T: 4 2 : 27 : 28 : 0.1
+T: 4 2 : 26 : 26 : 0.3
+T: 4 2 : 26 : 23 : 0.1
+T: 4 2 : 26 : 25 : 0.6
+T: 4 2 : 25 : 26 : 0.1
+T: 4 2 : 25 : 25 : 0.2
+T: 4 2 : 25 : 22 : 0.1
+T: 4 2 : 25 : 24 : 0.6
+T: 4 2 : 24 : 25 : 0.1
+T: 4 2 : 24 : 21 : 0.1
+T: 4 2 : 24 : 24 : 0.8
+T: 4 2 : 23 : 26 : 0.1
+T: 4 2 : 23 : 23 : 0.2
+T: 4 2 : 23 : 20 : 0.1
+T: 4 2 : 23 : 22 : 0.6
+T: 4 2 : 22 : 25 : 0.1
+T: 4 2 : 22 : 23 : 0.1
+T: 4 2 : 22 : 22 : 0.1
+T: 4 2 : 22 : 19 : 0.1
+T: 4 2 : 22 : 21 : 0.6
+T: 4 2 : 21 : 24 : 0.1
+T: 4 2 : 21 : 22 : 0.1
+T: 4 2 : 21 : 18 : 0.1
+T: 4 2 : 21 : 21 : 0.7
+T: 4 2 : 20 : 23 : 0.1
+T: 4 2 : 20 : 19 : 0.6
+T: 4 2 : 20 : 20 : 0.3
+T: 4 2 : 19 : 22 : 0.1
+T: 4 2 : 19 : 20 : 0.1
+T: 4 2 : 19 : 18 : 0.6
+T: 4 2 : 19 : 19 : 0.2
+T: 4 2 : 18 : 21 : 0.1
+T: 4 2 : 18 : 18 : 0.8
+T: 4 2 : 18 : 19 : 0.1
+T: 4 2 : 17 : 17 : 0.3
+T: 4 2 : 17 : 14 : 0.1
+T: 4 2 : 17 : 16 : 0.6
+T: 4 2 : 16 : 17 : 0.1
+T: 4 2 : 16 : 16 : 0.2
+T: 4 2 : 16 : 13 : 0.1
+T: 4 2 : 16 : 15 : 0.6
+T: 4 2 : 5 : 8 : 0.1
+T: 4 2 : 5 : 5 : 0.2
+T: 4 2 : 5 : 2 : 0.1
+T: 4 2 : 5 : 4 : 0.6
+T: 4 2 : 4 : 7 : 0.1
+T: 4 2 : 4 : 5 : 0.1
+T: 4 2 : 4 : 4 : 0.1
+T: 4 2 : 4 : 1 : 0.1
+T: 4 2 : 4 : 3 : 0.6
+T: 4 2 : 3 : 6 : 0.1
+T: 4 2 : 3 : 4 : 0.1
+T: 4 2 : 3 : 0 : 0.1
+T: 4 2 : 3 : 3 : 0.7
+T: 4 2 : 2 : 5 : 0.1
+T: 4 2 : 2 : 1 : 0.6
+T: 4 2 : 2 : 2 : 0.3
+T: 4 2 : 0 : 3 : 0.1
+T: 4 2 : 0 : 0 : 0.8
+T: 4 2 : 0 : 1 : 0.1
+T: 4 2 : 1 : 4 : 0.1
+T: 4 2 : 1 : 2 : 0.1
+T: 4 2 : 1 : 0 : 0.6
+T: 4 2 : 1 : 1 : 0.2
+T: 4 2 : 6 : 7 : 0.1
+T: 4 2 : 6 : 3 : 0.1
+T: 4 2 : 6 : 6 : 0.8
+T: 4 2 : 7 : 8 : 0.1
+T: 4 2 : 7 : 7 : 0.2
+T: 4 2 : 7 : 4 : 0.1
+T: 4 2 : 7 : 6 : 0.6
+T: 4 2 : 8 : 8 : 0.3
+T: 4 2 : 8 : 5 : 0.1
+T: 4 2 : 8 : 7 : 0.6
+T: 4 2 : 9 : 12 : 0.1
+T: 4 2 : 9 : 9 : 0.8
+T: 4 2 : 9 : 10 : 0.1
+T: 4 2 : 10 : 13 : 0.1
+T: 4 2 : 10 : 11 : 0.1
+T: 4 2 : 10 : 9 : 0.6
+T: 4 2 : 10 : 10 : 0.2
+T: 4 2 : 11 : 14 : 0.1
+T: 4 2 : 11 : 10 : 0.6
+T: 4 2 : 11 : 11 : 0.3
+T: 4 2 : 12 : 15 : 0.1
+T: 4 2 : 12 : 13 : 0.1
+T: 4 2 : 12 : 9 : 0.1
+T: 4 2 : 12 : 12 : 0.7
+T: 4 2 : 13 : 16 : 0.1
+T: 4 2 : 13 : 14 : 0.1
+T: 4 2 : 13 : 13 : 0.1
+T: 4 2 : 13 : 10 : 0.1
+T: 4 2 : 13 : 12 : 0.6
+T: 4 2 : 14 : 17 : 0.1
+T: 4 2 : 14 : 14 : 0.2
+T: 4 2 : 14 : 11 : 0.1
+T: 4 2 : 14 : 13 : 0.6
+T: 4 2 : 15 : 16 : 0.1
+T: 4 2 : 15 : 12 : 0.1
+T: 4 2 : 15 : 15 : 0.8
+T: 4 2 : 36 : 39 : 0.1
+T: 4 2 : 36 : 36 : 0.8
+T: 4 2 : 36 : 37 : 0.1
+T: 4 2 : 37 : 40 : 0.1
+T: 4 2 : 37 : 38 : 0.1
+T: 4 2 : 37 : 36 : 0.6
+T: 4 2 : 37 : 37 : 0.2
+T: 4 2 : 38 : 41 : 0.1
+T: 4 2 : 38 : 37 : 0.6
+T: 4 2 : 38 : 38 : 0.3
+T: 4 2 : 39 : 42 : 0.1
+T: 4 2 : 39 : 40 : 0.1
+T: 4 2 : 39 : 36 : 0.1
+T: 4 2 : 39 : 39 : 0.7
+T: 4 2 : 40 : 43 : 0.1
+T: 4 2 : 40 : 41 : 0.1
+T: 4 2 : 40 : 40 : 0.1
+T: 4 2 : 40 : 37 : 0.1
+T: 4 2 : 40 : 39 : 0.6
+T: 4 2 : 41 : 44 : 0.1
+T: 4 2 : 41 : 41 : 0.2
+T: 4 2 : 41 : 38 : 0.1
+T: 4 2 : 41 : 40 : 0.6
+T: 4 2 : 42 : 43 : 0.1
+T: 4 2 : 42 : 39 : 0.1
+T: 4 2 : 42 : 42 : 0.8
+T: 4 2 : 43 : 44 : 0.1
+T: 4 2 : 43 : 43 : 0.2
+T: 4 2 : 43 : 40 : 0.1
+T: 4 2 : 43 : 42 : 0.6
+T: 4 2 : 44 : 44 : 0.3
+T: 4 2 : 44 : 41 : 0.1
+T: 4 2 : 44 : 43 : 0.6
+T: 4 2 : 45 : 48 : 0.1
+T: 4 2 : 45 : 45 : 0.8
+T: 4 2 : 45 : 46 : 0.1
+T: 4 2 : 46 : 49 : 0.1
+T: 4 2 : 46 : 47 : 0.1
+T: 4 2 : 46 : 45 : 0.6
+T: 4 2 : 46 : 46 : 0.2
+T: 4 2 : 47 : 50 : 0.1
+T: 4 2 : 47 : 46 : 0.6
+T: 4 2 : 47 : 47 : 0.3
+T: 4 2 : 48 : 51 : 0.1
+T: 4 2 : 48 : 49 : 0.1
+T: 4 2 : 48 : 45 : 0.1
+T: 4 2 : 48 : 48 : 0.7
+T: 4 2 : 49 : 52 : 0.1
+T: 4 2 : 49 : 50 : 0.1
+T: 4 2 : 49 : 49 : 0.1
+T: 4 2 : 49 : 46 : 0.1
+T: 4 2 : 49 : 48 : 0.6
+T: 4 2 : 50 : 53 : 0.1
+T: 4 2 : 50 : 50 : 0.2
+T: 4 2 : 50 : 47 : 0.1
+T: 4 2 : 50 : 49 : 0.6
+T: 4 2 : 51 : 52 : 0.1
+T: 4 2 : 51 : 48 : 0.1
+T: 4 2 : 51 : 51 : 0.8
+T: 4 2 : 52 : 53 : 0.1
+T: 4 2 : 52 : 52 : 0.2
+T: 4 2 : 52 : 49 : 0.1
+T: 4 2 : 52 : 51 : 0.6
+T: 4 2 : 53 : 53 : 0.3
+T: 4 2 : 53 : 50 : 0.1
+T: 4 2 : 53 : 52 : 0.6
+T: 4 2 : 54 : 57 : 0.1
+T: 4 2 : 54 : 54 : 0.8
+T: 4 2 : 54 : 55 : 0.1
+T: 4 2 : 55 : 58 : 0.1
+T: 4 2 : 55 : 56 : 0.1
+T: 4 2 : 55 : 54 : 0.6
+T: 4 2 : 55 : 55 : 0.2
+T: 4 2 : 56 : 59 : 0.1
+T: 4 2 : 56 : 55 : 0.6
+T: 4 2 : 56 : 56 : 0.3
+T: 4 2 : 57 : 60 : 0.1
+T: 4 2 : 57 : 58 : 0.1
+T: 4 2 : 57 : 54 : 0.1
+T: 4 2 : 57 : 57 : 0.7
+T: 4 2 : 58 : 61 : 0.1
+T: 4 2 : 58 : 59 : 0.1
+T: 4 2 : 58 : 58 : 0.1
+T: 4 2 : 58 : 55 : 0.1
+T: 4 2 : 58 : 57 : 0.6
+T: 4 2 : 59 : 62 : 0.1
+T: 4 2 : 59 : 59 : 0.2
+T: 4 2 : 59 : 56 : 0.1
+T: 4 2 : 59 : 58 : 0.6
+T: 4 2 : 60 : 61 : 0.1
+T: 4 2 : 60 : 57 : 0.1
+T: 4 2 : 60 : 60 : 0.8
+T: 4 2 : 61 : 62 : 0.1
+T: 4 2 : 61 : 61 : 0.2
+T: 4 2 : 61 : 58 : 0.1
+T: 4 2 : 61 : 60 : 0.6
+T: 4 2 : 62 : 62 : 0.3
+T: 4 2 : 62 : 59 : 0.1
+T: 4 2 : 62 : 61 : 0.6
+T: 4 2 : 63 : 66 : 0.1
+T: 4 2 : 63 : 63 : 0.8
+T: 4 2 : 63 : 64 : 0.1
+T: 4 2 : 64 : 67 : 0.1
+T: 4 2 : 64 : 65 : 0.1
+T: 4 2 : 64 : 63 : 0.6
+T: 4 2 : 64 : 64 : 0.2
+T: 4 2 : 65 : 68 : 0.1
+T: 4 2 : 65 : 64 : 0.6
+T: 4 2 : 65 : 65 : 0.3
+T: 4 2 : 66 : 69 : 0.1
+T: 4 2 : 66 : 67 : 0.1
+T: 4 2 : 66 : 63 : 0.1
+T: 4 2 : 66 : 66 : 0.7
+T: 4 2 : 67 : 70 : 0.1
+T: 4 2 : 67 : 68 : 0.1
+T: 4 2 : 67 : 67 : 0.1
+T: 4 2 : 67 : 64 : 0.1
+T: 4 2 : 67 : 66 : 0.6
+T: 4 2 : 68 : 71 : 0.1
+T: 4 2 : 68 : 68 : 0.2
+T: 4 2 : 68 : 65 : 0.1
+T: 4 2 : 68 : 67 : 0.6
+T: 4 2 : 69 : 70 : 0.1
+T: 4 2 : 69 : 66 : 0.1
+T: 4 2 : 69 : 69 : 0.8
+T: 4 2 : 70 : 71 : 0.1
+T: 4 2 : 70 : 70 : 0.2
+T: 4 2 : 70 : 67 : 0.1
+T: 4 2 : 70 : 69 : 0.6
+T: 4 2 : 71 : 71 : 0.3
+T: 4 2 : 71 : 68 : 0.1
+T: 4 2 : 71 : 70 : 0.6
+T: 4 2 : 72 : 75 : 0.1
+T: 4 2 : 72 : 72 : 0.8
+T: 4 2 : 72 : 73 : 0.1
+T: 4 2 : 73 : 76 : 0.1
+T: 4 2 : 73 : 74 : 0.1
+T: 4 2 : 73 : 72 : 0.6
+T: 4 2 : 73 : 73 : 0.2
+T: 4 2 : 74 : 77 : 0.1
+T: 4 2 : 74 : 73 : 0.6
+T: 4 2 : 74 : 74 : 0.3
+T: 4 2 : 75 : 78 : 0.1
+T: 4 2 : 75 : 76 : 0.1
+T: 4 2 : 75 : 72 : 0.1
+T: 4 2 : 75 : 75 : 0.7
+T: 4 2 : 76 : 79 : 0.1
+T: 4 2 : 76 : 77 : 0.1
+T: 4 2 : 76 : 76 : 0.1
+T: 4 2 : 76 : 73 : 0.1
+T: 4 2 : 76 : 75 : 0.6
+T: 4 2 : 77 : 80 : 0.1
+T: 4 2 : 77 : 77 : 0.2
+T: 4 2 : 77 : 74 : 0.1
+T: 4 2 : 77 : 76 : 0.6
+T: 4 1 : 80 : 80 : 0.8
+T: 4 1 : 80 : 77 : 0.1
+T: 4 1 : 80 : 79 : 0.1
+T: 4 1 : 79 : 80 : 0.1
+T: 4 1 : 79 : 79 : 0.7
+T: 4 1 : 79 : 76 : 0.1
+T: 4 1 : 79 : 78 : 0.1
+T: 4 1 : 78 : 79 : 0.1
+T: 4 1 : 78 : 75 : 0.1
+T: 4 1 : 78 : 78 : 0.8
+T: 4 1 : 35 : 35 : 0.8
+T: 4 1 : 35 : 32 : 0.1
+T: 4 1 : 35 : 34 : 0.1
+T: 4 1 : 34 : 35 : 0.1
+T: 4 1 : 34 : 34 : 0.7
+T: 4 1 : 34 : 31 : 0.1
+T: 4 1 : 34 : 33 : 0.1
+T: 4 1 : 33 : 34 : 0.1
+T: 4 1 : 33 : 30 : 0.1
+T: 4 1 : 33 : 33 : 0.8
+T: 4 1 : 32 : 35 : 0.6
+T: 4 1 : 32 : 32 : 0.2
+T: 4 1 : 32 : 29 : 0.1
+T: 4 1 : 32 : 31 : 0.1
+T: 4 1 : 31 : 34 : 0.6
+T: 4 1 : 31 : 32 : 0.1
+T: 4 1 : 31 : 31 : 0.1
+T: 4 1 : 31 : 28 : 0.1
+T: 4 1 : 31 : 30 : 0.1
+T: 4 1 : 30 : 33 : 0.6
+T: 4 1 : 30 : 31 : 0.1
+T: 4 1 : 30 : 27 : 0.1
+T: 4 1 : 30 : 30 : 0.2
+T: 4 1 : 29 : 32 : 0.6
+T: 4 1 : 29 : 28 : 0.1
+T: 4 1 : 29 : 29 : 0.3
+T: 4 1 : 28 : 31 : 0.6
+T: 4 1 : 28 : 29 : 0.1
+T: 4 1 : 28 : 27 : 0.1
+T: 4 1 : 28 : 28 : 0.2
+T: 4 1 : 27 : 30 : 0.6
+T: 4 1 : 27 : 27 : 0.3
+T: 4 1 : 27 : 28 : 0.1
+T: 4 1 : 26 : 26 : 0.8
+T: 4 1 : 26 : 23 : 0.1
+T: 4 1 : 26 : 25 : 0.1
+T: 4 1 : 25 : 26 : 0.1
+T: 4 1 : 25 : 25 : 0.7
+T: 4 1 : 25 : 22 : 0.1
+T: 4 1 : 25 : 24 : 0.1
+T: 4 1 : 24 : 25 : 0.1
+T: 4 1 : 24 : 21 : 0.1
+T: 4 1 : 24 : 24 : 0.8
+T: 4 1 : 23 : 26 : 0.6
+T: 4 1 : 23 : 23 : 0.2
+T: 4 1 : 23 : 20 : 0.1
+T: 4 1 : 23 : 22 : 0.1
+T: 4 1 : 22 : 25 : 0.6
+T: 4 1 : 22 : 23 : 0.1
+T: 4 1 : 22 : 22 : 0.1
+T: 4 1 : 22 : 19 : 0.1
+T: 4 1 : 22 : 21 : 0.1
+T: 4 1 : 21 : 24 : 0.6
+T: 4 1 : 21 : 22 : 0.1
+T: 4 1 : 21 : 18 : 0.1
+T: 4 1 : 21 : 21 : 0.2
+T: 4 1 : 20 : 23 : 0.6
+T: 4 1 : 20 : 19 : 0.1
+T: 4 1 : 20 : 20 : 0.3
+T: 4 1 : 19 : 22 : 0.6
+T: 4 1 : 19 : 20 : 0.1
+T: 4 1 : 19 : 18 : 0.1
+T: 4 1 : 19 : 19 : 0.2
+T: 4 1 : 18 : 21 : 0.6
+T: 4 1 : 18 : 18 : 0.3
+T: 4 1 : 18 : 19 : 0.1
+T: 4 1 : 17 : 17 : 0.8
+T: 4 1 : 17 : 14 : 0.1
+T: 4 1 : 17 : 16 : 0.1
+T: 4 1 : 16 : 17 : 0.1
+T: 4 1 : 16 : 16 : 0.7
+T: 4 1 : 16 : 13 : 0.1
+T: 4 1 : 16 : 15 : 0.1
+T: 4 1 : 5 : 8 : 0.6
+T: 4 1 : 5 : 5 : 0.2
+T: 4 1 : 5 : 2 : 0.1
+T: 4 1 : 5 : 4 : 0.1
+T: 4 1 : 4 : 7 : 0.6
+T: 4 1 : 4 : 5 : 0.1
+T: 4 1 : 4 : 4 : 0.1
+T: 4 1 : 4 : 1 : 0.1
+T: 4 1 : 4 : 3 : 0.1
+T: 4 1 : 3 : 6 : 0.6
+T: 4 1 : 3 : 4 : 0.1
+T: 4 1 : 3 : 0 : 0.1
+T: 4 1 : 3 : 3 : 0.2
+T: 4 1 : 2 : 5 : 0.6
+T: 4 1 : 2 : 1 : 0.1
+T: 4 1 : 2 : 2 : 0.3
+T: 4 1 : 0 : 3 : 0.6
+T: 4 1 : 0 : 0 : 0.3
+T: 4 1 : 0 : 1 : 0.1
+T: 4 1 : 1 : 4 : 0.6
+T: 4 1 : 1 : 2 : 0.1
+T: 4 1 : 1 : 0 : 0.1
+T: 4 1 : 1 : 1 : 0.2
+T: 4 1 : 6 : 7 : 0.1
+T: 4 1 : 6 : 3 : 0.1
+T: 4 1 : 6 : 6 : 0.8
+T: 4 1 : 7 : 8 : 0.1
+T: 4 1 : 7 : 7 : 0.7
+T: 4 1 : 7 : 4 : 0.1
+T: 4 1 : 7 : 6 : 0.1
+T: 4 1 : 8 : 8 : 0.8
+T: 4 1 : 8 : 5 : 0.1
+T: 4 1 : 8 : 7 : 0.1
+T: 4 1 : 9 : 12 : 0.6
+T: 4 1 : 9 : 9 : 0.3
+T: 4 1 : 9 : 10 : 0.1
+T: 4 1 : 10 : 13 : 0.6
+T: 4 1 : 10 : 11 : 0.1
+T: 4 1 : 10 : 9 : 0.1
+T: 4 1 : 10 : 10 : 0.2
+T: 4 1 : 11 : 14 : 0.6
+T: 4 1 : 11 : 10 : 0.1
+T: 4 1 : 11 : 11 : 0.3
+T: 4 1 : 12 : 15 : 0.6
+T: 4 1 : 12 : 13 : 0.1
+T: 4 1 : 12 : 9 : 0.1
+T: 4 1 : 12 : 12 : 0.2
+T: 4 1 : 13 : 16 : 0.6
+T: 4 1 : 13 : 14 : 0.1
+T: 4 1 : 13 : 13 : 0.1
+T: 4 1 : 13 : 10 : 0.1
+T: 4 1 : 13 : 12 : 0.1
+T: 4 1 : 14 : 17 : 0.6
+T: 4 1 : 14 : 14 : 0.2
+T: 4 1 : 14 : 11 : 0.1
+T: 4 1 : 14 : 13 : 0.1
+T: 4 1 : 15 : 16 : 0.1
+T: 4 1 : 15 : 12 : 0.1
+T: 4 1 : 15 : 15 : 0.8
+T: 4 1 : 36 : 39 : 0.6
+T: 4 1 : 36 : 36 : 0.3
+T: 4 1 : 36 : 37 : 0.1
+T: 4 1 : 37 : 40 : 0.6
+T: 4 1 : 37 : 38 : 0.1
+T: 4 1 : 37 : 36 : 0.1
+T: 4 1 : 37 : 37 : 0.2
+T: 4 1 : 38 : 41 : 0.6
+T: 4 1 : 38 : 37 : 0.1
+T: 4 1 : 38 : 38 : 0.3
+T: 4 1 : 39 : 42 : 0.6
+T: 4 1 : 39 : 40 : 0.1
+T: 4 1 : 39 : 36 : 0.1
+T: 4 1 : 39 : 39 : 0.2
+T: 4 1 : 40 : 43 : 0.6
+T: 4 1 : 40 : 41 : 0.1
+T: 4 1 : 40 : 40 : 0.1
+T: 4 1 : 40 : 37 : 0.1
+T: 4 1 : 40 : 39 : 0.1
+T: 4 1 : 41 : 44 : 0.6
+T: 4 1 : 41 : 41 : 0.2
+T: 4 1 : 41 : 38 : 0.1
+T: 4 1 : 41 : 40 : 0.1
+T: 4 1 : 42 : 43 : 0.1
+T: 4 1 : 42 : 39 : 0.1
+T: 4 1 : 42 : 42 : 0.8
+T: 4 1 : 43 : 44 : 0.1
+T: 4 1 : 43 : 43 : 0.7
+T: 4 1 : 43 : 40 : 0.1
+T: 4 1 : 43 : 42 : 0.1
+T: 4 1 : 44 : 44 : 0.8
+T: 4 1 : 44 : 41 : 0.1
+T: 4 1 : 44 : 43 : 0.1
+T: 4 1 : 45 : 48 : 0.6
+T: 4 1 : 45 : 45 : 0.3
+T: 4 1 : 45 : 46 : 0.1
+T: 4 1 : 46 : 49 : 0.6
+T: 4 1 : 46 : 47 : 0.1
+T: 4 1 : 46 : 45 : 0.1
+T: 4 1 : 46 : 46 : 0.2
+T: 4 1 : 47 : 50 : 0.6
+T: 4 1 : 47 : 46 : 0.1
+T: 4 1 : 47 : 47 : 0.3
+T: 4 1 : 48 : 51 : 0.6
+T: 4 1 : 48 : 49 : 0.1
+T: 4 1 : 48 : 45 : 0.1
+T: 4 1 : 48 : 48 : 0.2
+T: 4 1 : 49 : 52 : 0.6
+T: 4 1 : 49 : 50 : 0.1
+T: 4 1 : 49 : 49 : 0.1
+T: 4 1 : 49 : 46 : 0.1
+T: 4 1 : 49 : 48 : 0.1
+T: 4 1 : 50 : 53 : 0.6
+T: 4 1 : 50 : 50 : 0.2
+T: 4 1 : 50 : 47 : 0.1
+T: 4 1 : 50 : 49 : 0.1
+T: 4 1 : 51 : 52 : 0.1
+T: 4 1 : 51 : 48 : 0.1
+T: 4 1 : 51 : 51 : 0.8
+T: 4 1 : 52 : 53 : 0.1
+T: 4 1 : 52 : 52 : 0.7
+T: 4 1 : 52 : 49 : 0.1
+T: 4 1 : 52 : 51 : 0.1
+T: 4 1 : 53 : 53 : 0.8
+T: 4 1 : 53 : 50 : 0.1
+T: 4 1 : 53 : 52 : 0.1
+T: 4 1 : 54 : 57 : 0.6
+T: 4 1 : 54 : 54 : 0.3
+T: 4 1 : 54 : 55 : 0.1
+T: 4 1 : 55 : 58 : 0.6
+T: 4 1 : 55 : 56 : 0.1
+T: 4 1 : 55 : 54 : 0.1
+T: 4 1 : 55 : 55 : 0.2
+T: 4 1 : 56 : 59 : 0.6
+T: 4 1 : 56 : 55 : 0.1
+T: 4 1 : 56 : 56 : 0.3
+T: 4 1 : 57 : 60 : 0.6
+T: 4 1 : 57 : 58 : 0.1
+T: 4 1 : 57 : 54 : 0.1
+T: 4 1 : 57 : 57 : 0.2
+T: 4 1 : 58 : 61 : 0.6
+T: 4 1 : 58 : 59 : 0.1
+T: 4 1 : 58 : 58 : 0.1
+T: 4 1 : 58 : 55 : 0.1
+T: 4 1 : 58 : 57 : 0.1
+T: 4 1 : 59 : 62 : 0.6
+T: 4 1 : 59 : 59 : 0.2
+T: 4 1 : 59 : 56 : 0.1
+T: 4 1 : 59 : 58 : 0.1
+T: 4 1 : 60 : 61 : 0.1
+T: 4 1 : 60 : 57 : 0.1
+T: 4 1 : 60 : 60 : 0.8
+T: 4 1 : 61 : 62 : 0.1
+T: 4 1 : 61 : 61 : 0.7
+T: 4 1 : 61 : 58 : 0.1
+T: 4 1 : 61 : 60 : 0.1
+T: 4 1 : 62 : 62 : 0.8
+T: 4 1 : 62 : 59 : 0.1
+T: 4 1 : 62 : 61 : 0.1
+T: 4 1 : 63 : 66 : 0.6
+T: 4 1 : 63 : 63 : 0.3
+T: 4 1 : 63 : 64 : 0.1
+T: 4 1 : 64 : 67 : 0.6
+T: 4 1 : 64 : 65 : 0.1
+T: 4 1 : 64 : 63 : 0.1
+T: 4 1 : 64 : 64 : 0.2
+T: 4 1 : 65 : 68 : 0.6
+T: 4 1 : 65 : 64 : 0.1
+T: 4 1 : 65 : 65 : 0.3
+T: 4 1 : 66 : 69 : 0.6
+T: 4 1 : 66 : 67 : 0.1
+T: 4 1 : 66 : 63 : 0.1
+T: 4 1 : 66 : 66 : 0.2
+T: 4 1 : 67 : 70 : 0.6
+T: 4 1 : 67 : 68 : 0.1
+T: 4 1 : 67 : 67 : 0.1
+T: 4 1 : 67 : 64 : 0.1
+T: 4 1 : 67 : 66 : 0.1
+T: 4 1 : 68 : 71 : 0.6
+T: 4 1 : 68 : 68 : 0.2
+T: 4 1 : 68 : 65 : 0.1
+T: 4 1 : 68 : 67 : 0.1
+T: 4 1 : 69 : 70 : 0.1
+T: 4 1 : 69 : 66 : 0.1
+T: 4 1 : 69 : 69 : 0.8
+T: 4 1 : 70 : 71 : 0.1
+T: 4 1 : 70 : 70 : 0.7
+T: 4 1 : 70 : 67 : 0.1
+T: 4 1 : 70 : 69 : 0.1
+T: 4 1 : 71 : 71 : 0.8
+T: 4 1 : 71 : 68 : 0.1
+T: 4 1 : 71 : 70 : 0.1
+T: 4 1 : 72 : 75 : 0.6
+T: 4 1 : 72 : 72 : 0.3
+T: 4 1 : 72 : 73 : 0.1
+T: 4 1 : 73 : 76 : 0.6
+T: 4 1 : 73 : 74 : 0.1
+T: 4 1 : 73 : 72 : 0.1
+T: 4 1 : 73 : 73 : 0.2
+T: 4 1 : 74 : 77 : 0.6
+T: 4 1 : 74 : 73 : 0.1
+T: 4 1 : 74 : 74 : 0.3
+T: 4 1 : 75 : 78 : 0.6
+T: 4 1 : 75 : 76 : 0.1
+T: 4 1 : 75 : 72 : 0.1
+T: 4 1 : 75 : 75 : 0.2
+T: 4 1 : 76 : 79 : 0.6
+T: 4 1 : 76 : 77 : 0.1
+T: 4 1 : 76 : 76 : 0.1
+T: 4 1 : 76 : 73 : 0.1
+T: 4 1 : 76 : 75 : 0.1
+T: 4 1 : 77 : 80 : 0.6
+T: 4 1 : 77 : 77 : 0.2
+T: 4 1 : 77 : 74 : 0.1
+T: 4 1 : 77 : 76 : 0.1
+T: 4 0 : 80 : 80 : 0.3
+T: 4 0 : 80 : 77 : 0.6
+T: 4 0 : 80 : 79 : 0.1
+T: 4 0 : 79 : 80 : 0.1
+T: 4 0 : 79 : 79 : 0.2
+T: 4 0 : 79 : 76 : 0.6
+T: 4 0 : 79 : 78 : 0.1
+T: 4 0 : 78 : 79 : 0.1
+T: 4 0 : 78 : 75 : 0.6
+T: 4 0 : 78 : 78 : 0.3
+T: 4 0 : 35 : 35 : 0.3
+T: 4 0 : 35 : 32 : 0.6
+T: 4 0 : 35 : 34 : 0.1
+T: 4 0 : 34 : 35 : 0.1
+T: 4 0 : 34 : 34 : 0.2
+T: 4 0 : 34 : 31 : 0.6
+T: 4 0 : 34 : 33 : 0.1
+T: 4 0 : 33 : 34 : 0.1
+T: 4 0 : 33 : 30 : 0.6
+T: 4 0 : 33 : 33 : 0.3
+T: 4 0 : 32 : 35 : 0.1
+T: 4 0 : 32 : 32 : 0.2
+T: 4 0 : 32 : 29 : 0.6
+T: 4 0 : 32 : 31 : 0.1
+T: 4 0 : 31 : 34 : 0.1
+T: 4 0 : 31 : 32 : 0.1
+T: 4 0 : 31 : 31 : 0.1
+T: 4 0 : 31 : 28 : 0.6
+T: 4 0 : 31 : 30 : 0.1
+T: 4 0 : 30 : 33 : 0.1
+T: 4 0 : 30 : 31 : 0.1
+T: 4 0 : 30 : 27 : 0.6
+T: 4 0 : 30 : 30 : 0.2
+T: 4 0 : 29 : 32 : 0.1
+T: 4 0 : 29 : 28 : 0.1
+T: 4 0 : 29 : 29 : 0.8
+T: 4 0 : 28 : 31 : 0.1
+T: 4 0 : 28 : 29 : 0.1
+T: 4 0 : 28 : 27 : 0.1
+T: 4 0 : 28 : 28 : 0.7
+T: 4 0 : 27 : 30 : 0.1
+T: 4 0 : 27 : 27 : 0.8
+T: 4 0 : 27 : 28 : 0.1
+T: 4 0 : 26 : 26 : 0.3
+T: 4 0 : 26 : 23 : 0.6
+T: 4 0 : 26 : 25 : 0.1
+T: 4 0 : 25 : 26 : 0.1
+T: 4 0 : 25 : 25 : 0.2
+T: 4 0 : 25 : 22 : 0.6
+T: 4 0 : 25 : 24 : 0.1
+T: 4 0 : 24 : 25 : 0.1
+T: 4 0 : 24 : 21 : 0.6
+T: 4 0 : 24 : 24 : 0.3
+T: 4 0 : 23 : 26 : 0.1
+T: 4 0 : 23 : 23 : 0.2
+T: 4 0 : 23 : 20 : 0.6
+T: 4 0 : 23 : 22 : 0.1
+T: 4 0 : 22 : 25 : 0.1
+T: 4 0 : 22 : 23 : 0.1
+T: 4 0 : 22 : 22 : 0.1
+T: 4 0 : 22 : 19 : 0.6
+T: 4 0 : 22 : 21 : 0.1
+T: 4 0 : 21 : 24 : 0.1
+T: 4 0 : 21 : 22 : 0.1
+T: 4 0 : 21 : 18 : 0.6
+T: 4 0 : 21 : 21 : 0.2
+T: 4 0 : 20 : 23 : 0.1
+T: 4 0 : 20 : 19 : 0.1
+T: 4 0 : 20 : 20 : 0.8
+T: 4 0 : 19 : 22 : 0.1
+T: 4 0 : 19 : 20 : 0.1
+T: 4 0 : 19 : 18 : 0.1
+T: 4 0 : 19 : 19 : 0.7
+T: 4 0 : 18 : 21 : 0.1
+T: 4 0 : 18 : 18 : 0.8
+T: 4 0 : 18 : 19 : 0.1
+T: 4 0 : 17 : 17 : 0.3
+T: 4 0 : 17 : 14 : 0.6
+T: 4 0 : 17 : 16 : 0.1
+T: 4 0 : 16 : 17 : 0.1
+T: 4 0 : 16 : 16 : 0.2
+T: 4 0 : 16 : 13 : 0.6
+T: 4 0 : 16 : 15 : 0.1
+T: 4 0 : 5 : 8 : 0.1
+T: 4 0 : 5 : 5 : 0.2
+T: 4 0 : 5 : 2 : 0.6
+T: 4 0 : 5 : 4 : 0.1
+T: 4 0 : 4 : 7 : 0.1
+T: 4 0 : 4 : 5 : 0.1
+T: 4 0 : 4 : 4 : 0.1
+T: 4 0 : 4 : 1 : 0.6
+T: 4 0 : 4 : 3 : 0.1
+T: 4 0 : 3 : 6 : 0.1
+T: 4 0 : 3 : 4 : 0.1
+T: 4 0 : 3 : 0 : 0.6
+T: 4 0 : 3 : 3 : 0.2
+T: 4 0 : 2 : 5 : 0.1
+T: 4 0 : 2 : 1 : 0.1
+T: 4 0 : 2 : 2 : 0.8
+T: 4 0 : 0 : 3 : 0.1
+T: 4 0 : 0 : 0 : 0.8
+T: 4 0 : 0 : 1 : 0.1
+T: 4 0 : 1 : 4 : 0.1
+T: 4 0 : 1 : 2 : 0.1
+T: 4 0 : 1 : 0 : 0.1
+T: 4 0 : 1 : 1 : 0.7
+T: 4 0 : 6 : 7 : 0.1
+T: 4 0 : 6 : 3 : 0.6
+T: 4 0 : 6 : 6 : 0.3
+T: 4 0 : 7 : 8 : 0.1
+T: 4 0 : 7 : 7 : 0.2
+T: 4 0 : 7 : 4 : 0.6
+T: 4 0 : 7 : 6 : 0.1
+T: 4 0 : 8 : 8 : 0.3
+T: 4 0 : 8 : 5 : 0.6
+T: 4 0 : 8 : 7 : 0.1
+T: 4 0 : 9 : 12 : 0.1
+T: 4 0 : 9 : 9 : 0.8
+T: 4 0 : 9 : 10 : 0.1
+T: 4 0 : 10 : 13 : 0.1
+T: 4 0 : 10 : 11 : 0.1
+T: 4 0 : 10 : 9 : 0.1
+T: 4 0 : 10 : 10 : 0.7
+T: 4 0 : 11 : 14 : 0.1
+T: 4 0 : 11 : 10 : 0.1
+T: 4 0 : 11 : 11 : 0.8
+T: 4 0 : 12 : 15 : 0.1
+T: 4 0 : 12 : 13 : 0.1
+T: 4 0 : 12 : 9 : 0.6
+T: 4 0 : 12 : 12 : 0.2
+T: 4 0 : 13 : 16 : 0.1
+T: 4 0 : 13 : 14 : 0.1
+T: 4 0 : 13 : 13 : 0.1
+T: 4 0 : 13 : 10 : 0.6
+T: 4 0 : 13 : 12 : 0.1
+T: 4 0 : 14 : 17 : 0.1
+T: 4 0 : 14 : 14 : 0.2
+T: 4 0 : 14 : 11 : 0.6
+T: 4 0 : 14 : 13 : 0.1
+T: 4 0 : 15 : 16 : 0.1
+T: 4 0 : 15 : 12 : 0.6
+T: 4 0 : 15 : 15 : 0.3
+T: 4 0 : 36 : 39 : 0.1
+T: 4 0 : 36 : 36 : 0.8
+T: 4 0 : 36 : 37 : 0.1
+T: 4 0 : 37 : 40 : 0.1
+T: 4 0 : 37 : 38 : 0.1
+T: 4 0 : 37 : 36 : 0.1
+T: 4 0 : 37 : 37 : 0.7
+T: 4 0 : 38 : 41 : 0.1
+T: 4 0 : 38 : 37 : 0.1
+T: 4 0 : 38 : 38 : 0.8
+T: 4 0 : 39 : 42 : 0.1
+T: 4 0 : 39 : 40 : 0.1
+T: 4 0 : 39 : 36 : 0.6
+T: 4 0 : 39 : 39 : 0.2
+T: 4 0 : 40 : 43 : 0.1
+T: 4 0 : 40 : 41 : 0.1
+T: 4 0 : 40 : 40 : 0.1
+T: 4 0 : 40 : 37 : 0.6
+T: 4 0 : 40 : 39 : 0.1
+T: 4 0 : 41 : 44 : 0.1
+T: 4 0 : 41 : 41 : 0.2
+T: 4 0 : 41 : 38 : 0.6
+T: 4 0 : 41 : 40 : 0.1
+T: 4 0 : 42 : 43 : 0.1
+T: 4 0 : 42 : 39 : 0.6
+T: 4 0 : 42 : 42 : 0.3
+T: 4 0 : 43 : 44 : 0.1
+T: 4 0 : 43 : 43 : 0.2
+T: 4 0 : 43 : 40 : 0.6
+T: 4 0 : 43 : 42 : 0.1
+T: 4 0 : 44 : 44 : 0.3
+T: 4 0 : 44 : 41 : 0.6
+T: 4 0 : 44 : 43 : 0.1
+T: 4 0 : 45 : 48 : 0.1
+T: 4 0 : 45 : 45 : 0.8
+T: 4 0 : 45 : 46 : 0.1
+T: 4 0 : 46 : 49 : 0.1
+T: 4 0 : 46 : 47 : 0.1
+T: 4 0 : 46 : 45 : 0.1
+T: 4 0 : 46 : 46 : 0.7
+T: 4 0 : 47 : 50 : 0.1
+T: 4 0 : 47 : 46 : 0.1
+T: 4 0 : 47 : 47 : 0.8
+T: 4 0 : 48 : 51 : 0.1
+T: 4 0 : 48 : 49 : 0.1
+T: 4 0 : 48 : 45 : 0.6
+T: 4 0 : 48 : 48 : 0.2
+T: 4 0 : 49 : 52 : 0.1
+T: 4 0 : 49 : 50 : 0.1
+T: 4 0 : 49 : 49 : 0.1
+T: 4 0 : 49 : 46 : 0.6
+T: 4 0 : 49 : 48 : 0.1
+T: 4 0 : 50 : 53 : 0.1
+T: 4 0 : 50 : 50 : 0.2
+T: 4 0 : 50 : 47 : 0.6
+T: 4 0 : 50 : 49 : 0.1
+T: 4 0 : 51 : 52 : 0.1
+T: 4 0 : 51 : 48 : 0.6
+T: 4 0 : 51 : 51 : 0.3
+T: 4 0 : 52 : 53 : 0.1
+T: 4 0 : 52 : 52 : 0.2
+T: 4 0 : 52 : 49 : 0.6
+T: 4 0 : 52 : 51 : 0.1
+T: 4 0 : 53 : 53 : 0.3
+T: 4 0 : 53 : 50 : 0.6
+T: 4 0 : 53 : 52 : 0.1
+T: 4 0 : 54 : 57 : 0.1
+T: 4 0 : 54 : 54 : 0.8
+T: 4 0 : 54 : 55 : 0.1
+T: 4 0 : 55 : 58 : 0.1
+T: 4 0 : 55 : 56 : 0.1
+T: 4 0 : 55 : 54 : 0.1
+T: 4 0 : 55 : 55 : 0.7
+T: 4 0 : 56 : 59 : 0.1
+T: 4 0 : 56 : 55 : 0.1
+T: 4 0 : 56 : 56 : 0.8
+T: 4 0 : 57 : 60 : 0.1
+T: 4 0 : 57 : 58 : 0.1
+T: 4 0 : 57 : 54 : 0.6
+T: 4 0 : 57 : 57 : 0.2
+T: 4 0 : 58 : 61 : 0.1
+T: 4 0 : 58 : 59 : 0.1
+T: 4 0 : 58 : 58 : 0.1
+T: 4 0 : 58 : 55 : 0.6
+T: 4 0 : 58 : 57 : 0.1
+T: 4 0 : 59 : 62 : 0.1
+T: 4 0 : 59 : 59 : 0.2
+T: 4 0 : 59 : 56 : 0.6
+T: 4 0 : 59 : 58 : 0.1
+T: 4 0 : 60 : 61 : 0.1
+T: 4 0 : 60 : 57 : 0.6
+T: 4 0 : 60 : 60 : 0.3
+T: 4 0 : 61 : 62 : 0.1
+T: 4 0 : 61 : 61 : 0.2
+T: 4 0 : 61 : 58 : 0.6
+T: 4 0 : 61 : 60 : 0.1
+T: 4 0 : 62 : 62 : 0.3
+T: 4 0 : 62 : 59 : 0.6
+T: 4 0 : 62 : 61 : 0.1
+T: 4 0 : 63 : 66 : 0.1
+T: 4 0 : 63 : 63 : 0.8
+T: 4 0 : 63 : 64 : 0.1
+T: 4 0 : 64 : 67 : 0.1
+T: 4 0 : 64 : 65 : 0.1
+T: 4 0 : 64 : 63 : 0.1
+T: 4 0 : 64 : 64 : 0.7
+T: 4 0 : 65 : 68 : 0.1
+T: 4 0 : 65 : 64 : 0.1
+T: 4 0 : 65 : 65 : 0.8
+T: 4 0 : 66 : 69 : 0.1
+T: 4 0 : 66 : 67 : 0.1
+T: 4 0 : 66 : 63 : 0.6
+T: 4 0 : 66 : 66 : 0.2
+T: 4 0 : 67 : 70 : 0.1
+T: 4 0 : 67 : 68 : 0.1
+T: 4 0 : 67 : 67 : 0.1
+T: 4 0 : 67 : 64 : 0.6
+T: 4 0 : 67 : 66 : 0.1
+T: 4 0 : 68 : 71 : 0.1
+T: 4 0 : 68 : 68 : 0.2
+T: 4 0 : 68 : 65 : 0.6
+T: 4 0 : 68 : 67 : 0.1
+T: 4 0 : 69 : 70 : 0.1
+T: 4 0 : 69 : 66 : 0.6
+T: 4 0 : 69 : 69 : 0.3
+T: 4 0 : 70 : 71 : 0.1
+T: 4 0 : 70 : 70 : 0.2
+T: 4 0 : 70 : 67 : 0.6
+T: 4 0 : 70 : 69 : 0.1
+T: 4 0 : 71 : 71 : 0.3
+T: 4 0 : 71 : 68 : 0.6
+T: 4 0 : 71 : 70 : 0.1
+T: 4 0 : 72 : 75 : 0.1
+T: 4 0 : 72 : 72 : 0.8
+T: 4 0 : 72 : 73 : 0.1
+T: 4 0 : 73 : 76 : 0.1
+T: 4 0 : 73 : 74 : 0.1
+T: 4 0 : 73 : 72 : 0.1
+T: 4 0 : 73 : 73 : 0.7
+T: 4 0 : 74 : 77 : 0.1
+T: 4 0 : 74 : 73 : 0.1
+T: 4 0 : 74 : 74 : 0.8
+T: 4 0 : 75 : 78 : 0.1
+T: 4 0 : 75 : 76 : 0.1
+T: 4 0 : 75 : 72 : 0.6
+T: 4 0 : 75 : 75 : 0.2
+T: 4 0 : 76 : 79 : 0.1
+T: 4 0 : 76 : 77 : 0.1
+T: 4 0 : 76 : 76 : 0.1
+T: 4 0 : 76 : 73 : 0.6
+T: 4 0 : 76 : 75 : 0.1
+T: 4 0 : 77 : 80 : 0.1
+T: 4 0 : 77 : 77 : 0.2
+T: 4 0 : 77 : 74 : 0.6
+T: 4 0 : 77 : 76 : 0.1
+T: 3 4 : 80 : 80 : 0.8
+T: 3 4 : 80 : 53 : 0.1
+T: 3 4 : 80 : 71 : 0.1
+T: 3 4 : 79 : 79 : 0.8
+T: 3 4 : 79 : 52 : 0.1
+T: 3 4 : 79 : 70 : 0.1
+T: 3 4 : 78 : 78 : 0.8
+T: 3 4 : 78 : 51 : 0.1
+T: 3 4 : 78 : 69 : 0.1
+T: 3 4 : 35 : 62 : 0.1
+T: 3 4 : 35 : 44 : 0.6
+T: 3 4 : 35 : 8 : 0.1
+T: 3 4 : 35 : 35 : 0.2
+T: 3 4 : 34 : 61 : 0.1
+T: 3 4 : 34 : 43 : 0.6
+T: 3 4 : 34 : 7 : 0.1
+T: 3 4 : 34 : 34 : 0.2
+T: 3 4 : 33 : 60 : 0.1
+T: 3 4 : 33 : 42 : 0.6
+T: 3 4 : 33 : 6 : 0.1
+T: 3 4 : 33 : 33 : 0.2
+T: 3 4 : 32 : 59 : 0.1
+T: 3 4 : 32 : 41 : 0.6
+T: 3 4 : 32 : 5 : 0.1
+T: 3 4 : 32 : 32 : 0.2
+T: 3 4 : 31 : 58 : 0.1
+T: 3 4 : 31 : 40 : 0.6
+T: 3 4 : 31 : 4 : 0.1
+T: 3 4 : 31 : 31 : 0.2
+T: 3 4 : 30 : 57 : 0.1
+T: 3 4 : 30 : 39 : 0.6
+T: 3 4 : 30 : 3 : 0.1
+T: 3 4 : 30 : 30 : 0.2
+T: 3 4 : 29 : 56 : 0.1
+T: 3 4 : 29 : 38 : 0.6
+T: 3 4 : 29 : 2 : 0.1
+T: 3 4 : 29 : 29 : 0.2
+T: 3 4 : 28 : 55 : 0.1
+T: 3 4 : 28 : 37 : 0.6
+T: 3 4 : 28 : 1 : 0.1
+T: 3 4 : 28 : 28 : 0.2
+T: 3 4 : 27 : 54 : 0.1
+T: 3 4 : 27 : 36 : 0.6
+T: 3 4 : 27 : 0 : 0.1
+T: 3 4 : 27 : 27 : 0.2
+T: 3 4 : 26 : 53 : 0.1
+T: 3 4 : 26 : 17 : 0.1
+T: 3 4 : 26 : 26 : 0.8
+T: 3 4 : 25 : 52 : 0.1
+T: 3 4 : 25 : 16 : 0.1
+T: 3 4 : 25 : 25 : 0.8
+T: 3 4 : 24 : 51 : 0.1
+T: 3 4 : 24 : 15 : 0.1
+T: 3 4 : 24 : 24 : 0.8
+T: 3 4 : 23 : 50 : 0.1
+T: 3 4 : 23 : 14 : 0.1
+T: 3 4 : 23 : 23 : 0.8
+T: 3 4 : 22 : 49 : 0.1
+T: 3 4 : 22 : 13 : 0.1
+T: 3 4 : 22 : 22 : 0.8
+T: 3 4 : 21 : 48 : 0.1
+T: 3 4 : 21 : 12 : 0.1
+T: 3 4 : 21 : 21 : 0.8
+T: 3 4 : 20 : 47 : 0.1
+T: 3 4 : 20 : 11 : 0.1
+T: 3 4 : 20 : 20 : 0.8
+T: 3 4 : 19 : 46 : 0.1
+T: 3 4 : 19 : 10 : 0.1
+T: 3 4 : 19 : 19 : 0.8
+T: 3 4 : 18 : 45 : 0.1
+T: 3 4 : 18 : 9 : 0.1
+T: 3 4 : 18 : 18 : 0.8
+T: 3 4 : 17 : 44 : 0.1
+T: 3 4 : 17 : 26 : 0.6
+T: 3 4 : 17 : 8 : 0.1
+T: 3 4 : 17 : 17 : 0.2
+T: 3 4 : 16 : 43 : 0.1
+T: 3 4 : 16 : 25 : 0.6
+T: 3 4 : 16 : 7 : 0.1
+T: 3 4 : 16 : 16 : 0.2
+T: 3 4 : 5 : 32 : 0.1
+T: 3 4 : 5 : 5 : 0.3
+T: 3 4 : 5 : 14 : 0.6
+T: 3 4 : 4 : 31 : 0.1
+T: 3 4 : 4 : 4 : 0.3
+T: 3 4 : 4 : 13 : 0.6
+T: 3 4 : 3 : 30 : 0.1
+T: 3 4 : 3 : 3 : 0.3
+T: 3 4 : 3 : 12 : 0.6
+T: 3 4 : 2 : 29 : 0.1
+T: 3 4 : 2 : 2 : 0.3
+T: 3 4 : 2 : 11 : 0.6
+T: 3 4 : 0 : 27 : 0.1
+T: 3 4 : 0 : 0 : 0.3
+T: 3 4 : 0 : 9 : 0.6
+T: 3 4 : 1 : 28 : 0.1
+T: 3 4 : 1 : 1 : 0.3
+T: 3 4 : 1 : 10 : 0.6
+T: 3 4 : 6 : 33 : 0.1
+T: 3 4 : 6 : 6 : 0.3
+T: 3 4 : 6 : 15 : 0.6
+T: 3 4 : 7 : 34 : 0.1
+T: 3 4 : 7 : 7 : 0.3
+T: 3 4 : 7 : 16 : 0.6
+T: 3 4 : 8 : 35 : 0.1
+T: 3 4 : 8 : 8 : 0.3
+T: 3 4 : 8 : 17 : 0.6
+T: 3 4 : 9 : 36 : 0.1
+T: 3 4 : 9 : 18 : 0.6
+T: 3 4 : 9 : 0 : 0.1
+T: 3 4 : 9 : 9 : 0.2
+T: 3 4 : 10 : 37 : 0.1
+T: 3 4 : 10 : 19 : 0.6
+T: 3 4 : 10 : 1 : 0.1
+T: 3 4 : 10 : 10 : 0.2
+T: 3 4 : 11 : 38 : 0.1
+T: 3 4 : 11 : 20 : 0.6
+T: 3 4 : 11 : 2 : 0.1
+T: 3 4 : 11 : 11 : 0.2
+T: 3 4 : 12 : 39 : 0.1
+T: 3 4 : 12 : 21 : 0.6
+T: 3 4 : 12 : 3 : 0.1
+T: 3 4 : 12 : 12 : 0.2
+T: 3 4 : 13 : 40 : 0.1
+T: 3 4 : 13 : 22 : 0.6
+T: 3 4 : 13 : 4 : 0.1
+T: 3 4 : 13 : 13 : 0.2
+T: 3 4 : 14 : 41 : 0.1
+T: 3 4 : 14 : 23 : 0.6
+T: 3 4 : 14 : 5 : 0.1
+T: 3 4 : 14 : 14 : 0.2
+T: 3 4 : 15 : 42 : 0.1
+T: 3 4 : 15 : 24 : 0.6
+T: 3 4 : 15 : 6 : 0.1
+T: 3 4 : 15 : 15 : 0.2
+T: 3 4 : 36 : 63 : 0.1
+T: 3 4 : 36 : 45 : 0.6
+T: 3 4 : 36 : 36 : 0.1
+T: 3 4 : 36 : 9 : 0.1
+T: 3 4 : 36 : 27 : 0.1
+T: 3 4 : 37 : 64 : 0.1
+T: 3 4 : 37 : 46 : 0.6
+T: 3 4 : 37 : 37 : 0.1
+T: 3 4 : 37 : 10 : 0.1
+T: 3 4 : 37 : 28 : 0.1
+T: 3 4 : 38 : 65 : 0.1
+T: 3 4 : 38 : 47 : 0.6
+T: 3 4 : 38 : 38 : 0.1
+T: 3 4 : 38 : 11 : 0.1
+T: 3 4 : 38 : 29 : 0.1
+T: 3 4 : 39 : 66 : 0.1
+T: 3 4 : 39 : 48 : 0.6
+T: 3 4 : 39 : 39 : 0.1
+T: 3 4 : 39 : 12 : 0.1
+T: 3 4 : 39 : 30 : 0.1
+T: 3 4 : 40 : 67 : 0.1
+T: 3 4 : 40 : 49 : 0.6
+T: 3 4 : 40 : 40 : 0.1
+T: 3 4 : 40 : 13 : 0.1
+T: 3 4 : 40 : 31 : 0.1
+T: 3 4 : 41 : 68 : 0.1
+T: 3 4 : 41 : 50 : 0.6
+T: 3 4 : 41 : 41 : 0.1
+T: 3 4 : 41 : 14 : 0.1
+T: 3 4 : 41 : 32 : 0.1
+T: 3 4 : 42 : 69 : 0.1
+T: 3 4 : 42 : 51 : 0.6
+T: 3 4 : 42 : 42 : 0.1
+T: 3 4 : 42 : 15 : 0.1
+T: 3 4 : 42 : 33 : 0.1
+T: 3 4 : 43 : 70 : 0.1
+T: 3 4 : 43 : 52 : 0.6
+T: 3 4 : 43 : 43 : 0.1
+T: 3 4 : 43 : 16 : 0.1
+T: 3 4 : 43 : 34 : 0.1
+T: 3 4 : 44 : 71 : 0.1
+T: 3 4 : 44 : 53 : 0.6
+T: 3 4 : 44 : 44 : 0.1
+T: 3 4 : 44 : 17 : 0.1
+T: 3 4 : 44 : 35 : 0.1
+T: 3 4 : 45 : 72 : 0.1
+T: 3 4 : 45 : 45 : 0.7
+T: 3 4 : 45 : 18 : 0.1
+T: 3 4 : 45 : 36 : 0.1
+T: 3 4 : 46 : 73 : 0.1
+T: 3 4 : 46 : 46 : 0.7
+T: 3 4 : 46 : 19 : 0.1
+T: 3 4 : 46 : 37 : 0.1
+T: 3 4 : 47 : 74 : 0.1
+T: 3 4 : 47 : 47 : 0.7
+T: 3 4 : 47 : 20 : 0.1
+T: 3 4 : 47 : 38 : 0.1
+T: 3 4 : 48 : 75 : 0.1
+T: 3 4 : 48 : 48 : 0.7
+T: 3 4 : 48 : 21 : 0.1
+T: 3 4 : 48 : 39 : 0.1
+T: 3 4 : 49 : 76 : 0.1
+T: 3 4 : 49 : 49 : 0.7
+T: 3 4 : 49 : 22 : 0.1
+T: 3 4 : 49 : 40 : 0.1
+T: 3 4 : 50 : 77 : 0.1
+T: 3 4 : 50 : 50 : 0.7
+T: 3 4 : 50 : 23 : 0.1
+T: 3 4 : 50 : 41 : 0.1
+T: 3 4 : 51 : 78 : 0.1
+T: 3 4 : 51 : 51 : 0.7
+T: 3 4 : 51 : 24 : 0.1
+T: 3 4 : 51 : 42 : 0.1
+T: 3 4 : 52 : 79 : 0.1
+T: 3 4 : 52 : 52 : 0.7
+T: 3 4 : 52 : 25 : 0.1
+T: 3 4 : 52 : 43 : 0.1
+T: 3 4 : 53 : 80 : 0.1
+T: 3 4 : 53 : 53 : 0.7
+T: 3 4 : 53 : 26 : 0.1
+T: 3 4 : 53 : 44 : 0.1
+T: 3 4 : 54 : 63 : 0.6
+T: 3 4 : 54 : 27 : 0.1
+T: 3 4 : 54 : 54 : 0.3
+T: 3 4 : 55 : 64 : 0.6
+T: 3 4 : 55 : 28 : 0.1
+T: 3 4 : 55 : 55 : 0.3
+T: 3 4 : 56 : 65 : 0.6
+T: 3 4 : 56 : 29 : 0.1
+T: 3 4 : 56 : 56 : 0.3
+T: 3 4 : 57 : 66 : 0.6
+T: 3 4 : 57 : 30 : 0.1
+T: 3 4 : 57 : 57 : 0.3
+T: 3 4 : 58 : 67 : 0.6
+T: 3 4 : 58 : 31 : 0.1
+T: 3 4 : 58 : 58 : 0.3
+T: 3 4 : 59 : 68 : 0.6
+T: 3 4 : 59 : 32 : 0.1
+T: 3 4 : 59 : 59 : 0.3
+T: 3 4 : 60 : 69 : 0.6
+T: 3 4 : 60 : 33 : 0.1
+T: 3 4 : 60 : 60 : 0.3
+T: 3 4 : 61 : 70 : 0.6
+T: 3 4 : 61 : 34 : 0.1
+T: 3 4 : 61 : 61 : 0.3
+T: 3 4 : 62 : 71 : 0.6
+T: 3 4 : 62 : 35 : 0.1
+T: 3 4 : 62 : 62 : 0.3
+T: 3 4 : 63 : 72 : 0.6
+T: 3 4 : 63 : 63 : 0.2
+T: 3 4 : 63 : 36 : 0.1
+T: 3 4 : 63 : 54 : 0.1
+T: 3 4 : 64 : 73 : 0.6
+T: 3 4 : 64 : 64 : 0.2
+T: 3 4 : 64 : 37 : 0.1
+T: 3 4 : 64 : 55 : 0.1
+T: 3 4 : 65 : 74 : 0.6
+T: 3 4 : 65 : 65 : 0.2
+T: 3 4 : 65 : 38 : 0.1
+T: 3 4 : 65 : 56 : 0.1
+T: 3 4 : 66 : 75 : 0.6
+T: 3 4 : 66 : 66 : 0.2
+T: 3 4 : 66 : 39 : 0.1
+T: 3 4 : 66 : 57 : 0.1
+T: 3 4 : 67 : 76 : 0.6
+T: 3 4 : 67 : 67 : 0.2
+T: 3 4 : 67 : 40 : 0.1
+T: 3 4 : 67 : 58 : 0.1
+T: 3 4 : 68 : 77 : 0.6
+T: 3 4 : 68 : 68 : 0.2
+T: 3 4 : 68 : 41 : 0.1
+T: 3 4 : 68 : 59 : 0.1
+T: 3 4 : 69 : 78 : 0.6
+T: 3 4 : 69 : 69 : 0.2
+T: 3 4 : 69 : 42 : 0.1
+T: 3 4 : 69 : 60 : 0.1
+T: 3 4 : 70 : 79 : 0.6
+T: 3 4 : 70 : 70 : 0.2
+T: 3 4 : 70 : 43 : 0.1
+T: 3 4 : 70 : 61 : 0.1
+T: 3 4 : 71 : 80 : 0.6
+T: 3 4 : 71 : 71 : 0.2
+T: 3 4 : 71 : 44 : 0.1
+T: 3 4 : 71 : 62 : 0.1
+T: 3 4 : 72 : 72 : 0.8
+T: 3 4 : 72 : 45 : 0.1
+T: 3 4 : 72 : 63 : 0.1
+T: 3 4 : 73 : 73 : 0.8
+T: 3 4 : 73 : 46 : 0.1
+T: 3 4 : 73 : 64 : 0.1
+T: 3 4 : 74 : 74 : 0.8
+T: 3 4 : 74 : 47 : 0.1
+T: 3 4 : 74 : 65 : 0.1
+T: 3 4 : 75 : 75 : 0.8
+T: 3 4 : 75 : 48 : 0.1
+T: 3 4 : 75 : 66 : 0.1
+T: 3 4 : 76 : 76 : 0.8
+T: 3 4 : 76 : 49 : 0.1
+T: 3 4 : 76 : 67 : 0.1
+T: 3 4 : 77 : 77 : 0.8
+T: 3 4 : 77 : 50 : 0.1
+T: 3 4 : 77 : 68 : 0.1
+T: 3 3 : 80 : 80 : 0.64
+T: 3 3 : 80 : 79 : 0.08
+T: 3 3 : 80 : 77 : 0.08
+T: 3 3 : 80 : 52 : 0.01
+T: 3 3 : 80 : 50 : 0.01
+T: 3 3 : 80 : 71 : 0.08
+T: 3 3 : 80 : 68 : 0.01
+T: 3 3 : 80 : 53 : 0.08
+T: 3 3 : 80 : 70 : 0.01
+T: 3 3 : 79 : 80 : 0.48
+T: 3 3 : 79 : 79 : 0.16
+T: 3 3 : 79 : 78 : 0.08
+T: 3 3 : 79 : 76 : 0.08
+T: 3 3 : 79 : 71 : 0.06
+T: 3 3 : 79 : 51 : 0.01
+T: 3 3 : 79 : 49 : 0.01
+T: 3 3 : 79 : 70 : 0.02
+T: 3 3 : 79 : 53 : 0.06
+T: 3 3 : 79 : 67 : 0.01
+T: 3 3 : 79 : 52 : 0.02
+T: 3 3 : 79 : 69 : 0.01
+T: 3 3 : 78 : 79 : 0.48
+T: 3 3 : 78 : 78 : 0.24
+T: 3 3 : 78 : 75 : 0.08
+T: 3 3 : 78 : 51 : 0.03
+T: 3 3 : 78 : 48 : 0.01
+T: 3 3 : 78 : 69 : 0.03
+T: 3 3 : 78 : 52 : 0.06
+T: 3 3 : 78 : 66 : 0.01
+T: 3 3 : 78 : 70 : 0.06
+T: 3 3 : 35 : 62 : 0.08
+T: 3 3 : 35 : 61 : 0.01
+T: 3 3 : 35 : 44 : 0.48
+T: 3 3 : 35 : 43 : 0.06
+T: 3 3 : 35 : 41 : 0.06
+T: 3 3 : 35 : 7 : 0.01
+T: 3 3 : 35 : 35 : 0.16
+T: 3 3 : 35 : 5 : 0.01
+T: 3 3 : 35 : 59 : 0.01
+T: 3 3 : 35 : 8 : 0.08
+T: 3 3 : 35 : 32 : 0.02
+T: 3 3 : 35 : 34 : 0.02
+T: 3 3 : 34 : 62 : 0.06
+T: 3 3 : 34 : 61 : 0.02
+T: 3 3 : 34 : 44 : 0.36
+T: 3 3 : 34 : 60 : 0.01
+T: 3 3 : 34 : 43 : 0.12
+T: 3 3 : 34 : 35 : 0.12
+T: 3 3 : 34 : 34 : 0.04
+T: 3 3 : 34 : 40 : 0.06
+T: 3 3 : 34 : 6 : 0.01
+T: 3 3 : 34 : 4 : 0.01
+T: 3 3 : 34 : 58 : 0.01
+T: 3 3 : 34 : 7 : 0.02
+T: 3 3 : 34 : 42 : 0.06
+T: 3 3 : 34 : 8 : 0.06
+T: 3 3 : 34 : 31 : 0.02
+T: 3 3 : 34 : 33 : 0.02
+T: 3 3 : 33 : 61 : 0.06
+T: 3 3 : 33 : 60 : 0.03
+T: 3 3 : 33 : 43 : 0.36
+T: 3 3 : 33 : 42 : 0.18
+T: 3 3 : 33 : 39 : 0.06
+T: 3 3 : 33 : 57 : 0.01
+T: 3 3 : 33 : 6 : 0.03
+T: 3 3 : 33 : 34 : 0.12
+T: 3 3 : 33 : 3 : 0.01
+T: 3 3 : 33 : 7 : 0.06
+T: 3 3 : 33 : 30 : 0.02
+T: 3 3 : 33 : 33 : 0.06
+T: 3 3 : 32 : 62 : 0.01
+T: 3 3 : 32 : 44 : 0.06
+T: 3 3 : 32 : 58 : 0.01
+T: 3 3 : 32 : 41 : 0.42
+T: 3 3 : 32 : 40 : 0.06
+T: 3 3 : 32 : 35 : 0.02
+T: 3 3 : 32 : 32 : 0.14
+T: 3 3 : 32 : 38 : 0.06
+T: 3 3 : 32 : 4 : 0.01
+T: 3 3 : 32 : 2 : 0.01
+T: 3 3 : 32 : 56 : 0.01
+T: 3 3 : 32 : 5 : 0.07
+T: 3 3 : 32 : 59 : 0.07
+T: 3 3 : 32 : 8 : 0.01
+T: 3 3 : 32 : 29 : 0.02
+T: 3 3 : 32 : 31 : 0.02
+T: 3 3 : 31 : 61 : 0.01
+T: 3 3 : 31 : 59 : 0.06
+T: 3 3 : 31 : 58 : 0.01
+T: 3 3 : 31 : 57 : 0.01
+T: 3 3 : 31 : 28 : 0.02
+T: 3 3 : 31 : 7 : 0.01
+T: 3 3 : 31 : 5 : 0.06
+T: 3 3 : 31 : 39 : 0.06
+T: 3 3 : 31 : 41 : 0.36
+T: 3 3 : 31 : 4 : 0.01
+T: 3 3 : 31 : 55 : 0.01
+T: 3 3 : 31 : 1 : 0.01
+T: 3 3 : 31 : 37 : 0.06
+T: 3 3 : 31 : 30 : 0.02
+T: 3 3 : 31 : 31 : 0.02
+T: 3 3 : 31 : 32 : 0.12
+T: 3 3 : 31 : 34 : 0.02
+T: 3 3 : 31 : 3 : 0.01
+T: 3 3 : 31 : 40 : 0.06
+T: 3 3 : 31 : 43 : 0.06
+T: 3 3 : 30 : 60 : 0.01
+T: 3 3 : 30 : 58 : 0.06
+T: 3 3 : 30 : 42 : 0.06
+T: 3 3 : 30 : 39 : 0.12
+T: 3 3 : 30 : 36 : 0.06
+T: 3 3 : 30 : 33 : 0.02
+T: 3 3 : 30 : 31 : 0.12
+T: 3 3 : 30 : 54 : 0.01
+T: 3 3 : 30 : 3 : 0.02
+T: 3 3 : 30 : 0 : 0.01
+T: 3 3 : 30 : 4 : 0.06
+T: 3 3 : 30 : 57 : 0.02
+T: 3 3 : 30 : 40 : 0.36
+T: 3 3 : 30 : 6 : 0.01
+T: 3 3 : 30 : 27 : 0.02
+T: 3 3 : 30 : 30 : 0.04
+T: 3 3 : 29 : 59 : 0.01
+T: 3 3 : 29 : 41 : 0.06
+T: 3 3 : 29 : 55 : 0.01
+T: 3 3 : 29 : 38 : 0.48
+T: 3 3 : 29 : 37 : 0.06
+T: 3 3 : 29 : 2 : 0.08
+T: 3 3 : 29 : 1 : 0.01
+T: 3 3 : 29 : 29 : 0.16
+T: 3 3 : 29 : 56 : 0.08
+T: 3 3 : 29 : 5 : 0.01
+T: 3 3 : 29 : 28 : 0.02
+T: 3 3 : 29 : 32 : 0.02
+T: 3 3 : 28 : 58 : 0.01
+T: 3 3 : 28 : 56 : 0.06
+T: 3 3 : 28 : 40 : 0.06
+T: 3 3 : 28 : 54 : 0.01
+T: 3 3 : 28 : 37 : 0.12
+T: 3 3 : 28 : 31 : 0.02
+T: 3 3 : 28 : 29 : 0.12
+T: 3 3 : 28 : 1 : 0.02
+T: 3 3 : 28 : 0 : 0.01
+T: 3 3 : 28 : 28 : 0.04
+T: 3 3 : 28 : 36 : 0.06
+T: 3 3 : 28 : 2 : 0.06
+T: 3 3 : 28 : 55 : 0.02
+T: 3 3 : 28 : 38 : 0.36
+T: 3 3 : 28 : 4 : 0.01
+T: 3 3 : 28 : 27 : 0.02
+T: 3 3 : 27 : 57 : 0.01
+T: 3 3 : 27 : 55 : 0.06
+T: 3 3 : 27 : 39 : 0.06
+T: 3 3 : 27 : 36 : 0.18
+T: 3 3 : 27 : 1 : 0.06
+T: 3 3 : 27 : 0 : 0.03
+T: 3 3 : 27 : 28 : 0.12
+T: 3 3 : 27 : 54 : 0.03
+T: 3 3 : 27 : 37 : 0.36
+T: 3 3 : 27 : 3 : 0.01
+T: 3 3 : 27 : 27 : 0.06
+T: 3 3 : 27 : 30 : 0.02
+T: 3 3 : 26 : 53 : 0.08
+T: 3 3 : 26 : 52 : 0.01
+T: 3 3 : 26 : 50 : 0.01
+T: 3 3 : 26 : 16 : 0.01
+T: 3 3 : 26 : 23 : 0.08
+T: 3 3 : 26 : 14 : 0.01
+T: 3 3 : 26 : 17 : 0.08
+T: 3 3 : 26 : 25 : 0.08
+T: 3 3 : 26 : 26 : 0.64
+T: 3 3 : 25 : 53 : 0.06
+T: 3 3 : 25 : 52 : 0.02
+T: 3 3 : 25 : 26 : 0.48
+T: 3 3 : 25 : 25 : 0.16
+T: 3 3 : 25 : 49 : 0.01
+T: 3 3 : 25 : 15 : 0.01
+T: 3 3 : 25 : 22 : 0.08
+T: 3 3 : 25 : 13 : 0.01
+T: 3 3 : 25 : 16 : 0.02
+T: 3 3 : 25 : 51 : 0.01
+T: 3 3 : 25 : 17 : 0.06
+T: 3 3 : 25 : 24 : 0.08
+T: 3 3 : 24 : 52 : 0.06
+T: 3 3 : 24 : 51 : 0.03
+T: 3 3 : 24 : 48 : 0.01
+T: 3 3 : 24 : 15 : 0.03
+T: 3 3 : 24 : 12 : 0.01
+T: 3 3 : 24 : 16 : 0.06
+T: 3 3 : 24 : 21 : 0.08
+T: 3 3 : 24 : 24 : 0.24
+T: 3 3 : 24 : 25 : 0.48
+T: 3 3 : 23 : 53 : 0.01
+T: 3 3 : 23 : 50 : 0.07
+T: 3 3 : 23 : 49 : 0.01
+T: 3 3 : 23 : 26 : 0.08
+T: 3 3 : 23 : 23 : 0.56
+T: 3 3 : 23 : 47 : 0.01
+T: 3 3 : 23 : 13 : 0.01
+T: 3 3 : 23 : 20 : 0.08
+T: 3 3 : 23 : 11 : 0.01
+T: 3 3 : 23 : 14 : 0.07
+T: 3 3 : 23 : 17 : 0.01
+T: 3 3 : 23 : 22 : 0.08
+T: 3 3 : 22 : 52 : 0.01
+T: 3 3 : 22 : 49 : 0.01
+T: 3 3 : 22 : 25 : 0.08
+T: 3 3 : 22 : 23 : 0.48
+T: 3 3 : 22 : 22 : 0.08
+T: 3 3 : 22 : 21 : 0.08
+T: 3 3 : 22 : 46 : 0.01
+T: 3 3 : 22 : 12 : 0.01
+T: 3 3 : 22 : 19 : 0.08
+T: 3 3 : 22 : 10 : 0.01
+T: 3 3 : 22 : 13 : 0.01
+T: 3 3 : 22 : 48 : 0.01
+T: 3 3 : 22 : 14 : 0.06
+T: 3 3 : 22 : 50 : 0.06
+T: 3 3 : 22 : 16 : 0.01
+T: 3 3 : 21 : 51 : 0.01
+T: 3 3 : 21 : 48 : 0.02
+T: 3 3 : 21 : 45 : 0.01
+T: 3 3 : 21 : 24 : 0.08
+T: 3 3 : 21 : 22 : 0.48
+T: 3 3 : 21 : 12 : 0.02
+T: 3 3 : 21 : 9 : 0.01
+T: 3 3 : 21 : 13 : 0.06
+T: 3 3 : 21 : 49 : 0.06
+T: 3 3 : 21 : 15 : 0.01
+T: 3 3 : 21 : 18 : 0.08
+T: 3 3 : 21 : 21 : 0.16
+T: 3 3 : 20 : 50 : 0.01
+T: 3 3 : 20 : 47 : 0.08
+T: 3 3 : 20 : 46 : 0.01
+T: 3 3 : 20 : 11 : 0.08
+T: 3 3 : 20 : 10 : 0.01
+T: 3 3 : 20 : 14 : 0.01
+T: 3 3 : 20 : 19 : 0.08
+T: 3 3 : 20 : 20 : 0.64
+T: 3 3 : 20 : 23 : 0.08
+T: 3 3 : 19 : 49 : 0.01
+T: 3 3 : 19 : 46 : 0.02
+T: 3 3 : 19 : 22 : 0.08
+T: 3 3 : 19 : 20 : 0.48
+T: 3 3 : 19 : 10 : 0.02
+T: 3 3 : 19 : 9 : 0.01
+T: 3 3 : 19 : 45 : 0.01
+T: 3 3 : 19 : 11 : 0.06
+T: 3 3 : 19 : 18 : 0.08
+T: 3 3 : 19 : 47 : 0.06
+T: 3 3 : 19 : 13 : 0.01
+T: 3 3 : 19 : 19 : 0.16
+T: 3 3 : 18 : 48 : 0.01
+T: 3 3 : 18 : 45 : 0.03
+T: 3 3 : 18 : 10 : 0.06
+T: 3 3 : 18 : 9 : 0.03
+T: 3 3 : 18 : 46 : 0.06
+T: 3 3 : 18 : 12 : 0.01
+T: 3 3 : 18 : 19 : 0.48
+T: 3 3 : 18 : 18 : 0.24
+T: 3 3 : 18 : 21 : 0.08
+T: 3 3 : 17 : 44 : 0.08
+T: 3 3 : 17 : 43 : 0.01
+T: 3 3 : 17 : 26 : 0.48
+T: 3 3 : 17 : 23 : 0.06
+T: 3 3 : 17 : 41 : 0.01
+T: 3 3 : 17 : 7 : 0.01
+T: 3 3 : 17 : 14 : 0.02
+T: 3 3 : 17 : 5 : 0.01
+T: 3 3 : 17 : 25 : 0.06
+T: 3 3 : 17 : 8 : 0.08
+T: 3 3 : 17 : 16 : 0.02
+T: 3 3 : 17 : 17 : 0.16
+T: 3 3 : 16 : 44 : 0.06
+T: 3 3 : 16 : 43 : 0.02
+T: 3 3 : 16 : 26 : 0.36
+T: 3 3 : 16 : 22 : 0.06
+T: 3 3 : 16 : 17 : 0.12
+T: 3 3 : 16 : 16 : 0.04
+T: 3 3 : 16 : 40 : 0.01
+T: 3 3 : 16 : 6 : 0.01
+T: 3 3 : 16 : 13 : 0.02
+T: 3 3 : 16 : 4 : 0.01
+T: 3 3 : 16 : 24 : 0.06
+T: 3 3 : 16 : 7 : 0.02
+T: 3 3 : 16 : 42 : 0.01
+T: 3 3 : 16 : 25 : 0.12
+T: 3 3 : 16 : 8 : 0.06
+T: 3 3 : 16 : 15 : 0.02
+T: 3 3 : 5 : 35 : 0.01
+T: 3 3 : 5 : 32 : 0.07
+T: 3 3 : 5 : 29 : 0.01
+T: 3 3 : 5 : 17 : 0.06
+T: 3 3 : 5 : 31 : 0.01
+T: 3 3 : 5 : 14 : 0.42
+T: 3 3 : 5 : 4 : 0.03
+T: 3 3 : 5 : 11 : 0.06
+T: 3 3 : 5 : 2 : 0.03
+T: 3 3 : 5 : 5 : 0.21
+T: 3 3 : 5 : 8 : 0.03
+T: 3 3 : 5 : 13 : 0.06
+T: 3 3 : 4 : 34 : 0.01
+T: 3 3 : 4 : 32 : 0.06
+T: 3 3 : 4 : 28 : 0.01
+T: 3 3 : 4 : 16 : 0.06
+T: 3 3 : 4 : 31 : 0.01
+T: 3 3 : 4 : 14 : 0.36
+T: 3 3 : 4 : 30 : 0.01
+T: 3 3 : 4 : 13 : 0.06
+T: 3 3 : 4 : 12 : 0.06
+T: 3 3 : 4 : 3 : 0.03
+T: 3 3 : 4 : 10 : 0.06
+T: 3 3 : 4 : 1 : 0.03
+T: 3 3 : 4 : 4 : 0.03
+T: 3 3 : 4 : 5 : 0.18
+T: 3 3 : 4 : 7 : 0.03
+T: 3 3 : 3 : 33 : 0.01
+T: 3 3 : 3 : 31 : 0.06
+T: 3 3 : 3 : 27 : 0.01
+T: 3 3 : 3 : 15 : 0.06
+T: 3 3 : 3 : 30 : 0.02
+T: 3 3 : 3 : 13 : 0.36
+T: 3 3 : 3 : 3 : 0.06
+T: 3 3 : 3 : 0 : 0.03
+T: 3 3 : 3 : 4 : 0.18
+T: 3 3 : 3 : 6 : 0.03
+T: 3 3 : 3 : 9 : 0.06
+T: 3 3 : 3 : 12 : 0.12
+T: 3 3 : 2 : 32 : 0.01
+T: 3 3 : 2 : 29 : 0.08
+T: 3 3 : 2 : 2 : 0.24
+T: 3 3 : 2 : 1 : 0.03
+T: 3 3 : 2 : 5 : 0.03
+T: 3 3 : 2 : 10 : 0.06
+T: 3 3 : 2 : 28 : 0.01
+T: 3 3 : 2 : 11 : 0.48
+T: 3 3 : 2 : 14 : 0.06
+T: 3 3 : 0 : 30 : 0.01
+T: 3 3 : 0 : 28 : 0.06
+T: 3 3 : 0 : 1 : 0.18
+T: 3 3 : 0 : 0 : 0.09
+T: 3 3 : 0 : 3 : 0.03
+T: 3 3 : 0 : 27 : 0.03
+T: 3 3 : 0 : 10 : 0.36
+T: 3 3 : 0 : 9 : 0.18
+T: 3 3 : 0 : 12 : 0.06
+T: 3 3 : 1 : 31 : 0.01
+T: 3 3 : 1 : 29 : 0.06
+T: 3 3 : 1 : 13 : 0.06
+T: 3 3 : 1 : 28 : 0.02
+T: 3 3 : 1 : 11 : 0.36
+T: 3 3 : 1 : 1 : 0.06
+T: 3 3 : 1 : 0 : 0.03
+T: 3 3 : 1 : 2 : 0.18
+T: 3 3 : 1 : 9 : 0.06
+T: 3 3 : 1 : 4 : 0.03
+T: 3 3 : 1 : 27 : 0.01
+T: 3 3 : 1 : 10 : 0.12
+T: 3 3 : 6 : 34 : 0.06
+T: 3 3 : 6 : 30 : 0.01
+T: 3 3 : 6 : 6 : 0.09
+T: 3 3 : 6 : 3 : 0.03
+T: 3 3 : 6 : 7 : 0.18
+T: 3 3 : 6 : 12 : 0.06
+T: 3 3 : 6 : 15 : 0.18
+T: 3 3 : 6 : 33 : 0.03
+T: 3 3 : 6 : 16 : 0.36
+T: 3 3 : 7 : 35 : 0.06
+T: 3 3 : 7 : 31 : 0.01
+T: 3 3 : 7 : 34 : 0.02
+T: 3 3 : 7 : 17 : 0.36
+T: 3 3 : 7 : 33 : 0.01
+T: 3 3 : 7 : 16 : 0.12
+T: 3 3 : 7 : 6 : 0.03
+T: 3 3 : 7 : 13 : 0.06
+T: 3 3 : 7 : 4 : 0.03
+T: 3 3 : 7 : 7 : 0.06
+T: 3 3 : 7 : 8 : 0.18
+T: 3 3 : 7 : 15 : 0.06
+T: 3 3 : 8 : 35 : 0.08
+T: 3 3 : 8 : 32 : 0.01
+T: 3 3 : 8 : 7 : 0.03
+T: 3 3 : 8 : 14 : 0.06
+T: 3 3 : 8 : 5 : 0.03
+T: 3 3 : 8 : 8 : 0.24
+T: 3 3 : 8 : 16 : 0.06
+T: 3 3 : 8 : 34 : 0.01
+T: 3 3 : 8 : 17 : 0.48
+T: 3 3 : 9 : 39 : 0.01
+T: 3 3 : 9 : 21 : 0.06
+T: 3 3 : 9 : 36 : 0.03
+T: 3 3 : 9 : 19 : 0.36
+T: 3 3 : 9 : 18 : 0.18
+T: 3 3 : 9 : 1 : 0.06
+T: 3 3 : 9 : 0 : 0.03
+T: 3 3 : 9 : 37 : 0.06
+T: 3 3 : 9 : 3 : 0.01
+T: 3 3 : 9 : 10 : 0.12
+T: 3 3 : 9 : 9 : 0.06
+T: 3 3 : 9 : 12 : 0.02
+T: 3 3 : 10 : 40 : 0.01
+T: 3 3 : 10 : 22 : 0.06
+T: 3 3 : 10 : 37 : 0.02
+T: 3 3 : 10 : 20 : 0.36
+T: 3 3 : 10 : 13 : 0.02
+T: 3 3 : 10 : 11 : 0.12
+T: 3 3 : 10 : 18 : 0.06
+T: 3 3 : 10 : 1 : 0.02
+T: 3 3 : 10 : 0 : 0.01
+T: 3 3 : 10 : 36 : 0.01
+T: 3 3 : 10 : 19 : 0.12
+T: 3 3 : 10 : 2 : 0.06
+T: 3 3 : 10 : 9 : 0.02
+T: 3 3 : 10 : 38 : 0.06
+T: 3 3 : 10 : 4 : 0.01
+T: 3 3 : 10 : 10 : 0.04
+T: 3 3 : 11 : 41 : 0.01
+T: 3 3 : 11 : 38 : 0.08
+T: 3 3 : 11 : 23 : 0.06
+T: 3 3 : 11 : 37 : 0.01
+T: 3 3 : 11 : 20 : 0.48
+T: 3 3 : 11 : 19 : 0.06
+T: 3 3 : 11 : 2 : 0.08
+T: 3 3 : 11 : 1 : 0.01
+T: 3 3 : 11 : 5 : 0.01
+T: 3 3 : 11 : 10 : 0.02
+T: 3 3 : 11 : 11 : 0.16
+T: 3 3 : 11 : 14 : 0.02
+T: 3 3 : 12 : 42 : 0.01
+T: 3 3 : 12 : 36 : 0.01
+T: 3 3 : 12 : 24 : 0.06
+T: 3 3 : 12 : 39 : 0.02
+T: 3 3 : 12 : 22 : 0.36
+T: 3 3 : 12 : 18 : 0.06
+T: 3 3 : 12 : 15 : 0.02
+T: 3 3 : 12 : 13 : 0.12
+T: 3 3 : 12 : 3 : 0.02
+T: 3 3 : 12 : 0 : 0.01
+T: 3 3 : 12 : 21 : 0.12
+T: 3 3 : 12 : 4 : 0.06
+T: 3 3 : 12 : 40 : 0.06
+T: 3 3 : 12 : 6 : 0.01
+T: 3 3 : 12 : 9 : 0.02
+T: 3 3 : 12 : 12 : 0.04
+T: 3 3 : 13 : 43 : 0.01
+T: 3 3 : 13 : 39 : 0.01
+T: 3 3 : 13 : 7 : 0.01
+T: 3 3 : 13 : 5 : 0.06
+T: 3 3 : 13 : 22 : 0.06
+T: 3 3 : 13 : 41 : 0.06
+T: 3 3 : 13 : 4 : 0.01
+T: 3 3 : 13 : 21 : 0.06
+T: 3 3 : 13 : 1 : 0.01
+T: 3 3 : 13 : 10 : 0.02
+T: 3 3 : 13 : 40 : 0.01
+T: 3 3 : 13 : 3 : 0.01
+T: 3 3 : 13 : 37 : 0.01
+T: 3 3 : 13 : 12 : 0.02
+T: 3 3 : 13 : 13 : 0.02
+T: 3 3 : 13 : 14 : 0.12
+T: 3 3 : 13 : 16 : 0.02
+T: 3 3 : 13 : 19 : 0.06
+T: 3 3 : 13 : 23 : 0.36
+T: 3 3 : 13 : 25 : 0.06
+T: 3 3 : 14 : 44 : 0.01
+T: 3 3 : 14 : 41 : 0.07
+T: 3 3 : 14 : 26 : 0.06
+T: 3 3 : 14 : 40 : 0.01
+T: 3 3 : 14 : 23 : 0.42
+T: 3 3 : 14 : 20 : 0.06
+T: 3 3 : 14 : 17 : 0.02
+T: 3 3 : 14 : 14 : 0.14
+T: 3 3 : 14 : 38 : 0.01
+T: 3 3 : 14 : 4 : 0.01
+T: 3 3 : 14 : 11 : 0.02
+T: 3 3 : 14 : 2 : 0.01
+T: 3 3 : 14 : 22 : 0.06
+T: 3 3 : 14 : 5 : 0.07
+T: 3 3 : 14 : 8 : 0.01
+T: 3 3 : 14 : 13 : 0.02
+T: 3 3 : 15 : 43 : 0.06
+T: 3 3 : 15 : 39 : 0.01
+T: 3 3 : 15 : 42 : 0.03
+T: 3 3 : 15 : 25 : 0.36
+T: 3 3 : 15 : 21 : 0.06
+T: 3 3 : 15 : 6 : 0.03
+T: 3 3 : 15 : 3 : 0.01
+T: 3 3 : 15 : 24 : 0.18
+T: 3 3 : 15 : 7 : 0.06
+T: 3 3 : 15 : 12 : 0.02
+T: 3 3 : 15 : 15 : 0.06
+T: 3 3 : 15 : 16 : 0.12
+T: 3 3 : 36 : 66 : 0.01
+T: 3 3 : 36 : 48 : 0.06
+T: 3 3 : 36 : 39 : 0.01
+T: 3 3 : 36 : 37 : 0.06
+T: 3 3 : 36 : 36 : 0.03
+T: 3 3 : 36 : 9 : 0.03
+T: 3 3 : 36 : 64 : 0.06
+T: 3 3 : 36 : 30 : 0.01
+T: 3 3 : 36 : 63 : 0.03
+T: 3 3 : 36 : 46 : 0.36
+T: 3 3 : 36 : 12 : 0.01
+T: 3 3 : 36 : 10 : 0.06
+T: 3 3 : 36 : 27 : 0.03
+T: 3 3 : 36 : 45 : 0.18
+T: 3 3 : 36 : 28 : 0.06
+T: 3 3 : 37 : 67 : 0.01
+T: 3 3 : 37 : 63 : 0.01
+T: 3 3 : 37 : 65 : 0.06
+T: 3 3 : 37 : 28 : 0.02
+T: 3 3 : 37 : 11 : 0.06
+T: 3 3 : 37 : 45 : 0.06
+T: 3 3 : 37 : 64 : 0.02
+T: 3 3 : 37 : 27 : 0.01
+T: 3 3 : 37 : 13 : 0.01
+T: 3 3 : 37 : 10 : 0.02
+T: 3 3 : 37 : 47 : 0.36
+T: 3 3 : 37 : 29 : 0.06
+T: 3 3 : 37 : 9 : 0.01
+T: 3 3 : 37 : 46 : 0.12
+T: 3 3 : 37 : 31 : 0.01
+T: 3 3 : 37 : 36 : 0.01
+T: 3 3 : 37 : 37 : 0.02
+T: 3 3 : 37 : 38 : 0.06
+T: 3 3 : 37 : 40 : 0.01
+T: 3 3 : 37 : 49 : 0.06
+T: 3 3 : 38 : 68 : 0.01
+T: 3 3 : 38 : 50 : 0.06
+T: 3 3 : 38 : 64 : 0.01
+T: 3 3 : 38 : 47 : 0.48
+T: 3 3 : 38 : 41 : 0.01
+T: 3 3 : 38 : 38 : 0.08
+T: 3 3 : 38 : 37 : 0.01
+T: 3 3 : 38 : 32 : 0.01
+T: 3 3 : 38 : 10 : 0.01
+T: 3 3 : 38 : 65 : 0.08
+T: 3 3 : 38 : 14 : 0.01
+T: 3 3 : 38 : 11 : 0.08
+T: 3 3 : 38 : 28 : 0.01
+T: 3 3 : 38 : 46 : 0.06
+T: 3 3 : 38 : 29 : 0.08
+T: 3 3 : 39 : 69 : 0.01
+T: 3 3 : 39 : 66 : 0.02
+T: 3 3 : 39 : 63 : 0.01
+T: 3 3 : 39 : 15 : 0.01
+T: 3 3 : 39 : 27 : 0.01
+T: 3 3 : 39 : 13 : 0.06
+T: 3 3 : 39 : 67 : 0.06
+T: 3 3 : 39 : 30 : 0.02
+T: 3 3 : 39 : 9 : 0.01
+T: 3 3 : 39 : 49 : 0.36
+T: 3 3 : 39 : 12 : 0.02
+T: 3 3 : 39 : 31 : 0.06
+T: 3 3 : 39 : 48 : 0.12
+T: 3 3 : 39 : 33 : 0.01
+T: 3 3 : 39 : 36 : 0.01
+T: 3 3 : 39 : 39 : 0.02
+T: 3 3 : 39 : 40 : 0.06
+T: 3 3 : 39 : 42 : 0.01
+T: 3 3 : 39 : 45 : 0.06
+T: 3 3 : 39 : 51 : 0.06
+T: 3 3 : 40 : 70 : 0.01
+T: 3 3 : 40 : 66 : 0.01
+T: 3 3 : 40 : 64 : 0.01
+T: 3 3 : 40 : 52 : 0.06
+T: 3 3 : 40 : 48 : 0.06
+T: 3 3 : 40 : 16 : 0.01
+T: 3 3 : 40 : 28 : 0.01
+T: 3 3 : 40 : 14 : 0.06
+T: 3 3 : 40 : 68 : 0.06
+T: 3 3 : 40 : 31 : 0.01
+T: 3 3 : 40 : 50 : 0.36
+T: 3 3 : 40 : 13 : 0.01
+T: 3 3 : 40 : 67 : 0.01
+T: 3 3 : 40 : 30 : 0.01
+T: 3 3 : 40 : 10 : 0.01
+T: 3 3 : 40 : 49 : 0.06
+T: 3 3 : 40 : 12 : 0.01
+T: 3 3 : 40 : 46 : 0.06
+T: 3 3 : 40 : 32 : 0.06
+T: 3 3 : 40 : 34 : 0.01
+T: 3 3 : 40 : 37 : 0.01
+T: 3 3 : 40 : 39 : 0.01
+T: 3 3 : 40 : 40 : 0.01
+T: 3 3 : 40 : 41 : 0.06
+T: 3 3 : 40 : 43 : 0.01
+T: 3 3 : 41 : 71 : 0.01
+T: 3 3 : 41 : 67 : 0.01
+T: 3 3 : 41 : 65 : 0.01
+T: 3 3 : 41 : 29 : 0.01
+T: 3 3 : 41 : 68 : 0.07
+T: 3 3 : 41 : 31 : 0.01
+T: 3 3 : 41 : 14 : 0.07
+T: 3 3 : 41 : 17 : 0.01
+T: 3 3 : 41 : 11 : 0.01
+T: 3 3 : 41 : 47 : 0.06
+T: 3 3 : 41 : 32 : 0.07
+T: 3 3 : 41 : 49 : 0.06
+T: 3 3 : 41 : 35 : 0.01
+T: 3 3 : 41 : 38 : 0.01
+T: 3 3 : 41 : 40 : 0.01
+T: 3 3 : 41 : 41 : 0.07
+T: 3 3 : 41 : 44 : 0.01
+T: 3 3 : 41 : 13 : 0.01
+T: 3 3 : 41 : 50 : 0.42
+T: 3 3 : 41 : 53 : 0.06
+T: 3 3 : 42 : 70 : 0.06
+T: 3 3 : 42 : 69 : 0.03
+T: 3 3 : 42 : 52 : 0.36
+T: 3 3 : 42 : 48 : 0.06
+T: 3 3 : 42 : 43 : 0.06
+T: 3 3 : 42 : 42 : 0.03
+T: 3 3 : 42 : 39 : 0.01
+T: 3 3 : 42 : 66 : 0.01
+T: 3 3 : 42 : 15 : 0.03
+T: 3 3 : 42 : 12 : 0.01
+T: 3 3 : 42 : 33 : 0.03
+T: 3 3 : 42 : 16 : 0.06
+T: 3 3 : 42 : 30 : 0.01
+T: 3 3 : 42 : 51 : 0.18
+T: 3 3 : 42 : 34 : 0.06
+T: 3 3 : 43 : 69 : 0.01
+T: 3 3 : 43 : 67 : 0.01
+T: 3 3 : 43 : 70 : 0.02
+T: 3 3 : 43 : 33 : 0.01
+T: 3 3 : 43 : 31 : 0.01
+T: 3 3 : 43 : 17 : 0.06
+T: 3 3 : 43 : 71 : 0.06
+T: 3 3 : 43 : 34 : 0.02
+T: 3 3 : 43 : 51 : 0.06
+T: 3 3 : 43 : 13 : 0.01
+T: 3 3 : 43 : 49 : 0.06
+T: 3 3 : 43 : 35 : 0.06
+T: 3 3 : 43 : 15 : 0.01
+T: 3 3 : 43 : 52 : 0.12
+T: 3 3 : 43 : 40 : 0.01
+T: 3 3 : 43 : 42 : 0.01
+T: 3 3 : 43 : 43 : 0.02
+T: 3 3 : 43 : 44 : 0.06
+T: 3 3 : 43 : 16 : 0.02
+T: 3 3 : 43 : 53 : 0.36
+T: 3 3 : 44 : 71 : 0.08
+T: 3 3 : 44 : 70 : 0.01
+T: 3 3 : 44 : 53 : 0.48
+T: 3 3 : 44 : 44 : 0.08
+T: 3 3 : 44 : 43 : 0.01
+T: 3 3 : 44 : 41 : 0.01
+T: 3 3 : 44 : 50 : 0.06
+T: 3 3 : 44 : 16 : 0.01
+T: 3 3 : 44 : 14 : 0.01
+T: 3 3 : 44 : 52 : 0.06
+T: 3 3 : 44 : 35 : 0.08
+T: 3 3 : 44 : 32 : 0.01
+T: 3 3 : 44 : 68 : 0.01
+T: 3 3 : 44 : 17 : 0.08
+T: 3 3 : 44 : 34 : 0.01
+T: 3 3 : 45 : 75 : 0.01
+T: 3 3 : 45 : 48 : 0.07
+T: 3 3 : 45 : 46 : 0.42
+T: 3 3 : 45 : 45 : 0.21
+T: 3 3 : 45 : 18 : 0.03
+T: 3 3 : 45 : 73 : 0.06
+T: 3 3 : 45 : 39 : 0.01
+T: 3 3 : 45 : 72 : 0.03
+T: 3 3 : 45 : 21 : 0.01
+T: 3 3 : 45 : 19 : 0.06
+T: 3 3 : 45 : 36 : 0.03
+T: 3 3 : 45 : 37 : 0.06
+T: 3 3 : 46 : 76 : 0.01
+T: 3 3 : 46 : 49 : 0.07
+T: 3 3 : 46 : 47 : 0.42
+T: 3 3 : 46 : 46 : 0.14
+T: 3 3 : 46 : 45 : 0.07
+T: 3 3 : 46 : 74 : 0.06
+T: 3 3 : 46 : 40 : 0.01
+T: 3 3 : 46 : 72 : 0.01
+T: 3 3 : 46 : 38 : 0.06
+T: 3 3 : 46 : 18 : 0.01
+T: 3 3 : 46 : 73 : 0.02
+T: 3 3 : 46 : 22 : 0.01
+T: 3 3 : 46 : 19 : 0.02
+T: 3 3 : 46 : 36 : 0.01
+T: 3 3 : 46 : 20 : 0.06
+T: 3 3 : 46 : 37 : 0.02
+T: 3 3 : 47 : 77 : 0.01
+T: 3 3 : 47 : 73 : 0.01
+T: 3 3 : 47 : 50 : 0.07
+T: 3 3 : 47 : 47 : 0.56
+T: 3 3 : 47 : 46 : 0.07
+T: 3 3 : 47 : 41 : 0.01
+T: 3 3 : 47 : 19 : 0.01
+T: 3 3 : 47 : 74 : 0.08
+T: 3 3 : 47 : 23 : 0.01
+T: 3 3 : 47 : 20 : 0.08
+T: 3 3 : 47 : 37 : 0.01
+T: 3 3 : 47 : 38 : 0.08
+T: 3 3 : 48 : 78 : 0.01
+T: 3 3 : 48 : 51 : 0.07
+T: 3 3 : 48 : 49 : 0.42
+T: 3 3 : 48 : 48 : 0.14
+T: 3 3 : 48 : 45 : 0.07
+T: 3 3 : 48 : 76 : 0.06
+T: 3 3 : 48 : 42 : 0.01
+T: 3 3 : 48 : 40 : 0.06
+T: 3 3 : 48 : 72 : 0.01
+T: 3 3 : 48 : 21 : 0.02
+T: 3 3 : 48 : 18 : 0.01
+T: 3 3 : 48 : 39 : 0.02
+T: 3 3 : 48 : 22 : 0.06
+T: 3 3 : 48 : 36 : 0.01
+T: 3 3 : 48 : 75 : 0.02
+T: 3 3 : 48 : 24 : 0.01
+T: 3 3 : 49 : 79 : 0.01
+T: 3 3 : 49 : 75 : 0.01
+T: 3 3 : 49 : 25 : 0.01
+T: 3 3 : 49 : 37 : 0.01
+T: 3 3 : 49 : 23 : 0.06
+T: 3 3 : 49 : 77 : 0.06
+T: 3 3 : 49 : 40 : 0.01
+T: 3 3 : 49 : 22 : 0.01
+T: 3 3 : 49 : 76 : 0.01
+T: 3 3 : 49 : 39 : 0.01
+T: 3 3 : 49 : 73 : 0.01
+T: 3 3 : 49 : 19 : 0.01
+T: 3 3 : 49 : 21 : 0.01
+T: 3 3 : 49 : 41 : 0.06
+T: 3 3 : 49 : 43 : 0.01
+T: 3 3 : 49 : 46 : 0.07
+T: 3 3 : 49 : 48 : 0.07
+T: 3 3 : 49 : 49 : 0.07
+T: 3 3 : 49 : 50 : 0.42
+T: 3 3 : 49 : 52 : 0.07
+T: 3 3 : 50 : 80 : 0.01
+T: 3 3 : 50 : 76 : 0.01
+T: 3 3 : 50 : 53 : 0.07
+T: 3 3 : 50 : 50 : 0.49
+T: 3 3 : 50 : 49 : 0.07
+T: 3 3 : 50 : 47 : 0.07
+T: 3 3 : 50 : 44 : 0.01
+T: 3 3 : 50 : 41 : 0.07
+T: 3 3 : 50 : 22 : 0.01
+T: 3 3 : 50 : 20 : 0.01
+T: 3 3 : 50 : 77 : 0.07
+T: 3 3 : 50 : 26 : 0.01
+T: 3 3 : 50 : 74 : 0.01
+T: 3 3 : 50 : 23 : 0.07
+T: 3 3 : 50 : 40 : 0.01
+T: 3 3 : 50 : 38 : 0.01
+T: 3 3 : 51 : 79 : 0.06
+T: 3 3 : 51 : 78 : 0.03
+T: 3 3 : 51 : 52 : 0.42
+T: 3 3 : 51 : 51 : 0.21
+T: 3 3 : 51 : 48 : 0.07
+T: 3 3 : 51 : 75 : 0.01
+T: 3 3 : 51 : 24 : 0.03
+T: 3 3 : 51 : 21 : 0.01
+T: 3 3 : 51 : 42 : 0.03
+T: 3 3 : 51 : 25 : 0.06
+T: 3 3 : 51 : 39 : 0.01
+T: 3 3 : 51 : 43 : 0.06
+T: 3 3 : 52 : 80 : 0.06
+T: 3 3 : 52 : 79 : 0.02
+T: 3 3 : 52 : 53 : 0.42
+T: 3 3 : 52 : 52 : 0.14
+T: 3 3 : 52 : 51 : 0.07
+T: 3 3 : 52 : 49 : 0.07
+T: 3 3 : 52 : 78 : 0.01
+T: 3 3 : 52 : 44 : 0.06
+T: 3 3 : 52 : 24 : 0.01
+T: 3 3 : 52 : 22 : 0.01
+T: 3 3 : 52 : 43 : 0.02
+T: 3 3 : 52 : 26 : 0.06
+T: 3 3 : 52 : 40 : 0.01
+T: 3 3 : 52 : 76 : 0.01
+T: 3 3 : 52 : 25 : 0.02
+T: 3 3 : 52 : 42 : 0.01
+T: 3 3 : 53 : 80 : 0.08
+T: 3 3 : 53 : 79 : 0.01
+T: 3 3 : 53 : 53 : 0.56
+T: 3 3 : 53 : 52 : 0.07
+T: 3 3 : 53 : 50 : 0.07
+T: 3 3 : 53 : 25 : 0.01
+T: 3 3 : 53 : 23 : 0.01
+T: 3 3 : 53 : 44 : 0.08
+T: 3 3 : 53 : 41 : 0.01
+T: 3 3 : 53 : 77 : 0.01
+T: 3 3 : 53 : 26 : 0.08
+T: 3 3 : 53 : 43 : 0.01
+T: 3 3 : 54 : 66 : 0.06
+T: 3 3 : 54 : 63 : 0.18
+T: 3 3 : 54 : 28 : 0.06
+T: 3 3 : 54 : 27 : 0.03
+T: 3 3 : 54 : 55 : 0.18
+T: 3 3 : 54 : 64 : 0.36
+T: 3 3 : 54 : 30 : 0.01
+T: 3 3 : 54 : 54 : 0.09
+T: 3 3 : 54 : 57 : 0.03
+T: 3 3 : 55 : 67 : 0.06
+T: 3 3 : 55 : 64 : 0.12
+T: 3 3 : 55 : 58 : 0.03
+T: 3 3 : 55 : 56 : 0.18
+T: 3 3 : 55 : 28 : 0.02
+T: 3 3 : 55 : 27 : 0.01
+T: 3 3 : 55 : 55 : 0.06
+T: 3 3 : 55 : 63 : 0.06
+T: 3 3 : 55 : 29 : 0.06
+T: 3 3 : 55 : 65 : 0.36
+T: 3 3 : 55 : 31 : 0.01
+T: 3 3 : 55 : 54 : 0.03
+T: 3 3 : 56 : 68 : 0.06
+T: 3 3 : 56 : 65 : 0.48
+T: 3 3 : 56 : 64 : 0.06
+T: 3 3 : 56 : 29 : 0.08
+T: 3 3 : 56 : 28 : 0.01
+T: 3 3 : 56 : 56 : 0.24
+T: 3 3 : 56 : 32 : 0.01
+T: 3 3 : 56 : 55 : 0.03
+T: 3 3 : 56 : 59 : 0.03
+T: 3 3 : 57 : 69 : 0.06
+T: 3 3 : 57 : 66 : 0.12
+T: 3 3 : 57 : 63 : 0.06
+T: 3 3 : 57 : 60 : 0.03
+T: 3 3 : 57 : 58 : 0.18
+T: 3 3 : 57 : 30 : 0.02
+T: 3 3 : 57 : 27 : 0.01
+T: 3 3 : 57 : 31 : 0.06
+T: 3 3 : 57 : 67 : 0.36
+T: 3 3 : 57 : 33 : 0.01
+T: 3 3 : 57 : 54 : 0.03
+T: 3 3 : 57 : 57 : 0.06
+T: 3 3 : 58 : 70 : 0.06
+T: 3 3 : 58 : 67 : 0.06
+T: 3 3 : 58 : 61 : 0.03
+T: 3 3 : 58 : 59 : 0.18
+T: 3 3 : 58 : 58 : 0.03
+T: 3 3 : 58 : 57 : 0.03
+T: 3 3 : 58 : 64 : 0.06
+T: 3 3 : 58 : 30 : 0.01
+T: 3 3 : 58 : 28 : 0.01
+T: 3 3 : 58 : 31 : 0.01
+T: 3 3 : 58 : 66 : 0.06
+T: 3 3 : 58 : 32 : 0.06
+T: 3 3 : 58 : 68 : 0.36
+T: 3 3 : 58 : 34 : 0.01
+T: 3 3 : 58 : 55 : 0.03
+T: 3 3 : 59 : 71 : 0.06
+T: 3 3 : 59 : 68 : 0.42
+T: 3 3 : 59 : 67 : 0.06
+T: 3 3 : 59 : 62 : 0.03
+T: 3 3 : 59 : 59 : 0.21
+T: 3 3 : 59 : 65 : 0.06
+T: 3 3 : 59 : 31 : 0.01
+T: 3 3 : 59 : 29 : 0.01
+T: 3 3 : 59 : 32 : 0.07
+T: 3 3 : 59 : 35 : 0.01
+T: 3 3 : 59 : 56 : 0.03
+T: 3 3 : 59 : 58 : 0.03
+T: 3 3 : 60 : 70 : 0.36
+T: 3 3 : 60 : 69 : 0.18
+T: 3 3 : 60 : 66 : 0.06
+T: 3 3 : 60 : 33 : 0.03
+T: 3 3 : 60 : 61 : 0.18
+T: 3 3 : 60 : 30 : 0.01
+T: 3 3 : 60 : 34 : 0.06
+T: 3 3 : 60 : 57 : 0.03
+T: 3 3 : 60 : 60 : 0.09
+T: 3 3 : 61 : 71 : 0.36
+T: 3 3 : 61 : 70 : 0.12
+T: 3 3 : 61 : 62 : 0.18
+T: 3 3 : 61 : 61 : 0.06
+T: 3 3 : 61 : 67 : 0.06
+T: 3 3 : 61 : 33 : 0.01
+T: 3 3 : 61 : 31 : 0.01
+T: 3 3 : 61 : 34 : 0.02
+T: 3 3 : 61 : 69 : 0.06
+T: 3 3 : 61 : 35 : 0.06
+T: 3 3 : 61 : 58 : 0.03
+T: 3 3 : 61 : 60 : 0.03
+T: 3 3 : 62 : 71 : 0.48
+T: 3 3 : 62 : 70 : 0.06
+T: 3 3 : 62 : 68 : 0.06
+T: 3 3 : 62 : 34 : 0.01
+T: 3 3 : 62 : 62 : 0.24
+T: 3 3 : 62 : 32 : 0.01
+T: 3 3 : 62 : 35 : 0.08
+T: 3 3 : 62 : 59 : 0.03
+T: 3 3 : 62 : 61 : 0.03
+T: 3 3 : 63 : 75 : 0.06
+T: 3 3 : 63 : 66 : 0.02
+T: 3 3 : 63 : 64 : 0.12
+T: 3 3 : 63 : 63 : 0.06
+T: 3 3 : 63 : 36 : 0.03
+T: 3 3 : 63 : 57 : 0.01
+T: 3 3 : 63 : 73 : 0.36
+T: 3 3 : 63 : 39 : 0.01
+T: 3 3 : 63 : 37 : 0.06
+T: 3 3 : 63 : 54 : 0.03
+T: 3 3 : 63 : 72 : 0.18
+T: 3 3 : 63 : 55 : 0.06
+T: 3 3 : 64 : 76 : 0.06
+T: 3 3 : 64 : 67 : 0.02
+T: 3 3 : 64 : 65 : 0.12
+T: 3 3 : 64 : 64 : 0.04
+T: 3 3 : 64 : 63 : 0.02
+T: 3 3 : 64 : 58 : 0.01
+T: 3 3 : 64 : 73 : 0.12
+T: 3 3 : 64 : 56 : 0.06
+T: 3 3 : 64 : 36 : 0.01
+T: 3 3 : 64 : 74 : 0.36
+T: 3 3 : 64 : 40 : 0.01
+T: 3 3 : 64 : 37 : 0.02
+T: 3 3 : 64 : 54 : 0.01
+T: 3 3 : 64 : 72 : 0.06
+T: 3 3 : 64 : 38 : 0.06
+T: 3 3 : 64 : 55 : 0.02
+T: 3 3 : 65 : 77 : 0.06
+T: 3 3 : 65 : 74 : 0.48
+T: 3 3 : 65 : 68 : 0.02
+T: 3 3 : 65 : 65 : 0.16
+T: 3 3 : 65 : 64 : 0.02
+T: 3 3 : 65 : 59 : 0.01
+T: 3 3 : 65 : 37 : 0.01
+T: 3 3 : 65 : 41 : 0.01
+T: 3 3 : 65 : 38 : 0.08
+T: 3 3 : 65 : 55 : 0.01
+T: 3 3 : 65 : 73 : 0.06
+T: 3 3 : 65 : 56 : 0.08
+T: 3 3 : 66 : 78 : 0.06
+T: 3 3 : 66 : 72 : 0.06
+T: 3 3 : 66 : 69 : 0.02
+T: 3 3 : 66 : 67 : 0.12
+T: 3 3 : 66 : 66 : 0.04
+T: 3 3 : 66 : 63 : 0.02
+T: 3 3 : 66 : 60 : 0.01
+T: 3 3 : 66 : 75 : 0.12
+T: 3 3 : 66 : 58 : 0.06
+T: 3 3 : 66 : 39 : 0.02
+T: 3 3 : 66 : 36 : 0.01
+T: 3 3 : 66 : 57 : 0.02
+T: 3 3 : 66 : 40 : 0.06
+T: 3 3 : 66 : 54 : 0.01
+T: 3 3 : 66 : 76 : 0.36
+T: 3 3 : 66 : 42 : 0.01
+T: 3 3 : 67 : 79 : 0.06
+T: 3 3 : 67 : 75 : 0.06
+T: 3 3 : 67 : 43 : 0.01
+T: 3 3 : 67 : 55 : 0.01
+T: 3 3 : 67 : 41 : 0.06
+T: 3 3 : 67 : 58 : 0.01
+T: 3 3 : 67 : 77 : 0.36
+T: 3 3 : 67 : 40 : 0.01
+T: 3 3 : 67 : 57 : 0.01
+T: 3 3 : 67 : 37 : 0.01
+T: 3 3 : 67 : 76 : 0.06
+T: 3 3 : 67 : 39 : 0.01
+T: 3 3 : 67 : 73 : 0.06
+T: 3 3 : 67 : 59 : 0.06
+T: 3 3 : 67 : 61 : 0.01
+T: 3 3 : 67 : 64 : 0.02
+T: 3 3 : 67 : 66 : 0.02
+T: 3 3 : 67 : 67 : 0.02
+T: 3 3 : 67 : 68 : 0.12
+T: 3 3 : 67 : 70 : 0.02
+T: 3 3 : 68 : 80 : 0.06
+T: 3 3 : 68 : 77 : 0.42
+T: 3 3 : 68 : 71 : 0.02
+T: 3 3 : 68 : 68 : 0.14
+T: 3 3 : 68 : 67 : 0.02
+T: 3 3 : 68 : 65 : 0.02
+T: 3 3 : 68 : 62 : 0.01
+T: 3 3 : 68 : 76 : 0.06
+T: 3 3 : 68 : 59 : 0.07
+T: 3 3 : 68 : 74 : 0.06
+T: 3 3 : 68 : 40 : 0.01
+T: 3 3 : 68 : 38 : 0.01
+T: 3 3 : 68 : 44 : 0.01
+T: 3 3 : 68 : 41 : 0.07
+T: 3 3 : 68 : 58 : 0.01
+T: 3 3 : 68 : 56 : 0.01
+T: 3 3 : 69 : 79 : 0.36
+T: 3 3 : 69 : 75 : 0.06
+T: 3 3 : 69 : 70 : 0.12
+T: 3 3 : 69 : 69 : 0.06
+T: 3 3 : 69 : 66 : 0.02
+T: 3 3 : 69 : 42 : 0.03
+T: 3 3 : 69 : 39 : 0.01
+T: 3 3 : 69 : 60 : 0.03
+T: 3 3 : 69 : 43 : 0.06
+T: 3 3 : 69 : 57 : 0.01
+T: 3 3 : 69 : 78 : 0.18
+T: 3 3 : 69 : 61 : 0.06
+T: 3 3 : 70 : 80 : 0.36
+T: 3 3 : 70 : 71 : 0.12
+T: 3 3 : 70 : 70 : 0.04
+T: 3 3 : 70 : 69 : 0.02
+T: 3 3 : 70 : 67 : 0.02
+T: 3 3 : 70 : 79 : 0.12
+T: 3 3 : 70 : 62 : 0.06
+T: 3 3 : 70 : 76 : 0.06
+T: 3 3 : 70 : 42 : 0.01
+T: 3 3 : 70 : 40 : 0.01
+T: 3 3 : 70 : 78 : 0.06
+T: 3 3 : 70 : 61 : 0.02
+T: 3 3 : 70 : 44 : 0.06
+T: 3 3 : 70 : 58 : 0.01
+T: 3 3 : 70 : 43 : 0.02
+T: 3 3 : 70 : 60 : 0.01
+T: 3 3 : 71 : 80 : 0.48
+T: 3 3 : 71 : 71 : 0.16
+T: 3 3 : 71 : 70 : 0.02
+T: 3 3 : 71 : 68 : 0.02
+T: 3 3 : 71 : 77 : 0.06
+T: 3 3 : 71 : 43 : 0.01
+T: 3 3 : 71 : 41 : 0.01
+T: 3 3 : 71 : 79 : 0.06
+T: 3 3 : 71 : 62 : 0.08
+T: 3 3 : 71 : 59 : 0.01
+T: 3 3 : 71 : 44 : 0.08
+T: 3 3 : 71 : 61 : 0.01
+T: 3 3 : 72 : 75 : 0.08
+T: 3 3 : 72 : 73 : 0.48
+T: 3 3 : 72 : 72 : 0.24
+T: 3 3 : 72 : 45 : 0.03
+T: 3 3 : 72 : 66 : 0.01
+T: 3 3 : 72 : 48 : 0.01
+T: 3 3 : 72 : 46 : 0.06
+T: 3 3 : 72 : 63 : 0.03
+T: 3 3 : 72 : 64 : 0.06
+T: 3 3 : 73 : 76 : 0.08
+T: 3 3 : 73 : 74 : 0.48
+T: 3 3 : 73 : 73 : 0.16
+T: 3 3 : 73 : 72 : 0.08
+T: 3 3 : 73 : 67 : 0.01
+T: 3 3 : 73 : 65 : 0.06
+T: 3 3 : 73 : 45 : 0.01
+T: 3 3 : 73 : 49 : 0.01
+T: 3 3 : 73 : 46 : 0.02
+T: 3 3 : 73 : 63 : 0.01
+T: 3 3 : 73 : 47 : 0.06
+T: 3 3 : 73 : 64 : 0.02
+T: 3 3 : 74 : 77 : 0.08
+T: 3 3 : 74 : 74 : 0.64
+T: 3 3 : 74 : 73 : 0.08
+T: 3 3 : 74 : 68 : 0.01
+T: 3 3 : 74 : 46 : 0.01
+T: 3 3 : 74 : 50 : 0.01
+T: 3 3 : 74 : 47 : 0.08
+T: 3 3 : 74 : 64 : 0.01
+T: 3 3 : 74 : 65 : 0.08
+T: 3 3 : 75 : 78 : 0.08
+T: 3 3 : 75 : 76 : 0.48
+T: 3 3 : 75 : 75 : 0.16
+T: 3 3 : 75 : 72 : 0.08
+T: 3 3 : 75 : 69 : 0.01
+T: 3 3 : 75 : 67 : 0.06
+T: 3 3 : 75 : 48 : 0.02
+T: 3 3 : 75 : 45 : 0.01
+T: 3 3 : 75 : 66 : 0.02
+T: 3 3 : 75 : 49 : 0.06
+T: 3 3 : 75 : 63 : 0.01
+T: 3 3 : 75 : 51 : 0.01
+T: 3 3 : 76 : 79 : 0.08
+T: 3 3 : 76 : 77 : 0.48
+T: 3 3 : 76 : 76 : 0.08
+T: 3 3 : 76 : 75 : 0.08
+T: 3 3 : 76 : 73 : 0.08
+T: 3 3 : 76 : 70 : 0.01
+T: 3 3 : 76 : 68 : 0.06
+T: 3 3 : 76 : 48 : 0.01
+T: 3 3 : 76 : 46 : 0.01
+T: 3 3 : 76 : 66 : 0.01
+T: 3 3 : 76 : 49 : 0.01
+T: 3 3 : 76 : 67 : 0.01
+T: 3 3 : 76 : 50 : 0.06
+T: 3 3 : 76 : 64 : 0.01
+T: 3 3 : 76 : 52 : 0.01
+T: 3 3 : 77 : 80 : 0.08
+T: 3 3 : 77 : 77 : 0.56
+T: 3 3 : 77 : 76 : 0.08
+T: 3 3 : 77 : 74 : 0.08
+T: 3 3 : 77 : 71 : 0.01
+T: 3 3 : 77 : 68 : 0.07
+T: 3 3 : 77 : 49 : 0.01
+T: 3 3 : 77 : 47 : 0.01
+T: 3 3 : 77 : 53 : 0.01
+T: 3 3 : 77 : 50 : 0.07
+T: 3 3 : 77 : 67 : 0.01
+T: 3 3 : 77 : 65 : 0.01
+T: 3 2 : 80 : 80 : 0.24
+T: 3 2 : 80 : 79 : 0.48
+T: 3 2 : 80 : 77 : 0.08
+T: 3 2 : 80 : 52 : 0.06
+T: 3 2 : 80 : 50 : 0.01
+T: 3 2 : 80 : 71 : 0.03
+T: 3 2 : 80 : 68 : 0.01
+T: 3 2 : 80 : 53 : 0.03
+T: 3 2 : 80 : 70 : 0.06
+T: 3 2 : 79 : 80 : 0.08
+T: 3 2 : 79 : 79 : 0.16
+T: 3 2 : 79 : 78 : 0.48
+T: 3 2 : 79 : 76 : 0.08
+T: 3 2 : 79 : 71 : 0.01
+T: 3 2 : 79 : 51 : 0.06
+T: 3 2 : 79 : 49 : 0.01
+T: 3 2 : 79 : 70 : 0.02
+T: 3 2 : 79 : 53 : 0.01
+T: 3 2 : 79 : 67 : 0.01
+T: 3 2 : 79 : 52 : 0.02
+T: 3 2 : 79 : 69 : 0.06
+T: 3 2 : 78 : 79 : 0.08
+T: 3 2 : 78 : 78 : 0.64
+T: 3 2 : 78 : 75 : 0.08
+T: 3 2 : 78 : 51 : 0.08
+T: 3 2 : 78 : 48 : 0.01
+T: 3 2 : 78 : 69 : 0.08
+T: 3 2 : 78 : 52 : 0.01
+T: 3 2 : 78 : 66 : 0.01
+T: 3 2 : 78 : 70 : 0.01
+T: 3 2 : 35 : 62 : 0.03
+T: 3 2 : 35 : 61 : 0.06
+T: 3 2 : 35 : 44 : 0.18
+T: 3 2 : 35 : 43 : 0.36
+T: 3 2 : 35 : 41 : 0.06
+T: 3 2 : 35 : 7 : 0.06
+T: 3 2 : 35 : 35 : 0.06
+T: 3 2 : 35 : 5 : 0.01
+T: 3 2 : 35 : 59 : 0.01
+T: 3 2 : 35 : 8 : 0.03
+T: 3 2 : 35 : 32 : 0.02
+T: 3 2 : 35 : 34 : 0.12
+T: 3 2 : 34 : 62 : 0.01
+T: 3 2 : 34 : 61 : 0.02
+T: 3 2 : 34 : 44 : 0.06
+T: 3 2 : 34 : 60 : 0.06
+T: 3 2 : 34 : 43 : 0.12
+T: 3 2 : 34 : 35 : 0.02
+T: 3 2 : 34 : 34 : 0.04
+T: 3 2 : 34 : 40 : 0.06
+T: 3 2 : 34 : 6 : 0.06
+T: 3 2 : 34 : 4 : 0.01
+T: 3 2 : 34 : 58 : 0.01
+T: 3 2 : 34 : 7 : 0.02
+T: 3 2 : 34 : 42 : 0.36
+T: 3 2 : 34 : 8 : 0.01
+T: 3 2 : 34 : 31 : 0.02
+T: 3 2 : 34 : 33 : 0.12
+T: 3 2 : 33 : 61 : 0.01
+T: 3 2 : 33 : 60 : 0.08
+T: 3 2 : 33 : 43 : 0.06
+T: 3 2 : 33 : 42 : 0.48
+T: 3 2 : 33 : 39 : 0.06
+T: 3 2 : 33 : 57 : 0.01
+T: 3 2 : 33 : 6 : 0.08
+T: 3 2 : 33 : 34 : 0.02
+T: 3 2 : 33 : 3 : 0.01
+T: 3 2 : 33 : 7 : 0.01
+T: 3 2 : 33 : 30 : 0.02
+T: 3 2 : 33 : 33 : 0.16
+T: 3 2 : 32 : 62 : 0.01
+T: 3 2 : 32 : 44 : 0.06
+T: 3 2 : 32 : 58 : 0.06
+T: 3 2 : 32 : 41 : 0.12
+T: 3 2 : 32 : 40 : 0.36
+T: 3 2 : 32 : 35 : 0.02
+T: 3 2 : 32 : 32 : 0.04
+T: 3 2 : 32 : 38 : 0.06
+T: 3 2 : 32 : 4 : 0.06
+T: 3 2 : 32 : 2 : 0.01
+T: 3 2 : 32 : 56 : 0.01
+T: 3 2 : 32 : 5 : 0.02
+T: 3 2 : 32 : 59 : 0.02
+T: 3 2 : 32 : 8 : 0.01
+T: 3 2 : 32 : 29 : 0.02
+T: 3 2 : 32 : 31 : 0.12
+T: 3 2 : 31 : 61 : 0.01
+T: 3 2 : 31 : 59 : 0.01
+T: 3 2 : 31 : 58 : 0.01
+T: 3 2 : 31 : 57 : 0.06
+T: 3 2 : 31 : 28 : 0.02
+T: 3 2 : 31 : 7 : 0.01
+T: 3 2 : 31 : 5 : 0.01
+T: 3 2 : 31 : 39 : 0.36
+T: 3 2 : 31 : 41 : 0.06
+T: 3 2 : 31 : 4 : 0.01
+T: 3 2 : 31 : 55 : 0.01
+T: 3 2 : 31 : 1 : 0.01
+T: 3 2 : 31 : 37 : 0.06
+T: 3 2 : 31 : 30 : 0.12
+T: 3 2 : 31 : 31 : 0.02
+T: 3 2 : 31 : 32 : 0.02
+T: 3 2 : 31 : 34 : 0.02
+T: 3 2 : 31 : 3 : 0.06
+T: 3 2 : 31 : 40 : 0.06
+T: 3 2 : 31 : 43 : 0.06
+T: 3 2 : 30 : 60 : 0.01
+T: 3 2 : 30 : 58 : 0.01
+T: 3 2 : 30 : 42 : 0.06
+T: 3 2 : 30 : 39 : 0.42
+T: 3 2 : 30 : 36 : 0.06
+T: 3 2 : 30 : 33 : 0.02
+T: 3 2 : 30 : 31 : 0.02
+T: 3 2 : 30 : 54 : 0.01
+T: 3 2 : 30 : 3 : 0.07
+T: 3 2 : 30 : 0 : 0.01
+T: 3 2 : 30 : 4 : 0.01
+T: 3 2 : 30 : 57 : 0.07
+T: 3 2 : 30 : 40 : 0.06
+T: 3 2 : 30 : 6 : 0.01
+T: 3 2 : 30 : 27 : 0.02
+T: 3 2 : 30 : 30 : 0.14
+T: 3 2 : 29 : 59 : 0.01
+T: 3 2 : 29 : 41 : 0.06
+T: 3 2 : 29 : 55 : 0.06
+T: 3 2 : 29 : 38 : 0.18
+T: 3 2 : 29 : 37 : 0.36
+T: 3 2 : 29 : 2 : 0.03
+T: 3 2 : 29 : 1 : 0.06
+T: 3 2 : 29 : 29 : 0.06
+T: 3 2 : 29 : 56 : 0.03
+T: 3 2 : 29 : 5 : 0.01
+T: 3 2 : 29 : 28 : 0.12
+T: 3 2 : 29 : 32 : 0.02
+T: 3 2 : 28 : 58 : 0.01
+T: 3 2 : 28 : 56 : 0.01
+T: 3 2 : 28 : 40 : 0.06
+T: 3 2 : 28 : 54 : 0.06
+T: 3 2 : 28 : 37 : 0.12
+T: 3 2 : 28 : 31 : 0.02
+T: 3 2 : 28 : 29 : 0.02
+T: 3 2 : 28 : 1 : 0.02
+T: 3 2 : 28 : 0 : 0.06
+T: 3 2 : 28 : 28 : 0.04
+T: 3 2 : 28 : 36 : 0.36
+T: 3 2 : 28 : 2 : 0.01
+T: 3 2 : 28 : 55 : 0.02
+T: 3 2 : 28 : 38 : 0.06
+T: 3 2 : 28 : 4 : 0.01
+T: 3 2 : 28 : 27 : 0.12
+T: 3 2 : 27 : 57 : 0.01
+T: 3 2 : 27 : 55 : 0.01
+T: 3 2 : 27 : 39 : 0.06
+T: 3 2 : 27 : 36 : 0.48
+T: 3 2 : 27 : 1 : 0.01
+T: 3 2 : 27 : 0 : 0.08
+T: 3 2 : 27 : 28 : 0.02
+T: 3 2 : 27 : 54 : 0.08
+T: 3 2 : 27 : 37 : 0.06
+T: 3 2 : 27 : 3 : 0.01
+T: 3 2 : 27 : 27 : 0.16
+T: 3 2 : 27 : 30 : 0.02
+T: 3 2 : 26 : 53 : 0.03
+T: 3 2 : 26 : 52 : 0.06
+T: 3 2 : 26 : 50 : 0.01
+T: 3 2 : 26 : 16 : 0.06
+T: 3 2 : 26 : 23 : 0.08
+T: 3 2 : 26 : 14 : 0.01
+T: 3 2 : 26 : 17 : 0.03
+T: 3 2 : 26 : 25 : 0.48
+T: 3 2 : 26 : 26 : 0.24
+T: 3 2 : 25 : 53 : 0.01
+T: 3 2 : 25 : 52 : 0.02
+T: 3 2 : 25 : 26 : 0.08
+T: 3 2 : 25 : 25 : 0.16
+T: 3 2 : 25 : 49 : 0.01
+T: 3 2 : 25 : 15 : 0.06
+T: 3 2 : 25 : 22 : 0.08
+T: 3 2 : 25 : 13 : 0.01
+T: 3 2 : 25 : 16 : 0.02
+T: 3 2 : 25 : 51 : 0.06
+T: 3 2 : 25 : 17 : 0.01
+T: 3 2 : 25 : 24 : 0.48
+T: 3 2 : 24 : 52 : 0.01
+T: 3 2 : 24 : 51 : 0.08
+T: 3 2 : 24 : 48 : 0.01
+T: 3 2 : 24 : 15 : 0.08
+T: 3 2 : 24 : 12 : 0.01
+T: 3 2 : 24 : 16 : 0.01
+T: 3 2 : 24 : 21 : 0.08
+T: 3 2 : 24 : 24 : 0.64
+T: 3 2 : 24 : 25 : 0.08
+T: 3 2 : 23 : 53 : 0.01
+T: 3 2 : 23 : 50 : 0.02
+T: 3 2 : 23 : 49 : 0.06
+T: 3 2 : 23 : 26 : 0.08
+T: 3 2 : 23 : 23 : 0.16
+T: 3 2 : 23 : 47 : 0.01
+T: 3 2 : 23 : 13 : 0.06
+T: 3 2 : 23 : 20 : 0.08
+T: 3 2 : 23 : 11 : 0.01
+T: 3 2 : 23 : 14 : 0.02
+T: 3 2 : 23 : 17 : 0.01
+T: 3 2 : 23 : 22 : 0.48
+T: 3 2 : 22 : 52 : 0.01
+T: 3 2 : 22 : 49 : 0.01
+T: 3 2 : 22 : 25 : 0.08
+T: 3 2 : 22 : 23 : 0.08
+T: 3 2 : 22 : 22 : 0.08
+T: 3 2 : 22 : 21 : 0.48
+T: 3 2 : 22 : 46 : 0.01
+T: 3 2 : 22 : 12 : 0.06
+T: 3 2 : 22 : 19 : 0.08
+T: 3 2 : 22 : 10 : 0.01
+T: 3 2 : 22 : 13 : 0.01
+T: 3 2 : 22 : 48 : 0.06
+T: 3 2 : 22 : 14 : 0.01
+T: 3 2 : 22 : 50 : 0.01
+T: 3 2 : 22 : 16 : 0.01
+T: 3 2 : 21 : 51 : 0.01
+T: 3 2 : 21 : 48 : 0.07
+T: 3 2 : 21 : 45 : 0.01
+T: 3 2 : 21 : 24 : 0.08
+T: 3 2 : 21 : 22 : 0.08
+T: 3 2 : 21 : 12 : 0.07
+T: 3 2 : 21 : 9 : 0.01
+T: 3 2 : 21 : 13 : 0.01
+T: 3 2 : 21 : 49 : 0.01
+T: 3 2 : 21 : 15 : 0.01
+T: 3 2 : 21 : 18 : 0.08
+T: 3 2 : 21 : 21 : 0.56
+T: 3 2 : 20 : 50 : 0.01
+T: 3 2 : 20 : 47 : 0.03
+T: 3 2 : 20 : 46 : 0.06
+T: 3 2 : 20 : 11 : 0.03
+T: 3 2 : 20 : 10 : 0.06
+T: 3 2 : 20 : 14 : 0.01
+T: 3 2 : 20 : 19 : 0.48
+T: 3 2 : 20 : 20 : 0.24
+T: 3 2 : 20 : 23 : 0.08
+T: 3 2 : 19 : 49 : 0.01
+T: 3 2 : 19 : 46 : 0.02
+T: 3 2 : 19 : 22 : 0.08
+T: 3 2 : 19 : 20 : 0.08
+T: 3 2 : 19 : 10 : 0.02
+T: 3 2 : 19 : 9 : 0.06
+T: 3 2 : 19 : 45 : 0.06
+T: 3 2 : 19 : 11 : 0.01
+T: 3 2 : 19 : 18 : 0.48
+T: 3 2 : 19 : 47 : 0.01
+T: 3 2 : 19 : 13 : 0.01
+T: 3 2 : 19 : 19 : 0.16
+T: 3 2 : 18 : 48 : 0.01
+T: 3 2 : 18 : 45 : 0.08
+T: 3 2 : 18 : 10 : 0.01
+T: 3 2 : 18 : 9 : 0.08
+T: 3 2 : 18 : 46 : 0.01
+T: 3 2 : 18 : 12 : 0.01
+T: 3 2 : 18 : 19 : 0.08
+T: 3 2 : 18 : 18 : 0.64
+T: 3 2 : 18 : 21 : 0.08
+T: 3 2 : 17 : 44 : 0.03
+T: 3 2 : 17 : 43 : 0.06
+T: 3 2 : 17 : 26 : 0.18
+T: 3 2 : 17 : 23 : 0.06
+T: 3 2 : 17 : 41 : 0.01
+T: 3 2 : 17 : 7 : 0.06
+T: 3 2 : 17 : 14 : 0.02
+T: 3 2 : 17 : 5 : 0.01
+T: 3 2 : 17 : 25 : 0.36
+T: 3 2 : 17 : 8 : 0.03
+T: 3 2 : 17 : 16 : 0.12
+T: 3 2 : 17 : 17 : 0.06
+T: 3 2 : 16 : 44 : 0.01
+T: 3 2 : 16 : 43 : 0.02
+T: 3 2 : 16 : 26 : 0.06
+T: 3 2 : 16 : 22 : 0.06
+T: 3 2 : 16 : 17 : 0.02
+T: 3 2 : 16 : 16 : 0.04
+T: 3 2 : 16 : 40 : 0.01
+T: 3 2 : 16 : 6 : 0.06
+T: 3 2 : 16 : 13 : 0.02
+T: 3 2 : 16 : 4 : 0.01
+T: 3 2 : 16 : 24 : 0.36
+T: 3 2 : 16 : 7 : 0.02
+T: 3 2 : 16 : 42 : 0.06
+T: 3 2 : 16 : 25 : 0.12
+T: 3 2 : 16 : 8 : 0.01
+T: 3 2 : 16 : 15 : 0.12
+T: 3 2 : 5 : 35 : 0.01
+T: 3 2 : 5 : 32 : 0.02
+T: 3 2 : 5 : 29 : 0.01
+T: 3 2 : 5 : 17 : 0.06
+T: 3 2 : 5 : 31 : 0.06
+T: 3 2 : 5 : 14 : 0.12
+T: 3 2 : 5 : 4 : 0.18
+T: 3 2 : 5 : 11 : 0.06
+T: 3 2 : 5 : 2 : 0.03
+T: 3 2 : 5 : 5 : 0.06
+T: 3 2 : 5 : 8 : 0.03
+T: 3 2 : 5 : 13 : 0.36
+T: 3 2 : 4 : 34 : 0.01
+T: 3 2 : 4 : 32 : 0.01
+T: 3 2 : 4 : 28 : 0.01
+T: 3 2 : 4 : 16 : 0.06
+T: 3 2 : 4 : 31 : 0.01
+T: 3 2 : 4 : 14 : 0.06
+T: 3 2 : 4 : 30 : 0.06
+T: 3 2 : 4 : 13 : 0.06
+T: 3 2 : 4 : 12 : 0.36
+T: 3 2 : 4 : 3 : 0.18
+T: 3 2 : 4 : 10 : 0.06
+T: 3 2 : 4 : 1 : 0.03
+T: 3 2 : 4 : 4 : 0.03
+T: 3 2 : 4 : 5 : 0.03
+T: 3 2 : 4 : 7 : 0.03
+T: 3 2 : 3 : 33 : 0.01
+T: 3 2 : 3 : 31 : 0.01
+T: 3 2 : 3 : 27 : 0.01
+T: 3 2 : 3 : 15 : 0.06
+T: 3 2 : 3 : 30 : 0.07
+T: 3 2 : 3 : 13 : 0.06
+T: 3 2 : 3 : 3 : 0.21
+T: 3 2 : 3 : 0 : 0.03
+T: 3 2 : 3 : 4 : 0.03
+T: 3 2 : 3 : 6 : 0.03
+T: 3 2 : 3 : 9 : 0.06
+T: 3 2 : 3 : 12 : 0.42
+T: 3 2 : 2 : 32 : 0.01
+T: 3 2 : 2 : 29 : 0.03
+T: 3 2 : 2 : 2 : 0.09
+T: 3 2 : 2 : 1 : 0.18
+T: 3 2 : 2 : 5 : 0.03
+T: 3 2 : 2 : 10 : 0.36
+T: 3 2 : 2 : 28 : 0.06
+T: 3 2 : 2 : 11 : 0.18
+T: 3 2 : 2 : 14 : 0.06
+T: 3 2 : 0 : 30 : 0.01
+T: 3 2 : 0 : 28 : 0.01
+T: 3 2 : 0 : 1 : 0.03
+T: 3 2 : 0 : 0 : 0.24
+T: 3 2 : 0 : 3 : 0.03
+T: 3 2 : 0 : 27 : 0.08
+T: 3 2 : 0 : 10 : 0.06
+T: 3 2 : 0 : 9 : 0.48
+T: 3 2 : 0 : 12 : 0.06
+T: 3 2 : 1 : 31 : 0.01
+T: 3 2 : 1 : 29 : 0.01
+T: 3 2 : 1 : 13 : 0.06
+T: 3 2 : 1 : 28 : 0.02
+T: 3 2 : 1 : 11 : 0.06
+T: 3 2 : 1 : 1 : 0.06
+T: 3 2 : 1 : 0 : 0.18
+T: 3 2 : 1 : 2 : 0.03
+T: 3 2 : 1 : 9 : 0.36
+T: 3 2 : 1 : 4 : 0.03
+T: 3 2 : 1 : 27 : 0.06
+T: 3 2 : 1 : 10 : 0.12
+T: 3 2 : 6 : 34 : 0.01
+T: 3 2 : 6 : 30 : 0.01
+T: 3 2 : 6 : 6 : 0.24
+T: 3 2 : 6 : 3 : 0.03
+T: 3 2 : 6 : 7 : 0.03
+T: 3 2 : 6 : 12 : 0.06
+T: 3 2 : 6 : 15 : 0.48
+T: 3 2 : 6 : 33 : 0.08
+T: 3 2 : 6 : 16 : 0.06
+T: 3 2 : 7 : 35 : 0.01
+T: 3 2 : 7 : 31 : 0.01
+T: 3 2 : 7 : 34 : 0.02
+T: 3 2 : 7 : 17 : 0.06
+T: 3 2 : 7 : 33 : 0.06
+T: 3 2 : 7 : 16 : 0.12
+T: 3 2 : 7 : 6 : 0.18
+T: 3 2 : 7 : 13 : 0.06
+T: 3 2 : 7 : 4 : 0.03
+T: 3 2 : 7 : 7 : 0.06
+T: 3 2 : 7 : 8 : 0.03
+T: 3 2 : 7 : 15 : 0.36
+T: 3 2 : 8 : 35 : 0.03
+T: 3 2 : 8 : 32 : 0.01
+T: 3 2 : 8 : 7 : 0.18
+T: 3 2 : 8 : 14 : 0.06
+T: 3 2 : 8 : 5 : 0.03
+T: 3 2 : 8 : 8 : 0.09
+T: 3 2 : 8 : 16 : 0.36
+T: 3 2 : 8 : 34 : 0.06
+T: 3 2 : 8 : 17 : 0.18
+T: 3 2 : 9 : 39 : 0.01
+T: 3 2 : 9 : 21 : 0.06
+T: 3 2 : 9 : 36 : 0.08
+T: 3 2 : 9 : 19 : 0.06
+T: 3 2 : 9 : 18 : 0.48
+T: 3 2 : 9 : 1 : 0.01
+T: 3 2 : 9 : 0 : 0.08
+T: 3 2 : 9 : 37 : 0.01
+T: 3 2 : 9 : 3 : 0.01
+T: 3 2 : 9 : 10 : 0.02
+T: 3 2 : 9 : 9 : 0.16
+T: 3 2 : 9 : 12 : 0.02
+T: 3 2 : 10 : 40 : 0.01
+T: 3 2 : 10 : 22 : 0.06
+T: 3 2 : 10 : 37 : 0.02
+T: 3 2 : 10 : 20 : 0.06
+T: 3 2 : 10 : 13 : 0.02
+T: 3 2 : 10 : 11 : 0.02
+T: 3 2 : 10 : 18 : 0.36
+T: 3 2 : 10 : 1 : 0.02
+T: 3 2 : 10 : 0 : 0.06
+T: 3 2 : 10 : 36 : 0.06
+T: 3 2 : 10 : 19 : 0.12
+T: 3 2 : 10 : 2 : 0.01
+T: 3 2 : 10 : 9 : 0.12
+T: 3 2 : 10 : 38 : 0.01
+T: 3 2 : 10 : 4 : 0.01
+T: 3 2 : 10 : 10 : 0.04
+T: 3 2 : 11 : 41 : 0.01
+T: 3 2 : 11 : 38 : 0.03
+T: 3 2 : 11 : 23 : 0.06
+T: 3 2 : 11 : 37 : 0.06
+T: 3 2 : 11 : 20 : 0.18
+T: 3 2 : 11 : 19 : 0.36
+T: 3 2 : 11 : 2 : 0.03
+T: 3 2 : 11 : 1 : 0.06
+T: 3 2 : 11 : 5 : 0.01
+T: 3 2 : 11 : 10 : 0.12
+T: 3 2 : 11 : 11 : 0.06
+T: 3 2 : 11 : 14 : 0.02
+T: 3 2 : 12 : 42 : 0.01
+T: 3 2 : 12 : 36 : 0.01
+T: 3 2 : 12 : 24 : 0.06
+T: 3 2 : 12 : 39 : 0.07
+T: 3 2 : 12 : 22 : 0.06
+T: 3 2 : 12 : 18 : 0.06
+T: 3 2 : 12 : 15 : 0.02
+T: 3 2 : 12 : 13 : 0.02
+T: 3 2 : 12 : 3 : 0.07
+T: 3 2 : 12 : 0 : 0.01
+T: 3 2 : 12 : 21 : 0.42
+T: 3 2 : 12 : 4 : 0.01
+T: 3 2 : 12 : 40 : 0.01
+T: 3 2 : 12 : 6 : 0.01
+T: 3 2 : 12 : 9 : 0.02
+T: 3 2 : 12 : 12 : 0.14
+T: 3 2 : 13 : 43 : 0.01
+T: 3 2 : 13 : 39 : 0.06
+T: 3 2 : 13 : 7 : 0.01
+T: 3 2 : 13 : 5 : 0.01
+T: 3 2 : 13 : 22 : 0.06
+T: 3 2 : 13 : 41 : 0.01
+T: 3 2 : 13 : 4 : 0.01
+T: 3 2 : 13 : 21 : 0.36
+T: 3 2 : 13 : 1 : 0.01
+T: 3 2 : 13 : 10 : 0.02
+T: 3 2 : 13 : 40 : 0.01
+T: 3 2 : 13 : 3 : 0.06
+T: 3 2 : 13 : 37 : 0.01
+T: 3 2 : 13 : 12 : 0.12
+T: 3 2 : 13 : 13 : 0.02
+T: 3 2 : 13 : 14 : 0.02
+T: 3 2 : 13 : 16 : 0.02
+T: 3 2 : 13 : 19 : 0.06
+T: 3 2 : 13 : 23 : 0.06
+T: 3 2 : 13 : 25 : 0.06
+T: 3 2 : 14 : 44 : 0.01
+T: 3 2 : 14 : 41 : 0.02
+T: 3 2 : 14 : 26 : 0.06
+T: 3 2 : 14 : 40 : 0.06
+T: 3 2 : 14 : 23 : 0.12
+T: 3 2 : 14 : 20 : 0.06
+T: 3 2 : 14 : 17 : 0.02
+T: 3 2 : 14 : 14 : 0.04
+T: 3 2 : 14 : 38 : 0.01
+T: 3 2 : 14 : 4 : 0.06
+T: 3 2 : 14 : 11 : 0.02
+T: 3 2 : 14 : 2 : 0.01
+T: 3 2 : 14 : 22 : 0.36
+T: 3 2 : 14 : 5 : 0.02
+T: 3 2 : 14 : 8 : 0.01
+T: 3 2 : 14 : 13 : 0.12
+T: 3 2 : 15 : 43 : 0.01
+T: 3 2 : 15 : 39 : 0.01
+T: 3 2 : 15 : 42 : 0.08
+T: 3 2 : 15 : 25 : 0.06
+T: 3 2 : 15 : 21 : 0.06
+T: 3 2 : 15 : 6 : 0.08
+T: 3 2 : 15 : 3 : 0.01
+T: 3 2 : 15 : 24 : 0.48
+T: 3 2 : 15 : 7 : 0.01
+T: 3 2 : 15 : 12 : 0.02
+T: 3 2 : 15 : 15 : 0.16
+T: 3 2 : 15 : 16 : 0.02
+T: 3 2 : 36 : 66 : 0.01
+T: 3 2 : 36 : 48 : 0.06
+T: 3 2 : 36 : 39 : 0.01
+T: 3 2 : 36 : 37 : 0.01
+T: 3 2 : 36 : 36 : 0.08
+T: 3 2 : 36 : 9 : 0.08
+T: 3 2 : 36 : 64 : 0.01
+T: 3 2 : 36 : 30 : 0.01
+T: 3 2 : 36 : 63 : 0.08
+T: 3 2 : 36 : 46 : 0.06
+T: 3 2 : 36 : 12 : 0.01
+T: 3 2 : 36 : 10 : 0.01
+T: 3 2 : 36 : 27 : 0.08
+T: 3 2 : 36 : 45 : 0.48
+T: 3 2 : 36 : 28 : 0.01
+T: 3 2 : 37 : 67 : 0.01
+T: 3 2 : 37 : 63 : 0.06
+T: 3 2 : 37 : 65 : 0.01
+T: 3 2 : 37 : 28 : 0.02
+T: 3 2 : 37 : 11 : 0.01
+T: 3 2 : 37 : 45 : 0.36
+T: 3 2 : 37 : 64 : 0.02
+T: 3 2 : 37 : 27 : 0.06
+T: 3 2 : 37 : 13 : 0.01
+T: 3 2 : 37 : 10 : 0.02
+T: 3 2 : 37 : 47 : 0.06
+T: 3 2 : 37 : 29 : 0.01
+T: 3 2 : 37 : 9 : 0.06
+T: 3 2 : 37 : 46 : 0.12
+T: 3 2 : 37 : 31 : 0.01
+T: 3 2 : 37 : 36 : 0.06
+T: 3 2 : 37 : 37 : 0.02
+T: 3 2 : 37 : 38 : 0.01
+T: 3 2 : 37 : 40 : 0.01
+T: 3 2 : 37 : 49 : 0.06
+T: 3 2 : 38 : 68 : 0.01
+T: 3 2 : 38 : 50 : 0.06
+T: 3 2 : 38 : 64 : 0.06
+T: 3 2 : 38 : 47 : 0.18
+T: 3 2 : 38 : 41 : 0.01
+T: 3 2 : 38 : 38 : 0.03
+T: 3 2 : 38 : 37 : 0.06
+T: 3 2 : 38 : 32 : 0.01
+T: 3 2 : 38 : 10 : 0.06
+T: 3 2 : 38 : 65 : 0.03
+T: 3 2 : 38 : 14 : 0.01
+T: 3 2 : 38 : 11 : 0.03
+T: 3 2 : 38 : 28 : 0.06
+T: 3 2 : 38 : 46 : 0.36
+T: 3 2 : 38 : 29 : 0.03
+T: 3 2 : 39 : 69 : 0.01
+T: 3 2 : 39 : 66 : 0.07
+T: 3 2 : 39 : 63 : 0.01
+T: 3 2 : 39 : 15 : 0.01
+T: 3 2 : 39 : 27 : 0.01
+T: 3 2 : 39 : 13 : 0.01
+T: 3 2 : 39 : 67 : 0.01
+T: 3 2 : 39 : 30 : 0.07
+T: 3 2 : 39 : 9 : 0.01
+T: 3 2 : 39 : 49 : 0.06
+T: 3 2 : 39 : 12 : 0.07
+T: 3 2 : 39 : 31 : 0.01
+T: 3 2 : 39 : 48 : 0.42
+T: 3 2 : 39 : 33 : 0.01
+T: 3 2 : 39 : 36 : 0.01
+T: 3 2 : 39 : 39 : 0.07
+T: 3 2 : 39 : 40 : 0.01
+T: 3 2 : 39 : 42 : 0.01
+T: 3 2 : 39 : 45 : 0.06
+T: 3 2 : 39 : 51 : 0.06
+T: 3 2 : 40 : 70 : 0.01
+T: 3 2 : 40 : 66 : 0.06
+T: 3 2 : 40 : 64 : 0.01
+T: 3 2 : 40 : 52 : 0.06
+T: 3 2 : 40 : 48 : 0.36
+T: 3 2 : 40 : 16 : 0.01
+T: 3 2 : 40 : 28 : 0.01
+T: 3 2 : 40 : 14 : 0.01
+T: 3 2 : 40 : 68 : 0.01
+T: 3 2 : 40 : 31 : 0.01
+T: 3 2 : 40 : 50 : 0.06
+T: 3 2 : 40 : 13 : 0.01
+T: 3 2 : 40 : 67 : 0.01
+T: 3 2 : 40 : 30 : 0.06
+T: 3 2 : 40 : 10 : 0.01
+T: 3 2 : 40 : 49 : 0.06
+T: 3 2 : 40 : 12 : 0.06
+T: 3 2 : 40 : 46 : 0.06
+T: 3 2 : 40 : 32 : 0.01
+T: 3 2 : 40 : 34 : 0.01
+T: 3 2 : 40 : 37 : 0.01
+T: 3 2 : 40 : 39 : 0.06
+T: 3 2 : 40 : 40 : 0.01
+T: 3 2 : 40 : 41 : 0.01
+T: 3 2 : 40 : 43 : 0.01
+T: 3 2 : 41 : 71 : 0.01
+T: 3 2 : 41 : 67 : 0.06
+T: 3 2 : 41 : 65 : 0.01
+T: 3 2 : 41 : 29 : 0.01
+T: 3 2 : 41 : 68 : 0.02
+T: 3 2 : 41 : 31 : 0.06
+T: 3 2 : 41 : 14 : 0.02
+T: 3 2 : 41 : 17 : 0.01
+T: 3 2 : 41 : 11 : 0.01
+T: 3 2 : 41 : 47 : 0.06
+T: 3 2 : 41 : 32 : 0.02
+T: 3 2 : 41 : 49 : 0.36
+T: 3 2 : 41 : 35 : 0.01
+T: 3 2 : 41 : 38 : 0.01
+T: 3 2 : 41 : 40 : 0.06
+T: 3 2 : 41 : 41 : 0.02
+T: 3 2 : 41 : 44 : 0.01
+T: 3 2 : 41 : 13 : 0.06
+T: 3 2 : 41 : 50 : 0.12
+T: 3 2 : 41 : 53 : 0.06
+T: 3 2 : 42 : 70 : 0.01
+T: 3 2 : 42 : 69 : 0.08
+T: 3 2 : 42 : 52 : 0.06
+T: 3 2 : 42 : 48 : 0.06
+T: 3 2 : 42 : 43 : 0.01
+T: 3 2 : 42 : 42 : 0.08
+T: 3 2 : 42 : 39 : 0.01
+T: 3 2 : 42 : 66 : 0.01
+T: 3 2 : 42 : 15 : 0.08
+T: 3 2 : 42 : 12 : 0.01
+T: 3 2 : 42 : 33 : 0.08
+T: 3 2 : 42 : 16 : 0.01
+T: 3 2 : 42 : 30 : 0.01
+T: 3 2 : 42 : 51 : 0.48
+T: 3 2 : 42 : 34 : 0.01
+T: 3 2 : 43 : 69 : 0.06
+T: 3 2 : 43 : 67 : 0.01
+T: 3 2 : 43 : 70 : 0.02
+T: 3 2 : 43 : 33 : 0.06
+T: 3 2 : 43 : 31 : 0.01
+T: 3 2 : 43 : 17 : 0.01
+T: 3 2 : 43 : 71 : 0.01
+T: 3 2 : 43 : 34 : 0.02
+T: 3 2 : 43 : 51 : 0.36
+T: 3 2 : 43 : 13 : 0.01
+T: 3 2 : 43 : 49 : 0.06
+T: 3 2 : 43 : 35 : 0.01
+T: 3 2 : 43 : 15 : 0.06
+T: 3 2 : 43 : 52 : 0.12
+T: 3 2 : 43 : 40 : 0.01
+T: 3 2 : 43 : 42 : 0.06
+T: 3 2 : 43 : 43 : 0.02
+T: 3 2 : 43 : 44 : 0.01
+T: 3 2 : 43 : 16 : 0.02
+T: 3 2 : 43 : 53 : 0.06
+T: 3 2 : 44 : 71 : 0.03
+T: 3 2 : 44 : 70 : 0.06
+T: 3 2 : 44 : 53 : 0.18
+T: 3 2 : 44 : 44 : 0.03
+T: 3 2 : 44 : 43 : 0.06
+T: 3 2 : 44 : 41 : 0.01
+T: 3 2 : 44 : 50 : 0.06
+T: 3 2 : 44 : 16 : 0.06
+T: 3 2 : 44 : 14 : 0.01
+T: 3 2 : 44 : 52 : 0.36
+T: 3 2 : 44 : 35 : 0.03
+T: 3 2 : 44 : 32 : 0.01
+T: 3 2 : 44 : 68 : 0.01
+T: 3 2 : 44 : 17 : 0.03
+T: 3 2 : 44 : 34 : 0.06
+T: 3 2 : 45 : 75 : 0.01
+T: 3 2 : 45 : 48 : 0.07
+T: 3 2 : 45 : 46 : 0.07
+T: 3 2 : 45 : 45 : 0.56
+T: 3 2 : 45 : 18 : 0.08
+T: 3 2 : 45 : 73 : 0.01
+T: 3 2 : 45 : 39 : 0.01
+T: 3 2 : 45 : 72 : 0.08
+T: 3 2 : 45 : 21 : 0.01
+T: 3 2 : 45 : 19 : 0.01
+T: 3 2 : 45 : 36 : 0.08
+T: 3 2 : 45 : 37 : 0.01
+T: 3 2 : 46 : 76 : 0.01
+T: 3 2 : 46 : 49 : 0.07
+T: 3 2 : 46 : 47 : 0.07
+T: 3 2 : 46 : 46 : 0.14
+T: 3 2 : 46 : 45 : 0.42
+T: 3 2 : 46 : 74 : 0.01
+T: 3 2 : 46 : 40 : 0.01
+T: 3 2 : 46 : 72 : 0.06
+T: 3 2 : 46 : 38 : 0.01
+T: 3 2 : 46 : 18 : 0.06
+T: 3 2 : 46 : 73 : 0.02
+T: 3 2 : 46 : 22 : 0.01
+T: 3 2 : 46 : 19 : 0.02
+T: 3 2 : 46 : 36 : 0.06
+T: 3 2 : 46 : 20 : 0.01
+T: 3 2 : 46 : 37 : 0.02
+T: 3 2 : 47 : 77 : 0.01
+T: 3 2 : 47 : 73 : 0.06
+T: 3 2 : 47 : 50 : 0.07
+T: 3 2 : 47 : 47 : 0.21
+T: 3 2 : 47 : 46 : 0.42
+T: 3 2 : 47 : 41 : 0.01
+T: 3 2 : 47 : 19 : 0.06
+T: 3 2 : 47 : 74 : 0.03
+T: 3 2 : 47 : 23 : 0.01
+T: 3 2 : 47 : 20 : 0.03
+T: 3 2 : 47 : 37 : 0.06
+T: 3 2 : 47 : 38 : 0.03
+T: 3 2 : 48 : 78 : 0.01
+T: 3 2 : 48 : 51 : 0.07
+T: 3 2 : 48 : 49 : 0.07
+T: 3 2 : 48 : 48 : 0.49
+T: 3 2 : 48 : 45 : 0.07
+T: 3 2 : 48 : 76 : 0.01
+T: 3 2 : 48 : 42 : 0.01
+T: 3 2 : 48 : 40 : 0.01
+T: 3 2 : 48 : 72 : 0.01
+T: 3 2 : 48 : 21 : 0.07
+T: 3 2 : 48 : 18 : 0.01
+T: 3 2 : 48 : 39 : 0.07
+T: 3 2 : 48 : 22 : 0.01
+T: 3 2 : 48 : 36 : 0.01
+T: 3 2 : 48 : 75 : 0.07
+T: 3 2 : 48 : 24 : 0.01
+T: 3 2 : 49 : 79 : 0.01
+T: 3 2 : 49 : 75 : 0.06
+T: 3 2 : 49 : 25 : 0.01
+T: 3 2 : 49 : 37 : 0.01
+T: 3 2 : 49 : 23 : 0.01
+T: 3 2 : 49 : 77 : 0.01
+T: 3 2 : 49 : 40 : 0.01
+T: 3 2 : 49 : 22 : 0.01
+T: 3 2 : 49 : 76 : 0.01
+T: 3 2 : 49 : 39 : 0.06
+T: 3 2 : 49 : 73 : 0.01
+T: 3 2 : 49 : 19 : 0.01
+T: 3 2 : 49 : 21 : 0.06
+T: 3 2 : 49 : 41 : 0.01
+T: 3 2 : 49 : 43 : 0.01
+T: 3 2 : 49 : 46 : 0.07
+T: 3 2 : 49 : 48 : 0.42
+T: 3 2 : 49 : 49 : 0.07
+T: 3 2 : 49 : 50 : 0.07
+T: 3 2 : 49 : 52 : 0.07
+T: 3 2 : 50 : 80 : 0.01
+T: 3 2 : 50 : 76 : 0.06
+T: 3 2 : 50 : 53 : 0.07
+T: 3 2 : 50 : 50 : 0.14
+T: 3 2 : 50 : 49 : 0.42
+T: 3 2 : 50 : 47 : 0.07
+T: 3 2 : 50 : 44 : 0.01
+T: 3 2 : 50 : 41 : 0.02
+T: 3 2 : 50 : 22 : 0.06
+T: 3 2 : 50 : 20 : 0.01
+T: 3 2 : 50 : 77 : 0.02
+T: 3 2 : 50 : 26 : 0.01
+T: 3 2 : 50 : 74 : 0.01
+T: 3 2 : 50 : 23 : 0.02
+T: 3 2 : 50 : 40 : 0.06
+T: 3 2 : 50 : 38 : 0.01
+T: 3 2 : 51 : 79 : 0.01
+T: 3 2 : 51 : 78 : 0.08
+T: 3 2 : 51 : 52 : 0.07
+T: 3 2 : 51 : 51 : 0.56
+T: 3 2 : 51 : 48 : 0.07
+T: 3 2 : 51 : 75 : 0.01
+T: 3 2 : 51 : 24 : 0.08
+T: 3 2 : 51 : 21 : 0.01
+T: 3 2 : 51 : 42 : 0.08
+T: 3 2 : 51 : 25 : 0.01
+T: 3 2 : 51 : 39 : 0.01
+T: 3 2 : 51 : 43 : 0.01
+T: 3 2 : 52 : 80 : 0.01
+T: 3 2 : 52 : 79 : 0.02
+T: 3 2 : 52 : 53 : 0.07
+T: 3 2 : 52 : 52 : 0.14
+T: 3 2 : 52 : 51 : 0.42
+T: 3 2 : 52 : 49 : 0.07
+T: 3 2 : 52 : 78 : 0.06
+T: 3 2 : 52 : 44 : 0.01
+T: 3 2 : 52 : 24 : 0.06
+T: 3 2 : 52 : 22 : 0.01
+T: 3 2 : 52 : 43 : 0.02
+T: 3 2 : 52 : 26 : 0.01
+T: 3 2 : 52 : 40 : 0.01
+T: 3 2 : 52 : 76 : 0.01
+T: 3 2 : 52 : 25 : 0.02
+T: 3 2 : 52 : 42 : 0.06
+T: 3 2 : 53 : 80 : 0.03
+T: 3 2 : 53 : 79 : 0.06
+T: 3 2 : 53 : 53 : 0.21
+T: 3 2 : 53 : 52 : 0.42
+T: 3 2 : 53 : 50 : 0.07
+T: 3 2 : 53 : 25 : 0.06
+T: 3 2 : 53 : 23 : 0.01
+T: 3 2 : 53 : 44 : 0.03
+T: 3 2 : 53 : 41 : 0.01
+T: 3 2 : 53 : 77 : 0.01
+T: 3 2 : 53 : 26 : 0.03
+T: 3 2 : 53 : 43 : 0.06
+T: 3 2 : 54 : 66 : 0.06
+T: 3 2 : 54 : 63 : 0.48
+T: 3 2 : 54 : 28 : 0.01
+T: 3 2 : 54 : 27 : 0.08
+T: 3 2 : 54 : 55 : 0.03
+T: 3 2 : 54 : 64 : 0.06
+T: 3 2 : 54 : 30 : 0.01
+T: 3 2 : 54 : 54 : 0.24
+T: 3 2 : 54 : 57 : 0.03
+T: 3 2 : 55 : 67 : 0.06
+T: 3 2 : 55 : 64 : 0.12
+T: 3 2 : 55 : 58 : 0.03
+T: 3 2 : 55 : 56 : 0.03
+T: 3 2 : 55 : 28 : 0.02
+T: 3 2 : 55 : 27 : 0.06
+T: 3 2 : 55 : 55 : 0.06
+T: 3 2 : 55 : 63 : 0.36
+T: 3 2 : 55 : 29 : 0.01
+T: 3 2 : 55 : 65 : 0.06
+T: 3 2 : 55 : 31 : 0.01
+T: 3 2 : 55 : 54 : 0.18
+T: 3 2 : 56 : 68 : 0.06
+T: 3 2 : 56 : 65 : 0.18
+T: 3 2 : 56 : 64 : 0.36
+T: 3 2 : 56 : 29 : 0.03
+T: 3 2 : 56 : 28 : 0.06
+T: 3 2 : 56 : 56 : 0.09
+T: 3 2 : 56 : 32 : 0.01
+T: 3 2 : 56 : 55 : 0.18
+T: 3 2 : 56 : 59 : 0.03
+T: 3 2 : 57 : 69 : 0.06
+T: 3 2 : 57 : 66 : 0.42
+T: 3 2 : 57 : 63 : 0.06
+T: 3 2 : 57 : 60 : 0.03
+T: 3 2 : 57 : 58 : 0.03
+T: 3 2 : 57 : 30 : 0.07
+T: 3 2 : 57 : 27 : 0.01
+T: 3 2 : 57 : 31 : 0.01
+T: 3 2 : 57 : 67 : 0.06
+T: 3 2 : 57 : 33 : 0.01
+T: 3 2 : 57 : 54 : 0.03
+T: 3 2 : 57 : 57 : 0.21
+T: 3 2 : 58 : 70 : 0.06
+T: 3 2 : 58 : 67 : 0.06
+T: 3 2 : 58 : 61 : 0.03
+T: 3 2 : 58 : 59 : 0.03
+T: 3 2 : 58 : 58 : 0.03
+T: 3 2 : 58 : 57 : 0.18
+T: 3 2 : 58 : 64 : 0.06
+T: 3 2 : 58 : 30 : 0.06
+T: 3 2 : 58 : 28 : 0.01
+T: 3 2 : 58 : 31 : 0.01
+T: 3 2 : 58 : 66 : 0.36
+T: 3 2 : 58 : 32 : 0.01
+T: 3 2 : 58 : 68 : 0.06
+T: 3 2 : 58 : 34 : 0.01
+T: 3 2 : 58 : 55 : 0.03
+T: 3 2 : 59 : 71 : 0.06
+T: 3 2 : 59 : 68 : 0.12
+T: 3 2 : 59 : 67 : 0.36
+T: 3 2 : 59 : 62 : 0.03
+T: 3 2 : 59 : 59 : 0.06
+T: 3 2 : 59 : 65 : 0.06
+T: 3 2 : 59 : 31 : 0.06
+T: 3 2 : 59 : 29 : 0.01
+T: 3 2 : 59 : 32 : 0.02
+T: 3 2 : 59 : 35 : 0.01
+T: 3 2 : 59 : 56 : 0.03
+T: 3 2 : 59 : 58 : 0.18
+T: 3 2 : 60 : 70 : 0.06
+T: 3 2 : 60 : 69 : 0.48
+T: 3 2 : 60 : 66 : 0.06
+T: 3 2 : 60 : 33 : 0.08
+T: 3 2 : 60 : 61 : 0.03
+T: 3 2 : 60 : 30 : 0.01
+T: 3 2 : 60 : 34 : 0.01
+T: 3 2 : 60 : 57 : 0.03
+T: 3 2 : 60 : 60 : 0.24
+T: 3 2 : 61 : 71 : 0.06
+T: 3 2 : 61 : 70 : 0.12
+T: 3 2 : 61 : 62 : 0.03
+T: 3 2 : 61 : 61 : 0.06
+T: 3 2 : 61 : 67 : 0.06
+T: 3 2 : 61 : 33 : 0.06
+T: 3 2 : 61 : 31 : 0.01
+T: 3 2 : 61 : 34 : 0.02
+T: 3 2 : 61 : 69 : 0.36
+T: 3 2 : 61 : 35 : 0.01
+T: 3 2 : 61 : 58 : 0.03
+T: 3 2 : 61 : 60 : 0.18
+T: 3 2 : 62 : 71 : 0.18
+T: 3 2 : 62 : 70 : 0.36
+T: 3 2 : 62 : 68 : 0.06
+T: 3 2 : 62 : 34 : 0.06
+T: 3 2 : 62 : 62 : 0.09
+T: 3 2 : 62 : 32 : 0.01
+T: 3 2 : 62 : 35 : 0.03
+T: 3 2 : 62 : 59 : 0.03
+T: 3 2 : 62 : 61 : 0.18
+T: 3 2 : 63 : 75 : 0.06
+T: 3 2 : 63 : 66 : 0.02
+T: 3 2 : 63 : 64 : 0.02
+T: 3 2 : 63 : 63 : 0.16
+T: 3 2 : 63 : 36 : 0.08
+T: 3 2 : 63 : 57 : 0.01
+T: 3 2 : 63 : 73 : 0.06
+T: 3 2 : 63 : 39 : 0.01
+T: 3 2 : 63 : 37 : 0.01
+T: 3 2 : 63 : 54 : 0.08
+T: 3 2 : 63 : 72 : 0.48
+T: 3 2 : 63 : 55 : 0.01
+T: 3 2 : 64 : 76 : 0.06
+T: 3 2 : 64 : 67 : 0.02
+T: 3 2 : 64 : 65 : 0.02
+T: 3 2 : 64 : 64 : 0.04
+T: 3 2 : 64 : 63 : 0.12
+T: 3 2 : 64 : 58 : 0.01
+T: 3 2 : 64 : 73 : 0.12
+T: 3 2 : 64 : 56 : 0.01
+T: 3 2 : 64 : 36 : 0.06
+T: 3 2 : 64 : 74 : 0.06
+T: 3 2 : 64 : 40 : 0.01
+T: 3 2 : 64 : 37 : 0.02
+T: 3 2 : 64 : 54 : 0.06
+T: 3 2 : 64 : 72 : 0.36
+T: 3 2 : 64 : 38 : 0.01
+T: 3 2 : 64 : 55 : 0.02
+T: 3 2 : 65 : 77 : 0.06
+T: 3 2 : 65 : 74 : 0.18
+T: 3 2 : 65 : 68 : 0.02
+T: 3 2 : 65 : 65 : 0.06
+T: 3 2 : 65 : 64 : 0.12
+T: 3 2 : 65 : 59 : 0.01
+T: 3 2 : 65 : 37 : 0.06
+T: 3 2 : 65 : 41 : 0.01
+T: 3 2 : 65 : 38 : 0.03
+T: 3 2 : 65 : 55 : 0.06
+T: 3 2 : 65 : 73 : 0.36
+T: 3 2 : 65 : 56 : 0.03
+T: 3 2 : 66 : 78 : 0.06
+T: 3 2 : 66 : 72 : 0.06
+T: 3 2 : 66 : 69 : 0.02
+T: 3 2 : 66 : 67 : 0.02
+T: 3 2 : 66 : 66 : 0.14
+T: 3 2 : 66 : 63 : 0.02
+T: 3 2 : 66 : 60 : 0.01
+T: 3 2 : 66 : 75 : 0.42
+T: 3 2 : 66 : 58 : 0.01
+T: 3 2 : 66 : 39 : 0.07
+T: 3 2 : 66 : 36 : 0.01
+T: 3 2 : 66 : 57 : 0.07
+T: 3 2 : 66 : 40 : 0.01
+T: 3 2 : 66 : 54 : 0.01
+T: 3 2 : 66 : 76 : 0.06
+T: 3 2 : 66 : 42 : 0.01
+T: 3 2 : 67 : 79 : 0.06
+T: 3 2 : 67 : 75 : 0.36
+T: 3 2 : 67 : 43 : 0.01
+T: 3 2 : 67 : 55 : 0.01
+T: 3 2 : 67 : 41 : 0.01
+T: 3 2 : 67 : 58 : 0.01
+T: 3 2 : 67 : 77 : 0.06
+T: 3 2 : 67 : 40 : 0.01
+T: 3 2 : 67 : 57 : 0.06
+T: 3 2 : 67 : 37 : 0.01
+T: 3 2 : 67 : 76 : 0.06
+T: 3 2 : 67 : 39 : 0.06
+T: 3 2 : 67 : 73 : 0.06
+T: 3 2 : 67 : 59 : 0.01
+T: 3 2 : 67 : 61 : 0.01
+T: 3 2 : 67 : 64 : 0.02
+T: 3 2 : 67 : 66 : 0.12
+T: 3 2 : 67 : 67 : 0.02
+T: 3 2 : 67 : 68 : 0.02
+T: 3 2 : 67 : 70 : 0.02
+T: 3 2 : 68 : 80 : 0.06
+T: 3 2 : 68 : 77 : 0.12
+T: 3 2 : 68 : 71 : 0.02
+T: 3 2 : 68 : 68 : 0.04
+T: 3 2 : 68 : 67 : 0.12
+T: 3 2 : 68 : 65 : 0.02
+T: 3 2 : 68 : 62 : 0.01
+T: 3 2 : 68 : 76 : 0.36
+T: 3 2 : 68 : 59 : 0.02
+T: 3 2 : 68 : 74 : 0.06
+T: 3 2 : 68 : 40 : 0.06
+T: 3 2 : 68 : 38 : 0.01
+T: 3 2 : 68 : 44 : 0.01
+T: 3 2 : 68 : 41 : 0.02
+T: 3 2 : 68 : 58 : 0.06
+T: 3 2 : 68 : 56 : 0.01
+T: 3 2 : 69 : 79 : 0.06
+T: 3 2 : 69 : 75 : 0.06
+T: 3 2 : 69 : 70 : 0.02
+T: 3 2 : 69 : 69 : 0.16
+T: 3 2 : 69 : 66 : 0.02
+T: 3 2 : 69 : 42 : 0.08
+T: 3 2 : 69 : 39 : 0.01
+T: 3 2 : 69 : 60 : 0.08
+T: 3 2 : 69 : 43 : 0.01
+T: 3 2 : 69 : 57 : 0.01
+T: 3 2 : 69 : 78 : 0.48
+T: 3 2 : 69 : 61 : 0.01
+T: 3 2 : 70 : 80 : 0.06
+T: 3 2 : 70 : 71 : 0.02
+T: 3 2 : 70 : 70 : 0.04
+T: 3 2 : 70 : 69 : 0.12
+T: 3 2 : 70 : 67 : 0.02
+T: 3 2 : 70 : 79 : 0.12
+T: 3 2 : 70 : 62 : 0.01
+T: 3 2 : 70 : 76 : 0.06
+T: 3 2 : 70 : 42 : 0.06
+T: 3 2 : 70 : 40 : 0.01
+T: 3 2 : 70 : 78 : 0.36
+T: 3 2 : 70 : 61 : 0.02
+T: 3 2 : 70 : 44 : 0.01
+T: 3 2 : 70 : 58 : 0.01
+T: 3 2 : 70 : 43 : 0.02
+T: 3 2 : 70 : 60 : 0.06
+T: 3 2 : 71 : 80 : 0.18
+T: 3 2 : 71 : 71 : 0.06
+T: 3 2 : 71 : 70 : 0.12
+T: 3 2 : 71 : 68 : 0.02
+T: 3 2 : 71 : 77 : 0.06
+T: 3 2 : 71 : 43 : 0.06
+T: 3 2 : 71 : 41 : 0.01
+T: 3 2 : 71 : 79 : 0.36
+T: 3 2 : 71 : 62 : 0.03
+T: 3 2 : 71 : 59 : 0.01
+T: 3 2 : 71 : 44 : 0.03
+T: 3 2 : 71 : 61 : 0.06
+T: 3 2 : 72 : 75 : 0.08
+T: 3 2 : 72 : 73 : 0.08
+T: 3 2 : 72 : 72 : 0.64
+T: 3 2 : 72 : 45 : 0.08
+T: 3 2 : 72 : 66 : 0.01
+T: 3 2 : 72 : 48 : 0.01
+T: 3 2 : 72 : 46 : 0.01
+T: 3 2 : 72 : 63 : 0.08
+T: 3 2 : 72 : 64 : 0.01
+T: 3 2 : 73 : 76 : 0.08
+T: 3 2 : 73 : 74 : 0.08
+T: 3 2 : 73 : 73 : 0.16
+T: 3 2 : 73 : 72 : 0.48
+T: 3 2 : 73 : 67 : 0.01
+T: 3 2 : 73 : 65 : 0.01
+T: 3 2 : 73 : 45 : 0.06
+T: 3 2 : 73 : 49 : 0.01
+T: 3 2 : 73 : 46 : 0.02
+T: 3 2 : 73 : 63 : 0.06
+T: 3 2 : 73 : 47 : 0.01
+T: 3 2 : 73 : 64 : 0.02
+T: 3 2 : 74 : 77 : 0.08
+T: 3 2 : 74 : 74 : 0.24
+T: 3 2 : 74 : 73 : 0.48
+T: 3 2 : 74 : 68 : 0.01
+T: 3 2 : 74 : 46 : 0.06
+T: 3 2 : 74 : 50 : 0.01
+T: 3 2 : 74 : 47 : 0.03
+T: 3 2 : 74 : 64 : 0.06
+T: 3 2 : 74 : 65 : 0.03
+T: 3 2 : 75 : 78 : 0.08
+T: 3 2 : 75 : 76 : 0.08
+T: 3 2 : 75 : 75 : 0.56
+T: 3 2 : 75 : 72 : 0.08
+T: 3 2 : 75 : 69 : 0.01
+T: 3 2 : 75 : 67 : 0.01
+T: 3 2 : 75 : 48 : 0.07
+T: 3 2 : 75 : 45 : 0.01
+T: 3 2 : 75 : 66 : 0.07
+T: 3 2 : 75 : 49 : 0.01
+T: 3 2 : 75 : 63 : 0.01
+T: 3 2 : 75 : 51 : 0.01
+T: 3 2 : 76 : 79 : 0.08
+T: 3 2 : 76 : 77 : 0.08
+T: 3 2 : 76 : 76 : 0.08
+T: 3 2 : 76 : 75 : 0.48
+T: 3 2 : 76 : 73 : 0.08
+T: 3 2 : 76 : 70 : 0.01
+T: 3 2 : 76 : 68 : 0.01
+T: 3 2 : 76 : 48 : 0.06
+T: 3 2 : 76 : 46 : 0.01
+T: 3 2 : 76 : 66 : 0.06
+T: 3 2 : 76 : 49 : 0.01
+T: 3 2 : 76 : 67 : 0.01
+T: 3 2 : 76 : 50 : 0.01
+T: 3 2 : 76 : 64 : 0.01
+T: 3 2 : 76 : 52 : 0.01
+T: 3 2 : 77 : 80 : 0.08
+T: 3 2 : 77 : 77 : 0.16
+T: 3 2 : 77 : 76 : 0.48
+T: 3 2 : 77 : 74 : 0.08
+T: 3 2 : 77 : 71 : 0.01
+T: 3 2 : 77 : 68 : 0.02
+T: 3 2 : 77 : 49 : 0.06
+T: 3 2 : 77 : 47 : 0.01
+T: 3 2 : 77 : 53 : 0.01
+T: 3 2 : 77 : 50 : 0.02
+T: 3 2 : 77 : 67 : 0.06
+T: 3 2 : 77 : 65 : 0.01
+T: 3 1 : 80 : 80 : 0.64
+T: 3 1 : 80 : 79 : 0.08
+T: 3 1 : 80 : 77 : 0.08
+T: 3 1 : 80 : 52 : 0.01
+T: 3 1 : 80 : 50 : 0.01
+T: 3 1 : 80 : 71 : 0.08
+T: 3 1 : 80 : 68 : 0.01
+T: 3 1 : 80 : 53 : 0.08
+T: 3 1 : 80 : 70 : 0.01
+T: 3 1 : 79 : 80 : 0.08
+T: 3 1 : 79 : 79 : 0.56
+T: 3 1 : 79 : 78 : 0.08
+T: 3 1 : 79 : 76 : 0.08
+T: 3 1 : 79 : 71 : 0.01
+T: 3 1 : 79 : 51 : 0.01
+T: 3 1 : 79 : 49 : 0.01
+T: 3 1 : 79 : 70 : 0.07
+T: 3 1 : 79 : 53 : 0.01
+T: 3 1 : 79 : 67 : 0.01
+T: 3 1 : 79 : 52 : 0.07
+T: 3 1 : 79 : 69 : 0.01
+T: 3 1 : 78 : 79 : 0.08
+T: 3 1 : 78 : 78 : 0.64
+T: 3 1 : 78 : 75 : 0.08
+T: 3 1 : 78 : 51 : 0.08
+T: 3 1 : 78 : 48 : 0.01
+T: 3 1 : 78 : 69 : 0.08
+T: 3 1 : 78 : 52 : 0.01
+T: 3 1 : 78 : 66 : 0.01
+T: 3 1 : 78 : 70 : 0.01
+T: 3 1 : 35 : 62 : 0.08
+T: 3 1 : 35 : 61 : 0.01
+T: 3 1 : 35 : 44 : 0.48
+T: 3 1 : 35 : 43 : 0.06
+T: 3 1 : 35 : 41 : 0.06
+T: 3 1 : 35 : 7 : 0.01
+T: 3 1 : 35 : 35 : 0.16
+T: 3 1 : 35 : 5 : 0.01
+T: 3 1 : 35 : 59 : 0.01
+T: 3 1 : 35 : 8 : 0.08
+T: 3 1 : 35 : 32 : 0.02
+T: 3 1 : 35 : 34 : 0.02
+T: 3 1 : 34 : 62 : 0.01
+T: 3 1 : 34 : 61 : 0.07
+T: 3 1 : 34 : 44 : 0.06
+T: 3 1 : 34 : 60 : 0.01
+T: 3 1 : 34 : 43 : 0.42
+T: 3 1 : 34 : 35 : 0.02
+T: 3 1 : 34 : 34 : 0.14
+T: 3 1 : 34 : 40 : 0.06
+T: 3 1 : 34 : 6 : 0.01
+T: 3 1 : 34 : 4 : 0.01
+T: 3 1 : 34 : 58 : 0.01
+T: 3 1 : 34 : 7 : 0.07
+T: 3 1 : 34 : 42 : 0.06
+T: 3 1 : 34 : 8 : 0.01
+T: 3 1 : 34 : 31 : 0.02
+T: 3 1 : 34 : 33 : 0.02
+T: 3 1 : 33 : 61 : 0.01
+T: 3 1 : 33 : 60 : 0.08
+T: 3 1 : 33 : 43 : 0.06
+T: 3 1 : 33 : 42 : 0.48
+T: 3 1 : 33 : 39 : 0.06
+T: 3 1 : 33 : 57 : 0.01
+T: 3 1 : 33 : 6 : 0.08
+T: 3 1 : 33 : 34 : 0.02
+T: 3 1 : 33 : 3 : 0.01
+T: 3 1 : 33 : 7 : 0.01
+T: 3 1 : 33 : 30 : 0.02
+T: 3 1 : 33 : 33 : 0.16
+T: 3 1 : 32 : 62 : 0.06
+T: 3 1 : 32 : 44 : 0.36
+T: 3 1 : 32 : 58 : 0.01
+T: 3 1 : 32 : 41 : 0.12
+T: 3 1 : 32 : 40 : 0.06
+T: 3 1 : 32 : 35 : 0.12
+T: 3 1 : 32 : 32 : 0.04
+T: 3 1 : 32 : 38 : 0.06
+T: 3 1 : 32 : 4 : 0.01
+T: 3 1 : 32 : 2 : 0.01
+T: 3 1 : 32 : 56 : 0.01
+T: 3 1 : 32 : 5 : 0.02
+T: 3 1 : 32 : 59 : 0.02
+T: 3 1 : 32 : 8 : 0.06
+T: 3 1 : 32 : 29 : 0.02
+T: 3 1 : 32 : 31 : 0.02
+T: 3 1 : 31 : 61 : 0.06
+T: 3 1 : 31 : 59 : 0.01
+T: 3 1 : 31 : 58 : 0.01
+T: 3 1 : 31 : 57 : 0.01
+T: 3 1 : 31 : 28 : 0.02
+T: 3 1 : 31 : 7 : 0.06
+T: 3 1 : 31 : 5 : 0.01
+T: 3 1 : 31 : 39 : 0.06
+T: 3 1 : 31 : 41 : 0.06
+T: 3 1 : 31 : 4 : 0.01
+T: 3 1 : 31 : 55 : 0.01
+T: 3 1 : 31 : 1 : 0.01
+T: 3 1 : 31 : 37 : 0.06
+T: 3 1 : 31 : 30 : 0.02
+T: 3 1 : 31 : 31 : 0.02
+T: 3 1 : 31 : 32 : 0.02
+T: 3 1 : 31 : 34 : 0.12
+T: 3 1 : 31 : 3 : 0.01
+T: 3 1 : 31 : 40 : 0.06
+T: 3 1 : 31 : 43 : 0.36
+T: 3 1 : 30 : 60 : 0.06
+T: 3 1 : 30 : 58 : 0.01
+T: 3 1 : 30 : 42 : 0.36
+T: 3 1 : 30 : 39 : 0.12
+T: 3 1 : 30 : 36 : 0.06
+T: 3 1 : 30 : 33 : 0.12
+T: 3 1 : 30 : 31 : 0.02
+T: 3 1 : 30 : 54 : 0.01
+T: 3 1 : 30 : 3 : 0.02
+T: 3 1 : 30 : 0 : 0.01
+T: 3 1 : 30 : 4 : 0.01
+T: 3 1 : 30 : 57 : 0.02
+T: 3 1 : 30 : 40 : 0.06
+T: 3 1 : 30 : 6 : 0.06
+T: 3 1 : 30 : 27 : 0.02
+T: 3 1 : 30 : 30 : 0.04
+T: 3 1 : 29 : 59 : 0.06
+T: 3 1 : 29 : 41 : 0.36
+T: 3 1 : 29 : 55 : 0.01
+T: 3 1 : 29 : 38 : 0.18
+T: 3 1 : 29 : 37 : 0.06
+T: 3 1 : 29 : 2 : 0.03
+T: 3 1 : 29 : 1 : 0.01
+T: 3 1 : 29 : 29 : 0.06
+T: 3 1 : 29 : 56 : 0.03
+T: 3 1 : 29 : 5 : 0.06
+T: 3 1 : 29 : 28 : 0.02
+T: 3 1 : 29 : 32 : 0.12
+T: 3 1 : 28 : 58 : 0.06
+T: 3 1 : 28 : 56 : 0.01
+T: 3 1 : 28 : 40 : 0.36
+T: 3 1 : 28 : 54 : 0.01
+T: 3 1 : 28 : 37 : 0.12
+T: 3 1 : 28 : 31 : 0.12
+T: 3 1 : 28 : 29 : 0.02
+T: 3 1 : 28 : 1 : 0.02
+T: 3 1 : 28 : 0 : 0.01
+T: 3 1 : 28 : 28 : 0.04
+T: 3 1 : 28 : 36 : 0.06
+T: 3 1 : 28 : 2 : 0.01
+T: 3 1 : 28 : 55 : 0.02
+T: 3 1 : 28 : 38 : 0.06
+T: 3 1 : 28 : 4 : 0.06
+T: 3 1 : 28 : 27 : 0.02
+T: 3 1 : 27 : 57 : 0.06
+T: 3 1 : 27 : 55 : 0.01
+T: 3 1 : 27 : 39 : 0.36
+T: 3 1 : 27 : 36 : 0.18
+T: 3 1 : 27 : 1 : 0.01
+T: 3 1 : 27 : 0 : 0.03
+T: 3 1 : 27 : 28 : 0.02
+T: 3 1 : 27 : 54 : 0.03
+T: 3 1 : 27 : 37 : 0.06
+T: 3 1 : 27 : 3 : 0.06
+T: 3 1 : 27 : 27 : 0.06
+T: 3 1 : 27 : 30 : 0.12
+T: 3 1 : 26 : 53 : 0.08
+T: 3 1 : 26 : 52 : 0.01
+T: 3 1 : 26 : 50 : 0.01
+T: 3 1 : 26 : 16 : 0.01
+T: 3 1 : 26 : 23 : 0.08
+T: 3 1 : 26 : 14 : 0.01
+T: 3 1 : 26 : 17 : 0.08
+T: 3 1 : 26 : 25 : 0.08
+T: 3 1 : 26 : 26 : 0.64
+T: 3 1 : 25 : 53 : 0.01
+T: 3 1 : 25 : 52 : 0.07
+T: 3 1 : 25 : 26 : 0.08
+T: 3 1 : 25 : 25 : 0.56
+T: 3 1 : 25 : 49 : 0.01
+T: 3 1 : 25 : 15 : 0.01
+T: 3 1 : 25 : 22 : 0.08
+T: 3 1 : 25 : 13 : 0.01
+T: 3 1 : 25 : 16 : 0.07
+T: 3 1 : 25 : 51 : 0.01
+T: 3 1 : 25 : 17 : 0.01
+T: 3 1 : 25 : 24 : 0.08
+T: 3 1 : 24 : 52 : 0.01
+T: 3 1 : 24 : 51 : 0.08
+T: 3 1 : 24 : 48 : 0.01
+T: 3 1 : 24 : 15 : 0.08
+T: 3 1 : 24 : 12 : 0.01
+T: 3 1 : 24 : 16 : 0.01
+T: 3 1 : 24 : 21 : 0.08
+T: 3 1 : 24 : 24 : 0.64
+T: 3 1 : 24 : 25 : 0.08
+T: 3 1 : 23 : 53 : 0.06
+T: 3 1 : 23 : 50 : 0.02
+T: 3 1 : 23 : 49 : 0.01
+T: 3 1 : 23 : 26 : 0.48
+T: 3 1 : 23 : 23 : 0.16
+T: 3 1 : 23 : 47 : 0.01
+T: 3 1 : 23 : 13 : 0.01
+T: 3 1 : 23 : 20 : 0.08
+T: 3 1 : 23 : 11 : 0.01
+T: 3 1 : 23 : 14 : 0.02
+T: 3 1 : 23 : 17 : 0.06
+T: 3 1 : 23 : 22 : 0.08
+T: 3 1 : 22 : 52 : 0.06
+T: 3 1 : 22 : 49 : 0.01
+T: 3 1 : 22 : 25 : 0.48
+T: 3 1 : 22 : 23 : 0.08
+T: 3 1 : 22 : 22 : 0.08
+T: 3 1 : 22 : 21 : 0.08
+T: 3 1 : 22 : 46 : 0.01
+T: 3 1 : 22 : 12 : 0.01
+T: 3 1 : 22 : 19 : 0.08
+T: 3 1 : 22 : 10 : 0.01
+T: 3 1 : 22 : 13 : 0.01
+T: 3 1 : 22 : 48 : 0.01
+T: 3 1 : 22 : 14 : 0.01
+T: 3 1 : 22 : 50 : 0.01
+T: 3 1 : 22 : 16 : 0.06
+T: 3 1 : 21 : 51 : 0.06
+T: 3 1 : 21 : 48 : 0.02
+T: 3 1 : 21 : 45 : 0.01
+T: 3 1 : 21 : 24 : 0.48
+T: 3 1 : 21 : 22 : 0.08
+T: 3 1 : 21 : 12 : 0.02
+T: 3 1 : 21 : 9 : 0.01
+T: 3 1 : 21 : 13 : 0.01
+T: 3 1 : 21 : 49 : 0.01
+T: 3 1 : 21 : 15 : 0.06
+T: 3 1 : 21 : 18 : 0.08
+T: 3 1 : 21 : 21 : 0.16
+T: 3 1 : 20 : 50 : 0.06
+T: 3 1 : 20 : 47 : 0.03
+T: 3 1 : 20 : 46 : 0.01
+T: 3 1 : 20 : 11 : 0.03
+T: 3 1 : 20 : 10 : 0.01
+T: 3 1 : 20 : 14 : 0.06
+T: 3 1 : 20 : 19 : 0.08
+T: 3 1 : 20 : 20 : 0.24
+T: 3 1 : 20 : 23 : 0.48
+T: 3 1 : 19 : 49 : 0.06
+T: 3 1 : 19 : 46 : 0.02
+T: 3 1 : 19 : 22 : 0.48
+T: 3 1 : 19 : 20 : 0.08
+T: 3 1 : 19 : 10 : 0.02
+T: 3 1 : 19 : 9 : 0.01
+T: 3 1 : 19 : 45 : 0.01
+T: 3 1 : 19 : 11 : 0.01
+T: 3 1 : 19 : 18 : 0.08
+T: 3 1 : 19 : 47 : 0.01
+T: 3 1 : 19 : 13 : 0.06
+T: 3 1 : 19 : 19 : 0.16
+T: 3 1 : 18 : 48 : 0.06
+T: 3 1 : 18 : 45 : 0.03
+T: 3 1 : 18 : 10 : 0.01
+T: 3 1 : 18 : 9 : 0.03
+T: 3 1 : 18 : 46 : 0.01
+T: 3 1 : 18 : 12 : 0.06
+T: 3 1 : 18 : 19 : 0.08
+T: 3 1 : 18 : 18 : 0.24
+T: 3 1 : 18 : 21 : 0.48
+T: 3 1 : 17 : 44 : 0.08
+T: 3 1 : 17 : 43 : 0.01
+T: 3 1 : 17 : 26 : 0.48
+T: 3 1 : 17 : 23 : 0.06
+T: 3 1 : 17 : 41 : 0.01
+T: 3 1 : 17 : 7 : 0.01
+T: 3 1 : 17 : 14 : 0.02
+T: 3 1 : 17 : 5 : 0.01
+T: 3 1 : 17 : 25 : 0.06
+T: 3 1 : 17 : 8 : 0.08
+T: 3 1 : 17 : 16 : 0.02
+T: 3 1 : 17 : 17 : 0.16
+T: 3 1 : 16 : 44 : 0.01
+T: 3 1 : 16 : 43 : 0.07
+T: 3 1 : 16 : 26 : 0.06
+T: 3 1 : 16 : 22 : 0.06
+T: 3 1 : 16 : 17 : 0.02
+T: 3 1 : 16 : 16 : 0.14
+T: 3 1 : 16 : 40 : 0.01
+T: 3 1 : 16 : 6 : 0.01
+T: 3 1 : 16 : 13 : 0.02
+T: 3 1 : 16 : 4 : 0.01
+T: 3 1 : 16 : 24 : 0.06
+T: 3 1 : 16 : 7 : 0.07
+T: 3 1 : 16 : 42 : 0.01
+T: 3 1 : 16 : 25 : 0.42
+T: 3 1 : 16 : 8 : 0.01
+T: 3 1 : 16 : 15 : 0.02
+T: 3 1 : 5 : 35 : 0.06
+T: 3 1 : 5 : 32 : 0.02
+T: 3 1 : 5 : 29 : 0.01
+T: 3 1 : 5 : 17 : 0.36
+T: 3 1 : 5 : 31 : 0.01
+T: 3 1 : 5 : 14 : 0.12
+T: 3 1 : 5 : 4 : 0.03
+T: 3 1 : 5 : 11 : 0.06
+T: 3 1 : 5 : 2 : 0.03
+T: 3 1 : 5 : 5 : 0.06
+T: 3 1 : 5 : 8 : 0.18
+T: 3 1 : 5 : 13 : 0.06
+T: 3 1 : 4 : 34 : 0.06
+T: 3 1 : 4 : 32 : 0.01
+T: 3 1 : 4 : 28 : 0.01
+T: 3 1 : 4 : 16 : 0.36
+T: 3 1 : 4 : 31 : 0.01
+T: 3 1 : 4 : 14 : 0.06
+T: 3 1 : 4 : 30 : 0.01
+T: 3 1 : 4 : 13 : 0.06
+T: 3 1 : 4 : 12 : 0.06
+T: 3 1 : 4 : 3 : 0.03
+T: 3 1 : 4 : 10 : 0.06
+T: 3 1 : 4 : 1 : 0.03
+T: 3 1 : 4 : 4 : 0.03
+T: 3 1 : 4 : 5 : 0.03
+T: 3 1 : 4 : 7 : 0.18
+T: 3 1 : 3 : 33 : 0.06
+T: 3 1 : 3 : 31 : 0.01
+T: 3 1 : 3 : 27 : 0.01
+T: 3 1 : 3 : 15 : 0.36
+T: 3 1 : 3 : 30 : 0.02
+T: 3 1 : 3 : 13 : 0.06
+T: 3 1 : 3 : 3 : 0.06
+T: 3 1 : 3 : 0 : 0.03
+T: 3 1 : 3 : 4 : 0.03
+T: 3 1 : 3 : 6 : 0.18
+T: 3 1 : 3 : 9 : 0.06
+T: 3 1 : 3 : 12 : 0.12
+T: 3 1 : 2 : 32 : 0.06
+T: 3 1 : 2 : 29 : 0.03
+T: 3 1 : 2 : 2 : 0.09
+T: 3 1 : 2 : 1 : 0.03
+T: 3 1 : 2 : 5 : 0.18
+T: 3 1 : 2 : 10 : 0.06
+T: 3 1 : 2 : 28 : 0.01
+T: 3 1 : 2 : 11 : 0.18
+T: 3 1 : 2 : 14 : 0.36
+T: 3 1 : 0 : 30 : 0.06
+T: 3 1 : 0 : 28 : 0.01
+T: 3 1 : 0 : 1 : 0.03
+T: 3 1 : 0 : 0 : 0.09
+T: 3 1 : 0 : 3 : 0.18
+T: 3 1 : 0 : 27 : 0.03
+T: 3 1 : 0 : 10 : 0.06
+T: 3 1 : 0 : 9 : 0.18
+T: 3 1 : 0 : 12 : 0.36
+T: 3 1 : 1 : 31 : 0.06
+T: 3 1 : 1 : 29 : 0.01
+T: 3 1 : 1 : 13 : 0.36
+T: 3 1 : 1 : 28 : 0.02
+T: 3 1 : 1 : 11 : 0.06
+T: 3 1 : 1 : 1 : 0.06
+T: 3 1 : 1 : 0 : 0.03
+T: 3 1 : 1 : 2 : 0.03
+T: 3 1 : 1 : 9 : 0.06
+T: 3 1 : 1 : 4 : 0.18
+T: 3 1 : 1 : 27 : 0.01
+T: 3 1 : 1 : 10 : 0.12
+T: 3 1 : 6 : 34 : 0.01
+T: 3 1 : 6 : 30 : 0.01
+T: 3 1 : 6 : 6 : 0.24
+T: 3 1 : 6 : 3 : 0.03
+T: 3 1 : 6 : 7 : 0.03
+T: 3 1 : 6 : 12 : 0.06
+T: 3 1 : 6 : 15 : 0.48
+T: 3 1 : 6 : 33 : 0.08
+T: 3 1 : 6 : 16 : 0.06
+T: 3 1 : 7 : 35 : 0.01
+T: 3 1 : 7 : 31 : 0.01
+T: 3 1 : 7 : 34 : 0.07
+T: 3 1 : 7 : 17 : 0.06
+T: 3 1 : 7 : 33 : 0.01
+T: 3 1 : 7 : 16 : 0.42
+T: 3 1 : 7 : 6 : 0.03
+T: 3 1 : 7 : 13 : 0.06
+T: 3 1 : 7 : 4 : 0.03
+T: 3 1 : 7 : 7 : 0.21
+T: 3 1 : 7 : 8 : 0.03
+T: 3 1 : 7 : 15 : 0.06
+T: 3 1 : 8 : 35 : 0.08
+T: 3 1 : 8 : 32 : 0.01
+T: 3 1 : 8 : 7 : 0.03
+T: 3 1 : 8 : 14 : 0.06
+T: 3 1 : 8 : 5 : 0.03
+T: 3 1 : 8 : 8 : 0.24
+T: 3 1 : 8 : 16 : 0.06
+T: 3 1 : 8 : 34 : 0.01
+T: 3 1 : 8 : 17 : 0.48
+T: 3 1 : 9 : 39 : 0.06
+T: 3 1 : 9 : 21 : 0.36
+T: 3 1 : 9 : 36 : 0.03
+T: 3 1 : 9 : 19 : 0.06
+T: 3 1 : 9 : 18 : 0.18
+T: 3 1 : 9 : 1 : 0.01
+T: 3 1 : 9 : 0 : 0.03
+T: 3 1 : 9 : 37 : 0.01
+T: 3 1 : 9 : 3 : 0.06
+T: 3 1 : 9 : 10 : 0.02
+T: 3 1 : 9 : 9 : 0.06
+T: 3 1 : 9 : 12 : 0.12
+T: 3 1 : 10 : 40 : 0.06
+T: 3 1 : 10 : 22 : 0.36
+T: 3 1 : 10 : 37 : 0.02
+T: 3 1 : 10 : 20 : 0.06
+T: 3 1 : 10 : 13 : 0.12
+T: 3 1 : 10 : 11 : 0.02
+T: 3 1 : 10 : 18 : 0.06
+T: 3 1 : 10 : 1 : 0.02
+T: 3 1 : 10 : 0 : 0.01
+T: 3 1 : 10 : 36 : 0.01
+T: 3 1 : 10 : 19 : 0.12
+T: 3 1 : 10 : 2 : 0.01
+T: 3 1 : 10 : 9 : 0.02
+T: 3 1 : 10 : 38 : 0.01
+T: 3 1 : 10 : 4 : 0.06
+T: 3 1 : 10 : 10 : 0.04
+T: 3 1 : 11 : 41 : 0.06
+T: 3 1 : 11 : 38 : 0.03
+T: 3 1 : 11 : 23 : 0.36
+T: 3 1 : 11 : 37 : 0.01
+T: 3 1 : 11 : 20 : 0.18
+T: 3 1 : 11 : 19 : 0.06
+T: 3 1 : 11 : 2 : 0.03
+T: 3 1 : 11 : 1 : 0.01
+T: 3 1 : 11 : 5 : 0.06
+T: 3 1 : 11 : 10 : 0.02
+T: 3 1 : 11 : 11 : 0.06
+T: 3 1 : 11 : 14 : 0.12
+T: 3 1 : 12 : 42 : 0.06
+T: 3 1 : 12 : 36 : 0.01
+T: 3 1 : 12 : 24 : 0.36
+T: 3 1 : 12 : 39 : 0.02
+T: 3 1 : 12 : 22 : 0.06
+T: 3 1 : 12 : 18 : 0.06
+T: 3 1 : 12 : 15 : 0.12
+T: 3 1 : 12 : 13 : 0.02
+T: 3 1 : 12 : 3 : 0.02
+T: 3 1 : 12 : 0 : 0.01
+T: 3 1 : 12 : 21 : 0.12
+T: 3 1 : 12 : 4 : 0.01
+T: 3 1 : 12 : 40 : 0.01
+T: 3 1 : 12 : 6 : 0.06
+T: 3 1 : 12 : 9 : 0.02
+T: 3 1 : 12 : 12 : 0.04
+T: 3 1 : 13 : 43 : 0.06
+T: 3 1 : 13 : 39 : 0.01
+T: 3 1 : 13 : 7 : 0.06
+T: 3 1 : 13 : 5 : 0.01
+T: 3 1 : 13 : 22 : 0.06
+T: 3 1 : 13 : 41 : 0.01
+T: 3 1 : 13 : 4 : 0.01
+T: 3 1 : 13 : 21 : 0.06
+T: 3 1 : 13 : 1 : 0.01
+T: 3 1 : 13 : 10 : 0.02
+T: 3 1 : 13 : 40 : 0.01
+T: 3 1 : 13 : 3 : 0.01
+T: 3 1 : 13 : 37 : 0.01
+T: 3 1 : 13 : 12 : 0.02
+T: 3 1 : 13 : 13 : 0.02
+T: 3 1 : 13 : 14 : 0.02
+T: 3 1 : 13 : 16 : 0.12
+T: 3 1 : 13 : 19 : 0.06
+T: 3 1 : 13 : 23 : 0.06
+T: 3 1 : 13 : 25 : 0.36
+T: 3 1 : 14 : 44 : 0.06
+T: 3 1 : 14 : 41 : 0.02
+T: 3 1 : 14 : 26 : 0.36
+T: 3 1 : 14 : 40 : 0.01
+T: 3 1 : 14 : 23 : 0.12
+T: 3 1 : 14 : 20 : 0.06
+T: 3 1 : 14 : 17 : 0.12
+T: 3 1 : 14 : 14 : 0.04
+T: 3 1 : 14 : 38 : 0.01
+T: 3 1 : 14 : 4 : 0.01
+T: 3 1 : 14 : 11 : 0.02
+T: 3 1 : 14 : 2 : 0.01
+T: 3 1 : 14 : 22 : 0.06
+T: 3 1 : 14 : 5 : 0.02
+T: 3 1 : 14 : 8 : 0.06
+T: 3 1 : 14 : 13 : 0.02
+T: 3 1 : 15 : 43 : 0.01
+T: 3 1 : 15 : 39 : 0.01
+T: 3 1 : 15 : 42 : 0.08
+T: 3 1 : 15 : 25 : 0.06
+T: 3 1 : 15 : 21 : 0.06
+T: 3 1 : 15 : 6 : 0.08
+T: 3 1 : 15 : 3 : 0.01
+T: 3 1 : 15 : 24 : 0.48
+T: 3 1 : 15 : 7 : 0.01
+T: 3 1 : 15 : 12 : 0.02
+T: 3 1 : 15 : 15 : 0.16
+T: 3 1 : 15 : 16 : 0.02
+T: 3 1 : 36 : 66 : 0.06
+T: 3 1 : 36 : 48 : 0.36
+T: 3 1 : 36 : 39 : 0.06
+T: 3 1 : 36 : 37 : 0.01
+T: 3 1 : 36 : 36 : 0.03
+T: 3 1 : 36 : 9 : 0.03
+T: 3 1 : 36 : 64 : 0.01
+T: 3 1 : 36 : 30 : 0.06
+T: 3 1 : 36 : 63 : 0.03
+T: 3 1 : 36 : 46 : 0.06
+T: 3 1 : 36 : 12 : 0.06
+T: 3 1 : 36 : 10 : 0.01
+T: 3 1 : 36 : 27 : 0.03
+T: 3 1 : 36 : 45 : 0.18
+T: 3 1 : 36 : 28 : 0.01
+T: 3 1 : 37 : 67 : 0.06
+T: 3 1 : 37 : 63 : 0.01
+T: 3 1 : 37 : 65 : 0.01
+T: 3 1 : 37 : 28 : 0.02
+T: 3 1 : 37 : 11 : 0.01
+T: 3 1 : 37 : 45 : 0.06
+T: 3 1 : 37 : 64 : 0.02
+T: 3 1 : 37 : 27 : 0.01
+T: 3 1 : 37 : 13 : 0.06
+T: 3 1 : 37 : 10 : 0.02
+T: 3 1 : 37 : 47 : 0.06
+T: 3 1 : 37 : 29 : 0.01
+T: 3 1 : 37 : 9 : 0.01
+T: 3 1 : 37 : 46 : 0.12
+T: 3 1 : 37 : 31 : 0.06
+T: 3 1 : 37 : 36 : 0.01
+T: 3 1 : 37 : 37 : 0.02
+T: 3 1 : 37 : 38 : 0.01
+T: 3 1 : 37 : 40 : 0.06
+T: 3 1 : 37 : 49 : 0.36
+T: 3 1 : 38 : 68 : 0.06
+T: 3 1 : 38 : 50 : 0.36
+T: 3 1 : 38 : 64 : 0.01
+T: 3 1 : 38 : 47 : 0.18
+T: 3 1 : 38 : 41 : 0.06
+T: 3 1 : 38 : 38 : 0.03
+T: 3 1 : 38 : 37 : 0.01
+T: 3 1 : 38 : 32 : 0.06
+T: 3 1 : 38 : 10 : 0.01
+T: 3 1 : 38 : 65 : 0.03
+T: 3 1 : 38 : 14 : 0.06
+T: 3 1 : 38 : 11 : 0.03
+T: 3 1 : 38 : 28 : 0.01
+T: 3 1 : 38 : 46 : 0.06
+T: 3 1 : 38 : 29 : 0.03
+T: 3 1 : 39 : 69 : 0.06
+T: 3 1 : 39 : 66 : 0.02
+T: 3 1 : 39 : 63 : 0.01
+T: 3 1 : 39 : 15 : 0.06
+T: 3 1 : 39 : 27 : 0.01
+T: 3 1 : 39 : 13 : 0.01
+T: 3 1 : 39 : 67 : 0.01
+T: 3 1 : 39 : 30 : 0.02
+T: 3 1 : 39 : 9 : 0.01
+T: 3 1 : 39 : 49 : 0.06
+T: 3 1 : 39 : 12 : 0.02
+T: 3 1 : 39 : 31 : 0.01
+T: 3 1 : 39 : 48 : 0.12
+T: 3 1 : 39 : 33 : 0.06
+T: 3 1 : 39 : 36 : 0.01
+T: 3 1 : 39 : 39 : 0.02
+T: 3 1 : 39 : 40 : 0.01
+T: 3 1 : 39 : 42 : 0.06
+T: 3 1 : 39 : 45 : 0.06
+T: 3 1 : 39 : 51 : 0.36
+T: 3 1 : 40 : 70 : 0.06
+T: 3 1 : 40 : 66 : 0.01
+T: 3 1 : 40 : 64 : 0.01
+T: 3 1 : 40 : 52 : 0.36
+T: 3 1 : 40 : 48 : 0.06
+T: 3 1 : 40 : 16 : 0.06
+T: 3 1 : 40 : 28 : 0.01
+T: 3 1 : 40 : 14 : 0.01
+T: 3 1 : 40 : 68 : 0.01
+T: 3 1 : 40 : 31 : 0.01
+T: 3 1 : 40 : 50 : 0.06
+T: 3 1 : 40 : 13 : 0.01
+T: 3 1 : 40 : 67 : 0.01
+T: 3 1 : 40 : 30 : 0.01
+T: 3 1 : 40 : 10 : 0.01
+T: 3 1 : 40 : 49 : 0.06
+T: 3 1 : 40 : 12 : 0.01
+T: 3 1 : 40 : 46 : 0.06
+T: 3 1 : 40 : 32 : 0.01
+T: 3 1 : 40 : 34 : 0.06
+T: 3 1 : 40 : 37 : 0.01
+T: 3 1 : 40 : 39 : 0.01
+T: 3 1 : 40 : 40 : 0.01
+T: 3 1 : 40 : 41 : 0.01
+T: 3 1 : 40 : 43 : 0.06
+T: 3 1 : 41 : 71 : 0.06
+T: 3 1 : 41 : 67 : 0.01
+T: 3 1 : 41 : 65 : 0.01
+T: 3 1 : 41 : 29 : 0.01
+T: 3 1 : 41 : 68 : 0.02
+T: 3 1 : 41 : 31 : 0.01
+T: 3 1 : 41 : 14 : 0.02
+T: 3 1 : 41 : 17 : 0.06
+T: 3 1 : 41 : 11 : 0.01
+T: 3 1 : 41 : 47 : 0.06
+T: 3 1 : 41 : 32 : 0.02
+T: 3 1 : 41 : 49 : 0.06
+T: 3 1 : 41 : 35 : 0.06
+T: 3 1 : 41 : 38 : 0.01
+T: 3 1 : 41 : 40 : 0.01
+T: 3 1 : 41 : 41 : 0.02
+T: 3 1 : 41 : 44 : 0.06
+T: 3 1 : 41 : 13 : 0.01
+T: 3 1 : 41 : 50 : 0.12
+T: 3 1 : 41 : 53 : 0.36
+T: 3 1 : 42 : 70 : 0.01
+T: 3 1 : 42 : 69 : 0.08
+T: 3 1 : 42 : 52 : 0.06
+T: 3 1 : 42 : 48 : 0.06
+T: 3 1 : 42 : 43 : 0.01
+T: 3 1 : 42 : 42 : 0.08
+T: 3 1 : 42 : 39 : 0.01
+T: 3 1 : 42 : 66 : 0.01
+T: 3 1 : 42 : 15 : 0.08
+T: 3 1 : 42 : 12 : 0.01
+T: 3 1 : 42 : 33 : 0.08
+T: 3 1 : 42 : 16 : 0.01
+T: 3 1 : 42 : 30 : 0.01
+T: 3 1 : 42 : 51 : 0.48
+T: 3 1 : 42 : 34 : 0.01
+T: 3 1 : 43 : 69 : 0.01
+T: 3 1 : 43 : 67 : 0.01
+T: 3 1 : 43 : 70 : 0.07
+T: 3 1 : 43 : 33 : 0.01
+T: 3 1 : 43 : 31 : 0.01
+T: 3 1 : 43 : 17 : 0.01
+T: 3 1 : 43 : 71 : 0.01
+T: 3 1 : 43 : 34 : 0.07
+T: 3 1 : 43 : 51 : 0.06
+T: 3 1 : 43 : 13 : 0.01
+T: 3 1 : 43 : 49 : 0.06
+T: 3 1 : 43 : 35 : 0.01
+T: 3 1 : 43 : 15 : 0.01
+T: 3 1 : 43 : 52 : 0.42
+T: 3 1 : 43 : 40 : 0.01
+T: 3 1 : 43 : 42 : 0.01
+T: 3 1 : 43 : 43 : 0.07
+T: 3 1 : 43 : 44 : 0.01
+T: 3 1 : 43 : 16 : 0.07
+T: 3 1 : 43 : 53 : 0.06
+T: 3 1 : 44 : 71 : 0.08
+T: 3 1 : 44 : 70 : 0.01
+T: 3 1 : 44 : 53 : 0.48
+T: 3 1 : 44 : 44 : 0.08
+T: 3 1 : 44 : 43 : 0.01
+T: 3 1 : 44 : 41 : 0.01
+T: 3 1 : 44 : 50 : 0.06
+T: 3 1 : 44 : 16 : 0.01
+T: 3 1 : 44 : 14 : 0.01
+T: 3 1 : 44 : 52 : 0.06
+T: 3 1 : 44 : 35 : 0.08
+T: 3 1 : 44 : 32 : 0.01
+T: 3 1 : 44 : 68 : 0.01
+T: 3 1 : 44 : 17 : 0.08
+T: 3 1 : 44 : 34 : 0.01
+T: 3 1 : 45 : 75 : 0.06
+T: 3 1 : 45 : 48 : 0.42
+T: 3 1 : 45 : 46 : 0.07
+T: 3 1 : 45 : 45 : 0.21
+T: 3 1 : 45 : 18 : 0.03
+T: 3 1 : 45 : 73 : 0.01
+T: 3 1 : 45 : 39 : 0.06
+T: 3 1 : 45 : 72 : 0.03
+T: 3 1 : 45 : 21 : 0.06
+T: 3 1 : 45 : 19 : 0.01
+T: 3 1 : 45 : 36 : 0.03
+T: 3 1 : 45 : 37 : 0.01
+T: 3 1 : 46 : 76 : 0.06
+T: 3 1 : 46 : 49 : 0.42
+T: 3 1 : 46 : 47 : 0.07
+T: 3 1 : 46 : 46 : 0.14
+T: 3 1 : 46 : 45 : 0.07
+T: 3 1 : 46 : 74 : 0.01
+T: 3 1 : 46 : 40 : 0.06
+T: 3 1 : 46 : 72 : 0.01
+T: 3 1 : 46 : 38 : 0.01
+T: 3 1 : 46 : 18 : 0.01
+T: 3 1 : 46 : 73 : 0.02
+T: 3 1 : 46 : 22 : 0.06
+T: 3 1 : 46 : 19 : 0.02
+T: 3 1 : 46 : 36 : 0.01
+T: 3 1 : 46 : 20 : 0.01
+T: 3 1 : 46 : 37 : 0.02
+T: 3 1 : 47 : 77 : 0.06
+T: 3 1 : 47 : 73 : 0.01
+T: 3 1 : 47 : 50 : 0.42
+T: 3 1 : 47 : 47 : 0.21
+T: 3 1 : 47 : 46 : 0.07
+T: 3 1 : 47 : 41 : 0.06
+T: 3 1 : 47 : 19 : 0.01
+T: 3 1 : 47 : 74 : 0.03
+T: 3 1 : 47 : 23 : 0.06
+T: 3 1 : 47 : 20 : 0.03
+T: 3 1 : 47 : 37 : 0.01
+T: 3 1 : 47 : 38 : 0.03
+T: 3 1 : 48 : 78 : 0.06
+T: 3 1 : 48 : 51 : 0.42
+T: 3 1 : 48 : 49 : 0.07
+T: 3 1 : 48 : 48 : 0.14
+T: 3 1 : 48 : 45 : 0.07
+T: 3 1 : 48 : 76 : 0.01
+T: 3 1 : 48 : 42 : 0.06
+T: 3 1 : 48 : 40 : 0.01
+T: 3 1 : 48 : 72 : 0.01
+T: 3 1 : 48 : 21 : 0.02
+T: 3 1 : 48 : 18 : 0.01
+T: 3 1 : 48 : 39 : 0.02
+T: 3 1 : 48 : 22 : 0.01
+T: 3 1 : 48 : 36 : 0.01
+T: 3 1 : 48 : 75 : 0.02
+T: 3 1 : 48 : 24 : 0.06
+T: 3 1 : 49 : 79 : 0.06
+T: 3 1 : 49 : 75 : 0.01
+T: 3 1 : 49 : 25 : 0.06
+T: 3 1 : 49 : 37 : 0.01
+T: 3 1 : 49 : 23 : 0.01
+T: 3 1 : 49 : 77 : 0.01
+T: 3 1 : 49 : 40 : 0.01
+T: 3 1 : 49 : 22 : 0.01
+T: 3 1 : 49 : 76 : 0.01
+T: 3 1 : 49 : 39 : 0.01
+T: 3 1 : 49 : 73 : 0.01
+T: 3 1 : 49 : 19 : 0.01
+T: 3 1 : 49 : 21 : 0.01
+T: 3 1 : 49 : 41 : 0.01
+T: 3 1 : 49 : 43 : 0.06
+T: 3 1 : 49 : 46 : 0.07
+T: 3 1 : 49 : 48 : 0.07
+T: 3 1 : 49 : 49 : 0.07
+T: 3 1 : 49 : 50 : 0.07
+T: 3 1 : 49 : 52 : 0.42
+T: 3 1 : 50 : 80 : 0.06
+T: 3 1 : 50 : 76 : 0.01
+T: 3 1 : 50 : 53 : 0.42
+T: 3 1 : 50 : 50 : 0.14
+T: 3 1 : 50 : 49 : 0.07
+T: 3 1 : 50 : 47 : 0.07
+T: 3 1 : 50 : 44 : 0.06
+T: 3 1 : 50 : 41 : 0.02
+T: 3 1 : 50 : 22 : 0.01
+T: 3 1 : 50 : 20 : 0.01
+T: 3 1 : 50 : 77 : 0.02
+T: 3 1 : 50 : 26 : 0.06
+T: 3 1 : 50 : 74 : 0.01
+T: 3 1 : 50 : 23 : 0.02
+T: 3 1 : 50 : 40 : 0.01
+T: 3 1 : 50 : 38 : 0.01
+T: 3 1 : 51 : 79 : 0.01
+T: 3 1 : 51 : 78 : 0.08
+T: 3 1 : 51 : 52 : 0.07
+T: 3 1 : 51 : 51 : 0.56
+T: 3 1 : 51 : 48 : 0.07
+T: 3 1 : 51 : 75 : 0.01
+T: 3 1 : 51 : 24 : 0.08
+T: 3 1 : 51 : 21 : 0.01
+T: 3 1 : 51 : 42 : 0.08
+T: 3 1 : 51 : 25 : 0.01
+T: 3 1 : 51 : 39 : 0.01
+T: 3 1 : 51 : 43 : 0.01
+T: 3 1 : 52 : 80 : 0.01
+T: 3 1 : 52 : 79 : 0.07
+T: 3 1 : 52 : 53 : 0.07
+T: 3 1 : 52 : 52 : 0.49
+T: 3 1 : 52 : 51 : 0.07
+T: 3 1 : 52 : 49 : 0.07
+T: 3 1 : 52 : 78 : 0.01
+T: 3 1 : 52 : 44 : 0.01
+T: 3 1 : 52 : 24 : 0.01
+T: 3 1 : 52 : 22 : 0.01
+T: 3 1 : 52 : 43 : 0.07
+T: 3 1 : 52 : 26 : 0.01
+T: 3 1 : 52 : 40 : 0.01
+T: 3 1 : 52 : 76 : 0.01
+T: 3 1 : 52 : 25 : 0.07
+T: 3 1 : 52 : 42 : 0.01
+T: 3 1 : 53 : 80 : 0.08
+T: 3 1 : 53 : 79 : 0.01
+T: 3 1 : 53 : 53 : 0.56
+T: 3 1 : 53 : 52 : 0.07
+T: 3 1 : 53 : 50 : 0.07
+T: 3 1 : 53 : 25 : 0.01
+T: 3 1 : 53 : 23 : 0.01
+T: 3 1 : 53 : 44 : 0.08
+T: 3 1 : 53 : 41 : 0.01
+T: 3 1 : 53 : 77 : 0.01
+T: 3 1 : 53 : 26 : 0.08
+T: 3 1 : 53 : 43 : 0.01
+T: 3 1 : 54 : 66 : 0.36
+T: 3 1 : 54 : 63 : 0.18
+T: 3 1 : 54 : 28 : 0.01
+T: 3 1 : 54 : 27 : 0.03
+T: 3 1 : 54 : 55 : 0.03
+T: 3 1 : 54 : 64 : 0.06
+T: 3 1 : 54 : 30 : 0.06
+T: 3 1 : 54 : 54 : 0.09
+T: 3 1 : 54 : 57 : 0.18
+T: 3 1 : 55 : 67 : 0.36
+T: 3 1 : 55 : 64 : 0.12
+T: 3 1 : 55 : 58 : 0.18
+T: 3 1 : 55 : 56 : 0.03
+T: 3 1 : 55 : 28 : 0.02
+T: 3 1 : 55 : 27 : 0.01
+T: 3 1 : 55 : 55 : 0.06
+T: 3 1 : 55 : 63 : 0.06
+T: 3 1 : 55 : 29 : 0.01
+T: 3 1 : 55 : 65 : 0.06
+T: 3 1 : 55 : 31 : 0.06
+T: 3 1 : 55 : 54 : 0.03
+T: 3 1 : 56 : 68 : 0.36
+T: 3 1 : 56 : 65 : 0.18
+T: 3 1 : 56 : 64 : 0.06
+T: 3 1 : 56 : 29 : 0.03
+T: 3 1 : 56 : 28 : 0.01
+T: 3 1 : 56 : 56 : 0.09
+T: 3 1 : 56 : 32 : 0.06
+T: 3 1 : 56 : 55 : 0.03
+T: 3 1 : 56 : 59 : 0.18
+T: 3 1 : 57 : 69 : 0.36
+T: 3 1 : 57 : 66 : 0.12
+T: 3 1 : 57 : 63 : 0.06
+T: 3 1 : 57 : 60 : 0.18
+T: 3 1 : 57 : 58 : 0.03
+T: 3 1 : 57 : 30 : 0.02
+T: 3 1 : 57 : 27 : 0.01
+T: 3 1 : 57 : 31 : 0.01
+T: 3 1 : 57 : 67 : 0.06
+T: 3 1 : 57 : 33 : 0.06
+T: 3 1 : 57 : 54 : 0.03
+T: 3 1 : 57 : 57 : 0.06
+T: 3 1 : 58 : 70 : 0.36
+T: 3 1 : 58 : 67 : 0.06
+T: 3 1 : 58 : 61 : 0.18
+T: 3 1 : 58 : 59 : 0.03
+T: 3 1 : 58 : 58 : 0.03
+T: 3 1 : 58 : 57 : 0.03
+T: 3 1 : 58 : 64 : 0.06
+T: 3 1 : 58 : 30 : 0.01
+T: 3 1 : 58 : 28 : 0.01
+T: 3 1 : 58 : 31 : 0.01
+T: 3 1 : 58 : 66 : 0.06
+T: 3 1 : 58 : 32 : 0.01
+T: 3 1 : 58 : 68 : 0.06
+T: 3 1 : 58 : 34 : 0.06
+T: 3 1 : 58 : 55 : 0.03
+T: 3 1 : 59 : 71 : 0.36
+T: 3 1 : 59 : 68 : 0.12
+T: 3 1 : 59 : 67 : 0.06
+T: 3 1 : 59 : 62 : 0.18
+T: 3 1 : 59 : 59 : 0.06
+T: 3 1 : 59 : 65 : 0.06
+T: 3 1 : 59 : 31 : 0.01
+T: 3 1 : 59 : 29 : 0.01
+T: 3 1 : 59 : 32 : 0.02
+T: 3 1 : 59 : 35 : 0.06
+T: 3 1 : 59 : 56 : 0.03
+T: 3 1 : 59 : 58 : 0.03
+T: 3 1 : 60 : 70 : 0.06
+T: 3 1 : 60 : 69 : 0.48
+T: 3 1 : 60 : 66 : 0.06
+T: 3 1 : 60 : 33 : 0.08
+T: 3 1 : 60 : 61 : 0.03
+T: 3 1 : 60 : 30 : 0.01
+T: 3 1 : 60 : 34 : 0.01
+T: 3 1 : 60 : 57 : 0.03
+T: 3 1 : 60 : 60 : 0.24
+T: 3 1 : 61 : 71 : 0.06
+T: 3 1 : 61 : 70 : 0.42
+T: 3 1 : 61 : 62 : 0.03
+T: 3 1 : 61 : 61 : 0.21
+T: 3 1 : 61 : 67 : 0.06
+T: 3 1 : 61 : 33 : 0.01
+T: 3 1 : 61 : 31 : 0.01
+T: 3 1 : 61 : 34 : 0.07
+T: 3 1 : 61 : 69 : 0.06
+T: 3 1 : 61 : 35 : 0.01
+T: 3 1 : 61 : 58 : 0.03
+T: 3 1 : 61 : 60 : 0.03
+T: 3 1 : 62 : 71 : 0.48
+T: 3 1 : 62 : 70 : 0.06
+T: 3 1 : 62 : 68 : 0.06
+T: 3 1 : 62 : 34 : 0.01
+T: 3 1 : 62 : 62 : 0.24
+T: 3 1 : 62 : 32 : 0.01
+T: 3 1 : 62 : 35 : 0.08
+T: 3 1 : 62 : 59 : 0.03
+T: 3 1 : 62 : 61 : 0.03
+T: 3 1 : 63 : 75 : 0.36
+T: 3 1 : 63 : 66 : 0.12
+T: 3 1 : 63 : 64 : 0.02
+T: 3 1 : 63 : 63 : 0.06
+T: 3 1 : 63 : 36 : 0.03
+T: 3 1 : 63 : 57 : 0.06
+T: 3 1 : 63 : 73 : 0.06
+T: 3 1 : 63 : 39 : 0.06
+T: 3 1 : 63 : 37 : 0.01
+T: 3 1 : 63 : 54 : 0.03
+T: 3 1 : 63 : 72 : 0.18
+T: 3 1 : 63 : 55 : 0.01
+T: 3 1 : 64 : 76 : 0.36
+T: 3 1 : 64 : 67 : 0.12
+T: 3 1 : 64 : 65 : 0.02
+T: 3 1 : 64 : 64 : 0.04
+T: 3 1 : 64 : 63 : 0.02
+T: 3 1 : 64 : 58 : 0.06
+T: 3 1 : 64 : 73 : 0.12
+T: 3 1 : 64 : 56 : 0.01
+T: 3 1 : 64 : 36 : 0.01
+T: 3 1 : 64 : 74 : 0.06
+T: 3 1 : 64 : 40 : 0.06
+T: 3 1 : 64 : 37 : 0.02
+T: 3 1 : 64 : 54 : 0.01
+T: 3 1 : 64 : 72 : 0.06
+T: 3 1 : 64 : 38 : 0.01
+T: 3 1 : 64 : 55 : 0.02
+T: 3 1 : 65 : 77 : 0.36
+T: 3 1 : 65 : 74 : 0.18
+T: 3 1 : 65 : 68 : 0.12
+T: 3 1 : 65 : 65 : 0.06
+T: 3 1 : 65 : 64 : 0.02
+T: 3 1 : 65 : 59 : 0.06
+T: 3 1 : 65 : 37 : 0.01
+T: 3 1 : 65 : 41 : 0.06
+T: 3 1 : 65 : 38 : 0.03
+T: 3 1 : 65 : 55 : 0.01
+T: 3 1 : 65 : 73 : 0.06
+T: 3 1 : 65 : 56 : 0.03
+T: 3 1 : 66 : 78 : 0.36
+T: 3 1 : 66 : 72 : 0.06
+T: 3 1 : 66 : 69 : 0.12
+T: 3 1 : 66 : 67 : 0.02
+T: 3 1 : 66 : 66 : 0.04
+T: 3 1 : 66 : 63 : 0.02
+T: 3 1 : 66 : 60 : 0.06
+T: 3 1 : 66 : 75 : 0.12
+T: 3 1 : 66 : 58 : 0.01
+T: 3 1 : 66 : 39 : 0.02
+T: 3 1 : 66 : 36 : 0.01
+T: 3 1 : 66 : 57 : 0.02
+T: 3 1 : 66 : 40 : 0.01
+T: 3 1 : 66 : 54 : 0.01
+T: 3 1 : 66 : 76 : 0.06
+T: 3 1 : 66 : 42 : 0.06
+T: 3 1 : 67 : 79 : 0.36
+T: 3 1 : 67 : 75 : 0.06
+T: 3 1 : 67 : 43 : 0.06
+T: 3 1 : 67 : 55 : 0.01
+T: 3 1 : 67 : 41 : 0.01
+T: 3 1 : 67 : 58 : 0.01
+T: 3 1 : 67 : 77 : 0.06
+T: 3 1 : 67 : 40 : 0.01
+T: 3 1 : 67 : 57 : 0.01
+T: 3 1 : 67 : 37 : 0.01
+T: 3 1 : 67 : 76 : 0.06
+T: 3 1 : 67 : 39 : 0.01
+T: 3 1 : 67 : 73 : 0.06
+T: 3 1 : 67 : 59 : 0.01
+T: 3 1 : 67 : 61 : 0.06
+T: 3 1 : 67 : 64 : 0.02
+T: 3 1 : 67 : 66 : 0.02
+T: 3 1 : 67 : 67 : 0.02
+T: 3 1 : 67 : 68 : 0.02
+T: 3 1 : 67 : 70 : 0.12
+T: 3 1 : 68 : 80 : 0.36
+T: 3 1 : 68 : 77 : 0.12
+T: 3 1 : 68 : 71 : 0.12
+T: 3 1 : 68 : 68 : 0.04
+T: 3 1 : 68 : 67 : 0.02
+T: 3 1 : 68 : 65 : 0.02
+T: 3 1 : 68 : 62 : 0.06
+T: 3 1 : 68 : 76 : 0.06
+T: 3 1 : 68 : 59 : 0.02
+T: 3 1 : 68 : 74 : 0.06
+T: 3 1 : 68 : 40 : 0.01
+T: 3 1 : 68 : 38 : 0.01
+T: 3 1 : 68 : 44 : 0.06
+T: 3 1 : 68 : 41 : 0.02
+T: 3 1 : 68 : 58 : 0.01
+T: 3 1 : 68 : 56 : 0.01
+T: 3 1 : 69 : 79 : 0.06
+T: 3 1 : 69 : 75 : 0.06
+T: 3 1 : 69 : 70 : 0.02
+T: 3 1 : 69 : 69 : 0.16
+T: 3 1 : 69 : 66 : 0.02
+T: 3 1 : 69 : 42 : 0.08
+T: 3 1 : 69 : 39 : 0.01
+T: 3 1 : 69 : 60 : 0.08
+T: 3 1 : 69 : 43 : 0.01
+T: 3 1 : 69 : 57 : 0.01
+T: 3 1 : 69 : 78 : 0.48
+T: 3 1 : 69 : 61 : 0.01
+T: 3 1 : 70 : 80 : 0.06
+T: 3 1 : 70 : 71 : 0.02
+T: 3 1 : 70 : 70 : 0.14
+T: 3 1 : 70 : 69 : 0.02
+T: 3 1 : 70 : 67 : 0.02
+T: 3 1 : 70 : 79 : 0.42
+T: 3 1 : 70 : 62 : 0.01
+T: 3 1 : 70 : 76 : 0.06
+T: 3 1 : 70 : 42 : 0.01
+T: 3 1 : 70 : 40 : 0.01
+T: 3 1 : 70 : 78 : 0.06
+T: 3 1 : 70 : 61 : 0.07
+T: 3 1 : 70 : 44 : 0.01
+T: 3 1 : 70 : 58 : 0.01
+T: 3 1 : 70 : 43 : 0.07
+T: 3 1 : 70 : 60 : 0.01
+T: 3 1 : 71 : 80 : 0.48
+T: 3 1 : 71 : 71 : 0.16
+T: 3 1 : 71 : 70 : 0.02
+T: 3 1 : 71 : 68 : 0.02
+T: 3 1 : 71 : 77 : 0.06
+T: 3 1 : 71 : 43 : 0.01
+T: 3 1 : 71 : 41 : 0.01
+T: 3 1 : 71 : 79 : 0.06
+T: 3 1 : 71 : 62 : 0.08
+T: 3 1 : 71 : 59 : 0.01
+T: 3 1 : 71 : 44 : 0.08
+T: 3 1 : 71 : 61 : 0.01
+T: 3 1 : 72 : 75 : 0.48
+T: 3 1 : 72 : 73 : 0.08
+T: 3 1 : 72 : 72 : 0.24
+T: 3 1 : 72 : 45 : 0.03
+T: 3 1 : 72 : 66 : 0.06
+T: 3 1 : 72 : 48 : 0.06
+T: 3 1 : 72 : 46 : 0.01
+T: 3 1 : 72 : 63 : 0.03
+T: 3 1 : 72 : 64 : 0.01
+T: 3 1 : 73 : 76 : 0.48
+T: 3 1 : 73 : 74 : 0.08
+T: 3 1 : 73 : 73 : 0.16
+T: 3 1 : 73 : 72 : 0.08
+T: 3 1 : 73 : 67 : 0.06
+T: 3 1 : 73 : 65 : 0.01
+T: 3 1 : 73 : 45 : 0.01
+T: 3 1 : 73 : 49 : 0.06
+T: 3 1 : 73 : 46 : 0.02
+T: 3 1 : 73 : 63 : 0.01
+T: 3 1 : 73 : 47 : 0.01
+T: 3 1 : 73 : 64 : 0.02
+T: 3 1 : 74 : 77 : 0.48
+T: 3 1 : 74 : 74 : 0.24
+T: 3 1 : 74 : 73 : 0.08
+T: 3 1 : 74 : 68 : 0.06
+T: 3 1 : 74 : 46 : 0.01
+T: 3 1 : 74 : 50 : 0.06
+T: 3 1 : 74 : 47 : 0.03
+T: 3 1 : 74 : 64 : 0.01
+T: 3 1 : 74 : 65 : 0.03
+T: 3 1 : 75 : 78 : 0.48
+T: 3 1 : 75 : 76 : 0.08
+T: 3 1 : 75 : 75 : 0.16
+T: 3 1 : 75 : 72 : 0.08
+T: 3 1 : 75 : 69 : 0.06
+T: 3 1 : 75 : 67 : 0.01
+T: 3 1 : 75 : 48 : 0.02
+T: 3 1 : 75 : 45 : 0.01
+T: 3 1 : 75 : 66 : 0.02
+T: 3 1 : 75 : 49 : 0.01
+T: 3 1 : 75 : 63 : 0.01
+T: 3 1 : 75 : 51 : 0.06
+T: 3 1 : 76 : 79 : 0.48
+T: 3 1 : 76 : 77 : 0.08
+T: 3 1 : 76 : 76 : 0.08
+T: 3 1 : 76 : 75 : 0.08
+T: 3 1 : 76 : 73 : 0.08
+T: 3 1 : 76 : 70 : 0.06
+T: 3 1 : 76 : 68 : 0.01
+T: 3 1 : 76 : 48 : 0.01
+T: 3 1 : 76 : 46 : 0.01
+T: 3 1 : 76 : 66 : 0.01
+T: 3 1 : 76 : 49 : 0.01
+T: 3 1 : 76 : 67 : 0.01
+T: 3 1 : 76 : 50 : 0.01
+T: 3 1 : 76 : 64 : 0.01
+T: 3 1 : 76 : 52 : 0.06
+T: 3 1 : 77 : 80 : 0.48
+T: 3 1 : 77 : 77 : 0.16
+T: 3 1 : 77 : 76 : 0.08
+T: 3 1 : 77 : 74 : 0.08
+T: 3 1 : 77 : 71 : 0.06
+T: 3 1 : 77 : 68 : 0.02
+T: 3 1 : 77 : 49 : 0.01
+T: 3 1 : 77 : 47 : 0.01
+T: 3 1 : 77 : 53 : 0.06
+T: 3 1 : 77 : 50 : 0.02
+T: 3 1 : 77 : 67 : 0.01
+T: 3 1 : 77 : 65 : 0.01
+T: 1 0 : 80 : 80 : 0.24
+T: 1 0 : 80 : 79 : 0.08
+T: 1 0 : 80 : 77 : 0.48
+T: 1 0 : 80 : 52 : 0.01
+T: 1 0 : 80 : 50 : 0.06
+T: 1 0 : 80 : 71 : 0.03
+T: 1 0 : 80 : 68 : 0.06
+T: 1 0 : 80 : 53 : 0.03
+T: 1 0 : 80 : 70 : 0.01
+T: 1 0 : 79 : 80 : 0.08
+T: 1 0 : 79 : 79 : 0.16
+T: 1 0 : 79 : 78 : 0.08
+T: 1 0 : 79 : 76 : 0.48
+T: 1 0 : 79 : 71 : 0.01
+T: 1 0 : 79 : 51 : 0.01
+T: 1 0 : 79 : 49 : 0.06
+T: 1 0 : 79 : 70 : 0.02
+T: 1 0 : 79 : 53 : 0.01
+T: 1 0 : 79 : 67 : 0.06
+T: 1 0 : 79 : 52 : 0.02
+T: 1 0 : 79 : 69 : 0.01
+T: 1 0 : 78 : 79 : 0.08
+T: 1 0 : 78 : 78 : 0.24
+T: 1 0 : 78 : 75 : 0.48
+T: 1 0 : 78 : 51 : 0.03
+T: 1 0 : 78 : 48 : 0.06
+T: 1 0 : 78 : 69 : 0.03
+T: 1 0 : 78 : 52 : 0.01
+T: 1 0 : 78 : 66 : 0.06
+T: 1 0 : 78 : 70 : 0.01
+T: 1 0 : 35 : 62 : 0.18
+T: 1 0 : 35 : 61 : 0.06
+T: 1 0 : 35 : 44 : 0.03
+T: 1 0 : 35 : 43 : 0.01
+T: 1 0 : 35 : 41 : 0.06
+T: 1 0 : 35 : 7 : 0.01
+T: 1 0 : 35 : 35 : 0.06
+T: 1 0 : 35 : 5 : 0.06
+T: 1 0 : 35 : 59 : 0.36
+T: 1 0 : 35 : 8 : 0.03
+T: 1 0 : 35 : 32 : 0.12
+T: 1 0 : 35 : 34 : 0.02
+T: 1 0 : 34 : 62 : 0.06
+T: 1 0 : 34 : 61 : 0.12
+T: 1 0 : 34 : 44 : 0.01
+T: 1 0 : 34 : 60 : 0.06
+T: 1 0 : 34 : 43 : 0.02
+T: 1 0 : 34 : 35 : 0.02
+T: 1 0 : 34 : 34 : 0.04
+T: 1 0 : 34 : 40 : 0.06
+T: 1 0 : 34 : 6 : 0.01
+T: 1 0 : 34 : 4 : 0.06
+T: 1 0 : 34 : 58 : 0.36
+T: 1 0 : 34 : 7 : 0.02
+T: 1 0 : 34 : 42 : 0.01
+T: 1 0 : 34 : 8 : 0.01
+T: 1 0 : 34 : 31 : 0.12
+T: 1 0 : 34 : 33 : 0.02
+T: 1 0 : 33 : 61 : 0.06
+T: 1 0 : 33 : 60 : 0.18
+T: 1 0 : 33 : 43 : 0.01
+T: 1 0 : 33 : 42 : 0.03
+T: 1 0 : 33 : 39 : 0.06
+T: 1 0 : 33 : 57 : 0.36
+T: 1 0 : 33 : 6 : 0.03
+T: 1 0 : 33 : 34 : 0.02
+T: 1 0 : 33 : 3 : 0.06
+T: 1 0 : 33 : 7 : 0.01
+T: 1 0 : 33 : 30 : 0.12
+T: 1 0 : 33 : 33 : 0.06
+T: 1 0 : 32 : 62 : 0.06
+T: 1 0 : 32 : 44 : 0.01
+T: 1 0 : 32 : 58 : 0.06
+T: 1 0 : 32 : 41 : 0.02
+T: 1 0 : 32 : 40 : 0.01
+T: 1 0 : 32 : 35 : 0.02
+T: 1 0 : 32 : 32 : 0.04
+T: 1 0 : 32 : 38 : 0.06
+T: 1 0 : 32 : 4 : 0.01
+T: 1 0 : 32 : 2 : 0.06
+T: 1 0 : 32 : 56 : 0.36
+T: 1 0 : 32 : 5 : 0.02
+T: 1 0 : 32 : 59 : 0.12
+T: 1 0 : 32 : 8 : 0.01
+T: 1 0 : 32 : 29 : 0.12
+T: 1 0 : 32 : 31 : 0.02
+T: 1 0 : 31 : 61 : 0.06
+T: 1 0 : 31 : 59 : 0.06
+T: 1 0 : 31 : 58 : 0.06
+T: 1 0 : 31 : 57 : 0.06
+T: 1 0 : 31 : 28 : 0.12
+T: 1 0 : 31 : 7 : 0.01
+T: 1 0 : 31 : 5 : 0.01
+T: 1 0 : 31 : 39 : 0.01
+T: 1 0 : 31 : 41 : 0.01
+T: 1 0 : 31 : 4 : 0.01
+T: 1 0 : 31 : 55 : 0.36
+T: 1 0 : 31 : 1 : 0.06
+T: 1 0 : 31 : 37 : 0.06
+T: 1 0 : 31 : 30 : 0.02
+T: 1 0 : 31 : 31 : 0.02
+T: 1 0 : 31 : 32 : 0.02
+T: 1 0 : 31 : 34 : 0.02
+T: 1 0 : 31 : 3 : 0.01
+T: 1 0 : 31 : 40 : 0.01
+T: 1 0 : 31 : 43 : 0.01
+T: 1 0 : 30 : 60 : 0.06
+T: 1 0 : 30 : 58 : 0.06
+T: 1 0 : 30 : 42 : 0.01
+T: 1 0 : 30 : 39 : 0.02
+T: 1 0 : 30 : 36 : 0.06
+T: 1 0 : 30 : 33 : 0.02
+T: 1 0 : 30 : 31 : 0.02
+T: 1 0 : 30 : 54 : 0.36
+T: 1 0 : 30 : 3 : 0.02
+T: 1 0 : 30 : 0 : 0.06
+T: 1 0 : 30 : 4 : 0.01
+T: 1 0 : 30 : 57 : 0.12
+T: 1 0 : 30 : 40 : 0.01
+T: 1 0 : 30 : 6 : 0.01
+T: 1 0 : 30 : 27 : 0.12
+T: 1 0 : 30 : 30 : 0.04
+T: 1 0 : 29 : 59 : 0.06
+T: 1 0 : 29 : 41 : 0.01
+T: 1 0 : 29 : 55 : 0.06
+T: 1 0 : 29 : 38 : 0.08
+T: 1 0 : 29 : 37 : 0.01
+T: 1 0 : 29 : 2 : 0.08
+T: 1 0 : 29 : 1 : 0.01
+T: 1 0 : 29 : 29 : 0.16
+T: 1 0 : 29 : 56 : 0.48
+T: 1 0 : 29 : 5 : 0.01
+T: 1 0 : 29 : 28 : 0.02
+T: 1 0 : 29 : 32 : 0.02
+T: 1 0 : 28 : 58 : 0.06
+T: 1 0 : 28 : 56 : 0.06
+T: 1 0 : 28 : 40 : 0.01
+T: 1 0 : 28 : 54 : 0.06
+T: 1 0 : 28 : 37 : 0.07
+T: 1 0 : 28 : 31 : 0.02
+T: 1 0 : 28 : 29 : 0.02
+T: 1 0 : 28 : 1 : 0.07
+T: 1 0 : 28 : 0 : 0.01
+T: 1 0 : 28 : 28 : 0.14
+T: 1 0 : 28 : 36 : 0.01
+T: 1 0 : 28 : 2 : 0.01
+T: 1 0 : 28 : 55 : 0.42
+T: 1 0 : 28 : 38 : 0.01
+T: 1 0 : 28 : 4 : 0.01
+T: 1 0 : 28 : 27 : 0.02
+T: 1 0 : 27 : 57 : 0.06
+T: 1 0 : 27 : 55 : 0.06
+T: 1 0 : 27 : 39 : 0.01
+T: 1 0 : 27 : 36 : 0.08
+T: 1 0 : 27 : 1 : 0.01
+T: 1 0 : 27 : 0 : 0.08
+T: 1 0 : 27 : 28 : 0.02
+T: 1 0 : 27 : 54 : 0.48
+T: 1 0 : 27 : 37 : 0.01
+T: 1 0 : 27 : 3 : 0.01
+T: 1 0 : 27 : 27 : 0.16
+T: 1 0 : 27 : 30 : 0.02
+T: 1 0 : 26 : 53 : 0.18
+T: 1 0 : 26 : 52 : 0.06
+T: 1 0 : 26 : 50 : 0.36
+T: 1 0 : 26 : 16 : 0.01
+T: 1 0 : 26 : 23 : 0.18
+T: 1 0 : 26 : 14 : 0.06
+T: 1 0 : 26 : 17 : 0.03
+T: 1 0 : 26 : 25 : 0.03
+T: 1 0 : 26 : 26 : 0.09
+T: 1 0 : 25 : 53 : 0.06
+T: 1 0 : 25 : 52 : 0.12
+T: 1 0 : 25 : 26 : 0.03
+T: 1 0 : 25 : 25 : 0.06
+T: 1 0 : 25 : 49 : 0.36
+T: 1 0 : 25 : 15 : 0.01
+T: 1 0 : 25 : 22 : 0.18
+T: 1 0 : 25 : 13 : 0.06
+T: 1 0 : 25 : 16 : 0.02
+T: 1 0 : 25 : 51 : 0.06
+T: 1 0 : 25 : 17 : 0.01
+T: 1 0 : 25 : 24 : 0.03
+T: 1 0 : 24 : 52 : 0.06
+T: 1 0 : 24 : 51 : 0.18
+T: 1 0 : 24 : 48 : 0.36
+T: 1 0 : 24 : 15 : 0.03
+T: 1 0 : 24 : 12 : 0.06
+T: 1 0 : 24 : 16 : 0.01
+T: 1 0 : 24 : 21 : 0.18
+T: 1 0 : 24 : 24 : 0.09
+T: 1 0 : 24 : 25 : 0.03
+T: 1 0 : 23 : 53 : 0.06
+T: 1 0 : 23 : 50 : 0.12
+T: 1 0 : 23 : 49 : 0.06
+T: 1 0 : 23 : 26 : 0.03
+T: 1 0 : 23 : 23 : 0.06
+T: 1 0 : 23 : 47 : 0.36
+T: 1 0 : 23 : 13 : 0.01
+T: 1 0 : 23 : 20 : 0.18
+T: 1 0 : 23 : 11 : 0.06
+T: 1 0 : 23 : 14 : 0.02
+T: 1 0 : 23 : 17 : 0.01
+T: 1 0 : 23 : 22 : 0.03
+T: 1 0 : 22 : 52 : 0.06
+T: 1 0 : 22 : 49 : 0.06
+T: 1 0 : 22 : 25 : 0.03
+T: 1 0 : 22 : 23 : 0.03
+T: 1 0 : 22 : 22 : 0.03
+T: 1 0 : 22 : 21 : 0.03
+T: 1 0 : 22 : 46 : 0.36
+T: 1 0 : 22 : 12 : 0.01
+T: 1 0 : 22 : 19 : 0.18
+T: 1 0 : 22 : 10 : 0.06
+T: 1 0 : 22 : 13 : 0.01
+T: 1 0 : 22 : 48 : 0.06
+T: 1 0 : 22 : 14 : 0.01
+T: 1 0 : 22 : 50 : 0.06
+T: 1 0 : 22 : 16 : 0.01
+T: 1 0 : 21 : 51 : 0.06
+T: 1 0 : 21 : 48 : 0.12
+T: 1 0 : 21 : 45 : 0.36
+T: 1 0 : 21 : 24 : 0.03
+T: 1 0 : 21 : 22 : 0.03
+T: 1 0 : 21 : 12 : 0.02
+T: 1 0 : 21 : 9 : 0.06
+T: 1 0 : 21 : 13 : 0.01
+T: 1 0 : 21 : 49 : 0.06
+T: 1 0 : 21 : 15 : 0.01
+T: 1 0 : 21 : 18 : 0.18
+T: 1 0 : 21 : 21 : 0.06
+T: 1 0 : 20 : 50 : 0.06
+T: 1 0 : 20 : 47 : 0.48
+T: 1 0 : 20 : 46 : 0.06
+T: 1 0 : 20 : 11 : 0.08
+T: 1 0 : 20 : 10 : 0.01
+T: 1 0 : 20 : 14 : 0.01
+T: 1 0 : 20 : 19 : 0.03
+T: 1 0 : 20 : 20 : 0.24
+T: 1 0 : 20 : 23 : 0.03
+T: 1 0 : 19 : 49 : 0.06
+T: 1 0 : 19 : 46 : 0.42
+T: 1 0 : 19 : 22 : 0.03
+T: 1 0 : 19 : 20 : 0.03
+T: 1 0 : 19 : 10 : 0.07
+T: 1 0 : 19 : 9 : 0.01
+T: 1 0 : 19 : 45 : 0.06
+T: 1 0 : 19 : 11 : 0.01
+T: 1 0 : 19 : 18 : 0.03
+T: 1 0 : 19 : 47 : 0.06
+T: 1 0 : 19 : 13 : 0.01
+T: 1 0 : 19 : 19 : 0.21
+T: 1 0 : 18 : 48 : 0.06
+T: 1 0 : 18 : 45 : 0.48
+T: 1 0 : 18 : 10 : 0.01
+T: 1 0 : 18 : 9 : 0.08
+T: 1 0 : 18 : 46 : 0.06
+T: 1 0 : 18 : 12 : 0.01
+T: 1 0 : 18 : 19 : 0.03
+T: 1 0 : 18 : 18 : 0.24
+T: 1 0 : 18 : 21 : 0.03
+T: 1 0 : 17 : 44 : 0.18
+T: 1 0 : 17 : 43 : 0.06
+T: 1 0 : 17 : 26 : 0.03
+T: 1 0 : 17 : 23 : 0.06
+T: 1 0 : 17 : 41 : 0.36
+T: 1 0 : 17 : 7 : 0.01
+T: 1 0 : 17 : 14 : 0.12
+T: 1 0 : 17 : 5 : 0.06
+T: 1 0 : 17 : 25 : 0.01
+T: 1 0 : 17 : 8 : 0.03
+T: 1 0 : 17 : 16 : 0.02
+T: 1 0 : 17 : 17 : 0.06
+T: 1 0 : 16 : 44 : 0.06
+T: 1 0 : 16 : 43 : 0.12
+T: 1 0 : 16 : 26 : 0.01
+T: 1 0 : 16 : 22 : 0.06
+T: 1 0 : 16 : 17 : 0.02
+T: 1 0 : 16 : 16 : 0.04
+T: 1 0 : 16 : 40 : 0.36
+T: 1 0 : 16 : 6 : 0.01
+T: 1 0 : 16 : 13 : 0.12
+T: 1 0 : 16 : 4 : 0.06
+T: 1 0 : 16 : 24 : 0.01
+T: 1 0 : 16 : 7 : 0.02
+T: 1 0 : 16 : 42 : 0.06
+T: 1 0 : 16 : 25 : 0.02
+T: 1 0 : 16 : 8 : 0.01
+T: 1 0 : 16 : 15 : 0.02
+T: 1 0 : 5 : 35 : 0.06
+T: 1 0 : 5 : 32 : 0.12
+T: 1 0 : 5 : 29 : 0.36
+T: 1 0 : 5 : 17 : 0.01
+T: 1 0 : 5 : 31 : 0.06
+T: 1 0 : 5 : 14 : 0.02
+T: 1 0 : 5 : 4 : 0.03
+T: 1 0 : 5 : 11 : 0.06
+T: 1 0 : 5 : 2 : 0.18
+T: 1 0 : 5 : 5 : 0.06
+T: 1 0 : 5 : 8 : 0.03
+T: 1 0 : 5 : 13 : 0.01
+T: 1 0 : 4 : 34 : 0.06
+T: 1 0 : 4 : 32 : 0.06
+T: 1 0 : 4 : 28 : 0.36
+T: 1 0 : 4 : 16 : 0.01
+T: 1 0 : 4 : 31 : 0.06
+T: 1 0 : 4 : 14 : 0.01
+T: 1 0 : 4 : 30 : 0.06
+T: 1 0 : 4 : 13 : 0.01
+T: 1 0 : 4 : 12 : 0.01
+T: 1 0 : 4 : 3 : 0.03
+T: 1 0 : 4 : 10 : 0.06
+T: 1 0 : 4 : 1 : 0.18
+T: 1 0 : 4 : 4 : 0.03
+T: 1 0 : 4 : 5 : 0.03
+T: 1 0 : 4 : 7 : 0.03
+T: 1 0 : 3 : 33 : 0.06
+T: 1 0 : 3 : 31 : 0.06
+T: 1 0 : 3 : 27 : 0.36
+T: 1 0 : 3 : 15 : 0.01
+T: 1 0 : 3 : 30 : 0.12
+T: 1 0 : 3 : 13 : 0.01
+T: 1 0 : 3 : 3 : 0.06
+T: 1 0 : 3 : 0 : 0.18
+T: 1 0 : 3 : 4 : 0.03
+T: 1 0 : 3 : 6 : 0.03
+T: 1 0 : 3 : 9 : 0.06
+T: 1 0 : 3 : 12 : 0.02
+T: 1 0 : 2 : 32 : 0.06
+T: 1 0 : 2 : 29 : 0.48
+T: 1 0 : 2 : 2 : 0.24
+T: 1 0 : 2 : 1 : 0.03
+T: 1 0 : 2 : 5 : 0.03
+T: 1 0 : 2 : 10 : 0.01
+T: 1 0 : 2 : 28 : 0.06
+T: 1 0 : 2 : 11 : 0.08
+T: 1 0 : 2 : 14 : 0.01
+T: 1 0 : 0 : 30 : 0.06
+T: 1 0 : 0 : 28 : 0.06
+T: 1 0 : 0 : 1 : 0.03
+T: 1 0 : 0 : 0 : 0.24
+T: 1 0 : 0 : 3 : 0.03
+T: 1 0 : 0 : 27 : 0.48
+T: 1 0 : 0 : 10 : 0.01
+T: 1 0 : 0 : 9 : 0.08
+T: 1 0 : 0 : 12 : 0.01
+T: 1 0 : 1 : 31 : 0.06
+T: 1 0 : 1 : 29 : 0.06
+T: 1 0 : 1 : 13 : 0.01
+T: 1 0 : 1 : 28 : 0.42
+T: 1 0 : 1 : 11 : 0.01
+T: 1 0 : 1 : 1 : 0.21
+T: 1 0 : 1 : 0 : 0.03
+T: 1 0 : 1 : 2 : 0.03
+T: 1 0 : 1 : 9 : 0.01
+T: 1 0 : 1 : 4 : 0.03
+T: 1 0 : 1 : 27 : 0.06
+T: 1 0 : 1 : 10 : 0.07
+T: 1 0 : 6 : 34 : 0.06
+T: 1 0 : 6 : 30 : 0.36
+T: 1 0 : 6 : 6 : 0.09
+T: 1 0 : 6 : 3 : 0.18
+T: 1 0 : 6 : 7 : 0.03
+T: 1 0 : 6 : 12 : 0.06
+T: 1 0 : 6 : 15 : 0.03
+T: 1 0 : 6 : 33 : 0.18
+T: 1 0 : 6 : 16 : 0.01
+T: 1 0 : 7 : 35 : 0.06
+T: 1 0 : 7 : 31 : 0.36
+T: 1 0 : 7 : 34 : 0.12
+T: 1 0 : 7 : 17 : 0.01
+T: 1 0 : 7 : 33 : 0.06
+T: 1 0 : 7 : 16 : 0.02
+T: 1 0 : 7 : 6 : 0.03
+T: 1 0 : 7 : 13 : 0.06
+T: 1 0 : 7 : 4 : 0.18
+T: 1 0 : 7 : 7 : 0.06
+T: 1 0 : 7 : 8 : 0.03
+T: 1 0 : 7 : 15 : 0.01
+T: 1 0 : 8 : 35 : 0.18
+T: 1 0 : 8 : 32 : 0.36
+T: 1 0 : 8 : 7 : 0.03
+T: 1 0 : 8 : 14 : 0.06
+T: 1 0 : 8 : 5 : 0.18
+T: 1 0 : 8 : 8 : 0.09
+T: 1 0 : 8 : 16 : 0.01
+T: 1 0 : 8 : 34 : 0.06
+T: 1 0 : 8 : 17 : 0.03
+T: 1 0 : 9 : 39 : 0.06
+T: 1 0 : 9 : 21 : 0.01
+T: 1 0 : 9 : 36 : 0.48
+T: 1 0 : 9 : 19 : 0.01
+T: 1 0 : 9 : 18 : 0.08
+T: 1 0 : 9 : 1 : 0.01
+T: 1 0 : 9 : 0 : 0.08
+T: 1 0 : 9 : 37 : 0.06
+T: 1 0 : 9 : 3 : 0.01
+T: 1 0 : 9 : 10 : 0.02
+T: 1 0 : 9 : 9 : 0.16
+T: 1 0 : 9 : 12 : 0.02
+T: 1 0 : 10 : 40 : 0.06
+T: 1 0 : 10 : 22 : 0.01
+T: 1 0 : 10 : 37 : 0.42
+T: 1 0 : 10 : 20 : 0.01
+T: 1 0 : 10 : 13 : 0.02
+T: 1 0 : 10 : 11 : 0.02
+T: 1 0 : 10 : 18 : 0.01
+T: 1 0 : 10 : 1 : 0.07
+T: 1 0 : 10 : 0 : 0.01
+T: 1 0 : 10 : 36 : 0.06
+T: 1 0 : 10 : 19 : 0.07
+T: 1 0 : 10 : 2 : 0.01
+T: 1 0 : 10 : 9 : 0.02
+T: 1 0 : 10 : 38 : 0.06
+T: 1 0 : 10 : 4 : 0.01
+T: 1 0 : 10 : 10 : 0.14
+T: 1 0 : 11 : 41 : 0.06
+T: 1 0 : 11 : 38 : 0.48
+T: 1 0 : 11 : 23 : 0.01
+T: 1 0 : 11 : 37 : 0.06
+T: 1 0 : 11 : 20 : 0.08
+T: 1 0 : 11 : 19 : 0.01
+T: 1 0 : 11 : 2 : 0.08
+T: 1 0 : 11 : 1 : 0.01
+T: 1 0 : 11 : 5 : 0.01
+T: 1 0 : 11 : 10 : 0.02
+T: 1 0 : 11 : 11 : 0.16
+T: 1 0 : 11 : 14 : 0.02
+T: 1 0 : 12 : 42 : 0.06
+T: 1 0 : 12 : 36 : 0.36
+T: 1 0 : 12 : 24 : 0.01
+T: 1 0 : 12 : 39 : 0.12
+T: 1 0 : 12 : 22 : 0.01
+T: 1 0 : 12 : 18 : 0.06
+T: 1 0 : 12 : 15 : 0.02
+T: 1 0 : 12 : 13 : 0.02
+T: 1 0 : 12 : 3 : 0.02
+T: 1 0 : 12 : 0 : 0.06
+T: 1 0 : 12 : 21 : 0.02
+T: 1 0 : 12 : 4 : 0.01
+T: 1 0 : 12 : 40 : 0.06
+T: 1 0 : 12 : 6 : 0.01
+T: 1 0 : 12 : 9 : 0.12
+T: 1 0 : 12 : 12 : 0.04
+T: 1 0 : 13 : 43 : 0.06
+T: 1 0 : 13 : 39 : 0.06
+T: 1 0 : 13 : 7 : 0.01
+T: 1 0 : 13 : 5 : 0.01
+T: 1 0 : 13 : 22 : 0.01
+T: 1 0 : 13 : 41 : 0.06
+T: 1 0 : 13 : 4 : 0.01
+T: 1 0 : 13 : 21 : 0.01
+T: 1 0 : 13 : 1 : 0.06
+T: 1 0 : 13 : 10 : 0.12
+T: 1 0 : 13 : 40 : 0.06
+T: 1 0 : 13 : 3 : 0.01
+T: 1 0 : 13 : 37 : 0.36
+T: 1 0 : 13 : 12 : 0.02
+T: 1 0 : 13 : 13 : 0.02
+T: 1 0 : 13 : 14 : 0.02
+T: 1 0 : 13 : 16 : 0.02
+T: 1 0 : 13 : 19 : 0.06
+T: 1 0 : 13 : 23 : 0.01
+T: 1 0 : 13 : 25 : 0.01
+T: 1 0 : 14 : 44 : 0.06
+T: 1 0 : 14 : 41 : 0.12
+T: 1 0 : 14 : 26 : 0.01
+T: 1 0 : 14 : 40 : 0.06
+T: 1 0 : 14 : 23 : 0.02
+T: 1 0 : 14 : 20 : 0.06
+T: 1 0 : 14 : 17 : 0.02
+T: 1 0 : 14 : 14 : 0.04
+T: 1 0 : 14 : 38 : 0.36
+T: 1 0 : 14 : 4 : 0.01
+T: 1 0 : 14 : 11 : 0.12
+T: 1 0 : 14 : 2 : 0.06
+T: 1 0 : 14 : 22 : 0.01
+T: 1 0 : 14 : 5 : 0.02
+T: 1 0 : 14 : 8 : 0.01
+T: 1 0 : 14 : 13 : 0.02
+T: 1 0 : 15 : 43 : 0.06
+T: 1 0 : 15 : 39 : 0.36
+T: 1 0 : 15 : 42 : 0.18
+T: 1 0 : 15 : 25 : 0.01
+T: 1 0 : 15 : 21 : 0.06
+T: 1 0 : 15 : 6 : 0.03
+T: 1 0 : 15 : 3 : 0.06
+T: 1 0 : 15 : 24 : 0.03
+T: 1 0 : 15 : 7 : 0.01
+T: 1 0 : 15 : 12 : 0.12
+T: 1 0 : 15 : 15 : 0.06
+T: 1 0 : 15 : 16 : 0.02
+T: 1 0 : 36 : 66 : 0.06
+T: 1 0 : 36 : 48 : 0.01
+T: 1 0 : 36 : 39 : 0.01
+T: 1 0 : 36 : 37 : 0.01
+T: 1 0 : 36 : 36 : 0.08
+T: 1 0 : 36 : 9 : 0.08
+T: 1 0 : 36 : 64 : 0.06
+T: 1 0 : 36 : 30 : 0.01
+T: 1 0 : 36 : 63 : 0.48
+T: 1 0 : 36 : 46 : 0.01
+T: 1 0 : 36 : 12 : 0.01
+T: 1 0 : 36 : 10 : 0.01
+T: 1 0 : 36 : 27 : 0.08
+T: 1 0 : 36 : 45 : 0.08
+T: 1 0 : 36 : 28 : 0.01
+T: 1 0 : 37 : 67 : 0.06
+T: 1 0 : 37 : 63 : 0.06
+T: 1 0 : 37 : 65 : 0.06
+T: 1 0 : 37 : 28 : 0.07
+T: 1 0 : 37 : 11 : 0.01
+T: 1 0 : 37 : 45 : 0.01
+T: 1 0 : 37 : 64 : 0.42
+T: 1 0 : 37 : 27 : 0.01
+T: 1 0 : 37 : 13 : 0.01
+T: 1 0 : 37 : 10 : 0.07
+T: 1 0 : 37 : 47 : 0.01
+T: 1 0 : 37 : 29 : 0.01
+T: 1 0 : 37 : 9 : 0.01
+T: 1 0 : 37 : 46 : 0.07
+T: 1 0 : 37 : 31 : 0.01
+T: 1 0 : 37 : 36 : 0.01
+T: 1 0 : 37 : 37 : 0.07
+T: 1 0 : 37 : 38 : 0.01
+T: 1 0 : 37 : 40 : 0.01
+T: 1 0 : 37 : 49 : 0.01
+T: 1 0 : 38 : 68 : 0.06
+T: 1 0 : 38 : 50 : 0.01
+T: 1 0 : 38 : 64 : 0.06
+T: 1 0 : 38 : 47 : 0.08
+T: 1 0 : 38 : 41 : 0.01
+T: 1 0 : 38 : 38 : 0.08
+T: 1 0 : 38 : 37 : 0.01
+T: 1 0 : 38 : 32 : 0.01
+T: 1 0 : 38 : 10 : 0.01
+T: 1 0 : 38 : 65 : 0.48
+T: 1 0 : 38 : 14 : 0.01
+T: 1 0 : 38 : 11 : 0.08
+T: 1 0 : 38 : 28 : 0.01
+T: 1 0 : 38 : 46 : 0.01
+T: 1 0 : 38 : 29 : 0.08
+T: 1 0 : 39 : 69 : 0.06
+T: 1 0 : 39 : 66 : 0.12
+T: 1 0 : 39 : 63 : 0.36
+T: 1 0 : 39 : 15 : 0.01
+T: 1 0 : 39 : 27 : 0.06
+T: 1 0 : 39 : 13 : 0.01
+T: 1 0 : 39 : 67 : 0.06
+T: 1 0 : 39 : 30 : 0.02
+T: 1 0 : 39 : 9 : 0.06
+T: 1 0 : 39 : 49 : 0.01
+T: 1 0 : 39 : 12 : 0.02
+T: 1 0 : 39 : 31 : 0.01
+T: 1 0 : 39 : 48 : 0.02
+T: 1 0 : 39 : 33 : 0.01
+T: 1 0 : 39 : 36 : 0.06
+T: 1 0 : 39 : 39 : 0.02
+T: 1 0 : 39 : 40 : 0.01
+T: 1 0 : 39 : 42 : 0.01
+T: 1 0 : 39 : 45 : 0.06
+T: 1 0 : 39 : 51 : 0.01
+T: 1 0 : 40 : 70 : 0.06
+T: 1 0 : 40 : 66 : 0.06
+T: 1 0 : 40 : 64 : 0.36
+T: 1 0 : 40 : 52 : 0.01
+T: 1 0 : 40 : 48 : 0.01
+T: 1 0 : 40 : 16 : 0.01
+T: 1 0 : 40 : 28 : 0.06
+T: 1 0 : 40 : 14 : 0.01
+T: 1 0 : 40 : 68 : 0.06
+T: 1 0 : 40 : 31 : 0.01
+T: 1 0 : 40 : 50 : 0.01
+T: 1 0 : 40 : 13 : 0.01
+T: 1 0 : 40 : 67 : 0.06
+T: 1 0 : 40 : 30 : 0.01
+T: 1 0 : 40 : 10 : 0.06
+T: 1 0 : 40 : 49 : 0.01
+T: 1 0 : 40 : 12 : 0.01
+T: 1 0 : 40 : 46 : 0.06
+T: 1 0 : 40 : 32 : 0.01
+T: 1 0 : 40 : 34 : 0.01
+T: 1 0 : 40 : 37 : 0.06
+T: 1 0 : 40 : 39 : 0.01
+T: 1 0 : 40 : 40 : 0.01
+T: 1 0 : 40 : 41 : 0.01
+T: 1 0 : 40 : 43 : 0.01
+T: 1 0 : 41 : 71 : 0.06
+T: 1 0 : 41 : 67 : 0.06
+T: 1 0 : 41 : 65 : 0.36
+T: 1 0 : 41 : 29 : 0.06
+T: 1 0 : 41 : 68 : 0.12
+T: 1 0 : 41 : 31 : 0.01
+T: 1 0 : 41 : 14 : 0.02
+T: 1 0 : 41 : 17 : 0.01
+T: 1 0 : 41 : 11 : 0.06
+T: 1 0 : 41 : 47 : 0.06
+T: 1 0 : 41 : 32 : 0.02
+T: 1 0 : 41 : 49 : 0.01
+T: 1 0 : 41 : 35 : 0.01
+T: 1 0 : 41 : 38 : 0.06
+T: 1 0 : 41 : 40 : 0.01
+T: 1 0 : 41 : 41 : 0.02
+T: 1 0 : 41 : 44 : 0.01
+T: 1 0 : 41 : 13 : 0.01
+T: 1 0 : 41 : 50 : 0.02
+T: 1 0 : 41 : 53 : 0.01
+T: 1 0 : 42 : 70 : 0.06
+T: 1 0 : 42 : 69 : 0.18
+T: 1 0 : 42 : 52 : 0.01
+T: 1 0 : 42 : 48 : 0.06
+T: 1 0 : 42 : 43 : 0.01
+T: 1 0 : 42 : 42 : 0.03
+T: 1 0 : 42 : 39 : 0.06
+T: 1 0 : 42 : 66 : 0.36
+T: 1 0 : 42 : 15 : 0.03
+T: 1 0 : 42 : 12 : 0.06
+T: 1 0 : 42 : 33 : 0.03
+T: 1 0 : 42 : 16 : 0.01
+T: 1 0 : 42 : 30 : 0.06
+T: 1 0 : 42 : 51 : 0.03
+T: 1 0 : 42 : 34 : 0.01
+T: 1 0 : 43 : 69 : 0.06
+T: 1 0 : 43 : 67 : 0.36
+T: 1 0 : 43 : 70 : 0.12
+T: 1 0 : 43 : 33 : 0.01
+T: 1 0 : 43 : 31 : 0.06
+T: 1 0 : 43 : 17 : 0.01
+T: 1 0 : 43 : 71 : 0.06
+T: 1 0 : 43 : 34 : 0.02
+T: 1 0 : 43 : 51 : 0.01
+T: 1 0 : 43 : 13 : 0.06
+T: 1 0 : 43 : 49 : 0.06
+T: 1 0 : 43 : 35 : 0.01
+T: 1 0 : 43 : 15 : 0.01
+T: 1 0 : 43 : 52 : 0.02
+T: 1 0 : 43 : 40 : 0.06
+T: 1 0 : 43 : 42 : 0.01
+T: 1 0 : 43 : 43 : 0.02
+T: 1 0 : 43 : 44 : 0.01
+T: 1 0 : 43 : 16 : 0.02
+T: 1 0 : 43 : 53 : 0.01
+T: 1 0 : 44 : 71 : 0.18
+T: 1 0 : 44 : 70 : 0.06
+T: 1 0 : 44 : 53 : 0.03
+T: 1 0 : 44 : 44 : 0.03
+T: 1 0 : 44 : 43 : 0.01
+T: 1 0 : 44 : 41 : 0.06
+T: 1 0 : 44 : 50 : 0.06
+T: 1 0 : 44 : 16 : 0.01
+T: 1 0 : 44 : 14 : 0.06
+T: 1 0 : 44 : 52 : 0.01
+T: 1 0 : 44 : 35 : 0.03
+T: 1 0 : 44 : 32 : 0.06
+T: 1 0 : 44 : 68 : 0.36
+T: 1 0 : 44 : 17 : 0.03
+T: 1 0 : 44 : 34 : 0.01
+T: 1 0 : 45 : 75 : 0.06
+T: 1 0 : 45 : 48 : 0.02
+T: 1 0 : 45 : 46 : 0.02
+T: 1 0 : 45 : 45 : 0.16
+T: 1 0 : 45 : 18 : 0.08
+T: 1 0 : 45 : 73 : 0.06
+T: 1 0 : 45 : 39 : 0.01
+T: 1 0 : 45 : 72 : 0.48
+T: 1 0 : 45 : 21 : 0.01
+T: 1 0 : 45 : 19 : 0.01
+T: 1 0 : 45 : 36 : 0.08
+T: 1 0 : 45 : 37 : 0.01
+T: 1 0 : 46 : 76 : 0.06
+T: 1 0 : 46 : 49 : 0.02
+T: 1 0 : 46 : 47 : 0.02
+T: 1 0 : 46 : 46 : 0.14
+T: 1 0 : 46 : 45 : 0.02
+T: 1 0 : 46 : 74 : 0.06
+T: 1 0 : 46 : 40 : 0.01
+T: 1 0 : 46 : 72 : 0.06
+T: 1 0 : 46 : 38 : 0.01
+T: 1 0 : 46 : 18 : 0.01
+T: 1 0 : 46 : 73 : 0.42
+T: 1 0 : 46 : 22 : 0.01
+T: 1 0 : 46 : 19 : 0.07
+T: 1 0 : 46 : 36 : 0.01
+T: 1 0 : 46 : 20 : 0.01
+T: 1 0 : 46 : 37 : 0.07
+T: 1 0 : 47 : 77 : 0.06
+T: 1 0 : 47 : 73 : 0.06
+T: 1 0 : 47 : 50 : 0.02
+T: 1 0 : 47 : 47 : 0.16
+T: 1 0 : 47 : 46 : 0.02
+T: 1 0 : 47 : 41 : 0.01
+T: 1 0 : 47 : 19 : 0.01
+T: 1 0 : 47 : 74 : 0.48
+T: 1 0 : 47 : 23 : 0.01
+T: 1 0 : 47 : 20 : 0.08
+T: 1 0 : 47 : 37 : 0.01
+T: 1 0 : 47 : 38 : 0.08
+T: 1 0 : 48 : 78 : 0.06
+T: 1 0 : 48 : 51 : 0.02
+T: 1 0 : 48 : 49 : 0.02
+T: 1 0 : 48 : 48 : 0.04
+T: 1 0 : 48 : 45 : 0.12
+T: 1 0 : 48 : 76 : 0.06
+T: 1 0 : 48 : 42 : 0.01
+T: 1 0 : 48 : 40 : 0.01
+T: 1 0 : 48 : 72 : 0.36
+T: 1 0 : 48 : 21 : 0.02
+T: 1 0 : 48 : 18 : 0.06
+T: 1 0 : 48 : 39 : 0.02
+T: 1 0 : 48 : 22 : 0.01
+T: 1 0 : 48 : 36 : 0.06
+T: 1 0 : 48 : 75 : 0.12
+T: 1 0 : 48 : 24 : 0.01
+T: 1 0 : 49 : 79 : 0.06
+T: 1 0 : 49 : 75 : 0.06
+T: 1 0 : 49 : 25 : 0.01
+T: 1 0 : 49 : 37 : 0.06
+T: 1 0 : 49 : 23 : 0.01
+T: 1 0 : 49 : 77 : 0.06
+T: 1 0 : 49 : 40 : 0.01
+T: 1 0 : 49 : 22 : 0.01
+T: 1 0 : 49 : 76 : 0.06
+T: 1 0 : 49 : 39 : 0.01
+T: 1 0 : 49 : 73 : 0.36
+T: 1 0 : 49 : 19 : 0.06
+T: 1 0 : 49 : 21 : 0.01
+T: 1 0 : 49 : 41 : 0.01
+T: 1 0 : 49 : 43 : 0.01
+T: 1 0 : 49 : 46 : 0.12
+T: 1 0 : 49 : 48 : 0.02
+T: 1 0 : 49 : 49 : 0.02
+T: 1 0 : 49 : 50 : 0.02
+T: 1 0 : 49 : 52 : 0.02
+T: 1 0 : 50 : 80 : 0.06
+T: 1 0 : 50 : 76 : 0.06
+T: 1 0 : 50 : 53 : 0.02
+T: 1 0 : 50 : 50 : 0.04
+T: 1 0 : 50 : 49 : 0.02
+T: 1 0 : 50 : 47 : 0.12
+T: 1 0 : 50 : 44 : 0.01
+T: 1 0 : 50 : 41 : 0.02
+T: 1 0 : 50 : 22 : 0.01
+T: 1 0 : 50 : 20 : 0.06
+T: 1 0 : 50 : 77 : 0.12
+T: 1 0 : 50 : 26 : 0.01
+T: 1 0 : 50 : 74 : 0.36
+T: 1 0 : 50 : 23 : 0.02
+T: 1 0 : 50 : 40 : 0.01
+T: 1 0 : 50 : 38 : 0.06
+T: 1 0 : 51 : 79 : 0.06
+T: 1 0 : 51 : 78 : 0.18
+T: 1 0 : 51 : 52 : 0.02
+T: 1 0 : 51 : 51 : 0.06
+T: 1 0 : 51 : 48 : 0.12
+T: 1 0 : 51 : 75 : 0.36
+T: 1 0 : 51 : 24 : 0.03
+T: 1 0 : 51 : 21 : 0.06
+T: 1 0 : 51 : 42 : 0.03
+T: 1 0 : 51 : 25 : 0.01
+T: 1 0 : 51 : 39 : 0.06
+T: 1 0 : 51 : 43 : 0.01
+T: 1 0 : 52 : 80 : 0.06
+T: 1 0 : 52 : 79 : 0.12
+T: 1 0 : 52 : 53 : 0.02
+T: 1 0 : 52 : 52 : 0.04
+T: 1 0 : 52 : 51 : 0.02
+T: 1 0 : 52 : 49 : 0.12
+T: 1 0 : 52 : 78 : 0.06
+T: 1 0 : 52 : 44 : 0.01
+T: 1 0 : 52 : 24 : 0.01
+T: 1 0 : 52 : 22 : 0.06
+T: 1 0 : 52 : 43 : 0.02
+T: 1 0 : 52 : 26 : 0.01
+T: 1 0 : 52 : 40 : 0.06
+T: 1 0 : 52 : 76 : 0.36
+T: 1 0 : 52 : 25 : 0.02
+T: 1 0 : 52 : 42 : 0.01
+T: 1 0 : 53 : 80 : 0.18
+T: 1 0 : 53 : 79 : 0.06
+T: 1 0 : 53 : 53 : 0.06
+T: 1 0 : 53 : 52 : 0.02
+T: 1 0 : 53 : 50 : 0.12
+T: 1 0 : 53 : 25 : 0.01
+T: 1 0 : 53 : 23 : 0.06
+T: 1 0 : 53 : 44 : 0.03
+T: 1 0 : 53 : 41 : 0.06
+T: 1 0 : 53 : 77 : 0.36
+T: 1 0 : 53 : 26 : 0.03
+T: 1 0 : 53 : 43 : 0.01
+T: 1 0 : 54 : 66 : 0.01
+T: 1 0 : 54 : 63 : 0.08
+T: 1 0 : 54 : 28 : 0.01
+T: 1 0 : 54 : 27 : 0.08
+T: 1 0 : 54 : 55 : 0.08
+T: 1 0 : 54 : 64 : 0.01
+T: 1 0 : 54 : 30 : 0.01
+T: 1 0 : 54 : 54 : 0.64
+T: 1 0 : 54 : 57 : 0.08
+T: 1 0 : 55 : 67 : 0.01
+T: 1 0 : 55 : 64 : 0.07
+T: 1 0 : 55 : 58 : 0.08
+T: 1 0 : 55 : 56 : 0.08
+T: 1 0 : 55 : 28 : 0.07
+T: 1 0 : 55 : 27 : 0.01
+T: 1 0 : 55 : 55 : 0.56
+T: 1 0 : 55 : 63 : 0.01
+T: 1 0 : 55 : 29 : 0.01
+T: 1 0 : 55 : 65 : 0.01
+T: 1 0 : 55 : 31 : 0.01
+T: 1 0 : 55 : 54 : 0.08
+T: 1 0 : 56 : 68 : 0.01
+T: 1 0 : 56 : 65 : 0.08
+T: 1 0 : 56 : 64 : 0.01
+T: 1 0 : 56 : 29 : 0.08
+T: 1 0 : 56 : 28 : 0.01
+T: 1 0 : 56 : 56 : 0.64
+T: 1 0 : 56 : 32 : 0.01
+T: 1 0 : 56 : 55 : 0.08
+T: 1 0 : 56 : 59 : 0.08
+T: 1 0 : 57 : 69 : 0.01
+T: 1 0 : 57 : 66 : 0.02
+T: 1 0 : 57 : 63 : 0.06
+T: 1 0 : 57 : 60 : 0.08
+T: 1 0 : 57 : 58 : 0.08
+T: 1 0 : 57 : 30 : 0.02
+T: 1 0 : 57 : 27 : 0.06
+T: 1 0 : 57 : 31 : 0.01
+T: 1 0 : 57 : 67 : 0.01
+T: 1 0 : 57 : 33 : 0.01
+T: 1 0 : 57 : 54 : 0.48
+T: 1 0 : 57 : 57 : 0.16
+T: 1 0 : 58 : 70 : 0.01
+T: 1 0 : 58 : 67 : 0.01
+T: 1 0 : 58 : 61 : 0.08
+T: 1 0 : 58 : 59 : 0.08
+T: 1 0 : 58 : 58 : 0.08
+T: 1 0 : 58 : 57 : 0.08
+T: 1 0 : 58 : 64 : 0.06
+T: 1 0 : 58 : 30 : 0.01
+T: 1 0 : 58 : 28 : 0.06
+T: 1 0 : 58 : 31 : 0.01
+T: 1 0 : 58 : 66 : 0.01
+T: 1 0 : 58 : 32 : 0.01
+T: 1 0 : 58 : 68 : 0.01
+T: 1 0 : 58 : 34 : 0.01
+T: 1 0 : 58 : 55 : 0.48
+T: 1 0 : 59 : 71 : 0.01
+T: 1 0 : 59 : 68 : 0.02
+T: 1 0 : 59 : 67 : 0.01
+T: 1 0 : 59 : 62 : 0.08
+T: 1 0 : 59 : 59 : 0.16
+T: 1 0 : 59 : 65 : 0.06
+T: 1 0 : 59 : 31 : 0.01
+T: 1 0 : 59 : 29 : 0.06
+T: 1 0 : 59 : 32 : 0.02
+T: 1 0 : 59 : 35 : 0.01
+T: 1 0 : 59 : 56 : 0.48
+T: 1 0 : 59 : 58 : 0.08
+T: 1 0 : 60 : 70 : 0.01
+T: 1 0 : 60 : 69 : 0.03
+T: 1 0 : 60 : 66 : 0.06
+T: 1 0 : 60 : 33 : 0.03
+T: 1 0 : 60 : 61 : 0.08
+T: 1 0 : 60 : 30 : 0.06
+T: 1 0 : 60 : 34 : 0.01
+T: 1 0 : 60 : 57 : 0.48
+T: 1 0 : 60 : 60 : 0.24
+T: 1 0 : 61 : 71 : 0.01
+T: 1 0 : 61 : 70 : 0.02
+T: 1 0 : 61 : 62 : 0.08
+T: 1 0 : 61 : 61 : 0.16
+T: 1 0 : 61 : 67 : 0.06
+T: 1 0 : 61 : 33 : 0.01
+T: 1 0 : 61 : 31 : 0.06
+T: 1 0 : 61 : 34 : 0.02
+T: 1 0 : 61 : 69 : 0.01
+T: 1 0 : 61 : 35 : 0.01
+T: 1 0 : 61 : 58 : 0.48
+T: 1 0 : 61 : 60 : 0.08
+T: 1 0 : 62 : 71 : 0.03
+T: 1 0 : 62 : 70 : 0.01
+T: 1 0 : 62 : 68 : 0.06
+T: 1 0 : 62 : 34 : 0.01
+T: 1 0 : 62 : 62 : 0.24
+T: 1 0 : 62 : 32 : 0.06
+T: 1 0 : 62 : 35 : 0.03
+T: 1 0 : 62 : 59 : 0.48
+T: 1 0 : 62 : 61 : 0.08
+T: 1 0 : 63 : 75 : 0.01
+T: 1 0 : 63 : 66 : 0.07
+T: 1 0 : 63 : 64 : 0.07
+T: 1 0 : 63 : 63 : 0.56
+T: 1 0 : 63 : 36 : 0.08
+T: 1 0 : 63 : 57 : 0.01
+T: 1 0 : 63 : 73 : 0.01
+T: 1 0 : 63 : 39 : 0.01
+T: 1 0 : 63 : 37 : 0.01
+T: 1 0 : 63 : 54 : 0.08
+T: 1 0 : 63 : 72 : 0.08
+T: 1 0 : 63 : 55 : 0.01
+T: 1 0 : 64 : 76 : 0.01
+T: 1 0 : 64 : 67 : 0.07
+T: 1 0 : 64 : 65 : 0.07
+T: 1 0 : 64 : 64 : 0.49
+T: 1 0 : 64 : 63 : 0.07
+T: 1 0 : 64 : 58 : 0.01
+T: 1 0 : 64 : 73 : 0.07
+T: 1 0 : 64 : 56 : 0.01
+T: 1 0 : 64 : 36 : 0.01
+T: 1 0 : 64 : 74 : 0.01
+T: 1 0 : 64 : 40 : 0.01
+T: 1 0 : 64 : 37 : 0.07
+T: 1 0 : 64 : 54 : 0.01
+T: 1 0 : 64 : 72 : 0.01
+T: 1 0 : 64 : 38 : 0.01
+T: 1 0 : 64 : 55 : 0.07
+T: 1 0 : 65 : 77 : 0.01
+T: 1 0 : 65 : 74 : 0.08
+T: 1 0 : 65 : 68 : 0.07
+T: 1 0 : 65 : 65 : 0.56
+T: 1 0 : 65 : 64 : 0.07
+T: 1 0 : 65 : 59 : 0.01
+T: 1 0 : 65 : 37 : 0.01
+T: 1 0 : 65 : 41 : 0.01
+T: 1 0 : 65 : 38 : 0.08
+T: 1 0 : 65 : 55 : 0.01
+T: 1 0 : 65 : 73 : 0.01
+T: 1 0 : 65 : 56 : 0.08
+T: 1 0 : 66 : 78 : 0.01
+T: 1 0 : 66 : 72 : 0.06
+T: 1 0 : 66 : 69 : 0.07
+T: 1 0 : 66 : 67 : 0.07
+T: 1 0 : 66 : 66 : 0.14
+T: 1 0 : 66 : 63 : 0.42
+T: 1 0 : 66 : 60 : 0.01
+T: 1 0 : 66 : 75 : 0.02
+T: 1 0 : 66 : 58 : 0.01
+T: 1 0 : 66 : 39 : 0.02
+T: 1 0 : 66 : 36 : 0.06
+T: 1 0 : 66 : 57 : 0.02
+T: 1 0 : 66 : 40 : 0.01
+T: 1 0 : 66 : 54 : 0.06
+T: 1 0 : 66 : 76 : 0.01
+T: 1 0 : 66 : 42 : 0.01
+T: 1 0 : 67 : 79 : 0.01
+T: 1 0 : 67 : 75 : 0.01
+T: 1 0 : 67 : 43 : 0.01
+T: 1 0 : 67 : 55 : 0.06
+T: 1 0 : 67 : 41 : 0.01
+T: 1 0 : 67 : 58 : 0.01
+T: 1 0 : 67 : 77 : 0.01
+T: 1 0 : 67 : 40 : 0.01
+T: 1 0 : 67 : 57 : 0.01
+T: 1 0 : 67 : 37 : 0.06
+T: 1 0 : 67 : 76 : 0.01
+T: 1 0 : 67 : 39 : 0.01
+T: 1 0 : 67 : 73 : 0.06
+T: 1 0 : 67 : 59 : 0.01
+T: 1 0 : 67 : 61 : 0.01
+T: 1 0 : 67 : 64 : 0.42
+T: 1 0 : 67 : 66 : 0.07
+T: 1 0 : 67 : 67 : 0.07
+T: 1 0 : 67 : 68 : 0.07
+T: 1 0 : 67 : 70 : 0.07
+T: 1 0 : 68 : 80 : 0.01
+T: 1 0 : 68 : 77 : 0.02
+T: 1 0 : 68 : 71 : 0.07
+T: 1 0 : 68 : 68 : 0.14
+T: 1 0 : 68 : 67 : 0.07
+T: 1 0 : 68 : 65 : 0.42
+T: 1 0 : 68 : 62 : 0.01
+T: 1 0 : 68 : 76 : 0.01
+T: 1 0 : 68 : 59 : 0.02
+T: 1 0 : 68 : 74 : 0.06
+T: 1 0 : 68 : 40 : 0.01
+T: 1 0 : 68 : 38 : 0.06
+T: 1 0 : 68 : 44 : 0.01
+T: 1 0 : 68 : 41 : 0.02
+T: 1 0 : 68 : 58 : 0.01
+T: 1 0 : 68 : 56 : 0.06
+T: 1 0 : 69 : 79 : 0.01
+T: 1 0 : 69 : 75 : 0.06
+T: 1 0 : 69 : 70 : 0.07
+T: 1 0 : 69 : 69 : 0.21
+T: 1 0 : 69 : 66 : 0.42
+T: 1 0 : 69 : 42 : 0.03
+T: 1 0 : 69 : 39 : 0.06
+T: 1 0 : 69 : 60 : 0.03
+T: 1 0 : 69 : 43 : 0.01
+T: 1 0 : 69 : 57 : 0.06
+T: 1 0 : 69 : 78 : 0.03
+T: 1 0 : 69 : 61 : 0.01
+T: 1 0 : 70 : 80 : 0.01
+T: 1 0 : 70 : 71 : 0.07
+T: 1 0 : 70 : 70 : 0.14
+T: 1 0 : 70 : 69 : 0.07
+T: 1 0 : 70 : 67 : 0.42
+T: 1 0 : 70 : 79 : 0.02
+T: 1 0 : 70 : 62 : 0.01
+T: 1 0 : 70 : 76 : 0.06
+T: 1 0 : 70 : 42 : 0.01
+T: 1 0 : 70 : 40 : 0.06
+T: 1 0 : 70 : 78 : 0.01
+T: 1 0 : 70 : 61 : 0.02
+T: 1 0 : 70 : 44 : 0.01
+T: 1 0 : 70 : 58 : 0.06
+T: 1 0 : 70 : 43 : 0.02
+T: 1 0 : 70 : 60 : 0.01
+T: 1 0 : 71 : 80 : 0.03
+T: 1 0 : 71 : 71 : 0.21
+T: 1 0 : 71 : 70 : 0.07
+T: 1 0 : 71 : 68 : 0.42
+T: 1 0 : 71 : 77 : 0.06
+T: 1 0 : 71 : 43 : 0.01
+T: 1 0 : 71 : 41 : 0.06
+T: 1 0 : 71 : 79 : 0.01
+T: 1 0 : 71 : 62 : 0.03
+T: 1 0 : 71 : 59 : 0.06
+T: 1 0 : 71 : 44 : 0.03
+T: 1 0 : 71 : 61 : 0.01
+T: 1 0 : 72 : 75 : 0.08
+T: 1 0 : 72 : 73 : 0.08
+T: 1 0 : 72 : 72 : 0.64
+T: 1 0 : 72 : 45 : 0.08
+T: 1 0 : 72 : 66 : 0.01
+T: 1 0 : 72 : 48 : 0.01
+T: 1 0 : 72 : 46 : 0.01
+T: 1 0 : 72 : 63 : 0.08
+T: 1 0 : 72 : 64 : 0.01
+T: 1 0 : 73 : 76 : 0.08
+T: 1 0 : 73 : 74 : 0.08
+T: 1 0 : 73 : 73 : 0.56
+T: 1 0 : 73 : 72 : 0.08
+T: 1 0 : 73 : 67 : 0.01
+T: 1 0 : 73 : 65 : 0.01
+T: 1 0 : 73 : 45 : 0.01
+T: 1 0 : 73 : 49 : 0.01
+T: 1 0 : 73 : 46 : 0.07
+T: 1 0 : 73 : 63 : 0.01
+T: 1 0 : 73 : 47 : 0.01
+T: 1 0 : 73 : 64 : 0.07
+T: 1 0 : 74 : 77 : 0.08
+T: 1 0 : 74 : 74 : 0.64
+T: 1 0 : 74 : 73 : 0.08
+T: 1 0 : 74 : 68 : 0.01
+T: 1 0 : 74 : 46 : 0.01
+T: 1 0 : 74 : 50 : 0.01
+T: 1 0 : 74 : 47 : 0.08
+T: 1 0 : 74 : 64 : 0.01
+T: 1 0 : 74 : 65 : 0.08
+T: 1 0 : 75 : 78 : 0.08
+T: 1 0 : 75 : 76 : 0.08
+T: 1 0 : 75 : 75 : 0.16
+T: 1 0 : 75 : 72 : 0.48
+T: 1 0 : 75 : 69 : 0.01
+T: 1 0 : 75 : 67 : 0.01
+T: 1 0 : 75 : 48 : 0.02
+T: 1 0 : 75 : 45 : 0.06
+T: 1 0 : 75 : 66 : 0.02
+T: 1 0 : 75 : 49 : 0.01
+T: 1 0 : 75 : 63 : 0.06
+T: 1 0 : 75 : 51 : 0.01
+T: 1 0 : 76 : 79 : 0.08
+T: 1 0 : 76 : 77 : 0.08
+T: 1 0 : 76 : 76 : 0.08
+T: 1 0 : 76 : 75 : 0.08
+T: 1 0 : 76 : 73 : 0.48
+T: 1 0 : 76 : 70 : 0.01
+T: 1 0 : 76 : 68 : 0.01
+T: 1 0 : 76 : 48 : 0.01
+T: 1 0 : 76 : 46 : 0.06
+T: 1 0 : 76 : 66 : 0.01
+T: 1 0 : 76 : 49 : 0.01
+T: 1 0 : 76 : 67 : 0.01
+T: 1 0 : 76 : 50 : 0.01
+T: 1 0 : 76 : 64 : 0.06
+T: 1 0 : 76 : 52 : 0.01
+T: 1 0 : 77 : 80 : 0.08
+T: 1 0 : 77 : 77 : 0.16
+T: 1 0 : 77 : 76 : 0.08
+T: 1 0 : 77 : 74 : 0.48
+T: 1 0 : 77 : 71 : 0.01
+T: 1 0 : 77 : 68 : 0.02
+T: 1 0 : 77 : 49 : 0.01
+T: 1 0 : 77 : 47 : 0.06
+T: 1 0 : 77 : 53 : 0.01
+T: 1 0 : 77 : 50 : 0.02
+T: 1 0 : 77 : 67 : 0.01
+T: 1 0 : 77 : 65 : 0.06
+T: 0 4 : 80 : 80 : 0.3
+T: 0 4 : 80 : 53 : 0.6
+T: 0 4 : 80 : 71 : 0.1
+T: 0 4 : 79 : 79 : 0.3
+T: 0 4 : 79 : 52 : 0.6
+T: 0 4 : 79 : 70 : 0.1
+T: 0 4 : 78 : 78 : 0.3
+T: 0 4 : 78 : 51 : 0.6
+T: 0 4 : 78 : 69 : 0.1
+T: 0 4 : 35 : 62 : 0.1
+T: 0 4 : 35 : 44 : 0.1
+T: 0 4 : 35 : 8 : 0.6
+T: 0 4 : 35 : 35 : 0.2
+T: 0 4 : 34 : 61 : 0.1
+T: 0 4 : 34 : 43 : 0.1
+T: 0 4 : 34 : 7 : 0.6
+T: 0 4 : 34 : 34 : 0.2
+T: 0 4 : 33 : 60 : 0.1
+T: 0 4 : 33 : 42 : 0.1
+T: 0 4 : 33 : 6 : 0.6
+T: 0 4 : 33 : 33 : 0.2
+T: 0 4 : 32 : 59 : 0.1
+T: 0 4 : 32 : 41 : 0.1
+T: 0 4 : 32 : 5 : 0.6
+T: 0 4 : 32 : 32 : 0.2
+T: 0 4 : 31 : 58 : 0.1
+T: 0 4 : 31 : 40 : 0.1
+T: 0 4 : 31 : 4 : 0.6
+T: 0 4 : 31 : 31 : 0.2
+T: 0 4 : 30 : 57 : 0.1
+T: 0 4 : 30 : 39 : 0.1
+T: 0 4 : 30 : 3 : 0.6
+T: 0 4 : 30 : 30 : 0.2
+T: 0 4 : 29 : 56 : 0.1
+T: 0 4 : 29 : 38 : 0.1
+T: 0 4 : 29 : 2 : 0.6
+T: 0 4 : 29 : 29 : 0.2
+T: 0 4 : 28 : 55 : 0.1
+T: 0 4 : 28 : 37 : 0.1
+T: 0 4 : 28 : 1 : 0.6
+T: 0 4 : 28 : 28 : 0.2
+T: 0 4 : 27 : 54 : 0.1
+T: 0 4 : 27 : 36 : 0.1
+T: 0 4 : 27 : 0 : 0.6
+T: 0 4 : 27 : 27 : 0.2
+T: 0 4 : 26 : 53 : 0.1
+T: 0 4 : 26 : 17 : 0.1
+T: 0 4 : 26 : 26 : 0.8
+T: 0 4 : 25 : 52 : 0.1
+T: 0 4 : 25 : 16 : 0.1
+T: 0 4 : 25 : 25 : 0.8
+T: 0 4 : 24 : 51 : 0.1
+T: 0 4 : 24 : 15 : 0.1
+T: 0 4 : 24 : 24 : 0.8
+T: 0 4 : 23 : 50 : 0.1
+T: 0 4 : 23 : 14 : 0.1
+T: 0 4 : 23 : 23 : 0.8
+T: 0 4 : 22 : 49 : 0.1
+T: 0 4 : 22 : 13 : 0.1
+T: 0 4 : 22 : 22 : 0.8
+T: 0 4 : 21 : 48 : 0.1
+T: 0 4 : 21 : 12 : 0.1
+T: 0 4 : 21 : 21 : 0.8
+T: 0 4 : 20 : 47 : 0.1
+T: 0 4 : 20 : 11 : 0.1
+T: 0 4 : 20 : 20 : 0.8
+T: 0 4 : 19 : 46 : 0.1
+T: 0 4 : 19 : 10 : 0.1
+T: 0 4 : 19 : 19 : 0.8
+T: 0 4 : 18 : 45 : 0.1
+T: 0 4 : 18 : 9 : 0.1
+T: 0 4 : 18 : 18 : 0.8
+T: 0 4 : 17 : 44 : 0.1
+T: 0 4 : 17 : 26 : 0.1
+T: 0 4 : 17 : 8 : 0.1
+T: 0 4 : 17 : 17 : 0.7
+T: 0 4 : 16 : 43 : 0.1
+T: 0 4 : 16 : 25 : 0.1
+T: 0 4 : 16 : 7 : 0.1
+T: 0 4 : 16 : 16 : 0.7
+T: 0 4 : 5 : 32 : 0.1
+T: 0 4 : 5 : 5 : 0.8
+T: 0 4 : 5 : 14 : 0.1
+T: 0 4 : 4 : 31 : 0.1
+T: 0 4 : 4 : 4 : 0.8
+T: 0 4 : 4 : 13 : 0.1
+T: 0 4 : 3 : 30 : 0.1
+T: 0 4 : 3 : 3 : 0.8
+T: 0 4 : 3 : 12 : 0.1
+T: 0 4 : 2 : 29 : 0.1
+T: 0 4 : 2 : 2 : 0.8
+T: 0 4 : 2 : 11 : 0.1
+T: 0 4 : 0 : 27 : 0.1
+T: 0 4 : 0 : 0 : 0.8
+T: 0 4 : 0 : 9 : 0.1
+T: 0 4 : 1 : 28 : 0.1
+T: 0 4 : 1 : 1 : 0.8
+T: 0 4 : 1 : 10 : 0.1
+T: 0 4 : 6 : 33 : 0.1
+T: 0 4 : 6 : 6 : 0.8
+T: 0 4 : 6 : 15 : 0.1
+T: 0 4 : 7 : 34 : 0.1
+T: 0 4 : 7 : 7 : 0.8
+T: 0 4 : 7 : 16 : 0.1
+T: 0 4 : 8 : 35 : 0.1
+T: 0 4 : 8 : 8 : 0.8
+T: 0 4 : 8 : 17 : 0.1
+T: 0 4 : 9 : 36 : 0.1
+T: 0 4 : 9 : 18 : 0.1
+T: 0 4 : 9 : 0 : 0.1
+T: 0 4 : 9 : 9 : 0.7
+T: 0 4 : 10 : 37 : 0.1
+T: 0 4 : 10 : 19 : 0.1
+T: 0 4 : 10 : 1 : 0.1
+T: 0 4 : 10 : 10 : 0.7
+T: 0 4 : 11 : 38 : 0.1
+T: 0 4 : 11 : 20 : 0.1
+T: 0 4 : 11 : 2 : 0.1
+T: 0 4 : 11 : 11 : 0.7
+T: 0 4 : 12 : 39 : 0.1
+T: 0 4 : 12 : 21 : 0.1
+T: 0 4 : 12 : 3 : 0.1
+T: 0 4 : 12 : 12 : 0.7
+T: 0 4 : 13 : 40 : 0.1
+T: 0 4 : 13 : 22 : 0.1
+T: 0 4 : 13 : 4 : 0.1
+T: 0 4 : 13 : 13 : 0.7
+T: 0 4 : 14 : 41 : 0.1
+T: 0 4 : 14 : 23 : 0.1
+T: 0 4 : 14 : 5 : 0.1
+T: 0 4 : 14 : 14 : 0.7
+T: 0 4 : 15 : 42 : 0.1
+T: 0 4 : 15 : 24 : 0.1
+T: 0 4 : 15 : 6 : 0.1
+T: 0 4 : 15 : 15 : 0.7
+T: 0 4 : 36 : 63 : 0.1
+T: 0 4 : 36 : 45 : 0.1
+T: 0 4 : 36 : 36 : 0.1
+T: 0 4 : 36 : 9 : 0.6
+T: 0 4 : 36 : 27 : 0.1
+T: 0 4 : 37 : 64 : 0.1
+T: 0 4 : 37 : 46 : 0.1
+T: 0 4 : 37 : 37 : 0.1
+T: 0 4 : 37 : 10 : 0.6
+T: 0 4 : 37 : 28 : 0.1
+T: 0 4 : 38 : 65 : 0.1
+T: 0 4 : 38 : 47 : 0.1
+T: 0 4 : 38 : 38 : 0.1
+T: 0 4 : 38 : 11 : 0.6
+T: 0 4 : 38 : 29 : 0.1
+T: 0 4 : 39 : 66 : 0.1
+T: 0 4 : 39 : 48 : 0.1
+T: 0 4 : 39 : 39 : 0.1
+T: 0 4 : 39 : 12 : 0.6
+T: 0 4 : 39 : 30 : 0.1
+T: 0 4 : 40 : 67 : 0.1
+T: 0 4 : 40 : 49 : 0.1
+T: 0 4 : 40 : 40 : 0.1
+T: 0 4 : 40 : 13 : 0.6
+T: 0 4 : 40 : 31 : 0.1
+T: 0 4 : 41 : 68 : 0.1
+T: 0 4 : 41 : 50 : 0.1
+T: 0 4 : 41 : 41 : 0.1
+T: 0 4 : 41 : 14 : 0.6
+T: 0 4 : 41 : 32 : 0.1
+T: 0 4 : 42 : 69 : 0.1
+T: 0 4 : 42 : 51 : 0.1
+T: 0 4 : 42 : 42 : 0.1
+T: 0 4 : 42 : 15 : 0.6
+T: 0 4 : 42 : 33 : 0.1
+T: 0 4 : 43 : 70 : 0.1
+T: 0 4 : 43 : 52 : 0.1
+T: 0 4 : 43 : 43 : 0.1
+T: 0 4 : 43 : 16 : 0.6
+T: 0 4 : 43 : 34 : 0.1
+T: 0 4 : 44 : 71 : 0.1
+T: 0 4 : 44 : 53 : 0.1
+T: 0 4 : 44 : 44 : 0.1
+T: 0 4 : 44 : 17 : 0.6
+T: 0 4 : 44 : 35 : 0.1
+T: 0 4 : 45 : 72 : 0.1
+T: 0 4 : 45 : 45 : 0.2
+T: 0 4 : 45 : 18 : 0.6
+T: 0 4 : 45 : 36 : 0.1
+T: 0 4 : 46 : 73 : 0.1
+T: 0 4 : 46 : 46 : 0.2
+T: 0 4 : 46 : 19 : 0.6
+T: 0 4 : 46 : 37 : 0.1
+T: 0 4 : 47 : 74 : 0.1
+T: 0 4 : 47 : 47 : 0.2
+T: 0 4 : 47 : 20 : 0.6
+T: 0 4 : 47 : 38 : 0.1
+T: 0 4 : 48 : 75 : 0.1
+T: 0 4 : 48 : 48 : 0.2
+T: 0 4 : 48 : 21 : 0.6
+T: 0 4 : 48 : 39 : 0.1
+T: 0 4 : 49 : 76 : 0.1
+T: 0 4 : 49 : 49 : 0.2
+T: 0 4 : 49 : 22 : 0.6
+T: 0 4 : 49 : 40 : 0.1
+T: 0 4 : 50 : 77 : 0.1
+T: 0 4 : 50 : 50 : 0.2
+T: 0 4 : 50 : 23 : 0.6
+T: 0 4 : 50 : 41 : 0.1
+T: 0 4 : 51 : 78 : 0.1
+T: 0 4 : 51 : 51 : 0.2
+T: 0 4 : 51 : 24 : 0.6
+T: 0 4 : 51 : 42 : 0.1
+T: 0 4 : 52 : 79 : 0.1
+T: 0 4 : 52 : 52 : 0.2
+T: 0 4 : 52 : 25 : 0.6
+T: 0 4 : 52 : 43 : 0.1
+T: 0 4 : 53 : 80 : 0.1
+T: 0 4 : 53 : 53 : 0.2
+T: 0 4 : 53 : 26 : 0.6
+T: 0 4 : 53 : 44 : 0.1
+T: 0 4 : 54 : 63 : 0.1
+T: 0 4 : 54 : 27 : 0.6
+T: 0 4 : 54 : 54 : 0.3
+T: 0 4 : 55 : 64 : 0.1
+T: 0 4 : 55 : 28 : 0.6
+T: 0 4 : 55 : 55 : 0.3
+T: 0 4 : 56 : 65 : 0.1
+T: 0 4 : 56 : 29 : 0.6
+T: 0 4 : 56 : 56 : 0.3
+T: 0 4 : 57 : 66 : 0.1
+T: 0 4 : 57 : 30 : 0.6
+T: 0 4 : 57 : 57 : 0.3
+T: 0 4 : 58 : 67 : 0.1
+T: 0 4 : 58 : 31 : 0.6
+T: 0 4 : 58 : 58 : 0.3
+T: 0 4 : 59 : 68 : 0.1
+T: 0 4 : 59 : 32 : 0.6
+T: 0 4 : 59 : 59 : 0.3
+T: 0 4 : 60 : 69 : 0.1
+T: 0 4 : 60 : 33 : 0.6
+T: 0 4 : 60 : 60 : 0.3
+T: 0 4 : 61 : 70 : 0.1
+T: 0 4 : 61 : 34 : 0.6
+T: 0 4 : 61 : 61 : 0.3
+T: 0 4 : 62 : 71 : 0.1
+T: 0 4 : 62 : 35 : 0.6
+T: 0 4 : 62 : 62 : 0.3
+T: 0 4 : 63 : 72 : 0.1
+T: 0 4 : 63 : 63 : 0.2
+T: 0 4 : 63 : 36 : 0.6
+T: 0 4 : 63 : 54 : 0.1
+T: 0 4 : 64 : 73 : 0.1
+T: 0 4 : 64 : 64 : 0.2
+T: 0 4 : 64 : 37 : 0.6
+T: 0 4 : 64 : 55 : 0.1
+T: 0 4 : 65 : 74 : 0.1
+T: 0 4 : 65 : 65 : 0.2
+T: 0 4 : 65 : 38 : 0.6
+T: 0 4 : 65 : 56 : 0.1
+T: 0 4 : 66 : 75 : 0.1
+T: 0 4 : 66 : 66 : 0.2
+T: 0 4 : 66 : 39 : 0.6
+T: 0 4 : 66 : 57 : 0.1
+T: 0 4 : 67 : 76 : 0.1
+T: 0 4 : 67 : 67 : 0.2
+T: 0 4 : 67 : 40 : 0.6
+T: 0 4 : 67 : 58 : 0.1
+T: 0 4 : 68 : 77 : 0.1
+T: 0 4 : 68 : 68 : 0.2
+T: 0 4 : 68 : 41 : 0.6
+T: 0 4 : 68 : 59 : 0.1
+T: 0 4 : 69 : 78 : 0.1
+T: 0 4 : 69 : 69 : 0.2
+T: 0 4 : 69 : 42 : 0.6
+T: 0 4 : 69 : 60 : 0.1
+T: 0 4 : 70 : 79 : 0.1
+T: 0 4 : 70 : 70 : 0.2
+T: 0 4 : 70 : 43 : 0.6
+T: 0 4 : 70 : 61 : 0.1
+T: 0 4 : 71 : 80 : 0.1
+T: 0 4 : 71 : 71 : 0.2
+T: 0 4 : 71 : 44 : 0.6
+T: 0 4 : 71 : 62 : 0.1
+T: 0 4 : 72 : 72 : 0.3
+T: 0 4 : 72 : 45 : 0.6
+T: 0 4 : 72 : 63 : 0.1
+T: 0 4 : 73 : 73 : 0.3
+T: 0 4 : 73 : 46 : 0.6
+T: 0 4 : 73 : 64 : 0.1
+T: 0 4 : 74 : 74 : 0.3
+T: 0 4 : 74 : 47 : 0.6
+T: 0 4 : 74 : 65 : 0.1
+T: 0 4 : 75 : 75 : 0.3
+T: 0 4 : 75 : 48 : 0.6
+T: 0 4 : 75 : 66 : 0.1
+T: 0 4 : 76 : 76 : 0.3
+T: 0 4 : 76 : 49 : 0.6
+T: 0 4 : 76 : 67 : 0.1
+T: 0 4 : 77 : 77 : 0.3
+T: 0 4 : 77 : 50 : 0.6
+T: 0 4 : 77 : 68 : 0.1
+T: 0 3 : 80 : 80 : 0.24
+T: 0 3 : 80 : 79 : 0.03
+T: 0 3 : 80 : 77 : 0.03
+T: 0 3 : 80 : 52 : 0.06
+T: 0 3 : 80 : 50 : 0.06
+T: 0 3 : 80 : 71 : 0.08
+T: 0 3 : 80 : 68 : 0.01
+T: 0 3 : 80 : 53 : 0.48
+T: 0 3 : 80 : 70 : 0.01
+T: 0 3 : 79 : 80 : 0.18
+T: 0 3 : 79 : 79 : 0.06
+T: 0 3 : 79 : 78 : 0.03
+T: 0 3 : 79 : 76 : 0.03
+T: 0 3 : 79 : 71 : 0.06
+T: 0 3 : 79 : 51 : 0.06
+T: 0 3 : 79 : 49 : 0.06
+T: 0 3 : 79 : 70 : 0.02
+T: 0 3 : 79 : 53 : 0.36
+T: 0 3 : 79 : 67 : 0.01
+T: 0 3 : 79 : 52 : 0.12
+T: 0 3 : 79 : 69 : 0.01
+T: 0 3 : 78 : 79 : 0.18
+T: 0 3 : 78 : 78 : 0.09
+T: 0 3 : 78 : 75 : 0.03
+T: 0 3 : 78 : 51 : 0.18
+T: 0 3 : 78 : 48 : 0.06
+T: 0 3 : 78 : 69 : 0.03
+T: 0 3 : 78 : 52 : 0.36
+T: 0 3 : 78 : 66 : 0.01
+T: 0 3 : 78 : 70 : 0.06
+T: 0 3 : 35 : 62 : 0.08
+T: 0 3 : 35 : 61 : 0.01
+T: 0 3 : 35 : 44 : 0.08
+T: 0 3 : 35 : 43 : 0.01
+T: 0 3 : 35 : 41 : 0.01
+T: 0 3 : 35 : 7 : 0.06
+T: 0 3 : 35 : 35 : 0.16
+T: 0 3 : 35 : 5 : 0.06
+T: 0 3 : 35 : 59 : 0.01
+T: 0 3 : 35 : 8 : 0.48
+T: 0 3 : 35 : 32 : 0.02
+T: 0 3 : 35 : 34 : 0.02
+T: 0 3 : 34 : 62 : 0.06
+T: 0 3 : 34 : 61 : 0.02
+T: 0 3 : 34 : 44 : 0.06
+T: 0 3 : 34 : 60 : 0.01
+T: 0 3 : 34 : 43 : 0.02
+T: 0 3 : 34 : 35 : 0.12
+T: 0 3 : 34 : 34 : 0.04
+T: 0 3 : 34 : 40 : 0.01
+T: 0 3 : 34 : 6 : 0.06
+T: 0 3 : 34 : 4 : 0.06
+T: 0 3 : 34 : 58 : 0.01
+T: 0 3 : 34 : 7 : 0.12
+T: 0 3 : 34 : 42 : 0.01
+T: 0 3 : 34 : 8 : 0.36
+T: 0 3 : 34 : 31 : 0.02
+T: 0 3 : 34 : 33 : 0.02
+T: 0 3 : 33 : 61 : 0.06
+T: 0 3 : 33 : 60 : 0.03
+T: 0 3 : 33 : 43 : 0.06
+T: 0 3 : 33 : 42 : 0.03
+T: 0 3 : 33 : 39 : 0.01
+T: 0 3 : 33 : 57 : 0.01
+T: 0 3 : 33 : 6 : 0.18
+T: 0 3 : 33 : 34 : 0.12
+T: 0 3 : 33 : 3 : 0.06
+T: 0 3 : 33 : 7 : 0.36
+T: 0 3 : 33 : 30 : 0.02
+T: 0 3 : 33 : 33 : 0.06
+T: 0 3 : 32 : 62 : 0.01
+T: 0 3 : 32 : 44 : 0.01
+T: 0 3 : 32 : 58 : 0.01
+T: 0 3 : 32 : 41 : 0.07
+T: 0 3 : 32 : 40 : 0.01
+T: 0 3 : 32 : 35 : 0.02
+T: 0 3 : 32 : 32 : 0.14
+T: 0 3 : 32 : 38 : 0.01
+T: 0 3 : 32 : 4 : 0.06
+T: 0 3 : 32 : 2 : 0.06
+T: 0 3 : 32 : 56 : 0.01
+T: 0 3 : 32 : 5 : 0.42
+T: 0 3 : 32 : 59 : 0.07
+T: 0 3 : 32 : 8 : 0.06
+T: 0 3 : 32 : 29 : 0.02
+T: 0 3 : 32 : 31 : 0.02
+T: 0 3 : 31 : 61 : 0.01
+T: 0 3 : 31 : 59 : 0.06
+T: 0 3 : 31 : 58 : 0.01
+T: 0 3 : 31 : 57 : 0.01
+T: 0 3 : 31 : 28 : 0.02
+T: 0 3 : 31 : 7 : 0.06
+T: 0 3 : 31 : 5 : 0.36
+T: 0 3 : 31 : 39 : 0.01
+T: 0 3 : 31 : 41 : 0.06
+T: 0 3 : 31 : 4 : 0.06
+T: 0 3 : 31 : 55 : 0.01
+T: 0 3 : 31 : 1 : 0.06
+T: 0 3 : 31 : 37 : 0.01
+T: 0 3 : 31 : 30 : 0.02
+T: 0 3 : 31 : 31 : 0.02
+T: 0 3 : 31 : 32 : 0.12
+T: 0 3 : 31 : 34 : 0.02
+T: 0 3 : 31 : 3 : 0.06
+T: 0 3 : 31 : 40 : 0.01
+T: 0 3 : 31 : 43 : 0.01
+T: 0 3 : 30 : 60 : 0.01
+T: 0 3 : 30 : 58 : 0.06
+T: 0 3 : 30 : 42 : 0.01
+T: 0 3 : 30 : 39 : 0.02
+T: 0 3 : 30 : 36 : 0.01
+T: 0 3 : 30 : 33 : 0.02
+T: 0 3 : 30 : 31 : 0.12
+T: 0 3 : 30 : 54 : 0.01
+T: 0 3 : 30 : 3 : 0.12
+T: 0 3 : 30 : 0 : 0.06
+T: 0 3 : 30 : 4 : 0.36
+T: 0 3 : 30 : 57 : 0.02
+T: 0 3 : 30 : 40 : 0.06
+T: 0 3 : 30 : 6 : 0.06
+T: 0 3 : 30 : 27 : 0.02
+T: 0 3 : 30 : 30 : 0.04
+T: 0 3 : 29 : 59 : 0.01
+T: 0 3 : 29 : 41 : 0.01
+T: 0 3 : 29 : 55 : 0.01
+T: 0 3 : 29 : 38 : 0.08
+T: 0 3 : 29 : 37 : 0.01
+T: 0 3 : 29 : 2 : 0.48
+T: 0 3 : 29 : 1 : 0.06
+T: 0 3 : 29 : 29 : 0.16
+T: 0 3 : 29 : 56 : 0.08
+T: 0 3 : 29 : 5 : 0.06
+T: 0 3 : 29 : 28 : 0.02
+T: 0 3 : 29 : 32 : 0.02
+T: 0 3 : 28 : 58 : 0.01
+T: 0 3 : 28 : 56 : 0.06
+T: 0 3 : 28 : 40 : 0.01
+T: 0 3 : 28 : 54 : 0.01
+T: 0 3 : 28 : 37 : 0.02
+T: 0 3 : 28 : 31 : 0.02
+T: 0 3 : 28 : 29 : 0.12
+T: 0 3 : 28 : 1 : 0.12
+T: 0 3 : 28 : 0 : 0.06
+T: 0 3 : 28 : 28 : 0.04
+T: 0 3 : 28 : 36 : 0.01
+T: 0 3 : 28 : 2 : 0.36
+T: 0 3 : 28 : 55 : 0.02
+T: 0 3 : 28 : 38 : 0.06
+T: 0 3 : 28 : 4 : 0.06
+T: 0 3 : 28 : 27 : 0.02
+T: 0 3 : 27 : 57 : 0.01
+T: 0 3 : 27 : 55 : 0.06
+T: 0 3 : 27 : 39 : 0.01
+T: 0 3 : 27 : 36 : 0.03
+T: 0 3 : 27 : 1 : 0.36
+T: 0 3 : 27 : 0 : 0.18
+T: 0 3 : 27 : 28 : 0.12
+T: 0 3 : 27 : 54 : 0.03
+T: 0 3 : 27 : 37 : 0.06
+T: 0 3 : 27 : 3 : 0.06
+T: 0 3 : 27 : 27 : 0.06
+T: 0 3 : 27 : 30 : 0.02
+T: 0 3 : 26 : 53 : 0.08
+T: 0 3 : 26 : 52 : 0.01
+T: 0 3 : 26 : 50 : 0.01
+T: 0 3 : 26 : 16 : 0.01
+T: 0 3 : 26 : 23 : 0.08
+T: 0 3 : 26 : 14 : 0.01
+T: 0 3 : 26 : 17 : 0.08
+T: 0 3 : 26 : 25 : 0.08
+T: 0 3 : 26 : 26 : 0.64
+T: 0 3 : 25 : 53 : 0.06
+T: 0 3 : 25 : 52 : 0.02
+T: 0 3 : 25 : 26 : 0.48
+T: 0 3 : 25 : 25 : 0.16
+T: 0 3 : 25 : 49 : 0.01
+T: 0 3 : 25 : 15 : 0.01
+T: 0 3 : 25 : 22 : 0.08
+T: 0 3 : 25 : 13 : 0.01
+T: 0 3 : 25 : 16 : 0.02
+T: 0 3 : 25 : 51 : 0.01
+T: 0 3 : 25 : 17 : 0.06
+T: 0 3 : 25 : 24 : 0.08
+T: 0 3 : 24 : 52 : 0.06
+T: 0 3 : 24 : 51 : 0.03
+T: 0 3 : 24 : 48 : 0.01
+T: 0 3 : 24 : 15 : 0.03
+T: 0 3 : 24 : 12 : 0.01
+T: 0 3 : 24 : 16 : 0.06
+T: 0 3 : 24 : 21 : 0.08
+T: 0 3 : 24 : 24 : 0.24
+T: 0 3 : 24 : 25 : 0.48
+T: 0 3 : 23 : 53 : 0.01
+T: 0 3 : 23 : 50 : 0.07
+T: 0 3 : 23 : 49 : 0.01
+T: 0 3 : 23 : 26 : 0.08
+T: 0 3 : 23 : 23 : 0.56
+T: 0 3 : 23 : 47 : 0.01
+T: 0 3 : 23 : 13 : 0.01
+T: 0 3 : 23 : 20 : 0.08
+T: 0 3 : 23 : 11 : 0.01
+T: 0 3 : 23 : 14 : 0.07
+T: 0 3 : 23 : 17 : 0.01
+T: 0 3 : 23 : 22 : 0.08
+T: 0 3 : 22 : 52 : 0.01
+T: 0 3 : 22 : 49 : 0.01
+T: 0 3 : 22 : 25 : 0.08
+T: 0 3 : 22 : 23 : 0.48
+T: 0 3 : 22 : 22 : 0.08
+T: 0 3 : 22 : 21 : 0.08
+T: 0 3 : 22 : 46 : 0.01
+T: 0 3 : 22 : 12 : 0.01
+T: 0 3 : 22 : 19 : 0.08
+T: 0 3 : 22 : 10 : 0.01
+T: 0 3 : 22 : 13 : 0.01
+T: 0 3 : 22 : 48 : 0.01
+T: 0 3 : 22 : 14 : 0.06
+T: 0 3 : 22 : 50 : 0.06
+T: 0 3 : 22 : 16 : 0.01
+T: 0 3 : 21 : 51 : 0.01
+T: 0 3 : 21 : 48 : 0.02
+T: 0 3 : 21 : 45 : 0.01
+T: 0 3 : 21 : 24 : 0.08
+T: 0 3 : 21 : 22 : 0.48
+T: 0 3 : 21 : 12 : 0.02
+T: 0 3 : 21 : 9 : 0.01
+T: 0 3 : 21 : 13 : 0.06
+T: 0 3 : 21 : 49 : 0.06
+T: 0 3 : 21 : 15 : 0.01
+T: 0 3 : 21 : 18 : 0.08
+T: 0 3 : 21 : 21 : 0.16
+T: 0 3 : 20 : 50 : 0.01
+T: 0 3 : 20 : 47 : 0.08
+T: 0 3 : 20 : 46 : 0.01
+T: 0 3 : 20 : 11 : 0.08
+T: 0 3 : 20 : 10 : 0.01
+T: 0 3 : 20 : 14 : 0.01
+T: 0 3 : 20 : 19 : 0.08
+T: 0 3 : 20 : 20 : 0.64
+T: 0 3 : 20 : 23 : 0.08
+T: 0 3 : 19 : 49 : 0.01
+T: 0 3 : 19 : 46 : 0.02
+T: 0 3 : 19 : 22 : 0.08
+T: 0 3 : 19 : 20 : 0.48
+T: 0 3 : 19 : 10 : 0.02
+T: 0 3 : 19 : 9 : 0.01
+T: 0 3 : 19 : 45 : 0.01
+T: 0 3 : 19 : 11 : 0.06
+T: 0 3 : 19 : 18 : 0.08
+T: 0 3 : 19 : 47 : 0.06
+T: 0 3 : 19 : 13 : 0.01
+T: 0 3 : 19 : 19 : 0.16
+T: 0 3 : 18 : 48 : 0.01
+T: 0 3 : 18 : 45 : 0.03
+T: 0 3 : 18 : 10 : 0.06
+T: 0 3 : 18 : 9 : 0.03
+T: 0 3 : 18 : 46 : 0.06
+T: 0 3 : 18 : 12 : 0.01
+T: 0 3 : 18 : 19 : 0.48
+T: 0 3 : 18 : 18 : 0.24
+T: 0 3 : 18 : 21 : 0.08
+T: 0 3 : 17 : 44 : 0.08
+T: 0 3 : 17 : 43 : 0.01
+T: 0 3 : 17 : 26 : 0.08
+T: 0 3 : 17 : 23 : 0.01
+T: 0 3 : 17 : 41 : 0.01
+T: 0 3 : 17 : 7 : 0.01
+T: 0 3 : 17 : 14 : 0.07
+T: 0 3 : 17 : 5 : 0.01
+T: 0 3 : 17 : 25 : 0.01
+T: 0 3 : 17 : 8 : 0.08
+T: 0 3 : 17 : 16 : 0.07
+T: 0 3 : 17 : 17 : 0.56
+T: 0 3 : 16 : 44 : 0.06
+T: 0 3 : 16 : 43 : 0.02
+T: 0 3 : 16 : 26 : 0.06
+T: 0 3 : 16 : 22 : 0.01
+T: 0 3 : 16 : 17 : 0.42
+T: 0 3 : 16 : 16 : 0.14
+T: 0 3 : 16 : 40 : 0.01
+T: 0 3 : 16 : 6 : 0.01
+T: 0 3 : 16 : 13 : 0.07
+T: 0 3 : 16 : 4 : 0.01
+T: 0 3 : 16 : 24 : 0.01
+T: 0 3 : 16 : 7 : 0.02
+T: 0 3 : 16 : 42 : 0.01
+T: 0 3 : 16 : 25 : 0.02
+T: 0 3 : 16 : 8 : 0.06
+T: 0 3 : 16 : 15 : 0.07
+T: 0 3 : 5 : 35 : 0.01
+T: 0 3 : 5 : 32 : 0.07
+T: 0 3 : 5 : 29 : 0.01
+T: 0 3 : 5 : 17 : 0.01
+T: 0 3 : 5 : 31 : 0.01
+T: 0 3 : 5 : 14 : 0.07
+T: 0 3 : 5 : 4 : 0.08
+T: 0 3 : 5 : 11 : 0.01
+T: 0 3 : 5 : 2 : 0.08
+T: 0 3 : 5 : 5 : 0.56
+T: 0 3 : 5 : 8 : 0.08
+T: 0 3 : 5 : 13 : 0.01
+T: 0 3 : 4 : 34 : 0.01
+T: 0 3 : 4 : 32 : 0.06
+T: 0 3 : 4 : 28 : 0.01
+T: 0 3 : 4 : 16 : 0.01
+T: 0 3 : 4 : 31 : 0.01
+T: 0 3 : 4 : 14 : 0.06
+T: 0 3 : 4 : 30 : 0.01
+T: 0 3 : 4 : 13 : 0.01
+T: 0 3 : 4 : 12 : 0.01
+T: 0 3 : 4 : 3 : 0.08
+T: 0 3 : 4 : 10 : 0.01
+T: 0 3 : 4 : 1 : 0.08
+T: 0 3 : 4 : 4 : 0.08
+T: 0 3 : 4 : 5 : 0.48
+T: 0 3 : 4 : 7 : 0.08
+T: 0 3 : 3 : 33 : 0.01
+T: 0 3 : 3 : 31 : 0.06
+T: 0 3 : 3 : 27 : 0.01
+T: 0 3 : 3 : 15 : 0.01
+T: 0 3 : 3 : 30 : 0.02
+T: 0 3 : 3 : 13 : 0.06
+T: 0 3 : 3 : 3 : 0.16
+T: 0 3 : 3 : 0 : 0.08
+T: 0 3 : 3 : 4 : 0.48
+T: 0 3 : 3 : 6 : 0.08
+T: 0 3 : 3 : 9 : 0.01
+T: 0 3 : 3 : 12 : 0.02
+T: 0 3 : 2 : 32 : 0.01
+T: 0 3 : 2 : 29 : 0.08
+T: 0 3 : 2 : 2 : 0.64
+T: 0 3 : 2 : 1 : 0.08
+T: 0 3 : 2 : 5 : 0.08
+T: 0 3 : 2 : 10 : 0.01
+T: 0 3 : 2 : 28 : 0.01
+T: 0 3 : 2 : 11 : 0.08
+T: 0 3 : 2 : 14 : 0.01
+T: 0 3 : 0 : 30 : 0.01
+T: 0 3 : 0 : 28 : 0.06
+T: 0 3 : 0 : 1 : 0.48
+T: 0 3 : 0 : 0 : 0.24
+T: 0 3 : 0 : 3 : 0.08
+T: 0 3 : 0 : 27 : 0.03
+T: 0 3 : 0 : 10 : 0.06
+T: 0 3 : 0 : 9 : 0.03
+T: 0 3 : 0 : 12 : 0.01
+T: 0 3 : 1 : 31 : 0.01
+T: 0 3 : 1 : 29 : 0.06
+T: 0 3 : 1 : 13 : 0.01
+T: 0 3 : 1 : 28 : 0.02
+T: 0 3 : 1 : 11 : 0.06
+T: 0 3 : 1 : 1 : 0.16
+T: 0 3 : 1 : 0 : 0.08
+T: 0 3 : 1 : 2 : 0.48
+T: 0 3 : 1 : 9 : 0.01
+T: 0 3 : 1 : 4 : 0.08
+T: 0 3 : 1 : 27 : 0.01
+T: 0 3 : 1 : 10 : 0.02
+T: 0 3 : 6 : 34 : 0.06
+T: 0 3 : 6 : 30 : 0.01
+T: 0 3 : 6 : 6 : 0.24
+T: 0 3 : 6 : 3 : 0.08
+T: 0 3 : 6 : 7 : 0.48
+T: 0 3 : 6 : 12 : 0.01
+T: 0 3 : 6 : 15 : 0.03
+T: 0 3 : 6 : 33 : 0.03
+T: 0 3 : 6 : 16 : 0.06
+T: 0 3 : 7 : 35 : 0.06
+T: 0 3 : 7 : 31 : 0.01
+T: 0 3 : 7 : 34 : 0.02
+T: 0 3 : 7 : 17 : 0.06
+T: 0 3 : 7 : 33 : 0.01
+T: 0 3 : 7 : 16 : 0.02
+T: 0 3 : 7 : 6 : 0.08
+T: 0 3 : 7 : 13 : 0.01
+T: 0 3 : 7 : 4 : 0.08
+T: 0 3 : 7 : 7 : 0.16
+T: 0 3 : 7 : 8 : 0.48
+T: 0 3 : 7 : 15 : 0.01
+T: 0 3 : 8 : 35 : 0.08
+T: 0 3 : 8 : 32 : 0.01
+T: 0 3 : 8 : 7 : 0.08
+T: 0 3 : 8 : 14 : 0.01
+T: 0 3 : 8 : 5 : 0.08
+T: 0 3 : 8 : 8 : 0.64
+T: 0 3 : 8 : 16 : 0.01
+T: 0 3 : 8 : 34 : 0.01
+T: 0 3 : 8 : 17 : 0.08
+T: 0 3 : 9 : 39 : 0.01
+T: 0 3 : 9 : 21 : 0.01
+T: 0 3 : 9 : 36 : 0.03
+T: 0 3 : 9 : 19 : 0.06
+T: 0 3 : 9 : 18 : 0.03
+T: 0 3 : 9 : 1 : 0.06
+T: 0 3 : 9 : 0 : 0.03
+T: 0 3 : 9 : 37 : 0.06
+T: 0 3 : 9 : 3 : 0.01
+T: 0 3 : 9 : 10 : 0.42
+T: 0 3 : 9 : 9 : 0.21
+T: 0 3 : 9 : 12 : 0.07
+T: 0 3 : 10 : 40 : 0.01
+T: 0 3 : 10 : 22 : 0.01
+T: 0 3 : 10 : 37 : 0.02
+T: 0 3 : 10 : 20 : 0.06
+T: 0 3 : 10 : 13 : 0.07
+T: 0 3 : 10 : 11 : 0.42
+T: 0 3 : 10 : 18 : 0.01
+T: 0 3 : 10 : 1 : 0.02
+T: 0 3 : 10 : 0 : 0.01
+T: 0 3 : 10 : 36 : 0.01
+T: 0 3 : 10 : 19 : 0.02
+T: 0 3 : 10 : 2 : 0.06
+T: 0 3 : 10 : 9 : 0.07
+T: 0 3 : 10 : 38 : 0.06
+T: 0 3 : 10 : 4 : 0.01
+T: 0 3 : 10 : 10 : 0.14
+T: 0 3 : 11 : 41 : 0.01
+T: 0 3 : 11 : 38 : 0.08
+T: 0 3 : 11 : 23 : 0.01
+T: 0 3 : 11 : 37 : 0.01
+T: 0 3 : 11 : 20 : 0.08
+T: 0 3 : 11 : 19 : 0.01
+T: 0 3 : 11 : 2 : 0.08
+T: 0 3 : 11 : 1 : 0.01
+T: 0 3 : 11 : 5 : 0.01
+T: 0 3 : 11 : 10 : 0.07
+T: 0 3 : 11 : 11 : 0.56
+T: 0 3 : 11 : 14 : 0.07
+T: 0 3 : 12 : 42 : 0.01
+T: 0 3 : 12 : 36 : 0.01
+T: 0 3 : 12 : 24 : 0.01
+T: 0 3 : 12 : 39 : 0.02
+T: 0 3 : 12 : 22 : 0.06
+T: 0 3 : 12 : 18 : 0.01
+T: 0 3 : 12 : 15 : 0.07
+T: 0 3 : 12 : 13 : 0.42
+T: 0 3 : 12 : 3 : 0.02
+T: 0 3 : 12 : 0 : 0.01
+T: 0 3 : 12 : 21 : 0.02
+T: 0 3 : 12 : 4 : 0.06
+T: 0 3 : 12 : 40 : 0.06
+T: 0 3 : 12 : 6 : 0.01
+T: 0 3 : 12 : 9 : 0.07
+T: 0 3 : 12 : 12 : 0.14
+T: 0 3 : 13 : 43 : 0.01
+T: 0 3 : 13 : 39 : 0.01
+T: 0 3 : 13 : 7 : 0.01
+T: 0 3 : 13 : 5 : 0.06
+T: 0 3 : 13 : 22 : 0.01
+T: 0 3 : 13 : 41 : 0.06
+T: 0 3 : 13 : 4 : 0.01
+T: 0 3 : 13 : 21 : 0.01
+T: 0 3 : 13 : 1 : 0.01
+T: 0 3 : 13 : 10 : 0.07
+T: 0 3 : 13 : 40 : 0.01
+T: 0 3 : 13 : 3 : 0.01
+T: 0 3 : 13 : 37 : 0.01
+T: 0 3 : 13 : 12 : 0.07
+T: 0 3 : 13 : 13 : 0.07
+T: 0 3 : 13 : 14 : 0.42
+T: 0 3 : 13 : 16 : 0.07
+T: 0 3 : 13 : 19 : 0.01
+T: 0 3 : 13 : 23 : 0.06
+T: 0 3 : 13 : 25 : 0.01
+T: 0 3 : 14 : 44 : 0.01
+T: 0 3 : 14 : 41 : 0.07
+T: 0 3 : 14 : 26 : 0.01
+T: 0 3 : 14 : 40 : 0.01
+T: 0 3 : 14 : 23 : 0.07
+T: 0 3 : 14 : 20 : 0.01
+T: 0 3 : 14 : 17 : 0.07
+T: 0 3 : 14 : 14 : 0.49
+T: 0 3 : 14 : 38 : 0.01
+T: 0 3 : 14 : 4 : 0.01
+T: 0 3 : 14 : 11 : 0.07
+T: 0 3 : 14 : 2 : 0.01
+T: 0 3 : 14 : 22 : 0.01
+T: 0 3 : 14 : 5 : 0.07
+T: 0 3 : 14 : 8 : 0.01
+T: 0 3 : 14 : 13 : 0.07
+T: 0 3 : 15 : 43 : 0.06
+T: 0 3 : 15 : 39 : 0.01
+T: 0 3 : 15 : 42 : 0.03
+T: 0 3 : 15 : 25 : 0.06
+T: 0 3 : 15 : 21 : 0.01
+T: 0 3 : 15 : 6 : 0.03
+T: 0 3 : 15 : 3 : 0.01
+T: 0 3 : 15 : 24 : 0.03
+T: 0 3 : 15 : 7 : 0.06
+T: 0 3 : 15 : 12 : 0.07
+T: 0 3 : 15 : 15 : 0.21
+T: 0 3 : 15 : 16 : 0.42
+T: 0 3 : 36 : 66 : 0.01
+T: 0 3 : 36 : 48 : 0.01
+T: 0 3 : 36 : 39 : 0.01
+T: 0 3 : 36 : 37 : 0.06
+T: 0 3 : 36 : 36 : 0.03
+T: 0 3 : 36 : 9 : 0.18
+T: 0 3 : 36 : 64 : 0.06
+T: 0 3 : 36 : 30 : 0.01
+T: 0 3 : 36 : 63 : 0.03
+T: 0 3 : 36 : 46 : 0.06
+T: 0 3 : 36 : 12 : 0.06
+T: 0 3 : 36 : 10 : 0.36
+T: 0 3 : 36 : 27 : 0.03
+T: 0 3 : 36 : 45 : 0.03
+T: 0 3 : 36 : 28 : 0.06
+T: 0 3 : 37 : 67 : 0.01
+T: 0 3 : 37 : 63 : 0.01
+T: 0 3 : 37 : 65 : 0.06
+T: 0 3 : 37 : 28 : 0.02
+T: 0 3 : 37 : 11 : 0.36
+T: 0 3 : 37 : 45 : 0.01
+T: 0 3 : 37 : 64 : 0.02
+T: 0 3 : 37 : 27 : 0.01
+T: 0 3 : 37 : 13 : 0.06
+T: 0 3 : 37 : 10 : 0.12
+T: 0 3 : 37 : 47 : 0.06
+T: 0 3 : 37 : 29 : 0.06
+T: 0 3 : 37 : 9 : 0.06
+T: 0 3 : 37 : 46 : 0.02
+T: 0 3 : 37 : 31 : 0.01
+T: 0 3 : 37 : 36 : 0.01
+T: 0 3 : 37 : 37 : 0.02
+T: 0 3 : 37 : 38 : 0.06
+T: 0 3 : 37 : 40 : 0.01
+T: 0 3 : 37 : 49 : 0.01
+T: 0 3 : 38 : 68 : 0.01
+T: 0 3 : 38 : 50 : 0.01
+T: 0 3 : 38 : 64 : 0.01
+T: 0 3 : 38 : 47 : 0.08
+T: 0 3 : 38 : 41 : 0.01
+T: 0 3 : 38 : 38 : 0.08
+T: 0 3 : 38 : 37 : 0.01
+T: 0 3 : 38 : 32 : 0.01
+T: 0 3 : 38 : 10 : 0.06
+T: 0 3 : 38 : 65 : 0.08
+T: 0 3 : 38 : 14 : 0.06
+T: 0 3 : 38 : 11 : 0.48
+T: 0 3 : 38 : 28 : 0.01
+T: 0 3 : 38 : 46 : 0.01
+T: 0 3 : 38 : 29 : 0.08
+T: 0 3 : 39 : 69 : 0.01
+T: 0 3 : 39 : 66 : 0.02
+T: 0 3 : 39 : 63 : 0.01
+T: 0 3 : 39 : 15 : 0.06
+T: 0 3 : 39 : 27 : 0.01
+T: 0 3 : 39 : 13 : 0.36
+T: 0 3 : 39 : 67 : 0.06
+T: 0 3 : 39 : 30 : 0.02
+T: 0 3 : 39 : 9 : 0.06
+T: 0 3 : 39 : 49 : 0.06
+T: 0 3 : 39 : 12 : 0.12
+T: 0 3 : 39 : 31 : 0.06
+T: 0 3 : 39 : 48 : 0.02
+T: 0 3 : 39 : 33 : 0.01
+T: 0 3 : 39 : 36 : 0.01
+T: 0 3 : 39 : 39 : 0.02
+T: 0 3 : 39 : 40 : 0.06
+T: 0 3 : 39 : 42 : 0.01
+T: 0 3 : 39 : 45 : 0.01
+T: 0 3 : 39 : 51 : 0.01
+T: 0 3 : 40 : 70 : 0.01
+T: 0 3 : 40 : 66 : 0.01
+T: 0 3 : 40 : 64 : 0.01
+T: 0 3 : 40 : 52 : 0.01
+T: 0 3 : 40 : 48 : 0.01
+T: 0 3 : 40 : 16 : 0.06
+T: 0 3 : 40 : 28 : 0.01
+T: 0 3 : 40 : 14 : 0.36
+T: 0 3 : 40 : 68 : 0.06
+T: 0 3 : 40 : 31 : 0.01
+T: 0 3 : 40 : 50 : 0.06
+T: 0 3 : 40 : 13 : 0.06
+T: 0 3 : 40 : 67 : 0.01
+T: 0 3 : 40 : 30 : 0.01
+T: 0 3 : 40 : 10 : 0.06
+T: 0 3 : 40 : 49 : 0.01
+T: 0 3 : 40 : 12 : 0.06
+T: 0 3 : 40 : 46 : 0.01
+T: 0 3 : 40 : 32 : 0.06
+T: 0 3 : 40 : 34 : 0.01
+T: 0 3 : 40 : 37 : 0.01
+T: 0 3 : 40 : 39 : 0.01
+T: 0 3 : 40 : 40 : 0.01
+T: 0 3 : 40 : 41 : 0.06
+T: 0 3 : 40 : 43 : 0.01
+T: 0 3 : 41 : 71 : 0.01
+T: 0 3 : 41 : 67 : 0.01
+T: 0 3 : 41 : 65 : 0.01
+T: 0 3 : 41 : 29 : 0.01
+T: 0 3 : 41 : 68 : 0.07
+T: 0 3 : 41 : 31 : 0.01
+T: 0 3 : 41 : 14 : 0.42
+T: 0 3 : 41 : 17 : 0.06
+T: 0 3 : 41 : 11 : 0.06
+T: 0 3 : 41 : 47 : 0.01
+T: 0 3 : 41 : 32 : 0.07
+T: 0 3 : 41 : 49 : 0.01
+T: 0 3 : 41 : 35 : 0.01
+T: 0 3 : 41 : 38 : 0.01
+T: 0 3 : 41 : 40 : 0.01
+T: 0 3 : 41 : 41 : 0.07
+T: 0 3 : 41 : 44 : 0.01
+T: 0 3 : 41 : 13 : 0.06
+T: 0 3 : 41 : 50 : 0.07
+T: 0 3 : 41 : 53 : 0.01
+T: 0 3 : 42 : 70 : 0.06
+T: 0 3 : 42 : 69 : 0.03
+T: 0 3 : 42 : 52 : 0.06
+T: 0 3 : 42 : 48 : 0.01
+T: 0 3 : 42 : 43 : 0.06
+T: 0 3 : 42 : 42 : 0.03
+T: 0 3 : 42 : 39 : 0.01
+T: 0 3 : 42 : 66 : 0.01
+T: 0 3 : 42 : 15 : 0.18
+T: 0 3 : 42 : 12 : 0.06
+T: 0 3 : 42 : 33 : 0.03
+T: 0 3 : 42 : 16 : 0.36
+T: 0 3 : 42 : 30 : 0.01
+T: 0 3 : 42 : 51 : 0.03
+T: 0 3 : 42 : 34 : 0.06
+T: 0 3 : 43 : 69 : 0.01
+T: 0 3 : 43 : 67 : 0.01
+T: 0 3 : 43 : 70 : 0.02
+T: 0 3 : 43 : 33 : 0.01
+T: 0 3 : 43 : 31 : 0.01
+T: 0 3 : 43 : 17 : 0.36
+T: 0 3 : 43 : 71 : 0.06
+T: 0 3 : 43 : 34 : 0.02
+T: 0 3 : 43 : 51 : 0.01
+T: 0 3 : 43 : 13 : 0.06
+T: 0 3 : 43 : 49 : 0.01
+T: 0 3 : 43 : 35 : 0.06
+T: 0 3 : 43 : 15 : 0.06
+T: 0 3 : 43 : 52 : 0.02
+T: 0 3 : 43 : 40 : 0.01
+T: 0 3 : 43 : 42 : 0.01
+T: 0 3 : 43 : 43 : 0.02
+T: 0 3 : 43 : 44 : 0.06
+T: 0 3 : 43 : 16 : 0.12
+T: 0 3 : 43 : 53 : 0.06
+T: 0 3 : 44 : 71 : 0.08
+T: 0 3 : 44 : 70 : 0.01
+T: 0 3 : 44 : 53 : 0.08
+T: 0 3 : 44 : 44 : 0.08
+T: 0 3 : 44 : 43 : 0.01
+T: 0 3 : 44 : 41 : 0.01
+T: 0 3 : 44 : 50 : 0.01
+T: 0 3 : 44 : 16 : 0.06
+T: 0 3 : 44 : 14 : 0.06
+T: 0 3 : 44 : 52 : 0.01
+T: 0 3 : 44 : 35 : 0.08
+T: 0 3 : 44 : 32 : 0.01
+T: 0 3 : 44 : 68 : 0.01
+T: 0 3 : 44 : 17 : 0.48
+T: 0 3 : 44 : 34 : 0.01
+T: 0 3 : 45 : 75 : 0.01
+T: 0 3 : 45 : 48 : 0.02
+T: 0 3 : 45 : 46 : 0.12
+T: 0 3 : 45 : 45 : 0.06
+T: 0 3 : 45 : 18 : 0.18
+T: 0 3 : 45 : 73 : 0.06
+T: 0 3 : 45 : 39 : 0.01
+T: 0 3 : 45 : 72 : 0.03
+T: 0 3 : 45 : 21 : 0.06
+T: 0 3 : 45 : 19 : 0.36
+T: 0 3 : 45 : 36 : 0.03
+T: 0 3 : 45 : 37 : 0.06
+T: 0 3 : 46 : 76 : 0.01
+T: 0 3 : 46 : 49 : 0.02
+T: 0 3 : 46 : 47 : 0.12
+T: 0 3 : 46 : 46 : 0.04
+T: 0 3 : 46 : 45 : 0.02
+T: 0 3 : 46 : 74 : 0.06
+T: 0 3 : 46 : 40 : 0.01
+T: 0 3 : 46 : 72 : 0.01
+T: 0 3 : 46 : 38 : 0.06
+T: 0 3 : 46 : 18 : 0.06
+T: 0 3 : 46 : 73 : 0.02
+T: 0 3 : 46 : 22 : 0.06
+T: 0 3 : 46 : 19 : 0.12
+T: 0 3 : 46 : 36 : 0.01
+T: 0 3 : 46 : 20 : 0.36
+T: 0 3 : 46 : 37 : 0.02
+T: 0 3 : 47 : 77 : 0.01
+T: 0 3 : 47 : 73 : 0.01
+T: 0 3 : 47 : 50 : 0.02
+T: 0 3 : 47 : 47 : 0.16
+T: 0 3 : 47 : 46 : 0.02
+T: 0 3 : 47 : 41 : 0.01
+T: 0 3 : 47 : 19 : 0.06
+T: 0 3 : 47 : 74 : 0.08
+T: 0 3 : 47 : 23 : 0.06
+T: 0 3 : 47 : 20 : 0.48
+T: 0 3 : 47 : 37 : 0.01
+T: 0 3 : 47 : 38 : 0.08
+T: 0 3 : 48 : 78 : 0.01
+T: 0 3 : 48 : 51 : 0.02
+T: 0 3 : 48 : 49 : 0.12
+T: 0 3 : 48 : 48 : 0.04
+T: 0 3 : 48 : 45 : 0.02
+T: 0 3 : 48 : 76 : 0.06
+T: 0 3 : 48 : 42 : 0.01
+T: 0 3 : 48 : 40 : 0.06
+T: 0 3 : 48 : 72 : 0.01
+T: 0 3 : 48 : 21 : 0.12
+T: 0 3 : 48 : 18 : 0.06
+T: 0 3 : 48 : 39 : 0.02
+T: 0 3 : 48 : 22 : 0.36
+T: 0 3 : 48 : 36 : 0.01
+T: 0 3 : 48 : 75 : 0.02
+T: 0 3 : 48 : 24 : 0.06
+T: 0 3 : 49 : 79 : 0.01
+T: 0 3 : 49 : 75 : 0.01
+T: 0 3 : 49 : 25 : 0.06
+T: 0 3 : 49 : 37 : 0.01
+T: 0 3 : 49 : 23 : 0.36
+T: 0 3 : 49 : 77 : 0.06
+T: 0 3 : 49 : 40 : 0.01
+T: 0 3 : 49 : 22 : 0.06
+T: 0 3 : 49 : 76 : 0.01
+T: 0 3 : 49 : 39 : 0.01
+T: 0 3 : 49 : 73 : 0.01
+T: 0 3 : 49 : 19 : 0.06
+T: 0 3 : 49 : 21 : 0.06
+T: 0 3 : 49 : 41 : 0.06
+T: 0 3 : 49 : 43 : 0.01
+T: 0 3 : 49 : 46 : 0.02
+T: 0 3 : 49 : 48 : 0.02
+T: 0 3 : 49 : 49 : 0.02
+T: 0 3 : 49 : 50 : 0.12
+T: 0 3 : 49 : 52 : 0.02
+T: 0 3 : 50 : 80 : 0.01
+T: 0 3 : 50 : 76 : 0.01
+T: 0 3 : 50 : 53 : 0.02
+T: 0 3 : 50 : 50 : 0.14
+T: 0 3 : 50 : 49 : 0.02
+T: 0 3 : 50 : 47 : 0.02
+T: 0 3 : 50 : 44 : 0.01
+T: 0 3 : 50 : 41 : 0.07
+T: 0 3 : 50 : 22 : 0.06
+T: 0 3 : 50 : 20 : 0.06
+T: 0 3 : 50 : 77 : 0.07
+T: 0 3 : 50 : 26 : 0.06
+T: 0 3 : 50 : 74 : 0.01
+T: 0 3 : 50 : 23 : 0.42
+T: 0 3 : 50 : 40 : 0.01
+T: 0 3 : 50 : 38 : 0.01
+T: 0 3 : 51 : 79 : 0.06
+T: 0 3 : 51 : 78 : 0.03
+T: 0 3 : 51 : 52 : 0.12
+T: 0 3 : 51 : 51 : 0.06
+T: 0 3 : 51 : 48 : 0.02
+T: 0 3 : 51 : 75 : 0.01
+T: 0 3 : 51 : 24 : 0.18
+T: 0 3 : 51 : 21 : 0.06
+T: 0 3 : 51 : 42 : 0.03
+T: 0 3 : 51 : 25 : 0.36
+T: 0 3 : 51 : 39 : 0.01
+T: 0 3 : 51 : 43 : 0.06
+T: 0 3 : 52 : 80 : 0.06
+T: 0 3 : 52 : 79 : 0.02
+T: 0 3 : 52 : 53 : 0.12
+T: 0 3 : 52 : 52 : 0.04
+T: 0 3 : 52 : 51 : 0.02
+T: 0 3 : 52 : 49 : 0.02
+T: 0 3 : 52 : 78 : 0.01
+T: 0 3 : 52 : 44 : 0.06
+T: 0 3 : 52 : 24 : 0.06
+T: 0 3 : 52 : 22 : 0.06
+T: 0 3 : 52 : 43 : 0.02
+T: 0 3 : 52 : 26 : 0.36
+T: 0 3 : 52 : 40 : 0.01
+T: 0 3 : 52 : 76 : 0.01
+T: 0 3 : 52 : 25 : 0.12
+T: 0 3 : 52 : 42 : 0.01
+T: 0 3 : 53 : 80 : 0.08
+T: 0 3 : 53 : 79 : 0.01
+T: 0 3 : 53 : 53 : 0.16
+T: 0 3 : 53 : 52 : 0.02
+T: 0 3 : 53 : 50 : 0.02
+T: 0 3 : 53 : 25 : 0.06
+T: 0 3 : 53 : 23 : 0.06
+T: 0 3 : 53 : 44 : 0.08
+T: 0 3 : 53 : 41 : 0.01
+T: 0 3 : 53 : 77 : 0.01
+T: 0 3 : 53 : 26 : 0.48
+T: 0 3 : 53 : 43 : 0.01
+T: 0 3 : 54 : 66 : 0.01
+T: 0 3 : 54 : 63 : 0.03
+T: 0 3 : 54 : 28 : 0.36
+T: 0 3 : 54 : 27 : 0.18
+T: 0 3 : 54 : 55 : 0.18
+T: 0 3 : 54 : 64 : 0.06
+T: 0 3 : 54 : 30 : 0.06
+T: 0 3 : 54 : 54 : 0.09
+T: 0 3 : 54 : 57 : 0.03
+T: 0 3 : 55 : 67 : 0.01
+T: 0 3 : 55 : 64 : 0.02
+T: 0 3 : 55 : 58 : 0.03
+T: 0 3 : 55 : 56 : 0.18
+T: 0 3 : 55 : 28 : 0.12
+T: 0 3 : 55 : 27 : 0.06
+T: 0 3 : 55 : 55 : 0.06
+T: 0 3 : 55 : 63 : 0.01
+T: 0 3 : 55 : 29 : 0.36
+T: 0 3 : 55 : 65 : 0.06
+T: 0 3 : 55 : 31 : 0.06
+T: 0 3 : 55 : 54 : 0.03
+T: 0 3 : 56 : 68 : 0.01
+T: 0 3 : 56 : 65 : 0.08
+T: 0 3 : 56 : 64 : 0.01
+T: 0 3 : 56 : 29 : 0.48
+T: 0 3 : 56 : 28 : 0.06
+T: 0 3 : 56 : 56 : 0.24
+T: 0 3 : 56 : 32 : 0.06
+T: 0 3 : 56 : 55 : 0.03
+T: 0 3 : 56 : 59 : 0.03
+T: 0 3 : 57 : 69 : 0.01
+T: 0 3 : 57 : 66 : 0.02
+T: 0 3 : 57 : 63 : 0.01
+T: 0 3 : 57 : 60 : 0.03
+T: 0 3 : 57 : 58 : 0.18
+T: 0 3 : 57 : 30 : 0.12
+T: 0 3 : 57 : 27 : 0.06
+T: 0 3 : 57 : 31 : 0.36
+T: 0 3 : 57 : 67 : 0.06
+T: 0 3 : 57 : 33 : 0.06
+T: 0 3 : 57 : 54 : 0.03
+T: 0 3 : 57 : 57 : 0.06
+T: 0 3 : 58 : 70 : 0.01
+T: 0 3 : 58 : 67 : 0.01
+T: 0 3 : 58 : 61 : 0.03
+T: 0 3 : 58 : 59 : 0.18
+T: 0 3 : 58 : 58 : 0.03
+T: 0 3 : 58 : 57 : 0.03
+T: 0 3 : 58 : 64 : 0.01
+T: 0 3 : 58 : 30 : 0.06
+T: 0 3 : 58 : 28 : 0.06
+T: 0 3 : 58 : 31 : 0.06
+T: 0 3 : 58 : 66 : 0.01
+T: 0 3 : 58 : 32 : 0.36
+T: 0 3 : 58 : 68 : 0.06
+T: 0 3 : 58 : 34 : 0.06
+T: 0 3 : 58 : 55 : 0.03
+T: 0 3 : 59 : 71 : 0.01
+T: 0 3 : 59 : 68 : 0.07
+T: 0 3 : 59 : 67 : 0.01
+T: 0 3 : 59 : 62 : 0.03
+T: 0 3 : 59 : 59 : 0.21
+T: 0 3 : 59 : 65 : 0.01
+T: 0 3 : 59 : 31 : 0.06
+T: 0 3 : 59 : 29 : 0.06
+T: 0 3 : 59 : 32 : 0.42
+T: 0 3 : 59 : 35 : 0.06
+T: 0 3 : 59 : 56 : 0.03
+T: 0 3 : 59 : 58 : 0.03
+T: 0 3 : 60 : 70 : 0.06
+T: 0 3 : 60 : 69 : 0.03
+T: 0 3 : 60 : 66 : 0.01
+T: 0 3 : 60 : 33 : 0.18
+T: 0 3 : 60 : 61 : 0.18
+T: 0 3 : 60 : 30 : 0.06
+T: 0 3 : 60 : 34 : 0.36
+T: 0 3 : 60 : 57 : 0.03
+T: 0 3 : 60 : 60 : 0.09
+T: 0 3 : 61 : 71 : 0.06
+T: 0 3 : 61 : 70 : 0.02
+T: 0 3 : 61 : 62 : 0.18
+T: 0 3 : 61 : 61 : 0.06
+T: 0 3 : 61 : 67 : 0.01
+T: 0 3 : 61 : 33 : 0.06
+T: 0 3 : 61 : 31 : 0.06
+T: 0 3 : 61 : 34 : 0.12
+T: 0 3 : 61 : 69 : 0.01
+T: 0 3 : 61 : 35 : 0.36
+T: 0 3 : 61 : 58 : 0.03
+T: 0 3 : 61 : 60 : 0.03
+T: 0 3 : 62 : 71 : 0.08
+T: 0 3 : 62 : 70 : 0.01
+T: 0 3 : 62 : 68 : 0.01
+T: 0 3 : 62 : 34 : 0.06
+T: 0 3 : 62 : 62 : 0.24
+T: 0 3 : 62 : 32 : 0.06
+T: 0 3 : 62 : 35 : 0.48
+T: 0 3 : 62 : 59 : 0.03
+T: 0 3 : 62 : 61 : 0.03
+T: 0 3 : 63 : 75 : 0.01
+T: 0 3 : 63 : 66 : 0.02
+T: 0 3 : 63 : 64 : 0.12
+T: 0 3 : 63 : 63 : 0.06
+T: 0 3 : 63 : 36 : 0.18
+T: 0 3 : 63 : 57 : 0.01
+T: 0 3 : 63 : 73 : 0.06
+T: 0 3 : 63 : 39 : 0.06
+T: 0 3 : 63 : 37 : 0.36
+T: 0 3 : 63 : 54 : 0.03
+T: 0 3 : 63 : 72 : 0.03
+T: 0 3 : 63 : 55 : 0.06
+T: 0 3 : 64 : 76 : 0.01
+T: 0 3 : 64 : 67 : 0.02
+T: 0 3 : 64 : 65 : 0.12
+T: 0 3 : 64 : 64 : 0.04
+T: 0 3 : 64 : 63 : 0.02
+T: 0 3 : 64 : 58 : 0.01
+T: 0 3 : 64 : 73 : 0.02
+T: 0 3 : 64 : 56 : 0.06
+T: 0 3 : 64 : 36 : 0.06
+T: 0 3 : 64 : 74 : 0.06
+T: 0 3 : 64 : 40 : 0.06
+T: 0 3 : 64 : 37 : 0.12
+T: 0 3 : 64 : 54 : 0.01
+T: 0 3 : 64 : 72 : 0.01
+T: 0 3 : 64 : 38 : 0.36
+T: 0 3 : 64 : 55 : 0.02
+T: 0 3 : 65 : 77 : 0.01
+T: 0 3 : 65 : 74 : 0.08
+T: 0 3 : 65 : 68 : 0.02
+T: 0 3 : 65 : 65 : 0.16
+T: 0 3 : 65 : 64 : 0.02
+T: 0 3 : 65 : 59 : 0.01
+T: 0 3 : 65 : 37 : 0.06
+T: 0 3 : 65 : 41 : 0.06
+T: 0 3 : 65 : 38 : 0.48
+T: 0 3 : 65 : 55 : 0.01
+T: 0 3 : 65 : 73 : 0.01
+T: 0 3 : 65 : 56 : 0.08
+T: 0 3 : 66 : 78 : 0.01
+T: 0 3 : 66 : 72 : 0.01
+T: 0 3 : 66 : 69 : 0.02
+T: 0 3 : 66 : 67 : 0.12
+T: 0 3 : 66 : 66 : 0.04
+T: 0 3 : 66 : 63 : 0.02
+T: 0 3 : 66 : 60 : 0.01
+T: 0 3 : 66 : 75 : 0.02
+T: 0 3 : 66 : 58 : 0.06
+T: 0 3 : 66 : 39 : 0.12
+T: 0 3 : 66 : 36 : 0.06
+T: 0 3 : 66 : 57 : 0.02
+T: 0 3 : 66 : 40 : 0.36
+T: 0 3 : 66 : 54 : 0.01
+T: 0 3 : 66 : 76 : 0.06
+T: 0 3 : 66 : 42 : 0.06
+T: 0 3 : 67 : 79 : 0.01
+T: 0 3 : 67 : 75 : 0.01
+T: 0 3 : 67 : 43 : 0.06
+T: 0 3 : 67 : 55 : 0.01
+T: 0 3 : 67 : 41 : 0.36
+T: 0 3 : 67 : 58 : 0.01
+T: 0 3 : 67 : 77 : 0.06
+T: 0 3 : 67 : 40 : 0.06
+T: 0 3 : 67 : 57 : 0.01
+T: 0 3 : 67 : 37 : 0.06
+T: 0 3 : 67 : 76 : 0.01
+T: 0 3 : 67 : 39 : 0.06
+T: 0 3 : 67 : 73 : 0.01
+T: 0 3 : 67 : 59 : 0.06
+T: 0 3 : 67 : 61 : 0.01
+T: 0 3 : 67 : 64 : 0.02
+T: 0 3 : 67 : 66 : 0.02
+T: 0 3 : 67 : 67 : 0.02
+T: 0 3 : 67 : 68 : 0.12
+T: 0 3 : 67 : 70 : 0.02
+T: 0 3 : 68 : 80 : 0.01
+T: 0 3 : 68 : 77 : 0.07
+T: 0 3 : 68 : 71 : 0.02
+T: 0 3 : 68 : 68 : 0.14
+T: 0 3 : 68 : 67 : 0.02
+T: 0 3 : 68 : 65 : 0.02
+T: 0 3 : 68 : 62 : 0.01
+T: 0 3 : 68 : 76 : 0.01
+T: 0 3 : 68 : 59 : 0.07
+T: 0 3 : 68 : 74 : 0.01
+T: 0 3 : 68 : 40 : 0.06
+T: 0 3 : 68 : 38 : 0.06
+T: 0 3 : 68 : 44 : 0.06
+T: 0 3 : 68 : 41 : 0.42
+T: 0 3 : 68 : 58 : 0.01
+T: 0 3 : 68 : 56 : 0.01
+T: 0 3 : 69 : 79 : 0.06
+T: 0 3 : 69 : 75 : 0.01
+T: 0 3 : 69 : 70 : 0.12
+T: 0 3 : 69 : 69 : 0.06
+T: 0 3 : 69 : 66 : 0.02
+T: 0 3 : 69 : 42 : 0.18
+T: 0 3 : 69 : 39 : 0.06
+T: 0 3 : 69 : 60 : 0.03
+T: 0 3 : 69 : 43 : 0.36
+T: 0 3 : 69 : 57 : 0.01
+T: 0 3 : 69 : 78 : 0.03
+T: 0 3 : 69 : 61 : 0.06
+T: 0 3 : 70 : 80 : 0.06
+T: 0 3 : 70 : 71 : 0.12
+T: 0 3 : 70 : 70 : 0.04
+T: 0 3 : 70 : 69 : 0.02
+T: 0 3 : 70 : 67 : 0.02
+T: 0 3 : 70 : 79 : 0.02
+T: 0 3 : 70 : 62 : 0.06
+T: 0 3 : 70 : 76 : 0.01
+T: 0 3 : 70 : 42 : 0.06
+T: 0 3 : 70 : 40 : 0.06
+T: 0 3 : 70 : 78 : 0.01
+T: 0 3 : 70 : 61 : 0.02
+T: 0 3 : 70 : 44 : 0.36
+T: 0 3 : 70 : 58 : 0.01
+T: 0 3 : 70 : 43 : 0.12
+T: 0 3 : 70 : 60 : 0.01
+T: 0 3 : 71 : 80 : 0.08
+T: 0 3 : 71 : 71 : 0.16
+T: 0 3 : 71 : 70 : 0.02
+T: 0 3 : 71 : 68 : 0.02
+T: 0 3 : 71 : 77 : 0.01
+T: 0 3 : 71 : 43 : 0.06
+T: 0 3 : 71 : 41 : 0.06
+T: 0 3 : 71 : 79 : 0.01
+T: 0 3 : 71 : 62 : 0.08
+T: 0 3 : 71 : 59 : 0.01
+T: 0 3 : 71 : 44 : 0.48
+T: 0 3 : 71 : 61 : 0.01
+T: 0 3 : 72 : 75 : 0.03
+T: 0 3 : 72 : 73 : 0.18
+T: 0 3 : 72 : 72 : 0.09
+T: 0 3 : 72 : 45 : 0.18
+T: 0 3 : 72 : 66 : 0.01
+T: 0 3 : 72 : 48 : 0.06
+T: 0 3 : 72 : 46 : 0.36
+T: 0 3 : 72 : 63 : 0.03
+T: 0 3 : 72 : 64 : 0.06
+T: 0 3 : 73 : 76 : 0.03
+T: 0 3 : 73 : 74 : 0.18
+T: 0 3 : 73 : 73 : 0.06
+T: 0 3 : 73 : 72 : 0.03
+T: 0 3 : 73 : 67 : 0.01
+T: 0 3 : 73 : 65 : 0.06
+T: 0 3 : 73 : 45 : 0.06
+T: 0 3 : 73 : 49 : 0.06
+T: 0 3 : 73 : 46 : 0.12
+T: 0 3 : 73 : 63 : 0.01
+T: 0 3 : 73 : 47 : 0.36
+T: 0 3 : 73 : 64 : 0.02
+T: 0 3 : 74 : 77 : 0.03
+T: 0 3 : 74 : 74 : 0.24
+T: 0 3 : 74 : 73 : 0.03
+T: 0 3 : 74 : 68 : 0.01
+T: 0 3 : 74 : 46 : 0.06
+T: 0 3 : 74 : 50 : 0.06
+T: 0 3 : 74 : 47 : 0.48
+T: 0 3 : 74 : 64 : 0.01
+T: 0 3 : 74 : 65 : 0.08
+T: 0 3 : 75 : 78 : 0.03
+T: 0 3 : 75 : 76 : 0.18
+T: 0 3 : 75 : 75 : 0.06
+T: 0 3 : 75 : 72 : 0.03
+T: 0 3 : 75 : 69 : 0.01
+T: 0 3 : 75 : 67 : 0.06
+T: 0 3 : 75 : 48 : 0.12
+T: 0 3 : 75 : 45 : 0.06
+T: 0 3 : 75 : 66 : 0.02
+T: 0 3 : 75 : 49 : 0.36
+T: 0 3 : 75 : 63 : 0.01
+T: 0 3 : 75 : 51 : 0.06
+T: 0 3 : 76 : 79 : 0.03
+T: 0 3 : 76 : 77 : 0.18
+T: 0 3 : 76 : 76 : 0.03
+T: 0 3 : 76 : 75 : 0.03
+T: 0 3 : 76 : 73 : 0.03
+T: 0 3 : 76 : 70 : 0.01
+T: 0 3 : 76 : 68 : 0.06
+T: 0 3 : 76 : 48 : 0.06
+T: 0 3 : 76 : 46 : 0.06
+T: 0 3 : 76 : 66 : 0.01
+T: 0 3 : 76 : 49 : 0.06
+T: 0 3 : 76 : 67 : 0.01
+T: 0 3 : 76 : 50 : 0.36
+T: 0 3 : 76 : 64 : 0.01
+T: 0 3 : 76 : 52 : 0.06
+T: 0 3 : 77 : 80 : 0.03
+T: 0 3 : 77 : 77 : 0.21
+T: 0 3 : 77 : 76 : 0.03
+T: 0 3 : 77 : 74 : 0.03
+T: 0 3 : 77 : 71 : 0.01
+T: 0 3 : 77 : 68 : 0.07
+T: 0 3 : 77 : 49 : 0.06
+T: 0 3 : 77 : 47 : 0.06
+T: 0 3 : 77 : 53 : 0.06
+T: 0 3 : 77 : 50 : 0.42
+T: 0 3 : 77 : 67 : 0.01
+T: 0 3 : 77 : 65 : 0.01
+T: 0 2 : 80 : 80 : 0.09
+T: 0 2 : 80 : 79 : 0.18
+T: 0 2 : 80 : 77 : 0.03
+T: 0 2 : 80 : 52 : 0.36
+T: 0 2 : 80 : 50 : 0.06
+T: 0 2 : 80 : 71 : 0.03
+T: 0 2 : 80 : 68 : 0.01
+T: 0 2 : 80 : 53 : 0.18
+T: 0 2 : 80 : 70 : 0.06
+T: 0 2 : 79 : 80 : 0.03
+T: 0 2 : 79 : 79 : 0.06
+T: 0 2 : 79 : 78 : 0.18
+T: 0 2 : 79 : 76 : 0.03
+T: 0 2 : 79 : 71 : 0.01
+T: 0 2 : 79 : 51 : 0.36
+T: 0 2 : 79 : 49 : 0.06
+T: 0 2 : 79 : 70 : 0.02
+T: 0 2 : 79 : 53 : 0.06
+T: 0 2 : 79 : 67 : 0.01
+T: 0 2 : 79 : 52 : 0.12
+T: 0 2 : 79 : 69 : 0.06
+T: 0 2 : 78 : 79 : 0.03
+T: 0 2 : 78 : 78 : 0.24
+T: 0 2 : 78 : 75 : 0.03
+T: 0 2 : 78 : 51 : 0.48
+T: 0 2 : 78 : 48 : 0.06
+T: 0 2 : 78 : 69 : 0.08
+T: 0 2 : 78 : 52 : 0.06
+T: 0 2 : 78 : 66 : 0.01
+T: 0 2 : 78 : 70 : 0.01
+T: 0 2 : 35 : 62 : 0.03
+T: 0 2 : 35 : 61 : 0.06
+T: 0 2 : 35 : 44 : 0.03
+T: 0 2 : 35 : 43 : 0.06
+T: 0 2 : 35 : 41 : 0.01
+T: 0 2 : 35 : 7 : 0.36
+T: 0 2 : 35 : 35 : 0.06
+T: 0 2 : 35 : 5 : 0.06
+T: 0 2 : 35 : 59 : 0.01
+T: 0 2 : 35 : 8 : 0.18
+T: 0 2 : 35 : 32 : 0.02
+T: 0 2 : 35 : 34 : 0.12
+T: 0 2 : 34 : 62 : 0.01
+T: 0 2 : 34 : 61 : 0.02
+T: 0 2 : 34 : 44 : 0.01
+T: 0 2 : 34 : 60 : 0.06
+T: 0 2 : 34 : 43 : 0.02
+T: 0 2 : 34 : 35 : 0.02
+T: 0 2 : 34 : 34 : 0.04
+T: 0 2 : 34 : 40 : 0.01
+T: 0 2 : 34 : 6 : 0.36
+T: 0 2 : 34 : 4 : 0.06
+T: 0 2 : 34 : 58 : 0.01
+T: 0 2 : 34 : 7 : 0.12
+T: 0 2 : 34 : 42 : 0.06
+T: 0 2 : 34 : 8 : 0.06
+T: 0 2 : 34 : 31 : 0.02
+T: 0 2 : 34 : 33 : 0.12
+T: 0 2 : 33 : 61 : 0.01
+T: 0 2 : 33 : 60 : 0.08
+T: 0 2 : 33 : 43 : 0.01
+T: 0 2 : 33 : 42 : 0.08
+T: 0 2 : 33 : 39 : 0.01
+T: 0 2 : 33 : 57 : 0.01
+T: 0 2 : 33 : 6 : 0.48
+T: 0 2 : 33 : 34 : 0.02
+T: 0 2 : 33 : 3 : 0.06
+T: 0 2 : 33 : 7 : 0.06
+T: 0 2 : 33 : 30 : 0.02
+T: 0 2 : 33 : 33 : 0.16
+T: 0 2 : 32 : 62 : 0.01
+T: 0 2 : 32 : 44 : 0.01
+T: 0 2 : 32 : 58 : 0.06
+T: 0 2 : 32 : 41 : 0.02
+T: 0 2 : 32 : 40 : 0.06
+T: 0 2 : 32 : 35 : 0.02
+T: 0 2 : 32 : 32 : 0.04
+T: 0 2 : 32 : 38 : 0.01
+T: 0 2 : 32 : 4 : 0.36
+T: 0 2 : 32 : 2 : 0.06
+T: 0 2 : 32 : 56 : 0.01
+T: 0 2 : 32 : 5 : 0.12
+T: 0 2 : 32 : 59 : 0.02
+T: 0 2 : 32 : 8 : 0.06
+T: 0 2 : 32 : 29 : 0.02
+T: 0 2 : 32 : 31 : 0.12
+T: 0 2 : 31 : 61 : 0.01
+T: 0 2 : 31 : 59 : 0.01
+T: 0 2 : 31 : 58 : 0.01
+T: 0 2 : 31 : 57 : 0.06
+T: 0 2 : 31 : 28 : 0.02
+T: 0 2 : 31 : 7 : 0.06
+T: 0 2 : 31 : 5 : 0.06
+T: 0 2 : 31 : 39 : 0.06
+T: 0 2 : 31 : 41 : 0.01
+T: 0 2 : 31 : 4 : 0.06
+T: 0 2 : 31 : 55 : 0.01
+T: 0 2 : 31 : 1 : 0.06
+T: 0 2 : 31 : 37 : 0.01
+T: 0 2 : 31 : 30 : 0.12
+T: 0 2 : 31 : 31 : 0.02
+T: 0 2 : 31 : 32 : 0.02
+T: 0 2 : 31 : 34 : 0.02
+T: 0 2 : 31 : 3 : 0.36
+T: 0 2 : 31 : 40 : 0.01
+T: 0 2 : 31 : 43 : 0.01
+T: 0 2 : 30 : 60 : 0.01
+T: 0 2 : 30 : 58 : 0.01
+T: 0 2 : 30 : 42 : 0.01
+T: 0 2 : 30 : 39 : 0.07
+T: 0 2 : 30 : 36 : 0.01
+T: 0 2 : 30 : 33 : 0.02
+T: 0 2 : 30 : 31 : 0.02
+T: 0 2 : 30 : 54 : 0.01
+T: 0 2 : 30 : 3 : 0.42
+T: 0 2 : 30 : 0 : 0.06
+T: 0 2 : 30 : 4 : 0.06
+T: 0 2 : 30 : 57 : 0.07
+T: 0 2 : 30 : 40 : 0.01
+T: 0 2 : 30 : 6 : 0.06
+T: 0 2 : 30 : 27 : 0.02
+T: 0 2 : 30 : 30 : 0.14
+T: 0 2 : 29 : 59 : 0.01
+T: 0 2 : 29 : 41 : 0.01
+T: 0 2 : 29 : 55 : 0.06
+T: 0 2 : 29 : 38 : 0.03
+T: 0 2 : 29 : 37 : 0.06
+T: 0 2 : 29 : 2 : 0.18
+T: 0 2 : 29 : 1 : 0.36
+T: 0 2 : 29 : 29 : 0.06
+T: 0 2 : 29 : 56 : 0.03
+T: 0 2 : 29 : 5 : 0.06
+T: 0 2 : 29 : 28 : 0.12
+T: 0 2 : 29 : 32 : 0.02
+T: 0 2 : 28 : 58 : 0.01
+T: 0 2 : 28 : 56 : 0.01
+T: 0 2 : 28 : 40 : 0.01
+T: 0 2 : 28 : 54 : 0.06
+T: 0 2 : 28 : 37 : 0.02
+T: 0 2 : 28 : 31 : 0.02
+T: 0 2 : 28 : 29 : 0.02
+T: 0 2 : 28 : 1 : 0.12
+T: 0 2 : 28 : 0 : 0.36
+T: 0 2 : 28 : 28 : 0.04
+T: 0 2 : 28 : 36 : 0.06
+T: 0 2 : 28 : 2 : 0.06
+T: 0 2 : 28 : 55 : 0.02
+T: 0 2 : 28 : 38 : 0.01
+T: 0 2 : 28 : 4 : 0.06
+T: 0 2 : 28 : 27 : 0.12
+T: 0 2 : 27 : 57 : 0.01
+T: 0 2 : 27 : 55 : 0.01
+T: 0 2 : 27 : 39 : 0.01
+T: 0 2 : 27 : 36 : 0.08
+T: 0 2 : 27 : 1 : 0.06
+T: 0 2 : 27 : 0 : 0.48
+T: 0 2 : 27 : 28 : 0.02
+T: 0 2 : 27 : 54 : 0.08
+T: 0 2 : 27 : 37 : 0.01
+T: 0 2 : 27 : 3 : 0.06
+T: 0 2 : 27 : 27 : 0.16
+T: 0 2 : 27 : 30 : 0.02
+T: 0 2 : 26 : 53 : 0.03
+T: 0 2 : 26 : 52 : 0.06
+T: 0 2 : 26 : 50 : 0.01
+T: 0 2 : 26 : 16 : 0.06
+T: 0 2 : 26 : 23 : 0.08
+T: 0 2 : 26 : 14 : 0.01
+T: 0 2 : 26 : 17 : 0.03
+T: 0 2 : 26 : 25 : 0.48
+T: 0 2 : 26 : 26 : 0.24
+T: 0 2 : 25 : 53 : 0.01
+T: 0 2 : 25 : 52 : 0.02
+T: 0 2 : 25 : 26 : 0.08
+T: 0 2 : 25 : 25 : 0.16
+T: 0 2 : 25 : 49 : 0.01
+T: 0 2 : 25 : 15 : 0.06
+T: 0 2 : 25 : 22 : 0.08
+T: 0 2 : 25 : 13 : 0.01
+T: 0 2 : 25 : 16 : 0.02
+T: 0 2 : 25 : 51 : 0.06
+T: 0 2 : 25 : 17 : 0.01
+T: 0 2 : 25 : 24 : 0.48
+T: 0 2 : 24 : 52 : 0.01
+T: 0 2 : 24 : 51 : 0.08
+T: 0 2 : 24 : 48 : 0.01
+T: 0 2 : 24 : 15 : 0.08
+T: 0 2 : 24 : 12 : 0.01
+T: 0 2 : 24 : 16 : 0.01
+T: 0 2 : 24 : 21 : 0.08
+T: 0 2 : 24 : 24 : 0.64
+T: 0 2 : 24 : 25 : 0.08
+T: 0 2 : 23 : 53 : 0.01
+T: 0 2 : 23 : 50 : 0.02
+T: 0 2 : 23 : 49 : 0.06
+T: 0 2 : 23 : 26 : 0.08
+T: 0 2 : 23 : 23 : 0.16
+T: 0 2 : 23 : 47 : 0.01
+T: 0 2 : 23 : 13 : 0.06
+T: 0 2 : 23 : 20 : 0.08
+T: 0 2 : 23 : 11 : 0.01
+T: 0 2 : 23 : 14 : 0.02
+T: 0 2 : 23 : 17 : 0.01
+T: 0 2 : 23 : 22 : 0.48
+T: 0 2 : 22 : 52 : 0.01
+T: 0 2 : 22 : 49 : 0.01
+T: 0 2 : 22 : 25 : 0.08
+T: 0 2 : 22 : 23 : 0.08
+T: 0 2 : 22 : 22 : 0.08
+T: 0 2 : 22 : 21 : 0.48
+T: 0 2 : 22 : 46 : 0.01
+T: 0 2 : 22 : 12 : 0.06
+T: 0 2 : 22 : 19 : 0.08
+T: 0 2 : 22 : 10 : 0.01
+T: 0 2 : 22 : 13 : 0.01
+T: 0 2 : 22 : 48 : 0.06
+T: 0 2 : 22 : 14 : 0.01
+T: 0 2 : 22 : 50 : 0.01
+T: 0 2 : 22 : 16 : 0.01
+T: 0 2 : 21 : 51 : 0.01
+T: 0 2 : 21 : 48 : 0.07
+T: 0 2 : 21 : 45 : 0.01
+T: 0 2 : 21 : 24 : 0.08
+T: 0 2 : 21 : 22 : 0.08
+T: 0 2 : 21 : 12 : 0.07
+T: 0 2 : 21 : 9 : 0.01
+T: 0 2 : 21 : 13 : 0.01
+T: 0 2 : 21 : 49 : 0.01
+T: 0 2 : 21 : 15 : 0.01
+T: 0 2 : 21 : 18 : 0.08
+T: 0 2 : 21 : 21 : 0.56
+T: 0 2 : 20 : 50 : 0.01
+T: 0 2 : 20 : 47 : 0.03
+T: 0 2 : 20 : 46 : 0.06
+T: 0 2 : 20 : 11 : 0.03
+T: 0 2 : 20 : 10 : 0.06
+T: 0 2 : 20 : 14 : 0.01
+T: 0 2 : 20 : 19 : 0.48
+T: 0 2 : 20 : 20 : 0.24
+T: 0 2 : 20 : 23 : 0.08
+T: 0 2 : 19 : 49 : 0.01
+T: 0 2 : 19 : 46 : 0.02
+T: 0 2 : 19 : 22 : 0.08
+T: 0 2 : 19 : 20 : 0.08
+T: 0 2 : 19 : 10 : 0.02
+T: 0 2 : 19 : 9 : 0.06
+T: 0 2 : 19 : 45 : 0.06
+T: 0 2 : 19 : 11 : 0.01
+T: 0 2 : 19 : 18 : 0.48
+T: 0 2 : 19 : 47 : 0.01
+T: 0 2 : 19 : 13 : 0.01
+T: 0 2 : 19 : 19 : 0.16
+T: 0 2 : 18 : 48 : 0.01
+T: 0 2 : 18 : 45 : 0.08
+T: 0 2 : 18 : 10 : 0.01
+T: 0 2 : 18 : 9 : 0.08
+T: 0 2 : 18 : 46 : 0.01
+T: 0 2 : 18 : 12 : 0.01
+T: 0 2 : 18 : 19 : 0.08
+T: 0 2 : 18 : 18 : 0.64
+T: 0 2 : 18 : 21 : 0.08
+T: 0 2 : 17 : 44 : 0.03
+T: 0 2 : 17 : 43 : 0.06
+T: 0 2 : 17 : 26 : 0.03
+T: 0 2 : 17 : 23 : 0.01
+T: 0 2 : 17 : 41 : 0.01
+T: 0 2 : 17 : 7 : 0.06
+T: 0 2 : 17 : 14 : 0.07
+T: 0 2 : 17 : 5 : 0.01
+T: 0 2 : 17 : 25 : 0.06
+T: 0 2 : 17 : 8 : 0.03
+T: 0 2 : 17 : 16 : 0.42
+T: 0 2 : 17 : 17 : 0.21
+T: 0 2 : 16 : 44 : 0.01
+T: 0 2 : 16 : 43 : 0.02
+T: 0 2 : 16 : 26 : 0.01
+T: 0 2 : 16 : 22 : 0.01
+T: 0 2 : 16 : 17 : 0.07
+T: 0 2 : 16 : 16 : 0.14
+T: 0 2 : 16 : 40 : 0.01
+T: 0 2 : 16 : 6 : 0.06
+T: 0 2 : 16 : 13 : 0.07
+T: 0 2 : 16 : 4 : 0.01
+T: 0 2 : 16 : 24 : 0.06
+T: 0 2 : 16 : 7 : 0.02
+T: 0 2 : 16 : 42 : 0.06
+T: 0 2 : 16 : 25 : 0.02
+T: 0 2 : 16 : 8 : 0.01
+T: 0 2 : 16 : 15 : 0.42
+T: 0 2 : 5 : 35 : 0.01
+T: 0 2 : 5 : 32 : 0.02
+T: 0 2 : 5 : 29 : 0.01
+T: 0 2 : 5 : 17 : 0.01
+T: 0 2 : 5 : 31 : 0.06
+T: 0 2 : 5 : 14 : 0.02
+T: 0 2 : 5 : 4 : 0.48
+T: 0 2 : 5 : 11 : 0.01
+T: 0 2 : 5 : 2 : 0.08
+T: 0 2 : 5 : 5 : 0.16
+T: 0 2 : 5 : 8 : 0.08
+T: 0 2 : 5 : 13 : 0.06
+T: 0 2 : 4 : 34 : 0.01
+T: 0 2 : 4 : 32 : 0.01
+T: 0 2 : 4 : 28 : 0.01
+T: 0 2 : 4 : 16 : 0.01
+T: 0 2 : 4 : 31 : 0.01
+T: 0 2 : 4 : 14 : 0.01
+T: 0 2 : 4 : 30 : 0.06
+T: 0 2 : 4 : 13 : 0.01
+T: 0 2 : 4 : 12 : 0.06
+T: 0 2 : 4 : 3 : 0.48
+T: 0 2 : 4 : 10 : 0.01
+T: 0 2 : 4 : 1 : 0.08
+T: 0 2 : 4 : 4 : 0.08
+T: 0 2 : 4 : 5 : 0.08
+T: 0 2 : 4 : 7 : 0.08
+T: 0 2 : 3 : 33 : 0.01
+T: 0 2 : 3 : 31 : 0.01
+T: 0 2 : 3 : 27 : 0.01
+T: 0 2 : 3 : 15 : 0.01
+T: 0 2 : 3 : 30 : 0.07
+T: 0 2 : 3 : 13 : 0.01
+T: 0 2 : 3 : 3 : 0.56
+T: 0 2 : 3 : 0 : 0.08
+T: 0 2 : 3 : 4 : 0.08
+T: 0 2 : 3 : 6 : 0.08
+T: 0 2 : 3 : 9 : 0.01
+T: 0 2 : 3 : 12 : 0.07
+T: 0 2 : 2 : 32 : 0.01
+T: 0 2 : 2 : 29 : 0.03
+T: 0 2 : 2 : 2 : 0.24
+T: 0 2 : 2 : 1 : 0.48
+T: 0 2 : 2 : 5 : 0.08
+T: 0 2 : 2 : 10 : 0.06
+T: 0 2 : 2 : 28 : 0.06
+T: 0 2 : 2 : 11 : 0.03
+T: 0 2 : 2 : 14 : 0.01
+T: 0 2 : 0 : 30 : 0.01
+T: 0 2 : 0 : 28 : 0.01
+T: 0 2 : 0 : 1 : 0.08
+T: 0 2 : 0 : 0 : 0.64
+T: 0 2 : 0 : 3 : 0.08
+T: 0 2 : 0 : 27 : 0.08
+T: 0 2 : 0 : 10 : 0.01
+T: 0 2 : 0 : 9 : 0.08
+T: 0 2 : 0 : 12 : 0.01
+T: 0 2 : 1 : 31 : 0.01
+T: 0 2 : 1 : 29 : 0.01
+T: 0 2 : 1 : 13 : 0.01
+T: 0 2 : 1 : 28 : 0.02
+T: 0 2 : 1 : 11 : 0.01
+T: 0 2 : 1 : 1 : 0.16
+T: 0 2 : 1 : 0 : 0.48
+T: 0 2 : 1 : 2 : 0.08
+T: 0 2 : 1 : 9 : 0.06
+T: 0 2 : 1 : 4 : 0.08
+T: 0 2 : 1 : 27 : 0.06
+T: 0 2 : 1 : 10 : 0.02
+T: 0 2 : 6 : 34 : 0.01
+T: 0 2 : 6 : 30 : 0.01
+T: 0 2 : 6 : 6 : 0.64
+T: 0 2 : 6 : 3 : 0.08
+T: 0 2 : 6 : 7 : 0.08
+T: 0 2 : 6 : 12 : 0.01
+T: 0 2 : 6 : 15 : 0.08
+T: 0 2 : 6 : 33 : 0.08
+T: 0 2 : 6 : 16 : 0.01
+T: 0 2 : 7 : 35 : 0.01
+T: 0 2 : 7 : 31 : 0.01
+T: 0 2 : 7 : 34 : 0.02
+T: 0 2 : 7 : 17 : 0.01
+T: 0 2 : 7 : 33 : 0.06
+T: 0 2 : 7 : 16 : 0.02
+T: 0 2 : 7 : 6 : 0.48
+T: 0 2 : 7 : 13 : 0.01
+T: 0 2 : 7 : 4 : 0.08
+T: 0 2 : 7 : 7 : 0.16
+T: 0 2 : 7 : 8 : 0.08
+T: 0 2 : 7 : 15 : 0.06
+T: 0 2 : 8 : 35 : 0.03
+T: 0 2 : 8 : 32 : 0.01
+T: 0 2 : 8 : 7 : 0.48
+T: 0 2 : 8 : 14 : 0.01
+T: 0 2 : 8 : 5 : 0.08
+T: 0 2 : 8 : 8 : 0.24
+T: 0 2 : 8 : 16 : 0.06
+T: 0 2 : 8 : 34 : 0.06
+T: 0 2 : 8 : 17 : 0.03
+T: 0 2 : 9 : 39 : 0.01
+T: 0 2 : 9 : 21 : 0.01
+T: 0 2 : 9 : 36 : 0.08
+T: 0 2 : 9 : 19 : 0.01
+T: 0 2 : 9 : 18 : 0.08
+T: 0 2 : 9 : 1 : 0.01
+T: 0 2 : 9 : 0 : 0.08
+T: 0 2 : 9 : 37 : 0.01
+T: 0 2 : 9 : 3 : 0.01
+T: 0 2 : 9 : 10 : 0.07
+T: 0 2 : 9 : 9 : 0.56
+T: 0 2 : 9 : 12 : 0.07
+T: 0 2 : 10 : 40 : 0.01
+T: 0 2 : 10 : 22 : 0.01
+T: 0 2 : 10 : 37 : 0.02
+T: 0 2 : 10 : 20 : 0.01
+T: 0 2 : 10 : 13 : 0.07
+T: 0 2 : 10 : 11 : 0.07
+T: 0 2 : 10 : 18 : 0.06
+T: 0 2 : 10 : 1 : 0.02
+T: 0 2 : 10 : 0 : 0.06
+T: 0 2 : 10 : 36 : 0.06
+T: 0 2 : 10 : 19 : 0.02
+T: 0 2 : 10 : 2 : 0.01
+T: 0 2 : 10 : 9 : 0.42
+T: 0 2 : 10 : 38 : 0.01
+T: 0 2 : 10 : 4 : 0.01
+T: 0 2 : 10 : 10 : 0.14
+T: 0 2 : 11 : 41 : 0.01
+T: 0 2 : 11 : 38 : 0.03
+T: 0 2 : 11 : 23 : 0.01
+T: 0 2 : 11 : 37 : 0.06
+T: 0 2 : 11 : 20 : 0.03
+T: 0 2 : 11 : 19 : 0.06
+T: 0 2 : 11 : 2 : 0.03
+T: 0 2 : 11 : 1 : 0.06
+T: 0 2 : 11 : 5 : 0.01
+T: 0 2 : 11 : 10 : 0.42
+T: 0 2 : 11 : 11 : 0.21
+T: 0 2 : 11 : 14 : 0.07
+T: 0 2 : 12 : 42 : 0.01
+T: 0 2 : 12 : 36 : 0.01
+T: 0 2 : 12 : 24 : 0.01
+T: 0 2 : 12 : 39 : 0.07
+T: 0 2 : 12 : 22 : 0.01
+T: 0 2 : 12 : 18 : 0.01
+T: 0 2 : 12 : 15 : 0.07
+T: 0 2 : 12 : 13 : 0.07
+T: 0 2 : 12 : 3 : 0.07
+T: 0 2 : 12 : 0 : 0.01
+T: 0 2 : 12 : 21 : 0.07
+T: 0 2 : 12 : 4 : 0.01
+T: 0 2 : 12 : 40 : 0.01
+T: 0 2 : 12 : 6 : 0.01
+T: 0 2 : 12 : 9 : 0.07
+T: 0 2 : 12 : 12 : 0.49
+T: 0 2 : 13 : 43 : 0.01
+T: 0 2 : 13 : 39 : 0.06
+T: 0 2 : 13 : 7 : 0.01
+T: 0 2 : 13 : 5 : 0.01
+T: 0 2 : 13 : 22 : 0.01
+T: 0 2 : 13 : 41 : 0.01
+T: 0 2 : 13 : 4 : 0.01
+T: 0 2 : 13 : 21 : 0.06
+T: 0 2 : 13 : 1 : 0.01
+T: 0 2 : 13 : 10 : 0.07
+T: 0 2 : 13 : 40 : 0.01
+T: 0 2 : 13 : 3 : 0.06
+T: 0 2 : 13 : 37 : 0.01
+T: 0 2 : 13 : 12 : 0.42
+T: 0 2 : 13 : 13 : 0.07
+T: 0 2 : 13 : 14 : 0.07
+T: 0 2 : 13 : 16 : 0.07
+T: 0 2 : 13 : 19 : 0.01
+T: 0 2 : 13 : 23 : 0.01
+T: 0 2 : 13 : 25 : 0.01
+T: 0 2 : 14 : 44 : 0.01
+T: 0 2 : 14 : 41 : 0.02
+T: 0 2 : 14 : 26 : 0.01
+T: 0 2 : 14 : 40 : 0.06
+T: 0 2 : 14 : 23 : 0.02
+T: 0 2 : 14 : 20 : 0.01
+T: 0 2 : 14 : 17 : 0.07
+T: 0 2 : 14 : 14 : 0.14
+T: 0 2 : 14 : 38 : 0.01
+T: 0 2 : 14 : 4 : 0.06
+T: 0 2 : 14 : 11 : 0.07
+T: 0 2 : 14 : 2 : 0.01
+T: 0 2 : 14 : 22 : 0.06
+T: 0 2 : 14 : 5 : 0.02
+T: 0 2 : 14 : 8 : 0.01
+T: 0 2 : 14 : 13 : 0.42
+T: 0 2 : 15 : 43 : 0.01
+T: 0 2 : 15 : 39 : 0.01
+T: 0 2 : 15 : 42 : 0.08
+T: 0 2 : 15 : 25 : 0.01
+T: 0 2 : 15 : 21 : 0.01
+T: 0 2 : 15 : 6 : 0.08
+T: 0 2 : 15 : 3 : 0.01
+T: 0 2 : 15 : 24 : 0.08
+T: 0 2 : 15 : 7 : 0.01
+T: 0 2 : 15 : 12 : 0.07
+T: 0 2 : 15 : 15 : 0.56
+T: 0 2 : 15 : 16 : 0.07
+T: 0 2 : 36 : 66 : 0.01
+T: 0 2 : 36 : 48 : 0.01
+T: 0 2 : 36 : 39 : 0.01
+T: 0 2 : 36 : 37 : 0.01
+T: 0 2 : 36 : 36 : 0.08
+T: 0 2 : 36 : 9 : 0.48
+T: 0 2 : 36 : 64 : 0.01
+T: 0 2 : 36 : 30 : 0.01
+T: 0 2 : 36 : 63 : 0.08
+T: 0 2 : 36 : 46 : 0.01
+T: 0 2 : 36 : 12 : 0.06
+T: 0 2 : 36 : 10 : 0.06
+T: 0 2 : 36 : 27 : 0.08
+T: 0 2 : 36 : 45 : 0.08
+T: 0 2 : 36 : 28 : 0.01
+T: 0 2 : 37 : 67 : 0.01
+T: 0 2 : 37 : 63 : 0.06
+T: 0 2 : 37 : 65 : 0.01
+T: 0 2 : 37 : 28 : 0.02
+T: 0 2 : 37 : 11 : 0.06
+T: 0 2 : 37 : 45 : 0.06
+T: 0 2 : 37 : 64 : 0.02
+T: 0 2 : 37 : 27 : 0.06
+T: 0 2 : 37 : 13 : 0.06
+T: 0 2 : 37 : 10 : 0.12
+T: 0 2 : 37 : 47 : 0.01
+T: 0 2 : 37 : 29 : 0.01
+T: 0 2 : 37 : 9 : 0.36
+T: 0 2 : 37 : 46 : 0.02
+T: 0 2 : 37 : 31 : 0.01
+T: 0 2 : 37 : 36 : 0.06
+T: 0 2 : 37 : 37 : 0.02
+T: 0 2 : 37 : 38 : 0.01
+T: 0 2 : 37 : 40 : 0.01
+T: 0 2 : 37 : 49 : 0.01
+T: 0 2 : 38 : 68 : 0.01
+T: 0 2 : 38 : 50 : 0.01
+T: 0 2 : 38 : 64 : 0.06
+T: 0 2 : 38 : 47 : 0.03
+T: 0 2 : 38 : 41 : 0.01
+T: 0 2 : 38 : 38 : 0.03
+T: 0 2 : 38 : 37 : 0.06
+T: 0 2 : 38 : 32 : 0.01
+T: 0 2 : 38 : 10 : 0.36
+T: 0 2 : 38 : 65 : 0.03
+T: 0 2 : 38 : 14 : 0.06
+T: 0 2 : 38 : 11 : 0.18
+T: 0 2 : 38 : 28 : 0.06
+T: 0 2 : 38 : 46 : 0.06
+T: 0 2 : 38 : 29 : 0.03
+T: 0 2 : 39 : 69 : 0.01
+T: 0 2 : 39 : 66 : 0.07
+T: 0 2 : 39 : 63 : 0.01
+T: 0 2 : 39 : 15 : 0.06
+T: 0 2 : 39 : 27 : 0.01
+T: 0 2 : 39 : 13 : 0.06
+T: 0 2 : 39 : 67 : 0.01
+T: 0 2 : 39 : 30 : 0.07
+T: 0 2 : 39 : 9 : 0.06
+T: 0 2 : 39 : 49 : 0.01
+T: 0 2 : 39 : 12 : 0.42
+T: 0 2 : 39 : 31 : 0.01
+T: 0 2 : 39 : 48 : 0.07
+T: 0 2 : 39 : 33 : 0.01
+T: 0 2 : 39 : 36 : 0.01
+T: 0 2 : 39 : 39 : 0.07
+T: 0 2 : 39 : 40 : 0.01
+T: 0 2 : 39 : 42 : 0.01
+T: 0 2 : 39 : 45 : 0.01
+T: 0 2 : 39 : 51 : 0.01
+T: 0 2 : 40 : 70 : 0.01
+T: 0 2 : 40 : 66 : 0.06
+T: 0 2 : 40 : 64 : 0.01
+T: 0 2 : 40 : 52 : 0.01
+T: 0 2 : 40 : 48 : 0.06
+T: 0 2 : 40 : 16 : 0.06
+T: 0 2 : 40 : 28 : 0.01
+T: 0 2 : 40 : 14 : 0.06
+T: 0 2 : 40 : 68 : 0.01
+T: 0 2 : 40 : 31 : 0.01
+T: 0 2 : 40 : 50 : 0.01
+T: 0 2 : 40 : 13 : 0.06
+T: 0 2 : 40 : 67 : 0.01
+T: 0 2 : 40 : 30 : 0.06
+T: 0 2 : 40 : 10 : 0.06
+T: 0 2 : 40 : 49 : 0.01
+T: 0 2 : 40 : 12 : 0.36
+T: 0 2 : 40 : 46 : 0.01
+T: 0 2 : 40 : 32 : 0.01
+T: 0 2 : 40 : 34 : 0.01
+T: 0 2 : 40 : 37 : 0.01
+T: 0 2 : 40 : 39 : 0.06
+T: 0 2 : 40 : 40 : 0.01
+T: 0 2 : 40 : 41 : 0.01
+T: 0 2 : 40 : 43 : 0.01
+T: 0 2 : 41 : 71 : 0.01
+T: 0 2 : 41 : 67 : 0.06
+T: 0 2 : 41 : 65 : 0.01
+T: 0 2 : 41 : 29 : 0.01
+T: 0 2 : 41 : 68 : 0.02
+T: 0 2 : 41 : 31 : 0.06
+T: 0 2 : 41 : 14 : 0.12
+T: 0 2 : 41 : 17 : 0.06
+T: 0 2 : 41 : 11 : 0.06
+T: 0 2 : 41 : 47 : 0.01
+T: 0 2 : 41 : 32 : 0.02
+T: 0 2 : 41 : 49 : 0.06
+T: 0 2 : 41 : 35 : 0.01
+T: 0 2 : 41 : 38 : 0.01
+T: 0 2 : 41 : 40 : 0.06
+T: 0 2 : 41 : 41 : 0.02
+T: 0 2 : 41 : 44 : 0.01
+T: 0 2 : 41 : 13 : 0.36
+T: 0 2 : 41 : 50 : 0.02
+T: 0 2 : 41 : 53 : 0.01
+T: 0 2 : 42 : 70 : 0.01
+T: 0 2 : 42 : 69 : 0.08
+T: 0 2 : 42 : 52 : 0.01
+T: 0 2 : 42 : 48 : 0.01
+T: 0 2 : 42 : 43 : 0.01
+T: 0 2 : 42 : 42 : 0.08
+T: 0 2 : 42 : 39 : 0.01
+T: 0 2 : 42 : 66 : 0.01
+T: 0 2 : 42 : 15 : 0.48
+T: 0 2 : 42 : 12 : 0.06
+T: 0 2 : 42 : 33 : 0.08
+T: 0 2 : 42 : 16 : 0.06
+T: 0 2 : 42 : 30 : 0.01
+T: 0 2 : 42 : 51 : 0.08
+T: 0 2 : 42 : 34 : 0.01
+T: 0 2 : 43 : 69 : 0.06
+T: 0 2 : 43 : 67 : 0.01
+T: 0 2 : 43 : 70 : 0.02
+T: 0 2 : 43 : 33 : 0.06
+T: 0 2 : 43 : 31 : 0.01
+T: 0 2 : 43 : 17 : 0.06
+T: 0 2 : 43 : 71 : 0.01
+T: 0 2 : 43 : 34 : 0.02
+T: 0 2 : 43 : 51 : 0.06
+T: 0 2 : 43 : 13 : 0.06
+T: 0 2 : 43 : 49 : 0.01
+T: 0 2 : 43 : 35 : 0.01
+T: 0 2 : 43 : 15 : 0.36
+T: 0 2 : 43 : 52 : 0.02
+T: 0 2 : 43 : 40 : 0.01
+T: 0 2 : 43 : 42 : 0.06
+T: 0 2 : 43 : 43 : 0.02
+T: 0 2 : 43 : 44 : 0.01
+T: 0 2 : 43 : 16 : 0.12
+T: 0 2 : 43 : 53 : 0.01
+T: 0 2 : 44 : 71 : 0.03
+T: 0 2 : 44 : 70 : 0.06
+T: 0 2 : 44 : 53 : 0.03
+T: 0 2 : 44 : 44 : 0.03
+T: 0 2 : 44 : 43 : 0.06
+T: 0 2 : 44 : 41 : 0.01
+T: 0 2 : 44 : 50 : 0.01
+T: 0 2 : 44 : 16 : 0.36
+T: 0 2 : 44 : 14 : 0.06
+T: 0 2 : 44 : 52 : 0.06
+T: 0 2 : 44 : 35 : 0.03
+T: 0 2 : 44 : 32 : 0.01
+T: 0 2 : 44 : 68 : 0.01
+T: 0 2 : 44 : 17 : 0.18
+T: 0 2 : 44 : 34 : 0.06
+T: 0 2 : 45 : 75 : 0.01
+T: 0 2 : 45 : 48 : 0.02
+T: 0 2 : 45 : 46 : 0.02
+T: 0 2 : 45 : 45 : 0.16
+T: 0 2 : 45 : 18 : 0.48
+T: 0 2 : 45 : 73 : 0.01
+T: 0 2 : 45 : 39 : 0.01
+T: 0 2 : 45 : 72 : 0.08
+T: 0 2 : 45 : 21 : 0.06
+T: 0 2 : 45 : 19 : 0.06
+T: 0 2 : 45 : 36 : 0.08
+T: 0 2 : 45 : 37 : 0.01
+T: 0 2 : 46 : 76 : 0.01
+T: 0 2 : 46 : 49 : 0.02
+T: 0 2 : 46 : 47 : 0.02
+T: 0 2 : 46 : 46 : 0.04
+T: 0 2 : 46 : 45 : 0.12
+T: 0 2 : 46 : 74 : 0.01
+T: 0 2 : 46 : 40 : 0.01
+T: 0 2 : 46 : 72 : 0.06
+T: 0 2 : 46 : 38 : 0.01
+T: 0 2 : 46 : 18 : 0.36
+T: 0 2 : 46 : 73 : 0.02
+T: 0 2 : 46 : 22 : 0.06
+T: 0 2 : 46 : 19 : 0.12
+T: 0 2 : 46 : 36 : 0.06
+T: 0 2 : 46 : 20 : 0.06
+T: 0 2 : 46 : 37 : 0.02
+T: 0 2 : 47 : 77 : 0.01
+T: 0 2 : 47 : 73 : 0.06
+T: 0 2 : 47 : 50 : 0.02
+T: 0 2 : 47 : 47 : 0.06
+T: 0 2 : 47 : 46 : 0.12
+T: 0 2 : 47 : 41 : 0.01
+T: 0 2 : 47 : 19 : 0.36
+T: 0 2 : 47 : 74 : 0.03
+T: 0 2 : 47 : 23 : 0.06
+T: 0 2 : 47 : 20 : 0.18
+T: 0 2 : 47 : 37 : 0.06
+T: 0 2 : 47 : 38 : 0.03
+T: 0 2 : 48 : 78 : 0.01
+T: 0 2 : 48 : 51 : 0.02
+T: 0 2 : 48 : 49 : 0.02
+T: 0 2 : 48 : 48 : 0.14
+T: 0 2 : 48 : 45 : 0.02
+T: 0 2 : 48 : 76 : 0.01
+T: 0 2 : 48 : 42 : 0.01
+T: 0 2 : 48 : 40 : 0.01
+T: 0 2 : 48 : 72 : 0.01
+T: 0 2 : 48 : 21 : 0.42
+T: 0 2 : 48 : 18 : 0.06
+T: 0 2 : 48 : 39 : 0.07
+T: 0 2 : 48 : 22 : 0.06
+T: 0 2 : 48 : 36 : 0.01
+T: 0 2 : 48 : 75 : 0.07
+T: 0 2 : 48 : 24 : 0.06
+T: 0 2 : 49 : 79 : 0.01
+T: 0 2 : 49 : 75 : 0.06
+T: 0 2 : 49 : 25 : 0.06
+T: 0 2 : 49 : 37 : 0.01
+T: 0 2 : 49 : 23 : 0.06
+T: 0 2 : 49 : 77 : 0.01
+T: 0 2 : 49 : 40 : 0.01
+T: 0 2 : 49 : 22 : 0.06
+T: 0 2 : 49 : 76 : 0.01
+T: 0 2 : 49 : 39 : 0.06
+T: 0 2 : 49 : 73 : 0.01
+T: 0 2 : 49 : 19 : 0.06
+T: 0 2 : 49 : 21 : 0.36
+T: 0 2 : 49 : 41 : 0.01
+T: 0 2 : 49 : 43 : 0.01
+T: 0 2 : 49 : 46 : 0.02
+T: 0 2 : 49 : 48 : 0.12
+T: 0 2 : 49 : 49 : 0.02
+T: 0 2 : 49 : 50 : 0.02
+T: 0 2 : 49 : 52 : 0.02
+T: 0 2 : 50 : 80 : 0.01
+T: 0 2 : 50 : 76 : 0.06
+T: 0 2 : 50 : 53 : 0.02
+T: 0 2 : 50 : 50 : 0.04
+T: 0 2 : 50 : 49 : 0.12
+T: 0 2 : 50 : 47 : 0.02
+T: 0 2 : 50 : 44 : 0.01
+T: 0 2 : 50 : 41 : 0.02
+T: 0 2 : 50 : 22 : 0.36
+T: 0 2 : 50 : 20 : 0.06
+T: 0 2 : 50 : 77 : 0.02
+T: 0 2 : 50 : 26 : 0.06
+T: 0 2 : 50 : 74 : 0.01
+T: 0 2 : 50 : 23 : 0.12
+T: 0 2 : 50 : 40 : 0.06
+T: 0 2 : 50 : 38 : 0.01
+T: 0 2 : 51 : 79 : 0.01
+T: 0 2 : 51 : 78 : 0.08
+T: 0 2 : 51 : 52 : 0.02
+T: 0 2 : 51 : 51 : 0.16
+T: 0 2 : 51 : 48 : 0.02
+T: 0 2 : 51 : 75 : 0.01
+T: 0 2 : 51 : 24 : 0.48
+T: 0 2 : 51 : 21 : 0.06
+T: 0 2 : 51 : 42 : 0.08
+T: 0 2 : 51 : 25 : 0.06
+T: 0 2 : 51 : 39 : 0.01
+T: 0 2 : 51 : 43 : 0.01
+T: 0 2 : 52 : 80 : 0.01
+T: 0 2 : 52 : 79 : 0.02
+T: 0 2 : 52 : 53 : 0.02
+T: 0 2 : 52 : 52 : 0.04
+T: 0 2 : 52 : 51 : 0.12
+T: 0 2 : 52 : 49 : 0.02
+T: 0 2 : 52 : 78 : 0.06
+T: 0 2 : 52 : 44 : 0.01
+T: 0 2 : 52 : 24 : 0.36
+T: 0 2 : 52 : 22 : 0.06
+T: 0 2 : 52 : 43 : 0.02
+T: 0 2 : 52 : 26 : 0.06
+T: 0 2 : 52 : 40 : 0.01
+T: 0 2 : 52 : 76 : 0.01
+T: 0 2 : 52 : 25 : 0.12
+T: 0 2 : 52 : 42 : 0.06
+T: 0 2 : 53 : 80 : 0.03
+T: 0 2 : 53 : 79 : 0.06
+T: 0 2 : 53 : 53 : 0.06
+T: 0 2 : 53 : 52 : 0.12
+T: 0 2 : 53 : 50 : 0.02
+T: 0 2 : 53 : 25 : 0.36
+T: 0 2 : 53 : 23 : 0.06
+T: 0 2 : 53 : 44 : 0.03
+T: 0 2 : 53 : 41 : 0.01
+T: 0 2 : 53 : 77 : 0.01
+T: 0 2 : 53 : 26 : 0.18
+T: 0 2 : 53 : 43 : 0.06
+T: 0 2 : 54 : 66 : 0.01
+T: 0 2 : 54 : 63 : 0.08
+T: 0 2 : 54 : 28 : 0.06
+T: 0 2 : 54 : 27 : 0.48
+T: 0 2 : 54 : 55 : 0.03
+T: 0 2 : 54 : 64 : 0.01
+T: 0 2 : 54 : 30 : 0.06
+T: 0 2 : 54 : 54 : 0.24
+T: 0 2 : 54 : 57 : 0.03
+T: 0 2 : 55 : 67 : 0.01
+T: 0 2 : 55 : 64 : 0.02
+T: 0 2 : 55 : 58 : 0.03
+T: 0 2 : 55 : 56 : 0.03
+T: 0 2 : 55 : 28 : 0.12
+T: 0 2 : 55 : 27 : 0.36
+T: 0 2 : 55 : 55 : 0.06
+T: 0 2 : 55 : 63 : 0.06
+T: 0 2 : 55 : 29 : 0.06
+T: 0 2 : 55 : 65 : 0.01
+T: 0 2 : 55 : 31 : 0.06
+T: 0 2 : 55 : 54 : 0.18
+T: 0 2 : 56 : 68 : 0.01
+T: 0 2 : 56 : 65 : 0.03
+T: 0 2 : 56 : 64 : 0.06
+T: 0 2 : 56 : 29 : 0.18
+T: 0 2 : 56 : 28 : 0.36
+T: 0 2 : 56 : 56 : 0.09
+T: 0 2 : 56 : 32 : 0.06
+T: 0 2 : 56 : 55 : 0.18
+T: 0 2 : 56 : 59 : 0.03
+T: 0 2 : 57 : 69 : 0.01
+T: 0 2 : 57 : 66 : 0.07
+T: 0 2 : 57 : 63 : 0.01
+T: 0 2 : 57 : 60 : 0.03
+T: 0 2 : 57 : 58 : 0.03
+T: 0 2 : 57 : 30 : 0.42
+T: 0 2 : 57 : 27 : 0.06
+T: 0 2 : 57 : 31 : 0.06
+T: 0 2 : 57 : 67 : 0.01
+T: 0 2 : 57 : 33 : 0.06
+T: 0 2 : 57 : 54 : 0.03
+T: 0 2 : 57 : 57 : 0.21
+T: 0 2 : 58 : 70 : 0.01
+T: 0 2 : 58 : 67 : 0.01
+T: 0 2 : 58 : 61 : 0.03
+T: 0 2 : 58 : 59 : 0.03
+T: 0 2 : 58 : 58 : 0.03
+T: 0 2 : 58 : 57 : 0.18
+T: 0 2 : 58 : 64 : 0.01
+T: 0 2 : 58 : 30 : 0.36
+T: 0 2 : 58 : 28 : 0.06
+T: 0 2 : 58 : 31 : 0.06
+T: 0 2 : 58 : 66 : 0.06
+T: 0 2 : 58 : 32 : 0.06
+T: 0 2 : 58 : 68 : 0.01
+T: 0 2 : 58 : 34 : 0.06
+T: 0 2 : 58 : 55 : 0.03
+T: 0 2 : 59 : 71 : 0.01
+T: 0 2 : 59 : 68 : 0.02
+T: 0 2 : 59 : 67 : 0.06
+T: 0 2 : 59 : 62 : 0.03
+T: 0 2 : 59 : 59 : 0.06
+T: 0 2 : 59 : 65 : 0.01
+T: 0 2 : 59 : 31 : 0.36
+T: 0 2 : 59 : 29 : 0.06
+T: 0 2 : 59 : 32 : 0.12
+T: 0 2 : 59 : 35 : 0.06
+T: 0 2 : 59 : 56 : 0.03
+T: 0 2 : 59 : 58 : 0.18
+T: 0 2 : 60 : 70 : 0.01
+T: 0 2 : 60 : 69 : 0.08
+T: 0 2 : 60 : 66 : 0.01
+T: 0 2 : 60 : 33 : 0.48
+T: 0 2 : 60 : 61 : 0.03
+T: 0 2 : 60 : 30 : 0.06
+T: 0 2 : 60 : 34 : 0.06
+T: 0 2 : 60 : 57 : 0.03
+T: 0 2 : 60 : 60 : 0.24
+T: 0 2 : 61 : 71 : 0.01
+T: 0 2 : 61 : 70 : 0.02
+T: 0 2 : 61 : 62 : 0.03
+T: 0 2 : 61 : 61 : 0.06
+T: 0 2 : 61 : 67 : 0.01
+T: 0 2 : 61 : 33 : 0.36
+T: 0 2 : 61 : 31 : 0.06
+T: 0 2 : 61 : 34 : 0.12
+T: 0 2 : 61 : 69 : 0.06
+T: 0 2 : 61 : 35 : 0.06
+T: 0 2 : 61 : 58 : 0.03
+T: 0 2 : 61 : 60 : 0.18
+T: 0 2 : 62 : 71 : 0.03
+T: 0 2 : 62 : 70 : 0.06
+T: 0 2 : 62 : 68 : 0.01
+T: 0 2 : 62 : 34 : 0.36
+T: 0 2 : 62 : 62 : 0.09
+T: 0 2 : 62 : 32 : 0.06
+T: 0 2 : 62 : 35 : 0.18
+T: 0 2 : 62 : 59 : 0.03
+T: 0 2 : 62 : 61 : 0.18
+T: 0 2 : 63 : 75 : 0.01
+T: 0 2 : 63 : 66 : 0.02
+T: 0 2 : 63 : 64 : 0.02
+T: 0 2 : 63 : 63 : 0.16
+T: 0 2 : 63 : 36 : 0.48
+T: 0 2 : 63 : 57 : 0.01
+T: 0 2 : 63 : 73 : 0.01
+T: 0 2 : 63 : 39 : 0.06
+T: 0 2 : 63 : 37 : 0.06
+T: 0 2 : 63 : 54 : 0.08
+T: 0 2 : 63 : 72 : 0.08
+T: 0 2 : 63 : 55 : 0.01
+T: 0 2 : 64 : 76 : 0.01
+T: 0 2 : 64 : 67 : 0.02
+T: 0 2 : 64 : 65 : 0.02
+T: 0 2 : 64 : 64 : 0.04
+T: 0 2 : 64 : 63 : 0.12
+T: 0 2 : 64 : 58 : 0.01
+T: 0 2 : 64 : 73 : 0.02
+T: 0 2 : 64 : 56 : 0.01
+T: 0 2 : 64 : 36 : 0.36
+T: 0 2 : 64 : 74 : 0.01
+T: 0 2 : 64 : 40 : 0.06
+T: 0 2 : 64 : 37 : 0.12
+T: 0 2 : 64 : 54 : 0.06
+T: 0 2 : 64 : 72 : 0.06
+T: 0 2 : 64 : 38 : 0.06
+T: 0 2 : 64 : 55 : 0.02
+T: 0 2 : 65 : 77 : 0.01
+T: 0 2 : 65 : 74 : 0.03
+T: 0 2 : 65 : 68 : 0.02
+T: 0 2 : 65 : 65 : 0.06
+T: 0 2 : 65 : 64 : 0.12
+T: 0 2 : 65 : 59 : 0.01
+T: 0 2 : 65 : 37 : 0.36
+T: 0 2 : 65 : 41 : 0.06
+T: 0 2 : 65 : 38 : 0.18
+T: 0 2 : 65 : 55 : 0.06
+T: 0 2 : 65 : 73 : 0.06
+T: 0 2 : 65 : 56 : 0.03
+T: 0 2 : 66 : 78 : 0.01
+T: 0 2 : 66 : 72 : 0.01
+T: 0 2 : 66 : 69 : 0.02
+T: 0 2 : 66 : 67 : 0.02
+T: 0 2 : 66 : 66 : 0.14
+T: 0 2 : 66 : 63 : 0.02
+T: 0 2 : 66 : 60 : 0.01
+T: 0 2 : 66 : 75 : 0.07
+T: 0 2 : 66 : 58 : 0.01
+T: 0 2 : 66 : 39 : 0.42
+T: 0 2 : 66 : 36 : 0.06
+T: 0 2 : 66 : 57 : 0.07
+T: 0 2 : 66 : 40 : 0.06
+T: 0 2 : 66 : 54 : 0.01
+T: 0 2 : 66 : 76 : 0.01
+T: 0 2 : 66 : 42 : 0.06
+T: 0 2 : 67 : 79 : 0.01
+T: 0 2 : 67 : 75 : 0.06
+T: 0 2 : 67 : 43 : 0.06
+T: 0 2 : 67 : 55 : 0.01
+T: 0 2 : 67 : 41 : 0.06
+T: 0 2 : 67 : 58 : 0.01
+T: 0 2 : 67 : 77 : 0.01
+T: 0 2 : 67 : 40 : 0.06
+T: 0 2 : 67 : 57 : 0.06
+T: 0 2 : 67 : 37 : 0.06
+T: 0 2 : 67 : 76 : 0.01
+T: 0 2 : 67 : 39 : 0.36
+T: 0 2 : 67 : 73 : 0.01
+T: 0 2 : 67 : 59 : 0.01
+T: 0 2 : 67 : 61 : 0.01
+T: 0 2 : 67 : 64 : 0.02
+T: 0 2 : 67 : 66 : 0.12
+T: 0 2 : 67 : 67 : 0.02
+T: 0 2 : 67 : 68 : 0.02
+T: 0 2 : 67 : 70 : 0.02
+T: 0 2 : 68 : 80 : 0.01
+T: 0 2 : 68 : 77 : 0.02
+T: 0 2 : 68 : 71 : 0.02
+T: 0 2 : 68 : 68 : 0.04
+T: 0 2 : 68 : 67 : 0.12
+T: 0 2 : 68 : 65 : 0.02
+T: 0 2 : 68 : 62 : 0.01
+T: 0 2 : 68 : 76 : 0.06
+T: 0 2 : 68 : 59 : 0.02
+T: 0 2 : 68 : 74 : 0.01
+T: 0 2 : 68 : 40 : 0.36
+T: 0 2 : 68 : 38 : 0.06
+T: 0 2 : 68 : 44 : 0.06
+T: 0 2 : 68 : 41 : 0.12
+T: 0 2 : 68 : 58 : 0.06
+T: 0 2 : 68 : 56 : 0.01
+T: 0 2 : 69 : 79 : 0.01
+T: 0 2 : 69 : 75 : 0.01
+T: 0 2 : 69 : 70 : 0.02
+T: 0 2 : 69 : 69 : 0.16
+T: 0 2 : 69 : 66 : 0.02
+T: 0 2 : 69 : 42 : 0.48
+T: 0 2 : 69 : 39 : 0.06
+T: 0 2 : 69 : 60 : 0.08
+T: 0 2 : 69 : 43 : 0.06
+T: 0 2 : 69 : 57 : 0.01
+T: 0 2 : 69 : 78 : 0.08
+T: 0 2 : 69 : 61 : 0.01
+T: 0 2 : 70 : 80 : 0.01
+T: 0 2 : 70 : 71 : 0.02
+T: 0 2 : 70 : 70 : 0.04
+T: 0 2 : 70 : 69 : 0.12
+T: 0 2 : 70 : 67 : 0.02
+T: 0 2 : 70 : 79 : 0.02
+T: 0 2 : 70 : 62 : 0.01
+T: 0 2 : 70 : 76 : 0.01
+T: 0 2 : 70 : 42 : 0.36
+T: 0 2 : 70 : 40 : 0.06
+T: 0 2 : 70 : 78 : 0.06
+T: 0 2 : 70 : 61 : 0.02
+T: 0 2 : 70 : 44 : 0.06
+T: 0 2 : 70 : 58 : 0.01
+T: 0 2 : 70 : 43 : 0.12
+T: 0 2 : 70 : 60 : 0.06
+T: 0 2 : 71 : 80 : 0.03
+T: 0 2 : 71 : 71 : 0.06
+T: 0 2 : 71 : 70 : 0.12
+T: 0 2 : 71 : 68 : 0.02
+T: 0 2 : 71 : 77 : 0.01
+T: 0 2 : 71 : 43 : 0.36
+T: 0 2 : 71 : 41 : 0.06
+T: 0 2 : 71 : 79 : 0.06
+T: 0 2 : 71 : 62 : 0.03
+T: 0 2 : 71 : 59 : 0.01
+T: 0 2 : 71 : 44 : 0.18
+T: 0 2 : 71 : 61 : 0.06
+T: 0 2 : 72 : 75 : 0.03
+T: 0 2 : 72 : 73 : 0.03
+T: 0 2 : 72 : 72 : 0.24
+T: 0 2 : 72 : 45 : 0.48
+T: 0 2 : 72 : 66 : 0.01
+T: 0 2 : 72 : 48 : 0.06
+T: 0 2 : 72 : 46 : 0.06
+T: 0 2 : 72 : 63 : 0.08
+T: 0 2 : 72 : 64 : 0.01
+T: 0 2 : 73 : 76 : 0.03
+T: 0 2 : 73 : 74 : 0.03
+T: 0 2 : 73 : 73 : 0.06
+T: 0 2 : 73 : 72 : 0.18
+T: 0 2 : 73 : 67 : 0.01
+T: 0 2 : 73 : 65 : 0.01
+T: 0 2 : 73 : 45 : 0.36
+T: 0 2 : 73 : 49 : 0.06
+T: 0 2 : 73 : 46 : 0.12
+T: 0 2 : 73 : 63 : 0.06
+T: 0 2 : 73 : 47 : 0.06
+T: 0 2 : 73 : 64 : 0.02
+T: 0 2 : 74 : 77 : 0.03
+T: 0 2 : 74 : 74 : 0.09
+T: 0 2 : 74 : 73 : 0.18
+T: 0 2 : 74 : 68 : 0.01
+T: 0 2 : 74 : 46 : 0.36
+T: 0 2 : 74 : 50 : 0.06
+T: 0 2 : 74 : 47 : 0.18
+T: 0 2 : 74 : 64 : 0.06
+T: 0 2 : 74 : 65 : 0.03
+T: 0 2 : 75 : 78 : 0.03
+T: 0 2 : 75 : 76 : 0.03
+T: 0 2 : 75 : 75 : 0.21
+T: 0 2 : 75 : 72 : 0.03
+T: 0 2 : 75 : 69 : 0.01
+T: 0 2 : 75 : 67 : 0.01
+T: 0 2 : 75 : 48 : 0.42
+T: 0 2 : 75 : 45 : 0.06
+T: 0 2 : 75 : 66 : 0.07
+T: 0 2 : 75 : 49 : 0.06
+T: 0 2 : 75 : 63 : 0.01
+T: 0 2 : 75 : 51 : 0.06
+T: 0 2 : 76 : 79 : 0.03
+T: 0 2 : 76 : 77 : 0.03
+T: 0 2 : 76 : 76 : 0.03
+T: 0 2 : 76 : 75 : 0.18
+T: 0 2 : 76 : 73 : 0.03
+T: 0 2 : 76 : 70 : 0.01
+T: 0 2 : 76 : 68 : 0.01
+T: 0 2 : 76 : 48 : 0.36
+T: 0 2 : 76 : 46 : 0.06
+T: 0 2 : 76 : 66 : 0.06
+T: 0 2 : 76 : 49 : 0.06
+T: 0 2 : 76 : 67 : 0.01
+T: 0 2 : 76 : 50 : 0.06
+T: 0 2 : 76 : 64 : 0.01
+T: 0 2 : 76 : 52 : 0.06
+T: 0 2 : 77 : 80 : 0.03
+T: 0 2 : 77 : 77 : 0.06
+T: 0 2 : 77 : 76 : 0.18
+T: 0 2 : 77 : 74 : 0.03
+T: 0 2 : 77 : 71 : 0.01
+T: 0 2 : 77 : 68 : 0.02
+T: 0 2 : 77 : 49 : 0.36
+T: 0 2 : 77 : 47 : 0.06
+T: 0 2 : 77 : 53 : 0.06
+T: 0 2 : 77 : 50 : 0.12
+T: 0 2 : 77 : 67 : 0.06
+T: 0 2 : 77 : 65 : 0.01
+T: 0 0 : 80 : 80 : 0.09
+T: 0 0 : 80 : 79 : 0.03
+T: 0 0 : 80 : 77 : 0.18
+T: 0 0 : 80 : 52 : 0.06
+T: 0 0 : 80 : 50 : 0.36
+T: 0 0 : 80 : 71 : 0.03
+T: 0 0 : 80 : 68 : 0.06
+T: 0 0 : 80 : 53 : 0.18
+T: 0 0 : 80 : 70 : 0.01
+T: 0 0 : 79 : 80 : 0.03
+T: 0 0 : 79 : 79 : 0.06
+T: 0 0 : 79 : 78 : 0.03
+T: 0 0 : 79 : 76 : 0.18
+T: 0 0 : 79 : 71 : 0.01
+T: 0 0 : 79 : 51 : 0.06
+T: 0 0 : 79 : 49 : 0.36
+T: 0 0 : 79 : 70 : 0.02
+T: 0 0 : 79 : 53 : 0.06
+T: 0 0 : 79 : 67 : 0.06
+T: 0 0 : 79 : 52 : 0.12
+T: 0 0 : 79 : 69 : 0.01
+T: 0 0 : 78 : 79 : 0.03
+T: 0 0 : 78 : 78 : 0.09
+T: 0 0 : 78 : 75 : 0.18
+T: 0 0 : 78 : 51 : 0.18
+T: 0 0 : 78 : 48 : 0.36
+T: 0 0 : 78 : 69 : 0.03
+T: 0 0 : 78 : 52 : 0.06
+T: 0 0 : 78 : 66 : 0.06
+T: 0 0 : 78 : 70 : 0.01
+T: 0 0 : 35 : 62 : 0.03
+T: 0 0 : 35 : 61 : 0.01
+T: 0 0 : 35 : 44 : 0.03
+T: 0 0 : 35 : 43 : 0.01
+T: 0 0 : 35 : 41 : 0.06
+T: 0 0 : 35 : 7 : 0.06
+T: 0 0 : 35 : 35 : 0.06
+T: 0 0 : 35 : 5 : 0.36
+T: 0 0 : 35 : 59 : 0.06
+T: 0 0 : 35 : 8 : 0.18
+T: 0 0 : 35 : 32 : 0.12
+T: 0 0 : 35 : 34 : 0.02
+T: 0 0 : 34 : 62 : 0.01
+T: 0 0 : 34 : 61 : 0.02
+T: 0 0 : 34 : 44 : 0.01
+T: 0 0 : 34 : 60 : 0.01
+T: 0 0 : 34 : 43 : 0.02
+T: 0 0 : 34 : 35 : 0.02
+T: 0 0 : 34 : 34 : 0.04
+T: 0 0 : 34 : 40 : 0.06
+T: 0 0 : 34 : 6 : 0.06
+T: 0 0 : 34 : 4 : 0.36
+T: 0 0 : 34 : 58 : 0.06
+T: 0 0 : 34 : 7 : 0.12
+T: 0 0 : 34 : 42 : 0.01
+T: 0 0 : 34 : 8 : 0.06
+T: 0 0 : 34 : 31 : 0.12
+T: 0 0 : 34 : 33 : 0.02
+T: 0 0 : 33 : 61 : 0.01
+T: 0 0 : 33 : 60 : 0.03
+T: 0 0 : 33 : 43 : 0.01
+T: 0 0 : 33 : 42 : 0.03
+T: 0 0 : 33 : 39 : 0.06
+T: 0 0 : 33 : 57 : 0.06
+T: 0 0 : 33 : 6 : 0.18
+T: 0 0 : 33 : 34 : 0.02
+T: 0 0 : 33 : 3 : 0.36
+T: 0 0 : 33 : 7 : 0.06
+T: 0 0 : 33 : 30 : 0.12
+T: 0 0 : 33 : 33 : 0.06
+T: 0 0 : 32 : 62 : 0.01
+T: 0 0 : 32 : 44 : 0.01
+T: 0 0 : 32 : 58 : 0.01
+T: 0 0 : 32 : 41 : 0.02
+T: 0 0 : 32 : 40 : 0.01
+T: 0 0 : 32 : 35 : 0.02
+T: 0 0 : 32 : 32 : 0.04
+T: 0 0 : 32 : 38 : 0.06
+T: 0 0 : 32 : 4 : 0.06
+T: 0 0 : 32 : 2 : 0.36
+T: 0 0 : 32 : 56 : 0.06
+T: 0 0 : 32 : 5 : 0.12
+T: 0 0 : 32 : 59 : 0.02
+T: 0 0 : 32 : 8 : 0.06
+T: 0 0 : 32 : 29 : 0.12
+T: 0 0 : 32 : 31 : 0.02
+T: 0 0 : 31 : 61 : 0.01
+T: 0 0 : 31 : 59 : 0.01
+T: 0 0 : 31 : 58 : 0.01
+T: 0 0 : 31 : 57 : 0.01
+T: 0 0 : 31 : 28 : 0.12
+T: 0 0 : 31 : 7 : 0.06
+T: 0 0 : 31 : 5 : 0.06
+T: 0 0 : 31 : 39 : 0.01
+T: 0 0 : 31 : 41 : 0.01
+T: 0 0 : 31 : 4 : 0.06
+T: 0 0 : 31 : 55 : 0.06
+T: 0 0 : 31 : 1 : 0.36
+T: 0 0 : 31 : 37 : 0.06
+T: 0 0 : 31 : 30 : 0.02
+T: 0 0 : 31 : 31 : 0.02
+T: 0 0 : 31 : 32 : 0.02
+T: 0 0 : 31 : 34 : 0.02
+T: 0 0 : 31 : 3 : 0.06
+T: 0 0 : 31 : 40 : 0.01
+T: 0 0 : 31 : 43 : 0.01
+T: 0 0 : 30 : 60 : 0.01
+T: 0 0 : 30 : 58 : 0.01
+T: 0 0 : 30 : 42 : 0.01
+T: 0 0 : 30 : 39 : 0.02
+T: 0 0 : 30 : 36 : 0.06
+T: 0 0 : 30 : 33 : 0.02
+T: 0 0 : 30 : 31 : 0.02
+T: 0 0 : 30 : 54 : 0.06
+T: 0 0 : 30 : 3 : 0.12
+T: 0 0 : 30 : 0 : 0.36
+T: 0 0 : 30 : 4 : 0.06
+T: 0 0 : 30 : 57 : 0.02
+T: 0 0 : 30 : 40 : 0.01
+T: 0 0 : 30 : 6 : 0.06
+T: 0 0 : 30 : 27 : 0.12
+T: 0 0 : 30 : 30 : 0.04
+T: 0 0 : 29 : 59 : 0.01
+T: 0 0 : 29 : 41 : 0.01
+T: 0 0 : 29 : 55 : 0.01
+T: 0 0 : 29 : 38 : 0.08
+T: 0 0 : 29 : 37 : 0.01
+T: 0 0 : 29 : 2 : 0.48
+T: 0 0 : 29 : 1 : 0.06
+T: 0 0 : 29 : 29 : 0.16
+T: 0 0 : 29 : 56 : 0.08
+T: 0 0 : 29 : 5 : 0.06
+T: 0 0 : 29 : 28 : 0.02
+T: 0 0 : 29 : 32 : 0.02
+T: 0 0 : 28 : 58 : 0.01
+T: 0 0 : 28 : 56 : 0.01
+T: 0 0 : 28 : 40 : 0.01
+T: 0 0 : 28 : 54 : 0.01
+T: 0 0 : 28 : 37 : 0.07
+T: 0 0 : 28 : 31 : 0.02
+T: 0 0 : 28 : 29 : 0.02
+T: 0 0 : 28 : 1 : 0.42
+T: 0 0 : 28 : 0 : 0.06
+T: 0 0 : 28 : 28 : 0.14
+T: 0 0 : 28 : 36 : 0.01
+T: 0 0 : 28 : 2 : 0.06
+T: 0 0 : 28 : 55 : 0.07
+T: 0 0 : 28 : 38 : 0.01
+T: 0 0 : 28 : 4 : 0.06
+T: 0 0 : 28 : 27 : 0.02
+T: 0 0 : 27 : 57 : 0.01
+T: 0 0 : 27 : 55 : 0.01
+T: 0 0 : 27 : 39 : 0.01
+T: 0 0 : 27 : 36 : 0.08
+T: 0 0 : 27 : 1 : 0.06
+T: 0 0 : 27 : 0 : 0.48
+T: 0 0 : 27 : 28 : 0.02
+T: 0 0 : 27 : 54 : 0.08
+T: 0 0 : 27 : 37 : 0.01
+T: 0 0 : 27 : 3 : 0.06
+T: 0 0 : 27 : 27 : 0.16
+T: 0 0 : 27 : 30 : 0.02
+T: 0 0 : 26 : 53 : 0.03
+T: 0 0 : 26 : 52 : 0.01
+T: 0 0 : 26 : 50 : 0.06
+T: 0 0 : 26 : 16 : 0.01
+T: 0 0 : 26 : 23 : 0.48
+T: 0 0 : 26 : 14 : 0.06
+T: 0 0 : 26 : 17 : 0.03
+T: 0 0 : 26 : 25 : 0.08
+T: 0 0 : 26 : 26 : 0.24
+T: 0 0 : 25 : 53 : 0.01
+T: 0 0 : 25 : 52 : 0.02
+T: 0 0 : 25 : 26 : 0.08
+T: 0 0 : 25 : 25 : 0.16
+T: 0 0 : 25 : 49 : 0.06
+T: 0 0 : 25 : 15 : 0.01
+T: 0 0 : 25 : 22 : 0.48
+T: 0 0 : 25 : 13 : 0.06
+T: 0 0 : 25 : 16 : 0.02
+T: 0 0 : 25 : 51 : 0.01
+T: 0 0 : 25 : 17 : 0.01
+T: 0 0 : 25 : 24 : 0.08
+T: 0 0 : 24 : 52 : 0.01
+T: 0 0 : 24 : 51 : 0.03
+T: 0 0 : 24 : 48 : 0.06
+T: 0 0 : 24 : 15 : 0.03
+T: 0 0 : 24 : 12 : 0.06
+T: 0 0 : 24 : 16 : 0.01
+T: 0 0 : 24 : 21 : 0.48
+T: 0 0 : 24 : 24 : 0.24
+T: 0 0 : 24 : 25 : 0.08
+T: 0 0 : 23 : 53 : 0.01
+T: 0 0 : 23 : 50 : 0.02
+T: 0 0 : 23 : 49 : 0.01
+T: 0 0 : 23 : 26 : 0.08
+T: 0 0 : 23 : 23 : 0.16
+T: 0 0 : 23 : 47 : 0.06
+T: 0 0 : 23 : 13 : 0.01
+T: 0 0 : 23 : 20 : 0.48
+T: 0 0 : 23 : 11 : 0.06
+T: 0 0 : 23 : 14 : 0.02
+T: 0 0 : 23 : 17 : 0.01
+T: 0 0 : 23 : 22 : 0.08
+T: 0 0 : 22 : 52 : 0.01
+T: 0 0 : 22 : 49 : 0.01
+T: 0 0 : 22 : 25 : 0.08
+T: 0 0 : 22 : 23 : 0.08
+T: 0 0 : 22 : 22 : 0.08
+T: 0 0 : 22 : 21 : 0.08
+T: 0 0 : 22 : 46 : 0.06
+T: 0 0 : 22 : 12 : 0.01
+T: 0 0 : 22 : 19 : 0.48
+T: 0 0 : 22 : 10 : 0.06
+T: 0 0 : 22 : 13 : 0.01
+T: 0 0 : 22 : 48 : 0.01
+T: 0 0 : 22 : 14 : 0.01
+T: 0 0 : 22 : 50 : 0.01
+T: 0 0 : 22 : 16 : 0.01
+T: 0 0 : 21 : 51 : 0.01
+T: 0 0 : 21 : 48 : 0.02
+T: 0 0 : 21 : 45 : 0.06
+T: 0 0 : 21 : 24 : 0.08
+T: 0 0 : 21 : 22 : 0.08
+T: 0 0 : 21 : 12 : 0.02
+T: 0 0 : 21 : 9 : 0.06
+T: 0 0 : 21 : 13 : 0.01
+T: 0 0 : 21 : 49 : 0.01
+T: 0 0 : 21 : 15 : 0.01
+T: 0 0 : 21 : 18 : 0.48
+T: 0 0 : 21 : 21 : 0.16
+T: 0 0 : 20 : 50 : 0.01
+T: 0 0 : 20 : 47 : 0.08
+T: 0 0 : 20 : 46 : 0.01
+T: 0 0 : 20 : 11 : 0.08
+T: 0 0 : 20 : 10 : 0.01
+T: 0 0 : 20 : 14 : 0.01
+T: 0 0 : 20 : 19 : 0.08
+T: 0 0 : 20 : 20 : 0.64
+T: 0 0 : 20 : 23 : 0.08
+T: 0 0 : 19 : 49 : 0.01
+T: 0 0 : 19 : 46 : 0.07
+T: 0 0 : 19 : 22 : 0.08
+T: 0 0 : 19 : 20 : 0.08
+T: 0 0 : 19 : 10 : 0.07
+T: 0 0 : 19 : 9 : 0.01
+T: 0 0 : 19 : 45 : 0.01
+T: 0 0 : 19 : 11 : 0.01
+T: 0 0 : 19 : 18 : 0.08
+T: 0 0 : 19 : 47 : 0.01
+T: 0 0 : 19 : 13 : 0.01
+T: 0 0 : 19 : 19 : 0.56
+T: 0 0 : 18 : 48 : 0.01
+T: 0 0 : 18 : 45 : 0.08
+T: 0 0 : 18 : 10 : 0.01
+T: 0 0 : 18 : 9 : 0.08
+T: 0 0 : 18 : 46 : 0.01
+T: 0 0 : 18 : 12 : 0.01
+T: 0 0 : 18 : 19 : 0.08
+T: 0 0 : 18 : 18 : 0.64
+T: 0 0 : 18 : 21 : 0.08
+T: 0 0 : 17 : 44 : 0.03
+T: 0 0 : 17 : 43 : 0.01
+T: 0 0 : 17 : 26 : 0.03
+T: 0 0 : 17 : 23 : 0.06
+T: 0 0 : 17 : 41 : 0.06
+T: 0 0 : 17 : 7 : 0.01
+T: 0 0 : 17 : 14 : 0.42
+T: 0 0 : 17 : 5 : 0.06
+T: 0 0 : 17 : 25 : 0.01
+T: 0 0 : 17 : 8 : 0.03
+T: 0 0 : 17 : 16 : 0.07
+T: 0 0 : 17 : 17 : 0.21
+T: 0 0 : 16 : 44 : 0.01
+T: 0 0 : 16 : 43 : 0.02
+T: 0 0 : 16 : 26 : 0.01
+T: 0 0 : 16 : 22 : 0.06
+T: 0 0 : 16 : 17 : 0.07
+T: 0 0 : 16 : 16 : 0.14
+T: 0 0 : 16 : 40 : 0.06
+T: 0 0 : 16 : 6 : 0.01
+T: 0 0 : 16 : 13 : 0.42
+T: 0 0 : 16 : 4 : 0.06
+T: 0 0 : 16 : 24 : 0.01
+T: 0 0 : 16 : 7 : 0.02
+T: 0 0 : 16 : 42 : 0.01
+T: 0 0 : 16 : 25 : 0.02
+T: 0 0 : 16 : 8 : 0.01
+T: 0 0 : 16 : 15 : 0.07
+T: 0 0 : 5 : 35 : 0.01
+T: 0 0 : 5 : 32 : 0.02
+T: 0 0 : 5 : 29 : 0.06
+T: 0 0 : 5 : 17 : 0.01
+T: 0 0 : 5 : 31 : 0.01
+T: 0 0 : 5 : 14 : 0.02
+T: 0 0 : 5 : 4 : 0.08
+T: 0 0 : 5 : 11 : 0.06
+T: 0 0 : 5 : 2 : 0.48
+T: 0 0 : 5 : 5 : 0.16
+T: 0 0 : 5 : 8 : 0.08
+T: 0 0 : 5 : 13 : 0.01
+T: 0 0 : 4 : 34 : 0.01
+T: 0 0 : 4 : 32 : 0.01
+T: 0 0 : 4 : 28 : 0.06
+T: 0 0 : 4 : 16 : 0.01
+T: 0 0 : 4 : 31 : 0.01
+T: 0 0 : 4 : 14 : 0.01
+T: 0 0 : 4 : 30 : 0.01
+T: 0 0 : 4 : 13 : 0.01
+T: 0 0 : 4 : 12 : 0.01
+T: 0 0 : 4 : 3 : 0.08
+T: 0 0 : 4 : 10 : 0.06
+T: 0 0 : 4 : 1 : 0.48
+T: 0 0 : 4 : 4 : 0.08
+T: 0 0 : 4 : 5 : 0.08
+T: 0 0 : 4 : 7 : 0.08
+T: 0 0 : 3 : 33 : 0.01
+T: 0 0 : 3 : 31 : 0.01
+T: 0 0 : 3 : 27 : 0.06
+T: 0 0 : 3 : 15 : 0.01
+T: 0 0 : 3 : 30 : 0.02
+T: 0 0 : 3 : 13 : 0.01
+T: 0 0 : 3 : 3 : 0.16
+T: 0 0 : 3 : 0 : 0.48
+T: 0 0 : 3 : 4 : 0.08
+T: 0 0 : 3 : 6 : 0.08
+T: 0 0 : 3 : 9 : 0.06
+T: 0 0 : 3 : 12 : 0.02
+T: 0 0 : 2 : 32 : 0.01
+T: 0 0 : 2 : 29 : 0.08
+T: 0 0 : 2 : 2 : 0.64
+T: 0 0 : 2 : 1 : 0.08
+T: 0 0 : 2 : 5 : 0.08
+T: 0 0 : 2 : 10 : 0.01
+T: 0 0 : 2 : 28 : 0.01
+T: 0 0 : 2 : 11 : 0.08
+T: 0 0 : 2 : 14 : 0.01
+T: 0 0 : 0 : 30 : 0.01
+T: 0 0 : 0 : 28 : 0.01
+T: 0 0 : 0 : 1 : 0.08
+T: 0 0 : 0 : 0 : 0.64
+T: 0 0 : 0 : 3 : 0.08
+T: 0 0 : 0 : 27 : 0.08
+T: 0 0 : 0 : 10 : 0.01
+T: 0 0 : 0 : 9 : 0.08
+T: 0 0 : 0 : 12 : 0.01
+T: 0 0 : 1 : 31 : 0.01
+T: 0 0 : 1 : 29 : 0.01
+T: 0 0 : 1 : 13 : 0.01
+T: 0 0 : 1 : 28 : 0.07
+T: 0 0 : 1 : 11 : 0.01
+T: 0 0 : 1 : 1 : 0.56
+T: 0 0 : 1 : 0 : 0.08
+T: 0 0 : 1 : 2 : 0.08
+T: 0 0 : 1 : 9 : 0.01
+T: 0 0 : 1 : 4 : 0.08
+T: 0 0 : 1 : 27 : 0.01
+T: 0 0 : 1 : 10 : 0.07
+T: 0 0 : 6 : 34 : 0.01
+T: 0 0 : 6 : 30 : 0.06
+T: 0 0 : 6 : 6 : 0.24
+T: 0 0 : 6 : 3 : 0.48
+T: 0 0 : 6 : 7 : 0.08
+T: 0 0 : 6 : 12 : 0.06
+T: 0 0 : 6 : 15 : 0.03
+T: 0 0 : 6 : 33 : 0.03
+T: 0 0 : 6 : 16 : 0.01
+T: 0 0 : 7 : 35 : 0.01
+T: 0 0 : 7 : 31 : 0.06
+T: 0 0 : 7 : 34 : 0.02
+T: 0 0 : 7 : 17 : 0.01
+T: 0 0 : 7 : 33 : 0.01
+T: 0 0 : 7 : 16 : 0.02
+T: 0 0 : 7 : 6 : 0.08
+T: 0 0 : 7 : 13 : 0.06
+T: 0 0 : 7 : 4 : 0.48
+T: 0 0 : 7 : 7 : 0.16
+T: 0 0 : 7 : 8 : 0.08
+T: 0 0 : 7 : 15 : 0.01
+T: 0 0 : 8 : 35 : 0.03
+T: 0 0 : 8 : 32 : 0.06
+T: 0 0 : 8 : 7 : 0.08
+T: 0 0 : 8 : 14 : 0.06
+T: 0 0 : 8 : 5 : 0.48
+T: 0 0 : 8 : 8 : 0.24
+T: 0 0 : 8 : 16 : 0.01
+T: 0 0 : 8 : 34 : 0.01
+T: 0 0 : 8 : 17 : 0.03
+T: 0 0 : 9 : 39 : 0.01
+T: 0 0 : 9 : 21 : 0.01
+T: 0 0 : 9 : 36 : 0.08
+T: 0 0 : 9 : 19 : 0.01
+T: 0 0 : 9 : 18 : 0.08
+T: 0 0 : 9 : 1 : 0.01
+T: 0 0 : 9 : 0 : 0.08
+T: 0 0 : 9 : 37 : 0.01
+T: 0 0 : 9 : 3 : 0.01
+T: 0 0 : 9 : 10 : 0.07
+T: 0 0 : 9 : 9 : 0.56
+T: 0 0 : 9 : 12 : 0.07
+T: 0 0 : 10 : 40 : 0.01
+T: 0 0 : 10 : 22 : 0.01
+T: 0 0 : 10 : 37 : 0.07
+T: 0 0 : 10 : 20 : 0.01
+T: 0 0 : 10 : 13 : 0.07
+T: 0 0 : 10 : 11 : 0.07
+T: 0 0 : 10 : 18 : 0.01
+T: 0 0 : 10 : 1 : 0.07
+T: 0 0 : 10 : 0 : 0.01
+T: 0 0 : 10 : 36 : 0.01
+T: 0 0 : 10 : 19 : 0.07
+T: 0 0 : 10 : 2 : 0.01
+T: 0 0 : 10 : 9 : 0.07
+T: 0 0 : 10 : 38 : 0.01
+T: 0 0 : 10 : 4 : 0.01
+T: 0 0 : 10 : 10 : 0.49
+T: 0 0 : 11 : 41 : 0.01
+T: 0 0 : 11 : 38 : 0.08
+T: 0 0 : 11 : 23 : 0.01
+T: 0 0 : 11 : 37 : 0.01
+T: 0 0 : 11 : 20 : 0.08
+T: 0 0 : 11 : 19 : 0.01
+T: 0 0 : 11 : 2 : 0.08
+T: 0 0 : 11 : 1 : 0.01
+T: 0 0 : 11 : 5 : 0.01
+T: 0 0 : 11 : 10 : 0.07
+T: 0 0 : 11 : 11 : 0.56
+T: 0 0 : 11 : 14 : 0.07
+T: 0 0 : 12 : 42 : 0.01
+T: 0 0 : 12 : 36 : 0.06
+T: 0 0 : 12 : 24 : 0.01
+T: 0 0 : 12 : 39 : 0.02
+T: 0 0 : 12 : 22 : 0.01
+T: 0 0 : 12 : 18 : 0.06
+T: 0 0 : 12 : 15 : 0.07
+T: 0 0 : 12 : 13 : 0.07
+T: 0 0 : 12 : 3 : 0.02
+T: 0 0 : 12 : 0 : 0.06
+T: 0 0 : 12 : 21 : 0.02
+T: 0 0 : 12 : 4 : 0.01
+T: 0 0 : 12 : 40 : 0.01
+T: 0 0 : 12 : 6 : 0.01
+T: 0 0 : 12 : 9 : 0.42
+T: 0 0 : 12 : 12 : 0.14
+T: 0 0 : 13 : 43 : 0.01
+T: 0 0 : 13 : 39 : 0.01
+T: 0 0 : 13 : 7 : 0.01
+T: 0 0 : 13 : 5 : 0.01
+T: 0 0 : 13 : 22 : 0.01
+T: 0 0 : 13 : 41 : 0.01
+T: 0 0 : 13 : 4 : 0.01
+T: 0 0 : 13 : 21 : 0.01
+T: 0 0 : 13 : 1 : 0.06
+T: 0 0 : 13 : 10 : 0.42
+T: 0 0 : 13 : 40 : 0.01
+T: 0 0 : 13 : 3 : 0.01
+T: 0 0 : 13 : 37 : 0.06
+T: 0 0 : 13 : 12 : 0.07
+T: 0 0 : 13 : 13 : 0.07
+T: 0 0 : 13 : 14 : 0.07
+T: 0 0 : 13 : 16 : 0.07
+T: 0 0 : 13 : 19 : 0.06
+T: 0 0 : 13 : 23 : 0.01
+T: 0 0 : 13 : 25 : 0.01
+T: 0 0 : 14 : 44 : 0.01
+T: 0 0 : 14 : 41 : 0.02
+T: 0 0 : 14 : 26 : 0.01
+T: 0 0 : 14 : 40 : 0.01
+T: 0 0 : 14 : 23 : 0.02
+T: 0 0 : 14 : 20 : 0.06
+T: 0 0 : 14 : 17 : 0.07
+T: 0 0 : 14 : 14 : 0.14
+T: 0 0 : 14 : 38 : 0.06
+T: 0 0 : 14 : 4 : 0.01
+T: 0 0 : 14 : 11 : 0.42
+T: 0 0 : 14 : 2 : 0.06
+T: 0 0 : 14 : 22 : 0.01
+T: 0 0 : 14 : 5 : 0.02
+T: 0 0 : 14 : 8 : 0.01
+T: 0 0 : 14 : 13 : 0.07
+T: 0 0 : 15 : 43 : 0.01
+T: 0 0 : 15 : 39 : 0.06
+T: 0 0 : 15 : 42 : 0.03
+T: 0 0 : 15 : 25 : 0.01
+T: 0 0 : 15 : 21 : 0.06
+T: 0 0 : 15 : 6 : 0.03
+T: 0 0 : 15 : 3 : 0.06
+T: 0 0 : 15 : 24 : 0.03
+T: 0 0 : 15 : 7 : 0.01
+T: 0 0 : 15 : 12 : 0.42
+T: 0 0 : 15 : 15 : 0.21
+T: 0 0 : 15 : 16 : 0.07
+T: 0 0 : 36 : 66 : 0.01
+T: 0 0 : 36 : 48 : 0.01
+T: 0 0 : 36 : 39 : 0.01
+T: 0 0 : 36 : 37 : 0.01
+T: 0 0 : 36 : 36 : 0.08
+T: 0 0 : 36 : 9 : 0.48
+T: 0 0 : 36 : 64 : 0.01
+T: 0 0 : 36 : 30 : 0.01
+T: 0 0 : 36 : 63 : 0.08
+T: 0 0 : 36 : 46 : 0.01
+T: 0 0 : 36 : 12 : 0.06
+T: 0 0 : 36 : 10 : 0.06
+T: 0 0 : 36 : 27 : 0.08
+T: 0 0 : 36 : 45 : 0.08
+T: 0 0 : 36 : 28 : 0.01
+T: 0 0 : 37 : 67 : 0.01
+T: 0 0 : 37 : 63 : 0.01
+T: 0 0 : 37 : 65 : 0.01
+T: 0 0 : 37 : 28 : 0.07
+T: 0 0 : 37 : 11 : 0.06
+T: 0 0 : 37 : 45 : 0.01
+T: 0 0 : 37 : 64 : 0.07
+T: 0 0 : 37 : 27 : 0.01
+T: 0 0 : 37 : 13 : 0.06
+T: 0 0 : 37 : 10 : 0.42
+T: 0 0 : 37 : 47 : 0.01
+T: 0 0 : 37 : 29 : 0.01
+T: 0 0 : 37 : 9 : 0.06
+T: 0 0 : 37 : 46 : 0.07
+T: 0 0 : 37 : 31 : 0.01
+T: 0 0 : 37 : 36 : 0.01
+T: 0 0 : 37 : 37 : 0.07
+T: 0 0 : 37 : 38 : 0.01
+T: 0 0 : 37 : 40 : 0.01
+T: 0 0 : 37 : 49 : 0.01
+T: 0 0 : 38 : 68 : 0.01
+T: 0 0 : 38 : 50 : 0.01
+T: 0 0 : 38 : 64 : 0.01
+T: 0 0 : 38 : 47 : 0.08
+T: 0 0 : 38 : 41 : 0.01
+T: 0 0 : 38 : 38 : 0.08
+T: 0 0 : 38 : 37 : 0.01
+T: 0 0 : 38 : 32 : 0.01
+T: 0 0 : 38 : 10 : 0.06
+T: 0 0 : 38 : 65 : 0.08
+T: 0 0 : 38 : 14 : 0.06
+T: 0 0 : 38 : 11 : 0.48
+T: 0 0 : 38 : 28 : 0.01
+T: 0 0 : 38 : 46 : 0.01
+T: 0 0 : 38 : 29 : 0.08
+T: 0 0 : 39 : 69 : 0.01
+T: 0 0 : 39 : 66 : 0.02
+T: 0 0 : 39 : 63 : 0.06
+T: 0 0 : 39 : 15 : 0.06
+T: 0 0 : 39 : 27 : 0.06
+T: 0 0 : 39 : 13 : 0.06
+T: 0 0 : 39 : 67 : 0.01
+T: 0 0 : 39 : 30 : 0.02
+T: 0 0 : 39 : 9 : 0.36
+T: 0 0 : 39 : 49 : 0.01
+T: 0 0 : 39 : 12 : 0.12
+T: 0 0 : 39 : 31 : 0.01
+T: 0 0 : 39 : 48 : 0.02
+T: 0 0 : 39 : 33 : 0.01
+T: 0 0 : 39 : 36 : 0.06
+T: 0 0 : 39 : 39 : 0.02
+T: 0 0 : 39 : 40 : 0.01
+T: 0 0 : 39 : 42 : 0.01
+T: 0 0 : 39 : 45 : 0.06
+T: 0 0 : 39 : 51 : 0.01
+T: 0 0 : 40 : 70 : 0.01
+T: 0 0 : 40 : 66 : 0.01
+T: 0 0 : 40 : 64 : 0.06
+T: 0 0 : 40 : 52 : 0.01
+T: 0 0 : 40 : 48 : 0.01
+T: 0 0 : 40 : 16 : 0.06
+T: 0 0 : 40 : 28 : 0.06
+T: 0 0 : 40 : 14 : 0.06
+T: 0 0 : 40 : 68 : 0.01
+T: 0 0 : 40 : 31 : 0.01
+T: 0 0 : 40 : 50 : 0.01
+T: 0 0 : 40 : 13 : 0.06
+T: 0 0 : 40 : 67 : 0.01
+T: 0 0 : 40 : 30 : 0.01
+T: 0 0 : 40 : 10 : 0.36
+T: 0 0 : 40 : 49 : 0.01
+T: 0 0 : 40 : 12 : 0.06
+T: 0 0 : 40 : 46 : 0.06
+T: 0 0 : 40 : 32 : 0.01
+T: 0 0 : 40 : 34 : 0.01
+T: 0 0 : 40 : 37 : 0.06
+T: 0 0 : 40 : 39 : 0.01
+T: 0 0 : 40 : 40 : 0.01
+T: 0 0 : 40 : 41 : 0.01
+T: 0 0 : 40 : 43 : 0.01
+T: 0 0 : 41 : 71 : 0.01
+T: 0 0 : 41 : 67 : 0.01
+T: 0 0 : 41 : 65 : 0.06
+T: 0 0 : 41 : 29 : 0.06
+T: 0 0 : 41 : 68 : 0.02
+T: 0 0 : 41 : 31 : 0.01
+T: 0 0 : 41 : 14 : 0.12
+T: 0 0 : 41 : 17 : 0.06
+T: 0 0 : 41 : 11 : 0.36
+T: 0 0 : 41 : 47 : 0.06
+T: 0 0 : 41 : 32 : 0.02
+T: 0 0 : 41 : 49 : 0.01
+T: 0 0 : 41 : 35 : 0.01
+T: 0 0 : 41 : 38 : 0.06
+T: 0 0 : 41 : 40 : 0.01
+T: 0 0 : 41 : 41 : 0.02
+T: 0 0 : 41 : 44 : 0.01
+T: 0 0 : 41 : 13 : 0.06
+T: 0 0 : 41 : 50 : 0.02
+T: 0 0 : 41 : 53 : 0.01
+T: 0 0 : 42 : 70 : 0.01
+T: 0 0 : 42 : 69 : 0.03
+T: 0 0 : 42 : 52 : 0.01
+T: 0 0 : 42 : 48 : 0.06
+T: 0 0 : 42 : 43 : 0.01
+T: 0 0 : 42 : 42 : 0.03
+T: 0 0 : 42 : 39 : 0.06
+T: 0 0 : 42 : 66 : 0.06
+T: 0 0 : 42 : 15 : 0.18
+T: 0 0 : 42 : 12 : 0.36
+T: 0 0 : 42 : 33 : 0.03
+T: 0 0 : 42 : 16 : 0.06
+T: 0 0 : 42 : 30 : 0.06
+T: 0 0 : 42 : 51 : 0.03
+T: 0 0 : 42 : 34 : 0.01
+T: 0 0 : 43 : 69 : 0.01
+T: 0 0 : 43 : 67 : 0.06
+T: 0 0 : 43 : 70 : 0.02
+T: 0 0 : 43 : 33 : 0.01
+T: 0 0 : 43 : 31 : 0.06
+T: 0 0 : 43 : 17 : 0.06
+T: 0 0 : 43 : 71 : 0.01
+T: 0 0 : 43 : 34 : 0.02
+T: 0 0 : 43 : 51 : 0.01
+T: 0 0 : 43 : 13 : 0.36
+T: 0 0 : 43 : 49 : 0.06
+T: 0 0 : 43 : 35 : 0.01
+T: 0 0 : 43 : 15 : 0.06
+T: 0 0 : 43 : 52 : 0.02
+T: 0 0 : 43 : 40 : 0.06
+T: 0 0 : 43 : 42 : 0.01
+T: 0 0 : 43 : 43 : 0.02
+T: 0 0 : 43 : 44 : 0.01
+T: 0 0 : 43 : 16 : 0.12
+T: 0 0 : 43 : 53 : 0.01
+T: 0 0 : 44 : 71 : 0.03
+T: 0 0 : 44 : 70 : 0.01
+T: 0 0 : 44 : 53 : 0.03
+T: 0 0 : 44 : 44 : 0.03
+T: 0 0 : 44 : 43 : 0.01
+T: 0 0 : 44 : 41 : 0.06
+T: 0 0 : 44 : 50 : 0.06
+T: 0 0 : 44 : 16 : 0.06
+T: 0 0 : 44 : 14 : 0.36
+T: 0 0 : 44 : 52 : 0.01
+T: 0 0 : 44 : 35 : 0.03
+T: 0 0 : 44 : 32 : 0.06
+T: 0 0 : 44 : 68 : 0.06
+T: 0 0 : 44 : 17 : 0.18
+T: 0 0 : 44 : 34 : 0.01
+T: 0 0 : 45 : 75 : 0.01
+T: 0 0 : 45 : 48 : 0.02
+T: 0 0 : 45 : 46 : 0.02
+T: 0 0 : 45 : 45 : 0.16
+T: 0 0 : 45 : 18 : 0.48
+T: 0 0 : 45 : 73 : 0.01
+T: 0 0 : 45 : 39 : 0.01
+T: 0 0 : 45 : 72 : 0.08
+T: 0 0 : 45 : 21 : 0.06
+T: 0 0 : 45 : 19 : 0.06
+T: 0 0 : 45 : 36 : 0.08
+T: 0 0 : 45 : 37 : 0.01
+T: 0 0 : 46 : 76 : 0.01
+T: 0 0 : 46 : 49 : 0.02
+T: 0 0 : 46 : 47 : 0.02
+T: 0 0 : 46 : 46 : 0.14
+T: 0 0 : 46 : 45 : 0.02
+T: 0 0 : 46 : 74 : 0.01
+T: 0 0 : 46 : 40 : 0.01
+T: 0 0 : 46 : 72 : 0.01
+T: 0 0 : 46 : 38 : 0.01
+T: 0 0 : 46 : 18 : 0.06
+T: 0 0 : 46 : 73 : 0.07
+T: 0 0 : 46 : 22 : 0.06
+T: 0 0 : 46 : 19 : 0.42
+T: 0 0 : 46 : 36 : 0.01
+T: 0 0 : 46 : 20 : 0.06
+T: 0 0 : 46 : 37 : 0.07
+T: 0 0 : 47 : 77 : 0.01
+T: 0 0 : 47 : 73 : 0.01
+T: 0 0 : 47 : 50 : 0.02
+T: 0 0 : 47 : 47 : 0.16
+T: 0 0 : 47 : 46 : 0.02
+T: 0 0 : 47 : 41 : 0.01
+T: 0 0 : 47 : 19 : 0.06
+T: 0 0 : 47 : 74 : 0.08
+T: 0 0 : 47 : 23 : 0.06
+T: 0 0 : 47 : 20 : 0.48
+T: 0 0 : 47 : 37 : 0.01
+T: 0 0 : 47 : 38 : 0.08
+T: 0 0 : 48 : 78 : 0.01
+T: 0 0 : 48 : 51 : 0.02
+T: 0 0 : 48 : 49 : 0.02
+T: 0 0 : 48 : 48 : 0.04
+T: 0 0 : 48 : 45 : 0.12
+T: 0 0 : 48 : 76 : 0.01
+T: 0 0 : 48 : 42 : 0.01
+T: 0 0 : 48 : 40 : 0.01
+T: 0 0 : 48 : 72 : 0.06
+T: 0 0 : 48 : 21 : 0.12
+T: 0 0 : 48 : 18 : 0.36
+T: 0 0 : 48 : 39 : 0.02
+T: 0 0 : 48 : 22 : 0.06
+T: 0 0 : 48 : 36 : 0.06
+T: 0 0 : 48 : 75 : 0.02
+T: 0 0 : 48 : 24 : 0.06
+T: 0 0 : 49 : 79 : 0.01
+T: 0 0 : 49 : 75 : 0.01
+T: 0 0 : 49 : 25 : 0.06
+T: 0 0 : 49 : 37 : 0.06
+T: 0 0 : 49 : 23 : 0.06
+T: 0 0 : 49 : 77 : 0.01
+T: 0 0 : 49 : 40 : 0.01
+T: 0 0 : 49 : 22 : 0.06
+T: 0 0 : 49 : 76 : 0.01
+T: 0 0 : 49 : 39 : 0.01
+T: 0 0 : 49 : 73 : 0.06
+T: 0 0 : 49 : 19 : 0.36
+T: 0 0 : 49 : 21 : 0.06
+T: 0 0 : 49 : 41 : 0.01
+T: 0 0 : 49 : 43 : 0.01
+T: 0 0 : 49 : 46 : 0.12
+T: 0 0 : 49 : 48 : 0.02
+T: 0 0 : 49 : 49 : 0.02
+T: 0 0 : 49 : 50 : 0.02
+T: 0 0 : 49 : 52 : 0.02
+T: 0 0 : 50 : 80 : 0.01
+T: 0 0 : 50 : 76 : 0.01
+T: 0 0 : 50 : 53 : 0.02
+T: 0 0 : 50 : 50 : 0.04
+T: 0 0 : 50 : 49 : 0.02
+T: 0 0 : 50 : 47 : 0.12
+T: 0 0 : 50 : 44 : 0.01
+T: 0 0 : 50 : 41 : 0.02
+T: 0 0 : 50 : 22 : 0.06
+T: 0 0 : 50 : 20 : 0.36
+T: 0 0 : 50 : 77 : 0.02
+T: 0 0 : 50 : 26 : 0.06
+T: 0 0 : 50 : 74 : 0.06
+T: 0 0 : 50 : 23 : 0.12
+T: 0 0 : 50 : 40 : 0.01
+T: 0 0 : 50 : 38 : 0.06
+T: 0 0 : 51 : 79 : 0.01
+T: 0 0 : 51 : 78 : 0.03
+T: 0 0 : 51 : 52 : 0.02
+T: 0 0 : 51 : 51 : 0.06
+T: 0 0 : 51 : 48 : 0.12
+T: 0 0 : 51 : 75 : 0.06
+T: 0 0 : 51 : 24 : 0.18
+T: 0 0 : 51 : 21 : 0.36
+T: 0 0 : 51 : 42 : 0.03
+T: 0 0 : 51 : 25 : 0.06
+T: 0 0 : 51 : 39 : 0.06
+T: 0 0 : 51 : 43 : 0.01
+T: 0 0 : 52 : 80 : 0.01
+T: 0 0 : 52 : 79 : 0.02
+T: 0 0 : 52 : 53 : 0.02
+T: 0 0 : 52 : 52 : 0.04
+T: 0 0 : 52 : 51 : 0.02
+T: 0 0 : 52 : 49 : 0.12
+T: 0 0 : 52 : 78 : 0.01
+T: 0 0 : 52 : 44 : 0.01
+T: 0 0 : 52 : 24 : 0.06
+T: 0 0 : 52 : 22 : 0.36
+T: 0 0 : 52 : 43 : 0.02
+T: 0 0 : 52 : 26 : 0.06
+T: 0 0 : 52 : 40 : 0.06
+T: 0 0 : 52 : 76 : 0.06
+T: 0 0 : 52 : 25 : 0.12
+T: 0 0 : 52 : 42 : 0.01
+T: 0 0 : 53 : 80 : 0.03
+T: 0 0 : 53 : 79 : 0.01
+T: 0 0 : 53 : 53 : 0.06
+T: 0 0 : 53 : 52 : 0.02
+T: 0 0 : 53 : 50 : 0.12
+T: 0 0 : 53 : 25 : 0.06
+T: 0 0 : 53 : 23 : 0.36
+T: 0 0 : 53 : 44 : 0.03
+T: 0 0 : 53 : 41 : 0.06
+T: 0 0 : 53 : 77 : 0.06
+T: 0 0 : 53 : 26 : 0.18
+T: 0 0 : 53 : 43 : 0.01
+T: 0 0 : 54 : 66 : 0.01
+T: 0 0 : 54 : 63 : 0.08
+T: 0 0 : 54 : 28 : 0.06
+T: 0 0 : 54 : 27 : 0.48
+T: 0 0 : 54 : 55 : 0.03
+T: 0 0 : 54 : 64 : 0.01
+T: 0 0 : 54 : 30 : 0.06
+T: 0 0 : 54 : 54 : 0.24
+T: 0 0 : 54 : 57 : 0.03
+T: 0 0 : 55 : 67 : 0.01
+T: 0 0 : 55 : 64 : 0.07
+T: 0 0 : 55 : 58 : 0.03
+T: 0 0 : 55 : 56 : 0.03
+T: 0 0 : 55 : 28 : 0.42
+T: 0 0 : 55 : 27 : 0.06
+T: 0 0 : 55 : 55 : 0.21
+T: 0 0 : 55 : 63 : 0.01
+T: 0 0 : 55 : 29 : 0.06
+T: 0 0 : 55 : 65 : 0.01
+T: 0 0 : 55 : 31 : 0.06
+T: 0 0 : 55 : 54 : 0.03
+T: 0 0 : 56 : 68 : 0.01
+T: 0 0 : 56 : 65 : 0.08
+T: 0 0 : 56 : 64 : 0.01
+T: 0 0 : 56 : 29 : 0.48
+T: 0 0 : 56 : 28 : 0.06
+T: 0 0 : 56 : 56 : 0.24
+T: 0 0 : 56 : 32 : 0.06
+T: 0 0 : 56 : 55 : 0.03
+T: 0 0 : 56 : 59 : 0.03
+T: 0 0 : 57 : 69 : 0.01
+T: 0 0 : 57 : 66 : 0.02
+T: 0 0 : 57 : 63 : 0.06
+T: 0 0 : 57 : 60 : 0.03
+T: 0 0 : 57 : 58 : 0.03
+T: 0 0 : 57 : 30 : 0.12
+T: 0 0 : 57 : 27 : 0.36
+T: 0 0 : 57 : 31 : 0.06
+T: 0 0 : 57 : 67 : 0.01
+T: 0 0 : 57 : 33 : 0.06
+T: 0 0 : 57 : 54 : 0.18
+T: 0 0 : 57 : 57 : 0.06
+T: 0 0 : 58 : 70 : 0.01
+T: 0 0 : 58 : 67 : 0.01
+T: 0 0 : 58 : 61 : 0.03
+T: 0 0 : 58 : 59 : 0.03
+T: 0 0 : 58 : 58 : 0.03
+T: 0 0 : 58 : 57 : 0.03
+T: 0 0 : 58 : 64 : 0.06
+T: 0 0 : 58 : 30 : 0.06
+T: 0 0 : 58 : 28 : 0.36
+T: 0 0 : 58 : 31 : 0.06
+T: 0 0 : 58 : 66 : 0.01
+T: 0 0 : 58 : 32 : 0.06
+T: 0 0 : 58 : 68 : 0.01
+T: 0 0 : 58 : 34 : 0.06
+T: 0 0 : 58 : 55 : 0.18
+T: 0 0 : 59 : 71 : 0.01
+T: 0 0 : 59 : 68 : 0.02
+T: 0 0 : 59 : 67 : 0.01
+T: 0 0 : 59 : 62 : 0.03
+T: 0 0 : 59 : 59 : 0.06
+T: 0 0 : 59 : 65 : 0.06
+T: 0 0 : 59 : 31 : 0.06
+T: 0 0 : 59 : 29 : 0.36
+T: 0 0 : 59 : 32 : 0.12
+T: 0 0 : 59 : 35 : 0.06
+T: 0 0 : 59 : 56 : 0.18
+T: 0 0 : 59 : 58 : 0.03
+T: 0 0 : 60 : 70 : 0.01
+T: 0 0 : 60 : 69 : 0.03
+T: 0 0 : 60 : 66 : 0.06
+T: 0 0 : 60 : 33 : 0.18
+T: 0 0 : 60 : 61 : 0.03
+T: 0 0 : 60 : 30 : 0.36
+T: 0 0 : 60 : 34 : 0.06
+T: 0 0 : 60 : 57 : 0.18
+T: 0 0 : 60 : 60 : 0.09
+T: 0 0 : 61 : 71 : 0.01
+T: 0 0 : 61 : 70 : 0.02
+T: 0 0 : 61 : 62 : 0.03
+T: 0 0 : 61 : 61 : 0.06
+T: 0 0 : 61 : 67 : 0.06
+T: 0 0 : 61 : 33 : 0.06
+T: 0 0 : 61 : 31 : 0.36
+T: 0 0 : 61 : 34 : 0.12
+T: 0 0 : 61 : 69 : 0.01
+T: 0 0 : 61 : 35 : 0.06
+T: 0 0 : 61 : 58 : 0.18
+T: 0 0 : 61 : 60 : 0.03
+T: 0 0 : 62 : 71 : 0.03
+T: 0 0 : 62 : 70 : 0.01
+T: 0 0 : 62 : 68 : 0.06
+T: 0 0 : 62 : 34 : 0.06
+T: 0 0 : 62 : 62 : 0.09
+T: 0 0 : 62 : 32 : 0.36
+T: 0 0 : 62 : 35 : 0.18
+T: 0 0 : 62 : 59 : 0.18
+T: 0 0 : 62 : 61 : 0.03
+T: 0 0 : 63 : 75 : 0.01
+T: 0 0 : 63 : 66 : 0.02
+T: 0 0 : 63 : 64 : 0.02
+T: 0 0 : 63 : 63 : 0.16
+T: 0 0 : 63 : 36 : 0.48
+T: 0 0 : 63 : 57 : 0.01
+T: 0 0 : 63 : 73 : 0.01
+T: 0 0 : 63 : 39 : 0.06
+T: 0 0 : 63 : 37 : 0.06
+T: 0 0 : 63 : 54 : 0.08
+T: 0 0 : 63 : 72 : 0.08
+T: 0 0 : 63 : 55 : 0.01
+T: 0 0 : 64 : 76 : 0.01
+T: 0 0 : 64 : 67 : 0.02
+T: 0 0 : 64 : 65 : 0.02
+T: 0 0 : 64 : 64 : 0.14
+T: 0 0 : 64 : 63 : 0.02
+T: 0 0 : 64 : 58 : 0.01
+T: 0 0 : 64 : 73 : 0.07
+T: 0 0 : 64 : 56 : 0.01
+T: 0 0 : 64 : 36 : 0.06
+T: 0 0 : 64 : 74 : 0.01
+T: 0 0 : 64 : 40 : 0.06
+T: 0 0 : 64 : 37 : 0.42
+T: 0 0 : 64 : 54 : 0.01
+T: 0 0 : 64 : 72 : 0.01
+T: 0 0 : 64 : 38 : 0.06
+T: 0 0 : 64 : 55 : 0.07
+T: 0 0 : 65 : 77 : 0.01
+T: 0 0 : 65 : 74 : 0.08
+T: 0 0 : 65 : 68 : 0.02
+T: 0 0 : 65 : 65 : 0.16
+T: 0 0 : 65 : 64 : 0.02
+T: 0 0 : 65 : 59 : 0.01
+T: 0 0 : 65 : 37 : 0.06
+T: 0 0 : 65 : 41 : 0.06
+T: 0 0 : 65 : 38 : 0.48
+T: 0 0 : 65 : 55 : 0.01
+T: 0 0 : 65 : 73 : 0.01
+T: 0 0 : 65 : 56 : 0.08
+T: 0 0 : 66 : 78 : 0.01
+T: 0 0 : 66 : 72 : 0.06
+T: 0 0 : 66 : 69 : 0.02
+T: 0 0 : 66 : 67 : 0.02
+T: 0 0 : 66 : 66 : 0.04
+T: 0 0 : 66 : 63 : 0.12
+T: 0 0 : 66 : 60 : 0.01
+T: 0 0 : 66 : 75 : 0.02
+T: 0 0 : 66 : 58 : 0.01
+T: 0 0 : 66 : 39 : 0.12
+T: 0 0 : 66 : 36 : 0.36
+T: 0 0 : 66 : 57 : 0.02
+T: 0 0 : 66 : 40 : 0.06
+T: 0 0 : 66 : 54 : 0.06
+T: 0 0 : 66 : 76 : 0.01
+T: 0 0 : 66 : 42 : 0.06
+T: 0 0 : 67 : 79 : 0.01
+T: 0 0 : 67 : 75 : 0.01
+T: 0 0 : 67 : 43 : 0.06
+T: 0 0 : 67 : 55 : 0.06
+T: 0 0 : 67 : 41 : 0.06
+T: 0 0 : 67 : 58 : 0.01
+T: 0 0 : 67 : 77 : 0.01
+T: 0 0 : 67 : 40 : 0.06
+T: 0 0 : 67 : 57 : 0.01
+T: 0 0 : 67 : 37 : 0.36
+T: 0 0 : 67 : 76 : 0.01
+T: 0 0 : 67 : 39 : 0.06
+T: 0 0 : 67 : 73 : 0.06
+T: 0 0 : 67 : 59 : 0.01
+T: 0 0 : 67 : 61 : 0.01
+T: 0 0 : 67 : 64 : 0.12
+T: 0 0 : 67 : 66 : 0.02
+T: 0 0 : 67 : 67 : 0.02
+T: 0 0 : 67 : 68 : 0.02
+T: 0 0 : 67 : 70 : 0.02
+T: 0 0 : 68 : 80 : 0.01
+T: 0 0 : 68 : 77 : 0.02
+T: 0 0 : 68 : 71 : 0.02
+T: 0 0 : 68 : 68 : 0.04
+T: 0 0 : 68 : 67 : 0.02
+T: 0 0 : 68 : 65 : 0.12
+T: 0 0 : 68 : 62 : 0.01
+T: 0 0 : 68 : 76 : 0.01
+T: 0 0 : 68 : 59 : 0.02
+T: 0 0 : 68 : 74 : 0.06
+T: 0 0 : 68 : 40 : 0.06
+T: 0 0 : 68 : 38 : 0.36
+T: 0 0 : 68 : 44 : 0.06
+T: 0 0 : 68 : 41 : 0.12
+T: 0 0 : 68 : 58 : 0.01
+T: 0 0 : 68 : 56 : 0.06
+T: 0 0 : 69 : 79 : 0.01
+T: 0 0 : 69 : 75 : 0.06
+T: 0 0 : 69 : 70 : 0.02
+T: 0 0 : 69 : 69 : 0.06
+T: 0 0 : 69 : 66 : 0.12
+T: 0 0 : 69 : 42 : 0.18
+T: 0 0 : 69 : 39 : 0.36
+T: 0 0 : 69 : 60 : 0.03
+T: 0 0 : 69 : 43 : 0.06
+T: 0 0 : 69 : 57 : 0.06
+T: 0 0 : 69 : 78 : 0.03
+T: 0 0 : 69 : 61 : 0.01
+T: 0 0 : 70 : 80 : 0.01
+T: 0 0 : 70 : 71 : 0.02
+T: 0 0 : 70 : 70 : 0.04
+T: 0 0 : 70 : 69 : 0.02
+T: 0 0 : 70 : 67 : 0.12
+T: 0 0 : 70 : 79 : 0.02
+T: 0 0 : 70 : 62 : 0.01
+T: 0 0 : 70 : 76 : 0.06
+T: 0 0 : 70 : 42 : 0.06
+T: 0 0 : 70 : 40 : 0.36
+T: 0 0 : 70 : 78 : 0.01
+T: 0 0 : 70 : 61 : 0.02
+T: 0 0 : 70 : 44 : 0.06
+T: 0 0 : 70 : 58 : 0.06
+T: 0 0 : 70 : 43 : 0.12
+T: 0 0 : 70 : 60 : 0.01
+T: 0 0 : 71 : 80 : 0.03
+T: 0 0 : 71 : 71 : 0.06
+T: 0 0 : 71 : 70 : 0.02
+T: 0 0 : 71 : 68 : 0.12
+T: 0 0 : 71 : 77 : 0.06
+T: 0 0 : 71 : 43 : 0.06
+T: 0 0 : 71 : 41 : 0.36
+T: 0 0 : 71 : 79 : 0.01
+T: 0 0 : 71 : 62 : 0.03
+T: 0 0 : 71 : 59 : 0.06
+T: 0 0 : 71 : 44 : 0.18
+T: 0 0 : 71 : 61 : 0.01
+T: 0 0 : 72 : 75 : 0.03
+T: 0 0 : 72 : 73 : 0.03
+T: 0 0 : 72 : 72 : 0.24
+T: 0 0 : 72 : 45 : 0.48
+T: 0 0 : 72 : 66 : 0.01
+T: 0 0 : 72 : 48 : 0.06
+T: 0 0 : 72 : 46 : 0.06
+T: 0 0 : 72 : 63 : 0.08
+T: 0 0 : 72 : 64 : 0.01
+T: 0 0 : 73 : 76 : 0.03
+T: 0 0 : 73 : 74 : 0.03
+T: 0 0 : 73 : 73 : 0.21
+T: 0 0 : 73 : 72 : 0.03
+T: 0 0 : 73 : 67 : 0.01
+T: 0 0 : 73 : 65 : 0.01
+T: 0 0 : 73 : 45 : 0.06
+T: 0 0 : 73 : 49 : 0.06
+T: 0 0 : 73 : 46 : 0.42
+T: 0 0 : 73 : 63 : 0.01
+T: 0 0 : 73 : 47 : 0.06
+T: 0 0 : 73 : 64 : 0.07
+T: 0 0 : 74 : 77 : 0.03
+T: 0 0 : 74 : 74 : 0.24
+T: 0 0 : 74 : 73 : 0.03
+T: 0 0 : 74 : 68 : 0.01
+T: 0 0 : 74 : 46 : 0.06
+T: 0 0 : 74 : 50 : 0.06
+T: 0 0 : 74 : 47 : 0.48
+T: 0 0 : 74 : 64 : 0.01
+T: 0 0 : 74 : 65 : 0.08
+T: 0 0 : 75 : 78 : 0.03
+T: 0 0 : 75 : 76 : 0.03
+T: 0 0 : 75 : 75 : 0.06
+T: 0 0 : 75 : 72 : 0.18
+T: 0 0 : 75 : 69 : 0.01
+T: 0 0 : 75 : 67 : 0.01
+T: 0 0 : 75 : 48 : 0.12
+T: 0 0 : 75 : 45 : 0.36
+T: 0 0 : 75 : 66 : 0.02
+T: 0 0 : 75 : 49 : 0.06
+T: 0 0 : 75 : 63 : 0.06
+T: 0 0 : 75 : 51 : 0.06
+T: 0 0 : 76 : 79 : 0.03
+T: 0 0 : 76 : 77 : 0.03
+T: 0 0 : 76 : 76 : 0.03
+T: 0 0 : 76 : 75 : 0.03
+T: 0 0 : 76 : 73 : 0.18
+T: 0 0 : 76 : 70 : 0.01
+T: 0 0 : 76 : 68 : 0.01
+T: 0 0 : 76 : 48 : 0.06
+T: 0 0 : 76 : 46 : 0.36
+T: 0 0 : 76 : 66 : 0.01
+T: 0 0 : 76 : 49 : 0.06
+T: 0 0 : 76 : 67 : 0.01
+T: 0 0 : 76 : 50 : 0.06
+T: 0 0 : 76 : 64 : 0.06
+T: 0 0 : 76 : 52 : 0.06
+T: 0 0 : 77 : 80 : 0.03
+T: 0 0 : 77 : 77 : 0.06
+T: 0 0 : 77 : 76 : 0.03
+T: 0 0 : 77 : 74 : 0.18
+T: 0 0 : 77 : 71 : 0.01
+T: 0 0 : 77 : 68 : 0.02
+T: 0 0 : 77 : 49 : 0.06
+T: 0 0 : 77 : 47 : 0.36
+T: 0 0 : 77 : 53 : 0.06
+T: 0 0 : 77 : 50 : 0.12
+T: 0 0 : 77 : 67 : 0.01
+T: 0 0 : 77 : 65 : 0.06
+T: 0 1 : 80 : 80 : 0.24
+T: 0 1 : 80 : 79 : 0.03
+T: 0 1 : 80 : 77 : 0.03
+T: 0 1 : 80 : 52 : 0.06
+T: 0 1 : 80 : 50 : 0.06
+T: 0 1 : 80 : 71 : 0.08
+T: 0 1 : 80 : 68 : 0.01
+T: 0 1 : 80 : 53 : 0.48
+T: 0 1 : 80 : 70 : 0.01
+T: 0 1 : 79 : 80 : 0.03
+T: 0 1 : 79 : 79 : 0.21
+T: 0 1 : 79 : 78 : 0.03
+T: 0 1 : 79 : 76 : 0.03
+T: 0 1 : 79 : 71 : 0.01
+T: 0 1 : 79 : 51 : 0.06
+T: 0 1 : 79 : 49 : 0.06
+T: 0 1 : 79 : 70 : 0.07
+T: 0 1 : 79 : 53 : 0.06
+T: 0 1 : 79 : 67 : 0.01
+T: 0 1 : 79 : 52 : 0.42
+T: 0 1 : 79 : 69 : 0.01
+T: 0 1 : 78 : 79 : 0.03
+T: 0 1 : 78 : 78 : 0.24
+T: 0 1 : 78 : 75 : 0.03
+T: 0 1 : 78 : 51 : 0.48
+T: 0 1 : 78 : 48 : 0.06
+T: 0 1 : 78 : 69 : 0.08
+T: 0 1 : 78 : 52 : 0.06
+T: 0 1 : 78 : 66 : 0.01
+T: 0 1 : 78 : 70 : 0.01
+T: 0 1 : 35 : 62 : 0.08
+T: 0 1 : 35 : 61 : 0.01
+T: 0 1 : 35 : 44 : 0.08
+T: 0 1 : 35 : 43 : 0.01
+T: 0 1 : 35 : 41 : 0.01
+T: 0 1 : 35 : 7 : 0.06
+T: 0 1 : 35 : 35 : 0.16
+T: 0 1 : 35 : 5 : 0.06
+T: 0 1 : 35 : 59 : 0.01
+T: 0 1 : 35 : 8 : 0.48
+T: 0 1 : 35 : 32 : 0.02
+T: 0 1 : 35 : 34 : 0.02
+T: 0 1 : 34 : 62 : 0.01
+T: 0 1 : 34 : 61 : 0.07
+T: 0 1 : 34 : 44 : 0.01
+T: 0 1 : 34 : 60 : 0.01
+T: 0 1 : 34 : 43 : 0.07
+T: 0 1 : 34 : 35 : 0.02
+T: 0 1 : 34 : 34 : 0.14
+T: 0 1 : 34 : 40 : 0.01
+T: 0 1 : 34 : 6 : 0.06
+T: 0 1 : 34 : 4 : 0.06
+T: 0 1 : 34 : 58 : 0.01
+T: 0 1 : 34 : 7 : 0.42
+T: 0 1 : 34 : 42 : 0.01
+T: 0 1 : 34 : 8 : 0.06
+T: 0 1 : 34 : 31 : 0.02
+T: 0 1 : 34 : 33 : 0.02
+T: 0 1 : 33 : 61 : 0.01
+T: 0 1 : 33 : 60 : 0.08
+T: 0 1 : 33 : 43 : 0.01
+T: 0 1 : 33 : 42 : 0.08
+T: 0 1 : 33 : 39 : 0.01
+T: 0 1 : 33 : 57 : 0.01
+T: 0 1 : 33 : 6 : 0.48
+T: 0 1 : 33 : 34 : 0.02
+T: 0 1 : 33 : 3 : 0.06
+T: 0 1 : 33 : 7 : 0.06
+T: 0 1 : 33 : 30 : 0.02
+T: 0 1 : 33 : 33 : 0.16
+T: 0 1 : 32 : 62 : 0.06
+T: 0 1 : 32 : 44 : 0.06
+T: 0 1 : 32 : 58 : 0.01
+T: 0 1 : 32 : 41 : 0.02
+T: 0 1 : 32 : 40 : 0.01
+T: 0 1 : 32 : 35 : 0.12
+T: 0 1 : 32 : 32 : 0.04
+T: 0 1 : 32 : 38 : 0.01
+T: 0 1 : 32 : 4 : 0.06
+T: 0 1 : 32 : 2 : 0.06
+T: 0 1 : 32 : 56 : 0.01
+T: 0 1 : 32 : 5 : 0.12
+T: 0 1 : 32 : 59 : 0.02
+T: 0 1 : 32 : 8 : 0.36
+T: 0 1 : 32 : 29 : 0.02
+T: 0 1 : 32 : 31 : 0.02
+T: 0 1 : 31 : 61 : 0.06
+T: 0 1 : 31 : 59 : 0.01
+T: 0 1 : 31 : 58 : 0.01
+T: 0 1 : 31 : 57 : 0.01
+T: 0 1 : 31 : 28 : 0.02
+T: 0 1 : 31 : 7 : 0.36
+T: 0 1 : 31 : 5 : 0.06
+T: 0 1 : 31 : 39 : 0.01
+T: 0 1 : 31 : 41 : 0.01
+T: 0 1 : 31 : 4 : 0.06
+T: 0 1 : 31 : 55 : 0.01
+T: 0 1 : 31 : 1 : 0.06
+T: 0 1 : 31 : 37 : 0.01
+T: 0 1 : 31 : 30 : 0.02
+T: 0 1 : 31 : 31 : 0.02
+T: 0 1 : 31 : 32 : 0.02
+T: 0 1 : 31 : 34 : 0.12
+T: 0 1 : 31 : 3 : 0.06
+T: 0 1 : 31 : 40 : 0.01
+T: 0 1 : 31 : 43 : 0.06
+T: 0 1 : 30 : 60 : 0.06
+T: 0 1 : 30 : 58 : 0.01
+T: 0 1 : 30 : 42 : 0.06
+T: 0 1 : 30 : 39 : 0.02
+T: 0 1 : 30 : 36 : 0.01
+T: 0 1 : 30 : 33 : 0.12
+T: 0 1 : 30 : 31 : 0.02
+T: 0 1 : 30 : 54 : 0.01
+T: 0 1 : 30 : 3 : 0.12
+T: 0 1 : 30 : 0 : 0.06
+T: 0 1 : 30 : 4 : 0.06
+T: 0 1 : 30 : 57 : 0.02
+T: 0 1 : 30 : 40 : 0.01
+T: 0 1 : 30 : 6 : 0.36
+T: 0 1 : 30 : 27 : 0.02
+T: 0 1 : 30 : 30 : 0.04
+T: 0 1 : 29 : 59 : 0.06
+T: 0 1 : 29 : 41 : 0.06
+T: 0 1 : 29 : 55 : 0.01
+T: 0 1 : 29 : 38 : 0.03
+T: 0 1 : 29 : 37 : 0.01
+T: 0 1 : 29 : 2 : 0.18
+T: 0 1 : 29 : 1 : 0.06
+T: 0 1 : 29 : 29 : 0.06
+T: 0 1 : 29 : 56 : 0.03
+T: 0 1 : 29 : 5 : 0.36
+T: 0 1 : 29 : 28 : 0.02
+T: 0 1 : 29 : 32 : 0.12
+T: 0 1 : 28 : 58 : 0.06
+T: 0 1 : 28 : 56 : 0.01
+T: 0 1 : 28 : 40 : 0.06
+T: 0 1 : 28 : 54 : 0.01
+T: 0 1 : 28 : 37 : 0.02
+T: 0 1 : 28 : 31 : 0.12
+T: 0 1 : 28 : 29 : 0.02
+T: 0 1 : 28 : 1 : 0.12
+T: 0 1 : 28 : 0 : 0.06
+T: 0 1 : 28 : 28 : 0.04
+T: 0 1 : 28 : 36 : 0.01
+T: 0 1 : 28 : 2 : 0.06
+T: 0 1 : 28 : 55 : 0.02
+T: 0 1 : 28 : 38 : 0.01
+T: 0 1 : 28 : 4 : 0.36
+T: 0 1 : 28 : 27 : 0.02
+T: 0 1 : 27 : 57 : 0.06
+T: 0 1 : 27 : 55 : 0.01
+T: 0 1 : 27 : 39 : 0.06
+T: 0 1 : 27 : 36 : 0.03
+T: 0 1 : 27 : 1 : 0.06
+T: 0 1 : 27 : 0 : 0.18
+T: 0 1 : 27 : 28 : 0.02
+T: 0 1 : 27 : 54 : 0.03
+T: 0 1 : 27 : 37 : 0.01
+T: 0 1 : 27 : 3 : 0.36
+T: 0 1 : 27 : 27 : 0.06
+T: 0 1 : 27 : 30 : 0.12
+T: 0 1 : 26 : 53 : 0.08
+T: 0 1 : 26 : 52 : 0.01
+T: 0 1 : 26 : 50 : 0.01
+T: 0 1 : 26 : 16 : 0.01
+T: 0 1 : 26 : 23 : 0.08
+T: 0 1 : 26 : 14 : 0.01
+T: 0 1 : 26 : 17 : 0.08
+T: 0 1 : 26 : 25 : 0.08
+T: 0 1 : 26 : 26 : 0.64
+T: 0 1 : 25 : 53 : 0.01
+T: 0 1 : 25 : 52 : 0.07
+T: 0 1 : 25 : 26 : 0.08
+T: 0 1 : 25 : 25 : 0.56
+T: 0 1 : 25 : 49 : 0.01
+T: 0 1 : 25 : 15 : 0.01
+T: 0 1 : 25 : 22 : 0.08
+T: 0 1 : 25 : 13 : 0.01
+T: 0 1 : 25 : 16 : 0.07
+T: 0 1 : 25 : 51 : 0.01
+T: 0 1 : 25 : 17 : 0.01
+T: 0 1 : 25 : 24 : 0.08
+T: 0 1 : 24 : 52 : 0.01
+T: 0 1 : 24 : 51 : 0.08
+T: 0 1 : 24 : 48 : 0.01
+T: 0 1 : 24 : 15 : 0.08
+T: 0 1 : 24 : 12 : 0.01
+T: 0 1 : 24 : 16 : 0.01
+T: 0 1 : 24 : 21 : 0.08
+T: 0 1 : 24 : 24 : 0.64
+T: 0 1 : 24 : 25 : 0.08
+T: 0 1 : 23 : 53 : 0.06
+T: 0 1 : 23 : 50 : 0.02
+T: 0 1 : 23 : 49 : 0.01
+T: 0 1 : 23 : 26 : 0.48
+T: 0 1 : 23 : 23 : 0.16
+T: 0 1 : 23 : 47 : 0.01
+T: 0 1 : 23 : 13 : 0.01
+T: 0 1 : 23 : 20 : 0.08
+T: 0 1 : 23 : 11 : 0.01
+T: 0 1 : 23 : 14 : 0.02
+T: 0 1 : 23 : 17 : 0.06
+T: 0 1 : 23 : 22 : 0.08
+T: 0 1 : 22 : 52 : 0.06
+T: 0 1 : 22 : 49 : 0.01
+T: 0 1 : 22 : 25 : 0.48
+T: 0 1 : 22 : 23 : 0.08
+T: 0 1 : 22 : 22 : 0.08
+T: 0 1 : 22 : 21 : 0.08
+T: 0 1 : 22 : 46 : 0.01
+T: 0 1 : 22 : 12 : 0.01
+T: 0 1 : 22 : 19 : 0.08
+T: 0 1 : 22 : 10 : 0.01
+T: 0 1 : 22 : 13 : 0.01
+T: 0 1 : 22 : 48 : 0.01
+T: 0 1 : 22 : 14 : 0.01
+T: 0 1 : 22 : 50 : 0.01
+T: 0 1 : 22 : 16 : 0.06
+T: 0 1 : 21 : 51 : 0.06
+T: 0 1 : 21 : 48 : 0.02
+T: 0 1 : 21 : 45 : 0.01
+T: 0 1 : 21 : 24 : 0.48
+T: 0 1 : 21 : 22 : 0.08
+T: 0 1 : 21 : 12 : 0.02
+T: 0 1 : 21 : 9 : 0.01
+T: 0 1 : 21 : 13 : 0.01
+T: 0 1 : 21 : 49 : 0.01
+T: 0 1 : 21 : 15 : 0.06
+T: 0 1 : 21 : 18 : 0.08
+T: 0 1 : 21 : 21 : 0.16
+T: 0 1 : 20 : 50 : 0.06
+T: 0 1 : 20 : 47 : 0.03
+T: 0 1 : 20 : 46 : 0.01
+T: 0 1 : 20 : 11 : 0.03
+T: 0 1 : 20 : 10 : 0.01
+T: 0 1 : 20 : 14 : 0.06
+T: 0 1 : 20 : 19 : 0.08
+T: 0 1 : 20 : 20 : 0.24
+T: 0 1 : 20 : 23 : 0.48
+T: 0 1 : 19 : 49 : 0.06
+T: 0 1 : 19 : 46 : 0.02
+T: 0 1 : 19 : 22 : 0.48
+T: 0 1 : 19 : 20 : 0.08
+T: 0 1 : 19 : 10 : 0.02
+T: 0 1 : 19 : 9 : 0.01
+T: 0 1 : 19 : 45 : 0.01
+T: 0 1 : 19 : 11 : 0.01
+T: 0 1 : 19 : 18 : 0.08
+T: 0 1 : 19 : 47 : 0.01
+T: 0 1 : 19 : 13 : 0.06
+T: 0 1 : 19 : 19 : 0.16
+T: 0 1 : 18 : 48 : 0.06
+T: 0 1 : 18 : 45 : 0.03
+T: 0 1 : 18 : 10 : 0.01
+T: 0 1 : 18 : 9 : 0.03
+T: 0 1 : 18 : 46 : 0.01
+T: 0 1 : 18 : 12 : 0.06
+T: 0 1 : 18 : 19 : 0.08
+T: 0 1 : 18 : 18 : 0.24
+T: 0 1 : 18 : 21 : 0.48
+T: 0 1 : 17 : 44 : 0.08
+T: 0 1 : 17 : 43 : 0.01
+T: 0 1 : 17 : 26 : 0.08
+T: 0 1 : 17 : 23 : 0.01
+T: 0 1 : 17 : 41 : 0.01
+T: 0 1 : 17 : 7 : 0.01
+T: 0 1 : 17 : 14 : 0.07
+T: 0 1 : 17 : 5 : 0.01
+T: 0 1 : 17 : 25 : 0.01
+T: 0 1 : 17 : 8 : 0.08
+T: 0 1 : 17 : 16 : 0.07
+T: 0 1 : 17 : 17 : 0.56
+T: 0 1 : 16 : 44 : 0.01
+T: 0 1 : 16 : 43 : 0.07
+T: 0 1 : 16 : 26 : 0.01
+T: 0 1 : 16 : 22 : 0.01
+T: 0 1 : 16 : 17 : 0.07
+T: 0 1 : 16 : 16 : 0.49
+T: 0 1 : 16 : 40 : 0.01
+T: 0 1 : 16 : 6 : 0.01
+T: 0 1 : 16 : 13 : 0.07
+T: 0 1 : 16 : 4 : 0.01
+T: 0 1 : 16 : 24 : 0.01
+T: 0 1 : 16 : 7 : 0.07
+T: 0 1 : 16 : 42 : 0.01
+T: 0 1 : 16 : 25 : 0.07
+T: 0 1 : 16 : 8 : 0.01
+T: 0 1 : 16 : 15 : 0.07
+T: 0 1 : 5 : 35 : 0.06
+T: 0 1 : 5 : 32 : 0.02
+T: 0 1 : 5 : 29 : 0.01
+T: 0 1 : 5 : 17 : 0.06
+T: 0 1 : 5 : 31 : 0.01
+T: 0 1 : 5 : 14 : 0.02
+T: 0 1 : 5 : 4 : 0.08
+T: 0 1 : 5 : 11 : 0.01
+T: 0 1 : 5 : 2 : 0.08
+T: 0 1 : 5 : 5 : 0.16
+T: 0 1 : 5 : 8 : 0.48
+T: 0 1 : 5 : 13 : 0.01
+T: 0 1 : 4 : 34 : 0.06
+T: 0 1 : 4 : 32 : 0.01
+T: 0 1 : 4 : 28 : 0.01
+T: 0 1 : 4 : 16 : 0.06
+T: 0 1 : 4 : 31 : 0.01
+T: 0 1 : 4 : 14 : 0.01
+T: 0 1 : 4 : 30 : 0.01
+T: 0 1 : 4 : 13 : 0.01
+T: 0 1 : 4 : 12 : 0.01
+T: 0 1 : 4 : 3 : 0.08
+T: 0 1 : 4 : 10 : 0.01
+T: 0 1 : 4 : 1 : 0.08
+T: 0 1 : 4 : 4 : 0.08
+T: 0 1 : 4 : 5 : 0.08
+T: 0 1 : 4 : 7 : 0.48
+T: 0 1 : 3 : 33 : 0.06
+T: 0 1 : 3 : 31 : 0.01
+T: 0 1 : 3 : 27 : 0.01
+T: 0 1 : 3 : 15 : 0.06
+T: 0 1 : 3 : 30 : 0.02
+T: 0 1 : 3 : 13 : 0.01
+T: 0 1 : 3 : 3 : 0.16
+T: 0 1 : 3 : 0 : 0.08
+T: 0 1 : 3 : 4 : 0.08
+T: 0 1 : 3 : 6 : 0.48
+T: 0 1 : 3 : 9 : 0.01
+T: 0 1 : 3 : 12 : 0.02
+T: 0 1 : 2 : 32 : 0.06
+T: 0 1 : 2 : 29 : 0.03
+T: 0 1 : 2 : 2 : 0.24
+T: 0 1 : 2 : 1 : 0.08
+T: 0 1 : 2 : 5 : 0.48
+T: 0 1 : 2 : 10 : 0.01
+T: 0 1 : 2 : 28 : 0.01
+T: 0 1 : 2 : 11 : 0.03
+T: 0 1 : 2 : 14 : 0.06
+T: 0 1 : 0 : 30 : 0.06
+T: 0 1 : 0 : 28 : 0.01
+T: 0 1 : 0 : 1 : 0.08
+T: 0 1 : 0 : 0 : 0.24
+T: 0 1 : 0 : 3 : 0.48
+T: 0 1 : 0 : 27 : 0.03
+T: 0 1 : 0 : 10 : 0.01
+T: 0 1 : 0 : 9 : 0.03
+T: 0 1 : 0 : 12 : 0.06
+T: 0 1 : 1 : 31 : 0.06
+T: 0 1 : 1 : 29 : 0.01
+T: 0 1 : 1 : 13 : 0.06
+T: 0 1 : 1 : 28 : 0.02
+T: 0 1 : 1 : 11 : 0.01
+T: 0 1 : 1 : 1 : 0.16
+T: 0 1 : 1 : 0 : 0.08
+T: 0 1 : 1 : 2 : 0.08
+T: 0 1 : 1 : 9 : 0.01
+T: 0 1 : 1 : 4 : 0.48
+T: 0 1 : 1 : 27 : 0.01
+T: 0 1 : 1 : 10 : 0.02
+T: 0 1 : 6 : 34 : 0.01
+T: 0 1 : 6 : 30 : 0.01
+T: 0 1 : 6 : 6 : 0.64
+T: 0 1 : 6 : 3 : 0.08
+T: 0 1 : 6 : 7 : 0.08
+T: 0 1 : 6 : 12 : 0.01
+T: 0 1 : 6 : 15 : 0.08
+T: 0 1 : 6 : 33 : 0.08
+T: 0 1 : 6 : 16 : 0.01
+T: 0 1 : 7 : 35 : 0.01
+T: 0 1 : 7 : 31 : 0.01
+T: 0 1 : 7 : 34 : 0.07
+T: 0 1 : 7 : 17 : 0.01
+T: 0 1 : 7 : 33 : 0.01
+T: 0 1 : 7 : 16 : 0.07
+T: 0 1 : 7 : 6 : 0.08
+T: 0 1 : 7 : 13 : 0.01
+T: 0 1 : 7 : 4 : 0.08
+T: 0 1 : 7 : 7 : 0.56
+T: 0 1 : 7 : 8 : 0.08
+T: 0 1 : 7 : 15 : 0.01
+T: 0 1 : 8 : 35 : 0.08
+T: 0 1 : 8 : 32 : 0.01
+T: 0 1 : 8 : 7 : 0.08
+T: 0 1 : 8 : 14 : 0.01
+T: 0 1 : 8 : 5 : 0.08
+T: 0 1 : 8 : 8 : 0.64
+T: 0 1 : 8 : 16 : 0.01
+T: 0 1 : 8 : 34 : 0.01
+T: 0 1 : 8 : 17 : 0.08
+T: 0 1 : 9 : 39 : 0.06
+T: 0 1 : 9 : 21 : 0.06
+T: 0 1 : 9 : 36 : 0.03
+T: 0 1 : 9 : 19 : 0.01
+T: 0 1 : 9 : 18 : 0.03
+T: 0 1 : 9 : 1 : 0.01
+T: 0 1 : 9 : 0 : 0.03
+T: 0 1 : 9 : 37 : 0.01
+T: 0 1 : 9 : 3 : 0.06
+T: 0 1 : 9 : 10 : 0.07
+T: 0 1 : 9 : 9 : 0.21
+T: 0 1 : 9 : 12 : 0.42
+T: 0 1 : 10 : 40 : 0.06
+T: 0 1 : 10 : 22 : 0.06
+T: 0 1 : 10 : 37 : 0.02
+T: 0 1 : 10 : 20 : 0.01
+T: 0 1 : 10 : 13 : 0.42
+T: 0 1 : 10 : 11 : 0.07
+T: 0 1 : 10 : 18 : 0.01
+T: 0 1 : 10 : 1 : 0.02
+T: 0 1 : 10 : 0 : 0.01
+T: 0 1 : 10 : 36 : 0.01
+T: 0 1 : 10 : 19 : 0.02
+T: 0 1 : 10 : 2 : 0.01
+T: 0 1 : 10 : 9 : 0.07
+T: 0 1 : 10 : 38 : 0.01
+T: 0 1 : 10 : 4 : 0.06
+T: 0 1 : 10 : 10 : 0.14
+T: 0 1 : 11 : 41 : 0.06
+T: 0 1 : 11 : 38 : 0.03
+T: 0 1 : 11 : 23 : 0.06
+T: 0 1 : 11 : 37 : 0.01
+T: 0 1 : 11 : 20 : 0.03
+T: 0 1 : 11 : 19 : 0.01
+T: 0 1 : 11 : 2 : 0.03
+T: 0 1 : 11 : 1 : 0.01
+T: 0 1 : 11 : 5 : 0.06
+T: 0 1 : 11 : 10 : 0.07
+T: 0 1 : 11 : 11 : 0.21
+T: 0 1 : 11 : 14 : 0.42
+T: 0 1 : 12 : 42 : 0.06
+T: 0 1 : 12 : 36 : 0.01
+T: 0 1 : 12 : 24 : 0.06
+T: 0 1 : 12 : 39 : 0.02
+T: 0 1 : 12 : 22 : 0.01
+T: 0 1 : 12 : 18 : 0.01
+T: 0 1 : 12 : 15 : 0.42
+T: 0 1 : 12 : 13 : 0.07
+T: 0 1 : 12 : 3 : 0.02
+T: 0 1 : 12 : 0 : 0.01
+T: 0 1 : 12 : 21 : 0.02
+T: 0 1 : 12 : 4 : 0.01
+T: 0 1 : 12 : 40 : 0.01
+T: 0 1 : 12 : 6 : 0.06
+T: 0 1 : 12 : 9 : 0.07
+T: 0 1 : 12 : 12 : 0.14
+T: 0 1 : 13 : 43 : 0.06
+T: 0 1 : 13 : 39 : 0.01
+T: 0 1 : 13 : 7 : 0.06
+T: 0 1 : 13 : 5 : 0.01
+T: 0 1 : 13 : 22 : 0.01
+T: 0 1 : 13 : 41 : 0.01
+T: 0 1 : 13 : 4 : 0.01
+T: 0 1 : 13 : 21 : 0.01
+T: 0 1 : 13 : 1 : 0.01
+T: 0 1 : 13 : 10 : 0.07
+T: 0 1 : 13 : 40 : 0.01
+T: 0 1 : 13 : 3 : 0.01
+T: 0 1 : 13 : 37 : 0.01
+T: 0 1 : 13 : 12 : 0.07
+T: 0 1 : 13 : 13 : 0.07
+T: 0 1 : 13 : 14 : 0.07
+T: 0 1 : 13 : 16 : 0.42
+T: 0 1 : 13 : 19 : 0.01
+T: 0 1 : 13 : 23 : 0.01
+T: 0 1 : 13 : 25 : 0.06
+T: 0 1 : 14 : 44 : 0.06
+T: 0 1 : 14 : 41 : 0.02
+T: 0 1 : 14 : 26 : 0.06
+T: 0 1 : 14 : 40 : 0.01
+T: 0 1 : 14 : 23 : 0.02
+T: 0 1 : 14 : 20 : 0.01
+T: 0 1 : 14 : 17 : 0.42
+T: 0 1 : 14 : 14 : 0.14
+T: 0 1 : 14 : 38 : 0.01
+T: 0 1 : 14 : 4 : 0.01
+T: 0 1 : 14 : 11 : 0.07
+T: 0 1 : 14 : 2 : 0.01
+T: 0 1 : 14 : 22 : 0.01
+T: 0 1 : 14 : 5 : 0.02
+T: 0 1 : 14 : 8 : 0.06
+T: 0 1 : 14 : 13 : 0.07
+T: 0 1 : 15 : 43 : 0.01
+T: 0 1 : 15 : 39 : 0.01
+T: 0 1 : 15 : 42 : 0.08
+T: 0 1 : 15 : 25 : 0.01
+T: 0 1 : 15 : 21 : 0.01
+T: 0 1 : 15 : 6 : 0.08
+T: 0 1 : 15 : 3 : 0.01
+T: 0 1 : 15 : 24 : 0.08
+T: 0 1 : 15 : 7 : 0.01
+T: 0 1 : 15 : 12 : 0.07
+T: 0 1 : 15 : 15 : 0.56
+T: 0 1 : 15 : 16 : 0.07
+T: 0 1 : 36 : 66 : 0.06
+T: 0 1 : 36 : 48 : 0.06
+T: 0 1 : 36 : 39 : 0.06
+T: 0 1 : 36 : 37 : 0.01
+T: 0 1 : 36 : 36 : 0.03
+T: 0 1 : 36 : 9 : 0.18
+T: 0 1 : 36 : 64 : 0.01
+T: 0 1 : 36 : 30 : 0.06
+T: 0 1 : 36 : 63 : 0.03
+T: 0 1 : 36 : 46 : 0.01
+T: 0 1 : 36 : 12 : 0.36
+T: 0 1 : 36 : 10 : 0.06
+T: 0 1 : 36 : 27 : 0.03
+T: 0 1 : 36 : 45 : 0.03
+T: 0 1 : 36 : 28 : 0.01
+T: 0 1 : 37 : 67 : 0.06
+T: 0 1 : 37 : 63 : 0.01
+T: 0 1 : 37 : 65 : 0.01
+T: 0 1 : 37 : 28 : 0.02
+T: 0 1 : 37 : 11 : 0.06
+T: 0 1 : 37 : 45 : 0.01
+T: 0 1 : 37 : 64 : 0.02
+T: 0 1 : 37 : 27 : 0.01
+T: 0 1 : 37 : 13 : 0.36
+T: 0 1 : 37 : 10 : 0.12
+T: 0 1 : 37 : 47 : 0.01
+T: 0 1 : 37 : 29 : 0.01
+T: 0 1 : 37 : 9 : 0.06
+T: 0 1 : 37 : 46 : 0.02
+T: 0 1 : 37 : 31 : 0.06
+T: 0 1 : 37 : 36 : 0.01
+T: 0 1 : 37 : 37 : 0.02
+T: 0 1 : 37 : 38 : 0.01
+T: 0 1 : 37 : 40 : 0.06
+T: 0 1 : 37 : 49 : 0.06
+T: 0 1 : 38 : 68 : 0.06
+T: 0 1 : 38 : 50 : 0.06
+T: 0 1 : 38 : 64 : 0.01
+T: 0 1 : 38 : 47 : 0.03
+T: 0 1 : 38 : 41 : 0.06
+T: 0 1 : 38 : 38 : 0.03
+T: 0 1 : 38 : 37 : 0.01
+T: 0 1 : 38 : 32 : 0.06
+T: 0 1 : 38 : 10 : 0.06
+T: 0 1 : 38 : 65 : 0.03
+T: 0 1 : 38 : 14 : 0.36
+T: 0 1 : 38 : 11 : 0.18
+T: 0 1 : 38 : 28 : 0.01
+T: 0 1 : 38 : 46 : 0.01
+T: 0 1 : 38 : 29 : 0.03
+T: 0 1 : 39 : 69 : 0.06
+T: 0 1 : 39 : 66 : 0.02
+T: 0 1 : 39 : 63 : 0.01
+T: 0 1 : 39 : 15 : 0.36
+T: 0 1 : 39 : 27 : 0.01
+T: 0 1 : 39 : 13 : 0.06
+T: 0 1 : 39 : 67 : 0.01
+T: 0 1 : 39 : 30 : 0.02
+T: 0 1 : 39 : 9 : 0.06
+T: 0 1 : 39 : 49 : 0.01
+T: 0 1 : 39 : 12 : 0.12
+T: 0 1 : 39 : 31 : 0.01
+T: 0 1 : 39 : 48 : 0.02
+T: 0 1 : 39 : 33 : 0.06
+T: 0 1 : 39 : 36 : 0.01
+T: 0 1 : 39 : 39 : 0.02
+T: 0 1 : 39 : 40 : 0.01
+T: 0 1 : 39 : 42 : 0.06
+T: 0 1 : 39 : 45 : 0.01
+T: 0 1 : 39 : 51 : 0.06
+T: 0 1 : 40 : 70 : 0.06
+T: 0 1 : 40 : 66 : 0.01
+T: 0 1 : 40 : 64 : 0.01
+T: 0 1 : 40 : 52 : 0.06
+T: 0 1 : 40 : 48 : 0.01
+T: 0 1 : 40 : 16 : 0.36
+T: 0 1 : 40 : 28 : 0.01
+T: 0 1 : 40 : 14 : 0.06
+T: 0 1 : 40 : 68 : 0.01
+T: 0 1 : 40 : 31 : 0.01
+T: 0 1 : 40 : 50 : 0.01
+T: 0 1 : 40 : 13 : 0.06
+T: 0 1 : 40 : 67 : 0.01
+T: 0 1 : 40 : 30 : 0.01
+T: 0 1 : 40 : 10 : 0.06
+T: 0 1 : 40 : 49 : 0.01
+T: 0 1 : 40 : 12 : 0.06
+T: 0 1 : 40 : 46 : 0.01
+T: 0 1 : 40 : 32 : 0.01
+T: 0 1 : 40 : 34 : 0.06
+T: 0 1 : 40 : 37 : 0.01
+T: 0 1 : 40 : 39 : 0.01
+T: 0 1 : 40 : 40 : 0.01
+T: 0 1 : 40 : 41 : 0.01
+T: 0 1 : 40 : 43 : 0.06
+T: 0 1 : 41 : 71 : 0.06
+T: 0 1 : 41 : 67 : 0.01
+T: 0 1 : 41 : 65 : 0.01
+T: 0 1 : 41 : 29 : 0.01
+T: 0 1 : 41 : 68 : 0.02
+T: 0 1 : 41 : 31 : 0.01
+T: 0 1 : 41 : 14 : 0.12
+T: 0 1 : 41 : 17 : 0.36
+T: 0 1 : 41 : 11 : 0.06
+T: 0 1 : 41 : 47 : 0.01
+T: 0 1 : 41 : 32 : 0.02
+T: 0 1 : 41 : 49 : 0.01
+T: 0 1 : 41 : 35 : 0.06
+T: 0 1 : 41 : 38 : 0.01
+T: 0 1 : 41 : 40 : 0.01
+T: 0 1 : 41 : 41 : 0.02
+T: 0 1 : 41 : 44 : 0.06
+T: 0 1 : 41 : 13 : 0.06
+T: 0 1 : 41 : 50 : 0.02
+T: 0 1 : 41 : 53 : 0.06
+T: 0 1 : 42 : 70 : 0.01
+T: 0 1 : 42 : 69 : 0.08
+T: 0 1 : 42 : 52 : 0.01
+T: 0 1 : 42 : 48 : 0.01
+T: 0 1 : 42 : 43 : 0.01
+T: 0 1 : 42 : 42 : 0.08
+T: 0 1 : 42 : 39 : 0.01
+T: 0 1 : 42 : 66 : 0.01
+T: 0 1 : 42 : 15 : 0.48
+T: 0 1 : 42 : 12 : 0.06
+T: 0 1 : 42 : 33 : 0.08
+T: 0 1 : 42 : 16 : 0.06
+T: 0 1 : 42 : 30 : 0.01
+T: 0 1 : 42 : 51 : 0.08
+T: 0 1 : 42 : 34 : 0.01
+T: 0 1 : 43 : 69 : 0.01
+T: 0 1 : 43 : 67 : 0.01
+T: 0 1 : 43 : 70 : 0.07
+T: 0 1 : 43 : 33 : 0.01
+T: 0 1 : 43 : 31 : 0.01
+T: 0 1 : 43 : 17 : 0.06
+T: 0 1 : 43 : 71 : 0.01
+T: 0 1 : 43 : 34 : 0.07
+T: 0 1 : 43 : 51 : 0.01
+T: 0 1 : 43 : 13 : 0.06
+T: 0 1 : 43 : 49 : 0.01
+T: 0 1 : 43 : 35 : 0.01
+T: 0 1 : 43 : 15 : 0.06
+T: 0 1 : 43 : 52 : 0.07
+T: 0 1 : 43 : 40 : 0.01
+T: 0 1 : 43 : 42 : 0.01
+T: 0 1 : 43 : 43 : 0.07
+T: 0 1 : 43 : 44 : 0.01
+T: 0 1 : 43 : 16 : 0.42
+T: 0 1 : 43 : 53 : 0.01
+T: 0 1 : 44 : 71 : 0.08
+T: 0 1 : 44 : 70 : 0.01
+T: 0 1 : 44 : 53 : 0.08
+T: 0 1 : 44 : 44 : 0.08
+T: 0 1 : 44 : 43 : 0.01
+T: 0 1 : 44 : 41 : 0.01
+T: 0 1 : 44 : 50 : 0.01
+T: 0 1 : 44 : 16 : 0.06
+T: 0 1 : 44 : 14 : 0.06
+T: 0 1 : 44 : 52 : 0.01
+T: 0 1 : 44 : 35 : 0.08
+T: 0 1 : 44 : 32 : 0.01
+T: 0 1 : 44 : 68 : 0.01
+T: 0 1 : 44 : 17 : 0.48
+T: 0 1 : 44 : 34 : 0.01
+T: 0 1 : 45 : 75 : 0.06
+T: 0 1 : 45 : 48 : 0.12
+T: 0 1 : 45 : 46 : 0.02
+T: 0 1 : 45 : 45 : 0.06
+T: 0 1 : 45 : 18 : 0.18
+T: 0 1 : 45 : 73 : 0.01
+T: 0 1 : 45 : 39 : 0.06
+T: 0 1 : 45 : 72 : 0.03
+T: 0 1 : 45 : 21 : 0.36
+T: 0 1 : 45 : 19 : 0.06
+T: 0 1 : 45 : 36 : 0.03
+T: 0 1 : 45 : 37 : 0.01
+T: 0 1 : 46 : 76 : 0.06
+T: 0 1 : 46 : 49 : 0.12
+T: 0 1 : 46 : 47 : 0.02
+T: 0 1 : 46 : 46 : 0.04
+T: 0 1 : 46 : 45 : 0.02
+T: 0 1 : 46 : 74 : 0.01
+T: 0 1 : 46 : 40 : 0.06
+T: 0 1 : 46 : 72 : 0.01
+T: 0 1 : 46 : 38 : 0.01
+T: 0 1 : 46 : 18 : 0.06
+T: 0 1 : 46 : 73 : 0.02
+T: 0 1 : 46 : 22 : 0.36
+T: 0 1 : 46 : 19 : 0.12
+T: 0 1 : 46 : 36 : 0.01
+T: 0 1 : 46 : 20 : 0.06
+T: 0 1 : 46 : 37 : 0.02
+T: 0 1 : 47 : 77 : 0.06
+T: 0 1 : 47 : 73 : 0.01
+T: 0 1 : 47 : 50 : 0.12
+T: 0 1 : 47 : 47 : 0.06
+T: 0 1 : 47 : 46 : 0.02
+T: 0 1 : 47 : 41 : 0.06
+T: 0 1 : 47 : 19 : 0.06
+T: 0 1 : 47 : 74 : 0.03
+T: 0 1 : 47 : 23 : 0.36
+T: 0 1 : 47 : 20 : 0.18
+T: 0 1 : 47 : 37 : 0.01
+T: 0 1 : 47 : 38 : 0.03
+T: 0 1 : 48 : 78 : 0.06
+T: 0 1 : 48 : 51 : 0.12
+T: 0 1 : 48 : 49 : 0.02
+T: 0 1 : 48 : 48 : 0.04
+T: 0 1 : 48 : 45 : 0.02
+T: 0 1 : 48 : 76 : 0.01
+T: 0 1 : 48 : 42 : 0.06
+T: 0 1 : 48 : 40 : 0.01
+T: 0 1 : 48 : 72 : 0.01
+T: 0 1 : 48 : 21 : 0.12
+T: 0 1 : 48 : 18 : 0.06
+T: 0 1 : 48 : 39 : 0.02
+T: 0 1 : 48 : 22 : 0.06
+T: 0 1 : 48 : 36 : 0.01
+T: 0 1 : 48 : 75 : 0.02
+T: 0 1 : 48 : 24 : 0.36
+T: 0 1 : 49 : 79 : 0.06
+T: 0 1 : 49 : 75 : 0.01
+T: 0 1 : 49 : 25 : 0.36
+T: 0 1 : 49 : 37 : 0.01
+T: 0 1 : 49 : 23 : 0.06
+T: 0 1 : 49 : 77 : 0.01
+T: 0 1 : 49 : 40 : 0.01
+T: 0 1 : 49 : 22 : 0.06
+T: 0 1 : 49 : 76 : 0.01
+T: 0 1 : 49 : 39 : 0.01
+T: 0 1 : 49 : 73 : 0.01
+T: 0 1 : 49 : 19 : 0.06
+T: 0 1 : 49 : 21 : 0.06
+T: 0 1 : 49 : 41 : 0.01
+T: 0 1 : 49 : 43 : 0.06
+T: 0 1 : 49 : 46 : 0.02
+T: 0 1 : 49 : 48 : 0.02
+T: 0 1 : 49 : 49 : 0.02
+T: 0 1 : 49 : 50 : 0.02
+T: 0 1 : 49 : 52 : 0.12
+T: 0 1 : 50 : 80 : 0.06
+T: 0 1 : 50 : 76 : 0.01
+T: 0 1 : 50 : 53 : 0.12
+T: 0 1 : 50 : 50 : 0.04
+T: 0 1 : 50 : 49 : 0.02
+T: 0 1 : 50 : 47 : 0.02
+T: 0 1 : 50 : 44 : 0.06
+T: 0 1 : 50 : 41 : 0.02
+T: 0 1 : 50 : 22 : 0.06
+T: 0 1 : 50 : 20 : 0.06
+T: 0 1 : 50 : 77 : 0.02
+T: 0 1 : 50 : 26 : 0.36
+T: 0 1 : 50 : 74 : 0.01
+T: 0 1 : 50 : 23 : 0.12
+T: 0 1 : 50 : 40 : 0.01
+T: 0 1 : 50 : 38 : 0.01
+T: 0 1 : 51 : 79 : 0.01
+T: 0 1 : 51 : 78 : 0.08
+T: 0 1 : 51 : 52 : 0.02
+T: 0 1 : 51 : 51 : 0.16
+T: 0 1 : 51 : 48 : 0.02
+T: 0 1 : 51 : 75 : 0.01
+T: 0 1 : 51 : 24 : 0.48
+T: 0 1 : 51 : 21 : 0.06
+T: 0 1 : 51 : 42 : 0.08
+T: 0 1 : 51 : 25 : 0.06
+T: 0 1 : 51 : 39 : 0.01
+T: 0 1 : 51 : 43 : 0.01
+T: 0 1 : 52 : 80 : 0.01
+T: 0 1 : 52 : 79 : 0.07
+T: 0 1 : 52 : 53 : 0.02
+T: 0 1 : 52 : 52 : 0.14
+T: 0 1 : 52 : 51 : 0.02
+T: 0 1 : 52 : 49 : 0.02
+T: 0 1 : 52 : 78 : 0.01
+T: 0 1 : 52 : 44 : 0.01
+T: 0 1 : 52 : 24 : 0.06
+T: 0 1 : 52 : 22 : 0.06
+T: 0 1 : 52 : 43 : 0.07
+T: 0 1 : 52 : 26 : 0.06
+T: 0 1 : 52 : 40 : 0.01
+T: 0 1 : 52 : 76 : 0.01
+T: 0 1 : 52 : 25 : 0.42
+T: 0 1 : 52 : 42 : 0.01
+T: 0 1 : 53 : 80 : 0.08
+T: 0 1 : 53 : 79 : 0.01
+T: 0 1 : 53 : 53 : 0.16
+T: 0 1 : 53 : 52 : 0.02
+T: 0 1 : 53 : 50 : 0.02
+T: 0 1 : 53 : 25 : 0.06
+T: 0 1 : 53 : 23 : 0.06
+T: 0 1 : 53 : 44 : 0.08
+T: 0 1 : 53 : 41 : 0.01
+T: 0 1 : 53 : 77 : 0.01
+T: 0 1 : 53 : 26 : 0.48
+T: 0 1 : 53 : 43 : 0.01
+T: 0 1 : 54 : 66 : 0.06
+T: 0 1 : 54 : 63 : 0.03
+T: 0 1 : 54 : 28 : 0.06
+T: 0 1 : 54 : 27 : 0.18
+T: 0 1 : 54 : 55 : 0.03
+T: 0 1 : 54 : 64 : 0.01
+T: 0 1 : 54 : 30 : 0.36
+T: 0 1 : 54 : 54 : 0.09
+T: 0 1 : 54 : 57 : 0.18
+T: 0 1 : 55 : 67 : 0.06
+T: 0 1 : 55 : 64 : 0.02
+T: 0 1 : 55 : 58 : 0.18
+T: 0 1 : 55 : 56 : 0.03
+T: 0 1 : 55 : 28 : 0.12
+T: 0 1 : 55 : 27 : 0.06
+T: 0 1 : 55 : 55 : 0.06
+T: 0 1 : 55 : 63 : 0.01
+T: 0 1 : 55 : 29 : 0.06
+T: 0 1 : 55 : 65 : 0.01
+T: 0 1 : 55 : 31 : 0.36
+T: 0 1 : 55 : 54 : 0.03
+T: 0 1 : 56 : 68 : 0.06
+T: 0 1 : 56 : 65 : 0.03
+T: 0 1 : 56 : 64 : 0.01
+T: 0 1 : 56 : 29 : 0.18
+T: 0 1 : 56 : 28 : 0.06
+T: 0 1 : 56 : 56 : 0.09
+T: 0 1 : 56 : 32 : 0.36
+T: 0 1 : 56 : 55 : 0.03
+T: 0 1 : 56 : 59 : 0.18
+T: 0 1 : 57 : 69 : 0.06
+T: 0 1 : 57 : 66 : 0.02
+T: 0 1 : 57 : 63 : 0.01
+T: 0 1 : 57 : 60 : 0.18
+T: 0 1 : 57 : 58 : 0.03
+T: 0 1 : 57 : 30 : 0.12
+T: 0 1 : 57 : 27 : 0.06
+T: 0 1 : 57 : 31 : 0.06
+T: 0 1 : 57 : 67 : 0.01
+T: 0 1 : 57 : 33 : 0.36
+T: 0 1 : 57 : 54 : 0.03
+T: 0 1 : 57 : 57 : 0.06
+T: 0 1 : 58 : 70 : 0.06
+T: 0 1 : 58 : 67 : 0.01
+T: 0 1 : 58 : 61 : 0.18
+T: 0 1 : 58 : 59 : 0.03
+T: 0 1 : 58 : 58 : 0.03
+T: 0 1 : 58 : 57 : 0.03
+T: 0 1 : 58 : 64 : 0.01
+T: 0 1 : 58 : 30 : 0.06
+T: 0 1 : 58 : 28 : 0.06
+T: 0 1 : 58 : 31 : 0.06
+T: 0 1 : 58 : 66 : 0.01
+T: 0 1 : 58 : 32 : 0.06
+T: 0 1 : 58 : 68 : 0.01
+T: 0 1 : 58 : 34 : 0.36
+T: 0 1 : 58 : 55 : 0.03
+T: 0 1 : 59 : 71 : 0.06
+T: 0 1 : 59 : 68 : 0.02
+T: 0 1 : 59 : 67 : 0.01
+T: 0 1 : 59 : 62 : 0.18
+T: 0 1 : 59 : 59 : 0.06
+T: 0 1 : 59 : 65 : 0.01
+T: 0 1 : 59 : 31 : 0.06
+T: 0 1 : 59 : 29 : 0.06
+T: 0 1 : 59 : 32 : 0.12
+T: 0 1 : 59 : 35 : 0.36
+T: 0 1 : 59 : 56 : 0.03
+T: 0 1 : 59 : 58 : 0.03
+T: 0 1 : 60 : 70 : 0.01
+T: 0 1 : 60 : 69 : 0.08
+T: 0 1 : 60 : 66 : 0.01
+T: 0 1 : 60 : 33 : 0.48
+T: 0 1 : 60 : 61 : 0.03
+T: 0 1 : 60 : 30 : 0.06
+T: 0 1 : 60 : 34 : 0.06
+T: 0 1 : 60 : 57 : 0.03
+T: 0 1 : 60 : 60 : 0.24
+T: 0 1 : 61 : 71 : 0.01
+T: 0 1 : 61 : 70 : 0.07
+T: 0 1 : 61 : 62 : 0.03
+T: 0 1 : 61 : 61 : 0.21
+T: 0 1 : 61 : 67 : 0.01
+T: 0 1 : 61 : 33 : 0.06
+T: 0 1 : 61 : 31 : 0.06
+T: 0 1 : 61 : 34 : 0.42
+T: 0 1 : 61 : 69 : 0.01
+T: 0 1 : 61 : 35 : 0.06
+T: 0 1 : 61 : 58 : 0.03
+T: 0 1 : 61 : 60 : 0.03
+T: 0 1 : 62 : 71 : 0.08
+T: 0 1 : 62 : 70 : 0.01
+T: 0 1 : 62 : 68 : 0.01
+T: 0 1 : 62 : 34 : 0.06
+T: 0 1 : 62 : 62 : 0.24
+T: 0 1 : 62 : 32 : 0.06
+T: 0 1 : 62 : 35 : 0.48
+T: 0 1 : 62 : 59 : 0.03
+T: 0 1 : 62 : 61 : 0.03
+T: 0 1 : 63 : 75 : 0.06
+T: 0 1 : 63 : 66 : 0.12
+T: 0 1 : 63 : 64 : 0.02
+T: 0 1 : 63 : 63 : 0.06
+T: 0 1 : 63 : 36 : 0.18
+T: 0 1 : 63 : 57 : 0.06
+T: 0 1 : 63 : 73 : 0.01
+T: 0 1 : 63 : 39 : 0.36
+T: 0 1 : 63 : 37 : 0.06
+T: 0 1 : 63 : 54 : 0.03
+T: 0 1 : 63 : 72 : 0.03
+T: 0 1 : 63 : 55 : 0.01
+T: 0 1 : 64 : 76 : 0.06
+T: 0 1 : 64 : 67 : 0.12
+T: 0 1 : 64 : 65 : 0.02
+T: 0 1 : 64 : 64 : 0.04
+T: 0 1 : 64 : 63 : 0.02
+T: 0 1 : 64 : 58 : 0.06
+T: 0 1 : 64 : 73 : 0.02
+T: 0 1 : 64 : 56 : 0.01
+T: 0 1 : 64 : 36 : 0.06
+T: 0 1 : 64 : 74 : 0.01
+T: 0 1 : 64 : 40 : 0.36
+T: 0 1 : 64 : 37 : 0.12
+T: 0 1 : 64 : 54 : 0.01
+T: 0 1 : 64 : 72 : 0.01
+T: 0 1 : 64 : 38 : 0.06
+T: 0 1 : 64 : 55 : 0.02
+T: 0 1 : 65 : 77 : 0.06
+T: 0 1 : 65 : 74 : 0.03
+T: 0 1 : 65 : 68 : 0.12
+T: 0 1 : 65 : 65 : 0.06
+T: 0 1 : 65 : 64 : 0.02
+T: 0 1 : 65 : 59 : 0.06
+T: 0 1 : 65 : 37 : 0.06
+T: 0 1 : 65 : 41 : 0.36
+T: 0 1 : 65 : 38 : 0.18
+T: 0 1 : 65 : 55 : 0.01
+T: 0 1 : 65 : 73 : 0.01
+T: 0 1 : 65 : 56 : 0.03
+T: 0 1 : 66 : 78 : 0.06
+T: 0 1 : 66 : 72 : 0.01
+T: 0 1 : 66 : 69 : 0.12
+T: 0 1 : 66 : 67 : 0.02
+T: 0 1 : 66 : 66 : 0.04
+T: 0 1 : 66 : 63 : 0.02
+T: 0 1 : 66 : 60 : 0.06
+T: 0 1 : 66 : 75 : 0.02
+T: 0 1 : 66 : 58 : 0.01
+T: 0 1 : 66 : 39 : 0.12
+T: 0 1 : 66 : 36 : 0.06
+T: 0 1 : 66 : 57 : 0.02
+T: 0 1 : 66 : 40 : 0.06
+T: 0 1 : 66 : 54 : 0.01
+T: 0 1 : 66 : 76 : 0.01
+T: 0 1 : 66 : 42 : 0.36
+T: 0 1 : 67 : 79 : 0.06
+T: 0 1 : 67 : 75 : 0.01
+T: 0 1 : 67 : 43 : 0.36
+T: 0 1 : 67 : 55 : 0.01
+T: 0 1 : 67 : 41 : 0.06
+T: 0 1 : 67 : 58 : 0.01
+T: 0 1 : 67 : 77 : 0.01
+T: 0 1 : 67 : 40 : 0.06
+T: 0 1 : 67 : 57 : 0.01
+T: 0 1 : 67 : 37 : 0.06
+T: 0 1 : 67 : 76 : 0.01
+T: 0 1 : 67 : 39 : 0.06
+T: 0 1 : 67 : 73 : 0.01
+T: 0 1 : 67 : 59 : 0.01
+T: 0 1 : 67 : 61 : 0.06
+T: 0 1 : 67 : 64 : 0.02
+T: 0 1 : 67 : 66 : 0.02
+T: 0 1 : 67 : 67 : 0.02
+T: 0 1 : 67 : 68 : 0.02
+T: 0 1 : 67 : 70 : 0.12
+T: 0 1 : 68 : 80 : 0.06
+T: 0 1 : 68 : 77 : 0.02
+T: 0 1 : 68 : 71 : 0.12
+T: 0 1 : 68 : 68 : 0.04
+T: 0 1 : 68 : 67 : 0.02
+T: 0 1 : 68 : 65 : 0.02
+T: 0 1 : 68 : 62 : 0.06
+T: 0 1 : 68 : 76 : 0.01
+T: 0 1 : 68 : 59 : 0.02
+T: 0 1 : 68 : 74 : 0.01
+T: 0 1 : 68 : 40 : 0.06
+T: 0 1 : 68 : 38 : 0.06
+T: 0 1 : 68 : 44 : 0.36
+T: 0 1 : 68 : 41 : 0.12
+T: 0 1 : 68 : 58 : 0.01
+T: 0 1 : 68 : 56 : 0.01
+T: 0 1 : 69 : 79 : 0.01
+T: 0 1 : 69 : 75 : 0.01
+T: 0 1 : 69 : 70 : 0.02
+T: 0 1 : 69 : 69 : 0.16
+T: 0 1 : 69 : 66 : 0.02
+T: 0 1 : 69 : 42 : 0.48
+T: 0 1 : 69 : 39 : 0.06
+T: 0 1 : 69 : 60 : 0.08
+T: 0 1 : 69 : 43 : 0.06
+T: 0 1 : 69 : 57 : 0.01
+T: 0 1 : 69 : 78 : 0.08
+T: 0 1 : 69 : 61 : 0.01
+T: 0 1 : 70 : 80 : 0.01
+T: 0 1 : 70 : 71 : 0.02
+T: 0 1 : 70 : 70 : 0.14
+T: 0 1 : 70 : 69 : 0.02
+T: 0 1 : 70 : 67 : 0.02
+T: 0 1 : 70 : 79 : 0.07
+T: 0 1 : 70 : 62 : 0.01
+T: 0 1 : 70 : 76 : 0.01
+T: 0 1 : 70 : 42 : 0.06
+T: 0 1 : 70 : 40 : 0.06
+T: 0 1 : 70 : 78 : 0.01
+T: 0 1 : 70 : 61 : 0.07
+T: 0 1 : 70 : 44 : 0.06
+T: 0 1 : 70 : 58 : 0.01
+T: 0 1 : 70 : 43 : 0.42
+T: 0 1 : 70 : 60 : 0.01
+T: 0 1 : 71 : 80 : 0.08
+T: 0 1 : 71 : 71 : 0.16
+T: 0 1 : 71 : 70 : 0.02
+T: 0 1 : 71 : 68 : 0.02
+T: 0 1 : 71 : 77 : 0.01
+T: 0 1 : 71 : 43 : 0.06
+T: 0 1 : 71 : 41 : 0.06
+T: 0 1 : 71 : 79 : 0.01
+T: 0 1 : 71 : 62 : 0.08
+T: 0 1 : 71 : 59 : 0.01
+T: 0 1 : 71 : 44 : 0.48
+T: 0 1 : 71 : 61 : 0.01
+T: 0 1 : 72 : 75 : 0.18
+T: 0 1 : 72 : 73 : 0.03
+T: 0 1 : 72 : 72 : 0.09
+T: 0 1 : 72 : 45 : 0.18
+T: 0 1 : 72 : 66 : 0.06
+T: 0 1 : 72 : 48 : 0.36
+T: 0 1 : 72 : 46 : 0.06
+T: 0 1 : 72 : 63 : 0.03
+T: 0 1 : 72 : 64 : 0.01
+T: 0 1 : 73 : 76 : 0.18
+T: 0 1 : 73 : 74 : 0.03
+T: 0 1 : 73 : 73 : 0.06
+T: 0 1 : 73 : 72 : 0.03
+T: 0 1 : 73 : 67 : 0.06
+T: 0 1 : 73 : 65 : 0.01
+T: 0 1 : 73 : 45 : 0.06
+T: 0 1 : 73 : 49 : 0.36
+T: 0 1 : 73 : 46 : 0.12
+T: 0 1 : 73 : 63 : 0.01
+T: 0 1 : 73 : 47 : 0.06
+T: 0 1 : 73 : 64 : 0.02
+T: 0 1 : 74 : 77 : 0.18
+T: 0 1 : 74 : 74 : 0.09
+T: 0 1 : 74 : 73 : 0.03
+T: 0 1 : 74 : 68 : 0.06
+T: 0 1 : 74 : 46 : 0.06
+T: 0 1 : 74 : 50 : 0.36
+T: 0 1 : 74 : 47 : 0.18
+T: 0 1 : 74 : 64 : 0.01
+T: 0 1 : 74 : 65 : 0.03
+T: 0 1 : 75 : 78 : 0.18
+T: 0 1 : 75 : 76 : 0.03
+T: 0 1 : 75 : 75 : 0.06
+T: 0 1 : 75 : 72 : 0.03
+T: 0 1 : 75 : 69 : 0.06
+T: 0 1 : 75 : 67 : 0.01
+T: 0 1 : 75 : 48 : 0.12
+T: 0 1 : 75 : 45 : 0.06
+T: 0 1 : 75 : 66 : 0.02
+T: 0 1 : 75 : 49 : 0.06
+T: 0 1 : 75 : 63 : 0.01
+T: 0 1 : 75 : 51 : 0.36
+T: 0 1 : 76 : 79 : 0.18
+T: 0 1 : 76 : 77 : 0.03
+T: 0 1 : 76 : 76 : 0.03
+T: 0 1 : 76 : 75 : 0.03
+T: 0 1 : 76 : 73 : 0.03
+T: 0 1 : 76 : 70 : 0.06
+T: 0 1 : 76 : 68 : 0.01
+T: 0 1 : 76 : 48 : 0.06
+T: 0 1 : 76 : 46 : 0.06
+T: 0 1 : 76 : 66 : 0.01
+T: 0 1 : 76 : 49 : 0.06
+T: 0 1 : 76 : 67 : 0.01
+T: 0 1 : 76 : 50 : 0.06
+T: 0 1 : 76 : 64 : 0.01
+T: 0 1 : 76 : 52 : 0.36
+T: 0 1 : 77 : 80 : 0.18
+T: 0 1 : 77 : 77 : 0.06
+T: 0 1 : 77 : 76 : 0.03
+T: 0 1 : 77 : 74 : 0.03
+T: 0 1 : 77 : 71 : 0.06
+T: 0 1 : 77 : 68 : 0.02
+T: 0 1 : 77 : 49 : 0.06
+T: 0 1 : 77 : 47 : 0.06
+T: 0 1 : 77 : 53 : 0.36
+T: 0 1 : 77 : 50 : 0.12
+T: 0 1 : 77 : 67 : 0.01
+T: 0 1 : 77 : 65 : 0.01
+T: 1 1 : 80 : 80 : 0.64
+T: 1 1 : 80 : 79 : 0.08
+T: 1 1 : 80 : 77 : 0.08
+T: 1 1 : 80 : 52 : 0.01
+T: 1 1 : 80 : 50 : 0.01
+T: 1 1 : 80 : 71 : 0.08
+T: 1 1 : 80 : 68 : 0.01
+T: 1 1 : 80 : 53 : 0.08
+T: 1 1 : 80 : 70 : 0.01
+T: 1 1 : 79 : 80 : 0.08
+T: 1 1 : 79 : 79 : 0.56
+T: 1 1 : 79 : 78 : 0.08
+T: 1 1 : 79 : 76 : 0.08
+T: 1 1 : 79 : 71 : 0.01
+T: 1 1 : 79 : 51 : 0.01
+T: 1 1 : 79 : 49 : 0.01
+T: 1 1 : 79 : 70 : 0.07
+T: 1 1 : 79 : 53 : 0.01
+T: 1 1 : 79 : 67 : 0.01
+T: 1 1 : 79 : 52 : 0.07
+T: 1 1 : 79 : 69 : 0.01
+T: 1 1 : 78 : 79 : 0.08
+T: 1 1 : 78 : 78 : 0.64
+T: 1 1 : 78 : 75 : 0.08
+T: 1 1 : 78 : 51 : 0.08
+T: 1 1 : 78 : 48 : 0.01
+T: 1 1 : 78 : 69 : 0.08
+T: 1 1 : 78 : 52 : 0.01
+T: 1 1 : 78 : 66 : 0.01
+T: 1 1 : 78 : 70 : 0.01
+T: 1 1 : 35 : 62 : 0.48
+T: 1 1 : 35 : 61 : 0.06
+T: 1 1 : 35 : 44 : 0.08
+T: 1 1 : 35 : 43 : 0.01
+T: 1 1 : 35 : 41 : 0.01
+T: 1 1 : 35 : 7 : 0.01
+T: 1 1 : 35 : 35 : 0.16
+T: 1 1 : 35 : 5 : 0.01
+T: 1 1 : 35 : 59 : 0.06
+T: 1 1 : 35 : 8 : 0.08
+T: 1 1 : 35 : 32 : 0.02
+T: 1 1 : 35 : 34 : 0.02
+T: 1 1 : 34 : 62 : 0.06
+T: 1 1 : 34 : 61 : 0.42
+T: 1 1 : 34 : 44 : 0.01
+T: 1 1 : 34 : 60 : 0.06
+T: 1 1 : 34 : 43 : 0.07
+T: 1 1 : 34 : 35 : 0.02
+T: 1 1 : 34 : 34 : 0.14
+T: 1 1 : 34 : 40 : 0.01
+T: 1 1 : 34 : 6 : 0.01
+T: 1 1 : 34 : 4 : 0.01
+T: 1 1 : 34 : 58 : 0.06
+T: 1 1 : 34 : 7 : 0.07
+T: 1 1 : 34 : 42 : 0.01
+T: 1 1 : 34 : 8 : 0.01
+T: 1 1 : 34 : 31 : 0.02
+T: 1 1 : 34 : 33 : 0.02
+T: 1 1 : 33 : 61 : 0.06
+T: 1 1 : 33 : 60 : 0.48
+T: 1 1 : 33 : 43 : 0.01
+T: 1 1 : 33 : 42 : 0.08
+T: 1 1 : 33 : 39 : 0.01
+T: 1 1 : 33 : 57 : 0.06
+T: 1 1 : 33 : 6 : 0.08
+T: 1 1 : 33 : 34 : 0.02
+T: 1 1 : 33 : 3 : 0.01
+T: 1 1 : 33 : 7 : 0.01
+T: 1 1 : 33 : 30 : 0.02
+T: 1 1 : 33 : 33 : 0.16
+T: 1 1 : 32 : 62 : 0.36
+T: 1 1 : 32 : 44 : 0.06
+T: 1 1 : 32 : 58 : 0.06
+T: 1 1 : 32 : 41 : 0.02
+T: 1 1 : 32 : 40 : 0.01
+T: 1 1 : 32 : 35 : 0.12
+T: 1 1 : 32 : 32 : 0.04
+T: 1 1 : 32 : 38 : 0.01
+T: 1 1 : 32 : 4 : 0.01
+T: 1 1 : 32 : 2 : 0.01
+T: 1 1 : 32 : 56 : 0.06
+T: 1 1 : 32 : 5 : 0.02
+T: 1 1 : 32 : 59 : 0.12
+T: 1 1 : 32 : 8 : 0.06
+T: 1 1 : 32 : 29 : 0.02
+T: 1 1 : 32 : 31 : 0.02
+T: 1 1 : 31 : 61 : 0.36
+T: 1 1 : 31 : 59 : 0.06
+T: 1 1 : 31 : 58 : 0.06
+T: 1 1 : 31 : 57 : 0.06
+T: 1 1 : 31 : 28 : 0.02
+T: 1 1 : 31 : 7 : 0.06
+T: 1 1 : 31 : 5 : 0.01
+T: 1 1 : 31 : 39 : 0.01
+T: 1 1 : 31 : 41 : 0.01
+T: 1 1 : 31 : 4 : 0.01
+T: 1 1 : 31 : 55 : 0.06
+T: 1 1 : 31 : 1 : 0.01
+T: 1 1 : 31 : 37 : 0.01
+T: 1 1 : 31 : 30 : 0.02
+T: 1 1 : 31 : 31 : 0.02
+T: 1 1 : 31 : 32 : 0.02
+T: 1 1 : 31 : 34 : 0.12
+T: 1 1 : 31 : 3 : 0.01
+T: 1 1 : 31 : 40 : 0.01
+T: 1 1 : 31 : 43 : 0.06
+T: 1 1 : 30 : 60 : 0.36
+T: 1 1 : 30 : 58 : 0.06
+T: 1 1 : 30 : 42 : 0.06
+T: 1 1 : 30 : 39 : 0.02
+T: 1 1 : 30 : 36 : 0.01
+T: 1 1 : 30 : 33 : 0.12
+T: 1 1 : 30 : 31 : 0.02
+T: 1 1 : 30 : 54 : 0.06
+T: 1 1 : 30 : 3 : 0.02
+T: 1 1 : 30 : 0 : 0.01
+T: 1 1 : 30 : 4 : 0.01
+T: 1 1 : 30 : 57 : 0.12
+T: 1 1 : 30 : 40 : 0.01
+T: 1 1 : 30 : 6 : 0.06
+T: 1 1 : 30 : 27 : 0.02
+T: 1 1 : 30 : 30 : 0.04
+T: 1 1 : 29 : 59 : 0.36
+T: 1 1 : 29 : 41 : 0.06
+T: 1 1 : 29 : 55 : 0.06
+T: 1 1 : 29 : 38 : 0.03
+T: 1 1 : 29 : 37 : 0.01
+T: 1 1 : 29 : 2 : 0.03
+T: 1 1 : 29 : 1 : 0.01
+T: 1 1 : 29 : 29 : 0.06
+T: 1 1 : 29 : 56 : 0.18
+T: 1 1 : 29 : 5 : 0.06
+T: 1 1 : 29 : 28 : 0.02
+T: 1 1 : 29 : 32 : 0.12
+T: 1 1 : 28 : 58 : 0.36
+T: 1 1 : 28 : 56 : 0.06
+T: 1 1 : 28 : 40 : 0.06
+T: 1 1 : 28 : 54 : 0.06
+T: 1 1 : 28 : 37 : 0.02
+T: 1 1 : 28 : 31 : 0.12
+T: 1 1 : 28 : 29 : 0.02
+T: 1 1 : 28 : 1 : 0.02
+T: 1 1 : 28 : 0 : 0.01
+T: 1 1 : 28 : 28 : 0.04
+T: 1 1 : 28 : 36 : 0.01
+T: 1 1 : 28 : 2 : 0.01
+T: 1 1 : 28 : 55 : 0.12
+T: 1 1 : 28 : 38 : 0.01
+T: 1 1 : 28 : 4 : 0.06
+T: 1 1 : 28 : 27 : 0.02
+T: 1 1 : 27 : 57 : 0.36
+T: 1 1 : 27 : 55 : 0.06
+T: 1 1 : 27 : 39 : 0.06
+T: 1 1 : 27 : 36 : 0.03
+T: 1 1 : 27 : 1 : 0.01
+T: 1 1 : 27 : 0 : 0.03
+T: 1 1 : 27 : 28 : 0.02
+T: 1 1 : 27 : 54 : 0.18
+T: 1 1 : 27 : 37 : 0.01
+T: 1 1 : 27 : 3 : 0.06
+T: 1 1 : 27 : 27 : 0.06
+T: 1 1 : 27 : 30 : 0.12
+T: 1 1 : 26 : 53 : 0.48
+T: 1 1 : 26 : 52 : 0.06
+T: 1 1 : 26 : 50 : 0.06
+T: 1 1 : 26 : 16 : 0.01
+T: 1 1 : 26 : 23 : 0.03
+T: 1 1 : 26 : 14 : 0.01
+T: 1 1 : 26 : 17 : 0.08
+T: 1 1 : 26 : 25 : 0.03
+T: 1 1 : 26 : 26 : 0.24
+T: 1 1 : 25 : 53 : 0.06
+T: 1 1 : 25 : 52 : 0.42
+T: 1 1 : 25 : 26 : 0.03
+T: 1 1 : 25 : 25 : 0.21
+T: 1 1 : 25 : 49 : 0.06
+T: 1 1 : 25 : 15 : 0.01
+T: 1 1 : 25 : 22 : 0.03
+T: 1 1 : 25 : 13 : 0.01
+T: 1 1 : 25 : 16 : 0.07
+T: 1 1 : 25 : 51 : 0.06
+T: 1 1 : 25 : 17 : 0.01
+T: 1 1 : 25 : 24 : 0.03
+T: 1 1 : 24 : 52 : 0.06
+T: 1 1 : 24 : 51 : 0.48
+T: 1 1 : 24 : 48 : 0.06
+T: 1 1 : 24 : 15 : 0.08
+T: 1 1 : 24 : 12 : 0.01
+T: 1 1 : 24 : 16 : 0.01
+T: 1 1 : 24 : 21 : 0.03
+T: 1 1 : 24 : 24 : 0.24
+T: 1 1 : 24 : 25 : 0.03
+T: 1 1 : 23 : 53 : 0.36
+T: 1 1 : 23 : 50 : 0.12
+T: 1 1 : 23 : 49 : 0.06
+T: 1 1 : 23 : 26 : 0.18
+T: 1 1 : 23 : 23 : 0.06
+T: 1 1 : 23 : 47 : 0.06
+T: 1 1 : 23 : 13 : 0.01
+T: 1 1 : 23 : 20 : 0.03
+T: 1 1 : 23 : 11 : 0.01
+T: 1 1 : 23 : 14 : 0.02
+T: 1 1 : 23 : 17 : 0.06
+T: 1 1 : 23 : 22 : 0.03
+T: 1 1 : 22 : 52 : 0.36
+T: 1 1 : 22 : 49 : 0.06
+T: 1 1 : 22 : 25 : 0.18
+T: 1 1 : 22 : 23 : 0.03
+T: 1 1 : 22 : 22 : 0.03
+T: 1 1 : 22 : 21 : 0.03
+T: 1 1 : 22 : 46 : 0.06
+T: 1 1 : 22 : 12 : 0.01
+T: 1 1 : 22 : 19 : 0.03
+T: 1 1 : 22 : 10 : 0.01
+T: 1 1 : 22 : 13 : 0.01
+T: 1 1 : 22 : 48 : 0.06
+T: 1 1 : 22 : 14 : 0.01
+T: 1 1 : 22 : 50 : 0.06
+T: 1 1 : 22 : 16 : 0.06
+T: 1 1 : 21 : 51 : 0.36
+T: 1 1 : 21 : 48 : 0.12
+T: 1 1 : 21 : 45 : 0.06
+T: 1 1 : 21 : 24 : 0.18
+T: 1 1 : 21 : 22 : 0.03
+T: 1 1 : 21 : 12 : 0.02
+T: 1 1 : 21 : 9 : 0.01
+T: 1 1 : 21 : 13 : 0.01
+T: 1 1 : 21 : 49 : 0.06
+T: 1 1 : 21 : 15 : 0.06
+T: 1 1 : 21 : 18 : 0.03
+T: 1 1 : 21 : 21 : 0.06
+T: 1 1 : 20 : 50 : 0.36
+T: 1 1 : 20 : 47 : 0.18
+T: 1 1 : 20 : 46 : 0.06
+T: 1 1 : 20 : 11 : 0.03
+T: 1 1 : 20 : 10 : 0.01
+T: 1 1 : 20 : 14 : 0.06
+T: 1 1 : 20 : 19 : 0.03
+T: 1 1 : 20 : 20 : 0.09
+T: 1 1 : 20 : 23 : 0.18
+T: 1 1 : 19 : 49 : 0.36
+T: 1 1 : 19 : 46 : 0.12
+T: 1 1 : 19 : 22 : 0.18
+T: 1 1 : 19 : 20 : 0.03
+T: 1 1 : 19 : 10 : 0.02
+T: 1 1 : 19 : 9 : 0.01
+T: 1 1 : 19 : 45 : 0.06
+T: 1 1 : 19 : 11 : 0.01
+T: 1 1 : 19 : 18 : 0.03
+T: 1 1 : 19 : 47 : 0.06
+T: 1 1 : 19 : 13 : 0.06
+T: 1 1 : 19 : 19 : 0.06
+T: 1 1 : 18 : 48 : 0.36
+T: 1 1 : 18 : 45 : 0.18
+T: 1 1 : 18 : 10 : 0.01
+T: 1 1 : 18 : 9 : 0.03
+T: 1 1 : 18 : 46 : 0.06
+T: 1 1 : 18 : 12 : 0.06
+T: 1 1 : 18 : 19 : 0.03
+T: 1 1 : 18 : 18 : 0.09
+T: 1 1 : 18 : 21 : 0.18
+T: 1 1 : 17 : 44 : 0.48
+T: 1 1 : 17 : 43 : 0.06
+T: 1 1 : 17 : 26 : 0.08
+T: 1 1 : 17 : 23 : 0.01
+T: 1 1 : 17 : 41 : 0.06
+T: 1 1 : 17 : 7 : 0.01
+T: 1 1 : 17 : 14 : 0.02
+T: 1 1 : 17 : 5 : 0.01
+T: 1 1 : 17 : 25 : 0.01
+T: 1 1 : 17 : 8 : 0.08
+T: 1 1 : 17 : 16 : 0.02
+T: 1 1 : 17 : 17 : 0.16
+T: 1 1 : 16 : 44 : 0.06
+T: 1 1 : 16 : 43 : 0.42
+T: 1 1 : 16 : 26 : 0.01
+T: 1 1 : 16 : 22 : 0.01
+T: 1 1 : 16 : 17 : 0.02
+T: 1 1 : 16 : 16 : 0.14
+T: 1 1 : 16 : 40 : 0.06
+T: 1 1 : 16 : 6 : 0.01
+T: 1 1 : 16 : 13 : 0.02
+T: 1 1 : 16 : 4 : 0.01
+T: 1 1 : 16 : 24 : 0.01
+T: 1 1 : 16 : 7 : 0.07
+T: 1 1 : 16 : 42 : 0.06
+T: 1 1 : 16 : 25 : 0.07
+T: 1 1 : 16 : 8 : 0.01
+T: 1 1 : 16 : 15 : 0.02
+T: 1 1 : 5 : 35 : 0.36
+T: 1 1 : 5 : 32 : 0.12
+T: 1 1 : 5 : 29 : 0.06
+T: 1 1 : 5 : 17 : 0.06
+T: 1 1 : 5 : 31 : 0.06
+T: 1 1 : 5 : 14 : 0.02
+T: 1 1 : 5 : 4 : 0.03
+T: 1 1 : 5 : 11 : 0.01
+T: 1 1 : 5 : 2 : 0.03
+T: 1 1 : 5 : 5 : 0.06
+T: 1 1 : 5 : 8 : 0.18
+T: 1 1 : 5 : 13 : 0.01
+T: 1 1 : 4 : 34 : 0.36
+T: 1 1 : 4 : 32 : 0.06
+T: 1 1 : 4 : 28 : 0.06
+T: 1 1 : 4 : 16 : 0.06
+T: 1 1 : 4 : 31 : 0.06
+T: 1 1 : 4 : 14 : 0.01
+T: 1 1 : 4 : 30 : 0.06
+T: 1 1 : 4 : 13 : 0.01
+T: 1 1 : 4 : 12 : 0.01
+T: 1 1 : 4 : 3 : 0.03
+T: 1 1 : 4 : 10 : 0.01
+T: 1 1 : 4 : 1 : 0.03
+T: 1 1 : 4 : 4 : 0.03
+T: 1 1 : 4 : 5 : 0.03
+T: 1 1 : 4 : 7 : 0.18
+T: 1 1 : 3 : 33 : 0.36
+T: 1 1 : 3 : 31 : 0.06
+T: 1 1 : 3 : 27 : 0.06
+T: 1 1 : 3 : 15 : 0.06
+T: 1 1 : 3 : 30 : 0.12
+T: 1 1 : 3 : 13 : 0.01
+T: 1 1 : 3 : 3 : 0.06
+T: 1 1 : 3 : 0 : 0.03
+T: 1 1 : 3 : 4 : 0.03
+T: 1 1 : 3 : 6 : 0.18
+T: 1 1 : 3 : 9 : 0.01
+T: 1 1 : 3 : 12 : 0.02
+T: 1 1 : 2 : 32 : 0.36
+T: 1 1 : 2 : 29 : 0.18
+T: 1 1 : 2 : 2 : 0.09
+T: 1 1 : 2 : 1 : 0.03
+T: 1 1 : 2 : 5 : 0.18
+T: 1 1 : 2 : 10 : 0.01
+T: 1 1 : 2 : 28 : 0.06
+T: 1 1 : 2 : 11 : 0.03
+T: 1 1 : 2 : 14 : 0.06
+T: 1 1 : 0 : 30 : 0.36
+T: 1 1 : 0 : 28 : 0.06
+T: 1 1 : 0 : 1 : 0.03
+T: 1 1 : 0 : 0 : 0.09
+T: 1 1 : 0 : 3 : 0.18
+T: 1 1 : 0 : 27 : 0.18
+T: 1 1 : 0 : 10 : 0.01
+T: 1 1 : 0 : 9 : 0.03
+T: 1 1 : 0 : 12 : 0.06
+T: 1 1 : 1 : 31 : 0.36
+T: 1 1 : 1 : 29 : 0.06
+T: 1 1 : 1 : 13 : 0.06
+T: 1 1 : 1 : 28 : 0.12
+T: 1 1 : 1 : 11 : 0.01
+T: 1 1 : 1 : 1 : 0.06
+T: 1 1 : 1 : 0 : 0.03
+T: 1 1 : 1 : 2 : 0.03
+T: 1 1 : 1 : 9 : 0.01
+T: 1 1 : 1 : 4 : 0.18
+T: 1 1 : 1 : 27 : 0.06
+T: 1 1 : 1 : 10 : 0.02
+T: 1 1 : 6 : 34 : 0.06
+T: 1 1 : 6 : 30 : 0.06
+T: 1 1 : 6 : 6 : 0.24
+T: 1 1 : 6 : 3 : 0.03
+T: 1 1 : 6 : 7 : 0.03
+T: 1 1 : 6 : 12 : 0.01
+T: 1 1 : 6 : 15 : 0.08
+T: 1 1 : 6 : 33 : 0.48
+T: 1 1 : 6 : 16 : 0.01
+T: 1 1 : 7 : 35 : 0.06
+T: 1 1 : 7 : 31 : 0.06
+T: 1 1 : 7 : 34 : 0.42
+T: 1 1 : 7 : 17 : 0.01
+T: 1 1 : 7 : 33 : 0.06
+T: 1 1 : 7 : 16 : 0.07
+T: 1 1 : 7 : 6 : 0.03
+T: 1 1 : 7 : 13 : 0.01
+T: 1 1 : 7 : 4 : 0.03
+T: 1 1 : 7 : 7 : 0.21
+T: 1 1 : 7 : 8 : 0.03
+T: 1 1 : 7 : 15 : 0.01
+T: 1 1 : 8 : 35 : 0.48
+T: 1 1 : 8 : 32 : 0.06
+T: 1 1 : 8 : 7 : 0.03
+T: 1 1 : 8 : 14 : 0.01
+T: 1 1 : 8 : 5 : 0.03
+T: 1 1 : 8 : 8 : 0.24
+T: 1 1 : 8 : 16 : 0.01
+T: 1 1 : 8 : 34 : 0.06
+T: 1 1 : 8 : 17 : 0.08
+T: 1 1 : 9 : 39 : 0.36
+T: 1 1 : 9 : 21 : 0.06
+T: 1 1 : 9 : 36 : 0.18
+T: 1 1 : 9 : 19 : 0.01
+T: 1 1 : 9 : 18 : 0.03
+T: 1 1 : 9 : 1 : 0.01
+T: 1 1 : 9 : 0 : 0.03
+T: 1 1 : 9 : 37 : 0.06
+T: 1 1 : 9 : 3 : 0.06
+T: 1 1 : 9 : 10 : 0.02
+T: 1 1 : 9 : 9 : 0.06
+T: 1 1 : 9 : 12 : 0.12
+T: 1 1 : 10 : 40 : 0.36
+T: 1 1 : 10 : 22 : 0.06
+T: 1 1 : 10 : 37 : 0.12
+T: 1 1 : 10 : 20 : 0.01
+T: 1 1 : 10 : 13 : 0.12
+T: 1 1 : 10 : 11 : 0.02
+T: 1 1 : 10 : 18 : 0.01
+T: 1 1 : 10 : 1 : 0.02
+T: 1 1 : 10 : 0 : 0.01
+T: 1 1 : 10 : 36 : 0.06
+T: 1 1 : 10 : 19 : 0.02
+T: 1 1 : 10 : 2 : 0.01
+T: 1 1 : 10 : 9 : 0.02
+T: 1 1 : 10 : 38 : 0.06
+T: 1 1 : 10 : 4 : 0.06
+T: 1 1 : 10 : 10 : 0.04
+T: 1 1 : 11 : 41 : 0.36
+T: 1 1 : 11 : 38 : 0.18
+T: 1 1 : 11 : 23 : 0.06
+T: 1 1 : 11 : 37 : 0.06
+T: 1 1 : 11 : 20 : 0.03
+T: 1 1 : 11 : 19 : 0.01
+T: 1 1 : 11 : 2 : 0.03
+T: 1 1 : 11 : 1 : 0.01
+T: 1 1 : 11 : 5 : 0.06
+T: 1 1 : 11 : 10 : 0.02
+T: 1 1 : 11 : 11 : 0.06
+T: 1 1 : 11 : 14 : 0.12
+T: 1 1 : 12 : 42 : 0.36
+T: 1 1 : 12 : 36 : 0.06
+T: 1 1 : 12 : 24 : 0.06
+T: 1 1 : 12 : 39 : 0.12
+T: 1 1 : 12 : 22 : 0.01
+T: 1 1 : 12 : 18 : 0.01
+T: 1 1 : 12 : 15 : 0.12
+T: 1 1 : 12 : 13 : 0.02
+T: 1 1 : 12 : 3 : 0.02
+T: 1 1 : 12 : 0 : 0.01
+T: 1 1 : 12 : 21 : 0.02
+T: 1 1 : 12 : 4 : 0.01
+T: 1 1 : 12 : 40 : 0.06
+T: 1 1 : 12 : 6 : 0.06
+T: 1 1 : 12 : 9 : 0.02
+T: 1 1 : 12 : 12 : 0.04
+T: 1 1 : 13 : 43 : 0.36
+T: 1 1 : 13 : 39 : 0.06
+T: 1 1 : 13 : 7 : 0.06
+T: 1 1 : 13 : 5 : 0.01
+T: 1 1 : 13 : 22 : 0.01
+T: 1 1 : 13 : 41 : 0.06
+T: 1 1 : 13 : 4 : 0.01
+T: 1 1 : 13 : 21 : 0.01
+T: 1 1 : 13 : 1 : 0.01
+T: 1 1 : 13 : 10 : 0.02
+T: 1 1 : 13 : 40 : 0.06
+T: 1 1 : 13 : 3 : 0.01
+T: 1 1 : 13 : 37 : 0.06
+T: 1 1 : 13 : 12 : 0.02
+T: 1 1 : 13 : 13 : 0.02
+T: 1 1 : 13 : 14 : 0.02
+T: 1 1 : 13 : 16 : 0.12
+T: 1 1 : 13 : 19 : 0.01
+T: 1 1 : 13 : 23 : 0.01
+T: 1 1 : 13 : 25 : 0.06
+T: 1 1 : 14 : 44 : 0.36
+T: 1 1 : 14 : 41 : 0.12
+T: 1 1 : 14 : 26 : 0.06
+T: 1 1 : 14 : 40 : 0.06
+T: 1 1 : 14 : 23 : 0.02
+T: 1 1 : 14 : 20 : 0.01
+T: 1 1 : 14 : 17 : 0.12
+T: 1 1 : 14 : 14 : 0.04
+T: 1 1 : 14 : 38 : 0.06
+T: 1 1 : 14 : 4 : 0.01
+T: 1 1 : 14 : 11 : 0.02
+T: 1 1 : 14 : 2 : 0.01
+T: 1 1 : 14 : 22 : 0.01
+T: 1 1 : 14 : 5 : 0.02
+T: 1 1 : 14 : 8 : 0.06
+T: 1 1 : 14 : 13 : 0.02
+T: 1 1 : 15 : 43 : 0.06
+T: 1 1 : 15 : 39 : 0.06
+T: 1 1 : 15 : 42 : 0.48
+T: 1 1 : 15 : 25 : 0.01
+T: 1 1 : 15 : 21 : 0.01
+T: 1 1 : 15 : 6 : 0.08
+T: 1 1 : 15 : 3 : 0.01
+T: 1 1 : 15 : 24 : 0.08
+T: 1 1 : 15 : 7 : 0.01
+T: 1 1 : 15 : 12 : 0.02
+T: 1 1 : 15 : 15 : 0.16
+T: 1 1 : 15 : 16 : 0.02
+T: 1 1 : 36 : 66 : 0.36
+T: 1 1 : 36 : 48 : 0.06
+T: 1 1 : 36 : 39 : 0.06
+T: 1 1 : 36 : 37 : 0.01
+T: 1 1 : 36 : 36 : 0.03
+T: 1 1 : 36 : 9 : 0.03
+T: 1 1 : 36 : 64 : 0.06
+T: 1 1 : 36 : 30 : 0.06
+T: 1 1 : 36 : 63 : 0.18
+T: 1 1 : 36 : 46 : 0.01
+T: 1 1 : 36 : 12 : 0.06
+T: 1 1 : 36 : 10 : 0.01
+T: 1 1 : 36 : 27 : 0.03
+T: 1 1 : 36 : 45 : 0.03
+T: 1 1 : 36 : 28 : 0.01
+T: 1 1 : 37 : 67 : 0.36
+T: 1 1 : 37 : 63 : 0.06
+T: 1 1 : 37 : 65 : 0.06
+T: 1 1 : 37 : 28 : 0.02
+T: 1 1 : 37 : 11 : 0.01
+T: 1 1 : 37 : 45 : 0.01
+T: 1 1 : 37 : 64 : 0.12
+T: 1 1 : 37 : 27 : 0.01
+T: 1 1 : 37 : 13 : 0.06
+T: 1 1 : 37 : 10 : 0.02
+T: 1 1 : 37 : 47 : 0.01
+T: 1 1 : 37 : 29 : 0.01
+T: 1 1 : 37 : 9 : 0.01
+T: 1 1 : 37 : 46 : 0.02
+T: 1 1 : 37 : 31 : 0.06
+T: 1 1 : 37 : 36 : 0.01
+T: 1 1 : 37 : 37 : 0.02
+T: 1 1 : 37 : 38 : 0.01
+T: 1 1 : 37 : 40 : 0.06
+T: 1 1 : 37 : 49 : 0.06
+T: 1 1 : 38 : 68 : 0.36
+T: 1 1 : 38 : 50 : 0.06
+T: 1 1 : 38 : 64 : 0.06
+T: 1 1 : 38 : 47 : 0.03
+T: 1 1 : 38 : 41 : 0.06
+T: 1 1 : 38 : 38 : 0.03
+T: 1 1 : 38 : 37 : 0.01
+T: 1 1 : 38 : 32 : 0.06
+T: 1 1 : 38 : 10 : 0.01
+T: 1 1 : 38 : 65 : 0.18
+T: 1 1 : 38 : 14 : 0.06
+T: 1 1 : 38 : 11 : 0.03
+T: 1 1 : 38 : 28 : 0.01
+T: 1 1 : 38 : 46 : 0.01
+T: 1 1 : 38 : 29 : 0.03
+T: 1 1 : 39 : 69 : 0.36
+T: 1 1 : 39 : 66 : 0.12
+T: 1 1 : 39 : 63 : 0.06
+T: 1 1 : 39 : 15 : 0.06
+T: 1 1 : 39 : 27 : 0.01
+T: 1 1 : 39 : 13 : 0.01
+T: 1 1 : 39 : 67 : 0.06
+T: 1 1 : 39 : 30 : 0.02
+T: 1 1 : 39 : 9 : 0.01
+T: 1 1 : 39 : 49 : 0.01
+T: 1 1 : 39 : 12 : 0.02
+T: 1 1 : 39 : 31 : 0.01
+T: 1 1 : 39 : 48 : 0.02
+T: 1 1 : 39 : 33 : 0.06
+T: 1 1 : 39 : 36 : 0.01
+T: 1 1 : 39 : 39 : 0.02
+T: 1 1 : 39 : 40 : 0.01
+T: 1 1 : 39 : 42 : 0.06
+T: 1 1 : 39 : 45 : 0.01
+T: 1 1 : 39 : 51 : 0.06
+T: 1 1 : 40 : 70 : 0.36
+T: 1 1 : 40 : 66 : 0.06
+T: 1 1 : 40 : 64 : 0.06
+T: 1 1 : 40 : 52 : 0.06
+T: 1 1 : 40 : 48 : 0.01
+T: 1 1 : 40 : 16 : 0.06
+T: 1 1 : 40 : 28 : 0.01
+T: 1 1 : 40 : 14 : 0.01
+T: 1 1 : 40 : 68 : 0.06
+T: 1 1 : 40 : 31 : 0.01
+T: 1 1 : 40 : 50 : 0.01
+T: 1 1 : 40 : 13 : 0.01
+T: 1 1 : 40 : 67 : 0.06
+T: 1 1 : 40 : 30 : 0.01
+T: 1 1 : 40 : 10 : 0.01
+T: 1 1 : 40 : 49 : 0.01
+T: 1 1 : 40 : 12 : 0.01
+T: 1 1 : 40 : 46 : 0.01
+T: 1 1 : 40 : 32 : 0.01
+T: 1 1 : 40 : 34 : 0.06
+T: 1 1 : 40 : 37 : 0.01
+T: 1 1 : 40 : 39 : 0.01
+T: 1 1 : 40 : 40 : 0.01
+T: 1 1 : 40 : 41 : 0.01
+T: 1 1 : 40 : 43 : 0.06
+T: 1 1 : 41 : 71 : 0.36
+T: 1 1 : 41 : 67 : 0.06
+T: 1 1 : 41 : 65 : 0.06
+T: 1 1 : 41 : 29 : 0.01
+T: 1 1 : 41 : 68 : 0.12
+T: 1 1 : 41 : 31 : 0.01
+T: 1 1 : 41 : 14 : 0.02
+T: 1 1 : 41 : 17 : 0.06
+T: 1 1 : 41 : 11 : 0.01
+T: 1 1 : 41 : 47 : 0.01
+T: 1 1 : 41 : 32 : 0.02
+T: 1 1 : 41 : 49 : 0.01
+T: 1 1 : 41 : 35 : 0.06
+T: 1 1 : 41 : 38 : 0.01
+T: 1 1 : 41 : 40 : 0.01
+T: 1 1 : 41 : 41 : 0.02
+T: 1 1 : 41 : 44 : 0.06
+T: 1 1 : 41 : 13 : 0.01
+T: 1 1 : 41 : 50 : 0.02
+T: 1 1 : 41 : 53 : 0.06
+T: 1 1 : 42 : 70 : 0.06
+T: 1 1 : 42 : 69 : 0.48
+T: 1 1 : 42 : 52 : 0.01
+T: 1 1 : 42 : 48 : 0.01
+T: 1 1 : 42 : 43 : 0.01
+T: 1 1 : 42 : 42 : 0.08
+T: 1 1 : 42 : 39 : 0.01
+T: 1 1 : 42 : 66 : 0.06
+T: 1 1 : 42 : 15 : 0.08
+T: 1 1 : 42 : 12 : 0.01
+T: 1 1 : 42 : 33 : 0.08
+T: 1 1 : 42 : 16 : 0.01
+T: 1 1 : 42 : 30 : 0.01
+T: 1 1 : 42 : 51 : 0.08
+T: 1 1 : 42 : 34 : 0.01
+T: 1 1 : 43 : 69 : 0.06
+T: 1 1 : 43 : 67 : 0.06
+T: 1 1 : 43 : 70 : 0.42
+T: 1 1 : 43 : 33 : 0.01
+T: 1 1 : 43 : 31 : 0.01
+T: 1 1 : 43 : 17 : 0.01
+T: 1 1 : 43 : 71 : 0.06
+T: 1 1 : 43 : 34 : 0.07
+T: 1 1 : 43 : 51 : 0.01
+T: 1 1 : 43 : 13 : 0.01
+T: 1 1 : 43 : 49 : 0.01
+T: 1 1 : 43 : 35 : 0.01
+T: 1 1 : 43 : 15 : 0.01
+T: 1 1 : 43 : 52 : 0.07
+T: 1 1 : 43 : 40 : 0.01
+T: 1 1 : 43 : 42 : 0.01
+T: 1 1 : 43 : 43 : 0.07
+T: 1 1 : 43 : 44 : 0.01
+T: 1 1 : 43 : 16 : 0.07
+T: 1 1 : 43 : 53 : 0.01
+T: 1 1 : 44 : 71 : 0.48
+T: 1 1 : 44 : 70 : 0.06
+T: 1 1 : 44 : 53 : 0.08
+T: 1 1 : 44 : 44 : 0.08
+T: 1 1 : 44 : 43 : 0.01
+T: 1 1 : 44 : 41 : 0.01
+T: 1 1 : 44 : 50 : 0.01
+T: 1 1 : 44 : 16 : 0.01
+T: 1 1 : 44 : 14 : 0.01
+T: 1 1 : 44 : 52 : 0.01
+T: 1 1 : 44 : 35 : 0.08
+T: 1 1 : 44 : 32 : 0.01
+T: 1 1 : 44 : 68 : 0.06
+T: 1 1 : 44 : 17 : 0.08
+T: 1 1 : 44 : 34 : 0.01
+T: 1 1 : 45 : 75 : 0.36
+T: 1 1 : 45 : 48 : 0.12
+T: 1 1 : 45 : 46 : 0.02
+T: 1 1 : 45 : 45 : 0.06
+T: 1 1 : 45 : 18 : 0.03
+T: 1 1 : 45 : 73 : 0.06
+T: 1 1 : 45 : 39 : 0.06
+T: 1 1 : 45 : 72 : 0.18
+T: 1 1 : 45 : 21 : 0.06
+T: 1 1 : 45 : 19 : 0.01
+T: 1 1 : 45 : 36 : 0.03
+T: 1 1 : 45 : 37 : 0.01
+T: 1 1 : 46 : 76 : 0.36
+T: 1 1 : 46 : 49 : 0.12
+T: 1 1 : 46 : 47 : 0.02
+T: 1 1 : 46 : 46 : 0.04
+T: 1 1 : 46 : 45 : 0.02
+T: 1 1 : 46 : 74 : 0.06
+T: 1 1 : 46 : 40 : 0.06
+T: 1 1 : 46 : 72 : 0.06
+T: 1 1 : 46 : 38 : 0.01
+T: 1 1 : 46 : 18 : 0.01
+T: 1 1 : 46 : 73 : 0.12
+T: 1 1 : 46 : 22 : 0.06
+T: 1 1 : 46 : 19 : 0.02
+T: 1 1 : 46 : 36 : 0.01
+T: 1 1 : 46 : 20 : 0.01
+T: 1 1 : 46 : 37 : 0.02
+T: 1 1 : 47 : 77 : 0.36
+T: 1 1 : 47 : 73 : 0.06
+T: 1 1 : 47 : 50 : 0.12
+T: 1 1 : 47 : 47 : 0.06
+T: 1 1 : 47 : 46 : 0.02
+T: 1 1 : 47 : 41 : 0.06
+T: 1 1 : 47 : 19 : 0.01
+T: 1 1 : 47 : 74 : 0.18
+T: 1 1 : 47 : 23 : 0.06
+T: 1 1 : 47 : 20 : 0.03
+T: 1 1 : 47 : 37 : 0.01
+T: 1 1 : 47 : 38 : 0.03
+T: 1 1 : 48 : 78 : 0.36
+T: 1 1 : 48 : 51 : 0.12
+T: 1 1 : 48 : 49 : 0.02
+T: 1 1 : 48 : 48 : 0.04
+T: 1 1 : 48 : 45 : 0.02
+T: 1 1 : 48 : 76 : 0.06
+T: 1 1 : 48 : 42 : 0.06
+T: 1 1 : 48 : 40 : 0.01
+T: 1 1 : 48 : 72 : 0.06
+T: 1 1 : 48 : 21 : 0.02
+T: 1 1 : 48 : 18 : 0.01
+T: 1 1 : 48 : 39 : 0.02
+T: 1 1 : 48 : 22 : 0.01
+T: 1 1 : 48 : 36 : 0.01
+T: 1 1 : 48 : 75 : 0.12
+T: 1 1 : 48 : 24 : 0.06
+T: 1 1 : 49 : 79 : 0.36
+T: 1 1 : 49 : 75 : 0.06
+T: 1 1 : 49 : 25 : 0.06
+T: 1 1 : 49 : 37 : 0.01
+T: 1 1 : 49 : 23 : 0.01
+T: 1 1 : 49 : 77 : 0.06
+T: 1 1 : 49 : 40 : 0.01
+T: 1 1 : 49 : 22 : 0.01
+T: 1 1 : 49 : 76 : 0.06
+T: 1 1 : 49 : 39 : 0.01
+T: 1 1 : 49 : 73 : 0.06
+T: 1 1 : 49 : 19 : 0.01
+T: 1 1 : 49 : 21 : 0.01
+T: 1 1 : 49 : 41 : 0.01
+T: 1 1 : 49 : 43 : 0.06
+T: 1 1 : 49 : 46 : 0.02
+T: 1 1 : 49 : 48 : 0.02
+T: 1 1 : 49 : 49 : 0.02
+T: 1 1 : 49 : 50 : 0.02
+T: 1 1 : 49 : 52 : 0.12
+T: 1 1 : 50 : 80 : 0.36
+T: 1 1 : 50 : 76 : 0.06
+T: 1 1 : 50 : 53 : 0.12
+T: 1 1 : 50 : 50 : 0.04
+T: 1 1 : 50 : 49 : 0.02
+T: 1 1 : 50 : 47 : 0.02
+T: 1 1 : 50 : 44 : 0.06
+T: 1 1 : 50 : 41 : 0.02
+T: 1 1 : 50 : 22 : 0.01
+T: 1 1 : 50 : 20 : 0.01
+T: 1 1 : 50 : 77 : 0.12
+T: 1 1 : 50 : 26 : 0.06
+T: 1 1 : 50 : 74 : 0.06
+T: 1 1 : 50 : 23 : 0.02
+T: 1 1 : 50 : 40 : 0.01
+T: 1 1 : 50 : 38 : 0.01
+T: 1 1 : 51 : 79 : 0.06
+T: 1 1 : 51 : 78 : 0.48
+T: 1 1 : 51 : 52 : 0.02
+T: 1 1 : 51 : 51 : 0.16
+T: 1 1 : 51 : 48 : 0.02
+T: 1 1 : 51 : 75 : 0.06
+T: 1 1 : 51 : 24 : 0.08
+T: 1 1 : 51 : 21 : 0.01
+T: 1 1 : 51 : 42 : 0.08
+T: 1 1 : 51 : 25 : 0.01
+T: 1 1 : 51 : 39 : 0.01
+T: 1 1 : 51 : 43 : 0.01
+T: 1 1 : 52 : 80 : 0.06
+T: 1 1 : 52 : 79 : 0.42
+T: 1 1 : 52 : 53 : 0.02
+T: 1 1 : 52 : 52 : 0.14
+T: 1 1 : 52 : 51 : 0.02
+T: 1 1 : 52 : 49 : 0.02
+T: 1 1 : 52 : 78 : 0.06
+T: 1 1 : 52 : 44 : 0.01
+T: 1 1 : 52 : 24 : 0.01
+T: 1 1 : 52 : 22 : 0.01
+T: 1 1 : 52 : 43 : 0.07
+T: 1 1 : 52 : 26 : 0.01
+T: 1 1 : 52 : 40 : 0.01
+T: 1 1 : 52 : 76 : 0.06
+T: 1 1 : 52 : 25 : 0.07
+T: 1 1 : 52 : 42 : 0.01
+T: 1 1 : 53 : 80 : 0.48
+T: 1 1 : 53 : 79 : 0.06
+T: 1 1 : 53 : 53 : 0.16
+T: 1 1 : 53 : 52 : 0.02
+T: 1 1 : 53 : 50 : 0.02
+T: 1 1 : 53 : 25 : 0.01
+T: 1 1 : 53 : 23 : 0.01
+T: 1 1 : 53 : 44 : 0.08
+T: 1 1 : 53 : 41 : 0.01
+T: 1 1 : 53 : 77 : 0.06
+T: 1 1 : 53 : 26 : 0.08
+T: 1 1 : 53 : 43 : 0.01
+T: 1 1 : 54 : 66 : 0.06
+T: 1 1 : 54 : 63 : 0.03
+T: 1 1 : 54 : 28 : 0.01
+T: 1 1 : 54 : 27 : 0.03
+T: 1 1 : 54 : 55 : 0.08
+T: 1 1 : 54 : 64 : 0.01
+T: 1 1 : 54 : 30 : 0.06
+T: 1 1 : 54 : 54 : 0.24
+T: 1 1 : 54 : 57 : 0.48
+T: 1 1 : 55 : 67 : 0.06
+T: 1 1 : 55 : 64 : 0.02
+T: 1 1 : 55 : 58 : 0.48
+T: 1 1 : 55 : 56 : 0.08
+T: 1 1 : 55 : 28 : 0.02
+T: 1 1 : 55 : 27 : 0.01
+T: 1 1 : 55 : 55 : 0.16
+T: 1 1 : 55 : 63 : 0.01
+T: 1 1 : 55 : 29 : 0.01
+T: 1 1 : 55 : 65 : 0.01
+T: 1 1 : 55 : 31 : 0.06
+T: 1 1 : 55 : 54 : 0.08
+T: 1 1 : 56 : 68 : 0.06
+T: 1 1 : 56 : 65 : 0.03
+T: 1 1 : 56 : 64 : 0.01
+T: 1 1 : 56 : 29 : 0.03
+T: 1 1 : 56 : 28 : 0.01
+T: 1 1 : 56 : 56 : 0.24
+T: 1 1 : 56 : 32 : 0.06
+T: 1 1 : 56 : 55 : 0.08
+T: 1 1 : 56 : 59 : 0.48
+T: 1 1 : 57 : 69 : 0.06
+T: 1 1 : 57 : 66 : 0.02
+T: 1 1 : 57 : 63 : 0.01
+T: 1 1 : 57 : 60 : 0.48
+T: 1 1 : 57 : 58 : 0.08
+T: 1 1 : 57 : 30 : 0.02
+T: 1 1 : 57 : 27 : 0.01
+T: 1 1 : 57 : 31 : 0.01
+T: 1 1 : 57 : 67 : 0.01
+T: 1 1 : 57 : 33 : 0.06
+T: 1 1 : 57 : 54 : 0.08
+T: 1 1 : 57 : 57 : 0.16
+T: 1 1 : 58 : 70 : 0.06
+T: 1 1 : 58 : 67 : 0.01
+T: 1 1 : 58 : 61 : 0.48
+T: 1 1 : 58 : 59 : 0.08
+T: 1 1 : 58 : 58 : 0.08
+T: 1 1 : 58 : 57 : 0.08
+T: 1 1 : 58 : 64 : 0.01
+T: 1 1 : 58 : 30 : 0.01
+T: 1 1 : 58 : 28 : 0.01
+T: 1 1 : 58 : 31 : 0.01
+T: 1 1 : 58 : 66 : 0.01
+T: 1 1 : 58 : 32 : 0.01
+T: 1 1 : 58 : 68 : 0.01
+T: 1 1 : 58 : 34 : 0.06
+T: 1 1 : 58 : 55 : 0.08
+T: 1 1 : 59 : 71 : 0.06
+T: 1 1 : 59 : 68 : 0.02
+T: 1 1 : 59 : 67 : 0.01
+T: 1 1 : 59 : 62 : 0.48
+T: 1 1 : 59 : 59 : 0.16
+T: 1 1 : 59 : 65 : 0.01
+T: 1 1 : 59 : 31 : 0.01
+T: 1 1 : 59 : 29 : 0.01
+T: 1 1 : 59 : 32 : 0.02
+T: 1 1 : 59 : 35 : 0.06
+T: 1 1 : 59 : 56 : 0.08
+T: 1 1 : 59 : 58 : 0.08
+T: 1 1 : 60 : 70 : 0.01
+T: 1 1 : 60 : 69 : 0.08
+T: 1 1 : 60 : 66 : 0.01
+T: 1 1 : 60 : 33 : 0.08
+T: 1 1 : 60 : 61 : 0.08
+T: 1 1 : 60 : 30 : 0.01
+T: 1 1 : 60 : 34 : 0.01
+T: 1 1 : 60 : 57 : 0.08
+T: 1 1 : 60 : 60 : 0.64
+T: 1 1 : 61 : 71 : 0.01
+T: 1 1 : 61 : 70 : 0.07
+T: 1 1 : 61 : 62 : 0.08
+T: 1 1 : 61 : 61 : 0.56
+T: 1 1 : 61 : 67 : 0.01
+T: 1 1 : 61 : 33 : 0.01
+T: 1 1 : 61 : 31 : 0.01
+T: 1 1 : 61 : 34 : 0.07
+T: 1 1 : 61 : 69 : 0.01
+T: 1 1 : 61 : 35 : 0.01
+T: 1 1 : 61 : 58 : 0.08
+T: 1 1 : 61 : 60 : 0.08
+T: 1 1 : 62 : 71 : 0.08
+T: 1 1 : 62 : 70 : 0.01
+T: 1 1 : 62 : 68 : 0.01
+T: 1 1 : 62 : 34 : 0.01
+T: 1 1 : 62 : 62 : 0.64
+T: 1 1 : 62 : 32 : 0.01
+T: 1 1 : 62 : 35 : 0.08
+T: 1 1 : 62 : 59 : 0.08
+T: 1 1 : 62 : 61 : 0.08
+T: 1 1 : 63 : 75 : 0.06
+T: 1 1 : 63 : 66 : 0.42
+T: 1 1 : 63 : 64 : 0.07
+T: 1 1 : 63 : 63 : 0.21
+T: 1 1 : 63 : 36 : 0.03
+T: 1 1 : 63 : 57 : 0.06
+T: 1 1 : 63 : 73 : 0.01
+T: 1 1 : 63 : 39 : 0.06
+T: 1 1 : 63 : 37 : 0.01
+T: 1 1 : 63 : 54 : 0.03
+T: 1 1 : 63 : 72 : 0.03
+T: 1 1 : 63 : 55 : 0.01
+T: 1 1 : 64 : 76 : 0.06
+T: 1 1 : 64 : 67 : 0.42
+T: 1 1 : 64 : 65 : 0.07
+T: 1 1 : 64 : 64 : 0.14
+T: 1 1 : 64 : 63 : 0.07
+T: 1 1 : 64 : 58 : 0.06
+T: 1 1 : 64 : 73 : 0.02
+T: 1 1 : 64 : 56 : 0.01
+T: 1 1 : 64 : 36 : 0.01
+T: 1 1 : 64 : 74 : 0.01
+T: 1 1 : 64 : 40 : 0.06
+T: 1 1 : 64 : 37 : 0.02
+T: 1 1 : 64 : 54 : 0.01
+T: 1 1 : 64 : 72 : 0.01
+T: 1 1 : 64 : 38 : 0.01
+T: 1 1 : 64 : 55 : 0.02
+T: 1 1 : 65 : 77 : 0.06
+T: 1 1 : 65 : 74 : 0.03
+T: 1 1 : 65 : 68 : 0.42
+T: 1 1 : 65 : 65 : 0.21
+T: 1 1 : 65 : 64 : 0.07
+T: 1 1 : 65 : 59 : 0.06
+T: 1 1 : 65 : 37 : 0.01
+T: 1 1 : 65 : 41 : 0.06
+T: 1 1 : 65 : 38 : 0.03
+T: 1 1 : 65 : 55 : 0.01
+T: 1 1 : 65 : 73 : 0.01
+T: 1 1 : 65 : 56 : 0.03
+T: 1 1 : 66 : 78 : 0.06
+T: 1 1 : 66 : 72 : 0.01
+T: 1 1 : 66 : 69 : 0.42
+T: 1 1 : 66 : 67 : 0.07
+T: 1 1 : 66 : 66 : 0.14
+T: 1 1 : 66 : 63 : 0.07
+T: 1 1 : 66 : 60 : 0.06
+T: 1 1 : 66 : 75 : 0.02
+T: 1 1 : 66 : 58 : 0.01
+T: 1 1 : 66 : 39 : 0.02
+T: 1 1 : 66 : 36 : 0.01
+T: 1 1 : 66 : 57 : 0.02
+T: 1 1 : 66 : 40 : 0.01
+T: 1 1 : 66 : 54 : 0.01
+T: 1 1 : 66 : 76 : 0.01
+T: 1 1 : 66 : 42 : 0.06
+T: 1 1 : 67 : 79 : 0.06
+T: 1 1 : 67 : 75 : 0.01
+T: 1 1 : 67 : 43 : 0.06
+T: 1 1 : 67 : 55 : 0.01
+T: 1 1 : 67 : 41 : 0.01
+T: 1 1 : 67 : 58 : 0.01
+T: 1 1 : 67 : 77 : 0.01
+T: 1 1 : 67 : 40 : 0.01
+T: 1 1 : 67 : 57 : 0.01
+T: 1 1 : 67 : 37 : 0.01
+T: 1 1 : 67 : 76 : 0.01
+T: 1 1 : 67 : 39 : 0.01
+T: 1 1 : 67 : 73 : 0.01
+T: 1 1 : 67 : 59 : 0.01
+T: 1 1 : 67 : 61 : 0.06
+T: 1 1 : 67 : 64 : 0.07
+T: 1 1 : 67 : 66 : 0.07
+T: 1 1 : 67 : 67 : 0.07
+T: 1 1 : 67 : 68 : 0.07
+T: 1 1 : 67 : 70 : 0.42
+T: 1 1 : 68 : 80 : 0.06
+T: 1 1 : 68 : 77 : 0.02
+T: 1 1 : 68 : 71 : 0.42
+T: 1 1 : 68 : 68 : 0.14
+T: 1 1 : 68 : 67 : 0.07
+T: 1 1 : 68 : 65 : 0.07
+T: 1 1 : 68 : 62 : 0.06
+T: 1 1 : 68 : 76 : 0.01
+T: 1 1 : 68 : 59 : 0.02
+T: 1 1 : 68 : 74 : 0.01
+T: 1 1 : 68 : 40 : 0.01
+T: 1 1 : 68 : 38 : 0.01
+T: 1 1 : 68 : 44 : 0.06
+T: 1 1 : 68 : 41 : 0.02
+T: 1 1 : 68 : 58 : 0.01
+T: 1 1 : 68 : 56 : 0.01
+T: 1 1 : 69 : 79 : 0.01
+T: 1 1 : 69 : 75 : 0.01
+T: 1 1 : 69 : 70 : 0.07
+T: 1 1 : 69 : 69 : 0.56
+T: 1 1 : 69 : 66 : 0.07
+T: 1 1 : 69 : 42 : 0.08
+T: 1 1 : 69 : 39 : 0.01
+T: 1 1 : 69 : 60 : 0.08
+T: 1 1 : 69 : 43 : 0.01
+T: 1 1 : 69 : 57 : 0.01
+T: 1 1 : 69 : 78 : 0.08
+T: 1 1 : 69 : 61 : 0.01
+T: 1 1 : 70 : 80 : 0.01
+T: 1 1 : 70 : 71 : 0.07
+T: 1 1 : 70 : 70 : 0.49
+T: 1 1 : 70 : 69 : 0.07
+T: 1 1 : 70 : 67 : 0.07
+T: 1 1 : 70 : 79 : 0.07
+T: 1 1 : 70 : 62 : 0.01
+T: 1 1 : 70 : 76 : 0.01
+T: 1 1 : 70 : 42 : 0.01
+T: 1 1 : 70 : 40 : 0.01
+T: 1 1 : 70 : 78 : 0.01
+T: 1 1 : 70 : 61 : 0.07
+T: 1 1 : 70 : 44 : 0.01
+T: 1 1 : 70 : 58 : 0.01
+T: 1 1 : 70 : 43 : 0.07
+T: 1 1 : 70 : 60 : 0.01
+T: 1 1 : 71 : 80 : 0.08
+T: 1 1 : 71 : 71 : 0.56
+T: 1 1 : 71 : 70 : 0.07
+T: 1 1 : 71 : 68 : 0.07
+T: 1 1 : 71 : 77 : 0.01
+T: 1 1 : 71 : 43 : 0.01
+T: 1 1 : 71 : 41 : 0.01
+T: 1 1 : 71 : 79 : 0.01
+T: 1 1 : 71 : 62 : 0.08
+T: 1 1 : 71 : 59 : 0.01
+T: 1 1 : 71 : 44 : 0.08
+T: 1 1 : 71 : 61 : 0.01
+T: 1 1 : 72 : 75 : 0.48
+T: 1 1 : 72 : 73 : 0.08
+T: 1 1 : 72 : 72 : 0.24
+T: 1 1 : 72 : 45 : 0.03
+T: 1 1 : 72 : 66 : 0.06
+T: 1 1 : 72 : 48 : 0.06
+T: 1 1 : 72 : 46 : 0.01
+T: 1 1 : 72 : 63 : 0.03
+T: 1 1 : 72 : 64 : 0.01
+T: 1 1 : 73 : 76 : 0.48
+T: 1 1 : 73 : 74 : 0.08
+T: 1 1 : 73 : 73 : 0.16
+T: 1 1 : 73 : 72 : 0.08
+T: 1 1 : 73 : 67 : 0.06
+T: 1 1 : 73 : 65 : 0.01
+T: 1 1 : 73 : 45 : 0.01
+T: 1 1 : 73 : 49 : 0.06
+T: 1 1 : 73 : 46 : 0.02
+T: 1 1 : 73 : 63 : 0.01
+T: 1 1 : 73 : 47 : 0.01
+T: 1 1 : 73 : 64 : 0.02
+T: 1 1 : 74 : 77 : 0.48
+T: 1 1 : 74 : 74 : 0.24
+T: 1 1 : 74 : 73 : 0.08
+T: 1 1 : 74 : 68 : 0.06
+T: 1 1 : 74 : 46 : 0.01
+T: 1 1 : 74 : 50 : 0.06
+T: 1 1 : 74 : 47 : 0.03
+T: 1 1 : 74 : 64 : 0.01
+T: 1 1 : 74 : 65 : 0.03
+T: 1 1 : 75 : 78 : 0.48
+T: 1 1 : 75 : 76 : 0.08
+T: 1 1 : 75 : 75 : 0.16
+T: 1 1 : 75 : 72 : 0.08
+T: 1 1 : 75 : 69 : 0.06
+T: 1 1 : 75 : 67 : 0.01
+T: 1 1 : 75 : 48 : 0.02
+T: 1 1 : 75 : 45 : 0.01
+T: 1 1 : 75 : 66 : 0.02
+T: 1 1 : 75 : 49 : 0.01
+T: 1 1 : 75 : 63 : 0.01
+T: 1 1 : 75 : 51 : 0.06
+T: 1 1 : 76 : 79 : 0.48
+T: 1 1 : 76 : 77 : 0.08
+T: 1 1 : 76 : 76 : 0.08
+T: 1 1 : 76 : 75 : 0.08
+T: 1 1 : 76 : 73 : 0.08
+T: 1 1 : 76 : 70 : 0.06
+T: 1 1 : 76 : 68 : 0.01
+T: 1 1 : 76 : 48 : 0.01
+T: 1 1 : 76 : 46 : 0.01
+T: 1 1 : 76 : 66 : 0.01
+T: 1 1 : 76 : 49 : 0.01
+T: 1 1 : 76 : 67 : 0.01
+T: 1 1 : 76 : 50 : 0.01
+T: 1 1 : 76 : 64 : 0.01
+T: 1 1 : 76 : 52 : 0.06
+T: 1 1 : 77 : 80 : 0.48
+T: 1 1 : 77 : 77 : 0.16
+T: 1 1 : 77 : 76 : 0.08
+T: 1 1 : 77 : 74 : 0.08
+T: 1 1 : 77 : 71 : 0.06
+T: 1 1 : 77 : 68 : 0.02
+T: 1 1 : 77 : 49 : 0.01
+T: 1 1 : 77 : 47 : 0.01
+T: 1 1 : 77 : 53 : 0.06
+T: 1 1 : 77 : 50 : 0.02
+T: 1 1 : 77 : 67 : 0.01
+T: 1 1 : 77 : 65 : 0.01
+T: 1 2 : 80 : 80 : 0.24
+T: 1 2 : 80 : 79 : 0.48
+T: 1 2 : 80 : 77 : 0.08
+T: 1 2 : 80 : 52 : 0.06
+T: 1 2 : 80 : 50 : 0.01
+T: 1 2 : 80 : 71 : 0.03
+T: 1 2 : 80 : 68 : 0.01
+T: 1 2 : 80 : 53 : 0.03
+T: 1 2 : 80 : 70 : 0.06
+T: 1 2 : 79 : 80 : 0.08
+T: 1 2 : 79 : 79 : 0.16
+T: 1 2 : 79 : 78 : 0.48
+T: 1 2 : 79 : 76 : 0.08
+T: 1 2 : 79 : 71 : 0.01
+T: 1 2 : 79 : 51 : 0.06
+T: 1 2 : 79 : 49 : 0.01
+T: 1 2 : 79 : 70 : 0.02
+T: 1 2 : 79 : 53 : 0.01
+T: 1 2 : 79 : 67 : 0.01
+T: 1 2 : 79 : 52 : 0.02
+T: 1 2 : 79 : 69 : 0.06
+T: 1 2 : 78 : 79 : 0.08
+T: 1 2 : 78 : 78 : 0.64
+T: 1 2 : 78 : 75 : 0.08
+T: 1 2 : 78 : 51 : 0.08
+T: 1 2 : 78 : 48 : 0.01
+T: 1 2 : 78 : 69 : 0.08
+T: 1 2 : 78 : 52 : 0.01
+T: 1 2 : 78 : 66 : 0.01
+T: 1 2 : 78 : 70 : 0.01
+T: 1 2 : 35 : 62 : 0.18
+T: 1 2 : 35 : 61 : 0.36
+T: 1 2 : 35 : 44 : 0.03
+T: 1 2 : 35 : 43 : 0.06
+T: 1 2 : 35 : 41 : 0.01
+T: 1 2 : 35 : 7 : 0.06
+T: 1 2 : 35 : 35 : 0.06
+T: 1 2 : 35 : 5 : 0.01
+T: 1 2 : 35 : 59 : 0.06
+T: 1 2 : 35 : 8 : 0.03
+T: 1 2 : 35 : 32 : 0.02
+T: 1 2 : 35 : 34 : 0.12
+T: 1 2 : 34 : 62 : 0.06
+T: 1 2 : 34 : 61 : 0.12
+T: 1 2 : 34 : 44 : 0.01
+T: 1 2 : 34 : 60 : 0.36
+T: 1 2 : 34 : 43 : 0.02
+T: 1 2 : 34 : 35 : 0.02
+T: 1 2 : 34 : 34 : 0.04
+T: 1 2 : 34 : 40 : 0.01
+T: 1 2 : 34 : 6 : 0.06
+T: 1 2 : 34 : 4 : 0.01
+T: 1 2 : 34 : 58 : 0.06
+T: 1 2 : 34 : 7 : 0.02
+T: 1 2 : 34 : 42 : 0.06
+T: 1 2 : 34 : 8 : 0.01
+T: 1 2 : 34 : 31 : 0.02
+T: 1 2 : 34 : 33 : 0.12
+T: 1 2 : 33 : 61 : 0.06
+T: 1 2 : 33 : 60 : 0.48
+T: 1 2 : 33 : 43 : 0.01
+T: 1 2 : 33 : 42 : 0.08
+T: 1 2 : 33 : 39 : 0.01
+T: 1 2 : 33 : 57 : 0.06
+T: 1 2 : 33 : 6 : 0.08
+T: 1 2 : 33 : 34 : 0.02
+T: 1 2 : 33 : 3 : 0.01
+T: 1 2 : 33 : 7 : 0.01
+T: 1 2 : 33 : 30 : 0.02
+T: 1 2 : 33 : 33 : 0.16
+T: 1 2 : 32 : 62 : 0.06
+T: 1 2 : 32 : 44 : 0.01
+T: 1 2 : 32 : 58 : 0.36
+T: 1 2 : 32 : 41 : 0.02
+T: 1 2 : 32 : 40 : 0.06
+T: 1 2 : 32 : 35 : 0.02
+T: 1 2 : 32 : 32 : 0.04
+T: 1 2 : 32 : 38 : 0.01
+T: 1 2 : 32 : 4 : 0.06
+T: 1 2 : 32 : 2 : 0.01
+T: 1 2 : 32 : 56 : 0.06
+T: 1 2 : 32 : 5 : 0.02
+T: 1 2 : 32 : 59 : 0.12
+T: 1 2 : 32 : 8 : 0.01
+T: 1 2 : 32 : 29 : 0.02
+T: 1 2 : 32 : 31 : 0.12
+T: 1 2 : 31 : 61 : 0.06
+T: 1 2 : 31 : 59 : 0.06
+T: 1 2 : 31 : 58 : 0.06
+T: 1 2 : 31 : 57 : 0.36
+T: 1 2 : 31 : 28 : 0.02
+T: 1 2 : 31 : 7 : 0.01
+T: 1 2 : 31 : 5 : 0.01
+T: 1 2 : 31 : 39 : 0.06
+T: 1 2 : 31 : 41 : 0.01
+T: 1 2 : 31 : 4 : 0.01
+T: 1 2 : 31 : 55 : 0.06
+T: 1 2 : 31 : 1 : 0.01
+T: 1 2 : 31 : 37 : 0.01
+T: 1 2 : 31 : 30 : 0.12
+T: 1 2 : 31 : 31 : 0.02
+T: 1 2 : 31 : 32 : 0.02
+T: 1 2 : 31 : 34 : 0.02
+T: 1 2 : 31 : 3 : 0.06
+T: 1 2 : 31 : 40 : 0.01
+T: 1 2 : 31 : 43 : 0.01
+T: 1 2 : 30 : 60 : 0.06
+T: 1 2 : 30 : 58 : 0.06
+T: 1 2 : 30 : 42 : 0.01
+T: 1 2 : 30 : 39 : 0.07
+T: 1 2 : 30 : 36 : 0.01
+T: 1 2 : 30 : 33 : 0.02
+T: 1 2 : 30 : 31 : 0.02
+T: 1 2 : 30 : 54 : 0.06
+T: 1 2 : 30 : 3 : 0.07
+T: 1 2 : 30 : 0 : 0.01
+T: 1 2 : 30 : 4 : 0.01
+T: 1 2 : 30 : 57 : 0.42
+T: 1 2 : 30 : 40 : 0.01
+T: 1 2 : 30 : 6 : 0.01
+T: 1 2 : 30 : 27 : 0.02
+T: 1 2 : 30 : 30 : 0.14
+T: 1 2 : 29 : 59 : 0.06
+T: 1 2 : 29 : 41 : 0.01
+T: 1 2 : 29 : 55 : 0.36
+T: 1 2 : 29 : 38 : 0.03
+T: 1 2 : 29 : 37 : 0.06
+T: 1 2 : 29 : 2 : 0.03
+T: 1 2 : 29 : 1 : 0.06
+T: 1 2 : 29 : 29 : 0.06
+T: 1 2 : 29 : 56 : 0.18
+T: 1 2 : 29 : 5 : 0.01
+T: 1 2 : 29 : 28 : 0.12
+T: 1 2 : 29 : 32 : 0.02
+T: 1 2 : 28 : 58 : 0.06
+T: 1 2 : 28 : 56 : 0.06
+T: 1 2 : 28 : 40 : 0.01
+T: 1 2 : 28 : 54 : 0.36
+T: 1 2 : 28 : 37 : 0.02
+T: 1 2 : 28 : 31 : 0.02
+T: 1 2 : 28 : 29 : 0.02
+T: 1 2 : 28 : 1 : 0.02
+T: 1 2 : 28 : 0 : 0.06
+T: 1 2 : 28 : 28 : 0.04
+T: 1 2 : 28 : 36 : 0.06
+T: 1 2 : 28 : 2 : 0.01
+T: 1 2 : 28 : 55 : 0.12
+T: 1 2 : 28 : 38 : 0.01
+T: 1 2 : 28 : 4 : 0.01
+T: 1 2 : 28 : 27 : 0.12
+T: 1 2 : 27 : 57 : 0.06
+T: 1 2 : 27 : 55 : 0.06
+T: 1 2 : 27 : 39 : 0.01
+T: 1 2 : 27 : 36 : 0.08
+T: 1 2 : 27 : 1 : 0.01
+T: 1 2 : 27 : 0 : 0.08
+T: 1 2 : 27 : 28 : 0.02
+T: 1 2 : 27 : 54 : 0.48
+T: 1 2 : 27 : 37 : 0.01
+T: 1 2 : 27 : 3 : 0.01
+T: 1 2 : 27 : 27 : 0.16
+T: 1 2 : 27 : 30 : 0.02
+T: 1 2 : 26 : 53 : 0.18
+T: 1 2 : 26 : 52 : 0.36
+T: 1 2 : 26 : 50 : 0.06
+T: 1 2 : 26 : 16 : 0.06
+T: 1 2 : 26 : 23 : 0.03
+T: 1 2 : 26 : 14 : 0.01
+T: 1 2 : 26 : 17 : 0.03
+T: 1 2 : 26 : 25 : 0.18
+T: 1 2 : 26 : 26 : 0.09
+T: 1 2 : 25 : 53 : 0.06
+T: 1 2 : 25 : 52 : 0.12
+T: 1 2 : 25 : 26 : 0.03
+T: 1 2 : 25 : 25 : 0.06
+T: 1 2 : 25 : 49 : 0.06
+T: 1 2 : 25 : 15 : 0.06
+T: 1 2 : 25 : 22 : 0.03
+T: 1 2 : 25 : 13 : 0.01
+T: 1 2 : 25 : 16 : 0.02
+T: 1 2 : 25 : 51 : 0.36
+T: 1 2 : 25 : 17 : 0.01
+T: 1 2 : 25 : 24 : 0.18
+T: 1 2 : 24 : 52 : 0.06
+T: 1 2 : 24 : 51 : 0.48
+T: 1 2 : 24 : 48 : 0.06
+T: 1 2 : 24 : 15 : 0.08
+T: 1 2 : 24 : 12 : 0.01
+T: 1 2 : 24 : 16 : 0.01
+T: 1 2 : 24 : 21 : 0.03
+T: 1 2 : 24 : 24 : 0.24
+T: 1 2 : 24 : 25 : 0.03
+T: 1 2 : 23 : 53 : 0.06
+T: 1 2 : 23 : 50 : 0.12
+T: 1 2 : 23 : 49 : 0.36
+T: 1 2 : 23 : 26 : 0.03
+T: 1 2 : 23 : 23 : 0.06
+T: 1 2 : 23 : 47 : 0.06
+T: 1 2 : 23 : 13 : 0.06
+T: 1 2 : 23 : 20 : 0.03
+T: 1 2 : 23 : 11 : 0.01
+T: 1 2 : 23 : 14 : 0.02
+T: 1 2 : 23 : 17 : 0.01
+T: 1 2 : 23 : 22 : 0.18
+T: 1 2 : 22 : 52 : 0.06
+T: 1 2 : 22 : 49 : 0.06
+T: 1 2 : 22 : 25 : 0.03
+T: 1 2 : 22 : 23 : 0.03
+T: 1 2 : 22 : 22 : 0.03
+T: 1 2 : 22 : 21 : 0.18
+T: 1 2 : 22 : 46 : 0.06
+T: 1 2 : 22 : 12 : 0.06
+T: 1 2 : 22 : 19 : 0.03
+T: 1 2 : 22 : 10 : 0.01
+T: 1 2 : 22 : 13 : 0.01
+T: 1 2 : 22 : 48 : 0.36
+T: 1 2 : 22 : 14 : 0.01
+T: 1 2 : 22 : 50 : 0.06
+T: 1 2 : 22 : 16 : 0.01
+T: 1 2 : 21 : 51 : 0.06
+T: 1 2 : 21 : 48 : 0.42
+T: 1 2 : 21 : 45 : 0.06
+T: 1 2 : 21 : 24 : 0.03
+T: 1 2 : 21 : 22 : 0.03
+T: 1 2 : 21 : 12 : 0.07
+T: 1 2 : 21 : 9 : 0.01
+T: 1 2 : 21 : 13 : 0.01
+T: 1 2 : 21 : 49 : 0.06
+T: 1 2 : 21 : 15 : 0.01
+T: 1 2 : 21 : 18 : 0.03
+T: 1 2 : 21 : 21 : 0.21
+T: 1 2 : 20 : 50 : 0.06
+T: 1 2 : 20 : 47 : 0.18
+T: 1 2 : 20 : 46 : 0.36
+T: 1 2 : 20 : 11 : 0.03
+T: 1 2 : 20 : 10 : 0.06
+T: 1 2 : 20 : 14 : 0.01
+T: 1 2 : 20 : 19 : 0.18
+T: 1 2 : 20 : 20 : 0.09
+T: 1 2 : 20 : 23 : 0.03
+T: 1 2 : 19 : 49 : 0.06
+T: 1 2 : 19 : 46 : 0.12
+T: 1 2 : 19 : 22 : 0.03
+T: 1 2 : 19 : 20 : 0.03
+T: 1 2 : 19 : 10 : 0.02
+T: 1 2 : 19 : 9 : 0.06
+T: 1 2 : 19 : 45 : 0.36
+T: 1 2 : 19 : 11 : 0.01
+T: 1 2 : 19 : 18 : 0.18
+T: 1 2 : 19 : 47 : 0.06
+T: 1 2 : 19 : 13 : 0.01
+T: 1 2 : 19 : 19 : 0.06
+T: 1 2 : 18 : 48 : 0.06
+T: 1 2 : 18 : 45 : 0.48
+T: 1 2 : 18 : 10 : 0.01
+T: 1 2 : 18 : 9 : 0.08
+T: 1 2 : 18 : 46 : 0.06
+T: 1 2 : 18 : 12 : 0.01
+T: 1 2 : 18 : 19 : 0.03
+T: 1 2 : 18 : 18 : 0.24
+T: 1 2 : 18 : 21 : 0.03
+T: 1 2 : 17 : 44 : 0.18
+T: 1 2 : 17 : 43 : 0.36
+T: 1 2 : 17 : 26 : 0.03
+T: 1 2 : 17 : 23 : 0.01
+T: 1 2 : 17 : 41 : 0.06
+T: 1 2 : 17 : 7 : 0.06
+T: 1 2 : 17 : 14 : 0.02
+T: 1 2 : 17 : 5 : 0.01
+T: 1 2 : 17 : 25 : 0.06
+T: 1 2 : 17 : 8 : 0.03
+T: 1 2 : 17 : 16 : 0.12
+T: 1 2 : 17 : 17 : 0.06
+T: 1 2 : 16 : 44 : 0.06
+T: 1 2 : 16 : 43 : 0.12
+T: 1 2 : 16 : 26 : 0.01
+T: 1 2 : 16 : 22 : 0.01
+T: 1 2 : 16 : 17 : 0.02
+T: 1 2 : 16 : 16 : 0.04
+T: 1 2 : 16 : 40 : 0.06
+T: 1 2 : 16 : 6 : 0.06
+T: 1 2 : 16 : 13 : 0.02
+T: 1 2 : 16 : 4 : 0.01
+T: 1 2 : 16 : 24 : 0.06
+T: 1 2 : 16 : 7 : 0.02
+T: 1 2 : 16 : 42 : 0.36
+T: 1 2 : 16 : 25 : 0.02
+T: 1 2 : 16 : 8 : 0.01
+T: 1 2 : 16 : 15 : 0.12
+T: 1 2 : 5 : 35 : 0.06
+T: 1 2 : 5 : 32 : 0.12
+T: 1 2 : 5 : 29 : 0.06
+T: 1 2 : 5 : 17 : 0.01
+T: 1 2 : 5 : 31 : 0.36
+T: 1 2 : 5 : 14 : 0.02
+T: 1 2 : 5 : 4 : 0.18
+T: 1 2 : 5 : 11 : 0.01
+T: 1 2 : 5 : 2 : 0.03
+T: 1 2 : 5 : 5 : 0.06
+T: 1 2 : 5 : 8 : 0.03
+T: 1 2 : 5 : 13 : 0.06
+T: 1 2 : 4 : 34 : 0.06
+T: 1 2 : 4 : 32 : 0.06
+T: 1 2 : 4 : 28 : 0.06
+T: 1 2 : 4 : 16 : 0.01
+T: 1 2 : 4 : 31 : 0.06
+T: 1 2 : 4 : 14 : 0.01
+T: 1 2 : 4 : 30 : 0.36
+T: 1 2 : 4 : 13 : 0.01
+T: 1 2 : 4 : 12 : 0.06
+T: 1 2 : 4 : 3 : 0.18
+T: 1 2 : 4 : 10 : 0.01
+T: 1 2 : 4 : 1 : 0.03
+T: 1 2 : 4 : 4 : 0.03
+T: 1 2 : 4 : 5 : 0.03
+T: 1 2 : 4 : 7 : 0.03
+T: 1 2 : 3 : 33 : 0.06
+T: 1 2 : 3 : 31 : 0.06
+T: 1 2 : 3 : 27 : 0.06
+T: 1 2 : 3 : 15 : 0.01
+T: 1 2 : 3 : 30 : 0.42
+T: 1 2 : 3 : 13 : 0.01
+T: 1 2 : 3 : 3 : 0.21
+T: 1 2 : 3 : 0 : 0.03
+T: 1 2 : 3 : 4 : 0.03
+T: 1 2 : 3 : 6 : 0.03
+T: 1 2 : 3 : 9 : 0.01
+T: 1 2 : 3 : 12 : 0.07
+T: 1 2 : 2 : 32 : 0.06
+T: 1 2 : 2 : 29 : 0.18
+T: 1 2 : 2 : 2 : 0.09
+T: 1 2 : 2 : 1 : 0.18
+T: 1 2 : 2 : 5 : 0.03
+T: 1 2 : 2 : 10 : 0.06
+T: 1 2 : 2 : 28 : 0.36
+T: 1 2 : 2 : 11 : 0.03
+T: 1 2 : 2 : 14 : 0.01
+T: 1 2 : 0 : 30 : 0.06
+T: 1 2 : 0 : 28 : 0.06
+T: 1 2 : 0 : 1 : 0.03
+T: 1 2 : 0 : 0 : 0.24
+T: 1 2 : 0 : 3 : 0.03
+T: 1 2 : 0 : 27 : 0.48
+T: 1 2 : 0 : 10 : 0.01
+T: 1 2 : 0 : 9 : 0.08
+T: 1 2 : 0 : 12 : 0.01
+T: 1 2 : 1 : 31 : 0.06
+T: 1 2 : 1 : 29 : 0.06
+T: 1 2 : 1 : 13 : 0.01
+T: 1 2 : 1 : 28 : 0.12
+T: 1 2 : 1 : 11 : 0.01
+T: 1 2 : 1 : 1 : 0.06
+T: 1 2 : 1 : 0 : 0.18
+T: 1 2 : 1 : 2 : 0.03
+T: 1 2 : 1 : 9 : 0.06
+T: 1 2 : 1 : 4 : 0.03
+T: 1 2 : 1 : 27 : 0.36
+T: 1 2 : 1 : 10 : 0.02
+T: 1 2 : 6 : 34 : 0.06
+T: 1 2 : 6 : 30 : 0.06
+T: 1 2 : 6 : 6 : 0.24
+T: 1 2 : 6 : 3 : 0.03
+T: 1 2 : 6 : 7 : 0.03
+T: 1 2 : 6 : 12 : 0.01
+T: 1 2 : 6 : 15 : 0.08
+T: 1 2 : 6 : 33 : 0.48
+T: 1 2 : 6 : 16 : 0.01
+T: 1 2 : 7 : 35 : 0.06
+T: 1 2 : 7 : 31 : 0.06
+T: 1 2 : 7 : 34 : 0.12
+T: 1 2 : 7 : 17 : 0.01
+T: 1 2 : 7 : 33 : 0.36
+T: 1 2 : 7 : 16 : 0.02
+T: 1 2 : 7 : 6 : 0.18
+T: 1 2 : 7 : 13 : 0.01
+T: 1 2 : 7 : 4 : 0.03
+T: 1 2 : 7 : 7 : 0.06
+T: 1 2 : 7 : 8 : 0.03
+T: 1 2 : 7 : 15 : 0.06
+T: 1 2 : 8 : 35 : 0.18
+T: 1 2 : 8 : 32 : 0.06
+T: 1 2 : 8 : 7 : 0.18
+T: 1 2 : 8 : 14 : 0.01
+T: 1 2 : 8 : 5 : 0.03
+T: 1 2 : 8 : 8 : 0.09
+T: 1 2 : 8 : 16 : 0.06
+T: 1 2 : 8 : 34 : 0.36
+T: 1 2 : 8 : 17 : 0.03
+T: 1 2 : 9 : 39 : 0.06
+T: 1 2 : 9 : 21 : 0.01
+T: 1 2 : 9 : 36 : 0.48
+T: 1 2 : 9 : 19 : 0.01
+T: 1 2 : 9 : 18 : 0.08
+T: 1 2 : 9 : 1 : 0.01
+T: 1 2 : 9 : 0 : 0.08
+T: 1 2 : 9 : 37 : 0.06
+T: 1 2 : 9 : 3 : 0.01
+T: 1 2 : 9 : 10 : 0.02
+T: 1 2 : 9 : 9 : 0.16
+T: 1 2 : 9 : 12 : 0.02
+T: 1 2 : 10 : 40 : 0.06
+T: 1 2 : 10 : 22 : 0.01
+T: 1 2 : 10 : 37 : 0.12
+T: 1 2 : 10 : 20 : 0.01
+T: 1 2 : 10 : 13 : 0.02
+T: 1 2 : 10 : 11 : 0.02
+T: 1 2 : 10 : 18 : 0.06
+T: 1 2 : 10 : 1 : 0.02
+T: 1 2 : 10 : 0 : 0.06
+T: 1 2 : 10 : 36 : 0.36
+T: 1 2 : 10 : 19 : 0.02
+T: 1 2 : 10 : 2 : 0.01
+T: 1 2 : 10 : 9 : 0.12
+T: 1 2 : 10 : 38 : 0.06
+T: 1 2 : 10 : 4 : 0.01
+T: 1 2 : 10 : 10 : 0.04
+T: 1 2 : 11 : 41 : 0.06
+T: 1 2 : 11 : 38 : 0.18
+T: 1 2 : 11 : 23 : 0.01
+T: 1 2 : 11 : 37 : 0.36
+T: 1 2 : 11 : 20 : 0.03
+T: 1 2 : 11 : 19 : 0.06
+T: 1 2 : 11 : 2 : 0.03
+T: 1 2 : 11 : 1 : 0.06
+T: 1 2 : 11 : 5 : 0.01
+T: 1 2 : 11 : 10 : 0.12
+T: 1 2 : 11 : 11 : 0.06
+T: 1 2 : 11 : 14 : 0.02
+T: 1 2 : 12 : 42 : 0.06
+T: 1 2 : 12 : 36 : 0.06
+T: 1 2 : 12 : 24 : 0.01
+T: 1 2 : 12 : 39 : 0.42
+T: 1 2 : 12 : 22 : 0.01
+T: 1 2 : 12 : 18 : 0.01
+T: 1 2 : 12 : 15 : 0.02
+T: 1 2 : 12 : 13 : 0.02
+T: 1 2 : 12 : 3 : 0.07
+T: 1 2 : 12 : 0 : 0.01
+T: 1 2 : 12 : 21 : 0.07
+T: 1 2 : 12 : 4 : 0.01
+T: 1 2 : 12 : 40 : 0.06
+T: 1 2 : 12 : 6 : 0.01
+T: 1 2 : 12 : 9 : 0.02
+T: 1 2 : 12 : 12 : 0.14
+T: 1 2 : 13 : 43 : 0.06
+T: 1 2 : 13 : 39 : 0.36
+T: 1 2 : 13 : 7 : 0.01
+T: 1 2 : 13 : 5 : 0.01
+T: 1 2 : 13 : 22 : 0.01
+T: 1 2 : 13 : 41 : 0.06
+T: 1 2 : 13 : 4 : 0.01
+T: 1 2 : 13 : 21 : 0.06
+T: 1 2 : 13 : 1 : 0.01
+T: 1 2 : 13 : 10 : 0.02
+T: 1 2 : 13 : 40 : 0.06
+T: 1 2 : 13 : 3 : 0.06
+T: 1 2 : 13 : 37 : 0.06
+T: 1 2 : 13 : 12 : 0.12
+T: 1 2 : 13 : 13 : 0.02
+T: 1 2 : 13 : 14 : 0.02
+T: 1 2 : 13 : 16 : 0.02
+T: 1 2 : 13 : 19 : 0.01
+T: 1 2 : 13 : 23 : 0.01
+T: 1 2 : 13 : 25 : 0.01
+T: 1 2 : 14 : 44 : 0.06
+T: 1 2 : 14 : 41 : 0.12
+T: 1 2 : 14 : 26 : 0.01
+T: 1 2 : 14 : 40 : 0.36
+T: 1 2 : 14 : 23 : 0.02
+T: 1 2 : 14 : 20 : 0.01
+T: 1 2 : 14 : 17 : 0.02
+T: 1 2 : 14 : 14 : 0.04
+T: 1 2 : 14 : 38 : 0.06
+T: 1 2 : 14 : 4 : 0.06
+T: 1 2 : 14 : 11 : 0.02
+T: 1 2 : 14 : 2 : 0.01
+T: 1 2 : 14 : 22 : 0.06
+T: 1 2 : 14 : 5 : 0.02
+T: 1 2 : 14 : 8 : 0.01
+T: 1 2 : 14 : 13 : 0.12
+T: 1 2 : 15 : 43 : 0.06
+T: 1 2 : 15 : 39 : 0.06
+T: 1 2 : 15 : 42 : 0.48
+T: 1 2 : 15 : 25 : 0.01
+T: 1 2 : 15 : 21 : 0.01
+T: 1 2 : 15 : 6 : 0.08
+T: 1 2 : 15 : 3 : 0.01
+T: 1 2 : 15 : 24 : 0.08
+T: 1 2 : 15 : 7 : 0.01
+T: 1 2 : 15 : 12 : 0.02
+T: 1 2 : 15 : 15 : 0.16
+T: 1 2 : 15 : 16 : 0.02
+T: 1 2 : 36 : 66 : 0.06
+T: 1 2 : 36 : 48 : 0.01
+T: 1 2 : 36 : 39 : 0.01
+T: 1 2 : 36 : 37 : 0.01
+T: 1 2 : 36 : 36 : 0.08
+T: 1 2 : 36 : 9 : 0.08
+T: 1 2 : 36 : 64 : 0.06
+T: 1 2 : 36 : 30 : 0.01
+T: 1 2 : 36 : 63 : 0.48
+T: 1 2 : 36 : 46 : 0.01
+T: 1 2 : 36 : 12 : 0.01
+T: 1 2 : 36 : 10 : 0.01
+T: 1 2 : 36 : 27 : 0.08
+T: 1 2 : 36 : 45 : 0.08
+T: 1 2 : 36 : 28 : 0.01
+T: 1 2 : 37 : 67 : 0.06
+T: 1 2 : 37 : 63 : 0.36
+T: 1 2 : 37 : 65 : 0.06
+T: 1 2 : 37 : 28 : 0.02
+T: 1 2 : 37 : 11 : 0.01
+T: 1 2 : 37 : 45 : 0.06
+T: 1 2 : 37 : 64 : 0.12
+T: 1 2 : 37 : 27 : 0.06
+T: 1 2 : 37 : 13 : 0.01
+T: 1 2 : 37 : 10 : 0.02
+T: 1 2 : 37 : 47 : 0.01
+T: 1 2 : 37 : 29 : 0.01
+T: 1 2 : 37 : 9 : 0.06
+T: 1 2 : 37 : 46 : 0.02
+T: 1 2 : 37 : 31 : 0.01
+T: 1 2 : 37 : 36 : 0.06
+T: 1 2 : 37 : 37 : 0.02
+T: 1 2 : 37 : 38 : 0.01
+T: 1 2 : 37 : 40 : 0.01
+T: 1 2 : 37 : 49 : 0.01
+T: 1 2 : 38 : 68 : 0.06
+T: 1 2 : 38 : 50 : 0.01
+T: 1 2 : 38 : 64 : 0.36
+T: 1 2 : 38 : 47 : 0.03
+T: 1 2 : 38 : 41 : 0.01
+T: 1 2 : 38 : 38 : 0.03
+T: 1 2 : 38 : 37 : 0.06
+T: 1 2 : 38 : 32 : 0.01
+T: 1 2 : 38 : 10 : 0.06
+T: 1 2 : 38 : 65 : 0.18
+T: 1 2 : 38 : 14 : 0.01
+T: 1 2 : 38 : 11 : 0.03
+T: 1 2 : 38 : 28 : 0.06
+T: 1 2 : 38 : 46 : 0.06
+T: 1 2 : 38 : 29 : 0.03
+T: 1 2 : 39 : 69 : 0.06
+T: 1 2 : 39 : 66 : 0.42
+T: 1 2 : 39 : 63 : 0.06
+T: 1 2 : 39 : 15 : 0.01
+T: 1 2 : 39 : 27 : 0.01
+T: 1 2 : 39 : 13 : 0.01
+T: 1 2 : 39 : 67 : 0.06
+T: 1 2 : 39 : 30 : 0.07
+T: 1 2 : 39 : 9 : 0.01
+T: 1 2 : 39 : 49 : 0.01
+T: 1 2 : 39 : 12 : 0.07
+T: 1 2 : 39 : 31 : 0.01
+T: 1 2 : 39 : 48 : 0.07
+T: 1 2 : 39 : 33 : 0.01
+T: 1 2 : 39 : 36 : 0.01
+T: 1 2 : 39 : 39 : 0.07
+T: 1 2 : 39 : 40 : 0.01
+T: 1 2 : 39 : 42 : 0.01
+T: 1 2 : 39 : 45 : 0.01
+T: 1 2 : 39 : 51 : 0.01
+T: 1 2 : 40 : 70 : 0.06
+T: 1 2 : 40 : 66 : 0.36
+T: 1 2 : 40 : 64 : 0.06
+T: 1 2 : 40 : 52 : 0.01
+T: 1 2 : 40 : 48 : 0.06
+T: 1 2 : 40 : 16 : 0.01
+T: 1 2 : 40 : 28 : 0.01
+T: 1 2 : 40 : 14 : 0.01
+T: 1 2 : 40 : 68 : 0.06
+T: 1 2 : 40 : 31 : 0.01
+T: 1 2 : 40 : 50 : 0.01
+T: 1 2 : 40 : 13 : 0.01
+T: 1 2 : 40 : 67 : 0.06
+T: 1 2 : 40 : 30 : 0.06
+T: 1 2 : 40 : 10 : 0.01
+T: 1 2 : 40 : 49 : 0.01
+T: 1 2 : 40 : 12 : 0.06
+T: 1 2 : 40 : 46 : 0.01
+T: 1 2 : 40 : 32 : 0.01
+T: 1 2 : 40 : 34 : 0.01
+T: 1 2 : 40 : 37 : 0.01
+T: 1 2 : 40 : 39 : 0.06
+T: 1 2 : 40 : 40 : 0.01
+T: 1 2 : 40 : 41 : 0.01
+T: 1 2 : 40 : 43 : 0.01
+T: 1 2 : 41 : 71 : 0.06
+T: 1 2 : 41 : 67 : 0.36
+T: 1 2 : 41 : 65 : 0.06
+T: 1 2 : 41 : 29 : 0.01
+T: 1 2 : 41 : 68 : 0.12
+T: 1 2 : 41 : 31 : 0.06
+T: 1 2 : 41 : 14 : 0.02
+T: 1 2 : 41 : 17 : 0.01
+T: 1 2 : 41 : 11 : 0.01
+T: 1 2 : 41 : 47 : 0.01
+T: 1 2 : 41 : 32 : 0.02
+T: 1 2 : 41 : 49 : 0.06
+T: 1 2 : 41 : 35 : 0.01
+T: 1 2 : 41 : 38 : 0.01
+T: 1 2 : 41 : 40 : 0.06
+T: 1 2 : 41 : 41 : 0.02
+T: 1 2 : 41 : 44 : 0.01
+T: 1 2 : 41 : 13 : 0.06
+T: 1 2 : 41 : 50 : 0.02
+T: 1 2 : 41 : 53 : 0.01
+T: 1 2 : 42 : 70 : 0.06
+T: 1 2 : 42 : 69 : 0.48
+T: 1 2 : 42 : 52 : 0.01
+T: 1 2 : 42 : 48 : 0.01
+T: 1 2 : 42 : 43 : 0.01
+T: 1 2 : 42 : 42 : 0.08
+T: 1 2 : 42 : 39 : 0.01
+T: 1 2 : 42 : 66 : 0.06
+T: 1 2 : 42 : 15 : 0.08
+T: 1 2 : 42 : 12 : 0.01
+T: 1 2 : 42 : 33 : 0.08
+T: 1 2 : 42 : 16 : 0.01
+T: 1 2 : 42 : 30 : 0.01
+T: 1 2 : 42 : 51 : 0.08
+T: 1 2 : 42 : 34 : 0.01
+T: 1 2 : 43 : 69 : 0.36
+T: 1 2 : 43 : 67 : 0.06
+T: 1 2 : 43 : 70 : 0.12
+T: 1 2 : 43 : 33 : 0.06
+T: 1 2 : 43 : 31 : 0.01
+T: 1 2 : 43 : 17 : 0.01
+T: 1 2 : 43 : 71 : 0.06
+T: 1 2 : 43 : 34 : 0.02
+T: 1 2 : 43 : 51 : 0.06
+T: 1 2 : 43 : 13 : 0.01
+T: 1 2 : 43 : 49 : 0.01
+T: 1 2 : 43 : 35 : 0.01
+T: 1 2 : 43 : 15 : 0.06
+T: 1 2 : 43 : 52 : 0.02
+T: 1 2 : 43 : 40 : 0.01
+T: 1 2 : 43 : 42 : 0.06
+T: 1 2 : 43 : 43 : 0.02
+T: 1 2 : 43 : 44 : 0.01
+T: 1 2 : 43 : 16 : 0.02
+T: 1 2 : 43 : 53 : 0.01
+T: 1 2 : 44 : 71 : 0.18
+T: 1 2 : 44 : 70 : 0.36
+T: 1 2 : 44 : 53 : 0.03
+T: 1 2 : 44 : 44 : 0.03
+T: 1 2 : 44 : 43 : 0.06
+T: 1 2 : 44 : 41 : 0.01
+T: 1 2 : 44 : 50 : 0.01
+T: 1 2 : 44 : 16 : 0.06
+T: 1 2 : 44 : 14 : 0.01
+T: 1 2 : 44 : 52 : 0.06
+T: 1 2 : 44 : 35 : 0.03
+T: 1 2 : 44 : 32 : 0.01
+T: 1 2 : 44 : 68 : 0.06
+T: 1 2 : 44 : 17 : 0.03
+T: 1 2 : 44 : 34 : 0.06
+T: 1 2 : 45 : 75 : 0.06
+T: 1 2 : 45 : 48 : 0.02
+T: 1 2 : 45 : 46 : 0.02
+T: 1 2 : 45 : 45 : 0.16
+T: 1 2 : 45 : 18 : 0.08
+T: 1 2 : 45 : 73 : 0.06
+T: 1 2 : 45 : 39 : 0.01
+T: 1 2 : 45 : 72 : 0.48
+T: 1 2 : 45 : 21 : 0.01
+T: 1 2 : 45 : 19 : 0.01
+T: 1 2 : 45 : 36 : 0.08
+T: 1 2 : 45 : 37 : 0.01
+T: 1 2 : 46 : 76 : 0.06
+T: 1 2 : 46 : 49 : 0.02
+T: 1 2 : 46 : 47 : 0.02
+T: 1 2 : 46 : 46 : 0.04
+T: 1 2 : 46 : 45 : 0.12
+T: 1 2 : 46 : 74 : 0.06
+T: 1 2 : 46 : 40 : 0.01
+T: 1 2 : 46 : 72 : 0.36
+T: 1 2 : 46 : 38 : 0.01
+T: 1 2 : 46 : 18 : 0.06
+T: 1 2 : 46 : 73 : 0.12
+T: 1 2 : 46 : 22 : 0.01
+T: 1 2 : 46 : 19 : 0.02
+T: 1 2 : 46 : 36 : 0.06
+T: 1 2 : 46 : 20 : 0.01
+T: 1 2 : 46 : 37 : 0.02
+T: 1 2 : 47 : 77 : 0.06
+T: 1 2 : 47 : 73 : 0.36
+T: 1 2 : 47 : 50 : 0.02
+T: 1 2 : 47 : 47 : 0.06
+T: 1 2 : 47 : 46 : 0.12
+T: 1 2 : 47 : 41 : 0.01
+T: 1 2 : 47 : 19 : 0.06
+T: 1 2 : 47 : 74 : 0.18
+T: 1 2 : 47 : 23 : 0.01
+T: 1 2 : 47 : 20 : 0.03
+T: 1 2 : 47 : 37 : 0.06
+T: 1 2 : 47 : 38 : 0.03
+T: 1 2 : 48 : 78 : 0.06
+T: 1 2 : 48 : 51 : 0.02
+T: 1 2 : 48 : 49 : 0.02
+T: 1 2 : 48 : 48 : 0.14
+T: 1 2 : 48 : 45 : 0.02
+T: 1 2 : 48 : 76 : 0.06
+T: 1 2 : 48 : 42 : 0.01
+T: 1 2 : 48 : 40 : 0.01
+T: 1 2 : 48 : 72 : 0.06
+T: 1 2 : 48 : 21 : 0.07
+T: 1 2 : 48 : 18 : 0.01
+T: 1 2 : 48 : 39 : 0.07
+T: 1 2 : 48 : 22 : 0.01
+T: 1 2 : 48 : 36 : 0.01
+T: 1 2 : 48 : 75 : 0.42
+T: 1 2 : 48 : 24 : 0.01
+T: 1 2 : 49 : 79 : 0.06
+T: 1 2 : 49 : 75 : 0.36
+T: 1 2 : 49 : 25 : 0.01
+T: 1 2 : 49 : 37 : 0.01
+T: 1 2 : 49 : 23 : 0.01
+T: 1 2 : 49 : 77 : 0.06
+T: 1 2 : 49 : 40 : 0.01
+T: 1 2 : 49 : 22 : 0.01
+T: 1 2 : 49 : 76 : 0.06
+T: 1 2 : 49 : 39 : 0.06
+T: 1 2 : 49 : 73 : 0.06
+T: 1 2 : 49 : 19 : 0.01
+T: 1 2 : 49 : 21 : 0.06
+T: 1 2 : 49 : 41 : 0.01
+T: 1 2 : 49 : 43 : 0.01
+T: 1 2 : 49 : 46 : 0.02
+T: 1 2 : 49 : 48 : 0.12
+T: 1 2 : 49 : 49 : 0.02
+T: 1 2 : 49 : 50 : 0.02
+T: 1 2 : 49 : 52 : 0.02
+T: 1 2 : 50 : 80 : 0.06
+T: 1 2 : 50 : 76 : 0.36
+T: 1 2 : 50 : 53 : 0.02
+T: 1 2 : 50 : 50 : 0.04
+T: 1 2 : 50 : 49 : 0.12
+T: 1 2 : 50 : 47 : 0.02
+T: 1 2 : 50 : 44 : 0.01
+T: 1 2 : 50 : 41 : 0.02
+T: 1 2 : 50 : 22 : 0.06
+T: 1 2 : 50 : 20 : 0.01
+T: 1 2 : 50 : 77 : 0.12
+T: 1 2 : 50 : 26 : 0.01
+T: 1 2 : 50 : 74 : 0.06
+T: 1 2 : 50 : 23 : 0.02
+T: 1 2 : 50 : 40 : 0.06
+T: 1 2 : 50 : 38 : 0.01
+T: 1 2 : 51 : 79 : 0.06
+T: 1 2 : 51 : 78 : 0.48
+T: 1 2 : 51 : 52 : 0.02
+T: 1 2 : 51 : 51 : 0.16
+T: 1 2 : 51 : 48 : 0.02
+T: 1 2 : 51 : 75 : 0.06
+T: 1 2 : 51 : 24 : 0.08
+T: 1 2 : 51 : 21 : 0.01
+T: 1 2 : 51 : 42 : 0.08
+T: 1 2 : 51 : 25 : 0.01
+T: 1 2 : 51 : 39 : 0.01
+T: 1 2 : 51 : 43 : 0.01
+T: 1 2 : 52 : 80 : 0.06
+T: 1 2 : 52 : 79 : 0.12
+T: 1 2 : 52 : 53 : 0.02
+T: 1 2 : 52 : 52 : 0.04
+T: 1 2 : 52 : 51 : 0.12
+T: 1 2 : 52 : 49 : 0.02
+T: 1 2 : 52 : 78 : 0.36
+T: 1 2 : 52 : 44 : 0.01
+T: 1 2 : 52 : 24 : 0.06
+T: 1 2 : 52 : 22 : 0.01
+T: 1 2 : 52 : 43 : 0.02
+T: 1 2 : 52 : 26 : 0.01
+T: 1 2 : 52 : 40 : 0.01
+T: 1 2 : 52 : 76 : 0.06
+T: 1 2 : 52 : 25 : 0.02
+T: 1 2 : 52 : 42 : 0.06
+T: 1 2 : 53 : 80 : 0.18
+T: 1 2 : 53 : 79 : 0.36
+T: 1 2 : 53 : 53 : 0.06
+T: 1 2 : 53 : 52 : 0.12
+T: 1 2 : 53 : 50 : 0.02
+T: 1 2 : 53 : 25 : 0.06
+T: 1 2 : 53 : 23 : 0.01
+T: 1 2 : 53 : 44 : 0.03
+T: 1 2 : 53 : 41 : 0.01
+T: 1 2 : 53 : 77 : 0.06
+T: 1 2 : 53 : 26 : 0.03
+T: 1 2 : 53 : 43 : 0.06
+T: 1 2 : 54 : 66 : 0.01
+T: 1 2 : 54 : 63 : 0.08
+T: 1 2 : 54 : 28 : 0.01
+T: 1 2 : 54 : 27 : 0.08
+T: 1 2 : 54 : 55 : 0.08
+T: 1 2 : 54 : 64 : 0.01
+T: 1 2 : 54 : 30 : 0.01
+T: 1 2 : 54 : 54 : 0.64
+T: 1 2 : 54 : 57 : 0.08
+T: 1 2 : 55 : 67 : 0.01
+T: 1 2 : 55 : 64 : 0.02
+T: 1 2 : 55 : 58 : 0.08
+T: 1 2 : 55 : 56 : 0.08
+T: 1 2 : 55 : 28 : 0.02
+T: 1 2 : 55 : 27 : 0.06
+T: 1 2 : 55 : 55 : 0.16
+T: 1 2 : 55 : 63 : 0.06
+T: 1 2 : 55 : 29 : 0.01
+T: 1 2 : 55 : 65 : 0.01
+T: 1 2 : 55 : 31 : 0.01
+T: 1 2 : 55 : 54 : 0.48
+T: 1 2 : 56 : 68 : 0.01
+T: 1 2 : 56 : 65 : 0.03
+T: 1 2 : 56 : 64 : 0.06
+T: 1 2 : 56 : 29 : 0.03
+T: 1 2 : 56 : 28 : 0.06
+T: 1 2 : 56 : 56 : 0.24
+T: 1 2 : 56 : 32 : 0.01
+T: 1 2 : 56 : 55 : 0.48
+T: 1 2 : 56 : 59 : 0.08
+T: 1 2 : 57 : 69 : 0.01
+T: 1 2 : 57 : 66 : 0.07
+T: 1 2 : 57 : 63 : 0.01
+T: 1 2 : 57 : 60 : 0.08
+T: 1 2 : 57 : 58 : 0.08
+T: 1 2 : 57 : 30 : 0.07
+T: 1 2 : 57 : 27 : 0.01
+T: 1 2 : 57 : 31 : 0.01
+T: 1 2 : 57 : 67 : 0.01
+T: 1 2 : 57 : 33 : 0.01
+T: 1 2 : 57 : 54 : 0.08
+T: 1 2 : 57 : 57 : 0.56
+T: 1 2 : 58 : 70 : 0.01
+T: 1 2 : 58 : 67 : 0.01
+T: 1 2 : 58 : 61 : 0.08
+T: 1 2 : 58 : 59 : 0.08
+T: 1 2 : 58 : 58 : 0.08
+T: 1 2 : 58 : 57 : 0.48
+T: 1 2 : 58 : 64 : 0.01
+T: 1 2 : 58 : 30 : 0.06
+T: 1 2 : 58 : 28 : 0.01
+T: 1 2 : 58 : 31 : 0.01
+T: 1 2 : 58 : 66 : 0.06
+T: 1 2 : 58 : 32 : 0.01
+T: 1 2 : 58 : 68 : 0.01
+T: 1 2 : 58 : 34 : 0.01
+T: 1 2 : 58 : 55 : 0.08
+T: 1 2 : 59 : 71 : 0.01
+T: 1 2 : 59 : 68 : 0.02
+T: 1 2 : 59 : 67 : 0.06
+T: 1 2 : 59 : 62 : 0.08
+T: 1 2 : 59 : 59 : 0.16
+T: 1 2 : 59 : 65 : 0.01
+T: 1 2 : 59 : 31 : 0.06
+T: 1 2 : 59 : 29 : 0.01
+T: 1 2 : 59 : 32 : 0.02
+T: 1 2 : 59 : 35 : 0.01
+T: 1 2 : 59 : 56 : 0.08
+T: 1 2 : 59 : 58 : 0.48
+T: 1 2 : 60 : 70 : 0.01
+T: 1 2 : 60 : 69 : 0.08
+T: 1 2 : 60 : 66 : 0.01
+T: 1 2 : 60 : 33 : 0.08
+T: 1 2 : 60 : 61 : 0.08
+T: 1 2 : 60 : 30 : 0.01
+T: 1 2 : 60 : 34 : 0.01
+T: 1 2 : 60 : 57 : 0.08
+T: 1 2 : 60 : 60 : 0.64
+T: 1 2 : 61 : 71 : 0.01
+T: 1 2 : 61 : 70 : 0.02
+T: 1 2 : 61 : 62 : 0.08
+T: 1 2 : 61 : 61 : 0.16
+T: 1 2 : 61 : 67 : 0.01
+T: 1 2 : 61 : 33 : 0.06
+T: 1 2 : 61 : 31 : 0.01
+T: 1 2 : 61 : 34 : 0.02
+T: 1 2 : 61 : 69 : 0.06
+T: 1 2 : 61 : 35 : 0.01
+T: 1 2 : 61 : 58 : 0.08
+T: 1 2 : 61 : 60 : 0.48
+T: 1 2 : 62 : 71 : 0.03
+T: 1 2 : 62 : 70 : 0.06
+T: 1 2 : 62 : 68 : 0.01
+T: 1 2 : 62 : 34 : 0.06
+T: 1 2 : 62 : 62 : 0.24
+T: 1 2 : 62 : 32 : 0.01
+T: 1 2 : 62 : 35 : 0.03
+T: 1 2 : 62 : 59 : 0.08
+T: 1 2 : 62 : 61 : 0.48
+T: 1 2 : 63 : 75 : 0.01
+T: 1 2 : 63 : 66 : 0.07
+T: 1 2 : 63 : 64 : 0.07
+T: 1 2 : 63 : 63 : 0.56
+T: 1 2 : 63 : 36 : 0.08
+T: 1 2 : 63 : 57 : 0.01
+T: 1 2 : 63 : 73 : 0.01
+T: 1 2 : 63 : 39 : 0.01
+T: 1 2 : 63 : 37 : 0.01
+T: 1 2 : 63 : 54 : 0.08
+T: 1 2 : 63 : 72 : 0.08
+T: 1 2 : 63 : 55 : 0.01
+T: 1 2 : 64 : 76 : 0.01
+T: 1 2 : 64 : 67 : 0.07
+T: 1 2 : 64 : 65 : 0.07
+T: 1 2 : 64 : 64 : 0.14
+T: 1 2 : 64 : 63 : 0.42
+T: 1 2 : 64 : 58 : 0.01
+T: 1 2 : 64 : 73 : 0.02
+T: 1 2 : 64 : 56 : 0.01
+T: 1 2 : 64 : 36 : 0.06
+T: 1 2 : 64 : 74 : 0.01
+T: 1 2 : 64 : 40 : 0.01
+T: 1 2 : 64 : 37 : 0.02
+T: 1 2 : 64 : 54 : 0.06
+T: 1 2 : 64 : 72 : 0.06
+T: 1 2 : 64 : 38 : 0.01
+T: 1 2 : 64 : 55 : 0.02
+T: 1 2 : 65 : 77 : 0.01
+T: 1 2 : 65 : 74 : 0.03
+T: 1 2 : 65 : 68 : 0.07
+T: 1 2 : 65 : 65 : 0.21
+T: 1 2 : 65 : 64 : 0.42
+T: 1 2 : 65 : 59 : 0.01
+T: 1 2 : 65 : 37 : 0.06
+T: 1 2 : 65 : 41 : 0.01
+T: 1 2 : 65 : 38 : 0.03
+T: 1 2 : 65 : 55 : 0.06
+T: 1 2 : 65 : 73 : 0.06
+T: 1 2 : 65 : 56 : 0.03
+T: 1 2 : 66 : 78 : 0.01
+T: 1 2 : 66 : 72 : 0.01
+T: 1 2 : 66 : 69 : 0.07
+T: 1 2 : 66 : 67 : 0.07
+T: 1 2 : 66 : 66 : 0.49
+T: 1 2 : 66 : 63 : 0.07
+T: 1 2 : 66 : 60 : 0.01
+T: 1 2 : 66 : 75 : 0.07
+T: 1 2 : 66 : 58 : 0.01
+T: 1 2 : 66 : 39 : 0.07
+T: 1 2 : 66 : 36 : 0.01
+T: 1 2 : 66 : 57 : 0.07
+T: 1 2 : 66 : 40 : 0.01
+T: 1 2 : 66 : 54 : 0.01
+T: 1 2 : 66 : 76 : 0.01
+T: 1 2 : 66 : 42 : 0.01
+T: 1 2 : 67 : 79 : 0.01
+T: 1 2 : 67 : 75 : 0.06
+T: 1 2 : 67 : 43 : 0.01
+T: 1 2 : 67 : 55 : 0.01
+T: 1 2 : 67 : 41 : 0.01
+T: 1 2 : 67 : 58 : 0.01
+T: 1 2 : 67 : 77 : 0.01
+T: 1 2 : 67 : 40 : 0.01
+T: 1 2 : 67 : 57 : 0.06
+T: 1 2 : 67 : 37 : 0.01
+T: 1 2 : 67 : 76 : 0.01
+T: 1 2 : 67 : 39 : 0.06
+T: 1 2 : 67 : 73 : 0.01
+T: 1 2 : 67 : 59 : 0.01
+T: 1 2 : 67 : 61 : 0.01
+T: 1 2 : 67 : 64 : 0.07
+T: 1 2 : 67 : 66 : 0.42
+T: 1 2 : 67 : 67 : 0.07
+T: 1 2 : 67 : 68 : 0.07
+T: 1 2 : 67 : 70 : 0.07
+T: 1 2 : 68 : 80 : 0.01
+T: 1 2 : 68 : 77 : 0.02
+T: 1 2 : 68 : 71 : 0.07
+T: 1 2 : 68 : 68 : 0.14
+T: 1 2 : 68 : 67 : 0.42
+T: 1 2 : 68 : 65 : 0.07
+T: 1 2 : 68 : 62 : 0.01
+T: 1 2 : 68 : 76 : 0.06
+T: 1 2 : 68 : 59 : 0.02
+T: 1 2 : 68 : 74 : 0.01
+T: 1 2 : 68 : 40 : 0.06
+T: 1 2 : 68 : 38 : 0.01
+T: 1 2 : 68 : 44 : 0.01
+T: 1 2 : 68 : 41 : 0.02
+T: 1 2 : 68 : 58 : 0.06
+T: 1 2 : 68 : 56 : 0.01
+T: 1 2 : 69 : 79 : 0.01
+T: 1 2 : 69 : 75 : 0.01
+T: 1 2 : 69 : 70 : 0.07
+T: 1 2 : 69 : 69 : 0.56
+T: 1 2 : 69 : 66 : 0.07
+T: 1 2 : 69 : 42 : 0.08
+T: 1 2 : 69 : 39 : 0.01
+T: 1 2 : 69 : 60 : 0.08
+T: 1 2 : 69 : 43 : 0.01
+T: 1 2 : 69 : 57 : 0.01
+T: 1 2 : 69 : 78 : 0.08
+T: 1 2 : 69 : 61 : 0.01
+T: 1 2 : 70 : 80 : 0.01
+T: 1 2 : 70 : 71 : 0.07
+T: 1 2 : 70 : 70 : 0.14
+T: 1 2 : 70 : 69 : 0.42
+T: 1 2 : 70 : 67 : 0.07
+T: 1 2 : 70 : 79 : 0.02
+T: 1 2 : 70 : 62 : 0.01
+T: 1 2 : 70 : 76 : 0.01
+T: 1 2 : 70 : 42 : 0.06
+T: 1 2 : 70 : 40 : 0.01
+T: 1 2 : 70 : 78 : 0.06
+T: 1 2 : 70 : 61 : 0.02
+T: 1 2 : 70 : 44 : 0.01
+T: 1 2 : 70 : 58 : 0.01
+T: 1 2 : 70 : 43 : 0.02
+T: 1 2 : 70 : 60 : 0.06
+T: 1 2 : 71 : 80 : 0.03
+T: 1 2 : 71 : 71 : 0.21
+T: 1 2 : 71 : 70 : 0.42
+T: 1 2 : 71 : 68 : 0.07
+T: 1 2 : 71 : 77 : 0.01
+T: 1 2 : 71 : 43 : 0.06
+T: 1 2 : 71 : 41 : 0.01
+T: 1 2 : 71 : 79 : 0.06
+T: 1 2 : 71 : 62 : 0.03
+T: 1 2 : 71 : 59 : 0.01
+T: 1 2 : 71 : 44 : 0.03
+T: 1 2 : 71 : 61 : 0.06
+T: 1 2 : 72 : 75 : 0.08
+T: 1 2 : 72 : 73 : 0.08
+T: 1 2 : 72 : 72 : 0.64
+T: 1 2 : 72 : 45 : 0.08
+T: 1 2 : 72 : 66 : 0.01
+T: 1 2 : 72 : 48 : 0.01
+T: 1 2 : 72 : 46 : 0.01
+T: 1 2 : 72 : 63 : 0.08
+T: 1 2 : 72 : 64 : 0.01
+T: 1 2 : 73 : 76 : 0.08
+T: 1 2 : 73 : 74 : 0.08
+T: 1 2 : 73 : 73 : 0.16
+T: 1 2 : 73 : 72 : 0.48
+T: 1 2 : 73 : 67 : 0.01
+T: 1 2 : 73 : 65 : 0.01
+T: 1 2 : 73 : 45 : 0.06
+T: 1 2 : 73 : 49 : 0.01
+T: 1 2 : 73 : 46 : 0.02
+T: 1 2 : 73 : 63 : 0.06
+T: 1 2 : 73 : 47 : 0.01
+T: 1 2 : 73 : 64 : 0.02
+T: 1 2 : 74 : 77 : 0.08
+T: 1 2 : 74 : 74 : 0.24
+T: 1 2 : 74 : 73 : 0.48
+T: 1 2 : 74 : 68 : 0.01
+T: 1 2 : 74 : 46 : 0.06
+T: 1 2 : 74 : 50 : 0.01
+T: 1 2 : 74 : 47 : 0.03
+T: 1 2 : 74 : 64 : 0.06
+T: 1 2 : 74 : 65 : 0.03
+T: 1 2 : 75 : 78 : 0.08
+T: 1 2 : 75 : 76 : 0.08
+T: 1 2 : 75 : 75 : 0.56
+T: 1 2 : 75 : 72 : 0.08
+T: 1 2 : 75 : 69 : 0.01
+T: 1 2 : 75 : 67 : 0.01
+T: 1 2 : 75 : 48 : 0.07
+T: 1 2 : 75 : 45 : 0.01
+T: 1 2 : 75 : 66 : 0.07
+T: 1 2 : 75 : 49 : 0.01
+T: 1 2 : 75 : 63 : 0.01
+T: 1 2 : 75 : 51 : 0.01
+T: 1 2 : 76 : 79 : 0.08
+T: 1 2 : 76 : 77 : 0.08
+T: 1 2 : 76 : 76 : 0.08
+T: 1 2 : 76 : 75 : 0.48
+T: 1 2 : 76 : 73 : 0.08
+T: 1 2 : 76 : 70 : 0.01
+T: 1 2 : 76 : 68 : 0.01
+T: 1 2 : 76 : 48 : 0.06
+T: 1 2 : 76 : 46 : 0.01
+T: 1 2 : 76 : 66 : 0.06
+T: 1 2 : 76 : 49 : 0.01
+T: 1 2 : 76 : 67 : 0.01
+T: 1 2 : 76 : 50 : 0.01
+T: 1 2 : 76 : 64 : 0.01
+T: 1 2 : 76 : 52 : 0.01
+T: 1 2 : 77 : 80 : 0.08
+T: 1 2 : 77 : 77 : 0.16
+T: 1 2 : 77 : 76 : 0.48
+T: 1 2 : 77 : 74 : 0.08
+T: 1 2 : 77 : 71 : 0.01
+T: 1 2 : 77 : 68 : 0.02
+T: 1 2 : 77 : 49 : 0.06
+T: 1 2 : 77 : 47 : 0.01
+T: 1 2 : 77 : 53 : 0.01
+T: 1 2 : 77 : 50 : 0.02
+T: 1 2 : 77 : 67 : 0.06
+T: 1 2 : 77 : 65 : 0.01
+T: 1 3 : 80 : 80 : 0.64
+T: 1 3 : 80 : 79 : 0.08
+T: 1 3 : 80 : 77 : 0.08
+T: 1 3 : 80 : 52 : 0.01
+T: 1 3 : 80 : 50 : 0.01
+T: 1 3 : 80 : 71 : 0.08
+T: 1 3 : 80 : 68 : 0.01
+T: 1 3 : 80 : 53 : 0.08
+T: 1 3 : 80 : 70 : 0.01
+T: 1 3 : 79 : 80 : 0.48
+T: 1 3 : 79 : 79 : 0.16
+T: 1 3 : 79 : 78 : 0.08
+T: 1 3 : 79 : 76 : 0.08
+T: 1 3 : 79 : 71 : 0.06
+T: 1 3 : 79 : 51 : 0.01
+T: 1 3 : 79 : 49 : 0.01
+T: 1 3 : 79 : 70 : 0.02
+T: 1 3 : 79 : 53 : 0.06
+T: 1 3 : 79 : 67 : 0.01
+T: 1 3 : 79 : 52 : 0.02
+T: 1 3 : 79 : 69 : 0.01
+T: 1 3 : 78 : 79 : 0.48
+T: 1 3 : 78 : 78 : 0.24
+T: 1 3 : 78 : 75 : 0.08
+T: 1 3 : 78 : 51 : 0.03
+T: 1 3 : 78 : 48 : 0.01
+T: 1 3 : 78 : 69 : 0.03
+T: 1 3 : 78 : 52 : 0.06
+T: 1 3 : 78 : 66 : 0.01
+T: 1 3 : 78 : 70 : 0.06
+T: 1 3 : 35 : 62 : 0.48
+T: 1 3 : 35 : 61 : 0.06
+T: 1 3 : 35 : 44 : 0.08
+T: 1 3 : 35 : 43 : 0.01
+T: 1 3 : 35 : 41 : 0.01
+T: 1 3 : 35 : 7 : 0.01
+T: 1 3 : 35 : 35 : 0.16
+T: 1 3 : 35 : 5 : 0.01
+T: 1 3 : 35 : 59 : 0.06
+T: 1 3 : 35 : 8 : 0.08
+T: 1 3 : 35 : 32 : 0.02
+T: 1 3 : 35 : 34 : 0.02
+T: 1 3 : 34 : 62 : 0.36
+T: 1 3 : 34 : 61 : 0.12
+T: 1 3 : 34 : 44 : 0.06
+T: 1 3 : 34 : 60 : 0.06
+T: 1 3 : 34 : 43 : 0.02
+T: 1 3 : 34 : 35 : 0.12
+T: 1 3 : 34 : 34 : 0.04
+T: 1 3 : 34 : 40 : 0.01
+T: 1 3 : 34 : 6 : 0.01
+T: 1 3 : 34 : 4 : 0.01
+T: 1 3 : 34 : 58 : 0.06
+T: 1 3 : 34 : 7 : 0.02
+T: 1 3 : 34 : 42 : 0.01
+T: 1 3 : 34 : 8 : 0.06
+T: 1 3 : 34 : 31 : 0.02
+T: 1 3 : 34 : 33 : 0.02
+T: 1 3 : 33 : 61 : 0.36
+T: 1 3 : 33 : 60 : 0.18
+T: 1 3 : 33 : 43 : 0.06
+T: 1 3 : 33 : 42 : 0.03
+T: 1 3 : 33 : 39 : 0.01
+T: 1 3 : 33 : 57 : 0.06
+T: 1 3 : 33 : 6 : 0.03
+T: 1 3 : 33 : 34 : 0.12
+T: 1 3 : 33 : 3 : 0.01
+T: 1 3 : 33 : 7 : 0.06
+T: 1 3 : 33 : 30 : 0.02
+T: 1 3 : 33 : 33 : 0.06
+T: 1 3 : 32 : 62 : 0.06
+T: 1 3 : 32 : 44 : 0.01
+T: 1 3 : 32 : 58 : 0.06
+T: 1 3 : 32 : 41 : 0.07
+T: 1 3 : 32 : 40 : 0.01
+T: 1 3 : 32 : 35 : 0.02
+T: 1 3 : 32 : 32 : 0.14
+T: 1 3 : 32 : 38 : 0.01
+T: 1 3 : 32 : 4 : 0.01
+T: 1 3 : 32 : 2 : 0.01
+T: 1 3 : 32 : 56 : 0.06
+T: 1 3 : 32 : 5 : 0.07
+T: 1 3 : 32 : 59 : 0.42
+T: 1 3 : 32 : 8 : 0.01
+T: 1 3 : 32 : 29 : 0.02
+T: 1 3 : 32 : 31 : 0.02
+T: 1 3 : 31 : 61 : 0.06
+T: 1 3 : 31 : 59 : 0.36
+T: 1 3 : 31 : 58 : 0.06
+T: 1 3 : 31 : 57 : 0.06
+T: 1 3 : 31 : 28 : 0.02
+T: 1 3 : 31 : 7 : 0.01
+T: 1 3 : 31 : 5 : 0.06
+T: 1 3 : 31 : 39 : 0.01
+T: 1 3 : 31 : 41 : 0.06
+T: 1 3 : 31 : 4 : 0.01
+T: 1 3 : 31 : 55 : 0.06
+T: 1 3 : 31 : 1 : 0.01
+T: 1 3 : 31 : 37 : 0.01
+T: 1 3 : 31 : 30 : 0.02
+T: 1 3 : 31 : 31 : 0.02
+T: 1 3 : 31 : 32 : 0.12
+T: 1 3 : 31 : 34 : 0.02
+T: 1 3 : 31 : 3 : 0.01
+T: 1 3 : 31 : 40 : 0.01
+T: 1 3 : 31 : 43 : 0.01
+T: 1 3 : 30 : 60 : 0.06
+T: 1 3 : 30 : 58 : 0.36
+T: 1 3 : 30 : 42 : 0.01
+T: 1 3 : 30 : 39 : 0.02
+T: 1 3 : 30 : 36 : 0.01
+T: 1 3 : 30 : 33 : 0.02
+T: 1 3 : 30 : 31 : 0.12
+T: 1 3 : 30 : 54 : 0.06
+T: 1 3 : 30 : 3 : 0.02
+T: 1 3 : 30 : 0 : 0.01
+T: 1 3 : 30 : 4 : 0.06
+T: 1 3 : 30 : 57 : 0.12
+T: 1 3 : 30 : 40 : 0.06
+T: 1 3 : 30 : 6 : 0.01
+T: 1 3 : 30 : 27 : 0.02
+T: 1 3 : 30 : 30 : 0.04
+T: 1 3 : 29 : 59 : 0.06
+T: 1 3 : 29 : 41 : 0.01
+T: 1 3 : 29 : 55 : 0.06
+T: 1 3 : 29 : 38 : 0.08
+T: 1 3 : 29 : 37 : 0.01
+T: 1 3 : 29 : 2 : 0.08
+T: 1 3 : 29 : 1 : 0.01
+T: 1 3 : 29 : 29 : 0.16
+T: 1 3 : 29 : 56 : 0.48
+T: 1 3 : 29 : 5 : 0.01
+T: 1 3 : 29 : 28 : 0.02
+T: 1 3 : 29 : 32 : 0.02
+T: 1 3 : 28 : 58 : 0.06
+T: 1 3 : 28 : 56 : 0.36
+T: 1 3 : 28 : 40 : 0.01
+T: 1 3 : 28 : 54 : 0.06
+T: 1 3 : 28 : 37 : 0.02
+T: 1 3 : 28 : 31 : 0.02
+T: 1 3 : 28 : 29 : 0.12
+T: 1 3 : 28 : 1 : 0.02
+T: 1 3 : 28 : 0 : 0.01
+T: 1 3 : 28 : 28 : 0.04
+T: 1 3 : 28 : 36 : 0.01
+T: 1 3 : 28 : 2 : 0.06
+T: 1 3 : 28 : 55 : 0.12
+T: 1 3 : 28 : 38 : 0.06
+T: 1 3 : 28 : 4 : 0.01
+T: 1 3 : 28 : 27 : 0.02
+T: 1 3 : 27 : 57 : 0.06
+T: 1 3 : 27 : 55 : 0.36
+T: 1 3 : 27 : 39 : 0.01
+T: 1 3 : 27 : 36 : 0.03
+T: 1 3 : 27 : 1 : 0.06
+T: 1 3 : 27 : 0 : 0.03
+T: 1 3 : 27 : 28 : 0.12
+T: 1 3 : 27 : 54 : 0.18
+T: 1 3 : 27 : 37 : 0.06
+T: 1 3 : 27 : 3 : 0.01
+T: 1 3 : 27 : 27 : 0.06
+T: 1 3 : 27 : 30 : 0.02
+T: 1 3 : 26 : 53 : 0.48
+T: 1 3 : 26 : 52 : 0.06
+T: 1 3 : 26 : 50 : 0.06
+T: 1 3 : 26 : 16 : 0.01
+T: 1 3 : 26 : 23 : 0.03
+T: 1 3 : 26 : 14 : 0.01
+T: 1 3 : 26 : 17 : 0.08
+T: 1 3 : 26 : 25 : 0.03
+T: 1 3 : 26 : 26 : 0.24
+T: 1 3 : 25 : 53 : 0.36
+T: 1 3 : 25 : 52 : 0.12
+T: 1 3 : 25 : 26 : 0.18
+T: 1 3 : 25 : 25 : 0.06
+T: 1 3 : 25 : 49 : 0.06
+T: 1 3 : 25 : 15 : 0.01
+T: 1 3 : 25 : 22 : 0.03
+T: 1 3 : 25 : 13 : 0.01
+T: 1 3 : 25 : 16 : 0.02
+T: 1 3 : 25 : 51 : 0.06
+T: 1 3 : 25 : 17 : 0.06
+T: 1 3 : 25 : 24 : 0.03
+T: 1 3 : 24 : 52 : 0.36
+T: 1 3 : 24 : 51 : 0.18
+T: 1 3 : 24 : 48 : 0.06
+T: 1 3 : 24 : 15 : 0.03
+T: 1 3 : 24 : 12 : 0.01
+T: 1 3 : 24 : 16 : 0.06
+T: 1 3 : 24 : 21 : 0.03
+T: 1 3 : 24 : 24 : 0.09
+T: 1 3 : 24 : 25 : 0.18
+T: 1 3 : 23 : 53 : 0.06
+T: 1 3 : 23 : 50 : 0.42
+T: 1 3 : 23 : 49 : 0.06
+T: 1 3 : 23 : 26 : 0.03
+T: 1 3 : 23 : 23 : 0.21
+T: 1 3 : 23 : 47 : 0.06
+T: 1 3 : 23 : 13 : 0.01
+T: 1 3 : 23 : 20 : 0.03
+T: 1 3 : 23 : 11 : 0.01
+T: 1 3 : 23 : 14 : 0.07
+T: 1 3 : 23 : 17 : 0.01
+T: 1 3 : 23 : 22 : 0.03
+T: 1 3 : 22 : 52 : 0.06
+T: 1 3 : 22 : 49 : 0.06
+T: 1 3 : 22 : 25 : 0.03
+T: 1 3 : 22 : 23 : 0.18
+T: 1 3 : 22 : 22 : 0.03
+T: 1 3 : 22 : 21 : 0.03
+T: 1 3 : 22 : 46 : 0.06
+T: 1 3 : 22 : 12 : 0.01
+T: 1 3 : 22 : 19 : 0.03
+T: 1 3 : 22 : 10 : 0.01
+T: 1 3 : 22 : 13 : 0.01
+T: 1 3 : 22 : 48 : 0.06
+T: 1 3 : 22 : 14 : 0.06
+T: 1 3 : 22 : 50 : 0.36
+T: 1 3 : 22 : 16 : 0.01
+T: 1 3 : 21 : 51 : 0.06
+T: 1 3 : 21 : 48 : 0.12
+T: 1 3 : 21 : 45 : 0.06
+T: 1 3 : 21 : 24 : 0.03
+T: 1 3 : 21 : 22 : 0.18
+T: 1 3 : 21 : 12 : 0.02
+T: 1 3 : 21 : 9 : 0.01
+T: 1 3 : 21 : 13 : 0.06
+T: 1 3 : 21 : 49 : 0.36
+T: 1 3 : 21 : 15 : 0.01
+T: 1 3 : 21 : 18 : 0.03
+T: 1 3 : 21 : 21 : 0.06
+T: 1 3 : 20 : 50 : 0.06
+T: 1 3 : 20 : 47 : 0.48
+T: 1 3 : 20 : 46 : 0.06
+T: 1 3 : 20 : 11 : 0.08
+T: 1 3 : 20 : 10 : 0.01
+T: 1 3 : 20 : 14 : 0.01
+T: 1 3 : 20 : 19 : 0.03
+T: 1 3 : 20 : 20 : 0.24
+T: 1 3 : 20 : 23 : 0.03
+T: 1 3 : 19 : 49 : 0.06
+T: 1 3 : 19 : 46 : 0.12
+T: 1 3 : 19 : 22 : 0.03
+T: 1 3 : 19 : 20 : 0.18
+T: 1 3 : 19 : 10 : 0.02
+T: 1 3 : 19 : 9 : 0.01
+T: 1 3 : 19 : 45 : 0.06
+T: 1 3 : 19 : 11 : 0.06
+T: 1 3 : 19 : 18 : 0.03
+T: 1 3 : 19 : 47 : 0.36
+T: 1 3 : 19 : 13 : 0.01
+T: 1 3 : 19 : 19 : 0.06
+T: 1 3 : 18 : 48 : 0.06
+T: 1 3 : 18 : 45 : 0.18
+T: 1 3 : 18 : 10 : 0.06
+T: 1 3 : 18 : 9 : 0.03
+T: 1 3 : 18 : 46 : 0.36
+T: 1 3 : 18 : 12 : 0.01
+T: 1 3 : 18 : 19 : 0.18
+T: 1 3 : 18 : 18 : 0.09
+T: 1 3 : 18 : 21 : 0.03
+T: 1 3 : 17 : 44 : 0.48
+T: 1 3 : 17 : 43 : 0.06
+T: 1 3 : 17 : 26 : 0.08
+T: 1 3 : 17 : 23 : 0.01
+T: 1 3 : 17 : 41 : 0.06
+T: 1 3 : 17 : 7 : 0.01
+T: 1 3 : 17 : 14 : 0.02
+T: 1 3 : 17 : 5 : 0.01
+T: 1 3 : 17 : 25 : 0.01
+T: 1 3 : 17 : 8 : 0.08
+T: 1 3 : 17 : 16 : 0.02
+T: 1 3 : 17 : 17 : 0.16
+T: 1 3 : 16 : 44 : 0.36
+T: 1 3 : 16 : 43 : 0.12
+T: 1 3 : 16 : 26 : 0.06
+T: 1 3 : 16 : 22 : 0.01
+T: 1 3 : 16 : 17 : 0.12
+T: 1 3 : 16 : 16 : 0.04
+T: 1 3 : 16 : 40 : 0.06
+T: 1 3 : 16 : 6 : 0.01
+T: 1 3 : 16 : 13 : 0.02
+T: 1 3 : 16 : 4 : 0.01
+T: 1 3 : 16 : 24 : 0.01
+T: 1 3 : 16 : 7 : 0.02
+T: 1 3 : 16 : 42 : 0.06
+T: 1 3 : 16 : 25 : 0.02
+T: 1 3 : 16 : 8 : 0.06
+T: 1 3 : 16 : 15 : 0.02
+T: 1 3 : 5 : 35 : 0.06
+T: 1 3 : 5 : 32 : 0.42
+T: 1 3 : 5 : 29 : 0.06
+T: 1 3 : 5 : 17 : 0.01
+T: 1 3 : 5 : 31 : 0.06
+T: 1 3 : 5 : 14 : 0.07
+T: 1 3 : 5 : 4 : 0.03
+T: 1 3 : 5 : 11 : 0.01
+T: 1 3 : 5 : 2 : 0.03
+T: 1 3 : 5 : 5 : 0.21
+T: 1 3 : 5 : 8 : 0.03
+T: 1 3 : 5 : 13 : 0.01
+T: 1 3 : 4 : 34 : 0.06
+T: 1 3 : 4 : 32 : 0.36
+T: 1 3 : 4 : 28 : 0.06
+T: 1 3 : 4 : 16 : 0.01
+T: 1 3 : 4 : 31 : 0.06
+T: 1 3 : 4 : 14 : 0.06
+T: 1 3 : 4 : 30 : 0.06
+T: 1 3 : 4 : 13 : 0.01
+T: 1 3 : 4 : 12 : 0.01
+T: 1 3 : 4 : 3 : 0.03
+T: 1 3 : 4 : 10 : 0.01
+T: 1 3 : 4 : 1 : 0.03
+T: 1 3 : 4 : 4 : 0.03
+T: 1 3 : 4 : 5 : 0.18
+T: 1 3 : 4 : 7 : 0.03
+T: 1 3 : 3 : 33 : 0.06
+T: 1 3 : 3 : 31 : 0.36
+T: 1 3 : 3 : 27 : 0.06
+T: 1 3 : 3 : 15 : 0.01
+T: 1 3 : 3 : 30 : 0.12
+T: 1 3 : 3 : 13 : 0.06
+T: 1 3 : 3 : 3 : 0.06
+T: 1 3 : 3 : 0 : 0.03
+T: 1 3 : 3 : 4 : 0.18
+T: 1 3 : 3 : 6 : 0.03
+T: 1 3 : 3 : 9 : 0.01
+T: 1 3 : 3 : 12 : 0.02
+T: 1 3 : 2 : 32 : 0.06
+T: 1 3 : 2 : 29 : 0.48
+T: 1 3 : 2 : 2 : 0.24
+T: 1 3 : 2 : 1 : 0.03
+T: 1 3 : 2 : 5 : 0.03
+T: 1 3 : 2 : 10 : 0.01
+T: 1 3 : 2 : 28 : 0.06
+T: 1 3 : 2 : 11 : 0.08
+T: 1 3 : 2 : 14 : 0.01
+T: 1 3 : 0 : 30 : 0.06
+T: 1 3 : 0 : 28 : 0.36
+T: 1 3 : 0 : 1 : 0.18
+T: 1 3 : 0 : 0 : 0.09
+T: 1 3 : 0 : 3 : 0.03
+T: 1 3 : 0 : 27 : 0.18
+T: 1 3 : 0 : 10 : 0.06
+T: 1 3 : 0 : 9 : 0.03
+T: 1 3 : 0 : 12 : 0.01
+T: 1 3 : 1 : 31 : 0.06
+T: 1 3 : 1 : 29 : 0.36
+T: 1 3 : 1 : 13 : 0.01
+T: 1 3 : 1 : 28 : 0.12
+T: 1 3 : 1 : 11 : 0.06
+T: 1 3 : 1 : 1 : 0.06
+T: 1 3 : 1 : 0 : 0.03
+T: 1 3 : 1 : 2 : 0.18
+T: 1 3 : 1 : 9 : 0.01
+T: 1 3 : 1 : 4 : 0.03
+T: 1 3 : 1 : 27 : 0.06
+T: 1 3 : 1 : 10 : 0.02
+T: 1 3 : 6 : 34 : 0.36
+T: 1 3 : 6 : 30 : 0.06
+T: 1 3 : 6 : 6 : 0.09
+T: 1 3 : 6 : 3 : 0.03
+T: 1 3 : 6 : 7 : 0.18
+T: 1 3 : 6 : 12 : 0.01
+T: 1 3 : 6 : 15 : 0.03
+T: 1 3 : 6 : 33 : 0.18
+T: 1 3 : 6 : 16 : 0.06
+T: 1 3 : 7 : 35 : 0.36
+T: 1 3 : 7 : 31 : 0.06
+T: 1 3 : 7 : 34 : 0.12
+T: 1 3 : 7 : 17 : 0.06
+T: 1 3 : 7 : 33 : 0.06
+T: 1 3 : 7 : 16 : 0.02
+T: 1 3 : 7 : 6 : 0.03
+T: 1 3 : 7 : 13 : 0.01
+T: 1 3 : 7 : 4 : 0.03
+T: 1 3 : 7 : 7 : 0.06
+T: 1 3 : 7 : 8 : 0.18
+T: 1 3 : 7 : 15 : 0.01
+T: 1 3 : 8 : 35 : 0.48
+T: 1 3 : 8 : 32 : 0.06
+T: 1 3 : 8 : 7 : 0.03
+T: 1 3 : 8 : 14 : 0.01
+T: 1 3 : 8 : 5 : 0.03
+T: 1 3 : 8 : 8 : 0.24
+T: 1 3 : 8 : 16 : 0.01
+T: 1 3 : 8 : 34 : 0.06
+T: 1 3 : 8 : 17 : 0.08
+T: 1 3 : 9 : 39 : 0.06
+T: 1 3 : 9 : 21 : 0.01
+T: 1 3 : 9 : 36 : 0.18
+T: 1 3 : 9 : 19 : 0.06
+T: 1 3 : 9 : 18 : 0.03
+T: 1 3 : 9 : 1 : 0.06
+T: 1 3 : 9 : 0 : 0.03
+T: 1 3 : 9 : 37 : 0.36
+T: 1 3 : 9 : 3 : 0.01
+T: 1 3 : 9 : 10 : 0.12
+T: 1 3 : 9 : 9 : 0.06
+T: 1 3 : 9 : 12 : 0.02
+T: 1 3 : 10 : 40 : 0.06
+T: 1 3 : 10 : 22 : 0.01
+T: 1 3 : 10 : 37 : 0.12
+T: 1 3 : 10 : 20 : 0.06
+T: 1 3 : 10 : 13 : 0.02
+T: 1 3 : 10 : 11 : 0.12
+T: 1 3 : 10 : 18 : 0.01
+T: 1 3 : 10 : 1 : 0.02
+T: 1 3 : 10 : 0 : 0.01
+T: 1 3 : 10 : 36 : 0.06
+T: 1 3 : 10 : 19 : 0.02
+T: 1 3 : 10 : 2 : 0.06
+T: 1 3 : 10 : 9 : 0.02
+T: 1 3 : 10 : 38 : 0.36
+T: 1 3 : 10 : 4 : 0.01
+T: 1 3 : 10 : 10 : 0.04
+T: 1 3 : 11 : 41 : 0.06
+T: 1 3 : 11 : 38 : 0.48
+T: 1 3 : 11 : 23 : 0.01
+T: 1 3 : 11 : 37 : 0.06
+T: 1 3 : 11 : 20 : 0.08
+T: 1 3 : 11 : 19 : 0.01
+T: 1 3 : 11 : 2 : 0.08
+T: 1 3 : 11 : 1 : 0.01
+T: 1 3 : 11 : 5 : 0.01
+T: 1 3 : 11 : 10 : 0.02
+T: 1 3 : 11 : 11 : 0.16
+T: 1 3 : 11 : 14 : 0.02
+T: 1 3 : 12 : 42 : 0.06
+T: 1 3 : 12 : 36 : 0.06
+T: 1 3 : 12 : 24 : 0.01
+T: 1 3 : 12 : 39 : 0.12
+T: 1 3 : 12 : 22 : 0.06
+T: 1 3 : 12 : 18 : 0.01
+T: 1 3 : 12 : 15 : 0.02
+T: 1 3 : 12 : 13 : 0.12
+T: 1 3 : 12 : 3 : 0.02
+T: 1 3 : 12 : 0 : 0.01
+T: 1 3 : 12 : 21 : 0.02
+T: 1 3 : 12 : 4 : 0.06
+T: 1 3 : 12 : 40 : 0.36
+T: 1 3 : 12 : 6 : 0.01
+T: 1 3 : 12 : 9 : 0.02
+T: 1 3 : 12 : 12 : 0.04
+T: 1 3 : 13 : 43 : 0.06
+T: 1 3 : 13 : 39 : 0.06
+T: 1 3 : 13 : 7 : 0.01
+T: 1 3 : 13 : 5 : 0.06
+T: 1 3 : 13 : 22 : 0.01
+T: 1 3 : 13 : 41 : 0.36
+T: 1 3 : 13 : 4 : 0.01
+T: 1 3 : 13 : 21 : 0.01
+T: 1 3 : 13 : 1 : 0.01
+T: 1 3 : 13 : 10 : 0.02
+T: 1 3 : 13 : 40 : 0.06
+T: 1 3 : 13 : 3 : 0.01
+T: 1 3 : 13 : 37 : 0.06
+T: 1 3 : 13 : 12 : 0.02
+T: 1 3 : 13 : 13 : 0.02
+T: 1 3 : 13 : 14 : 0.12
+T: 1 3 : 13 : 16 : 0.02
+T: 1 3 : 13 : 19 : 0.01
+T: 1 3 : 13 : 23 : 0.06
+T: 1 3 : 13 : 25 : 0.01
+T: 1 3 : 14 : 44 : 0.06
+T: 1 3 : 14 : 41 : 0.42
+T: 1 3 : 14 : 26 : 0.01
+T: 1 3 : 14 : 40 : 0.06
+T: 1 3 : 14 : 23 : 0.07
+T: 1 3 : 14 : 20 : 0.01
+T: 1 3 : 14 : 17 : 0.02
+T: 1 3 : 14 : 14 : 0.14
+T: 1 3 : 14 : 38 : 0.06
+T: 1 3 : 14 : 4 : 0.01
+T: 1 3 : 14 : 11 : 0.02
+T: 1 3 : 14 : 2 : 0.01
+T: 1 3 : 14 : 22 : 0.01
+T: 1 3 : 14 : 5 : 0.07
+T: 1 3 : 14 : 8 : 0.01
+T: 1 3 : 14 : 13 : 0.02
+T: 1 3 : 15 : 43 : 0.36
+T: 1 3 : 15 : 39 : 0.06
+T: 1 3 : 15 : 42 : 0.18
+T: 1 3 : 15 : 25 : 0.06
+T: 1 3 : 15 : 21 : 0.01
+T: 1 3 : 15 : 6 : 0.03
+T: 1 3 : 15 : 3 : 0.01
+T: 1 3 : 15 : 24 : 0.03
+T: 1 3 : 15 : 7 : 0.06
+T: 1 3 : 15 : 12 : 0.02
+T: 1 3 : 15 : 15 : 0.06
+T: 1 3 : 15 : 16 : 0.12
+T: 1 3 : 36 : 66 : 0.06
+T: 1 3 : 36 : 48 : 0.01
+T: 1 3 : 36 : 39 : 0.01
+T: 1 3 : 36 : 37 : 0.06
+T: 1 3 : 36 : 36 : 0.03
+T: 1 3 : 36 : 9 : 0.03
+T: 1 3 : 36 : 64 : 0.36
+T: 1 3 : 36 : 30 : 0.01
+T: 1 3 : 36 : 63 : 0.18
+T: 1 3 : 36 : 46 : 0.06
+T: 1 3 : 36 : 12 : 0.01
+T: 1 3 : 36 : 10 : 0.06
+T: 1 3 : 36 : 27 : 0.03
+T: 1 3 : 36 : 45 : 0.03
+T: 1 3 : 36 : 28 : 0.06
+T: 1 3 : 37 : 67 : 0.06
+T: 1 3 : 37 : 63 : 0.06
+T: 1 3 : 37 : 65 : 0.36
+T: 1 3 : 37 : 28 : 0.02
+T: 1 3 : 37 : 11 : 0.06
+T: 1 3 : 37 : 45 : 0.01
+T: 1 3 : 37 : 64 : 0.12
+T: 1 3 : 37 : 27 : 0.01
+T: 1 3 : 37 : 13 : 0.01
+T: 1 3 : 37 : 10 : 0.02
+T: 1 3 : 37 : 47 : 0.06
+T: 1 3 : 37 : 29 : 0.06
+T: 1 3 : 37 : 9 : 0.01
+T: 1 3 : 37 : 46 : 0.02
+T: 1 3 : 37 : 31 : 0.01
+T: 1 3 : 37 : 36 : 0.01
+T: 1 3 : 37 : 37 : 0.02
+T: 1 3 : 37 : 38 : 0.06
+T: 1 3 : 37 : 40 : 0.01
+T: 1 3 : 37 : 49 : 0.01
+T: 1 3 : 38 : 68 : 0.06
+T: 1 3 : 38 : 50 : 0.01
+T: 1 3 : 38 : 64 : 0.06
+T: 1 3 : 38 : 47 : 0.08
+T: 1 3 : 38 : 41 : 0.01
+T: 1 3 : 38 : 38 : 0.08
+T: 1 3 : 38 : 37 : 0.01
+T: 1 3 : 38 : 32 : 0.01
+T: 1 3 : 38 : 10 : 0.01
+T: 1 3 : 38 : 65 : 0.48
+T: 1 3 : 38 : 14 : 0.01
+T: 1 3 : 38 : 11 : 0.08
+T: 1 3 : 38 : 28 : 0.01
+T: 1 3 : 38 : 46 : 0.01
+T: 1 3 : 38 : 29 : 0.08
+T: 1 3 : 39 : 69 : 0.06
+T: 1 3 : 39 : 66 : 0.12
+T: 1 3 : 39 : 63 : 0.06
+T: 1 3 : 39 : 15 : 0.01
+T: 1 3 : 39 : 27 : 0.01
+T: 1 3 : 39 : 13 : 0.06
+T: 1 3 : 39 : 67 : 0.36
+T: 1 3 : 39 : 30 : 0.02
+T: 1 3 : 39 : 9 : 0.01
+T: 1 3 : 39 : 49 : 0.06
+T: 1 3 : 39 : 12 : 0.02
+T: 1 3 : 39 : 31 : 0.06
+T: 1 3 : 39 : 48 : 0.02
+T: 1 3 : 39 : 33 : 0.01
+T: 1 3 : 39 : 36 : 0.01
+T: 1 3 : 39 : 39 : 0.02
+T: 1 3 : 39 : 40 : 0.06
+T: 1 3 : 39 : 42 : 0.01
+T: 1 3 : 39 : 45 : 0.01
+T: 1 3 : 39 : 51 : 0.01
+T: 1 3 : 40 : 70 : 0.06
+T: 1 3 : 40 : 66 : 0.06
+T: 1 3 : 40 : 64 : 0.06
+T: 1 3 : 40 : 52 : 0.01
+T: 1 3 : 40 : 48 : 0.01
+T: 1 3 : 40 : 16 : 0.01
+T: 1 3 : 40 : 28 : 0.01
+T: 1 3 : 40 : 14 : 0.06
+T: 1 3 : 40 : 68 : 0.36
+T: 1 3 : 40 : 31 : 0.01
+T: 1 3 : 40 : 50 : 0.06
+T: 1 3 : 40 : 13 : 0.01
+T: 1 3 : 40 : 67 : 0.06
+T: 1 3 : 40 : 30 : 0.01
+T: 1 3 : 40 : 10 : 0.01
+T: 1 3 : 40 : 49 : 0.01
+T: 1 3 : 40 : 12 : 0.01
+T: 1 3 : 40 : 46 : 0.01
+T: 1 3 : 40 : 32 : 0.06
+T: 1 3 : 40 : 34 : 0.01
+T: 1 3 : 40 : 37 : 0.01
+T: 1 3 : 40 : 39 : 0.01
+T: 1 3 : 40 : 40 : 0.01
+T: 1 3 : 40 : 41 : 0.06
+T: 1 3 : 40 : 43 : 0.01
+T: 1 3 : 41 : 71 : 0.06
+T: 1 3 : 41 : 67 : 0.06
+T: 1 3 : 41 : 65 : 0.06
+T: 1 3 : 41 : 29 : 0.01
+T: 1 3 : 41 : 68 : 0.42
+T: 1 3 : 41 : 31 : 0.01
+T: 1 3 : 41 : 14 : 0.07
+T: 1 3 : 41 : 17 : 0.01
+T: 1 3 : 41 : 11 : 0.01
+T: 1 3 : 41 : 47 : 0.01
+T: 1 3 : 41 : 32 : 0.07
+T: 1 3 : 41 : 49 : 0.01
+T: 1 3 : 41 : 35 : 0.01
+T: 1 3 : 41 : 38 : 0.01
+T: 1 3 : 41 : 40 : 0.01
+T: 1 3 : 41 : 41 : 0.07
+T: 1 3 : 41 : 44 : 0.01
+T: 1 3 : 41 : 13 : 0.01
+T: 1 3 : 41 : 50 : 0.07
+T: 1 3 : 41 : 53 : 0.01
+T: 1 3 : 42 : 70 : 0.36
+T: 1 3 : 42 : 69 : 0.18
+T: 1 3 : 42 : 52 : 0.06
+T: 1 3 : 42 : 48 : 0.01
+T: 1 3 : 42 : 43 : 0.06
+T: 1 3 : 42 : 42 : 0.03
+T: 1 3 : 42 : 39 : 0.01
+T: 1 3 : 42 : 66 : 0.06
+T: 1 3 : 42 : 15 : 0.03
+T: 1 3 : 42 : 12 : 0.01
+T: 1 3 : 42 : 33 : 0.03
+T: 1 3 : 42 : 16 : 0.06
+T: 1 3 : 42 : 30 : 0.01
+T: 1 3 : 42 : 51 : 0.03
+T: 1 3 : 42 : 34 : 0.06
+T: 1 3 : 43 : 69 : 0.06
+T: 1 3 : 43 : 67 : 0.06
+T: 1 3 : 43 : 70 : 0.12
+T: 1 3 : 43 : 33 : 0.01
+T: 1 3 : 43 : 31 : 0.01
+T: 1 3 : 43 : 17 : 0.06
+T: 1 3 : 43 : 71 : 0.36
+T: 1 3 : 43 : 34 : 0.02
+T: 1 3 : 43 : 51 : 0.01
+T: 1 3 : 43 : 13 : 0.01
+T: 1 3 : 43 : 49 : 0.01
+T: 1 3 : 43 : 35 : 0.06
+T: 1 3 : 43 : 15 : 0.01
+T: 1 3 : 43 : 52 : 0.02
+T: 1 3 : 43 : 40 : 0.01
+T: 1 3 : 43 : 42 : 0.01
+T: 1 3 : 43 : 43 : 0.02
+T: 1 3 : 43 : 44 : 0.06
+T: 1 3 : 43 : 16 : 0.02
+T: 1 3 : 43 : 53 : 0.06
+T: 1 3 : 44 : 71 : 0.48
+T: 1 3 : 44 : 70 : 0.06
+T: 1 3 : 44 : 53 : 0.08
+T: 1 3 : 44 : 44 : 0.08
+T: 1 3 : 44 : 43 : 0.01
+T: 1 3 : 44 : 41 : 0.01
+T: 1 3 : 44 : 50 : 0.01
+T: 1 3 : 44 : 16 : 0.01
+T: 1 3 : 44 : 14 : 0.01
+T: 1 3 : 44 : 52 : 0.01
+T: 1 3 : 44 : 35 : 0.08
+T: 1 3 : 44 : 32 : 0.01
+T: 1 3 : 44 : 68 : 0.06
+T: 1 3 : 44 : 17 : 0.08
+T: 1 3 : 44 : 34 : 0.01
+T: 1 3 : 45 : 75 : 0.06
+T: 1 3 : 45 : 48 : 0.02
+T: 1 3 : 45 : 46 : 0.12
+T: 1 3 : 45 : 45 : 0.06
+T: 1 3 : 45 : 18 : 0.03
+T: 1 3 : 45 : 73 : 0.36
+T: 1 3 : 45 : 39 : 0.01
+T: 1 3 : 45 : 72 : 0.18
+T: 1 3 : 45 : 21 : 0.01
+T: 1 3 : 45 : 19 : 0.06
+T: 1 3 : 45 : 36 : 0.03
+T: 1 3 : 45 : 37 : 0.06
+T: 1 3 : 46 : 76 : 0.06
+T: 1 3 : 46 : 49 : 0.02
+T: 1 3 : 46 : 47 : 0.12
+T: 1 3 : 46 : 46 : 0.04
+T: 1 3 : 46 : 45 : 0.02
+T: 1 3 : 46 : 74 : 0.36
+T: 1 3 : 46 : 40 : 0.01
+T: 1 3 : 46 : 72 : 0.06
+T: 1 3 : 46 : 38 : 0.06
+T: 1 3 : 46 : 18 : 0.01
+T: 1 3 : 46 : 73 : 0.12
+T: 1 3 : 46 : 22 : 0.01
+T: 1 3 : 46 : 19 : 0.02
+T: 1 3 : 46 : 36 : 0.01
+T: 1 3 : 46 : 20 : 0.06
+T: 1 3 : 46 : 37 : 0.02
+T: 1 3 : 47 : 77 : 0.06
+T: 1 3 : 47 : 73 : 0.06
+T: 1 3 : 47 : 50 : 0.02
+T: 1 3 : 47 : 47 : 0.16
+T: 1 3 : 47 : 46 : 0.02
+T: 1 3 : 47 : 41 : 0.01
+T: 1 3 : 47 : 19 : 0.01
+T: 1 3 : 47 : 74 : 0.48
+T: 1 3 : 47 : 23 : 0.01
+T: 1 3 : 47 : 20 : 0.08
+T: 1 3 : 47 : 37 : 0.01
+T: 1 3 : 47 : 38 : 0.08
+T: 1 3 : 48 : 78 : 0.06
+T: 1 3 : 48 : 51 : 0.02
+T: 1 3 : 48 : 49 : 0.12
+T: 1 3 : 48 : 48 : 0.04
+T: 1 3 : 48 : 45 : 0.02
+T: 1 3 : 48 : 76 : 0.36
+T: 1 3 : 48 : 42 : 0.01
+T: 1 3 : 48 : 40 : 0.06
+T: 1 3 : 48 : 72 : 0.06
+T: 1 3 : 48 : 21 : 0.02
+T: 1 3 : 48 : 18 : 0.01
+T: 1 3 : 48 : 39 : 0.02
+T: 1 3 : 48 : 22 : 0.06
+T: 1 3 : 48 : 36 : 0.01
+T: 1 3 : 48 : 75 : 0.12
+T: 1 3 : 48 : 24 : 0.01
+T: 1 3 : 49 : 79 : 0.06
+T: 1 3 : 49 : 75 : 0.06
+T: 1 3 : 49 : 25 : 0.01
+T: 1 3 : 49 : 37 : 0.01
+T: 1 3 : 49 : 23 : 0.06
+T: 1 3 : 49 : 77 : 0.36
+T: 1 3 : 49 : 40 : 0.01
+T: 1 3 : 49 : 22 : 0.01
+T: 1 3 : 49 : 76 : 0.06
+T: 1 3 : 49 : 39 : 0.01
+T: 1 3 : 49 : 73 : 0.06
+T: 1 3 : 49 : 19 : 0.01
+T: 1 3 : 49 : 21 : 0.01
+T: 1 3 : 49 : 41 : 0.06
+T: 1 3 : 49 : 43 : 0.01
+T: 1 3 : 49 : 46 : 0.02
+T: 1 3 : 49 : 48 : 0.02
+T: 1 3 : 49 : 49 : 0.02
+T: 1 3 : 49 : 50 : 0.12
+T: 1 3 : 49 : 52 : 0.02
+T: 1 3 : 50 : 80 : 0.06
+T: 1 3 : 50 : 76 : 0.06
+T: 1 3 : 50 : 53 : 0.02
+T: 1 3 : 50 : 50 : 0.14
+T: 1 3 : 50 : 49 : 0.02
+T: 1 3 : 50 : 47 : 0.02
+T: 1 3 : 50 : 44 : 0.01
+T: 1 3 : 50 : 41 : 0.07
+T: 1 3 : 50 : 22 : 0.01
+T: 1 3 : 50 : 20 : 0.01
+T: 1 3 : 50 : 77 : 0.42
+T: 1 3 : 50 : 26 : 0.01
+T: 1 3 : 50 : 74 : 0.06
+T: 1 3 : 50 : 23 : 0.07
+T: 1 3 : 50 : 40 : 0.01
+T: 1 3 : 50 : 38 : 0.01
+T: 1 3 : 51 : 79 : 0.36
+T: 1 3 : 51 : 78 : 0.18
+T: 1 3 : 51 : 52 : 0.12
+T: 1 3 : 51 : 51 : 0.06
+T: 1 3 : 51 : 48 : 0.02
+T: 1 3 : 51 : 75 : 0.06
+T: 1 3 : 51 : 24 : 0.03
+T: 1 3 : 51 : 21 : 0.01
+T: 1 3 : 51 : 42 : 0.03
+T: 1 3 : 51 : 25 : 0.06
+T: 1 3 : 51 : 39 : 0.01
+T: 1 3 : 51 : 43 : 0.06
+T: 1 3 : 52 : 80 : 0.36
+T: 1 3 : 52 : 79 : 0.12
+T: 1 3 : 52 : 53 : 0.12
+T: 1 3 : 52 : 52 : 0.04
+T: 1 3 : 52 : 51 : 0.02
+T: 1 3 : 52 : 49 : 0.02
+T: 1 3 : 52 : 78 : 0.06
+T: 1 3 : 52 : 44 : 0.06
+T: 1 3 : 52 : 24 : 0.01
+T: 1 3 : 52 : 22 : 0.01
+T: 1 3 : 52 : 43 : 0.02
+T: 1 3 : 52 : 26 : 0.06
+T: 1 3 : 52 : 40 : 0.01
+T: 1 3 : 52 : 76 : 0.06
+T: 1 3 : 52 : 25 : 0.02
+T: 1 3 : 52 : 42 : 0.01
+T: 1 3 : 53 : 80 : 0.48
+T: 1 3 : 53 : 79 : 0.06
+T: 1 3 : 53 : 53 : 0.16
+T: 1 3 : 53 : 52 : 0.02
+T: 1 3 : 53 : 50 : 0.02
+T: 1 3 : 53 : 25 : 0.01
+T: 1 3 : 53 : 23 : 0.01
+T: 1 3 : 53 : 44 : 0.08
+T: 1 3 : 53 : 41 : 0.01
+T: 1 3 : 53 : 77 : 0.06
+T: 1 3 : 53 : 26 : 0.08
+T: 1 3 : 53 : 43 : 0.01
+T: 1 3 : 54 : 66 : 0.01
+T: 1 3 : 54 : 63 : 0.03
+T: 1 3 : 54 : 28 : 0.06
+T: 1 3 : 54 : 27 : 0.03
+T: 1 3 : 54 : 55 : 0.48
+T: 1 3 : 54 : 64 : 0.06
+T: 1 3 : 54 : 30 : 0.01
+T: 1 3 : 54 : 54 : 0.24
+T: 1 3 : 54 : 57 : 0.08
+T: 1 3 : 55 : 67 : 0.01
+T: 1 3 : 55 : 64 : 0.02
+T: 1 3 : 55 : 58 : 0.08
+T: 1 3 : 55 : 56 : 0.48
+T: 1 3 : 55 : 28 : 0.02
+T: 1 3 : 55 : 27 : 0.01
+T: 1 3 : 55 : 55 : 0.16
+T: 1 3 : 55 : 63 : 0.01
+T: 1 3 : 55 : 29 : 0.06
+T: 1 3 : 55 : 65 : 0.06
+T: 1 3 : 55 : 31 : 0.01
+T: 1 3 : 55 : 54 : 0.08
+T: 1 3 : 56 : 68 : 0.01
+T: 1 3 : 56 : 65 : 0.08
+T: 1 3 : 56 : 64 : 0.01
+T: 1 3 : 56 : 29 : 0.08
+T: 1 3 : 56 : 28 : 0.01
+T: 1 3 : 56 : 56 : 0.64
+T: 1 3 : 56 : 32 : 0.01
+T: 1 3 : 56 : 55 : 0.08
+T: 1 3 : 56 : 59 : 0.08
+T: 1 3 : 57 : 69 : 0.01
+T: 1 3 : 57 : 66 : 0.02
+T: 1 3 : 57 : 63 : 0.01
+T: 1 3 : 57 : 60 : 0.08
+T: 1 3 : 57 : 58 : 0.48
+T: 1 3 : 57 : 30 : 0.02
+T: 1 3 : 57 : 27 : 0.01
+T: 1 3 : 57 : 31 : 0.06
+T: 1 3 : 57 : 67 : 0.06
+T: 1 3 : 57 : 33 : 0.01
+T: 1 3 : 57 : 54 : 0.08
+T: 1 3 : 57 : 57 : 0.16
+T: 1 3 : 58 : 70 : 0.01
+T: 1 3 : 58 : 67 : 0.01
+T: 1 3 : 58 : 61 : 0.08
+T: 1 3 : 58 : 59 : 0.48
+T: 1 3 : 58 : 58 : 0.08
+T: 1 3 : 58 : 57 : 0.08
+T: 1 3 : 58 : 64 : 0.01
+T: 1 3 : 58 : 30 : 0.01
+T: 1 3 : 58 : 28 : 0.01
+T: 1 3 : 58 : 31 : 0.01
+T: 1 3 : 58 : 66 : 0.01
+T: 1 3 : 58 : 32 : 0.06
+T: 1 3 : 58 : 68 : 0.06
+T: 1 3 : 58 : 34 : 0.01
+T: 1 3 : 58 : 55 : 0.08
+T: 1 3 : 59 : 71 : 0.01
+T: 1 3 : 59 : 68 : 0.07
+T: 1 3 : 59 : 67 : 0.01
+T: 1 3 : 59 : 62 : 0.08
+T: 1 3 : 59 : 59 : 0.56
+T: 1 3 : 59 : 65 : 0.01
+T: 1 3 : 59 : 31 : 0.01
+T: 1 3 : 59 : 29 : 0.01
+T: 1 3 : 59 : 32 : 0.07
+T: 1 3 : 59 : 35 : 0.01
+T: 1 3 : 59 : 56 : 0.08
+T: 1 3 : 59 : 58 : 0.08
+T: 1 3 : 60 : 70 : 0.06
+T: 1 3 : 60 : 69 : 0.03
+T: 1 3 : 60 : 66 : 0.01
+T: 1 3 : 60 : 33 : 0.03
+T: 1 3 : 60 : 61 : 0.48
+T: 1 3 : 60 : 30 : 0.01
+T: 1 3 : 60 : 34 : 0.06
+T: 1 3 : 60 : 57 : 0.08
+T: 1 3 : 60 : 60 : 0.24
+T: 1 3 : 61 : 71 : 0.06
+T: 1 3 : 61 : 70 : 0.02
+T: 1 3 : 61 : 62 : 0.48
+T: 1 3 : 61 : 61 : 0.16
+T: 1 3 : 61 : 67 : 0.01
+T: 1 3 : 61 : 33 : 0.01
+T: 1 3 : 61 : 31 : 0.01
+T: 1 3 : 61 : 34 : 0.02
+T: 1 3 : 61 : 69 : 0.01
+T: 1 3 : 61 : 35 : 0.06
+T: 1 3 : 61 : 58 : 0.08
+T: 1 3 : 61 : 60 : 0.08
+T: 1 3 : 62 : 71 : 0.08
+T: 1 3 : 62 : 70 : 0.01
+T: 1 3 : 62 : 68 : 0.01
+T: 1 3 : 62 : 34 : 0.01
+T: 1 3 : 62 : 62 : 0.64
+T: 1 3 : 62 : 32 : 0.01
+T: 1 3 : 62 : 35 : 0.08
+T: 1 3 : 62 : 59 : 0.08
+T: 1 3 : 62 : 61 : 0.08
+T: 1 3 : 63 : 75 : 0.01
+T: 1 3 : 63 : 66 : 0.07
+T: 1 3 : 63 : 64 : 0.42
+T: 1 3 : 63 : 63 : 0.21
+T: 1 3 : 63 : 36 : 0.03
+T: 1 3 : 63 : 57 : 0.01
+T: 1 3 : 63 : 73 : 0.06
+T: 1 3 : 63 : 39 : 0.01
+T: 1 3 : 63 : 37 : 0.06
+T: 1 3 : 63 : 54 : 0.03
+T: 1 3 : 63 : 72 : 0.03
+T: 1 3 : 63 : 55 : 0.06
+T: 1 3 : 64 : 76 : 0.01
+T: 1 3 : 64 : 67 : 0.07
+T: 1 3 : 64 : 65 : 0.42
+T: 1 3 : 64 : 64 : 0.14
+T: 1 3 : 64 : 63 : 0.07
+T: 1 3 : 64 : 58 : 0.01
+T: 1 3 : 64 : 73 : 0.02
+T: 1 3 : 64 : 56 : 0.06
+T: 1 3 : 64 : 36 : 0.01
+T: 1 3 : 64 : 74 : 0.06
+T: 1 3 : 64 : 40 : 0.01
+T: 1 3 : 64 : 37 : 0.02
+T: 1 3 : 64 : 54 : 0.01
+T: 1 3 : 64 : 72 : 0.01
+T: 1 3 : 64 : 38 : 0.06
+T: 1 3 : 64 : 55 : 0.02
+T: 1 3 : 65 : 77 : 0.01
+T: 1 3 : 65 : 74 : 0.08
+T: 1 3 : 65 : 68 : 0.07
+T: 1 3 : 65 : 65 : 0.56
+T: 1 3 : 65 : 64 : 0.07
+T: 1 3 : 65 : 59 : 0.01
+T: 1 3 : 65 : 37 : 0.01
+T: 1 3 : 65 : 41 : 0.01
+T: 1 3 : 65 : 38 : 0.08
+T: 1 3 : 65 : 55 : 0.01
+T: 1 3 : 65 : 73 : 0.01
+T: 1 3 : 65 : 56 : 0.08
+T: 1 3 : 66 : 78 : 0.01
+T: 1 3 : 66 : 72 : 0.01
+T: 1 3 : 66 : 69 : 0.07
+T: 1 3 : 66 : 67 : 0.42
+T: 1 3 : 66 : 66 : 0.14
+T: 1 3 : 66 : 63 : 0.07
+T: 1 3 : 66 : 60 : 0.01
+T: 1 3 : 66 : 75 : 0.02
+T: 1 3 : 66 : 58 : 0.06
+T: 1 3 : 66 : 39 : 0.02
+T: 1 3 : 66 : 36 : 0.01
+T: 1 3 : 66 : 57 : 0.02
+T: 1 3 : 66 : 40 : 0.06
+T: 1 3 : 66 : 54 : 0.01
+T: 1 3 : 66 : 76 : 0.06
+T: 1 3 : 66 : 42 : 0.01
+T: 1 3 : 67 : 79 : 0.01
+T: 1 3 : 67 : 75 : 0.01
+T: 1 3 : 67 : 43 : 0.01
+T: 1 3 : 67 : 55 : 0.01
+T: 1 3 : 67 : 41 : 0.06
+T: 1 3 : 67 : 58 : 0.01
+T: 1 3 : 67 : 77 : 0.06
+T: 1 3 : 67 : 40 : 0.01
+T: 1 3 : 67 : 57 : 0.01
+T: 1 3 : 67 : 37 : 0.01
+T: 1 3 : 67 : 76 : 0.01
+T: 1 3 : 67 : 39 : 0.01
+T: 1 3 : 67 : 73 : 0.01
+T: 1 3 : 67 : 59 : 0.06
+T: 1 3 : 67 : 61 : 0.01
+T: 1 3 : 67 : 64 : 0.07
+T: 1 3 : 67 : 66 : 0.07
+T: 1 3 : 67 : 67 : 0.07
+T: 1 3 : 67 : 68 : 0.42
+T: 1 3 : 67 : 70 : 0.07
+T: 1 3 : 68 : 80 : 0.01
+T: 1 3 : 68 : 77 : 0.07
+T: 1 3 : 68 : 71 : 0.07
+T: 1 3 : 68 : 68 : 0.49
+T: 1 3 : 68 : 67 : 0.07
+T: 1 3 : 68 : 65 : 0.07
+T: 1 3 : 68 : 62 : 0.01
+T: 1 3 : 68 : 76 : 0.01
+T: 1 3 : 68 : 59 : 0.07
+T: 1 3 : 68 : 74 : 0.01
+T: 1 3 : 68 : 40 : 0.01
+T: 1 3 : 68 : 38 : 0.01
+T: 1 3 : 68 : 44 : 0.01
+T: 1 3 : 68 : 41 : 0.07
+T: 1 3 : 68 : 58 : 0.01
+T: 1 3 : 68 : 56 : 0.01
+T: 1 3 : 69 : 79 : 0.06
+T: 1 3 : 69 : 75 : 0.01
+T: 1 3 : 69 : 70 : 0.42
+T: 1 3 : 69 : 69 : 0.21
+T: 1 3 : 69 : 66 : 0.07
+T: 1 3 : 69 : 42 : 0.03
+T: 1 3 : 69 : 39 : 0.01
+T: 1 3 : 69 : 60 : 0.03
+T: 1 3 : 69 : 43 : 0.06
+T: 1 3 : 69 : 57 : 0.01
+T: 1 3 : 69 : 78 : 0.03
+T: 1 3 : 69 : 61 : 0.06
+T: 1 3 : 70 : 80 : 0.06
+T: 1 3 : 70 : 71 : 0.42
+T: 1 3 : 70 : 70 : 0.14
+T: 1 3 : 70 : 69 : 0.07
+T: 1 3 : 70 : 67 : 0.07
+T: 1 3 : 70 : 79 : 0.02
+T: 1 3 : 70 : 62 : 0.06
+T: 1 3 : 70 : 76 : 0.01
+T: 1 3 : 70 : 42 : 0.01
+T: 1 3 : 70 : 40 : 0.01
+T: 1 3 : 70 : 78 : 0.01
+T: 1 3 : 70 : 61 : 0.02
+T: 1 3 : 70 : 44 : 0.06
+T: 1 3 : 70 : 58 : 0.01
+T: 1 3 : 70 : 43 : 0.02
+T: 1 3 : 70 : 60 : 0.01
+T: 1 3 : 71 : 80 : 0.08
+T: 1 3 : 71 : 71 : 0.56
+T: 1 3 : 71 : 70 : 0.07
+T: 1 3 : 71 : 68 : 0.07
+T: 1 3 : 71 : 77 : 0.01
+T: 1 3 : 71 : 43 : 0.01
+T: 1 3 : 71 : 41 : 0.01
+T: 1 3 : 71 : 79 : 0.01
+T: 1 3 : 71 : 62 : 0.08
+T: 1 3 : 71 : 59 : 0.01
+T: 1 3 : 71 : 44 : 0.08
+T: 1 3 : 71 : 61 : 0.01
+T: 1 3 : 72 : 75 : 0.08
+T: 1 3 : 72 : 73 : 0.48
+T: 1 3 : 72 : 72 : 0.24
+T: 1 3 : 72 : 45 : 0.03
+T: 1 3 : 72 : 66 : 0.01
+T: 1 3 : 72 : 48 : 0.01
+T: 1 3 : 72 : 46 : 0.06
+T: 1 3 : 72 : 63 : 0.03
+T: 1 3 : 72 : 64 : 0.06
+T: 1 3 : 73 : 76 : 0.08
+T: 1 3 : 73 : 74 : 0.48
+T: 1 3 : 73 : 73 : 0.16
+T: 1 3 : 73 : 72 : 0.08
+T: 1 3 : 73 : 67 : 0.01
+T: 1 3 : 73 : 65 : 0.06
+T: 1 3 : 73 : 45 : 0.01
+T: 1 3 : 73 : 49 : 0.01
+T: 1 3 : 73 : 46 : 0.02
+T: 1 3 : 73 : 63 : 0.01
+T: 1 3 : 73 : 47 : 0.06
+T: 1 3 : 73 : 64 : 0.02
+T: 1 3 : 74 : 77 : 0.08
+T: 1 3 : 74 : 74 : 0.64
+T: 1 3 : 74 : 73 : 0.08
+T: 1 3 : 74 : 68 : 0.01
+T: 1 3 : 74 : 46 : 0.01
+T: 1 3 : 74 : 50 : 0.01
+T: 1 3 : 74 : 47 : 0.08
+T: 1 3 : 74 : 64 : 0.01
+T: 1 3 : 74 : 65 : 0.08
+T: 1 3 : 75 : 78 : 0.08
+T: 1 3 : 75 : 76 : 0.48
+T: 1 3 : 75 : 75 : 0.16
+T: 1 3 : 75 : 72 : 0.08
+T: 1 3 : 75 : 69 : 0.01
+T: 1 3 : 75 : 67 : 0.06
+T: 1 3 : 75 : 48 : 0.02
+T: 1 3 : 75 : 45 : 0.01
+T: 1 3 : 75 : 66 : 0.02
+T: 1 3 : 75 : 49 : 0.06
+T: 1 3 : 75 : 63 : 0.01
+T: 1 3 : 75 : 51 : 0.01
+T: 1 3 : 76 : 79 : 0.08
+T: 1 3 : 76 : 77 : 0.48
+T: 1 3 : 76 : 76 : 0.08
+T: 1 3 : 76 : 75 : 0.08
+T: 1 3 : 76 : 73 : 0.08
+T: 1 3 : 76 : 70 : 0.01
+T: 1 3 : 76 : 68 : 0.06
+T: 1 3 : 76 : 48 : 0.01
+T: 1 3 : 76 : 46 : 0.01
+T: 1 3 : 76 : 66 : 0.01
+T: 1 3 : 76 : 49 : 0.01
+T: 1 3 : 76 : 67 : 0.01
+T: 1 3 : 76 : 50 : 0.06
+T: 1 3 : 76 : 64 : 0.01
+T: 1 3 : 76 : 52 : 0.01
+T: 1 3 : 77 : 80 : 0.08
+T: 1 3 : 77 : 77 : 0.56
+T: 1 3 : 77 : 76 : 0.08
+T: 1 3 : 77 : 74 : 0.08
+T: 1 3 : 77 : 71 : 0.01
+T: 1 3 : 77 : 68 : 0.07
+T: 1 3 : 77 : 49 : 0.01
+T: 1 3 : 77 : 47 : 0.01
+T: 1 3 : 77 : 53 : 0.01
+T: 1 3 : 77 : 50 : 0.07
+T: 1 3 : 77 : 67 : 0.01
+T: 1 3 : 77 : 65 : 0.01
+T: 1 4 : 80 : 80 : 0.8
+T: 1 4 : 80 : 53 : 0.1
+T: 1 4 : 80 : 71 : 0.1
+T: 1 4 : 79 : 79 : 0.8
+T: 1 4 : 79 : 52 : 0.1
+T: 1 4 : 79 : 70 : 0.1
+T: 1 4 : 78 : 78 : 0.8
+T: 1 4 : 78 : 51 : 0.1
+T: 1 4 : 78 : 69 : 0.1
+T: 1 4 : 35 : 62 : 0.6
+T: 1 4 : 35 : 44 : 0.1
+T: 1 4 : 35 : 8 : 0.1
+T: 1 4 : 35 : 35 : 0.2
+T: 1 4 : 34 : 61 : 0.6
+T: 1 4 : 34 : 43 : 0.1
+T: 1 4 : 34 : 7 : 0.1
+T: 1 4 : 34 : 34 : 0.2
+T: 1 4 : 33 : 60 : 0.6
+T: 1 4 : 33 : 42 : 0.1
+T: 1 4 : 33 : 6 : 0.1
+T: 1 4 : 33 : 33 : 0.2
+T: 1 4 : 32 : 59 : 0.6
+T: 1 4 : 32 : 41 : 0.1
+T: 1 4 : 32 : 5 : 0.1
+T: 1 4 : 32 : 32 : 0.2
+T: 1 4 : 31 : 58 : 0.6
+T: 1 4 : 31 : 40 : 0.1
+T: 1 4 : 31 : 4 : 0.1
+T: 1 4 : 31 : 31 : 0.2
+T: 1 4 : 30 : 57 : 0.6
+T: 1 4 : 30 : 39 : 0.1
+T: 1 4 : 30 : 3 : 0.1
+T: 1 4 : 30 : 30 : 0.2
+T: 1 4 : 29 : 56 : 0.6
+T: 1 4 : 29 : 38 : 0.1
+T: 1 4 : 29 : 2 : 0.1
+T: 1 4 : 29 : 29 : 0.2
+T: 1 4 : 28 : 55 : 0.6
+T: 1 4 : 28 : 37 : 0.1
+T: 1 4 : 28 : 1 : 0.1
+T: 1 4 : 28 : 28 : 0.2
+T: 1 4 : 27 : 54 : 0.6
+T: 1 4 : 27 : 36 : 0.1
+T: 1 4 : 27 : 0 : 0.1
+T: 1 4 : 27 : 27 : 0.2
+T: 1 4 : 26 : 53 : 0.6
+T: 1 4 : 26 : 17 : 0.1
+T: 1 4 : 26 : 26 : 0.3
+T: 1 4 : 25 : 52 : 0.6
+T: 1 4 : 25 : 16 : 0.1
+T: 1 4 : 25 : 25 : 0.3
+T: 1 4 : 24 : 51 : 0.6
+T: 1 4 : 24 : 15 : 0.1
+T: 1 4 : 24 : 24 : 0.3
+T: 1 4 : 23 : 50 : 0.6
+T: 1 4 : 23 : 14 : 0.1
+T: 1 4 : 23 : 23 : 0.3
+T: 1 4 : 22 : 49 : 0.6
+T: 1 4 : 22 : 13 : 0.1
+T: 1 4 : 22 : 22 : 0.3
+T: 1 4 : 21 : 48 : 0.6
+T: 1 4 : 21 : 12 : 0.1
+T: 1 4 : 21 : 21 : 0.3
+T: 1 4 : 20 : 47 : 0.6
+T: 1 4 : 20 : 11 : 0.1
+T: 1 4 : 20 : 20 : 0.3
+T: 1 4 : 19 : 46 : 0.6
+T: 1 4 : 19 : 10 : 0.1
+T: 1 4 : 19 : 19 : 0.3
+T: 1 4 : 18 : 45 : 0.6
+T: 1 4 : 18 : 9 : 0.1
+T: 1 4 : 18 : 18 : 0.3
+T: 1 4 : 17 : 44 : 0.6
+T: 1 4 : 17 : 26 : 0.1
+T: 1 4 : 17 : 8 : 0.1
+T: 1 4 : 17 : 17 : 0.2
+T: 1 4 : 16 : 43 : 0.6
+T: 1 4 : 16 : 25 : 0.1
+T: 1 4 : 16 : 7 : 0.1
+T: 1 4 : 16 : 16 : 0.2
+T: 1 4 : 5 : 32 : 0.6
+T: 1 4 : 5 : 5 : 0.3
+T: 1 4 : 5 : 14 : 0.1
+T: 1 4 : 4 : 31 : 0.6
+T: 1 4 : 4 : 4 : 0.3
+T: 1 4 : 4 : 13 : 0.1
+T: 1 4 : 3 : 30 : 0.6
+T: 1 4 : 3 : 3 : 0.3
+T: 1 4 : 3 : 12 : 0.1
+T: 1 4 : 2 : 29 : 0.6
+T: 1 4 : 2 : 2 : 0.3
+T: 1 4 : 2 : 11 : 0.1
+T: 1 4 : 0 : 27 : 0.6
+T: 1 4 : 0 : 0 : 0.3
+T: 1 4 : 0 : 9 : 0.1
+T: 1 4 : 1 : 28 : 0.6
+T: 1 4 : 1 : 1 : 0.3
+T: 1 4 : 1 : 10 : 0.1
+T: 1 4 : 6 : 33 : 0.6
+T: 1 4 : 6 : 6 : 0.3
+T: 1 4 : 6 : 15 : 0.1
+T: 1 4 : 7 : 34 : 0.6
+T: 1 4 : 7 : 7 : 0.3
+T: 1 4 : 7 : 16 : 0.1
+T: 1 4 : 8 : 35 : 0.6
+T: 1 4 : 8 : 8 : 0.3
+T: 1 4 : 8 : 17 : 0.1
+T: 1 4 : 9 : 36 : 0.6
+T: 1 4 : 9 : 18 : 0.1
+T: 1 4 : 9 : 0 : 0.1
+T: 1 4 : 9 : 9 : 0.2
+T: 1 4 : 10 : 37 : 0.6
+T: 1 4 : 10 : 19 : 0.1
+T: 1 4 : 10 : 1 : 0.1
+T: 1 4 : 10 : 10 : 0.2
+T: 1 4 : 11 : 38 : 0.6
+T: 1 4 : 11 : 20 : 0.1
+T: 1 4 : 11 : 2 : 0.1
+T: 1 4 : 11 : 11 : 0.2
+T: 1 4 : 12 : 39 : 0.6
+T: 1 4 : 12 : 21 : 0.1
+T: 1 4 : 12 : 3 : 0.1
+T: 1 4 : 12 : 12 : 0.2
+T: 1 4 : 13 : 40 : 0.6
+T: 1 4 : 13 : 22 : 0.1
+T: 1 4 : 13 : 4 : 0.1
+T: 1 4 : 13 : 13 : 0.2
+T: 1 4 : 14 : 41 : 0.6
+T: 1 4 : 14 : 23 : 0.1
+T: 1 4 : 14 : 5 : 0.1
+T: 1 4 : 14 : 14 : 0.2
+T: 1 4 : 15 : 42 : 0.6
+T: 1 4 : 15 : 24 : 0.1
+T: 1 4 : 15 : 6 : 0.1
+T: 1 4 : 15 : 15 : 0.2
+T: 1 4 : 36 : 63 : 0.6
+T: 1 4 : 36 : 45 : 0.1
+T: 1 4 : 36 : 36 : 0.1
+T: 1 4 : 36 : 9 : 0.1
+T: 1 4 : 36 : 27 : 0.1
+T: 1 4 : 37 : 64 : 0.6
+T: 1 4 : 37 : 46 : 0.1
+T: 1 4 : 37 : 37 : 0.1
+T: 1 4 : 37 : 10 : 0.1
+T: 1 4 : 37 : 28 : 0.1
+T: 1 4 : 38 : 65 : 0.6
+T: 1 4 : 38 : 47 : 0.1
+T: 1 4 : 38 : 38 : 0.1
+T: 1 4 : 38 : 11 : 0.1
+T: 1 4 : 38 : 29 : 0.1
+T: 1 4 : 39 : 66 : 0.6
+T: 1 4 : 39 : 48 : 0.1
+T: 1 4 : 39 : 39 : 0.1
+T: 1 4 : 39 : 12 : 0.1
+T: 1 4 : 39 : 30 : 0.1
+T: 1 4 : 40 : 67 : 0.6
+T: 1 4 : 40 : 49 : 0.1
+T: 1 4 : 40 : 40 : 0.1
+T: 1 4 : 40 : 13 : 0.1
+T: 1 4 : 40 : 31 : 0.1
+T: 1 4 : 41 : 68 : 0.6
+T: 1 4 : 41 : 50 : 0.1
+T: 1 4 : 41 : 41 : 0.1
+T: 1 4 : 41 : 14 : 0.1
+T: 1 4 : 41 : 32 : 0.1
+T: 1 4 : 42 : 69 : 0.6
+T: 1 4 : 42 : 51 : 0.1
+T: 1 4 : 42 : 42 : 0.1
+T: 1 4 : 42 : 15 : 0.1
+T: 1 4 : 42 : 33 : 0.1
+T: 1 4 : 43 : 70 : 0.6
+T: 1 4 : 43 : 52 : 0.1
+T: 1 4 : 43 : 43 : 0.1
+T: 1 4 : 43 : 16 : 0.1
+T: 1 4 : 43 : 34 : 0.1
+T: 1 4 : 44 : 71 : 0.6
+T: 1 4 : 44 : 53 : 0.1
+T: 1 4 : 44 : 44 : 0.1
+T: 1 4 : 44 : 17 : 0.1
+T: 1 4 : 44 : 35 : 0.1
+T: 1 4 : 45 : 72 : 0.6
+T: 1 4 : 45 : 45 : 0.2
+T: 1 4 : 45 : 18 : 0.1
+T: 1 4 : 45 : 36 : 0.1
+T: 1 4 : 46 : 73 : 0.6
+T: 1 4 : 46 : 46 : 0.2
+T: 1 4 : 46 : 19 : 0.1
+T: 1 4 : 46 : 37 : 0.1
+T: 1 4 : 47 : 74 : 0.6
+T: 1 4 : 47 : 47 : 0.2
+T: 1 4 : 47 : 20 : 0.1
+T: 1 4 : 47 : 38 : 0.1
+T: 1 4 : 48 : 75 : 0.6
+T: 1 4 : 48 : 48 : 0.2
+T: 1 4 : 48 : 21 : 0.1
+T: 1 4 : 48 : 39 : 0.1
+T: 1 4 : 49 : 76 : 0.6
+T: 1 4 : 49 : 49 : 0.2
+T: 1 4 : 49 : 22 : 0.1
+T: 1 4 : 49 : 40 : 0.1
+T: 1 4 : 50 : 77 : 0.6
+T: 1 4 : 50 : 50 : 0.2
+T: 1 4 : 50 : 23 : 0.1
+T: 1 4 : 50 : 41 : 0.1
+T: 1 4 : 51 : 78 : 0.6
+T: 1 4 : 51 : 51 : 0.2
+T: 1 4 : 51 : 24 : 0.1
+T: 1 4 : 51 : 42 : 0.1
+T: 1 4 : 52 : 79 : 0.6
+T: 1 4 : 52 : 52 : 0.2
+T: 1 4 : 52 : 25 : 0.1
+T: 1 4 : 52 : 43 : 0.1
+T: 1 4 : 53 : 80 : 0.6
+T: 1 4 : 53 : 53 : 0.2
+T: 1 4 : 53 : 26 : 0.1
+T: 1 4 : 53 : 44 : 0.1
+T: 1 4 : 54 : 63 : 0.1
+T: 1 4 : 54 : 27 : 0.1
+T: 1 4 : 54 : 54 : 0.8
+T: 1 4 : 55 : 64 : 0.1
+T: 1 4 : 55 : 28 : 0.1
+T: 1 4 : 55 : 55 : 0.8
+T: 1 4 : 56 : 65 : 0.1
+T: 1 4 : 56 : 29 : 0.1
+T: 1 4 : 56 : 56 : 0.8
+T: 1 4 : 57 : 66 : 0.1
+T: 1 4 : 57 : 30 : 0.1
+T: 1 4 : 57 : 57 : 0.8
+T: 1 4 : 58 : 67 : 0.1
+T: 1 4 : 58 : 31 : 0.1
+T: 1 4 : 58 : 58 : 0.8
+T: 1 4 : 59 : 68 : 0.1
+T: 1 4 : 59 : 32 : 0.1
+T: 1 4 : 59 : 59 : 0.8
+T: 1 4 : 60 : 69 : 0.1
+T: 1 4 : 60 : 33 : 0.1
+T: 1 4 : 60 : 60 : 0.8
+T: 1 4 : 61 : 70 : 0.1
+T: 1 4 : 61 : 34 : 0.1
+T: 1 4 : 61 : 61 : 0.8
+T: 1 4 : 62 : 71 : 0.1
+T: 1 4 : 62 : 35 : 0.1
+T: 1 4 : 62 : 62 : 0.8
+T: 1 4 : 63 : 72 : 0.1
+T: 1 4 : 63 : 63 : 0.7
+T: 1 4 : 63 : 36 : 0.1
+T: 1 4 : 63 : 54 : 0.1
+T: 1 4 : 64 : 73 : 0.1
+T: 1 4 : 64 : 64 : 0.7
+T: 1 4 : 64 : 37 : 0.1
+T: 1 4 : 64 : 55 : 0.1
+T: 1 4 : 65 : 74 : 0.1
+T: 1 4 : 65 : 65 : 0.7
+T: 1 4 : 65 : 38 : 0.1
+T: 1 4 : 65 : 56 : 0.1
+T: 1 4 : 66 : 75 : 0.1
+T: 1 4 : 66 : 66 : 0.7
+T: 1 4 : 66 : 39 : 0.1
+T: 1 4 : 66 : 57 : 0.1
+T: 1 4 : 67 : 76 : 0.1
+T: 1 4 : 67 : 67 : 0.7
+T: 1 4 : 67 : 40 : 0.1
+T: 1 4 : 67 : 58 : 0.1
+T: 1 4 : 68 : 77 : 0.1
+T: 1 4 : 68 : 68 : 0.7
+T: 1 4 : 68 : 41 : 0.1
+T: 1 4 : 68 : 59 : 0.1
+T: 1 4 : 69 : 78 : 0.1
+T: 1 4 : 69 : 69 : 0.7
+T: 1 4 : 69 : 42 : 0.1
+T: 1 4 : 69 : 60 : 0.1
+T: 1 4 : 70 : 79 : 0.1
+T: 1 4 : 70 : 70 : 0.7
+T: 1 4 : 70 : 43 : 0.1
+T: 1 4 : 70 : 61 : 0.1
+T: 1 4 : 71 : 80 : 0.1
+T: 1 4 : 71 : 71 : 0.7
+T: 1 4 : 71 : 44 : 0.1
+T: 1 4 : 71 : 62 : 0.1
+T: 1 4 : 72 : 72 : 0.8
+T: 1 4 : 72 : 45 : 0.1
+T: 1 4 : 72 : 63 : 0.1
+T: 1 4 : 73 : 73 : 0.8
+T: 1 4 : 73 : 46 : 0.1
+T: 1 4 : 73 : 64 : 0.1
+T: 1 4 : 74 : 74 : 0.8
+T: 1 4 : 74 : 47 : 0.1
+T: 1 4 : 74 : 65 : 0.1
+T: 1 4 : 75 : 75 : 0.8
+T: 1 4 : 75 : 48 : 0.1
+T: 1 4 : 75 : 66 : 0.1
+T: 1 4 : 76 : 76 : 0.8
+T: 1 4 : 76 : 49 : 0.1
+T: 1 4 : 76 : 67 : 0.1
+T: 1 4 : 77 : 77 : 0.8
+T: 1 4 : 77 : 50 : 0.1
+T: 1 4 : 77 : 68 : 0.1
+T: 2 0 : 80 : 80 : 0.09
+T: 2 0 : 80 : 79 : 0.03
+T: 2 0 : 80 : 77 : 0.18
+T: 2 0 : 80 : 52 : 0.01
+T: 2 0 : 80 : 50 : 0.06
+T: 2 0 : 80 : 71 : 0.18
+T: 2 0 : 80 : 68 : 0.36
+T: 2 0 : 80 : 53 : 0.03
+T: 2 0 : 80 : 70 : 0.06
+T: 2 0 : 79 : 80 : 0.03
+T: 2 0 : 79 : 79 : 0.06
+T: 2 0 : 79 : 78 : 0.03
+T: 2 0 : 79 : 76 : 0.18
+T: 2 0 : 79 : 71 : 0.06
+T: 2 0 : 79 : 51 : 0.01
+T: 2 0 : 79 : 49 : 0.06
+T: 2 0 : 79 : 70 : 0.12
+T: 2 0 : 79 : 53 : 0.01
+T: 2 0 : 79 : 67 : 0.36
+T: 2 0 : 79 : 52 : 0.02
+T: 2 0 : 79 : 69 : 0.06
+T: 2 0 : 78 : 79 : 0.03
+T: 2 0 : 78 : 78 : 0.09
+T: 2 0 : 78 : 75 : 0.18
+T: 2 0 : 78 : 51 : 0.03
+T: 2 0 : 78 : 48 : 0.06
+T: 2 0 : 78 : 69 : 0.18
+T: 2 0 : 78 : 52 : 0.01
+T: 2 0 : 78 : 66 : 0.36
+T: 2 0 : 78 : 70 : 0.06
+T: 2 0 : 35 : 62 : 0.03
+T: 2 0 : 35 : 61 : 0.01
+T: 2 0 : 35 : 44 : 0.03
+T: 2 0 : 35 : 43 : 0.01
+T: 2 0 : 35 : 41 : 0.06
+T: 2 0 : 35 : 7 : 0.01
+T: 2 0 : 35 : 35 : 0.21
+T: 2 0 : 35 : 5 : 0.06
+T: 2 0 : 35 : 59 : 0.06
+T: 2 0 : 35 : 8 : 0.03
+T: 2 0 : 35 : 32 : 0.42
+T: 2 0 : 35 : 34 : 0.07
+T: 2 0 : 34 : 62 : 0.01
+T: 2 0 : 34 : 61 : 0.02
+T: 2 0 : 34 : 44 : 0.01
+T: 2 0 : 34 : 60 : 0.01
+T: 2 0 : 34 : 43 : 0.02
+T: 2 0 : 34 : 35 : 0.07
+T: 2 0 : 34 : 34 : 0.14
+T: 2 0 : 34 : 40 : 0.06
+T: 2 0 : 34 : 6 : 0.01
+T: 2 0 : 34 : 4 : 0.06
+T: 2 0 : 34 : 58 : 0.06
+T: 2 0 : 34 : 7 : 0.02
+T: 2 0 : 34 : 42 : 0.01
+T: 2 0 : 34 : 8 : 0.01
+T: 2 0 : 34 : 31 : 0.42
+T: 2 0 : 34 : 33 : 0.07
+T: 2 0 : 33 : 61 : 0.01
+T: 2 0 : 33 : 60 : 0.03
+T: 2 0 : 33 : 43 : 0.01
+T: 2 0 : 33 : 42 : 0.03
+T: 2 0 : 33 : 39 : 0.06
+T: 2 0 : 33 : 57 : 0.06
+T: 2 0 : 33 : 6 : 0.03
+T: 2 0 : 33 : 34 : 0.07
+T: 2 0 : 33 : 3 : 0.06
+T: 2 0 : 33 : 7 : 0.01
+T: 2 0 : 33 : 30 : 0.42
+T: 2 0 : 33 : 33 : 0.21
+T: 2 0 : 32 : 62 : 0.01
+T: 2 0 : 32 : 44 : 0.01
+T: 2 0 : 32 : 58 : 0.01
+T: 2 0 : 32 : 41 : 0.02
+T: 2 0 : 32 : 40 : 0.01
+T: 2 0 : 32 : 35 : 0.07
+T: 2 0 : 32 : 32 : 0.14
+T: 2 0 : 32 : 38 : 0.06
+T: 2 0 : 32 : 4 : 0.01
+T: 2 0 : 32 : 2 : 0.06
+T: 2 0 : 32 : 56 : 0.06
+T: 2 0 : 32 : 5 : 0.02
+T: 2 0 : 32 : 59 : 0.02
+T: 2 0 : 32 : 8 : 0.01
+T: 2 0 : 32 : 29 : 0.42
+T: 2 0 : 32 : 31 : 0.07
+T: 2 0 : 31 : 61 : 0.01
+T: 2 0 : 31 : 59 : 0.01
+T: 2 0 : 31 : 58 : 0.01
+T: 2 0 : 31 : 57 : 0.01
+T: 2 0 : 31 : 28 : 0.42
+T: 2 0 : 31 : 7 : 0.01
+T: 2 0 : 31 : 5 : 0.01
+T: 2 0 : 31 : 39 : 0.01
+T: 2 0 : 31 : 41 : 0.01
+T: 2 0 : 31 : 4 : 0.01
+T: 2 0 : 31 : 55 : 0.06
+T: 2 0 : 31 : 1 : 0.06
+T: 2 0 : 31 : 37 : 0.06
+T: 2 0 : 31 : 30 : 0.07
+T: 2 0 : 31 : 31 : 0.07
+T: 2 0 : 31 : 32 : 0.07
+T: 2 0 : 31 : 34 : 0.07
+T: 2 0 : 31 : 3 : 0.01
+T: 2 0 : 31 : 40 : 0.01
+T: 2 0 : 31 : 43 : 0.01
+T: 2 0 : 30 : 60 : 0.01
+T: 2 0 : 30 : 58 : 0.01
+T: 2 0 : 30 : 42 : 0.01
+T: 2 0 : 30 : 39 : 0.02
+T: 2 0 : 30 : 36 : 0.06
+T: 2 0 : 30 : 33 : 0.07
+T: 2 0 : 30 : 31 : 0.07
+T: 2 0 : 30 : 54 : 0.06
+T: 2 0 : 30 : 3 : 0.02
+T: 2 0 : 30 : 0 : 0.06
+T: 2 0 : 30 : 4 : 0.01
+T: 2 0 : 30 : 57 : 0.02
+T: 2 0 : 30 : 40 : 0.01
+T: 2 0 : 30 : 6 : 0.01
+T: 2 0 : 30 : 27 : 0.42
+T: 2 0 : 30 : 30 : 0.14
+T: 2 0 : 29 : 59 : 0.01
+T: 2 0 : 29 : 41 : 0.01
+T: 2 0 : 29 : 55 : 0.01
+T: 2 0 : 29 : 38 : 0.08
+T: 2 0 : 29 : 37 : 0.01
+T: 2 0 : 29 : 2 : 0.08
+T: 2 0 : 29 : 1 : 0.01
+T: 2 0 : 29 : 29 : 0.56
+T: 2 0 : 29 : 56 : 0.08
+T: 2 0 : 29 : 5 : 0.01
+T: 2 0 : 29 : 28 : 0.07
+T: 2 0 : 29 : 32 : 0.07
+T: 2 0 : 28 : 58 : 0.01
+T: 2 0 : 28 : 56 : 0.01
+T: 2 0 : 28 : 40 : 0.01
+T: 2 0 : 28 : 54 : 0.01
+T: 2 0 : 28 : 37 : 0.07
+T: 2 0 : 28 : 31 : 0.07
+T: 2 0 : 28 : 29 : 0.07
+T: 2 0 : 28 : 1 : 0.07
+T: 2 0 : 28 : 0 : 0.01
+T: 2 0 : 28 : 28 : 0.49
+T: 2 0 : 28 : 36 : 0.01
+T: 2 0 : 28 : 2 : 0.01
+T: 2 0 : 28 : 55 : 0.07
+T: 2 0 : 28 : 38 : 0.01
+T: 2 0 : 28 : 4 : 0.01
+T: 2 0 : 28 : 27 : 0.07
+T: 2 0 : 27 : 57 : 0.01
+T: 2 0 : 27 : 55 : 0.01
+T: 2 0 : 27 : 39 : 0.01
+T: 2 0 : 27 : 36 : 0.08
+T: 2 0 : 27 : 1 : 0.01
+T: 2 0 : 27 : 0 : 0.08
+T: 2 0 : 27 : 28 : 0.07
+T: 2 0 : 27 : 54 : 0.08
+T: 2 0 : 27 : 37 : 0.01
+T: 2 0 : 27 : 3 : 0.01
+T: 2 0 : 27 : 27 : 0.56
+T: 2 0 : 27 : 30 : 0.07
+T: 2 0 : 26 : 53 : 0.03
+T: 2 0 : 26 : 52 : 0.01
+T: 2 0 : 26 : 50 : 0.06
+T: 2 0 : 26 : 16 : 0.06
+T: 2 0 : 26 : 23 : 0.18
+T: 2 0 : 26 : 14 : 0.36
+T: 2 0 : 26 : 17 : 0.18
+T: 2 0 : 26 : 25 : 0.03
+T: 2 0 : 26 : 26 : 0.09
+T: 2 0 : 25 : 53 : 0.01
+T: 2 0 : 25 : 52 : 0.02
+T: 2 0 : 25 : 26 : 0.03
+T: 2 0 : 25 : 25 : 0.06
+T: 2 0 : 25 : 49 : 0.06
+T: 2 0 : 25 : 15 : 0.06
+T: 2 0 : 25 : 22 : 0.18
+T: 2 0 : 25 : 13 : 0.36
+T: 2 0 : 25 : 16 : 0.12
+T: 2 0 : 25 : 51 : 0.01
+T: 2 0 : 25 : 17 : 0.06
+T: 2 0 : 25 : 24 : 0.03
+T: 2 0 : 24 : 52 : 0.01
+T: 2 0 : 24 : 51 : 0.03
+T: 2 0 : 24 : 48 : 0.06
+T: 2 0 : 24 : 15 : 0.18
+T: 2 0 : 24 : 12 : 0.36
+T: 2 0 : 24 : 16 : 0.06
+T: 2 0 : 24 : 21 : 0.18
+T: 2 0 : 24 : 24 : 0.09
+T: 2 0 : 24 : 25 : 0.03
+T: 2 0 : 23 : 53 : 0.01
+T: 2 0 : 23 : 50 : 0.02
+T: 2 0 : 23 : 49 : 0.01
+T: 2 0 : 23 : 26 : 0.03
+T: 2 0 : 23 : 23 : 0.06
+T: 2 0 : 23 : 47 : 0.06
+T: 2 0 : 23 : 13 : 0.06
+T: 2 0 : 23 : 20 : 0.18
+T: 2 0 : 23 : 11 : 0.36
+T: 2 0 : 23 : 14 : 0.12
+T: 2 0 : 23 : 17 : 0.06
+T: 2 0 : 23 : 22 : 0.03
+T: 2 0 : 22 : 52 : 0.01
+T: 2 0 : 22 : 49 : 0.01
+T: 2 0 : 22 : 25 : 0.03
+T: 2 0 : 22 : 23 : 0.03
+T: 2 0 : 22 : 22 : 0.03
+T: 2 0 : 22 : 21 : 0.03
+T: 2 0 : 22 : 46 : 0.06
+T: 2 0 : 22 : 12 : 0.06
+T: 2 0 : 22 : 19 : 0.18
+T: 2 0 : 22 : 10 : 0.36
+T: 2 0 : 22 : 13 : 0.06
+T: 2 0 : 22 : 48 : 0.01
+T: 2 0 : 22 : 14 : 0.06
+T: 2 0 : 22 : 50 : 0.01
+T: 2 0 : 22 : 16 : 0.06
+T: 2 0 : 21 : 51 : 0.01
+T: 2 0 : 21 : 48 : 0.02
+T: 2 0 : 21 : 45 : 0.06
+T: 2 0 : 21 : 24 : 0.03
+T: 2 0 : 21 : 22 : 0.03
+T: 2 0 : 21 : 12 : 0.12
+T: 2 0 : 21 : 9 : 0.36
+T: 2 0 : 21 : 13 : 0.06
+T: 2 0 : 21 : 49 : 0.01
+T: 2 0 : 21 : 15 : 0.06
+T: 2 0 : 21 : 18 : 0.18
+T: 2 0 : 21 : 21 : 0.06
+T: 2 0 : 20 : 50 : 0.01
+T: 2 0 : 20 : 47 : 0.08
+T: 2 0 : 20 : 46 : 0.01
+T: 2 0 : 20 : 11 : 0.48
+T: 2 0 : 20 : 10 : 0.06
+T: 2 0 : 20 : 14 : 0.06
+T: 2 0 : 20 : 19 : 0.03
+T: 2 0 : 20 : 20 : 0.24
+T: 2 0 : 20 : 23 : 0.03
+T: 2 0 : 19 : 49 : 0.01
+T: 2 0 : 19 : 46 : 0.07
+T: 2 0 : 19 : 22 : 0.03
+T: 2 0 : 19 : 20 : 0.03
+T: 2 0 : 19 : 10 : 0.42
+T: 2 0 : 19 : 9 : 0.06
+T: 2 0 : 19 : 45 : 0.01
+T: 2 0 : 19 : 11 : 0.06
+T: 2 0 : 19 : 18 : 0.03
+T: 2 0 : 19 : 47 : 0.01
+T: 2 0 : 19 : 13 : 0.06
+T: 2 0 : 19 : 19 : 0.21
+T: 2 0 : 18 : 48 : 0.01
+T: 2 0 : 18 : 45 : 0.08
+T: 2 0 : 18 : 10 : 0.06
+T: 2 0 : 18 : 9 : 0.48
+T: 2 0 : 18 : 46 : 0.01
+T: 2 0 : 18 : 12 : 0.06
+T: 2 0 : 18 : 19 : 0.03
+T: 2 0 : 18 : 18 : 0.24
+T: 2 0 : 18 : 21 : 0.03
+T: 2 0 : 17 : 44 : 0.03
+T: 2 0 : 17 : 43 : 0.01
+T: 2 0 : 17 : 26 : 0.03
+T: 2 0 : 17 : 23 : 0.06
+T: 2 0 : 17 : 41 : 0.06
+T: 2 0 : 17 : 7 : 0.06
+T: 2 0 : 17 : 14 : 0.12
+T: 2 0 : 17 : 5 : 0.36
+T: 2 0 : 17 : 25 : 0.01
+T: 2 0 : 17 : 8 : 0.18
+T: 2 0 : 17 : 16 : 0.02
+T: 2 0 : 17 : 17 : 0.06
+T: 2 0 : 16 : 44 : 0.01
+T: 2 0 : 16 : 43 : 0.02
+T: 2 0 : 16 : 26 : 0.01
+T: 2 0 : 16 : 22 : 0.06
+T: 2 0 : 16 : 17 : 0.02
+T: 2 0 : 16 : 16 : 0.04
+T: 2 0 : 16 : 40 : 0.06
+T: 2 0 : 16 : 6 : 0.06
+T: 2 0 : 16 : 13 : 0.12
+T: 2 0 : 16 : 4 : 0.36
+T: 2 0 : 16 : 24 : 0.01
+T: 2 0 : 16 : 7 : 0.12
+T: 2 0 : 16 : 42 : 0.01
+T: 2 0 : 16 : 25 : 0.02
+T: 2 0 : 16 : 8 : 0.06
+T: 2 0 : 16 : 15 : 0.02
+T: 2 0 : 5 : 35 : 0.01
+T: 2 0 : 5 : 32 : 0.02
+T: 2 0 : 5 : 29 : 0.06
+T: 2 0 : 5 : 17 : 0.01
+T: 2 0 : 5 : 31 : 0.01
+T: 2 0 : 5 : 14 : 0.02
+T: 2 0 : 5 : 4 : 0.08
+T: 2 0 : 5 : 11 : 0.06
+T: 2 0 : 5 : 2 : 0.48
+T: 2 0 : 5 : 5 : 0.16
+T: 2 0 : 5 : 8 : 0.08
+T: 2 0 : 5 : 13 : 0.01
+T: 2 0 : 4 : 34 : 0.01
+T: 2 0 : 4 : 32 : 0.01
+T: 2 0 : 4 : 28 : 0.06
+T: 2 0 : 4 : 16 : 0.01
+T: 2 0 : 4 : 31 : 0.01
+T: 2 0 : 4 : 14 : 0.01
+T: 2 0 : 4 : 30 : 0.01
+T: 2 0 : 4 : 13 : 0.01
+T: 2 0 : 4 : 12 : 0.01
+T: 2 0 : 4 : 3 : 0.08
+T: 2 0 : 4 : 10 : 0.06
+T: 2 0 : 4 : 1 : 0.48
+T: 2 0 : 4 : 4 : 0.08
+T: 2 0 : 4 : 5 : 0.08
+T: 2 0 : 4 : 7 : 0.08
+T: 2 0 : 3 : 33 : 0.01
+T: 2 0 : 3 : 31 : 0.01
+T: 2 0 : 3 : 27 : 0.06
+T: 2 0 : 3 : 15 : 0.01
+T: 2 0 : 3 : 30 : 0.02
+T: 2 0 : 3 : 13 : 0.01
+T: 2 0 : 3 : 3 : 0.16
+T: 2 0 : 3 : 0 : 0.48
+T: 2 0 : 3 : 4 : 0.08
+T: 2 0 : 3 : 6 : 0.08
+T: 2 0 : 3 : 9 : 0.06
+T: 2 0 : 3 : 12 : 0.02
+T: 2 0 : 2 : 32 : 0.01
+T: 2 0 : 2 : 29 : 0.08
+T: 2 0 : 2 : 2 : 0.64
+T: 2 0 : 2 : 1 : 0.08
+T: 2 0 : 2 : 5 : 0.08
+T: 2 0 : 2 : 10 : 0.01
+T: 2 0 : 2 : 28 : 0.01
+T: 2 0 : 2 : 11 : 0.08
+T: 2 0 : 2 : 14 : 0.01
+T: 2 0 : 0 : 30 : 0.01
+T: 2 0 : 0 : 28 : 0.01
+T: 2 0 : 0 : 1 : 0.08
+T: 2 0 : 0 : 0 : 0.64
+T: 2 0 : 0 : 3 : 0.08
+T: 2 0 : 0 : 27 : 0.08
+T: 2 0 : 0 : 10 : 0.01
+T: 2 0 : 0 : 9 : 0.08
+T: 2 0 : 0 : 12 : 0.01
+T: 2 0 : 1 : 31 : 0.01
+T: 2 0 : 1 : 29 : 0.01
+T: 2 0 : 1 : 13 : 0.01
+T: 2 0 : 1 : 28 : 0.07
+T: 2 0 : 1 : 11 : 0.01
+T: 2 0 : 1 : 1 : 0.56
+T: 2 0 : 1 : 0 : 0.08
+T: 2 0 : 1 : 2 : 0.08
+T: 2 0 : 1 : 9 : 0.01
+T: 2 0 : 1 : 4 : 0.08
+T: 2 0 : 1 : 27 : 0.01
+T: 2 0 : 1 : 10 : 0.07
+T: 2 0 : 6 : 34 : 0.01
+T: 2 0 : 6 : 30 : 0.06
+T: 2 0 : 6 : 6 : 0.24
+T: 2 0 : 6 : 3 : 0.48
+T: 2 0 : 6 : 7 : 0.08
+T: 2 0 : 6 : 12 : 0.06
+T: 2 0 : 6 : 15 : 0.03
+T: 2 0 : 6 : 33 : 0.03
+T: 2 0 : 6 : 16 : 0.01
+T: 2 0 : 7 : 35 : 0.01
+T: 2 0 : 7 : 31 : 0.06
+T: 2 0 : 7 : 34 : 0.02
+T: 2 0 : 7 : 17 : 0.01
+T: 2 0 : 7 : 33 : 0.01
+T: 2 0 : 7 : 16 : 0.02
+T: 2 0 : 7 : 6 : 0.08
+T: 2 0 : 7 : 13 : 0.06
+T: 2 0 : 7 : 4 : 0.48
+T: 2 0 : 7 : 7 : 0.16
+T: 2 0 : 7 : 8 : 0.08
+T: 2 0 : 7 : 15 : 0.01
+T: 2 0 : 8 : 35 : 0.03
+T: 2 0 : 8 : 32 : 0.06
+T: 2 0 : 8 : 7 : 0.08
+T: 2 0 : 8 : 14 : 0.06
+T: 2 0 : 8 : 5 : 0.48
+T: 2 0 : 8 : 8 : 0.24
+T: 2 0 : 8 : 16 : 0.01
+T: 2 0 : 8 : 34 : 0.01
+T: 2 0 : 8 : 17 : 0.03
+T: 2 0 : 9 : 39 : 0.01
+T: 2 0 : 9 : 21 : 0.01
+T: 2 0 : 9 : 36 : 0.08
+T: 2 0 : 9 : 19 : 0.01
+T: 2 0 : 9 : 18 : 0.08
+T: 2 0 : 9 : 1 : 0.06
+T: 2 0 : 9 : 0 : 0.48
+T: 2 0 : 9 : 37 : 0.01
+T: 2 0 : 9 : 3 : 0.06
+T: 2 0 : 9 : 10 : 0.02
+T: 2 0 : 9 : 9 : 0.16
+T: 2 0 : 9 : 12 : 0.02
+T: 2 0 : 10 : 40 : 0.01
+T: 2 0 : 10 : 22 : 0.01
+T: 2 0 : 10 : 37 : 0.07
+T: 2 0 : 10 : 20 : 0.01
+T: 2 0 : 10 : 13 : 0.02
+T: 2 0 : 10 : 11 : 0.02
+T: 2 0 : 10 : 18 : 0.01
+T: 2 0 : 10 : 1 : 0.42
+T: 2 0 : 10 : 0 : 0.06
+T: 2 0 : 10 : 36 : 0.01
+T: 2 0 : 10 : 19 : 0.07
+T: 2 0 : 10 : 2 : 0.06
+T: 2 0 : 10 : 9 : 0.02
+T: 2 0 : 10 : 38 : 0.01
+T: 2 0 : 10 : 4 : 0.06
+T: 2 0 : 10 : 10 : 0.14
+T: 2 0 : 11 : 41 : 0.01
+T: 2 0 : 11 : 38 : 0.08
+T: 2 0 : 11 : 23 : 0.01
+T: 2 0 : 11 : 37 : 0.01
+T: 2 0 : 11 : 20 : 0.08
+T: 2 0 : 11 : 19 : 0.01
+T: 2 0 : 11 : 2 : 0.48
+T: 2 0 : 11 : 1 : 0.06
+T: 2 0 : 11 : 5 : 0.06
+T: 2 0 : 11 : 10 : 0.02
+T: 2 0 : 11 : 11 : 0.16
+T: 2 0 : 11 : 14 : 0.02
+T: 2 0 : 12 : 42 : 0.01
+T: 2 0 : 12 : 36 : 0.06
+T: 2 0 : 12 : 24 : 0.01
+T: 2 0 : 12 : 39 : 0.02
+T: 2 0 : 12 : 22 : 0.01
+T: 2 0 : 12 : 18 : 0.06
+T: 2 0 : 12 : 15 : 0.02
+T: 2 0 : 12 : 13 : 0.02
+T: 2 0 : 12 : 3 : 0.12
+T: 2 0 : 12 : 0 : 0.36
+T: 2 0 : 12 : 21 : 0.02
+T: 2 0 : 12 : 4 : 0.06
+T: 2 0 : 12 : 40 : 0.01
+T: 2 0 : 12 : 6 : 0.06
+T: 2 0 : 12 : 9 : 0.12
+T: 2 0 : 12 : 12 : 0.04
+T: 2 0 : 13 : 43 : 0.01
+T: 2 0 : 13 : 39 : 0.01
+T: 2 0 : 13 : 7 : 0.06
+T: 2 0 : 13 : 5 : 0.06
+T: 2 0 : 13 : 22 : 0.01
+T: 2 0 : 13 : 41 : 0.01
+T: 2 0 : 13 : 4 : 0.06
+T: 2 0 : 13 : 21 : 0.01
+T: 2 0 : 13 : 1 : 0.36
+T: 2 0 : 13 : 10 : 0.12
+T: 2 0 : 13 : 40 : 0.01
+T: 2 0 : 13 : 3 : 0.06
+T: 2 0 : 13 : 37 : 0.06
+T: 2 0 : 13 : 12 : 0.02
+T: 2 0 : 13 : 13 : 0.02
+T: 2 0 : 13 : 14 : 0.02
+T: 2 0 : 13 : 16 : 0.02
+T: 2 0 : 13 : 19 : 0.06
+T: 2 0 : 13 : 23 : 0.01
+T: 2 0 : 13 : 25 : 0.01
+T: 2 0 : 14 : 44 : 0.01
+T: 2 0 : 14 : 41 : 0.02
+T: 2 0 : 14 : 26 : 0.01
+T: 2 0 : 14 : 40 : 0.01
+T: 2 0 : 14 : 23 : 0.02
+T: 2 0 : 14 : 20 : 0.06
+T: 2 0 : 14 : 17 : 0.02
+T: 2 0 : 14 : 14 : 0.04
+T: 2 0 : 14 : 38 : 0.06
+T: 2 0 : 14 : 4 : 0.06
+T: 2 0 : 14 : 11 : 0.12
+T: 2 0 : 14 : 2 : 0.36
+T: 2 0 : 14 : 22 : 0.01
+T: 2 0 : 14 : 5 : 0.12
+T: 2 0 : 14 : 8 : 0.06
+T: 2 0 : 14 : 13 : 0.02
+T: 2 0 : 15 : 43 : 0.01
+T: 2 0 : 15 : 39 : 0.06
+T: 2 0 : 15 : 42 : 0.03
+T: 2 0 : 15 : 25 : 0.01
+T: 2 0 : 15 : 21 : 0.06
+T: 2 0 : 15 : 6 : 0.18
+T: 2 0 : 15 : 3 : 0.36
+T: 2 0 : 15 : 24 : 0.03
+T: 2 0 : 15 : 7 : 0.06
+T: 2 0 : 15 : 12 : 0.12
+T: 2 0 : 15 : 15 : 0.06
+T: 2 0 : 15 : 16 : 0.02
+T: 2 0 : 36 : 66 : 0.01
+T: 2 0 : 36 : 48 : 0.01
+T: 2 0 : 36 : 39 : 0.01
+T: 2 0 : 36 : 37 : 0.01
+T: 2 0 : 36 : 36 : 0.08
+T: 2 0 : 36 : 9 : 0.08
+T: 2 0 : 36 : 64 : 0.01
+T: 2 0 : 36 : 30 : 0.06
+T: 2 0 : 36 : 63 : 0.08
+T: 2 0 : 36 : 46 : 0.01
+T: 2 0 : 36 : 12 : 0.01
+T: 2 0 : 36 : 10 : 0.01
+T: 2 0 : 36 : 27 : 0.48
+T: 2 0 : 36 : 45 : 0.08
+T: 2 0 : 36 : 28 : 0.06
+T: 2 0 : 37 : 67 : 0.01
+T: 2 0 : 37 : 63 : 0.01
+T: 2 0 : 37 : 65 : 0.01
+T: 2 0 : 37 : 28 : 0.42
+T: 2 0 : 37 : 11 : 0.01
+T: 2 0 : 37 : 45 : 0.01
+T: 2 0 : 37 : 64 : 0.07
+T: 2 0 : 37 : 27 : 0.06
+T: 2 0 : 37 : 13 : 0.01
+T: 2 0 : 37 : 10 : 0.07
+T: 2 0 : 37 : 47 : 0.01
+T: 2 0 : 37 : 29 : 0.06
+T: 2 0 : 37 : 9 : 0.01
+T: 2 0 : 37 : 46 : 0.07
+T: 2 0 : 37 : 31 : 0.06
+T: 2 0 : 37 : 36 : 0.01
+T: 2 0 : 37 : 37 : 0.07
+T: 2 0 : 37 : 38 : 0.01
+T: 2 0 : 37 : 40 : 0.01
+T: 2 0 : 37 : 49 : 0.01
+T: 2 0 : 38 : 68 : 0.01
+T: 2 0 : 38 : 50 : 0.01
+T: 2 0 : 38 : 64 : 0.01
+T: 2 0 : 38 : 47 : 0.08
+T: 2 0 : 38 : 41 : 0.01
+T: 2 0 : 38 : 38 : 0.08
+T: 2 0 : 38 : 37 : 0.01
+T: 2 0 : 38 : 32 : 0.06
+T: 2 0 : 38 : 10 : 0.01
+T: 2 0 : 38 : 65 : 0.08
+T: 2 0 : 38 : 14 : 0.01
+T: 2 0 : 38 : 11 : 0.08
+T: 2 0 : 38 : 28 : 0.06
+T: 2 0 : 38 : 46 : 0.01
+T: 2 0 : 38 : 29 : 0.48
+T: 2 0 : 39 : 69 : 0.01
+T: 2 0 : 39 : 66 : 0.02
+T: 2 0 : 39 : 63 : 0.06
+T: 2 0 : 39 : 15 : 0.01
+T: 2 0 : 39 : 27 : 0.36
+T: 2 0 : 39 : 13 : 0.01
+T: 2 0 : 39 : 67 : 0.01
+T: 2 0 : 39 : 30 : 0.12
+T: 2 0 : 39 : 9 : 0.06
+T: 2 0 : 39 : 49 : 0.01
+T: 2 0 : 39 : 12 : 0.02
+T: 2 0 : 39 : 31 : 0.06
+T: 2 0 : 39 : 48 : 0.02
+T: 2 0 : 39 : 33 : 0.06
+T: 2 0 : 39 : 36 : 0.06
+T: 2 0 : 39 : 39 : 0.02
+T: 2 0 : 39 : 40 : 0.01
+T: 2 0 : 39 : 42 : 0.01
+T: 2 0 : 39 : 45 : 0.06
+T: 2 0 : 39 : 51 : 0.01
+T: 2 0 : 40 : 70 : 0.01
+T: 2 0 : 40 : 66 : 0.01
+T: 2 0 : 40 : 64 : 0.06
+T: 2 0 : 40 : 52 : 0.01
+T: 2 0 : 40 : 48 : 0.01
+T: 2 0 : 40 : 16 : 0.01
+T: 2 0 : 40 : 28 : 0.36
+T: 2 0 : 40 : 14 : 0.01
+T: 2 0 : 40 : 68 : 0.01
+T: 2 0 : 40 : 31 : 0.06
+T: 2 0 : 40 : 50 : 0.01
+T: 2 0 : 40 : 13 : 0.01
+T: 2 0 : 40 : 67 : 0.01
+T: 2 0 : 40 : 30 : 0.06
+T: 2 0 : 40 : 10 : 0.06
+T: 2 0 : 40 : 49 : 0.01
+T: 2 0 : 40 : 12 : 0.01
+T: 2 0 : 40 : 46 : 0.06
+T: 2 0 : 40 : 32 : 0.06
+T: 2 0 : 40 : 34 : 0.06
+T: 2 0 : 40 : 37 : 0.06
+T: 2 0 : 40 : 39 : 0.01
+T: 2 0 : 40 : 40 : 0.01
+T: 2 0 : 40 : 41 : 0.01
+T: 2 0 : 40 : 43 : 0.01
+T: 2 0 : 41 : 71 : 0.01
+T: 2 0 : 41 : 67 : 0.01
+T: 2 0 : 41 : 65 : 0.06
+T: 2 0 : 41 : 29 : 0.36
+T: 2 0 : 41 : 68 : 0.02
+T: 2 0 : 41 : 31 : 0.06
+T: 2 0 : 41 : 14 : 0.02
+T: 2 0 : 41 : 17 : 0.01
+T: 2 0 : 41 : 11 : 0.06
+T: 2 0 : 41 : 47 : 0.06
+T: 2 0 : 41 : 32 : 0.12
+T: 2 0 : 41 : 49 : 0.01
+T: 2 0 : 41 : 35 : 0.06
+T: 2 0 : 41 : 38 : 0.06
+T: 2 0 : 41 : 40 : 0.01
+T: 2 0 : 41 : 41 : 0.02
+T: 2 0 : 41 : 44 : 0.01
+T: 2 0 : 41 : 13 : 0.01
+T: 2 0 : 41 : 50 : 0.02
+T: 2 0 : 41 : 53 : 0.01
+T: 2 0 : 42 : 70 : 0.01
+T: 2 0 : 42 : 69 : 0.03
+T: 2 0 : 42 : 52 : 0.01
+T: 2 0 : 42 : 48 : 0.06
+T: 2 0 : 42 : 43 : 0.01
+T: 2 0 : 42 : 42 : 0.03
+T: 2 0 : 42 : 39 : 0.06
+T: 2 0 : 42 : 66 : 0.06
+T: 2 0 : 42 : 15 : 0.03
+T: 2 0 : 42 : 12 : 0.06
+T: 2 0 : 42 : 33 : 0.18
+T: 2 0 : 42 : 16 : 0.01
+T: 2 0 : 42 : 30 : 0.36
+T: 2 0 : 42 : 51 : 0.03
+T: 2 0 : 42 : 34 : 0.06
+T: 2 0 : 43 : 69 : 0.01
+T: 2 0 : 43 : 67 : 0.06
+T: 2 0 : 43 : 70 : 0.02
+T: 2 0 : 43 : 33 : 0.06
+T: 2 0 : 43 : 31 : 0.36
+T: 2 0 : 43 : 17 : 0.01
+T: 2 0 : 43 : 71 : 0.01
+T: 2 0 : 43 : 34 : 0.12
+T: 2 0 : 43 : 51 : 0.01
+T: 2 0 : 43 : 13 : 0.06
+T: 2 0 : 43 : 49 : 0.06
+T: 2 0 : 43 : 35 : 0.06
+T: 2 0 : 43 : 15 : 0.01
+T: 2 0 : 43 : 52 : 0.02
+T: 2 0 : 43 : 40 : 0.06
+T: 2 0 : 43 : 42 : 0.01
+T: 2 0 : 43 : 43 : 0.02
+T: 2 0 : 43 : 44 : 0.01
+T: 2 0 : 43 : 16 : 0.02
+T: 2 0 : 43 : 53 : 0.01
+T: 2 0 : 44 : 71 : 0.03
+T: 2 0 : 44 : 70 : 0.01
+T: 2 0 : 44 : 53 : 0.03
+T: 2 0 : 44 : 44 : 0.03
+T: 2 0 : 44 : 43 : 0.01
+T: 2 0 : 44 : 41 : 0.06
+T: 2 0 : 44 : 50 : 0.06
+T: 2 0 : 44 : 16 : 0.01
+T: 2 0 : 44 : 14 : 0.06
+T: 2 0 : 44 : 52 : 0.01
+T: 2 0 : 44 : 35 : 0.18
+T: 2 0 : 44 : 32 : 0.36
+T: 2 0 : 44 : 68 : 0.06
+T: 2 0 : 44 : 17 : 0.03
+T: 2 0 : 44 : 34 : 0.06
+T: 2 0 : 45 : 75 : 0.01
+T: 2 0 : 45 : 48 : 0.02
+T: 2 0 : 45 : 46 : 0.02
+T: 2 0 : 45 : 45 : 0.16
+T: 2 0 : 45 : 18 : 0.08
+T: 2 0 : 45 : 73 : 0.01
+T: 2 0 : 45 : 39 : 0.06
+T: 2 0 : 45 : 72 : 0.08
+T: 2 0 : 45 : 21 : 0.01
+T: 2 0 : 45 : 19 : 0.01
+T: 2 0 : 45 : 36 : 0.48
+T: 2 0 : 45 : 37 : 0.06
+T: 2 0 : 46 : 76 : 0.01
+T: 2 0 : 46 : 49 : 0.02
+T: 2 0 : 46 : 47 : 0.02
+T: 2 0 : 46 : 46 : 0.14
+T: 2 0 : 46 : 45 : 0.02
+T: 2 0 : 46 : 74 : 0.01
+T: 2 0 : 46 : 40 : 0.06
+T: 2 0 : 46 : 72 : 0.01
+T: 2 0 : 46 : 38 : 0.06
+T: 2 0 : 46 : 18 : 0.01
+T: 2 0 : 46 : 73 : 0.07
+T: 2 0 : 46 : 22 : 0.01
+T: 2 0 : 46 : 19 : 0.07
+T: 2 0 : 46 : 36 : 0.06
+T: 2 0 : 46 : 20 : 0.01
+T: 2 0 : 46 : 37 : 0.42
+T: 2 0 : 47 : 77 : 0.01
+T: 2 0 : 47 : 73 : 0.01
+T: 2 0 : 47 : 50 : 0.02
+T: 2 0 : 47 : 47 : 0.16
+T: 2 0 : 47 : 46 : 0.02
+T: 2 0 : 47 : 41 : 0.06
+T: 2 0 : 47 : 19 : 0.01
+T: 2 0 : 47 : 74 : 0.08
+T: 2 0 : 47 : 23 : 0.01
+T: 2 0 : 47 : 20 : 0.08
+T: 2 0 : 47 : 37 : 0.06
+T: 2 0 : 47 : 38 : 0.48
+T: 2 0 : 48 : 78 : 0.01
+T: 2 0 : 48 : 51 : 0.02
+T: 2 0 : 48 : 49 : 0.02
+T: 2 0 : 48 : 48 : 0.04
+T: 2 0 : 48 : 45 : 0.12
+T: 2 0 : 48 : 76 : 0.01
+T: 2 0 : 48 : 42 : 0.06
+T: 2 0 : 48 : 40 : 0.06
+T: 2 0 : 48 : 72 : 0.06
+T: 2 0 : 48 : 21 : 0.02
+T: 2 0 : 48 : 18 : 0.06
+T: 2 0 : 48 : 39 : 0.12
+T: 2 0 : 48 : 22 : 0.01
+T: 2 0 : 48 : 36 : 0.36
+T: 2 0 : 48 : 75 : 0.02
+T: 2 0 : 48 : 24 : 0.01
+T: 2 0 : 49 : 79 : 0.01
+T: 2 0 : 49 : 75 : 0.01
+T: 2 0 : 49 : 25 : 0.01
+T: 2 0 : 49 : 37 : 0.36
+T: 2 0 : 49 : 23 : 0.01
+T: 2 0 : 49 : 77 : 0.01
+T: 2 0 : 49 : 40 : 0.06
+T: 2 0 : 49 : 22 : 0.01
+T: 2 0 : 49 : 76 : 0.01
+T: 2 0 : 49 : 39 : 0.06
+T: 2 0 : 49 : 73 : 0.06
+T: 2 0 : 49 : 19 : 0.06
+T: 2 0 : 49 : 21 : 0.01
+T: 2 0 : 49 : 41 : 0.06
+T: 2 0 : 49 : 43 : 0.06
+T: 2 0 : 49 : 46 : 0.12
+T: 2 0 : 49 : 48 : 0.02
+T: 2 0 : 49 : 49 : 0.02
+T: 2 0 : 49 : 50 : 0.02
+T: 2 0 : 49 : 52 : 0.02
+T: 2 0 : 50 : 80 : 0.01
+T: 2 0 : 50 : 76 : 0.01
+T: 2 0 : 50 : 53 : 0.02
+T: 2 0 : 50 : 50 : 0.04
+T: 2 0 : 50 : 49 : 0.02
+T: 2 0 : 50 : 47 : 0.12
+T: 2 0 : 50 : 44 : 0.06
+T: 2 0 : 50 : 41 : 0.12
+T: 2 0 : 50 : 22 : 0.01
+T: 2 0 : 50 : 20 : 0.06
+T: 2 0 : 50 : 77 : 0.02
+T: 2 0 : 50 : 26 : 0.01
+T: 2 0 : 50 : 74 : 0.06
+T: 2 0 : 50 : 23 : 0.02
+T: 2 0 : 50 : 40 : 0.06
+T: 2 0 : 50 : 38 : 0.36
+T: 2 0 : 51 : 79 : 0.01
+T: 2 0 : 51 : 78 : 0.03
+T: 2 0 : 51 : 52 : 0.02
+T: 2 0 : 51 : 51 : 0.06
+T: 2 0 : 51 : 48 : 0.12
+T: 2 0 : 51 : 75 : 0.06
+T: 2 0 : 51 : 24 : 0.03
+T: 2 0 : 51 : 21 : 0.06
+T: 2 0 : 51 : 42 : 0.18
+T: 2 0 : 51 : 25 : 0.01
+T: 2 0 : 51 : 39 : 0.36
+T: 2 0 : 51 : 43 : 0.06
+T: 2 0 : 52 : 80 : 0.01
+T: 2 0 : 52 : 79 : 0.02
+T: 2 0 : 52 : 53 : 0.02
+T: 2 0 : 52 : 52 : 0.04
+T: 2 0 : 52 : 51 : 0.02
+T: 2 0 : 52 : 49 : 0.12
+T: 2 0 : 52 : 78 : 0.01
+T: 2 0 : 52 : 44 : 0.06
+T: 2 0 : 52 : 24 : 0.01
+T: 2 0 : 52 : 22 : 0.06
+T: 2 0 : 52 : 43 : 0.12
+T: 2 0 : 52 : 26 : 0.01
+T: 2 0 : 52 : 40 : 0.36
+T: 2 0 : 52 : 76 : 0.06
+T: 2 0 : 52 : 25 : 0.02
+T: 2 0 : 52 : 42 : 0.06
+T: 2 0 : 53 : 80 : 0.03
+T: 2 0 : 53 : 79 : 0.01
+T: 2 0 : 53 : 53 : 0.06
+T: 2 0 : 53 : 52 : 0.02
+T: 2 0 : 53 : 50 : 0.12
+T: 2 0 : 53 : 25 : 0.01
+T: 2 0 : 53 : 23 : 0.06
+T: 2 0 : 53 : 44 : 0.18
+T: 2 0 : 53 : 41 : 0.36
+T: 2 0 : 53 : 77 : 0.06
+T: 2 0 : 53 : 26 : 0.03
+T: 2 0 : 53 : 43 : 0.06
+T: 2 0 : 54 : 66 : 0.01
+T: 2 0 : 54 : 63 : 0.08
+T: 2 0 : 54 : 28 : 0.01
+T: 2 0 : 54 : 27 : 0.08
+T: 2 0 : 54 : 55 : 0.08
+T: 2 0 : 54 : 64 : 0.01
+T: 2 0 : 54 : 30 : 0.01
+T: 2 0 : 54 : 54 : 0.64
+T: 2 0 : 54 : 57 : 0.08
+T: 2 0 : 55 : 67 : 0.01
+T: 2 0 : 55 : 64 : 0.07
+T: 2 0 : 55 : 58 : 0.08
+T: 2 0 : 55 : 56 : 0.08
+T: 2 0 : 55 : 28 : 0.07
+T: 2 0 : 55 : 27 : 0.01
+T: 2 0 : 55 : 55 : 0.56
+T: 2 0 : 55 : 63 : 0.01
+T: 2 0 : 55 : 29 : 0.01
+T: 2 0 : 55 : 65 : 0.01
+T: 2 0 : 55 : 31 : 0.01
+T: 2 0 : 55 : 54 : 0.08
+T: 2 0 : 56 : 68 : 0.01
+T: 2 0 : 56 : 65 : 0.08
+T: 2 0 : 56 : 64 : 0.01
+T: 2 0 : 56 : 29 : 0.08
+T: 2 0 : 56 : 28 : 0.01
+T: 2 0 : 56 : 56 : 0.64
+T: 2 0 : 56 : 32 : 0.01
+T: 2 0 : 56 : 55 : 0.08
+T: 2 0 : 56 : 59 : 0.08
+T: 2 0 : 57 : 69 : 0.01
+T: 2 0 : 57 : 66 : 0.02
+T: 2 0 : 57 : 63 : 0.06
+T: 2 0 : 57 : 60 : 0.08
+T: 2 0 : 57 : 58 : 0.08
+T: 2 0 : 57 : 30 : 0.02
+T: 2 0 : 57 : 27 : 0.06
+T: 2 0 : 57 : 31 : 0.01
+T: 2 0 : 57 : 67 : 0.01
+T: 2 0 : 57 : 33 : 0.01
+T: 2 0 : 57 : 54 : 0.48
+T: 2 0 : 57 : 57 : 0.16
+T: 2 0 : 58 : 70 : 0.01
+T: 2 0 : 58 : 67 : 0.01
+T: 2 0 : 58 : 61 : 0.08
+T: 2 0 : 58 : 59 : 0.08
+T: 2 0 : 58 : 58 : 0.08
+T: 2 0 : 58 : 57 : 0.08
+T: 2 0 : 58 : 64 : 0.06
+T: 2 0 : 58 : 30 : 0.01
+T: 2 0 : 58 : 28 : 0.06
+T: 2 0 : 58 : 31 : 0.01
+T: 2 0 : 58 : 66 : 0.01
+T: 2 0 : 58 : 32 : 0.01
+T: 2 0 : 58 : 68 : 0.01
+T: 2 0 : 58 : 34 : 0.01
+T: 2 0 : 58 : 55 : 0.48
+T: 2 0 : 59 : 71 : 0.01
+T: 2 0 : 59 : 68 : 0.02
+T: 2 0 : 59 : 67 : 0.01
+T: 2 0 : 59 : 62 : 0.08
+T: 2 0 : 59 : 59 : 0.16
+T: 2 0 : 59 : 65 : 0.06
+T: 2 0 : 59 : 31 : 0.01
+T: 2 0 : 59 : 29 : 0.06
+T: 2 0 : 59 : 32 : 0.02
+T: 2 0 : 59 : 35 : 0.01
+T: 2 0 : 59 : 56 : 0.48
+T: 2 0 : 59 : 58 : 0.08
+T: 2 0 : 60 : 70 : 0.01
+T: 2 0 : 60 : 69 : 0.03
+T: 2 0 : 60 : 66 : 0.06
+T: 2 0 : 60 : 33 : 0.03
+T: 2 0 : 60 : 61 : 0.08
+T: 2 0 : 60 : 30 : 0.06
+T: 2 0 : 60 : 34 : 0.01
+T: 2 0 : 60 : 57 : 0.48
+T: 2 0 : 60 : 60 : 0.24
+T: 2 0 : 61 : 71 : 0.01
+T: 2 0 : 61 : 70 : 0.02
+T: 2 0 : 61 : 62 : 0.08
+T: 2 0 : 61 : 61 : 0.16
+T: 2 0 : 61 : 67 : 0.06
+T: 2 0 : 61 : 33 : 0.01
+T: 2 0 : 61 : 31 : 0.06
+T: 2 0 : 61 : 34 : 0.02
+T: 2 0 : 61 : 69 : 0.01
+T: 2 0 : 61 : 35 : 0.01
+T: 2 0 : 61 : 58 : 0.48
+T: 2 0 : 61 : 60 : 0.08
+T: 2 0 : 62 : 71 : 0.03
+T: 2 0 : 62 : 70 : 0.01
+T: 2 0 : 62 : 68 : 0.06
+T: 2 0 : 62 : 34 : 0.01
+T: 2 0 : 62 : 62 : 0.24
+T: 2 0 : 62 : 32 : 0.06
+T: 2 0 : 62 : 35 : 0.03
+T: 2 0 : 62 : 59 : 0.48
+T: 2 0 : 62 : 61 : 0.08
+T: 2 0 : 63 : 75 : 0.01
+T: 2 0 : 63 : 66 : 0.02
+T: 2 0 : 63 : 64 : 0.02
+T: 2 0 : 63 : 63 : 0.16
+T: 2 0 : 63 : 36 : 0.08
+T: 2 0 : 63 : 57 : 0.06
+T: 2 0 : 63 : 73 : 0.01
+T: 2 0 : 63 : 39 : 0.01
+T: 2 0 : 63 : 37 : 0.01
+T: 2 0 : 63 : 54 : 0.48
+T: 2 0 : 63 : 72 : 0.08
+T: 2 0 : 63 : 55 : 0.06
+T: 2 0 : 64 : 76 : 0.01
+T: 2 0 : 64 : 67 : 0.02
+T: 2 0 : 64 : 65 : 0.02
+T: 2 0 : 64 : 64 : 0.14
+T: 2 0 : 64 : 63 : 0.02
+T: 2 0 : 64 : 58 : 0.06
+T: 2 0 : 64 : 73 : 0.07
+T: 2 0 : 64 : 56 : 0.06
+T: 2 0 : 64 : 36 : 0.01
+T: 2 0 : 64 : 74 : 0.01
+T: 2 0 : 64 : 40 : 0.01
+T: 2 0 : 64 : 37 : 0.07
+T: 2 0 : 64 : 54 : 0.06
+T: 2 0 : 64 : 72 : 0.01
+T: 2 0 : 64 : 38 : 0.01
+T: 2 0 : 64 : 55 : 0.42
+T: 2 0 : 65 : 77 : 0.01
+T: 2 0 : 65 : 74 : 0.08
+T: 2 0 : 65 : 68 : 0.02
+T: 2 0 : 65 : 65 : 0.16
+T: 2 0 : 65 : 64 : 0.02
+T: 2 0 : 65 : 59 : 0.06
+T: 2 0 : 65 : 37 : 0.01
+T: 2 0 : 65 : 41 : 0.01
+T: 2 0 : 65 : 38 : 0.08
+T: 2 0 : 65 : 55 : 0.06
+T: 2 0 : 65 : 73 : 0.01
+T: 2 0 : 65 : 56 : 0.48
+T: 2 0 : 66 : 78 : 0.01
+T: 2 0 : 66 : 72 : 0.06
+T: 2 0 : 66 : 69 : 0.02
+T: 2 0 : 66 : 67 : 0.02
+T: 2 0 : 66 : 66 : 0.04
+T: 2 0 : 66 : 63 : 0.12
+T: 2 0 : 66 : 60 : 0.06
+T: 2 0 : 66 : 75 : 0.02
+T: 2 0 : 66 : 58 : 0.06
+T: 2 0 : 66 : 39 : 0.02
+T: 2 0 : 66 : 36 : 0.06
+T: 2 0 : 66 : 57 : 0.12
+T: 2 0 : 66 : 40 : 0.01
+T: 2 0 : 66 : 54 : 0.36
+T: 2 0 : 66 : 76 : 0.01
+T: 2 0 : 66 : 42 : 0.01
+T: 2 0 : 67 : 79 : 0.01
+T: 2 0 : 67 : 75 : 0.01
+T: 2 0 : 67 : 43 : 0.01
+T: 2 0 : 67 : 55 : 0.36
+T: 2 0 : 67 : 41 : 0.01
+T: 2 0 : 67 : 58 : 0.06
+T: 2 0 : 67 : 77 : 0.01
+T: 2 0 : 67 : 40 : 0.01
+T: 2 0 : 67 : 57 : 0.06
+T: 2 0 : 67 : 37 : 0.06
+T: 2 0 : 67 : 76 : 0.01
+T: 2 0 : 67 : 39 : 0.01
+T: 2 0 : 67 : 73 : 0.06
+T: 2 0 : 67 : 59 : 0.06
+T: 2 0 : 67 : 61 : 0.06
+T: 2 0 : 67 : 64 : 0.12
+T: 2 0 : 67 : 66 : 0.02
+T: 2 0 : 67 : 67 : 0.02
+T: 2 0 : 67 : 68 : 0.02
+T: 2 0 : 67 : 70 : 0.02
+T: 2 0 : 68 : 80 : 0.01
+T: 2 0 : 68 : 77 : 0.02
+T: 2 0 : 68 : 71 : 0.02
+T: 2 0 : 68 : 68 : 0.04
+T: 2 0 : 68 : 67 : 0.02
+T: 2 0 : 68 : 65 : 0.12
+T: 2 0 : 68 : 62 : 0.06
+T: 2 0 : 68 : 76 : 0.01
+T: 2 0 : 68 : 59 : 0.12
+T: 2 0 : 68 : 74 : 0.06
+T: 2 0 : 68 : 40 : 0.01
+T: 2 0 : 68 : 38 : 0.06
+T: 2 0 : 68 : 44 : 0.01
+T: 2 0 : 68 : 41 : 0.02
+T: 2 0 : 68 : 58 : 0.06
+T: 2 0 : 68 : 56 : 0.36
+T: 2 0 : 69 : 79 : 0.01
+T: 2 0 : 69 : 75 : 0.06
+T: 2 0 : 69 : 70 : 0.02
+T: 2 0 : 69 : 69 : 0.06
+T: 2 0 : 69 : 66 : 0.12
+T: 2 0 : 69 : 42 : 0.03
+T: 2 0 : 69 : 39 : 0.06
+T: 2 0 : 69 : 60 : 0.18
+T: 2 0 : 69 : 43 : 0.01
+T: 2 0 : 69 : 57 : 0.36
+T: 2 0 : 69 : 78 : 0.03
+T: 2 0 : 69 : 61 : 0.06
+T: 2 0 : 70 : 80 : 0.01
+T: 2 0 : 70 : 71 : 0.02
+T: 2 0 : 70 : 70 : 0.04
+T: 2 0 : 70 : 69 : 0.02
+T: 2 0 : 70 : 67 : 0.12
+T: 2 0 : 70 : 79 : 0.02
+T: 2 0 : 70 : 62 : 0.06
+T: 2 0 : 70 : 76 : 0.06
+T: 2 0 : 70 : 42 : 0.01
+T: 2 0 : 70 : 40 : 0.06
+T: 2 0 : 70 : 78 : 0.01
+T: 2 0 : 70 : 61 : 0.12
+T: 2 0 : 70 : 44 : 0.01
+T: 2 0 : 70 : 58 : 0.36
+T: 2 0 : 70 : 43 : 0.02
+T: 2 0 : 70 : 60 : 0.06
+T: 2 0 : 71 : 80 : 0.03
+T: 2 0 : 71 : 71 : 0.06
+T: 2 0 : 71 : 70 : 0.02
+T: 2 0 : 71 : 68 : 0.12
+T: 2 0 : 71 : 77 : 0.06
+T: 2 0 : 71 : 43 : 0.01
+T: 2 0 : 71 : 41 : 0.06
+T: 2 0 : 71 : 79 : 0.01
+T: 2 0 : 71 : 62 : 0.18
+T: 2 0 : 71 : 59 : 0.36
+T: 2 0 : 71 : 44 : 0.03
+T: 2 0 : 71 : 61 : 0.06
+T: 2 0 : 72 : 75 : 0.03
+T: 2 0 : 72 : 73 : 0.03
+T: 2 0 : 72 : 72 : 0.24
+T: 2 0 : 72 : 45 : 0.08
+T: 2 0 : 72 : 66 : 0.06
+T: 2 0 : 72 : 48 : 0.01
+T: 2 0 : 72 : 46 : 0.01
+T: 2 0 : 72 : 63 : 0.48
+T: 2 0 : 72 : 64 : 0.06
+T: 2 0 : 73 : 76 : 0.03
+T: 2 0 : 73 : 74 : 0.03
+T: 2 0 : 73 : 73 : 0.21
+T: 2 0 : 73 : 72 : 0.03
+T: 2 0 : 73 : 67 : 0.06
+T: 2 0 : 73 : 65 : 0.06
+T: 2 0 : 73 : 45 : 0.01
+T: 2 0 : 73 : 49 : 0.01
+T: 2 0 : 73 : 46 : 0.07
+T: 2 0 : 73 : 63 : 0.06
+T: 2 0 : 73 : 47 : 0.01
+T: 2 0 : 73 : 64 : 0.42
+T: 2 0 : 74 : 77 : 0.03
+T: 2 0 : 74 : 74 : 0.24
+T: 2 0 : 74 : 73 : 0.03
+T: 2 0 : 74 : 68 : 0.06
+T: 2 0 : 74 : 46 : 0.01
+T: 2 0 : 74 : 50 : 0.01
+T: 2 0 : 74 : 47 : 0.08
+T: 2 0 : 74 : 64 : 0.06
+T: 2 0 : 74 : 65 : 0.48
+T: 2 0 : 75 : 78 : 0.03
+T: 2 0 : 75 : 76 : 0.03
+T: 2 0 : 75 : 75 : 0.06
+T: 2 0 : 75 : 72 : 0.18
+T: 2 0 : 75 : 69 : 0.06
+T: 2 0 : 75 : 67 : 0.06
+T: 2 0 : 75 : 48 : 0.02
+T: 2 0 : 75 : 45 : 0.06
+T: 2 0 : 75 : 66 : 0.12
+T: 2 0 : 75 : 49 : 0.01
+T: 2 0 : 75 : 63 : 0.36
+T: 2 0 : 75 : 51 : 0.01
+T: 2 0 : 76 : 79 : 0.03
+T: 2 0 : 76 : 77 : 0.03
+T: 2 0 : 76 : 76 : 0.03
+T: 2 0 : 76 : 75 : 0.03
+T: 2 0 : 76 : 73 : 0.18
+T: 2 0 : 76 : 70 : 0.06
+T: 2 0 : 76 : 68 : 0.06
+T: 2 0 : 76 : 48 : 0.01
+T: 2 0 : 76 : 46 : 0.06
+T: 2 0 : 76 : 66 : 0.06
+T: 2 0 : 76 : 49 : 0.01
+T: 2 0 : 76 : 67 : 0.06
+T: 2 0 : 76 : 50 : 0.01
+T: 2 0 : 76 : 64 : 0.36
+T: 2 0 : 76 : 52 : 0.01
+T: 2 0 : 77 : 80 : 0.03
+T: 2 0 : 77 : 77 : 0.06
+T: 2 0 : 77 : 76 : 0.03
+T: 2 0 : 77 : 74 : 0.18
+T: 2 0 : 77 : 71 : 0.06
+T: 2 0 : 77 : 68 : 0.12
+T: 2 0 : 77 : 49 : 0.01
+T: 2 0 : 77 : 47 : 0.06
+T: 2 0 : 77 : 53 : 0.01
+T: 2 0 : 77 : 50 : 0.02
+T: 2 0 : 77 : 67 : 0.06
+T: 2 0 : 77 : 65 : 0.36
+T: 2 1 : 80 : 80 : 0.24
+T: 2 1 : 80 : 79 : 0.03
+T: 2 1 : 80 : 77 : 0.03
+T: 2 1 : 80 : 52 : 0.01
+T: 2 1 : 80 : 50 : 0.01
+T: 2 1 : 80 : 71 : 0.48
+T: 2 1 : 80 : 68 : 0.06
+T: 2 1 : 80 : 53 : 0.08
+T: 2 1 : 80 : 70 : 0.06
+T: 2 1 : 79 : 80 : 0.03
+T: 2 1 : 79 : 79 : 0.21
+T: 2 1 : 79 : 78 : 0.03
+T: 2 1 : 79 : 76 : 0.03
+T: 2 1 : 79 : 71 : 0.06
+T: 2 1 : 79 : 51 : 0.01
+T: 2 1 : 79 : 49 : 0.01
+T: 2 1 : 79 : 70 : 0.42
+T: 2 1 : 79 : 53 : 0.01
+T: 2 1 : 79 : 67 : 0.06
+T: 2 1 : 79 : 52 : 0.07
+T: 2 1 : 79 : 69 : 0.06
+T: 2 1 : 78 : 79 : 0.03
+T: 2 1 : 78 : 78 : 0.24
+T: 2 1 : 78 : 75 : 0.03
+T: 2 1 : 78 : 51 : 0.08
+T: 2 1 : 78 : 48 : 0.01
+T: 2 1 : 78 : 69 : 0.48
+T: 2 1 : 78 : 52 : 0.01
+T: 2 1 : 78 : 66 : 0.06
+T: 2 1 : 78 : 70 : 0.06
+T: 2 1 : 35 : 62 : 0.08
+T: 2 1 : 35 : 61 : 0.01
+T: 2 1 : 35 : 44 : 0.08
+T: 2 1 : 35 : 43 : 0.01
+T: 2 1 : 35 : 41 : 0.01
+T: 2 1 : 35 : 7 : 0.01
+T: 2 1 : 35 : 35 : 0.56
+T: 2 1 : 35 : 5 : 0.01
+T: 2 1 : 35 : 59 : 0.01
+T: 2 1 : 35 : 8 : 0.08
+T: 2 1 : 35 : 32 : 0.07
+T: 2 1 : 35 : 34 : 0.07
+T: 2 1 : 34 : 62 : 0.01
+T: 2 1 : 34 : 61 : 0.07
+T: 2 1 : 34 : 44 : 0.01
+T: 2 1 : 34 : 60 : 0.01
+T: 2 1 : 34 : 43 : 0.07
+T: 2 1 : 34 : 35 : 0.07
+T: 2 1 : 34 : 34 : 0.49
+T: 2 1 : 34 : 40 : 0.01
+T: 2 1 : 34 : 6 : 0.01
+T: 2 1 : 34 : 4 : 0.01
+T: 2 1 : 34 : 58 : 0.01
+T: 2 1 : 34 : 7 : 0.07
+T: 2 1 : 34 : 42 : 0.01
+T: 2 1 : 34 : 8 : 0.01
+T: 2 1 : 34 : 31 : 0.07
+T: 2 1 : 34 : 33 : 0.07
+T: 2 1 : 33 : 61 : 0.01
+T: 2 1 : 33 : 60 : 0.08
+T: 2 1 : 33 : 43 : 0.01
+T: 2 1 : 33 : 42 : 0.08
+T: 2 1 : 33 : 39 : 0.01
+T: 2 1 : 33 : 57 : 0.01
+T: 2 1 : 33 : 6 : 0.08
+T: 2 1 : 33 : 34 : 0.07
+T: 2 1 : 33 : 3 : 0.01
+T: 2 1 : 33 : 7 : 0.01
+T: 2 1 : 33 : 30 : 0.07
+T: 2 1 : 33 : 33 : 0.56
+T: 2 1 : 32 : 62 : 0.06
+T: 2 1 : 32 : 44 : 0.06
+T: 2 1 : 32 : 58 : 0.01
+T: 2 1 : 32 : 41 : 0.02
+T: 2 1 : 32 : 40 : 0.01
+T: 2 1 : 32 : 35 : 0.42
+T: 2 1 : 32 : 32 : 0.14
+T: 2 1 : 32 : 38 : 0.01
+T: 2 1 : 32 : 4 : 0.01
+T: 2 1 : 32 : 2 : 0.01
+T: 2 1 : 32 : 56 : 0.01
+T: 2 1 : 32 : 5 : 0.02
+T: 2 1 : 32 : 59 : 0.02
+T: 2 1 : 32 : 8 : 0.06
+T: 2 1 : 32 : 29 : 0.07
+T: 2 1 : 32 : 31 : 0.07
+T: 2 1 : 31 : 61 : 0.06
+T: 2 1 : 31 : 59 : 0.01
+T: 2 1 : 31 : 58 : 0.01
+T: 2 1 : 31 : 57 : 0.01
+T: 2 1 : 31 : 28 : 0.07
+T: 2 1 : 31 : 7 : 0.06
+T: 2 1 : 31 : 5 : 0.01
+T: 2 1 : 31 : 39 : 0.01
+T: 2 1 : 31 : 41 : 0.01
+T: 2 1 : 31 : 4 : 0.01
+T: 2 1 : 31 : 55 : 0.01
+T: 2 1 : 31 : 1 : 0.01
+T: 2 1 : 31 : 37 : 0.01
+T: 2 1 : 31 : 30 : 0.07
+T: 2 1 : 31 : 31 : 0.07
+T: 2 1 : 31 : 32 : 0.07
+T: 2 1 : 31 : 34 : 0.42
+T: 2 1 : 31 : 3 : 0.01
+T: 2 1 : 31 : 40 : 0.01
+T: 2 1 : 31 : 43 : 0.06
+T: 2 1 : 30 : 60 : 0.06
+T: 2 1 : 30 : 58 : 0.01
+T: 2 1 : 30 : 42 : 0.06
+T: 2 1 : 30 : 39 : 0.02
+T: 2 1 : 30 : 36 : 0.01
+T: 2 1 : 30 : 33 : 0.42
+T: 2 1 : 30 : 31 : 0.07
+T: 2 1 : 30 : 54 : 0.01
+T: 2 1 : 30 : 3 : 0.02
+T: 2 1 : 30 : 0 : 0.01
+T: 2 1 : 30 : 4 : 0.01
+T: 2 1 : 30 : 57 : 0.02
+T: 2 1 : 30 : 40 : 0.01
+T: 2 1 : 30 : 6 : 0.06
+T: 2 1 : 30 : 27 : 0.07
+T: 2 1 : 30 : 30 : 0.14
+T: 2 1 : 29 : 59 : 0.06
+T: 2 1 : 29 : 41 : 0.06
+T: 2 1 : 29 : 55 : 0.01
+T: 2 1 : 29 : 38 : 0.03
+T: 2 1 : 29 : 37 : 0.01
+T: 2 1 : 29 : 2 : 0.03
+T: 2 1 : 29 : 1 : 0.01
+T: 2 1 : 29 : 29 : 0.21
+T: 2 1 : 29 : 56 : 0.03
+T: 2 1 : 29 : 5 : 0.06
+T: 2 1 : 29 : 28 : 0.07
+T: 2 1 : 29 : 32 : 0.42
+T: 2 1 : 28 : 58 : 0.06
+T: 2 1 : 28 : 56 : 0.01
+T: 2 1 : 28 : 40 : 0.06
+T: 2 1 : 28 : 54 : 0.01
+T: 2 1 : 28 : 37 : 0.02
+T: 2 1 : 28 : 31 : 0.42
+T: 2 1 : 28 : 29 : 0.07
+T: 2 1 : 28 : 1 : 0.02
+T: 2 1 : 28 : 0 : 0.01
+T: 2 1 : 28 : 28 : 0.14
+T: 2 1 : 28 : 36 : 0.01
+T: 2 1 : 28 : 2 : 0.01
+T: 2 1 : 28 : 55 : 0.02
+T: 2 1 : 28 : 38 : 0.01
+T: 2 1 : 28 : 4 : 0.06
+T: 2 1 : 28 : 27 : 0.07
+T: 2 1 : 27 : 57 : 0.06
+T: 2 1 : 27 : 55 : 0.01
+T: 2 1 : 27 : 39 : 0.06
+T: 2 1 : 27 : 36 : 0.03
+T: 2 1 : 27 : 1 : 0.01
+T: 2 1 : 27 : 0 : 0.03
+T: 2 1 : 27 : 28 : 0.07
+T: 2 1 : 27 : 54 : 0.03
+T: 2 1 : 27 : 37 : 0.01
+T: 2 1 : 27 : 3 : 0.06
+T: 2 1 : 27 : 27 : 0.21
+T: 2 1 : 27 : 30 : 0.42
+T: 2 1 : 26 : 53 : 0.08
+T: 2 1 : 26 : 52 : 0.01
+T: 2 1 : 26 : 50 : 0.01
+T: 2 1 : 26 : 16 : 0.06
+T: 2 1 : 26 : 23 : 0.03
+T: 2 1 : 26 : 14 : 0.06
+T: 2 1 : 26 : 17 : 0.48
+T: 2 1 : 26 : 25 : 0.03
+T: 2 1 : 26 : 26 : 0.24
+T: 2 1 : 25 : 53 : 0.01
+T: 2 1 : 25 : 52 : 0.07
+T: 2 1 : 25 : 26 : 0.03
+T: 2 1 : 25 : 25 : 0.21
+T: 2 1 : 25 : 49 : 0.01
+T: 2 1 : 25 : 15 : 0.06
+T: 2 1 : 25 : 22 : 0.03
+T: 2 1 : 25 : 13 : 0.06
+T: 2 1 : 25 : 16 : 0.42
+T: 2 1 : 25 : 51 : 0.01
+T: 2 1 : 25 : 17 : 0.06
+T: 2 1 : 25 : 24 : 0.03
+T: 2 1 : 24 : 52 : 0.01
+T: 2 1 : 24 : 51 : 0.08
+T: 2 1 : 24 : 48 : 0.01
+T: 2 1 : 24 : 15 : 0.48
+T: 2 1 : 24 : 12 : 0.06
+T: 2 1 : 24 : 16 : 0.06
+T: 2 1 : 24 : 21 : 0.03
+T: 2 1 : 24 : 24 : 0.24
+T: 2 1 : 24 : 25 : 0.03
+T: 2 1 : 23 : 53 : 0.06
+T: 2 1 : 23 : 50 : 0.02
+T: 2 1 : 23 : 49 : 0.01
+T: 2 1 : 23 : 26 : 0.18
+T: 2 1 : 23 : 23 : 0.06
+T: 2 1 : 23 : 47 : 0.01
+T: 2 1 : 23 : 13 : 0.06
+T: 2 1 : 23 : 20 : 0.03
+T: 2 1 : 23 : 11 : 0.06
+T: 2 1 : 23 : 14 : 0.12
+T: 2 1 : 23 : 17 : 0.36
+T: 2 1 : 23 : 22 : 0.03
+T: 2 1 : 22 : 52 : 0.06
+T: 2 1 : 22 : 49 : 0.01
+T: 2 1 : 22 : 25 : 0.18
+T: 2 1 : 22 : 23 : 0.03
+T: 2 1 : 22 : 22 : 0.03
+T: 2 1 : 22 : 21 : 0.03
+T: 2 1 : 22 : 46 : 0.01
+T: 2 1 : 22 : 12 : 0.06
+T: 2 1 : 22 : 19 : 0.03
+T: 2 1 : 22 : 10 : 0.06
+T: 2 1 : 22 : 13 : 0.06
+T: 2 1 : 22 : 48 : 0.01
+T: 2 1 : 22 : 14 : 0.06
+T: 2 1 : 22 : 50 : 0.01
+T: 2 1 : 22 : 16 : 0.36
+T: 2 1 : 21 : 51 : 0.06
+T: 2 1 : 21 : 48 : 0.02
+T: 2 1 : 21 : 45 : 0.01
+T: 2 1 : 21 : 24 : 0.18
+T: 2 1 : 21 : 22 : 0.03
+T: 2 1 : 21 : 12 : 0.12
+T: 2 1 : 21 : 9 : 0.06
+T: 2 1 : 21 : 13 : 0.06
+T: 2 1 : 21 : 49 : 0.01
+T: 2 1 : 21 : 15 : 0.36
+T: 2 1 : 21 : 18 : 0.03
+T: 2 1 : 21 : 21 : 0.06
+T: 2 1 : 20 : 50 : 0.06
+T: 2 1 : 20 : 47 : 0.03
+T: 2 1 : 20 : 46 : 0.01
+T: 2 1 : 20 : 11 : 0.18
+T: 2 1 : 20 : 10 : 0.06
+T: 2 1 : 20 : 14 : 0.36
+T: 2 1 : 20 : 19 : 0.03
+T: 2 1 : 20 : 20 : 0.09
+T: 2 1 : 20 : 23 : 0.18
+T: 2 1 : 19 : 49 : 0.06
+T: 2 1 : 19 : 46 : 0.02
+T: 2 1 : 19 : 22 : 0.18
+T: 2 1 : 19 : 20 : 0.03
+T: 2 1 : 19 : 10 : 0.12
+T: 2 1 : 19 : 9 : 0.06
+T: 2 1 : 19 : 45 : 0.01
+T: 2 1 : 19 : 11 : 0.06
+T: 2 1 : 19 : 18 : 0.03
+T: 2 1 : 19 : 47 : 0.01
+T: 2 1 : 19 : 13 : 0.36
+T: 2 1 : 19 : 19 : 0.06
+T: 2 1 : 18 : 48 : 0.06
+T: 2 1 : 18 : 45 : 0.03
+T: 2 1 : 18 : 10 : 0.06
+T: 2 1 : 18 : 9 : 0.18
+T: 2 1 : 18 : 46 : 0.01
+T: 2 1 : 18 : 12 : 0.36
+T: 2 1 : 18 : 19 : 0.03
+T: 2 1 : 18 : 18 : 0.09
+T: 2 1 : 18 : 21 : 0.18
+T: 2 1 : 17 : 44 : 0.08
+T: 2 1 : 17 : 43 : 0.01
+T: 2 1 : 17 : 26 : 0.08
+T: 2 1 : 17 : 23 : 0.01
+T: 2 1 : 17 : 41 : 0.01
+T: 2 1 : 17 : 7 : 0.06
+T: 2 1 : 17 : 14 : 0.02
+T: 2 1 : 17 : 5 : 0.06
+T: 2 1 : 17 : 25 : 0.01
+T: 2 1 : 17 : 8 : 0.48
+T: 2 1 : 17 : 16 : 0.02
+T: 2 1 : 17 : 17 : 0.16
+T: 2 1 : 16 : 44 : 0.01
+T: 2 1 : 16 : 43 : 0.07
+T: 2 1 : 16 : 26 : 0.01
+T: 2 1 : 16 : 22 : 0.01
+T: 2 1 : 16 : 17 : 0.02
+T: 2 1 : 16 : 16 : 0.14
+T: 2 1 : 16 : 40 : 0.01
+T: 2 1 : 16 : 6 : 0.06
+T: 2 1 : 16 : 13 : 0.02
+T: 2 1 : 16 : 4 : 0.06
+T: 2 1 : 16 : 24 : 0.01
+T: 2 1 : 16 : 7 : 0.42
+T: 2 1 : 16 : 42 : 0.01
+T: 2 1 : 16 : 25 : 0.07
+T: 2 1 : 16 : 8 : 0.06
+T: 2 1 : 16 : 15 : 0.02
+T: 2 1 : 5 : 35 : 0.06
+T: 2 1 : 5 : 32 : 0.02
+T: 2 1 : 5 : 29 : 0.01
+T: 2 1 : 5 : 17 : 0.06
+T: 2 1 : 5 : 31 : 0.01
+T: 2 1 : 5 : 14 : 0.02
+T: 2 1 : 5 : 4 : 0.08
+T: 2 1 : 5 : 11 : 0.01
+T: 2 1 : 5 : 2 : 0.08
+T: 2 1 : 5 : 5 : 0.16
+T: 2 1 : 5 : 8 : 0.48
+T: 2 1 : 5 : 13 : 0.01
+T: 2 1 : 4 : 34 : 0.06
+T: 2 1 : 4 : 32 : 0.01
+T: 2 1 : 4 : 28 : 0.01
+T: 2 1 : 4 : 16 : 0.06
+T: 2 1 : 4 : 31 : 0.01
+T: 2 1 : 4 : 14 : 0.01
+T: 2 1 : 4 : 30 : 0.01
+T: 2 1 : 4 : 13 : 0.01
+T: 2 1 : 4 : 12 : 0.01
+T: 2 1 : 4 : 3 : 0.08
+T: 2 1 : 4 : 10 : 0.01
+T: 2 1 : 4 : 1 : 0.08
+T: 2 1 : 4 : 4 : 0.08
+T: 2 1 : 4 : 5 : 0.08
+T: 2 1 : 4 : 7 : 0.48
+T: 2 1 : 3 : 33 : 0.06
+T: 2 1 : 3 : 31 : 0.01
+T: 2 1 : 3 : 27 : 0.01
+T: 2 1 : 3 : 15 : 0.06
+T: 2 1 : 3 : 30 : 0.02
+T: 2 1 : 3 : 13 : 0.01
+T: 2 1 : 3 : 3 : 0.16
+T: 2 1 : 3 : 0 : 0.08
+T: 2 1 : 3 : 4 : 0.08
+T: 2 1 : 3 : 6 : 0.48
+T: 2 1 : 3 : 9 : 0.01
+T: 2 1 : 3 : 12 : 0.02
+T: 2 1 : 2 : 32 : 0.06
+T: 2 1 : 2 : 29 : 0.03
+T: 2 1 : 2 : 2 : 0.24
+T: 2 1 : 2 : 1 : 0.08
+T: 2 1 : 2 : 5 : 0.48
+T: 2 1 : 2 : 10 : 0.01
+T: 2 1 : 2 : 28 : 0.01
+T: 2 1 : 2 : 11 : 0.03
+T: 2 1 : 2 : 14 : 0.06
+T: 2 1 : 0 : 30 : 0.06
+T: 2 1 : 0 : 28 : 0.01
+T: 2 1 : 0 : 1 : 0.08
+T: 2 1 : 0 : 0 : 0.24
+T: 2 1 : 0 : 3 : 0.48
+T: 2 1 : 0 : 27 : 0.03
+T: 2 1 : 0 : 10 : 0.01
+T: 2 1 : 0 : 9 : 0.03
+T: 2 1 : 0 : 12 : 0.06
+T: 2 1 : 1 : 31 : 0.06
+T: 2 1 : 1 : 29 : 0.01
+T: 2 1 : 1 : 13 : 0.06
+T: 2 1 : 1 : 28 : 0.02
+T: 2 1 : 1 : 11 : 0.01
+T: 2 1 : 1 : 1 : 0.16
+T: 2 1 : 1 : 0 : 0.08
+T: 2 1 : 1 : 2 : 0.08
+T: 2 1 : 1 : 9 : 0.01
+T: 2 1 : 1 : 4 : 0.48
+T: 2 1 : 1 : 27 : 0.01
+T: 2 1 : 1 : 10 : 0.02
+T: 2 1 : 6 : 34 : 0.01
+T: 2 1 : 6 : 30 : 0.01
+T: 2 1 : 6 : 6 : 0.64
+T: 2 1 : 6 : 3 : 0.08
+T: 2 1 : 6 : 7 : 0.08
+T: 2 1 : 6 : 12 : 0.01
+T: 2 1 : 6 : 15 : 0.08
+T: 2 1 : 6 : 33 : 0.08
+T: 2 1 : 6 : 16 : 0.01
+T: 2 1 : 7 : 35 : 0.01
+T: 2 1 : 7 : 31 : 0.01
+T: 2 1 : 7 : 34 : 0.07
+T: 2 1 : 7 : 17 : 0.01
+T: 2 1 : 7 : 33 : 0.01
+T: 2 1 : 7 : 16 : 0.07
+T: 2 1 : 7 : 6 : 0.08
+T: 2 1 : 7 : 13 : 0.01
+T: 2 1 : 7 : 4 : 0.08
+T: 2 1 : 7 : 7 : 0.56
+T: 2 1 : 7 : 8 : 0.08
+T: 2 1 : 7 : 15 : 0.01
+T: 2 1 : 8 : 35 : 0.08
+T: 2 1 : 8 : 32 : 0.01
+T: 2 1 : 8 : 7 : 0.08
+T: 2 1 : 8 : 14 : 0.01
+T: 2 1 : 8 : 5 : 0.08
+T: 2 1 : 8 : 8 : 0.64
+T: 2 1 : 8 : 16 : 0.01
+T: 2 1 : 8 : 34 : 0.01
+T: 2 1 : 8 : 17 : 0.08
+T: 2 1 : 9 : 39 : 0.06
+T: 2 1 : 9 : 21 : 0.06
+T: 2 1 : 9 : 36 : 0.03
+T: 2 1 : 9 : 19 : 0.01
+T: 2 1 : 9 : 18 : 0.03
+T: 2 1 : 9 : 1 : 0.06
+T: 2 1 : 9 : 0 : 0.18
+T: 2 1 : 9 : 37 : 0.01
+T: 2 1 : 9 : 3 : 0.36
+T: 2 1 : 9 : 10 : 0.02
+T: 2 1 : 9 : 9 : 0.06
+T: 2 1 : 9 : 12 : 0.12
+T: 2 1 : 10 : 40 : 0.06
+T: 2 1 : 10 : 22 : 0.06
+T: 2 1 : 10 : 37 : 0.02
+T: 2 1 : 10 : 20 : 0.01
+T: 2 1 : 10 : 13 : 0.12
+T: 2 1 : 10 : 11 : 0.02
+T: 2 1 : 10 : 18 : 0.01
+T: 2 1 : 10 : 1 : 0.12
+T: 2 1 : 10 : 0 : 0.06
+T: 2 1 : 10 : 36 : 0.01
+T: 2 1 : 10 : 19 : 0.02
+T: 2 1 : 10 : 2 : 0.06
+T: 2 1 : 10 : 9 : 0.02
+T: 2 1 : 10 : 38 : 0.01
+T: 2 1 : 10 : 4 : 0.36
+T: 2 1 : 10 : 10 : 0.04
+T: 2 1 : 11 : 41 : 0.06
+T: 2 1 : 11 : 38 : 0.03
+T: 2 1 : 11 : 23 : 0.06
+T: 2 1 : 11 : 37 : 0.01
+T: 2 1 : 11 : 20 : 0.03
+T: 2 1 : 11 : 19 : 0.01
+T: 2 1 : 11 : 2 : 0.18
+T: 2 1 : 11 : 1 : 0.06
+T: 2 1 : 11 : 5 : 0.36
+T: 2 1 : 11 : 10 : 0.02
+T: 2 1 : 11 : 11 : 0.06
+T: 2 1 : 11 : 14 : 0.12
+T: 2 1 : 12 : 42 : 0.06
+T: 2 1 : 12 : 36 : 0.01
+T: 2 1 : 12 : 24 : 0.06
+T: 2 1 : 12 : 39 : 0.02
+T: 2 1 : 12 : 22 : 0.01
+T: 2 1 : 12 : 18 : 0.01
+T: 2 1 : 12 : 15 : 0.12
+T: 2 1 : 12 : 13 : 0.02
+T: 2 1 : 12 : 3 : 0.12
+T: 2 1 : 12 : 0 : 0.06
+T: 2 1 : 12 : 21 : 0.02
+T: 2 1 : 12 : 4 : 0.06
+T: 2 1 : 12 : 40 : 0.01
+T: 2 1 : 12 : 6 : 0.36
+T: 2 1 : 12 : 9 : 0.02
+T: 2 1 : 12 : 12 : 0.04
+T: 2 1 : 13 : 43 : 0.06
+T: 2 1 : 13 : 39 : 0.01
+T: 2 1 : 13 : 7 : 0.36
+T: 2 1 : 13 : 5 : 0.06
+T: 2 1 : 13 : 22 : 0.01
+T: 2 1 : 13 : 41 : 0.01
+T: 2 1 : 13 : 4 : 0.06
+T: 2 1 : 13 : 21 : 0.01
+T: 2 1 : 13 : 1 : 0.06
+T: 2 1 : 13 : 10 : 0.02
+T: 2 1 : 13 : 40 : 0.01
+T: 2 1 : 13 : 3 : 0.06
+T: 2 1 : 13 : 37 : 0.01
+T: 2 1 : 13 : 12 : 0.02
+T: 2 1 : 13 : 13 : 0.02
+T: 2 1 : 13 : 14 : 0.02
+T: 2 1 : 13 : 16 : 0.12
+T: 2 1 : 13 : 19 : 0.01
+T: 2 1 : 13 : 23 : 0.01
+T: 2 1 : 13 : 25 : 0.06
+T: 2 1 : 14 : 44 : 0.06
+T: 2 1 : 14 : 41 : 0.02
+T: 2 1 : 14 : 26 : 0.06
+T: 2 1 : 14 : 40 : 0.01
+T: 2 1 : 14 : 23 : 0.02
+T: 2 1 : 14 : 20 : 0.01
+T: 2 1 : 14 : 17 : 0.12
+T: 2 1 : 14 : 14 : 0.04
+T: 2 1 : 14 : 38 : 0.01
+T: 2 1 : 14 : 4 : 0.06
+T: 2 1 : 14 : 11 : 0.02
+T: 2 1 : 14 : 2 : 0.06
+T: 2 1 : 14 : 22 : 0.01
+T: 2 1 : 14 : 5 : 0.12
+T: 2 1 : 14 : 8 : 0.36
+T: 2 1 : 14 : 13 : 0.02
+T: 2 1 : 15 : 43 : 0.01
+T: 2 1 : 15 : 39 : 0.01
+T: 2 1 : 15 : 42 : 0.08
+T: 2 1 : 15 : 25 : 0.01
+T: 2 1 : 15 : 21 : 0.01
+T: 2 1 : 15 : 6 : 0.48
+T: 2 1 : 15 : 3 : 0.06
+T: 2 1 : 15 : 24 : 0.08
+T: 2 1 : 15 : 7 : 0.06
+T: 2 1 : 15 : 12 : 0.02
+T: 2 1 : 15 : 15 : 0.16
+T: 2 1 : 15 : 16 : 0.02
+T: 2 1 : 36 : 66 : 0.06
+T: 2 1 : 36 : 48 : 0.06
+T: 2 1 : 36 : 39 : 0.06
+T: 2 1 : 36 : 37 : 0.01
+T: 2 1 : 36 : 36 : 0.03
+T: 2 1 : 36 : 9 : 0.03
+T: 2 1 : 36 : 64 : 0.01
+T: 2 1 : 36 : 30 : 0.36
+T: 2 1 : 36 : 63 : 0.03
+T: 2 1 : 36 : 46 : 0.01
+T: 2 1 : 36 : 12 : 0.06
+T: 2 1 : 36 : 10 : 0.01
+T: 2 1 : 36 : 27 : 0.18
+T: 2 1 : 36 : 45 : 0.03
+T: 2 1 : 36 : 28 : 0.06
+T: 2 1 : 37 : 67 : 0.06
+T: 2 1 : 37 : 63 : 0.01
+T: 2 1 : 37 : 65 : 0.01
+T: 2 1 : 37 : 28 : 0.12
+T: 2 1 : 37 : 11 : 0.01
+T: 2 1 : 37 : 45 : 0.01
+T: 2 1 : 37 : 64 : 0.02
+T: 2 1 : 37 : 27 : 0.06
+T: 2 1 : 37 : 13 : 0.06
+T: 2 1 : 37 : 10 : 0.02
+T: 2 1 : 37 : 47 : 0.01
+T: 2 1 : 37 : 29 : 0.06
+T: 2 1 : 37 : 9 : 0.01
+T: 2 1 : 37 : 46 : 0.02
+T: 2 1 : 37 : 31 : 0.36
+T: 2 1 : 37 : 36 : 0.01
+T: 2 1 : 37 : 37 : 0.02
+T: 2 1 : 37 : 38 : 0.01
+T: 2 1 : 37 : 40 : 0.06
+T: 2 1 : 37 : 49 : 0.06
+T: 2 1 : 38 : 68 : 0.06
+T: 2 1 : 38 : 50 : 0.06
+T: 2 1 : 38 : 64 : 0.01
+T: 2 1 : 38 : 47 : 0.03
+T: 2 1 : 38 : 41 : 0.06
+T: 2 1 : 38 : 38 : 0.03
+T: 2 1 : 38 : 37 : 0.01
+T: 2 1 : 38 : 32 : 0.36
+T: 2 1 : 38 : 10 : 0.01
+T: 2 1 : 38 : 65 : 0.03
+T: 2 1 : 38 : 14 : 0.06
+T: 2 1 : 38 : 11 : 0.03
+T: 2 1 : 38 : 28 : 0.06
+T: 2 1 : 38 : 46 : 0.01
+T: 2 1 : 38 : 29 : 0.18
+T: 2 1 : 39 : 69 : 0.06
+T: 2 1 : 39 : 66 : 0.02
+T: 2 1 : 39 : 63 : 0.01
+T: 2 1 : 39 : 15 : 0.06
+T: 2 1 : 39 : 27 : 0.06
+T: 2 1 : 39 : 13 : 0.01
+T: 2 1 : 39 : 67 : 0.01
+T: 2 1 : 39 : 30 : 0.12
+T: 2 1 : 39 : 9 : 0.01
+T: 2 1 : 39 : 49 : 0.01
+T: 2 1 : 39 : 12 : 0.02
+T: 2 1 : 39 : 31 : 0.06
+T: 2 1 : 39 : 48 : 0.02
+T: 2 1 : 39 : 33 : 0.36
+T: 2 1 : 39 : 36 : 0.01
+T: 2 1 : 39 : 39 : 0.02
+T: 2 1 : 39 : 40 : 0.01
+T: 2 1 : 39 : 42 : 0.06
+T: 2 1 : 39 : 45 : 0.01
+T: 2 1 : 39 : 51 : 0.06
+T: 2 1 : 40 : 70 : 0.06
+T: 2 1 : 40 : 66 : 0.01
+T: 2 1 : 40 : 64 : 0.01
+T: 2 1 : 40 : 52 : 0.06
+T: 2 1 : 40 : 48 : 0.01
+T: 2 1 : 40 : 16 : 0.06
+T: 2 1 : 40 : 28 : 0.06
+T: 2 1 : 40 : 14 : 0.01
+T: 2 1 : 40 : 68 : 0.01
+T: 2 1 : 40 : 31 : 0.06
+T: 2 1 : 40 : 50 : 0.01
+T: 2 1 : 40 : 13 : 0.01
+T: 2 1 : 40 : 67 : 0.01
+T: 2 1 : 40 : 30 : 0.06
+T: 2 1 : 40 : 10 : 0.01
+T: 2 1 : 40 : 49 : 0.01
+T: 2 1 : 40 : 12 : 0.01
+T: 2 1 : 40 : 46 : 0.01
+T: 2 1 : 40 : 32 : 0.06
+T: 2 1 : 40 : 34 : 0.36
+T: 2 1 : 40 : 37 : 0.01
+T: 2 1 : 40 : 39 : 0.01
+T: 2 1 : 40 : 40 : 0.01
+T: 2 1 : 40 : 41 : 0.01
+T: 2 1 : 40 : 43 : 0.06
+T: 2 1 : 41 : 71 : 0.06
+T: 2 1 : 41 : 67 : 0.01
+T: 2 1 : 41 : 65 : 0.01
+T: 2 1 : 41 : 29 : 0.06
+T: 2 1 : 41 : 68 : 0.02
+T: 2 1 : 41 : 31 : 0.06
+T: 2 1 : 41 : 14 : 0.02
+T: 2 1 : 41 : 17 : 0.06
+T: 2 1 : 41 : 11 : 0.01
+T: 2 1 : 41 : 47 : 0.01
+T: 2 1 : 41 : 32 : 0.12
+T: 2 1 : 41 : 49 : 0.01
+T: 2 1 : 41 : 35 : 0.36
+T: 2 1 : 41 : 38 : 0.01
+T: 2 1 : 41 : 40 : 0.01
+T: 2 1 : 41 : 41 : 0.02
+T: 2 1 : 41 : 44 : 0.06
+T: 2 1 : 41 : 13 : 0.01
+T: 2 1 : 41 : 50 : 0.02
+T: 2 1 : 41 : 53 : 0.06
+T: 2 1 : 42 : 70 : 0.01
+T: 2 1 : 42 : 69 : 0.08
+T: 2 1 : 42 : 52 : 0.01
+T: 2 1 : 42 : 48 : 0.01
+T: 2 1 : 42 : 43 : 0.01
+T: 2 1 : 42 : 42 : 0.08
+T: 2 1 : 42 : 39 : 0.01
+T: 2 1 : 42 : 66 : 0.01
+T: 2 1 : 42 : 15 : 0.08
+T: 2 1 : 42 : 12 : 0.01
+T: 2 1 : 42 : 33 : 0.48
+T: 2 1 : 42 : 16 : 0.01
+T: 2 1 : 42 : 30 : 0.06
+T: 2 1 : 42 : 51 : 0.08
+T: 2 1 : 42 : 34 : 0.06
+T: 2 1 : 43 : 69 : 0.01
+T: 2 1 : 43 : 67 : 0.01
+T: 2 1 : 43 : 70 : 0.07
+T: 2 1 : 43 : 33 : 0.06
+T: 2 1 : 43 : 31 : 0.06
+T: 2 1 : 43 : 17 : 0.01
+T: 2 1 : 43 : 71 : 0.01
+T: 2 1 : 43 : 34 : 0.42
+T: 2 1 : 43 : 51 : 0.01
+T: 2 1 : 43 : 13 : 0.01
+T: 2 1 : 43 : 49 : 0.01
+T: 2 1 : 43 : 35 : 0.06
+T: 2 1 : 43 : 15 : 0.01
+T: 2 1 : 43 : 52 : 0.07
+T: 2 1 : 43 : 40 : 0.01
+T: 2 1 : 43 : 42 : 0.01
+T: 2 1 : 43 : 43 : 0.07
+T: 2 1 : 43 : 44 : 0.01
+T: 2 1 : 43 : 16 : 0.07
+T: 2 1 : 43 : 53 : 0.01
+T: 2 1 : 44 : 71 : 0.08
+T: 2 1 : 44 : 70 : 0.01
+T: 2 1 : 44 : 53 : 0.08
+T: 2 1 : 44 : 44 : 0.08
+T: 2 1 : 44 : 43 : 0.01
+T: 2 1 : 44 : 41 : 0.01
+T: 2 1 : 44 : 50 : 0.01
+T: 2 1 : 44 : 16 : 0.01
+T: 2 1 : 44 : 14 : 0.01
+T: 2 1 : 44 : 52 : 0.01
+T: 2 1 : 44 : 35 : 0.48
+T: 2 1 : 44 : 32 : 0.06
+T: 2 1 : 44 : 68 : 0.01
+T: 2 1 : 44 : 17 : 0.08
+T: 2 1 : 44 : 34 : 0.06
+T: 2 1 : 45 : 75 : 0.06
+T: 2 1 : 45 : 48 : 0.12
+T: 2 1 : 45 : 46 : 0.02
+T: 2 1 : 45 : 45 : 0.06
+T: 2 1 : 45 : 18 : 0.03
+T: 2 1 : 45 : 73 : 0.01
+T: 2 1 : 45 : 39 : 0.36
+T: 2 1 : 45 : 72 : 0.03
+T: 2 1 : 45 : 21 : 0.06
+T: 2 1 : 45 : 19 : 0.01
+T: 2 1 : 45 : 36 : 0.18
+T: 2 1 : 45 : 37 : 0.06
+T: 2 1 : 46 : 76 : 0.06
+T: 2 1 : 46 : 49 : 0.12
+T: 2 1 : 46 : 47 : 0.02
+T: 2 1 : 46 : 46 : 0.04
+T: 2 1 : 46 : 45 : 0.02
+T: 2 1 : 46 : 74 : 0.01
+T: 2 1 : 46 : 40 : 0.36
+T: 2 1 : 46 : 72 : 0.01
+T: 2 1 : 46 : 38 : 0.06
+T: 2 1 : 46 : 18 : 0.01
+T: 2 1 : 46 : 73 : 0.02
+T: 2 1 : 46 : 22 : 0.06
+T: 2 1 : 46 : 19 : 0.02
+T: 2 1 : 46 : 36 : 0.06
+T: 2 1 : 46 : 20 : 0.01
+T: 2 1 : 46 : 37 : 0.12
+T: 2 1 : 47 : 77 : 0.06
+T: 2 1 : 47 : 73 : 0.01
+T: 2 1 : 47 : 50 : 0.12
+T: 2 1 : 47 : 47 : 0.06
+T: 2 1 : 47 : 46 : 0.02
+T: 2 1 : 47 : 41 : 0.36
+T: 2 1 : 47 : 19 : 0.01
+T: 2 1 : 47 : 74 : 0.03
+T: 2 1 : 47 : 23 : 0.06
+T: 2 1 : 47 : 20 : 0.03
+T: 2 1 : 47 : 37 : 0.06
+T: 2 1 : 47 : 38 : 0.18
+T: 2 1 : 48 : 78 : 0.06
+T: 2 1 : 48 : 51 : 0.12
+T: 2 1 : 48 : 49 : 0.02
+T: 2 1 : 48 : 48 : 0.04
+T: 2 1 : 48 : 45 : 0.02
+T: 2 1 : 48 : 76 : 0.01
+T: 2 1 : 48 : 42 : 0.36
+T: 2 1 : 48 : 40 : 0.06
+T: 2 1 : 48 : 72 : 0.01
+T: 2 1 : 48 : 21 : 0.02
+T: 2 1 : 48 : 18 : 0.01
+T: 2 1 : 48 : 39 : 0.12
+T: 2 1 : 48 : 22 : 0.01
+T: 2 1 : 48 : 36 : 0.06
+T: 2 1 : 48 : 75 : 0.02
+T: 2 1 : 48 : 24 : 0.06
+T: 2 1 : 49 : 79 : 0.06
+T: 2 1 : 49 : 75 : 0.01
+T: 2 1 : 49 : 25 : 0.06
+T: 2 1 : 49 : 37 : 0.06
+T: 2 1 : 49 : 23 : 0.01
+T: 2 1 : 49 : 77 : 0.01
+T: 2 1 : 49 : 40 : 0.06
+T: 2 1 : 49 : 22 : 0.01
+T: 2 1 : 49 : 76 : 0.01
+T: 2 1 : 49 : 39 : 0.06
+T: 2 1 : 49 : 73 : 0.01
+T: 2 1 : 49 : 19 : 0.01
+T: 2 1 : 49 : 21 : 0.01
+T: 2 1 : 49 : 41 : 0.06
+T: 2 1 : 49 : 43 : 0.36
+T: 2 1 : 49 : 46 : 0.02
+T: 2 1 : 49 : 48 : 0.02
+T: 2 1 : 49 : 49 : 0.02
+T: 2 1 : 49 : 50 : 0.02
+T: 2 1 : 49 : 52 : 0.12
+T: 2 1 : 50 : 80 : 0.06
+T: 2 1 : 50 : 76 : 0.01
+T: 2 1 : 50 : 53 : 0.12
+T: 2 1 : 50 : 50 : 0.04
+T: 2 1 : 50 : 49 : 0.02
+T: 2 1 : 50 : 47 : 0.02
+T: 2 1 : 50 : 44 : 0.36
+T: 2 1 : 50 : 41 : 0.12
+T: 2 1 : 50 : 22 : 0.01
+T: 2 1 : 50 : 20 : 0.01
+T: 2 1 : 50 : 77 : 0.02
+T: 2 1 : 50 : 26 : 0.06
+T: 2 1 : 50 : 74 : 0.01
+T: 2 1 : 50 : 23 : 0.02
+T: 2 1 : 50 : 40 : 0.06
+T: 2 1 : 50 : 38 : 0.06
+T: 2 1 : 51 : 79 : 0.01
+T: 2 1 : 51 : 78 : 0.08
+T: 2 1 : 51 : 52 : 0.02
+T: 2 1 : 51 : 51 : 0.16
+T: 2 1 : 51 : 48 : 0.02
+T: 2 1 : 51 : 75 : 0.01
+T: 2 1 : 51 : 24 : 0.08
+T: 2 1 : 51 : 21 : 0.01
+T: 2 1 : 51 : 42 : 0.48
+T: 2 1 : 51 : 25 : 0.01
+T: 2 1 : 51 : 39 : 0.06
+T: 2 1 : 51 : 43 : 0.06
+T: 2 1 : 52 : 80 : 0.01
+T: 2 1 : 52 : 79 : 0.07
+T: 2 1 : 52 : 53 : 0.02
+T: 2 1 : 52 : 52 : 0.14
+T: 2 1 : 52 : 51 : 0.02
+T: 2 1 : 52 : 49 : 0.02
+T: 2 1 : 52 : 78 : 0.01
+T: 2 1 : 52 : 44 : 0.06
+T: 2 1 : 52 : 24 : 0.01
+T: 2 1 : 52 : 22 : 0.01
+T: 2 1 : 52 : 43 : 0.42
+T: 2 1 : 52 : 26 : 0.01
+T: 2 1 : 52 : 40 : 0.06
+T: 2 1 : 52 : 76 : 0.01
+T: 2 1 : 52 : 25 : 0.07
+T: 2 1 : 52 : 42 : 0.06
+T: 2 1 : 53 : 80 : 0.08
+T: 2 1 : 53 : 79 : 0.01
+T: 2 1 : 53 : 53 : 0.16
+T: 2 1 : 53 : 52 : 0.02
+T: 2 1 : 53 : 50 : 0.02
+T: 2 1 : 53 : 25 : 0.01
+T: 2 1 : 53 : 23 : 0.01
+T: 2 1 : 53 : 44 : 0.48
+T: 2 1 : 53 : 41 : 0.06
+T: 2 1 : 53 : 77 : 0.01
+T: 2 1 : 53 : 26 : 0.08
+T: 2 1 : 53 : 43 : 0.06
+T: 2 1 : 54 : 66 : 0.06
+T: 2 1 : 54 : 63 : 0.03
+T: 2 1 : 54 : 28 : 0.01
+T: 2 1 : 54 : 27 : 0.03
+T: 2 1 : 54 : 55 : 0.08
+T: 2 1 : 54 : 64 : 0.01
+T: 2 1 : 54 : 30 : 0.06
+T: 2 1 : 54 : 54 : 0.24
+T: 2 1 : 54 : 57 : 0.48
+T: 2 1 : 55 : 67 : 0.06
+T: 2 1 : 55 : 64 : 0.02
+T: 2 1 : 55 : 58 : 0.48
+T: 2 1 : 55 : 56 : 0.08
+T: 2 1 : 55 : 28 : 0.02
+T: 2 1 : 55 : 27 : 0.01
+T: 2 1 : 55 : 55 : 0.16
+T: 2 1 : 55 : 63 : 0.01
+T: 2 1 : 55 : 29 : 0.01
+T: 2 1 : 55 : 65 : 0.01
+T: 2 1 : 55 : 31 : 0.06
+T: 2 1 : 55 : 54 : 0.08
+T: 2 1 : 56 : 68 : 0.06
+T: 2 1 : 56 : 65 : 0.03
+T: 2 1 : 56 : 64 : 0.01
+T: 2 1 : 56 : 29 : 0.03
+T: 2 1 : 56 : 28 : 0.01
+T: 2 1 : 56 : 56 : 0.24
+T: 2 1 : 56 : 32 : 0.06
+T: 2 1 : 56 : 55 : 0.08
+T: 2 1 : 56 : 59 : 0.48
+T: 2 1 : 57 : 69 : 0.06
+T: 2 1 : 57 : 66 : 0.02
+T: 2 1 : 57 : 63 : 0.01
+T: 2 1 : 57 : 60 : 0.48
+T: 2 1 : 57 : 58 : 0.08
+T: 2 1 : 57 : 30 : 0.02
+T: 2 1 : 57 : 27 : 0.01
+T: 2 1 : 57 : 31 : 0.01
+T: 2 1 : 57 : 67 : 0.01
+T: 2 1 : 57 : 33 : 0.06
+T: 2 1 : 57 : 54 : 0.08
+T: 2 1 : 57 : 57 : 0.16
+T: 2 1 : 58 : 70 : 0.06
+T: 2 1 : 58 : 67 : 0.01
+T: 2 1 : 58 : 61 : 0.48
+T: 2 1 : 58 : 59 : 0.08
+T: 2 1 : 58 : 58 : 0.08
+T: 2 1 : 58 : 57 : 0.08
+T: 2 1 : 58 : 64 : 0.01
+T: 2 1 : 58 : 30 : 0.01
+T: 2 1 : 58 : 28 : 0.01
+T: 2 1 : 58 : 31 : 0.01
+T: 2 1 : 58 : 66 : 0.01
+T: 2 1 : 58 : 32 : 0.01
+T: 2 1 : 58 : 68 : 0.01
+T: 2 1 : 58 : 34 : 0.06
+T: 2 1 : 58 : 55 : 0.08
+T: 2 1 : 59 : 71 : 0.06
+T: 2 1 : 59 : 68 : 0.02
+T: 2 1 : 59 : 67 : 0.01
+T: 2 1 : 59 : 62 : 0.48
+T: 2 1 : 59 : 59 : 0.16
+T: 2 1 : 59 : 65 : 0.01
+T: 2 1 : 59 : 31 : 0.01
+T: 2 1 : 59 : 29 : 0.01
+T: 2 1 : 59 : 32 : 0.02
+T: 2 1 : 59 : 35 : 0.06
+T: 2 1 : 59 : 56 : 0.08
+T: 2 1 : 59 : 58 : 0.08
+T: 2 1 : 60 : 70 : 0.01
+T: 2 1 : 60 : 69 : 0.08
+T: 2 1 : 60 : 66 : 0.01
+T: 2 1 : 60 : 33 : 0.08
+T: 2 1 : 60 : 61 : 0.08
+T: 2 1 : 60 : 30 : 0.01
+T: 2 1 : 60 : 34 : 0.01
+T: 2 1 : 60 : 57 : 0.08
+T: 2 1 : 60 : 60 : 0.64
+T: 2 1 : 61 : 71 : 0.01
+T: 2 1 : 61 : 70 : 0.07
+T: 2 1 : 61 : 62 : 0.08
+T: 2 1 : 61 : 61 : 0.56
+T: 2 1 : 61 : 67 : 0.01
+T: 2 1 : 61 : 33 : 0.01
+T: 2 1 : 61 : 31 : 0.01
+T: 2 1 : 61 : 34 : 0.07
+T: 2 1 : 61 : 69 : 0.01
+T: 2 1 : 61 : 35 : 0.01
+T: 2 1 : 61 : 58 : 0.08
+T: 2 1 : 61 : 60 : 0.08
+T: 2 1 : 62 : 71 : 0.08
+T: 2 1 : 62 : 70 : 0.01
+T: 2 1 : 62 : 68 : 0.01
+T: 2 1 : 62 : 34 : 0.01
+T: 2 1 : 62 : 62 : 0.64
+T: 2 1 : 62 : 32 : 0.01
+T: 2 1 : 62 : 35 : 0.08
+T: 2 1 : 62 : 59 : 0.08
+T: 2 1 : 62 : 61 : 0.08
+T: 2 1 : 63 : 75 : 0.06
+T: 2 1 : 63 : 66 : 0.12
+T: 2 1 : 63 : 64 : 0.02
+T: 2 1 : 63 : 63 : 0.06
+T: 2 1 : 63 : 36 : 0.03
+T: 2 1 : 63 : 57 : 0.36
+T: 2 1 : 63 : 73 : 0.01
+T: 2 1 : 63 : 39 : 0.06
+T: 2 1 : 63 : 37 : 0.01
+T: 2 1 : 63 : 54 : 0.18
+T: 2 1 : 63 : 72 : 0.03
+T: 2 1 : 63 : 55 : 0.06
+T: 2 1 : 64 : 76 : 0.06
+T: 2 1 : 64 : 67 : 0.12
+T: 2 1 : 64 : 65 : 0.02
+T: 2 1 : 64 : 64 : 0.04
+T: 2 1 : 64 : 63 : 0.02
+T: 2 1 : 64 : 58 : 0.36
+T: 2 1 : 64 : 73 : 0.02
+T: 2 1 : 64 : 56 : 0.06
+T: 2 1 : 64 : 36 : 0.01
+T: 2 1 : 64 : 74 : 0.01
+T: 2 1 : 64 : 40 : 0.06
+T: 2 1 : 64 : 37 : 0.02
+T: 2 1 : 64 : 54 : 0.06
+T: 2 1 : 64 : 72 : 0.01
+T: 2 1 : 64 : 38 : 0.01
+T: 2 1 : 64 : 55 : 0.12
+T: 2 1 : 65 : 77 : 0.06
+T: 2 1 : 65 : 74 : 0.03
+T: 2 1 : 65 : 68 : 0.12
+T: 2 1 : 65 : 65 : 0.06
+T: 2 1 : 65 : 64 : 0.02
+T: 2 1 : 65 : 59 : 0.36
+T: 2 1 : 65 : 37 : 0.01
+T: 2 1 : 65 : 41 : 0.06
+T: 2 1 : 65 : 38 : 0.03
+T: 2 1 : 65 : 55 : 0.06
+T: 2 1 : 65 : 73 : 0.01
+T: 2 1 : 65 : 56 : 0.18
+T: 2 1 : 66 : 78 : 0.06
+T: 2 1 : 66 : 72 : 0.01
+T: 2 1 : 66 : 69 : 0.12
+T: 2 1 : 66 : 67 : 0.02
+T: 2 1 : 66 : 66 : 0.04
+T: 2 1 : 66 : 63 : 0.02
+T: 2 1 : 66 : 60 : 0.36
+T: 2 1 : 66 : 75 : 0.02
+T: 2 1 : 66 : 58 : 0.06
+T: 2 1 : 66 : 39 : 0.02
+T: 2 1 : 66 : 36 : 0.01
+T: 2 1 : 66 : 57 : 0.12
+T: 2 1 : 66 : 40 : 0.01
+T: 2 1 : 66 : 54 : 0.06
+T: 2 1 : 66 : 76 : 0.01
+T: 2 1 : 66 : 42 : 0.06
+T: 2 1 : 67 : 79 : 0.06
+T: 2 1 : 67 : 75 : 0.01
+T: 2 1 : 67 : 43 : 0.06
+T: 2 1 : 67 : 55 : 0.06
+T: 2 1 : 67 : 41 : 0.01
+T: 2 1 : 67 : 58 : 0.06
+T: 2 1 : 67 : 77 : 0.01
+T: 2 1 : 67 : 40 : 0.01
+T: 2 1 : 67 : 57 : 0.06
+T: 2 1 : 67 : 37 : 0.01
+T: 2 1 : 67 : 76 : 0.01
+T: 2 1 : 67 : 39 : 0.01
+T: 2 1 : 67 : 73 : 0.01
+T: 2 1 : 67 : 59 : 0.06
+T: 2 1 : 67 : 61 : 0.36
+T: 2 1 : 67 : 64 : 0.02
+T: 2 1 : 67 : 66 : 0.02
+T: 2 1 : 67 : 67 : 0.02
+T: 2 1 : 67 : 68 : 0.02
+T: 2 1 : 67 : 70 : 0.12
+T: 2 1 : 68 : 80 : 0.06
+T: 2 1 : 68 : 77 : 0.02
+T: 2 1 : 68 : 71 : 0.12
+T: 2 1 : 68 : 68 : 0.04
+T: 2 1 : 68 : 67 : 0.02
+T: 2 1 : 68 : 65 : 0.02
+T: 2 1 : 68 : 62 : 0.36
+T: 2 1 : 68 : 76 : 0.01
+T: 2 1 : 68 : 59 : 0.12
+T: 2 1 : 68 : 74 : 0.01
+T: 2 1 : 68 : 40 : 0.01
+T: 2 1 : 68 : 38 : 0.01
+T: 2 1 : 68 : 44 : 0.06
+T: 2 1 : 68 : 41 : 0.02
+T: 2 1 : 68 : 58 : 0.06
+T: 2 1 : 68 : 56 : 0.06
+T: 2 1 : 69 : 79 : 0.01
+T: 2 1 : 69 : 75 : 0.01
+T: 2 1 : 69 : 70 : 0.02
+T: 2 1 : 69 : 69 : 0.16
+T: 2 1 : 69 : 66 : 0.02
+T: 2 1 : 69 : 42 : 0.08
+T: 2 1 : 69 : 39 : 0.01
+T: 2 1 : 69 : 60 : 0.48
+T: 2 1 : 69 : 43 : 0.01
+T: 2 1 : 69 : 57 : 0.06
+T: 2 1 : 69 : 78 : 0.08
+T: 2 1 : 69 : 61 : 0.06
+T: 2 1 : 70 : 80 : 0.01
+T: 2 1 : 70 : 71 : 0.02
+T: 2 1 : 70 : 70 : 0.14
+T: 2 1 : 70 : 69 : 0.02
+T: 2 1 : 70 : 67 : 0.02
+T: 2 1 : 70 : 79 : 0.07
+T: 2 1 : 70 : 62 : 0.06
+T: 2 1 : 70 : 76 : 0.01
+T: 2 1 : 70 : 42 : 0.01
+T: 2 1 : 70 : 40 : 0.01
+T: 2 1 : 70 : 78 : 0.01
+T: 2 1 : 70 : 61 : 0.42
+T: 2 1 : 70 : 44 : 0.01
+T: 2 1 : 70 : 58 : 0.06
+T: 2 1 : 70 : 43 : 0.07
+T: 2 1 : 70 : 60 : 0.06
+T: 2 1 : 71 : 80 : 0.08
+T: 2 1 : 71 : 71 : 0.16
+T: 2 1 : 71 : 70 : 0.02
+T: 2 1 : 71 : 68 : 0.02
+T: 2 1 : 71 : 77 : 0.01
+T: 2 1 : 71 : 43 : 0.01
+T: 2 1 : 71 : 41 : 0.01
+T: 2 1 : 71 : 79 : 0.01
+T: 2 1 : 71 : 62 : 0.48
+T: 2 1 : 71 : 59 : 0.06
+T: 2 1 : 71 : 44 : 0.08
+T: 2 1 : 71 : 61 : 0.06
+T: 2 1 : 72 : 75 : 0.18
+T: 2 1 : 72 : 73 : 0.03
+T: 2 1 : 72 : 72 : 0.09
+T: 2 1 : 72 : 45 : 0.03
+T: 2 1 : 72 : 66 : 0.36
+T: 2 1 : 72 : 48 : 0.06
+T: 2 1 : 72 : 46 : 0.01
+T: 2 1 : 72 : 63 : 0.18
+T: 2 1 : 72 : 64 : 0.06
+T: 2 1 : 73 : 76 : 0.18
+T: 2 1 : 73 : 74 : 0.03
+T: 2 1 : 73 : 73 : 0.06
+T: 2 1 : 73 : 72 : 0.03
+T: 2 1 : 73 : 67 : 0.36
+T: 2 1 : 73 : 65 : 0.06
+T: 2 1 : 73 : 45 : 0.01
+T: 2 1 : 73 : 49 : 0.06
+T: 2 1 : 73 : 46 : 0.02
+T: 2 1 : 73 : 63 : 0.06
+T: 2 1 : 73 : 47 : 0.01
+T: 2 1 : 73 : 64 : 0.12
+T: 2 1 : 74 : 77 : 0.18
+T: 2 1 : 74 : 74 : 0.09
+T: 2 1 : 74 : 73 : 0.03
+T: 2 1 : 74 : 68 : 0.36
+T: 2 1 : 74 : 46 : 0.01
+T: 2 1 : 74 : 50 : 0.06
+T: 2 1 : 74 : 47 : 0.03
+T: 2 1 : 74 : 64 : 0.06
+T: 2 1 : 74 : 65 : 0.18
+T: 2 1 : 75 : 78 : 0.18
+T: 2 1 : 75 : 76 : 0.03
+T: 2 1 : 75 : 75 : 0.06
+T: 2 1 : 75 : 72 : 0.03
+T: 2 1 : 75 : 69 : 0.36
+T: 2 1 : 75 : 67 : 0.06
+T: 2 1 : 75 : 48 : 0.02
+T: 2 1 : 75 : 45 : 0.01
+T: 2 1 : 75 : 66 : 0.12
+T: 2 1 : 75 : 49 : 0.01
+T: 2 1 : 75 : 63 : 0.06
+T: 2 1 : 75 : 51 : 0.06
+T: 2 1 : 76 : 79 : 0.18
+T: 2 1 : 76 : 77 : 0.03
+T: 2 1 : 76 : 76 : 0.03
+T: 2 1 : 76 : 75 : 0.03
+T: 2 1 : 76 : 73 : 0.03
+T: 2 1 : 76 : 70 : 0.36
+T: 2 1 : 76 : 68 : 0.06
+T: 2 1 : 76 : 48 : 0.01
+T: 2 1 : 76 : 46 : 0.01
+T: 2 1 : 76 : 66 : 0.06
+T: 2 1 : 76 : 49 : 0.01
+T: 2 1 : 76 : 67 : 0.06
+T: 2 1 : 76 : 50 : 0.01
+T: 2 1 : 76 : 64 : 0.06
+T: 2 1 : 76 : 52 : 0.06
+T: 2 1 : 77 : 80 : 0.18
+T: 2 1 : 77 : 77 : 0.06
+T: 2 1 : 77 : 76 : 0.03
+T: 2 1 : 77 : 74 : 0.03
+T: 2 1 : 77 : 71 : 0.36
+T: 2 1 : 77 : 68 : 0.12
+T: 2 1 : 77 : 49 : 0.01
+T: 2 1 : 77 : 47 : 0.01
+T: 2 1 : 77 : 53 : 0.06
+T: 2 1 : 77 : 50 : 0.02
+T: 2 1 : 77 : 67 : 0.06
+T: 2 1 : 77 : 65 : 0.06
+T: 2 2 : 80 : 80 : 0.09
+T: 2 2 : 80 : 79 : 0.18
+T: 2 2 : 80 : 77 : 0.03
+T: 2 2 : 80 : 52 : 0.06
+T: 2 2 : 80 : 50 : 0.01
+T: 2 2 : 80 : 71 : 0.18
+T: 2 2 : 80 : 68 : 0.06
+T: 2 2 : 80 : 53 : 0.03
+T: 2 2 : 80 : 70 : 0.36
+T: 2 2 : 79 : 80 : 0.03
+T: 2 2 : 79 : 79 : 0.06
+T: 2 2 : 79 : 78 : 0.18
+T: 2 2 : 79 : 76 : 0.03
+T: 2 2 : 79 : 71 : 0.06
+T: 2 2 : 79 : 51 : 0.06
+T: 2 2 : 79 : 49 : 0.01
+T: 2 2 : 79 : 70 : 0.12
+T: 2 2 : 79 : 53 : 0.01
+T: 2 2 : 79 : 67 : 0.06
+T: 2 2 : 79 : 52 : 0.02
+T: 2 2 : 79 : 69 : 0.36
+T: 2 2 : 78 : 79 : 0.03
+T: 2 2 : 78 : 78 : 0.24
+T: 2 2 : 78 : 75 : 0.03
+T: 2 2 : 78 : 51 : 0.08
+T: 2 2 : 78 : 48 : 0.01
+T: 2 2 : 78 : 69 : 0.48
+T: 2 2 : 78 : 52 : 0.01
+T: 2 2 : 78 : 66 : 0.06
+T: 2 2 : 78 : 70 : 0.06
+T: 2 2 : 35 : 62 : 0.03
+T: 2 2 : 35 : 61 : 0.06
+T: 2 2 : 35 : 44 : 0.03
+T: 2 2 : 35 : 43 : 0.06
+T: 2 2 : 35 : 41 : 0.01
+T: 2 2 : 35 : 7 : 0.06
+T: 2 2 : 35 : 35 : 0.21
+T: 2 2 : 35 : 5 : 0.01
+T: 2 2 : 35 : 59 : 0.01
+T: 2 2 : 35 : 8 : 0.03
+T: 2 2 : 35 : 32 : 0.07
+T: 2 2 : 35 : 34 : 0.42
+T: 2 2 : 34 : 62 : 0.01
+T: 2 2 : 34 : 61 : 0.02
+T: 2 2 : 34 : 44 : 0.01
+T: 2 2 : 34 : 60 : 0.06
+T: 2 2 : 34 : 43 : 0.02
+T: 2 2 : 34 : 35 : 0.07
+T: 2 2 : 34 : 34 : 0.14
+T: 2 2 : 34 : 40 : 0.01
+T: 2 2 : 34 : 6 : 0.06
+T: 2 2 : 34 : 4 : 0.01
+T: 2 2 : 34 : 58 : 0.01
+T: 2 2 : 34 : 7 : 0.02
+T: 2 2 : 34 : 42 : 0.06
+T: 2 2 : 34 : 8 : 0.01
+T: 2 2 : 34 : 31 : 0.07
+T: 2 2 : 34 : 33 : 0.42
+T: 2 2 : 33 : 61 : 0.01
+T: 2 2 : 33 : 60 : 0.08
+T: 2 2 : 33 : 43 : 0.01
+T: 2 2 : 33 : 42 : 0.08
+T: 2 2 : 33 : 39 : 0.01
+T: 2 2 : 33 : 57 : 0.01
+T: 2 2 : 33 : 6 : 0.08
+T: 2 2 : 33 : 34 : 0.07
+T: 2 2 : 33 : 3 : 0.01
+T: 2 2 : 33 : 7 : 0.01
+T: 2 2 : 33 : 30 : 0.07
+T: 2 2 : 33 : 33 : 0.56
+T: 2 2 : 32 : 62 : 0.01
+T: 2 2 : 32 : 44 : 0.01
+T: 2 2 : 32 : 58 : 0.06
+T: 2 2 : 32 : 41 : 0.02
+T: 2 2 : 32 : 40 : 0.06
+T: 2 2 : 32 : 35 : 0.07
+T: 2 2 : 32 : 32 : 0.14
+T: 2 2 : 32 : 38 : 0.01
+T: 2 2 : 32 : 4 : 0.06
+T: 2 2 : 32 : 2 : 0.01
+T: 2 2 : 32 : 56 : 0.01
+T: 2 2 : 32 : 5 : 0.02
+T: 2 2 : 32 : 59 : 0.02
+T: 2 2 : 32 : 8 : 0.01
+T: 2 2 : 32 : 29 : 0.07
+T: 2 2 : 32 : 31 : 0.42
+T: 2 2 : 31 : 61 : 0.01
+T: 2 2 : 31 : 59 : 0.01
+T: 2 2 : 31 : 58 : 0.01
+T: 2 2 : 31 : 57 : 0.06
+T: 2 2 : 31 : 28 : 0.07
+T: 2 2 : 31 : 7 : 0.01
+T: 2 2 : 31 : 5 : 0.01
+T: 2 2 : 31 : 39 : 0.06
+T: 2 2 : 31 : 41 : 0.01
+T: 2 2 : 31 : 4 : 0.01
+T: 2 2 : 31 : 55 : 0.01
+T: 2 2 : 31 : 1 : 0.01
+T: 2 2 : 31 : 37 : 0.01
+T: 2 2 : 31 : 30 : 0.42
+T: 2 2 : 31 : 31 : 0.07
+T: 2 2 : 31 : 32 : 0.07
+T: 2 2 : 31 : 34 : 0.07
+T: 2 2 : 31 : 3 : 0.06
+T: 2 2 : 31 : 40 : 0.01
+T: 2 2 : 31 : 43 : 0.01
+T: 2 2 : 30 : 60 : 0.01
+T: 2 2 : 30 : 58 : 0.01
+T: 2 2 : 30 : 42 : 0.01
+T: 2 2 : 30 : 39 : 0.07
+T: 2 2 : 30 : 36 : 0.01
+T: 2 2 : 30 : 33 : 0.07
+T: 2 2 : 30 : 31 : 0.07
+T: 2 2 : 30 : 54 : 0.01
+T: 2 2 : 30 : 3 : 0.07
+T: 2 2 : 30 : 0 : 0.01
+T: 2 2 : 30 : 4 : 0.01
+T: 2 2 : 30 : 57 : 0.07
+T: 2 2 : 30 : 40 : 0.01
+T: 2 2 : 30 : 6 : 0.01
+T: 2 2 : 30 : 27 : 0.07
+T: 2 2 : 30 : 30 : 0.49
+T: 2 2 : 29 : 59 : 0.01
+T: 2 2 : 29 : 41 : 0.01
+T: 2 2 : 29 : 55 : 0.06
+T: 2 2 : 29 : 38 : 0.03
+T: 2 2 : 29 : 37 : 0.06
+T: 2 2 : 29 : 2 : 0.03
+T: 2 2 : 29 : 1 : 0.06
+T: 2 2 : 29 : 29 : 0.21
+T: 2 2 : 29 : 56 : 0.03
+T: 2 2 : 29 : 5 : 0.01
+T: 2 2 : 29 : 28 : 0.42
+T: 2 2 : 29 : 32 : 0.07
+T: 2 2 : 28 : 58 : 0.01
+T: 2 2 : 28 : 56 : 0.01
+T: 2 2 : 28 : 40 : 0.01
+T: 2 2 : 28 : 54 : 0.06
+T: 2 2 : 28 : 37 : 0.02
+T: 2 2 : 28 : 31 : 0.07
+T: 2 2 : 28 : 29 : 0.07
+T: 2 2 : 28 : 1 : 0.02
+T: 2 2 : 28 : 0 : 0.06
+T: 2 2 : 28 : 28 : 0.14
+T: 2 2 : 28 : 36 : 0.06
+T: 2 2 : 28 : 2 : 0.01
+T: 2 2 : 28 : 55 : 0.02
+T: 2 2 : 28 : 38 : 0.01
+T: 2 2 : 28 : 4 : 0.01
+T: 2 2 : 28 : 27 : 0.42
+T: 2 2 : 27 : 57 : 0.01
+T: 2 2 : 27 : 55 : 0.01
+T: 2 2 : 27 : 39 : 0.01
+T: 2 2 : 27 : 36 : 0.08
+T: 2 2 : 27 : 1 : 0.01
+T: 2 2 : 27 : 0 : 0.08
+T: 2 2 : 27 : 28 : 0.07
+T: 2 2 : 27 : 54 : 0.08
+T: 2 2 : 27 : 37 : 0.01
+T: 2 2 : 27 : 3 : 0.01
+T: 2 2 : 27 : 27 : 0.56
+T: 2 2 : 27 : 30 : 0.07
+T: 2 2 : 26 : 53 : 0.03
+T: 2 2 : 26 : 52 : 0.06
+T: 2 2 : 26 : 50 : 0.01
+T: 2 2 : 26 : 16 : 0.36
+T: 2 2 : 26 : 23 : 0.03
+T: 2 2 : 26 : 14 : 0.06
+T: 2 2 : 26 : 17 : 0.18
+T: 2 2 : 26 : 25 : 0.18
+T: 2 2 : 26 : 26 : 0.09
+T: 2 2 : 25 : 53 : 0.01
+T: 2 2 : 25 : 52 : 0.02
+T: 2 2 : 25 : 26 : 0.03
+T: 2 2 : 25 : 25 : 0.06
+T: 2 2 : 25 : 49 : 0.01
+T: 2 2 : 25 : 15 : 0.36
+T: 2 2 : 25 : 22 : 0.03
+T: 2 2 : 25 : 13 : 0.06
+T: 2 2 : 25 : 16 : 0.12
+T: 2 2 : 25 : 51 : 0.06
+T: 2 2 : 25 : 17 : 0.06
+T: 2 2 : 25 : 24 : 0.18
+T: 2 2 : 24 : 52 : 0.01
+T: 2 2 : 24 : 51 : 0.08
+T: 2 2 : 24 : 48 : 0.01
+T: 2 2 : 24 : 15 : 0.48
+T: 2 2 : 24 : 12 : 0.06
+T: 2 2 : 24 : 16 : 0.06
+T: 2 2 : 24 : 21 : 0.03
+T: 2 2 : 24 : 24 : 0.24
+T: 2 2 : 24 : 25 : 0.03
+T: 2 2 : 23 : 53 : 0.01
+T: 2 2 : 23 : 50 : 0.02
+T: 2 2 : 23 : 49 : 0.06
+T: 2 2 : 23 : 26 : 0.03
+T: 2 2 : 23 : 23 : 0.06
+T: 2 2 : 23 : 47 : 0.01
+T: 2 2 : 23 : 13 : 0.36
+T: 2 2 : 23 : 20 : 0.03
+T: 2 2 : 23 : 11 : 0.06
+T: 2 2 : 23 : 14 : 0.12
+T: 2 2 : 23 : 17 : 0.06
+T: 2 2 : 23 : 22 : 0.18
+T: 2 2 : 22 : 52 : 0.01
+T: 2 2 : 22 : 49 : 0.01
+T: 2 2 : 22 : 25 : 0.03
+T: 2 2 : 22 : 23 : 0.03
+T: 2 2 : 22 : 22 : 0.03
+T: 2 2 : 22 : 21 : 0.18
+T: 2 2 : 22 : 46 : 0.01
+T: 2 2 : 22 : 12 : 0.36
+T: 2 2 : 22 : 19 : 0.03
+T: 2 2 : 22 : 10 : 0.06
+T: 2 2 : 22 : 13 : 0.06
+T: 2 2 : 22 : 48 : 0.06
+T: 2 2 : 22 : 14 : 0.06
+T: 2 2 : 22 : 50 : 0.01
+T: 2 2 : 22 : 16 : 0.06
+T: 2 2 : 21 : 51 : 0.01
+T: 2 2 : 21 : 48 : 0.07
+T: 2 2 : 21 : 45 : 0.01
+T: 2 2 : 21 : 24 : 0.03
+T: 2 2 : 21 : 22 : 0.03
+T: 2 2 : 21 : 12 : 0.42
+T: 2 2 : 21 : 9 : 0.06
+T: 2 2 : 21 : 13 : 0.06
+T: 2 2 : 21 : 49 : 0.01
+T: 2 2 : 21 : 15 : 0.06
+T: 2 2 : 21 : 18 : 0.03
+T: 2 2 : 21 : 21 : 0.21
+T: 2 2 : 20 : 50 : 0.01
+T: 2 2 : 20 : 47 : 0.03
+T: 2 2 : 20 : 46 : 0.06
+T: 2 2 : 20 : 11 : 0.18
+T: 2 2 : 20 : 10 : 0.36
+T: 2 2 : 20 : 14 : 0.06
+T: 2 2 : 20 : 19 : 0.18
+T: 2 2 : 20 : 20 : 0.09
+T: 2 2 : 20 : 23 : 0.03
+T: 2 2 : 19 : 49 : 0.01
+T: 2 2 : 19 : 46 : 0.02
+T: 2 2 : 19 : 22 : 0.03
+T: 2 2 : 19 : 20 : 0.03
+T: 2 2 : 19 : 10 : 0.12
+T: 2 2 : 19 : 9 : 0.36
+T: 2 2 : 19 : 45 : 0.06
+T: 2 2 : 19 : 11 : 0.06
+T: 2 2 : 19 : 18 : 0.18
+T: 2 2 : 19 : 47 : 0.01
+T: 2 2 : 19 : 13 : 0.06
+T: 2 2 : 19 : 19 : 0.06
+T: 2 2 : 18 : 48 : 0.01
+T: 2 2 : 18 : 45 : 0.08
+T: 2 2 : 18 : 10 : 0.06
+T: 2 2 : 18 : 9 : 0.48
+T: 2 2 : 18 : 46 : 0.01
+T: 2 2 : 18 : 12 : 0.06
+T: 2 2 : 18 : 19 : 0.03
+T: 2 2 : 18 : 18 : 0.24
+T: 2 2 : 18 : 21 : 0.03
+T: 2 2 : 17 : 44 : 0.03
+T: 2 2 : 17 : 43 : 0.06
+T: 2 2 : 17 : 26 : 0.03
+T: 2 2 : 17 : 23 : 0.01
+T: 2 2 : 17 : 41 : 0.01
+T: 2 2 : 17 : 7 : 0.36
+T: 2 2 : 17 : 14 : 0.02
+T: 2 2 : 17 : 5 : 0.06
+T: 2 2 : 17 : 25 : 0.06
+T: 2 2 : 17 : 8 : 0.18
+T: 2 2 : 17 : 16 : 0.12
+T: 2 2 : 17 : 17 : 0.06
+T: 2 2 : 16 : 44 : 0.01
+T: 2 2 : 16 : 43 : 0.02
+T: 2 2 : 16 : 26 : 0.01
+T: 2 2 : 16 : 22 : 0.01
+T: 2 2 : 16 : 17 : 0.02
+T: 2 2 : 16 : 16 : 0.04
+T: 2 2 : 16 : 40 : 0.01
+T: 2 2 : 16 : 6 : 0.36
+T: 2 2 : 16 : 13 : 0.02
+T: 2 2 : 16 : 4 : 0.06
+T: 2 2 : 16 : 24 : 0.06
+T: 2 2 : 16 : 7 : 0.12
+T: 2 2 : 16 : 42 : 0.06
+T: 2 2 : 16 : 25 : 0.02
+T: 2 2 : 16 : 8 : 0.06
+T: 2 2 : 16 : 15 : 0.12
+T: 2 2 : 5 : 35 : 0.01
+T: 2 2 : 5 : 32 : 0.02
+T: 2 2 : 5 : 29 : 0.01
+T: 2 2 : 5 : 17 : 0.01
+T: 2 2 : 5 : 31 : 0.06
+T: 2 2 : 5 : 14 : 0.02
+T: 2 2 : 5 : 4 : 0.48
+T: 2 2 : 5 : 11 : 0.01
+T: 2 2 : 5 : 2 : 0.08
+T: 2 2 : 5 : 5 : 0.16
+T: 2 2 : 5 : 8 : 0.08
+T: 2 2 : 5 : 13 : 0.06
+T: 2 2 : 4 : 34 : 0.01
+T: 2 2 : 4 : 32 : 0.01
+T: 2 2 : 4 : 28 : 0.01
+T: 2 2 : 4 : 16 : 0.01
+T: 2 2 : 4 : 31 : 0.01
+T: 2 2 : 4 : 14 : 0.01
+T: 2 2 : 4 : 30 : 0.06
+T: 2 2 : 4 : 13 : 0.01
+T: 2 2 : 4 : 12 : 0.06
+T: 2 2 : 4 : 3 : 0.48
+T: 2 2 : 4 : 10 : 0.01
+T: 2 2 : 4 : 1 : 0.08
+T: 2 2 : 4 : 4 : 0.08
+T: 2 2 : 4 : 5 : 0.08
+T: 2 2 : 4 : 7 : 0.08
+T: 2 2 : 3 : 33 : 0.01
+T: 2 2 : 3 : 31 : 0.01
+T: 2 2 : 3 : 27 : 0.01
+T: 2 2 : 3 : 15 : 0.01
+T: 2 2 : 3 : 30 : 0.07
+T: 2 2 : 3 : 13 : 0.01
+T: 2 2 : 3 : 3 : 0.56
+T: 2 2 : 3 : 0 : 0.08
+T: 2 2 : 3 : 4 : 0.08
+T: 2 2 : 3 : 6 : 0.08
+T: 2 2 : 3 : 9 : 0.01
+T: 2 2 : 3 : 12 : 0.07
+T: 2 2 : 2 : 32 : 0.01
+T: 2 2 : 2 : 29 : 0.03
+T: 2 2 : 2 : 2 : 0.24
+T: 2 2 : 2 : 1 : 0.48
+T: 2 2 : 2 : 5 : 0.08
+T: 2 2 : 2 : 10 : 0.06
+T: 2 2 : 2 : 28 : 0.06
+T: 2 2 : 2 : 11 : 0.03
+T: 2 2 : 2 : 14 : 0.01
+T: 2 2 : 0 : 30 : 0.01
+T: 2 2 : 0 : 28 : 0.01
+T: 2 2 : 0 : 1 : 0.08
+T: 2 2 : 0 : 0 : 0.64
+T: 2 2 : 0 : 3 : 0.08
+T: 2 2 : 0 : 27 : 0.08
+T: 2 2 : 0 : 10 : 0.01
+T: 2 2 : 0 : 9 : 0.08
+T: 2 2 : 0 : 12 : 0.01
+T: 2 2 : 1 : 31 : 0.01
+T: 2 2 : 1 : 29 : 0.01
+T: 2 2 : 1 : 13 : 0.01
+T: 2 2 : 1 : 28 : 0.02
+T: 2 2 : 1 : 11 : 0.01
+T: 2 2 : 1 : 1 : 0.16
+T: 2 2 : 1 : 0 : 0.48
+T: 2 2 : 1 : 2 : 0.08
+T: 2 2 : 1 : 9 : 0.06
+T: 2 2 : 1 : 4 : 0.08
+T: 2 2 : 1 : 27 : 0.06
+T: 2 2 : 1 : 10 : 0.02
+T: 2 2 : 6 : 34 : 0.01
+T: 2 2 : 6 : 30 : 0.01
+T: 2 2 : 6 : 6 : 0.64
+T: 2 2 : 6 : 3 : 0.08
+T: 2 2 : 6 : 7 : 0.08
+T: 2 2 : 6 : 12 : 0.01
+T: 2 2 : 6 : 15 : 0.08
+T: 2 2 : 6 : 33 : 0.08
+T: 2 2 : 6 : 16 : 0.01
+T: 2 2 : 7 : 35 : 0.01
+T: 2 2 : 7 : 31 : 0.01
+T: 2 2 : 7 : 34 : 0.02
+T: 2 2 : 7 : 17 : 0.01
+T: 2 2 : 7 : 33 : 0.06
+T: 2 2 : 7 : 16 : 0.02
+T: 2 2 : 7 : 6 : 0.48
+T: 2 2 : 7 : 13 : 0.01
+T: 2 2 : 7 : 4 : 0.08
+T: 2 2 : 7 : 7 : 0.16
+T: 2 2 : 7 : 8 : 0.08
+T: 2 2 : 7 : 15 : 0.06
+T: 2 2 : 8 : 35 : 0.03
+T: 2 2 : 8 : 32 : 0.01
+T: 2 2 : 8 : 7 : 0.48
+T: 2 2 : 8 : 14 : 0.01
+T: 2 2 : 8 : 5 : 0.08
+T: 2 2 : 8 : 8 : 0.24
+T: 2 2 : 8 : 16 : 0.06
+T: 2 2 : 8 : 34 : 0.06
+T: 2 2 : 8 : 17 : 0.03
+T: 2 2 : 9 : 39 : 0.01
+T: 2 2 : 9 : 21 : 0.01
+T: 2 2 : 9 : 36 : 0.08
+T: 2 2 : 9 : 19 : 0.01
+T: 2 2 : 9 : 18 : 0.08
+T: 2 2 : 9 : 1 : 0.06
+T: 2 2 : 9 : 0 : 0.48
+T: 2 2 : 9 : 37 : 0.01
+T: 2 2 : 9 : 3 : 0.06
+T: 2 2 : 9 : 10 : 0.02
+T: 2 2 : 9 : 9 : 0.16
+T: 2 2 : 9 : 12 : 0.02
+T: 2 2 : 10 : 40 : 0.01
+T: 2 2 : 10 : 22 : 0.01
+T: 2 2 : 10 : 37 : 0.02
+T: 2 2 : 10 : 20 : 0.01
+T: 2 2 : 10 : 13 : 0.02
+T: 2 2 : 10 : 11 : 0.02
+T: 2 2 : 10 : 18 : 0.06
+T: 2 2 : 10 : 1 : 0.12
+T: 2 2 : 10 : 0 : 0.36
+T: 2 2 : 10 : 36 : 0.06
+T: 2 2 : 10 : 19 : 0.02
+T: 2 2 : 10 : 2 : 0.06
+T: 2 2 : 10 : 9 : 0.12
+T: 2 2 : 10 : 38 : 0.01
+T: 2 2 : 10 : 4 : 0.06
+T: 2 2 : 10 : 10 : 0.04
+T: 2 2 : 11 : 41 : 0.01
+T: 2 2 : 11 : 38 : 0.03
+T: 2 2 : 11 : 23 : 0.01
+T: 2 2 : 11 : 37 : 0.06
+T: 2 2 : 11 : 20 : 0.03
+T: 2 2 : 11 : 19 : 0.06
+T: 2 2 : 11 : 2 : 0.18
+T: 2 2 : 11 : 1 : 0.36
+T: 2 2 : 11 : 5 : 0.06
+T: 2 2 : 11 : 10 : 0.12
+T: 2 2 : 11 : 11 : 0.06
+T: 2 2 : 11 : 14 : 0.02
+T: 2 2 : 12 : 42 : 0.01
+T: 2 2 : 12 : 36 : 0.01
+T: 2 2 : 12 : 24 : 0.01
+T: 2 2 : 12 : 39 : 0.07
+T: 2 2 : 12 : 22 : 0.01
+T: 2 2 : 12 : 18 : 0.01
+T: 2 2 : 12 : 15 : 0.02
+T: 2 2 : 12 : 13 : 0.02
+T: 2 2 : 12 : 3 : 0.42
+T: 2 2 : 12 : 0 : 0.06
+T: 2 2 : 12 : 21 : 0.07
+T: 2 2 : 12 : 4 : 0.06
+T: 2 2 : 12 : 40 : 0.01
+T: 2 2 : 12 : 6 : 0.06
+T: 2 2 : 12 : 9 : 0.02
+T: 2 2 : 12 : 12 : 0.14
+T: 2 2 : 13 : 43 : 0.01
+T: 2 2 : 13 : 39 : 0.06
+T: 2 2 : 13 : 7 : 0.06
+T: 2 2 : 13 : 5 : 0.06
+T: 2 2 : 13 : 22 : 0.01
+T: 2 2 : 13 : 41 : 0.01
+T: 2 2 : 13 : 4 : 0.06
+T: 2 2 : 13 : 21 : 0.06
+T: 2 2 : 13 : 1 : 0.06
+T: 2 2 : 13 : 10 : 0.02
+T: 2 2 : 13 : 40 : 0.01
+T: 2 2 : 13 : 3 : 0.36
+T: 2 2 : 13 : 37 : 0.01
+T: 2 2 : 13 : 12 : 0.12
+T: 2 2 : 13 : 13 : 0.02
+T: 2 2 : 13 : 14 : 0.02
+T: 2 2 : 13 : 16 : 0.02
+T: 2 2 : 13 : 19 : 0.01
+T: 2 2 : 13 : 23 : 0.01
+T: 2 2 : 13 : 25 : 0.01
+T: 2 2 : 14 : 44 : 0.01
+T: 2 2 : 14 : 41 : 0.02
+T: 2 2 : 14 : 26 : 0.01
+T: 2 2 : 14 : 40 : 0.06
+T: 2 2 : 14 : 23 : 0.02
+T: 2 2 : 14 : 20 : 0.01
+T: 2 2 : 14 : 17 : 0.02
+T: 2 2 : 14 : 14 : 0.04
+T: 2 2 : 14 : 38 : 0.01
+T: 2 2 : 14 : 4 : 0.36
+T: 2 2 : 14 : 11 : 0.02
+T: 2 2 : 14 : 2 : 0.06
+T: 2 2 : 14 : 22 : 0.06
+T: 2 2 : 14 : 5 : 0.12
+T: 2 2 : 14 : 8 : 0.06
+T: 2 2 : 14 : 13 : 0.12
+T: 2 2 : 15 : 43 : 0.01
+T: 2 2 : 15 : 39 : 0.01
+T: 2 2 : 15 : 42 : 0.08
+T: 2 2 : 15 : 25 : 0.01
+T: 2 2 : 15 : 21 : 0.01
+T: 2 2 : 15 : 6 : 0.48
+T: 2 2 : 15 : 3 : 0.06
+T: 2 2 : 15 : 24 : 0.08
+T: 2 2 : 15 : 7 : 0.06
+T: 2 2 : 15 : 12 : 0.02
+T: 2 2 : 15 : 15 : 0.16
+T: 2 2 : 15 : 16 : 0.02
+T: 2 2 : 36 : 66 : 0.01
+T: 2 2 : 36 : 48 : 0.01
+T: 2 2 : 36 : 39 : 0.01
+T: 2 2 : 36 : 37 : 0.01
+T: 2 2 : 36 : 36 : 0.08
+T: 2 2 : 36 : 9 : 0.08
+T: 2 2 : 36 : 64 : 0.01
+T: 2 2 : 36 : 30 : 0.06
+T: 2 2 : 36 : 63 : 0.08
+T: 2 2 : 36 : 46 : 0.01
+T: 2 2 : 36 : 12 : 0.01
+T: 2 2 : 36 : 10 : 0.01
+T: 2 2 : 36 : 27 : 0.48
+T: 2 2 : 36 : 45 : 0.08
+T: 2 2 : 36 : 28 : 0.06
+T: 2 2 : 37 : 67 : 0.01
+T: 2 2 : 37 : 63 : 0.06
+T: 2 2 : 37 : 65 : 0.01
+T: 2 2 : 37 : 28 : 0.12
+T: 2 2 : 37 : 11 : 0.01
+T: 2 2 : 37 : 45 : 0.06
+T: 2 2 : 37 : 64 : 0.02
+T: 2 2 : 37 : 27 : 0.36
+T: 2 2 : 37 : 13 : 0.01
+T: 2 2 : 37 : 10 : 0.02
+T: 2 2 : 37 : 47 : 0.01
+T: 2 2 : 37 : 29 : 0.06
+T: 2 2 : 37 : 9 : 0.06
+T: 2 2 : 37 : 46 : 0.02
+T: 2 2 : 37 : 31 : 0.06
+T: 2 2 : 37 : 36 : 0.06
+T: 2 2 : 37 : 37 : 0.02
+T: 2 2 : 37 : 38 : 0.01
+T: 2 2 : 37 : 40 : 0.01
+T: 2 2 : 37 : 49 : 0.01
+T: 2 2 : 38 : 68 : 0.01
+T: 2 2 : 38 : 50 : 0.01
+T: 2 2 : 38 : 64 : 0.06
+T: 2 2 : 38 : 47 : 0.03
+T: 2 2 : 38 : 41 : 0.01
+T: 2 2 : 38 : 38 : 0.03
+T: 2 2 : 38 : 37 : 0.06
+T: 2 2 : 38 : 32 : 0.06
+T: 2 2 : 38 : 10 : 0.06
+T: 2 2 : 38 : 65 : 0.03
+T: 2 2 : 38 : 14 : 0.01
+T: 2 2 : 38 : 11 : 0.03
+T: 2 2 : 38 : 28 : 0.36
+T: 2 2 : 38 : 46 : 0.06
+T: 2 2 : 38 : 29 : 0.18
+T: 2 2 : 39 : 69 : 0.01
+T: 2 2 : 39 : 66 : 0.07
+T: 2 2 : 39 : 63 : 0.01
+T: 2 2 : 39 : 15 : 0.01
+T: 2 2 : 39 : 27 : 0.06
+T: 2 2 : 39 : 13 : 0.01
+T: 2 2 : 39 : 67 : 0.01
+T: 2 2 : 39 : 30 : 0.42
+T: 2 2 : 39 : 9 : 0.01
+T: 2 2 : 39 : 49 : 0.01
+T: 2 2 : 39 : 12 : 0.07
+T: 2 2 : 39 : 31 : 0.06
+T: 2 2 : 39 : 48 : 0.07
+T: 2 2 : 39 : 33 : 0.06
+T: 2 2 : 39 : 36 : 0.01
+T: 2 2 : 39 : 39 : 0.07
+T: 2 2 : 39 : 40 : 0.01
+T: 2 2 : 39 : 42 : 0.01
+T: 2 2 : 39 : 45 : 0.01
+T: 2 2 : 39 : 51 : 0.01
+T: 2 2 : 40 : 70 : 0.01
+T: 2 2 : 40 : 66 : 0.06
+T: 2 2 : 40 : 64 : 0.01
+T: 2 2 : 40 : 52 : 0.01
+T: 2 2 : 40 : 48 : 0.06
+T: 2 2 : 40 : 16 : 0.01
+T: 2 2 : 40 : 28 : 0.06
+T: 2 2 : 40 : 14 : 0.01
+T: 2 2 : 40 : 68 : 0.01
+T: 2 2 : 40 : 31 : 0.06
+T: 2 2 : 40 : 50 : 0.01
+T: 2 2 : 40 : 13 : 0.01
+T: 2 2 : 40 : 67 : 0.01
+T: 2 2 : 40 : 30 : 0.36
+T: 2 2 : 40 : 10 : 0.01
+T: 2 2 : 40 : 49 : 0.01
+T: 2 2 : 40 : 12 : 0.06
+T: 2 2 : 40 : 46 : 0.01
+T: 2 2 : 40 : 32 : 0.06
+T: 2 2 : 40 : 34 : 0.06
+T: 2 2 : 40 : 37 : 0.01
+T: 2 2 : 40 : 39 : 0.06
+T: 2 2 : 40 : 40 : 0.01
+T: 2 2 : 40 : 41 : 0.01
+T: 2 2 : 40 : 43 : 0.01
+T: 2 2 : 41 : 71 : 0.01
+T: 2 2 : 41 : 67 : 0.06
+T: 2 2 : 41 : 65 : 0.01
+T: 2 2 : 41 : 29 : 0.06
+T: 2 2 : 41 : 68 : 0.02
+T: 2 2 : 41 : 31 : 0.36
+T: 2 2 : 41 : 14 : 0.02
+T: 2 2 : 41 : 17 : 0.01
+T: 2 2 : 41 : 11 : 0.01
+T: 2 2 : 41 : 47 : 0.01
+T: 2 2 : 41 : 32 : 0.12
+T: 2 2 : 41 : 49 : 0.06
+T: 2 2 : 41 : 35 : 0.06
+T: 2 2 : 41 : 38 : 0.01
+T: 2 2 : 41 : 40 : 0.06
+T: 2 2 : 41 : 41 : 0.02
+T: 2 2 : 41 : 44 : 0.01
+T: 2 2 : 41 : 13 : 0.06
+T: 2 2 : 41 : 50 : 0.02
+T: 2 2 : 41 : 53 : 0.01
+T: 2 2 : 42 : 70 : 0.01
+T: 2 2 : 42 : 69 : 0.08
+T: 2 2 : 42 : 52 : 0.01
+T: 2 2 : 42 : 48 : 0.01
+T: 2 2 : 42 : 43 : 0.01
+T: 2 2 : 42 : 42 : 0.08
+T: 2 2 : 42 : 39 : 0.01
+T: 2 2 : 42 : 66 : 0.01
+T: 2 2 : 42 : 15 : 0.08
+T: 2 2 : 42 : 12 : 0.01
+T: 2 2 : 42 : 33 : 0.48
+T: 2 2 : 42 : 16 : 0.01
+T: 2 2 : 42 : 30 : 0.06
+T: 2 2 : 42 : 51 : 0.08
+T: 2 2 : 42 : 34 : 0.06
+T: 2 2 : 43 : 69 : 0.06
+T: 2 2 : 43 : 67 : 0.01
+T: 2 2 : 43 : 70 : 0.02
+T: 2 2 : 43 : 33 : 0.36
+T: 2 2 : 43 : 31 : 0.06
+T: 2 2 : 43 : 17 : 0.01
+T: 2 2 : 43 : 71 : 0.01
+T: 2 2 : 43 : 34 : 0.12
+T: 2 2 : 43 : 51 : 0.06
+T: 2 2 : 43 : 13 : 0.01
+T: 2 2 : 43 : 49 : 0.01
+T: 2 2 : 43 : 35 : 0.06
+T: 2 2 : 43 : 15 : 0.06
+T: 2 2 : 43 : 52 : 0.02
+T: 2 2 : 43 : 40 : 0.01
+T: 2 2 : 43 : 42 : 0.06
+T: 2 2 : 43 : 43 : 0.02
+T: 2 2 : 43 : 44 : 0.01
+T: 2 2 : 43 : 16 : 0.02
+T: 2 2 : 43 : 53 : 0.01
+T: 2 2 : 44 : 71 : 0.03
+T: 2 2 : 44 : 70 : 0.06
+T: 2 2 : 44 : 53 : 0.03
+T: 2 2 : 44 : 44 : 0.03
+T: 2 2 : 44 : 43 : 0.06
+T: 2 2 : 44 : 41 : 0.01
+T: 2 2 : 44 : 50 : 0.01
+T: 2 2 : 44 : 16 : 0.06
+T: 2 2 : 44 : 14 : 0.01
+T: 2 2 : 44 : 52 : 0.06
+T: 2 2 : 44 : 35 : 0.18
+T: 2 2 : 44 : 32 : 0.06
+T: 2 2 : 44 : 68 : 0.01
+T: 2 2 : 44 : 17 : 0.03
+T: 2 2 : 44 : 34 : 0.36
+T: 2 2 : 45 : 75 : 0.01
+T: 2 2 : 45 : 48 : 0.02
+T: 2 2 : 45 : 46 : 0.02
+T: 2 2 : 45 : 45 : 0.16
+T: 2 2 : 45 : 18 : 0.08
+T: 2 2 : 45 : 73 : 0.01
+T: 2 2 : 45 : 39 : 0.06
+T: 2 2 : 45 : 72 : 0.08
+T: 2 2 : 45 : 21 : 0.01
+T: 2 2 : 45 : 19 : 0.01
+T: 2 2 : 45 : 36 : 0.48
+T: 2 2 : 45 : 37 : 0.06
+T: 2 2 : 46 : 76 : 0.01
+T: 2 2 : 46 : 49 : 0.02
+T: 2 2 : 46 : 47 : 0.02
+T: 2 2 : 46 : 46 : 0.04
+T: 2 2 : 46 : 45 : 0.12
+T: 2 2 : 46 : 74 : 0.01
+T: 2 2 : 46 : 40 : 0.06
+T: 2 2 : 46 : 72 : 0.06
+T: 2 2 : 46 : 38 : 0.06
+T: 2 2 : 46 : 18 : 0.06
+T: 2 2 : 46 : 73 : 0.02
+T: 2 2 : 46 : 22 : 0.01
+T: 2 2 : 46 : 19 : 0.02
+T: 2 2 : 46 : 36 : 0.36
+T: 2 2 : 46 : 20 : 0.01
+T: 2 2 : 46 : 37 : 0.12
+T: 2 2 : 47 : 77 : 0.01
+T: 2 2 : 47 : 73 : 0.06
+T: 2 2 : 47 : 50 : 0.02
+T: 2 2 : 47 : 47 : 0.06
+T: 2 2 : 47 : 46 : 0.12
+T: 2 2 : 47 : 41 : 0.06
+T: 2 2 : 47 : 19 : 0.06
+T: 2 2 : 47 : 74 : 0.03
+T: 2 2 : 47 : 23 : 0.01
+T: 2 2 : 47 : 20 : 0.03
+T: 2 2 : 47 : 37 : 0.36
+T: 2 2 : 47 : 38 : 0.18
+T: 2 2 : 48 : 78 : 0.01
+T: 2 2 : 48 : 51 : 0.02
+T: 2 2 : 48 : 49 : 0.02
+T: 2 2 : 48 : 48 : 0.14
+T: 2 2 : 48 : 45 : 0.02
+T: 2 2 : 48 : 76 : 0.01
+T: 2 2 : 48 : 42 : 0.06
+T: 2 2 : 48 : 40 : 0.06
+T: 2 2 : 48 : 72 : 0.01
+T: 2 2 : 48 : 21 : 0.07
+T: 2 2 : 48 : 18 : 0.01
+T: 2 2 : 48 : 39 : 0.42
+T: 2 2 : 48 : 22 : 0.01
+T: 2 2 : 48 : 36 : 0.06
+T: 2 2 : 48 : 75 : 0.07
+T: 2 2 : 48 : 24 : 0.01
+T: 2 2 : 49 : 79 : 0.01
+T: 2 2 : 49 : 75 : 0.06
+T: 2 2 : 49 : 25 : 0.01
+T: 2 2 : 49 : 37 : 0.06
+T: 2 2 : 49 : 23 : 0.01
+T: 2 2 : 49 : 77 : 0.01
+T: 2 2 : 49 : 40 : 0.06
+T: 2 2 : 49 : 22 : 0.01
+T: 2 2 : 49 : 76 : 0.01
+T: 2 2 : 49 : 39 : 0.36
+T: 2 2 : 49 : 73 : 0.01
+T: 2 2 : 49 : 19 : 0.01
+T: 2 2 : 49 : 21 : 0.06
+T: 2 2 : 49 : 41 : 0.06
+T: 2 2 : 49 : 43 : 0.06
+T: 2 2 : 49 : 46 : 0.02
+T: 2 2 : 49 : 48 : 0.12
+T: 2 2 : 49 : 49 : 0.02
+T: 2 2 : 49 : 50 : 0.02
+T: 2 2 : 49 : 52 : 0.02
+T: 2 2 : 50 : 80 : 0.01
+T: 2 2 : 50 : 76 : 0.06
+T: 2 2 : 50 : 53 : 0.02
+T: 2 2 : 50 : 50 : 0.04
+T: 2 2 : 50 : 49 : 0.12
+T: 2 2 : 50 : 47 : 0.02
+T: 2 2 : 50 : 44 : 0.06
+T: 2 2 : 50 : 41 : 0.12
+T: 2 2 : 50 : 22 : 0.06
+T: 2 2 : 50 : 20 : 0.01
+T: 2 2 : 50 : 77 : 0.02
+T: 2 2 : 50 : 26 : 0.01
+T: 2 2 : 50 : 74 : 0.01
+T: 2 2 : 50 : 23 : 0.02
+T: 2 2 : 50 : 40 : 0.36
+T: 2 2 : 50 : 38 : 0.06
+T: 2 2 : 51 : 79 : 0.01
+T: 2 2 : 51 : 78 : 0.08
+T: 2 2 : 51 : 52 : 0.02
+T: 2 2 : 51 : 51 : 0.16
+T: 2 2 : 51 : 48 : 0.02
+T: 2 2 : 51 : 75 : 0.01
+T: 2 2 : 51 : 24 : 0.08
+T: 2 2 : 51 : 21 : 0.01
+T: 2 2 : 51 : 42 : 0.48
+T: 2 2 : 51 : 25 : 0.01
+T: 2 2 : 51 : 39 : 0.06
+T: 2 2 : 51 : 43 : 0.06
+T: 2 2 : 52 : 80 : 0.01
+T: 2 2 : 52 : 79 : 0.02
+T: 2 2 : 52 : 53 : 0.02
+T: 2 2 : 52 : 52 : 0.04
+T: 2 2 : 52 : 51 : 0.12
+T: 2 2 : 52 : 49 : 0.02
+T: 2 2 : 52 : 78 : 0.06
+T: 2 2 : 52 : 44 : 0.06
+T: 2 2 : 52 : 24 : 0.06
+T: 2 2 : 52 : 22 : 0.01
+T: 2 2 : 52 : 43 : 0.12
+T: 2 2 : 52 : 26 : 0.01
+T: 2 2 : 52 : 40 : 0.06
+T: 2 2 : 52 : 76 : 0.01
+T: 2 2 : 52 : 25 : 0.02
+T: 2 2 : 52 : 42 : 0.36
+T: 2 2 : 53 : 80 : 0.03
+T: 2 2 : 53 : 79 : 0.06
+T: 2 2 : 53 : 53 : 0.06
+T: 2 2 : 53 : 52 : 0.12
+T: 2 2 : 53 : 50 : 0.02
+T: 2 2 : 53 : 25 : 0.06
+T: 2 2 : 53 : 23 : 0.01
+T: 2 2 : 53 : 44 : 0.18
+T: 2 2 : 53 : 41 : 0.06
+T: 2 2 : 53 : 77 : 0.01
+T: 2 2 : 53 : 26 : 0.03
+T: 2 2 : 53 : 43 : 0.36
+T: 2 2 : 54 : 66 : 0.01
+T: 2 2 : 54 : 63 : 0.08
+T: 2 2 : 54 : 28 : 0.01
+T: 2 2 : 54 : 27 : 0.08
+T: 2 2 : 54 : 55 : 0.08
+T: 2 2 : 54 : 64 : 0.01
+T: 2 2 : 54 : 30 : 0.01
+T: 2 2 : 54 : 54 : 0.64
+T: 2 2 : 54 : 57 : 0.08
+T: 2 2 : 55 : 67 : 0.01
+T: 2 2 : 55 : 64 : 0.02
+T: 2 2 : 55 : 58 : 0.08
+T: 2 2 : 55 : 56 : 0.08
+T: 2 2 : 55 : 28 : 0.02
+T: 2 2 : 55 : 27 : 0.06
+T: 2 2 : 55 : 55 : 0.16
+T: 2 2 : 55 : 63 : 0.06
+T: 2 2 : 55 : 29 : 0.01
+T: 2 2 : 55 : 65 : 0.01
+T: 2 2 : 55 : 31 : 0.01
+T: 2 2 : 55 : 54 : 0.48
+T: 2 2 : 56 : 68 : 0.01
+T: 2 2 : 56 : 65 : 0.03
+T: 2 2 : 56 : 64 : 0.06
+T: 2 2 : 56 : 29 : 0.03
+T: 2 2 : 56 : 28 : 0.06
+T: 2 2 : 56 : 56 : 0.24
+T: 2 2 : 56 : 32 : 0.01
+T: 2 2 : 56 : 55 : 0.48
+T: 2 2 : 56 : 59 : 0.08
+T: 2 2 : 57 : 69 : 0.01
+T: 2 2 : 57 : 66 : 0.07
+T: 2 2 : 57 : 63 : 0.01
+T: 2 2 : 57 : 60 : 0.08
+T: 2 2 : 57 : 58 : 0.08
+T: 2 2 : 57 : 30 : 0.07
+T: 2 2 : 57 : 27 : 0.01
+T: 2 2 : 57 : 31 : 0.01
+T: 2 2 : 57 : 67 : 0.01
+T: 2 2 : 57 : 33 : 0.01
+T: 2 2 : 57 : 54 : 0.08
+T: 2 2 : 57 : 57 : 0.56
+T: 2 2 : 58 : 70 : 0.01
+T: 2 2 : 58 : 67 : 0.01
+T: 2 2 : 58 : 61 : 0.08
+T: 2 2 : 58 : 59 : 0.08
+T: 2 2 : 58 : 58 : 0.08
+T: 2 2 : 58 : 57 : 0.48
+T: 2 2 : 58 : 64 : 0.01
+T: 2 2 : 58 : 30 : 0.06
+T: 2 2 : 58 : 28 : 0.01
+T: 2 2 : 58 : 31 : 0.01
+T: 2 2 : 58 : 66 : 0.06
+T: 2 2 : 58 : 32 : 0.01
+T: 2 2 : 58 : 68 : 0.01
+T: 2 2 : 58 : 34 : 0.01
+T: 2 2 : 58 : 55 : 0.08
+T: 2 2 : 59 : 71 : 0.01
+T: 2 2 : 59 : 68 : 0.02
+T: 2 2 : 59 : 67 : 0.06
+T: 2 2 : 59 : 62 : 0.08
+T: 2 2 : 59 : 59 : 0.16
+T: 2 2 : 59 : 65 : 0.01
+T: 2 2 : 59 : 31 : 0.06
+T: 2 2 : 59 : 29 : 0.01
+T: 2 2 : 59 : 32 : 0.02
+T: 2 2 : 59 : 35 : 0.01
+T: 2 2 : 59 : 56 : 0.08
+T: 2 2 : 59 : 58 : 0.48
+T: 2 2 : 60 : 70 : 0.01
+T: 2 2 : 60 : 69 : 0.08
+T: 2 2 : 60 : 66 : 0.01
+T: 2 2 : 60 : 33 : 0.08
+T: 2 2 : 60 : 61 : 0.08
+T: 2 2 : 60 : 30 : 0.01
+T: 2 2 : 60 : 34 : 0.01
+T: 2 2 : 60 : 57 : 0.08
+T: 2 2 : 60 : 60 : 0.64
+T: 2 2 : 61 : 71 : 0.01
+T: 2 2 : 61 : 70 : 0.02
+T: 2 2 : 61 : 62 : 0.08
+T: 2 2 : 61 : 61 : 0.16
+T: 2 2 : 61 : 67 : 0.01
+T: 2 2 : 61 : 33 : 0.06
+T: 2 2 : 61 : 31 : 0.01
+T: 2 2 : 61 : 34 : 0.02
+T: 2 2 : 61 : 69 : 0.06
+T: 2 2 : 61 : 35 : 0.01
+T: 2 2 : 61 : 58 : 0.08
+T: 2 2 : 61 : 60 : 0.48
+T: 2 2 : 62 : 71 : 0.03
+T: 2 2 : 62 : 70 : 0.06
+T: 2 2 : 62 : 68 : 0.01
+T: 2 2 : 62 : 34 : 0.06
+T: 2 2 : 62 : 62 : 0.24
+T: 2 2 : 62 : 32 : 0.01
+T: 2 2 : 62 : 35 : 0.03
+T: 2 2 : 62 : 59 : 0.08
+T: 2 2 : 62 : 61 : 0.48
+T: 2 2 : 63 : 75 : 0.01
+T: 2 2 : 63 : 66 : 0.02
+T: 2 2 : 63 : 64 : 0.02
+T: 2 2 : 63 : 63 : 0.16
+T: 2 2 : 63 : 36 : 0.08
+T: 2 2 : 63 : 57 : 0.06
+T: 2 2 : 63 : 73 : 0.01
+T: 2 2 : 63 : 39 : 0.01
+T: 2 2 : 63 : 37 : 0.01
+T: 2 2 : 63 : 54 : 0.48
+T: 2 2 : 63 : 72 : 0.08
+T: 2 2 : 63 : 55 : 0.06
+T: 2 2 : 64 : 76 : 0.01
+T: 2 2 : 64 : 67 : 0.02
+T: 2 2 : 64 : 65 : 0.02
+T: 2 2 : 64 : 64 : 0.04
+T: 2 2 : 64 : 63 : 0.12
+T: 2 2 : 64 : 58 : 0.06
+T: 2 2 : 64 : 73 : 0.02
+T: 2 2 : 64 : 56 : 0.06
+T: 2 2 : 64 : 36 : 0.06
+T: 2 2 : 64 : 74 : 0.01
+T: 2 2 : 64 : 40 : 0.01
+T: 2 2 : 64 : 37 : 0.02
+T: 2 2 : 64 : 54 : 0.36
+T: 2 2 : 64 : 72 : 0.06
+T: 2 2 : 64 : 38 : 0.01
+T: 2 2 : 64 : 55 : 0.12
+T: 2 2 : 65 : 77 : 0.01
+T: 2 2 : 65 : 74 : 0.03
+T: 2 2 : 65 : 68 : 0.02
+T: 2 2 : 65 : 65 : 0.06
+T: 2 2 : 65 : 64 : 0.12
+T: 2 2 : 65 : 59 : 0.06
+T: 2 2 : 65 : 37 : 0.06
+T: 2 2 : 65 : 41 : 0.01
+T: 2 2 : 65 : 38 : 0.03
+T: 2 2 : 65 : 55 : 0.36
+T: 2 2 : 65 : 73 : 0.06
+T: 2 2 : 65 : 56 : 0.18
+T: 2 2 : 66 : 78 : 0.01
+T: 2 2 : 66 : 72 : 0.01
+T: 2 2 : 66 : 69 : 0.02
+T: 2 2 : 66 : 67 : 0.02
+T: 2 2 : 66 : 66 : 0.14
+T: 2 2 : 66 : 63 : 0.02
+T: 2 2 : 66 : 60 : 0.06
+T: 2 2 : 66 : 75 : 0.07
+T: 2 2 : 66 : 58 : 0.06
+T: 2 2 : 66 : 39 : 0.07
+T: 2 2 : 66 : 36 : 0.01
+T: 2 2 : 66 : 57 : 0.42
+T: 2 2 : 66 : 40 : 0.01
+T: 2 2 : 66 : 54 : 0.06
+T: 2 2 : 66 : 76 : 0.01
+T: 2 2 : 66 : 42 : 0.01
+T: 2 2 : 67 : 79 : 0.01
+T: 2 2 : 67 : 75 : 0.06
+T: 2 2 : 67 : 43 : 0.01
+T: 2 2 : 67 : 55 : 0.06
+T: 2 2 : 67 : 41 : 0.01
+T: 2 2 : 67 : 58 : 0.06
+T: 2 2 : 67 : 77 : 0.01
+T: 2 2 : 67 : 40 : 0.01
+T: 2 2 : 67 : 57 : 0.36
+T: 2 2 : 67 : 37 : 0.01
+T: 2 2 : 67 : 76 : 0.01
+T: 2 2 : 67 : 39 : 0.06
+T: 2 2 : 67 : 73 : 0.01
+T: 2 2 : 67 : 59 : 0.06
+T: 2 2 : 67 : 61 : 0.06
+T: 2 2 : 67 : 64 : 0.02
+T: 2 2 : 67 : 66 : 0.12
+T: 2 2 : 67 : 67 : 0.02
+T: 2 2 : 67 : 68 : 0.02
+T: 2 2 : 67 : 70 : 0.02
+T: 2 2 : 68 : 80 : 0.01
+T: 2 2 : 68 : 77 : 0.02
+T: 2 2 : 68 : 71 : 0.02
+T: 2 2 : 68 : 68 : 0.04
+T: 2 2 : 68 : 67 : 0.12
+T: 2 2 : 68 : 65 : 0.02
+T: 2 2 : 68 : 62 : 0.06
+T: 2 2 : 68 : 76 : 0.06
+T: 2 2 : 68 : 59 : 0.12
+T: 2 2 : 68 : 74 : 0.01
+T: 2 2 : 68 : 40 : 0.06
+T: 2 2 : 68 : 38 : 0.01
+T: 2 2 : 68 : 44 : 0.01
+T: 2 2 : 68 : 41 : 0.02
+T: 2 2 : 68 : 58 : 0.36
+T: 2 2 : 68 : 56 : 0.06
+T: 2 2 : 69 : 79 : 0.01
+T: 2 2 : 69 : 75 : 0.01
+T: 2 2 : 69 : 70 : 0.02
+T: 2 2 : 69 : 69 : 0.16
+T: 2 2 : 69 : 66 : 0.02
+T: 2 2 : 69 : 42 : 0.08
+T: 2 2 : 69 : 39 : 0.01
+T: 2 2 : 69 : 60 : 0.48
+T: 2 2 : 69 : 43 : 0.01
+T: 2 2 : 69 : 57 : 0.06
+T: 2 2 : 69 : 78 : 0.08
+T: 2 2 : 69 : 61 : 0.06
+T: 2 2 : 70 : 80 : 0.01
+T: 2 2 : 70 : 71 : 0.02
+T: 2 2 : 70 : 70 : 0.04
+T: 2 2 : 70 : 69 : 0.12
+T: 2 2 : 70 : 67 : 0.02
+T: 2 2 : 70 : 79 : 0.02
+T: 2 2 : 70 : 62 : 0.06
+T: 2 2 : 70 : 76 : 0.01
+T: 2 2 : 70 : 42 : 0.06
+T: 2 2 : 70 : 40 : 0.01
+T: 2 2 : 70 : 78 : 0.06
+T: 2 2 : 70 : 61 : 0.12
+T: 2 2 : 70 : 44 : 0.01
+T: 2 2 : 70 : 58 : 0.06
+T: 2 2 : 70 : 43 : 0.02
+T: 2 2 : 70 : 60 : 0.36
+T: 2 2 : 71 : 80 : 0.03
+T: 2 2 : 71 : 71 : 0.06
+T: 2 2 : 71 : 70 : 0.12
+T: 2 2 : 71 : 68 : 0.02
+T: 2 2 : 71 : 77 : 0.01
+T: 2 2 : 71 : 43 : 0.06
+T: 2 2 : 71 : 41 : 0.01
+T: 2 2 : 71 : 79 : 0.06
+T: 2 2 : 71 : 62 : 0.18
+T: 2 2 : 71 : 59 : 0.06
+T: 2 2 : 71 : 44 : 0.03
+T: 2 2 : 71 : 61 : 0.36
+T: 2 2 : 72 : 75 : 0.03
+T: 2 2 : 72 : 73 : 0.03
+T: 2 2 : 72 : 72 : 0.24
+T: 2 2 : 72 : 45 : 0.08
+T: 2 2 : 72 : 66 : 0.06
+T: 2 2 : 72 : 48 : 0.01
+T: 2 2 : 72 : 46 : 0.01
+T: 2 2 : 72 : 63 : 0.48
+T: 2 2 : 72 : 64 : 0.06
+T: 2 2 : 73 : 76 : 0.03
+T: 2 2 : 73 : 74 : 0.03
+T: 2 2 : 73 : 73 : 0.06
+T: 2 2 : 73 : 72 : 0.18
+T: 2 2 : 73 : 67 : 0.06
+T: 2 2 : 73 : 65 : 0.06
+T: 2 2 : 73 : 45 : 0.06
+T: 2 2 : 73 : 49 : 0.01
+T: 2 2 : 73 : 46 : 0.02
+T: 2 2 : 73 : 63 : 0.36
+T: 2 2 : 73 : 47 : 0.01
+T: 2 2 : 73 : 64 : 0.12
+T: 2 2 : 74 : 77 : 0.03
+T: 2 2 : 74 : 74 : 0.09
+T: 2 2 : 74 : 73 : 0.18
+T: 2 2 : 74 : 68 : 0.06
+T: 2 2 : 74 : 46 : 0.06
+T: 2 2 : 74 : 50 : 0.01
+T: 2 2 : 74 : 47 : 0.03
+T: 2 2 : 74 : 64 : 0.36
+T: 2 2 : 74 : 65 : 0.18
+T: 2 2 : 75 : 78 : 0.03
+T: 2 2 : 75 : 76 : 0.03
+T: 2 2 : 75 : 75 : 0.21
+T: 2 2 : 75 : 72 : 0.03
+T: 2 2 : 75 : 69 : 0.06
+T: 2 2 : 75 : 67 : 0.06
+T: 2 2 : 75 : 48 : 0.07
+T: 2 2 : 75 : 45 : 0.01
+T: 2 2 : 75 : 66 : 0.42
+T: 2 2 : 75 : 49 : 0.01
+T: 2 2 : 75 : 63 : 0.06
+T: 2 2 : 75 : 51 : 0.01
+T: 2 2 : 76 : 79 : 0.03
+T: 2 2 : 76 : 77 : 0.03
+T: 2 2 : 76 : 76 : 0.03
+T: 2 2 : 76 : 75 : 0.18
+T: 2 2 : 76 : 73 : 0.03
+T: 2 2 : 76 : 70 : 0.06
+T: 2 2 : 76 : 68 : 0.06
+T: 2 2 : 76 : 48 : 0.06
+T: 2 2 : 76 : 46 : 0.01
+T: 2 2 : 76 : 66 : 0.36
+T: 2 2 : 76 : 49 : 0.01
+T: 2 2 : 76 : 67 : 0.06
+T: 2 2 : 76 : 50 : 0.01
+T: 2 2 : 76 : 64 : 0.06
+T: 2 2 : 76 : 52 : 0.01
+T: 2 2 : 77 : 80 : 0.03
+T: 2 2 : 77 : 77 : 0.06
+T: 2 2 : 77 : 76 : 0.18
+T: 2 2 : 77 : 74 : 0.03
+T: 2 2 : 77 : 71 : 0.06
+T: 2 2 : 77 : 68 : 0.12
+T: 2 2 : 77 : 49 : 0.06
+T: 2 2 : 77 : 47 : 0.01
+T: 2 2 : 77 : 53 : 0.01
+T: 2 2 : 77 : 50 : 0.02
+T: 2 2 : 77 : 67 : 0.36
+T: 2 2 : 77 : 65 : 0.06
+T: 2 3 : 80 : 80 : 0.24
+T: 2 3 : 80 : 79 : 0.03
+T: 2 3 : 80 : 77 : 0.03
+T: 2 3 : 80 : 52 : 0.01
+T: 2 3 : 80 : 50 : 0.01
+T: 2 3 : 80 : 71 : 0.48
+T: 2 3 : 80 : 68 : 0.06
+T: 2 3 : 80 : 53 : 0.08
+T: 2 3 : 80 : 70 : 0.06
+T: 2 3 : 79 : 80 : 0.18
+T: 2 3 : 79 : 79 : 0.06
+T: 2 3 : 79 : 78 : 0.03
+T: 2 3 : 79 : 76 : 0.03
+T: 2 3 : 79 : 71 : 0.36
+T: 2 3 : 79 : 51 : 0.01
+T: 2 3 : 79 : 49 : 0.01
+T: 2 3 : 79 : 70 : 0.12
+T: 2 3 : 79 : 53 : 0.06
+T: 2 3 : 79 : 67 : 0.06
+T: 2 3 : 79 : 52 : 0.02
+T: 2 3 : 79 : 69 : 0.06
+T: 2 3 : 78 : 79 : 0.18
+T: 2 3 : 78 : 78 : 0.09
+T: 2 3 : 78 : 75 : 0.03
+T: 2 3 : 78 : 51 : 0.03
+T: 2 3 : 78 : 48 : 0.01
+T: 2 3 : 78 : 69 : 0.18
+T: 2 3 : 78 : 52 : 0.06
+T: 2 3 : 78 : 66 : 0.06
+T: 2 3 : 78 : 70 : 0.36
+T: 2 3 : 35 : 62 : 0.08
+T: 2 3 : 35 : 61 : 0.01
+T: 2 3 : 35 : 44 : 0.08
+T: 2 3 : 35 : 43 : 0.01
+T: 2 3 : 35 : 41 : 0.01
+T: 2 3 : 35 : 7 : 0.01
+T: 2 3 : 35 : 35 : 0.56
+T: 2 3 : 35 : 5 : 0.01
+T: 2 3 : 35 : 59 : 0.01
+T: 2 3 : 35 : 8 : 0.08
+T: 2 3 : 35 : 32 : 0.07
+T: 2 3 : 35 : 34 : 0.07
+T: 2 3 : 34 : 62 : 0.06
+T: 2 3 : 34 : 61 : 0.02
+T: 2 3 : 34 : 44 : 0.06
+T: 2 3 : 34 : 60 : 0.01
+T: 2 3 : 34 : 43 : 0.02
+T: 2 3 : 34 : 35 : 0.42
+T: 2 3 : 34 : 34 : 0.14
+T: 2 3 : 34 : 40 : 0.01
+T: 2 3 : 34 : 6 : 0.01
+T: 2 3 : 34 : 4 : 0.01
+T: 2 3 : 34 : 58 : 0.01
+T: 2 3 : 34 : 7 : 0.02
+T: 2 3 : 34 : 42 : 0.01
+T: 2 3 : 34 : 8 : 0.06
+T: 2 3 : 34 : 31 : 0.07
+T: 2 3 : 34 : 33 : 0.07
+T: 2 3 : 33 : 61 : 0.06
+T: 2 3 : 33 : 60 : 0.03
+T: 2 3 : 33 : 43 : 0.06
+T: 2 3 : 33 : 42 : 0.03
+T: 2 3 : 33 : 39 : 0.01
+T: 2 3 : 33 : 57 : 0.01
+T: 2 3 : 33 : 6 : 0.03
+T: 2 3 : 33 : 34 : 0.42
+T: 2 3 : 33 : 3 : 0.01
+T: 2 3 : 33 : 7 : 0.06
+T: 2 3 : 33 : 30 : 0.07
+T: 2 3 : 33 : 33 : 0.21
+T: 2 3 : 32 : 62 : 0.01
+T: 2 3 : 32 : 44 : 0.01
+T: 2 3 : 32 : 58 : 0.01
+T: 2 3 : 32 : 41 : 0.07
+T: 2 3 : 32 : 40 : 0.01
+T: 2 3 : 32 : 35 : 0.07
+T: 2 3 : 32 : 32 : 0.49
+T: 2 3 : 32 : 38 : 0.01
+T: 2 3 : 32 : 4 : 0.01
+T: 2 3 : 32 : 2 : 0.01
+T: 2 3 : 32 : 56 : 0.01
+T: 2 3 : 32 : 5 : 0.07
+T: 2 3 : 32 : 59 : 0.07
+T: 2 3 : 32 : 8 : 0.01
+T: 2 3 : 32 : 29 : 0.07
+T: 2 3 : 32 : 31 : 0.07
+T: 2 3 : 31 : 61 : 0.01
+T: 2 3 : 31 : 59 : 0.06
+T: 2 3 : 31 : 58 : 0.01
+T: 2 3 : 31 : 57 : 0.01
+T: 2 3 : 31 : 28 : 0.07
+T: 2 3 : 31 : 7 : 0.01
+T: 2 3 : 31 : 5 : 0.06
+T: 2 3 : 31 : 39 : 0.01
+T: 2 3 : 31 : 41 : 0.06
+T: 2 3 : 31 : 4 : 0.01
+T: 2 3 : 31 : 55 : 0.01
+T: 2 3 : 31 : 1 : 0.01
+T: 2 3 : 31 : 37 : 0.01
+T: 2 3 : 31 : 30 : 0.07
+T: 2 3 : 31 : 31 : 0.07
+T: 2 3 : 31 : 32 : 0.42
+T: 2 3 : 31 : 34 : 0.07
+T: 2 3 : 31 : 3 : 0.01
+T: 2 3 : 31 : 40 : 0.01
+T: 2 3 : 31 : 43 : 0.01
+T: 2 3 : 30 : 60 : 0.01
+T: 2 3 : 30 : 58 : 0.06
+T: 2 3 : 30 : 42 : 0.01
+T: 2 3 : 30 : 39 : 0.02
+T: 2 3 : 30 : 36 : 0.01
+T: 2 3 : 30 : 33 : 0.07
+T: 2 3 : 30 : 31 : 0.42
+T: 2 3 : 30 : 54 : 0.01
+T: 2 3 : 30 : 3 : 0.02
+T: 2 3 : 30 : 0 : 0.01
+T: 2 3 : 30 : 4 : 0.06
+T: 2 3 : 30 : 57 : 0.02
+T: 2 3 : 30 : 40 : 0.06
+T: 2 3 : 30 : 6 : 0.01
+T: 2 3 : 30 : 27 : 0.07
+T: 2 3 : 30 : 30 : 0.14
+T: 2 3 : 29 : 59 : 0.01
+T: 2 3 : 29 : 41 : 0.01
+T: 2 3 : 29 : 55 : 0.01
+T: 2 3 : 29 : 38 : 0.08
+T: 2 3 : 29 : 37 : 0.01
+T: 2 3 : 29 : 2 : 0.08
+T: 2 3 : 29 : 1 : 0.01
+T: 2 3 : 29 : 29 : 0.56
+T: 2 3 : 29 : 56 : 0.08
+T: 2 3 : 29 : 5 : 0.01
+T: 2 3 : 29 : 28 : 0.07
+T: 2 3 : 29 : 32 : 0.07
+T: 2 3 : 28 : 58 : 0.01
+T: 2 3 : 28 : 56 : 0.06
+T: 2 3 : 28 : 40 : 0.01
+T: 2 3 : 28 : 54 : 0.01
+T: 2 3 : 28 : 37 : 0.02
+T: 2 3 : 28 : 31 : 0.07
+T: 2 3 : 28 : 29 : 0.42
+T: 2 3 : 28 : 1 : 0.02
+T: 2 3 : 28 : 0 : 0.01
+T: 2 3 : 28 : 28 : 0.14
+T: 2 3 : 28 : 36 : 0.01
+T: 2 3 : 28 : 2 : 0.06
+T: 2 3 : 28 : 55 : 0.02
+T: 2 3 : 28 : 38 : 0.06
+T: 2 3 : 28 : 4 : 0.01
+T: 2 3 : 28 : 27 : 0.07
+T: 2 3 : 27 : 57 : 0.01
+T: 2 3 : 27 : 55 : 0.06
+T: 2 3 : 27 : 39 : 0.01
+T: 2 3 : 27 : 36 : 0.03
+T: 2 3 : 27 : 1 : 0.06
+T: 2 3 : 27 : 0 : 0.03
+T: 2 3 : 27 : 28 : 0.42
+T: 2 3 : 27 : 54 : 0.03
+T: 2 3 : 27 : 37 : 0.06
+T: 2 3 : 27 : 3 : 0.01
+T: 2 3 : 27 : 27 : 0.21
+T: 2 3 : 27 : 30 : 0.07
+T: 2 3 : 26 : 53 : 0.08
+T: 2 3 : 26 : 52 : 0.01
+T: 2 3 : 26 : 50 : 0.01
+T: 2 3 : 26 : 16 : 0.06
+T: 2 3 : 26 : 23 : 0.03
+T: 2 3 : 26 : 14 : 0.06
+T: 2 3 : 26 : 17 : 0.48
+T: 2 3 : 26 : 25 : 0.03
+T: 2 3 : 26 : 26 : 0.24
+T: 2 3 : 25 : 53 : 0.06
+T: 2 3 : 25 : 52 : 0.02
+T: 2 3 : 25 : 26 : 0.18
+T: 2 3 : 25 : 25 : 0.06
+T: 2 3 : 25 : 49 : 0.01
+T: 2 3 : 25 : 15 : 0.06
+T: 2 3 : 25 : 22 : 0.03
+T: 2 3 : 25 : 13 : 0.06
+T: 2 3 : 25 : 16 : 0.12
+T: 2 3 : 25 : 51 : 0.01
+T: 2 3 : 25 : 17 : 0.36
+T: 2 3 : 25 : 24 : 0.03
+T: 2 3 : 24 : 52 : 0.06
+T: 2 3 : 24 : 51 : 0.03
+T: 2 3 : 24 : 48 : 0.01
+T: 2 3 : 24 : 15 : 0.18
+T: 2 3 : 24 : 12 : 0.06
+T: 2 3 : 24 : 16 : 0.36
+T: 2 3 : 24 : 21 : 0.03
+T: 2 3 : 24 : 24 : 0.09
+T: 2 3 : 24 : 25 : 0.18
+T: 2 3 : 23 : 53 : 0.01
+T: 2 3 : 23 : 50 : 0.07
+T: 2 3 : 23 : 49 : 0.01
+T: 2 3 : 23 : 26 : 0.03
+T: 2 3 : 23 : 23 : 0.21
+T: 2 3 : 23 : 47 : 0.01
+T: 2 3 : 23 : 13 : 0.06
+T: 2 3 : 23 : 20 : 0.03
+T: 2 3 : 23 : 11 : 0.06
+T: 2 3 : 23 : 14 : 0.42
+T: 2 3 : 23 : 17 : 0.06
+T: 2 3 : 23 : 22 : 0.03
+T: 2 3 : 22 : 52 : 0.01
+T: 2 3 : 22 : 49 : 0.01
+T: 2 3 : 22 : 25 : 0.03
+T: 2 3 : 22 : 23 : 0.18
+T: 2 3 : 22 : 22 : 0.03
+T: 2 3 : 22 : 21 : 0.03
+T: 2 3 : 22 : 46 : 0.01
+T: 2 3 : 22 : 12 : 0.06
+T: 2 3 : 22 : 19 : 0.03
+T: 2 3 : 22 : 10 : 0.06
+T: 2 3 : 22 : 13 : 0.06
+T: 2 3 : 22 : 48 : 0.01
+T: 2 3 : 22 : 14 : 0.36
+T: 2 3 : 22 : 50 : 0.06
+T: 2 3 : 22 : 16 : 0.06
+T: 2 3 : 21 : 51 : 0.01
+T: 2 3 : 21 : 48 : 0.02
+T: 2 3 : 21 : 45 : 0.01
+T: 2 3 : 21 : 24 : 0.03
+T: 2 3 : 21 : 22 : 0.18
+T: 2 3 : 21 : 12 : 0.12
+T: 2 3 : 21 : 9 : 0.06
+T: 2 3 : 21 : 13 : 0.36
+T: 2 3 : 21 : 49 : 0.06
+T: 2 3 : 21 : 15 : 0.06
+T: 2 3 : 21 : 18 : 0.03
+T: 2 3 : 21 : 21 : 0.06
+T: 2 3 : 20 : 50 : 0.01
+T: 2 3 : 20 : 47 : 0.08
+T: 2 3 : 20 : 46 : 0.01
+T: 2 3 : 20 : 11 : 0.48
+T: 2 3 : 20 : 10 : 0.06
+T: 2 3 : 20 : 14 : 0.06
+T: 2 3 : 20 : 19 : 0.03
+T: 2 3 : 20 : 20 : 0.24
+T: 2 3 : 20 : 23 : 0.03
+T: 2 3 : 19 : 49 : 0.01
+T: 2 3 : 19 : 46 : 0.02
+T: 2 3 : 19 : 22 : 0.03
+T: 2 3 : 19 : 20 : 0.18
+T: 2 3 : 19 : 10 : 0.12
+T: 2 3 : 19 : 9 : 0.06
+T: 2 3 : 19 : 45 : 0.01
+T: 2 3 : 19 : 11 : 0.36
+T: 2 3 : 19 : 18 : 0.03
+T: 2 3 : 19 : 47 : 0.06
+T: 2 3 : 19 : 13 : 0.06
+T: 2 3 : 19 : 19 : 0.06
+T: 2 3 : 18 : 48 : 0.01
+T: 2 3 : 18 : 45 : 0.03
+T: 2 3 : 18 : 10 : 0.36
+T: 2 3 : 18 : 9 : 0.18
+T: 2 3 : 18 : 46 : 0.06
+T: 2 3 : 18 : 12 : 0.06
+T: 2 3 : 18 : 19 : 0.18
+T: 2 3 : 18 : 18 : 0.09
+T: 2 3 : 18 : 21 : 0.03
+T: 2 3 : 17 : 44 : 0.08
+T: 2 3 : 17 : 43 : 0.01
+T: 2 3 : 17 : 26 : 0.08
+T: 2 3 : 17 : 23 : 0.01
+T: 2 3 : 17 : 41 : 0.01
+T: 2 3 : 17 : 7 : 0.06
+T: 2 3 : 17 : 14 : 0.02
+T: 2 3 : 17 : 5 : 0.06
+T: 2 3 : 17 : 25 : 0.01
+T: 2 3 : 17 : 8 : 0.48
+T: 2 3 : 17 : 16 : 0.02
+T: 2 3 : 17 : 17 : 0.16
+T: 2 3 : 16 : 44 : 0.06
+T: 2 3 : 16 : 43 : 0.02
+T: 2 3 : 16 : 26 : 0.06
+T: 2 3 : 16 : 22 : 0.01
+T: 2 3 : 16 : 17 : 0.12
+T: 2 3 : 16 : 16 : 0.04
+T: 2 3 : 16 : 40 : 0.01
+T: 2 3 : 16 : 6 : 0.06
+T: 2 3 : 16 : 13 : 0.02
+T: 2 3 : 16 : 4 : 0.06
+T: 2 3 : 16 : 24 : 0.01
+T: 2 3 : 16 : 7 : 0.12
+T: 2 3 : 16 : 42 : 0.01
+T: 2 3 : 16 : 25 : 0.02
+T: 2 3 : 16 : 8 : 0.36
+T: 2 3 : 16 : 15 : 0.02
+T: 2 3 : 5 : 35 : 0.01
+T: 2 3 : 5 : 32 : 0.07
+T: 2 3 : 5 : 29 : 0.01
+T: 2 3 : 5 : 17 : 0.01
+T: 2 3 : 5 : 31 : 0.01
+T: 2 3 : 5 : 14 : 0.07
+T: 2 3 : 5 : 4 : 0.08
+T: 2 3 : 5 : 11 : 0.01
+T: 2 3 : 5 : 2 : 0.08
+T: 2 3 : 5 : 5 : 0.56
+T: 2 3 : 5 : 8 : 0.08
+T: 2 3 : 5 : 13 : 0.01
+T: 2 3 : 4 : 34 : 0.01
+T: 2 3 : 4 : 32 : 0.06
+T: 2 3 : 4 : 28 : 0.01
+T: 2 3 : 4 : 16 : 0.01
+T: 2 3 : 4 : 31 : 0.01
+T: 2 3 : 4 : 14 : 0.06
+T: 2 3 : 4 : 30 : 0.01
+T: 2 3 : 4 : 13 : 0.01
+T: 2 3 : 4 : 12 : 0.01
+T: 2 3 : 4 : 3 : 0.08
+T: 2 3 : 4 : 10 : 0.01
+T: 2 3 : 4 : 1 : 0.08
+T: 2 3 : 4 : 4 : 0.08
+T: 2 3 : 4 : 5 : 0.48
+T: 2 3 : 4 : 7 : 0.08
+T: 2 3 : 3 : 33 : 0.01
+T: 2 3 : 3 : 31 : 0.06
+T: 2 3 : 3 : 27 : 0.01
+T: 2 3 : 3 : 15 : 0.01
+T: 2 3 : 3 : 30 : 0.02
+T: 2 3 : 3 : 13 : 0.06
+T: 2 3 : 3 : 3 : 0.16
+T: 2 3 : 3 : 0 : 0.08
+T: 2 3 : 3 : 4 : 0.48
+T: 2 3 : 3 : 6 : 0.08
+T: 2 3 : 3 : 9 : 0.01
+T: 2 3 : 3 : 12 : 0.02
+T: 2 3 : 2 : 32 : 0.01
+T: 2 3 : 2 : 29 : 0.08
+T: 2 3 : 2 : 2 : 0.64
+T: 2 3 : 2 : 1 : 0.08
+T: 2 3 : 2 : 5 : 0.08
+T: 2 3 : 2 : 10 : 0.01
+T: 2 3 : 2 : 28 : 0.01
+T: 2 3 : 2 : 11 : 0.08
+T: 2 3 : 2 : 14 : 0.01
+T: 2 3 : 0 : 30 : 0.01
+T: 2 3 : 0 : 28 : 0.06
+T: 2 3 : 0 : 1 : 0.48
+T: 2 3 : 0 : 0 : 0.24
+T: 2 3 : 0 : 3 : 0.08
+T: 2 3 : 0 : 27 : 0.03
+T: 2 3 : 0 : 10 : 0.06
+T: 2 3 : 0 : 9 : 0.03
+T: 2 3 : 0 : 12 : 0.01
+T: 2 3 : 1 : 31 : 0.01
+T: 2 3 : 1 : 29 : 0.06
+T: 2 3 : 1 : 13 : 0.01
+T: 2 3 : 1 : 28 : 0.02
+T: 2 3 : 1 : 11 : 0.06
+T: 2 3 : 1 : 1 : 0.16
+T: 2 3 : 1 : 0 : 0.08
+T: 2 3 : 1 : 2 : 0.48
+T: 2 3 : 1 : 9 : 0.01
+T: 2 3 : 1 : 4 : 0.08
+T: 2 3 : 1 : 27 : 0.01
+T: 2 3 : 1 : 10 : 0.02
+T: 2 3 : 6 : 34 : 0.06
+T: 2 3 : 6 : 30 : 0.01
+T: 2 3 : 6 : 6 : 0.24
+T: 2 3 : 6 : 3 : 0.08
+T: 2 3 : 6 : 7 : 0.48
+T: 2 3 : 6 : 12 : 0.01
+T: 2 3 : 6 : 15 : 0.03
+T: 2 3 : 6 : 33 : 0.03
+T: 2 3 : 6 : 16 : 0.06
+T: 2 3 : 7 : 35 : 0.06
+T: 2 3 : 7 : 31 : 0.01
+T: 2 3 : 7 : 34 : 0.02
+T: 2 3 : 7 : 17 : 0.06
+T: 2 3 : 7 : 33 : 0.01
+T: 2 3 : 7 : 16 : 0.02
+T: 2 3 : 7 : 6 : 0.08
+T: 2 3 : 7 : 13 : 0.01
+T: 2 3 : 7 : 4 : 0.08
+T: 2 3 : 7 : 7 : 0.16
+T: 2 3 : 7 : 8 : 0.48
+T: 2 3 : 7 : 15 : 0.01
+T: 2 3 : 8 : 35 : 0.08
+T: 2 3 : 8 : 32 : 0.01
+T: 2 3 : 8 : 7 : 0.08
+T: 2 3 : 8 : 14 : 0.01
+T: 2 3 : 8 : 5 : 0.08
+T: 2 3 : 8 : 8 : 0.64
+T: 2 3 : 8 : 16 : 0.01
+T: 2 3 : 8 : 34 : 0.01
+T: 2 3 : 8 : 17 : 0.08
+T: 2 3 : 9 : 39 : 0.01
+T: 2 3 : 9 : 21 : 0.01
+T: 2 3 : 9 : 36 : 0.03
+T: 2 3 : 9 : 19 : 0.06
+T: 2 3 : 9 : 18 : 0.03
+T: 2 3 : 9 : 1 : 0.36
+T: 2 3 : 9 : 0 : 0.18
+T: 2 3 : 9 : 37 : 0.06
+T: 2 3 : 9 : 3 : 0.06
+T: 2 3 : 9 : 10 : 0.12
+T: 2 3 : 9 : 9 : 0.06
+T: 2 3 : 9 : 12 : 0.02
+T: 2 3 : 10 : 40 : 0.01
+T: 2 3 : 10 : 22 : 0.01
+T: 2 3 : 10 : 37 : 0.02
+T: 2 3 : 10 : 20 : 0.06
+T: 2 3 : 10 : 13 : 0.02
+T: 2 3 : 10 : 11 : 0.12
+T: 2 3 : 10 : 18 : 0.01
+T: 2 3 : 10 : 1 : 0.12
+T: 2 3 : 10 : 0 : 0.06
+T: 2 3 : 10 : 36 : 0.01
+T: 2 3 : 10 : 19 : 0.02
+T: 2 3 : 10 : 2 : 0.36
+T: 2 3 : 10 : 9 : 0.02
+T: 2 3 : 10 : 38 : 0.06
+T: 2 3 : 10 : 4 : 0.06
+T: 2 3 : 10 : 10 : 0.04
+T: 2 3 : 11 : 41 : 0.01
+T: 2 3 : 11 : 38 : 0.08
+T: 2 3 : 11 : 23 : 0.01
+T: 2 3 : 11 : 37 : 0.01
+T: 2 3 : 11 : 20 : 0.08
+T: 2 3 : 11 : 19 : 0.01
+T: 2 3 : 11 : 2 : 0.48
+T: 2 3 : 11 : 1 : 0.06
+T: 2 3 : 11 : 5 : 0.06
+T: 2 3 : 11 : 10 : 0.02
+T: 2 3 : 11 : 11 : 0.16
+T: 2 3 : 11 : 14 : 0.02
+T: 2 3 : 12 : 42 : 0.01
+T: 2 3 : 12 : 36 : 0.01
+T: 2 3 : 12 : 24 : 0.01
+T: 2 3 : 12 : 39 : 0.02
+T: 2 3 : 12 : 22 : 0.06
+T: 2 3 : 12 : 18 : 0.01
+T: 2 3 : 12 : 15 : 0.02
+T: 2 3 : 12 : 13 : 0.12
+T: 2 3 : 12 : 3 : 0.12
+T: 2 3 : 12 : 0 : 0.06
+T: 2 3 : 12 : 21 : 0.02
+T: 2 3 : 12 : 4 : 0.36
+T: 2 3 : 12 : 40 : 0.06
+T: 2 3 : 12 : 6 : 0.06
+T: 2 3 : 12 : 9 : 0.02
+T: 2 3 : 12 : 12 : 0.04
+T: 2 3 : 13 : 43 : 0.01
+T: 2 3 : 13 : 39 : 0.01
+T: 2 3 : 13 : 7 : 0.06
+T: 2 3 : 13 : 5 : 0.36
+T: 2 3 : 13 : 22 : 0.01
+T: 2 3 : 13 : 41 : 0.06
+T: 2 3 : 13 : 4 : 0.06
+T: 2 3 : 13 : 21 : 0.01
+T: 2 3 : 13 : 1 : 0.06
+T: 2 3 : 13 : 10 : 0.02
+T: 2 3 : 13 : 40 : 0.01
+T: 2 3 : 13 : 3 : 0.06
+T: 2 3 : 13 : 37 : 0.01
+T: 2 3 : 13 : 12 : 0.02
+T: 2 3 : 13 : 13 : 0.02
+T: 2 3 : 13 : 14 : 0.12
+T: 2 3 : 13 : 16 : 0.02
+T: 2 3 : 13 : 19 : 0.01
+T: 2 3 : 13 : 23 : 0.06
+T: 2 3 : 13 : 25 : 0.01
+T: 2 3 : 14 : 44 : 0.01
+T: 2 3 : 14 : 41 : 0.07
+T: 2 3 : 14 : 26 : 0.01
+T: 2 3 : 14 : 40 : 0.01
+T: 2 3 : 14 : 23 : 0.07
+T: 2 3 : 14 : 20 : 0.01
+T: 2 3 : 14 : 17 : 0.02
+T: 2 3 : 14 : 14 : 0.14
+T: 2 3 : 14 : 38 : 0.01
+T: 2 3 : 14 : 4 : 0.06
+T: 2 3 : 14 : 11 : 0.02
+T: 2 3 : 14 : 2 : 0.06
+T: 2 3 : 14 : 22 : 0.01
+T: 2 3 : 14 : 5 : 0.42
+T: 2 3 : 14 : 8 : 0.06
+T: 2 3 : 14 : 13 : 0.02
+T: 2 3 : 15 : 43 : 0.06
+T: 2 3 : 15 : 39 : 0.01
+T: 2 3 : 15 : 42 : 0.03
+T: 2 3 : 15 : 25 : 0.06
+T: 2 3 : 15 : 21 : 0.01
+T: 2 3 : 15 : 6 : 0.18
+T: 2 3 : 15 : 3 : 0.06
+T: 2 3 : 15 : 24 : 0.03
+T: 2 3 : 15 : 7 : 0.36
+T: 2 3 : 15 : 12 : 0.02
+T: 2 3 : 15 : 15 : 0.06
+T: 2 3 : 15 : 16 : 0.12
+T: 2 3 : 36 : 66 : 0.01
+T: 2 3 : 36 : 48 : 0.01
+T: 2 3 : 36 : 39 : 0.01
+T: 2 3 : 36 : 37 : 0.06
+T: 2 3 : 36 : 36 : 0.03
+T: 2 3 : 36 : 9 : 0.03
+T: 2 3 : 36 : 64 : 0.06
+T: 2 3 : 36 : 30 : 0.06
+T: 2 3 : 36 : 63 : 0.03
+T: 2 3 : 36 : 46 : 0.06
+T: 2 3 : 36 : 12 : 0.01
+T: 2 3 : 36 : 10 : 0.06
+T: 2 3 : 36 : 27 : 0.18
+T: 2 3 : 36 : 45 : 0.03
+T: 2 3 : 36 : 28 : 0.36
+T: 2 3 : 37 : 67 : 0.01
+T: 2 3 : 37 : 63 : 0.01
+T: 2 3 : 37 : 65 : 0.06
+T: 2 3 : 37 : 28 : 0.12
+T: 2 3 : 37 : 11 : 0.06
+T: 2 3 : 37 : 45 : 0.01
+T: 2 3 : 37 : 64 : 0.02
+T: 2 3 : 37 : 27 : 0.06
+T: 2 3 : 37 : 13 : 0.01
+T: 2 3 : 37 : 10 : 0.02
+T: 2 3 : 37 : 47 : 0.06
+T: 2 3 : 37 : 29 : 0.36
+T: 2 3 : 37 : 9 : 0.01
+T: 2 3 : 37 : 46 : 0.02
+T: 2 3 : 37 : 31 : 0.06
+T: 2 3 : 37 : 36 : 0.01
+T: 2 3 : 37 : 37 : 0.02
+T: 2 3 : 37 : 38 : 0.06
+T: 2 3 : 37 : 40 : 0.01
+T: 2 3 : 37 : 49 : 0.01
+T: 2 3 : 38 : 68 : 0.01
+T: 2 3 : 38 : 50 : 0.01
+T: 2 3 : 38 : 64 : 0.01
+T: 2 3 : 38 : 47 : 0.08
+T: 2 3 : 38 : 41 : 0.01
+T: 2 3 : 38 : 38 : 0.08
+T: 2 3 : 38 : 37 : 0.01
+T: 2 3 : 38 : 32 : 0.06
+T: 2 3 : 38 : 10 : 0.01
+T: 2 3 : 38 : 65 : 0.08
+T: 2 3 : 38 : 14 : 0.01
+T: 2 3 : 38 : 11 : 0.08
+T: 2 3 : 38 : 28 : 0.06
+T: 2 3 : 38 : 46 : 0.01
+T: 2 3 : 38 : 29 : 0.48
+T: 2 3 : 39 : 69 : 0.01
+T: 2 3 : 39 : 66 : 0.02
+T: 2 3 : 39 : 63 : 0.01
+T: 2 3 : 39 : 15 : 0.01
+T: 2 3 : 39 : 27 : 0.06
+T: 2 3 : 39 : 13 : 0.06
+T: 2 3 : 39 : 67 : 0.06
+T: 2 3 : 39 : 30 : 0.12
+T: 2 3 : 39 : 9 : 0.01
+T: 2 3 : 39 : 49 : 0.06
+T: 2 3 : 39 : 12 : 0.02
+T: 2 3 : 39 : 31 : 0.36
+T: 2 3 : 39 : 48 : 0.02
+T: 2 3 : 39 : 33 : 0.06
+T: 2 3 : 39 : 36 : 0.01
+T: 2 3 : 39 : 39 : 0.02
+T: 2 3 : 39 : 40 : 0.06
+T: 2 3 : 39 : 42 : 0.01
+T: 2 3 : 39 : 45 : 0.01
+T: 2 3 : 39 : 51 : 0.01
+T: 2 3 : 40 : 70 : 0.01
+T: 2 3 : 40 : 66 : 0.01
+T: 2 3 : 40 : 64 : 0.01
+T: 2 3 : 40 : 52 : 0.01
+T: 2 3 : 40 : 48 : 0.01
+T: 2 3 : 40 : 16 : 0.01
+T: 2 3 : 40 : 28 : 0.06
+T: 2 3 : 40 : 14 : 0.06
+T: 2 3 : 40 : 68 : 0.06
+T: 2 3 : 40 : 31 : 0.06
+T: 2 3 : 40 : 50 : 0.06
+T: 2 3 : 40 : 13 : 0.01
+T: 2 3 : 40 : 67 : 0.01
+T: 2 3 : 40 : 30 : 0.06
+T: 2 3 : 40 : 10 : 0.01
+T: 2 3 : 40 : 49 : 0.01
+T: 2 3 : 40 : 12 : 0.01
+T: 2 3 : 40 : 46 : 0.01
+T: 2 3 : 40 : 32 : 0.36
+T: 2 3 : 40 : 34 : 0.06
+T: 2 3 : 40 : 37 : 0.01
+T: 2 3 : 40 : 39 : 0.01
+T: 2 3 : 40 : 40 : 0.01
+T: 2 3 : 40 : 41 : 0.06
+T: 2 3 : 40 : 43 : 0.01
+T: 2 3 : 41 : 71 : 0.01
+T: 2 3 : 41 : 67 : 0.01
+T: 2 3 : 41 : 65 : 0.01
+T: 2 3 : 41 : 29 : 0.06
+T: 2 3 : 41 : 68 : 0.07
+T: 2 3 : 41 : 31 : 0.06
+T: 2 3 : 41 : 14 : 0.07
+T: 2 3 : 41 : 17 : 0.01
+T: 2 3 : 41 : 11 : 0.01
+T: 2 3 : 41 : 47 : 0.01
+T: 2 3 : 41 : 32 : 0.42
+T: 2 3 : 41 : 49 : 0.01
+T: 2 3 : 41 : 35 : 0.06
+T: 2 3 : 41 : 38 : 0.01
+T: 2 3 : 41 : 40 : 0.01
+T: 2 3 : 41 : 41 : 0.07
+T: 2 3 : 41 : 44 : 0.01
+T: 2 3 : 41 : 13 : 0.01
+T: 2 3 : 41 : 50 : 0.07
+T: 2 3 : 41 : 53 : 0.01
+T: 2 3 : 42 : 70 : 0.06
+T: 2 3 : 42 : 69 : 0.03
+T: 2 3 : 42 : 52 : 0.06
+T: 2 3 : 42 : 48 : 0.01
+T: 2 3 : 42 : 43 : 0.06
+T: 2 3 : 42 : 42 : 0.03
+T: 2 3 : 42 : 39 : 0.01
+T: 2 3 : 42 : 66 : 0.01
+T: 2 3 : 42 : 15 : 0.03
+T: 2 3 : 42 : 12 : 0.01
+T: 2 3 : 42 : 33 : 0.18
+T: 2 3 : 42 : 16 : 0.06
+T: 2 3 : 42 : 30 : 0.06
+T: 2 3 : 42 : 51 : 0.03
+T: 2 3 : 42 : 34 : 0.36
+T: 2 3 : 43 : 69 : 0.01
+T: 2 3 : 43 : 67 : 0.01
+T: 2 3 : 43 : 70 : 0.02
+T: 2 3 : 43 : 33 : 0.06
+T: 2 3 : 43 : 31 : 0.06
+T: 2 3 : 43 : 17 : 0.06
+T: 2 3 : 43 : 71 : 0.06
+T: 2 3 : 43 : 34 : 0.12
+T: 2 3 : 43 : 51 : 0.01
+T: 2 3 : 43 : 13 : 0.01
+T: 2 3 : 43 : 49 : 0.01
+T: 2 3 : 43 : 35 : 0.36
+T: 2 3 : 43 : 15 : 0.01
+T: 2 3 : 43 : 52 : 0.02
+T: 2 3 : 43 : 40 : 0.01
+T: 2 3 : 43 : 42 : 0.01
+T: 2 3 : 43 : 43 : 0.02
+T: 2 3 : 43 : 44 : 0.06
+T: 2 3 : 43 : 16 : 0.02
+T: 2 3 : 43 : 53 : 0.06
+T: 2 3 : 44 : 71 : 0.08
+T: 2 3 : 44 : 70 : 0.01
+T: 2 3 : 44 : 53 : 0.08
+T: 2 3 : 44 : 44 : 0.08
+T: 2 3 : 44 : 43 : 0.01
+T: 2 3 : 44 : 41 : 0.01
+T: 2 3 : 44 : 50 : 0.01
+T: 2 3 : 44 : 16 : 0.01
+T: 2 3 : 44 : 14 : 0.01
+T: 2 3 : 44 : 52 : 0.01
+T: 2 3 : 44 : 35 : 0.48
+T: 2 3 : 44 : 32 : 0.06
+T: 2 3 : 44 : 68 : 0.01
+T: 2 3 : 44 : 17 : 0.08
+T: 2 3 : 44 : 34 : 0.06
+T: 2 3 : 45 : 75 : 0.01
+T: 2 3 : 45 : 48 : 0.02
+T: 2 3 : 45 : 46 : 0.12
+T: 2 3 : 45 : 45 : 0.06
+T: 2 3 : 45 : 18 : 0.03
+T: 2 3 : 45 : 73 : 0.06
+T: 2 3 : 45 : 39 : 0.06
+T: 2 3 : 45 : 72 : 0.03
+T: 2 3 : 45 : 21 : 0.01
+T: 2 3 : 45 : 19 : 0.06
+T: 2 3 : 45 : 36 : 0.18
+T: 2 3 : 45 : 37 : 0.36
+T: 2 3 : 46 : 76 : 0.01
+T: 2 3 : 46 : 49 : 0.02
+T: 2 3 : 46 : 47 : 0.12
+T: 2 3 : 46 : 46 : 0.04
+T: 2 3 : 46 : 45 : 0.02
+T: 2 3 : 46 : 74 : 0.06
+T: 2 3 : 46 : 40 : 0.06
+T: 2 3 : 46 : 72 : 0.01
+T: 2 3 : 46 : 38 : 0.36
+T: 2 3 : 46 : 18 : 0.01
+T: 2 3 : 46 : 73 : 0.02
+T: 2 3 : 46 : 22 : 0.01
+T: 2 3 : 46 : 19 : 0.02
+T: 2 3 : 46 : 36 : 0.06
+T: 2 3 : 46 : 20 : 0.06
+T: 2 3 : 46 : 37 : 0.12
+T: 2 3 : 47 : 77 : 0.01
+T: 2 3 : 47 : 73 : 0.01
+T: 2 3 : 47 : 50 : 0.02
+T: 2 3 : 47 : 47 : 0.16
+T: 2 3 : 47 : 46 : 0.02
+T: 2 3 : 47 : 41 : 0.06
+T: 2 3 : 47 : 19 : 0.01
+T: 2 3 : 47 : 74 : 0.08
+T: 2 3 : 47 : 23 : 0.01
+T: 2 3 : 47 : 20 : 0.08
+T: 2 3 : 47 : 37 : 0.06
+T: 2 3 : 47 : 38 : 0.48
+T: 2 3 : 48 : 78 : 0.01
+T: 2 3 : 48 : 51 : 0.02
+T: 2 3 : 48 : 49 : 0.12
+T: 2 3 : 48 : 48 : 0.04
+T: 2 3 : 48 : 45 : 0.02
+T: 2 3 : 48 : 76 : 0.06
+T: 2 3 : 48 : 42 : 0.06
+T: 2 3 : 48 : 40 : 0.36
+T: 2 3 : 48 : 72 : 0.01
+T: 2 3 : 48 : 21 : 0.02
+T: 2 3 : 48 : 18 : 0.01
+T: 2 3 : 48 : 39 : 0.12
+T: 2 3 : 48 : 22 : 0.06
+T: 2 3 : 48 : 36 : 0.06
+T: 2 3 : 48 : 75 : 0.02
+T: 2 3 : 48 : 24 : 0.01
+T: 2 3 : 49 : 79 : 0.01
+T: 2 3 : 49 : 75 : 0.01
+T: 2 3 : 49 : 25 : 0.01
+T: 2 3 : 49 : 37 : 0.06
+T: 2 3 : 49 : 23 : 0.06
+T: 2 3 : 49 : 77 : 0.06
+T: 2 3 : 49 : 40 : 0.06
+T: 2 3 : 49 : 22 : 0.01
+T: 2 3 : 49 : 76 : 0.01
+T: 2 3 : 49 : 39 : 0.06
+T: 2 3 : 49 : 73 : 0.01
+T: 2 3 : 49 : 19 : 0.01
+T: 2 3 : 49 : 21 : 0.01
+T: 2 3 : 49 : 41 : 0.36
+T: 2 3 : 49 : 43 : 0.06
+T: 2 3 : 49 : 46 : 0.02
+T: 2 3 : 49 : 48 : 0.02
+T: 2 3 : 49 : 49 : 0.02
+T: 2 3 : 49 : 50 : 0.12
+T: 2 3 : 49 : 52 : 0.02
+T: 2 3 : 50 : 80 : 0.01
+T: 2 3 : 50 : 76 : 0.01
+T: 2 3 : 50 : 53 : 0.02
+T: 2 3 : 50 : 50 : 0.14
+T: 2 3 : 50 : 49 : 0.02
+T: 2 3 : 50 : 47 : 0.02
+T: 2 3 : 50 : 44 : 0.06
+T: 2 3 : 50 : 41 : 0.42
+T: 2 3 : 50 : 22 : 0.01
+T: 2 3 : 50 : 20 : 0.01
+T: 2 3 : 50 : 77 : 0.07
+T: 2 3 : 50 : 26 : 0.01
+T: 2 3 : 50 : 74 : 0.01
+T: 2 3 : 50 : 23 : 0.07
+T: 2 3 : 50 : 40 : 0.06
+T: 2 3 : 50 : 38 : 0.06
+T: 2 3 : 51 : 79 : 0.06
+T: 2 3 : 51 : 78 : 0.03
+T: 2 3 : 51 : 52 : 0.12
+T: 2 3 : 51 : 51 : 0.06
+T: 2 3 : 51 : 48 : 0.02
+T: 2 3 : 51 : 75 : 0.01
+T: 2 3 : 51 : 24 : 0.03
+T: 2 3 : 51 : 21 : 0.01
+T: 2 3 : 51 : 42 : 0.18
+T: 2 3 : 51 : 25 : 0.06
+T: 2 3 : 51 : 39 : 0.06
+T: 2 3 : 51 : 43 : 0.36
+T: 2 3 : 52 : 80 : 0.06
+T: 2 3 : 52 : 79 : 0.02
+T: 2 3 : 52 : 53 : 0.12
+T: 2 3 : 52 : 52 : 0.04
+T: 2 3 : 52 : 51 : 0.02
+T: 2 3 : 52 : 49 : 0.02
+T: 2 3 : 52 : 78 : 0.01
+T: 2 3 : 52 : 44 : 0.36
+T: 2 3 : 52 : 24 : 0.01
+T: 2 3 : 52 : 22 : 0.01
+T: 2 3 : 52 : 43 : 0.12
+T: 2 3 : 52 : 26 : 0.06
+T: 2 3 : 52 : 40 : 0.06
+T: 2 3 : 52 : 76 : 0.01
+T: 2 3 : 52 : 25 : 0.02
+T: 2 3 : 52 : 42 : 0.06
+T: 2 3 : 53 : 80 : 0.08
+T: 2 3 : 53 : 79 : 0.01
+T: 2 3 : 53 : 53 : 0.16
+T: 2 3 : 53 : 52 : 0.02
+T: 2 3 : 53 : 50 : 0.02
+T: 2 3 : 53 : 25 : 0.01
+T: 2 3 : 53 : 23 : 0.01
+T: 2 3 : 53 : 44 : 0.48
+T: 2 3 : 53 : 41 : 0.06
+T: 2 3 : 53 : 77 : 0.01
+T: 2 3 : 53 : 26 : 0.08
+T: 2 3 : 53 : 43 : 0.06
+T: 2 3 : 54 : 66 : 0.01
+T: 2 3 : 54 : 63 : 0.03
+T: 2 3 : 54 : 28 : 0.06
+T: 2 3 : 54 : 27 : 0.03
+T: 2 3 : 54 : 55 : 0.48
+T: 2 3 : 54 : 64 : 0.06
+T: 2 3 : 54 : 30 : 0.01
+T: 2 3 : 54 : 54 : 0.24
+T: 2 3 : 54 : 57 : 0.08
+T: 2 3 : 55 : 67 : 0.01
+T: 2 3 : 55 : 64 : 0.02
+T: 2 3 : 55 : 58 : 0.08
+T: 2 3 : 55 : 56 : 0.48
+T: 2 3 : 55 : 28 : 0.02
+T: 2 3 : 55 : 27 : 0.01
+T: 2 3 : 55 : 55 : 0.16
+T: 2 3 : 55 : 63 : 0.01
+T: 2 3 : 55 : 29 : 0.06
+T: 2 3 : 55 : 65 : 0.06
+T: 2 3 : 55 : 31 : 0.01
+T: 2 3 : 55 : 54 : 0.08
+T: 2 3 : 56 : 68 : 0.01
+T: 2 3 : 56 : 65 : 0.08
+T: 2 3 : 56 : 64 : 0.01
+T: 2 3 : 56 : 29 : 0.08
+T: 2 3 : 56 : 28 : 0.01
+T: 2 3 : 56 : 56 : 0.64
+T: 2 3 : 56 : 32 : 0.01
+T: 2 3 : 56 : 55 : 0.08
+T: 2 3 : 56 : 59 : 0.08
+T: 2 3 : 57 : 69 : 0.01
+T: 2 3 : 57 : 66 : 0.02
+T: 2 3 : 57 : 63 : 0.01
+T: 2 3 : 57 : 60 : 0.08
+T: 2 3 : 57 : 58 : 0.48
+T: 2 3 : 57 : 30 : 0.02
+T: 2 3 : 57 : 27 : 0.01
+T: 2 3 : 57 : 31 : 0.06
+T: 2 3 : 57 : 67 : 0.06
+T: 2 3 : 57 : 33 : 0.01
+T: 2 3 : 57 : 54 : 0.08
+T: 2 3 : 57 : 57 : 0.16
+T: 2 3 : 58 : 70 : 0.01
+T: 2 3 : 58 : 67 : 0.01
+T: 2 3 : 58 : 61 : 0.08
+T: 2 3 : 58 : 59 : 0.48
+T: 2 3 : 58 : 58 : 0.08
+T: 2 3 : 58 : 57 : 0.08
+T: 2 3 : 58 : 64 : 0.01
+T: 2 3 : 58 : 30 : 0.01
+T: 2 3 : 58 : 28 : 0.01
+T: 2 3 : 58 : 31 : 0.01
+T: 2 3 : 58 : 66 : 0.01
+T: 2 3 : 58 : 32 : 0.06
+T: 2 3 : 58 : 68 : 0.06
+T: 2 3 : 58 : 34 : 0.01
+T: 2 3 : 58 : 55 : 0.08
+T: 2 3 : 59 : 71 : 0.01
+T: 2 3 : 59 : 68 : 0.07
+T: 2 3 : 59 : 67 : 0.01
+T: 2 3 : 59 : 62 : 0.08
+T: 2 3 : 59 : 59 : 0.56
+T: 2 3 : 59 : 65 : 0.01
+T: 2 3 : 59 : 31 : 0.01
+T: 2 3 : 59 : 29 : 0.01
+T: 2 3 : 59 : 32 : 0.07
+T: 2 3 : 59 : 35 : 0.01
+T: 2 3 : 59 : 56 : 0.08
+T: 2 3 : 59 : 58 : 0.08
+T: 2 3 : 60 : 70 : 0.06
+T: 2 3 : 60 : 69 : 0.03
+T: 2 3 : 60 : 66 : 0.01
+T: 2 3 : 60 : 33 : 0.03
+T: 2 3 : 60 : 61 : 0.48
+T: 2 3 : 60 : 30 : 0.01
+T: 2 3 : 60 : 34 : 0.06
+T: 2 3 : 60 : 57 : 0.08
+T: 2 3 : 60 : 60 : 0.24
+T: 2 3 : 61 : 71 : 0.06
+T: 2 3 : 61 : 70 : 0.02
+T: 2 3 : 61 : 62 : 0.48
+T: 2 3 : 61 : 61 : 0.16
+T: 2 3 : 61 : 67 : 0.01
+T: 2 3 : 61 : 33 : 0.01
+T: 2 3 : 61 : 31 : 0.01
+T: 2 3 : 61 : 34 : 0.02
+T: 2 3 : 61 : 69 : 0.01
+T: 2 3 : 61 : 35 : 0.06
+T: 2 3 : 61 : 58 : 0.08
+T: 2 3 : 61 : 60 : 0.08
+T: 2 3 : 62 : 71 : 0.08
+T: 2 3 : 62 : 70 : 0.01
+T: 2 3 : 62 : 68 : 0.01
+T: 2 3 : 62 : 34 : 0.01
+T: 2 3 : 62 : 62 : 0.64
+T: 2 3 : 62 : 32 : 0.01
+T: 2 3 : 62 : 35 : 0.08
+T: 2 3 : 62 : 59 : 0.08
+T: 2 3 : 62 : 61 : 0.08
+T: 2 3 : 63 : 75 : 0.01
+T: 2 3 : 63 : 66 : 0.02
+T: 2 3 : 63 : 64 : 0.12
+T: 2 3 : 63 : 63 : 0.06
+T: 2 3 : 63 : 36 : 0.03
+T: 2 3 : 63 : 57 : 0.06
+T: 2 3 : 63 : 73 : 0.06
+T: 2 3 : 63 : 39 : 0.01
+T: 2 3 : 63 : 37 : 0.06
+T: 2 3 : 63 : 54 : 0.18
+T: 2 3 : 63 : 72 : 0.03
+T: 2 3 : 63 : 55 : 0.36
+T: 2 3 : 64 : 76 : 0.01
+T: 2 3 : 64 : 67 : 0.02
+T: 2 3 : 64 : 65 : 0.12
+T: 2 3 : 64 : 64 : 0.04
+T: 2 3 : 64 : 63 : 0.02
+T: 2 3 : 64 : 58 : 0.06
+T: 2 3 : 64 : 73 : 0.02
+T: 2 3 : 64 : 56 : 0.36
+T: 2 3 : 64 : 36 : 0.01
+T: 2 3 : 64 : 74 : 0.06
+T: 2 3 : 64 : 40 : 0.01
+T: 2 3 : 64 : 37 : 0.02
+T: 2 3 : 64 : 54 : 0.06
+T: 2 3 : 64 : 72 : 0.01
+T: 2 3 : 64 : 38 : 0.06
+T: 2 3 : 64 : 55 : 0.12
+T: 2 3 : 65 : 77 : 0.01
+T: 2 3 : 65 : 74 : 0.08
+T: 2 3 : 65 : 68 : 0.02
+T: 2 3 : 65 : 65 : 0.16
+T: 2 3 : 65 : 64 : 0.02
+T: 2 3 : 65 : 59 : 0.06
+T: 2 3 : 65 : 37 : 0.01
+T: 2 3 : 65 : 41 : 0.01
+T: 2 3 : 65 : 38 : 0.08
+T: 2 3 : 65 : 55 : 0.06
+T: 2 3 : 65 : 73 : 0.01
+T: 2 3 : 65 : 56 : 0.48
+T: 2 3 : 66 : 78 : 0.01
+T: 2 3 : 66 : 72 : 0.01
+T: 2 3 : 66 : 69 : 0.02
+T: 2 3 : 66 : 67 : 0.12
+T: 2 3 : 66 : 66 : 0.04
+T: 2 3 : 66 : 63 : 0.02
+T: 2 3 : 66 : 60 : 0.06
+T: 2 3 : 66 : 75 : 0.02
+T: 2 3 : 66 : 58 : 0.36
+T: 2 3 : 66 : 39 : 0.02
+T: 2 3 : 66 : 36 : 0.01
+T: 2 3 : 66 : 57 : 0.12
+T: 2 3 : 66 : 40 : 0.06
+T: 2 3 : 66 : 54 : 0.06
+T: 2 3 : 66 : 76 : 0.06
+T: 2 3 : 66 : 42 : 0.01
+T: 2 3 : 67 : 79 : 0.01
+T: 2 3 : 67 : 75 : 0.01
+T: 2 3 : 67 : 43 : 0.01
+T: 2 3 : 67 : 55 : 0.06
+T: 2 3 : 67 : 41 : 0.06
+T: 2 3 : 67 : 58 : 0.06
+T: 2 3 : 67 : 77 : 0.06
+T: 2 3 : 67 : 40 : 0.01
+T: 2 3 : 67 : 57 : 0.06
+T: 2 3 : 67 : 37 : 0.01
+T: 2 3 : 67 : 76 : 0.01
+T: 2 3 : 67 : 39 : 0.01
+T: 2 3 : 67 : 73 : 0.01
+T: 2 3 : 67 : 59 : 0.36
+T: 2 3 : 67 : 61 : 0.06
+T: 2 3 : 67 : 64 : 0.02
+T: 2 3 : 67 : 66 : 0.02
+T: 2 3 : 67 : 67 : 0.02
+T: 2 3 : 67 : 68 : 0.12
+T: 2 3 : 67 : 70 : 0.02
+T: 2 3 : 68 : 80 : 0.01
+T: 2 3 : 68 : 77 : 0.07
+T: 2 3 : 68 : 71 : 0.02
+T: 2 3 : 68 : 68 : 0.14
+T: 2 3 : 68 : 67 : 0.02
+T: 2 3 : 68 : 65 : 0.02
+T: 2 3 : 68 : 62 : 0.06
+T: 2 3 : 68 : 76 : 0.01
+T: 2 3 : 68 : 59 : 0.42
+T: 2 3 : 68 : 74 : 0.01
+T: 2 3 : 68 : 40 : 0.01
+T: 2 3 : 68 : 38 : 0.01
+T: 2 3 : 68 : 44 : 0.01
+T: 2 3 : 68 : 41 : 0.07
+T: 2 3 : 68 : 58 : 0.06
+T: 2 3 : 68 : 56 : 0.06
+T: 2 3 : 69 : 79 : 0.06
+T: 2 3 : 69 : 75 : 0.01
+T: 2 3 : 69 : 70 : 0.12
+T: 2 3 : 69 : 69 : 0.06
+T: 2 3 : 69 : 66 : 0.02
+T: 2 3 : 69 : 42 : 0.03
+T: 2 3 : 69 : 39 : 0.01
+T: 2 3 : 69 : 60 : 0.18
+T: 2 3 : 69 : 43 : 0.06
+T: 2 3 : 69 : 57 : 0.06
+T: 2 3 : 69 : 78 : 0.03
+T: 2 3 : 69 : 61 : 0.36
+T: 2 3 : 70 : 80 : 0.06
+T: 2 3 : 70 : 71 : 0.12
+T: 2 3 : 70 : 70 : 0.04
+T: 2 3 : 70 : 69 : 0.02
+T: 2 3 : 70 : 67 : 0.02
+T: 2 3 : 70 : 79 : 0.02
+T: 2 3 : 70 : 62 : 0.36
+T: 2 3 : 70 : 76 : 0.01
+T: 2 3 : 70 : 42 : 0.01
+T: 2 3 : 70 : 40 : 0.01
+T: 2 3 : 70 : 78 : 0.01
+T: 2 3 : 70 : 61 : 0.12
+T: 2 3 : 70 : 44 : 0.06
+T: 2 3 : 70 : 58 : 0.06
+T: 2 3 : 70 : 43 : 0.02
+T: 2 3 : 70 : 60 : 0.06
+T: 2 3 : 71 : 80 : 0.08
+T: 2 3 : 71 : 71 : 0.16
+T: 2 3 : 71 : 70 : 0.02
+T: 2 3 : 71 : 68 : 0.02
+T: 2 3 : 71 : 77 : 0.01
+T: 2 3 : 71 : 43 : 0.01
+T: 2 3 : 71 : 41 : 0.01
+T: 2 3 : 71 : 79 : 0.01
+T: 2 3 : 71 : 62 : 0.48
+T: 2 3 : 71 : 59 : 0.06
+T: 2 3 : 71 : 44 : 0.08
+T: 2 3 : 71 : 61 : 0.06
+T: 2 3 : 72 : 75 : 0.03
+T: 2 3 : 72 : 73 : 0.18
+T: 2 3 : 72 : 72 : 0.09
+T: 2 3 : 72 : 45 : 0.03
+T: 2 3 : 72 : 66 : 0.06
+T: 2 3 : 72 : 48 : 0.01
+T: 2 3 : 72 : 46 : 0.06
+T: 2 3 : 72 : 63 : 0.18
+T: 2 3 : 72 : 64 : 0.36
+T: 2 3 : 73 : 76 : 0.03
+T: 2 3 : 73 : 74 : 0.18
+T: 2 3 : 73 : 73 : 0.06
+T: 2 3 : 73 : 72 : 0.03
+T: 2 3 : 73 : 67 : 0.06
+T: 2 3 : 73 : 65 : 0.36
+T: 2 3 : 73 : 45 : 0.01
+T: 2 3 : 73 : 49 : 0.01
+T: 2 3 : 73 : 46 : 0.02
+T: 2 3 : 73 : 63 : 0.06
+T: 2 3 : 73 : 47 : 0.06
+T: 2 3 : 73 : 64 : 0.12
+T: 2 3 : 74 : 77 : 0.03
+T: 2 3 : 74 : 74 : 0.24
+T: 2 3 : 74 : 73 : 0.03
+T: 2 3 : 74 : 68 : 0.06
+T: 2 3 : 74 : 46 : 0.01
+T: 2 3 : 74 : 50 : 0.01
+T: 2 3 : 74 : 47 : 0.08
+T: 2 3 : 74 : 64 : 0.06
+T: 2 3 : 74 : 65 : 0.48
+T: 2 3 : 75 : 78 : 0.03
+T: 2 3 : 75 : 76 : 0.18
+T: 2 3 : 75 : 75 : 0.06
+T: 2 3 : 75 : 72 : 0.03
+T: 2 3 : 75 : 69 : 0.06
+T: 2 3 : 75 : 67 : 0.36
+T: 2 3 : 75 : 48 : 0.02
+T: 2 3 : 75 : 45 : 0.01
+T: 2 3 : 75 : 66 : 0.12
+T: 2 3 : 75 : 49 : 0.06
+T: 2 3 : 75 : 63 : 0.06
+T: 2 3 : 75 : 51 : 0.01
+T: 2 3 : 76 : 79 : 0.03
+T: 2 3 : 76 : 77 : 0.18
+T: 2 3 : 76 : 76 : 0.03
+T: 2 3 : 76 : 75 : 0.03
+T: 2 3 : 76 : 73 : 0.03
+T: 2 3 : 76 : 70 : 0.06
+T: 2 3 : 76 : 68 : 0.36
+T: 2 3 : 76 : 48 : 0.01
+T: 2 3 : 76 : 46 : 0.01
+T: 2 3 : 76 : 66 : 0.06
+T: 2 3 : 76 : 49 : 0.01
+T: 2 3 : 76 : 67 : 0.06
+T: 2 3 : 76 : 50 : 0.06
+T: 2 3 : 76 : 64 : 0.06
+T: 2 3 : 76 : 52 : 0.01
+T: 2 3 : 77 : 80 : 0.03
+T: 2 3 : 77 : 77 : 0.21
+T: 2 3 : 77 : 76 : 0.03
+T: 2 3 : 77 : 74 : 0.03
+T: 2 3 : 77 : 71 : 0.06
+T: 2 3 : 77 : 68 : 0.42
+T: 2 3 : 77 : 49 : 0.01
+T: 2 3 : 77 : 47 : 0.01
+T: 2 3 : 77 : 53 : 0.01
+T: 2 3 : 77 : 50 : 0.07
+T: 2 3 : 77 : 67 : 0.06
+T: 2 3 : 77 : 65 : 0.06
+T: 2 4 : 80 : 80 : 0.3
+T: 2 4 : 80 : 53 : 0.1
+T: 2 4 : 80 : 71 : 0.6
+T: 2 4 : 79 : 79 : 0.3
+T: 2 4 : 79 : 52 : 0.1
+T: 2 4 : 79 : 70 : 0.6
+T: 2 4 : 78 : 78 : 0.3
+T: 2 4 : 78 : 51 : 0.1
+T: 2 4 : 78 : 69 : 0.6
+T: 2 4 : 35 : 62 : 0.1
+T: 2 4 : 35 : 44 : 0.1
+T: 2 4 : 35 : 8 : 0.1
+T: 2 4 : 35 : 35 : 0.7
+T: 2 4 : 34 : 61 : 0.1
+T: 2 4 : 34 : 43 : 0.1
+T: 2 4 : 34 : 7 : 0.1
+T: 2 4 : 34 : 34 : 0.7
+T: 2 4 : 33 : 60 : 0.1
+T: 2 4 : 33 : 42 : 0.1
+T: 2 4 : 33 : 6 : 0.1
+T: 2 4 : 33 : 33 : 0.7
+T: 2 4 : 32 : 59 : 0.1
+T: 2 4 : 32 : 41 : 0.1
+T: 2 4 : 32 : 5 : 0.1
+T: 2 4 : 32 : 32 : 0.7
+T: 2 4 : 31 : 58 : 0.1
+T: 2 4 : 31 : 40 : 0.1
+T: 2 4 : 31 : 4 : 0.1
+T: 2 4 : 31 : 31 : 0.7
+T: 2 4 : 30 : 57 : 0.1
+T: 2 4 : 30 : 39 : 0.1
+T: 2 4 : 30 : 3 : 0.1
+T: 2 4 : 30 : 30 : 0.7
+T: 2 4 : 29 : 56 : 0.1
+T: 2 4 : 29 : 38 : 0.1
+T: 2 4 : 29 : 2 : 0.1
+T: 2 4 : 29 : 29 : 0.7
+T: 2 4 : 28 : 55 : 0.1
+T: 2 4 : 28 : 37 : 0.1
+T: 2 4 : 28 : 1 : 0.1
+T: 2 4 : 28 : 28 : 0.7
+T: 2 4 : 27 : 54 : 0.1
+T: 2 4 : 27 : 36 : 0.1
+T: 2 4 : 27 : 0 : 0.1
+T: 2 4 : 27 : 27 : 0.7
+T: 2 4 : 26 : 53 : 0.1
+T: 2 4 : 26 : 17 : 0.6
+T: 2 4 : 26 : 26 : 0.3
+T: 2 4 : 25 : 52 : 0.1
+T: 2 4 : 25 : 16 : 0.6
+T: 2 4 : 25 : 25 : 0.3
+T: 2 4 : 24 : 51 : 0.1
+T: 2 4 : 24 : 15 : 0.6
+T: 2 4 : 24 : 24 : 0.3
+T: 2 4 : 23 : 50 : 0.1
+T: 2 4 : 23 : 14 : 0.6
+T: 2 4 : 23 : 23 : 0.3
+T: 2 4 : 22 : 49 : 0.1
+T: 2 4 : 22 : 13 : 0.6
+T: 2 4 : 22 : 22 : 0.3
+T: 2 4 : 21 : 48 : 0.1
+T: 2 4 : 21 : 12 : 0.6
+T: 2 4 : 21 : 21 : 0.3
+T: 2 4 : 20 : 47 : 0.1
+T: 2 4 : 20 : 11 : 0.6
+T: 2 4 : 20 : 20 : 0.3
+T: 2 4 : 19 : 46 : 0.1
+T: 2 4 : 19 : 10 : 0.6
+T: 2 4 : 19 : 19 : 0.3
+T: 2 4 : 18 : 45 : 0.1
+T: 2 4 : 18 : 9 : 0.6
+T: 2 4 : 18 : 18 : 0.3
+T: 2 4 : 17 : 44 : 0.1
+T: 2 4 : 17 : 26 : 0.1
+T: 2 4 : 17 : 8 : 0.6
+T: 2 4 : 17 : 17 : 0.2
+T: 2 4 : 16 : 43 : 0.1
+T: 2 4 : 16 : 25 : 0.1
+T: 2 4 : 16 : 7 : 0.6
+T: 2 4 : 16 : 16 : 0.2
+T: 2 4 : 5 : 32 : 0.1
+T: 2 4 : 5 : 5 : 0.8
+T: 2 4 : 5 : 14 : 0.1
+T: 2 4 : 4 : 31 : 0.1
+T: 2 4 : 4 : 4 : 0.8
+T: 2 4 : 4 : 13 : 0.1
+T: 2 4 : 3 : 30 : 0.1
+T: 2 4 : 3 : 3 : 0.8
+T: 2 4 : 3 : 12 : 0.1
+T: 2 4 : 2 : 29 : 0.1
+T: 2 4 : 2 : 2 : 0.8
+T: 2 4 : 2 : 11 : 0.1
+T: 2 4 : 0 : 27 : 0.1
+T: 2 4 : 0 : 0 : 0.8
+T: 2 4 : 0 : 9 : 0.1
+T: 2 4 : 1 : 28 : 0.1
+T: 2 4 : 1 : 1 : 0.8
+T: 2 4 : 1 : 10 : 0.1
+T: 2 4 : 6 : 33 : 0.1
+T: 2 4 : 6 : 6 : 0.8
+T: 2 4 : 6 : 15 : 0.1
+T: 2 4 : 7 : 34 : 0.1
+T: 2 4 : 7 : 7 : 0.8
+T: 2 4 : 7 : 16 : 0.1
+T: 2 4 : 8 : 35 : 0.1
+T: 2 4 : 8 : 8 : 0.8
+T: 2 4 : 8 : 17 : 0.1
+T: 2 4 : 9 : 36 : 0.1
+T: 2 4 : 9 : 18 : 0.1
+T: 2 4 : 9 : 0 : 0.6
+T: 2 4 : 9 : 9 : 0.2
+T: 2 4 : 10 : 37 : 0.1
+T: 2 4 : 10 : 19 : 0.1
+T: 2 4 : 10 : 1 : 0.6
+T: 2 4 : 10 : 10 : 0.2
+T: 2 4 : 11 : 38 : 0.1
+T: 2 4 : 11 : 20 : 0.1
+T: 2 4 : 11 : 2 : 0.6
+T: 2 4 : 11 : 11 : 0.2
+T: 2 4 : 12 : 39 : 0.1
+T: 2 4 : 12 : 21 : 0.1
+T: 2 4 : 12 : 3 : 0.6
+T: 2 4 : 12 : 12 : 0.2
+T: 2 4 : 13 : 40 : 0.1
+T: 2 4 : 13 : 22 : 0.1
+T: 2 4 : 13 : 4 : 0.6
+T: 2 4 : 13 : 13 : 0.2
+T: 2 4 : 14 : 41 : 0.1
+T: 2 4 : 14 : 23 : 0.1
+T: 2 4 : 14 : 5 : 0.6
+T: 2 4 : 14 : 14 : 0.2
+T: 2 4 : 15 : 42 : 0.1
+T: 2 4 : 15 : 24 : 0.1
+T: 2 4 : 15 : 6 : 0.6
+T: 2 4 : 15 : 15 : 0.2
+T: 2 4 : 36 : 63 : 0.1
+T: 2 4 : 36 : 45 : 0.1
+T: 2 4 : 36 : 36 : 0.1
+T: 2 4 : 36 : 9 : 0.1
+T: 2 4 : 36 : 27 : 0.6
+T: 2 4 : 37 : 64 : 0.1
+T: 2 4 : 37 : 46 : 0.1
+T: 2 4 : 37 : 37 : 0.1
+T: 2 4 : 37 : 10 : 0.1
+T: 2 4 : 37 : 28 : 0.6
+T: 2 4 : 38 : 65 : 0.1
+T: 2 4 : 38 : 47 : 0.1
+T: 2 4 : 38 : 38 : 0.1
+T: 2 4 : 38 : 11 : 0.1
+T: 2 4 : 38 : 29 : 0.6
+T: 2 4 : 39 : 66 : 0.1
+T: 2 4 : 39 : 48 : 0.1
+T: 2 4 : 39 : 39 : 0.1
+T: 2 4 : 39 : 12 : 0.1
+T: 2 4 : 39 : 30 : 0.6
+T: 2 4 : 40 : 67 : 0.1
+T: 2 4 : 40 : 49 : 0.1
+T: 2 4 : 40 : 40 : 0.1
+T: 2 4 : 40 : 13 : 0.1
+T: 2 4 : 40 : 31 : 0.6
+T: 2 4 : 41 : 68 : 0.1
+T: 2 4 : 41 : 50 : 0.1
+T: 2 4 : 41 : 41 : 0.1
+T: 2 4 : 41 : 14 : 0.1
+T: 2 4 : 41 : 32 : 0.6
+T: 2 4 : 42 : 69 : 0.1
+T: 2 4 : 42 : 51 : 0.1
+T: 2 4 : 42 : 42 : 0.1
+T: 2 4 : 42 : 15 : 0.1
+T: 2 4 : 42 : 33 : 0.6
+T: 2 4 : 43 : 70 : 0.1
+T: 2 4 : 43 : 52 : 0.1
+T: 2 4 : 43 : 43 : 0.1
+T: 2 4 : 43 : 16 : 0.1
+T: 2 4 : 43 : 34 : 0.6
+T: 2 4 : 44 : 71 : 0.1
+T: 2 4 : 44 : 53 : 0.1
+T: 2 4 : 44 : 44 : 0.1
+T: 2 4 : 44 : 17 : 0.1
+T: 2 4 : 44 : 35 : 0.6
+T: 2 4 : 45 : 72 : 0.1
+T: 2 4 : 45 : 45 : 0.2
+T: 2 4 : 45 : 18 : 0.1
+T: 2 4 : 45 : 36 : 0.6
+T: 2 4 : 46 : 73 : 0.1
+T: 2 4 : 46 : 46 : 0.2
+T: 2 4 : 46 : 19 : 0.1
+T: 2 4 : 46 : 37 : 0.6
+T: 2 4 : 47 : 74 : 0.1
+T: 2 4 : 47 : 47 : 0.2
+T: 2 4 : 47 : 20 : 0.1
+T: 2 4 : 47 : 38 : 0.6
+T: 2 4 : 48 : 75 : 0.1
+T: 2 4 : 48 : 48 : 0.2
+T: 2 4 : 48 : 21 : 0.1
+T: 2 4 : 48 : 39 : 0.6
+T: 2 4 : 49 : 76 : 0.1
+T: 2 4 : 49 : 49 : 0.2
+T: 2 4 : 49 : 22 : 0.1
+T: 2 4 : 49 : 40 : 0.6
+T: 2 4 : 50 : 77 : 0.1
+T: 2 4 : 50 : 50 : 0.2
+T: 2 4 : 50 : 23 : 0.1
+T: 2 4 : 50 : 41 : 0.6
+T: 2 4 : 51 : 78 : 0.1
+T: 2 4 : 51 : 51 : 0.2
+T: 2 4 : 51 : 24 : 0.1
+T: 2 4 : 51 : 42 : 0.6
+T: 2 4 : 52 : 79 : 0.1
+T: 2 4 : 52 : 52 : 0.2
+T: 2 4 : 52 : 25 : 0.1
+T: 2 4 : 52 : 43 : 0.6
+T: 2 4 : 53 : 80 : 0.1
+T: 2 4 : 53 : 53 : 0.2
+T: 2 4 : 53 : 26 : 0.1
+T: 2 4 : 53 : 44 : 0.6
+T: 2 4 : 54 : 63 : 0.1
+T: 2 4 : 54 : 27 : 0.1
+T: 2 4 : 54 : 54 : 0.8
+T: 2 4 : 55 : 64 : 0.1
+T: 2 4 : 55 : 28 : 0.1
+T: 2 4 : 55 : 55 : 0.8
+T: 2 4 : 56 : 65 : 0.1
+T: 2 4 : 56 : 29 : 0.1
+T: 2 4 : 56 : 56 : 0.8
+T: 2 4 : 57 : 66 : 0.1
+T: 2 4 : 57 : 30 : 0.1
+T: 2 4 : 57 : 57 : 0.8
+T: 2 4 : 58 : 67 : 0.1
+T: 2 4 : 58 : 31 : 0.1
+T: 2 4 : 58 : 58 : 0.8
+T: 2 4 : 59 : 68 : 0.1
+T: 2 4 : 59 : 32 : 0.1
+T: 2 4 : 59 : 59 : 0.8
+T: 2 4 : 60 : 69 : 0.1
+T: 2 4 : 60 : 33 : 0.1
+T: 2 4 : 60 : 60 : 0.8
+T: 2 4 : 61 : 70 : 0.1
+T: 2 4 : 61 : 34 : 0.1
+T: 2 4 : 61 : 61 : 0.8
+T: 2 4 : 62 : 71 : 0.1
+T: 2 4 : 62 : 35 : 0.1
+T: 2 4 : 62 : 62 : 0.8
+T: 2 4 : 63 : 72 : 0.1
+T: 2 4 : 63 : 63 : 0.2
+T: 2 4 : 63 : 36 : 0.1
+T: 2 4 : 63 : 54 : 0.6
+T: 2 4 : 64 : 73 : 0.1
+T: 2 4 : 64 : 64 : 0.2
+T: 2 4 : 64 : 37 : 0.1
+T: 2 4 : 64 : 55 : 0.6
+T: 2 4 : 65 : 74 : 0.1
+T: 2 4 : 65 : 65 : 0.2
+T: 2 4 : 65 : 38 : 0.1
+T: 2 4 : 65 : 56 : 0.6
+T: 2 4 : 66 : 75 : 0.1
+T: 2 4 : 66 : 66 : 0.2
+T: 2 4 : 66 : 39 : 0.1
+T: 2 4 : 66 : 57 : 0.6
+T: 2 4 : 67 : 76 : 0.1
+T: 2 4 : 67 : 67 : 0.2
+T: 2 4 : 67 : 40 : 0.1
+T: 2 4 : 67 : 58 : 0.6
+T: 2 4 : 68 : 77 : 0.1
+T: 2 4 : 68 : 68 : 0.2
+T: 2 4 : 68 : 41 : 0.1
+T: 2 4 : 68 : 59 : 0.6
+T: 2 4 : 69 : 78 : 0.1
+T: 2 4 : 69 : 69 : 0.2
+T: 2 4 : 69 : 42 : 0.1
+T: 2 4 : 69 : 60 : 0.6
+T: 2 4 : 70 : 79 : 0.1
+T: 2 4 : 70 : 70 : 0.2
+T: 2 4 : 70 : 43 : 0.1
+T: 2 4 : 70 : 61 : 0.6
+T: 2 4 : 71 : 80 : 0.1
+T: 2 4 : 71 : 71 : 0.2
+T: 2 4 : 71 : 44 : 0.1
+T: 2 4 : 71 : 62 : 0.6
+T: 2 4 : 72 : 72 : 0.3
+T: 2 4 : 72 : 45 : 0.1
+T: 2 4 : 72 : 63 : 0.6
+T: 2 4 : 73 : 73 : 0.3
+T: 2 4 : 73 : 46 : 0.1
+T: 2 4 : 73 : 64 : 0.6
+T: 2 4 : 74 : 74 : 0.3
+T: 2 4 : 74 : 47 : 0.1
+T: 2 4 : 74 : 65 : 0.6
+T: 2 4 : 75 : 75 : 0.3
+T: 2 4 : 75 : 48 : 0.1
+T: 2 4 : 75 : 66 : 0.6
+T: 2 4 : 76 : 76 : 0.3
+T: 2 4 : 76 : 49 : 0.1
+T: 2 4 : 76 : 67 : 0.6
+T: 2 4 : 77 : 77 : 0.3
+T: 2 4 : 77 : 50 : 0.1
+T: 2 4 : 77 : 68 : 0.6
+T: 3 0 : 80 : 80 : 0.24
+T: 3 0 : 80 : 79 : 0.08
+T: 3 0 : 80 : 77 : 0.48
+T: 3 0 : 80 : 52 : 0.01
+T: 3 0 : 80 : 50 : 0.06
+T: 3 0 : 80 : 71 : 0.03
+T: 3 0 : 80 : 68 : 0.06
+T: 3 0 : 80 : 53 : 0.03
+T: 3 0 : 80 : 70 : 0.01
+T: 3 0 : 79 : 80 : 0.08
+T: 3 0 : 79 : 79 : 0.16
+T: 3 0 : 79 : 78 : 0.08
+T: 3 0 : 79 : 76 : 0.48
+T: 3 0 : 79 : 71 : 0.01
+T: 3 0 : 79 : 51 : 0.01
+T: 3 0 : 79 : 49 : 0.06
+T: 3 0 : 79 : 70 : 0.02
+T: 3 0 : 79 : 53 : 0.01
+T: 3 0 : 79 : 67 : 0.06
+T: 3 0 : 79 : 52 : 0.02
+T: 3 0 : 79 : 69 : 0.01
+T: 3 0 : 78 : 79 : 0.08
+T: 3 0 : 78 : 78 : 0.24
+T: 3 0 : 78 : 75 : 0.48
+T: 3 0 : 78 : 51 : 0.03
+T: 3 0 : 78 : 48 : 0.06
+T: 3 0 : 78 : 69 : 0.03
+T: 3 0 : 78 : 52 : 0.01
+T: 3 0 : 78 : 66 : 0.06
+T: 3 0 : 78 : 70 : 0.01
+T: 3 0 : 35 : 62 : 0.03
+T: 3 0 : 35 : 61 : 0.01
+T: 3 0 : 35 : 44 : 0.18
+T: 3 0 : 35 : 43 : 0.06
+T: 3 0 : 35 : 41 : 0.36
+T: 3 0 : 35 : 7 : 0.01
+T: 3 0 : 35 : 35 : 0.06
+T: 3 0 : 35 : 5 : 0.06
+T: 3 0 : 35 : 59 : 0.06
+T: 3 0 : 35 : 8 : 0.03
+T: 3 0 : 35 : 32 : 0.12
+T: 3 0 : 35 : 34 : 0.02
+T: 3 0 : 34 : 62 : 0.01
+T: 3 0 : 34 : 61 : 0.02
+T: 3 0 : 34 : 44 : 0.06
+T: 3 0 : 34 : 60 : 0.01
+T: 3 0 : 34 : 43 : 0.12
+T: 3 0 : 34 : 35 : 0.02
+T: 3 0 : 34 : 34 : 0.04
+T: 3 0 : 34 : 40 : 0.36
+T: 3 0 : 34 : 6 : 0.01
+T: 3 0 : 34 : 4 : 0.06
+T: 3 0 : 34 : 58 : 0.06
+T: 3 0 : 34 : 7 : 0.02
+T: 3 0 : 34 : 42 : 0.06
+T: 3 0 : 34 : 8 : 0.01
+T: 3 0 : 34 : 31 : 0.12
+T: 3 0 : 34 : 33 : 0.02
+T: 3 0 : 33 : 61 : 0.01
+T: 3 0 : 33 : 60 : 0.03
+T: 3 0 : 33 : 43 : 0.06
+T: 3 0 : 33 : 42 : 0.18
+T: 3 0 : 33 : 39 : 0.36
+T: 3 0 : 33 : 57 : 0.06
+T: 3 0 : 33 : 6 : 0.03
+T: 3 0 : 33 : 34 : 0.02
+T: 3 0 : 33 : 3 : 0.06
+T: 3 0 : 33 : 7 : 0.01
+T: 3 0 : 33 : 30 : 0.12
+T: 3 0 : 33 : 33 : 0.06
+T: 3 0 : 32 : 62 : 0.01
+T: 3 0 : 32 : 44 : 0.06
+T: 3 0 : 32 : 58 : 0.01
+T: 3 0 : 32 : 41 : 0.12
+T: 3 0 : 32 : 40 : 0.06
+T: 3 0 : 32 : 35 : 0.02
+T: 3 0 : 32 : 32 : 0.04
+T: 3 0 : 32 : 38 : 0.36
+T: 3 0 : 32 : 4 : 0.01
+T: 3 0 : 32 : 2 : 0.06
+T: 3 0 : 32 : 56 : 0.06
+T: 3 0 : 32 : 5 : 0.02
+T: 3 0 : 32 : 59 : 0.02
+T: 3 0 : 32 : 8 : 0.01
+T: 3 0 : 32 : 29 : 0.12
+T: 3 0 : 32 : 31 : 0.02
+T: 3 0 : 31 : 61 : 0.01
+T: 3 0 : 31 : 59 : 0.01
+T: 3 0 : 31 : 58 : 0.01
+T: 3 0 : 31 : 57 : 0.01
+T: 3 0 : 31 : 28 : 0.12
+T: 3 0 : 31 : 7 : 0.01
+T: 3 0 : 31 : 5 : 0.01
+T: 3 0 : 31 : 39 : 0.06
+T: 3 0 : 31 : 41 : 0.06
+T: 3 0 : 31 : 4 : 0.01
+T: 3 0 : 31 : 55 : 0.06
+T: 3 0 : 31 : 1 : 0.06
+T: 3 0 : 31 : 37 : 0.36
+T: 3 0 : 31 : 30 : 0.02
+T: 3 0 : 31 : 31 : 0.02
+T: 3 0 : 31 : 32 : 0.02
+T: 3 0 : 31 : 34 : 0.02
+T: 3 0 : 31 : 3 : 0.01
+T: 3 0 : 31 : 40 : 0.06
+T: 3 0 : 31 : 43 : 0.06
+T: 3 0 : 30 : 60 : 0.01
+T: 3 0 : 30 : 58 : 0.01
+T: 3 0 : 30 : 42 : 0.06
+T: 3 0 : 30 : 39 : 0.12
+T: 3 0 : 30 : 36 : 0.36
+T: 3 0 : 30 : 33 : 0.02
+T: 3 0 : 30 : 31 : 0.02
+T: 3 0 : 30 : 54 : 0.06
+T: 3 0 : 30 : 3 : 0.02
+T: 3 0 : 30 : 0 : 0.06
+T: 3 0 : 30 : 4 : 0.01
+T: 3 0 : 30 : 57 : 0.02
+T: 3 0 : 30 : 40 : 0.06
+T: 3 0 : 30 : 6 : 0.01
+T: 3 0 : 30 : 27 : 0.12
+T: 3 0 : 30 : 30 : 0.04
+T: 3 0 : 29 : 59 : 0.01
+T: 3 0 : 29 : 41 : 0.06
+T: 3 0 : 29 : 55 : 0.01
+T: 3 0 : 29 : 38 : 0.48
+T: 3 0 : 29 : 37 : 0.06
+T: 3 0 : 29 : 2 : 0.08
+T: 3 0 : 29 : 1 : 0.01
+T: 3 0 : 29 : 29 : 0.16
+T: 3 0 : 29 : 56 : 0.08
+T: 3 0 : 29 : 5 : 0.01
+T: 3 0 : 29 : 28 : 0.02
+T: 3 0 : 29 : 32 : 0.02
+T: 3 0 : 28 : 58 : 0.01
+T: 3 0 : 28 : 56 : 0.01
+T: 3 0 : 28 : 40 : 0.06
+T: 3 0 : 28 : 54 : 0.01
+T: 3 0 : 28 : 37 : 0.42
+T: 3 0 : 28 : 31 : 0.02
+T: 3 0 : 28 : 29 : 0.02
+T: 3 0 : 28 : 1 : 0.07
+T: 3 0 : 28 : 0 : 0.01
+T: 3 0 : 28 : 28 : 0.14
+T: 3 0 : 28 : 36 : 0.06
+T: 3 0 : 28 : 2 : 0.01
+T: 3 0 : 28 : 55 : 0.07
+T: 3 0 : 28 : 38 : 0.06
+T: 3 0 : 28 : 4 : 0.01
+T: 3 0 : 28 : 27 : 0.02
+T: 3 0 : 27 : 57 : 0.01
+T: 3 0 : 27 : 55 : 0.01
+T: 3 0 : 27 : 39 : 0.06
+T: 3 0 : 27 : 36 : 0.48
+T: 3 0 : 27 : 1 : 0.01
+T: 3 0 : 27 : 0 : 0.08
+T: 3 0 : 27 : 28 : 0.02
+T: 3 0 : 27 : 54 : 0.08
+T: 3 0 : 27 : 37 : 0.06
+T: 3 0 : 27 : 3 : 0.01
+T: 3 0 : 27 : 27 : 0.16
+T: 3 0 : 27 : 30 : 0.02
+T: 3 0 : 26 : 53 : 0.03
+T: 3 0 : 26 : 52 : 0.01
+T: 3 0 : 26 : 50 : 0.06
+T: 3 0 : 26 : 16 : 0.01
+T: 3 0 : 26 : 23 : 0.48
+T: 3 0 : 26 : 14 : 0.06
+T: 3 0 : 26 : 17 : 0.03
+T: 3 0 : 26 : 25 : 0.08
+T: 3 0 : 26 : 26 : 0.24
+T: 3 0 : 25 : 53 : 0.01
+T: 3 0 : 25 : 52 : 0.02
+T: 3 0 : 25 : 26 : 0.08
+T: 3 0 : 25 : 25 : 0.16
+T: 3 0 : 25 : 49 : 0.06
+T: 3 0 : 25 : 15 : 0.01
+T: 3 0 : 25 : 22 : 0.48
+T: 3 0 : 25 : 13 : 0.06
+T: 3 0 : 25 : 16 : 0.02
+T: 3 0 : 25 : 51 : 0.01
+T: 3 0 : 25 : 17 : 0.01
+T: 3 0 : 25 : 24 : 0.08
+T: 3 0 : 24 : 52 : 0.01
+T: 3 0 : 24 : 51 : 0.03
+T: 3 0 : 24 : 48 : 0.06
+T: 3 0 : 24 : 15 : 0.03
+T: 3 0 : 24 : 12 : 0.06
+T: 3 0 : 24 : 16 : 0.01
+T: 3 0 : 24 : 21 : 0.48
+T: 3 0 : 24 : 24 : 0.24
+T: 3 0 : 24 : 25 : 0.08
+T: 3 0 : 23 : 53 : 0.01
+T: 3 0 : 23 : 50 : 0.02
+T: 3 0 : 23 : 49 : 0.01
+T: 3 0 : 23 : 26 : 0.08
+T: 3 0 : 23 : 23 : 0.16
+T: 3 0 : 23 : 47 : 0.06
+T: 3 0 : 23 : 13 : 0.01
+T: 3 0 : 23 : 20 : 0.48
+T: 3 0 : 23 : 11 : 0.06
+T: 3 0 : 23 : 14 : 0.02
+T: 3 0 : 23 : 17 : 0.01
+T: 3 0 : 23 : 22 : 0.08
+T: 3 0 : 22 : 52 : 0.01
+T: 3 0 : 22 : 49 : 0.01
+T: 3 0 : 22 : 25 : 0.08
+T: 3 0 : 22 : 23 : 0.08
+T: 3 0 : 22 : 22 : 0.08
+T: 3 0 : 22 : 21 : 0.08
+T: 3 0 : 22 : 46 : 0.06
+T: 3 0 : 22 : 12 : 0.01
+T: 3 0 : 22 : 19 : 0.48
+T: 3 0 : 22 : 10 : 0.06
+T: 3 0 : 22 : 13 : 0.01
+T: 3 0 : 22 : 48 : 0.01
+T: 3 0 : 22 : 14 : 0.01
+T: 3 0 : 22 : 50 : 0.01
+T: 3 0 : 22 : 16 : 0.01
+T: 3 0 : 21 : 51 : 0.01
+T: 3 0 : 21 : 48 : 0.02
+T: 3 0 : 21 : 45 : 0.06
+T: 3 0 : 21 : 24 : 0.08
+T: 3 0 : 21 : 22 : 0.08
+T: 3 0 : 21 : 12 : 0.02
+T: 3 0 : 21 : 9 : 0.06
+T: 3 0 : 21 : 13 : 0.01
+T: 3 0 : 21 : 49 : 0.01
+T: 3 0 : 21 : 15 : 0.01
+T: 3 0 : 21 : 18 : 0.48
+T: 3 0 : 21 : 21 : 0.16
+T: 3 0 : 20 : 50 : 0.01
+T: 3 0 : 20 : 47 : 0.08
+T: 3 0 : 20 : 46 : 0.01
+T: 3 0 : 20 : 11 : 0.08
+T: 3 0 : 20 : 10 : 0.01
+T: 3 0 : 20 : 14 : 0.01
+T: 3 0 : 20 : 19 : 0.08
+T: 3 0 : 20 : 20 : 0.64
+T: 3 0 : 20 : 23 : 0.08
+T: 3 0 : 19 : 49 : 0.01
+T: 3 0 : 19 : 46 : 0.07
+T: 3 0 : 19 : 22 : 0.08
+T: 3 0 : 19 : 20 : 0.08
+T: 3 0 : 19 : 10 : 0.07
+T: 3 0 : 19 : 9 : 0.01
+T: 3 0 : 19 : 45 : 0.01
+T: 3 0 : 19 : 11 : 0.01
+T: 3 0 : 19 : 18 : 0.08
+T: 3 0 : 19 : 47 : 0.01
+T: 3 0 : 19 : 13 : 0.01
+T: 3 0 : 19 : 19 : 0.56
+T: 3 0 : 18 : 48 : 0.01
+T: 3 0 : 18 : 45 : 0.08
+T: 3 0 : 18 : 10 : 0.01
+T: 3 0 : 18 : 9 : 0.08
+T: 3 0 : 18 : 46 : 0.01
+T: 3 0 : 18 : 12 : 0.01
+T: 3 0 : 18 : 19 : 0.08
+T: 3 0 : 18 : 18 : 0.64
+T: 3 0 : 18 : 21 : 0.08
+T: 3 0 : 17 : 44 : 0.03
+T: 3 0 : 17 : 43 : 0.01
+T: 3 0 : 17 : 26 : 0.18
+T: 3 0 : 17 : 23 : 0.36
+T: 3 0 : 17 : 41 : 0.06
+T: 3 0 : 17 : 7 : 0.01
+T: 3 0 : 17 : 14 : 0.12
+T: 3 0 : 17 : 5 : 0.06
+T: 3 0 : 17 : 25 : 0.06
+T: 3 0 : 17 : 8 : 0.03
+T: 3 0 : 17 : 16 : 0.02
+T: 3 0 : 17 : 17 : 0.06
+T: 3 0 : 16 : 44 : 0.01
+T: 3 0 : 16 : 43 : 0.02
+T: 3 0 : 16 : 26 : 0.06
+T: 3 0 : 16 : 22 : 0.36
+T: 3 0 : 16 : 17 : 0.02
+T: 3 0 : 16 : 16 : 0.04
+T: 3 0 : 16 : 40 : 0.06
+T: 3 0 : 16 : 6 : 0.01
+T: 3 0 : 16 : 13 : 0.12
+T: 3 0 : 16 : 4 : 0.06
+T: 3 0 : 16 : 24 : 0.06
+T: 3 0 : 16 : 7 : 0.02
+T: 3 0 : 16 : 42 : 0.01
+T: 3 0 : 16 : 25 : 0.12
+T: 3 0 : 16 : 8 : 0.01
+T: 3 0 : 16 : 15 : 0.02
+T: 3 0 : 5 : 35 : 0.01
+T: 3 0 : 5 : 32 : 0.02
+T: 3 0 : 5 : 29 : 0.06
+T: 3 0 : 5 : 17 : 0.06
+T: 3 0 : 5 : 31 : 0.01
+T: 3 0 : 5 : 14 : 0.12
+T: 3 0 : 5 : 4 : 0.03
+T: 3 0 : 5 : 11 : 0.36
+T: 3 0 : 5 : 2 : 0.18
+T: 3 0 : 5 : 5 : 0.06
+T: 3 0 : 5 : 8 : 0.03
+T: 3 0 : 5 : 13 : 0.06
+T: 3 0 : 4 : 34 : 0.01
+T: 3 0 : 4 : 32 : 0.01
+T: 3 0 : 4 : 28 : 0.06
+T: 3 0 : 4 : 16 : 0.06
+T: 3 0 : 4 : 31 : 0.01
+T: 3 0 : 4 : 14 : 0.06
+T: 3 0 : 4 : 30 : 0.01
+T: 3 0 : 4 : 13 : 0.06
+T: 3 0 : 4 : 12 : 0.06
+T: 3 0 : 4 : 3 : 0.03
+T: 3 0 : 4 : 10 : 0.36
+T: 3 0 : 4 : 1 : 0.18
+T: 3 0 : 4 : 4 : 0.03
+T: 3 0 : 4 : 5 : 0.03
+T: 3 0 : 4 : 7 : 0.03
+T: 3 0 : 3 : 33 : 0.01
+T: 3 0 : 3 : 31 : 0.01
+T: 3 0 : 3 : 27 : 0.06
+T: 3 0 : 3 : 15 : 0.06
+T: 3 0 : 3 : 30 : 0.02
+T: 3 0 : 3 : 13 : 0.06
+T: 3 0 : 3 : 3 : 0.06
+T: 3 0 : 3 : 0 : 0.18
+T: 3 0 : 3 : 4 : 0.03
+T: 3 0 : 3 : 6 : 0.03
+T: 3 0 : 3 : 9 : 0.36
+T: 3 0 : 3 : 12 : 0.12
+T: 3 0 : 2 : 32 : 0.01
+T: 3 0 : 2 : 29 : 0.08
+T: 3 0 : 2 : 2 : 0.24
+T: 3 0 : 2 : 1 : 0.03
+T: 3 0 : 2 : 5 : 0.03
+T: 3 0 : 2 : 10 : 0.06
+T: 3 0 : 2 : 28 : 0.01
+T: 3 0 : 2 : 11 : 0.48
+T: 3 0 : 2 : 14 : 0.06
+T: 3 0 : 0 : 30 : 0.01
+T: 3 0 : 0 : 28 : 0.01
+T: 3 0 : 0 : 1 : 0.03
+T: 3 0 : 0 : 0 : 0.24
+T: 3 0 : 0 : 3 : 0.03
+T: 3 0 : 0 : 27 : 0.08
+T: 3 0 : 0 : 10 : 0.06
+T: 3 0 : 0 : 9 : 0.48
+T: 3 0 : 0 : 12 : 0.06
+T: 3 0 : 1 : 31 : 0.01
+T: 3 0 : 1 : 29 : 0.01
+T: 3 0 : 1 : 13 : 0.06
+T: 3 0 : 1 : 28 : 0.07
+T: 3 0 : 1 : 11 : 0.06
+T: 3 0 : 1 : 1 : 0.21
+T: 3 0 : 1 : 0 : 0.03
+T: 3 0 : 1 : 2 : 0.03
+T: 3 0 : 1 : 9 : 0.06
+T: 3 0 : 1 : 4 : 0.03
+T: 3 0 : 1 : 27 : 0.01
+T: 3 0 : 1 : 10 : 0.42
+T: 3 0 : 6 : 34 : 0.01
+T: 3 0 : 6 : 30 : 0.06
+T: 3 0 : 6 : 6 : 0.09
+T: 3 0 : 6 : 3 : 0.18
+T: 3 0 : 6 : 7 : 0.03
+T: 3 0 : 6 : 12 : 0.36
+T: 3 0 : 6 : 15 : 0.18
+T: 3 0 : 6 : 33 : 0.03
+T: 3 0 : 6 : 16 : 0.06
+T: 3 0 : 7 : 35 : 0.01
+T: 3 0 : 7 : 31 : 0.06
+T: 3 0 : 7 : 34 : 0.02
+T: 3 0 : 7 : 17 : 0.06
+T: 3 0 : 7 : 33 : 0.01
+T: 3 0 : 7 : 16 : 0.12
+T: 3 0 : 7 : 6 : 0.03
+T: 3 0 : 7 : 13 : 0.36
+T: 3 0 : 7 : 4 : 0.18
+T: 3 0 : 7 : 7 : 0.06
+T: 3 0 : 7 : 8 : 0.03
+T: 3 0 : 7 : 15 : 0.06
+T: 3 0 : 8 : 35 : 0.03
+T: 3 0 : 8 : 32 : 0.06
+T: 3 0 : 8 : 7 : 0.03
+T: 3 0 : 8 : 14 : 0.36
+T: 3 0 : 8 : 5 : 0.18
+T: 3 0 : 8 : 8 : 0.09
+T: 3 0 : 8 : 16 : 0.06
+T: 3 0 : 8 : 34 : 0.01
+T: 3 0 : 8 : 17 : 0.18
+T: 3 0 : 9 : 39 : 0.01
+T: 3 0 : 9 : 21 : 0.06
+T: 3 0 : 9 : 36 : 0.08
+T: 3 0 : 9 : 19 : 0.06
+T: 3 0 : 9 : 18 : 0.48
+T: 3 0 : 9 : 1 : 0.01
+T: 3 0 : 9 : 0 : 0.08
+T: 3 0 : 9 : 37 : 0.01
+T: 3 0 : 9 : 3 : 0.01
+T: 3 0 : 9 : 10 : 0.02
+T: 3 0 : 9 : 9 : 0.16
+T: 3 0 : 9 : 12 : 0.02
+T: 3 0 : 10 : 40 : 0.01
+T: 3 0 : 10 : 22 : 0.06
+T: 3 0 : 10 : 37 : 0.07
+T: 3 0 : 10 : 20 : 0.06
+T: 3 0 : 10 : 13 : 0.02
+T: 3 0 : 10 : 11 : 0.02
+T: 3 0 : 10 : 18 : 0.06
+T: 3 0 : 10 : 1 : 0.07
+T: 3 0 : 10 : 0 : 0.01
+T: 3 0 : 10 : 36 : 0.01
+T: 3 0 : 10 : 19 : 0.42
+T: 3 0 : 10 : 2 : 0.01
+T: 3 0 : 10 : 9 : 0.02
+T: 3 0 : 10 : 38 : 0.01
+T: 3 0 : 10 : 4 : 0.01
+T: 3 0 : 10 : 10 : 0.14
+T: 3 0 : 11 : 41 : 0.01
+T: 3 0 : 11 : 38 : 0.08
+T: 3 0 : 11 : 23 : 0.06
+T: 3 0 : 11 : 37 : 0.01
+T: 3 0 : 11 : 20 : 0.48
+T: 3 0 : 11 : 19 : 0.06
+T: 3 0 : 11 : 2 : 0.08
+T: 3 0 : 11 : 1 : 0.01
+T: 3 0 : 11 : 5 : 0.01
+T: 3 0 : 11 : 10 : 0.02
+T: 3 0 : 11 : 11 : 0.16
+T: 3 0 : 11 : 14 : 0.02
+T: 3 0 : 12 : 42 : 0.01
+T: 3 0 : 12 : 36 : 0.06
+T: 3 0 : 12 : 24 : 0.06
+T: 3 0 : 12 : 39 : 0.02
+T: 3 0 : 12 : 22 : 0.06
+T: 3 0 : 12 : 18 : 0.36
+T: 3 0 : 12 : 15 : 0.02
+T: 3 0 : 12 : 13 : 0.02
+T: 3 0 : 12 : 3 : 0.02
+T: 3 0 : 12 : 0 : 0.06
+T: 3 0 : 12 : 21 : 0.12
+T: 3 0 : 12 : 4 : 0.01
+T: 3 0 : 12 : 40 : 0.01
+T: 3 0 : 12 : 6 : 0.01
+T: 3 0 : 12 : 9 : 0.12
+T: 3 0 : 12 : 12 : 0.04
+T: 3 0 : 13 : 43 : 0.01
+T: 3 0 : 13 : 39 : 0.01
+T: 3 0 : 13 : 7 : 0.01
+T: 3 0 : 13 : 5 : 0.01
+T: 3 0 : 13 : 22 : 0.06
+T: 3 0 : 13 : 41 : 0.01
+T: 3 0 : 13 : 4 : 0.01
+T: 3 0 : 13 : 21 : 0.06
+T: 3 0 : 13 : 1 : 0.06
+T: 3 0 : 13 : 10 : 0.12
+T: 3 0 : 13 : 40 : 0.01
+T: 3 0 : 13 : 3 : 0.01
+T: 3 0 : 13 : 37 : 0.06
+T: 3 0 : 13 : 12 : 0.02
+T: 3 0 : 13 : 13 : 0.02
+T: 3 0 : 13 : 14 : 0.02
+T: 3 0 : 13 : 16 : 0.02
+T: 3 0 : 13 : 19 : 0.36
+T: 3 0 : 13 : 23 : 0.06
+T: 3 0 : 13 : 25 : 0.06
+T: 3 0 : 14 : 44 : 0.01
+T: 3 0 : 14 : 41 : 0.02
+T: 3 0 : 14 : 26 : 0.06
+T: 3 0 : 14 : 40 : 0.01
+T: 3 0 : 14 : 23 : 0.12
+T: 3 0 : 14 : 20 : 0.36
+T: 3 0 : 14 : 17 : 0.02
+T: 3 0 : 14 : 14 : 0.04
+T: 3 0 : 14 : 38 : 0.06
+T: 3 0 : 14 : 4 : 0.01
+T: 3 0 : 14 : 11 : 0.12
+T: 3 0 : 14 : 2 : 0.06
+T: 3 0 : 14 : 22 : 0.06
+T: 3 0 : 14 : 5 : 0.02
+T: 3 0 : 14 : 8 : 0.01
+T: 3 0 : 14 : 13 : 0.02
+T: 3 0 : 15 : 43 : 0.01
+T: 3 0 : 15 : 39 : 0.06
+T: 3 0 : 15 : 42 : 0.03
+T: 3 0 : 15 : 25 : 0.06
+T: 3 0 : 15 : 21 : 0.36
+T: 3 0 : 15 : 6 : 0.03
+T: 3 0 : 15 : 3 : 0.06
+T: 3 0 : 15 : 24 : 0.18
+T: 3 0 : 15 : 7 : 0.01
+T: 3 0 : 15 : 12 : 0.12
+T: 3 0 : 15 : 15 : 0.06
+T: 3 0 : 15 : 16 : 0.02
+T: 3 0 : 36 : 66 : 0.01
+T: 3 0 : 36 : 48 : 0.06
+T: 3 0 : 36 : 39 : 0.01
+T: 3 0 : 36 : 37 : 0.01
+T: 3 0 : 36 : 36 : 0.08
+T: 3 0 : 36 : 9 : 0.08
+T: 3 0 : 36 : 64 : 0.01
+T: 3 0 : 36 : 30 : 0.01
+T: 3 0 : 36 : 63 : 0.08
+T: 3 0 : 36 : 46 : 0.06
+T: 3 0 : 36 : 12 : 0.01
+T: 3 0 : 36 : 10 : 0.01
+T: 3 0 : 36 : 27 : 0.08
+T: 3 0 : 36 : 45 : 0.48
+T: 3 0 : 36 : 28 : 0.01
+T: 3 0 : 37 : 67 : 0.01
+T: 3 0 : 37 : 63 : 0.01
+T: 3 0 : 37 : 65 : 0.01
+T: 3 0 : 37 : 28 : 0.07
+T: 3 0 : 37 : 11 : 0.01
+T: 3 0 : 37 : 45 : 0.06
+T: 3 0 : 37 : 64 : 0.07
+T: 3 0 : 37 : 27 : 0.01
+T: 3 0 : 37 : 13 : 0.01
+T: 3 0 : 37 : 10 : 0.07
+T: 3 0 : 37 : 47 : 0.06
+T: 3 0 : 37 : 29 : 0.01
+T: 3 0 : 37 : 9 : 0.01
+T: 3 0 : 37 : 46 : 0.42
+T: 3 0 : 37 : 31 : 0.01
+T: 3 0 : 37 : 36 : 0.01
+T: 3 0 : 37 : 37 : 0.07
+T: 3 0 : 37 : 38 : 0.01
+T: 3 0 : 37 : 40 : 0.01
+T: 3 0 : 37 : 49 : 0.06
+T: 3 0 : 38 : 68 : 0.01
+T: 3 0 : 38 : 50 : 0.06
+T: 3 0 : 38 : 64 : 0.01
+T: 3 0 : 38 : 47 : 0.48
+T: 3 0 : 38 : 41 : 0.01
+T: 3 0 : 38 : 38 : 0.08
+T: 3 0 : 38 : 37 : 0.01
+T: 3 0 : 38 : 32 : 0.01
+T: 3 0 : 38 : 10 : 0.01
+T: 3 0 : 38 : 65 : 0.08
+T: 3 0 : 38 : 14 : 0.01
+T: 3 0 : 38 : 11 : 0.08
+T: 3 0 : 38 : 28 : 0.01
+T: 3 0 : 38 : 46 : 0.06
+T: 3 0 : 38 : 29 : 0.08
+T: 3 0 : 39 : 69 : 0.01
+T: 3 0 : 39 : 66 : 0.02
+T: 3 0 : 39 : 63 : 0.06
+T: 3 0 : 39 : 15 : 0.01
+T: 3 0 : 39 : 27 : 0.06
+T: 3 0 : 39 : 13 : 0.01
+T: 3 0 : 39 : 67 : 0.01
+T: 3 0 : 39 : 30 : 0.02
+T: 3 0 : 39 : 9 : 0.06
+T: 3 0 : 39 : 49 : 0.06
+T: 3 0 : 39 : 12 : 0.02
+T: 3 0 : 39 : 31 : 0.01
+T: 3 0 : 39 : 48 : 0.12
+T: 3 0 : 39 : 33 : 0.01
+T: 3 0 : 39 : 36 : 0.06
+T: 3 0 : 39 : 39 : 0.02
+T: 3 0 : 39 : 40 : 0.01
+T: 3 0 : 39 : 42 : 0.01
+T: 3 0 : 39 : 45 : 0.36
+T: 3 0 : 39 : 51 : 0.06
+T: 3 0 : 40 : 70 : 0.01
+T: 3 0 : 40 : 66 : 0.01
+T: 3 0 : 40 : 64 : 0.06
+T: 3 0 : 40 : 52 : 0.06
+T: 3 0 : 40 : 48 : 0.06
+T: 3 0 : 40 : 16 : 0.01
+T: 3 0 : 40 : 28 : 0.06
+T: 3 0 : 40 : 14 : 0.01
+T: 3 0 : 40 : 68 : 0.01
+T: 3 0 : 40 : 31 : 0.01
+T: 3 0 : 40 : 50 : 0.06
+T: 3 0 : 40 : 13 : 0.01
+T: 3 0 : 40 : 67 : 0.01
+T: 3 0 : 40 : 30 : 0.01
+T: 3 0 : 40 : 10 : 0.06
+T: 3 0 : 40 : 49 : 0.06
+T: 3 0 : 40 : 12 : 0.01
+T: 3 0 : 40 : 46 : 0.36
+T: 3 0 : 40 : 32 : 0.01
+T: 3 0 : 40 : 34 : 0.01
+T: 3 0 : 40 : 37 : 0.06
+T: 3 0 : 40 : 39 : 0.01
+T: 3 0 : 40 : 40 : 0.01
+T: 3 0 : 40 : 41 : 0.01
+T: 3 0 : 40 : 43 : 0.01
+T: 3 0 : 41 : 71 : 0.01
+T: 3 0 : 41 : 67 : 0.01
+T: 3 0 : 41 : 65 : 0.06
+T: 3 0 : 41 : 29 : 0.06
+T: 3 0 : 41 : 68 : 0.02
+T: 3 0 : 41 : 31 : 0.01
+T: 3 0 : 41 : 14 : 0.02
+T: 3 0 : 41 : 17 : 0.01
+T: 3 0 : 41 : 11 : 0.06
+T: 3 0 : 41 : 47 : 0.36
+T: 3 0 : 41 : 32 : 0.02
+T: 3 0 : 41 : 49 : 0.06
+T: 3 0 : 41 : 35 : 0.01
+T: 3 0 : 41 : 38 : 0.06
+T: 3 0 : 41 : 40 : 0.01
+T: 3 0 : 41 : 41 : 0.02
+T: 3 0 : 41 : 44 : 0.01
+T: 3 0 : 41 : 13 : 0.01
+T: 3 0 : 41 : 50 : 0.12
+T: 3 0 : 41 : 53 : 0.06
+T: 3 0 : 42 : 70 : 0.01
+T: 3 0 : 42 : 69 : 0.03
+T: 3 0 : 42 : 52 : 0.06
+T: 3 0 : 42 : 48 : 0.36
+T: 3 0 : 42 : 43 : 0.01
+T: 3 0 : 42 : 42 : 0.03
+T: 3 0 : 42 : 39 : 0.06
+T: 3 0 : 42 : 66 : 0.06
+T: 3 0 : 42 : 15 : 0.03
+T: 3 0 : 42 : 12 : 0.06
+T: 3 0 : 42 : 33 : 0.03
+T: 3 0 : 42 : 16 : 0.01
+T: 3 0 : 42 : 30 : 0.06
+T: 3 0 : 42 : 51 : 0.18
+T: 3 0 : 42 : 34 : 0.01
+T: 3 0 : 43 : 69 : 0.01
+T: 3 0 : 43 : 67 : 0.06
+T: 3 0 : 43 : 70 : 0.02
+T: 3 0 : 43 : 33 : 0.01
+T: 3 0 : 43 : 31 : 0.06
+T: 3 0 : 43 : 17 : 0.01
+T: 3 0 : 43 : 71 : 0.01
+T: 3 0 : 43 : 34 : 0.02
+T: 3 0 : 43 : 51 : 0.06
+T: 3 0 : 43 : 13 : 0.06
+T: 3 0 : 43 : 49 : 0.36
+T: 3 0 : 43 : 35 : 0.01
+T: 3 0 : 43 : 15 : 0.01
+T: 3 0 : 43 : 52 : 0.12
+T: 3 0 : 43 : 40 : 0.06
+T: 3 0 : 43 : 42 : 0.01
+T: 3 0 : 43 : 43 : 0.02
+T: 3 0 : 43 : 44 : 0.01
+T: 3 0 : 43 : 16 : 0.02
+T: 3 0 : 43 : 53 : 0.06
+T: 3 0 : 44 : 71 : 0.03
+T: 3 0 : 44 : 70 : 0.01
+T: 3 0 : 44 : 53 : 0.18
+T: 3 0 : 44 : 44 : 0.03
+T: 3 0 : 44 : 43 : 0.01
+T: 3 0 : 44 : 41 : 0.06
+T: 3 0 : 44 : 50 : 0.36
+T: 3 0 : 44 : 16 : 0.01
+T: 3 0 : 44 : 14 : 0.06
+T: 3 0 : 44 : 52 : 0.06
+T: 3 0 : 44 : 35 : 0.03
+T: 3 0 : 44 : 32 : 0.06
+T: 3 0 : 44 : 68 : 0.06
+T: 3 0 : 44 : 17 : 0.03
+T: 3 0 : 44 : 34 : 0.01
+T: 3 0 : 45 : 75 : 0.01
+T: 3 0 : 45 : 48 : 0.07
+T: 3 0 : 45 : 46 : 0.07
+T: 3 0 : 45 : 45 : 0.56
+T: 3 0 : 45 : 18 : 0.08
+T: 3 0 : 45 : 73 : 0.01
+T: 3 0 : 45 : 39 : 0.01
+T: 3 0 : 45 : 72 : 0.08
+T: 3 0 : 45 : 21 : 0.01
+T: 3 0 : 45 : 19 : 0.01
+T: 3 0 : 45 : 36 : 0.08
+T: 3 0 : 45 : 37 : 0.01
+T: 3 0 : 46 : 76 : 0.01
+T: 3 0 : 46 : 49 : 0.07
+T: 3 0 : 46 : 47 : 0.07
+T: 3 0 : 46 : 46 : 0.49
+T: 3 0 : 46 : 45 : 0.07
+T: 3 0 : 46 : 74 : 0.01
+T: 3 0 : 46 : 40 : 0.01
+T: 3 0 : 46 : 72 : 0.01
+T: 3 0 : 46 : 38 : 0.01
+T: 3 0 : 46 : 18 : 0.01
+T: 3 0 : 46 : 73 : 0.07
+T: 3 0 : 46 : 22 : 0.01
+T: 3 0 : 46 : 19 : 0.07
+T: 3 0 : 46 : 36 : 0.01
+T: 3 0 : 46 : 20 : 0.01
+T: 3 0 : 46 : 37 : 0.07
+T: 3 0 : 47 : 77 : 0.01
+T: 3 0 : 47 : 73 : 0.01
+T: 3 0 : 47 : 50 : 0.07
+T: 3 0 : 47 : 47 : 0.56
+T: 3 0 : 47 : 46 : 0.07
+T: 3 0 : 47 : 41 : 0.01
+T: 3 0 : 47 : 19 : 0.01
+T: 3 0 : 47 : 74 : 0.08
+T: 3 0 : 47 : 23 : 0.01
+T: 3 0 : 47 : 20 : 0.08
+T: 3 0 : 47 : 37 : 0.01
+T: 3 0 : 47 : 38 : 0.08
+T: 3 0 : 48 : 78 : 0.01
+T: 3 0 : 48 : 51 : 0.07
+T: 3 0 : 48 : 49 : 0.07
+T: 3 0 : 48 : 48 : 0.14
+T: 3 0 : 48 : 45 : 0.42
+T: 3 0 : 48 : 76 : 0.01
+T: 3 0 : 48 : 42 : 0.01
+T: 3 0 : 48 : 40 : 0.01
+T: 3 0 : 48 : 72 : 0.06
+T: 3 0 : 48 : 21 : 0.02
+T: 3 0 : 48 : 18 : 0.06
+T: 3 0 : 48 : 39 : 0.02
+T: 3 0 : 48 : 22 : 0.01
+T: 3 0 : 48 : 36 : 0.06
+T: 3 0 : 48 : 75 : 0.02
+T: 3 0 : 48 : 24 : 0.01
+T: 3 0 : 49 : 79 : 0.01
+T: 3 0 : 49 : 75 : 0.01
+T: 3 0 : 49 : 25 : 0.01
+T: 3 0 : 49 : 37 : 0.06
+T: 3 0 : 49 : 23 : 0.01
+T: 3 0 : 49 : 77 : 0.01
+T: 3 0 : 49 : 40 : 0.01
+T: 3 0 : 49 : 22 : 0.01
+T: 3 0 : 49 : 76 : 0.01
+T: 3 0 : 49 : 39 : 0.01
+T: 3 0 : 49 : 73 : 0.06
+T: 3 0 : 49 : 19 : 0.06
+T: 3 0 : 49 : 21 : 0.01
+T: 3 0 : 49 : 41 : 0.01
+T: 3 0 : 49 : 43 : 0.01
+T: 3 0 : 49 : 46 : 0.42
+T: 3 0 : 49 : 48 : 0.07
+T: 3 0 : 49 : 49 : 0.07
+T: 3 0 : 49 : 50 : 0.07
+T: 3 0 : 49 : 52 : 0.07
+T: 3 0 : 50 : 80 : 0.01
+T: 3 0 : 50 : 76 : 0.01
+T: 3 0 : 50 : 53 : 0.07
+T: 3 0 : 50 : 50 : 0.14
+T: 3 0 : 50 : 49 : 0.07
+T: 3 0 : 50 : 47 : 0.42
+T: 3 0 : 50 : 44 : 0.01
+T: 3 0 : 50 : 41 : 0.02
+T: 3 0 : 50 : 22 : 0.01
+T: 3 0 : 50 : 20 : 0.06
+T: 3 0 : 50 : 77 : 0.02
+T: 3 0 : 50 : 26 : 0.01
+T: 3 0 : 50 : 74 : 0.06
+T: 3 0 : 50 : 23 : 0.02
+T: 3 0 : 50 : 40 : 0.01
+T: 3 0 : 50 : 38 : 0.06
+T: 3 0 : 51 : 79 : 0.01
+T: 3 0 : 51 : 78 : 0.03
+T: 3 0 : 51 : 52 : 0.07
+T: 3 0 : 51 : 51 : 0.21
+T: 3 0 : 51 : 48 : 0.42
+T: 3 0 : 51 : 75 : 0.06
+T: 3 0 : 51 : 24 : 0.03
+T: 3 0 : 51 : 21 : 0.06
+T: 3 0 : 51 : 42 : 0.03
+T: 3 0 : 51 : 25 : 0.01
+T: 3 0 : 51 : 39 : 0.06
+T: 3 0 : 51 : 43 : 0.01
+T: 3 0 : 52 : 80 : 0.01
+T: 3 0 : 52 : 79 : 0.02
+T: 3 0 : 52 : 53 : 0.07
+T: 3 0 : 52 : 52 : 0.14
+T: 3 0 : 52 : 51 : 0.07
+T: 3 0 : 52 : 49 : 0.42
+T: 3 0 : 52 : 78 : 0.01
+T: 3 0 : 52 : 44 : 0.01
+T: 3 0 : 52 : 24 : 0.01
+T: 3 0 : 52 : 22 : 0.06
+T: 3 0 : 52 : 43 : 0.02
+T: 3 0 : 52 : 26 : 0.01
+T: 3 0 : 52 : 40 : 0.06
+T: 3 0 : 52 : 76 : 0.06
+T: 3 0 : 52 : 25 : 0.02
+T: 3 0 : 52 : 42 : 0.01
+T: 3 0 : 53 : 80 : 0.03
+T: 3 0 : 53 : 79 : 0.01
+T: 3 0 : 53 : 53 : 0.21
+T: 3 0 : 53 : 52 : 0.07
+T: 3 0 : 53 : 50 : 0.42
+T: 3 0 : 53 : 25 : 0.01
+T: 3 0 : 53 : 23 : 0.06
+T: 3 0 : 53 : 44 : 0.03
+T: 3 0 : 53 : 41 : 0.06
+T: 3 0 : 53 : 77 : 0.06
+T: 3 0 : 53 : 26 : 0.03
+T: 3 0 : 53 : 43 : 0.01
+T: 3 0 : 54 : 66 : 0.06
+T: 3 0 : 54 : 63 : 0.48
+T: 3 0 : 54 : 28 : 0.01
+T: 3 0 : 54 : 27 : 0.08
+T: 3 0 : 54 : 55 : 0.03
+T: 3 0 : 54 : 64 : 0.06
+T: 3 0 : 54 : 30 : 0.01
+T: 3 0 : 54 : 54 : 0.24
+T: 3 0 : 54 : 57 : 0.03
+T: 3 0 : 55 : 67 : 0.06
+T: 3 0 : 55 : 64 : 0.42
+T: 3 0 : 55 : 58 : 0.03
+T: 3 0 : 55 : 56 : 0.03
+T: 3 0 : 55 : 28 : 0.07
+T: 3 0 : 55 : 27 : 0.01
+T: 3 0 : 55 : 55 : 0.21
+T: 3 0 : 55 : 63 : 0.06
+T: 3 0 : 55 : 29 : 0.01
+T: 3 0 : 55 : 65 : 0.06
+T: 3 0 : 55 : 31 : 0.01
+T: 3 0 : 55 : 54 : 0.03
+T: 3 0 : 56 : 68 : 0.06
+T: 3 0 : 56 : 65 : 0.48
+T: 3 0 : 56 : 64 : 0.06
+T: 3 0 : 56 : 29 : 0.08
+T: 3 0 : 56 : 28 : 0.01
+T: 3 0 : 56 : 56 : 0.24
+T: 3 0 : 56 : 32 : 0.01
+T: 3 0 : 56 : 55 : 0.03
+T: 3 0 : 56 : 59 : 0.03
+T: 3 0 : 57 : 69 : 0.06
+T: 3 0 : 57 : 66 : 0.12
+T: 3 0 : 57 : 63 : 0.36
+T: 3 0 : 57 : 60 : 0.03
+T: 3 0 : 57 : 58 : 0.03
+T: 3 0 : 57 : 30 : 0.02
+T: 3 0 : 57 : 27 : 0.06
+T: 3 0 : 57 : 31 : 0.01
+T: 3 0 : 57 : 67 : 0.06
+T: 3 0 : 57 : 33 : 0.01
+T: 3 0 : 57 : 54 : 0.18
+T: 3 0 : 57 : 57 : 0.06
+T: 3 0 : 58 : 70 : 0.06
+T: 3 0 : 58 : 67 : 0.06
+T: 3 0 : 58 : 61 : 0.03
+T: 3 0 : 58 : 59 : 0.03
+T: 3 0 : 58 : 58 : 0.03
+T: 3 0 : 58 : 57 : 0.03
+T: 3 0 : 58 : 64 : 0.36
+T: 3 0 : 58 : 30 : 0.01
+T: 3 0 : 58 : 28 : 0.06
+T: 3 0 : 58 : 31 : 0.01
+T: 3 0 : 58 : 66 : 0.06
+T: 3 0 : 58 : 32 : 0.01
+T: 3 0 : 58 : 68 : 0.06
+T: 3 0 : 58 : 34 : 0.01
+T: 3 0 : 58 : 55 : 0.18
+T: 3 0 : 59 : 71 : 0.06
+T: 3 0 : 59 : 68 : 0.12
+T: 3 0 : 59 : 67 : 0.06
+T: 3 0 : 59 : 62 : 0.03
+T: 3 0 : 59 : 59 : 0.06
+T: 3 0 : 59 : 65 : 0.36
+T: 3 0 : 59 : 31 : 0.01
+T: 3 0 : 59 : 29 : 0.06
+T: 3 0 : 59 : 32 : 0.02
+T: 3 0 : 59 : 35 : 0.01
+T: 3 0 : 59 : 56 : 0.18
+T: 3 0 : 59 : 58 : 0.03
+T: 3 0 : 60 : 70 : 0.06
+T: 3 0 : 60 : 69 : 0.18
+T: 3 0 : 60 : 66 : 0.36
+T: 3 0 : 60 : 33 : 0.03
+T: 3 0 : 60 : 61 : 0.03
+T: 3 0 : 60 : 30 : 0.06
+T: 3 0 : 60 : 34 : 0.01
+T: 3 0 : 60 : 57 : 0.18
+T: 3 0 : 60 : 60 : 0.09
+T: 3 0 : 61 : 71 : 0.06
+T: 3 0 : 61 : 70 : 0.12
+T: 3 0 : 61 : 62 : 0.03
+T: 3 0 : 61 : 61 : 0.06
+T: 3 0 : 61 : 67 : 0.36
+T: 3 0 : 61 : 33 : 0.01
+T: 3 0 : 61 : 31 : 0.06
+T: 3 0 : 61 : 34 : 0.02
+T: 3 0 : 61 : 69 : 0.06
+T: 3 0 : 61 : 35 : 0.01
+T: 3 0 : 61 : 58 : 0.18
+T: 3 0 : 61 : 60 : 0.03
+T: 3 0 : 62 : 71 : 0.18
+T: 3 0 : 62 : 70 : 0.06
+T: 3 0 : 62 : 68 : 0.36
+T: 3 0 : 62 : 34 : 0.01
+T: 3 0 : 62 : 62 : 0.09
+T: 3 0 : 62 : 32 : 0.06
+T: 3 0 : 62 : 35 : 0.03
+T: 3 0 : 62 : 59 : 0.18
+T: 3 0 : 62 : 61 : 0.03
+T: 3 0 : 63 : 75 : 0.06
+T: 3 0 : 63 : 66 : 0.02
+T: 3 0 : 63 : 64 : 0.02
+T: 3 0 : 63 : 63 : 0.16
+T: 3 0 : 63 : 36 : 0.08
+T: 3 0 : 63 : 57 : 0.01
+T: 3 0 : 63 : 73 : 0.06
+T: 3 0 : 63 : 39 : 0.01
+T: 3 0 : 63 : 37 : 0.01
+T: 3 0 : 63 : 54 : 0.08
+T: 3 0 : 63 : 72 : 0.48
+T: 3 0 : 63 : 55 : 0.01
+T: 3 0 : 64 : 76 : 0.06
+T: 3 0 : 64 : 67 : 0.02
+T: 3 0 : 64 : 65 : 0.02
+T: 3 0 : 64 : 64 : 0.14
+T: 3 0 : 64 : 63 : 0.02
+T: 3 0 : 64 : 58 : 0.01
+T: 3 0 : 64 : 73 : 0.42
+T: 3 0 : 64 : 56 : 0.01
+T: 3 0 : 64 : 36 : 0.01
+T: 3 0 : 64 : 74 : 0.06
+T: 3 0 : 64 : 40 : 0.01
+T: 3 0 : 64 : 37 : 0.07
+T: 3 0 : 64 : 54 : 0.01
+T: 3 0 : 64 : 72 : 0.06
+T: 3 0 : 64 : 38 : 0.01
+T: 3 0 : 64 : 55 : 0.07
+T: 3 0 : 65 : 77 : 0.06
+T: 3 0 : 65 : 74 : 0.48
+T: 3 0 : 65 : 68 : 0.02
+T: 3 0 : 65 : 65 : 0.16
+T: 3 0 : 65 : 64 : 0.02
+T: 3 0 : 65 : 59 : 0.01
+T: 3 0 : 65 : 37 : 0.01
+T: 3 0 : 65 : 41 : 0.01
+T: 3 0 : 65 : 38 : 0.08
+T: 3 0 : 65 : 55 : 0.01
+T: 3 0 : 65 : 73 : 0.06
+T: 3 0 : 65 : 56 : 0.08
+T: 3 0 : 66 : 78 : 0.06
+T: 3 0 : 66 : 72 : 0.36
+T: 3 0 : 66 : 69 : 0.02
+T: 3 0 : 66 : 67 : 0.02
+T: 3 0 : 66 : 66 : 0.04
+T: 3 0 : 66 : 63 : 0.12
+T: 3 0 : 66 : 60 : 0.01
+T: 3 0 : 66 : 75 : 0.12
+T: 3 0 : 66 : 58 : 0.01
+T: 3 0 : 66 : 39 : 0.02
+T: 3 0 : 66 : 36 : 0.06
+T: 3 0 : 66 : 57 : 0.02
+T: 3 0 : 66 : 40 : 0.01
+T: 3 0 : 66 : 54 : 0.06
+T: 3 0 : 66 : 76 : 0.06
+T: 3 0 : 66 : 42 : 0.01
+T: 3 0 : 67 : 79 : 0.06
+T: 3 0 : 67 : 75 : 0.06
+T: 3 0 : 67 : 43 : 0.01
+T: 3 0 : 67 : 55 : 0.06
+T: 3 0 : 67 : 41 : 0.01
+T: 3 0 : 67 : 58 : 0.01
+T: 3 0 : 67 : 77 : 0.06
+T: 3 0 : 67 : 40 : 0.01
+T: 3 0 : 67 : 57 : 0.01
+T: 3 0 : 67 : 37 : 0.06
+T: 3 0 : 67 : 76 : 0.06
+T: 3 0 : 67 : 39 : 0.01
+T: 3 0 : 67 : 73 : 0.36
+T: 3 0 : 67 : 59 : 0.01
+T: 3 0 : 67 : 61 : 0.01
+T: 3 0 : 67 : 64 : 0.12
+T: 3 0 : 67 : 66 : 0.02
+T: 3 0 : 67 : 67 : 0.02
+T: 3 0 : 67 : 68 : 0.02
+T: 3 0 : 67 : 70 : 0.02
+T: 3 0 : 68 : 80 : 0.06
+T: 3 0 : 68 : 77 : 0.12
+T: 3 0 : 68 : 71 : 0.02
+T: 3 0 : 68 : 68 : 0.04
+T: 3 0 : 68 : 67 : 0.02
+T: 3 0 : 68 : 65 : 0.12
+T: 3 0 : 68 : 62 : 0.01
+T: 3 0 : 68 : 76 : 0.06
+T: 3 0 : 68 : 59 : 0.02
+T: 3 0 : 68 : 74 : 0.36
+T: 3 0 : 68 : 40 : 0.01
+T: 3 0 : 68 : 38 : 0.06
+T: 3 0 : 68 : 44 : 0.01
+T: 3 0 : 68 : 41 : 0.02
+T: 3 0 : 68 : 58 : 0.01
+T: 3 0 : 68 : 56 : 0.06
+T: 3 0 : 69 : 79 : 0.06
+T: 3 0 : 69 : 75 : 0.36
+T: 3 0 : 69 : 70 : 0.02
+T: 3 0 : 69 : 69 : 0.06
+T: 3 0 : 69 : 66 : 0.12
+T: 3 0 : 69 : 42 : 0.03
+T: 3 0 : 69 : 39 : 0.06
+T: 3 0 : 69 : 60 : 0.03
+T: 3 0 : 69 : 43 : 0.01
+T: 3 0 : 69 : 57 : 0.06
+T: 3 0 : 69 : 78 : 0.18
+T: 3 0 : 69 : 61 : 0.01
+T: 3 0 : 70 : 80 : 0.06
+T: 3 0 : 70 : 71 : 0.02
+T: 3 0 : 70 : 70 : 0.04
+T: 3 0 : 70 : 69 : 0.02
+T: 3 0 : 70 : 67 : 0.12
+T: 3 0 : 70 : 79 : 0.12
+T: 3 0 : 70 : 62 : 0.01
+T: 3 0 : 70 : 76 : 0.36
+T: 3 0 : 70 : 42 : 0.01
+T: 3 0 : 70 : 40 : 0.06
+T: 3 0 : 70 : 78 : 0.06
+T: 3 0 : 70 : 61 : 0.02
+T: 3 0 : 70 : 44 : 0.01
+T: 3 0 : 70 : 58 : 0.06
+T: 3 0 : 70 : 43 : 0.02
+T: 3 0 : 70 : 60 : 0.01
+T: 3 0 : 71 : 80 : 0.18
+T: 3 0 : 71 : 71 : 0.06
+T: 3 0 : 71 : 70 : 0.02
+T: 3 0 : 71 : 68 : 0.12
+T: 3 0 : 71 : 77 : 0.36
+T: 3 0 : 71 : 43 : 0.01
+T: 3 0 : 71 : 41 : 0.06
+T: 3 0 : 71 : 79 : 0.06
+T: 3 0 : 71 : 62 : 0.03
+T: 3 0 : 71 : 59 : 0.06
+T: 3 0 : 71 : 44 : 0.03
+T: 3 0 : 71 : 61 : 0.01
+T: 3 0 : 72 : 75 : 0.08
+T: 3 0 : 72 : 73 : 0.08
+T: 3 0 : 72 : 72 : 0.64
+T: 3 0 : 72 : 45 : 0.08
+T: 3 0 : 72 : 66 : 0.01
+T: 3 0 : 72 : 48 : 0.01
+T: 3 0 : 72 : 46 : 0.01
+T: 3 0 : 72 : 63 : 0.08
+T: 3 0 : 72 : 64 : 0.01
+T: 3 0 : 73 : 76 : 0.08
+T: 3 0 : 73 : 74 : 0.08
+T: 3 0 : 73 : 73 : 0.56
+T: 3 0 : 73 : 72 : 0.08
+T: 3 0 : 73 : 67 : 0.01
+T: 3 0 : 73 : 65 : 0.01
+T: 3 0 : 73 : 45 : 0.01
+T: 3 0 : 73 : 49 : 0.01
+T: 3 0 : 73 : 46 : 0.07
+T: 3 0 : 73 : 63 : 0.01
+T: 3 0 : 73 : 47 : 0.01
+T: 3 0 : 73 : 64 : 0.07
+T: 3 0 : 74 : 77 : 0.08
+T: 3 0 : 74 : 74 : 0.64
+T: 3 0 : 74 : 73 : 0.08
+T: 3 0 : 74 : 68 : 0.01
+T: 3 0 : 74 : 46 : 0.01
+T: 3 0 : 74 : 50 : 0.01
+T: 3 0 : 74 : 47 : 0.08
+T: 3 0 : 74 : 64 : 0.01
+T: 3 0 : 74 : 65 : 0.08
+T: 3 0 : 75 : 78 : 0.08
+T: 3 0 : 75 : 76 : 0.08
+T: 3 0 : 75 : 75 : 0.16
+T: 3 0 : 75 : 72 : 0.48
+T: 3 0 : 75 : 69 : 0.01
+T: 3 0 : 75 : 67 : 0.01
+T: 3 0 : 75 : 48 : 0.02
+T: 3 0 : 75 : 45 : 0.06
+T: 3 0 : 75 : 66 : 0.02
+T: 3 0 : 75 : 49 : 0.01
+T: 3 0 : 75 : 63 : 0.06
+T: 3 0 : 75 : 51 : 0.01
+T: 3 0 : 76 : 79 : 0.08
+T: 3 0 : 76 : 77 : 0.08
+T: 3 0 : 76 : 76 : 0.08
+T: 3 0 : 76 : 75 : 0.08
+T: 3 0 : 76 : 73 : 0.48
+T: 3 0 : 76 : 70 : 0.01
+T: 3 0 : 76 : 68 : 0.01
+T: 3 0 : 76 : 48 : 0.01
+T: 3 0 : 76 : 46 : 0.06
+T: 3 0 : 76 : 66 : 0.01
+T: 3 0 : 76 : 49 : 0.01
+T: 3 0 : 76 : 67 : 0.01
+T: 3 0 : 76 : 50 : 0.01
+T: 3 0 : 76 : 64 : 0.06
+T: 3 0 : 76 : 52 : 0.01
+T: 3 0 : 77 : 80 : 0.08
+T: 3 0 : 77 : 77 : 0.16
+T: 3 0 : 77 : 76 : 0.08
+T: 3 0 : 77 : 74 : 0.48
+T: 3 0 : 77 : 71 : 0.01
+T: 3 0 : 77 : 68 : 0.02
+T: 3 0 : 77 : 49 : 0.01
+T: 3 0 : 77 : 47 : 0.06
+T: 3 0 : 77 : 53 : 0.01
+T: 3 0 : 77 : 50 : 0.02
+T: 3 0 : 77 : 67 : 0.01
+T: 3 0 : 77 : 65 : 0.06
+O: 4 4 : 80 : 8 8  : 1
+O: 4 4 : 79 : 8 7  : 1
+O: 4 4 : 78 : 8 6  : 1
+O: 4 4 : 35 : 3 8  : 1
+O: 4 4 : 34 : 3 7  : 1
+O: 4 4 : 33 : 3 6  : 1
+O: 4 4 : 32 : 3 5  : 1
+O: 4 4 : 31 : 3 4  : 1
+O: 4 4 : 30 : 3 3  : 1
+O: 4 4 : 29 : 3 2  : 1
+O: 4 4 : 28 : 3 1  : 1
+O: 4 4 : 27 : 3 0  : 1
+O: 4 4 : 26 : 2 8  : 1
+O: 4 4 : 25 : 2 7  : 1
+O: 4 4 : 24 : 2 6  : 1
+O: 4 4 : 23 : 2 5  : 1
+O: 4 4 : 22 : 2 4  : 1
+O: 4 4 : 21 : 2 3  : 1
+O: 4 4 : 20 : 2 2  : 1
+O: 4 4 : 19 : 2 1  : 1
+O: 4 4 : 18 : 2 0  : 1
+O: 4 4 : 17 : 1 8  : 1
+O: 4 4 : 16 : 1 7  : 1
+O: 4 4 : 5 : 0 5  : 1
+O: 4 4 : 4 : 0 4  : 1
+O: 4 4 : 3 : 0 3  : 1
+O: 4 4 : 2 : 0 2  : 1
+O: 4 4 : 0 : 0 0  : 1
+O: 4 4 : 1 : 0 1  : 1
+O: 4 4 : 6 : 0 6  : 1
+O: 4 4 : 7 : 0 7  : 1
+O: 4 4 : 8 : 0 8  : 1
+O: 4 4 : 9 : 1 0  : 1
+O: 4 4 : 10 : 1 1  : 1
+O: 4 4 : 11 : 1 2  : 1
+O: 4 4 : 12 : 1 3  : 1
+O: 4 4 : 13 : 1 4  : 1
+O: 4 4 : 14 : 1 5  : 1
+O: 4 4 : 15 : 1 6  : 1
+O: 4 4 : 36 : 4 0  : 1
+O: 4 4 : 37 : 4 1  : 1
+O: 4 4 : 38 : 4 2  : 1
+O: 4 4 : 39 : 4 3  : 1
+O: 4 4 : 40 : 4 4  : 1
+O: 4 4 : 41 : 4 5  : 1
+O: 4 4 : 42 : 4 6  : 1
+O: 4 4 : 43 : 4 7  : 1
+O: 4 4 : 44 : 4 8  : 1
+O: 4 4 : 45 : 5 0  : 1
+O: 4 4 : 46 : 5 1  : 1
+O: 4 4 : 47 : 5 2  : 1
+O: 4 4 : 48 : 5 3  : 1
+O: 4 4 : 49 : 5 4  : 1
+O: 4 4 : 50 : 5 5  : 1
+O: 4 4 : 51 : 5 6  : 1
+O: 4 4 : 52 : 5 7  : 1
+O: 4 4 : 53 : 5 8  : 1
+O: 4 4 : 54 : 6 0  : 1
+O: 4 4 : 55 : 6 1  : 1
+O: 4 4 : 56 : 6 2  : 1
+O: 4 4 : 57 : 6 3  : 1
+O: 4 4 : 58 : 6 4  : 1
+O: 4 4 : 59 : 6 5  : 1
+O: 4 4 : 60 : 6 6  : 1
+O: 4 4 : 61 : 6 7  : 1
+O: 4 4 : 62 : 6 8  : 1
+O: 4 4 : 63 : 7 0  : 1
+O: 4 4 : 64 : 7 1  : 1
+O: 4 4 : 65 : 7 2  : 1
+O: 4 4 : 66 : 7 3  : 1
+O: 4 4 : 67 : 7 4  : 1
+O: 4 4 : 68 : 7 5  : 1
+O: 4 4 : 69 : 7 6  : 1
+O: 4 4 : 70 : 7 7  : 1
+O: 4 4 : 71 : 7 8  : 1
+O: 4 4 : 72 : 8 0  : 1
+O: 4 4 : 73 : 8 1  : 1
+O: 4 4 : 74 : 8 2  : 1
+O: 4 4 : 75 : 8 3  : 1
+O: 4 4 : 76 : 8 4  : 1
+O: 4 4 : 77 : 8 5  : 1
+O: 4 3 : 80 : 8 8  : 1
+O: 4 3 : 79 : 8 7  : 1
+O: 4 3 : 78 : 8 6  : 1
+O: 4 3 : 35 : 3 8  : 1
+O: 4 3 : 34 : 3 7  : 1
+O: 4 3 : 33 : 3 6  : 1
+O: 4 3 : 32 : 3 5  : 1
+O: 4 3 : 31 : 3 4  : 1
+O: 4 3 : 30 : 3 3  : 1
+O: 4 3 : 29 : 3 2  : 1
+O: 4 3 : 28 : 3 1  : 1
+O: 4 3 : 27 : 3 0  : 1
+O: 4 3 : 26 : 2 8  : 1
+O: 4 3 : 25 : 2 7  : 1
+O: 4 3 : 24 : 2 6  : 1
+O: 4 3 : 23 : 2 5  : 1
+O: 4 3 : 22 : 2 4  : 1
+O: 4 3 : 21 : 2 3  : 1
+O: 4 3 : 20 : 2 2  : 1
+O: 4 3 : 19 : 2 1  : 1
+O: 4 3 : 18 : 2 0  : 1
+O: 4 3 : 17 : 1 8  : 1
+O: 4 3 : 16 : 1 7  : 1
+O: 4 3 : 5 : 0 5  : 1
+O: 4 3 : 4 : 0 4  : 1
+O: 4 3 : 3 : 0 3  : 1
+O: 4 3 : 2 : 0 2  : 1
+O: 4 3 : 0 : 0 0  : 1
+O: 4 3 : 1 : 0 1  : 1
+O: 4 3 : 6 : 0 6  : 1
+O: 4 3 : 7 : 0 7  : 1
+O: 4 3 : 8 : 0 8  : 1
+O: 4 3 : 9 : 1 0  : 1
+O: 4 3 : 10 : 1 1  : 1
+O: 4 3 : 11 : 1 2  : 1
+O: 4 3 : 12 : 1 3  : 1
+O: 4 3 : 13 : 1 4  : 1
+O: 4 3 : 14 : 1 5  : 1
+O: 4 3 : 15 : 1 6  : 1
+O: 4 3 : 36 : 4 0  : 1
+O: 4 3 : 37 : 4 1  : 1
+O: 4 3 : 38 : 4 2  : 1
+O: 4 3 : 39 : 4 3  : 1
+O: 4 3 : 40 : 4 4  : 1
+O: 4 3 : 41 : 4 5  : 1
+O: 4 3 : 42 : 4 6  : 1
+O: 4 3 : 43 : 4 7  : 1
+O: 4 3 : 44 : 4 8  : 1
+O: 4 3 : 45 : 5 0  : 1
+O: 4 3 : 46 : 5 1  : 1
+O: 4 3 : 47 : 5 2  : 1
+O: 4 3 : 48 : 5 3  : 1
+O: 4 3 : 49 : 5 4  : 1
+O: 4 3 : 50 : 5 5  : 1
+O: 4 3 : 51 : 5 6  : 1
+O: 4 3 : 52 : 5 7  : 1
+O: 4 3 : 53 : 5 8  : 1
+O: 4 3 : 54 : 6 0  : 1
+O: 4 3 : 55 : 6 1  : 1
+O: 4 3 : 56 : 6 2  : 1
+O: 4 3 : 57 : 6 3  : 1
+O: 4 3 : 58 : 6 4  : 1
+O: 4 3 : 59 : 6 5  : 1
+O: 4 3 : 60 : 6 6  : 1
+O: 4 3 : 61 : 6 7  : 1
+O: 4 3 : 62 : 6 8  : 1
+O: 4 3 : 63 : 7 0  : 1
+O: 4 3 : 64 : 7 1  : 1
+O: 4 3 : 65 : 7 2  : 1
+O: 4 3 : 66 : 7 3  : 1
+O: 4 3 : 67 : 7 4  : 1
+O: 4 3 : 68 : 7 5  : 1
+O: 4 3 : 69 : 7 6  : 1
+O: 4 3 : 70 : 7 7  : 1
+O: 4 3 : 71 : 7 8  : 1
+O: 4 3 : 72 : 8 0  : 1
+O: 4 3 : 73 : 8 1  : 1
+O: 4 3 : 74 : 8 2  : 1
+O: 4 3 : 75 : 8 3  : 1
+O: 4 3 : 76 : 8 4  : 1
+O: 4 3 : 77 : 8 5  : 1
+O: 4 2 : 80 : 8 8  : 1
+O: 4 2 : 79 : 8 7  : 1
+O: 4 2 : 78 : 8 6  : 1
+O: 4 2 : 35 : 3 8  : 1
+O: 4 2 : 34 : 3 7  : 1
+O: 4 2 : 33 : 3 6  : 1
+O: 4 2 : 32 : 3 5  : 1
+O: 4 2 : 31 : 3 4  : 1
+O: 4 2 : 30 : 3 3  : 1
+O: 4 2 : 29 : 3 2  : 1
+O: 4 2 : 28 : 3 1  : 1
+O: 4 2 : 27 : 3 0  : 1
+O: 4 2 : 26 : 2 8  : 1
+O: 4 2 : 25 : 2 7  : 1
+O: 4 2 : 24 : 2 6  : 1
+O: 4 2 : 23 : 2 5  : 1
+O: 4 2 : 22 : 2 4  : 1
+O: 4 2 : 21 : 2 3  : 1
+O: 4 2 : 20 : 2 2  : 1
+O: 4 2 : 19 : 2 1  : 1
+O: 4 2 : 18 : 2 0  : 1
+O: 4 2 : 17 : 1 8  : 1
+O: 4 2 : 16 : 1 7  : 1
+O: 4 2 : 5 : 0 5  : 1
+O: 4 2 : 4 : 0 4  : 1
+O: 4 2 : 3 : 0 3  : 1
+O: 4 2 : 2 : 0 2  : 1
+O: 4 2 : 0 : 0 0  : 1
+O: 4 2 : 1 : 0 1  : 1
+O: 4 2 : 6 : 0 6  : 1
+O: 4 2 : 7 : 0 7  : 1
+O: 4 2 : 8 : 0 8  : 1
+O: 4 2 : 9 : 1 0  : 1
+O: 4 2 : 10 : 1 1  : 1
+O: 4 2 : 11 : 1 2  : 1
+O: 4 2 : 12 : 1 3  : 1
+O: 4 2 : 13 : 1 4  : 1
+O: 4 2 : 14 : 1 5  : 1
+O: 4 2 : 15 : 1 6  : 1
+O: 4 2 : 36 : 4 0  : 1
+O: 4 2 : 37 : 4 1  : 1
+O: 4 2 : 38 : 4 2  : 1
+O: 4 2 : 39 : 4 3  : 1
+O: 4 2 : 40 : 4 4  : 1
+O: 4 2 : 41 : 4 5  : 1
+O: 4 2 : 42 : 4 6  : 1
+O: 4 2 : 43 : 4 7  : 1
+O: 4 2 : 44 : 4 8  : 1
+O: 4 2 : 45 : 5 0  : 1
+O: 4 2 : 46 : 5 1  : 1
+O: 4 2 : 47 : 5 2  : 1
+O: 4 2 : 48 : 5 3  : 1
+O: 4 2 : 49 : 5 4  : 1
+O: 4 2 : 50 : 5 5  : 1
+O: 4 2 : 51 : 5 6  : 1
+O: 4 2 : 52 : 5 7  : 1
+O: 4 2 : 53 : 5 8  : 1
+O: 4 2 : 54 : 6 0  : 1
+O: 4 2 : 55 : 6 1  : 1
+O: 4 2 : 56 : 6 2  : 1
+O: 4 2 : 57 : 6 3  : 1
+O: 4 2 : 58 : 6 4  : 1
+O: 4 2 : 59 : 6 5  : 1
+O: 4 2 : 60 : 6 6  : 1
+O: 4 2 : 61 : 6 7  : 1
+O: 4 2 : 62 : 6 8  : 1
+O: 4 2 : 63 : 7 0  : 1
+O: 4 2 : 64 : 7 1  : 1
+O: 4 2 : 65 : 7 2  : 1
+O: 4 2 : 66 : 7 3  : 1
+O: 4 2 : 67 : 7 4  : 1
+O: 4 2 : 68 : 7 5  : 1
+O: 4 2 : 69 : 7 6  : 1
+O: 4 2 : 70 : 7 7  : 1
+O: 4 2 : 71 : 7 8  : 1
+O: 4 2 : 72 : 8 0  : 1
+O: 4 2 : 73 : 8 1  : 1
+O: 4 2 : 74 : 8 2  : 1
+O: 4 2 : 75 : 8 3  : 1
+O: 4 2 : 76 : 8 4  : 1
+O: 4 2 : 77 : 8 5  : 1
+O: 4 1 : 80 : 8 8  : 1
+O: 4 1 : 79 : 8 7  : 1
+O: 4 1 : 78 : 8 6  : 1
+O: 4 1 : 35 : 3 8  : 1
+O: 4 1 : 34 : 3 7  : 1
+O: 4 1 : 33 : 3 6  : 1
+O: 4 1 : 32 : 3 5  : 1
+O: 4 1 : 31 : 3 4  : 1
+O: 4 1 : 30 : 3 3  : 1
+O: 4 1 : 29 : 3 2  : 1
+O: 4 1 : 28 : 3 1  : 1
+O: 4 1 : 27 : 3 0  : 1
+O: 4 1 : 26 : 2 8  : 1
+O: 4 1 : 25 : 2 7  : 1
+O: 4 1 : 24 : 2 6  : 1
+O: 4 1 : 23 : 2 5  : 1
+O: 4 1 : 22 : 2 4  : 1
+O: 4 1 : 21 : 2 3  : 1
+O: 4 1 : 20 : 2 2  : 1
+O: 4 1 : 19 : 2 1  : 1
+O: 4 1 : 18 : 2 0  : 1
+O: 4 1 : 17 : 1 8  : 1
+O: 4 1 : 16 : 1 7  : 1
+O: 4 1 : 5 : 0 5  : 1
+O: 4 1 : 4 : 0 4  : 1
+O: 4 1 : 3 : 0 3  : 1
+O: 4 1 : 2 : 0 2  : 1
+O: 4 1 : 0 : 0 0  : 1
+O: 4 1 : 1 : 0 1  : 1
+O: 4 1 : 6 : 0 6  : 1
+O: 4 1 : 7 : 0 7  : 1
+O: 4 1 : 8 : 0 8  : 1
+O: 4 1 : 9 : 1 0  : 1
+O: 4 1 : 10 : 1 1  : 1
+O: 4 1 : 11 : 1 2  : 1
+O: 4 1 : 12 : 1 3  : 1
+O: 4 1 : 13 : 1 4  : 1
+O: 4 1 : 14 : 1 5  : 1
+O: 4 1 : 15 : 1 6  : 1
+O: 4 1 : 36 : 4 0  : 1
+O: 4 1 : 37 : 4 1  : 1
+O: 4 1 : 38 : 4 2  : 1
+O: 4 1 : 39 : 4 3  : 1
+O: 4 1 : 40 : 4 4  : 1
+O: 4 1 : 41 : 4 5  : 1
+O: 4 1 : 42 : 4 6  : 1
+O: 4 1 : 43 : 4 7  : 1
+O: 4 1 : 44 : 4 8  : 1
+O: 4 1 : 45 : 5 0  : 1
+O: 4 1 : 46 : 5 1  : 1
+O: 4 1 : 47 : 5 2  : 1
+O: 4 1 : 48 : 5 3  : 1
+O: 4 1 : 49 : 5 4  : 1
+O: 4 1 : 50 : 5 5  : 1
+O: 4 1 : 51 : 5 6  : 1
+O: 4 1 : 52 : 5 7  : 1
+O: 4 1 : 53 : 5 8  : 1
+O: 4 1 : 54 : 6 0  : 1
+O: 4 1 : 55 : 6 1  : 1
+O: 4 1 : 56 : 6 2  : 1
+O: 4 1 : 57 : 6 3  : 1
+O: 4 1 : 58 : 6 4  : 1
+O: 4 1 : 59 : 6 5  : 1
+O: 4 1 : 60 : 6 6  : 1
+O: 4 1 : 61 : 6 7  : 1
+O: 4 1 : 62 : 6 8  : 1
+O: 4 1 : 63 : 7 0  : 1
+O: 4 1 : 64 : 7 1  : 1
+O: 4 1 : 65 : 7 2  : 1
+O: 4 1 : 66 : 7 3  : 1
+O: 4 1 : 67 : 7 4  : 1
+O: 4 1 : 68 : 7 5  : 1
+O: 4 1 : 69 : 7 6  : 1
+O: 4 1 : 70 : 7 7  : 1
+O: 4 1 : 71 : 7 8  : 1
+O: 4 1 : 72 : 8 0  : 1
+O: 4 1 : 73 : 8 1  : 1
+O: 4 1 : 74 : 8 2  : 1
+O: 4 1 : 75 : 8 3  : 1
+O: 4 1 : 76 : 8 4  : 1
+O: 4 1 : 77 : 8 5  : 1
+O: 4 0 : 80 : 8 8  : 1
+O: 4 0 : 79 : 8 7  : 1
+O: 4 0 : 78 : 8 6  : 1
+O: 4 0 : 35 : 3 8  : 1
+O: 4 0 : 34 : 3 7  : 1
+O: 4 0 : 33 : 3 6  : 1
+O: 4 0 : 32 : 3 5  : 1
+O: 4 0 : 31 : 3 4  : 1
+O: 4 0 : 30 : 3 3  : 1
+O: 4 0 : 29 : 3 2  : 1
+O: 4 0 : 28 : 3 1  : 1
+O: 4 0 : 27 : 3 0  : 1
+O: 4 0 : 26 : 2 8  : 1
+O: 4 0 : 25 : 2 7  : 1
+O: 4 0 : 24 : 2 6  : 1
+O: 4 0 : 23 : 2 5  : 1
+O: 4 0 : 22 : 2 4  : 1
+O: 4 0 : 21 : 2 3  : 1
+O: 4 0 : 20 : 2 2  : 1
+O: 4 0 : 19 : 2 1  : 1
+O: 4 0 : 18 : 2 0  : 1
+O: 4 0 : 17 : 1 8  : 1
+O: 4 0 : 16 : 1 7  : 1
+O: 4 0 : 5 : 0 5  : 1
+O: 4 0 : 4 : 0 4  : 1
+O: 4 0 : 3 : 0 3  : 1
+O: 4 0 : 2 : 0 2  : 1
+O: 4 0 : 0 : 0 0  : 1
+O: 4 0 : 1 : 0 1  : 1
+O: 4 0 : 6 : 0 6  : 1
+O: 4 0 : 7 : 0 7  : 1
+O: 4 0 : 8 : 0 8  : 1
+O: 4 0 : 9 : 1 0  : 1
+O: 4 0 : 10 : 1 1  : 1
+O: 4 0 : 11 : 1 2  : 1
+O: 4 0 : 12 : 1 3  : 1
+O: 4 0 : 13 : 1 4  : 1
+O: 4 0 : 14 : 1 5  : 1
+O: 4 0 : 15 : 1 6  : 1
+O: 4 0 : 36 : 4 0  : 1
+O: 4 0 : 37 : 4 1  : 1
+O: 4 0 : 38 : 4 2  : 1
+O: 4 0 : 39 : 4 3  : 1
+O: 4 0 : 40 : 4 4  : 1
+O: 4 0 : 41 : 4 5  : 1
+O: 4 0 : 42 : 4 6  : 1
+O: 4 0 : 43 : 4 7  : 1
+O: 4 0 : 44 : 4 8  : 1
+O: 4 0 : 45 : 5 0  : 1
+O: 4 0 : 46 : 5 1  : 1
+O: 4 0 : 47 : 5 2  : 1
+O: 4 0 : 48 : 5 3  : 1
+O: 4 0 : 49 : 5 4  : 1
+O: 4 0 : 50 : 5 5  : 1
+O: 4 0 : 51 : 5 6  : 1
+O: 4 0 : 52 : 5 7  : 1
+O: 4 0 : 53 : 5 8  : 1
+O: 4 0 : 54 : 6 0  : 1
+O: 4 0 : 55 : 6 1  : 1
+O: 4 0 : 56 : 6 2  : 1
+O: 4 0 : 57 : 6 3  : 1
+O: 4 0 : 58 : 6 4  : 1
+O: 4 0 : 59 : 6 5  : 1
+O: 4 0 : 60 : 6 6  : 1
+O: 4 0 : 61 : 6 7  : 1
+O: 4 0 : 62 : 6 8  : 1
+O: 4 0 : 63 : 7 0  : 1
+O: 4 0 : 64 : 7 1  : 1
+O: 4 0 : 65 : 7 2  : 1
+O: 4 0 : 66 : 7 3  : 1
+O: 4 0 : 67 : 7 4  : 1
+O: 4 0 : 68 : 7 5  : 1
+O: 4 0 : 69 : 7 6  : 1
+O: 4 0 : 70 : 7 7  : 1
+O: 4 0 : 71 : 7 8  : 1
+O: 4 0 : 72 : 8 0  : 1
+O: 4 0 : 73 : 8 1  : 1
+O: 4 0 : 74 : 8 2  : 1
+O: 4 0 : 75 : 8 3  : 1
+O: 4 0 : 76 : 8 4  : 1
+O: 4 0 : 77 : 8 5  : 1
+O: 3 4 : 80 : 8 8  : 1
+O: 3 4 : 79 : 8 7  : 1
+O: 3 4 : 78 : 8 6  : 1
+O: 3 4 : 35 : 3 8  : 1
+O: 3 4 : 34 : 3 7  : 1
+O: 3 4 : 33 : 3 6  : 1
+O: 3 4 : 32 : 3 5  : 1
+O: 3 4 : 31 : 3 4  : 1
+O: 3 4 : 30 : 3 3  : 1
+O: 3 4 : 29 : 3 2  : 1
+O: 3 4 : 28 : 3 1  : 1
+O: 3 4 : 27 : 3 0  : 1
+O: 3 4 : 26 : 2 8  : 1
+O: 3 4 : 25 : 2 7  : 1
+O: 3 4 : 24 : 2 6  : 1
+O: 3 4 : 23 : 2 5  : 1
+O: 3 4 : 22 : 2 4  : 1
+O: 3 4 : 21 : 2 3  : 1
+O: 3 4 : 20 : 2 2  : 1
+O: 3 4 : 19 : 2 1  : 1
+O: 3 4 : 18 : 2 0  : 1
+O: 3 4 : 17 : 1 8  : 1
+O: 3 4 : 16 : 1 7  : 1
+O: 3 4 : 5 : 0 5  : 1
+O: 3 4 : 4 : 0 4  : 1
+O: 3 4 : 3 : 0 3  : 1
+O: 3 4 : 2 : 0 2  : 1
+O: 3 4 : 0 : 0 0  : 1
+O: 3 4 : 1 : 0 1  : 1
+O: 3 4 : 6 : 0 6  : 1
+O: 3 4 : 7 : 0 7  : 1
+O: 3 4 : 8 : 0 8  : 1
+O: 3 4 : 9 : 1 0  : 1
+O: 3 4 : 10 : 1 1  : 1
+O: 3 4 : 11 : 1 2  : 1
+O: 3 4 : 12 : 1 3  : 1
+O: 3 4 : 13 : 1 4  : 1
+O: 3 4 : 14 : 1 5  : 1
+O: 3 4 : 15 : 1 6  : 1
+O: 3 4 : 36 : 4 0  : 1
+O: 3 4 : 37 : 4 1  : 1
+O: 3 4 : 38 : 4 2  : 1
+O: 3 4 : 39 : 4 3  : 1
+O: 3 4 : 40 : 4 4  : 1
+O: 3 4 : 41 : 4 5  : 1
+O: 3 4 : 42 : 4 6  : 1
+O: 3 4 : 43 : 4 7  : 1
+O: 3 4 : 44 : 4 8  : 1
+O: 3 4 : 45 : 5 0  : 1
+O: 3 4 : 46 : 5 1  : 1
+O: 3 4 : 47 : 5 2  : 1
+O: 3 4 : 48 : 5 3  : 1
+O: 3 4 : 49 : 5 4  : 1
+O: 3 4 : 50 : 5 5  : 1
+O: 3 4 : 51 : 5 6  : 1
+O: 3 4 : 52 : 5 7  : 1
+O: 3 4 : 53 : 5 8  : 1
+O: 3 4 : 54 : 6 0  : 1
+O: 3 4 : 55 : 6 1  : 1
+O: 3 4 : 56 : 6 2  : 1
+O: 3 4 : 57 : 6 3  : 1
+O: 3 4 : 58 : 6 4  : 1
+O: 3 4 : 59 : 6 5  : 1
+O: 3 4 : 60 : 6 6  : 1
+O: 3 4 : 61 : 6 7  : 1
+O: 3 4 : 62 : 6 8  : 1
+O: 3 4 : 63 : 7 0  : 1
+O: 3 4 : 64 : 7 1  : 1
+O: 3 4 : 65 : 7 2  : 1
+O: 3 4 : 66 : 7 3  : 1
+O: 3 4 : 67 : 7 4  : 1
+O: 3 4 : 68 : 7 5  : 1
+O: 3 4 : 69 : 7 6  : 1
+O: 3 4 : 70 : 7 7  : 1
+O: 3 4 : 71 : 7 8  : 1
+O: 3 4 : 72 : 8 0  : 1
+O: 3 4 : 73 : 8 1  : 1
+O: 3 4 : 74 : 8 2  : 1
+O: 3 4 : 75 : 8 3  : 1
+O: 3 4 : 76 : 8 4  : 1
+O: 3 4 : 77 : 8 5  : 1
+O: 3 3 : 80 : 8 8  : 1
+O: 3 3 : 79 : 8 7  : 1
+O: 3 3 : 78 : 8 6  : 1
+O: 3 3 : 35 : 3 8  : 1
+O: 3 3 : 34 : 3 7  : 1
+O: 3 3 : 33 : 3 6  : 1
+O: 3 3 : 32 : 3 5  : 1
+O: 3 3 : 31 : 3 4  : 1
+O: 3 3 : 30 : 3 3  : 1
+O: 3 3 : 29 : 3 2  : 1
+O: 3 3 : 28 : 3 1  : 1
+O: 3 3 : 27 : 3 0  : 1
+O: 3 3 : 26 : 2 8  : 1
+O: 3 3 : 25 : 2 7  : 1
+O: 3 3 : 24 : 2 6  : 1
+O: 3 3 : 23 : 2 5  : 1
+O: 3 3 : 22 : 2 4  : 1
+O: 3 3 : 21 : 2 3  : 1
+O: 3 3 : 20 : 2 2  : 1
+O: 3 3 : 19 : 2 1  : 1
+O: 3 3 : 18 : 2 0  : 1
+O: 3 3 : 17 : 1 8  : 1
+O: 3 3 : 16 : 1 7  : 1
+O: 3 3 : 5 : 0 5  : 1
+O: 3 3 : 4 : 0 4  : 1
+O: 3 3 : 3 : 0 3  : 1
+O: 3 3 : 2 : 0 2  : 1
+O: 3 3 : 0 : 0 0  : 1
+O: 3 3 : 1 : 0 1  : 1
+O: 3 3 : 6 : 0 6  : 1
+O: 3 3 : 7 : 0 7  : 1
+O: 3 3 : 8 : 0 8  : 1
+O: 3 3 : 9 : 1 0  : 1
+O: 3 3 : 10 : 1 1  : 1
+O: 3 3 : 11 : 1 2  : 1
+O: 3 3 : 12 : 1 3  : 1
+O: 3 3 : 13 : 1 4  : 1
+O: 3 3 : 14 : 1 5  : 1
+O: 3 3 : 15 : 1 6  : 1
+O: 3 3 : 36 : 4 0  : 1
+O: 3 3 : 37 : 4 1  : 1
+O: 3 3 : 38 : 4 2  : 1
+O: 3 3 : 39 : 4 3  : 1
+O: 3 3 : 40 : 4 4  : 1
+O: 3 3 : 41 : 4 5  : 1
+O: 3 3 : 42 : 4 6  : 1
+O: 3 3 : 43 : 4 7  : 1
+O: 3 3 : 44 : 4 8  : 1
+O: 3 3 : 45 : 5 0  : 1
+O: 3 3 : 46 : 5 1  : 1
+O: 3 3 : 47 : 5 2  : 1
+O: 3 3 : 48 : 5 3  : 1
+O: 3 3 : 49 : 5 4  : 1
+O: 3 3 : 50 : 5 5  : 1
+O: 3 3 : 51 : 5 6  : 1
+O: 3 3 : 52 : 5 7  : 1
+O: 3 3 : 53 : 5 8  : 1
+O: 3 3 : 54 : 6 0  : 1
+O: 3 3 : 55 : 6 1  : 1
+O: 3 3 : 56 : 6 2  : 1
+O: 3 3 : 57 : 6 3  : 1
+O: 3 3 : 58 : 6 4  : 1
+O: 3 3 : 59 : 6 5  : 1
+O: 3 3 : 60 : 6 6  : 1
+O: 3 3 : 61 : 6 7  : 1
+O: 3 3 : 62 : 6 8  : 1
+O: 3 3 : 63 : 7 0  : 1
+O: 3 3 : 64 : 7 1  : 1
+O: 3 3 : 65 : 7 2  : 1
+O: 3 3 : 66 : 7 3  : 1
+O: 3 3 : 67 : 7 4  : 1
+O: 3 3 : 68 : 7 5  : 1
+O: 3 3 : 69 : 7 6  : 1
+O: 3 3 : 70 : 7 7  : 1
+O: 3 3 : 71 : 7 8  : 1
+O: 3 3 : 72 : 8 0  : 1
+O: 3 3 : 73 : 8 1  : 1
+O: 3 3 : 74 : 8 2  : 1
+O: 3 3 : 75 : 8 3  : 1
+O: 3 3 : 76 : 8 4  : 1
+O: 3 3 : 77 : 8 5  : 1
+O: 3 2 : 80 : 8 8  : 1
+O: 3 2 : 79 : 8 7  : 1
+O: 3 2 : 78 : 8 6  : 1
+O: 3 2 : 35 : 3 8  : 1
+O: 3 2 : 34 : 3 7  : 1
+O: 3 2 : 33 : 3 6  : 1
+O: 3 2 : 32 : 3 5  : 1
+O: 3 2 : 31 : 3 4  : 1
+O: 3 2 : 30 : 3 3  : 1
+O: 3 2 : 29 : 3 2  : 1
+O: 3 2 : 28 : 3 1  : 1
+O: 3 2 : 27 : 3 0  : 1
+O: 3 2 : 26 : 2 8  : 1
+O: 3 2 : 25 : 2 7  : 1
+O: 3 2 : 24 : 2 6  : 1
+O: 3 2 : 23 : 2 5  : 1
+O: 3 2 : 22 : 2 4  : 1
+O: 3 2 : 21 : 2 3  : 1
+O: 3 2 : 20 : 2 2  : 1
+O: 3 2 : 19 : 2 1  : 1
+O: 3 2 : 18 : 2 0  : 1
+O: 3 2 : 17 : 1 8  : 1
+O: 3 2 : 16 : 1 7  : 1
+O: 3 2 : 5 : 0 5  : 1
+O: 3 2 : 4 : 0 4  : 1
+O: 3 2 : 3 : 0 3  : 1
+O: 3 2 : 2 : 0 2  : 1
+O: 3 2 : 0 : 0 0  : 1
+O: 3 2 : 1 : 0 1  : 1
+O: 3 2 : 6 : 0 6  : 1
+O: 3 2 : 7 : 0 7  : 1
+O: 3 2 : 8 : 0 8  : 1
+O: 3 2 : 9 : 1 0  : 1
+O: 3 2 : 10 : 1 1  : 1
+O: 3 2 : 11 : 1 2  : 1
+O: 3 2 : 12 : 1 3  : 1
+O: 3 2 : 13 : 1 4  : 1
+O: 3 2 : 14 : 1 5  : 1
+O: 3 2 : 15 : 1 6  : 1
+O: 3 2 : 36 : 4 0  : 1
+O: 3 2 : 37 : 4 1  : 1
+O: 3 2 : 38 : 4 2  : 1
+O: 3 2 : 39 : 4 3  : 1
+O: 3 2 : 40 : 4 4  : 1
+O: 3 2 : 41 : 4 5  : 1
+O: 3 2 : 42 : 4 6  : 1
+O: 3 2 : 43 : 4 7  : 1
+O: 3 2 : 44 : 4 8  : 1
+O: 3 2 : 45 : 5 0  : 1
+O: 3 2 : 46 : 5 1  : 1
+O: 3 2 : 47 : 5 2  : 1
+O: 3 2 : 48 : 5 3  : 1
+O: 3 2 : 49 : 5 4  : 1
+O: 3 2 : 50 : 5 5  : 1
+O: 3 2 : 51 : 5 6  : 1
+O: 3 2 : 52 : 5 7  : 1
+O: 3 2 : 53 : 5 8  : 1
+O: 3 2 : 54 : 6 0  : 1
+O: 3 2 : 55 : 6 1  : 1
+O: 3 2 : 56 : 6 2  : 1
+O: 3 2 : 57 : 6 3  : 1
+O: 3 2 : 58 : 6 4  : 1
+O: 3 2 : 59 : 6 5  : 1
+O: 3 2 : 60 : 6 6  : 1
+O: 3 2 : 61 : 6 7  : 1
+O: 3 2 : 62 : 6 8  : 1
+O: 3 2 : 63 : 7 0  : 1
+O: 3 2 : 64 : 7 1  : 1
+O: 3 2 : 65 : 7 2  : 1
+O: 3 2 : 66 : 7 3  : 1
+O: 3 2 : 67 : 7 4  : 1
+O: 3 2 : 68 : 7 5  : 1
+O: 3 2 : 69 : 7 6  : 1
+O: 3 2 : 70 : 7 7  : 1
+O: 3 2 : 71 : 7 8  : 1
+O: 3 2 : 72 : 8 0  : 1
+O: 3 2 : 73 : 8 1  : 1
+O: 3 2 : 74 : 8 2  : 1
+O: 3 2 : 75 : 8 3  : 1
+O: 3 2 : 76 : 8 4  : 1
+O: 3 2 : 77 : 8 5  : 1
+O: 3 1 : 80 : 8 8  : 1
+O: 3 1 : 79 : 8 7  : 1
+O: 3 1 : 78 : 8 6  : 1
+O: 3 1 : 35 : 3 8  : 1
+O: 3 1 : 34 : 3 7  : 1
+O: 3 1 : 33 : 3 6  : 1
+O: 3 1 : 32 : 3 5  : 1
+O: 3 1 : 31 : 3 4  : 1
+O: 3 1 : 30 : 3 3  : 1
+O: 3 1 : 29 : 3 2  : 1
+O: 3 1 : 28 : 3 1  : 1
+O: 3 1 : 27 : 3 0  : 1
+O: 3 1 : 26 : 2 8  : 1
+O: 3 1 : 25 : 2 7  : 1
+O: 3 1 : 24 : 2 6  : 1
+O: 3 1 : 23 : 2 5  : 1
+O: 3 1 : 22 : 2 4  : 1
+O: 3 1 : 21 : 2 3  : 1
+O: 3 1 : 20 : 2 2  : 1
+O: 3 1 : 19 : 2 1  : 1
+O: 3 1 : 18 : 2 0  : 1
+O: 3 1 : 17 : 1 8  : 1
+O: 3 1 : 16 : 1 7  : 1
+O: 3 1 : 5 : 0 5  : 1
+O: 3 1 : 4 : 0 4  : 1
+O: 3 1 : 3 : 0 3  : 1
+O: 3 1 : 2 : 0 2  : 1
+O: 3 1 : 0 : 0 0  : 1
+O: 3 1 : 1 : 0 1  : 1
+O: 3 1 : 6 : 0 6  : 1
+O: 3 1 : 7 : 0 7  : 1
+O: 3 1 : 8 : 0 8  : 1
+O: 3 1 : 9 : 1 0  : 1
+O: 3 1 : 10 : 1 1  : 1
+O: 3 1 : 11 : 1 2  : 1
+O: 3 1 : 12 : 1 3  : 1
+O: 3 1 : 13 : 1 4  : 1
+O: 3 1 : 14 : 1 5  : 1
+O: 3 1 : 15 : 1 6  : 1
+O: 3 1 : 36 : 4 0  : 1
+O: 3 1 : 37 : 4 1  : 1
+O: 3 1 : 38 : 4 2  : 1
+O: 3 1 : 39 : 4 3  : 1
+O: 3 1 : 40 : 4 4  : 1
+O: 3 1 : 41 : 4 5  : 1
+O: 3 1 : 42 : 4 6  : 1
+O: 3 1 : 43 : 4 7  : 1
+O: 3 1 : 44 : 4 8  : 1
+O: 3 1 : 45 : 5 0  : 1
+O: 3 1 : 46 : 5 1  : 1
+O: 3 1 : 47 : 5 2  : 1
+O: 3 1 : 48 : 5 3  : 1
+O: 3 1 : 49 : 5 4  : 1
+O: 3 1 : 50 : 5 5  : 1
+O: 3 1 : 51 : 5 6  : 1
+O: 3 1 : 52 : 5 7  : 1
+O: 3 1 : 53 : 5 8  : 1
+O: 3 1 : 54 : 6 0  : 1
+O: 3 1 : 55 : 6 1  : 1
+O: 3 1 : 56 : 6 2  : 1
+O: 3 1 : 57 : 6 3  : 1
+O: 3 1 : 58 : 6 4  : 1
+O: 3 1 : 59 : 6 5  : 1
+O: 3 1 : 60 : 6 6  : 1
+O: 3 1 : 61 : 6 7  : 1
+O: 3 1 : 62 : 6 8  : 1
+O: 3 1 : 63 : 7 0  : 1
+O: 3 1 : 64 : 7 1  : 1
+O: 3 1 : 65 : 7 2  : 1
+O: 3 1 : 66 : 7 3  : 1
+O: 3 1 : 67 : 7 4  : 1
+O: 3 1 : 68 : 7 5  : 1
+O: 3 1 : 69 : 7 6  : 1
+O: 3 1 : 70 : 7 7  : 1
+O: 3 1 : 71 : 7 8  : 1
+O: 3 1 : 72 : 8 0  : 1
+O: 3 1 : 73 : 8 1  : 1
+O: 3 1 : 74 : 8 2  : 1
+O: 3 1 : 75 : 8 3  : 1
+O: 3 1 : 76 : 8 4  : 1
+O: 3 1 : 77 : 8 5  : 1
+O: 1 0 : 80 : 8 8  : 1
+O: 1 0 : 79 : 8 7  : 1
+O: 1 0 : 78 : 8 6  : 1
+O: 1 0 : 35 : 3 8  : 1
+O: 1 0 : 34 : 3 7  : 1
+O: 1 0 : 33 : 3 6  : 1
+O: 1 0 : 32 : 3 5  : 1
+O: 1 0 : 31 : 3 4  : 1
+O: 1 0 : 30 : 3 3  : 1
+O: 1 0 : 29 : 3 2  : 1
+O: 1 0 : 28 : 3 1  : 1
+O: 1 0 : 27 : 3 0  : 1
+O: 1 0 : 26 : 2 8  : 1
+O: 1 0 : 25 : 2 7  : 1
+O: 1 0 : 24 : 2 6  : 1
+O: 1 0 : 23 : 2 5  : 1
+O: 1 0 : 22 : 2 4  : 1
+O: 1 0 : 21 : 2 3  : 1
+O: 1 0 : 20 : 2 2  : 1
+O: 1 0 : 19 : 2 1  : 1
+O: 1 0 : 18 : 2 0  : 1
+O: 1 0 : 17 : 1 8  : 1
+O: 1 0 : 16 : 1 7  : 1
+O: 1 0 : 5 : 0 5  : 1
+O: 1 0 : 4 : 0 4  : 1
+O: 1 0 : 3 : 0 3  : 1
+O: 1 0 : 2 : 0 2  : 1
+O: 1 0 : 0 : 0 0  : 1
+O: 1 0 : 1 : 0 1  : 1
+O: 1 0 : 6 : 0 6  : 1
+O: 1 0 : 7 : 0 7  : 1
+O: 1 0 : 8 : 0 8  : 1
+O: 1 0 : 9 : 1 0  : 1
+O: 1 0 : 10 : 1 1  : 1
+O: 1 0 : 11 : 1 2  : 1
+O: 1 0 : 12 : 1 3  : 1
+O: 1 0 : 13 : 1 4  : 1
+O: 1 0 : 14 : 1 5  : 1
+O: 1 0 : 15 : 1 6  : 1
+O: 1 0 : 36 : 4 0  : 1
+O: 1 0 : 37 : 4 1  : 1
+O: 1 0 : 38 : 4 2  : 1
+O: 1 0 : 39 : 4 3  : 1
+O: 1 0 : 40 : 4 4  : 1
+O: 1 0 : 41 : 4 5  : 1
+O: 1 0 : 42 : 4 6  : 1
+O: 1 0 : 43 : 4 7  : 1
+O: 1 0 : 44 : 4 8  : 1
+O: 1 0 : 45 : 5 0  : 1
+O: 1 0 : 46 : 5 1  : 1
+O: 1 0 : 47 : 5 2  : 1
+O: 1 0 : 48 : 5 3  : 1
+O: 1 0 : 49 : 5 4  : 1
+O: 1 0 : 50 : 5 5  : 1
+O: 1 0 : 51 : 5 6  : 1
+O: 1 0 : 52 : 5 7  : 1
+O: 1 0 : 53 : 5 8  : 1
+O: 1 0 : 54 : 6 0  : 1
+O: 1 0 : 55 : 6 1  : 1
+O: 1 0 : 56 : 6 2  : 1
+O: 1 0 : 57 : 6 3  : 1
+O: 1 0 : 58 : 6 4  : 1
+O: 1 0 : 59 : 6 5  : 1
+O: 1 0 : 60 : 6 6  : 1
+O: 1 0 : 61 : 6 7  : 1
+O: 1 0 : 62 : 6 8  : 1
+O: 1 0 : 63 : 7 0  : 1
+O: 1 0 : 64 : 7 1  : 1
+O: 1 0 : 65 : 7 2  : 1
+O: 1 0 : 66 : 7 3  : 1
+O: 1 0 : 67 : 7 4  : 1
+O: 1 0 : 68 : 7 5  : 1
+O: 1 0 : 69 : 7 6  : 1
+O: 1 0 : 70 : 7 7  : 1
+O: 1 0 : 71 : 7 8  : 1
+O: 1 0 : 72 : 8 0  : 1
+O: 1 0 : 73 : 8 1  : 1
+O: 1 0 : 74 : 8 2  : 1
+O: 1 0 : 75 : 8 3  : 1
+O: 1 0 : 76 : 8 4  : 1
+O: 1 0 : 77 : 8 5  : 1
+O: 0 4 : 80 : 8 8  : 1
+O: 0 4 : 79 : 8 7  : 1
+O: 0 4 : 78 : 8 6  : 1
+O: 0 4 : 35 : 3 8  : 1
+O: 0 4 : 34 : 3 7  : 1
+O: 0 4 : 33 : 3 6  : 1
+O: 0 4 : 32 : 3 5  : 1
+O: 0 4 : 31 : 3 4  : 1
+O: 0 4 : 30 : 3 3  : 1
+O: 0 4 : 29 : 3 2  : 1
+O: 0 4 : 28 : 3 1  : 1
+O: 0 4 : 27 : 3 0  : 1
+O: 0 4 : 26 : 2 8  : 1
+O: 0 4 : 25 : 2 7  : 1
+O: 0 4 : 24 : 2 6  : 1
+O: 0 4 : 23 : 2 5  : 1
+O: 0 4 : 22 : 2 4  : 1
+O: 0 4 : 21 : 2 3  : 1
+O: 0 4 : 20 : 2 2  : 1
+O: 0 4 : 19 : 2 1  : 1
+O: 0 4 : 18 : 2 0  : 1
+O: 0 4 : 17 : 1 8  : 1
+O: 0 4 : 16 : 1 7  : 1
+O: 0 4 : 5 : 0 5  : 1
+O: 0 4 : 4 : 0 4  : 1
+O: 0 4 : 3 : 0 3  : 1
+O: 0 4 : 2 : 0 2  : 1
+O: 0 4 : 0 : 0 0  : 1
+O: 0 4 : 1 : 0 1  : 1
+O: 0 4 : 6 : 0 6  : 1
+O: 0 4 : 7 : 0 7  : 1
+O: 0 4 : 8 : 0 8  : 1
+O: 0 4 : 9 : 1 0  : 1
+O: 0 4 : 10 : 1 1  : 1
+O: 0 4 : 11 : 1 2  : 1
+O: 0 4 : 12 : 1 3  : 1
+O: 0 4 : 13 : 1 4  : 1
+O: 0 4 : 14 : 1 5  : 1
+O: 0 4 : 15 : 1 6  : 1
+O: 0 4 : 36 : 4 0  : 1
+O: 0 4 : 37 : 4 1  : 1
+O: 0 4 : 38 : 4 2  : 1
+O: 0 4 : 39 : 4 3  : 1
+O: 0 4 : 40 : 4 4  : 1
+O: 0 4 : 41 : 4 5  : 1
+O: 0 4 : 42 : 4 6  : 1
+O: 0 4 : 43 : 4 7  : 1
+O: 0 4 : 44 : 4 8  : 1
+O: 0 4 : 45 : 5 0  : 1
+O: 0 4 : 46 : 5 1  : 1
+O: 0 4 : 47 : 5 2  : 1
+O: 0 4 : 48 : 5 3  : 1
+O: 0 4 : 49 : 5 4  : 1
+O: 0 4 : 50 : 5 5  : 1
+O: 0 4 : 51 : 5 6  : 1
+O: 0 4 : 52 : 5 7  : 1
+O: 0 4 : 53 : 5 8  : 1
+O: 0 4 : 54 : 6 0  : 1
+O: 0 4 : 55 : 6 1  : 1
+O: 0 4 : 56 : 6 2  : 1
+O: 0 4 : 57 : 6 3  : 1
+O: 0 4 : 58 : 6 4  : 1
+O: 0 4 : 59 : 6 5  : 1
+O: 0 4 : 60 : 6 6  : 1
+O: 0 4 : 61 : 6 7  : 1
+O: 0 4 : 62 : 6 8  : 1
+O: 0 4 : 63 : 7 0  : 1
+O: 0 4 : 64 : 7 1  : 1
+O: 0 4 : 65 : 7 2  : 1
+O: 0 4 : 66 : 7 3  : 1
+O: 0 4 : 67 : 7 4  : 1
+O: 0 4 : 68 : 7 5  : 1
+O: 0 4 : 69 : 7 6  : 1
+O: 0 4 : 70 : 7 7  : 1
+O: 0 4 : 71 : 7 8  : 1
+O: 0 4 : 72 : 8 0  : 1
+O: 0 4 : 73 : 8 1  : 1
+O: 0 4 : 74 : 8 2  : 1
+O: 0 4 : 75 : 8 3  : 1
+O: 0 4 : 76 : 8 4  : 1
+O: 0 4 : 77 : 8 5  : 1
+O: 0 3 : 80 : 8 8  : 1
+O: 0 3 : 79 : 8 7  : 1
+O: 0 3 : 78 : 8 6  : 1
+O: 0 3 : 35 : 3 8  : 1
+O: 0 3 : 34 : 3 7  : 1
+O: 0 3 : 33 : 3 6  : 1
+O: 0 3 : 32 : 3 5  : 1
+O: 0 3 : 31 : 3 4  : 1
+O: 0 3 : 30 : 3 3  : 1
+O: 0 3 : 29 : 3 2  : 1
+O: 0 3 : 28 : 3 1  : 1
+O: 0 3 : 27 : 3 0  : 1
+O: 0 3 : 26 : 2 8  : 1
+O: 0 3 : 25 : 2 7  : 1
+O: 0 3 : 24 : 2 6  : 1
+O: 0 3 : 23 : 2 5  : 1
+O: 0 3 : 22 : 2 4  : 1
+O: 0 3 : 21 : 2 3  : 1
+O: 0 3 : 20 : 2 2  : 1
+O: 0 3 : 19 : 2 1  : 1
+O: 0 3 : 18 : 2 0  : 1
+O: 0 3 : 17 : 1 8  : 1
+O: 0 3 : 16 : 1 7  : 1
+O: 0 3 : 5 : 0 5  : 1
+O: 0 3 : 4 : 0 4  : 1
+O: 0 3 : 3 : 0 3  : 1
+O: 0 3 : 2 : 0 2  : 1
+O: 0 3 : 0 : 0 0  : 1
+O: 0 3 : 1 : 0 1  : 1
+O: 0 3 : 6 : 0 6  : 1
+O: 0 3 : 7 : 0 7  : 1
+O: 0 3 : 8 : 0 8  : 1
+O: 0 3 : 9 : 1 0  : 1
+O: 0 3 : 10 : 1 1  : 1
+O: 0 3 : 11 : 1 2  : 1
+O: 0 3 : 12 : 1 3  : 1
+O: 0 3 : 13 : 1 4  : 1
+O: 0 3 : 14 : 1 5  : 1
+O: 0 3 : 15 : 1 6  : 1
+O: 0 3 : 36 : 4 0  : 1
+O: 0 3 : 37 : 4 1  : 1
+O: 0 3 : 38 : 4 2  : 1
+O: 0 3 : 39 : 4 3  : 1
+O: 0 3 : 40 : 4 4  : 1
+O: 0 3 : 41 : 4 5  : 1
+O: 0 3 : 42 : 4 6  : 1
+O: 0 3 : 43 : 4 7  : 1
+O: 0 3 : 44 : 4 8  : 1
+O: 0 3 : 45 : 5 0  : 1
+O: 0 3 : 46 : 5 1  : 1
+O: 0 3 : 47 : 5 2  : 1
+O: 0 3 : 48 : 5 3  : 1
+O: 0 3 : 49 : 5 4  : 1
+O: 0 3 : 50 : 5 5  : 1
+O: 0 3 : 51 : 5 6  : 1
+O: 0 3 : 52 : 5 7  : 1
+O: 0 3 : 53 : 5 8  : 1
+O: 0 3 : 54 : 6 0  : 1
+O: 0 3 : 55 : 6 1  : 1
+O: 0 3 : 56 : 6 2  : 1
+O: 0 3 : 57 : 6 3  : 1
+O: 0 3 : 58 : 6 4  : 1
+O: 0 3 : 59 : 6 5  : 1
+O: 0 3 : 60 : 6 6  : 1
+O: 0 3 : 61 : 6 7  : 1
+O: 0 3 : 62 : 6 8  : 1
+O: 0 3 : 63 : 7 0  : 1
+O: 0 3 : 64 : 7 1  : 1
+O: 0 3 : 65 : 7 2  : 1
+O: 0 3 : 66 : 7 3  : 1
+O: 0 3 : 67 : 7 4  : 1
+O: 0 3 : 68 : 7 5  : 1
+O: 0 3 : 69 : 7 6  : 1
+O: 0 3 : 70 : 7 7  : 1
+O: 0 3 : 71 : 7 8  : 1
+O: 0 3 : 72 : 8 0  : 1
+O: 0 3 : 73 : 8 1  : 1
+O: 0 3 : 74 : 8 2  : 1
+O: 0 3 : 75 : 8 3  : 1
+O: 0 3 : 76 : 8 4  : 1
+O: 0 3 : 77 : 8 5  : 1
+O: 0 2 : 80 : 8 8  : 1
+O: 0 2 : 79 : 8 7  : 1
+O: 0 2 : 78 : 8 6  : 1
+O: 0 2 : 35 : 3 8  : 1
+O: 0 2 : 34 : 3 7  : 1
+O: 0 2 : 33 : 3 6  : 1
+O: 0 2 : 32 : 3 5  : 1
+O: 0 2 : 31 : 3 4  : 1
+O: 0 2 : 30 : 3 3  : 1
+O: 0 2 : 29 : 3 2  : 1
+O: 0 2 : 28 : 3 1  : 1
+O: 0 2 : 27 : 3 0  : 1
+O: 0 2 : 26 : 2 8  : 1
+O: 0 2 : 25 : 2 7  : 1
+O: 0 2 : 24 : 2 6  : 1
+O: 0 2 : 23 : 2 5  : 1
+O: 0 2 : 22 : 2 4  : 1
+O: 0 2 : 21 : 2 3  : 1
+O: 0 2 : 20 : 2 2  : 1
+O: 0 2 : 19 : 2 1  : 1
+O: 0 2 : 18 : 2 0  : 1
+O: 0 2 : 17 : 1 8  : 1
+O: 0 2 : 16 : 1 7  : 1
+O: 0 2 : 5 : 0 5  : 1
+O: 0 2 : 4 : 0 4  : 1
+O: 0 2 : 3 : 0 3  : 1
+O: 0 2 : 2 : 0 2  : 1
+O: 0 2 : 0 : 0 0  : 1
+O: 0 2 : 1 : 0 1  : 1
+O: 0 2 : 6 : 0 6  : 1
+O: 0 2 : 7 : 0 7  : 1
+O: 0 2 : 8 : 0 8  : 1
+O: 0 2 : 9 : 1 0  : 1
+O: 0 2 : 10 : 1 1  : 1
+O: 0 2 : 11 : 1 2  : 1
+O: 0 2 : 12 : 1 3  : 1
+O: 0 2 : 13 : 1 4  : 1
+O: 0 2 : 14 : 1 5  : 1
+O: 0 2 : 15 : 1 6  : 1
+O: 0 2 : 36 : 4 0  : 1
+O: 0 2 : 37 : 4 1  : 1
+O: 0 2 : 38 : 4 2  : 1
+O: 0 2 : 39 : 4 3  : 1
+O: 0 2 : 40 : 4 4  : 1
+O: 0 2 : 41 : 4 5  : 1
+O: 0 2 : 42 : 4 6  : 1
+O: 0 2 : 43 : 4 7  : 1
+O: 0 2 : 44 : 4 8  : 1
+O: 0 2 : 45 : 5 0  : 1
+O: 0 2 : 46 : 5 1  : 1
+O: 0 2 : 47 : 5 2  : 1
+O: 0 2 : 48 : 5 3  : 1
+O: 0 2 : 49 : 5 4  : 1
+O: 0 2 : 50 : 5 5  : 1
+O: 0 2 : 51 : 5 6  : 1
+O: 0 2 : 52 : 5 7  : 1
+O: 0 2 : 53 : 5 8  : 1
+O: 0 2 : 54 : 6 0  : 1
+O: 0 2 : 55 : 6 1  : 1
+O: 0 2 : 56 : 6 2  : 1
+O: 0 2 : 57 : 6 3  : 1
+O: 0 2 : 58 : 6 4  : 1
+O: 0 2 : 59 : 6 5  : 1
+O: 0 2 : 60 : 6 6  : 1
+O: 0 2 : 61 : 6 7  : 1
+O: 0 2 : 62 : 6 8  : 1
+O: 0 2 : 63 : 7 0  : 1
+O: 0 2 : 64 : 7 1  : 1
+O: 0 2 : 65 : 7 2  : 1
+O: 0 2 : 66 : 7 3  : 1
+O: 0 2 : 67 : 7 4  : 1
+O: 0 2 : 68 : 7 5  : 1
+O: 0 2 : 69 : 7 6  : 1
+O: 0 2 : 70 : 7 7  : 1
+O: 0 2 : 71 : 7 8  : 1
+O: 0 2 : 72 : 8 0  : 1
+O: 0 2 : 73 : 8 1  : 1
+O: 0 2 : 74 : 8 2  : 1
+O: 0 2 : 75 : 8 3  : 1
+O: 0 2 : 76 : 8 4  : 1
+O: 0 2 : 77 : 8 5  : 1
+O: 0 0 : 80 : 8 8  : 1
+O: 0 0 : 79 : 8 7  : 1
+O: 0 0 : 78 : 8 6  : 1
+O: 0 0 : 35 : 3 8  : 1
+O: 0 0 : 34 : 3 7  : 1
+O: 0 0 : 33 : 3 6  : 1
+O: 0 0 : 32 : 3 5  : 1
+O: 0 0 : 31 : 3 4  : 1
+O: 0 0 : 30 : 3 3  : 1
+O: 0 0 : 29 : 3 2  : 1
+O: 0 0 : 28 : 3 1  : 1
+O: 0 0 : 27 : 3 0  : 1
+O: 0 0 : 26 : 2 8  : 1
+O: 0 0 : 25 : 2 7  : 1
+O: 0 0 : 24 : 2 6  : 1
+O: 0 0 : 23 : 2 5  : 1
+O: 0 0 : 22 : 2 4  : 1
+O: 0 0 : 21 : 2 3  : 1
+O: 0 0 : 20 : 2 2  : 1
+O: 0 0 : 19 : 2 1  : 1
+O: 0 0 : 18 : 2 0  : 1
+O: 0 0 : 17 : 1 8  : 1
+O: 0 0 : 16 : 1 7  : 1
+O: 0 0 : 5 : 0 5  : 1
+O: 0 0 : 4 : 0 4  : 1
+O: 0 0 : 3 : 0 3  : 1
+O: 0 0 : 2 : 0 2  : 1
+O: 0 0 : 0 : 0 0  : 1
+O: 0 0 : 1 : 0 1  : 1
+O: 0 0 : 6 : 0 6  : 1
+O: 0 0 : 7 : 0 7  : 1
+O: 0 0 : 8 : 0 8  : 1
+O: 0 0 : 9 : 1 0  : 1
+O: 0 0 : 10 : 1 1  : 1
+O: 0 0 : 11 : 1 2  : 1
+O: 0 0 : 12 : 1 3  : 1
+O: 0 0 : 13 : 1 4  : 1
+O: 0 0 : 14 : 1 5  : 1
+O: 0 0 : 15 : 1 6  : 1
+O: 0 0 : 36 : 4 0  : 1
+O: 0 0 : 37 : 4 1  : 1
+O: 0 0 : 38 : 4 2  : 1
+O: 0 0 : 39 : 4 3  : 1
+O: 0 0 : 40 : 4 4  : 1
+O: 0 0 : 41 : 4 5  : 1
+O: 0 0 : 42 : 4 6  : 1
+O: 0 0 : 43 : 4 7  : 1
+O: 0 0 : 44 : 4 8  : 1
+O: 0 0 : 45 : 5 0  : 1
+O: 0 0 : 46 : 5 1  : 1
+O: 0 0 : 47 : 5 2  : 1
+O: 0 0 : 48 : 5 3  : 1
+O: 0 0 : 49 : 5 4  : 1
+O: 0 0 : 50 : 5 5  : 1
+O: 0 0 : 51 : 5 6  : 1
+O: 0 0 : 52 : 5 7  : 1
+O: 0 0 : 53 : 5 8  : 1
+O: 0 0 : 54 : 6 0  : 1
+O: 0 0 : 55 : 6 1  : 1
+O: 0 0 : 56 : 6 2  : 1
+O: 0 0 : 57 : 6 3  : 1
+O: 0 0 : 58 : 6 4  : 1
+O: 0 0 : 59 : 6 5  : 1
+O: 0 0 : 60 : 6 6  : 1
+O: 0 0 : 61 : 6 7  : 1
+O: 0 0 : 62 : 6 8  : 1
+O: 0 0 : 63 : 7 0  : 1
+O: 0 0 : 64 : 7 1  : 1
+O: 0 0 : 65 : 7 2  : 1
+O: 0 0 : 66 : 7 3  : 1
+O: 0 0 : 67 : 7 4  : 1
+O: 0 0 : 68 : 7 5  : 1
+O: 0 0 : 69 : 7 6  : 1
+O: 0 0 : 70 : 7 7  : 1
+O: 0 0 : 71 : 7 8  : 1
+O: 0 0 : 72 : 8 0  : 1
+O: 0 0 : 73 : 8 1  : 1
+O: 0 0 : 74 : 8 2  : 1
+O: 0 0 : 75 : 8 3  : 1
+O: 0 0 : 76 : 8 4  : 1
+O: 0 0 : 77 : 8 5  : 1
+O: 0 1 : 80 : 8 8  : 1
+O: 0 1 : 79 : 8 7  : 1
+O: 0 1 : 78 : 8 6  : 1
+O: 0 1 : 35 : 3 8  : 1
+O: 0 1 : 34 : 3 7  : 1
+O: 0 1 : 33 : 3 6  : 1
+O: 0 1 : 32 : 3 5  : 1
+O: 0 1 : 31 : 3 4  : 1
+O: 0 1 : 30 : 3 3  : 1
+O: 0 1 : 29 : 3 2  : 1
+O: 0 1 : 28 : 3 1  : 1
+O: 0 1 : 27 : 3 0  : 1
+O: 0 1 : 26 : 2 8  : 1
+O: 0 1 : 25 : 2 7  : 1
+O: 0 1 : 24 : 2 6  : 1
+O: 0 1 : 23 : 2 5  : 1
+O: 0 1 : 22 : 2 4  : 1
+O: 0 1 : 21 : 2 3  : 1
+O: 0 1 : 20 : 2 2  : 1
+O: 0 1 : 19 : 2 1  : 1
+O: 0 1 : 18 : 2 0  : 1
+O: 0 1 : 17 : 1 8  : 1
+O: 0 1 : 16 : 1 7  : 1
+O: 0 1 : 5 : 0 5  : 1
+O: 0 1 : 4 : 0 4  : 1
+O: 0 1 : 3 : 0 3  : 1
+O: 0 1 : 2 : 0 2  : 1
+O: 0 1 : 0 : 0 0  : 1
+O: 0 1 : 1 : 0 1  : 1
+O: 0 1 : 6 : 0 6  : 1
+O: 0 1 : 7 : 0 7  : 1
+O: 0 1 : 8 : 0 8  : 1
+O: 0 1 : 9 : 1 0  : 1
+O: 0 1 : 10 : 1 1  : 1
+O: 0 1 : 11 : 1 2  : 1
+O: 0 1 : 12 : 1 3  : 1
+O: 0 1 : 13 : 1 4  : 1
+O: 0 1 : 14 : 1 5  : 1
+O: 0 1 : 15 : 1 6  : 1
+O: 0 1 : 36 : 4 0  : 1
+O: 0 1 : 37 : 4 1  : 1
+O: 0 1 : 38 : 4 2  : 1
+O: 0 1 : 39 : 4 3  : 1
+O: 0 1 : 40 : 4 4  : 1
+O: 0 1 : 41 : 4 5  : 1
+O: 0 1 : 42 : 4 6  : 1
+O: 0 1 : 43 : 4 7  : 1
+O: 0 1 : 44 : 4 8  : 1
+O: 0 1 : 45 : 5 0  : 1
+O: 0 1 : 46 : 5 1  : 1
+O: 0 1 : 47 : 5 2  : 1
+O: 0 1 : 48 : 5 3  : 1
+O: 0 1 : 49 : 5 4  : 1
+O: 0 1 : 50 : 5 5  : 1
+O: 0 1 : 51 : 5 6  : 1
+O: 0 1 : 52 : 5 7  : 1
+O: 0 1 : 53 : 5 8  : 1
+O: 0 1 : 54 : 6 0  : 1
+O: 0 1 : 55 : 6 1  : 1
+O: 0 1 : 56 : 6 2  : 1
+O: 0 1 : 57 : 6 3  : 1
+O: 0 1 : 58 : 6 4  : 1
+O: 0 1 : 59 : 6 5  : 1
+O: 0 1 : 60 : 6 6  : 1
+O: 0 1 : 61 : 6 7  : 1
+O: 0 1 : 62 : 6 8  : 1
+O: 0 1 : 63 : 7 0  : 1
+O: 0 1 : 64 : 7 1  : 1
+O: 0 1 : 65 : 7 2  : 1
+O: 0 1 : 66 : 7 3  : 1
+O: 0 1 : 67 : 7 4  : 1
+O: 0 1 : 68 : 7 5  : 1
+O: 0 1 : 69 : 7 6  : 1
+O: 0 1 : 70 : 7 7  : 1
+O: 0 1 : 71 : 7 8  : 1
+O: 0 1 : 72 : 8 0  : 1
+O: 0 1 : 73 : 8 1  : 1
+O: 0 1 : 74 : 8 2  : 1
+O: 0 1 : 75 : 8 3  : 1
+O: 0 1 : 76 : 8 4  : 1
+O: 0 1 : 77 : 8 5  : 1
+O: 1 1 : 80 : 8 8  : 1
+O: 1 1 : 79 : 8 7  : 1
+O: 1 1 : 78 : 8 6  : 1
+O: 1 1 : 35 : 3 8  : 1
+O: 1 1 : 34 : 3 7  : 1
+O: 1 1 : 33 : 3 6  : 1
+O: 1 1 : 32 : 3 5  : 1
+O: 1 1 : 31 : 3 4  : 1
+O: 1 1 : 30 : 3 3  : 1
+O: 1 1 : 29 : 3 2  : 1
+O: 1 1 : 28 : 3 1  : 1
+O: 1 1 : 27 : 3 0  : 1
+O: 1 1 : 26 : 2 8  : 1
+O: 1 1 : 25 : 2 7  : 1
+O: 1 1 : 24 : 2 6  : 1
+O: 1 1 : 23 : 2 5  : 1
+O: 1 1 : 22 : 2 4  : 1
+O: 1 1 : 21 : 2 3  : 1
+O: 1 1 : 20 : 2 2  : 1
+O: 1 1 : 19 : 2 1  : 1
+O: 1 1 : 18 : 2 0  : 1
+O: 1 1 : 17 : 1 8  : 1
+O: 1 1 : 16 : 1 7  : 1
+O: 1 1 : 5 : 0 5  : 1
+O: 1 1 : 4 : 0 4  : 1
+O: 1 1 : 3 : 0 3  : 1
+O: 1 1 : 2 : 0 2  : 1
+O: 1 1 : 0 : 0 0  : 1
+O: 1 1 : 1 : 0 1  : 1
+O: 1 1 : 6 : 0 6  : 1
+O: 1 1 : 7 : 0 7  : 1
+O: 1 1 : 8 : 0 8  : 1
+O: 1 1 : 9 : 1 0  : 1
+O: 1 1 : 10 : 1 1  : 1
+O: 1 1 : 11 : 1 2  : 1
+O: 1 1 : 12 : 1 3  : 1
+O: 1 1 : 13 : 1 4  : 1
+O: 1 1 : 14 : 1 5  : 1
+O: 1 1 : 15 : 1 6  : 1
+O: 1 1 : 36 : 4 0  : 1
+O: 1 1 : 37 : 4 1  : 1
+O: 1 1 : 38 : 4 2  : 1
+O: 1 1 : 39 : 4 3  : 1
+O: 1 1 : 40 : 4 4  : 1
+O: 1 1 : 41 : 4 5  : 1
+O: 1 1 : 42 : 4 6  : 1
+O: 1 1 : 43 : 4 7  : 1
+O: 1 1 : 44 : 4 8  : 1
+O: 1 1 : 45 : 5 0  : 1
+O: 1 1 : 46 : 5 1  : 1
+O: 1 1 : 47 : 5 2  : 1
+O: 1 1 : 48 : 5 3  : 1
+O: 1 1 : 49 : 5 4  : 1
+O: 1 1 : 50 : 5 5  : 1
+O: 1 1 : 51 : 5 6  : 1
+O: 1 1 : 52 : 5 7  : 1
+O: 1 1 : 53 : 5 8  : 1
+O: 1 1 : 54 : 6 0  : 1
+O: 1 1 : 55 : 6 1  : 1
+O: 1 1 : 56 : 6 2  : 1
+O: 1 1 : 57 : 6 3  : 1
+O: 1 1 : 58 : 6 4  : 1
+O: 1 1 : 59 : 6 5  : 1
+O: 1 1 : 60 : 6 6  : 1
+O: 1 1 : 61 : 6 7  : 1
+O: 1 1 : 62 : 6 8  : 1
+O: 1 1 : 63 : 7 0  : 1
+O: 1 1 : 64 : 7 1  : 1
+O: 1 1 : 65 : 7 2  : 1
+O: 1 1 : 66 : 7 3  : 1
+O: 1 1 : 67 : 7 4  : 1
+O: 1 1 : 68 : 7 5  : 1
+O: 1 1 : 69 : 7 6  : 1
+O: 1 1 : 70 : 7 7  : 1
+O: 1 1 : 71 : 7 8  : 1
+O: 1 1 : 72 : 8 0  : 1
+O: 1 1 : 73 : 8 1  : 1
+O: 1 1 : 74 : 8 2  : 1
+O: 1 1 : 75 : 8 3  : 1
+O: 1 1 : 76 : 8 4  : 1
+O: 1 1 : 77 : 8 5  : 1
+O: 1 2 : 80 : 8 8  : 1
+O: 1 2 : 79 : 8 7  : 1
+O: 1 2 : 78 : 8 6  : 1
+O: 1 2 : 35 : 3 8  : 1
+O: 1 2 : 34 : 3 7  : 1
+O: 1 2 : 33 : 3 6  : 1
+O: 1 2 : 32 : 3 5  : 1
+O: 1 2 : 31 : 3 4  : 1
+O: 1 2 : 30 : 3 3  : 1
+O: 1 2 : 29 : 3 2  : 1
+O: 1 2 : 28 : 3 1  : 1
+O: 1 2 : 27 : 3 0  : 1
+O: 1 2 : 26 : 2 8  : 1
+O: 1 2 : 25 : 2 7  : 1
+O: 1 2 : 24 : 2 6  : 1
+O: 1 2 : 23 : 2 5  : 1
+O: 1 2 : 22 : 2 4  : 1
+O: 1 2 : 21 : 2 3  : 1
+O: 1 2 : 20 : 2 2  : 1
+O: 1 2 : 19 : 2 1  : 1
+O: 1 2 : 18 : 2 0  : 1
+O: 1 2 : 17 : 1 8  : 1
+O: 1 2 : 16 : 1 7  : 1
+O: 1 2 : 5 : 0 5  : 1
+O: 1 2 : 4 : 0 4  : 1
+O: 1 2 : 3 : 0 3  : 1
+O: 1 2 : 2 : 0 2  : 1
+O: 1 2 : 0 : 0 0  : 1
+O: 1 2 : 1 : 0 1  : 1
+O: 1 2 : 6 : 0 6  : 1
+O: 1 2 : 7 : 0 7  : 1
+O: 1 2 : 8 : 0 8  : 1
+O: 1 2 : 9 : 1 0  : 1
+O: 1 2 : 10 : 1 1  : 1
+O: 1 2 : 11 : 1 2  : 1
+O: 1 2 : 12 : 1 3  : 1
+O: 1 2 : 13 : 1 4  : 1
+O: 1 2 : 14 : 1 5  : 1
+O: 1 2 : 15 : 1 6  : 1
+O: 1 2 : 36 : 4 0  : 1
+O: 1 2 : 37 : 4 1  : 1
+O: 1 2 : 38 : 4 2  : 1
+O: 1 2 : 39 : 4 3  : 1
+O: 1 2 : 40 : 4 4  : 1
+O: 1 2 : 41 : 4 5  : 1
+O: 1 2 : 42 : 4 6  : 1
+O: 1 2 : 43 : 4 7  : 1
+O: 1 2 : 44 : 4 8  : 1
+O: 1 2 : 45 : 5 0  : 1
+O: 1 2 : 46 : 5 1  : 1
+O: 1 2 : 47 : 5 2  : 1
+O: 1 2 : 48 : 5 3  : 1
+O: 1 2 : 49 : 5 4  : 1
+O: 1 2 : 50 : 5 5  : 1
+O: 1 2 : 51 : 5 6  : 1
+O: 1 2 : 52 : 5 7  : 1
+O: 1 2 : 53 : 5 8  : 1
+O: 1 2 : 54 : 6 0  : 1
+O: 1 2 : 55 : 6 1  : 1
+O: 1 2 : 56 : 6 2  : 1
+O: 1 2 : 57 : 6 3  : 1
+O: 1 2 : 58 : 6 4  : 1
+O: 1 2 : 59 : 6 5  : 1
+O: 1 2 : 60 : 6 6  : 1
+O: 1 2 : 61 : 6 7  : 1
+O: 1 2 : 62 : 6 8  : 1
+O: 1 2 : 63 : 7 0  : 1
+O: 1 2 : 64 : 7 1  : 1
+O: 1 2 : 65 : 7 2  : 1
+O: 1 2 : 66 : 7 3  : 1
+O: 1 2 : 67 : 7 4  : 1
+O: 1 2 : 68 : 7 5  : 1
+O: 1 2 : 69 : 7 6  : 1
+O: 1 2 : 70 : 7 7  : 1
+O: 1 2 : 71 : 7 8  : 1
+O: 1 2 : 72 : 8 0  : 1
+O: 1 2 : 73 : 8 1  : 1
+O: 1 2 : 74 : 8 2  : 1
+O: 1 2 : 75 : 8 3  : 1
+O: 1 2 : 76 : 8 4  : 1
+O: 1 2 : 77 : 8 5  : 1
+O: 1 3 : 80 : 8 8  : 1
+O: 1 3 : 79 : 8 7  : 1
+O: 1 3 : 78 : 8 6  : 1
+O: 1 3 : 35 : 3 8  : 1
+O: 1 3 : 34 : 3 7  : 1
+O: 1 3 : 33 : 3 6  : 1
+O: 1 3 : 32 : 3 5  : 1
+O: 1 3 : 31 : 3 4  : 1
+O: 1 3 : 30 : 3 3  : 1
+O: 1 3 : 29 : 3 2  : 1
+O: 1 3 : 28 : 3 1  : 1
+O: 1 3 : 27 : 3 0  : 1
+O: 1 3 : 26 : 2 8  : 1
+O: 1 3 : 25 : 2 7  : 1
+O: 1 3 : 24 : 2 6  : 1
+O: 1 3 : 23 : 2 5  : 1
+O: 1 3 : 22 : 2 4  : 1
+O: 1 3 : 21 : 2 3  : 1
+O: 1 3 : 20 : 2 2  : 1
+O: 1 3 : 19 : 2 1  : 1
+O: 1 3 : 18 : 2 0  : 1
+O: 1 3 : 17 : 1 8  : 1
+O: 1 3 : 16 : 1 7  : 1
+O: 1 3 : 5 : 0 5  : 1
+O: 1 3 : 4 : 0 4  : 1
+O: 1 3 : 3 : 0 3  : 1
+O: 1 3 : 2 : 0 2  : 1
+O: 1 3 : 0 : 0 0  : 1
+O: 1 3 : 1 : 0 1  : 1
+O: 1 3 : 6 : 0 6  : 1
+O: 1 3 : 7 : 0 7  : 1
+O: 1 3 : 8 : 0 8  : 1
+O: 1 3 : 9 : 1 0  : 1
+O: 1 3 : 10 : 1 1  : 1
+O: 1 3 : 11 : 1 2  : 1
+O: 1 3 : 12 : 1 3  : 1
+O: 1 3 : 13 : 1 4  : 1
+O: 1 3 : 14 : 1 5  : 1
+O: 1 3 : 15 : 1 6  : 1
+O: 1 3 : 36 : 4 0  : 1
+O: 1 3 : 37 : 4 1  : 1
+O: 1 3 : 38 : 4 2  : 1
+O: 1 3 : 39 : 4 3  : 1
+O: 1 3 : 40 : 4 4  : 1
+O: 1 3 : 41 : 4 5  : 1
+O: 1 3 : 42 : 4 6  : 1
+O: 1 3 : 43 : 4 7  : 1
+O: 1 3 : 44 : 4 8  : 1
+O: 1 3 : 45 : 5 0  : 1
+O: 1 3 : 46 : 5 1  : 1
+O: 1 3 : 47 : 5 2  : 1
+O: 1 3 : 48 : 5 3  : 1
+O: 1 3 : 49 : 5 4  : 1
+O: 1 3 : 50 : 5 5  : 1
+O: 1 3 : 51 : 5 6  : 1
+O: 1 3 : 52 : 5 7  : 1
+O: 1 3 : 53 : 5 8  : 1
+O: 1 3 : 54 : 6 0  : 1
+O: 1 3 : 55 : 6 1  : 1
+O: 1 3 : 56 : 6 2  : 1
+O: 1 3 : 57 : 6 3  : 1
+O: 1 3 : 58 : 6 4  : 1
+O: 1 3 : 59 : 6 5  : 1
+O: 1 3 : 60 : 6 6  : 1
+O: 1 3 : 61 : 6 7  : 1
+O: 1 3 : 62 : 6 8  : 1
+O: 1 3 : 63 : 7 0  : 1
+O: 1 3 : 64 : 7 1  : 1
+O: 1 3 : 65 : 7 2  : 1
+O: 1 3 : 66 : 7 3  : 1
+O: 1 3 : 67 : 7 4  : 1
+O: 1 3 : 68 : 7 5  : 1
+O: 1 3 : 69 : 7 6  : 1
+O: 1 3 : 70 : 7 7  : 1
+O: 1 3 : 71 : 7 8  : 1
+O: 1 3 : 72 : 8 0  : 1
+O: 1 3 : 73 : 8 1  : 1
+O: 1 3 : 74 : 8 2  : 1
+O: 1 3 : 75 : 8 3  : 1
+O: 1 3 : 76 : 8 4  : 1
+O: 1 3 : 77 : 8 5  : 1
+O: 1 4 : 80 : 8 8  : 1
+O: 1 4 : 79 : 8 7  : 1
+O: 1 4 : 78 : 8 6  : 1
+O: 1 4 : 35 : 3 8  : 1
+O: 1 4 : 34 : 3 7  : 1
+O: 1 4 : 33 : 3 6  : 1
+O: 1 4 : 32 : 3 5  : 1
+O: 1 4 : 31 : 3 4  : 1
+O: 1 4 : 30 : 3 3  : 1
+O: 1 4 : 29 : 3 2  : 1
+O: 1 4 : 28 : 3 1  : 1
+O: 1 4 : 27 : 3 0  : 1
+O: 1 4 : 26 : 2 8  : 1
+O: 1 4 : 25 : 2 7  : 1
+O: 1 4 : 24 : 2 6  : 1
+O: 1 4 : 23 : 2 5  : 1
+O: 1 4 : 22 : 2 4  : 1
+O: 1 4 : 21 : 2 3  : 1
+O: 1 4 : 20 : 2 2  : 1
+O: 1 4 : 19 : 2 1  : 1
+O: 1 4 : 18 : 2 0  : 1
+O: 1 4 : 17 : 1 8  : 1
+O: 1 4 : 16 : 1 7  : 1
+O: 1 4 : 5 : 0 5  : 1
+O: 1 4 : 4 : 0 4  : 1
+O: 1 4 : 3 : 0 3  : 1
+O: 1 4 : 2 : 0 2  : 1
+O: 1 4 : 0 : 0 0  : 1
+O: 1 4 : 1 : 0 1  : 1
+O: 1 4 : 6 : 0 6  : 1
+O: 1 4 : 7 : 0 7  : 1
+O: 1 4 : 8 : 0 8  : 1
+O: 1 4 : 9 : 1 0  : 1
+O: 1 4 : 10 : 1 1  : 1
+O: 1 4 : 11 : 1 2  : 1
+O: 1 4 : 12 : 1 3  : 1
+O: 1 4 : 13 : 1 4  : 1
+O: 1 4 : 14 : 1 5  : 1
+O: 1 4 : 15 : 1 6  : 1
+O: 1 4 : 36 : 4 0  : 1
+O: 1 4 : 37 : 4 1  : 1
+O: 1 4 : 38 : 4 2  : 1
+O: 1 4 : 39 : 4 3  : 1
+O: 1 4 : 40 : 4 4  : 1
+O: 1 4 : 41 : 4 5  : 1
+O: 1 4 : 42 : 4 6  : 1
+O: 1 4 : 43 : 4 7  : 1
+O: 1 4 : 44 : 4 8  : 1
+O: 1 4 : 45 : 5 0  : 1
+O: 1 4 : 46 : 5 1  : 1
+O: 1 4 : 47 : 5 2  : 1
+O: 1 4 : 48 : 5 3  : 1
+O: 1 4 : 49 : 5 4  : 1
+O: 1 4 : 50 : 5 5  : 1
+O: 1 4 : 51 : 5 6  : 1
+O: 1 4 : 52 : 5 7  : 1
+O: 1 4 : 53 : 5 8  : 1
+O: 1 4 : 54 : 6 0  : 1
+O: 1 4 : 55 : 6 1  : 1
+O: 1 4 : 56 : 6 2  : 1
+O: 1 4 : 57 : 6 3  : 1
+O: 1 4 : 58 : 6 4  : 1
+O: 1 4 : 59 : 6 5  : 1
+O: 1 4 : 60 : 6 6  : 1
+O: 1 4 : 61 : 6 7  : 1
+O: 1 4 : 62 : 6 8  : 1
+O: 1 4 : 63 : 7 0  : 1
+O: 1 4 : 64 : 7 1  : 1
+O: 1 4 : 65 : 7 2  : 1
+O: 1 4 : 66 : 7 3  : 1
+O: 1 4 : 67 : 7 4  : 1
+O: 1 4 : 68 : 7 5  : 1
+O: 1 4 : 69 : 7 6  : 1
+O: 1 4 : 70 : 7 7  : 1
+O: 1 4 : 71 : 7 8  : 1
+O: 1 4 : 72 : 8 0  : 1
+O: 1 4 : 73 : 8 1  : 1
+O: 1 4 : 74 : 8 2  : 1
+O: 1 4 : 75 : 8 3  : 1
+O: 1 4 : 76 : 8 4  : 1
+O: 1 4 : 77 : 8 5  : 1
+O: 2 0 : 80 : 8 8  : 1
+O: 2 0 : 79 : 8 7  : 1
+O: 2 0 : 78 : 8 6  : 1
+O: 2 0 : 35 : 3 8  : 1
+O: 2 0 : 34 : 3 7  : 1
+O: 2 0 : 33 : 3 6  : 1
+O: 2 0 : 32 : 3 5  : 1
+O: 2 0 : 31 : 3 4  : 1
+O: 2 0 : 30 : 3 3  : 1
+O: 2 0 : 29 : 3 2  : 1
+O: 2 0 : 28 : 3 1  : 1
+O: 2 0 : 27 : 3 0  : 1
+O: 2 0 : 26 : 2 8  : 1
+O: 2 0 : 25 : 2 7  : 1
+O: 2 0 : 24 : 2 6  : 1
+O: 2 0 : 23 : 2 5  : 1
+O: 2 0 : 22 : 2 4  : 1
+O: 2 0 : 21 : 2 3  : 1
+O: 2 0 : 20 : 2 2  : 1
+O: 2 0 : 19 : 2 1  : 1
+O: 2 0 : 18 : 2 0  : 1
+O: 2 0 : 17 : 1 8  : 1
+O: 2 0 : 16 : 1 7  : 1
+O: 2 0 : 5 : 0 5  : 1
+O: 2 0 : 4 : 0 4  : 1
+O: 2 0 : 3 : 0 3  : 1
+O: 2 0 : 2 : 0 2  : 1
+O: 2 0 : 0 : 0 0  : 1
+O: 2 0 : 1 : 0 1  : 1
+O: 2 0 : 6 : 0 6  : 1
+O: 2 0 : 7 : 0 7  : 1
+O: 2 0 : 8 : 0 8  : 1
+O: 2 0 : 9 : 1 0  : 1
+O: 2 0 : 10 : 1 1  : 1
+O: 2 0 : 11 : 1 2  : 1
+O: 2 0 : 12 : 1 3  : 1
+O: 2 0 : 13 : 1 4  : 1
+O: 2 0 : 14 : 1 5  : 1
+O: 2 0 : 15 : 1 6  : 1
+O: 2 0 : 36 : 4 0  : 1
+O: 2 0 : 37 : 4 1  : 1
+O: 2 0 : 38 : 4 2  : 1
+O: 2 0 : 39 : 4 3  : 1
+O: 2 0 : 40 : 4 4  : 1
+O: 2 0 : 41 : 4 5  : 1
+O: 2 0 : 42 : 4 6  : 1
+O: 2 0 : 43 : 4 7  : 1
+O: 2 0 : 44 : 4 8  : 1
+O: 2 0 : 45 : 5 0  : 1
+O: 2 0 : 46 : 5 1  : 1
+O: 2 0 : 47 : 5 2  : 1
+O: 2 0 : 48 : 5 3  : 1
+O: 2 0 : 49 : 5 4  : 1
+O: 2 0 : 50 : 5 5  : 1
+O: 2 0 : 51 : 5 6  : 1
+O: 2 0 : 52 : 5 7  : 1
+O: 2 0 : 53 : 5 8  : 1
+O: 2 0 : 54 : 6 0  : 1
+O: 2 0 : 55 : 6 1  : 1
+O: 2 0 : 56 : 6 2  : 1
+O: 2 0 : 57 : 6 3  : 1
+O: 2 0 : 58 : 6 4  : 1
+O: 2 0 : 59 : 6 5  : 1
+O: 2 0 : 60 : 6 6  : 1
+O: 2 0 : 61 : 6 7  : 1
+O: 2 0 : 62 : 6 8  : 1
+O: 2 0 : 63 : 7 0  : 1
+O: 2 0 : 64 : 7 1  : 1
+O: 2 0 : 65 : 7 2  : 1
+O: 2 0 : 66 : 7 3  : 1
+O: 2 0 : 67 : 7 4  : 1
+O: 2 0 : 68 : 7 5  : 1
+O: 2 0 : 69 : 7 6  : 1
+O: 2 0 : 70 : 7 7  : 1
+O: 2 0 : 71 : 7 8  : 1
+O: 2 0 : 72 : 8 0  : 1
+O: 2 0 : 73 : 8 1  : 1
+O: 2 0 : 74 : 8 2  : 1
+O: 2 0 : 75 : 8 3  : 1
+O: 2 0 : 76 : 8 4  : 1
+O: 2 0 : 77 : 8 5  : 1
+O: 2 1 : 80 : 8 8  : 1
+O: 2 1 : 79 : 8 7  : 1
+O: 2 1 : 78 : 8 6  : 1
+O: 2 1 : 35 : 3 8  : 1
+O: 2 1 : 34 : 3 7  : 1
+O: 2 1 : 33 : 3 6  : 1
+O: 2 1 : 32 : 3 5  : 1
+O: 2 1 : 31 : 3 4  : 1
+O: 2 1 : 30 : 3 3  : 1
+O: 2 1 : 29 : 3 2  : 1
+O: 2 1 : 28 : 3 1  : 1
+O: 2 1 : 27 : 3 0  : 1
+O: 2 1 : 26 : 2 8  : 1
+O: 2 1 : 25 : 2 7  : 1
+O: 2 1 : 24 : 2 6  : 1
+O: 2 1 : 23 : 2 5  : 1
+O: 2 1 : 22 : 2 4  : 1
+O: 2 1 : 21 : 2 3  : 1
+O: 2 1 : 20 : 2 2  : 1
+O: 2 1 : 19 : 2 1  : 1
+O: 2 1 : 18 : 2 0  : 1
+O: 2 1 : 17 : 1 8  : 1
+O: 2 1 : 16 : 1 7  : 1
+O: 2 1 : 5 : 0 5  : 1
+O: 2 1 : 4 : 0 4  : 1
+O: 2 1 : 3 : 0 3  : 1
+O: 2 1 : 2 : 0 2  : 1
+O: 2 1 : 0 : 0 0  : 1
+O: 2 1 : 1 : 0 1  : 1
+O: 2 1 : 6 : 0 6  : 1
+O: 2 1 : 7 : 0 7  : 1
+O: 2 1 : 8 : 0 8  : 1
+O: 2 1 : 9 : 1 0  : 1
+O: 2 1 : 10 : 1 1  : 1
+O: 2 1 : 11 : 1 2  : 1
+O: 2 1 : 12 : 1 3  : 1
+O: 2 1 : 13 : 1 4  : 1
+O: 2 1 : 14 : 1 5  : 1
+O: 2 1 : 15 : 1 6  : 1
+O: 2 1 : 36 : 4 0  : 1
+O: 2 1 : 37 : 4 1  : 1
+O: 2 1 : 38 : 4 2  : 1
+O: 2 1 : 39 : 4 3  : 1
+O: 2 1 : 40 : 4 4  : 1
+O: 2 1 : 41 : 4 5  : 1
+O: 2 1 : 42 : 4 6  : 1
+O: 2 1 : 43 : 4 7  : 1
+O: 2 1 : 44 : 4 8  : 1
+O: 2 1 : 45 : 5 0  : 1
+O: 2 1 : 46 : 5 1  : 1
+O: 2 1 : 47 : 5 2  : 1
+O: 2 1 : 48 : 5 3  : 1
+O: 2 1 : 49 : 5 4  : 1
+O: 2 1 : 50 : 5 5  : 1
+O: 2 1 : 51 : 5 6  : 1
+O: 2 1 : 52 : 5 7  : 1
+O: 2 1 : 53 : 5 8  : 1
+O: 2 1 : 54 : 6 0  : 1
+O: 2 1 : 55 : 6 1  : 1
+O: 2 1 : 56 : 6 2  : 1
+O: 2 1 : 57 : 6 3  : 1
+O: 2 1 : 58 : 6 4  : 1
+O: 2 1 : 59 : 6 5  : 1
+O: 2 1 : 60 : 6 6  : 1
+O: 2 1 : 61 : 6 7  : 1
+O: 2 1 : 62 : 6 8  : 1
+O: 2 1 : 63 : 7 0  : 1
+O: 2 1 : 64 : 7 1  : 1
+O: 2 1 : 65 : 7 2  : 1
+O: 2 1 : 66 : 7 3  : 1
+O: 2 1 : 67 : 7 4  : 1
+O: 2 1 : 68 : 7 5  : 1
+O: 2 1 : 69 : 7 6  : 1
+O: 2 1 : 70 : 7 7  : 1
+O: 2 1 : 71 : 7 8  : 1
+O: 2 1 : 72 : 8 0  : 1
+O: 2 1 : 73 : 8 1  : 1
+O: 2 1 : 74 : 8 2  : 1
+O: 2 1 : 75 : 8 3  : 1
+O: 2 1 : 76 : 8 4  : 1
+O: 2 1 : 77 : 8 5  : 1
+O: 2 2 : 80 : 8 8  : 1
+O: 2 2 : 79 : 8 7  : 1
+O: 2 2 : 78 : 8 6  : 1
+O: 2 2 : 35 : 3 8  : 1
+O: 2 2 : 34 : 3 7  : 1
+O: 2 2 : 33 : 3 6  : 1
+O: 2 2 : 32 : 3 5  : 1
+O: 2 2 : 31 : 3 4  : 1
+O: 2 2 : 30 : 3 3  : 1
+O: 2 2 : 29 : 3 2  : 1
+O: 2 2 : 28 : 3 1  : 1
+O: 2 2 : 27 : 3 0  : 1
+O: 2 2 : 26 : 2 8  : 1
+O: 2 2 : 25 : 2 7  : 1
+O: 2 2 : 24 : 2 6  : 1
+O: 2 2 : 23 : 2 5  : 1
+O: 2 2 : 22 : 2 4  : 1
+O: 2 2 : 21 : 2 3  : 1
+O: 2 2 : 20 : 2 2  : 1
+O: 2 2 : 19 : 2 1  : 1
+O: 2 2 : 18 : 2 0  : 1
+O: 2 2 : 17 : 1 8  : 1
+O: 2 2 : 16 : 1 7  : 1
+O: 2 2 : 5 : 0 5  : 1
+O: 2 2 : 4 : 0 4  : 1
+O: 2 2 : 3 : 0 3  : 1
+O: 2 2 : 2 : 0 2  : 1
+O: 2 2 : 0 : 0 0  : 1
+O: 2 2 : 1 : 0 1  : 1
+O: 2 2 : 6 : 0 6  : 1
+O: 2 2 : 7 : 0 7  : 1
+O: 2 2 : 8 : 0 8  : 1
+O: 2 2 : 9 : 1 0  : 1
+O: 2 2 : 10 : 1 1  : 1
+O: 2 2 : 11 : 1 2  : 1
+O: 2 2 : 12 : 1 3  : 1
+O: 2 2 : 13 : 1 4  : 1
+O: 2 2 : 14 : 1 5  : 1
+O: 2 2 : 15 : 1 6  : 1
+O: 2 2 : 36 : 4 0  : 1
+O: 2 2 : 37 : 4 1  : 1
+O: 2 2 : 38 : 4 2  : 1
+O: 2 2 : 39 : 4 3  : 1
+O: 2 2 : 40 : 4 4  : 1
+O: 2 2 : 41 : 4 5  : 1
+O: 2 2 : 42 : 4 6  : 1
+O: 2 2 : 43 : 4 7  : 1
+O: 2 2 : 44 : 4 8  : 1
+O: 2 2 : 45 : 5 0  : 1
+O: 2 2 : 46 : 5 1  : 1
+O: 2 2 : 47 : 5 2  : 1
+O: 2 2 : 48 : 5 3  : 1
+O: 2 2 : 49 : 5 4  : 1
+O: 2 2 : 50 : 5 5  : 1
+O: 2 2 : 51 : 5 6  : 1
+O: 2 2 : 52 : 5 7  : 1
+O: 2 2 : 53 : 5 8  : 1
+O: 2 2 : 54 : 6 0  : 1
+O: 2 2 : 55 : 6 1  : 1
+O: 2 2 : 56 : 6 2  : 1
+O: 2 2 : 57 : 6 3  : 1
+O: 2 2 : 58 : 6 4  : 1
+O: 2 2 : 59 : 6 5  : 1
+O: 2 2 : 60 : 6 6  : 1
+O: 2 2 : 61 : 6 7  : 1
+O: 2 2 : 62 : 6 8  : 1
+O: 2 2 : 63 : 7 0  : 1
+O: 2 2 : 64 : 7 1  : 1
+O: 2 2 : 65 : 7 2  : 1
+O: 2 2 : 66 : 7 3  : 1
+O: 2 2 : 67 : 7 4  : 1
+O: 2 2 : 68 : 7 5  : 1
+O: 2 2 : 69 : 7 6  : 1
+O: 2 2 : 70 : 7 7  : 1
+O: 2 2 : 71 : 7 8  : 1
+O: 2 2 : 72 : 8 0  : 1
+O: 2 2 : 73 : 8 1  : 1
+O: 2 2 : 74 : 8 2  : 1
+O: 2 2 : 75 : 8 3  : 1
+O: 2 2 : 76 : 8 4  : 1
+O: 2 2 : 77 : 8 5  : 1
+O: 2 3 : 80 : 8 8  : 1
+O: 2 3 : 79 : 8 7  : 1
+O: 2 3 : 78 : 8 6  : 1
+O: 2 3 : 35 : 3 8  : 1
+O: 2 3 : 34 : 3 7  : 1
+O: 2 3 : 33 : 3 6  : 1
+O: 2 3 : 32 : 3 5  : 1
+O: 2 3 : 31 : 3 4  : 1
+O: 2 3 : 30 : 3 3  : 1
+O: 2 3 : 29 : 3 2  : 1
+O: 2 3 : 28 : 3 1  : 1
+O: 2 3 : 27 : 3 0  : 1
+O: 2 3 : 26 : 2 8  : 1
+O: 2 3 : 25 : 2 7  : 1
+O: 2 3 : 24 : 2 6  : 1
+O: 2 3 : 23 : 2 5  : 1
+O: 2 3 : 22 : 2 4  : 1
+O: 2 3 : 21 : 2 3  : 1
+O: 2 3 : 20 : 2 2  : 1
+O: 2 3 : 19 : 2 1  : 1
+O: 2 3 : 18 : 2 0  : 1
+O: 2 3 : 17 : 1 8  : 1
+O: 2 3 : 16 : 1 7  : 1
+O: 2 3 : 5 : 0 5  : 1
+O: 2 3 : 4 : 0 4  : 1
+O: 2 3 : 3 : 0 3  : 1
+O: 2 3 : 2 : 0 2  : 1
+O: 2 3 : 0 : 0 0  : 1
+O: 2 3 : 1 : 0 1  : 1
+O: 2 3 : 6 : 0 6  : 1
+O: 2 3 : 7 : 0 7  : 1
+O: 2 3 : 8 : 0 8  : 1
+O: 2 3 : 9 : 1 0  : 1
+O: 2 3 : 10 : 1 1  : 1
+O: 2 3 : 11 : 1 2  : 1
+O: 2 3 : 12 : 1 3  : 1
+O: 2 3 : 13 : 1 4  : 1
+O: 2 3 : 14 : 1 5  : 1
+O: 2 3 : 15 : 1 6  : 1
+O: 2 3 : 36 : 4 0  : 1
+O: 2 3 : 37 : 4 1  : 1
+O: 2 3 : 38 : 4 2  : 1
+O: 2 3 : 39 : 4 3  : 1
+O: 2 3 : 40 : 4 4  : 1
+O: 2 3 : 41 : 4 5  : 1
+O: 2 3 : 42 : 4 6  : 1
+O: 2 3 : 43 : 4 7  : 1
+O: 2 3 : 44 : 4 8  : 1
+O: 2 3 : 45 : 5 0  : 1
+O: 2 3 : 46 : 5 1  : 1
+O: 2 3 : 47 : 5 2  : 1
+O: 2 3 : 48 : 5 3  : 1
+O: 2 3 : 49 : 5 4  : 1
+O: 2 3 : 50 : 5 5  : 1
+O: 2 3 : 51 : 5 6  : 1
+O: 2 3 : 52 : 5 7  : 1
+O: 2 3 : 53 : 5 8  : 1
+O: 2 3 : 54 : 6 0  : 1
+O: 2 3 : 55 : 6 1  : 1
+O: 2 3 : 56 : 6 2  : 1
+O: 2 3 : 57 : 6 3  : 1
+O: 2 3 : 58 : 6 4  : 1
+O: 2 3 : 59 : 6 5  : 1
+O: 2 3 : 60 : 6 6  : 1
+O: 2 3 : 61 : 6 7  : 1
+O: 2 3 : 62 : 6 8  : 1
+O: 2 3 : 63 : 7 0  : 1
+O: 2 3 : 64 : 7 1  : 1
+O: 2 3 : 65 : 7 2  : 1
+O: 2 3 : 66 : 7 3  : 1
+O: 2 3 : 67 : 7 4  : 1
+O: 2 3 : 68 : 7 5  : 1
+O: 2 3 : 69 : 7 6  : 1
+O: 2 3 : 70 : 7 7  : 1
+O: 2 3 : 71 : 7 8  : 1
+O: 2 3 : 72 : 8 0  : 1
+O: 2 3 : 73 : 8 1  : 1
+O: 2 3 : 74 : 8 2  : 1
+O: 2 3 : 75 : 8 3  : 1
+O: 2 3 : 76 : 8 4  : 1
+O: 2 3 : 77 : 8 5  : 1
+O: 2 4 : 80 : 8 8  : 1
+O: 2 4 : 79 : 8 7  : 1
+O: 2 4 : 78 : 8 6  : 1
+O: 2 4 : 35 : 3 8  : 1
+O: 2 4 : 34 : 3 7  : 1
+O: 2 4 : 33 : 3 6  : 1
+O: 2 4 : 32 : 3 5  : 1
+O: 2 4 : 31 : 3 4  : 1
+O: 2 4 : 30 : 3 3  : 1
+O: 2 4 : 29 : 3 2  : 1
+O: 2 4 : 28 : 3 1  : 1
+O: 2 4 : 27 : 3 0  : 1
+O: 2 4 : 26 : 2 8  : 1
+O: 2 4 : 25 : 2 7  : 1
+O: 2 4 : 24 : 2 6  : 1
+O: 2 4 : 23 : 2 5  : 1
+O: 2 4 : 22 : 2 4  : 1
+O: 2 4 : 21 : 2 3  : 1
+O: 2 4 : 20 : 2 2  : 1
+O: 2 4 : 19 : 2 1  : 1
+O: 2 4 : 18 : 2 0  : 1
+O: 2 4 : 17 : 1 8  : 1
+O: 2 4 : 16 : 1 7  : 1
+O: 2 4 : 5 : 0 5  : 1
+O: 2 4 : 4 : 0 4  : 1
+O: 2 4 : 3 : 0 3  : 1
+O: 2 4 : 2 : 0 2  : 1
+O: 2 4 : 0 : 0 0  : 1
+O: 2 4 : 1 : 0 1  : 1
+O: 2 4 : 6 : 0 6  : 1
+O: 2 4 : 7 : 0 7  : 1
+O: 2 4 : 8 : 0 8  : 1
+O: 2 4 : 9 : 1 0  : 1
+O: 2 4 : 10 : 1 1  : 1
+O: 2 4 : 11 : 1 2  : 1
+O: 2 4 : 12 : 1 3  : 1
+O: 2 4 : 13 : 1 4  : 1
+O: 2 4 : 14 : 1 5  : 1
+O: 2 4 : 15 : 1 6  : 1
+O: 2 4 : 36 : 4 0  : 1
+O: 2 4 : 37 : 4 1  : 1
+O: 2 4 : 38 : 4 2  : 1
+O: 2 4 : 39 : 4 3  : 1
+O: 2 4 : 40 : 4 4  : 1
+O: 2 4 : 41 : 4 5  : 1
+O: 2 4 : 42 : 4 6  : 1
+O: 2 4 : 43 : 4 7  : 1
+O: 2 4 : 44 : 4 8  : 1
+O: 2 4 : 45 : 5 0  : 1
+O: 2 4 : 46 : 5 1  : 1
+O: 2 4 : 47 : 5 2  : 1
+O: 2 4 : 48 : 5 3  : 1
+O: 2 4 : 49 : 5 4  : 1
+O: 2 4 : 50 : 5 5  : 1
+O: 2 4 : 51 : 5 6  : 1
+O: 2 4 : 52 : 5 7  : 1
+O: 2 4 : 53 : 5 8  : 1
+O: 2 4 : 54 : 6 0  : 1
+O: 2 4 : 55 : 6 1  : 1
+O: 2 4 : 56 : 6 2  : 1
+O: 2 4 : 57 : 6 3  : 1
+O: 2 4 : 58 : 6 4  : 1
+O: 2 4 : 59 : 6 5  : 1
+O: 2 4 : 60 : 6 6  : 1
+O: 2 4 : 61 : 6 7  : 1
+O: 2 4 : 62 : 6 8  : 1
+O: 2 4 : 63 : 7 0  : 1
+O: 2 4 : 64 : 7 1  : 1
+O: 2 4 : 65 : 7 2  : 1
+O: 2 4 : 66 : 7 3  : 1
+O: 2 4 : 67 : 7 4  : 1
+O: 2 4 : 68 : 7 5  : 1
+O: 2 4 : 69 : 7 6  : 1
+O: 2 4 : 70 : 7 7  : 1
+O: 2 4 : 71 : 7 8  : 1
+O: 2 4 : 72 : 8 0  : 1
+O: 2 4 : 73 : 8 1  : 1
+O: 2 4 : 74 : 8 2  : 1
+O: 2 4 : 75 : 8 3  : 1
+O: 2 4 : 76 : 8 4  : 1
+O: 2 4 : 77 : 8 5  : 1
+O: 3 0 : 80 : 8 8  : 1
+O: 3 0 : 79 : 8 7  : 1
+O: 3 0 : 78 : 8 6  : 1
+O: 3 0 : 35 : 3 8  : 1
+O: 3 0 : 34 : 3 7  : 1
+O: 3 0 : 33 : 3 6  : 1
+O: 3 0 : 32 : 3 5  : 1
+O: 3 0 : 31 : 3 4  : 1
+O: 3 0 : 30 : 3 3  : 1
+O: 3 0 : 29 : 3 2  : 1
+O: 3 0 : 28 : 3 1  : 1
+O: 3 0 : 27 : 3 0  : 1
+O: 3 0 : 26 : 2 8  : 1
+O: 3 0 : 25 : 2 7  : 1
+O: 3 0 : 24 : 2 6  : 1
+O: 3 0 : 23 : 2 5  : 1
+O: 3 0 : 22 : 2 4  : 1
+O: 3 0 : 21 : 2 3  : 1
+O: 3 0 : 20 : 2 2  : 1
+O: 3 0 : 19 : 2 1  : 1
+O: 3 0 : 18 : 2 0  : 1
+O: 3 0 : 17 : 1 8  : 1
+O: 3 0 : 16 : 1 7  : 1
+O: 3 0 : 5 : 0 5  : 1
+O: 3 0 : 4 : 0 4  : 1
+O: 3 0 : 3 : 0 3  : 1
+O: 3 0 : 2 : 0 2  : 1
+O: 3 0 : 0 : 0 0  : 1
+O: 3 0 : 1 : 0 1  : 1
+O: 3 0 : 6 : 0 6  : 1
+O: 3 0 : 7 : 0 7  : 1
+O: 3 0 : 8 : 0 8  : 1
+O: 3 0 : 9 : 1 0  : 1
+O: 3 0 : 10 : 1 1  : 1
+O: 3 0 : 11 : 1 2  : 1
+O: 3 0 : 12 : 1 3  : 1
+O: 3 0 : 13 : 1 4  : 1
+O: 3 0 : 14 : 1 5  : 1
+O: 3 0 : 15 : 1 6  : 1
+O: 3 0 : 36 : 4 0  : 1
+O: 3 0 : 37 : 4 1  : 1
+O: 3 0 : 38 : 4 2  : 1
+O: 3 0 : 39 : 4 3  : 1
+O: 3 0 : 40 : 4 4  : 1
+O: 3 0 : 41 : 4 5  : 1
+O: 3 0 : 42 : 4 6  : 1
+O: 3 0 : 43 : 4 7  : 1
+O: 3 0 : 44 : 4 8  : 1
+O: 3 0 : 45 : 5 0  : 1
+O: 3 0 : 46 : 5 1  : 1
+O: 3 0 : 47 : 5 2  : 1
+O: 3 0 : 48 : 5 3  : 1
+O: 3 0 : 49 : 5 4  : 1
+O: 3 0 : 50 : 5 5  : 1
+O: 3 0 : 51 : 5 6  : 1
+O: 3 0 : 52 : 5 7  : 1
+O: 3 0 : 53 : 5 8  : 1
+O: 3 0 : 54 : 6 0  : 1
+O: 3 0 : 55 : 6 1  : 1
+O: 3 0 : 56 : 6 2  : 1
+O: 3 0 : 57 : 6 3  : 1
+O: 3 0 : 58 : 6 4  : 1
+O: 3 0 : 59 : 6 5  : 1
+O: 3 0 : 60 : 6 6  : 1
+O: 3 0 : 61 : 6 7  : 1
+O: 3 0 : 62 : 6 8  : 1
+O: 3 0 : 63 : 7 0  : 1
+O: 3 0 : 64 : 7 1  : 1
+O: 3 0 : 65 : 7 2  : 1
+O: 3 0 : 66 : 7 3  : 1
+O: 3 0 : 67 : 7 4  : 1
+O: 3 0 : 68 : 7 5  : 1
+O: 3 0 : 69 : 7 6  : 1
+O: 3 0 : 70 : 7 7  : 1
+O: 3 0 : 71 : 7 8  : 1
+O: 3 0 : 72 : 8 0  : 1
+O: 3 0 : 73 : 8 1  : 1
+O: 3 0 : 74 : 8 2  : 1
+O: 3 0 : 75 : 8 3  : 1
+O: 3 0 : 76 : 8 4  : 1
+O: 3 0 : 77 : 8 5  : 1
+R: 0 0 : 0 : * : * : 1
+R: 0 1 : 0 : * : * : 1
+R: 0 2 : 0 : * : * : 1
+R: 0 3 : 0 : * : * : 1
+R: 0 4 : 0 : * : * : 1
+R: 1 0 : 0 : * : * : 1
+R: 1 1 : 0 : * : * : 1
+R: 1 2 : 0 : * : * : 1
+R: 1 3 : 0 : * : * : 1
+R: 1 4 : 0 : * : * : 1
+R: 2 0 : 0 : * : * : 1
+R: 2 1 : 0 : * : * : 1
+R: 2 2 : 0 : * : * : 1
+R: 2 3 : 0 : * : * : 1
+R: 2 4 : 0 : * : * : 1
+R: 3 0 : 0 : * : * : 1
+R: 3 1 : 0 : * : * : 1
+R: 3 2 : 0 : * : * : 1
+R: 3 3 : 0 : * : * : 1
+R: 3 4 : 0 : * : * : 1
+R: 4 0 : 0 : * : * : 1
+R: 4 1 : 0 : * : * : 1
+R: 4 2 : 0 : * : * : 1
+R: 4 3 : 0 : * : * : 1
+R: 4 4 : 0 : * : * : 1
+R: 0 0 : 1 : * : * : 0
+R: 0 1 : 1 : * : * : 0
+R: 0 2 : 1 : * : * : 0
+R: 0 3 : 1 : * : * : 0
+R: 0 4 : 1 : * : * : 0
+R: 1 0 : 1 : * : * : 0
+R: 1 1 : 1 : * : * : 0
+R: 1 2 : 1 : * : * : 0
+R: 1 3 : 1 : * : * : 0
+R: 1 4 : 1 : * : * : 0
+R: 2 0 : 1 : * : * : 0
+R: 2 1 : 1 : * : * : 0
+R: 2 2 : 1 : * : * : 0
+R: 2 3 : 1 : * : * : 0
+R: 2 4 : 1 : * : * : 0
+R: 3 0 : 1 : * : * : 0
+R: 3 1 : 1 : * : * : 0
+R: 3 2 : 1 : * : * : 0
+R: 3 3 : 1 : * : * : 0
+R: 3 4 : 1 : * : * : 0
+R: 4 0 : 1 : * : * : 0
+R: 4 1 : 1 : * : * : 0
+R: 4 2 : 1 : * : * : 0
+R: 4 3 : 1 : * : * : 0
+R: 4 4 : 1 : * : * : 0
+R: 0 0 : 2 : * : * : 0
+R: 0 1 : 2 : * : * : 0
+R: 0 2 : 2 : * : * : 0
+R: 0 3 : 2 : * : * : 0
+R: 0 4 : 2 : * : * : 0
+R: 1 0 : 2 : * : * : 0
+R: 1 1 : 2 : * : * : 0
+R: 1 2 : 2 : * : * : 0
+R: 1 3 : 2 : * : * : 0
+R: 1 4 : 2 : * : * : 0
+R: 2 0 : 2 : * : * : 0
+R: 2 1 : 2 : * : * : 0
+R: 2 2 : 2 : * : * : 0
+R: 2 3 : 2 : * : * : 0
+R: 2 4 : 2 : * : * : 0
+R: 3 0 : 2 : * : * : 0
+R: 3 1 : 2 : * : * : 0
+R: 3 2 : 2 : * : * : 0
+R: 3 3 : 2 : * : * : 0
+R: 3 4 : 2 : * : * : 0
+R: 4 0 : 2 : * : * : 0
+R: 4 1 : 2 : * : * : 0
+R: 4 2 : 2 : * : * : 0
+R: 4 3 : 2 : * : * : 0
+R: 4 4 : 2 : * : * : 0
+R: 0 0 : 3 : * : * : 0
+R: 0 1 : 3 : * : * : 0
+R: 0 2 : 3 : * : * : 0
+R: 0 3 : 3 : * : * : 0
+R: 0 4 : 3 : * : * : 0
+R: 1 0 : 3 : * : * : 0
+R: 1 1 : 3 : * : * : 0
+R: 1 2 : 3 : * : * : 0
+R: 1 3 : 3 : * : * : 0
+R: 1 4 : 3 : * : * : 0
+R: 2 0 : 3 : * : * : 0
+R: 2 1 : 3 : * : * : 0
+R: 2 2 : 3 : * : * : 0
+R: 2 3 : 3 : * : * : 0
+R: 2 4 : 3 : * : * : 0
+R: 3 0 : 3 : * : * : 0
+R: 3 1 : 3 : * : * : 0
+R: 3 2 : 3 : * : * : 0
+R: 3 3 : 3 : * : * : 0
+R: 3 4 : 3 : * : * : 0
+R: 4 0 : 3 : * : * : 0
+R: 4 1 : 3 : * : * : 0
+R: 4 2 : 3 : * : * : 0
+R: 4 3 : 3 : * : * : 0
+R: 4 4 : 3 : * : * : 0
+R: 0 0 : 4 : * : * : 0
+R: 0 1 : 4 : * : * : 0
+R: 0 2 : 4 : * : * : 0
+R: 0 3 : 4 : * : * : 0
+R: 0 4 : 4 : * : * : 0
+R: 1 0 : 4 : * : * : 0
+R: 1 1 : 4 : * : * : 0
+R: 1 2 : 4 : * : * : 0
+R: 1 3 : 4 : * : * : 0
+R: 1 4 : 4 : * : * : 0
+R: 2 0 : 4 : * : * : 0
+R: 2 1 : 4 : * : * : 0
+R: 2 2 : 4 : * : * : 0
+R: 2 3 : 4 : * : * : 0
+R: 2 4 : 4 : * : * : 0
+R: 3 0 : 4 : * : * : 0
+R: 3 1 : 4 : * : * : 0
+R: 3 2 : 4 : * : * : 0
+R: 3 3 : 4 : * : * : 0
+R: 3 4 : 4 : * : * : 0
+R: 4 0 : 4 : * : * : 0
+R: 4 1 : 4 : * : * : 0
+R: 4 2 : 4 : * : * : 0
+R: 4 3 : 4 : * : * : 0
+R: 4 4 : 4 : * : * : 0
+R: 0 0 : 5 : * : * : 0
+R: 0 1 : 5 : * : * : 0
+R: 0 2 : 5 : * : * : 0
+R: 0 3 : 5 : * : * : 0
+R: 0 4 : 5 : * : * : 0
+R: 1 0 : 5 : * : * : 0
+R: 1 1 : 5 : * : * : 0
+R: 1 2 : 5 : * : * : 0
+R: 1 3 : 5 : * : * : 0
+R: 1 4 : 5 : * : * : 0
+R: 2 0 : 5 : * : * : 0
+R: 2 1 : 5 : * : * : 0
+R: 2 2 : 5 : * : * : 0
+R: 2 3 : 5 : * : * : 0
+R: 2 4 : 5 : * : * : 0
+R: 3 0 : 5 : * : * : 0
+R: 3 1 : 5 : * : * : 0
+R: 3 2 : 5 : * : * : 0
+R: 3 3 : 5 : * : * : 0
+R: 3 4 : 5 : * : * : 0
+R: 4 0 : 5 : * : * : 0
+R: 4 1 : 5 : * : * : 0
+R: 4 2 : 5 : * : * : 0
+R: 4 3 : 5 : * : * : 0
+R: 4 4 : 5 : * : * : 0
+R: 0 0 : 6 : * : * : 0
+R: 0 1 : 6 : * : * : 0
+R: 0 2 : 6 : * : * : 0
+R: 0 3 : 6 : * : * : 0
+R: 0 4 : 6 : * : * : 0
+R: 1 0 : 6 : * : * : 0
+R: 1 1 : 6 : * : * : 0
+R: 1 2 : 6 : * : * : 0
+R: 1 3 : 6 : * : * : 0
+R: 1 4 : 6 : * : * : 0
+R: 2 0 : 6 : * : * : 0
+R: 2 1 : 6 : * : * : 0
+R: 2 2 : 6 : * : * : 0
+R: 2 3 : 6 : * : * : 0
+R: 2 4 : 6 : * : * : 0
+R: 3 0 : 6 : * : * : 0
+R: 3 1 : 6 : * : * : 0
+R: 3 2 : 6 : * : * : 0
+R: 3 3 : 6 : * : * : 0
+R: 3 4 : 6 : * : * : 0
+R: 4 0 : 6 : * : * : 0
+R: 4 1 : 6 : * : * : 0
+R: 4 2 : 6 : * : * : 0
+R: 4 3 : 6 : * : * : 0
+R: 4 4 : 6 : * : * : 0
+R: 0 0 : 7 : * : * : 0
+R: 0 1 : 7 : * : * : 0
+R: 0 2 : 7 : * : * : 0
+R: 0 3 : 7 : * : * : 0
+R: 0 4 : 7 : * : * : 0
+R: 1 0 : 7 : * : * : 0
+R: 1 1 : 7 : * : * : 0
+R: 1 2 : 7 : * : * : 0
+R: 1 3 : 7 : * : * : 0
+R: 1 4 : 7 : * : * : 0
+R: 2 0 : 7 : * : * : 0
+R: 2 1 : 7 : * : * : 0
+R: 2 2 : 7 : * : * : 0
+R: 2 3 : 7 : * : * : 0
+R: 2 4 : 7 : * : * : 0
+R: 3 0 : 7 : * : * : 0
+R: 3 1 : 7 : * : * : 0
+R: 3 2 : 7 : * : * : 0
+R: 3 3 : 7 : * : * : 0
+R: 3 4 : 7 : * : * : 0
+R: 4 0 : 7 : * : * : 0
+R: 4 1 : 7 : * : * : 0
+R: 4 2 : 7 : * : * : 0
+R: 4 3 : 7 : * : * : 0
+R: 4 4 : 7 : * : * : 0
+R: 0 0 : 8 : * : * : 0
+R: 0 1 : 8 : * : * : 0
+R: 0 2 : 8 : * : * : 0
+R: 0 3 : 8 : * : * : 0
+R: 0 4 : 8 : * : * : 0
+R: 1 0 : 8 : * : * : 0
+R: 1 1 : 8 : * : * : 0
+R: 1 2 : 8 : * : * : 0
+R: 1 3 : 8 : * : * : 0
+R: 1 4 : 8 : * : * : 0
+R: 2 0 : 8 : * : * : 0
+R: 2 1 : 8 : * : * : 0
+R: 2 2 : 8 : * : * : 0
+R: 2 3 : 8 : * : * : 0
+R: 2 4 : 8 : * : * : 0
+R: 3 0 : 8 : * : * : 0
+R: 3 1 : 8 : * : * : 0
+R: 3 2 : 8 : * : * : 0
+R: 3 3 : 8 : * : * : 0
+R: 3 4 : 8 : * : * : 0
+R: 4 0 : 8 : * : * : 0
+R: 4 1 : 8 : * : * : 0
+R: 4 2 : 8 : * : * : 0
+R: 4 3 : 8 : * : * : 0
+R: 4 4 : 8 : * : * : 0
+R: 0 0 : 9 : * : * : 0
+R: 0 1 : 9 : * : * : 0
+R: 0 2 : 9 : * : * : 0
+R: 0 3 : 9 : * : * : 0
+R: 0 4 : 9 : * : * : 0
+R: 1 0 : 9 : * : * : 0
+R: 1 1 : 9 : * : * : 0
+R: 1 2 : 9 : * : * : 0
+R: 1 3 : 9 : * : * : 0
+R: 1 4 : 9 : * : * : 0
+R: 2 0 : 9 : * : * : 0
+R: 2 1 : 9 : * : * : 0
+R: 2 2 : 9 : * : * : 0
+R: 2 3 : 9 : * : * : 0
+R: 2 4 : 9 : * : * : 0
+R: 3 0 : 9 : * : * : 0
+R: 3 1 : 9 : * : * : 0
+R: 3 2 : 9 : * : * : 0
+R: 3 3 : 9 : * : * : 0
+R: 3 4 : 9 : * : * : 0
+R: 4 0 : 9 : * : * : 0
+R: 4 1 : 9 : * : * : 0
+R: 4 2 : 9 : * : * : 0
+R: 4 3 : 9 : * : * : 0
+R: 4 4 : 9 : * : * : 0
+R: 0 0 : 10 : * : * : 0
+R: 0 1 : 10 : * : * : 0
+R: 0 2 : 10 : * : * : 0
+R: 0 3 : 10 : * : * : 0
+R: 0 4 : 10 : * : * : 0
+R: 1 0 : 10 : * : * : 0
+R: 1 1 : 10 : * : * : 0
+R: 1 2 : 10 : * : * : 0
+R: 1 3 : 10 : * : * : 0
+R: 1 4 : 10 : * : * : 0
+R: 2 0 : 10 : * : * : 0
+R: 2 1 : 10 : * : * : 0
+R: 2 2 : 10 : * : * : 0
+R: 2 3 : 10 : * : * : 0
+R: 2 4 : 10 : * : * : 0
+R: 3 0 : 10 : * : * : 0
+R: 3 1 : 10 : * : * : 0
+R: 3 2 : 10 : * : * : 0
+R: 3 3 : 10 : * : * : 0
+R: 3 4 : 10 : * : * : 0
+R: 4 0 : 10 : * : * : 0
+R: 4 1 : 10 : * : * : 0
+R: 4 2 : 10 : * : * : 0
+R: 4 3 : 10 : * : * : 0
+R: 4 4 : 10 : * : * : 0
+R: 0 0 : 11 : * : * : 0
+R: 0 1 : 11 : * : * : 0
+R: 0 2 : 11 : * : * : 0
+R: 0 3 : 11 : * : * : 0
+R: 0 4 : 11 : * : * : 0
+R: 1 0 : 11 : * : * : 0
+R: 1 1 : 11 : * : * : 0
+R: 1 2 : 11 : * : * : 0
+R: 1 3 : 11 : * : * : 0
+R: 1 4 : 11 : * : * : 0
+R: 2 0 : 11 : * : * : 0
+R: 2 1 : 11 : * : * : 0
+R: 2 2 : 11 : * : * : 0
+R: 2 3 : 11 : * : * : 0
+R: 2 4 : 11 : * : * : 0
+R: 3 0 : 11 : * : * : 0
+R: 3 1 : 11 : * : * : 0
+R: 3 2 : 11 : * : * : 0
+R: 3 3 : 11 : * : * : 0
+R: 3 4 : 11 : * : * : 0
+R: 4 0 : 11 : * : * : 0
+R: 4 1 : 11 : * : * : 0
+R: 4 2 : 11 : * : * : 0
+R: 4 3 : 11 : * : * : 0
+R: 4 4 : 11 : * : * : 0
+R: 0 0 : 12 : * : * : 0
+R: 0 1 : 12 : * : * : 0
+R: 0 2 : 12 : * : * : 0
+R: 0 3 : 12 : * : * : 0
+R: 0 4 : 12 : * : * : 0
+R: 1 0 : 12 : * : * : 0
+R: 1 1 : 12 : * : * : 0
+R: 1 2 : 12 : * : * : 0
+R: 1 3 : 12 : * : * : 0
+R: 1 4 : 12 : * : * : 0
+R: 2 0 : 12 : * : * : 0
+R: 2 1 : 12 : * : * : 0
+R: 2 2 : 12 : * : * : 0
+R: 2 3 : 12 : * : * : 0
+R: 2 4 : 12 : * : * : 0
+R: 3 0 : 12 : * : * : 0
+R: 3 1 : 12 : * : * : 0
+R: 3 2 : 12 : * : * : 0
+R: 3 3 : 12 : * : * : 0
+R: 3 4 : 12 : * : * : 0
+R: 4 0 : 12 : * : * : 0
+R: 4 1 : 12 : * : * : 0
+R: 4 2 : 12 : * : * : 0
+R: 4 3 : 12 : * : * : 0
+R: 4 4 : 12 : * : * : 0
+R: 0 0 : 13 : * : * : 0
+R: 0 1 : 13 : * : * : 0
+R: 0 2 : 13 : * : * : 0
+R: 0 3 : 13 : * : * : 0
+R: 0 4 : 13 : * : * : 0
+R: 1 0 : 13 : * : * : 0
+R: 1 1 : 13 : * : * : 0
+R: 1 2 : 13 : * : * : 0
+R: 1 3 : 13 : * : * : 0
+R: 1 4 : 13 : * : * : 0
+R: 2 0 : 13 : * : * : 0
+R: 2 1 : 13 : * : * : 0
+R: 2 2 : 13 : * : * : 0
+R: 2 3 : 13 : * : * : 0
+R: 2 4 : 13 : * : * : 0
+R: 3 0 : 13 : * : * : 0
+R: 3 1 : 13 : * : * : 0
+R: 3 2 : 13 : * : * : 0
+R: 3 3 : 13 : * : * : 0
+R: 3 4 : 13 : * : * : 0
+R: 4 0 : 13 : * : * : 0
+R: 4 1 : 13 : * : * : 0
+R: 4 2 : 13 : * : * : 0
+R: 4 3 : 13 : * : * : 0
+R: 4 4 : 13 : * : * : 0
+R: 0 0 : 14 : * : * : 0
+R: 0 1 : 14 : * : * : 0
+R: 0 2 : 14 : * : * : 0
+R: 0 3 : 14 : * : * : 0
+R: 0 4 : 14 : * : * : 0
+R: 1 0 : 14 : * : * : 0
+R: 1 1 : 14 : * : * : 0
+R: 1 2 : 14 : * : * : 0
+R: 1 3 : 14 : * : * : 0
+R: 1 4 : 14 : * : * : 0
+R: 2 0 : 14 : * : * : 0
+R: 2 1 : 14 : * : * : 0
+R: 2 2 : 14 : * : * : 0
+R: 2 3 : 14 : * : * : 0
+R: 2 4 : 14 : * : * : 0
+R: 3 0 : 14 : * : * : 0
+R: 3 1 : 14 : * : * : 0
+R: 3 2 : 14 : * : * : 0
+R: 3 3 : 14 : * : * : 0
+R: 3 4 : 14 : * : * : 0
+R: 4 0 : 14 : * : * : 0
+R: 4 1 : 14 : * : * : 0
+R: 4 2 : 14 : * : * : 0
+R: 4 3 : 14 : * : * : 0
+R: 4 4 : 14 : * : * : 0
+R: 0 0 : 15 : * : * : 0
+R: 0 1 : 15 : * : * : 0
+R: 0 2 : 15 : * : * : 0
+R: 0 3 : 15 : * : * : 0
+R: 0 4 : 15 : * : * : 0
+R: 1 0 : 15 : * : * : 0
+R: 1 1 : 15 : * : * : 0
+R: 1 2 : 15 : * : * : 0
+R: 1 3 : 15 : * : * : 0
+R: 1 4 : 15 : * : * : 0
+R: 2 0 : 15 : * : * : 0
+R: 2 1 : 15 : * : * : 0
+R: 2 2 : 15 : * : * : 0
+R: 2 3 : 15 : * : * : 0
+R: 2 4 : 15 : * : * : 0
+R: 3 0 : 15 : * : * : 0
+R: 3 1 : 15 : * : * : 0
+R: 3 2 : 15 : * : * : 0
+R: 3 3 : 15 : * : * : 0
+R: 3 4 : 15 : * : * : 0
+R: 4 0 : 15 : * : * : 0
+R: 4 1 : 15 : * : * : 0
+R: 4 2 : 15 : * : * : 0
+R: 4 3 : 15 : * : * : 0
+R: 4 4 : 15 : * : * : 0
+R: 0 0 : 16 : * : * : 0
+R: 0 1 : 16 : * : * : 0
+R: 0 2 : 16 : * : * : 0
+R: 0 3 : 16 : * : * : 0
+R: 0 4 : 16 : * : * : 0
+R: 1 0 : 16 : * : * : 0
+R: 1 1 : 16 : * : * : 0
+R: 1 2 : 16 : * : * : 0
+R: 1 3 : 16 : * : * : 0
+R: 1 4 : 16 : * : * : 0
+R: 2 0 : 16 : * : * : 0
+R: 2 1 : 16 : * : * : 0
+R: 2 2 : 16 : * : * : 0
+R: 2 3 : 16 : * : * : 0
+R: 2 4 : 16 : * : * : 0
+R: 3 0 : 16 : * : * : 0
+R: 3 1 : 16 : * : * : 0
+R: 3 2 : 16 : * : * : 0
+R: 3 3 : 16 : * : * : 0
+R: 3 4 : 16 : * : * : 0
+R: 4 0 : 16 : * : * : 0
+R: 4 1 : 16 : * : * : 0
+R: 4 2 : 16 : * : * : 0
+R: 4 3 : 16 : * : * : 0
+R: 4 4 : 16 : * : * : 0
+R: 0 0 : 17 : * : * : 0
+R: 0 1 : 17 : * : * : 0
+R: 0 2 : 17 : * : * : 0
+R: 0 3 : 17 : * : * : 0
+R: 0 4 : 17 : * : * : 0
+R: 1 0 : 17 : * : * : 0
+R: 1 1 : 17 : * : * : 0
+R: 1 2 : 17 : * : * : 0
+R: 1 3 : 17 : * : * : 0
+R: 1 4 : 17 : * : * : 0
+R: 2 0 : 17 : * : * : 0
+R: 2 1 : 17 : * : * : 0
+R: 2 2 : 17 : * : * : 0
+R: 2 3 : 17 : * : * : 0
+R: 2 4 : 17 : * : * : 0
+R: 3 0 : 17 : * : * : 0
+R: 3 1 : 17 : * : * : 0
+R: 3 2 : 17 : * : * : 0
+R: 3 3 : 17 : * : * : 0
+R: 3 4 : 17 : * : * : 0
+R: 4 0 : 17 : * : * : 0
+R: 4 1 : 17 : * : * : 0
+R: 4 2 : 17 : * : * : 0
+R: 4 3 : 17 : * : * : 0
+R: 4 4 : 17 : * : * : 0
+R: 0 0 : 18 : * : * : 0
+R: 0 1 : 18 : * : * : 0
+R: 0 2 : 18 : * : * : 0
+R: 0 3 : 18 : * : * : 0
+R: 0 4 : 18 : * : * : 0
+R: 1 0 : 18 : * : * : 0
+R: 1 1 : 18 : * : * : 0
+R: 1 2 : 18 : * : * : 0
+R: 1 3 : 18 : * : * : 0
+R: 1 4 : 18 : * : * : 0
+R: 2 0 : 18 : * : * : 0
+R: 2 1 : 18 : * : * : 0
+R: 2 2 : 18 : * : * : 0
+R: 2 3 : 18 : * : * : 0
+R: 2 4 : 18 : * : * : 0
+R: 3 0 : 18 : * : * : 0
+R: 3 1 : 18 : * : * : 0
+R: 3 2 : 18 : * : * : 0
+R: 3 3 : 18 : * : * : 0
+R: 3 4 : 18 : * : * : 0
+R: 4 0 : 18 : * : * : 0
+R: 4 1 : 18 : * : * : 0
+R: 4 2 : 18 : * : * : 0
+R: 4 3 : 18 : * : * : 0
+R: 4 4 : 18 : * : * : 0
+R: 0 0 : 19 : * : * : 0
+R: 0 1 : 19 : * : * : 0
+R: 0 2 : 19 : * : * : 0
+R: 0 3 : 19 : * : * : 0
+R: 0 4 : 19 : * : * : 0
+R: 1 0 : 19 : * : * : 0
+R: 1 1 : 19 : * : * : 0
+R: 1 2 : 19 : * : * : 0
+R: 1 3 : 19 : * : * : 0
+R: 1 4 : 19 : * : * : 0
+R: 2 0 : 19 : * : * : 0
+R: 2 1 : 19 : * : * : 0
+R: 2 2 : 19 : * : * : 0
+R: 2 3 : 19 : * : * : 0
+R: 2 4 : 19 : * : * : 0
+R: 3 0 : 19 : * : * : 0
+R: 3 1 : 19 : * : * : 0
+R: 3 2 : 19 : * : * : 0
+R: 3 3 : 19 : * : * : 0
+R: 3 4 : 19 : * : * : 0
+R: 4 0 : 19 : * : * : 0
+R: 4 1 : 19 : * : * : 0
+R: 4 2 : 19 : * : * : 0
+R: 4 3 : 19 : * : * : 0
+R: 4 4 : 19 : * : * : 0
+R: 0 0 : 20 : * : * : 0
+R: 0 1 : 20 : * : * : 0
+R: 0 2 : 20 : * : * : 0
+R: 0 3 : 20 : * : * : 0
+R: 0 4 : 20 : * : * : 0
+R: 1 0 : 20 : * : * : 0
+R: 1 1 : 20 : * : * : 0
+R: 1 2 : 20 : * : * : 0
+R: 1 3 : 20 : * : * : 0
+R: 1 4 : 20 : * : * : 0
+R: 2 0 : 20 : * : * : 0
+R: 2 1 : 20 : * : * : 0
+R: 2 2 : 20 : * : * : 0
+R: 2 3 : 20 : * : * : 0
+R: 2 4 : 20 : * : * : 0
+R: 3 0 : 20 : * : * : 0
+R: 3 1 : 20 : * : * : 0
+R: 3 2 : 20 : * : * : 0
+R: 3 3 : 20 : * : * : 0
+R: 3 4 : 20 : * : * : 0
+R: 4 0 : 20 : * : * : 0
+R: 4 1 : 20 : * : * : 0
+R: 4 2 : 20 : * : * : 0
+R: 4 3 : 20 : * : * : 0
+R: 4 4 : 20 : * : * : 0
+R: 0 0 : 21 : * : * : 0
+R: 0 1 : 21 : * : * : 0
+R: 0 2 : 21 : * : * : 0
+R: 0 3 : 21 : * : * : 0
+R: 0 4 : 21 : * : * : 0
+R: 1 0 : 21 : * : * : 0
+R: 1 1 : 21 : * : * : 0
+R: 1 2 : 21 : * : * : 0
+R: 1 3 : 21 : * : * : 0
+R: 1 4 : 21 : * : * : 0
+R: 2 0 : 21 : * : * : 0
+R: 2 1 : 21 : * : * : 0
+R: 2 2 : 21 : * : * : 0
+R: 2 3 : 21 : * : * : 0
+R: 2 4 : 21 : * : * : 0
+R: 3 0 : 21 : * : * : 0
+R: 3 1 : 21 : * : * : 0
+R: 3 2 : 21 : * : * : 0
+R: 3 3 : 21 : * : * : 0
+R: 3 4 : 21 : * : * : 0
+R: 4 0 : 21 : * : * : 0
+R: 4 1 : 21 : * : * : 0
+R: 4 2 : 21 : * : * : 0
+R: 4 3 : 21 : * : * : 0
+R: 4 4 : 21 : * : * : 0
+R: 0 0 : 22 : * : * : 0
+R: 0 1 : 22 : * : * : 0
+R: 0 2 : 22 : * : * : 0
+R: 0 3 : 22 : * : * : 0
+R: 0 4 : 22 : * : * : 0
+R: 1 0 : 22 : * : * : 0
+R: 1 1 : 22 : * : * : 0
+R: 1 2 : 22 : * : * : 0
+R: 1 3 : 22 : * : * : 0
+R: 1 4 : 22 : * : * : 0
+R: 2 0 : 22 : * : * : 0
+R: 2 1 : 22 : * : * : 0
+R: 2 2 : 22 : * : * : 0
+R: 2 3 : 22 : * : * : 0
+R: 2 4 : 22 : * : * : 0
+R: 3 0 : 22 : * : * : 0
+R: 3 1 : 22 : * : * : 0
+R: 3 2 : 22 : * : * : 0
+R: 3 3 : 22 : * : * : 0
+R: 3 4 : 22 : * : * : 0
+R: 4 0 : 22 : * : * : 0
+R: 4 1 : 22 : * : * : 0
+R: 4 2 : 22 : * : * : 0
+R: 4 3 : 22 : * : * : 0
+R: 4 4 : 22 : * : * : 0
+R: 0 0 : 23 : * : * : 0
+R: 0 1 : 23 : * : * : 0
+R: 0 2 : 23 : * : * : 0
+R: 0 3 : 23 : * : * : 0
+R: 0 4 : 23 : * : * : 0
+R: 1 0 : 23 : * : * : 0
+R: 1 1 : 23 : * : * : 0
+R: 1 2 : 23 : * : * : 0
+R: 1 3 : 23 : * : * : 0
+R: 1 4 : 23 : * : * : 0
+R: 2 0 : 23 : * : * : 0
+R: 2 1 : 23 : * : * : 0
+R: 2 2 : 23 : * : * : 0
+R: 2 3 : 23 : * : * : 0
+R: 2 4 : 23 : * : * : 0
+R: 3 0 : 23 : * : * : 0
+R: 3 1 : 23 : * : * : 0
+R: 3 2 : 23 : * : * : 0
+R: 3 3 : 23 : * : * : 0
+R: 3 4 : 23 : * : * : 0
+R: 4 0 : 23 : * : * : 0
+R: 4 1 : 23 : * : * : 0
+R: 4 2 : 23 : * : * : 0
+R: 4 3 : 23 : * : * : 0
+R: 4 4 : 23 : * : * : 0
+R: 0 0 : 24 : * : * : 0
+R: 0 1 : 24 : * : * : 0
+R: 0 2 : 24 : * : * : 0
+R: 0 3 : 24 : * : * : 0
+R: 0 4 : 24 : * : * : 0
+R: 1 0 : 24 : * : * : 0
+R: 1 1 : 24 : * : * : 0
+R: 1 2 : 24 : * : * : 0
+R: 1 3 : 24 : * : * : 0
+R: 1 4 : 24 : * : * : 0
+R: 2 0 : 24 : * : * : 0
+R: 2 1 : 24 : * : * : 0
+R: 2 2 : 24 : * : * : 0
+R: 2 3 : 24 : * : * : 0
+R: 2 4 : 24 : * : * : 0
+R: 3 0 : 24 : * : * : 0
+R: 3 1 : 24 : * : * : 0
+R: 3 2 : 24 : * : * : 0
+R: 3 3 : 24 : * : * : 0
+R: 3 4 : 24 : * : * : 0
+R: 4 0 : 24 : * : * : 0
+R: 4 1 : 24 : * : * : 0
+R: 4 2 : 24 : * : * : 0
+R: 4 3 : 24 : * : * : 0
+R: 4 4 : 24 : * : * : 0
+R: 0 0 : 25 : * : * : 0
+R: 0 1 : 25 : * : * : 0
+R: 0 2 : 25 : * : * : 0
+R: 0 3 : 25 : * : * : 0
+R: 0 4 : 25 : * : * : 0
+R: 1 0 : 25 : * : * : 0
+R: 1 1 : 25 : * : * : 0
+R: 1 2 : 25 : * : * : 0
+R: 1 3 : 25 : * : * : 0
+R: 1 4 : 25 : * : * : 0
+R: 2 0 : 25 : * : * : 0
+R: 2 1 : 25 : * : * : 0
+R: 2 2 : 25 : * : * : 0
+R: 2 3 : 25 : * : * : 0
+R: 2 4 : 25 : * : * : 0
+R: 3 0 : 25 : * : * : 0
+R: 3 1 : 25 : * : * : 0
+R: 3 2 : 25 : * : * : 0
+R: 3 3 : 25 : * : * : 0
+R: 3 4 : 25 : * : * : 0
+R: 4 0 : 25 : * : * : 0
+R: 4 1 : 25 : * : * : 0
+R: 4 2 : 25 : * : * : 0
+R: 4 3 : 25 : * : * : 0
+R: 4 4 : 25 : * : * : 0
+R: 0 0 : 26 : * : * : 0
+R: 0 1 : 26 : * : * : 0
+R: 0 2 : 26 : * : * : 0
+R: 0 3 : 26 : * : * : 0
+R: 0 4 : 26 : * : * : 0
+R: 1 0 : 26 : * : * : 0
+R: 1 1 : 26 : * : * : 0
+R: 1 2 : 26 : * : * : 0
+R: 1 3 : 26 : * : * : 0
+R: 1 4 : 26 : * : * : 0
+R: 2 0 : 26 : * : * : 0
+R: 2 1 : 26 : * : * : 0
+R: 2 2 : 26 : * : * : 0
+R: 2 3 : 26 : * : * : 0
+R: 2 4 : 26 : * : * : 0
+R: 3 0 : 26 : * : * : 0
+R: 3 1 : 26 : * : * : 0
+R: 3 2 : 26 : * : * : 0
+R: 3 3 : 26 : * : * : 0
+R: 3 4 : 26 : * : * : 0
+R: 4 0 : 26 : * : * : 0
+R: 4 1 : 26 : * : * : 0
+R: 4 2 : 26 : * : * : 0
+R: 4 3 : 26 : * : * : 0
+R: 4 4 : 26 : * : * : 0
+R: 0 0 : 27 : * : * : 0
+R: 0 1 : 27 : * : * : 0
+R: 0 2 : 27 : * : * : 0
+R: 0 3 : 27 : * : * : 0
+R: 0 4 : 27 : * : * : 0
+R: 1 0 : 27 : * : * : 0
+R: 1 1 : 27 : * : * : 0
+R: 1 2 : 27 : * : * : 0
+R: 1 3 : 27 : * : * : 0
+R: 1 4 : 27 : * : * : 0
+R: 2 0 : 27 : * : * : 0
+R: 2 1 : 27 : * : * : 0
+R: 2 2 : 27 : * : * : 0
+R: 2 3 : 27 : * : * : 0
+R: 2 4 : 27 : * : * : 0
+R: 3 0 : 27 : * : * : 0
+R: 3 1 : 27 : * : * : 0
+R: 3 2 : 27 : * : * : 0
+R: 3 3 : 27 : * : * : 0
+R: 3 4 : 27 : * : * : 0
+R: 4 0 : 27 : * : * : 0
+R: 4 1 : 27 : * : * : 0
+R: 4 2 : 27 : * : * : 0
+R: 4 3 : 27 : * : * : 0
+R: 4 4 : 27 : * : * : 0
+R: 0 0 : 28 : * : * : 0
+R: 0 1 : 28 : * : * : 0
+R: 0 2 : 28 : * : * : 0
+R: 0 3 : 28 : * : * : 0
+R: 0 4 : 28 : * : * : 0
+R: 1 0 : 28 : * : * : 0
+R: 1 1 : 28 : * : * : 0
+R: 1 2 : 28 : * : * : 0
+R: 1 3 : 28 : * : * : 0
+R: 1 4 : 28 : * : * : 0
+R: 2 0 : 28 : * : * : 0
+R: 2 1 : 28 : * : * : 0
+R: 2 2 : 28 : * : * : 0
+R: 2 3 : 28 : * : * : 0
+R: 2 4 : 28 : * : * : 0
+R: 3 0 : 28 : * : * : 0
+R: 3 1 : 28 : * : * : 0
+R: 3 2 : 28 : * : * : 0
+R: 3 3 : 28 : * : * : 0
+R: 3 4 : 28 : * : * : 0
+R: 4 0 : 28 : * : * : 0
+R: 4 1 : 28 : * : * : 0
+R: 4 2 : 28 : * : * : 0
+R: 4 3 : 28 : * : * : 0
+R: 4 4 : 28 : * : * : 0
+R: 0 0 : 29 : * : * : 0
+R: 0 1 : 29 : * : * : 0
+R: 0 2 : 29 : * : * : 0
+R: 0 3 : 29 : * : * : 0
+R: 0 4 : 29 : * : * : 0
+R: 1 0 : 29 : * : * : 0
+R: 1 1 : 29 : * : * : 0
+R: 1 2 : 29 : * : * : 0
+R: 1 3 : 29 : * : * : 0
+R: 1 4 : 29 : * : * : 0
+R: 2 0 : 29 : * : * : 0
+R: 2 1 : 29 : * : * : 0
+R: 2 2 : 29 : * : * : 0
+R: 2 3 : 29 : * : * : 0
+R: 2 4 : 29 : * : * : 0
+R: 3 0 : 29 : * : * : 0
+R: 3 1 : 29 : * : * : 0
+R: 3 2 : 29 : * : * : 0
+R: 3 3 : 29 : * : * : 0
+R: 3 4 : 29 : * : * : 0
+R: 4 0 : 29 : * : * : 0
+R: 4 1 : 29 : * : * : 0
+R: 4 2 : 29 : * : * : 0
+R: 4 3 : 29 : * : * : 0
+R: 4 4 : 29 : * : * : 0
+R: 0 0 : 30 : * : * : 0
+R: 0 1 : 30 : * : * : 0
+R: 0 2 : 30 : * : * : 0
+R: 0 3 : 30 : * : * : 0
+R: 0 4 : 30 : * : * : 0
+R: 1 0 : 30 : * : * : 0
+R: 1 1 : 30 : * : * : 0
+R: 1 2 : 30 : * : * : 0
+R: 1 3 : 30 : * : * : 0
+R: 1 4 : 30 : * : * : 0
+R: 2 0 : 30 : * : * : 0
+R: 2 1 : 30 : * : * : 0
+R: 2 2 : 30 : * : * : 0
+R: 2 3 : 30 : * : * : 0
+R: 2 4 : 30 : * : * : 0
+R: 3 0 : 30 : * : * : 0
+R: 3 1 : 30 : * : * : 0
+R: 3 2 : 30 : * : * : 0
+R: 3 3 : 30 : * : * : 0
+R: 3 4 : 30 : * : * : 0
+R: 4 0 : 30 : * : * : 0
+R: 4 1 : 30 : * : * : 0
+R: 4 2 : 30 : * : * : 0
+R: 4 3 : 30 : * : * : 0
+R: 4 4 : 30 : * : * : 0
+R: 0 0 : 31 : * : * : 0
+R: 0 1 : 31 : * : * : 0
+R: 0 2 : 31 : * : * : 0
+R: 0 3 : 31 : * : * : 0
+R: 0 4 : 31 : * : * : 0
+R: 1 0 : 31 : * : * : 0
+R: 1 1 : 31 : * : * : 0
+R: 1 2 : 31 : * : * : 0
+R: 1 3 : 31 : * : * : 0
+R: 1 4 : 31 : * : * : 0
+R: 2 0 : 31 : * : * : 0
+R: 2 1 : 31 : * : * : 0
+R: 2 2 : 31 : * : * : 0
+R: 2 3 : 31 : * : * : 0
+R: 2 4 : 31 : * : * : 0
+R: 3 0 : 31 : * : * : 0
+R: 3 1 : 31 : * : * : 0
+R: 3 2 : 31 : * : * : 0
+R: 3 3 : 31 : * : * : 0
+R: 3 4 : 31 : * : * : 0
+R: 4 0 : 31 : * : * : 0
+R: 4 1 : 31 : * : * : 0
+R: 4 2 : 31 : * : * : 0
+R: 4 3 : 31 : * : * : 0
+R: 4 4 : 31 : * : * : 0
+R: 0 0 : 32 : * : * : 0
+R: 0 1 : 32 : * : * : 0
+R: 0 2 : 32 : * : * : 0
+R: 0 3 : 32 : * : * : 0
+R: 0 4 : 32 : * : * : 0
+R: 1 0 : 32 : * : * : 0
+R: 1 1 : 32 : * : * : 0
+R: 1 2 : 32 : * : * : 0
+R: 1 3 : 32 : * : * : 0
+R: 1 4 : 32 : * : * : 0
+R: 2 0 : 32 : * : * : 0
+R: 2 1 : 32 : * : * : 0
+R: 2 2 : 32 : * : * : 0
+R: 2 3 : 32 : * : * : 0
+R: 2 4 : 32 : * : * : 0
+R: 3 0 : 32 : * : * : 0
+R: 3 1 : 32 : * : * : 0
+R: 3 2 : 32 : * : * : 0
+R: 3 3 : 32 : * : * : 0
+R: 3 4 : 32 : * : * : 0
+R: 4 0 : 32 : * : * : 0
+R: 4 1 : 32 : * : * : 0
+R: 4 2 : 32 : * : * : 0
+R: 4 3 : 32 : * : * : 0
+R: 4 4 : 32 : * : * : 0
+R: 0 0 : 33 : * : * : 0
+R: 0 1 : 33 : * : * : 0
+R: 0 2 : 33 : * : * : 0
+R: 0 3 : 33 : * : * : 0
+R: 0 4 : 33 : * : * : 0
+R: 1 0 : 33 : * : * : 0
+R: 1 1 : 33 : * : * : 0
+R: 1 2 : 33 : * : * : 0
+R: 1 3 : 33 : * : * : 0
+R: 1 4 : 33 : * : * : 0
+R: 2 0 : 33 : * : * : 0
+R: 2 1 : 33 : * : * : 0
+R: 2 2 : 33 : * : * : 0
+R: 2 3 : 33 : * : * : 0
+R: 2 4 : 33 : * : * : 0
+R: 3 0 : 33 : * : * : 0
+R: 3 1 : 33 : * : * : 0
+R: 3 2 : 33 : * : * : 0
+R: 3 3 : 33 : * : * : 0
+R: 3 4 : 33 : * : * : 0
+R: 4 0 : 33 : * : * : 0
+R: 4 1 : 33 : * : * : 0
+R: 4 2 : 33 : * : * : 0
+R: 4 3 : 33 : * : * : 0
+R: 4 4 : 33 : * : * : 0
+R: 0 0 : 34 : * : * : 0
+R: 0 1 : 34 : * : * : 0
+R: 0 2 : 34 : * : * : 0
+R: 0 3 : 34 : * : * : 0
+R: 0 4 : 34 : * : * : 0
+R: 1 0 : 34 : * : * : 0
+R: 1 1 : 34 : * : * : 0
+R: 1 2 : 34 : * : * : 0
+R: 1 3 : 34 : * : * : 0
+R: 1 4 : 34 : * : * : 0
+R: 2 0 : 34 : * : * : 0
+R: 2 1 : 34 : * : * : 0
+R: 2 2 : 34 : * : * : 0
+R: 2 3 : 34 : * : * : 0
+R: 2 4 : 34 : * : * : 0
+R: 3 0 : 34 : * : * : 0
+R: 3 1 : 34 : * : * : 0
+R: 3 2 : 34 : * : * : 0
+R: 3 3 : 34 : * : * : 0
+R: 3 4 : 34 : * : * : 0
+R: 4 0 : 34 : * : * : 0
+R: 4 1 : 34 : * : * : 0
+R: 4 2 : 34 : * : * : 0
+R: 4 3 : 34 : * : * : 0
+R: 4 4 : 34 : * : * : 0
+R: 0 0 : 35 : * : * : 0
+R: 0 1 : 35 : * : * : 0
+R: 0 2 : 35 : * : * : 0
+R: 0 3 : 35 : * : * : 0
+R: 0 4 : 35 : * : * : 0
+R: 1 0 : 35 : * : * : 0
+R: 1 1 : 35 : * : * : 0
+R: 1 2 : 35 : * : * : 0
+R: 1 3 : 35 : * : * : 0
+R: 1 4 : 35 : * : * : 0
+R: 2 0 : 35 : * : * : 0
+R: 2 1 : 35 : * : * : 0
+R: 2 2 : 35 : * : * : 0
+R: 2 3 : 35 : * : * : 0
+R: 2 4 : 35 : * : * : 0
+R: 3 0 : 35 : * : * : 0
+R: 3 1 : 35 : * : * : 0
+R: 3 2 : 35 : * : * : 0
+R: 3 3 : 35 : * : * : 0
+R: 3 4 : 35 : * : * : 0
+R: 4 0 : 35 : * : * : 0
+R: 4 1 : 35 : * : * : 0
+R: 4 2 : 35 : * : * : 0
+R: 4 3 : 35 : * : * : 0
+R: 4 4 : 35 : * : * : 0
+R: 0 0 : 36 : * : * : 0
+R: 0 1 : 36 : * : * : 0
+R: 0 2 : 36 : * : * : 0
+R: 0 3 : 36 : * : * : 0
+R: 0 4 : 36 : * : * : 0
+R: 1 0 : 36 : * : * : 0
+R: 1 1 : 36 : * : * : 0
+R: 1 2 : 36 : * : * : 0
+R: 1 3 : 36 : * : * : 0
+R: 1 4 : 36 : * : * : 0
+R: 2 0 : 36 : * : * : 0
+R: 2 1 : 36 : * : * : 0
+R: 2 2 : 36 : * : * : 0
+R: 2 3 : 36 : * : * : 0
+R: 2 4 : 36 : * : * : 0
+R: 3 0 : 36 : * : * : 0
+R: 3 1 : 36 : * : * : 0
+R: 3 2 : 36 : * : * : 0
+R: 3 3 : 36 : * : * : 0
+R: 3 4 : 36 : * : * : 0
+R: 4 0 : 36 : * : * : 0
+R: 4 1 : 36 : * : * : 0
+R: 4 2 : 36 : * : * : 0
+R: 4 3 : 36 : * : * : 0
+R: 4 4 : 36 : * : * : 0
+R: 0 0 : 37 : * : * : 0
+R: 0 1 : 37 : * : * : 0
+R: 0 2 : 37 : * : * : 0
+R: 0 3 : 37 : * : * : 0
+R: 0 4 : 37 : * : * : 0
+R: 1 0 : 37 : * : * : 0
+R: 1 1 : 37 : * : * : 0
+R: 1 2 : 37 : * : * : 0
+R: 1 3 : 37 : * : * : 0
+R: 1 4 : 37 : * : * : 0
+R: 2 0 : 37 : * : * : 0
+R: 2 1 : 37 : * : * : 0
+R: 2 2 : 37 : * : * : 0
+R: 2 3 : 37 : * : * : 0
+R: 2 4 : 37 : * : * : 0
+R: 3 0 : 37 : * : * : 0
+R: 3 1 : 37 : * : * : 0
+R: 3 2 : 37 : * : * : 0
+R: 3 3 : 37 : * : * : 0
+R: 3 4 : 37 : * : * : 0
+R: 4 0 : 37 : * : * : 0
+R: 4 1 : 37 : * : * : 0
+R: 4 2 : 37 : * : * : 0
+R: 4 3 : 37 : * : * : 0
+R: 4 4 : 37 : * : * : 0
+R: 0 0 : 38 : * : * : 0
+R: 0 1 : 38 : * : * : 0
+R: 0 2 : 38 : * : * : 0
+R: 0 3 : 38 : * : * : 0
+R: 0 4 : 38 : * : * : 0
+R: 1 0 : 38 : * : * : 0
+R: 1 1 : 38 : * : * : 0
+R: 1 2 : 38 : * : * : 0
+R: 1 3 : 38 : * : * : 0
+R: 1 4 : 38 : * : * : 0
+R: 2 0 : 38 : * : * : 0
+R: 2 1 : 38 : * : * : 0
+R: 2 2 : 38 : * : * : 0
+R: 2 3 : 38 : * : * : 0
+R: 2 4 : 38 : * : * : 0
+R: 3 0 : 38 : * : * : 0
+R: 3 1 : 38 : * : * : 0
+R: 3 2 : 38 : * : * : 0
+R: 3 3 : 38 : * : * : 0
+R: 3 4 : 38 : * : * : 0
+R: 4 0 : 38 : * : * : 0
+R: 4 1 : 38 : * : * : 0
+R: 4 2 : 38 : * : * : 0
+R: 4 3 : 38 : * : * : 0
+R: 4 4 : 38 : * : * : 0
+R: 0 0 : 39 : * : * : 0
+R: 0 1 : 39 : * : * : 0
+R: 0 2 : 39 : * : * : 0
+R: 0 3 : 39 : * : * : 0
+R: 0 4 : 39 : * : * : 0
+R: 1 0 : 39 : * : * : 0
+R: 1 1 : 39 : * : * : 0
+R: 1 2 : 39 : * : * : 0
+R: 1 3 : 39 : * : * : 0
+R: 1 4 : 39 : * : * : 0
+R: 2 0 : 39 : * : * : 0
+R: 2 1 : 39 : * : * : 0
+R: 2 2 : 39 : * : * : 0
+R: 2 3 : 39 : * : * : 0
+R: 2 4 : 39 : * : * : 0
+R: 3 0 : 39 : * : * : 0
+R: 3 1 : 39 : * : * : 0
+R: 3 2 : 39 : * : * : 0
+R: 3 3 : 39 : * : * : 0
+R: 3 4 : 39 : * : * : 0
+R: 4 0 : 39 : * : * : 0
+R: 4 1 : 39 : * : * : 0
+R: 4 2 : 39 : * : * : 0
+R: 4 3 : 39 : * : * : 0
+R: 4 4 : 39 : * : * : 0
+R: 0 0 : 40 : * : * : 0
+R: 0 1 : 40 : * : * : 0
+R: 0 2 : 40 : * : * : 0
+R: 0 3 : 40 : * : * : 0
+R: 0 4 : 40 : * : * : 0
+R: 1 0 : 40 : * : * : 0
+R: 1 1 : 40 : * : * : 0
+R: 1 2 : 40 : * : * : 0
+R: 1 3 : 40 : * : * : 0
+R: 1 4 : 40 : * : * : 0
+R: 2 0 : 40 : * : * : 0
+R: 2 1 : 40 : * : * : 0
+R: 2 2 : 40 : * : * : 0
+R: 2 3 : 40 : * : * : 0
+R: 2 4 : 40 : * : * : 0
+R: 3 0 : 40 : * : * : 0
+R: 3 1 : 40 : * : * : 0
+R: 3 2 : 40 : * : * : 0
+R: 3 3 : 40 : * : * : 0
+R: 3 4 : 40 : * : * : 0
+R: 4 0 : 40 : * : * : 0
+R: 4 1 : 40 : * : * : 0
+R: 4 2 : 40 : * : * : 0
+R: 4 3 : 40 : * : * : 0
+R: 4 4 : 40 : * : * : 0
+R: 0 0 : 41 : * : * : 0
+R: 0 1 : 41 : * : * : 0
+R: 0 2 : 41 : * : * : 0
+R: 0 3 : 41 : * : * : 0
+R: 0 4 : 41 : * : * : 0
+R: 1 0 : 41 : * : * : 0
+R: 1 1 : 41 : * : * : 0
+R: 1 2 : 41 : * : * : 0
+R: 1 3 : 41 : * : * : 0
+R: 1 4 : 41 : * : * : 0
+R: 2 0 : 41 : * : * : 0
+R: 2 1 : 41 : * : * : 0
+R: 2 2 : 41 : * : * : 0
+R: 2 3 : 41 : * : * : 0
+R: 2 4 : 41 : * : * : 0
+R: 3 0 : 41 : * : * : 0
+R: 3 1 : 41 : * : * : 0
+R: 3 2 : 41 : * : * : 0
+R: 3 3 : 41 : * : * : 0
+R: 3 4 : 41 : * : * : 0
+R: 4 0 : 41 : * : * : 0
+R: 4 1 : 41 : * : * : 0
+R: 4 2 : 41 : * : * : 0
+R: 4 3 : 41 : * : * : 0
+R: 4 4 : 41 : * : * : 0
+R: 0 0 : 42 : * : * : 0
+R: 0 1 : 42 : * : * : 0
+R: 0 2 : 42 : * : * : 0
+R: 0 3 : 42 : * : * : 0
+R: 0 4 : 42 : * : * : 0
+R: 1 0 : 42 : * : * : 0
+R: 1 1 : 42 : * : * : 0
+R: 1 2 : 42 : * : * : 0
+R: 1 3 : 42 : * : * : 0
+R: 1 4 : 42 : * : * : 0
+R: 2 0 : 42 : * : * : 0
+R: 2 1 : 42 : * : * : 0
+R: 2 2 : 42 : * : * : 0
+R: 2 3 : 42 : * : * : 0
+R: 2 4 : 42 : * : * : 0
+R: 3 0 : 42 : * : * : 0
+R: 3 1 : 42 : * : * : 0
+R: 3 2 : 42 : * : * : 0
+R: 3 3 : 42 : * : * : 0
+R: 3 4 : 42 : * : * : 0
+R: 4 0 : 42 : * : * : 0
+R: 4 1 : 42 : * : * : 0
+R: 4 2 : 42 : * : * : 0
+R: 4 3 : 42 : * : * : 0
+R: 4 4 : 42 : * : * : 0
+R: 0 0 : 43 : * : * : 0
+R: 0 1 : 43 : * : * : 0
+R: 0 2 : 43 : * : * : 0
+R: 0 3 : 43 : * : * : 0
+R: 0 4 : 43 : * : * : 0
+R: 1 0 : 43 : * : * : 0
+R: 1 1 : 43 : * : * : 0
+R: 1 2 : 43 : * : * : 0
+R: 1 3 : 43 : * : * : 0
+R: 1 4 : 43 : * : * : 0
+R: 2 0 : 43 : * : * : 0
+R: 2 1 : 43 : * : * : 0
+R: 2 2 : 43 : * : * : 0
+R: 2 3 : 43 : * : * : 0
+R: 2 4 : 43 : * : * : 0
+R: 3 0 : 43 : * : * : 0
+R: 3 1 : 43 : * : * : 0
+R: 3 2 : 43 : * : * : 0
+R: 3 3 : 43 : * : * : 0
+R: 3 4 : 43 : * : * : 0
+R: 4 0 : 43 : * : * : 0
+R: 4 1 : 43 : * : * : 0
+R: 4 2 : 43 : * : * : 0
+R: 4 3 : 43 : * : * : 0
+R: 4 4 : 43 : * : * : 0
+R: 0 0 : 44 : * : * : 0
+R: 0 1 : 44 : * : * : 0
+R: 0 2 : 44 : * : * : 0
+R: 0 3 : 44 : * : * : 0
+R: 0 4 : 44 : * : * : 0
+R: 1 0 : 44 : * : * : 0
+R: 1 1 : 44 : * : * : 0
+R: 1 2 : 44 : * : * : 0
+R: 1 3 : 44 : * : * : 0
+R: 1 4 : 44 : * : * : 0
+R: 2 0 : 44 : * : * : 0
+R: 2 1 : 44 : * : * : 0
+R: 2 2 : 44 : * : * : 0
+R: 2 3 : 44 : * : * : 0
+R: 2 4 : 44 : * : * : 0
+R: 3 0 : 44 : * : * : 0
+R: 3 1 : 44 : * : * : 0
+R: 3 2 : 44 : * : * : 0
+R: 3 3 : 44 : * : * : 0
+R: 3 4 : 44 : * : * : 0
+R: 4 0 : 44 : * : * : 0
+R: 4 1 : 44 : * : * : 0
+R: 4 2 : 44 : * : * : 0
+R: 4 3 : 44 : * : * : 0
+R: 4 4 : 44 : * : * : 0
+R: 0 0 : 45 : * : * : 0
+R: 0 1 : 45 : * : * : 0
+R: 0 2 : 45 : * : * : 0
+R: 0 3 : 45 : * : * : 0
+R: 0 4 : 45 : * : * : 0
+R: 1 0 : 45 : * : * : 0
+R: 1 1 : 45 : * : * : 0
+R: 1 2 : 45 : * : * : 0
+R: 1 3 : 45 : * : * : 0
+R: 1 4 : 45 : * : * : 0
+R: 2 0 : 45 : * : * : 0
+R: 2 1 : 45 : * : * : 0
+R: 2 2 : 45 : * : * : 0
+R: 2 3 : 45 : * : * : 0
+R: 2 4 : 45 : * : * : 0
+R: 3 0 : 45 : * : * : 0
+R: 3 1 : 45 : * : * : 0
+R: 3 2 : 45 : * : * : 0
+R: 3 3 : 45 : * : * : 0
+R: 3 4 : 45 : * : * : 0
+R: 4 0 : 45 : * : * : 0
+R: 4 1 : 45 : * : * : 0
+R: 4 2 : 45 : * : * : 0
+R: 4 3 : 45 : * : * : 0
+R: 4 4 : 45 : * : * : 0
+R: 0 0 : 46 : * : * : 0
+R: 0 1 : 46 : * : * : 0
+R: 0 2 : 46 : * : * : 0
+R: 0 3 : 46 : * : * : 0
+R: 0 4 : 46 : * : * : 0
+R: 1 0 : 46 : * : * : 0
+R: 1 1 : 46 : * : * : 0
+R: 1 2 : 46 : * : * : 0
+R: 1 3 : 46 : * : * : 0
+R: 1 4 : 46 : * : * : 0
+R: 2 0 : 46 : * : * : 0
+R: 2 1 : 46 : * : * : 0
+R: 2 2 : 46 : * : * : 0
+R: 2 3 : 46 : * : * : 0
+R: 2 4 : 46 : * : * : 0
+R: 3 0 : 46 : * : * : 0
+R: 3 1 : 46 : * : * : 0
+R: 3 2 : 46 : * : * : 0
+R: 3 3 : 46 : * : * : 0
+R: 3 4 : 46 : * : * : 0
+R: 4 0 : 46 : * : * : 0
+R: 4 1 : 46 : * : * : 0
+R: 4 2 : 46 : * : * : 0
+R: 4 3 : 46 : * : * : 0
+R: 4 4 : 46 : * : * : 0
+R: 0 0 : 47 : * : * : 0
+R: 0 1 : 47 : * : * : 0
+R: 0 2 : 47 : * : * : 0
+R: 0 3 : 47 : * : * : 0
+R: 0 4 : 47 : * : * : 0
+R: 1 0 : 47 : * : * : 0
+R: 1 1 : 47 : * : * : 0
+R: 1 2 : 47 : * : * : 0
+R: 1 3 : 47 : * : * : 0
+R: 1 4 : 47 : * : * : 0
+R: 2 0 : 47 : * : * : 0
+R: 2 1 : 47 : * : * : 0
+R: 2 2 : 47 : * : * : 0
+R: 2 3 : 47 : * : * : 0
+R: 2 4 : 47 : * : * : 0
+R: 3 0 : 47 : * : * : 0
+R: 3 1 : 47 : * : * : 0
+R: 3 2 : 47 : * : * : 0
+R: 3 3 : 47 : * : * : 0
+R: 3 4 : 47 : * : * : 0
+R: 4 0 : 47 : * : * : 0
+R: 4 1 : 47 : * : * : 0
+R: 4 2 : 47 : * : * : 0
+R: 4 3 : 47 : * : * : 0
+R: 4 4 : 47 : * : * : 0
+R: 0 0 : 48 : * : * : 0
+R: 0 1 : 48 : * : * : 0
+R: 0 2 : 48 : * : * : 0
+R: 0 3 : 48 : * : * : 0
+R: 0 4 : 48 : * : * : 0
+R: 1 0 : 48 : * : * : 0
+R: 1 1 : 48 : * : * : 0
+R: 1 2 : 48 : * : * : 0
+R: 1 3 : 48 : * : * : 0
+R: 1 4 : 48 : * : * : 0
+R: 2 0 : 48 : * : * : 0
+R: 2 1 : 48 : * : * : 0
+R: 2 2 : 48 : * : * : 0
+R: 2 3 : 48 : * : * : 0
+R: 2 4 : 48 : * : * : 0
+R: 3 0 : 48 : * : * : 0
+R: 3 1 : 48 : * : * : 0
+R: 3 2 : 48 : * : * : 0
+R: 3 3 : 48 : * : * : 0
+R: 3 4 : 48 : * : * : 0
+R: 4 0 : 48 : * : * : 0
+R: 4 1 : 48 : * : * : 0
+R: 4 2 : 48 : * : * : 0
+R: 4 3 : 48 : * : * : 0
+R: 4 4 : 48 : * : * : 0
+R: 0 0 : 49 : * : * : 0
+R: 0 1 : 49 : * : * : 0
+R: 0 2 : 49 : * : * : 0
+R: 0 3 : 49 : * : * : 0
+R: 0 4 : 49 : * : * : 0
+R: 1 0 : 49 : * : * : 0
+R: 1 1 : 49 : * : * : 0
+R: 1 2 : 49 : * : * : 0
+R: 1 3 : 49 : * : * : 0
+R: 1 4 : 49 : * : * : 0
+R: 2 0 : 49 : * : * : 0
+R: 2 1 : 49 : * : * : 0
+R: 2 2 : 49 : * : * : 0
+R: 2 3 : 49 : * : * : 0
+R: 2 4 : 49 : * : * : 0
+R: 3 0 : 49 : * : * : 0
+R: 3 1 : 49 : * : * : 0
+R: 3 2 : 49 : * : * : 0
+R: 3 3 : 49 : * : * : 0
+R: 3 4 : 49 : * : * : 0
+R: 4 0 : 49 : * : * : 0
+R: 4 1 : 49 : * : * : 0
+R: 4 2 : 49 : * : * : 0
+R: 4 3 : 49 : * : * : 0
+R: 4 4 : 49 : * : * : 0
+R: 0 0 : 50 : * : * : 0
+R: 0 1 : 50 : * : * : 0
+R: 0 2 : 50 : * : * : 0
+R: 0 3 : 50 : * : * : 0
+R: 0 4 : 50 : * : * : 0
+R: 1 0 : 50 : * : * : 0
+R: 1 1 : 50 : * : * : 0
+R: 1 2 : 50 : * : * : 0
+R: 1 3 : 50 : * : * : 0
+R: 1 4 : 50 : * : * : 0
+R: 2 0 : 50 : * : * : 0
+R: 2 1 : 50 : * : * : 0
+R: 2 2 : 50 : * : * : 0
+R: 2 3 : 50 : * : * : 0
+R: 2 4 : 50 : * : * : 0
+R: 3 0 : 50 : * : * : 0
+R: 3 1 : 50 : * : * : 0
+R: 3 2 : 50 : * : * : 0
+R: 3 3 : 50 : * : * : 0
+R: 3 4 : 50 : * : * : 0
+R: 4 0 : 50 : * : * : 0
+R: 4 1 : 50 : * : * : 0
+R: 4 2 : 50 : * : * : 0
+R: 4 3 : 50 : * : * : 0
+R: 4 4 : 50 : * : * : 0
+R: 0 0 : 51 : * : * : 0
+R: 0 1 : 51 : * : * : 0
+R: 0 2 : 51 : * : * : 0
+R: 0 3 : 51 : * : * : 0
+R: 0 4 : 51 : * : * : 0
+R: 1 0 : 51 : * : * : 0
+R: 1 1 : 51 : * : * : 0
+R: 1 2 : 51 : * : * : 0
+R: 1 3 : 51 : * : * : 0
+R: 1 4 : 51 : * : * : 0
+R: 2 0 : 51 : * : * : 0
+R: 2 1 : 51 : * : * : 0
+R: 2 2 : 51 : * : * : 0
+R: 2 3 : 51 : * : * : 0
+R: 2 4 : 51 : * : * : 0
+R: 3 0 : 51 : * : * : 0
+R: 3 1 : 51 : * : * : 0
+R: 3 2 : 51 : * : * : 0
+R: 3 3 : 51 : * : * : 0
+R: 3 4 : 51 : * : * : 0
+R: 4 0 : 51 : * : * : 0
+R: 4 1 : 51 : * : * : 0
+R: 4 2 : 51 : * : * : 0
+R: 4 3 : 51 : * : * : 0
+R: 4 4 : 51 : * : * : 0
+R: 0 0 : 52 : * : * : 0
+R: 0 1 : 52 : * : * : 0
+R: 0 2 : 52 : * : * : 0
+R: 0 3 : 52 : * : * : 0
+R: 0 4 : 52 : * : * : 0
+R: 1 0 : 52 : * : * : 0
+R: 1 1 : 52 : * : * : 0
+R: 1 2 : 52 : * : * : 0
+R: 1 3 : 52 : * : * : 0
+R: 1 4 : 52 : * : * : 0
+R: 2 0 : 52 : * : * : 0
+R: 2 1 : 52 : * : * : 0
+R: 2 2 : 52 : * : * : 0
+R: 2 3 : 52 : * : * : 0
+R: 2 4 : 52 : * : * : 0
+R: 3 0 : 52 : * : * : 0
+R: 3 1 : 52 : * : * : 0
+R: 3 2 : 52 : * : * : 0
+R: 3 3 : 52 : * : * : 0
+R: 3 4 : 52 : * : * : 0
+R: 4 0 : 52 : * : * : 0
+R: 4 1 : 52 : * : * : 0
+R: 4 2 : 52 : * : * : 0
+R: 4 3 : 52 : * : * : 0
+R: 4 4 : 52 : * : * : 0
+R: 0 0 : 53 : * : * : 0
+R: 0 1 : 53 : * : * : 0
+R: 0 2 : 53 : * : * : 0
+R: 0 3 : 53 : * : * : 0
+R: 0 4 : 53 : * : * : 0
+R: 1 0 : 53 : * : * : 0
+R: 1 1 : 53 : * : * : 0
+R: 1 2 : 53 : * : * : 0
+R: 1 3 : 53 : * : * : 0
+R: 1 4 : 53 : * : * : 0
+R: 2 0 : 53 : * : * : 0
+R: 2 1 : 53 : * : * : 0
+R: 2 2 : 53 : * : * : 0
+R: 2 3 : 53 : * : * : 0
+R: 2 4 : 53 : * : * : 0
+R: 3 0 : 53 : * : * : 0
+R: 3 1 : 53 : * : * : 0
+R: 3 2 : 53 : * : * : 0
+R: 3 3 : 53 : * : * : 0
+R: 3 4 : 53 : * : * : 0
+R: 4 0 : 53 : * : * : 0
+R: 4 1 : 53 : * : * : 0
+R: 4 2 : 53 : * : * : 0
+R: 4 3 : 53 : * : * : 0
+R: 4 4 : 53 : * : * : 0
+R: 0 0 : 54 : * : * : 0
+R: 0 1 : 54 : * : * : 0
+R: 0 2 : 54 : * : * : 0
+R: 0 3 : 54 : * : * : 0
+R: 0 4 : 54 : * : * : 0
+R: 1 0 : 54 : * : * : 0
+R: 1 1 : 54 : * : * : 0
+R: 1 2 : 54 : * : * : 0
+R: 1 3 : 54 : * : * : 0
+R: 1 4 : 54 : * : * : 0
+R: 2 0 : 54 : * : * : 0
+R: 2 1 : 54 : * : * : 0
+R: 2 2 : 54 : * : * : 0
+R: 2 3 : 54 : * : * : 0
+R: 2 4 : 54 : * : * : 0
+R: 3 0 : 54 : * : * : 0
+R: 3 1 : 54 : * : * : 0
+R: 3 2 : 54 : * : * : 0
+R: 3 3 : 54 : * : * : 0
+R: 3 4 : 54 : * : * : 0
+R: 4 0 : 54 : * : * : 0
+R: 4 1 : 54 : * : * : 0
+R: 4 2 : 54 : * : * : 0
+R: 4 3 : 54 : * : * : 0
+R: 4 4 : 54 : * : * : 0
+R: 0 0 : 55 : * : * : 0
+R: 0 1 : 55 : * : * : 0
+R: 0 2 : 55 : * : * : 0
+R: 0 3 : 55 : * : * : 0
+R: 0 4 : 55 : * : * : 0
+R: 1 0 : 55 : * : * : 0
+R: 1 1 : 55 : * : * : 0
+R: 1 2 : 55 : * : * : 0
+R: 1 3 : 55 : * : * : 0
+R: 1 4 : 55 : * : * : 0
+R: 2 0 : 55 : * : * : 0
+R: 2 1 : 55 : * : * : 0
+R: 2 2 : 55 : * : * : 0
+R: 2 3 : 55 : * : * : 0
+R: 2 4 : 55 : * : * : 0
+R: 3 0 : 55 : * : * : 0
+R: 3 1 : 55 : * : * : 0
+R: 3 2 : 55 : * : * : 0
+R: 3 3 : 55 : * : * : 0
+R: 3 4 : 55 : * : * : 0
+R: 4 0 : 55 : * : * : 0
+R: 4 1 : 55 : * : * : 0
+R: 4 2 : 55 : * : * : 0
+R: 4 3 : 55 : * : * : 0
+R: 4 4 : 55 : * : * : 0
+R: 0 0 : 56 : * : * : 0
+R: 0 1 : 56 : * : * : 0
+R: 0 2 : 56 : * : * : 0
+R: 0 3 : 56 : * : * : 0
+R: 0 4 : 56 : * : * : 0
+R: 1 0 : 56 : * : * : 0
+R: 1 1 : 56 : * : * : 0
+R: 1 2 : 56 : * : * : 0
+R: 1 3 : 56 : * : * : 0
+R: 1 4 : 56 : * : * : 0
+R: 2 0 : 56 : * : * : 0
+R: 2 1 : 56 : * : * : 0
+R: 2 2 : 56 : * : * : 0
+R: 2 3 : 56 : * : * : 0
+R: 2 4 : 56 : * : * : 0
+R: 3 0 : 56 : * : * : 0
+R: 3 1 : 56 : * : * : 0
+R: 3 2 : 56 : * : * : 0
+R: 3 3 : 56 : * : * : 0
+R: 3 4 : 56 : * : * : 0
+R: 4 0 : 56 : * : * : 0
+R: 4 1 : 56 : * : * : 0
+R: 4 2 : 56 : * : * : 0
+R: 4 3 : 56 : * : * : 0
+R: 4 4 : 56 : * : * : 0
+R: 0 0 : 57 : * : * : 0
+R: 0 1 : 57 : * : * : 0
+R: 0 2 : 57 : * : * : 0
+R: 0 3 : 57 : * : * : 0
+R: 0 4 : 57 : * : * : 0
+R: 1 0 : 57 : * : * : 0
+R: 1 1 : 57 : * : * : 0
+R: 1 2 : 57 : * : * : 0
+R: 1 3 : 57 : * : * : 0
+R: 1 4 : 57 : * : * : 0
+R: 2 0 : 57 : * : * : 0
+R: 2 1 : 57 : * : * : 0
+R: 2 2 : 57 : * : * : 0
+R: 2 3 : 57 : * : * : 0
+R: 2 4 : 57 : * : * : 0
+R: 3 0 : 57 : * : * : 0
+R: 3 1 : 57 : * : * : 0
+R: 3 2 : 57 : * : * : 0
+R: 3 3 : 57 : * : * : 0
+R: 3 4 : 57 : * : * : 0
+R: 4 0 : 57 : * : * : 0
+R: 4 1 : 57 : * : * : 0
+R: 4 2 : 57 : * : * : 0
+R: 4 3 : 57 : * : * : 0
+R: 4 4 : 57 : * : * : 0
+R: 0 0 : 58 : * : * : 0
+R: 0 1 : 58 : * : * : 0
+R: 0 2 : 58 : * : * : 0
+R: 0 3 : 58 : * : * : 0
+R: 0 4 : 58 : * : * : 0
+R: 1 0 : 58 : * : * : 0
+R: 1 1 : 58 : * : * : 0
+R: 1 2 : 58 : * : * : 0
+R: 1 3 : 58 : * : * : 0
+R: 1 4 : 58 : * : * : 0
+R: 2 0 : 58 : * : * : 0
+R: 2 1 : 58 : * : * : 0
+R: 2 2 : 58 : * : * : 0
+R: 2 3 : 58 : * : * : 0
+R: 2 4 : 58 : * : * : 0
+R: 3 0 : 58 : * : * : 0
+R: 3 1 : 58 : * : * : 0
+R: 3 2 : 58 : * : * : 0
+R: 3 3 : 58 : * : * : 0
+R: 3 4 : 58 : * : * : 0
+R: 4 0 : 58 : * : * : 0
+R: 4 1 : 58 : * : * : 0
+R: 4 2 : 58 : * : * : 0
+R: 4 3 : 58 : * : * : 0
+R: 4 4 : 58 : * : * : 0
+R: 0 0 : 59 : * : * : 0
+R: 0 1 : 59 : * : * : 0
+R: 0 2 : 59 : * : * : 0
+R: 0 3 : 59 : * : * : 0
+R: 0 4 : 59 : * : * : 0
+R: 1 0 : 59 : * : * : 0
+R: 1 1 : 59 : * : * : 0
+R: 1 2 : 59 : * : * : 0
+R: 1 3 : 59 : * : * : 0
+R: 1 4 : 59 : * : * : 0
+R: 2 0 : 59 : * : * : 0
+R: 2 1 : 59 : * : * : 0
+R: 2 2 : 59 : * : * : 0
+R: 2 3 : 59 : * : * : 0
+R: 2 4 : 59 : * : * : 0
+R: 3 0 : 59 : * : * : 0
+R: 3 1 : 59 : * : * : 0
+R: 3 2 : 59 : * : * : 0
+R: 3 3 : 59 : * : * : 0
+R: 3 4 : 59 : * : * : 0
+R: 4 0 : 59 : * : * : 0
+R: 4 1 : 59 : * : * : 0
+R: 4 2 : 59 : * : * : 0
+R: 4 3 : 59 : * : * : 0
+R: 4 4 : 59 : * : * : 0
+R: 0 0 : 60 : * : * : 0
+R: 0 1 : 60 : * : * : 0
+R: 0 2 : 60 : * : * : 0
+R: 0 3 : 60 : * : * : 0
+R: 0 4 : 60 : * : * : 0
+R: 1 0 : 60 : * : * : 0
+R: 1 1 : 60 : * : * : 0
+R: 1 2 : 60 : * : * : 0
+R: 1 3 : 60 : * : * : 0
+R: 1 4 : 60 : * : * : 0
+R: 2 0 : 60 : * : * : 0
+R: 2 1 : 60 : * : * : 0
+R: 2 2 : 60 : * : * : 0
+R: 2 3 : 60 : * : * : 0
+R: 2 4 : 60 : * : * : 0
+R: 3 0 : 60 : * : * : 0
+R: 3 1 : 60 : * : * : 0
+R: 3 2 : 60 : * : * : 0
+R: 3 3 : 60 : * : * : 0
+R: 3 4 : 60 : * : * : 0
+R: 4 0 : 60 : * : * : 0
+R: 4 1 : 60 : * : * : 0
+R: 4 2 : 60 : * : * : 0
+R: 4 3 : 60 : * : * : 0
+R: 4 4 : 60 : * : * : 0
+R: 0 0 : 61 : * : * : 0
+R: 0 1 : 61 : * : * : 0
+R: 0 2 : 61 : * : * : 0
+R: 0 3 : 61 : * : * : 0
+R: 0 4 : 61 : * : * : 0
+R: 1 0 : 61 : * : * : 0
+R: 1 1 : 61 : * : * : 0
+R: 1 2 : 61 : * : * : 0
+R: 1 3 : 61 : * : * : 0
+R: 1 4 : 61 : * : * : 0
+R: 2 0 : 61 : * : * : 0
+R: 2 1 : 61 : * : * : 0
+R: 2 2 : 61 : * : * : 0
+R: 2 3 : 61 : * : * : 0
+R: 2 4 : 61 : * : * : 0
+R: 3 0 : 61 : * : * : 0
+R: 3 1 : 61 : * : * : 0
+R: 3 2 : 61 : * : * : 0
+R: 3 3 : 61 : * : * : 0
+R: 3 4 : 61 : * : * : 0
+R: 4 0 : 61 : * : * : 0
+R: 4 1 : 61 : * : * : 0
+R: 4 2 : 61 : * : * : 0
+R: 4 3 : 61 : * : * : 0
+R: 4 4 : 61 : * : * : 0
+R: 0 0 : 62 : * : * : 0
+R: 0 1 : 62 : * : * : 0
+R: 0 2 : 62 : * : * : 0
+R: 0 3 : 62 : * : * : 0
+R: 0 4 : 62 : * : * : 0
+R: 1 0 : 62 : * : * : 0
+R: 1 1 : 62 : * : * : 0
+R: 1 2 : 62 : * : * : 0
+R: 1 3 : 62 : * : * : 0
+R: 1 4 : 62 : * : * : 0
+R: 2 0 : 62 : * : * : 0
+R: 2 1 : 62 : * : * : 0
+R: 2 2 : 62 : * : * : 0
+R: 2 3 : 62 : * : * : 0
+R: 2 4 : 62 : * : * : 0
+R: 3 0 : 62 : * : * : 0
+R: 3 1 : 62 : * : * : 0
+R: 3 2 : 62 : * : * : 0
+R: 3 3 : 62 : * : * : 0
+R: 3 4 : 62 : * : * : 0
+R: 4 0 : 62 : * : * : 0
+R: 4 1 : 62 : * : * : 0
+R: 4 2 : 62 : * : * : 0
+R: 4 3 : 62 : * : * : 0
+R: 4 4 : 62 : * : * : 0
+R: 0 0 : 63 : * : * : 0
+R: 0 1 : 63 : * : * : 0
+R: 0 2 : 63 : * : * : 0
+R: 0 3 : 63 : * : * : 0
+R: 0 4 : 63 : * : * : 0
+R: 1 0 : 63 : * : * : 0
+R: 1 1 : 63 : * : * : 0
+R: 1 2 : 63 : * : * : 0
+R: 1 3 : 63 : * : * : 0
+R: 1 4 : 63 : * : * : 0
+R: 2 0 : 63 : * : * : 0
+R: 2 1 : 63 : * : * : 0
+R: 2 2 : 63 : * : * : 0
+R: 2 3 : 63 : * : * : 0
+R: 2 4 : 63 : * : * : 0
+R: 3 0 : 63 : * : * : 0
+R: 3 1 : 63 : * : * : 0
+R: 3 2 : 63 : * : * : 0
+R: 3 3 : 63 : * : * : 0
+R: 3 4 : 63 : * : * : 0
+R: 4 0 : 63 : * : * : 0
+R: 4 1 : 63 : * : * : 0
+R: 4 2 : 63 : * : * : 0
+R: 4 3 : 63 : * : * : 0
+R: 4 4 : 63 : * : * : 0
+R: 0 0 : 64 : * : * : 0
+R: 0 1 : 64 : * : * : 0
+R: 0 2 : 64 : * : * : 0
+R: 0 3 : 64 : * : * : 0
+R: 0 4 : 64 : * : * : 0
+R: 1 0 : 64 : * : * : 0
+R: 1 1 : 64 : * : * : 0
+R: 1 2 : 64 : * : * : 0
+R: 1 3 : 64 : * : * : 0
+R: 1 4 : 64 : * : * : 0
+R: 2 0 : 64 : * : * : 0
+R: 2 1 : 64 : * : * : 0
+R: 2 2 : 64 : * : * : 0
+R: 2 3 : 64 : * : * : 0
+R: 2 4 : 64 : * : * : 0
+R: 3 0 : 64 : * : * : 0
+R: 3 1 : 64 : * : * : 0
+R: 3 2 : 64 : * : * : 0
+R: 3 3 : 64 : * : * : 0
+R: 3 4 : 64 : * : * : 0
+R: 4 0 : 64 : * : * : 0
+R: 4 1 : 64 : * : * : 0
+R: 4 2 : 64 : * : * : 0
+R: 4 3 : 64 : * : * : 0
+R: 4 4 : 64 : * : * : 0
+R: 0 0 : 65 : * : * : 0
+R: 0 1 : 65 : * : * : 0
+R: 0 2 : 65 : * : * : 0
+R: 0 3 : 65 : * : * : 0
+R: 0 4 : 65 : * : * : 0
+R: 1 0 : 65 : * : * : 0
+R: 1 1 : 65 : * : * : 0
+R: 1 2 : 65 : * : * : 0
+R: 1 3 : 65 : * : * : 0
+R: 1 4 : 65 : * : * : 0
+R: 2 0 : 65 : * : * : 0
+R: 2 1 : 65 : * : * : 0
+R: 2 2 : 65 : * : * : 0
+R: 2 3 : 65 : * : * : 0
+R: 2 4 : 65 : * : * : 0
+R: 3 0 : 65 : * : * : 0
+R: 3 1 : 65 : * : * : 0
+R: 3 2 : 65 : * : * : 0
+R: 3 3 : 65 : * : * : 0
+R: 3 4 : 65 : * : * : 0
+R: 4 0 : 65 : * : * : 0
+R: 4 1 : 65 : * : * : 0
+R: 4 2 : 65 : * : * : 0
+R: 4 3 : 65 : * : * : 0
+R: 4 4 : 65 : * : * : 0
+R: 0 0 : 66 : * : * : 0
+R: 0 1 : 66 : * : * : 0
+R: 0 2 : 66 : * : * : 0
+R: 0 3 : 66 : * : * : 0
+R: 0 4 : 66 : * : * : 0
+R: 1 0 : 66 : * : * : 0
+R: 1 1 : 66 : * : * : 0
+R: 1 2 : 66 : * : * : 0
+R: 1 3 : 66 : * : * : 0
+R: 1 4 : 66 : * : * : 0
+R: 2 0 : 66 : * : * : 0
+R: 2 1 : 66 : * : * : 0
+R: 2 2 : 66 : * : * : 0
+R: 2 3 : 66 : * : * : 0
+R: 2 4 : 66 : * : * : 0
+R: 3 0 : 66 : * : * : 0
+R: 3 1 : 66 : * : * : 0
+R: 3 2 : 66 : * : * : 0
+R: 3 3 : 66 : * : * : 0
+R: 3 4 : 66 : * : * : 0
+R: 4 0 : 66 : * : * : 0
+R: 4 1 : 66 : * : * : 0
+R: 4 2 : 66 : * : * : 0
+R: 4 3 : 66 : * : * : 0
+R: 4 4 : 66 : * : * : 0
+R: 0 0 : 67 : * : * : 0
+R: 0 1 : 67 : * : * : 0
+R: 0 2 : 67 : * : * : 0
+R: 0 3 : 67 : * : * : 0
+R: 0 4 : 67 : * : * : 0
+R: 1 0 : 67 : * : * : 0
+R: 1 1 : 67 : * : * : 0
+R: 1 2 : 67 : * : * : 0
+R: 1 3 : 67 : * : * : 0
+R: 1 4 : 67 : * : * : 0
+R: 2 0 : 67 : * : * : 0
+R: 2 1 : 67 : * : * : 0
+R: 2 2 : 67 : * : * : 0
+R: 2 3 : 67 : * : * : 0
+R: 2 4 : 67 : * : * : 0
+R: 3 0 : 67 : * : * : 0
+R: 3 1 : 67 : * : * : 0
+R: 3 2 : 67 : * : * : 0
+R: 3 3 : 67 : * : * : 0
+R: 3 4 : 67 : * : * : 0
+R: 4 0 : 67 : * : * : 0
+R: 4 1 : 67 : * : * : 0
+R: 4 2 : 67 : * : * : 0
+R: 4 3 : 67 : * : * : 0
+R: 4 4 : 67 : * : * : 0
+R: 0 0 : 68 : * : * : 0
+R: 0 1 : 68 : * : * : 0
+R: 0 2 : 68 : * : * : 0
+R: 0 3 : 68 : * : * : 0
+R: 0 4 : 68 : * : * : 0
+R: 1 0 : 68 : * : * : 0
+R: 1 1 : 68 : * : * : 0
+R: 1 2 : 68 : * : * : 0
+R: 1 3 : 68 : * : * : 0
+R: 1 4 : 68 : * : * : 0
+R: 2 0 : 68 : * : * : 0
+R: 2 1 : 68 : * : * : 0
+R: 2 2 : 68 : * : * : 0
+R: 2 3 : 68 : * : * : 0
+R: 2 4 : 68 : * : * : 0
+R: 3 0 : 68 : * : * : 0
+R: 3 1 : 68 : * : * : 0
+R: 3 2 : 68 : * : * : 0
+R: 3 3 : 68 : * : * : 0
+R: 3 4 : 68 : * : * : 0
+R: 4 0 : 68 : * : * : 0
+R: 4 1 : 68 : * : * : 0
+R: 4 2 : 68 : * : * : 0
+R: 4 3 : 68 : * : * : 0
+R: 4 4 : 68 : * : * : 0
+R: 0 0 : 69 : * : * : 0
+R: 0 1 : 69 : * : * : 0
+R: 0 2 : 69 : * : * : 0
+R: 0 3 : 69 : * : * : 0
+R: 0 4 : 69 : * : * : 0
+R: 1 0 : 69 : * : * : 0
+R: 1 1 : 69 : * : * : 0
+R: 1 2 : 69 : * : * : 0
+R: 1 3 : 69 : * : * : 0
+R: 1 4 : 69 : * : * : 0
+R: 2 0 : 69 : * : * : 0
+R: 2 1 : 69 : * : * : 0
+R: 2 2 : 69 : * : * : 0
+R: 2 3 : 69 : * : * : 0
+R: 2 4 : 69 : * : * : 0
+R: 3 0 : 69 : * : * : 0
+R: 3 1 : 69 : * : * : 0
+R: 3 2 : 69 : * : * : 0
+R: 3 3 : 69 : * : * : 0
+R: 3 4 : 69 : * : * : 0
+R: 4 0 : 69 : * : * : 0
+R: 4 1 : 69 : * : * : 0
+R: 4 2 : 69 : * : * : 0
+R: 4 3 : 69 : * : * : 0
+R: 4 4 : 69 : * : * : 0
+R: 0 0 : 70 : * : * : 0
+R: 0 1 : 70 : * : * : 0
+R: 0 2 : 70 : * : * : 0
+R: 0 3 : 70 : * : * : 0
+R: 0 4 : 70 : * : * : 0
+R: 1 0 : 70 : * : * : 0
+R: 1 1 : 70 : * : * : 0
+R: 1 2 : 70 : * : * : 0
+R: 1 3 : 70 : * : * : 0
+R: 1 4 : 70 : * : * : 0
+R: 2 0 : 70 : * : * : 0
+R: 2 1 : 70 : * : * : 0
+R: 2 2 : 70 : * : * : 0
+R: 2 3 : 70 : * : * : 0
+R: 2 4 : 70 : * : * : 0
+R: 3 0 : 70 : * : * : 0
+R: 3 1 : 70 : * : * : 0
+R: 3 2 : 70 : * : * : 0
+R: 3 3 : 70 : * : * : 0
+R: 3 4 : 70 : * : * : 0
+R: 4 0 : 70 : * : * : 0
+R: 4 1 : 70 : * : * : 0
+R: 4 2 : 70 : * : * : 0
+R: 4 3 : 70 : * : * : 0
+R: 4 4 : 70 : * : * : 0
+R: 0 0 : 71 : * : * : 0
+R: 0 1 : 71 : * : * : 0
+R: 0 2 : 71 : * : * : 0
+R: 0 3 : 71 : * : * : 0
+R: 0 4 : 71 : * : * : 0
+R: 1 0 : 71 : * : * : 0
+R: 1 1 : 71 : * : * : 0
+R: 1 2 : 71 : * : * : 0
+R: 1 3 : 71 : * : * : 0
+R: 1 4 : 71 : * : * : 0
+R: 2 0 : 71 : * : * : 0
+R: 2 1 : 71 : * : * : 0
+R: 2 2 : 71 : * : * : 0
+R: 2 3 : 71 : * : * : 0
+R: 2 4 : 71 : * : * : 0
+R: 3 0 : 71 : * : * : 0
+R: 3 1 : 71 : * : * : 0
+R: 3 2 : 71 : * : * : 0
+R: 3 3 : 71 : * : * : 0
+R: 3 4 : 71 : * : * : 0
+R: 4 0 : 71 : * : * : 0
+R: 4 1 : 71 : * : * : 0
+R: 4 2 : 71 : * : * : 0
+R: 4 3 : 71 : * : * : 0
+R: 4 4 : 71 : * : * : 0
+R: 0 0 : 72 : * : * : 0
+R: 0 1 : 72 : * : * : 0
+R: 0 2 : 72 : * : * : 0
+R: 0 3 : 72 : * : * : 0
+R: 0 4 : 72 : * : * : 0
+R: 1 0 : 72 : * : * : 0
+R: 1 1 : 72 : * : * : 0
+R: 1 2 : 72 : * : * : 0
+R: 1 3 : 72 : * : * : 0
+R: 1 4 : 72 : * : * : 0
+R: 2 0 : 72 : * : * : 0
+R: 2 1 : 72 : * : * : 0
+R: 2 2 : 72 : * : * : 0
+R: 2 3 : 72 : * : * : 0
+R: 2 4 : 72 : * : * : 0
+R: 3 0 : 72 : * : * : 0
+R: 3 1 : 72 : * : * : 0
+R: 3 2 : 72 : * : * : 0
+R: 3 3 : 72 : * : * : 0
+R: 3 4 : 72 : * : * : 0
+R: 4 0 : 72 : * : * : 0
+R: 4 1 : 72 : * : * : 0
+R: 4 2 : 72 : * : * : 0
+R: 4 3 : 72 : * : * : 0
+R: 4 4 : 72 : * : * : 0
+R: 0 0 : 73 : * : * : 0
+R: 0 1 : 73 : * : * : 0
+R: 0 2 : 73 : * : * : 0
+R: 0 3 : 73 : * : * : 0
+R: 0 4 : 73 : * : * : 0
+R: 1 0 : 73 : * : * : 0
+R: 1 1 : 73 : * : * : 0
+R: 1 2 : 73 : * : * : 0
+R: 1 3 : 73 : * : * : 0
+R: 1 4 : 73 : * : * : 0
+R: 2 0 : 73 : * : * : 0
+R: 2 1 : 73 : * : * : 0
+R: 2 2 : 73 : * : * : 0
+R: 2 3 : 73 : * : * : 0
+R: 2 4 : 73 : * : * : 0
+R: 3 0 : 73 : * : * : 0
+R: 3 1 : 73 : * : * : 0
+R: 3 2 : 73 : * : * : 0
+R: 3 3 : 73 : * : * : 0
+R: 3 4 : 73 : * : * : 0
+R: 4 0 : 73 : * : * : 0
+R: 4 1 : 73 : * : * : 0
+R: 4 2 : 73 : * : * : 0
+R: 4 3 : 73 : * : * : 0
+R: 4 4 : 73 : * : * : 0
+R: 0 0 : 74 : * : * : 0
+R: 0 1 : 74 : * : * : 0
+R: 0 2 : 74 : * : * : 0
+R: 0 3 : 74 : * : * : 0
+R: 0 4 : 74 : * : * : 0
+R: 1 0 : 74 : * : * : 0
+R: 1 1 : 74 : * : * : 0
+R: 1 2 : 74 : * : * : 0
+R: 1 3 : 74 : * : * : 0
+R: 1 4 : 74 : * : * : 0
+R: 2 0 : 74 : * : * : 0
+R: 2 1 : 74 : * : * : 0
+R: 2 2 : 74 : * : * : 0
+R: 2 3 : 74 : * : * : 0
+R: 2 4 : 74 : * : * : 0
+R: 3 0 : 74 : * : * : 0
+R: 3 1 : 74 : * : * : 0
+R: 3 2 : 74 : * : * : 0
+R: 3 3 : 74 : * : * : 0
+R: 3 4 : 74 : * : * : 0
+R: 4 0 : 74 : * : * : 0
+R: 4 1 : 74 : * : * : 0
+R: 4 2 : 74 : * : * : 0
+R: 4 3 : 74 : * : * : 0
+R: 4 4 : 74 : * : * : 0
+R: 0 0 : 75 : * : * : 0
+R: 0 1 : 75 : * : * : 0
+R: 0 2 : 75 : * : * : 0
+R: 0 3 : 75 : * : * : 0
+R: 0 4 : 75 : * : * : 0
+R: 1 0 : 75 : * : * : 0
+R: 1 1 : 75 : * : * : 0
+R: 1 2 : 75 : * : * : 0
+R: 1 3 : 75 : * : * : 0
+R: 1 4 : 75 : * : * : 0
+R: 2 0 : 75 : * : * : 0
+R: 2 1 : 75 : * : * : 0
+R: 2 2 : 75 : * : * : 0
+R: 2 3 : 75 : * : * : 0
+R: 2 4 : 75 : * : * : 0
+R: 3 0 : 75 : * : * : 0
+R: 3 1 : 75 : * : * : 0
+R: 3 2 : 75 : * : * : 0
+R: 3 3 : 75 : * : * : 0
+R: 3 4 : 75 : * : * : 0
+R: 4 0 : 75 : * : * : 0
+R: 4 1 : 75 : * : * : 0
+R: 4 2 : 75 : * : * : 0
+R: 4 3 : 75 : * : * : 0
+R: 4 4 : 75 : * : * : 0
+R: 0 0 : 76 : * : * : 0
+R: 0 1 : 76 : * : * : 0
+R: 0 2 : 76 : * : * : 0
+R: 0 3 : 76 : * : * : 0
+R: 0 4 : 76 : * : * : 0
+R: 1 0 : 76 : * : * : 0
+R: 1 1 : 76 : * : * : 0
+R: 1 2 : 76 : * : * : 0
+R: 1 3 : 76 : * : * : 0
+R: 1 4 : 76 : * : * : 0
+R: 2 0 : 76 : * : * : 0
+R: 2 1 : 76 : * : * : 0
+R: 2 2 : 76 : * : * : 0
+R: 2 3 : 76 : * : * : 0
+R: 2 4 : 76 : * : * : 0
+R: 3 0 : 76 : * : * : 0
+R: 3 1 : 76 : * : * : 0
+R: 3 2 : 76 : * : * : 0
+R: 3 3 : 76 : * : * : 0
+R: 3 4 : 76 : * : * : 0
+R: 4 0 : 76 : * : * : 0
+R: 4 1 : 76 : * : * : 0
+R: 4 2 : 76 : * : * : 0
+R: 4 3 : 76 : * : * : 0
+R: 4 4 : 76 : * : * : 0
+R: 0 0 : 77 : * : * : 0
+R: 0 1 : 77 : * : * : 0
+R: 0 2 : 77 : * : * : 0
+R: 0 3 : 77 : * : * : 0
+R: 0 4 : 77 : * : * : 0
+R: 1 0 : 77 : * : * : 0
+R: 1 1 : 77 : * : * : 0
+R: 1 2 : 77 : * : * : 0
+R: 1 3 : 77 : * : * : 0
+R: 1 4 : 77 : * : * : 0
+R: 2 0 : 77 : * : * : 0
+R: 2 1 : 77 : * : * : 0
+R: 2 2 : 77 : * : * : 0
+R: 2 3 : 77 : * : * : 0
+R: 2 4 : 77 : * : * : 0
+R: 3 0 : 77 : * : * : 0
+R: 3 1 : 77 : * : * : 0
+R: 3 2 : 77 : * : * : 0
+R: 3 3 : 77 : * : * : 0
+R: 3 4 : 77 : * : * : 0
+R: 4 0 : 77 : * : * : 0
+R: 4 1 : 77 : * : * : 0
+R: 4 2 : 77 : * : * : 0
+R: 4 3 : 77 : * : * : 0
+R: 4 4 : 77 : * : * : 0
+R: 0 0 : 78 : * : * : 0
+R: 0 1 : 78 : * : * : 0
+R: 0 2 : 78 : * : * : 0
+R: 0 3 : 78 : * : * : 0
+R: 0 4 : 78 : * : * : 0
+R: 1 0 : 78 : * : * : 0
+R: 1 1 : 78 : * : * : 0
+R: 1 2 : 78 : * : * : 0
+R: 1 3 : 78 : * : * : 0
+R: 1 4 : 78 : * : * : 0
+R: 2 0 : 78 : * : * : 0
+R: 2 1 : 78 : * : * : 0
+R: 2 2 : 78 : * : * : 0
+R: 2 3 : 78 : * : * : 0
+R: 2 4 : 78 : * : * : 0
+R: 3 0 : 78 : * : * : 0
+R: 3 1 : 78 : * : * : 0
+R: 3 2 : 78 : * : * : 0
+R: 3 3 : 78 : * : * : 0
+R: 3 4 : 78 : * : * : 0
+R: 4 0 : 78 : * : * : 0
+R: 4 1 : 78 : * : * : 0
+R: 4 2 : 78 : * : * : 0
+R: 4 3 : 78 : * : * : 0
+R: 4 4 : 78 : * : * : 0
+R: 0 0 : 79 : * : * : 0
+R: 0 1 : 79 : * : * : 0
+R: 0 2 : 79 : * : * : 0
+R: 0 3 : 79 : * : * : 0
+R: 0 4 : 79 : * : * : 0
+R: 1 0 : 79 : * : * : 0
+R: 1 1 : 79 : * : * : 0
+R: 1 2 : 79 : * : * : 0
+R: 1 3 : 79 : * : * : 0
+R: 1 4 : 79 : * : * : 0
+R: 2 0 : 79 : * : * : 0
+R: 2 1 : 79 : * : * : 0
+R: 2 2 : 79 : * : * : 0
+R: 2 3 : 79 : * : * : 0
+R: 2 4 : 79 : * : * : 0
+R: 3 0 : 79 : * : * : 0
+R: 3 1 : 79 : * : * : 0
+R: 3 2 : 79 : * : * : 0
+R: 3 3 : 79 : * : * : 0
+R: 3 4 : 79 : * : * : 0
+R: 4 0 : 79 : * : * : 0
+R: 4 1 : 79 : * : * : 0
+R: 4 2 : 79 : * : * : 0
+R: 4 3 : 79 : * : * : 0
+R: 4 4 : 79 : * : * : 0
+R: 0 0 : 80 : * : * : 1
+R: 0 1 : 80 : * : * : 1
+R: 0 2 : 80 : * : * : 1
+R: 0 3 : 80 : * : * : 1
+R: 0 4 : 80 : * : * : 1
+R: 1 0 : 80 : * : * : 1
+R: 1 1 : 80 : * : * : 1
+R: 1 2 : 80 : * : * : 1
+R: 1 3 : 80 : * : * : 1
+R: 1 4 : 80 : * : * : 1
+R: 2 0 : 80 : * : * : 1
+R: 2 1 : 80 : * : * : 1
+R: 2 2 : 80 : * : * : 1
+R: 2 3 : 80 : * : * : 1
+R: 2 4 : 80 : * : * : 1
+R: 3 0 : 80 : * : * : 1
+R: 3 1 : 80 : * : * : 1
+R: 3 2 : 80 : * : * : 1
+R: 3 3 : 80 : * : * : 1
+R: 3 4 : 80 : * : * : 1
+R: 4 0 : 80 : * : * : 1
+R: 4 1 : 80 : * : * : 1
+R: 4 2 : 80 : * : * : 1
+R: 4 3 : 80 : * : * : 1
+R: 4 4 : 80 : * : * : 1
diff --git a/code/src/problem_examples/dpomdp/GridSmall.dpomdp b/code/src/problem_examples/dpomdp/GridSmall.dpomdp
new file mode 100644
index 0000000000000000000000000000000000000000..3da01c903566ff8ae506e0b6f0bf3e89a4dda8dc
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/GridSmall.dpomdp
@@ -0,0 +1,2749 @@
+# Meeting in a 2x2 grid DEC-POMDP description
+# GridSmall.dpomdp
+# $Id: GridSmall.dpomdp 2915 2008-10-14 10:45:54Z mtjspaan $
+#
+# Problem appeared in (Bernstein, Hansen & Zilberstein, IJCAI 2005).
+# This is the version with 2 observations per agents (Amato,
+# Bernstein & Zilberstein, AAMAS Workshop on Multi-Agent Sequential
+# Decision Making in Uncertain Domains (MSDM) 2006).
+#
+# .dpomdp description converted from .posg description provided at
+# http://rbr.cs.umass.edu/~camato/decpomdp/GridSmall.posg
+# Fixed rounding errors (e.g., replaced 0.63999 with 0.64).
+agents: 2
+discount: 1.0
+values: "reward"
+states: 16
+start:
+0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+actions:
+"up" "down" "left" "right" "stay"
+"up" "down" "left" "right" "stay"
+observations:
+"nnnnnynnn" "nnnynnnnn"
+"nnnnnynnn" "nnnynnnnn"
+T: "up" "up" : 0 : 5 : 0.01
+T: "up" "up" : 0 : 6 : 0.01
+T: "up" "up" : 0 : 4 : 0.08
+T: "up" "up" : 0 : 9 : 0.01
+T: "up" "up" : 0 : 10 : 0.01
+T: "up" "up" : 0 : 8 : 0.08
+T: "up" "up" : 0 : 1 : 0.08
+T: "up" "up" : 0 : 2 : 0.08
+T: "up" "up" : 0 : 0 : 0.64
+T: "up" "down" : 0 : 6 : 0.06
+T: "up" "down" : 0 : 5 : 0.01
+T: "up" "down" : 0 : 4 : 0.03
+T: "up" "down" : 0 : 10 : 0.06
+T: "up" "down" : 0 : 9 : 0.01
+T: "up" "down" : 0 : 8 : 0.03
+T: "up" "down" : 0 : 2 : 0.48
+T: "up" "down" : 0 : 1 : 0.08
+T: "up" "down" : 0 : 0 : 0.24
+T: "up" "left" : 0 : 6 : 0.01
+T: "up" "left" : 0 : 5 : 0.01
+T: "up" "left" : 0 : 4 : 0.08
+T: "up" "left" : 0 : 10 : 0.01
+T: "up" "left" : 0 : 9 : 0.01
+T: "up" "left" : 0 : 8 : 0.08
+T: "up" "left" : 0 : 2 : 0.08
+T: "up" "left" : 0 : 1 : 0.08
+T: "up" "left" : 0 : 0 : 0.64
+T: "up" "right" : 0 : 5 : 0.06
+T: "up" "right" : 0 : 6 : 0.01
+T: "up" "right" : 0 : 4 : 0.03
+T: "up" "right" : 0 : 9 : 0.06
+T: "up" "right" : 0 : 10 : 0.01
+T: "up" "right" : 0 : 8 : 0.03
+T: "up" "right" : 0 : 1 : 0.48
+T: "up" "right" : 0 : 2 : 0.08
+T: "up" "right" : 0 : 0 : 0.24
+T: "up" "stay" : 0 : 4 : 0.1
+T: "up" "stay" : 0 : 8 : 0.1
+T: "up" "stay" : 0 : 0 : 0.8
+T: "down" "up" : 0 : 9 : 0.06
+T: "down" "up" : 0 : 10 : 0.06
+T: "down" "up" : 0 : 8 : 0.48
+T: "down" "up" : 0 : 5 : 0.01
+T: "down" "up" : 0 : 6 : 0.01
+T: "down" "up" : 0 : 4 : 0.08
+T: "down" "up" : 0 : 1 : 0.03
+T: "down" "up" : 0 : 2 : 0.03
+T: "down" "up" : 0 : 0 : 0.24
+T: "down" "down" : 0 : 10 : 0.36
+T: "down" "down" : 0 : 9 : 0.06
+T: "down" "down" : 0 : 8 : 0.18
+T: "down" "down" : 0 : 6 : 0.06
+T: "down" "down" : 0 : 5 : 0.01
+T: "down" "down" : 0 : 4 : 0.03
+T: "down" "down" : 0 : 2 : 0.18
+T: "down" "down" : 0 : 1 : 0.03
+T: "down" "down" : 0 : 0 : 0.09
+T: "down" "left" : 0 : 10 : 0.06
+T: "down" "left" : 0 : 9 : 0.06
+T: "down" "left" : 0 : 8 : 0.48
+T: "down" "left" : 0 : 6 : 0.01
+T: "down" "left" : 0 : 5 : 0.01
+T: "down" "left" : 0 : 4 : 0.08
+T: "down" "left" : 0 : 2 : 0.03
+T: "down" "left" : 0 : 1 : 0.03
+T: "down" "left" : 0 : 0 : 0.24
+T: "down" "right" : 0 : 9 : 0.36
+T: "down" "right" : 0 : 10 : 0.06
+T: "down" "right" : 0 : 8 : 0.18
+T: "down" "right" : 0 : 5 : 0.06
+T: "down" "right" : 0 : 6 : 0.01
+T: "down" "right" : 0 : 4 : 0.03
+T: "down" "right" : 0 : 1 : 0.18
+T: "down" "right" : 0 : 2 : 0.03
+T: "down" "right" : 0 : 0 : 0.09
+T: "down" "stay" : 0 : 8 : 0.6
+T: "down" "stay" : 0 : 4 : 0.1
+T: "down" "stay" : 0 : 0 : 0.3
+T: "left" "up" : 0 : 9 : 0.01
+T: "left" "up" : 0 : 10 : 0.01
+T: "left" "up" : 0 : 8 : 0.08
+T: "left" "up" : 0 : 5 : 0.01
+T: "left" "up" : 0 : 6 : 0.01
+T: "left" "up" : 0 : 4 : 0.08
+T: "left" "up" : 0 : 1 : 0.08
+T: "left" "up" : 0 : 2 : 0.08
+T: "left" "up" : 0 : 0 : 0.64
+T: "left" "down" : 0 : 10 : 0.06
+T: "left" "down" : 0 : 9 : 0.01
+T: "left" "down" : 0 : 8 : 0.03
+T: "left" "down" : 0 : 6 : 0.06
+T: "left" "down" : 0 : 5 : 0.01
+T: "left" "down" : 0 : 4 : 0.03
+T: "left" "down" : 0 : 2 : 0.48
+T: "left" "down" : 0 : 1 : 0.08
+T: "left" "down" : 0 : 0 : 0.24
+T: "left" "left" : 0 : 10 : 0.01
+T: "left" "left" : 0 : 9 : 0.01
+T: "left" "left" : 0 : 8 : 0.08
+T: "left" "left" : 0 : 6 : 0.01
+T: "left" "left" : 0 : 5 : 0.01
+T: "left" "left" : 0 : 4 : 0.08
+T: "left" "left" : 0 : 2 : 0.08
+T: "left" "left" : 0 : 1 : 0.08
+T: "left" "left" : 0 : 0 : 0.64
+T: "left" "right" : 0 : 9 : 0.06
+T: "left" "right" : 0 : 10 : 0.01
+T: "left" "right" : 0 : 8 : 0.03
+T: "left" "right" : 0 : 5 : 0.06
+T: "left" "right" : 0 : 6 : 0.01
+T: "left" "right" : 0 : 4 : 0.03
+T: "left" "right" : 0 : 1 : 0.48
+T: "left" "right" : 0 : 2 : 0.08
+T: "left" "right" : 0 : 0 : 0.24
+T: "left" "stay" : 0 : 8 : 0.1
+T: "left" "stay" : 0 : 4 : 0.1
+T: "left" "stay" : 0 : 0 : 0.8
+T: "right" "up" : 0 : 5 : 0.06
+T: "right" "up" : 0 : 6 : 0.06
+T: "right" "up" : 0 : 4 : 0.48
+T: "right" "up" : 0 : 9 : 0.01
+T: "right" "up" : 0 : 10 : 0.01
+T: "right" "up" : 0 : 8 : 0.08
+T: "right" "up" : 0 : 1 : 0.03
+T: "right" "up" : 0 : 2 : 0.03
+T: "right" "up" : 0 : 0 : 0.24
+T: "right" "down" : 0 : 6 : 0.36
+T: "right" "down" : 0 : 5 : 0.06
+T: "right" "down" : 0 : 4 : 0.18
+T: "right" "down" : 0 : 10 : 0.06
+T: "right" "down" : 0 : 9 : 0.01
+T: "right" "down" : 0 : 8 : 0.03
+T: "right" "down" : 0 : 2 : 0.18
+T: "right" "down" : 0 : 1 : 0.03
+T: "right" "down" : 0 : 0 : 0.09
+T: "right" "left" : 0 : 6 : 0.06
+T: "right" "left" : 0 : 5 : 0.06
+T: "right" "left" : 0 : 4 : 0.48
+T: "right" "left" : 0 : 10 : 0.01
+T: "right" "left" : 0 : 9 : 0.01
+T: "right" "left" : 0 : 8 : 0.08
+T: "right" "left" : 0 : 2 : 0.03
+T: "right" "left" : 0 : 1 : 0.03
+T: "right" "left" : 0 : 0 : 0.24
+T: "right" "right" : 0 : 5 : 0.36
+T: "right" "right" : 0 : 6 : 0.06
+T: "right" "right" : 0 : 4 : 0.18
+T: "right" "right" : 0 : 9 : 0.06
+T: "right" "right" : 0 : 10 : 0.01
+T: "right" "right" : 0 : 8 : 0.03
+T: "right" "right" : 0 : 1 : 0.18
+T: "right" "right" : 0 : 2 : 0.03
+T: "right" "right" : 0 : 0 : 0.09
+T: "right" "stay" : 0 : 4 : 0.6
+T: "right" "stay" : 0 : 8 : 0.1
+T: "right" "stay" : 0 : 0 : 0.3
+T: "stay" "up" : 0 : 1 : 0.1
+T: "stay" "up" : 0 : 2 : 0.1
+T: "stay" "up" : 0 : 0 : 0.8
+T: "stay" "down" : 0 : 2 : 0.6
+T: "stay" "down" : 0 : 1 : 0.1
+T: "stay" "down" : 0 : 0 : 0.3
+T: "stay" "left" : 0 : 2 : 0.1
+T: "stay" "left" : 0 : 1 : 0.1
+T: "stay" "left" : 0 : 0 : 0.8
+T: "stay" "right" : 0 : 1 : 0.6
+T: "stay" "right" : 0 : 2 : 0.1
+T: "stay" "right" : 0 : 0 : 0.3
+T: "stay" "stay" : 0 : 0 : 1.0
+T: "up" "up" : 1 : 4 : 0.01
+T: "up" "up" : 1 : 7 : 0.01
+T: "up" "up" : 1 : 5 : 0.08
+T: "up" "up" : 1 : 8 : 0.01
+T: "up" "up" : 1 : 11 : 0.01
+T: "up" "up" : 1 : 9 : 0.08
+T: "up" "up" : 1 : 0 : 0.08
+T: "up" "up" : 1 : 3 : 0.08
+T: "up" "up" : 1 : 1 : 0.64
+T: "up" "down" : 1 : 7 : 0.06
+T: "up" "down" : 1 : 4 : 0.01
+T: "up" "down" : 1 : 5 : 0.03
+T: "up" "down" : 1 : 11 : 0.06
+T: "up" "down" : 1 : 8 : 0.01
+T: "up" "down" : 1 : 9 : 0.03
+T: "up" "down" : 1 : 3 : 0.48
+T: "up" "down" : 1 : 0 : 0.08
+T: "up" "down" : 1 : 1 : 0.24
+T: "up" "left" : 1 : 4 : 0.06
+T: "up" "left" : 1 : 7 : 0.01
+T: "up" "left" : 1 : 5 : 0.03
+T: "up" "left" : 1 : 8 : 0.06
+T: "up" "left" : 1 : 11 : 0.01
+T: "up" "left" : 1 : 9 : 0.03
+T: "up" "left" : 1 : 0 : 0.48
+T: "up" "left" : 1 : 3 : 0.08
+T: "up" "left" : 1 : 1 : 0.24
+T: "up" "right" : 1 : 7 : 0.01
+T: "up" "right" : 1 : 4 : 0.01
+T: "up" "right" : 1 : 5 : 0.08
+T: "up" "right" : 1 : 11 : 0.01
+T: "up" "right" : 1 : 8 : 0.01
+T: "up" "right" : 1 : 9 : 0.08
+T: "up" "right" : 1 : 3 : 0.08
+T: "up" "right" : 1 : 0 : 0.08
+T: "up" "right" : 1 : 1 : 0.64
+T: "up" "stay" : 1 : 5 : 0.1
+T: "up" "stay" : 1 : 9 : 0.1
+T: "up" "stay" : 1 : 1 : 0.8
+T: "down" "up" : 1 : 8 : 0.06
+T: "down" "up" : 1 : 11 : 0.06
+T: "down" "up" : 1 : 9 : 0.48
+T: "down" "up" : 1 : 4 : 0.01
+T: "down" "up" : 1 : 7 : 0.01
+T: "down" "up" : 1 : 5 : 0.08
+T: "down" "up" : 1 : 0 : 0.03
+T: "down" "up" : 1 : 3 : 0.03
+T: "down" "up" : 1 : 1 : 0.24
+T: "down" "down" : 1 : 11 : 0.36
+T: "down" "down" : 1 : 8 : 0.06
+T: "down" "down" : 1 : 9 : 0.18
+T: "down" "down" : 1 : 7 : 0.06
+T: "down" "down" : 1 : 4 : 0.01
+T: "down" "down" : 1 : 5 : 0.03
+T: "down" "down" : 1 : 3 : 0.18
+T: "down" "down" : 1 : 0 : 0.03
+T: "down" "down" : 1 : 1 : 0.09
+T: "down" "left" : 1 : 8 : 0.36
+T: "down" "left" : 1 : 11 : 0.06
+T: "down" "left" : 1 : 9 : 0.18
+T: "down" "left" : 1 : 4 : 0.06
+T: "down" "left" : 1 : 7 : 0.01
+T: "down" "left" : 1 : 5 : 0.03
+T: "down" "left" : 1 : 0 : 0.18
+T: "down" "left" : 1 : 3 : 0.03
+T: "down" "left" : 1 : 1 : 0.09
+T: "down" "right" : 1 : 11 : 0.06
+T: "down" "right" : 1 : 8 : 0.06
+T: "down" "right" : 1 : 9 : 0.48
+T: "down" "right" : 1 : 7 : 0.01
+T: "down" "right" : 1 : 4 : 0.01
+T: "down" "right" : 1 : 5 : 0.08
+T: "down" "right" : 1 : 3 : 0.03
+T: "down" "right" : 1 : 0 : 0.03
+T: "down" "right" : 1 : 1 : 0.24
+T: "down" "stay" : 1 : 9 : 0.6
+T: "down" "stay" : 1 : 5 : 0.1
+T: "down" "stay" : 1 : 1 : 0.3
+T: "left" "up" : 1 : 8 : 0.01
+T: "left" "up" : 1 : 11 : 0.01
+T: "left" "up" : 1 : 9 : 0.08
+T: "left" "up" : 1 : 4 : 0.01
+T: "left" "up" : 1 : 7 : 0.01
+T: "left" "up" : 1 : 5 : 0.08
+T: "left" "up" : 1 : 0 : 0.08
+T: "left" "up" : 1 : 3 : 0.08
+T: "left" "up" : 1 : 1 : 0.64
+T: "left" "down" : 1 : 11 : 0.06
+T: "left" "down" : 1 : 8 : 0.01
+T: "left" "down" : 1 : 9 : 0.03
+T: "left" "down" : 1 : 7 : 0.06
+T: "left" "down" : 1 : 4 : 0.01
+T: "left" "down" : 1 : 5 : 0.03
+T: "left" "down" : 1 : 3 : 0.48
+T: "left" "down" : 1 : 0 : 0.08
+T: "left" "down" : 1 : 1 : 0.24
+T: "left" "left" : 1 : 8 : 0.06
+T: "left" "left" : 1 : 11 : 0.01
+T: "left" "left" : 1 : 9 : 0.03
+T: "left" "left" : 1 : 4 : 0.06
+T: "left" "left" : 1 : 7 : 0.01
+T: "left" "left" : 1 : 5 : 0.03
+T: "left" "left" : 1 : 0 : 0.48
+T: "left" "left" : 1 : 3 : 0.08
+T: "left" "left" : 1 : 1 : 0.24
+T: "left" "right" : 1 : 11 : 0.01
+T: "left" "right" : 1 : 8 : 0.01
+T: "left" "right" : 1 : 9 : 0.08
+T: "left" "right" : 1 : 7 : 0.01
+T: "left" "right" : 1 : 4 : 0.01
+T: "left" "right" : 1 : 5 : 0.08
+T: "left" "right" : 1 : 3 : 0.08
+T: "left" "right" : 1 : 0 : 0.08
+T: "left" "right" : 1 : 1 : 0.64
+T: "left" "stay" : 1 : 9 : 0.1
+T: "left" "stay" : 1 : 5 : 0.1
+T: "left" "stay" : 1 : 1 : 0.8
+T: "right" "up" : 1 : 4 : 0.06
+T: "right" "up" : 1 : 7 : 0.06
+T: "right" "up" : 1 : 5 : 0.48
+T: "right" "up" : 1 : 8 : 0.01
+T: "right" "up" : 1 : 11 : 0.01
+T: "right" "up" : 1 : 9 : 0.08
+T: "right" "up" : 1 : 0 : 0.03
+T: "right" "up" : 1 : 3 : 0.03
+T: "right" "up" : 1 : 1 : 0.24
+T: "right" "down" : 1 : 7 : 0.36
+T: "right" "down" : 1 : 4 : 0.06
+T: "right" "down" : 1 : 5 : 0.18
+T: "right" "down" : 1 : 11 : 0.06
+T: "right" "down" : 1 : 8 : 0.01
+T: "right" "down" : 1 : 9 : 0.03
+T: "right" "down" : 1 : 3 : 0.18
+T: "right" "down" : 1 : 0 : 0.03
+T: "right" "down" : 1 : 1 : 0.09
+T: "right" "left" : 1 : 4 : 0.36
+T: "right" "left" : 1 : 7 : 0.06
+T: "right" "left" : 1 : 5 : 0.18
+T: "right" "left" : 1 : 8 : 0.06
+T: "right" "left" : 1 : 11 : 0.01
+T: "right" "left" : 1 : 9 : 0.03
+T: "right" "left" : 1 : 0 : 0.18
+T: "right" "left" : 1 : 3 : 0.03
+T: "right" "left" : 1 : 1 : 0.09
+T: "right" "right" : 1 : 7 : 0.06
+T: "right" "right" : 1 : 4 : 0.06
+T: "right" "right" : 1 : 5 : 0.48
+T: "right" "right" : 1 : 11 : 0.01
+T: "right" "right" : 1 : 8 : 0.01
+T: "right" "right" : 1 : 9 : 0.08
+T: "right" "right" : 1 : 3 : 0.03
+T: "right" "right" : 1 : 0 : 0.03
+T: "right" "right" : 1 : 1 : 0.24
+T: "right" "stay" : 1 : 5 : 0.6
+T: "right" "stay" : 1 : 9 : 0.1
+T: "right" "stay" : 1 : 1 : 0.3
+T: "stay" "up" : 1 : 0 : 0.1
+T: "stay" "up" : 1 : 3 : 0.1
+T: "stay" "up" : 1 : 1 : 0.8
+T: "stay" "down" : 1 : 3 : 0.6
+T: "stay" "down" : 1 : 0 : 0.1
+T: "stay" "down" : 1 : 1 : 0.3
+T: "stay" "left" : 1 : 0 : 0.6
+T: "stay" "left" : 1 : 3 : 0.1
+T: "stay" "left" : 1 : 1 : 0.3
+T: "stay" "right" : 1 : 3 : 0.1
+T: "stay" "right" : 1 : 0 : 0.1
+T: "stay" "right" : 1 : 1 : 0.8
+T: "stay" "stay" : 1 : 1 : 1.0
+T: "up" "up" : 2 : 4 : 0.06
+T: "up" "up" : 2 : 7 : 0.01
+T: "up" "up" : 2 : 6 : 0.03
+T: "up" "up" : 2 : 8 : 0.06
+T: "up" "up" : 2 : 11 : 0.01
+T: "up" "up" : 2 : 10 : 0.03
+T: "up" "up" : 2 : 0 : 0.48
+T: "up" "up" : 2 : 3 : 0.08
+T: "up" "up" : 2 : 2 : 0.24
+T: "up" "down" : 2 : 7 : 0.01
+T: "up" "down" : 2 : 4 : 0.01
+T: "up" "down" : 2 : 6 : 0.08
+T: "up" "down" : 2 : 11 : 0.01
+T: "up" "down" : 2 : 8 : 0.01
+T: "up" "down" : 2 : 10 : 0.08
+T: "up" "down" : 2 : 3 : 0.08
+T: "up" "down" : 2 : 0 : 0.08
+T: "up" "down" : 2 : 2 : 0.64
+T: "up" "left" : 2 : 4 : 0.01
+T: "up" "left" : 2 : 7 : 0.01
+T: "up" "left" : 2 : 6 : 0.08
+T: "up" "left" : 2 : 8 : 0.01
+T: "up" "left" : 2 : 11 : 0.01
+T: "up" "left" : 2 : 10 : 0.08
+T: "up" "left" : 2 : 0 : 0.08
+T: "up" "left" : 2 : 3 : 0.08
+T: "up" "left" : 2 : 2 : 0.64
+T: "up" "right" : 2 : 7 : 0.06
+T: "up" "right" : 2 : 4 : 0.01
+T: "up" "right" : 2 : 6 : 0.03
+T: "up" "right" : 2 : 11 : 0.06
+T: "up" "right" : 2 : 8 : 0.01
+T: "up" "right" : 2 : 10 : 0.03
+T: "up" "right" : 2 : 3 : 0.48
+T: "up" "right" : 2 : 0 : 0.08
+T: "up" "right" : 2 : 2 : 0.24
+T: "up" "stay" : 2 : 6 : 0.1
+T: "up" "stay" : 2 : 10 : 0.1
+T: "up" "stay" : 2 : 2 : 0.8
+T: "down" "up" : 2 : 8 : 0.36
+T: "down" "up" : 2 : 11 : 0.06
+T: "down" "up" : 2 : 10 : 0.18
+T: "down" "up" : 2 : 4 : 0.06
+T: "down" "up" : 2 : 7 : 0.01
+T: "down" "up" : 2 : 6 : 0.03
+T: "down" "up" : 2 : 0 : 0.18
+T: "down" "up" : 2 : 3 : 0.03
+T: "down" "up" : 2 : 2 : 0.09
+T: "down" "down" : 2 : 11 : 0.06
+T: "down" "down" : 2 : 8 : 0.06
+T: "down" "down" : 2 : 10 : 0.48
+T: "down" "down" : 2 : 7 : 0.01
+T: "down" "down" : 2 : 4 : 0.01
+T: "down" "down" : 2 : 6 : 0.08
+T: "down" "down" : 2 : 3 : 0.03
+T: "down" "down" : 2 : 0 : 0.03
+T: "down" "down" : 2 : 2 : 0.24
+T: "down" "left" : 2 : 8 : 0.06
+T: "down" "left" : 2 : 11 : 0.06
+T: "down" "left" : 2 : 10 : 0.48
+T: "down" "left" : 2 : 4 : 0.01
+T: "down" "left" : 2 : 7 : 0.01
+T: "down" "left" : 2 : 6 : 0.08
+T: "down" "left" : 2 : 0 : 0.03
+T: "down" "left" : 2 : 3 : 0.03
+T: "down" "left" : 2 : 2 : 0.24
+T: "down" "right" : 2 : 11 : 0.36
+T: "down" "right" : 2 : 8 : 0.06
+T: "down" "right" : 2 : 10 : 0.18
+T: "down" "right" : 2 : 7 : 0.06
+T: "down" "right" : 2 : 4 : 0.01
+T: "down" "right" : 2 : 6 : 0.03
+T: "down" "right" : 2 : 3 : 0.18
+T: "down" "right" : 2 : 0 : 0.03
+T: "down" "right" : 2 : 2 : 0.09
+T: "down" "stay" : 2 : 10 : 0.6
+T: "down" "stay" : 2 : 6 : 0.1
+T: "down" "stay" : 2 : 2 : 0.3
+T: "left" "up" : 2 : 8 : 0.06
+T: "left" "up" : 2 : 11 : 0.01
+T: "left" "up" : 2 : 10 : 0.03
+T: "left" "up" : 2 : 4 : 0.06
+T: "left" "up" : 2 : 7 : 0.01
+T: "left" "up" : 2 : 6 : 0.03
+T: "left" "up" : 2 : 0 : 0.48
+T: "left" "up" : 2 : 3 : 0.08
+T: "left" "up" : 2 : 2 : 0.24
+T: "left" "down" : 2 : 11 : 0.01
+T: "left" "down" : 2 : 8 : 0.01
+T: "left" "down" : 2 : 10 : 0.08
+T: "left" "down" : 2 : 7 : 0.01
+T: "left" "down" : 2 : 4 : 0.01
+T: "left" "down" : 2 : 6 : 0.08
+T: "left" "down" : 2 : 3 : 0.08
+T: "left" "down" : 2 : 0 : 0.08
+T: "left" "down" : 2 : 2 : 0.64
+T: "left" "left" : 2 : 8 : 0.01
+T: "left" "left" : 2 : 11 : 0.01
+T: "left" "left" : 2 : 10 : 0.08
+T: "left" "left" : 2 : 4 : 0.01
+T: "left" "left" : 2 : 7 : 0.01
+T: "left" "left" : 2 : 6 : 0.08
+T: "left" "left" : 2 : 0 : 0.08
+T: "left" "left" : 2 : 3 : 0.08
+T: "left" "left" : 2 : 2 : 0.64
+T: "left" "right" : 2 : 11 : 0.06
+T: "left" "right" : 2 : 8 : 0.01
+T: "left" "right" : 2 : 10 : 0.03
+T: "left" "right" : 2 : 7 : 0.06
+T: "left" "right" : 2 : 4 : 0.01
+T: "left" "right" : 2 : 6 : 0.03
+T: "left" "right" : 2 : 3 : 0.48
+T: "left" "right" : 2 : 0 : 0.08
+T: "left" "right" : 2 : 2 : 0.24
+T: "left" "stay" : 2 : 10 : 0.1
+T: "left" "stay" : 2 : 6 : 0.1
+T: "left" "stay" : 2 : 2 : 0.8
+T: "right" "up" : 2 : 4 : 0.36
+T: "right" "up" : 2 : 7 : 0.06
+T: "right" "up" : 2 : 6 : 0.18
+T: "right" "up" : 2 : 8 : 0.06
+T: "right" "up" : 2 : 11 : 0.01
+T: "right" "up" : 2 : 10 : 0.03
+T: "right" "up" : 2 : 0 : 0.18
+T: "right" "up" : 2 : 3 : 0.03
+T: "right" "up" : 2 : 2 : 0.09
+T: "right" "down" : 2 : 7 : 0.06
+T: "right" "down" : 2 : 4 : 0.06
+T: "right" "down" : 2 : 6 : 0.48
+T: "right" "down" : 2 : 11 : 0.01
+T: "right" "down" : 2 : 8 : 0.01
+T: "right" "down" : 2 : 10 : 0.08
+T: "right" "down" : 2 : 3 : 0.03
+T: "right" "down" : 2 : 0 : 0.03
+T: "right" "down" : 2 : 2 : 0.24
+T: "right" "left" : 2 : 4 : 0.06
+T: "right" "left" : 2 : 7 : 0.06
+T: "right" "left" : 2 : 6 : 0.48
+T: "right" "left" : 2 : 8 : 0.01
+T: "right" "left" : 2 : 11 : 0.01
+T: "right" "left" : 2 : 10 : 0.08
+T: "right" "left" : 2 : 0 : 0.03
+T: "right" "left" : 2 : 3 : 0.03
+T: "right" "left" : 2 : 2 : 0.24
+T: "right" "right" : 2 : 7 : 0.36
+T: "right" "right" : 2 : 4 : 0.06
+T: "right" "right" : 2 : 6 : 0.18
+T: "right" "right" : 2 : 11 : 0.06
+T: "right" "right" : 2 : 8 : 0.01
+T: "right" "right" : 2 : 10 : 0.03
+T: "right" "right" : 2 : 3 : 0.18
+T: "right" "right" : 2 : 0 : 0.03
+T: "right" "right" : 2 : 2 : 0.09
+T: "right" "stay" : 2 : 6 : 0.6
+T: "right" "stay" : 2 : 10 : 0.1
+T: "right" "stay" : 2 : 2 : 0.3
+T: "stay" "up" : 2 : 0 : 0.6
+T: "stay" "up" : 2 : 3 : 0.1
+T: "stay" "up" : 2 : 2 : 0.3
+T: "stay" "down" : 2 : 3 : 0.1
+T: "stay" "down" : 2 : 0 : 0.1
+T: "stay" "down" : 2 : 2 : 0.8
+T: "stay" "left" : 2 : 0 : 0.1
+T: "stay" "left" : 2 : 3 : 0.1
+T: "stay" "left" : 2 : 2 : 0.8
+T: "stay" "right" : 2 : 3 : 0.6
+T: "stay" "right" : 2 : 0 : 0.1
+T: "stay" "right" : 2 : 2 : 0.3
+T: "stay" "stay" : 2 : 2 : 1.0
+T: "up" "up" : 3 : 5 : 0.06
+T: "up" "up" : 3 : 6 : 0.01
+T: "up" "up" : 3 : 7 : 0.03
+T: "up" "up" : 3 : 9 : 0.06
+T: "up" "up" : 3 : 10 : 0.01
+T: "up" "up" : 3 : 11 : 0.03
+T: "up" "up" : 3 : 1 : 0.48
+T: "up" "up" : 3 : 2 : 0.08
+T: "up" "up" : 3 : 3 : 0.24
+T: "up" "down" : 3 : 6 : 0.01
+T: "up" "down" : 3 : 5 : 0.01
+T: "up" "down" : 3 : 7 : 0.08
+T: "up" "down" : 3 : 10 : 0.01
+T: "up" "down" : 3 : 9 : 0.01
+T: "up" "down" : 3 : 11 : 0.08
+T: "up" "down" : 3 : 2 : 0.08
+T: "up" "down" : 3 : 1 : 0.08
+T: "up" "down" : 3 : 3 : 0.64
+T: "up" "left" : 3 : 6 : 0.06
+T: "up" "left" : 3 : 5 : 0.01
+T: "up" "left" : 3 : 7 : 0.03
+T: "up" "left" : 3 : 10 : 0.06
+T: "up" "left" : 3 : 9 : 0.01
+T: "up" "left" : 3 : 11 : 0.03
+T: "up" "left" : 3 : 2 : 0.48
+T: "up" "left" : 3 : 1 : 0.08
+T: "up" "left" : 3 : 3 : 0.24
+T: "up" "right" : 3 : 5 : 0.01
+T: "up" "right" : 3 : 6 : 0.01
+T: "up" "right" : 3 : 7 : 0.08
+T: "up" "right" : 3 : 9 : 0.01
+T: "up" "right" : 3 : 10 : 0.01
+T: "up" "right" : 3 : 11 : 0.08
+T: "up" "right" : 3 : 1 : 0.08
+T: "up" "right" : 3 : 2 : 0.08
+T: "up" "right" : 3 : 3 : 0.64
+T: "up" "stay" : 3 : 7 : 0.1
+T: "up" "stay" : 3 : 11 : 0.1
+T: "up" "stay" : 3 : 3 : 0.8
+T: "down" "up" : 3 : 9 : 0.36
+T: "down" "up" : 3 : 10 : 0.06
+T: "down" "up" : 3 : 11 : 0.18
+T: "down" "up" : 3 : 5 : 0.06
+T: "down" "up" : 3 : 6 : 0.01
+T: "down" "up" : 3 : 7 : 0.03
+T: "down" "up" : 3 : 1 : 0.18
+T: "down" "up" : 3 : 2 : 0.03
+T: "down" "up" : 3 : 3 : 0.09
+T: "down" "down" : 3 : 10 : 0.06
+T: "down" "down" : 3 : 9 : 0.06
+T: "down" "down" : 3 : 11 : 0.48
+T: "down" "down" : 3 : 6 : 0.01
+T: "down" "down" : 3 : 5 : 0.01
+T: "down" "down" : 3 : 7 : 0.08
+T: "down" "down" : 3 : 2 : 0.03
+T: "down" "down" : 3 : 1 : 0.03
+T: "down" "down" : 3 : 3 : 0.24
+T: "down" "left" : 3 : 10 : 0.36
+T: "down" "left" : 3 : 9 : 0.06
+T: "down" "left" : 3 : 11 : 0.18
+T: "down" "left" : 3 : 6 : 0.06
+T: "down" "left" : 3 : 5 : 0.01
+T: "down" "left" : 3 : 7 : 0.03
+T: "down" "left" : 3 : 2 : 0.18
+T: "down" "left" : 3 : 1 : 0.03
+T: "down" "left" : 3 : 3 : 0.09
+T: "down" "right" : 3 : 9 : 0.06
+T: "down" "right" : 3 : 10 : 0.06
+T: "down" "right" : 3 : 11 : 0.48
+T: "down" "right" : 3 : 5 : 0.01
+T: "down" "right" : 3 : 6 : 0.01
+T: "down" "right" : 3 : 7 : 0.08
+T: "down" "right" : 3 : 1 : 0.03
+T: "down" "right" : 3 : 2 : 0.03
+T: "down" "right" : 3 : 3 : 0.24
+T: "down" "stay" : 3 : 11 : 0.6
+T: "down" "stay" : 3 : 7 : 0.1
+T: "down" "stay" : 3 : 3 : 0.3
+T: "left" "up" : 3 : 9 : 0.06
+T: "left" "up" : 3 : 10 : 0.01
+T: "left" "up" : 3 : 11 : 0.03
+T: "left" "up" : 3 : 5 : 0.06
+T: "left" "up" : 3 : 6 : 0.01
+T: "left" "up" : 3 : 7 : 0.03
+T: "left" "up" : 3 : 1 : 0.48
+T: "left" "up" : 3 : 2 : 0.08
+T: "left" "up" : 3 : 3 : 0.24
+T: "left" "down" : 3 : 10 : 0.01
+T: "left" "down" : 3 : 9 : 0.01
+T: "left" "down" : 3 : 11 : 0.08
+T: "left" "down" : 3 : 6 : 0.01
+T: "left" "down" : 3 : 5 : 0.01
+T: "left" "down" : 3 : 7 : 0.08
+T: "left" "down" : 3 : 2 : 0.08
+T: "left" "down" : 3 : 1 : 0.08
+T: "left" "down" : 3 : 3 : 0.64
+T: "left" "left" : 3 : 10 : 0.06
+T: "left" "left" : 3 : 9 : 0.01
+T: "left" "left" : 3 : 11 : 0.03
+T: "left" "left" : 3 : 6 : 0.06
+T: "left" "left" : 3 : 5 : 0.01
+T: "left" "left" : 3 : 7 : 0.03
+T: "left" "left" : 3 : 2 : 0.48
+T: "left" "left" : 3 : 1 : 0.08
+T: "left" "left" : 3 : 3 : 0.24
+T: "left" "right" : 3 : 9 : 0.01
+T: "left" "right" : 3 : 10 : 0.01
+T: "left" "right" : 3 : 11 : 0.08
+T: "left" "right" : 3 : 5 : 0.01
+T: "left" "right" : 3 : 6 : 0.01
+T: "left" "right" : 3 : 7 : 0.08
+T: "left" "right" : 3 : 1 : 0.08
+T: "left" "right" : 3 : 2 : 0.08
+T: "left" "right" : 3 : 3 : 0.64
+T: "left" "stay" : 3 : 11 : 0.1
+T: "left" "stay" : 3 : 7 : 0.1
+T: "left" "stay" : 3 : 3 : 0.8
+T: "right" "up" : 3 : 5 : 0.36
+T: "right" "up" : 3 : 6 : 0.06
+T: "right" "up" : 3 : 7 : 0.18
+T: "right" "up" : 3 : 9 : 0.06
+T: "right" "up" : 3 : 10 : 0.01
+T: "right" "up" : 3 : 11 : 0.03
+T: "right" "up" : 3 : 1 : 0.18
+T: "right" "up" : 3 : 2 : 0.03
+T: "right" "up" : 3 : 3 : 0.09
+T: "right" "down" : 3 : 6 : 0.06
+T: "right" "down" : 3 : 5 : 0.06
+T: "right" "down" : 3 : 7 : 0.48
+T: "right" "down" : 3 : 10 : 0.01
+T: "right" "down" : 3 : 9 : 0.01
+T: "right" "down" : 3 : 11 : 0.08
+T: "right" "down" : 3 : 2 : 0.03
+T: "right" "down" : 3 : 1 : 0.03
+T: "right" "down" : 3 : 3 : 0.24
+T: "right" "left" : 3 : 6 : 0.36
+T: "right" "left" : 3 : 5 : 0.06
+T: "right" "left" : 3 : 7 : 0.18
+T: "right" "left" : 3 : 10 : 0.06
+T: "right" "left" : 3 : 9 : 0.01
+T: "right" "left" : 3 : 11 : 0.03
+T: "right" "left" : 3 : 2 : 0.18
+T: "right" "left" : 3 : 1 : 0.03
+T: "right" "left" : 3 : 3 : 0.09
+T: "right" "right" : 3 : 5 : 0.06
+T: "right" "right" : 3 : 6 : 0.06
+T: "right" "right" : 3 : 7 : 0.48
+T: "right" "right" : 3 : 9 : 0.01
+T: "right" "right" : 3 : 10 : 0.01
+T: "right" "right" : 3 : 11 : 0.08
+T: "right" "right" : 3 : 1 : 0.03
+T: "right" "right" : 3 : 2 : 0.03
+T: "right" "right" : 3 : 3 : 0.24
+T: "right" "stay" : 3 : 7 : 0.6
+T: "right" "stay" : 3 : 11 : 0.1
+T: "right" "stay" : 3 : 3 : 0.3
+T: "stay" "up" : 3 : 1 : 0.6
+T: "stay" "up" : 3 : 2 : 0.1
+T: "stay" "up" : 3 : 3 : 0.3
+T: "stay" "down" : 3 : 2 : 0.1
+T: "stay" "down" : 3 : 1 : 0.1
+T: "stay" "down" : 3 : 3 : 0.8
+T: "stay" "left" : 3 : 2 : 0.6
+T: "stay" "left" : 3 : 1 : 0.1
+T: "stay" "left" : 3 : 3 : 0.3
+T: "stay" "right" : 3 : 1 : 0.1
+T: "stay" "right" : 3 : 2 : 0.1
+T: "stay" "right" : 3 : 3 : 0.8
+T: "stay" "stay" : 3 : 3 : 1.0
+T: "up" "up" : 4 : 1 : 0.01
+T: "up" "up" : 4 : 2 : 0.01
+T: "up" "up" : 4 : 0 : 0.08
+T: "up" "up" : 4 : 13 : 0.01
+T: "up" "up" : 4 : 14 : 0.01
+T: "up" "up" : 4 : 12 : 0.08
+T: "up" "up" : 4 : 5 : 0.08
+T: "up" "up" : 4 : 6 : 0.08
+T: "up" "up" : 4 : 4 : 0.64
+T: "up" "down" : 4 : 2 : 0.06
+T: "up" "down" : 4 : 1 : 0.01
+T: "up" "down" : 4 : 0 : 0.03
+T: "up" "down" : 4 : 14 : 0.06
+T: "up" "down" : 4 : 13 : 0.01
+T: "up" "down" : 4 : 12 : 0.03
+T: "up" "down" : 4 : 6 : 0.48
+T: "up" "down" : 4 : 5 : 0.08
+T: "up" "down" : 4 : 4 : 0.24
+T: "up" "left" : 4 : 2 : 0.01
+T: "up" "left" : 4 : 1 : 0.01
+T: "up" "left" : 4 : 0 : 0.08
+T: "up" "left" : 4 : 14 : 0.01
+T: "up" "left" : 4 : 13 : 0.01
+T: "up" "left" : 4 : 12 : 0.08
+T: "up" "left" : 4 : 6 : 0.08
+T: "up" "left" : 4 : 5 : 0.08
+T: "up" "left" : 4 : 4 : 0.64
+T: "up" "right" : 4 : 1 : 0.06
+T: "up" "right" : 4 : 2 : 0.01
+T: "up" "right" : 4 : 0 : 0.03
+T: "up" "right" : 4 : 13 : 0.06
+T: "up" "right" : 4 : 14 : 0.01
+T: "up" "right" : 4 : 12 : 0.03
+T: "up" "right" : 4 : 5 : 0.48
+T: "up" "right" : 4 : 6 : 0.08
+T: "up" "right" : 4 : 4 : 0.24
+T: "up" "stay" : 4 : 0 : 0.1
+T: "up" "stay" : 4 : 12 : 0.1
+T: "up" "stay" : 4 : 4 : 0.8
+T: "down" "up" : 4 : 13 : 0.06
+T: "down" "up" : 4 : 14 : 0.06
+T: "down" "up" : 4 : 12 : 0.48
+T: "down" "up" : 4 : 1 : 0.01
+T: "down" "up" : 4 : 2 : 0.01
+T: "down" "up" : 4 : 0 : 0.08
+T: "down" "up" : 4 : 5 : 0.03
+T: "down" "up" : 4 : 6 : 0.03
+T: "down" "up" : 4 : 4 : 0.24
+T: "down" "down" : 4 : 14 : 0.36
+T: "down" "down" : 4 : 13 : 0.06
+T: "down" "down" : 4 : 12 : 0.18
+T: "down" "down" : 4 : 2 : 0.06
+T: "down" "down" : 4 : 1 : 0.01
+T: "down" "down" : 4 : 0 : 0.03
+T: "down" "down" : 4 : 6 : 0.18
+T: "down" "down" : 4 : 5 : 0.03
+T: "down" "down" : 4 : 4 : 0.09
+T: "down" "left" : 4 : 14 : 0.06
+T: "down" "left" : 4 : 13 : 0.06
+T: "down" "left" : 4 : 12 : 0.48
+T: "down" "left" : 4 : 2 : 0.01
+T: "down" "left" : 4 : 1 : 0.01
+T: "down" "left" : 4 : 0 : 0.08
+T: "down" "left" : 4 : 6 : 0.03
+T: "down" "left" : 4 : 5 : 0.03
+T: "down" "left" : 4 : 4 : 0.24
+T: "down" "right" : 4 : 13 : 0.36
+T: "down" "right" : 4 : 14 : 0.06
+T: "down" "right" : 4 : 12 : 0.18
+T: "down" "right" : 4 : 1 : 0.06
+T: "down" "right" : 4 : 2 : 0.01
+T: "down" "right" : 4 : 0 : 0.03
+T: "down" "right" : 4 : 5 : 0.18
+T: "down" "right" : 4 : 6 : 0.03
+T: "down" "right" : 4 : 4 : 0.09
+T: "down" "stay" : 4 : 12 : 0.6
+T: "down" "stay" : 4 : 0 : 0.1
+T: "down" "stay" : 4 : 4 : 0.3
+T: "left" "up" : 4 : 1 : 0.06
+T: "left" "up" : 4 : 2 : 0.06
+T: "left" "up" : 4 : 0 : 0.48
+T: "left" "up" : 4 : 13 : 0.01
+T: "left" "up" : 4 : 14 : 0.01
+T: "left" "up" : 4 : 12 : 0.08
+T: "left" "up" : 4 : 5 : 0.03
+T: "left" "up" : 4 : 6 : 0.03
+T: "left" "up" : 4 : 4 : 0.24
+T: "left" "down" : 4 : 2 : 0.36
+T: "left" "down" : 4 : 1 : 0.06
+T: "left" "down" : 4 : 0 : 0.18
+T: "left" "down" : 4 : 14 : 0.06
+T: "left" "down" : 4 : 13 : 0.01
+T: "left" "down" : 4 : 12 : 0.03
+T: "left" "down" : 4 : 6 : 0.18
+T: "left" "down" : 4 : 5 : 0.03
+T: "left" "down" : 4 : 4 : 0.09
+T: "left" "left" : 4 : 2 : 0.06
+T: "left" "left" : 4 : 1 : 0.06
+T: "left" "left" : 4 : 0 : 0.48
+T: "left" "left" : 4 : 14 : 0.01
+T: "left" "left" : 4 : 13 : 0.01
+T: "left" "left" : 4 : 12 : 0.08
+T: "left" "left" : 4 : 6 : 0.03
+T: "left" "left" : 4 : 5 : 0.03
+T: "left" "left" : 4 : 4 : 0.24
+T: "left" "right" : 4 : 1 : 0.36
+T: "left" "right" : 4 : 2 : 0.06
+T: "left" "right" : 4 : 0 : 0.18
+T: "left" "right" : 4 : 13 : 0.06
+T: "left" "right" : 4 : 14 : 0.01
+T: "left" "right" : 4 : 12 : 0.03
+T: "left" "right" : 4 : 5 : 0.18
+T: "left" "right" : 4 : 6 : 0.03
+T: "left" "right" : 4 : 4 : 0.09
+T: "left" "stay" : 4 : 0 : 0.6
+T: "left" "stay" : 4 : 12 : 0.1
+T: "left" "stay" : 4 : 4 : 0.3
+T: "right" "up" : 4 : 13 : 0.01
+T: "right" "up" : 4 : 14 : 0.01
+T: "right" "up" : 4 : 12 : 0.08
+T: "right" "up" : 4 : 1 : 0.01
+T: "right" "up" : 4 : 2 : 0.01
+T: "right" "up" : 4 : 0 : 0.08
+T: "right" "up" : 4 : 5 : 0.08
+T: "right" "up" : 4 : 6 : 0.08
+T: "right" "up" : 4 : 4 : 0.64
+T: "right" "down" : 4 : 14 : 0.06
+T: "right" "down" : 4 : 13 : 0.01
+T: "right" "down" : 4 : 12 : 0.03
+T: "right" "down" : 4 : 2 : 0.06
+T: "right" "down" : 4 : 1 : 0.01
+T: "right" "down" : 4 : 0 : 0.03
+T: "right" "down" : 4 : 6 : 0.48
+T: "right" "down" : 4 : 5 : 0.08
+T: "right" "down" : 4 : 4 : 0.24
+T: "right" "left" : 4 : 14 : 0.01
+T: "right" "left" : 4 : 13 : 0.01
+T: "right" "left" : 4 : 12 : 0.08
+T: "right" "left" : 4 : 2 : 0.01
+T: "right" "left" : 4 : 1 : 0.01
+T: "right" "left" : 4 : 0 : 0.08
+T: "right" "left" : 4 : 6 : 0.08
+T: "right" "left" : 4 : 5 : 0.08
+T: "right" "left" : 4 : 4 : 0.64
+T: "right" "right" : 4 : 13 : 0.06
+T: "right" "right" : 4 : 14 : 0.01
+T: "right" "right" : 4 : 12 : 0.03
+T: "right" "right" : 4 : 1 : 0.06
+T: "right" "right" : 4 : 2 : 0.01
+T: "right" "right" : 4 : 0 : 0.03
+T: "right" "right" : 4 : 5 : 0.48
+T: "right" "right" : 4 : 6 : 0.08
+T: "right" "right" : 4 : 4 : 0.24
+T: "right" "stay" : 4 : 12 : 0.1
+T: "right" "stay" : 4 : 0 : 0.1
+T: "right" "stay" : 4 : 4 : 0.8
+T: "stay" "up" : 4 : 5 : 0.1
+T: "stay" "up" : 4 : 6 : 0.1
+T: "stay" "up" : 4 : 4 : 0.8
+T: "stay" "down" : 4 : 6 : 0.6
+T: "stay" "down" : 4 : 5 : 0.1
+T: "stay" "down" : 4 : 4 : 0.3
+T: "stay" "left" : 4 : 6 : 0.1
+T: "stay" "left" : 4 : 5 : 0.1
+T: "stay" "left" : 4 : 4 : 0.8
+T: "stay" "right" : 4 : 5 : 0.6
+T: "stay" "right" : 4 : 6 : 0.1
+T: "stay" "right" : 4 : 4 : 0.3
+T: "stay" "stay" : 4 : 4 : 1.0
+T: "up" "up" : 5 : 0 : 0.01
+T: "up" "up" : 5 : 3 : 0.01
+T: "up" "up" : 5 : 1 : 0.08
+T: "up" "up" : 5 : 12 : 0.01
+T: "up" "up" : 5 : 15 : 0.01
+T: "up" "up" : 5 : 13 : 0.08
+T: "up" "up" : 5 : 4 : 0.08
+T: "up" "up" : 5 : 7 : 0.08
+T: "up" "up" : 5 : 5 : 0.64
+T: "up" "down" : 5 : 3 : 0.06
+T: "up" "down" : 5 : 0 : 0.01
+T: "up" "down" : 5 : 1 : 0.03
+T: "up" "down" : 5 : 15 : 0.06
+T: "up" "down" : 5 : 12 : 0.01
+T: "up" "down" : 5 : 13 : 0.03
+T: "up" "down" : 5 : 7 : 0.48
+T: "up" "down" : 5 : 4 : 0.08
+T: "up" "down" : 5 : 5 : 0.24
+T: "up" "left" : 5 : 0 : 0.06
+T: "up" "left" : 5 : 3 : 0.01
+T: "up" "left" : 5 : 1 : 0.03
+T: "up" "left" : 5 : 12 : 0.06
+T: "up" "left" : 5 : 15 : 0.01
+T: "up" "left" : 5 : 13 : 0.03
+T: "up" "left" : 5 : 4 : 0.48
+T: "up" "left" : 5 : 7 : 0.08
+T: "up" "left" : 5 : 5 : 0.24
+T: "up" "right" : 5 : 3 : 0.01
+T: "up" "right" : 5 : 0 : 0.01
+T: "up" "right" : 5 : 1 : 0.08
+T: "up" "right" : 5 : 15 : 0.01
+T: "up" "right" : 5 : 12 : 0.01
+T: "up" "right" : 5 : 13 : 0.08
+T: "up" "right" : 5 : 7 : 0.08
+T: "up" "right" : 5 : 4 : 0.08
+T: "up" "right" : 5 : 5 : 0.64
+T: "up" "stay" : 5 : 1 : 0.1
+T: "up" "stay" : 5 : 13 : 0.1
+T: "up" "stay" : 5 : 5 : 0.8
+T: "down" "up" : 5 : 12 : 0.06
+T: "down" "up" : 5 : 15 : 0.06
+T: "down" "up" : 5 : 13 : 0.48
+T: "down" "up" : 5 : 0 : 0.01
+T: "down" "up" : 5 : 3 : 0.01
+T: "down" "up" : 5 : 1 : 0.08
+T: "down" "up" : 5 : 4 : 0.03
+T: "down" "up" : 5 : 7 : 0.03
+T: "down" "up" : 5 : 5 : 0.24
+T: "down" "down" : 5 : 15 : 0.36
+T: "down" "down" : 5 : 12 : 0.06
+T: "down" "down" : 5 : 13 : 0.18
+T: "down" "down" : 5 : 3 : 0.06
+T: "down" "down" : 5 : 0 : 0.01
+T: "down" "down" : 5 : 1 : 0.03
+T: "down" "down" : 5 : 7 : 0.18
+T: "down" "down" : 5 : 4 : 0.03
+T: "down" "down" : 5 : 5 : 0.09
+T: "down" "left" : 5 : 12 : 0.36
+T: "down" "left" : 5 : 15 : 0.06
+T: "down" "left" : 5 : 13 : 0.18
+T: "down" "left" : 5 : 0 : 0.06
+T: "down" "left" : 5 : 3 : 0.01
+T: "down" "left" : 5 : 1 : 0.03
+T: "down" "left" : 5 : 4 : 0.18
+T: "down" "left" : 5 : 7 : 0.03
+T: "down" "left" : 5 : 5 : 0.09
+T: "down" "right" : 5 : 15 : 0.06
+T: "down" "right" : 5 : 12 : 0.06
+T: "down" "right" : 5 : 13 : 0.48
+T: "down" "right" : 5 : 3 : 0.01
+T: "down" "right" : 5 : 0 : 0.01
+T: "down" "right" : 5 : 1 : 0.08
+T: "down" "right" : 5 : 7 : 0.03
+T: "down" "right" : 5 : 4 : 0.03
+T: "down" "right" : 5 : 5 : 0.24
+T: "down" "stay" : 5 : 13 : 0.6
+T: "down" "stay" : 5 : 1 : 0.1
+T: "down" "stay" : 5 : 5 : 0.3
+T: "left" "up" : 5 : 0 : 0.06
+T: "left" "up" : 5 : 3 : 0.06
+T: "left" "up" : 5 : 1 : 0.48
+T: "left" "up" : 5 : 12 : 0.01
+T: "left" "up" : 5 : 15 : 0.01
+T: "left" "up" : 5 : 13 : 0.08
+T: "left" "up" : 5 : 4 : 0.03
+T: "left" "up" : 5 : 7 : 0.03
+T: "left" "up" : 5 : 5 : 0.24
+T: "left" "down" : 5 : 3 : 0.36
+T: "left" "down" : 5 : 0 : 0.06
+T: "left" "down" : 5 : 1 : 0.18
+T: "left" "down" : 5 : 15 : 0.06
+T: "left" "down" : 5 : 12 : 0.01
+T: "left" "down" : 5 : 13 : 0.03
+T: "left" "down" : 5 : 7 : 0.18
+T: "left" "down" : 5 : 4 : 0.03
+T: "left" "down" : 5 : 5 : 0.09
+T: "left" "left" : 5 : 0 : 0.36
+T: "left" "left" : 5 : 3 : 0.06
+T: "left" "left" : 5 : 1 : 0.18
+T: "left" "left" : 5 : 12 : 0.06
+T: "left" "left" : 5 : 15 : 0.01
+T: "left" "left" : 5 : 13 : 0.03
+T: "left" "left" : 5 : 4 : 0.18
+T: "left" "left" : 5 : 7 : 0.03
+T: "left" "left" : 5 : 5 : 0.09
+T: "left" "right" : 5 : 3 : 0.06
+T: "left" "right" : 5 : 0 : 0.06
+T: "left" "right" : 5 : 1 : 0.48
+T: "left" "right" : 5 : 15 : 0.01
+T: "left" "right" : 5 : 12 : 0.01
+T: "left" "right" : 5 : 13 : 0.08
+T: "left" "right" : 5 : 7 : 0.03
+T: "left" "right" : 5 : 4 : 0.03
+T: "left" "right" : 5 : 5 : 0.24
+T: "left" "stay" : 5 : 1 : 0.6
+T: "left" "stay" : 5 : 13 : 0.1
+T: "left" "stay" : 5 : 5 : 0.3
+T: "right" "up" : 5 : 12 : 0.01
+T: "right" "up" : 5 : 15 : 0.01
+T: "right" "up" : 5 : 13 : 0.08
+T: "right" "up" : 5 : 0 : 0.01
+T: "right" "up" : 5 : 3 : 0.01
+T: "right" "up" : 5 : 1 : 0.08
+T: "right" "up" : 5 : 4 : 0.08
+T: "right" "up" : 5 : 7 : 0.08
+T: "right" "up" : 5 : 5 : 0.64
+T: "right" "down" : 5 : 15 : 0.06
+T: "right" "down" : 5 : 12 : 0.01
+T: "right" "down" : 5 : 13 : 0.03
+T: "right" "down" : 5 : 3 : 0.06
+T: "right" "down" : 5 : 0 : 0.01
+T: "right" "down" : 5 : 1 : 0.03
+T: "right" "down" : 5 : 7 : 0.48
+T: "right" "down" : 5 : 4 : 0.08
+T: "right" "down" : 5 : 5 : 0.24
+T: "right" "left" : 5 : 12 : 0.06
+T: "right" "left" : 5 : 15 : 0.01
+T: "right" "left" : 5 : 13 : 0.03
+T: "right" "left" : 5 : 0 : 0.06
+T: "right" "left" : 5 : 3 : 0.01
+T: "right" "left" : 5 : 1 : 0.03
+T: "right" "left" : 5 : 4 : 0.48
+T: "right" "left" : 5 : 7 : 0.08
+T: "right" "left" : 5 : 5 : 0.24
+T: "right" "right" : 5 : 15 : 0.01
+T: "right" "right" : 5 : 12 : 0.01
+T: "right" "right" : 5 : 13 : 0.08
+T: "right" "right" : 5 : 3 : 0.01
+T: "right" "right" : 5 : 0 : 0.01
+T: "right" "right" : 5 : 1 : 0.08
+T: "right" "right" : 5 : 7 : 0.08
+T: "right" "right" : 5 : 4 : 0.08
+T: "right" "right" : 5 : 5 : 0.64
+T: "right" "stay" : 5 : 13 : 0.1
+T: "right" "stay" : 5 : 1 : 0.1
+T: "right" "stay" : 5 : 5 : 0.8
+T: "stay" "up" : 5 : 4 : 0.1
+T: "stay" "up" : 5 : 7 : 0.1
+T: "stay" "up" : 5 : 5 : 0.8
+T: "stay" "down" : 5 : 7 : 0.6
+T: "stay" "down" : 5 : 4 : 0.1
+T: "stay" "down" : 5 : 5 : 0.3
+T: "stay" "left" : 5 : 4 : 0.6
+T: "stay" "left" : 5 : 7 : 0.1
+T: "stay" "left" : 5 : 5 : 0.3
+T: "stay" "right" : 5 : 7 : 0.1
+T: "stay" "right" : 5 : 4 : 0.1
+T: "stay" "right" : 5 : 5 : 0.8
+T: "stay" "stay" : 5 : 5 : 1.0
+T: "up" "up" : 6 : 0 : 0.06
+T: "up" "up" : 6 : 3 : 0.01
+T: "up" "up" : 6 : 2 : 0.03
+T: "up" "up" : 6 : 12 : 0.06
+T: "up" "up" : 6 : 15 : 0.01
+T: "up" "up" : 6 : 14 : 0.03
+T: "up" "up" : 6 : 4 : 0.48
+T: "up" "up" : 6 : 7 : 0.08
+T: "up" "up" : 6 : 6 : 0.24
+T: "up" "down" : 6 : 3 : 0.01
+T: "up" "down" : 6 : 0 : 0.01
+T: "up" "down" : 6 : 2 : 0.08
+T: "up" "down" : 6 : 15 : 0.01
+T: "up" "down" : 6 : 12 : 0.01
+T: "up" "down" : 6 : 14 : 0.08
+T: "up" "down" : 6 : 7 : 0.08
+T: "up" "down" : 6 : 4 : 0.08
+T: "up" "down" : 6 : 6 : 0.64
+T: "up" "left" : 6 : 0 : 0.01
+T: "up" "left" : 6 : 3 : 0.01
+T: "up" "left" : 6 : 2 : 0.08
+T: "up" "left" : 6 : 12 : 0.01
+T: "up" "left" : 6 : 15 : 0.01
+T: "up" "left" : 6 : 14 : 0.08
+T: "up" "left" : 6 : 4 : 0.08
+T: "up" "left" : 6 : 7 : 0.08
+T: "up" "left" : 6 : 6 : 0.64
+T: "up" "right" : 6 : 3 : 0.06
+T: "up" "right" : 6 : 0 : 0.01
+T: "up" "right" : 6 : 2 : 0.03
+T: "up" "right" : 6 : 15 : 0.06
+T: "up" "right" : 6 : 12 : 0.01
+T: "up" "right" : 6 : 14 : 0.03
+T: "up" "right" : 6 : 7 : 0.48
+T: "up" "right" : 6 : 4 : 0.08
+T: "up" "right" : 6 : 6 : 0.24
+T: "up" "stay" : 6 : 2 : 0.1
+T: "up" "stay" : 6 : 14 : 0.1
+T: "up" "stay" : 6 : 6 : 0.8
+T: "down" "up" : 6 : 12 : 0.36
+T: "down" "up" : 6 : 15 : 0.06
+T: "down" "up" : 6 : 14 : 0.18
+T: "down" "up" : 6 : 0 : 0.06
+T: "down" "up" : 6 : 3 : 0.01
+T: "down" "up" : 6 : 2 : 0.03
+T: "down" "up" : 6 : 4 : 0.18
+T: "down" "up" : 6 : 7 : 0.03
+T: "down" "up" : 6 : 6 : 0.09
+T: "down" "down" : 6 : 15 : 0.06
+T: "down" "down" : 6 : 12 : 0.06
+T: "down" "down" : 6 : 14 : 0.48
+T: "down" "down" : 6 : 3 : 0.01
+T: "down" "down" : 6 : 0 : 0.01
+T: "down" "down" : 6 : 2 : 0.08
+T: "down" "down" : 6 : 7 : 0.03
+T: "down" "down" : 6 : 4 : 0.03
+T: "down" "down" : 6 : 6 : 0.24
+T: "down" "left" : 6 : 12 : 0.06
+T: "down" "left" : 6 : 15 : 0.06
+T: "down" "left" : 6 : 14 : 0.48
+T: "down" "left" : 6 : 0 : 0.01
+T: "down" "left" : 6 : 3 : 0.01
+T: "down" "left" : 6 : 2 : 0.08
+T: "down" "left" : 6 : 4 : 0.03
+T: "down" "left" : 6 : 7 : 0.03
+T: "down" "left" : 6 : 6 : 0.24
+T: "down" "right" : 6 : 15 : 0.36
+T: "down" "right" : 6 : 12 : 0.06
+T: "down" "right" : 6 : 14 : 0.18
+T: "down" "right" : 6 : 3 : 0.06
+T: "down" "right" : 6 : 0 : 0.01
+T: "down" "right" : 6 : 2 : 0.03
+T: "down" "right" : 6 : 7 : 0.18
+T: "down" "right" : 6 : 4 : 0.03
+T: "down" "right" : 6 : 6 : 0.09
+T: "down" "stay" : 6 : 14 : 0.6
+T: "down" "stay" : 6 : 2 : 0.1
+T: "down" "stay" : 6 : 6 : 0.3
+T: "left" "up" : 6 : 0 : 0.36
+T: "left" "up" : 6 : 3 : 0.06
+T: "left" "up" : 6 : 2 : 0.18
+T: "left" "up" : 6 : 12 : 0.06
+T: "left" "up" : 6 : 15 : 0.01
+T: "left" "up" : 6 : 14 : 0.03
+T: "left" "up" : 6 : 4 : 0.18
+T: "left" "up" : 6 : 7 : 0.03
+T: "left" "up" : 6 : 6 : 0.09
+T: "left" "down" : 6 : 3 : 0.06
+T: "left" "down" : 6 : 0 : 0.06
+T: "left" "down" : 6 : 2 : 0.48
+T: "left" "down" : 6 : 15 : 0.01
+T: "left" "down" : 6 : 12 : 0.01
+T: "left" "down" : 6 : 14 : 0.08
+T: "left" "down" : 6 : 7 : 0.03
+T: "left" "down" : 6 : 4 : 0.03
+T: "left" "down" : 6 : 6 : 0.24
+T: "left" "left" : 6 : 0 : 0.06
+T: "left" "left" : 6 : 3 : 0.06
+T: "left" "left" : 6 : 2 : 0.48
+T: "left" "left" : 6 : 12 : 0.01
+T: "left" "left" : 6 : 15 : 0.01
+T: "left" "left" : 6 : 14 : 0.08
+T: "left" "left" : 6 : 4 : 0.03
+T: "left" "left" : 6 : 7 : 0.03
+T: "left" "left" : 6 : 6 : 0.24
+T: "left" "right" : 6 : 3 : 0.36
+T: "left" "right" : 6 : 0 : 0.06
+T: "left" "right" : 6 : 2 : 0.18
+T: "left" "right" : 6 : 15 : 0.06
+T: "left" "right" : 6 : 12 : 0.01
+T: "left" "right" : 6 : 14 : 0.03
+T: "left" "right" : 6 : 7 : 0.18
+T: "left" "right" : 6 : 4 : 0.03
+T: "left" "right" : 6 : 6 : 0.09
+T: "left" "stay" : 6 : 2 : 0.6
+T: "left" "stay" : 6 : 14 : 0.1
+T: "left" "stay" : 6 : 6 : 0.3
+T: "right" "up" : 6 : 12 : 0.06
+T: "right" "up" : 6 : 15 : 0.01
+T: "right" "up" : 6 : 14 : 0.03
+T: "right" "up" : 6 : 0 : 0.06
+T: "right" "up" : 6 : 3 : 0.01
+T: "right" "up" : 6 : 2 : 0.03
+T: "right" "up" : 6 : 4 : 0.48
+T: "right" "up" : 6 : 7 : 0.08
+T: "right" "up" : 6 : 6 : 0.24
+T: "right" "down" : 6 : 15 : 0.01
+T: "right" "down" : 6 : 12 : 0.01
+T: "right" "down" : 6 : 14 : 0.08
+T: "right" "down" : 6 : 3 : 0.01
+T: "right" "down" : 6 : 0 : 0.01
+T: "right" "down" : 6 : 2 : 0.08
+T: "right" "down" : 6 : 7 : 0.08
+T: "right" "down" : 6 : 4 : 0.08
+T: "right" "down" : 6 : 6 : 0.64
+T: "right" "left" : 6 : 12 : 0.01
+T: "right" "left" : 6 : 15 : 0.01
+T: "right" "left" : 6 : 14 : 0.08
+T: "right" "left" : 6 : 0 : 0.01
+T: "right" "left" : 6 : 3 : 0.01
+T: "right" "left" : 6 : 2 : 0.08
+T: "right" "left" : 6 : 4 : 0.08
+T: "right" "left" : 6 : 7 : 0.08
+T: "right" "left" : 6 : 6 : 0.64
+T: "right" "right" : 6 : 15 : 0.06
+T: "right" "right" : 6 : 12 : 0.01
+T: "right" "right" : 6 : 14 : 0.03
+T: "right" "right" : 6 : 3 : 0.06
+T: "right" "right" : 6 : 0 : 0.01
+T: "right" "right" : 6 : 2 : 0.03
+T: "right" "right" : 6 : 7 : 0.48
+T: "right" "right" : 6 : 4 : 0.08
+T: "right" "right" : 6 : 6 : 0.24
+T: "right" "stay" : 6 : 14 : 0.1
+T: "right" "stay" : 6 : 2 : 0.1
+T: "right" "stay" : 6 : 6 : 0.8
+T: "stay" "up" : 6 : 4 : 0.6
+T: "stay" "up" : 6 : 7 : 0.1
+T: "stay" "up" : 6 : 6 : 0.3
+T: "stay" "down" : 6 : 7 : 0.1
+T: "stay" "down" : 6 : 4 : 0.1
+T: "stay" "down" : 6 : 6 : 0.8
+T: "stay" "left" : 6 : 4 : 0.1
+T: "stay" "left" : 6 : 7 : 0.1
+T: "stay" "left" : 6 : 6 : 0.8
+T: "stay" "right" : 6 : 7 : 0.6
+T: "stay" "right" : 6 : 4 : 0.1
+T: "stay" "right" : 6 : 6 : 0.3
+T: "stay" "stay" : 6 : 6 : 1.0
+T: "up" "up" : 7 : 1 : 0.06
+T: "up" "up" : 7 : 2 : 0.01
+T: "up" "up" : 7 : 3 : 0.03
+T: "up" "up" : 7 : 13 : 0.06
+T: "up" "up" : 7 : 14 : 0.01
+T: "up" "up" : 7 : 15 : 0.03
+T: "up" "up" : 7 : 5 : 0.48
+T: "up" "up" : 7 : 6 : 0.08
+T: "up" "up" : 7 : 7 : 0.24
+T: "up" "down" : 7 : 2 : 0.01
+T: "up" "down" : 7 : 1 : 0.01
+T: "up" "down" : 7 : 3 : 0.08
+T: "up" "down" : 7 : 14 : 0.01
+T: "up" "down" : 7 : 13 : 0.01
+T: "up" "down" : 7 : 15 : 0.08
+T: "up" "down" : 7 : 6 : 0.08
+T: "up" "down" : 7 : 5 : 0.08
+T: "up" "down" : 7 : 7 : 0.64
+T: "up" "left" : 7 : 2 : 0.06
+T: "up" "left" : 7 : 1 : 0.01
+T: "up" "left" : 7 : 3 : 0.03
+T: "up" "left" : 7 : 14 : 0.06
+T: "up" "left" : 7 : 13 : 0.01
+T: "up" "left" : 7 : 15 : 0.03
+T: "up" "left" : 7 : 6 : 0.48
+T: "up" "left" : 7 : 5 : 0.08
+T: "up" "left" : 7 : 7 : 0.24
+T: "up" "right" : 7 : 1 : 0.01
+T: "up" "right" : 7 : 2 : 0.01
+T: "up" "right" : 7 : 3 : 0.08
+T: "up" "right" : 7 : 13 : 0.01
+T: "up" "right" : 7 : 14 : 0.01
+T: "up" "right" : 7 : 15 : 0.08
+T: "up" "right" : 7 : 5 : 0.08
+T: "up" "right" : 7 : 6 : 0.08
+T: "up" "right" : 7 : 7 : 0.64
+T: "up" "stay" : 7 : 3 : 0.1
+T: "up" "stay" : 7 : 15 : 0.1
+T: "up" "stay" : 7 : 7 : 0.8
+T: "down" "up" : 7 : 13 : 0.36
+T: "down" "up" : 7 : 14 : 0.06
+T: "down" "up" : 7 : 15 : 0.18
+T: "down" "up" : 7 : 1 : 0.06
+T: "down" "up" : 7 : 2 : 0.01
+T: "down" "up" : 7 : 3 : 0.03
+T: "down" "up" : 7 : 5 : 0.18
+T: "down" "up" : 7 : 6 : 0.03
+T: "down" "up" : 7 : 7 : 0.09
+T: "down" "down" : 7 : 14 : 0.06
+T: "down" "down" : 7 : 13 : 0.06
+T: "down" "down" : 7 : 15 : 0.48
+T: "down" "down" : 7 : 2 : 0.01
+T: "down" "down" : 7 : 1 : 0.01
+T: "down" "down" : 7 : 3 : 0.08
+T: "down" "down" : 7 : 6 : 0.03
+T: "down" "down" : 7 : 5 : 0.03
+T: "down" "down" : 7 : 7 : 0.24
+T: "down" "left" : 7 : 14 : 0.36
+T: "down" "left" : 7 : 13 : 0.06
+T: "down" "left" : 7 : 15 : 0.18
+T: "down" "left" : 7 : 2 : 0.06
+T: "down" "left" : 7 : 1 : 0.01
+T: "down" "left" : 7 : 3 : 0.03
+T: "down" "left" : 7 : 6 : 0.18
+T: "down" "left" : 7 : 5 : 0.03
+T: "down" "left" : 7 : 7 : 0.09
+T: "down" "right" : 7 : 13 : 0.06
+T: "down" "right" : 7 : 14 : 0.06
+T: "down" "right" : 7 : 15 : 0.48
+T: "down" "right" : 7 : 1 : 0.01
+T: "down" "right" : 7 : 2 : 0.01
+T: "down" "right" : 7 : 3 : 0.08
+T: "down" "right" : 7 : 5 : 0.03
+T: "down" "right" : 7 : 6 : 0.03
+T: "down" "right" : 7 : 7 : 0.24
+T: "down" "stay" : 7 : 15 : 0.6
+T: "down" "stay" : 7 : 3 : 0.1
+T: "down" "stay" : 7 : 7 : 0.3
+T: "left" "up" : 7 : 1 : 0.36
+T: "left" "up" : 7 : 2 : 0.06
+T: "left" "up" : 7 : 3 : 0.18
+T: "left" "up" : 7 : 13 : 0.06
+T: "left" "up" : 7 : 14 : 0.01
+T: "left" "up" : 7 : 15 : 0.03
+T: "left" "up" : 7 : 5 : 0.18
+T: "left" "up" : 7 : 6 : 0.03
+T: "left" "up" : 7 : 7 : 0.09
+T: "left" "down" : 7 : 2 : 0.06
+T: "left" "down" : 7 : 1 : 0.06
+T: "left" "down" : 7 : 3 : 0.48
+T: "left" "down" : 7 : 14 : 0.01
+T: "left" "down" : 7 : 13 : 0.01
+T: "left" "down" : 7 : 15 : 0.08
+T: "left" "down" : 7 : 6 : 0.03
+T: "left" "down" : 7 : 5 : 0.03
+T: "left" "down" : 7 : 7 : 0.24
+T: "left" "left" : 7 : 2 : 0.36
+T: "left" "left" : 7 : 1 : 0.06
+T: "left" "left" : 7 : 3 : 0.18
+T: "left" "left" : 7 : 14 : 0.06
+T: "left" "left" : 7 : 13 : 0.01
+T: "left" "left" : 7 : 15 : 0.03
+T: "left" "left" : 7 : 6 : 0.18
+T: "left" "left" : 7 : 5 : 0.03
+T: "left" "left" : 7 : 7 : 0.09
+T: "left" "right" : 7 : 1 : 0.06
+T: "left" "right" : 7 : 2 : 0.06
+T: "left" "right" : 7 : 3 : 0.48
+T: "left" "right" : 7 : 13 : 0.01
+T: "left" "right" : 7 : 14 : 0.01
+T: "left" "right" : 7 : 15 : 0.08
+T: "left" "right" : 7 : 5 : 0.03
+T: "left" "right" : 7 : 6 : 0.03
+T: "left" "right" : 7 : 7 : 0.24
+T: "left" "stay" : 7 : 3 : 0.6
+T: "left" "stay" : 7 : 15 : 0.1
+T: "left" "stay" : 7 : 7 : 0.3
+T: "right" "up" : 7 : 13 : 0.06
+T: "right" "up" : 7 : 14 : 0.01
+T: "right" "up" : 7 : 15 : 0.03
+T: "right" "up" : 7 : 1 : 0.06
+T: "right" "up" : 7 : 2 : 0.01
+T: "right" "up" : 7 : 3 : 0.03
+T: "right" "up" : 7 : 5 : 0.48
+T: "right" "up" : 7 : 6 : 0.08
+T: "right" "up" : 7 : 7 : 0.24
+T: "right" "down" : 7 : 14 : 0.01
+T: "right" "down" : 7 : 13 : 0.01
+T: "right" "down" : 7 : 15 : 0.08
+T: "right" "down" : 7 : 2 : 0.01
+T: "right" "down" : 7 : 1 : 0.01
+T: "right" "down" : 7 : 3 : 0.08
+T: "right" "down" : 7 : 6 : 0.08
+T: "right" "down" : 7 : 5 : 0.08
+T: "right" "down" : 7 : 7 : 0.64
+T: "right" "left" : 7 : 14 : 0.06
+T: "right" "left" : 7 : 13 : 0.01
+T: "right" "left" : 7 : 15 : 0.03
+T: "right" "left" : 7 : 2 : 0.06
+T: "right" "left" : 7 : 1 : 0.01
+T: "right" "left" : 7 : 3 : 0.03
+T: "right" "left" : 7 : 6 : 0.48
+T: "right" "left" : 7 : 5 : 0.08
+T: "right" "left" : 7 : 7 : 0.24
+T: "right" "right" : 7 : 13 : 0.01
+T: "right" "right" : 7 : 14 : 0.01
+T: "right" "right" : 7 : 15 : 0.08
+T: "right" "right" : 7 : 1 : 0.01
+T: "right" "right" : 7 : 2 : 0.01
+T: "right" "right" : 7 : 3 : 0.08
+T: "right" "right" : 7 : 5 : 0.08
+T: "right" "right" : 7 : 6 : 0.08
+T: "right" "right" : 7 : 7 : 0.64
+T: "right" "stay" : 7 : 15 : 0.1
+T: "right" "stay" : 7 : 3 : 0.1
+T: "right" "stay" : 7 : 7 : 0.8
+T: "stay" "up" : 7 : 5 : 0.6
+T: "stay" "up" : 7 : 6 : 0.1
+T: "stay" "up" : 7 : 7 : 0.3
+T: "stay" "down" : 7 : 6 : 0.1
+T: "stay" "down" : 7 : 5 : 0.1
+T: "stay" "down" : 7 : 7 : 0.8
+T: "stay" "left" : 7 : 6 : 0.6
+T: "stay" "left" : 7 : 5 : 0.1
+T: "stay" "left" : 7 : 7 : 0.3
+T: "stay" "right" : 7 : 5 : 0.1
+T: "stay" "right" : 7 : 6 : 0.1
+T: "stay" "right" : 7 : 7 : 0.8
+T: "stay" "stay" : 7 : 7 : 1.0
+T: "up" "up" : 8 : 1 : 0.06
+T: "up" "up" : 8 : 2 : 0.06
+T: "up" "up" : 8 : 0 : 0.48
+T: "up" "up" : 8 : 13 : 0.01
+T: "up" "up" : 8 : 14 : 0.01
+T: "up" "up" : 8 : 12 : 0.08
+T: "up" "up" : 8 : 9 : 0.03
+T: "up" "up" : 8 : 10 : 0.03
+T: "up" "up" : 8 : 8 : 0.24
+T: "up" "down" : 8 : 2 : 0.36
+T: "up" "down" : 8 : 1 : 0.06
+T: "up" "down" : 8 : 0 : 0.18
+T: "up" "down" : 8 : 14 : 0.06
+T: "up" "down" : 8 : 13 : 0.01
+T: "up" "down" : 8 : 12 : 0.03
+T: "up" "down" : 8 : 10 : 0.18
+T: "up" "down" : 8 : 9 : 0.03
+T: "up" "down" : 8 : 8 : 0.09
+T: "up" "left" : 8 : 2 : 0.06
+T: "up" "left" : 8 : 1 : 0.06
+T: "up" "left" : 8 : 0 : 0.48
+T: "up" "left" : 8 : 14 : 0.01
+T: "up" "left" : 8 : 13 : 0.01
+T: "up" "left" : 8 : 12 : 0.08
+T: "up" "left" : 8 : 10 : 0.03
+T: "up" "left" : 8 : 9 : 0.03
+T: "up" "left" : 8 : 8 : 0.24
+T: "up" "right" : 8 : 1 : 0.36
+T: "up" "right" : 8 : 2 : 0.06
+T: "up" "right" : 8 : 0 : 0.18
+T: "up" "right" : 8 : 13 : 0.06
+T: "up" "right" : 8 : 14 : 0.01
+T: "up" "right" : 8 : 12 : 0.03
+T: "up" "right" : 8 : 9 : 0.18
+T: "up" "right" : 8 : 10 : 0.03
+T: "up" "right" : 8 : 8 : 0.09
+T: "up" "stay" : 8 : 0 : 0.6
+T: "up" "stay" : 8 : 12 : 0.1
+T: "up" "stay" : 8 : 8 : 0.3
+T: "down" "up" : 8 : 13 : 0.01
+T: "down" "up" : 8 : 14 : 0.01
+T: "down" "up" : 8 : 12 : 0.08
+T: "down" "up" : 8 : 1 : 0.01
+T: "down" "up" : 8 : 2 : 0.01
+T: "down" "up" : 8 : 0 : 0.08
+T: "down" "up" : 8 : 9 : 0.08
+T: "down" "up" : 8 : 10 : 0.08
+T: "down" "up" : 8 : 8 : 0.64
+T: "down" "down" : 8 : 14 : 0.06
+T: "down" "down" : 8 : 13 : 0.01
+T: "down" "down" : 8 : 12 : 0.03
+T: "down" "down" : 8 : 2 : 0.06
+T: "down" "down" : 8 : 1 : 0.01
+T: "down" "down" : 8 : 0 : 0.03
+T: "down" "down" : 8 : 10 : 0.48
+T: "down" "down" : 8 : 9 : 0.08
+T: "down" "down" : 8 : 8 : 0.24
+T: "down" "left" : 8 : 14 : 0.01
+T: "down" "left" : 8 : 13 : 0.01
+T: "down" "left" : 8 : 12 : 0.08
+T: "down" "left" : 8 : 2 : 0.01
+T: "down" "left" : 8 : 1 : 0.01
+T: "down" "left" : 8 : 0 : 0.08
+T: "down" "left" : 8 : 10 : 0.08
+T: "down" "left" : 8 : 9 : 0.08
+T: "down" "left" : 8 : 8 : 0.64
+T: "down" "right" : 8 : 13 : 0.06
+T: "down" "right" : 8 : 14 : 0.01
+T: "down" "right" : 8 : 12 : 0.03
+T: "down" "right" : 8 : 1 : 0.06
+T: "down" "right" : 8 : 2 : 0.01
+T: "down" "right" : 8 : 0 : 0.03
+T: "down" "right" : 8 : 9 : 0.48
+T: "down" "right" : 8 : 10 : 0.08
+T: "down" "right" : 8 : 8 : 0.24
+T: "down" "stay" : 8 : 12 : 0.1
+T: "down" "stay" : 8 : 0 : 0.1
+T: "down" "stay" : 8 : 8 : 0.8
+T: "left" "up" : 8 : 1 : 0.01
+T: "left" "up" : 8 : 2 : 0.01
+T: "left" "up" : 8 : 0 : 0.08
+T: "left" "up" : 8 : 13 : 0.01
+T: "left" "up" : 8 : 14 : 0.01
+T: "left" "up" : 8 : 12 : 0.08
+T: "left" "up" : 8 : 9 : 0.08
+T: "left" "up" : 8 : 10 : 0.08
+T: "left" "up" : 8 : 8 : 0.64
+T: "left" "down" : 8 : 2 : 0.06
+T: "left" "down" : 8 : 1 : 0.01
+T: "left" "down" : 8 : 0 : 0.03
+T: "left" "down" : 8 : 14 : 0.06
+T: "left" "down" : 8 : 13 : 0.01
+T: "left" "down" : 8 : 12 : 0.03
+T: "left" "down" : 8 : 10 : 0.48
+T: "left" "down" : 8 : 9 : 0.08
+T: "left" "down" : 8 : 8 : 0.24
+T: "left" "left" : 8 : 2 : 0.01
+T: "left" "left" : 8 : 1 : 0.01
+T: "left" "left" : 8 : 0 : 0.08
+T: "left" "left" : 8 : 14 : 0.01
+T: "left" "left" : 8 : 13 : 0.01
+T: "left" "left" : 8 : 12 : 0.08
+T: "left" "left" : 8 : 10 : 0.08
+T: "left" "left" : 8 : 9 : 0.08
+T: "left" "left" : 8 : 8 : 0.64
+T: "left" "right" : 8 : 1 : 0.06
+T: "left" "right" : 8 : 2 : 0.01
+T: "left" "right" : 8 : 0 : 0.03
+T: "left" "right" : 8 : 13 : 0.06
+T: "left" "right" : 8 : 14 : 0.01
+T: "left" "right" : 8 : 12 : 0.03
+T: "left" "right" : 8 : 9 : 0.48
+T: "left" "right" : 8 : 10 : 0.08
+T: "left" "right" : 8 : 8 : 0.24
+T: "left" "stay" : 8 : 0 : 0.1
+T: "left" "stay" : 8 : 12 : 0.1
+T: "left" "stay" : 8 : 8 : 0.8
+T: "right" "up" : 8 : 13 : 0.06
+T: "right" "up" : 8 : 14 : 0.06
+T: "right" "up" : 8 : 12 : 0.48
+T: "right" "up" : 8 : 1 : 0.01
+T: "right" "up" : 8 : 2 : 0.01
+T: "right" "up" : 8 : 0 : 0.08
+T: "right" "up" : 8 : 9 : 0.03
+T: "right" "up" : 8 : 10 : 0.03
+T: "right" "up" : 8 : 8 : 0.24
+T: "right" "down" : 8 : 14 : 0.36
+T: "right" "down" : 8 : 13 : 0.06
+T: "right" "down" : 8 : 12 : 0.18
+T: "right" "down" : 8 : 2 : 0.06
+T: "right" "down" : 8 : 1 : 0.01
+T: "right" "down" : 8 : 0 : 0.03
+T: "right" "down" : 8 : 10 : 0.18
+T: "right" "down" : 8 : 9 : 0.03
+T: "right" "down" : 8 : 8 : 0.09
+T: "right" "left" : 8 : 14 : 0.06
+T: "right" "left" : 8 : 13 : 0.06
+T: "right" "left" : 8 : 12 : 0.48
+T: "right" "left" : 8 : 2 : 0.01
+T: "right" "left" : 8 : 1 : 0.01
+T: "right" "left" : 8 : 0 : 0.08
+T: "right" "left" : 8 : 10 : 0.03
+T: "right" "left" : 8 : 9 : 0.03
+T: "right" "left" : 8 : 8 : 0.24
+T: "right" "right" : 8 : 13 : 0.36
+T: "right" "right" : 8 : 14 : 0.06
+T: "right" "right" : 8 : 12 : 0.18
+T: "right" "right" : 8 : 1 : 0.06
+T: "right" "right" : 8 : 2 : 0.01
+T: "right" "right" : 8 : 0 : 0.03
+T: "right" "right" : 8 : 9 : 0.18
+T: "right" "right" : 8 : 10 : 0.03
+T: "right" "right" : 8 : 8 : 0.09
+T: "right" "stay" : 8 : 12 : 0.6
+T: "right" "stay" : 8 : 0 : 0.1
+T: "right" "stay" : 8 : 8 : 0.3
+T: "stay" "up" : 8 : 9 : 0.1
+T: "stay" "up" : 8 : 10 : 0.1
+T: "stay" "up" : 8 : 8 : 0.8
+T: "stay" "down" : 8 : 10 : 0.6
+T: "stay" "down" : 8 : 9 : 0.1
+T: "stay" "down" : 8 : 8 : 0.3
+T: "stay" "left" : 8 : 10 : 0.1
+T: "stay" "left" : 8 : 9 : 0.1
+T: "stay" "left" : 8 : 8 : 0.8
+T: "stay" "right" : 8 : 9 : 0.6
+T: "stay" "right" : 8 : 10 : 0.1
+T: "stay" "right" : 8 : 8 : 0.3
+T: "stay" "stay" : 8 : 8 : 1.0
+T: "up" "up" : 9 : 0 : 0.06
+T: "up" "up" : 9 : 3 : 0.06
+T: "up" "up" : 9 : 1 : 0.48
+T: "up" "up" : 9 : 12 : 0.01
+T: "up" "up" : 9 : 15 : 0.01
+T: "up" "up" : 9 : 13 : 0.08
+T: "up" "up" : 9 : 8 : 0.03
+T: "up" "up" : 9 : 11 : 0.03
+T: "up" "up" : 9 : 9 : 0.24
+T: "up" "down" : 9 : 3 : 0.36
+T: "up" "down" : 9 : 0 : 0.06
+T: "up" "down" : 9 : 1 : 0.18
+T: "up" "down" : 9 : 15 : 0.06
+T: "up" "down" : 9 : 12 : 0.01
+T: "up" "down" : 9 : 13 : 0.03
+T: "up" "down" : 9 : 11 : 0.18
+T: "up" "down" : 9 : 8 : 0.03
+T: "up" "down" : 9 : 9 : 0.09
+T: "up" "left" : 9 : 0 : 0.36
+T: "up" "left" : 9 : 3 : 0.06
+T: "up" "left" : 9 : 1 : 0.18
+T: "up" "left" : 9 : 12 : 0.06
+T: "up" "left" : 9 : 15 : 0.01
+T: "up" "left" : 9 : 13 : 0.03
+T: "up" "left" : 9 : 8 : 0.18
+T: "up" "left" : 9 : 11 : 0.03
+T: "up" "left" : 9 : 9 : 0.09
+T: "up" "right" : 9 : 3 : 0.06
+T: "up" "right" : 9 : 0 : 0.06
+T: "up" "right" : 9 : 1 : 0.48
+T: "up" "right" : 9 : 15 : 0.01
+T: "up" "right" : 9 : 12 : 0.01
+T: "up" "right" : 9 : 13 : 0.08
+T: "up" "right" : 9 : 11 : 0.03
+T: "up" "right" : 9 : 8 : 0.03
+T: "up" "right" : 9 : 9 : 0.24
+T: "up" "stay" : 9 : 1 : 0.6
+T: "up" "stay" : 9 : 13 : 0.1
+T: "up" "stay" : 9 : 9 : 0.3
+T: "down" "up" : 9 : 12 : 0.01
+T: "down" "up" : 9 : 15 : 0.01
+T: "down" "up" : 9 : 13 : 0.08
+T: "down" "up" : 9 : 0 : 0.01
+T: "down" "up" : 9 : 3 : 0.01
+T: "down" "up" : 9 : 1 : 0.08
+T: "down" "up" : 9 : 8 : 0.08
+T: "down" "up" : 9 : 11 : 0.08
+T: "down" "up" : 9 : 9 : 0.64
+T: "down" "down" : 9 : 15 : 0.06
+T: "down" "down" : 9 : 12 : 0.01
+T: "down" "down" : 9 : 13 : 0.03
+T: "down" "down" : 9 : 3 : 0.06
+T: "down" "down" : 9 : 0 : 0.01
+T: "down" "down" : 9 : 1 : 0.03
+T: "down" "down" : 9 : 11 : 0.48
+T: "down" "down" : 9 : 8 : 0.08
+T: "down" "down" : 9 : 9 : 0.24
+T: "down" "left" : 9 : 12 : 0.06
+T: "down" "left" : 9 : 15 : 0.01
+T: "down" "left" : 9 : 13 : 0.03
+T: "down" "left" : 9 : 0 : 0.06
+T: "down" "left" : 9 : 3 : 0.01
+T: "down" "left" : 9 : 1 : 0.03
+T: "down" "left" : 9 : 8 : 0.48
+T: "down" "left" : 9 : 11 : 0.08
+T: "down" "left" : 9 : 9 : 0.24
+T: "down" "right" : 9 : 15 : 0.01
+T: "down" "right" : 9 : 12 : 0.01
+T: "down" "right" : 9 : 13 : 0.08
+T: "down" "right" : 9 : 3 : 0.01
+T: "down" "right" : 9 : 0 : 0.01
+T: "down" "right" : 9 : 1 : 0.08
+T: "down" "right" : 9 : 11 : 0.08
+T: "down" "right" : 9 : 8 : 0.08
+T: "down" "right" : 9 : 9 : 0.64
+T: "down" "stay" : 9 : 13 : 0.1
+T: "down" "stay" : 9 : 1 : 0.1
+T: "down" "stay" : 9 : 9 : 0.8
+T: "left" "up" : 9 : 0 : 0.01
+T: "left" "up" : 9 : 3 : 0.01
+T: "left" "up" : 9 : 1 : 0.08
+T: "left" "up" : 9 : 12 : 0.01
+T: "left" "up" : 9 : 15 : 0.01
+T: "left" "up" : 9 : 13 : 0.08
+T: "left" "up" : 9 : 8 : 0.08
+T: "left" "up" : 9 : 11 : 0.08
+T: "left" "up" : 9 : 9 : 0.64
+T: "left" "down" : 9 : 3 : 0.06
+T: "left" "down" : 9 : 0 : 0.01
+T: "left" "down" : 9 : 1 : 0.03
+T: "left" "down" : 9 : 15 : 0.06
+T: "left" "down" : 9 : 12 : 0.01
+T: "left" "down" : 9 : 13 : 0.03
+T: "left" "down" : 9 : 11 : 0.48
+T: "left" "down" : 9 : 8 : 0.08
+T: "left" "down" : 9 : 9 : 0.24
+T: "left" "left" : 9 : 0 : 0.06
+T: "left" "left" : 9 : 3 : 0.01
+T: "left" "left" : 9 : 1 : 0.03
+T: "left" "left" : 9 : 12 : 0.06
+T: "left" "left" : 9 : 15 : 0.01
+T: "left" "left" : 9 : 13 : 0.03
+T: "left" "left" : 9 : 8 : 0.48
+T: "left" "left" : 9 : 11 : 0.08
+T: "left" "left" : 9 : 9 : 0.24
+T: "left" "right" : 9 : 3 : 0.01
+T: "left" "right" : 9 : 0 : 0.01
+T: "left" "right" : 9 : 1 : 0.08
+T: "left" "right" : 9 : 15 : 0.01
+T: "left" "right" : 9 : 12 : 0.01
+T: "left" "right" : 9 : 13 : 0.08
+T: "left" "right" : 9 : 11 : 0.08
+T: "left" "right" : 9 : 8 : 0.08
+T: "left" "right" : 9 : 9 : 0.64
+T: "left" "stay" : 9 : 1 : 0.1
+T: "left" "stay" : 9 : 13 : 0.1
+T: "left" "stay" : 9 : 9 : 0.8
+T: "right" "up" : 9 : 12 : 0.06
+T: "right" "up" : 9 : 15 : 0.06
+T: "right" "up" : 9 : 13 : 0.48
+T: "right" "up" : 9 : 0 : 0.01
+T: "right" "up" : 9 : 3 : 0.01
+T: "right" "up" : 9 : 1 : 0.08
+T: "right" "up" : 9 : 8 : 0.03
+T: "right" "up" : 9 : 11 : 0.03
+T: "right" "up" : 9 : 9 : 0.24
+T: "right" "down" : 9 : 15 : 0.36
+T: "right" "down" : 9 : 12 : 0.06
+T: "right" "down" : 9 : 13 : 0.18
+T: "right" "down" : 9 : 3 : 0.06
+T: "right" "down" : 9 : 0 : 0.01
+T: "right" "down" : 9 : 1 : 0.03
+T: "right" "down" : 9 : 11 : 0.18
+T: "right" "down" : 9 : 8 : 0.03
+T: "right" "down" : 9 : 9 : 0.09
+T: "right" "left" : 9 : 12 : 0.36
+T: "right" "left" : 9 : 15 : 0.06
+T: "right" "left" : 9 : 13 : 0.18
+T: "right" "left" : 9 : 0 : 0.06
+T: "right" "left" : 9 : 3 : 0.01
+T: "right" "left" : 9 : 1 : 0.03
+T: "right" "left" : 9 : 8 : 0.18
+T: "right" "left" : 9 : 11 : 0.03
+T: "right" "left" : 9 : 9 : 0.09
+T: "right" "right" : 9 : 15 : 0.06
+T: "right" "right" : 9 : 12 : 0.06
+T: "right" "right" : 9 : 13 : 0.48
+T: "right" "right" : 9 : 3 : 0.01
+T: "right" "right" : 9 : 0 : 0.01
+T: "right" "right" : 9 : 1 : 0.08
+T: "right" "right" : 9 : 11 : 0.03
+T: "right" "right" : 9 : 8 : 0.03
+T: "right" "right" : 9 : 9 : 0.24
+T: "right" "stay" : 9 : 13 : 0.6
+T: "right" "stay" : 9 : 1 : 0.1
+T: "right" "stay" : 9 : 9 : 0.3
+T: "stay" "up" : 9 : 8 : 0.1
+T: "stay" "up" : 9 : 11 : 0.1
+T: "stay" "up" : 9 : 9 : 0.8
+T: "stay" "down" : 9 : 11 : 0.6
+T: "stay" "down" : 9 : 8 : 0.1
+T: "stay" "down" : 9 : 9 : 0.3
+T: "stay" "left" : 9 : 8 : 0.6
+T: "stay" "left" : 9 : 11 : 0.1
+T: "stay" "left" : 9 : 9 : 0.3
+T: "stay" "right" : 9 : 11 : 0.1
+T: "stay" "right" : 9 : 8 : 0.1
+T: "stay" "right" : 9 : 9 : 0.8
+T: "stay" "stay" : 9 : 9 : 1.0
+T: "up" "up" : 10 : 0 : 0.36
+T: "up" "up" : 10 : 3 : 0.06
+T: "up" "up" : 10 : 2 : 0.18
+T: "up" "up" : 10 : 12 : 0.06
+T: "up" "up" : 10 : 15 : 0.01
+T: "up" "up" : 10 : 14 : 0.03
+T: "up" "up" : 10 : 8 : 0.18
+T: "up" "up" : 10 : 11 : 0.03
+T: "up" "up" : 10 : 10 : 0.09
+T: "up" "down" : 10 : 3 : 0.06
+T: "up" "down" : 10 : 0 : 0.06
+T: "up" "down" : 10 : 2 : 0.48
+T: "up" "down" : 10 : 15 : 0.01
+T: "up" "down" : 10 : 12 : 0.01
+T: "up" "down" : 10 : 14 : 0.08
+T: "up" "down" : 10 : 11 : 0.03
+T: "up" "down" : 10 : 8 : 0.03
+T: "up" "down" : 10 : 10 : 0.24
+T: "up" "left" : 10 : 0 : 0.06
+T: "up" "left" : 10 : 3 : 0.06
+T: "up" "left" : 10 : 2 : 0.48
+T: "up" "left" : 10 : 12 : 0.01
+T: "up" "left" : 10 : 15 : 0.01
+T: "up" "left" : 10 : 14 : 0.08
+T: "up" "left" : 10 : 8 : 0.03
+T: "up" "left" : 10 : 11 : 0.03
+T: "up" "left" : 10 : 10 : 0.24
+T: "up" "right" : 10 : 3 : 0.36
+T: "up" "right" : 10 : 0 : 0.06
+T: "up" "right" : 10 : 2 : 0.18
+T: "up" "right" : 10 : 15 : 0.06
+T: "up" "right" : 10 : 12 : 0.01
+T: "up" "right" : 10 : 14 : 0.03
+T: "up" "right" : 10 : 11 : 0.18
+T: "up" "right" : 10 : 8 : 0.03
+T: "up" "right" : 10 : 10 : 0.09
+T: "up" "stay" : 10 : 2 : 0.6
+T: "up" "stay" : 10 : 14 : 0.1
+T: "up" "stay" : 10 : 10 : 0.3
+T: "down" "up" : 10 : 12 : 0.06
+T: "down" "up" : 10 : 15 : 0.01
+T: "down" "up" : 10 : 14 : 0.03
+T: "down" "up" : 10 : 0 : 0.06
+T: "down" "up" : 10 : 3 : 0.01
+T: "down" "up" : 10 : 2 : 0.03
+T: "down" "up" : 10 : 8 : 0.48
+T: "down" "up" : 10 : 11 : 0.08
+T: "down" "up" : 10 : 10 : 0.24
+T: "down" "down" : 10 : 15 : 0.01
+T: "down" "down" : 10 : 12 : 0.01
+T: "down" "down" : 10 : 14 : 0.08
+T: "down" "down" : 10 : 3 : 0.01
+T: "down" "down" : 10 : 0 : 0.01
+T: "down" "down" : 10 : 2 : 0.08
+T: "down" "down" : 10 : 11 : 0.08
+T: "down" "down" : 10 : 8 : 0.08
+T: "down" "down" : 10 : 10 : 0.64
+T: "down" "left" : 10 : 12 : 0.01
+T: "down" "left" : 10 : 15 : 0.01
+T: "down" "left" : 10 : 14 : 0.08
+T: "down" "left" : 10 : 0 : 0.01
+T: "down" "left" : 10 : 3 : 0.01
+T: "down" "left" : 10 : 2 : 0.08
+T: "down" "left" : 10 : 8 : 0.08
+T: "down" "left" : 10 : 11 : 0.08
+T: "down" "left" : 10 : 10 : 0.64
+T: "down" "right" : 10 : 15 : 0.06
+T: "down" "right" : 10 : 12 : 0.01
+T: "down" "right" : 10 : 14 : 0.03
+T: "down" "right" : 10 : 3 : 0.06
+T: "down" "right" : 10 : 0 : 0.01
+T: "down" "right" : 10 : 2 : 0.03
+T: "down" "right" : 10 : 11 : 0.48
+T: "down" "right" : 10 : 8 : 0.08
+T: "down" "right" : 10 : 10 : 0.24
+T: "down" "stay" : 10 : 14 : 0.1
+T: "down" "stay" : 10 : 2 : 0.1
+T: "down" "stay" : 10 : 10 : 0.8
+T: "left" "up" : 10 : 0 : 0.06
+T: "left" "up" : 10 : 3 : 0.01
+T: "left" "up" : 10 : 2 : 0.03
+T: "left" "up" : 10 : 12 : 0.06
+T: "left" "up" : 10 : 15 : 0.01
+T: "left" "up" : 10 : 14 : 0.03
+T: "left" "up" : 10 : 8 : 0.48
+T: "left" "up" : 10 : 11 : 0.08
+T: "left" "up" : 10 : 10 : 0.24
+T: "left" "down" : 10 : 3 : 0.01
+T: "left" "down" : 10 : 0 : 0.01
+T: "left" "down" : 10 : 2 : 0.08
+T: "left" "down" : 10 : 15 : 0.01
+T: "left" "down" : 10 : 12 : 0.01
+T: "left" "down" : 10 : 14 : 0.08
+T: "left" "down" : 10 : 11 : 0.08
+T: "left" "down" : 10 : 8 : 0.08
+T: "left" "down" : 10 : 10 : 0.64
+T: "left" "left" : 10 : 0 : 0.01
+T: "left" "left" : 10 : 3 : 0.01
+T: "left" "left" : 10 : 2 : 0.08
+T: "left" "left" : 10 : 12 : 0.01
+T: "left" "left" : 10 : 15 : 0.01
+T: "left" "left" : 10 : 14 : 0.08
+T: "left" "left" : 10 : 8 : 0.08
+T: "left" "left" : 10 : 11 : 0.08
+T: "left" "left" : 10 : 10 : 0.64
+T: "left" "right" : 10 : 3 : 0.06
+T: "left" "right" : 10 : 0 : 0.01
+T: "left" "right" : 10 : 2 : 0.03
+T: "left" "right" : 10 : 15 : 0.06
+T: "left" "right" : 10 : 12 : 0.01
+T: "left" "right" : 10 : 14 : 0.03
+T: "left" "right" : 10 : 11 : 0.48
+T: "left" "right" : 10 : 8 : 0.08
+T: "left" "right" : 10 : 10 : 0.24
+T: "left" "stay" : 10 : 2 : 0.1
+T: "left" "stay" : 10 : 14 : 0.1
+T: "left" "stay" : 10 : 10 : 0.8
+T: "right" "up" : 10 : 12 : 0.36
+T: "right" "up" : 10 : 15 : 0.06
+T: "right" "up" : 10 : 14 : 0.18
+T: "right" "up" : 10 : 0 : 0.06
+T: "right" "up" : 10 : 3 : 0.01
+T: "right" "up" : 10 : 2 : 0.03
+T: "right" "up" : 10 : 8 : 0.18
+T: "right" "up" : 10 : 11 : 0.03
+T: "right" "up" : 10 : 10 : 0.09
+T: "right" "down" : 10 : 15 : 0.06
+T: "right" "down" : 10 : 12 : 0.06
+T: "right" "down" : 10 : 14 : 0.48
+T: "right" "down" : 10 : 3 : 0.01
+T: "right" "down" : 10 : 0 : 0.01
+T: "right" "down" : 10 : 2 : 0.08
+T: "right" "down" : 10 : 11 : 0.03
+T: "right" "down" : 10 : 8 : 0.03
+T: "right" "down" : 10 : 10 : 0.24
+T: "right" "left" : 10 : 12 : 0.06
+T: "right" "left" : 10 : 15 : 0.06
+T: "right" "left" : 10 : 14 : 0.48
+T: "right" "left" : 10 : 0 : 0.01
+T: "right" "left" : 10 : 3 : 0.01
+T: "right" "left" : 10 : 2 : 0.08
+T: "right" "left" : 10 : 8 : 0.03
+T: "right" "left" : 10 : 11 : 0.03
+T: "right" "left" : 10 : 10 : 0.24
+T: "right" "right" : 10 : 15 : 0.36
+T: "right" "right" : 10 : 12 : 0.06
+T: "right" "right" : 10 : 14 : 0.18
+T: "right" "right" : 10 : 3 : 0.06
+T: "right" "right" : 10 : 0 : 0.01
+T: "right" "right" : 10 : 2 : 0.03
+T: "right" "right" : 10 : 11 : 0.18
+T: "right" "right" : 10 : 8 : 0.03
+T: "right" "right" : 10 : 10 : 0.09
+T: "right" "stay" : 10 : 14 : 0.6
+T: "right" "stay" : 10 : 2 : 0.1
+T: "right" "stay" : 10 : 10 : 0.3
+T: "stay" "up" : 10 : 8 : 0.6
+T: "stay" "up" : 10 : 11 : 0.1
+T: "stay" "up" : 10 : 10 : 0.3
+T: "stay" "down" : 10 : 11 : 0.1
+T: "stay" "down" : 10 : 8 : 0.1
+T: "stay" "down" : 10 : 10 : 0.8
+T: "stay" "left" : 10 : 8 : 0.1
+T: "stay" "left" : 10 : 11 : 0.1
+T: "stay" "left" : 10 : 10 : 0.8
+T: "stay" "right" : 10 : 11 : 0.6
+T: "stay" "right" : 10 : 8 : 0.1
+T: "stay" "right" : 10 : 10 : 0.3
+T: "stay" "stay" : 10 : 10 : 1.0
+T: "up" "up" : 11 : 1 : 0.36
+T: "up" "up" : 11 : 2 : 0.06
+T: "up" "up" : 11 : 3 : 0.18
+T: "up" "up" : 11 : 13 : 0.06
+T: "up" "up" : 11 : 14 : 0.01
+T: "up" "up" : 11 : 15 : 0.03
+T: "up" "up" : 11 : 9 : 0.18
+T: "up" "up" : 11 : 10 : 0.03
+T: "up" "up" : 11 : 11 : 0.09
+T: "up" "down" : 11 : 2 : 0.06
+T: "up" "down" : 11 : 1 : 0.06
+T: "up" "down" : 11 : 3 : 0.48
+T: "up" "down" : 11 : 14 : 0.01
+T: "up" "down" : 11 : 13 : 0.01
+T: "up" "down" : 11 : 15 : 0.08
+T: "up" "down" : 11 : 10 : 0.03
+T: "up" "down" : 11 : 9 : 0.03
+T: "up" "down" : 11 : 11 : 0.24
+T: "up" "left" : 11 : 2 : 0.36
+T: "up" "left" : 11 : 1 : 0.06
+T: "up" "left" : 11 : 3 : 0.18
+T: "up" "left" : 11 : 14 : 0.06
+T: "up" "left" : 11 : 13 : 0.01
+T: "up" "left" : 11 : 15 : 0.03
+T: "up" "left" : 11 : 10 : 0.18
+T: "up" "left" : 11 : 9 : 0.03
+T: "up" "left" : 11 : 11 : 0.09
+T: "up" "right" : 11 : 1 : 0.06
+T: "up" "right" : 11 : 2 : 0.06
+T: "up" "right" : 11 : 3 : 0.48
+T: "up" "right" : 11 : 13 : 0.01
+T: "up" "right" : 11 : 14 : 0.01
+T: "up" "right" : 11 : 15 : 0.08
+T: "up" "right" : 11 : 9 : 0.03
+T: "up" "right" : 11 : 10 : 0.03
+T: "up" "right" : 11 : 11 : 0.24
+T: "up" "stay" : 11 : 3 : 0.6
+T: "up" "stay" : 11 : 15 : 0.1
+T: "up" "stay" : 11 : 11 : 0.3
+T: "down" "up" : 11 : 13 : 0.06
+T: "down" "up" : 11 : 14 : 0.01
+T: "down" "up" : 11 : 15 : 0.03
+T: "down" "up" : 11 : 1 : 0.06
+T: "down" "up" : 11 : 2 : 0.01
+T: "down" "up" : 11 : 3 : 0.03
+T: "down" "up" : 11 : 9 : 0.48
+T: "down" "up" : 11 : 10 : 0.08
+T: "down" "up" : 11 : 11 : 0.24
+T: "down" "down" : 11 : 14 : 0.01
+T: "down" "down" : 11 : 13 : 0.01
+T: "down" "down" : 11 : 15 : 0.08
+T: "down" "down" : 11 : 2 : 0.01
+T: "down" "down" : 11 : 1 : 0.01
+T: "down" "down" : 11 : 3 : 0.08
+T: "down" "down" : 11 : 10 : 0.08
+T: "down" "down" : 11 : 9 : 0.08
+T: "down" "down" : 11 : 11 : 0.64
+T: "down" "left" : 11 : 14 : 0.06
+T: "down" "left" : 11 : 13 : 0.01
+T: "down" "left" : 11 : 15 : 0.03
+T: "down" "left" : 11 : 2 : 0.06
+T: "down" "left" : 11 : 1 : 0.01
+T: "down" "left" : 11 : 3 : 0.03
+T: "down" "left" : 11 : 10 : 0.48
+T: "down" "left" : 11 : 9 : 0.08
+T: "down" "left" : 11 : 11 : 0.24
+T: "down" "right" : 11 : 13 : 0.01
+T: "down" "right" : 11 : 14 : 0.01
+T: "down" "right" : 11 : 15 : 0.08
+T: "down" "right" : 11 : 1 : 0.01
+T: "down" "right" : 11 : 2 : 0.01
+T: "down" "right" : 11 : 3 : 0.08
+T: "down" "right" : 11 : 9 : 0.08
+T: "down" "right" : 11 : 10 : 0.08
+T: "down" "right" : 11 : 11 : 0.64
+T: "down" "stay" : 11 : 15 : 0.1
+T: "down" "stay" : 11 : 3 : 0.1
+T: "down" "stay" : 11 : 11 : 0.8
+T: "left" "up" : 11 : 1 : 0.06
+T: "left" "up" : 11 : 2 : 0.01
+T: "left" "up" : 11 : 3 : 0.03
+T: "left" "up" : 11 : 13 : 0.06
+T: "left" "up" : 11 : 14 : 0.01
+T: "left" "up" : 11 : 15 : 0.03
+T: "left" "up" : 11 : 9 : 0.48
+T: "left" "up" : 11 : 10 : 0.08
+T: "left" "up" : 11 : 11 : 0.24
+T: "left" "down" : 11 : 2 : 0.01
+T: "left" "down" : 11 : 1 : 0.01
+T: "left" "down" : 11 : 3 : 0.08
+T: "left" "down" : 11 : 14 : 0.01
+T: "left" "down" : 11 : 13 : 0.01
+T: "left" "down" : 11 : 15 : 0.08
+T: "left" "down" : 11 : 10 : 0.08
+T: "left" "down" : 11 : 9 : 0.08
+T: "left" "down" : 11 : 11 : 0.64
+T: "left" "left" : 11 : 2 : 0.06
+T: "left" "left" : 11 : 1 : 0.01
+T: "left" "left" : 11 : 3 : 0.03
+T: "left" "left" : 11 : 14 : 0.06
+T: "left" "left" : 11 : 13 : 0.01
+T: "left" "left" : 11 : 15 : 0.03
+T: "left" "left" : 11 : 10 : 0.48
+T: "left" "left" : 11 : 9 : 0.08
+T: "left" "left" : 11 : 11 : 0.24
+T: "left" "right" : 11 : 1 : 0.01
+T: "left" "right" : 11 : 2 : 0.01
+T: "left" "right" : 11 : 3 : 0.08
+T: "left" "right" : 11 : 13 : 0.01
+T: "left" "right" : 11 : 14 : 0.01
+T: "left" "right" : 11 : 15 : 0.08
+T: "left" "right" : 11 : 9 : 0.08
+T: "left" "right" : 11 : 10 : 0.08
+T: "left" "right" : 11 : 11 : 0.64
+T: "left" "stay" : 11 : 3 : 0.1
+T: "left" "stay" : 11 : 15 : 0.1
+T: "left" "stay" : 11 : 11 : 0.8
+T: "right" "up" : 11 : 13 : 0.36
+T: "right" "up" : 11 : 14 : 0.06
+T: "right" "up" : 11 : 15 : 0.18
+T: "right" "up" : 11 : 1 : 0.06
+T: "right" "up" : 11 : 2 : 0.01
+T: "right" "up" : 11 : 3 : 0.03
+T: "right" "up" : 11 : 9 : 0.18
+T: "right" "up" : 11 : 10 : 0.03
+T: "right" "up" : 11 : 11 : 0.09
+T: "right" "down" : 11 : 14 : 0.06
+T: "right" "down" : 11 : 13 : 0.06
+T: "right" "down" : 11 : 15 : 0.48
+T: "right" "down" : 11 : 2 : 0.01
+T: "right" "down" : 11 : 1 : 0.01
+T: "right" "down" : 11 : 3 : 0.08
+T: "right" "down" : 11 : 10 : 0.03
+T: "right" "down" : 11 : 9 : 0.03
+T: "right" "down" : 11 : 11 : 0.24
+T: "right" "left" : 11 : 14 : 0.36
+T: "right" "left" : 11 : 13 : 0.06
+T: "right" "left" : 11 : 15 : 0.18
+T: "right" "left" : 11 : 2 : 0.06
+T: "right" "left" : 11 : 1 : 0.01
+T: "right" "left" : 11 : 3 : 0.03
+T: "right" "left" : 11 : 10 : 0.18
+T: "right" "left" : 11 : 9 : 0.03
+T: "right" "left" : 11 : 11 : 0.09
+T: "right" "right" : 11 : 13 : 0.06
+T: "right" "right" : 11 : 14 : 0.06
+T: "right" "right" : 11 : 15 : 0.48
+T: "right" "right" : 11 : 1 : 0.01
+T: "right" "right" : 11 : 2 : 0.01
+T: "right" "right" : 11 : 3 : 0.08
+T: "right" "right" : 11 : 9 : 0.03
+T: "right" "right" : 11 : 10 : 0.03
+T: "right" "right" : 11 : 11 : 0.24
+T: "right" "stay" : 11 : 15 : 0.6
+T: "right" "stay" : 11 : 3 : 0.1
+T: "right" "stay" : 11 : 11 : 0.3
+T: "stay" "up" : 11 : 9 : 0.6
+T: "stay" "up" : 11 : 10 : 0.1
+T: "stay" "up" : 11 : 11 : 0.3
+T: "stay" "down" : 11 : 10 : 0.1
+T: "stay" "down" : 11 : 9 : 0.1
+T: "stay" "down" : 11 : 11 : 0.8
+T: "stay" "left" : 11 : 10 : 0.6
+T: "stay" "left" : 11 : 9 : 0.1
+T: "stay" "left" : 11 : 11 : 0.3
+T: "stay" "right" : 11 : 9 : 0.1
+T: "stay" "right" : 11 : 10 : 0.1
+T: "stay" "right" : 11 : 11 : 0.8
+T: "stay" "stay" : 11 : 11 : 1.0
+T: "up" "up" : 12 : 5 : 0.06
+T: "up" "up" : 12 : 6 : 0.06
+T: "up" "up" : 12 : 4 : 0.48
+T: "up" "up" : 12 : 9 : 0.01
+T: "up" "up" : 12 : 10 : 0.01
+T: "up" "up" : 12 : 8 : 0.08
+T: "up" "up" : 12 : 13 : 0.03
+T: "up" "up" : 12 : 14 : 0.03
+T: "up" "up" : 12 : 12 : 0.24
+T: "up" "down" : 12 : 6 : 0.36
+T: "up" "down" : 12 : 5 : 0.06
+T: "up" "down" : 12 : 4 : 0.18
+T: "up" "down" : 12 : 10 : 0.06
+T: "up" "down" : 12 : 9 : 0.01
+T: "up" "down" : 12 : 8 : 0.03
+T: "up" "down" : 12 : 14 : 0.18
+T: "up" "down" : 12 : 13 : 0.03
+T: "up" "down" : 12 : 12 : 0.09
+T: "up" "left" : 12 : 6 : 0.06
+T: "up" "left" : 12 : 5 : 0.06
+T: "up" "left" : 12 : 4 : 0.48
+T: "up" "left" : 12 : 10 : 0.01
+T: "up" "left" : 12 : 9 : 0.01
+T: "up" "left" : 12 : 8 : 0.08
+T: "up" "left" : 12 : 14 : 0.03
+T: "up" "left" : 12 : 13 : 0.03
+T: "up" "left" : 12 : 12 : 0.24
+T: "up" "right" : 12 : 5 : 0.36
+T: "up" "right" : 12 : 6 : 0.06
+T: "up" "right" : 12 : 4 : 0.18
+T: "up" "right" : 12 : 9 : 0.06
+T: "up" "right" : 12 : 10 : 0.01
+T: "up" "right" : 12 : 8 : 0.03
+T: "up" "right" : 12 : 13 : 0.18
+T: "up" "right" : 12 : 14 : 0.03
+T: "up" "right" : 12 : 12 : 0.09
+T: "up" "stay" : 12 : 4 : 0.6
+T: "up" "stay" : 12 : 8 : 0.1
+T: "up" "stay" : 12 : 12 : 0.3
+T: "down" "up" : 12 : 9 : 0.01
+T: "down" "up" : 12 : 10 : 0.01
+T: "down" "up" : 12 : 8 : 0.08
+T: "down" "up" : 12 : 5 : 0.01
+T: "down" "up" : 12 : 6 : 0.01
+T: "down" "up" : 12 : 4 : 0.08
+T: "down" "up" : 12 : 13 : 0.08
+T: "down" "up" : 12 : 14 : 0.08
+T: "down" "up" : 12 : 12 : 0.64
+T: "down" "down" : 12 : 10 : 0.06
+T: "down" "down" : 12 : 9 : 0.01
+T: "down" "down" : 12 : 8 : 0.03
+T: "down" "down" : 12 : 6 : 0.06
+T: "down" "down" : 12 : 5 : 0.01
+T: "down" "down" : 12 : 4 : 0.03
+T: "down" "down" : 12 : 14 : 0.48
+T: "down" "down" : 12 : 13 : 0.08
+T: "down" "down" : 12 : 12 : 0.24
+T: "down" "left" : 12 : 10 : 0.01
+T: "down" "left" : 12 : 9 : 0.01
+T: "down" "left" : 12 : 8 : 0.08
+T: "down" "left" : 12 : 6 : 0.01
+T: "down" "left" : 12 : 5 : 0.01
+T: "down" "left" : 12 : 4 : 0.08
+T: "down" "left" : 12 : 14 : 0.08
+T: "down" "left" : 12 : 13 : 0.08
+T: "down" "left" : 12 : 12 : 0.64
+T: "down" "right" : 12 : 9 : 0.06
+T: "down" "right" : 12 : 10 : 0.01
+T: "down" "right" : 12 : 8 : 0.03
+T: "down" "right" : 12 : 5 : 0.06
+T: "down" "right" : 12 : 6 : 0.01
+T: "down" "right" : 12 : 4 : 0.03
+T: "down" "right" : 12 : 13 : 0.48
+T: "down" "right" : 12 : 14 : 0.08
+T: "down" "right" : 12 : 12 : 0.24
+T: "down" "stay" : 12 : 8 : 0.1
+T: "down" "stay" : 12 : 4 : 0.1
+T: "down" "stay" : 12 : 12 : 0.8
+T: "left" "up" : 12 : 9 : 0.06
+T: "left" "up" : 12 : 10 : 0.06
+T: "left" "up" : 12 : 8 : 0.48
+T: "left" "up" : 12 : 5 : 0.01
+T: "left" "up" : 12 : 6 : 0.01
+T: "left" "up" : 12 : 4 : 0.08
+T: "left" "up" : 12 : 13 : 0.03
+T: "left" "up" : 12 : 14 : 0.03
+T: "left" "up" : 12 : 12 : 0.24
+T: "left" "down" : 12 : 10 : 0.36
+T: "left" "down" : 12 : 9 : 0.06
+T: "left" "down" : 12 : 8 : 0.18
+T: "left" "down" : 12 : 6 : 0.06
+T: "left" "down" : 12 : 5 : 0.01
+T: "left" "down" : 12 : 4 : 0.03
+T: "left" "down" : 12 : 14 : 0.18
+T: "left" "down" : 12 : 13 : 0.03
+T: "left" "down" : 12 : 12 : 0.09
+T: "left" "left" : 12 : 10 : 0.06
+T: "left" "left" : 12 : 9 : 0.06
+T: "left" "left" : 12 : 8 : 0.48
+T: "left" "left" : 12 : 6 : 0.01
+T: "left" "left" : 12 : 5 : 0.01
+T: "left" "left" : 12 : 4 : 0.08
+T: "left" "left" : 12 : 14 : 0.03
+T: "left" "left" : 12 : 13 : 0.03
+T: "left" "left" : 12 : 12 : 0.24
+T: "left" "right" : 12 : 9 : 0.36
+T: "left" "right" : 12 : 10 : 0.06
+T: "left" "right" : 12 : 8 : 0.18
+T: "left" "right" : 12 : 5 : 0.06
+T: "left" "right" : 12 : 6 : 0.01
+T: "left" "right" : 12 : 4 : 0.03
+T: "left" "right" : 12 : 13 : 0.18
+T: "left" "right" : 12 : 14 : 0.03
+T: "left" "right" : 12 : 12 : 0.09
+T: "left" "stay" : 12 : 8 : 0.6
+T: "left" "stay" : 12 : 4 : 0.1
+T: "left" "stay" : 12 : 12 : 0.3
+T: "right" "up" : 12 : 5 : 0.01
+T: "right" "up" : 12 : 6 : 0.01
+T: "right" "up" : 12 : 4 : 0.08
+T: "right" "up" : 12 : 9 : 0.01
+T: "right" "up" : 12 : 10 : 0.01
+T: "right" "up" : 12 : 8 : 0.08
+T: "right" "up" : 12 : 13 : 0.08
+T: "right" "up" : 12 : 14 : 0.08
+T: "right" "up" : 12 : 12 : 0.64
+T: "right" "down" : 12 : 6 : 0.06
+T: "right" "down" : 12 : 5 : 0.01
+T: "right" "down" : 12 : 4 : 0.03
+T: "right" "down" : 12 : 10 : 0.06
+T: "right" "down" : 12 : 9 : 0.01
+T: "right" "down" : 12 : 8 : 0.03
+T: "right" "down" : 12 : 14 : 0.48
+T: "right" "down" : 12 : 13 : 0.08
+T: "right" "down" : 12 : 12 : 0.24
+T: "right" "left" : 12 : 6 : 0.01
+T: "right" "left" : 12 : 5 : 0.01
+T: "right" "left" : 12 : 4 : 0.08
+T: "right" "left" : 12 : 10 : 0.01
+T: "right" "left" : 12 : 9 : 0.01
+T: "right" "left" : 12 : 8 : 0.08
+T: "right" "left" : 12 : 14 : 0.08
+T: "right" "left" : 12 : 13 : 0.08
+T: "right" "left" : 12 : 12 : 0.64
+T: "right" "right" : 12 : 5 : 0.06
+T: "right" "right" : 12 : 6 : 0.01
+T: "right" "right" : 12 : 4 : 0.03
+T: "right" "right" : 12 : 9 : 0.06
+T: "right" "right" : 12 : 10 : 0.01
+T: "right" "right" : 12 : 8 : 0.03
+T: "right" "right" : 12 : 13 : 0.48
+T: "right" "right" : 12 : 14 : 0.08
+T: "right" "right" : 12 : 12 : 0.24
+T: "right" "stay" : 12 : 4 : 0.1
+T: "right" "stay" : 12 : 8 : 0.1
+T: "right" "stay" : 12 : 12 : 0.8
+T: "stay" "up" : 12 : 13 : 0.1
+T: "stay" "up" : 12 : 14 : 0.1
+T: "stay" "up" : 12 : 12 : 0.8
+T: "stay" "down" : 12 : 14 : 0.6
+T: "stay" "down" : 12 : 13 : 0.1
+T: "stay" "down" : 12 : 12 : 0.3
+T: "stay" "left" : 12 : 14 : 0.1
+T: "stay" "left" : 12 : 13 : 0.1
+T: "stay" "left" : 12 : 12 : 0.8
+T: "stay" "right" : 12 : 13 : 0.6
+T: "stay" "right" : 12 : 14 : 0.1
+T: "stay" "right" : 12 : 12 : 0.3
+T: "stay" "stay" : 12 : 12 : 1.0
+T: "up" "up" : 13 : 4 : 0.06
+T: "up" "up" : 13 : 7 : 0.06
+T: "up" "up" : 13 : 5 : 0.48
+T: "up" "up" : 13 : 8 : 0.01
+T: "up" "up" : 13 : 11 : 0.01
+T: "up" "up" : 13 : 9 : 0.08
+T: "up" "up" : 13 : 12 : 0.03
+T: "up" "up" : 13 : 15 : 0.03
+T: "up" "up" : 13 : 13 : 0.24
+T: "up" "down" : 13 : 7 : 0.36
+T: "up" "down" : 13 : 4 : 0.06
+T: "up" "down" : 13 : 5 : 0.18
+T: "up" "down" : 13 : 11 : 0.06
+T: "up" "down" : 13 : 8 : 0.01
+T: "up" "down" : 13 : 9 : 0.03
+T: "up" "down" : 13 : 15 : 0.18
+T: "up" "down" : 13 : 12 : 0.03
+T: "up" "down" : 13 : 13 : 0.09
+T: "up" "left" : 13 : 4 : 0.36
+T: "up" "left" : 13 : 7 : 0.06
+T: "up" "left" : 13 : 5 : 0.18
+T: "up" "left" : 13 : 8 : 0.06
+T: "up" "left" : 13 : 11 : 0.01
+T: "up" "left" : 13 : 9 : 0.03
+T: "up" "left" : 13 : 12 : 0.18
+T: "up" "left" : 13 : 15 : 0.03
+T: "up" "left" : 13 : 13 : 0.09
+T: "up" "right" : 13 : 7 : 0.06
+T: "up" "right" : 13 : 4 : 0.06
+T: "up" "right" : 13 : 5 : 0.48
+T: "up" "right" : 13 : 11 : 0.01
+T: "up" "right" : 13 : 8 : 0.01
+T: "up" "right" : 13 : 9 : 0.08
+T: "up" "right" : 13 : 15 : 0.03
+T: "up" "right" : 13 : 12 : 0.03
+T: "up" "right" : 13 : 13 : 0.24
+T: "up" "stay" : 13 : 5 : 0.6
+T: "up" "stay" : 13 : 9 : 0.1
+T: "up" "stay" : 13 : 13 : 0.3
+T: "down" "up" : 13 : 8 : 0.01
+T: "down" "up" : 13 : 11 : 0.01
+T: "down" "up" : 13 : 9 : 0.08
+T: "down" "up" : 13 : 4 : 0.01
+T: "down" "up" : 13 : 7 : 0.01
+T: "down" "up" : 13 : 5 : 0.08
+T: "down" "up" : 13 : 12 : 0.08
+T: "down" "up" : 13 : 15 : 0.08
+T: "down" "up" : 13 : 13 : 0.64
+T: "down" "down" : 13 : 11 : 0.06
+T: "down" "down" : 13 : 8 : 0.01
+T: "down" "down" : 13 : 9 : 0.03
+T: "down" "down" : 13 : 7 : 0.06
+T: "down" "down" : 13 : 4 : 0.01
+T: "down" "down" : 13 : 5 : 0.03
+T: "down" "down" : 13 : 15 : 0.48
+T: "down" "down" : 13 : 12 : 0.08
+T: "down" "down" : 13 : 13 : 0.24
+T: "down" "left" : 13 : 8 : 0.06
+T: "down" "left" : 13 : 11 : 0.01
+T: "down" "left" : 13 : 9 : 0.03
+T: "down" "left" : 13 : 4 : 0.06
+T: "down" "left" : 13 : 7 : 0.01
+T: "down" "left" : 13 : 5 : 0.03
+T: "down" "left" : 13 : 12 : 0.48
+T: "down" "left" : 13 : 15 : 0.08
+T: "down" "left" : 13 : 13 : 0.24
+T: "down" "right" : 13 : 11 : 0.01
+T: "down" "right" : 13 : 8 : 0.01
+T: "down" "right" : 13 : 9 : 0.08
+T: "down" "right" : 13 : 7 : 0.01
+T: "down" "right" : 13 : 4 : 0.01
+T: "down" "right" : 13 : 5 : 0.08
+T: "down" "right" : 13 : 15 : 0.08
+T: "down" "right" : 13 : 12 : 0.08
+T: "down" "right" : 13 : 13 : 0.64
+T: "down" "stay" : 13 : 9 : 0.1
+T: "down" "stay" : 13 : 5 : 0.1
+T: "down" "stay" : 13 : 13 : 0.8
+T: "left" "up" : 13 : 8 : 0.06
+T: "left" "up" : 13 : 11 : 0.06
+T: "left" "up" : 13 : 9 : 0.48
+T: "left" "up" : 13 : 4 : 0.01
+T: "left" "up" : 13 : 7 : 0.01
+T: "left" "up" : 13 : 5 : 0.08
+T: "left" "up" : 13 : 12 : 0.03
+T: "left" "up" : 13 : 15 : 0.03
+T: "left" "up" : 13 : 13 : 0.24
+T: "left" "down" : 13 : 11 : 0.36
+T: "left" "down" : 13 : 8 : 0.06
+T: "left" "down" : 13 : 9 : 0.18
+T: "left" "down" : 13 : 7 : 0.06
+T: "left" "down" : 13 : 4 : 0.01
+T: "left" "down" : 13 : 5 : 0.03
+T: "left" "down" : 13 : 15 : 0.18
+T: "left" "down" : 13 : 12 : 0.03
+T: "left" "down" : 13 : 13 : 0.09
+T: "left" "left" : 13 : 8 : 0.36
+T: "left" "left" : 13 : 11 : 0.06
+T: "left" "left" : 13 : 9 : 0.18
+T: "left" "left" : 13 : 4 : 0.06
+T: "left" "left" : 13 : 7 : 0.01
+T: "left" "left" : 13 : 5 : 0.03
+T: "left" "left" : 13 : 12 : 0.18
+T: "left" "left" : 13 : 15 : 0.03
+T: "left" "left" : 13 : 13 : 0.09
+T: "left" "right" : 13 : 11 : 0.06
+T: "left" "right" : 13 : 8 : 0.06
+T: "left" "right" : 13 : 9 : 0.48
+T: "left" "right" : 13 : 7 : 0.01
+T: "left" "right" : 13 : 4 : 0.01
+T: "left" "right" : 13 : 5 : 0.08
+T: "left" "right" : 13 : 15 : 0.03
+T: "left" "right" : 13 : 12 : 0.03
+T: "left" "right" : 13 : 13 : 0.24
+T: "left" "stay" : 13 : 9 : 0.6
+T: "left" "stay" : 13 : 5 : 0.1
+T: "left" "stay" : 13 : 13 : 0.3
+T: "right" "up" : 13 : 4 : 0.01
+T: "right" "up" : 13 : 7 : 0.01
+T: "right" "up" : 13 : 5 : 0.08
+T: "right" "up" : 13 : 8 : 0.01
+T: "right" "up" : 13 : 11 : 0.01
+T: "right" "up" : 13 : 9 : 0.08
+T: "right" "up" : 13 : 12 : 0.08
+T: "right" "up" : 13 : 15 : 0.08
+T: "right" "up" : 13 : 13 : 0.64
+T: "right" "down" : 13 : 7 : 0.06
+T: "right" "down" : 13 : 4 : 0.01
+T: "right" "down" : 13 : 5 : 0.03
+T: "right" "down" : 13 : 11 : 0.06
+T: "right" "down" : 13 : 8 : 0.01
+T: "right" "down" : 13 : 9 : 0.03
+T: "right" "down" : 13 : 15 : 0.48
+T: "right" "down" : 13 : 12 : 0.08
+T: "right" "down" : 13 : 13 : 0.24
+T: "right" "left" : 13 : 4 : 0.06
+T: "right" "left" : 13 : 7 : 0.01
+T: "right" "left" : 13 : 5 : 0.03
+T: "right" "left" : 13 : 8 : 0.06
+T: "right" "left" : 13 : 11 : 0.01
+T: "right" "left" : 13 : 9 : 0.03
+T: "right" "left" : 13 : 12 : 0.48
+T: "right" "left" : 13 : 15 : 0.08
+T: "right" "left" : 13 : 13 : 0.24
+T: "right" "right" : 13 : 7 : 0.01
+T: "right" "right" : 13 : 4 : 0.01
+T: "right" "right" : 13 : 5 : 0.08
+T: "right" "right" : 13 : 11 : 0.01
+T: "right" "right" : 13 : 8 : 0.01
+T: "right" "right" : 13 : 9 : 0.08
+T: "right" "right" : 13 : 15 : 0.08
+T: "right" "right" : 13 : 12 : 0.08
+T: "right" "right" : 13 : 13 : 0.64
+T: "right" "stay" : 13 : 5 : 0.1
+T: "right" "stay" : 13 : 9 : 0.1
+T: "right" "stay" : 13 : 13 : 0.8
+T: "stay" "up" : 13 : 12 : 0.1
+T: "stay" "up" : 13 : 15 : 0.1
+T: "stay" "up" : 13 : 13 : 0.8
+T: "stay" "down" : 13 : 15 : 0.6
+T: "stay" "down" : 13 : 12 : 0.1
+T: "stay" "down" : 13 : 13 : 0.3
+T: "stay" "left" : 13 : 12 : 0.6
+T: "stay" "left" : 13 : 15 : 0.1
+T: "stay" "left" : 13 : 13 : 0.3
+T: "stay" "right" : 13 : 15 : 0.1
+T: "stay" "right" : 13 : 12 : 0.1
+T: "stay" "right" : 13 : 13 : 0.8
+T: "stay" "stay" : 13 : 13 : 1.0
+T: "up" "up" : 14 : 4 : 0.36
+T: "up" "up" : 14 : 7 : 0.06
+T: "up" "up" : 14 : 6 : 0.18
+T: "up" "up" : 14 : 8 : 0.06
+T: "up" "up" : 14 : 11 : 0.01
+T: "up" "up" : 14 : 10 : 0.03
+T: "up" "up" : 14 : 12 : 0.18
+T: "up" "up" : 14 : 15 : 0.03
+T: "up" "up" : 14 : 14 : 0.09
+T: "up" "down" : 14 : 7 : 0.06
+T: "up" "down" : 14 : 4 : 0.06
+T: "up" "down" : 14 : 6 : 0.48
+T: "up" "down" : 14 : 11 : 0.01
+T: "up" "down" : 14 : 8 : 0.01
+T: "up" "down" : 14 : 10 : 0.08
+T: "up" "down" : 14 : 15 : 0.03
+T: "up" "down" : 14 : 12 : 0.03
+T: "up" "down" : 14 : 14 : 0.24
+T: "up" "left" : 14 : 4 : 0.06
+T: "up" "left" : 14 : 7 : 0.06
+T: "up" "left" : 14 : 6 : 0.48
+T: "up" "left" : 14 : 8 : 0.01
+T: "up" "left" : 14 : 11 : 0.01
+T: "up" "left" : 14 : 10 : 0.08
+T: "up" "left" : 14 : 12 : 0.03
+T: "up" "left" : 14 : 15 : 0.03
+T: "up" "left" : 14 : 14 : 0.24
+T: "up" "right" : 14 : 7 : 0.36
+T: "up" "right" : 14 : 4 : 0.06
+T: "up" "right" : 14 : 6 : 0.18
+T: "up" "right" : 14 : 11 : 0.06
+T: "up" "right" : 14 : 8 : 0.01
+T: "up" "right" : 14 : 10 : 0.03
+T: "up" "right" : 14 : 15 : 0.18
+T: "up" "right" : 14 : 12 : 0.03
+T: "up" "right" : 14 : 14 : 0.09
+T: "up" "stay" : 14 : 6 : 0.6
+T: "up" "stay" : 14 : 10 : 0.1
+T: "up" "stay" : 14 : 14 : 0.3
+T: "down" "up" : 14 : 8 : 0.06
+T: "down" "up" : 14 : 11 : 0.01
+T: "down" "up" : 14 : 10 : 0.03
+T: "down" "up" : 14 : 4 : 0.06
+T: "down" "up" : 14 : 7 : 0.01
+T: "down" "up" : 14 : 6 : 0.03
+T: "down" "up" : 14 : 12 : 0.48
+T: "down" "up" : 14 : 15 : 0.08
+T: "down" "up" : 14 : 14 : 0.24
+T: "down" "down" : 14 : 11 : 0.01
+T: "down" "down" : 14 : 8 : 0.01
+T: "down" "down" : 14 : 10 : 0.08
+T: "down" "down" : 14 : 7 : 0.01
+T: "down" "down" : 14 : 4 : 0.01
+T: "down" "down" : 14 : 6 : 0.08
+T: "down" "down" : 14 : 15 : 0.08
+T: "down" "down" : 14 : 12 : 0.08
+T: "down" "down" : 14 : 14 : 0.64
+T: "down" "left" : 14 : 8 : 0.01
+T: "down" "left" : 14 : 11 : 0.01
+T: "down" "left" : 14 : 10 : 0.08
+T: "down" "left" : 14 : 4 : 0.01
+T: "down" "left" : 14 : 7 : 0.01
+T: "down" "left" : 14 : 6 : 0.08
+T: "down" "left" : 14 : 12 : 0.08
+T: "down" "left" : 14 : 15 : 0.08
+T: "down" "left" : 14 : 14 : 0.64
+T: "down" "right" : 14 : 11 : 0.06
+T: "down" "right" : 14 : 8 : 0.01
+T: "down" "right" : 14 : 10 : 0.03
+T: "down" "right" : 14 : 7 : 0.06
+T: "down" "right" : 14 : 4 : 0.01
+T: "down" "right" : 14 : 6 : 0.03
+T: "down" "right" : 14 : 15 : 0.48
+T: "down" "right" : 14 : 12 : 0.08
+T: "down" "right" : 14 : 14 : 0.24
+T: "down" "stay" : 14 : 10 : 0.1
+T: "down" "stay" : 14 : 6 : 0.1
+T: "down" "stay" : 14 : 14 : 0.8
+T: "left" "up" : 14 : 8 : 0.36
+T: "left" "up" : 14 : 11 : 0.06
+T: "left" "up" : 14 : 10 : 0.18
+T: "left" "up" : 14 : 4 : 0.06
+T: "left" "up" : 14 : 7 : 0.01
+T: "left" "up" : 14 : 6 : 0.03
+T: "left" "up" : 14 : 12 : 0.18
+T: "left" "up" : 14 : 15 : 0.03
+T: "left" "up" : 14 : 14 : 0.09
+T: "left" "down" : 14 : 11 : 0.06
+T: "left" "down" : 14 : 8 : 0.06
+T: "left" "down" : 14 : 10 : 0.48
+T: "left" "down" : 14 : 7 : 0.01
+T: "left" "down" : 14 : 4 : 0.01
+T: "left" "down" : 14 : 6 : 0.08
+T: "left" "down" : 14 : 15 : 0.03
+T: "left" "down" : 14 : 12 : 0.03
+T: "left" "down" : 14 : 14 : 0.24
+T: "left" "left" : 14 : 8 : 0.06
+T: "left" "left" : 14 : 11 : 0.06
+T: "left" "left" : 14 : 10 : 0.48
+T: "left" "left" : 14 : 4 : 0.01
+T: "left" "left" : 14 : 7 : 0.01
+T: "left" "left" : 14 : 6 : 0.08
+T: "left" "left" : 14 : 12 : 0.03
+T: "left" "left" : 14 : 15 : 0.03
+T: "left" "left" : 14 : 14 : 0.24
+T: "left" "right" : 14 : 11 : 0.36
+T: "left" "right" : 14 : 8 : 0.06
+T: "left" "right" : 14 : 10 : 0.18
+T: "left" "right" : 14 : 7 : 0.06
+T: "left" "right" : 14 : 4 : 0.01
+T: "left" "right" : 14 : 6 : 0.03
+T: "left" "right" : 14 : 15 : 0.18
+T: "left" "right" : 14 : 12 : 0.03
+T: "left" "right" : 14 : 14 : 0.09
+T: "left" "stay" : 14 : 10 : 0.6
+T: "left" "stay" : 14 : 6 : 0.1
+T: "left" "stay" : 14 : 14 : 0.3
+T: "right" "up" : 14 : 4 : 0.06
+T: "right" "up" : 14 : 7 : 0.01
+T: "right" "up" : 14 : 6 : 0.03
+T: "right" "up" : 14 : 8 : 0.06
+T: "right" "up" : 14 : 11 : 0.01
+T: "right" "up" : 14 : 10 : 0.03
+T: "right" "up" : 14 : 12 : 0.48
+T: "right" "up" : 14 : 15 : 0.08
+T: "right" "up" : 14 : 14 : 0.24
+T: "right" "down" : 14 : 7 : 0.01
+T: "right" "down" : 14 : 4 : 0.01
+T: "right" "down" : 14 : 6 : 0.08
+T: "right" "down" : 14 : 11 : 0.01
+T: "right" "down" : 14 : 8 : 0.01
+T: "right" "down" : 14 : 10 : 0.08
+T: "right" "down" : 14 : 15 : 0.08
+T: "right" "down" : 14 : 12 : 0.08
+T: "right" "down" : 14 : 14 : 0.64
+T: "right" "left" : 14 : 4 : 0.01
+T: "right" "left" : 14 : 7 : 0.01
+T: "right" "left" : 14 : 6 : 0.08
+T: "right" "left" : 14 : 8 : 0.01
+T: "right" "left" : 14 : 11 : 0.01
+T: "right" "left" : 14 : 10 : 0.08
+T: "right" "left" : 14 : 12 : 0.08
+T: "right" "left" : 14 : 15 : 0.08
+T: "right" "left" : 14 : 14 : 0.64
+T: "right" "right" : 14 : 7 : 0.06
+T: "right" "right" : 14 : 4 : 0.01
+T: "right" "right" : 14 : 6 : 0.03
+T: "right" "right" : 14 : 11 : 0.06
+T: "right" "right" : 14 : 8 : 0.01
+T: "right" "right" : 14 : 10 : 0.03
+T: "right" "right" : 14 : 15 : 0.48
+T: "right" "right" : 14 : 12 : 0.08
+T: "right" "right" : 14 : 14 : 0.24
+T: "right" "stay" : 14 : 6 : 0.1
+T: "right" "stay" : 14 : 10 : 0.1
+T: "right" "stay" : 14 : 14 : 0.8
+T: "stay" "up" : 14 : 12 : 0.6
+T: "stay" "up" : 14 : 15 : 0.1
+T: "stay" "up" : 14 : 14 : 0.3
+T: "stay" "down" : 14 : 15 : 0.1
+T: "stay" "down" : 14 : 12 : 0.1
+T: "stay" "down" : 14 : 14 : 0.8
+T: "stay" "left" : 14 : 12 : 0.1
+T: "stay" "left" : 14 : 15 : 0.1
+T: "stay" "left" : 14 : 14 : 0.8
+T: "stay" "right" : 14 : 15 : 0.6
+T: "stay" "right" : 14 : 12 : 0.1
+T: "stay" "right" : 14 : 14 : 0.3
+T: "stay" "stay" : 14 : 14 : 1.0
+T: "up" "up" : 15 : 5 : 0.36
+T: "up" "up" : 15 : 6 : 0.06
+T: "up" "up" : 15 : 7 : 0.18
+T: "up" "up" : 15 : 9 : 0.06
+T: "up" "up" : 15 : 10 : 0.01
+T: "up" "up" : 15 : 11 : 0.03
+T: "up" "up" : 15 : 13 : 0.18
+T: "up" "up" : 15 : 14 : 0.03
+T: "up" "up" : 15 : 15 : 0.09
+T: "up" "down" : 15 : 6 : 0.06
+T: "up" "down" : 15 : 5 : 0.06
+T: "up" "down" : 15 : 7 : 0.48
+T: "up" "down" : 15 : 10 : 0.01
+T: "up" "down" : 15 : 9 : 0.01
+T: "up" "down" : 15 : 11 : 0.08
+T: "up" "down" : 15 : 14 : 0.03
+T: "up" "down" : 15 : 13 : 0.03
+T: "up" "down" : 15 : 15 : 0.24
+T: "up" "left" : 15 : 6 : 0.36
+T: "up" "left" : 15 : 5 : 0.06
+T: "up" "left" : 15 : 7 : 0.18
+T: "up" "left" : 15 : 10 : 0.06
+T: "up" "left" : 15 : 9 : 0.01
+T: "up" "left" : 15 : 11 : 0.03
+T: "up" "left" : 15 : 14 : 0.18
+T: "up" "left" : 15 : 13 : 0.03
+T: "up" "left" : 15 : 15 : 0.09
+T: "up" "right" : 15 : 5 : 0.06
+T: "up" "right" : 15 : 6 : 0.06
+T: "up" "right" : 15 : 7 : 0.48
+T: "up" "right" : 15 : 9 : 0.01
+T: "up" "right" : 15 : 10 : 0.01
+T: "up" "right" : 15 : 11 : 0.08
+T: "up" "right" : 15 : 13 : 0.03
+T: "up" "right" : 15 : 14 : 0.03
+T: "up" "right" : 15 : 15 : 0.24
+T: "up" "stay" : 15 : 7 : 0.6
+T: "up" "stay" : 15 : 11 : 0.1
+T: "up" "stay" : 15 : 15 : 0.3
+T: "down" "up" : 15 : 9 : 0.06
+T: "down" "up" : 15 : 10 : 0.01
+T: "down" "up" : 15 : 11 : 0.03
+T: "down" "up" : 15 : 5 : 0.06
+T: "down" "up" : 15 : 6 : 0.01
+T: "down" "up" : 15 : 7 : 0.03
+T: "down" "up" : 15 : 13 : 0.48
+T: "down" "up" : 15 : 14 : 0.08
+T: "down" "up" : 15 : 15 : 0.24
+T: "down" "down" : 15 : 10 : 0.01
+T: "down" "down" : 15 : 9 : 0.01
+T: "down" "down" : 15 : 11 : 0.08
+T: "down" "down" : 15 : 6 : 0.01
+T: "down" "down" : 15 : 5 : 0.01
+T: "down" "down" : 15 : 7 : 0.08
+T: "down" "down" : 15 : 14 : 0.08
+T: "down" "down" : 15 : 13 : 0.08
+T: "down" "down" : 15 : 15 : 0.64
+T: "down" "left" : 15 : 10 : 0.06
+T: "down" "left" : 15 : 9 : 0.01
+T: "down" "left" : 15 : 11 : 0.03
+T: "down" "left" : 15 : 6 : 0.06
+T: "down" "left" : 15 : 5 : 0.01
+T: "down" "left" : 15 : 7 : 0.03
+T: "down" "left" : 15 : 14 : 0.48
+T: "down" "left" : 15 : 13 : 0.08
+T: "down" "left" : 15 : 15 : 0.24
+T: "down" "right" : 15 : 9 : 0.01
+T: "down" "right" : 15 : 10 : 0.01
+T: "down" "right" : 15 : 11 : 0.08
+T: "down" "right" : 15 : 5 : 0.01
+T: "down" "right" : 15 : 6 : 0.01
+T: "down" "right" : 15 : 7 : 0.08
+T: "down" "right" : 15 : 13 : 0.08
+T: "down" "right" : 15 : 14 : 0.08
+T: "down" "right" : 15 : 15 : 0.64
+T: "down" "stay" : 15 : 11 : 0.1
+T: "down" "stay" : 15 : 7 : 0.1
+T: "down" "stay" : 15 : 15 : 0.8
+T: "left" "up" : 15 : 9 : 0.36
+T: "left" "up" : 15 : 10 : 0.06
+T: "left" "up" : 15 : 11 : 0.18
+T: "left" "up" : 15 : 5 : 0.06
+T: "left" "up" : 15 : 6 : 0.01
+T: "left" "up" : 15 : 7 : 0.03
+T: "left" "up" : 15 : 13 : 0.18
+T: "left" "up" : 15 : 14 : 0.03
+T: "left" "up" : 15 : 15 : 0.09
+T: "left" "down" : 15 : 10 : 0.06
+T: "left" "down" : 15 : 9 : 0.06
+T: "left" "down" : 15 : 11 : 0.48
+T: "left" "down" : 15 : 6 : 0.01
+T: "left" "down" : 15 : 5 : 0.01
+T: "left" "down" : 15 : 7 : 0.08
+T: "left" "down" : 15 : 14 : 0.03
+T: "left" "down" : 15 : 13 : 0.03
+T: "left" "down" : 15 : 15 : 0.24
+T: "left" "left" : 15 : 10 : 0.36
+T: "left" "left" : 15 : 9 : 0.06
+T: "left" "left" : 15 : 11 : 0.18
+T: "left" "left" : 15 : 6 : 0.06
+T: "left" "left" : 15 : 5 : 0.01
+T: "left" "left" : 15 : 7 : 0.03
+T: "left" "left" : 15 : 14 : 0.18
+T: "left" "left" : 15 : 13 : 0.03
+T: "left" "left" : 15 : 15 : 0.09
+T: "left" "right" : 15 : 9 : 0.06
+T: "left" "right" : 15 : 10 : 0.06
+T: "left" "right" : 15 : 11 : 0.48
+T: "left" "right" : 15 : 5 : 0.01
+T: "left" "right" : 15 : 6 : 0.01
+T: "left" "right" : 15 : 7 : 0.08
+T: "left" "right" : 15 : 13 : 0.03
+T: "left" "right" : 15 : 14 : 0.03
+T: "left" "right" : 15 : 15 : 0.24
+T: "left" "stay" : 15 : 11 : 0.6
+T: "left" "stay" : 15 : 7 : 0.1
+T: "left" "stay" : 15 : 15 : 0.3
+T: "right" "up" : 15 : 5 : 0.06
+T: "right" "up" : 15 : 6 : 0.01
+T: "right" "up" : 15 : 7 : 0.03
+T: "right" "up" : 15 : 9 : 0.06
+T: "right" "up" : 15 : 10 : 0.01
+T: "right" "up" : 15 : 11 : 0.03
+T: "right" "up" : 15 : 13 : 0.48
+T: "right" "up" : 15 : 14 : 0.08
+T: "right" "up" : 15 : 15 : 0.24
+T: "right" "down" : 15 : 6 : 0.01
+T: "right" "down" : 15 : 5 : 0.01
+T: "right" "down" : 15 : 7 : 0.08
+T: "right" "down" : 15 : 10 : 0.01
+T: "right" "down" : 15 : 9 : 0.01
+T: "right" "down" : 15 : 11 : 0.08
+T: "right" "down" : 15 : 14 : 0.08
+T: "right" "down" : 15 : 13 : 0.08
+T: "right" "down" : 15 : 15 : 0.64
+T: "right" "left" : 15 : 6 : 0.06
+T: "right" "left" : 15 : 5 : 0.01
+T: "right" "left" : 15 : 7 : 0.03
+T: "right" "left" : 15 : 10 : 0.06
+T: "right" "left" : 15 : 9 : 0.01
+T: "right" "left" : 15 : 11 : 0.03
+T: "right" "left" : 15 : 14 : 0.48
+T: "right" "left" : 15 : 13 : 0.08
+T: "right" "left" : 15 : 15 : 0.24
+T: "right" "right" : 15 : 5 : 0.01
+T: "right" "right" : 15 : 6 : 0.01
+T: "right" "right" : 15 : 7 : 0.08
+T: "right" "right" : 15 : 9 : 0.01
+T: "right" "right" : 15 : 10 : 0.01
+T: "right" "right" : 15 : 11 : 0.08
+T: "right" "right" : 15 : 13 : 0.08
+T: "right" "right" : 15 : 14 : 0.08
+T: "right" "right" : 15 : 15 : 0.64
+T: "right" "stay" : 15 : 7 : 0.1
+T: "right" "stay" : 15 : 11 : 0.1
+T: "right" "stay" : 15 : 15 : 0.8
+T: "stay" "up" : 15 : 13 : 0.6
+T: "stay" "up" : 15 : 14 : 0.1
+T: "stay" "up" : 15 : 15 : 0.3
+T: "stay" "down" : 15 : 14 : 0.1
+T: "stay" "down" : 15 : 13 : 0.1
+T: "stay" "down" : 15 : 15 : 0.8
+T: "stay" "left" : 15 : 14 : 0.6
+T: "stay" "left" : 15 : 13 : 0.1
+T: "stay" "left" : 15 : 15 : 0.3
+T: "stay" "right" : 15 : 13 : 0.1
+T: "stay" "right" : 15 : 14 : 0.1
+T: "stay" "right" : 15 : 15 : 0.8
+T: "stay" "stay" : 15 : 15 : 1.0
+O: "*" : 0 : "nnnnnynnn" "nnnnnynnn" : 1.0
+O: "*" : 1 : "nnnnnynnn" "nnnynnnnn" : 1.0
+O: "*" : 2 : "nnnnnynnn" "nnnnnynnn" : 1.0
+O: "*" : 3 : "nnnnnynnn" "nnnynnnnn" : 1.0
+O: "*" : 4 : "nnnynnnnn" "nnnnnynnn" : 1.0
+O: "*" : 5 : "nnnynnnnn" "nnnynnnnn" : 1.0
+O: "*" : 6 : "nnnynnnnn" "nnnnnynnn" : 1.0
+O: "*" : 7 : "nnnynnnnn" "nnnynnnnn" : 1.0
+O: "*" : 8 : "nnnnnynnn" "nnnnnynnn" : 1.0
+O: "*" : 9 : "nnnnnynnn" "nnnynnnnn" : 1.0
+O: "*" : 10 : "nnnnnynnn" "nnnnnynnn" : 1.0
+O: "*" : 11 : "nnnnnynnn" "nnnynnnnn" : 1.0
+O: "*" : 12 : "nnnynnnnn" "nnnnnynnn" : 1.0
+O: "*" : 13 : "nnnynnnnn" "nnnynnnnn" : 1.0
+O: "*" : 14 : "nnnynnnnn" "nnnnnynnn" : 1.0
+O: "*" : 15 : "nnnynnnnn" "nnnynnnnn" : 1.0
+R: "*" : 0 : 1.0
+R: "*" : 1 : 0.0
+R: "*" : 5 : 1.0
+R: "*" : 10 : 1.0
+R: "*" : 15 : 1.0
diff --git a/code/src/problem_examples/dpomdp/GridSmall_light.dpomdp b/code/src/problem_examples/dpomdp/GridSmall_light.dpomdp
new file mode 100644
index 0000000000000000000000000000000000000000..b58a57acc1f11f8489cf2df1ed157a69cca825bc
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/GridSmall_light.dpomdp
@@ -0,0 +1,3514 @@
+agents: 2
+discount: 1
+states: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
+actions:
+0 1 2 3 4 
+0 1 2 3 4 
+observations:
+0 1 
+0 1 
+start: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
+T: 4 4 : 15 : 15 : 1
+T: 4 4 : 14 : 14 : 1
+T: 4 4 : 13 : 13 : 1
+T: 4 4 : 12 : 12 : 1
+T: 4 4 : 11 : 11 : 1
+T: 4 4 : 10 : 10 : 1
+T: 4 4 : 9 : 9 : 1
+T: 4 4 : 8 : 8 : 1
+T: 4 4 : 7 : 7 : 1
+T: 4 4 : 6 : 6 : 1
+T: 4 4 : 1 : 1 : 1
+T: 4 4 : 0 : 0 : 1
+T: 4 4 : 2 : 2 : 1
+T: 4 4 : 3 : 3 : 1
+T: 4 4 : 4 : 4 : 1
+T: 4 4 : 5 : 5 : 1
+T: 4 3 : 15 : 15 : 0.8
+T: 4 3 : 15 : 13 : 0.1
+T: 4 3 : 15 : 14 : 0.1
+T: 4 3 : 14 : 14 : 0.3
+T: 4 3 : 14 : 15 : 0.6
+T: 4 3 : 14 : 12 : 0.1
+T: 4 3 : 13 : 13 : 0.8
+T: 4 3 : 13 : 15 : 0.1
+T: 4 3 : 13 : 12 : 0.1
+T: 4 3 : 12 : 12 : 0.3
+T: 4 3 : 12 : 13 : 0.6
+T: 4 3 : 12 : 14 : 0.1
+T: 4 3 : 11 : 11 : 0.8
+T: 4 3 : 11 : 9 : 0.1
+T: 4 3 : 11 : 10 : 0.1
+T: 4 3 : 10 : 10 : 0.3
+T: 4 3 : 10 : 11 : 0.6
+T: 4 3 : 10 : 8 : 0.1
+T: 4 3 : 9 : 9 : 0.8
+T: 4 3 : 9 : 11 : 0.1
+T: 4 3 : 9 : 8 : 0.1
+T: 4 3 : 8 : 8 : 0.3
+T: 4 3 : 8 : 9 : 0.6
+T: 4 3 : 8 : 10 : 0.1
+T: 4 3 : 7 : 7 : 0.8
+T: 4 3 : 7 : 5 : 0.1
+T: 4 3 : 7 : 6 : 0.1
+T: 4 3 : 6 : 6 : 0.3
+T: 4 3 : 6 : 7 : 0.6
+T: 4 3 : 6 : 4 : 0.1
+T: 4 3 : 1 : 1 : 0.8
+T: 4 3 : 1 : 3 : 0.1
+T: 4 3 : 1 : 0 : 0.1
+T: 4 3 : 0 : 0 : 0.3
+T: 4 3 : 0 : 1 : 0.6
+T: 4 3 : 0 : 2 : 0.1
+T: 4 3 : 2 : 2 : 0.3
+T: 4 3 : 2 : 3 : 0.6
+T: 4 3 : 2 : 0 : 0.1
+T: 4 3 : 3 : 3 : 0.8
+T: 4 3 : 3 : 1 : 0.1
+T: 4 3 : 3 : 2 : 0.1
+T: 4 3 : 4 : 4 : 0.3
+T: 4 3 : 4 : 5 : 0.6
+T: 4 3 : 4 : 6 : 0.1
+T: 4 3 : 5 : 5 : 0.8
+T: 4 3 : 5 : 7 : 0.1
+T: 4 3 : 5 : 4 : 0.1
+T: 4 2 : 15 : 15 : 0.3
+T: 4 2 : 15 : 14 : 0.6
+T: 4 2 : 15 : 13 : 0.1
+T: 4 2 : 14 : 14 : 0.8
+T: 4 2 : 14 : 12 : 0.1
+T: 4 2 : 14 : 15 : 0.1
+T: 4 2 : 13 : 13 : 0.3
+T: 4 2 : 13 : 12 : 0.6
+T: 4 2 : 13 : 15 : 0.1
+T: 4 2 : 12 : 12 : 0.8
+T: 4 2 : 12 : 14 : 0.1
+T: 4 2 : 12 : 13 : 0.1
+T: 4 2 : 11 : 11 : 0.3
+T: 4 2 : 11 : 10 : 0.6
+T: 4 2 : 11 : 9 : 0.1
+T: 4 2 : 10 : 10 : 0.8
+T: 4 2 : 10 : 8 : 0.1
+T: 4 2 : 10 : 11 : 0.1
+T: 4 2 : 9 : 9 : 0.3
+T: 4 2 : 9 : 8 : 0.6
+T: 4 2 : 9 : 11 : 0.1
+T: 4 2 : 8 : 8 : 0.8
+T: 4 2 : 8 : 10 : 0.1
+T: 4 2 : 8 : 9 : 0.1
+T: 4 2 : 7 : 7 : 0.3
+T: 4 2 : 7 : 6 : 0.6
+T: 4 2 : 7 : 5 : 0.1
+T: 4 2 : 6 : 6 : 0.8
+T: 4 2 : 6 : 4 : 0.1
+T: 4 2 : 6 : 7 : 0.1
+T: 4 2 : 1 : 1 : 0.3
+T: 4 2 : 1 : 0 : 0.6
+T: 4 2 : 1 : 3 : 0.1
+T: 4 2 : 0 : 0 : 0.8
+T: 4 2 : 0 : 2 : 0.1
+T: 4 2 : 0 : 1 : 0.1
+T: 4 2 : 2 : 2 : 0.8
+T: 4 2 : 2 : 0 : 0.1
+T: 4 2 : 2 : 3 : 0.1
+T: 4 2 : 3 : 3 : 0.3
+T: 4 2 : 3 : 2 : 0.6
+T: 4 2 : 3 : 1 : 0.1
+T: 4 2 : 4 : 4 : 0.8
+T: 4 2 : 4 : 6 : 0.1
+T: 4 2 : 4 : 5 : 0.1
+T: 4 2 : 5 : 5 : 0.3
+T: 4 2 : 5 : 4 : 0.6
+T: 4 2 : 5 : 7 : 0.1
+T: 4 1 : 15 : 15 : 0.8
+T: 4 1 : 15 : 14 : 0.1
+T: 4 1 : 15 : 13 : 0.1
+T: 4 1 : 14 : 14 : 0.8
+T: 4 1 : 14 : 15 : 0.1
+T: 4 1 : 14 : 12 : 0.1
+T: 4 1 : 13 : 13 : 0.3
+T: 4 1 : 13 : 15 : 0.6
+T: 4 1 : 13 : 12 : 0.1
+T: 4 1 : 12 : 12 : 0.3
+T: 4 1 : 12 : 14 : 0.6
+T: 4 1 : 12 : 13 : 0.1
+T: 4 1 : 11 : 11 : 0.8
+T: 4 1 : 11 : 10 : 0.1
+T: 4 1 : 11 : 9 : 0.1
+T: 4 1 : 10 : 10 : 0.8
+T: 4 1 : 10 : 11 : 0.1
+T: 4 1 : 10 : 8 : 0.1
+T: 4 1 : 9 : 9 : 0.3
+T: 4 1 : 9 : 11 : 0.6
+T: 4 1 : 9 : 8 : 0.1
+T: 4 1 : 8 : 8 : 0.3
+T: 4 1 : 8 : 10 : 0.6
+T: 4 1 : 8 : 9 : 0.1
+T: 4 1 : 7 : 7 : 0.8
+T: 4 1 : 7 : 6 : 0.1
+T: 4 1 : 7 : 5 : 0.1
+T: 4 1 : 6 : 6 : 0.8
+T: 4 1 : 6 : 7 : 0.1
+T: 4 1 : 6 : 4 : 0.1
+T: 4 1 : 1 : 1 : 0.3
+T: 4 1 : 1 : 3 : 0.6
+T: 4 1 : 1 : 0 : 0.1
+T: 4 1 : 0 : 0 : 0.3
+T: 4 1 : 0 : 2 : 0.6
+T: 4 1 : 0 : 1 : 0.1
+T: 4 1 : 2 : 2 : 0.8
+T: 4 1 : 2 : 3 : 0.1
+T: 4 1 : 2 : 0 : 0.1
+T: 4 1 : 3 : 3 : 0.8
+T: 4 1 : 3 : 2 : 0.1
+T: 4 1 : 3 : 1 : 0.1
+T: 4 1 : 4 : 4 : 0.3
+T: 4 1 : 4 : 6 : 0.6
+T: 4 1 : 4 : 5 : 0.1
+T: 4 1 : 5 : 5 : 0.3
+T: 4 1 : 5 : 7 : 0.6
+T: 4 1 : 5 : 4 : 0.1
+T: 4 0 : 15 : 15 : 0.3
+T: 4 0 : 15 : 13 : 0.6
+T: 4 0 : 15 : 14 : 0.1
+T: 4 0 : 14 : 14 : 0.3
+T: 4 0 : 14 : 12 : 0.6
+T: 4 0 : 14 : 15 : 0.1
+T: 4 0 : 13 : 13 : 0.8
+T: 4 0 : 13 : 12 : 0.1
+T: 4 0 : 13 : 15 : 0.1
+T: 4 0 : 12 : 12 : 0.8
+T: 4 0 : 12 : 13 : 0.1
+T: 4 0 : 12 : 14 : 0.1
+T: 4 0 : 11 : 11 : 0.3
+T: 4 0 : 11 : 9 : 0.6
+T: 4 0 : 11 : 10 : 0.1
+T: 4 0 : 10 : 10 : 0.3
+T: 4 0 : 10 : 8 : 0.6
+T: 4 0 : 10 : 11 : 0.1
+T: 4 0 : 9 : 9 : 0.8
+T: 4 0 : 9 : 8 : 0.1
+T: 4 0 : 9 : 11 : 0.1
+T: 4 0 : 8 : 8 : 0.8
+T: 4 0 : 8 : 9 : 0.1
+T: 4 0 : 8 : 10 : 0.1
+T: 4 0 : 7 : 7 : 0.3
+T: 4 0 : 7 : 5 : 0.6
+T: 4 0 : 7 : 6 : 0.1
+T: 4 0 : 6 : 6 : 0.3
+T: 4 0 : 6 : 4 : 0.6
+T: 4 0 : 6 : 7 : 0.1
+T: 4 0 : 1 : 1 : 0.8
+T: 4 0 : 1 : 0 : 0.1
+T: 4 0 : 1 : 3 : 0.1
+T: 4 0 : 0 : 0 : 0.8
+T: 4 0 : 0 : 1 : 0.1
+T: 4 0 : 0 : 2 : 0.1
+T: 4 0 : 2 : 2 : 0.3
+T: 4 0 : 2 : 0 : 0.6
+T: 4 0 : 2 : 3 : 0.1
+T: 4 0 : 3 : 3 : 0.3
+T: 4 0 : 3 : 1 : 0.6
+T: 4 0 : 3 : 2 : 0.1
+T: 4 0 : 4 : 4 : 0.8
+T: 4 0 : 4 : 5 : 0.1
+T: 4 0 : 4 : 6 : 0.1
+T: 4 0 : 5 : 5 : 0.8
+T: 4 0 : 5 : 4 : 0.1
+T: 4 0 : 5 : 7 : 0.1
+T: 3 4 : 15 : 15 : 0.8
+T: 3 4 : 15 : 7 : 0.1
+T: 3 4 : 15 : 11 : 0.1
+T: 3 4 : 14 : 14 : 0.8
+T: 3 4 : 14 : 6 : 0.1
+T: 3 4 : 14 : 10 : 0.1
+T: 3 4 : 13 : 13 : 0.8
+T: 3 4 : 13 : 5 : 0.1
+T: 3 4 : 13 : 9 : 0.1
+T: 3 4 : 12 : 12 : 0.8
+T: 3 4 : 12 : 4 : 0.1
+T: 3 4 : 12 : 8 : 0.1
+T: 3 4 : 11 : 11 : 0.3
+T: 3 4 : 11 : 15 : 0.6
+T: 3 4 : 11 : 3 : 0.1
+T: 3 4 : 10 : 10 : 0.3
+T: 3 4 : 10 : 14 : 0.6
+T: 3 4 : 10 : 2 : 0.1
+T: 3 4 : 9 : 9 : 0.3
+T: 3 4 : 9 : 13 : 0.6
+T: 3 4 : 9 : 1 : 0.1
+T: 3 4 : 8 : 8 : 0.3
+T: 3 4 : 8 : 12 : 0.6
+T: 3 4 : 8 : 0 : 0.1
+T: 3 4 : 7 : 7 : 0.8
+T: 3 4 : 7 : 15 : 0.1
+T: 3 4 : 7 : 3 : 0.1
+T: 3 4 : 6 : 6 : 0.8
+T: 3 4 : 6 : 14 : 0.1
+T: 3 4 : 6 : 2 : 0.1
+T: 3 4 : 1 : 1 : 0.3
+T: 3 4 : 1 : 5 : 0.6
+T: 3 4 : 1 : 9 : 0.1
+T: 3 4 : 0 : 0 : 0.3
+T: 3 4 : 0 : 4 : 0.6
+T: 3 4 : 0 : 8 : 0.1
+T: 3 4 : 2 : 2 : 0.3
+T: 3 4 : 2 : 6 : 0.6
+T: 3 4 : 2 : 10 : 0.1
+T: 3 4 : 3 : 3 : 0.3
+T: 3 4 : 3 : 7 : 0.6
+T: 3 4 : 3 : 11 : 0.1
+T: 3 4 : 4 : 4 : 0.8
+T: 3 4 : 4 : 12 : 0.1
+T: 3 4 : 4 : 0 : 0.1
+T: 3 4 : 5 : 5 : 0.8
+T: 3 4 : 5 : 13 : 0.1
+T: 3 4 : 5 : 1 : 0.1
+T: 3 3 : 15 : 15 : 0.64
+T: 3 3 : 15 : 14 : 0.08
+T: 3 3 : 15 : 13 : 0.08
+T: 3 3 : 15 : 6 : 0.01
+T: 3 3 : 15 : 5 : 0.01
+T: 3 3 : 15 : 7 : 0.08
+T: 3 3 : 15 : 9 : 0.01
+T: 3 3 : 15 : 10 : 0.01
+T: 3 3 : 15 : 11 : 0.08
+T: 3 3 : 14 : 14 : 0.24
+T: 3 3 : 14 : 12 : 0.08
+T: 3 3 : 14 : 15 : 0.48
+T: 3 3 : 14 : 4 : 0.01
+T: 3 3 : 14 : 11 : 0.06
+T: 3 3 : 14 : 7 : 0.06
+T: 3 3 : 14 : 6 : 0.03
+T: 3 3 : 14 : 8 : 0.01
+T: 3 3 : 14 : 10 : 0.03
+T: 3 3 : 13 : 13 : 0.64
+T: 3 3 : 13 : 12 : 0.08
+T: 3 3 : 13 : 15 : 0.08
+T: 3 3 : 13 : 4 : 0.01
+T: 3 3 : 13 : 11 : 0.01
+T: 3 3 : 13 : 7 : 0.01
+T: 3 3 : 13 : 5 : 0.08
+T: 3 3 : 13 : 8 : 0.01
+T: 3 3 : 13 : 9 : 0.08
+T: 3 3 : 12 : 12 : 0.24
+T: 3 3 : 12 : 14 : 0.08
+T: 3 3 : 12 : 13 : 0.48
+T: 3 3 : 12 : 6 : 0.01
+T: 3 3 : 12 : 5 : 0.06
+T: 3 3 : 12 : 4 : 0.03
+T: 3 3 : 12 : 9 : 0.06
+T: 3 3 : 12 : 10 : 0.01
+T: 3 3 : 12 : 8 : 0.03
+T: 3 3 : 11 : 11 : 0.24
+T: 3 3 : 11 : 10 : 0.03
+T: 3 3 : 11 : 9 : 0.03
+T: 3 3 : 11 : 14 : 0.06
+T: 3 3 : 11 : 13 : 0.06
+T: 3 3 : 11 : 15 : 0.48
+T: 3 3 : 11 : 1 : 0.01
+T: 3 3 : 11 : 2 : 0.01
+T: 3 3 : 11 : 3 : 0.08
+T: 3 3 : 10 : 10 : 0.09
+T: 3 3 : 10 : 8 : 0.03
+T: 3 3 : 10 : 11 : 0.18
+T: 3 3 : 10 : 12 : 0.06
+T: 3 3 : 10 : 15 : 0.36
+T: 3 3 : 10 : 14 : 0.18
+T: 3 3 : 10 : 0 : 0.01
+T: 3 3 : 10 : 3 : 0.06
+T: 3 3 : 10 : 2 : 0.03
+T: 3 3 : 9 : 9 : 0.24
+T: 3 3 : 9 : 8 : 0.03
+T: 3 3 : 9 : 11 : 0.03
+T: 3 3 : 9 : 12 : 0.06
+T: 3 3 : 9 : 15 : 0.06
+T: 3 3 : 9 : 1 : 0.08
+T: 3 3 : 9 : 13 : 0.48
+T: 3 3 : 9 : 3 : 0.01
+T: 3 3 : 9 : 0 : 0.01
+T: 3 3 : 8 : 8 : 0.09
+T: 3 3 : 8 : 10 : 0.03
+T: 3 3 : 8 : 9 : 0.18
+T: 3 3 : 8 : 14 : 0.06
+T: 3 3 : 8 : 0 : 0.03
+T: 3 3 : 8 : 13 : 0.36
+T: 3 3 : 8 : 12 : 0.18
+T: 3 3 : 8 : 1 : 0.06
+T: 3 3 : 8 : 2 : 0.01
+T: 3 3 : 7 : 7 : 0.64
+T: 3 3 : 7 : 6 : 0.08
+T: 3 3 : 7 : 5 : 0.08
+T: 3 3 : 7 : 14 : 0.01
+T: 3 3 : 7 : 13 : 0.01
+T: 3 3 : 7 : 15 : 0.08
+T: 3 3 : 7 : 1 : 0.01
+T: 3 3 : 7 : 2 : 0.01
+T: 3 3 : 7 : 3 : 0.08
+T: 3 3 : 6 : 6 : 0.24
+T: 3 3 : 6 : 4 : 0.08
+T: 3 3 : 6 : 7 : 0.48
+T: 3 3 : 6 : 12 : 0.01
+T: 3 3 : 6 : 15 : 0.06
+T: 3 3 : 6 : 14 : 0.03
+T: 3 3 : 6 : 0 : 0.01
+T: 3 3 : 6 : 3 : 0.06
+T: 3 3 : 6 : 2 : 0.03
+T: 3 3 : 1 : 1 : 0.24
+T: 3 3 : 1 : 0 : 0.03
+T: 3 3 : 1 : 3 : 0.03
+T: 3 3 : 1 : 4 : 0.06
+T: 3 3 : 1 : 11 : 0.01
+T: 3 3 : 1 : 7 : 0.06
+T: 3 3 : 1 : 5 : 0.48
+T: 3 3 : 1 : 8 : 0.01
+T: 3 3 : 1 : 9 : 0.08
+T: 3 3 : 0 : 0 : 0.09
+T: 3 3 : 0 : 2 : 0.03
+T: 3 3 : 0 : 1 : 0.18
+T: 3 3 : 0 : 6 : 0.06
+T: 3 3 : 0 : 5 : 0.36
+T: 3 3 : 0 : 4 : 0.18
+T: 3 3 : 0 : 9 : 0.06
+T: 3 3 : 0 : 10 : 0.01
+T: 3 3 : 0 : 8 : 0.03
+T: 3 3 : 2 : 2 : 0.09
+T: 3 3 : 2 : 0 : 0.03
+T: 3 3 : 2 : 3 : 0.18
+T: 3 3 : 2 : 4 : 0.06
+T: 3 3 : 2 : 11 : 0.06
+T: 3 3 : 2 : 7 : 0.36
+T: 3 3 : 2 : 6 : 0.18
+T: 3 3 : 2 : 8 : 0.01
+T: 3 3 : 2 : 10 : 0.03
+T: 3 3 : 3 : 3 : 0.24
+T: 3 3 : 3 : 2 : 0.03
+T: 3 3 : 3 : 1 : 0.03
+T: 3 3 : 3 : 6 : 0.06
+T: 3 3 : 3 : 5 : 0.06
+T: 3 3 : 3 : 7 : 0.48
+T: 3 3 : 3 : 9 : 0.01
+T: 3 3 : 3 : 10 : 0.01
+T: 3 3 : 3 : 11 : 0.08
+T: 3 3 : 4 : 4 : 0.24
+T: 3 3 : 4 : 6 : 0.08
+T: 3 3 : 4 : 5 : 0.48
+T: 3 3 : 4 : 14 : 0.01
+T: 3 3 : 4 : 0 : 0.03
+T: 3 3 : 4 : 13 : 0.06
+T: 3 3 : 4 : 12 : 0.03
+T: 3 3 : 4 : 1 : 0.06
+T: 3 3 : 4 : 2 : 0.01
+T: 3 3 : 5 : 5 : 0.64
+T: 3 3 : 5 : 4 : 0.08
+T: 3 3 : 5 : 7 : 0.08
+T: 3 3 : 5 : 12 : 0.01
+T: 3 3 : 5 : 15 : 0.01
+T: 3 3 : 5 : 1 : 0.08
+T: 3 3 : 5 : 13 : 0.08
+T: 3 3 : 5 : 3 : 0.01
+T: 3 3 : 5 : 0 : 0.01
+T: 3 2 : 15 : 15 : 0.24
+T: 3 2 : 15 : 13 : 0.08
+T: 3 2 : 15 : 14 : 0.48
+T: 3 2 : 15 : 5 : 0.01
+T: 3 2 : 15 : 6 : 0.06
+T: 3 2 : 15 : 7 : 0.03
+T: 3 2 : 15 : 10 : 0.06
+T: 3 2 : 15 : 9 : 0.01
+T: 3 2 : 15 : 11 : 0.03
+T: 3 2 : 14 : 14 : 0.64
+T: 3 2 : 14 : 15 : 0.08
+T: 3 2 : 14 : 12 : 0.08
+T: 3 2 : 14 : 7 : 0.01
+T: 3 2 : 14 : 4 : 0.01
+T: 3 2 : 14 : 11 : 0.01
+T: 3 2 : 14 : 6 : 0.08
+T: 3 2 : 14 : 8 : 0.01
+T: 3 2 : 14 : 10 : 0.08
+T: 3 2 : 13 : 13 : 0.24
+T: 3 2 : 13 : 15 : 0.08
+T: 3 2 : 13 : 12 : 0.48
+T: 3 2 : 13 : 7 : 0.01
+T: 3 2 : 13 : 4 : 0.06
+T: 3 2 : 13 : 11 : 0.01
+T: 3 2 : 13 : 5 : 0.03
+T: 3 2 : 13 : 8 : 0.06
+T: 3 2 : 13 : 9 : 0.03
+T: 3 2 : 12 : 12 : 0.64
+T: 3 2 : 12 : 13 : 0.08
+T: 3 2 : 12 : 14 : 0.08
+T: 3 2 : 12 : 5 : 0.01
+T: 3 2 : 12 : 6 : 0.01
+T: 3 2 : 12 : 4 : 0.08
+T: 3 2 : 12 : 10 : 0.01
+T: 3 2 : 12 : 9 : 0.01
+T: 3 2 : 12 : 8 : 0.08
+T: 3 2 : 11 : 11 : 0.09
+T: 3 2 : 11 : 9 : 0.03
+T: 3 2 : 11 : 10 : 0.18
+T: 3 2 : 11 : 13 : 0.06
+T: 3 2 : 11 : 14 : 0.36
+T: 3 2 : 11 : 15 : 0.18
+T: 3 2 : 11 : 1 : 0.01
+T: 3 2 : 11 : 2 : 0.06
+T: 3 2 : 11 : 3 : 0.03
+T: 3 2 : 10 : 10 : 0.24
+T: 3 2 : 10 : 11 : 0.03
+T: 3 2 : 10 : 8 : 0.03
+T: 3 2 : 10 : 15 : 0.06
+T: 3 2 : 10 : 12 : 0.06
+T: 3 2 : 10 : 14 : 0.48
+T: 3 2 : 10 : 0 : 0.01
+T: 3 2 : 10 : 3 : 0.01
+T: 3 2 : 10 : 2 : 0.08
+T: 3 2 : 9 : 9 : 0.09
+T: 3 2 : 9 : 11 : 0.03
+T: 3 2 : 9 : 8 : 0.18
+T: 3 2 : 9 : 15 : 0.06
+T: 3 2 : 9 : 1 : 0.03
+T: 3 2 : 9 : 12 : 0.36
+T: 3 2 : 9 : 13 : 0.18
+T: 3 2 : 9 : 0 : 0.06
+T: 3 2 : 9 : 3 : 0.01
+T: 3 2 : 8 : 8 : 0.24
+T: 3 2 : 8 : 9 : 0.03
+T: 3 2 : 8 : 10 : 0.03
+T: 3 2 : 8 : 13 : 0.06
+T: 3 2 : 8 : 14 : 0.06
+T: 3 2 : 8 : 0 : 0.08
+T: 3 2 : 8 : 12 : 0.48
+T: 3 2 : 8 : 2 : 0.01
+T: 3 2 : 8 : 1 : 0.01
+T: 3 2 : 7 : 7 : 0.24
+T: 3 2 : 7 : 5 : 0.08
+T: 3 2 : 7 : 6 : 0.48
+T: 3 2 : 7 : 13 : 0.01
+T: 3 2 : 7 : 14 : 0.06
+T: 3 2 : 7 : 15 : 0.03
+T: 3 2 : 7 : 1 : 0.01
+T: 3 2 : 7 : 2 : 0.06
+T: 3 2 : 7 : 3 : 0.03
+T: 3 2 : 6 : 6 : 0.64
+T: 3 2 : 6 : 7 : 0.08
+T: 3 2 : 6 : 4 : 0.08
+T: 3 2 : 6 : 15 : 0.01
+T: 3 2 : 6 : 12 : 0.01
+T: 3 2 : 6 : 14 : 0.08
+T: 3 2 : 6 : 0 : 0.01
+T: 3 2 : 6 : 3 : 0.01
+T: 3 2 : 6 : 2 : 0.08
+T: 3 2 : 1 : 1 : 0.09
+T: 3 2 : 1 : 3 : 0.03
+T: 3 2 : 1 : 0 : 0.18
+T: 3 2 : 1 : 7 : 0.06
+T: 3 2 : 1 : 4 : 0.36
+T: 3 2 : 1 : 11 : 0.01
+T: 3 2 : 1 : 5 : 0.18
+T: 3 2 : 1 : 8 : 0.06
+T: 3 2 : 1 : 9 : 0.03
+T: 3 2 : 0 : 0 : 0.24
+T: 3 2 : 0 : 1 : 0.03
+T: 3 2 : 0 : 2 : 0.03
+T: 3 2 : 0 : 5 : 0.06
+T: 3 2 : 0 : 6 : 0.06
+T: 3 2 : 0 : 4 : 0.48
+T: 3 2 : 0 : 10 : 0.01
+T: 3 2 : 0 : 9 : 0.01
+T: 3 2 : 0 : 8 : 0.08
+T: 3 2 : 2 : 2 : 0.24
+T: 3 2 : 2 : 3 : 0.03
+T: 3 2 : 2 : 0 : 0.03
+T: 3 2 : 2 : 7 : 0.06
+T: 3 2 : 2 : 4 : 0.06
+T: 3 2 : 2 : 11 : 0.01
+T: 3 2 : 2 : 6 : 0.48
+T: 3 2 : 2 : 8 : 0.01
+T: 3 2 : 2 : 10 : 0.08
+T: 3 2 : 3 : 3 : 0.09
+T: 3 2 : 3 : 1 : 0.03
+T: 3 2 : 3 : 2 : 0.18
+T: 3 2 : 3 : 5 : 0.06
+T: 3 2 : 3 : 6 : 0.36
+T: 3 2 : 3 : 7 : 0.18
+T: 3 2 : 3 : 10 : 0.06
+T: 3 2 : 3 : 9 : 0.01
+T: 3 2 : 3 : 11 : 0.03
+T: 3 2 : 4 : 4 : 0.64
+T: 3 2 : 4 : 5 : 0.08
+T: 3 2 : 4 : 6 : 0.08
+T: 3 2 : 4 : 13 : 0.01
+T: 3 2 : 4 : 14 : 0.01
+T: 3 2 : 4 : 0 : 0.08
+T: 3 2 : 4 : 12 : 0.08
+T: 3 2 : 4 : 2 : 0.01
+T: 3 2 : 4 : 1 : 0.01
+T: 3 2 : 5 : 5 : 0.24
+T: 3 2 : 5 : 7 : 0.08
+T: 3 2 : 5 : 4 : 0.48
+T: 3 2 : 5 : 15 : 0.01
+T: 3 2 : 5 : 1 : 0.03
+T: 3 2 : 5 : 12 : 0.06
+T: 3 2 : 5 : 13 : 0.03
+T: 3 2 : 5 : 0 : 0.06
+T: 3 2 : 5 : 3 : 0.01
+T: 3 1 : 15 : 15 : 0.64
+T: 3 1 : 15 : 13 : 0.08
+T: 3 1 : 15 : 14 : 0.08
+T: 3 1 : 15 : 5 : 0.01
+T: 3 1 : 15 : 6 : 0.01
+T: 3 1 : 15 : 7 : 0.08
+T: 3 1 : 15 : 10 : 0.01
+T: 3 1 : 15 : 9 : 0.01
+T: 3 1 : 15 : 11 : 0.08
+T: 3 1 : 14 : 14 : 0.64
+T: 3 1 : 14 : 12 : 0.08
+T: 3 1 : 14 : 15 : 0.08
+T: 3 1 : 14 : 4 : 0.01
+T: 3 1 : 14 : 11 : 0.01
+T: 3 1 : 14 : 7 : 0.01
+T: 3 1 : 14 : 6 : 0.08
+T: 3 1 : 14 : 8 : 0.01
+T: 3 1 : 14 : 10 : 0.08
+T: 3 1 : 13 : 13 : 0.24
+T: 3 1 : 13 : 12 : 0.08
+T: 3 1 : 13 : 15 : 0.48
+T: 3 1 : 13 : 4 : 0.01
+T: 3 1 : 13 : 11 : 0.06
+T: 3 1 : 13 : 7 : 0.06
+T: 3 1 : 13 : 5 : 0.03
+T: 3 1 : 13 : 8 : 0.01
+T: 3 1 : 13 : 9 : 0.03
+T: 3 1 : 12 : 12 : 0.24
+T: 3 1 : 12 : 13 : 0.08
+T: 3 1 : 12 : 14 : 0.48
+T: 3 1 : 12 : 5 : 0.01
+T: 3 1 : 12 : 6 : 0.06
+T: 3 1 : 12 : 4 : 0.03
+T: 3 1 : 12 : 10 : 0.06
+T: 3 1 : 12 : 9 : 0.01
+T: 3 1 : 12 : 8 : 0.03
+T: 3 1 : 11 : 11 : 0.24
+T: 3 1 : 11 : 9 : 0.03
+T: 3 1 : 11 : 10 : 0.03
+T: 3 1 : 11 : 13 : 0.06
+T: 3 1 : 11 : 14 : 0.06
+T: 3 1 : 11 : 15 : 0.48
+T: 3 1 : 11 : 1 : 0.01
+T: 3 1 : 11 : 2 : 0.01
+T: 3 1 : 11 : 3 : 0.08
+T: 3 1 : 10 : 10 : 0.24
+T: 3 1 : 10 : 8 : 0.03
+T: 3 1 : 10 : 11 : 0.03
+T: 3 1 : 10 : 12 : 0.06
+T: 3 1 : 10 : 15 : 0.06
+T: 3 1 : 10 : 14 : 0.48
+T: 3 1 : 10 : 0 : 0.01
+T: 3 1 : 10 : 3 : 0.01
+T: 3 1 : 10 : 2 : 0.08
+T: 3 1 : 9 : 9 : 0.09
+T: 3 1 : 9 : 8 : 0.03
+T: 3 1 : 9 : 11 : 0.18
+T: 3 1 : 9 : 12 : 0.06
+T: 3 1 : 9 : 15 : 0.36
+T: 3 1 : 9 : 1 : 0.03
+T: 3 1 : 9 : 13 : 0.18
+T: 3 1 : 9 : 3 : 0.06
+T: 3 1 : 9 : 0 : 0.01
+T: 3 1 : 8 : 8 : 0.09
+T: 3 1 : 8 : 9 : 0.03
+T: 3 1 : 8 : 10 : 0.18
+T: 3 1 : 8 : 13 : 0.06
+T: 3 1 : 8 : 14 : 0.36
+T: 3 1 : 8 : 0 : 0.03
+T: 3 1 : 8 : 12 : 0.18
+T: 3 1 : 8 : 2 : 0.06
+T: 3 1 : 8 : 1 : 0.01
+T: 3 1 : 7 : 7 : 0.64
+T: 3 1 : 7 : 5 : 0.08
+T: 3 1 : 7 : 6 : 0.08
+T: 3 1 : 7 : 13 : 0.01
+T: 3 1 : 7 : 14 : 0.01
+T: 3 1 : 7 : 15 : 0.08
+T: 3 1 : 7 : 1 : 0.01
+T: 3 1 : 7 : 2 : 0.01
+T: 3 1 : 7 : 3 : 0.08
+T: 3 1 : 6 : 6 : 0.64
+T: 3 1 : 6 : 4 : 0.08
+T: 3 1 : 6 : 7 : 0.08
+T: 3 1 : 6 : 12 : 0.01
+T: 3 1 : 6 : 15 : 0.01
+T: 3 1 : 6 : 14 : 0.08
+T: 3 1 : 6 : 0 : 0.01
+T: 3 1 : 6 : 3 : 0.01
+T: 3 1 : 6 : 2 : 0.08
+T: 3 1 : 1 : 1 : 0.09
+T: 3 1 : 1 : 0 : 0.03
+T: 3 1 : 1 : 3 : 0.18
+T: 3 1 : 1 : 4 : 0.06
+T: 3 1 : 1 : 11 : 0.06
+T: 3 1 : 1 : 7 : 0.36
+T: 3 1 : 1 : 5 : 0.18
+T: 3 1 : 1 : 8 : 0.01
+T: 3 1 : 1 : 9 : 0.03
+T: 3 1 : 0 : 0 : 0.09
+T: 3 1 : 0 : 1 : 0.03
+T: 3 1 : 0 : 2 : 0.18
+T: 3 1 : 0 : 5 : 0.06
+T: 3 1 : 0 : 6 : 0.36
+T: 3 1 : 0 : 4 : 0.18
+T: 3 1 : 0 : 10 : 0.06
+T: 3 1 : 0 : 9 : 0.01
+T: 3 1 : 0 : 8 : 0.03
+T: 3 1 : 2 : 2 : 0.24
+T: 3 1 : 2 : 0 : 0.03
+T: 3 1 : 2 : 3 : 0.03
+T: 3 1 : 2 : 4 : 0.06
+T: 3 1 : 2 : 11 : 0.01
+T: 3 1 : 2 : 7 : 0.06
+T: 3 1 : 2 : 6 : 0.48
+T: 3 1 : 2 : 8 : 0.01
+T: 3 1 : 2 : 10 : 0.08
+T: 3 1 : 3 : 3 : 0.24
+T: 3 1 : 3 : 1 : 0.03
+T: 3 1 : 3 : 2 : 0.03
+T: 3 1 : 3 : 5 : 0.06
+T: 3 1 : 3 : 6 : 0.06
+T: 3 1 : 3 : 7 : 0.48
+T: 3 1 : 3 : 10 : 0.01
+T: 3 1 : 3 : 9 : 0.01
+T: 3 1 : 3 : 11 : 0.08
+T: 3 1 : 4 : 4 : 0.24
+T: 3 1 : 4 : 5 : 0.08
+T: 3 1 : 4 : 6 : 0.48
+T: 3 1 : 4 : 13 : 0.01
+T: 3 1 : 4 : 14 : 0.06
+T: 3 1 : 4 : 0 : 0.03
+T: 3 1 : 4 : 12 : 0.03
+T: 3 1 : 4 : 2 : 0.06
+T: 3 1 : 4 : 1 : 0.01
+T: 3 1 : 5 : 5 : 0.24
+T: 3 1 : 5 : 4 : 0.08
+T: 3 1 : 5 : 7 : 0.48
+T: 3 1 : 5 : 12 : 0.01
+T: 3 1 : 5 : 15 : 0.06
+T: 3 1 : 5 : 1 : 0.03
+T: 3 1 : 5 : 13 : 0.03
+T: 3 1 : 5 : 3 : 0.06
+T: 3 1 : 5 : 0 : 0.01
+T: 1 0 : 15 : 15 : 0.24
+T: 1 0 : 15 : 14 : 0.08
+T: 1 0 : 15 : 13 : 0.48
+T: 1 0 : 15 : 10 : 0.01
+T: 1 0 : 15 : 9 : 0.06
+T: 1 0 : 15 : 11 : 0.03
+T: 1 0 : 15 : 5 : 0.06
+T: 1 0 : 15 : 6 : 0.01
+T: 1 0 : 15 : 7 : 0.03
+T: 1 0 : 14 : 14 : 0.24
+T: 1 0 : 14 : 15 : 0.08
+T: 1 0 : 14 : 12 : 0.48
+T: 1 0 : 14 : 11 : 0.01
+T: 1 0 : 14 : 4 : 0.06
+T: 1 0 : 14 : 8 : 0.06
+T: 1 0 : 14 : 10 : 0.03
+T: 1 0 : 14 : 7 : 0.01
+T: 1 0 : 14 : 6 : 0.03
+T: 1 0 : 13 : 13 : 0.64
+T: 1 0 : 13 : 15 : 0.08
+T: 1 0 : 13 : 12 : 0.08
+T: 1 0 : 13 : 11 : 0.01
+T: 1 0 : 13 : 4 : 0.01
+T: 1 0 : 13 : 8 : 0.01
+T: 1 0 : 13 : 9 : 0.08
+T: 1 0 : 13 : 7 : 0.01
+T: 1 0 : 13 : 5 : 0.08
+T: 1 0 : 12 : 12 : 0.64
+T: 1 0 : 12 : 14 : 0.08
+T: 1 0 : 12 : 13 : 0.08
+T: 1 0 : 12 : 10 : 0.01
+T: 1 0 : 12 : 9 : 0.01
+T: 1 0 : 12 : 8 : 0.08
+T: 1 0 : 12 : 5 : 0.01
+T: 1 0 : 12 : 6 : 0.01
+T: 1 0 : 12 : 4 : 0.08
+T: 1 0 : 11 : 11 : 0.24
+T: 1 0 : 11 : 10 : 0.08
+T: 1 0 : 11 : 9 : 0.48
+T: 1 0 : 11 : 14 : 0.01
+T: 1 0 : 11 : 13 : 0.06
+T: 1 0 : 11 : 15 : 0.03
+T: 1 0 : 11 : 1 : 0.06
+T: 1 0 : 11 : 2 : 0.01
+T: 1 0 : 11 : 3 : 0.03
+T: 1 0 : 10 : 10 : 0.24
+T: 1 0 : 10 : 11 : 0.08
+T: 1 0 : 10 : 8 : 0.48
+T: 1 0 : 10 : 15 : 0.01
+T: 1 0 : 10 : 12 : 0.06
+T: 1 0 : 10 : 14 : 0.03
+T: 1 0 : 10 : 0 : 0.06
+T: 1 0 : 10 : 3 : 0.01
+T: 1 0 : 10 : 2 : 0.03
+T: 1 0 : 9 : 9 : 0.64
+T: 1 0 : 9 : 11 : 0.08
+T: 1 0 : 9 : 8 : 0.08
+T: 1 0 : 9 : 15 : 0.01
+T: 1 0 : 9 : 1 : 0.08
+T: 1 0 : 9 : 12 : 0.01
+T: 1 0 : 9 : 13 : 0.08
+T: 1 0 : 9 : 0 : 0.01
+T: 1 0 : 9 : 3 : 0.01
+T: 1 0 : 8 : 8 : 0.64
+T: 1 0 : 8 : 10 : 0.08
+T: 1 0 : 8 : 9 : 0.08
+T: 1 0 : 8 : 14 : 0.01
+T: 1 0 : 8 : 0 : 0.08
+T: 1 0 : 8 : 13 : 0.01
+T: 1 0 : 8 : 12 : 0.08
+T: 1 0 : 8 : 1 : 0.01
+T: 1 0 : 8 : 2 : 0.01
+T: 1 0 : 7 : 7 : 0.09
+T: 1 0 : 7 : 6 : 0.03
+T: 1 0 : 7 : 5 : 0.18
+T: 1 0 : 7 : 14 : 0.06
+T: 1 0 : 7 : 13 : 0.36
+T: 1 0 : 7 : 15 : 0.18
+T: 1 0 : 7 : 1 : 0.06
+T: 1 0 : 7 : 2 : 0.01
+T: 1 0 : 7 : 3 : 0.03
+T: 1 0 : 6 : 6 : 0.09
+T: 1 0 : 6 : 7 : 0.03
+T: 1 0 : 6 : 4 : 0.18
+T: 1 0 : 6 : 15 : 0.06
+T: 1 0 : 6 : 12 : 0.36
+T: 1 0 : 6 : 14 : 0.18
+T: 1 0 : 6 : 0 : 0.06
+T: 1 0 : 6 : 3 : 0.01
+T: 1 0 : 6 : 2 : 0.03
+T: 1 0 : 1 : 1 : 0.24
+T: 1 0 : 1 : 3 : 0.03
+T: 1 0 : 1 : 0 : 0.03
+T: 1 0 : 1 : 11 : 0.06
+T: 1 0 : 1 : 4 : 0.01
+T: 1 0 : 1 : 8 : 0.06
+T: 1 0 : 1 : 9 : 0.48
+T: 1 0 : 1 : 7 : 0.01
+T: 1 0 : 1 : 5 : 0.08
+T: 1 0 : 0 : 0 : 0.24
+T: 1 0 : 0 : 2 : 0.03
+T: 1 0 : 0 : 1 : 0.03
+T: 1 0 : 0 : 10 : 0.06
+T: 1 0 : 0 : 9 : 0.06
+T: 1 0 : 0 : 8 : 0.48
+T: 1 0 : 0 : 5 : 0.01
+T: 1 0 : 0 : 6 : 0.01
+T: 1 0 : 0 : 4 : 0.08
+T: 1 0 : 2 : 2 : 0.09
+T: 1 0 : 2 : 3 : 0.03
+T: 1 0 : 2 : 0 : 0.18
+T: 1 0 : 2 : 11 : 0.06
+T: 1 0 : 2 : 4 : 0.06
+T: 1 0 : 2 : 8 : 0.36
+T: 1 0 : 2 : 10 : 0.18
+T: 1 0 : 2 : 7 : 0.01
+T: 1 0 : 2 : 6 : 0.03
+T: 1 0 : 3 : 3 : 0.09
+T: 1 0 : 3 : 2 : 0.03
+T: 1 0 : 3 : 1 : 0.18
+T: 1 0 : 3 : 10 : 0.06
+T: 1 0 : 3 : 9 : 0.36
+T: 1 0 : 3 : 11 : 0.18
+T: 1 0 : 3 : 5 : 0.06
+T: 1 0 : 3 : 6 : 0.01
+T: 1 0 : 3 : 7 : 0.03
+T: 1 0 : 4 : 4 : 0.24
+T: 1 0 : 4 : 6 : 0.03
+T: 1 0 : 4 : 5 : 0.03
+T: 1 0 : 4 : 14 : 0.06
+T: 1 0 : 4 : 0 : 0.08
+T: 1 0 : 4 : 13 : 0.06
+T: 1 0 : 4 : 12 : 0.48
+T: 1 0 : 4 : 1 : 0.01
+T: 1 0 : 4 : 2 : 0.01
+T: 1 0 : 5 : 5 : 0.24
+T: 1 0 : 5 : 7 : 0.03
+T: 1 0 : 5 : 4 : 0.03
+T: 1 0 : 5 : 15 : 0.06
+T: 1 0 : 5 : 1 : 0.08
+T: 1 0 : 5 : 12 : 0.06
+T: 1 0 : 5 : 13 : 0.48
+T: 1 0 : 5 : 0 : 0.01
+T: 1 0 : 5 : 3 : 0.01
+T: 0 4 : 15 : 15 : 0.3
+T: 0 4 : 15 : 7 : 0.6
+T: 0 4 : 15 : 11 : 0.1
+T: 0 4 : 14 : 14 : 0.3
+T: 0 4 : 14 : 6 : 0.6
+T: 0 4 : 14 : 10 : 0.1
+T: 0 4 : 13 : 13 : 0.3
+T: 0 4 : 13 : 5 : 0.6
+T: 0 4 : 13 : 9 : 0.1
+T: 0 4 : 12 : 12 : 0.3
+T: 0 4 : 12 : 4 : 0.6
+T: 0 4 : 12 : 8 : 0.1
+T: 0 4 : 11 : 11 : 0.3
+T: 0 4 : 11 : 3 : 0.6
+T: 0 4 : 11 : 15 : 0.1
+T: 0 4 : 10 : 10 : 0.3
+T: 0 4 : 10 : 2 : 0.6
+T: 0 4 : 10 : 14 : 0.1
+T: 0 4 : 9 : 9 : 0.3
+T: 0 4 : 9 : 1 : 0.6
+T: 0 4 : 9 : 13 : 0.1
+T: 0 4 : 8 : 8 : 0.3
+T: 0 4 : 8 : 0 : 0.6
+T: 0 4 : 8 : 12 : 0.1
+T: 0 4 : 7 : 7 : 0.8
+T: 0 4 : 7 : 3 : 0.1
+T: 0 4 : 7 : 15 : 0.1
+T: 0 4 : 6 : 6 : 0.8
+T: 0 4 : 6 : 2 : 0.1
+T: 0 4 : 6 : 14 : 0.1
+T: 0 4 : 1 : 1 : 0.8
+T: 0 4 : 1 : 5 : 0.1
+T: 0 4 : 1 : 9 : 0.1
+T: 0 4 : 0 : 0 : 0.8
+T: 0 4 : 0 : 4 : 0.1
+T: 0 4 : 0 : 8 : 0.1
+T: 0 4 : 2 : 2 : 0.8
+T: 0 4 : 2 : 6 : 0.1
+T: 0 4 : 2 : 10 : 0.1
+T: 0 4 : 3 : 3 : 0.8
+T: 0 4 : 3 : 7 : 0.1
+T: 0 4 : 3 : 11 : 0.1
+T: 0 4 : 4 : 4 : 0.8
+T: 0 4 : 4 : 0 : 0.1
+T: 0 4 : 4 : 12 : 0.1
+T: 0 4 : 5 : 5 : 0.8
+T: 0 4 : 5 : 1 : 0.1
+T: 0 4 : 5 : 13 : 0.1
+T: 0 3 : 15 : 15 : 0.24
+T: 0 3 : 15 : 14 : 0.03
+T: 0 3 : 15 : 13 : 0.03
+T: 0 3 : 15 : 6 : 0.06
+T: 0 3 : 15 : 5 : 0.06
+T: 0 3 : 15 : 7 : 0.48
+T: 0 3 : 15 : 9 : 0.01
+T: 0 3 : 15 : 10 : 0.01
+T: 0 3 : 15 : 11 : 0.08
+T: 0 3 : 14 : 14 : 0.09
+T: 0 3 : 14 : 12 : 0.03
+T: 0 3 : 14 : 15 : 0.18
+T: 0 3 : 14 : 4 : 0.06
+T: 0 3 : 14 : 11 : 0.06
+T: 0 3 : 14 : 7 : 0.36
+T: 0 3 : 14 : 6 : 0.18
+T: 0 3 : 14 : 8 : 0.01
+T: 0 3 : 14 : 10 : 0.03
+T: 0 3 : 13 : 13 : 0.24
+T: 0 3 : 13 : 12 : 0.03
+T: 0 3 : 13 : 15 : 0.03
+T: 0 3 : 13 : 4 : 0.06
+T: 0 3 : 13 : 11 : 0.01
+T: 0 3 : 13 : 7 : 0.06
+T: 0 3 : 13 : 5 : 0.48
+T: 0 3 : 13 : 8 : 0.01
+T: 0 3 : 13 : 9 : 0.08
+T: 0 3 : 12 : 12 : 0.09
+T: 0 3 : 12 : 14 : 0.03
+T: 0 3 : 12 : 13 : 0.18
+T: 0 3 : 12 : 6 : 0.06
+T: 0 3 : 12 : 5 : 0.36
+T: 0 3 : 12 : 4 : 0.18
+T: 0 3 : 12 : 9 : 0.06
+T: 0 3 : 12 : 10 : 0.01
+T: 0 3 : 12 : 8 : 0.03
+T: 0 3 : 11 : 11 : 0.24
+T: 0 3 : 11 : 10 : 0.03
+T: 0 3 : 11 : 9 : 0.03
+T: 0 3 : 11 : 2 : 0.06
+T: 0 3 : 11 : 1 : 0.06
+T: 0 3 : 11 : 15 : 0.08
+T: 0 3 : 11 : 3 : 0.48
+T: 0 3 : 11 : 13 : 0.01
+T: 0 3 : 11 : 14 : 0.01
+T: 0 3 : 10 : 10 : 0.09
+T: 0 3 : 10 : 8 : 0.03
+T: 0 3 : 10 : 11 : 0.18
+T: 0 3 : 10 : 0 : 0.06
+T: 0 3 : 10 : 14 : 0.03
+T: 0 3 : 10 : 3 : 0.36
+T: 0 3 : 10 : 2 : 0.18
+T: 0 3 : 10 : 15 : 0.06
+T: 0 3 : 10 : 12 : 0.01
+T: 0 3 : 9 : 9 : 0.24
+T: 0 3 : 9 : 8 : 0.03
+T: 0 3 : 9 : 11 : 0.03
+T: 0 3 : 9 : 0 : 0.06
+T: 0 3 : 9 : 3 : 0.06
+T: 0 3 : 9 : 1 : 0.48
+T: 0 3 : 9 : 15 : 0.01
+T: 0 3 : 9 : 12 : 0.01
+T: 0 3 : 9 : 13 : 0.08
+T: 0 3 : 8 : 8 : 0.09
+T: 0 3 : 8 : 10 : 0.03
+T: 0 3 : 8 : 9 : 0.18
+T: 0 3 : 8 : 2 : 0.06
+T: 0 3 : 8 : 1 : 0.36
+T: 0 3 : 8 : 0 : 0.18
+T: 0 3 : 8 : 14 : 0.01
+T: 0 3 : 8 : 13 : 0.06
+T: 0 3 : 8 : 12 : 0.03
+T: 0 3 : 7 : 7 : 0.64
+T: 0 3 : 7 : 6 : 0.08
+T: 0 3 : 7 : 5 : 0.08
+T: 0 3 : 7 : 2 : 0.01
+T: 0 3 : 7 : 1 : 0.01
+T: 0 3 : 7 : 15 : 0.08
+T: 0 3 : 7 : 3 : 0.08
+T: 0 3 : 7 : 13 : 0.01
+T: 0 3 : 7 : 14 : 0.01
+T: 0 3 : 6 : 6 : 0.24
+T: 0 3 : 6 : 4 : 0.08
+T: 0 3 : 6 : 7 : 0.48
+T: 0 3 : 6 : 0 : 0.01
+T: 0 3 : 6 : 14 : 0.03
+T: 0 3 : 6 : 3 : 0.06
+T: 0 3 : 6 : 2 : 0.03
+T: 0 3 : 6 : 15 : 0.06
+T: 0 3 : 6 : 12 : 0.01
+T: 0 3 : 1 : 1 : 0.64
+T: 0 3 : 1 : 0 : 0.08
+T: 0 3 : 1 : 3 : 0.08
+T: 0 3 : 1 : 4 : 0.01
+T: 0 3 : 1 : 11 : 0.01
+T: 0 3 : 1 : 7 : 0.01
+T: 0 3 : 1 : 5 : 0.08
+T: 0 3 : 1 : 8 : 0.01
+T: 0 3 : 1 : 9 : 0.08
+T: 0 3 : 0 : 0 : 0.24
+T: 0 3 : 0 : 2 : 0.08
+T: 0 3 : 0 : 1 : 0.48
+T: 0 3 : 0 : 6 : 0.01
+T: 0 3 : 0 : 5 : 0.06
+T: 0 3 : 0 : 4 : 0.03
+T: 0 3 : 0 : 9 : 0.06
+T: 0 3 : 0 : 10 : 0.01
+T: 0 3 : 0 : 8 : 0.03
+T: 0 3 : 2 : 2 : 0.24
+T: 0 3 : 2 : 0 : 0.08
+T: 0 3 : 2 : 3 : 0.48
+T: 0 3 : 2 : 4 : 0.01
+T: 0 3 : 2 : 11 : 0.06
+T: 0 3 : 2 : 7 : 0.06
+T: 0 3 : 2 : 6 : 0.03
+T: 0 3 : 2 : 8 : 0.01
+T: 0 3 : 2 : 10 : 0.03
+T: 0 3 : 3 : 3 : 0.64
+T: 0 3 : 3 : 2 : 0.08
+T: 0 3 : 3 : 1 : 0.08
+T: 0 3 : 3 : 6 : 0.01
+T: 0 3 : 3 : 5 : 0.01
+T: 0 3 : 3 : 7 : 0.08
+T: 0 3 : 3 : 9 : 0.01
+T: 0 3 : 3 : 10 : 0.01
+T: 0 3 : 3 : 11 : 0.08
+T: 0 3 : 4 : 4 : 0.24
+T: 0 3 : 4 : 6 : 0.08
+T: 0 3 : 4 : 5 : 0.48
+T: 0 3 : 4 : 2 : 0.01
+T: 0 3 : 4 : 1 : 0.06
+T: 0 3 : 4 : 0 : 0.03
+T: 0 3 : 4 : 14 : 0.01
+T: 0 3 : 4 : 13 : 0.06
+T: 0 3 : 4 : 12 : 0.03
+T: 0 3 : 5 : 5 : 0.64
+T: 0 3 : 5 : 4 : 0.08
+T: 0 3 : 5 : 7 : 0.08
+T: 0 3 : 5 : 0 : 0.01
+T: 0 3 : 5 : 3 : 0.01
+T: 0 3 : 5 : 1 : 0.08
+T: 0 3 : 5 : 15 : 0.01
+T: 0 3 : 5 : 12 : 0.01
+T: 0 3 : 5 : 13 : 0.08
+T: 0 2 : 15 : 15 : 0.09
+T: 0 2 : 15 : 13 : 0.03
+T: 0 2 : 15 : 14 : 0.18
+T: 0 2 : 15 : 5 : 0.06
+T: 0 2 : 15 : 6 : 0.36
+T: 0 2 : 15 : 7 : 0.18
+T: 0 2 : 15 : 10 : 0.06
+T: 0 2 : 15 : 9 : 0.01
+T: 0 2 : 15 : 11 : 0.03
+T: 0 2 : 14 : 14 : 0.24
+T: 0 2 : 14 : 15 : 0.03
+T: 0 2 : 14 : 12 : 0.03
+T: 0 2 : 14 : 7 : 0.06
+T: 0 2 : 14 : 4 : 0.06
+T: 0 2 : 14 : 11 : 0.01
+T: 0 2 : 14 : 6 : 0.48
+T: 0 2 : 14 : 8 : 0.01
+T: 0 2 : 14 : 10 : 0.08
+T: 0 2 : 13 : 13 : 0.09
+T: 0 2 : 13 : 15 : 0.03
+T: 0 2 : 13 : 12 : 0.18
+T: 0 2 : 13 : 7 : 0.06
+T: 0 2 : 13 : 4 : 0.36
+T: 0 2 : 13 : 11 : 0.01
+T: 0 2 : 13 : 5 : 0.18
+T: 0 2 : 13 : 8 : 0.06
+T: 0 2 : 13 : 9 : 0.03
+T: 0 2 : 12 : 12 : 0.24
+T: 0 2 : 12 : 13 : 0.03
+T: 0 2 : 12 : 14 : 0.03
+T: 0 2 : 12 : 5 : 0.06
+T: 0 2 : 12 : 6 : 0.06
+T: 0 2 : 12 : 4 : 0.48
+T: 0 2 : 12 : 10 : 0.01
+T: 0 2 : 12 : 9 : 0.01
+T: 0 2 : 12 : 8 : 0.08
+T: 0 2 : 11 : 11 : 0.09
+T: 0 2 : 11 : 9 : 0.03
+T: 0 2 : 11 : 10 : 0.18
+T: 0 2 : 11 : 1 : 0.06
+T: 0 2 : 11 : 15 : 0.03
+T: 0 2 : 11 : 2 : 0.36
+T: 0 2 : 11 : 3 : 0.18
+T: 0 2 : 11 : 14 : 0.06
+T: 0 2 : 11 : 13 : 0.01
+T: 0 2 : 10 : 10 : 0.24
+T: 0 2 : 10 : 11 : 0.03
+T: 0 2 : 10 : 8 : 0.03
+T: 0 2 : 10 : 3 : 0.06
+T: 0 2 : 10 : 0 : 0.06
+T: 0 2 : 10 : 14 : 0.08
+T: 0 2 : 10 : 2 : 0.48
+T: 0 2 : 10 : 12 : 0.01
+T: 0 2 : 10 : 15 : 0.01
+T: 0 2 : 9 : 9 : 0.09
+T: 0 2 : 9 : 11 : 0.03
+T: 0 2 : 9 : 8 : 0.18
+T: 0 2 : 9 : 3 : 0.06
+T: 0 2 : 9 : 0 : 0.36
+T: 0 2 : 9 : 1 : 0.18
+T: 0 2 : 9 : 15 : 0.01
+T: 0 2 : 9 : 12 : 0.06
+T: 0 2 : 9 : 13 : 0.03
+T: 0 2 : 8 : 8 : 0.24
+T: 0 2 : 8 : 9 : 0.03
+T: 0 2 : 8 : 10 : 0.03
+T: 0 2 : 8 : 1 : 0.06
+T: 0 2 : 8 : 2 : 0.06
+T: 0 2 : 8 : 0 : 0.48
+T: 0 2 : 8 : 14 : 0.01
+T: 0 2 : 8 : 13 : 0.01
+T: 0 2 : 8 : 12 : 0.08
+T: 0 2 : 7 : 7 : 0.24
+T: 0 2 : 7 : 5 : 0.08
+T: 0 2 : 7 : 6 : 0.48
+T: 0 2 : 7 : 1 : 0.01
+T: 0 2 : 7 : 15 : 0.03
+T: 0 2 : 7 : 2 : 0.06
+T: 0 2 : 7 : 3 : 0.03
+T: 0 2 : 7 : 14 : 0.06
+T: 0 2 : 7 : 13 : 0.01
+T: 0 2 : 6 : 6 : 0.64
+T: 0 2 : 6 : 7 : 0.08
+T: 0 2 : 6 : 4 : 0.08
+T: 0 2 : 6 : 3 : 0.01
+T: 0 2 : 6 : 0 : 0.01
+T: 0 2 : 6 : 14 : 0.08
+T: 0 2 : 6 : 2 : 0.08
+T: 0 2 : 6 : 12 : 0.01
+T: 0 2 : 6 : 15 : 0.01
+T: 0 2 : 1 : 1 : 0.24
+T: 0 2 : 1 : 3 : 0.08
+T: 0 2 : 1 : 0 : 0.48
+T: 0 2 : 1 : 7 : 0.01
+T: 0 2 : 1 : 4 : 0.06
+T: 0 2 : 1 : 11 : 0.01
+T: 0 2 : 1 : 5 : 0.03
+T: 0 2 : 1 : 8 : 0.06
+T: 0 2 : 1 : 9 : 0.03
+T: 0 2 : 0 : 0 : 0.64
+T: 0 2 : 0 : 1 : 0.08
+T: 0 2 : 0 : 2 : 0.08
+T: 0 2 : 0 : 5 : 0.01
+T: 0 2 : 0 : 6 : 0.01
+T: 0 2 : 0 : 4 : 0.08
+T: 0 2 : 0 : 10 : 0.01
+T: 0 2 : 0 : 9 : 0.01
+T: 0 2 : 0 : 8 : 0.08
+T: 0 2 : 2 : 2 : 0.64
+T: 0 2 : 2 : 3 : 0.08
+T: 0 2 : 2 : 0 : 0.08
+T: 0 2 : 2 : 7 : 0.01
+T: 0 2 : 2 : 4 : 0.01
+T: 0 2 : 2 : 11 : 0.01
+T: 0 2 : 2 : 6 : 0.08
+T: 0 2 : 2 : 8 : 0.01
+T: 0 2 : 2 : 10 : 0.08
+T: 0 2 : 3 : 3 : 0.24
+T: 0 2 : 3 : 1 : 0.08
+T: 0 2 : 3 : 2 : 0.48
+T: 0 2 : 3 : 5 : 0.01
+T: 0 2 : 3 : 6 : 0.06
+T: 0 2 : 3 : 7 : 0.03
+T: 0 2 : 3 : 10 : 0.06
+T: 0 2 : 3 : 9 : 0.01
+T: 0 2 : 3 : 11 : 0.03
+T: 0 2 : 4 : 4 : 0.64
+T: 0 2 : 4 : 5 : 0.08
+T: 0 2 : 4 : 6 : 0.08
+T: 0 2 : 4 : 1 : 0.01
+T: 0 2 : 4 : 2 : 0.01
+T: 0 2 : 4 : 0 : 0.08
+T: 0 2 : 4 : 14 : 0.01
+T: 0 2 : 4 : 13 : 0.01
+T: 0 2 : 4 : 12 : 0.08
+T: 0 2 : 5 : 5 : 0.24
+T: 0 2 : 5 : 7 : 0.08
+T: 0 2 : 5 : 4 : 0.48
+T: 0 2 : 5 : 3 : 0.01
+T: 0 2 : 5 : 0 : 0.06
+T: 0 2 : 5 : 1 : 0.03
+T: 0 2 : 5 : 15 : 0.01
+T: 0 2 : 5 : 12 : 0.06
+T: 0 2 : 5 : 13 : 0.03
+T: 0 0 : 15 : 15 : 0.09
+T: 0 0 : 15 : 14 : 0.03
+T: 0 0 : 15 : 13 : 0.18
+T: 0 0 : 15 : 6 : 0.06
+T: 0 0 : 15 : 5 : 0.36
+T: 0 0 : 15 : 7 : 0.18
+T: 0 0 : 15 : 9 : 0.06
+T: 0 0 : 15 : 10 : 0.01
+T: 0 0 : 15 : 11 : 0.03
+T: 0 0 : 14 : 14 : 0.09
+T: 0 0 : 14 : 15 : 0.03
+T: 0 0 : 14 : 12 : 0.18
+T: 0 0 : 14 : 7 : 0.06
+T: 0 0 : 14 : 4 : 0.36
+T: 0 0 : 14 : 11 : 0.01
+T: 0 0 : 14 : 6 : 0.18
+T: 0 0 : 14 : 8 : 0.06
+T: 0 0 : 14 : 10 : 0.03
+T: 0 0 : 13 : 13 : 0.24
+T: 0 0 : 13 : 15 : 0.03
+T: 0 0 : 13 : 12 : 0.03
+T: 0 0 : 13 : 7 : 0.06
+T: 0 0 : 13 : 4 : 0.06
+T: 0 0 : 13 : 11 : 0.01
+T: 0 0 : 13 : 5 : 0.48
+T: 0 0 : 13 : 8 : 0.01
+T: 0 0 : 13 : 9 : 0.08
+T: 0 0 : 12 : 12 : 0.24
+T: 0 0 : 12 : 14 : 0.03
+T: 0 0 : 12 : 13 : 0.03
+T: 0 0 : 12 : 6 : 0.06
+T: 0 0 : 12 : 5 : 0.06
+T: 0 0 : 12 : 4 : 0.48
+T: 0 0 : 12 : 9 : 0.01
+T: 0 0 : 12 : 10 : 0.01
+T: 0 0 : 12 : 8 : 0.08
+T: 0 0 : 11 : 11 : 0.09
+T: 0 0 : 11 : 10 : 0.03
+T: 0 0 : 11 : 9 : 0.18
+T: 0 0 : 11 : 2 : 0.06
+T: 0 0 : 11 : 1 : 0.36
+T: 0 0 : 11 : 15 : 0.03
+T: 0 0 : 11 : 3 : 0.18
+T: 0 0 : 11 : 13 : 0.06
+T: 0 0 : 11 : 14 : 0.01
+T: 0 0 : 10 : 10 : 0.09
+T: 0 0 : 10 : 11 : 0.03
+T: 0 0 : 10 : 8 : 0.18
+T: 0 0 : 10 : 3 : 0.06
+T: 0 0 : 10 : 0 : 0.36
+T: 0 0 : 10 : 14 : 0.03
+T: 0 0 : 10 : 2 : 0.18
+T: 0 0 : 10 : 12 : 0.06
+T: 0 0 : 10 : 15 : 0.01
+T: 0 0 : 9 : 9 : 0.24
+T: 0 0 : 9 : 11 : 0.03
+T: 0 0 : 9 : 8 : 0.03
+T: 0 0 : 9 : 3 : 0.06
+T: 0 0 : 9 : 0 : 0.06
+T: 0 0 : 9 : 1 : 0.48
+T: 0 0 : 9 : 15 : 0.01
+T: 0 0 : 9 : 12 : 0.01
+T: 0 0 : 9 : 13 : 0.08
+T: 0 0 : 8 : 8 : 0.24
+T: 0 0 : 8 : 10 : 0.03
+T: 0 0 : 8 : 9 : 0.03
+T: 0 0 : 8 : 2 : 0.06
+T: 0 0 : 8 : 1 : 0.06
+T: 0 0 : 8 : 0 : 0.48
+T: 0 0 : 8 : 14 : 0.01
+T: 0 0 : 8 : 13 : 0.01
+T: 0 0 : 8 : 12 : 0.08
+T: 0 0 : 7 : 7 : 0.24
+T: 0 0 : 7 : 6 : 0.08
+T: 0 0 : 7 : 5 : 0.48
+T: 0 0 : 7 : 2 : 0.01
+T: 0 0 : 7 : 1 : 0.06
+T: 0 0 : 7 : 15 : 0.03
+T: 0 0 : 7 : 3 : 0.03
+T: 0 0 : 7 : 13 : 0.06
+T: 0 0 : 7 : 14 : 0.01
+T: 0 0 : 6 : 6 : 0.24
+T: 0 0 : 6 : 7 : 0.08
+T: 0 0 : 6 : 4 : 0.48
+T: 0 0 : 6 : 3 : 0.01
+T: 0 0 : 6 : 0 : 0.06
+T: 0 0 : 6 : 14 : 0.03
+T: 0 0 : 6 : 2 : 0.03
+T: 0 0 : 6 : 12 : 0.06
+T: 0 0 : 6 : 15 : 0.01
+T: 0 0 : 1 : 1 : 0.64
+T: 0 0 : 1 : 3 : 0.08
+T: 0 0 : 1 : 0 : 0.08
+T: 0 0 : 1 : 7 : 0.01
+T: 0 0 : 1 : 4 : 0.01
+T: 0 0 : 1 : 11 : 0.01
+T: 0 0 : 1 : 5 : 0.08
+T: 0 0 : 1 : 8 : 0.01
+T: 0 0 : 1 : 9 : 0.08
+T: 0 0 : 0 : 0 : 0.64
+T: 0 0 : 0 : 2 : 0.08
+T: 0 0 : 0 : 1 : 0.08
+T: 0 0 : 0 : 6 : 0.01
+T: 0 0 : 0 : 5 : 0.01
+T: 0 0 : 0 : 4 : 0.08
+T: 0 0 : 0 : 9 : 0.01
+T: 0 0 : 0 : 10 : 0.01
+T: 0 0 : 0 : 8 : 0.08
+T: 0 0 : 2 : 2 : 0.24
+T: 0 0 : 2 : 3 : 0.08
+T: 0 0 : 2 : 0 : 0.48
+T: 0 0 : 2 : 7 : 0.01
+T: 0 0 : 2 : 4 : 0.06
+T: 0 0 : 2 : 11 : 0.01
+T: 0 0 : 2 : 6 : 0.03
+T: 0 0 : 2 : 8 : 0.06
+T: 0 0 : 2 : 10 : 0.03
+T: 0 0 : 3 : 3 : 0.24
+T: 0 0 : 3 : 2 : 0.08
+T: 0 0 : 3 : 1 : 0.48
+T: 0 0 : 3 : 6 : 0.01
+T: 0 0 : 3 : 5 : 0.06
+T: 0 0 : 3 : 7 : 0.03
+T: 0 0 : 3 : 9 : 0.06
+T: 0 0 : 3 : 10 : 0.01
+T: 0 0 : 3 : 11 : 0.03
+T: 0 0 : 4 : 4 : 0.64
+T: 0 0 : 4 : 6 : 0.08
+T: 0 0 : 4 : 5 : 0.08
+T: 0 0 : 4 : 2 : 0.01
+T: 0 0 : 4 : 1 : 0.01
+T: 0 0 : 4 : 0 : 0.08
+T: 0 0 : 4 : 14 : 0.01
+T: 0 0 : 4 : 13 : 0.01
+T: 0 0 : 4 : 12 : 0.08
+T: 0 0 : 5 : 5 : 0.64
+T: 0 0 : 5 : 7 : 0.08
+T: 0 0 : 5 : 4 : 0.08
+T: 0 0 : 5 : 3 : 0.01
+T: 0 0 : 5 : 0 : 0.01
+T: 0 0 : 5 : 1 : 0.08
+T: 0 0 : 5 : 15 : 0.01
+T: 0 0 : 5 : 12 : 0.01
+T: 0 0 : 5 : 13 : 0.08
+T: 0 1 : 15 : 15 : 0.24
+T: 0 1 : 15 : 13 : 0.03
+T: 0 1 : 15 : 14 : 0.03
+T: 0 1 : 15 : 5 : 0.06
+T: 0 1 : 15 : 6 : 0.06
+T: 0 1 : 15 : 7 : 0.48
+T: 0 1 : 15 : 10 : 0.01
+T: 0 1 : 15 : 9 : 0.01
+T: 0 1 : 15 : 11 : 0.08
+T: 0 1 : 14 : 14 : 0.24
+T: 0 1 : 14 : 12 : 0.03
+T: 0 1 : 14 : 15 : 0.03
+T: 0 1 : 14 : 4 : 0.06
+T: 0 1 : 14 : 11 : 0.01
+T: 0 1 : 14 : 7 : 0.06
+T: 0 1 : 14 : 6 : 0.48
+T: 0 1 : 14 : 8 : 0.01
+T: 0 1 : 14 : 10 : 0.08
+T: 0 1 : 13 : 13 : 0.09
+T: 0 1 : 13 : 12 : 0.03
+T: 0 1 : 13 : 15 : 0.18
+T: 0 1 : 13 : 4 : 0.06
+T: 0 1 : 13 : 11 : 0.06
+T: 0 1 : 13 : 7 : 0.36
+T: 0 1 : 13 : 5 : 0.18
+T: 0 1 : 13 : 8 : 0.01
+T: 0 1 : 13 : 9 : 0.03
+T: 0 1 : 12 : 12 : 0.09
+T: 0 1 : 12 : 13 : 0.03
+T: 0 1 : 12 : 14 : 0.18
+T: 0 1 : 12 : 5 : 0.06
+T: 0 1 : 12 : 6 : 0.36
+T: 0 1 : 12 : 4 : 0.18
+T: 0 1 : 12 : 10 : 0.06
+T: 0 1 : 12 : 9 : 0.01
+T: 0 1 : 12 : 8 : 0.03
+T: 0 1 : 11 : 11 : 0.24
+T: 0 1 : 11 : 9 : 0.03
+T: 0 1 : 11 : 10 : 0.03
+T: 0 1 : 11 : 1 : 0.06
+T: 0 1 : 11 : 15 : 0.08
+T: 0 1 : 11 : 2 : 0.06
+T: 0 1 : 11 : 3 : 0.48
+T: 0 1 : 11 : 14 : 0.01
+T: 0 1 : 11 : 13 : 0.01
+T: 0 1 : 10 : 10 : 0.24
+T: 0 1 : 10 : 8 : 0.03
+T: 0 1 : 10 : 11 : 0.03
+T: 0 1 : 10 : 0 : 0.06
+T: 0 1 : 10 : 14 : 0.08
+T: 0 1 : 10 : 3 : 0.06
+T: 0 1 : 10 : 2 : 0.48
+T: 0 1 : 10 : 15 : 0.01
+T: 0 1 : 10 : 12 : 0.01
+T: 0 1 : 9 : 9 : 0.09
+T: 0 1 : 9 : 8 : 0.03
+T: 0 1 : 9 : 11 : 0.18
+T: 0 1 : 9 : 0 : 0.06
+T: 0 1 : 9 : 3 : 0.36
+T: 0 1 : 9 : 1 : 0.18
+T: 0 1 : 9 : 15 : 0.06
+T: 0 1 : 9 : 12 : 0.01
+T: 0 1 : 9 : 13 : 0.03
+T: 0 1 : 8 : 8 : 0.09
+T: 0 1 : 8 : 9 : 0.03
+T: 0 1 : 8 : 10 : 0.18
+T: 0 1 : 8 : 1 : 0.06
+T: 0 1 : 8 : 2 : 0.36
+T: 0 1 : 8 : 0 : 0.18
+T: 0 1 : 8 : 14 : 0.06
+T: 0 1 : 8 : 13 : 0.01
+T: 0 1 : 8 : 12 : 0.03
+T: 0 1 : 7 : 7 : 0.64
+T: 0 1 : 7 : 5 : 0.08
+T: 0 1 : 7 : 6 : 0.08
+T: 0 1 : 7 : 1 : 0.01
+T: 0 1 : 7 : 15 : 0.08
+T: 0 1 : 7 : 2 : 0.01
+T: 0 1 : 7 : 3 : 0.08
+T: 0 1 : 7 : 14 : 0.01
+T: 0 1 : 7 : 13 : 0.01
+T: 0 1 : 6 : 6 : 0.64
+T: 0 1 : 6 : 4 : 0.08
+T: 0 1 : 6 : 7 : 0.08
+T: 0 1 : 6 : 0 : 0.01
+T: 0 1 : 6 : 14 : 0.08
+T: 0 1 : 6 : 3 : 0.01
+T: 0 1 : 6 : 2 : 0.08
+T: 0 1 : 6 : 15 : 0.01
+T: 0 1 : 6 : 12 : 0.01
+T: 0 1 : 1 : 1 : 0.24
+T: 0 1 : 1 : 0 : 0.08
+T: 0 1 : 1 : 3 : 0.48
+T: 0 1 : 1 : 4 : 0.01
+T: 0 1 : 1 : 11 : 0.06
+T: 0 1 : 1 : 7 : 0.06
+T: 0 1 : 1 : 5 : 0.03
+T: 0 1 : 1 : 8 : 0.01
+T: 0 1 : 1 : 9 : 0.03
+T: 0 1 : 0 : 0 : 0.24
+T: 0 1 : 0 : 1 : 0.08
+T: 0 1 : 0 : 2 : 0.48
+T: 0 1 : 0 : 5 : 0.01
+T: 0 1 : 0 : 6 : 0.06
+T: 0 1 : 0 : 4 : 0.03
+T: 0 1 : 0 : 10 : 0.06
+T: 0 1 : 0 : 9 : 0.01
+T: 0 1 : 0 : 8 : 0.03
+T: 0 1 : 2 : 2 : 0.64
+T: 0 1 : 2 : 0 : 0.08
+T: 0 1 : 2 : 3 : 0.08
+T: 0 1 : 2 : 4 : 0.01
+T: 0 1 : 2 : 11 : 0.01
+T: 0 1 : 2 : 7 : 0.01
+T: 0 1 : 2 : 6 : 0.08
+T: 0 1 : 2 : 8 : 0.01
+T: 0 1 : 2 : 10 : 0.08
+T: 0 1 : 3 : 3 : 0.64
+T: 0 1 : 3 : 1 : 0.08
+T: 0 1 : 3 : 2 : 0.08
+T: 0 1 : 3 : 5 : 0.01
+T: 0 1 : 3 : 6 : 0.01
+T: 0 1 : 3 : 7 : 0.08
+T: 0 1 : 3 : 10 : 0.01
+T: 0 1 : 3 : 9 : 0.01
+T: 0 1 : 3 : 11 : 0.08
+T: 0 1 : 4 : 4 : 0.24
+T: 0 1 : 4 : 5 : 0.08
+T: 0 1 : 4 : 6 : 0.48
+T: 0 1 : 4 : 1 : 0.01
+T: 0 1 : 4 : 2 : 0.06
+T: 0 1 : 4 : 0 : 0.03
+T: 0 1 : 4 : 14 : 0.06
+T: 0 1 : 4 : 13 : 0.01
+T: 0 1 : 4 : 12 : 0.03
+T: 0 1 : 5 : 5 : 0.24
+T: 0 1 : 5 : 4 : 0.08
+T: 0 1 : 5 : 7 : 0.48
+T: 0 1 : 5 : 0 : 0.01
+T: 0 1 : 5 : 3 : 0.06
+T: 0 1 : 5 : 1 : 0.03
+T: 0 1 : 5 : 15 : 0.06
+T: 0 1 : 5 : 12 : 0.01
+T: 0 1 : 5 : 13 : 0.03
+T: 1 1 : 15 : 15 : 0.64
+T: 1 1 : 15 : 13 : 0.08
+T: 1 1 : 15 : 14 : 0.08
+T: 1 1 : 15 : 9 : 0.01
+T: 1 1 : 15 : 10 : 0.01
+T: 1 1 : 15 : 11 : 0.08
+T: 1 1 : 15 : 6 : 0.01
+T: 1 1 : 15 : 5 : 0.01
+T: 1 1 : 15 : 7 : 0.08
+T: 1 1 : 14 : 14 : 0.64
+T: 1 1 : 14 : 12 : 0.08
+T: 1 1 : 14 : 15 : 0.08
+T: 1 1 : 14 : 8 : 0.01
+T: 1 1 : 14 : 11 : 0.01
+T: 1 1 : 14 : 4 : 0.01
+T: 1 1 : 14 : 10 : 0.08
+T: 1 1 : 14 : 7 : 0.01
+T: 1 1 : 14 : 6 : 0.08
+T: 1 1 : 13 : 13 : 0.24
+T: 1 1 : 13 : 12 : 0.08
+T: 1 1 : 13 : 15 : 0.48
+T: 1 1 : 13 : 8 : 0.01
+T: 1 1 : 13 : 11 : 0.06
+T: 1 1 : 13 : 4 : 0.01
+T: 1 1 : 13 : 9 : 0.03
+T: 1 1 : 13 : 7 : 0.06
+T: 1 1 : 13 : 5 : 0.03
+T: 1 1 : 12 : 12 : 0.24
+T: 1 1 : 12 : 13 : 0.08
+T: 1 1 : 12 : 14 : 0.48
+T: 1 1 : 12 : 9 : 0.01
+T: 1 1 : 12 : 10 : 0.06
+T: 1 1 : 12 : 8 : 0.03
+T: 1 1 : 12 : 6 : 0.06
+T: 1 1 : 12 : 5 : 0.01
+T: 1 1 : 12 : 4 : 0.03
+T: 1 1 : 11 : 11 : 0.64
+T: 1 1 : 11 : 9 : 0.08
+T: 1 1 : 11 : 10 : 0.08
+T: 1 1 : 11 : 13 : 0.01
+T: 1 1 : 11 : 14 : 0.01
+T: 1 1 : 11 : 15 : 0.08
+T: 1 1 : 11 : 1 : 0.01
+T: 1 1 : 11 : 2 : 0.01
+T: 1 1 : 11 : 3 : 0.08
+T: 1 1 : 10 : 10 : 0.64
+T: 1 1 : 10 : 8 : 0.08
+T: 1 1 : 10 : 11 : 0.08
+T: 1 1 : 10 : 12 : 0.01
+T: 1 1 : 10 : 15 : 0.01
+T: 1 1 : 10 : 14 : 0.08
+T: 1 1 : 10 : 0 : 0.01
+T: 1 1 : 10 : 3 : 0.01
+T: 1 1 : 10 : 2 : 0.08
+T: 1 1 : 9 : 9 : 0.24
+T: 1 1 : 9 : 8 : 0.08
+T: 1 1 : 9 : 11 : 0.48
+T: 1 1 : 9 : 12 : 0.01
+T: 1 1 : 9 : 15 : 0.06
+T: 1 1 : 9 : 1 : 0.03
+T: 1 1 : 9 : 13 : 0.03
+T: 1 1 : 9 : 3 : 0.06
+T: 1 1 : 9 : 0 : 0.01
+T: 1 1 : 8 : 8 : 0.24
+T: 1 1 : 8 : 9 : 0.08
+T: 1 1 : 8 : 10 : 0.48
+T: 1 1 : 8 : 13 : 0.01
+T: 1 1 : 8 : 14 : 0.06
+T: 1 1 : 8 : 0 : 0.03
+T: 1 1 : 8 : 12 : 0.03
+T: 1 1 : 8 : 2 : 0.06
+T: 1 1 : 8 : 1 : 0.01
+T: 1 1 : 7 : 7 : 0.24
+T: 1 1 : 7 : 5 : 0.03
+T: 1 1 : 7 : 6 : 0.03
+T: 1 1 : 7 : 13 : 0.06
+T: 1 1 : 7 : 14 : 0.06
+T: 1 1 : 7 : 15 : 0.48
+T: 1 1 : 7 : 1 : 0.01
+T: 1 1 : 7 : 2 : 0.01
+T: 1 1 : 7 : 3 : 0.08
+T: 1 1 : 6 : 6 : 0.24
+T: 1 1 : 6 : 4 : 0.03
+T: 1 1 : 6 : 7 : 0.03
+T: 1 1 : 6 : 12 : 0.06
+T: 1 1 : 6 : 15 : 0.06
+T: 1 1 : 6 : 14 : 0.48
+T: 1 1 : 6 : 0 : 0.01
+T: 1 1 : 6 : 3 : 0.01
+T: 1 1 : 6 : 2 : 0.08
+T: 1 1 : 1 : 1 : 0.09
+T: 1 1 : 1 : 0 : 0.03
+T: 1 1 : 1 : 3 : 0.18
+T: 1 1 : 1 : 8 : 0.06
+T: 1 1 : 1 : 11 : 0.36
+T: 1 1 : 1 : 4 : 0.01
+T: 1 1 : 1 : 9 : 0.18
+T: 1 1 : 1 : 7 : 0.06
+T: 1 1 : 1 : 5 : 0.03
+T: 1 1 : 0 : 0 : 0.09
+T: 1 1 : 0 : 1 : 0.03
+T: 1 1 : 0 : 2 : 0.18
+T: 1 1 : 0 : 9 : 0.06
+T: 1 1 : 0 : 10 : 0.36
+T: 1 1 : 0 : 8 : 0.18
+T: 1 1 : 0 : 6 : 0.06
+T: 1 1 : 0 : 5 : 0.01
+T: 1 1 : 0 : 4 : 0.03
+T: 1 1 : 2 : 2 : 0.24
+T: 1 1 : 2 : 0 : 0.03
+T: 1 1 : 2 : 3 : 0.03
+T: 1 1 : 2 : 8 : 0.06
+T: 1 1 : 2 : 11 : 0.06
+T: 1 1 : 2 : 4 : 0.01
+T: 1 1 : 2 : 10 : 0.48
+T: 1 1 : 2 : 7 : 0.01
+T: 1 1 : 2 : 6 : 0.08
+T: 1 1 : 3 : 3 : 0.24
+T: 1 1 : 3 : 1 : 0.03
+T: 1 1 : 3 : 2 : 0.03
+T: 1 1 : 3 : 9 : 0.06
+T: 1 1 : 3 : 10 : 0.06
+T: 1 1 : 3 : 11 : 0.48
+T: 1 1 : 3 : 6 : 0.01
+T: 1 1 : 3 : 5 : 0.01
+T: 1 1 : 3 : 7 : 0.08
+T: 1 1 : 4 : 4 : 0.09
+T: 1 1 : 4 : 5 : 0.03
+T: 1 1 : 4 : 6 : 0.18
+T: 1 1 : 4 : 13 : 0.06
+T: 1 1 : 4 : 14 : 0.36
+T: 1 1 : 4 : 0 : 0.03
+T: 1 1 : 4 : 12 : 0.18
+T: 1 1 : 4 : 2 : 0.06
+T: 1 1 : 4 : 1 : 0.01
+T: 1 1 : 5 : 5 : 0.09
+T: 1 1 : 5 : 4 : 0.03
+T: 1 1 : 5 : 7 : 0.18
+T: 1 1 : 5 : 12 : 0.06
+T: 1 1 : 5 : 15 : 0.36
+T: 1 1 : 5 : 1 : 0.03
+T: 1 1 : 5 : 13 : 0.18
+T: 1 1 : 5 : 3 : 0.06
+T: 1 1 : 5 : 0 : 0.01
+T: 1 2 : 15 : 15 : 0.24
+T: 1 2 : 15 : 13 : 0.08
+T: 1 2 : 15 : 14 : 0.48
+T: 1 2 : 15 : 9 : 0.01
+T: 1 2 : 15 : 10 : 0.06
+T: 1 2 : 15 : 11 : 0.03
+T: 1 2 : 15 : 6 : 0.06
+T: 1 2 : 15 : 5 : 0.01
+T: 1 2 : 15 : 7 : 0.03
+T: 1 2 : 14 : 14 : 0.64
+T: 1 2 : 14 : 15 : 0.08
+T: 1 2 : 14 : 12 : 0.08
+T: 1 2 : 14 : 11 : 0.01
+T: 1 2 : 14 : 4 : 0.01
+T: 1 2 : 14 : 8 : 0.01
+T: 1 2 : 14 : 10 : 0.08
+T: 1 2 : 14 : 7 : 0.01
+T: 1 2 : 14 : 6 : 0.08
+T: 1 2 : 13 : 13 : 0.24
+T: 1 2 : 13 : 15 : 0.08
+T: 1 2 : 13 : 12 : 0.48
+T: 1 2 : 13 : 11 : 0.01
+T: 1 2 : 13 : 4 : 0.06
+T: 1 2 : 13 : 8 : 0.06
+T: 1 2 : 13 : 9 : 0.03
+T: 1 2 : 13 : 7 : 0.01
+T: 1 2 : 13 : 5 : 0.03
+T: 1 2 : 12 : 12 : 0.64
+T: 1 2 : 12 : 13 : 0.08
+T: 1 2 : 12 : 14 : 0.08
+T: 1 2 : 12 : 9 : 0.01
+T: 1 2 : 12 : 10 : 0.01
+T: 1 2 : 12 : 8 : 0.08
+T: 1 2 : 12 : 6 : 0.01
+T: 1 2 : 12 : 5 : 0.01
+T: 1 2 : 12 : 4 : 0.08
+T: 1 2 : 11 : 11 : 0.24
+T: 1 2 : 11 : 9 : 0.08
+T: 1 2 : 11 : 10 : 0.48
+T: 1 2 : 11 : 13 : 0.01
+T: 1 2 : 11 : 14 : 0.06
+T: 1 2 : 11 : 15 : 0.03
+T: 1 2 : 11 : 1 : 0.01
+T: 1 2 : 11 : 2 : 0.06
+T: 1 2 : 11 : 3 : 0.03
+T: 1 2 : 10 : 10 : 0.64
+T: 1 2 : 10 : 11 : 0.08
+T: 1 2 : 10 : 8 : 0.08
+T: 1 2 : 10 : 15 : 0.01
+T: 1 2 : 10 : 12 : 0.01
+T: 1 2 : 10 : 14 : 0.08
+T: 1 2 : 10 : 0 : 0.01
+T: 1 2 : 10 : 3 : 0.01
+T: 1 2 : 10 : 2 : 0.08
+T: 1 2 : 9 : 9 : 0.24
+T: 1 2 : 9 : 11 : 0.08
+T: 1 2 : 9 : 8 : 0.48
+T: 1 2 : 9 : 15 : 0.01
+T: 1 2 : 9 : 1 : 0.03
+T: 1 2 : 9 : 12 : 0.06
+T: 1 2 : 9 : 13 : 0.03
+T: 1 2 : 9 : 0 : 0.06
+T: 1 2 : 9 : 3 : 0.01
+T: 1 2 : 8 : 8 : 0.64
+T: 1 2 : 8 : 9 : 0.08
+T: 1 2 : 8 : 10 : 0.08
+T: 1 2 : 8 : 13 : 0.01
+T: 1 2 : 8 : 14 : 0.01
+T: 1 2 : 8 : 0 : 0.08
+T: 1 2 : 8 : 12 : 0.08
+T: 1 2 : 8 : 2 : 0.01
+T: 1 2 : 8 : 1 : 0.01
+T: 1 2 : 7 : 7 : 0.09
+T: 1 2 : 7 : 5 : 0.03
+T: 1 2 : 7 : 6 : 0.18
+T: 1 2 : 7 : 13 : 0.06
+T: 1 2 : 7 : 14 : 0.36
+T: 1 2 : 7 : 15 : 0.18
+T: 1 2 : 7 : 1 : 0.01
+T: 1 2 : 7 : 2 : 0.06
+T: 1 2 : 7 : 3 : 0.03
+T: 1 2 : 6 : 6 : 0.24
+T: 1 2 : 6 : 7 : 0.03
+T: 1 2 : 6 : 4 : 0.03
+T: 1 2 : 6 : 15 : 0.06
+T: 1 2 : 6 : 12 : 0.06
+T: 1 2 : 6 : 14 : 0.48
+T: 1 2 : 6 : 0 : 0.01
+T: 1 2 : 6 : 3 : 0.01
+T: 1 2 : 6 : 2 : 0.08
+T: 1 2 : 1 : 1 : 0.09
+T: 1 2 : 1 : 3 : 0.03
+T: 1 2 : 1 : 0 : 0.18
+T: 1 2 : 1 : 11 : 0.06
+T: 1 2 : 1 : 4 : 0.06
+T: 1 2 : 1 : 8 : 0.36
+T: 1 2 : 1 : 9 : 0.18
+T: 1 2 : 1 : 7 : 0.01
+T: 1 2 : 1 : 5 : 0.03
+T: 1 2 : 0 : 0 : 0.24
+T: 1 2 : 0 : 1 : 0.03
+T: 1 2 : 0 : 2 : 0.03
+T: 1 2 : 0 : 9 : 0.06
+T: 1 2 : 0 : 10 : 0.06
+T: 1 2 : 0 : 8 : 0.48
+T: 1 2 : 0 : 6 : 0.01
+T: 1 2 : 0 : 5 : 0.01
+T: 1 2 : 0 : 4 : 0.08
+T: 1 2 : 2 : 2 : 0.24
+T: 1 2 : 2 : 3 : 0.03
+T: 1 2 : 2 : 0 : 0.03
+T: 1 2 : 2 : 11 : 0.06
+T: 1 2 : 2 : 4 : 0.01
+T: 1 2 : 2 : 8 : 0.06
+T: 1 2 : 2 : 10 : 0.48
+T: 1 2 : 2 : 7 : 0.01
+T: 1 2 : 2 : 6 : 0.08
+T: 1 2 : 3 : 3 : 0.09
+T: 1 2 : 3 : 1 : 0.03
+T: 1 2 : 3 : 2 : 0.18
+T: 1 2 : 3 : 9 : 0.06
+T: 1 2 : 3 : 10 : 0.36
+T: 1 2 : 3 : 11 : 0.18
+T: 1 2 : 3 : 6 : 0.06
+T: 1 2 : 3 : 5 : 0.01
+T: 1 2 : 3 : 7 : 0.03
+T: 1 2 : 4 : 4 : 0.24
+T: 1 2 : 4 : 5 : 0.03
+T: 1 2 : 4 : 6 : 0.03
+T: 1 2 : 4 : 13 : 0.06
+T: 1 2 : 4 : 14 : 0.06
+T: 1 2 : 4 : 0 : 0.08
+T: 1 2 : 4 : 12 : 0.48
+T: 1 2 : 4 : 2 : 0.01
+T: 1 2 : 4 : 1 : 0.01
+T: 1 2 : 5 : 5 : 0.09
+T: 1 2 : 5 : 7 : 0.03
+T: 1 2 : 5 : 4 : 0.18
+T: 1 2 : 5 : 15 : 0.06
+T: 1 2 : 5 : 1 : 0.03
+T: 1 2 : 5 : 12 : 0.36
+T: 1 2 : 5 : 13 : 0.18
+T: 1 2 : 5 : 0 : 0.06
+T: 1 2 : 5 : 3 : 0.01
+T: 1 3 : 15 : 15 : 0.64
+T: 1 3 : 15 : 14 : 0.08
+T: 1 3 : 15 : 13 : 0.08
+T: 1 3 : 15 : 10 : 0.01
+T: 1 3 : 15 : 9 : 0.01
+T: 1 3 : 15 : 11 : 0.08
+T: 1 3 : 15 : 5 : 0.01
+T: 1 3 : 15 : 6 : 0.01
+T: 1 3 : 15 : 7 : 0.08
+T: 1 3 : 14 : 14 : 0.24
+T: 1 3 : 14 : 12 : 0.08
+T: 1 3 : 14 : 15 : 0.48
+T: 1 3 : 14 : 8 : 0.01
+T: 1 3 : 14 : 11 : 0.06
+T: 1 3 : 14 : 4 : 0.01
+T: 1 3 : 14 : 10 : 0.03
+T: 1 3 : 14 : 7 : 0.06
+T: 1 3 : 14 : 6 : 0.03
+T: 1 3 : 13 : 13 : 0.64
+T: 1 3 : 13 : 12 : 0.08
+T: 1 3 : 13 : 15 : 0.08
+T: 1 3 : 13 : 8 : 0.01
+T: 1 3 : 13 : 11 : 0.01
+T: 1 3 : 13 : 4 : 0.01
+T: 1 3 : 13 : 9 : 0.08
+T: 1 3 : 13 : 7 : 0.01
+T: 1 3 : 13 : 5 : 0.08
+T: 1 3 : 12 : 12 : 0.24
+T: 1 3 : 12 : 14 : 0.08
+T: 1 3 : 12 : 13 : 0.48
+T: 1 3 : 12 : 10 : 0.01
+T: 1 3 : 12 : 9 : 0.06
+T: 1 3 : 12 : 8 : 0.03
+T: 1 3 : 12 : 5 : 0.06
+T: 1 3 : 12 : 6 : 0.01
+T: 1 3 : 12 : 4 : 0.03
+T: 1 3 : 11 : 11 : 0.64
+T: 1 3 : 11 : 10 : 0.08
+T: 1 3 : 11 : 9 : 0.08
+T: 1 3 : 11 : 14 : 0.01
+T: 1 3 : 11 : 13 : 0.01
+T: 1 3 : 11 : 15 : 0.08
+T: 1 3 : 11 : 1 : 0.01
+T: 1 3 : 11 : 2 : 0.01
+T: 1 3 : 11 : 3 : 0.08
+T: 1 3 : 10 : 10 : 0.24
+T: 1 3 : 10 : 8 : 0.08
+T: 1 3 : 10 : 11 : 0.48
+T: 1 3 : 10 : 12 : 0.01
+T: 1 3 : 10 : 15 : 0.06
+T: 1 3 : 10 : 14 : 0.03
+T: 1 3 : 10 : 0 : 0.01
+T: 1 3 : 10 : 3 : 0.06
+T: 1 3 : 10 : 2 : 0.03
+T: 1 3 : 9 : 9 : 0.64
+T: 1 3 : 9 : 8 : 0.08
+T: 1 3 : 9 : 11 : 0.08
+T: 1 3 : 9 : 12 : 0.01
+T: 1 3 : 9 : 15 : 0.01
+T: 1 3 : 9 : 1 : 0.08
+T: 1 3 : 9 : 13 : 0.08
+T: 1 3 : 9 : 3 : 0.01
+T: 1 3 : 9 : 0 : 0.01
+T: 1 3 : 8 : 8 : 0.24
+T: 1 3 : 8 : 10 : 0.08
+T: 1 3 : 8 : 9 : 0.48
+T: 1 3 : 8 : 14 : 0.01
+T: 1 3 : 8 : 0 : 0.03
+T: 1 3 : 8 : 13 : 0.06
+T: 1 3 : 8 : 12 : 0.03
+T: 1 3 : 8 : 1 : 0.06
+T: 1 3 : 8 : 2 : 0.01
+T: 1 3 : 7 : 7 : 0.24
+T: 1 3 : 7 : 6 : 0.03
+T: 1 3 : 7 : 5 : 0.03
+T: 1 3 : 7 : 14 : 0.06
+T: 1 3 : 7 : 13 : 0.06
+T: 1 3 : 7 : 15 : 0.48
+T: 1 3 : 7 : 1 : 0.01
+T: 1 3 : 7 : 2 : 0.01
+T: 1 3 : 7 : 3 : 0.08
+T: 1 3 : 6 : 6 : 0.09
+T: 1 3 : 6 : 4 : 0.03
+T: 1 3 : 6 : 7 : 0.18
+T: 1 3 : 6 : 12 : 0.06
+T: 1 3 : 6 : 15 : 0.36
+T: 1 3 : 6 : 14 : 0.18
+T: 1 3 : 6 : 0 : 0.01
+T: 1 3 : 6 : 3 : 0.06
+T: 1 3 : 6 : 2 : 0.03
+T: 1 3 : 1 : 1 : 0.24
+T: 1 3 : 1 : 0 : 0.03
+T: 1 3 : 1 : 3 : 0.03
+T: 1 3 : 1 : 8 : 0.06
+T: 1 3 : 1 : 11 : 0.06
+T: 1 3 : 1 : 4 : 0.01
+T: 1 3 : 1 : 9 : 0.48
+T: 1 3 : 1 : 7 : 0.01
+T: 1 3 : 1 : 5 : 0.08
+T: 1 3 : 0 : 0 : 0.09
+T: 1 3 : 0 : 2 : 0.03
+T: 1 3 : 0 : 1 : 0.18
+T: 1 3 : 0 : 10 : 0.06
+T: 1 3 : 0 : 9 : 0.36
+T: 1 3 : 0 : 8 : 0.18
+T: 1 3 : 0 : 5 : 0.06
+T: 1 3 : 0 : 6 : 0.01
+T: 1 3 : 0 : 4 : 0.03
+T: 1 3 : 2 : 2 : 0.09
+T: 1 3 : 2 : 0 : 0.03
+T: 1 3 : 2 : 3 : 0.18
+T: 1 3 : 2 : 8 : 0.06
+T: 1 3 : 2 : 11 : 0.36
+T: 1 3 : 2 : 4 : 0.01
+T: 1 3 : 2 : 10 : 0.18
+T: 1 3 : 2 : 7 : 0.06
+T: 1 3 : 2 : 6 : 0.03
+T: 1 3 : 3 : 3 : 0.24
+T: 1 3 : 3 : 2 : 0.03
+T: 1 3 : 3 : 1 : 0.03
+T: 1 3 : 3 : 10 : 0.06
+T: 1 3 : 3 : 9 : 0.06
+T: 1 3 : 3 : 11 : 0.48
+T: 1 3 : 3 : 5 : 0.01
+T: 1 3 : 3 : 6 : 0.01
+T: 1 3 : 3 : 7 : 0.08
+T: 1 3 : 4 : 4 : 0.09
+T: 1 3 : 4 : 6 : 0.03
+T: 1 3 : 4 : 5 : 0.18
+T: 1 3 : 4 : 14 : 0.06
+T: 1 3 : 4 : 0 : 0.03
+T: 1 3 : 4 : 13 : 0.36
+T: 1 3 : 4 : 12 : 0.18
+T: 1 3 : 4 : 1 : 0.06
+T: 1 3 : 4 : 2 : 0.01
+T: 1 3 : 5 : 5 : 0.24
+T: 1 3 : 5 : 4 : 0.03
+T: 1 3 : 5 : 7 : 0.03
+T: 1 3 : 5 : 12 : 0.06
+T: 1 3 : 5 : 15 : 0.06
+T: 1 3 : 5 : 1 : 0.08
+T: 1 3 : 5 : 13 : 0.48
+T: 1 3 : 5 : 3 : 0.01
+T: 1 3 : 5 : 0 : 0.01
+T: 1 4 : 15 : 15 : 0.8
+T: 1 4 : 15 : 11 : 0.1
+T: 1 4 : 15 : 7 : 0.1
+T: 1 4 : 14 : 14 : 0.8
+T: 1 4 : 14 : 10 : 0.1
+T: 1 4 : 14 : 6 : 0.1
+T: 1 4 : 13 : 13 : 0.8
+T: 1 4 : 13 : 9 : 0.1
+T: 1 4 : 13 : 5 : 0.1
+T: 1 4 : 12 : 12 : 0.8
+T: 1 4 : 12 : 8 : 0.1
+T: 1 4 : 12 : 4 : 0.1
+T: 1 4 : 11 : 11 : 0.8
+T: 1 4 : 11 : 15 : 0.1
+T: 1 4 : 11 : 3 : 0.1
+T: 1 4 : 10 : 10 : 0.8
+T: 1 4 : 10 : 14 : 0.1
+T: 1 4 : 10 : 2 : 0.1
+T: 1 4 : 9 : 9 : 0.8
+T: 1 4 : 9 : 13 : 0.1
+T: 1 4 : 9 : 1 : 0.1
+T: 1 4 : 8 : 8 : 0.8
+T: 1 4 : 8 : 12 : 0.1
+T: 1 4 : 8 : 0 : 0.1
+T: 1 4 : 7 : 7 : 0.3
+T: 1 4 : 7 : 15 : 0.6
+T: 1 4 : 7 : 3 : 0.1
+T: 1 4 : 6 : 6 : 0.3
+T: 1 4 : 6 : 14 : 0.6
+T: 1 4 : 6 : 2 : 0.1
+T: 1 4 : 1 : 1 : 0.3
+T: 1 4 : 1 : 9 : 0.6
+T: 1 4 : 1 : 5 : 0.1
+T: 1 4 : 0 : 0 : 0.3
+T: 1 4 : 0 : 8 : 0.6
+T: 1 4 : 0 : 4 : 0.1
+T: 1 4 : 2 : 2 : 0.3
+T: 1 4 : 2 : 10 : 0.6
+T: 1 4 : 2 : 6 : 0.1
+T: 1 4 : 3 : 3 : 0.3
+T: 1 4 : 3 : 11 : 0.6
+T: 1 4 : 3 : 7 : 0.1
+T: 1 4 : 4 : 4 : 0.3
+T: 1 4 : 4 : 12 : 0.6
+T: 1 4 : 4 : 0 : 0.1
+T: 1 4 : 5 : 5 : 0.3
+T: 1 4 : 5 : 13 : 0.6
+T: 1 4 : 5 : 1 : 0.1
+T: 2 0 : 15 : 15 : 0.09
+T: 2 0 : 15 : 14 : 0.03
+T: 2 0 : 15 : 13 : 0.18
+T: 2 0 : 15 : 10 : 0.06
+T: 2 0 : 15 : 9 : 0.36
+T: 2 0 : 15 : 11 : 0.18
+T: 2 0 : 15 : 5 : 0.06
+T: 2 0 : 15 : 6 : 0.01
+T: 2 0 : 15 : 7 : 0.03
+T: 2 0 : 14 : 14 : 0.09
+T: 2 0 : 14 : 15 : 0.03
+T: 2 0 : 14 : 12 : 0.18
+T: 2 0 : 14 : 11 : 0.06
+T: 2 0 : 14 : 4 : 0.06
+T: 2 0 : 14 : 8 : 0.36
+T: 2 0 : 14 : 10 : 0.18
+T: 2 0 : 14 : 7 : 0.01
+T: 2 0 : 14 : 6 : 0.03
+T: 2 0 : 13 : 13 : 0.24
+T: 2 0 : 13 : 15 : 0.03
+T: 2 0 : 13 : 12 : 0.03
+T: 2 0 : 13 : 11 : 0.06
+T: 2 0 : 13 : 4 : 0.01
+T: 2 0 : 13 : 8 : 0.06
+T: 2 0 : 13 : 9 : 0.48
+T: 2 0 : 13 : 7 : 0.01
+T: 2 0 : 13 : 5 : 0.08
+T: 2 0 : 12 : 12 : 0.24
+T: 2 0 : 12 : 14 : 0.03
+T: 2 0 : 12 : 13 : 0.03
+T: 2 0 : 12 : 10 : 0.06
+T: 2 0 : 12 : 9 : 0.06
+T: 2 0 : 12 : 8 : 0.48
+T: 2 0 : 12 : 5 : 0.01
+T: 2 0 : 12 : 6 : 0.01
+T: 2 0 : 12 : 4 : 0.08
+T: 2 0 : 11 : 11 : 0.24
+T: 2 0 : 11 : 10 : 0.08
+T: 2 0 : 11 : 9 : 0.48
+T: 2 0 : 11 : 2 : 0.01
+T: 2 0 : 11 : 1 : 0.06
+T: 2 0 : 11 : 15 : 0.03
+T: 2 0 : 11 : 3 : 0.03
+T: 2 0 : 11 : 13 : 0.06
+T: 2 0 : 11 : 14 : 0.01
+T: 2 0 : 10 : 10 : 0.24
+T: 2 0 : 10 : 11 : 0.08
+T: 2 0 : 10 : 8 : 0.48
+T: 2 0 : 10 : 3 : 0.01
+T: 2 0 : 10 : 0 : 0.06
+T: 2 0 : 10 : 14 : 0.03
+T: 2 0 : 10 : 2 : 0.03
+T: 2 0 : 10 : 12 : 0.06
+T: 2 0 : 10 : 15 : 0.01
+T: 2 0 : 9 : 9 : 0.64
+T: 2 0 : 9 : 11 : 0.08
+T: 2 0 : 9 : 8 : 0.08
+T: 2 0 : 9 : 3 : 0.01
+T: 2 0 : 9 : 0 : 0.01
+T: 2 0 : 9 : 1 : 0.08
+T: 2 0 : 9 : 15 : 0.01
+T: 2 0 : 9 : 12 : 0.01
+T: 2 0 : 9 : 13 : 0.08
+T: 2 0 : 8 : 8 : 0.64
+T: 2 0 : 8 : 10 : 0.08
+T: 2 0 : 8 : 9 : 0.08
+T: 2 0 : 8 : 2 : 0.01
+T: 2 0 : 8 : 1 : 0.01
+T: 2 0 : 8 : 0 : 0.08
+T: 2 0 : 8 : 14 : 0.01
+T: 2 0 : 8 : 13 : 0.01
+T: 2 0 : 8 : 12 : 0.08
+T: 2 0 : 7 : 7 : 0.09
+T: 2 0 : 7 : 6 : 0.03
+T: 2 0 : 7 : 5 : 0.18
+T: 2 0 : 7 : 2 : 0.06
+T: 2 0 : 7 : 1 : 0.36
+T: 2 0 : 7 : 15 : 0.03
+T: 2 0 : 7 : 3 : 0.18
+T: 2 0 : 7 : 13 : 0.06
+T: 2 0 : 7 : 14 : 0.01
+T: 2 0 : 6 : 6 : 0.09
+T: 2 0 : 6 : 7 : 0.03
+T: 2 0 : 6 : 4 : 0.18
+T: 2 0 : 6 : 3 : 0.06
+T: 2 0 : 6 : 0 : 0.36
+T: 2 0 : 6 : 14 : 0.03
+T: 2 0 : 6 : 2 : 0.18
+T: 2 0 : 6 : 12 : 0.06
+T: 2 0 : 6 : 15 : 0.01
+T: 2 0 : 1 : 1 : 0.64
+T: 2 0 : 1 : 3 : 0.08
+T: 2 0 : 1 : 0 : 0.08
+T: 2 0 : 1 : 11 : 0.01
+T: 2 0 : 1 : 4 : 0.01
+T: 2 0 : 1 : 8 : 0.01
+T: 2 0 : 1 : 9 : 0.08
+T: 2 0 : 1 : 7 : 0.01
+T: 2 0 : 1 : 5 : 0.08
+T: 2 0 : 0 : 0 : 0.64
+T: 2 0 : 0 : 2 : 0.08
+T: 2 0 : 0 : 1 : 0.08
+T: 2 0 : 0 : 10 : 0.01
+T: 2 0 : 0 : 9 : 0.01
+T: 2 0 : 0 : 8 : 0.08
+T: 2 0 : 0 : 5 : 0.01
+T: 2 0 : 0 : 6 : 0.01
+T: 2 0 : 0 : 4 : 0.08
+T: 2 0 : 2 : 2 : 0.24
+T: 2 0 : 2 : 3 : 0.08
+T: 2 0 : 2 : 0 : 0.48
+T: 2 0 : 2 : 11 : 0.01
+T: 2 0 : 2 : 4 : 0.06
+T: 2 0 : 2 : 8 : 0.06
+T: 2 0 : 2 : 10 : 0.03
+T: 2 0 : 2 : 7 : 0.01
+T: 2 0 : 2 : 6 : 0.03
+T: 2 0 : 3 : 3 : 0.24
+T: 2 0 : 3 : 2 : 0.08
+T: 2 0 : 3 : 1 : 0.48
+T: 2 0 : 3 : 10 : 0.01
+T: 2 0 : 3 : 9 : 0.06
+T: 2 0 : 3 : 11 : 0.03
+T: 2 0 : 3 : 5 : 0.06
+T: 2 0 : 3 : 6 : 0.01
+T: 2 0 : 3 : 7 : 0.03
+T: 2 0 : 4 : 4 : 0.24
+T: 2 0 : 4 : 6 : 0.03
+T: 2 0 : 4 : 5 : 0.03
+T: 2 0 : 4 : 2 : 0.06
+T: 2 0 : 4 : 1 : 0.06
+T: 2 0 : 4 : 0 : 0.48
+T: 2 0 : 4 : 14 : 0.01
+T: 2 0 : 4 : 13 : 0.01
+T: 2 0 : 4 : 12 : 0.08
+T: 2 0 : 5 : 5 : 0.24
+T: 2 0 : 5 : 7 : 0.03
+T: 2 0 : 5 : 4 : 0.03
+T: 2 0 : 5 : 3 : 0.06
+T: 2 0 : 5 : 0 : 0.06
+T: 2 0 : 5 : 1 : 0.48
+T: 2 0 : 5 : 15 : 0.01
+T: 2 0 : 5 : 12 : 0.01
+T: 2 0 : 5 : 13 : 0.08
+T: 2 1 : 15 : 15 : 0.24
+T: 2 1 : 15 : 13 : 0.03
+T: 2 1 : 15 : 14 : 0.03
+T: 2 1 : 15 : 9 : 0.06
+T: 2 1 : 15 : 10 : 0.06
+T: 2 1 : 15 : 11 : 0.48
+T: 2 1 : 15 : 6 : 0.01
+T: 2 1 : 15 : 5 : 0.01
+T: 2 1 : 15 : 7 : 0.08
+T: 2 1 : 14 : 14 : 0.24
+T: 2 1 : 14 : 12 : 0.03
+T: 2 1 : 14 : 15 : 0.03
+T: 2 1 : 14 : 8 : 0.06
+T: 2 1 : 14 : 11 : 0.06
+T: 2 1 : 14 : 4 : 0.01
+T: 2 1 : 14 : 10 : 0.48
+T: 2 1 : 14 : 7 : 0.01
+T: 2 1 : 14 : 6 : 0.08
+T: 2 1 : 13 : 13 : 0.09
+T: 2 1 : 13 : 12 : 0.03
+T: 2 1 : 13 : 15 : 0.18
+T: 2 1 : 13 : 8 : 0.06
+T: 2 1 : 13 : 11 : 0.36
+T: 2 1 : 13 : 4 : 0.01
+T: 2 1 : 13 : 9 : 0.18
+T: 2 1 : 13 : 7 : 0.06
+T: 2 1 : 13 : 5 : 0.03
+T: 2 1 : 12 : 12 : 0.09
+T: 2 1 : 12 : 13 : 0.03
+T: 2 1 : 12 : 14 : 0.18
+T: 2 1 : 12 : 9 : 0.06
+T: 2 1 : 12 : 10 : 0.36
+T: 2 1 : 12 : 8 : 0.18
+T: 2 1 : 12 : 6 : 0.06
+T: 2 1 : 12 : 5 : 0.01
+T: 2 1 : 12 : 4 : 0.03
+T: 2 1 : 11 : 11 : 0.64
+T: 2 1 : 11 : 9 : 0.08
+T: 2 1 : 11 : 10 : 0.08
+T: 2 1 : 11 : 1 : 0.01
+T: 2 1 : 11 : 15 : 0.08
+T: 2 1 : 11 : 2 : 0.01
+T: 2 1 : 11 : 3 : 0.08
+T: 2 1 : 11 : 14 : 0.01
+T: 2 1 : 11 : 13 : 0.01
+T: 2 1 : 10 : 10 : 0.64
+T: 2 1 : 10 : 8 : 0.08
+T: 2 1 : 10 : 11 : 0.08
+T: 2 1 : 10 : 0 : 0.01
+T: 2 1 : 10 : 14 : 0.08
+T: 2 1 : 10 : 3 : 0.01
+T: 2 1 : 10 : 2 : 0.08
+T: 2 1 : 10 : 15 : 0.01
+T: 2 1 : 10 : 12 : 0.01
+T: 2 1 : 9 : 9 : 0.24
+T: 2 1 : 9 : 8 : 0.08
+T: 2 1 : 9 : 11 : 0.48
+T: 2 1 : 9 : 0 : 0.01
+T: 2 1 : 9 : 3 : 0.06
+T: 2 1 : 9 : 1 : 0.03
+T: 2 1 : 9 : 15 : 0.06
+T: 2 1 : 9 : 12 : 0.01
+T: 2 1 : 9 : 13 : 0.03
+T: 2 1 : 8 : 8 : 0.24
+T: 2 1 : 8 : 9 : 0.08
+T: 2 1 : 8 : 10 : 0.48
+T: 2 1 : 8 : 1 : 0.01
+T: 2 1 : 8 : 2 : 0.06
+T: 2 1 : 8 : 0 : 0.03
+T: 2 1 : 8 : 14 : 0.06
+T: 2 1 : 8 : 13 : 0.01
+T: 2 1 : 8 : 12 : 0.03
+T: 2 1 : 7 : 7 : 0.24
+T: 2 1 : 7 : 5 : 0.03
+T: 2 1 : 7 : 6 : 0.03
+T: 2 1 : 7 : 1 : 0.06
+T: 2 1 : 7 : 15 : 0.08
+T: 2 1 : 7 : 2 : 0.06
+T: 2 1 : 7 : 3 : 0.48
+T: 2 1 : 7 : 14 : 0.01
+T: 2 1 : 7 : 13 : 0.01
+T: 2 1 : 6 : 6 : 0.24
+T: 2 1 : 6 : 4 : 0.03
+T: 2 1 : 6 : 7 : 0.03
+T: 2 1 : 6 : 0 : 0.06
+T: 2 1 : 6 : 14 : 0.08
+T: 2 1 : 6 : 3 : 0.06
+T: 2 1 : 6 : 2 : 0.48
+T: 2 1 : 6 : 15 : 0.01
+T: 2 1 : 6 : 12 : 0.01
+T: 2 1 : 1 : 1 : 0.24
+T: 2 1 : 1 : 0 : 0.08
+T: 2 1 : 1 : 3 : 0.48
+T: 2 1 : 1 : 8 : 0.01
+T: 2 1 : 1 : 11 : 0.06
+T: 2 1 : 1 : 4 : 0.01
+T: 2 1 : 1 : 9 : 0.03
+T: 2 1 : 1 : 7 : 0.06
+T: 2 1 : 1 : 5 : 0.03
+T: 2 1 : 0 : 0 : 0.24
+T: 2 1 : 0 : 1 : 0.08
+T: 2 1 : 0 : 2 : 0.48
+T: 2 1 : 0 : 9 : 0.01
+T: 2 1 : 0 : 10 : 0.06
+T: 2 1 : 0 : 8 : 0.03
+T: 2 1 : 0 : 6 : 0.06
+T: 2 1 : 0 : 5 : 0.01
+T: 2 1 : 0 : 4 : 0.03
+T: 2 1 : 2 : 2 : 0.64
+T: 2 1 : 2 : 0 : 0.08
+T: 2 1 : 2 : 3 : 0.08
+T: 2 1 : 2 : 8 : 0.01
+T: 2 1 : 2 : 11 : 0.01
+T: 2 1 : 2 : 4 : 0.01
+T: 2 1 : 2 : 10 : 0.08
+T: 2 1 : 2 : 7 : 0.01
+T: 2 1 : 2 : 6 : 0.08
+T: 2 1 : 3 : 3 : 0.64
+T: 2 1 : 3 : 1 : 0.08
+T: 2 1 : 3 : 2 : 0.08
+T: 2 1 : 3 : 9 : 0.01
+T: 2 1 : 3 : 10 : 0.01
+T: 2 1 : 3 : 11 : 0.08
+T: 2 1 : 3 : 6 : 0.01
+T: 2 1 : 3 : 5 : 0.01
+T: 2 1 : 3 : 7 : 0.08
+T: 2 1 : 4 : 4 : 0.09
+T: 2 1 : 4 : 5 : 0.03
+T: 2 1 : 4 : 6 : 0.18
+T: 2 1 : 4 : 1 : 0.06
+T: 2 1 : 4 : 2 : 0.36
+T: 2 1 : 4 : 0 : 0.18
+T: 2 1 : 4 : 14 : 0.06
+T: 2 1 : 4 : 13 : 0.01
+T: 2 1 : 4 : 12 : 0.03
+T: 2 1 : 5 : 5 : 0.09
+T: 2 1 : 5 : 4 : 0.03
+T: 2 1 : 5 : 7 : 0.18
+T: 2 1 : 5 : 0 : 0.06
+T: 2 1 : 5 : 3 : 0.36
+T: 2 1 : 5 : 1 : 0.18
+T: 2 1 : 5 : 15 : 0.06
+T: 2 1 : 5 : 12 : 0.01
+T: 2 1 : 5 : 13 : 0.03
+T: 2 2 : 15 : 15 : 0.09
+T: 2 2 : 15 : 13 : 0.03
+T: 2 2 : 15 : 14 : 0.18
+T: 2 2 : 15 : 9 : 0.06
+T: 2 2 : 15 : 10 : 0.36
+T: 2 2 : 15 : 11 : 0.18
+T: 2 2 : 15 : 6 : 0.06
+T: 2 2 : 15 : 5 : 0.01
+T: 2 2 : 15 : 7 : 0.03
+T: 2 2 : 14 : 14 : 0.24
+T: 2 2 : 14 : 15 : 0.03
+T: 2 2 : 14 : 12 : 0.03
+T: 2 2 : 14 : 11 : 0.06
+T: 2 2 : 14 : 4 : 0.01
+T: 2 2 : 14 : 8 : 0.06
+T: 2 2 : 14 : 10 : 0.48
+T: 2 2 : 14 : 7 : 0.01
+T: 2 2 : 14 : 6 : 0.08
+T: 2 2 : 13 : 13 : 0.09
+T: 2 2 : 13 : 15 : 0.03
+T: 2 2 : 13 : 12 : 0.18
+T: 2 2 : 13 : 11 : 0.06
+T: 2 2 : 13 : 4 : 0.06
+T: 2 2 : 13 : 8 : 0.36
+T: 2 2 : 13 : 9 : 0.18
+T: 2 2 : 13 : 7 : 0.01
+T: 2 2 : 13 : 5 : 0.03
+T: 2 2 : 12 : 12 : 0.24
+T: 2 2 : 12 : 13 : 0.03
+T: 2 2 : 12 : 14 : 0.03
+T: 2 2 : 12 : 9 : 0.06
+T: 2 2 : 12 : 10 : 0.06
+T: 2 2 : 12 : 8 : 0.48
+T: 2 2 : 12 : 6 : 0.01
+T: 2 2 : 12 : 5 : 0.01
+T: 2 2 : 12 : 4 : 0.08
+T: 2 2 : 11 : 11 : 0.24
+T: 2 2 : 11 : 9 : 0.08
+T: 2 2 : 11 : 10 : 0.48
+T: 2 2 : 11 : 1 : 0.01
+T: 2 2 : 11 : 15 : 0.03
+T: 2 2 : 11 : 2 : 0.06
+T: 2 2 : 11 : 3 : 0.03
+T: 2 2 : 11 : 14 : 0.06
+T: 2 2 : 11 : 13 : 0.01
+T: 2 2 : 10 : 10 : 0.64
+T: 2 2 : 10 : 11 : 0.08
+T: 2 2 : 10 : 8 : 0.08
+T: 2 2 : 10 : 3 : 0.01
+T: 2 2 : 10 : 0 : 0.01
+T: 2 2 : 10 : 14 : 0.08
+T: 2 2 : 10 : 2 : 0.08
+T: 2 2 : 10 : 12 : 0.01
+T: 2 2 : 10 : 15 : 0.01
+T: 2 2 : 9 : 9 : 0.24
+T: 2 2 : 9 : 11 : 0.08
+T: 2 2 : 9 : 8 : 0.48
+T: 2 2 : 9 : 3 : 0.01
+T: 2 2 : 9 : 0 : 0.06
+T: 2 2 : 9 : 1 : 0.03
+T: 2 2 : 9 : 15 : 0.01
+T: 2 2 : 9 : 12 : 0.06
+T: 2 2 : 9 : 13 : 0.03
+T: 2 2 : 8 : 8 : 0.64
+T: 2 2 : 8 : 9 : 0.08
+T: 2 2 : 8 : 10 : 0.08
+T: 2 2 : 8 : 1 : 0.01
+T: 2 2 : 8 : 2 : 0.01
+T: 2 2 : 8 : 0 : 0.08
+T: 2 2 : 8 : 14 : 0.01
+T: 2 2 : 8 : 13 : 0.01
+T: 2 2 : 8 : 12 : 0.08
+T: 2 2 : 7 : 7 : 0.09
+T: 2 2 : 7 : 5 : 0.03
+T: 2 2 : 7 : 6 : 0.18
+T: 2 2 : 7 : 1 : 0.06
+T: 2 2 : 7 : 15 : 0.03
+T: 2 2 : 7 : 2 : 0.36
+T: 2 2 : 7 : 3 : 0.18
+T: 2 2 : 7 : 14 : 0.06
+T: 2 2 : 7 : 13 : 0.01
+T: 2 2 : 6 : 6 : 0.24
+T: 2 2 : 6 : 7 : 0.03
+T: 2 2 : 6 : 4 : 0.03
+T: 2 2 : 6 : 3 : 0.06
+T: 2 2 : 6 : 0 : 0.06
+T: 2 2 : 6 : 14 : 0.08
+T: 2 2 : 6 : 2 : 0.48
+T: 2 2 : 6 : 12 : 0.01
+T: 2 2 : 6 : 15 : 0.01
+T: 2 2 : 1 : 1 : 0.24
+T: 2 2 : 1 : 3 : 0.08
+T: 2 2 : 1 : 0 : 0.48
+T: 2 2 : 1 : 11 : 0.01
+T: 2 2 : 1 : 4 : 0.06
+T: 2 2 : 1 : 8 : 0.06
+T: 2 2 : 1 : 9 : 0.03
+T: 2 2 : 1 : 7 : 0.01
+T: 2 2 : 1 : 5 : 0.03
+T: 2 2 : 0 : 0 : 0.64
+T: 2 2 : 0 : 1 : 0.08
+T: 2 2 : 0 : 2 : 0.08
+T: 2 2 : 0 : 9 : 0.01
+T: 2 2 : 0 : 10 : 0.01
+T: 2 2 : 0 : 8 : 0.08
+T: 2 2 : 0 : 6 : 0.01
+T: 2 2 : 0 : 5 : 0.01
+T: 2 2 : 0 : 4 : 0.08
+T: 2 2 : 2 : 2 : 0.64
+T: 2 2 : 2 : 3 : 0.08
+T: 2 2 : 2 : 0 : 0.08
+T: 2 2 : 2 : 11 : 0.01
+T: 2 2 : 2 : 4 : 0.01
+T: 2 2 : 2 : 8 : 0.01
+T: 2 2 : 2 : 10 : 0.08
+T: 2 2 : 2 : 7 : 0.01
+T: 2 2 : 2 : 6 : 0.08
+T: 2 2 : 3 : 3 : 0.24
+T: 2 2 : 3 : 1 : 0.08
+T: 2 2 : 3 : 2 : 0.48
+T: 2 2 : 3 : 9 : 0.01
+T: 2 2 : 3 : 10 : 0.06
+T: 2 2 : 3 : 11 : 0.03
+T: 2 2 : 3 : 6 : 0.06
+T: 2 2 : 3 : 5 : 0.01
+T: 2 2 : 3 : 7 : 0.03
+T: 2 2 : 4 : 4 : 0.24
+T: 2 2 : 4 : 5 : 0.03
+T: 2 2 : 4 : 6 : 0.03
+T: 2 2 : 4 : 1 : 0.06
+T: 2 2 : 4 : 2 : 0.06
+T: 2 2 : 4 : 0 : 0.48
+T: 2 2 : 4 : 14 : 0.01
+T: 2 2 : 4 : 13 : 0.01
+T: 2 2 : 4 : 12 : 0.08
+T: 2 2 : 5 : 5 : 0.09
+T: 2 2 : 5 : 7 : 0.03
+T: 2 2 : 5 : 4 : 0.18
+T: 2 2 : 5 : 3 : 0.06
+T: 2 2 : 5 : 0 : 0.36
+T: 2 2 : 5 : 1 : 0.18
+T: 2 2 : 5 : 15 : 0.01
+T: 2 2 : 5 : 12 : 0.06
+T: 2 2 : 5 : 13 : 0.03
+T: 2 3 : 15 : 15 : 0.24
+T: 2 3 : 15 : 14 : 0.03
+T: 2 3 : 15 : 13 : 0.03
+T: 2 3 : 15 : 10 : 0.06
+T: 2 3 : 15 : 9 : 0.06
+T: 2 3 : 15 : 11 : 0.48
+T: 2 3 : 15 : 5 : 0.01
+T: 2 3 : 15 : 6 : 0.01
+T: 2 3 : 15 : 7 : 0.08
+T: 2 3 : 14 : 14 : 0.09
+T: 2 3 : 14 : 12 : 0.03
+T: 2 3 : 14 : 15 : 0.18
+T: 2 3 : 14 : 8 : 0.06
+T: 2 3 : 14 : 11 : 0.36
+T: 2 3 : 14 : 4 : 0.01
+T: 2 3 : 14 : 10 : 0.18
+T: 2 3 : 14 : 7 : 0.06
+T: 2 3 : 14 : 6 : 0.03
+T: 2 3 : 13 : 13 : 0.24
+T: 2 3 : 13 : 12 : 0.03
+T: 2 3 : 13 : 15 : 0.03
+T: 2 3 : 13 : 8 : 0.06
+T: 2 3 : 13 : 11 : 0.06
+T: 2 3 : 13 : 4 : 0.01
+T: 2 3 : 13 : 9 : 0.48
+T: 2 3 : 13 : 7 : 0.01
+T: 2 3 : 13 : 5 : 0.08
+T: 2 3 : 12 : 12 : 0.09
+T: 2 3 : 12 : 14 : 0.03
+T: 2 3 : 12 : 13 : 0.18
+T: 2 3 : 12 : 10 : 0.06
+T: 2 3 : 12 : 9 : 0.36
+T: 2 3 : 12 : 8 : 0.18
+T: 2 3 : 12 : 5 : 0.06
+T: 2 3 : 12 : 6 : 0.01
+T: 2 3 : 12 : 4 : 0.03
+T: 2 3 : 11 : 11 : 0.64
+T: 2 3 : 11 : 10 : 0.08
+T: 2 3 : 11 : 9 : 0.08
+T: 2 3 : 11 : 2 : 0.01
+T: 2 3 : 11 : 1 : 0.01
+T: 2 3 : 11 : 15 : 0.08
+T: 2 3 : 11 : 3 : 0.08
+T: 2 3 : 11 : 13 : 0.01
+T: 2 3 : 11 : 14 : 0.01
+T: 2 3 : 10 : 10 : 0.24
+T: 2 3 : 10 : 8 : 0.08
+T: 2 3 : 10 : 11 : 0.48
+T: 2 3 : 10 : 0 : 0.01
+T: 2 3 : 10 : 14 : 0.03
+T: 2 3 : 10 : 3 : 0.06
+T: 2 3 : 10 : 2 : 0.03
+T: 2 3 : 10 : 15 : 0.06
+T: 2 3 : 10 : 12 : 0.01
+T: 2 3 : 9 : 9 : 0.64
+T: 2 3 : 9 : 8 : 0.08
+T: 2 3 : 9 : 11 : 0.08
+T: 2 3 : 9 : 0 : 0.01
+T: 2 3 : 9 : 3 : 0.01
+T: 2 3 : 9 : 1 : 0.08
+T: 2 3 : 9 : 15 : 0.01
+T: 2 3 : 9 : 12 : 0.01
+T: 2 3 : 9 : 13 : 0.08
+T: 2 3 : 8 : 8 : 0.24
+T: 2 3 : 8 : 10 : 0.08
+T: 2 3 : 8 : 9 : 0.48
+T: 2 3 : 8 : 2 : 0.01
+T: 2 3 : 8 : 1 : 0.06
+T: 2 3 : 8 : 0 : 0.03
+T: 2 3 : 8 : 14 : 0.01
+T: 2 3 : 8 : 13 : 0.06
+T: 2 3 : 8 : 12 : 0.03
+T: 2 3 : 7 : 7 : 0.24
+T: 2 3 : 7 : 6 : 0.03
+T: 2 3 : 7 : 5 : 0.03
+T: 2 3 : 7 : 2 : 0.06
+T: 2 3 : 7 : 1 : 0.06
+T: 2 3 : 7 : 15 : 0.08
+T: 2 3 : 7 : 3 : 0.48
+T: 2 3 : 7 : 13 : 0.01
+T: 2 3 : 7 : 14 : 0.01
+T: 2 3 : 6 : 6 : 0.09
+T: 2 3 : 6 : 4 : 0.03
+T: 2 3 : 6 : 7 : 0.18
+T: 2 3 : 6 : 0 : 0.06
+T: 2 3 : 6 : 14 : 0.03
+T: 2 3 : 6 : 3 : 0.36
+T: 2 3 : 6 : 2 : 0.18
+T: 2 3 : 6 : 15 : 0.06
+T: 2 3 : 6 : 12 : 0.01
+T: 2 3 : 1 : 1 : 0.64
+T: 2 3 : 1 : 0 : 0.08
+T: 2 3 : 1 : 3 : 0.08
+T: 2 3 : 1 : 8 : 0.01
+T: 2 3 : 1 : 11 : 0.01
+T: 2 3 : 1 : 4 : 0.01
+T: 2 3 : 1 : 9 : 0.08
+T: 2 3 : 1 : 7 : 0.01
+T: 2 3 : 1 : 5 : 0.08
+T: 2 3 : 0 : 0 : 0.24
+T: 2 3 : 0 : 2 : 0.08
+T: 2 3 : 0 : 1 : 0.48
+T: 2 3 : 0 : 10 : 0.01
+T: 2 3 : 0 : 9 : 0.06
+T: 2 3 : 0 : 8 : 0.03
+T: 2 3 : 0 : 5 : 0.06
+T: 2 3 : 0 : 6 : 0.01
+T: 2 3 : 0 : 4 : 0.03
+T: 2 3 : 2 : 2 : 0.24
+T: 2 3 : 2 : 0 : 0.08
+T: 2 3 : 2 : 3 : 0.48
+T: 2 3 : 2 : 8 : 0.01
+T: 2 3 : 2 : 11 : 0.06
+T: 2 3 : 2 : 4 : 0.01
+T: 2 3 : 2 : 10 : 0.03
+T: 2 3 : 2 : 7 : 0.06
+T: 2 3 : 2 : 6 : 0.03
+T: 2 3 : 3 : 3 : 0.64
+T: 2 3 : 3 : 2 : 0.08
+T: 2 3 : 3 : 1 : 0.08
+T: 2 3 : 3 : 10 : 0.01
+T: 2 3 : 3 : 9 : 0.01
+T: 2 3 : 3 : 11 : 0.08
+T: 2 3 : 3 : 5 : 0.01
+T: 2 3 : 3 : 6 : 0.01
+T: 2 3 : 3 : 7 : 0.08
+T: 2 3 : 4 : 4 : 0.09
+T: 2 3 : 4 : 6 : 0.03
+T: 2 3 : 4 : 5 : 0.18
+T: 2 3 : 4 : 2 : 0.06
+T: 2 3 : 4 : 1 : 0.36
+T: 2 3 : 4 : 0 : 0.18
+T: 2 3 : 4 : 14 : 0.01
+T: 2 3 : 4 : 13 : 0.06
+T: 2 3 : 4 : 12 : 0.03
+T: 2 3 : 5 : 5 : 0.24
+T: 2 3 : 5 : 4 : 0.03
+T: 2 3 : 5 : 7 : 0.03
+T: 2 3 : 5 : 0 : 0.06
+T: 2 3 : 5 : 3 : 0.06
+T: 2 3 : 5 : 1 : 0.48
+T: 2 3 : 5 : 15 : 0.01
+T: 2 3 : 5 : 12 : 0.01
+T: 2 3 : 5 : 13 : 0.08
+T: 2 4 : 15 : 15 : 0.3
+T: 2 4 : 15 : 11 : 0.6
+T: 2 4 : 15 : 7 : 0.1
+T: 2 4 : 14 : 14 : 0.3
+T: 2 4 : 14 : 10 : 0.6
+T: 2 4 : 14 : 6 : 0.1
+T: 2 4 : 13 : 13 : 0.3
+T: 2 4 : 13 : 9 : 0.6
+T: 2 4 : 13 : 5 : 0.1
+T: 2 4 : 12 : 12 : 0.3
+T: 2 4 : 12 : 8 : 0.6
+T: 2 4 : 12 : 4 : 0.1
+T: 2 4 : 11 : 11 : 0.8
+T: 2 4 : 11 : 3 : 0.1
+T: 2 4 : 11 : 15 : 0.1
+T: 2 4 : 10 : 10 : 0.8
+T: 2 4 : 10 : 2 : 0.1
+T: 2 4 : 10 : 14 : 0.1
+T: 2 4 : 9 : 9 : 0.8
+T: 2 4 : 9 : 1 : 0.1
+T: 2 4 : 9 : 13 : 0.1
+T: 2 4 : 8 : 8 : 0.8
+T: 2 4 : 8 : 0 : 0.1
+T: 2 4 : 8 : 12 : 0.1
+T: 2 4 : 7 : 7 : 0.3
+T: 2 4 : 7 : 3 : 0.6
+T: 2 4 : 7 : 15 : 0.1
+T: 2 4 : 6 : 6 : 0.3
+T: 2 4 : 6 : 2 : 0.6
+T: 2 4 : 6 : 14 : 0.1
+T: 2 4 : 1 : 1 : 0.8
+T: 2 4 : 1 : 9 : 0.1
+T: 2 4 : 1 : 5 : 0.1
+T: 2 4 : 0 : 0 : 0.8
+T: 2 4 : 0 : 8 : 0.1
+T: 2 4 : 0 : 4 : 0.1
+T: 2 4 : 2 : 2 : 0.8
+T: 2 4 : 2 : 10 : 0.1
+T: 2 4 : 2 : 6 : 0.1
+T: 2 4 : 3 : 3 : 0.8
+T: 2 4 : 3 : 11 : 0.1
+T: 2 4 : 3 : 7 : 0.1
+T: 2 4 : 4 : 4 : 0.3
+T: 2 4 : 4 : 0 : 0.6
+T: 2 4 : 4 : 12 : 0.1
+T: 2 4 : 5 : 5 : 0.3
+T: 2 4 : 5 : 1 : 0.6
+T: 2 4 : 5 : 13 : 0.1
+T: 3 0 : 15 : 15 : 0.24
+T: 3 0 : 15 : 14 : 0.08
+T: 3 0 : 15 : 13 : 0.48
+T: 3 0 : 15 : 6 : 0.01
+T: 3 0 : 15 : 5 : 0.06
+T: 3 0 : 15 : 7 : 0.03
+T: 3 0 : 15 : 9 : 0.06
+T: 3 0 : 15 : 10 : 0.01
+T: 3 0 : 15 : 11 : 0.03
+T: 3 0 : 14 : 14 : 0.24
+T: 3 0 : 14 : 15 : 0.08
+T: 3 0 : 14 : 12 : 0.48
+T: 3 0 : 14 : 7 : 0.01
+T: 3 0 : 14 : 4 : 0.06
+T: 3 0 : 14 : 11 : 0.01
+T: 3 0 : 14 : 6 : 0.03
+T: 3 0 : 14 : 8 : 0.06
+T: 3 0 : 14 : 10 : 0.03
+T: 3 0 : 13 : 13 : 0.64
+T: 3 0 : 13 : 15 : 0.08
+T: 3 0 : 13 : 12 : 0.08
+T: 3 0 : 13 : 7 : 0.01
+T: 3 0 : 13 : 4 : 0.01
+T: 3 0 : 13 : 11 : 0.01
+T: 3 0 : 13 : 5 : 0.08
+T: 3 0 : 13 : 8 : 0.01
+T: 3 0 : 13 : 9 : 0.08
+T: 3 0 : 12 : 12 : 0.64
+T: 3 0 : 12 : 14 : 0.08
+T: 3 0 : 12 : 13 : 0.08
+T: 3 0 : 12 : 6 : 0.01
+T: 3 0 : 12 : 5 : 0.01
+T: 3 0 : 12 : 4 : 0.08
+T: 3 0 : 12 : 9 : 0.01
+T: 3 0 : 12 : 10 : 0.01
+T: 3 0 : 12 : 8 : 0.08
+T: 3 0 : 11 : 11 : 0.09
+T: 3 0 : 11 : 10 : 0.03
+T: 3 0 : 11 : 9 : 0.18
+T: 3 0 : 11 : 14 : 0.06
+T: 3 0 : 11 : 13 : 0.36
+T: 3 0 : 11 : 15 : 0.18
+T: 3 0 : 11 : 1 : 0.06
+T: 3 0 : 11 : 2 : 0.01
+T: 3 0 : 11 : 3 : 0.03
+T: 3 0 : 10 : 10 : 0.09
+T: 3 0 : 10 : 11 : 0.03
+T: 3 0 : 10 : 8 : 0.18
+T: 3 0 : 10 : 15 : 0.06
+T: 3 0 : 10 : 12 : 0.36
+T: 3 0 : 10 : 14 : 0.18
+T: 3 0 : 10 : 0 : 0.06
+T: 3 0 : 10 : 3 : 0.01
+T: 3 0 : 10 : 2 : 0.03
+T: 3 0 : 9 : 9 : 0.24
+T: 3 0 : 9 : 11 : 0.03
+T: 3 0 : 9 : 8 : 0.03
+T: 3 0 : 9 : 15 : 0.06
+T: 3 0 : 9 : 1 : 0.08
+T: 3 0 : 9 : 12 : 0.06
+T: 3 0 : 9 : 13 : 0.48
+T: 3 0 : 9 : 0 : 0.01
+T: 3 0 : 9 : 3 : 0.01
+T: 3 0 : 8 : 8 : 0.24
+T: 3 0 : 8 : 10 : 0.03
+T: 3 0 : 8 : 9 : 0.03
+T: 3 0 : 8 : 14 : 0.06
+T: 3 0 : 8 : 0 : 0.08
+T: 3 0 : 8 : 13 : 0.06
+T: 3 0 : 8 : 12 : 0.48
+T: 3 0 : 8 : 1 : 0.01
+T: 3 0 : 8 : 2 : 0.01
+T: 3 0 : 7 : 7 : 0.24
+T: 3 0 : 7 : 6 : 0.08
+T: 3 0 : 7 : 5 : 0.48
+T: 3 0 : 7 : 14 : 0.01
+T: 3 0 : 7 : 13 : 0.06
+T: 3 0 : 7 : 15 : 0.03
+T: 3 0 : 7 : 1 : 0.06
+T: 3 0 : 7 : 2 : 0.01
+T: 3 0 : 7 : 3 : 0.03
+T: 3 0 : 6 : 6 : 0.24
+T: 3 0 : 6 : 7 : 0.08
+T: 3 0 : 6 : 4 : 0.48
+T: 3 0 : 6 : 15 : 0.01
+T: 3 0 : 6 : 12 : 0.06
+T: 3 0 : 6 : 14 : 0.03
+T: 3 0 : 6 : 0 : 0.06
+T: 3 0 : 6 : 3 : 0.01
+T: 3 0 : 6 : 2 : 0.03
+T: 3 0 : 1 : 1 : 0.24
+T: 3 0 : 1 : 3 : 0.03
+T: 3 0 : 1 : 0 : 0.03
+T: 3 0 : 1 : 7 : 0.06
+T: 3 0 : 1 : 4 : 0.06
+T: 3 0 : 1 : 11 : 0.01
+T: 3 0 : 1 : 5 : 0.48
+T: 3 0 : 1 : 8 : 0.01
+T: 3 0 : 1 : 9 : 0.08
+T: 3 0 : 0 : 0 : 0.24
+T: 3 0 : 0 : 2 : 0.03
+T: 3 0 : 0 : 1 : 0.03
+T: 3 0 : 0 : 6 : 0.06
+T: 3 0 : 0 : 5 : 0.06
+T: 3 0 : 0 : 4 : 0.48
+T: 3 0 : 0 : 9 : 0.01
+T: 3 0 : 0 : 10 : 0.01
+T: 3 0 : 0 : 8 : 0.08
+T: 3 0 : 2 : 2 : 0.09
+T: 3 0 : 2 : 3 : 0.03
+T: 3 0 : 2 : 0 : 0.18
+T: 3 0 : 2 : 7 : 0.06
+T: 3 0 : 2 : 4 : 0.36
+T: 3 0 : 2 : 11 : 0.01
+T: 3 0 : 2 : 6 : 0.18
+T: 3 0 : 2 : 8 : 0.06
+T: 3 0 : 2 : 10 : 0.03
+T: 3 0 : 3 : 3 : 0.09
+T: 3 0 : 3 : 2 : 0.03
+T: 3 0 : 3 : 1 : 0.18
+T: 3 0 : 3 : 6 : 0.06
+T: 3 0 : 3 : 5 : 0.36
+T: 3 0 : 3 : 7 : 0.18
+T: 3 0 : 3 : 9 : 0.06
+T: 3 0 : 3 : 10 : 0.01
+T: 3 0 : 3 : 11 : 0.03
+T: 3 0 : 4 : 4 : 0.64
+T: 3 0 : 4 : 6 : 0.08
+T: 3 0 : 4 : 5 : 0.08
+T: 3 0 : 4 : 14 : 0.01
+T: 3 0 : 4 : 0 : 0.08
+T: 3 0 : 4 : 13 : 0.01
+T: 3 0 : 4 : 12 : 0.08
+T: 3 0 : 4 : 1 : 0.01
+T: 3 0 : 4 : 2 : 0.01
+T: 3 0 : 5 : 5 : 0.64
+T: 3 0 : 5 : 7 : 0.08
+T: 3 0 : 5 : 4 : 0.08
+T: 3 0 : 5 : 15 : 0.01
+T: 3 0 : 5 : 1 : 0.08
+T: 3 0 : 5 : 12 : 0.01
+T: 3 0 : 5 : 13 : 0.08
+T: 3 0 : 5 : 0 : 0.01
+T: 3 0 : 5 : 3 : 0.01
+O: 4 4 : 15 : 1 1  : 1
+O: 4 4 : 14 : 1 0  : 1
+O: 4 4 : 13 : 1 1  : 1
+O: 4 4 : 12 : 1 0  : 1
+O: 4 4 : 11 : 0 1  : 1
+O: 4 4 : 10 : 0 0  : 1
+O: 4 4 : 9 : 0 1  : 1
+O: 4 4 : 8 : 0 0  : 1
+O: 4 4 : 7 : 1 1  : 1
+O: 4 4 : 6 : 1 0  : 1
+O: 4 4 : 1 : 0 1  : 1
+O: 4 4 : 0 : 0 0  : 1
+O: 4 4 : 2 : 0 0  : 1
+O: 4 4 : 3 : 0 1  : 1
+O: 4 4 : 4 : 1 0  : 1
+O: 4 4 : 5 : 1 1  : 1
+O: 4 3 : 15 : 1 1  : 1
+O: 4 3 : 14 : 1 0  : 1
+O: 4 3 : 13 : 1 1  : 1
+O: 4 3 : 12 : 1 0  : 1
+O: 4 3 : 11 : 0 1  : 1
+O: 4 3 : 10 : 0 0  : 1
+O: 4 3 : 9 : 0 1  : 1
+O: 4 3 : 8 : 0 0  : 1
+O: 4 3 : 7 : 1 1  : 1
+O: 4 3 : 6 : 1 0  : 1
+O: 4 3 : 1 : 0 1  : 1
+O: 4 3 : 0 : 0 0  : 1
+O: 4 3 : 2 : 0 0  : 1
+O: 4 3 : 3 : 0 1  : 1
+O: 4 3 : 4 : 1 0  : 1
+O: 4 3 : 5 : 1 1  : 1
+O: 4 2 : 15 : 1 1  : 1
+O: 4 2 : 14 : 1 0  : 1
+O: 4 2 : 13 : 1 1  : 1
+O: 4 2 : 12 : 1 0  : 1
+O: 4 2 : 11 : 0 1  : 1
+O: 4 2 : 10 : 0 0  : 1
+O: 4 2 : 9 : 0 1  : 1
+O: 4 2 : 8 : 0 0  : 1
+O: 4 2 : 7 : 1 1  : 1
+O: 4 2 : 6 : 1 0  : 1
+O: 4 2 : 1 : 0 1  : 1
+O: 4 2 : 0 : 0 0  : 1
+O: 4 2 : 2 : 0 0  : 1
+O: 4 2 : 3 : 0 1  : 1
+O: 4 2 : 4 : 1 0  : 1
+O: 4 2 : 5 : 1 1  : 1
+O: 4 1 : 15 : 1 1  : 1
+O: 4 1 : 14 : 1 0  : 1
+O: 4 1 : 13 : 1 1  : 1
+O: 4 1 : 12 : 1 0  : 1
+O: 4 1 : 11 : 0 1  : 1
+O: 4 1 : 10 : 0 0  : 1
+O: 4 1 : 9 : 0 1  : 1
+O: 4 1 : 8 : 0 0  : 1
+O: 4 1 : 7 : 1 1  : 1
+O: 4 1 : 6 : 1 0  : 1
+O: 4 1 : 1 : 0 1  : 1
+O: 4 1 : 0 : 0 0  : 1
+O: 4 1 : 2 : 0 0  : 1
+O: 4 1 : 3 : 0 1  : 1
+O: 4 1 : 4 : 1 0  : 1
+O: 4 1 : 5 : 1 1  : 1
+O: 4 0 : 15 : 1 1  : 1
+O: 4 0 : 14 : 1 0  : 1
+O: 4 0 : 13 : 1 1  : 1
+O: 4 0 : 12 : 1 0  : 1
+O: 4 0 : 11 : 0 1  : 1
+O: 4 0 : 10 : 0 0  : 1
+O: 4 0 : 9 : 0 1  : 1
+O: 4 0 : 8 : 0 0  : 1
+O: 4 0 : 7 : 1 1  : 1
+O: 4 0 : 6 : 1 0  : 1
+O: 4 0 : 1 : 0 1  : 1
+O: 4 0 : 0 : 0 0  : 1
+O: 4 0 : 2 : 0 0  : 1
+O: 4 0 : 3 : 0 1  : 1
+O: 4 0 : 4 : 1 0  : 1
+O: 4 0 : 5 : 1 1  : 1
+O: 3 4 : 15 : 1 1  : 1
+O: 3 4 : 14 : 1 0  : 1
+O: 3 4 : 13 : 1 1  : 1
+O: 3 4 : 12 : 1 0  : 1
+O: 3 4 : 11 : 0 1  : 1
+O: 3 4 : 10 : 0 0  : 1
+O: 3 4 : 9 : 0 1  : 1
+O: 3 4 : 8 : 0 0  : 1
+O: 3 4 : 7 : 1 1  : 1
+O: 3 4 : 6 : 1 0  : 1
+O: 3 4 : 1 : 0 1  : 1
+O: 3 4 : 0 : 0 0  : 1
+O: 3 4 : 2 : 0 0  : 1
+O: 3 4 : 3 : 0 1  : 1
+O: 3 4 : 4 : 1 0  : 1
+O: 3 4 : 5 : 1 1  : 1
+O: 3 3 : 15 : 1 1  : 1
+O: 3 3 : 14 : 1 0  : 1
+O: 3 3 : 13 : 1 1  : 1
+O: 3 3 : 12 : 1 0  : 1
+O: 3 3 : 11 : 0 1  : 1
+O: 3 3 : 10 : 0 0  : 1
+O: 3 3 : 9 : 0 1  : 1
+O: 3 3 : 8 : 0 0  : 1
+O: 3 3 : 7 : 1 1  : 1
+O: 3 3 : 6 : 1 0  : 1
+O: 3 3 : 1 : 0 1  : 1
+O: 3 3 : 0 : 0 0  : 1
+O: 3 3 : 2 : 0 0  : 1
+O: 3 3 : 3 : 0 1  : 1
+O: 3 3 : 4 : 1 0  : 1
+O: 3 3 : 5 : 1 1  : 1
+O: 3 2 : 15 : 1 1  : 1
+O: 3 2 : 14 : 1 0  : 1
+O: 3 2 : 13 : 1 1  : 1
+O: 3 2 : 12 : 1 0  : 1
+O: 3 2 : 11 : 0 1  : 1
+O: 3 2 : 10 : 0 0  : 1
+O: 3 2 : 9 : 0 1  : 1
+O: 3 2 : 8 : 0 0  : 1
+O: 3 2 : 7 : 1 1  : 1
+O: 3 2 : 6 : 1 0  : 1
+O: 3 2 : 1 : 0 1  : 1
+O: 3 2 : 0 : 0 0  : 1
+O: 3 2 : 2 : 0 0  : 1
+O: 3 2 : 3 : 0 1  : 1
+O: 3 2 : 4 : 1 0  : 1
+O: 3 2 : 5 : 1 1  : 1
+O: 3 1 : 15 : 1 1  : 1
+O: 3 1 : 14 : 1 0  : 1
+O: 3 1 : 13 : 1 1  : 1
+O: 3 1 : 12 : 1 0  : 1
+O: 3 1 : 11 : 0 1  : 1
+O: 3 1 : 10 : 0 0  : 1
+O: 3 1 : 9 : 0 1  : 1
+O: 3 1 : 8 : 0 0  : 1
+O: 3 1 : 7 : 1 1  : 1
+O: 3 1 : 6 : 1 0  : 1
+O: 3 1 : 1 : 0 1  : 1
+O: 3 1 : 0 : 0 0  : 1
+O: 3 1 : 2 : 0 0  : 1
+O: 3 1 : 3 : 0 1  : 1
+O: 3 1 : 4 : 1 0  : 1
+O: 3 1 : 5 : 1 1  : 1
+O: 1 0 : 15 : 1 1  : 1
+O: 1 0 : 14 : 1 0  : 1
+O: 1 0 : 13 : 1 1  : 1
+O: 1 0 : 12 : 1 0  : 1
+O: 1 0 : 11 : 0 1  : 1
+O: 1 0 : 10 : 0 0  : 1
+O: 1 0 : 9 : 0 1  : 1
+O: 1 0 : 8 : 0 0  : 1
+O: 1 0 : 7 : 1 1  : 1
+O: 1 0 : 6 : 1 0  : 1
+O: 1 0 : 1 : 0 1  : 1
+O: 1 0 : 0 : 0 0  : 1
+O: 1 0 : 2 : 0 0  : 1
+O: 1 0 : 3 : 0 1  : 1
+O: 1 0 : 4 : 1 0  : 1
+O: 1 0 : 5 : 1 1  : 1
+O: 0 4 : 15 : 1 1  : 1
+O: 0 4 : 14 : 1 0  : 1
+O: 0 4 : 13 : 1 1  : 1
+O: 0 4 : 12 : 1 0  : 1
+O: 0 4 : 11 : 0 1  : 1
+O: 0 4 : 10 : 0 0  : 1
+O: 0 4 : 9 : 0 1  : 1
+O: 0 4 : 8 : 0 0  : 1
+O: 0 4 : 7 : 1 1  : 1
+O: 0 4 : 6 : 1 0  : 1
+O: 0 4 : 1 : 0 1  : 1
+O: 0 4 : 0 : 0 0  : 1
+O: 0 4 : 2 : 0 0  : 1
+O: 0 4 : 3 : 0 1  : 1
+O: 0 4 : 4 : 1 0  : 1
+O: 0 4 : 5 : 1 1  : 1
+O: 0 3 : 15 : 1 1  : 1
+O: 0 3 : 14 : 1 0  : 1
+O: 0 3 : 13 : 1 1  : 1
+O: 0 3 : 12 : 1 0  : 1
+O: 0 3 : 11 : 0 1  : 1
+O: 0 3 : 10 : 0 0  : 1
+O: 0 3 : 9 : 0 1  : 1
+O: 0 3 : 8 : 0 0  : 1
+O: 0 3 : 7 : 1 1  : 1
+O: 0 3 : 6 : 1 0  : 1
+O: 0 3 : 1 : 0 1  : 1
+O: 0 3 : 0 : 0 0  : 1
+O: 0 3 : 2 : 0 0  : 1
+O: 0 3 : 3 : 0 1  : 1
+O: 0 3 : 4 : 1 0  : 1
+O: 0 3 : 5 : 1 1  : 1
+O: 0 2 : 15 : 1 1  : 1
+O: 0 2 : 14 : 1 0  : 1
+O: 0 2 : 13 : 1 1  : 1
+O: 0 2 : 12 : 1 0  : 1
+O: 0 2 : 11 : 0 1  : 1
+O: 0 2 : 10 : 0 0  : 1
+O: 0 2 : 9 : 0 1  : 1
+O: 0 2 : 8 : 0 0  : 1
+O: 0 2 : 7 : 1 1  : 1
+O: 0 2 : 6 : 1 0  : 1
+O: 0 2 : 1 : 0 1  : 1
+O: 0 2 : 0 : 0 0  : 1
+O: 0 2 : 2 : 0 0  : 1
+O: 0 2 : 3 : 0 1  : 1
+O: 0 2 : 4 : 1 0  : 1
+O: 0 2 : 5 : 1 1  : 1
+O: 0 0 : 15 : 1 1  : 1
+O: 0 0 : 14 : 1 0  : 1
+O: 0 0 : 13 : 1 1  : 1
+O: 0 0 : 12 : 1 0  : 1
+O: 0 0 : 11 : 0 1  : 1
+O: 0 0 : 10 : 0 0  : 1
+O: 0 0 : 9 : 0 1  : 1
+O: 0 0 : 8 : 0 0  : 1
+O: 0 0 : 7 : 1 1  : 1
+O: 0 0 : 6 : 1 0  : 1
+O: 0 0 : 1 : 0 1  : 1
+O: 0 0 : 0 : 0 0  : 1
+O: 0 0 : 2 : 0 0  : 1
+O: 0 0 : 3 : 0 1  : 1
+O: 0 0 : 4 : 1 0  : 1
+O: 0 0 : 5 : 1 1  : 1
+O: 0 1 : 15 : 1 1  : 1
+O: 0 1 : 14 : 1 0  : 1
+O: 0 1 : 13 : 1 1  : 1
+O: 0 1 : 12 : 1 0  : 1
+O: 0 1 : 11 : 0 1  : 1
+O: 0 1 : 10 : 0 0  : 1
+O: 0 1 : 9 : 0 1  : 1
+O: 0 1 : 8 : 0 0  : 1
+O: 0 1 : 7 : 1 1  : 1
+O: 0 1 : 6 : 1 0  : 1
+O: 0 1 : 1 : 0 1  : 1
+O: 0 1 : 0 : 0 0  : 1
+O: 0 1 : 2 : 0 0  : 1
+O: 0 1 : 3 : 0 1  : 1
+O: 0 1 : 4 : 1 0  : 1
+O: 0 1 : 5 : 1 1  : 1
+O: 1 1 : 15 : 1 1  : 1
+O: 1 1 : 14 : 1 0  : 1
+O: 1 1 : 13 : 1 1  : 1
+O: 1 1 : 12 : 1 0  : 1
+O: 1 1 : 11 : 0 1  : 1
+O: 1 1 : 10 : 0 0  : 1
+O: 1 1 : 9 : 0 1  : 1
+O: 1 1 : 8 : 0 0  : 1
+O: 1 1 : 7 : 1 1  : 1
+O: 1 1 : 6 : 1 0  : 1
+O: 1 1 : 1 : 0 1  : 1
+O: 1 1 : 0 : 0 0  : 1
+O: 1 1 : 2 : 0 0  : 1
+O: 1 1 : 3 : 0 1  : 1
+O: 1 1 : 4 : 1 0  : 1
+O: 1 1 : 5 : 1 1  : 1
+O: 1 2 : 15 : 1 1  : 1
+O: 1 2 : 14 : 1 0  : 1
+O: 1 2 : 13 : 1 1  : 1
+O: 1 2 : 12 : 1 0  : 1
+O: 1 2 : 11 : 0 1  : 1
+O: 1 2 : 10 : 0 0  : 1
+O: 1 2 : 9 : 0 1  : 1
+O: 1 2 : 8 : 0 0  : 1
+O: 1 2 : 7 : 1 1  : 1
+O: 1 2 : 6 : 1 0  : 1
+O: 1 2 : 1 : 0 1  : 1
+O: 1 2 : 0 : 0 0  : 1
+O: 1 2 : 2 : 0 0  : 1
+O: 1 2 : 3 : 0 1  : 1
+O: 1 2 : 4 : 1 0  : 1
+O: 1 2 : 5 : 1 1  : 1
+O: 1 3 : 15 : 1 1  : 1
+O: 1 3 : 14 : 1 0  : 1
+O: 1 3 : 13 : 1 1  : 1
+O: 1 3 : 12 : 1 0  : 1
+O: 1 3 : 11 : 0 1  : 1
+O: 1 3 : 10 : 0 0  : 1
+O: 1 3 : 9 : 0 1  : 1
+O: 1 3 : 8 : 0 0  : 1
+O: 1 3 : 7 : 1 1  : 1
+O: 1 3 : 6 : 1 0  : 1
+O: 1 3 : 1 : 0 1  : 1
+O: 1 3 : 0 : 0 0  : 1
+O: 1 3 : 2 : 0 0  : 1
+O: 1 3 : 3 : 0 1  : 1
+O: 1 3 : 4 : 1 0  : 1
+O: 1 3 : 5 : 1 1  : 1
+O: 1 4 : 15 : 1 1  : 1
+O: 1 4 : 14 : 1 0  : 1
+O: 1 4 : 13 : 1 1  : 1
+O: 1 4 : 12 : 1 0  : 1
+O: 1 4 : 11 : 0 1  : 1
+O: 1 4 : 10 : 0 0  : 1
+O: 1 4 : 9 : 0 1  : 1
+O: 1 4 : 8 : 0 0  : 1
+O: 1 4 : 7 : 1 1  : 1
+O: 1 4 : 6 : 1 0  : 1
+O: 1 4 : 1 : 0 1  : 1
+O: 1 4 : 0 : 0 0  : 1
+O: 1 4 : 2 : 0 0  : 1
+O: 1 4 : 3 : 0 1  : 1
+O: 1 4 : 4 : 1 0  : 1
+O: 1 4 : 5 : 1 1  : 1
+O: 2 0 : 15 : 1 1  : 1
+O: 2 0 : 14 : 1 0  : 1
+O: 2 0 : 13 : 1 1  : 1
+O: 2 0 : 12 : 1 0  : 1
+O: 2 0 : 11 : 0 1  : 1
+O: 2 0 : 10 : 0 0  : 1
+O: 2 0 : 9 : 0 1  : 1
+O: 2 0 : 8 : 0 0  : 1
+O: 2 0 : 7 : 1 1  : 1
+O: 2 0 : 6 : 1 0  : 1
+O: 2 0 : 1 : 0 1  : 1
+O: 2 0 : 0 : 0 0  : 1
+O: 2 0 : 2 : 0 0  : 1
+O: 2 0 : 3 : 0 1  : 1
+O: 2 0 : 4 : 1 0  : 1
+O: 2 0 : 5 : 1 1  : 1
+O: 2 1 : 15 : 1 1  : 1
+O: 2 1 : 14 : 1 0  : 1
+O: 2 1 : 13 : 1 1  : 1
+O: 2 1 : 12 : 1 0  : 1
+O: 2 1 : 11 : 0 1  : 1
+O: 2 1 : 10 : 0 0  : 1
+O: 2 1 : 9 : 0 1  : 1
+O: 2 1 : 8 : 0 0  : 1
+O: 2 1 : 7 : 1 1  : 1
+O: 2 1 : 6 : 1 0  : 1
+O: 2 1 : 1 : 0 1  : 1
+O: 2 1 : 0 : 0 0  : 1
+O: 2 1 : 2 : 0 0  : 1
+O: 2 1 : 3 : 0 1  : 1
+O: 2 1 : 4 : 1 0  : 1
+O: 2 1 : 5 : 1 1  : 1
+O: 2 2 : 15 : 1 1  : 1
+O: 2 2 : 14 : 1 0  : 1
+O: 2 2 : 13 : 1 1  : 1
+O: 2 2 : 12 : 1 0  : 1
+O: 2 2 : 11 : 0 1  : 1
+O: 2 2 : 10 : 0 0  : 1
+O: 2 2 : 9 : 0 1  : 1
+O: 2 2 : 8 : 0 0  : 1
+O: 2 2 : 7 : 1 1  : 1
+O: 2 2 : 6 : 1 0  : 1
+O: 2 2 : 1 : 0 1  : 1
+O: 2 2 : 0 : 0 0  : 1
+O: 2 2 : 2 : 0 0  : 1
+O: 2 2 : 3 : 0 1  : 1
+O: 2 2 : 4 : 1 0  : 1
+O: 2 2 : 5 : 1 1  : 1
+O: 2 3 : 15 : 1 1  : 1
+O: 2 3 : 14 : 1 0  : 1
+O: 2 3 : 13 : 1 1  : 1
+O: 2 3 : 12 : 1 0  : 1
+O: 2 3 : 11 : 0 1  : 1
+O: 2 3 : 10 : 0 0  : 1
+O: 2 3 : 9 : 0 1  : 1
+O: 2 3 : 8 : 0 0  : 1
+O: 2 3 : 7 : 1 1  : 1
+O: 2 3 : 6 : 1 0  : 1
+O: 2 3 : 1 : 0 1  : 1
+O: 2 3 : 0 : 0 0  : 1
+O: 2 3 : 2 : 0 0  : 1
+O: 2 3 : 3 : 0 1  : 1
+O: 2 3 : 4 : 1 0  : 1
+O: 2 3 : 5 : 1 1  : 1
+O: 2 4 : 15 : 1 1  : 1
+O: 2 4 : 14 : 1 0  : 1
+O: 2 4 : 13 : 1 1  : 1
+O: 2 4 : 12 : 1 0  : 1
+O: 2 4 : 11 : 0 1  : 1
+O: 2 4 : 10 : 0 0  : 1
+O: 2 4 : 9 : 0 1  : 1
+O: 2 4 : 8 : 0 0  : 1
+O: 2 4 : 7 : 1 1  : 1
+O: 2 4 : 6 : 1 0  : 1
+O: 2 4 : 1 : 0 1  : 1
+O: 2 4 : 0 : 0 0  : 1
+O: 2 4 : 2 : 0 0  : 1
+O: 2 4 : 3 : 0 1  : 1
+O: 2 4 : 4 : 1 0  : 1
+O: 2 4 : 5 : 1 1  : 1
+O: 3 0 : 15 : 1 1  : 1
+O: 3 0 : 14 : 1 0  : 1
+O: 3 0 : 13 : 1 1  : 1
+O: 3 0 : 12 : 1 0  : 1
+O: 3 0 : 11 : 0 1  : 1
+O: 3 0 : 10 : 0 0  : 1
+O: 3 0 : 9 : 0 1  : 1
+O: 3 0 : 8 : 0 0  : 1
+O: 3 0 : 7 : 1 1  : 1
+O: 3 0 : 6 : 1 0  : 1
+O: 3 0 : 1 : 0 1  : 1
+O: 3 0 : 0 : 0 0  : 1
+O: 3 0 : 2 : 0 0  : 1
+O: 3 0 : 3 : 0 1  : 1
+O: 3 0 : 4 : 1 0  : 1
+O: 3 0 : 5 : 1 1  : 1
+R: 0 0 : 0 : * : * : 1
+R: 0 1 : 0 : * : * : 1
+R: 0 2 : 0 : * : * : 1
+R: 0 3 : 0 : * : * : 1
+R: 0 4 : 0 : * : * : 1
+R: 1 0 : 0 : * : * : 1
+R: 1 1 : 0 : * : * : 1
+R: 1 2 : 0 : * : * : 1
+R: 1 3 : 0 : * : * : 1
+R: 1 4 : 0 : * : * : 1
+R: 2 0 : 0 : * : * : 1
+R: 2 1 : 0 : * : * : 1
+R: 2 2 : 0 : * : * : 1
+R: 2 3 : 0 : * : * : 1
+R: 2 4 : 0 : * : * : 1
+R: 3 0 : 0 : * : * : 1
+R: 3 1 : 0 : * : * : 1
+R: 3 2 : 0 : * : * : 1
+R: 3 3 : 0 : * : * : 1
+R: 3 4 : 0 : * : * : 1
+R: 4 0 : 0 : * : * : 1
+R: 4 1 : 0 : * : * : 1
+R: 4 2 : 0 : * : * : 1
+R: 4 3 : 0 : * : * : 1
+R: 4 4 : 0 : * : * : 1
+R: 0 0 : 1 : * : * : 0
+R: 0 1 : 1 : * : * : 0
+R: 0 2 : 1 : * : * : 0
+R: 0 3 : 1 : * : * : 0
+R: 0 4 : 1 : * : * : 0
+R: 1 0 : 1 : * : * : 0
+R: 1 1 : 1 : * : * : 0
+R: 1 2 : 1 : * : * : 0
+R: 1 3 : 1 : * : * : 0
+R: 1 4 : 1 : * : * : 0
+R: 2 0 : 1 : * : * : 0
+R: 2 1 : 1 : * : * : 0
+R: 2 2 : 1 : * : * : 0
+R: 2 3 : 1 : * : * : 0
+R: 2 4 : 1 : * : * : 0
+R: 3 0 : 1 : * : * : 0
+R: 3 1 : 1 : * : * : 0
+R: 3 2 : 1 : * : * : 0
+R: 3 3 : 1 : * : * : 0
+R: 3 4 : 1 : * : * : 0
+R: 4 0 : 1 : * : * : 0
+R: 4 1 : 1 : * : * : 0
+R: 4 2 : 1 : * : * : 0
+R: 4 3 : 1 : * : * : 0
+R: 4 4 : 1 : * : * : 0
+R: 0 0 : 2 : * : * : 0
+R: 0 1 : 2 : * : * : 0
+R: 0 2 : 2 : * : * : 0
+R: 0 3 : 2 : * : * : 0
+R: 0 4 : 2 : * : * : 0
+R: 1 0 : 2 : * : * : 0
+R: 1 1 : 2 : * : * : 0
+R: 1 2 : 2 : * : * : 0
+R: 1 3 : 2 : * : * : 0
+R: 1 4 : 2 : * : * : 0
+R: 2 0 : 2 : * : * : 0
+R: 2 1 : 2 : * : * : 0
+R: 2 2 : 2 : * : * : 0
+R: 2 3 : 2 : * : * : 0
+R: 2 4 : 2 : * : * : 0
+R: 3 0 : 2 : * : * : 0
+R: 3 1 : 2 : * : * : 0
+R: 3 2 : 2 : * : * : 0
+R: 3 3 : 2 : * : * : 0
+R: 3 4 : 2 : * : * : 0
+R: 4 0 : 2 : * : * : 0
+R: 4 1 : 2 : * : * : 0
+R: 4 2 : 2 : * : * : 0
+R: 4 3 : 2 : * : * : 0
+R: 4 4 : 2 : * : * : 0
+R: 0 0 : 3 : * : * : 0
+R: 0 1 : 3 : * : * : 0
+R: 0 2 : 3 : * : * : 0
+R: 0 3 : 3 : * : * : 0
+R: 0 4 : 3 : * : * : 0
+R: 1 0 : 3 : * : * : 0
+R: 1 1 : 3 : * : * : 0
+R: 1 2 : 3 : * : * : 0
+R: 1 3 : 3 : * : * : 0
+R: 1 4 : 3 : * : * : 0
+R: 2 0 : 3 : * : * : 0
+R: 2 1 : 3 : * : * : 0
+R: 2 2 : 3 : * : * : 0
+R: 2 3 : 3 : * : * : 0
+R: 2 4 : 3 : * : * : 0
+R: 3 0 : 3 : * : * : 0
+R: 3 1 : 3 : * : * : 0
+R: 3 2 : 3 : * : * : 0
+R: 3 3 : 3 : * : * : 0
+R: 3 4 : 3 : * : * : 0
+R: 4 0 : 3 : * : * : 0
+R: 4 1 : 3 : * : * : 0
+R: 4 2 : 3 : * : * : 0
+R: 4 3 : 3 : * : * : 0
+R: 4 4 : 3 : * : * : 0
+R: 0 0 : 4 : * : * : 0
+R: 0 1 : 4 : * : * : 0
+R: 0 2 : 4 : * : * : 0
+R: 0 3 : 4 : * : * : 0
+R: 0 4 : 4 : * : * : 0
+R: 1 0 : 4 : * : * : 0
+R: 1 1 : 4 : * : * : 0
+R: 1 2 : 4 : * : * : 0
+R: 1 3 : 4 : * : * : 0
+R: 1 4 : 4 : * : * : 0
+R: 2 0 : 4 : * : * : 0
+R: 2 1 : 4 : * : * : 0
+R: 2 2 : 4 : * : * : 0
+R: 2 3 : 4 : * : * : 0
+R: 2 4 : 4 : * : * : 0
+R: 3 0 : 4 : * : * : 0
+R: 3 1 : 4 : * : * : 0
+R: 3 2 : 4 : * : * : 0
+R: 3 3 : 4 : * : * : 0
+R: 3 4 : 4 : * : * : 0
+R: 4 0 : 4 : * : * : 0
+R: 4 1 : 4 : * : * : 0
+R: 4 2 : 4 : * : * : 0
+R: 4 3 : 4 : * : * : 0
+R: 4 4 : 4 : * : * : 0
+R: 0 0 : 5 : * : * : 1
+R: 0 1 : 5 : * : * : 1
+R: 0 2 : 5 : * : * : 1
+R: 0 3 : 5 : * : * : 1
+R: 0 4 : 5 : * : * : 1
+R: 1 0 : 5 : * : * : 1
+R: 1 1 : 5 : * : * : 1
+R: 1 2 : 5 : * : * : 1
+R: 1 3 : 5 : * : * : 1
+R: 1 4 : 5 : * : * : 1
+R: 2 0 : 5 : * : * : 1
+R: 2 1 : 5 : * : * : 1
+R: 2 2 : 5 : * : * : 1
+R: 2 3 : 5 : * : * : 1
+R: 2 4 : 5 : * : * : 1
+R: 3 0 : 5 : * : * : 1
+R: 3 1 : 5 : * : * : 1
+R: 3 2 : 5 : * : * : 1
+R: 3 3 : 5 : * : * : 1
+R: 3 4 : 5 : * : * : 1
+R: 4 0 : 5 : * : * : 1
+R: 4 1 : 5 : * : * : 1
+R: 4 2 : 5 : * : * : 1
+R: 4 3 : 5 : * : * : 1
+R: 4 4 : 5 : * : * : 1
+R: 0 0 : 6 : * : * : 0
+R: 0 1 : 6 : * : * : 0
+R: 0 2 : 6 : * : * : 0
+R: 0 3 : 6 : * : * : 0
+R: 0 4 : 6 : * : * : 0
+R: 1 0 : 6 : * : * : 0
+R: 1 1 : 6 : * : * : 0
+R: 1 2 : 6 : * : * : 0
+R: 1 3 : 6 : * : * : 0
+R: 1 4 : 6 : * : * : 0
+R: 2 0 : 6 : * : * : 0
+R: 2 1 : 6 : * : * : 0
+R: 2 2 : 6 : * : * : 0
+R: 2 3 : 6 : * : * : 0
+R: 2 4 : 6 : * : * : 0
+R: 3 0 : 6 : * : * : 0
+R: 3 1 : 6 : * : * : 0
+R: 3 2 : 6 : * : * : 0
+R: 3 3 : 6 : * : * : 0
+R: 3 4 : 6 : * : * : 0
+R: 4 0 : 6 : * : * : 0
+R: 4 1 : 6 : * : * : 0
+R: 4 2 : 6 : * : * : 0
+R: 4 3 : 6 : * : * : 0
+R: 4 4 : 6 : * : * : 0
+R: 0 0 : 7 : * : * : 0
+R: 0 1 : 7 : * : * : 0
+R: 0 2 : 7 : * : * : 0
+R: 0 3 : 7 : * : * : 0
+R: 0 4 : 7 : * : * : 0
+R: 1 0 : 7 : * : * : 0
+R: 1 1 : 7 : * : * : 0
+R: 1 2 : 7 : * : * : 0
+R: 1 3 : 7 : * : * : 0
+R: 1 4 : 7 : * : * : 0
+R: 2 0 : 7 : * : * : 0
+R: 2 1 : 7 : * : * : 0
+R: 2 2 : 7 : * : * : 0
+R: 2 3 : 7 : * : * : 0
+R: 2 4 : 7 : * : * : 0
+R: 3 0 : 7 : * : * : 0
+R: 3 1 : 7 : * : * : 0
+R: 3 2 : 7 : * : * : 0
+R: 3 3 : 7 : * : * : 0
+R: 3 4 : 7 : * : * : 0
+R: 4 0 : 7 : * : * : 0
+R: 4 1 : 7 : * : * : 0
+R: 4 2 : 7 : * : * : 0
+R: 4 3 : 7 : * : * : 0
+R: 4 4 : 7 : * : * : 0
+R: 0 0 : 8 : * : * : 0
+R: 0 1 : 8 : * : * : 0
+R: 0 2 : 8 : * : * : 0
+R: 0 3 : 8 : * : * : 0
+R: 0 4 : 8 : * : * : 0
+R: 1 0 : 8 : * : * : 0
+R: 1 1 : 8 : * : * : 0
+R: 1 2 : 8 : * : * : 0
+R: 1 3 : 8 : * : * : 0
+R: 1 4 : 8 : * : * : 0
+R: 2 0 : 8 : * : * : 0
+R: 2 1 : 8 : * : * : 0
+R: 2 2 : 8 : * : * : 0
+R: 2 3 : 8 : * : * : 0
+R: 2 4 : 8 : * : * : 0
+R: 3 0 : 8 : * : * : 0
+R: 3 1 : 8 : * : * : 0
+R: 3 2 : 8 : * : * : 0
+R: 3 3 : 8 : * : * : 0
+R: 3 4 : 8 : * : * : 0
+R: 4 0 : 8 : * : * : 0
+R: 4 1 : 8 : * : * : 0
+R: 4 2 : 8 : * : * : 0
+R: 4 3 : 8 : * : * : 0
+R: 4 4 : 8 : * : * : 0
+R: 0 0 : 9 : * : * : 0
+R: 0 1 : 9 : * : * : 0
+R: 0 2 : 9 : * : * : 0
+R: 0 3 : 9 : * : * : 0
+R: 0 4 : 9 : * : * : 0
+R: 1 0 : 9 : * : * : 0
+R: 1 1 : 9 : * : * : 0
+R: 1 2 : 9 : * : * : 0
+R: 1 3 : 9 : * : * : 0
+R: 1 4 : 9 : * : * : 0
+R: 2 0 : 9 : * : * : 0
+R: 2 1 : 9 : * : * : 0
+R: 2 2 : 9 : * : * : 0
+R: 2 3 : 9 : * : * : 0
+R: 2 4 : 9 : * : * : 0
+R: 3 0 : 9 : * : * : 0
+R: 3 1 : 9 : * : * : 0
+R: 3 2 : 9 : * : * : 0
+R: 3 3 : 9 : * : * : 0
+R: 3 4 : 9 : * : * : 0
+R: 4 0 : 9 : * : * : 0
+R: 4 1 : 9 : * : * : 0
+R: 4 2 : 9 : * : * : 0
+R: 4 3 : 9 : * : * : 0
+R: 4 4 : 9 : * : * : 0
+R: 0 0 : 10 : * : * : 1
+R: 0 1 : 10 : * : * : 1
+R: 0 2 : 10 : * : * : 1
+R: 0 3 : 10 : * : * : 1
+R: 0 4 : 10 : * : * : 1
+R: 1 0 : 10 : * : * : 1
+R: 1 1 : 10 : * : * : 1
+R: 1 2 : 10 : * : * : 1
+R: 1 3 : 10 : * : * : 1
+R: 1 4 : 10 : * : * : 1
+R: 2 0 : 10 : * : * : 1
+R: 2 1 : 10 : * : * : 1
+R: 2 2 : 10 : * : * : 1
+R: 2 3 : 10 : * : * : 1
+R: 2 4 : 10 : * : * : 1
+R: 3 0 : 10 : * : * : 1
+R: 3 1 : 10 : * : * : 1
+R: 3 2 : 10 : * : * : 1
+R: 3 3 : 10 : * : * : 1
+R: 3 4 : 10 : * : * : 1
+R: 4 0 : 10 : * : * : 1
+R: 4 1 : 10 : * : * : 1
+R: 4 2 : 10 : * : * : 1
+R: 4 3 : 10 : * : * : 1
+R: 4 4 : 10 : * : * : 1
+R: 0 0 : 11 : * : * : 0
+R: 0 1 : 11 : * : * : 0
+R: 0 2 : 11 : * : * : 0
+R: 0 3 : 11 : * : * : 0
+R: 0 4 : 11 : * : * : 0
+R: 1 0 : 11 : * : * : 0
+R: 1 1 : 11 : * : * : 0
+R: 1 2 : 11 : * : * : 0
+R: 1 3 : 11 : * : * : 0
+R: 1 4 : 11 : * : * : 0
+R: 2 0 : 11 : * : * : 0
+R: 2 1 : 11 : * : * : 0
+R: 2 2 : 11 : * : * : 0
+R: 2 3 : 11 : * : * : 0
+R: 2 4 : 11 : * : * : 0
+R: 3 0 : 11 : * : * : 0
+R: 3 1 : 11 : * : * : 0
+R: 3 2 : 11 : * : * : 0
+R: 3 3 : 11 : * : * : 0
+R: 3 4 : 11 : * : * : 0
+R: 4 0 : 11 : * : * : 0
+R: 4 1 : 11 : * : * : 0
+R: 4 2 : 11 : * : * : 0
+R: 4 3 : 11 : * : * : 0
+R: 4 4 : 11 : * : * : 0
+R: 0 0 : 12 : * : * : 0
+R: 0 1 : 12 : * : * : 0
+R: 0 2 : 12 : * : * : 0
+R: 0 3 : 12 : * : * : 0
+R: 0 4 : 12 : * : * : 0
+R: 1 0 : 12 : * : * : 0
+R: 1 1 : 12 : * : * : 0
+R: 1 2 : 12 : * : * : 0
+R: 1 3 : 12 : * : * : 0
+R: 1 4 : 12 : * : * : 0
+R: 2 0 : 12 : * : * : 0
+R: 2 1 : 12 : * : * : 0
+R: 2 2 : 12 : * : * : 0
+R: 2 3 : 12 : * : * : 0
+R: 2 4 : 12 : * : * : 0
+R: 3 0 : 12 : * : * : 0
+R: 3 1 : 12 : * : * : 0
+R: 3 2 : 12 : * : * : 0
+R: 3 3 : 12 : * : * : 0
+R: 3 4 : 12 : * : * : 0
+R: 4 0 : 12 : * : * : 0
+R: 4 1 : 12 : * : * : 0
+R: 4 2 : 12 : * : * : 0
+R: 4 3 : 12 : * : * : 0
+R: 4 4 : 12 : * : * : 0
+R: 0 0 : 13 : * : * : 0
+R: 0 1 : 13 : * : * : 0
+R: 0 2 : 13 : * : * : 0
+R: 0 3 : 13 : * : * : 0
+R: 0 4 : 13 : * : * : 0
+R: 1 0 : 13 : * : * : 0
+R: 1 1 : 13 : * : * : 0
+R: 1 2 : 13 : * : * : 0
+R: 1 3 : 13 : * : * : 0
+R: 1 4 : 13 : * : * : 0
+R: 2 0 : 13 : * : * : 0
+R: 2 1 : 13 : * : * : 0
+R: 2 2 : 13 : * : * : 0
+R: 2 3 : 13 : * : * : 0
+R: 2 4 : 13 : * : * : 0
+R: 3 0 : 13 : * : * : 0
+R: 3 1 : 13 : * : * : 0
+R: 3 2 : 13 : * : * : 0
+R: 3 3 : 13 : * : * : 0
+R: 3 4 : 13 : * : * : 0
+R: 4 0 : 13 : * : * : 0
+R: 4 1 : 13 : * : * : 0
+R: 4 2 : 13 : * : * : 0
+R: 4 3 : 13 : * : * : 0
+R: 4 4 : 13 : * : * : 0
+R: 0 0 : 14 : * : * : 0
+R: 0 1 : 14 : * : * : 0
+R: 0 2 : 14 : * : * : 0
+R: 0 3 : 14 : * : * : 0
+R: 0 4 : 14 : * : * : 0
+R: 1 0 : 14 : * : * : 0
+R: 1 1 : 14 : * : * : 0
+R: 1 2 : 14 : * : * : 0
+R: 1 3 : 14 : * : * : 0
+R: 1 4 : 14 : * : * : 0
+R: 2 0 : 14 : * : * : 0
+R: 2 1 : 14 : * : * : 0
+R: 2 2 : 14 : * : * : 0
+R: 2 3 : 14 : * : * : 0
+R: 2 4 : 14 : * : * : 0
+R: 3 0 : 14 : * : * : 0
+R: 3 1 : 14 : * : * : 0
+R: 3 2 : 14 : * : * : 0
+R: 3 3 : 14 : * : * : 0
+R: 3 4 : 14 : * : * : 0
+R: 4 0 : 14 : * : * : 0
+R: 4 1 : 14 : * : * : 0
+R: 4 2 : 14 : * : * : 0
+R: 4 3 : 14 : * : * : 0
+R: 4 4 : 14 : * : * : 0
+R: 0 0 : 15 : * : * : 1
+R: 0 1 : 15 : * : * : 1
+R: 0 2 : 15 : * : * : 1
+R: 0 3 : 15 : * : * : 1
+R: 0 4 : 15 : * : * : 1
+R: 1 0 : 15 : * : * : 1
+R: 1 1 : 15 : * : * : 1
+R: 1 2 : 15 : * : * : 1
+R: 1 3 : 15 : * : * : 1
+R: 1 4 : 15 : * : * : 1
+R: 2 0 : 15 : * : * : 1
+R: 2 1 : 15 : * : * : 1
+R: 2 2 : 15 : * : * : 1
+R: 2 3 : 15 : * : * : 1
+R: 2 4 : 15 : * : * : 1
+R: 3 0 : 15 : * : * : 1
+R: 3 1 : 15 : * : * : 1
+R: 3 2 : 15 : * : * : 1
+R: 3 3 : 15 : * : * : 1
+R: 3 4 : 15 : * : * : 1
+R: 4 0 : 15 : * : * : 1
+R: 4 1 : 15 : * : * : 1
+R: 4 2 : 15 : * : * : 1
+R: 4 3 : 15 : * : * : 1
+R: 4 4 : 15 : * : * : 1
diff --git a/code/src/problem_examples/dpomdp/Mars.dpomdp b/code/src/problem_examples/dpomdp/Mars.dpomdp
new file mode 100644
index 0000000000000000000000000000000000000000..b5edcfca15b0fcd1df3b5095716af8fca6271c04
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/Mars.dpomdp
@@ -0,0 +1,34400 @@
+# Mars rovers
+# From Amato & Zilberstein, AAMAS 2009
+# Extracted from code provided by Christoper Amato
+# $Id: Mars.dpomdp 3595 2009-08-20 11:57:34Z mtjspaan $
+agents: 2
+discount: 1
+values: "reward"
+states: 256
+start:
+1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+actions:
+6
+6
+observations:
+8
+8
+T: 0 0 : 0 : 0 : 1.0
+T: 0 1 : 0 : 0 : 0.1
+T: 0 1 : 0 : 16 : 0.9
+T: 0 2 : 0 : 0 : 1.0
+T: 0 3 : 0 : 0 : 0.1
+T: 0 3 : 0 : 32 : 0.9
+T: 0 4 : 0 : 1 : 1.0
+T: 0 5 : 0 : 1 : 1.0
+T: 1 0 : 0 : 0 : 0.1
+T: 1 0 : 0 : 64 : 0.9
+T: 1 1 : 0 : 0 : 0.01
+T: 1 1 : 0 : 16 : 0.09
+T: 1 1 : 0 : 64 : 0.09
+T: 1 1 : 0 : 80 : 0.81
+T: 1 2 : 0 : 0 : 0.1
+T: 1 2 : 0 : 64 : 0.9
+T: 1 3 : 0 : 0 : 0.01
+T: 1 3 : 0 : 32 : 0.09
+T: 1 3 : 0 : 64 : 0.09
+T: 1 3 : 0 : 96 : 0.81
+T: 1 4 : 0 : 1 : 0.1
+T: 1 4 : 0 : 65 : 0.9
+T: 1 5 : 0 : 1 : 0.1
+T: 1 5 : 0 : 65 : 0.9
+T: 2 0 : 0 : 0 : 1.0
+T: 2 1 : 0 : 0 : 0.1
+T: 2 1 : 0 : 16 : 0.9
+T: 2 2 : 0 : 0 : 1.0
+T: 2 3 : 0 : 0 : 0.1
+T: 2 3 : 0 : 32 : 0.9
+T: 2 4 : 0 : 1 : 1.0
+T: 2 5 : 0 : 1 : 1.0
+T: 3 0 : 0 : 0 : 0.1
+T: 3 0 : 0 : 128 : 0.9
+T: 3 1 : 0 : 0 : 0.01
+T: 3 1 : 0 : 16 : 0.09
+T: 3 1 : 0 : 128 : 0.09
+T: 3 1 : 0 : 144 : 0.81
+T: 3 2 : 0 : 0 : 0.1
+T: 3 2 : 0 : 128 : 0.9
+T: 3 3 : 0 : 0 : 0.01
+T: 3 3 : 0 : 32 : 0.09
+T: 3 3 : 0 : 128 : 0.09
+T: 3 3 : 0 : 160 : 0.81
+T: 3 4 : 0 : 1 : 0.1
+T: 3 4 : 0 : 129 : 0.9
+T: 3 5 : 0 : 1 : 0.1
+T: 3 5 : 0 : 129 : 0.9
+T: 4 0 : 0 : 1 : 1.0
+T: 4 1 : 0 : 1 : 0.1
+T: 4 1 : 0 : 17 : 0.9
+T: 4 2 : 0 : 1 : 1.0
+T: 4 3 : 0 : 1 : 0.1
+T: 4 3 : 0 : 33 : 0.9
+T: 4 4 : 0 : 1 : 1.0
+T: 4 5 : 0 : 1 : 1.0
+T: 5 0 : 0 : 1 : 1.0
+T: 5 1 : 0 : 1 : 0.1
+T: 5 1 : 0 : 17 : 0.9
+T: 5 2 : 0 : 1 : 1.0
+T: 5 3 : 0 : 1 : 0.1
+T: 5 3 : 0 : 33 : 0.9
+T: 5 4 : 0 : 1 : 1.0
+T: 5 5 : 0 : 1 : 1.0
+T: 0 0 : 1 : 1 : 1.0
+T: 0 1 : 1 : 1 : 0.1
+T: 0 1 : 1 : 17 : 0.9
+T: 0 2 : 1 : 1 : 1.0
+T: 0 3 : 1 : 1 : 0.1
+T: 0 3 : 1 : 33 : 0.9
+T: 0 4 : 1 : 1 : 1.0
+T: 0 5 : 1 : 1 : 1.0
+T: 1 0 : 1 : 1 : 0.1
+T: 1 0 : 1 : 65 : 0.9
+T: 1 1 : 1 : 1 : 0.01
+T: 1 1 : 1 : 17 : 0.09
+T: 1 1 : 1 : 65 : 0.09
+T: 1 1 : 1 : 81 : 0.81
+T: 1 2 : 1 : 1 : 0.1
+T: 1 2 : 1 : 65 : 0.9
+T: 1 3 : 1 : 1 : 0.01
+T: 1 3 : 1 : 33 : 0.09
+T: 1 3 : 1 : 65 : 0.09
+T: 1 3 : 1 : 97 : 0.81
+T: 1 4 : 1 : 1 : 0.1
+T: 1 4 : 1 : 65 : 0.9
+T: 1 5 : 1 : 1 : 0.1
+T: 1 5 : 1 : 65 : 0.9
+T: 2 0 : 1 : 1 : 1.0
+T: 2 1 : 1 : 1 : 0.1
+T: 2 1 : 1 : 17 : 0.9
+T: 2 2 : 1 : 1 : 1.0
+T: 2 3 : 1 : 1 : 0.1
+T: 2 3 : 1 : 33 : 0.9
+T: 2 4 : 1 : 1 : 1.0
+T: 2 5 : 1 : 1 : 1.0
+T: 3 0 : 1 : 1 : 0.1
+T: 3 0 : 1 : 129 : 0.9
+T: 3 1 : 1 : 1 : 0.01
+T: 3 1 : 1 : 17 : 0.09
+T: 3 1 : 1 : 129 : 0.09
+T: 3 1 : 1 : 145 : 0.81
+T: 3 2 : 1 : 1 : 0.1
+T: 3 2 : 1 : 129 : 0.9
+T: 3 3 : 1 : 1 : 0.01
+T: 3 3 : 1 : 33 : 0.09
+T: 3 3 : 1 : 129 : 0.09
+T: 3 3 : 1 : 161 : 0.81
+T: 3 4 : 1 : 1 : 0.1
+T: 3 4 : 1 : 129 : 0.9
+T: 3 5 : 1 : 1 : 0.1
+T: 3 5 : 1 : 129 : 0.9
+T: 4 0 : 1 : 1 : 1.0
+T: 4 1 : 1 : 1 : 0.1
+T: 4 1 : 1 : 17 : 0.9
+T: 4 2 : 1 : 1 : 1.0
+T: 4 3 : 1 : 1 : 0.1
+T: 4 3 : 1 : 33 : 0.9
+T: 4 4 : 1 : 1 : 1.0
+T: 4 5 : 1 : 1 : 1.0
+T: 5 0 : 1 : 1 : 1.0
+T: 5 1 : 1 : 1 : 0.1
+T: 5 1 : 1 : 17 : 0.9
+T: 5 2 : 1 : 1 : 1.0
+T: 5 3 : 1 : 1 : 0.1
+T: 5 3 : 1 : 33 : 0.9
+T: 5 4 : 1 : 1 : 1.0
+T: 5 5 : 1 : 1 : 1.0
+T: 0 0 : 2 : 2 : 1.0
+T: 0 1 : 2 : 2 : 0.1
+T: 0 1 : 2 : 18 : 0.9
+T: 0 2 : 2 : 2 : 1.0
+T: 0 3 : 2 : 2 : 0.1
+T: 0 3 : 2 : 34 : 0.9
+T: 0 4 : 2 : 3 : 1.0
+T: 0 5 : 2 : 3 : 1.0
+T: 1 0 : 2 : 2 : 0.1
+T: 1 0 : 2 : 66 : 0.9
+T: 1 1 : 2 : 2 : 0.01
+T: 1 1 : 2 : 18 : 0.09
+T: 1 1 : 2 : 66 : 0.09
+T: 1 1 : 2 : 82 : 0.81
+T: 1 2 : 2 : 2 : 0.1
+T: 1 2 : 2 : 66 : 0.9
+T: 1 3 : 2 : 2 : 0.01
+T: 1 3 : 2 : 34 : 0.09
+T: 1 3 : 2 : 66 : 0.09
+T: 1 3 : 2 : 98 : 0.81
+T: 1 4 : 2 : 3 : 0.1
+T: 1 4 : 2 : 67 : 0.9
+T: 1 5 : 2 : 3 : 0.1
+T: 1 5 : 2 : 67 : 0.9
+T: 2 0 : 2 : 2 : 1.0
+T: 2 1 : 2 : 2 : 0.1
+T: 2 1 : 2 : 18 : 0.9
+T: 2 2 : 2 : 2 : 1.0
+T: 2 3 : 2 : 2 : 0.1
+T: 2 3 : 2 : 34 : 0.9
+T: 2 4 : 2 : 3 : 1.0
+T: 2 5 : 2 : 3 : 1.0
+T: 3 0 : 2 : 2 : 0.1
+T: 3 0 : 2 : 130 : 0.9
+T: 3 1 : 2 : 2 : 0.01
+T: 3 1 : 2 : 18 : 0.09
+T: 3 1 : 2 : 130 : 0.09
+T: 3 1 : 2 : 146 : 0.81
+T: 3 2 : 2 : 2 : 0.1
+T: 3 2 : 2 : 130 : 0.9
+T: 3 3 : 2 : 2 : 0.01
+T: 3 3 : 2 : 34 : 0.09
+T: 3 3 : 2 : 130 : 0.09
+T: 3 3 : 2 : 162 : 0.81
+T: 3 4 : 2 : 3 : 0.1
+T: 3 4 : 2 : 131 : 0.9
+T: 3 5 : 2 : 3 : 0.1
+T: 3 5 : 2 : 131 : 0.9
+T: 4 0 : 2 : 3 : 1.0
+T: 4 1 : 2 : 3 : 0.1
+T: 4 1 : 2 : 19 : 0.9
+T: 4 2 : 2 : 3 : 1.0
+T: 4 3 : 2 : 3 : 0.1
+T: 4 3 : 2 : 35 : 0.9
+T: 4 4 : 2 : 3 : 1.0
+T: 4 5 : 2 : 3 : 1.0
+T: 5 0 : 2 : 3 : 1.0
+T: 5 1 : 2 : 3 : 0.1
+T: 5 1 : 2 : 19 : 0.9
+T: 5 2 : 2 : 3 : 1.0
+T: 5 3 : 2 : 3 : 0.1
+T: 5 3 : 2 : 35 : 0.9
+T: 5 4 : 2 : 3 : 1.0
+T: 5 5 : 2 : 3 : 1.0
+T: 0 0 : 3 : 3 : 1.0
+T: 0 1 : 3 : 3 : 0.1
+T: 0 1 : 3 : 19 : 0.9
+T: 0 2 : 3 : 3 : 1.0
+T: 0 3 : 3 : 3 : 0.1
+T: 0 3 : 3 : 35 : 0.9
+T: 0 4 : 3 : 3 : 1.0
+T: 0 5 : 3 : 3 : 1.0
+T: 1 0 : 3 : 3 : 0.1
+T: 1 0 : 3 : 67 : 0.9
+T: 1 1 : 3 : 3 : 0.01
+T: 1 1 : 3 : 19 : 0.09
+T: 1 1 : 3 : 67 : 0.09
+T: 1 1 : 3 : 83 : 0.81
+T: 1 2 : 3 : 3 : 0.1
+T: 1 2 : 3 : 67 : 0.9
+T: 1 3 : 3 : 3 : 0.01
+T: 1 3 : 3 : 35 : 0.09
+T: 1 3 : 3 : 67 : 0.09
+T: 1 3 : 3 : 99 : 0.81
+T: 1 4 : 3 : 3 : 0.1
+T: 1 4 : 3 : 67 : 0.9
+T: 1 5 : 3 : 3 : 0.1
+T: 1 5 : 3 : 67 : 0.9
+T: 2 0 : 3 : 3 : 1.0
+T: 2 1 : 3 : 3 : 0.1
+T: 2 1 : 3 : 19 : 0.9
+T: 2 2 : 3 : 3 : 1.0
+T: 2 3 : 3 : 3 : 0.1
+T: 2 3 : 3 : 35 : 0.9
+T: 2 4 : 3 : 3 : 1.0
+T: 2 5 : 3 : 3 : 1.0
+T: 3 0 : 3 : 3 : 0.1
+T: 3 0 : 3 : 131 : 0.9
+T: 3 1 : 3 : 3 : 0.01
+T: 3 1 : 3 : 19 : 0.09
+T: 3 1 : 3 : 131 : 0.09
+T: 3 1 : 3 : 147 : 0.81
+T: 3 2 : 3 : 3 : 0.1
+T: 3 2 : 3 : 131 : 0.9
+T: 3 3 : 3 : 3 : 0.01
+T: 3 3 : 3 : 35 : 0.09
+T: 3 3 : 3 : 131 : 0.09
+T: 3 3 : 3 : 163 : 0.81
+T: 3 4 : 3 : 3 : 0.1
+T: 3 4 : 3 : 131 : 0.9
+T: 3 5 : 3 : 3 : 0.1
+T: 3 5 : 3 : 131 : 0.9
+T: 4 0 : 3 : 3 : 1.0
+T: 4 1 : 3 : 3 : 0.1
+T: 4 1 : 3 : 19 : 0.9
+T: 4 2 : 3 : 3 : 1.0
+T: 4 3 : 3 : 3 : 0.1
+T: 4 3 : 3 : 35 : 0.9
+T: 4 4 : 3 : 3 : 1.0
+T: 4 5 : 3 : 3 : 1.0
+T: 5 0 : 3 : 3 : 1.0
+T: 5 1 : 3 : 3 : 0.1
+T: 5 1 : 3 : 19 : 0.9
+T: 5 2 : 3 : 3 : 1.0
+T: 5 3 : 3 : 3 : 0.1
+T: 5 3 : 3 : 35 : 0.9
+T: 5 4 : 3 : 3 : 1.0
+T: 5 5 : 3 : 3 : 1.0
+T: 0 0 : 4 : 4 : 1.0
+T: 0 1 : 4 : 4 : 0.1
+T: 0 1 : 4 : 20 : 0.9
+T: 0 2 : 4 : 4 : 1.0
+T: 0 3 : 4 : 4 : 0.1
+T: 0 3 : 4 : 36 : 0.9
+T: 0 4 : 4 : 5 : 1.0
+T: 0 5 : 4 : 5 : 1.0
+T: 1 0 : 4 : 4 : 0.1
+T: 1 0 : 4 : 68 : 0.9
+T: 1 1 : 4 : 4 : 0.01
+T: 1 1 : 4 : 20 : 0.09
+T: 1 1 : 4 : 68 : 0.09
+T: 1 1 : 4 : 84 : 0.81
+T: 1 2 : 4 : 4 : 0.1
+T: 1 2 : 4 : 68 : 0.9
+T: 1 3 : 4 : 4 : 0.01
+T: 1 3 : 4 : 36 : 0.09
+T: 1 3 : 4 : 68 : 0.09
+T: 1 3 : 4 : 100 : 0.81
+T: 1 4 : 4 : 5 : 0.1
+T: 1 4 : 4 : 69 : 0.9
+T: 1 5 : 4 : 5 : 0.1
+T: 1 5 : 4 : 69 : 0.9
+T: 2 0 : 4 : 4 : 1.0
+T: 2 1 : 4 : 4 : 0.1
+T: 2 1 : 4 : 20 : 0.9
+T: 2 2 : 4 : 4 : 1.0
+T: 2 3 : 4 : 4 : 0.1
+T: 2 3 : 4 : 36 : 0.9
+T: 2 4 : 4 : 5 : 1.0
+T: 2 5 : 4 : 5 : 1.0
+T: 3 0 : 4 : 4 : 0.1
+T: 3 0 : 4 : 132 : 0.9
+T: 3 1 : 4 : 4 : 0.01
+T: 3 1 : 4 : 20 : 0.09
+T: 3 1 : 4 : 132 : 0.09
+T: 3 1 : 4 : 148 : 0.81
+T: 3 2 : 4 : 4 : 0.1
+T: 3 2 : 4 : 132 : 0.9
+T: 3 3 : 4 : 4 : 0.01
+T: 3 3 : 4 : 36 : 0.09
+T: 3 3 : 4 : 132 : 0.09
+T: 3 3 : 4 : 164 : 0.81
+T: 3 4 : 4 : 5 : 0.1
+T: 3 4 : 4 : 133 : 0.9
+T: 3 5 : 4 : 5 : 0.1
+T: 3 5 : 4 : 133 : 0.9
+T: 4 0 : 4 : 5 : 1.0
+T: 4 1 : 4 : 5 : 0.1
+T: 4 1 : 4 : 21 : 0.9
+T: 4 2 : 4 : 5 : 1.0
+T: 4 3 : 4 : 5 : 0.1
+T: 4 3 : 4 : 37 : 0.9
+T: 4 4 : 4 : 5 : 1.0
+T: 4 5 : 4 : 5 : 1.0
+T: 5 0 : 4 : 5 : 1.0
+T: 5 1 : 4 : 5 : 0.1
+T: 5 1 : 4 : 21 : 0.9
+T: 5 2 : 4 : 5 : 1.0
+T: 5 3 : 4 : 5 : 0.1
+T: 5 3 : 4 : 37 : 0.9
+T: 5 4 : 4 : 5 : 1.0
+T: 5 5 : 4 : 5 : 1.0
+T: 0 0 : 5 : 5 : 1.0
+T: 0 1 : 5 : 5 : 0.1
+T: 0 1 : 5 : 21 : 0.9
+T: 0 2 : 5 : 5 : 1.0
+T: 0 3 : 5 : 5 : 0.1
+T: 0 3 : 5 : 37 : 0.9
+T: 0 4 : 5 : 5 : 1.0
+T: 0 5 : 5 : 5 : 1.0
+T: 1 0 : 5 : 5 : 0.1
+T: 1 0 : 5 : 69 : 0.9
+T: 1 1 : 5 : 5 : 0.01
+T: 1 1 : 5 : 21 : 0.09
+T: 1 1 : 5 : 69 : 0.09
+T: 1 1 : 5 : 85 : 0.81
+T: 1 2 : 5 : 5 : 0.1
+T: 1 2 : 5 : 69 : 0.9
+T: 1 3 : 5 : 5 : 0.01
+T: 1 3 : 5 : 37 : 0.09
+T: 1 3 : 5 : 69 : 0.09
+T: 1 3 : 5 : 101 : 0.81
+T: 1 4 : 5 : 5 : 0.1
+T: 1 4 : 5 : 69 : 0.9
+T: 1 5 : 5 : 5 : 0.1
+T: 1 5 : 5 : 69 : 0.9
+T: 2 0 : 5 : 5 : 1.0
+T: 2 1 : 5 : 5 : 0.1
+T: 2 1 : 5 : 21 : 0.9
+T: 2 2 : 5 : 5 : 1.0
+T: 2 3 : 5 : 5 : 0.1
+T: 2 3 : 5 : 37 : 0.9
+T: 2 4 : 5 : 5 : 1.0
+T: 2 5 : 5 : 5 : 1.0
+T: 3 0 : 5 : 5 : 0.1
+T: 3 0 : 5 : 133 : 0.9
+T: 3 1 : 5 : 5 : 0.01
+T: 3 1 : 5 : 21 : 0.09
+T: 3 1 : 5 : 133 : 0.09
+T: 3 1 : 5 : 149 : 0.81
+T: 3 2 : 5 : 5 : 0.1
+T: 3 2 : 5 : 133 : 0.9
+T: 3 3 : 5 : 5 : 0.01
+T: 3 3 : 5 : 37 : 0.09
+T: 3 3 : 5 : 133 : 0.09
+T: 3 3 : 5 : 165 : 0.81
+T: 3 4 : 5 : 5 : 0.1
+T: 3 4 : 5 : 133 : 0.9
+T: 3 5 : 5 : 5 : 0.1
+T: 3 5 : 5 : 133 : 0.9
+T: 4 0 : 5 : 5 : 1.0
+T: 4 1 : 5 : 5 : 0.1
+T: 4 1 : 5 : 21 : 0.9
+T: 4 2 : 5 : 5 : 1.0
+T: 4 3 : 5 : 5 : 0.1
+T: 4 3 : 5 : 37 : 0.9
+T: 4 4 : 5 : 5 : 1.0
+T: 4 5 : 5 : 5 : 1.0
+T: 5 0 : 5 : 5 : 1.0
+T: 5 1 : 5 : 5 : 0.1
+T: 5 1 : 5 : 21 : 0.9
+T: 5 2 : 5 : 5 : 1.0
+T: 5 3 : 5 : 5 : 0.1
+T: 5 3 : 5 : 37 : 0.9
+T: 5 4 : 5 : 5 : 1.0
+T: 5 5 : 5 : 5 : 1.0
+T: 0 0 : 6 : 6 : 1.0
+T: 0 1 : 6 : 6 : 0.1
+T: 0 1 : 6 : 22 : 0.9
+T: 0 2 : 6 : 6 : 1.0
+T: 0 3 : 6 : 6 : 0.1
+T: 0 3 : 6 : 38 : 0.9
+T: 0 4 : 6 : 7 : 1.0
+T: 0 5 : 6 : 7 : 1.0
+T: 1 0 : 6 : 6 : 0.1
+T: 1 0 : 6 : 70 : 0.9
+T: 1 1 : 6 : 6 : 0.01
+T: 1 1 : 6 : 22 : 0.09
+T: 1 1 : 6 : 70 : 0.09
+T: 1 1 : 6 : 86 : 0.81
+T: 1 2 : 6 : 6 : 0.1
+T: 1 2 : 6 : 70 : 0.9
+T: 1 3 : 6 : 6 : 0.01
+T: 1 3 : 6 : 38 : 0.09
+T: 1 3 : 6 : 70 : 0.09
+T: 1 3 : 6 : 102 : 0.81
+T: 1 4 : 6 : 7 : 0.1
+T: 1 4 : 6 : 71 : 0.9
+T: 1 5 : 6 : 7 : 0.1
+T: 1 5 : 6 : 71 : 0.9
+T: 2 0 : 6 : 6 : 1.0
+T: 2 1 : 6 : 6 : 0.1
+T: 2 1 : 6 : 22 : 0.9
+T: 2 2 : 6 : 6 : 1.0
+T: 2 3 : 6 : 6 : 0.1
+T: 2 3 : 6 : 38 : 0.9
+T: 2 4 : 6 : 7 : 1.0
+T: 2 5 : 6 : 7 : 1.0
+T: 3 0 : 6 : 6 : 0.1
+T: 3 0 : 6 : 134 : 0.9
+T: 3 1 : 6 : 6 : 0.01
+T: 3 1 : 6 : 22 : 0.09
+T: 3 1 : 6 : 134 : 0.09
+T: 3 1 : 6 : 150 : 0.81
+T: 3 2 : 6 : 6 : 0.1
+T: 3 2 : 6 : 134 : 0.9
+T: 3 3 : 6 : 6 : 0.01
+T: 3 3 : 6 : 38 : 0.09
+T: 3 3 : 6 : 134 : 0.09
+T: 3 3 : 6 : 166 : 0.81
+T: 3 4 : 6 : 7 : 0.1
+T: 3 4 : 6 : 135 : 0.9
+T: 3 5 : 6 : 7 : 0.1
+T: 3 5 : 6 : 135 : 0.9
+T: 4 0 : 6 : 7 : 1.0
+T: 4 1 : 6 : 7 : 0.1
+T: 4 1 : 6 : 23 : 0.9
+T: 4 2 : 6 : 7 : 1.0
+T: 4 3 : 6 : 7 : 0.1
+T: 4 3 : 6 : 39 : 0.9
+T: 4 4 : 6 : 7 : 1.0
+T: 4 5 : 6 : 7 : 1.0
+T: 5 0 : 6 : 7 : 1.0
+T: 5 1 : 6 : 7 : 0.1
+T: 5 1 : 6 : 23 : 0.9
+T: 5 2 : 6 : 7 : 1.0
+T: 5 3 : 6 : 7 : 0.1
+T: 5 3 : 6 : 39 : 0.9
+T: 5 4 : 6 : 7 : 1.0
+T: 5 5 : 6 : 7 : 1.0
+T: 0 0 : 7 : 7 : 1.0
+T: 0 1 : 7 : 7 : 0.1
+T: 0 1 : 7 : 23 : 0.9
+T: 0 2 : 7 : 7 : 1.0
+T: 0 3 : 7 : 7 : 0.1
+T: 0 3 : 7 : 39 : 0.9
+T: 0 4 : 7 : 7 : 1.0
+T: 0 5 : 7 : 7 : 1.0
+T: 1 0 : 7 : 7 : 0.1
+T: 1 0 : 7 : 71 : 0.9
+T: 1 1 : 7 : 7 : 0.01
+T: 1 1 : 7 : 23 : 0.09
+T: 1 1 : 7 : 71 : 0.09
+T: 1 1 : 7 : 87 : 0.81
+T: 1 2 : 7 : 7 : 0.1
+T: 1 2 : 7 : 71 : 0.9
+T: 1 3 : 7 : 7 : 0.01
+T: 1 3 : 7 : 39 : 0.09
+T: 1 3 : 7 : 71 : 0.09
+T: 1 3 : 7 : 103 : 0.81
+T: 1 4 : 7 : 7 : 0.1
+T: 1 4 : 7 : 71 : 0.9
+T: 1 5 : 7 : 7 : 0.1
+T: 1 5 : 7 : 71 : 0.9
+T: 2 0 : 7 : 7 : 1.0
+T: 2 1 : 7 : 7 : 0.1
+T: 2 1 : 7 : 23 : 0.9
+T: 2 2 : 7 : 7 : 1.0
+T: 2 3 : 7 : 7 : 0.1
+T: 2 3 : 7 : 39 : 0.9
+T: 2 4 : 7 : 7 : 1.0
+T: 2 5 : 7 : 7 : 1.0
+T: 3 0 : 7 : 7 : 0.1
+T: 3 0 : 7 : 135 : 0.9
+T: 3 1 : 7 : 7 : 0.01
+T: 3 1 : 7 : 23 : 0.09
+T: 3 1 : 7 : 135 : 0.09
+T: 3 1 : 7 : 151 : 0.81
+T: 3 2 : 7 : 7 : 0.1
+T: 3 2 : 7 : 135 : 0.9
+T: 3 3 : 7 : 7 : 0.01
+T: 3 3 : 7 : 39 : 0.09
+T: 3 3 : 7 : 135 : 0.09
+T: 3 3 : 7 : 167 : 0.81
+T: 3 4 : 7 : 7 : 0.1
+T: 3 4 : 7 : 135 : 0.9
+T: 3 5 : 7 : 7 : 0.1
+T: 3 5 : 7 : 135 : 0.9
+T: 4 0 : 7 : 7 : 1.0
+T: 4 1 : 7 : 7 : 0.1
+T: 4 1 : 7 : 23 : 0.9
+T: 4 2 : 7 : 7 : 1.0
+T: 4 3 : 7 : 7 : 0.1
+T: 4 3 : 7 : 39 : 0.9
+T: 4 4 : 7 : 7 : 1.0
+T: 4 5 : 7 : 7 : 1.0
+T: 5 0 : 7 : 7 : 1.0
+T: 5 1 : 7 : 7 : 0.1
+T: 5 1 : 7 : 23 : 0.9
+T: 5 2 : 7 : 7 : 1.0
+T: 5 3 : 7 : 7 : 0.1
+T: 5 3 : 7 : 39 : 0.9
+T: 5 4 : 7 : 7 : 1.0
+T: 5 5 : 7 : 7 : 1.0
+T: 0 0 : 8 : 8 : 1.0
+T: 0 1 : 8 : 8 : 0.1
+T: 0 1 : 8 : 24 : 0.9
+T: 0 2 : 8 : 8 : 1.0
+T: 0 3 : 8 : 8 : 0.1
+T: 0 3 : 8 : 40 : 0.9
+T: 0 4 : 8 : 9 : 1.0
+T: 0 5 : 8 : 9 : 1.0
+T: 1 0 : 8 : 8 : 0.1
+T: 1 0 : 8 : 72 : 0.9
+T: 1 1 : 8 : 8 : 0.01
+T: 1 1 : 8 : 24 : 0.09
+T: 1 1 : 8 : 72 : 0.09
+T: 1 1 : 8 : 88 : 0.81
+T: 1 2 : 8 : 8 : 0.1
+T: 1 2 : 8 : 72 : 0.9
+T: 1 3 : 8 : 8 : 0.01
+T: 1 3 : 8 : 40 : 0.09
+T: 1 3 : 8 : 72 : 0.09
+T: 1 3 : 8 : 104 : 0.81
+T: 1 4 : 8 : 9 : 0.1
+T: 1 4 : 8 : 73 : 0.9
+T: 1 5 : 8 : 9 : 0.1
+T: 1 5 : 8 : 73 : 0.9
+T: 2 0 : 8 : 8 : 1.0
+T: 2 1 : 8 : 8 : 0.1
+T: 2 1 : 8 : 24 : 0.9
+T: 2 2 : 8 : 8 : 1.0
+T: 2 3 : 8 : 8 : 0.1
+T: 2 3 : 8 : 40 : 0.9
+T: 2 4 : 8 : 9 : 1.0
+T: 2 5 : 8 : 9 : 1.0
+T: 3 0 : 8 : 8 : 0.1
+T: 3 0 : 8 : 136 : 0.9
+T: 3 1 : 8 : 8 : 0.01
+T: 3 1 : 8 : 24 : 0.09
+T: 3 1 : 8 : 136 : 0.09
+T: 3 1 : 8 : 152 : 0.81
+T: 3 2 : 8 : 8 : 0.1
+T: 3 2 : 8 : 136 : 0.9
+T: 3 3 : 8 : 8 : 0.01
+T: 3 3 : 8 : 40 : 0.09
+T: 3 3 : 8 : 136 : 0.09
+T: 3 3 : 8 : 168 : 0.81
+T: 3 4 : 8 : 9 : 0.1
+T: 3 4 : 8 : 137 : 0.9
+T: 3 5 : 8 : 9 : 0.1
+T: 3 5 : 8 : 137 : 0.9
+T: 4 0 : 8 : 9 : 1.0
+T: 4 1 : 8 : 9 : 0.1
+T: 4 1 : 8 : 25 : 0.9
+T: 4 2 : 8 : 9 : 1.0
+T: 4 3 : 8 : 9 : 0.1
+T: 4 3 : 8 : 41 : 0.9
+T: 4 4 : 8 : 9 : 1.0
+T: 4 5 : 8 : 9 : 1.0
+T: 5 0 : 8 : 9 : 1.0
+T: 5 1 : 8 : 9 : 0.1
+T: 5 1 : 8 : 25 : 0.9
+T: 5 2 : 8 : 9 : 1.0
+T: 5 3 : 8 : 9 : 0.1
+T: 5 3 : 8 : 41 : 0.9
+T: 5 4 : 8 : 9 : 1.0
+T: 5 5 : 8 : 9 : 1.0
+T: 0 0 : 9 : 9 : 1.0
+T: 0 1 : 9 : 9 : 0.1
+T: 0 1 : 9 : 25 : 0.9
+T: 0 2 : 9 : 9 : 1.0
+T: 0 3 : 9 : 9 : 0.1
+T: 0 3 : 9 : 41 : 0.9
+T: 0 4 : 9 : 9 : 1.0
+T: 0 5 : 9 : 9 : 1.0
+T: 1 0 : 9 : 9 : 0.1
+T: 1 0 : 9 : 73 : 0.9
+T: 1 1 : 9 : 9 : 0.01
+T: 1 1 : 9 : 25 : 0.09
+T: 1 1 : 9 : 73 : 0.09
+T: 1 1 : 9 : 89 : 0.81
+T: 1 2 : 9 : 9 : 0.1
+T: 1 2 : 9 : 73 : 0.9
+T: 1 3 : 9 : 9 : 0.01
+T: 1 3 : 9 : 41 : 0.09
+T: 1 3 : 9 : 73 : 0.09
+T: 1 3 : 9 : 105 : 0.81
+T: 1 4 : 9 : 9 : 0.1
+T: 1 4 : 9 : 73 : 0.9
+T: 1 5 : 9 : 9 : 0.1
+T: 1 5 : 9 : 73 : 0.9
+T: 2 0 : 9 : 9 : 1.0
+T: 2 1 : 9 : 9 : 0.1
+T: 2 1 : 9 : 25 : 0.9
+T: 2 2 : 9 : 9 : 1.0
+T: 2 3 : 9 : 9 : 0.1
+T: 2 3 : 9 : 41 : 0.9
+T: 2 4 : 9 : 9 : 1.0
+T: 2 5 : 9 : 9 : 1.0
+T: 3 0 : 9 : 9 : 0.1
+T: 3 0 : 9 : 137 : 0.9
+T: 3 1 : 9 : 9 : 0.01
+T: 3 1 : 9 : 25 : 0.09
+T: 3 1 : 9 : 137 : 0.09
+T: 3 1 : 9 : 153 : 0.81
+T: 3 2 : 9 : 9 : 0.1
+T: 3 2 : 9 : 137 : 0.9
+T: 3 3 : 9 : 9 : 0.01
+T: 3 3 : 9 : 41 : 0.09
+T: 3 3 : 9 : 137 : 0.09
+T: 3 3 : 9 : 169 : 0.81
+T: 3 4 : 9 : 9 : 0.1
+T: 3 4 : 9 : 137 : 0.9
+T: 3 5 : 9 : 9 : 0.1
+T: 3 5 : 9 : 137 : 0.9
+T: 4 0 : 9 : 9 : 1.0
+T: 4 1 : 9 : 9 : 0.1
+T: 4 1 : 9 : 25 : 0.9
+T: 4 2 : 9 : 9 : 1.0
+T: 4 3 : 9 : 9 : 0.1
+T: 4 3 : 9 : 41 : 0.9
+T: 4 4 : 9 : 9 : 1.0
+T: 4 5 : 9 : 9 : 1.0
+T: 5 0 : 9 : 9 : 1.0
+T: 5 1 : 9 : 9 : 0.1
+T: 5 1 : 9 : 25 : 0.9
+T: 5 2 : 9 : 9 : 1.0
+T: 5 3 : 9 : 9 : 0.1
+T: 5 3 : 9 : 41 : 0.9
+T: 5 4 : 9 : 9 : 1.0
+T: 5 5 : 9 : 9 : 1.0
+T: 0 0 : 10 : 10 : 1.0
+T: 0 1 : 10 : 10 : 0.1
+T: 0 1 : 10 : 26 : 0.9
+T: 0 2 : 10 : 10 : 1.0
+T: 0 3 : 10 : 10 : 0.1
+T: 0 3 : 10 : 42 : 0.9
+T: 0 4 : 10 : 11 : 1.0
+T: 0 5 : 10 : 11 : 1.0
+T: 1 0 : 10 : 10 : 0.1
+T: 1 0 : 10 : 74 : 0.9
+T: 1 1 : 10 : 10 : 0.01
+T: 1 1 : 10 : 26 : 0.09
+T: 1 1 : 10 : 74 : 0.09
+T: 1 1 : 10 : 90 : 0.81
+T: 1 2 : 10 : 10 : 0.1
+T: 1 2 : 10 : 74 : 0.9
+T: 1 3 : 10 : 10 : 0.01
+T: 1 3 : 10 : 42 : 0.09
+T: 1 3 : 10 : 74 : 0.09
+T: 1 3 : 10 : 106 : 0.81
+T: 1 4 : 10 : 11 : 0.1
+T: 1 4 : 10 : 75 : 0.9
+T: 1 5 : 10 : 11 : 0.1
+T: 1 5 : 10 : 75 : 0.9
+T: 2 0 : 10 : 10 : 1.0
+T: 2 1 : 10 : 10 : 0.1
+T: 2 1 : 10 : 26 : 0.9
+T: 2 2 : 10 : 10 : 1.0
+T: 2 3 : 10 : 10 : 0.1
+T: 2 3 : 10 : 42 : 0.9
+T: 2 4 : 10 : 11 : 1.0
+T: 2 5 : 10 : 11 : 1.0
+T: 3 0 : 10 : 10 : 0.1
+T: 3 0 : 10 : 138 : 0.9
+T: 3 1 : 10 : 10 : 0.01
+T: 3 1 : 10 : 26 : 0.09
+T: 3 1 : 10 : 138 : 0.09
+T: 3 1 : 10 : 154 : 0.81
+T: 3 2 : 10 : 10 : 0.1
+T: 3 2 : 10 : 138 : 0.9
+T: 3 3 : 10 : 10 : 0.01
+T: 3 3 : 10 : 42 : 0.09
+T: 3 3 : 10 : 138 : 0.09
+T: 3 3 : 10 : 170 : 0.81
+T: 3 4 : 10 : 11 : 0.1
+T: 3 4 : 10 : 139 : 0.9
+T: 3 5 : 10 : 11 : 0.1
+T: 3 5 : 10 : 139 : 0.9
+T: 4 0 : 10 : 11 : 1.0
+T: 4 1 : 10 : 11 : 0.1
+T: 4 1 : 10 : 27 : 0.9
+T: 4 2 : 10 : 11 : 1.0
+T: 4 3 : 10 : 11 : 0.1
+T: 4 3 : 10 : 43 : 0.9
+T: 4 4 : 10 : 11 : 1.0
+T: 4 5 : 10 : 11 : 1.0
+T: 5 0 : 10 : 11 : 1.0
+T: 5 1 : 10 : 11 : 0.1
+T: 5 1 : 10 : 27 : 0.9
+T: 5 2 : 10 : 11 : 1.0
+T: 5 3 : 10 : 11 : 0.1
+T: 5 3 : 10 : 43 : 0.9
+T: 5 4 : 10 : 11 : 1.0
+T: 5 5 : 10 : 11 : 1.0
+T: 0 0 : 11 : 11 : 1.0
+T: 0 1 : 11 : 11 : 0.1
+T: 0 1 : 11 : 27 : 0.9
+T: 0 2 : 11 : 11 : 1.0
+T: 0 3 : 11 : 11 : 0.1
+T: 0 3 : 11 : 43 : 0.9
+T: 0 4 : 11 : 11 : 1.0
+T: 0 5 : 11 : 11 : 1.0
+T: 1 0 : 11 : 11 : 0.1
+T: 1 0 : 11 : 75 : 0.9
+T: 1 1 : 11 : 11 : 0.01
+T: 1 1 : 11 : 27 : 0.09
+T: 1 1 : 11 : 75 : 0.09
+T: 1 1 : 11 : 91 : 0.81
+T: 1 2 : 11 : 11 : 0.1
+T: 1 2 : 11 : 75 : 0.9
+T: 1 3 : 11 : 11 : 0.01
+T: 1 3 : 11 : 43 : 0.09
+T: 1 3 : 11 : 75 : 0.09
+T: 1 3 : 11 : 107 : 0.81
+T: 1 4 : 11 : 11 : 0.1
+T: 1 4 : 11 : 75 : 0.9
+T: 1 5 : 11 : 11 : 0.1
+T: 1 5 : 11 : 75 : 0.9
+T: 2 0 : 11 : 11 : 1.0
+T: 2 1 : 11 : 11 : 0.1
+T: 2 1 : 11 : 27 : 0.9
+T: 2 2 : 11 : 11 : 1.0
+T: 2 3 : 11 : 11 : 0.1
+T: 2 3 : 11 : 43 : 0.9
+T: 2 4 : 11 : 11 : 1.0
+T: 2 5 : 11 : 11 : 1.0
+T: 3 0 : 11 : 11 : 0.1
+T: 3 0 : 11 : 139 : 0.9
+T: 3 1 : 11 : 11 : 0.01
+T: 3 1 : 11 : 27 : 0.09
+T: 3 1 : 11 : 139 : 0.09
+T: 3 1 : 11 : 155 : 0.81
+T: 3 2 : 11 : 11 : 0.1
+T: 3 2 : 11 : 139 : 0.9
+T: 3 3 : 11 : 11 : 0.01
+T: 3 3 : 11 : 43 : 0.09
+T: 3 3 : 11 : 139 : 0.09
+T: 3 3 : 11 : 171 : 0.81
+T: 3 4 : 11 : 11 : 0.1
+T: 3 4 : 11 : 139 : 0.9
+T: 3 5 : 11 : 11 : 0.1
+T: 3 5 : 11 : 139 : 0.9
+T: 4 0 : 11 : 11 : 1.0
+T: 4 1 : 11 : 11 : 0.1
+T: 4 1 : 11 : 27 : 0.9
+T: 4 2 : 11 : 11 : 1.0
+T: 4 3 : 11 : 11 : 0.1
+T: 4 3 : 11 : 43 : 0.9
+T: 4 4 : 11 : 11 : 1.0
+T: 4 5 : 11 : 11 : 1.0
+T: 5 0 : 11 : 11 : 1.0
+T: 5 1 : 11 : 11 : 0.1
+T: 5 1 : 11 : 27 : 0.9
+T: 5 2 : 11 : 11 : 1.0
+T: 5 3 : 11 : 11 : 0.1
+T: 5 3 : 11 : 43 : 0.9
+T: 5 4 : 11 : 11 : 1.0
+T: 5 5 : 11 : 11 : 1.0
+T: 0 0 : 12 : 12 : 1.0
+T: 0 1 : 12 : 12 : 0.1
+T: 0 1 : 12 : 28 : 0.9
+T: 0 2 : 12 : 12 : 1.0
+T: 0 3 : 12 : 12 : 0.1
+T: 0 3 : 12 : 44 : 0.9
+T: 0 4 : 12 : 13 : 1.0
+T: 0 5 : 12 : 13 : 1.0
+T: 1 0 : 12 : 12 : 0.1
+T: 1 0 : 12 : 76 : 0.9
+T: 1 1 : 12 : 12 : 0.01
+T: 1 1 : 12 : 28 : 0.09
+T: 1 1 : 12 : 76 : 0.09
+T: 1 1 : 12 : 92 : 0.81
+T: 1 2 : 12 : 12 : 0.1
+T: 1 2 : 12 : 76 : 0.9
+T: 1 3 : 12 : 12 : 0.01
+T: 1 3 : 12 : 44 : 0.09
+T: 1 3 : 12 : 76 : 0.09
+T: 1 3 : 12 : 108 : 0.81
+T: 1 4 : 12 : 13 : 0.1
+T: 1 4 : 12 : 77 : 0.9
+T: 1 5 : 12 : 13 : 0.1
+T: 1 5 : 12 : 77 : 0.9
+T: 2 0 : 12 : 12 : 1.0
+T: 2 1 : 12 : 12 : 0.1
+T: 2 1 : 12 : 28 : 0.9
+T: 2 2 : 12 : 12 : 1.0
+T: 2 3 : 12 : 12 : 0.1
+T: 2 3 : 12 : 44 : 0.9
+T: 2 4 : 12 : 13 : 1.0
+T: 2 5 : 12 : 13 : 1.0
+T: 3 0 : 12 : 12 : 0.1
+T: 3 0 : 12 : 140 : 0.9
+T: 3 1 : 12 : 12 : 0.01
+T: 3 1 : 12 : 28 : 0.09
+T: 3 1 : 12 : 140 : 0.09
+T: 3 1 : 12 : 156 : 0.81
+T: 3 2 : 12 : 12 : 0.1
+T: 3 2 : 12 : 140 : 0.9
+T: 3 3 : 12 : 12 : 0.01
+T: 3 3 : 12 : 44 : 0.09
+T: 3 3 : 12 : 140 : 0.09
+T: 3 3 : 12 : 172 : 0.81
+T: 3 4 : 12 : 13 : 0.1
+T: 3 4 : 12 : 141 : 0.9
+T: 3 5 : 12 : 13 : 0.1
+T: 3 5 : 12 : 141 : 0.9
+T: 4 0 : 12 : 13 : 1.0
+T: 4 1 : 12 : 13 : 0.1
+T: 4 1 : 12 : 29 : 0.9
+T: 4 2 : 12 : 13 : 1.0
+T: 4 3 : 12 : 13 : 0.1
+T: 4 3 : 12 : 45 : 0.9
+T: 4 4 : 12 : 13 : 1.0
+T: 4 5 : 12 : 13 : 1.0
+T: 5 0 : 12 : 13 : 1.0
+T: 5 1 : 12 : 13 : 0.1
+T: 5 1 : 12 : 29 : 0.9
+T: 5 2 : 12 : 13 : 1.0
+T: 5 3 : 12 : 13 : 0.1
+T: 5 3 : 12 : 45 : 0.9
+T: 5 4 : 12 : 13 : 1.0
+T: 5 5 : 12 : 13 : 1.0
+T: 0 0 : 13 : 13 : 1.0
+T: 0 1 : 13 : 13 : 0.1
+T: 0 1 : 13 : 29 : 0.9
+T: 0 2 : 13 : 13 : 1.0
+T: 0 3 : 13 : 13 : 0.1
+T: 0 3 : 13 : 45 : 0.9
+T: 0 4 : 13 : 13 : 1.0
+T: 0 5 : 13 : 13 : 1.0
+T: 1 0 : 13 : 13 : 0.1
+T: 1 0 : 13 : 77 : 0.9
+T: 1 1 : 13 : 13 : 0.01
+T: 1 1 : 13 : 29 : 0.09
+T: 1 1 : 13 : 77 : 0.09
+T: 1 1 : 13 : 93 : 0.81
+T: 1 2 : 13 : 13 : 0.1
+T: 1 2 : 13 : 77 : 0.9
+T: 1 3 : 13 : 13 : 0.01
+T: 1 3 : 13 : 45 : 0.09
+T: 1 3 : 13 : 77 : 0.09
+T: 1 3 : 13 : 109 : 0.81
+T: 1 4 : 13 : 13 : 0.1
+T: 1 4 : 13 : 77 : 0.9
+T: 1 5 : 13 : 13 : 0.1
+T: 1 5 : 13 : 77 : 0.9
+T: 2 0 : 13 : 13 : 1.0
+T: 2 1 : 13 : 13 : 0.1
+T: 2 1 : 13 : 29 : 0.9
+T: 2 2 : 13 : 13 : 1.0
+T: 2 3 : 13 : 13 : 0.1
+T: 2 3 : 13 : 45 : 0.9
+T: 2 4 : 13 : 13 : 1.0
+T: 2 5 : 13 : 13 : 1.0
+T: 3 0 : 13 : 13 : 0.1
+T: 3 0 : 13 : 141 : 0.9
+T: 3 1 : 13 : 13 : 0.01
+T: 3 1 : 13 : 29 : 0.09
+T: 3 1 : 13 : 141 : 0.09
+T: 3 1 : 13 : 157 : 0.81
+T: 3 2 : 13 : 13 : 0.1
+T: 3 2 : 13 : 141 : 0.9
+T: 3 3 : 13 : 13 : 0.01
+T: 3 3 : 13 : 45 : 0.09
+T: 3 3 : 13 : 141 : 0.09
+T: 3 3 : 13 : 173 : 0.81
+T: 3 4 : 13 : 13 : 0.1
+T: 3 4 : 13 : 141 : 0.9
+T: 3 5 : 13 : 13 : 0.1
+T: 3 5 : 13 : 141 : 0.9
+T: 4 0 : 13 : 13 : 1.0
+T: 4 1 : 13 : 13 : 0.1
+T: 4 1 : 13 : 29 : 0.9
+T: 4 2 : 13 : 13 : 1.0
+T: 4 3 : 13 : 13 : 0.1
+T: 4 3 : 13 : 45 : 0.9
+T: 4 4 : 13 : 13 : 1.0
+T: 4 5 : 13 : 13 : 1.0
+T: 5 0 : 13 : 13 : 1.0
+T: 5 1 : 13 : 13 : 0.1
+T: 5 1 : 13 : 29 : 0.9
+T: 5 2 : 13 : 13 : 1.0
+T: 5 3 : 13 : 13 : 0.1
+T: 5 3 : 13 : 45 : 0.9
+T: 5 4 : 13 : 13 : 1.0
+T: 5 5 : 13 : 13 : 1.0
+T: 0 0 : 14 : 14 : 1.0
+T: 0 1 : 14 : 14 : 0.1
+T: 0 1 : 14 : 30 : 0.9
+T: 0 2 : 14 : 14 : 1.0
+T: 0 3 : 14 : 14 : 0.1
+T: 0 3 : 14 : 46 : 0.9
+T: 0 4 : 14 : 0 : 1.0
+T: 0 5 : 14 : 0 : 1.0
+T: 1 0 : 14 : 14 : 0.1
+T: 1 0 : 14 : 78 : 0.9
+T: 1 1 : 14 : 14 : 0.01
+T: 1 1 : 14 : 30 : 0.09
+T: 1 1 : 14 : 78 : 0.09
+T: 1 1 : 14 : 94 : 0.81
+T: 1 2 : 14 : 14 : 0.1
+T: 1 2 : 14 : 78 : 0.9
+T: 1 3 : 14 : 14 : 0.01
+T: 1 3 : 14 : 46 : 0.09
+T: 1 3 : 14 : 78 : 0.09
+T: 1 3 : 14 : 110 : 0.81
+T: 1 4 : 14 : 0 : 1.0
+T: 1 5 : 14 : 0 : 1.0
+T: 2 0 : 14 : 14 : 1.0
+T: 2 1 : 14 : 14 : 0.1
+T: 2 1 : 14 : 30 : 0.9
+T: 2 2 : 14 : 14 : 1.0
+T: 2 3 : 14 : 14 : 0.1
+T: 2 3 : 14 : 46 : 0.9
+T: 2 4 : 14 : 0 : 1.0
+T: 2 5 : 14 : 0 : 1.0
+T: 3 0 : 14 : 14 : 0.1
+T: 3 0 : 14 : 142 : 0.9
+T: 3 1 : 14 : 14 : 0.01
+T: 3 1 : 14 : 30 : 0.09
+T: 3 1 : 14 : 142 : 0.09
+T: 3 1 : 14 : 158 : 0.81
+T: 3 2 : 14 : 14 : 0.1
+T: 3 2 : 14 : 142 : 0.9
+T: 3 3 : 14 : 14 : 0.01
+T: 3 3 : 14 : 46 : 0.09
+T: 3 3 : 14 : 142 : 0.09
+T: 3 3 : 14 : 174 : 0.81
+T: 3 4 : 14 : 0 : 1.0
+T: 3 5 : 14 : 0 : 1.0
+T: 4 0 : 14 : 0 : 1.0
+T: 4 1 : 14 : 0 : 1.0
+T: 4 2 : 14 : 0 : 1.0
+T: 4 3 : 14 : 0 : 1.0
+T: 4 4 : 14 : 0 : 1.0
+T: 4 5 : 14 : 0 : 1.0
+T: 5 0 : 14 : 0 : 1.0
+T: 5 1 : 14 : 0 : 1.0
+T: 5 2 : 14 : 0 : 1.0
+T: 5 3 : 14 : 0 : 1.0
+T: 5 4 : 14 : 0 : 1.0
+T: 5 5 : 14 : 0 : 1.0
+T: 0 0 : 15 : 15 : 1.0
+T: 0 1 : 15 : 15 : 0.1
+T: 0 1 : 15 : 31 : 0.9
+T: 0 2 : 15 : 15 : 1.0
+T: 0 3 : 15 : 15 : 0.1
+T: 0 3 : 15 : 47 : 0.9
+T: 0 4 : 15 : 0 : 1.0
+T: 0 5 : 15 : 0 : 1.0
+T: 1 0 : 15 : 15 : 0.1
+T: 1 0 : 15 : 79 : 0.9
+T: 1 1 : 15 : 15 : 0.01
+T: 1 1 : 15 : 31 : 0.09
+T: 1 1 : 15 : 79 : 0.09
+T: 1 1 : 15 : 95 : 0.81
+T: 1 2 : 15 : 15 : 0.1
+T: 1 2 : 15 : 79 : 0.9
+T: 1 3 : 15 : 15 : 0.01
+T: 1 3 : 15 : 47 : 0.09
+T: 1 3 : 15 : 79 : 0.09
+T: 1 3 : 15 : 111 : 0.81
+T: 1 4 : 15 : 0 : 1.0
+T: 1 5 : 15 : 0 : 1.0
+T: 2 0 : 15 : 15 : 1.0
+T: 2 1 : 15 : 15 : 0.1
+T: 2 1 : 15 : 31 : 0.9
+T: 2 2 : 15 : 15 : 1.0
+T: 2 3 : 15 : 15 : 0.1
+T: 2 3 : 15 : 47 : 0.9
+T: 2 4 : 15 : 0 : 1.0
+T: 2 5 : 15 : 0 : 1.0
+T: 3 0 : 15 : 15 : 0.1
+T: 3 0 : 15 : 143 : 0.9
+T: 3 1 : 15 : 15 : 0.01
+T: 3 1 : 15 : 31 : 0.09
+T: 3 1 : 15 : 143 : 0.09
+T: 3 1 : 15 : 159 : 0.81
+T: 3 2 : 15 : 15 : 0.1
+T: 3 2 : 15 : 143 : 0.9
+T: 3 3 : 15 : 15 : 0.01
+T: 3 3 : 15 : 47 : 0.09
+T: 3 3 : 15 : 143 : 0.09
+T: 3 3 : 15 : 175 : 0.81
+T: 3 4 : 15 : 0 : 1.0
+T: 3 5 : 15 : 0 : 1.0
+T: 4 0 : 15 : 0 : 1.0
+T: 4 1 : 15 : 0 : 1.0
+T: 4 2 : 15 : 0 : 1.0
+T: 4 3 : 15 : 0 : 1.0
+T: 4 4 : 15 : 0 : 1.0
+T: 4 5 : 15 : 0 : 1.0
+T: 5 0 : 15 : 0 : 1.0
+T: 5 1 : 15 : 0 : 1.0
+T: 5 2 : 15 : 0 : 1.0
+T: 5 3 : 15 : 0 : 1.0
+T: 5 4 : 15 : 0 : 1.0
+T: 5 5 : 15 : 0 : 1.0
+T: 0 0 : 16 : 0 : 0.9
+T: 0 0 : 16 : 16 : 0.1
+T: 0 1 : 16 : 16 : 1.0
+T: 0 2 : 16 : 16 : 1.0
+T: 0 3 : 16 : 16 : 0.1
+T: 0 3 : 16 : 48 : 0.9
+T: 0 4 : 16 : 18 : 1.0
+T: 0 5 : 16 : 18 : 1.0
+T: 1 0 : 16 : 0 : 0.09
+T: 1 0 : 16 : 16 : 0.01
+T: 1 0 : 16 : 64 : 0.81
+T: 1 0 : 16 : 80 : 0.09
+T: 1 1 : 16 : 16 : 0.1
+T: 1 1 : 16 : 80 : 0.9
+T: 1 2 : 16 : 16 : 0.1
+T: 1 2 : 16 : 80 : 0.9
+T: 1 3 : 16 : 16 : 0.01
+T: 1 3 : 16 : 48 : 0.09
+T: 1 3 : 16 : 80 : 0.09
+T: 1 3 : 16 : 112 : 0.81
+T: 1 4 : 16 : 18 : 0.1
+T: 1 4 : 16 : 82 : 0.9
+T: 1 5 : 16 : 18 : 0.1
+T: 1 5 : 16 : 82 : 0.9
+T: 2 0 : 16 : 0 : 0.9
+T: 2 0 : 16 : 16 : 0.1
+T: 2 1 : 16 : 16 : 1.0
+T: 2 2 : 16 : 16 : 1.0
+T: 2 3 : 16 : 16 : 0.1
+T: 2 3 : 16 : 48 : 0.9
+T: 2 4 : 16 : 18 : 1.0
+T: 2 5 : 16 : 18 : 1.0
+T: 3 0 : 16 : 0 : 0.09
+T: 3 0 : 16 : 16 : 0.01
+T: 3 0 : 16 : 128 : 0.81
+T: 3 0 : 16 : 144 : 0.09
+T: 3 1 : 16 : 16 : 0.1
+T: 3 1 : 16 : 144 : 0.9
+T: 3 2 : 16 : 16 : 0.1
+T: 3 2 : 16 : 144 : 0.9
+T: 3 3 : 16 : 16 : 0.01
+T: 3 3 : 16 : 48 : 0.09
+T: 3 3 : 16 : 144 : 0.09
+T: 3 3 : 16 : 176 : 0.81
+T: 3 4 : 16 : 18 : 0.1
+T: 3 4 : 16 : 146 : 0.9
+T: 3 5 : 16 : 18 : 0.1
+T: 3 5 : 16 : 146 : 0.9
+T: 4 0 : 16 : 1 : 0.9
+T: 4 0 : 16 : 17 : 0.1
+T: 4 1 : 16 : 17 : 1.0
+T: 4 2 : 16 : 17 : 1.0
+T: 4 3 : 16 : 17 : 0.1
+T: 4 3 : 16 : 49 : 0.9
+T: 4 4 : 16 : 19 : 1.0
+T: 4 5 : 16 : 19 : 1.0
+T: 5 0 : 16 : 1 : 0.9
+T: 5 0 : 16 : 17 : 0.1
+T: 5 1 : 16 : 17 : 1.0
+T: 5 2 : 16 : 17 : 1.0
+T: 5 3 : 16 : 17 : 0.1
+T: 5 3 : 16 : 49 : 0.9
+T: 5 4 : 16 : 19 : 1.0
+T: 5 5 : 16 : 19 : 1.0
+T: 0 0 : 17 : 1 : 0.9
+T: 0 0 : 17 : 17 : 0.1
+T: 0 1 : 17 : 17 : 1.0
+T: 0 2 : 17 : 17 : 1.0
+T: 0 3 : 17 : 17 : 0.1
+T: 0 3 : 17 : 49 : 0.9
+T: 0 4 : 17 : 19 : 1.0
+T: 0 5 : 17 : 19 : 1.0
+T: 1 0 : 17 : 1 : 0.09
+T: 1 0 : 17 : 17 : 0.01
+T: 1 0 : 17 : 65 : 0.81
+T: 1 0 : 17 : 81 : 0.09
+T: 1 1 : 17 : 17 : 0.1
+T: 1 1 : 17 : 81 : 0.9
+T: 1 2 : 17 : 17 : 0.1
+T: 1 2 : 17 : 81 : 0.9
+T: 1 3 : 17 : 17 : 0.01
+T: 1 3 : 17 : 49 : 0.09
+T: 1 3 : 17 : 81 : 0.09
+T: 1 3 : 17 : 113 : 0.81
+T: 1 4 : 17 : 19 : 0.1
+T: 1 4 : 17 : 83 : 0.9
+T: 1 5 : 17 : 19 : 0.1
+T: 1 5 : 17 : 83 : 0.9
+T: 2 0 : 17 : 1 : 0.9
+T: 2 0 : 17 : 17 : 0.1
+T: 2 1 : 17 : 17 : 1.0
+T: 2 2 : 17 : 17 : 1.0
+T: 2 3 : 17 : 17 : 0.1
+T: 2 3 : 17 : 49 : 0.9
+T: 2 4 : 17 : 19 : 1.0
+T: 2 5 : 17 : 19 : 1.0
+T: 3 0 : 17 : 1 : 0.09
+T: 3 0 : 17 : 17 : 0.01
+T: 3 0 : 17 : 129 : 0.81
+T: 3 0 : 17 : 145 : 0.09
+T: 3 1 : 17 : 17 : 0.1
+T: 3 1 : 17 : 145 : 0.9
+T: 3 2 : 17 : 17 : 0.1
+T: 3 2 : 17 : 145 : 0.9
+T: 3 3 : 17 : 17 : 0.01
+T: 3 3 : 17 : 49 : 0.09
+T: 3 3 : 17 : 145 : 0.09
+T: 3 3 : 17 : 177 : 0.81
+T: 3 4 : 17 : 19 : 0.1
+T: 3 4 : 17 : 147 : 0.9
+T: 3 5 : 17 : 19 : 0.1
+T: 3 5 : 17 : 147 : 0.9
+T: 4 0 : 17 : 1 : 0.9
+T: 4 0 : 17 : 17 : 0.1
+T: 4 1 : 17 : 17 : 1.0
+T: 4 2 : 17 : 17 : 1.0
+T: 4 3 : 17 : 17 : 0.1
+T: 4 3 : 17 : 49 : 0.9
+T: 4 4 : 17 : 19 : 1.0
+T: 4 5 : 17 : 19 : 1.0
+T: 5 0 : 17 : 1 : 0.9
+T: 5 0 : 17 : 17 : 0.1
+T: 5 1 : 17 : 17 : 1.0
+T: 5 2 : 17 : 17 : 1.0
+T: 5 3 : 17 : 17 : 0.1
+T: 5 3 : 17 : 49 : 0.9
+T: 5 4 : 17 : 19 : 1.0
+T: 5 5 : 17 : 19 : 1.0
+T: 0 0 : 18 : 2 : 0.9
+T: 0 0 : 18 : 18 : 0.1
+T: 0 1 : 18 : 18 : 1.0
+T: 0 2 : 18 : 18 : 1.0
+T: 0 3 : 18 : 18 : 0.1
+T: 0 3 : 18 : 50 : 0.9
+T: 0 4 : 18 : 18 : 1.0
+T: 0 5 : 18 : 18 : 1.0
+T: 1 0 : 18 : 2 : 0.09
+T: 1 0 : 18 : 18 : 0.01
+T: 1 0 : 18 : 66 : 0.81
+T: 1 0 : 18 : 82 : 0.09
+T: 1 1 : 18 : 18 : 0.1
+T: 1 1 : 18 : 82 : 0.9
+T: 1 2 : 18 : 18 : 0.1
+T: 1 2 : 18 : 82 : 0.9
+T: 1 3 : 18 : 18 : 0.01
+T: 1 3 : 18 : 50 : 0.09
+T: 1 3 : 18 : 82 : 0.09
+T: 1 3 : 18 : 114 : 0.81
+T: 1 4 : 18 : 18 : 0.1
+T: 1 4 : 18 : 82 : 0.9
+T: 1 5 : 18 : 18 : 0.1
+T: 1 5 : 18 : 82 : 0.9
+T: 2 0 : 18 : 2 : 0.9
+T: 2 0 : 18 : 18 : 0.1
+T: 2 1 : 18 : 18 : 1.0
+T: 2 2 : 18 : 18 : 1.0
+T: 2 3 : 18 : 18 : 0.1
+T: 2 3 : 18 : 50 : 0.9
+T: 2 4 : 18 : 18 : 1.0
+T: 2 5 : 18 : 18 : 1.0
+T: 3 0 : 18 : 2 : 0.09
+T: 3 0 : 18 : 18 : 0.01
+T: 3 0 : 18 : 130 : 0.81
+T: 3 0 : 18 : 146 : 0.09
+T: 3 1 : 18 : 18 : 0.1
+T: 3 1 : 18 : 146 : 0.9
+T: 3 2 : 18 : 18 : 0.1
+T: 3 2 : 18 : 146 : 0.9
+T: 3 3 : 18 : 18 : 0.01
+T: 3 3 : 18 : 50 : 0.09
+T: 3 3 : 18 : 146 : 0.09
+T: 3 3 : 18 : 178 : 0.81
+T: 3 4 : 18 : 18 : 0.1
+T: 3 4 : 18 : 146 : 0.9
+T: 3 5 : 18 : 18 : 0.1
+T: 3 5 : 18 : 146 : 0.9
+T: 4 0 : 18 : 3 : 0.9
+T: 4 0 : 18 : 19 : 0.1
+T: 4 1 : 18 : 19 : 1.0
+T: 4 2 : 18 : 19 : 1.0
+T: 4 3 : 18 : 19 : 0.1
+T: 4 3 : 18 : 51 : 0.9
+T: 4 4 : 18 : 19 : 1.0
+T: 4 5 : 18 : 19 : 1.0
+T: 5 0 : 18 : 3 : 0.9
+T: 5 0 : 18 : 19 : 0.1
+T: 5 1 : 18 : 19 : 1.0
+T: 5 2 : 18 : 19 : 1.0
+T: 5 3 : 18 : 19 : 0.1
+T: 5 3 : 18 : 51 : 0.9
+T: 5 4 : 18 : 19 : 1.0
+T: 5 5 : 18 : 19 : 1.0
+T: 0 0 : 19 : 3 : 0.9
+T: 0 0 : 19 : 19 : 0.1
+T: 0 1 : 19 : 19 : 1.0
+T: 0 2 : 19 : 19 : 1.0
+T: 0 3 : 19 : 19 : 0.1
+T: 0 3 : 19 : 51 : 0.9
+T: 0 4 : 19 : 19 : 1.0
+T: 0 5 : 19 : 19 : 1.0
+T: 1 0 : 19 : 3 : 0.09
+T: 1 0 : 19 : 19 : 0.01
+T: 1 0 : 19 : 67 : 0.81
+T: 1 0 : 19 : 83 : 0.09
+T: 1 1 : 19 : 19 : 0.1
+T: 1 1 : 19 : 83 : 0.9
+T: 1 2 : 19 : 19 : 0.1
+T: 1 2 : 19 : 83 : 0.9
+T: 1 3 : 19 : 19 : 0.01
+T: 1 3 : 19 : 51 : 0.09
+T: 1 3 : 19 : 83 : 0.09
+T: 1 3 : 19 : 115 : 0.81
+T: 1 4 : 19 : 19 : 0.1
+T: 1 4 : 19 : 83 : 0.9
+T: 1 5 : 19 : 19 : 0.1
+T: 1 5 : 19 : 83 : 0.9
+T: 2 0 : 19 : 3 : 0.9
+T: 2 0 : 19 : 19 : 0.1
+T: 2 1 : 19 : 19 : 1.0
+T: 2 2 : 19 : 19 : 1.0
+T: 2 3 : 19 : 19 : 0.1
+T: 2 3 : 19 : 51 : 0.9
+T: 2 4 : 19 : 19 : 1.0
+T: 2 5 : 19 : 19 : 1.0
+T: 3 0 : 19 : 3 : 0.09
+T: 3 0 : 19 : 19 : 0.01
+T: 3 0 : 19 : 131 : 0.81
+T: 3 0 : 19 : 147 : 0.09
+T: 3 1 : 19 : 19 : 0.1
+T: 3 1 : 19 : 147 : 0.9
+T: 3 2 : 19 : 19 : 0.1
+T: 3 2 : 19 : 147 : 0.9
+T: 3 3 : 19 : 19 : 0.01
+T: 3 3 : 19 : 51 : 0.09
+T: 3 3 : 19 : 147 : 0.09
+T: 3 3 : 19 : 179 : 0.81
+T: 3 4 : 19 : 19 : 0.1
+T: 3 4 : 19 : 147 : 0.9
+T: 3 5 : 19 : 19 : 0.1
+T: 3 5 : 19 : 147 : 0.9
+T: 4 0 : 19 : 3 : 0.9
+T: 4 0 : 19 : 19 : 0.1
+T: 4 1 : 19 : 19 : 1.0
+T: 4 2 : 19 : 19 : 1.0
+T: 4 3 : 19 : 19 : 0.1
+T: 4 3 : 19 : 51 : 0.9
+T: 4 4 : 19 : 19 : 1.0
+T: 4 5 : 19 : 19 : 1.0
+T: 5 0 : 19 : 3 : 0.9
+T: 5 0 : 19 : 19 : 0.1
+T: 5 1 : 19 : 19 : 1.0
+T: 5 2 : 19 : 19 : 1.0
+T: 5 3 : 19 : 19 : 0.1
+T: 5 3 : 19 : 51 : 0.9
+T: 5 4 : 19 : 19 : 1.0
+T: 5 5 : 19 : 19 : 1.0
+T: 0 0 : 20 : 4 : 0.9
+T: 0 0 : 20 : 20 : 0.1
+T: 0 1 : 20 : 20 : 1.0
+T: 0 2 : 20 : 20 : 1.0
+T: 0 3 : 20 : 20 : 0.1
+T: 0 3 : 20 : 52 : 0.9
+T: 0 4 : 20 : 22 : 1.0
+T: 0 5 : 20 : 22 : 1.0
+T: 1 0 : 20 : 4 : 0.09
+T: 1 0 : 20 : 20 : 0.01
+T: 1 0 : 20 : 68 : 0.81
+T: 1 0 : 20 : 84 : 0.09
+T: 1 1 : 20 : 20 : 0.1
+T: 1 1 : 20 : 84 : 0.9
+T: 1 2 : 20 : 20 : 0.1
+T: 1 2 : 20 : 84 : 0.9
+T: 1 3 : 20 : 20 : 0.01
+T: 1 3 : 20 : 52 : 0.09
+T: 1 3 : 20 : 84 : 0.09
+T: 1 3 : 20 : 116 : 0.81
+T: 1 4 : 20 : 22 : 0.1
+T: 1 4 : 20 : 86 : 0.9
+T: 1 5 : 20 : 22 : 0.1
+T: 1 5 : 20 : 86 : 0.9
+T: 2 0 : 20 : 4 : 0.9
+T: 2 0 : 20 : 20 : 0.1
+T: 2 1 : 20 : 20 : 1.0
+T: 2 2 : 20 : 20 : 1.0
+T: 2 3 : 20 : 20 : 0.1
+T: 2 3 : 20 : 52 : 0.9
+T: 2 4 : 20 : 22 : 1.0
+T: 2 5 : 20 : 22 : 1.0
+T: 3 0 : 20 : 4 : 0.09
+T: 3 0 : 20 : 20 : 0.01
+T: 3 0 : 20 : 132 : 0.81
+T: 3 0 : 20 : 148 : 0.09
+T: 3 1 : 20 : 20 : 0.1
+T: 3 1 : 20 : 148 : 0.9
+T: 3 2 : 20 : 20 : 0.1
+T: 3 2 : 20 : 148 : 0.9
+T: 3 3 : 20 : 20 : 0.01
+T: 3 3 : 20 : 52 : 0.09
+T: 3 3 : 20 : 148 : 0.09
+T: 3 3 : 20 : 180 : 0.81
+T: 3 4 : 20 : 22 : 0.1
+T: 3 4 : 20 : 150 : 0.9
+T: 3 5 : 20 : 22 : 0.1
+T: 3 5 : 20 : 150 : 0.9
+T: 4 0 : 20 : 5 : 0.9
+T: 4 0 : 20 : 21 : 0.1
+T: 4 1 : 20 : 21 : 1.0
+T: 4 2 : 20 : 21 : 1.0
+T: 4 3 : 20 : 21 : 0.1
+T: 4 3 : 20 : 53 : 0.9
+T: 4 4 : 20 : 23 : 1.0
+T: 4 5 : 20 : 23 : 1.0
+T: 5 0 : 20 : 5 : 0.9
+T: 5 0 : 20 : 21 : 0.1
+T: 5 1 : 20 : 21 : 1.0
+T: 5 2 : 20 : 21 : 1.0
+T: 5 3 : 20 : 21 : 0.1
+T: 5 3 : 20 : 53 : 0.9
+T: 5 4 : 20 : 23 : 1.0
+T: 5 5 : 20 : 23 : 1.0
+T: 0 0 : 21 : 5 : 0.9
+T: 0 0 : 21 : 21 : 0.1
+T: 0 1 : 21 : 21 : 1.0
+T: 0 2 : 21 : 21 : 1.0
+T: 0 3 : 21 : 21 : 0.1
+T: 0 3 : 21 : 53 : 0.9
+T: 0 4 : 21 : 23 : 1.0
+T: 0 5 : 21 : 23 : 1.0
+T: 1 0 : 21 : 5 : 0.09
+T: 1 0 : 21 : 21 : 0.01
+T: 1 0 : 21 : 69 : 0.81
+T: 1 0 : 21 : 85 : 0.09
+T: 1 1 : 21 : 21 : 0.1
+T: 1 1 : 21 : 85 : 0.9
+T: 1 2 : 21 : 21 : 0.1
+T: 1 2 : 21 : 85 : 0.9
+T: 1 3 : 21 : 21 : 0.01
+T: 1 3 : 21 : 53 : 0.09
+T: 1 3 : 21 : 85 : 0.09
+T: 1 3 : 21 : 117 : 0.81
+T: 1 4 : 21 : 23 : 0.1
+T: 1 4 : 21 : 87 : 0.9
+T: 1 5 : 21 : 23 : 0.1
+T: 1 5 : 21 : 87 : 0.9
+T: 2 0 : 21 : 5 : 0.9
+T: 2 0 : 21 : 21 : 0.1
+T: 2 1 : 21 : 21 : 1.0
+T: 2 2 : 21 : 21 : 1.0
+T: 2 3 : 21 : 21 : 0.1
+T: 2 3 : 21 : 53 : 0.9
+T: 2 4 : 21 : 23 : 1.0
+T: 2 5 : 21 : 23 : 1.0
+T: 3 0 : 21 : 5 : 0.09
+T: 3 0 : 21 : 21 : 0.01
+T: 3 0 : 21 : 133 : 0.81
+T: 3 0 : 21 : 149 : 0.09
+T: 3 1 : 21 : 21 : 0.1
+T: 3 1 : 21 : 149 : 0.9
+T: 3 2 : 21 : 21 : 0.1
+T: 3 2 : 21 : 149 : 0.9
+T: 3 3 : 21 : 21 : 0.01
+T: 3 3 : 21 : 53 : 0.09
+T: 3 3 : 21 : 149 : 0.09
+T: 3 3 : 21 : 181 : 0.81
+T: 3 4 : 21 : 23 : 0.1
+T: 3 4 : 21 : 151 : 0.9
+T: 3 5 : 21 : 23 : 0.1
+T: 3 5 : 21 : 151 : 0.9
+T: 4 0 : 21 : 5 : 0.9
+T: 4 0 : 21 : 21 : 0.1
+T: 4 1 : 21 : 21 : 1.0
+T: 4 2 : 21 : 21 : 1.0
+T: 4 3 : 21 : 21 : 0.1
+T: 4 3 : 21 : 53 : 0.9
+T: 4 4 : 21 : 23 : 1.0
+T: 4 5 : 21 : 23 : 1.0
+T: 5 0 : 21 : 5 : 0.9
+T: 5 0 : 21 : 21 : 0.1
+T: 5 1 : 21 : 21 : 1.0
+T: 5 2 : 21 : 21 : 1.0
+T: 5 3 : 21 : 21 : 0.1
+T: 5 3 : 21 : 53 : 0.9
+T: 5 4 : 21 : 23 : 1.0
+T: 5 5 : 21 : 23 : 1.0
+T: 0 0 : 22 : 6 : 0.9
+T: 0 0 : 22 : 22 : 0.1
+T: 0 1 : 22 : 22 : 1.0
+T: 0 2 : 22 : 22 : 1.0
+T: 0 3 : 22 : 22 : 0.1
+T: 0 3 : 22 : 54 : 0.9
+T: 0 4 : 22 : 22 : 1.0
+T: 0 5 : 22 : 22 : 1.0
+T: 1 0 : 22 : 6 : 0.09
+T: 1 0 : 22 : 22 : 0.01
+T: 1 0 : 22 : 70 : 0.81
+T: 1 0 : 22 : 86 : 0.09
+T: 1 1 : 22 : 22 : 0.1
+T: 1 1 : 22 : 86 : 0.9
+T: 1 2 : 22 : 22 : 0.1
+T: 1 2 : 22 : 86 : 0.9
+T: 1 3 : 22 : 22 : 0.01
+T: 1 3 : 22 : 54 : 0.09
+T: 1 3 : 22 : 86 : 0.09
+T: 1 3 : 22 : 118 : 0.81
+T: 1 4 : 22 : 22 : 0.1
+T: 1 4 : 22 : 86 : 0.9
+T: 1 5 : 22 : 22 : 0.1
+T: 1 5 : 22 : 86 : 0.9
+T: 2 0 : 22 : 6 : 0.9
+T: 2 0 : 22 : 22 : 0.1
+T: 2 1 : 22 : 22 : 1.0
+T: 2 2 : 22 : 22 : 1.0
+T: 2 3 : 22 : 22 : 0.1
+T: 2 3 : 22 : 54 : 0.9
+T: 2 4 : 22 : 22 : 1.0
+T: 2 5 : 22 : 22 : 1.0
+T: 3 0 : 22 : 6 : 0.09
+T: 3 0 : 22 : 22 : 0.01
+T: 3 0 : 22 : 134 : 0.81
+T: 3 0 : 22 : 150 : 0.09
+T: 3 1 : 22 : 22 : 0.1
+T: 3 1 : 22 : 150 : 0.9
+T: 3 2 : 22 : 22 : 0.1
+T: 3 2 : 22 : 150 : 0.9
+T: 3 3 : 22 : 22 : 0.01
+T: 3 3 : 22 : 54 : 0.09
+T: 3 3 : 22 : 150 : 0.09
+T: 3 3 : 22 : 182 : 0.81
+T: 3 4 : 22 : 22 : 0.1
+T: 3 4 : 22 : 150 : 0.9
+T: 3 5 : 22 : 22 : 0.1
+T: 3 5 : 22 : 150 : 0.9
+T: 4 0 : 22 : 7 : 0.9
+T: 4 0 : 22 : 23 : 0.1
+T: 4 1 : 22 : 23 : 1.0
+T: 4 2 : 22 : 23 : 1.0
+T: 4 3 : 22 : 23 : 0.1
+T: 4 3 : 22 : 55 : 0.9
+T: 4 4 : 22 : 23 : 1.0
+T: 4 5 : 22 : 23 : 1.0
+T: 5 0 : 22 : 7 : 0.9
+T: 5 0 : 22 : 23 : 0.1
+T: 5 1 : 22 : 23 : 1.0
+T: 5 2 : 22 : 23 : 1.0
+T: 5 3 : 22 : 23 : 0.1
+T: 5 3 : 22 : 55 : 0.9
+T: 5 4 : 22 : 23 : 1.0
+T: 5 5 : 22 : 23 : 1.0
+T: 0 0 : 23 : 7 : 0.9
+T: 0 0 : 23 : 23 : 0.1
+T: 0 1 : 23 : 23 : 1.0
+T: 0 2 : 23 : 23 : 1.0
+T: 0 3 : 23 : 23 : 0.1
+T: 0 3 : 23 : 55 : 0.9
+T: 0 4 : 23 : 23 : 1.0
+T: 0 5 : 23 : 23 : 1.0
+T: 1 0 : 23 : 7 : 0.09
+T: 1 0 : 23 : 23 : 0.01
+T: 1 0 : 23 : 71 : 0.81
+T: 1 0 : 23 : 87 : 0.09
+T: 1 1 : 23 : 23 : 0.1
+T: 1 1 : 23 : 87 : 0.9
+T: 1 2 : 23 : 23 : 0.1
+T: 1 2 : 23 : 87 : 0.9
+T: 1 3 : 23 : 23 : 0.01
+T: 1 3 : 23 : 55 : 0.09
+T: 1 3 : 23 : 87 : 0.09
+T: 1 3 : 23 : 119 : 0.81
+T: 1 4 : 23 : 23 : 0.1
+T: 1 4 : 23 : 87 : 0.9
+T: 1 5 : 23 : 23 : 0.1
+T: 1 5 : 23 : 87 : 0.9
+T: 2 0 : 23 : 7 : 0.9
+T: 2 0 : 23 : 23 : 0.1
+T: 2 1 : 23 : 23 : 1.0
+T: 2 2 : 23 : 23 : 1.0
+T: 2 3 : 23 : 23 : 0.1
+T: 2 3 : 23 : 55 : 0.9
+T: 2 4 : 23 : 23 : 1.0
+T: 2 5 : 23 : 23 : 1.0
+T: 3 0 : 23 : 7 : 0.09
+T: 3 0 : 23 : 23 : 0.01
+T: 3 0 : 23 : 135 : 0.81
+T: 3 0 : 23 : 151 : 0.09
+T: 3 1 : 23 : 23 : 0.1
+T: 3 1 : 23 : 151 : 0.9
+T: 3 2 : 23 : 23 : 0.1
+T: 3 2 : 23 : 151 : 0.9
+T: 3 3 : 23 : 23 : 0.01
+T: 3 3 : 23 : 55 : 0.09
+T: 3 3 : 23 : 151 : 0.09
+T: 3 3 : 23 : 183 : 0.81
+T: 3 4 : 23 : 23 : 0.1
+T: 3 4 : 23 : 151 : 0.9
+T: 3 5 : 23 : 23 : 0.1
+T: 3 5 : 23 : 151 : 0.9
+T: 4 0 : 23 : 7 : 0.9
+T: 4 0 : 23 : 23 : 0.1
+T: 4 1 : 23 : 23 : 1.0
+T: 4 2 : 23 : 23 : 1.0
+T: 4 3 : 23 : 23 : 0.1
+T: 4 3 : 23 : 55 : 0.9
+T: 4 4 : 23 : 23 : 1.0
+T: 4 5 : 23 : 23 : 1.0
+T: 5 0 : 23 : 7 : 0.9
+T: 5 0 : 23 : 23 : 0.1
+T: 5 1 : 23 : 23 : 1.0
+T: 5 2 : 23 : 23 : 1.0
+T: 5 3 : 23 : 23 : 0.1
+T: 5 3 : 23 : 55 : 0.9
+T: 5 4 : 23 : 23 : 1.0
+T: 5 5 : 23 : 23 : 1.0
+T: 0 0 : 24 : 8 : 0.9
+T: 0 0 : 24 : 24 : 0.1
+T: 0 1 : 24 : 24 : 1.0
+T: 0 2 : 24 : 24 : 1.0
+T: 0 3 : 24 : 24 : 0.1
+T: 0 3 : 24 : 56 : 0.9
+T: 0 4 : 24 : 26 : 1.0
+T: 0 5 : 24 : 26 : 1.0
+T: 1 0 : 24 : 8 : 0.09
+T: 1 0 : 24 : 24 : 0.01
+T: 1 0 : 24 : 72 : 0.81
+T: 1 0 : 24 : 88 : 0.09
+T: 1 1 : 24 : 24 : 0.1
+T: 1 1 : 24 : 88 : 0.9
+T: 1 2 : 24 : 24 : 0.1
+T: 1 2 : 24 : 88 : 0.9
+T: 1 3 : 24 : 24 : 0.01
+T: 1 3 : 24 : 56 : 0.09
+T: 1 3 : 24 : 88 : 0.09
+T: 1 3 : 24 : 120 : 0.81
+T: 1 4 : 24 : 26 : 0.1
+T: 1 4 : 24 : 90 : 0.9
+T: 1 5 : 24 : 26 : 0.1
+T: 1 5 : 24 : 90 : 0.9
+T: 2 0 : 24 : 8 : 0.9
+T: 2 0 : 24 : 24 : 0.1
+T: 2 1 : 24 : 24 : 1.0
+T: 2 2 : 24 : 24 : 1.0
+T: 2 3 : 24 : 24 : 0.1
+T: 2 3 : 24 : 56 : 0.9
+T: 2 4 : 24 : 26 : 1.0
+T: 2 5 : 24 : 26 : 1.0
+T: 3 0 : 24 : 8 : 0.09
+T: 3 0 : 24 : 24 : 0.01
+T: 3 0 : 24 : 136 : 0.81
+T: 3 0 : 24 : 152 : 0.09
+T: 3 1 : 24 : 24 : 0.1
+T: 3 1 : 24 : 152 : 0.9
+T: 3 2 : 24 : 24 : 0.1
+T: 3 2 : 24 : 152 : 0.9
+T: 3 3 : 24 : 24 : 0.01
+T: 3 3 : 24 : 56 : 0.09
+T: 3 3 : 24 : 152 : 0.09
+T: 3 3 : 24 : 184 : 0.81
+T: 3 4 : 24 : 26 : 0.1
+T: 3 4 : 24 : 154 : 0.9
+T: 3 5 : 24 : 26 : 0.1
+T: 3 5 : 24 : 154 : 0.9
+T: 4 0 : 24 : 9 : 0.9
+T: 4 0 : 24 : 25 : 0.1
+T: 4 1 : 24 : 25 : 1.0
+T: 4 2 : 24 : 25 : 1.0
+T: 4 3 : 24 : 25 : 0.1
+T: 4 3 : 24 : 57 : 0.9
+T: 4 4 : 24 : 27 : 1.0
+T: 4 5 : 24 : 27 : 1.0
+T: 5 0 : 24 : 9 : 0.9
+T: 5 0 : 24 : 25 : 0.1
+T: 5 1 : 24 : 25 : 1.0
+T: 5 2 : 24 : 25 : 1.0
+T: 5 3 : 24 : 25 : 0.1
+T: 5 3 : 24 : 57 : 0.9
+T: 5 4 : 24 : 27 : 1.0
+T: 5 5 : 24 : 27 : 1.0
+T: 0 0 : 25 : 9 : 0.9
+T: 0 0 : 25 : 25 : 0.1
+T: 0 1 : 25 : 25 : 1.0
+T: 0 2 : 25 : 25 : 1.0
+T: 0 3 : 25 : 25 : 0.1
+T: 0 3 : 25 : 57 : 0.9
+T: 0 4 : 25 : 27 : 1.0
+T: 0 5 : 25 : 27 : 1.0
+T: 1 0 : 25 : 9 : 0.09
+T: 1 0 : 25 : 25 : 0.01
+T: 1 0 : 25 : 73 : 0.81
+T: 1 0 : 25 : 89 : 0.09
+T: 1 1 : 25 : 25 : 0.1
+T: 1 1 : 25 : 89 : 0.9
+T: 1 2 : 25 : 25 : 0.1
+T: 1 2 : 25 : 89 : 0.9
+T: 1 3 : 25 : 25 : 0.01
+T: 1 3 : 25 : 57 : 0.09
+T: 1 3 : 25 : 89 : 0.09
+T: 1 3 : 25 : 121 : 0.81
+T: 1 4 : 25 : 27 : 0.1
+T: 1 4 : 25 : 91 : 0.9
+T: 1 5 : 25 : 27 : 0.1
+T: 1 5 : 25 : 91 : 0.9
+T: 2 0 : 25 : 9 : 0.9
+T: 2 0 : 25 : 25 : 0.1
+T: 2 1 : 25 : 25 : 1.0
+T: 2 2 : 25 : 25 : 1.0
+T: 2 3 : 25 : 25 : 0.1
+T: 2 3 : 25 : 57 : 0.9
+T: 2 4 : 25 : 27 : 1.0
+T: 2 5 : 25 : 27 : 1.0
+T: 3 0 : 25 : 9 : 0.09
+T: 3 0 : 25 : 25 : 0.01
+T: 3 0 : 25 : 137 : 0.81
+T: 3 0 : 25 : 153 : 0.09
+T: 3 1 : 25 : 25 : 0.1
+T: 3 1 : 25 : 153 : 0.9
+T: 3 2 : 25 : 25 : 0.1
+T: 3 2 : 25 : 153 : 0.9
+T: 3 3 : 25 : 25 : 0.01
+T: 3 3 : 25 : 57 : 0.09
+T: 3 3 : 25 : 153 : 0.09
+T: 3 3 : 25 : 185 : 0.81
+T: 3 4 : 25 : 27 : 0.1
+T: 3 4 : 25 : 155 : 0.9
+T: 3 5 : 25 : 27 : 0.1
+T: 3 5 : 25 : 155 : 0.9
+T: 4 0 : 25 : 9 : 0.9
+T: 4 0 : 25 : 25 : 0.1
+T: 4 1 : 25 : 25 : 1.0
+T: 4 2 : 25 : 25 : 1.0
+T: 4 3 : 25 : 25 : 0.1
+T: 4 3 : 25 : 57 : 0.9
+T: 4 4 : 25 : 27 : 1.0
+T: 4 5 : 25 : 27 : 1.0
+T: 5 0 : 25 : 9 : 0.9
+T: 5 0 : 25 : 25 : 0.1
+T: 5 1 : 25 : 25 : 1.0
+T: 5 2 : 25 : 25 : 1.0
+T: 5 3 : 25 : 25 : 0.1
+T: 5 3 : 25 : 57 : 0.9
+T: 5 4 : 25 : 27 : 1.0
+T: 5 5 : 25 : 27 : 1.0
+T: 0 0 : 26 : 10 : 0.9
+T: 0 0 : 26 : 26 : 0.1
+T: 0 1 : 26 : 26 : 1.0
+T: 0 2 : 26 : 26 : 1.0
+T: 0 3 : 26 : 26 : 0.1
+T: 0 3 : 26 : 58 : 0.9
+T: 0 4 : 26 : 26 : 1.0
+T: 0 5 : 26 : 26 : 1.0
+T: 1 0 : 26 : 10 : 0.09
+T: 1 0 : 26 : 26 : 0.01
+T: 1 0 : 26 : 74 : 0.81
+T: 1 0 : 26 : 90 : 0.09
+T: 1 1 : 26 : 26 : 0.1
+T: 1 1 : 26 : 90 : 0.9
+T: 1 2 : 26 : 26 : 0.1
+T: 1 2 : 26 : 90 : 0.9
+T: 1 3 : 26 : 26 : 0.01
+T: 1 3 : 26 : 58 : 0.09
+T: 1 3 : 26 : 90 : 0.09
+T: 1 3 : 26 : 122 : 0.81
+T: 1 4 : 26 : 26 : 0.1
+T: 1 4 : 26 : 90 : 0.9
+T: 1 5 : 26 : 26 : 0.1
+T: 1 5 : 26 : 90 : 0.9
+T: 2 0 : 26 : 10 : 0.9
+T: 2 0 : 26 : 26 : 0.1
+T: 2 1 : 26 : 26 : 1.0
+T: 2 2 : 26 : 26 : 1.0
+T: 2 3 : 26 : 26 : 0.1
+T: 2 3 : 26 : 58 : 0.9
+T: 2 4 : 26 : 26 : 1.0
+T: 2 5 : 26 : 26 : 1.0
+T: 3 0 : 26 : 10 : 0.09
+T: 3 0 : 26 : 26 : 0.01
+T: 3 0 : 26 : 138 : 0.81
+T: 3 0 : 26 : 154 : 0.09
+T: 3 1 : 26 : 26 : 0.1
+T: 3 1 : 26 : 154 : 0.9
+T: 3 2 : 26 : 26 : 0.1
+T: 3 2 : 26 : 154 : 0.9
+T: 3 3 : 26 : 26 : 0.01
+T: 3 3 : 26 : 58 : 0.09
+T: 3 3 : 26 : 154 : 0.09
+T: 3 3 : 26 : 186 : 0.81
+T: 3 4 : 26 : 26 : 0.1
+T: 3 4 : 26 : 154 : 0.9
+T: 3 5 : 26 : 26 : 0.1
+T: 3 5 : 26 : 154 : 0.9
+T: 4 0 : 26 : 11 : 0.9
+T: 4 0 : 26 : 27 : 0.1
+T: 4 1 : 26 : 27 : 1.0
+T: 4 2 : 26 : 27 : 1.0
+T: 4 3 : 26 : 27 : 0.1
+T: 4 3 : 26 : 59 : 0.9
+T: 4 4 : 26 : 27 : 1.0
+T: 4 5 : 26 : 27 : 1.0
+T: 5 0 : 26 : 11 : 0.9
+T: 5 0 : 26 : 27 : 0.1
+T: 5 1 : 26 : 27 : 1.0
+T: 5 2 : 26 : 27 : 1.0
+T: 5 3 : 26 : 27 : 0.1
+T: 5 3 : 26 : 59 : 0.9
+T: 5 4 : 26 : 27 : 1.0
+T: 5 5 : 26 : 27 : 1.0
+T: 0 0 : 27 : 11 : 0.9
+T: 0 0 : 27 : 27 : 0.1
+T: 0 1 : 27 : 27 : 1.0
+T: 0 2 : 27 : 27 : 1.0
+T: 0 3 : 27 : 27 : 0.1
+T: 0 3 : 27 : 59 : 0.9
+T: 0 4 : 27 : 27 : 1.0
+T: 0 5 : 27 : 27 : 1.0
+T: 1 0 : 27 : 11 : 0.09
+T: 1 0 : 27 : 27 : 0.01
+T: 1 0 : 27 : 75 : 0.81
+T: 1 0 : 27 : 91 : 0.09
+T: 1 1 : 27 : 27 : 0.1
+T: 1 1 : 27 : 91 : 0.9
+T: 1 2 : 27 : 27 : 0.1
+T: 1 2 : 27 : 91 : 0.9
+T: 1 3 : 27 : 27 : 0.01
+T: 1 3 : 27 : 59 : 0.09
+T: 1 3 : 27 : 91 : 0.09
+T: 1 3 : 27 : 123 : 0.81
+T: 1 4 : 27 : 27 : 0.1
+T: 1 4 : 27 : 91 : 0.9
+T: 1 5 : 27 : 27 : 0.1
+T: 1 5 : 27 : 91 : 0.9
+T: 2 0 : 27 : 11 : 0.9
+T: 2 0 : 27 : 27 : 0.1
+T: 2 1 : 27 : 27 : 1.0
+T: 2 2 : 27 : 27 : 1.0
+T: 2 3 : 27 : 27 : 0.1
+T: 2 3 : 27 : 59 : 0.9
+T: 2 4 : 27 : 27 : 1.0
+T: 2 5 : 27 : 27 : 1.0
+T: 3 0 : 27 : 11 : 0.09
+T: 3 0 : 27 : 27 : 0.01
+T: 3 0 : 27 : 139 : 0.81
+T: 3 0 : 27 : 155 : 0.09
+T: 3 1 : 27 : 27 : 0.1
+T: 3 1 : 27 : 155 : 0.9
+T: 3 2 : 27 : 27 : 0.1
+T: 3 2 : 27 : 155 : 0.9
+T: 3 3 : 27 : 27 : 0.01
+T: 3 3 : 27 : 59 : 0.09
+T: 3 3 : 27 : 155 : 0.09
+T: 3 3 : 27 : 187 : 0.81
+T: 3 4 : 27 : 27 : 0.1
+T: 3 4 : 27 : 155 : 0.9
+T: 3 5 : 27 : 27 : 0.1
+T: 3 5 : 27 : 155 : 0.9
+T: 4 0 : 27 : 11 : 0.9
+T: 4 0 : 27 : 27 : 0.1
+T: 4 1 : 27 : 27 : 1.0
+T: 4 2 : 27 : 27 : 1.0
+T: 4 3 : 27 : 27 : 0.1
+T: 4 3 : 27 : 59 : 0.9
+T: 4 4 : 27 : 27 : 1.0
+T: 4 5 : 27 : 27 : 1.0
+T: 5 0 : 27 : 11 : 0.9
+T: 5 0 : 27 : 27 : 0.1
+T: 5 1 : 27 : 27 : 1.0
+T: 5 2 : 27 : 27 : 1.0
+T: 5 3 : 27 : 27 : 0.1
+T: 5 3 : 27 : 59 : 0.9
+T: 5 4 : 27 : 27 : 1.0
+T: 5 5 : 27 : 27 : 1.0
+T: 0 0 : 28 : 12 : 0.9
+T: 0 0 : 28 : 28 : 0.1
+T: 0 1 : 28 : 28 : 1.0
+T: 0 2 : 28 : 28 : 1.0
+T: 0 3 : 28 : 28 : 0.1
+T: 0 3 : 28 : 60 : 0.9
+T: 0 4 : 28 : 30 : 1.0
+T: 0 5 : 28 : 30 : 1.0
+T: 1 0 : 28 : 12 : 0.09
+T: 1 0 : 28 : 28 : 0.01
+T: 1 0 : 28 : 76 : 0.81
+T: 1 0 : 28 : 92 : 0.09
+T: 1 1 : 28 : 28 : 0.1
+T: 1 1 : 28 : 92 : 0.9
+T: 1 2 : 28 : 28 : 0.1
+T: 1 2 : 28 : 92 : 0.9
+T: 1 3 : 28 : 28 : 0.01
+T: 1 3 : 28 : 60 : 0.09
+T: 1 3 : 28 : 92 : 0.09
+T: 1 3 : 28 : 124 : 0.81
+T: 1 4 : 28 : 30 : 0.1
+T: 1 4 : 28 : 94 : 0.9
+T: 1 5 : 28 : 30 : 0.1
+T: 1 5 : 28 : 94 : 0.9
+T: 2 0 : 28 : 12 : 0.9
+T: 2 0 : 28 : 28 : 0.1
+T: 2 1 : 28 : 28 : 1.0
+T: 2 2 : 28 : 28 : 1.0
+T: 2 3 : 28 : 28 : 0.1
+T: 2 3 : 28 : 60 : 0.9
+T: 2 4 : 28 : 30 : 1.0
+T: 2 5 : 28 : 30 : 1.0
+T: 3 0 : 28 : 12 : 0.09
+T: 3 0 : 28 : 28 : 0.01
+T: 3 0 : 28 : 140 : 0.81
+T: 3 0 : 28 : 156 : 0.09
+T: 3 1 : 28 : 28 : 0.1
+T: 3 1 : 28 : 156 : 0.9
+T: 3 2 : 28 : 28 : 0.1
+T: 3 2 : 28 : 156 : 0.9
+T: 3 3 : 28 : 28 : 0.01
+T: 3 3 : 28 : 60 : 0.09
+T: 3 3 : 28 : 156 : 0.09
+T: 3 3 : 28 : 188 : 0.81
+T: 3 4 : 28 : 30 : 0.1
+T: 3 4 : 28 : 158 : 0.9
+T: 3 5 : 28 : 30 : 0.1
+T: 3 5 : 28 : 158 : 0.9
+T: 4 0 : 28 : 13 : 0.9
+T: 4 0 : 28 : 29 : 0.1
+T: 4 1 : 28 : 29 : 1.0
+T: 4 2 : 28 : 29 : 1.0
+T: 4 3 : 28 : 29 : 0.1
+T: 4 3 : 28 : 61 : 0.9
+T: 4 4 : 28 : 0 : 1.0
+T: 4 5 : 28 : 0 : 1.0
+T: 5 0 : 28 : 13 : 0.9
+T: 5 0 : 28 : 29 : 0.1
+T: 5 1 : 28 : 29 : 1.0
+T: 5 2 : 28 : 29 : 1.0
+T: 5 3 : 28 : 29 : 0.1
+T: 5 3 : 28 : 61 : 0.9
+T: 5 4 : 28 : 0 : 1.0
+T: 5 5 : 28 : 0 : 1.0
+T: 0 0 : 29 : 13 : 0.9
+T: 0 0 : 29 : 29 : 0.1
+T: 0 1 : 29 : 29 : 1.0
+T: 0 2 : 29 : 29 : 1.0
+T: 0 3 : 29 : 29 : 0.1
+T: 0 3 : 29 : 61 : 0.9
+T: 0 4 : 29 : 0 : 1.0
+T: 0 5 : 29 : 0 : 1.0
+T: 1 0 : 29 : 13 : 0.09
+T: 1 0 : 29 : 29 : 0.01
+T: 1 0 : 29 : 77 : 0.81
+T: 1 0 : 29 : 93 : 0.09
+T: 1 1 : 29 : 29 : 0.1
+T: 1 1 : 29 : 93 : 0.9
+T: 1 2 : 29 : 29 : 0.1
+T: 1 2 : 29 : 93 : 0.9
+T: 1 3 : 29 : 29 : 0.01
+T: 1 3 : 29 : 61 : 0.09
+T: 1 3 : 29 : 93 : 0.09
+T: 1 3 : 29 : 125 : 0.81
+T: 1 4 : 29 : 0 : 1.0
+T: 1 5 : 29 : 0 : 1.0
+T: 2 0 : 29 : 13 : 0.9
+T: 2 0 : 29 : 29 : 0.1
+T: 2 1 : 29 : 29 : 1.0
+T: 2 2 : 29 : 29 : 1.0
+T: 2 3 : 29 : 29 : 0.1
+T: 2 3 : 29 : 61 : 0.9
+T: 2 4 : 29 : 0 : 1.0
+T: 2 5 : 29 : 0 : 1.0
+T: 3 0 : 29 : 13 : 0.09
+T: 3 0 : 29 : 29 : 0.01
+T: 3 0 : 29 : 141 : 0.81
+T: 3 0 : 29 : 157 : 0.09
+T: 3 1 : 29 : 29 : 0.1
+T: 3 1 : 29 : 157 : 0.9
+T: 3 2 : 29 : 29 : 0.1
+T: 3 2 : 29 : 157 : 0.9
+T: 3 3 : 29 : 29 : 0.01
+T: 3 3 : 29 : 61 : 0.09
+T: 3 3 : 29 : 157 : 0.09
+T: 3 3 : 29 : 189 : 0.81
+T: 3 4 : 29 : 0 : 1.0
+T: 3 5 : 29 : 0 : 1.0
+T: 4 0 : 29 : 13 : 0.9
+T: 4 0 : 29 : 29 : 0.1
+T: 4 1 : 29 : 29 : 1.0
+T: 4 2 : 29 : 29 : 1.0
+T: 4 3 : 29 : 29 : 0.1
+T: 4 3 : 29 : 61 : 0.9
+T: 4 4 : 29 : 0 : 1.0
+T: 4 5 : 29 : 0 : 1.0
+T: 5 0 : 29 : 13 : 0.9
+T: 5 0 : 29 : 29 : 0.1
+T: 5 1 : 29 : 29 : 1.0
+T: 5 2 : 29 : 29 : 1.0
+T: 5 3 : 29 : 29 : 0.1
+T: 5 3 : 29 : 61 : 0.9
+T: 5 4 : 29 : 0 : 1.0
+T: 5 5 : 29 : 0 : 1.0
+T: 0 0 : 30 : 14 : 0.9
+T: 0 0 : 30 : 30 : 0.1
+T: 0 1 : 30 : 30 : 1.0
+T: 0 2 : 30 : 30 : 1.0
+T: 0 3 : 30 : 30 : 0.1
+T: 0 3 : 30 : 62 : 0.9
+T: 0 4 : 30 : 30 : 1.0
+T: 0 5 : 30 : 30 : 1.0
+T: 1 0 : 30 : 14 : 0.09
+T: 1 0 : 30 : 30 : 0.01
+T: 1 0 : 30 : 78 : 0.81
+T: 1 0 : 30 : 94 : 0.09
+T: 1 1 : 30 : 30 : 0.1
+T: 1 1 : 30 : 94 : 0.9
+T: 1 2 : 30 : 30 : 0.1
+T: 1 2 : 30 : 94 : 0.9
+T: 1 3 : 30 : 30 : 0.01
+T: 1 3 : 30 : 62 : 0.09
+T: 1 3 : 30 : 94 : 0.09
+T: 1 3 : 30 : 126 : 0.81
+T: 1 4 : 30 : 30 : 0.1
+T: 1 4 : 30 : 94 : 0.9
+T: 1 5 : 30 : 30 : 0.1
+T: 1 5 : 30 : 94 : 0.9
+T: 2 0 : 30 : 14 : 0.9
+T: 2 0 : 30 : 30 : 0.1
+T: 2 1 : 30 : 30 : 1.0
+T: 2 2 : 30 : 30 : 1.0
+T: 2 3 : 30 : 30 : 0.1
+T: 2 3 : 30 : 62 : 0.9
+T: 2 4 : 30 : 30 : 1.0
+T: 2 5 : 30 : 30 : 1.0
+T: 3 0 : 30 : 14 : 0.09
+T: 3 0 : 30 : 30 : 0.01
+T: 3 0 : 30 : 142 : 0.81
+T: 3 0 : 30 : 158 : 0.09
+T: 3 1 : 30 : 30 : 0.1
+T: 3 1 : 30 : 158 : 0.9
+T: 3 2 : 30 : 30 : 0.1
+T: 3 2 : 30 : 158 : 0.9
+T: 3 3 : 30 : 30 : 0.01
+T: 3 3 : 30 : 62 : 0.09
+T: 3 3 : 30 : 158 : 0.09
+T: 3 3 : 30 : 190 : 0.81
+T: 3 4 : 30 : 30 : 0.1
+T: 3 4 : 30 : 158 : 0.9
+T: 3 5 : 30 : 30 : 0.1
+T: 3 5 : 30 : 158 : 0.9
+T: 4 0 : 30 : 0 : 1.0
+T: 4 1 : 30 : 0 : 1.0
+T: 4 2 : 30 : 0 : 1.0
+T: 4 3 : 30 : 0 : 1.0
+T: 4 4 : 30 : 0 : 1.0
+T: 4 5 : 30 : 0 : 1.0
+T: 5 0 : 30 : 0 : 1.0
+T: 5 1 : 30 : 0 : 1.0
+T: 5 2 : 30 : 0 : 1.0
+T: 5 3 : 30 : 0 : 1.0
+T: 5 4 : 30 : 0 : 1.0
+T: 5 5 : 30 : 0 : 1.0
+T: 0 0 : 31 : 15 : 0.9
+T: 0 0 : 31 : 31 : 0.1
+T: 0 1 : 31 : 31 : 1.0
+T: 0 2 : 31 : 31 : 1.0
+T: 0 3 : 31 : 31 : 0.1
+T: 0 3 : 31 : 63 : 0.9
+T: 0 4 : 31 : 0 : 1.0
+T: 0 5 : 31 : 0 : 1.0
+T: 1 0 : 31 : 15 : 0.09
+T: 1 0 : 31 : 31 : 0.01
+T: 1 0 : 31 : 79 : 0.81
+T: 1 0 : 31 : 95 : 0.09
+T: 1 1 : 31 : 31 : 0.1
+T: 1 1 : 31 : 95 : 0.9
+T: 1 2 : 31 : 31 : 0.1
+T: 1 2 : 31 : 95 : 0.9
+T: 1 3 : 31 : 31 : 0.01
+T: 1 3 : 31 : 63 : 0.09
+T: 1 3 : 31 : 95 : 0.09
+T: 1 3 : 31 : 127 : 0.81
+T: 1 4 : 31 : 0 : 1.0
+T: 1 5 : 31 : 0 : 1.0
+T: 2 0 : 31 : 15 : 0.9
+T: 2 0 : 31 : 31 : 0.1
+T: 2 1 : 31 : 31 : 1.0
+T: 2 2 : 31 : 31 : 1.0
+T: 2 3 : 31 : 31 : 0.1
+T: 2 3 : 31 : 63 : 0.9
+T: 2 4 : 31 : 0 : 1.0
+T: 2 5 : 31 : 0 : 1.0
+T: 3 0 : 31 : 15 : 0.09
+T: 3 0 : 31 : 31 : 0.01
+T: 3 0 : 31 : 143 : 0.81
+T: 3 0 : 31 : 159 : 0.09
+T: 3 1 : 31 : 31 : 0.1
+T: 3 1 : 31 : 159 : 0.9
+T: 3 2 : 31 : 31 : 0.1
+T: 3 2 : 31 : 159 : 0.9
+T: 3 3 : 31 : 31 : 0.01
+T: 3 3 : 31 : 63 : 0.09
+T: 3 3 : 31 : 159 : 0.09
+T: 3 3 : 31 : 191 : 0.81
+T: 3 4 : 31 : 0 : 1.0
+T: 3 5 : 31 : 0 : 1.0
+T: 4 0 : 31 : 0 : 1.0
+T: 4 1 : 31 : 0 : 1.0
+T: 4 2 : 31 : 0 : 1.0
+T: 4 3 : 31 : 0 : 1.0
+T: 4 4 : 31 : 0 : 1.0
+T: 4 5 : 31 : 0 : 1.0
+T: 5 0 : 31 : 0 : 1.0
+T: 5 1 : 31 : 0 : 1.0
+T: 5 2 : 31 : 0 : 1.0
+T: 5 3 : 31 : 0 : 1.0
+T: 5 4 : 31 : 0 : 1.0
+T: 5 5 : 31 : 0 : 1.0
+T: 0 0 : 32 : 32 : 1.0
+T: 0 1 : 32 : 32 : 0.1
+T: 0 1 : 32 : 48 : 0.9
+T: 0 2 : 32 : 0 : 0.9
+T: 0 2 : 32 : 32 : 0.1
+T: 0 3 : 32 : 32 : 1.0
+T: 0 4 : 32 : 36 : 1.0
+T: 0 5 : 32 : 36 : 1.0
+T: 1 0 : 32 : 32 : 0.1
+T: 1 0 : 32 : 96 : 0.9
+T: 1 1 : 32 : 32 : 0.01
+T: 1 1 : 32 : 48 : 0.09
+T: 1 1 : 32 : 96 : 0.09
+T: 1 1 : 32 : 112 : 0.81
+T: 1 2 : 32 : 0 : 0.09
+T: 1 2 : 32 : 32 : 0.01
+T: 1 2 : 32 : 64 : 0.81
+T: 1 2 : 32 : 96 : 0.09
+T: 1 3 : 32 : 32 : 0.1
+T: 1 3 : 32 : 96 : 0.9
+T: 1 4 : 32 : 36 : 0.1
+T: 1 4 : 32 : 100 : 0.9
+T: 1 5 : 32 : 36 : 0.1
+T: 1 5 : 32 : 100 : 0.9
+T: 2 0 : 32 : 32 : 1.0
+T: 2 1 : 32 : 32 : 0.1
+T: 2 1 : 32 : 48 : 0.9
+T: 2 2 : 32 : 0 : 0.9
+T: 2 2 : 32 : 32 : 0.1
+T: 2 3 : 32 : 32 : 1.0
+T: 2 4 : 32 : 36 : 1.0
+T: 2 5 : 32 : 36 : 1.0
+T: 3 0 : 32 : 32 : 0.1
+T: 3 0 : 32 : 160 : 0.9
+T: 3 1 : 32 : 32 : 0.01
+T: 3 1 : 32 : 48 : 0.09
+T: 3 1 : 32 : 160 : 0.09
+T: 3 1 : 32 : 176 : 0.81
+T: 3 2 : 32 : 0 : 0.09
+T: 3 2 : 32 : 32 : 0.01
+T: 3 2 : 32 : 128 : 0.81
+T: 3 2 : 32 : 160 : 0.09
+T: 3 3 : 32 : 32 : 0.1
+T: 3 3 : 32 : 160 : 0.9
+T: 3 4 : 32 : 36 : 0.1
+T: 3 4 : 32 : 164 : 0.9
+T: 3 5 : 32 : 36 : 0.1
+T: 3 5 : 32 : 164 : 0.9
+T: 4 0 : 32 : 33 : 1.0
+T: 4 1 : 32 : 33 : 0.1
+T: 4 1 : 32 : 49 : 0.9
+T: 4 2 : 32 : 1 : 0.9
+T: 4 2 : 32 : 33 : 0.1
+T: 4 3 : 32 : 33 : 1.0
+T: 4 4 : 32 : 37 : 1.0
+T: 4 5 : 32 : 37 : 1.0
+T: 5 0 : 32 : 33 : 1.0
+T: 5 1 : 32 : 33 : 0.1
+T: 5 1 : 32 : 49 : 0.9
+T: 5 2 : 32 : 1 : 0.9
+T: 5 2 : 32 : 33 : 0.1
+T: 5 3 : 32 : 33 : 1.0
+T: 5 4 : 32 : 37 : 1.0
+T: 5 5 : 32 : 37 : 1.0
+T: 0 0 : 33 : 33 : 1.0
+T: 0 1 : 33 : 33 : 0.1
+T: 0 1 : 33 : 49 : 0.9
+T: 0 2 : 33 : 1 : 0.9
+T: 0 2 : 33 : 33 : 0.1
+T: 0 3 : 33 : 33 : 1.0
+T: 0 4 : 33 : 37 : 1.0
+T: 0 5 : 33 : 37 : 1.0
+T: 1 0 : 33 : 33 : 0.1
+T: 1 0 : 33 : 97 : 0.9
+T: 1 1 : 33 : 33 : 0.01
+T: 1 1 : 33 : 49 : 0.09
+T: 1 1 : 33 : 97 : 0.09
+T: 1 1 : 33 : 113 : 0.81
+T: 1 2 : 33 : 1 : 0.09
+T: 1 2 : 33 : 33 : 0.01
+T: 1 2 : 33 : 65 : 0.81
+T: 1 2 : 33 : 97 : 0.09
+T: 1 3 : 33 : 33 : 0.1
+T: 1 3 : 33 : 97 : 0.9
+T: 1 4 : 33 : 37 : 0.1
+T: 1 4 : 33 : 101 : 0.9
+T: 1 5 : 33 : 37 : 0.1
+T: 1 5 : 33 : 101 : 0.9
+T: 2 0 : 33 : 33 : 1.0
+T: 2 1 : 33 : 33 : 0.1
+T: 2 1 : 33 : 49 : 0.9
+T: 2 2 : 33 : 1 : 0.9
+T: 2 2 : 33 : 33 : 0.1
+T: 2 3 : 33 : 33 : 1.0
+T: 2 4 : 33 : 37 : 1.0
+T: 2 5 : 33 : 37 : 1.0
+T: 3 0 : 33 : 33 : 0.1
+T: 3 0 : 33 : 161 : 0.9
+T: 3 1 : 33 : 33 : 0.01
+T: 3 1 : 33 : 49 : 0.09
+T: 3 1 : 33 : 161 : 0.09
+T: 3 1 : 33 : 177 : 0.81
+T: 3 2 : 33 : 1 : 0.09
+T: 3 2 : 33 : 33 : 0.01
+T: 3 2 : 33 : 129 : 0.81
+T: 3 2 : 33 : 161 : 0.09
+T: 3 3 : 33 : 33 : 0.1
+T: 3 3 : 33 : 161 : 0.9
+T: 3 4 : 33 : 37 : 0.1
+T: 3 4 : 33 : 165 : 0.9
+T: 3 5 : 33 : 37 : 0.1
+T: 3 5 : 33 : 165 : 0.9
+T: 4 0 : 33 : 33 : 1.0
+T: 4 1 : 33 : 33 : 0.1
+T: 4 1 : 33 : 49 : 0.9
+T: 4 2 : 33 : 1 : 0.9
+T: 4 2 : 33 : 33 : 0.1
+T: 4 3 : 33 : 33 : 1.0
+T: 4 4 : 33 : 37 : 1.0
+T: 4 5 : 33 : 37 : 1.0
+T: 5 0 : 33 : 33 : 1.0
+T: 5 1 : 33 : 33 : 0.1
+T: 5 1 : 33 : 49 : 0.9
+T: 5 2 : 33 : 1 : 0.9
+T: 5 2 : 33 : 33 : 0.1
+T: 5 3 : 33 : 33 : 1.0
+T: 5 4 : 33 : 37 : 1.0
+T: 5 5 : 33 : 37 : 1.0
+T: 0 0 : 34 : 34 : 1.0
+T: 0 1 : 34 : 34 : 0.1
+T: 0 1 : 34 : 50 : 0.9
+T: 0 2 : 34 : 2 : 0.9
+T: 0 2 : 34 : 34 : 0.1
+T: 0 3 : 34 : 34 : 1.0
+T: 0 4 : 34 : 38 : 1.0
+T: 0 5 : 34 : 38 : 1.0
+T: 1 0 : 34 : 34 : 0.1
+T: 1 0 : 34 : 98 : 0.9
+T: 1 1 : 34 : 34 : 0.01
+T: 1 1 : 34 : 50 : 0.09
+T: 1 1 : 34 : 98 : 0.09
+T: 1 1 : 34 : 114 : 0.81
+T: 1 2 : 34 : 2 : 0.09
+T: 1 2 : 34 : 34 : 0.01
+T: 1 2 : 34 : 66 : 0.81
+T: 1 2 : 34 : 98 : 0.09
+T: 1 3 : 34 : 34 : 0.1
+T: 1 3 : 34 : 98 : 0.9
+T: 1 4 : 34 : 38 : 0.1
+T: 1 4 : 34 : 102 : 0.9
+T: 1 5 : 34 : 38 : 0.1
+T: 1 5 : 34 : 102 : 0.9
+T: 2 0 : 34 : 34 : 1.0
+T: 2 1 : 34 : 34 : 0.1
+T: 2 1 : 34 : 50 : 0.9
+T: 2 2 : 34 : 2 : 0.9
+T: 2 2 : 34 : 34 : 0.1
+T: 2 3 : 34 : 34 : 1.0
+T: 2 4 : 34 : 38 : 1.0
+T: 2 5 : 34 : 38 : 1.0
+T: 3 0 : 34 : 34 : 0.1
+T: 3 0 : 34 : 162 : 0.9
+T: 3 1 : 34 : 34 : 0.01
+T: 3 1 : 34 : 50 : 0.09
+T: 3 1 : 34 : 162 : 0.09
+T: 3 1 : 34 : 178 : 0.81
+T: 3 2 : 34 : 2 : 0.09
+T: 3 2 : 34 : 34 : 0.01
+T: 3 2 : 34 : 130 : 0.81
+T: 3 2 : 34 : 162 : 0.09
+T: 3 3 : 34 : 34 : 0.1
+T: 3 3 : 34 : 162 : 0.9
+T: 3 4 : 34 : 38 : 0.1
+T: 3 4 : 34 : 166 : 0.9
+T: 3 5 : 34 : 38 : 0.1
+T: 3 5 : 34 : 166 : 0.9
+T: 4 0 : 34 : 35 : 1.0
+T: 4 1 : 34 : 35 : 0.1
+T: 4 1 : 34 : 51 : 0.9
+T: 4 2 : 34 : 3 : 0.9
+T: 4 2 : 34 : 35 : 0.1
+T: 4 3 : 34 : 35 : 1.0
+T: 4 4 : 34 : 39 : 1.0
+T: 4 5 : 34 : 39 : 1.0
+T: 5 0 : 34 : 35 : 1.0
+T: 5 1 : 34 : 35 : 0.1
+T: 5 1 : 34 : 51 : 0.9
+T: 5 2 : 34 : 3 : 0.9
+T: 5 2 : 34 : 35 : 0.1
+T: 5 3 : 34 : 35 : 1.0
+T: 5 4 : 34 : 39 : 1.0
+T: 5 5 : 34 : 39 : 1.0
+T: 0 0 : 35 : 35 : 1.0
+T: 0 1 : 35 : 35 : 0.1
+T: 0 1 : 35 : 51 : 0.9
+T: 0 2 : 35 : 3 : 0.9
+T: 0 2 : 35 : 35 : 0.1
+T: 0 3 : 35 : 35 : 1.0
+T: 0 4 : 35 : 39 : 1.0
+T: 0 5 : 35 : 39 : 1.0
+T: 1 0 : 35 : 35 : 0.1
+T: 1 0 : 35 : 99 : 0.9
+T: 1 1 : 35 : 35 : 0.01
+T: 1 1 : 35 : 51 : 0.09
+T: 1 1 : 35 : 99 : 0.09
+T: 1 1 : 35 : 115 : 0.81
+T: 1 2 : 35 : 3 : 0.09
+T: 1 2 : 35 : 35 : 0.01
+T: 1 2 : 35 : 67 : 0.81
+T: 1 2 : 35 : 99 : 0.09
+T: 1 3 : 35 : 35 : 0.1
+T: 1 3 : 35 : 99 : 0.9
+T: 1 4 : 35 : 39 : 0.1
+T: 1 4 : 35 : 103 : 0.9
+T: 1 5 : 35 : 39 : 0.1
+T: 1 5 : 35 : 103 : 0.9
+T: 2 0 : 35 : 35 : 1.0
+T: 2 1 : 35 : 35 : 0.1
+T: 2 1 : 35 : 51 : 0.9
+T: 2 2 : 35 : 3 : 0.9
+T: 2 2 : 35 : 35 : 0.1
+T: 2 3 : 35 : 35 : 1.0
+T: 2 4 : 35 : 39 : 1.0
+T: 2 5 : 35 : 39 : 1.0
+T: 3 0 : 35 : 35 : 0.1
+T: 3 0 : 35 : 163 : 0.9
+T: 3 1 : 35 : 35 : 0.01
+T: 3 1 : 35 : 51 : 0.09
+T: 3 1 : 35 : 163 : 0.09
+T: 3 1 : 35 : 179 : 0.81
+T: 3 2 : 35 : 3 : 0.09
+T: 3 2 : 35 : 35 : 0.01
+T: 3 2 : 35 : 131 : 0.81
+T: 3 2 : 35 : 163 : 0.09
+T: 3 3 : 35 : 35 : 0.1
+T: 3 3 : 35 : 163 : 0.9
+T: 3 4 : 35 : 39 : 0.1
+T: 3 4 : 35 : 167 : 0.9
+T: 3 5 : 35 : 39 : 0.1
+T: 3 5 : 35 : 167 : 0.9
+T: 4 0 : 35 : 35 : 1.0
+T: 4 1 : 35 : 35 : 0.1
+T: 4 1 : 35 : 51 : 0.9
+T: 4 2 : 35 : 3 : 0.9
+T: 4 2 : 35 : 35 : 0.1
+T: 4 3 : 35 : 35 : 1.0
+T: 4 4 : 35 : 39 : 1.0
+T: 4 5 : 35 : 39 : 1.0
+T: 5 0 : 35 : 35 : 1.0
+T: 5 1 : 35 : 35 : 0.1
+T: 5 1 : 35 : 51 : 0.9
+T: 5 2 : 35 : 3 : 0.9
+T: 5 2 : 35 : 35 : 0.1
+T: 5 3 : 35 : 35 : 1.0
+T: 5 4 : 35 : 39 : 1.0
+T: 5 5 : 35 : 39 : 1.0
+T: 0 0 : 36 : 36 : 1.0
+T: 0 1 : 36 : 36 : 0.1
+T: 0 1 : 36 : 52 : 0.9
+T: 0 2 : 36 : 4 : 0.9
+T: 0 2 : 36 : 36 : 0.1
+T: 0 3 : 36 : 36 : 1.0
+T: 0 4 : 36 : 36 : 1.0
+T: 0 5 : 36 : 36 : 1.0
+T: 1 0 : 36 : 36 : 0.1
+T: 1 0 : 36 : 100 : 0.9
+T: 1 1 : 36 : 36 : 0.01
+T: 1 1 : 36 : 52 : 0.09
+T: 1 1 : 36 : 100 : 0.09
+T: 1 1 : 36 : 116 : 0.81
+T: 1 2 : 36 : 4 : 0.09
+T: 1 2 : 36 : 36 : 0.01
+T: 1 2 : 36 : 68 : 0.81
+T: 1 2 : 36 : 100 : 0.09
+T: 1 3 : 36 : 36 : 0.1
+T: 1 3 : 36 : 100 : 0.9
+T: 1 4 : 36 : 36 : 0.1
+T: 1 4 : 36 : 100 : 0.9
+T: 1 5 : 36 : 36 : 0.1
+T: 1 5 : 36 : 100 : 0.9
+T: 2 0 : 36 : 36 : 1.0
+T: 2 1 : 36 : 36 : 0.1
+T: 2 1 : 36 : 52 : 0.9
+T: 2 2 : 36 : 4 : 0.9
+T: 2 2 : 36 : 36 : 0.1
+T: 2 3 : 36 : 36 : 1.0
+T: 2 4 : 36 : 36 : 1.0
+T: 2 5 : 36 : 36 : 1.0
+T: 3 0 : 36 : 36 : 0.1
+T: 3 0 : 36 : 164 : 0.9
+T: 3 1 : 36 : 36 : 0.01
+T: 3 1 : 36 : 52 : 0.09
+T: 3 1 : 36 : 164 : 0.09
+T: 3 1 : 36 : 180 : 0.81
+T: 3 2 : 36 : 4 : 0.09
+T: 3 2 : 36 : 36 : 0.01
+T: 3 2 : 36 : 132 : 0.81
+T: 3 2 : 36 : 164 : 0.09
+T: 3 3 : 36 : 36 : 0.1
+T: 3 3 : 36 : 164 : 0.9
+T: 3 4 : 36 : 36 : 0.1
+T: 3 4 : 36 : 164 : 0.9
+T: 3 5 : 36 : 36 : 0.1
+T: 3 5 : 36 : 164 : 0.9
+T: 4 0 : 36 : 37 : 1.0
+T: 4 1 : 36 : 37 : 0.1
+T: 4 1 : 36 : 53 : 0.9
+T: 4 2 : 36 : 5 : 0.9
+T: 4 2 : 36 : 37 : 0.1
+T: 4 3 : 36 : 37 : 1.0
+T: 4 4 : 36 : 37 : 1.0
+T: 4 5 : 36 : 37 : 1.0
+T: 5 0 : 36 : 37 : 1.0
+T: 5 1 : 36 : 37 : 0.1
+T: 5 1 : 36 : 53 : 0.9
+T: 5 2 : 36 : 5 : 0.9
+T: 5 2 : 36 : 37 : 0.1
+T: 5 3 : 36 : 37 : 1.0
+T: 5 4 : 36 : 37 : 1.0
+T: 5 5 : 36 : 37 : 1.0
+T: 0 0 : 37 : 37 : 1.0
+T: 0 1 : 37 : 37 : 0.1
+T: 0 1 : 37 : 53 : 0.9
+T: 0 2 : 37 : 5 : 0.9
+T: 0 2 : 37 : 37 : 0.1
+T: 0 3 : 37 : 37 : 1.0
+T: 0 4 : 37 : 37 : 1.0
+T: 0 5 : 37 : 37 : 1.0
+T: 1 0 : 37 : 37 : 0.1
+T: 1 0 : 37 : 101 : 0.9
+T: 1 1 : 37 : 37 : 0.01
+T: 1 1 : 37 : 53 : 0.09
+T: 1 1 : 37 : 101 : 0.09
+T: 1 1 : 37 : 117 : 0.81
+T: 1 2 : 37 : 5 : 0.09
+T: 1 2 : 37 : 37 : 0.01
+T: 1 2 : 37 : 69 : 0.81
+T: 1 2 : 37 : 101 : 0.09
+T: 1 3 : 37 : 37 : 0.1
+T: 1 3 : 37 : 101 : 0.9
+T: 1 4 : 37 : 37 : 0.1
+T: 1 4 : 37 : 101 : 0.9
+T: 1 5 : 37 : 37 : 0.1
+T: 1 5 : 37 : 101 : 0.9
+T: 2 0 : 37 : 37 : 1.0
+T: 2 1 : 37 : 37 : 0.1
+T: 2 1 : 37 : 53 : 0.9
+T: 2 2 : 37 : 5 : 0.9
+T: 2 2 : 37 : 37 : 0.1
+T: 2 3 : 37 : 37 : 1.0
+T: 2 4 : 37 : 37 : 1.0
+T: 2 5 : 37 : 37 : 1.0
+T: 3 0 : 37 : 37 : 0.1
+T: 3 0 : 37 : 165 : 0.9
+T: 3 1 : 37 : 37 : 0.01
+T: 3 1 : 37 : 53 : 0.09
+T: 3 1 : 37 : 165 : 0.09
+T: 3 1 : 37 : 181 : 0.81
+T: 3 2 : 37 : 5 : 0.09
+T: 3 2 : 37 : 37 : 0.01
+T: 3 2 : 37 : 133 : 0.81
+T: 3 2 : 37 : 165 : 0.09
+T: 3 3 : 37 : 37 : 0.1
+T: 3 3 : 37 : 165 : 0.9
+T: 3 4 : 37 : 37 : 0.1
+T: 3 4 : 37 : 165 : 0.9
+T: 3 5 : 37 : 37 : 0.1
+T: 3 5 : 37 : 165 : 0.9
+T: 4 0 : 37 : 37 : 1.0
+T: 4 1 : 37 : 37 : 0.1
+T: 4 1 : 37 : 53 : 0.9
+T: 4 2 : 37 : 5 : 0.9
+T: 4 2 : 37 : 37 : 0.1
+T: 4 3 : 37 : 37 : 1.0
+T: 4 4 : 37 : 37 : 1.0
+T: 4 5 : 37 : 37 : 1.0
+T: 5 0 : 37 : 37 : 1.0
+T: 5 1 : 37 : 37 : 0.1
+T: 5 1 : 37 : 53 : 0.9
+T: 5 2 : 37 : 5 : 0.9
+T: 5 2 : 37 : 37 : 0.1
+T: 5 3 : 37 : 37 : 1.0
+T: 5 4 : 37 : 37 : 1.0
+T: 5 5 : 37 : 37 : 1.0
+T: 0 0 : 38 : 38 : 1.0
+T: 0 1 : 38 : 38 : 0.1
+T: 0 1 : 38 : 54 : 0.9
+T: 0 2 : 38 : 6 : 0.9
+T: 0 2 : 38 : 38 : 0.1
+T: 0 3 : 38 : 38 : 1.0
+T: 0 4 : 38 : 38 : 1.0
+T: 0 5 : 38 : 38 : 1.0
+T: 1 0 : 38 : 38 : 0.1
+T: 1 0 : 38 : 102 : 0.9
+T: 1 1 : 38 : 38 : 0.01
+T: 1 1 : 38 : 54 : 0.09
+T: 1 1 : 38 : 102 : 0.09
+T: 1 1 : 38 : 118 : 0.81
+T: 1 2 : 38 : 6 : 0.09
+T: 1 2 : 38 : 38 : 0.01
+T: 1 2 : 38 : 70 : 0.81
+T: 1 2 : 38 : 102 : 0.09
+T: 1 3 : 38 : 38 : 0.1
+T: 1 3 : 38 : 102 : 0.9
+T: 1 4 : 38 : 38 : 0.1
+T: 1 4 : 38 : 102 : 0.9
+T: 1 5 : 38 : 38 : 0.1
+T: 1 5 : 38 : 102 : 0.9
+T: 2 0 : 38 : 38 : 1.0
+T: 2 1 : 38 : 38 : 0.1
+T: 2 1 : 38 : 54 : 0.9
+T: 2 2 : 38 : 6 : 0.9
+T: 2 2 : 38 : 38 : 0.1
+T: 2 3 : 38 : 38 : 1.0
+T: 2 4 : 38 : 38 : 1.0
+T: 2 5 : 38 : 38 : 1.0
+T: 3 0 : 38 : 38 : 0.1
+T: 3 0 : 38 : 166 : 0.9
+T: 3 1 : 38 : 38 : 0.01
+T: 3 1 : 38 : 54 : 0.09
+T: 3 1 : 38 : 166 : 0.09
+T: 3 1 : 38 : 182 : 0.81
+T: 3 2 : 38 : 6 : 0.09
+T: 3 2 : 38 : 38 : 0.01
+T: 3 2 : 38 : 134 : 0.81
+T: 3 2 : 38 : 166 : 0.09
+T: 3 3 : 38 : 38 : 0.1
+T: 3 3 : 38 : 166 : 0.9
+T: 3 4 : 38 : 38 : 0.1
+T: 3 4 : 38 : 166 : 0.9
+T: 3 5 : 38 : 38 : 0.1
+T: 3 5 : 38 : 166 : 0.9
+T: 4 0 : 38 : 39 : 1.0
+T: 4 1 : 38 : 39 : 0.1
+T: 4 1 : 38 : 55 : 0.9
+T: 4 2 : 38 : 7 : 0.9
+T: 4 2 : 38 : 39 : 0.1
+T: 4 3 : 38 : 39 : 1.0
+T: 4 4 : 38 : 39 : 1.0
+T: 4 5 : 38 : 39 : 1.0
+T: 5 0 : 38 : 39 : 1.0
+T: 5 1 : 38 : 39 : 0.1
+T: 5 1 : 38 : 55 : 0.9
+T: 5 2 : 38 : 7 : 0.9
+T: 5 2 : 38 : 39 : 0.1
+T: 5 3 : 38 : 39 : 1.0
+T: 5 4 : 38 : 39 : 1.0
+T: 5 5 : 38 : 39 : 1.0
+T: 0 0 : 39 : 39 : 1.0
+T: 0 1 : 39 : 39 : 0.1
+T: 0 1 : 39 : 55 : 0.9
+T: 0 2 : 39 : 7 : 0.9
+T: 0 2 : 39 : 39 : 0.1
+T: 0 3 : 39 : 39 : 1.0
+T: 0 4 : 39 : 39 : 1.0
+T: 0 5 : 39 : 39 : 1.0
+T: 1 0 : 39 : 39 : 0.1
+T: 1 0 : 39 : 103 : 0.9
+T: 1 1 : 39 : 39 : 0.01
+T: 1 1 : 39 : 55 : 0.09
+T: 1 1 : 39 : 103 : 0.09
+T: 1 1 : 39 : 119 : 0.81
+T: 1 2 : 39 : 7 : 0.09
+T: 1 2 : 39 : 39 : 0.01
+T: 1 2 : 39 : 71 : 0.81
+T: 1 2 : 39 : 103 : 0.09
+T: 1 3 : 39 : 39 : 0.1
+T: 1 3 : 39 : 103 : 0.9
+T: 1 4 : 39 : 39 : 0.1
+T: 1 4 : 39 : 103 : 0.9
+T: 1 5 : 39 : 39 : 0.1
+T: 1 5 : 39 : 103 : 0.9
+T: 2 0 : 39 : 39 : 1.0
+T: 2 1 : 39 : 39 : 0.1
+T: 2 1 : 39 : 55 : 0.9
+T: 2 2 : 39 : 7 : 0.9
+T: 2 2 : 39 : 39 : 0.1
+T: 2 3 : 39 : 39 : 1.0
+T: 2 4 : 39 : 39 : 1.0
+T: 2 5 : 39 : 39 : 1.0
+T: 3 0 : 39 : 39 : 0.1
+T: 3 0 : 39 : 167 : 0.9
+T: 3 1 : 39 : 39 : 0.01
+T: 3 1 : 39 : 55 : 0.09
+T: 3 1 : 39 : 167 : 0.09
+T: 3 1 : 39 : 183 : 0.81
+T: 3 2 : 39 : 7 : 0.09
+T: 3 2 : 39 : 39 : 0.01
+T: 3 2 : 39 : 135 : 0.81
+T: 3 2 : 39 : 167 : 0.09
+T: 3 3 : 39 : 39 : 0.1
+T: 3 3 : 39 : 167 : 0.9
+T: 3 4 : 39 : 39 : 0.1
+T: 3 4 : 39 : 167 : 0.9
+T: 3 5 : 39 : 39 : 0.1
+T: 3 5 : 39 : 167 : 0.9
+T: 4 0 : 39 : 39 : 1.0
+T: 4 1 : 39 : 39 : 0.1
+T: 4 1 : 39 : 55 : 0.9
+T: 4 2 : 39 : 7 : 0.9
+T: 4 2 : 39 : 39 : 0.1
+T: 4 3 : 39 : 39 : 1.0
+T: 4 4 : 39 : 39 : 1.0
+T: 4 5 : 39 : 39 : 1.0
+T: 5 0 : 39 : 39 : 1.0
+T: 5 1 : 39 : 39 : 0.1
+T: 5 1 : 39 : 55 : 0.9
+T: 5 2 : 39 : 7 : 0.9
+T: 5 2 : 39 : 39 : 0.1
+T: 5 3 : 39 : 39 : 1.0
+T: 5 4 : 39 : 39 : 1.0
+T: 5 5 : 39 : 39 : 1.0
+T: 0 0 : 40 : 40 : 1.0
+T: 0 1 : 40 : 40 : 0.1
+T: 0 1 : 40 : 56 : 0.9
+T: 0 2 : 40 : 8 : 0.9
+T: 0 2 : 40 : 40 : 0.1
+T: 0 3 : 40 : 40 : 1.0
+T: 0 4 : 40 : 44 : 1.0
+T: 0 5 : 40 : 44 : 1.0
+T: 1 0 : 40 : 40 : 0.1
+T: 1 0 : 40 : 104 : 0.9
+T: 1 1 : 40 : 40 : 0.01
+T: 1 1 : 40 : 56 : 0.09
+T: 1 1 : 40 : 104 : 0.09
+T: 1 1 : 40 : 120 : 0.81
+T: 1 2 : 40 : 8 : 0.09
+T: 1 2 : 40 : 40 : 0.01
+T: 1 2 : 40 : 72 : 0.81
+T: 1 2 : 40 : 104 : 0.09
+T: 1 3 : 40 : 40 : 0.1
+T: 1 3 : 40 : 104 : 0.9
+T: 1 4 : 40 : 44 : 0.1
+T: 1 4 : 40 : 108 : 0.9
+T: 1 5 : 40 : 44 : 0.1
+T: 1 5 : 40 : 108 : 0.9
+T: 2 0 : 40 : 40 : 1.0
+T: 2 1 : 40 : 40 : 0.1
+T: 2 1 : 40 : 56 : 0.9
+T: 2 2 : 40 : 8 : 0.9
+T: 2 2 : 40 : 40 : 0.1
+T: 2 3 : 40 : 40 : 1.0
+T: 2 4 : 40 : 44 : 1.0
+T: 2 5 : 40 : 44 : 1.0
+T: 3 0 : 40 : 40 : 0.1
+T: 3 0 : 40 : 168 : 0.9
+T: 3 1 : 40 : 40 : 0.01
+T: 3 1 : 40 : 56 : 0.09
+T: 3 1 : 40 : 168 : 0.09
+T: 3 1 : 40 : 184 : 0.81
+T: 3 2 : 40 : 8 : 0.09
+T: 3 2 : 40 : 40 : 0.01
+T: 3 2 : 40 : 136 : 0.81
+T: 3 2 : 40 : 168 : 0.09
+T: 3 3 : 40 : 40 : 0.1
+T: 3 3 : 40 : 168 : 0.9
+T: 3 4 : 40 : 44 : 0.1
+T: 3 4 : 40 : 172 : 0.9
+T: 3 5 : 40 : 44 : 0.1
+T: 3 5 : 40 : 172 : 0.9
+T: 4 0 : 40 : 41 : 1.0
+T: 4 1 : 40 : 41 : 0.1
+T: 4 1 : 40 : 57 : 0.9
+T: 4 2 : 40 : 9 : 0.9
+T: 4 2 : 40 : 41 : 0.1
+T: 4 3 : 40 : 41 : 1.0
+T: 4 4 : 40 : 45 : 1.0
+T: 4 5 : 40 : 45 : 1.0
+T: 5 0 : 40 : 41 : 1.0
+T: 5 1 : 40 : 41 : 0.1
+T: 5 1 : 40 : 57 : 0.9
+T: 5 2 : 40 : 9 : 0.9
+T: 5 2 : 40 : 41 : 0.1
+T: 5 3 : 40 : 41 : 1.0
+T: 5 4 : 40 : 45 : 1.0
+T: 5 5 : 40 : 45 : 1.0
+T: 0 0 : 41 : 41 : 1.0
+T: 0 1 : 41 : 41 : 0.1
+T: 0 1 : 41 : 57 : 0.9
+T: 0 2 : 41 : 9 : 0.9
+T: 0 2 : 41 : 41 : 0.1
+T: 0 3 : 41 : 41 : 1.0
+T: 0 4 : 41 : 45 : 1.0
+T: 0 5 : 41 : 45 : 1.0
+T: 1 0 : 41 : 41 : 0.1
+T: 1 0 : 41 : 105 : 0.9
+T: 1 1 : 41 : 41 : 0.01
+T: 1 1 : 41 : 57 : 0.09
+T: 1 1 : 41 : 105 : 0.09
+T: 1 1 : 41 : 121 : 0.81
+T: 1 2 : 41 : 9 : 0.09
+T: 1 2 : 41 : 41 : 0.01
+T: 1 2 : 41 : 73 : 0.81
+T: 1 2 : 41 : 105 : 0.09
+T: 1 3 : 41 : 41 : 0.1
+T: 1 3 : 41 : 105 : 0.9
+T: 1 4 : 41 : 45 : 0.1
+T: 1 4 : 41 : 109 : 0.9
+T: 1 5 : 41 : 45 : 0.1
+T: 1 5 : 41 : 109 : 0.9
+T: 2 0 : 41 : 41 : 1.0
+T: 2 1 : 41 : 41 : 0.1
+T: 2 1 : 41 : 57 : 0.9
+T: 2 2 : 41 : 9 : 0.9
+T: 2 2 : 41 : 41 : 0.1
+T: 2 3 : 41 : 41 : 1.0
+T: 2 4 : 41 : 45 : 1.0
+T: 2 5 : 41 : 45 : 1.0
+T: 3 0 : 41 : 41 : 0.1
+T: 3 0 : 41 : 169 : 0.9
+T: 3 1 : 41 : 41 : 0.01
+T: 3 1 : 41 : 57 : 0.09
+T: 3 1 : 41 : 169 : 0.09
+T: 3 1 : 41 : 185 : 0.81
+T: 3 2 : 41 : 9 : 0.09
+T: 3 2 : 41 : 41 : 0.01
+T: 3 2 : 41 : 137 : 0.81
+T: 3 2 : 41 : 169 : 0.09
+T: 3 3 : 41 : 41 : 0.1
+T: 3 3 : 41 : 169 : 0.9
+T: 3 4 : 41 : 45 : 0.1
+T: 3 4 : 41 : 173 : 0.9
+T: 3 5 : 41 : 45 : 0.1
+T: 3 5 : 41 : 173 : 0.9
+T: 4 0 : 41 : 41 : 1.0
+T: 4 1 : 41 : 41 : 0.1
+T: 4 1 : 41 : 57 : 0.9
+T: 4 2 : 41 : 9 : 0.9
+T: 4 2 : 41 : 41 : 0.1
+T: 4 3 : 41 : 41 : 1.0
+T: 4 4 : 41 : 45 : 1.0
+T: 4 5 : 41 : 45 : 1.0
+T: 5 0 : 41 : 41 : 1.0
+T: 5 1 : 41 : 41 : 0.1
+T: 5 1 : 41 : 57 : 0.9
+T: 5 2 : 41 : 9 : 0.9
+T: 5 2 : 41 : 41 : 0.1
+T: 5 3 : 41 : 41 : 1.0
+T: 5 4 : 41 : 45 : 1.0
+T: 5 5 : 41 : 45 : 1.0
+T: 0 0 : 42 : 42 : 1.0
+T: 0 1 : 42 : 42 : 0.1
+T: 0 1 : 42 : 58 : 0.9
+T: 0 2 : 42 : 10 : 0.9
+T: 0 2 : 42 : 42 : 0.1
+T: 0 3 : 42 : 42 : 1.0
+T: 0 4 : 42 : 46 : 1.0
+T: 0 5 : 42 : 46 : 1.0
+T: 1 0 : 42 : 42 : 0.1
+T: 1 0 : 42 : 106 : 0.9
+T: 1 1 : 42 : 42 : 0.01
+T: 1 1 : 42 : 58 : 0.09
+T: 1 1 : 42 : 106 : 0.09
+T: 1 1 : 42 : 122 : 0.81
+T: 1 2 : 42 : 10 : 0.09
+T: 1 2 : 42 : 42 : 0.01
+T: 1 2 : 42 : 74 : 0.81
+T: 1 2 : 42 : 106 : 0.09
+T: 1 3 : 42 : 42 : 0.1
+T: 1 3 : 42 : 106 : 0.9
+T: 1 4 : 42 : 46 : 0.1
+T: 1 4 : 42 : 110 : 0.9
+T: 1 5 : 42 : 46 : 0.1
+T: 1 5 : 42 : 110 : 0.9
+T: 2 0 : 42 : 42 : 1.0
+T: 2 1 : 42 : 42 : 0.1
+T: 2 1 : 42 : 58 : 0.9
+T: 2 2 : 42 : 10 : 0.9
+T: 2 2 : 42 : 42 : 0.1
+T: 2 3 : 42 : 42 : 1.0
+T: 2 4 : 42 : 46 : 1.0
+T: 2 5 : 42 : 46 : 1.0
+T: 3 0 : 42 : 42 : 0.1
+T: 3 0 : 42 : 170 : 0.9
+T: 3 1 : 42 : 42 : 0.01
+T: 3 1 : 42 : 58 : 0.09
+T: 3 1 : 42 : 170 : 0.09
+T: 3 1 : 42 : 186 : 0.81
+T: 3 2 : 42 : 10 : 0.09
+T: 3 2 : 42 : 42 : 0.01
+T: 3 2 : 42 : 138 : 0.81
+T: 3 2 : 42 : 170 : 0.09
+T: 3 3 : 42 : 42 : 0.1
+T: 3 3 : 42 : 170 : 0.9
+T: 3 4 : 42 : 46 : 0.1
+T: 3 4 : 42 : 174 : 0.9
+T: 3 5 : 42 : 46 : 0.1
+T: 3 5 : 42 : 174 : 0.9
+T: 4 0 : 42 : 43 : 1.0
+T: 4 1 : 42 : 43 : 0.1
+T: 4 1 : 42 : 59 : 0.9
+T: 4 2 : 42 : 11 : 0.9
+T: 4 2 : 42 : 43 : 0.1
+T: 4 3 : 42 : 43 : 1.0
+T: 4 4 : 42 : 0 : 1.0
+T: 4 5 : 42 : 0 : 1.0
+T: 5 0 : 42 : 43 : 1.0
+T: 5 1 : 42 : 43 : 0.1
+T: 5 1 : 42 : 59 : 0.9
+T: 5 2 : 42 : 11 : 0.9
+T: 5 2 : 42 : 43 : 0.1
+T: 5 3 : 42 : 43 : 1.0
+T: 5 4 : 42 : 0 : 1.0
+T: 5 5 : 42 : 0 : 1.0
+T: 0 0 : 43 : 43 : 1.0
+T: 0 1 : 43 : 43 : 0.1
+T: 0 1 : 43 : 59 : 0.9
+T: 0 2 : 43 : 11 : 0.9
+T: 0 2 : 43 : 43 : 0.1
+T: 0 3 : 43 : 43 : 1.0
+T: 0 4 : 43 : 0 : 1.0
+T: 0 5 : 43 : 0 : 1.0
+T: 1 0 : 43 : 43 : 0.1
+T: 1 0 : 43 : 107 : 0.9
+T: 1 1 : 43 : 43 : 0.01
+T: 1 1 : 43 : 59 : 0.09
+T: 1 1 : 43 : 107 : 0.09
+T: 1 1 : 43 : 123 : 0.81
+T: 1 2 : 43 : 11 : 0.09
+T: 1 2 : 43 : 43 : 0.01
+T: 1 2 : 43 : 75 : 0.81
+T: 1 2 : 43 : 107 : 0.09
+T: 1 3 : 43 : 43 : 0.1
+T: 1 3 : 43 : 107 : 0.9
+T: 1 4 : 43 : 0 : 1.0
+T: 1 5 : 43 : 0 : 1.0
+T: 2 0 : 43 : 43 : 1.0
+T: 2 1 : 43 : 43 : 0.1
+T: 2 1 : 43 : 59 : 0.9
+T: 2 2 : 43 : 11 : 0.9
+T: 2 2 : 43 : 43 : 0.1
+T: 2 3 : 43 : 43 : 1.0
+T: 2 4 : 43 : 0 : 1.0
+T: 2 5 : 43 : 0 : 1.0
+T: 3 0 : 43 : 43 : 0.1
+T: 3 0 : 43 : 171 : 0.9
+T: 3 1 : 43 : 43 : 0.01
+T: 3 1 : 43 : 59 : 0.09
+T: 3 1 : 43 : 171 : 0.09
+T: 3 1 : 43 : 187 : 0.81
+T: 3 2 : 43 : 11 : 0.09
+T: 3 2 : 43 : 43 : 0.01
+T: 3 2 : 43 : 139 : 0.81
+T: 3 2 : 43 : 171 : 0.09
+T: 3 3 : 43 : 43 : 0.1
+T: 3 3 : 43 : 171 : 0.9
+T: 3 4 : 43 : 0 : 1.0
+T: 3 5 : 43 : 0 : 1.0
+T: 4 0 : 43 : 43 : 1.0
+T: 4 1 : 43 : 43 : 0.1
+T: 4 1 : 43 : 59 : 0.9
+T: 4 2 : 43 : 11 : 0.9
+T: 4 2 : 43 : 43 : 0.1
+T: 4 3 : 43 : 43 : 1.0
+T: 4 4 : 43 : 0 : 1.0
+T: 4 5 : 43 : 0 : 1.0
+T: 5 0 : 43 : 43 : 1.0
+T: 5 1 : 43 : 43 : 0.1
+T: 5 1 : 43 : 59 : 0.9
+T: 5 2 : 43 : 11 : 0.9
+T: 5 2 : 43 : 43 : 0.1
+T: 5 3 : 43 : 43 : 1.0
+T: 5 4 : 43 : 0 : 1.0
+T: 5 5 : 43 : 0 : 1.0
+T: 0 0 : 44 : 44 : 1.0
+T: 0 1 : 44 : 44 : 0.1
+T: 0 1 : 44 : 60 : 0.9
+T: 0 2 : 44 : 12 : 0.9
+T: 0 2 : 44 : 44 : 0.1
+T: 0 3 : 44 : 44 : 1.0
+T: 0 4 : 44 : 44 : 1.0
+T: 0 5 : 44 : 44 : 1.0
+T: 1 0 : 44 : 44 : 0.1
+T: 1 0 : 44 : 108 : 0.9
+T: 1 1 : 44 : 44 : 0.01
+T: 1 1 : 44 : 60 : 0.09
+T: 1 1 : 44 : 108 : 0.09
+T: 1 1 : 44 : 124 : 0.81
+T: 1 2 : 44 : 12 : 0.09
+T: 1 2 : 44 : 44 : 0.01
+T: 1 2 : 44 : 76 : 0.81
+T: 1 2 : 44 : 108 : 0.09
+T: 1 3 : 44 : 44 : 0.1
+T: 1 3 : 44 : 108 : 0.9
+T: 1 4 : 44 : 44 : 0.1
+T: 1 4 : 44 : 108 : 0.9
+T: 1 5 : 44 : 44 : 0.1
+T: 1 5 : 44 : 108 : 0.9
+T: 2 0 : 44 : 44 : 1.0
+T: 2 1 : 44 : 44 : 0.1
+T: 2 1 : 44 : 60 : 0.9
+T: 2 2 : 44 : 12 : 0.9
+T: 2 2 : 44 : 44 : 0.1
+T: 2 3 : 44 : 44 : 1.0
+T: 2 4 : 44 : 44 : 1.0
+T: 2 5 : 44 : 44 : 1.0
+T: 3 0 : 44 : 44 : 0.1
+T: 3 0 : 44 : 172 : 0.9
+T: 3 1 : 44 : 44 : 0.01
+T: 3 1 : 44 : 60 : 0.09
+T: 3 1 : 44 : 172 : 0.09
+T: 3 1 : 44 : 188 : 0.81
+T: 3 2 : 44 : 12 : 0.09
+T: 3 2 : 44 : 44 : 0.01
+T: 3 2 : 44 : 140 : 0.81
+T: 3 2 : 44 : 172 : 0.09
+T: 3 3 : 44 : 44 : 0.1
+T: 3 3 : 44 : 172 : 0.9
+T: 3 4 : 44 : 44 : 0.1
+T: 3 4 : 44 : 172 : 0.9
+T: 3 5 : 44 : 44 : 0.1
+T: 3 5 : 44 : 172 : 0.9
+T: 4 0 : 44 : 45 : 1.0
+T: 4 1 : 44 : 45 : 0.1
+T: 4 1 : 44 : 61 : 0.9
+T: 4 2 : 44 : 13 : 0.9
+T: 4 2 : 44 : 45 : 0.1
+T: 4 3 : 44 : 45 : 1.0
+T: 4 4 : 44 : 45 : 1.0
+T: 4 5 : 44 : 45 : 1.0
+T: 5 0 : 44 : 45 : 1.0
+T: 5 1 : 44 : 45 : 0.1
+T: 5 1 : 44 : 61 : 0.9
+T: 5 2 : 44 : 13 : 0.9
+T: 5 2 : 44 : 45 : 0.1
+T: 5 3 : 44 : 45 : 1.0
+T: 5 4 : 44 : 45 : 1.0
+T: 5 5 : 44 : 45 : 1.0
+T: 0 0 : 45 : 45 : 1.0
+T: 0 1 : 45 : 45 : 0.1
+T: 0 1 : 45 : 61 : 0.9
+T: 0 2 : 45 : 13 : 0.9
+T: 0 2 : 45 : 45 : 0.1
+T: 0 3 : 45 : 45 : 1.0
+T: 0 4 : 45 : 45 : 1.0
+T: 0 5 : 45 : 45 : 1.0
+T: 1 0 : 45 : 45 : 0.1
+T: 1 0 : 45 : 109 : 0.9
+T: 1 1 : 45 : 45 : 0.01
+T: 1 1 : 45 : 61 : 0.09
+T: 1 1 : 45 : 109 : 0.09
+T: 1 1 : 45 : 125 : 0.81
+T: 1 2 : 45 : 13 : 0.09
+T: 1 2 : 45 : 45 : 0.01
+T: 1 2 : 45 : 77 : 0.81
+T: 1 2 : 45 : 109 : 0.09
+T: 1 3 : 45 : 45 : 0.1
+T: 1 3 : 45 : 109 : 0.9
+T: 1 4 : 45 : 45 : 0.1
+T: 1 4 : 45 : 109 : 0.9
+T: 1 5 : 45 : 45 : 0.1
+T: 1 5 : 45 : 109 : 0.9
+T: 2 0 : 45 : 45 : 1.0
+T: 2 1 : 45 : 45 : 0.1
+T: 2 1 : 45 : 61 : 0.9
+T: 2 2 : 45 : 13 : 0.9
+T: 2 2 : 45 : 45 : 0.1
+T: 2 3 : 45 : 45 : 1.0
+T: 2 4 : 45 : 45 : 1.0
+T: 2 5 : 45 : 45 : 1.0
+T: 3 0 : 45 : 45 : 0.1
+T: 3 0 : 45 : 173 : 0.9
+T: 3 1 : 45 : 45 : 0.01
+T: 3 1 : 45 : 61 : 0.09
+T: 3 1 : 45 : 173 : 0.09
+T: 3 1 : 45 : 189 : 0.81
+T: 3 2 : 45 : 13 : 0.09
+T: 3 2 : 45 : 45 : 0.01
+T: 3 2 : 45 : 141 : 0.81
+T: 3 2 : 45 : 173 : 0.09
+T: 3 3 : 45 : 45 : 0.1
+T: 3 3 : 45 : 173 : 0.9
+T: 3 4 : 45 : 45 : 0.1
+T: 3 4 : 45 : 173 : 0.9
+T: 3 5 : 45 : 45 : 0.1
+T: 3 5 : 45 : 173 : 0.9
+T: 4 0 : 45 : 45 : 1.0
+T: 4 1 : 45 : 45 : 0.1
+T: 4 1 : 45 : 61 : 0.9
+T: 4 2 : 45 : 13 : 0.9
+T: 4 2 : 45 : 45 : 0.1
+T: 4 3 : 45 : 45 : 1.0
+T: 4 4 : 45 : 45 : 1.0
+T: 4 5 : 45 : 45 : 1.0
+T: 5 0 : 45 : 45 : 1.0
+T: 5 1 : 45 : 45 : 0.1
+T: 5 1 : 45 : 61 : 0.9
+T: 5 2 : 45 : 13 : 0.9
+T: 5 2 : 45 : 45 : 0.1
+T: 5 3 : 45 : 45 : 1.0
+T: 5 4 : 45 : 45 : 1.0
+T: 5 5 : 45 : 45 : 1.0
+T: 0 0 : 46 : 46 : 1.0
+T: 0 1 : 46 : 46 : 0.1
+T: 0 1 : 46 : 62 : 0.9
+T: 0 2 : 46 : 14 : 0.9
+T: 0 2 : 46 : 46 : 0.1
+T: 0 3 : 46 : 46 : 1.0
+T: 0 4 : 46 : 46 : 1.0
+T: 0 5 : 46 : 46 : 1.0
+T: 1 0 : 46 : 46 : 0.1
+T: 1 0 : 46 : 110 : 0.9
+T: 1 1 : 46 : 46 : 0.01
+T: 1 1 : 46 : 62 : 0.09
+T: 1 1 : 46 : 110 : 0.09
+T: 1 1 : 46 : 126 : 0.81
+T: 1 2 : 46 : 14 : 0.09
+T: 1 2 : 46 : 46 : 0.01
+T: 1 2 : 46 : 78 : 0.81
+T: 1 2 : 46 : 110 : 0.09
+T: 1 3 : 46 : 46 : 0.1
+T: 1 3 : 46 : 110 : 0.9
+T: 1 4 : 46 : 46 : 0.1
+T: 1 4 : 46 : 110 : 0.9
+T: 1 5 : 46 : 46 : 0.1
+T: 1 5 : 46 : 110 : 0.9
+T: 2 0 : 46 : 46 : 1.0
+T: 2 1 : 46 : 46 : 0.1
+T: 2 1 : 46 : 62 : 0.9
+T: 2 2 : 46 : 14 : 0.9
+T: 2 2 : 46 : 46 : 0.1
+T: 2 3 : 46 : 46 : 1.0
+T: 2 4 : 46 : 46 : 1.0
+T: 2 5 : 46 : 46 : 1.0
+T: 3 0 : 46 : 46 : 0.1
+T: 3 0 : 46 : 174 : 0.9
+T: 3 1 : 46 : 46 : 0.01
+T: 3 1 : 46 : 62 : 0.09
+T: 3 1 : 46 : 174 : 0.09
+T: 3 1 : 46 : 190 : 0.81
+T: 3 2 : 46 : 14 : 0.09
+T: 3 2 : 46 : 46 : 0.01
+T: 3 2 : 46 : 142 : 0.81
+T: 3 2 : 46 : 174 : 0.09
+T: 3 3 : 46 : 46 : 0.1
+T: 3 3 : 46 : 174 : 0.9
+T: 3 4 : 46 : 46 : 0.1
+T: 3 4 : 46 : 174 : 0.9
+T: 3 5 : 46 : 46 : 0.1
+T: 3 5 : 46 : 174 : 0.9
+T: 4 0 : 46 : 0 : 1.0
+T: 4 1 : 46 : 0 : 1.0
+T: 4 2 : 46 : 0 : 1.0
+T: 4 3 : 46 : 0 : 1.0
+T: 4 4 : 46 : 0 : 1.0
+T: 4 5 : 46 : 0 : 1.0
+T: 5 0 : 46 : 0 : 1.0
+T: 5 1 : 46 : 0 : 1.0
+T: 5 2 : 46 : 0 : 1.0
+T: 5 3 : 46 : 0 : 1.0
+T: 5 4 : 46 : 0 : 1.0
+T: 5 5 : 46 : 0 : 1.0
+T: 0 0 : 47 : 47 : 1.0
+T: 0 1 : 47 : 47 : 0.1
+T: 0 1 : 47 : 63 : 0.9
+T: 0 2 : 47 : 15 : 0.9
+T: 0 2 : 47 : 47 : 0.1
+T: 0 3 : 47 : 47 : 1.0
+T: 0 4 : 47 : 0 : 1.0
+T: 0 5 : 47 : 0 : 1.0
+T: 1 0 : 47 : 47 : 0.1
+T: 1 0 : 47 : 111 : 0.9
+T: 1 1 : 47 : 47 : 0.01
+T: 1 1 : 47 : 63 : 0.09
+T: 1 1 : 47 : 111 : 0.09
+T: 1 1 : 47 : 127 : 0.81
+T: 1 2 : 47 : 15 : 0.09
+T: 1 2 : 47 : 47 : 0.01
+T: 1 2 : 47 : 79 : 0.81
+T: 1 2 : 47 : 111 : 0.09
+T: 1 3 : 47 : 47 : 0.1
+T: 1 3 : 47 : 111 : 0.9
+T: 1 4 : 47 : 0 : 1.0
+T: 1 5 : 47 : 0 : 1.0
+T: 2 0 : 47 : 47 : 1.0
+T: 2 1 : 47 : 47 : 0.1
+T: 2 1 : 47 : 63 : 0.9
+T: 2 2 : 47 : 15 : 0.9
+T: 2 2 : 47 : 47 : 0.1
+T: 2 3 : 47 : 47 : 1.0
+T: 2 4 : 47 : 0 : 1.0
+T: 2 5 : 47 : 0 : 1.0
+T: 3 0 : 47 : 47 : 0.1
+T: 3 0 : 47 : 175 : 0.9
+T: 3 1 : 47 : 47 : 0.01
+T: 3 1 : 47 : 63 : 0.09
+T: 3 1 : 47 : 175 : 0.09
+T: 3 1 : 47 : 191 : 0.81
+T: 3 2 : 47 : 15 : 0.09
+T: 3 2 : 47 : 47 : 0.01
+T: 3 2 : 47 : 143 : 0.81
+T: 3 2 : 47 : 175 : 0.09
+T: 3 3 : 47 : 47 : 0.1
+T: 3 3 : 47 : 175 : 0.9
+T: 3 4 : 47 : 0 : 1.0
+T: 3 5 : 47 : 0 : 1.0
+T: 4 0 : 47 : 0 : 1.0
+T: 4 1 : 47 : 0 : 1.0
+T: 4 2 : 47 : 0 : 1.0
+T: 4 3 : 47 : 0 : 1.0
+T: 4 4 : 47 : 0 : 1.0
+T: 4 5 : 47 : 0 : 1.0
+T: 5 0 : 47 : 0 : 1.0
+T: 5 1 : 47 : 0 : 1.0
+T: 5 2 : 47 : 0 : 1.0
+T: 5 3 : 47 : 0 : 1.0
+T: 5 4 : 47 : 0 : 1.0
+T: 5 5 : 47 : 0 : 1.0
+T: 0 0 : 48 : 32 : 0.9
+T: 0 0 : 48 : 48 : 0.1
+T: 0 1 : 48 : 48 : 1.0
+T: 0 2 : 48 : 16 : 0.9
+T: 0 2 : 48 : 48 : 0.1
+T: 0 3 : 48 : 48 : 1.0
+T: 0 4 : 48 : 56 : 1.0
+T: 0 5 : 48 : 56 : 1.0
+T: 1 0 : 48 : 32 : 0.09
+T: 1 0 : 48 : 48 : 0.01
+T: 1 0 : 48 : 96 : 0.81
+T: 1 0 : 48 : 112 : 0.09
+T: 1 1 : 48 : 48 : 0.1
+T: 1 1 : 48 : 112 : 0.9
+T: 1 2 : 48 : 16 : 0.09
+T: 1 2 : 48 : 48 : 0.01
+T: 1 2 : 48 : 80 : 0.81
+T: 1 2 : 48 : 112 : 0.09
+T: 1 3 : 48 : 48 : 0.1
+T: 1 3 : 48 : 112 : 0.9
+T: 1 4 : 48 : 56 : 0.1
+T: 1 4 : 48 : 120 : 0.9
+T: 1 5 : 48 : 56 : 0.1
+T: 1 5 : 48 : 120 : 0.9
+T: 2 0 : 48 : 32 : 0.9
+T: 2 0 : 48 : 48 : 0.1
+T: 2 1 : 48 : 48 : 1.0
+T: 2 2 : 48 : 16 : 0.9
+T: 2 2 : 48 : 48 : 0.1
+T: 2 3 : 48 : 48 : 1.0
+T: 2 4 : 48 : 56 : 1.0
+T: 2 5 : 48 : 56 : 1.0
+T: 3 0 : 48 : 32 : 0.09
+T: 3 0 : 48 : 48 : 0.01
+T: 3 0 : 48 : 160 : 0.81
+T: 3 0 : 48 : 176 : 0.09
+T: 3 1 : 48 : 48 : 0.1
+T: 3 1 : 48 : 176 : 0.9
+T: 3 2 : 48 : 16 : 0.09
+T: 3 2 : 48 : 48 : 0.01
+T: 3 2 : 48 : 144 : 0.81
+T: 3 2 : 48 : 176 : 0.09
+T: 3 3 : 48 : 48 : 0.1
+T: 3 3 : 48 : 176 : 0.9
+T: 3 4 : 48 : 56 : 0.1
+T: 3 4 : 48 : 184 : 0.9
+T: 3 5 : 48 : 56 : 0.1
+T: 3 5 : 48 : 184 : 0.9
+T: 4 0 : 48 : 33 : 0.9
+T: 4 0 : 48 : 49 : 0.1
+T: 4 1 : 48 : 49 : 1.0
+T: 4 2 : 48 : 17 : 0.9
+T: 4 2 : 48 : 49 : 0.1
+T: 4 3 : 48 : 49 : 1.0
+T: 4 4 : 48 : 57 : 1.0
+T: 4 5 : 48 : 57 : 1.0
+T: 5 0 : 48 : 33 : 0.9
+T: 5 0 : 48 : 49 : 0.1
+T: 5 1 : 48 : 49 : 1.0
+T: 5 2 : 48 : 17 : 0.9
+T: 5 2 : 48 : 49 : 0.1
+T: 5 3 : 48 : 49 : 1.0
+T: 5 4 : 48 : 57 : 1.0
+T: 5 5 : 48 : 57 : 1.0
+T: 0 0 : 49 : 33 : 0.9
+T: 0 0 : 49 : 49 : 0.1
+T: 0 1 : 49 : 49 : 1.0
+T: 0 2 : 49 : 17 : 0.9
+T: 0 2 : 49 : 49 : 0.1
+T: 0 3 : 49 : 49 : 1.0
+T: 0 4 : 49 : 57 : 1.0
+T: 0 5 : 49 : 57 : 1.0
+T: 1 0 : 49 : 33 : 0.09
+T: 1 0 : 49 : 49 : 0.01
+T: 1 0 : 49 : 97 : 0.81
+T: 1 0 : 49 : 113 : 0.09
+T: 1 1 : 49 : 49 : 0.1
+T: 1 1 : 49 : 113 : 0.9
+T: 1 2 : 49 : 17 : 0.09
+T: 1 2 : 49 : 49 : 0.01
+T: 1 2 : 49 : 81 : 0.81
+T: 1 2 : 49 : 113 : 0.09
+T: 1 3 : 49 : 49 : 0.1
+T: 1 3 : 49 : 113 : 0.9
+T: 1 4 : 49 : 57 : 0.1
+T: 1 4 : 49 : 121 : 0.9
+T: 1 5 : 49 : 57 : 0.1
+T: 1 5 : 49 : 121 : 0.9
+T: 2 0 : 49 : 33 : 0.9
+T: 2 0 : 49 : 49 : 0.1
+T: 2 1 : 49 : 49 : 1.0
+T: 2 2 : 49 : 17 : 0.9
+T: 2 2 : 49 : 49 : 0.1
+T: 2 3 : 49 : 49 : 1.0
+T: 2 4 : 49 : 57 : 1.0
+T: 2 5 : 49 : 57 : 1.0
+T: 3 0 : 49 : 33 : 0.09
+T: 3 0 : 49 : 49 : 0.01
+T: 3 0 : 49 : 161 : 0.81
+T: 3 0 : 49 : 177 : 0.09
+T: 3 1 : 49 : 49 : 0.1
+T: 3 1 : 49 : 177 : 0.9
+T: 3 2 : 49 : 17 : 0.09
+T: 3 2 : 49 : 49 : 0.01
+T: 3 2 : 49 : 145 : 0.81
+T: 3 2 : 49 : 177 : 0.09
+T: 3 3 : 49 : 49 : 0.1
+T: 3 3 : 49 : 177 : 0.9
+T: 3 4 : 49 : 57 : 0.1
+T: 3 4 : 49 : 185 : 0.9
+T: 3 5 : 49 : 57 : 0.1
+T: 3 5 : 49 : 185 : 0.9
+T: 4 0 : 49 : 33 : 0.9
+T: 4 0 : 49 : 49 : 0.1
+T: 4 1 : 49 : 49 : 1.0
+T: 4 2 : 49 : 17 : 0.9
+T: 4 2 : 49 : 49 : 0.1
+T: 4 3 : 49 : 49 : 1.0
+T: 4 4 : 49 : 57 : 1.0
+T: 4 5 : 49 : 57 : 1.0
+T: 5 0 : 49 : 33 : 0.9
+T: 5 0 : 49 : 49 : 0.1
+T: 5 1 : 49 : 49 : 1.0
+T: 5 2 : 49 : 17 : 0.9
+T: 5 2 : 49 : 49 : 0.1
+T: 5 3 : 49 : 49 : 1.0
+T: 5 4 : 49 : 57 : 1.0
+T: 5 5 : 49 : 57 : 1.0
+T: 0 0 : 50 : 34 : 0.9
+T: 0 0 : 50 : 50 : 0.1
+T: 0 1 : 50 : 50 : 1.0
+T: 0 2 : 50 : 18 : 0.9
+T: 0 2 : 50 : 50 : 0.1
+T: 0 3 : 50 : 50 : 1.0
+T: 0 4 : 50 : 58 : 1.0
+T: 0 5 : 50 : 58 : 1.0
+T: 1 0 : 50 : 34 : 0.09
+T: 1 0 : 50 : 50 : 0.01
+T: 1 0 : 50 : 98 : 0.81
+T: 1 0 : 50 : 114 : 0.09
+T: 1 1 : 50 : 50 : 0.1
+T: 1 1 : 50 : 114 : 0.9
+T: 1 2 : 50 : 18 : 0.09
+T: 1 2 : 50 : 50 : 0.01
+T: 1 2 : 50 : 82 : 0.81
+T: 1 2 : 50 : 114 : 0.09
+T: 1 3 : 50 : 50 : 0.1
+T: 1 3 : 50 : 114 : 0.9
+T: 1 4 : 50 : 58 : 0.1
+T: 1 4 : 50 : 122 : 0.9
+T: 1 5 : 50 : 58 : 0.1
+T: 1 5 : 50 : 122 : 0.9
+T: 2 0 : 50 : 34 : 0.9
+T: 2 0 : 50 : 50 : 0.1
+T: 2 1 : 50 : 50 : 1.0
+T: 2 2 : 50 : 18 : 0.9
+T: 2 2 : 50 : 50 : 0.1
+T: 2 3 : 50 : 50 : 1.0
+T: 2 4 : 50 : 58 : 1.0
+T: 2 5 : 50 : 58 : 1.0
+T: 3 0 : 50 : 34 : 0.09
+T: 3 0 : 50 : 50 : 0.01
+T: 3 0 : 50 : 162 : 0.81
+T: 3 0 : 50 : 178 : 0.09
+T: 3 1 : 50 : 50 : 0.1
+T: 3 1 : 50 : 178 : 0.9
+T: 3 2 : 50 : 18 : 0.09
+T: 3 2 : 50 : 50 : 0.01
+T: 3 2 : 50 : 146 : 0.81
+T: 3 2 : 50 : 178 : 0.09
+T: 3 3 : 50 : 50 : 0.1
+T: 3 3 : 50 : 178 : 0.9
+T: 3 4 : 50 : 58 : 0.1
+T: 3 4 : 50 : 186 : 0.9
+T: 3 5 : 50 : 58 : 0.1
+T: 3 5 : 50 : 186 : 0.9
+T: 4 0 : 50 : 35 : 0.9
+T: 4 0 : 50 : 51 : 0.1
+T: 4 1 : 50 : 51 : 1.0
+T: 4 2 : 50 : 19 : 0.9
+T: 4 2 : 50 : 51 : 0.1
+T: 4 3 : 50 : 51 : 1.0
+T: 4 4 : 50 : 59 : 1.0
+T: 4 5 : 50 : 59 : 1.0
+T: 5 0 : 50 : 35 : 0.9
+T: 5 0 : 50 : 51 : 0.1
+T: 5 1 : 50 : 51 : 1.0
+T: 5 2 : 50 : 19 : 0.9
+T: 5 2 : 50 : 51 : 0.1
+T: 5 3 : 50 : 51 : 1.0
+T: 5 4 : 50 : 59 : 1.0
+T: 5 5 : 50 : 59 : 1.0
+T: 0 0 : 51 : 35 : 0.9
+T: 0 0 : 51 : 51 : 0.1
+T: 0 1 : 51 : 51 : 1.0
+T: 0 2 : 51 : 19 : 0.9
+T: 0 2 : 51 : 51 : 0.1
+T: 0 3 : 51 : 51 : 1.0
+T: 0 4 : 51 : 59 : 1.0
+T: 0 5 : 51 : 59 : 1.0
+T: 1 0 : 51 : 35 : 0.09
+T: 1 0 : 51 : 51 : 0.01
+T: 1 0 : 51 : 99 : 0.81
+T: 1 0 : 51 : 115 : 0.09
+T: 1 1 : 51 : 51 : 0.1
+T: 1 1 : 51 : 115 : 0.9
+T: 1 2 : 51 : 19 : 0.09
+T: 1 2 : 51 : 51 : 0.01
+T: 1 2 : 51 : 83 : 0.81
+T: 1 2 : 51 : 115 : 0.09
+T: 1 3 : 51 : 51 : 0.1
+T: 1 3 : 51 : 115 : 0.9
+T: 1 4 : 51 : 59 : 0.1
+T: 1 4 : 51 : 123 : 0.9
+T: 1 5 : 51 : 59 : 0.1
+T: 1 5 : 51 : 123 : 0.9
+T: 2 0 : 51 : 35 : 0.9
+T: 2 0 : 51 : 51 : 0.1
+T: 2 1 : 51 : 51 : 1.0
+T: 2 2 : 51 : 19 : 0.9
+T: 2 2 : 51 : 51 : 0.1
+T: 2 3 : 51 : 51 : 1.0
+T: 2 4 : 51 : 59 : 1.0
+T: 2 5 : 51 : 59 : 1.0
+T: 3 0 : 51 : 35 : 0.09
+T: 3 0 : 51 : 51 : 0.01
+T: 3 0 : 51 : 163 : 0.81
+T: 3 0 : 51 : 179 : 0.09
+T: 3 1 : 51 : 51 : 0.1
+T: 3 1 : 51 : 179 : 0.9
+T: 3 2 : 51 : 19 : 0.09
+T: 3 2 : 51 : 51 : 0.01
+T: 3 2 : 51 : 147 : 0.81
+T: 3 2 : 51 : 179 : 0.09
+T: 3 3 : 51 : 51 : 0.1
+T: 3 3 : 51 : 179 : 0.9
+T: 3 4 : 51 : 59 : 0.1
+T: 3 4 : 51 : 187 : 0.9
+T: 3 5 : 51 : 59 : 0.1
+T: 3 5 : 51 : 187 : 0.9
+T: 4 0 : 51 : 35 : 0.9
+T: 4 0 : 51 : 51 : 0.1
+T: 4 1 : 51 : 51 : 1.0
+T: 4 2 : 51 : 19 : 0.9
+T: 4 2 : 51 : 51 : 0.1
+T: 4 3 : 51 : 51 : 1.0
+T: 4 4 : 51 : 59 : 1.0
+T: 4 5 : 51 : 59 : 1.0
+T: 5 0 : 51 : 35 : 0.9
+T: 5 0 : 51 : 51 : 0.1
+T: 5 1 : 51 : 51 : 1.0
+T: 5 2 : 51 : 19 : 0.9
+T: 5 2 : 51 : 51 : 0.1
+T: 5 3 : 51 : 51 : 1.0
+T: 5 4 : 51 : 59 : 1.0
+T: 5 5 : 51 : 59 : 1.0
+T: 0 0 : 52 : 36 : 0.9
+T: 0 0 : 52 : 52 : 0.1
+T: 0 1 : 52 : 52 : 1.0
+T: 0 2 : 52 : 20 : 0.9
+T: 0 2 : 52 : 52 : 0.1
+T: 0 3 : 52 : 52 : 1.0
+T: 0 4 : 52 : 60 : 1.0
+T: 0 5 : 52 : 60 : 1.0
+T: 1 0 : 52 : 36 : 0.09
+T: 1 0 : 52 : 52 : 0.01
+T: 1 0 : 52 : 100 : 0.81
+T: 1 0 : 52 : 116 : 0.09
+T: 1 1 : 52 : 52 : 0.1
+T: 1 1 : 52 : 116 : 0.9
+T: 1 2 : 52 : 20 : 0.09
+T: 1 2 : 52 : 52 : 0.01
+T: 1 2 : 52 : 84 : 0.81
+T: 1 2 : 52 : 116 : 0.09
+T: 1 3 : 52 : 52 : 0.1
+T: 1 3 : 52 : 116 : 0.9
+T: 1 4 : 52 : 60 : 0.1
+T: 1 4 : 52 : 124 : 0.9
+T: 1 5 : 52 : 60 : 0.1
+T: 1 5 : 52 : 124 : 0.9
+T: 2 0 : 52 : 36 : 0.9
+T: 2 0 : 52 : 52 : 0.1
+T: 2 1 : 52 : 52 : 1.0
+T: 2 2 : 52 : 20 : 0.9
+T: 2 2 : 52 : 52 : 0.1
+T: 2 3 : 52 : 52 : 1.0
+T: 2 4 : 52 : 60 : 1.0
+T: 2 5 : 52 : 60 : 1.0
+T: 3 0 : 52 : 36 : 0.09
+T: 3 0 : 52 : 52 : 0.01
+T: 3 0 : 52 : 164 : 0.81
+T: 3 0 : 52 : 180 : 0.09
+T: 3 1 : 52 : 52 : 0.1
+T: 3 1 : 52 : 180 : 0.9
+T: 3 2 : 52 : 20 : 0.09
+T: 3 2 : 52 : 52 : 0.01
+T: 3 2 : 52 : 148 : 0.81
+T: 3 2 : 52 : 180 : 0.09
+T: 3 3 : 52 : 52 : 0.1
+T: 3 3 : 52 : 180 : 0.9
+T: 3 4 : 52 : 60 : 0.1
+T: 3 4 : 52 : 188 : 0.9
+T: 3 5 : 52 : 60 : 0.1
+T: 3 5 : 52 : 188 : 0.9
+T: 4 0 : 52 : 37 : 0.9
+T: 4 0 : 52 : 53 : 0.1
+T: 4 1 : 52 : 53 : 1.0
+T: 4 2 : 52 : 21 : 0.9
+T: 4 2 : 52 : 53 : 0.1
+T: 4 3 : 52 : 53 : 1.0
+T: 4 4 : 52 : 61 : 1.0
+T: 4 5 : 52 : 61 : 1.0
+T: 5 0 : 52 : 37 : 0.9
+T: 5 0 : 52 : 53 : 0.1
+T: 5 1 : 52 : 53 : 1.0
+T: 5 2 : 52 : 21 : 0.9
+T: 5 2 : 52 : 53 : 0.1
+T: 5 3 : 52 : 53 : 1.0
+T: 5 4 : 52 : 61 : 1.0
+T: 5 5 : 52 : 61 : 1.0
+T: 0 0 : 53 : 37 : 0.9
+T: 0 0 : 53 : 53 : 0.1
+T: 0 1 : 53 : 53 : 1.0
+T: 0 2 : 53 : 21 : 0.9
+T: 0 2 : 53 : 53 : 0.1
+T: 0 3 : 53 : 53 : 1.0
+T: 0 4 : 53 : 61 : 1.0
+T: 0 5 : 53 : 61 : 1.0
+T: 1 0 : 53 : 37 : 0.09
+T: 1 0 : 53 : 53 : 0.01
+T: 1 0 : 53 : 101 : 0.81
+T: 1 0 : 53 : 117 : 0.09
+T: 1 1 : 53 : 53 : 0.1
+T: 1 1 : 53 : 117 : 0.9
+T: 1 2 : 53 : 21 : 0.09
+T: 1 2 : 53 : 53 : 0.01
+T: 1 2 : 53 : 85 : 0.81
+T: 1 2 : 53 : 117 : 0.09
+T: 1 3 : 53 : 53 : 0.1
+T: 1 3 : 53 : 117 : 0.9
+T: 1 4 : 53 : 61 : 0.1
+T: 1 4 : 53 : 125 : 0.9
+T: 1 5 : 53 : 61 : 0.1
+T: 1 5 : 53 : 125 : 0.9
+T: 2 0 : 53 : 37 : 0.9
+T: 2 0 : 53 : 53 : 0.1
+T: 2 1 : 53 : 53 : 1.0
+T: 2 2 : 53 : 21 : 0.9
+T: 2 2 : 53 : 53 : 0.1
+T: 2 3 : 53 : 53 : 1.0
+T: 2 4 : 53 : 61 : 1.0
+T: 2 5 : 53 : 61 : 1.0
+T: 3 0 : 53 : 37 : 0.09
+T: 3 0 : 53 : 53 : 0.01
+T: 3 0 : 53 : 165 : 0.81
+T: 3 0 : 53 : 181 : 0.09
+T: 3 1 : 53 : 53 : 0.1
+T: 3 1 : 53 : 181 : 0.9
+T: 3 2 : 53 : 21 : 0.09
+T: 3 2 : 53 : 53 : 0.01
+T: 3 2 : 53 : 149 : 0.81
+T: 3 2 : 53 : 181 : 0.09
+T: 3 3 : 53 : 53 : 0.1
+T: 3 3 : 53 : 181 : 0.9
+T: 3 4 : 53 : 61 : 0.1
+T: 3 4 : 53 : 189 : 0.9
+T: 3 5 : 53 : 61 : 0.1
+T: 3 5 : 53 : 189 : 0.9
+T: 4 0 : 53 : 37 : 0.9
+T: 4 0 : 53 : 53 : 0.1
+T: 4 1 : 53 : 53 : 1.0
+T: 4 2 : 53 : 21 : 0.9
+T: 4 2 : 53 : 53 : 0.1
+T: 4 3 : 53 : 53 : 1.0
+T: 4 4 : 53 : 61 : 1.0
+T: 4 5 : 53 : 61 : 1.0
+T: 5 0 : 53 : 37 : 0.9
+T: 5 0 : 53 : 53 : 0.1
+T: 5 1 : 53 : 53 : 1.0
+T: 5 2 : 53 : 21 : 0.9
+T: 5 2 : 53 : 53 : 0.1
+T: 5 3 : 53 : 53 : 1.0
+T: 5 4 : 53 : 61 : 1.0
+T: 5 5 : 53 : 61 : 1.0
+T: 0 0 : 54 : 38 : 0.9
+T: 0 0 : 54 : 54 : 0.1
+T: 0 1 : 54 : 54 : 1.0
+T: 0 2 : 54 : 22 : 0.9
+T: 0 2 : 54 : 54 : 0.1
+T: 0 3 : 54 : 54 : 1.0
+T: 0 4 : 54 : 62 : 1.0
+T: 0 5 : 54 : 62 : 1.0
+T: 1 0 : 54 : 38 : 0.09
+T: 1 0 : 54 : 54 : 0.01
+T: 1 0 : 54 : 102 : 0.81
+T: 1 0 : 54 : 118 : 0.09
+T: 1 1 : 54 : 54 : 0.1
+T: 1 1 : 54 : 118 : 0.9
+T: 1 2 : 54 : 22 : 0.09
+T: 1 2 : 54 : 54 : 0.01
+T: 1 2 : 54 : 86 : 0.81
+T: 1 2 : 54 : 118 : 0.09
+T: 1 3 : 54 : 54 : 0.1
+T: 1 3 : 54 : 118 : 0.9
+T: 1 4 : 54 : 62 : 0.1
+T: 1 4 : 54 : 126 : 0.9
+T: 1 5 : 54 : 62 : 0.1
+T: 1 5 : 54 : 126 : 0.9
+T: 2 0 : 54 : 38 : 0.9
+T: 2 0 : 54 : 54 : 0.1
+T: 2 1 : 54 : 54 : 1.0
+T: 2 2 : 54 : 22 : 0.9
+T: 2 2 : 54 : 54 : 0.1
+T: 2 3 : 54 : 54 : 1.0
+T: 2 4 : 54 : 62 : 1.0
+T: 2 5 : 54 : 62 : 1.0
+T: 3 0 : 54 : 38 : 0.09
+T: 3 0 : 54 : 54 : 0.01
+T: 3 0 : 54 : 166 : 0.81
+T: 3 0 : 54 : 182 : 0.09
+T: 3 1 : 54 : 54 : 0.1
+T: 3 1 : 54 : 182 : 0.9
+T: 3 2 : 54 : 22 : 0.09
+T: 3 2 : 54 : 54 : 0.01
+T: 3 2 : 54 : 150 : 0.81
+T: 3 2 : 54 : 182 : 0.09
+T: 3 3 : 54 : 54 : 0.1
+T: 3 3 : 54 : 182 : 0.9
+T: 3 4 : 54 : 62 : 0.1
+T: 3 4 : 54 : 190 : 0.9
+T: 3 5 : 54 : 62 : 0.1
+T: 3 5 : 54 : 190 : 0.9
+T: 4 0 : 54 : 39 : 0.9
+T: 4 0 : 54 : 55 : 0.1
+T: 4 1 : 54 : 55 : 1.0
+T: 4 2 : 54 : 23 : 0.9
+T: 4 2 : 54 : 55 : 0.1
+T: 4 3 : 54 : 55 : 1.0
+T: 4 4 : 54 : 0 : 1.0
+T: 4 5 : 54 : 0 : 1.0
+T: 5 0 : 54 : 39 : 0.9
+T: 5 0 : 54 : 55 : 0.1
+T: 5 1 : 54 : 55 : 1.0
+T: 5 2 : 54 : 23 : 0.9
+T: 5 2 : 54 : 55 : 0.1
+T: 5 3 : 54 : 55 : 1.0
+T: 5 4 : 54 : 0 : 1.0
+T: 5 5 : 54 : 0 : 1.0
+T: 0 0 : 55 : 39 : 0.9
+T: 0 0 : 55 : 55 : 0.1
+T: 0 1 : 55 : 55 : 1.0
+T: 0 2 : 55 : 23 : 0.9
+T: 0 2 : 55 : 55 : 0.1
+T: 0 3 : 55 : 55 : 1.0
+T: 0 4 : 55 : 0 : 1.0
+T: 0 5 : 55 : 0 : 1.0
+T: 1 0 : 55 : 39 : 0.09
+T: 1 0 : 55 : 55 : 0.01
+T: 1 0 : 55 : 103 : 0.81
+T: 1 0 : 55 : 119 : 0.09
+T: 1 1 : 55 : 55 : 0.1
+T: 1 1 : 55 : 119 : 0.9
+T: 1 2 : 55 : 23 : 0.09
+T: 1 2 : 55 : 55 : 0.01
+T: 1 2 : 55 : 87 : 0.81
+T: 1 2 : 55 : 119 : 0.09
+T: 1 3 : 55 : 55 : 0.1
+T: 1 3 : 55 : 119 : 0.9
+T: 1 4 : 55 : 0 : 1.0
+T: 1 5 : 55 : 0 : 1.0
+T: 2 0 : 55 : 39 : 0.9
+T: 2 0 : 55 : 55 : 0.1
+T: 2 1 : 55 : 55 : 1.0
+T: 2 2 : 55 : 23 : 0.9
+T: 2 2 : 55 : 55 : 0.1
+T: 2 3 : 55 : 55 : 1.0
+T: 2 4 : 55 : 0 : 1.0
+T: 2 5 : 55 : 0 : 1.0
+T: 3 0 : 55 : 39 : 0.09
+T: 3 0 : 55 : 55 : 0.01
+T: 3 0 : 55 : 167 : 0.81
+T: 3 0 : 55 : 183 : 0.09
+T: 3 1 : 55 : 55 : 0.1
+T: 3 1 : 55 : 183 : 0.9
+T: 3 2 : 55 : 23 : 0.09
+T: 3 2 : 55 : 55 : 0.01
+T: 3 2 : 55 : 151 : 0.81
+T: 3 2 : 55 : 183 : 0.09
+T: 3 3 : 55 : 55 : 0.1
+T: 3 3 : 55 : 183 : 0.9
+T: 3 4 : 55 : 0 : 1.0
+T: 3 5 : 55 : 0 : 1.0
+T: 4 0 : 55 : 39 : 0.9
+T: 4 0 : 55 : 55 : 0.1
+T: 4 1 : 55 : 55 : 1.0
+T: 4 2 : 55 : 23 : 0.9
+T: 4 2 : 55 : 55 : 0.1
+T: 4 3 : 55 : 55 : 1.0
+T: 4 4 : 55 : 0 : 1.0
+T: 4 5 : 55 : 0 : 1.0
+T: 5 0 : 55 : 39 : 0.9
+T: 5 0 : 55 : 55 : 0.1
+T: 5 1 : 55 : 55 : 1.0
+T: 5 2 : 55 : 23 : 0.9
+T: 5 2 : 55 : 55 : 0.1
+T: 5 3 : 55 : 55 : 1.0
+T: 5 4 : 55 : 0 : 1.0
+T: 5 5 : 55 : 0 : 1.0
+T: 0 0 : 56 : 40 : 0.9
+T: 0 0 : 56 : 56 : 0.1
+T: 0 1 : 56 : 56 : 1.0
+T: 0 2 : 56 : 24 : 0.9
+T: 0 2 : 56 : 56 : 0.1
+T: 0 3 : 56 : 56 : 1.0
+T: 0 4 : 56 : 56 : 1.0
+T: 0 5 : 56 : 56 : 1.0
+T: 1 0 : 56 : 40 : 0.09
+T: 1 0 : 56 : 56 : 0.01
+T: 1 0 : 56 : 104 : 0.81
+T: 1 0 : 56 : 120 : 0.09
+T: 1 1 : 56 : 56 : 0.1
+T: 1 1 : 56 : 120 : 0.9
+T: 1 2 : 56 : 24 : 0.09
+T: 1 2 : 56 : 56 : 0.01
+T: 1 2 : 56 : 88 : 0.81
+T: 1 2 : 56 : 120 : 0.09
+T: 1 3 : 56 : 56 : 0.1
+T: 1 3 : 56 : 120 : 0.9
+T: 1 4 : 56 : 56 : 0.1
+T: 1 4 : 56 : 120 : 0.9
+T: 1 5 : 56 : 56 : 0.1
+T: 1 5 : 56 : 120 : 0.9
+T: 2 0 : 56 : 40 : 0.9
+T: 2 0 : 56 : 56 : 0.1
+T: 2 1 : 56 : 56 : 1.0
+T: 2 2 : 56 : 24 : 0.9
+T: 2 2 : 56 : 56 : 0.1
+T: 2 3 : 56 : 56 : 1.0
+T: 2 4 : 56 : 56 : 1.0
+T: 2 5 : 56 : 56 : 1.0
+T: 3 0 : 56 : 40 : 0.09
+T: 3 0 : 56 : 56 : 0.01
+T: 3 0 : 56 : 168 : 0.81
+T: 3 0 : 56 : 184 : 0.09
+T: 3 1 : 56 : 56 : 0.1
+T: 3 1 : 56 : 184 : 0.9
+T: 3 2 : 56 : 24 : 0.09
+T: 3 2 : 56 : 56 : 0.01
+T: 3 2 : 56 : 152 : 0.81
+T: 3 2 : 56 : 184 : 0.09
+T: 3 3 : 56 : 56 : 0.1
+T: 3 3 : 56 : 184 : 0.9
+T: 3 4 : 56 : 56 : 0.1
+T: 3 4 : 56 : 184 : 0.9
+T: 3 5 : 56 : 56 : 0.1
+T: 3 5 : 56 : 184 : 0.9
+T: 4 0 : 56 : 41 : 0.9
+T: 4 0 : 56 : 57 : 0.1
+T: 4 1 : 56 : 57 : 1.0
+T: 4 2 : 56 : 25 : 0.9
+T: 4 2 : 56 : 57 : 0.1
+T: 4 3 : 56 : 57 : 1.0
+T: 4 4 : 56 : 57 : 1.0
+T: 4 5 : 56 : 57 : 1.0
+T: 5 0 : 56 : 41 : 0.9
+T: 5 0 : 56 : 57 : 0.1
+T: 5 1 : 56 : 57 : 1.0
+T: 5 2 : 56 : 25 : 0.9
+T: 5 2 : 56 : 57 : 0.1
+T: 5 3 : 56 : 57 : 1.0
+T: 5 4 : 56 : 57 : 1.0
+T: 5 5 : 56 : 57 : 1.0
+T: 0 0 : 57 : 41 : 0.9
+T: 0 0 : 57 : 57 : 0.1
+T: 0 1 : 57 : 57 : 1.0
+T: 0 2 : 57 : 25 : 0.9
+T: 0 2 : 57 : 57 : 0.1
+T: 0 3 : 57 : 57 : 1.0
+T: 0 4 : 57 : 57 : 1.0
+T: 0 5 : 57 : 57 : 1.0
+T: 1 0 : 57 : 41 : 0.09
+T: 1 0 : 57 : 57 : 0.01
+T: 1 0 : 57 : 105 : 0.81
+T: 1 0 : 57 : 121 : 0.09
+T: 1 1 : 57 : 57 : 0.1
+T: 1 1 : 57 : 121 : 0.9
+T: 1 2 : 57 : 25 : 0.09
+T: 1 2 : 57 : 57 : 0.01
+T: 1 2 : 57 : 89 : 0.81
+T: 1 2 : 57 : 121 : 0.09
+T: 1 3 : 57 : 57 : 0.1
+T: 1 3 : 57 : 121 : 0.9
+T: 1 4 : 57 : 57 : 0.1
+T: 1 4 : 57 : 121 : 0.9
+T: 1 5 : 57 : 57 : 0.1
+T: 1 5 : 57 : 121 : 0.9
+T: 2 0 : 57 : 41 : 0.9
+T: 2 0 : 57 : 57 : 0.1
+T: 2 1 : 57 : 57 : 1.0
+T: 2 2 : 57 : 25 : 0.9
+T: 2 2 : 57 : 57 : 0.1
+T: 2 3 : 57 : 57 : 1.0
+T: 2 4 : 57 : 57 : 1.0
+T: 2 5 : 57 : 57 : 1.0
+T: 3 0 : 57 : 41 : 0.09
+T: 3 0 : 57 : 57 : 0.01
+T: 3 0 : 57 : 169 : 0.81
+T: 3 0 : 57 : 185 : 0.09
+T: 3 1 : 57 : 57 : 0.1
+T: 3 1 : 57 : 185 : 0.9
+T: 3 2 : 57 : 25 : 0.09
+T: 3 2 : 57 : 57 : 0.01
+T: 3 2 : 57 : 153 : 0.81
+T: 3 2 : 57 : 185 : 0.09
+T: 3 3 : 57 : 57 : 0.1
+T: 3 3 : 57 : 185 : 0.9
+T: 3 4 : 57 : 57 : 0.1
+T: 3 4 : 57 : 185 : 0.9
+T: 3 5 : 57 : 57 : 0.1
+T: 3 5 : 57 : 185 : 0.9
+T: 4 0 : 57 : 41 : 0.9
+T: 4 0 : 57 : 57 : 0.1
+T: 4 1 : 57 : 57 : 1.0
+T: 4 2 : 57 : 25 : 0.9
+T: 4 2 : 57 : 57 : 0.1
+T: 4 3 : 57 : 57 : 1.0
+T: 4 4 : 57 : 57 : 1.0
+T: 4 5 : 57 : 57 : 1.0
+T: 5 0 : 57 : 41 : 0.9
+T: 5 0 : 57 : 57 : 0.1
+T: 5 1 : 57 : 57 : 1.0
+T: 5 2 : 57 : 25 : 0.9
+T: 5 2 : 57 : 57 : 0.1
+T: 5 3 : 57 : 57 : 1.0
+T: 5 4 : 57 : 57 : 1.0
+T: 5 5 : 57 : 57 : 1.0
+T: 0 0 : 58 : 42 : 0.9
+T: 0 0 : 58 : 58 : 0.1
+T: 0 1 : 58 : 58 : 1.0
+T: 0 2 : 58 : 26 : 0.9
+T: 0 2 : 58 : 58 : 0.1
+T: 0 3 : 58 : 58 : 1.0
+T: 0 4 : 58 : 58 : 1.0
+T: 0 5 : 58 : 58 : 1.0
+T: 1 0 : 58 : 42 : 0.09
+T: 1 0 : 58 : 58 : 0.01
+T: 1 0 : 58 : 106 : 0.81
+T: 1 0 : 58 : 122 : 0.09
+T: 1 1 : 58 : 58 : 0.1
+T: 1 1 : 58 : 122 : 0.9
+T: 1 2 : 58 : 26 : 0.09
+T: 1 2 : 58 : 58 : 0.01
+T: 1 2 : 58 : 90 : 0.81
+T: 1 2 : 58 : 122 : 0.09
+T: 1 3 : 58 : 58 : 0.1
+T: 1 3 : 58 : 122 : 0.9
+T: 1 4 : 58 : 58 : 0.1
+T: 1 4 : 58 : 122 : 0.9
+T: 1 5 : 58 : 58 : 0.1
+T: 1 5 : 58 : 122 : 0.9
+T: 2 0 : 58 : 42 : 0.9
+T: 2 0 : 58 : 58 : 0.1
+T: 2 1 : 58 : 58 : 1.0
+T: 2 2 : 58 : 26 : 0.9
+T: 2 2 : 58 : 58 : 0.1
+T: 2 3 : 58 : 58 : 1.0
+T: 2 4 : 58 : 58 : 1.0
+T: 2 5 : 58 : 58 : 1.0
+T: 3 0 : 58 : 42 : 0.09
+T: 3 0 : 58 : 58 : 0.01
+T: 3 0 : 58 : 170 : 0.81
+T: 3 0 : 58 : 186 : 0.09
+T: 3 1 : 58 : 58 : 0.1
+T: 3 1 : 58 : 186 : 0.9
+T: 3 2 : 58 : 26 : 0.09
+T: 3 2 : 58 : 58 : 0.01
+T: 3 2 : 58 : 154 : 0.81
+T: 3 2 : 58 : 186 : 0.09
+T: 3 3 : 58 : 58 : 0.1
+T: 3 3 : 58 : 186 : 0.9
+T: 3 4 : 58 : 58 : 0.1
+T: 3 4 : 58 : 186 : 0.9
+T: 3 5 : 58 : 58 : 0.1
+T: 3 5 : 58 : 186 : 0.9
+T: 4 0 : 58 : 43 : 0.9
+T: 4 0 : 58 : 59 : 0.1
+T: 4 1 : 58 : 59 : 1.0
+T: 4 2 : 58 : 27 : 0.9
+T: 4 2 : 58 : 59 : 0.1
+T: 4 3 : 58 : 59 : 1.0
+T: 4 4 : 58 : 59 : 1.0
+T: 4 5 : 58 : 59 : 1.0
+T: 5 0 : 58 : 43 : 0.9
+T: 5 0 : 58 : 59 : 0.1
+T: 5 1 : 58 : 59 : 1.0
+T: 5 2 : 58 : 27 : 0.9
+T: 5 2 : 58 : 59 : 0.1
+T: 5 3 : 58 : 59 : 1.0
+T: 5 4 : 58 : 59 : 1.0
+T: 5 5 : 58 : 59 : 1.0
+T: 0 0 : 59 : 43 : 0.9
+T: 0 0 : 59 : 59 : 0.1
+T: 0 1 : 59 : 59 : 1.0
+T: 0 2 : 59 : 27 : 0.9
+T: 0 2 : 59 : 59 : 0.1
+T: 0 3 : 59 : 59 : 1.0
+T: 0 4 : 59 : 59 : 1.0
+T: 0 5 : 59 : 59 : 1.0
+T: 1 0 : 59 : 43 : 0.09
+T: 1 0 : 59 : 59 : 0.01
+T: 1 0 : 59 : 107 : 0.81
+T: 1 0 : 59 : 123 : 0.09
+T: 1 1 : 59 : 59 : 0.1
+T: 1 1 : 59 : 123 : 0.9
+T: 1 2 : 59 : 27 : 0.09
+T: 1 2 : 59 : 59 : 0.01
+T: 1 2 : 59 : 91 : 0.81
+T: 1 2 : 59 : 123 : 0.09
+T: 1 3 : 59 : 59 : 0.1
+T: 1 3 : 59 : 123 : 0.9
+T: 1 4 : 59 : 59 : 0.1
+T: 1 4 : 59 : 123 : 0.9
+T: 1 5 : 59 : 59 : 0.1
+T: 1 5 : 59 : 123 : 0.9
+T: 2 0 : 59 : 43 : 0.9
+T: 2 0 : 59 : 59 : 0.1
+T: 2 1 : 59 : 59 : 1.0
+T: 2 2 : 59 : 27 : 0.9
+T: 2 2 : 59 : 59 : 0.1
+T: 2 3 : 59 : 59 : 1.0
+T: 2 4 : 59 : 59 : 1.0
+T: 2 5 : 59 : 59 : 1.0
+T: 3 0 : 59 : 43 : 0.09
+T: 3 0 : 59 : 59 : 0.01
+T: 3 0 : 59 : 171 : 0.81
+T: 3 0 : 59 : 187 : 0.09
+T: 3 1 : 59 : 59 : 0.1
+T: 3 1 : 59 : 187 : 0.9
+T: 3 2 : 59 : 27 : 0.09
+T: 3 2 : 59 : 59 : 0.01
+T: 3 2 : 59 : 155 : 0.81
+T: 3 2 : 59 : 187 : 0.09
+T: 3 3 : 59 : 59 : 0.1
+T: 3 3 : 59 : 187 : 0.9
+T: 3 4 : 59 : 59 : 0.1
+T: 3 4 : 59 : 187 : 0.9
+T: 3 5 : 59 : 59 : 0.1
+T: 3 5 : 59 : 187 : 0.9
+T: 4 0 : 59 : 43 : 0.9
+T: 4 0 : 59 : 59 : 0.1
+T: 4 1 : 59 : 59 : 1.0
+T: 4 2 : 59 : 27 : 0.9
+T: 4 2 : 59 : 59 : 0.1
+T: 4 3 : 59 : 59 : 1.0
+T: 4 4 : 59 : 59 : 1.0
+T: 4 5 : 59 : 59 : 1.0
+T: 5 0 : 59 : 43 : 0.9
+T: 5 0 : 59 : 59 : 0.1
+T: 5 1 : 59 : 59 : 1.0
+T: 5 2 : 59 : 27 : 0.9
+T: 5 2 : 59 : 59 : 0.1
+T: 5 3 : 59 : 59 : 1.0
+T: 5 4 : 59 : 59 : 1.0
+T: 5 5 : 59 : 59 : 1.0
+T: 0 0 : 60 : 44 : 0.9
+T: 0 0 : 60 : 60 : 0.1
+T: 0 1 : 60 : 60 : 1.0
+T: 0 2 : 60 : 28 : 0.9
+T: 0 2 : 60 : 60 : 0.1
+T: 0 3 : 60 : 60 : 1.0
+T: 0 4 : 60 : 60 : 1.0
+T: 0 5 : 60 : 60 : 1.0
+T: 1 0 : 60 : 44 : 0.09
+T: 1 0 : 60 : 60 : 0.01
+T: 1 0 : 60 : 108 : 0.81
+T: 1 0 : 60 : 124 : 0.09
+T: 1 1 : 60 : 60 : 0.1
+T: 1 1 : 60 : 124 : 0.9
+T: 1 2 : 60 : 28 : 0.09
+T: 1 2 : 60 : 60 : 0.01
+T: 1 2 : 60 : 92 : 0.81
+T: 1 2 : 60 : 124 : 0.09
+T: 1 3 : 60 : 60 : 0.1
+T: 1 3 : 60 : 124 : 0.9
+T: 1 4 : 60 : 60 : 0.1
+T: 1 4 : 60 : 124 : 0.9
+T: 1 5 : 60 : 60 : 0.1
+T: 1 5 : 60 : 124 : 0.9
+T: 2 0 : 60 : 44 : 0.9
+T: 2 0 : 60 : 60 : 0.1
+T: 2 1 : 60 : 60 : 1.0
+T: 2 2 : 60 : 28 : 0.9
+T: 2 2 : 60 : 60 : 0.1
+T: 2 3 : 60 : 60 : 1.0
+T: 2 4 : 60 : 60 : 1.0
+T: 2 5 : 60 : 60 : 1.0
+T: 3 0 : 60 : 44 : 0.09
+T: 3 0 : 60 : 60 : 0.01
+T: 3 0 : 60 : 172 : 0.81
+T: 3 0 : 60 : 188 : 0.09
+T: 3 1 : 60 : 60 : 0.1
+T: 3 1 : 60 : 188 : 0.9
+T: 3 2 : 60 : 28 : 0.09
+T: 3 2 : 60 : 60 : 0.01
+T: 3 2 : 60 : 156 : 0.81
+T: 3 2 : 60 : 188 : 0.09
+T: 3 3 : 60 : 60 : 0.1
+T: 3 3 : 60 : 188 : 0.9
+T: 3 4 : 60 : 60 : 0.1
+T: 3 4 : 60 : 188 : 0.9
+T: 3 5 : 60 : 60 : 0.1
+T: 3 5 : 60 : 188 : 0.9
+T: 4 0 : 60 : 45 : 0.9
+T: 4 0 : 60 : 61 : 0.1
+T: 4 1 : 60 : 61 : 1.0
+T: 4 2 : 60 : 29 : 0.9
+T: 4 2 : 60 : 61 : 0.1
+T: 4 3 : 60 : 61 : 1.0
+T: 4 4 : 60 : 61 : 1.0
+T: 4 5 : 60 : 61 : 1.0
+T: 5 0 : 60 : 45 : 0.9
+T: 5 0 : 60 : 61 : 0.1
+T: 5 1 : 60 : 61 : 1.0
+T: 5 2 : 60 : 29 : 0.9
+T: 5 2 : 60 : 61 : 0.1
+T: 5 3 : 60 : 61 : 1.0
+T: 5 4 : 60 : 61 : 1.0
+T: 5 5 : 60 : 61 : 1.0
+T: 0 0 : 61 : 45 : 0.9
+T: 0 0 : 61 : 61 : 0.1
+T: 0 1 : 61 : 61 : 1.0
+T: 0 2 : 61 : 29 : 0.9
+T: 0 2 : 61 : 61 : 0.1
+T: 0 3 : 61 : 61 : 1.0
+T: 0 4 : 61 : 61 : 1.0
+T: 0 5 : 61 : 61 : 1.0
+T: 1 0 : 61 : 45 : 0.09
+T: 1 0 : 61 : 61 : 0.01
+T: 1 0 : 61 : 109 : 0.81
+T: 1 0 : 61 : 125 : 0.09
+T: 1 1 : 61 : 61 : 0.1
+T: 1 1 : 61 : 125 : 0.9
+T: 1 2 : 61 : 29 : 0.09
+T: 1 2 : 61 : 61 : 0.01
+T: 1 2 : 61 : 93 : 0.81
+T: 1 2 : 61 : 125 : 0.09
+T: 1 3 : 61 : 61 : 0.1
+T: 1 3 : 61 : 125 : 0.9
+T: 1 4 : 61 : 61 : 0.1
+T: 1 4 : 61 : 125 : 0.9
+T: 1 5 : 61 : 61 : 0.1
+T: 1 5 : 61 : 125 : 0.9
+T: 2 0 : 61 : 45 : 0.9
+T: 2 0 : 61 : 61 : 0.1
+T: 2 1 : 61 : 61 : 1.0
+T: 2 2 : 61 : 29 : 0.9
+T: 2 2 : 61 : 61 : 0.1
+T: 2 3 : 61 : 61 : 1.0
+T: 2 4 : 61 : 61 : 1.0
+T: 2 5 : 61 : 61 : 1.0
+T: 3 0 : 61 : 45 : 0.09
+T: 3 0 : 61 : 61 : 0.01
+T: 3 0 : 61 : 173 : 0.81
+T: 3 0 : 61 : 189 : 0.09
+T: 3 1 : 61 : 61 : 0.1
+T: 3 1 : 61 : 189 : 0.9
+T: 3 2 : 61 : 29 : 0.09
+T: 3 2 : 61 : 61 : 0.01
+T: 3 2 : 61 : 157 : 0.81
+T: 3 2 : 61 : 189 : 0.09
+T: 3 3 : 61 : 61 : 0.1
+T: 3 3 : 61 : 189 : 0.9
+T: 3 4 : 61 : 61 : 0.1
+T: 3 4 : 61 : 189 : 0.9
+T: 3 5 : 61 : 61 : 0.1
+T: 3 5 : 61 : 189 : 0.9
+T: 4 0 : 61 : 45 : 0.9
+T: 4 0 : 61 : 61 : 0.1
+T: 4 1 : 61 : 61 : 1.0
+T: 4 2 : 61 : 29 : 0.9
+T: 4 2 : 61 : 61 : 0.1
+T: 4 3 : 61 : 61 : 1.0
+T: 4 4 : 61 : 61 : 1.0
+T: 4 5 : 61 : 61 : 1.0
+T: 5 0 : 61 : 45 : 0.9
+T: 5 0 : 61 : 61 : 0.1
+T: 5 1 : 61 : 61 : 1.0
+T: 5 2 : 61 : 29 : 0.9
+T: 5 2 : 61 : 61 : 0.1
+T: 5 3 : 61 : 61 : 1.0
+T: 5 4 : 61 : 61 : 1.0
+T: 5 5 : 61 : 61 : 1.0
+T: 0 0 : 62 : 46 : 0.9
+T: 0 0 : 62 : 62 : 0.1
+T: 0 1 : 62 : 62 : 1.0
+T: 0 2 : 62 : 30 : 0.9
+T: 0 2 : 62 : 62 : 0.1
+T: 0 3 : 62 : 62 : 1.0
+T: 0 4 : 62 : 62 : 1.0
+T: 0 5 : 62 : 62 : 1.0
+T: 1 0 : 62 : 46 : 0.09
+T: 1 0 : 62 : 62 : 0.01
+T: 1 0 : 62 : 110 : 0.81
+T: 1 0 : 62 : 126 : 0.09
+T: 1 1 : 62 : 62 : 0.1
+T: 1 1 : 62 : 126 : 0.9
+T: 1 2 : 62 : 30 : 0.09
+T: 1 2 : 62 : 62 : 0.01
+T: 1 2 : 62 : 94 : 0.81
+T: 1 2 : 62 : 126 : 0.09
+T: 1 3 : 62 : 62 : 0.1
+T: 1 3 : 62 : 126 : 0.9
+T: 1 4 : 62 : 62 : 0.1
+T: 1 4 : 62 : 126 : 0.9
+T: 1 5 : 62 : 62 : 0.1
+T: 1 5 : 62 : 126 : 0.9
+T: 2 0 : 62 : 46 : 0.9
+T: 2 0 : 62 : 62 : 0.1
+T: 2 1 : 62 : 62 : 1.0
+T: 2 2 : 62 : 30 : 0.9
+T: 2 2 : 62 : 62 : 0.1
+T: 2 3 : 62 : 62 : 1.0
+T: 2 4 : 62 : 62 : 1.0
+T: 2 5 : 62 : 62 : 1.0
+T: 3 0 : 62 : 46 : 0.09
+T: 3 0 : 62 : 62 : 0.01
+T: 3 0 : 62 : 174 : 0.81
+T: 3 0 : 62 : 190 : 0.09
+T: 3 1 : 62 : 62 : 0.1
+T: 3 1 : 62 : 190 : 0.9
+T: 3 2 : 62 : 30 : 0.09
+T: 3 2 : 62 : 62 : 0.01
+T: 3 2 : 62 : 158 : 0.81
+T: 3 2 : 62 : 190 : 0.09
+T: 3 3 : 62 : 62 : 0.1
+T: 3 3 : 62 : 190 : 0.9
+T: 3 4 : 62 : 62 : 0.1
+T: 3 4 : 62 : 190 : 0.9
+T: 3 5 : 62 : 62 : 0.1
+T: 3 5 : 62 : 190 : 0.9
+T: 4 0 : 62 : 0 : 1.0
+T: 4 1 : 62 : 0 : 1.0
+T: 4 2 : 62 : 0 : 1.0
+T: 4 3 : 62 : 0 : 1.0
+T: 4 4 : 62 : 0 : 1.0
+T: 4 5 : 62 : 0 : 1.0
+T: 5 0 : 62 : 0 : 1.0
+T: 5 1 : 62 : 0 : 1.0
+T: 5 2 : 62 : 0 : 1.0
+T: 5 3 : 62 : 0 : 1.0
+T: 5 4 : 62 : 0 : 1.0
+T: 5 5 : 62 : 0 : 1.0
+T: 0 0 : 63 : 47 : 0.9
+T: 0 0 : 63 : 63 : 0.1
+T: 0 1 : 63 : 63 : 1.0
+T: 0 2 : 63 : 31 : 0.9
+T: 0 2 : 63 : 63 : 0.1
+T: 0 3 : 63 : 63 : 1.0
+T: 0 4 : 63 : 0 : 1.0
+T: 0 5 : 63 : 0 : 1.0
+T: 1 0 : 63 : 47 : 0.09
+T: 1 0 : 63 : 63 : 0.01
+T: 1 0 : 63 : 111 : 0.81
+T: 1 0 : 63 : 127 : 0.09
+T: 1 1 : 63 : 63 : 0.1
+T: 1 1 : 63 : 127 : 0.9
+T: 1 2 : 63 : 31 : 0.09
+T: 1 2 : 63 : 63 : 0.01
+T: 1 2 : 63 : 95 : 0.81
+T: 1 2 : 63 : 127 : 0.09
+T: 1 3 : 63 : 63 : 0.1
+T: 1 3 : 63 : 127 : 0.9
+T: 1 4 : 63 : 0 : 1.0
+T: 1 5 : 63 : 0 : 1.0
+T: 2 0 : 63 : 47 : 0.9
+T: 2 0 : 63 : 63 : 0.1
+T: 2 1 : 63 : 63 : 1.0
+T: 2 2 : 63 : 31 : 0.9
+T: 2 2 : 63 : 63 : 0.1
+T: 2 3 : 63 : 63 : 1.0
+T: 2 4 : 63 : 0 : 1.0
+T: 2 5 : 63 : 0 : 1.0
+T: 3 0 : 63 : 47 : 0.09
+T: 3 0 : 63 : 63 : 0.01
+T: 3 0 : 63 : 175 : 0.81
+T: 3 0 : 63 : 191 : 0.09
+T: 3 1 : 63 : 63 : 0.1
+T: 3 1 : 63 : 191 : 0.9
+T: 3 2 : 63 : 31 : 0.09
+T: 3 2 : 63 : 63 : 0.01
+T: 3 2 : 63 : 159 : 0.81
+T: 3 2 : 63 : 191 : 0.09
+T: 3 3 : 63 : 63 : 0.1
+T: 3 3 : 63 : 191 : 0.9
+T: 3 4 : 63 : 0 : 1.0
+T: 3 5 : 63 : 0 : 1.0
+T: 4 0 : 63 : 0 : 1.0
+T: 4 1 : 63 : 0 : 1.0
+T: 4 2 : 63 : 0 : 1.0
+T: 4 3 : 63 : 0 : 1.0
+T: 4 4 : 63 : 0 : 1.0
+T: 4 5 : 63 : 0 : 1.0
+T: 5 0 : 63 : 0 : 1.0
+T: 5 1 : 63 : 0 : 1.0
+T: 5 2 : 63 : 0 : 1.0
+T: 5 3 : 63 : 0 : 1.0
+T: 5 4 : 63 : 0 : 1.0
+T: 5 5 : 63 : 0 : 1.0
+T: 0 0 : 64 : 0 : 0.9
+T: 0 0 : 64 : 64 : 0.1
+T: 0 1 : 64 : 0 : 0.09
+T: 0 1 : 64 : 16 : 0.81
+T: 0 1 : 64 : 64 : 0.01
+T: 0 1 : 64 : 80 : 0.09
+T: 0 2 : 64 : 0 : 0.9
+T: 0 2 : 64 : 64 : 0.1
+T: 0 3 : 64 : 0 : 0.09
+T: 0 3 : 64 : 32 : 0.81
+T: 0 3 : 64 : 64 : 0.01
+T: 0 3 : 64 : 96 : 0.09
+T: 0 4 : 64 : 1 : 0.9
+T: 0 4 : 64 : 65 : 0.1
+T: 0 5 : 64 : 1 : 0.9
+T: 0 5 : 64 : 65 : 0.1
+T: 1 0 : 64 : 64 : 1.0
+T: 1 1 : 64 : 64 : 0.1
+T: 1 1 : 64 : 80 : 0.9
+T: 1 2 : 64 : 64 : 1.0
+T: 1 3 : 64 : 64 : 0.1
+T: 1 3 : 64 : 96 : 0.9
+T: 1 4 : 64 : 65 : 1.0
+T: 1 5 : 64 : 65 : 1.0
+T: 2 0 : 64 : 64 : 1.0
+T: 2 1 : 64 : 64 : 0.1
+T: 2 1 : 64 : 80 : 0.9
+T: 2 2 : 64 : 64 : 1.0
+T: 2 3 : 64 : 64 : 0.1
+T: 2 3 : 64 : 96 : 0.9
+T: 2 4 : 64 : 65 : 1.0
+T: 2 5 : 64 : 65 : 1.0
+T: 3 0 : 64 : 64 : 0.1
+T: 3 0 : 64 : 192 : 0.9
+T: 3 1 : 64 : 64 : 0.01
+T: 3 1 : 64 : 80 : 0.09
+T: 3 1 : 64 : 192 : 0.09
+T: 3 1 : 64 : 208 : 0.81
+T: 3 2 : 64 : 64 : 0.1
+T: 3 2 : 64 : 192 : 0.9
+T: 3 3 : 64 : 64 : 0.01
+T: 3 3 : 64 : 96 : 0.09
+T: 3 3 : 64 : 192 : 0.09
+T: 3 3 : 64 : 224 : 0.81
+T: 3 4 : 64 : 65 : 0.1
+T: 3 4 : 64 : 193 : 0.9
+T: 3 5 : 64 : 65 : 0.1
+T: 3 5 : 64 : 193 : 0.9
+T: 4 0 : 64 : 66 : 1.0
+T: 4 1 : 64 : 66 : 0.1
+T: 4 1 : 64 : 82 : 0.9
+T: 4 2 : 64 : 66 : 1.0
+T: 4 3 : 64 : 66 : 0.1
+T: 4 3 : 64 : 98 : 0.9
+T: 4 4 : 64 : 67 : 1.0
+T: 4 5 : 64 : 67 : 1.0
+T: 5 0 : 64 : 66 : 1.0
+T: 5 1 : 64 : 66 : 0.1
+T: 5 1 : 64 : 82 : 0.9
+T: 5 2 : 64 : 66 : 1.0
+T: 5 3 : 64 : 66 : 0.1
+T: 5 3 : 64 : 98 : 0.9
+T: 5 4 : 64 : 67 : 1.0
+T: 5 5 : 64 : 67 : 1.0
+T: 0 0 : 65 : 1 : 0.9
+T: 0 0 : 65 : 65 : 0.1
+T: 0 1 : 65 : 1 : 0.09
+T: 0 1 : 65 : 17 : 0.81
+T: 0 1 : 65 : 65 : 0.01
+T: 0 1 : 65 : 81 : 0.09
+T: 0 2 : 65 : 1 : 0.9
+T: 0 2 : 65 : 65 : 0.1
+T: 0 3 : 65 : 1 : 0.09
+T: 0 3 : 65 : 33 : 0.81
+T: 0 3 : 65 : 65 : 0.01
+T: 0 3 : 65 : 97 : 0.09
+T: 0 4 : 65 : 1 : 0.9
+T: 0 4 : 65 : 65 : 0.1
+T: 0 5 : 65 : 1 : 0.9
+T: 0 5 : 65 : 65 : 0.1
+T: 1 0 : 65 : 65 : 1.0
+T: 1 1 : 65 : 65 : 0.1
+T: 1 1 : 65 : 81 : 0.9
+T: 1 2 : 65 : 65 : 1.0
+T: 1 3 : 65 : 65 : 0.1
+T: 1 3 : 65 : 97 : 0.9
+T: 1 4 : 65 : 65 : 1.0
+T: 1 5 : 65 : 65 : 1.0
+T: 2 0 : 65 : 65 : 1.0
+T: 2 1 : 65 : 65 : 0.1
+T: 2 1 : 65 : 81 : 0.9
+T: 2 2 : 65 : 65 : 1.0
+T: 2 3 : 65 : 65 : 0.1
+T: 2 3 : 65 : 97 : 0.9
+T: 2 4 : 65 : 65 : 1.0
+T: 2 5 : 65 : 65 : 1.0
+T: 3 0 : 65 : 65 : 0.1
+T: 3 0 : 65 : 193 : 0.9
+T: 3 1 : 65 : 65 : 0.01
+T: 3 1 : 65 : 81 : 0.09
+T: 3 1 : 65 : 193 : 0.09
+T: 3 1 : 65 : 209 : 0.81
+T: 3 2 : 65 : 65 : 0.1
+T: 3 2 : 65 : 193 : 0.9
+T: 3 3 : 65 : 65 : 0.01
+T: 3 3 : 65 : 97 : 0.09
+T: 3 3 : 65 : 193 : 0.09
+T: 3 3 : 65 : 225 : 0.81
+T: 3 4 : 65 : 65 : 0.1
+T: 3 4 : 65 : 193 : 0.9
+T: 3 5 : 65 : 65 : 0.1
+T: 3 5 : 65 : 193 : 0.9
+T: 4 0 : 65 : 67 : 1.0
+T: 4 1 : 65 : 67 : 0.1
+T: 4 1 : 65 : 83 : 0.9
+T: 4 2 : 65 : 67 : 1.0
+T: 4 3 : 65 : 67 : 0.1
+T: 4 3 : 65 : 99 : 0.9
+T: 4 4 : 65 : 67 : 1.0
+T: 4 5 : 65 : 67 : 1.0
+T: 5 0 : 65 : 67 : 1.0
+T: 5 1 : 65 : 67 : 0.1
+T: 5 1 : 65 : 83 : 0.9
+T: 5 2 : 65 : 67 : 1.0
+T: 5 3 : 65 : 67 : 0.1
+T: 5 3 : 65 : 99 : 0.9
+T: 5 4 : 65 : 67 : 1.0
+T: 5 5 : 65 : 67 : 1.0
+T: 0 0 : 66 : 2 : 0.9
+T: 0 0 : 66 : 66 : 0.1
+T: 0 1 : 66 : 2 : 0.09
+T: 0 1 : 66 : 18 : 0.81
+T: 0 1 : 66 : 66 : 0.01
+T: 0 1 : 66 : 82 : 0.09
+T: 0 2 : 66 : 2 : 0.9
+T: 0 2 : 66 : 66 : 0.1
+T: 0 3 : 66 : 2 : 0.09
+T: 0 3 : 66 : 34 : 0.81
+T: 0 3 : 66 : 66 : 0.01
+T: 0 3 : 66 : 98 : 0.09
+T: 0 4 : 66 : 3 : 0.9
+T: 0 4 : 66 : 67 : 0.1
+T: 0 5 : 66 : 3 : 0.9
+T: 0 5 : 66 : 67 : 0.1
+T: 1 0 : 66 : 66 : 1.0
+T: 1 1 : 66 : 66 : 0.1
+T: 1 1 : 66 : 82 : 0.9
+T: 1 2 : 66 : 66 : 1.0
+T: 1 3 : 66 : 66 : 0.1
+T: 1 3 : 66 : 98 : 0.9
+T: 1 4 : 66 : 67 : 1.0
+T: 1 5 : 66 : 67 : 1.0
+T: 2 0 : 66 : 66 : 1.0
+T: 2 1 : 66 : 66 : 0.1
+T: 2 1 : 66 : 82 : 0.9
+T: 2 2 : 66 : 66 : 1.0
+T: 2 3 : 66 : 66 : 0.1
+T: 2 3 : 66 : 98 : 0.9
+T: 2 4 : 66 : 67 : 1.0
+T: 2 5 : 66 : 67 : 1.0
+T: 3 0 : 66 : 66 : 0.1
+T: 3 0 : 66 : 194 : 0.9
+T: 3 1 : 66 : 66 : 0.01
+T: 3 1 : 66 : 82 : 0.09
+T: 3 1 : 66 : 194 : 0.09
+T: 3 1 : 66 : 210 : 0.81
+T: 3 2 : 66 : 66 : 0.1
+T: 3 2 : 66 : 194 : 0.9
+T: 3 3 : 66 : 66 : 0.01
+T: 3 3 : 66 : 98 : 0.09
+T: 3 3 : 66 : 194 : 0.09
+T: 3 3 : 66 : 226 : 0.81
+T: 3 4 : 66 : 67 : 0.1
+T: 3 4 : 66 : 195 : 0.9
+T: 3 5 : 66 : 67 : 0.1
+T: 3 5 : 66 : 195 : 0.9
+T: 4 0 : 66 : 66 : 1.0
+T: 4 1 : 66 : 66 : 0.1
+T: 4 1 : 66 : 82 : 0.9
+T: 4 2 : 66 : 66 : 1.0
+T: 4 3 : 66 : 66 : 0.1
+T: 4 3 : 66 : 98 : 0.9
+T: 4 4 : 66 : 67 : 1.0
+T: 4 5 : 66 : 67 : 1.0
+T: 5 0 : 66 : 66 : 1.0
+T: 5 1 : 66 : 66 : 0.1
+T: 5 1 : 66 : 82 : 0.9
+T: 5 2 : 66 : 66 : 1.0
+T: 5 3 : 66 : 66 : 0.1
+T: 5 3 : 66 : 98 : 0.9
+T: 5 4 : 66 : 67 : 1.0
+T: 5 5 : 66 : 67 : 1.0
+T: 0 0 : 67 : 3 : 0.9
+T: 0 0 : 67 : 67 : 0.1
+T: 0 1 : 67 : 3 : 0.09
+T: 0 1 : 67 : 19 : 0.81
+T: 0 1 : 67 : 67 : 0.01
+T: 0 1 : 67 : 83 : 0.09
+T: 0 2 : 67 : 3 : 0.9
+T: 0 2 : 67 : 67 : 0.1
+T: 0 3 : 67 : 3 : 0.09
+T: 0 3 : 67 : 35 : 0.81
+T: 0 3 : 67 : 67 : 0.01
+T: 0 3 : 67 : 99 : 0.09
+T: 0 4 : 67 : 3 : 0.9
+T: 0 4 : 67 : 67 : 0.1
+T: 0 5 : 67 : 3 : 0.9
+T: 0 5 : 67 : 67 : 0.1
+T: 1 0 : 67 : 67 : 1.0
+T: 1 1 : 67 : 67 : 0.1
+T: 1 1 : 67 : 83 : 0.9
+T: 1 2 : 67 : 67 : 1.0
+T: 1 3 : 67 : 67 : 0.1
+T: 1 3 : 67 : 99 : 0.9
+T: 1 4 : 67 : 67 : 1.0
+T: 1 5 : 67 : 67 : 1.0
+T: 2 0 : 67 : 67 : 1.0
+T: 2 1 : 67 : 67 : 0.1
+T: 2 1 : 67 : 83 : 0.9
+T: 2 2 : 67 : 67 : 1.0
+T: 2 3 : 67 : 67 : 0.1
+T: 2 3 : 67 : 99 : 0.9
+T: 2 4 : 67 : 67 : 1.0
+T: 2 5 : 67 : 67 : 1.0
+T: 3 0 : 67 : 67 : 0.1
+T: 3 0 : 67 : 195 : 0.9
+T: 3 1 : 67 : 67 : 0.01
+T: 3 1 : 67 : 83 : 0.09
+T: 3 1 : 67 : 195 : 0.09
+T: 3 1 : 67 : 211 : 0.81
+T: 3 2 : 67 : 67 : 0.1
+T: 3 2 : 67 : 195 : 0.9
+T: 3 3 : 67 : 67 : 0.01
+T: 3 3 : 67 : 99 : 0.09
+T: 3 3 : 67 : 195 : 0.09
+T: 3 3 : 67 : 227 : 0.81
+T: 3 4 : 67 : 67 : 0.1
+T: 3 4 : 67 : 195 : 0.9
+T: 3 5 : 67 : 67 : 0.1
+T: 3 5 : 67 : 195 : 0.9
+T: 4 0 : 67 : 67 : 1.0
+T: 4 1 : 67 : 67 : 0.1
+T: 4 1 : 67 : 83 : 0.9
+T: 4 2 : 67 : 67 : 1.0
+T: 4 3 : 67 : 67 : 0.1
+T: 4 3 : 67 : 99 : 0.9
+T: 4 4 : 67 : 67 : 1.0
+T: 4 5 : 67 : 67 : 1.0
+T: 5 0 : 67 : 67 : 1.0
+T: 5 1 : 67 : 67 : 0.1
+T: 5 1 : 67 : 83 : 0.9
+T: 5 2 : 67 : 67 : 1.0
+T: 5 3 : 67 : 67 : 0.1
+T: 5 3 : 67 : 99 : 0.9
+T: 5 4 : 67 : 67 : 1.0
+T: 5 5 : 67 : 67 : 1.0
+T: 0 0 : 68 : 4 : 0.9
+T: 0 0 : 68 : 68 : 0.1
+T: 0 1 : 68 : 4 : 0.09
+T: 0 1 : 68 : 20 : 0.81
+T: 0 1 : 68 : 68 : 0.01
+T: 0 1 : 68 : 84 : 0.09
+T: 0 2 : 68 : 4 : 0.9
+T: 0 2 : 68 : 68 : 0.1
+T: 0 3 : 68 : 4 : 0.09
+T: 0 3 : 68 : 36 : 0.81
+T: 0 3 : 68 : 68 : 0.01
+T: 0 3 : 68 : 100 : 0.09
+T: 0 4 : 68 : 5 : 0.9
+T: 0 4 : 68 : 69 : 0.1
+T: 0 5 : 68 : 5 : 0.9
+T: 0 5 : 68 : 69 : 0.1
+T: 1 0 : 68 : 68 : 1.0
+T: 1 1 : 68 : 68 : 0.1
+T: 1 1 : 68 : 84 : 0.9
+T: 1 2 : 68 : 68 : 1.0
+T: 1 3 : 68 : 68 : 0.1
+T: 1 3 : 68 : 100 : 0.9
+T: 1 4 : 68 : 69 : 1.0
+T: 1 5 : 68 : 69 : 1.0
+T: 2 0 : 68 : 68 : 1.0
+T: 2 1 : 68 : 68 : 0.1
+T: 2 1 : 68 : 84 : 0.9
+T: 2 2 : 68 : 68 : 1.0
+T: 2 3 : 68 : 68 : 0.1
+T: 2 3 : 68 : 100 : 0.9
+T: 2 4 : 68 : 69 : 1.0
+T: 2 5 : 68 : 69 : 1.0
+T: 3 0 : 68 : 68 : 0.1
+T: 3 0 : 68 : 196 : 0.9
+T: 3 1 : 68 : 68 : 0.01
+T: 3 1 : 68 : 84 : 0.09
+T: 3 1 : 68 : 196 : 0.09
+T: 3 1 : 68 : 212 : 0.81
+T: 3 2 : 68 : 68 : 0.1
+T: 3 2 : 68 : 196 : 0.9
+T: 3 3 : 68 : 68 : 0.01
+T: 3 3 : 68 : 100 : 0.09
+T: 3 3 : 68 : 196 : 0.09
+T: 3 3 : 68 : 228 : 0.81
+T: 3 4 : 68 : 69 : 0.1
+T: 3 4 : 68 : 197 : 0.9
+T: 3 5 : 68 : 69 : 0.1
+T: 3 5 : 68 : 197 : 0.9
+T: 4 0 : 68 : 70 : 1.0
+T: 4 1 : 68 : 70 : 0.1
+T: 4 1 : 68 : 86 : 0.9
+T: 4 2 : 68 : 70 : 1.0
+T: 4 3 : 68 : 70 : 0.1
+T: 4 3 : 68 : 102 : 0.9
+T: 4 4 : 68 : 71 : 1.0
+T: 4 5 : 68 : 71 : 1.0
+T: 5 0 : 68 : 70 : 1.0
+T: 5 1 : 68 : 70 : 0.1
+T: 5 1 : 68 : 86 : 0.9
+T: 5 2 : 68 : 70 : 1.0
+T: 5 3 : 68 : 70 : 0.1
+T: 5 3 : 68 : 102 : 0.9
+T: 5 4 : 68 : 71 : 1.0
+T: 5 5 : 68 : 71 : 1.0
+T: 0 0 : 69 : 5 : 0.9
+T: 0 0 : 69 : 69 : 0.1
+T: 0 1 : 69 : 5 : 0.09
+T: 0 1 : 69 : 21 : 0.81
+T: 0 1 : 69 : 69 : 0.01
+T: 0 1 : 69 : 85 : 0.09
+T: 0 2 : 69 : 5 : 0.9
+T: 0 2 : 69 : 69 : 0.1
+T: 0 3 : 69 : 5 : 0.09
+T: 0 3 : 69 : 37 : 0.81
+T: 0 3 : 69 : 69 : 0.01
+T: 0 3 : 69 : 101 : 0.09
+T: 0 4 : 69 : 5 : 0.9
+T: 0 4 : 69 : 69 : 0.1
+T: 0 5 : 69 : 5 : 0.9
+T: 0 5 : 69 : 69 : 0.1
+T: 1 0 : 69 : 69 : 1.0
+T: 1 1 : 69 : 69 : 0.1
+T: 1 1 : 69 : 85 : 0.9
+T: 1 2 : 69 : 69 : 1.0
+T: 1 3 : 69 : 69 : 0.1
+T: 1 3 : 69 : 101 : 0.9
+T: 1 4 : 69 : 69 : 1.0
+T: 1 5 : 69 : 69 : 1.0
+T: 2 0 : 69 : 69 : 1.0
+T: 2 1 : 69 : 69 : 0.1
+T: 2 1 : 69 : 85 : 0.9
+T: 2 2 : 69 : 69 : 1.0
+T: 2 3 : 69 : 69 : 0.1
+T: 2 3 : 69 : 101 : 0.9
+T: 2 4 : 69 : 69 : 1.0
+T: 2 5 : 69 : 69 : 1.0
+T: 3 0 : 69 : 69 : 0.1
+T: 3 0 : 69 : 197 : 0.9
+T: 3 1 : 69 : 69 : 0.01
+T: 3 1 : 69 : 85 : 0.09
+T: 3 1 : 69 : 197 : 0.09
+T: 3 1 : 69 : 213 : 0.81
+T: 3 2 : 69 : 69 : 0.1
+T: 3 2 : 69 : 197 : 0.9
+T: 3 3 : 69 : 69 : 0.01
+T: 3 3 : 69 : 101 : 0.09
+T: 3 3 : 69 : 197 : 0.09
+T: 3 3 : 69 : 229 : 0.81
+T: 3 4 : 69 : 69 : 0.1
+T: 3 4 : 69 : 197 : 0.9
+T: 3 5 : 69 : 69 : 0.1
+T: 3 5 : 69 : 197 : 0.9
+T: 4 0 : 69 : 71 : 1.0
+T: 4 1 : 69 : 71 : 0.1
+T: 4 1 : 69 : 87 : 0.9
+T: 4 2 : 69 : 71 : 1.0
+T: 4 3 : 69 : 71 : 0.1
+T: 4 3 : 69 : 103 : 0.9
+T: 4 4 : 69 : 71 : 1.0
+T: 4 5 : 69 : 71 : 1.0
+T: 5 0 : 69 : 71 : 1.0
+T: 5 1 : 69 : 71 : 0.1
+T: 5 1 : 69 : 87 : 0.9
+T: 5 2 : 69 : 71 : 1.0
+T: 5 3 : 69 : 71 : 0.1
+T: 5 3 : 69 : 103 : 0.9
+T: 5 4 : 69 : 71 : 1.0
+T: 5 5 : 69 : 71 : 1.0
+T: 0 0 : 70 : 6 : 0.9
+T: 0 0 : 70 : 70 : 0.1
+T: 0 1 : 70 : 6 : 0.09
+T: 0 1 : 70 : 22 : 0.81
+T: 0 1 : 70 : 70 : 0.01
+T: 0 1 : 70 : 86 : 0.09
+T: 0 2 : 70 : 6 : 0.9
+T: 0 2 : 70 : 70 : 0.1
+T: 0 3 : 70 : 6 : 0.09
+T: 0 3 : 70 : 38 : 0.81
+T: 0 3 : 70 : 70 : 0.01
+T: 0 3 : 70 : 102 : 0.09
+T: 0 4 : 70 : 7 : 0.9
+T: 0 4 : 70 : 71 : 0.1
+T: 0 5 : 70 : 7 : 0.9
+T: 0 5 : 70 : 71 : 0.1
+T: 1 0 : 70 : 70 : 1.0
+T: 1 1 : 70 : 70 : 0.1
+T: 1 1 : 70 : 86 : 0.9
+T: 1 2 : 70 : 70 : 1.0
+T: 1 3 : 70 : 70 : 0.1
+T: 1 3 : 70 : 102 : 0.9
+T: 1 4 : 70 : 71 : 1.0
+T: 1 5 : 70 : 71 : 1.0
+T: 2 0 : 70 : 70 : 1.0
+T: 2 1 : 70 : 70 : 0.1
+T: 2 1 : 70 : 86 : 0.9
+T: 2 2 : 70 : 70 : 1.0
+T: 2 3 : 70 : 70 : 0.1
+T: 2 3 : 70 : 102 : 0.9
+T: 2 4 : 70 : 71 : 1.0
+T: 2 5 : 70 : 71 : 1.0
+T: 3 0 : 70 : 70 : 0.1
+T: 3 0 : 70 : 198 : 0.9
+T: 3 1 : 70 : 70 : 0.01
+T: 3 1 : 70 : 86 : 0.09
+T: 3 1 : 70 : 198 : 0.09
+T: 3 1 : 70 : 214 : 0.81
+T: 3 2 : 70 : 70 : 0.1
+T: 3 2 : 70 : 198 : 0.9
+T: 3 3 : 70 : 70 : 0.01
+T: 3 3 : 70 : 102 : 0.09
+T: 3 3 : 70 : 198 : 0.09
+T: 3 3 : 70 : 230 : 0.81
+T: 3 4 : 70 : 71 : 0.1
+T: 3 4 : 70 : 199 : 0.9
+T: 3 5 : 70 : 71 : 0.1
+T: 3 5 : 70 : 199 : 0.9
+T: 4 0 : 70 : 70 : 1.0
+T: 4 1 : 70 : 70 : 0.1
+T: 4 1 : 70 : 86 : 0.9
+T: 4 2 : 70 : 70 : 1.0
+T: 4 3 : 70 : 70 : 0.1
+T: 4 3 : 70 : 102 : 0.9
+T: 4 4 : 70 : 71 : 1.0
+T: 4 5 : 70 : 71 : 1.0
+T: 5 0 : 70 : 70 : 1.0
+T: 5 1 : 70 : 70 : 0.1
+T: 5 1 : 70 : 86 : 0.9
+T: 5 2 : 70 : 70 : 1.0
+T: 5 3 : 70 : 70 : 0.1
+T: 5 3 : 70 : 102 : 0.9
+T: 5 4 : 70 : 71 : 1.0
+T: 5 5 : 70 : 71 : 1.0
+T: 0 0 : 71 : 7 : 0.9
+T: 0 0 : 71 : 71 : 0.1
+T: 0 1 : 71 : 7 : 0.09
+T: 0 1 : 71 : 23 : 0.81
+T: 0 1 : 71 : 71 : 0.01
+T: 0 1 : 71 : 87 : 0.09
+T: 0 2 : 71 : 7 : 0.9
+T: 0 2 : 71 : 71 : 0.1
+T: 0 3 : 71 : 7 : 0.09
+T: 0 3 : 71 : 39 : 0.81
+T: 0 3 : 71 : 71 : 0.01
+T: 0 3 : 71 : 103 : 0.09
+T: 0 4 : 71 : 7 : 0.9
+T: 0 4 : 71 : 71 : 0.1
+T: 0 5 : 71 : 7 : 0.9
+T: 0 5 : 71 : 71 : 0.1
+T: 1 0 : 71 : 71 : 1.0
+T: 1 1 : 71 : 71 : 0.1
+T: 1 1 : 71 : 87 : 0.9
+T: 1 2 : 71 : 71 : 1.0
+T: 1 3 : 71 : 71 : 0.1
+T: 1 3 : 71 : 103 : 0.9
+T: 1 4 : 71 : 71 : 1.0
+T: 1 5 : 71 : 71 : 1.0
+T: 2 0 : 71 : 71 : 1.0
+T: 2 1 : 71 : 71 : 0.1
+T: 2 1 : 71 : 87 : 0.9
+T: 2 2 : 71 : 71 : 1.0
+T: 2 3 : 71 : 71 : 0.1
+T: 2 3 : 71 : 103 : 0.9
+T: 2 4 : 71 : 71 : 1.0
+T: 2 5 : 71 : 71 : 1.0
+T: 3 0 : 71 : 71 : 0.1
+T: 3 0 : 71 : 199 : 0.9
+T: 3 1 : 71 : 71 : 0.01
+T: 3 1 : 71 : 87 : 0.09
+T: 3 1 : 71 : 199 : 0.09
+T: 3 1 : 71 : 215 : 0.81
+T: 3 2 : 71 : 71 : 0.1
+T: 3 2 : 71 : 199 : 0.9
+T: 3 3 : 71 : 71 : 0.01
+T: 3 3 : 71 : 103 : 0.09
+T: 3 3 : 71 : 199 : 0.09
+T: 3 3 : 71 : 231 : 0.81
+T: 3 4 : 71 : 71 : 0.1
+T: 3 4 : 71 : 199 : 0.9
+T: 3 5 : 71 : 71 : 0.1
+T: 3 5 : 71 : 199 : 0.9
+T: 4 0 : 71 : 71 : 1.0
+T: 4 1 : 71 : 71 : 0.1
+T: 4 1 : 71 : 87 : 0.9
+T: 4 2 : 71 : 71 : 1.0
+T: 4 3 : 71 : 71 : 0.1
+T: 4 3 : 71 : 103 : 0.9
+T: 4 4 : 71 : 71 : 1.0
+T: 4 5 : 71 : 71 : 1.0
+T: 5 0 : 71 : 71 : 1.0
+T: 5 1 : 71 : 71 : 0.1
+T: 5 1 : 71 : 87 : 0.9
+T: 5 2 : 71 : 71 : 1.0
+T: 5 3 : 71 : 71 : 0.1
+T: 5 3 : 71 : 103 : 0.9
+T: 5 4 : 71 : 71 : 1.0
+T: 5 5 : 71 : 71 : 1.0
+T: 0 0 : 72 : 8 : 0.9
+T: 0 0 : 72 : 72 : 0.1
+T: 0 1 : 72 : 8 : 0.09
+T: 0 1 : 72 : 24 : 0.81
+T: 0 1 : 72 : 72 : 0.01
+T: 0 1 : 72 : 88 : 0.09
+T: 0 2 : 72 : 8 : 0.9
+T: 0 2 : 72 : 72 : 0.1
+T: 0 3 : 72 : 8 : 0.09
+T: 0 3 : 72 : 40 : 0.81
+T: 0 3 : 72 : 72 : 0.01
+T: 0 3 : 72 : 104 : 0.09
+T: 0 4 : 72 : 9 : 0.9
+T: 0 4 : 72 : 73 : 0.1
+T: 0 5 : 72 : 9 : 0.9
+T: 0 5 : 72 : 73 : 0.1
+T: 1 0 : 72 : 72 : 1.0
+T: 1 1 : 72 : 72 : 0.1
+T: 1 1 : 72 : 88 : 0.9
+T: 1 2 : 72 : 72 : 1.0
+T: 1 3 : 72 : 72 : 0.1
+T: 1 3 : 72 : 104 : 0.9
+T: 1 4 : 72 : 73 : 1.0
+T: 1 5 : 72 : 73 : 1.0
+T: 2 0 : 72 : 72 : 1.0
+T: 2 1 : 72 : 72 : 0.1
+T: 2 1 : 72 : 88 : 0.9
+T: 2 2 : 72 : 72 : 1.0
+T: 2 3 : 72 : 72 : 0.1
+T: 2 3 : 72 : 104 : 0.9
+T: 2 4 : 72 : 73 : 1.0
+T: 2 5 : 72 : 73 : 1.0
+T: 3 0 : 72 : 72 : 0.1
+T: 3 0 : 72 : 200 : 0.9
+T: 3 1 : 72 : 72 : 0.01
+T: 3 1 : 72 : 88 : 0.09
+T: 3 1 : 72 : 200 : 0.09
+T: 3 1 : 72 : 216 : 0.81
+T: 3 2 : 72 : 72 : 0.1
+T: 3 2 : 72 : 200 : 0.9
+T: 3 3 : 72 : 72 : 0.01
+T: 3 3 : 72 : 104 : 0.09
+T: 3 3 : 72 : 200 : 0.09
+T: 3 3 : 72 : 232 : 0.81
+T: 3 4 : 72 : 73 : 0.1
+T: 3 4 : 72 : 201 : 0.9
+T: 3 5 : 72 : 73 : 0.1
+T: 3 5 : 72 : 201 : 0.9
+T: 4 0 : 72 : 74 : 1.0
+T: 4 1 : 72 : 74 : 0.1
+T: 4 1 : 72 : 90 : 0.9
+T: 4 2 : 72 : 74 : 1.0
+T: 4 3 : 72 : 74 : 0.1
+T: 4 3 : 72 : 106 : 0.9
+T: 4 4 : 72 : 75 : 1.0
+T: 4 5 : 72 : 75 : 1.0
+T: 5 0 : 72 : 74 : 1.0
+T: 5 1 : 72 : 74 : 0.1
+T: 5 1 : 72 : 90 : 0.9
+T: 5 2 : 72 : 74 : 1.0
+T: 5 3 : 72 : 74 : 0.1
+T: 5 3 : 72 : 106 : 0.9
+T: 5 4 : 72 : 75 : 1.0
+T: 5 5 : 72 : 75 : 1.0
+T: 0 0 : 73 : 9 : 0.9
+T: 0 0 : 73 : 73 : 0.1
+T: 0 1 : 73 : 9 : 0.09
+T: 0 1 : 73 : 25 : 0.81
+T: 0 1 : 73 : 73 : 0.01
+T: 0 1 : 73 : 89 : 0.09
+T: 0 2 : 73 : 9 : 0.9
+T: 0 2 : 73 : 73 : 0.1
+T: 0 3 : 73 : 9 : 0.09
+T: 0 3 : 73 : 41 : 0.81
+T: 0 3 : 73 : 73 : 0.01
+T: 0 3 : 73 : 105 : 0.09
+T: 0 4 : 73 : 9 : 0.9
+T: 0 4 : 73 : 73 : 0.1
+T: 0 5 : 73 : 9 : 0.9
+T: 0 5 : 73 : 73 : 0.1
+T: 1 0 : 73 : 73 : 1.0
+T: 1 1 : 73 : 73 : 0.1
+T: 1 1 : 73 : 89 : 0.9
+T: 1 2 : 73 : 73 : 1.0
+T: 1 3 : 73 : 73 : 0.1
+T: 1 3 : 73 : 105 : 0.9
+T: 1 4 : 73 : 73 : 1.0
+T: 1 5 : 73 : 73 : 1.0
+T: 2 0 : 73 : 73 : 1.0
+T: 2 1 : 73 : 73 : 0.1
+T: 2 1 : 73 : 89 : 0.9
+T: 2 2 : 73 : 73 : 1.0
+T: 2 3 : 73 : 73 : 0.1
+T: 2 3 : 73 : 105 : 0.9
+T: 2 4 : 73 : 73 : 1.0
+T: 2 5 : 73 : 73 : 1.0
+T: 3 0 : 73 : 73 : 0.1
+T: 3 0 : 73 : 201 : 0.9
+T: 3 1 : 73 : 73 : 0.01
+T: 3 1 : 73 : 89 : 0.09
+T: 3 1 : 73 : 201 : 0.09
+T: 3 1 : 73 : 217 : 0.81
+T: 3 2 : 73 : 73 : 0.1
+T: 3 2 : 73 : 201 : 0.9
+T: 3 3 : 73 : 73 : 0.01
+T: 3 3 : 73 : 105 : 0.09
+T: 3 3 : 73 : 201 : 0.09
+T: 3 3 : 73 : 233 : 0.81
+T: 3 4 : 73 : 73 : 0.1
+T: 3 4 : 73 : 201 : 0.9
+T: 3 5 : 73 : 73 : 0.1
+T: 3 5 : 73 : 201 : 0.9
+T: 4 0 : 73 : 75 : 1.0
+T: 4 1 : 73 : 75 : 0.1
+T: 4 1 : 73 : 91 : 0.9
+T: 4 2 : 73 : 75 : 1.0
+T: 4 3 : 73 : 75 : 0.1
+T: 4 3 : 73 : 107 : 0.9
+T: 4 4 : 73 : 75 : 1.0
+T: 4 5 : 73 : 75 : 1.0
+T: 5 0 : 73 : 75 : 1.0
+T: 5 1 : 73 : 75 : 0.1
+T: 5 1 : 73 : 91 : 0.9
+T: 5 2 : 73 : 75 : 1.0
+T: 5 3 : 73 : 75 : 0.1
+T: 5 3 : 73 : 107 : 0.9
+T: 5 4 : 73 : 75 : 1.0
+T: 5 5 : 73 : 75 : 1.0
+T: 0 0 : 74 : 10 : 0.9
+T: 0 0 : 74 : 74 : 0.1
+T: 0 1 : 74 : 10 : 0.09
+T: 0 1 : 74 : 26 : 0.81
+T: 0 1 : 74 : 74 : 0.01
+T: 0 1 : 74 : 90 : 0.09
+T: 0 2 : 74 : 10 : 0.9
+T: 0 2 : 74 : 74 : 0.1
+T: 0 3 : 74 : 10 : 0.09
+T: 0 3 : 74 : 42 : 0.81
+T: 0 3 : 74 : 74 : 0.01
+T: 0 3 : 74 : 106 : 0.09
+T: 0 4 : 74 : 11 : 0.9
+T: 0 4 : 74 : 75 : 0.1
+T: 0 5 : 74 : 11 : 0.9
+T: 0 5 : 74 : 75 : 0.1
+T: 1 0 : 74 : 74 : 1.0
+T: 1 1 : 74 : 74 : 0.1
+T: 1 1 : 74 : 90 : 0.9
+T: 1 2 : 74 : 74 : 1.0
+T: 1 3 : 74 : 74 : 0.1
+T: 1 3 : 74 : 106 : 0.9
+T: 1 4 : 74 : 75 : 1.0
+T: 1 5 : 74 : 75 : 1.0
+T: 2 0 : 74 : 74 : 1.0
+T: 2 1 : 74 : 74 : 0.1
+T: 2 1 : 74 : 90 : 0.9
+T: 2 2 : 74 : 74 : 1.0
+T: 2 3 : 74 : 74 : 0.1
+T: 2 3 : 74 : 106 : 0.9
+T: 2 4 : 74 : 75 : 1.0
+T: 2 5 : 74 : 75 : 1.0
+T: 3 0 : 74 : 74 : 0.1
+T: 3 0 : 74 : 202 : 0.9
+T: 3 1 : 74 : 74 : 0.01
+T: 3 1 : 74 : 90 : 0.09
+T: 3 1 : 74 : 202 : 0.09
+T: 3 1 : 74 : 218 : 0.81
+T: 3 2 : 74 : 74 : 0.1
+T: 3 2 : 74 : 202 : 0.9
+T: 3 3 : 74 : 74 : 0.01
+T: 3 3 : 74 : 106 : 0.09
+T: 3 3 : 74 : 202 : 0.09
+T: 3 3 : 74 : 234 : 0.81
+T: 3 4 : 74 : 75 : 0.1
+T: 3 4 : 74 : 203 : 0.9
+T: 3 5 : 74 : 75 : 0.1
+T: 3 5 : 74 : 203 : 0.9
+T: 4 0 : 74 : 74 : 1.0
+T: 4 1 : 74 : 74 : 0.1
+T: 4 1 : 74 : 90 : 0.9
+T: 4 2 : 74 : 74 : 1.0
+T: 4 3 : 74 : 74 : 0.1
+T: 4 3 : 74 : 106 : 0.9
+T: 4 4 : 74 : 75 : 1.0
+T: 4 5 : 74 : 75 : 1.0
+T: 5 0 : 74 : 74 : 1.0
+T: 5 1 : 74 : 74 : 0.1
+T: 5 1 : 74 : 90 : 0.9
+T: 5 2 : 74 : 74 : 1.0
+T: 5 3 : 74 : 74 : 0.1
+T: 5 3 : 74 : 106 : 0.9
+T: 5 4 : 74 : 75 : 1.0
+T: 5 5 : 74 : 75 : 1.0
+T: 0 0 : 75 : 11 : 0.9
+T: 0 0 : 75 : 75 : 0.1
+T: 0 1 : 75 : 11 : 0.09
+T: 0 1 : 75 : 27 : 0.81
+T: 0 1 : 75 : 75 : 0.01
+T: 0 1 : 75 : 91 : 0.09
+T: 0 2 : 75 : 11 : 0.9
+T: 0 2 : 75 : 75 : 0.1
+T: 0 3 : 75 : 11 : 0.09
+T: 0 3 : 75 : 43 : 0.81
+T: 0 3 : 75 : 75 : 0.01
+T: 0 3 : 75 : 107 : 0.09
+T: 0 4 : 75 : 11 : 0.9
+T: 0 4 : 75 : 75 : 0.1
+T: 0 5 : 75 : 11 : 0.9
+T: 0 5 : 75 : 75 : 0.1
+T: 1 0 : 75 : 75 : 1.0
+T: 1 1 : 75 : 75 : 0.1
+T: 1 1 : 75 : 91 : 0.9
+T: 1 2 : 75 : 75 : 1.0
+T: 1 3 : 75 : 75 : 0.1
+T: 1 3 : 75 : 107 : 0.9
+T: 1 4 : 75 : 75 : 1.0
+T: 1 5 : 75 : 75 : 1.0
+T: 2 0 : 75 : 75 : 1.0
+T: 2 1 : 75 : 75 : 0.1
+T: 2 1 : 75 : 91 : 0.9
+T: 2 2 : 75 : 75 : 1.0
+T: 2 3 : 75 : 75 : 0.1
+T: 2 3 : 75 : 107 : 0.9
+T: 2 4 : 75 : 75 : 1.0
+T: 2 5 : 75 : 75 : 1.0
+T: 3 0 : 75 : 75 : 0.1
+T: 3 0 : 75 : 203 : 0.9
+T: 3 1 : 75 : 75 : 0.01
+T: 3 1 : 75 : 91 : 0.09
+T: 3 1 : 75 : 203 : 0.09
+T: 3 1 : 75 : 219 : 0.81
+T: 3 2 : 75 : 75 : 0.1
+T: 3 2 : 75 : 203 : 0.9
+T: 3 3 : 75 : 75 : 0.01
+T: 3 3 : 75 : 107 : 0.09
+T: 3 3 : 75 : 203 : 0.09
+T: 3 3 : 75 : 235 : 0.81
+T: 3 4 : 75 : 75 : 0.1
+T: 3 4 : 75 : 203 : 0.9
+T: 3 5 : 75 : 75 : 0.1
+T: 3 5 : 75 : 203 : 0.9
+T: 4 0 : 75 : 75 : 1.0
+T: 4 1 : 75 : 75 : 0.1
+T: 4 1 : 75 : 91 : 0.9
+T: 4 2 : 75 : 75 : 1.0
+T: 4 3 : 75 : 75 : 0.1
+T: 4 3 : 75 : 107 : 0.9
+T: 4 4 : 75 : 75 : 1.0
+T: 4 5 : 75 : 75 : 1.0
+T: 5 0 : 75 : 75 : 1.0
+T: 5 1 : 75 : 75 : 0.1
+T: 5 1 : 75 : 91 : 0.9
+T: 5 2 : 75 : 75 : 1.0
+T: 5 3 : 75 : 75 : 0.1
+T: 5 3 : 75 : 107 : 0.9
+T: 5 4 : 75 : 75 : 1.0
+T: 5 5 : 75 : 75 : 1.0
+T: 0 0 : 76 : 12 : 0.9
+T: 0 0 : 76 : 76 : 0.1
+T: 0 1 : 76 : 12 : 0.09
+T: 0 1 : 76 : 28 : 0.81
+T: 0 1 : 76 : 76 : 0.01
+T: 0 1 : 76 : 92 : 0.09
+T: 0 2 : 76 : 12 : 0.9
+T: 0 2 : 76 : 76 : 0.1
+T: 0 3 : 76 : 12 : 0.09
+T: 0 3 : 76 : 44 : 0.81
+T: 0 3 : 76 : 76 : 0.01
+T: 0 3 : 76 : 108 : 0.09
+T: 0 4 : 76 : 13 : 0.9
+T: 0 4 : 76 : 77 : 0.1
+T: 0 5 : 76 : 13 : 0.9
+T: 0 5 : 76 : 77 : 0.1
+T: 1 0 : 76 : 76 : 1.0
+T: 1 1 : 76 : 76 : 0.1
+T: 1 1 : 76 : 92 : 0.9
+T: 1 2 : 76 : 76 : 1.0
+T: 1 3 : 76 : 76 : 0.1
+T: 1 3 : 76 : 108 : 0.9
+T: 1 4 : 76 : 77 : 1.0
+T: 1 5 : 76 : 77 : 1.0
+T: 2 0 : 76 : 76 : 1.0
+T: 2 1 : 76 : 76 : 0.1
+T: 2 1 : 76 : 92 : 0.9
+T: 2 2 : 76 : 76 : 1.0
+T: 2 3 : 76 : 76 : 0.1
+T: 2 3 : 76 : 108 : 0.9
+T: 2 4 : 76 : 77 : 1.0
+T: 2 5 : 76 : 77 : 1.0
+T: 3 0 : 76 : 76 : 0.1
+T: 3 0 : 76 : 204 : 0.9
+T: 3 1 : 76 : 76 : 0.01
+T: 3 1 : 76 : 92 : 0.09
+T: 3 1 : 76 : 204 : 0.09
+T: 3 1 : 76 : 220 : 0.81
+T: 3 2 : 76 : 76 : 0.1
+T: 3 2 : 76 : 204 : 0.9
+T: 3 3 : 76 : 76 : 0.01
+T: 3 3 : 76 : 108 : 0.09
+T: 3 3 : 76 : 204 : 0.09
+T: 3 3 : 76 : 236 : 0.81
+T: 3 4 : 76 : 77 : 0.1
+T: 3 4 : 76 : 205 : 0.9
+T: 3 5 : 76 : 77 : 0.1
+T: 3 5 : 76 : 205 : 0.9
+T: 4 0 : 76 : 78 : 1.0
+T: 4 1 : 76 : 78 : 0.1
+T: 4 1 : 76 : 94 : 0.9
+T: 4 2 : 76 : 78 : 1.0
+T: 4 3 : 76 : 78 : 0.1
+T: 4 3 : 76 : 110 : 0.9
+T: 4 4 : 76 : 0 : 1.0
+T: 4 5 : 76 : 0 : 1.0
+T: 5 0 : 76 : 78 : 1.0
+T: 5 1 : 76 : 78 : 0.1
+T: 5 1 : 76 : 94 : 0.9
+T: 5 2 : 76 : 78 : 1.0
+T: 5 3 : 76 : 78 : 0.1
+T: 5 3 : 76 : 110 : 0.9
+T: 5 4 : 76 : 0 : 1.0
+T: 5 5 : 76 : 0 : 1.0
+T: 0 0 : 77 : 13 : 0.9
+T: 0 0 : 77 : 77 : 0.1
+T: 0 1 : 77 : 13 : 0.09
+T: 0 1 : 77 : 29 : 0.81
+T: 0 1 : 77 : 77 : 0.01
+T: 0 1 : 77 : 93 : 0.09
+T: 0 2 : 77 : 13 : 0.9
+T: 0 2 : 77 : 77 : 0.1
+T: 0 3 : 77 : 13 : 0.09
+T: 0 3 : 77 : 45 : 0.81
+T: 0 3 : 77 : 77 : 0.01
+T: 0 3 : 77 : 109 : 0.09
+T: 0 4 : 77 : 13 : 0.9
+T: 0 4 : 77 : 77 : 0.1
+T: 0 5 : 77 : 13 : 0.9
+T: 0 5 : 77 : 77 : 0.1
+T: 1 0 : 77 : 77 : 1.0
+T: 1 1 : 77 : 77 : 0.1
+T: 1 1 : 77 : 93 : 0.9
+T: 1 2 : 77 : 77 : 1.0
+T: 1 3 : 77 : 77 : 0.1
+T: 1 3 : 77 : 109 : 0.9
+T: 1 4 : 77 : 77 : 1.0
+T: 1 5 : 77 : 77 : 1.0
+T: 2 0 : 77 : 77 : 1.0
+T: 2 1 : 77 : 77 : 0.1
+T: 2 1 : 77 : 93 : 0.9
+T: 2 2 : 77 : 77 : 1.0
+T: 2 3 : 77 : 77 : 0.1
+T: 2 3 : 77 : 109 : 0.9
+T: 2 4 : 77 : 77 : 1.0
+T: 2 5 : 77 : 77 : 1.0
+T: 3 0 : 77 : 77 : 0.1
+T: 3 0 : 77 : 205 : 0.9
+T: 3 1 : 77 : 77 : 0.01
+T: 3 1 : 77 : 93 : 0.09
+T: 3 1 : 77 : 205 : 0.09
+T: 3 1 : 77 : 221 : 0.81
+T: 3 2 : 77 : 77 : 0.1
+T: 3 2 : 77 : 205 : 0.9
+T: 3 3 : 77 : 77 : 0.01
+T: 3 3 : 77 : 109 : 0.09
+T: 3 3 : 77 : 205 : 0.09
+T: 3 3 : 77 : 237 : 0.81
+T: 3 4 : 77 : 77 : 0.1
+T: 3 4 : 77 : 205 : 0.9
+T: 3 5 : 77 : 77 : 0.1
+T: 3 5 : 77 : 205 : 0.9
+T: 4 0 : 77 : 0 : 1.0
+T: 4 1 : 77 : 0 : 1.0
+T: 4 2 : 77 : 0 : 1.0
+T: 4 3 : 77 : 0 : 1.0
+T: 4 4 : 77 : 0 : 1.0
+T: 4 5 : 77 : 0 : 1.0
+T: 5 0 : 77 : 0 : 1.0
+T: 5 1 : 77 : 0 : 1.0
+T: 5 2 : 77 : 0 : 1.0
+T: 5 3 : 77 : 0 : 1.0
+T: 5 4 : 77 : 0 : 1.0
+T: 5 5 : 77 : 0 : 1.0
+T: 0 0 : 78 : 14 : 0.9
+T: 0 0 : 78 : 78 : 0.1
+T: 0 1 : 78 : 14 : 0.09
+T: 0 1 : 78 : 30 : 0.81
+T: 0 1 : 78 : 78 : 0.01
+T: 0 1 : 78 : 94 : 0.09
+T: 0 2 : 78 : 14 : 0.9
+T: 0 2 : 78 : 78 : 0.1
+T: 0 3 : 78 : 14 : 0.09
+T: 0 3 : 78 : 46 : 0.81
+T: 0 3 : 78 : 78 : 0.01
+T: 0 3 : 78 : 110 : 0.09
+T: 0 4 : 78 : 0 : 1.0
+T: 0 5 : 78 : 0 : 1.0
+T: 1 0 : 78 : 78 : 1.0
+T: 1 1 : 78 : 78 : 0.1
+T: 1 1 : 78 : 94 : 0.9
+T: 1 2 : 78 : 78 : 1.0
+T: 1 3 : 78 : 78 : 0.1
+T: 1 3 : 78 : 110 : 0.9
+T: 1 4 : 78 : 0 : 1.0
+T: 1 5 : 78 : 0 : 1.0
+T: 2 0 : 78 : 78 : 1.0
+T: 2 1 : 78 : 78 : 0.1
+T: 2 1 : 78 : 94 : 0.9
+T: 2 2 : 78 : 78 : 1.0
+T: 2 3 : 78 : 78 : 0.1
+T: 2 3 : 78 : 110 : 0.9
+T: 2 4 : 78 : 0 : 1.0
+T: 2 5 : 78 : 0 : 1.0
+T: 3 0 : 78 : 78 : 0.1
+T: 3 0 : 78 : 206 : 0.9
+T: 3 1 : 78 : 78 : 0.01
+T: 3 1 : 78 : 94 : 0.09
+T: 3 1 : 78 : 206 : 0.09
+T: 3 1 : 78 : 222 : 0.81
+T: 3 2 : 78 : 78 : 0.1
+T: 3 2 : 78 : 206 : 0.9
+T: 3 3 : 78 : 78 : 0.01
+T: 3 3 : 78 : 110 : 0.09
+T: 3 3 : 78 : 206 : 0.09
+T: 3 3 : 78 : 238 : 0.81
+T: 3 4 : 78 : 0 : 1.0
+T: 3 5 : 78 : 0 : 1.0
+T: 4 0 : 78 : 78 : 1.0
+T: 4 1 : 78 : 78 : 0.1
+T: 4 1 : 78 : 94 : 0.9
+T: 4 2 : 78 : 78 : 1.0
+T: 4 3 : 78 : 78 : 0.1
+T: 4 3 : 78 : 110 : 0.9
+T: 4 4 : 78 : 0 : 1.0
+T: 4 5 : 78 : 0 : 1.0
+T: 5 0 : 78 : 78 : 1.0
+T: 5 1 : 78 : 78 : 0.1
+T: 5 1 : 78 : 94 : 0.9
+T: 5 2 : 78 : 78 : 1.0
+T: 5 3 : 78 : 78 : 0.1
+T: 5 3 : 78 : 110 : 0.9
+T: 5 4 : 78 : 0 : 1.0
+T: 5 5 : 78 : 0 : 1.0
+T: 0 0 : 79 : 15 : 0.9
+T: 0 0 : 79 : 79 : 0.1
+T: 0 1 : 79 : 15 : 0.09
+T: 0 1 : 79 : 31 : 0.81
+T: 0 1 : 79 : 79 : 0.01
+T: 0 1 : 79 : 95 : 0.09
+T: 0 2 : 79 : 15 : 0.9
+T: 0 2 : 79 : 79 : 0.1
+T: 0 3 : 79 : 15 : 0.09
+T: 0 3 : 79 : 47 : 0.81
+T: 0 3 : 79 : 79 : 0.01
+T: 0 3 : 79 : 111 : 0.09
+T: 0 4 : 79 : 0 : 1.0
+T: 0 5 : 79 : 0 : 1.0
+T: 1 0 : 79 : 79 : 1.0
+T: 1 1 : 79 : 79 : 0.1
+T: 1 1 : 79 : 95 : 0.9
+T: 1 2 : 79 : 79 : 1.0
+T: 1 3 : 79 : 79 : 0.1
+T: 1 3 : 79 : 111 : 0.9
+T: 1 4 : 79 : 0 : 1.0
+T: 1 5 : 79 : 0 : 1.0
+T: 2 0 : 79 : 79 : 1.0
+T: 2 1 : 79 : 79 : 0.1
+T: 2 1 : 79 : 95 : 0.9
+T: 2 2 : 79 : 79 : 1.0
+T: 2 3 : 79 : 79 : 0.1
+T: 2 3 : 79 : 111 : 0.9
+T: 2 4 : 79 : 0 : 1.0
+T: 2 5 : 79 : 0 : 1.0
+T: 3 0 : 79 : 79 : 0.1
+T: 3 0 : 79 : 207 : 0.9
+T: 3 1 : 79 : 79 : 0.01
+T: 3 1 : 79 : 95 : 0.09
+T: 3 1 : 79 : 207 : 0.09
+T: 3 1 : 79 : 223 : 0.81
+T: 3 2 : 79 : 79 : 0.1
+T: 3 2 : 79 : 207 : 0.9
+T: 3 3 : 79 : 79 : 0.01
+T: 3 3 : 79 : 111 : 0.09
+T: 3 3 : 79 : 207 : 0.09
+T: 3 3 : 79 : 239 : 0.81
+T: 3 4 : 79 : 0 : 1.0
+T: 3 5 : 79 : 0 : 1.0
+T: 4 0 : 79 : 0 : 1.0
+T: 4 1 : 79 : 0 : 1.0
+T: 4 2 : 79 : 0 : 1.0
+T: 4 3 : 79 : 0 : 1.0
+T: 4 4 : 79 : 0 : 1.0
+T: 4 5 : 79 : 0 : 1.0
+T: 5 0 : 79 : 0 : 1.0
+T: 5 1 : 79 : 0 : 1.0
+T: 5 2 : 79 : 0 : 1.0
+T: 5 3 : 79 : 0 : 1.0
+T: 5 4 : 79 : 0 : 1.0
+T: 5 5 : 79 : 0 : 1.0
+T: 0 0 : 80 : 0 : 0.81
+T: 0 0 : 80 : 16 : 0.09
+T: 0 0 : 80 : 64 : 0.09
+T: 0 0 : 80 : 80 : 0.01
+T: 0 1 : 80 : 16 : 0.9
+T: 0 1 : 80 : 80 : 0.1
+T: 0 2 : 80 : 16 : 0.9
+T: 0 2 : 80 : 80 : 0.1
+T: 0 3 : 80 : 16 : 0.09
+T: 0 3 : 80 : 48 : 0.81
+T: 0 3 : 80 : 80 : 0.01
+T: 0 3 : 80 : 112 : 0.09
+T: 0 4 : 80 : 18 : 0.9
+T: 0 4 : 80 : 82 : 0.1
+T: 0 5 : 80 : 18 : 0.9
+T: 0 5 : 80 : 82 : 0.1
+T: 1 0 : 80 : 64 : 0.9
+T: 1 0 : 80 : 80 : 0.1
+T: 1 1 : 80 : 80 : 1.0
+T: 1 2 : 80 : 80 : 1.0
+T: 1 3 : 80 : 80 : 0.1
+T: 1 3 : 80 : 112 : 0.9
+T: 1 4 : 80 : 82 : 1.0
+T: 1 5 : 80 : 82 : 1.0
+T: 2 0 : 80 : 64 : 0.9
+T: 2 0 : 80 : 80 : 0.1
+T: 2 1 : 80 : 80 : 1.0
+T: 2 2 : 80 : 80 : 1.0
+T: 2 3 : 80 : 80 : 0.1
+T: 2 3 : 80 : 112 : 0.9
+T: 2 4 : 80 : 82 : 1.0
+T: 2 5 : 80 : 82 : 1.0
+T: 3 0 : 80 : 64 : 0.09
+T: 3 0 : 80 : 80 : 0.01
+T: 3 0 : 80 : 192 : 0.81
+T: 3 0 : 80 : 208 : 0.09
+T: 3 1 : 80 : 80 : 0.1
+T: 3 1 : 80 : 208 : 0.9
+T: 3 2 : 80 : 80 : 0.1
+T: 3 2 : 80 : 208 : 0.9
+T: 3 3 : 80 : 80 : 0.01
+T: 3 3 : 80 : 112 : 0.09
+T: 3 3 : 80 : 208 : 0.09
+T: 3 3 : 80 : 240 : 0.81
+T: 3 4 : 80 : 82 : 0.1
+T: 3 4 : 80 : 210 : 0.9
+T: 3 5 : 80 : 82 : 0.1
+T: 3 5 : 80 : 210 : 0.9
+T: 4 0 : 80 : 66 : 0.9
+T: 4 0 : 80 : 82 : 0.1
+T: 4 1 : 80 : 82 : 1.0
+T: 4 2 : 80 : 82 : 1.0
+T: 4 3 : 80 : 82 : 0.1
+T: 4 3 : 80 : 114 : 0.9
+T: 4 4 : 80 : 82 : 1.0
+T: 4 5 : 80 : 82 : 1.0
+T: 5 0 : 80 : 66 : 0.9
+T: 5 0 : 80 : 82 : 0.1
+T: 5 1 : 80 : 82 : 1.0
+T: 5 2 : 80 : 82 : 1.0
+T: 5 3 : 80 : 82 : 0.1
+T: 5 3 : 80 : 114 : 0.9
+T: 5 4 : 80 : 82 : 1.0
+T: 5 5 : 80 : 82 : 1.0
+T: 0 0 : 81 : 1 : 0.81
+T: 0 0 : 81 : 17 : 0.09
+T: 0 0 : 81 : 65 : 0.09
+T: 0 0 : 81 : 81 : 0.01
+T: 0 1 : 81 : 17 : 0.9
+T: 0 1 : 81 : 81 : 0.1
+T: 0 2 : 81 : 17 : 0.9
+T: 0 2 : 81 : 81 : 0.1
+T: 0 3 : 81 : 17 : 0.09
+T: 0 3 : 81 : 49 : 0.81
+T: 0 3 : 81 : 81 : 0.01
+T: 0 3 : 81 : 113 : 0.09
+T: 0 4 : 81 : 19 : 0.9
+T: 0 4 : 81 : 83 : 0.1
+T: 0 5 : 81 : 19 : 0.9
+T: 0 5 : 81 : 83 : 0.1
+T: 1 0 : 81 : 65 : 0.9
+T: 1 0 : 81 : 81 : 0.1
+T: 1 1 : 81 : 81 : 1.0
+T: 1 2 : 81 : 81 : 1.0
+T: 1 3 : 81 : 81 : 0.1
+T: 1 3 : 81 : 113 : 0.9
+T: 1 4 : 81 : 83 : 1.0
+T: 1 5 : 81 : 83 : 1.0
+T: 2 0 : 81 : 65 : 0.9
+T: 2 0 : 81 : 81 : 0.1
+T: 2 1 : 81 : 81 : 1.0
+T: 2 2 : 81 : 81 : 1.0
+T: 2 3 : 81 : 81 : 0.1
+T: 2 3 : 81 : 113 : 0.9
+T: 2 4 : 81 : 83 : 1.0
+T: 2 5 : 81 : 83 : 1.0
+T: 3 0 : 81 : 65 : 0.09
+T: 3 0 : 81 : 81 : 0.01
+T: 3 0 : 81 : 193 : 0.81
+T: 3 0 : 81 : 209 : 0.09
+T: 3 1 : 81 : 81 : 0.1
+T: 3 1 : 81 : 209 : 0.9
+T: 3 2 : 81 : 81 : 0.1
+T: 3 2 : 81 : 209 : 0.9
+T: 3 3 : 81 : 81 : 0.01
+T: 3 3 : 81 : 113 : 0.09
+T: 3 3 : 81 : 209 : 0.09
+T: 3 3 : 81 : 241 : 0.81
+T: 3 4 : 81 : 83 : 0.1
+T: 3 4 : 81 : 211 : 0.9
+T: 3 5 : 81 : 83 : 0.1
+T: 3 5 : 81 : 211 : 0.9
+T: 4 0 : 81 : 67 : 0.9
+T: 4 0 : 81 : 83 : 0.1
+T: 4 1 : 81 : 83 : 1.0
+T: 4 2 : 81 : 83 : 1.0
+T: 4 3 : 81 : 83 : 0.1
+T: 4 3 : 81 : 115 : 0.9
+T: 4 4 : 81 : 83 : 1.0
+T: 4 5 : 81 : 83 : 1.0
+T: 5 0 : 81 : 67 : 0.9
+T: 5 0 : 81 : 83 : 0.1
+T: 5 1 : 81 : 83 : 1.0
+T: 5 2 : 81 : 83 : 1.0
+T: 5 3 : 81 : 83 : 0.1
+T: 5 3 : 81 : 115 : 0.9
+T: 5 4 : 81 : 83 : 1.0
+T: 5 5 : 81 : 83 : 1.0
+T: 0 0 : 82 : 2 : 0.81
+T: 0 0 : 82 : 18 : 0.09
+T: 0 0 : 82 : 66 : 0.09
+T: 0 0 : 82 : 82 : 0.01
+T: 0 1 : 82 : 18 : 0.9
+T: 0 1 : 82 : 82 : 0.1
+T: 0 2 : 82 : 18 : 0.9
+T: 0 2 : 82 : 82 : 0.1
+T: 0 3 : 82 : 18 : 0.09
+T: 0 3 : 82 : 50 : 0.81
+T: 0 3 : 82 : 82 : 0.01
+T: 0 3 : 82 : 114 : 0.09
+T: 0 4 : 82 : 18 : 0.9
+T: 0 4 : 82 : 82 : 0.1
+T: 0 5 : 82 : 18 : 0.9
+T: 0 5 : 82 : 82 : 0.1
+T: 1 0 : 82 : 66 : 0.9
+T: 1 0 : 82 : 82 : 0.1
+T: 1 1 : 82 : 82 : 1.0
+T: 1 2 : 82 : 82 : 1.0
+T: 1 3 : 82 : 82 : 0.1
+T: 1 3 : 82 : 114 : 0.9
+T: 1 4 : 82 : 82 : 1.0
+T: 1 5 : 82 : 82 : 1.0
+T: 2 0 : 82 : 66 : 0.9
+T: 2 0 : 82 : 82 : 0.1
+T: 2 1 : 82 : 82 : 1.0
+T: 2 2 : 82 : 82 : 1.0
+T: 2 3 : 82 : 82 : 0.1
+T: 2 3 : 82 : 114 : 0.9
+T: 2 4 : 82 : 82 : 1.0
+T: 2 5 : 82 : 82 : 1.0
+T: 3 0 : 82 : 66 : 0.09
+T: 3 0 : 82 : 82 : 0.01
+T: 3 0 : 82 : 194 : 0.81
+T: 3 0 : 82 : 210 : 0.09
+T: 3 1 : 82 : 82 : 0.1
+T: 3 1 : 82 : 210 : 0.9
+T: 3 2 : 82 : 82 : 0.1
+T: 3 2 : 82 : 210 : 0.9
+T: 3 3 : 82 : 82 : 0.01
+T: 3 3 : 82 : 114 : 0.09
+T: 3 3 : 82 : 210 : 0.09
+T: 3 3 : 82 : 242 : 0.81
+T: 3 4 : 82 : 82 : 0.1
+T: 3 4 : 82 : 210 : 0.9
+T: 3 5 : 82 : 82 : 0.1
+T: 3 5 : 82 : 210 : 0.9
+T: 4 0 : 82 : 66 : 0.9
+T: 4 0 : 82 : 82 : 0.1
+T: 4 1 : 82 : 82 : 1.0
+T: 4 2 : 82 : 82 : 1.0
+T: 4 3 : 82 : 82 : 0.1
+T: 4 3 : 82 : 114 : 0.9
+T: 4 4 : 82 : 82 : 1.0
+T: 4 5 : 82 : 82 : 1.0
+T: 5 0 : 82 : 66 : 0.9
+T: 5 0 : 82 : 82 : 0.1
+T: 5 1 : 82 : 82 : 1.0
+T: 5 2 : 82 : 82 : 1.0
+T: 5 3 : 82 : 82 : 0.1
+T: 5 3 : 82 : 114 : 0.9
+T: 5 4 : 82 : 82 : 1.0
+T: 5 5 : 82 : 82 : 1.0
+T: 0 0 : 83 : 3 : 0.81
+T: 0 0 : 83 : 19 : 0.09
+T: 0 0 : 83 : 67 : 0.09
+T: 0 0 : 83 : 83 : 0.01
+T: 0 1 : 83 : 19 : 0.9
+T: 0 1 : 83 : 83 : 0.1
+T: 0 2 : 83 : 19 : 0.9
+T: 0 2 : 83 : 83 : 0.1
+T: 0 3 : 83 : 19 : 0.09
+T: 0 3 : 83 : 51 : 0.81
+T: 0 3 : 83 : 83 : 0.01
+T: 0 3 : 83 : 115 : 0.09
+T: 0 4 : 83 : 19 : 0.9
+T: 0 4 : 83 : 83 : 0.1
+T: 0 5 : 83 : 19 : 0.9
+T: 0 5 : 83 : 83 : 0.1
+T: 1 0 : 83 : 67 : 0.9
+T: 1 0 : 83 : 83 : 0.1
+T: 1 1 : 83 : 83 : 1.0
+T: 1 2 : 83 : 83 : 1.0
+T: 1 3 : 83 : 83 : 0.1
+T: 1 3 : 83 : 115 : 0.9
+T: 1 4 : 83 : 83 : 1.0
+T: 1 5 : 83 : 83 : 1.0
+T: 2 0 : 83 : 67 : 0.9
+T: 2 0 : 83 : 83 : 0.1
+T: 2 1 : 83 : 83 : 1.0
+T: 2 2 : 83 : 83 : 1.0
+T: 2 3 : 83 : 83 : 0.1
+T: 2 3 : 83 : 115 : 0.9
+T: 2 4 : 83 : 83 : 1.0
+T: 2 5 : 83 : 83 : 1.0
+T: 3 0 : 83 : 67 : 0.09
+T: 3 0 : 83 : 83 : 0.01
+T: 3 0 : 83 : 195 : 0.81
+T: 3 0 : 83 : 211 : 0.09
+T: 3 1 : 83 : 83 : 0.1
+T: 3 1 : 83 : 211 : 0.9
+T: 3 2 : 83 : 83 : 0.1
+T: 3 2 : 83 : 211 : 0.9
+T: 3 3 : 83 : 83 : 0.01
+T: 3 3 : 83 : 115 : 0.09
+T: 3 3 : 83 : 211 : 0.09
+T: 3 3 : 83 : 243 : 0.81
+T: 3 4 : 83 : 83 : 0.1
+T: 3 4 : 83 : 211 : 0.9
+T: 3 5 : 83 : 83 : 0.1
+T: 3 5 : 83 : 211 : 0.9
+T: 4 0 : 83 : 67 : 0.9
+T: 4 0 : 83 : 83 : 0.1
+T: 4 1 : 83 : 83 : 1.0
+T: 4 2 : 83 : 83 : 1.0
+T: 4 3 : 83 : 83 : 0.1
+T: 4 3 : 83 : 115 : 0.9
+T: 4 4 : 83 : 83 : 1.0
+T: 4 5 : 83 : 83 : 1.0
+T: 5 0 : 83 : 67 : 0.9
+T: 5 0 : 83 : 83 : 0.1
+T: 5 1 : 83 : 83 : 1.0
+T: 5 2 : 83 : 83 : 1.0
+T: 5 3 : 83 : 83 : 0.1
+T: 5 3 : 83 : 115 : 0.9
+T: 5 4 : 83 : 83 : 1.0
+T: 5 5 : 83 : 83 : 1.0
+T: 0 0 : 84 : 4 : 0.81
+T: 0 0 : 84 : 20 : 0.09
+T: 0 0 : 84 : 68 : 0.09
+T: 0 0 : 84 : 84 : 0.01
+T: 0 1 : 84 : 20 : 0.9
+T: 0 1 : 84 : 84 : 0.1
+T: 0 2 : 84 : 20 : 0.9
+T: 0 2 : 84 : 84 : 0.1
+T: 0 3 : 84 : 20 : 0.09
+T: 0 3 : 84 : 52 : 0.81
+T: 0 3 : 84 : 84 : 0.01
+T: 0 3 : 84 : 116 : 0.09
+T: 0 4 : 84 : 22 : 0.9
+T: 0 4 : 84 : 86 : 0.1
+T: 0 5 : 84 : 22 : 0.9
+T: 0 5 : 84 : 86 : 0.1
+T: 1 0 : 84 : 68 : 0.9
+T: 1 0 : 84 : 84 : 0.1
+T: 1 1 : 84 : 84 : 1.0
+T: 1 2 : 84 : 84 : 1.0
+T: 1 3 : 84 : 84 : 0.1
+T: 1 3 : 84 : 116 : 0.9
+T: 1 4 : 84 : 86 : 1.0
+T: 1 5 : 84 : 86 : 1.0
+T: 2 0 : 84 : 68 : 0.9
+T: 2 0 : 84 : 84 : 0.1
+T: 2 1 : 84 : 84 : 1.0
+T: 2 2 : 84 : 84 : 1.0
+T: 2 3 : 84 : 84 : 0.1
+T: 2 3 : 84 : 116 : 0.9
+T: 2 4 : 84 : 86 : 1.0
+T: 2 5 : 84 : 86 : 1.0
+T: 3 0 : 84 : 68 : 0.09
+T: 3 0 : 84 : 84 : 0.01
+T: 3 0 : 84 : 196 : 0.81
+T: 3 0 : 84 : 212 : 0.09
+T: 3 1 : 84 : 84 : 0.1
+T: 3 1 : 84 : 212 : 0.9
+T: 3 2 : 84 : 84 : 0.1
+T: 3 2 : 84 : 212 : 0.9
+T: 3 3 : 84 : 84 : 0.01
+T: 3 3 : 84 : 116 : 0.09
+T: 3 3 : 84 : 212 : 0.09
+T: 3 3 : 84 : 244 : 0.81
+T: 3 4 : 84 : 86 : 0.1
+T: 3 4 : 84 : 214 : 0.9
+T: 3 5 : 84 : 86 : 0.1
+T: 3 5 : 84 : 214 : 0.9
+T: 4 0 : 84 : 70 : 0.9
+T: 4 0 : 84 : 86 : 0.1
+T: 4 1 : 84 : 86 : 1.0
+T: 4 2 : 84 : 86 : 1.0
+T: 4 3 : 84 : 86 : 0.1
+T: 4 3 : 84 : 118 : 0.9
+T: 4 4 : 84 : 86 : 1.0
+T: 4 5 : 84 : 86 : 1.0
+T: 5 0 : 84 : 70 : 0.9
+T: 5 0 : 84 : 86 : 0.1
+T: 5 1 : 84 : 86 : 1.0
+T: 5 2 : 84 : 86 : 1.0
+T: 5 3 : 84 : 86 : 0.1
+T: 5 3 : 84 : 118 : 0.9
+T: 5 4 : 84 : 86 : 1.0
+T: 5 5 : 84 : 86 : 1.0
+T: 0 0 : 85 : 5 : 0.81
+T: 0 0 : 85 : 21 : 0.09
+T: 0 0 : 85 : 69 : 0.09
+T: 0 0 : 85 : 85 : 0.01
+T: 0 1 : 85 : 21 : 0.9
+T: 0 1 : 85 : 85 : 0.1
+T: 0 2 : 85 : 21 : 0.9
+T: 0 2 : 85 : 85 : 0.1
+T: 0 3 : 85 : 21 : 0.09
+T: 0 3 : 85 : 53 : 0.81
+T: 0 3 : 85 : 85 : 0.01
+T: 0 3 : 85 : 117 : 0.09
+T: 0 4 : 85 : 23 : 0.9
+T: 0 4 : 85 : 87 : 0.1
+T: 0 5 : 85 : 23 : 0.9
+T: 0 5 : 85 : 87 : 0.1
+T: 1 0 : 85 : 69 : 0.9
+T: 1 0 : 85 : 85 : 0.1
+T: 1 1 : 85 : 85 : 1.0
+T: 1 2 : 85 : 85 : 1.0
+T: 1 3 : 85 : 85 : 0.1
+T: 1 3 : 85 : 117 : 0.9
+T: 1 4 : 85 : 87 : 1.0
+T: 1 5 : 85 : 87 : 1.0
+T: 2 0 : 85 : 69 : 0.9
+T: 2 0 : 85 : 85 : 0.1
+T: 2 1 : 85 : 85 : 1.0
+T: 2 2 : 85 : 85 : 1.0
+T: 2 3 : 85 : 85 : 0.1
+T: 2 3 : 85 : 117 : 0.9
+T: 2 4 : 85 : 87 : 1.0
+T: 2 5 : 85 : 87 : 1.0
+T: 3 0 : 85 : 69 : 0.09
+T: 3 0 : 85 : 85 : 0.01
+T: 3 0 : 85 : 197 : 0.81
+T: 3 0 : 85 : 213 : 0.09
+T: 3 1 : 85 : 85 : 0.1
+T: 3 1 : 85 : 213 : 0.9
+T: 3 2 : 85 : 85 : 0.1
+T: 3 2 : 85 : 213 : 0.9
+T: 3 3 : 85 : 85 : 0.01
+T: 3 3 : 85 : 117 : 0.09
+T: 3 3 : 85 : 213 : 0.09
+T: 3 3 : 85 : 245 : 0.81
+T: 3 4 : 85 : 87 : 0.1
+T: 3 4 : 85 : 215 : 0.9
+T: 3 5 : 85 : 87 : 0.1
+T: 3 5 : 85 : 215 : 0.9
+T: 4 0 : 85 : 71 : 0.9
+T: 4 0 : 85 : 87 : 0.1
+T: 4 1 : 85 : 87 : 1.0
+T: 4 2 : 85 : 87 : 1.0
+T: 4 3 : 85 : 87 : 0.1
+T: 4 3 : 85 : 119 : 0.9
+T: 4 4 : 85 : 87 : 1.0
+T: 4 5 : 85 : 87 : 1.0
+T: 5 0 : 85 : 71 : 0.9
+T: 5 0 : 85 : 87 : 0.1
+T: 5 1 : 85 : 87 : 1.0
+T: 5 2 : 85 : 87 : 1.0
+T: 5 3 : 85 : 87 : 0.1
+T: 5 3 : 85 : 119 : 0.9
+T: 5 4 : 85 : 87 : 1.0
+T: 5 5 : 85 : 87 : 1.0
+T: 0 0 : 86 : 6 : 0.81
+T: 0 0 : 86 : 22 : 0.09
+T: 0 0 : 86 : 70 : 0.09
+T: 0 0 : 86 : 86 : 0.01
+T: 0 1 : 86 : 22 : 0.9
+T: 0 1 : 86 : 86 : 0.1
+T: 0 2 : 86 : 22 : 0.9
+T: 0 2 : 86 : 86 : 0.1
+T: 0 3 : 86 : 22 : 0.09
+T: 0 3 : 86 : 54 : 0.81
+T: 0 3 : 86 : 86 : 0.01
+T: 0 3 : 86 : 118 : 0.09
+T: 0 4 : 86 : 22 : 0.9
+T: 0 4 : 86 : 86 : 0.1
+T: 0 5 : 86 : 22 : 0.9
+T: 0 5 : 86 : 86 : 0.1
+T: 1 0 : 86 : 70 : 0.9
+T: 1 0 : 86 : 86 : 0.1
+T: 1 1 : 86 : 86 : 1.0
+T: 1 2 : 86 : 86 : 1.0
+T: 1 3 : 86 : 86 : 0.1
+T: 1 3 : 86 : 118 : 0.9
+T: 1 4 : 86 : 86 : 1.0
+T: 1 5 : 86 : 86 : 1.0
+T: 2 0 : 86 : 70 : 0.9
+T: 2 0 : 86 : 86 : 0.1
+T: 2 1 : 86 : 86 : 1.0
+T: 2 2 : 86 : 86 : 1.0
+T: 2 3 : 86 : 86 : 0.1
+T: 2 3 : 86 : 118 : 0.9
+T: 2 4 : 86 : 86 : 1.0
+T: 2 5 : 86 : 86 : 1.0
+T: 3 0 : 86 : 70 : 0.09
+T: 3 0 : 86 : 86 : 0.01
+T: 3 0 : 86 : 198 : 0.81
+T: 3 0 : 86 : 214 : 0.09
+T: 3 1 : 86 : 86 : 0.1
+T: 3 1 : 86 : 214 : 0.9
+T: 3 2 : 86 : 86 : 0.1
+T: 3 2 : 86 : 214 : 0.9
+T: 3 3 : 86 : 86 : 0.01
+T: 3 3 : 86 : 118 : 0.09
+T: 3 3 : 86 : 214 : 0.09
+T: 3 3 : 86 : 246 : 0.81
+T: 3 4 : 86 : 86 : 0.1
+T: 3 4 : 86 : 214 : 0.9
+T: 3 5 : 86 : 86 : 0.1
+T: 3 5 : 86 : 214 : 0.9
+T: 4 0 : 86 : 70 : 0.9
+T: 4 0 : 86 : 86 : 0.1
+T: 4 1 : 86 : 86 : 1.0
+T: 4 2 : 86 : 86 : 1.0
+T: 4 3 : 86 : 86 : 0.1
+T: 4 3 : 86 : 118 : 0.9
+T: 4 4 : 86 : 86 : 1.0
+T: 4 5 : 86 : 86 : 1.0
+T: 5 0 : 86 : 70 : 0.9
+T: 5 0 : 86 : 86 : 0.1
+T: 5 1 : 86 : 86 : 1.0
+T: 5 2 : 86 : 86 : 1.0
+T: 5 3 : 86 : 86 : 0.1
+T: 5 3 : 86 : 118 : 0.9
+T: 5 4 : 86 : 86 : 1.0
+T: 5 5 : 86 : 86 : 1.0
+T: 0 0 : 87 : 7 : 0.81
+T: 0 0 : 87 : 23 : 0.09
+T: 0 0 : 87 : 71 : 0.09
+T: 0 0 : 87 : 87 : 0.01
+T: 0 1 : 87 : 23 : 0.9
+T: 0 1 : 87 : 87 : 0.1
+T: 0 2 : 87 : 23 : 0.9
+T: 0 2 : 87 : 87 : 0.1
+T: 0 3 : 87 : 23 : 0.09
+T: 0 3 : 87 : 55 : 0.81
+T: 0 3 : 87 : 87 : 0.01
+T: 0 3 : 87 : 119 : 0.09
+T: 0 4 : 87 : 23 : 0.9
+T: 0 4 : 87 : 87 : 0.1
+T: 0 5 : 87 : 23 : 0.9
+T: 0 5 : 87 : 87 : 0.1
+T: 1 0 : 87 : 71 : 0.9
+T: 1 0 : 87 : 87 : 0.1
+T: 1 1 : 87 : 87 : 1.0
+T: 1 2 : 87 : 87 : 1.0
+T: 1 3 : 87 : 87 : 0.1
+T: 1 3 : 87 : 119 : 0.9
+T: 1 4 : 87 : 87 : 1.0
+T: 1 5 : 87 : 87 : 1.0
+T: 2 0 : 87 : 71 : 0.9
+T: 2 0 : 87 : 87 : 0.1
+T: 2 1 : 87 : 87 : 1.0
+T: 2 2 : 87 : 87 : 1.0
+T: 2 3 : 87 : 87 : 0.1
+T: 2 3 : 87 : 119 : 0.9
+T: 2 4 : 87 : 87 : 1.0
+T: 2 5 : 87 : 87 : 1.0
+T: 3 0 : 87 : 71 : 0.09
+T: 3 0 : 87 : 87 : 0.01
+T: 3 0 : 87 : 199 : 0.81
+T: 3 0 : 87 : 215 : 0.09
+T: 3 1 : 87 : 87 : 0.1
+T: 3 1 : 87 : 215 : 0.9
+T: 3 2 : 87 : 87 : 0.1
+T: 3 2 : 87 : 215 : 0.9
+T: 3 3 : 87 : 87 : 0.01
+T: 3 3 : 87 : 119 : 0.09
+T: 3 3 : 87 : 215 : 0.09
+T: 3 3 : 87 : 247 : 0.81
+T: 3 4 : 87 : 87 : 0.1
+T: 3 4 : 87 : 215 : 0.9
+T: 3 5 : 87 : 87 : 0.1
+T: 3 5 : 87 : 215 : 0.9
+T: 4 0 : 87 : 71 : 0.9
+T: 4 0 : 87 : 87 : 0.1
+T: 4 1 : 87 : 87 : 1.0
+T: 4 2 : 87 : 87 : 1.0
+T: 4 3 : 87 : 87 : 0.1
+T: 4 3 : 87 : 119 : 0.9
+T: 4 4 : 87 : 87 : 1.0
+T: 4 5 : 87 : 87 : 1.0
+T: 5 0 : 87 : 71 : 0.9
+T: 5 0 : 87 : 87 : 0.1
+T: 5 1 : 87 : 87 : 1.0
+T: 5 2 : 87 : 87 : 1.0
+T: 5 3 : 87 : 87 : 0.1
+T: 5 3 : 87 : 119 : 0.9
+T: 5 4 : 87 : 87 : 1.0
+T: 5 5 : 87 : 87 : 1.0
+T: 0 0 : 88 : 8 : 0.81
+T: 0 0 : 88 : 24 : 0.09
+T: 0 0 : 88 : 72 : 0.09
+T: 0 0 : 88 : 88 : 0.01
+T: 0 1 : 88 : 24 : 0.9
+T: 0 1 : 88 : 88 : 0.1
+T: 0 2 : 88 : 24 : 0.9
+T: 0 2 : 88 : 88 : 0.1
+T: 0 3 : 88 : 24 : 0.09
+T: 0 3 : 88 : 56 : 0.81
+T: 0 3 : 88 : 88 : 0.01
+T: 0 3 : 88 : 120 : 0.09
+T: 0 4 : 88 : 26 : 0.9
+T: 0 4 : 88 : 90 : 0.1
+T: 0 5 : 88 : 26 : 0.9
+T: 0 5 : 88 : 90 : 0.1
+T: 1 0 : 88 : 72 : 0.9
+T: 1 0 : 88 : 88 : 0.1
+T: 1 1 : 88 : 88 : 1.0
+T: 1 2 : 88 : 88 : 1.0
+T: 1 3 : 88 : 88 : 0.1
+T: 1 3 : 88 : 120 : 0.9
+T: 1 4 : 88 : 90 : 1.0
+T: 1 5 : 88 : 90 : 1.0
+T: 2 0 : 88 : 72 : 0.9
+T: 2 0 : 88 : 88 : 0.1
+T: 2 1 : 88 : 88 : 1.0
+T: 2 2 : 88 : 88 : 1.0
+T: 2 3 : 88 : 88 : 0.1
+T: 2 3 : 88 : 120 : 0.9
+T: 2 4 : 88 : 90 : 1.0
+T: 2 5 : 88 : 90 : 1.0
+T: 3 0 : 88 : 72 : 0.09
+T: 3 0 : 88 : 88 : 0.01
+T: 3 0 : 88 : 200 : 0.81
+T: 3 0 : 88 : 216 : 0.09
+T: 3 1 : 88 : 88 : 0.1
+T: 3 1 : 88 : 216 : 0.9
+T: 3 2 : 88 : 88 : 0.1
+T: 3 2 : 88 : 216 : 0.9
+T: 3 3 : 88 : 88 : 0.01
+T: 3 3 : 88 : 120 : 0.09
+T: 3 3 : 88 : 216 : 0.09
+T: 3 3 : 88 : 248 : 0.81
+T: 3 4 : 88 : 90 : 0.1
+T: 3 4 : 88 : 218 : 0.9
+T: 3 5 : 88 : 90 : 0.1
+T: 3 5 : 88 : 218 : 0.9
+T: 4 0 : 88 : 74 : 0.9
+T: 4 0 : 88 : 90 : 0.1
+T: 4 1 : 88 : 90 : 1.0
+T: 4 2 : 88 : 90 : 1.0
+T: 4 3 : 88 : 90 : 0.1
+T: 4 3 : 88 : 122 : 0.9
+T: 4 4 : 88 : 90 : 1.0
+T: 4 5 : 88 : 90 : 1.0
+T: 5 0 : 88 : 74 : 0.9
+T: 5 0 : 88 : 90 : 0.1
+T: 5 1 : 88 : 90 : 1.0
+T: 5 2 : 88 : 90 : 1.0
+T: 5 3 : 88 : 90 : 0.1
+T: 5 3 : 88 : 122 : 0.9
+T: 5 4 : 88 : 90 : 1.0
+T: 5 5 : 88 : 90 : 1.0
+T: 0 0 : 89 : 9 : 0.81
+T: 0 0 : 89 : 25 : 0.09
+T: 0 0 : 89 : 73 : 0.09
+T: 0 0 : 89 : 89 : 0.01
+T: 0 1 : 89 : 25 : 0.9
+T: 0 1 : 89 : 89 : 0.1
+T: 0 2 : 89 : 25 : 0.9
+T: 0 2 : 89 : 89 : 0.1
+T: 0 3 : 89 : 25 : 0.09
+T: 0 3 : 89 : 57 : 0.81
+T: 0 3 : 89 : 89 : 0.01
+T: 0 3 : 89 : 121 : 0.09
+T: 0 4 : 89 : 27 : 0.9
+T: 0 4 : 89 : 91 : 0.1
+T: 0 5 : 89 : 27 : 0.9
+T: 0 5 : 89 : 91 : 0.1
+T: 1 0 : 89 : 73 : 0.9
+T: 1 0 : 89 : 89 : 0.1
+T: 1 1 : 89 : 89 : 1.0
+T: 1 2 : 89 : 89 : 1.0
+T: 1 3 : 89 : 89 : 0.1
+T: 1 3 : 89 : 121 : 0.9
+T: 1 4 : 89 : 91 : 1.0
+T: 1 5 : 89 : 91 : 1.0
+T: 2 0 : 89 : 73 : 0.9
+T: 2 0 : 89 : 89 : 0.1
+T: 2 1 : 89 : 89 : 1.0
+T: 2 2 : 89 : 89 : 1.0
+T: 2 3 : 89 : 89 : 0.1
+T: 2 3 : 89 : 121 : 0.9
+T: 2 4 : 89 : 91 : 1.0
+T: 2 5 : 89 : 91 : 1.0
+T: 3 0 : 89 : 73 : 0.09
+T: 3 0 : 89 : 89 : 0.01
+T: 3 0 : 89 : 201 : 0.81
+T: 3 0 : 89 : 217 : 0.09
+T: 3 1 : 89 : 89 : 0.1
+T: 3 1 : 89 : 217 : 0.9
+T: 3 2 : 89 : 89 : 0.1
+T: 3 2 : 89 : 217 : 0.9
+T: 3 3 : 89 : 89 : 0.01
+T: 3 3 : 89 : 121 : 0.09
+T: 3 3 : 89 : 217 : 0.09
+T: 3 3 : 89 : 249 : 0.81
+T: 3 4 : 89 : 91 : 0.1
+T: 3 4 : 89 : 219 : 0.9
+T: 3 5 : 89 : 91 : 0.1
+T: 3 5 : 89 : 219 : 0.9
+T: 4 0 : 89 : 75 : 0.9
+T: 4 0 : 89 : 91 : 0.1
+T: 4 1 : 89 : 91 : 1.0
+T: 4 2 : 89 : 91 : 1.0
+T: 4 3 : 89 : 91 : 0.1
+T: 4 3 : 89 : 123 : 0.9
+T: 4 4 : 89 : 91 : 1.0
+T: 4 5 : 89 : 91 : 1.0
+T: 5 0 : 89 : 75 : 0.9
+T: 5 0 : 89 : 91 : 0.1
+T: 5 1 : 89 : 91 : 1.0
+T: 5 2 : 89 : 91 : 1.0
+T: 5 3 : 89 : 91 : 0.1
+T: 5 3 : 89 : 123 : 0.9
+T: 5 4 : 89 : 91 : 1.0
+T: 5 5 : 89 : 91 : 1.0
+T: 0 0 : 90 : 10 : 0.81
+T: 0 0 : 90 : 26 : 0.09
+T: 0 0 : 90 : 74 : 0.09
+T: 0 0 : 90 : 90 : 0.01
+T: 0 1 : 90 : 26 : 0.9
+T: 0 1 : 90 : 90 : 0.1
+T: 0 2 : 90 : 26 : 0.9
+T: 0 2 : 90 : 90 : 0.1
+T: 0 3 : 90 : 26 : 0.09
+T: 0 3 : 90 : 58 : 0.81
+T: 0 3 : 90 : 90 : 0.01
+T: 0 3 : 90 : 122 : 0.09
+T: 0 4 : 90 : 26 : 0.9
+T: 0 4 : 90 : 90 : 0.1
+T: 0 5 : 90 : 26 : 0.9
+T: 0 5 : 90 : 90 : 0.1
+T: 1 0 : 90 : 74 : 0.9
+T: 1 0 : 90 : 90 : 0.1
+T: 1 1 : 90 : 90 : 1.0
+T: 1 2 : 90 : 90 : 1.0
+T: 1 3 : 90 : 90 : 0.1
+T: 1 3 : 90 : 122 : 0.9
+T: 1 4 : 90 : 90 : 1.0
+T: 1 5 : 90 : 90 : 1.0
+T: 2 0 : 90 : 74 : 0.9
+T: 2 0 : 90 : 90 : 0.1
+T: 2 1 : 90 : 90 : 1.0
+T: 2 2 : 90 : 90 : 1.0
+T: 2 3 : 90 : 90 : 0.1
+T: 2 3 : 90 : 122 : 0.9
+T: 2 4 : 90 : 90 : 1.0
+T: 2 5 : 90 : 90 : 1.0
+T: 3 0 : 90 : 74 : 0.09
+T: 3 0 : 90 : 90 : 0.01
+T: 3 0 : 90 : 202 : 0.81
+T: 3 0 : 90 : 218 : 0.09
+T: 3 1 : 90 : 90 : 0.1
+T: 3 1 : 90 : 218 : 0.9
+T: 3 2 : 90 : 90 : 0.1
+T: 3 2 : 90 : 218 : 0.9
+T: 3 3 : 90 : 90 : 0.01
+T: 3 3 : 90 : 122 : 0.09
+T: 3 3 : 90 : 218 : 0.09
+T: 3 3 : 90 : 250 : 0.81
+T: 3 4 : 90 : 90 : 0.1
+T: 3 4 : 90 : 218 : 0.9
+T: 3 5 : 90 : 90 : 0.1
+T: 3 5 : 90 : 218 : 0.9
+T: 4 0 : 90 : 74 : 0.9
+T: 4 0 : 90 : 90 : 0.1
+T: 4 1 : 90 : 90 : 1.0
+T: 4 2 : 90 : 90 : 1.0
+T: 4 3 : 90 : 90 : 0.1
+T: 4 3 : 90 : 122 : 0.9
+T: 4 4 : 90 : 90 : 1.0
+T: 4 5 : 90 : 90 : 1.0
+T: 5 0 : 90 : 74 : 0.9
+T: 5 0 : 90 : 90 : 0.1
+T: 5 1 : 90 : 90 : 1.0
+T: 5 2 : 90 : 90 : 1.0
+T: 5 3 : 90 : 90 : 0.1
+T: 5 3 : 90 : 122 : 0.9
+T: 5 4 : 90 : 90 : 1.0
+T: 5 5 : 90 : 90 : 1.0
+T: 0 0 : 91 : 11 : 0.81
+T: 0 0 : 91 : 27 : 0.09
+T: 0 0 : 91 : 75 : 0.09
+T: 0 0 : 91 : 91 : 0.01
+T: 0 1 : 91 : 27 : 0.9
+T: 0 1 : 91 : 91 : 0.1
+T: 0 2 : 91 : 27 : 0.9
+T: 0 2 : 91 : 91 : 0.1
+T: 0 3 : 91 : 27 : 0.09
+T: 0 3 : 91 : 59 : 0.81
+T: 0 3 : 91 : 91 : 0.01
+T: 0 3 : 91 : 123 : 0.09
+T: 0 4 : 91 : 27 : 0.9
+T: 0 4 : 91 : 91 : 0.1
+T: 0 5 : 91 : 27 : 0.9
+T: 0 5 : 91 : 91 : 0.1
+T: 1 0 : 91 : 75 : 0.9
+T: 1 0 : 91 : 91 : 0.1
+T: 1 1 : 91 : 91 : 1.0
+T: 1 2 : 91 : 91 : 1.0
+T: 1 3 : 91 : 91 : 0.1
+T: 1 3 : 91 : 123 : 0.9
+T: 1 4 : 91 : 91 : 1.0
+T: 1 5 : 91 : 91 : 1.0
+T: 2 0 : 91 : 75 : 0.9
+T: 2 0 : 91 : 91 : 0.1
+T: 2 1 : 91 : 91 : 1.0
+T: 2 2 : 91 : 91 : 1.0
+T: 2 3 : 91 : 91 : 0.1
+T: 2 3 : 91 : 123 : 0.9
+T: 2 4 : 91 : 91 : 1.0
+T: 2 5 : 91 : 91 : 1.0
+T: 3 0 : 91 : 75 : 0.09
+T: 3 0 : 91 : 91 : 0.01
+T: 3 0 : 91 : 203 : 0.81
+T: 3 0 : 91 : 219 : 0.09
+T: 3 1 : 91 : 91 : 0.1
+T: 3 1 : 91 : 219 : 0.9
+T: 3 2 : 91 : 91 : 0.1
+T: 3 2 : 91 : 219 : 0.9
+T: 3 3 : 91 : 91 : 0.01
+T: 3 3 : 91 : 123 : 0.09
+T: 3 3 : 91 : 219 : 0.09
+T: 3 3 : 91 : 251 : 0.81
+T: 3 4 : 91 : 91 : 0.1
+T: 3 4 : 91 : 219 : 0.9
+T: 3 5 : 91 : 91 : 0.1
+T: 3 5 : 91 : 219 : 0.9
+T: 4 0 : 91 : 75 : 0.9
+T: 4 0 : 91 : 91 : 0.1
+T: 4 1 : 91 : 91 : 1.0
+T: 4 2 : 91 : 91 : 1.0
+T: 4 3 : 91 : 91 : 0.1
+T: 4 3 : 91 : 123 : 0.9
+T: 4 4 : 91 : 91 : 1.0
+T: 4 5 : 91 : 91 : 1.0
+T: 5 0 : 91 : 75 : 0.9
+T: 5 0 : 91 : 91 : 0.1
+T: 5 1 : 91 : 91 : 1.0
+T: 5 2 : 91 : 91 : 1.0
+T: 5 3 : 91 : 91 : 0.1
+T: 5 3 : 91 : 123 : 0.9
+T: 5 4 : 91 : 91 : 1.0
+T: 5 5 : 91 : 91 : 1.0
+T: 0 0 : 92 : 12 : 0.81
+T: 0 0 : 92 : 28 : 0.09
+T: 0 0 : 92 : 76 : 0.09
+T: 0 0 : 92 : 92 : 0.01
+T: 0 1 : 92 : 28 : 0.9
+T: 0 1 : 92 : 92 : 0.1
+T: 0 2 : 92 : 28 : 0.9
+T: 0 2 : 92 : 92 : 0.1
+T: 0 3 : 92 : 28 : 0.09
+T: 0 3 : 92 : 60 : 0.81
+T: 0 3 : 92 : 92 : 0.01
+T: 0 3 : 92 : 124 : 0.09
+T: 0 4 : 92 : 30 : 0.9
+T: 0 4 : 92 : 94 : 0.1
+T: 0 5 : 92 : 30 : 0.9
+T: 0 5 : 92 : 94 : 0.1
+T: 1 0 : 92 : 76 : 0.9
+T: 1 0 : 92 : 92 : 0.1
+T: 1 1 : 92 : 92 : 1.0
+T: 1 2 : 92 : 92 : 1.0
+T: 1 3 : 92 : 92 : 0.1
+T: 1 3 : 92 : 124 : 0.9
+T: 1 4 : 92 : 94 : 1.0
+T: 1 5 : 92 : 94 : 1.0
+T: 2 0 : 92 : 76 : 0.9
+T: 2 0 : 92 : 92 : 0.1
+T: 2 1 : 92 : 92 : 1.0
+T: 2 2 : 92 : 92 : 1.0
+T: 2 3 : 92 : 92 : 0.1
+T: 2 3 : 92 : 124 : 0.9
+T: 2 4 : 92 : 94 : 1.0
+T: 2 5 : 92 : 94 : 1.0
+T: 3 0 : 92 : 76 : 0.09
+T: 3 0 : 92 : 92 : 0.01
+T: 3 0 : 92 : 204 : 0.81
+T: 3 0 : 92 : 220 : 0.09
+T: 3 1 : 92 : 92 : 0.1
+T: 3 1 : 92 : 220 : 0.9
+T: 3 2 : 92 : 92 : 0.1
+T: 3 2 : 92 : 220 : 0.9
+T: 3 3 : 92 : 92 : 0.01
+T: 3 3 : 92 : 124 : 0.09
+T: 3 3 : 92 : 220 : 0.09
+T: 3 3 : 92 : 252 : 0.81
+T: 3 4 : 92 : 94 : 0.1
+T: 3 4 : 92 : 222 : 0.9
+T: 3 5 : 92 : 94 : 0.1
+T: 3 5 : 92 : 222 : 0.9
+T: 4 0 : 92 : 78 : 0.9
+T: 4 0 : 92 : 94 : 0.1
+T: 4 1 : 92 : 94 : 1.0
+T: 4 2 : 92 : 94 : 1.0
+T: 4 3 : 92 : 94 : 0.1
+T: 4 3 : 92 : 126 : 0.9
+T: 4 4 : 92 : 94 : 1.0
+T: 4 5 : 92 : 94 : 1.0
+T: 5 0 : 92 : 78 : 0.9
+T: 5 0 : 92 : 94 : 0.1
+T: 5 1 : 92 : 94 : 1.0
+T: 5 2 : 92 : 94 : 1.0
+T: 5 3 : 92 : 94 : 0.1
+T: 5 3 : 92 : 126 : 0.9
+T: 5 4 : 92 : 94 : 1.0
+T: 5 5 : 92 : 94 : 1.0
+T: 0 0 : 93 : 13 : 0.81
+T: 0 0 : 93 : 29 : 0.09
+T: 0 0 : 93 : 77 : 0.09
+T: 0 0 : 93 : 93 : 0.01
+T: 0 1 : 93 : 29 : 0.9
+T: 0 1 : 93 : 93 : 0.1
+T: 0 2 : 93 : 29 : 0.9
+T: 0 2 : 93 : 93 : 0.1
+T: 0 3 : 93 : 29 : 0.09
+T: 0 3 : 93 : 61 : 0.81
+T: 0 3 : 93 : 93 : 0.01
+T: 0 3 : 93 : 125 : 0.09
+T: 0 4 : 93 : 0 : 1.0
+T: 0 5 : 93 : 0 : 1.0
+T: 1 0 : 93 : 77 : 0.9
+T: 1 0 : 93 : 93 : 0.1
+T: 1 1 : 93 : 93 : 1.0
+T: 1 2 : 93 : 93 : 1.0
+T: 1 3 : 93 : 93 : 0.1
+T: 1 3 : 93 : 125 : 0.9
+T: 1 4 : 93 : 0 : 1.0
+T: 1 5 : 93 : 0 : 1.0
+T: 2 0 : 93 : 77 : 0.9
+T: 2 0 : 93 : 93 : 0.1
+T: 2 1 : 93 : 93 : 1.0
+T: 2 2 : 93 : 93 : 1.0
+T: 2 3 : 93 : 93 : 0.1
+T: 2 3 : 93 : 125 : 0.9
+T: 2 4 : 93 : 0 : 1.0
+T: 2 5 : 93 : 0 : 1.0
+T: 3 0 : 93 : 77 : 0.09
+T: 3 0 : 93 : 93 : 0.01
+T: 3 0 : 93 : 205 : 0.81
+T: 3 0 : 93 : 221 : 0.09
+T: 3 1 : 93 : 93 : 0.1
+T: 3 1 : 93 : 221 : 0.9
+T: 3 2 : 93 : 93 : 0.1
+T: 3 2 : 93 : 221 : 0.9
+T: 3 3 : 93 : 93 : 0.01
+T: 3 3 : 93 : 125 : 0.09
+T: 3 3 : 93 : 221 : 0.09
+T: 3 3 : 93 : 253 : 0.81
+T: 3 4 : 93 : 0 : 1.0
+T: 3 5 : 93 : 0 : 1.0
+T: 4 0 : 93 : 0 : 1.0
+T: 4 1 : 93 : 0 : 1.0
+T: 4 2 : 93 : 0 : 1.0
+T: 4 3 : 93 : 0 : 1.0
+T: 4 4 : 93 : 0 : 1.0
+T: 4 5 : 93 : 0 : 1.0
+T: 5 0 : 93 : 0 : 1.0
+T: 5 1 : 93 : 0 : 1.0
+T: 5 2 : 93 : 0 : 1.0
+T: 5 3 : 93 : 0 : 1.0
+T: 5 4 : 93 : 0 : 1.0
+T: 5 5 : 93 : 0 : 1.0
+T: 0 0 : 94 : 14 : 0.81
+T: 0 0 : 94 : 30 : 0.09
+T: 0 0 : 94 : 78 : 0.09
+T: 0 0 : 94 : 94 : 0.01
+T: 0 1 : 94 : 30 : 0.9
+T: 0 1 : 94 : 94 : 0.1
+T: 0 2 : 94 : 30 : 0.9
+T: 0 2 : 94 : 94 : 0.1
+T: 0 3 : 94 : 30 : 0.09
+T: 0 3 : 94 : 62 : 0.81
+T: 0 3 : 94 : 94 : 0.01
+T: 0 3 : 94 : 126 : 0.09
+T: 0 4 : 94 : 30 : 0.9
+T: 0 4 : 94 : 94 : 0.1
+T: 0 5 : 94 : 30 : 0.9
+T: 0 5 : 94 : 94 : 0.1
+T: 1 0 : 94 : 78 : 0.9
+T: 1 0 : 94 : 94 : 0.1
+T: 1 1 : 94 : 94 : 1.0
+T: 1 2 : 94 : 94 : 1.0
+T: 1 3 : 94 : 94 : 0.1
+T: 1 3 : 94 : 126 : 0.9
+T: 1 4 : 94 : 94 : 1.0
+T: 1 5 : 94 : 94 : 1.0
+T: 2 0 : 94 : 78 : 0.9
+T: 2 0 : 94 : 94 : 0.1
+T: 2 1 : 94 : 94 : 1.0
+T: 2 2 : 94 : 94 : 1.0
+T: 2 3 : 94 : 94 : 0.1
+T: 2 3 : 94 : 126 : 0.9
+T: 2 4 : 94 : 94 : 1.0
+T: 2 5 : 94 : 94 : 1.0
+T: 3 0 : 94 : 78 : 0.09
+T: 3 0 : 94 : 94 : 0.01
+T: 3 0 : 94 : 206 : 0.81
+T: 3 0 : 94 : 222 : 0.09
+T: 3 1 : 94 : 94 : 0.1
+T: 3 1 : 94 : 222 : 0.9
+T: 3 2 : 94 : 94 : 0.1
+T: 3 2 : 94 : 222 : 0.9
+T: 3 3 : 94 : 94 : 0.01
+T: 3 3 : 94 : 126 : 0.09
+T: 3 3 : 94 : 222 : 0.09
+T: 3 3 : 94 : 254 : 0.81
+T: 3 4 : 94 : 94 : 0.1
+T: 3 4 : 94 : 222 : 0.9
+T: 3 5 : 94 : 94 : 0.1
+T: 3 5 : 94 : 222 : 0.9
+T: 4 0 : 94 : 78 : 0.9
+T: 4 0 : 94 : 94 : 0.1
+T: 4 1 : 94 : 94 : 1.0
+T: 4 2 : 94 : 94 : 1.0
+T: 4 3 : 94 : 94 : 0.1
+T: 4 3 : 94 : 126 : 0.9
+T: 4 4 : 94 : 94 : 1.0
+T: 4 5 : 94 : 94 : 1.0
+T: 5 0 : 94 : 78 : 0.9
+T: 5 0 : 94 : 94 : 0.1
+T: 5 1 : 94 : 94 : 1.0
+T: 5 2 : 94 : 94 : 1.0
+T: 5 3 : 94 : 94 : 0.1
+T: 5 3 : 94 : 126 : 0.9
+T: 5 4 : 94 : 94 : 1.0
+T: 5 5 : 94 : 94 : 1.0
+T: 0 0 : 95 : 15 : 0.81
+T: 0 0 : 95 : 31 : 0.09
+T: 0 0 : 95 : 79 : 0.09
+T: 0 0 : 95 : 95 : 0.01
+T: 0 1 : 95 : 31 : 0.9
+T: 0 1 : 95 : 95 : 0.1
+T: 0 2 : 95 : 31 : 0.9
+T: 0 2 : 95 : 95 : 0.1
+T: 0 3 : 95 : 31 : 0.09
+T: 0 3 : 95 : 63 : 0.81
+T: 0 3 : 95 : 95 : 0.01
+T: 0 3 : 95 : 127 : 0.09
+T: 0 4 : 95 : 0 : 1.0
+T: 0 5 : 95 : 0 : 1.0
+T: 1 0 : 95 : 79 : 0.9
+T: 1 0 : 95 : 95 : 0.1
+T: 1 1 : 95 : 95 : 1.0
+T: 1 2 : 95 : 95 : 1.0
+T: 1 3 : 95 : 95 : 0.1
+T: 1 3 : 95 : 127 : 0.9
+T: 1 4 : 95 : 0 : 1.0
+T: 1 5 : 95 : 0 : 1.0
+T: 2 0 : 95 : 79 : 0.9
+T: 2 0 : 95 : 95 : 0.1
+T: 2 1 : 95 : 95 : 1.0
+T: 2 2 : 95 : 95 : 1.0
+T: 2 3 : 95 : 95 : 0.1
+T: 2 3 : 95 : 127 : 0.9
+T: 2 4 : 95 : 0 : 1.0
+T: 2 5 : 95 : 0 : 1.0
+T: 3 0 : 95 : 79 : 0.09
+T: 3 0 : 95 : 95 : 0.01
+T: 3 0 : 95 : 207 : 0.81
+T: 3 0 : 95 : 223 : 0.09
+T: 3 1 : 95 : 95 : 0.1
+T: 3 1 : 95 : 223 : 0.9
+T: 3 2 : 95 : 95 : 0.1
+T: 3 2 : 95 : 223 : 0.9
+T: 3 3 : 95 : 95 : 0.01
+T: 3 3 : 95 : 127 : 0.09
+T: 3 3 : 95 : 223 : 0.09
+T: 3 3 : 95 : 255 : 0.81
+T: 3 4 : 95 : 0 : 1.0
+T: 3 5 : 95 : 0 : 1.0
+T: 4 0 : 95 : 0 : 1.0
+T: 4 1 : 95 : 0 : 1.0
+T: 4 2 : 95 : 0 : 1.0
+T: 4 3 : 95 : 0 : 1.0
+T: 4 4 : 95 : 0 : 1.0
+T: 4 5 : 95 : 0 : 1.0
+T: 5 0 : 95 : 0 : 1.0
+T: 5 1 : 95 : 0 : 1.0
+T: 5 2 : 95 : 0 : 1.0
+T: 5 3 : 95 : 0 : 1.0
+T: 5 4 : 95 : 0 : 1.0
+T: 5 5 : 95 : 0 : 1.0
+T: 0 0 : 96 : 32 : 0.9
+T: 0 0 : 96 : 96 : 0.1
+T: 0 1 : 96 : 32 : 0.09
+T: 0 1 : 96 : 48 : 0.81
+T: 0 1 : 96 : 96 : 0.01
+T: 0 1 : 96 : 112 : 0.09
+T: 0 2 : 96 : 0 : 0.81
+T: 0 2 : 96 : 32 : 0.09
+T: 0 2 : 96 : 64 : 0.09
+T: 0 2 : 96 : 96 : 0.01
+T: 0 3 : 96 : 32 : 0.9
+T: 0 3 : 96 : 96 : 0.1
+T: 0 4 : 96 : 36 : 0.9
+T: 0 4 : 96 : 100 : 0.1
+T: 0 5 : 96 : 36 : 0.9
+T: 0 5 : 96 : 100 : 0.1
+T: 1 0 : 96 : 96 : 1.0
+T: 1 1 : 96 : 96 : 0.1
+T: 1 1 : 96 : 112 : 0.9
+T: 1 2 : 96 : 64 : 0.9
+T: 1 2 : 96 : 96 : 0.1
+T: 1 3 : 96 : 96 : 1.0
+T: 1 4 : 96 : 100 : 1.0
+T: 1 5 : 96 : 100 : 1.0
+T: 2 0 : 96 : 96 : 1.0
+T: 2 1 : 96 : 96 : 0.1
+T: 2 1 : 96 : 112 : 0.9
+T: 2 2 : 96 : 64 : 0.9
+T: 2 2 : 96 : 96 : 0.1
+T: 2 3 : 96 : 96 : 1.0
+T: 2 4 : 96 : 100 : 1.0
+T: 2 5 : 96 : 100 : 1.0
+T: 3 0 : 96 : 96 : 0.1
+T: 3 0 : 96 : 224 : 0.9
+T: 3 1 : 96 : 96 : 0.01
+T: 3 1 : 96 : 112 : 0.09
+T: 3 1 : 96 : 224 : 0.09
+T: 3 1 : 96 : 240 : 0.81
+T: 3 2 : 96 : 64 : 0.09
+T: 3 2 : 96 : 96 : 0.01
+T: 3 2 : 96 : 192 : 0.81
+T: 3 2 : 96 : 224 : 0.09
+T: 3 3 : 96 : 96 : 0.1
+T: 3 3 : 96 : 224 : 0.9
+T: 3 4 : 96 : 100 : 0.1
+T: 3 4 : 96 : 228 : 0.9
+T: 3 5 : 96 : 100 : 0.1
+T: 3 5 : 96 : 228 : 0.9
+T: 4 0 : 96 : 98 : 1.0
+T: 4 1 : 96 : 98 : 0.1
+T: 4 1 : 96 : 114 : 0.9
+T: 4 2 : 96 : 66 : 0.9
+T: 4 2 : 96 : 98 : 0.1
+T: 4 3 : 96 : 98 : 1.0
+T: 4 4 : 96 : 102 : 1.0
+T: 4 5 : 96 : 102 : 1.0
+T: 5 0 : 96 : 98 : 1.0
+T: 5 1 : 96 : 98 : 0.1
+T: 5 1 : 96 : 114 : 0.9
+T: 5 2 : 96 : 66 : 0.9
+T: 5 2 : 96 : 98 : 0.1
+T: 5 3 : 96 : 98 : 1.0
+T: 5 4 : 96 : 102 : 1.0
+T: 5 5 : 96 : 102 : 1.0
+T: 0 0 : 97 : 33 : 0.9
+T: 0 0 : 97 : 97 : 0.1
+T: 0 1 : 97 : 33 : 0.09
+T: 0 1 : 97 : 49 : 0.81
+T: 0 1 : 97 : 97 : 0.01
+T: 0 1 : 97 : 113 : 0.09
+T: 0 2 : 97 : 1 : 0.81
+T: 0 2 : 97 : 33 : 0.09
+T: 0 2 : 97 : 65 : 0.09
+T: 0 2 : 97 : 97 : 0.01
+T: 0 3 : 97 : 33 : 0.9
+T: 0 3 : 97 : 97 : 0.1
+T: 0 4 : 97 : 37 : 0.9
+T: 0 4 : 97 : 101 : 0.1
+T: 0 5 : 97 : 37 : 0.9
+T: 0 5 : 97 : 101 : 0.1
+T: 1 0 : 97 : 97 : 1.0
+T: 1 1 : 97 : 97 : 0.1
+T: 1 1 : 97 : 113 : 0.9
+T: 1 2 : 97 : 65 : 0.9
+T: 1 2 : 97 : 97 : 0.1
+T: 1 3 : 97 : 97 : 1.0
+T: 1 4 : 97 : 101 : 1.0
+T: 1 5 : 97 : 101 : 1.0
+T: 2 0 : 97 : 97 : 1.0
+T: 2 1 : 97 : 97 : 0.1
+T: 2 1 : 97 : 113 : 0.9
+T: 2 2 : 97 : 65 : 0.9
+T: 2 2 : 97 : 97 : 0.1
+T: 2 3 : 97 : 97 : 1.0
+T: 2 4 : 97 : 101 : 1.0
+T: 2 5 : 97 : 101 : 1.0
+T: 3 0 : 97 : 97 : 0.1
+T: 3 0 : 97 : 225 : 0.9
+T: 3 1 : 97 : 97 : 0.01
+T: 3 1 : 97 : 113 : 0.09
+T: 3 1 : 97 : 225 : 0.09
+T: 3 1 : 97 : 241 : 0.81
+T: 3 2 : 97 : 65 : 0.09
+T: 3 2 : 97 : 97 : 0.01
+T: 3 2 : 97 : 193 : 0.81
+T: 3 2 : 97 : 225 : 0.09
+T: 3 3 : 97 : 97 : 0.1
+T: 3 3 : 97 : 225 : 0.9
+T: 3 4 : 97 : 101 : 0.1
+T: 3 4 : 97 : 229 : 0.9
+T: 3 5 : 97 : 101 : 0.1
+T: 3 5 : 97 : 229 : 0.9
+T: 4 0 : 97 : 99 : 1.0
+T: 4 1 : 97 : 99 : 0.1
+T: 4 1 : 97 : 115 : 0.9
+T: 4 2 : 97 : 67 : 0.9
+T: 4 2 : 97 : 99 : 0.1
+T: 4 3 : 97 : 99 : 1.0
+T: 4 4 : 97 : 103 : 1.0
+T: 4 5 : 97 : 103 : 1.0
+T: 5 0 : 97 : 99 : 1.0
+T: 5 1 : 97 : 99 : 0.1
+T: 5 1 : 97 : 115 : 0.9
+T: 5 2 : 97 : 67 : 0.9
+T: 5 2 : 97 : 99 : 0.1
+T: 5 3 : 97 : 99 : 1.0
+T: 5 4 : 97 : 103 : 1.0
+T: 5 5 : 97 : 103 : 1.0
+T: 0 0 : 98 : 34 : 0.9
+T: 0 0 : 98 : 98 : 0.1
+T: 0 1 : 98 : 34 : 0.09
+T: 0 1 : 98 : 50 : 0.81
+T: 0 1 : 98 : 98 : 0.01
+T: 0 1 : 98 : 114 : 0.09
+T: 0 2 : 98 : 2 : 0.81
+T: 0 2 : 98 : 34 : 0.09
+T: 0 2 : 98 : 66 : 0.09
+T: 0 2 : 98 : 98 : 0.01
+T: 0 3 : 98 : 34 : 0.9
+T: 0 3 : 98 : 98 : 0.1
+T: 0 4 : 98 : 38 : 0.9
+T: 0 4 : 98 : 102 : 0.1
+T: 0 5 : 98 : 38 : 0.9
+T: 0 5 : 98 : 102 : 0.1
+T: 1 0 : 98 : 98 : 1.0
+T: 1 1 : 98 : 98 : 0.1
+T: 1 1 : 98 : 114 : 0.9
+T: 1 2 : 98 : 66 : 0.9
+T: 1 2 : 98 : 98 : 0.1
+T: 1 3 : 98 : 98 : 1.0
+T: 1 4 : 98 : 102 : 1.0
+T: 1 5 : 98 : 102 : 1.0
+T: 2 0 : 98 : 98 : 1.0
+T: 2 1 : 98 : 98 : 0.1
+T: 2 1 : 98 : 114 : 0.9
+T: 2 2 : 98 : 66 : 0.9
+T: 2 2 : 98 : 98 : 0.1
+T: 2 3 : 98 : 98 : 1.0
+T: 2 4 : 98 : 102 : 1.0
+T: 2 5 : 98 : 102 : 1.0
+T: 3 0 : 98 : 98 : 0.1
+T: 3 0 : 98 : 226 : 0.9
+T: 3 1 : 98 : 98 : 0.01
+T: 3 1 : 98 : 114 : 0.09
+T: 3 1 : 98 : 226 : 0.09
+T: 3 1 : 98 : 242 : 0.81
+T: 3 2 : 98 : 66 : 0.09
+T: 3 2 : 98 : 98 : 0.01
+T: 3 2 : 98 : 194 : 0.81
+T: 3 2 : 98 : 226 : 0.09
+T: 3 3 : 98 : 98 : 0.1
+T: 3 3 : 98 : 226 : 0.9
+T: 3 4 : 98 : 102 : 0.1
+T: 3 4 : 98 : 230 : 0.9
+T: 3 5 : 98 : 102 : 0.1
+T: 3 5 : 98 : 230 : 0.9
+T: 4 0 : 98 : 98 : 1.0
+T: 4 1 : 98 : 98 : 0.1
+T: 4 1 : 98 : 114 : 0.9
+T: 4 2 : 98 : 66 : 0.9
+T: 4 2 : 98 : 98 : 0.1
+T: 4 3 : 98 : 98 : 1.0
+T: 4 4 : 98 : 102 : 1.0
+T: 4 5 : 98 : 102 : 1.0
+T: 5 0 : 98 : 98 : 1.0
+T: 5 1 : 98 : 98 : 0.1
+T: 5 1 : 98 : 114 : 0.9
+T: 5 2 : 98 : 66 : 0.9
+T: 5 2 : 98 : 98 : 0.1
+T: 5 3 : 98 : 98 : 1.0
+T: 5 4 : 98 : 102 : 1.0
+T: 5 5 : 98 : 102 : 1.0
+T: 0 0 : 99 : 35 : 0.9
+T: 0 0 : 99 : 99 : 0.1
+T: 0 1 : 99 : 35 : 0.09
+T: 0 1 : 99 : 51 : 0.81
+T: 0 1 : 99 : 99 : 0.01
+T: 0 1 : 99 : 115 : 0.09
+T: 0 2 : 99 : 3 : 0.81
+T: 0 2 : 99 : 35 : 0.09
+T: 0 2 : 99 : 67 : 0.09
+T: 0 2 : 99 : 99 : 0.01
+T: 0 3 : 99 : 35 : 0.9
+T: 0 3 : 99 : 99 : 0.1
+T: 0 4 : 99 : 39 : 0.9
+T: 0 4 : 99 : 103 : 0.1
+T: 0 5 : 99 : 39 : 0.9
+T: 0 5 : 99 : 103 : 0.1
+T: 1 0 : 99 : 99 : 1.0
+T: 1 1 : 99 : 99 : 0.1
+T: 1 1 : 99 : 115 : 0.9
+T: 1 2 : 99 : 67 : 0.9
+T: 1 2 : 99 : 99 : 0.1
+T: 1 3 : 99 : 99 : 1.0
+T: 1 4 : 99 : 103 : 1.0
+T: 1 5 : 99 : 103 : 1.0
+T: 2 0 : 99 : 99 : 1.0
+T: 2 1 : 99 : 99 : 0.1
+T: 2 1 : 99 : 115 : 0.9
+T: 2 2 : 99 : 67 : 0.9
+T: 2 2 : 99 : 99 : 0.1
+T: 2 3 : 99 : 99 : 1.0
+T: 2 4 : 99 : 103 : 1.0
+T: 2 5 : 99 : 103 : 1.0
+T: 3 0 : 99 : 99 : 0.1
+T: 3 0 : 99 : 227 : 0.9
+T: 3 1 : 99 : 99 : 0.01
+T: 3 1 : 99 : 115 : 0.09
+T: 3 1 : 99 : 227 : 0.09
+T: 3 1 : 99 : 243 : 0.81
+T: 3 2 : 99 : 67 : 0.09
+T: 3 2 : 99 : 99 : 0.01
+T: 3 2 : 99 : 195 : 0.81
+T: 3 2 : 99 : 227 : 0.09
+T: 3 3 : 99 : 99 : 0.1
+T: 3 3 : 99 : 227 : 0.9
+T: 3 4 : 99 : 103 : 0.1
+T: 3 4 : 99 : 231 : 0.9
+T: 3 5 : 99 : 103 : 0.1
+T: 3 5 : 99 : 231 : 0.9
+T: 4 0 : 99 : 99 : 1.0
+T: 4 1 : 99 : 99 : 0.1
+T: 4 1 : 99 : 115 : 0.9
+T: 4 2 : 99 : 67 : 0.9
+T: 4 2 : 99 : 99 : 0.1
+T: 4 3 : 99 : 99 : 1.0
+T: 4 4 : 99 : 103 : 1.0
+T: 4 5 : 99 : 103 : 1.0
+T: 5 0 : 99 : 99 : 1.0
+T: 5 1 : 99 : 99 : 0.1
+T: 5 1 : 99 : 115 : 0.9
+T: 5 2 : 99 : 67 : 0.9
+T: 5 2 : 99 : 99 : 0.1
+T: 5 3 : 99 : 99 : 1.0
+T: 5 4 : 99 : 103 : 1.0
+T: 5 5 : 99 : 103 : 1.0
+T: 0 0 : 100 : 36 : 0.9
+T: 0 0 : 100 : 100 : 0.1
+T: 0 1 : 100 : 36 : 0.09
+T: 0 1 : 100 : 52 : 0.81
+T: 0 1 : 100 : 100 : 0.01
+T: 0 1 : 100 : 116 : 0.09
+T: 0 2 : 100 : 4 : 0.81
+T: 0 2 : 100 : 36 : 0.09
+T: 0 2 : 100 : 68 : 0.09
+T: 0 2 : 100 : 100 : 0.01
+T: 0 3 : 100 : 36 : 0.9
+T: 0 3 : 100 : 100 : 0.1
+T: 0 4 : 100 : 36 : 0.9
+T: 0 4 : 100 : 100 : 0.1
+T: 0 5 : 100 : 36 : 0.9
+T: 0 5 : 100 : 100 : 0.1
+T: 1 0 : 100 : 100 : 1.0
+T: 1 1 : 100 : 100 : 0.1
+T: 1 1 : 100 : 116 : 0.9
+T: 1 2 : 100 : 68 : 0.9
+T: 1 2 : 100 : 100 : 0.1
+T: 1 3 : 100 : 100 : 1.0
+T: 1 4 : 100 : 100 : 1.0
+T: 1 5 : 100 : 100 : 1.0
+T: 2 0 : 100 : 100 : 1.0
+T: 2 1 : 100 : 100 : 0.1
+T: 2 1 : 100 : 116 : 0.9
+T: 2 2 : 100 : 68 : 0.9
+T: 2 2 : 100 : 100 : 0.1
+T: 2 3 : 100 : 100 : 1.0
+T: 2 4 : 100 : 100 : 1.0
+T: 2 5 : 100 : 100 : 1.0
+T: 3 0 : 100 : 100 : 0.1
+T: 3 0 : 100 : 228 : 0.9
+T: 3 1 : 100 : 100 : 0.01
+T: 3 1 : 100 : 116 : 0.09
+T: 3 1 : 100 : 228 : 0.09
+T: 3 1 : 100 : 244 : 0.81
+T: 3 2 : 100 : 68 : 0.09
+T: 3 2 : 100 : 100 : 0.01
+T: 3 2 : 100 : 196 : 0.81
+T: 3 2 : 100 : 228 : 0.09
+T: 3 3 : 100 : 100 : 0.1
+T: 3 3 : 100 : 228 : 0.9
+T: 3 4 : 100 : 100 : 0.1
+T: 3 4 : 100 : 228 : 0.9
+T: 3 5 : 100 : 100 : 0.1
+T: 3 5 : 100 : 228 : 0.9
+T: 4 0 : 100 : 102 : 1.0
+T: 4 1 : 100 : 102 : 0.1
+T: 4 1 : 100 : 118 : 0.9
+T: 4 2 : 100 : 70 : 0.9
+T: 4 2 : 100 : 102 : 0.1
+T: 4 3 : 100 : 102 : 1.0
+T: 4 4 : 100 : 102 : 1.0
+T: 4 5 : 100 : 102 : 1.0
+T: 5 0 : 100 : 102 : 1.0
+T: 5 1 : 100 : 102 : 0.1
+T: 5 1 : 100 : 118 : 0.9
+T: 5 2 : 100 : 70 : 0.9
+T: 5 2 : 100 : 102 : 0.1
+T: 5 3 : 100 : 102 : 1.0
+T: 5 4 : 100 : 102 : 1.0
+T: 5 5 : 100 : 102 : 1.0
+T: 0 0 : 101 : 37 : 0.9
+T: 0 0 : 101 : 101 : 0.1
+T: 0 1 : 101 : 37 : 0.09
+T: 0 1 : 101 : 53 : 0.81
+T: 0 1 : 101 : 101 : 0.01
+T: 0 1 : 101 : 117 : 0.09
+T: 0 2 : 101 : 5 : 0.81
+T: 0 2 : 101 : 37 : 0.09
+T: 0 2 : 101 : 69 : 0.09
+T: 0 2 : 101 : 101 : 0.01
+T: 0 3 : 101 : 37 : 0.9
+T: 0 3 : 101 : 101 : 0.1
+T: 0 4 : 101 : 37 : 0.9
+T: 0 4 : 101 : 101 : 0.1
+T: 0 5 : 101 : 37 : 0.9
+T: 0 5 : 101 : 101 : 0.1
+T: 1 0 : 101 : 101 : 1.0
+T: 1 1 : 101 : 101 : 0.1
+T: 1 1 : 101 : 117 : 0.9
+T: 1 2 : 101 : 69 : 0.9
+T: 1 2 : 101 : 101 : 0.1
+T: 1 3 : 101 : 101 : 1.0
+T: 1 4 : 101 : 101 : 1.0
+T: 1 5 : 101 : 101 : 1.0
+T: 2 0 : 101 : 101 : 1.0
+T: 2 1 : 101 : 101 : 0.1
+T: 2 1 : 101 : 117 : 0.9
+T: 2 2 : 101 : 69 : 0.9
+T: 2 2 : 101 : 101 : 0.1
+T: 2 3 : 101 : 101 : 1.0
+T: 2 4 : 101 : 101 : 1.0
+T: 2 5 : 101 : 101 : 1.0
+T: 3 0 : 101 : 101 : 0.1
+T: 3 0 : 101 : 229 : 0.9
+T: 3 1 : 101 : 101 : 0.01
+T: 3 1 : 101 : 117 : 0.09
+T: 3 1 : 101 : 229 : 0.09
+T: 3 1 : 101 : 245 : 0.81
+T: 3 2 : 101 : 69 : 0.09
+T: 3 2 : 101 : 101 : 0.01
+T: 3 2 : 101 : 197 : 0.81
+T: 3 2 : 101 : 229 : 0.09
+T: 3 3 : 101 : 101 : 0.1
+T: 3 3 : 101 : 229 : 0.9
+T: 3 4 : 101 : 101 : 0.1
+T: 3 4 : 101 : 229 : 0.9
+T: 3 5 : 101 : 101 : 0.1
+T: 3 5 : 101 : 229 : 0.9
+T: 4 0 : 101 : 103 : 1.0
+T: 4 1 : 101 : 103 : 0.1
+T: 4 1 : 101 : 119 : 0.9
+T: 4 2 : 101 : 71 : 0.9
+T: 4 2 : 101 : 103 : 0.1
+T: 4 3 : 101 : 103 : 1.0
+T: 4 4 : 101 : 103 : 1.0
+T: 4 5 : 101 : 103 : 1.0
+T: 5 0 : 101 : 103 : 1.0
+T: 5 1 : 101 : 103 : 0.1
+T: 5 1 : 101 : 119 : 0.9
+T: 5 2 : 101 : 71 : 0.9
+T: 5 2 : 101 : 103 : 0.1
+T: 5 3 : 101 : 103 : 1.0
+T: 5 4 : 101 : 103 : 1.0
+T: 5 5 : 101 : 103 : 1.0
+T: 0 0 : 102 : 38 : 0.9
+T: 0 0 : 102 : 102 : 0.1
+T: 0 1 : 102 : 38 : 0.09
+T: 0 1 : 102 : 54 : 0.81
+T: 0 1 : 102 : 102 : 0.01
+T: 0 1 : 102 : 118 : 0.09
+T: 0 2 : 102 : 6 : 0.81
+T: 0 2 : 102 : 38 : 0.09
+T: 0 2 : 102 : 70 : 0.09
+T: 0 2 : 102 : 102 : 0.01
+T: 0 3 : 102 : 38 : 0.9
+T: 0 3 : 102 : 102 : 0.1
+T: 0 4 : 102 : 38 : 0.9
+T: 0 4 : 102 : 102 : 0.1
+T: 0 5 : 102 : 38 : 0.9
+T: 0 5 : 102 : 102 : 0.1
+T: 1 0 : 102 : 102 : 1.0
+T: 1 1 : 102 : 102 : 0.1
+T: 1 1 : 102 : 118 : 0.9
+T: 1 2 : 102 : 70 : 0.9
+T: 1 2 : 102 : 102 : 0.1
+T: 1 3 : 102 : 102 : 1.0
+T: 1 4 : 102 : 102 : 1.0
+T: 1 5 : 102 : 102 : 1.0
+T: 2 0 : 102 : 102 : 1.0
+T: 2 1 : 102 : 102 : 0.1
+T: 2 1 : 102 : 118 : 0.9
+T: 2 2 : 102 : 70 : 0.9
+T: 2 2 : 102 : 102 : 0.1
+T: 2 3 : 102 : 102 : 1.0
+T: 2 4 : 102 : 102 : 1.0
+T: 2 5 : 102 : 102 : 1.0
+T: 3 0 : 102 : 102 : 0.1
+T: 3 0 : 102 : 230 : 0.9
+T: 3 1 : 102 : 102 : 0.01
+T: 3 1 : 102 : 118 : 0.09
+T: 3 1 : 102 : 230 : 0.09
+T: 3 1 : 102 : 246 : 0.81
+T: 3 2 : 102 : 70 : 0.09
+T: 3 2 : 102 : 102 : 0.01
+T: 3 2 : 102 : 198 : 0.81
+T: 3 2 : 102 : 230 : 0.09
+T: 3 3 : 102 : 102 : 0.1
+T: 3 3 : 102 : 230 : 0.9
+T: 3 4 : 102 : 102 : 0.1
+T: 3 4 : 102 : 230 : 0.9
+T: 3 5 : 102 : 102 : 0.1
+T: 3 5 : 102 : 230 : 0.9
+T: 4 0 : 102 : 102 : 1.0
+T: 4 1 : 102 : 102 : 0.1
+T: 4 1 : 102 : 118 : 0.9
+T: 4 2 : 102 : 70 : 0.9
+T: 4 2 : 102 : 102 : 0.1
+T: 4 3 : 102 : 102 : 1.0
+T: 4 4 : 102 : 102 : 1.0
+T: 4 5 : 102 : 102 : 1.0
+T: 5 0 : 102 : 102 : 1.0
+T: 5 1 : 102 : 102 : 0.1
+T: 5 1 : 102 : 118 : 0.9
+T: 5 2 : 102 : 70 : 0.9
+T: 5 2 : 102 : 102 : 0.1
+T: 5 3 : 102 : 102 : 1.0
+T: 5 4 : 102 : 102 : 1.0
+T: 5 5 : 102 : 102 : 1.0
+T: 0 0 : 103 : 39 : 0.9
+T: 0 0 : 103 : 103 : 0.1
+T: 0 1 : 103 : 39 : 0.09
+T: 0 1 : 103 : 55 : 0.81
+T: 0 1 : 103 : 103 : 0.01
+T: 0 1 : 103 : 119 : 0.09
+T: 0 2 : 103 : 7 : 0.81
+T: 0 2 : 103 : 39 : 0.09
+T: 0 2 : 103 : 71 : 0.09
+T: 0 2 : 103 : 103 : 0.01
+T: 0 3 : 103 : 39 : 0.9
+T: 0 3 : 103 : 103 : 0.1
+T: 0 4 : 103 : 39 : 0.9
+T: 0 4 : 103 : 103 : 0.1
+T: 0 5 : 103 : 39 : 0.9
+T: 0 5 : 103 : 103 : 0.1
+T: 1 0 : 103 : 103 : 1.0
+T: 1 1 : 103 : 103 : 0.1
+T: 1 1 : 103 : 119 : 0.9
+T: 1 2 : 103 : 71 : 0.9
+T: 1 2 : 103 : 103 : 0.1
+T: 1 3 : 103 : 103 : 1.0
+T: 1 4 : 103 : 103 : 1.0
+T: 1 5 : 103 : 103 : 1.0
+T: 2 0 : 103 : 103 : 1.0
+T: 2 1 : 103 : 103 : 0.1
+T: 2 1 : 103 : 119 : 0.9
+T: 2 2 : 103 : 71 : 0.9
+T: 2 2 : 103 : 103 : 0.1
+T: 2 3 : 103 : 103 : 1.0
+T: 2 4 : 103 : 103 : 1.0
+T: 2 5 : 103 : 103 : 1.0
+T: 3 0 : 103 : 103 : 0.1
+T: 3 0 : 103 : 231 : 0.9
+T: 3 1 : 103 : 103 : 0.01
+T: 3 1 : 103 : 119 : 0.09
+T: 3 1 : 103 : 231 : 0.09
+T: 3 1 : 103 : 247 : 0.81
+T: 3 2 : 103 : 71 : 0.09
+T: 3 2 : 103 : 103 : 0.01
+T: 3 2 : 103 : 199 : 0.81
+T: 3 2 : 103 : 231 : 0.09
+T: 3 3 : 103 : 103 : 0.1
+T: 3 3 : 103 : 231 : 0.9
+T: 3 4 : 103 : 103 : 0.1
+T: 3 4 : 103 : 231 : 0.9
+T: 3 5 : 103 : 103 : 0.1
+T: 3 5 : 103 : 231 : 0.9
+T: 4 0 : 103 : 103 : 1.0
+T: 4 1 : 103 : 103 : 0.1
+T: 4 1 : 103 : 119 : 0.9
+T: 4 2 : 103 : 71 : 0.9
+T: 4 2 : 103 : 103 : 0.1
+T: 4 3 : 103 : 103 : 1.0
+T: 4 4 : 103 : 103 : 1.0
+T: 4 5 : 103 : 103 : 1.0
+T: 5 0 : 103 : 103 : 1.0
+T: 5 1 : 103 : 103 : 0.1
+T: 5 1 : 103 : 119 : 0.9
+T: 5 2 : 103 : 71 : 0.9
+T: 5 2 : 103 : 103 : 0.1
+T: 5 3 : 103 : 103 : 1.0
+T: 5 4 : 103 : 103 : 1.0
+T: 5 5 : 103 : 103 : 1.0
+T: 0 0 : 104 : 40 : 0.9
+T: 0 0 : 104 : 104 : 0.1
+T: 0 1 : 104 : 40 : 0.09
+T: 0 1 : 104 : 56 : 0.81
+T: 0 1 : 104 : 104 : 0.01
+T: 0 1 : 104 : 120 : 0.09
+T: 0 2 : 104 : 8 : 0.81
+T: 0 2 : 104 : 40 : 0.09
+T: 0 2 : 104 : 72 : 0.09
+T: 0 2 : 104 : 104 : 0.01
+T: 0 3 : 104 : 40 : 0.9
+T: 0 3 : 104 : 104 : 0.1
+T: 0 4 : 104 : 44 : 0.9
+T: 0 4 : 104 : 108 : 0.1
+T: 0 5 : 104 : 44 : 0.9
+T: 0 5 : 104 : 108 : 0.1
+T: 1 0 : 104 : 104 : 1.0
+T: 1 1 : 104 : 104 : 0.1
+T: 1 1 : 104 : 120 : 0.9
+T: 1 2 : 104 : 72 : 0.9
+T: 1 2 : 104 : 104 : 0.1
+T: 1 3 : 104 : 104 : 1.0
+T: 1 4 : 104 : 108 : 1.0
+T: 1 5 : 104 : 108 : 1.0
+T: 2 0 : 104 : 104 : 1.0
+T: 2 1 : 104 : 104 : 0.1
+T: 2 1 : 104 : 120 : 0.9
+T: 2 2 : 104 : 72 : 0.9
+T: 2 2 : 104 : 104 : 0.1
+T: 2 3 : 104 : 104 : 1.0
+T: 2 4 : 104 : 108 : 1.0
+T: 2 5 : 104 : 108 : 1.0
+T: 3 0 : 104 : 104 : 0.1
+T: 3 0 : 104 : 232 : 0.9
+T: 3 1 : 104 : 104 : 0.01
+T: 3 1 : 104 : 120 : 0.09
+T: 3 1 : 104 : 232 : 0.09
+T: 3 1 : 104 : 248 : 0.81
+T: 3 2 : 104 : 72 : 0.09
+T: 3 2 : 104 : 104 : 0.01
+T: 3 2 : 104 : 200 : 0.81
+T: 3 2 : 104 : 232 : 0.09
+T: 3 3 : 104 : 104 : 0.1
+T: 3 3 : 104 : 232 : 0.9
+T: 3 4 : 104 : 108 : 0.1
+T: 3 4 : 104 : 236 : 0.9
+T: 3 5 : 104 : 108 : 0.1
+T: 3 5 : 104 : 236 : 0.9
+T: 4 0 : 104 : 106 : 1.0
+T: 4 1 : 104 : 106 : 0.1
+T: 4 1 : 104 : 122 : 0.9
+T: 4 2 : 104 : 74 : 0.9
+T: 4 2 : 104 : 106 : 0.1
+T: 4 3 : 104 : 106 : 1.0
+T: 4 4 : 104 : 110 : 1.0
+T: 4 5 : 104 : 110 : 1.0
+T: 5 0 : 104 : 106 : 1.0
+T: 5 1 : 104 : 106 : 0.1
+T: 5 1 : 104 : 122 : 0.9
+T: 5 2 : 104 : 74 : 0.9
+T: 5 2 : 104 : 106 : 0.1
+T: 5 3 : 104 : 106 : 1.0
+T: 5 4 : 104 : 110 : 1.0
+T: 5 5 : 104 : 110 : 1.0
+T: 0 0 : 105 : 41 : 0.9
+T: 0 0 : 105 : 105 : 0.1
+T: 0 1 : 105 : 41 : 0.09
+T: 0 1 : 105 : 57 : 0.81
+T: 0 1 : 105 : 105 : 0.01
+T: 0 1 : 105 : 121 : 0.09
+T: 0 2 : 105 : 9 : 0.81
+T: 0 2 : 105 : 41 : 0.09
+T: 0 2 : 105 : 73 : 0.09
+T: 0 2 : 105 : 105 : 0.01
+T: 0 3 : 105 : 41 : 0.9
+T: 0 3 : 105 : 105 : 0.1
+T: 0 4 : 105 : 45 : 0.9
+T: 0 4 : 105 : 109 : 0.1
+T: 0 5 : 105 : 45 : 0.9
+T: 0 5 : 105 : 109 : 0.1
+T: 1 0 : 105 : 105 : 1.0
+T: 1 1 : 105 : 105 : 0.1
+T: 1 1 : 105 : 121 : 0.9
+T: 1 2 : 105 : 73 : 0.9
+T: 1 2 : 105 : 105 : 0.1
+T: 1 3 : 105 : 105 : 1.0
+T: 1 4 : 105 : 109 : 1.0
+T: 1 5 : 105 : 109 : 1.0
+T: 2 0 : 105 : 105 : 1.0
+T: 2 1 : 105 : 105 : 0.1
+T: 2 1 : 105 : 121 : 0.9
+T: 2 2 : 105 : 73 : 0.9
+T: 2 2 : 105 : 105 : 0.1
+T: 2 3 : 105 : 105 : 1.0
+T: 2 4 : 105 : 109 : 1.0
+T: 2 5 : 105 : 109 : 1.0
+T: 3 0 : 105 : 105 : 0.1
+T: 3 0 : 105 : 233 : 0.9
+T: 3 1 : 105 : 105 : 0.01
+T: 3 1 : 105 : 121 : 0.09
+T: 3 1 : 105 : 233 : 0.09
+T: 3 1 : 105 : 249 : 0.81
+T: 3 2 : 105 : 73 : 0.09
+T: 3 2 : 105 : 105 : 0.01
+T: 3 2 : 105 : 201 : 0.81
+T: 3 2 : 105 : 233 : 0.09
+T: 3 3 : 105 : 105 : 0.1
+T: 3 3 : 105 : 233 : 0.9
+T: 3 4 : 105 : 109 : 0.1
+T: 3 4 : 105 : 237 : 0.9
+T: 3 5 : 105 : 109 : 0.1
+T: 3 5 : 105 : 237 : 0.9
+T: 4 0 : 105 : 107 : 1.0
+T: 4 1 : 105 : 107 : 0.1
+T: 4 1 : 105 : 123 : 0.9
+T: 4 2 : 105 : 75 : 0.9
+T: 4 2 : 105 : 107 : 0.1
+T: 4 3 : 105 : 107 : 1.0
+T: 4 4 : 105 : 0 : 1.0
+T: 4 5 : 105 : 0 : 1.0
+T: 5 0 : 105 : 107 : 1.0
+T: 5 1 : 105 : 107 : 0.1
+T: 5 1 : 105 : 123 : 0.9
+T: 5 2 : 105 : 75 : 0.9
+T: 5 2 : 105 : 107 : 0.1
+T: 5 3 : 105 : 107 : 1.0
+T: 5 4 : 105 : 0 : 1.0
+T: 5 5 : 105 : 0 : 1.0
+T: 0 0 : 106 : 42 : 0.9
+T: 0 0 : 106 : 106 : 0.1
+T: 0 1 : 106 : 42 : 0.09
+T: 0 1 : 106 : 58 : 0.81
+T: 0 1 : 106 : 106 : 0.01
+T: 0 1 : 106 : 122 : 0.09
+T: 0 2 : 106 : 10 : 0.81
+T: 0 2 : 106 : 42 : 0.09
+T: 0 2 : 106 : 74 : 0.09
+T: 0 2 : 106 : 106 : 0.01
+T: 0 3 : 106 : 42 : 0.9
+T: 0 3 : 106 : 106 : 0.1
+T: 0 4 : 106 : 46 : 0.9
+T: 0 4 : 106 : 110 : 0.1
+T: 0 5 : 106 : 46 : 0.9
+T: 0 5 : 106 : 110 : 0.1
+T: 1 0 : 106 : 106 : 1.0
+T: 1 1 : 106 : 106 : 0.1
+T: 1 1 : 106 : 122 : 0.9
+T: 1 2 : 106 : 74 : 0.9
+T: 1 2 : 106 : 106 : 0.1
+T: 1 3 : 106 : 106 : 1.0
+T: 1 4 : 106 : 110 : 1.0
+T: 1 5 : 106 : 110 : 1.0
+T: 2 0 : 106 : 106 : 1.0
+T: 2 1 : 106 : 106 : 0.1
+T: 2 1 : 106 : 122 : 0.9
+T: 2 2 : 106 : 74 : 0.9
+T: 2 2 : 106 : 106 : 0.1
+T: 2 3 : 106 : 106 : 1.0
+T: 2 4 : 106 : 110 : 1.0
+T: 2 5 : 106 : 110 : 1.0
+T: 3 0 : 106 : 106 : 0.1
+T: 3 0 : 106 : 234 : 0.9
+T: 3 1 : 106 : 106 : 0.01
+T: 3 1 : 106 : 122 : 0.09
+T: 3 1 : 106 : 234 : 0.09
+T: 3 1 : 106 : 250 : 0.81
+T: 3 2 : 106 : 74 : 0.09
+T: 3 2 : 106 : 106 : 0.01
+T: 3 2 : 106 : 202 : 0.81
+T: 3 2 : 106 : 234 : 0.09
+T: 3 3 : 106 : 106 : 0.1
+T: 3 3 : 106 : 234 : 0.9
+T: 3 4 : 106 : 110 : 0.1
+T: 3 4 : 106 : 238 : 0.9
+T: 3 5 : 106 : 110 : 0.1
+T: 3 5 : 106 : 238 : 0.9
+T: 4 0 : 106 : 106 : 1.0
+T: 4 1 : 106 : 106 : 0.1
+T: 4 1 : 106 : 122 : 0.9
+T: 4 2 : 106 : 74 : 0.9
+T: 4 2 : 106 : 106 : 0.1
+T: 4 3 : 106 : 106 : 1.0
+T: 4 4 : 106 : 110 : 1.0
+T: 4 5 : 106 : 110 : 1.0
+T: 5 0 : 106 : 106 : 1.0
+T: 5 1 : 106 : 106 : 0.1
+T: 5 1 : 106 : 122 : 0.9
+T: 5 2 : 106 : 74 : 0.9
+T: 5 2 : 106 : 106 : 0.1
+T: 5 3 : 106 : 106 : 1.0
+T: 5 4 : 106 : 110 : 1.0
+T: 5 5 : 106 : 110 : 1.0
+T: 0 0 : 107 : 43 : 0.9
+T: 0 0 : 107 : 107 : 0.1
+T: 0 1 : 107 : 43 : 0.09
+T: 0 1 : 107 : 59 : 0.81
+T: 0 1 : 107 : 107 : 0.01
+T: 0 1 : 107 : 123 : 0.09
+T: 0 2 : 107 : 11 : 0.81
+T: 0 2 : 107 : 43 : 0.09
+T: 0 2 : 107 : 75 : 0.09
+T: 0 2 : 107 : 107 : 0.01
+T: 0 3 : 107 : 43 : 0.9
+T: 0 3 : 107 : 107 : 0.1
+T: 0 4 : 107 : 0 : 1.0
+T: 0 5 : 107 : 0 : 1.0
+T: 1 0 : 107 : 107 : 1.0
+T: 1 1 : 107 : 107 : 0.1
+T: 1 1 : 107 : 123 : 0.9
+T: 1 2 : 107 : 75 : 0.9
+T: 1 2 : 107 : 107 : 0.1
+T: 1 3 : 107 : 107 : 1.0
+T: 1 4 : 107 : 0 : 1.0
+T: 1 5 : 107 : 0 : 1.0
+T: 2 0 : 107 : 107 : 1.0
+T: 2 1 : 107 : 107 : 0.1
+T: 2 1 : 107 : 123 : 0.9
+T: 2 2 : 107 : 75 : 0.9
+T: 2 2 : 107 : 107 : 0.1
+T: 2 3 : 107 : 107 : 1.0
+T: 2 4 : 107 : 0 : 1.0
+T: 2 5 : 107 : 0 : 1.0
+T: 3 0 : 107 : 107 : 0.1
+T: 3 0 : 107 : 235 : 0.9
+T: 3 1 : 107 : 107 : 0.01
+T: 3 1 : 107 : 123 : 0.09
+T: 3 1 : 107 : 235 : 0.09
+T: 3 1 : 107 : 251 : 0.81
+T: 3 2 : 107 : 75 : 0.09
+T: 3 2 : 107 : 107 : 0.01
+T: 3 2 : 107 : 203 : 0.81
+T: 3 2 : 107 : 235 : 0.09
+T: 3 3 : 107 : 107 : 0.1
+T: 3 3 : 107 : 235 : 0.9
+T: 3 4 : 107 : 0 : 1.0
+T: 3 5 : 107 : 0 : 1.0
+T: 4 0 : 107 : 107 : 1.0
+T: 4 1 : 107 : 107 : 0.1
+T: 4 1 : 107 : 123 : 0.9
+T: 4 2 : 107 : 75 : 0.9
+T: 4 2 : 107 : 107 : 0.1
+T: 4 3 : 107 : 107 : 1.0
+T: 4 4 : 107 : 0 : 1.0
+T: 4 5 : 107 : 0 : 1.0
+T: 5 0 : 107 : 107 : 1.0
+T: 5 1 : 107 : 107 : 0.1
+T: 5 1 : 107 : 123 : 0.9
+T: 5 2 : 107 : 75 : 0.9
+T: 5 2 : 107 : 107 : 0.1
+T: 5 3 : 107 : 107 : 1.0
+T: 5 4 : 107 : 0 : 1.0
+T: 5 5 : 107 : 0 : 1.0
+T: 0 0 : 108 : 44 : 0.9
+T: 0 0 : 108 : 108 : 0.1
+T: 0 1 : 108 : 44 : 0.09
+T: 0 1 : 108 : 60 : 0.81
+T: 0 1 : 108 : 108 : 0.01
+T: 0 1 : 108 : 124 : 0.09
+T: 0 2 : 108 : 12 : 0.81
+T: 0 2 : 108 : 44 : 0.09
+T: 0 2 : 108 : 76 : 0.09
+T: 0 2 : 108 : 108 : 0.01
+T: 0 3 : 108 : 44 : 0.9
+T: 0 3 : 108 : 108 : 0.1
+T: 0 4 : 108 : 44 : 0.9
+T: 0 4 : 108 : 108 : 0.1
+T: 0 5 : 108 : 44 : 0.9
+T: 0 5 : 108 : 108 : 0.1
+T: 1 0 : 108 : 108 : 1.0
+T: 1 1 : 108 : 108 : 0.1
+T: 1 1 : 108 : 124 : 0.9
+T: 1 2 : 108 : 76 : 0.9
+T: 1 2 : 108 : 108 : 0.1
+T: 1 3 : 108 : 108 : 1.0
+T: 1 4 : 108 : 108 : 1.0
+T: 1 5 : 108 : 108 : 1.0
+T: 2 0 : 108 : 108 : 1.0
+T: 2 1 : 108 : 108 : 0.1
+T: 2 1 : 108 : 124 : 0.9
+T: 2 2 : 108 : 76 : 0.9
+T: 2 2 : 108 : 108 : 0.1
+T: 2 3 : 108 : 108 : 1.0
+T: 2 4 : 108 : 108 : 1.0
+T: 2 5 : 108 : 108 : 1.0
+T: 3 0 : 108 : 108 : 0.1
+T: 3 0 : 108 : 236 : 0.9
+T: 3 1 : 108 : 108 : 0.01
+T: 3 1 : 108 : 124 : 0.09
+T: 3 1 : 108 : 236 : 0.09
+T: 3 1 : 108 : 252 : 0.81
+T: 3 2 : 108 : 76 : 0.09
+T: 3 2 : 108 : 108 : 0.01
+T: 3 2 : 108 : 204 : 0.81
+T: 3 2 : 108 : 236 : 0.09
+T: 3 3 : 108 : 108 : 0.1
+T: 3 3 : 108 : 236 : 0.9
+T: 3 4 : 108 : 108 : 0.1
+T: 3 4 : 108 : 236 : 0.9
+T: 3 5 : 108 : 108 : 0.1
+T: 3 5 : 108 : 236 : 0.9
+T: 4 0 : 108 : 110 : 1.0
+T: 4 1 : 108 : 110 : 0.1
+T: 4 1 : 108 : 126 : 0.9
+T: 4 2 : 108 : 78 : 0.9
+T: 4 2 : 108 : 110 : 0.1
+T: 4 3 : 108 : 110 : 1.0
+T: 4 4 : 108 : 110 : 1.0
+T: 4 5 : 108 : 110 : 1.0
+T: 5 0 : 108 : 110 : 1.0
+T: 5 1 : 108 : 110 : 0.1
+T: 5 1 : 108 : 126 : 0.9
+T: 5 2 : 108 : 78 : 0.9
+T: 5 2 : 108 : 110 : 0.1
+T: 5 3 : 108 : 110 : 1.0
+T: 5 4 : 108 : 110 : 1.0
+T: 5 5 : 108 : 110 : 1.0
+T: 0 0 : 109 : 45 : 0.9
+T: 0 0 : 109 : 109 : 0.1
+T: 0 1 : 109 : 45 : 0.09
+T: 0 1 : 109 : 61 : 0.81
+T: 0 1 : 109 : 109 : 0.01
+T: 0 1 : 109 : 125 : 0.09
+T: 0 2 : 109 : 13 : 0.81
+T: 0 2 : 109 : 45 : 0.09
+T: 0 2 : 109 : 77 : 0.09
+T: 0 2 : 109 : 109 : 0.01
+T: 0 3 : 109 : 45 : 0.9
+T: 0 3 : 109 : 109 : 0.1
+T: 0 4 : 109 : 45 : 0.9
+T: 0 4 : 109 : 109 : 0.1
+T: 0 5 : 109 : 45 : 0.9
+T: 0 5 : 109 : 109 : 0.1
+T: 1 0 : 109 : 109 : 1.0
+T: 1 1 : 109 : 109 : 0.1
+T: 1 1 : 109 : 125 : 0.9
+T: 1 2 : 109 : 77 : 0.9
+T: 1 2 : 109 : 109 : 0.1
+T: 1 3 : 109 : 109 : 1.0
+T: 1 4 : 109 : 109 : 1.0
+T: 1 5 : 109 : 109 : 1.0
+T: 2 0 : 109 : 109 : 1.0
+T: 2 1 : 109 : 109 : 0.1
+T: 2 1 : 109 : 125 : 0.9
+T: 2 2 : 109 : 77 : 0.9
+T: 2 2 : 109 : 109 : 0.1
+T: 2 3 : 109 : 109 : 1.0
+T: 2 4 : 109 : 109 : 1.0
+T: 2 5 : 109 : 109 : 1.0
+T: 3 0 : 109 : 109 : 0.1
+T: 3 0 : 109 : 237 : 0.9
+T: 3 1 : 109 : 109 : 0.01
+T: 3 1 : 109 : 125 : 0.09
+T: 3 1 : 109 : 237 : 0.09
+T: 3 1 : 109 : 253 : 0.81
+T: 3 2 : 109 : 77 : 0.09
+T: 3 2 : 109 : 109 : 0.01
+T: 3 2 : 109 : 205 : 0.81
+T: 3 2 : 109 : 237 : 0.09
+T: 3 3 : 109 : 109 : 0.1
+T: 3 3 : 109 : 237 : 0.9
+T: 3 4 : 109 : 109 : 0.1
+T: 3 4 : 109 : 237 : 0.9
+T: 3 5 : 109 : 109 : 0.1
+T: 3 5 : 109 : 237 : 0.9
+T: 4 0 : 109 : 0 : 1.0
+T: 4 1 : 109 : 0 : 1.0
+T: 4 2 : 109 : 0 : 1.0
+T: 4 3 : 109 : 0 : 1.0
+T: 4 4 : 109 : 0 : 1.0
+T: 4 5 : 109 : 0 : 1.0
+T: 5 0 : 109 : 0 : 1.0
+T: 5 1 : 109 : 0 : 1.0
+T: 5 2 : 109 : 0 : 1.0
+T: 5 3 : 109 : 0 : 1.0
+T: 5 4 : 109 : 0 : 1.0
+T: 5 5 : 109 : 0 : 1.0
+T: 0 0 : 110 : 46 : 0.9
+T: 0 0 : 110 : 110 : 0.1
+T: 0 1 : 110 : 46 : 0.09
+T: 0 1 : 110 : 62 : 0.81
+T: 0 1 : 110 : 110 : 0.01
+T: 0 1 : 110 : 126 : 0.09
+T: 0 2 : 110 : 14 : 0.81
+T: 0 2 : 110 : 46 : 0.09
+T: 0 2 : 110 : 78 : 0.09
+T: 0 2 : 110 : 110 : 0.01
+T: 0 3 : 110 : 46 : 0.9
+T: 0 3 : 110 : 110 : 0.1
+T: 0 4 : 110 : 46 : 0.9
+T: 0 4 : 110 : 110 : 0.1
+T: 0 5 : 110 : 46 : 0.9
+T: 0 5 : 110 : 110 : 0.1
+T: 1 0 : 110 : 110 : 1.0
+T: 1 1 : 110 : 110 : 0.1
+T: 1 1 : 110 : 126 : 0.9
+T: 1 2 : 110 : 78 : 0.9
+T: 1 2 : 110 : 110 : 0.1
+T: 1 3 : 110 : 110 : 1.0
+T: 1 4 : 110 : 110 : 1.0
+T: 1 5 : 110 : 110 : 1.0
+T: 2 0 : 110 : 110 : 1.0
+T: 2 1 : 110 : 110 : 0.1
+T: 2 1 : 110 : 126 : 0.9
+T: 2 2 : 110 : 78 : 0.9
+T: 2 2 : 110 : 110 : 0.1
+T: 2 3 : 110 : 110 : 1.0
+T: 2 4 : 110 : 110 : 1.0
+T: 2 5 : 110 : 110 : 1.0
+T: 3 0 : 110 : 110 : 0.1
+T: 3 0 : 110 : 238 : 0.9
+T: 3 1 : 110 : 110 : 0.01
+T: 3 1 : 110 : 126 : 0.09
+T: 3 1 : 110 : 238 : 0.09
+T: 3 1 : 110 : 254 : 0.81
+T: 3 2 : 110 : 78 : 0.09
+T: 3 2 : 110 : 110 : 0.01
+T: 3 2 : 110 : 206 : 0.81
+T: 3 2 : 110 : 238 : 0.09
+T: 3 3 : 110 : 110 : 0.1
+T: 3 3 : 110 : 238 : 0.9
+T: 3 4 : 110 : 110 : 0.1
+T: 3 4 : 110 : 238 : 0.9
+T: 3 5 : 110 : 110 : 0.1
+T: 3 5 : 110 : 238 : 0.9
+T: 4 0 : 110 : 110 : 1.0
+T: 4 1 : 110 : 110 : 0.1
+T: 4 1 : 110 : 126 : 0.9
+T: 4 2 : 110 : 78 : 0.9
+T: 4 2 : 110 : 110 : 0.1
+T: 4 3 : 110 : 110 : 1.0
+T: 4 4 : 110 : 110 : 1.0
+T: 4 5 : 110 : 110 : 1.0
+T: 5 0 : 110 : 110 : 1.0
+T: 5 1 : 110 : 110 : 0.1
+T: 5 1 : 110 : 126 : 0.9
+T: 5 2 : 110 : 78 : 0.9
+T: 5 2 : 110 : 110 : 0.1
+T: 5 3 : 110 : 110 : 1.0
+T: 5 4 : 110 : 110 : 1.0
+T: 5 5 : 110 : 110 : 1.0
+T: 0 0 : 111 : 47 : 0.9
+T: 0 0 : 111 : 111 : 0.1
+T: 0 1 : 111 : 47 : 0.09
+T: 0 1 : 111 : 63 : 0.81
+T: 0 1 : 111 : 111 : 0.01
+T: 0 1 : 111 : 127 : 0.09
+T: 0 2 : 111 : 15 : 0.81
+T: 0 2 : 111 : 47 : 0.09
+T: 0 2 : 111 : 79 : 0.09
+T: 0 2 : 111 : 111 : 0.01
+T: 0 3 : 111 : 47 : 0.9
+T: 0 3 : 111 : 111 : 0.1
+T: 0 4 : 111 : 0 : 1.0
+T: 0 5 : 111 : 0 : 1.0
+T: 1 0 : 111 : 111 : 1.0
+T: 1 1 : 111 : 111 : 0.1
+T: 1 1 : 111 : 127 : 0.9
+T: 1 2 : 111 : 79 : 0.9
+T: 1 2 : 111 : 111 : 0.1
+T: 1 3 : 111 : 111 : 1.0
+T: 1 4 : 111 : 0 : 1.0
+T: 1 5 : 111 : 0 : 1.0
+T: 2 0 : 111 : 111 : 1.0
+T: 2 1 : 111 : 111 : 0.1
+T: 2 1 : 111 : 127 : 0.9
+T: 2 2 : 111 : 79 : 0.9
+T: 2 2 : 111 : 111 : 0.1
+T: 2 3 : 111 : 111 : 1.0
+T: 2 4 : 111 : 0 : 1.0
+T: 2 5 : 111 : 0 : 1.0
+T: 3 0 : 111 : 111 : 0.1
+T: 3 0 : 111 : 239 : 0.9
+T: 3 1 : 111 : 111 : 0.01
+T: 3 1 : 111 : 127 : 0.09
+T: 3 1 : 111 : 239 : 0.09
+T: 3 1 : 111 : 255 : 0.81
+T: 3 2 : 111 : 79 : 0.09
+T: 3 2 : 111 : 111 : 0.01
+T: 3 2 : 111 : 207 : 0.81
+T: 3 2 : 111 : 239 : 0.09
+T: 3 3 : 111 : 111 : 0.1
+T: 3 3 : 111 : 239 : 0.9
+T: 3 4 : 111 : 0 : 1.0
+T: 3 5 : 111 : 0 : 1.0
+T: 4 0 : 111 : 0 : 1.0
+T: 4 1 : 111 : 0 : 1.0
+T: 4 2 : 111 : 0 : 1.0
+T: 4 3 : 111 : 0 : 1.0
+T: 4 4 : 111 : 0 : 1.0
+T: 4 5 : 111 : 0 : 1.0
+T: 5 0 : 111 : 0 : 1.0
+T: 5 1 : 111 : 0 : 1.0
+T: 5 2 : 111 : 0 : 1.0
+T: 5 3 : 111 : 0 : 1.0
+T: 5 4 : 111 : 0 : 1.0
+T: 5 5 : 111 : 0 : 1.0
+T: 0 0 : 112 : 32 : 0.81
+T: 0 0 : 112 : 48 : 0.09
+T: 0 0 : 112 : 96 : 0.09
+T: 0 0 : 112 : 112 : 0.01
+T: 0 1 : 112 : 48 : 0.9
+T: 0 1 : 112 : 112 : 0.1
+T: 0 2 : 112 : 16 : 0.81
+T: 0 2 : 112 : 48 : 0.09
+T: 0 2 : 112 : 80 : 0.09
+T: 0 2 : 112 : 112 : 0.01
+T: 0 3 : 112 : 48 : 0.9
+T: 0 3 : 112 : 112 : 0.1
+T: 0 4 : 112 : 56 : 0.9
+T: 0 4 : 112 : 120 : 0.1
+T: 0 5 : 112 : 56 : 0.9
+T: 0 5 : 112 : 120 : 0.1
+T: 1 0 : 112 : 96 : 0.9
+T: 1 0 : 112 : 112 : 0.1
+T: 1 1 : 112 : 112 : 1.0
+T: 1 2 : 112 : 80 : 0.9
+T: 1 2 : 112 : 112 : 0.1
+T: 1 3 : 112 : 112 : 1.0
+T: 1 4 : 112 : 120 : 1.0
+T: 1 5 : 112 : 120 : 1.0
+T: 2 0 : 112 : 96 : 0.9
+T: 2 0 : 112 : 112 : 0.1
+T: 2 1 : 112 : 112 : 1.0
+T: 2 2 : 112 : 80 : 0.9
+T: 2 2 : 112 : 112 : 0.1
+T: 2 3 : 112 : 112 : 1.0
+T: 2 4 : 112 : 120 : 1.0
+T: 2 5 : 112 : 120 : 1.0
+T: 3 0 : 112 : 96 : 0.09
+T: 3 0 : 112 : 112 : 0.01
+T: 3 0 : 112 : 224 : 0.81
+T: 3 0 : 112 : 240 : 0.09
+T: 3 1 : 112 : 112 : 0.1
+T: 3 1 : 112 : 240 : 0.9
+T: 3 2 : 112 : 80 : 0.09
+T: 3 2 : 112 : 112 : 0.01
+T: 3 2 : 112 : 208 : 0.81
+T: 3 2 : 112 : 240 : 0.09
+T: 3 3 : 112 : 112 : 0.1
+T: 3 3 : 112 : 240 : 0.9
+T: 3 4 : 112 : 120 : 0.1
+T: 3 4 : 112 : 248 : 0.9
+T: 3 5 : 112 : 120 : 0.1
+T: 3 5 : 112 : 248 : 0.9
+T: 4 0 : 112 : 98 : 0.9
+T: 4 0 : 112 : 114 : 0.1
+T: 4 1 : 112 : 114 : 1.0
+T: 4 2 : 112 : 82 : 0.9
+T: 4 2 : 112 : 114 : 0.1
+T: 4 3 : 112 : 114 : 1.0
+T: 4 4 : 112 : 122 : 1.0
+T: 4 5 : 112 : 122 : 1.0
+T: 5 0 : 112 : 98 : 0.9
+T: 5 0 : 112 : 114 : 0.1
+T: 5 1 : 112 : 114 : 1.0
+T: 5 2 : 112 : 82 : 0.9
+T: 5 2 : 112 : 114 : 0.1
+T: 5 3 : 112 : 114 : 1.0
+T: 5 4 : 112 : 122 : 1.0
+T: 5 5 : 112 : 122 : 1.0
+T: 0 0 : 113 : 33 : 0.81
+T: 0 0 : 113 : 49 : 0.09
+T: 0 0 : 113 : 97 : 0.09
+T: 0 0 : 113 : 113 : 0.01
+T: 0 1 : 113 : 49 : 0.9
+T: 0 1 : 113 : 113 : 0.1
+T: 0 2 : 113 : 17 : 0.81
+T: 0 2 : 113 : 49 : 0.09
+T: 0 2 : 113 : 81 : 0.09
+T: 0 2 : 113 : 113 : 0.01
+T: 0 3 : 113 : 49 : 0.9
+T: 0 3 : 113 : 113 : 0.1
+T: 0 4 : 113 : 57 : 0.9
+T: 0 4 : 113 : 121 : 0.1
+T: 0 5 : 113 : 57 : 0.9
+T: 0 5 : 113 : 121 : 0.1
+T: 1 0 : 113 : 97 : 0.9
+T: 1 0 : 113 : 113 : 0.1
+T: 1 1 : 113 : 113 : 1.0
+T: 1 2 : 113 : 81 : 0.9
+T: 1 2 : 113 : 113 : 0.1
+T: 1 3 : 113 : 113 : 1.0
+T: 1 4 : 113 : 121 : 1.0
+T: 1 5 : 113 : 121 : 1.0
+T: 2 0 : 113 : 97 : 0.9
+T: 2 0 : 113 : 113 : 0.1
+T: 2 1 : 113 : 113 : 1.0
+T: 2 2 : 113 : 81 : 0.9
+T: 2 2 : 113 : 113 : 0.1
+T: 2 3 : 113 : 113 : 1.0
+T: 2 4 : 113 : 121 : 1.0
+T: 2 5 : 113 : 121 : 1.0
+T: 3 0 : 113 : 97 : 0.09
+T: 3 0 : 113 : 113 : 0.01
+T: 3 0 : 113 : 225 : 0.81
+T: 3 0 : 113 : 241 : 0.09
+T: 3 1 : 113 : 113 : 0.1
+T: 3 1 : 113 : 241 : 0.9
+T: 3 2 : 113 : 81 : 0.09
+T: 3 2 : 113 : 113 : 0.01
+T: 3 2 : 113 : 209 : 0.81
+T: 3 2 : 113 : 241 : 0.09
+T: 3 3 : 113 : 113 : 0.1
+T: 3 3 : 113 : 241 : 0.9
+T: 3 4 : 113 : 121 : 0.1
+T: 3 4 : 113 : 249 : 0.9
+T: 3 5 : 113 : 121 : 0.1
+T: 3 5 : 113 : 249 : 0.9
+T: 4 0 : 113 : 99 : 0.9
+T: 4 0 : 113 : 115 : 0.1
+T: 4 1 : 113 : 115 : 1.0
+T: 4 2 : 113 : 83 : 0.9
+T: 4 2 : 113 : 115 : 0.1
+T: 4 3 : 113 : 115 : 1.0
+T: 4 4 : 113 : 123 : 1.0
+T: 4 5 : 113 : 123 : 1.0
+T: 5 0 : 113 : 99 : 0.9
+T: 5 0 : 113 : 115 : 0.1
+T: 5 1 : 113 : 115 : 1.0
+T: 5 2 : 113 : 83 : 0.9
+T: 5 2 : 113 : 115 : 0.1
+T: 5 3 : 113 : 115 : 1.0
+T: 5 4 : 113 : 123 : 1.0
+T: 5 5 : 113 : 123 : 1.0
+T: 0 0 : 114 : 34 : 0.81
+T: 0 0 : 114 : 50 : 0.09
+T: 0 0 : 114 : 98 : 0.09
+T: 0 0 : 114 : 114 : 0.01
+T: 0 1 : 114 : 50 : 0.9
+T: 0 1 : 114 : 114 : 0.1
+T: 0 2 : 114 : 18 : 0.81
+T: 0 2 : 114 : 50 : 0.09
+T: 0 2 : 114 : 82 : 0.09
+T: 0 2 : 114 : 114 : 0.01
+T: 0 3 : 114 : 50 : 0.9
+T: 0 3 : 114 : 114 : 0.1
+T: 0 4 : 114 : 58 : 0.9
+T: 0 4 : 114 : 122 : 0.1
+T: 0 5 : 114 : 58 : 0.9
+T: 0 5 : 114 : 122 : 0.1
+T: 1 0 : 114 : 98 : 0.9
+T: 1 0 : 114 : 114 : 0.1
+T: 1 1 : 114 : 114 : 1.0
+T: 1 2 : 114 : 82 : 0.9
+T: 1 2 : 114 : 114 : 0.1
+T: 1 3 : 114 : 114 : 1.0
+T: 1 4 : 114 : 122 : 1.0
+T: 1 5 : 114 : 122 : 1.0
+T: 2 0 : 114 : 98 : 0.9
+T: 2 0 : 114 : 114 : 0.1
+T: 2 1 : 114 : 114 : 1.0
+T: 2 2 : 114 : 82 : 0.9
+T: 2 2 : 114 : 114 : 0.1
+T: 2 3 : 114 : 114 : 1.0
+T: 2 4 : 114 : 122 : 1.0
+T: 2 5 : 114 : 122 : 1.0
+T: 3 0 : 114 : 98 : 0.09
+T: 3 0 : 114 : 114 : 0.01
+T: 3 0 : 114 : 226 : 0.81
+T: 3 0 : 114 : 242 : 0.09
+T: 3 1 : 114 : 114 : 0.1
+T: 3 1 : 114 : 242 : 0.9
+T: 3 2 : 114 : 82 : 0.09
+T: 3 2 : 114 : 114 : 0.01
+T: 3 2 : 114 : 210 : 0.81
+T: 3 2 : 114 : 242 : 0.09
+T: 3 3 : 114 : 114 : 0.1
+T: 3 3 : 114 : 242 : 0.9
+T: 3 4 : 114 : 122 : 0.1
+T: 3 4 : 114 : 250 : 0.9
+T: 3 5 : 114 : 122 : 0.1
+T: 3 5 : 114 : 250 : 0.9
+T: 4 0 : 114 : 98 : 0.9
+T: 4 0 : 114 : 114 : 0.1
+T: 4 1 : 114 : 114 : 1.0
+T: 4 2 : 114 : 82 : 0.9
+T: 4 2 : 114 : 114 : 0.1
+T: 4 3 : 114 : 114 : 1.0
+T: 4 4 : 114 : 122 : 1.0
+T: 4 5 : 114 : 122 : 1.0
+T: 5 0 : 114 : 98 : 0.9
+T: 5 0 : 114 : 114 : 0.1
+T: 5 1 : 114 : 114 : 1.0
+T: 5 2 : 114 : 82 : 0.9
+T: 5 2 : 114 : 114 : 0.1
+T: 5 3 : 114 : 114 : 1.0
+T: 5 4 : 114 : 122 : 1.0
+T: 5 5 : 114 : 122 : 1.0
+T: 0 0 : 115 : 35 : 0.81
+T: 0 0 : 115 : 51 : 0.09
+T: 0 0 : 115 : 99 : 0.09
+T: 0 0 : 115 : 115 : 0.01
+T: 0 1 : 115 : 51 : 0.9
+T: 0 1 : 115 : 115 : 0.1
+T: 0 2 : 115 : 19 : 0.81
+T: 0 2 : 115 : 51 : 0.09
+T: 0 2 : 115 : 83 : 0.09
+T: 0 2 : 115 : 115 : 0.01
+T: 0 3 : 115 : 51 : 0.9
+T: 0 3 : 115 : 115 : 0.1
+T: 0 4 : 115 : 59 : 0.9
+T: 0 4 : 115 : 123 : 0.1
+T: 0 5 : 115 : 59 : 0.9
+T: 0 5 : 115 : 123 : 0.1
+T: 1 0 : 115 : 99 : 0.9
+T: 1 0 : 115 : 115 : 0.1
+T: 1 1 : 115 : 115 : 1.0
+T: 1 2 : 115 : 83 : 0.9
+T: 1 2 : 115 : 115 : 0.1
+T: 1 3 : 115 : 115 : 1.0
+T: 1 4 : 115 : 123 : 1.0
+T: 1 5 : 115 : 123 : 1.0
+T: 2 0 : 115 : 99 : 0.9
+T: 2 0 : 115 : 115 : 0.1
+T: 2 1 : 115 : 115 : 1.0
+T: 2 2 : 115 : 83 : 0.9
+T: 2 2 : 115 : 115 : 0.1
+T: 2 3 : 115 : 115 : 1.0
+T: 2 4 : 115 : 123 : 1.0
+T: 2 5 : 115 : 123 : 1.0
+T: 3 0 : 115 : 99 : 0.09
+T: 3 0 : 115 : 115 : 0.01
+T: 3 0 : 115 : 227 : 0.81
+T: 3 0 : 115 : 243 : 0.09
+T: 3 1 : 115 : 115 : 0.1
+T: 3 1 : 115 : 243 : 0.9
+T: 3 2 : 115 : 83 : 0.09
+T: 3 2 : 115 : 115 : 0.01
+T: 3 2 : 115 : 211 : 0.81
+T: 3 2 : 115 : 243 : 0.09
+T: 3 3 : 115 : 115 : 0.1
+T: 3 3 : 115 : 243 : 0.9
+T: 3 4 : 115 : 123 : 0.1
+T: 3 4 : 115 : 251 : 0.9
+T: 3 5 : 115 : 123 : 0.1
+T: 3 5 : 115 : 251 : 0.9
+T: 4 0 : 115 : 99 : 0.9
+T: 4 0 : 115 : 115 : 0.1
+T: 4 1 : 115 : 115 : 1.0
+T: 4 2 : 115 : 83 : 0.9
+T: 4 2 : 115 : 115 : 0.1
+T: 4 3 : 115 : 115 : 1.0
+T: 4 4 : 115 : 123 : 1.0
+T: 4 5 : 115 : 123 : 1.0
+T: 5 0 : 115 : 99 : 0.9
+T: 5 0 : 115 : 115 : 0.1
+T: 5 1 : 115 : 115 : 1.0
+T: 5 2 : 115 : 83 : 0.9
+T: 5 2 : 115 : 115 : 0.1
+T: 5 3 : 115 : 115 : 1.0
+T: 5 4 : 115 : 123 : 1.0
+T: 5 5 : 115 : 123 : 1.0
+T: 0 0 : 116 : 36 : 0.81
+T: 0 0 : 116 : 52 : 0.09
+T: 0 0 : 116 : 100 : 0.09
+T: 0 0 : 116 : 116 : 0.01
+T: 0 1 : 116 : 52 : 0.9
+T: 0 1 : 116 : 116 : 0.1
+T: 0 2 : 116 : 20 : 0.81
+T: 0 2 : 116 : 52 : 0.09
+T: 0 2 : 116 : 84 : 0.09
+T: 0 2 : 116 : 116 : 0.01
+T: 0 3 : 116 : 52 : 0.9
+T: 0 3 : 116 : 116 : 0.1
+T: 0 4 : 116 : 60 : 0.9
+T: 0 4 : 116 : 124 : 0.1
+T: 0 5 : 116 : 60 : 0.9
+T: 0 5 : 116 : 124 : 0.1
+T: 1 0 : 116 : 100 : 0.9
+T: 1 0 : 116 : 116 : 0.1
+T: 1 1 : 116 : 116 : 1.0
+T: 1 2 : 116 : 84 : 0.9
+T: 1 2 : 116 : 116 : 0.1
+T: 1 3 : 116 : 116 : 1.0
+T: 1 4 : 116 : 124 : 1.0
+T: 1 5 : 116 : 124 : 1.0
+T: 2 0 : 116 : 100 : 0.9
+T: 2 0 : 116 : 116 : 0.1
+T: 2 1 : 116 : 116 : 1.0
+T: 2 2 : 116 : 84 : 0.9
+T: 2 2 : 116 : 116 : 0.1
+T: 2 3 : 116 : 116 : 1.0
+T: 2 4 : 116 : 124 : 1.0
+T: 2 5 : 116 : 124 : 1.0
+T: 3 0 : 116 : 100 : 0.09
+T: 3 0 : 116 : 116 : 0.01
+T: 3 0 : 116 : 228 : 0.81
+T: 3 0 : 116 : 244 : 0.09
+T: 3 1 : 116 : 116 : 0.1
+T: 3 1 : 116 : 244 : 0.9
+T: 3 2 : 116 : 84 : 0.09
+T: 3 2 : 116 : 116 : 0.01
+T: 3 2 : 116 : 212 : 0.81
+T: 3 2 : 116 : 244 : 0.09
+T: 3 3 : 116 : 116 : 0.1
+T: 3 3 : 116 : 244 : 0.9
+T: 3 4 : 116 : 124 : 0.1
+T: 3 4 : 116 : 252 : 0.9
+T: 3 5 : 116 : 124 : 0.1
+T: 3 5 : 116 : 252 : 0.9
+T: 4 0 : 116 : 102 : 0.9
+T: 4 0 : 116 : 118 : 0.1
+T: 4 1 : 116 : 118 : 1.0
+T: 4 2 : 116 : 86 : 0.9
+T: 4 2 : 116 : 118 : 0.1
+T: 4 3 : 116 : 118 : 1.0
+T: 4 4 : 116 : 126 : 1.0
+T: 4 5 : 116 : 126 : 1.0
+T: 5 0 : 116 : 102 : 0.9
+T: 5 0 : 116 : 118 : 0.1
+T: 5 1 : 116 : 118 : 1.0
+T: 5 2 : 116 : 86 : 0.9
+T: 5 2 : 116 : 118 : 0.1
+T: 5 3 : 116 : 118 : 1.0
+T: 5 4 : 116 : 126 : 1.0
+T: 5 5 : 116 : 126 : 1.0
+T: 0 0 : 117 : 37 : 0.81
+T: 0 0 : 117 : 53 : 0.09
+T: 0 0 : 117 : 101 : 0.09
+T: 0 0 : 117 : 117 : 0.01
+T: 0 1 : 117 : 53 : 0.9
+T: 0 1 : 117 : 117 : 0.1
+T: 0 2 : 117 : 21 : 0.81
+T: 0 2 : 117 : 53 : 0.09
+T: 0 2 : 117 : 85 : 0.09
+T: 0 2 : 117 : 117 : 0.01
+T: 0 3 : 117 : 53 : 0.9
+T: 0 3 : 117 : 117 : 0.1
+T: 0 4 : 117 : 61 : 0.9
+T: 0 4 : 117 : 125 : 0.1
+T: 0 5 : 117 : 61 : 0.9
+T: 0 5 : 117 : 125 : 0.1
+T: 1 0 : 117 : 101 : 0.9
+T: 1 0 : 117 : 117 : 0.1
+T: 1 1 : 117 : 117 : 1.0
+T: 1 2 : 117 : 85 : 0.9
+T: 1 2 : 117 : 117 : 0.1
+T: 1 3 : 117 : 117 : 1.0
+T: 1 4 : 117 : 125 : 1.0
+T: 1 5 : 117 : 125 : 1.0
+T: 2 0 : 117 : 101 : 0.9
+T: 2 0 : 117 : 117 : 0.1
+T: 2 1 : 117 : 117 : 1.0
+T: 2 2 : 117 : 85 : 0.9
+T: 2 2 : 117 : 117 : 0.1
+T: 2 3 : 117 : 117 : 1.0
+T: 2 4 : 117 : 125 : 1.0
+T: 2 5 : 117 : 125 : 1.0
+T: 3 0 : 117 : 101 : 0.09
+T: 3 0 : 117 : 117 : 0.01
+T: 3 0 : 117 : 229 : 0.81
+T: 3 0 : 117 : 245 : 0.09
+T: 3 1 : 117 : 117 : 0.1
+T: 3 1 : 117 : 245 : 0.9
+T: 3 2 : 117 : 85 : 0.09
+T: 3 2 : 117 : 117 : 0.01
+T: 3 2 : 117 : 213 : 0.81
+T: 3 2 : 117 : 245 : 0.09
+T: 3 3 : 117 : 117 : 0.1
+T: 3 3 : 117 : 245 : 0.9
+T: 3 4 : 117 : 125 : 0.1
+T: 3 4 : 117 : 253 : 0.9
+T: 3 5 : 117 : 125 : 0.1
+T: 3 5 : 117 : 253 : 0.9
+T: 4 0 : 117 : 103 : 0.9
+T: 4 0 : 117 : 119 : 0.1
+T: 4 1 : 117 : 119 : 1.0
+T: 4 2 : 117 : 87 : 0.9
+T: 4 2 : 117 : 119 : 0.1
+T: 4 3 : 117 : 119 : 1.0
+T: 4 4 : 117 : 0 : 1.0
+T: 4 5 : 117 : 0 : 1.0
+T: 5 0 : 117 : 103 : 0.9
+T: 5 0 : 117 : 119 : 0.1
+T: 5 1 : 117 : 119 : 1.0
+T: 5 2 : 117 : 87 : 0.9
+T: 5 2 : 117 : 119 : 0.1
+T: 5 3 : 117 : 119 : 1.0
+T: 5 4 : 117 : 0 : 1.0
+T: 5 5 : 117 : 0 : 1.0
+T: 0 0 : 118 : 38 : 0.81
+T: 0 0 : 118 : 54 : 0.09
+T: 0 0 : 118 : 102 : 0.09
+T: 0 0 : 118 : 118 : 0.01
+T: 0 1 : 118 : 54 : 0.9
+T: 0 1 : 118 : 118 : 0.1
+T: 0 2 : 118 : 22 : 0.81
+T: 0 2 : 118 : 54 : 0.09
+T: 0 2 : 118 : 86 : 0.09
+T: 0 2 : 118 : 118 : 0.01
+T: 0 3 : 118 : 54 : 0.9
+T: 0 3 : 118 : 118 : 0.1
+T: 0 4 : 118 : 62 : 0.9
+T: 0 4 : 118 : 126 : 0.1
+T: 0 5 : 118 : 62 : 0.9
+T: 0 5 : 118 : 126 : 0.1
+T: 1 0 : 118 : 102 : 0.9
+T: 1 0 : 118 : 118 : 0.1
+T: 1 1 : 118 : 118 : 1.0
+T: 1 2 : 118 : 86 : 0.9
+T: 1 2 : 118 : 118 : 0.1
+T: 1 3 : 118 : 118 : 1.0
+T: 1 4 : 118 : 126 : 1.0
+T: 1 5 : 118 : 126 : 1.0
+T: 2 0 : 118 : 102 : 0.9
+T: 2 0 : 118 : 118 : 0.1
+T: 2 1 : 118 : 118 : 1.0
+T: 2 2 : 118 : 86 : 0.9
+T: 2 2 : 118 : 118 : 0.1
+T: 2 3 : 118 : 118 : 1.0
+T: 2 4 : 118 : 126 : 1.0
+T: 2 5 : 118 : 126 : 1.0
+T: 3 0 : 118 : 102 : 0.09
+T: 3 0 : 118 : 118 : 0.01
+T: 3 0 : 118 : 230 : 0.81
+T: 3 0 : 118 : 246 : 0.09
+T: 3 1 : 118 : 118 : 0.1
+T: 3 1 : 118 : 246 : 0.9
+T: 3 2 : 118 : 86 : 0.09
+T: 3 2 : 118 : 118 : 0.01
+T: 3 2 : 118 : 214 : 0.81
+T: 3 2 : 118 : 246 : 0.09
+T: 3 3 : 118 : 118 : 0.1
+T: 3 3 : 118 : 246 : 0.9
+T: 3 4 : 118 : 126 : 0.1
+T: 3 4 : 118 : 254 : 0.9
+T: 3 5 : 118 : 126 : 0.1
+T: 3 5 : 118 : 254 : 0.9
+T: 4 0 : 118 : 102 : 0.9
+T: 4 0 : 118 : 118 : 0.1
+T: 4 1 : 118 : 118 : 1.0
+T: 4 2 : 118 : 86 : 0.9
+T: 4 2 : 118 : 118 : 0.1
+T: 4 3 : 118 : 118 : 1.0
+T: 4 4 : 118 : 126 : 1.0
+T: 4 5 : 118 : 126 : 1.0
+T: 5 0 : 118 : 102 : 0.9
+T: 5 0 : 118 : 118 : 0.1
+T: 5 1 : 118 : 118 : 1.0
+T: 5 2 : 118 : 86 : 0.9
+T: 5 2 : 118 : 118 : 0.1
+T: 5 3 : 118 : 118 : 1.0
+T: 5 4 : 118 : 126 : 1.0
+T: 5 5 : 118 : 126 : 1.0
+T: 0 0 : 119 : 39 : 0.81
+T: 0 0 : 119 : 55 : 0.09
+T: 0 0 : 119 : 103 : 0.09
+T: 0 0 : 119 : 119 : 0.01
+T: 0 1 : 119 : 55 : 0.9
+T: 0 1 : 119 : 119 : 0.1
+T: 0 2 : 119 : 23 : 0.81
+T: 0 2 : 119 : 55 : 0.09
+T: 0 2 : 119 : 87 : 0.09
+T: 0 2 : 119 : 119 : 0.01
+T: 0 3 : 119 : 55 : 0.9
+T: 0 3 : 119 : 119 : 0.1
+T: 0 4 : 119 : 0 : 1.0
+T: 0 5 : 119 : 0 : 1.0
+T: 1 0 : 119 : 103 : 0.9
+T: 1 0 : 119 : 119 : 0.1
+T: 1 1 : 119 : 119 : 1.0
+T: 1 2 : 119 : 87 : 0.9
+T: 1 2 : 119 : 119 : 0.1
+T: 1 3 : 119 : 119 : 1.0
+T: 1 4 : 119 : 0 : 1.0
+T: 1 5 : 119 : 0 : 1.0
+T: 2 0 : 119 : 103 : 0.9
+T: 2 0 : 119 : 119 : 0.1
+T: 2 1 : 119 : 119 : 1.0
+T: 2 2 : 119 : 87 : 0.9
+T: 2 2 : 119 : 119 : 0.1
+T: 2 3 : 119 : 119 : 1.0
+T: 2 4 : 119 : 0 : 1.0
+T: 2 5 : 119 : 0 : 1.0
+T: 3 0 : 119 : 103 : 0.09
+T: 3 0 : 119 : 119 : 0.01
+T: 3 0 : 119 : 231 : 0.81
+T: 3 0 : 119 : 247 : 0.09
+T: 3 1 : 119 : 119 : 0.1
+T: 3 1 : 119 : 247 : 0.9
+T: 3 2 : 119 : 87 : 0.09
+T: 3 2 : 119 : 119 : 0.01
+T: 3 2 : 119 : 215 : 0.81
+T: 3 2 : 119 : 247 : 0.09
+T: 3 3 : 119 : 119 : 0.1
+T: 3 3 : 119 : 247 : 0.9
+T: 3 4 : 119 : 0 : 1.0
+T: 3 5 : 119 : 0 : 1.0
+T: 4 0 : 119 : 103 : 0.9
+T: 4 0 : 119 : 119 : 0.1
+T: 4 1 : 119 : 119 : 1.0
+T: 4 2 : 119 : 87 : 0.9
+T: 4 2 : 119 : 119 : 0.1
+T: 4 3 : 119 : 119 : 1.0
+T: 4 4 : 119 : 0 : 1.0
+T: 4 5 : 119 : 0 : 1.0
+T: 5 0 : 119 : 103 : 0.9
+T: 5 0 : 119 : 119 : 0.1
+T: 5 1 : 119 : 119 : 1.0
+T: 5 2 : 119 : 87 : 0.9
+T: 5 2 : 119 : 119 : 0.1
+T: 5 3 : 119 : 119 : 1.0
+T: 5 4 : 119 : 0 : 1.0
+T: 5 5 : 119 : 0 : 1.0
+T: 0 0 : 120 : 40 : 0.81
+T: 0 0 : 120 : 56 : 0.09
+T: 0 0 : 120 : 104 : 0.09
+T: 0 0 : 120 : 120 : 0.01
+T: 0 1 : 120 : 56 : 0.9
+T: 0 1 : 120 : 120 : 0.1
+T: 0 2 : 120 : 24 : 0.81
+T: 0 2 : 120 : 56 : 0.09
+T: 0 2 : 120 : 88 : 0.09
+T: 0 2 : 120 : 120 : 0.01
+T: 0 3 : 120 : 56 : 0.9
+T: 0 3 : 120 : 120 : 0.1
+T: 0 4 : 120 : 56 : 0.9
+T: 0 4 : 120 : 120 : 0.1
+T: 0 5 : 120 : 56 : 0.9
+T: 0 5 : 120 : 120 : 0.1
+T: 1 0 : 120 : 104 : 0.9
+T: 1 0 : 120 : 120 : 0.1
+T: 1 1 : 120 : 120 : 1.0
+T: 1 2 : 120 : 88 : 0.9
+T: 1 2 : 120 : 120 : 0.1
+T: 1 3 : 120 : 120 : 1.0
+T: 1 4 : 120 : 120 : 1.0
+T: 1 5 : 120 : 120 : 1.0
+T: 2 0 : 120 : 104 : 0.9
+T: 2 0 : 120 : 120 : 0.1
+T: 2 1 : 120 : 120 : 1.0
+T: 2 2 : 120 : 88 : 0.9
+T: 2 2 : 120 : 120 : 0.1
+T: 2 3 : 120 : 120 : 1.0
+T: 2 4 : 120 : 120 : 1.0
+T: 2 5 : 120 : 120 : 1.0
+T: 3 0 : 120 : 104 : 0.09
+T: 3 0 : 120 : 120 : 0.01
+T: 3 0 : 120 : 232 : 0.81
+T: 3 0 : 120 : 248 : 0.09
+T: 3 1 : 120 : 120 : 0.1
+T: 3 1 : 120 : 248 : 0.9
+T: 3 2 : 120 : 88 : 0.09
+T: 3 2 : 120 : 120 : 0.01
+T: 3 2 : 120 : 216 : 0.81
+T: 3 2 : 120 : 248 : 0.09
+T: 3 3 : 120 : 120 : 0.1
+T: 3 3 : 120 : 248 : 0.9
+T: 3 4 : 120 : 120 : 0.1
+T: 3 4 : 120 : 248 : 0.9
+T: 3 5 : 120 : 120 : 0.1
+T: 3 5 : 120 : 248 : 0.9
+T: 4 0 : 120 : 106 : 0.9
+T: 4 0 : 120 : 122 : 0.1
+T: 4 1 : 120 : 122 : 1.0
+T: 4 2 : 120 : 90 : 0.9
+T: 4 2 : 120 : 122 : 0.1
+T: 4 3 : 120 : 122 : 1.0
+T: 4 4 : 120 : 122 : 1.0
+T: 4 5 : 120 : 122 : 1.0
+T: 5 0 : 120 : 106 : 0.9
+T: 5 0 : 120 : 122 : 0.1
+T: 5 1 : 120 : 122 : 1.0
+T: 5 2 : 120 : 90 : 0.9
+T: 5 2 : 120 : 122 : 0.1
+T: 5 3 : 120 : 122 : 1.0
+T: 5 4 : 120 : 122 : 1.0
+T: 5 5 : 120 : 122 : 1.0
+T: 0 0 : 121 : 41 : 0.81
+T: 0 0 : 121 : 57 : 0.09
+T: 0 0 : 121 : 105 : 0.09
+T: 0 0 : 121 : 121 : 0.01
+T: 0 1 : 121 : 57 : 0.9
+T: 0 1 : 121 : 121 : 0.1
+T: 0 2 : 121 : 25 : 0.81
+T: 0 2 : 121 : 57 : 0.09
+T: 0 2 : 121 : 89 : 0.09
+T: 0 2 : 121 : 121 : 0.01
+T: 0 3 : 121 : 57 : 0.9
+T: 0 3 : 121 : 121 : 0.1
+T: 0 4 : 121 : 57 : 0.9
+T: 0 4 : 121 : 121 : 0.1
+T: 0 5 : 121 : 57 : 0.9
+T: 0 5 : 121 : 121 : 0.1
+T: 1 0 : 121 : 105 : 0.9
+T: 1 0 : 121 : 121 : 0.1
+T: 1 1 : 121 : 121 : 1.0
+T: 1 2 : 121 : 89 : 0.9
+T: 1 2 : 121 : 121 : 0.1
+T: 1 3 : 121 : 121 : 1.0
+T: 1 4 : 121 : 121 : 1.0
+T: 1 5 : 121 : 121 : 1.0
+T: 2 0 : 121 : 105 : 0.9
+T: 2 0 : 121 : 121 : 0.1
+T: 2 1 : 121 : 121 : 1.0
+T: 2 2 : 121 : 89 : 0.9
+T: 2 2 : 121 : 121 : 0.1
+T: 2 3 : 121 : 121 : 1.0
+T: 2 4 : 121 : 121 : 1.0
+T: 2 5 : 121 : 121 : 1.0
+T: 3 0 : 121 : 105 : 0.09
+T: 3 0 : 121 : 121 : 0.01
+T: 3 0 : 121 : 233 : 0.81
+T: 3 0 : 121 : 249 : 0.09
+T: 3 1 : 121 : 121 : 0.1
+T: 3 1 : 121 : 249 : 0.9
+T: 3 2 : 121 : 89 : 0.09
+T: 3 2 : 121 : 121 : 0.01
+T: 3 2 : 121 : 217 : 0.81
+T: 3 2 : 121 : 249 : 0.09
+T: 3 3 : 121 : 121 : 0.1
+T: 3 3 : 121 : 249 : 0.9
+T: 3 4 : 121 : 121 : 0.1
+T: 3 4 : 121 : 249 : 0.9
+T: 3 5 : 121 : 121 : 0.1
+T: 3 5 : 121 : 249 : 0.9
+T: 4 0 : 121 : 107 : 0.9
+T: 4 0 : 121 : 123 : 0.1
+T: 4 1 : 121 : 123 : 1.0
+T: 4 2 : 121 : 91 : 0.9
+T: 4 2 : 121 : 123 : 0.1
+T: 4 3 : 121 : 123 : 1.0
+T: 4 4 : 121 : 123 : 1.0
+T: 4 5 : 121 : 123 : 1.0
+T: 5 0 : 121 : 107 : 0.9
+T: 5 0 : 121 : 123 : 0.1
+T: 5 1 : 121 : 123 : 1.0
+T: 5 2 : 121 : 91 : 0.9
+T: 5 2 : 121 : 123 : 0.1
+T: 5 3 : 121 : 123 : 1.0
+T: 5 4 : 121 : 123 : 1.0
+T: 5 5 : 121 : 123 : 1.0
+T: 0 0 : 122 : 42 : 0.81
+T: 0 0 : 122 : 58 : 0.09
+T: 0 0 : 122 : 106 : 0.09
+T: 0 0 : 122 : 122 : 0.01
+T: 0 1 : 122 : 58 : 0.9
+T: 0 1 : 122 : 122 : 0.1
+T: 0 2 : 122 : 26 : 0.81
+T: 0 2 : 122 : 58 : 0.09
+T: 0 2 : 122 : 90 : 0.09
+T: 0 2 : 122 : 122 : 0.01
+T: 0 3 : 122 : 58 : 0.9
+T: 0 3 : 122 : 122 : 0.1
+T: 0 4 : 122 : 58 : 0.9
+T: 0 4 : 122 : 122 : 0.1
+T: 0 5 : 122 : 58 : 0.9
+T: 0 5 : 122 : 122 : 0.1
+T: 1 0 : 122 : 106 : 0.9
+T: 1 0 : 122 : 122 : 0.1
+T: 1 1 : 122 : 122 : 1.0
+T: 1 2 : 122 : 90 : 0.9
+T: 1 2 : 122 : 122 : 0.1
+T: 1 3 : 122 : 122 : 1.0
+T: 1 4 : 122 : 122 : 1.0
+T: 1 5 : 122 : 122 : 1.0
+T: 2 0 : 122 : 106 : 0.9
+T: 2 0 : 122 : 122 : 0.1
+T: 2 1 : 122 : 122 : 1.0
+T: 2 2 : 122 : 90 : 0.9
+T: 2 2 : 122 : 122 : 0.1
+T: 2 3 : 122 : 122 : 1.0
+T: 2 4 : 122 : 122 : 1.0
+T: 2 5 : 122 : 122 : 1.0
+T: 3 0 : 122 : 106 : 0.09
+T: 3 0 : 122 : 122 : 0.01
+T: 3 0 : 122 : 234 : 0.81
+T: 3 0 : 122 : 250 : 0.09
+T: 3 1 : 122 : 122 : 0.1
+T: 3 1 : 122 : 250 : 0.9
+T: 3 2 : 122 : 90 : 0.09
+T: 3 2 : 122 : 122 : 0.01
+T: 3 2 : 122 : 218 : 0.81
+T: 3 2 : 122 : 250 : 0.09
+T: 3 3 : 122 : 122 : 0.1
+T: 3 3 : 122 : 250 : 0.9
+T: 3 4 : 122 : 122 : 0.1
+T: 3 4 : 122 : 250 : 0.9
+T: 3 5 : 122 : 122 : 0.1
+T: 3 5 : 122 : 250 : 0.9
+T: 4 0 : 122 : 106 : 0.9
+T: 4 0 : 122 : 122 : 0.1
+T: 4 1 : 122 : 122 : 1.0
+T: 4 2 : 122 : 90 : 0.9
+T: 4 2 : 122 : 122 : 0.1
+T: 4 3 : 122 : 122 : 1.0
+T: 4 4 : 122 : 122 : 1.0
+T: 4 5 : 122 : 122 : 1.0
+T: 5 0 : 122 : 106 : 0.9
+T: 5 0 : 122 : 122 : 0.1
+T: 5 1 : 122 : 122 : 1.0
+T: 5 2 : 122 : 90 : 0.9
+T: 5 2 : 122 : 122 : 0.1
+T: 5 3 : 122 : 122 : 1.0
+T: 5 4 : 122 : 122 : 1.0
+T: 5 5 : 122 : 122 : 1.0
+T: 0 0 : 123 : 43 : 0.81
+T: 0 0 : 123 : 59 : 0.09
+T: 0 0 : 123 : 107 : 0.09
+T: 0 0 : 123 : 123 : 0.01
+T: 0 1 : 123 : 59 : 0.9
+T: 0 1 : 123 : 123 : 0.1
+T: 0 2 : 123 : 27 : 0.81
+T: 0 2 : 123 : 59 : 0.09
+T: 0 2 : 123 : 91 : 0.09
+T: 0 2 : 123 : 123 : 0.01
+T: 0 3 : 123 : 59 : 0.9
+T: 0 3 : 123 : 123 : 0.1
+T: 0 4 : 123 : 59 : 0.9
+T: 0 4 : 123 : 123 : 0.1
+T: 0 5 : 123 : 59 : 0.9
+T: 0 5 : 123 : 123 : 0.1
+T: 1 0 : 123 : 107 : 0.9
+T: 1 0 : 123 : 123 : 0.1
+T: 1 1 : 123 : 123 : 1.0
+T: 1 2 : 123 : 91 : 0.9
+T: 1 2 : 123 : 123 : 0.1
+T: 1 3 : 123 : 123 : 1.0
+T: 1 4 : 123 : 123 : 1.0
+T: 1 5 : 123 : 123 : 1.0
+T: 2 0 : 123 : 107 : 0.9
+T: 2 0 : 123 : 123 : 0.1
+T: 2 1 : 123 : 123 : 1.0
+T: 2 2 : 123 : 91 : 0.9
+T: 2 2 : 123 : 123 : 0.1
+T: 2 3 : 123 : 123 : 1.0
+T: 2 4 : 123 : 123 : 1.0
+T: 2 5 : 123 : 123 : 1.0
+T: 3 0 : 123 : 107 : 0.09
+T: 3 0 : 123 : 123 : 0.01
+T: 3 0 : 123 : 235 : 0.81
+T: 3 0 : 123 : 251 : 0.09
+T: 3 1 : 123 : 123 : 0.1
+T: 3 1 : 123 : 251 : 0.9
+T: 3 2 : 123 : 91 : 0.09
+T: 3 2 : 123 : 123 : 0.01
+T: 3 2 : 123 : 219 : 0.81
+T: 3 2 : 123 : 251 : 0.09
+T: 3 3 : 123 : 123 : 0.1
+T: 3 3 : 123 : 251 : 0.9
+T: 3 4 : 123 : 123 : 0.1
+T: 3 4 : 123 : 251 : 0.9
+T: 3 5 : 123 : 123 : 0.1
+T: 3 5 : 123 : 251 : 0.9
+T: 4 0 : 123 : 107 : 0.9
+T: 4 0 : 123 : 123 : 0.1
+T: 4 1 : 123 : 123 : 1.0
+T: 4 2 : 123 : 91 : 0.9
+T: 4 2 : 123 : 123 : 0.1
+T: 4 3 : 123 : 123 : 1.0
+T: 4 4 : 123 : 123 : 1.0
+T: 4 5 : 123 : 123 : 1.0
+T: 5 0 : 123 : 107 : 0.9
+T: 5 0 : 123 : 123 : 0.1
+T: 5 1 : 123 : 123 : 1.0
+T: 5 2 : 123 : 91 : 0.9
+T: 5 2 : 123 : 123 : 0.1
+T: 5 3 : 123 : 123 : 1.0
+T: 5 4 : 123 : 123 : 1.0
+T: 5 5 : 123 : 123 : 1.0
+T: 0 0 : 124 : 44 : 0.81
+T: 0 0 : 124 : 60 : 0.09
+T: 0 0 : 124 : 108 : 0.09
+T: 0 0 : 124 : 124 : 0.01
+T: 0 1 : 124 : 60 : 0.9
+T: 0 1 : 124 : 124 : 0.1
+T: 0 2 : 124 : 28 : 0.81
+T: 0 2 : 124 : 60 : 0.09
+T: 0 2 : 124 : 92 : 0.09
+T: 0 2 : 124 : 124 : 0.01
+T: 0 3 : 124 : 60 : 0.9
+T: 0 3 : 124 : 124 : 0.1
+T: 0 4 : 124 : 60 : 0.9
+T: 0 4 : 124 : 124 : 0.1
+T: 0 5 : 124 : 60 : 0.9
+T: 0 5 : 124 : 124 : 0.1
+T: 1 0 : 124 : 108 : 0.9
+T: 1 0 : 124 : 124 : 0.1
+T: 1 1 : 124 : 124 : 1.0
+T: 1 2 : 124 : 92 : 0.9
+T: 1 2 : 124 : 124 : 0.1
+T: 1 3 : 124 : 124 : 1.0
+T: 1 4 : 124 : 124 : 1.0
+T: 1 5 : 124 : 124 : 1.0
+T: 2 0 : 124 : 108 : 0.9
+T: 2 0 : 124 : 124 : 0.1
+T: 2 1 : 124 : 124 : 1.0
+T: 2 2 : 124 : 92 : 0.9
+T: 2 2 : 124 : 124 : 0.1
+T: 2 3 : 124 : 124 : 1.0
+T: 2 4 : 124 : 124 : 1.0
+T: 2 5 : 124 : 124 : 1.0
+T: 3 0 : 124 : 108 : 0.09
+T: 3 0 : 124 : 124 : 0.01
+T: 3 0 : 124 : 236 : 0.81
+T: 3 0 : 124 : 252 : 0.09
+T: 3 1 : 124 : 124 : 0.1
+T: 3 1 : 124 : 252 : 0.9
+T: 3 2 : 124 : 92 : 0.09
+T: 3 2 : 124 : 124 : 0.01
+T: 3 2 : 124 : 220 : 0.81
+T: 3 2 : 124 : 252 : 0.09
+T: 3 3 : 124 : 124 : 0.1
+T: 3 3 : 124 : 252 : 0.9
+T: 3 4 : 124 : 124 : 0.1
+T: 3 4 : 124 : 252 : 0.9
+T: 3 5 : 124 : 124 : 0.1
+T: 3 5 : 124 : 252 : 0.9
+T: 4 0 : 124 : 110 : 0.9
+T: 4 0 : 124 : 126 : 0.1
+T: 4 1 : 124 : 126 : 1.0
+T: 4 2 : 124 : 94 : 0.9
+T: 4 2 : 124 : 126 : 0.1
+T: 4 3 : 124 : 126 : 1.0
+T: 4 4 : 124 : 126 : 1.0
+T: 4 5 : 124 : 126 : 1.0
+T: 5 0 : 124 : 110 : 0.9
+T: 5 0 : 124 : 126 : 0.1
+T: 5 1 : 124 : 126 : 1.0
+T: 5 2 : 124 : 94 : 0.9
+T: 5 2 : 124 : 126 : 0.1
+T: 5 3 : 124 : 126 : 1.0
+T: 5 4 : 124 : 126 : 1.0
+T: 5 5 : 124 : 126 : 1.0
+T: 0 0 : 125 : 45 : 0.81
+T: 0 0 : 125 : 61 : 0.09
+T: 0 0 : 125 : 109 : 0.09
+T: 0 0 : 125 : 125 : 0.01
+T: 0 1 : 125 : 61 : 0.9
+T: 0 1 : 125 : 125 : 0.1
+T: 0 2 : 125 : 29 : 0.81
+T: 0 2 : 125 : 61 : 0.09
+T: 0 2 : 125 : 93 : 0.09
+T: 0 2 : 125 : 125 : 0.01
+T: 0 3 : 125 : 61 : 0.9
+T: 0 3 : 125 : 125 : 0.1
+T: 0 4 : 125 : 61 : 0.9
+T: 0 4 : 125 : 125 : 0.1
+T: 0 5 : 125 : 61 : 0.9
+T: 0 5 : 125 : 125 : 0.1
+T: 1 0 : 125 : 109 : 0.9
+T: 1 0 : 125 : 125 : 0.1
+T: 1 1 : 125 : 125 : 1.0
+T: 1 2 : 125 : 93 : 0.9
+T: 1 2 : 125 : 125 : 0.1
+T: 1 3 : 125 : 125 : 1.0
+T: 1 4 : 125 : 125 : 1.0
+T: 1 5 : 125 : 125 : 1.0
+T: 2 0 : 125 : 109 : 0.9
+T: 2 0 : 125 : 125 : 0.1
+T: 2 1 : 125 : 125 : 1.0
+T: 2 2 : 125 : 93 : 0.9
+T: 2 2 : 125 : 125 : 0.1
+T: 2 3 : 125 : 125 : 1.0
+T: 2 4 : 125 : 125 : 1.0
+T: 2 5 : 125 : 125 : 1.0
+T: 3 0 : 125 : 109 : 0.09
+T: 3 0 : 125 : 125 : 0.01
+T: 3 0 : 125 : 237 : 0.81
+T: 3 0 : 125 : 253 : 0.09
+T: 3 1 : 125 : 125 : 0.1
+T: 3 1 : 125 : 253 : 0.9
+T: 3 2 : 125 : 93 : 0.09
+T: 3 2 : 125 : 125 : 0.01
+T: 3 2 : 125 : 221 : 0.81
+T: 3 2 : 125 : 253 : 0.09
+T: 3 3 : 125 : 125 : 0.1
+T: 3 3 : 125 : 253 : 0.9
+T: 3 4 : 125 : 125 : 0.1
+T: 3 4 : 125 : 253 : 0.9
+T: 3 5 : 125 : 125 : 0.1
+T: 3 5 : 125 : 253 : 0.9
+T: 4 0 : 125 : 0 : 1.0
+T: 4 1 : 125 : 0 : 1.0
+T: 4 2 : 125 : 0 : 1.0
+T: 4 3 : 125 : 0 : 1.0
+T: 4 4 : 125 : 0 : 1.0
+T: 4 5 : 125 : 0 : 1.0
+T: 5 0 : 125 : 0 : 1.0
+T: 5 1 : 125 : 0 : 1.0
+T: 5 2 : 125 : 0 : 1.0
+T: 5 3 : 125 : 0 : 1.0
+T: 5 4 : 125 : 0 : 1.0
+T: 5 5 : 125 : 0 : 1.0
+T: 0 0 : 126 : 46 : 0.81
+T: 0 0 : 126 : 62 : 0.09
+T: 0 0 : 126 : 110 : 0.09
+T: 0 0 : 126 : 126 : 0.01
+T: 0 1 : 126 : 62 : 0.9
+T: 0 1 : 126 : 126 : 0.1
+T: 0 2 : 126 : 30 : 0.81
+T: 0 2 : 126 : 62 : 0.09
+T: 0 2 : 126 : 94 : 0.09
+T: 0 2 : 126 : 126 : 0.01
+T: 0 3 : 126 : 62 : 0.9
+T: 0 3 : 126 : 126 : 0.1
+T: 0 4 : 126 : 62 : 0.9
+T: 0 4 : 126 : 126 : 0.1
+T: 0 5 : 126 : 62 : 0.9
+T: 0 5 : 126 : 126 : 0.1
+T: 1 0 : 126 : 110 : 0.9
+T: 1 0 : 126 : 126 : 0.1
+T: 1 1 : 126 : 126 : 1.0
+T: 1 2 : 126 : 94 : 0.9
+T: 1 2 : 126 : 126 : 0.1
+T: 1 3 : 126 : 126 : 1.0
+T: 1 4 : 126 : 126 : 1.0
+T: 1 5 : 126 : 126 : 1.0
+T: 2 0 : 126 : 110 : 0.9
+T: 2 0 : 126 : 126 : 0.1
+T: 2 1 : 126 : 126 : 1.0
+T: 2 2 : 126 : 94 : 0.9
+T: 2 2 : 126 : 126 : 0.1
+T: 2 3 : 126 : 126 : 1.0
+T: 2 4 : 126 : 126 : 1.0
+T: 2 5 : 126 : 126 : 1.0
+T: 3 0 : 126 : 110 : 0.09
+T: 3 0 : 126 : 126 : 0.01
+T: 3 0 : 126 : 238 : 0.81
+T: 3 0 : 126 : 254 : 0.09
+T: 3 1 : 126 : 126 : 0.1
+T: 3 1 : 126 : 254 : 0.9
+T: 3 2 : 126 : 94 : 0.09
+T: 3 2 : 126 : 126 : 0.01
+T: 3 2 : 126 : 222 : 0.81
+T: 3 2 : 126 : 254 : 0.09
+T: 3 3 : 126 : 126 : 0.1
+T: 3 3 : 126 : 254 : 0.9
+T: 3 4 : 126 : 126 : 0.1
+T: 3 4 : 126 : 254 : 0.9
+T: 3 5 : 126 : 126 : 0.1
+T: 3 5 : 126 : 254 : 0.9
+T: 4 0 : 126 : 110 : 0.9
+T: 4 0 : 126 : 126 : 0.1
+T: 4 1 : 126 : 126 : 1.0
+T: 4 2 : 126 : 94 : 0.9
+T: 4 2 : 126 : 126 : 0.1
+T: 4 3 : 126 : 126 : 1.0
+T: 4 4 : 126 : 126 : 1.0
+T: 4 5 : 126 : 126 : 1.0
+T: 5 0 : 126 : 110 : 0.9
+T: 5 0 : 126 : 126 : 0.1
+T: 5 1 : 126 : 126 : 1.0
+T: 5 2 : 126 : 94 : 0.9
+T: 5 2 : 126 : 126 : 0.1
+T: 5 3 : 126 : 126 : 1.0
+T: 5 4 : 126 : 126 : 1.0
+T: 5 5 : 126 : 126 : 1.0
+T: 0 0 : 127 : 47 : 0.81
+T: 0 0 : 127 : 63 : 0.09
+T: 0 0 : 127 : 111 : 0.09
+T: 0 0 : 127 : 127 : 0.01
+T: 0 1 : 127 : 63 : 0.9
+T: 0 1 : 127 : 127 : 0.1
+T: 0 2 : 127 : 31 : 0.81
+T: 0 2 : 127 : 63 : 0.09
+T: 0 2 : 127 : 95 : 0.09
+T: 0 2 : 127 : 127 : 0.01
+T: 0 3 : 127 : 63 : 0.9
+T: 0 3 : 127 : 127 : 0.1
+T: 0 4 : 127 : 0 : 1.0
+T: 0 5 : 127 : 0 : 1.0
+T: 1 0 : 127 : 111 : 0.9
+T: 1 0 : 127 : 127 : 0.1
+T: 1 1 : 127 : 127 : 1.0
+T: 1 2 : 127 : 95 : 0.9
+T: 1 2 : 127 : 127 : 0.1
+T: 1 3 : 127 : 127 : 1.0
+T: 1 4 : 127 : 0 : 1.0
+T: 1 5 : 127 : 0 : 1.0
+T: 2 0 : 127 : 111 : 0.9
+T: 2 0 : 127 : 127 : 0.1
+T: 2 1 : 127 : 127 : 1.0
+T: 2 2 : 127 : 95 : 0.9
+T: 2 2 : 127 : 127 : 0.1
+T: 2 3 : 127 : 127 : 1.0
+T: 2 4 : 127 : 0 : 1.0
+T: 2 5 : 127 : 0 : 1.0
+T: 3 0 : 127 : 111 : 0.09
+T: 3 0 : 127 : 127 : 0.01
+T: 3 0 : 127 : 239 : 0.81
+T: 3 0 : 127 : 255 : 0.09
+T: 3 1 : 127 : 127 : 0.1
+T: 3 1 : 127 : 255 : 0.9
+T: 3 2 : 127 : 95 : 0.09
+T: 3 2 : 127 : 127 : 0.01
+T: 3 2 : 127 : 223 : 0.81
+T: 3 2 : 127 : 255 : 0.09
+T: 3 3 : 127 : 127 : 0.1
+T: 3 3 : 127 : 255 : 0.9
+T: 3 4 : 127 : 0 : 1.0
+T: 3 5 : 127 : 0 : 1.0
+T: 4 0 : 127 : 0 : 1.0
+T: 4 1 : 127 : 0 : 1.0
+T: 4 2 : 127 : 0 : 1.0
+T: 4 3 : 127 : 0 : 1.0
+T: 4 4 : 127 : 0 : 1.0
+T: 4 5 : 127 : 0 : 1.0
+T: 5 0 : 127 : 0 : 1.0
+T: 5 1 : 127 : 0 : 1.0
+T: 5 2 : 127 : 0 : 1.0
+T: 5 3 : 127 : 0 : 1.0
+T: 5 4 : 127 : 0 : 1.0
+T: 5 5 : 127 : 0 : 1.0
+T: 0 0 : 128 : 128 : 1.0
+T: 0 1 : 128 : 128 : 0.1
+T: 0 1 : 128 : 144 : 0.9
+T: 0 2 : 128 : 128 : 1.0
+T: 0 3 : 128 : 128 : 0.1
+T: 0 3 : 128 : 160 : 0.9
+T: 0 4 : 128 : 129 : 1.0
+T: 0 5 : 128 : 129 : 1.0
+T: 1 0 : 128 : 128 : 0.1
+T: 1 0 : 128 : 192 : 0.9
+T: 1 1 : 128 : 128 : 0.01
+T: 1 1 : 128 : 144 : 0.09
+T: 1 1 : 128 : 192 : 0.09
+T: 1 1 : 128 : 208 : 0.81
+T: 1 2 : 128 : 128 : 0.1
+T: 1 2 : 128 : 192 : 0.9
+T: 1 3 : 128 : 128 : 0.01
+T: 1 3 : 128 : 160 : 0.09
+T: 1 3 : 128 : 192 : 0.09
+T: 1 3 : 128 : 224 : 0.81
+T: 1 4 : 128 : 129 : 0.1
+T: 1 4 : 128 : 193 : 0.9
+T: 1 5 : 128 : 129 : 0.1
+T: 1 5 : 128 : 193 : 0.9
+T: 2 0 : 128 : 0 : 0.9
+T: 2 0 : 128 : 128 : 0.1
+T: 2 1 : 128 : 0 : 0.09
+T: 2 1 : 128 : 16 : 0.81
+T: 2 1 : 128 : 128 : 0.01
+T: 2 1 : 128 : 144 : 0.09
+T: 2 2 : 128 : 0 : 0.9
+T: 2 2 : 128 : 128 : 0.1
+T: 2 3 : 128 : 0 : 0.09
+T: 2 3 : 128 : 32 : 0.81
+T: 2 3 : 128 : 128 : 0.01
+T: 2 3 : 128 : 160 : 0.09
+T: 2 4 : 128 : 1 : 0.9
+T: 2 4 : 128 : 129 : 0.1
+T: 2 5 : 128 : 1 : 0.9
+T: 2 5 : 128 : 129 : 0.1
+T: 3 0 : 128 : 128 : 1.0
+T: 3 1 : 128 : 128 : 0.1
+T: 3 1 : 128 : 144 : 0.9
+T: 3 2 : 128 : 128 : 1.0
+T: 3 3 : 128 : 128 : 0.1
+T: 3 3 : 128 : 160 : 0.9
+T: 3 4 : 128 : 129 : 1.0
+T: 3 5 : 128 : 129 : 1.0
+T: 4 0 : 128 : 132 : 1.0
+T: 4 1 : 128 : 132 : 0.1
+T: 4 1 : 128 : 148 : 0.9
+T: 4 2 : 128 : 132 : 1.0
+T: 4 3 : 128 : 132 : 0.1
+T: 4 3 : 128 : 164 : 0.9
+T: 4 4 : 128 : 133 : 1.0
+T: 4 5 : 128 : 133 : 1.0
+T: 5 0 : 128 : 132 : 1.0
+T: 5 1 : 128 : 132 : 0.1
+T: 5 1 : 128 : 148 : 0.9
+T: 5 2 : 128 : 132 : 1.0
+T: 5 3 : 128 : 132 : 0.1
+T: 5 3 : 128 : 164 : 0.9
+T: 5 4 : 128 : 133 : 1.0
+T: 5 5 : 128 : 133 : 1.0
+T: 0 0 : 129 : 129 : 1.0
+T: 0 1 : 129 : 129 : 0.1
+T: 0 1 : 129 : 145 : 0.9
+T: 0 2 : 129 : 129 : 1.0
+T: 0 3 : 129 : 129 : 0.1
+T: 0 3 : 129 : 161 : 0.9
+T: 0 4 : 129 : 129 : 1.0
+T: 0 5 : 129 : 129 : 1.0
+T: 1 0 : 129 : 129 : 0.1
+T: 1 0 : 129 : 193 : 0.9
+T: 1 1 : 129 : 129 : 0.01
+T: 1 1 : 129 : 145 : 0.09
+T: 1 1 : 129 : 193 : 0.09
+T: 1 1 : 129 : 209 : 0.81
+T: 1 2 : 129 : 129 : 0.1
+T: 1 2 : 129 : 193 : 0.9
+T: 1 3 : 129 : 129 : 0.01
+T: 1 3 : 129 : 161 : 0.09
+T: 1 3 : 129 : 193 : 0.09
+T: 1 3 : 129 : 225 : 0.81
+T: 1 4 : 129 : 129 : 0.1
+T: 1 4 : 129 : 193 : 0.9
+T: 1 5 : 129 : 129 : 0.1
+T: 1 5 : 129 : 193 : 0.9
+T: 2 0 : 129 : 1 : 0.9
+T: 2 0 : 129 : 129 : 0.1
+T: 2 1 : 129 : 1 : 0.09
+T: 2 1 : 129 : 17 : 0.81
+T: 2 1 : 129 : 129 : 0.01
+T: 2 1 : 129 : 145 : 0.09
+T: 2 2 : 129 : 1 : 0.9
+T: 2 2 : 129 : 129 : 0.1
+T: 2 3 : 129 : 1 : 0.09
+T: 2 3 : 129 : 33 : 0.81
+T: 2 3 : 129 : 129 : 0.01
+T: 2 3 : 129 : 161 : 0.09
+T: 2 4 : 129 : 1 : 0.9
+T: 2 4 : 129 : 129 : 0.1
+T: 2 5 : 129 : 1 : 0.9
+T: 2 5 : 129 : 129 : 0.1
+T: 3 0 : 129 : 129 : 1.0
+T: 3 1 : 129 : 129 : 0.1
+T: 3 1 : 129 : 145 : 0.9
+T: 3 2 : 129 : 129 : 1.0
+T: 3 3 : 129 : 129 : 0.1
+T: 3 3 : 129 : 161 : 0.9
+T: 3 4 : 129 : 129 : 1.0
+T: 3 5 : 129 : 129 : 1.0
+T: 4 0 : 129 : 133 : 1.0
+T: 4 1 : 129 : 133 : 0.1
+T: 4 1 : 129 : 149 : 0.9
+T: 4 2 : 129 : 133 : 1.0
+T: 4 3 : 129 : 133 : 0.1
+T: 4 3 : 129 : 165 : 0.9
+T: 4 4 : 129 : 133 : 1.0
+T: 4 5 : 129 : 133 : 1.0
+T: 5 0 : 129 : 133 : 1.0
+T: 5 1 : 129 : 133 : 0.1
+T: 5 1 : 129 : 149 : 0.9
+T: 5 2 : 129 : 133 : 1.0
+T: 5 3 : 129 : 133 : 0.1
+T: 5 3 : 129 : 165 : 0.9
+T: 5 4 : 129 : 133 : 1.0
+T: 5 5 : 129 : 133 : 1.0
+T: 0 0 : 130 : 130 : 1.0
+T: 0 1 : 130 : 130 : 0.1
+T: 0 1 : 130 : 146 : 0.9
+T: 0 2 : 130 : 130 : 1.0
+T: 0 3 : 130 : 130 : 0.1
+T: 0 3 : 130 : 162 : 0.9
+T: 0 4 : 130 : 131 : 1.0
+T: 0 5 : 130 : 131 : 1.0
+T: 1 0 : 130 : 130 : 0.1
+T: 1 0 : 130 : 194 : 0.9
+T: 1 1 : 130 : 130 : 0.01
+T: 1 1 : 130 : 146 : 0.09
+T: 1 1 : 130 : 194 : 0.09
+T: 1 1 : 130 : 210 : 0.81
+T: 1 2 : 130 : 130 : 0.1
+T: 1 2 : 130 : 194 : 0.9
+T: 1 3 : 130 : 130 : 0.01
+T: 1 3 : 130 : 162 : 0.09
+T: 1 3 : 130 : 194 : 0.09
+T: 1 3 : 130 : 226 : 0.81
+T: 1 4 : 130 : 131 : 0.1
+T: 1 4 : 130 : 195 : 0.9
+T: 1 5 : 130 : 131 : 0.1
+T: 1 5 : 130 : 195 : 0.9
+T: 2 0 : 130 : 2 : 0.9
+T: 2 0 : 130 : 130 : 0.1
+T: 2 1 : 130 : 2 : 0.09
+T: 2 1 : 130 : 18 : 0.81
+T: 2 1 : 130 : 130 : 0.01
+T: 2 1 : 130 : 146 : 0.09
+T: 2 2 : 130 : 2 : 0.9
+T: 2 2 : 130 : 130 : 0.1
+T: 2 3 : 130 : 2 : 0.09
+T: 2 3 : 130 : 34 : 0.81
+T: 2 3 : 130 : 130 : 0.01
+T: 2 3 : 130 : 162 : 0.09
+T: 2 4 : 130 : 3 : 0.9
+T: 2 4 : 130 : 131 : 0.1
+T: 2 5 : 130 : 3 : 0.9
+T: 2 5 : 130 : 131 : 0.1
+T: 3 0 : 130 : 130 : 1.0
+T: 3 1 : 130 : 130 : 0.1
+T: 3 1 : 130 : 146 : 0.9
+T: 3 2 : 130 : 130 : 1.0
+T: 3 3 : 130 : 130 : 0.1
+T: 3 3 : 130 : 162 : 0.9
+T: 3 4 : 130 : 131 : 1.0
+T: 3 5 : 130 : 131 : 1.0
+T: 4 0 : 130 : 134 : 1.0
+T: 4 1 : 130 : 134 : 0.1
+T: 4 1 : 130 : 150 : 0.9
+T: 4 2 : 130 : 134 : 1.0
+T: 4 3 : 130 : 134 : 0.1
+T: 4 3 : 130 : 166 : 0.9
+T: 4 4 : 130 : 135 : 1.0
+T: 4 5 : 130 : 135 : 1.0
+T: 5 0 : 130 : 134 : 1.0
+T: 5 1 : 130 : 134 : 0.1
+T: 5 1 : 130 : 150 : 0.9
+T: 5 2 : 130 : 134 : 1.0
+T: 5 3 : 130 : 134 : 0.1
+T: 5 3 : 130 : 166 : 0.9
+T: 5 4 : 130 : 135 : 1.0
+T: 5 5 : 130 : 135 : 1.0
+T: 0 0 : 131 : 131 : 1.0
+T: 0 1 : 131 : 131 : 0.1
+T: 0 1 : 131 : 147 : 0.9
+T: 0 2 : 131 : 131 : 1.0
+T: 0 3 : 131 : 131 : 0.1
+T: 0 3 : 131 : 163 : 0.9
+T: 0 4 : 131 : 131 : 1.0
+T: 0 5 : 131 : 131 : 1.0
+T: 1 0 : 131 : 131 : 0.1
+T: 1 0 : 131 : 195 : 0.9
+T: 1 1 : 131 : 131 : 0.01
+T: 1 1 : 131 : 147 : 0.09
+T: 1 1 : 131 : 195 : 0.09
+T: 1 1 : 131 : 211 : 0.81
+T: 1 2 : 131 : 131 : 0.1
+T: 1 2 : 131 : 195 : 0.9
+T: 1 3 : 131 : 131 : 0.01
+T: 1 3 : 131 : 163 : 0.09
+T: 1 3 : 131 : 195 : 0.09
+T: 1 3 : 131 : 227 : 0.81
+T: 1 4 : 131 : 131 : 0.1
+T: 1 4 : 131 : 195 : 0.9
+T: 1 5 : 131 : 131 : 0.1
+T: 1 5 : 131 : 195 : 0.9
+T: 2 0 : 131 : 3 : 0.9
+T: 2 0 : 131 : 131 : 0.1
+T: 2 1 : 131 : 3 : 0.09
+T: 2 1 : 131 : 19 : 0.81
+T: 2 1 : 131 : 131 : 0.01
+T: 2 1 : 131 : 147 : 0.09
+T: 2 2 : 131 : 3 : 0.9
+T: 2 2 : 131 : 131 : 0.1
+T: 2 3 : 131 : 3 : 0.09
+T: 2 3 : 131 : 35 : 0.81
+T: 2 3 : 131 : 131 : 0.01
+T: 2 3 : 131 : 163 : 0.09
+T: 2 4 : 131 : 3 : 0.9
+T: 2 4 : 131 : 131 : 0.1
+T: 2 5 : 131 : 3 : 0.9
+T: 2 5 : 131 : 131 : 0.1
+T: 3 0 : 131 : 131 : 1.0
+T: 3 1 : 131 : 131 : 0.1
+T: 3 1 : 131 : 147 : 0.9
+T: 3 2 : 131 : 131 : 1.0
+T: 3 3 : 131 : 131 : 0.1
+T: 3 3 : 131 : 163 : 0.9
+T: 3 4 : 131 : 131 : 1.0
+T: 3 5 : 131 : 131 : 1.0
+T: 4 0 : 131 : 135 : 1.0
+T: 4 1 : 131 : 135 : 0.1
+T: 4 1 : 131 : 151 : 0.9
+T: 4 2 : 131 : 135 : 1.0
+T: 4 3 : 131 : 135 : 0.1
+T: 4 3 : 131 : 167 : 0.9
+T: 4 4 : 131 : 135 : 1.0
+T: 4 5 : 131 : 135 : 1.0
+T: 5 0 : 131 : 135 : 1.0
+T: 5 1 : 131 : 135 : 0.1
+T: 5 1 : 131 : 151 : 0.9
+T: 5 2 : 131 : 135 : 1.0
+T: 5 3 : 131 : 135 : 0.1
+T: 5 3 : 131 : 167 : 0.9
+T: 5 4 : 131 : 135 : 1.0
+T: 5 5 : 131 : 135 : 1.0
+T: 0 0 : 132 : 132 : 1.0
+T: 0 1 : 132 : 132 : 0.1
+T: 0 1 : 132 : 148 : 0.9
+T: 0 2 : 132 : 132 : 1.0
+T: 0 3 : 132 : 132 : 0.1
+T: 0 3 : 132 : 164 : 0.9
+T: 0 4 : 132 : 133 : 1.0
+T: 0 5 : 132 : 133 : 1.0
+T: 1 0 : 132 : 132 : 0.1
+T: 1 0 : 132 : 196 : 0.9
+T: 1 1 : 132 : 132 : 0.01
+T: 1 1 : 132 : 148 : 0.09
+T: 1 1 : 132 : 196 : 0.09
+T: 1 1 : 132 : 212 : 0.81
+T: 1 2 : 132 : 132 : 0.1
+T: 1 2 : 132 : 196 : 0.9
+T: 1 3 : 132 : 132 : 0.01
+T: 1 3 : 132 : 164 : 0.09
+T: 1 3 : 132 : 196 : 0.09
+T: 1 3 : 132 : 228 : 0.81
+T: 1 4 : 132 : 133 : 0.1
+T: 1 4 : 132 : 197 : 0.9
+T: 1 5 : 132 : 133 : 0.1
+T: 1 5 : 132 : 197 : 0.9
+T: 2 0 : 132 : 4 : 0.9
+T: 2 0 : 132 : 132 : 0.1
+T: 2 1 : 132 : 4 : 0.09
+T: 2 1 : 132 : 20 : 0.81
+T: 2 1 : 132 : 132 : 0.01
+T: 2 1 : 132 : 148 : 0.09
+T: 2 2 : 132 : 4 : 0.9
+T: 2 2 : 132 : 132 : 0.1
+T: 2 3 : 132 : 4 : 0.09
+T: 2 3 : 132 : 36 : 0.81
+T: 2 3 : 132 : 132 : 0.01
+T: 2 3 : 132 : 164 : 0.09
+T: 2 4 : 132 : 5 : 0.9
+T: 2 4 : 132 : 133 : 0.1
+T: 2 5 : 132 : 5 : 0.9
+T: 2 5 : 132 : 133 : 0.1
+T: 3 0 : 132 : 132 : 1.0
+T: 3 1 : 132 : 132 : 0.1
+T: 3 1 : 132 : 148 : 0.9
+T: 3 2 : 132 : 132 : 1.0
+T: 3 3 : 132 : 132 : 0.1
+T: 3 3 : 132 : 164 : 0.9
+T: 3 4 : 132 : 133 : 1.0
+T: 3 5 : 132 : 133 : 1.0
+T: 4 0 : 132 : 132 : 1.0
+T: 4 1 : 132 : 132 : 0.1
+T: 4 1 : 132 : 148 : 0.9
+T: 4 2 : 132 : 132 : 1.0
+T: 4 3 : 132 : 132 : 0.1
+T: 4 3 : 132 : 164 : 0.9
+T: 4 4 : 132 : 133 : 1.0
+T: 4 5 : 132 : 133 : 1.0
+T: 5 0 : 132 : 132 : 1.0
+T: 5 1 : 132 : 132 : 0.1
+T: 5 1 : 132 : 148 : 0.9
+T: 5 2 : 132 : 132 : 1.0
+T: 5 3 : 132 : 132 : 0.1
+T: 5 3 : 132 : 164 : 0.9
+T: 5 4 : 132 : 133 : 1.0
+T: 5 5 : 132 : 133 : 1.0
+T: 0 0 : 133 : 133 : 1.0
+T: 0 1 : 133 : 133 : 0.1
+T: 0 1 : 133 : 149 : 0.9
+T: 0 2 : 133 : 133 : 1.0
+T: 0 3 : 133 : 133 : 0.1
+T: 0 3 : 133 : 165 : 0.9
+T: 0 4 : 133 : 133 : 1.0
+T: 0 5 : 133 : 133 : 1.0
+T: 1 0 : 133 : 133 : 0.1
+T: 1 0 : 133 : 197 : 0.9
+T: 1 1 : 133 : 133 : 0.01
+T: 1 1 : 133 : 149 : 0.09
+T: 1 1 : 133 : 197 : 0.09
+T: 1 1 : 133 : 213 : 0.81
+T: 1 2 : 133 : 133 : 0.1
+T: 1 2 : 133 : 197 : 0.9
+T: 1 3 : 133 : 133 : 0.01
+T: 1 3 : 133 : 165 : 0.09
+T: 1 3 : 133 : 197 : 0.09
+T: 1 3 : 133 : 229 : 0.81
+T: 1 4 : 133 : 133 : 0.1
+T: 1 4 : 133 : 197 : 0.9
+T: 1 5 : 133 : 133 : 0.1
+T: 1 5 : 133 : 197 : 0.9
+T: 2 0 : 133 : 5 : 0.9
+T: 2 0 : 133 : 133 : 0.1
+T: 2 1 : 133 : 5 : 0.09
+T: 2 1 : 133 : 21 : 0.81
+T: 2 1 : 133 : 133 : 0.01
+T: 2 1 : 133 : 149 : 0.09
+T: 2 2 : 133 : 5 : 0.9
+T: 2 2 : 133 : 133 : 0.1
+T: 2 3 : 133 : 5 : 0.09
+T: 2 3 : 133 : 37 : 0.81
+T: 2 3 : 133 : 133 : 0.01
+T: 2 3 : 133 : 165 : 0.09
+T: 2 4 : 133 : 5 : 0.9
+T: 2 4 : 133 : 133 : 0.1
+T: 2 5 : 133 : 5 : 0.9
+T: 2 5 : 133 : 133 : 0.1
+T: 3 0 : 133 : 133 : 1.0
+T: 3 1 : 133 : 133 : 0.1
+T: 3 1 : 133 : 149 : 0.9
+T: 3 2 : 133 : 133 : 1.0
+T: 3 3 : 133 : 133 : 0.1
+T: 3 3 : 133 : 165 : 0.9
+T: 3 4 : 133 : 133 : 1.0
+T: 3 5 : 133 : 133 : 1.0
+T: 4 0 : 133 : 133 : 1.0
+T: 4 1 : 133 : 133 : 0.1
+T: 4 1 : 133 : 149 : 0.9
+T: 4 2 : 133 : 133 : 1.0
+T: 4 3 : 133 : 133 : 0.1
+T: 4 3 : 133 : 165 : 0.9
+T: 4 4 : 133 : 133 : 1.0
+T: 4 5 : 133 : 133 : 1.0
+T: 5 0 : 133 : 133 : 1.0
+T: 5 1 : 133 : 133 : 0.1
+T: 5 1 : 133 : 149 : 0.9
+T: 5 2 : 133 : 133 : 1.0
+T: 5 3 : 133 : 133 : 0.1
+T: 5 3 : 133 : 165 : 0.9
+T: 5 4 : 133 : 133 : 1.0
+T: 5 5 : 133 : 133 : 1.0
+T: 0 0 : 134 : 134 : 1.0
+T: 0 1 : 134 : 134 : 0.1
+T: 0 1 : 134 : 150 : 0.9
+T: 0 2 : 134 : 134 : 1.0
+T: 0 3 : 134 : 134 : 0.1
+T: 0 3 : 134 : 166 : 0.9
+T: 0 4 : 134 : 135 : 1.0
+T: 0 5 : 134 : 135 : 1.0
+T: 1 0 : 134 : 134 : 0.1
+T: 1 0 : 134 : 198 : 0.9
+T: 1 1 : 134 : 134 : 0.01
+T: 1 1 : 134 : 150 : 0.09
+T: 1 1 : 134 : 198 : 0.09
+T: 1 1 : 134 : 214 : 0.81
+T: 1 2 : 134 : 134 : 0.1
+T: 1 2 : 134 : 198 : 0.9
+T: 1 3 : 134 : 134 : 0.01
+T: 1 3 : 134 : 166 : 0.09
+T: 1 3 : 134 : 198 : 0.09
+T: 1 3 : 134 : 230 : 0.81
+T: 1 4 : 134 : 135 : 0.1
+T: 1 4 : 134 : 199 : 0.9
+T: 1 5 : 134 : 135 : 0.1
+T: 1 5 : 134 : 199 : 0.9
+T: 2 0 : 134 : 6 : 0.9
+T: 2 0 : 134 : 134 : 0.1
+T: 2 1 : 134 : 6 : 0.09
+T: 2 1 : 134 : 22 : 0.81
+T: 2 1 : 134 : 134 : 0.01
+T: 2 1 : 134 : 150 : 0.09
+T: 2 2 : 134 : 6 : 0.9
+T: 2 2 : 134 : 134 : 0.1
+T: 2 3 : 134 : 6 : 0.09
+T: 2 3 : 134 : 38 : 0.81
+T: 2 3 : 134 : 134 : 0.01
+T: 2 3 : 134 : 166 : 0.09
+T: 2 4 : 134 : 7 : 0.9
+T: 2 4 : 134 : 135 : 0.1
+T: 2 5 : 134 : 7 : 0.9
+T: 2 5 : 134 : 135 : 0.1
+T: 3 0 : 134 : 134 : 1.0
+T: 3 1 : 134 : 134 : 0.1
+T: 3 1 : 134 : 150 : 0.9
+T: 3 2 : 134 : 134 : 1.0
+T: 3 3 : 134 : 134 : 0.1
+T: 3 3 : 134 : 166 : 0.9
+T: 3 4 : 134 : 135 : 1.0
+T: 3 5 : 134 : 135 : 1.0
+T: 4 0 : 134 : 134 : 1.0
+T: 4 1 : 134 : 134 : 0.1
+T: 4 1 : 134 : 150 : 0.9
+T: 4 2 : 134 : 134 : 1.0
+T: 4 3 : 134 : 134 : 0.1
+T: 4 3 : 134 : 166 : 0.9
+T: 4 4 : 134 : 135 : 1.0
+T: 4 5 : 134 : 135 : 1.0
+T: 5 0 : 134 : 134 : 1.0
+T: 5 1 : 134 : 134 : 0.1
+T: 5 1 : 134 : 150 : 0.9
+T: 5 2 : 134 : 134 : 1.0
+T: 5 3 : 134 : 134 : 0.1
+T: 5 3 : 134 : 166 : 0.9
+T: 5 4 : 134 : 135 : 1.0
+T: 5 5 : 134 : 135 : 1.0
+T: 0 0 : 135 : 135 : 1.0
+T: 0 1 : 135 : 135 : 0.1
+T: 0 1 : 135 : 151 : 0.9
+T: 0 2 : 135 : 135 : 1.0
+T: 0 3 : 135 : 135 : 0.1
+T: 0 3 : 135 : 167 : 0.9
+T: 0 4 : 135 : 135 : 1.0
+T: 0 5 : 135 : 135 : 1.0
+T: 1 0 : 135 : 135 : 0.1
+T: 1 0 : 135 : 199 : 0.9
+T: 1 1 : 135 : 135 : 0.01
+T: 1 1 : 135 : 151 : 0.09
+T: 1 1 : 135 : 199 : 0.09
+T: 1 1 : 135 : 215 : 0.81
+T: 1 2 : 135 : 135 : 0.1
+T: 1 2 : 135 : 199 : 0.9
+T: 1 3 : 135 : 135 : 0.01
+T: 1 3 : 135 : 167 : 0.09
+T: 1 3 : 135 : 199 : 0.09
+T: 1 3 : 135 : 231 : 0.81
+T: 1 4 : 135 : 135 : 0.1
+T: 1 4 : 135 : 199 : 0.9
+T: 1 5 : 135 : 135 : 0.1
+T: 1 5 : 135 : 199 : 0.9
+T: 2 0 : 135 : 7 : 0.9
+T: 2 0 : 135 : 135 : 0.1
+T: 2 1 : 135 : 7 : 0.09
+T: 2 1 : 135 : 23 : 0.81
+T: 2 1 : 135 : 135 : 0.01
+T: 2 1 : 135 : 151 : 0.09
+T: 2 2 : 135 : 7 : 0.9
+T: 2 2 : 135 : 135 : 0.1
+T: 2 3 : 135 : 7 : 0.09
+T: 2 3 : 135 : 39 : 0.81
+T: 2 3 : 135 : 135 : 0.01
+T: 2 3 : 135 : 167 : 0.09
+T: 2 4 : 135 : 7 : 0.9
+T: 2 4 : 135 : 135 : 0.1
+T: 2 5 : 135 : 7 : 0.9
+T: 2 5 : 135 : 135 : 0.1
+T: 3 0 : 135 : 135 : 1.0
+T: 3 1 : 135 : 135 : 0.1
+T: 3 1 : 135 : 151 : 0.9
+T: 3 2 : 135 : 135 : 1.0
+T: 3 3 : 135 : 135 : 0.1
+T: 3 3 : 135 : 167 : 0.9
+T: 3 4 : 135 : 135 : 1.0
+T: 3 5 : 135 : 135 : 1.0
+T: 4 0 : 135 : 135 : 1.0
+T: 4 1 : 135 : 135 : 0.1
+T: 4 1 : 135 : 151 : 0.9
+T: 4 2 : 135 : 135 : 1.0
+T: 4 3 : 135 : 135 : 0.1
+T: 4 3 : 135 : 167 : 0.9
+T: 4 4 : 135 : 135 : 1.0
+T: 4 5 : 135 : 135 : 1.0
+T: 5 0 : 135 : 135 : 1.0
+T: 5 1 : 135 : 135 : 0.1
+T: 5 1 : 135 : 151 : 0.9
+T: 5 2 : 135 : 135 : 1.0
+T: 5 3 : 135 : 135 : 0.1
+T: 5 3 : 135 : 167 : 0.9
+T: 5 4 : 135 : 135 : 1.0
+T: 5 5 : 135 : 135 : 1.0
+T: 0 0 : 136 : 136 : 1.0
+T: 0 1 : 136 : 136 : 0.1
+T: 0 1 : 136 : 152 : 0.9
+T: 0 2 : 136 : 136 : 1.0
+T: 0 3 : 136 : 136 : 0.1
+T: 0 3 : 136 : 168 : 0.9
+T: 0 4 : 136 : 137 : 1.0
+T: 0 5 : 136 : 137 : 1.0
+T: 1 0 : 136 : 136 : 0.1
+T: 1 0 : 136 : 200 : 0.9
+T: 1 1 : 136 : 136 : 0.01
+T: 1 1 : 136 : 152 : 0.09
+T: 1 1 : 136 : 200 : 0.09
+T: 1 1 : 136 : 216 : 0.81
+T: 1 2 : 136 : 136 : 0.1
+T: 1 2 : 136 : 200 : 0.9
+T: 1 3 : 136 : 136 : 0.01
+T: 1 3 : 136 : 168 : 0.09
+T: 1 3 : 136 : 200 : 0.09
+T: 1 3 : 136 : 232 : 0.81
+T: 1 4 : 136 : 137 : 0.1
+T: 1 4 : 136 : 201 : 0.9
+T: 1 5 : 136 : 137 : 0.1
+T: 1 5 : 136 : 201 : 0.9
+T: 2 0 : 136 : 8 : 0.9
+T: 2 0 : 136 : 136 : 0.1
+T: 2 1 : 136 : 8 : 0.09
+T: 2 1 : 136 : 24 : 0.81
+T: 2 1 : 136 : 136 : 0.01
+T: 2 1 : 136 : 152 : 0.09
+T: 2 2 : 136 : 8 : 0.9
+T: 2 2 : 136 : 136 : 0.1
+T: 2 3 : 136 : 8 : 0.09
+T: 2 3 : 136 : 40 : 0.81
+T: 2 3 : 136 : 136 : 0.01
+T: 2 3 : 136 : 168 : 0.09
+T: 2 4 : 136 : 9 : 0.9
+T: 2 4 : 136 : 137 : 0.1
+T: 2 5 : 136 : 9 : 0.9
+T: 2 5 : 136 : 137 : 0.1
+T: 3 0 : 136 : 136 : 1.0
+T: 3 1 : 136 : 136 : 0.1
+T: 3 1 : 136 : 152 : 0.9
+T: 3 2 : 136 : 136 : 1.0
+T: 3 3 : 136 : 136 : 0.1
+T: 3 3 : 136 : 168 : 0.9
+T: 3 4 : 136 : 137 : 1.0
+T: 3 5 : 136 : 137 : 1.0
+T: 4 0 : 136 : 140 : 1.0
+T: 4 1 : 136 : 140 : 0.1
+T: 4 1 : 136 : 156 : 0.9
+T: 4 2 : 136 : 140 : 1.0
+T: 4 3 : 136 : 140 : 0.1
+T: 4 3 : 136 : 172 : 0.9
+T: 4 4 : 136 : 141 : 1.0
+T: 4 5 : 136 : 141 : 1.0
+T: 5 0 : 136 : 140 : 1.0
+T: 5 1 : 136 : 140 : 0.1
+T: 5 1 : 136 : 156 : 0.9
+T: 5 2 : 136 : 140 : 1.0
+T: 5 3 : 136 : 140 : 0.1
+T: 5 3 : 136 : 172 : 0.9
+T: 5 4 : 136 : 141 : 1.0
+T: 5 5 : 136 : 141 : 1.0
+T: 0 0 : 137 : 137 : 1.0
+T: 0 1 : 137 : 137 : 0.1
+T: 0 1 : 137 : 153 : 0.9
+T: 0 2 : 137 : 137 : 1.0
+T: 0 3 : 137 : 137 : 0.1
+T: 0 3 : 137 : 169 : 0.9
+T: 0 4 : 137 : 137 : 1.0
+T: 0 5 : 137 : 137 : 1.0
+T: 1 0 : 137 : 137 : 0.1
+T: 1 0 : 137 : 201 : 0.9
+T: 1 1 : 137 : 137 : 0.01
+T: 1 1 : 137 : 153 : 0.09
+T: 1 1 : 137 : 201 : 0.09
+T: 1 1 : 137 : 217 : 0.81
+T: 1 2 : 137 : 137 : 0.1
+T: 1 2 : 137 : 201 : 0.9
+T: 1 3 : 137 : 137 : 0.01
+T: 1 3 : 137 : 169 : 0.09
+T: 1 3 : 137 : 201 : 0.09
+T: 1 3 : 137 : 233 : 0.81
+T: 1 4 : 137 : 137 : 0.1
+T: 1 4 : 137 : 201 : 0.9
+T: 1 5 : 137 : 137 : 0.1
+T: 1 5 : 137 : 201 : 0.9
+T: 2 0 : 137 : 9 : 0.9
+T: 2 0 : 137 : 137 : 0.1
+T: 2 1 : 137 : 9 : 0.09
+T: 2 1 : 137 : 25 : 0.81
+T: 2 1 : 137 : 137 : 0.01
+T: 2 1 : 137 : 153 : 0.09
+T: 2 2 : 137 : 9 : 0.9
+T: 2 2 : 137 : 137 : 0.1
+T: 2 3 : 137 : 9 : 0.09
+T: 2 3 : 137 : 41 : 0.81
+T: 2 3 : 137 : 137 : 0.01
+T: 2 3 : 137 : 169 : 0.09
+T: 2 4 : 137 : 9 : 0.9
+T: 2 4 : 137 : 137 : 0.1
+T: 2 5 : 137 : 9 : 0.9
+T: 2 5 : 137 : 137 : 0.1
+T: 3 0 : 137 : 137 : 1.0
+T: 3 1 : 137 : 137 : 0.1
+T: 3 1 : 137 : 153 : 0.9
+T: 3 2 : 137 : 137 : 1.0
+T: 3 3 : 137 : 137 : 0.1
+T: 3 3 : 137 : 169 : 0.9
+T: 3 4 : 137 : 137 : 1.0
+T: 3 5 : 137 : 137 : 1.0
+T: 4 0 : 137 : 141 : 1.0
+T: 4 1 : 137 : 141 : 0.1
+T: 4 1 : 137 : 157 : 0.9
+T: 4 2 : 137 : 141 : 1.0
+T: 4 3 : 137 : 141 : 0.1
+T: 4 3 : 137 : 173 : 0.9
+T: 4 4 : 137 : 141 : 1.0
+T: 4 5 : 137 : 141 : 1.0
+T: 5 0 : 137 : 141 : 1.0
+T: 5 1 : 137 : 141 : 0.1
+T: 5 1 : 137 : 157 : 0.9
+T: 5 2 : 137 : 141 : 1.0
+T: 5 3 : 137 : 141 : 0.1
+T: 5 3 : 137 : 173 : 0.9
+T: 5 4 : 137 : 141 : 1.0
+T: 5 5 : 137 : 141 : 1.0
+T: 0 0 : 138 : 138 : 1.0
+T: 0 1 : 138 : 138 : 0.1
+T: 0 1 : 138 : 154 : 0.9
+T: 0 2 : 138 : 138 : 1.0
+T: 0 3 : 138 : 138 : 0.1
+T: 0 3 : 138 : 170 : 0.9
+T: 0 4 : 138 : 139 : 1.0
+T: 0 5 : 138 : 139 : 1.0
+T: 1 0 : 138 : 138 : 0.1
+T: 1 0 : 138 : 202 : 0.9
+T: 1 1 : 138 : 138 : 0.01
+T: 1 1 : 138 : 154 : 0.09
+T: 1 1 : 138 : 202 : 0.09
+T: 1 1 : 138 : 218 : 0.81
+T: 1 2 : 138 : 138 : 0.1
+T: 1 2 : 138 : 202 : 0.9
+T: 1 3 : 138 : 138 : 0.01
+T: 1 3 : 138 : 170 : 0.09
+T: 1 3 : 138 : 202 : 0.09
+T: 1 3 : 138 : 234 : 0.81
+T: 1 4 : 138 : 139 : 0.1
+T: 1 4 : 138 : 203 : 0.9
+T: 1 5 : 138 : 139 : 0.1
+T: 1 5 : 138 : 203 : 0.9
+T: 2 0 : 138 : 10 : 0.9
+T: 2 0 : 138 : 138 : 0.1
+T: 2 1 : 138 : 10 : 0.09
+T: 2 1 : 138 : 26 : 0.81
+T: 2 1 : 138 : 138 : 0.01
+T: 2 1 : 138 : 154 : 0.09
+T: 2 2 : 138 : 10 : 0.9
+T: 2 2 : 138 : 138 : 0.1
+T: 2 3 : 138 : 10 : 0.09
+T: 2 3 : 138 : 42 : 0.81
+T: 2 3 : 138 : 138 : 0.01
+T: 2 3 : 138 : 170 : 0.09
+T: 2 4 : 138 : 11 : 0.9
+T: 2 4 : 138 : 139 : 0.1
+T: 2 5 : 138 : 11 : 0.9
+T: 2 5 : 138 : 139 : 0.1
+T: 3 0 : 138 : 138 : 1.0
+T: 3 1 : 138 : 138 : 0.1
+T: 3 1 : 138 : 154 : 0.9
+T: 3 2 : 138 : 138 : 1.0
+T: 3 3 : 138 : 138 : 0.1
+T: 3 3 : 138 : 170 : 0.9
+T: 3 4 : 138 : 139 : 1.0
+T: 3 5 : 138 : 139 : 1.0
+T: 4 0 : 138 : 142 : 1.0
+T: 4 1 : 138 : 142 : 0.1
+T: 4 1 : 138 : 158 : 0.9
+T: 4 2 : 138 : 142 : 1.0
+T: 4 3 : 138 : 142 : 0.1
+T: 4 3 : 138 : 174 : 0.9
+T: 4 4 : 138 : 0 : 1.0
+T: 4 5 : 138 : 0 : 1.0
+T: 5 0 : 138 : 142 : 1.0
+T: 5 1 : 138 : 142 : 0.1
+T: 5 1 : 138 : 158 : 0.9
+T: 5 2 : 138 : 142 : 1.0
+T: 5 3 : 138 : 142 : 0.1
+T: 5 3 : 138 : 174 : 0.9
+T: 5 4 : 138 : 0 : 1.0
+T: 5 5 : 138 : 0 : 1.0
+T: 0 0 : 139 : 139 : 1.0
+T: 0 1 : 139 : 139 : 0.1
+T: 0 1 : 139 : 155 : 0.9
+T: 0 2 : 139 : 139 : 1.0
+T: 0 3 : 139 : 139 : 0.1
+T: 0 3 : 139 : 171 : 0.9
+T: 0 4 : 139 : 139 : 1.0
+T: 0 5 : 139 : 139 : 1.0
+T: 1 0 : 139 : 139 : 0.1
+T: 1 0 : 139 : 203 : 0.9
+T: 1 1 : 139 : 139 : 0.01
+T: 1 1 : 139 : 155 : 0.09
+T: 1 1 : 139 : 203 : 0.09
+T: 1 1 : 139 : 219 : 0.81
+T: 1 2 : 139 : 139 : 0.1
+T: 1 2 : 139 : 203 : 0.9
+T: 1 3 : 139 : 139 : 0.01
+T: 1 3 : 139 : 171 : 0.09
+T: 1 3 : 139 : 203 : 0.09
+T: 1 3 : 139 : 235 : 0.81
+T: 1 4 : 139 : 139 : 0.1
+T: 1 4 : 139 : 203 : 0.9
+T: 1 5 : 139 : 139 : 0.1
+T: 1 5 : 139 : 203 : 0.9
+T: 2 0 : 139 : 11 : 0.9
+T: 2 0 : 139 : 139 : 0.1
+T: 2 1 : 139 : 11 : 0.09
+T: 2 1 : 139 : 27 : 0.81
+T: 2 1 : 139 : 139 : 0.01
+T: 2 1 : 139 : 155 : 0.09
+T: 2 2 : 139 : 11 : 0.9
+T: 2 2 : 139 : 139 : 0.1
+T: 2 3 : 139 : 11 : 0.09
+T: 2 3 : 139 : 43 : 0.81
+T: 2 3 : 139 : 139 : 0.01
+T: 2 3 : 139 : 171 : 0.09
+T: 2 4 : 139 : 11 : 0.9
+T: 2 4 : 139 : 139 : 0.1
+T: 2 5 : 139 : 11 : 0.9
+T: 2 5 : 139 : 139 : 0.1
+T: 3 0 : 139 : 139 : 1.0
+T: 3 1 : 139 : 139 : 0.1
+T: 3 1 : 139 : 155 : 0.9
+T: 3 2 : 139 : 139 : 1.0
+T: 3 3 : 139 : 139 : 0.1
+T: 3 3 : 139 : 171 : 0.9
+T: 3 4 : 139 : 139 : 1.0
+T: 3 5 : 139 : 139 : 1.0
+T: 4 0 : 139 : 0 : 1.0
+T: 4 1 : 139 : 0 : 1.0
+T: 4 2 : 139 : 0 : 1.0
+T: 4 3 : 139 : 0 : 1.0
+T: 4 4 : 139 : 0 : 1.0
+T: 4 5 : 139 : 0 : 1.0
+T: 5 0 : 139 : 0 : 1.0
+T: 5 1 : 139 : 0 : 1.0
+T: 5 2 : 139 : 0 : 1.0
+T: 5 3 : 139 : 0 : 1.0
+T: 5 4 : 139 : 0 : 1.0
+T: 5 5 : 139 : 0 : 1.0
+T: 0 0 : 140 : 140 : 1.0
+T: 0 1 : 140 : 140 : 0.1
+T: 0 1 : 140 : 156 : 0.9
+T: 0 2 : 140 : 140 : 1.0
+T: 0 3 : 140 : 140 : 0.1
+T: 0 3 : 140 : 172 : 0.9
+T: 0 4 : 140 : 141 : 1.0
+T: 0 5 : 140 : 141 : 1.0
+T: 1 0 : 140 : 140 : 0.1
+T: 1 0 : 140 : 204 : 0.9
+T: 1 1 : 140 : 140 : 0.01
+T: 1 1 : 140 : 156 : 0.09
+T: 1 1 : 140 : 204 : 0.09
+T: 1 1 : 140 : 220 : 0.81
+T: 1 2 : 140 : 140 : 0.1
+T: 1 2 : 140 : 204 : 0.9
+T: 1 3 : 140 : 140 : 0.01
+T: 1 3 : 140 : 172 : 0.09
+T: 1 3 : 140 : 204 : 0.09
+T: 1 3 : 140 : 236 : 0.81
+T: 1 4 : 140 : 141 : 0.1
+T: 1 4 : 140 : 205 : 0.9
+T: 1 5 : 140 : 141 : 0.1
+T: 1 5 : 140 : 205 : 0.9
+T: 2 0 : 140 : 12 : 0.9
+T: 2 0 : 140 : 140 : 0.1
+T: 2 1 : 140 : 12 : 0.09
+T: 2 1 : 140 : 28 : 0.81
+T: 2 1 : 140 : 140 : 0.01
+T: 2 1 : 140 : 156 : 0.09
+T: 2 2 : 140 : 12 : 0.9
+T: 2 2 : 140 : 140 : 0.1
+T: 2 3 : 140 : 12 : 0.09
+T: 2 3 : 140 : 44 : 0.81
+T: 2 3 : 140 : 140 : 0.01
+T: 2 3 : 140 : 172 : 0.09
+T: 2 4 : 140 : 13 : 0.9
+T: 2 4 : 140 : 141 : 0.1
+T: 2 5 : 140 : 13 : 0.9
+T: 2 5 : 140 : 141 : 0.1
+T: 3 0 : 140 : 140 : 1.0
+T: 3 1 : 140 : 140 : 0.1
+T: 3 1 : 140 : 156 : 0.9
+T: 3 2 : 140 : 140 : 1.0
+T: 3 3 : 140 : 140 : 0.1
+T: 3 3 : 140 : 172 : 0.9
+T: 3 4 : 140 : 141 : 1.0
+T: 3 5 : 140 : 141 : 1.0
+T: 4 0 : 140 : 140 : 1.0
+T: 4 1 : 140 : 140 : 0.1
+T: 4 1 : 140 : 156 : 0.9
+T: 4 2 : 140 : 140 : 1.0
+T: 4 3 : 140 : 140 : 0.1
+T: 4 3 : 140 : 172 : 0.9
+T: 4 4 : 140 : 141 : 1.0
+T: 4 5 : 140 : 141 : 1.0
+T: 5 0 : 140 : 140 : 1.0
+T: 5 1 : 140 : 140 : 0.1
+T: 5 1 : 140 : 156 : 0.9
+T: 5 2 : 140 : 140 : 1.0
+T: 5 3 : 140 : 140 : 0.1
+T: 5 3 : 140 : 172 : 0.9
+T: 5 4 : 140 : 141 : 1.0
+T: 5 5 : 140 : 141 : 1.0
+T: 0 0 : 141 : 141 : 1.0
+T: 0 1 : 141 : 141 : 0.1
+T: 0 1 : 141 : 157 : 0.9
+T: 0 2 : 141 : 141 : 1.0
+T: 0 3 : 141 : 141 : 0.1
+T: 0 3 : 141 : 173 : 0.9
+T: 0 4 : 141 : 141 : 1.0
+T: 0 5 : 141 : 141 : 1.0
+T: 1 0 : 141 : 141 : 0.1
+T: 1 0 : 141 : 205 : 0.9
+T: 1 1 : 141 : 141 : 0.01
+T: 1 1 : 141 : 157 : 0.09
+T: 1 1 : 141 : 205 : 0.09
+T: 1 1 : 141 : 221 : 0.81
+T: 1 2 : 141 : 141 : 0.1
+T: 1 2 : 141 : 205 : 0.9
+T: 1 3 : 141 : 141 : 0.01
+T: 1 3 : 141 : 173 : 0.09
+T: 1 3 : 141 : 205 : 0.09
+T: 1 3 : 141 : 237 : 0.81
+T: 1 4 : 141 : 141 : 0.1
+T: 1 4 : 141 : 205 : 0.9
+T: 1 5 : 141 : 141 : 0.1
+T: 1 5 : 141 : 205 : 0.9
+T: 2 0 : 141 : 13 : 0.9
+T: 2 0 : 141 : 141 : 0.1
+T: 2 1 : 141 : 13 : 0.09
+T: 2 1 : 141 : 29 : 0.81
+T: 2 1 : 141 : 141 : 0.01
+T: 2 1 : 141 : 157 : 0.09
+T: 2 2 : 141 : 13 : 0.9
+T: 2 2 : 141 : 141 : 0.1
+T: 2 3 : 141 : 13 : 0.09
+T: 2 3 : 141 : 45 : 0.81
+T: 2 3 : 141 : 141 : 0.01
+T: 2 3 : 141 : 173 : 0.09
+T: 2 4 : 141 : 13 : 0.9
+T: 2 4 : 141 : 141 : 0.1
+T: 2 5 : 141 : 13 : 0.9
+T: 2 5 : 141 : 141 : 0.1
+T: 3 0 : 141 : 141 : 1.0
+T: 3 1 : 141 : 141 : 0.1
+T: 3 1 : 141 : 157 : 0.9
+T: 3 2 : 141 : 141 : 1.0
+T: 3 3 : 141 : 141 : 0.1
+T: 3 3 : 141 : 173 : 0.9
+T: 3 4 : 141 : 141 : 1.0
+T: 3 5 : 141 : 141 : 1.0
+T: 4 0 : 141 : 141 : 1.0
+T: 4 1 : 141 : 141 : 0.1
+T: 4 1 : 141 : 157 : 0.9
+T: 4 2 : 141 : 141 : 1.0
+T: 4 3 : 141 : 141 : 0.1
+T: 4 3 : 141 : 173 : 0.9
+T: 4 4 : 141 : 141 : 1.0
+T: 4 5 : 141 : 141 : 1.0
+T: 5 0 : 141 : 141 : 1.0
+T: 5 1 : 141 : 141 : 0.1
+T: 5 1 : 141 : 157 : 0.9
+T: 5 2 : 141 : 141 : 1.0
+T: 5 3 : 141 : 141 : 0.1
+T: 5 3 : 141 : 173 : 0.9
+T: 5 4 : 141 : 141 : 1.0
+T: 5 5 : 141 : 141 : 1.0
+T: 0 0 : 142 : 142 : 1.0
+T: 0 1 : 142 : 142 : 0.1
+T: 0 1 : 142 : 158 : 0.9
+T: 0 2 : 142 : 142 : 1.0
+T: 0 3 : 142 : 142 : 0.1
+T: 0 3 : 142 : 174 : 0.9
+T: 0 4 : 142 : 0 : 1.0
+T: 0 5 : 142 : 0 : 1.0
+T: 1 0 : 142 : 142 : 0.1
+T: 1 0 : 142 : 206 : 0.9
+T: 1 1 : 142 : 142 : 0.01
+T: 1 1 : 142 : 158 : 0.09
+T: 1 1 : 142 : 206 : 0.09
+T: 1 1 : 142 : 222 : 0.81
+T: 1 2 : 142 : 142 : 0.1
+T: 1 2 : 142 : 206 : 0.9
+T: 1 3 : 142 : 142 : 0.01
+T: 1 3 : 142 : 174 : 0.09
+T: 1 3 : 142 : 206 : 0.09
+T: 1 3 : 142 : 238 : 0.81
+T: 1 4 : 142 : 0 : 1.0
+T: 1 5 : 142 : 0 : 1.0
+T: 2 0 : 142 : 14 : 0.9
+T: 2 0 : 142 : 142 : 0.1
+T: 2 1 : 142 : 14 : 0.09
+T: 2 1 : 142 : 30 : 0.81
+T: 2 1 : 142 : 142 : 0.01
+T: 2 1 : 142 : 158 : 0.09
+T: 2 2 : 142 : 14 : 0.9
+T: 2 2 : 142 : 142 : 0.1
+T: 2 3 : 142 : 14 : 0.09
+T: 2 3 : 142 : 46 : 0.81
+T: 2 3 : 142 : 142 : 0.01
+T: 2 3 : 142 : 174 : 0.09
+T: 2 4 : 142 : 0 : 1.0
+T: 2 5 : 142 : 0 : 1.0
+T: 3 0 : 142 : 142 : 1.0
+T: 3 1 : 142 : 142 : 0.1
+T: 3 1 : 142 : 158 : 0.9
+T: 3 2 : 142 : 142 : 1.0
+T: 3 3 : 142 : 142 : 0.1
+T: 3 3 : 142 : 174 : 0.9
+T: 3 4 : 142 : 0 : 1.0
+T: 3 5 : 142 : 0 : 1.0
+T: 4 0 : 142 : 142 : 1.0
+T: 4 1 : 142 : 142 : 0.1
+T: 4 1 : 142 : 158 : 0.9
+T: 4 2 : 142 : 142 : 1.0
+T: 4 3 : 142 : 142 : 0.1
+T: 4 3 : 142 : 174 : 0.9
+T: 4 4 : 142 : 0 : 1.0
+T: 4 5 : 142 : 0 : 1.0
+T: 5 0 : 142 : 142 : 1.0
+T: 5 1 : 142 : 142 : 0.1
+T: 5 1 : 142 : 158 : 0.9
+T: 5 2 : 142 : 142 : 1.0
+T: 5 3 : 142 : 142 : 0.1
+T: 5 3 : 142 : 174 : 0.9
+T: 5 4 : 142 : 0 : 1.0
+T: 5 5 : 142 : 0 : 1.0
+T: 0 0 : 143 : 143 : 1.0
+T: 0 1 : 143 : 143 : 0.1
+T: 0 1 : 143 : 159 : 0.9
+T: 0 2 : 143 : 143 : 1.0
+T: 0 3 : 143 : 143 : 0.1
+T: 0 3 : 143 : 175 : 0.9
+T: 0 4 : 143 : 0 : 1.0
+T: 0 5 : 143 : 0 : 1.0
+T: 1 0 : 143 : 143 : 0.1
+T: 1 0 : 143 : 207 : 0.9
+T: 1 1 : 143 : 143 : 0.01
+T: 1 1 : 143 : 159 : 0.09
+T: 1 1 : 143 : 207 : 0.09
+T: 1 1 : 143 : 223 : 0.81
+T: 1 2 : 143 : 143 : 0.1
+T: 1 2 : 143 : 207 : 0.9
+T: 1 3 : 143 : 143 : 0.01
+T: 1 3 : 143 : 175 : 0.09
+T: 1 3 : 143 : 207 : 0.09
+T: 1 3 : 143 : 239 : 0.81
+T: 1 4 : 143 : 0 : 1.0
+T: 1 5 : 143 : 0 : 1.0
+T: 2 0 : 143 : 15 : 0.9
+T: 2 0 : 143 : 143 : 0.1
+T: 2 1 : 143 : 15 : 0.09
+T: 2 1 : 143 : 31 : 0.81
+T: 2 1 : 143 : 143 : 0.01
+T: 2 1 : 143 : 159 : 0.09
+T: 2 2 : 143 : 15 : 0.9
+T: 2 2 : 143 : 143 : 0.1
+T: 2 3 : 143 : 15 : 0.09
+T: 2 3 : 143 : 47 : 0.81
+T: 2 3 : 143 : 143 : 0.01
+T: 2 3 : 143 : 175 : 0.09
+T: 2 4 : 143 : 0 : 1.0
+T: 2 5 : 143 : 0 : 1.0
+T: 3 0 : 143 : 143 : 1.0
+T: 3 1 : 143 : 143 : 0.1
+T: 3 1 : 143 : 159 : 0.9
+T: 3 2 : 143 : 143 : 1.0
+T: 3 3 : 143 : 143 : 0.1
+T: 3 3 : 143 : 175 : 0.9
+T: 3 4 : 143 : 0 : 1.0
+T: 3 5 : 143 : 0 : 1.0
+T: 4 0 : 143 : 0 : 1.0
+T: 4 1 : 143 : 0 : 1.0
+T: 4 2 : 143 : 0 : 1.0
+T: 4 3 : 143 : 0 : 1.0
+T: 4 4 : 143 : 0 : 1.0
+T: 4 5 : 143 : 0 : 1.0
+T: 5 0 : 143 : 0 : 1.0
+T: 5 1 : 143 : 0 : 1.0
+T: 5 2 : 143 : 0 : 1.0
+T: 5 3 : 143 : 0 : 1.0
+T: 5 4 : 143 : 0 : 1.0
+T: 5 5 : 143 : 0 : 1.0
+T: 0 0 : 144 : 128 : 0.9
+T: 0 0 : 144 : 144 : 0.1
+T: 0 1 : 144 : 144 : 1.0
+T: 0 2 : 144 : 144 : 1.0
+T: 0 3 : 144 : 144 : 0.1
+T: 0 3 : 144 : 176 : 0.9
+T: 0 4 : 144 : 146 : 1.0
+T: 0 5 : 144 : 146 : 1.0
+T: 1 0 : 144 : 128 : 0.09
+T: 1 0 : 144 : 144 : 0.01
+T: 1 0 : 144 : 192 : 0.81
+T: 1 0 : 144 : 208 : 0.09
+T: 1 1 : 144 : 144 : 0.1
+T: 1 1 : 144 : 208 : 0.9
+T: 1 2 : 144 : 144 : 0.1
+T: 1 2 : 144 : 208 : 0.9
+T: 1 3 : 144 : 144 : 0.01
+T: 1 3 : 144 : 176 : 0.09
+T: 1 3 : 144 : 208 : 0.09
+T: 1 3 : 144 : 240 : 0.81
+T: 1 4 : 144 : 146 : 0.1
+T: 1 4 : 144 : 210 : 0.9
+T: 1 5 : 144 : 146 : 0.1
+T: 1 5 : 144 : 210 : 0.9
+T: 2 0 : 144 : 0 : 0.81
+T: 2 0 : 144 : 16 : 0.09
+T: 2 0 : 144 : 128 : 0.09
+T: 2 0 : 144 : 144 : 0.01
+T: 2 1 : 144 : 16 : 0.9
+T: 2 1 : 144 : 144 : 0.1
+T: 2 2 : 144 : 16 : 0.9
+T: 2 2 : 144 : 144 : 0.1
+T: 2 3 : 144 : 16 : 0.09
+T: 2 3 : 144 : 48 : 0.81
+T: 2 3 : 144 : 144 : 0.01
+T: 2 3 : 144 : 176 : 0.09
+T: 2 4 : 144 : 18 : 0.9
+T: 2 4 : 144 : 146 : 0.1
+T: 2 5 : 144 : 18 : 0.9
+T: 2 5 : 144 : 146 : 0.1
+T: 3 0 : 144 : 128 : 0.9
+T: 3 0 : 144 : 144 : 0.1
+T: 3 1 : 144 : 144 : 1.0
+T: 3 2 : 144 : 144 : 1.0
+T: 3 3 : 144 : 144 : 0.1
+T: 3 3 : 144 : 176 : 0.9
+T: 3 4 : 144 : 146 : 1.0
+T: 3 5 : 144 : 146 : 1.0
+T: 4 0 : 144 : 132 : 0.9
+T: 4 0 : 144 : 148 : 0.1
+T: 4 1 : 144 : 148 : 1.0
+T: 4 2 : 144 : 148 : 1.0
+T: 4 3 : 144 : 148 : 0.1
+T: 4 3 : 144 : 180 : 0.9
+T: 4 4 : 144 : 150 : 1.0
+T: 4 5 : 144 : 150 : 1.0
+T: 5 0 : 144 : 132 : 0.9
+T: 5 0 : 144 : 148 : 0.1
+T: 5 1 : 144 : 148 : 1.0
+T: 5 2 : 144 : 148 : 1.0
+T: 5 3 : 144 : 148 : 0.1
+T: 5 3 : 144 : 180 : 0.9
+T: 5 4 : 144 : 150 : 1.0
+T: 5 5 : 144 : 150 : 1.0
+T: 0 0 : 145 : 129 : 0.9
+T: 0 0 : 145 : 145 : 0.1
+T: 0 1 : 145 : 145 : 1.0
+T: 0 2 : 145 : 145 : 1.0
+T: 0 3 : 145 : 145 : 0.1
+T: 0 3 : 145 : 177 : 0.9
+T: 0 4 : 145 : 147 : 1.0
+T: 0 5 : 145 : 147 : 1.0
+T: 1 0 : 145 : 129 : 0.09
+T: 1 0 : 145 : 145 : 0.01
+T: 1 0 : 145 : 193 : 0.81
+T: 1 0 : 145 : 209 : 0.09
+T: 1 1 : 145 : 145 : 0.1
+T: 1 1 : 145 : 209 : 0.9
+T: 1 2 : 145 : 145 : 0.1
+T: 1 2 : 145 : 209 : 0.9
+T: 1 3 : 145 : 145 : 0.01
+T: 1 3 : 145 : 177 : 0.09
+T: 1 3 : 145 : 209 : 0.09
+T: 1 3 : 145 : 241 : 0.81
+T: 1 4 : 145 : 147 : 0.1
+T: 1 4 : 145 : 211 : 0.9
+T: 1 5 : 145 : 147 : 0.1
+T: 1 5 : 145 : 211 : 0.9
+T: 2 0 : 145 : 1 : 0.81
+T: 2 0 : 145 : 17 : 0.09
+T: 2 0 : 145 : 129 : 0.09
+T: 2 0 : 145 : 145 : 0.01
+T: 2 1 : 145 : 17 : 0.9
+T: 2 1 : 145 : 145 : 0.1
+T: 2 2 : 145 : 17 : 0.9
+T: 2 2 : 145 : 145 : 0.1
+T: 2 3 : 145 : 17 : 0.09
+T: 2 3 : 145 : 49 : 0.81
+T: 2 3 : 145 : 145 : 0.01
+T: 2 3 : 145 : 177 : 0.09
+T: 2 4 : 145 : 19 : 0.9
+T: 2 4 : 145 : 147 : 0.1
+T: 2 5 : 145 : 19 : 0.9
+T: 2 5 : 145 : 147 : 0.1
+T: 3 0 : 145 : 129 : 0.9
+T: 3 0 : 145 : 145 : 0.1
+T: 3 1 : 145 : 145 : 1.0
+T: 3 2 : 145 : 145 : 1.0
+T: 3 3 : 145 : 145 : 0.1
+T: 3 3 : 145 : 177 : 0.9
+T: 3 4 : 145 : 147 : 1.0
+T: 3 5 : 145 : 147 : 1.0
+T: 4 0 : 145 : 133 : 0.9
+T: 4 0 : 145 : 149 : 0.1
+T: 4 1 : 145 : 149 : 1.0
+T: 4 2 : 145 : 149 : 1.0
+T: 4 3 : 145 : 149 : 0.1
+T: 4 3 : 145 : 181 : 0.9
+T: 4 4 : 145 : 151 : 1.0
+T: 4 5 : 145 : 151 : 1.0
+T: 5 0 : 145 : 133 : 0.9
+T: 5 0 : 145 : 149 : 0.1
+T: 5 1 : 145 : 149 : 1.0
+T: 5 2 : 145 : 149 : 1.0
+T: 5 3 : 145 : 149 : 0.1
+T: 5 3 : 145 : 181 : 0.9
+T: 5 4 : 145 : 151 : 1.0
+T: 5 5 : 145 : 151 : 1.0
+T: 0 0 : 146 : 130 : 0.9
+T: 0 0 : 146 : 146 : 0.1
+T: 0 1 : 146 : 146 : 1.0
+T: 0 2 : 146 : 146 : 1.0
+T: 0 3 : 146 : 146 : 0.1
+T: 0 3 : 146 : 178 : 0.9
+T: 0 4 : 146 : 146 : 1.0
+T: 0 5 : 146 : 146 : 1.0
+T: 1 0 : 146 : 130 : 0.09
+T: 1 0 : 146 : 146 : 0.01
+T: 1 0 : 146 : 194 : 0.81
+T: 1 0 : 146 : 210 : 0.09
+T: 1 1 : 146 : 146 : 0.1
+T: 1 1 : 146 : 210 : 0.9
+T: 1 2 : 146 : 146 : 0.1
+T: 1 2 : 146 : 210 : 0.9
+T: 1 3 : 146 : 146 : 0.01
+T: 1 3 : 146 : 178 : 0.09
+T: 1 3 : 146 : 210 : 0.09
+T: 1 3 : 146 : 242 : 0.81
+T: 1 4 : 146 : 146 : 0.1
+T: 1 4 : 146 : 210 : 0.9
+T: 1 5 : 146 : 146 : 0.1
+T: 1 5 : 146 : 210 : 0.9
+T: 2 0 : 146 : 2 : 0.81
+T: 2 0 : 146 : 18 : 0.09
+T: 2 0 : 146 : 130 : 0.09
+T: 2 0 : 146 : 146 : 0.01
+T: 2 1 : 146 : 18 : 0.9
+T: 2 1 : 146 : 146 : 0.1
+T: 2 2 : 146 : 18 : 0.9
+T: 2 2 : 146 : 146 : 0.1
+T: 2 3 : 146 : 18 : 0.09
+T: 2 3 : 146 : 50 : 0.81
+T: 2 3 : 146 : 146 : 0.01
+T: 2 3 : 146 : 178 : 0.09
+T: 2 4 : 146 : 18 : 0.9
+T: 2 4 : 146 : 146 : 0.1
+T: 2 5 : 146 : 18 : 0.9
+T: 2 5 : 146 : 146 : 0.1
+T: 3 0 : 146 : 130 : 0.9
+T: 3 0 : 146 : 146 : 0.1
+T: 3 1 : 146 : 146 : 1.0
+T: 3 2 : 146 : 146 : 1.0
+T: 3 3 : 146 : 146 : 0.1
+T: 3 3 : 146 : 178 : 0.9
+T: 3 4 : 146 : 146 : 1.0
+T: 3 5 : 146 : 146 : 1.0
+T: 4 0 : 146 : 134 : 0.9
+T: 4 0 : 146 : 150 : 0.1
+T: 4 1 : 146 : 150 : 1.0
+T: 4 2 : 146 : 150 : 1.0
+T: 4 3 : 146 : 150 : 0.1
+T: 4 3 : 146 : 182 : 0.9
+T: 4 4 : 146 : 150 : 1.0
+T: 4 5 : 146 : 150 : 1.0
+T: 5 0 : 146 : 134 : 0.9
+T: 5 0 : 146 : 150 : 0.1
+T: 5 1 : 146 : 150 : 1.0
+T: 5 2 : 146 : 150 : 1.0
+T: 5 3 : 146 : 150 : 0.1
+T: 5 3 : 146 : 182 : 0.9
+T: 5 4 : 146 : 150 : 1.0
+T: 5 5 : 146 : 150 : 1.0
+T: 0 0 : 147 : 131 : 0.9
+T: 0 0 : 147 : 147 : 0.1
+T: 0 1 : 147 : 147 : 1.0
+T: 0 2 : 147 : 147 : 1.0
+T: 0 3 : 147 : 147 : 0.1
+T: 0 3 : 147 : 179 : 0.9
+T: 0 4 : 147 : 147 : 1.0
+T: 0 5 : 147 : 147 : 1.0
+T: 1 0 : 147 : 131 : 0.09
+T: 1 0 : 147 : 147 : 0.01
+T: 1 0 : 147 : 195 : 0.81
+T: 1 0 : 147 : 211 : 0.09
+T: 1 1 : 147 : 147 : 0.1
+T: 1 1 : 147 : 211 : 0.9
+T: 1 2 : 147 : 147 : 0.1
+T: 1 2 : 147 : 211 : 0.9
+T: 1 3 : 147 : 147 : 0.01
+T: 1 3 : 147 : 179 : 0.09
+T: 1 3 : 147 : 211 : 0.09
+T: 1 3 : 147 : 243 : 0.81
+T: 1 4 : 147 : 147 : 0.1
+T: 1 4 : 147 : 211 : 0.9
+T: 1 5 : 147 : 147 : 0.1
+T: 1 5 : 147 : 211 : 0.9
+T: 2 0 : 147 : 3 : 0.81
+T: 2 0 : 147 : 19 : 0.09
+T: 2 0 : 147 : 131 : 0.09
+T: 2 0 : 147 : 147 : 0.01
+T: 2 1 : 147 : 19 : 0.9
+T: 2 1 : 147 : 147 : 0.1
+T: 2 2 : 147 : 19 : 0.9
+T: 2 2 : 147 : 147 : 0.1
+T: 2 3 : 147 : 19 : 0.09
+T: 2 3 : 147 : 51 : 0.81
+T: 2 3 : 147 : 147 : 0.01
+T: 2 3 : 147 : 179 : 0.09
+T: 2 4 : 147 : 19 : 0.9
+T: 2 4 : 147 : 147 : 0.1
+T: 2 5 : 147 : 19 : 0.9
+T: 2 5 : 147 : 147 : 0.1
+T: 3 0 : 147 : 131 : 0.9
+T: 3 0 : 147 : 147 : 0.1
+T: 3 1 : 147 : 147 : 1.0
+T: 3 2 : 147 : 147 : 1.0
+T: 3 3 : 147 : 147 : 0.1
+T: 3 3 : 147 : 179 : 0.9
+T: 3 4 : 147 : 147 : 1.0
+T: 3 5 : 147 : 147 : 1.0
+T: 4 0 : 147 : 135 : 0.9
+T: 4 0 : 147 : 151 : 0.1
+T: 4 1 : 147 : 151 : 1.0
+T: 4 2 : 147 : 151 : 1.0
+T: 4 3 : 147 : 151 : 0.1
+T: 4 3 : 147 : 183 : 0.9
+T: 4 4 : 147 : 151 : 1.0
+T: 4 5 : 147 : 151 : 1.0
+T: 5 0 : 147 : 135 : 0.9
+T: 5 0 : 147 : 151 : 0.1
+T: 5 1 : 147 : 151 : 1.0
+T: 5 2 : 147 : 151 : 1.0
+T: 5 3 : 147 : 151 : 0.1
+T: 5 3 : 147 : 183 : 0.9
+T: 5 4 : 147 : 151 : 1.0
+T: 5 5 : 147 : 151 : 1.0
+T: 0 0 : 148 : 132 : 0.9
+T: 0 0 : 148 : 148 : 0.1
+T: 0 1 : 148 : 148 : 1.0
+T: 0 2 : 148 : 148 : 1.0
+T: 0 3 : 148 : 148 : 0.1
+T: 0 3 : 148 : 180 : 0.9
+T: 0 4 : 148 : 150 : 1.0
+T: 0 5 : 148 : 150 : 1.0
+T: 1 0 : 148 : 132 : 0.09
+T: 1 0 : 148 : 148 : 0.01
+T: 1 0 : 148 : 196 : 0.81
+T: 1 0 : 148 : 212 : 0.09
+T: 1 1 : 148 : 148 : 0.1
+T: 1 1 : 148 : 212 : 0.9
+T: 1 2 : 148 : 148 : 0.1
+T: 1 2 : 148 : 212 : 0.9
+T: 1 3 : 148 : 148 : 0.01
+T: 1 3 : 148 : 180 : 0.09
+T: 1 3 : 148 : 212 : 0.09
+T: 1 3 : 148 : 244 : 0.81
+T: 1 4 : 148 : 150 : 0.1
+T: 1 4 : 148 : 214 : 0.9
+T: 1 5 : 148 : 150 : 0.1
+T: 1 5 : 148 : 214 : 0.9
+T: 2 0 : 148 : 4 : 0.81
+T: 2 0 : 148 : 20 : 0.09
+T: 2 0 : 148 : 132 : 0.09
+T: 2 0 : 148 : 148 : 0.01
+T: 2 1 : 148 : 20 : 0.9
+T: 2 1 : 148 : 148 : 0.1
+T: 2 2 : 148 : 20 : 0.9
+T: 2 2 : 148 : 148 : 0.1
+T: 2 3 : 148 : 20 : 0.09
+T: 2 3 : 148 : 52 : 0.81
+T: 2 3 : 148 : 148 : 0.01
+T: 2 3 : 148 : 180 : 0.09
+T: 2 4 : 148 : 22 : 0.9
+T: 2 4 : 148 : 150 : 0.1
+T: 2 5 : 148 : 22 : 0.9
+T: 2 5 : 148 : 150 : 0.1
+T: 3 0 : 148 : 132 : 0.9
+T: 3 0 : 148 : 148 : 0.1
+T: 3 1 : 148 : 148 : 1.0
+T: 3 2 : 148 : 148 : 1.0
+T: 3 3 : 148 : 148 : 0.1
+T: 3 3 : 148 : 180 : 0.9
+T: 3 4 : 148 : 150 : 1.0
+T: 3 5 : 148 : 150 : 1.0
+T: 4 0 : 148 : 132 : 0.9
+T: 4 0 : 148 : 148 : 0.1
+T: 4 1 : 148 : 148 : 1.0
+T: 4 2 : 148 : 148 : 1.0
+T: 4 3 : 148 : 148 : 0.1
+T: 4 3 : 148 : 180 : 0.9
+T: 4 4 : 148 : 150 : 1.0
+T: 4 5 : 148 : 150 : 1.0
+T: 5 0 : 148 : 132 : 0.9
+T: 5 0 : 148 : 148 : 0.1
+T: 5 1 : 148 : 148 : 1.0
+T: 5 2 : 148 : 148 : 1.0
+T: 5 3 : 148 : 148 : 0.1
+T: 5 3 : 148 : 180 : 0.9
+T: 5 4 : 148 : 150 : 1.0
+T: 5 5 : 148 : 150 : 1.0
+T: 0 0 : 149 : 133 : 0.9
+T: 0 0 : 149 : 149 : 0.1
+T: 0 1 : 149 : 149 : 1.0
+T: 0 2 : 149 : 149 : 1.0
+T: 0 3 : 149 : 149 : 0.1
+T: 0 3 : 149 : 181 : 0.9
+T: 0 4 : 149 : 151 : 1.0
+T: 0 5 : 149 : 151 : 1.0
+T: 1 0 : 149 : 133 : 0.09
+T: 1 0 : 149 : 149 : 0.01
+T: 1 0 : 149 : 197 : 0.81
+T: 1 0 : 149 : 213 : 0.09
+T: 1 1 : 149 : 149 : 0.1
+T: 1 1 : 149 : 213 : 0.9
+T: 1 2 : 149 : 149 : 0.1
+T: 1 2 : 149 : 213 : 0.9
+T: 1 3 : 149 : 149 : 0.01
+T: 1 3 : 149 : 181 : 0.09
+T: 1 3 : 149 : 213 : 0.09
+T: 1 3 : 149 : 245 : 0.81
+T: 1 4 : 149 : 151 : 0.1
+T: 1 4 : 149 : 215 : 0.9
+T: 1 5 : 149 : 151 : 0.1
+T: 1 5 : 149 : 215 : 0.9
+T: 2 0 : 149 : 5 : 0.81
+T: 2 0 : 149 : 21 : 0.09
+T: 2 0 : 149 : 133 : 0.09
+T: 2 0 : 149 : 149 : 0.01
+T: 2 1 : 149 : 21 : 0.9
+T: 2 1 : 149 : 149 : 0.1
+T: 2 2 : 149 : 21 : 0.9
+T: 2 2 : 149 : 149 : 0.1
+T: 2 3 : 149 : 21 : 0.09
+T: 2 3 : 149 : 53 : 0.81
+T: 2 3 : 149 : 149 : 0.01
+T: 2 3 : 149 : 181 : 0.09
+T: 2 4 : 149 : 23 : 0.9
+T: 2 4 : 149 : 151 : 0.1
+T: 2 5 : 149 : 23 : 0.9
+T: 2 5 : 149 : 151 : 0.1
+T: 3 0 : 149 : 133 : 0.9
+T: 3 0 : 149 : 149 : 0.1
+T: 3 1 : 149 : 149 : 1.0
+T: 3 2 : 149 : 149 : 1.0
+T: 3 3 : 149 : 149 : 0.1
+T: 3 3 : 149 : 181 : 0.9
+T: 3 4 : 149 : 151 : 1.0
+T: 3 5 : 149 : 151 : 1.0
+T: 4 0 : 149 : 133 : 0.9
+T: 4 0 : 149 : 149 : 0.1
+T: 4 1 : 149 : 149 : 1.0
+T: 4 2 : 149 : 149 : 1.0
+T: 4 3 : 149 : 149 : 0.1
+T: 4 3 : 149 : 181 : 0.9
+T: 4 4 : 149 : 151 : 1.0
+T: 4 5 : 149 : 151 : 1.0
+T: 5 0 : 149 : 133 : 0.9
+T: 5 0 : 149 : 149 : 0.1
+T: 5 1 : 149 : 149 : 1.0
+T: 5 2 : 149 : 149 : 1.0
+T: 5 3 : 149 : 149 : 0.1
+T: 5 3 : 149 : 181 : 0.9
+T: 5 4 : 149 : 151 : 1.0
+T: 5 5 : 149 : 151 : 1.0
+T: 0 0 : 150 : 134 : 0.9
+T: 0 0 : 150 : 150 : 0.1
+T: 0 1 : 150 : 150 : 1.0
+T: 0 2 : 150 : 150 : 1.0
+T: 0 3 : 150 : 150 : 0.1
+T: 0 3 : 150 : 182 : 0.9
+T: 0 4 : 150 : 150 : 1.0
+T: 0 5 : 150 : 150 : 1.0
+T: 1 0 : 150 : 134 : 0.09
+T: 1 0 : 150 : 150 : 0.01
+T: 1 0 : 150 : 198 : 0.81
+T: 1 0 : 150 : 214 : 0.09
+T: 1 1 : 150 : 150 : 0.1
+T: 1 1 : 150 : 214 : 0.9
+T: 1 2 : 150 : 150 : 0.1
+T: 1 2 : 150 : 214 : 0.9
+T: 1 3 : 150 : 150 : 0.01
+T: 1 3 : 150 : 182 : 0.09
+T: 1 3 : 150 : 214 : 0.09
+T: 1 3 : 150 : 246 : 0.81
+T: 1 4 : 150 : 150 : 0.1
+T: 1 4 : 150 : 214 : 0.9
+T: 1 5 : 150 : 150 : 0.1
+T: 1 5 : 150 : 214 : 0.9
+T: 2 0 : 150 : 6 : 0.81
+T: 2 0 : 150 : 22 : 0.09
+T: 2 0 : 150 : 134 : 0.09
+T: 2 0 : 150 : 150 : 0.01
+T: 2 1 : 150 : 22 : 0.9
+T: 2 1 : 150 : 150 : 0.1
+T: 2 2 : 150 : 22 : 0.9
+T: 2 2 : 150 : 150 : 0.1
+T: 2 3 : 150 : 22 : 0.09
+T: 2 3 : 150 : 54 : 0.81
+T: 2 3 : 150 : 150 : 0.01
+T: 2 3 : 150 : 182 : 0.09
+T: 2 4 : 150 : 22 : 0.9
+T: 2 4 : 150 : 150 : 0.1
+T: 2 5 : 150 : 22 : 0.9
+T: 2 5 : 150 : 150 : 0.1
+T: 3 0 : 150 : 134 : 0.9
+T: 3 0 : 150 : 150 : 0.1
+T: 3 1 : 150 : 150 : 1.0
+T: 3 2 : 150 : 150 : 1.0
+T: 3 3 : 150 : 150 : 0.1
+T: 3 3 : 150 : 182 : 0.9
+T: 3 4 : 150 : 150 : 1.0
+T: 3 5 : 150 : 150 : 1.0
+T: 4 0 : 150 : 134 : 0.9
+T: 4 0 : 150 : 150 : 0.1
+T: 4 1 : 150 : 150 : 1.0
+T: 4 2 : 150 : 150 : 1.0
+T: 4 3 : 150 : 150 : 0.1
+T: 4 3 : 150 : 182 : 0.9
+T: 4 4 : 150 : 150 : 1.0
+T: 4 5 : 150 : 150 : 1.0
+T: 5 0 : 150 : 134 : 0.9
+T: 5 0 : 150 : 150 : 0.1
+T: 5 1 : 150 : 150 : 1.0
+T: 5 2 : 150 : 150 : 1.0
+T: 5 3 : 150 : 150 : 0.1
+T: 5 3 : 150 : 182 : 0.9
+T: 5 4 : 150 : 150 : 1.0
+T: 5 5 : 150 : 150 : 1.0
+T: 0 0 : 151 : 135 : 0.9
+T: 0 0 : 151 : 151 : 0.1
+T: 0 1 : 151 : 151 : 1.0
+T: 0 2 : 151 : 151 : 1.0
+T: 0 3 : 151 : 151 : 0.1
+T: 0 3 : 151 : 183 : 0.9
+T: 0 4 : 151 : 151 : 1.0
+T: 0 5 : 151 : 151 : 1.0
+T: 1 0 : 151 : 135 : 0.09
+T: 1 0 : 151 : 151 : 0.01
+T: 1 0 : 151 : 199 : 0.81
+T: 1 0 : 151 : 215 : 0.09
+T: 1 1 : 151 : 151 : 0.1
+T: 1 1 : 151 : 215 : 0.9
+T: 1 2 : 151 : 151 : 0.1
+T: 1 2 : 151 : 215 : 0.9
+T: 1 3 : 151 : 151 : 0.01
+T: 1 3 : 151 : 183 : 0.09
+T: 1 3 : 151 : 215 : 0.09
+T: 1 3 : 151 : 247 : 0.81
+T: 1 4 : 151 : 151 : 0.1
+T: 1 4 : 151 : 215 : 0.9
+T: 1 5 : 151 : 151 : 0.1
+T: 1 5 : 151 : 215 : 0.9
+T: 2 0 : 151 : 7 : 0.81
+T: 2 0 : 151 : 23 : 0.09
+T: 2 0 : 151 : 135 : 0.09
+T: 2 0 : 151 : 151 : 0.01
+T: 2 1 : 151 : 23 : 0.9
+T: 2 1 : 151 : 151 : 0.1
+T: 2 2 : 151 : 23 : 0.9
+T: 2 2 : 151 : 151 : 0.1
+T: 2 3 : 151 : 23 : 0.09
+T: 2 3 : 151 : 55 : 0.81
+T: 2 3 : 151 : 151 : 0.01
+T: 2 3 : 151 : 183 : 0.09
+T: 2 4 : 151 : 23 : 0.9
+T: 2 4 : 151 : 151 : 0.1
+T: 2 5 : 151 : 23 : 0.9
+T: 2 5 : 151 : 151 : 0.1
+T: 3 0 : 151 : 135 : 0.9
+T: 3 0 : 151 : 151 : 0.1
+T: 3 1 : 151 : 151 : 1.0
+T: 3 2 : 151 : 151 : 1.0
+T: 3 3 : 151 : 151 : 0.1
+T: 3 3 : 151 : 183 : 0.9
+T: 3 4 : 151 : 151 : 1.0
+T: 3 5 : 151 : 151 : 1.0
+T: 4 0 : 151 : 135 : 0.9
+T: 4 0 : 151 : 151 : 0.1
+T: 4 1 : 151 : 151 : 1.0
+T: 4 2 : 151 : 151 : 1.0
+T: 4 3 : 151 : 151 : 0.1
+T: 4 3 : 151 : 183 : 0.9
+T: 4 4 : 151 : 151 : 1.0
+T: 4 5 : 151 : 151 : 1.0
+T: 5 0 : 151 : 135 : 0.9
+T: 5 0 : 151 : 151 : 0.1
+T: 5 1 : 151 : 151 : 1.0
+T: 5 2 : 151 : 151 : 1.0
+T: 5 3 : 151 : 151 : 0.1
+T: 5 3 : 151 : 183 : 0.9
+T: 5 4 : 151 : 151 : 1.0
+T: 5 5 : 151 : 151 : 1.0
+T: 0 0 : 152 : 136 : 0.9
+T: 0 0 : 152 : 152 : 0.1
+T: 0 1 : 152 : 152 : 1.0
+T: 0 2 : 152 : 152 : 1.0
+T: 0 3 : 152 : 152 : 0.1
+T: 0 3 : 152 : 184 : 0.9
+T: 0 4 : 152 : 154 : 1.0
+T: 0 5 : 152 : 154 : 1.0
+T: 1 0 : 152 : 136 : 0.09
+T: 1 0 : 152 : 152 : 0.01
+T: 1 0 : 152 : 200 : 0.81
+T: 1 0 : 152 : 216 : 0.09
+T: 1 1 : 152 : 152 : 0.1
+T: 1 1 : 152 : 216 : 0.9
+T: 1 2 : 152 : 152 : 0.1
+T: 1 2 : 152 : 216 : 0.9
+T: 1 3 : 152 : 152 : 0.01
+T: 1 3 : 152 : 184 : 0.09
+T: 1 3 : 152 : 216 : 0.09
+T: 1 3 : 152 : 248 : 0.81
+T: 1 4 : 152 : 154 : 0.1
+T: 1 4 : 152 : 218 : 0.9
+T: 1 5 : 152 : 154 : 0.1
+T: 1 5 : 152 : 218 : 0.9
+T: 2 0 : 152 : 8 : 0.81
+T: 2 0 : 152 : 24 : 0.09
+T: 2 0 : 152 : 136 : 0.09
+T: 2 0 : 152 : 152 : 0.01
+T: 2 1 : 152 : 24 : 0.9
+T: 2 1 : 152 : 152 : 0.1
+T: 2 2 : 152 : 24 : 0.9
+T: 2 2 : 152 : 152 : 0.1
+T: 2 3 : 152 : 24 : 0.09
+T: 2 3 : 152 : 56 : 0.81
+T: 2 3 : 152 : 152 : 0.01
+T: 2 3 : 152 : 184 : 0.09
+T: 2 4 : 152 : 26 : 0.9
+T: 2 4 : 152 : 154 : 0.1
+T: 2 5 : 152 : 26 : 0.9
+T: 2 5 : 152 : 154 : 0.1
+T: 3 0 : 152 : 136 : 0.9
+T: 3 0 : 152 : 152 : 0.1
+T: 3 1 : 152 : 152 : 1.0
+T: 3 2 : 152 : 152 : 1.0
+T: 3 3 : 152 : 152 : 0.1
+T: 3 3 : 152 : 184 : 0.9
+T: 3 4 : 152 : 154 : 1.0
+T: 3 5 : 152 : 154 : 1.0
+T: 4 0 : 152 : 140 : 0.9
+T: 4 0 : 152 : 156 : 0.1
+T: 4 1 : 152 : 156 : 1.0
+T: 4 2 : 152 : 156 : 1.0
+T: 4 3 : 152 : 156 : 0.1
+T: 4 3 : 152 : 188 : 0.9
+T: 4 4 : 152 : 158 : 1.0
+T: 4 5 : 152 : 158 : 1.0
+T: 5 0 : 152 : 140 : 0.9
+T: 5 0 : 152 : 156 : 0.1
+T: 5 1 : 152 : 156 : 1.0
+T: 5 2 : 152 : 156 : 1.0
+T: 5 3 : 152 : 156 : 0.1
+T: 5 3 : 152 : 188 : 0.9
+T: 5 4 : 152 : 158 : 1.0
+T: 5 5 : 152 : 158 : 1.0
+T: 0 0 : 153 : 137 : 0.9
+T: 0 0 : 153 : 153 : 0.1
+T: 0 1 : 153 : 153 : 1.0
+T: 0 2 : 153 : 153 : 1.0
+T: 0 3 : 153 : 153 : 0.1
+T: 0 3 : 153 : 185 : 0.9
+T: 0 4 : 153 : 155 : 1.0
+T: 0 5 : 153 : 155 : 1.0
+T: 1 0 : 153 : 137 : 0.09
+T: 1 0 : 153 : 153 : 0.01
+T: 1 0 : 153 : 201 : 0.81
+T: 1 0 : 153 : 217 : 0.09
+T: 1 1 : 153 : 153 : 0.1
+T: 1 1 : 153 : 217 : 0.9
+T: 1 2 : 153 : 153 : 0.1
+T: 1 2 : 153 : 217 : 0.9
+T: 1 3 : 153 : 153 : 0.01
+T: 1 3 : 153 : 185 : 0.09
+T: 1 3 : 153 : 217 : 0.09
+T: 1 3 : 153 : 249 : 0.81
+T: 1 4 : 153 : 155 : 0.1
+T: 1 4 : 153 : 219 : 0.9
+T: 1 5 : 153 : 155 : 0.1
+T: 1 5 : 153 : 219 : 0.9
+T: 2 0 : 153 : 9 : 0.81
+T: 2 0 : 153 : 25 : 0.09
+T: 2 0 : 153 : 137 : 0.09
+T: 2 0 : 153 : 153 : 0.01
+T: 2 1 : 153 : 25 : 0.9
+T: 2 1 : 153 : 153 : 0.1
+T: 2 2 : 153 : 25 : 0.9
+T: 2 2 : 153 : 153 : 0.1
+T: 2 3 : 153 : 25 : 0.09
+T: 2 3 : 153 : 57 : 0.81
+T: 2 3 : 153 : 153 : 0.01
+T: 2 3 : 153 : 185 : 0.09
+T: 2 4 : 153 : 27 : 0.9
+T: 2 4 : 153 : 155 : 0.1
+T: 2 5 : 153 : 27 : 0.9
+T: 2 5 : 153 : 155 : 0.1
+T: 3 0 : 153 : 137 : 0.9
+T: 3 0 : 153 : 153 : 0.1
+T: 3 1 : 153 : 153 : 1.0
+T: 3 2 : 153 : 153 : 1.0
+T: 3 3 : 153 : 153 : 0.1
+T: 3 3 : 153 : 185 : 0.9
+T: 3 4 : 153 : 155 : 1.0
+T: 3 5 : 153 : 155 : 1.0
+T: 4 0 : 153 : 141 : 0.9
+T: 4 0 : 153 : 157 : 0.1
+T: 4 1 : 153 : 157 : 1.0
+T: 4 2 : 153 : 157 : 1.0
+T: 4 3 : 153 : 157 : 0.1
+T: 4 3 : 153 : 189 : 0.9
+T: 4 4 : 153 : 0 : 1.0
+T: 4 5 : 153 : 0 : 1.0
+T: 5 0 : 153 : 141 : 0.9
+T: 5 0 : 153 : 157 : 0.1
+T: 5 1 : 153 : 157 : 1.0
+T: 5 2 : 153 : 157 : 1.0
+T: 5 3 : 153 : 157 : 0.1
+T: 5 3 : 153 : 189 : 0.9
+T: 5 4 : 153 : 0 : 1.0
+T: 5 5 : 153 : 0 : 1.0
+T: 0 0 : 154 : 138 : 0.9
+T: 0 0 : 154 : 154 : 0.1
+T: 0 1 : 154 : 154 : 1.0
+T: 0 2 : 154 : 154 : 1.0
+T: 0 3 : 154 : 154 : 0.1
+T: 0 3 : 154 : 186 : 0.9
+T: 0 4 : 154 : 154 : 1.0
+T: 0 5 : 154 : 154 : 1.0
+T: 1 0 : 154 : 138 : 0.09
+T: 1 0 : 154 : 154 : 0.01
+T: 1 0 : 154 : 202 : 0.81
+T: 1 0 : 154 : 218 : 0.09
+T: 1 1 : 154 : 154 : 0.1
+T: 1 1 : 154 : 218 : 0.9
+T: 1 2 : 154 : 154 : 0.1
+T: 1 2 : 154 : 218 : 0.9
+T: 1 3 : 154 : 154 : 0.01
+T: 1 3 : 154 : 186 : 0.09
+T: 1 3 : 154 : 218 : 0.09
+T: 1 3 : 154 : 250 : 0.81
+T: 1 4 : 154 : 154 : 0.1
+T: 1 4 : 154 : 218 : 0.9
+T: 1 5 : 154 : 154 : 0.1
+T: 1 5 : 154 : 218 : 0.9
+T: 2 0 : 154 : 10 : 0.81
+T: 2 0 : 154 : 26 : 0.09
+T: 2 0 : 154 : 138 : 0.09
+T: 2 0 : 154 : 154 : 0.01
+T: 2 1 : 154 : 26 : 0.9
+T: 2 1 : 154 : 154 : 0.1
+T: 2 2 : 154 : 26 : 0.9
+T: 2 2 : 154 : 154 : 0.1
+T: 2 3 : 154 : 26 : 0.09
+T: 2 3 : 154 : 58 : 0.81
+T: 2 3 : 154 : 154 : 0.01
+T: 2 3 : 154 : 186 : 0.09
+T: 2 4 : 154 : 26 : 0.9
+T: 2 4 : 154 : 154 : 0.1
+T: 2 5 : 154 : 26 : 0.9
+T: 2 5 : 154 : 154 : 0.1
+T: 3 0 : 154 : 138 : 0.9
+T: 3 0 : 154 : 154 : 0.1
+T: 3 1 : 154 : 154 : 1.0
+T: 3 2 : 154 : 154 : 1.0
+T: 3 3 : 154 : 154 : 0.1
+T: 3 3 : 154 : 186 : 0.9
+T: 3 4 : 154 : 154 : 1.0
+T: 3 5 : 154 : 154 : 1.0
+T: 4 0 : 154 : 142 : 0.9
+T: 4 0 : 154 : 158 : 0.1
+T: 4 1 : 154 : 158 : 1.0
+T: 4 2 : 154 : 158 : 1.0
+T: 4 3 : 154 : 158 : 0.1
+T: 4 3 : 154 : 190 : 0.9
+T: 4 4 : 154 : 158 : 1.0
+T: 4 5 : 154 : 158 : 1.0
+T: 5 0 : 154 : 142 : 0.9
+T: 5 0 : 154 : 158 : 0.1
+T: 5 1 : 154 : 158 : 1.0
+T: 5 2 : 154 : 158 : 1.0
+T: 5 3 : 154 : 158 : 0.1
+T: 5 3 : 154 : 190 : 0.9
+T: 5 4 : 154 : 158 : 1.0
+T: 5 5 : 154 : 158 : 1.0
+T: 0 0 : 155 : 139 : 0.9
+T: 0 0 : 155 : 155 : 0.1
+T: 0 1 : 155 : 155 : 1.0
+T: 0 2 : 155 : 155 : 1.0
+T: 0 3 : 155 : 155 : 0.1
+T: 0 3 : 155 : 187 : 0.9
+T: 0 4 : 155 : 155 : 1.0
+T: 0 5 : 155 : 155 : 1.0
+T: 1 0 : 155 : 139 : 0.09
+T: 1 0 : 155 : 155 : 0.01
+T: 1 0 : 155 : 203 : 0.81
+T: 1 0 : 155 : 219 : 0.09
+T: 1 1 : 155 : 155 : 0.1
+T: 1 1 : 155 : 219 : 0.9
+T: 1 2 : 155 : 155 : 0.1
+T: 1 2 : 155 : 219 : 0.9
+T: 1 3 : 155 : 155 : 0.01
+T: 1 3 : 155 : 187 : 0.09
+T: 1 3 : 155 : 219 : 0.09
+T: 1 3 : 155 : 251 : 0.81
+T: 1 4 : 155 : 155 : 0.1
+T: 1 4 : 155 : 219 : 0.9
+T: 1 5 : 155 : 155 : 0.1
+T: 1 5 : 155 : 219 : 0.9
+T: 2 0 : 155 : 11 : 0.81
+T: 2 0 : 155 : 27 : 0.09
+T: 2 0 : 155 : 139 : 0.09
+T: 2 0 : 155 : 155 : 0.01
+T: 2 1 : 155 : 27 : 0.9
+T: 2 1 : 155 : 155 : 0.1
+T: 2 2 : 155 : 27 : 0.9
+T: 2 2 : 155 : 155 : 0.1
+T: 2 3 : 155 : 27 : 0.09
+T: 2 3 : 155 : 59 : 0.81
+T: 2 3 : 155 : 155 : 0.01
+T: 2 3 : 155 : 187 : 0.09
+T: 2 4 : 155 : 27 : 0.9
+T: 2 4 : 155 : 155 : 0.1
+T: 2 5 : 155 : 27 : 0.9
+T: 2 5 : 155 : 155 : 0.1
+T: 3 0 : 155 : 139 : 0.9
+T: 3 0 : 155 : 155 : 0.1
+T: 3 1 : 155 : 155 : 1.0
+T: 3 2 : 155 : 155 : 1.0
+T: 3 3 : 155 : 155 : 0.1
+T: 3 3 : 155 : 187 : 0.9
+T: 3 4 : 155 : 155 : 1.0
+T: 3 5 : 155 : 155 : 1.0
+T: 4 0 : 155 : 0 : 1.0
+T: 4 1 : 155 : 0 : 1.0
+T: 4 2 : 155 : 0 : 1.0
+T: 4 3 : 155 : 0 : 1.0
+T: 4 4 : 155 : 0 : 1.0
+T: 4 5 : 155 : 0 : 1.0
+T: 5 0 : 155 : 0 : 1.0
+T: 5 1 : 155 : 0 : 1.0
+T: 5 2 : 155 : 0 : 1.0
+T: 5 3 : 155 : 0 : 1.0
+T: 5 4 : 155 : 0 : 1.0
+T: 5 5 : 155 : 0 : 1.0
+T: 0 0 : 156 : 140 : 0.9
+T: 0 0 : 156 : 156 : 0.1
+T: 0 1 : 156 : 156 : 1.0
+T: 0 2 : 156 : 156 : 1.0
+T: 0 3 : 156 : 156 : 0.1
+T: 0 3 : 156 : 188 : 0.9
+T: 0 4 : 156 : 158 : 1.0
+T: 0 5 : 156 : 158 : 1.0
+T: 1 0 : 156 : 140 : 0.09
+T: 1 0 : 156 : 156 : 0.01
+T: 1 0 : 156 : 204 : 0.81
+T: 1 0 : 156 : 220 : 0.09
+T: 1 1 : 156 : 156 : 0.1
+T: 1 1 : 156 : 220 : 0.9
+T: 1 2 : 156 : 156 : 0.1
+T: 1 2 : 156 : 220 : 0.9
+T: 1 3 : 156 : 156 : 0.01
+T: 1 3 : 156 : 188 : 0.09
+T: 1 3 : 156 : 220 : 0.09
+T: 1 3 : 156 : 252 : 0.81
+T: 1 4 : 156 : 158 : 0.1
+T: 1 4 : 156 : 222 : 0.9
+T: 1 5 : 156 : 158 : 0.1
+T: 1 5 : 156 : 222 : 0.9
+T: 2 0 : 156 : 12 : 0.81
+T: 2 0 : 156 : 28 : 0.09
+T: 2 0 : 156 : 140 : 0.09
+T: 2 0 : 156 : 156 : 0.01
+T: 2 1 : 156 : 28 : 0.9
+T: 2 1 : 156 : 156 : 0.1
+T: 2 2 : 156 : 28 : 0.9
+T: 2 2 : 156 : 156 : 0.1
+T: 2 3 : 156 : 28 : 0.09
+T: 2 3 : 156 : 60 : 0.81
+T: 2 3 : 156 : 156 : 0.01
+T: 2 3 : 156 : 188 : 0.09
+T: 2 4 : 156 : 30 : 0.9
+T: 2 4 : 156 : 158 : 0.1
+T: 2 5 : 156 : 30 : 0.9
+T: 2 5 : 156 : 158 : 0.1
+T: 3 0 : 156 : 140 : 0.9
+T: 3 0 : 156 : 156 : 0.1
+T: 3 1 : 156 : 156 : 1.0
+T: 3 2 : 156 : 156 : 1.0
+T: 3 3 : 156 : 156 : 0.1
+T: 3 3 : 156 : 188 : 0.9
+T: 3 4 : 156 : 158 : 1.0
+T: 3 5 : 156 : 158 : 1.0
+T: 4 0 : 156 : 140 : 0.9
+T: 4 0 : 156 : 156 : 0.1
+T: 4 1 : 156 : 156 : 1.0
+T: 4 2 : 156 : 156 : 1.0
+T: 4 3 : 156 : 156 : 0.1
+T: 4 3 : 156 : 188 : 0.9
+T: 4 4 : 156 : 158 : 1.0
+T: 4 5 : 156 : 158 : 1.0
+T: 5 0 : 156 : 140 : 0.9
+T: 5 0 : 156 : 156 : 0.1
+T: 5 1 : 156 : 156 : 1.0
+T: 5 2 : 156 : 156 : 1.0
+T: 5 3 : 156 : 156 : 0.1
+T: 5 3 : 156 : 188 : 0.9
+T: 5 4 : 156 : 158 : 1.0
+T: 5 5 : 156 : 158 : 1.0
+T: 0 0 : 157 : 141 : 0.9
+T: 0 0 : 157 : 157 : 0.1
+T: 0 1 : 157 : 157 : 1.0
+T: 0 2 : 157 : 157 : 1.0
+T: 0 3 : 157 : 157 : 0.1
+T: 0 3 : 157 : 189 : 0.9
+T: 0 4 : 157 : 0 : 1.0
+T: 0 5 : 157 : 0 : 1.0
+T: 1 0 : 157 : 141 : 0.09
+T: 1 0 : 157 : 157 : 0.01
+T: 1 0 : 157 : 205 : 0.81
+T: 1 0 : 157 : 221 : 0.09
+T: 1 1 : 157 : 157 : 0.1
+T: 1 1 : 157 : 221 : 0.9
+T: 1 2 : 157 : 157 : 0.1
+T: 1 2 : 157 : 221 : 0.9
+T: 1 3 : 157 : 157 : 0.01
+T: 1 3 : 157 : 189 : 0.09
+T: 1 3 : 157 : 221 : 0.09
+T: 1 3 : 157 : 253 : 0.81
+T: 1 4 : 157 : 0 : 1.0
+T: 1 5 : 157 : 0 : 1.0
+T: 2 0 : 157 : 13 : 0.81
+T: 2 0 : 157 : 29 : 0.09
+T: 2 0 : 157 : 141 : 0.09
+T: 2 0 : 157 : 157 : 0.01
+T: 2 1 : 157 : 29 : 0.9
+T: 2 1 : 157 : 157 : 0.1
+T: 2 2 : 157 : 29 : 0.9
+T: 2 2 : 157 : 157 : 0.1
+T: 2 3 : 157 : 29 : 0.09
+T: 2 3 : 157 : 61 : 0.81
+T: 2 3 : 157 : 157 : 0.01
+T: 2 3 : 157 : 189 : 0.09
+T: 2 4 : 157 : 0 : 1.0
+T: 2 5 : 157 : 0 : 1.0
+T: 3 0 : 157 : 141 : 0.9
+T: 3 0 : 157 : 157 : 0.1
+T: 3 1 : 157 : 157 : 1.0
+T: 3 2 : 157 : 157 : 1.0
+T: 3 3 : 157 : 157 : 0.1
+T: 3 3 : 157 : 189 : 0.9
+T: 3 4 : 157 : 0 : 1.0
+T: 3 5 : 157 : 0 : 1.0
+T: 4 0 : 157 : 141 : 0.9
+T: 4 0 : 157 : 157 : 0.1
+T: 4 1 : 157 : 157 : 1.0
+T: 4 2 : 157 : 157 : 1.0
+T: 4 3 : 157 : 157 : 0.1
+T: 4 3 : 157 : 189 : 0.9
+T: 4 4 : 157 : 0 : 1.0
+T: 4 5 : 157 : 0 : 1.0
+T: 5 0 : 157 : 141 : 0.9
+T: 5 0 : 157 : 157 : 0.1
+T: 5 1 : 157 : 157 : 1.0
+T: 5 2 : 157 : 157 : 1.0
+T: 5 3 : 157 : 157 : 0.1
+T: 5 3 : 157 : 189 : 0.9
+T: 5 4 : 157 : 0 : 1.0
+T: 5 5 : 157 : 0 : 1.0
+T: 0 0 : 158 : 142 : 0.9
+T: 0 0 : 158 : 158 : 0.1
+T: 0 1 : 158 : 158 : 1.0
+T: 0 2 : 158 : 158 : 1.0
+T: 0 3 : 158 : 158 : 0.1
+T: 0 3 : 158 : 190 : 0.9
+T: 0 4 : 158 : 158 : 1.0
+T: 0 5 : 158 : 158 : 1.0
+T: 1 0 : 158 : 142 : 0.09
+T: 1 0 : 158 : 158 : 0.01
+T: 1 0 : 158 : 206 : 0.81
+T: 1 0 : 158 : 222 : 0.09
+T: 1 1 : 158 : 158 : 0.1
+T: 1 1 : 158 : 222 : 0.9
+T: 1 2 : 158 : 158 : 0.1
+T: 1 2 : 158 : 222 : 0.9
+T: 1 3 : 158 : 158 : 0.01
+T: 1 3 : 158 : 190 : 0.09
+T: 1 3 : 158 : 222 : 0.09
+T: 1 3 : 158 : 254 : 0.81
+T: 1 4 : 158 : 158 : 0.1
+T: 1 4 : 158 : 222 : 0.9
+T: 1 5 : 158 : 158 : 0.1
+T: 1 5 : 158 : 222 : 0.9
+T: 2 0 : 158 : 14 : 0.81
+T: 2 0 : 158 : 30 : 0.09
+T: 2 0 : 158 : 142 : 0.09
+T: 2 0 : 158 : 158 : 0.01
+T: 2 1 : 158 : 30 : 0.9
+T: 2 1 : 158 : 158 : 0.1
+T: 2 2 : 158 : 30 : 0.9
+T: 2 2 : 158 : 158 : 0.1
+T: 2 3 : 158 : 30 : 0.09
+T: 2 3 : 158 : 62 : 0.81
+T: 2 3 : 158 : 158 : 0.01
+T: 2 3 : 158 : 190 : 0.09
+T: 2 4 : 158 : 30 : 0.9
+T: 2 4 : 158 : 158 : 0.1
+T: 2 5 : 158 : 30 : 0.9
+T: 2 5 : 158 : 158 : 0.1
+T: 3 0 : 158 : 142 : 0.9
+T: 3 0 : 158 : 158 : 0.1
+T: 3 1 : 158 : 158 : 1.0
+T: 3 2 : 158 : 158 : 1.0
+T: 3 3 : 158 : 158 : 0.1
+T: 3 3 : 158 : 190 : 0.9
+T: 3 4 : 158 : 158 : 1.0
+T: 3 5 : 158 : 158 : 1.0
+T: 4 0 : 158 : 142 : 0.9
+T: 4 0 : 158 : 158 : 0.1
+T: 4 1 : 158 : 158 : 1.0
+T: 4 2 : 158 : 158 : 1.0
+T: 4 3 : 158 : 158 : 0.1
+T: 4 3 : 158 : 190 : 0.9
+T: 4 4 : 158 : 158 : 1.0
+T: 4 5 : 158 : 158 : 1.0
+T: 5 0 : 158 : 142 : 0.9
+T: 5 0 : 158 : 158 : 0.1
+T: 5 1 : 158 : 158 : 1.0
+T: 5 2 : 158 : 158 : 1.0
+T: 5 3 : 158 : 158 : 0.1
+T: 5 3 : 158 : 190 : 0.9
+T: 5 4 : 158 : 158 : 1.0
+T: 5 5 : 158 : 158 : 1.0
+T: 0 0 : 159 : 143 : 0.9
+T: 0 0 : 159 : 159 : 0.1
+T: 0 1 : 159 : 159 : 1.0
+T: 0 2 : 159 : 159 : 1.0
+T: 0 3 : 159 : 159 : 0.1
+T: 0 3 : 159 : 191 : 0.9
+T: 0 4 : 159 : 0 : 1.0
+T: 0 5 : 159 : 0 : 1.0
+T: 1 0 : 159 : 143 : 0.09
+T: 1 0 : 159 : 159 : 0.01
+T: 1 0 : 159 : 207 : 0.81
+T: 1 0 : 159 : 223 : 0.09
+T: 1 1 : 159 : 159 : 0.1
+T: 1 1 : 159 : 223 : 0.9
+T: 1 2 : 159 : 159 : 0.1
+T: 1 2 : 159 : 223 : 0.9
+T: 1 3 : 159 : 159 : 0.01
+T: 1 3 : 159 : 191 : 0.09
+T: 1 3 : 159 : 223 : 0.09
+T: 1 3 : 159 : 255 : 0.81
+T: 1 4 : 159 : 0 : 1.0
+T: 1 5 : 159 : 0 : 1.0
+T: 2 0 : 159 : 15 : 0.81
+T: 2 0 : 159 : 31 : 0.09
+T: 2 0 : 159 : 143 : 0.09
+T: 2 0 : 159 : 159 : 0.01
+T: 2 1 : 159 : 31 : 0.9
+T: 2 1 : 159 : 159 : 0.1
+T: 2 2 : 159 : 31 : 0.9
+T: 2 2 : 159 : 159 : 0.1
+T: 2 3 : 159 : 31 : 0.09
+T: 2 3 : 159 : 63 : 0.81
+T: 2 3 : 159 : 159 : 0.01
+T: 2 3 : 159 : 191 : 0.09
+T: 2 4 : 159 : 0 : 1.0
+T: 2 5 : 159 : 0 : 1.0
+T: 3 0 : 159 : 143 : 0.9
+T: 3 0 : 159 : 159 : 0.1
+T: 3 1 : 159 : 159 : 1.0
+T: 3 2 : 159 : 159 : 1.0
+T: 3 3 : 159 : 159 : 0.1
+T: 3 3 : 159 : 191 : 0.9
+T: 3 4 : 159 : 0 : 1.0
+T: 3 5 : 159 : 0 : 1.0
+T: 4 0 : 159 : 0 : 1.0
+T: 4 1 : 159 : 0 : 1.0
+T: 4 2 : 159 : 0 : 1.0
+T: 4 3 : 159 : 0 : 1.0
+T: 4 4 : 159 : 0 : 1.0
+T: 4 5 : 159 : 0 : 1.0
+T: 5 0 : 159 : 0 : 1.0
+T: 5 1 : 159 : 0 : 1.0
+T: 5 2 : 159 : 0 : 1.0
+T: 5 3 : 159 : 0 : 1.0
+T: 5 4 : 159 : 0 : 1.0
+T: 5 5 : 159 : 0 : 1.0
+T: 0 0 : 160 : 160 : 1.0
+T: 0 1 : 160 : 160 : 0.1
+T: 0 1 : 160 : 176 : 0.9
+T: 0 2 : 160 : 128 : 0.9
+T: 0 2 : 160 : 160 : 0.1
+T: 0 3 : 160 : 160 : 1.0
+T: 0 4 : 160 : 164 : 1.0
+T: 0 5 : 160 : 164 : 1.0
+T: 1 0 : 160 : 160 : 0.1
+T: 1 0 : 160 : 224 : 0.9
+T: 1 1 : 160 : 160 : 0.01
+T: 1 1 : 160 : 176 : 0.09
+T: 1 1 : 160 : 224 : 0.09
+T: 1 1 : 160 : 240 : 0.81
+T: 1 2 : 160 : 128 : 0.09
+T: 1 2 : 160 : 160 : 0.01
+T: 1 2 : 160 : 192 : 0.81
+T: 1 2 : 160 : 224 : 0.09
+T: 1 3 : 160 : 160 : 0.1
+T: 1 3 : 160 : 224 : 0.9
+T: 1 4 : 160 : 164 : 0.1
+T: 1 4 : 160 : 228 : 0.9
+T: 1 5 : 160 : 164 : 0.1
+T: 1 5 : 160 : 228 : 0.9
+T: 2 0 : 160 : 32 : 0.9
+T: 2 0 : 160 : 160 : 0.1
+T: 2 1 : 160 : 32 : 0.09
+T: 2 1 : 160 : 48 : 0.81
+T: 2 1 : 160 : 160 : 0.01
+T: 2 1 : 160 : 176 : 0.09
+T: 2 2 : 160 : 0 : 0.81
+T: 2 2 : 160 : 32 : 0.09
+T: 2 2 : 160 : 128 : 0.09
+T: 2 2 : 160 : 160 : 0.01
+T: 2 3 : 160 : 32 : 0.9
+T: 2 3 : 160 : 160 : 0.1
+T: 2 4 : 160 : 36 : 0.9
+T: 2 4 : 160 : 164 : 0.1
+T: 2 5 : 160 : 36 : 0.9
+T: 2 5 : 160 : 164 : 0.1
+T: 3 0 : 160 : 160 : 1.0
+T: 3 1 : 160 : 160 : 0.1
+T: 3 1 : 160 : 176 : 0.9
+T: 3 2 : 160 : 128 : 0.9
+T: 3 2 : 160 : 160 : 0.1
+T: 3 3 : 160 : 160 : 1.0
+T: 3 4 : 160 : 164 : 1.0
+T: 3 5 : 160 : 164 : 1.0
+T: 4 0 : 160 : 164 : 1.0
+T: 4 1 : 160 : 164 : 0.1
+T: 4 1 : 160 : 180 : 0.9
+T: 4 2 : 160 : 132 : 0.9
+T: 4 2 : 160 : 164 : 0.1
+T: 4 3 : 160 : 164 : 1.0
+T: 4 4 : 160 : 164 : 1.0
+T: 4 5 : 160 : 164 : 1.0
+T: 5 0 : 160 : 164 : 1.0
+T: 5 1 : 160 : 164 : 0.1
+T: 5 1 : 160 : 180 : 0.9
+T: 5 2 : 160 : 132 : 0.9
+T: 5 2 : 160 : 164 : 0.1
+T: 5 3 : 160 : 164 : 1.0
+T: 5 4 : 160 : 164 : 1.0
+T: 5 5 : 160 : 164 : 1.0
+T: 0 0 : 161 : 161 : 1.0
+T: 0 1 : 161 : 161 : 0.1
+T: 0 1 : 161 : 177 : 0.9
+T: 0 2 : 161 : 129 : 0.9
+T: 0 2 : 161 : 161 : 0.1
+T: 0 3 : 161 : 161 : 1.0
+T: 0 4 : 161 : 165 : 1.0
+T: 0 5 : 161 : 165 : 1.0
+T: 1 0 : 161 : 161 : 0.1
+T: 1 0 : 161 : 225 : 0.9
+T: 1 1 : 161 : 161 : 0.01
+T: 1 1 : 161 : 177 : 0.09
+T: 1 1 : 161 : 225 : 0.09
+T: 1 1 : 161 : 241 : 0.81
+T: 1 2 : 161 : 129 : 0.09
+T: 1 2 : 161 : 161 : 0.01
+T: 1 2 : 161 : 193 : 0.81
+T: 1 2 : 161 : 225 : 0.09
+T: 1 3 : 161 : 161 : 0.1
+T: 1 3 : 161 : 225 : 0.9
+T: 1 4 : 161 : 165 : 0.1
+T: 1 4 : 161 : 229 : 0.9
+T: 1 5 : 161 : 165 : 0.1
+T: 1 5 : 161 : 229 : 0.9
+T: 2 0 : 161 : 33 : 0.9
+T: 2 0 : 161 : 161 : 0.1
+T: 2 1 : 161 : 33 : 0.09
+T: 2 1 : 161 : 49 : 0.81
+T: 2 1 : 161 : 161 : 0.01
+T: 2 1 : 161 : 177 : 0.09
+T: 2 2 : 161 : 1 : 0.81
+T: 2 2 : 161 : 33 : 0.09
+T: 2 2 : 161 : 129 : 0.09
+T: 2 2 : 161 : 161 : 0.01
+T: 2 3 : 161 : 33 : 0.9
+T: 2 3 : 161 : 161 : 0.1
+T: 2 4 : 161 : 37 : 0.9
+T: 2 4 : 161 : 165 : 0.1
+T: 2 5 : 161 : 37 : 0.9
+T: 2 5 : 161 : 165 : 0.1
+T: 3 0 : 161 : 161 : 1.0
+T: 3 1 : 161 : 161 : 0.1
+T: 3 1 : 161 : 177 : 0.9
+T: 3 2 : 161 : 129 : 0.9
+T: 3 2 : 161 : 161 : 0.1
+T: 3 3 : 161 : 161 : 1.0
+T: 3 4 : 161 : 165 : 1.0
+T: 3 5 : 161 : 165 : 1.0
+T: 4 0 : 161 : 165 : 1.0
+T: 4 1 : 161 : 165 : 0.1
+T: 4 1 : 161 : 181 : 0.9
+T: 4 2 : 161 : 133 : 0.9
+T: 4 2 : 161 : 165 : 0.1
+T: 4 3 : 161 : 165 : 1.0
+T: 4 4 : 161 : 165 : 1.0
+T: 4 5 : 161 : 165 : 1.0
+T: 5 0 : 161 : 165 : 1.0
+T: 5 1 : 161 : 165 : 0.1
+T: 5 1 : 161 : 181 : 0.9
+T: 5 2 : 161 : 133 : 0.9
+T: 5 2 : 161 : 165 : 0.1
+T: 5 3 : 161 : 165 : 1.0
+T: 5 4 : 161 : 165 : 1.0
+T: 5 5 : 161 : 165 : 1.0
+T: 0 0 : 162 : 162 : 1.0
+T: 0 1 : 162 : 162 : 0.1
+T: 0 1 : 162 : 178 : 0.9
+T: 0 2 : 162 : 130 : 0.9
+T: 0 2 : 162 : 162 : 0.1
+T: 0 3 : 162 : 162 : 1.0
+T: 0 4 : 162 : 166 : 1.0
+T: 0 5 : 162 : 166 : 1.0
+T: 1 0 : 162 : 162 : 0.1
+T: 1 0 : 162 : 226 : 0.9
+T: 1 1 : 162 : 162 : 0.01
+T: 1 1 : 162 : 178 : 0.09
+T: 1 1 : 162 : 226 : 0.09
+T: 1 1 : 162 : 242 : 0.81
+T: 1 2 : 162 : 130 : 0.09
+T: 1 2 : 162 : 162 : 0.01
+T: 1 2 : 162 : 194 : 0.81
+T: 1 2 : 162 : 226 : 0.09
+T: 1 3 : 162 : 162 : 0.1
+T: 1 3 : 162 : 226 : 0.9
+T: 1 4 : 162 : 166 : 0.1
+T: 1 4 : 162 : 230 : 0.9
+T: 1 5 : 162 : 166 : 0.1
+T: 1 5 : 162 : 230 : 0.9
+T: 2 0 : 162 : 34 : 0.9
+T: 2 0 : 162 : 162 : 0.1
+T: 2 1 : 162 : 34 : 0.09
+T: 2 1 : 162 : 50 : 0.81
+T: 2 1 : 162 : 162 : 0.01
+T: 2 1 : 162 : 178 : 0.09
+T: 2 2 : 162 : 2 : 0.81
+T: 2 2 : 162 : 34 : 0.09
+T: 2 2 : 162 : 130 : 0.09
+T: 2 2 : 162 : 162 : 0.01
+T: 2 3 : 162 : 34 : 0.9
+T: 2 3 : 162 : 162 : 0.1
+T: 2 4 : 162 : 38 : 0.9
+T: 2 4 : 162 : 166 : 0.1
+T: 2 5 : 162 : 38 : 0.9
+T: 2 5 : 162 : 166 : 0.1
+T: 3 0 : 162 : 162 : 1.0
+T: 3 1 : 162 : 162 : 0.1
+T: 3 1 : 162 : 178 : 0.9
+T: 3 2 : 162 : 130 : 0.9
+T: 3 2 : 162 : 162 : 0.1
+T: 3 3 : 162 : 162 : 1.0
+T: 3 4 : 162 : 166 : 1.0
+T: 3 5 : 162 : 166 : 1.0
+T: 4 0 : 162 : 166 : 1.0
+T: 4 1 : 162 : 166 : 0.1
+T: 4 1 : 162 : 182 : 0.9
+T: 4 2 : 162 : 134 : 0.9
+T: 4 2 : 162 : 166 : 0.1
+T: 4 3 : 162 : 166 : 1.0
+T: 4 4 : 162 : 166 : 1.0
+T: 4 5 : 162 : 166 : 1.0
+T: 5 0 : 162 : 166 : 1.0
+T: 5 1 : 162 : 166 : 0.1
+T: 5 1 : 162 : 182 : 0.9
+T: 5 2 : 162 : 134 : 0.9
+T: 5 2 : 162 : 166 : 0.1
+T: 5 3 : 162 : 166 : 1.0
+T: 5 4 : 162 : 166 : 1.0
+T: 5 5 : 162 : 166 : 1.0
+T: 0 0 : 163 : 163 : 1.0
+T: 0 1 : 163 : 163 : 0.1
+T: 0 1 : 163 : 179 : 0.9
+T: 0 2 : 163 : 131 : 0.9
+T: 0 2 : 163 : 163 : 0.1
+T: 0 3 : 163 : 163 : 1.0
+T: 0 4 : 163 : 167 : 1.0
+T: 0 5 : 163 : 167 : 1.0
+T: 1 0 : 163 : 163 : 0.1
+T: 1 0 : 163 : 227 : 0.9
+T: 1 1 : 163 : 163 : 0.01
+T: 1 1 : 163 : 179 : 0.09
+T: 1 1 : 163 : 227 : 0.09
+T: 1 1 : 163 : 243 : 0.81
+T: 1 2 : 163 : 131 : 0.09
+T: 1 2 : 163 : 163 : 0.01
+T: 1 2 : 163 : 195 : 0.81
+T: 1 2 : 163 : 227 : 0.09
+T: 1 3 : 163 : 163 : 0.1
+T: 1 3 : 163 : 227 : 0.9
+T: 1 4 : 163 : 167 : 0.1
+T: 1 4 : 163 : 231 : 0.9
+T: 1 5 : 163 : 167 : 0.1
+T: 1 5 : 163 : 231 : 0.9
+T: 2 0 : 163 : 35 : 0.9
+T: 2 0 : 163 : 163 : 0.1
+T: 2 1 : 163 : 35 : 0.09
+T: 2 1 : 163 : 51 : 0.81
+T: 2 1 : 163 : 163 : 0.01
+T: 2 1 : 163 : 179 : 0.09
+T: 2 2 : 163 : 3 : 0.81
+T: 2 2 : 163 : 35 : 0.09
+T: 2 2 : 163 : 131 : 0.09
+T: 2 2 : 163 : 163 : 0.01
+T: 2 3 : 163 : 35 : 0.9
+T: 2 3 : 163 : 163 : 0.1
+T: 2 4 : 163 : 39 : 0.9
+T: 2 4 : 163 : 167 : 0.1
+T: 2 5 : 163 : 39 : 0.9
+T: 2 5 : 163 : 167 : 0.1
+T: 3 0 : 163 : 163 : 1.0
+T: 3 1 : 163 : 163 : 0.1
+T: 3 1 : 163 : 179 : 0.9
+T: 3 2 : 163 : 131 : 0.9
+T: 3 2 : 163 : 163 : 0.1
+T: 3 3 : 163 : 163 : 1.0
+T: 3 4 : 163 : 167 : 1.0
+T: 3 5 : 163 : 167 : 1.0
+T: 4 0 : 163 : 167 : 1.0
+T: 4 1 : 163 : 167 : 0.1
+T: 4 1 : 163 : 183 : 0.9
+T: 4 2 : 163 : 135 : 0.9
+T: 4 2 : 163 : 167 : 0.1
+T: 4 3 : 163 : 167 : 1.0
+T: 4 4 : 163 : 167 : 1.0
+T: 4 5 : 163 : 167 : 1.0
+T: 5 0 : 163 : 167 : 1.0
+T: 5 1 : 163 : 167 : 0.1
+T: 5 1 : 163 : 183 : 0.9
+T: 5 2 : 163 : 135 : 0.9
+T: 5 2 : 163 : 167 : 0.1
+T: 5 3 : 163 : 167 : 1.0
+T: 5 4 : 163 : 167 : 1.0
+T: 5 5 : 163 : 167 : 1.0
+T: 0 0 : 164 : 164 : 1.0
+T: 0 1 : 164 : 164 : 0.1
+T: 0 1 : 164 : 180 : 0.9
+T: 0 2 : 164 : 132 : 0.9
+T: 0 2 : 164 : 164 : 0.1
+T: 0 3 : 164 : 164 : 1.0
+T: 0 4 : 164 : 164 : 1.0
+T: 0 5 : 164 : 164 : 1.0
+T: 1 0 : 164 : 164 : 0.1
+T: 1 0 : 164 : 228 : 0.9
+T: 1 1 : 164 : 164 : 0.01
+T: 1 1 : 164 : 180 : 0.09
+T: 1 1 : 164 : 228 : 0.09
+T: 1 1 : 164 : 244 : 0.81
+T: 1 2 : 164 : 132 : 0.09
+T: 1 2 : 164 : 164 : 0.01
+T: 1 2 : 164 : 196 : 0.81
+T: 1 2 : 164 : 228 : 0.09
+T: 1 3 : 164 : 164 : 0.1
+T: 1 3 : 164 : 228 : 0.9
+T: 1 4 : 164 : 164 : 0.1
+T: 1 4 : 164 : 228 : 0.9
+T: 1 5 : 164 : 164 : 0.1
+T: 1 5 : 164 : 228 : 0.9
+T: 2 0 : 164 : 36 : 0.9
+T: 2 0 : 164 : 164 : 0.1
+T: 2 1 : 164 : 36 : 0.09
+T: 2 1 : 164 : 52 : 0.81
+T: 2 1 : 164 : 164 : 0.01
+T: 2 1 : 164 : 180 : 0.09
+T: 2 2 : 164 : 4 : 0.81
+T: 2 2 : 164 : 36 : 0.09
+T: 2 2 : 164 : 132 : 0.09
+T: 2 2 : 164 : 164 : 0.01
+T: 2 3 : 164 : 36 : 0.9
+T: 2 3 : 164 : 164 : 0.1
+T: 2 4 : 164 : 36 : 0.9
+T: 2 4 : 164 : 164 : 0.1
+T: 2 5 : 164 : 36 : 0.9
+T: 2 5 : 164 : 164 : 0.1
+T: 3 0 : 164 : 164 : 1.0
+T: 3 1 : 164 : 164 : 0.1
+T: 3 1 : 164 : 180 : 0.9
+T: 3 2 : 164 : 132 : 0.9
+T: 3 2 : 164 : 164 : 0.1
+T: 3 3 : 164 : 164 : 1.0
+T: 3 4 : 164 : 164 : 1.0
+T: 3 5 : 164 : 164 : 1.0
+T: 4 0 : 164 : 164 : 1.0
+T: 4 1 : 164 : 164 : 0.1
+T: 4 1 : 164 : 180 : 0.9
+T: 4 2 : 164 : 132 : 0.9
+T: 4 2 : 164 : 164 : 0.1
+T: 4 3 : 164 : 164 : 1.0
+T: 4 4 : 164 : 164 : 1.0
+T: 4 5 : 164 : 164 : 1.0
+T: 5 0 : 164 : 164 : 1.0
+T: 5 1 : 164 : 164 : 0.1
+T: 5 1 : 164 : 180 : 0.9
+T: 5 2 : 164 : 132 : 0.9
+T: 5 2 : 164 : 164 : 0.1
+T: 5 3 : 164 : 164 : 1.0
+T: 5 4 : 164 : 164 : 1.0
+T: 5 5 : 164 : 164 : 1.0
+T: 0 0 : 165 : 165 : 1.0
+T: 0 1 : 165 : 165 : 0.1
+T: 0 1 : 165 : 181 : 0.9
+T: 0 2 : 165 : 133 : 0.9
+T: 0 2 : 165 : 165 : 0.1
+T: 0 3 : 165 : 165 : 1.0
+T: 0 4 : 165 : 165 : 1.0
+T: 0 5 : 165 : 165 : 1.0
+T: 1 0 : 165 : 165 : 0.1
+T: 1 0 : 165 : 229 : 0.9
+T: 1 1 : 165 : 165 : 0.01
+T: 1 1 : 165 : 181 : 0.09
+T: 1 1 : 165 : 229 : 0.09
+T: 1 1 : 165 : 245 : 0.81
+T: 1 2 : 165 : 133 : 0.09
+T: 1 2 : 165 : 165 : 0.01
+T: 1 2 : 165 : 197 : 0.81
+T: 1 2 : 165 : 229 : 0.09
+T: 1 3 : 165 : 165 : 0.1
+T: 1 3 : 165 : 229 : 0.9
+T: 1 4 : 165 : 165 : 0.1
+T: 1 4 : 165 : 229 : 0.9
+T: 1 5 : 165 : 165 : 0.1
+T: 1 5 : 165 : 229 : 0.9
+T: 2 0 : 165 : 37 : 0.9
+T: 2 0 : 165 : 165 : 0.1
+T: 2 1 : 165 : 37 : 0.09
+T: 2 1 : 165 : 53 : 0.81
+T: 2 1 : 165 : 165 : 0.01
+T: 2 1 : 165 : 181 : 0.09
+T: 2 2 : 165 : 5 : 0.81
+T: 2 2 : 165 : 37 : 0.09
+T: 2 2 : 165 : 133 : 0.09
+T: 2 2 : 165 : 165 : 0.01
+T: 2 3 : 165 : 37 : 0.9
+T: 2 3 : 165 : 165 : 0.1
+T: 2 4 : 165 : 37 : 0.9
+T: 2 4 : 165 : 165 : 0.1
+T: 2 5 : 165 : 37 : 0.9
+T: 2 5 : 165 : 165 : 0.1
+T: 3 0 : 165 : 165 : 1.0
+T: 3 1 : 165 : 165 : 0.1
+T: 3 1 : 165 : 181 : 0.9
+T: 3 2 : 165 : 133 : 0.9
+T: 3 2 : 165 : 165 : 0.1
+T: 3 3 : 165 : 165 : 1.0
+T: 3 4 : 165 : 165 : 1.0
+T: 3 5 : 165 : 165 : 1.0
+T: 4 0 : 165 : 165 : 1.0
+T: 4 1 : 165 : 165 : 0.1
+T: 4 1 : 165 : 181 : 0.9
+T: 4 2 : 165 : 133 : 0.9
+T: 4 2 : 165 : 165 : 0.1
+T: 4 3 : 165 : 165 : 1.0
+T: 4 4 : 165 : 165 : 1.0
+T: 4 5 : 165 : 165 : 1.0
+T: 5 0 : 165 : 165 : 1.0
+T: 5 1 : 165 : 165 : 0.1
+T: 5 1 : 165 : 181 : 0.9
+T: 5 2 : 165 : 133 : 0.9
+T: 5 2 : 165 : 165 : 0.1
+T: 5 3 : 165 : 165 : 1.0
+T: 5 4 : 165 : 165 : 1.0
+T: 5 5 : 165 : 165 : 1.0
+T: 0 0 : 166 : 166 : 1.0
+T: 0 1 : 166 : 166 : 0.1
+T: 0 1 : 166 : 182 : 0.9
+T: 0 2 : 166 : 134 : 0.9
+T: 0 2 : 166 : 166 : 0.1
+T: 0 3 : 166 : 166 : 1.0
+T: 0 4 : 166 : 166 : 1.0
+T: 0 5 : 166 : 166 : 1.0
+T: 1 0 : 166 : 166 : 0.1
+T: 1 0 : 166 : 230 : 0.9
+T: 1 1 : 166 : 166 : 0.01
+T: 1 1 : 166 : 182 : 0.09
+T: 1 1 : 166 : 230 : 0.09
+T: 1 1 : 166 : 246 : 0.81
+T: 1 2 : 166 : 134 : 0.09
+T: 1 2 : 166 : 166 : 0.01
+T: 1 2 : 166 : 198 : 0.81
+T: 1 2 : 166 : 230 : 0.09
+T: 1 3 : 166 : 166 : 0.1
+T: 1 3 : 166 : 230 : 0.9
+T: 1 4 : 166 : 166 : 0.1
+T: 1 4 : 166 : 230 : 0.9
+T: 1 5 : 166 : 166 : 0.1
+T: 1 5 : 166 : 230 : 0.9
+T: 2 0 : 166 : 38 : 0.9
+T: 2 0 : 166 : 166 : 0.1
+T: 2 1 : 166 : 38 : 0.09
+T: 2 1 : 166 : 54 : 0.81
+T: 2 1 : 166 : 166 : 0.01
+T: 2 1 : 166 : 182 : 0.09
+T: 2 2 : 166 : 6 : 0.81
+T: 2 2 : 166 : 38 : 0.09
+T: 2 2 : 166 : 134 : 0.09
+T: 2 2 : 166 : 166 : 0.01
+T: 2 3 : 166 : 38 : 0.9
+T: 2 3 : 166 : 166 : 0.1
+T: 2 4 : 166 : 38 : 0.9
+T: 2 4 : 166 : 166 : 0.1
+T: 2 5 : 166 : 38 : 0.9
+T: 2 5 : 166 : 166 : 0.1
+T: 3 0 : 166 : 166 : 1.0
+T: 3 1 : 166 : 166 : 0.1
+T: 3 1 : 166 : 182 : 0.9
+T: 3 2 : 166 : 134 : 0.9
+T: 3 2 : 166 : 166 : 0.1
+T: 3 3 : 166 : 166 : 1.0
+T: 3 4 : 166 : 166 : 1.0
+T: 3 5 : 166 : 166 : 1.0
+T: 4 0 : 166 : 166 : 1.0
+T: 4 1 : 166 : 166 : 0.1
+T: 4 1 : 166 : 182 : 0.9
+T: 4 2 : 166 : 134 : 0.9
+T: 4 2 : 166 : 166 : 0.1
+T: 4 3 : 166 : 166 : 1.0
+T: 4 4 : 166 : 166 : 1.0
+T: 4 5 : 166 : 166 : 1.0
+T: 5 0 : 166 : 166 : 1.0
+T: 5 1 : 166 : 166 : 0.1
+T: 5 1 : 166 : 182 : 0.9
+T: 5 2 : 166 : 134 : 0.9
+T: 5 2 : 166 : 166 : 0.1
+T: 5 3 : 166 : 166 : 1.0
+T: 5 4 : 166 : 166 : 1.0
+T: 5 5 : 166 : 166 : 1.0
+T: 0 0 : 167 : 167 : 1.0
+T: 0 1 : 167 : 167 : 0.1
+T: 0 1 : 167 : 183 : 0.9
+T: 0 2 : 167 : 135 : 0.9
+T: 0 2 : 167 : 167 : 0.1
+T: 0 3 : 167 : 167 : 1.0
+T: 0 4 : 167 : 167 : 1.0
+T: 0 5 : 167 : 167 : 1.0
+T: 1 0 : 167 : 167 : 0.1
+T: 1 0 : 167 : 231 : 0.9
+T: 1 1 : 167 : 167 : 0.01
+T: 1 1 : 167 : 183 : 0.09
+T: 1 1 : 167 : 231 : 0.09
+T: 1 1 : 167 : 247 : 0.81
+T: 1 2 : 167 : 135 : 0.09
+T: 1 2 : 167 : 167 : 0.01
+T: 1 2 : 167 : 199 : 0.81
+T: 1 2 : 167 : 231 : 0.09
+T: 1 3 : 167 : 167 : 0.1
+T: 1 3 : 167 : 231 : 0.9
+T: 1 4 : 167 : 167 : 0.1
+T: 1 4 : 167 : 231 : 0.9
+T: 1 5 : 167 : 167 : 0.1
+T: 1 5 : 167 : 231 : 0.9
+T: 2 0 : 167 : 39 : 0.9
+T: 2 0 : 167 : 167 : 0.1
+T: 2 1 : 167 : 39 : 0.09
+T: 2 1 : 167 : 55 : 0.81
+T: 2 1 : 167 : 167 : 0.01
+T: 2 1 : 167 : 183 : 0.09
+T: 2 2 : 167 : 7 : 0.81
+T: 2 2 : 167 : 39 : 0.09
+T: 2 2 : 167 : 135 : 0.09
+T: 2 2 : 167 : 167 : 0.01
+T: 2 3 : 167 : 39 : 0.9
+T: 2 3 : 167 : 167 : 0.1
+T: 2 4 : 167 : 39 : 0.9
+T: 2 4 : 167 : 167 : 0.1
+T: 2 5 : 167 : 39 : 0.9
+T: 2 5 : 167 : 167 : 0.1
+T: 3 0 : 167 : 167 : 1.0
+T: 3 1 : 167 : 167 : 0.1
+T: 3 1 : 167 : 183 : 0.9
+T: 3 2 : 167 : 135 : 0.9
+T: 3 2 : 167 : 167 : 0.1
+T: 3 3 : 167 : 167 : 1.0
+T: 3 4 : 167 : 167 : 1.0
+T: 3 5 : 167 : 167 : 1.0
+T: 4 0 : 167 : 167 : 1.0
+T: 4 1 : 167 : 167 : 0.1
+T: 4 1 : 167 : 183 : 0.9
+T: 4 2 : 167 : 135 : 0.9
+T: 4 2 : 167 : 167 : 0.1
+T: 4 3 : 167 : 167 : 1.0
+T: 4 4 : 167 : 167 : 1.0
+T: 4 5 : 167 : 167 : 1.0
+T: 5 0 : 167 : 167 : 1.0
+T: 5 1 : 167 : 167 : 0.1
+T: 5 1 : 167 : 183 : 0.9
+T: 5 2 : 167 : 135 : 0.9
+T: 5 2 : 167 : 167 : 0.1
+T: 5 3 : 167 : 167 : 1.0
+T: 5 4 : 167 : 167 : 1.0
+T: 5 5 : 167 : 167 : 1.0
+T: 0 0 : 168 : 168 : 1.0
+T: 0 1 : 168 : 168 : 0.1
+T: 0 1 : 168 : 184 : 0.9
+T: 0 2 : 168 : 136 : 0.9
+T: 0 2 : 168 : 168 : 0.1
+T: 0 3 : 168 : 168 : 1.0
+T: 0 4 : 168 : 172 : 1.0
+T: 0 5 : 168 : 172 : 1.0
+T: 1 0 : 168 : 168 : 0.1
+T: 1 0 : 168 : 232 : 0.9
+T: 1 1 : 168 : 168 : 0.01
+T: 1 1 : 168 : 184 : 0.09
+T: 1 1 : 168 : 232 : 0.09
+T: 1 1 : 168 : 248 : 0.81
+T: 1 2 : 168 : 136 : 0.09
+T: 1 2 : 168 : 168 : 0.01
+T: 1 2 : 168 : 200 : 0.81
+T: 1 2 : 168 : 232 : 0.09
+T: 1 3 : 168 : 168 : 0.1
+T: 1 3 : 168 : 232 : 0.9
+T: 1 4 : 168 : 172 : 0.1
+T: 1 4 : 168 : 236 : 0.9
+T: 1 5 : 168 : 172 : 0.1
+T: 1 5 : 168 : 236 : 0.9
+T: 2 0 : 168 : 40 : 0.9
+T: 2 0 : 168 : 168 : 0.1
+T: 2 1 : 168 : 40 : 0.09
+T: 2 1 : 168 : 56 : 0.81
+T: 2 1 : 168 : 168 : 0.01
+T: 2 1 : 168 : 184 : 0.09
+T: 2 2 : 168 : 8 : 0.81
+T: 2 2 : 168 : 40 : 0.09
+T: 2 2 : 168 : 136 : 0.09
+T: 2 2 : 168 : 168 : 0.01
+T: 2 3 : 168 : 40 : 0.9
+T: 2 3 : 168 : 168 : 0.1
+T: 2 4 : 168 : 44 : 0.9
+T: 2 4 : 168 : 172 : 0.1
+T: 2 5 : 168 : 44 : 0.9
+T: 2 5 : 168 : 172 : 0.1
+T: 3 0 : 168 : 168 : 1.0
+T: 3 1 : 168 : 168 : 0.1
+T: 3 1 : 168 : 184 : 0.9
+T: 3 2 : 168 : 136 : 0.9
+T: 3 2 : 168 : 168 : 0.1
+T: 3 3 : 168 : 168 : 1.0
+T: 3 4 : 168 : 172 : 1.0
+T: 3 5 : 168 : 172 : 1.0
+T: 4 0 : 168 : 172 : 1.0
+T: 4 1 : 168 : 172 : 0.1
+T: 4 1 : 168 : 188 : 0.9
+T: 4 2 : 168 : 140 : 0.9
+T: 4 2 : 168 : 172 : 0.1
+T: 4 3 : 168 : 172 : 1.0
+T: 4 4 : 168 : 172 : 1.0
+T: 4 5 : 168 : 172 : 1.0
+T: 5 0 : 168 : 172 : 1.0
+T: 5 1 : 168 : 172 : 0.1
+T: 5 1 : 168 : 188 : 0.9
+T: 5 2 : 168 : 140 : 0.9
+T: 5 2 : 168 : 172 : 0.1
+T: 5 3 : 168 : 172 : 1.0
+T: 5 4 : 168 : 172 : 1.0
+T: 5 5 : 168 : 172 : 1.0
+T: 0 0 : 169 : 169 : 1.0
+T: 0 1 : 169 : 169 : 0.1
+T: 0 1 : 169 : 185 : 0.9
+T: 0 2 : 169 : 137 : 0.9
+T: 0 2 : 169 : 169 : 0.1
+T: 0 3 : 169 : 169 : 1.0
+T: 0 4 : 169 : 173 : 1.0
+T: 0 5 : 169 : 173 : 1.0
+T: 1 0 : 169 : 169 : 0.1
+T: 1 0 : 169 : 233 : 0.9
+T: 1 1 : 169 : 169 : 0.01
+T: 1 1 : 169 : 185 : 0.09
+T: 1 1 : 169 : 233 : 0.09
+T: 1 1 : 169 : 249 : 0.81
+T: 1 2 : 169 : 137 : 0.09
+T: 1 2 : 169 : 169 : 0.01
+T: 1 2 : 169 : 201 : 0.81
+T: 1 2 : 169 : 233 : 0.09
+T: 1 3 : 169 : 169 : 0.1
+T: 1 3 : 169 : 233 : 0.9
+T: 1 4 : 169 : 173 : 0.1
+T: 1 4 : 169 : 237 : 0.9
+T: 1 5 : 169 : 173 : 0.1
+T: 1 5 : 169 : 237 : 0.9
+T: 2 0 : 169 : 41 : 0.9
+T: 2 0 : 169 : 169 : 0.1
+T: 2 1 : 169 : 41 : 0.09
+T: 2 1 : 169 : 57 : 0.81
+T: 2 1 : 169 : 169 : 0.01
+T: 2 1 : 169 : 185 : 0.09
+T: 2 2 : 169 : 9 : 0.81
+T: 2 2 : 169 : 41 : 0.09
+T: 2 2 : 169 : 137 : 0.09
+T: 2 2 : 169 : 169 : 0.01
+T: 2 3 : 169 : 41 : 0.9
+T: 2 3 : 169 : 169 : 0.1
+T: 2 4 : 169 : 45 : 0.9
+T: 2 4 : 169 : 173 : 0.1
+T: 2 5 : 169 : 45 : 0.9
+T: 2 5 : 169 : 173 : 0.1
+T: 3 0 : 169 : 169 : 1.0
+T: 3 1 : 169 : 169 : 0.1
+T: 3 1 : 169 : 185 : 0.9
+T: 3 2 : 169 : 137 : 0.9
+T: 3 2 : 169 : 169 : 0.1
+T: 3 3 : 169 : 169 : 1.0
+T: 3 4 : 169 : 173 : 1.0
+T: 3 5 : 169 : 173 : 1.0
+T: 4 0 : 169 : 173 : 1.0
+T: 4 1 : 169 : 173 : 0.1
+T: 4 1 : 169 : 189 : 0.9
+T: 4 2 : 169 : 141 : 0.9
+T: 4 2 : 169 : 173 : 0.1
+T: 4 3 : 169 : 173 : 1.0
+T: 4 4 : 169 : 173 : 1.0
+T: 4 5 : 169 : 173 : 1.0
+T: 5 0 : 169 : 173 : 1.0
+T: 5 1 : 169 : 173 : 0.1
+T: 5 1 : 169 : 189 : 0.9
+T: 5 2 : 169 : 141 : 0.9
+T: 5 2 : 169 : 173 : 0.1
+T: 5 3 : 169 : 173 : 1.0
+T: 5 4 : 169 : 173 : 1.0
+T: 5 5 : 169 : 173 : 1.0
+T: 0 0 : 170 : 170 : 1.0
+T: 0 1 : 170 : 170 : 0.1
+T: 0 1 : 170 : 186 : 0.9
+T: 0 2 : 170 : 138 : 0.9
+T: 0 2 : 170 : 170 : 0.1
+T: 0 3 : 170 : 170 : 1.0
+T: 0 4 : 170 : 174 : 1.0
+T: 0 5 : 170 : 174 : 1.0
+T: 1 0 : 170 : 170 : 0.1
+T: 1 0 : 170 : 234 : 0.9
+T: 1 1 : 170 : 170 : 0.01
+T: 1 1 : 170 : 186 : 0.09
+T: 1 1 : 170 : 234 : 0.09
+T: 1 1 : 170 : 250 : 0.81
+T: 1 2 : 170 : 138 : 0.09
+T: 1 2 : 170 : 170 : 0.01
+T: 1 2 : 170 : 202 : 0.81
+T: 1 2 : 170 : 234 : 0.09
+T: 1 3 : 170 : 170 : 0.1
+T: 1 3 : 170 : 234 : 0.9
+T: 1 4 : 170 : 174 : 0.1
+T: 1 4 : 170 : 238 : 0.9
+T: 1 5 : 170 : 174 : 0.1
+T: 1 5 : 170 : 238 : 0.9
+T: 2 0 : 170 : 42 : 0.9
+T: 2 0 : 170 : 170 : 0.1
+T: 2 1 : 170 : 42 : 0.09
+T: 2 1 : 170 : 58 : 0.81
+T: 2 1 : 170 : 170 : 0.01
+T: 2 1 : 170 : 186 : 0.09
+T: 2 2 : 170 : 10 : 0.81
+T: 2 2 : 170 : 42 : 0.09
+T: 2 2 : 170 : 138 : 0.09
+T: 2 2 : 170 : 170 : 0.01
+T: 2 3 : 170 : 42 : 0.9
+T: 2 3 : 170 : 170 : 0.1
+T: 2 4 : 170 : 46 : 0.9
+T: 2 4 : 170 : 174 : 0.1
+T: 2 5 : 170 : 46 : 0.9
+T: 2 5 : 170 : 174 : 0.1
+T: 3 0 : 170 : 170 : 1.0
+T: 3 1 : 170 : 170 : 0.1
+T: 3 1 : 170 : 186 : 0.9
+T: 3 2 : 170 : 138 : 0.9
+T: 3 2 : 170 : 170 : 0.1
+T: 3 3 : 170 : 170 : 1.0
+T: 3 4 : 170 : 174 : 1.0
+T: 3 5 : 170 : 174 : 1.0
+T: 4 0 : 170 : 174 : 1.0
+T: 4 1 : 170 : 174 : 0.1
+T: 4 1 : 170 : 190 : 0.9
+T: 4 2 : 170 : 142 : 0.9
+T: 4 2 : 170 : 174 : 0.1
+T: 4 3 : 170 : 174 : 1.0
+T: 4 4 : 170 : 174 : 1.0
+T: 4 5 : 170 : 174 : 1.0
+T: 5 0 : 170 : 174 : 1.0
+T: 5 1 : 170 : 174 : 0.1
+T: 5 1 : 170 : 190 : 0.9
+T: 5 2 : 170 : 142 : 0.9
+T: 5 2 : 170 : 174 : 0.1
+T: 5 3 : 170 : 174 : 1.0
+T: 5 4 : 170 : 174 : 1.0
+T: 5 5 : 170 : 174 : 1.0
+T: 0 0 : 171 : 171 : 1.0
+T: 0 1 : 171 : 171 : 0.1
+T: 0 1 : 171 : 187 : 0.9
+T: 0 2 : 171 : 139 : 0.9
+T: 0 2 : 171 : 171 : 0.1
+T: 0 3 : 171 : 171 : 1.0
+T: 0 4 : 171 : 0 : 1.0
+T: 0 5 : 171 : 0 : 1.0
+T: 1 0 : 171 : 171 : 0.1
+T: 1 0 : 171 : 235 : 0.9
+T: 1 1 : 171 : 171 : 0.01
+T: 1 1 : 171 : 187 : 0.09
+T: 1 1 : 171 : 235 : 0.09
+T: 1 1 : 171 : 251 : 0.81
+T: 1 2 : 171 : 139 : 0.09
+T: 1 2 : 171 : 171 : 0.01
+T: 1 2 : 171 : 203 : 0.81
+T: 1 2 : 171 : 235 : 0.09
+T: 1 3 : 171 : 171 : 0.1
+T: 1 3 : 171 : 235 : 0.9
+T: 1 4 : 171 : 0 : 1.0
+T: 1 5 : 171 : 0 : 1.0
+T: 2 0 : 171 : 43 : 0.9
+T: 2 0 : 171 : 171 : 0.1
+T: 2 1 : 171 : 43 : 0.09
+T: 2 1 : 171 : 59 : 0.81
+T: 2 1 : 171 : 171 : 0.01
+T: 2 1 : 171 : 187 : 0.09
+T: 2 2 : 171 : 11 : 0.81
+T: 2 2 : 171 : 43 : 0.09
+T: 2 2 : 171 : 139 : 0.09
+T: 2 2 : 171 : 171 : 0.01
+T: 2 3 : 171 : 43 : 0.9
+T: 2 3 : 171 : 171 : 0.1
+T: 2 4 : 171 : 0 : 1.0
+T: 2 5 : 171 : 0 : 1.0
+T: 3 0 : 171 : 171 : 1.0
+T: 3 1 : 171 : 171 : 0.1
+T: 3 1 : 171 : 187 : 0.9
+T: 3 2 : 171 : 139 : 0.9
+T: 3 2 : 171 : 171 : 0.1
+T: 3 3 : 171 : 171 : 1.0
+T: 3 4 : 171 : 0 : 1.0
+T: 3 5 : 171 : 0 : 1.0
+T: 4 0 : 171 : 0 : 1.0
+T: 4 1 : 171 : 0 : 1.0
+T: 4 2 : 171 : 0 : 1.0
+T: 4 3 : 171 : 0 : 1.0
+T: 4 4 : 171 : 0 : 1.0
+T: 4 5 : 171 : 0 : 1.0
+T: 5 0 : 171 : 0 : 1.0
+T: 5 1 : 171 : 0 : 1.0
+T: 5 2 : 171 : 0 : 1.0
+T: 5 3 : 171 : 0 : 1.0
+T: 5 4 : 171 : 0 : 1.0
+T: 5 5 : 171 : 0 : 1.0
+T: 0 0 : 172 : 172 : 1.0
+T: 0 1 : 172 : 172 : 0.1
+T: 0 1 : 172 : 188 : 0.9
+T: 0 2 : 172 : 140 : 0.9
+T: 0 2 : 172 : 172 : 0.1
+T: 0 3 : 172 : 172 : 1.0
+T: 0 4 : 172 : 172 : 1.0
+T: 0 5 : 172 : 172 : 1.0
+T: 1 0 : 172 : 172 : 0.1
+T: 1 0 : 172 : 236 : 0.9
+T: 1 1 : 172 : 172 : 0.01
+T: 1 1 : 172 : 188 : 0.09
+T: 1 1 : 172 : 236 : 0.09
+T: 1 1 : 172 : 252 : 0.81
+T: 1 2 : 172 : 140 : 0.09
+T: 1 2 : 172 : 172 : 0.01
+T: 1 2 : 172 : 204 : 0.81
+T: 1 2 : 172 : 236 : 0.09
+T: 1 3 : 172 : 172 : 0.1
+T: 1 3 : 172 : 236 : 0.9
+T: 1 4 : 172 : 172 : 0.1
+T: 1 4 : 172 : 236 : 0.9
+T: 1 5 : 172 : 172 : 0.1
+T: 1 5 : 172 : 236 : 0.9
+T: 2 0 : 172 : 44 : 0.9
+T: 2 0 : 172 : 172 : 0.1
+T: 2 1 : 172 : 44 : 0.09
+T: 2 1 : 172 : 60 : 0.81
+T: 2 1 : 172 : 172 : 0.01
+T: 2 1 : 172 : 188 : 0.09
+T: 2 2 : 172 : 12 : 0.81
+T: 2 2 : 172 : 44 : 0.09
+T: 2 2 : 172 : 140 : 0.09
+T: 2 2 : 172 : 172 : 0.01
+T: 2 3 : 172 : 44 : 0.9
+T: 2 3 : 172 : 172 : 0.1
+T: 2 4 : 172 : 44 : 0.9
+T: 2 4 : 172 : 172 : 0.1
+T: 2 5 : 172 : 44 : 0.9
+T: 2 5 : 172 : 172 : 0.1
+T: 3 0 : 172 : 172 : 1.0
+T: 3 1 : 172 : 172 : 0.1
+T: 3 1 : 172 : 188 : 0.9
+T: 3 2 : 172 : 140 : 0.9
+T: 3 2 : 172 : 172 : 0.1
+T: 3 3 : 172 : 172 : 1.0
+T: 3 4 : 172 : 172 : 1.0
+T: 3 5 : 172 : 172 : 1.0
+T: 4 0 : 172 : 172 : 1.0
+T: 4 1 : 172 : 172 : 0.1
+T: 4 1 : 172 : 188 : 0.9
+T: 4 2 : 172 : 140 : 0.9
+T: 4 2 : 172 : 172 : 0.1
+T: 4 3 : 172 : 172 : 1.0
+T: 4 4 : 172 : 172 : 1.0
+T: 4 5 : 172 : 172 : 1.0
+T: 5 0 : 172 : 172 : 1.0
+T: 5 1 : 172 : 172 : 0.1
+T: 5 1 : 172 : 188 : 0.9
+T: 5 2 : 172 : 140 : 0.9
+T: 5 2 : 172 : 172 : 0.1
+T: 5 3 : 172 : 172 : 1.0
+T: 5 4 : 172 : 172 : 1.0
+T: 5 5 : 172 : 172 : 1.0
+T: 0 0 : 173 : 173 : 1.0
+T: 0 1 : 173 : 173 : 0.1
+T: 0 1 : 173 : 189 : 0.9
+T: 0 2 : 173 : 141 : 0.9
+T: 0 2 : 173 : 173 : 0.1
+T: 0 3 : 173 : 173 : 1.0
+T: 0 4 : 173 : 173 : 1.0
+T: 0 5 : 173 : 173 : 1.0
+T: 1 0 : 173 : 173 : 0.1
+T: 1 0 : 173 : 237 : 0.9
+T: 1 1 : 173 : 173 : 0.01
+T: 1 1 : 173 : 189 : 0.09
+T: 1 1 : 173 : 237 : 0.09
+T: 1 1 : 173 : 253 : 0.81
+T: 1 2 : 173 : 141 : 0.09
+T: 1 2 : 173 : 173 : 0.01
+T: 1 2 : 173 : 205 : 0.81
+T: 1 2 : 173 : 237 : 0.09
+T: 1 3 : 173 : 173 : 0.1
+T: 1 3 : 173 : 237 : 0.9
+T: 1 4 : 173 : 173 : 0.1
+T: 1 4 : 173 : 237 : 0.9
+T: 1 5 : 173 : 173 : 0.1
+T: 1 5 : 173 : 237 : 0.9
+T: 2 0 : 173 : 45 : 0.9
+T: 2 0 : 173 : 173 : 0.1
+T: 2 1 : 173 : 45 : 0.09
+T: 2 1 : 173 : 61 : 0.81
+T: 2 1 : 173 : 173 : 0.01
+T: 2 1 : 173 : 189 : 0.09
+T: 2 2 : 173 : 13 : 0.81
+T: 2 2 : 173 : 45 : 0.09
+T: 2 2 : 173 : 141 : 0.09
+T: 2 2 : 173 : 173 : 0.01
+T: 2 3 : 173 : 45 : 0.9
+T: 2 3 : 173 : 173 : 0.1
+T: 2 4 : 173 : 45 : 0.9
+T: 2 4 : 173 : 173 : 0.1
+T: 2 5 : 173 : 45 : 0.9
+T: 2 5 : 173 : 173 : 0.1
+T: 3 0 : 173 : 173 : 1.0
+T: 3 1 : 173 : 173 : 0.1
+T: 3 1 : 173 : 189 : 0.9
+T: 3 2 : 173 : 141 : 0.9
+T: 3 2 : 173 : 173 : 0.1
+T: 3 3 : 173 : 173 : 1.0
+T: 3 4 : 173 : 173 : 1.0
+T: 3 5 : 173 : 173 : 1.0
+T: 4 0 : 173 : 173 : 1.0
+T: 4 1 : 173 : 173 : 0.1
+T: 4 1 : 173 : 189 : 0.9
+T: 4 2 : 173 : 141 : 0.9
+T: 4 2 : 173 : 173 : 0.1
+T: 4 3 : 173 : 173 : 1.0
+T: 4 4 : 173 : 173 : 1.0
+T: 4 5 : 173 : 173 : 1.0
+T: 5 0 : 173 : 173 : 1.0
+T: 5 1 : 173 : 173 : 0.1
+T: 5 1 : 173 : 189 : 0.9
+T: 5 2 : 173 : 141 : 0.9
+T: 5 2 : 173 : 173 : 0.1
+T: 5 3 : 173 : 173 : 1.0
+T: 5 4 : 173 : 173 : 1.0
+T: 5 5 : 173 : 173 : 1.0
+T: 0 0 : 174 : 174 : 1.0
+T: 0 1 : 174 : 174 : 0.1
+T: 0 1 : 174 : 190 : 0.9
+T: 0 2 : 174 : 142 : 0.9
+T: 0 2 : 174 : 174 : 0.1
+T: 0 3 : 174 : 174 : 1.0
+T: 0 4 : 174 : 174 : 1.0
+T: 0 5 : 174 : 174 : 1.0
+T: 1 0 : 174 : 174 : 0.1
+T: 1 0 : 174 : 238 : 0.9
+T: 1 1 : 174 : 174 : 0.01
+T: 1 1 : 174 : 190 : 0.09
+T: 1 1 : 174 : 238 : 0.09
+T: 1 1 : 174 : 254 : 0.81
+T: 1 2 : 174 : 142 : 0.09
+T: 1 2 : 174 : 174 : 0.01
+T: 1 2 : 174 : 206 : 0.81
+T: 1 2 : 174 : 238 : 0.09
+T: 1 3 : 174 : 174 : 0.1
+T: 1 3 : 174 : 238 : 0.9
+T: 1 4 : 174 : 174 : 0.1
+T: 1 4 : 174 : 238 : 0.9
+T: 1 5 : 174 : 174 : 0.1
+T: 1 5 : 174 : 238 : 0.9
+T: 2 0 : 174 : 46 : 0.9
+T: 2 0 : 174 : 174 : 0.1
+T: 2 1 : 174 : 46 : 0.09
+T: 2 1 : 174 : 62 : 0.81
+T: 2 1 : 174 : 174 : 0.01
+T: 2 1 : 174 : 190 : 0.09
+T: 2 2 : 174 : 14 : 0.81
+T: 2 2 : 174 : 46 : 0.09
+T: 2 2 : 174 : 142 : 0.09
+T: 2 2 : 174 : 174 : 0.01
+T: 2 3 : 174 : 46 : 0.9
+T: 2 3 : 174 : 174 : 0.1
+T: 2 4 : 174 : 46 : 0.9
+T: 2 4 : 174 : 174 : 0.1
+T: 2 5 : 174 : 46 : 0.9
+T: 2 5 : 174 : 174 : 0.1
+T: 3 0 : 174 : 174 : 1.0
+T: 3 1 : 174 : 174 : 0.1
+T: 3 1 : 174 : 190 : 0.9
+T: 3 2 : 174 : 142 : 0.9
+T: 3 2 : 174 : 174 : 0.1
+T: 3 3 : 174 : 174 : 1.0
+T: 3 4 : 174 : 174 : 1.0
+T: 3 5 : 174 : 174 : 1.0
+T: 4 0 : 174 : 174 : 1.0
+T: 4 1 : 174 : 174 : 0.1
+T: 4 1 : 174 : 190 : 0.9
+T: 4 2 : 174 : 142 : 0.9
+T: 4 2 : 174 : 174 : 0.1
+T: 4 3 : 174 : 174 : 1.0
+T: 4 4 : 174 : 174 : 1.0
+T: 4 5 : 174 : 174 : 1.0
+T: 5 0 : 174 : 174 : 1.0
+T: 5 1 : 174 : 174 : 0.1
+T: 5 1 : 174 : 190 : 0.9
+T: 5 2 : 174 : 142 : 0.9
+T: 5 2 : 174 : 174 : 0.1
+T: 5 3 : 174 : 174 : 1.0
+T: 5 4 : 174 : 174 : 1.0
+T: 5 5 : 174 : 174 : 1.0
+T: 0 0 : 175 : 175 : 1.0
+T: 0 1 : 175 : 175 : 0.1
+T: 0 1 : 175 : 191 : 0.9
+T: 0 2 : 175 : 143 : 0.9
+T: 0 2 : 175 : 175 : 0.1
+T: 0 3 : 175 : 175 : 1.0
+T: 0 4 : 175 : 0 : 1.0
+T: 0 5 : 175 : 0 : 1.0
+T: 1 0 : 175 : 175 : 0.1
+T: 1 0 : 175 : 239 : 0.9
+T: 1 1 : 175 : 175 : 0.01
+T: 1 1 : 175 : 191 : 0.09
+T: 1 1 : 175 : 239 : 0.09
+T: 1 1 : 175 : 255 : 0.81
+T: 1 2 : 175 : 143 : 0.09
+T: 1 2 : 175 : 175 : 0.01
+T: 1 2 : 175 : 207 : 0.81
+T: 1 2 : 175 : 239 : 0.09
+T: 1 3 : 175 : 175 : 0.1
+T: 1 3 : 175 : 239 : 0.9
+T: 1 4 : 175 : 0 : 1.0
+T: 1 5 : 175 : 0 : 1.0
+T: 2 0 : 175 : 47 : 0.9
+T: 2 0 : 175 : 175 : 0.1
+T: 2 1 : 175 : 47 : 0.09
+T: 2 1 : 175 : 63 : 0.81
+T: 2 1 : 175 : 175 : 0.01
+T: 2 1 : 175 : 191 : 0.09
+T: 2 2 : 175 : 15 : 0.81
+T: 2 2 : 175 : 47 : 0.09
+T: 2 2 : 175 : 143 : 0.09
+T: 2 2 : 175 : 175 : 0.01
+T: 2 3 : 175 : 47 : 0.9
+T: 2 3 : 175 : 175 : 0.1
+T: 2 4 : 175 : 0 : 1.0
+T: 2 5 : 175 : 0 : 1.0
+T: 3 0 : 175 : 175 : 1.0
+T: 3 1 : 175 : 175 : 0.1
+T: 3 1 : 175 : 191 : 0.9
+T: 3 2 : 175 : 143 : 0.9
+T: 3 2 : 175 : 175 : 0.1
+T: 3 3 : 175 : 175 : 1.0
+T: 3 4 : 175 : 0 : 1.0
+T: 3 5 : 175 : 0 : 1.0
+T: 4 0 : 175 : 0 : 1.0
+T: 4 1 : 175 : 0 : 1.0
+T: 4 2 : 175 : 0 : 1.0
+T: 4 3 : 175 : 0 : 1.0
+T: 4 4 : 175 : 0 : 1.0
+T: 4 5 : 175 : 0 : 1.0
+T: 5 0 : 175 : 0 : 1.0
+T: 5 1 : 175 : 0 : 1.0
+T: 5 2 : 175 : 0 : 1.0
+T: 5 3 : 175 : 0 : 1.0
+T: 5 4 : 175 : 0 : 1.0
+T: 5 5 : 175 : 0 : 1.0
+T: 0 0 : 176 : 160 : 0.9
+T: 0 0 : 176 : 176 : 0.1
+T: 0 1 : 176 : 176 : 1.0
+T: 0 2 : 176 : 144 : 0.9
+T: 0 2 : 176 : 176 : 0.1
+T: 0 3 : 176 : 176 : 1.0
+T: 0 4 : 176 : 184 : 1.0
+T: 0 5 : 176 : 184 : 1.0
+T: 1 0 : 176 : 160 : 0.09
+T: 1 0 : 176 : 176 : 0.01
+T: 1 0 : 176 : 224 : 0.81
+T: 1 0 : 176 : 240 : 0.09
+T: 1 1 : 176 : 176 : 0.1
+T: 1 1 : 176 : 240 : 0.9
+T: 1 2 : 176 : 144 : 0.09
+T: 1 2 : 176 : 176 : 0.01
+T: 1 2 : 176 : 208 : 0.81
+T: 1 2 : 176 : 240 : 0.09
+T: 1 3 : 176 : 176 : 0.1
+T: 1 3 : 176 : 240 : 0.9
+T: 1 4 : 176 : 184 : 0.1
+T: 1 4 : 176 : 248 : 0.9
+T: 1 5 : 176 : 184 : 0.1
+T: 1 5 : 176 : 248 : 0.9
+T: 2 0 : 176 : 32 : 0.81
+T: 2 0 : 176 : 48 : 0.09
+T: 2 0 : 176 : 160 : 0.09
+T: 2 0 : 176 : 176 : 0.01
+T: 2 1 : 176 : 48 : 0.9
+T: 2 1 : 176 : 176 : 0.1
+T: 2 2 : 176 : 16 : 0.81
+T: 2 2 : 176 : 48 : 0.09
+T: 2 2 : 176 : 144 : 0.09
+T: 2 2 : 176 : 176 : 0.01
+T: 2 3 : 176 : 48 : 0.9
+T: 2 3 : 176 : 176 : 0.1
+T: 2 4 : 176 : 56 : 0.9
+T: 2 4 : 176 : 184 : 0.1
+T: 2 5 : 176 : 56 : 0.9
+T: 2 5 : 176 : 184 : 0.1
+T: 3 0 : 176 : 160 : 0.9
+T: 3 0 : 176 : 176 : 0.1
+T: 3 1 : 176 : 176 : 1.0
+T: 3 2 : 176 : 144 : 0.9
+T: 3 2 : 176 : 176 : 0.1
+T: 3 3 : 176 : 176 : 1.0
+T: 3 4 : 176 : 184 : 1.0
+T: 3 5 : 176 : 184 : 1.0
+T: 4 0 : 176 : 164 : 0.9
+T: 4 0 : 176 : 180 : 0.1
+T: 4 1 : 176 : 180 : 1.0
+T: 4 2 : 176 : 148 : 0.9
+T: 4 2 : 176 : 180 : 0.1
+T: 4 3 : 176 : 180 : 1.0
+T: 4 4 : 176 : 188 : 1.0
+T: 4 5 : 176 : 188 : 1.0
+T: 5 0 : 176 : 164 : 0.9
+T: 5 0 : 176 : 180 : 0.1
+T: 5 1 : 176 : 180 : 1.0
+T: 5 2 : 176 : 148 : 0.9
+T: 5 2 : 176 : 180 : 0.1
+T: 5 3 : 176 : 180 : 1.0
+T: 5 4 : 176 : 188 : 1.0
+T: 5 5 : 176 : 188 : 1.0
+T: 0 0 : 177 : 161 : 0.9
+T: 0 0 : 177 : 177 : 0.1
+T: 0 1 : 177 : 177 : 1.0
+T: 0 2 : 177 : 145 : 0.9
+T: 0 2 : 177 : 177 : 0.1
+T: 0 3 : 177 : 177 : 1.0
+T: 0 4 : 177 : 185 : 1.0
+T: 0 5 : 177 : 185 : 1.0
+T: 1 0 : 177 : 161 : 0.09
+T: 1 0 : 177 : 177 : 0.01
+T: 1 0 : 177 : 225 : 0.81
+T: 1 0 : 177 : 241 : 0.09
+T: 1 1 : 177 : 177 : 0.1
+T: 1 1 : 177 : 241 : 0.9
+T: 1 2 : 177 : 145 : 0.09
+T: 1 2 : 177 : 177 : 0.01
+T: 1 2 : 177 : 209 : 0.81
+T: 1 2 : 177 : 241 : 0.09
+T: 1 3 : 177 : 177 : 0.1
+T: 1 3 : 177 : 241 : 0.9
+T: 1 4 : 177 : 185 : 0.1
+T: 1 4 : 177 : 249 : 0.9
+T: 1 5 : 177 : 185 : 0.1
+T: 1 5 : 177 : 249 : 0.9
+T: 2 0 : 177 : 33 : 0.81
+T: 2 0 : 177 : 49 : 0.09
+T: 2 0 : 177 : 161 : 0.09
+T: 2 0 : 177 : 177 : 0.01
+T: 2 1 : 177 : 49 : 0.9
+T: 2 1 : 177 : 177 : 0.1
+T: 2 2 : 177 : 17 : 0.81
+T: 2 2 : 177 : 49 : 0.09
+T: 2 2 : 177 : 145 : 0.09
+T: 2 2 : 177 : 177 : 0.01
+T: 2 3 : 177 : 49 : 0.9
+T: 2 3 : 177 : 177 : 0.1
+T: 2 4 : 177 : 57 : 0.9
+T: 2 4 : 177 : 185 : 0.1
+T: 2 5 : 177 : 57 : 0.9
+T: 2 5 : 177 : 185 : 0.1
+T: 3 0 : 177 : 161 : 0.9
+T: 3 0 : 177 : 177 : 0.1
+T: 3 1 : 177 : 177 : 1.0
+T: 3 2 : 177 : 145 : 0.9
+T: 3 2 : 177 : 177 : 0.1
+T: 3 3 : 177 : 177 : 1.0
+T: 3 4 : 177 : 185 : 1.0
+T: 3 5 : 177 : 185 : 1.0
+T: 4 0 : 177 : 165 : 0.9
+T: 4 0 : 177 : 181 : 0.1
+T: 4 1 : 177 : 181 : 1.0
+T: 4 2 : 177 : 149 : 0.9
+T: 4 2 : 177 : 181 : 0.1
+T: 4 3 : 177 : 181 : 1.0
+T: 4 4 : 177 : 189 : 1.0
+T: 4 5 : 177 : 189 : 1.0
+T: 5 0 : 177 : 165 : 0.9
+T: 5 0 : 177 : 181 : 0.1
+T: 5 1 : 177 : 181 : 1.0
+T: 5 2 : 177 : 149 : 0.9
+T: 5 2 : 177 : 181 : 0.1
+T: 5 3 : 177 : 181 : 1.0
+T: 5 4 : 177 : 189 : 1.0
+T: 5 5 : 177 : 189 : 1.0
+T: 0 0 : 178 : 162 : 0.9
+T: 0 0 : 178 : 178 : 0.1
+T: 0 1 : 178 : 178 : 1.0
+T: 0 2 : 178 : 146 : 0.9
+T: 0 2 : 178 : 178 : 0.1
+T: 0 3 : 178 : 178 : 1.0
+T: 0 4 : 178 : 186 : 1.0
+T: 0 5 : 178 : 186 : 1.0
+T: 1 0 : 178 : 162 : 0.09
+T: 1 0 : 178 : 178 : 0.01
+T: 1 0 : 178 : 226 : 0.81
+T: 1 0 : 178 : 242 : 0.09
+T: 1 1 : 178 : 178 : 0.1
+T: 1 1 : 178 : 242 : 0.9
+T: 1 2 : 178 : 146 : 0.09
+T: 1 2 : 178 : 178 : 0.01
+T: 1 2 : 178 : 210 : 0.81
+T: 1 2 : 178 : 242 : 0.09
+T: 1 3 : 178 : 178 : 0.1
+T: 1 3 : 178 : 242 : 0.9
+T: 1 4 : 178 : 186 : 0.1
+T: 1 4 : 178 : 250 : 0.9
+T: 1 5 : 178 : 186 : 0.1
+T: 1 5 : 178 : 250 : 0.9
+T: 2 0 : 178 : 34 : 0.81
+T: 2 0 : 178 : 50 : 0.09
+T: 2 0 : 178 : 162 : 0.09
+T: 2 0 : 178 : 178 : 0.01
+T: 2 1 : 178 : 50 : 0.9
+T: 2 1 : 178 : 178 : 0.1
+T: 2 2 : 178 : 18 : 0.81
+T: 2 2 : 178 : 50 : 0.09
+T: 2 2 : 178 : 146 : 0.09
+T: 2 2 : 178 : 178 : 0.01
+T: 2 3 : 178 : 50 : 0.9
+T: 2 3 : 178 : 178 : 0.1
+T: 2 4 : 178 : 58 : 0.9
+T: 2 4 : 178 : 186 : 0.1
+T: 2 5 : 178 : 58 : 0.9
+T: 2 5 : 178 : 186 : 0.1
+T: 3 0 : 178 : 162 : 0.9
+T: 3 0 : 178 : 178 : 0.1
+T: 3 1 : 178 : 178 : 1.0
+T: 3 2 : 178 : 146 : 0.9
+T: 3 2 : 178 : 178 : 0.1
+T: 3 3 : 178 : 178 : 1.0
+T: 3 4 : 178 : 186 : 1.0
+T: 3 5 : 178 : 186 : 1.0
+T: 4 0 : 178 : 166 : 0.9
+T: 4 0 : 178 : 182 : 0.1
+T: 4 1 : 178 : 182 : 1.0
+T: 4 2 : 178 : 150 : 0.9
+T: 4 2 : 178 : 182 : 0.1
+T: 4 3 : 178 : 182 : 1.0
+T: 4 4 : 178 : 190 : 1.0
+T: 4 5 : 178 : 190 : 1.0
+T: 5 0 : 178 : 166 : 0.9
+T: 5 0 : 178 : 182 : 0.1
+T: 5 1 : 178 : 182 : 1.0
+T: 5 2 : 178 : 150 : 0.9
+T: 5 2 : 178 : 182 : 0.1
+T: 5 3 : 178 : 182 : 1.0
+T: 5 4 : 178 : 190 : 1.0
+T: 5 5 : 178 : 190 : 1.0
+T: 0 0 : 179 : 163 : 0.9
+T: 0 0 : 179 : 179 : 0.1
+T: 0 1 : 179 : 179 : 1.0
+T: 0 2 : 179 : 147 : 0.9
+T: 0 2 : 179 : 179 : 0.1
+T: 0 3 : 179 : 179 : 1.0
+T: 0 4 : 179 : 187 : 1.0
+T: 0 5 : 179 : 187 : 1.0
+T: 1 0 : 179 : 163 : 0.09
+T: 1 0 : 179 : 179 : 0.01
+T: 1 0 : 179 : 227 : 0.81
+T: 1 0 : 179 : 243 : 0.09
+T: 1 1 : 179 : 179 : 0.1
+T: 1 1 : 179 : 243 : 0.9
+T: 1 2 : 179 : 147 : 0.09
+T: 1 2 : 179 : 179 : 0.01
+T: 1 2 : 179 : 211 : 0.81
+T: 1 2 : 179 : 243 : 0.09
+T: 1 3 : 179 : 179 : 0.1
+T: 1 3 : 179 : 243 : 0.9
+T: 1 4 : 179 : 187 : 0.1
+T: 1 4 : 179 : 251 : 0.9
+T: 1 5 : 179 : 187 : 0.1
+T: 1 5 : 179 : 251 : 0.9
+T: 2 0 : 179 : 35 : 0.81
+T: 2 0 : 179 : 51 : 0.09
+T: 2 0 : 179 : 163 : 0.09
+T: 2 0 : 179 : 179 : 0.01
+T: 2 1 : 179 : 51 : 0.9
+T: 2 1 : 179 : 179 : 0.1
+T: 2 2 : 179 : 19 : 0.81
+T: 2 2 : 179 : 51 : 0.09
+T: 2 2 : 179 : 147 : 0.09
+T: 2 2 : 179 : 179 : 0.01
+T: 2 3 : 179 : 51 : 0.9
+T: 2 3 : 179 : 179 : 0.1
+T: 2 4 : 179 : 59 : 0.9
+T: 2 4 : 179 : 187 : 0.1
+T: 2 5 : 179 : 59 : 0.9
+T: 2 5 : 179 : 187 : 0.1
+T: 3 0 : 179 : 163 : 0.9
+T: 3 0 : 179 : 179 : 0.1
+T: 3 1 : 179 : 179 : 1.0
+T: 3 2 : 179 : 147 : 0.9
+T: 3 2 : 179 : 179 : 0.1
+T: 3 3 : 179 : 179 : 1.0
+T: 3 4 : 179 : 187 : 1.0
+T: 3 5 : 179 : 187 : 1.0
+T: 4 0 : 179 : 167 : 0.9
+T: 4 0 : 179 : 183 : 0.1
+T: 4 1 : 179 : 183 : 1.0
+T: 4 2 : 179 : 151 : 0.9
+T: 4 2 : 179 : 183 : 0.1
+T: 4 3 : 179 : 183 : 1.0
+T: 4 4 : 179 : 0 : 1.0
+T: 4 5 : 179 : 0 : 1.0
+T: 5 0 : 179 : 167 : 0.9
+T: 5 0 : 179 : 183 : 0.1
+T: 5 1 : 179 : 183 : 1.0
+T: 5 2 : 179 : 151 : 0.9
+T: 5 2 : 179 : 183 : 0.1
+T: 5 3 : 179 : 183 : 1.0
+T: 5 4 : 179 : 0 : 1.0
+T: 5 5 : 179 : 0 : 1.0
+T: 0 0 : 180 : 164 : 0.9
+T: 0 0 : 180 : 180 : 0.1
+T: 0 1 : 180 : 180 : 1.0
+T: 0 2 : 180 : 148 : 0.9
+T: 0 2 : 180 : 180 : 0.1
+T: 0 3 : 180 : 180 : 1.0
+T: 0 4 : 180 : 188 : 1.0
+T: 0 5 : 180 : 188 : 1.0
+T: 1 0 : 180 : 164 : 0.09
+T: 1 0 : 180 : 180 : 0.01
+T: 1 0 : 180 : 228 : 0.81
+T: 1 0 : 180 : 244 : 0.09
+T: 1 1 : 180 : 180 : 0.1
+T: 1 1 : 180 : 244 : 0.9
+T: 1 2 : 180 : 148 : 0.09
+T: 1 2 : 180 : 180 : 0.01
+T: 1 2 : 180 : 212 : 0.81
+T: 1 2 : 180 : 244 : 0.09
+T: 1 3 : 180 : 180 : 0.1
+T: 1 3 : 180 : 244 : 0.9
+T: 1 4 : 180 : 188 : 0.1
+T: 1 4 : 180 : 252 : 0.9
+T: 1 5 : 180 : 188 : 0.1
+T: 1 5 : 180 : 252 : 0.9
+T: 2 0 : 180 : 36 : 0.81
+T: 2 0 : 180 : 52 : 0.09
+T: 2 0 : 180 : 164 : 0.09
+T: 2 0 : 180 : 180 : 0.01
+T: 2 1 : 180 : 52 : 0.9
+T: 2 1 : 180 : 180 : 0.1
+T: 2 2 : 180 : 20 : 0.81
+T: 2 2 : 180 : 52 : 0.09
+T: 2 2 : 180 : 148 : 0.09
+T: 2 2 : 180 : 180 : 0.01
+T: 2 3 : 180 : 52 : 0.9
+T: 2 3 : 180 : 180 : 0.1
+T: 2 4 : 180 : 60 : 0.9
+T: 2 4 : 180 : 188 : 0.1
+T: 2 5 : 180 : 60 : 0.9
+T: 2 5 : 180 : 188 : 0.1
+T: 3 0 : 180 : 164 : 0.9
+T: 3 0 : 180 : 180 : 0.1
+T: 3 1 : 180 : 180 : 1.0
+T: 3 2 : 180 : 148 : 0.9
+T: 3 2 : 180 : 180 : 0.1
+T: 3 3 : 180 : 180 : 1.0
+T: 3 4 : 180 : 188 : 1.0
+T: 3 5 : 180 : 188 : 1.0
+T: 4 0 : 180 : 164 : 0.9
+T: 4 0 : 180 : 180 : 0.1
+T: 4 1 : 180 : 180 : 1.0
+T: 4 2 : 180 : 148 : 0.9
+T: 4 2 : 180 : 180 : 0.1
+T: 4 3 : 180 : 180 : 1.0
+T: 4 4 : 180 : 188 : 1.0
+T: 4 5 : 180 : 188 : 1.0
+T: 5 0 : 180 : 164 : 0.9
+T: 5 0 : 180 : 180 : 0.1
+T: 5 1 : 180 : 180 : 1.0
+T: 5 2 : 180 : 148 : 0.9
+T: 5 2 : 180 : 180 : 0.1
+T: 5 3 : 180 : 180 : 1.0
+T: 5 4 : 180 : 188 : 1.0
+T: 5 5 : 180 : 188 : 1.0
+T: 0 0 : 181 : 165 : 0.9
+T: 0 0 : 181 : 181 : 0.1
+T: 0 1 : 181 : 181 : 1.0
+T: 0 2 : 181 : 149 : 0.9
+T: 0 2 : 181 : 181 : 0.1
+T: 0 3 : 181 : 181 : 1.0
+T: 0 4 : 181 : 189 : 1.0
+T: 0 5 : 181 : 189 : 1.0
+T: 1 0 : 181 : 165 : 0.09
+T: 1 0 : 181 : 181 : 0.01
+T: 1 0 : 181 : 229 : 0.81
+T: 1 0 : 181 : 245 : 0.09
+T: 1 1 : 181 : 181 : 0.1
+T: 1 1 : 181 : 245 : 0.9
+T: 1 2 : 181 : 149 : 0.09
+T: 1 2 : 181 : 181 : 0.01
+T: 1 2 : 181 : 213 : 0.81
+T: 1 2 : 181 : 245 : 0.09
+T: 1 3 : 181 : 181 : 0.1
+T: 1 3 : 181 : 245 : 0.9
+T: 1 4 : 181 : 189 : 0.1
+T: 1 4 : 181 : 253 : 0.9
+T: 1 5 : 181 : 189 : 0.1
+T: 1 5 : 181 : 253 : 0.9
+T: 2 0 : 181 : 37 : 0.81
+T: 2 0 : 181 : 53 : 0.09
+T: 2 0 : 181 : 165 : 0.09
+T: 2 0 : 181 : 181 : 0.01
+T: 2 1 : 181 : 53 : 0.9
+T: 2 1 : 181 : 181 : 0.1
+T: 2 2 : 181 : 21 : 0.81
+T: 2 2 : 181 : 53 : 0.09
+T: 2 2 : 181 : 149 : 0.09
+T: 2 2 : 181 : 181 : 0.01
+T: 2 3 : 181 : 53 : 0.9
+T: 2 3 : 181 : 181 : 0.1
+T: 2 4 : 181 : 61 : 0.9
+T: 2 4 : 181 : 189 : 0.1
+T: 2 5 : 181 : 61 : 0.9
+T: 2 5 : 181 : 189 : 0.1
+T: 3 0 : 181 : 165 : 0.9
+T: 3 0 : 181 : 181 : 0.1
+T: 3 1 : 181 : 181 : 1.0
+T: 3 2 : 181 : 149 : 0.9
+T: 3 2 : 181 : 181 : 0.1
+T: 3 3 : 181 : 181 : 1.0
+T: 3 4 : 181 : 189 : 1.0
+T: 3 5 : 181 : 189 : 1.0
+T: 4 0 : 181 : 165 : 0.9
+T: 4 0 : 181 : 181 : 0.1
+T: 4 1 : 181 : 181 : 1.0
+T: 4 2 : 181 : 149 : 0.9
+T: 4 2 : 181 : 181 : 0.1
+T: 4 3 : 181 : 181 : 1.0
+T: 4 4 : 181 : 189 : 1.0
+T: 4 5 : 181 : 189 : 1.0
+T: 5 0 : 181 : 165 : 0.9
+T: 5 0 : 181 : 181 : 0.1
+T: 5 1 : 181 : 181 : 1.0
+T: 5 2 : 181 : 149 : 0.9
+T: 5 2 : 181 : 181 : 0.1
+T: 5 3 : 181 : 181 : 1.0
+T: 5 4 : 181 : 189 : 1.0
+T: 5 5 : 181 : 189 : 1.0
+T: 0 0 : 182 : 166 : 0.9
+T: 0 0 : 182 : 182 : 0.1
+T: 0 1 : 182 : 182 : 1.0
+T: 0 2 : 182 : 150 : 0.9
+T: 0 2 : 182 : 182 : 0.1
+T: 0 3 : 182 : 182 : 1.0
+T: 0 4 : 182 : 190 : 1.0
+T: 0 5 : 182 : 190 : 1.0
+T: 1 0 : 182 : 166 : 0.09
+T: 1 0 : 182 : 182 : 0.01
+T: 1 0 : 182 : 230 : 0.81
+T: 1 0 : 182 : 246 : 0.09
+T: 1 1 : 182 : 182 : 0.1
+T: 1 1 : 182 : 246 : 0.9
+T: 1 2 : 182 : 150 : 0.09
+T: 1 2 : 182 : 182 : 0.01
+T: 1 2 : 182 : 214 : 0.81
+T: 1 2 : 182 : 246 : 0.09
+T: 1 3 : 182 : 182 : 0.1
+T: 1 3 : 182 : 246 : 0.9
+T: 1 4 : 182 : 190 : 0.1
+T: 1 4 : 182 : 254 : 0.9
+T: 1 5 : 182 : 190 : 0.1
+T: 1 5 : 182 : 254 : 0.9
+T: 2 0 : 182 : 38 : 0.81
+T: 2 0 : 182 : 54 : 0.09
+T: 2 0 : 182 : 166 : 0.09
+T: 2 0 : 182 : 182 : 0.01
+T: 2 1 : 182 : 54 : 0.9
+T: 2 1 : 182 : 182 : 0.1
+T: 2 2 : 182 : 22 : 0.81
+T: 2 2 : 182 : 54 : 0.09
+T: 2 2 : 182 : 150 : 0.09
+T: 2 2 : 182 : 182 : 0.01
+T: 2 3 : 182 : 54 : 0.9
+T: 2 3 : 182 : 182 : 0.1
+T: 2 4 : 182 : 62 : 0.9
+T: 2 4 : 182 : 190 : 0.1
+T: 2 5 : 182 : 62 : 0.9
+T: 2 5 : 182 : 190 : 0.1
+T: 3 0 : 182 : 166 : 0.9
+T: 3 0 : 182 : 182 : 0.1
+T: 3 1 : 182 : 182 : 1.0
+T: 3 2 : 182 : 150 : 0.9
+T: 3 2 : 182 : 182 : 0.1
+T: 3 3 : 182 : 182 : 1.0
+T: 3 4 : 182 : 190 : 1.0
+T: 3 5 : 182 : 190 : 1.0
+T: 4 0 : 182 : 166 : 0.9
+T: 4 0 : 182 : 182 : 0.1
+T: 4 1 : 182 : 182 : 1.0
+T: 4 2 : 182 : 150 : 0.9
+T: 4 2 : 182 : 182 : 0.1
+T: 4 3 : 182 : 182 : 1.0
+T: 4 4 : 182 : 190 : 1.0
+T: 4 5 : 182 : 190 : 1.0
+T: 5 0 : 182 : 166 : 0.9
+T: 5 0 : 182 : 182 : 0.1
+T: 5 1 : 182 : 182 : 1.0
+T: 5 2 : 182 : 150 : 0.9
+T: 5 2 : 182 : 182 : 0.1
+T: 5 3 : 182 : 182 : 1.0
+T: 5 4 : 182 : 190 : 1.0
+T: 5 5 : 182 : 190 : 1.0
+T: 0 0 : 183 : 167 : 0.9
+T: 0 0 : 183 : 183 : 0.1
+T: 0 1 : 183 : 183 : 1.0
+T: 0 2 : 183 : 151 : 0.9
+T: 0 2 : 183 : 183 : 0.1
+T: 0 3 : 183 : 183 : 1.0
+T: 0 4 : 183 : 0 : 1.0
+T: 0 5 : 183 : 0 : 1.0
+T: 1 0 : 183 : 167 : 0.09
+T: 1 0 : 183 : 183 : 0.01
+T: 1 0 : 183 : 231 : 0.81
+T: 1 0 : 183 : 247 : 0.09
+T: 1 1 : 183 : 183 : 0.1
+T: 1 1 : 183 : 247 : 0.9
+T: 1 2 : 183 : 151 : 0.09
+T: 1 2 : 183 : 183 : 0.01
+T: 1 2 : 183 : 215 : 0.81
+T: 1 2 : 183 : 247 : 0.09
+T: 1 3 : 183 : 183 : 0.1
+T: 1 3 : 183 : 247 : 0.9
+T: 1 4 : 183 : 0 : 1.0
+T: 1 5 : 183 : 0 : 1.0
+T: 2 0 : 183 : 39 : 0.81
+T: 2 0 : 183 : 55 : 0.09
+T: 2 0 : 183 : 167 : 0.09
+T: 2 0 : 183 : 183 : 0.01
+T: 2 1 : 183 : 55 : 0.9
+T: 2 1 : 183 : 183 : 0.1
+T: 2 2 : 183 : 23 : 0.81
+T: 2 2 : 183 : 55 : 0.09
+T: 2 2 : 183 : 151 : 0.09
+T: 2 2 : 183 : 183 : 0.01
+T: 2 3 : 183 : 55 : 0.9
+T: 2 3 : 183 : 183 : 0.1
+T: 2 4 : 183 : 0 : 1.0
+T: 2 5 : 183 : 0 : 1.0
+T: 3 0 : 183 : 167 : 0.9
+T: 3 0 : 183 : 183 : 0.1
+T: 3 1 : 183 : 183 : 1.0
+T: 3 2 : 183 : 151 : 0.9
+T: 3 2 : 183 : 183 : 0.1
+T: 3 3 : 183 : 183 : 1.0
+T: 3 4 : 183 : 0 : 1.0
+T: 3 5 : 183 : 0 : 1.0
+T: 4 0 : 183 : 167 : 0.9
+T: 4 0 : 183 : 183 : 0.1
+T: 4 1 : 183 : 183 : 1.0
+T: 4 2 : 183 : 151 : 0.9
+T: 4 2 : 183 : 183 : 0.1
+T: 4 3 : 183 : 183 : 1.0
+T: 4 4 : 183 : 0 : 1.0
+T: 4 5 : 183 : 0 : 1.0
+T: 5 0 : 183 : 167 : 0.9
+T: 5 0 : 183 : 183 : 0.1
+T: 5 1 : 183 : 183 : 1.0
+T: 5 2 : 183 : 151 : 0.9
+T: 5 2 : 183 : 183 : 0.1
+T: 5 3 : 183 : 183 : 1.0
+T: 5 4 : 183 : 0 : 1.0
+T: 5 5 : 183 : 0 : 1.0
+T: 0 0 : 184 : 168 : 0.9
+T: 0 0 : 184 : 184 : 0.1
+T: 0 1 : 184 : 184 : 1.0
+T: 0 2 : 184 : 152 : 0.9
+T: 0 2 : 184 : 184 : 0.1
+T: 0 3 : 184 : 184 : 1.0
+T: 0 4 : 184 : 184 : 1.0
+T: 0 5 : 184 : 184 : 1.0
+T: 1 0 : 184 : 168 : 0.09
+T: 1 0 : 184 : 184 : 0.01
+T: 1 0 : 184 : 232 : 0.81
+T: 1 0 : 184 : 248 : 0.09
+T: 1 1 : 184 : 184 : 0.1
+T: 1 1 : 184 : 248 : 0.9
+T: 1 2 : 184 : 152 : 0.09
+T: 1 2 : 184 : 184 : 0.01
+T: 1 2 : 184 : 216 : 0.81
+T: 1 2 : 184 : 248 : 0.09
+T: 1 3 : 184 : 184 : 0.1
+T: 1 3 : 184 : 248 : 0.9
+T: 1 4 : 184 : 184 : 0.1
+T: 1 4 : 184 : 248 : 0.9
+T: 1 5 : 184 : 184 : 0.1
+T: 1 5 : 184 : 248 : 0.9
+T: 2 0 : 184 : 40 : 0.81
+T: 2 0 : 184 : 56 : 0.09
+T: 2 0 : 184 : 168 : 0.09
+T: 2 0 : 184 : 184 : 0.01
+T: 2 1 : 184 : 56 : 0.9
+T: 2 1 : 184 : 184 : 0.1
+T: 2 2 : 184 : 24 : 0.81
+T: 2 2 : 184 : 56 : 0.09
+T: 2 2 : 184 : 152 : 0.09
+T: 2 2 : 184 : 184 : 0.01
+T: 2 3 : 184 : 56 : 0.9
+T: 2 3 : 184 : 184 : 0.1
+T: 2 4 : 184 : 56 : 0.9
+T: 2 4 : 184 : 184 : 0.1
+T: 2 5 : 184 : 56 : 0.9
+T: 2 5 : 184 : 184 : 0.1
+T: 3 0 : 184 : 168 : 0.9
+T: 3 0 : 184 : 184 : 0.1
+T: 3 1 : 184 : 184 : 1.0
+T: 3 2 : 184 : 152 : 0.9
+T: 3 2 : 184 : 184 : 0.1
+T: 3 3 : 184 : 184 : 1.0
+T: 3 4 : 184 : 184 : 1.0
+T: 3 5 : 184 : 184 : 1.0
+T: 4 0 : 184 : 172 : 0.9
+T: 4 0 : 184 : 188 : 0.1
+T: 4 1 : 184 : 188 : 1.0
+T: 4 2 : 184 : 156 : 0.9
+T: 4 2 : 184 : 188 : 0.1
+T: 4 3 : 184 : 188 : 1.0
+T: 4 4 : 184 : 188 : 1.0
+T: 4 5 : 184 : 188 : 1.0
+T: 5 0 : 184 : 172 : 0.9
+T: 5 0 : 184 : 188 : 0.1
+T: 5 1 : 184 : 188 : 1.0
+T: 5 2 : 184 : 156 : 0.9
+T: 5 2 : 184 : 188 : 0.1
+T: 5 3 : 184 : 188 : 1.0
+T: 5 4 : 184 : 188 : 1.0
+T: 5 5 : 184 : 188 : 1.0
+T: 0 0 : 185 : 169 : 0.9
+T: 0 0 : 185 : 185 : 0.1
+T: 0 1 : 185 : 185 : 1.0
+T: 0 2 : 185 : 153 : 0.9
+T: 0 2 : 185 : 185 : 0.1
+T: 0 3 : 185 : 185 : 1.0
+T: 0 4 : 185 : 185 : 1.0
+T: 0 5 : 185 : 185 : 1.0
+T: 1 0 : 185 : 169 : 0.09
+T: 1 0 : 185 : 185 : 0.01
+T: 1 0 : 185 : 233 : 0.81
+T: 1 0 : 185 : 249 : 0.09
+T: 1 1 : 185 : 185 : 0.1
+T: 1 1 : 185 : 249 : 0.9
+T: 1 2 : 185 : 153 : 0.09
+T: 1 2 : 185 : 185 : 0.01
+T: 1 2 : 185 : 217 : 0.81
+T: 1 2 : 185 : 249 : 0.09
+T: 1 3 : 185 : 185 : 0.1
+T: 1 3 : 185 : 249 : 0.9
+T: 1 4 : 185 : 185 : 0.1
+T: 1 4 : 185 : 249 : 0.9
+T: 1 5 : 185 : 185 : 0.1
+T: 1 5 : 185 : 249 : 0.9
+T: 2 0 : 185 : 41 : 0.81
+T: 2 0 : 185 : 57 : 0.09
+T: 2 0 : 185 : 169 : 0.09
+T: 2 0 : 185 : 185 : 0.01
+T: 2 1 : 185 : 57 : 0.9
+T: 2 1 : 185 : 185 : 0.1
+T: 2 2 : 185 : 25 : 0.81
+T: 2 2 : 185 : 57 : 0.09
+T: 2 2 : 185 : 153 : 0.09
+T: 2 2 : 185 : 185 : 0.01
+T: 2 3 : 185 : 57 : 0.9
+T: 2 3 : 185 : 185 : 0.1
+T: 2 4 : 185 : 57 : 0.9
+T: 2 4 : 185 : 185 : 0.1
+T: 2 5 : 185 : 57 : 0.9
+T: 2 5 : 185 : 185 : 0.1
+T: 3 0 : 185 : 169 : 0.9
+T: 3 0 : 185 : 185 : 0.1
+T: 3 1 : 185 : 185 : 1.0
+T: 3 2 : 185 : 153 : 0.9
+T: 3 2 : 185 : 185 : 0.1
+T: 3 3 : 185 : 185 : 1.0
+T: 3 4 : 185 : 185 : 1.0
+T: 3 5 : 185 : 185 : 1.0
+T: 4 0 : 185 : 173 : 0.9
+T: 4 0 : 185 : 189 : 0.1
+T: 4 1 : 185 : 189 : 1.0
+T: 4 2 : 185 : 157 : 0.9
+T: 4 2 : 185 : 189 : 0.1
+T: 4 3 : 185 : 189 : 1.0
+T: 4 4 : 185 : 189 : 1.0
+T: 4 5 : 185 : 189 : 1.0
+T: 5 0 : 185 : 173 : 0.9
+T: 5 0 : 185 : 189 : 0.1
+T: 5 1 : 185 : 189 : 1.0
+T: 5 2 : 185 : 157 : 0.9
+T: 5 2 : 185 : 189 : 0.1
+T: 5 3 : 185 : 189 : 1.0
+T: 5 4 : 185 : 189 : 1.0
+T: 5 5 : 185 : 189 : 1.0
+T: 0 0 : 186 : 170 : 0.9
+T: 0 0 : 186 : 186 : 0.1
+T: 0 1 : 186 : 186 : 1.0
+T: 0 2 : 186 : 154 : 0.9
+T: 0 2 : 186 : 186 : 0.1
+T: 0 3 : 186 : 186 : 1.0
+T: 0 4 : 186 : 186 : 1.0
+T: 0 5 : 186 : 186 : 1.0
+T: 1 0 : 186 : 170 : 0.09
+T: 1 0 : 186 : 186 : 0.01
+T: 1 0 : 186 : 234 : 0.81
+T: 1 0 : 186 : 250 : 0.09
+T: 1 1 : 186 : 186 : 0.1
+T: 1 1 : 186 : 250 : 0.9
+T: 1 2 : 186 : 154 : 0.09
+T: 1 2 : 186 : 186 : 0.01
+T: 1 2 : 186 : 218 : 0.81
+T: 1 2 : 186 : 250 : 0.09
+T: 1 3 : 186 : 186 : 0.1
+T: 1 3 : 186 : 250 : 0.9
+T: 1 4 : 186 : 186 : 0.1
+T: 1 4 : 186 : 250 : 0.9
+T: 1 5 : 186 : 186 : 0.1
+T: 1 5 : 186 : 250 : 0.9
+T: 2 0 : 186 : 42 : 0.81
+T: 2 0 : 186 : 58 : 0.09
+T: 2 0 : 186 : 170 : 0.09
+T: 2 0 : 186 : 186 : 0.01
+T: 2 1 : 186 : 58 : 0.9
+T: 2 1 : 186 : 186 : 0.1
+T: 2 2 : 186 : 26 : 0.81
+T: 2 2 : 186 : 58 : 0.09
+T: 2 2 : 186 : 154 : 0.09
+T: 2 2 : 186 : 186 : 0.01
+T: 2 3 : 186 : 58 : 0.9
+T: 2 3 : 186 : 186 : 0.1
+T: 2 4 : 186 : 58 : 0.9
+T: 2 4 : 186 : 186 : 0.1
+T: 2 5 : 186 : 58 : 0.9
+T: 2 5 : 186 : 186 : 0.1
+T: 3 0 : 186 : 170 : 0.9
+T: 3 0 : 186 : 186 : 0.1
+T: 3 1 : 186 : 186 : 1.0
+T: 3 2 : 186 : 154 : 0.9
+T: 3 2 : 186 : 186 : 0.1
+T: 3 3 : 186 : 186 : 1.0
+T: 3 4 : 186 : 186 : 1.0
+T: 3 5 : 186 : 186 : 1.0
+T: 4 0 : 186 : 174 : 0.9
+T: 4 0 : 186 : 190 : 0.1
+T: 4 1 : 186 : 190 : 1.0
+T: 4 2 : 186 : 158 : 0.9
+T: 4 2 : 186 : 190 : 0.1
+T: 4 3 : 186 : 190 : 1.0
+T: 4 4 : 186 : 190 : 1.0
+T: 4 5 : 186 : 190 : 1.0
+T: 5 0 : 186 : 174 : 0.9
+T: 5 0 : 186 : 190 : 0.1
+T: 5 1 : 186 : 190 : 1.0
+T: 5 2 : 186 : 158 : 0.9
+T: 5 2 : 186 : 190 : 0.1
+T: 5 3 : 186 : 190 : 1.0
+T: 5 4 : 186 : 190 : 1.0
+T: 5 5 : 186 : 190 : 1.0
+T: 0 0 : 187 : 171 : 0.9
+T: 0 0 : 187 : 187 : 0.1
+T: 0 1 : 187 : 187 : 1.0
+T: 0 2 : 187 : 155 : 0.9
+T: 0 2 : 187 : 187 : 0.1
+T: 0 3 : 187 : 187 : 1.0
+T: 0 4 : 187 : 187 : 1.0
+T: 0 5 : 187 : 187 : 1.0
+T: 1 0 : 187 : 171 : 0.09
+T: 1 0 : 187 : 187 : 0.01
+T: 1 0 : 187 : 235 : 0.81
+T: 1 0 : 187 : 251 : 0.09
+T: 1 1 : 187 : 187 : 0.1
+T: 1 1 : 187 : 251 : 0.9
+T: 1 2 : 187 : 155 : 0.09
+T: 1 2 : 187 : 187 : 0.01
+T: 1 2 : 187 : 219 : 0.81
+T: 1 2 : 187 : 251 : 0.09
+T: 1 3 : 187 : 187 : 0.1
+T: 1 3 : 187 : 251 : 0.9
+T: 1 4 : 187 : 187 : 0.1
+T: 1 4 : 187 : 251 : 0.9
+T: 1 5 : 187 : 187 : 0.1
+T: 1 5 : 187 : 251 : 0.9
+T: 2 0 : 187 : 43 : 0.81
+T: 2 0 : 187 : 59 : 0.09
+T: 2 0 : 187 : 171 : 0.09
+T: 2 0 : 187 : 187 : 0.01
+T: 2 1 : 187 : 59 : 0.9
+T: 2 1 : 187 : 187 : 0.1
+T: 2 2 : 187 : 27 : 0.81
+T: 2 2 : 187 : 59 : 0.09
+T: 2 2 : 187 : 155 : 0.09
+T: 2 2 : 187 : 187 : 0.01
+T: 2 3 : 187 : 59 : 0.9
+T: 2 3 : 187 : 187 : 0.1
+T: 2 4 : 187 : 59 : 0.9
+T: 2 4 : 187 : 187 : 0.1
+T: 2 5 : 187 : 59 : 0.9
+T: 2 5 : 187 : 187 : 0.1
+T: 3 0 : 187 : 171 : 0.9
+T: 3 0 : 187 : 187 : 0.1
+T: 3 1 : 187 : 187 : 1.0
+T: 3 2 : 187 : 155 : 0.9
+T: 3 2 : 187 : 187 : 0.1
+T: 3 3 : 187 : 187 : 1.0
+T: 3 4 : 187 : 187 : 1.0
+T: 3 5 : 187 : 187 : 1.0
+T: 4 0 : 187 : 0 : 1.0
+T: 4 1 : 187 : 0 : 1.0
+T: 4 2 : 187 : 0 : 1.0
+T: 4 3 : 187 : 0 : 1.0
+T: 4 4 : 187 : 0 : 1.0
+T: 4 5 : 187 : 0 : 1.0
+T: 5 0 : 187 : 0 : 1.0
+T: 5 1 : 187 : 0 : 1.0
+T: 5 2 : 187 : 0 : 1.0
+T: 5 3 : 187 : 0 : 1.0
+T: 5 4 : 187 : 0 : 1.0
+T: 5 5 : 187 : 0 : 1.0
+T: 0 0 : 188 : 172 : 0.9
+T: 0 0 : 188 : 188 : 0.1
+T: 0 1 : 188 : 188 : 1.0
+T: 0 2 : 188 : 156 : 0.9
+T: 0 2 : 188 : 188 : 0.1
+T: 0 3 : 188 : 188 : 1.0
+T: 0 4 : 188 : 188 : 1.0
+T: 0 5 : 188 : 188 : 1.0
+T: 1 0 : 188 : 172 : 0.09
+T: 1 0 : 188 : 188 : 0.01
+T: 1 0 : 188 : 236 : 0.81
+T: 1 0 : 188 : 252 : 0.09
+T: 1 1 : 188 : 188 : 0.1
+T: 1 1 : 188 : 252 : 0.9
+T: 1 2 : 188 : 156 : 0.09
+T: 1 2 : 188 : 188 : 0.01
+T: 1 2 : 188 : 220 : 0.81
+T: 1 2 : 188 : 252 : 0.09
+T: 1 3 : 188 : 188 : 0.1
+T: 1 3 : 188 : 252 : 0.9
+T: 1 4 : 188 : 188 : 0.1
+T: 1 4 : 188 : 252 : 0.9
+T: 1 5 : 188 : 188 : 0.1
+T: 1 5 : 188 : 252 : 0.9
+T: 2 0 : 188 : 44 : 0.81
+T: 2 0 : 188 : 60 : 0.09
+T: 2 0 : 188 : 172 : 0.09
+T: 2 0 : 188 : 188 : 0.01
+T: 2 1 : 188 : 60 : 0.9
+T: 2 1 : 188 : 188 : 0.1
+T: 2 2 : 188 : 28 : 0.81
+T: 2 2 : 188 : 60 : 0.09
+T: 2 2 : 188 : 156 : 0.09
+T: 2 2 : 188 : 188 : 0.01
+T: 2 3 : 188 : 60 : 0.9
+T: 2 3 : 188 : 188 : 0.1
+T: 2 4 : 188 : 60 : 0.9
+T: 2 4 : 188 : 188 : 0.1
+T: 2 5 : 188 : 60 : 0.9
+T: 2 5 : 188 : 188 : 0.1
+T: 3 0 : 188 : 172 : 0.9
+T: 3 0 : 188 : 188 : 0.1
+T: 3 1 : 188 : 188 : 1.0
+T: 3 2 : 188 : 156 : 0.9
+T: 3 2 : 188 : 188 : 0.1
+T: 3 3 : 188 : 188 : 1.0
+T: 3 4 : 188 : 188 : 1.0
+T: 3 5 : 188 : 188 : 1.0
+T: 4 0 : 188 : 172 : 0.9
+T: 4 0 : 188 : 188 : 0.1
+T: 4 1 : 188 : 188 : 1.0
+T: 4 2 : 188 : 156 : 0.9
+T: 4 2 : 188 : 188 : 0.1
+T: 4 3 : 188 : 188 : 1.0
+T: 4 4 : 188 : 188 : 1.0
+T: 4 5 : 188 : 188 : 1.0
+T: 5 0 : 188 : 172 : 0.9
+T: 5 0 : 188 : 188 : 0.1
+T: 5 1 : 188 : 188 : 1.0
+T: 5 2 : 188 : 156 : 0.9
+T: 5 2 : 188 : 188 : 0.1
+T: 5 3 : 188 : 188 : 1.0
+T: 5 4 : 188 : 188 : 1.0
+T: 5 5 : 188 : 188 : 1.0
+T: 0 0 : 189 : 173 : 0.9
+T: 0 0 : 189 : 189 : 0.1
+T: 0 1 : 189 : 189 : 1.0
+T: 0 2 : 189 : 157 : 0.9
+T: 0 2 : 189 : 189 : 0.1
+T: 0 3 : 189 : 189 : 1.0
+T: 0 4 : 189 : 189 : 1.0
+T: 0 5 : 189 : 189 : 1.0
+T: 1 0 : 189 : 173 : 0.09
+T: 1 0 : 189 : 189 : 0.01
+T: 1 0 : 189 : 237 : 0.81
+T: 1 0 : 189 : 253 : 0.09
+T: 1 1 : 189 : 189 : 0.1
+T: 1 1 : 189 : 253 : 0.9
+T: 1 2 : 189 : 157 : 0.09
+T: 1 2 : 189 : 189 : 0.01
+T: 1 2 : 189 : 221 : 0.81
+T: 1 2 : 189 : 253 : 0.09
+T: 1 3 : 189 : 189 : 0.1
+T: 1 3 : 189 : 253 : 0.9
+T: 1 4 : 189 : 189 : 0.1
+T: 1 4 : 189 : 253 : 0.9
+T: 1 5 : 189 : 189 : 0.1
+T: 1 5 : 189 : 253 : 0.9
+T: 2 0 : 189 : 45 : 0.81
+T: 2 0 : 189 : 61 : 0.09
+T: 2 0 : 189 : 173 : 0.09
+T: 2 0 : 189 : 189 : 0.01
+T: 2 1 : 189 : 61 : 0.9
+T: 2 1 : 189 : 189 : 0.1
+T: 2 2 : 189 : 29 : 0.81
+T: 2 2 : 189 : 61 : 0.09
+T: 2 2 : 189 : 157 : 0.09
+T: 2 2 : 189 : 189 : 0.01
+T: 2 3 : 189 : 61 : 0.9
+T: 2 3 : 189 : 189 : 0.1
+T: 2 4 : 189 : 61 : 0.9
+T: 2 4 : 189 : 189 : 0.1
+T: 2 5 : 189 : 61 : 0.9
+T: 2 5 : 189 : 189 : 0.1
+T: 3 0 : 189 : 173 : 0.9
+T: 3 0 : 189 : 189 : 0.1
+T: 3 1 : 189 : 189 : 1.0
+T: 3 2 : 189 : 157 : 0.9
+T: 3 2 : 189 : 189 : 0.1
+T: 3 3 : 189 : 189 : 1.0
+T: 3 4 : 189 : 189 : 1.0
+T: 3 5 : 189 : 189 : 1.0
+T: 4 0 : 189 : 173 : 0.9
+T: 4 0 : 189 : 189 : 0.1
+T: 4 1 : 189 : 189 : 1.0
+T: 4 2 : 189 : 157 : 0.9
+T: 4 2 : 189 : 189 : 0.1
+T: 4 3 : 189 : 189 : 1.0
+T: 4 4 : 189 : 189 : 1.0
+T: 4 5 : 189 : 189 : 1.0
+T: 5 0 : 189 : 173 : 0.9
+T: 5 0 : 189 : 189 : 0.1
+T: 5 1 : 189 : 189 : 1.0
+T: 5 2 : 189 : 157 : 0.9
+T: 5 2 : 189 : 189 : 0.1
+T: 5 3 : 189 : 189 : 1.0
+T: 5 4 : 189 : 189 : 1.0
+T: 5 5 : 189 : 189 : 1.0
+T: 0 0 : 190 : 174 : 0.9
+T: 0 0 : 190 : 190 : 0.1
+T: 0 1 : 190 : 190 : 1.0
+T: 0 2 : 190 : 158 : 0.9
+T: 0 2 : 190 : 190 : 0.1
+T: 0 3 : 190 : 190 : 1.0
+T: 0 4 : 190 : 190 : 1.0
+T: 0 5 : 190 : 190 : 1.0
+T: 1 0 : 190 : 174 : 0.09
+T: 1 0 : 190 : 190 : 0.01
+T: 1 0 : 190 : 238 : 0.81
+T: 1 0 : 190 : 254 : 0.09
+T: 1 1 : 190 : 190 : 0.1
+T: 1 1 : 190 : 254 : 0.9
+T: 1 2 : 190 : 158 : 0.09
+T: 1 2 : 190 : 190 : 0.01
+T: 1 2 : 190 : 222 : 0.81
+T: 1 2 : 190 : 254 : 0.09
+T: 1 3 : 190 : 190 : 0.1
+T: 1 3 : 190 : 254 : 0.9
+T: 1 4 : 190 : 190 : 0.1
+T: 1 4 : 190 : 254 : 0.9
+T: 1 5 : 190 : 190 : 0.1
+T: 1 5 : 190 : 254 : 0.9
+T: 2 0 : 190 : 46 : 0.81
+T: 2 0 : 190 : 62 : 0.09
+T: 2 0 : 190 : 174 : 0.09
+T: 2 0 : 190 : 190 : 0.01
+T: 2 1 : 190 : 62 : 0.9
+T: 2 1 : 190 : 190 : 0.1
+T: 2 2 : 190 : 30 : 0.81
+T: 2 2 : 190 : 62 : 0.09
+T: 2 2 : 190 : 158 : 0.09
+T: 2 2 : 190 : 190 : 0.01
+T: 2 3 : 190 : 62 : 0.9
+T: 2 3 : 190 : 190 : 0.1
+T: 2 4 : 190 : 62 : 0.9
+T: 2 4 : 190 : 190 : 0.1
+T: 2 5 : 190 : 62 : 0.9
+T: 2 5 : 190 : 190 : 0.1
+T: 3 0 : 190 : 174 : 0.9
+T: 3 0 : 190 : 190 : 0.1
+T: 3 1 : 190 : 190 : 1.0
+T: 3 2 : 190 : 158 : 0.9
+T: 3 2 : 190 : 190 : 0.1
+T: 3 3 : 190 : 190 : 1.0
+T: 3 4 : 190 : 190 : 1.0
+T: 3 5 : 190 : 190 : 1.0
+T: 4 0 : 190 : 174 : 0.9
+T: 4 0 : 190 : 190 : 0.1
+T: 4 1 : 190 : 190 : 1.0
+T: 4 2 : 190 : 158 : 0.9
+T: 4 2 : 190 : 190 : 0.1
+T: 4 3 : 190 : 190 : 1.0
+T: 4 4 : 190 : 190 : 1.0
+T: 4 5 : 190 : 190 : 1.0
+T: 5 0 : 190 : 174 : 0.9
+T: 5 0 : 190 : 190 : 0.1
+T: 5 1 : 190 : 190 : 1.0
+T: 5 2 : 190 : 158 : 0.9
+T: 5 2 : 190 : 190 : 0.1
+T: 5 3 : 190 : 190 : 1.0
+T: 5 4 : 190 : 190 : 1.0
+T: 5 5 : 190 : 190 : 1.0
+T: 0 0 : 191 : 175 : 0.9
+T: 0 0 : 191 : 191 : 0.1
+T: 0 1 : 191 : 191 : 1.0
+T: 0 2 : 191 : 159 : 0.9
+T: 0 2 : 191 : 191 : 0.1
+T: 0 3 : 191 : 191 : 1.0
+T: 0 4 : 191 : 0 : 1.0
+T: 0 5 : 191 : 0 : 1.0
+T: 1 0 : 191 : 175 : 0.09
+T: 1 0 : 191 : 191 : 0.01
+T: 1 0 : 191 : 239 : 0.81
+T: 1 0 : 191 : 255 : 0.09
+T: 1 1 : 191 : 191 : 0.1
+T: 1 1 : 191 : 255 : 0.9
+T: 1 2 : 191 : 159 : 0.09
+T: 1 2 : 191 : 191 : 0.01
+T: 1 2 : 191 : 223 : 0.81
+T: 1 2 : 191 : 255 : 0.09
+T: 1 3 : 191 : 191 : 0.1
+T: 1 3 : 191 : 255 : 0.9
+T: 1 4 : 191 : 0 : 1.0
+T: 1 5 : 191 : 0 : 1.0
+T: 2 0 : 191 : 47 : 0.81
+T: 2 0 : 191 : 63 : 0.09
+T: 2 0 : 191 : 175 : 0.09
+T: 2 0 : 191 : 191 : 0.01
+T: 2 1 : 191 : 63 : 0.9
+T: 2 1 : 191 : 191 : 0.1
+T: 2 2 : 191 : 31 : 0.81
+T: 2 2 : 191 : 63 : 0.09
+T: 2 2 : 191 : 159 : 0.09
+T: 2 2 : 191 : 191 : 0.01
+T: 2 3 : 191 : 63 : 0.9
+T: 2 3 : 191 : 191 : 0.1
+T: 2 4 : 191 : 0 : 1.0
+T: 2 5 : 191 : 0 : 1.0
+T: 3 0 : 191 : 175 : 0.9
+T: 3 0 : 191 : 191 : 0.1
+T: 3 1 : 191 : 191 : 1.0
+T: 3 2 : 191 : 159 : 0.9
+T: 3 2 : 191 : 191 : 0.1
+T: 3 3 : 191 : 191 : 1.0
+T: 3 4 : 191 : 0 : 1.0
+T: 3 5 : 191 : 0 : 1.0
+T: 4 0 : 191 : 0 : 1.0
+T: 4 1 : 191 : 0 : 1.0
+T: 4 2 : 191 : 0 : 1.0
+T: 4 3 : 191 : 0 : 1.0
+T: 4 4 : 191 : 0 : 1.0
+T: 4 5 : 191 : 0 : 1.0
+T: 5 0 : 191 : 0 : 1.0
+T: 5 1 : 191 : 0 : 1.0
+T: 5 2 : 191 : 0 : 1.0
+T: 5 3 : 191 : 0 : 1.0
+T: 5 4 : 191 : 0 : 1.0
+T: 5 5 : 191 : 0 : 1.0
+T: 0 0 : 192 : 128 : 0.9
+T: 0 0 : 192 : 192 : 0.1
+T: 0 1 : 192 : 128 : 0.09
+T: 0 1 : 192 : 144 : 0.81
+T: 0 1 : 192 : 192 : 0.01
+T: 0 1 : 192 : 208 : 0.09
+T: 0 2 : 192 : 128 : 0.9
+T: 0 2 : 192 : 192 : 0.1
+T: 0 3 : 192 : 128 : 0.09
+T: 0 3 : 192 : 160 : 0.81
+T: 0 3 : 192 : 192 : 0.01
+T: 0 3 : 192 : 224 : 0.09
+T: 0 4 : 192 : 129 : 0.9
+T: 0 4 : 192 : 193 : 0.1
+T: 0 5 : 192 : 129 : 0.9
+T: 0 5 : 192 : 193 : 0.1
+T: 1 0 : 192 : 192 : 1.0
+T: 1 1 : 192 : 192 : 0.1
+T: 1 1 : 192 : 208 : 0.9
+T: 1 2 : 192 : 192 : 1.0
+T: 1 3 : 192 : 192 : 0.1
+T: 1 3 : 192 : 224 : 0.9
+T: 1 4 : 192 : 193 : 1.0
+T: 1 5 : 192 : 193 : 1.0
+T: 2 0 : 192 : 64 : 0.9
+T: 2 0 : 192 : 192 : 0.1
+T: 2 1 : 192 : 64 : 0.09
+T: 2 1 : 192 : 80 : 0.81
+T: 2 1 : 192 : 192 : 0.01
+T: 2 1 : 192 : 208 : 0.09
+T: 2 2 : 192 : 64 : 0.9
+T: 2 2 : 192 : 192 : 0.1
+T: 2 3 : 192 : 64 : 0.09
+T: 2 3 : 192 : 96 : 0.81
+T: 2 3 : 192 : 192 : 0.01
+T: 2 3 : 192 : 224 : 0.09
+T: 2 4 : 192 : 65 : 0.9
+T: 2 4 : 192 : 193 : 0.1
+T: 2 5 : 192 : 65 : 0.9
+T: 2 5 : 192 : 193 : 0.1
+T: 3 0 : 192 : 192 : 1.0
+T: 3 1 : 192 : 192 : 0.1
+T: 3 1 : 192 : 208 : 0.9
+T: 3 2 : 192 : 192 : 1.0
+T: 3 3 : 192 : 192 : 0.1
+T: 3 3 : 192 : 224 : 0.9
+T: 3 4 : 192 : 193 : 1.0
+T: 3 5 : 192 : 193 : 1.0
+T: 4 0 : 192 : 200 : 1.0
+T: 4 1 : 192 : 200 : 0.1
+T: 4 1 : 192 : 216 : 0.9
+T: 4 2 : 192 : 200 : 1.0
+T: 4 3 : 192 : 200 : 0.1
+T: 4 3 : 192 : 232 : 0.9
+T: 4 4 : 192 : 201 : 1.0
+T: 4 5 : 192 : 201 : 1.0
+T: 5 0 : 192 : 200 : 1.0
+T: 5 1 : 192 : 200 : 0.1
+T: 5 1 : 192 : 216 : 0.9
+T: 5 2 : 192 : 200 : 1.0
+T: 5 3 : 192 : 200 : 0.1
+T: 5 3 : 192 : 232 : 0.9
+T: 5 4 : 192 : 201 : 1.0
+T: 5 5 : 192 : 201 : 1.0
+T: 0 0 : 193 : 129 : 0.9
+T: 0 0 : 193 : 193 : 0.1
+T: 0 1 : 193 : 129 : 0.09
+T: 0 1 : 193 : 145 : 0.81
+T: 0 1 : 193 : 193 : 0.01
+T: 0 1 : 193 : 209 : 0.09
+T: 0 2 : 193 : 129 : 0.9
+T: 0 2 : 193 : 193 : 0.1
+T: 0 3 : 193 : 129 : 0.09
+T: 0 3 : 193 : 161 : 0.81
+T: 0 3 : 193 : 193 : 0.01
+T: 0 3 : 193 : 225 : 0.09
+T: 0 4 : 193 : 129 : 0.9
+T: 0 4 : 193 : 193 : 0.1
+T: 0 5 : 193 : 129 : 0.9
+T: 0 5 : 193 : 193 : 0.1
+T: 1 0 : 193 : 193 : 1.0
+T: 1 1 : 193 : 193 : 0.1
+T: 1 1 : 193 : 209 : 0.9
+T: 1 2 : 193 : 193 : 1.0
+T: 1 3 : 193 : 193 : 0.1
+T: 1 3 : 193 : 225 : 0.9
+T: 1 4 : 193 : 193 : 1.0
+T: 1 5 : 193 : 193 : 1.0
+T: 2 0 : 193 : 65 : 0.9
+T: 2 0 : 193 : 193 : 0.1
+T: 2 1 : 193 : 65 : 0.09
+T: 2 1 : 193 : 81 : 0.81
+T: 2 1 : 193 : 193 : 0.01
+T: 2 1 : 193 : 209 : 0.09
+T: 2 2 : 193 : 65 : 0.9
+T: 2 2 : 193 : 193 : 0.1
+T: 2 3 : 193 : 65 : 0.09
+T: 2 3 : 193 : 97 : 0.81
+T: 2 3 : 193 : 193 : 0.01
+T: 2 3 : 193 : 225 : 0.09
+T: 2 4 : 193 : 65 : 0.9
+T: 2 4 : 193 : 193 : 0.1
+T: 2 5 : 193 : 65 : 0.9
+T: 2 5 : 193 : 193 : 0.1
+T: 3 0 : 193 : 193 : 1.0
+T: 3 1 : 193 : 193 : 0.1
+T: 3 1 : 193 : 209 : 0.9
+T: 3 2 : 193 : 193 : 1.0
+T: 3 3 : 193 : 193 : 0.1
+T: 3 3 : 193 : 225 : 0.9
+T: 3 4 : 193 : 193 : 1.0
+T: 3 5 : 193 : 193 : 1.0
+T: 4 0 : 193 : 201 : 1.0
+T: 4 1 : 193 : 201 : 0.1
+T: 4 1 : 193 : 217 : 0.9
+T: 4 2 : 193 : 201 : 1.0
+T: 4 3 : 193 : 201 : 0.1
+T: 4 3 : 193 : 233 : 0.9
+T: 4 4 : 193 : 201 : 1.0
+T: 4 5 : 193 : 201 : 1.0
+T: 5 0 : 193 : 201 : 1.0
+T: 5 1 : 193 : 201 : 0.1
+T: 5 1 : 193 : 217 : 0.9
+T: 5 2 : 193 : 201 : 1.0
+T: 5 3 : 193 : 201 : 0.1
+T: 5 3 : 193 : 233 : 0.9
+T: 5 4 : 193 : 201 : 1.0
+T: 5 5 : 193 : 201 : 1.0
+T: 0 0 : 194 : 130 : 0.9
+T: 0 0 : 194 : 194 : 0.1
+T: 0 1 : 194 : 130 : 0.09
+T: 0 1 : 194 : 146 : 0.81
+T: 0 1 : 194 : 194 : 0.01
+T: 0 1 : 194 : 210 : 0.09
+T: 0 2 : 194 : 130 : 0.9
+T: 0 2 : 194 : 194 : 0.1
+T: 0 3 : 194 : 130 : 0.09
+T: 0 3 : 194 : 162 : 0.81
+T: 0 3 : 194 : 194 : 0.01
+T: 0 3 : 194 : 226 : 0.09
+T: 0 4 : 194 : 131 : 0.9
+T: 0 4 : 194 : 195 : 0.1
+T: 0 5 : 194 : 131 : 0.9
+T: 0 5 : 194 : 195 : 0.1
+T: 1 0 : 194 : 194 : 1.0
+T: 1 1 : 194 : 194 : 0.1
+T: 1 1 : 194 : 210 : 0.9
+T: 1 2 : 194 : 194 : 1.0
+T: 1 3 : 194 : 194 : 0.1
+T: 1 3 : 194 : 226 : 0.9
+T: 1 4 : 194 : 195 : 1.0
+T: 1 5 : 194 : 195 : 1.0
+T: 2 0 : 194 : 66 : 0.9
+T: 2 0 : 194 : 194 : 0.1
+T: 2 1 : 194 : 66 : 0.09
+T: 2 1 : 194 : 82 : 0.81
+T: 2 1 : 194 : 194 : 0.01
+T: 2 1 : 194 : 210 : 0.09
+T: 2 2 : 194 : 66 : 0.9
+T: 2 2 : 194 : 194 : 0.1
+T: 2 3 : 194 : 66 : 0.09
+T: 2 3 : 194 : 98 : 0.81
+T: 2 3 : 194 : 194 : 0.01
+T: 2 3 : 194 : 226 : 0.09
+T: 2 4 : 194 : 67 : 0.9
+T: 2 4 : 194 : 195 : 0.1
+T: 2 5 : 194 : 67 : 0.9
+T: 2 5 : 194 : 195 : 0.1
+T: 3 0 : 194 : 194 : 1.0
+T: 3 1 : 194 : 194 : 0.1
+T: 3 1 : 194 : 210 : 0.9
+T: 3 2 : 194 : 194 : 1.0
+T: 3 3 : 194 : 194 : 0.1
+T: 3 3 : 194 : 226 : 0.9
+T: 3 4 : 194 : 195 : 1.0
+T: 3 5 : 194 : 195 : 1.0
+T: 4 0 : 194 : 202 : 1.0
+T: 4 1 : 194 : 202 : 0.1
+T: 4 1 : 194 : 218 : 0.9
+T: 4 2 : 194 : 202 : 1.0
+T: 4 3 : 194 : 202 : 0.1
+T: 4 3 : 194 : 234 : 0.9
+T: 4 4 : 194 : 203 : 1.0
+T: 4 5 : 194 : 203 : 1.0
+T: 5 0 : 194 : 202 : 1.0
+T: 5 1 : 194 : 202 : 0.1
+T: 5 1 : 194 : 218 : 0.9
+T: 5 2 : 194 : 202 : 1.0
+T: 5 3 : 194 : 202 : 0.1
+T: 5 3 : 194 : 234 : 0.9
+T: 5 4 : 194 : 203 : 1.0
+T: 5 5 : 194 : 203 : 1.0
+T: 0 0 : 195 : 131 : 0.9
+T: 0 0 : 195 : 195 : 0.1
+T: 0 1 : 195 : 131 : 0.09
+T: 0 1 : 195 : 147 : 0.81
+T: 0 1 : 195 : 195 : 0.01
+T: 0 1 : 195 : 211 : 0.09
+T: 0 2 : 195 : 131 : 0.9
+T: 0 2 : 195 : 195 : 0.1
+T: 0 3 : 195 : 131 : 0.09
+T: 0 3 : 195 : 163 : 0.81
+T: 0 3 : 195 : 195 : 0.01
+T: 0 3 : 195 : 227 : 0.09
+T: 0 4 : 195 : 131 : 0.9
+T: 0 4 : 195 : 195 : 0.1
+T: 0 5 : 195 : 131 : 0.9
+T: 0 5 : 195 : 195 : 0.1
+T: 1 0 : 195 : 195 : 1.0
+T: 1 1 : 195 : 195 : 0.1
+T: 1 1 : 195 : 211 : 0.9
+T: 1 2 : 195 : 195 : 1.0
+T: 1 3 : 195 : 195 : 0.1
+T: 1 3 : 195 : 227 : 0.9
+T: 1 4 : 195 : 195 : 1.0
+T: 1 5 : 195 : 195 : 1.0
+T: 2 0 : 195 : 67 : 0.9
+T: 2 0 : 195 : 195 : 0.1
+T: 2 1 : 195 : 67 : 0.09
+T: 2 1 : 195 : 83 : 0.81
+T: 2 1 : 195 : 195 : 0.01
+T: 2 1 : 195 : 211 : 0.09
+T: 2 2 : 195 : 67 : 0.9
+T: 2 2 : 195 : 195 : 0.1
+T: 2 3 : 195 : 67 : 0.09
+T: 2 3 : 195 : 99 : 0.81
+T: 2 3 : 195 : 195 : 0.01
+T: 2 3 : 195 : 227 : 0.09
+T: 2 4 : 195 : 67 : 0.9
+T: 2 4 : 195 : 195 : 0.1
+T: 2 5 : 195 : 67 : 0.9
+T: 2 5 : 195 : 195 : 0.1
+T: 3 0 : 195 : 195 : 1.0
+T: 3 1 : 195 : 195 : 0.1
+T: 3 1 : 195 : 211 : 0.9
+T: 3 2 : 195 : 195 : 1.0
+T: 3 3 : 195 : 195 : 0.1
+T: 3 3 : 195 : 227 : 0.9
+T: 3 4 : 195 : 195 : 1.0
+T: 3 5 : 195 : 195 : 1.0
+T: 4 0 : 195 : 203 : 1.0
+T: 4 1 : 195 : 203 : 0.1
+T: 4 1 : 195 : 219 : 0.9
+T: 4 2 : 195 : 203 : 1.0
+T: 4 3 : 195 : 203 : 0.1
+T: 4 3 : 195 : 235 : 0.9
+T: 4 4 : 195 : 203 : 1.0
+T: 4 5 : 195 : 203 : 1.0
+T: 5 0 : 195 : 203 : 1.0
+T: 5 1 : 195 : 203 : 0.1
+T: 5 1 : 195 : 219 : 0.9
+T: 5 2 : 195 : 203 : 1.0
+T: 5 3 : 195 : 203 : 0.1
+T: 5 3 : 195 : 235 : 0.9
+T: 5 4 : 195 : 203 : 1.0
+T: 5 5 : 195 : 203 : 1.0
+T: 0 0 : 196 : 132 : 0.9
+T: 0 0 : 196 : 196 : 0.1
+T: 0 1 : 196 : 132 : 0.09
+T: 0 1 : 196 : 148 : 0.81
+T: 0 1 : 196 : 196 : 0.01
+T: 0 1 : 196 : 212 : 0.09
+T: 0 2 : 196 : 132 : 0.9
+T: 0 2 : 196 : 196 : 0.1
+T: 0 3 : 196 : 132 : 0.09
+T: 0 3 : 196 : 164 : 0.81
+T: 0 3 : 196 : 196 : 0.01
+T: 0 3 : 196 : 228 : 0.09
+T: 0 4 : 196 : 133 : 0.9
+T: 0 4 : 196 : 197 : 0.1
+T: 0 5 : 196 : 133 : 0.9
+T: 0 5 : 196 : 197 : 0.1
+T: 1 0 : 196 : 196 : 1.0
+T: 1 1 : 196 : 196 : 0.1
+T: 1 1 : 196 : 212 : 0.9
+T: 1 2 : 196 : 196 : 1.0
+T: 1 3 : 196 : 196 : 0.1
+T: 1 3 : 196 : 228 : 0.9
+T: 1 4 : 196 : 197 : 1.0
+T: 1 5 : 196 : 197 : 1.0
+T: 2 0 : 196 : 68 : 0.9
+T: 2 0 : 196 : 196 : 0.1
+T: 2 1 : 196 : 68 : 0.09
+T: 2 1 : 196 : 84 : 0.81
+T: 2 1 : 196 : 196 : 0.01
+T: 2 1 : 196 : 212 : 0.09
+T: 2 2 : 196 : 68 : 0.9
+T: 2 2 : 196 : 196 : 0.1
+T: 2 3 : 196 : 68 : 0.09
+T: 2 3 : 196 : 100 : 0.81
+T: 2 3 : 196 : 196 : 0.01
+T: 2 3 : 196 : 228 : 0.09
+T: 2 4 : 196 : 69 : 0.9
+T: 2 4 : 196 : 197 : 0.1
+T: 2 5 : 196 : 69 : 0.9
+T: 2 5 : 196 : 197 : 0.1
+T: 3 0 : 196 : 196 : 1.0
+T: 3 1 : 196 : 196 : 0.1
+T: 3 1 : 196 : 212 : 0.9
+T: 3 2 : 196 : 196 : 1.0
+T: 3 3 : 196 : 196 : 0.1
+T: 3 3 : 196 : 228 : 0.9
+T: 3 4 : 196 : 197 : 1.0
+T: 3 5 : 196 : 197 : 1.0
+T: 4 0 : 196 : 204 : 1.0
+T: 4 1 : 196 : 204 : 0.1
+T: 4 1 : 196 : 220 : 0.9
+T: 4 2 : 196 : 204 : 1.0
+T: 4 3 : 196 : 204 : 0.1
+T: 4 3 : 196 : 236 : 0.9
+T: 4 4 : 196 : 205 : 1.0
+T: 4 5 : 196 : 205 : 1.0
+T: 5 0 : 196 : 204 : 1.0
+T: 5 1 : 196 : 204 : 0.1
+T: 5 1 : 196 : 220 : 0.9
+T: 5 2 : 196 : 204 : 1.0
+T: 5 3 : 196 : 204 : 0.1
+T: 5 3 : 196 : 236 : 0.9
+T: 5 4 : 196 : 205 : 1.0
+T: 5 5 : 196 : 205 : 1.0
+T: 0 0 : 197 : 133 : 0.9
+T: 0 0 : 197 : 197 : 0.1
+T: 0 1 : 197 : 133 : 0.09
+T: 0 1 : 197 : 149 : 0.81
+T: 0 1 : 197 : 197 : 0.01
+T: 0 1 : 197 : 213 : 0.09
+T: 0 2 : 197 : 133 : 0.9
+T: 0 2 : 197 : 197 : 0.1
+T: 0 3 : 197 : 133 : 0.09
+T: 0 3 : 197 : 165 : 0.81
+T: 0 3 : 197 : 197 : 0.01
+T: 0 3 : 197 : 229 : 0.09
+T: 0 4 : 197 : 133 : 0.9
+T: 0 4 : 197 : 197 : 0.1
+T: 0 5 : 197 : 133 : 0.9
+T: 0 5 : 197 : 197 : 0.1
+T: 1 0 : 197 : 197 : 1.0
+T: 1 1 : 197 : 197 : 0.1
+T: 1 1 : 197 : 213 : 0.9
+T: 1 2 : 197 : 197 : 1.0
+T: 1 3 : 197 : 197 : 0.1
+T: 1 3 : 197 : 229 : 0.9
+T: 1 4 : 197 : 197 : 1.0
+T: 1 5 : 197 : 197 : 1.0
+T: 2 0 : 197 : 69 : 0.9
+T: 2 0 : 197 : 197 : 0.1
+T: 2 1 : 197 : 69 : 0.09
+T: 2 1 : 197 : 85 : 0.81
+T: 2 1 : 197 : 197 : 0.01
+T: 2 1 : 197 : 213 : 0.09
+T: 2 2 : 197 : 69 : 0.9
+T: 2 2 : 197 : 197 : 0.1
+T: 2 3 : 197 : 69 : 0.09
+T: 2 3 : 197 : 101 : 0.81
+T: 2 3 : 197 : 197 : 0.01
+T: 2 3 : 197 : 229 : 0.09
+T: 2 4 : 197 : 69 : 0.9
+T: 2 4 : 197 : 197 : 0.1
+T: 2 5 : 197 : 69 : 0.9
+T: 2 5 : 197 : 197 : 0.1
+T: 3 0 : 197 : 197 : 1.0
+T: 3 1 : 197 : 197 : 0.1
+T: 3 1 : 197 : 213 : 0.9
+T: 3 2 : 197 : 197 : 1.0
+T: 3 3 : 197 : 197 : 0.1
+T: 3 3 : 197 : 229 : 0.9
+T: 3 4 : 197 : 197 : 1.0
+T: 3 5 : 197 : 197 : 1.0
+T: 4 0 : 197 : 205 : 1.0
+T: 4 1 : 197 : 205 : 0.1
+T: 4 1 : 197 : 221 : 0.9
+T: 4 2 : 197 : 205 : 1.0
+T: 4 3 : 197 : 205 : 0.1
+T: 4 3 : 197 : 237 : 0.9
+T: 4 4 : 197 : 205 : 1.0
+T: 4 5 : 197 : 205 : 1.0
+T: 5 0 : 197 : 205 : 1.0
+T: 5 1 : 197 : 205 : 0.1
+T: 5 1 : 197 : 221 : 0.9
+T: 5 2 : 197 : 205 : 1.0
+T: 5 3 : 197 : 205 : 0.1
+T: 5 3 : 197 : 237 : 0.9
+T: 5 4 : 197 : 205 : 1.0
+T: 5 5 : 197 : 205 : 1.0
+T: 0 0 : 198 : 134 : 0.9
+T: 0 0 : 198 : 198 : 0.1
+T: 0 1 : 198 : 134 : 0.09
+T: 0 1 : 198 : 150 : 0.81
+T: 0 1 : 198 : 198 : 0.01
+T: 0 1 : 198 : 214 : 0.09
+T: 0 2 : 198 : 134 : 0.9
+T: 0 2 : 198 : 198 : 0.1
+T: 0 3 : 198 : 134 : 0.09
+T: 0 3 : 198 : 166 : 0.81
+T: 0 3 : 198 : 198 : 0.01
+T: 0 3 : 198 : 230 : 0.09
+T: 0 4 : 198 : 135 : 0.9
+T: 0 4 : 198 : 199 : 0.1
+T: 0 5 : 198 : 135 : 0.9
+T: 0 5 : 198 : 199 : 0.1
+T: 1 0 : 198 : 198 : 1.0
+T: 1 1 : 198 : 198 : 0.1
+T: 1 1 : 198 : 214 : 0.9
+T: 1 2 : 198 : 198 : 1.0
+T: 1 3 : 198 : 198 : 0.1
+T: 1 3 : 198 : 230 : 0.9
+T: 1 4 : 198 : 199 : 1.0
+T: 1 5 : 198 : 199 : 1.0
+T: 2 0 : 198 : 70 : 0.9
+T: 2 0 : 198 : 198 : 0.1
+T: 2 1 : 198 : 70 : 0.09
+T: 2 1 : 198 : 86 : 0.81
+T: 2 1 : 198 : 198 : 0.01
+T: 2 1 : 198 : 214 : 0.09
+T: 2 2 : 198 : 70 : 0.9
+T: 2 2 : 198 : 198 : 0.1
+T: 2 3 : 198 : 70 : 0.09
+T: 2 3 : 198 : 102 : 0.81
+T: 2 3 : 198 : 198 : 0.01
+T: 2 3 : 198 : 230 : 0.09
+T: 2 4 : 198 : 71 : 0.9
+T: 2 4 : 198 : 199 : 0.1
+T: 2 5 : 198 : 71 : 0.9
+T: 2 5 : 198 : 199 : 0.1
+T: 3 0 : 198 : 198 : 1.0
+T: 3 1 : 198 : 198 : 0.1
+T: 3 1 : 198 : 214 : 0.9
+T: 3 2 : 198 : 198 : 1.0
+T: 3 3 : 198 : 198 : 0.1
+T: 3 3 : 198 : 230 : 0.9
+T: 3 4 : 198 : 199 : 1.0
+T: 3 5 : 198 : 199 : 1.0
+T: 4 0 : 198 : 206 : 1.0
+T: 4 1 : 198 : 206 : 0.1
+T: 4 1 : 198 : 222 : 0.9
+T: 4 2 : 198 : 206 : 1.0
+T: 4 3 : 198 : 206 : 0.1
+T: 4 3 : 198 : 238 : 0.9
+T: 4 4 : 198 : 0 : 1.0
+T: 4 5 : 198 : 0 : 1.0
+T: 5 0 : 198 : 206 : 1.0
+T: 5 1 : 198 : 206 : 0.1
+T: 5 1 : 198 : 222 : 0.9
+T: 5 2 : 198 : 206 : 1.0
+T: 5 3 : 198 : 206 : 0.1
+T: 5 3 : 198 : 238 : 0.9
+T: 5 4 : 198 : 0 : 1.0
+T: 5 5 : 198 : 0 : 1.0
+T: 0 0 : 199 : 135 : 0.9
+T: 0 0 : 199 : 199 : 0.1
+T: 0 1 : 199 : 135 : 0.09
+T: 0 1 : 199 : 151 : 0.81
+T: 0 1 : 199 : 199 : 0.01
+T: 0 1 : 199 : 215 : 0.09
+T: 0 2 : 199 : 135 : 0.9
+T: 0 2 : 199 : 199 : 0.1
+T: 0 3 : 199 : 135 : 0.09
+T: 0 3 : 199 : 167 : 0.81
+T: 0 3 : 199 : 199 : 0.01
+T: 0 3 : 199 : 231 : 0.09
+T: 0 4 : 199 : 135 : 0.9
+T: 0 4 : 199 : 199 : 0.1
+T: 0 5 : 199 : 135 : 0.9
+T: 0 5 : 199 : 199 : 0.1
+T: 1 0 : 199 : 199 : 1.0
+T: 1 1 : 199 : 199 : 0.1
+T: 1 1 : 199 : 215 : 0.9
+T: 1 2 : 199 : 199 : 1.0
+T: 1 3 : 199 : 199 : 0.1
+T: 1 3 : 199 : 231 : 0.9
+T: 1 4 : 199 : 199 : 1.0
+T: 1 5 : 199 : 199 : 1.0
+T: 2 0 : 199 : 71 : 0.9
+T: 2 0 : 199 : 199 : 0.1
+T: 2 1 : 199 : 71 : 0.09
+T: 2 1 : 199 : 87 : 0.81
+T: 2 1 : 199 : 199 : 0.01
+T: 2 1 : 199 : 215 : 0.09
+T: 2 2 : 199 : 71 : 0.9
+T: 2 2 : 199 : 199 : 0.1
+T: 2 3 : 199 : 71 : 0.09
+T: 2 3 : 199 : 103 : 0.81
+T: 2 3 : 199 : 199 : 0.01
+T: 2 3 : 199 : 231 : 0.09
+T: 2 4 : 199 : 71 : 0.9
+T: 2 4 : 199 : 199 : 0.1
+T: 2 5 : 199 : 71 : 0.9
+T: 2 5 : 199 : 199 : 0.1
+T: 3 0 : 199 : 199 : 1.0
+T: 3 1 : 199 : 199 : 0.1
+T: 3 1 : 199 : 215 : 0.9
+T: 3 2 : 199 : 199 : 1.0
+T: 3 3 : 199 : 199 : 0.1
+T: 3 3 : 199 : 231 : 0.9
+T: 3 4 : 199 : 199 : 1.0
+T: 3 5 : 199 : 199 : 1.0
+T: 4 0 : 199 : 0 : 1.0
+T: 4 1 : 199 : 0 : 1.0
+T: 4 2 : 199 : 0 : 1.0
+T: 4 3 : 199 : 0 : 1.0
+T: 4 4 : 199 : 0 : 1.0
+T: 4 5 : 199 : 0 : 1.0
+T: 5 0 : 199 : 0 : 1.0
+T: 5 1 : 199 : 0 : 1.0
+T: 5 2 : 199 : 0 : 1.0
+T: 5 3 : 199 : 0 : 1.0
+T: 5 4 : 199 : 0 : 1.0
+T: 5 5 : 199 : 0 : 1.0
+T: 0 0 : 200 : 136 : 0.9
+T: 0 0 : 200 : 200 : 0.1
+T: 0 1 : 200 : 136 : 0.09
+T: 0 1 : 200 : 152 : 0.81
+T: 0 1 : 200 : 200 : 0.01
+T: 0 1 : 200 : 216 : 0.09
+T: 0 2 : 200 : 136 : 0.9
+T: 0 2 : 200 : 200 : 0.1
+T: 0 3 : 200 : 136 : 0.09
+T: 0 3 : 200 : 168 : 0.81
+T: 0 3 : 200 : 200 : 0.01
+T: 0 3 : 200 : 232 : 0.09
+T: 0 4 : 200 : 137 : 0.9
+T: 0 4 : 200 : 201 : 0.1
+T: 0 5 : 200 : 137 : 0.9
+T: 0 5 : 200 : 201 : 0.1
+T: 1 0 : 200 : 200 : 1.0
+T: 1 1 : 200 : 200 : 0.1
+T: 1 1 : 200 : 216 : 0.9
+T: 1 2 : 200 : 200 : 1.0
+T: 1 3 : 200 : 200 : 0.1
+T: 1 3 : 200 : 232 : 0.9
+T: 1 4 : 200 : 201 : 1.0
+T: 1 5 : 200 : 201 : 1.0
+T: 2 0 : 200 : 72 : 0.9
+T: 2 0 : 200 : 200 : 0.1
+T: 2 1 : 200 : 72 : 0.09
+T: 2 1 : 200 : 88 : 0.81
+T: 2 1 : 200 : 200 : 0.01
+T: 2 1 : 200 : 216 : 0.09
+T: 2 2 : 200 : 72 : 0.9
+T: 2 2 : 200 : 200 : 0.1
+T: 2 3 : 200 : 72 : 0.09
+T: 2 3 : 200 : 104 : 0.81
+T: 2 3 : 200 : 200 : 0.01
+T: 2 3 : 200 : 232 : 0.09
+T: 2 4 : 200 : 73 : 0.9
+T: 2 4 : 200 : 201 : 0.1
+T: 2 5 : 200 : 73 : 0.9
+T: 2 5 : 200 : 201 : 0.1
+T: 3 0 : 200 : 200 : 1.0
+T: 3 1 : 200 : 200 : 0.1
+T: 3 1 : 200 : 216 : 0.9
+T: 3 2 : 200 : 200 : 1.0
+T: 3 3 : 200 : 200 : 0.1
+T: 3 3 : 200 : 232 : 0.9
+T: 3 4 : 200 : 201 : 1.0
+T: 3 5 : 200 : 201 : 1.0
+T: 4 0 : 200 : 200 : 1.0
+T: 4 1 : 200 : 200 : 0.1
+T: 4 1 : 200 : 216 : 0.9
+T: 4 2 : 200 : 200 : 1.0
+T: 4 3 : 200 : 200 : 0.1
+T: 4 3 : 200 : 232 : 0.9
+T: 4 4 : 200 : 201 : 1.0
+T: 4 5 : 200 : 201 : 1.0
+T: 5 0 : 200 : 200 : 1.0
+T: 5 1 : 200 : 200 : 0.1
+T: 5 1 : 200 : 216 : 0.9
+T: 5 2 : 200 : 200 : 1.0
+T: 5 3 : 200 : 200 : 0.1
+T: 5 3 : 200 : 232 : 0.9
+T: 5 4 : 200 : 201 : 1.0
+T: 5 5 : 200 : 201 : 1.0
+T: 0 0 : 201 : 137 : 0.9
+T: 0 0 : 201 : 201 : 0.1
+T: 0 1 : 201 : 137 : 0.09
+T: 0 1 : 201 : 153 : 0.81
+T: 0 1 : 201 : 201 : 0.01
+T: 0 1 : 201 : 217 : 0.09
+T: 0 2 : 201 : 137 : 0.9
+T: 0 2 : 201 : 201 : 0.1
+T: 0 3 : 201 : 137 : 0.09
+T: 0 3 : 201 : 169 : 0.81
+T: 0 3 : 201 : 201 : 0.01
+T: 0 3 : 201 : 233 : 0.09
+T: 0 4 : 201 : 137 : 0.9
+T: 0 4 : 201 : 201 : 0.1
+T: 0 5 : 201 : 137 : 0.9
+T: 0 5 : 201 : 201 : 0.1
+T: 1 0 : 201 : 201 : 1.0
+T: 1 1 : 201 : 201 : 0.1
+T: 1 1 : 201 : 217 : 0.9
+T: 1 2 : 201 : 201 : 1.0
+T: 1 3 : 201 : 201 : 0.1
+T: 1 3 : 201 : 233 : 0.9
+T: 1 4 : 201 : 201 : 1.0
+T: 1 5 : 201 : 201 : 1.0
+T: 2 0 : 201 : 73 : 0.9
+T: 2 0 : 201 : 201 : 0.1
+T: 2 1 : 201 : 73 : 0.09
+T: 2 1 : 201 : 89 : 0.81
+T: 2 1 : 201 : 201 : 0.01
+T: 2 1 : 201 : 217 : 0.09
+T: 2 2 : 201 : 73 : 0.9
+T: 2 2 : 201 : 201 : 0.1
+T: 2 3 : 201 : 73 : 0.09
+T: 2 3 : 201 : 105 : 0.81
+T: 2 3 : 201 : 201 : 0.01
+T: 2 3 : 201 : 233 : 0.09
+T: 2 4 : 201 : 73 : 0.9
+T: 2 4 : 201 : 201 : 0.1
+T: 2 5 : 201 : 73 : 0.9
+T: 2 5 : 201 : 201 : 0.1
+T: 3 0 : 201 : 201 : 1.0
+T: 3 1 : 201 : 201 : 0.1
+T: 3 1 : 201 : 217 : 0.9
+T: 3 2 : 201 : 201 : 1.0
+T: 3 3 : 201 : 201 : 0.1
+T: 3 3 : 201 : 233 : 0.9
+T: 3 4 : 201 : 201 : 1.0
+T: 3 5 : 201 : 201 : 1.0
+T: 4 0 : 201 : 201 : 1.0
+T: 4 1 : 201 : 201 : 0.1
+T: 4 1 : 201 : 217 : 0.9
+T: 4 2 : 201 : 201 : 1.0
+T: 4 3 : 201 : 201 : 0.1
+T: 4 3 : 201 : 233 : 0.9
+T: 4 4 : 201 : 201 : 1.0
+T: 4 5 : 201 : 201 : 1.0
+T: 5 0 : 201 : 201 : 1.0
+T: 5 1 : 201 : 201 : 0.1
+T: 5 1 : 201 : 217 : 0.9
+T: 5 2 : 201 : 201 : 1.0
+T: 5 3 : 201 : 201 : 0.1
+T: 5 3 : 201 : 233 : 0.9
+T: 5 4 : 201 : 201 : 1.0
+T: 5 5 : 201 : 201 : 1.0
+T: 0 0 : 202 : 138 : 0.9
+T: 0 0 : 202 : 202 : 0.1
+T: 0 1 : 202 : 138 : 0.09
+T: 0 1 : 202 : 154 : 0.81
+T: 0 1 : 202 : 202 : 0.01
+T: 0 1 : 202 : 218 : 0.09
+T: 0 2 : 202 : 138 : 0.9
+T: 0 2 : 202 : 202 : 0.1
+T: 0 3 : 202 : 138 : 0.09
+T: 0 3 : 202 : 170 : 0.81
+T: 0 3 : 202 : 202 : 0.01
+T: 0 3 : 202 : 234 : 0.09
+T: 0 4 : 202 : 139 : 0.9
+T: 0 4 : 202 : 203 : 0.1
+T: 0 5 : 202 : 139 : 0.9
+T: 0 5 : 202 : 203 : 0.1
+T: 1 0 : 202 : 202 : 1.0
+T: 1 1 : 202 : 202 : 0.1
+T: 1 1 : 202 : 218 : 0.9
+T: 1 2 : 202 : 202 : 1.0
+T: 1 3 : 202 : 202 : 0.1
+T: 1 3 : 202 : 234 : 0.9
+T: 1 4 : 202 : 203 : 1.0
+T: 1 5 : 202 : 203 : 1.0
+T: 2 0 : 202 : 74 : 0.9
+T: 2 0 : 202 : 202 : 0.1
+T: 2 1 : 202 : 74 : 0.09
+T: 2 1 : 202 : 90 : 0.81
+T: 2 1 : 202 : 202 : 0.01
+T: 2 1 : 202 : 218 : 0.09
+T: 2 2 : 202 : 74 : 0.9
+T: 2 2 : 202 : 202 : 0.1
+T: 2 3 : 202 : 74 : 0.09
+T: 2 3 : 202 : 106 : 0.81
+T: 2 3 : 202 : 202 : 0.01
+T: 2 3 : 202 : 234 : 0.09
+T: 2 4 : 202 : 75 : 0.9
+T: 2 4 : 202 : 203 : 0.1
+T: 2 5 : 202 : 75 : 0.9
+T: 2 5 : 202 : 203 : 0.1
+T: 3 0 : 202 : 202 : 1.0
+T: 3 1 : 202 : 202 : 0.1
+T: 3 1 : 202 : 218 : 0.9
+T: 3 2 : 202 : 202 : 1.0
+T: 3 3 : 202 : 202 : 0.1
+T: 3 3 : 202 : 234 : 0.9
+T: 3 4 : 202 : 203 : 1.0
+T: 3 5 : 202 : 203 : 1.0
+T: 4 0 : 202 : 202 : 1.0
+T: 4 1 : 202 : 202 : 0.1
+T: 4 1 : 202 : 218 : 0.9
+T: 4 2 : 202 : 202 : 1.0
+T: 4 3 : 202 : 202 : 0.1
+T: 4 3 : 202 : 234 : 0.9
+T: 4 4 : 202 : 203 : 1.0
+T: 4 5 : 202 : 203 : 1.0
+T: 5 0 : 202 : 202 : 1.0
+T: 5 1 : 202 : 202 : 0.1
+T: 5 1 : 202 : 218 : 0.9
+T: 5 2 : 202 : 202 : 1.0
+T: 5 3 : 202 : 202 : 0.1
+T: 5 3 : 202 : 234 : 0.9
+T: 5 4 : 202 : 203 : 1.0
+T: 5 5 : 202 : 203 : 1.0
+T: 0 0 : 203 : 139 : 0.9
+T: 0 0 : 203 : 203 : 0.1
+T: 0 1 : 203 : 139 : 0.09
+T: 0 1 : 203 : 155 : 0.81
+T: 0 1 : 203 : 203 : 0.01
+T: 0 1 : 203 : 219 : 0.09
+T: 0 2 : 203 : 139 : 0.9
+T: 0 2 : 203 : 203 : 0.1
+T: 0 3 : 203 : 139 : 0.09
+T: 0 3 : 203 : 171 : 0.81
+T: 0 3 : 203 : 203 : 0.01
+T: 0 3 : 203 : 235 : 0.09
+T: 0 4 : 203 : 139 : 0.9
+T: 0 4 : 203 : 203 : 0.1
+T: 0 5 : 203 : 139 : 0.9
+T: 0 5 : 203 : 203 : 0.1
+T: 1 0 : 203 : 203 : 1.0
+T: 1 1 : 203 : 203 : 0.1
+T: 1 1 : 203 : 219 : 0.9
+T: 1 2 : 203 : 203 : 1.0
+T: 1 3 : 203 : 203 : 0.1
+T: 1 3 : 203 : 235 : 0.9
+T: 1 4 : 203 : 203 : 1.0
+T: 1 5 : 203 : 203 : 1.0
+T: 2 0 : 203 : 75 : 0.9
+T: 2 0 : 203 : 203 : 0.1
+T: 2 1 : 203 : 75 : 0.09
+T: 2 1 : 203 : 91 : 0.81
+T: 2 1 : 203 : 203 : 0.01
+T: 2 1 : 203 : 219 : 0.09
+T: 2 2 : 203 : 75 : 0.9
+T: 2 2 : 203 : 203 : 0.1
+T: 2 3 : 203 : 75 : 0.09
+T: 2 3 : 203 : 107 : 0.81
+T: 2 3 : 203 : 203 : 0.01
+T: 2 3 : 203 : 235 : 0.09
+T: 2 4 : 203 : 75 : 0.9
+T: 2 4 : 203 : 203 : 0.1
+T: 2 5 : 203 : 75 : 0.9
+T: 2 5 : 203 : 203 : 0.1
+T: 3 0 : 203 : 203 : 1.0
+T: 3 1 : 203 : 203 : 0.1
+T: 3 1 : 203 : 219 : 0.9
+T: 3 2 : 203 : 203 : 1.0
+T: 3 3 : 203 : 203 : 0.1
+T: 3 3 : 203 : 235 : 0.9
+T: 3 4 : 203 : 203 : 1.0
+T: 3 5 : 203 : 203 : 1.0
+T: 4 0 : 203 : 203 : 1.0
+T: 4 1 : 203 : 203 : 0.1
+T: 4 1 : 203 : 219 : 0.9
+T: 4 2 : 203 : 203 : 1.0
+T: 4 3 : 203 : 203 : 0.1
+T: 4 3 : 203 : 235 : 0.9
+T: 4 4 : 203 : 203 : 1.0
+T: 4 5 : 203 : 203 : 1.0
+T: 5 0 : 203 : 203 : 1.0
+T: 5 1 : 203 : 203 : 0.1
+T: 5 1 : 203 : 219 : 0.9
+T: 5 2 : 203 : 203 : 1.0
+T: 5 3 : 203 : 203 : 0.1
+T: 5 3 : 203 : 235 : 0.9
+T: 5 4 : 203 : 203 : 1.0
+T: 5 5 : 203 : 203 : 1.0
+T: 0 0 : 204 : 140 : 0.9
+T: 0 0 : 204 : 204 : 0.1
+T: 0 1 : 204 : 140 : 0.09
+T: 0 1 : 204 : 156 : 0.81
+T: 0 1 : 204 : 204 : 0.01
+T: 0 1 : 204 : 220 : 0.09
+T: 0 2 : 204 : 140 : 0.9
+T: 0 2 : 204 : 204 : 0.1
+T: 0 3 : 204 : 140 : 0.09
+T: 0 3 : 204 : 172 : 0.81
+T: 0 3 : 204 : 204 : 0.01
+T: 0 3 : 204 : 236 : 0.09
+T: 0 4 : 204 : 141 : 0.9
+T: 0 4 : 204 : 205 : 0.1
+T: 0 5 : 204 : 141 : 0.9
+T: 0 5 : 204 : 205 : 0.1
+T: 1 0 : 204 : 204 : 1.0
+T: 1 1 : 204 : 204 : 0.1
+T: 1 1 : 204 : 220 : 0.9
+T: 1 2 : 204 : 204 : 1.0
+T: 1 3 : 204 : 204 : 0.1
+T: 1 3 : 204 : 236 : 0.9
+T: 1 4 : 204 : 205 : 1.0
+T: 1 5 : 204 : 205 : 1.0
+T: 2 0 : 204 : 76 : 0.9
+T: 2 0 : 204 : 204 : 0.1
+T: 2 1 : 204 : 76 : 0.09
+T: 2 1 : 204 : 92 : 0.81
+T: 2 1 : 204 : 204 : 0.01
+T: 2 1 : 204 : 220 : 0.09
+T: 2 2 : 204 : 76 : 0.9
+T: 2 2 : 204 : 204 : 0.1
+T: 2 3 : 204 : 76 : 0.09
+T: 2 3 : 204 : 108 : 0.81
+T: 2 3 : 204 : 204 : 0.01
+T: 2 3 : 204 : 236 : 0.09
+T: 2 4 : 204 : 77 : 0.9
+T: 2 4 : 204 : 205 : 0.1
+T: 2 5 : 204 : 77 : 0.9
+T: 2 5 : 204 : 205 : 0.1
+T: 3 0 : 204 : 204 : 1.0
+T: 3 1 : 204 : 204 : 0.1
+T: 3 1 : 204 : 220 : 0.9
+T: 3 2 : 204 : 204 : 1.0
+T: 3 3 : 204 : 204 : 0.1
+T: 3 3 : 204 : 236 : 0.9
+T: 3 4 : 204 : 205 : 1.0
+T: 3 5 : 204 : 205 : 1.0
+T: 4 0 : 204 : 204 : 1.0
+T: 4 1 : 204 : 204 : 0.1
+T: 4 1 : 204 : 220 : 0.9
+T: 4 2 : 204 : 204 : 1.0
+T: 4 3 : 204 : 204 : 0.1
+T: 4 3 : 204 : 236 : 0.9
+T: 4 4 : 204 : 205 : 1.0
+T: 4 5 : 204 : 205 : 1.0
+T: 5 0 : 204 : 204 : 1.0
+T: 5 1 : 204 : 204 : 0.1
+T: 5 1 : 204 : 220 : 0.9
+T: 5 2 : 204 : 204 : 1.0
+T: 5 3 : 204 : 204 : 0.1
+T: 5 3 : 204 : 236 : 0.9
+T: 5 4 : 204 : 205 : 1.0
+T: 5 5 : 204 : 205 : 1.0
+T: 0 0 : 205 : 141 : 0.9
+T: 0 0 : 205 : 205 : 0.1
+T: 0 1 : 205 : 141 : 0.09
+T: 0 1 : 205 : 157 : 0.81
+T: 0 1 : 205 : 205 : 0.01
+T: 0 1 : 205 : 221 : 0.09
+T: 0 2 : 205 : 141 : 0.9
+T: 0 2 : 205 : 205 : 0.1
+T: 0 3 : 205 : 141 : 0.09
+T: 0 3 : 205 : 173 : 0.81
+T: 0 3 : 205 : 205 : 0.01
+T: 0 3 : 205 : 237 : 0.09
+T: 0 4 : 205 : 141 : 0.9
+T: 0 4 : 205 : 205 : 0.1
+T: 0 5 : 205 : 141 : 0.9
+T: 0 5 : 205 : 205 : 0.1
+T: 1 0 : 205 : 205 : 1.0
+T: 1 1 : 205 : 205 : 0.1
+T: 1 1 : 205 : 221 : 0.9
+T: 1 2 : 205 : 205 : 1.0
+T: 1 3 : 205 : 205 : 0.1
+T: 1 3 : 205 : 237 : 0.9
+T: 1 4 : 205 : 205 : 1.0
+T: 1 5 : 205 : 205 : 1.0
+T: 2 0 : 205 : 77 : 0.9
+T: 2 0 : 205 : 205 : 0.1
+T: 2 1 : 205 : 77 : 0.09
+T: 2 1 : 205 : 93 : 0.81
+T: 2 1 : 205 : 205 : 0.01
+T: 2 1 : 205 : 221 : 0.09
+T: 2 2 : 205 : 77 : 0.9
+T: 2 2 : 205 : 205 : 0.1
+T: 2 3 : 205 : 77 : 0.09
+T: 2 3 : 205 : 109 : 0.81
+T: 2 3 : 205 : 205 : 0.01
+T: 2 3 : 205 : 237 : 0.09
+T: 2 4 : 205 : 77 : 0.9
+T: 2 4 : 205 : 205 : 0.1
+T: 2 5 : 205 : 77 : 0.9
+T: 2 5 : 205 : 205 : 0.1
+T: 3 0 : 205 : 205 : 1.0
+T: 3 1 : 205 : 205 : 0.1
+T: 3 1 : 205 : 221 : 0.9
+T: 3 2 : 205 : 205 : 1.0
+T: 3 3 : 205 : 205 : 0.1
+T: 3 3 : 205 : 237 : 0.9
+T: 3 4 : 205 : 205 : 1.0
+T: 3 5 : 205 : 205 : 1.0
+T: 4 0 : 205 : 205 : 1.0
+T: 4 1 : 205 : 205 : 0.1
+T: 4 1 : 205 : 221 : 0.9
+T: 4 2 : 205 : 205 : 1.0
+T: 4 3 : 205 : 205 : 0.1
+T: 4 3 : 205 : 237 : 0.9
+T: 4 4 : 205 : 205 : 1.0
+T: 4 5 : 205 : 205 : 1.0
+T: 5 0 : 205 : 205 : 1.0
+T: 5 1 : 205 : 205 : 0.1
+T: 5 1 : 205 : 221 : 0.9
+T: 5 2 : 205 : 205 : 1.0
+T: 5 3 : 205 : 205 : 0.1
+T: 5 3 : 205 : 237 : 0.9
+T: 5 4 : 205 : 205 : 1.0
+T: 5 5 : 205 : 205 : 1.0
+T: 0 0 : 206 : 142 : 0.9
+T: 0 0 : 206 : 206 : 0.1
+T: 0 1 : 206 : 142 : 0.09
+T: 0 1 : 206 : 158 : 0.81
+T: 0 1 : 206 : 206 : 0.01
+T: 0 1 : 206 : 222 : 0.09
+T: 0 2 : 206 : 142 : 0.9
+T: 0 2 : 206 : 206 : 0.1
+T: 0 3 : 206 : 142 : 0.09
+T: 0 3 : 206 : 174 : 0.81
+T: 0 3 : 206 : 206 : 0.01
+T: 0 3 : 206 : 238 : 0.09
+T: 0 4 : 206 : 0 : 1.0
+T: 0 5 : 206 : 0 : 1.0
+T: 1 0 : 206 : 206 : 1.0
+T: 1 1 : 206 : 206 : 0.1
+T: 1 1 : 206 : 222 : 0.9
+T: 1 2 : 206 : 206 : 1.0
+T: 1 3 : 206 : 206 : 0.1
+T: 1 3 : 206 : 238 : 0.9
+T: 1 4 : 206 : 0 : 1.0
+T: 1 5 : 206 : 0 : 1.0
+T: 2 0 : 206 : 78 : 0.9
+T: 2 0 : 206 : 206 : 0.1
+T: 2 1 : 206 : 78 : 0.09
+T: 2 1 : 206 : 94 : 0.81
+T: 2 1 : 206 : 206 : 0.01
+T: 2 1 : 206 : 222 : 0.09
+T: 2 2 : 206 : 78 : 0.9
+T: 2 2 : 206 : 206 : 0.1
+T: 2 3 : 206 : 78 : 0.09
+T: 2 3 : 206 : 110 : 0.81
+T: 2 3 : 206 : 206 : 0.01
+T: 2 3 : 206 : 238 : 0.09
+T: 2 4 : 206 : 0 : 1.0
+T: 2 5 : 206 : 0 : 1.0
+T: 3 0 : 206 : 206 : 1.0
+T: 3 1 : 206 : 206 : 0.1
+T: 3 1 : 206 : 222 : 0.9
+T: 3 2 : 206 : 206 : 1.0
+T: 3 3 : 206 : 206 : 0.1
+T: 3 3 : 206 : 238 : 0.9
+T: 3 4 : 206 : 0 : 1.0
+T: 3 5 : 206 : 0 : 1.0
+T: 4 0 : 206 : 206 : 1.0
+T: 4 1 : 206 : 206 : 0.1
+T: 4 1 : 206 : 222 : 0.9
+T: 4 2 : 206 : 206 : 1.0
+T: 4 3 : 206 : 206 : 0.1
+T: 4 3 : 206 : 238 : 0.9
+T: 4 4 : 206 : 0 : 1.0
+T: 4 5 : 206 : 0 : 1.0
+T: 5 0 : 206 : 206 : 1.0
+T: 5 1 : 206 : 206 : 0.1
+T: 5 1 : 206 : 222 : 0.9
+T: 5 2 : 206 : 206 : 1.0
+T: 5 3 : 206 : 206 : 0.1
+T: 5 3 : 206 : 238 : 0.9
+T: 5 4 : 206 : 0 : 1.0
+T: 5 5 : 206 : 0 : 1.0
+T: 0 0 : 207 : 143 : 0.9
+T: 0 0 : 207 : 207 : 0.1
+T: 0 1 : 207 : 143 : 0.09
+T: 0 1 : 207 : 159 : 0.81
+T: 0 1 : 207 : 207 : 0.01
+T: 0 1 : 207 : 223 : 0.09
+T: 0 2 : 207 : 143 : 0.9
+T: 0 2 : 207 : 207 : 0.1
+T: 0 3 : 207 : 143 : 0.09
+T: 0 3 : 207 : 175 : 0.81
+T: 0 3 : 207 : 207 : 0.01
+T: 0 3 : 207 : 239 : 0.09
+T: 0 4 : 207 : 0 : 1.0
+T: 0 5 : 207 : 0 : 1.0
+T: 1 0 : 207 : 207 : 1.0
+T: 1 1 : 207 : 207 : 0.1
+T: 1 1 : 207 : 223 : 0.9
+T: 1 2 : 207 : 207 : 1.0
+T: 1 3 : 207 : 207 : 0.1
+T: 1 3 : 207 : 239 : 0.9
+T: 1 4 : 207 : 0 : 1.0
+T: 1 5 : 207 : 0 : 1.0
+T: 2 0 : 207 : 79 : 0.9
+T: 2 0 : 207 : 207 : 0.1
+T: 2 1 : 207 : 79 : 0.09
+T: 2 1 : 207 : 95 : 0.81
+T: 2 1 : 207 : 207 : 0.01
+T: 2 1 : 207 : 223 : 0.09
+T: 2 2 : 207 : 79 : 0.9
+T: 2 2 : 207 : 207 : 0.1
+T: 2 3 : 207 : 79 : 0.09
+T: 2 3 : 207 : 111 : 0.81
+T: 2 3 : 207 : 207 : 0.01
+T: 2 3 : 207 : 239 : 0.09
+T: 2 4 : 207 : 0 : 1.0
+T: 2 5 : 207 : 0 : 1.0
+T: 3 0 : 207 : 207 : 1.0
+T: 3 1 : 207 : 207 : 0.1
+T: 3 1 : 207 : 223 : 0.9
+T: 3 2 : 207 : 207 : 1.0
+T: 3 3 : 207 : 207 : 0.1
+T: 3 3 : 207 : 239 : 0.9
+T: 3 4 : 207 : 0 : 1.0
+T: 3 5 : 207 : 0 : 1.0
+T: 4 0 : 207 : 0 : 1.0
+T: 4 1 : 207 : 0 : 1.0
+T: 4 2 : 207 : 0 : 1.0
+T: 4 3 : 207 : 0 : 1.0
+T: 4 4 : 207 : 0 : 1.0
+T: 4 5 : 207 : 0 : 1.0
+T: 5 0 : 207 : 0 : 1.0
+T: 5 1 : 207 : 0 : 1.0
+T: 5 2 : 207 : 0 : 1.0
+T: 5 3 : 207 : 0 : 1.0
+T: 5 4 : 207 : 0 : 1.0
+T: 5 5 : 207 : 0 : 1.0
+T: 0 0 : 208 : 128 : 0.81
+T: 0 0 : 208 : 144 : 0.09
+T: 0 0 : 208 : 192 : 0.09
+T: 0 0 : 208 : 208 : 0.01
+T: 0 1 : 208 : 144 : 0.9
+T: 0 1 : 208 : 208 : 0.1
+T: 0 2 : 208 : 144 : 0.9
+T: 0 2 : 208 : 208 : 0.1
+T: 0 3 : 208 : 144 : 0.09
+T: 0 3 : 208 : 176 : 0.81
+T: 0 3 : 208 : 208 : 0.01
+T: 0 3 : 208 : 240 : 0.09
+T: 0 4 : 208 : 146 : 0.9
+T: 0 4 : 208 : 210 : 0.1
+T: 0 5 : 208 : 146 : 0.9
+T: 0 5 : 208 : 210 : 0.1
+T: 1 0 : 208 : 192 : 0.9
+T: 1 0 : 208 : 208 : 0.1
+T: 1 1 : 208 : 208 : 1.0
+T: 1 2 : 208 : 208 : 1.0
+T: 1 3 : 208 : 208 : 0.1
+T: 1 3 : 208 : 240 : 0.9
+T: 1 4 : 208 : 210 : 1.0
+T: 1 5 : 208 : 210 : 1.0
+T: 2 0 : 208 : 64 : 0.81
+T: 2 0 : 208 : 80 : 0.09
+T: 2 0 : 208 : 192 : 0.09
+T: 2 0 : 208 : 208 : 0.01
+T: 2 1 : 208 : 80 : 0.9
+T: 2 1 : 208 : 208 : 0.1
+T: 2 2 : 208 : 80 : 0.9
+T: 2 2 : 208 : 208 : 0.1
+T: 2 3 : 208 : 80 : 0.09
+T: 2 3 : 208 : 112 : 0.81
+T: 2 3 : 208 : 208 : 0.01
+T: 2 3 : 208 : 240 : 0.09
+T: 2 4 : 208 : 82 : 0.9
+T: 2 4 : 208 : 210 : 0.1
+T: 2 5 : 208 : 82 : 0.9
+T: 2 5 : 208 : 210 : 0.1
+T: 3 0 : 208 : 192 : 0.9
+T: 3 0 : 208 : 208 : 0.1
+T: 3 1 : 208 : 208 : 1.0
+T: 3 2 : 208 : 208 : 1.0
+T: 3 3 : 208 : 208 : 0.1
+T: 3 3 : 208 : 240 : 0.9
+T: 3 4 : 208 : 210 : 1.0
+T: 3 5 : 208 : 210 : 1.0
+T: 4 0 : 208 : 200 : 0.9
+T: 4 0 : 208 : 216 : 0.1
+T: 4 1 : 208 : 216 : 1.0
+T: 4 2 : 208 : 216 : 1.0
+T: 4 3 : 208 : 216 : 0.1
+T: 4 3 : 208 : 248 : 0.9
+T: 4 4 : 208 : 218 : 1.0
+T: 4 5 : 208 : 218 : 1.0
+T: 5 0 : 208 : 200 : 0.9
+T: 5 0 : 208 : 216 : 0.1
+T: 5 1 : 208 : 216 : 1.0
+T: 5 2 : 208 : 216 : 1.0
+T: 5 3 : 208 : 216 : 0.1
+T: 5 3 : 208 : 248 : 0.9
+T: 5 4 : 208 : 218 : 1.0
+T: 5 5 : 208 : 218 : 1.0
+T: 0 0 : 209 : 129 : 0.81
+T: 0 0 : 209 : 145 : 0.09
+T: 0 0 : 209 : 193 : 0.09
+T: 0 0 : 209 : 209 : 0.01
+T: 0 1 : 209 : 145 : 0.9
+T: 0 1 : 209 : 209 : 0.1
+T: 0 2 : 209 : 145 : 0.9
+T: 0 2 : 209 : 209 : 0.1
+T: 0 3 : 209 : 145 : 0.09
+T: 0 3 : 209 : 177 : 0.81
+T: 0 3 : 209 : 209 : 0.01
+T: 0 3 : 209 : 241 : 0.09
+T: 0 4 : 209 : 147 : 0.9
+T: 0 4 : 209 : 211 : 0.1
+T: 0 5 : 209 : 147 : 0.9
+T: 0 5 : 209 : 211 : 0.1
+T: 1 0 : 209 : 193 : 0.9
+T: 1 0 : 209 : 209 : 0.1
+T: 1 1 : 209 : 209 : 1.0
+T: 1 2 : 209 : 209 : 1.0
+T: 1 3 : 209 : 209 : 0.1
+T: 1 3 : 209 : 241 : 0.9
+T: 1 4 : 209 : 211 : 1.0
+T: 1 5 : 209 : 211 : 1.0
+T: 2 0 : 209 : 65 : 0.81
+T: 2 0 : 209 : 81 : 0.09
+T: 2 0 : 209 : 193 : 0.09
+T: 2 0 : 209 : 209 : 0.01
+T: 2 1 : 209 : 81 : 0.9
+T: 2 1 : 209 : 209 : 0.1
+T: 2 2 : 209 : 81 : 0.9
+T: 2 2 : 209 : 209 : 0.1
+T: 2 3 : 209 : 81 : 0.09
+T: 2 3 : 209 : 113 : 0.81
+T: 2 3 : 209 : 209 : 0.01
+T: 2 3 : 209 : 241 : 0.09
+T: 2 4 : 209 : 83 : 0.9
+T: 2 4 : 209 : 211 : 0.1
+T: 2 5 : 209 : 83 : 0.9
+T: 2 5 : 209 : 211 : 0.1
+T: 3 0 : 209 : 193 : 0.9
+T: 3 0 : 209 : 209 : 0.1
+T: 3 1 : 209 : 209 : 1.0
+T: 3 2 : 209 : 209 : 1.0
+T: 3 3 : 209 : 209 : 0.1
+T: 3 3 : 209 : 241 : 0.9
+T: 3 4 : 209 : 211 : 1.0
+T: 3 5 : 209 : 211 : 1.0
+T: 4 0 : 209 : 201 : 0.9
+T: 4 0 : 209 : 217 : 0.1
+T: 4 1 : 209 : 217 : 1.0
+T: 4 2 : 209 : 217 : 1.0
+T: 4 3 : 209 : 217 : 0.1
+T: 4 3 : 209 : 249 : 0.9
+T: 4 4 : 209 : 219 : 1.0
+T: 4 5 : 209 : 219 : 1.0
+T: 5 0 : 209 : 201 : 0.9
+T: 5 0 : 209 : 217 : 0.1
+T: 5 1 : 209 : 217 : 1.0
+T: 5 2 : 209 : 217 : 1.0
+T: 5 3 : 209 : 217 : 0.1
+T: 5 3 : 209 : 249 : 0.9
+T: 5 4 : 209 : 219 : 1.0
+T: 5 5 : 209 : 219 : 1.0
+T: 0 0 : 210 : 130 : 0.81
+T: 0 0 : 210 : 146 : 0.09
+T: 0 0 : 210 : 194 : 0.09
+T: 0 0 : 210 : 210 : 0.01
+T: 0 1 : 210 : 146 : 0.9
+T: 0 1 : 210 : 210 : 0.1
+T: 0 2 : 210 : 146 : 0.9
+T: 0 2 : 210 : 210 : 0.1
+T: 0 3 : 210 : 146 : 0.09
+T: 0 3 : 210 : 178 : 0.81
+T: 0 3 : 210 : 210 : 0.01
+T: 0 3 : 210 : 242 : 0.09
+T: 0 4 : 210 : 146 : 0.9
+T: 0 4 : 210 : 210 : 0.1
+T: 0 5 : 210 : 146 : 0.9
+T: 0 5 : 210 : 210 : 0.1
+T: 1 0 : 210 : 194 : 0.9
+T: 1 0 : 210 : 210 : 0.1
+T: 1 1 : 210 : 210 : 1.0
+T: 1 2 : 210 : 210 : 1.0
+T: 1 3 : 210 : 210 : 0.1
+T: 1 3 : 210 : 242 : 0.9
+T: 1 4 : 210 : 210 : 1.0
+T: 1 5 : 210 : 210 : 1.0
+T: 2 0 : 210 : 66 : 0.81
+T: 2 0 : 210 : 82 : 0.09
+T: 2 0 : 210 : 194 : 0.09
+T: 2 0 : 210 : 210 : 0.01
+T: 2 1 : 210 : 82 : 0.9
+T: 2 1 : 210 : 210 : 0.1
+T: 2 2 : 210 : 82 : 0.9
+T: 2 2 : 210 : 210 : 0.1
+T: 2 3 : 210 : 82 : 0.09
+T: 2 3 : 210 : 114 : 0.81
+T: 2 3 : 210 : 210 : 0.01
+T: 2 3 : 210 : 242 : 0.09
+T: 2 4 : 210 : 82 : 0.9
+T: 2 4 : 210 : 210 : 0.1
+T: 2 5 : 210 : 82 : 0.9
+T: 2 5 : 210 : 210 : 0.1
+T: 3 0 : 210 : 194 : 0.9
+T: 3 0 : 210 : 210 : 0.1
+T: 3 1 : 210 : 210 : 1.0
+T: 3 2 : 210 : 210 : 1.0
+T: 3 3 : 210 : 210 : 0.1
+T: 3 3 : 210 : 242 : 0.9
+T: 3 4 : 210 : 210 : 1.0
+T: 3 5 : 210 : 210 : 1.0
+T: 4 0 : 210 : 202 : 0.9
+T: 4 0 : 210 : 218 : 0.1
+T: 4 1 : 210 : 218 : 1.0
+T: 4 2 : 210 : 218 : 1.0
+T: 4 3 : 210 : 218 : 0.1
+T: 4 3 : 210 : 250 : 0.9
+T: 4 4 : 210 : 218 : 1.0
+T: 4 5 : 210 : 218 : 1.0
+T: 5 0 : 210 : 202 : 0.9
+T: 5 0 : 210 : 218 : 0.1
+T: 5 1 : 210 : 218 : 1.0
+T: 5 2 : 210 : 218 : 1.0
+T: 5 3 : 210 : 218 : 0.1
+T: 5 3 : 210 : 250 : 0.9
+T: 5 4 : 210 : 218 : 1.0
+T: 5 5 : 210 : 218 : 1.0
+T: 0 0 : 211 : 131 : 0.81
+T: 0 0 : 211 : 147 : 0.09
+T: 0 0 : 211 : 195 : 0.09
+T: 0 0 : 211 : 211 : 0.01
+T: 0 1 : 211 : 147 : 0.9
+T: 0 1 : 211 : 211 : 0.1
+T: 0 2 : 211 : 147 : 0.9
+T: 0 2 : 211 : 211 : 0.1
+T: 0 3 : 211 : 147 : 0.09
+T: 0 3 : 211 : 179 : 0.81
+T: 0 3 : 211 : 211 : 0.01
+T: 0 3 : 211 : 243 : 0.09
+T: 0 4 : 211 : 147 : 0.9
+T: 0 4 : 211 : 211 : 0.1
+T: 0 5 : 211 : 147 : 0.9
+T: 0 5 : 211 : 211 : 0.1
+T: 1 0 : 211 : 195 : 0.9
+T: 1 0 : 211 : 211 : 0.1
+T: 1 1 : 211 : 211 : 1.0
+T: 1 2 : 211 : 211 : 1.0
+T: 1 3 : 211 : 211 : 0.1
+T: 1 3 : 211 : 243 : 0.9
+T: 1 4 : 211 : 211 : 1.0
+T: 1 5 : 211 : 211 : 1.0
+T: 2 0 : 211 : 67 : 0.81
+T: 2 0 : 211 : 83 : 0.09
+T: 2 0 : 211 : 195 : 0.09
+T: 2 0 : 211 : 211 : 0.01
+T: 2 1 : 211 : 83 : 0.9
+T: 2 1 : 211 : 211 : 0.1
+T: 2 2 : 211 : 83 : 0.9
+T: 2 2 : 211 : 211 : 0.1
+T: 2 3 : 211 : 83 : 0.09
+T: 2 3 : 211 : 115 : 0.81
+T: 2 3 : 211 : 211 : 0.01
+T: 2 3 : 211 : 243 : 0.09
+T: 2 4 : 211 : 83 : 0.9
+T: 2 4 : 211 : 211 : 0.1
+T: 2 5 : 211 : 83 : 0.9
+T: 2 5 : 211 : 211 : 0.1
+T: 3 0 : 211 : 195 : 0.9
+T: 3 0 : 211 : 211 : 0.1
+T: 3 1 : 211 : 211 : 1.0
+T: 3 2 : 211 : 211 : 1.0
+T: 3 3 : 211 : 211 : 0.1
+T: 3 3 : 211 : 243 : 0.9
+T: 3 4 : 211 : 211 : 1.0
+T: 3 5 : 211 : 211 : 1.0
+T: 4 0 : 211 : 203 : 0.9
+T: 4 0 : 211 : 219 : 0.1
+T: 4 1 : 211 : 219 : 1.0
+T: 4 2 : 211 : 219 : 1.0
+T: 4 3 : 211 : 219 : 0.1
+T: 4 3 : 211 : 251 : 0.9
+T: 4 4 : 211 : 219 : 1.0
+T: 4 5 : 211 : 219 : 1.0
+T: 5 0 : 211 : 203 : 0.9
+T: 5 0 : 211 : 219 : 0.1
+T: 5 1 : 211 : 219 : 1.0
+T: 5 2 : 211 : 219 : 1.0
+T: 5 3 : 211 : 219 : 0.1
+T: 5 3 : 211 : 251 : 0.9
+T: 5 4 : 211 : 219 : 1.0
+T: 5 5 : 211 : 219 : 1.0
+T: 0 0 : 212 : 132 : 0.81
+T: 0 0 : 212 : 148 : 0.09
+T: 0 0 : 212 : 196 : 0.09
+T: 0 0 : 212 : 212 : 0.01
+T: 0 1 : 212 : 148 : 0.9
+T: 0 1 : 212 : 212 : 0.1
+T: 0 2 : 212 : 148 : 0.9
+T: 0 2 : 212 : 212 : 0.1
+T: 0 3 : 212 : 148 : 0.09
+T: 0 3 : 212 : 180 : 0.81
+T: 0 3 : 212 : 212 : 0.01
+T: 0 3 : 212 : 244 : 0.09
+T: 0 4 : 212 : 150 : 0.9
+T: 0 4 : 212 : 214 : 0.1
+T: 0 5 : 212 : 150 : 0.9
+T: 0 5 : 212 : 214 : 0.1
+T: 1 0 : 212 : 196 : 0.9
+T: 1 0 : 212 : 212 : 0.1
+T: 1 1 : 212 : 212 : 1.0
+T: 1 2 : 212 : 212 : 1.0
+T: 1 3 : 212 : 212 : 0.1
+T: 1 3 : 212 : 244 : 0.9
+T: 1 4 : 212 : 214 : 1.0
+T: 1 5 : 212 : 214 : 1.0
+T: 2 0 : 212 : 68 : 0.81
+T: 2 0 : 212 : 84 : 0.09
+T: 2 0 : 212 : 196 : 0.09
+T: 2 0 : 212 : 212 : 0.01
+T: 2 1 : 212 : 84 : 0.9
+T: 2 1 : 212 : 212 : 0.1
+T: 2 2 : 212 : 84 : 0.9
+T: 2 2 : 212 : 212 : 0.1
+T: 2 3 : 212 : 84 : 0.09
+T: 2 3 : 212 : 116 : 0.81
+T: 2 3 : 212 : 212 : 0.01
+T: 2 3 : 212 : 244 : 0.09
+T: 2 4 : 212 : 86 : 0.9
+T: 2 4 : 212 : 214 : 0.1
+T: 2 5 : 212 : 86 : 0.9
+T: 2 5 : 212 : 214 : 0.1
+T: 3 0 : 212 : 196 : 0.9
+T: 3 0 : 212 : 212 : 0.1
+T: 3 1 : 212 : 212 : 1.0
+T: 3 2 : 212 : 212 : 1.0
+T: 3 3 : 212 : 212 : 0.1
+T: 3 3 : 212 : 244 : 0.9
+T: 3 4 : 212 : 214 : 1.0
+T: 3 5 : 212 : 214 : 1.0
+T: 4 0 : 212 : 204 : 0.9
+T: 4 0 : 212 : 220 : 0.1
+T: 4 1 : 212 : 220 : 1.0
+T: 4 2 : 212 : 220 : 1.0
+T: 4 3 : 212 : 220 : 0.1
+T: 4 3 : 212 : 252 : 0.9
+T: 4 4 : 212 : 222 : 1.0
+T: 4 5 : 212 : 222 : 1.0
+T: 5 0 : 212 : 204 : 0.9
+T: 5 0 : 212 : 220 : 0.1
+T: 5 1 : 212 : 220 : 1.0
+T: 5 2 : 212 : 220 : 1.0
+T: 5 3 : 212 : 220 : 0.1
+T: 5 3 : 212 : 252 : 0.9
+T: 5 4 : 212 : 222 : 1.0
+T: 5 5 : 212 : 222 : 1.0
+T: 0 0 : 213 : 133 : 0.81
+T: 0 0 : 213 : 149 : 0.09
+T: 0 0 : 213 : 197 : 0.09
+T: 0 0 : 213 : 213 : 0.01
+T: 0 1 : 213 : 149 : 0.9
+T: 0 1 : 213 : 213 : 0.1
+T: 0 2 : 213 : 149 : 0.9
+T: 0 2 : 213 : 213 : 0.1
+T: 0 3 : 213 : 149 : 0.09
+T: 0 3 : 213 : 181 : 0.81
+T: 0 3 : 213 : 213 : 0.01
+T: 0 3 : 213 : 245 : 0.09
+T: 0 4 : 213 : 151 : 0.9
+T: 0 4 : 213 : 215 : 0.1
+T: 0 5 : 213 : 151 : 0.9
+T: 0 5 : 213 : 215 : 0.1
+T: 1 0 : 213 : 197 : 0.9
+T: 1 0 : 213 : 213 : 0.1
+T: 1 1 : 213 : 213 : 1.0
+T: 1 2 : 213 : 213 : 1.0
+T: 1 3 : 213 : 213 : 0.1
+T: 1 3 : 213 : 245 : 0.9
+T: 1 4 : 213 : 215 : 1.0
+T: 1 5 : 213 : 215 : 1.0
+T: 2 0 : 213 : 69 : 0.81
+T: 2 0 : 213 : 85 : 0.09
+T: 2 0 : 213 : 197 : 0.09
+T: 2 0 : 213 : 213 : 0.01
+T: 2 1 : 213 : 85 : 0.9
+T: 2 1 : 213 : 213 : 0.1
+T: 2 2 : 213 : 85 : 0.9
+T: 2 2 : 213 : 213 : 0.1
+T: 2 3 : 213 : 85 : 0.09
+T: 2 3 : 213 : 117 : 0.81
+T: 2 3 : 213 : 213 : 0.01
+T: 2 3 : 213 : 245 : 0.09
+T: 2 4 : 213 : 87 : 0.9
+T: 2 4 : 213 : 215 : 0.1
+T: 2 5 : 213 : 87 : 0.9
+T: 2 5 : 213 : 215 : 0.1
+T: 3 0 : 213 : 197 : 0.9
+T: 3 0 : 213 : 213 : 0.1
+T: 3 1 : 213 : 213 : 1.0
+T: 3 2 : 213 : 213 : 1.0
+T: 3 3 : 213 : 213 : 0.1
+T: 3 3 : 213 : 245 : 0.9
+T: 3 4 : 213 : 215 : 1.0
+T: 3 5 : 213 : 215 : 1.0
+T: 4 0 : 213 : 205 : 0.9
+T: 4 0 : 213 : 221 : 0.1
+T: 4 1 : 213 : 221 : 1.0
+T: 4 2 : 213 : 221 : 1.0
+T: 4 3 : 213 : 221 : 0.1
+T: 4 3 : 213 : 253 : 0.9
+T: 4 4 : 213 : 0 : 1.0
+T: 4 5 : 213 : 0 : 1.0
+T: 5 0 : 213 : 205 : 0.9
+T: 5 0 : 213 : 221 : 0.1
+T: 5 1 : 213 : 221 : 1.0
+T: 5 2 : 213 : 221 : 1.0
+T: 5 3 : 213 : 221 : 0.1
+T: 5 3 : 213 : 253 : 0.9
+T: 5 4 : 213 : 0 : 1.0
+T: 5 5 : 213 : 0 : 1.0
+T: 0 0 : 214 : 134 : 0.81
+T: 0 0 : 214 : 150 : 0.09
+T: 0 0 : 214 : 198 : 0.09
+T: 0 0 : 214 : 214 : 0.01
+T: 0 1 : 214 : 150 : 0.9
+T: 0 1 : 214 : 214 : 0.1
+T: 0 2 : 214 : 150 : 0.9
+T: 0 2 : 214 : 214 : 0.1
+T: 0 3 : 214 : 150 : 0.09
+T: 0 3 : 214 : 182 : 0.81
+T: 0 3 : 214 : 214 : 0.01
+T: 0 3 : 214 : 246 : 0.09
+T: 0 4 : 214 : 150 : 0.9
+T: 0 4 : 214 : 214 : 0.1
+T: 0 5 : 214 : 150 : 0.9
+T: 0 5 : 214 : 214 : 0.1
+T: 1 0 : 214 : 198 : 0.9
+T: 1 0 : 214 : 214 : 0.1
+T: 1 1 : 214 : 214 : 1.0
+T: 1 2 : 214 : 214 : 1.0
+T: 1 3 : 214 : 214 : 0.1
+T: 1 3 : 214 : 246 : 0.9
+T: 1 4 : 214 : 214 : 1.0
+T: 1 5 : 214 : 214 : 1.0
+T: 2 0 : 214 : 70 : 0.81
+T: 2 0 : 214 : 86 : 0.09
+T: 2 0 : 214 : 198 : 0.09
+T: 2 0 : 214 : 214 : 0.01
+T: 2 1 : 214 : 86 : 0.9
+T: 2 1 : 214 : 214 : 0.1
+T: 2 2 : 214 : 86 : 0.9
+T: 2 2 : 214 : 214 : 0.1
+T: 2 3 : 214 : 86 : 0.09
+T: 2 3 : 214 : 118 : 0.81
+T: 2 3 : 214 : 214 : 0.01
+T: 2 3 : 214 : 246 : 0.09
+T: 2 4 : 214 : 86 : 0.9
+T: 2 4 : 214 : 214 : 0.1
+T: 2 5 : 214 : 86 : 0.9
+T: 2 5 : 214 : 214 : 0.1
+T: 3 0 : 214 : 198 : 0.9
+T: 3 0 : 214 : 214 : 0.1
+T: 3 1 : 214 : 214 : 1.0
+T: 3 2 : 214 : 214 : 1.0
+T: 3 3 : 214 : 214 : 0.1
+T: 3 3 : 214 : 246 : 0.9
+T: 3 4 : 214 : 214 : 1.0
+T: 3 5 : 214 : 214 : 1.0
+T: 4 0 : 214 : 206 : 0.9
+T: 4 0 : 214 : 222 : 0.1
+T: 4 1 : 214 : 222 : 1.0
+T: 4 2 : 214 : 222 : 1.0
+T: 4 3 : 214 : 222 : 0.1
+T: 4 3 : 214 : 254 : 0.9
+T: 4 4 : 214 : 222 : 1.0
+T: 4 5 : 214 : 222 : 1.0
+T: 5 0 : 214 : 206 : 0.9
+T: 5 0 : 214 : 222 : 0.1
+T: 5 1 : 214 : 222 : 1.0
+T: 5 2 : 214 : 222 : 1.0
+T: 5 3 : 214 : 222 : 0.1
+T: 5 3 : 214 : 254 : 0.9
+T: 5 4 : 214 : 222 : 1.0
+T: 5 5 : 214 : 222 : 1.0
+T: 0 0 : 215 : 135 : 0.81
+T: 0 0 : 215 : 151 : 0.09
+T: 0 0 : 215 : 199 : 0.09
+T: 0 0 : 215 : 215 : 0.01
+T: 0 1 : 215 : 151 : 0.9
+T: 0 1 : 215 : 215 : 0.1
+T: 0 2 : 215 : 151 : 0.9
+T: 0 2 : 215 : 215 : 0.1
+T: 0 3 : 215 : 151 : 0.09
+T: 0 3 : 215 : 183 : 0.81
+T: 0 3 : 215 : 215 : 0.01
+T: 0 3 : 215 : 247 : 0.09
+T: 0 4 : 215 : 151 : 0.9
+T: 0 4 : 215 : 215 : 0.1
+T: 0 5 : 215 : 151 : 0.9
+T: 0 5 : 215 : 215 : 0.1
+T: 1 0 : 215 : 199 : 0.9
+T: 1 0 : 215 : 215 : 0.1
+T: 1 1 : 215 : 215 : 1.0
+T: 1 2 : 215 : 215 : 1.0
+T: 1 3 : 215 : 215 : 0.1
+T: 1 3 : 215 : 247 : 0.9
+T: 1 4 : 215 : 215 : 1.0
+T: 1 5 : 215 : 215 : 1.0
+T: 2 0 : 215 : 71 : 0.81
+T: 2 0 : 215 : 87 : 0.09
+T: 2 0 : 215 : 199 : 0.09
+T: 2 0 : 215 : 215 : 0.01
+T: 2 1 : 215 : 87 : 0.9
+T: 2 1 : 215 : 215 : 0.1
+T: 2 2 : 215 : 87 : 0.9
+T: 2 2 : 215 : 215 : 0.1
+T: 2 3 : 215 : 87 : 0.09
+T: 2 3 : 215 : 119 : 0.81
+T: 2 3 : 215 : 215 : 0.01
+T: 2 3 : 215 : 247 : 0.09
+T: 2 4 : 215 : 87 : 0.9
+T: 2 4 : 215 : 215 : 0.1
+T: 2 5 : 215 : 87 : 0.9
+T: 2 5 : 215 : 215 : 0.1
+T: 3 0 : 215 : 199 : 0.9
+T: 3 0 : 215 : 215 : 0.1
+T: 3 1 : 215 : 215 : 1.0
+T: 3 2 : 215 : 215 : 1.0
+T: 3 3 : 215 : 215 : 0.1
+T: 3 3 : 215 : 247 : 0.9
+T: 3 4 : 215 : 215 : 1.0
+T: 3 5 : 215 : 215 : 1.0
+T: 4 0 : 215 : 0 : 1.0
+T: 4 1 : 215 : 0 : 1.0
+T: 4 2 : 215 : 0 : 1.0
+T: 4 3 : 215 : 0 : 1.0
+T: 4 4 : 215 : 0 : 1.0
+T: 4 5 : 215 : 0 : 1.0
+T: 5 0 : 215 : 0 : 1.0
+T: 5 1 : 215 : 0 : 1.0
+T: 5 2 : 215 : 0 : 1.0
+T: 5 3 : 215 : 0 : 1.0
+T: 5 4 : 215 : 0 : 1.0
+T: 5 5 : 215 : 0 : 1.0
+T: 0 0 : 216 : 136 : 0.81
+T: 0 0 : 216 : 152 : 0.09
+T: 0 0 : 216 : 200 : 0.09
+T: 0 0 : 216 : 216 : 0.01
+T: 0 1 : 216 : 152 : 0.9
+T: 0 1 : 216 : 216 : 0.1
+T: 0 2 : 216 : 152 : 0.9
+T: 0 2 : 216 : 216 : 0.1
+T: 0 3 : 216 : 152 : 0.09
+T: 0 3 : 216 : 184 : 0.81
+T: 0 3 : 216 : 216 : 0.01
+T: 0 3 : 216 : 248 : 0.09
+T: 0 4 : 216 : 154 : 0.9
+T: 0 4 : 216 : 218 : 0.1
+T: 0 5 : 216 : 154 : 0.9
+T: 0 5 : 216 : 218 : 0.1
+T: 1 0 : 216 : 200 : 0.9
+T: 1 0 : 216 : 216 : 0.1
+T: 1 1 : 216 : 216 : 1.0
+T: 1 2 : 216 : 216 : 1.0
+T: 1 3 : 216 : 216 : 0.1
+T: 1 3 : 216 : 248 : 0.9
+T: 1 4 : 216 : 218 : 1.0
+T: 1 5 : 216 : 218 : 1.0
+T: 2 0 : 216 : 72 : 0.81
+T: 2 0 : 216 : 88 : 0.09
+T: 2 0 : 216 : 200 : 0.09
+T: 2 0 : 216 : 216 : 0.01
+T: 2 1 : 216 : 88 : 0.9
+T: 2 1 : 216 : 216 : 0.1
+T: 2 2 : 216 : 88 : 0.9
+T: 2 2 : 216 : 216 : 0.1
+T: 2 3 : 216 : 88 : 0.09
+T: 2 3 : 216 : 120 : 0.81
+T: 2 3 : 216 : 216 : 0.01
+T: 2 3 : 216 : 248 : 0.09
+T: 2 4 : 216 : 90 : 0.9
+T: 2 4 : 216 : 218 : 0.1
+T: 2 5 : 216 : 90 : 0.9
+T: 2 5 : 216 : 218 : 0.1
+T: 3 0 : 216 : 200 : 0.9
+T: 3 0 : 216 : 216 : 0.1
+T: 3 1 : 216 : 216 : 1.0
+T: 3 2 : 216 : 216 : 1.0
+T: 3 3 : 216 : 216 : 0.1
+T: 3 3 : 216 : 248 : 0.9
+T: 3 4 : 216 : 218 : 1.0
+T: 3 5 : 216 : 218 : 1.0
+T: 4 0 : 216 : 200 : 0.9
+T: 4 0 : 216 : 216 : 0.1
+T: 4 1 : 216 : 216 : 1.0
+T: 4 2 : 216 : 216 : 1.0
+T: 4 3 : 216 : 216 : 0.1
+T: 4 3 : 216 : 248 : 0.9
+T: 4 4 : 216 : 218 : 1.0
+T: 4 5 : 216 : 218 : 1.0
+T: 5 0 : 216 : 200 : 0.9
+T: 5 0 : 216 : 216 : 0.1
+T: 5 1 : 216 : 216 : 1.0
+T: 5 2 : 216 : 216 : 1.0
+T: 5 3 : 216 : 216 : 0.1
+T: 5 3 : 216 : 248 : 0.9
+T: 5 4 : 216 : 218 : 1.0
+T: 5 5 : 216 : 218 : 1.0
+T: 0 0 : 217 : 137 : 0.81
+T: 0 0 : 217 : 153 : 0.09
+T: 0 0 : 217 : 201 : 0.09
+T: 0 0 : 217 : 217 : 0.01
+T: 0 1 : 217 : 153 : 0.9
+T: 0 1 : 217 : 217 : 0.1
+T: 0 2 : 217 : 153 : 0.9
+T: 0 2 : 217 : 217 : 0.1
+T: 0 3 : 217 : 153 : 0.09
+T: 0 3 : 217 : 185 : 0.81
+T: 0 3 : 217 : 217 : 0.01
+T: 0 3 : 217 : 249 : 0.09
+T: 0 4 : 217 : 155 : 0.9
+T: 0 4 : 217 : 219 : 0.1
+T: 0 5 : 217 : 155 : 0.9
+T: 0 5 : 217 : 219 : 0.1
+T: 1 0 : 217 : 201 : 0.9
+T: 1 0 : 217 : 217 : 0.1
+T: 1 1 : 217 : 217 : 1.0
+T: 1 2 : 217 : 217 : 1.0
+T: 1 3 : 217 : 217 : 0.1
+T: 1 3 : 217 : 249 : 0.9
+T: 1 4 : 217 : 219 : 1.0
+T: 1 5 : 217 : 219 : 1.0
+T: 2 0 : 217 : 73 : 0.81
+T: 2 0 : 217 : 89 : 0.09
+T: 2 0 : 217 : 201 : 0.09
+T: 2 0 : 217 : 217 : 0.01
+T: 2 1 : 217 : 89 : 0.9
+T: 2 1 : 217 : 217 : 0.1
+T: 2 2 : 217 : 89 : 0.9
+T: 2 2 : 217 : 217 : 0.1
+T: 2 3 : 217 : 89 : 0.09
+T: 2 3 : 217 : 121 : 0.81
+T: 2 3 : 217 : 217 : 0.01
+T: 2 3 : 217 : 249 : 0.09
+T: 2 4 : 217 : 91 : 0.9
+T: 2 4 : 217 : 219 : 0.1
+T: 2 5 : 217 : 91 : 0.9
+T: 2 5 : 217 : 219 : 0.1
+T: 3 0 : 217 : 201 : 0.9
+T: 3 0 : 217 : 217 : 0.1
+T: 3 1 : 217 : 217 : 1.0
+T: 3 2 : 217 : 217 : 1.0
+T: 3 3 : 217 : 217 : 0.1
+T: 3 3 : 217 : 249 : 0.9
+T: 3 4 : 217 : 219 : 1.0
+T: 3 5 : 217 : 219 : 1.0
+T: 4 0 : 217 : 201 : 0.9
+T: 4 0 : 217 : 217 : 0.1
+T: 4 1 : 217 : 217 : 1.0
+T: 4 2 : 217 : 217 : 1.0
+T: 4 3 : 217 : 217 : 0.1
+T: 4 3 : 217 : 249 : 0.9
+T: 4 4 : 217 : 219 : 1.0
+T: 4 5 : 217 : 219 : 1.0
+T: 5 0 : 217 : 201 : 0.9
+T: 5 0 : 217 : 217 : 0.1
+T: 5 1 : 217 : 217 : 1.0
+T: 5 2 : 217 : 217 : 1.0
+T: 5 3 : 217 : 217 : 0.1
+T: 5 3 : 217 : 249 : 0.9
+T: 5 4 : 217 : 219 : 1.0
+T: 5 5 : 217 : 219 : 1.0
+T: 0 0 : 218 : 138 : 0.81
+T: 0 0 : 218 : 154 : 0.09
+T: 0 0 : 218 : 202 : 0.09
+T: 0 0 : 218 : 218 : 0.01
+T: 0 1 : 218 : 154 : 0.9
+T: 0 1 : 218 : 218 : 0.1
+T: 0 2 : 218 : 154 : 0.9
+T: 0 2 : 218 : 218 : 0.1
+T: 0 3 : 218 : 154 : 0.09
+T: 0 3 : 218 : 186 : 0.81
+T: 0 3 : 218 : 218 : 0.01
+T: 0 3 : 218 : 250 : 0.09
+T: 0 4 : 218 : 154 : 0.9
+T: 0 4 : 218 : 218 : 0.1
+T: 0 5 : 218 : 154 : 0.9
+T: 0 5 : 218 : 218 : 0.1
+T: 1 0 : 218 : 202 : 0.9
+T: 1 0 : 218 : 218 : 0.1
+T: 1 1 : 218 : 218 : 1.0
+T: 1 2 : 218 : 218 : 1.0
+T: 1 3 : 218 : 218 : 0.1
+T: 1 3 : 218 : 250 : 0.9
+T: 1 4 : 218 : 218 : 1.0
+T: 1 5 : 218 : 218 : 1.0
+T: 2 0 : 218 : 74 : 0.81
+T: 2 0 : 218 : 90 : 0.09
+T: 2 0 : 218 : 202 : 0.09
+T: 2 0 : 218 : 218 : 0.01
+T: 2 1 : 218 : 90 : 0.9
+T: 2 1 : 218 : 218 : 0.1
+T: 2 2 : 218 : 90 : 0.9
+T: 2 2 : 218 : 218 : 0.1
+T: 2 3 : 218 : 90 : 0.09
+T: 2 3 : 218 : 122 : 0.81
+T: 2 3 : 218 : 218 : 0.01
+T: 2 3 : 218 : 250 : 0.09
+T: 2 4 : 218 : 90 : 0.9
+T: 2 4 : 218 : 218 : 0.1
+T: 2 5 : 218 : 90 : 0.9
+T: 2 5 : 218 : 218 : 0.1
+T: 3 0 : 218 : 202 : 0.9
+T: 3 0 : 218 : 218 : 0.1
+T: 3 1 : 218 : 218 : 1.0
+T: 3 2 : 218 : 218 : 1.0
+T: 3 3 : 218 : 218 : 0.1
+T: 3 3 : 218 : 250 : 0.9
+T: 3 4 : 218 : 218 : 1.0
+T: 3 5 : 218 : 218 : 1.0
+T: 4 0 : 218 : 202 : 0.9
+T: 4 0 : 218 : 218 : 0.1
+T: 4 1 : 218 : 218 : 1.0
+T: 4 2 : 218 : 218 : 1.0
+T: 4 3 : 218 : 218 : 0.1
+T: 4 3 : 218 : 250 : 0.9
+T: 4 4 : 218 : 218 : 1.0
+T: 4 5 : 218 : 218 : 1.0
+T: 5 0 : 218 : 202 : 0.9
+T: 5 0 : 218 : 218 : 0.1
+T: 5 1 : 218 : 218 : 1.0
+T: 5 2 : 218 : 218 : 1.0
+T: 5 3 : 218 : 218 : 0.1
+T: 5 3 : 218 : 250 : 0.9
+T: 5 4 : 218 : 218 : 1.0
+T: 5 5 : 218 : 218 : 1.0
+T: 0 0 : 219 : 139 : 0.81
+T: 0 0 : 219 : 155 : 0.09
+T: 0 0 : 219 : 203 : 0.09
+T: 0 0 : 219 : 219 : 0.01
+T: 0 1 : 219 : 155 : 0.9
+T: 0 1 : 219 : 219 : 0.1
+T: 0 2 : 219 : 155 : 0.9
+T: 0 2 : 219 : 219 : 0.1
+T: 0 3 : 219 : 155 : 0.09
+T: 0 3 : 219 : 187 : 0.81
+T: 0 3 : 219 : 219 : 0.01
+T: 0 3 : 219 : 251 : 0.09
+T: 0 4 : 219 : 155 : 0.9
+T: 0 4 : 219 : 219 : 0.1
+T: 0 5 : 219 : 155 : 0.9
+T: 0 5 : 219 : 219 : 0.1
+T: 1 0 : 219 : 203 : 0.9
+T: 1 0 : 219 : 219 : 0.1
+T: 1 1 : 219 : 219 : 1.0
+T: 1 2 : 219 : 219 : 1.0
+T: 1 3 : 219 : 219 : 0.1
+T: 1 3 : 219 : 251 : 0.9
+T: 1 4 : 219 : 219 : 1.0
+T: 1 5 : 219 : 219 : 1.0
+T: 2 0 : 219 : 75 : 0.81
+T: 2 0 : 219 : 91 : 0.09
+T: 2 0 : 219 : 203 : 0.09
+T: 2 0 : 219 : 219 : 0.01
+T: 2 1 : 219 : 91 : 0.9
+T: 2 1 : 219 : 219 : 0.1
+T: 2 2 : 219 : 91 : 0.9
+T: 2 2 : 219 : 219 : 0.1
+T: 2 3 : 219 : 91 : 0.09
+T: 2 3 : 219 : 123 : 0.81
+T: 2 3 : 219 : 219 : 0.01
+T: 2 3 : 219 : 251 : 0.09
+T: 2 4 : 219 : 91 : 0.9
+T: 2 4 : 219 : 219 : 0.1
+T: 2 5 : 219 : 91 : 0.9
+T: 2 5 : 219 : 219 : 0.1
+T: 3 0 : 219 : 203 : 0.9
+T: 3 0 : 219 : 219 : 0.1
+T: 3 1 : 219 : 219 : 1.0
+T: 3 2 : 219 : 219 : 1.0
+T: 3 3 : 219 : 219 : 0.1
+T: 3 3 : 219 : 251 : 0.9
+T: 3 4 : 219 : 219 : 1.0
+T: 3 5 : 219 : 219 : 1.0
+T: 4 0 : 219 : 203 : 0.9
+T: 4 0 : 219 : 219 : 0.1
+T: 4 1 : 219 : 219 : 1.0
+T: 4 2 : 219 : 219 : 1.0
+T: 4 3 : 219 : 219 : 0.1
+T: 4 3 : 219 : 251 : 0.9
+T: 4 4 : 219 : 219 : 1.0
+T: 4 5 : 219 : 219 : 1.0
+T: 5 0 : 219 : 203 : 0.9
+T: 5 0 : 219 : 219 : 0.1
+T: 5 1 : 219 : 219 : 1.0
+T: 5 2 : 219 : 219 : 1.0
+T: 5 3 : 219 : 219 : 0.1
+T: 5 3 : 219 : 251 : 0.9
+T: 5 4 : 219 : 219 : 1.0
+T: 5 5 : 219 : 219 : 1.0
+T: 0 0 : 220 : 140 : 0.81
+T: 0 0 : 220 : 156 : 0.09
+T: 0 0 : 220 : 204 : 0.09
+T: 0 0 : 220 : 220 : 0.01
+T: 0 1 : 220 : 156 : 0.9
+T: 0 1 : 220 : 220 : 0.1
+T: 0 2 : 220 : 156 : 0.9
+T: 0 2 : 220 : 220 : 0.1
+T: 0 3 : 220 : 156 : 0.09
+T: 0 3 : 220 : 188 : 0.81
+T: 0 3 : 220 : 220 : 0.01
+T: 0 3 : 220 : 252 : 0.09
+T: 0 4 : 220 : 158 : 0.9
+T: 0 4 : 220 : 222 : 0.1
+T: 0 5 : 220 : 158 : 0.9
+T: 0 5 : 220 : 222 : 0.1
+T: 1 0 : 220 : 204 : 0.9
+T: 1 0 : 220 : 220 : 0.1
+T: 1 1 : 220 : 220 : 1.0
+T: 1 2 : 220 : 220 : 1.0
+T: 1 3 : 220 : 220 : 0.1
+T: 1 3 : 220 : 252 : 0.9
+T: 1 4 : 220 : 222 : 1.0
+T: 1 5 : 220 : 222 : 1.0
+T: 2 0 : 220 : 76 : 0.81
+T: 2 0 : 220 : 92 : 0.09
+T: 2 0 : 220 : 204 : 0.09
+T: 2 0 : 220 : 220 : 0.01
+T: 2 1 : 220 : 92 : 0.9
+T: 2 1 : 220 : 220 : 0.1
+T: 2 2 : 220 : 92 : 0.9
+T: 2 2 : 220 : 220 : 0.1
+T: 2 3 : 220 : 92 : 0.09
+T: 2 3 : 220 : 124 : 0.81
+T: 2 3 : 220 : 220 : 0.01
+T: 2 3 : 220 : 252 : 0.09
+T: 2 4 : 220 : 94 : 0.9
+T: 2 4 : 220 : 222 : 0.1
+T: 2 5 : 220 : 94 : 0.9
+T: 2 5 : 220 : 222 : 0.1
+T: 3 0 : 220 : 204 : 0.9
+T: 3 0 : 220 : 220 : 0.1
+T: 3 1 : 220 : 220 : 1.0
+T: 3 2 : 220 : 220 : 1.0
+T: 3 3 : 220 : 220 : 0.1
+T: 3 3 : 220 : 252 : 0.9
+T: 3 4 : 220 : 222 : 1.0
+T: 3 5 : 220 : 222 : 1.0
+T: 4 0 : 220 : 204 : 0.9
+T: 4 0 : 220 : 220 : 0.1
+T: 4 1 : 220 : 220 : 1.0
+T: 4 2 : 220 : 220 : 1.0
+T: 4 3 : 220 : 220 : 0.1
+T: 4 3 : 220 : 252 : 0.9
+T: 4 4 : 220 : 222 : 1.0
+T: 4 5 : 220 : 222 : 1.0
+T: 5 0 : 220 : 204 : 0.9
+T: 5 0 : 220 : 220 : 0.1
+T: 5 1 : 220 : 220 : 1.0
+T: 5 2 : 220 : 220 : 1.0
+T: 5 3 : 220 : 220 : 0.1
+T: 5 3 : 220 : 252 : 0.9
+T: 5 4 : 220 : 222 : 1.0
+T: 5 5 : 220 : 222 : 1.0
+T: 0 0 : 221 : 141 : 0.81
+T: 0 0 : 221 : 157 : 0.09
+T: 0 0 : 221 : 205 : 0.09
+T: 0 0 : 221 : 221 : 0.01
+T: 0 1 : 221 : 157 : 0.9
+T: 0 1 : 221 : 221 : 0.1
+T: 0 2 : 221 : 157 : 0.9
+T: 0 2 : 221 : 221 : 0.1
+T: 0 3 : 221 : 157 : 0.09
+T: 0 3 : 221 : 189 : 0.81
+T: 0 3 : 221 : 221 : 0.01
+T: 0 3 : 221 : 253 : 0.09
+T: 0 4 : 221 : 0 : 1.0
+T: 0 5 : 221 : 0 : 1.0
+T: 1 0 : 221 : 205 : 0.9
+T: 1 0 : 221 : 221 : 0.1
+T: 1 1 : 221 : 221 : 1.0
+T: 1 2 : 221 : 221 : 1.0
+T: 1 3 : 221 : 221 : 0.1
+T: 1 3 : 221 : 253 : 0.9
+T: 1 4 : 221 : 0 : 1.0
+T: 1 5 : 221 : 0 : 1.0
+T: 2 0 : 221 : 77 : 0.81
+T: 2 0 : 221 : 93 : 0.09
+T: 2 0 : 221 : 205 : 0.09
+T: 2 0 : 221 : 221 : 0.01
+T: 2 1 : 221 : 93 : 0.9
+T: 2 1 : 221 : 221 : 0.1
+T: 2 2 : 221 : 93 : 0.9
+T: 2 2 : 221 : 221 : 0.1
+T: 2 3 : 221 : 93 : 0.09
+T: 2 3 : 221 : 125 : 0.81
+T: 2 3 : 221 : 221 : 0.01
+T: 2 3 : 221 : 253 : 0.09
+T: 2 4 : 221 : 0 : 1.0
+T: 2 5 : 221 : 0 : 1.0
+T: 3 0 : 221 : 205 : 0.9
+T: 3 0 : 221 : 221 : 0.1
+T: 3 1 : 221 : 221 : 1.0
+T: 3 2 : 221 : 221 : 1.0
+T: 3 3 : 221 : 221 : 0.1
+T: 3 3 : 221 : 253 : 0.9
+T: 3 4 : 221 : 0 : 1.0
+T: 3 5 : 221 : 0 : 1.0
+T: 4 0 : 221 : 205 : 0.9
+T: 4 0 : 221 : 221 : 0.1
+T: 4 1 : 221 : 221 : 1.0
+T: 4 2 : 221 : 221 : 1.0
+T: 4 3 : 221 : 221 : 0.1
+T: 4 3 : 221 : 253 : 0.9
+T: 4 4 : 221 : 0 : 1.0
+T: 4 5 : 221 : 0 : 1.0
+T: 5 0 : 221 : 205 : 0.9
+T: 5 0 : 221 : 221 : 0.1
+T: 5 1 : 221 : 221 : 1.0
+T: 5 2 : 221 : 221 : 1.0
+T: 5 3 : 221 : 221 : 0.1
+T: 5 3 : 221 : 253 : 0.9
+T: 5 4 : 221 : 0 : 1.0
+T: 5 5 : 221 : 0 : 1.0
+T: 0 0 : 222 : 142 : 0.81
+T: 0 0 : 222 : 158 : 0.09
+T: 0 0 : 222 : 206 : 0.09
+T: 0 0 : 222 : 222 : 0.01
+T: 0 1 : 222 : 158 : 0.9
+T: 0 1 : 222 : 222 : 0.1
+T: 0 2 : 222 : 158 : 0.9
+T: 0 2 : 222 : 222 : 0.1
+T: 0 3 : 222 : 158 : 0.09
+T: 0 3 : 222 : 190 : 0.81
+T: 0 3 : 222 : 222 : 0.01
+T: 0 3 : 222 : 254 : 0.09
+T: 0 4 : 222 : 158 : 0.9
+T: 0 4 : 222 : 222 : 0.1
+T: 0 5 : 222 : 158 : 0.9
+T: 0 5 : 222 : 222 : 0.1
+T: 1 0 : 222 : 206 : 0.9
+T: 1 0 : 222 : 222 : 0.1
+T: 1 1 : 222 : 222 : 1.0
+T: 1 2 : 222 : 222 : 1.0
+T: 1 3 : 222 : 222 : 0.1
+T: 1 3 : 222 : 254 : 0.9
+T: 1 4 : 222 : 222 : 1.0
+T: 1 5 : 222 : 222 : 1.0
+T: 2 0 : 222 : 78 : 0.81
+T: 2 0 : 222 : 94 : 0.09
+T: 2 0 : 222 : 206 : 0.09
+T: 2 0 : 222 : 222 : 0.01
+T: 2 1 : 222 : 94 : 0.9
+T: 2 1 : 222 : 222 : 0.1
+T: 2 2 : 222 : 94 : 0.9
+T: 2 2 : 222 : 222 : 0.1
+T: 2 3 : 222 : 94 : 0.09
+T: 2 3 : 222 : 126 : 0.81
+T: 2 3 : 222 : 222 : 0.01
+T: 2 3 : 222 : 254 : 0.09
+T: 2 4 : 222 : 94 : 0.9
+T: 2 4 : 222 : 222 : 0.1
+T: 2 5 : 222 : 94 : 0.9
+T: 2 5 : 222 : 222 : 0.1
+T: 3 0 : 222 : 206 : 0.9
+T: 3 0 : 222 : 222 : 0.1
+T: 3 1 : 222 : 222 : 1.0
+T: 3 2 : 222 : 222 : 1.0
+T: 3 3 : 222 : 222 : 0.1
+T: 3 3 : 222 : 254 : 0.9
+T: 3 4 : 222 : 222 : 1.0
+T: 3 5 : 222 : 222 : 1.0
+T: 4 0 : 222 : 206 : 0.9
+T: 4 0 : 222 : 222 : 0.1
+T: 4 1 : 222 : 222 : 1.0
+T: 4 2 : 222 : 222 : 1.0
+T: 4 3 : 222 : 222 : 0.1
+T: 4 3 : 222 : 254 : 0.9
+T: 4 4 : 222 : 222 : 1.0
+T: 4 5 : 222 : 222 : 1.0
+T: 5 0 : 222 : 206 : 0.9
+T: 5 0 : 222 : 222 : 0.1
+T: 5 1 : 222 : 222 : 1.0
+T: 5 2 : 222 : 222 : 1.0
+T: 5 3 : 222 : 222 : 0.1
+T: 5 3 : 222 : 254 : 0.9
+T: 5 4 : 222 : 222 : 1.0
+T: 5 5 : 222 : 222 : 1.0
+T: 0 0 : 223 : 143 : 0.81
+T: 0 0 : 223 : 159 : 0.09
+T: 0 0 : 223 : 207 : 0.09
+T: 0 0 : 223 : 223 : 0.01
+T: 0 1 : 223 : 159 : 0.9
+T: 0 1 : 223 : 223 : 0.1
+T: 0 2 : 223 : 159 : 0.9
+T: 0 2 : 223 : 223 : 0.1
+T: 0 3 : 223 : 159 : 0.09
+T: 0 3 : 223 : 191 : 0.81
+T: 0 3 : 223 : 223 : 0.01
+T: 0 3 : 223 : 255 : 0.09
+T: 0 4 : 223 : 0 : 1.0
+T: 0 5 : 223 : 0 : 1.0
+T: 1 0 : 223 : 207 : 0.9
+T: 1 0 : 223 : 223 : 0.1
+T: 1 1 : 223 : 223 : 1.0
+T: 1 2 : 223 : 223 : 1.0
+T: 1 3 : 223 : 223 : 0.1
+T: 1 3 : 223 : 255 : 0.9
+T: 1 4 : 223 : 0 : 1.0
+T: 1 5 : 223 : 0 : 1.0
+T: 2 0 : 223 : 79 : 0.81
+T: 2 0 : 223 : 95 : 0.09
+T: 2 0 : 223 : 207 : 0.09
+T: 2 0 : 223 : 223 : 0.01
+T: 2 1 : 223 : 95 : 0.9
+T: 2 1 : 223 : 223 : 0.1
+T: 2 2 : 223 : 95 : 0.9
+T: 2 2 : 223 : 223 : 0.1
+T: 2 3 : 223 : 95 : 0.09
+T: 2 3 : 223 : 127 : 0.81
+T: 2 3 : 223 : 223 : 0.01
+T: 2 3 : 223 : 255 : 0.09
+T: 2 4 : 223 : 0 : 1.0
+T: 2 5 : 223 : 0 : 1.0
+T: 3 0 : 223 : 207 : 0.9
+T: 3 0 : 223 : 223 : 0.1
+T: 3 1 : 223 : 223 : 1.0
+T: 3 2 : 223 : 223 : 1.0
+T: 3 3 : 223 : 223 : 0.1
+T: 3 3 : 223 : 255 : 0.9
+T: 3 4 : 223 : 0 : 1.0
+T: 3 5 : 223 : 0 : 1.0
+T: 4 0 : 223 : 0 : 1.0
+T: 4 1 : 223 : 0 : 1.0
+T: 4 2 : 223 : 0 : 1.0
+T: 4 3 : 223 : 0 : 1.0
+T: 4 4 : 223 : 0 : 1.0
+T: 4 5 : 223 : 0 : 1.0
+T: 5 0 : 223 : 0 : 1.0
+T: 5 1 : 223 : 0 : 1.0
+T: 5 2 : 223 : 0 : 1.0
+T: 5 3 : 223 : 0 : 1.0
+T: 5 4 : 223 : 0 : 1.0
+T: 5 5 : 223 : 0 : 1.0
+T: 0 0 : 224 : 160 : 0.9
+T: 0 0 : 224 : 224 : 0.1
+T: 0 1 : 224 : 160 : 0.09
+T: 0 1 : 224 : 176 : 0.81
+T: 0 1 : 224 : 224 : 0.01
+T: 0 1 : 224 : 240 : 0.09
+T: 0 2 : 224 : 128 : 0.81
+T: 0 2 : 224 : 160 : 0.09
+T: 0 2 : 224 : 192 : 0.09
+T: 0 2 : 224 : 224 : 0.01
+T: 0 3 : 224 : 160 : 0.9
+T: 0 3 : 224 : 224 : 0.1
+T: 0 4 : 224 : 164 : 0.9
+T: 0 4 : 224 : 228 : 0.1
+T: 0 5 : 224 : 164 : 0.9
+T: 0 5 : 224 : 228 : 0.1
+T: 1 0 : 224 : 224 : 1.0
+T: 1 1 : 224 : 224 : 0.1
+T: 1 1 : 224 : 240 : 0.9
+T: 1 2 : 224 : 192 : 0.9
+T: 1 2 : 224 : 224 : 0.1
+T: 1 3 : 224 : 224 : 1.0
+T: 1 4 : 224 : 228 : 1.0
+T: 1 5 : 224 : 228 : 1.0
+T: 2 0 : 224 : 96 : 0.9
+T: 2 0 : 224 : 224 : 0.1
+T: 2 1 : 224 : 96 : 0.09
+T: 2 1 : 224 : 112 : 0.81
+T: 2 1 : 224 : 224 : 0.01
+T: 2 1 : 224 : 240 : 0.09
+T: 2 2 : 224 : 64 : 0.81
+T: 2 2 : 224 : 96 : 0.09
+T: 2 2 : 224 : 192 : 0.09
+T: 2 2 : 224 : 224 : 0.01
+T: 2 3 : 224 : 96 : 0.9
+T: 2 3 : 224 : 224 : 0.1
+T: 2 4 : 224 : 100 : 0.9
+T: 2 4 : 224 : 228 : 0.1
+T: 2 5 : 224 : 100 : 0.9
+T: 2 5 : 224 : 228 : 0.1
+T: 3 0 : 224 : 224 : 1.0
+T: 3 1 : 224 : 224 : 0.1
+T: 3 1 : 224 : 240 : 0.9
+T: 3 2 : 224 : 192 : 0.9
+T: 3 2 : 224 : 224 : 0.1
+T: 3 3 : 224 : 224 : 1.0
+T: 3 4 : 224 : 228 : 1.0
+T: 3 5 : 224 : 228 : 1.0
+T: 4 0 : 224 : 232 : 1.0
+T: 4 1 : 224 : 232 : 0.1
+T: 4 1 : 224 : 248 : 0.9
+T: 4 2 : 224 : 200 : 0.9
+T: 4 2 : 224 : 232 : 0.1
+T: 4 3 : 224 : 232 : 1.0
+T: 4 4 : 224 : 236 : 1.0
+T: 4 5 : 224 : 236 : 1.0
+T: 5 0 : 224 : 232 : 1.0
+T: 5 1 : 224 : 232 : 0.1
+T: 5 1 : 224 : 248 : 0.9
+T: 5 2 : 224 : 200 : 0.9
+T: 5 2 : 224 : 232 : 0.1
+T: 5 3 : 224 : 232 : 1.0
+T: 5 4 : 224 : 236 : 1.0
+T: 5 5 : 224 : 236 : 1.0
+T: 0 0 : 225 : 161 : 0.9
+T: 0 0 : 225 : 225 : 0.1
+T: 0 1 : 225 : 161 : 0.09
+T: 0 1 : 225 : 177 : 0.81
+T: 0 1 : 225 : 225 : 0.01
+T: 0 1 : 225 : 241 : 0.09
+T: 0 2 : 225 : 129 : 0.81
+T: 0 2 : 225 : 161 : 0.09
+T: 0 2 : 225 : 193 : 0.09
+T: 0 2 : 225 : 225 : 0.01
+T: 0 3 : 225 : 161 : 0.9
+T: 0 3 : 225 : 225 : 0.1
+T: 0 4 : 225 : 165 : 0.9
+T: 0 4 : 225 : 229 : 0.1
+T: 0 5 : 225 : 165 : 0.9
+T: 0 5 : 225 : 229 : 0.1
+T: 1 0 : 225 : 225 : 1.0
+T: 1 1 : 225 : 225 : 0.1
+T: 1 1 : 225 : 241 : 0.9
+T: 1 2 : 225 : 193 : 0.9
+T: 1 2 : 225 : 225 : 0.1
+T: 1 3 : 225 : 225 : 1.0
+T: 1 4 : 225 : 229 : 1.0
+T: 1 5 : 225 : 229 : 1.0
+T: 2 0 : 225 : 97 : 0.9
+T: 2 0 : 225 : 225 : 0.1
+T: 2 1 : 225 : 97 : 0.09
+T: 2 1 : 225 : 113 : 0.81
+T: 2 1 : 225 : 225 : 0.01
+T: 2 1 : 225 : 241 : 0.09
+T: 2 2 : 225 : 65 : 0.81
+T: 2 2 : 225 : 97 : 0.09
+T: 2 2 : 225 : 193 : 0.09
+T: 2 2 : 225 : 225 : 0.01
+T: 2 3 : 225 : 97 : 0.9
+T: 2 3 : 225 : 225 : 0.1
+T: 2 4 : 225 : 101 : 0.9
+T: 2 4 : 225 : 229 : 0.1
+T: 2 5 : 225 : 101 : 0.9
+T: 2 5 : 225 : 229 : 0.1
+T: 3 0 : 225 : 225 : 1.0
+T: 3 1 : 225 : 225 : 0.1
+T: 3 1 : 225 : 241 : 0.9
+T: 3 2 : 225 : 193 : 0.9
+T: 3 2 : 225 : 225 : 0.1
+T: 3 3 : 225 : 225 : 1.0
+T: 3 4 : 225 : 229 : 1.0
+T: 3 5 : 225 : 229 : 1.0
+T: 4 0 : 225 : 233 : 1.0
+T: 4 1 : 225 : 233 : 0.1
+T: 4 1 : 225 : 249 : 0.9
+T: 4 2 : 225 : 201 : 0.9
+T: 4 2 : 225 : 233 : 0.1
+T: 4 3 : 225 : 233 : 1.0
+T: 4 4 : 225 : 237 : 1.0
+T: 4 5 : 225 : 237 : 1.0
+T: 5 0 : 225 : 233 : 1.0
+T: 5 1 : 225 : 233 : 0.1
+T: 5 1 : 225 : 249 : 0.9
+T: 5 2 : 225 : 201 : 0.9
+T: 5 2 : 225 : 233 : 0.1
+T: 5 3 : 225 : 233 : 1.0
+T: 5 4 : 225 : 237 : 1.0
+T: 5 5 : 225 : 237 : 1.0
+T: 0 0 : 226 : 162 : 0.9
+T: 0 0 : 226 : 226 : 0.1
+T: 0 1 : 226 : 162 : 0.09
+T: 0 1 : 226 : 178 : 0.81
+T: 0 1 : 226 : 226 : 0.01
+T: 0 1 : 226 : 242 : 0.09
+T: 0 2 : 226 : 130 : 0.81
+T: 0 2 : 226 : 162 : 0.09
+T: 0 2 : 226 : 194 : 0.09
+T: 0 2 : 226 : 226 : 0.01
+T: 0 3 : 226 : 162 : 0.9
+T: 0 3 : 226 : 226 : 0.1
+T: 0 4 : 226 : 166 : 0.9
+T: 0 4 : 226 : 230 : 0.1
+T: 0 5 : 226 : 166 : 0.9
+T: 0 5 : 226 : 230 : 0.1
+T: 1 0 : 226 : 226 : 1.0
+T: 1 1 : 226 : 226 : 0.1
+T: 1 1 : 226 : 242 : 0.9
+T: 1 2 : 226 : 194 : 0.9
+T: 1 2 : 226 : 226 : 0.1
+T: 1 3 : 226 : 226 : 1.0
+T: 1 4 : 226 : 230 : 1.0
+T: 1 5 : 226 : 230 : 1.0
+T: 2 0 : 226 : 98 : 0.9
+T: 2 0 : 226 : 226 : 0.1
+T: 2 1 : 226 : 98 : 0.09
+T: 2 1 : 226 : 114 : 0.81
+T: 2 1 : 226 : 226 : 0.01
+T: 2 1 : 226 : 242 : 0.09
+T: 2 2 : 226 : 66 : 0.81
+T: 2 2 : 226 : 98 : 0.09
+T: 2 2 : 226 : 194 : 0.09
+T: 2 2 : 226 : 226 : 0.01
+T: 2 3 : 226 : 98 : 0.9
+T: 2 3 : 226 : 226 : 0.1
+T: 2 4 : 226 : 102 : 0.9
+T: 2 4 : 226 : 230 : 0.1
+T: 2 5 : 226 : 102 : 0.9
+T: 2 5 : 226 : 230 : 0.1
+T: 3 0 : 226 : 226 : 1.0
+T: 3 1 : 226 : 226 : 0.1
+T: 3 1 : 226 : 242 : 0.9
+T: 3 2 : 226 : 194 : 0.9
+T: 3 2 : 226 : 226 : 0.1
+T: 3 3 : 226 : 226 : 1.0
+T: 3 4 : 226 : 230 : 1.0
+T: 3 5 : 226 : 230 : 1.0
+T: 4 0 : 226 : 234 : 1.0
+T: 4 1 : 226 : 234 : 0.1
+T: 4 1 : 226 : 250 : 0.9
+T: 4 2 : 226 : 202 : 0.9
+T: 4 2 : 226 : 234 : 0.1
+T: 4 3 : 226 : 234 : 1.0
+T: 4 4 : 226 : 238 : 1.0
+T: 4 5 : 226 : 238 : 1.0
+T: 5 0 : 226 : 234 : 1.0
+T: 5 1 : 226 : 234 : 0.1
+T: 5 1 : 226 : 250 : 0.9
+T: 5 2 : 226 : 202 : 0.9
+T: 5 2 : 226 : 234 : 0.1
+T: 5 3 : 226 : 234 : 1.0
+T: 5 4 : 226 : 238 : 1.0
+T: 5 5 : 226 : 238 : 1.0
+T: 0 0 : 227 : 163 : 0.9
+T: 0 0 : 227 : 227 : 0.1
+T: 0 1 : 227 : 163 : 0.09
+T: 0 1 : 227 : 179 : 0.81
+T: 0 1 : 227 : 227 : 0.01
+T: 0 1 : 227 : 243 : 0.09
+T: 0 2 : 227 : 131 : 0.81
+T: 0 2 : 227 : 163 : 0.09
+T: 0 2 : 227 : 195 : 0.09
+T: 0 2 : 227 : 227 : 0.01
+T: 0 3 : 227 : 163 : 0.9
+T: 0 3 : 227 : 227 : 0.1
+T: 0 4 : 227 : 167 : 0.9
+T: 0 4 : 227 : 231 : 0.1
+T: 0 5 : 227 : 167 : 0.9
+T: 0 5 : 227 : 231 : 0.1
+T: 1 0 : 227 : 227 : 1.0
+T: 1 1 : 227 : 227 : 0.1
+T: 1 1 : 227 : 243 : 0.9
+T: 1 2 : 227 : 195 : 0.9
+T: 1 2 : 227 : 227 : 0.1
+T: 1 3 : 227 : 227 : 1.0
+T: 1 4 : 227 : 231 : 1.0
+T: 1 5 : 227 : 231 : 1.0
+T: 2 0 : 227 : 99 : 0.9
+T: 2 0 : 227 : 227 : 0.1
+T: 2 1 : 227 : 99 : 0.09
+T: 2 1 : 227 : 115 : 0.81
+T: 2 1 : 227 : 227 : 0.01
+T: 2 1 : 227 : 243 : 0.09
+T: 2 2 : 227 : 67 : 0.81
+T: 2 2 : 227 : 99 : 0.09
+T: 2 2 : 227 : 195 : 0.09
+T: 2 2 : 227 : 227 : 0.01
+T: 2 3 : 227 : 99 : 0.9
+T: 2 3 : 227 : 227 : 0.1
+T: 2 4 : 227 : 103 : 0.9
+T: 2 4 : 227 : 231 : 0.1
+T: 2 5 : 227 : 103 : 0.9
+T: 2 5 : 227 : 231 : 0.1
+T: 3 0 : 227 : 227 : 1.0
+T: 3 1 : 227 : 227 : 0.1
+T: 3 1 : 227 : 243 : 0.9
+T: 3 2 : 227 : 195 : 0.9
+T: 3 2 : 227 : 227 : 0.1
+T: 3 3 : 227 : 227 : 1.0
+T: 3 4 : 227 : 231 : 1.0
+T: 3 5 : 227 : 231 : 1.0
+T: 4 0 : 227 : 235 : 1.0
+T: 4 1 : 227 : 235 : 0.1
+T: 4 1 : 227 : 251 : 0.9
+T: 4 2 : 227 : 203 : 0.9
+T: 4 2 : 227 : 235 : 0.1
+T: 4 3 : 227 : 235 : 1.0
+T: 4 4 : 227 : 0 : 1.0
+T: 4 5 : 227 : 0 : 1.0
+T: 5 0 : 227 : 235 : 1.0
+T: 5 1 : 227 : 235 : 0.1
+T: 5 1 : 227 : 251 : 0.9
+T: 5 2 : 227 : 203 : 0.9
+T: 5 2 : 227 : 235 : 0.1
+T: 5 3 : 227 : 235 : 1.0
+T: 5 4 : 227 : 0 : 1.0
+T: 5 5 : 227 : 0 : 1.0
+T: 0 0 : 228 : 164 : 0.9
+T: 0 0 : 228 : 228 : 0.1
+T: 0 1 : 228 : 164 : 0.09
+T: 0 1 : 228 : 180 : 0.81
+T: 0 1 : 228 : 228 : 0.01
+T: 0 1 : 228 : 244 : 0.09
+T: 0 2 : 228 : 132 : 0.81
+T: 0 2 : 228 : 164 : 0.09
+T: 0 2 : 228 : 196 : 0.09
+T: 0 2 : 228 : 228 : 0.01
+T: 0 3 : 228 : 164 : 0.9
+T: 0 3 : 228 : 228 : 0.1
+T: 0 4 : 228 : 164 : 0.9
+T: 0 4 : 228 : 228 : 0.1
+T: 0 5 : 228 : 164 : 0.9
+T: 0 5 : 228 : 228 : 0.1
+T: 1 0 : 228 : 228 : 1.0
+T: 1 1 : 228 : 228 : 0.1
+T: 1 1 : 228 : 244 : 0.9
+T: 1 2 : 228 : 196 : 0.9
+T: 1 2 : 228 : 228 : 0.1
+T: 1 3 : 228 : 228 : 1.0
+T: 1 4 : 228 : 228 : 1.0
+T: 1 5 : 228 : 228 : 1.0
+T: 2 0 : 228 : 100 : 0.9
+T: 2 0 : 228 : 228 : 0.1
+T: 2 1 : 228 : 100 : 0.09
+T: 2 1 : 228 : 116 : 0.81
+T: 2 1 : 228 : 228 : 0.01
+T: 2 1 : 228 : 244 : 0.09
+T: 2 2 : 228 : 68 : 0.81
+T: 2 2 : 228 : 100 : 0.09
+T: 2 2 : 228 : 196 : 0.09
+T: 2 2 : 228 : 228 : 0.01
+T: 2 3 : 228 : 100 : 0.9
+T: 2 3 : 228 : 228 : 0.1
+T: 2 4 : 228 : 100 : 0.9
+T: 2 4 : 228 : 228 : 0.1
+T: 2 5 : 228 : 100 : 0.9
+T: 2 5 : 228 : 228 : 0.1
+T: 3 0 : 228 : 228 : 1.0
+T: 3 1 : 228 : 228 : 0.1
+T: 3 1 : 228 : 244 : 0.9
+T: 3 2 : 228 : 196 : 0.9
+T: 3 2 : 228 : 228 : 0.1
+T: 3 3 : 228 : 228 : 1.0
+T: 3 4 : 228 : 228 : 1.0
+T: 3 5 : 228 : 228 : 1.0
+T: 4 0 : 228 : 236 : 1.0
+T: 4 1 : 228 : 236 : 0.1
+T: 4 1 : 228 : 252 : 0.9
+T: 4 2 : 228 : 204 : 0.9
+T: 4 2 : 228 : 236 : 0.1
+T: 4 3 : 228 : 236 : 1.0
+T: 4 4 : 228 : 236 : 1.0
+T: 4 5 : 228 : 236 : 1.0
+T: 5 0 : 228 : 236 : 1.0
+T: 5 1 : 228 : 236 : 0.1
+T: 5 1 : 228 : 252 : 0.9
+T: 5 2 : 228 : 204 : 0.9
+T: 5 2 : 228 : 236 : 0.1
+T: 5 3 : 228 : 236 : 1.0
+T: 5 4 : 228 : 236 : 1.0
+T: 5 5 : 228 : 236 : 1.0
+T: 0 0 : 229 : 165 : 0.9
+T: 0 0 : 229 : 229 : 0.1
+T: 0 1 : 229 : 165 : 0.09
+T: 0 1 : 229 : 181 : 0.81
+T: 0 1 : 229 : 229 : 0.01
+T: 0 1 : 229 : 245 : 0.09
+T: 0 2 : 229 : 133 : 0.81
+T: 0 2 : 229 : 165 : 0.09
+T: 0 2 : 229 : 197 : 0.09
+T: 0 2 : 229 : 229 : 0.01
+T: 0 3 : 229 : 165 : 0.9
+T: 0 3 : 229 : 229 : 0.1
+T: 0 4 : 229 : 165 : 0.9
+T: 0 4 : 229 : 229 : 0.1
+T: 0 5 : 229 : 165 : 0.9
+T: 0 5 : 229 : 229 : 0.1
+T: 1 0 : 229 : 229 : 1.0
+T: 1 1 : 229 : 229 : 0.1
+T: 1 1 : 229 : 245 : 0.9
+T: 1 2 : 229 : 197 : 0.9
+T: 1 2 : 229 : 229 : 0.1
+T: 1 3 : 229 : 229 : 1.0
+T: 1 4 : 229 : 229 : 1.0
+T: 1 5 : 229 : 229 : 1.0
+T: 2 0 : 229 : 101 : 0.9
+T: 2 0 : 229 : 229 : 0.1
+T: 2 1 : 229 : 101 : 0.09
+T: 2 1 : 229 : 117 : 0.81
+T: 2 1 : 229 : 229 : 0.01
+T: 2 1 : 229 : 245 : 0.09
+T: 2 2 : 229 : 69 : 0.81
+T: 2 2 : 229 : 101 : 0.09
+T: 2 2 : 229 : 197 : 0.09
+T: 2 2 : 229 : 229 : 0.01
+T: 2 3 : 229 : 101 : 0.9
+T: 2 3 : 229 : 229 : 0.1
+T: 2 4 : 229 : 101 : 0.9
+T: 2 4 : 229 : 229 : 0.1
+T: 2 5 : 229 : 101 : 0.9
+T: 2 5 : 229 : 229 : 0.1
+T: 3 0 : 229 : 229 : 1.0
+T: 3 1 : 229 : 229 : 0.1
+T: 3 1 : 229 : 245 : 0.9
+T: 3 2 : 229 : 197 : 0.9
+T: 3 2 : 229 : 229 : 0.1
+T: 3 3 : 229 : 229 : 1.0
+T: 3 4 : 229 : 229 : 1.0
+T: 3 5 : 229 : 229 : 1.0
+T: 4 0 : 229 : 237 : 1.0
+T: 4 1 : 229 : 237 : 0.1
+T: 4 1 : 229 : 253 : 0.9
+T: 4 2 : 229 : 205 : 0.9
+T: 4 2 : 229 : 237 : 0.1
+T: 4 3 : 229 : 237 : 1.0
+T: 4 4 : 229 : 237 : 1.0
+T: 4 5 : 229 : 237 : 1.0
+T: 5 0 : 229 : 237 : 1.0
+T: 5 1 : 229 : 237 : 0.1
+T: 5 1 : 229 : 253 : 0.9
+T: 5 2 : 229 : 205 : 0.9
+T: 5 2 : 229 : 237 : 0.1
+T: 5 3 : 229 : 237 : 1.0
+T: 5 4 : 229 : 237 : 1.0
+T: 5 5 : 229 : 237 : 1.0
+T: 0 0 : 230 : 166 : 0.9
+T: 0 0 : 230 : 230 : 0.1
+T: 0 1 : 230 : 166 : 0.09
+T: 0 1 : 230 : 182 : 0.81
+T: 0 1 : 230 : 230 : 0.01
+T: 0 1 : 230 : 246 : 0.09
+T: 0 2 : 230 : 134 : 0.81
+T: 0 2 : 230 : 166 : 0.09
+T: 0 2 : 230 : 198 : 0.09
+T: 0 2 : 230 : 230 : 0.01
+T: 0 3 : 230 : 166 : 0.9
+T: 0 3 : 230 : 230 : 0.1
+T: 0 4 : 230 : 166 : 0.9
+T: 0 4 : 230 : 230 : 0.1
+T: 0 5 : 230 : 166 : 0.9
+T: 0 5 : 230 : 230 : 0.1
+T: 1 0 : 230 : 230 : 1.0
+T: 1 1 : 230 : 230 : 0.1
+T: 1 1 : 230 : 246 : 0.9
+T: 1 2 : 230 : 198 : 0.9
+T: 1 2 : 230 : 230 : 0.1
+T: 1 3 : 230 : 230 : 1.0
+T: 1 4 : 230 : 230 : 1.0
+T: 1 5 : 230 : 230 : 1.0
+T: 2 0 : 230 : 102 : 0.9
+T: 2 0 : 230 : 230 : 0.1
+T: 2 1 : 230 : 102 : 0.09
+T: 2 1 : 230 : 118 : 0.81
+T: 2 1 : 230 : 230 : 0.01
+T: 2 1 : 230 : 246 : 0.09
+T: 2 2 : 230 : 70 : 0.81
+T: 2 2 : 230 : 102 : 0.09
+T: 2 2 : 230 : 198 : 0.09
+T: 2 2 : 230 : 230 : 0.01
+T: 2 3 : 230 : 102 : 0.9
+T: 2 3 : 230 : 230 : 0.1
+T: 2 4 : 230 : 102 : 0.9
+T: 2 4 : 230 : 230 : 0.1
+T: 2 5 : 230 : 102 : 0.9
+T: 2 5 : 230 : 230 : 0.1
+T: 3 0 : 230 : 230 : 1.0
+T: 3 1 : 230 : 230 : 0.1
+T: 3 1 : 230 : 246 : 0.9
+T: 3 2 : 230 : 198 : 0.9
+T: 3 2 : 230 : 230 : 0.1
+T: 3 3 : 230 : 230 : 1.0
+T: 3 4 : 230 : 230 : 1.0
+T: 3 5 : 230 : 230 : 1.0
+T: 4 0 : 230 : 238 : 1.0
+T: 4 1 : 230 : 238 : 0.1
+T: 4 1 : 230 : 254 : 0.9
+T: 4 2 : 230 : 206 : 0.9
+T: 4 2 : 230 : 238 : 0.1
+T: 4 3 : 230 : 238 : 1.0
+T: 4 4 : 230 : 238 : 1.0
+T: 4 5 : 230 : 238 : 1.0
+T: 5 0 : 230 : 238 : 1.0
+T: 5 1 : 230 : 238 : 0.1
+T: 5 1 : 230 : 254 : 0.9
+T: 5 2 : 230 : 206 : 0.9
+T: 5 2 : 230 : 238 : 0.1
+T: 5 3 : 230 : 238 : 1.0
+T: 5 4 : 230 : 238 : 1.0
+T: 5 5 : 230 : 238 : 1.0
+T: 0 0 : 231 : 167 : 0.9
+T: 0 0 : 231 : 231 : 0.1
+T: 0 1 : 231 : 167 : 0.09
+T: 0 1 : 231 : 183 : 0.81
+T: 0 1 : 231 : 231 : 0.01
+T: 0 1 : 231 : 247 : 0.09
+T: 0 2 : 231 : 135 : 0.81
+T: 0 2 : 231 : 167 : 0.09
+T: 0 2 : 231 : 199 : 0.09
+T: 0 2 : 231 : 231 : 0.01
+T: 0 3 : 231 : 167 : 0.9
+T: 0 3 : 231 : 231 : 0.1
+T: 0 4 : 231 : 167 : 0.9
+T: 0 4 : 231 : 231 : 0.1
+T: 0 5 : 231 : 167 : 0.9
+T: 0 5 : 231 : 231 : 0.1
+T: 1 0 : 231 : 231 : 1.0
+T: 1 1 : 231 : 231 : 0.1
+T: 1 1 : 231 : 247 : 0.9
+T: 1 2 : 231 : 199 : 0.9
+T: 1 2 : 231 : 231 : 0.1
+T: 1 3 : 231 : 231 : 1.0
+T: 1 4 : 231 : 231 : 1.0
+T: 1 5 : 231 : 231 : 1.0
+T: 2 0 : 231 : 103 : 0.9
+T: 2 0 : 231 : 231 : 0.1
+T: 2 1 : 231 : 103 : 0.09
+T: 2 1 : 231 : 119 : 0.81
+T: 2 1 : 231 : 231 : 0.01
+T: 2 1 : 231 : 247 : 0.09
+T: 2 2 : 231 : 71 : 0.81
+T: 2 2 : 231 : 103 : 0.09
+T: 2 2 : 231 : 199 : 0.09
+T: 2 2 : 231 : 231 : 0.01
+T: 2 3 : 231 : 103 : 0.9
+T: 2 3 : 231 : 231 : 0.1
+T: 2 4 : 231 : 103 : 0.9
+T: 2 4 : 231 : 231 : 0.1
+T: 2 5 : 231 : 103 : 0.9
+T: 2 5 : 231 : 231 : 0.1
+T: 3 0 : 231 : 231 : 1.0
+T: 3 1 : 231 : 231 : 0.1
+T: 3 1 : 231 : 247 : 0.9
+T: 3 2 : 231 : 199 : 0.9
+T: 3 2 : 231 : 231 : 0.1
+T: 3 3 : 231 : 231 : 1.0
+T: 3 4 : 231 : 231 : 1.0
+T: 3 5 : 231 : 231 : 1.0
+T: 4 0 : 231 : 0 : 1.0
+T: 4 1 : 231 : 0 : 1.0
+T: 4 2 : 231 : 0 : 1.0
+T: 4 3 : 231 : 0 : 1.0
+T: 4 4 : 231 : 0 : 1.0
+T: 4 5 : 231 : 0 : 1.0
+T: 5 0 : 231 : 0 : 1.0
+T: 5 1 : 231 : 0 : 1.0
+T: 5 2 : 231 : 0 : 1.0
+T: 5 3 : 231 : 0 : 1.0
+T: 5 4 : 231 : 0 : 1.0
+T: 5 5 : 231 : 0 : 1.0
+T: 0 0 : 232 : 168 : 0.9
+T: 0 0 : 232 : 232 : 0.1
+T: 0 1 : 232 : 168 : 0.09
+T: 0 1 : 232 : 184 : 0.81
+T: 0 1 : 232 : 232 : 0.01
+T: 0 1 : 232 : 248 : 0.09
+T: 0 2 : 232 : 136 : 0.81
+T: 0 2 : 232 : 168 : 0.09
+T: 0 2 : 232 : 200 : 0.09
+T: 0 2 : 232 : 232 : 0.01
+T: 0 3 : 232 : 168 : 0.9
+T: 0 3 : 232 : 232 : 0.1
+T: 0 4 : 232 : 172 : 0.9
+T: 0 4 : 232 : 236 : 0.1
+T: 0 5 : 232 : 172 : 0.9
+T: 0 5 : 232 : 236 : 0.1
+T: 1 0 : 232 : 232 : 1.0
+T: 1 1 : 232 : 232 : 0.1
+T: 1 1 : 232 : 248 : 0.9
+T: 1 2 : 232 : 200 : 0.9
+T: 1 2 : 232 : 232 : 0.1
+T: 1 3 : 232 : 232 : 1.0
+T: 1 4 : 232 : 236 : 1.0
+T: 1 5 : 232 : 236 : 1.0
+T: 2 0 : 232 : 104 : 0.9
+T: 2 0 : 232 : 232 : 0.1
+T: 2 1 : 232 : 104 : 0.09
+T: 2 1 : 232 : 120 : 0.81
+T: 2 1 : 232 : 232 : 0.01
+T: 2 1 : 232 : 248 : 0.09
+T: 2 2 : 232 : 72 : 0.81
+T: 2 2 : 232 : 104 : 0.09
+T: 2 2 : 232 : 200 : 0.09
+T: 2 2 : 232 : 232 : 0.01
+T: 2 3 : 232 : 104 : 0.9
+T: 2 3 : 232 : 232 : 0.1
+T: 2 4 : 232 : 108 : 0.9
+T: 2 4 : 232 : 236 : 0.1
+T: 2 5 : 232 : 108 : 0.9
+T: 2 5 : 232 : 236 : 0.1
+T: 3 0 : 232 : 232 : 1.0
+T: 3 1 : 232 : 232 : 0.1
+T: 3 1 : 232 : 248 : 0.9
+T: 3 2 : 232 : 200 : 0.9
+T: 3 2 : 232 : 232 : 0.1
+T: 3 3 : 232 : 232 : 1.0
+T: 3 4 : 232 : 236 : 1.0
+T: 3 5 : 232 : 236 : 1.0
+T: 4 0 : 232 : 232 : 1.0
+T: 4 1 : 232 : 232 : 0.1
+T: 4 1 : 232 : 248 : 0.9
+T: 4 2 : 232 : 200 : 0.9
+T: 4 2 : 232 : 232 : 0.1
+T: 4 3 : 232 : 232 : 1.0
+T: 4 4 : 232 : 236 : 1.0
+T: 4 5 : 232 : 236 : 1.0
+T: 5 0 : 232 : 232 : 1.0
+T: 5 1 : 232 : 232 : 0.1
+T: 5 1 : 232 : 248 : 0.9
+T: 5 2 : 232 : 200 : 0.9
+T: 5 2 : 232 : 232 : 0.1
+T: 5 3 : 232 : 232 : 1.0
+T: 5 4 : 232 : 236 : 1.0
+T: 5 5 : 232 : 236 : 1.0
+T: 0 0 : 233 : 169 : 0.9
+T: 0 0 : 233 : 233 : 0.1
+T: 0 1 : 233 : 169 : 0.09
+T: 0 1 : 233 : 185 : 0.81
+T: 0 1 : 233 : 233 : 0.01
+T: 0 1 : 233 : 249 : 0.09
+T: 0 2 : 233 : 137 : 0.81
+T: 0 2 : 233 : 169 : 0.09
+T: 0 2 : 233 : 201 : 0.09
+T: 0 2 : 233 : 233 : 0.01
+T: 0 3 : 233 : 169 : 0.9
+T: 0 3 : 233 : 233 : 0.1
+T: 0 4 : 233 : 173 : 0.9
+T: 0 4 : 233 : 237 : 0.1
+T: 0 5 : 233 : 173 : 0.9
+T: 0 5 : 233 : 237 : 0.1
+T: 1 0 : 233 : 233 : 1.0
+T: 1 1 : 233 : 233 : 0.1
+T: 1 1 : 233 : 249 : 0.9
+T: 1 2 : 233 : 201 : 0.9
+T: 1 2 : 233 : 233 : 0.1
+T: 1 3 : 233 : 233 : 1.0
+T: 1 4 : 233 : 237 : 1.0
+T: 1 5 : 233 : 237 : 1.0
+T: 2 0 : 233 : 105 : 0.9
+T: 2 0 : 233 : 233 : 0.1
+T: 2 1 : 233 : 105 : 0.09
+T: 2 1 : 233 : 121 : 0.81
+T: 2 1 : 233 : 233 : 0.01
+T: 2 1 : 233 : 249 : 0.09
+T: 2 2 : 233 : 73 : 0.81
+T: 2 2 : 233 : 105 : 0.09
+T: 2 2 : 233 : 201 : 0.09
+T: 2 2 : 233 : 233 : 0.01
+T: 2 3 : 233 : 105 : 0.9
+T: 2 3 : 233 : 233 : 0.1
+T: 2 4 : 233 : 109 : 0.9
+T: 2 4 : 233 : 237 : 0.1
+T: 2 5 : 233 : 109 : 0.9
+T: 2 5 : 233 : 237 : 0.1
+T: 3 0 : 233 : 233 : 1.0
+T: 3 1 : 233 : 233 : 0.1
+T: 3 1 : 233 : 249 : 0.9
+T: 3 2 : 233 : 201 : 0.9
+T: 3 2 : 233 : 233 : 0.1
+T: 3 3 : 233 : 233 : 1.0
+T: 3 4 : 233 : 237 : 1.0
+T: 3 5 : 233 : 237 : 1.0
+T: 4 0 : 233 : 233 : 1.0
+T: 4 1 : 233 : 233 : 0.1
+T: 4 1 : 233 : 249 : 0.9
+T: 4 2 : 233 : 201 : 0.9
+T: 4 2 : 233 : 233 : 0.1
+T: 4 3 : 233 : 233 : 1.0
+T: 4 4 : 233 : 237 : 1.0
+T: 4 5 : 233 : 237 : 1.0
+T: 5 0 : 233 : 233 : 1.0
+T: 5 1 : 233 : 233 : 0.1
+T: 5 1 : 233 : 249 : 0.9
+T: 5 2 : 233 : 201 : 0.9
+T: 5 2 : 233 : 233 : 0.1
+T: 5 3 : 233 : 233 : 1.0
+T: 5 4 : 233 : 237 : 1.0
+T: 5 5 : 233 : 237 : 1.0
+T: 0 0 : 234 : 170 : 0.9
+T: 0 0 : 234 : 234 : 0.1
+T: 0 1 : 234 : 170 : 0.09
+T: 0 1 : 234 : 186 : 0.81
+T: 0 1 : 234 : 234 : 0.01
+T: 0 1 : 234 : 250 : 0.09
+T: 0 2 : 234 : 138 : 0.81
+T: 0 2 : 234 : 170 : 0.09
+T: 0 2 : 234 : 202 : 0.09
+T: 0 2 : 234 : 234 : 0.01
+T: 0 3 : 234 : 170 : 0.9
+T: 0 3 : 234 : 234 : 0.1
+T: 0 4 : 234 : 174 : 0.9
+T: 0 4 : 234 : 238 : 0.1
+T: 0 5 : 234 : 174 : 0.9
+T: 0 5 : 234 : 238 : 0.1
+T: 1 0 : 234 : 234 : 1.0
+T: 1 1 : 234 : 234 : 0.1
+T: 1 1 : 234 : 250 : 0.9
+T: 1 2 : 234 : 202 : 0.9
+T: 1 2 : 234 : 234 : 0.1
+T: 1 3 : 234 : 234 : 1.0
+T: 1 4 : 234 : 238 : 1.0
+T: 1 5 : 234 : 238 : 1.0
+T: 2 0 : 234 : 106 : 0.9
+T: 2 0 : 234 : 234 : 0.1
+T: 2 1 : 234 : 106 : 0.09
+T: 2 1 : 234 : 122 : 0.81
+T: 2 1 : 234 : 234 : 0.01
+T: 2 1 : 234 : 250 : 0.09
+T: 2 2 : 234 : 74 : 0.81
+T: 2 2 : 234 : 106 : 0.09
+T: 2 2 : 234 : 202 : 0.09
+T: 2 2 : 234 : 234 : 0.01
+T: 2 3 : 234 : 106 : 0.9
+T: 2 3 : 234 : 234 : 0.1
+T: 2 4 : 234 : 110 : 0.9
+T: 2 4 : 234 : 238 : 0.1
+T: 2 5 : 234 : 110 : 0.9
+T: 2 5 : 234 : 238 : 0.1
+T: 3 0 : 234 : 234 : 1.0
+T: 3 1 : 234 : 234 : 0.1
+T: 3 1 : 234 : 250 : 0.9
+T: 3 2 : 234 : 202 : 0.9
+T: 3 2 : 234 : 234 : 0.1
+T: 3 3 : 234 : 234 : 1.0
+T: 3 4 : 234 : 238 : 1.0
+T: 3 5 : 234 : 238 : 1.0
+T: 4 0 : 234 : 234 : 1.0
+T: 4 1 : 234 : 234 : 0.1
+T: 4 1 : 234 : 250 : 0.9
+T: 4 2 : 234 : 202 : 0.9
+T: 4 2 : 234 : 234 : 0.1
+T: 4 3 : 234 : 234 : 1.0
+T: 4 4 : 234 : 238 : 1.0
+T: 4 5 : 234 : 238 : 1.0
+T: 5 0 : 234 : 234 : 1.0
+T: 5 1 : 234 : 234 : 0.1
+T: 5 1 : 234 : 250 : 0.9
+T: 5 2 : 234 : 202 : 0.9
+T: 5 2 : 234 : 234 : 0.1
+T: 5 3 : 234 : 234 : 1.0
+T: 5 4 : 234 : 238 : 1.0
+T: 5 5 : 234 : 238 : 1.0
+T: 0 0 : 235 : 171 : 0.9
+T: 0 0 : 235 : 235 : 0.1
+T: 0 1 : 235 : 171 : 0.09
+T: 0 1 : 235 : 187 : 0.81
+T: 0 1 : 235 : 235 : 0.01
+T: 0 1 : 235 : 251 : 0.09
+T: 0 2 : 235 : 139 : 0.81
+T: 0 2 : 235 : 171 : 0.09
+T: 0 2 : 235 : 203 : 0.09
+T: 0 2 : 235 : 235 : 0.01
+T: 0 3 : 235 : 171 : 0.9
+T: 0 3 : 235 : 235 : 0.1
+T: 0 4 : 235 : 0 : 1.0
+T: 0 5 : 235 : 0 : 1.0
+T: 1 0 : 235 : 235 : 1.0
+T: 1 1 : 235 : 235 : 0.1
+T: 1 1 : 235 : 251 : 0.9
+T: 1 2 : 235 : 203 : 0.9
+T: 1 2 : 235 : 235 : 0.1
+T: 1 3 : 235 : 235 : 1.0
+T: 1 4 : 235 : 0 : 1.0
+T: 1 5 : 235 : 0 : 1.0
+T: 2 0 : 235 : 107 : 0.9
+T: 2 0 : 235 : 235 : 0.1
+T: 2 1 : 235 : 107 : 0.09
+T: 2 1 : 235 : 123 : 0.81
+T: 2 1 : 235 : 235 : 0.01
+T: 2 1 : 235 : 251 : 0.09
+T: 2 2 : 235 : 75 : 0.81
+T: 2 2 : 235 : 107 : 0.09
+T: 2 2 : 235 : 203 : 0.09
+T: 2 2 : 235 : 235 : 0.01
+T: 2 3 : 235 : 107 : 0.9
+T: 2 3 : 235 : 235 : 0.1
+T: 2 4 : 235 : 0 : 1.0
+T: 2 5 : 235 : 0 : 1.0
+T: 3 0 : 235 : 235 : 1.0
+T: 3 1 : 235 : 235 : 0.1
+T: 3 1 : 235 : 251 : 0.9
+T: 3 2 : 235 : 203 : 0.9
+T: 3 2 : 235 : 235 : 0.1
+T: 3 3 : 235 : 235 : 1.0
+T: 3 4 : 235 : 0 : 1.0
+T: 3 5 : 235 : 0 : 1.0
+T: 4 0 : 235 : 235 : 1.0
+T: 4 1 : 235 : 235 : 0.1
+T: 4 1 : 235 : 251 : 0.9
+T: 4 2 : 235 : 203 : 0.9
+T: 4 2 : 235 : 235 : 0.1
+T: 4 3 : 235 : 235 : 1.0
+T: 4 4 : 235 : 0 : 1.0
+T: 4 5 : 235 : 0 : 1.0
+T: 5 0 : 235 : 235 : 1.0
+T: 5 1 : 235 : 235 : 0.1
+T: 5 1 : 235 : 251 : 0.9
+T: 5 2 : 235 : 203 : 0.9
+T: 5 2 : 235 : 235 : 0.1
+T: 5 3 : 235 : 235 : 1.0
+T: 5 4 : 235 : 0 : 1.0
+T: 5 5 : 235 : 0 : 1.0
+T: 0 0 : 236 : 172 : 0.9
+T: 0 0 : 236 : 236 : 0.1
+T: 0 1 : 236 : 172 : 0.09
+T: 0 1 : 236 : 188 : 0.81
+T: 0 1 : 236 : 236 : 0.01
+T: 0 1 : 236 : 252 : 0.09
+T: 0 2 : 236 : 140 : 0.81
+T: 0 2 : 236 : 172 : 0.09
+T: 0 2 : 236 : 204 : 0.09
+T: 0 2 : 236 : 236 : 0.01
+T: 0 3 : 236 : 172 : 0.9
+T: 0 3 : 236 : 236 : 0.1
+T: 0 4 : 236 : 172 : 0.9
+T: 0 4 : 236 : 236 : 0.1
+T: 0 5 : 236 : 172 : 0.9
+T: 0 5 : 236 : 236 : 0.1
+T: 1 0 : 236 : 236 : 1.0
+T: 1 1 : 236 : 236 : 0.1
+T: 1 1 : 236 : 252 : 0.9
+T: 1 2 : 236 : 204 : 0.9
+T: 1 2 : 236 : 236 : 0.1
+T: 1 3 : 236 : 236 : 1.0
+T: 1 4 : 236 : 236 : 1.0
+T: 1 5 : 236 : 236 : 1.0
+T: 2 0 : 236 : 108 : 0.9
+T: 2 0 : 236 : 236 : 0.1
+T: 2 1 : 236 : 108 : 0.09
+T: 2 1 : 236 : 124 : 0.81
+T: 2 1 : 236 : 236 : 0.01
+T: 2 1 : 236 : 252 : 0.09
+T: 2 2 : 236 : 76 : 0.81
+T: 2 2 : 236 : 108 : 0.09
+T: 2 2 : 236 : 204 : 0.09
+T: 2 2 : 236 : 236 : 0.01
+T: 2 3 : 236 : 108 : 0.9
+T: 2 3 : 236 : 236 : 0.1
+T: 2 4 : 236 : 108 : 0.9
+T: 2 4 : 236 : 236 : 0.1
+T: 2 5 : 236 : 108 : 0.9
+T: 2 5 : 236 : 236 : 0.1
+T: 3 0 : 236 : 236 : 1.0
+T: 3 1 : 236 : 236 : 0.1
+T: 3 1 : 236 : 252 : 0.9
+T: 3 2 : 236 : 204 : 0.9
+T: 3 2 : 236 : 236 : 0.1
+T: 3 3 : 236 : 236 : 1.0
+T: 3 4 : 236 : 236 : 1.0
+T: 3 5 : 236 : 236 : 1.0
+T: 4 0 : 236 : 236 : 1.0
+T: 4 1 : 236 : 236 : 0.1
+T: 4 1 : 236 : 252 : 0.9
+T: 4 2 : 236 : 204 : 0.9
+T: 4 2 : 236 : 236 : 0.1
+T: 4 3 : 236 : 236 : 1.0
+T: 4 4 : 236 : 236 : 1.0
+T: 4 5 : 236 : 236 : 1.0
+T: 5 0 : 236 : 236 : 1.0
+T: 5 1 : 236 : 236 : 0.1
+T: 5 1 : 236 : 252 : 0.9
+T: 5 2 : 236 : 204 : 0.9
+T: 5 2 : 236 : 236 : 0.1
+T: 5 3 : 236 : 236 : 1.0
+T: 5 4 : 236 : 236 : 1.0
+T: 5 5 : 236 : 236 : 1.0
+T: 0 0 : 237 : 173 : 0.9
+T: 0 0 : 237 : 237 : 0.1
+T: 0 1 : 237 : 173 : 0.09
+T: 0 1 : 237 : 189 : 0.81
+T: 0 1 : 237 : 237 : 0.01
+T: 0 1 : 237 : 253 : 0.09
+T: 0 2 : 237 : 141 : 0.81
+T: 0 2 : 237 : 173 : 0.09
+T: 0 2 : 237 : 205 : 0.09
+T: 0 2 : 237 : 237 : 0.01
+T: 0 3 : 237 : 173 : 0.9
+T: 0 3 : 237 : 237 : 0.1
+T: 0 4 : 237 : 173 : 0.9
+T: 0 4 : 237 : 237 : 0.1
+T: 0 5 : 237 : 173 : 0.9
+T: 0 5 : 237 : 237 : 0.1
+T: 1 0 : 237 : 237 : 1.0
+T: 1 1 : 237 : 237 : 0.1
+T: 1 1 : 237 : 253 : 0.9
+T: 1 2 : 237 : 205 : 0.9
+T: 1 2 : 237 : 237 : 0.1
+T: 1 3 : 237 : 237 : 1.0
+T: 1 4 : 237 : 237 : 1.0
+T: 1 5 : 237 : 237 : 1.0
+T: 2 0 : 237 : 109 : 0.9
+T: 2 0 : 237 : 237 : 0.1
+T: 2 1 : 237 : 109 : 0.09
+T: 2 1 : 237 : 125 : 0.81
+T: 2 1 : 237 : 237 : 0.01
+T: 2 1 : 237 : 253 : 0.09
+T: 2 2 : 237 : 77 : 0.81
+T: 2 2 : 237 : 109 : 0.09
+T: 2 2 : 237 : 205 : 0.09
+T: 2 2 : 237 : 237 : 0.01
+T: 2 3 : 237 : 109 : 0.9
+T: 2 3 : 237 : 237 : 0.1
+T: 2 4 : 237 : 109 : 0.9
+T: 2 4 : 237 : 237 : 0.1
+T: 2 5 : 237 : 109 : 0.9
+T: 2 5 : 237 : 237 : 0.1
+T: 3 0 : 237 : 237 : 1.0
+T: 3 1 : 237 : 237 : 0.1
+T: 3 1 : 237 : 253 : 0.9
+T: 3 2 : 237 : 205 : 0.9
+T: 3 2 : 237 : 237 : 0.1
+T: 3 3 : 237 : 237 : 1.0
+T: 3 4 : 237 : 237 : 1.0
+T: 3 5 : 237 : 237 : 1.0
+T: 4 0 : 237 : 237 : 1.0
+T: 4 1 : 237 : 237 : 0.1
+T: 4 1 : 237 : 253 : 0.9
+T: 4 2 : 237 : 205 : 0.9
+T: 4 2 : 237 : 237 : 0.1
+T: 4 3 : 237 : 237 : 1.0
+T: 4 4 : 237 : 237 : 1.0
+T: 4 5 : 237 : 237 : 1.0
+T: 5 0 : 237 : 237 : 1.0
+T: 5 1 : 237 : 237 : 0.1
+T: 5 1 : 237 : 253 : 0.9
+T: 5 2 : 237 : 205 : 0.9
+T: 5 2 : 237 : 237 : 0.1
+T: 5 3 : 237 : 237 : 1.0
+T: 5 4 : 237 : 237 : 1.0
+T: 5 5 : 237 : 237 : 1.0
+T: 0 0 : 238 : 174 : 0.9
+T: 0 0 : 238 : 238 : 0.1
+T: 0 1 : 238 : 174 : 0.09
+T: 0 1 : 238 : 190 : 0.81
+T: 0 1 : 238 : 238 : 0.01
+T: 0 1 : 238 : 254 : 0.09
+T: 0 2 : 238 : 142 : 0.81
+T: 0 2 : 238 : 174 : 0.09
+T: 0 2 : 238 : 206 : 0.09
+T: 0 2 : 238 : 238 : 0.01
+T: 0 3 : 238 : 174 : 0.9
+T: 0 3 : 238 : 238 : 0.1
+T: 0 4 : 238 : 174 : 0.9
+T: 0 4 : 238 : 238 : 0.1
+T: 0 5 : 238 : 174 : 0.9
+T: 0 5 : 238 : 238 : 0.1
+T: 1 0 : 238 : 238 : 1.0
+T: 1 1 : 238 : 238 : 0.1
+T: 1 1 : 238 : 254 : 0.9
+T: 1 2 : 238 : 206 : 0.9
+T: 1 2 : 238 : 238 : 0.1
+T: 1 3 : 238 : 238 : 1.0
+T: 1 4 : 238 : 238 : 1.0
+T: 1 5 : 238 : 238 : 1.0
+T: 2 0 : 238 : 110 : 0.9
+T: 2 0 : 238 : 238 : 0.1
+T: 2 1 : 238 : 110 : 0.09
+T: 2 1 : 238 : 126 : 0.81
+T: 2 1 : 238 : 238 : 0.01
+T: 2 1 : 238 : 254 : 0.09
+T: 2 2 : 238 : 78 : 0.81
+T: 2 2 : 238 : 110 : 0.09
+T: 2 2 : 238 : 206 : 0.09
+T: 2 2 : 238 : 238 : 0.01
+T: 2 3 : 238 : 110 : 0.9
+T: 2 3 : 238 : 238 : 0.1
+T: 2 4 : 238 : 110 : 0.9
+T: 2 4 : 238 : 238 : 0.1
+T: 2 5 : 238 : 110 : 0.9
+T: 2 5 : 238 : 238 : 0.1
+T: 3 0 : 238 : 238 : 1.0
+T: 3 1 : 238 : 238 : 0.1
+T: 3 1 : 238 : 254 : 0.9
+T: 3 2 : 238 : 206 : 0.9
+T: 3 2 : 238 : 238 : 0.1
+T: 3 3 : 238 : 238 : 1.0
+T: 3 4 : 238 : 238 : 1.0
+T: 3 5 : 238 : 238 : 1.0
+T: 4 0 : 238 : 238 : 1.0
+T: 4 1 : 238 : 238 : 0.1
+T: 4 1 : 238 : 254 : 0.9
+T: 4 2 : 238 : 206 : 0.9
+T: 4 2 : 238 : 238 : 0.1
+T: 4 3 : 238 : 238 : 1.0
+T: 4 4 : 238 : 238 : 1.0
+T: 4 5 : 238 : 238 : 1.0
+T: 5 0 : 238 : 238 : 1.0
+T: 5 1 : 238 : 238 : 0.1
+T: 5 1 : 238 : 254 : 0.9
+T: 5 2 : 238 : 206 : 0.9
+T: 5 2 : 238 : 238 : 0.1
+T: 5 3 : 238 : 238 : 1.0
+T: 5 4 : 238 : 238 : 1.0
+T: 5 5 : 238 : 238 : 1.0
+T: 0 0 : 239 : 175 : 0.9
+T: 0 0 : 239 : 239 : 0.1
+T: 0 1 : 239 : 175 : 0.09
+T: 0 1 : 239 : 191 : 0.81
+T: 0 1 : 239 : 239 : 0.01
+T: 0 1 : 239 : 255 : 0.09
+T: 0 2 : 239 : 143 : 0.81
+T: 0 2 : 239 : 175 : 0.09
+T: 0 2 : 239 : 207 : 0.09
+T: 0 2 : 239 : 239 : 0.01
+T: 0 3 : 239 : 175 : 0.9
+T: 0 3 : 239 : 239 : 0.1
+T: 0 4 : 239 : 0 : 1.0
+T: 0 5 : 239 : 0 : 1.0
+T: 1 0 : 239 : 239 : 1.0
+T: 1 1 : 239 : 239 : 0.1
+T: 1 1 : 239 : 255 : 0.9
+T: 1 2 : 239 : 207 : 0.9
+T: 1 2 : 239 : 239 : 0.1
+T: 1 3 : 239 : 239 : 1.0
+T: 1 4 : 239 : 0 : 1.0
+T: 1 5 : 239 : 0 : 1.0
+T: 2 0 : 239 : 111 : 0.9
+T: 2 0 : 239 : 239 : 0.1
+T: 2 1 : 239 : 111 : 0.09
+T: 2 1 : 239 : 127 : 0.81
+T: 2 1 : 239 : 239 : 0.01
+T: 2 1 : 239 : 255 : 0.09
+T: 2 2 : 239 : 79 : 0.81
+T: 2 2 : 239 : 111 : 0.09
+T: 2 2 : 239 : 207 : 0.09
+T: 2 2 : 239 : 239 : 0.01
+T: 2 3 : 239 : 111 : 0.9
+T: 2 3 : 239 : 239 : 0.1
+T: 2 4 : 239 : 0 : 1.0
+T: 2 5 : 239 : 0 : 1.0
+T: 3 0 : 239 : 239 : 1.0
+T: 3 1 : 239 : 239 : 0.1
+T: 3 1 : 239 : 255 : 0.9
+T: 3 2 : 239 : 207 : 0.9
+T: 3 2 : 239 : 239 : 0.1
+T: 3 3 : 239 : 239 : 1.0
+T: 3 4 : 239 : 0 : 1.0
+T: 3 5 : 239 : 0 : 1.0
+T: 4 0 : 239 : 0 : 1.0
+T: 4 1 : 239 : 0 : 1.0
+T: 4 2 : 239 : 0 : 1.0
+T: 4 3 : 239 : 0 : 1.0
+T: 4 4 : 239 : 0 : 1.0
+T: 4 5 : 239 : 0 : 1.0
+T: 5 0 : 239 : 0 : 1.0
+T: 5 1 : 239 : 0 : 1.0
+T: 5 2 : 239 : 0 : 1.0
+T: 5 3 : 239 : 0 : 1.0
+T: 5 4 : 239 : 0 : 1.0
+T: 5 5 : 239 : 0 : 1.0
+T: 0 0 : 240 : 160 : 0.81
+T: 0 0 : 240 : 176 : 0.09
+T: 0 0 : 240 : 224 : 0.09
+T: 0 0 : 240 : 240 : 0.01
+T: 0 1 : 240 : 176 : 0.9
+T: 0 1 : 240 : 240 : 0.1
+T: 0 2 : 240 : 144 : 0.81
+T: 0 2 : 240 : 176 : 0.09
+T: 0 2 : 240 : 208 : 0.09
+T: 0 2 : 240 : 240 : 0.01
+T: 0 3 : 240 : 176 : 0.9
+T: 0 3 : 240 : 240 : 0.1
+T: 0 4 : 240 : 184 : 0.9
+T: 0 4 : 240 : 248 : 0.1
+T: 0 5 : 240 : 184 : 0.9
+T: 0 5 : 240 : 248 : 0.1
+T: 1 0 : 240 : 224 : 0.9
+T: 1 0 : 240 : 240 : 0.1
+T: 1 1 : 240 : 240 : 1.0
+T: 1 2 : 240 : 208 : 0.9
+T: 1 2 : 240 : 240 : 0.1
+T: 1 3 : 240 : 240 : 1.0
+T: 1 4 : 240 : 248 : 1.0
+T: 1 5 : 240 : 248 : 1.0
+T: 2 0 : 240 : 96 : 0.81
+T: 2 0 : 240 : 112 : 0.09
+T: 2 0 : 240 : 224 : 0.09
+T: 2 0 : 240 : 240 : 0.01
+T: 2 1 : 240 : 112 : 0.9
+T: 2 1 : 240 : 240 : 0.1
+T: 2 2 : 240 : 80 : 0.81
+T: 2 2 : 240 : 112 : 0.09
+T: 2 2 : 240 : 208 : 0.09
+T: 2 2 : 240 : 240 : 0.01
+T: 2 3 : 240 : 112 : 0.9
+T: 2 3 : 240 : 240 : 0.1
+T: 2 4 : 240 : 120 : 0.9
+T: 2 4 : 240 : 248 : 0.1
+T: 2 5 : 240 : 120 : 0.9
+T: 2 5 : 240 : 248 : 0.1
+T: 3 0 : 240 : 224 : 0.9
+T: 3 0 : 240 : 240 : 0.1
+T: 3 1 : 240 : 240 : 1.0
+T: 3 2 : 240 : 208 : 0.9
+T: 3 2 : 240 : 240 : 0.1
+T: 3 3 : 240 : 240 : 1.0
+T: 3 4 : 240 : 248 : 1.0
+T: 3 5 : 240 : 248 : 1.0
+T: 4 0 : 240 : 232 : 0.9
+T: 4 0 : 240 : 248 : 0.1
+T: 4 1 : 240 : 248 : 1.0
+T: 4 2 : 240 : 216 : 0.9
+T: 4 2 : 240 : 248 : 0.1
+T: 4 3 : 240 : 248 : 1.0
+T: 4 4 : 240 : 248 : 1.0
+T: 4 5 : 240 : 248 : 1.0
+T: 5 0 : 240 : 232 : 0.9
+T: 5 0 : 240 : 248 : 0.1
+T: 5 1 : 240 : 248 : 1.0
+T: 5 2 : 240 : 216 : 0.9
+T: 5 2 : 240 : 248 : 0.1
+T: 5 3 : 240 : 248 : 1.0
+T: 5 4 : 240 : 248 : 1.0
+T: 5 5 : 240 : 248 : 1.0
+T: 0 0 : 241 : 161 : 0.81
+T: 0 0 : 241 : 177 : 0.09
+T: 0 0 : 241 : 225 : 0.09
+T: 0 0 : 241 : 241 : 0.01
+T: 0 1 : 241 : 177 : 0.9
+T: 0 1 : 241 : 241 : 0.1
+T: 0 2 : 241 : 145 : 0.81
+T: 0 2 : 241 : 177 : 0.09
+T: 0 2 : 241 : 209 : 0.09
+T: 0 2 : 241 : 241 : 0.01
+T: 0 3 : 241 : 177 : 0.9
+T: 0 3 : 241 : 241 : 0.1
+T: 0 4 : 241 : 185 : 0.9
+T: 0 4 : 241 : 249 : 0.1
+T: 0 5 : 241 : 185 : 0.9
+T: 0 5 : 241 : 249 : 0.1
+T: 1 0 : 241 : 225 : 0.9
+T: 1 0 : 241 : 241 : 0.1
+T: 1 1 : 241 : 241 : 1.0
+T: 1 2 : 241 : 209 : 0.9
+T: 1 2 : 241 : 241 : 0.1
+T: 1 3 : 241 : 241 : 1.0
+T: 1 4 : 241 : 249 : 1.0
+T: 1 5 : 241 : 249 : 1.0
+T: 2 0 : 241 : 97 : 0.81
+T: 2 0 : 241 : 113 : 0.09
+T: 2 0 : 241 : 225 : 0.09
+T: 2 0 : 241 : 241 : 0.01
+T: 2 1 : 241 : 113 : 0.9
+T: 2 1 : 241 : 241 : 0.1
+T: 2 2 : 241 : 81 : 0.81
+T: 2 2 : 241 : 113 : 0.09
+T: 2 2 : 241 : 209 : 0.09
+T: 2 2 : 241 : 241 : 0.01
+T: 2 3 : 241 : 113 : 0.9
+T: 2 3 : 241 : 241 : 0.1
+T: 2 4 : 241 : 121 : 0.9
+T: 2 4 : 241 : 249 : 0.1
+T: 2 5 : 241 : 121 : 0.9
+T: 2 5 : 241 : 249 : 0.1
+T: 3 0 : 241 : 225 : 0.9
+T: 3 0 : 241 : 241 : 0.1
+T: 3 1 : 241 : 241 : 1.0
+T: 3 2 : 241 : 209 : 0.9
+T: 3 2 : 241 : 241 : 0.1
+T: 3 3 : 241 : 241 : 1.0
+T: 3 4 : 241 : 249 : 1.0
+T: 3 5 : 241 : 249 : 1.0
+T: 4 0 : 241 : 233 : 0.9
+T: 4 0 : 241 : 249 : 0.1
+T: 4 1 : 241 : 249 : 1.0
+T: 4 2 : 241 : 217 : 0.9
+T: 4 2 : 241 : 249 : 0.1
+T: 4 3 : 241 : 249 : 1.0
+T: 4 4 : 241 : 249 : 1.0
+T: 4 5 : 241 : 249 : 1.0
+T: 5 0 : 241 : 233 : 0.9
+T: 5 0 : 241 : 249 : 0.1
+T: 5 1 : 241 : 249 : 1.0
+T: 5 2 : 241 : 217 : 0.9
+T: 5 2 : 241 : 249 : 0.1
+T: 5 3 : 241 : 249 : 1.0
+T: 5 4 : 241 : 249 : 1.0
+T: 5 5 : 241 : 249 : 1.0
+T: 0 0 : 242 : 162 : 0.81
+T: 0 0 : 242 : 178 : 0.09
+T: 0 0 : 242 : 226 : 0.09
+T: 0 0 : 242 : 242 : 0.01
+T: 0 1 : 242 : 178 : 0.9
+T: 0 1 : 242 : 242 : 0.1
+T: 0 2 : 242 : 146 : 0.81
+T: 0 2 : 242 : 178 : 0.09
+T: 0 2 : 242 : 210 : 0.09
+T: 0 2 : 242 : 242 : 0.01
+T: 0 3 : 242 : 178 : 0.9
+T: 0 3 : 242 : 242 : 0.1
+T: 0 4 : 242 : 186 : 0.9
+T: 0 4 : 242 : 250 : 0.1
+T: 0 5 : 242 : 186 : 0.9
+T: 0 5 : 242 : 250 : 0.1
+T: 1 0 : 242 : 226 : 0.9
+T: 1 0 : 242 : 242 : 0.1
+T: 1 1 : 242 : 242 : 1.0
+T: 1 2 : 242 : 210 : 0.9
+T: 1 2 : 242 : 242 : 0.1
+T: 1 3 : 242 : 242 : 1.0
+T: 1 4 : 242 : 250 : 1.0
+T: 1 5 : 242 : 250 : 1.0
+T: 2 0 : 242 : 98 : 0.81
+T: 2 0 : 242 : 114 : 0.09
+T: 2 0 : 242 : 226 : 0.09
+T: 2 0 : 242 : 242 : 0.01
+T: 2 1 : 242 : 114 : 0.9
+T: 2 1 : 242 : 242 : 0.1
+T: 2 2 : 242 : 82 : 0.81
+T: 2 2 : 242 : 114 : 0.09
+T: 2 2 : 242 : 210 : 0.09
+T: 2 2 : 242 : 242 : 0.01
+T: 2 3 : 242 : 114 : 0.9
+T: 2 3 : 242 : 242 : 0.1
+T: 2 4 : 242 : 122 : 0.9
+T: 2 4 : 242 : 250 : 0.1
+T: 2 5 : 242 : 122 : 0.9
+T: 2 5 : 242 : 250 : 0.1
+T: 3 0 : 242 : 226 : 0.9
+T: 3 0 : 242 : 242 : 0.1
+T: 3 1 : 242 : 242 : 1.0
+T: 3 2 : 242 : 210 : 0.9
+T: 3 2 : 242 : 242 : 0.1
+T: 3 3 : 242 : 242 : 1.0
+T: 3 4 : 242 : 250 : 1.0
+T: 3 5 : 242 : 250 : 1.0
+T: 4 0 : 242 : 234 : 0.9
+T: 4 0 : 242 : 250 : 0.1
+T: 4 1 : 242 : 250 : 1.0
+T: 4 2 : 242 : 218 : 0.9
+T: 4 2 : 242 : 250 : 0.1
+T: 4 3 : 242 : 250 : 1.0
+T: 4 4 : 242 : 250 : 1.0
+T: 4 5 : 242 : 250 : 1.0
+T: 5 0 : 242 : 234 : 0.9
+T: 5 0 : 242 : 250 : 0.1
+T: 5 1 : 242 : 250 : 1.0
+T: 5 2 : 242 : 218 : 0.9
+T: 5 2 : 242 : 250 : 0.1
+T: 5 3 : 242 : 250 : 1.0
+T: 5 4 : 242 : 250 : 1.0
+T: 5 5 : 242 : 250 : 1.0
+T: 0 0 : 243 : 163 : 0.81
+T: 0 0 : 243 : 179 : 0.09
+T: 0 0 : 243 : 227 : 0.09
+T: 0 0 : 243 : 243 : 0.01
+T: 0 1 : 243 : 179 : 0.9
+T: 0 1 : 243 : 243 : 0.1
+T: 0 2 : 243 : 147 : 0.81
+T: 0 2 : 243 : 179 : 0.09
+T: 0 2 : 243 : 211 : 0.09
+T: 0 2 : 243 : 243 : 0.01
+T: 0 3 : 243 : 179 : 0.9
+T: 0 3 : 243 : 243 : 0.1
+T: 0 4 : 243 : 187 : 0.9
+T: 0 4 : 243 : 251 : 0.1
+T: 0 5 : 243 : 187 : 0.9
+T: 0 5 : 243 : 251 : 0.1
+T: 1 0 : 243 : 227 : 0.9
+T: 1 0 : 243 : 243 : 0.1
+T: 1 1 : 243 : 243 : 1.0
+T: 1 2 : 243 : 211 : 0.9
+T: 1 2 : 243 : 243 : 0.1
+T: 1 3 : 243 : 243 : 1.0
+T: 1 4 : 243 : 251 : 1.0
+T: 1 5 : 243 : 251 : 1.0
+T: 2 0 : 243 : 99 : 0.81
+T: 2 0 : 243 : 115 : 0.09
+T: 2 0 : 243 : 227 : 0.09
+T: 2 0 : 243 : 243 : 0.01
+T: 2 1 : 243 : 115 : 0.9
+T: 2 1 : 243 : 243 : 0.1
+T: 2 2 : 243 : 83 : 0.81
+T: 2 2 : 243 : 115 : 0.09
+T: 2 2 : 243 : 211 : 0.09
+T: 2 2 : 243 : 243 : 0.01
+T: 2 3 : 243 : 115 : 0.9
+T: 2 3 : 243 : 243 : 0.1
+T: 2 4 : 243 : 123 : 0.9
+T: 2 4 : 243 : 251 : 0.1
+T: 2 5 : 243 : 123 : 0.9
+T: 2 5 : 243 : 251 : 0.1
+T: 3 0 : 243 : 227 : 0.9
+T: 3 0 : 243 : 243 : 0.1
+T: 3 1 : 243 : 243 : 1.0
+T: 3 2 : 243 : 211 : 0.9
+T: 3 2 : 243 : 243 : 0.1
+T: 3 3 : 243 : 243 : 1.0
+T: 3 4 : 243 : 251 : 1.0
+T: 3 5 : 243 : 251 : 1.0
+T: 4 0 : 243 : 235 : 0.9
+T: 4 0 : 243 : 251 : 0.1
+T: 4 1 : 243 : 251 : 1.0
+T: 4 2 : 243 : 219 : 0.9
+T: 4 2 : 243 : 251 : 0.1
+T: 4 3 : 243 : 251 : 1.0
+T: 4 4 : 243 : 251 : 1.0
+T: 4 5 : 243 : 251 : 1.0
+T: 5 0 : 243 : 235 : 0.9
+T: 5 0 : 243 : 251 : 0.1
+T: 5 1 : 243 : 251 : 1.0
+T: 5 2 : 243 : 219 : 0.9
+T: 5 2 : 243 : 251 : 0.1
+T: 5 3 : 243 : 251 : 1.0
+T: 5 4 : 243 : 251 : 1.0
+T: 5 5 : 243 : 251 : 1.0
+T: 0 0 : 244 : 164 : 0.81
+T: 0 0 : 244 : 180 : 0.09
+T: 0 0 : 244 : 228 : 0.09
+T: 0 0 : 244 : 244 : 0.01
+T: 0 1 : 244 : 180 : 0.9
+T: 0 1 : 244 : 244 : 0.1
+T: 0 2 : 244 : 148 : 0.81
+T: 0 2 : 244 : 180 : 0.09
+T: 0 2 : 244 : 212 : 0.09
+T: 0 2 : 244 : 244 : 0.01
+T: 0 3 : 244 : 180 : 0.9
+T: 0 3 : 244 : 244 : 0.1
+T: 0 4 : 244 : 188 : 0.9
+T: 0 4 : 244 : 252 : 0.1
+T: 0 5 : 244 : 188 : 0.9
+T: 0 5 : 244 : 252 : 0.1
+T: 1 0 : 244 : 228 : 0.9
+T: 1 0 : 244 : 244 : 0.1
+T: 1 1 : 244 : 244 : 1.0
+T: 1 2 : 244 : 212 : 0.9
+T: 1 2 : 244 : 244 : 0.1
+T: 1 3 : 244 : 244 : 1.0
+T: 1 4 : 244 : 252 : 1.0
+T: 1 5 : 244 : 252 : 1.0
+T: 2 0 : 244 : 100 : 0.81
+T: 2 0 : 244 : 116 : 0.09
+T: 2 0 : 244 : 228 : 0.09
+T: 2 0 : 244 : 244 : 0.01
+T: 2 1 : 244 : 116 : 0.9
+T: 2 1 : 244 : 244 : 0.1
+T: 2 2 : 244 : 84 : 0.81
+T: 2 2 : 244 : 116 : 0.09
+T: 2 2 : 244 : 212 : 0.09
+T: 2 2 : 244 : 244 : 0.01
+T: 2 3 : 244 : 116 : 0.9
+T: 2 3 : 244 : 244 : 0.1
+T: 2 4 : 244 : 124 : 0.9
+T: 2 4 : 244 : 252 : 0.1
+T: 2 5 : 244 : 124 : 0.9
+T: 2 5 : 244 : 252 : 0.1
+T: 3 0 : 244 : 228 : 0.9
+T: 3 0 : 244 : 244 : 0.1
+T: 3 1 : 244 : 244 : 1.0
+T: 3 2 : 244 : 212 : 0.9
+T: 3 2 : 244 : 244 : 0.1
+T: 3 3 : 244 : 244 : 1.0
+T: 3 4 : 244 : 252 : 1.0
+T: 3 5 : 244 : 252 : 1.0
+T: 4 0 : 244 : 236 : 0.9
+T: 4 0 : 244 : 252 : 0.1
+T: 4 1 : 244 : 252 : 1.0
+T: 4 2 : 244 : 220 : 0.9
+T: 4 2 : 244 : 252 : 0.1
+T: 4 3 : 244 : 252 : 1.0
+T: 4 4 : 244 : 252 : 1.0
+T: 4 5 : 244 : 252 : 1.0
+T: 5 0 : 244 : 236 : 0.9
+T: 5 0 : 244 : 252 : 0.1
+T: 5 1 : 244 : 252 : 1.0
+T: 5 2 : 244 : 220 : 0.9
+T: 5 2 : 244 : 252 : 0.1
+T: 5 3 : 244 : 252 : 1.0
+T: 5 4 : 244 : 252 : 1.0
+T: 5 5 : 244 : 252 : 1.0
+T: 0 0 : 245 : 165 : 0.81
+T: 0 0 : 245 : 181 : 0.09
+T: 0 0 : 245 : 229 : 0.09
+T: 0 0 : 245 : 245 : 0.01
+T: 0 1 : 245 : 181 : 0.9
+T: 0 1 : 245 : 245 : 0.1
+T: 0 2 : 245 : 149 : 0.81
+T: 0 2 : 245 : 181 : 0.09
+T: 0 2 : 245 : 213 : 0.09
+T: 0 2 : 245 : 245 : 0.01
+T: 0 3 : 245 : 181 : 0.9
+T: 0 3 : 245 : 245 : 0.1
+T: 0 4 : 245 : 189 : 0.9
+T: 0 4 : 245 : 253 : 0.1
+T: 0 5 : 245 : 189 : 0.9
+T: 0 5 : 245 : 253 : 0.1
+T: 1 0 : 245 : 229 : 0.9
+T: 1 0 : 245 : 245 : 0.1
+T: 1 1 : 245 : 245 : 1.0
+T: 1 2 : 245 : 213 : 0.9
+T: 1 2 : 245 : 245 : 0.1
+T: 1 3 : 245 : 245 : 1.0
+T: 1 4 : 245 : 253 : 1.0
+T: 1 5 : 245 : 253 : 1.0
+T: 2 0 : 245 : 101 : 0.81
+T: 2 0 : 245 : 117 : 0.09
+T: 2 0 : 245 : 229 : 0.09
+T: 2 0 : 245 : 245 : 0.01
+T: 2 1 : 245 : 117 : 0.9
+T: 2 1 : 245 : 245 : 0.1
+T: 2 2 : 245 : 85 : 0.81
+T: 2 2 : 245 : 117 : 0.09
+T: 2 2 : 245 : 213 : 0.09
+T: 2 2 : 245 : 245 : 0.01
+T: 2 3 : 245 : 117 : 0.9
+T: 2 3 : 245 : 245 : 0.1
+T: 2 4 : 245 : 125 : 0.9
+T: 2 4 : 245 : 253 : 0.1
+T: 2 5 : 245 : 125 : 0.9
+T: 2 5 : 245 : 253 : 0.1
+T: 3 0 : 245 : 229 : 0.9
+T: 3 0 : 245 : 245 : 0.1
+T: 3 1 : 245 : 245 : 1.0
+T: 3 2 : 245 : 213 : 0.9
+T: 3 2 : 245 : 245 : 0.1
+T: 3 3 : 245 : 245 : 1.0
+T: 3 4 : 245 : 253 : 1.0
+T: 3 5 : 245 : 253 : 1.0
+T: 4 0 : 245 : 237 : 0.9
+T: 4 0 : 245 : 253 : 0.1
+T: 4 1 : 245 : 253 : 1.0
+T: 4 2 : 245 : 221 : 0.9
+T: 4 2 : 245 : 253 : 0.1
+T: 4 3 : 245 : 253 : 1.0
+T: 4 4 : 245 : 253 : 1.0
+T: 4 5 : 245 : 253 : 1.0
+T: 5 0 : 245 : 237 : 0.9
+T: 5 0 : 245 : 253 : 0.1
+T: 5 1 : 245 : 253 : 1.0
+T: 5 2 : 245 : 221 : 0.9
+T: 5 2 : 245 : 253 : 0.1
+T: 5 3 : 245 : 253 : 1.0
+T: 5 4 : 245 : 253 : 1.0
+T: 5 5 : 245 : 253 : 1.0
+T: 0 0 : 246 : 166 : 0.81
+T: 0 0 : 246 : 182 : 0.09
+T: 0 0 : 246 : 230 : 0.09
+T: 0 0 : 246 : 246 : 0.01
+T: 0 1 : 246 : 182 : 0.9
+T: 0 1 : 246 : 246 : 0.1
+T: 0 2 : 246 : 150 : 0.81
+T: 0 2 : 246 : 182 : 0.09
+T: 0 2 : 246 : 214 : 0.09
+T: 0 2 : 246 : 246 : 0.01
+T: 0 3 : 246 : 182 : 0.9
+T: 0 3 : 246 : 246 : 0.1
+T: 0 4 : 246 : 190 : 0.9
+T: 0 4 : 246 : 254 : 0.1
+T: 0 5 : 246 : 190 : 0.9
+T: 0 5 : 246 : 254 : 0.1
+T: 1 0 : 246 : 230 : 0.9
+T: 1 0 : 246 : 246 : 0.1
+T: 1 1 : 246 : 246 : 1.0
+T: 1 2 : 246 : 214 : 0.9
+T: 1 2 : 246 : 246 : 0.1
+T: 1 3 : 246 : 246 : 1.0
+T: 1 4 : 246 : 254 : 1.0
+T: 1 5 : 246 : 254 : 1.0
+T: 2 0 : 246 : 102 : 0.81
+T: 2 0 : 246 : 118 : 0.09
+T: 2 0 : 246 : 230 : 0.09
+T: 2 0 : 246 : 246 : 0.01
+T: 2 1 : 246 : 118 : 0.9
+T: 2 1 : 246 : 246 : 0.1
+T: 2 2 : 246 : 86 : 0.81
+T: 2 2 : 246 : 118 : 0.09
+T: 2 2 : 246 : 214 : 0.09
+T: 2 2 : 246 : 246 : 0.01
+T: 2 3 : 246 : 118 : 0.9
+T: 2 3 : 246 : 246 : 0.1
+T: 2 4 : 246 : 126 : 0.9
+T: 2 4 : 246 : 254 : 0.1
+T: 2 5 : 246 : 126 : 0.9
+T: 2 5 : 246 : 254 : 0.1
+T: 3 0 : 246 : 230 : 0.9
+T: 3 0 : 246 : 246 : 0.1
+T: 3 1 : 246 : 246 : 1.0
+T: 3 2 : 246 : 214 : 0.9
+T: 3 2 : 246 : 246 : 0.1
+T: 3 3 : 246 : 246 : 1.0
+T: 3 4 : 246 : 254 : 1.0
+T: 3 5 : 246 : 254 : 1.0
+T: 4 0 : 246 : 238 : 0.9
+T: 4 0 : 246 : 254 : 0.1
+T: 4 1 : 246 : 254 : 1.0
+T: 4 2 : 246 : 222 : 0.9
+T: 4 2 : 246 : 254 : 0.1
+T: 4 3 : 246 : 254 : 1.0
+T: 4 4 : 246 : 254 : 1.0
+T: 4 5 : 246 : 254 : 1.0
+T: 5 0 : 246 : 238 : 0.9
+T: 5 0 : 246 : 254 : 0.1
+T: 5 1 : 246 : 254 : 1.0
+T: 5 2 : 246 : 222 : 0.9
+T: 5 2 : 246 : 254 : 0.1
+T: 5 3 : 246 : 254 : 1.0
+T: 5 4 : 246 : 254 : 1.0
+T: 5 5 : 246 : 254 : 1.0
+T: 0 0 : 247 : 167 : 0.81
+T: 0 0 : 247 : 183 : 0.09
+T: 0 0 : 247 : 231 : 0.09
+T: 0 0 : 247 : 247 : 0.01
+T: 0 1 : 247 : 183 : 0.9
+T: 0 1 : 247 : 247 : 0.1
+T: 0 2 : 247 : 151 : 0.81
+T: 0 2 : 247 : 183 : 0.09
+T: 0 2 : 247 : 215 : 0.09
+T: 0 2 : 247 : 247 : 0.01
+T: 0 3 : 247 : 183 : 0.9
+T: 0 3 : 247 : 247 : 0.1
+T: 0 4 : 247 : 0 : 1.0
+T: 0 5 : 247 : 0 : 1.0
+T: 1 0 : 247 : 231 : 0.9
+T: 1 0 : 247 : 247 : 0.1
+T: 1 1 : 247 : 247 : 1.0
+T: 1 2 : 247 : 215 : 0.9
+T: 1 2 : 247 : 247 : 0.1
+T: 1 3 : 247 : 247 : 1.0
+T: 1 4 : 247 : 0 : 1.0
+T: 1 5 : 247 : 0 : 1.0
+T: 2 0 : 247 : 103 : 0.81
+T: 2 0 : 247 : 119 : 0.09
+T: 2 0 : 247 : 231 : 0.09
+T: 2 0 : 247 : 247 : 0.01
+T: 2 1 : 247 : 119 : 0.9
+T: 2 1 : 247 : 247 : 0.1
+T: 2 2 : 247 : 87 : 0.81
+T: 2 2 : 247 : 119 : 0.09
+T: 2 2 : 247 : 215 : 0.09
+T: 2 2 : 247 : 247 : 0.01
+T: 2 3 : 247 : 119 : 0.9
+T: 2 3 : 247 : 247 : 0.1
+T: 2 4 : 247 : 0 : 1.0
+T: 2 5 : 247 : 0 : 1.0
+T: 3 0 : 247 : 231 : 0.9
+T: 3 0 : 247 : 247 : 0.1
+T: 3 1 : 247 : 247 : 1.0
+T: 3 2 : 247 : 215 : 0.9
+T: 3 2 : 247 : 247 : 0.1
+T: 3 3 : 247 : 247 : 1.0
+T: 3 4 : 247 : 0 : 1.0
+T: 3 5 : 247 : 0 : 1.0
+T: 4 0 : 247 : 0 : 1.0
+T: 4 1 : 247 : 0 : 1.0
+T: 4 2 : 247 : 0 : 1.0
+T: 4 3 : 247 : 0 : 1.0
+T: 4 4 : 247 : 0 : 1.0
+T: 4 5 : 247 : 0 : 1.0
+T: 5 0 : 247 : 0 : 1.0
+T: 5 1 : 247 : 0 : 1.0
+T: 5 2 : 247 : 0 : 1.0
+T: 5 3 : 247 : 0 : 1.0
+T: 5 4 : 247 : 0 : 1.0
+T: 5 5 : 247 : 0 : 1.0
+T: 0 0 : 248 : 168 : 0.81
+T: 0 0 : 248 : 184 : 0.09
+T: 0 0 : 248 : 232 : 0.09
+T: 0 0 : 248 : 248 : 0.01
+T: 0 1 : 248 : 184 : 0.9
+T: 0 1 : 248 : 248 : 0.1
+T: 0 2 : 248 : 152 : 0.81
+T: 0 2 : 248 : 184 : 0.09
+T: 0 2 : 248 : 216 : 0.09
+T: 0 2 : 248 : 248 : 0.01
+T: 0 3 : 248 : 184 : 0.9
+T: 0 3 : 248 : 248 : 0.1
+T: 0 4 : 248 : 184 : 0.9
+T: 0 4 : 248 : 248 : 0.1
+T: 0 5 : 248 : 184 : 0.9
+T: 0 5 : 248 : 248 : 0.1
+T: 1 0 : 248 : 232 : 0.9
+T: 1 0 : 248 : 248 : 0.1
+T: 1 1 : 248 : 248 : 1.0
+T: 1 2 : 248 : 216 : 0.9
+T: 1 2 : 248 : 248 : 0.1
+T: 1 3 : 248 : 248 : 1.0
+T: 1 4 : 248 : 248 : 1.0
+T: 1 5 : 248 : 248 : 1.0
+T: 2 0 : 248 : 104 : 0.81
+T: 2 0 : 248 : 120 : 0.09
+T: 2 0 : 248 : 232 : 0.09
+T: 2 0 : 248 : 248 : 0.01
+T: 2 1 : 248 : 120 : 0.9
+T: 2 1 : 248 : 248 : 0.1
+T: 2 2 : 248 : 88 : 0.81
+T: 2 2 : 248 : 120 : 0.09
+T: 2 2 : 248 : 216 : 0.09
+T: 2 2 : 248 : 248 : 0.01
+T: 2 3 : 248 : 120 : 0.9
+T: 2 3 : 248 : 248 : 0.1
+T: 2 4 : 248 : 120 : 0.9
+T: 2 4 : 248 : 248 : 0.1
+T: 2 5 : 248 : 120 : 0.9
+T: 2 5 : 248 : 248 : 0.1
+T: 3 0 : 248 : 232 : 0.9
+T: 3 0 : 248 : 248 : 0.1
+T: 3 1 : 248 : 248 : 1.0
+T: 3 2 : 248 : 216 : 0.9
+T: 3 2 : 248 : 248 : 0.1
+T: 3 3 : 248 : 248 : 1.0
+T: 3 4 : 248 : 248 : 1.0
+T: 3 5 : 248 : 248 : 1.0
+T: 4 0 : 248 : 232 : 0.9
+T: 4 0 : 248 : 248 : 0.1
+T: 4 1 : 248 : 248 : 1.0
+T: 4 2 : 248 : 216 : 0.9
+T: 4 2 : 248 : 248 : 0.1
+T: 4 3 : 248 : 248 : 1.0
+T: 4 4 : 248 : 248 : 1.0
+T: 4 5 : 248 : 248 : 1.0
+T: 5 0 : 248 : 232 : 0.9
+T: 5 0 : 248 : 248 : 0.1
+T: 5 1 : 248 : 248 : 1.0
+T: 5 2 : 248 : 216 : 0.9
+T: 5 2 : 248 : 248 : 0.1
+T: 5 3 : 248 : 248 : 1.0
+T: 5 4 : 248 : 248 : 1.0
+T: 5 5 : 248 : 248 : 1.0
+T: 0 0 : 249 : 169 : 0.81
+T: 0 0 : 249 : 185 : 0.09
+T: 0 0 : 249 : 233 : 0.09
+T: 0 0 : 249 : 249 : 0.01
+T: 0 1 : 249 : 185 : 0.9
+T: 0 1 : 249 : 249 : 0.1
+T: 0 2 : 249 : 153 : 0.81
+T: 0 2 : 249 : 185 : 0.09
+T: 0 2 : 249 : 217 : 0.09
+T: 0 2 : 249 : 249 : 0.01
+T: 0 3 : 249 : 185 : 0.9
+T: 0 3 : 249 : 249 : 0.1
+T: 0 4 : 249 : 185 : 0.9
+T: 0 4 : 249 : 249 : 0.1
+T: 0 5 : 249 : 185 : 0.9
+T: 0 5 : 249 : 249 : 0.1
+T: 1 0 : 249 : 233 : 0.9
+T: 1 0 : 249 : 249 : 0.1
+T: 1 1 : 249 : 249 : 1.0
+T: 1 2 : 249 : 217 : 0.9
+T: 1 2 : 249 : 249 : 0.1
+T: 1 3 : 249 : 249 : 1.0
+T: 1 4 : 249 : 249 : 1.0
+T: 1 5 : 249 : 249 : 1.0
+T: 2 0 : 249 : 105 : 0.81
+T: 2 0 : 249 : 121 : 0.09
+T: 2 0 : 249 : 233 : 0.09
+T: 2 0 : 249 : 249 : 0.01
+T: 2 1 : 249 : 121 : 0.9
+T: 2 1 : 249 : 249 : 0.1
+T: 2 2 : 249 : 89 : 0.81
+T: 2 2 : 249 : 121 : 0.09
+T: 2 2 : 249 : 217 : 0.09
+T: 2 2 : 249 : 249 : 0.01
+T: 2 3 : 249 : 121 : 0.9
+T: 2 3 : 249 : 249 : 0.1
+T: 2 4 : 249 : 121 : 0.9
+T: 2 4 : 249 : 249 : 0.1
+T: 2 5 : 249 : 121 : 0.9
+T: 2 5 : 249 : 249 : 0.1
+T: 3 0 : 249 : 233 : 0.9
+T: 3 0 : 249 : 249 : 0.1
+T: 3 1 : 249 : 249 : 1.0
+T: 3 2 : 249 : 217 : 0.9
+T: 3 2 : 249 : 249 : 0.1
+T: 3 3 : 249 : 249 : 1.0
+T: 3 4 : 249 : 249 : 1.0
+T: 3 5 : 249 : 249 : 1.0
+T: 4 0 : 249 : 233 : 0.9
+T: 4 0 : 249 : 249 : 0.1
+T: 4 1 : 249 : 249 : 1.0
+T: 4 2 : 249 : 217 : 0.9
+T: 4 2 : 249 : 249 : 0.1
+T: 4 3 : 249 : 249 : 1.0
+T: 4 4 : 249 : 249 : 1.0
+T: 4 5 : 249 : 249 : 1.0
+T: 5 0 : 249 : 233 : 0.9
+T: 5 0 : 249 : 249 : 0.1
+T: 5 1 : 249 : 249 : 1.0
+T: 5 2 : 249 : 217 : 0.9
+T: 5 2 : 249 : 249 : 0.1
+T: 5 3 : 249 : 249 : 1.0
+T: 5 4 : 249 : 249 : 1.0
+T: 5 5 : 249 : 249 : 1.0
+T: 0 0 : 250 : 170 : 0.81
+T: 0 0 : 250 : 186 : 0.09
+T: 0 0 : 250 : 234 : 0.09
+T: 0 0 : 250 : 250 : 0.01
+T: 0 1 : 250 : 186 : 0.9
+T: 0 1 : 250 : 250 : 0.1
+T: 0 2 : 250 : 154 : 0.81
+T: 0 2 : 250 : 186 : 0.09
+T: 0 2 : 250 : 218 : 0.09
+T: 0 2 : 250 : 250 : 0.01
+T: 0 3 : 250 : 186 : 0.9
+T: 0 3 : 250 : 250 : 0.1
+T: 0 4 : 250 : 186 : 0.9
+T: 0 4 : 250 : 250 : 0.1
+T: 0 5 : 250 : 186 : 0.9
+T: 0 5 : 250 : 250 : 0.1
+T: 1 0 : 250 : 234 : 0.9
+T: 1 0 : 250 : 250 : 0.1
+T: 1 1 : 250 : 250 : 1.0
+T: 1 2 : 250 : 218 : 0.9
+T: 1 2 : 250 : 250 : 0.1
+T: 1 3 : 250 : 250 : 1.0
+T: 1 4 : 250 : 250 : 1.0
+T: 1 5 : 250 : 250 : 1.0
+T: 2 0 : 250 : 106 : 0.81
+T: 2 0 : 250 : 122 : 0.09
+T: 2 0 : 250 : 234 : 0.09
+T: 2 0 : 250 : 250 : 0.01
+T: 2 1 : 250 : 122 : 0.9
+T: 2 1 : 250 : 250 : 0.1
+T: 2 2 : 250 : 90 : 0.81
+T: 2 2 : 250 : 122 : 0.09
+T: 2 2 : 250 : 218 : 0.09
+T: 2 2 : 250 : 250 : 0.01
+T: 2 3 : 250 : 122 : 0.9
+T: 2 3 : 250 : 250 : 0.1
+T: 2 4 : 250 : 122 : 0.9
+T: 2 4 : 250 : 250 : 0.1
+T: 2 5 : 250 : 122 : 0.9
+T: 2 5 : 250 : 250 : 0.1
+T: 3 0 : 250 : 234 : 0.9
+T: 3 0 : 250 : 250 : 0.1
+T: 3 1 : 250 : 250 : 1.0
+T: 3 2 : 250 : 218 : 0.9
+T: 3 2 : 250 : 250 : 0.1
+T: 3 3 : 250 : 250 : 1.0
+T: 3 4 : 250 : 250 : 1.0
+T: 3 5 : 250 : 250 : 1.0
+T: 4 0 : 250 : 234 : 0.9
+T: 4 0 : 250 : 250 : 0.1
+T: 4 1 : 250 : 250 : 1.0
+T: 4 2 : 250 : 218 : 0.9
+T: 4 2 : 250 : 250 : 0.1
+T: 4 3 : 250 : 250 : 1.0
+T: 4 4 : 250 : 250 : 1.0
+T: 4 5 : 250 : 250 : 1.0
+T: 5 0 : 250 : 234 : 0.9
+T: 5 0 : 250 : 250 : 0.1
+T: 5 1 : 250 : 250 : 1.0
+T: 5 2 : 250 : 218 : 0.9
+T: 5 2 : 250 : 250 : 0.1
+T: 5 3 : 250 : 250 : 1.0
+T: 5 4 : 250 : 250 : 1.0
+T: 5 5 : 250 : 250 : 1.0
+T: 0 0 : 251 : 171 : 0.81
+T: 0 0 : 251 : 187 : 0.09
+T: 0 0 : 251 : 235 : 0.09
+T: 0 0 : 251 : 251 : 0.01
+T: 0 1 : 251 : 187 : 0.9
+T: 0 1 : 251 : 251 : 0.1
+T: 0 2 : 251 : 155 : 0.81
+T: 0 2 : 251 : 187 : 0.09
+T: 0 2 : 251 : 219 : 0.09
+T: 0 2 : 251 : 251 : 0.01
+T: 0 3 : 251 : 187 : 0.9
+T: 0 3 : 251 : 251 : 0.1
+T: 0 4 : 251 : 187 : 0.9
+T: 0 4 : 251 : 251 : 0.1
+T: 0 5 : 251 : 187 : 0.9
+T: 0 5 : 251 : 251 : 0.1
+T: 1 0 : 251 : 235 : 0.9
+T: 1 0 : 251 : 251 : 0.1
+T: 1 1 : 251 : 251 : 1.0
+T: 1 2 : 251 : 219 : 0.9
+T: 1 2 : 251 : 251 : 0.1
+T: 1 3 : 251 : 251 : 1.0
+T: 1 4 : 251 : 251 : 1.0
+T: 1 5 : 251 : 251 : 1.0
+T: 2 0 : 251 : 107 : 0.81
+T: 2 0 : 251 : 123 : 0.09
+T: 2 0 : 251 : 235 : 0.09
+T: 2 0 : 251 : 251 : 0.01
+T: 2 1 : 251 : 123 : 0.9
+T: 2 1 : 251 : 251 : 0.1
+T: 2 2 : 251 : 91 : 0.81
+T: 2 2 : 251 : 123 : 0.09
+T: 2 2 : 251 : 219 : 0.09
+T: 2 2 : 251 : 251 : 0.01
+T: 2 3 : 251 : 123 : 0.9
+T: 2 3 : 251 : 251 : 0.1
+T: 2 4 : 251 : 123 : 0.9
+T: 2 4 : 251 : 251 : 0.1
+T: 2 5 : 251 : 123 : 0.9
+T: 2 5 : 251 : 251 : 0.1
+T: 3 0 : 251 : 235 : 0.9
+T: 3 0 : 251 : 251 : 0.1
+T: 3 1 : 251 : 251 : 1.0
+T: 3 2 : 251 : 219 : 0.9
+T: 3 2 : 251 : 251 : 0.1
+T: 3 3 : 251 : 251 : 1.0
+T: 3 4 : 251 : 251 : 1.0
+T: 3 5 : 251 : 251 : 1.0
+T: 4 0 : 251 : 235 : 0.9
+T: 4 0 : 251 : 251 : 0.1
+T: 4 1 : 251 : 251 : 1.0
+T: 4 2 : 251 : 219 : 0.9
+T: 4 2 : 251 : 251 : 0.1
+T: 4 3 : 251 : 251 : 1.0
+T: 4 4 : 251 : 251 : 1.0
+T: 4 5 : 251 : 251 : 1.0
+T: 5 0 : 251 : 235 : 0.9
+T: 5 0 : 251 : 251 : 0.1
+T: 5 1 : 251 : 251 : 1.0
+T: 5 2 : 251 : 219 : 0.9
+T: 5 2 : 251 : 251 : 0.1
+T: 5 3 : 251 : 251 : 1.0
+T: 5 4 : 251 : 251 : 1.0
+T: 5 5 : 251 : 251 : 1.0
+T: 0 0 : 252 : 172 : 0.81
+T: 0 0 : 252 : 188 : 0.09
+T: 0 0 : 252 : 236 : 0.09
+T: 0 0 : 252 : 252 : 0.01
+T: 0 1 : 252 : 188 : 0.9
+T: 0 1 : 252 : 252 : 0.1
+T: 0 2 : 252 : 156 : 0.81
+T: 0 2 : 252 : 188 : 0.09
+T: 0 2 : 252 : 220 : 0.09
+T: 0 2 : 252 : 252 : 0.01
+T: 0 3 : 252 : 188 : 0.9
+T: 0 3 : 252 : 252 : 0.1
+T: 0 4 : 252 : 188 : 0.9
+T: 0 4 : 252 : 252 : 0.1
+T: 0 5 : 252 : 188 : 0.9
+T: 0 5 : 252 : 252 : 0.1
+T: 1 0 : 252 : 236 : 0.9
+T: 1 0 : 252 : 252 : 0.1
+T: 1 1 : 252 : 252 : 1.0
+T: 1 2 : 252 : 220 : 0.9
+T: 1 2 : 252 : 252 : 0.1
+T: 1 3 : 252 : 252 : 1.0
+T: 1 4 : 252 : 252 : 1.0
+T: 1 5 : 252 : 252 : 1.0
+T: 2 0 : 252 : 108 : 0.81
+T: 2 0 : 252 : 124 : 0.09
+T: 2 0 : 252 : 236 : 0.09
+T: 2 0 : 252 : 252 : 0.01
+T: 2 1 : 252 : 124 : 0.9
+T: 2 1 : 252 : 252 : 0.1
+T: 2 2 : 252 : 92 : 0.81
+T: 2 2 : 252 : 124 : 0.09
+T: 2 2 : 252 : 220 : 0.09
+T: 2 2 : 252 : 252 : 0.01
+T: 2 3 : 252 : 124 : 0.9
+T: 2 3 : 252 : 252 : 0.1
+T: 2 4 : 252 : 124 : 0.9
+T: 2 4 : 252 : 252 : 0.1
+T: 2 5 : 252 : 124 : 0.9
+T: 2 5 : 252 : 252 : 0.1
+T: 3 0 : 252 : 236 : 0.9
+T: 3 0 : 252 : 252 : 0.1
+T: 3 1 : 252 : 252 : 1.0
+T: 3 2 : 252 : 220 : 0.9
+T: 3 2 : 252 : 252 : 0.1
+T: 3 3 : 252 : 252 : 1.0
+T: 3 4 : 252 : 252 : 1.0
+T: 3 5 : 252 : 252 : 1.0
+T: 4 0 : 252 : 236 : 0.9
+T: 4 0 : 252 : 252 : 0.1
+T: 4 1 : 252 : 252 : 1.0
+T: 4 2 : 252 : 220 : 0.9
+T: 4 2 : 252 : 252 : 0.1
+T: 4 3 : 252 : 252 : 1.0
+T: 4 4 : 252 : 252 : 1.0
+T: 4 5 : 252 : 252 : 1.0
+T: 5 0 : 252 : 236 : 0.9
+T: 5 0 : 252 : 252 : 0.1
+T: 5 1 : 252 : 252 : 1.0
+T: 5 2 : 252 : 220 : 0.9
+T: 5 2 : 252 : 252 : 0.1
+T: 5 3 : 252 : 252 : 1.0
+T: 5 4 : 252 : 252 : 1.0
+T: 5 5 : 252 : 252 : 1.0
+T: 0 0 : 253 : 173 : 0.81
+T: 0 0 : 253 : 189 : 0.09
+T: 0 0 : 253 : 237 : 0.09
+T: 0 0 : 253 : 253 : 0.01
+T: 0 1 : 253 : 189 : 0.9
+T: 0 1 : 253 : 253 : 0.1
+T: 0 2 : 253 : 157 : 0.81
+T: 0 2 : 253 : 189 : 0.09
+T: 0 2 : 253 : 221 : 0.09
+T: 0 2 : 253 : 253 : 0.01
+T: 0 3 : 253 : 189 : 0.9
+T: 0 3 : 253 : 253 : 0.1
+T: 0 4 : 253 : 189 : 0.9
+T: 0 4 : 253 : 253 : 0.1
+T: 0 5 : 253 : 189 : 0.9
+T: 0 5 : 253 : 253 : 0.1
+T: 1 0 : 253 : 237 : 0.9
+T: 1 0 : 253 : 253 : 0.1
+T: 1 1 : 253 : 253 : 1.0
+T: 1 2 : 253 : 221 : 0.9
+T: 1 2 : 253 : 253 : 0.1
+T: 1 3 : 253 : 253 : 1.0
+T: 1 4 : 253 : 253 : 1.0
+T: 1 5 : 253 : 253 : 1.0
+T: 2 0 : 253 : 109 : 0.81
+T: 2 0 : 253 : 125 : 0.09
+T: 2 0 : 253 : 237 : 0.09
+T: 2 0 : 253 : 253 : 0.01
+T: 2 1 : 253 : 125 : 0.9
+T: 2 1 : 253 : 253 : 0.1
+T: 2 2 : 253 : 93 : 0.81
+T: 2 2 : 253 : 125 : 0.09
+T: 2 2 : 253 : 221 : 0.09
+T: 2 2 : 253 : 253 : 0.01
+T: 2 3 : 253 : 125 : 0.9
+T: 2 3 : 253 : 253 : 0.1
+T: 2 4 : 253 : 125 : 0.9
+T: 2 4 : 253 : 253 : 0.1
+T: 2 5 : 253 : 125 : 0.9
+T: 2 5 : 253 : 253 : 0.1
+T: 3 0 : 253 : 237 : 0.9
+T: 3 0 : 253 : 253 : 0.1
+T: 3 1 : 253 : 253 : 1.0
+T: 3 2 : 253 : 221 : 0.9
+T: 3 2 : 253 : 253 : 0.1
+T: 3 3 : 253 : 253 : 1.0
+T: 3 4 : 253 : 253 : 1.0
+T: 3 5 : 253 : 253 : 1.0
+T: 4 0 : 253 : 237 : 0.9
+T: 4 0 : 253 : 253 : 0.1
+T: 4 1 : 253 : 253 : 1.0
+T: 4 2 : 253 : 221 : 0.9
+T: 4 2 : 253 : 253 : 0.1
+T: 4 3 : 253 : 253 : 1.0
+T: 4 4 : 253 : 253 : 1.0
+T: 4 5 : 253 : 253 : 1.0
+T: 5 0 : 253 : 237 : 0.9
+T: 5 0 : 253 : 253 : 0.1
+T: 5 1 : 253 : 253 : 1.0
+T: 5 2 : 253 : 221 : 0.9
+T: 5 2 : 253 : 253 : 0.1
+T: 5 3 : 253 : 253 : 1.0
+T: 5 4 : 253 : 253 : 1.0
+T: 5 5 : 253 : 253 : 1.0
+T: 0 0 : 254 : 174 : 0.81
+T: 0 0 : 254 : 190 : 0.09
+T: 0 0 : 254 : 238 : 0.09
+T: 0 0 : 254 : 254 : 0.01
+T: 0 1 : 254 : 190 : 0.9
+T: 0 1 : 254 : 254 : 0.1
+T: 0 2 : 254 : 158 : 0.81
+T: 0 2 : 254 : 190 : 0.09
+T: 0 2 : 254 : 222 : 0.09
+T: 0 2 : 254 : 254 : 0.01
+T: 0 3 : 254 : 190 : 0.9
+T: 0 3 : 254 : 254 : 0.1
+T: 0 4 : 254 : 190 : 0.9
+T: 0 4 : 254 : 254 : 0.1
+T: 0 5 : 254 : 190 : 0.9
+T: 0 5 : 254 : 254 : 0.1
+T: 1 0 : 254 : 238 : 0.9
+T: 1 0 : 254 : 254 : 0.1
+T: 1 1 : 254 : 254 : 1.0
+T: 1 2 : 254 : 222 : 0.9
+T: 1 2 : 254 : 254 : 0.1
+T: 1 3 : 254 : 254 : 1.0
+T: 1 4 : 254 : 254 : 1.0
+T: 1 5 : 254 : 254 : 1.0
+T: 2 0 : 254 : 110 : 0.81
+T: 2 0 : 254 : 126 : 0.09
+T: 2 0 : 254 : 238 : 0.09
+T: 2 0 : 254 : 254 : 0.01
+T: 2 1 : 254 : 126 : 0.9
+T: 2 1 : 254 : 254 : 0.1
+T: 2 2 : 254 : 94 : 0.81
+T: 2 2 : 254 : 126 : 0.09
+T: 2 2 : 254 : 222 : 0.09
+T: 2 2 : 254 : 254 : 0.01
+T: 2 3 : 254 : 126 : 0.9
+T: 2 3 : 254 : 254 : 0.1
+T: 2 4 : 254 : 126 : 0.9
+T: 2 4 : 254 : 254 : 0.1
+T: 2 5 : 254 : 126 : 0.9
+T: 2 5 : 254 : 254 : 0.1
+T: 3 0 : 254 : 238 : 0.9
+T: 3 0 : 254 : 254 : 0.1
+T: 3 1 : 254 : 254 : 1.0
+T: 3 2 : 254 : 222 : 0.9
+T: 3 2 : 254 : 254 : 0.1
+T: 3 3 : 254 : 254 : 1.0
+T: 3 4 : 254 : 254 : 1.0
+T: 3 5 : 254 : 254 : 1.0
+T: 4 0 : 254 : 238 : 0.9
+T: 4 0 : 254 : 254 : 0.1
+T: 4 1 : 254 : 254 : 1.0
+T: 4 2 : 254 : 222 : 0.9
+T: 4 2 : 254 : 254 : 0.1
+T: 4 3 : 254 : 254 : 1.0
+T: 4 4 : 254 : 254 : 1.0
+T: 4 5 : 254 : 254 : 1.0
+T: 5 0 : 254 : 238 : 0.9
+T: 5 0 : 254 : 254 : 0.1
+T: 5 1 : 254 : 254 : 1.0
+T: 5 2 : 254 : 222 : 0.9
+T: 5 2 : 254 : 254 : 0.1
+T: 5 3 : 254 : 254 : 1.0
+T: 5 4 : 254 : 254 : 1.0
+T: 5 5 : 254 : 254 : 1.0
+T: 0 0 : 255 : 175 : 0.81
+T: 0 0 : 255 : 191 : 0.09
+T: 0 0 : 255 : 239 : 0.09
+T: 0 0 : 255 : 255 : 0.01
+T: 0 1 : 255 : 191 : 0.9
+T: 0 1 : 255 : 255 : 0.1
+T: 0 2 : 255 : 159 : 0.81
+T: 0 2 : 255 : 191 : 0.09
+T: 0 2 : 255 : 223 : 0.09
+T: 0 2 : 255 : 255 : 0.01
+T: 0 3 : 255 : 191 : 0.9
+T: 0 3 : 255 : 255 : 0.1
+T: 0 4 : 255 : 0 : 1.0
+T: 0 5 : 255 : 0 : 1.0
+T: 1 0 : 255 : 239 : 0.9
+T: 1 0 : 255 : 255 : 0.1
+T: 1 1 : 255 : 255 : 1.0
+T: 1 2 : 255 : 223 : 0.9
+T: 1 2 : 255 : 255 : 0.1
+T: 1 3 : 255 : 255 : 1.0
+T: 1 4 : 255 : 0 : 1.0
+T: 1 5 : 255 : 0 : 1.0
+T: 2 0 : 255 : 111 : 0.81
+T: 2 0 : 255 : 127 : 0.09
+T: 2 0 : 255 : 239 : 0.09
+T: 2 0 : 255 : 255 : 0.01
+T: 2 1 : 255 : 127 : 0.9
+T: 2 1 : 255 : 255 : 0.1
+T: 2 2 : 255 : 95 : 0.81
+T: 2 2 : 255 : 127 : 0.09
+T: 2 2 : 255 : 223 : 0.09
+T: 2 2 : 255 : 255 : 0.01
+T: 2 3 : 255 : 127 : 0.9
+T: 2 3 : 255 : 255 : 0.1
+T: 2 4 : 255 : 0 : 1.0
+T: 2 5 : 255 : 0 : 1.0
+T: 3 0 : 255 : 239 : 0.9
+T: 3 0 : 255 : 255 : 0.1
+T: 3 1 : 255 : 255 : 1.0
+T: 3 2 : 255 : 223 : 0.9
+T: 3 2 : 255 : 255 : 0.1
+T: 3 3 : 255 : 255 : 1.0
+T: 3 4 : 255 : 0 : 1.0
+T: 3 5 : 255 : 0 : 1.0
+T: 4 0 : 255 : 0 : 1.0
+T: 4 1 : 255 : 0 : 1.0
+T: 4 2 : 255 : 0 : 1.0
+T: 4 3 : 255 : 0 : 1.0
+T: 4 4 : 255 : 0 : 1.0
+T: 4 5 : 255 : 0 : 1.0
+T: 5 0 : 255 : 0 : 1.0
+T: 5 1 : 255 : 0 : 1.0
+T: 5 2 : 255 : 0 : 1.0
+T: 5 3 : 255 : 0 : 1.0
+T: 5 4 : 255 : 0 : 1.0
+T: 5 5 : 255 : 0 : 1.0
+O: 0 0 : 0 : 0 0 : 1.0
+O: 0 0 : 2 : 0 0 : 1.0
+O: 0 0 : 4 : 0 0 : 1.0
+O: 0 0 : 6 : 0 0 : 1.0
+O: 0 0 : 8 : 0 0 : 1.0
+O: 0 0 : 10 : 0 0 : 1.0
+O: 0 0 : 12 : 0 0 : 1.0
+O: 0 0 : 14 : 0 0 : 1.0
+O: 0 1 : 0 : 0 0 : 1.0
+O: 0 1 : 2 : 0 0 : 1.0
+O: 0 1 : 4 : 0 0 : 1.0
+O: 0 1 : 6 : 0 0 : 1.0
+O: 0 1 : 8 : 0 0 : 1.0
+O: 0 1 : 10 : 0 0 : 1.0
+O: 0 1 : 12 : 0 0 : 1.0
+O: 0 1 : 14 : 0 0 : 1.0
+O: 0 2 : 0 : 0 0 : 1.0
+O: 0 2 : 2 : 0 0 : 1.0
+O: 0 2 : 4 : 0 0 : 1.0
+O: 0 2 : 6 : 0 0 : 1.0
+O: 0 2 : 8 : 0 0 : 1.0
+O: 0 2 : 10 : 0 0 : 1.0
+O: 0 2 : 12 : 0 0 : 1.0
+O: 0 2 : 14 : 0 0 : 1.0
+O: 0 3 : 0 : 0 0 : 1.0
+O: 0 3 : 2 : 0 0 : 1.0
+O: 0 3 : 4 : 0 0 : 1.0
+O: 0 3 : 6 : 0 0 : 1.0
+O: 0 3 : 8 : 0 0 : 1.0
+O: 0 3 : 10 : 0 0 : 1.0
+O: 0 3 : 12 : 0 0 : 1.0
+O: 0 3 : 14 : 0 0 : 1.0
+O: 0 4 : 0 : 0 0 : 1.0
+O: 0 4 : 2 : 0 0 : 1.0
+O: 0 4 : 4 : 0 0 : 1.0
+O: 0 4 : 6 : 0 0 : 1.0
+O: 0 4 : 8 : 0 0 : 1.0
+O: 0 4 : 10 : 0 0 : 1.0
+O: 0 4 : 12 : 0 0 : 1.0
+O: 0 4 : 14 : 0 0 : 1.0
+O: 0 5 : 0 : 0 0 : 1.0
+O: 0 5 : 2 : 0 0 : 1.0
+O: 0 5 : 4 : 0 0 : 1.0
+O: 0 5 : 6 : 0 0 : 1.0
+O: 0 5 : 8 : 0 0 : 1.0
+O: 0 5 : 10 : 0 0 : 1.0
+O: 0 5 : 12 : 0 0 : 1.0
+O: 0 5 : 14 : 0 0 : 1.0
+O: 1 0 : 0 : 0 0 : 1.0
+O: 1 0 : 2 : 0 0 : 1.0
+O: 1 0 : 4 : 0 0 : 1.0
+O: 1 0 : 6 : 0 0 : 1.0
+O: 1 0 : 8 : 0 0 : 1.0
+O: 1 0 : 10 : 0 0 : 1.0
+O: 1 0 : 12 : 0 0 : 1.0
+O: 1 0 : 14 : 0 0 : 1.0
+O: 1 1 : 0 : 0 0 : 1.0
+O: 1 1 : 2 : 0 0 : 1.0
+O: 1 1 : 4 : 0 0 : 1.0
+O: 1 1 : 6 : 0 0 : 1.0
+O: 1 1 : 8 : 0 0 : 1.0
+O: 1 1 : 10 : 0 0 : 1.0
+O: 1 1 : 12 : 0 0 : 1.0
+O: 1 1 : 14 : 0 0 : 1.0
+O: 1 2 : 0 : 0 0 : 1.0
+O: 1 2 : 2 : 0 0 : 1.0
+O: 1 2 : 4 : 0 0 : 1.0
+O: 1 2 : 6 : 0 0 : 1.0
+O: 1 2 : 8 : 0 0 : 1.0
+O: 1 2 : 10 : 0 0 : 1.0
+O: 1 2 : 12 : 0 0 : 1.0
+O: 1 2 : 14 : 0 0 : 1.0
+O: 1 3 : 0 : 0 0 : 1.0
+O: 1 3 : 2 : 0 0 : 1.0
+O: 1 3 : 4 : 0 0 : 1.0
+O: 1 3 : 6 : 0 0 : 1.0
+O: 1 3 : 8 : 0 0 : 1.0
+O: 1 3 : 10 : 0 0 : 1.0
+O: 1 3 : 12 : 0 0 : 1.0
+O: 1 3 : 14 : 0 0 : 1.0
+O: 1 4 : 0 : 0 0 : 1.0
+O: 1 4 : 2 : 0 0 : 1.0
+O: 1 4 : 4 : 0 0 : 1.0
+O: 1 4 : 6 : 0 0 : 1.0
+O: 1 4 : 8 : 0 0 : 1.0
+O: 1 4 : 10 : 0 0 : 1.0
+O: 1 4 : 12 : 0 0 : 1.0
+O: 1 4 : 14 : 0 0 : 1.0
+O: 1 5 : 0 : 0 0 : 1.0
+O: 1 5 : 2 : 0 0 : 1.0
+O: 1 5 : 4 : 0 0 : 1.0
+O: 1 5 : 6 : 0 0 : 1.0
+O: 1 5 : 8 : 0 0 : 1.0
+O: 1 5 : 10 : 0 0 : 1.0
+O: 1 5 : 12 : 0 0 : 1.0
+O: 1 5 : 14 : 0 0 : 1.0
+O: 2 0 : 0 : 0 0 : 1.0
+O: 2 0 : 2 : 0 0 : 1.0
+O: 2 0 : 4 : 0 0 : 1.0
+O: 2 0 : 6 : 0 0 : 1.0
+O: 2 0 : 8 : 0 0 : 1.0
+O: 2 0 : 10 : 0 0 : 1.0
+O: 2 0 : 12 : 0 0 : 1.0
+O: 2 0 : 14 : 0 0 : 1.0
+O: 2 1 : 0 : 0 0 : 1.0
+O: 2 1 : 2 : 0 0 : 1.0
+O: 2 1 : 4 : 0 0 : 1.0
+O: 2 1 : 6 : 0 0 : 1.0
+O: 2 1 : 8 : 0 0 : 1.0
+O: 2 1 : 10 : 0 0 : 1.0
+O: 2 1 : 12 : 0 0 : 1.0
+O: 2 1 : 14 : 0 0 : 1.0
+O: 2 2 : 0 : 0 0 : 1.0
+O: 2 2 : 2 : 0 0 : 1.0
+O: 2 2 : 4 : 0 0 : 1.0
+O: 2 2 : 6 : 0 0 : 1.0
+O: 2 2 : 8 : 0 0 : 1.0
+O: 2 2 : 10 : 0 0 : 1.0
+O: 2 2 : 12 : 0 0 : 1.0
+O: 2 2 : 14 : 0 0 : 1.0
+O: 2 3 : 0 : 0 0 : 1.0
+O: 2 3 : 2 : 0 0 : 1.0
+O: 2 3 : 4 : 0 0 : 1.0
+O: 2 3 : 6 : 0 0 : 1.0
+O: 2 3 : 8 : 0 0 : 1.0
+O: 2 3 : 10 : 0 0 : 1.0
+O: 2 3 : 12 : 0 0 : 1.0
+O: 2 3 : 14 : 0 0 : 1.0
+O: 2 4 : 0 : 0 0 : 1.0
+O: 2 4 : 2 : 0 0 : 1.0
+O: 2 4 : 4 : 0 0 : 1.0
+O: 2 4 : 6 : 0 0 : 1.0
+O: 2 4 : 8 : 0 0 : 1.0
+O: 2 4 : 10 : 0 0 : 1.0
+O: 2 4 : 12 : 0 0 : 1.0
+O: 2 4 : 14 : 0 0 : 1.0
+O: 2 5 : 0 : 0 0 : 1.0
+O: 2 5 : 2 : 0 0 : 1.0
+O: 2 5 : 4 : 0 0 : 1.0
+O: 2 5 : 6 : 0 0 : 1.0
+O: 2 5 : 8 : 0 0 : 1.0
+O: 2 5 : 10 : 0 0 : 1.0
+O: 2 5 : 12 : 0 0 : 1.0
+O: 2 5 : 14 : 0 0 : 1.0
+O: 3 0 : 0 : 0 0 : 1.0
+O: 3 0 : 2 : 0 0 : 1.0
+O: 3 0 : 4 : 0 0 : 1.0
+O: 3 0 : 6 : 0 0 : 1.0
+O: 3 0 : 8 : 0 0 : 1.0
+O: 3 0 : 10 : 0 0 : 1.0
+O: 3 0 : 12 : 0 0 : 1.0
+O: 3 0 : 14 : 0 0 : 1.0
+O: 3 1 : 0 : 0 0 : 1.0
+O: 3 1 : 2 : 0 0 : 1.0
+O: 3 1 : 4 : 0 0 : 1.0
+O: 3 1 : 6 : 0 0 : 1.0
+O: 3 1 : 8 : 0 0 : 1.0
+O: 3 1 : 10 : 0 0 : 1.0
+O: 3 1 : 12 : 0 0 : 1.0
+O: 3 1 : 14 : 0 0 : 1.0
+O: 3 2 : 0 : 0 0 : 1.0
+O: 3 2 : 2 : 0 0 : 1.0
+O: 3 2 : 4 : 0 0 : 1.0
+O: 3 2 : 6 : 0 0 : 1.0
+O: 3 2 : 8 : 0 0 : 1.0
+O: 3 2 : 10 : 0 0 : 1.0
+O: 3 2 : 12 : 0 0 : 1.0
+O: 3 2 : 14 : 0 0 : 1.0
+O: 3 3 : 0 : 0 0 : 1.0
+O: 3 3 : 2 : 0 0 : 1.0
+O: 3 3 : 4 : 0 0 : 1.0
+O: 3 3 : 6 : 0 0 : 1.0
+O: 3 3 : 8 : 0 0 : 1.0
+O: 3 3 : 10 : 0 0 : 1.0
+O: 3 3 : 12 : 0 0 : 1.0
+O: 3 3 : 14 : 0 0 : 1.0
+O: 3 4 : 0 : 0 0 : 1.0
+O: 3 4 : 2 : 0 0 : 1.0
+O: 3 4 : 4 : 0 0 : 1.0
+O: 3 4 : 6 : 0 0 : 1.0
+O: 3 4 : 8 : 0 0 : 1.0
+O: 3 4 : 10 : 0 0 : 1.0
+O: 3 4 : 12 : 0 0 : 1.0
+O: 3 4 : 14 : 0 0 : 1.0
+O: 3 5 : 0 : 0 0 : 1.0
+O: 3 5 : 2 : 0 0 : 1.0
+O: 3 5 : 4 : 0 0 : 1.0
+O: 3 5 : 6 : 0 0 : 1.0
+O: 3 5 : 8 : 0 0 : 1.0
+O: 3 5 : 10 : 0 0 : 1.0
+O: 3 5 : 12 : 0 0 : 1.0
+O: 3 5 : 14 : 0 0 : 1.0
+O: 4 0 : 0 : 0 0 : 1.0
+O: 4 0 : 2 : 0 0 : 1.0
+O: 4 0 : 4 : 0 0 : 1.0
+O: 4 0 : 6 : 0 0 : 1.0
+O: 4 0 : 8 : 0 0 : 1.0
+O: 4 0 : 10 : 0 0 : 1.0
+O: 4 0 : 12 : 0 0 : 1.0
+O: 4 0 : 14 : 0 0 : 1.0
+O: 4 1 : 0 : 0 0 : 1.0
+O: 4 1 : 2 : 0 0 : 1.0
+O: 4 1 : 4 : 0 0 : 1.0
+O: 4 1 : 6 : 0 0 : 1.0
+O: 4 1 : 8 : 0 0 : 1.0
+O: 4 1 : 10 : 0 0 : 1.0
+O: 4 1 : 12 : 0 0 : 1.0
+O: 4 1 : 14 : 0 0 : 1.0
+O: 4 2 : 0 : 0 0 : 1.0
+O: 4 2 : 2 : 0 0 : 1.0
+O: 4 2 : 4 : 0 0 : 1.0
+O: 4 2 : 6 : 0 0 : 1.0
+O: 4 2 : 8 : 0 0 : 1.0
+O: 4 2 : 10 : 0 0 : 1.0
+O: 4 2 : 12 : 0 0 : 1.0
+O: 4 2 : 14 : 0 0 : 1.0
+O: 4 3 : 0 : 0 0 : 1.0
+O: 4 3 : 2 : 0 0 : 1.0
+O: 4 3 : 4 : 0 0 : 1.0
+O: 4 3 : 6 : 0 0 : 1.0
+O: 4 3 : 8 : 0 0 : 1.0
+O: 4 3 : 10 : 0 0 : 1.0
+O: 4 3 : 12 : 0 0 : 1.0
+O: 4 3 : 14 : 0 0 : 1.0
+O: 4 4 : 0 : 0 0 : 1.0
+O: 4 4 : 2 : 0 0 : 1.0
+O: 4 4 : 4 : 0 0 : 1.0
+O: 4 4 : 6 : 0 0 : 1.0
+O: 4 4 : 8 : 0 0 : 1.0
+O: 4 4 : 10 : 0 0 : 1.0
+O: 4 4 : 12 : 0 0 : 1.0
+O: 4 4 : 14 : 0 0 : 1.0
+O: 4 5 : 0 : 0 0 : 1.0
+O: 4 5 : 2 : 0 0 : 1.0
+O: 4 5 : 4 : 0 0 : 1.0
+O: 4 5 : 6 : 0 0 : 1.0
+O: 4 5 : 8 : 0 0 : 1.0
+O: 4 5 : 10 : 0 0 : 1.0
+O: 4 5 : 12 : 0 0 : 1.0
+O: 4 5 : 14 : 0 0 : 1.0
+O: 5 0 : 0 : 0 0 : 1.0
+O: 5 0 : 2 : 0 0 : 1.0
+O: 5 0 : 4 : 0 0 : 1.0
+O: 5 0 : 6 : 0 0 : 1.0
+O: 5 0 : 8 : 0 0 : 1.0
+O: 5 0 : 10 : 0 0 : 1.0
+O: 5 0 : 12 : 0 0 : 1.0
+O: 5 0 : 14 : 0 0 : 1.0
+O: 5 1 : 0 : 0 0 : 1.0
+O: 5 1 : 2 : 0 0 : 1.0
+O: 5 1 : 4 : 0 0 : 1.0
+O: 5 1 : 6 : 0 0 : 1.0
+O: 5 1 : 8 : 0 0 : 1.0
+O: 5 1 : 10 : 0 0 : 1.0
+O: 5 1 : 12 : 0 0 : 1.0
+O: 5 1 : 14 : 0 0 : 1.0
+O: 5 2 : 0 : 0 0 : 1.0
+O: 5 2 : 2 : 0 0 : 1.0
+O: 5 2 : 4 : 0 0 : 1.0
+O: 5 2 : 6 : 0 0 : 1.0
+O: 5 2 : 8 : 0 0 : 1.0
+O: 5 2 : 10 : 0 0 : 1.0
+O: 5 2 : 12 : 0 0 : 1.0
+O: 5 2 : 14 : 0 0 : 1.0
+O: 5 3 : 0 : 0 0 : 1.0
+O: 5 3 : 2 : 0 0 : 1.0
+O: 5 3 : 4 : 0 0 : 1.0
+O: 5 3 : 6 : 0 0 : 1.0
+O: 5 3 : 8 : 0 0 : 1.0
+O: 5 3 : 10 : 0 0 : 1.0
+O: 5 3 : 12 : 0 0 : 1.0
+O: 5 3 : 14 : 0 0 : 1.0
+O: 5 4 : 0 : 0 0 : 1.0
+O: 5 4 : 2 : 0 0 : 1.0
+O: 5 4 : 4 : 0 0 : 1.0
+O: 5 4 : 6 : 0 0 : 1.0
+O: 5 4 : 8 : 0 0 : 1.0
+O: 5 4 : 10 : 0 0 : 1.0
+O: 5 4 : 12 : 0 0 : 1.0
+O: 5 4 : 14 : 0 0 : 1.0
+O: 5 5 : 0 : 0 0 : 1.0
+O: 5 5 : 2 : 0 0 : 1.0
+O: 5 5 : 4 : 0 0 : 1.0
+O: 5 5 : 6 : 0 0 : 1.0
+O: 5 5 : 8 : 0 0 : 1.0
+O: 5 5 : 10 : 0 0 : 1.0
+O: 5 5 : 12 : 0 0 : 1.0
+O: 5 5 : 14 : 0 0 : 1.0
+O: 0 0 : 16 : 0 1 : 1.0
+O: 0 0 : 20 : 0 1 : 1.0
+O: 0 0 : 24 : 0 1 : 1.0
+O: 0 0 : 28 : 0 1 : 1.0
+O: 0 1 : 16 : 0 1 : 1.0
+O: 0 1 : 20 : 0 1 : 1.0
+O: 0 1 : 24 : 0 1 : 1.0
+O: 0 1 : 28 : 0 1 : 1.0
+O: 0 2 : 16 : 0 1 : 1.0
+O: 0 2 : 20 : 0 1 : 1.0
+O: 0 2 : 24 : 0 1 : 1.0
+O: 0 2 : 28 : 0 1 : 1.0
+O: 0 3 : 16 : 0 1 : 1.0
+O: 0 3 : 20 : 0 1 : 1.0
+O: 0 3 : 24 : 0 1 : 1.0
+O: 0 3 : 28 : 0 1 : 1.0
+O: 0 4 : 16 : 0 1 : 1.0
+O: 0 4 : 20 : 0 1 : 1.0
+O: 0 4 : 24 : 0 1 : 1.0
+O: 0 4 : 28 : 0 1 : 1.0
+O: 0 5 : 16 : 0 1 : 1.0
+O: 0 5 : 20 : 0 1 : 1.0
+O: 0 5 : 24 : 0 1 : 1.0
+O: 0 5 : 28 : 0 1 : 1.0
+O: 1 0 : 16 : 0 1 : 1.0
+O: 1 0 : 20 : 0 1 : 1.0
+O: 1 0 : 24 : 0 1 : 1.0
+O: 1 0 : 28 : 0 1 : 1.0
+O: 1 1 : 16 : 0 1 : 1.0
+O: 1 1 : 20 : 0 1 : 1.0
+O: 1 1 : 24 : 0 1 : 1.0
+O: 1 1 : 28 : 0 1 : 1.0
+O: 1 2 : 16 : 0 1 : 1.0
+O: 1 2 : 20 : 0 1 : 1.0
+O: 1 2 : 24 : 0 1 : 1.0
+O: 1 2 : 28 : 0 1 : 1.0
+O: 1 3 : 16 : 0 1 : 1.0
+O: 1 3 : 20 : 0 1 : 1.0
+O: 1 3 : 24 : 0 1 : 1.0
+O: 1 3 : 28 : 0 1 : 1.0
+O: 1 4 : 16 : 0 1 : 1.0
+O: 1 4 : 20 : 0 1 : 1.0
+O: 1 4 : 24 : 0 1 : 1.0
+O: 1 4 : 28 : 0 1 : 1.0
+O: 1 5 : 16 : 0 1 : 1.0
+O: 1 5 : 20 : 0 1 : 1.0
+O: 1 5 : 24 : 0 1 : 1.0
+O: 1 5 : 28 : 0 1 : 1.0
+O: 2 0 : 16 : 0 1 : 1.0
+O: 2 0 : 20 : 0 1 : 1.0
+O: 2 0 : 24 : 0 1 : 1.0
+O: 2 0 : 28 : 0 1 : 1.0
+O: 2 1 : 16 : 0 1 : 1.0
+O: 2 1 : 20 : 0 1 : 1.0
+O: 2 1 : 24 : 0 1 : 1.0
+O: 2 1 : 28 : 0 1 : 1.0
+O: 2 2 : 16 : 0 1 : 1.0
+O: 2 2 : 20 : 0 1 : 1.0
+O: 2 2 : 24 : 0 1 : 1.0
+O: 2 2 : 28 : 0 1 : 1.0
+O: 2 3 : 16 : 0 1 : 1.0
+O: 2 3 : 20 : 0 1 : 1.0
+O: 2 3 : 24 : 0 1 : 1.0
+O: 2 3 : 28 : 0 1 : 1.0
+O: 2 4 : 16 : 0 1 : 1.0
+O: 2 4 : 20 : 0 1 : 1.0
+O: 2 4 : 24 : 0 1 : 1.0
+O: 2 4 : 28 : 0 1 : 1.0
+O: 2 5 : 16 : 0 1 : 1.0
+O: 2 5 : 20 : 0 1 : 1.0
+O: 2 5 : 24 : 0 1 : 1.0
+O: 2 5 : 28 : 0 1 : 1.0
+O: 3 0 : 16 : 0 1 : 1.0
+O: 3 0 : 20 : 0 1 : 1.0
+O: 3 0 : 24 : 0 1 : 1.0
+O: 3 0 : 28 : 0 1 : 1.0
+O: 3 1 : 16 : 0 1 : 1.0
+O: 3 1 : 20 : 0 1 : 1.0
+O: 3 1 : 24 : 0 1 : 1.0
+O: 3 1 : 28 : 0 1 : 1.0
+O: 3 2 : 16 : 0 1 : 1.0
+O: 3 2 : 20 : 0 1 : 1.0
+O: 3 2 : 24 : 0 1 : 1.0
+O: 3 2 : 28 : 0 1 : 1.0
+O: 3 3 : 16 : 0 1 : 1.0
+O: 3 3 : 20 : 0 1 : 1.0
+O: 3 3 : 24 : 0 1 : 1.0
+O: 3 3 : 28 : 0 1 : 1.0
+O: 3 4 : 16 : 0 1 : 1.0
+O: 3 4 : 20 : 0 1 : 1.0
+O: 3 4 : 24 : 0 1 : 1.0
+O: 3 4 : 28 : 0 1 : 1.0
+O: 3 5 : 16 : 0 1 : 1.0
+O: 3 5 : 20 : 0 1 : 1.0
+O: 3 5 : 24 : 0 1 : 1.0
+O: 3 5 : 28 : 0 1 : 1.0
+O: 4 0 : 16 : 0 1 : 1.0
+O: 4 0 : 20 : 0 1 : 1.0
+O: 4 0 : 24 : 0 1 : 1.0
+O: 4 0 : 28 : 0 1 : 1.0
+O: 4 1 : 16 : 0 1 : 1.0
+O: 4 1 : 20 : 0 1 : 1.0
+O: 4 1 : 24 : 0 1 : 1.0
+O: 4 1 : 28 : 0 1 : 1.0
+O: 4 2 : 16 : 0 1 : 1.0
+O: 4 2 : 20 : 0 1 : 1.0
+O: 4 2 : 24 : 0 1 : 1.0
+O: 4 2 : 28 : 0 1 : 1.0
+O: 4 3 : 16 : 0 1 : 1.0
+O: 4 3 : 20 : 0 1 : 1.0
+O: 4 3 : 24 : 0 1 : 1.0
+O: 4 3 : 28 : 0 1 : 1.0
+O: 4 4 : 16 : 0 1 : 1.0
+O: 4 4 : 20 : 0 1 : 1.0
+O: 4 4 : 24 : 0 1 : 1.0
+O: 4 4 : 28 : 0 1 : 1.0
+O: 4 5 : 16 : 0 1 : 1.0
+O: 4 5 : 20 : 0 1 : 1.0
+O: 4 5 : 24 : 0 1 : 1.0
+O: 4 5 : 28 : 0 1 : 1.0
+O: 5 0 : 16 : 0 1 : 1.0
+O: 5 0 : 20 : 0 1 : 1.0
+O: 5 0 : 24 : 0 1 : 1.0
+O: 5 0 : 28 : 0 1 : 1.0
+O: 5 1 : 16 : 0 1 : 1.0
+O: 5 1 : 20 : 0 1 : 1.0
+O: 5 1 : 24 : 0 1 : 1.0
+O: 5 1 : 28 : 0 1 : 1.0
+O: 5 2 : 16 : 0 1 : 1.0
+O: 5 2 : 20 : 0 1 : 1.0
+O: 5 2 : 24 : 0 1 : 1.0
+O: 5 2 : 28 : 0 1 : 1.0
+O: 5 3 : 16 : 0 1 : 1.0
+O: 5 3 : 20 : 0 1 : 1.0
+O: 5 3 : 24 : 0 1 : 1.0
+O: 5 3 : 28 : 0 1 : 1.0
+O: 5 4 : 16 : 0 1 : 1.0
+O: 5 4 : 20 : 0 1 : 1.0
+O: 5 4 : 24 : 0 1 : 1.0
+O: 5 4 : 28 : 0 1 : 1.0
+O: 5 5 : 16 : 0 1 : 1.0
+O: 5 5 : 20 : 0 1 : 1.0
+O: 5 5 : 24 : 0 1 : 1.0
+O: 5 5 : 28 : 0 1 : 1.0
+O: 0 0 : 32 : 0 2 : 1.0
+O: 0 0 : 34 : 0 2 : 1.0
+O: 0 0 : 40 : 0 2 : 1.0
+O: 0 0 : 42 : 0 2 : 1.0
+O: 0 1 : 32 : 0 2 : 1.0
+O: 0 1 : 34 : 0 2 : 1.0
+O: 0 1 : 40 : 0 2 : 1.0
+O: 0 1 : 42 : 0 2 : 1.0
+O: 0 2 : 32 : 0 2 : 1.0
+O: 0 2 : 34 : 0 2 : 1.0
+O: 0 2 : 40 : 0 2 : 1.0
+O: 0 2 : 42 : 0 2 : 1.0
+O: 0 3 : 32 : 0 2 : 1.0
+O: 0 3 : 34 : 0 2 : 1.0
+O: 0 3 : 40 : 0 2 : 1.0
+O: 0 3 : 42 : 0 2 : 1.0
+O: 0 4 : 32 : 0 2 : 1.0
+O: 0 4 : 34 : 0 2 : 1.0
+O: 0 4 : 40 : 0 2 : 1.0
+O: 0 4 : 42 : 0 2 : 1.0
+O: 0 5 : 32 : 0 2 : 1.0
+O: 0 5 : 34 : 0 2 : 1.0
+O: 0 5 : 40 : 0 2 : 1.0
+O: 0 5 : 42 : 0 2 : 1.0
+O: 1 0 : 32 : 0 2 : 1.0
+O: 1 0 : 34 : 0 2 : 1.0
+O: 1 0 : 40 : 0 2 : 1.0
+O: 1 0 : 42 : 0 2 : 1.0
+O: 1 1 : 32 : 0 2 : 1.0
+O: 1 1 : 34 : 0 2 : 1.0
+O: 1 1 : 40 : 0 2 : 1.0
+O: 1 1 : 42 : 0 2 : 1.0
+O: 1 2 : 32 : 0 2 : 1.0
+O: 1 2 : 34 : 0 2 : 1.0
+O: 1 2 : 40 : 0 2 : 1.0
+O: 1 2 : 42 : 0 2 : 1.0
+O: 1 3 : 32 : 0 2 : 1.0
+O: 1 3 : 34 : 0 2 : 1.0
+O: 1 3 : 40 : 0 2 : 1.0
+O: 1 3 : 42 : 0 2 : 1.0
+O: 1 4 : 32 : 0 2 : 1.0
+O: 1 4 : 34 : 0 2 : 1.0
+O: 1 4 : 40 : 0 2 : 1.0
+O: 1 4 : 42 : 0 2 : 1.0
+O: 1 5 : 32 : 0 2 : 1.0
+O: 1 5 : 34 : 0 2 : 1.0
+O: 1 5 : 40 : 0 2 : 1.0
+O: 1 5 : 42 : 0 2 : 1.0
+O: 2 0 : 32 : 0 2 : 1.0
+O: 2 0 : 34 : 0 2 : 1.0
+O: 2 0 : 40 : 0 2 : 1.0
+O: 2 0 : 42 : 0 2 : 1.0
+O: 2 1 : 32 : 0 2 : 1.0
+O: 2 1 : 34 : 0 2 : 1.0
+O: 2 1 : 40 : 0 2 : 1.0
+O: 2 1 : 42 : 0 2 : 1.0
+O: 2 2 : 32 : 0 2 : 1.0
+O: 2 2 : 34 : 0 2 : 1.0
+O: 2 2 : 40 : 0 2 : 1.0
+O: 2 2 : 42 : 0 2 : 1.0
+O: 2 3 : 32 : 0 2 : 1.0
+O: 2 3 : 34 : 0 2 : 1.0
+O: 2 3 : 40 : 0 2 : 1.0
+O: 2 3 : 42 : 0 2 : 1.0
+O: 2 4 : 32 : 0 2 : 1.0
+O: 2 4 : 34 : 0 2 : 1.0
+O: 2 4 : 40 : 0 2 : 1.0
+O: 2 4 : 42 : 0 2 : 1.0
+O: 2 5 : 32 : 0 2 : 1.0
+O: 2 5 : 34 : 0 2 : 1.0
+O: 2 5 : 40 : 0 2 : 1.0
+O: 2 5 : 42 : 0 2 : 1.0
+O: 3 0 : 32 : 0 2 : 1.0
+O: 3 0 : 34 : 0 2 : 1.0
+O: 3 0 : 40 : 0 2 : 1.0
+O: 3 0 : 42 : 0 2 : 1.0
+O: 3 1 : 32 : 0 2 : 1.0
+O: 3 1 : 34 : 0 2 : 1.0
+O: 3 1 : 40 : 0 2 : 1.0
+O: 3 1 : 42 : 0 2 : 1.0
+O: 3 2 : 32 : 0 2 : 1.0
+O: 3 2 : 34 : 0 2 : 1.0
+O: 3 2 : 40 : 0 2 : 1.0
+O: 3 2 : 42 : 0 2 : 1.0
+O: 3 3 : 32 : 0 2 : 1.0
+O: 3 3 : 34 : 0 2 : 1.0
+O: 3 3 : 40 : 0 2 : 1.0
+O: 3 3 : 42 : 0 2 : 1.0
+O: 3 4 : 32 : 0 2 : 1.0
+O: 3 4 : 34 : 0 2 : 1.0
+O: 3 4 : 40 : 0 2 : 1.0
+O: 3 4 : 42 : 0 2 : 1.0
+O: 3 5 : 32 : 0 2 : 1.0
+O: 3 5 : 34 : 0 2 : 1.0
+O: 3 5 : 40 : 0 2 : 1.0
+O: 3 5 : 42 : 0 2 : 1.0
+O: 4 0 : 32 : 0 2 : 1.0
+O: 4 0 : 34 : 0 2 : 1.0
+O: 4 0 : 40 : 0 2 : 1.0
+O: 4 0 : 42 : 0 2 : 1.0
+O: 4 1 : 32 : 0 2 : 1.0
+O: 4 1 : 34 : 0 2 : 1.0
+O: 4 1 : 40 : 0 2 : 1.0
+O: 4 1 : 42 : 0 2 : 1.0
+O: 4 2 : 32 : 0 2 : 1.0
+O: 4 2 : 34 : 0 2 : 1.0
+O: 4 2 : 40 : 0 2 : 1.0
+O: 4 2 : 42 : 0 2 : 1.0
+O: 4 3 : 32 : 0 2 : 1.0
+O: 4 3 : 34 : 0 2 : 1.0
+O: 4 3 : 40 : 0 2 : 1.0
+O: 4 3 : 42 : 0 2 : 1.0
+O: 4 4 : 32 : 0 2 : 1.0
+O: 4 4 : 34 : 0 2 : 1.0
+O: 4 4 : 40 : 0 2 : 1.0
+O: 4 4 : 42 : 0 2 : 1.0
+O: 4 5 : 32 : 0 2 : 1.0
+O: 4 5 : 34 : 0 2 : 1.0
+O: 4 5 : 40 : 0 2 : 1.0
+O: 4 5 : 42 : 0 2 : 1.0
+O: 5 0 : 32 : 0 2 : 1.0
+O: 5 0 : 34 : 0 2 : 1.0
+O: 5 0 : 40 : 0 2 : 1.0
+O: 5 0 : 42 : 0 2 : 1.0
+O: 5 1 : 32 : 0 2 : 1.0
+O: 5 1 : 34 : 0 2 : 1.0
+O: 5 1 : 40 : 0 2 : 1.0
+O: 5 1 : 42 : 0 2 : 1.0
+O: 5 2 : 32 : 0 2 : 1.0
+O: 5 2 : 34 : 0 2 : 1.0
+O: 5 2 : 40 : 0 2 : 1.0
+O: 5 2 : 42 : 0 2 : 1.0
+O: 5 3 : 32 : 0 2 : 1.0
+O: 5 3 : 34 : 0 2 : 1.0
+O: 5 3 : 40 : 0 2 : 1.0
+O: 5 3 : 42 : 0 2 : 1.0
+O: 5 4 : 32 : 0 2 : 1.0
+O: 5 4 : 34 : 0 2 : 1.0
+O: 5 4 : 40 : 0 2 : 1.0
+O: 5 4 : 42 : 0 2 : 1.0
+O: 5 5 : 32 : 0 2 : 1.0
+O: 5 5 : 34 : 0 2 : 1.0
+O: 5 5 : 40 : 0 2 : 1.0
+O: 5 5 : 42 : 0 2 : 1.0
+O: 0 0 : 48 : 0 3 : 1.0
+O: 0 0 : 50 : 0 3 : 1.0
+O: 0 0 : 52 : 0 3 : 1.0
+O: 0 0 : 54 : 0 3 : 1.0
+O: 0 1 : 48 : 0 3 : 1.0
+O: 0 1 : 50 : 0 3 : 1.0
+O: 0 1 : 52 : 0 3 : 1.0
+O: 0 1 : 54 : 0 3 : 1.0
+O: 0 2 : 48 : 0 3 : 1.0
+O: 0 2 : 50 : 0 3 : 1.0
+O: 0 2 : 52 : 0 3 : 1.0
+O: 0 2 : 54 : 0 3 : 1.0
+O: 0 3 : 48 : 0 3 : 1.0
+O: 0 3 : 50 : 0 3 : 1.0
+O: 0 3 : 52 : 0 3 : 1.0
+O: 0 3 : 54 : 0 3 : 1.0
+O: 0 4 : 48 : 0 3 : 1.0
+O: 0 4 : 50 : 0 3 : 1.0
+O: 0 4 : 52 : 0 3 : 1.0
+O: 0 4 : 54 : 0 3 : 1.0
+O: 0 5 : 48 : 0 3 : 1.0
+O: 0 5 : 50 : 0 3 : 1.0
+O: 0 5 : 52 : 0 3 : 1.0
+O: 0 5 : 54 : 0 3 : 1.0
+O: 1 0 : 48 : 0 3 : 1.0
+O: 1 0 : 50 : 0 3 : 1.0
+O: 1 0 : 52 : 0 3 : 1.0
+O: 1 0 : 54 : 0 3 : 1.0
+O: 1 1 : 48 : 0 3 : 1.0
+O: 1 1 : 50 : 0 3 : 1.0
+O: 1 1 : 52 : 0 3 : 1.0
+O: 1 1 : 54 : 0 3 : 1.0
+O: 1 2 : 48 : 0 3 : 1.0
+O: 1 2 : 50 : 0 3 : 1.0
+O: 1 2 : 52 : 0 3 : 1.0
+O: 1 2 : 54 : 0 3 : 1.0
+O: 1 3 : 48 : 0 3 : 1.0
+O: 1 3 : 50 : 0 3 : 1.0
+O: 1 3 : 52 : 0 3 : 1.0
+O: 1 3 : 54 : 0 3 : 1.0
+O: 1 4 : 48 : 0 3 : 1.0
+O: 1 4 : 50 : 0 3 : 1.0
+O: 1 4 : 52 : 0 3 : 1.0
+O: 1 4 : 54 : 0 3 : 1.0
+O: 1 5 : 48 : 0 3 : 1.0
+O: 1 5 : 50 : 0 3 : 1.0
+O: 1 5 : 52 : 0 3 : 1.0
+O: 1 5 : 54 : 0 3 : 1.0
+O: 2 0 : 48 : 0 3 : 1.0
+O: 2 0 : 50 : 0 3 : 1.0
+O: 2 0 : 52 : 0 3 : 1.0
+O: 2 0 : 54 : 0 3 : 1.0
+O: 2 1 : 48 : 0 3 : 1.0
+O: 2 1 : 50 : 0 3 : 1.0
+O: 2 1 : 52 : 0 3 : 1.0
+O: 2 1 : 54 : 0 3 : 1.0
+O: 2 2 : 48 : 0 3 : 1.0
+O: 2 2 : 50 : 0 3 : 1.0
+O: 2 2 : 52 : 0 3 : 1.0
+O: 2 2 : 54 : 0 3 : 1.0
+O: 2 3 : 48 : 0 3 : 1.0
+O: 2 3 : 50 : 0 3 : 1.0
+O: 2 3 : 52 : 0 3 : 1.0
+O: 2 3 : 54 : 0 3 : 1.0
+O: 2 4 : 48 : 0 3 : 1.0
+O: 2 4 : 50 : 0 3 : 1.0
+O: 2 4 : 52 : 0 3 : 1.0
+O: 2 4 : 54 : 0 3 : 1.0
+O: 2 5 : 48 : 0 3 : 1.0
+O: 2 5 : 50 : 0 3 : 1.0
+O: 2 5 : 52 : 0 3 : 1.0
+O: 2 5 : 54 : 0 3 : 1.0
+O: 3 0 : 48 : 0 3 : 1.0
+O: 3 0 : 50 : 0 3 : 1.0
+O: 3 0 : 52 : 0 3 : 1.0
+O: 3 0 : 54 : 0 3 : 1.0
+O: 3 1 : 48 : 0 3 : 1.0
+O: 3 1 : 50 : 0 3 : 1.0
+O: 3 1 : 52 : 0 3 : 1.0
+O: 3 1 : 54 : 0 3 : 1.0
+O: 3 2 : 48 : 0 3 : 1.0
+O: 3 2 : 50 : 0 3 : 1.0
+O: 3 2 : 52 : 0 3 : 1.0
+O: 3 2 : 54 : 0 3 : 1.0
+O: 3 3 : 48 : 0 3 : 1.0
+O: 3 3 : 50 : 0 3 : 1.0
+O: 3 3 : 52 : 0 3 : 1.0
+O: 3 3 : 54 : 0 3 : 1.0
+O: 3 4 : 48 : 0 3 : 1.0
+O: 3 4 : 50 : 0 3 : 1.0
+O: 3 4 : 52 : 0 3 : 1.0
+O: 3 4 : 54 : 0 3 : 1.0
+O: 3 5 : 48 : 0 3 : 1.0
+O: 3 5 : 50 : 0 3 : 1.0
+O: 3 5 : 52 : 0 3 : 1.0
+O: 3 5 : 54 : 0 3 : 1.0
+O: 4 0 : 48 : 0 3 : 1.0
+O: 4 0 : 50 : 0 3 : 1.0
+O: 4 0 : 52 : 0 3 : 1.0
+O: 4 0 : 54 : 0 3 : 1.0
+O: 4 1 : 48 : 0 3 : 1.0
+O: 4 1 : 50 : 0 3 : 1.0
+O: 4 1 : 52 : 0 3 : 1.0
+O: 4 1 : 54 : 0 3 : 1.0
+O: 4 2 : 48 : 0 3 : 1.0
+O: 4 2 : 50 : 0 3 : 1.0
+O: 4 2 : 52 : 0 3 : 1.0
+O: 4 2 : 54 : 0 3 : 1.0
+O: 4 3 : 48 : 0 3 : 1.0
+O: 4 3 : 50 : 0 3 : 1.0
+O: 4 3 : 52 : 0 3 : 1.0
+O: 4 3 : 54 : 0 3 : 1.0
+O: 4 4 : 48 : 0 3 : 1.0
+O: 4 4 : 50 : 0 3 : 1.0
+O: 4 4 : 52 : 0 3 : 1.0
+O: 4 4 : 54 : 0 3 : 1.0
+O: 4 5 : 48 : 0 3 : 1.0
+O: 4 5 : 50 : 0 3 : 1.0
+O: 4 5 : 52 : 0 3 : 1.0
+O: 4 5 : 54 : 0 3 : 1.0
+O: 5 0 : 48 : 0 3 : 1.0
+O: 5 0 : 50 : 0 3 : 1.0
+O: 5 0 : 52 : 0 3 : 1.0
+O: 5 0 : 54 : 0 3 : 1.0
+O: 5 1 : 48 : 0 3 : 1.0
+O: 5 1 : 50 : 0 3 : 1.0
+O: 5 1 : 52 : 0 3 : 1.0
+O: 5 1 : 54 : 0 3 : 1.0
+O: 5 2 : 48 : 0 3 : 1.0
+O: 5 2 : 50 : 0 3 : 1.0
+O: 5 2 : 52 : 0 3 : 1.0
+O: 5 2 : 54 : 0 3 : 1.0
+O: 5 3 : 48 : 0 3 : 1.0
+O: 5 3 : 50 : 0 3 : 1.0
+O: 5 3 : 52 : 0 3 : 1.0
+O: 5 3 : 54 : 0 3 : 1.0
+O: 5 4 : 48 : 0 3 : 1.0
+O: 5 4 : 50 : 0 3 : 1.0
+O: 5 4 : 52 : 0 3 : 1.0
+O: 5 4 : 54 : 0 3 : 1.0
+O: 5 5 : 48 : 0 3 : 1.0
+O: 5 5 : 50 : 0 3 : 1.0
+O: 5 5 : 52 : 0 3 : 1.0
+O: 5 5 : 54 : 0 3 : 1.0
+O: 0 0 : 18 : 0 5 : 1.0
+O: 0 0 : 22 : 0 5 : 1.0
+O: 0 0 : 26 : 0 5 : 1.0
+O: 0 0 : 30 : 0 5 : 1.0
+O: 0 1 : 18 : 0 5 : 1.0
+O: 0 1 : 22 : 0 5 : 1.0
+O: 0 1 : 26 : 0 5 : 1.0
+O: 0 1 : 30 : 0 5 : 1.0
+O: 0 2 : 18 : 0 5 : 1.0
+O: 0 2 : 22 : 0 5 : 1.0
+O: 0 2 : 26 : 0 5 : 1.0
+O: 0 2 : 30 : 0 5 : 1.0
+O: 0 3 : 18 : 0 5 : 1.0
+O: 0 3 : 22 : 0 5 : 1.0
+O: 0 3 : 26 : 0 5 : 1.0
+O: 0 3 : 30 : 0 5 : 1.0
+O: 0 4 : 18 : 0 5 : 1.0
+O: 0 4 : 22 : 0 5 : 1.0
+O: 0 4 : 26 : 0 5 : 1.0
+O: 0 4 : 30 : 0 5 : 1.0
+O: 0 5 : 18 : 0 5 : 1.0
+O: 0 5 : 22 : 0 5 : 1.0
+O: 0 5 : 26 : 0 5 : 1.0
+O: 0 5 : 30 : 0 5 : 1.0
+O: 1 0 : 18 : 0 5 : 1.0
+O: 1 0 : 22 : 0 5 : 1.0
+O: 1 0 : 26 : 0 5 : 1.0
+O: 1 0 : 30 : 0 5 : 1.0
+O: 1 1 : 18 : 0 5 : 1.0
+O: 1 1 : 22 : 0 5 : 1.0
+O: 1 1 : 26 : 0 5 : 1.0
+O: 1 1 : 30 : 0 5 : 1.0
+O: 1 2 : 18 : 0 5 : 1.0
+O: 1 2 : 22 : 0 5 : 1.0
+O: 1 2 : 26 : 0 5 : 1.0
+O: 1 2 : 30 : 0 5 : 1.0
+O: 1 3 : 18 : 0 5 : 1.0
+O: 1 3 : 22 : 0 5 : 1.0
+O: 1 3 : 26 : 0 5 : 1.0
+O: 1 3 : 30 : 0 5 : 1.0
+O: 1 4 : 18 : 0 5 : 1.0
+O: 1 4 : 22 : 0 5 : 1.0
+O: 1 4 : 26 : 0 5 : 1.0
+O: 1 4 : 30 : 0 5 : 1.0
+O: 1 5 : 18 : 0 5 : 1.0
+O: 1 5 : 22 : 0 5 : 1.0
+O: 1 5 : 26 : 0 5 : 1.0
+O: 1 5 : 30 : 0 5 : 1.0
+O: 2 0 : 18 : 0 5 : 1.0
+O: 2 0 : 22 : 0 5 : 1.0
+O: 2 0 : 26 : 0 5 : 1.0
+O: 2 0 : 30 : 0 5 : 1.0
+O: 2 1 : 18 : 0 5 : 1.0
+O: 2 1 : 22 : 0 5 : 1.0
+O: 2 1 : 26 : 0 5 : 1.0
+O: 2 1 : 30 : 0 5 : 1.0
+O: 2 2 : 18 : 0 5 : 1.0
+O: 2 2 : 22 : 0 5 : 1.0
+O: 2 2 : 26 : 0 5 : 1.0
+O: 2 2 : 30 : 0 5 : 1.0
+O: 2 3 : 18 : 0 5 : 1.0
+O: 2 3 : 22 : 0 5 : 1.0
+O: 2 3 : 26 : 0 5 : 1.0
+O: 2 3 : 30 : 0 5 : 1.0
+O: 2 4 : 18 : 0 5 : 1.0
+O: 2 4 : 22 : 0 5 : 1.0
+O: 2 4 : 26 : 0 5 : 1.0
+O: 2 4 : 30 : 0 5 : 1.0
+O: 2 5 : 18 : 0 5 : 1.0
+O: 2 5 : 22 : 0 5 : 1.0
+O: 2 5 : 26 : 0 5 : 1.0
+O: 2 5 : 30 : 0 5 : 1.0
+O: 3 0 : 18 : 0 5 : 1.0
+O: 3 0 : 22 : 0 5 : 1.0
+O: 3 0 : 26 : 0 5 : 1.0
+O: 3 0 : 30 : 0 5 : 1.0
+O: 3 1 : 18 : 0 5 : 1.0
+O: 3 1 : 22 : 0 5 : 1.0
+O: 3 1 : 26 : 0 5 : 1.0
+O: 3 1 : 30 : 0 5 : 1.0
+O: 3 2 : 18 : 0 5 : 1.0
+O: 3 2 : 22 : 0 5 : 1.0
+O: 3 2 : 26 : 0 5 : 1.0
+O: 3 2 : 30 : 0 5 : 1.0
+O: 3 3 : 18 : 0 5 : 1.0
+O: 3 3 : 22 : 0 5 : 1.0
+O: 3 3 : 26 : 0 5 : 1.0
+O: 3 3 : 30 : 0 5 : 1.0
+O: 3 4 : 18 : 0 5 : 1.0
+O: 3 4 : 22 : 0 5 : 1.0
+O: 3 4 : 26 : 0 5 : 1.0
+O: 3 4 : 30 : 0 5 : 1.0
+O: 3 5 : 18 : 0 5 : 1.0
+O: 3 5 : 22 : 0 5 : 1.0
+O: 3 5 : 26 : 0 5 : 1.0
+O: 3 5 : 30 : 0 5 : 1.0
+O: 4 0 : 18 : 0 5 : 1.0
+O: 4 0 : 22 : 0 5 : 1.0
+O: 4 0 : 26 : 0 5 : 1.0
+O: 4 0 : 30 : 0 5 : 1.0
+O: 4 1 : 18 : 0 5 : 1.0
+O: 4 1 : 22 : 0 5 : 1.0
+O: 4 1 : 26 : 0 5 : 1.0
+O: 4 1 : 30 : 0 5 : 1.0
+O: 4 2 : 18 : 0 5 : 1.0
+O: 4 2 : 22 : 0 5 : 1.0
+O: 4 2 : 26 : 0 5 : 1.0
+O: 4 2 : 30 : 0 5 : 1.0
+O: 4 3 : 18 : 0 5 : 1.0
+O: 4 3 : 22 : 0 5 : 1.0
+O: 4 3 : 26 : 0 5 : 1.0
+O: 4 3 : 30 : 0 5 : 1.0
+O: 4 4 : 18 : 0 5 : 1.0
+O: 4 4 : 22 : 0 5 : 1.0
+O: 4 4 : 26 : 0 5 : 1.0
+O: 4 4 : 30 : 0 5 : 1.0
+O: 4 5 : 18 : 0 5 : 1.0
+O: 4 5 : 22 : 0 5 : 1.0
+O: 4 5 : 26 : 0 5 : 1.0
+O: 4 5 : 30 : 0 5 : 1.0
+O: 5 0 : 18 : 0 5 : 1.0
+O: 5 0 : 22 : 0 5 : 1.0
+O: 5 0 : 26 : 0 5 : 1.0
+O: 5 0 : 30 : 0 5 : 1.0
+O: 5 1 : 18 : 0 5 : 1.0
+O: 5 1 : 22 : 0 5 : 1.0
+O: 5 1 : 26 : 0 5 : 1.0
+O: 5 1 : 30 : 0 5 : 1.0
+O: 5 2 : 18 : 0 5 : 1.0
+O: 5 2 : 22 : 0 5 : 1.0
+O: 5 2 : 26 : 0 5 : 1.0
+O: 5 2 : 30 : 0 5 : 1.0
+O: 5 3 : 18 : 0 5 : 1.0
+O: 5 3 : 22 : 0 5 : 1.0
+O: 5 3 : 26 : 0 5 : 1.0
+O: 5 3 : 30 : 0 5 : 1.0
+O: 5 4 : 18 : 0 5 : 1.0
+O: 5 4 : 22 : 0 5 : 1.0
+O: 5 4 : 26 : 0 5 : 1.0
+O: 5 4 : 30 : 0 5 : 1.0
+O: 5 5 : 18 : 0 5 : 1.0
+O: 5 5 : 22 : 0 5 : 1.0
+O: 5 5 : 26 : 0 5 : 1.0
+O: 5 5 : 30 : 0 5 : 1.0
+O: 0 0 : 36 : 0 6 : 1.0
+O: 0 0 : 38 : 0 6 : 1.0
+O: 0 0 : 44 : 0 6 : 1.0
+O: 0 0 : 46 : 0 6 : 1.0
+O: 0 1 : 36 : 0 6 : 1.0
+O: 0 1 : 38 : 0 6 : 1.0
+O: 0 1 : 44 : 0 6 : 1.0
+O: 0 1 : 46 : 0 6 : 1.0
+O: 0 2 : 36 : 0 6 : 1.0
+O: 0 2 : 38 : 0 6 : 1.0
+O: 0 2 : 44 : 0 6 : 1.0
+O: 0 2 : 46 : 0 6 : 1.0
+O: 0 3 : 36 : 0 6 : 1.0
+O: 0 3 : 38 : 0 6 : 1.0
+O: 0 3 : 44 : 0 6 : 1.0
+O: 0 3 : 46 : 0 6 : 1.0
+O: 0 4 : 36 : 0 6 : 1.0
+O: 0 4 : 38 : 0 6 : 1.0
+O: 0 4 : 44 : 0 6 : 1.0
+O: 0 4 : 46 : 0 6 : 1.0
+O: 0 5 : 36 : 0 6 : 1.0
+O: 0 5 : 38 : 0 6 : 1.0
+O: 0 5 : 44 : 0 6 : 1.0
+O: 0 5 : 46 : 0 6 : 1.0
+O: 1 0 : 36 : 0 6 : 1.0
+O: 1 0 : 38 : 0 6 : 1.0
+O: 1 0 : 44 : 0 6 : 1.0
+O: 1 0 : 46 : 0 6 : 1.0
+O: 1 1 : 36 : 0 6 : 1.0
+O: 1 1 : 38 : 0 6 : 1.0
+O: 1 1 : 44 : 0 6 : 1.0
+O: 1 1 : 46 : 0 6 : 1.0
+O: 1 2 : 36 : 0 6 : 1.0
+O: 1 2 : 38 : 0 6 : 1.0
+O: 1 2 : 44 : 0 6 : 1.0
+O: 1 2 : 46 : 0 6 : 1.0
+O: 1 3 : 36 : 0 6 : 1.0
+O: 1 3 : 38 : 0 6 : 1.0
+O: 1 3 : 44 : 0 6 : 1.0
+O: 1 3 : 46 : 0 6 : 1.0
+O: 1 4 : 36 : 0 6 : 1.0
+O: 1 4 : 38 : 0 6 : 1.0
+O: 1 4 : 44 : 0 6 : 1.0
+O: 1 4 : 46 : 0 6 : 1.0
+O: 1 5 : 36 : 0 6 : 1.0
+O: 1 5 : 38 : 0 6 : 1.0
+O: 1 5 : 44 : 0 6 : 1.0
+O: 1 5 : 46 : 0 6 : 1.0
+O: 2 0 : 36 : 0 6 : 1.0
+O: 2 0 : 38 : 0 6 : 1.0
+O: 2 0 : 44 : 0 6 : 1.0
+O: 2 0 : 46 : 0 6 : 1.0
+O: 2 1 : 36 : 0 6 : 1.0
+O: 2 1 : 38 : 0 6 : 1.0
+O: 2 1 : 44 : 0 6 : 1.0
+O: 2 1 : 46 : 0 6 : 1.0
+O: 2 2 : 36 : 0 6 : 1.0
+O: 2 2 : 38 : 0 6 : 1.0
+O: 2 2 : 44 : 0 6 : 1.0
+O: 2 2 : 46 : 0 6 : 1.0
+O: 2 3 : 36 : 0 6 : 1.0
+O: 2 3 : 38 : 0 6 : 1.0
+O: 2 3 : 44 : 0 6 : 1.0
+O: 2 3 : 46 : 0 6 : 1.0
+O: 2 4 : 36 : 0 6 : 1.0
+O: 2 4 : 38 : 0 6 : 1.0
+O: 2 4 : 44 : 0 6 : 1.0
+O: 2 4 : 46 : 0 6 : 1.0
+O: 2 5 : 36 : 0 6 : 1.0
+O: 2 5 : 38 : 0 6 : 1.0
+O: 2 5 : 44 : 0 6 : 1.0
+O: 2 5 : 46 : 0 6 : 1.0
+O: 3 0 : 36 : 0 6 : 1.0
+O: 3 0 : 38 : 0 6 : 1.0
+O: 3 0 : 44 : 0 6 : 1.0
+O: 3 0 : 46 : 0 6 : 1.0
+O: 3 1 : 36 : 0 6 : 1.0
+O: 3 1 : 38 : 0 6 : 1.0
+O: 3 1 : 44 : 0 6 : 1.0
+O: 3 1 : 46 : 0 6 : 1.0
+O: 3 2 : 36 : 0 6 : 1.0
+O: 3 2 : 38 : 0 6 : 1.0
+O: 3 2 : 44 : 0 6 : 1.0
+O: 3 2 : 46 : 0 6 : 1.0
+O: 3 3 : 36 : 0 6 : 1.0
+O: 3 3 : 38 : 0 6 : 1.0
+O: 3 3 : 44 : 0 6 : 1.0
+O: 3 3 : 46 : 0 6 : 1.0
+O: 3 4 : 36 : 0 6 : 1.0
+O: 3 4 : 38 : 0 6 : 1.0
+O: 3 4 : 44 : 0 6 : 1.0
+O: 3 4 : 46 : 0 6 : 1.0
+O: 3 5 : 36 : 0 6 : 1.0
+O: 3 5 : 38 : 0 6 : 1.0
+O: 3 5 : 44 : 0 6 : 1.0
+O: 3 5 : 46 : 0 6 : 1.0
+O: 4 0 : 36 : 0 6 : 1.0
+O: 4 0 : 38 : 0 6 : 1.0
+O: 4 0 : 44 : 0 6 : 1.0
+O: 4 0 : 46 : 0 6 : 1.0
+O: 4 1 : 36 : 0 6 : 1.0
+O: 4 1 : 38 : 0 6 : 1.0
+O: 4 1 : 44 : 0 6 : 1.0
+O: 4 1 : 46 : 0 6 : 1.0
+O: 4 2 : 36 : 0 6 : 1.0
+O: 4 2 : 38 : 0 6 : 1.0
+O: 4 2 : 44 : 0 6 : 1.0
+O: 4 2 : 46 : 0 6 : 1.0
+O: 4 3 : 36 : 0 6 : 1.0
+O: 4 3 : 38 : 0 6 : 1.0
+O: 4 3 : 44 : 0 6 : 1.0
+O: 4 3 : 46 : 0 6 : 1.0
+O: 4 4 : 36 : 0 6 : 1.0
+O: 4 4 : 38 : 0 6 : 1.0
+O: 4 4 : 44 : 0 6 : 1.0
+O: 4 4 : 46 : 0 6 : 1.0
+O: 4 5 : 36 : 0 6 : 1.0
+O: 4 5 : 38 : 0 6 : 1.0
+O: 4 5 : 44 : 0 6 : 1.0
+O: 4 5 : 46 : 0 6 : 1.0
+O: 5 0 : 36 : 0 6 : 1.0
+O: 5 0 : 38 : 0 6 : 1.0
+O: 5 0 : 44 : 0 6 : 1.0
+O: 5 0 : 46 : 0 6 : 1.0
+O: 5 1 : 36 : 0 6 : 1.0
+O: 5 1 : 38 : 0 6 : 1.0
+O: 5 1 : 44 : 0 6 : 1.0
+O: 5 1 : 46 : 0 6 : 1.0
+O: 5 2 : 36 : 0 6 : 1.0
+O: 5 2 : 38 : 0 6 : 1.0
+O: 5 2 : 44 : 0 6 : 1.0
+O: 5 2 : 46 : 0 6 : 1.0
+O: 5 3 : 36 : 0 6 : 1.0
+O: 5 3 : 38 : 0 6 : 1.0
+O: 5 3 : 44 : 0 6 : 1.0
+O: 5 3 : 46 : 0 6 : 1.0
+O: 5 4 : 36 : 0 6 : 1.0
+O: 5 4 : 38 : 0 6 : 1.0
+O: 5 4 : 44 : 0 6 : 1.0
+O: 5 4 : 46 : 0 6 : 1.0
+O: 5 5 : 36 : 0 6 : 1.0
+O: 5 5 : 38 : 0 6 : 1.0
+O: 5 5 : 44 : 0 6 : 1.0
+O: 5 5 : 46 : 0 6 : 1.0
+O: 0 0 : 56 : 0 7 : 1.0
+O: 0 0 : 58 : 0 7 : 1.0
+O: 0 0 : 60 : 0 7 : 1.0
+O: 0 0 : 62 : 0 7 : 1.0
+O: 0 1 : 56 : 0 7 : 1.0
+O: 0 1 : 58 : 0 7 : 1.0
+O: 0 1 : 60 : 0 7 : 1.0
+O: 0 1 : 62 : 0 7 : 1.0
+O: 0 2 : 56 : 0 7 : 1.0
+O: 0 2 : 58 : 0 7 : 1.0
+O: 0 2 : 60 : 0 7 : 1.0
+O: 0 2 : 62 : 0 7 : 1.0
+O: 0 3 : 56 : 0 7 : 1.0
+O: 0 3 : 58 : 0 7 : 1.0
+O: 0 3 : 60 : 0 7 : 1.0
+O: 0 3 : 62 : 0 7 : 1.0
+O: 0 4 : 56 : 0 7 : 1.0
+O: 0 4 : 58 : 0 7 : 1.0
+O: 0 4 : 60 : 0 7 : 1.0
+O: 0 4 : 62 : 0 7 : 1.0
+O: 0 5 : 56 : 0 7 : 1.0
+O: 0 5 : 58 : 0 7 : 1.0
+O: 0 5 : 60 : 0 7 : 1.0
+O: 0 5 : 62 : 0 7 : 1.0
+O: 1 0 : 56 : 0 7 : 1.0
+O: 1 0 : 58 : 0 7 : 1.0
+O: 1 0 : 60 : 0 7 : 1.0
+O: 1 0 : 62 : 0 7 : 1.0
+O: 1 1 : 56 : 0 7 : 1.0
+O: 1 1 : 58 : 0 7 : 1.0
+O: 1 1 : 60 : 0 7 : 1.0
+O: 1 1 : 62 : 0 7 : 1.0
+O: 1 2 : 56 : 0 7 : 1.0
+O: 1 2 : 58 : 0 7 : 1.0
+O: 1 2 : 60 : 0 7 : 1.0
+O: 1 2 : 62 : 0 7 : 1.0
+O: 1 3 : 56 : 0 7 : 1.0
+O: 1 3 : 58 : 0 7 : 1.0
+O: 1 3 : 60 : 0 7 : 1.0
+O: 1 3 : 62 : 0 7 : 1.0
+O: 1 4 : 56 : 0 7 : 1.0
+O: 1 4 : 58 : 0 7 : 1.0
+O: 1 4 : 60 : 0 7 : 1.0
+O: 1 4 : 62 : 0 7 : 1.0
+O: 1 5 : 56 : 0 7 : 1.0
+O: 1 5 : 58 : 0 7 : 1.0
+O: 1 5 : 60 : 0 7 : 1.0
+O: 1 5 : 62 : 0 7 : 1.0
+O: 2 0 : 56 : 0 7 : 1.0
+O: 2 0 : 58 : 0 7 : 1.0
+O: 2 0 : 60 : 0 7 : 1.0
+O: 2 0 : 62 : 0 7 : 1.0
+O: 2 1 : 56 : 0 7 : 1.0
+O: 2 1 : 58 : 0 7 : 1.0
+O: 2 1 : 60 : 0 7 : 1.0
+O: 2 1 : 62 : 0 7 : 1.0
+O: 2 2 : 56 : 0 7 : 1.0
+O: 2 2 : 58 : 0 7 : 1.0
+O: 2 2 : 60 : 0 7 : 1.0
+O: 2 2 : 62 : 0 7 : 1.0
+O: 2 3 : 56 : 0 7 : 1.0
+O: 2 3 : 58 : 0 7 : 1.0
+O: 2 3 : 60 : 0 7 : 1.0
+O: 2 3 : 62 : 0 7 : 1.0
+O: 2 4 : 56 : 0 7 : 1.0
+O: 2 4 : 58 : 0 7 : 1.0
+O: 2 4 : 60 : 0 7 : 1.0
+O: 2 4 : 62 : 0 7 : 1.0
+O: 2 5 : 56 : 0 7 : 1.0
+O: 2 5 : 58 : 0 7 : 1.0
+O: 2 5 : 60 : 0 7 : 1.0
+O: 2 5 : 62 : 0 7 : 1.0
+O: 3 0 : 56 : 0 7 : 1.0
+O: 3 0 : 58 : 0 7 : 1.0
+O: 3 0 : 60 : 0 7 : 1.0
+O: 3 0 : 62 : 0 7 : 1.0
+O: 3 1 : 56 : 0 7 : 1.0
+O: 3 1 : 58 : 0 7 : 1.0
+O: 3 1 : 60 : 0 7 : 1.0
+O: 3 1 : 62 : 0 7 : 1.0
+O: 3 2 : 56 : 0 7 : 1.0
+O: 3 2 : 58 : 0 7 : 1.0
+O: 3 2 : 60 : 0 7 : 1.0
+O: 3 2 : 62 : 0 7 : 1.0
+O: 3 3 : 56 : 0 7 : 1.0
+O: 3 3 : 58 : 0 7 : 1.0
+O: 3 3 : 60 : 0 7 : 1.0
+O: 3 3 : 62 : 0 7 : 1.0
+O: 3 4 : 56 : 0 7 : 1.0
+O: 3 4 : 58 : 0 7 : 1.0
+O: 3 4 : 60 : 0 7 : 1.0
+O: 3 4 : 62 : 0 7 : 1.0
+O: 3 5 : 56 : 0 7 : 1.0
+O: 3 5 : 58 : 0 7 : 1.0
+O: 3 5 : 60 : 0 7 : 1.0
+O: 3 5 : 62 : 0 7 : 1.0
+O: 4 0 : 56 : 0 7 : 1.0
+O: 4 0 : 58 : 0 7 : 1.0
+O: 4 0 : 60 : 0 7 : 1.0
+O: 4 0 : 62 : 0 7 : 1.0
+O: 4 1 : 56 : 0 7 : 1.0
+O: 4 1 : 58 : 0 7 : 1.0
+O: 4 1 : 60 : 0 7 : 1.0
+O: 4 1 : 62 : 0 7 : 1.0
+O: 4 2 : 56 : 0 7 : 1.0
+O: 4 2 : 58 : 0 7 : 1.0
+O: 4 2 : 60 : 0 7 : 1.0
+O: 4 2 : 62 : 0 7 : 1.0
+O: 4 3 : 56 : 0 7 : 1.0
+O: 4 3 : 58 : 0 7 : 1.0
+O: 4 3 : 60 : 0 7 : 1.0
+O: 4 3 : 62 : 0 7 : 1.0
+O: 4 4 : 56 : 0 7 : 1.0
+O: 4 4 : 58 : 0 7 : 1.0
+O: 4 4 : 60 : 0 7 : 1.0
+O: 4 4 : 62 : 0 7 : 1.0
+O: 4 5 : 56 : 0 7 : 1.0
+O: 4 5 : 58 : 0 7 : 1.0
+O: 4 5 : 60 : 0 7 : 1.0
+O: 4 5 : 62 : 0 7 : 1.0
+O: 5 0 : 56 : 0 7 : 1.0
+O: 5 0 : 58 : 0 7 : 1.0
+O: 5 0 : 60 : 0 7 : 1.0
+O: 5 0 : 62 : 0 7 : 1.0
+O: 5 1 : 56 : 0 7 : 1.0
+O: 5 1 : 58 : 0 7 : 1.0
+O: 5 1 : 60 : 0 7 : 1.0
+O: 5 1 : 62 : 0 7 : 1.0
+O: 5 2 : 56 : 0 7 : 1.0
+O: 5 2 : 58 : 0 7 : 1.0
+O: 5 2 : 60 : 0 7 : 1.0
+O: 5 2 : 62 : 0 7 : 1.0
+O: 5 3 : 56 : 0 7 : 1.0
+O: 5 3 : 58 : 0 7 : 1.0
+O: 5 3 : 60 : 0 7 : 1.0
+O: 5 3 : 62 : 0 7 : 1.0
+O: 5 4 : 56 : 0 7 : 1.0
+O: 5 4 : 58 : 0 7 : 1.0
+O: 5 4 : 60 : 0 7 : 1.0
+O: 5 4 : 62 : 0 7 : 1.0
+O: 5 5 : 56 : 0 7 : 1.0
+O: 5 5 : 58 : 0 7 : 1.0
+O: 5 5 : 60 : 0 7 : 1.0
+O: 5 5 : 62 : 0 7 : 1.0
+O: 0 0 : 64 : 1 0 : 1.0
+O: 0 0 : 68 : 1 0 : 1.0
+O: 0 0 : 72 : 1 0 : 1.0
+O: 0 0 : 76 : 1 0 : 1.0
+O: 0 1 : 64 : 1 0 : 1.0
+O: 0 1 : 68 : 1 0 : 1.0
+O: 0 1 : 72 : 1 0 : 1.0
+O: 0 1 : 76 : 1 0 : 1.0
+O: 0 2 : 64 : 1 0 : 1.0
+O: 0 2 : 68 : 1 0 : 1.0
+O: 0 2 : 72 : 1 0 : 1.0
+O: 0 2 : 76 : 1 0 : 1.0
+O: 0 3 : 64 : 1 0 : 1.0
+O: 0 3 : 68 : 1 0 : 1.0
+O: 0 3 : 72 : 1 0 : 1.0
+O: 0 3 : 76 : 1 0 : 1.0
+O: 0 4 : 64 : 1 0 : 1.0
+O: 0 4 : 68 : 1 0 : 1.0
+O: 0 4 : 72 : 1 0 : 1.0
+O: 0 4 : 76 : 1 0 : 1.0
+O: 0 5 : 64 : 1 0 : 1.0
+O: 0 5 : 68 : 1 0 : 1.0
+O: 0 5 : 72 : 1 0 : 1.0
+O: 0 5 : 76 : 1 0 : 1.0
+O: 1 0 : 64 : 1 0 : 1.0
+O: 1 0 : 68 : 1 0 : 1.0
+O: 1 0 : 72 : 1 0 : 1.0
+O: 1 0 : 76 : 1 0 : 1.0
+O: 1 1 : 64 : 1 0 : 1.0
+O: 1 1 : 68 : 1 0 : 1.0
+O: 1 1 : 72 : 1 0 : 1.0
+O: 1 1 : 76 : 1 0 : 1.0
+O: 1 2 : 64 : 1 0 : 1.0
+O: 1 2 : 68 : 1 0 : 1.0
+O: 1 2 : 72 : 1 0 : 1.0
+O: 1 2 : 76 : 1 0 : 1.0
+O: 1 3 : 64 : 1 0 : 1.0
+O: 1 3 : 68 : 1 0 : 1.0
+O: 1 3 : 72 : 1 0 : 1.0
+O: 1 3 : 76 : 1 0 : 1.0
+O: 1 4 : 64 : 1 0 : 1.0
+O: 1 4 : 68 : 1 0 : 1.0
+O: 1 4 : 72 : 1 0 : 1.0
+O: 1 4 : 76 : 1 0 : 1.0
+O: 1 5 : 64 : 1 0 : 1.0
+O: 1 5 : 68 : 1 0 : 1.0
+O: 1 5 : 72 : 1 0 : 1.0
+O: 1 5 : 76 : 1 0 : 1.0
+O: 2 0 : 64 : 1 0 : 1.0
+O: 2 0 : 68 : 1 0 : 1.0
+O: 2 0 : 72 : 1 0 : 1.0
+O: 2 0 : 76 : 1 0 : 1.0
+O: 2 1 : 64 : 1 0 : 1.0
+O: 2 1 : 68 : 1 0 : 1.0
+O: 2 1 : 72 : 1 0 : 1.0
+O: 2 1 : 76 : 1 0 : 1.0
+O: 2 2 : 64 : 1 0 : 1.0
+O: 2 2 : 68 : 1 0 : 1.0
+O: 2 2 : 72 : 1 0 : 1.0
+O: 2 2 : 76 : 1 0 : 1.0
+O: 2 3 : 64 : 1 0 : 1.0
+O: 2 3 : 68 : 1 0 : 1.0
+O: 2 3 : 72 : 1 0 : 1.0
+O: 2 3 : 76 : 1 0 : 1.0
+O: 2 4 : 64 : 1 0 : 1.0
+O: 2 4 : 68 : 1 0 : 1.0
+O: 2 4 : 72 : 1 0 : 1.0
+O: 2 4 : 76 : 1 0 : 1.0
+O: 2 5 : 64 : 1 0 : 1.0
+O: 2 5 : 68 : 1 0 : 1.0
+O: 2 5 : 72 : 1 0 : 1.0
+O: 2 5 : 76 : 1 0 : 1.0
+O: 3 0 : 64 : 1 0 : 1.0
+O: 3 0 : 68 : 1 0 : 1.0
+O: 3 0 : 72 : 1 0 : 1.0
+O: 3 0 : 76 : 1 0 : 1.0
+O: 3 1 : 64 : 1 0 : 1.0
+O: 3 1 : 68 : 1 0 : 1.0
+O: 3 1 : 72 : 1 0 : 1.0
+O: 3 1 : 76 : 1 0 : 1.0
+O: 3 2 : 64 : 1 0 : 1.0
+O: 3 2 : 68 : 1 0 : 1.0
+O: 3 2 : 72 : 1 0 : 1.0
+O: 3 2 : 76 : 1 0 : 1.0
+O: 3 3 : 64 : 1 0 : 1.0
+O: 3 3 : 68 : 1 0 : 1.0
+O: 3 3 : 72 : 1 0 : 1.0
+O: 3 3 : 76 : 1 0 : 1.0
+O: 3 4 : 64 : 1 0 : 1.0
+O: 3 4 : 68 : 1 0 : 1.0
+O: 3 4 : 72 : 1 0 : 1.0
+O: 3 4 : 76 : 1 0 : 1.0
+O: 3 5 : 64 : 1 0 : 1.0
+O: 3 5 : 68 : 1 0 : 1.0
+O: 3 5 : 72 : 1 0 : 1.0
+O: 3 5 : 76 : 1 0 : 1.0
+O: 4 0 : 64 : 1 0 : 1.0
+O: 4 0 : 68 : 1 0 : 1.0
+O: 4 0 : 72 : 1 0 : 1.0
+O: 4 0 : 76 : 1 0 : 1.0
+O: 4 1 : 64 : 1 0 : 1.0
+O: 4 1 : 68 : 1 0 : 1.0
+O: 4 1 : 72 : 1 0 : 1.0
+O: 4 1 : 76 : 1 0 : 1.0
+O: 4 2 : 64 : 1 0 : 1.0
+O: 4 2 : 68 : 1 0 : 1.0
+O: 4 2 : 72 : 1 0 : 1.0
+O: 4 2 : 76 : 1 0 : 1.0
+O: 4 3 : 64 : 1 0 : 1.0
+O: 4 3 : 68 : 1 0 : 1.0
+O: 4 3 : 72 : 1 0 : 1.0
+O: 4 3 : 76 : 1 0 : 1.0
+O: 4 4 : 64 : 1 0 : 1.0
+O: 4 4 : 68 : 1 0 : 1.0
+O: 4 4 : 72 : 1 0 : 1.0
+O: 4 4 : 76 : 1 0 : 1.0
+O: 4 5 : 64 : 1 0 : 1.0
+O: 4 5 : 68 : 1 0 : 1.0
+O: 4 5 : 72 : 1 0 : 1.0
+O: 4 5 : 76 : 1 0 : 1.0
+O: 5 0 : 64 : 1 0 : 1.0
+O: 5 0 : 68 : 1 0 : 1.0
+O: 5 0 : 72 : 1 0 : 1.0
+O: 5 0 : 76 : 1 0 : 1.0
+O: 5 1 : 64 : 1 0 : 1.0
+O: 5 1 : 68 : 1 0 : 1.0
+O: 5 1 : 72 : 1 0 : 1.0
+O: 5 1 : 76 : 1 0 : 1.0
+O: 5 2 : 64 : 1 0 : 1.0
+O: 5 2 : 68 : 1 0 : 1.0
+O: 5 2 : 72 : 1 0 : 1.0
+O: 5 2 : 76 : 1 0 : 1.0
+O: 5 3 : 64 : 1 0 : 1.0
+O: 5 3 : 68 : 1 0 : 1.0
+O: 5 3 : 72 : 1 0 : 1.0
+O: 5 3 : 76 : 1 0 : 1.0
+O: 5 4 : 64 : 1 0 : 1.0
+O: 5 4 : 68 : 1 0 : 1.0
+O: 5 4 : 72 : 1 0 : 1.0
+O: 5 4 : 76 : 1 0 : 1.0
+O: 5 5 : 64 : 1 0 : 1.0
+O: 5 5 : 68 : 1 0 : 1.0
+O: 5 5 : 72 : 1 0 : 1.0
+O: 5 5 : 76 : 1 0 : 1.0
+O: 0 0 : 80 : 1 1 : 1.0
+O: 0 0 : 81 : 1 1 : 1.0
+O: 0 0 : 84 : 1 1 : 1.0
+O: 0 0 : 85 : 1 1 : 1.0
+O: 0 0 : 88 : 1 1 : 1.0
+O: 0 0 : 89 : 1 1 : 1.0
+O: 0 0 : 92 : 1 1 : 1.0
+O: 0 0 : 93 : 1 1 : 1.0
+O: 0 1 : 80 : 1 1 : 1.0
+O: 0 1 : 81 : 1 1 : 1.0
+O: 0 1 : 84 : 1 1 : 1.0
+O: 0 1 : 85 : 1 1 : 1.0
+O: 0 1 : 88 : 1 1 : 1.0
+O: 0 1 : 89 : 1 1 : 1.0
+O: 0 1 : 92 : 1 1 : 1.0
+O: 0 1 : 93 : 1 1 : 1.0
+O: 0 2 : 80 : 1 1 : 1.0
+O: 0 2 : 81 : 1 1 : 1.0
+O: 0 2 : 84 : 1 1 : 1.0
+O: 0 2 : 85 : 1 1 : 1.0
+O: 0 2 : 88 : 1 1 : 1.0
+O: 0 2 : 89 : 1 1 : 1.0
+O: 0 2 : 92 : 1 1 : 1.0
+O: 0 2 : 93 : 1 1 : 1.0
+O: 0 3 : 80 : 1 1 : 1.0
+O: 0 3 : 81 : 1 1 : 1.0
+O: 0 3 : 84 : 1 1 : 1.0
+O: 0 3 : 85 : 1 1 : 1.0
+O: 0 3 : 88 : 1 1 : 1.0
+O: 0 3 : 89 : 1 1 : 1.0
+O: 0 3 : 92 : 1 1 : 1.0
+O: 0 3 : 93 : 1 1 : 1.0
+O: 0 4 : 80 : 1 1 : 1.0
+O: 0 4 : 81 : 1 1 : 1.0
+O: 0 4 : 84 : 1 1 : 1.0
+O: 0 4 : 85 : 1 1 : 1.0
+O: 0 4 : 88 : 1 1 : 1.0
+O: 0 4 : 89 : 1 1 : 1.0
+O: 0 4 : 92 : 1 1 : 1.0
+O: 0 4 : 93 : 1 1 : 1.0
+O: 0 5 : 80 : 1 1 : 1.0
+O: 0 5 : 81 : 1 1 : 1.0
+O: 0 5 : 84 : 1 1 : 1.0
+O: 0 5 : 85 : 1 1 : 1.0
+O: 0 5 : 88 : 1 1 : 1.0
+O: 0 5 : 89 : 1 1 : 1.0
+O: 0 5 : 92 : 1 1 : 1.0
+O: 0 5 : 93 : 1 1 : 1.0
+O: 1 0 : 80 : 1 1 : 1.0
+O: 1 0 : 81 : 1 1 : 1.0
+O: 1 0 : 84 : 1 1 : 1.0
+O: 1 0 : 85 : 1 1 : 1.0
+O: 1 0 : 88 : 1 1 : 1.0
+O: 1 0 : 89 : 1 1 : 1.0
+O: 1 0 : 92 : 1 1 : 1.0
+O: 1 0 : 93 : 1 1 : 1.0
+O: 1 1 : 80 : 1 1 : 1.0
+O: 1 1 : 81 : 1 1 : 1.0
+O: 1 1 : 84 : 1 1 : 1.0
+O: 1 1 : 85 : 1 1 : 1.0
+O: 1 1 : 88 : 1 1 : 1.0
+O: 1 1 : 89 : 1 1 : 1.0
+O: 1 1 : 92 : 1 1 : 1.0
+O: 1 1 : 93 : 1 1 : 1.0
+O: 1 2 : 80 : 1 1 : 1.0
+O: 1 2 : 81 : 1 1 : 1.0
+O: 1 2 : 84 : 1 1 : 1.0
+O: 1 2 : 85 : 1 1 : 1.0
+O: 1 2 : 88 : 1 1 : 1.0
+O: 1 2 : 89 : 1 1 : 1.0
+O: 1 2 : 92 : 1 1 : 1.0
+O: 1 2 : 93 : 1 1 : 1.0
+O: 1 3 : 80 : 1 1 : 1.0
+O: 1 3 : 81 : 1 1 : 1.0
+O: 1 3 : 84 : 1 1 : 1.0
+O: 1 3 : 85 : 1 1 : 1.0
+O: 1 3 : 88 : 1 1 : 1.0
+O: 1 3 : 89 : 1 1 : 1.0
+O: 1 3 : 92 : 1 1 : 1.0
+O: 1 3 : 93 : 1 1 : 1.0
+O: 1 4 : 80 : 1 1 : 1.0
+O: 1 4 : 81 : 1 1 : 1.0
+O: 1 4 : 84 : 1 1 : 1.0
+O: 1 4 : 85 : 1 1 : 1.0
+O: 1 4 : 88 : 1 1 : 1.0
+O: 1 4 : 89 : 1 1 : 1.0
+O: 1 4 : 92 : 1 1 : 1.0
+O: 1 4 : 93 : 1 1 : 1.0
+O: 1 5 : 80 : 1 1 : 1.0
+O: 1 5 : 81 : 1 1 : 1.0
+O: 1 5 : 84 : 1 1 : 1.0
+O: 1 5 : 85 : 1 1 : 1.0
+O: 1 5 : 88 : 1 1 : 1.0
+O: 1 5 : 89 : 1 1 : 1.0
+O: 1 5 : 92 : 1 1 : 1.0
+O: 1 5 : 93 : 1 1 : 1.0
+O: 2 0 : 80 : 1 1 : 1.0
+O: 2 0 : 81 : 1 1 : 1.0
+O: 2 0 : 84 : 1 1 : 1.0
+O: 2 0 : 85 : 1 1 : 1.0
+O: 2 0 : 88 : 1 1 : 1.0
+O: 2 0 : 89 : 1 1 : 1.0
+O: 2 0 : 92 : 1 1 : 1.0
+O: 2 0 : 93 : 1 1 : 1.0
+O: 2 1 : 80 : 1 1 : 1.0
+O: 2 1 : 81 : 1 1 : 1.0
+O: 2 1 : 84 : 1 1 : 1.0
+O: 2 1 : 85 : 1 1 : 1.0
+O: 2 1 : 88 : 1 1 : 1.0
+O: 2 1 : 89 : 1 1 : 1.0
+O: 2 1 : 92 : 1 1 : 1.0
+O: 2 1 : 93 : 1 1 : 1.0
+O: 2 2 : 80 : 1 1 : 1.0
+O: 2 2 : 81 : 1 1 : 1.0
+O: 2 2 : 84 : 1 1 : 1.0
+O: 2 2 : 85 : 1 1 : 1.0
+O: 2 2 : 88 : 1 1 : 1.0
+O: 2 2 : 89 : 1 1 : 1.0
+O: 2 2 : 92 : 1 1 : 1.0
+O: 2 2 : 93 : 1 1 : 1.0
+O: 2 3 : 80 : 1 1 : 1.0
+O: 2 3 : 81 : 1 1 : 1.0
+O: 2 3 : 84 : 1 1 : 1.0
+O: 2 3 : 85 : 1 1 : 1.0
+O: 2 3 : 88 : 1 1 : 1.0
+O: 2 3 : 89 : 1 1 : 1.0
+O: 2 3 : 92 : 1 1 : 1.0
+O: 2 3 : 93 : 1 1 : 1.0
+O: 2 4 : 80 : 1 1 : 1.0
+O: 2 4 : 81 : 1 1 : 1.0
+O: 2 4 : 84 : 1 1 : 1.0
+O: 2 4 : 85 : 1 1 : 1.0
+O: 2 4 : 88 : 1 1 : 1.0
+O: 2 4 : 89 : 1 1 : 1.0
+O: 2 4 : 92 : 1 1 : 1.0
+O: 2 4 : 93 : 1 1 : 1.0
+O: 2 5 : 80 : 1 1 : 1.0
+O: 2 5 : 81 : 1 1 : 1.0
+O: 2 5 : 84 : 1 1 : 1.0
+O: 2 5 : 85 : 1 1 : 1.0
+O: 2 5 : 88 : 1 1 : 1.0
+O: 2 5 : 89 : 1 1 : 1.0
+O: 2 5 : 92 : 1 1 : 1.0
+O: 2 5 : 93 : 1 1 : 1.0
+O: 3 0 : 80 : 1 1 : 1.0
+O: 3 0 : 81 : 1 1 : 1.0
+O: 3 0 : 84 : 1 1 : 1.0
+O: 3 0 : 85 : 1 1 : 1.0
+O: 3 0 : 88 : 1 1 : 1.0
+O: 3 0 : 89 : 1 1 : 1.0
+O: 3 0 : 92 : 1 1 : 1.0
+O: 3 0 : 93 : 1 1 : 1.0
+O: 3 1 : 80 : 1 1 : 1.0
+O: 3 1 : 81 : 1 1 : 1.0
+O: 3 1 : 84 : 1 1 : 1.0
+O: 3 1 : 85 : 1 1 : 1.0
+O: 3 1 : 88 : 1 1 : 1.0
+O: 3 1 : 89 : 1 1 : 1.0
+O: 3 1 : 92 : 1 1 : 1.0
+O: 3 1 : 93 : 1 1 : 1.0
+O: 3 2 : 80 : 1 1 : 1.0
+O: 3 2 : 81 : 1 1 : 1.0
+O: 3 2 : 84 : 1 1 : 1.0
+O: 3 2 : 85 : 1 1 : 1.0
+O: 3 2 : 88 : 1 1 : 1.0
+O: 3 2 : 89 : 1 1 : 1.0
+O: 3 2 : 92 : 1 1 : 1.0
+O: 3 2 : 93 : 1 1 : 1.0
+O: 3 3 : 80 : 1 1 : 1.0
+O: 3 3 : 81 : 1 1 : 1.0
+O: 3 3 : 84 : 1 1 : 1.0
+O: 3 3 : 85 : 1 1 : 1.0
+O: 3 3 : 88 : 1 1 : 1.0
+O: 3 3 : 89 : 1 1 : 1.0
+O: 3 3 : 92 : 1 1 : 1.0
+O: 3 3 : 93 : 1 1 : 1.0
+O: 3 4 : 80 : 1 1 : 1.0
+O: 3 4 : 81 : 1 1 : 1.0
+O: 3 4 : 84 : 1 1 : 1.0
+O: 3 4 : 85 : 1 1 : 1.0
+O: 3 4 : 88 : 1 1 : 1.0
+O: 3 4 : 89 : 1 1 : 1.0
+O: 3 4 : 92 : 1 1 : 1.0
+O: 3 4 : 93 : 1 1 : 1.0
+O: 3 5 : 80 : 1 1 : 1.0
+O: 3 5 : 81 : 1 1 : 1.0
+O: 3 5 : 84 : 1 1 : 1.0
+O: 3 5 : 85 : 1 1 : 1.0
+O: 3 5 : 88 : 1 1 : 1.0
+O: 3 5 : 89 : 1 1 : 1.0
+O: 3 5 : 92 : 1 1 : 1.0
+O: 3 5 : 93 : 1 1 : 1.0
+O: 4 0 : 80 : 1 1 : 1.0
+O: 4 0 : 81 : 1 1 : 1.0
+O: 4 0 : 84 : 1 1 : 1.0
+O: 4 0 : 85 : 1 1 : 1.0
+O: 4 0 : 88 : 1 1 : 1.0
+O: 4 0 : 89 : 1 1 : 1.0
+O: 4 0 : 92 : 1 1 : 1.0
+O: 4 0 : 93 : 1 1 : 1.0
+O: 4 1 : 80 : 1 1 : 1.0
+O: 4 1 : 81 : 1 1 : 1.0
+O: 4 1 : 84 : 1 1 : 1.0
+O: 4 1 : 85 : 1 1 : 1.0
+O: 4 1 : 88 : 1 1 : 1.0
+O: 4 1 : 89 : 1 1 : 1.0
+O: 4 1 : 92 : 1 1 : 1.0
+O: 4 1 : 93 : 1 1 : 1.0
+O: 4 2 : 80 : 1 1 : 1.0
+O: 4 2 : 81 : 1 1 : 1.0
+O: 4 2 : 84 : 1 1 : 1.0
+O: 4 2 : 85 : 1 1 : 1.0
+O: 4 2 : 88 : 1 1 : 1.0
+O: 4 2 : 89 : 1 1 : 1.0
+O: 4 2 : 92 : 1 1 : 1.0
+O: 4 2 : 93 : 1 1 : 1.0
+O: 4 3 : 80 : 1 1 : 1.0
+O: 4 3 : 81 : 1 1 : 1.0
+O: 4 3 : 84 : 1 1 : 1.0
+O: 4 3 : 85 : 1 1 : 1.0
+O: 4 3 : 88 : 1 1 : 1.0
+O: 4 3 : 89 : 1 1 : 1.0
+O: 4 3 : 92 : 1 1 : 1.0
+O: 4 3 : 93 : 1 1 : 1.0
+O: 4 4 : 80 : 1 1 : 1.0
+O: 4 4 : 81 : 1 1 : 1.0
+O: 4 4 : 84 : 1 1 : 1.0
+O: 4 4 : 85 : 1 1 : 1.0
+O: 4 4 : 88 : 1 1 : 1.0
+O: 4 4 : 89 : 1 1 : 1.0
+O: 4 4 : 92 : 1 1 : 1.0
+O: 4 4 : 93 : 1 1 : 1.0
+O: 4 5 : 80 : 1 1 : 1.0
+O: 4 5 : 81 : 1 1 : 1.0
+O: 4 5 : 84 : 1 1 : 1.0
+O: 4 5 : 85 : 1 1 : 1.0
+O: 4 5 : 88 : 1 1 : 1.0
+O: 4 5 : 89 : 1 1 : 1.0
+O: 4 5 : 92 : 1 1 : 1.0
+O: 4 5 : 93 : 1 1 : 1.0
+O: 5 0 : 80 : 1 1 : 1.0
+O: 5 0 : 81 : 1 1 : 1.0
+O: 5 0 : 84 : 1 1 : 1.0
+O: 5 0 : 85 : 1 1 : 1.0
+O: 5 0 : 88 : 1 1 : 1.0
+O: 5 0 : 89 : 1 1 : 1.0
+O: 5 0 : 92 : 1 1 : 1.0
+O: 5 0 : 93 : 1 1 : 1.0
+O: 5 1 : 80 : 1 1 : 1.0
+O: 5 1 : 81 : 1 1 : 1.0
+O: 5 1 : 84 : 1 1 : 1.0
+O: 5 1 : 85 : 1 1 : 1.0
+O: 5 1 : 88 : 1 1 : 1.0
+O: 5 1 : 89 : 1 1 : 1.0
+O: 5 1 : 92 : 1 1 : 1.0
+O: 5 1 : 93 : 1 1 : 1.0
+O: 5 2 : 80 : 1 1 : 1.0
+O: 5 2 : 81 : 1 1 : 1.0
+O: 5 2 : 84 : 1 1 : 1.0
+O: 5 2 : 85 : 1 1 : 1.0
+O: 5 2 : 88 : 1 1 : 1.0
+O: 5 2 : 89 : 1 1 : 1.0
+O: 5 2 : 92 : 1 1 : 1.0
+O: 5 2 : 93 : 1 1 : 1.0
+O: 5 3 : 80 : 1 1 : 1.0
+O: 5 3 : 81 : 1 1 : 1.0
+O: 5 3 : 84 : 1 1 : 1.0
+O: 5 3 : 85 : 1 1 : 1.0
+O: 5 3 : 88 : 1 1 : 1.0
+O: 5 3 : 89 : 1 1 : 1.0
+O: 5 3 : 92 : 1 1 : 1.0
+O: 5 3 : 93 : 1 1 : 1.0
+O: 5 4 : 80 : 1 1 : 1.0
+O: 5 4 : 81 : 1 1 : 1.0
+O: 5 4 : 84 : 1 1 : 1.0
+O: 5 4 : 85 : 1 1 : 1.0
+O: 5 4 : 88 : 1 1 : 1.0
+O: 5 4 : 89 : 1 1 : 1.0
+O: 5 4 : 92 : 1 1 : 1.0
+O: 5 4 : 93 : 1 1 : 1.0
+O: 5 5 : 80 : 1 1 : 1.0
+O: 5 5 : 81 : 1 1 : 1.0
+O: 5 5 : 84 : 1 1 : 1.0
+O: 5 5 : 85 : 1 1 : 1.0
+O: 5 5 : 88 : 1 1 : 1.0
+O: 5 5 : 89 : 1 1 : 1.0
+O: 5 5 : 92 : 1 1 : 1.0
+O: 5 5 : 93 : 1 1 : 1.0
+O: 0 0 : 96 : 1 2 : 1.0
+O: 0 0 : 97 : 1 2 : 1.0
+O: 0 0 : 104 : 1 2 : 1.0
+O: 0 0 : 105 : 1 2 : 1.0
+O: 0 1 : 96 : 1 2 : 1.0
+O: 0 1 : 97 : 1 2 : 1.0
+O: 0 1 : 104 : 1 2 : 1.0
+O: 0 1 : 105 : 1 2 : 1.0
+O: 0 2 : 96 : 1 2 : 1.0
+O: 0 2 : 97 : 1 2 : 1.0
+O: 0 2 : 104 : 1 2 : 1.0
+O: 0 2 : 105 : 1 2 : 1.0
+O: 0 3 : 96 : 1 2 : 1.0
+O: 0 3 : 97 : 1 2 : 1.0
+O: 0 3 : 104 : 1 2 : 1.0
+O: 0 3 : 105 : 1 2 : 1.0
+O: 0 4 : 96 : 1 2 : 1.0
+O: 0 4 : 97 : 1 2 : 1.0
+O: 0 4 : 104 : 1 2 : 1.0
+O: 0 4 : 105 : 1 2 : 1.0
+O: 0 5 : 96 : 1 2 : 1.0
+O: 0 5 : 97 : 1 2 : 1.0
+O: 0 5 : 104 : 1 2 : 1.0
+O: 0 5 : 105 : 1 2 : 1.0
+O: 1 0 : 96 : 1 2 : 1.0
+O: 1 0 : 97 : 1 2 : 1.0
+O: 1 0 : 104 : 1 2 : 1.0
+O: 1 0 : 105 : 1 2 : 1.0
+O: 1 1 : 96 : 1 2 : 1.0
+O: 1 1 : 97 : 1 2 : 1.0
+O: 1 1 : 104 : 1 2 : 1.0
+O: 1 1 : 105 : 1 2 : 1.0
+O: 1 2 : 96 : 1 2 : 1.0
+O: 1 2 : 97 : 1 2 : 1.0
+O: 1 2 : 104 : 1 2 : 1.0
+O: 1 2 : 105 : 1 2 : 1.0
+O: 1 3 : 96 : 1 2 : 1.0
+O: 1 3 : 97 : 1 2 : 1.0
+O: 1 3 : 104 : 1 2 : 1.0
+O: 1 3 : 105 : 1 2 : 1.0
+O: 1 4 : 96 : 1 2 : 1.0
+O: 1 4 : 97 : 1 2 : 1.0
+O: 1 4 : 104 : 1 2 : 1.0
+O: 1 4 : 105 : 1 2 : 1.0
+O: 1 5 : 96 : 1 2 : 1.0
+O: 1 5 : 97 : 1 2 : 1.0
+O: 1 5 : 104 : 1 2 : 1.0
+O: 1 5 : 105 : 1 2 : 1.0
+O: 2 0 : 96 : 1 2 : 1.0
+O: 2 0 : 97 : 1 2 : 1.0
+O: 2 0 : 104 : 1 2 : 1.0
+O: 2 0 : 105 : 1 2 : 1.0
+O: 2 1 : 96 : 1 2 : 1.0
+O: 2 1 : 97 : 1 2 : 1.0
+O: 2 1 : 104 : 1 2 : 1.0
+O: 2 1 : 105 : 1 2 : 1.0
+O: 2 2 : 96 : 1 2 : 1.0
+O: 2 2 : 97 : 1 2 : 1.0
+O: 2 2 : 104 : 1 2 : 1.0
+O: 2 2 : 105 : 1 2 : 1.0
+O: 2 3 : 96 : 1 2 : 1.0
+O: 2 3 : 97 : 1 2 : 1.0
+O: 2 3 : 104 : 1 2 : 1.0
+O: 2 3 : 105 : 1 2 : 1.0
+O: 2 4 : 96 : 1 2 : 1.0
+O: 2 4 : 97 : 1 2 : 1.0
+O: 2 4 : 104 : 1 2 : 1.0
+O: 2 4 : 105 : 1 2 : 1.0
+O: 2 5 : 96 : 1 2 : 1.0
+O: 2 5 : 97 : 1 2 : 1.0
+O: 2 5 : 104 : 1 2 : 1.0
+O: 2 5 : 105 : 1 2 : 1.0
+O: 3 0 : 96 : 1 2 : 1.0
+O: 3 0 : 97 : 1 2 : 1.0
+O: 3 0 : 104 : 1 2 : 1.0
+O: 3 0 : 105 : 1 2 : 1.0
+O: 3 1 : 96 : 1 2 : 1.0
+O: 3 1 : 97 : 1 2 : 1.0
+O: 3 1 : 104 : 1 2 : 1.0
+O: 3 1 : 105 : 1 2 : 1.0
+O: 3 2 : 96 : 1 2 : 1.0
+O: 3 2 : 97 : 1 2 : 1.0
+O: 3 2 : 104 : 1 2 : 1.0
+O: 3 2 : 105 : 1 2 : 1.0
+O: 3 3 : 96 : 1 2 : 1.0
+O: 3 3 : 97 : 1 2 : 1.0
+O: 3 3 : 104 : 1 2 : 1.0
+O: 3 3 : 105 : 1 2 : 1.0
+O: 3 4 : 96 : 1 2 : 1.0
+O: 3 4 : 97 : 1 2 : 1.0
+O: 3 4 : 104 : 1 2 : 1.0
+O: 3 4 : 105 : 1 2 : 1.0
+O: 3 5 : 96 : 1 2 : 1.0
+O: 3 5 : 97 : 1 2 : 1.0
+O: 3 5 : 104 : 1 2 : 1.0
+O: 3 5 : 105 : 1 2 : 1.0
+O: 4 0 : 96 : 1 2 : 1.0
+O: 4 0 : 97 : 1 2 : 1.0
+O: 4 0 : 104 : 1 2 : 1.0
+O: 4 0 : 105 : 1 2 : 1.0
+O: 4 1 : 96 : 1 2 : 1.0
+O: 4 1 : 97 : 1 2 : 1.0
+O: 4 1 : 104 : 1 2 : 1.0
+O: 4 1 : 105 : 1 2 : 1.0
+O: 4 2 : 96 : 1 2 : 1.0
+O: 4 2 : 97 : 1 2 : 1.0
+O: 4 2 : 104 : 1 2 : 1.0
+O: 4 2 : 105 : 1 2 : 1.0
+O: 4 3 : 96 : 1 2 : 1.0
+O: 4 3 : 97 : 1 2 : 1.0
+O: 4 3 : 104 : 1 2 : 1.0
+O: 4 3 : 105 : 1 2 : 1.0
+O: 4 4 : 96 : 1 2 : 1.0
+O: 4 4 : 97 : 1 2 : 1.0
+O: 4 4 : 104 : 1 2 : 1.0
+O: 4 4 : 105 : 1 2 : 1.0
+O: 4 5 : 96 : 1 2 : 1.0
+O: 4 5 : 97 : 1 2 : 1.0
+O: 4 5 : 104 : 1 2 : 1.0
+O: 4 5 : 105 : 1 2 : 1.0
+O: 5 0 : 96 : 1 2 : 1.0
+O: 5 0 : 97 : 1 2 : 1.0
+O: 5 0 : 104 : 1 2 : 1.0
+O: 5 0 : 105 : 1 2 : 1.0
+O: 5 1 : 96 : 1 2 : 1.0
+O: 5 1 : 97 : 1 2 : 1.0
+O: 5 1 : 104 : 1 2 : 1.0
+O: 5 1 : 105 : 1 2 : 1.0
+O: 5 2 : 96 : 1 2 : 1.0
+O: 5 2 : 97 : 1 2 : 1.0
+O: 5 2 : 104 : 1 2 : 1.0
+O: 5 2 : 105 : 1 2 : 1.0
+O: 5 3 : 96 : 1 2 : 1.0
+O: 5 3 : 97 : 1 2 : 1.0
+O: 5 3 : 104 : 1 2 : 1.0
+O: 5 3 : 105 : 1 2 : 1.0
+O: 5 4 : 96 : 1 2 : 1.0
+O: 5 4 : 97 : 1 2 : 1.0
+O: 5 4 : 104 : 1 2 : 1.0
+O: 5 4 : 105 : 1 2 : 1.0
+O: 5 5 : 96 : 1 2 : 1.0
+O: 5 5 : 97 : 1 2 : 1.0
+O: 5 5 : 104 : 1 2 : 1.0
+O: 5 5 : 105 : 1 2 : 1.0
+O: 0 0 : 112 : 1 3 : 1.0
+O: 0 0 : 113 : 1 3 : 1.0
+O: 0 0 : 116 : 1 3 : 1.0
+O: 0 0 : 117 : 1 3 : 1.0
+O: 0 1 : 112 : 1 3 : 1.0
+O: 0 1 : 113 : 1 3 : 1.0
+O: 0 1 : 116 : 1 3 : 1.0
+O: 0 1 : 117 : 1 3 : 1.0
+O: 0 2 : 112 : 1 3 : 1.0
+O: 0 2 : 113 : 1 3 : 1.0
+O: 0 2 : 116 : 1 3 : 1.0
+O: 0 2 : 117 : 1 3 : 1.0
+O: 0 3 : 112 : 1 3 : 1.0
+O: 0 3 : 113 : 1 3 : 1.0
+O: 0 3 : 116 : 1 3 : 1.0
+O: 0 3 : 117 : 1 3 : 1.0
+O: 0 4 : 112 : 1 3 : 1.0
+O: 0 4 : 113 : 1 3 : 1.0
+O: 0 4 : 116 : 1 3 : 1.0
+O: 0 4 : 117 : 1 3 : 1.0
+O: 0 5 : 112 : 1 3 : 1.0
+O: 0 5 : 113 : 1 3 : 1.0
+O: 0 5 : 116 : 1 3 : 1.0
+O: 0 5 : 117 : 1 3 : 1.0
+O: 1 0 : 112 : 1 3 : 1.0
+O: 1 0 : 113 : 1 3 : 1.0
+O: 1 0 : 116 : 1 3 : 1.0
+O: 1 0 : 117 : 1 3 : 1.0
+O: 1 1 : 112 : 1 3 : 1.0
+O: 1 1 : 113 : 1 3 : 1.0
+O: 1 1 : 116 : 1 3 : 1.0
+O: 1 1 : 117 : 1 3 : 1.0
+O: 1 2 : 112 : 1 3 : 1.0
+O: 1 2 : 113 : 1 3 : 1.0
+O: 1 2 : 116 : 1 3 : 1.0
+O: 1 2 : 117 : 1 3 : 1.0
+O: 1 3 : 112 : 1 3 : 1.0
+O: 1 3 : 113 : 1 3 : 1.0
+O: 1 3 : 116 : 1 3 : 1.0
+O: 1 3 : 117 : 1 3 : 1.0
+O: 1 4 : 112 : 1 3 : 1.0
+O: 1 4 : 113 : 1 3 : 1.0
+O: 1 4 : 116 : 1 3 : 1.0
+O: 1 4 : 117 : 1 3 : 1.0
+O: 1 5 : 112 : 1 3 : 1.0
+O: 1 5 : 113 : 1 3 : 1.0
+O: 1 5 : 116 : 1 3 : 1.0
+O: 1 5 : 117 : 1 3 : 1.0
+O: 2 0 : 112 : 1 3 : 1.0
+O: 2 0 : 113 : 1 3 : 1.0
+O: 2 0 : 116 : 1 3 : 1.0
+O: 2 0 : 117 : 1 3 : 1.0
+O: 2 1 : 112 : 1 3 : 1.0
+O: 2 1 : 113 : 1 3 : 1.0
+O: 2 1 : 116 : 1 3 : 1.0
+O: 2 1 : 117 : 1 3 : 1.0
+O: 2 2 : 112 : 1 3 : 1.0
+O: 2 2 : 113 : 1 3 : 1.0
+O: 2 2 : 116 : 1 3 : 1.0
+O: 2 2 : 117 : 1 3 : 1.0
+O: 2 3 : 112 : 1 3 : 1.0
+O: 2 3 : 113 : 1 3 : 1.0
+O: 2 3 : 116 : 1 3 : 1.0
+O: 2 3 : 117 : 1 3 : 1.0
+O: 2 4 : 112 : 1 3 : 1.0
+O: 2 4 : 113 : 1 3 : 1.0
+O: 2 4 : 116 : 1 3 : 1.0
+O: 2 4 : 117 : 1 3 : 1.0
+O: 2 5 : 112 : 1 3 : 1.0
+O: 2 5 : 113 : 1 3 : 1.0
+O: 2 5 : 116 : 1 3 : 1.0
+O: 2 5 : 117 : 1 3 : 1.0
+O: 3 0 : 112 : 1 3 : 1.0
+O: 3 0 : 113 : 1 3 : 1.0
+O: 3 0 : 116 : 1 3 : 1.0
+O: 3 0 : 117 : 1 3 : 1.0
+O: 3 1 : 112 : 1 3 : 1.0
+O: 3 1 : 113 : 1 3 : 1.0
+O: 3 1 : 116 : 1 3 : 1.0
+O: 3 1 : 117 : 1 3 : 1.0
+O: 3 2 : 112 : 1 3 : 1.0
+O: 3 2 : 113 : 1 3 : 1.0
+O: 3 2 : 116 : 1 3 : 1.0
+O: 3 2 : 117 : 1 3 : 1.0
+O: 3 3 : 112 : 1 3 : 1.0
+O: 3 3 : 113 : 1 3 : 1.0
+O: 3 3 : 116 : 1 3 : 1.0
+O: 3 3 : 117 : 1 3 : 1.0
+O: 3 4 : 112 : 1 3 : 1.0
+O: 3 4 : 113 : 1 3 : 1.0
+O: 3 4 : 116 : 1 3 : 1.0
+O: 3 4 : 117 : 1 3 : 1.0
+O: 3 5 : 112 : 1 3 : 1.0
+O: 3 5 : 113 : 1 3 : 1.0
+O: 3 5 : 116 : 1 3 : 1.0
+O: 3 5 : 117 : 1 3 : 1.0
+O: 4 0 : 112 : 1 3 : 1.0
+O: 4 0 : 113 : 1 3 : 1.0
+O: 4 0 : 116 : 1 3 : 1.0
+O: 4 0 : 117 : 1 3 : 1.0
+O: 4 1 : 112 : 1 3 : 1.0
+O: 4 1 : 113 : 1 3 : 1.0
+O: 4 1 : 116 : 1 3 : 1.0
+O: 4 1 : 117 : 1 3 : 1.0
+O: 4 2 : 112 : 1 3 : 1.0
+O: 4 2 : 113 : 1 3 : 1.0
+O: 4 2 : 116 : 1 3 : 1.0
+O: 4 2 : 117 : 1 3 : 1.0
+O: 4 3 : 112 : 1 3 : 1.0
+O: 4 3 : 113 : 1 3 : 1.0
+O: 4 3 : 116 : 1 3 : 1.0
+O: 4 3 : 117 : 1 3 : 1.0
+O: 4 4 : 112 : 1 3 : 1.0
+O: 4 4 : 113 : 1 3 : 1.0
+O: 4 4 : 116 : 1 3 : 1.0
+O: 4 4 : 117 : 1 3 : 1.0
+O: 4 5 : 112 : 1 3 : 1.0
+O: 4 5 : 113 : 1 3 : 1.0
+O: 4 5 : 116 : 1 3 : 1.0
+O: 4 5 : 117 : 1 3 : 1.0
+O: 5 0 : 112 : 1 3 : 1.0
+O: 5 0 : 113 : 1 3 : 1.0
+O: 5 0 : 116 : 1 3 : 1.0
+O: 5 0 : 117 : 1 3 : 1.0
+O: 5 1 : 112 : 1 3 : 1.0
+O: 5 1 : 113 : 1 3 : 1.0
+O: 5 1 : 116 : 1 3 : 1.0
+O: 5 1 : 117 : 1 3 : 1.0
+O: 5 2 : 112 : 1 3 : 1.0
+O: 5 2 : 113 : 1 3 : 1.0
+O: 5 2 : 116 : 1 3 : 1.0
+O: 5 2 : 117 : 1 3 : 1.0
+O: 5 3 : 112 : 1 3 : 1.0
+O: 5 3 : 113 : 1 3 : 1.0
+O: 5 3 : 116 : 1 3 : 1.0
+O: 5 3 : 117 : 1 3 : 1.0
+O: 5 4 : 112 : 1 3 : 1.0
+O: 5 4 : 113 : 1 3 : 1.0
+O: 5 4 : 116 : 1 3 : 1.0
+O: 5 4 : 117 : 1 3 : 1.0
+O: 5 5 : 112 : 1 3 : 1.0
+O: 5 5 : 113 : 1 3 : 1.0
+O: 5 5 : 116 : 1 3 : 1.0
+O: 5 5 : 117 : 1 3 : 1.0
+O: 0 0 : 65 : 1 4 : 1.0
+O: 0 0 : 69 : 1 4 : 1.0
+O: 0 0 : 73 : 1 4 : 1.0
+O: 0 0 : 77 : 1 4 : 1.0
+O: 0 1 : 65 : 1 4 : 1.0
+O: 0 1 : 69 : 1 4 : 1.0
+O: 0 1 : 73 : 1 4 : 1.0
+O: 0 1 : 77 : 1 4 : 1.0
+O: 0 2 : 65 : 1 4 : 1.0
+O: 0 2 : 69 : 1 4 : 1.0
+O: 0 2 : 73 : 1 4 : 1.0
+O: 0 2 : 77 : 1 4 : 1.0
+O: 0 3 : 65 : 1 4 : 1.0
+O: 0 3 : 69 : 1 4 : 1.0
+O: 0 3 : 73 : 1 4 : 1.0
+O: 0 3 : 77 : 1 4 : 1.0
+O: 0 4 : 65 : 1 4 : 1.0
+O: 0 4 : 69 : 1 4 : 1.0
+O: 0 4 : 73 : 1 4 : 1.0
+O: 0 4 : 77 : 1 4 : 1.0
+O: 0 5 : 65 : 1 4 : 1.0
+O: 0 5 : 69 : 1 4 : 1.0
+O: 0 5 : 73 : 1 4 : 1.0
+O: 0 5 : 77 : 1 4 : 1.0
+O: 1 0 : 65 : 1 4 : 1.0
+O: 1 0 : 69 : 1 4 : 1.0
+O: 1 0 : 73 : 1 4 : 1.0
+O: 1 0 : 77 : 1 4 : 1.0
+O: 1 1 : 65 : 1 4 : 1.0
+O: 1 1 : 69 : 1 4 : 1.0
+O: 1 1 : 73 : 1 4 : 1.0
+O: 1 1 : 77 : 1 4 : 1.0
+O: 1 2 : 65 : 1 4 : 1.0
+O: 1 2 : 69 : 1 4 : 1.0
+O: 1 2 : 73 : 1 4 : 1.0
+O: 1 2 : 77 : 1 4 : 1.0
+O: 1 3 : 65 : 1 4 : 1.0
+O: 1 3 : 69 : 1 4 : 1.0
+O: 1 3 : 73 : 1 4 : 1.0
+O: 1 3 : 77 : 1 4 : 1.0
+O: 1 4 : 65 : 1 4 : 1.0
+O: 1 4 : 69 : 1 4 : 1.0
+O: 1 4 : 73 : 1 4 : 1.0
+O: 1 4 : 77 : 1 4 : 1.0
+O: 1 5 : 65 : 1 4 : 1.0
+O: 1 5 : 69 : 1 4 : 1.0
+O: 1 5 : 73 : 1 4 : 1.0
+O: 1 5 : 77 : 1 4 : 1.0
+O: 2 0 : 65 : 1 4 : 1.0
+O: 2 0 : 69 : 1 4 : 1.0
+O: 2 0 : 73 : 1 4 : 1.0
+O: 2 0 : 77 : 1 4 : 1.0
+O: 2 1 : 65 : 1 4 : 1.0
+O: 2 1 : 69 : 1 4 : 1.0
+O: 2 1 : 73 : 1 4 : 1.0
+O: 2 1 : 77 : 1 4 : 1.0
+O: 2 2 : 65 : 1 4 : 1.0
+O: 2 2 : 69 : 1 4 : 1.0
+O: 2 2 : 73 : 1 4 : 1.0
+O: 2 2 : 77 : 1 4 : 1.0
+O: 2 3 : 65 : 1 4 : 1.0
+O: 2 3 : 69 : 1 4 : 1.0
+O: 2 3 : 73 : 1 4 : 1.0
+O: 2 3 : 77 : 1 4 : 1.0
+O: 2 4 : 65 : 1 4 : 1.0
+O: 2 4 : 69 : 1 4 : 1.0
+O: 2 4 : 73 : 1 4 : 1.0
+O: 2 4 : 77 : 1 4 : 1.0
+O: 2 5 : 65 : 1 4 : 1.0
+O: 2 5 : 69 : 1 4 : 1.0
+O: 2 5 : 73 : 1 4 : 1.0
+O: 2 5 : 77 : 1 4 : 1.0
+O: 3 0 : 65 : 1 4 : 1.0
+O: 3 0 : 69 : 1 4 : 1.0
+O: 3 0 : 73 : 1 4 : 1.0
+O: 3 0 : 77 : 1 4 : 1.0
+O: 3 1 : 65 : 1 4 : 1.0
+O: 3 1 : 69 : 1 4 : 1.0
+O: 3 1 : 73 : 1 4 : 1.0
+O: 3 1 : 77 : 1 4 : 1.0
+O: 3 2 : 65 : 1 4 : 1.0
+O: 3 2 : 69 : 1 4 : 1.0
+O: 3 2 : 73 : 1 4 : 1.0
+O: 3 2 : 77 : 1 4 : 1.0
+O: 3 3 : 65 : 1 4 : 1.0
+O: 3 3 : 69 : 1 4 : 1.0
+O: 3 3 : 73 : 1 4 : 1.0
+O: 3 3 : 77 : 1 4 : 1.0
+O: 3 4 : 65 : 1 4 : 1.0
+O: 3 4 : 69 : 1 4 : 1.0
+O: 3 4 : 73 : 1 4 : 1.0
+O: 3 4 : 77 : 1 4 : 1.0
+O: 3 5 : 65 : 1 4 : 1.0
+O: 3 5 : 69 : 1 4 : 1.0
+O: 3 5 : 73 : 1 4 : 1.0
+O: 3 5 : 77 : 1 4 : 1.0
+O: 4 0 : 65 : 1 4 : 1.0
+O: 4 0 : 69 : 1 4 : 1.0
+O: 4 0 : 73 : 1 4 : 1.0
+O: 4 0 : 77 : 1 4 : 1.0
+O: 4 1 : 65 : 1 4 : 1.0
+O: 4 1 : 69 : 1 4 : 1.0
+O: 4 1 : 73 : 1 4 : 1.0
+O: 4 1 : 77 : 1 4 : 1.0
+O: 4 2 : 65 : 1 4 : 1.0
+O: 4 2 : 69 : 1 4 : 1.0
+O: 4 2 : 73 : 1 4 : 1.0
+O: 4 2 : 77 : 1 4 : 1.0
+O: 4 3 : 65 : 1 4 : 1.0
+O: 4 3 : 69 : 1 4 : 1.0
+O: 4 3 : 73 : 1 4 : 1.0
+O: 4 3 : 77 : 1 4 : 1.0
+O: 4 4 : 65 : 1 4 : 1.0
+O: 4 4 : 69 : 1 4 : 1.0
+O: 4 4 : 73 : 1 4 : 1.0
+O: 4 4 : 77 : 1 4 : 1.0
+O: 4 5 : 65 : 1 4 : 1.0
+O: 4 5 : 69 : 1 4 : 1.0
+O: 4 5 : 73 : 1 4 : 1.0
+O: 4 5 : 77 : 1 4 : 1.0
+O: 5 0 : 65 : 1 4 : 1.0
+O: 5 0 : 69 : 1 4 : 1.0
+O: 5 0 : 73 : 1 4 : 1.0
+O: 5 0 : 77 : 1 4 : 1.0
+O: 5 1 : 65 : 1 4 : 1.0
+O: 5 1 : 69 : 1 4 : 1.0
+O: 5 1 : 73 : 1 4 : 1.0
+O: 5 1 : 77 : 1 4 : 1.0
+O: 5 2 : 65 : 1 4 : 1.0
+O: 5 2 : 69 : 1 4 : 1.0
+O: 5 2 : 73 : 1 4 : 1.0
+O: 5 2 : 77 : 1 4 : 1.0
+O: 5 3 : 65 : 1 4 : 1.0
+O: 5 3 : 69 : 1 4 : 1.0
+O: 5 3 : 73 : 1 4 : 1.0
+O: 5 3 : 77 : 1 4 : 1.0
+O: 5 4 : 65 : 1 4 : 1.0
+O: 5 4 : 69 : 1 4 : 1.0
+O: 5 4 : 73 : 1 4 : 1.0
+O: 5 4 : 77 : 1 4 : 1.0
+O: 5 5 : 65 : 1 4 : 1.0
+O: 5 5 : 69 : 1 4 : 1.0
+O: 5 5 : 73 : 1 4 : 1.0
+O: 5 5 : 77 : 1 4 : 1.0
+O: 0 0 : 100 : 1 6 : 1.0
+O: 0 0 : 101 : 1 6 : 1.0
+O: 0 0 : 108 : 1 6 : 1.0
+O: 0 0 : 109 : 1 6 : 1.0
+O: 0 1 : 100 : 1 6 : 1.0
+O: 0 1 : 101 : 1 6 : 1.0
+O: 0 1 : 108 : 1 6 : 1.0
+O: 0 1 : 109 : 1 6 : 1.0
+O: 0 2 : 100 : 1 6 : 1.0
+O: 0 2 : 101 : 1 6 : 1.0
+O: 0 2 : 108 : 1 6 : 1.0
+O: 0 2 : 109 : 1 6 : 1.0
+O: 0 3 : 100 : 1 6 : 1.0
+O: 0 3 : 101 : 1 6 : 1.0
+O: 0 3 : 108 : 1 6 : 1.0
+O: 0 3 : 109 : 1 6 : 1.0
+O: 0 4 : 100 : 1 6 : 1.0
+O: 0 4 : 101 : 1 6 : 1.0
+O: 0 4 : 108 : 1 6 : 1.0
+O: 0 4 : 109 : 1 6 : 1.0
+O: 0 5 : 100 : 1 6 : 1.0
+O: 0 5 : 101 : 1 6 : 1.0
+O: 0 5 : 108 : 1 6 : 1.0
+O: 0 5 : 109 : 1 6 : 1.0
+O: 1 0 : 100 : 1 6 : 1.0
+O: 1 0 : 101 : 1 6 : 1.0
+O: 1 0 : 108 : 1 6 : 1.0
+O: 1 0 : 109 : 1 6 : 1.0
+O: 1 1 : 100 : 1 6 : 1.0
+O: 1 1 : 101 : 1 6 : 1.0
+O: 1 1 : 108 : 1 6 : 1.0
+O: 1 1 : 109 : 1 6 : 1.0
+O: 1 2 : 100 : 1 6 : 1.0
+O: 1 2 : 101 : 1 6 : 1.0
+O: 1 2 : 108 : 1 6 : 1.0
+O: 1 2 : 109 : 1 6 : 1.0
+O: 1 3 : 100 : 1 6 : 1.0
+O: 1 3 : 101 : 1 6 : 1.0
+O: 1 3 : 108 : 1 6 : 1.0
+O: 1 3 : 109 : 1 6 : 1.0
+O: 1 4 : 100 : 1 6 : 1.0
+O: 1 4 : 101 : 1 6 : 1.0
+O: 1 4 : 108 : 1 6 : 1.0
+O: 1 4 : 109 : 1 6 : 1.0
+O: 1 5 : 100 : 1 6 : 1.0
+O: 1 5 : 101 : 1 6 : 1.0
+O: 1 5 : 108 : 1 6 : 1.0
+O: 1 5 : 109 : 1 6 : 1.0
+O: 2 0 : 100 : 1 6 : 1.0
+O: 2 0 : 101 : 1 6 : 1.0
+O: 2 0 : 108 : 1 6 : 1.0
+O: 2 0 : 109 : 1 6 : 1.0
+O: 2 1 : 100 : 1 6 : 1.0
+O: 2 1 : 101 : 1 6 : 1.0
+O: 2 1 : 108 : 1 6 : 1.0
+O: 2 1 : 109 : 1 6 : 1.0
+O: 2 2 : 100 : 1 6 : 1.0
+O: 2 2 : 101 : 1 6 : 1.0
+O: 2 2 : 108 : 1 6 : 1.0
+O: 2 2 : 109 : 1 6 : 1.0
+O: 2 3 : 100 : 1 6 : 1.0
+O: 2 3 : 101 : 1 6 : 1.0
+O: 2 3 : 108 : 1 6 : 1.0
+O: 2 3 : 109 : 1 6 : 1.0
+O: 2 4 : 100 : 1 6 : 1.0
+O: 2 4 : 101 : 1 6 : 1.0
+O: 2 4 : 108 : 1 6 : 1.0
+O: 2 4 : 109 : 1 6 : 1.0
+O: 2 5 : 100 : 1 6 : 1.0
+O: 2 5 : 101 : 1 6 : 1.0
+O: 2 5 : 108 : 1 6 : 1.0
+O: 2 5 : 109 : 1 6 : 1.0
+O: 3 0 : 100 : 1 6 : 1.0
+O: 3 0 : 101 : 1 6 : 1.0
+O: 3 0 : 108 : 1 6 : 1.0
+O: 3 0 : 109 : 1 6 : 1.0
+O: 3 1 : 100 : 1 6 : 1.0
+O: 3 1 : 101 : 1 6 : 1.0
+O: 3 1 : 108 : 1 6 : 1.0
+O: 3 1 : 109 : 1 6 : 1.0
+O: 3 2 : 100 : 1 6 : 1.0
+O: 3 2 : 101 : 1 6 : 1.0
+O: 3 2 : 108 : 1 6 : 1.0
+O: 3 2 : 109 : 1 6 : 1.0
+O: 3 3 : 100 : 1 6 : 1.0
+O: 3 3 : 101 : 1 6 : 1.0
+O: 3 3 : 108 : 1 6 : 1.0
+O: 3 3 : 109 : 1 6 : 1.0
+O: 3 4 : 100 : 1 6 : 1.0
+O: 3 4 : 101 : 1 6 : 1.0
+O: 3 4 : 108 : 1 6 : 1.0
+O: 3 4 : 109 : 1 6 : 1.0
+O: 3 5 : 100 : 1 6 : 1.0
+O: 3 5 : 101 : 1 6 : 1.0
+O: 3 5 : 108 : 1 6 : 1.0
+O: 3 5 : 109 : 1 6 : 1.0
+O: 4 0 : 100 : 1 6 : 1.0
+O: 4 0 : 101 : 1 6 : 1.0
+O: 4 0 : 108 : 1 6 : 1.0
+O: 4 0 : 109 : 1 6 : 1.0
+O: 4 1 : 100 : 1 6 : 1.0
+O: 4 1 : 101 : 1 6 : 1.0
+O: 4 1 : 108 : 1 6 : 1.0
+O: 4 1 : 109 : 1 6 : 1.0
+O: 4 2 : 100 : 1 6 : 1.0
+O: 4 2 : 101 : 1 6 : 1.0
+O: 4 2 : 108 : 1 6 : 1.0
+O: 4 2 : 109 : 1 6 : 1.0
+O: 4 3 : 100 : 1 6 : 1.0
+O: 4 3 : 101 : 1 6 : 1.0
+O: 4 3 : 108 : 1 6 : 1.0
+O: 4 3 : 109 : 1 6 : 1.0
+O: 4 4 : 100 : 1 6 : 1.0
+O: 4 4 : 101 : 1 6 : 1.0
+O: 4 4 : 108 : 1 6 : 1.0
+O: 4 4 : 109 : 1 6 : 1.0
+O: 4 5 : 100 : 1 6 : 1.0
+O: 4 5 : 101 : 1 6 : 1.0
+O: 4 5 : 108 : 1 6 : 1.0
+O: 4 5 : 109 : 1 6 : 1.0
+O: 5 0 : 100 : 1 6 : 1.0
+O: 5 0 : 101 : 1 6 : 1.0
+O: 5 0 : 108 : 1 6 : 1.0
+O: 5 0 : 109 : 1 6 : 1.0
+O: 5 1 : 100 : 1 6 : 1.0
+O: 5 1 : 101 : 1 6 : 1.0
+O: 5 1 : 108 : 1 6 : 1.0
+O: 5 1 : 109 : 1 6 : 1.0
+O: 5 2 : 100 : 1 6 : 1.0
+O: 5 2 : 101 : 1 6 : 1.0
+O: 5 2 : 108 : 1 6 : 1.0
+O: 5 2 : 109 : 1 6 : 1.0
+O: 5 3 : 100 : 1 6 : 1.0
+O: 5 3 : 101 : 1 6 : 1.0
+O: 5 3 : 108 : 1 6 : 1.0
+O: 5 3 : 109 : 1 6 : 1.0
+O: 5 4 : 100 : 1 6 : 1.0
+O: 5 4 : 101 : 1 6 : 1.0
+O: 5 4 : 108 : 1 6 : 1.0
+O: 5 4 : 109 : 1 6 : 1.0
+O: 5 5 : 100 : 1 6 : 1.0
+O: 5 5 : 101 : 1 6 : 1.0
+O: 5 5 : 108 : 1 6 : 1.0
+O: 5 5 : 109 : 1 6 : 1.0
+O: 0 0 : 120 : 1 7 : 1.0
+O: 0 0 : 121 : 1 7 : 1.0
+O: 0 0 : 124 : 1 7 : 1.0
+O: 0 0 : 125 : 1 7 : 1.0
+O: 0 1 : 120 : 1 7 : 1.0
+O: 0 1 : 121 : 1 7 : 1.0
+O: 0 1 : 124 : 1 7 : 1.0
+O: 0 1 : 125 : 1 7 : 1.0
+O: 0 2 : 120 : 1 7 : 1.0
+O: 0 2 : 121 : 1 7 : 1.0
+O: 0 2 : 124 : 1 7 : 1.0
+O: 0 2 : 125 : 1 7 : 1.0
+O: 0 3 : 120 : 1 7 : 1.0
+O: 0 3 : 121 : 1 7 : 1.0
+O: 0 3 : 124 : 1 7 : 1.0
+O: 0 3 : 125 : 1 7 : 1.0
+O: 0 4 : 120 : 1 7 : 1.0
+O: 0 4 : 121 : 1 7 : 1.0
+O: 0 4 : 124 : 1 7 : 1.0
+O: 0 4 : 125 : 1 7 : 1.0
+O: 0 5 : 120 : 1 7 : 1.0
+O: 0 5 : 121 : 1 7 : 1.0
+O: 0 5 : 124 : 1 7 : 1.0
+O: 0 5 : 125 : 1 7 : 1.0
+O: 1 0 : 120 : 1 7 : 1.0
+O: 1 0 : 121 : 1 7 : 1.0
+O: 1 0 : 124 : 1 7 : 1.0
+O: 1 0 : 125 : 1 7 : 1.0
+O: 1 1 : 120 : 1 7 : 1.0
+O: 1 1 : 121 : 1 7 : 1.0
+O: 1 1 : 124 : 1 7 : 1.0
+O: 1 1 : 125 : 1 7 : 1.0
+O: 1 2 : 120 : 1 7 : 1.0
+O: 1 2 : 121 : 1 7 : 1.0
+O: 1 2 : 124 : 1 7 : 1.0
+O: 1 2 : 125 : 1 7 : 1.0
+O: 1 3 : 120 : 1 7 : 1.0
+O: 1 3 : 121 : 1 7 : 1.0
+O: 1 3 : 124 : 1 7 : 1.0
+O: 1 3 : 125 : 1 7 : 1.0
+O: 1 4 : 120 : 1 7 : 1.0
+O: 1 4 : 121 : 1 7 : 1.0
+O: 1 4 : 124 : 1 7 : 1.0
+O: 1 4 : 125 : 1 7 : 1.0
+O: 1 5 : 120 : 1 7 : 1.0
+O: 1 5 : 121 : 1 7 : 1.0
+O: 1 5 : 124 : 1 7 : 1.0
+O: 1 5 : 125 : 1 7 : 1.0
+O: 2 0 : 120 : 1 7 : 1.0
+O: 2 0 : 121 : 1 7 : 1.0
+O: 2 0 : 124 : 1 7 : 1.0
+O: 2 0 : 125 : 1 7 : 1.0
+O: 2 1 : 120 : 1 7 : 1.0
+O: 2 1 : 121 : 1 7 : 1.0
+O: 2 1 : 124 : 1 7 : 1.0
+O: 2 1 : 125 : 1 7 : 1.0
+O: 2 2 : 120 : 1 7 : 1.0
+O: 2 2 : 121 : 1 7 : 1.0
+O: 2 2 : 124 : 1 7 : 1.0
+O: 2 2 : 125 : 1 7 : 1.0
+O: 2 3 : 120 : 1 7 : 1.0
+O: 2 3 : 121 : 1 7 : 1.0
+O: 2 3 : 124 : 1 7 : 1.0
+O: 2 3 : 125 : 1 7 : 1.0
+O: 2 4 : 120 : 1 7 : 1.0
+O: 2 4 : 121 : 1 7 : 1.0
+O: 2 4 : 124 : 1 7 : 1.0
+O: 2 4 : 125 : 1 7 : 1.0
+O: 2 5 : 120 : 1 7 : 1.0
+O: 2 5 : 121 : 1 7 : 1.0
+O: 2 5 : 124 : 1 7 : 1.0
+O: 2 5 : 125 : 1 7 : 1.0
+O: 3 0 : 120 : 1 7 : 1.0
+O: 3 0 : 121 : 1 7 : 1.0
+O: 3 0 : 124 : 1 7 : 1.0
+O: 3 0 : 125 : 1 7 : 1.0
+O: 3 1 : 120 : 1 7 : 1.0
+O: 3 1 : 121 : 1 7 : 1.0
+O: 3 1 : 124 : 1 7 : 1.0
+O: 3 1 : 125 : 1 7 : 1.0
+O: 3 2 : 120 : 1 7 : 1.0
+O: 3 2 : 121 : 1 7 : 1.0
+O: 3 2 : 124 : 1 7 : 1.0
+O: 3 2 : 125 : 1 7 : 1.0
+O: 3 3 : 120 : 1 7 : 1.0
+O: 3 3 : 121 : 1 7 : 1.0
+O: 3 3 : 124 : 1 7 : 1.0
+O: 3 3 : 125 : 1 7 : 1.0
+O: 3 4 : 120 : 1 7 : 1.0
+O: 3 4 : 121 : 1 7 : 1.0
+O: 3 4 : 124 : 1 7 : 1.0
+O: 3 4 : 125 : 1 7 : 1.0
+O: 3 5 : 120 : 1 7 : 1.0
+O: 3 5 : 121 : 1 7 : 1.0
+O: 3 5 : 124 : 1 7 : 1.0
+O: 3 5 : 125 : 1 7 : 1.0
+O: 4 0 : 120 : 1 7 : 1.0
+O: 4 0 : 121 : 1 7 : 1.0
+O: 4 0 : 124 : 1 7 : 1.0
+O: 4 0 : 125 : 1 7 : 1.0
+O: 4 1 : 120 : 1 7 : 1.0
+O: 4 1 : 121 : 1 7 : 1.0
+O: 4 1 : 124 : 1 7 : 1.0
+O: 4 1 : 125 : 1 7 : 1.0
+O: 4 2 : 120 : 1 7 : 1.0
+O: 4 2 : 121 : 1 7 : 1.0
+O: 4 2 : 124 : 1 7 : 1.0
+O: 4 2 : 125 : 1 7 : 1.0
+O: 4 3 : 120 : 1 7 : 1.0
+O: 4 3 : 121 : 1 7 : 1.0
+O: 4 3 : 124 : 1 7 : 1.0
+O: 4 3 : 125 : 1 7 : 1.0
+O: 4 4 : 120 : 1 7 : 1.0
+O: 4 4 : 121 : 1 7 : 1.0
+O: 4 4 : 124 : 1 7 : 1.0
+O: 4 4 : 125 : 1 7 : 1.0
+O: 4 5 : 120 : 1 7 : 1.0
+O: 4 5 : 121 : 1 7 : 1.0
+O: 4 5 : 124 : 1 7 : 1.0
+O: 4 5 : 125 : 1 7 : 1.0
+O: 5 0 : 120 : 1 7 : 1.0
+O: 5 0 : 121 : 1 7 : 1.0
+O: 5 0 : 124 : 1 7 : 1.0
+O: 5 0 : 125 : 1 7 : 1.0
+O: 5 1 : 120 : 1 7 : 1.0
+O: 5 1 : 121 : 1 7 : 1.0
+O: 5 1 : 124 : 1 7 : 1.0
+O: 5 1 : 125 : 1 7 : 1.0
+O: 5 2 : 120 : 1 7 : 1.0
+O: 5 2 : 121 : 1 7 : 1.0
+O: 5 2 : 124 : 1 7 : 1.0
+O: 5 2 : 125 : 1 7 : 1.0
+O: 5 3 : 120 : 1 7 : 1.0
+O: 5 3 : 121 : 1 7 : 1.0
+O: 5 3 : 124 : 1 7 : 1.0
+O: 5 3 : 125 : 1 7 : 1.0
+O: 5 4 : 120 : 1 7 : 1.0
+O: 5 4 : 121 : 1 7 : 1.0
+O: 5 4 : 124 : 1 7 : 1.0
+O: 5 4 : 125 : 1 7 : 1.0
+O: 5 5 : 120 : 1 7 : 1.0
+O: 5 5 : 121 : 1 7 : 1.0
+O: 5 5 : 124 : 1 7 : 1.0
+O: 5 5 : 125 : 1 7 : 1.0
+O: 0 0 : 128 : 2 0 : 1.0
+O: 0 0 : 130 : 2 0 : 1.0
+O: 0 0 : 136 : 2 0 : 1.0
+O: 0 0 : 138 : 2 0 : 1.0
+O: 0 1 : 128 : 2 0 : 1.0
+O: 0 1 : 130 : 2 0 : 1.0
+O: 0 1 : 136 : 2 0 : 1.0
+O: 0 1 : 138 : 2 0 : 1.0
+O: 0 2 : 128 : 2 0 : 1.0
+O: 0 2 : 130 : 2 0 : 1.0
+O: 0 2 : 136 : 2 0 : 1.0
+O: 0 2 : 138 : 2 0 : 1.0
+O: 0 3 : 128 : 2 0 : 1.0
+O: 0 3 : 130 : 2 0 : 1.0
+O: 0 3 : 136 : 2 0 : 1.0
+O: 0 3 : 138 : 2 0 : 1.0
+O: 0 4 : 128 : 2 0 : 1.0
+O: 0 4 : 130 : 2 0 : 1.0
+O: 0 4 : 136 : 2 0 : 1.0
+O: 0 4 : 138 : 2 0 : 1.0
+O: 0 5 : 128 : 2 0 : 1.0
+O: 0 5 : 130 : 2 0 : 1.0
+O: 0 5 : 136 : 2 0 : 1.0
+O: 0 5 : 138 : 2 0 : 1.0
+O: 1 0 : 128 : 2 0 : 1.0
+O: 1 0 : 130 : 2 0 : 1.0
+O: 1 0 : 136 : 2 0 : 1.0
+O: 1 0 : 138 : 2 0 : 1.0
+O: 1 1 : 128 : 2 0 : 1.0
+O: 1 1 : 130 : 2 0 : 1.0
+O: 1 1 : 136 : 2 0 : 1.0
+O: 1 1 : 138 : 2 0 : 1.0
+O: 1 2 : 128 : 2 0 : 1.0
+O: 1 2 : 130 : 2 0 : 1.0
+O: 1 2 : 136 : 2 0 : 1.0
+O: 1 2 : 138 : 2 0 : 1.0
+O: 1 3 : 128 : 2 0 : 1.0
+O: 1 3 : 130 : 2 0 : 1.0
+O: 1 3 : 136 : 2 0 : 1.0
+O: 1 3 : 138 : 2 0 : 1.0
+O: 1 4 : 128 : 2 0 : 1.0
+O: 1 4 : 130 : 2 0 : 1.0
+O: 1 4 : 136 : 2 0 : 1.0
+O: 1 4 : 138 : 2 0 : 1.0
+O: 1 5 : 128 : 2 0 : 1.0
+O: 1 5 : 130 : 2 0 : 1.0
+O: 1 5 : 136 : 2 0 : 1.0
+O: 1 5 : 138 : 2 0 : 1.0
+O: 2 0 : 128 : 2 0 : 1.0
+O: 2 0 : 130 : 2 0 : 1.0
+O: 2 0 : 136 : 2 0 : 1.0
+O: 2 0 : 138 : 2 0 : 1.0
+O: 2 1 : 128 : 2 0 : 1.0
+O: 2 1 : 130 : 2 0 : 1.0
+O: 2 1 : 136 : 2 0 : 1.0
+O: 2 1 : 138 : 2 0 : 1.0
+O: 2 2 : 128 : 2 0 : 1.0
+O: 2 2 : 130 : 2 0 : 1.0
+O: 2 2 : 136 : 2 0 : 1.0
+O: 2 2 : 138 : 2 0 : 1.0
+O: 2 3 : 128 : 2 0 : 1.0
+O: 2 3 : 130 : 2 0 : 1.0
+O: 2 3 : 136 : 2 0 : 1.0
+O: 2 3 : 138 : 2 0 : 1.0
+O: 2 4 : 128 : 2 0 : 1.0
+O: 2 4 : 130 : 2 0 : 1.0
+O: 2 4 : 136 : 2 0 : 1.0
+O: 2 4 : 138 : 2 0 : 1.0
+O: 2 5 : 128 : 2 0 : 1.0
+O: 2 5 : 130 : 2 0 : 1.0
+O: 2 5 : 136 : 2 0 : 1.0
+O: 2 5 : 138 : 2 0 : 1.0
+O: 3 0 : 128 : 2 0 : 1.0
+O: 3 0 : 130 : 2 0 : 1.0
+O: 3 0 : 136 : 2 0 : 1.0
+O: 3 0 : 138 : 2 0 : 1.0
+O: 3 1 : 128 : 2 0 : 1.0
+O: 3 1 : 130 : 2 0 : 1.0
+O: 3 1 : 136 : 2 0 : 1.0
+O: 3 1 : 138 : 2 0 : 1.0
+O: 3 2 : 128 : 2 0 : 1.0
+O: 3 2 : 130 : 2 0 : 1.0
+O: 3 2 : 136 : 2 0 : 1.0
+O: 3 2 : 138 : 2 0 : 1.0
+O: 3 3 : 128 : 2 0 : 1.0
+O: 3 3 : 130 : 2 0 : 1.0
+O: 3 3 : 136 : 2 0 : 1.0
+O: 3 3 : 138 : 2 0 : 1.0
+O: 3 4 : 128 : 2 0 : 1.0
+O: 3 4 : 130 : 2 0 : 1.0
+O: 3 4 : 136 : 2 0 : 1.0
+O: 3 4 : 138 : 2 0 : 1.0
+O: 3 5 : 128 : 2 0 : 1.0
+O: 3 5 : 130 : 2 0 : 1.0
+O: 3 5 : 136 : 2 0 : 1.0
+O: 3 5 : 138 : 2 0 : 1.0
+O: 4 0 : 128 : 2 0 : 1.0
+O: 4 0 : 130 : 2 0 : 1.0
+O: 4 0 : 136 : 2 0 : 1.0
+O: 4 0 : 138 : 2 0 : 1.0
+O: 4 1 : 128 : 2 0 : 1.0
+O: 4 1 : 130 : 2 0 : 1.0
+O: 4 1 : 136 : 2 0 : 1.0
+O: 4 1 : 138 : 2 0 : 1.0
+O: 4 2 : 128 : 2 0 : 1.0
+O: 4 2 : 130 : 2 0 : 1.0
+O: 4 2 : 136 : 2 0 : 1.0
+O: 4 2 : 138 : 2 0 : 1.0
+O: 4 3 : 128 : 2 0 : 1.0
+O: 4 3 : 130 : 2 0 : 1.0
+O: 4 3 : 136 : 2 0 : 1.0
+O: 4 3 : 138 : 2 0 : 1.0
+O: 4 4 : 128 : 2 0 : 1.0
+O: 4 4 : 130 : 2 0 : 1.0
+O: 4 4 : 136 : 2 0 : 1.0
+O: 4 4 : 138 : 2 0 : 1.0
+O: 4 5 : 128 : 2 0 : 1.0
+O: 4 5 : 130 : 2 0 : 1.0
+O: 4 5 : 136 : 2 0 : 1.0
+O: 4 5 : 138 : 2 0 : 1.0
+O: 5 0 : 128 : 2 0 : 1.0
+O: 5 0 : 130 : 2 0 : 1.0
+O: 5 0 : 136 : 2 0 : 1.0
+O: 5 0 : 138 : 2 0 : 1.0
+O: 5 1 : 128 : 2 0 : 1.0
+O: 5 1 : 130 : 2 0 : 1.0
+O: 5 1 : 136 : 2 0 : 1.0
+O: 5 1 : 138 : 2 0 : 1.0
+O: 5 2 : 128 : 2 0 : 1.0
+O: 5 2 : 130 : 2 0 : 1.0
+O: 5 2 : 136 : 2 0 : 1.0
+O: 5 2 : 138 : 2 0 : 1.0
+O: 5 3 : 128 : 2 0 : 1.0
+O: 5 3 : 130 : 2 0 : 1.0
+O: 5 3 : 136 : 2 0 : 1.0
+O: 5 3 : 138 : 2 0 : 1.0
+O: 5 4 : 128 : 2 0 : 1.0
+O: 5 4 : 130 : 2 0 : 1.0
+O: 5 4 : 136 : 2 0 : 1.0
+O: 5 4 : 138 : 2 0 : 1.0
+O: 5 5 : 128 : 2 0 : 1.0
+O: 5 5 : 130 : 2 0 : 1.0
+O: 5 5 : 136 : 2 0 : 1.0
+O: 5 5 : 138 : 2 0 : 1.0
+O: 0 0 : 144 : 2 1 : 1.0
+O: 0 0 : 145 : 2 1 : 1.0
+O: 0 0 : 152 : 2 1 : 1.0
+O: 0 0 : 153 : 2 1 : 1.0
+O: 0 1 : 144 : 2 1 : 1.0
+O: 0 1 : 145 : 2 1 : 1.0
+O: 0 1 : 152 : 2 1 : 1.0
+O: 0 1 : 153 : 2 1 : 1.0
+O: 0 2 : 144 : 2 1 : 1.0
+O: 0 2 : 145 : 2 1 : 1.0
+O: 0 2 : 152 : 2 1 : 1.0
+O: 0 2 : 153 : 2 1 : 1.0
+O: 0 3 : 144 : 2 1 : 1.0
+O: 0 3 : 145 : 2 1 : 1.0
+O: 0 3 : 152 : 2 1 : 1.0
+O: 0 3 : 153 : 2 1 : 1.0
+O: 0 4 : 144 : 2 1 : 1.0
+O: 0 4 : 145 : 2 1 : 1.0
+O: 0 4 : 152 : 2 1 : 1.0
+O: 0 4 : 153 : 2 1 : 1.0
+O: 0 5 : 144 : 2 1 : 1.0
+O: 0 5 : 145 : 2 1 : 1.0
+O: 0 5 : 152 : 2 1 : 1.0
+O: 0 5 : 153 : 2 1 : 1.0
+O: 1 0 : 144 : 2 1 : 1.0
+O: 1 0 : 145 : 2 1 : 1.0
+O: 1 0 : 152 : 2 1 : 1.0
+O: 1 0 : 153 : 2 1 : 1.0
+O: 1 1 : 144 : 2 1 : 1.0
+O: 1 1 : 145 : 2 1 : 1.0
+O: 1 1 : 152 : 2 1 : 1.0
+O: 1 1 : 153 : 2 1 : 1.0
+O: 1 2 : 144 : 2 1 : 1.0
+O: 1 2 : 145 : 2 1 : 1.0
+O: 1 2 : 152 : 2 1 : 1.0
+O: 1 2 : 153 : 2 1 : 1.0
+O: 1 3 : 144 : 2 1 : 1.0
+O: 1 3 : 145 : 2 1 : 1.0
+O: 1 3 : 152 : 2 1 : 1.0
+O: 1 3 : 153 : 2 1 : 1.0
+O: 1 4 : 144 : 2 1 : 1.0
+O: 1 4 : 145 : 2 1 : 1.0
+O: 1 4 : 152 : 2 1 : 1.0
+O: 1 4 : 153 : 2 1 : 1.0
+O: 1 5 : 144 : 2 1 : 1.0
+O: 1 5 : 145 : 2 1 : 1.0
+O: 1 5 : 152 : 2 1 : 1.0
+O: 1 5 : 153 : 2 1 : 1.0
+O: 2 0 : 144 : 2 1 : 1.0
+O: 2 0 : 145 : 2 1 : 1.0
+O: 2 0 : 152 : 2 1 : 1.0
+O: 2 0 : 153 : 2 1 : 1.0
+O: 2 1 : 144 : 2 1 : 1.0
+O: 2 1 : 145 : 2 1 : 1.0
+O: 2 1 : 152 : 2 1 : 1.0
+O: 2 1 : 153 : 2 1 : 1.0
+O: 2 2 : 144 : 2 1 : 1.0
+O: 2 2 : 145 : 2 1 : 1.0
+O: 2 2 : 152 : 2 1 : 1.0
+O: 2 2 : 153 : 2 1 : 1.0
+O: 2 3 : 144 : 2 1 : 1.0
+O: 2 3 : 145 : 2 1 : 1.0
+O: 2 3 : 152 : 2 1 : 1.0
+O: 2 3 : 153 : 2 1 : 1.0
+O: 2 4 : 144 : 2 1 : 1.0
+O: 2 4 : 145 : 2 1 : 1.0
+O: 2 4 : 152 : 2 1 : 1.0
+O: 2 4 : 153 : 2 1 : 1.0
+O: 2 5 : 144 : 2 1 : 1.0
+O: 2 5 : 145 : 2 1 : 1.0
+O: 2 5 : 152 : 2 1 : 1.0
+O: 2 5 : 153 : 2 1 : 1.0
+O: 3 0 : 144 : 2 1 : 1.0
+O: 3 0 : 145 : 2 1 : 1.0
+O: 3 0 : 152 : 2 1 : 1.0
+O: 3 0 : 153 : 2 1 : 1.0
+O: 3 1 : 144 : 2 1 : 1.0
+O: 3 1 : 145 : 2 1 : 1.0
+O: 3 1 : 152 : 2 1 : 1.0
+O: 3 1 : 153 : 2 1 : 1.0
+O: 3 2 : 144 : 2 1 : 1.0
+O: 3 2 : 145 : 2 1 : 1.0
+O: 3 2 : 152 : 2 1 : 1.0
+O: 3 2 : 153 : 2 1 : 1.0
+O: 3 3 : 144 : 2 1 : 1.0
+O: 3 3 : 145 : 2 1 : 1.0
+O: 3 3 : 152 : 2 1 : 1.0
+O: 3 3 : 153 : 2 1 : 1.0
+O: 3 4 : 144 : 2 1 : 1.0
+O: 3 4 : 145 : 2 1 : 1.0
+O: 3 4 : 152 : 2 1 : 1.0
+O: 3 4 : 153 : 2 1 : 1.0
+O: 3 5 : 144 : 2 1 : 1.0
+O: 3 5 : 145 : 2 1 : 1.0
+O: 3 5 : 152 : 2 1 : 1.0
+O: 3 5 : 153 : 2 1 : 1.0
+O: 4 0 : 144 : 2 1 : 1.0
+O: 4 0 : 145 : 2 1 : 1.0
+O: 4 0 : 152 : 2 1 : 1.0
+O: 4 0 : 153 : 2 1 : 1.0
+O: 4 1 : 144 : 2 1 : 1.0
+O: 4 1 : 145 : 2 1 : 1.0
+O: 4 1 : 152 : 2 1 : 1.0
+O: 4 1 : 153 : 2 1 : 1.0
+O: 4 2 : 144 : 2 1 : 1.0
+O: 4 2 : 145 : 2 1 : 1.0
+O: 4 2 : 152 : 2 1 : 1.0
+O: 4 2 : 153 : 2 1 : 1.0
+O: 4 3 : 144 : 2 1 : 1.0
+O: 4 3 : 145 : 2 1 : 1.0
+O: 4 3 : 152 : 2 1 : 1.0
+O: 4 3 : 153 : 2 1 : 1.0
+O: 4 4 : 144 : 2 1 : 1.0
+O: 4 4 : 145 : 2 1 : 1.0
+O: 4 4 : 152 : 2 1 : 1.0
+O: 4 4 : 153 : 2 1 : 1.0
+O: 4 5 : 144 : 2 1 : 1.0
+O: 4 5 : 145 : 2 1 : 1.0
+O: 4 5 : 152 : 2 1 : 1.0
+O: 4 5 : 153 : 2 1 : 1.0
+O: 5 0 : 144 : 2 1 : 1.0
+O: 5 0 : 145 : 2 1 : 1.0
+O: 5 0 : 152 : 2 1 : 1.0
+O: 5 0 : 153 : 2 1 : 1.0
+O: 5 1 : 144 : 2 1 : 1.0
+O: 5 1 : 145 : 2 1 : 1.0
+O: 5 1 : 152 : 2 1 : 1.0
+O: 5 1 : 153 : 2 1 : 1.0
+O: 5 2 : 144 : 2 1 : 1.0
+O: 5 2 : 145 : 2 1 : 1.0
+O: 5 2 : 152 : 2 1 : 1.0
+O: 5 2 : 153 : 2 1 : 1.0
+O: 5 3 : 144 : 2 1 : 1.0
+O: 5 3 : 145 : 2 1 : 1.0
+O: 5 3 : 152 : 2 1 : 1.0
+O: 5 3 : 153 : 2 1 : 1.0
+O: 5 4 : 144 : 2 1 : 1.0
+O: 5 4 : 145 : 2 1 : 1.0
+O: 5 4 : 152 : 2 1 : 1.0
+O: 5 4 : 153 : 2 1 : 1.0
+O: 5 5 : 144 : 2 1 : 1.0
+O: 5 5 : 145 : 2 1 : 1.0
+O: 5 5 : 152 : 2 1 : 1.0
+O: 5 5 : 153 : 2 1 : 1.0
+O: 0 0 : 160 : 2 2 : 1.0
+O: 0 0 : 161 : 2 2 : 1.0
+O: 0 0 : 162 : 2 2 : 1.0
+O: 0 0 : 163 : 2 2 : 1.0
+O: 0 0 : 168 : 2 2 : 1.0
+O: 0 0 : 169 : 2 2 : 1.0
+O: 0 0 : 170 : 2 2 : 1.0
+O: 0 0 : 171 : 2 2 : 1.0
+O: 0 1 : 160 : 2 2 : 1.0
+O: 0 1 : 161 : 2 2 : 1.0
+O: 0 1 : 162 : 2 2 : 1.0
+O: 0 1 : 163 : 2 2 : 1.0
+O: 0 1 : 168 : 2 2 : 1.0
+O: 0 1 : 169 : 2 2 : 1.0
+O: 0 1 : 170 : 2 2 : 1.0
+O: 0 1 : 171 : 2 2 : 1.0
+O: 0 2 : 160 : 2 2 : 1.0
+O: 0 2 : 161 : 2 2 : 1.0
+O: 0 2 : 162 : 2 2 : 1.0
+O: 0 2 : 163 : 2 2 : 1.0
+O: 0 2 : 168 : 2 2 : 1.0
+O: 0 2 : 169 : 2 2 : 1.0
+O: 0 2 : 170 : 2 2 : 1.0
+O: 0 2 : 171 : 2 2 : 1.0
+O: 0 3 : 160 : 2 2 : 1.0
+O: 0 3 : 161 : 2 2 : 1.0
+O: 0 3 : 162 : 2 2 : 1.0
+O: 0 3 : 163 : 2 2 : 1.0
+O: 0 3 : 168 : 2 2 : 1.0
+O: 0 3 : 169 : 2 2 : 1.0
+O: 0 3 : 170 : 2 2 : 1.0
+O: 0 3 : 171 : 2 2 : 1.0
+O: 0 4 : 160 : 2 2 : 1.0
+O: 0 4 : 161 : 2 2 : 1.0
+O: 0 4 : 162 : 2 2 : 1.0
+O: 0 4 : 163 : 2 2 : 1.0
+O: 0 4 : 168 : 2 2 : 1.0
+O: 0 4 : 169 : 2 2 : 1.0
+O: 0 4 : 170 : 2 2 : 1.0
+O: 0 4 : 171 : 2 2 : 1.0
+O: 0 5 : 160 : 2 2 : 1.0
+O: 0 5 : 161 : 2 2 : 1.0
+O: 0 5 : 162 : 2 2 : 1.0
+O: 0 5 : 163 : 2 2 : 1.0
+O: 0 5 : 168 : 2 2 : 1.0
+O: 0 5 : 169 : 2 2 : 1.0
+O: 0 5 : 170 : 2 2 : 1.0
+O: 0 5 : 171 : 2 2 : 1.0
+O: 1 0 : 160 : 2 2 : 1.0
+O: 1 0 : 161 : 2 2 : 1.0
+O: 1 0 : 162 : 2 2 : 1.0
+O: 1 0 : 163 : 2 2 : 1.0
+O: 1 0 : 168 : 2 2 : 1.0
+O: 1 0 : 169 : 2 2 : 1.0
+O: 1 0 : 170 : 2 2 : 1.0
+O: 1 0 : 171 : 2 2 : 1.0
+O: 1 1 : 160 : 2 2 : 1.0
+O: 1 1 : 161 : 2 2 : 1.0
+O: 1 1 : 162 : 2 2 : 1.0
+O: 1 1 : 163 : 2 2 : 1.0
+O: 1 1 : 168 : 2 2 : 1.0
+O: 1 1 : 169 : 2 2 : 1.0
+O: 1 1 : 170 : 2 2 : 1.0
+O: 1 1 : 171 : 2 2 : 1.0
+O: 1 2 : 160 : 2 2 : 1.0
+O: 1 2 : 161 : 2 2 : 1.0
+O: 1 2 : 162 : 2 2 : 1.0
+O: 1 2 : 163 : 2 2 : 1.0
+O: 1 2 : 168 : 2 2 : 1.0
+O: 1 2 : 169 : 2 2 : 1.0
+O: 1 2 : 170 : 2 2 : 1.0
+O: 1 2 : 171 : 2 2 : 1.0
+O: 1 3 : 160 : 2 2 : 1.0
+O: 1 3 : 161 : 2 2 : 1.0
+O: 1 3 : 162 : 2 2 : 1.0
+O: 1 3 : 163 : 2 2 : 1.0
+O: 1 3 : 168 : 2 2 : 1.0
+O: 1 3 : 169 : 2 2 : 1.0
+O: 1 3 : 170 : 2 2 : 1.0
+O: 1 3 : 171 : 2 2 : 1.0
+O: 1 4 : 160 : 2 2 : 1.0
+O: 1 4 : 161 : 2 2 : 1.0
+O: 1 4 : 162 : 2 2 : 1.0
+O: 1 4 : 163 : 2 2 : 1.0
+O: 1 4 : 168 : 2 2 : 1.0
+O: 1 4 : 169 : 2 2 : 1.0
+O: 1 4 : 170 : 2 2 : 1.0
+O: 1 4 : 171 : 2 2 : 1.0
+O: 1 5 : 160 : 2 2 : 1.0
+O: 1 5 : 161 : 2 2 : 1.0
+O: 1 5 : 162 : 2 2 : 1.0
+O: 1 5 : 163 : 2 2 : 1.0
+O: 1 5 : 168 : 2 2 : 1.0
+O: 1 5 : 169 : 2 2 : 1.0
+O: 1 5 : 170 : 2 2 : 1.0
+O: 1 5 : 171 : 2 2 : 1.0
+O: 2 0 : 160 : 2 2 : 1.0
+O: 2 0 : 161 : 2 2 : 1.0
+O: 2 0 : 162 : 2 2 : 1.0
+O: 2 0 : 163 : 2 2 : 1.0
+O: 2 0 : 168 : 2 2 : 1.0
+O: 2 0 : 169 : 2 2 : 1.0
+O: 2 0 : 170 : 2 2 : 1.0
+O: 2 0 : 171 : 2 2 : 1.0
+O: 2 1 : 160 : 2 2 : 1.0
+O: 2 1 : 161 : 2 2 : 1.0
+O: 2 1 : 162 : 2 2 : 1.0
+O: 2 1 : 163 : 2 2 : 1.0
+O: 2 1 : 168 : 2 2 : 1.0
+O: 2 1 : 169 : 2 2 : 1.0
+O: 2 1 : 170 : 2 2 : 1.0
+O: 2 1 : 171 : 2 2 : 1.0
+O: 2 2 : 160 : 2 2 : 1.0
+O: 2 2 : 161 : 2 2 : 1.0
+O: 2 2 : 162 : 2 2 : 1.0
+O: 2 2 : 163 : 2 2 : 1.0
+O: 2 2 : 168 : 2 2 : 1.0
+O: 2 2 : 169 : 2 2 : 1.0
+O: 2 2 : 170 : 2 2 : 1.0
+O: 2 2 : 171 : 2 2 : 1.0
+O: 2 3 : 160 : 2 2 : 1.0
+O: 2 3 : 161 : 2 2 : 1.0
+O: 2 3 : 162 : 2 2 : 1.0
+O: 2 3 : 163 : 2 2 : 1.0
+O: 2 3 : 168 : 2 2 : 1.0
+O: 2 3 : 169 : 2 2 : 1.0
+O: 2 3 : 170 : 2 2 : 1.0
+O: 2 3 : 171 : 2 2 : 1.0
+O: 2 4 : 160 : 2 2 : 1.0
+O: 2 4 : 161 : 2 2 : 1.0
+O: 2 4 : 162 : 2 2 : 1.0
+O: 2 4 : 163 : 2 2 : 1.0
+O: 2 4 : 168 : 2 2 : 1.0
+O: 2 4 : 169 : 2 2 : 1.0
+O: 2 4 : 170 : 2 2 : 1.0
+O: 2 4 : 171 : 2 2 : 1.0
+O: 2 5 : 160 : 2 2 : 1.0
+O: 2 5 : 161 : 2 2 : 1.0
+O: 2 5 : 162 : 2 2 : 1.0
+O: 2 5 : 163 : 2 2 : 1.0
+O: 2 5 : 168 : 2 2 : 1.0
+O: 2 5 : 169 : 2 2 : 1.0
+O: 2 5 : 170 : 2 2 : 1.0
+O: 2 5 : 171 : 2 2 : 1.0
+O: 3 0 : 160 : 2 2 : 1.0
+O: 3 0 : 161 : 2 2 : 1.0
+O: 3 0 : 162 : 2 2 : 1.0
+O: 3 0 : 163 : 2 2 : 1.0
+O: 3 0 : 168 : 2 2 : 1.0
+O: 3 0 : 169 : 2 2 : 1.0
+O: 3 0 : 170 : 2 2 : 1.0
+O: 3 0 : 171 : 2 2 : 1.0
+O: 3 1 : 160 : 2 2 : 1.0
+O: 3 1 : 161 : 2 2 : 1.0
+O: 3 1 : 162 : 2 2 : 1.0
+O: 3 1 : 163 : 2 2 : 1.0
+O: 3 1 : 168 : 2 2 : 1.0
+O: 3 1 : 169 : 2 2 : 1.0
+O: 3 1 : 170 : 2 2 : 1.0
+O: 3 1 : 171 : 2 2 : 1.0
+O: 3 2 : 160 : 2 2 : 1.0
+O: 3 2 : 161 : 2 2 : 1.0
+O: 3 2 : 162 : 2 2 : 1.0
+O: 3 2 : 163 : 2 2 : 1.0
+O: 3 2 : 168 : 2 2 : 1.0
+O: 3 2 : 169 : 2 2 : 1.0
+O: 3 2 : 170 : 2 2 : 1.0
+O: 3 2 : 171 : 2 2 : 1.0
+O: 3 3 : 160 : 2 2 : 1.0
+O: 3 3 : 161 : 2 2 : 1.0
+O: 3 3 : 162 : 2 2 : 1.0
+O: 3 3 : 163 : 2 2 : 1.0
+O: 3 3 : 168 : 2 2 : 1.0
+O: 3 3 : 169 : 2 2 : 1.0
+O: 3 3 : 170 : 2 2 : 1.0
+O: 3 3 : 171 : 2 2 : 1.0
+O: 3 4 : 160 : 2 2 : 1.0
+O: 3 4 : 161 : 2 2 : 1.0
+O: 3 4 : 162 : 2 2 : 1.0
+O: 3 4 : 163 : 2 2 : 1.0
+O: 3 4 : 168 : 2 2 : 1.0
+O: 3 4 : 169 : 2 2 : 1.0
+O: 3 4 : 170 : 2 2 : 1.0
+O: 3 4 : 171 : 2 2 : 1.0
+O: 3 5 : 160 : 2 2 : 1.0
+O: 3 5 : 161 : 2 2 : 1.0
+O: 3 5 : 162 : 2 2 : 1.0
+O: 3 5 : 163 : 2 2 : 1.0
+O: 3 5 : 168 : 2 2 : 1.0
+O: 3 5 : 169 : 2 2 : 1.0
+O: 3 5 : 170 : 2 2 : 1.0
+O: 3 5 : 171 : 2 2 : 1.0
+O: 4 0 : 160 : 2 2 : 1.0
+O: 4 0 : 161 : 2 2 : 1.0
+O: 4 0 : 162 : 2 2 : 1.0
+O: 4 0 : 163 : 2 2 : 1.0
+O: 4 0 : 168 : 2 2 : 1.0
+O: 4 0 : 169 : 2 2 : 1.0
+O: 4 0 : 170 : 2 2 : 1.0
+O: 4 0 : 171 : 2 2 : 1.0
+O: 4 1 : 160 : 2 2 : 1.0
+O: 4 1 : 161 : 2 2 : 1.0
+O: 4 1 : 162 : 2 2 : 1.0
+O: 4 1 : 163 : 2 2 : 1.0
+O: 4 1 : 168 : 2 2 : 1.0
+O: 4 1 : 169 : 2 2 : 1.0
+O: 4 1 : 170 : 2 2 : 1.0
+O: 4 1 : 171 : 2 2 : 1.0
+O: 4 2 : 160 : 2 2 : 1.0
+O: 4 2 : 161 : 2 2 : 1.0
+O: 4 2 : 162 : 2 2 : 1.0
+O: 4 2 : 163 : 2 2 : 1.0
+O: 4 2 : 168 : 2 2 : 1.0
+O: 4 2 : 169 : 2 2 : 1.0
+O: 4 2 : 170 : 2 2 : 1.0
+O: 4 2 : 171 : 2 2 : 1.0
+O: 4 3 : 160 : 2 2 : 1.0
+O: 4 3 : 161 : 2 2 : 1.0
+O: 4 3 : 162 : 2 2 : 1.0
+O: 4 3 : 163 : 2 2 : 1.0
+O: 4 3 : 168 : 2 2 : 1.0
+O: 4 3 : 169 : 2 2 : 1.0
+O: 4 3 : 170 : 2 2 : 1.0
+O: 4 3 : 171 : 2 2 : 1.0
+O: 4 4 : 160 : 2 2 : 1.0
+O: 4 4 : 161 : 2 2 : 1.0
+O: 4 4 : 162 : 2 2 : 1.0
+O: 4 4 : 163 : 2 2 : 1.0
+O: 4 4 : 168 : 2 2 : 1.0
+O: 4 4 : 169 : 2 2 : 1.0
+O: 4 4 : 170 : 2 2 : 1.0
+O: 4 4 : 171 : 2 2 : 1.0
+O: 4 5 : 160 : 2 2 : 1.0
+O: 4 5 : 161 : 2 2 : 1.0
+O: 4 5 : 162 : 2 2 : 1.0
+O: 4 5 : 163 : 2 2 : 1.0
+O: 4 5 : 168 : 2 2 : 1.0
+O: 4 5 : 169 : 2 2 : 1.0
+O: 4 5 : 170 : 2 2 : 1.0
+O: 4 5 : 171 : 2 2 : 1.0
+O: 5 0 : 160 : 2 2 : 1.0
+O: 5 0 : 161 : 2 2 : 1.0
+O: 5 0 : 162 : 2 2 : 1.0
+O: 5 0 : 163 : 2 2 : 1.0
+O: 5 0 : 168 : 2 2 : 1.0
+O: 5 0 : 169 : 2 2 : 1.0
+O: 5 0 : 170 : 2 2 : 1.0
+O: 5 0 : 171 : 2 2 : 1.0
+O: 5 1 : 160 : 2 2 : 1.0
+O: 5 1 : 161 : 2 2 : 1.0
+O: 5 1 : 162 : 2 2 : 1.0
+O: 5 1 : 163 : 2 2 : 1.0
+O: 5 1 : 168 : 2 2 : 1.0
+O: 5 1 : 169 : 2 2 : 1.0
+O: 5 1 : 170 : 2 2 : 1.0
+O: 5 1 : 171 : 2 2 : 1.0
+O: 5 2 : 160 : 2 2 : 1.0
+O: 5 2 : 161 : 2 2 : 1.0
+O: 5 2 : 162 : 2 2 : 1.0
+O: 5 2 : 163 : 2 2 : 1.0
+O: 5 2 : 168 : 2 2 : 1.0
+O: 5 2 : 169 : 2 2 : 1.0
+O: 5 2 : 170 : 2 2 : 1.0
+O: 5 2 : 171 : 2 2 : 1.0
+O: 5 3 : 160 : 2 2 : 1.0
+O: 5 3 : 161 : 2 2 : 1.0
+O: 5 3 : 162 : 2 2 : 1.0
+O: 5 3 : 163 : 2 2 : 1.0
+O: 5 3 : 168 : 2 2 : 1.0
+O: 5 3 : 169 : 2 2 : 1.0
+O: 5 3 : 170 : 2 2 : 1.0
+O: 5 3 : 171 : 2 2 : 1.0
+O: 5 4 : 160 : 2 2 : 1.0
+O: 5 4 : 161 : 2 2 : 1.0
+O: 5 4 : 162 : 2 2 : 1.0
+O: 5 4 : 163 : 2 2 : 1.0
+O: 5 4 : 168 : 2 2 : 1.0
+O: 5 4 : 169 : 2 2 : 1.0
+O: 5 4 : 170 : 2 2 : 1.0
+O: 5 4 : 171 : 2 2 : 1.0
+O: 5 5 : 160 : 2 2 : 1.0
+O: 5 5 : 161 : 2 2 : 1.0
+O: 5 5 : 162 : 2 2 : 1.0
+O: 5 5 : 163 : 2 2 : 1.0
+O: 5 5 : 168 : 2 2 : 1.0
+O: 5 5 : 169 : 2 2 : 1.0
+O: 5 5 : 170 : 2 2 : 1.0
+O: 5 5 : 171 : 2 2 : 1.0
+O: 0 0 : 176 : 2 3 : 1.0
+O: 0 0 : 177 : 2 3 : 1.0
+O: 0 0 : 178 : 2 3 : 1.0
+O: 0 0 : 179 : 2 3 : 1.0
+O: 0 1 : 176 : 2 3 : 1.0
+O: 0 1 : 177 : 2 3 : 1.0
+O: 0 1 : 178 : 2 3 : 1.0
+O: 0 1 : 179 : 2 3 : 1.0
+O: 0 2 : 176 : 2 3 : 1.0
+O: 0 2 : 177 : 2 3 : 1.0
+O: 0 2 : 178 : 2 3 : 1.0
+O: 0 2 : 179 : 2 3 : 1.0
+O: 0 3 : 176 : 2 3 : 1.0
+O: 0 3 : 177 : 2 3 : 1.0
+O: 0 3 : 178 : 2 3 : 1.0
+O: 0 3 : 179 : 2 3 : 1.0
+O: 0 4 : 176 : 2 3 : 1.0
+O: 0 4 : 177 : 2 3 : 1.0
+O: 0 4 : 178 : 2 3 : 1.0
+O: 0 4 : 179 : 2 3 : 1.0
+O: 0 5 : 176 : 2 3 : 1.0
+O: 0 5 : 177 : 2 3 : 1.0
+O: 0 5 : 178 : 2 3 : 1.0
+O: 0 5 : 179 : 2 3 : 1.0
+O: 1 0 : 176 : 2 3 : 1.0
+O: 1 0 : 177 : 2 3 : 1.0
+O: 1 0 : 178 : 2 3 : 1.0
+O: 1 0 : 179 : 2 3 : 1.0
+O: 1 1 : 176 : 2 3 : 1.0
+O: 1 1 : 177 : 2 3 : 1.0
+O: 1 1 : 178 : 2 3 : 1.0
+O: 1 1 : 179 : 2 3 : 1.0
+O: 1 2 : 176 : 2 3 : 1.0
+O: 1 2 : 177 : 2 3 : 1.0
+O: 1 2 : 178 : 2 3 : 1.0
+O: 1 2 : 179 : 2 3 : 1.0
+O: 1 3 : 176 : 2 3 : 1.0
+O: 1 3 : 177 : 2 3 : 1.0
+O: 1 3 : 178 : 2 3 : 1.0
+O: 1 3 : 179 : 2 3 : 1.0
+O: 1 4 : 176 : 2 3 : 1.0
+O: 1 4 : 177 : 2 3 : 1.0
+O: 1 4 : 178 : 2 3 : 1.0
+O: 1 4 : 179 : 2 3 : 1.0
+O: 1 5 : 176 : 2 3 : 1.0
+O: 1 5 : 177 : 2 3 : 1.0
+O: 1 5 : 178 : 2 3 : 1.0
+O: 1 5 : 179 : 2 3 : 1.0
+O: 2 0 : 176 : 2 3 : 1.0
+O: 2 0 : 177 : 2 3 : 1.0
+O: 2 0 : 178 : 2 3 : 1.0
+O: 2 0 : 179 : 2 3 : 1.0
+O: 2 1 : 176 : 2 3 : 1.0
+O: 2 1 : 177 : 2 3 : 1.0
+O: 2 1 : 178 : 2 3 : 1.0
+O: 2 1 : 179 : 2 3 : 1.0
+O: 2 2 : 176 : 2 3 : 1.0
+O: 2 2 : 177 : 2 3 : 1.0
+O: 2 2 : 178 : 2 3 : 1.0
+O: 2 2 : 179 : 2 3 : 1.0
+O: 2 3 : 176 : 2 3 : 1.0
+O: 2 3 : 177 : 2 3 : 1.0
+O: 2 3 : 178 : 2 3 : 1.0
+O: 2 3 : 179 : 2 3 : 1.0
+O: 2 4 : 176 : 2 3 : 1.0
+O: 2 4 : 177 : 2 3 : 1.0
+O: 2 4 : 178 : 2 3 : 1.0
+O: 2 4 : 179 : 2 3 : 1.0
+O: 2 5 : 176 : 2 3 : 1.0
+O: 2 5 : 177 : 2 3 : 1.0
+O: 2 5 : 178 : 2 3 : 1.0
+O: 2 5 : 179 : 2 3 : 1.0
+O: 3 0 : 176 : 2 3 : 1.0
+O: 3 0 : 177 : 2 3 : 1.0
+O: 3 0 : 178 : 2 3 : 1.0
+O: 3 0 : 179 : 2 3 : 1.0
+O: 3 1 : 176 : 2 3 : 1.0
+O: 3 1 : 177 : 2 3 : 1.0
+O: 3 1 : 178 : 2 3 : 1.0
+O: 3 1 : 179 : 2 3 : 1.0
+O: 3 2 : 176 : 2 3 : 1.0
+O: 3 2 : 177 : 2 3 : 1.0
+O: 3 2 : 178 : 2 3 : 1.0
+O: 3 2 : 179 : 2 3 : 1.0
+O: 3 3 : 176 : 2 3 : 1.0
+O: 3 3 : 177 : 2 3 : 1.0
+O: 3 3 : 178 : 2 3 : 1.0
+O: 3 3 : 179 : 2 3 : 1.0
+O: 3 4 : 176 : 2 3 : 1.0
+O: 3 4 : 177 : 2 3 : 1.0
+O: 3 4 : 178 : 2 3 : 1.0
+O: 3 4 : 179 : 2 3 : 1.0
+O: 3 5 : 176 : 2 3 : 1.0
+O: 3 5 : 177 : 2 3 : 1.0
+O: 3 5 : 178 : 2 3 : 1.0
+O: 3 5 : 179 : 2 3 : 1.0
+O: 4 0 : 176 : 2 3 : 1.0
+O: 4 0 : 177 : 2 3 : 1.0
+O: 4 0 : 178 : 2 3 : 1.0
+O: 4 0 : 179 : 2 3 : 1.0
+O: 4 1 : 176 : 2 3 : 1.0
+O: 4 1 : 177 : 2 3 : 1.0
+O: 4 1 : 178 : 2 3 : 1.0
+O: 4 1 : 179 : 2 3 : 1.0
+O: 4 2 : 176 : 2 3 : 1.0
+O: 4 2 : 177 : 2 3 : 1.0
+O: 4 2 : 178 : 2 3 : 1.0
+O: 4 2 : 179 : 2 3 : 1.0
+O: 4 3 : 176 : 2 3 : 1.0
+O: 4 3 : 177 : 2 3 : 1.0
+O: 4 3 : 178 : 2 3 : 1.0
+O: 4 3 : 179 : 2 3 : 1.0
+O: 4 4 : 176 : 2 3 : 1.0
+O: 4 4 : 177 : 2 3 : 1.0
+O: 4 4 : 178 : 2 3 : 1.0
+O: 4 4 : 179 : 2 3 : 1.0
+O: 4 5 : 176 : 2 3 : 1.0
+O: 4 5 : 177 : 2 3 : 1.0
+O: 4 5 : 178 : 2 3 : 1.0
+O: 4 5 : 179 : 2 3 : 1.0
+O: 5 0 : 176 : 2 3 : 1.0
+O: 5 0 : 177 : 2 3 : 1.0
+O: 5 0 : 178 : 2 3 : 1.0
+O: 5 0 : 179 : 2 3 : 1.0
+O: 5 1 : 176 : 2 3 : 1.0
+O: 5 1 : 177 : 2 3 : 1.0
+O: 5 1 : 178 : 2 3 : 1.0
+O: 5 1 : 179 : 2 3 : 1.0
+O: 5 2 : 176 : 2 3 : 1.0
+O: 5 2 : 177 : 2 3 : 1.0
+O: 5 2 : 178 : 2 3 : 1.0
+O: 5 2 : 179 : 2 3 : 1.0
+O: 5 3 : 176 : 2 3 : 1.0
+O: 5 3 : 177 : 2 3 : 1.0
+O: 5 3 : 178 : 2 3 : 1.0
+O: 5 3 : 179 : 2 3 : 1.0
+O: 5 4 : 176 : 2 3 : 1.0
+O: 5 4 : 177 : 2 3 : 1.0
+O: 5 4 : 178 : 2 3 : 1.0
+O: 5 4 : 179 : 2 3 : 1.0
+O: 5 5 : 176 : 2 3 : 1.0
+O: 5 5 : 177 : 2 3 : 1.0
+O: 5 5 : 178 : 2 3 : 1.0
+O: 5 5 : 179 : 2 3 : 1.0
+O: 0 0 : 129 : 2 4 : 1.0
+O: 0 0 : 131 : 2 4 : 1.0
+O: 0 0 : 137 : 2 4 : 1.0
+O: 0 0 : 139 : 2 4 : 1.0
+O: 0 1 : 129 : 2 4 : 1.0
+O: 0 1 : 131 : 2 4 : 1.0
+O: 0 1 : 137 : 2 4 : 1.0
+O: 0 1 : 139 : 2 4 : 1.0
+O: 0 2 : 129 : 2 4 : 1.0
+O: 0 2 : 131 : 2 4 : 1.0
+O: 0 2 : 137 : 2 4 : 1.0
+O: 0 2 : 139 : 2 4 : 1.0
+O: 0 3 : 129 : 2 4 : 1.0
+O: 0 3 : 131 : 2 4 : 1.0
+O: 0 3 : 137 : 2 4 : 1.0
+O: 0 3 : 139 : 2 4 : 1.0
+O: 0 4 : 129 : 2 4 : 1.0
+O: 0 4 : 131 : 2 4 : 1.0
+O: 0 4 : 137 : 2 4 : 1.0
+O: 0 4 : 139 : 2 4 : 1.0
+O: 0 5 : 129 : 2 4 : 1.0
+O: 0 5 : 131 : 2 4 : 1.0
+O: 0 5 : 137 : 2 4 : 1.0
+O: 0 5 : 139 : 2 4 : 1.0
+O: 1 0 : 129 : 2 4 : 1.0
+O: 1 0 : 131 : 2 4 : 1.0
+O: 1 0 : 137 : 2 4 : 1.0
+O: 1 0 : 139 : 2 4 : 1.0
+O: 1 1 : 129 : 2 4 : 1.0
+O: 1 1 : 131 : 2 4 : 1.0
+O: 1 1 : 137 : 2 4 : 1.0
+O: 1 1 : 139 : 2 4 : 1.0
+O: 1 2 : 129 : 2 4 : 1.0
+O: 1 2 : 131 : 2 4 : 1.0
+O: 1 2 : 137 : 2 4 : 1.0
+O: 1 2 : 139 : 2 4 : 1.0
+O: 1 3 : 129 : 2 4 : 1.0
+O: 1 3 : 131 : 2 4 : 1.0
+O: 1 3 : 137 : 2 4 : 1.0
+O: 1 3 : 139 : 2 4 : 1.0
+O: 1 4 : 129 : 2 4 : 1.0
+O: 1 4 : 131 : 2 4 : 1.0
+O: 1 4 : 137 : 2 4 : 1.0
+O: 1 4 : 139 : 2 4 : 1.0
+O: 1 5 : 129 : 2 4 : 1.0
+O: 1 5 : 131 : 2 4 : 1.0
+O: 1 5 : 137 : 2 4 : 1.0
+O: 1 5 : 139 : 2 4 : 1.0
+O: 2 0 : 129 : 2 4 : 1.0
+O: 2 0 : 131 : 2 4 : 1.0
+O: 2 0 : 137 : 2 4 : 1.0
+O: 2 0 : 139 : 2 4 : 1.0
+O: 2 1 : 129 : 2 4 : 1.0
+O: 2 1 : 131 : 2 4 : 1.0
+O: 2 1 : 137 : 2 4 : 1.0
+O: 2 1 : 139 : 2 4 : 1.0
+O: 2 2 : 129 : 2 4 : 1.0
+O: 2 2 : 131 : 2 4 : 1.0
+O: 2 2 : 137 : 2 4 : 1.0
+O: 2 2 : 139 : 2 4 : 1.0
+O: 2 3 : 129 : 2 4 : 1.0
+O: 2 3 : 131 : 2 4 : 1.0
+O: 2 3 : 137 : 2 4 : 1.0
+O: 2 3 : 139 : 2 4 : 1.0
+O: 2 4 : 129 : 2 4 : 1.0
+O: 2 4 : 131 : 2 4 : 1.0
+O: 2 4 : 137 : 2 4 : 1.0
+O: 2 4 : 139 : 2 4 : 1.0
+O: 2 5 : 129 : 2 4 : 1.0
+O: 2 5 : 131 : 2 4 : 1.0
+O: 2 5 : 137 : 2 4 : 1.0
+O: 2 5 : 139 : 2 4 : 1.0
+O: 3 0 : 129 : 2 4 : 1.0
+O: 3 0 : 131 : 2 4 : 1.0
+O: 3 0 : 137 : 2 4 : 1.0
+O: 3 0 : 139 : 2 4 : 1.0
+O: 3 1 : 129 : 2 4 : 1.0
+O: 3 1 : 131 : 2 4 : 1.0
+O: 3 1 : 137 : 2 4 : 1.0
+O: 3 1 : 139 : 2 4 : 1.0
+O: 3 2 : 129 : 2 4 : 1.0
+O: 3 2 : 131 : 2 4 : 1.0
+O: 3 2 : 137 : 2 4 : 1.0
+O: 3 2 : 139 : 2 4 : 1.0
+O: 3 3 : 129 : 2 4 : 1.0
+O: 3 3 : 131 : 2 4 : 1.0
+O: 3 3 : 137 : 2 4 : 1.0
+O: 3 3 : 139 : 2 4 : 1.0
+O: 3 4 : 129 : 2 4 : 1.0
+O: 3 4 : 131 : 2 4 : 1.0
+O: 3 4 : 137 : 2 4 : 1.0
+O: 3 4 : 139 : 2 4 : 1.0
+O: 3 5 : 129 : 2 4 : 1.0
+O: 3 5 : 131 : 2 4 : 1.0
+O: 3 5 : 137 : 2 4 : 1.0
+O: 3 5 : 139 : 2 4 : 1.0
+O: 4 0 : 129 : 2 4 : 1.0
+O: 4 0 : 131 : 2 4 : 1.0
+O: 4 0 : 137 : 2 4 : 1.0
+O: 4 0 : 139 : 2 4 : 1.0
+O: 4 1 : 129 : 2 4 : 1.0
+O: 4 1 : 131 : 2 4 : 1.0
+O: 4 1 : 137 : 2 4 : 1.0
+O: 4 1 : 139 : 2 4 : 1.0
+O: 4 2 : 129 : 2 4 : 1.0
+O: 4 2 : 131 : 2 4 : 1.0
+O: 4 2 : 137 : 2 4 : 1.0
+O: 4 2 : 139 : 2 4 : 1.0
+O: 4 3 : 129 : 2 4 : 1.0
+O: 4 3 : 131 : 2 4 : 1.0
+O: 4 3 : 137 : 2 4 : 1.0
+O: 4 3 : 139 : 2 4 : 1.0
+O: 4 4 : 129 : 2 4 : 1.0
+O: 4 4 : 131 : 2 4 : 1.0
+O: 4 4 : 137 : 2 4 : 1.0
+O: 4 4 : 139 : 2 4 : 1.0
+O: 4 5 : 129 : 2 4 : 1.0
+O: 4 5 : 131 : 2 4 : 1.0
+O: 4 5 : 137 : 2 4 : 1.0
+O: 4 5 : 139 : 2 4 : 1.0
+O: 5 0 : 129 : 2 4 : 1.0
+O: 5 0 : 131 : 2 4 : 1.0
+O: 5 0 : 137 : 2 4 : 1.0
+O: 5 0 : 139 : 2 4 : 1.0
+O: 5 1 : 129 : 2 4 : 1.0
+O: 5 1 : 131 : 2 4 : 1.0
+O: 5 1 : 137 : 2 4 : 1.0
+O: 5 1 : 139 : 2 4 : 1.0
+O: 5 2 : 129 : 2 4 : 1.0
+O: 5 2 : 131 : 2 4 : 1.0
+O: 5 2 : 137 : 2 4 : 1.0
+O: 5 2 : 139 : 2 4 : 1.0
+O: 5 3 : 129 : 2 4 : 1.0
+O: 5 3 : 131 : 2 4 : 1.0
+O: 5 3 : 137 : 2 4 : 1.0
+O: 5 3 : 139 : 2 4 : 1.0
+O: 5 4 : 129 : 2 4 : 1.0
+O: 5 4 : 131 : 2 4 : 1.0
+O: 5 4 : 137 : 2 4 : 1.0
+O: 5 4 : 139 : 2 4 : 1.0
+O: 5 5 : 129 : 2 4 : 1.0
+O: 5 5 : 131 : 2 4 : 1.0
+O: 5 5 : 137 : 2 4 : 1.0
+O: 5 5 : 139 : 2 4 : 1.0
+O: 0 0 : 146 : 2 5 : 1.0
+O: 0 0 : 147 : 2 5 : 1.0
+O: 0 0 : 154 : 2 5 : 1.0
+O: 0 0 : 155 : 2 5 : 1.0
+O: 0 1 : 146 : 2 5 : 1.0
+O: 0 1 : 147 : 2 5 : 1.0
+O: 0 1 : 154 : 2 5 : 1.0
+O: 0 1 : 155 : 2 5 : 1.0
+O: 0 2 : 146 : 2 5 : 1.0
+O: 0 2 : 147 : 2 5 : 1.0
+O: 0 2 : 154 : 2 5 : 1.0
+O: 0 2 : 155 : 2 5 : 1.0
+O: 0 3 : 146 : 2 5 : 1.0
+O: 0 3 : 147 : 2 5 : 1.0
+O: 0 3 : 154 : 2 5 : 1.0
+O: 0 3 : 155 : 2 5 : 1.0
+O: 0 4 : 146 : 2 5 : 1.0
+O: 0 4 : 147 : 2 5 : 1.0
+O: 0 4 : 154 : 2 5 : 1.0
+O: 0 4 : 155 : 2 5 : 1.0
+O: 0 5 : 146 : 2 5 : 1.0
+O: 0 5 : 147 : 2 5 : 1.0
+O: 0 5 : 154 : 2 5 : 1.0
+O: 0 5 : 155 : 2 5 : 1.0
+O: 1 0 : 146 : 2 5 : 1.0
+O: 1 0 : 147 : 2 5 : 1.0
+O: 1 0 : 154 : 2 5 : 1.0
+O: 1 0 : 155 : 2 5 : 1.0
+O: 1 1 : 146 : 2 5 : 1.0
+O: 1 1 : 147 : 2 5 : 1.0
+O: 1 1 : 154 : 2 5 : 1.0
+O: 1 1 : 155 : 2 5 : 1.0
+O: 1 2 : 146 : 2 5 : 1.0
+O: 1 2 : 147 : 2 5 : 1.0
+O: 1 2 : 154 : 2 5 : 1.0
+O: 1 2 : 155 : 2 5 : 1.0
+O: 1 3 : 146 : 2 5 : 1.0
+O: 1 3 : 147 : 2 5 : 1.0
+O: 1 3 : 154 : 2 5 : 1.0
+O: 1 3 : 155 : 2 5 : 1.0
+O: 1 4 : 146 : 2 5 : 1.0
+O: 1 4 : 147 : 2 5 : 1.0
+O: 1 4 : 154 : 2 5 : 1.0
+O: 1 4 : 155 : 2 5 : 1.0
+O: 1 5 : 146 : 2 5 : 1.0
+O: 1 5 : 147 : 2 5 : 1.0
+O: 1 5 : 154 : 2 5 : 1.0
+O: 1 5 : 155 : 2 5 : 1.0
+O: 2 0 : 146 : 2 5 : 1.0
+O: 2 0 : 147 : 2 5 : 1.0
+O: 2 0 : 154 : 2 5 : 1.0
+O: 2 0 : 155 : 2 5 : 1.0
+O: 2 1 : 146 : 2 5 : 1.0
+O: 2 1 : 147 : 2 5 : 1.0
+O: 2 1 : 154 : 2 5 : 1.0
+O: 2 1 : 155 : 2 5 : 1.0
+O: 2 2 : 146 : 2 5 : 1.0
+O: 2 2 : 147 : 2 5 : 1.0
+O: 2 2 : 154 : 2 5 : 1.0
+O: 2 2 : 155 : 2 5 : 1.0
+O: 2 3 : 146 : 2 5 : 1.0
+O: 2 3 : 147 : 2 5 : 1.0
+O: 2 3 : 154 : 2 5 : 1.0
+O: 2 3 : 155 : 2 5 : 1.0
+O: 2 4 : 146 : 2 5 : 1.0
+O: 2 4 : 147 : 2 5 : 1.0
+O: 2 4 : 154 : 2 5 : 1.0
+O: 2 4 : 155 : 2 5 : 1.0
+O: 2 5 : 146 : 2 5 : 1.0
+O: 2 5 : 147 : 2 5 : 1.0
+O: 2 5 : 154 : 2 5 : 1.0
+O: 2 5 : 155 : 2 5 : 1.0
+O: 3 0 : 146 : 2 5 : 1.0
+O: 3 0 : 147 : 2 5 : 1.0
+O: 3 0 : 154 : 2 5 : 1.0
+O: 3 0 : 155 : 2 5 : 1.0
+O: 3 1 : 146 : 2 5 : 1.0
+O: 3 1 : 147 : 2 5 : 1.0
+O: 3 1 : 154 : 2 5 : 1.0
+O: 3 1 : 155 : 2 5 : 1.0
+O: 3 2 : 146 : 2 5 : 1.0
+O: 3 2 : 147 : 2 5 : 1.0
+O: 3 2 : 154 : 2 5 : 1.0
+O: 3 2 : 155 : 2 5 : 1.0
+O: 3 3 : 146 : 2 5 : 1.0
+O: 3 3 : 147 : 2 5 : 1.0
+O: 3 3 : 154 : 2 5 : 1.0
+O: 3 3 : 155 : 2 5 : 1.0
+O: 3 4 : 146 : 2 5 : 1.0
+O: 3 4 : 147 : 2 5 : 1.0
+O: 3 4 : 154 : 2 5 : 1.0
+O: 3 4 : 155 : 2 5 : 1.0
+O: 3 5 : 146 : 2 5 : 1.0
+O: 3 5 : 147 : 2 5 : 1.0
+O: 3 5 : 154 : 2 5 : 1.0
+O: 3 5 : 155 : 2 5 : 1.0
+O: 4 0 : 146 : 2 5 : 1.0
+O: 4 0 : 147 : 2 5 : 1.0
+O: 4 0 : 154 : 2 5 : 1.0
+O: 4 0 : 155 : 2 5 : 1.0
+O: 4 1 : 146 : 2 5 : 1.0
+O: 4 1 : 147 : 2 5 : 1.0
+O: 4 1 : 154 : 2 5 : 1.0
+O: 4 1 : 155 : 2 5 : 1.0
+O: 4 2 : 146 : 2 5 : 1.0
+O: 4 2 : 147 : 2 5 : 1.0
+O: 4 2 : 154 : 2 5 : 1.0
+O: 4 2 : 155 : 2 5 : 1.0
+O: 4 3 : 146 : 2 5 : 1.0
+O: 4 3 : 147 : 2 5 : 1.0
+O: 4 3 : 154 : 2 5 : 1.0
+O: 4 3 : 155 : 2 5 : 1.0
+O: 4 4 : 146 : 2 5 : 1.0
+O: 4 4 : 147 : 2 5 : 1.0
+O: 4 4 : 154 : 2 5 : 1.0
+O: 4 4 : 155 : 2 5 : 1.0
+O: 4 5 : 146 : 2 5 : 1.0
+O: 4 5 : 147 : 2 5 : 1.0
+O: 4 5 : 154 : 2 5 : 1.0
+O: 4 5 : 155 : 2 5 : 1.0
+O: 5 0 : 146 : 2 5 : 1.0
+O: 5 0 : 147 : 2 5 : 1.0
+O: 5 0 : 154 : 2 5 : 1.0
+O: 5 0 : 155 : 2 5 : 1.0
+O: 5 1 : 146 : 2 5 : 1.0
+O: 5 1 : 147 : 2 5 : 1.0
+O: 5 1 : 154 : 2 5 : 1.0
+O: 5 1 : 155 : 2 5 : 1.0
+O: 5 2 : 146 : 2 5 : 1.0
+O: 5 2 : 147 : 2 5 : 1.0
+O: 5 2 : 154 : 2 5 : 1.0
+O: 5 2 : 155 : 2 5 : 1.0
+O: 5 3 : 146 : 2 5 : 1.0
+O: 5 3 : 147 : 2 5 : 1.0
+O: 5 3 : 154 : 2 5 : 1.0
+O: 5 3 : 155 : 2 5 : 1.0
+O: 5 4 : 146 : 2 5 : 1.0
+O: 5 4 : 147 : 2 5 : 1.0
+O: 5 4 : 154 : 2 5 : 1.0
+O: 5 4 : 155 : 2 5 : 1.0
+O: 5 5 : 146 : 2 5 : 1.0
+O: 5 5 : 147 : 2 5 : 1.0
+O: 5 5 : 154 : 2 5 : 1.0
+O: 5 5 : 155 : 2 5 : 1.0
+O: 0 0 : 184 : 2 7 : 1.0
+O: 0 0 : 185 : 2 7 : 1.0
+O: 0 0 : 186 : 2 7 : 1.0
+O: 0 0 : 187 : 2 7 : 1.0
+O: 0 1 : 184 : 2 7 : 1.0
+O: 0 1 : 185 : 2 7 : 1.0
+O: 0 1 : 186 : 2 7 : 1.0
+O: 0 1 : 187 : 2 7 : 1.0
+O: 0 2 : 184 : 2 7 : 1.0
+O: 0 2 : 185 : 2 7 : 1.0
+O: 0 2 : 186 : 2 7 : 1.0
+O: 0 2 : 187 : 2 7 : 1.0
+O: 0 3 : 184 : 2 7 : 1.0
+O: 0 3 : 185 : 2 7 : 1.0
+O: 0 3 : 186 : 2 7 : 1.0
+O: 0 3 : 187 : 2 7 : 1.0
+O: 0 4 : 184 : 2 7 : 1.0
+O: 0 4 : 185 : 2 7 : 1.0
+O: 0 4 : 186 : 2 7 : 1.0
+O: 0 4 : 187 : 2 7 : 1.0
+O: 0 5 : 184 : 2 7 : 1.0
+O: 0 5 : 185 : 2 7 : 1.0
+O: 0 5 : 186 : 2 7 : 1.0
+O: 0 5 : 187 : 2 7 : 1.0
+O: 1 0 : 184 : 2 7 : 1.0
+O: 1 0 : 185 : 2 7 : 1.0
+O: 1 0 : 186 : 2 7 : 1.0
+O: 1 0 : 187 : 2 7 : 1.0
+O: 1 1 : 184 : 2 7 : 1.0
+O: 1 1 : 185 : 2 7 : 1.0
+O: 1 1 : 186 : 2 7 : 1.0
+O: 1 1 : 187 : 2 7 : 1.0
+O: 1 2 : 184 : 2 7 : 1.0
+O: 1 2 : 185 : 2 7 : 1.0
+O: 1 2 : 186 : 2 7 : 1.0
+O: 1 2 : 187 : 2 7 : 1.0
+O: 1 3 : 184 : 2 7 : 1.0
+O: 1 3 : 185 : 2 7 : 1.0
+O: 1 3 : 186 : 2 7 : 1.0
+O: 1 3 : 187 : 2 7 : 1.0
+O: 1 4 : 184 : 2 7 : 1.0
+O: 1 4 : 185 : 2 7 : 1.0
+O: 1 4 : 186 : 2 7 : 1.0
+O: 1 4 : 187 : 2 7 : 1.0
+O: 1 5 : 184 : 2 7 : 1.0
+O: 1 5 : 185 : 2 7 : 1.0
+O: 1 5 : 186 : 2 7 : 1.0
+O: 1 5 : 187 : 2 7 : 1.0
+O: 2 0 : 184 : 2 7 : 1.0
+O: 2 0 : 185 : 2 7 : 1.0
+O: 2 0 : 186 : 2 7 : 1.0
+O: 2 0 : 187 : 2 7 : 1.0
+O: 2 1 : 184 : 2 7 : 1.0
+O: 2 1 : 185 : 2 7 : 1.0
+O: 2 1 : 186 : 2 7 : 1.0
+O: 2 1 : 187 : 2 7 : 1.0
+O: 2 2 : 184 : 2 7 : 1.0
+O: 2 2 : 185 : 2 7 : 1.0
+O: 2 2 : 186 : 2 7 : 1.0
+O: 2 2 : 187 : 2 7 : 1.0
+O: 2 3 : 184 : 2 7 : 1.0
+O: 2 3 : 185 : 2 7 : 1.0
+O: 2 3 : 186 : 2 7 : 1.0
+O: 2 3 : 187 : 2 7 : 1.0
+O: 2 4 : 184 : 2 7 : 1.0
+O: 2 4 : 185 : 2 7 : 1.0
+O: 2 4 : 186 : 2 7 : 1.0
+O: 2 4 : 187 : 2 7 : 1.0
+O: 2 5 : 184 : 2 7 : 1.0
+O: 2 5 : 185 : 2 7 : 1.0
+O: 2 5 : 186 : 2 7 : 1.0
+O: 2 5 : 187 : 2 7 : 1.0
+O: 3 0 : 184 : 2 7 : 1.0
+O: 3 0 : 185 : 2 7 : 1.0
+O: 3 0 : 186 : 2 7 : 1.0
+O: 3 0 : 187 : 2 7 : 1.0
+O: 3 1 : 184 : 2 7 : 1.0
+O: 3 1 : 185 : 2 7 : 1.0
+O: 3 1 : 186 : 2 7 : 1.0
+O: 3 1 : 187 : 2 7 : 1.0
+O: 3 2 : 184 : 2 7 : 1.0
+O: 3 2 : 185 : 2 7 : 1.0
+O: 3 2 : 186 : 2 7 : 1.0
+O: 3 2 : 187 : 2 7 : 1.0
+O: 3 3 : 184 : 2 7 : 1.0
+O: 3 3 : 185 : 2 7 : 1.0
+O: 3 3 : 186 : 2 7 : 1.0
+O: 3 3 : 187 : 2 7 : 1.0
+O: 3 4 : 184 : 2 7 : 1.0
+O: 3 4 : 185 : 2 7 : 1.0
+O: 3 4 : 186 : 2 7 : 1.0
+O: 3 4 : 187 : 2 7 : 1.0
+O: 3 5 : 184 : 2 7 : 1.0
+O: 3 5 : 185 : 2 7 : 1.0
+O: 3 5 : 186 : 2 7 : 1.0
+O: 3 5 : 187 : 2 7 : 1.0
+O: 4 0 : 184 : 2 7 : 1.0
+O: 4 0 : 185 : 2 7 : 1.0
+O: 4 0 : 186 : 2 7 : 1.0
+O: 4 0 : 187 : 2 7 : 1.0
+O: 4 1 : 184 : 2 7 : 1.0
+O: 4 1 : 185 : 2 7 : 1.0
+O: 4 1 : 186 : 2 7 : 1.0
+O: 4 1 : 187 : 2 7 : 1.0
+O: 4 2 : 184 : 2 7 : 1.0
+O: 4 2 : 185 : 2 7 : 1.0
+O: 4 2 : 186 : 2 7 : 1.0
+O: 4 2 : 187 : 2 7 : 1.0
+O: 4 3 : 184 : 2 7 : 1.0
+O: 4 3 : 185 : 2 7 : 1.0
+O: 4 3 : 186 : 2 7 : 1.0
+O: 4 3 : 187 : 2 7 : 1.0
+O: 4 4 : 184 : 2 7 : 1.0
+O: 4 4 : 185 : 2 7 : 1.0
+O: 4 4 : 186 : 2 7 : 1.0
+O: 4 4 : 187 : 2 7 : 1.0
+O: 4 5 : 184 : 2 7 : 1.0
+O: 4 5 : 185 : 2 7 : 1.0
+O: 4 5 : 186 : 2 7 : 1.0
+O: 4 5 : 187 : 2 7 : 1.0
+O: 5 0 : 184 : 2 7 : 1.0
+O: 5 0 : 185 : 2 7 : 1.0
+O: 5 0 : 186 : 2 7 : 1.0
+O: 5 0 : 187 : 2 7 : 1.0
+O: 5 1 : 184 : 2 7 : 1.0
+O: 5 1 : 185 : 2 7 : 1.0
+O: 5 1 : 186 : 2 7 : 1.0
+O: 5 1 : 187 : 2 7 : 1.0
+O: 5 2 : 184 : 2 7 : 1.0
+O: 5 2 : 185 : 2 7 : 1.0
+O: 5 2 : 186 : 2 7 : 1.0
+O: 5 2 : 187 : 2 7 : 1.0
+O: 5 3 : 184 : 2 7 : 1.0
+O: 5 3 : 185 : 2 7 : 1.0
+O: 5 3 : 186 : 2 7 : 1.0
+O: 5 3 : 187 : 2 7 : 1.0
+O: 5 4 : 184 : 2 7 : 1.0
+O: 5 4 : 185 : 2 7 : 1.0
+O: 5 4 : 186 : 2 7 : 1.0
+O: 5 4 : 187 : 2 7 : 1.0
+O: 5 5 : 184 : 2 7 : 1.0
+O: 5 5 : 185 : 2 7 : 1.0
+O: 5 5 : 186 : 2 7 : 1.0
+O: 5 5 : 187 : 2 7 : 1.0
+O: 0 0 : 192 : 3 0 : 1.0
+O: 0 0 : 194 : 3 0 : 1.0
+O: 0 0 : 196 : 3 0 : 1.0
+O: 0 0 : 198 : 3 0 : 1.0
+O: 0 1 : 192 : 3 0 : 1.0
+O: 0 1 : 194 : 3 0 : 1.0
+O: 0 1 : 196 : 3 0 : 1.0
+O: 0 1 : 198 : 3 0 : 1.0
+O: 0 2 : 192 : 3 0 : 1.0
+O: 0 2 : 194 : 3 0 : 1.0
+O: 0 2 : 196 : 3 0 : 1.0
+O: 0 2 : 198 : 3 0 : 1.0
+O: 0 3 : 192 : 3 0 : 1.0
+O: 0 3 : 194 : 3 0 : 1.0
+O: 0 3 : 196 : 3 0 : 1.0
+O: 0 3 : 198 : 3 0 : 1.0
+O: 0 4 : 192 : 3 0 : 1.0
+O: 0 4 : 194 : 3 0 : 1.0
+O: 0 4 : 196 : 3 0 : 1.0
+O: 0 4 : 198 : 3 0 : 1.0
+O: 0 5 : 192 : 3 0 : 1.0
+O: 0 5 : 194 : 3 0 : 1.0
+O: 0 5 : 196 : 3 0 : 1.0
+O: 0 5 : 198 : 3 0 : 1.0
+O: 1 0 : 192 : 3 0 : 1.0
+O: 1 0 : 194 : 3 0 : 1.0
+O: 1 0 : 196 : 3 0 : 1.0
+O: 1 0 : 198 : 3 0 : 1.0
+O: 1 1 : 192 : 3 0 : 1.0
+O: 1 1 : 194 : 3 0 : 1.0
+O: 1 1 : 196 : 3 0 : 1.0
+O: 1 1 : 198 : 3 0 : 1.0
+O: 1 2 : 192 : 3 0 : 1.0
+O: 1 2 : 194 : 3 0 : 1.0
+O: 1 2 : 196 : 3 0 : 1.0
+O: 1 2 : 198 : 3 0 : 1.0
+O: 1 3 : 192 : 3 0 : 1.0
+O: 1 3 : 194 : 3 0 : 1.0
+O: 1 3 : 196 : 3 0 : 1.0
+O: 1 3 : 198 : 3 0 : 1.0
+O: 1 4 : 192 : 3 0 : 1.0
+O: 1 4 : 194 : 3 0 : 1.0
+O: 1 4 : 196 : 3 0 : 1.0
+O: 1 4 : 198 : 3 0 : 1.0
+O: 1 5 : 192 : 3 0 : 1.0
+O: 1 5 : 194 : 3 0 : 1.0
+O: 1 5 : 196 : 3 0 : 1.0
+O: 1 5 : 198 : 3 0 : 1.0
+O: 2 0 : 192 : 3 0 : 1.0
+O: 2 0 : 194 : 3 0 : 1.0
+O: 2 0 : 196 : 3 0 : 1.0
+O: 2 0 : 198 : 3 0 : 1.0
+O: 2 1 : 192 : 3 0 : 1.0
+O: 2 1 : 194 : 3 0 : 1.0
+O: 2 1 : 196 : 3 0 : 1.0
+O: 2 1 : 198 : 3 0 : 1.0
+O: 2 2 : 192 : 3 0 : 1.0
+O: 2 2 : 194 : 3 0 : 1.0
+O: 2 2 : 196 : 3 0 : 1.0
+O: 2 2 : 198 : 3 0 : 1.0
+O: 2 3 : 192 : 3 0 : 1.0
+O: 2 3 : 194 : 3 0 : 1.0
+O: 2 3 : 196 : 3 0 : 1.0
+O: 2 3 : 198 : 3 0 : 1.0
+O: 2 4 : 192 : 3 0 : 1.0
+O: 2 4 : 194 : 3 0 : 1.0
+O: 2 4 : 196 : 3 0 : 1.0
+O: 2 4 : 198 : 3 0 : 1.0
+O: 2 5 : 192 : 3 0 : 1.0
+O: 2 5 : 194 : 3 0 : 1.0
+O: 2 5 : 196 : 3 0 : 1.0
+O: 2 5 : 198 : 3 0 : 1.0
+O: 3 0 : 192 : 3 0 : 1.0
+O: 3 0 : 194 : 3 0 : 1.0
+O: 3 0 : 196 : 3 0 : 1.0
+O: 3 0 : 198 : 3 0 : 1.0
+O: 3 1 : 192 : 3 0 : 1.0
+O: 3 1 : 194 : 3 0 : 1.0
+O: 3 1 : 196 : 3 0 : 1.0
+O: 3 1 : 198 : 3 0 : 1.0
+O: 3 2 : 192 : 3 0 : 1.0
+O: 3 2 : 194 : 3 0 : 1.0
+O: 3 2 : 196 : 3 0 : 1.0
+O: 3 2 : 198 : 3 0 : 1.0
+O: 3 3 : 192 : 3 0 : 1.0
+O: 3 3 : 194 : 3 0 : 1.0
+O: 3 3 : 196 : 3 0 : 1.0
+O: 3 3 : 198 : 3 0 : 1.0
+O: 3 4 : 192 : 3 0 : 1.0
+O: 3 4 : 194 : 3 0 : 1.0
+O: 3 4 : 196 : 3 0 : 1.0
+O: 3 4 : 198 : 3 0 : 1.0
+O: 3 5 : 192 : 3 0 : 1.0
+O: 3 5 : 194 : 3 0 : 1.0
+O: 3 5 : 196 : 3 0 : 1.0
+O: 3 5 : 198 : 3 0 : 1.0
+O: 4 0 : 192 : 3 0 : 1.0
+O: 4 0 : 194 : 3 0 : 1.0
+O: 4 0 : 196 : 3 0 : 1.0
+O: 4 0 : 198 : 3 0 : 1.0
+O: 4 1 : 192 : 3 0 : 1.0
+O: 4 1 : 194 : 3 0 : 1.0
+O: 4 1 : 196 : 3 0 : 1.0
+O: 4 1 : 198 : 3 0 : 1.0
+O: 4 2 : 192 : 3 0 : 1.0
+O: 4 2 : 194 : 3 0 : 1.0
+O: 4 2 : 196 : 3 0 : 1.0
+O: 4 2 : 198 : 3 0 : 1.0
+O: 4 3 : 192 : 3 0 : 1.0
+O: 4 3 : 194 : 3 0 : 1.0
+O: 4 3 : 196 : 3 0 : 1.0
+O: 4 3 : 198 : 3 0 : 1.0
+O: 4 4 : 192 : 3 0 : 1.0
+O: 4 4 : 194 : 3 0 : 1.0
+O: 4 4 : 196 : 3 0 : 1.0
+O: 4 4 : 198 : 3 0 : 1.0
+O: 4 5 : 192 : 3 0 : 1.0
+O: 4 5 : 194 : 3 0 : 1.0
+O: 4 5 : 196 : 3 0 : 1.0
+O: 4 5 : 198 : 3 0 : 1.0
+O: 5 0 : 192 : 3 0 : 1.0
+O: 5 0 : 194 : 3 0 : 1.0
+O: 5 0 : 196 : 3 0 : 1.0
+O: 5 0 : 198 : 3 0 : 1.0
+O: 5 1 : 192 : 3 0 : 1.0
+O: 5 1 : 194 : 3 0 : 1.0
+O: 5 1 : 196 : 3 0 : 1.0
+O: 5 1 : 198 : 3 0 : 1.0
+O: 5 2 : 192 : 3 0 : 1.0
+O: 5 2 : 194 : 3 0 : 1.0
+O: 5 2 : 196 : 3 0 : 1.0
+O: 5 2 : 198 : 3 0 : 1.0
+O: 5 3 : 192 : 3 0 : 1.0
+O: 5 3 : 194 : 3 0 : 1.0
+O: 5 3 : 196 : 3 0 : 1.0
+O: 5 3 : 198 : 3 0 : 1.0
+O: 5 4 : 192 : 3 0 : 1.0
+O: 5 4 : 194 : 3 0 : 1.0
+O: 5 4 : 196 : 3 0 : 1.0
+O: 5 4 : 198 : 3 0 : 1.0
+O: 5 5 : 192 : 3 0 : 1.0
+O: 5 5 : 194 : 3 0 : 1.0
+O: 5 5 : 196 : 3 0 : 1.0
+O: 5 5 : 198 : 3 0 : 1.0
+O: 0 0 : 208 : 3 1 : 1.0
+O: 0 0 : 209 : 3 1 : 1.0
+O: 0 0 : 212 : 3 1 : 1.0
+O: 0 0 : 213 : 3 1 : 1.0
+O: 0 1 : 208 : 3 1 : 1.0
+O: 0 1 : 209 : 3 1 : 1.0
+O: 0 1 : 212 : 3 1 : 1.0
+O: 0 1 : 213 : 3 1 : 1.0
+O: 0 2 : 208 : 3 1 : 1.0
+O: 0 2 : 209 : 3 1 : 1.0
+O: 0 2 : 212 : 3 1 : 1.0
+O: 0 2 : 213 : 3 1 : 1.0
+O: 0 3 : 208 : 3 1 : 1.0
+O: 0 3 : 209 : 3 1 : 1.0
+O: 0 3 : 212 : 3 1 : 1.0
+O: 0 3 : 213 : 3 1 : 1.0
+O: 0 4 : 208 : 3 1 : 1.0
+O: 0 4 : 209 : 3 1 : 1.0
+O: 0 4 : 212 : 3 1 : 1.0
+O: 0 4 : 213 : 3 1 : 1.0
+O: 0 5 : 208 : 3 1 : 1.0
+O: 0 5 : 209 : 3 1 : 1.0
+O: 0 5 : 212 : 3 1 : 1.0
+O: 0 5 : 213 : 3 1 : 1.0
+O: 1 0 : 208 : 3 1 : 1.0
+O: 1 0 : 209 : 3 1 : 1.0
+O: 1 0 : 212 : 3 1 : 1.0
+O: 1 0 : 213 : 3 1 : 1.0
+O: 1 1 : 208 : 3 1 : 1.0
+O: 1 1 : 209 : 3 1 : 1.0
+O: 1 1 : 212 : 3 1 : 1.0
+O: 1 1 : 213 : 3 1 : 1.0
+O: 1 2 : 208 : 3 1 : 1.0
+O: 1 2 : 209 : 3 1 : 1.0
+O: 1 2 : 212 : 3 1 : 1.0
+O: 1 2 : 213 : 3 1 : 1.0
+O: 1 3 : 208 : 3 1 : 1.0
+O: 1 3 : 209 : 3 1 : 1.0
+O: 1 3 : 212 : 3 1 : 1.0
+O: 1 3 : 213 : 3 1 : 1.0
+O: 1 4 : 208 : 3 1 : 1.0
+O: 1 4 : 209 : 3 1 : 1.0
+O: 1 4 : 212 : 3 1 : 1.0
+O: 1 4 : 213 : 3 1 : 1.0
+O: 1 5 : 208 : 3 1 : 1.0
+O: 1 5 : 209 : 3 1 : 1.0
+O: 1 5 : 212 : 3 1 : 1.0
+O: 1 5 : 213 : 3 1 : 1.0
+O: 2 0 : 208 : 3 1 : 1.0
+O: 2 0 : 209 : 3 1 : 1.0
+O: 2 0 : 212 : 3 1 : 1.0
+O: 2 0 : 213 : 3 1 : 1.0
+O: 2 1 : 208 : 3 1 : 1.0
+O: 2 1 : 209 : 3 1 : 1.0
+O: 2 1 : 212 : 3 1 : 1.0
+O: 2 1 : 213 : 3 1 : 1.0
+O: 2 2 : 208 : 3 1 : 1.0
+O: 2 2 : 209 : 3 1 : 1.0
+O: 2 2 : 212 : 3 1 : 1.0
+O: 2 2 : 213 : 3 1 : 1.0
+O: 2 3 : 208 : 3 1 : 1.0
+O: 2 3 : 209 : 3 1 : 1.0
+O: 2 3 : 212 : 3 1 : 1.0
+O: 2 3 : 213 : 3 1 : 1.0
+O: 2 4 : 208 : 3 1 : 1.0
+O: 2 4 : 209 : 3 1 : 1.0
+O: 2 4 : 212 : 3 1 : 1.0
+O: 2 4 : 213 : 3 1 : 1.0
+O: 2 5 : 208 : 3 1 : 1.0
+O: 2 5 : 209 : 3 1 : 1.0
+O: 2 5 : 212 : 3 1 : 1.0
+O: 2 5 : 213 : 3 1 : 1.0
+O: 3 0 : 208 : 3 1 : 1.0
+O: 3 0 : 209 : 3 1 : 1.0
+O: 3 0 : 212 : 3 1 : 1.0
+O: 3 0 : 213 : 3 1 : 1.0
+O: 3 1 : 208 : 3 1 : 1.0
+O: 3 1 : 209 : 3 1 : 1.0
+O: 3 1 : 212 : 3 1 : 1.0
+O: 3 1 : 213 : 3 1 : 1.0
+O: 3 2 : 208 : 3 1 : 1.0
+O: 3 2 : 209 : 3 1 : 1.0
+O: 3 2 : 212 : 3 1 : 1.0
+O: 3 2 : 213 : 3 1 : 1.0
+O: 3 3 : 208 : 3 1 : 1.0
+O: 3 3 : 209 : 3 1 : 1.0
+O: 3 3 : 212 : 3 1 : 1.0
+O: 3 3 : 213 : 3 1 : 1.0
+O: 3 4 : 208 : 3 1 : 1.0
+O: 3 4 : 209 : 3 1 : 1.0
+O: 3 4 : 212 : 3 1 : 1.0
+O: 3 4 : 213 : 3 1 : 1.0
+O: 3 5 : 208 : 3 1 : 1.0
+O: 3 5 : 209 : 3 1 : 1.0
+O: 3 5 : 212 : 3 1 : 1.0
+O: 3 5 : 213 : 3 1 : 1.0
+O: 4 0 : 208 : 3 1 : 1.0
+O: 4 0 : 209 : 3 1 : 1.0
+O: 4 0 : 212 : 3 1 : 1.0
+O: 4 0 : 213 : 3 1 : 1.0
+O: 4 1 : 208 : 3 1 : 1.0
+O: 4 1 : 209 : 3 1 : 1.0
+O: 4 1 : 212 : 3 1 : 1.0
+O: 4 1 : 213 : 3 1 : 1.0
+O: 4 2 : 208 : 3 1 : 1.0
+O: 4 2 : 209 : 3 1 : 1.0
+O: 4 2 : 212 : 3 1 : 1.0
+O: 4 2 : 213 : 3 1 : 1.0
+O: 4 3 : 208 : 3 1 : 1.0
+O: 4 3 : 209 : 3 1 : 1.0
+O: 4 3 : 212 : 3 1 : 1.0
+O: 4 3 : 213 : 3 1 : 1.0
+O: 4 4 : 208 : 3 1 : 1.0
+O: 4 4 : 209 : 3 1 : 1.0
+O: 4 4 : 212 : 3 1 : 1.0
+O: 4 4 : 213 : 3 1 : 1.0
+O: 4 5 : 208 : 3 1 : 1.0
+O: 4 5 : 209 : 3 1 : 1.0
+O: 4 5 : 212 : 3 1 : 1.0
+O: 4 5 : 213 : 3 1 : 1.0
+O: 5 0 : 208 : 3 1 : 1.0
+O: 5 0 : 209 : 3 1 : 1.0
+O: 5 0 : 212 : 3 1 : 1.0
+O: 5 0 : 213 : 3 1 : 1.0
+O: 5 1 : 208 : 3 1 : 1.0
+O: 5 1 : 209 : 3 1 : 1.0
+O: 5 1 : 212 : 3 1 : 1.0
+O: 5 1 : 213 : 3 1 : 1.0
+O: 5 2 : 208 : 3 1 : 1.0
+O: 5 2 : 209 : 3 1 : 1.0
+O: 5 2 : 212 : 3 1 : 1.0
+O: 5 2 : 213 : 3 1 : 1.0
+O: 5 3 : 208 : 3 1 : 1.0
+O: 5 3 : 209 : 3 1 : 1.0
+O: 5 3 : 212 : 3 1 : 1.0
+O: 5 3 : 213 : 3 1 : 1.0
+O: 5 4 : 208 : 3 1 : 1.0
+O: 5 4 : 209 : 3 1 : 1.0
+O: 5 4 : 212 : 3 1 : 1.0
+O: 5 4 : 213 : 3 1 : 1.0
+O: 5 5 : 208 : 3 1 : 1.0
+O: 5 5 : 209 : 3 1 : 1.0
+O: 5 5 : 212 : 3 1 : 1.0
+O: 5 5 : 213 : 3 1 : 1.0
+O: 0 0 : 224 : 3 2 : 1.0
+O: 0 0 : 225 : 3 2 : 1.0
+O: 0 0 : 226 : 3 2 : 1.0
+O: 0 0 : 227 : 3 2 : 1.0
+O: 0 1 : 224 : 3 2 : 1.0
+O: 0 1 : 225 : 3 2 : 1.0
+O: 0 1 : 226 : 3 2 : 1.0
+O: 0 1 : 227 : 3 2 : 1.0
+O: 0 2 : 224 : 3 2 : 1.0
+O: 0 2 : 225 : 3 2 : 1.0
+O: 0 2 : 226 : 3 2 : 1.0
+O: 0 2 : 227 : 3 2 : 1.0
+O: 0 3 : 224 : 3 2 : 1.0
+O: 0 3 : 225 : 3 2 : 1.0
+O: 0 3 : 226 : 3 2 : 1.0
+O: 0 3 : 227 : 3 2 : 1.0
+O: 0 4 : 224 : 3 2 : 1.0
+O: 0 4 : 225 : 3 2 : 1.0
+O: 0 4 : 226 : 3 2 : 1.0
+O: 0 4 : 227 : 3 2 : 1.0
+O: 0 5 : 224 : 3 2 : 1.0
+O: 0 5 : 225 : 3 2 : 1.0
+O: 0 5 : 226 : 3 2 : 1.0
+O: 0 5 : 227 : 3 2 : 1.0
+O: 1 0 : 224 : 3 2 : 1.0
+O: 1 0 : 225 : 3 2 : 1.0
+O: 1 0 : 226 : 3 2 : 1.0
+O: 1 0 : 227 : 3 2 : 1.0
+O: 1 1 : 224 : 3 2 : 1.0
+O: 1 1 : 225 : 3 2 : 1.0
+O: 1 1 : 226 : 3 2 : 1.0
+O: 1 1 : 227 : 3 2 : 1.0
+O: 1 2 : 224 : 3 2 : 1.0
+O: 1 2 : 225 : 3 2 : 1.0
+O: 1 2 : 226 : 3 2 : 1.0
+O: 1 2 : 227 : 3 2 : 1.0
+O: 1 3 : 224 : 3 2 : 1.0
+O: 1 3 : 225 : 3 2 : 1.0
+O: 1 3 : 226 : 3 2 : 1.0
+O: 1 3 : 227 : 3 2 : 1.0
+O: 1 4 : 224 : 3 2 : 1.0
+O: 1 4 : 225 : 3 2 : 1.0
+O: 1 4 : 226 : 3 2 : 1.0
+O: 1 4 : 227 : 3 2 : 1.0
+O: 1 5 : 224 : 3 2 : 1.0
+O: 1 5 : 225 : 3 2 : 1.0
+O: 1 5 : 226 : 3 2 : 1.0
+O: 1 5 : 227 : 3 2 : 1.0
+O: 2 0 : 224 : 3 2 : 1.0
+O: 2 0 : 225 : 3 2 : 1.0
+O: 2 0 : 226 : 3 2 : 1.0
+O: 2 0 : 227 : 3 2 : 1.0
+O: 2 1 : 224 : 3 2 : 1.0
+O: 2 1 : 225 : 3 2 : 1.0
+O: 2 1 : 226 : 3 2 : 1.0
+O: 2 1 : 227 : 3 2 : 1.0
+O: 2 2 : 224 : 3 2 : 1.0
+O: 2 2 : 225 : 3 2 : 1.0
+O: 2 2 : 226 : 3 2 : 1.0
+O: 2 2 : 227 : 3 2 : 1.0
+O: 2 3 : 224 : 3 2 : 1.0
+O: 2 3 : 225 : 3 2 : 1.0
+O: 2 3 : 226 : 3 2 : 1.0
+O: 2 3 : 227 : 3 2 : 1.0
+O: 2 4 : 224 : 3 2 : 1.0
+O: 2 4 : 225 : 3 2 : 1.0
+O: 2 4 : 226 : 3 2 : 1.0
+O: 2 4 : 227 : 3 2 : 1.0
+O: 2 5 : 224 : 3 2 : 1.0
+O: 2 5 : 225 : 3 2 : 1.0
+O: 2 5 : 226 : 3 2 : 1.0
+O: 2 5 : 227 : 3 2 : 1.0
+O: 3 0 : 224 : 3 2 : 1.0
+O: 3 0 : 225 : 3 2 : 1.0
+O: 3 0 : 226 : 3 2 : 1.0
+O: 3 0 : 227 : 3 2 : 1.0
+O: 3 1 : 224 : 3 2 : 1.0
+O: 3 1 : 225 : 3 2 : 1.0
+O: 3 1 : 226 : 3 2 : 1.0
+O: 3 1 : 227 : 3 2 : 1.0
+O: 3 2 : 224 : 3 2 : 1.0
+O: 3 2 : 225 : 3 2 : 1.0
+O: 3 2 : 226 : 3 2 : 1.0
+O: 3 2 : 227 : 3 2 : 1.0
+O: 3 3 : 224 : 3 2 : 1.0
+O: 3 3 : 225 : 3 2 : 1.0
+O: 3 3 : 226 : 3 2 : 1.0
+O: 3 3 : 227 : 3 2 : 1.0
+O: 3 4 : 224 : 3 2 : 1.0
+O: 3 4 : 225 : 3 2 : 1.0
+O: 3 4 : 226 : 3 2 : 1.0
+O: 3 4 : 227 : 3 2 : 1.0
+O: 3 5 : 224 : 3 2 : 1.0
+O: 3 5 : 225 : 3 2 : 1.0
+O: 3 5 : 226 : 3 2 : 1.0
+O: 3 5 : 227 : 3 2 : 1.0
+O: 4 0 : 224 : 3 2 : 1.0
+O: 4 0 : 225 : 3 2 : 1.0
+O: 4 0 : 226 : 3 2 : 1.0
+O: 4 0 : 227 : 3 2 : 1.0
+O: 4 1 : 224 : 3 2 : 1.0
+O: 4 1 : 225 : 3 2 : 1.0
+O: 4 1 : 226 : 3 2 : 1.0
+O: 4 1 : 227 : 3 2 : 1.0
+O: 4 2 : 224 : 3 2 : 1.0
+O: 4 2 : 225 : 3 2 : 1.0
+O: 4 2 : 226 : 3 2 : 1.0
+O: 4 2 : 227 : 3 2 : 1.0
+O: 4 3 : 224 : 3 2 : 1.0
+O: 4 3 : 225 : 3 2 : 1.0
+O: 4 3 : 226 : 3 2 : 1.0
+O: 4 3 : 227 : 3 2 : 1.0
+O: 4 4 : 224 : 3 2 : 1.0
+O: 4 4 : 225 : 3 2 : 1.0
+O: 4 4 : 226 : 3 2 : 1.0
+O: 4 4 : 227 : 3 2 : 1.0
+O: 4 5 : 224 : 3 2 : 1.0
+O: 4 5 : 225 : 3 2 : 1.0
+O: 4 5 : 226 : 3 2 : 1.0
+O: 4 5 : 227 : 3 2 : 1.0
+O: 5 0 : 224 : 3 2 : 1.0
+O: 5 0 : 225 : 3 2 : 1.0
+O: 5 0 : 226 : 3 2 : 1.0
+O: 5 0 : 227 : 3 2 : 1.0
+O: 5 1 : 224 : 3 2 : 1.0
+O: 5 1 : 225 : 3 2 : 1.0
+O: 5 1 : 226 : 3 2 : 1.0
+O: 5 1 : 227 : 3 2 : 1.0
+O: 5 2 : 224 : 3 2 : 1.0
+O: 5 2 : 225 : 3 2 : 1.0
+O: 5 2 : 226 : 3 2 : 1.0
+O: 5 2 : 227 : 3 2 : 1.0
+O: 5 3 : 224 : 3 2 : 1.0
+O: 5 3 : 225 : 3 2 : 1.0
+O: 5 3 : 226 : 3 2 : 1.0
+O: 5 3 : 227 : 3 2 : 1.0
+O: 5 4 : 224 : 3 2 : 1.0
+O: 5 4 : 225 : 3 2 : 1.0
+O: 5 4 : 226 : 3 2 : 1.0
+O: 5 4 : 227 : 3 2 : 1.0
+O: 5 5 : 224 : 3 2 : 1.0
+O: 5 5 : 225 : 3 2 : 1.0
+O: 5 5 : 226 : 3 2 : 1.0
+O: 5 5 : 227 : 3 2 : 1.0
+O: 0 0 : 240 : 3 3 : 1.0
+O: 0 0 : 241 : 3 3 : 1.0
+O: 0 0 : 242 : 3 3 : 1.0
+O: 0 0 : 243 : 3 3 : 1.0
+O: 0 0 : 244 : 3 3 : 1.0
+O: 0 0 : 245 : 3 3 : 1.0
+O: 0 0 : 246 : 3 3 : 1.0
+O: 0 0 : 247 : 3 3 : 1.0
+O: 0 1 : 240 : 3 3 : 1.0
+O: 0 1 : 241 : 3 3 : 1.0
+O: 0 1 : 242 : 3 3 : 1.0
+O: 0 1 : 243 : 3 3 : 1.0
+O: 0 1 : 244 : 3 3 : 1.0
+O: 0 1 : 245 : 3 3 : 1.0
+O: 0 1 : 246 : 3 3 : 1.0
+O: 0 1 : 247 : 3 3 : 1.0
+O: 0 2 : 240 : 3 3 : 1.0
+O: 0 2 : 241 : 3 3 : 1.0
+O: 0 2 : 242 : 3 3 : 1.0
+O: 0 2 : 243 : 3 3 : 1.0
+O: 0 2 : 244 : 3 3 : 1.0
+O: 0 2 : 245 : 3 3 : 1.0
+O: 0 2 : 246 : 3 3 : 1.0
+O: 0 2 : 247 : 3 3 : 1.0
+O: 0 3 : 240 : 3 3 : 1.0
+O: 0 3 : 241 : 3 3 : 1.0
+O: 0 3 : 242 : 3 3 : 1.0
+O: 0 3 : 243 : 3 3 : 1.0
+O: 0 3 : 244 : 3 3 : 1.0
+O: 0 3 : 245 : 3 3 : 1.0
+O: 0 3 : 246 : 3 3 : 1.0
+O: 0 3 : 247 : 3 3 : 1.0
+O: 0 4 : 240 : 3 3 : 1.0
+O: 0 4 : 241 : 3 3 : 1.0
+O: 0 4 : 242 : 3 3 : 1.0
+O: 0 4 : 243 : 3 3 : 1.0
+O: 0 4 : 244 : 3 3 : 1.0
+O: 0 4 : 245 : 3 3 : 1.0
+O: 0 4 : 246 : 3 3 : 1.0
+O: 0 4 : 247 : 3 3 : 1.0
+O: 0 5 : 240 : 3 3 : 1.0
+O: 0 5 : 241 : 3 3 : 1.0
+O: 0 5 : 242 : 3 3 : 1.0
+O: 0 5 : 243 : 3 3 : 1.0
+O: 0 5 : 244 : 3 3 : 1.0
+O: 0 5 : 245 : 3 3 : 1.0
+O: 0 5 : 246 : 3 3 : 1.0
+O: 0 5 : 247 : 3 3 : 1.0
+O: 1 0 : 240 : 3 3 : 1.0
+O: 1 0 : 241 : 3 3 : 1.0
+O: 1 0 : 242 : 3 3 : 1.0
+O: 1 0 : 243 : 3 3 : 1.0
+O: 1 0 : 244 : 3 3 : 1.0
+O: 1 0 : 245 : 3 3 : 1.0
+O: 1 0 : 246 : 3 3 : 1.0
+O: 1 0 : 247 : 3 3 : 1.0
+O: 1 1 : 240 : 3 3 : 1.0
+O: 1 1 : 241 : 3 3 : 1.0
+O: 1 1 : 242 : 3 3 : 1.0
+O: 1 1 : 243 : 3 3 : 1.0
+O: 1 1 : 244 : 3 3 : 1.0
+O: 1 1 : 245 : 3 3 : 1.0
+O: 1 1 : 246 : 3 3 : 1.0
+O: 1 1 : 247 : 3 3 : 1.0
+O: 1 2 : 240 : 3 3 : 1.0
+O: 1 2 : 241 : 3 3 : 1.0
+O: 1 2 : 242 : 3 3 : 1.0
+O: 1 2 : 243 : 3 3 : 1.0
+O: 1 2 : 244 : 3 3 : 1.0
+O: 1 2 : 245 : 3 3 : 1.0
+O: 1 2 : 246 : 3 3 : 1.0
+O: 1 2 : 247 : 3 3 : 1.0
+O: 1 3 : 240 : 3 3 : 1.0
+O: 1 3 : 241 : 3 3 : 1.0
+O: 1 3 : 242 : 3 3 : 1.0
+O: 1 3 : 243 : 3 3 : 1.0
+O: 1 3 : 244 : 3 3 : 1.0
+O: 1 3 : 245 : 3 3 : 1.0
+O: 1 3 : 246 : 3 3 : 1.0
+O: 1 3 : 247 : 3 3 : 1.0
+O: 1 4 : 240 : 3 3 : 1.0
+O: 1 4 : 241 : 3 3 : 1.0
+O: 1 4 : 242 : 3 3 : 1.0
+O: 1 4 : 243 : 3 3 : 1.0
+O: 1 4 : 244 : 3 3 : 1.0
+O: 1 4 : 245 : 3 3 : 1.0
+O: 1 4 : 246 : 3 3 : 1.0
+O: 1 4 : 247 : 3 3 : 1.0
+O: 1 5 : 240 : 3 3 : 1.0
+O: 1 5 : 241 : 3 3 : 1.0
+O: 1 5 : 242 : 3 3 : 1.0
+O: 1 5 : 243 : 3 3 : 1.0
+O: 1 5 : 244 : 3 3 : 1.0
+O: 1 5 : 245 : 3 3 : 1.0
+O: 1 5 : 246 : 3 3 : 1.0
+O: 1 5 : 247 : 3 3 : 1.0
+O: 2 0 : 240 : 3 3 : 1.0
+O: 2 0 : 241 : 3 3 : 1.0
+O: 2 0 : 242 : 3 3 : 1.0
+O: 2 0 : 243 : 3 3 : 1.0
+O: 2 0 : 244 : 3 3 : 1.0
+O: 2 0 : 245 : 3 3 : 1.0
+O: 2 0 : 246 : 3 3 : 1.0
+O: 2 0 : 247 : 3 3 : 1.0
+O: 2 1 : 240 : 3 3 : 1.0
+O: 2 1 : 241 : 3 3 : 1.0
+O: 2 1 : 242 : 3 3 : 1.0
+O: 2 1 : 243 : 3 3 : 1.0
+O: 2 1 : 244 : 3 3 : 1.0
+O: 2 1 : 245 : 3 3 : 1.0
+O: 2 1 : 246 : 3 3 : 1.0
+O: 2 1 : 247 : 3 3 : 1.0
+O: 2 2 : 240 : 3 3 : 1.0
+O: 2 2 : 241 : 3 3 : 1.0
+O: 2 2 : 242 : 3 3 : 1.0
+O: 2 2 : 243 : 3 3 : 1.0
+O: 2 2 : 244 : 3 3 : 1.0
+O: 2 2 : 245 : 3 3 : 1.0
+O: 2 2 : 246 : 3 3 : 1.0
+O: 2 2 : 247 : 3 3 : 1.0
+O: 2 3 : 240 : 3 3 : 1.0
+O: 2 3 : 241 : 3 3 : 1.0
+O: 2 3 : 242 : 3 3 : 1.0
+O: 2 3 : 243 : 3 3 : 1.0
+O: 2 3 : 244 : 3 3 : 1.0
+O: 2 3 : 245 : 3 3 : 1.0
+O: 2 3 : 246 : 3 3 : 1.0
+O: 2 3 : 247 : 3 3 : 1.0
+O: 2 4 : 240 : 3 3 : 1.0
+O: 2 4 : 241 : 3 3 : 1.0
+O: 2 4 : 242 : 3 3 : 1.0
+O: 2 4 : 243 : 3 3 : 1.0
+O: 2 4 : 244 : 3 3 : 1.0
+O: 2 4 : 245 : 3 3 : 1.0
+O: 2 4 : 246 : 3 3 : 1.0
+O: 2 4 : 247 : 3 3 : 1.0
+O: 2 5 : 240 : 3 3 : 1.0
+O: 2 5 : 241 : 3 3 : 1.0
+O: 2 5 : 242 : 3 3 : 1.0
+O: 2 5 : 243 : 3 3 : 1.0
+O: 2 5 : 244 : 3 3 : 1.0
+O: 2 5 : 245 : 3 3 : 1.0
+O: 2 5 : 246 : 3 3 : 1.0
+O: 2 5 : 247 : 3 3 : 1.0
+O: 3 0 : 240 : 3 3 : 1.0
+O: 3 0 : 241 : 3 3 : 1.0
+O: 3 0 : 242 : 3 3 : 1.0
+O: 3 0 : 243 : 3 3 : 1.0
+O: 3 0 : 244 : 3 3 : 1.0
+O: 3 0 : 245 : 3 3 : 1.0
+O: 3 0 : 246 : 3 3 : 1.0
+O: 3 0 : 247 : 3 3 : 1.0
+O: 3 1 : 240 : 3 3 : 1.0
+O: 3 1 : 241 : 3 3 : 1.0
+O: 3 1 : 242 : 3 3 : 1.0
+O: 3 1 : 243 : 3 3 : 1.0
+O: 3 1 : 244 : 3 3 : 1.0
+O: 3 1 : 245 : 3 3 : 1.0
+O: 3 1 : 246 : 3 3 : 1.0
+O: 3 1 : 247 : 3 3 : 1.0
+O: 3 2 : 240 : 3 3 : 1.0
+O: 3 2 : 241 : 3 3 : 1.0
+O: 3 2 : 242 : 3 3 : 1.0
+O: 3 2 : 243 : 3 3 : 1.0
+O: 3 2 : 244 : 3 3 : 1.0
+O: 3 2 : 245 : 3 3 : 1.0
+O: 3 2 : 246 : 3 3 : 1.0
+O: 3 2 : 247 : 3 3 : 1.0
+O: 3 3 : 240 : 3 3 : 1.0
+O: 3 3 : 241 : 3 3 : 1.0
+O: 3 3 : 242 : 3 3 : 1.0
+O: 3 3 : 243 : 3 3 : 1.0
+O: 3 3 : 244 : 3 3 : 1.0
+O: 3 3 : 245 : 3 3 : 1.0
+O: 3 3 : 246 : 3 3 : 1.0
+O: 3 3 : 247 : 3 3 : 1.0
+O: 3 4 : 240 : 3 3 : 1.0
+O: 3 4 : 241 : 3 3 : 1.0
+O: 3 4 : 242 : 3 3 : 1.0
+O: 3 4 : 243 : 3 3 : 1.0
+O: 3 4 : 244 : 3 3 : 1.0
+O: 3 4 : 245 : 3 3 : 1.0
+O: 3 4 : 246 : 3 3 : 1.0
+O: 3 4 : 247 : 3 3 : 1.0
+O: 3 5 : 240 : 3 3 : 1.0
+O: 3 5 : 241 : 3 3 : 1.0
+O: 3 5 : 242 : 3 3 : 1.0
+O: 3 5 : 243 : 3 3 : 1.0
+O: 3 5 : 244 : 3 3 : 1.0
+O: 3 5 : 245 : 3 3 : 1.0
+O: 3 5 : 246 : 3 3 : 1.0
+O: 3 5 : 247 : 3 3 : 1.0
+O: 4 0 : 240 : 3 3 : 1.0
+O: 4 0 : 241 : 3 3 : 1.0
+O: 4 0 : 242 : 3 3 : 1.0
+O: 4 0 : 243 : 3 3 : 1.0
+O: 4 0 : 244 : 3 3 : 1.0
+O: 4 0 : 245 : 3 3 : 1.0
+O: 4 0 : 246 : 3 3 : 1.0
+O: 4 0 : 247 : 3 3 : 1.0
+O: 4 1 : 240 : 3 3 : 1.0
+O: 4 1 : 241 : 3 3 : 1.0
+O: 4 1 : 242 : 3 3 : 1.0
+O: 4 1 : 243 : 3 3 : 1.0
+O: 4 1 : 244 : 3 3 : 1.0
+O: 4 1 : 245 : 3 3 : 1.0
+O: 4 1 : 246 : 3 3 : 1.0
+O: 4 1 : 247 : 3 3 : 1.0
+O: 4 2 : 240 : 3 3 : 1.0
+O: 4 2 : 241 : 3 3 : 1.0
+O: 4 2 : 242 : 3 3 : 1.0
+O: 4 2 : 243 : 3 3 : 1.0
+O: 4 2 : 244 : 3 3 : 1.0
+O: 4 2 : 245 : 3 3 : 1.0
+O: 4 2 : 246 : 3 3 : 1.0
+O: 4 2 : 247 : 3 3 : 1.0
+O: 4 3 : 240 : 3 3 : 1.0
+O: 4 3 : 241 : 3 3 : 1.0
+O: 4 3 : 242 : 3 3 : 1.0
+O: 4 3 : 243 : 3 3 : 1.0
+O: 4 3 : 244 : 3 3 : 1.0
+O: 4 3 : 245 : 3 3 : 1.0
+O: 4 3 : 246 : 3 3 : 1.0
+O: 4 3 : 247 : 3 3 : 1.0
+O: 4 4 : 240 : 3 3 : 1.0
+O: 4 4 : 241 : 3 3 : 1.0
+O: 4 4 : 242 : 3 3 : 1.0
+O: 4 4 : 243 : 3 3 : 1.0
+O: 4 4 : 244 : 3 3 : 1.0
+O: 4 4 : 245 : 3 3 : 1.0
+O: 4 4 : 246 : 3 3 : 1.0
+O: 4 4 : 247 : 3 3 : 1.0
+O: 4 5 : 240 : 3 3 : 1.0
+O: 4 5 : 241 : 3 3 : 1.0
+O: 4 5 : 242 : 3 3 : 1.0
+O: 4 5 : 243 : 3 3 : 1.0
+O: 4 5 : 244 : 3 3 : 1.0
+O: 4 5 : 245 : 3 3 : 1.0
+O: 4 5 : 246 : 3 3 : 1.0
+O: 4 5 : 247 : 3 3 : 1.0
+O: 5 0 : 240 : 3 3 : 1.0
+O: 5 0 : 241 : 3 3 : 1.0
+O: 5 0 : 242 : 3 3 : 1.0
+O: 5 0 : 243 : 3 3 : 1.0
+O: 5 0 : 244 : 3 3 : 1.0
+O: 5 0 : 245 : 3 3 : 1.0
+O: 5 0 : 246 : 3 3 : 1.0
+O: 5 0 : 247 : 3 3 : 1.0
+O: 5 1 : 240 : 3 3 : 1.0
+O: 5 1 : 241 : 3 3 : 1.0
+O: 5 1 : 242 : 3 3 : 1.0
+O: 5 1 : 243 : 3 3 : 1.0
+O: 5 1 : 244 : 3 3 : 1.0
+O: 5 1 : 245 : 3 3 : 1.0
+O: 5 1 : 246 : 3 3 : 1.0
+O: 5 1 : 247 : 3 3 : 1.0
+O: 5 2 : 240 : 3 3 : 1.0
+O: 5 2 : 241 : 3 3 : 1.0
+O: 5 2 : 242 : 3 3 : 1.0
+O: 5 2 : 243 : 3 3 : 1.0
+O: 5 2 : 244 : 3 3 : 1.0
+O: 5 2 : 245 : 3 3 : 1.0
+O: 5 2 : 246 : 3 3 : 1.0
+O: 5 2 : 247 : 3 3 : 1.0
+O: 5 3 : 240 : 3 3 : 1.0
+O: 5 3 : 241 : 3 3 : 1.0
+O: 5 3 : 242 : 3 3 : 1.0
+O: 5 3 : 243 : 3 3 : 1.0
+O: 5 3 : 244 : 3 3 : 1.0
+O: 5 3 : 245 : 3 3 : 1.0
+O: 5 3 : 246 : 3 3 : 1.0
+O: 5 3 : 247 : 3 3 : 1.0
+O: 5 4 : 240 : 3 3 : 1.0
+O: 5 4 : 241 : 3 3 : 1.0
+O: 5 4 : 242 : 3 3 : 1.0
+O: 5 4 : 243 : 3 3 : 1.0
+O: 5 4 : 244 : 3 3 : 1.0
+O: 5 4 : 245 : 3 3 : 1.0
+O: 5 4 : 246 : 3 3 : 1.0
+O: 5 4 : 247 : 3 3 : 1.0
+O: 5 5 : 240 : 3 3 : 1.0
+O: 5 5 : 241 : 3 3 : 1.0
+O: 5 5 : 242 : 3 3 : 1.0
+O: 5 5 : 243 : 3 3 : 1.0
+O: 5 5 : 244 : 3 3 : 1.0
+O: 5 5 : 245 : 3 3 : 1.0
+O: 5 5 : 246 : 3 3 : 1.0
+O: 5 5 : 247 : 3 3 : 1.0
+O: 0 0 : 193 : 3 4 : 1.0
+O: 0 0 : 195 : 3 4 : 1.0
+O: 0 0 : 197 : 3 4 : 1.0
+O: 0 0 : 199 : 3 4 : 1.0
+O: 0 1 : 193 : 3 4 : 1.0
+O: 0 1 : 195 : 3 4 : 1.0
+O: 0 1 : 197 : 3 4 : 1.0
+O: 0 1 : 199 : 3 4 : 1.0
+O: 0 2 : 193 : 3 4 : 1.0
+O: 0 2 : 195 : 3 4 : 1.0
+O: 0 2 : 197 : 3 4 : 1.0
+O: 0 2 : 199 : 3 4 : 1.0
+O: 0 3 : 193 : 3 4 : 1.0
+O: 0 3 : 195 : 3 4 : 1.0
+O: 0 3 : 197 : 3 4 : 1.0
+O: 0 3 : 199 : 3 4 : 1.0
+O: 0 4 : 193 : 3 4 : 1.0
+O: 0 4 : 195 : 3 4 : 1.0
+O: 0 4 : 197 : 3 4 : 1.0
+O: 0 4 : 199 : 3 4 : 1.0
+O: 0 5 : 193 : 3 4 : 1.0
+O: 0 5 : 195 : 3 4 : 1.0
+O: 0 5 : 197 : 3 4 : 1.0
+O: 0 5 : 199 : 3 4 : 1.0
+O: 1 0 : 193 : 3 4 : 1.0
+O: 1 0 : 195 : 3 4 : 1.0
+O: 1 0 : 197 : 3 4 : 1.0
+O: 1 0 : 199 : 3 4 : 1.0
+O: 1 1 : 193 : 3 4 : 1.0
+O: 1 1 : 195 : 3 4 : 1.0
+O: 1 1 : 197 : 3 4 : 1.0
+O: 1 1 : 199 : 3 4 : 1.0
+O: 1 2 : 193 : 3 4 : 1.0
+O: 1 2 : 195 : 3 4 : 1.0
+O: 1 2 : 197 : 3 4 : 1.0
+O: 1 2 : 199 : 3 4 : 1.0
+O: 1 3 : 193 : 3 4 : 1.0
+O: 1 3 : 195 : 3 4 : 1.0
+O: 1 3 : 197 : 3 4 : 1.0
+O: 1 3 : 199 : 3 4 : 1.0
+O: 1 4 : 193 : 3 4 : 1.0
+O: 1 4 : 195 : 3 4 : 1.0
+O: 1 4 : 197 : 3 4 : 1.0
+O: 1 4 : 199 : 3 4 : 1.0
+O: 1 5 : 193 : 3 4 : 1.0
+O: 1 5 : 195 : 3 4 : 1.0
+O: 1 5 : 197 : 3 4 : 1.0
+O: 1 5 : 199 : 3 4 : 1.0
+O: 2 0 : 193 : 3 4 : 1.0
+O: 2 0 : 195 : 3 4 : 1.0
+O: 2 0 : 197 : 3 4 : 1.0
+O: 2 0 : 199 : 3 4 : 1.0
+O: 2 1 : 193 : 3 4 : 1.0
+O: 2 1 : 195 : 3 4 : 1.0
+O: 2 1 : 197 : 3 4 : 1.0
+O: 2 1 : 199 : 3 4 : 1.0
+O: 2 2 : 193 : 3 4 : 1.0
+O: 2 2 : 195 : 3 4 : 1.0
+O: 2 2 : 197 : 3 4 : 1.0
+O: 2 2 : 199 : 3 4 : 1.0
+O: 2 3 : 193 : 3 4 : 1.0
+O: 2 3 : 195 : 3 4 : 1.0
+O: 2 3 : 197 : 3 4 : 1.0
+O: 2 3 : 199 : 3 4 : 1.0
+O: 2 4 : 193 : 3 4 : 1.0
+O: 2 4 : 195 : 3 4 : 1.0
+O: 2 4 : 197 : 3 4 : 1.0
+O: 2 4 : 199 : 3 4 : 1.0
+O: 2 5 : 193 : 3 4 : 1.0
+O: 2 5 : 195 : 3 4 : 1.0
+O: 2 5 : 197 : 3 4 : 1.0
+O: 2 5 : 199 : 3 4 : 1.0
+O: 3 0 : 193 : 3 4 : 1.0
+O: 3 0 : 195 : 3 4 : 1.0
+O: 3 0 : 197 : 3 4 : 1.0
+O: 3 0 : 199 : 3 4 : 1.0
+O: 3 1 : 193 : 3 4 : 1.0
+O: 3 1 : 195 : 3 4 : 1.0
+O: 3 1 : 197 : 3 4 : 1.0
+O: 3 1 : 199 : 3 4 : 1.0
+O: 3 2 : 193 : 3 4 : 1.0
+O: 3 2 : 195 : 3 4 : 1.0
+O: 3 2 : 197 : 3 4 : 1.0
+O: 3 2 : 199 : 3 4 : 1.0
+O: 3 3 : 193 : 3 4 : 1.0
+O: 3 3 : 195 : 3 4 : 1.0
+O: 3 3 : 197 : 3 4 : 1.0
+O: 3 3 : 199 : 3 4 : 1.0
+O: 3 4 : 193 : 3 4 : 1.0
+O: 3 4 : 195 : 3 4 : 1.0
+O: 3 4 : 197 : 3 4 : 1.0
+O: 3 4 : 199 : 3 4 : 1.0
+O: 3 5 : 193 : 3 4 : 1.0
+O: 3 5 : 195 : 3 4 : 1.0
+O: 3 5 : 197 : 3 4 : 1.0
+O: 3 5 : 199 : 3 4 : 1.0
+O: 4 0 : 193 : 3 4 : 1.0
+O: 4 0 : 195 : 3 4 : 1.0
+O: 4 0 : 197 : 3 4 : 1.0
+O: 4 0 : 199 : 3 4 : 1.0
+O: 4 1 : 193 : 3 4 : 1.0
+O: 4 1 : 195 : 3 4 : 1.0
+O: 4 1 : 197 : 3 4 : 1.0
+O: 4 1 : 199 : 3 4 : 1.0
+O: 4 2 : 193 : 3 4 : 1.0
+O: 4 2 : 195 : 3 4 : 1.0
+O: 4 2 : 197 : 3 4 : 1.0
+O: 4 2 : 199 : 3 4 : 1.0
+O: 4 3 : 193 : 3 4 : 1.0
+O: 4 3 : 195 : 3 4 : 1.0
+O: 4 3 : 197 : 3 4 : 1.0
+O: 4 3 : 199 : 3 4 : 1.0
+O: 4 4 : 193 : 3 4 : 1.0
+O: 4 4 : 195 : 3 4 : 1.0
+O: 4 4 : 197 : 3 4 : 1.0
+O: 4 4 : 199 : 3 4 : 1.0
+O: 4 5 : 193 : 3 4 : 1.0
+O: 4 5 : 195 : 3 4 : 1.0
+O: 4 5 : 197 : 3 4 : 1.0
+O: 4 5 : 199 : 3 4 : 1.0
+O: 5 0 : 193 : 3 4 : 1.0
+O: 5 0 : 195 : 3 4 : 1.0
+O: 5 0 : 197 : 3 4 : 1.0
+O: 5 0 : 199 : 3 4 : 1.0
+O: 5 1 : 193 : 3 4 : 1.0
+O: 5 1 : 195 : 3 4 : 1.0
+O: 5 1 : 197 : 3 4 : 1.0
+O: 5 1 : 199 : 3 4 : 1.0
+O: 5 2 : 193 : 3 4 : 1.0
+O: 5 2 : 195 : 3 4 : 1.0
+O: 5 2 : 197 : 3 4 : 1.0
+O: 5 2 : 199 : 3 4 : 1.0
+O: 5 3 : 193 : 3 4 : 1.0
+O: 5 3 : 195 : 3 4 : 1.0
+O: 5 3 : 197 : 3 4 : 1.0
+O: 5 3 : 199 : 3 4 : 1.0
+O: 5 4 : 193 : 3 4 : 1.0
+O: 5 4 : 195 : 3 4 : 1.0
+O: 5 4 : 197 : 3 4 : 1.0
+O: 5 4 : 199 : 3 4 : 1.0
+O: 5 5 : 193 : 3 4 : 1.0
+O: 5 5 : 195 : 3 4 : 1.0
+O: 5 5 : 197 : 3 4 : 1.0
+O: 5 5 : 199 : 3 4 : 1.0
+O: 0 0 : 210 : 3 5 : 1.0
+O: 0 0 : 211 : 3 5 : 1.0
+O: 0 0 : 214 : 3 5 : 1.0
+O: 0 0 : 215 : 3 5 : 1.0
+O: 0 1 : 210 : 3 5 : 1.0
+O: 0 1 : 211 : 3 5 : 1.0
+O: 0 1 : 214 : 3 5 : 1.0
+O: 0 1 : 215 : 3 5 : 1.0
+O: 0 2 : 210 : 3 5 : 1.0
+O: 0 2 : 211 : 3 5 : 1.0
+O: 0 2 : 214 : 3 5 : 1.0
+O: 0 2 : 215 : 3 5 : 1.0
+O: 0 3 : 210 : 3 5 : 1.0
+O: 0 3 : 211 : 3 5 : 1.0
+O: 0 3 : 214 : 3 5 : 1.0
+O: 0 3 : 215 : 3 5 : 1.0
+O: 0 4 : 210 : 3 5 : 1.0
+O: 0 4 : 211 : 3 5 : 1.0
+O: 0 4 : 214 : 3 5 : 1.0
+O: 0 4 : 215 : 3 5 : 1.0
+O: 0 5 : 210 : 3 5 : 1.0
+O: 0 5 : 211 : 3 5 : 1.0
+O: 0 5 : 214 : 3 5 : 1.0
+O: 0 5 : 215 : 3 5 : 1.0
+O: 1 0 : 210 : 3 5 : 1.0
+O: 1 0 : 211 : 3 5 : 1.0
+O: 1 0 : 214 : 3 5 : 1.0
+O: 1 0 : 215 : 3 5 : 1.0
+O: 1 1 : 210 : 3 5 : 1.0
+O: 1 1 : 211 : 3 5 : 1.0
+O: 1 1 : 214 : 3 5 : 1.0
+O: 1 1 : 215 : 3 5 : 1.0
+O: 1 2 : 210 : 3 5 : 1.0
+O: 1 2 : 211 : 3 5 : 1.0
+O: 1 2 : 214 : 3 5 : 1.0
+O: 1 2 : 215 : 3 5 : 1.0
+O: 1 3 : 210 : 3 5 : 1.0
+O: 1 3 : 211 : 3 5 : 1.0
+O: 1 3 : 214 : 3 5 : 1.0
+O: 1 3 : 215 : 3 5 : 1.0
+O: 1 4 : 210 : 3 5 : 1.0
+O: 1 4 : 211 : 3 5 : 1.0
+O: 1 4 : 214 : 3 5 : 1.0
+O: 1 4 : 215 : 3 5 : 1.0
+O: 1 5 : 210 : 3 5 : 1.0
+O: 1 5 : 211 : 3 5 : 1.0
+O: 1 5 : 214 : 3 5 : 1.0
+O: 1 5 : 215 : 3 5 : 1.0
+O: 2 0 : 210 : 3 5 : 1.0
+O: 2 0 : 211 : 3 5 : 1.0
+O: 2 0 : 214 : 3 5 : 1.0
+O: 2 0 : 215 : 3 5 : 1.0
+O: 2 1 : 210 : 3 5 : 1.0
+O: 2 1 : 211 : 3 5 : 1.0
+O: 2 1 : 214 : 3 5 : 1.0
+O: 2 1 : 215 : 3 5 : 1.0
+O: 2 2 : 210 : 3 5 : 1.0
+O: 2 2 : 211 : 3 5 : 1.0
+O: 2 2 : 214 : 3 5 : 1.0
+O: 2 2 : 215 : 3 5 : 1.0
+O: 2 3 : 210 : 3 5 : 1.0
+O: 2 3 : 211 : 3 5 : 1.0
+O: 2 3 : 214 : 3 5 : 1.0
+O: 2 3 : 215 : 3 5 : 1.0
+O: 2 4 : 210 : 3 5 : 1.0
+O: 2 4 : 211 : 3 5 : 1.0
+O: 2 4 : 214 : 3 5 : 1.0
+O: 2 4 : 215 : 3 5 : 1.0
+O: 2 5 : 210 : 3 5 : 1.0
+O: 2 5 : 211 : 3 5 : 1.0
+O: 2 5 : 214 : 3 5 : 1.0
+O: 2 5 : 215 : 3 5 : 1.0
+O: 3 0 : 210 : 3 5 : 1.0
+O: 3 0 : 211 : 3 5 : 1.0
+O: 3 0 : 214 : 3 5 : 1.0
+O: 3 0 : 215 : 3 5 : 1.0
+O: 3 1 : 210 : 3 5 : 1.0
+O: 3 1 : 211 : 3 5 : 1.0
+O: 3 1 : 214 : 3 5 : 1.0
+O: 3 1 : 215 : 3 5 : 1.0
+O: 3 2 : 210 : 3 5 : 1.0
+O: 3 2 : 211 : 3 5 : 1.0
+O: 3 2 : 214 : 3 5 : 1.0
+O: 3 2 : 215 : 3 5 : 1.0
+O: 3 3 : 210 : 3 5 : 1.0
+O: 3 3 : 211 : 3 5 : 1.0
+O: 3 3 : 214 : 3 5 : 1.0
+O: 3 3 : 215 : 3 5 : 1.0
+O: 3 4 : 210 : 3 5 : 1.0
+O: 3 4 : 211 : 3 5 : 1.0
+O: 3 4 : 214 : 3 5 : 1.0
+O: 3 4 : 215 : 3 5 : 1.0
+O: 3 5 : 210 : 3 5 : 1.0
+O: 3 5 : 211 : 3 5 : 1.0
+O: 3 5 : 214 : 3 5 : 1.0
+O: 3 5 : 215 : 3 5 : 1.0
+O: 4 0 : 210 : 3 5 : 1.0
+O: 4 0 : 211 : 3 5 : 1.0
+O: 4 0 : 214 : 3 5 : 1.0
+O: 4 0 : 215 : 3 5 : 1.0
+O: 4 1 : 210 : 3 5 : 1.0
+O: 4 1 : 211 : 3 5 : 1.0
+O: 4 1 : 214 : 3 5 : 1.0
+O: 4 1 : 215 : 3 5 : 1.0
+O: 4 2 : 210 : 3 5 : 1.0
+O: 4 2 : 211 : 3 5 : 1.0
+O: 4 2 : 214 : 3 5 : 1.0
+O: 4 2 : 215 : 3 5 : 1.0
+O: 4 3 : 210 : 3 5 : 1.0
+O: 4 3 : 211 : 3 5 : 1.0
+O: 4 3 : 214 : 3 5 : 1.0
+O: 4 3 : 215 : 3 5 : 1.0
+O: 4 4 : 210 : 3 5 : 1.0
+O: 4 4 : 211 : 3 5 : 1.0
+O: 4 4 : 214 : 3 5 : 1.0
+O: 4 4 : 215 : 3 5 : 1.0
+O: 4 5 : 210 : 3 5 : 1.0
+O: 4 5 : 211 : 3 5 : 1.0
+O: 4 5 : 214 : 3 5 : 1.0
+O: 4 5 : 215 : 3 5 : 1.0
+O: 5 0 : 210 : 3 5 : 1.0
+O: 5 0 : 211 : 3 5 : 1.0
+O: 5 0 : 214 : 3 5 : 1.0
+O: 5 0 : 215 : 3 5 : 1.0
+O: 5 1 : 210 : 3 5 : 1.0
+O: 5 1 : 211 : 3 5 : 1.0
+O: 5 1 : 214 : 3 5 : 1.0
+O: 5 1 : 215 : 3 5 : 1.0
+O: 5 2 : 210 : 3 5 : 1.0
+O: 5 2 : 211 : 3 5 : 1.0
+O: 5 2 : 214 : 3 5 : 1.0
+O: 5 2 : 215 : 3 5 : 1.0
+O: 5 3 : 210 : 3 5 : 1.0
+O: 5 3 : 211 : 3 5 : 1.0
+O: 5 3 : 214 : 3 5 : 1.0
+O: 5 3 : 215 : 3 5 : 1.0
+O: 5 4 : 210 : 3 5 : 1.0
+O: 5 4 : 211 : 3 5 : 1.0
+O: 5 4 : 214 : 3 5 : 1.0
+O: 5 4 : 215 : 3 5 : 1.0
+O: 5 5 : 210 : 3 5 : 1.0
+O: 5 5 : 211 : 3 5 : 1.0
+O: 5 5 : 214 : 3 5 : 1.0
+O: 5 5 : 215 : 3 5 : 1.0
+O: 0 0 : 228 : 3 6 : 1.0
+O: 0 0 : 229 : 3 6 : 1.0
+O: 0 0 : 230 : 3 6 : 1.0
+O: 0 0 : 231 : 3 6 : 1.0
+O: 0 1 : 228 : 3 6 : 1.0
+O: 0 1 : 229 : 3 6 : 1.0
+O: 0 1 : 230 : 3 6 : 1.0
+O: 0 1 : 231 : 3 6 : 1.0
+O: 0 2 : 228 : 3 6 : 1.0
+O: 0 2 : 229 : 3 6 : 1.0
+O: 0 2 : 230 : 3 6 : 1.0
+O: 0 2 : 231 : 3 6 : 1.0
+O: 0 3 : 228 : 3 6 : 1.0
+O: 0 3 : 229 : 3 6 : 1.0
+O: 0 3 : 230 : 3 6 : 1.0
+O: 0 3 : 231 : 3 6 : 1.0
+O: 0 4 : 228 : 3 6 : 1.0
+O: 0 4 : 229 : 3 6 : 1.0
+O: 0 4 : 230 : 3 6 : 1.0
+O: 0 4 : 231 : 3 6 : 1.0
+O: 0 5 : 228 : 3 6 : 1.0
+O: 0 5 : 229 : 3 6 : 1.0
+O: 0 5 : 230 : 3 6 : 1.0
+O: 0 5 : 231 : 3 6 : 1.0
+O: 1 0 : 228 : 3 6 : 1.0
+O: 1 0 : 229 : 3 6 : 1.0
+O: 1 0 : 230 : 3 6 : 1.0
+O: 1 0 : 231 : 3 6 : 1.0
+O: 1 1 : 228 : 3 6 : 1.0
+O: 1 1 : 229 : 3 6 : 1.0
+O: 1 1 : 230 : 3 6 : 1.0
+O: 1 1 : 231 : 3 6 : 1.0
+O: 1 2 : 228 : 3 6 : 1.0
+O: 1 2 : 229 : 3 6 : 1.0
+O: 1 2 : 230 : 3 6 : 1.0
+O: 1 2 : 231 : 3 6 : 1.0
+O: 1 3 : 228 : 3 6 : 1.0
+O: 1 3 : 229 : 3 6 : 1.0
+O: 1 3 : 230 : 3 6 : 1.0
+O: 1 3 : 231 : 3 6 : 1.0
+O: 1 4 : 228 : 3 6 : 1.0
+O: 1 4 : 229 : 3 6 : 1.0
+O: 1 4 : 230 : 3 6 : 1.0
+O: 1 4 : 231 : 3 6 : 1.0
+O: 1 5 : 228 : 3 6 : 1.0
+O: 1 5 : 229 : 3 6 : 1.0
+O: 1 5 : 230 : 3 6 : 1.0
+O: 1 5 : 231 : 3 6 : 1.0
+O: 2 0 : 228 : 3 6 : 1.0
+O: 2 0 : 229 : 3 6 : 1.0
+O: 2 0 : 230 : 3 6 : 1.0
+O: 2 0 : 231 : 3 6 : 1.0
+O: 2 1 : 228 : 3 6 : 1.0
+O: 2 1 : 229 : 3 6 : 1.0
+O: 2 1 : 230 : 3 6 : 1.0
+O: 2 1 : 231 : 3 6 : 1.0
+O: 2 2 : 228 : 3 6 : 1.0
+O: 2 2 : 229 : 3 6 : 1.0
+O: 2 2 : 230 : 3 6 : 1.0
+O: 2 2 : 231 : 3 6 : 1.0
+O: 2 3 : 228 : 3 6 : 1.0
+O: 2 3 : 229 : 3 6 : 1.0
+O: 2 3 : 230 : 3 6 : 1.0
+O: 2 3 : 231 : 3 6 : 1.0
+O: 2 4 : 228 : 3 6 : 1.0
+O: 2 4 : 229 : 3 6 : 1.0
+O: 2 4 : 230 : 3 6 : 1.0
+O: 2 4 : 231 : 3 6 : 1.0
+O: 2 5 : 228 : 3 6 : 1.0
+O: 2 5 : 229 : 3 6 : 1.0
+O: 2 5 : 230 : 3 6 : 1.0
+O: 2 5 : 231 : 3 6 : 1.0
+O: 3 0 : 228 : 3 6 : 1.0
+O: 3 0 : 229 : 3 6 : 1.0
+O: 3 0 : 230 : 3 6 : 1.0
+O: 3 0 : 231 : 3 6 : 1.0
+O: 3 1 : 228 : 3 6 : 1.0
+O: 3 1 : 229 : 3 6 : 1.0
+O: 3 1 : 230 : 3 6 : 1.0
+O: 3 1 : 231 : 3 6 : 1.0
+O: 3 2 : 228 : 3 6 : 1.0
+O: 3 2 : 229 : 3 6 : 1.0
+O: 3 2 : 230 : 3 6 : 1.0
+O: 3 2 : 231 : 3 6 : 1.0
+O: 3 3 : 228 : 3 6 : 1.0
+O: 3 3 : 229 : 3 6 : 1.0
+O: 3 3 : 230 : 3 6 : 1.0
+O: 3 3 : 231 : 3 6 : 1.0
+O: 3 4 : 228 : 3 6 : 1.0
+O: 3 4 : 229 : 3 6 : 1.0
+O: 3 4 : 230 : 3 6 : 1.0
+O: 3 4 : 231 : 3 6 : 1.0
+O: 3 5 : 228 : 3 6 : 1.0
+O: 3 5 : 229 : 3 6 : 1.0
+O: 3 5 : 230 : 3 6 : 1.0
+O: 3 5 : 231 : 3 6 : 1.0
+O: 4 0 : 228 : 3 6 : 1.0
+O: 4 0 : 229 : 3 6 : 1.0
+O: 4 0 : 230 : 3 6 : 1.0
+O: 4 0 : 231 : 3 6 : 1.0
+O: 4 1 : 228 : 3 6 : 1.0
+O: 4 1 : 229 : 3 6 : 1.0
+O: 4 1 : 230 : 3 6 : 1.0
+O: 4 1 : 231 : 3 6 : 1.0
+O: 4 2 : 228 : 3 6 : 1.0
+O: 4 2 : 229 : 3 6 : 1.0
+O: 4 2 : 230 : 3 6 : 1.0
+O: 4 2 : 231 : 3 6 : 1.0
+O: 4 3 : 228 : 3 6 : 1.0
+O: 4 3 : 229 : 3 6 : 1.0
+O: 4 3 : 230 : 3 6 : 1.0
+O: 4 3 : 231 : 3 6 : 1.0
+O: 4 4 : 228 : 3 6 : 1.0
+O: 4 4 : 229 : 3 6 : 1.0
+O: 4 4 : 230 : 3 6 : 1.0
+O: 4 4 : 231 : 3 6 : 1.0
+O: 4 5 : 228 : 3 6 : 1.0
+O: 4 5 : 229 : 3 6 : 1.0
+O: 4 5 : 230 : 3 6 : 1.0
+O: 4 5 : 231 : 3 6 : 1.0
+O: 5 0 : 228 : 3 6 : 1.0
+O: 5 0 : 229 : 3 6 : 1.0
+O: 5 0 : 230 : 3 6 : 1.0
+O: 5 0 : 231 : 3 6 : 1.0
+O: 5 1 : 228 : 3 6 : 1.0
+O: 5 1 : 229 : 3 6 : 1.0
+O: 5 1 : 230 : 3 6 : 1.0
+O: 5 1 : 231 : 3 6 : 1.0
+O: 5 2 : 228 : 3 6 : 1.0
+O: 5 2 : 229 : 3 6 : 1.0
+O: 5 2 : 230 : 3 6 : 1.0
+O: 5 2 : 231 : 3 6 : 1.0
+O: 5 3 : 228 : 3 6 : 1.0
+O: 5 3 : 229 : 3 6 : 1.0
+O: 5 3 : 230 : 3 6 : 1.0
+O: 5 3 : 231 : 3 6 : 1.0
+O: 5 4 : 228 : 3 6 : 1.0
+O: 5 4 : 229 : 3 6 : 1.0
+O: 5 4 : 230 : 3 6 : 1.0
+O: 5 4 : 231 : 3 6 : 1.0
+O: 5 5 : 228 : 3 6 : 1.0
+O: 5 5 : 229 : 3 6 : 1.0
+O: 5 5 : 230 : 3 6 : 1.0
+O: 5 5 : 231 : 3 6 : 1.0
+O: 0 0 : 17 : 4 1 : 1.0
+O: 0 0 : 21 : 4 1 : 1.0
+O: 0 0 : 25 : 4 1 : 1.0
+O: 0 0 : 29 : 4 1 : 1.0
+O: 0 1 : 17 : 4 1 : 1.0
+O: 0 1 : 21 : 4 1 : 1.0
+O: 0 1 : 25 : 4 1 : 1.0
+O: 0 1 : 29 : 4 1 : 1.0
+O: 0 2 : 17 : 4 1 : 1.0
+O: 0 2 : 21 : 4 1 : 1.0
+O: 0 2 : 25 : 4 1 : 1.0
+O: 0 2 : 29 : 4 1 : 1.0
+O: 0 3 : 17 : 4 1 : 1.0
+O: 0 3 : 21 : 4 1 : 1.0
+O: 0 3 : 25 : 4 1 : 1.0
+O: 0 3 : 29 : 4 1 : 1.0
+O: 0 4 : 17 : 4 1 : 1.0
+O: 0 4 : 21 : 4 1 : 1.0
+O: 0 4 : 25 : 4 1 : 1.0
+O: 0 4 : 29 : 4 1 : 1.0
+O: 0 5 : 17 : 4 1 : 1.0
+O: 0 5 : 21 : 4 1 : 1.0
+O: 0 5 : 25 : 4 1 : 1.0
+O: 0 5 : 29 : 4 1 : 1.0
+O: 1 0 : 17 : 4 1 : 1.0
+O: 1 0 : 21 : 4 1 : 1.0
+O: 1 0 : 25 : 4 1 : 1.0
+O: 1 0 : 29 : 4 1 : 1.0
+O: 1 1 : 17 : 4 1 : 1.0
+O: 1 1 : 21 : 4 1 : 1.0
+O: 1 1 : 25 : 4 1 : 1.0
+O: 1 1 : 29 : 4 1 : 1.0
+O: 1 2 : 17 : 4 1 : 1.0
+O: 1 2 : 21 : 4 1 : 1.0
+O: 1 2 : 25 : 4 1 : 1.0
+O: 1 2 : 29 : 4 1 : 1.0
+O: 1 3 : 17 : 4 1 : 1.0
+O: 1 3 : 21 : 4 1 : 1.0
+O: 1 3 : 25 : 4 1 : 1.0
+O: 1 3 : 29 : 4 1 : 1.0
+O: 1 4 : 17 : 4 1 : 1.0
+O: 1 4 : 21 : 4 1 : 1.0
+O: 1 4 : 25 : 4 1 : 1.0
+O: 1 4 : 29 : 4 1 : 1.0
+O: 1 5 : 17 : 4 1 : 1.0
+O: 1 5 : 21 : 4 1 : 1.0
+O: 1 5 : 25 : 4 1 : 1.0
+O: 1 5 : 29 : 4 1 : 1.0
+O: 2 0 : 17 : 4 1 : 1.0
+O: 2 0 : 21 : 4 1 : 1.0
+O: 2 0 : 25 : 4 1 : 1.0
+O: 2 0 : 29 : 4 1 : 1.0
+O: 2 1 : 17 : 4 1 : 1.0
+O: 2 1 : 21 : 4 1 : 1.0
+O: 2 1 : 25 : 4 1 : 1.0
+O: 2 1 : 29 : 4 1 : 1.0
+O: 2 2 : 17 : 4 1 : 1.0
+O: 2 2 : 21 : 4 1 : 1.0
+O: 2 2 : 25 : 4 1 : 1.0
+O: 2 2 : 29 : 4 1 : 1.0
+O: 2 3 : 17 : 4 1 : 1.0
+O: 2 3 : 21 : 4 1 : 1.0
+O: 2 3 : 25 : 4 1 : 1.0
+O: 2 3 : 29 : 4 1 : 1.0
+O: 2 4 : 17 : 4 1 : 1.0
+O: 2 4 : 21 : 4 1 : 1.0
+O: 2 4 : 25 : 4 1 : 1.0
+O: 2 4 : 29 : 4 1 : 1.0
+O: 2 5 : 17 : 4 1 : 1.0
+O: 2 5 : 21 : 4 1 : 1.0
+O: 2 5 : 25 : 4 1 : 1.0
+O: 2 5 : 29 : 4 1 : 1.0
+O: 3 0 : 17 : 4 1 : 1.0
+O: 3 0 : 21 : 4 1 : 1.0
+O: 3 0 : 25 : 4 1 : 1.0
+O: 3 0 : 29 : 4 1 : 1.0
+O: 3 1 : 17 : 4 1 : 1.0
+O: 3 1 : 21 : 4 1 : 1.0
+O: 3 1 : 25 : 4 1 : 1.0
+O: 3 1 : 29 : 4 1 : 1.0
+O: 3 2 : 17 : 4 1 : 1.0
+O: 3 2 : 21 : 4 1 : 1.0
+O: 3 2 : 25 : 4 1 : 1.0
+O: 3 2 : 29 : 4 1 : 1.0
+O: 3 3 : 17 : 4 1 : 1.0
+O: 3 3 : 21 : 4 1 : 1.0
+O: 3 3 : 25 : 4 1 : 1.0
+O: 3 3 : 29 : 4 1 : 1.0
+O: 3 4 : 17 : 4 1 : 1.0
+O: 3 4 : 21 : 4 1 : 1.0
+O: 3 4 : 25 : 4 1 : 1.0
+O: 3 4 : 29 : 4 1 : 1.0
+O: 3 5 : 17 : 4 1 : 1.0
+O: 3 5 : 21 : 4 1 : 1.0
+O: 3 5 : 25 : 4 1 : 1.0
+O: 3 5 : 29 : 4 1 : 1.0
+O: 4 0 : 17 : 4 1 : 1.0
+O: 4 0 : 21 : 4 1 : 1.0
+O: 4 0 : 25 : 4 1 : 1.0
+O: 4 0 : 29 : 4 1 : 1.0
+O: 4 1 : 17 : 4 1 : 1.0
+O: 4 1 : 21 : 4 1 : 1.0
+O: 4 1 : 25 : 4 1 : 1.0
+O: 4 1 : 29 : 4 1 : 1.0
+O: 4 2 : 17 : 4 1 : 1.0
+O: 4 2 : 21 : 4 1 : 1.0
+O: 4 2 : 25 : 4 1 : 1.0
+O: 4 2 : 29 : 4 1 : 1.0
+O: 4 3 : 17 : 4 1 : 1.0
+O: 4 3 : 21 : 4 1 : 1.0
+O: 4 3 : 25 : 4 1 : 1.0
+O: 4 3 : 29 : 4 1 : 1.0
+O: 4 4 : 17 : 4 1 : 1.0
+O: 4 4 : 21 : 4 1 : 1.0
+O: 4 4 : 25 : 4 1 : 1.0
+O: 4 4 : 29 : 4 1 : 1.0
+O: 4 5 : 17 : 4 1 : 1.0
+O: 4 5 : 21 : 4 1 : 1.0
+O: 4 5 : 25 : 4 1 : 1.0
+O: 4 5 : 29 : 4 1 : 1.0
+O: 5 0 : 17 : 4 1 : 1.0
+O: 5 0 : 21 : 4 1 : 1.0
+O: 5 0 : 25 : 4 1 : 1.0
+O: 5 0 : 29 : 4 1 : 1.0
+O: 5 1 : 17 : 4 1 : 1.0
+O: 5 1 : 21 : 4 1 : 1.0
+O: 5 1 : 25 : 4 1 : 1.0
+O: 5 1 : 29 : 4 1 : 1.0
+O: 5 2 : 17 : 4 1 : 1.0
+O: 5 2 : 21 : 4 1 : 1.0
+O: 5 2 : 25 : 4 1 : 1.0
+O: 5 2 : 29 : 4 1 : 1.0
+O: 5 3 : 17 : 4 1 : 1.0
+O: 5 3 : 21 : 4 1 : 1.0
+O: 5 3 : 25 : 4 1 : 1.0
+O: 5 3 : 29 : 4 1 : 1.0
+O: 5 4 : 17 : 4 1 : 1.0
+O: 5 4 : 21 : 4 1 : 1.0
+O: 5 4 : 25 : 4 1 : 1.0
+O: 5 4 : 29 : 4 1 : 1.0
+O: 5 5 : 17 : 4 1 : 1.0
+O: 5 5 : 21 : 4 1 : 1.0
+O: 5 5 : 25 : 4 1 : 1.0
+O: 5 5 : 29 : 4 1 : 1.0
+O: 0 0 : 33 : 4 2 : 1.0
+O: 0 0 : 35 : 4 2 : 1.0
+O: 0 0 : 41 : 4 2 : 1.0
+O: 0 0 : 43 : 4 2 : 1.0
+O: 0 1 : 33 : 4 2 : 1.0
+O: 0 1 : 35 : 4 2 : 1.0
+O: 0 1 : 41 : 4 2 : 1.0
+O: 0 1 : 43 : 4 2 : 1.0
+O: 0 2 : 33 : 4 2 : 1.0
+O: 0 2 : 35 : 4 2 : 1.0
+O: 0 2 : 41 : 4 2 : 1.0
+O: 0 2 : 43 : 4 2 : 1.0
+O: 0 3 : 33 : 4 2 : 1.0
+O: 0 3 : 35 : 4 2 : 1.0
+O: 0 3 : 41 : 4 2 : 1.0
+O: 0 3 : 43 : 4 2 : 1.0
+O: 0 4 : 33 : 4 2 : 1.0
+O: 0 4 : 35 : 4 2 : 1.0
+O: 0 4 : 41 : 4 2 : 1.0
+O: 0 4 : 43 : 4 2 : 1.0
+O: 0 5 : 33 : 4 2 : 1.0
+O: 0 5 : 35 : 4 2 : 1.0
+O: 0 5 : 41 : 4 2 : 1.0
+O: 0 5 : 43 : 4 2 : 1.0
+O: 1 0 : 33 : 4 2 : 1.0
+O: 1 0 : 35 : 4 2 : 1.0
+O: 1 0 : 41 : 4 2 : 1.0
+O: 1 0 : 43 : 4 2 : 1.0
+O: 1 1 : 33 : 4 2 : 1.0
+O: 1 1 : 35 : 4 2 : 1.0
+O: 1 1 : 41 : 4 2 : 1.0
+O: 1 1 : 43 : 4 2 : 1.0
+O: 1 2 : 33 : 4 2 : 1.0
+O: 1 2 : 35 : 4 2 : 1.0
+O: 1 2 : 41 : 4 2 : 1.0
+O: 1 2 : 43 : 4 2 : 1.0
+O: 1 3 : 33 : 4 2 : 1.0
+O: 1 3 : 35 : 4 2 : 1.0
+O: 1 3 : 41 : 4 2 : 1.0
+O: 1 3 : 43 : 4 2 : 1.0
+O: 1 4 : 33 : 4 2 : 1.0
+O: 1 4 : 35 : 4 2 : 1.0
+O: 1 4 : 41 : 4 2 : 1.0
+O: 1 4 : 43 : 4 2 : 1.0
+O: 1 5 : 33 : 4 2 : 1.0
+O: 1 5 : 35 : 4 2 : 1.0
+O: 1 5 : 41 : 4 2 : 1.0
+O: 1 5 : 43 : 4 2 : 1.0
+O: 2 0 : 33 : 4 2 : 1.0
+O: 2 0 : 35 : 4 2 : 1.0
+O: 2 0 : 41 : 4 2 : 1.0
+O: 2 0 : 43 : 4 2 : 1.0
+O: 2 1 : 33 : 4 2 : 1.0
+O: 2 1 : 35 : 4 2 : 1.0
+O: 2 1 : 41 : 4 2 : 1.0
+O: 2 1 : 43 : 4 2 : 1.0
+O: 2 2 : 33 : 4 2 : 1.0
+O: 2 2 : 35 : 4 2 : 1.0
+O: 2 2 : 41 : 4 2 : 1.0
+O: 2 2 : 43 : 4 2 : 1.0
+O: 2 3 : 33 : 4 2 : 1.0
+O: 2 3 : 35 : 4 2 : 1.0
+O: 2 3 : 41 : 4 2 : 1.0
+O: 2 3 : 43 : 4 2 : 1.0
+O: 2 4 : 33 : 4 2 : 1.0
+O: 2 4 : 35 : 4 2 : 1.0
+O: 2 4 : 41 : 4 2 : 1.0
+O: 2 4 : 43 : 4 2 : 1.0
+O: 2 5 : 33 : 4 2 : 1.0
+O: 2 5 : 35 : 4 2 : 1.0
+O: 2 5 : 41 : 4 2 : 1.0
+O: 2 5 : 43 : 4 2 : 1.0
+O: 3 0 : 33 : 4 2 : 1.0
+O: 3 0 : 35 : 4 2 : 1.0
+O: 3 0 : 41 : 4 2 : 1.0
+O: 3 0 : 43 : 4 2 : 1.0
+O: 3 1 : 33 : 4 2 : 1.0
+O: 3 1 : 35 : 4 2 : 1.0
+O: 3 1 : 41 : 4 2 : 1.0
+O: 3 1 : 43 : 4 2 : 1.0
+O: 3 2 : 33 : 4 2 : 1.0
+O: 3 2 : 35 : 4 2 : 1.0
+O: 3 2 : 41 : 4 2 : 1.0
+O: 3 2 : 43 : 4 2 : 1.0
+O: 3 3 : 33 : 4 2 : 1.0
+O: 3 3 : 35 : 4 2 : 1.0
+O: 3 3 : 41 : 4 2 : 1.0
+O: 3 3 : 43 : 4 2 : 1.0
+O: 3 4 : 33 : 4 2 : 1.0
+O: 3 4 : 35 : 4 2 : 1.0
+O: 3 4 : 41 : 4 2 : 1.0
+O: 3 4 : 43 : 4 2 : 1.0
+O: 3 5 : 33 : 4 2 : 1.0
+O: 3 5 : 35 : 4 2 : 1.0
+O: 3 5 : 41 : 4 2 : 1.0
+O: 3 5 : 43 : 4 2 : 1.0
+O: 4 0 : 33 : 4 2 : 1.0
+O: 4 0 : 35 : 4 2 : 1.0
+O: 4 0 : 41 : 4 2 : 1.0
+O: 4 0 : 43 : 4 2 : 1.0
+O: 4 1 : 33 : 4 2 : 1.0
+O: 4 1 : 35 : 4 2 : 1.0
+O: 4 1 : 41 : 4 2 : 1.0
+O: 4 1 : 43 : 4 2 : 1.0
+O: 4 2 : 33 : 4 2 : 1.0
+O: 4 2 : 35 : 4 2 : 1.0
+O: 4 2 : 41 : 4 2 : 1.0
+O: 4 2 : 43 : 4 2 : 1.0
+O: 4 3 : 33 : 4 2 : 1.0
+O: 4 3 : 35 : 4 2 : 1.0
+O: 4 3 : 41 : 4 2 : 1.0
+O: 4 3 : 43 : 4 2 : 1.0
+O: 4 4 : 33 : 4 2 : 1.0
+O: 4 4 : 35 : 4 2 : 1.0
+O: 4 4 : 41 : 4 2 : 1.0
+O: 4 4 : 43 : 4 2 : 1.0
+O: 4 5 : 33 : 4 2 : 1.0
+O: 4 5 : 35 : 4 2 : 1.0
+O: 4 5 : 41 : 4 2 : 1.0
+O: 4 5 : 43 : 4 2 : 1.0
+O: 5 0 : 33 : 4 2 : 1.0
+O: 5 0 : 35 : 4 2 : 1.0
+O: 5 0 : 41 : 4 2 : 1.0
+O: 5 0 : 43 : 4 2 : 1.0
+O: 5 1 : 33 : 4 2 : 1.0
+O: 5 1 : 35 : 4 2 : 1.0
+O: 5 1 : 41 : 4 2 : 1.0
+O: 5 1 : 43 : 4 2 : 1.0
+O: 5 2 : 33 : 4 2 : 1.0
+O: 5 2 : 35 : 4 2 : 1.0
+O: 5 2 : 41 : 4 2 : 1.0
+O: 5 2 : 43 : 4 2 : 1.0
+O: 5 3 : 33 : 4 2 : 1.0
+O: 5 3 : 35 : 4 2 : 1.0
+O: 5 3 : 41 : 4 2 : 1.0
+O: 5 3 : 43 : 4 2 : 1.0
+O: 5 4 : 33 : 4 2 : 1.0
+O: 5 4 : 35 : 4 2 : 1.0
+O: 5 4 : 41 : 4 2 : 1.0
+O: 5 4 : 43 : 4 2 : 1.0
+O: 5 5 : 33 : 4 2 : 1.0
+O: 5 5 : 35 : 4 2 : 1.0
+O: 5 5 : 41 : 4 2 : 1.0
+O: 5 5 : 43 : 4 2 : 1.0
+O: 0 0 : 49 : 4 3 : 1.0
+O: 0 0 : 51 : 4 3 : 1.0
+O: 0 0 : 53 : 4 3 : 1.0
+O: 0 0 : 55 : 4 3 : 1.0
+O: 0 1 : 49 : 4 3 : 1.0
+O: 0 1 : 51 : 4 3 : 1.0
+O: 0 1 : 53 : 4 3 : 1.0
+O: 0 1 : 55 : 4 3 : 1.0
+O: 0 2 : 49 : 4 3 : 1.0
+O: 0 2 : 51 : 4 3 : 1.0
+O: 0 2 : 53 : 4 3 : 1.0
+O: 0 2 : 55 : 4 3 : 1.0
+O: 0 3 : 49 : 4 3 : 1.0
+O: 0 3 : 51 : 4 3 : 1.0
+O: 0 3 : 53 : 4 3 : 1.0
+O: 0 3 : 55 : 4 3 : 1.0
+O: 0 4 : 49 : 4 3 : 1.0
+O: 0 4 : 51 : 4 3 : 1.0
+O: 0 4 : 53 : 4 3 : 1.0
+O: 0 4 : 55 : 4 3 : 1.0
+O: 0 5 : 49 : 4 3 : 1.0
+O: 0 5 : 51 : 4 3 : 1.0
+O: 0 5 : 53 : 4 3 : 1.0
+O: 0 5 : 55 : 4 3 : 1.0
+O: 1 0 : 49 : 4 3 : 1.0
+O: 1 0 : 51 : 4 3 : 1.0
+O: 1 0 : 53 : 4 3 : 1.0
+O: 1 0 : 55 : 4 3 : 1.0
+O: 1 1 : 49 : 4 3 : 1.0
+O: 1 1 : 51 : 4 3 : 1.0
+O: 1 1 : 53 : 4 3 : 1.0
+O: 1 1 : 55 : 4 3 : 1.0
+O: 1 2 : 49 : 4 3 : 1.0
+O: 1 2 : 51 : 4 3 : 1.0
+O: 1 2 : 53 : 4 3 : 1.0
+O: 1 2 : 55 : 4 3 : 1.0
+O: 1 3 : 49 : 4 3 : 1.0
+O: 1 3 : 51 : 4 3 : 1.0
+O: 1 3 : 53 : 4 3 : 1.0
+O: 1 3 : 55 : 4 3 : 1.0
+O: 1 4 : 49 : 4 3 : 1.0
+O: 1 4 : 51 : 4 3 : 1.0
+O: 1 4 : 53 : 4 3 : 1.0
+O: 1 4 : 55 : 4 3 : 1.0
+O: 1 5 : 49 : 4 3 : 1.0
+O: 1 5 : 51 : 4 3 : 1.0
+O: 1 5 : 53 : 4 3 : 1.0
+O: 1 5 : 55 : 4 3 : 1.0
+O: 2 0 : 49 : 4 3 : 1.0
+O: 2 0 : 51 : 4 3 : 1.0
+O: 2 0 : 53 : 4 3 : 1.0
+O: 2 0 : 55 : 4 3 : 1.0
+O: 2 1 : 49 : 4 3 : 1.0
+O: 2 1 : 51 : 4 3 : 1.0
+O: 2 1 : 53 : 4 3 : 1.0
+O: 2 1 : 55 : 4 3 : 1.0
+O: 2 2 : 49 : 4 3 : 1.0
+O: 2 2 : 51 : 4 3 : 1.0
+O: 2 2 : 53 : 4 3 : 1.0
+O: 2 2 : 55 : 4 3 : 1.0
+O: 2 3 : 49 : 4 3 : 1.0
+O: 2 3 : 51 : 4 3 : 1.0
+O: 2 3 : 53 : 4 3 : 1.0
+O: 2 3 : 55 : 4 3 : 1.0
+O: 2 4 : 49 : 4 3 : 1.0
+O: 2 4 : 51 : 4 3 : 1.0
+O: 2 4 : 53 : 4 3 : 1.0
+O: 2 4 : 55 : 4 3 : 1.0
+O: 2 5 : 49 : 4 3 : 1.0
+O: 2 5 : 51 : 4 3 : 1.0
+O: 2 5 : 53 : 4 3 : 1.0
+O: 2 5 : 55 : 4 3 : 1.0
+O: 3 0 : 49 : 4 3 : 1.0
+O: 3 0 : 51 : 4 3 : 1.0
+O: 3 0 : 53 : 4 3 : 1.0
+O: 3 0 : 55 : 4 3 : 1.0
+O: 3 1 : 49 : 4 3 : 1.0
+O: 3 1 : 51 : 4 3 : 1.0
+O: 3 1 : 53 : 4 3 : 1.0
+O: 3 1 : 55 : 4 3 : 1.0
+O: 3 2 : 49 : 4 3 : 1.0
+O: 3 2 : 51 : 4 3 : 1.0
+O: 3 2 : 53 : 4 3 : 1.0
+O: 3 2 : 55 : 4 3 : 1.0
+O: 3 3 : 49 : 4 3 : 1.0
+O: 3 3 : 51 : 4 3 : 1.0
+O: 3 3 : 53 : 4 3 : 1.0
+O: 3 3 : 55 : 4 3 : 1.0
+O: 3 4 : 49 : 4 3 : 1.0
+O: 3 4 : 51 : 4 3 : 1.0
+O: 3 4 : 53 : 4 3 : 1.0
+O: 3 4 : 55 : 4 3 : 1.0
+O: 3 5 : 49 : 4 3 : 1.0
+O: 3 5 : 51 : 4 3 : 1.0
+O: 3 5 : 53 : 4 3 : 1.0
+O: 3 5 : 55 : 4 3 : 1.0
+O: 4 0 : 49 : 4 3 : 1.0
+O: 4 0 : 51 : 4 3 : 1.0
+O: 4 0 : 53 : 4 3 : 1.0
+O: 4 0 : 55 : 4 3 : 1.0
+O: 4 1 : 49 : 4 3 : 1.0
+O: 4 1 : 51 : 4 3 : 1.0
+O: 4 1 : 53 : 4 3 : 1.0
+O: 4 1 : 55 : 4 3 : 1.0
+O: 4 2 : 49 : 4 3 : 1.0
+O: 4 2 : 51 : 4 3 : 1.0
+O: 4 2 : 53 : 4 3 : 1.0
+O: 4 2 : 55 : 4 3 : 1.0
+O: 4 3 : 49 : 4 3 : 1.0
+O: 4 3 : 51 : 4 3 : 1.0
+O: 4 3 : 53 : 4 3 : 1.0
+O: 4 3 : 55 : 4 3 : 1.0
+O: 4 4 : 49 : 4 3 : 1.0
+O: 4 4 : 51 : 4 3 : 1.0
+O: 4 4 : 53 : 4 3 : 1.0
+O: 4 4 : 55 : 4 3 : 1.0
+O: 4 5 : 49 : 4 3 : 1.0
+O: 4 5 : 51 : 4 3 : 1.0
+O: 4 5 : 53 : 4 3 : 1.0
+O: 4 5 : 55 : 4 3 : 1.0
+O: 5 0 : 49 : 4 3 : 1.0
+O: 5 0 : 51 : 4 3 : 1.0
+O: 5 0 : 53 : 4 3 : 1.0
+O: 5 0 : 55 : 4 3 : 1.0
+O: 5 1 : 49 : 4 3 : 1.0
+O: 5 1 : 51 : 4 3 : 1.0
+O: 5 1 : 53 : 4 3 : 1.0
+O: 5 1 : 55 : 4 3 : 1.0
+O: 5 2 : 49 : 4 3 : 1.0
+O: 5 2 : 51 : 4 3 : 1.0
+O: 5 2 : 53 : 4 3 : 1.0
+O: 5 2 : 55 : 4 3 : 1.0
+O: 5 3 : 49 : 4 3 : 1.0
+O: 5 3 : 51 : 4 3 : 1.0
+O: 5 3 : 53 : 4 3 : 1.0
+O: 5 3 : 55 : 4 3 : 1.0
+O: 5 4 : 49 : 4 3 : 1.0
+O: 5 4 : 51 : 4 3 : 1.0
+O: 5 4 : 53 : 4 3 : 1.0
+O: 5 4 : 55 : 4 3 : 1.0
+O: 5 5 : 49 : 4 3 : 1.0
+O: 5 5 : 51 : 4 3 : 1.0
+O: 5 5 : 53 : 4 3 : 1.0
+O: 5 5 : 55 : 4 3 : 1.0
+O: 0 0 : 1 : 4 4 : 1.0
+O: 0 0 : 3 : 4 4 : 1.0
+O: 0 0 : 5 : 4 4 : 1.0
+O: 0 0 : 7 : 4 4 : 1.0
+O: 0 0 : 9 : 4 4 : 1.0
+O: 0 0 : 11 : 4 4 : 1.0
+O: 0 0 : 13 : 4 4 : 1.0
+O: 0 0 : 15 : 4 4 : 1.0
+O: 0 1 : 1 : 4 4 : 1.0
+O: 0 1 : 3 : 4 4 : 1.0
+O: 0 1 : 5 : 4 4 : 1.0
+O: 0 1 : 7 : 4 4 : 1.0
+O: 0 1 : 9 : 4 4 : 1.0
+O: 0 1 : 11 : 4 4 : 1.0
+O: 0 1 : 13 : 4 4 : 1.0
+O: 0 1 : 15 : 4 4 : 1.0
+O: 0 2 : 1 : 4 4 : 1.0
+O: 0 2 : 3 : 4 4 : 1.0
+O: 0 2 : 5 : 4 4 : 1.0
+O: 0 2 : 7 : 4 4 : 1.0
+O: 0 2 : 9 : 4 4 : 1.0
+O: 0 2 : 11 : 4 4 : 1.0
+O: 0 2 : 13 : 4 4 : 1.0
+O: 0 2 : 15 : 4 4 : 1.0
+O: 0 3 : 1 : 4 4 : 1.0
+O: 0 3 : 3 : 4 4 : 1.0
+O: 0 3 : 5 : 4 4 : 1.0
+O: 0 3 : 7 : 4 4 : 1.0
+O: 0 3 : 9 : 4 4 : 1.0
+O: 0 3 : 11 : 4 4 : 1.0
+O: 0 3 : 13 : 4 4 : 1.0
+O: 0 3 : 15 : 4 4 : 1.0
+O: 0 4 : 1 : 4 4 : 1.0
+O: 0 4 : 3 : 4 4 : 1.0
+O: 0 4 : 5 : 4 4 : 1.0
+O: 0 4 : 7 : 4 4 : 1.0
+O: 0 4 : 9 : 4 4 : 1.0
+O: 0 4 : 11 : 4 4 : 1.0
+O: 0 4 : 13 : 4 4 : 1.0
+O: 0 4 : 15 : 4 4 : 1.0
+O: 0 5 : 1 : 4 4 : 1.0
+O: 0 5 : 3 : 4 4 : 1.0
+O: 0 5 : 5 : 4 4 : 1.0
+O: 0 5 : 7 : 4 4 : 1.0
+O: 0 5 : 9 : 4 4 : 1.0
+O: 0 5 : 11 : 4 4 : 1.0
+O: 0 5 : 13 : 4 4 : 1.0
+O: 0 5 : 15 : 4 4 : 1.0
+O: 1 0 : 1 : 4 4 : 1.0
+O: 1 0 : 3 : 4 4 : 1.0
+O: 1 0 : 5 : 4 4 : 1.0
+O: 1 0 : 7 : 4 4 : 1.0
+O: 1 0 : 9 : 4 4 : 1.0
+O: 1 0 : 11 : 4 4 : 1.0
+O: 1 0 : 13 : 4 4 : 1.0
+O: 1 0 : 15 : 4 4 : 1.0
+O: 1 1 : 1 : 4 4 : 1.0
+O: 1 1 : 3 : 4 4 : 1.0
+O: 1 1 : 5 : 4 4 : 1.0
+O: 1 1 : 7 : 4 4 : 1.0
+O: 1 1 : 9 : 4 4 : 1.0
+O: 1 1 : 11 : 4 4 : 1.0
+O: 1 1 : 13 : 4 4 : 1.0
+O: 1 1 : 15 : 4 4 : 1.0
+O: 1 2 : 1 : 4 4 : 1.0
+O: 1 2 : 3 : 4 4 : 1.0
+O: 1 2 : 5 : 4 4 : 1.0
+O: 1 2 : 7 : 4 4 : 1.0
+O: 1 2 : 9 : 4 4 : 1.0
+O: 1 2 : 11 : 4 4 : 1.0
+O: 1 2 : 13 : 4 4 : 1.0
+O: 1 2 : 15 : 4 4 : 1.0
+O: 1 3 : 1 : 4 4 : 1.0
+O: 1 3 : 3 : 4 4 : 1.0
+O: 1 3 : 5 : 4 4 : 1.0
+O: 1 3 : 7 : 4 4 : 1.0
+O: 1 3 : 9 : 4 4 : 1.0
+O: 1 3 : 11 : 4 4 : 1.0
+O: 1 3 : 13 : 4 4 : 1.0
+O: 1 3 : 15 : 4 4 : 1.0
+O: 1 4 : 1 : 4 4 : 1.0
+O: 1 4 : 3 : 4 4 : 1.0
+O: 1 4 : 5 : 4 4 : 1.0
+O: 1 4 : 7 : 4 4 : 1.0
+O: 1 4 : 9 : 4 4 : 1.0
+O: 1 4 : 11 : 4 4 : 1.0
+O: 1 4 : 13 : 4 4 : 1.0
+O: 1 4 : 15 : 4 4 : 1.0
+O: 1 5 : 1 : 4 4 : 1.0
+O: 1 5 : 3 : 4 4 : 1.0
+O: 1 5 : 5 : 4 4 : 1.0
+O: 1 5 : 7 : 4 4 : 1.0
+O: 1 5 : 9 : 4 4 : 1.0
+O: 1 5 : 11 : 4 4 : 1.0
+O: 1 5 : 13 : 4 4 : 1.0
+O: 1 5 : 15 : 4 4 : 1.0
+O: 2 0 : 1 : 4 4 : 1.0
+O: 2 0 : 3 : 4 4 : 1.0
+O: 2 0 : 5 : 4 4 : 1.0
+O: 2 0 : 7 : 4 4 : 1.0
+O: 2 0 : 9 : 4 4 : 1.0
+O: 2 0 : 11 : 4 4 : 1.0
+O: 2 0 : 13 : 4 4 : 1.0
+O: 2 0 : 15 : 4 4 : 1.0
+O: 2 1 : 1 : 4 4 : 1.0
+O: 2 1 : 3 : 4 4 : 1.0
+O: 2 1 : 5 : 4 4 : 1.0
+O: 2 1 : 7 : 4 4 : 1.0
+O: 2 1 : 9 : 4 4 : 1.0
+O: 2 1 : 11 : 4 4 : 1.0
+O: 2 1 : 13 : 4 4 : 1.0
+O: 2 1 : 15 : 4 4 : 1.0
+O: 2 2 : 1 : 4 4 : 1.0
+O: 2 2 : 3 : 4 4 : 1.0
+O: 2 2 : 5 : 4 4 : 1.0
+O: 2 2 : 7 : 4 4 : 1.0
+O: 2 2 : 9 : 4 4 : 1.0
+O: 2 2 : 11 : 4 4 : 1.0
+O: 2 2 : 13 : 4 4 : 1.0
+O: 2 2 : 15 : 4 4 : 1.0
+O: 2 3 : 1 : 4 4 : 1.0
+O: 2 3 : 3 : 4 4 : 1.0
+O: 2 3 : 5 : 4 4 : 1.0
+O: 2 3 : 7 : 4 4 : 1.0
+O: 2 3 : 9 : 4 4 : 1.0
+O: 2 3 : 11 : 4 4 : 1.0
+O: 2 3 : 13 : 4 4 : 1.0
+O: 2 3 : 15 : 4 4 : 1.0
+O: 2 4 : 1 : 4 4 : 1.0
+O: 2 4 : 3 : 4 4 : 1.0
+O: 2 4 : 5 : 4 4 : 1.0
+O: 2 4 : 7 : 4 4 : 1.0
+O: 2 4 : 9 : 4 4 : 1.0
+O: 2 4 : 11 : 4 4 : 1.0
+O: 2 4 : 13 : 4 4 : 1.0
+O: 2 4 : 15 : 4 4 : 1.0
+O: 2 5 : 1 : 4 4 : 1.0
+O: 2 5 : 3 : 4 4 : 1.0
+O: 2 5 : 5 : 4 4 : 1.0
+O: 2 5 : 7 : 4 4 : 1.0
+O: 2 5 : 9 : 4 4 : 1.0
+O: 2 5 : 11 : 4 4 : 1.0
+O: 2 5 : 13 : 4 4 : 1.0
+O: 2 5 : 15 : 4 4 : 1.0
+O: 3 0 : 1 : 4 4 : 1.0
+O: 3 0 : 3 : 4 4 : 1.0
+O: 3 0 : 5 : 4 4 : 1.0
+O: 3 0 : 7 : 4 4 : 1.0
+O: 3 0 : 9 : 4 4 : 1.0
+O: 3 0 : 11 : 4 4 : 1.0
+O: 3 0 : 13 : 4 4 : 1.0
+O: 3 0 : 15 : 4 4 : 1.0
+O: 3 1 : 1 : 4 4 : 1.0
+O: 3 1 : 3 : 4 4 : 1.0
+O: 3 1 : 5 : 4 4 : 1.0
+O: 3 1 : 7 : 4 4 : 1.0
+O: 3 1 : 9 : 4 4 : 1.0
+O: 3 1 : 11 : 4 4 : 1.0
+O: 3 1 : 13 : 4 4 : 1.0
+O: 3 1 : 15 : 4 4 : 1.0
+O: 3 2 : 1 : 4 4 : 1.0
+O: 3 2 : 3 : 4 4 : 1.0
+O: 3 2 : 5 : 4 4 : 1.0
+O: 3 2 : 7 : 4 4 : 1.0
+O: 3 2 : 9 : 4 4 : 1.0
+O: 3 2 : 11 : 4 4 : 1.0
+O: 3 2 : 13 : 4 4 : 1.0
+O: 3 2 : 15 : 4 4 : 1.0
+O: 3 3 : 1 : 4 4 : 1.0
+O: 3 3 : 3 : 4 4 : 1.0
+O: 3 3 : 5 : 4 4 : 1.0
+O: 3 3 : 7 : 4 4 : 1.0
+O: 3 3 : 9 : 4 4 : 1.0
+O: 3 3 : 11 : 4 4 : 1.0
+O: 3 3 : 13 : 4 4 : 1.0
+O: 3 3 : 15 : 4 4 : 1.0
+O: 3 4 : 1 : 4 4 : 1.0
+O: 3 4 : 3 : 4 4 : 1.0
+O: 3 4 : 5 : 4 4 : 1.0
+O: 3 4 : 7 : 4 4 : 1.0
+O: 3 4 : 9 : 4 4 : 1.0
+O: 3 4 : 11 : 4 4 : 1.0
+O: 3 4 : 13 : 4 4 : 1.0
+O: 3 4 : 15 : 4 4 : 1.0
+O: 3 5 : 1 : 4 4 : 1.0
+O: 3 5 : 3 : 4 4 : 1.0
+O: 3 5 : 5 : 4 4 : 1.0
+O: 3 5 : 7 : 4 4 : 1.0
+O: 3 5 : 9 : 4 4 : 1.0
+O: 3 5 : 11 : 4 4 : 1.0
+O: 3 5 : 13 : 4 4 : 1.0
+O: 3 5 : 15 : 4 4 : 1.0
+O: 4 0 : 1 : 4 4 : 1.0
+O: 4 0 : 3 : 4 4 : 1.0
+O: 4 0 : 5 : 4 4 : 1.0
+O: 4 0 : 7 : 4 4 : 1.0
+O: 4 0 : 9 : 4 4 : 1.0
+O: 4 0 : 11 : 4 4 : 1.0
+O: 4 0 : 13 : 4 4 : 1.0
+O: 4 0 : 15 : 4 4 : 1.0
+O: 4 1 : 1 : 4 4 : 1.0
+O: 4 1 : 3 : 4 4 : 1.0
+O: 4 1 : 5 : 4 4 : 1.0
+O: 4 1 : 7 : 4 4 : 1.0
+O: 4 1 : 9 : 4 4 : 1.0
+O: 4 1 : 11 : 4 4 : 1.0
+O: 4 1 : 13 : 4 4 : 1.0
+O: 4 1 : 15 : 4 4 : 1.0
+O: 4 2 : 1 : 4 4 : 1.0
+O: 4 2 : 3 : 4 4 : 1.0
+O: 4 2 : 5 : 4 4 : 1.0
+O: 4 2 : 7 : 4 4 : 1.0
+O: 4 2 : 9 : 4 4 : 1.0
+O: 4 2 : 11 : 4 4 : 1.0
+O: 4 2 : 13 : 4 4 : 1.0
+O: 4 2 : 15 : 4 4 : 1.0
+O: 4 3 : 1 : 4 4 : 1.0
+O: 4 3 : 3 : 4 4 : 1.0
+O: 4 3 : 5 : 4 4 : 1.0
+O: 4 3 : 7 : 4 4 : 1.0
+O: 4 3 : 9 : 4 4 : 1.0
+O: 4 3 : 11 : 4 4 : 1.0
+O: 4 3 : 13 : 4 4 : 1.0
+O: 4 3 : 15 : 4 4 : 1.0
+O: 4 4 : 1 : 4 4 : 1.0
+O: 4 4 : 3 : 4 4 : 1.0
+O: 4 4 : 5 : 4 4 : 1.0
+O: 4 4 : 7 : 4 4 : 1.0
+O: 4 4 : 9 : 4 4 : 1.0
+O: 4 4 : 11 : 4 4 : 1.0
+O: 4 4 : 13 : 4 4 : 1.0
+O: 4 4 : 15 : 4 4 : 1.0
+O: 4 5 : 1 : 4 4 : 1.0
+O: 4 5 : 3 : 4 4 : 1.0
+O: 4 5 : 5 : 4 4 : 1.0
+O: 4 5 : 7 : 4 4 : 1.0
+O: 4 5 : 9 : 4 4 : 1.0
+O: 4 5 : 11 : 4 4 : 1.0
+O: 4 5 : 13 : 4 4 : 1.0
+O: 4 5 : 15 : 4 4 : 1.0
+O: 5 0 : 1 : 4 4 : 1.0
+O: 5 0 : 3 : 4 4 : 1.0
+O: 5 0 : 5 : 4 4 : 1.0
+O: 5 0 : 7 : 4 4 : 1.0
+O: 5 0 : 9 : 4 4 : 1.0
+O: 5 0 : 11 : 4 4 : 1.0
+O: 5 0 : 13 : 4 4 : 1.0
+O: 5 0 : 15 : 4 4 : 1.0
+O: 5 1 : 1 : 4 4 : 1.0
+O: 5 1 : 3 : 4 4 : 1.0
+O: 5 1 : 5 : 4 4 : 1.0
+O: 5 1 : 7 : 4 4 : 1.0
+O: 5 1 : 9 : 4 4 : 1.0
+O: 5 1 : 11 : 4 4 : 1.0
+O: 5 1 : 13 : 4 4 : 1.0
+O: 5 1 : 15 : 4 4 : 1.0
+O: 5 2 : 1 : 4 4 : 1.0
+O: 5 2 : 3 : 4 4 : 1.0
+O: 5 2 : 5 : 4 4 : 1.0
+O: 5 2 : 7 : 4 4 : 1.0
+O: 5 2 : 9 : 4 4 : 1.0
+O: 5 2 : 11 : 4 4 : 1.0
+O: 5 2 : 13 : 4 4 : 1.0
+O: 5 2 : 15 : 4 4 : 1.0
+O: 5 3 : 1 : 4 4 : 1.0
+O: 5 3 : 3 : 4 4 : 1.0
+O: 5 3 : 5 : 4 4 : 1.0
+O: 5 3 : 7 : 4 4 : 1.0
+O: 5 3 : 9 : 4 4 : 1.0
+O: 5 3 : 11 : 4 4 : 1.0
+O: 5 3 : 13 : 4 4 : 1.0
+O: 5 3 : 15 : 4 4 : 1.0
+O: 5 4 : 1 : 4 4 : 1.0
+O: 5 4 : 3 : 4 4 : 1.0
+O: 5 4 : 5 : 4 4 : 1.0
+O: 5 4 : 7 : 4 4 : 1.0
+O: 5 4 : 9 : 4 4 : 1.0
+O: 5 4 : 11 : 4 4 : 1.0
+O: 5 4 : 13 : 4 4 : 1.0
+O: 5 4 : 15 : 4 4 : 1.0
+O: 5 5 : 1 : 4 4 : 1.0
+O: 5 5 : 3 : 4 4 : 1.0
+O: 5 5 : 5 : 4 4 : 1.0
+O: 5 5 : 7 : 4 4 : 1.0
+O: 5 5 : 9 : 4 4 : 1.0
+O: 5 5 : 11 : 4 4 : 1.0
+O: 5 5 : 13 : 4 4 : 1.0
+O: 5 5 : 15 : 4 4 : 1.0
+O: 0 0 : 19 : 4 5 : 1.0
+O: 0 0 : 23 : 4 5 : 1.0
+O: 0 0 : 27 : 4 5 : 1.0
+O: 0 0 : 31 : 4 5 : 1.0
+O: 0 1 : 19 : 4 5 : 1.0
+O: 0 1 : 23 : 4 5 : 1.0
+O: 0 1 : 27 : 4 5 : 1.0
+O: 0 1 : 31 : 4 5 : 1.0
+O: 0 2 : 19 : 4 5 : 1.0
+O: 0 2 : 23 : 4 5 : 1.0
+O: 0 2 : 27 : 4 5 : 1.0
+O: 0 2 : 31 : 4 5 : 1.0
+O: 0 3 : 19 : 4 5 : 1.0
+O: 0 3 : 23 : 4 5 : 1.0
+O: 0 3 : 27 : 4 5 : 1.0
+O: 0 3 : 31 : 4 5 : 1.0
+O: 0 4 : 19 : 4 5 : 1.0
+O: 0 4 : 23 : 4 5 : 1.0
+O: 0 4 : 27 : 4 5 : 1.0
+O: 0 4 : 31 : 4 5 : 1.0
+O: 0 5 : 19 : 4 5 : 1.0
+O: 0 5 : 23 : 4 5 : 1.0
+O: 0 5 : 27 : 4 5 : 1.0
+O: 0 5 : 31 : 4 5 : 1.0
+O: 1 0 : 19 : 4 5 : 1.0
+O: 1 0 : 23 : 4 5 : 1.0
+O: 1 0 : 27 : 4 5 : 1.0
+O: 1 0 : 31 : 4 5 : 1.0
+O: 1 1 : 19 : 4 5 : 1.0
+O: 1 1 : 23 : 4 5 : 1.0
+O: 1 1 : 27 : 4 5 : 1.0
+O: 1 1 : 31 : 4 5 : 1.0
+O: 1 2 : 19 : 4 5 : 1.0
+O: 1 2 : 23 : 4 5 : 1.0
+O: 1 2 : 27 : 4 5 : 1.0
+O: 1 2 : 31 : 4 5 : 1.0
+O: 1 3 : 19 : 4 5 : 1.0
+O: 1 3 : 23 : 4 5 : 1.0
+O: 1 3 : 27 : 4 5 : 1.0
+O: 1 3 : 31 : 4 5 : 1.0
+O: 1 4 : 19 : 4 5 : 1.0
+O: 1 4 : 23 : 4 5 : 1.0
+O: 1 4 : 27 : 4 5 : 1.0
+O: 1 4 : 31 : 4 5 : 1.0
+O: 1 5 : 19 : 4 5 : 1.0
+O: 1 5 : 23 : 4 5 : 1.0
+O: 1 5 : 27 : 4 5 : 1.0
+O: 1 5 : 31 : 4 5 : 1.0
+O: 2 0 : 19 : 4 5 : 1.0
+O: 2 0 : 23 : 4 5 : 1.0
+O: 2 0 : 27 : 4 5 : 1.0
+O: 2 0 : 31 : 4 5 : 1.0
+O: 2 1 : 19 : 4 5 : 1.0
+O: 2 1 : 23 : 4 5 : 1.0
+O: 2 1 : 27 : 4 5 : 1.0
+O: 2 1 : 31 : 4 5 : 1.0
+O: 2 2 : 19 : 4 5 : 1.0
+O: 2 2 : 23 : 4 5 : 1.0
+O: 2 2 : 27 : 4 5 : 1.0
+O: 2 2 : 31 : 4 5 : 1.0
+O: 2 3 : 19 : 4 5 : 1.0
+O: 2 3 : 23 : 4 5 : 1.0
+O: 2 3 : 27 : 4 5 : 1.0
+O: 2 3 : 31 : 4 5 : 1.0
+O: 2 4 : 19 : 4 5 : 1.0
+O: 2 4 : 23 : 4 5 : 1.0
+O: 2 4 : 27 : 4 5 : 1.0
+O: 2 4 : 31 : 4 5 : 1.0
+O: 2 5 : 19 : 4 5 : 1.0
+O: 2 5 : 23 : 4 5 : 1.0
+O: 2 5 : 27 : 4 5 : 1.0
+O: 2 5 : 31 : 4 5 : 1.0
+O: 3 0 : 19 : 4 5 : 1.0
+O: 3 0 : 23 : 4 5 : 1.0
+O: 3 0 : 27 : 4 5 : 1.0
+O: 3 0 : 31 : 4 5 : 1.0
+O: 3 1 : 19 : 4 5 : 1.0
+O: 3 1 : 23 : 4 5 : 1.0
+O: 3 1 : 27 : 4 5 : 1.0
+O: 3 1 : 31 : 4 5 : 1.0
+O: 3 2 : 19 : 4 5 : 1.0
+O: 3 2 : 23 : 4 5 : 1.0
+O: 3 2 : 27 : 4 5 : 1.0
+O: 3 2 : 31 : 4 5 : 1.0
+O: 3 3 : 19 : 4 5 : 1.0
+O: 3 3 : 23 : 4 5 : 1.0
+O: 3 3 : 27 : 4 5 : 1.0
+O: 3 3 : 31 : 4 5 : 1.0
+O: 3 4 : 19 : 4 5 : 1.0
+O: 3 4 : 23 : 4 5 : 1.0
+O: 3 4 : 27 : 4 5 : 1.0
+O: 3 4 : 31 : 4 5 : 1.0
+O: 3 5 : 19 : 4 5 : 1.0
+O: 3 5 : 23 : 4 5 : 1.0
+O: 3 5 : 27 : 4 5 : 1.0
+O: 3 5 : 31 : 4 5 : 1.0
+O: 4 0 : 19 : 4 5 : 1.0
+O: 4 0 : 23 : 4 5 : 1.0
+O: 4 0 : 27 : 4 5 : 1.0
+O: 4 0 : 31 : 4 5 : 1.0
+O: 4 1 : 19 : 4 5 : 1.0
+O: 4 1 : 23 : 4 5 : 1.0
+O: 4 1 : 27 : 4 5 : 1.0
+O: 4 1 : 31 : 4 5 : 1.0
+O: 4 2 : 19 : 4 5 : 1.0
+O: 4 2 : 23 : 4 5 : 1.0
+O: 4 2 : 27 : 4 5 : 1.0
+O: 4 2 : 31 : 4 5 : 1.0
+O: 4 3 : 19 : 4 5 : 1.0
+O: 4 3 : 23 : 4 5 : 1.0
+O: 4 3 : 27 : 4 5 : 1.0
+O: 4 3 : 31 : 4 5 : 1.0
+O: 4 4 : 19 : 4 5 : 1.0
+O: 4 4 : 23 : 4 5 : 1.0
+O: 4 4 : 27 : 4 5 : 1.0
+O: 4 4 : 31 : 4 5 : 1.0
+O: 4 5 : 19 : 4 5 : 1.0
+O: 4 5 : 23 : 4 5 : 1.0
+O: 4 5 : 27 : 4 5 : 1.0
+O: 4 5 : 31 : 4 5 : 1.0
+O: 5 0 : 19 : 4 5 : 1.0
+O: 5 0 : 23 : 4 5 : 1.0
+O: 5 0 : 27 : 4 5 : 1.0
+O: 5 0 : 31 : 4 5 : 1.0
+O: 5 1 : 19 : 4 5 : 1.0
+O: 5 1 : 23 : 4 5 : 1.0
+O: 5 1 : 27 : 4 5 : 1.0
+O: 5 1 : 31 : 4 5 : 1.0
+O: 5 2 : 19 : 4 5 : 1.0
+O: 5 2 : 23 : 4 5 : 1.0
+O: 5 2 : 27 : 4 5 : 1.0
+O: 5 2 : 31 : 4 5 : 1.0
+O: 5 3 : 19 : 4 5 : 1.0
+O: 5 3 : 23 : 4 5 : 1.0
+O: 5 3 : 27 : 4 5 : 1.0
+O: 5 3 : 31 : 4 5 : 1.0
+O: 5 4 : 19 : 4 5 : 1.0
+O: 5 4 : 23 : 4 5 : 1.0
+O: 5 4 : 27 : 4 5 : 1.0
+O: 5 4 : 31 : 4 5 : 1.0
+O: 5 5 : 19 : 4 5 : 1.0
+O: 5 5 : 23 : 4 5 : 1.0
+O: 5 5 : 27 : 4 5 : 1.0
+O: 5 5 : 31 : 4 5 : 1.0
+O: 0 0 : 37 : 4 6 : 1.0
+O: 0 0 : 39 : 4 6 : 1.0
+O: 0 0 : 45 : 4 6 : 1.0
+O: 0 0 : 47 : 4 6 : 1.0
+O: 0 1 : 37 : 4 6 : 1.0
+O: 0 1 : 39 : 4 6 : 1.0
+O: 0 1 : 45 : 4 6 : 1.0
+O: 0 1 : 47 : 4 6 : 1.0
+O: 0 2 : 37 : 4 6 : 1.0
+O: 0 2 : 39 : 4 6 : 1.0
+O: 0 2 : 45 : 4 6 : 1.0
+O: 0 2 : 47 : 4 6 : 1.0
+O: 0 3 : 37 : 4 6 : 1.0
+O: 0 3 : 39 : 4 6 : 1.0
+O: 0 3 : 45 : 4 6 : 1.0
+O: 0 3 : 47 : 4 6 : 1.0
+O: 0 4 : 37 : 4 6 : 1.0
+O: 0 4 : 39 : 4 6 : 1.0
+O: 0 4 : 45 : 4 6 : 1.0
+O: 0 4 : 47 : 4 6 : 1.0
+O: 0 5 : 37 : 4 6 : 1.0
+O: 0 5 : 39 : 4 6 : 1.0
+O: 0 5 : 45 : 4 6 : 1.0
+O: 0 5 : 47 : 4 6 : 1.0
+O: 1 0 : 37 : 4 6 : 1.0
+O: 1 0 : 39 : 4 6 : 1.0
+O: 1 0 : 45 : 4 6 : 1.0
+O: 1 0 : 47 : 4 6 : 1.0
+O: 1 1 : 37 : 4 6 : 1.0
+O: 1 1 : 39 : 4 6 : 1.0
+O: 1 1 : 45 : 4 6 : 1.0
+O: 1 1 : 47 : 4 6 : 1.0
+O: 1 2 : 37 : 4 6 : 1.0
+O: 1 2 : 39 : 4 6 : 1.0
+O: 1 2 : 45 : 4 6 : 1.0
+O: 1 2 : 47 : 4 6 : 1.0
+O: 1 3 : 37 : 4 6 : 1.0
+O: 1 3 : 39 : 4 6 : 1.0
+O: 1 3 : 45 : 4 6 : 1.0
+O: 1 3 : 47 : 4 6 : 1.0
+O: 1 4 : 37 : 4 6 : 1.0
+O: 1 4 : 39 : 4 6 : 1.0
+O: 1 4 : 45 : 4 6 : 1.0
+O: 1 4 : 47 : 4 6 : 1.0
+O: 1 5 : 37 : 4 6 : 1.0
+O: 1 5 : 39 : 4 6 : 1.0
+O: 1 5 : 45 : 4 6 : 1.0
+O: 1 5 : 47 : 4 6 : 1.0
+O: 2 0 : 37 : 4 6 : 1.0
+O: 2 0 : 39 : 4 6 : 1.0
+O: 2 0 : 45 : 4 6 : 1.0
+O: 2 0 : 47 : 4 6 : 1.0
+O: 2 1 : 37 : 4 6 : 1.0
+O: 2 1 : 39 : 4 6 : 1.0
+O: 2 1 : 45 : 4 6 : 1.0
+O: 2 1 : 47 : 4 6 : 1.0
+O: 2 2 : 37 : 4 6 : 1.0
+O: 2 2 : 39 : 4 6 : 1.0
+O: 2 2 : 45 : 4 6 : 1.0
+O: 2 2 : 47 : 4 6 : 1.0
+O: 2 3 : 37 : 4 6 : 1.0
+O: 2 3 : 39 : 4 6 : 1.0
+O: 2 3 : 45 : 4 6 : 1.0
+O: 2 3 : 47 : 4 6 : 1.0
+O: 2 4 : 37 : 4 6 : 1.0
+O: 2 4 : 39 : 4 6 : 1.0
+O: 2 4 : 45 : 4 6 : 1.0
+O: 2 4 : 47 : 4 6 : 1.0
+O: 2 5 : 37 : 4 6 : 1.0
+O: 2 5 : 39 : 4 6 : 1.0
+O: 2 5 : 45 : 4 6 : 1.0
+O: 2 5 : 47 : 4 6 : 1.0
+O: 3 0 : 37 : 4 6 : 1.0
+O: 3 0 : 39 : 4 6 : 1.0
+O: 3 0 : 45 : 4 6 : 1.0
+O: 3 0 : 47 : 4 6 : 1.0
+O: 3 1 : 37 : 4 6 : 1.0
+O: 3 1 : 39 : 4 6 : 1.0
+O: 3 1 : 45 : 4 6 : 1.0
+O: 3 1 : 47 : 4 6 : 1.0
+O: 3 2 : 37 : 4 6 : 1.0
+O: 3 2 : 39 : 4 6 : 1.0
+O: 3 2 : 45 : 4 6 : 1.0
+O: 3 2 : 47 : 4 6 : 1.0
+O: 3 3 : 37 : 4 6 : 1.0
+O: 3 3 : 39 : 4 6 : 1.0
+O: 3 3 : 45 : 4 6 : 1.0
+O: 3 3 : 47 : 4 6 : 1.0
+O: 3 4 : 37 : 4 6 : 1.0
+O: 3 4 : 39 : 4 6 : 1.0
+O: 3 4 : 45 : 4 6 : 1.0
+O: 3 4 : 47 : 4 6 : 1.0
+O: 3 5 : 37 : 4 6 : 1.0
+O: 3 5 : 39 : 4 6 : 1.0
+O: 3 5 : 45 : 4 6 : 1.0
+O: 3 5 : 47 : 4 6 : 1.0
+O: 4 0 : 37 : 4 6 : 1.0
+O: 4 0 : 39 : 4 6 : 1.0
+O: 4 0 : 45 : 4 6 : 1.0
+O: 4 0 : 47 : 4 6 : 1.0
+O: 4 1 : 37 : 4 6 : 1.0
+O: 4 1 : 39 : 4 6 : 1.0
+O: 4 1 : 45 : 4 6 : 1.0
+O: 4 1 : 47 : 4 6 : 1.0
+O: 4 2 : 37 : 4 6 : 1.0
+O: 4 2 : 39 : 4 6 : 1.0
+O: 4 2 : 45 : 4 6 : 1.0
+O: 4 2 : 47 : 4 6 : 1.0
+O: 4 3 : 37 : 4 6 : 1.0
+O: 4 3 : 39 : 4 6 : 1.0
+O: 4 3 : 45 : 4 6 : 1.0
+O: 4 3 : 47 : 4 6 : 1.0
+O: 4 4 : 37 : 4 6 : 1.0
+O: 4 4 : 39 : 4 6 : 1.0
+O: 4 4 : 45 : 4 6 : 1.0
+O: 4 4 : 47 : 4 6 : 1.0
+O: 4 5 : 37 : 4 6 : 1.0
+O: 4 5 : 39 : 4 6 : 1.0
+O: 4 5 : 45 : 4 6 : 1.0
+O: 4 5 : 47 : 4 6 : 1.0
+O: 5 0 : 37 : 4 6 : 1.0
+O: 5 0 : 39 : 4 6 : 1.0
+O: 5 0 : 45 : 4 6 : 1.0
+O: 5 0 : 47 : 4 6 : 1.0
+O: 5 1 : 37 : 4 6 : 1.0
+O: 5 1 : 39 : 4 6 : 1.0
+O: 5 1 : 45 : 4 6 : 1.0
+O: 5 1 : 47 : 4 6 : 1.0
+O: 5 2 : 37 : 4 6 : 1.0
+O: 5 2 : 39 : 4 6 : 1.0
+O: 5 2 : 45 : 4 6 : 1.0
+O: 5 2 : 47 : 4 6 : 1.0
+O: 5 3 : 37 : 4 6 : 1.0
+O: 5 3 : 39 : 4 6 : 1.0
+O: 5 3 : 45 : 4 6 : 1.0
+O: 5 3 : 47 : 4 6 : 1.0
+O: 5 4 : 37 : 4 6 : 1.0
+O: 5 4 : 39 : 4 6 : 1.0
+O: 5 4 : 45 : 4 6 : 1.0
+O: 5 4 : 47 : 4 6 : 1.0
+O: 5 5 : 37 : 4 6 : 1.0
+O: 5 5 : 39 : 4 6 : 1.0
+O: 5 5 : 45 : 4 6 : 1.0
+O: 5 5 : 47 : 4 6 : 1.0
+O: 0 0 : 57 : 4 7 : 1.0
+O: 0 0 : 59 : 4 7 : 1.0
+O: 0 0 : 61 : 4 7 : 1.0
+O: 0 0 : 63 : 4 7 : 1.0
+O: 0 1 : 57 : 4 7 : 1.0
+O: 0 1 : 59 : 4 7 : 1.0
+O: 0 1 : 61 : 4 7 : 1.0
+O: 0 1 : 63 : 4 7 : 1.0
+O: 0 2 : 57 : 4 7 : 1.0
+O: 0 2 : 59 : 4 7 : 1.0
+O: 0 2 : 61 : 4 7 : 1.0
+O: 0 2 : 63 : 4 7 : 1.0
+O: 0 3 : 57 : 4 7 : 1.0
+O: 0 3 : 59 : 4 7 : 1.0
+O: 0 3 : 61 : 4 7 : 1.0
+O: 0 3 : 63 : 4 7 : 1.0
+O: 0 4 : 57 : 4 7 : 1.0
+O: 0 4 : 59 : 4 7 : 1.0
+O: 0 4 : 61 : 4 7 : 1.0
+O: 0 4 : 63 : 4 7 : 1.0
+O: 0 5 : 57 : 4 7 : 1.0
+O: 0 5 : 59 : 4 7 : 1.0
+O: 0 5 : 61 : 4 7 : 1.0
+O: 0 5 : 63 : 4 7 : 1.0
+O: 1 0 : 57 : 4 7 : 1.0
+O: 1 0 : 59 : 4 7 : 1.0
+O: 1 0 : 61 : 4 7 : 1.0
+O: 1 0 : 63 : 4 7 : 1.0
+O: 1 1 : 57 : 4 7 : 1.0
+O: 1 1 : 59 : 4 7 : 1.0
+O: 1 1 : 61 : 4 7 : 1.0
+O: 1 1 : 63 : 4 7 : 1.0
+O: 1 2 : 57 : 4 7 : 1.0
+O: 1 2 : 59 : 4 7 : 1.0
+O: 1 2 : 61 : 4 7 : 1.0
+O: 1 2 : 63 : 4 7 : 1.0
+O: 1 3 : 57 : 4 7 : 1.0
+O: 1 3 : 59 : 4 7 : 1.0
+O: 1 3 : 61 : 4 7 : 1.0
+O: 1 3 : 63 : 4 7 : 1.0
+O: 1 4 : 57 : 4 7 : 1.0
+O: 1 4 : 59 : 4 7 : 1.0
+O: 1 4 : 61 : 4 7 : 1.0
+O: 1 4 : 63 : 4 7 : 1.0
+O: 1 5 : 57 : 4 7 : 1.0
+O: 1 5 : 59 : 4 7 : 1.0
+O: 1 5 : 61 : 4 7 : 1.0
+O: 1 5 : 63 : 4 7 : 1.0
+O: 2 0 : 57 : 4 7 : 1.0
+O: 2 0 : 59 : 4 7 : 1.0
+O: 2 0 : 61 : 4 7 : 1.0
+O: 2 0 : 63 : 4 7 : 1.0
+O: 2 1 : 57 : 4 7 : 1.0
+O: 2 1 : 59 : 4 7 : 1.0
+O: 2 1 : 61 : 4 7 : 1.0
+O: 2 1 : 63 : 4 7 : 1.0
+O: 2 2 : 57 : 4 7 : 1.0
+O: 2 2 : 59 : 4 7 : 1.0
+O: 2 2 : 61 : 4 7 : 1.0
+O: 2 2 : 63 : 4 7 : 1.0
+O: 2 3 : 57 : 4 7 : 1.0
+O: 2 3 : 59 : 4 7 : 1.0
+O: 2 3 : 61 : 4 7 : 1.0
+O: 2 3 : 63 : 4 7 : 1.0
+O: 2 4 : 57 : 4 7 : 1.0
+O: 2 4 : 59 : 4 7 : 1.0
+O: 2 4 : 61 : 4 7 : 1.0
+O: 2 4 : 63 : 4 7 : 1.0
+O: 2 5 : 57 : 4 7 : 1.0
+O: 2 5 : 59 : 4 7 : 1.0
+O: 2 5 : 61 : 4 7 : 1.0
+O: 2 5 : 63 : 4 7 : 1.0
+O: 3 0 : 57 : 4 7 : 1.0
+O: 3 0 : 59 : 4 7 : 1.0
+O: 3 0 : 61 : 4 7 : 1.0
+O: 3 0 : 63 : 4 7 : 1.0
+O: 3 1 : 57 : 4 7 : 1.0
+O: 3 1 : 59 : 4 7 : 1.0
+O: 3 1 : 61 : 4 7 : 1.0
+O: 3 1 : 63 : 4 7 : 1.0
+O: 3 2 : 57 : 4 7 : 1.0
+O: 3 2 : 59 : 4 7 : 1.0
+O: 3 2 : 61 : 4 7 : 1.0
+O: 3 2 : 63 : 4 7 : 1.0
+O: 3 3 : 57 : 4 7 : 1.0
+O: 3 3 : 59 : 4 7 : 1.0
+O: 3 3 : 61 : 4 7 : 1.0
+O: 3 3 : 63 : 4 7 : 1.0
+O: 3 4 : 57 : 4 7 : 1.0
+O: 3 4 : 59 : 4 7 : 1.0
+O: 3 4 : 61 : 4 7 : 1.0
+O: 3 4 : 63 : 4 7 : 1.0
+O: 3 5 : 57 : 4 7 : 1.0
+O: 3 5 : 59 : 4 7 : 1.0
+O: 3 5 : 61 : 4 7 : 1.0
+O: 3 5 : 63 : 4 7 : 1.0
+O: 4 0 : 57 : 4 7 : 1.0
+O: 4 0 : 59 : 4 7 : 1.0
+O: 4 0 : 61 : 4 7 : 1.0
+O: 4 0 : 63 : 4 7 : 1.0
+O: 4 1 : 57 : 4 7 : 1.0
+O: 4 1 : 59 : 4 7 : 1.0
+O: 4 1 : 61 : 4 7 : 1.0
+O: 4 1 : 63 : 4 7 : 1.0
+O: 4 2 : 57 : 4 7 : 1.0
+O: 4 2 : 59 : 4 7 : 1.0
+O: 4 2 : 61 : 4 7 : 1.0
+O: 4 2 : 63 : 4 7 : 1.0
+O: 4 3 : 57 : 4 7 : 1.0
+O: 4 3 : 59 : 4 7 : 1.0
+O: 4 3 : 61 : 4 7 : 1.0
+O: 4 3 : 63 : 4 7 : 1.0
+O: 4 4 : 57 : 4 7 : 1.0
+O: 4 4 : 59 : 4 7 : 1.0
+O: 4 4 : 61 : 4 7 : 1.0
+O: 4 4 : 63 : 4 7 : 1.0
+O: 4 5 : 57 : 4 7 : 1.0
+O: 4 5 : 59 : 4 7 : 1.0
+O: 4 5 : 61 : 4 7 : 1.0
+O: 4 5 : 63 : 4 7 : 1.0
+O: 5 0 : 57 : 4 7 : 1.0
+O: 5 0 : 59 : 4 7 : 1.0
+O: 5 0 : 61 : 4 7 : 1.0
+O: 5 0 : 63 : 4 7 : 1.0
+O: 5 1 : 57 : 4 7 : 1.0
+O: 5 1 : 59 : 4 7 : 1.0
+O: 5 1 : 61 : 4 7 : 1.0
+O: 5 1 : 63 : 4 7 : 1.0
+O: 5 2 : 57 : 4 7 : 1.0
+O: 5 2 : 59 : 4 7 : 1.0
+O: 5 2 : 61 : 4 7 : 1.0
+O: 5 2 : 63 : 4 7 : 1.0
+O: 5 3 : 57 : 4 7 : 1.0
+O: 5 3 : 59 : 4 7 : 1.0
+O: 5 3 : 61 : 4 7 : 1.0
+O: 5 3 : 63 : 4 7 : 1.0
+O: 5 4 : 57 : 4 7 : 1.0
+O: 5 4 : 59 : 4 7 : 1.0
+O: 5 4 : 61 : 4 7 : 1.0
+O: 5 4 : 63 : 4 7 : 1.0
+O: 5 5 : 57 : 4 7 : 1.0
+O: 5 5 : 59 : 4 7 : 1.0
+O: 5 5 : 61 : 4 7 : 1.0
+O: 5 5 : 63 : 4 7 : 1.0
+O: 0 0 : 66 : 5 0 : 1.0
+O: 0 0 : 70 : 5 0 : 1.0
+O: 0 0 : 74 : 5 0 : 1.0
+O: 0 0 : 78 : 5 0 : 1.0
+O: 0 1 : 66 : 5 0 : 1.0
+O: 0 1 : 70 : 5 0 : 1.0
+O: 0 1 : 74 : 5 0 : 1.0
+O: 0 1 : 78 : 5 0 : 1.0
+O: 0 2 : 66 : 5 0 : 1.0
+O: 0 2 : 70 : 5 0 : 1.0
+O: 0 2 : 74 : 5 0 : 1.0
+O: 0 2 : 78 : 5 0 : 1.0
+O: 0 3 : 66 : 5 0 : 1.0
+O: 0 3 : 70 : 5 0 : 1.0
+O: 0 3 : 74 : 5 0 : 1.0
+O: 0 3 : 78 : 5 0 : 1.0
+O: 0 4 : 66 : 5 0 : 1.0
+O: 0 4 : 70 : 5 0 : 1.0
+O: 0 4 : 74 : 5 0 : 1.0
+O: 0 4 : 78 : 5 0 : 1.0
+O: 0 5 : 66 : 5 0 : 1.0
+O: 0 5 : 70 : 5 0 : 1.0
+O: 0 5 : 74 : 5 0 : 1.0
+O: 0 5 : 78 : 5 0 : 1.0
+O: 1 0 : 66 : 5 0 : 1.0
+O: 1 0 : 70 : 5 0 : 1.0
+O: 1 0 : 74 : 5 0 : 1.0
+O: 1 0 : 78 : 5 0 : 1.0
+O: 1 1 : 66 : 5 0 : 1.0
+O: 1 1 : 70 : 5 0 : 1.0
+O: 1 1 : 74 : 5 0 : 1.0
+O: 1 1 : 78 : 5 0 : 1.0
+O: 1 2 : 66 : 5 0 : 1.0
+O: 1 2 : 70 : 5 0 : 1.0
+O: 1 2 : 74 : 5 0 : 1.0
+O: 1 2 : 78 : 5 0 : 1.0
+O: 1 3 : 66 : 5 0 : 1.0
+O: 1 3 : 70 : 5 0 : 1.0
+O: 1 3 : 74 : 5 0 : 1.0
+O: 1 3 : 78 : 5 0 : 1.0
+O: 1 4 : 66 : 5 0 : 1.0
+O: 1 4 : 70 : 5 0 : 1.0
+O: 1 4 : 74 : 5 0 : 1.0
+O: 1 4 : 78 : 5 0 : 1.0
+O: 1 5 : 66 : 5 0 : 1.0
+O: 1 5 : 70 : 5 0 : 1.0
+O: 1 5 : 74 : 5 0 : 1.0
+O: 1 5 : 78 : 5 0 : 1.0
+O: 2 0 : 66 : 5 0 : 1.0
+O: 2 0 : 70 : 5 0 : 1.0
+O: 2 0 : 74 : 5 0 : 1.0
+O: 2 0 : 78 : 5 0 : 1.0
+O: 2 1 : 66 : 5 0 : 1.0
+O: 2 1 : 70 : 5 0 : 1.0
+O: 2 1 : 74 : 5 0 : 1.0
+O: 2 1 : 78 : 5 0 : 1.0
+O: 2 2 : 66 : 5 0 : 1.0
+O: 2 2 : 70 : 5 0 : 1.0
+O: 2 2 : 74 : 5 0 : 1.0
+O: 2 2 : 78 : 5 0 : 1.0
+O: 2 3 : 66 : 5 0 : 1.0
+O: 2 3 : 70 : 5 0 : 1.0
+O: 2 3 : 74 : 5 0 : 1.0
+O: 2 3 : 78 : 5 0 : 1.0
+O: 2 4 : 66 : 5 0 : 1.0
+O: 2 4 : 70 : 5 0 : 1.0
+O: 2 4 : 74 : 5 0 : 1.0
+O: 2 4 : 78 : 5 0 : 1.0
+O: 2 5 : 66 : 5 0 : 1.0
+O: 2 5 : 70 : 5 0 : 1.0
+O: 2 5 : 74 : 5 0 : 1.0
+O: 2 5 : 78 : 5 0 : 1.0
+O: 3 0 : 66 : 5 0 : 1.0
+O: 3 0 : 70 : 5 0 : 1.0
+O: 3 0 : 74 : 5 0 : 1.0
+O: 3 0 : 78 : 5 0 : 1.0
+O: 3 1 : 66 : 5 0 : 1.0
+O: 3 1 : 70 : 5 0 : 1.0
+O: 3 1 : 74 : 5 0 : 1.0
+O: 3 1 : 78 : 5 0 : 1.0
+O: 3 2 : 66 : 5 0 : 1.0
+O: 3 2 : 70 : 5 0 : 1.0
+O: 3 2 : 74 : 5 0 : 1.0
+O: 3 2 : 78 : 5 0 : 1.0
+O: 3 3 : 66 : 5 0 : 1.0
+O: 3 3 : 70 : 5 0 : 1.0
+O: 3 3 : 74 : 5 0 : 1.0
+O: 3 3 : 78 : 5 0 : 1.0
+O: 3 4 : 66 : 5 0 : 1.0
+O: 3 4 : 70 : 5 0 : 1.0
+O: 3 4 : 74 : 5 0 : 1.0
+O: 3 4 : 78 : 5 0 : 1.0
+O: 3 5 : 66 : 5 0 : 1.0
+O: 3 5 : 70 : 5 0 : 1.0
+O: 3 5 : 74 : 5 0 : 1.0
+O: 3 5 : 78 : 5 0 : 1.0
+O: 4 0 : 66 : 5 0 : 1.0
+O: 4 0 : 70 : 5 0 : 1.0
+O: 4 0 : 74 : 5 0 : 1.0
+O: 4 0 : 78 : 5 0 : 1.0
+O: 4 1 : 66 : 5 0 : 1.0
+O: 4 1 : 70 : 5 0 : 1.0
+O: 4 1 : 74 : 5 0 : 1.0
+O: 4 1 : 78 : 5 0 : 1.0
+O: 4 2 : 66 : 5 0 : 1.0
+O: 4 2 : 70 : 5 0 : 1.0
+O: 4 2 : 74 : 5 0 : 1.0
+O: 4 2 : 78 : 5 0 : 1.0
+O: 4 3 : 66 : 5 0 : 1.0
+O: 4 3 : 70 : 5 0 : 1.0
+O: 4 3 : 74 : 5 0 : 1.0
+O: 4 3 : 78 : 5 0 : 1.0
+O: 4 4 : 66 : 5 0 : 1.0
+O: 4 4 : 70 : 5 0 : 1.0
+O: 4 4 : 74 : 5 0 : 1.0
+O: 4 4 : 78 : 5 0 : 1.0
+O: 4 5 : 66 : 5 0 : 1.0
+O: 4 5 : 70 : 5 0 : 1.0
+O: 4 5 : 74 : 5 0 : 1.0
+O: 4 5 : 78 : 5 0 : 1.0
+O: 5 0 : 66 : 5 0 : 1.0
+O: 5 0 : 70 : 5 0 : 1.0
+O: 5 0 : 74 : 5 0 : 1.0
+O: 5 0 : 78 : 5 0 : 1.0
+O: 5 1 : 66 : 5 0 : 1.0
+O: 5 1 : 70 : 5 0 : 1.0
+O: 5 1 : 74 : 5 0 : 1.0
+O: 5 1 : 78 : 5 0 : 1.0
+O: 5 2 : 66 : 5 0 : 1.0
+O: 5 2 : 70 : 5 0 : 1.0
+O: 5 2 : 74 : 5 0 : 1.0
+O: 5 2 : 78 : 5 0 : 1.0
+O: 5 3 : 66 : 5 0 : 1.0
+O: 5 3 : 70 : 5 0 : 1.0
+O: 5 3 : 74 : 5 0 : 1.0
+O: 5 3 : 78 : 5 0 : 1.0
+O: 5 4 : 66 : 5 0 : 1.0
+O: 5 4 : 70 : 5 0 : 1.0
+O: 5 4 : 74 : 5 0 : 1.0
+O: 5 4 : 78 : 5 0 : 1.0
+O: 5 5 : 66 : 5 0 : 1.0
+O: 5 5 : 70 : 5 0 : 1.0
+O: 5 5 : 74 : 5 0 : 1.0
+O: 5 5 : 78 : 5 0 : 1.0
+O: 0 0 : 98 : 5 2 : 1.0
+O: 0 0 : 99 : 5 2 : 1.0
+O: 0 0 : 106 : 5 2 : 1.0
+O: 0 0 : 107 : 5 2 : 1.0
+O: 0 1 : 98 : 5 2 : 1.0
+O: 0 1 : 99 : 5 2 : 1.0
+O: 0 1 : 106 : 5 2 : 1.0
+O: 0 1 : 107 : 5 2 : 1.0
+O: 0 2 : 98 : 5 2 : 1.0
+O: 0 2 : 99 : 5 2 : 1.0
+O: 0 2 : 106 : 5 2 : 1.0
+O: 0 2 : 107 : 5 2 : 1.0
+O: 0 3 : 98 : 5 2 : 1.0
+O: 0 3 : 99 : 5 2 : 1.0
+O: 0 3 : 106 : 5 2 : 1.0
+O: 0 3 : 107 : 5 2 : 1.0
+O: 0 4 : 98 : 5 2 : 1.0
+O: 0 4 : 99 : 5 2 : 1.0
+O: 0 4 : 106 : 5 2 : 1.0
+O: 0 4 : 107 : 5 2 : 1.0
+O: 0 5 : 98 : 5 2 : 1.0
+O: 0 5 : 99 : 5 2 : 1.0
+O: 0 5 : 106 : 5 2 : 1.0
+O: 0 5 : 107 : 5 2 : 1.0
+O: 1 0 : 98 : 5 2 : 1.0
+O: 1 0 : 99 : 5 2 : 1.0
+O: 1 0 : 106 : 5 2 : 1.0
+O: 1 0 : 107 : 5 2 : 1.0
+O: 1 1 : 98 : 5 2 : 1.0
+O: 1 1 : 99 : 5 2 : 1.0
+O: 1 1 : 106 : 5 2 : 1.0
+O: 1 1 : 107 : 5 2 : 1.0
+O: 1 2 : 98 : 5 2 : 1.0
+O: 1 2 : 99 : 5 2 : 1.0
+O: 1 2 : 106 : 5 2 : 1.0
+O: 1 2 : 107 : 5 2 : 1.0
+O: 1 3 : 98 : 5 2 : 1.0
+O: 1 3 : 99 : 5 2 : 1.0
+O: 1 3 : 106 : 5 2 : 1.0
+O: 1 3 : 107 : 5 2 : 1.0
+O: 1 4 : 98 : 5 2 : 1.0
+O: 1 4 : 99 : 5 2 : 1.0
+O: 1 4 : 106 : 5 2 : 1.0
+O: 1 4 : 107 : 5 2 : 1.0
+O: 1 5 : 98 : 5 2 : 1.0
+O: 1 5 : 99 : 5 2 : 1.0
+O: 1 5 : 106 : 5 2 : 1.0
+O: 1 5 : 107 : 5 2 : 1.0
+O: 2 0 : 98 : 5 2 : 1.0
+O: 2 0 : 99 : 5 2 : 1.0
+O: 2 0 : 106 : 5 2 : 1.0
+O: 2 0 : 107 : 5 2 : 1.0
+O: 2 1 : 98 : 5 2 : 1.0
+O: 2 1 : 99 : 5 2 : 1.0
+O: 2 1 : 106 : 5 2 : 1.0
+O: 2 1 : 107 : 5 2 : 1.0
+O: 2 2 : 98 : 5 2 : 1.0
+O: 2 2 : 99 : 5 2 : 1.0
+O: 2 2 : 106 : 5 2 : 1.0
+O: 2 2 : 107 : 5 2 : 1.0
+O: 2 3 : 98 : 5 2 : 1.0
+O: 2 3 : 99 : 5 2 : 1.0
+O: 2 3 : 106 : 5 2 : 1.0
+O: 2 3 : 107 : 5 2 : 1.0
+O: 2 4 : 98 : 5 2 : 1.0
+O: 2 4 : 99 : 5 2 : 1.0
+O: 2 4 : 106 : 5 2 : 1.0
+O: 2 4 : 107 : 5 2 : 1.0
+O: 2 5 : 98 : 5 2 : 1.0
+O: 2 5 : 99 : 5 2 : 1.0
+O: 2 5 : 106 : 5 2 : 1.0
+O: 2 5 : 107 : 5 2 : 1.0
+O: 3 0 : 98 : 5 2 : 1.0
+O: 3 0 : 99 : 5 2 : 1.0
+O: 3 0 : 106 : 5 2 : 1.0
+O: 3 0 : 107 : 5 2 : 1.0
+O: 3 1 : 98 : 5 2 : 1.0
+O: 3 1 : 99 : 5 2 : 1.0
+O: 3 1 : 106 : 5 2 : 1.0
+O: 3 1 : 107 : 5 2 : 1.0
+O: 3 2 : 98 : 5 2 : 1.0
+O: 3 2 : 99 : 5 2 : 1.0
+O: 3 2 : 106 : 5 2 : 1.0
+O: 3 2 : 107 : 5 2 : 1.0
+O: 3 3 : 98 : 5 2 : 1.0
+O: 3 3 : 99 : 5 2 : 1.0
+O: 3 3 : 106 : 5 2 : 1.0
+O: 3 3 : 107 : 5 2 : 1.0
+O: 3 4 : 98 : 5 2 : 1.0
+O: 3 4 : 99 : 5 2 : 1.0
+O: 3 4 : 106 : 5 2 : 1.0
+O: 3 4 : 107 : 5 2 : 1.0
+O: 3 5 : 98 : 5 2 : 1.0
+O: 3 5 : 99 : 5 2 : 1.0
+O: 3 5 : 106 : 5 2 : 1.0
+O: 3 5 : 107 : 5 2 : 1.0
+O: 4 0 : 98 : 5 2 : 1.0
+O: 4 0 : 99 : 5 2 : 1.0
+O: 4 0 : 106 : 5 2 : 1.0
+O: 4 0 : 107 : 5 2 : 1.0
+O: 4 1 : 98 : 5 2 : 1.0
+O: 4 1 : 99 : 5 2 : 1.0
+O: 4 1 : 106 : 5 2 : 1.0
+O: 4 1 : 107 : 5 2 : 1.0
+O: 4 2 : 98 : 5 2 : 1.0
+O: 4 2 : 99 : 5 2 : 1.0
+O: 4 2 : 106 : 5 2 : 1.0
+O: 4 2 : 107 : 5 2 : 1.0
+O: 4 3 : 98 : 5 2 : 1.0
+O: 4 3 : 99 : 5 2 : 1.0
+O: 4 3 : 106 : 5 2 : 1.0
+O: 4 3 : 107 : 5 2 : 1.0
+O: 4 4 : 98 : 5 2 : 1.0
+O: 4 4 : 99 : 5 2 : 1.0
+O: 4 4 : 106 : 5 2 : 1.0
+O: 4 4 : 107 : 5 2 : 1.0
+O: 4 5 : 98 : 5 2 : 1.0
+O: 4 5 : 99 : 5 2 : 1.0
+O: 4 5 : 106 : 5 2 : 1.0
+O: 4 5 : 107 : 5 2 : 1.0
+O: 5 0 : 98 : 5 2 : 1.0
+O: 5 0 : 99 : 5 2 : 1.0
+O: 5 0 : 106 : 5 2 : 1.0
+O: 5 0 : 107 : 5 2 : 1.0
+O: 5 1 : 98 : 5 2 : 1.0
+O: 5 1 : 99 : 5 2 : 1.0
+O: 5 1 : 106 : 5 2 : 1.0
+O: 5 1 : 107 : 5 2 : 1.0
+O: 5 2 : 98 : 5 2 : 1.0
+O: 5 2 : 99 : 5 2 : 1.0
+O: 5 2 : 106 : 5 2 : 1.0
+O: 5 2 : 107 : 5 2 : 1.0
+O: 5 3 : 98 : 5 2 : 1.0
+O: 5 3 : 99 : 5 2 : 1.0
+O: 5 3 : 106 : 5 2 : 1.0
+O: 5 3 : 107 : 5 2 : 1.0
+O: 5 4 : 98 : 5 2 : 1.0
+O: 5 4 : 99 : 5 2 : 1.0
+O: 5 4 : 106 : 5 2 : 1.0
+O: 5 4 : 107 : 5 2 : 1.0
+O: 5 5 : 98 : 5 2 : 1.0
+O: 5 5 : 99 : 5 2 : 1.0
+O: 5 5 : 106 : 5 2 : 1.0
+O: 5 5 : 107 : 5 2 : 1.0
+O: 0 0 : 114 : 5 3 : 1.0
+O: 0 0 : 115 : 5 3 : 1.0
+O: 0 0 : 118 : 5 3 : 1.0
+O: 0 0 : 119 : 5 3 : 1.0
+O: 0 1 : 114 : 5 3 : 1.0
+O: 0 1 : 115 : 5 3 : 1.0
+O: 0 1 : 118 : 5 3 : 1.0
+O: 0 1 : 119 : 5 3 : 1.0
+O: 0 2 : 114 : 5 3 : 1.0
+O: 0 2 : 115 : 5 3 : 1.0
+O: 0 2 : 118 : 5 3 : 1.0
+O: 0 2 : 119 : 5 3 : 1.0
+O: 0 3 : 114 : 5 3 : 1.0
+O: 0 3 : 115 : 5 3 : 1.0
+O: 0 3 : 118 : 5 3 : 1.0
+O: 0 3 : 119 : 5 3 : 1.0
+O: 0 4 : 114 : 5 3 : 1.0
+O: 0 4 : 115 : 5 3 : 1.0
+O: 0 4 : 118 : 5 3 : 1.0
+O: 0 4 : 119 : 5 3 : 1.0
+O: 0 5 : 114 : 5 3 : 1.0
+O: 0 5 : 115 : 5 3 : 1.0
+O: 0 5 : 118 : 5 3 : 1.0
+O: 0 5 : 119 : 5 3 : 1.0
+O: 1 0 : 114 : 5 3 : 1.0
+O: 1 0 : 115 : 5 3 : 1.0
+O: 1 0 : 118 : 5 3 : 1.0
+O: 1 0 : 119 : 5 3 : 1.0
+O: 1 1 : 114 : 5 3 : 1.0
+O: 1 1 : 115 : 5 3 : 1.0
+O: 1 1 : 118 : 5 3 : 1.0
+O: 1 1 : 119 : 5 3 : 1.0
+O: 1 2 : 114 : 5 3 : 1.0
+O: 1 2 : 115 : 5 3 : 1.0
+O: 1 2 : 118 : 5 3 : 1.0
+O: 1 2 : 119 : 5 3 : 1.0
+O: 1 3 : 114 : 5 3 : 1.0
+O: 1 3 : 115 : 5 3 : 1.0
+O: 1 3 : 118 : 5 3 : 1.0
+O: 1 3 : 119 : 5 3 : 1.0
+O: 1 4 : 114 : 5 3 : 1.0
+O: 1 4 : 115 : 5 3 : 1.0
+O: 1 4 : 118 : 5 3 : 1.0
+O: 1 4 : 119 : 5 3 : 1.0
+O: 1 5 : 114 : 5 3 : 1.0
+O: 1 5 : 115 : 5 3 : 1.0
+O: 1 5 : 118 : 5 3 : 1.0
+O: 1 5 : 119 : 5 3 : 1.0
+O: 2 0 : 114 : 5 3 : 1.0
+O: 2 0 : 115 : 5 3 : 1.0
+O: 2 0 : 118 : 5 3 : 1.0
+O: 2 0 : 119 : 5 3 : 1.0
+O: 2 1 : 114 : 5 3 : 1.0
+O: 2 1 : 115 : 5 3 : 1.0
+O: 2 1 : 118 : 5 3 : 1.0
+O: 2 1 : 119 : 5 3 : 1.0
+O: 2 2 : 114 : 5 3 : 1.0
+O: 2 2 : 115 : 5 3 : 1.0
+O: 2 2 : 118 : 5 3 : 1.0
+O: 2 2 : 119 : 5 3 : 1.0
+O: 2 3 : 114 : 5 3 : 1.0
+O: 2 3 : 115 : 5 3 : 1.0
+O: 2 3 : 118 : 5 3 : 1.0
+O: 2 3 : 119 : 5 3 : 1.0
+O: 2 4 : 114 : 5 3 : 1.0
+O: 2 4 : 115 : 5 3 : 1.0
+O: 2 4 : 118 : 5 3 : 1.0
+O: 2 4 : 119 : 5 3 : 1.0
+O: 2 5 : 114 : 5 3 : 1.0
+O: 2 5 : 115 : 5 3 : 1.0
+O: 2 5 : 118 : 5 3 : 1.0
+O: 2 5 : 119 : 5 3 : 1.0
+O: 3 0 : 114 : 5 3 : 1.0
+O: 3 0 : 115 : 5 3 : 1.0
+O: 3 0 : 118 : 5 3 : 1.0
+O: 3 0 : 119 : 5 3 : 1.0
+O: 3 1 : 114 : 5 3 : 1.0
+O: 3 1 : 115 : 5 3 : 1.0
+O: 3 1 : 118 : 5 3 : 1.0
+O: 3 1 : 119 : 5 3 : 1.0
+O: 3 2 : 114 : 5 3 : 1.0
+O: 3 2 : 115 : 5 3 : 1.0
+O: 3 2 : 118 : 5 3 : 1.0
+O: 3 2 : 119 : 5 3 : 1.0
+O: 3 3 : 114 : 5 3 : 1.0
+O: 3 3 : 115 : 5 3 : 1.0
+O: 3 3 : 118 : 5 3 : 1.0
+O: 3 3 : 119 : 5 3 : 1.0
+O: 3 4 : 114 : 5 3 : 1.0
+O: 3 4 : 115 : 5 3 : 1.0
+O: 3 4 : 118 : 5 3 : 1.0
+O: 3 4 : 119 : 5 3 : 1.0
+O: 3 5 : 114 : 5 3 : 1.0
+O: 3 5 : 115 : 5 3 : 1.0
+O: 3 5 : 118 : 5 3 : 1.0
+O: 3 5 : 119 : 5 3 : 1.0
+O: 4 0 : 114 : 5 3 : 1.0
+O: 4 0 : 115 : 5 3 : 1.0
+O: 4 0 : 118 : 5 3 : 1.0
+O: 4 0 : 119 : 5 3 : 1.0
+O: 4 1 : 114 : 5 3 : 1.0
+O: 4 1 : 115 : 5 3 : 1.0
+O: 4 1 : 118 : 5 3 : 1.0
+O: 4 1 : 119 : 5 3 : 1.0
+O: 4 2 : 114 : 5 3 : 1.0
+O: 4 2 : 115 : 5 3 : 1.0
+O: 4 2 : 118 : 5 3 : 1.0
+O: 4 2 : 119 : 5 3 : 1.0
+O: 4 3 : 114 : 5 3 : 1.0
+O: 4 3 : 115 : 5 3 : 1.0
+O: 4 3 : 118 : 5 3 : 1.0
+O: 4 3 : 119 : 5 3 : 1.0
+O: 4 4 : 114 : 5 3 : 1.0
+O: 4 4 : 115 : 5 3 : 1.0
+O: 4 4 : 118 : 5 3 : 1.0
+O: 4 4 : 119 : 5 3 : 1.0
+O: 4 5 : 114 : 5 3 : 1.0
+O: 4 5 : 115 : 5 3 : 1.0
+O: 4 5 : 118 : 5 3 : 1.0
+O: 4 5 : 119 : 5 3 : 1.0
+O: 5 0 : 114 : 5 3 : 1.0
+O: 5 0 : 115 : 5 3 : 1.0
+O: 5 0 : 118 : 5 3 : 1.0
+O: 5 0 : 119 : 5 3 : 1.0
+O: 5 1 : 114 : 5 3 : 1.0
+O: 5 1 : 115 : 5 3 : 1.0
+O: 5 1 : 118 : 5 3 : 1.0
+O: 5 1 : 119 : 5 3 : 1.0
+O: 5 2 : 114 : 5 3 : 1.0
+O: 5 2 : 115 : 5 3 : 1.0
+O: 5 2 : 118 : 5 3 : 1.0
+O: 5 2 : 119 : 5 3 : 1.0
+O: 5 3 : 114 : 5 3 : 1.0
+O: 5 3 : 115 : 5 3 : 1.0
+O: 5 3 : 118 : 5 3 : 1.0
+O: 5 3 : 119 : 5 3 : 1.0
+O: 5 4 : 114 : 5 3 : 1.0
+O: 5 4 : 115 : 5 3 : 1.0
+O: 5 4 : 118 : 5 3 : 1.0
+O: 5 4 : 119 : 5 3 : 1.0
+O: 5 5 : 114 : 5 3 : 1.0
+O: 5 5 : 115 : 5 3 : 1.0
+O: 5 5 : 118 : 5 3 : 1.0
+O: 5 5 : 119 : 5 3 : 1.0
+O: 0 0 : 67 : 5 4 : 1.0
+O: 0 0 : 71 : 5 4 : 1.0
+O: 0 0 : 75 : 5 4 : 1.0
+O: 0 0 : 79 : 5 4 : 1.0
+O: 0 1 : 67 : 5 4 : 1.0
+O: 0 1 : 71 : 5 4 : 1.0
+O: 0 1 : 75 : 5 4 : 1.0
+O: 0 1 : 79 : 5 4 : 1.0
+O: 0 2 : 67 : 5 4 : 1.0
+O: 0 2 : 71 : 5 4 : 1.0
+O: 0 2 : 75 : 5 4 : 1.0
+O: 0 2 : 79 : 5 4 : 1.0
+O: 0 3 : 67 : 5 4 : 1.0
+O: 0 3 : 71 : 5 4 : 1.0
+O: 0 3 : 75 : 5 4 : 1.0
+O: 0 3 : 79 : 5 4 : 1.0
+O: 0 4 : 67 : 5 4 : 1.0
+O: 0 4 : 71 : 5 4 : 1.0
+O: 0 4 : 75 : 5 4 : 1.0
+O: 0 4 : 79 : 5 4 : 1.0
+O: 0 5 : 67 : 5 4 : 1.0
+O: 0 5 : 71 : 5 4 : 1.0
+O: 0 5 : 75 : 5 4 : 1.0
+O: 0 5 : 79 : 5 4 : 1.0
+O: 1 0 : 67 : 5 4 : 1.0
+O: 1 0 : 71 : 5 4 : 1.0
+O: 1 0 : 75 : 5 4 : 1.0
+O: 1 0 : 79 : 5 4 : 1.0
+O: 1 1 : 67 : 5 4 : 1.0
+O: 1 1 : 71 : 5 4 : 1.0
+O: 1 1 : 75 : 5 4 : 1.0
+O: 1 1 : 79 : 5 4 : 1.0
+O: 1 2 : 67 : 5 4 : 1.0
+O: 1 2 : 71 : 5 4 : 1.0
+O: 1 2 : 75 : 5 4 : 1.0
+O: 1 2 : 79 : 5 4 : 1.0
+O: 1 3 : 67 : 5 4 : 1.0
+O: 1 3 : 71 : 5 4 : 1.0
+O: 1 3 : 75 : 5 4 : 1.0
+O: 1 3 : 79 : 5 4 : 1.0
+O: 1 4 : 67 : 5 4 : 1.0
+O: 1 4 : 71 : 5 4 : 1.0
+O: 1 4 : 75 : 5 4 : 1.0
+O: 1 4 : 79 : 5 4 : 1.0
+O: 1 5 : 67 : 5 4 : 1.0
+O: 1 5 : 71 : 5 4 : 1.0
+O: 1 5 : 75 : 5 4 : 1.0
+O: 1 5 : 79 : 5 4 : 1.0
+O: 2 0 : 67 : 5 4 : 1.0
+O: 2 0 : 71 : 5 4 : 1.0
+O: 2 0 : 75 : 5 4 : 1.0
+O: 2 0 : 79 : 5 4 : 1.0
+O: 2 1 : 67 : 5 4 : 1.0
+O: 2 1 : 71 : 5 4 : 1.0
+O: 2 1 : 75 : 5 4 : 1.0
+O: 2 1 : 79 : 5 4 : 1.0
+O: 2 2 : 67 : 5 4 : 1.0
+O: 2 2 : 71 : 5 4 : 1.0
+O: 2 2 : 75 : 5 4 : 1.0
+O: 2 2 : 79 : 5 4 : 1.0
+O: 2 3 : 67 : 5 4 : 1.0
+O: 2 3 : 71 : 5 4 : 1.0
+O: 2 3 : 75 : 5 4 : 1.0
+O: 2 3 : 79 : 5 4 : 1.0
+O: 2 4 : 67 : 5 4 : 1.0
+O: 2 4 : 71 : 5 4 : 1.0
+O: 2 4 : 75 : 5 4 : 1.0
+O: 2 4 : 79 : 5 4 : 1.0
+O: 2 5 : 67 : 5 4 : 1.0
+O: 2 5 : 71 : 5 4 : 1.0
+O: 2 5 : 75 : 5 4 : 1.0
+O: 2 5 : 79 : 5 4 : 1.0
+O: 3 0 : 67 : 5 4 : 1.0
+O: 3 0 : 71 : 5 4 : 1.0
+O: 3 0 : 75 : 5 4 : 1.0
+O: 3 0 : 79 : 5 4 : 1.0
+O: 3 1 : 67 : 5 4 : 1.0
+O: 3 1 : 71 : 5 4 : 1.0
+O: 3 1 : 75 : 5 4 : 1.0
+O: 3 1 : 79 : 5 4 : 1.0
+O: 3 2 : 67 : 5 4 : 1.0
+O: 3 2 : 71 : 5 4 : 1.0
+O: 3 2 : 75 : 5 4 : 1.0
+O: 3 2 : 79 : 5 4 : 1.0
+O: 3 3 : 67 : 5 4 : 1.0
+O: 3 3 : 71 : 5 4 : 1.0
+O: 3 3 : 75 : 5 4 : 1.0
+O: 3 3 : 79 : 5 4 : 1.0
+O: 3 4 : 67 : 5 4 : 1.0
+O: 3 4 : 71 : 5 4 : 1.0
+O: 3 4 : 75 : 5 4 : 1.0
+O: 3 4 : 79 : 5 4 : 1.0
+O: 3 5 : 67 : 5 4 : 1.0
+O: 3 5 : 71 : 5 4 : 1.0
+O: 3 5 : 75 : 5 4 : 1.0
+O: 3 5 : 79 : 5 4 : 1.0
+O: 4 0 : 67 : 5 4 : 1.0
+O: 4 0 : 71 : 5 4 : 1.0
+O: 4 0 : 75 : 5 4 : 1.0
+O: 4 0 : 79 : 5 4 : 1.0
+O: 4 1 : 67 : 5 4 : 1.0
+O: 4 1 : 71 : 5 4 : 1.0
+O: 4 1 : 75 : 5 4 : 1.0
+O: 4 1 : 79 : 5 4 : 1.0
+O: 4 2 : 67 : 5 4 : 1.0
+O: 4 2 : 71 : 5 4 : 1.0
+O: 4 2 : 75 : 5 4 : 1.0
+O: 4 2 : 79 : 5 4 : 1.0
+O: 4 3 : 67 : 5 4 : 1.0
+O: 4 3 : 71 : 5 4 : 1.0
+O: 4 3 : 75 : 5 4 : 1.0
+O: 4 3 : 79 : 5 4 : 1.0
+O: 4 4 : 67 : 5 4 : 1.0
+O: 4 4 : 71 : 5 4 : 1.0
+O: 4 4 : 75 : 5 4 : 1.0
+O: 4 4 : 79 : 5 4 : 1.0
+O: 4 5 : 67 : 5 4 : 1.0
+O: 4 5 : 71 : 5 4 : 1.0
+O: 4 5 : 75 : 5 4 : 1.0
+O: 4 5 : 79 : 5 4 : 1.0
+O: 5 0 : 67 : 5 4 : 1.0
+O: 5 0 : 71 : 5 4 : 1.0
+O: 5 0 : 75 : 5 4 : 1.0
+O: 5 0 : 79 : 5 4 : 1.0
+O: 5 1 : 67 : 5 4 : 1.0
+O: 5 1 : 71 : 5 4 : 1.0
+O: 5 1 : 75 : 5 4 : 1.0
+O: 5 1 : 79 : 5 4 : 1.0
+O: 5 2 : 67 : 5 4 : 1.0
+O: 5 2 : 71 : 5 4 : 1.0
+O: 5 2 : 75 : 5 4 : 1.0
+O: 5 2 : 79 : 5 4 : 1.0
+O: 5 3 : 67 : 5 4 : 1.0
+O: 5 3 : 71 : 5 4 : 1.0
+O: 5 3 : 75 : 5 4 : 1.0
+O: 5 3 : 79 : 5 4 : 1.0
+O: 5 4 : 67 : 5 4 : 1.0
+O: 5 4 : 71 : 5 4 : 1.0
+O: 5 4 : 75 : 5 4 : 1.0
+O: 5 4 : 79 : 5 4 : 1.0
+O: 5 5 : 67 : 5 4 : 1.0
+O: 5 5 : 71 : 5 4 : 1.0
+O: 5 5 : 75 : 5 4 : 1.0
+O: 5 5 : 79 : 5 4 : 1.0
+O: 0 0 : 82 : 5 5 : 1.0
+O: 0 0 : 83 : 5 5 : 1.0
+O: 0 0 : 86 : 5 5 : 1.0
+O: 0 0 : 87 : 5 5 : 1.0
+O: 0 0 : 90 : 5 5 : 1.0
+O: 0 0 : 91 : 5 5 : 1.0
+O: 0 0 : 94 : 5 5 : 1.0
+O: 0 0 : 95 : 5 5 : 1.0
+O: 0 1 : 82 : 5 5 : 1.0
+O: 0 1 : 83 : 5 5 : 1.0
+O: 0 1 : 86 : 5 5 : 1.0
+O: 0 1 : 87 : 5 5 : 1.0
+O: 0 1 : 90 : 5 5 : 1.0
+O: 0 1 : 91 : 5 5 : 1.0
+O: 0 1 : 94 : 5 5 : 1.0
+O: 0 1 : 95 : 5 5 : 1.0
+O: 0 2 : 82 : 5 5 : 1.0
+O: 0 2 : 83 : 5 5 : 1.0
+O: 0 2 : 86 : 5 5 : 1.0
+O: 0 2 : 87 : 5 5 : 1.0
+O: 0 2 : 90 : 5 5 : 1.0
+O: 0 2 : 91 : 5 5 : 1.0
+O: 0 2 : 94 : 5 5 : 1.0
+O: 0 2 : 95 : 5 5 : 1.0
+O: 0 3 : 82 : 5 5 : 1.0
+O: 0 3 : 83 : 5 5 : 1.0
+O: 0 3 : 86 : 5 5 : 1.0
+O: 0 3 : 87 : 5 5 : 1.0
+O: 0 3 : 90 : 5 5 : 1.0
+O: 0 3 : 91 : 5 5 : 1.0
+O: 0 3 : 94 : 5 5 : 1.0
+O: 0 3 : 95 : 5 5 : 1.0
+O: 0 4 : 82 : 5 5 : 1.0
+O: 0 4 : 83 : 5 5 : 1.0
+O: 0 4 : 86 : 5 5 : 1.0
+O: 0 4 : 87 : 5 5 : 1.0
+O: 0 4 : 90 : 5 5 : 1.0
+O: 0 4 : 91 : 5 5 : 1.0
+O: 0 4 : 94 : 5 5 : 1.0
+O: 0 4 : 95 : 5 5 : 1.0
+O: 0 5 : 82 : 5 5 : 1.0
+O: 0 5 : 83 : 5 5 : 1.0
+O: 0 5 : 86 : 5 5 : 1.0
+O: 0 5 : 87 : 5 5 : 1.0
+O: 0 5 : 90 : 5 5 : 1.0
+O: 0 5 : 91 : 5 5 : 1.0
+O: 0 5 : 94 : 5 5 : 1.0
+O: 0 5 : 95 : 5 5 : 1.0
+O: 1 0 : 82 : 5 5 : 1.0
+O: 1 0 : 83 : 5 5 : 1.0
+O: 1 0 : 86 : 5 5 : 1.0
+O: 1 0 : 87 : 5 5 : 1.0
+O: 1 0 : 90 : 5 5 : 1.0
+O: 1 0 : 91 : 5 5 : 1.0
+O: 1 0 : 94 : 5 5 : 1.0
+O: 1 0 : 95 : 5 5 : 1.0
+O: 1 1 : 82 : 5 5 : 1.0
+O: 1 1 : 83 : 5 5 : 1.0
+O: 1 1 : 86 : 5 5 : 1.0
+O: 1 1 : 87 : 5 5 : 1.0
+O: 1 1 : 90 : 5 5 : 1.0
+O: 1 1 : 91 : 5 5 : 1.0
+O: 1 1 : 94 : 5 5 : 1.0
+O: 1 1 : 95 : 5 5 : 1.0
+O: 1 2 : 82 : 5 5 : 1.0
+O: 1 2 : 83 : 5 5 : 1.0
+O: 1 2 : 86 : 5 5 : 1.0
+O: 1 2 : 87 : 5 5 : 1.0
+O: 1 2 : 90 : 5 5 : 1.0
+O: 1 2 : 91 : 5 5 : 1.0
+O: 1 2 : 94 : 5 5 : 1.0
+O: 1 2 : 95 : 5 5 : 1.0
+O: 1 3 : 82 : 5 5 : 1.0
+O: 1 3 : 83 : 5 5 : 1.0
+O: 1 3 : 86 : 5 5 : 1.0
+O: 1 3 : 87 : 5 5 : 1.0
+O: 1 3 : 90 : 5 5 : 1.0
+O: 1 3 : 91 : 5 5 : 1.0
+O: 1 3 : 94 : 5 5 : 1.0
+O: 1 3 : 95 : 5 5 : 1.0
+O: 1 4 : 82 : 5 5 : 1.0
+O: 1 4 : 83 : 5 5 : 1.0
+O: 1 4 : 86 : 5 5 : 1.0
+O: 1 4 : 87 : 5 5 : 1.0
+O: 1 4 : 90 : 5 5 : 1.0
+O: 1 4 : 91 : 5 5 : 1.0
+O: 1 4 : 94 : 5 5 : 1.0
+O: 1 4 : 95 : 5 5 : 1.0
+O: 1 5 : 82 : 5 5 : 1.0
+O: 1 5 : 83 : 5 5 : 1.0
+O: 1 5 : 86 : 5 5 : 1.0
+O: 1 5 : 87 : 5 5 : 1.0
+O: 1 5 : 90 : 5 5 : 1.0
+O: 1 5 : 91 : 5 5 : 1.0
+O: 1 5 : 94 : 5 5 : 1.0
+O: 1 5 : 95 : 5 5 : 1.0
+O: 2 0 : 82 : 5 5 : 1.0
+O: 2 0 : 83 : 5 5 : 1.0
+O: 2 0 : 86 : 5 5 : 1.0
+O: 2 0 : 87 : 5 5 : 1.0
+O: 2 0 : 90 : 5 5 : 1.0
+O: 2 0 : 91 : 5 5 : 1.0
+O: 2 0 : 94 : 5 5 : 1.0
+O: 2 0 : 95 : 5 5 : 1.0
+O: 2 1 : 82 : 5 5 : 1.0
+O: 2 1 : 83 : 5 5 : 1.0
+O: 2 1 : 86 : 5 5 : 1.0
+O: 2 1 : 87 : 5 5 : 1.0
+O: 2 1 : 90 : 5 5 : 1.0
+O: 2 1 : 91 : 5 5 : 1.0
+O: 2 1 : 94 : 5 5 : 1.0
+O: 2 1 : 95 : 5 5 : 1.0
+O: 2 2 : 82 : 5 5 : 1.0
+O: 2 2 : 83 : 5 5 : 1.0
+O: 2 2 : 86 : 5 5 : 1.0
+O: 2 2 : 87 : 5 5 : 1.0
+O: 2 2 : 90 : 5 5 : 1.0
+O: 2 2 : 91 : 5 5 : 1.0
+O: 2 2 : 94 : 5 5 : 1.0
+O: 2 2 : 95 : 5 5 : 1.0
+O: 2 3 : 82 : 5 5 : 1.0
+O: 2 3 : 83 : 5 5 : 1.0
+O: 2 3 : 86 : 5 5 : 1.0
+O: 2 3 : 87 : 5 5 : 1.0
+O: 2 3 : 90 : 5 5 : 1.0
+O: 2 3 : 91 : 5 5 : 1.0
+O: 2 3 : 94 : 5 5 : 1.0
+O: 2 3 : 95 : 5 5 : 1.0
+O: 2 4 : 82 : 5 5 : 1.0
+O: 2 4 : 83 : 5 5 : 1.0
+O: 2 4 : 86 : 5 5 : 1.0
+O: 2 4 : 87 : 5 5 : 1.0
+O: 2 4 : 90 : 5 5 : 1.0
+O: 2 4 : 91 : 5 5 : 1.0
+O: 2 4 : 94 : 5 5 : 1.0
+O: 2 4 : 95 : 5 5 : 1.0
+O: 2 5 : 82 : 5 5 : 1.0
+O: 2 5 : 83 : 5 5 : 1.0
+O: 2 5 : 86 : 5 5 : 1.0
+O: 2 5 : 87 : 5 5 : 1.0
+O: 2 5 : 90 : 5 5 : 1.0
+O: 2 5 : 91 : 5 5 : 1.0
+O: 2 5 : 94 : 5 5 : 1.0
+O: 2 5 : 95 : 5 5 : 1.0
+O: 3 0 : 82 : 5 5 : 1.0
+O: 3 0 : 83 : 5 5 : 1.0
+O: 3 0 : 86 : 5 5 : 1.0
+O: 3 0 : 87 : 5 5 : 1.0
+O: 3 0 : 90 : 5 5 : 1.0
+O: 3 0 : 91 : 5 5 : 1.0
+O: 3 0 : 94 : 5 5 : 1.0
+O: 3 0 : 95 : 5 5 : 1.0
+O: 3 1 : 82 : 5 5 : 1.0
+O: 3 1 : 83 : 5 5 : 1.0
+O: 3 1 : 86 : 5 5 : 1.0
+O: 3 1 : 87 : 5 5 : 1.0
+O: 3 1 : 90 : 5 5 : 1.0
+O: 3 1 : 91 : 5 5 : 1.0
+O: 3 1 : 94 : 5 5 : 1.0
+O: 3 1 : 95 : 5 5 : 1.0
+O: 3 2 : 82 : 5 5 : 1.0
+O: 3 2 : 83 : 5 5 : 1.0
+O: 3 2 : 86 : 5 5 : 1.0
+O: 3 2 : 87 : 5 5 : 1.0
+O: 3 2 : 90 : 5 5 : 1.0
+O: 3 2 : 91 : 5 5 : 1.0
+O: 3 2 : 94 : 5 5 : 1.0
+O: 3 2 : 95 : 5 5 : 1.0
+O: 3 3 : 82 : 5 5 : 1.0
+O: 3 3 : 83 : 5 5 : 1.0
+O: 3 3 : 86 : 5 5 : 1.0
+O: 3 3 : 87 : 5 5 : 1.0
+O: 3 3 : 90 : 5 5 : 1.0
+O: 3 3 : 91 : 5 5 : 1.0
+O: 3 3 : 94 : 5 5 : 1.0
+O: 3 3 : 95 : 5 5 : 1.0
+O: 3 4 : 82 : 5 5 : 1.0
+O: 3 4 : 83 : 5 5 : 1.0
+O: 3 4 : 86 : 5 5 : 1.0
+O: 3 4 : 87 : 5 5 : 1.0
+O: 3 4 : 90 : 5 5 : 1.0
+O: 3 4 : 91 : 5 5 : 1.0
+O: 3 4 : 94 : 5 5 : 1.0
+O: 3 4 : 95 : 5 5 : 1.0
+O: 3 5 : 82 : 5 5 : 1.0
+O: 3 5 : 83 : 5 5 : 1.0
+O: 3 5 : 86 : 5 5 : 1.0
+O: 3 5 : 87 : 5 5 : 1.0
+O: 3 5 : 90 : 5 5 : 1.0
+O: 3 5 : 91 : 5 5 : 1.0
+O: 3 5 : 94 : 5 5 : 1.0
+O: 3 5 : 95 : 5 5 : 1.0
+O: 4 0 : 82 : 5 5 : 1.0
+O: 4 0 : 83 : 5 5 : 1.0
+O: 4 0 : 86 : 5 5 : 1.0
+O: 4 0 : 87 : 5 5 : 1.0
+O: 4 0 : 90 : 5 5 : 1.0
+O: 4 0 : 91 : 5 5 : 1.0
+O: 4 0 : 94 : 5 5 : 1.0
+O: 4 0 : 95 : 5 5 : 1.0
+O: 4 1 : 82 : 5 5 : 1.0
+O: 4 1 : 83 : 5 5 : 1.0
+O: 4 1 : 86 : 5 5 : 1.0
+O: 4 1 : 87 : 5 5 : 1.0
+O: 4 1 : 90 : 5 5 : 1.0
+O: 4 1 : 91 : 5 5 : 1.0
+O: 4 1 : 94 : 5 5 : 1.0
+O: 4 1 : 95 : 5 5 : 1.0
+O: 4 2 : 82 : 5 5 : 1.0
+O: 4 2 : 83 : 5 5 : 1.0
+O: 4 2 : 86 : 5 5 : 1.0
+O: 4 2 : 87 : 5 5 : 1.0
+O: 4 2 : 90 : 5 5 : 1.0
+O: 4 2 : 91 : 5 5 : 1.0
+O: 4 2 : 94 : 5 5 : 1.0
+O: 4 2 : 95 : 5 5 : 1.0
+O: 4 3 : 82 : 5 5 : 1.0
+O: 4 3 : 83 : 5 5 : 1.0
+O: 4 3 : 86 : 5 5 : 1.0
+O: 4 3 : 87 : 5 5 : 1.0
+O: 4 3 : 90 : 5 5 : 1.0
+O: 4 3 : 91 : 5 5 : 1.0
+O: 4 3 : 94 : 5 5 : 1.0
+O: 4 3 : 95 : 5 5 : 1.0
+O: 4 4 : 82 : 5 5 : 1.0
+O: 4 4 : 83 : 5 5 : 1.0
+O: 4 4 : 86 : 5 5 : 1.0
+O: 4 4 : 87 : 5 5 : 1.0
+O: 4 4 : 90 : 5 5 : 1.0
+O: 4 4 : 91 : 5 5 : 1.0
+O: 4 4 : 94 : 5 5 : 1.0
+O: 4 4 : 95 : 5 5 : 1.0
+O: 4 5 : 82 : 5 5 : 1.0
+O: 4 5 : 83 : 5 5 : 1.0
+O: 4 5 : 86 : 5 5 : 1.0
+O: 4 5 : 87 : 5 5 : 1.0
+O: 4 5 : 90 : 5 5 : 1.0
+O: 4 5 : 91 : 5 5 : 1.0
+O: 4 5 : 94 : 5 5 : 1.0
+O: 4 5 : 95 : 5 5 : 1.0
+O: 5 0 : 82 : 5 5 : 1.0
+O: 5 0 : 83 : 5 5 : 1.0
+O: 5 0 : 86 : 5 5 : 1.0
+O: 5 0 : 87 : 5 5 : 1.0
+O: 5 0 : 90 : 5 5 : 1.0
+O: 5 0 : 91 : 5 5 : 1.0
+O: 5 0 : 94 : 5 5 : 1.0
+O: 5 0 : 95 : 5 5 : 1.0
+O: 5 1 : 82 : 5 5 : 1.0
+O: 5 1 : 83 : 5 5 : 1.0
+O: 5 1 : 86 : 5 5 : 1.0
+O: 5 1 : 87 : 5 5 : 1.0
+O: 5 1 : 90 : 5 5 : 1.0
+O: 5 1 : 91 : 5 5 : 1.0
+O: 5 1 : 94 : 5 5 : 1.0
+O: 5 1 : 95 : 5 5 : 1.0
+O: 5 2 : 82 : 5 5 : 1.0
+O: 5 2 : 83 : 5 5 : 1.0
+O: 5 2 : 86 : 5 5 : 1.0
+O: 5 2 : 87 : 5 5 : 1.0
+O: 5 2 : 90 : 5 5 : 1.0
+O: 5 2 : 91 : 5 5 : 1.0
+O: 5 2 : 94 : 5 5 : 1.0
+O: 5 2 : 95 : 5 5 : 1.0
+O: 5 3 : 82 : 5 5 : 1.0
+O: 5 3 : 83 : 5 5 : 1.0
+O: 5 3 : 86 : 5 5 : 1.0
+O: 5 3 : 87 : 5 5 : 1.0
+O: 5 3 : 90 : 5 5 : 1.0
+O: 5 3 : 91 : 5 5 : 1.0
+O: 5 3 : 94 : 5 5 : 1.0
+O: 5 3 : 95 : 5 5 : 1.0
+O: 5 4 : 82 : 5 5 : 1.0
+O: 5 4 : 83 : 5 5 : 1.0
+O: 5 4 : 86 : 5 5 : 1.0
+O: 5 4 : 87 : 5 5 : 1.0
+O: 5 4 : 90 : 5 5 : 1.0
+O: 5 4 : 91 : 5 5 : 1.0
+O: 5 4 : 94 : 5 5 : 1.0
+O: 5 4 : 95 : 5 5 : 1.0
+O: 5 5 : 82 : 5 5 : 1.0
+O: 5 5 : 83 : 5 5 : 1.0
+O: 5 5 : 86 : 5 5 : 1.0
+O: 5 5 : 87 : 5 5 : 1.0
+O: 5 5 : 90 : 5 5 : 1.0
+O: 5 5 : 91 : 5 5 : 1.0
+O: 5 5 : 94 : 5 5 : 1.0
+O: 5 5 : 95 : 5 5 : 1.0
+O: 0 0 : 102 : 5 6 : 1.0
+O: 0 0 : 103 : 5 6 : 1.0
+O: 0 0 : 110 : 5 6 : 1.0
+O: 0 0 : 111 : 5 6 : 1.0
+O: 0 1 : 102 : 5 6 : 1.0
+O: 0 1 : 103 : 5 6 : 1.0
+O: 0 1 : 110 : 5 6 : 1.0
+O: 0 1 : 111 : 5 6 : 1.0
+O: 0 2 : 102 : 5 6 : 1.0
+O: 0 2 : 103 : 5 6 : 1.0
+O: 0 2 : 110 : 5 6 : 1.0
+O: 0 2 : 111 : 5 6 : 1.0
+O: 0 3 : 102 : 5 6 : 1.0
+O: 0 3 : 103 : 5 6 : 1.0
+O: 0 3 : 110 : 5 6 : 1.0
+O: 0 3 : 111 : 5 6 : 1.0
+O: 0 4 : 102 : 5 6 : 1.0
+O: 0 4 : 103 : 5 6 : 1.0
+O: 0 4 : 110 : 5 6 : 1.0
+O: 0 4 : 111 : 5 6 : 1.0
+O: 0 5 : 102 : 5 6 : 1.0
+O: 0 5 : 103 : 5 6 : 1.0
+O: 0 5 : 110 : 5 6 : 1.0
+O: 0 5 : 111 : 5 6 : 1.0
+O: 1 0 : 102 : 5 6 : 1.0
+O: 1 0 : 103 : 5 6 : 1.0
+O: 1 0 : 110 : 5 6 : 1.0
+O: 1 0 : 111 : 5 6 : 1.0
+O: 1 1 : 102 : 5 6 : 1.0
+O: 1 1 : 103 : 5 6 : 1.0
+O: 1 1 : 110 : 5 6 : 1.0
+O: 1 1 : 111 : 5 6 : 1.0
+O: 1 2 : 102 : 5 6 : 1.0
+O: 1 2 : 103 : 5 6 : 1.0
+O: 1 2 : 110 : 5 6 : 1.0
+O: 1 2 : 111 : 5 6 : 1.0
+O: 1 3 : 102 : 5 6 : 1.0
+O: 1 3 : 103 : 5 6 : 1.0
+O: 1 3 : 110 : 5 6 : 1.0
+O: 1 3 : 111 : 5 6 : 1.0
+O: 1 4 : 102 : 5 6 : 1.0
+O: 1 4 : 103 : 5 6 : 1.0
+O: 1 4 : 110 : 5 6 : 1.0
+O: 1 4 : 111 : 5 6 : 1.0
+O: 1 5 : 102 : 5 6 : 1.0
+O: 1 5 : 103 : 5 6 : 1.0
+O: 1 5 : 110 : 5 6 : 1.0
+O: 1 5 : 111 : 5 6 : 1.0
+O: 2 0 : 102 : 5 6 : 1.0
+O: 2 0 : 103 : 5 6 : 1.0
+O: 2 0 : 110 : 5 6 : 1.0
+O: 2 0 : 111 : 5 6 : 1.0
+O: 2 1 : 102 : 5 6 : 1.0
+O: 2 1 : 103 : 5 6 : 1.0
+O: 2 1 : 110 : 5 6 : 1.0
+O: 2 1 : 111 : 5 6 : 1.0
+O: 2 2 : 102 : 5 6 : 1.0
+O: 2 2 : 103 : 5 6 : 1.0
+O: 2 2 : 110 : 5 6 : 1.0
+O: 2 2 : 111 : 5 6 : 1.0
+O: 2 3 : 102 : 5 6 : 1.0
+O: 2 3 : 103 : 5 6 : 1.0
+O: 2 3 : 110 : 5 6 : 1.0
+O: 2 3 : 111 : 5 6 : 1.0
+O: 2 4 : 102 : 5 6 : 1.0
+O: 2 4 : 103 : 5 6 : 1.0
+O: 2 4 : 110 : 5 6 : 1.0
+O: 2 4 : 111 : 5 6 : 1.0
+O: 2 5 : 102 : 5 6 : 1.0
+O: 2 5 : 103 : 5 6 : 1.0
+O: 2 5 : 110 : 5 6 : 1.0
+O: 2 5 : 111 : 5 6 : 1.0
+O: 3 0 : 102 : 5 6 : 1.0
+O: 3 0 : 103 : 5 6 : 1.0
+O: 3 0 : 110 : 5 6 : 1.0
+O: 3 0 : 111 : 5 6 : 1.0
+O: 3 1 : 102 : 5 6 : 1.0
+O: 3 1 : 103 : 5 6 : 1.0
+O: 3 1 : 110 : 5 6 : 1.0
+O: 3 1 : 111 : 5 6 : 1.0
+O: 3 2 : 102 : 5 6 : 1.0
+O: 3 2 : 103 : 5 6 : 1.0
+O: 3 2 : 110 : 5 6 : 1.0
+O: 3 2 : 111 : 5 6 : 1.0
+O: 3 3 : 102 : 5 6 : 1.0
+O: 3 3 : 103 : 5 6 : 1.0
+O: 3 3 : 110 : 5 6 : 1.0
+O: 3 3 : 111 : 5 6 : 1.0
+O: 3 4 : 102 : 5 6 : 1.0
+O: 3 4 : 103 : 5 6 : 1.0
+O: 3 4 : 110 : 5 6 : 1.0
+O: 3 4 : 111 : 5 6 : 1.0
+O: 3 5 : 102 : 5 6 : 1.0
+O: 3 5 : 103 : 5 6 : 1.0
+O: 3 5 : 110 : 5 6 : 1.0
+O: 3 5 : 111 : 5 6 : 1.0
+O: 4 0 : 102 : 5 6 : 1.0
+O: 4 0 : 103 : 5 6 : 1.0
+O: 4 0 : 110 : 5 6 : 1.0
+O: 4 0 : 111 : 5 6 : 1.0
+O: 4 1 : 102 : 5 6 : 1.0
+O: 4 1 : 103 : 5 6 : 1.0
+O: 4 1 : 110 : 5 6 : 1.0
+O: 4 1 : 111 : 5 6 : 1.0
+O: 4 2 : 102 : 5 6 : 1.0
+O: 4 2 : 103 : 5 6 : 1.0
+O: 4 2 : 110 : 5 6 : 1.0
+O: 4 2 : 111 : 5 6 : 1.0
+O: 4 3 : 102 : 5 6 : 1.0
+O: 4 3 : 103 : 5 6 : 1.0
+O: 4 3 : 110 : 5 6 : 1.0
+O: 4 3 : 111 : 5 6 : 1.0
+O: 4 4 : 102 : 5 6 : 1.0
+O: 4 4 : 103 : 5 6 : 1.0
+O: 4 4 : 110 : 5 6 : 1.0
+O: 4 4 : 111 : 5 6 : 1.0
+O: 4 5 : 102 : 5 6 : 1.0
+O: 4 5 : 103 : 5 6 : 1.0
+O: 4 5 : 110 : 5 6 : 1.0
+O: 4 5 : 111 : 5 6 : 1.0
+O: 5 0 : 102 : 5 6 : 1.0
+O: 5 0 : 103 : 5 6 : 1.0
+O: 5 0 : 110 : 5 6 : 1.0
+O: 5 0 : 111 : 5 6 : 1.0
+O: 5 1 : 102 : 5 6 : 1.0
+O: 5 1 : 103 : 5 6 : 1.0
+O: 5 1 : 110 : 5 6 : 1.0
+O: 5 1 : 111 : 5 6 : 1.0
+O: 5 2 : 102 : 5 6 : 1.0
+O: 5 2 : 103 : 5 6 : 1.0
+O: 5 2 : 110 : 5 6 : 1.0
+O: 5 2 : 111 : 5 6 : 1.0
+O: 5 3 : 102 : 5 6 : 1.0
+O: 5 3 : 103 : 5 6 : 1.0
+O: 5 3 : 110 : 5 6 : 1.0
+O: 5 3 : 111 : 5 6 : 1.0
+O: 5 4 : 102 : 5 6 : 1.0
+O: 5 4 : 103 : 5 6 : 1.0
+O: 5 4 : 110 : 5 6 : 1.0
+O: 5 4 : 111 : 5 6 : 1.0
+O: 5 5 : 102 : 5 6 : 1.0
+O: 5 5 : 103 : 5 6 : 1.0
+O: 5 5 : 110 : 5 6 : 1.0
+O: 5 5 : 111 : 5 6 : 1.0
+O: 0 0 : 122 : 5 7 : 1.0
+O: 0 0 : 123 : 5 7 : 1.0
+O: 0 0 : 126 : 5 7 : 1.0
+O: 0 0 : 127 : 5 7 : 1.0
+O: 0 1 : 122 : 5 7 : 1.0
+O: 0 1 : 123 : 5 7 : 1.0
+O: 0 1 : 126 : 5 7 : 1.0
+O: 0 1 : 127 : 5 7 : 1.0
+O: 0 2 : 122 : 5 7 : 1.0
+O: 0 2 : 123 : 5 7 : 1.0
+O: 0 2 : 126 : 5 7 : 1.0
+O: 0 2 : 127 : 5 7 : 1.0
+O: 0 3 : 122 : 5 7 : 1.0
+O: 0 3 : 123 : 5 7 : 1.0
+O: 0 3 : 126 : 5 7 : 1.0
+O: 0 3 : 127 : 5 7 : 1.0
+O: 0 4 : 122 : 5 7 : 1.0
+O: 0 4 : 123 : 5 7 : 1.0
+O: 0 4 : 126 : 5 7 : 1.0
+O: 0 4 : 127 : 5 7 : 1.0
+O: 0 5 : 122 : 5 7 : 1.0
+O: 0 5 : 123 : 5 7 : 1.0
+O: 0 5 : 126 : 5 7 : 1.0
+O: 0 5 : 127 : 5 7 : 1.0
+O: 1 0 : 122 : 5 7 : 1.0
+O: 1 0 : 123 : 5 7 : 1.0
+O: 1 0 : 126 : 5 7 : 1.0
+O: 1 0 : 127 : 5 7 : 1.0
+O: 1 1 : 122 : 5 7 : 1.0
+O: 1 1 : 123 : 5 7 : 1.0
+O: 1 1 : 126 : 5 7 : 1.0
+O: 1 1 : 127 : 5 7 : 1.0
+O: 1 2 : 122 : 5 7 : 1.0
+O: 1 2 : 123 : 5 7 : 1.0
+O: 1 2 : 126 : 5 7 : 1.0
+O: 1 2 : 127 : 5 7 : 1.0
+O: 1 3 : 122 : 5 7 : 1.0
+O: 1 3 : 123 : 5 7 : 1.0
+O: 1 3 : 126 : 5 7 : 1.0
+O: 1 3 : 127 : 5 7 : 1.0
+O: 1 4 : 122 : 5 7 : 1.0
+O: 1 4 : 123 : 5 7 : 1.0
+O: 1 4 : 126 : 5 7 : 1.0
+O: 1 4 : 127 : 5 7 : 1.0
+O: 1 5 : 122 : 5 7 : 1.0
+O: 1 5 : 123 : 5 7 : 1.0
+O: 1 5 : 126 : 5 7 : 1.0
+O: 1 5 : 127 : 5 7 : 1.0
+O: 2 0 : 122 : 5 7 : 1.0
+O: 2 0 : 123 : 5 7 : 1.0
+O: 2 0 : 126 : 5 7 : 1.0
+O: 2 0 : 127 : 5 7 : 1.0
+O: 2 1 : 122 : 5 7 : 1.0
+O: 2 1 : 123 : 5 7 : 1.0
+O: 2 1 : 126 : 5 7 : 1.0
+O: 2 1 : 127 : 5 7 : 1.0
+O: 2 2 : 122 : 5 7 : 1.0
+O: 2 2 : 123 : 5 7 : 1.0
+O: 2 2 : 126 : 5 7 : 1.0
+O: 2 2 : 127 : 5 7 : 1.0
+O: 2 3 : 122 : 5 7 : 1.0
+O: 2 3 : 123 : 5 7 : 1.0
+O: 2 3 : 126 : 5 7 : 1.0
+O: 2 3 : 127 : 5 7 : 1.0
+O: 2 4 : 122 : 5 7 : 1.0
+O: 2 4 : 123 : 5 7 : 1.0
+O: 2 4 : 126 : 5 7 : 1.0
+O: 2 4 : 127 : 5 7 : 1.0
+O: 2 5 : 122 : 5 7 : 1.0
+O: 2 5 : 123 : 5 7 : 1.0
+O: 2 5 : 126 : 5 7 : 1.0
+O: 2 5 : 127 : 5 7 : 1.0
+O: 3 0 : 122 : 5 7 : 1.0
+O: 3 0 : 123 : 5 7 : 1.0
+O: 3 0 : 126 : 5 7 : 1.0
+O: 3 0 : 127 : 5 7 : 1.0
+O: 3 1 : 122 : 5 7 : 1.0
+O: 3 1 : 123 : 5 7 : 1.0
+O: 3 1 : 126 : 5 7 : 1.0
+O: 3 1 : 127 : 5 7 : 1.0
+O: 3 2 : 122 : 5 7 : 1.0
+O: 3 2 : 123 : 5 7 : 1.0
+O: 3 2 : 126 : 5 7 : 1.0
+O: 3 2 : 127 : 5 7 : 1.0
+O: 3 3 : 122 : 5 7 : 1.0
+O: 3 3 : 123 : 5 7 : 1.0
+O: 3 3 : 126 : 5 7 : 1.0
+O: 3 3 : 127 : 5 7 : 1.0
+O: 3 4 : 122 : 5 7 : 1.0
+O: 3 4 : 123 : 5 7 : 1.0
+O: 3 4 : 126 : 5 7 : 1.0
+O: 3 4 : 127 : 5 7 : 1.0
+O: 3 5 : 122 : 5 7 : 1.0
+O: 3 5 : 123 : 5 7 : 1.0
+O: 3 5 : 126 : 5 7 : 1.0
+O: 3 5 : 127 : 5 7 : 1.0
+O: 4 0 : 122 : 5 7 : 1.0
+O: 4 0 : 123 : 5 7 : 1.0
+O: 4 0 : 126 : 5 7 : 1.0
+O: 4 0 : 127 : 5 7 : 1.0
+O: 4 1 : 122 : 5 7 : 1.0
+O: 4 1 : 123 : 5 7 : 1.0
+O: 4 1 : 126 : 5 7 : 1.0
+O: 4 1 : 127 : 5 7 : 1.0
+O: 4 2 : 122 : 5 7 : 1.0
+O: 4 2 : 123 : 5 7 : 1.0
+O: 4 2 : 126 : 5 7 : 1.0
+O: 4 2 : 127 : 5 7 : 1.0
+O: 4 3 : 122 : 5 7 : 1.0
+O: 4 3 : 123 : 5 7 : 1.0
+O: 4 3 : 126 : 5 7 : 1.0
+O: 4 3 : 127 : 5 7 : 1.0
+O: 4 4 : 122 : 5 7 : 1.0
+O: 4 4 : 123 : 5 7 : 1.0
+O: 4 4 : 126 : 5 7 : 1.0
+O: 4 4 : 127 : 5 7 : 1.0
+O: 4 5 : 122 : 5 7 : 1.0
+O: 4 5 : 123 : 5 7 : 1.0
+O: 4 5 : 126 : 5 7 : 1.0
+O: 4 5 : 127 : 5 7 : 1.0
+O: 5 0 : 122 : 5 7 : 1.0
+O: 5 0 : 123 : 5 7 : 1.0
+O: 5 0 : 126 : 5 7 : 1.0
+O: 5 0 : 127 : 5 7 : 1.0
+O: 5 1 : 122 : 5 7 : 1.0
+O: 5 1 : 123 : 5 7 : 1.0
+O: 5 1 : 126 : 5 7 : 1.0
+O: 5 1 : 127 : 5 7 : 1.0
+O: 5 2 : 122 : 5 7 : 1.0
+O: 5 2 : 123 : 5 7 : 1.0
+O: 5 2 : 126 : 5 7 : 1.0
+O: 5 2 : 127 : 5 7 : 1.0
+O: 5 3 : 122 : 5 7 : 1.0
+O: 5 3 : 123 : 5 7 : 1.0
+O: 5 3 : 126 : 5 7 : 1.0
+O: 5 3 : 127 : 5 7 : 1.0
+O: 5 4 : 122 : 5 7 : 1.0
+O: 5 4 : 123 : 5 7 : 1.0
+O: 5 4 : 126 : 5 7 : 1.0
+O: 5 4 : 127 : 5 7 : 1.0
+O: 5 5 : 122 : 5 7 : 1.0
+O: 5 5 : 123 : 5 7 : 1.0
+O: 5 5 : 126 : 5 7 : 1.0
+O: 5 5 : 127 : 5 7 : 1.0
+O: 0 0 : 132 : 6 0 : 1.0
+O: 0 0 : 134 : 6 0 : 1.0
+O: 0 0 : 140 : 6 0 : 1.0
+O: 0 0 : 142 : 6 0 : 1.0
+O: 0 1 : 132 : 6 0 : 1.0
+O: 0 1 : 134 : 6 0 : 1.0
+O: 0 1 : 140 : 6 0 : 1.0
+O: 0 1 : 142 : 6 0 : 1.0
+O: 0 2 : 132 : 6 0 : 1.0
+O: 0 2 : 134 : 6 0 : 1.0
+O: 0 2 : 140 : 6 0 : 1.0
+O: 0 2 : 142 : 6 0 : 1.0
+O: 0 3 : 132 : 6 0 : 1.0
+O: 0 3 : 134 : 6 0 : 1.0
+O: 0 3 : 140 : 6 0 : 1.0
+O: 0 3 : 142 : 6 0 : 1.0
+O: 0 4 : 132 : 6 0 : 1.0
+O: 0 4 : 134 : 6 0 : 1.0
+O: 0 4 : 140 : 6 0 : 1.0
+O: 0 4 : 142 : 6 0 : 1.0
+O: 0 5 : 132 : 6 0 : 1.0
+O: 0 5 : 134 : 6 0 : 1.0
+O: 0 5 : 140 : 6 0 : 1.0
+O: 0 5 : 142 : 6 0 : 1.0
+O: 1 0 : 132 : 6 0 : 1.0
+O: 1 0 : 134 : 6 0 : 1.0
+O: 1 0 : 140 : 6 0 : 1.0
+O: 1 0 : 142 : 6 0 : 1.0
+O: 1 1 : 132 : 6 0 : 1.0
+O: 1 1 : 134 : 6 0 : 1.0
+O: 1 1 : 140 : 6 0 : 1.0
+O: 1 1 : 142 : 6 0 : 1.0
+O: 1 2 : 132 : 6 0 : 1.0
+O: 1 2 : 134 : 6 0 : 1.0
+O: 1 2 : 140 : 6 0 : 1.0
+O: 1 2 : 142 : 6 0 : 1.0
+O: 1 3 : 132 : 6 0 : 1.0
+O: 1 3 : 134 : 6 0 : 1.0
+O: 1 3 : 140 : 6 0 : 1.0
+O: 1 3 : 142 : 6 0 : 1.0
+O: 1 4 : 132 : 6 0 : 1.0
+O: 1 4 : 134 : 6 0 : 1.0
+O: 1 4 : 140 : 6 0 : 1.0
+O: 1 4 : 142 : 6 0 : 1.0
+O: 1 5 : 132 : 6 0 : 1.0
+O: 1 5 : 134 : 6 0 : 1.0
+O: 1 5 : 140 : 6 0 : 1.0
+O: 1 5 : 142 : 6 0 : 1.0
+O: 2 0 : 132 : 6 0 : 1.0
+O: 2 0 : 134 : 6 0 : 1.0
+O: 2 0 : 140 : 6 0 : 1.0
+O: 2 0 : 142 : 6 0 : 1.0
+O: 2 1 : 132 : 6 0 : 1.0
+O: 2 1 : 134 : 6 0 : 1.0
+O: 2 1 : 140 : 6 0 : 1.0
+O: 2 1 : 142 : 6 0 : 1.0
+O: 2 2 : 132 : 6 0 : 1.0
+O: 2 2 : 134 : 6 0 : 1.0
+O: 2 2 : 140 : 6 0 : 1.0
+O: 2 2 : 142 : 6 0 : 1.0
+O: 2 3 : 132 : 6 0 : 1.0
+O: 2 3 : 134 : 6 0 : 1.0
+O: 2 3 : 140 : 6 0 : 1.0
+O: 2 3 : 142 : 6 0 : 1.0
+O: 2 4 : 132 : 6 0 : 1.0
+O: 2 4 : 134 : 6 0 : 1.0
+O: 2 4 : 140 : 6 0 : 1.0
+O: 2 4 : 142 : 6 0 : 1.0
+O: 2 5 : 132 : 6 0 : 1.0
+O: 2 5 : 134 : 6 0 : 1.0
+O: 2 5 : 140 : 6 0 : 1.0
+O: 2 5 : 142 : 6 0 : 1.0
+O: 3 0 : 132 : 6 0 : 1.0
+O: 3 0 : 134 : 6 0 : 1.0
+O: 3 0 : 140 : 6 0 : 1.0
+O: 3 0 : 142 : 6 0 : 1.0
+O: 3 1 : 132 : 6 0 : 1.0
+O: 3 1 : 134 : 6 0 : 1.0
+O: 3 1 : 140 : 6 0 : 1.0
+O: 3 1 : 142 : 6 0 : 1.0
+O: 3 2 : 132 : 6 0 : 1.0
+O: 3 2 : 134 : 6 0 : 1.0
+O: 3 2 : 140 : 6 0 : 1.0
+O: 3 2 : 142 : 6 0 : 1.0
+O: 3 3 : 132 : 6 0 : 1.0
+O: 3 3 : 134 : 6 0 : 1.0
+O: 3 3 : 140 : 6 0 : 1.0
+O: 3 3 : 142 : 6 0 : 1.0
+O: 3 4 : 132 : 6 0 : 1.0
+O: 3 4 : 134 : 6 0 : 1.0
+O: 3 4 : 140 : 6 0 : 1.0
+O: 3 4 : 142 : 6 0 : 1.0
+O: 3 5 : 132 : 6 0 : 1.0
+O: 3 5 : 134 : 6 0 : 1.0
+O: 3 5 : 140 : 6 0 : 1.0
+O: 3 5 : 142 : 6 0 : 1.0
+O: 4 0 : 132 : 6 0 : 1.0
+O: 4 0 : 134 : 6 0 : 1.0
+O: 4 0 : 140 : 6 0 : 1.0
+O: 4 0 : 142 : 6 0 : 1.0
+O: 4 1 : 132 : 6 0 : 1.0
+O: 4 1 : 134 : 6 0 : 1.0
+O: 4 1 : 140 : 6 0 : 1.0
+O: 4 1 : 142 : 6 0 : 1.0
+O: 4 2 : 132 : 6 0 : 1.0
+O: 4 2 : 134 : 6 0 : 1.0
+O: 4 2 : 140 : 6 0 : 1.0
+O: 4 2 : 142 : 6 0 : 1.0
+O: 4 3 : 132 : 6 0 : 1.0
+O: 4 3 : 134 : 6 0 : 1.0
+O: 4 3 : 140 : 6 0 : 1.0
+O: 4 3 : 142 : 6 0 : 1.0
+O: 4 4 : 132 : 6 0 : 1.0
+O: 4 4 : 134 : 6 0 : 1.0
+O: 4 4 : 140 : 6 0 : 1.0
+O: 4 4 : 142 : 6 0 : 1.0
+O: 4 5 : 132 : 6 0 : 1.0
+O: 4 5 : 134 : 6 0 : 1.0
+O: 4 5 : 140 : 6 0 : 1.0
+O: 4 5 : 142 : 6 0 : 1.0
+O: 5 0 : 132 : 6 0 : 1.0
+O: 5 0 : 134 : 6 0 : 1.0
+O: 5 0 : 140 : 6 0 : 1.0
+O: 5 0 : 142 : 6 0 : 1.0
+O: 5 1 : 132 : 6 0 : 1.0
+O: 5 1 : 134 : 6 0 : 1.0
+O: 5 1 : 140 : 6 0 : 1.0
+O: 5 1 : 142 : 6 0 : 1.0
+O: 5 2 : 132 : 6 0 : 1.0
+O: 5 2 : 134 : 6 0 : 1.0
+O: 5 2 : 140 : 6 0 : 1.0
+O: 5 2 : 142 : 6 0 : 1.0
+O: 5 3 : 132 : 6 0 : 1.0
+O: 5 3 : 134 : 6 0 : 1.0
+O: 5 3 : 140 : 6 0 : 1.0
+O: 5 3 : 142 : 6 0 : 1.0
+O: 5 4 : 132 : 6 0 : 1.0
+O: 5 4 : 134 : 6 0 : 1.0
+O: 5 4 : 140 : 6 0 : 1.0
+O: 5 4 : 142 : 6 0 : 1.0
+O: 5 5 : 132 : 6 0 : 1.0
+O: 5 5 : 134 : 6 0 : 1.0
+O: 5 5 : 140 : 6 0 : 1.0
+O: 5 5 : 142 : 6 0 : 1.0
+O: 0 0 : 148 : 6 1 : 1.0
+O: 0 0 : 149 : 6 1 : 1.0
+O: 0 0 : 156 : 6 1 : 1.0
+O: 0 0 : 157 : 6 1 : 1.0
+O: 0 1 : 148 : 6 1 : 1.0
+O: 0 1 : 149 : 6 1 : 1.0
+O: 0 1 : 156 : 6 1 : 1.0
+O: 0 1 : 157 : 6 1 : 1.0
+O: 0 2 : 148 : 6 1 : 1.0
+O: 0 2 : 149 : 6 1 : 1.0
+O: 0 2 : 156 : 6 1 : 1.0
+O: 0 2 : 157 : 6 1 : 1.0
+O: 0 3 : 148 : 6 1 : 1.0
+O: 0 3 : 149 : 6 1 : 1.0
+O: 0 3 : 156 : 6 1 : 1.0
+O: 0 3 : 157 : 6 1 : 1.0
+O: 0 4 : 148 : 6 1 : 1.0
+O: 0 4 : 149 : 6 1 : 1.0
+O: 0 4 : 156 : 6 1 : 1.0
+O: 0 4 : 157 : 6 1 : 1.0
+O: 0 5 : 148 : 6 1 : 1.0
+O: 0 5 : 149 : 6 1 : 1.0
+O: 0 5 : 156 : 6 1 : 1.0
+O: 0 5 : 157 : 6 1 : 1.0
+O: 1 0 : 148 : 6 1 : 1.0
+O: 1 0 : 149 : 6 1 : 1.0
+O: 1 0 : 156 : 6 1 : 1.0
+O: 1 0 : 157 : 6 1 : 1.0
+O: 1 1 : 148 : 6 1 : 1.0
+O: 1 1 : 149 : 6 1 : 1.0
+O: 1 1 : 156 : 6 1 : 1.0
+O: 1 1 : 157 : 6 1 : 1.0
+O: 1 2 : 148 : 6 1 : 1.0
+O: 1 2 : 149 : 6 1 : 1.0
+O: 1 2 : 156 : 6 1 : 1.0
+O: 1 2 : 157 : 6 1 : 1.0
+O: 1 3 : 148 : 6 1 : 1.0
+O: 1 3 : 149 : 6 1 : 1.0
+O: 1 3 : 156 : 6 1 : 1.0
+O: 1 3 : 157 : 6 1 : 1.0
+O: 1 4 : 148 : 6 1 : 1.0
+O: 1 4 : 149 : 6 1 : 1.0
+O: 1 4 : 156 : 6 1 : 1.0
+O: 1 4 : 157 : 6 1 : 1.0
+O: 1 5 : 148 : 6 1 : 1.0
+O: 1 5 : 149 : 6 1 : 1.0
+O: 1 5 : 156 : 6 1 : 1.0
+O: 1 5 : 157 : 6 1 : 1.0
+O: 2 0 : 148 : 6 1 : 1.0
+O: 2 0 : 149 : 6 1 : 1.0
+O: 2 0 : 156 : 6 1 : 1.0
+O: 2 0 : 157 : 6 1 : 1.0
+O: 2 1 : 148 : 6 1 : 1.0
+O: 2 1 : 149 : 6 1 : 1.0
+O: 2 1 : 156 : 6 1 : 1.0
+O: 2 1 : 157 : 6 1 : 1.0
+O: 2 2 : 148 : 6 1 : 1.0
+O: 2 2 : 149 : 6 1 : 1.0
+O: 2 2 : 156 : 6 1 : 1.0
+O: 2 2 : 157 : 6 1 : 1.0
+O: 2 3 : 148 : 6 1 : 1.0
+O: 2 3 : 149 : 6 1 : 1.0
+O: 2 3 : 156 : 6 1 : 1.0
+O: 2 3 : 157 : 6 1 : 1.0
+O: 2 4 : 148 : 6 1 : 1.0
+O: 2 4 : 149 : 6 1 : 1.0
+O: 2 4 : 156 : 6 1 : 1.0
+O: 2 4 : 157 : 6 1 : 1.0
+O: 2 5 : 148 : 6 1 : 1.0
+O: 2 5 : 149 : 6 1 : 1.0
+O: 2 5 : 156 : 6 1 : 1.0
+O: 2 5 : 157 : 6 1 : 1.0
+O: 3 0 : 148 : 6 1 : 1.0
+O: 3 0 : 149 : 6 1 : 1.0
+O: 3 0 : 156 : 6 1 : 1.0
+O: 3 0 : 157 : 6 1 : 1.0
+O: 3 1 : 148 : 6 1 : 1.0
+O: 3 1 : 149 : 6 1 : 1.0
+O: 3 1 : 156 : 6 1 : 1.0
+O: 3 1 : 157 : 6 1 : 1.0
+O: 3 2 : 148 : 6 1 : 1.0
+O: 3 2 : 149 : 6 1 : 1.0
+O: 3 2 : 156 : 6 1 : 1.0
+O: 3 2 : 157 : 6 1 : 1.0
+O: 3 3 : 148 : 6 1 : 1.0
+O: 3 3 : 149 : 6 1 : 1.0
+O: 3 3 : 156 : 6 1 : 1.0
+O: 3 3 : 157 : 6 1 : 1.0
+O: 3 4 : 148 : 6 1 : 1.0
+O: 3 4 : 149 : 6 1 : 1.0
+O: 3 4 : 156 : 6 1 : 1.0
+O: 3 4 : 157 : 6 1 : 1.0
+O: 3 5 : 148 : 6 1 : 1.0
+O: 3 5 : 149 : 6 1 : 1.0
+O: 3 5 : 156 : 6 1 : 1.0
+O: 3 5 : 157 : 6 1 : 1.0
+O: 4 0 : 148 : 6 1 : 1.0
+O: 4 0 : 149 : 6 1 : 1.0
+O: 4 0 : 156 : 6 1 : 1.0
+O: 4 0 : 157 : 6 1 : 1.0
+O: 4 1 : 148 : 6 1 : 1.0
+O: 4 1 : 149 : 6 1 : 1.0
+O: 4 1 : 156 : 6 1 : 1.0
+O: 4 1 : 157 : 6 1 : 1.0
+O: 4 2 : 148 : 6 1 : 1.0
+O: 4 2 : 149 : 6 1 : 1.0
+O: 4 2 : 156 : 6 1 : 1.0
+O: 4 2 : 157 : 6 1 : 1.0
+O: 4 3 : 148 : 6 1 : 1.0
+O: 4 3 : 149 : 6 1 : 1.0
+O: 4 3 : 156 : 6 1 : 1.0
+O: 4 3 : 157 : 6 1 : 1.0
+O: 4 4 : 148 : 6 1 : 1.0
+O: 4 4 : 149 : 6 1 : 1.0
+O: 4 4 : 156 : 6 1 : 1.0
+O: 4 4 : 157 : 6 1 : 1.0
+O: 4 5 : 148 : 6 1 : 1.0
+O: 4 5 : 149 : 6 1 : 1.0
+O: 4 5 : 156 : 6 1 : 1.0
+O: 4 5 : 157 : 6 1 : 1.0
+O: 5 0 : 148 : 6 1 : 1.0
+O: 5 0 : 149 : 6 1 : 1.0
+O: 5 0 : 156 : 6 1 : 1.0
+O: 5 0 : 157 : 6 1 : 1.0
+O: 5 1 : 148 : 6 1 : 1.0
+O: 5 1 : 149 : 6 1 : 1.0
+O: 5 1 : 156 : 6 1 : 1.0
+O: 5 1 : 157 : 6 1 : 1.0
+O: 5 2 : 148 : 6 1 : 1.0
+O: 5 2 : 149 : 6 1 : 1.0
+O: 5 2 : 156 : 6 1 : 1.0
+O: 5 2 : 157 : 6 1 : 1.0
+O: 5 3 : 148 : 6 1 : 1.0
+O: 5 3 : 149 : 6 1 : 1.0
+O: 5 3 : 156 : 6 1 : 1.0
+O: 5 3 : 157 : 6 1 : 1.0
+O: 5 4 : 148 : 6 1 : 1.0
+O: 5 4 : 149 : 6 1 : 1.0
+O: 5 4 : 156 : 6 1 : 1.0
+O: 5 4 : 157 : 6 1 : 1.0
+O: 5 5 : 148 : 6 1 : 1.0
+O: 5 5 : 149 : 6 1 : 1.0
+O: 5 5 : 156 : 6 1 : 1.0
+O: 5 5 : 157 : 6 1 : 1.0
+O: 0 0 : 180 : 6 3 : 1.0
+O: 0 0 : 181 : 6 3 : 1.0
+O: 0 0 : 182 : 6 3 : 1.0
+O: 0 0 : 183 : 6 3 : 1.0
+O: 0 1 : 180 : 6 3 : 1.0
+O: 0 1 : 181 : 6 3 : 1.0
+O: 0 1 : 182 : 6 3 : 1.0
+O: 0 1 : 183 : 6 3 : 1.0
+O: 0 2 : 180 : 6 3 : 1.0
+O: 0 2 : 181 : 6 3 : 1.0
+O: 0 2 : 182 : 6 3 : 1.0
+O: 0 2 : 183 : 6 3 : 1.0
+O: 0 3 : 180 : 6 3 : 1.0
+O: 0 3 : 181 : 6 3 : 1.0
+O: 0 3 : 182 : 6 3 : 1.0
+O: 0 3 : 183 : 6 3 : 1.0
+O: 0 4 : 180 : 6 3 : 1.0
+O: 0 4 : 181 : 6 3 : 1.0
+O: 0 4 : 182 : 6 3 : 1.0
+O: 0 4 : 183 : 6 3 : 1.0
+O: 0 5 : 180 : 6 3 : 1.0
+O: 0 5 : 181 : 6 3 : 1.0
+O: 0 5 : 182 : 6 3 : 1.0
+O: 0 5 : 183 : 6 3 : 1.0
+O: 1 0 : 180 : 6 3 : 1.0
+O: 1 0 : 181 : 6 3 : 1.0
+O: 1 0 : 182 : 6 3 : 1.0
+O: 1 0 : 183 : 6 3 : 1.0
+O: 1 1 : 180 : 6 3 : 1.0
+O: 1 1 : 181 : 6 3 : 1.0
+O: 1 1 : 182 : 6 3 : 1.0
+O: 1 1 : 183 : 6 3 : 1.0
+O: 1 2 : 180 : 6 3 : 1.0
+O: 1 2 : 181 : 6 3 : 1.0
+O: 1 2 : 182 : 6 3 : 1.0
+O: 1 2 : 183 : 6 3 : 1.0
+O: 1 3 : 180 : 6 3 : 1.0
+O: 1 3 : 181 : 6 3 : 1.0
+O: 1 3 : 182 : 6 3 : 1.0
+O: 1 3 : 183 : 6 3 : 1.0
+O: 1 4 : 180 : 6 3 : 1.0
+O: 1 4 : 181 : 6 3 : 1.0
+O: 1 4 : 182 : 6 3 : 1.0
+O: 1 4 : 183 : 6 3 : 1.0
+O: 1 5 : 180 : 6 3 : 1.0
+O: 1 5 : 181 : 6 3 : 1.0
+O: 1 5 : 182 : 6 3 : 1.0
+O: 1 5 : 183 : 6 3 : 1.0
+O: 2 0 : 180 : 6 3 : 1.0
+O: 2 0 : 181 : 6 3 : 1.0
+O: 2 0 : 182 : 6 3 : 1.0
+O: 2 0 : 183 : 6 3 : 1.0
+O: 2 1 : 180 : 6 3 : 1.0
+O: 2 1 : 181 : 6 3 : 1.0
+O: 2 1 : 182 : 6 3 : 1.0
+O: 2 1 : 183 : 6 3 : 1.0
+O: 2 2 : 180 : 6 3 : 1.0
+O: 2 2 : 181 : 6 3 : 1.0
+O: 2 2 : 182 : 6 3 : 1.0
+O: 2 2 : 183 : 6 3 : 1.0
+O: 2 3 : 180 : 6 3 : 1.0
+O: 2 3 : 181 : 6 3 : 1.0
+O: 2 3 : 182 : 6 3 : 1.0
+O: 2 3 : 183 : 6 3 : 1.0
+O: 2 4 : 180 : 6 3 : 1.0
+O: 2 4 : 181 : 6 3 : 1.0
+O: 2 4 : 182 : 6 3 : 1.0
+O: 2 4 : 183 : 6 3 : 1.0
+O: 2 5 : 180 : 6 3 : 1.0
+O: 2 5 : 181 : 6 3 : 1.0
+O: 2 5 : 182 : 6 3 : 1.0
+O: 2 5 : 183 : 6 3 : 1.0
+O: 3 0 : 180 : 6 3 : 1.0
+O: 3 0 : 181 : 6 3 : 1.0
+O: 3 0 : 182 : 6 3 : 1.0
+O: 3 0 : 183 : 6 3 : 1.0
+O: 3 1 : 180 : 6 3 : 1.0
+O: 3 1 : 181 : 6 3 : 1.0
+O: 3 1 : 182 : 6 3 : 1.0
+O: 3 1 : 183 : 6 3 : 1.0
+O: 3 2 : 180 : 6 3 : 1.0
+O: 3 2 : 181 : 6 3 : 1.0
+O: 3 2 : 182 : 6 3 : 1.0
+O: 3 2 : 183 : 6 3 : 1.0
+O: 3 3 : 180 : 6 3 : 1.0
+O: 3 3 : 181 : 6 3 : 1.0
+O: 3 3 : 182 : 6 3 : 1.0
+O: 3 3 : 183 : 6 3 : 1.0
+O: 3 4 : 180 : 6 3 : 1.0
+O: 3 4 : 181 : 6 3 : 1.0
+O: 3 4 : 182 : 6 3 : 1.0
+O: 3 4 : 183 : 6 3 : 1.0
+O: 3 5 : 180 : 6 3 : 1.0
+O: 3 5 : 181 : 6 3 : 1.0
+O: 3 5 : 182 : 6 3 : 1.0
+O: 3 5 : 183 : 6 3 : 1.0
+O: 4 0 : 180 : 6 3 : 1.0
+O: 4 0 : 181 : 6 3 : 1.0
+O: 4 0 : 182 : 6 3 : 1.0
+O: 4 0 : 183 : 6 3 : 1.0
+O: 4 1 : 180 : 6 3 : 1.0
+O: 4 1 : 181 : 6 3 : 1.0
+O: 4 1 : 182 : 6 3 : 1.0
+O: 4 1 : 183 : 6 3 : 1.0
+O: 4 2 : 180 : 6 3 : 1.0
+O: 4 2 : 181 : 6 3 : 1.0
+O: 4 2 : 182 : 6 3 : 1.0
+O: 4 2 : 183 : 6 3 : 1.0
+O: 4 3 : 180 : 6 3 : 1.0
+O: 4 3 : 181 : 6 3 : 1.0
+O: 4 3 : 182 : 6 3 : 1.0
+O: 4 3 : 183 : 6 3 : 1.0
+O: 4 4 : 180 : 6 3 : 1.0
+O: 4 4 : 181 : 6 3 : 1.0
+O: 4 4 : 182 : 6 3 : 1.0
+O: 4 4 : 183 : 6 3 : 1.0
+O: 4 5 : 180 : 6 3 : 1.0
+O: 4 5 : 181 : 6 3 : 1.0
+O: 4 5 : 182 : 6 3 : 1.0
+O: 4 5 : 183 : 6 3 : 1.0
+O: 5 0 : 180 : 6 3 : 1.0
+O: 5 0 : 181 : 6 3 : 1.0
+O: 5 0 : 182 : 6 3 : 1.0
+O: 5 0 : 183 : 6 3 : 1.0
+O: 5 1 : 180 : 6 3 : 1.0
+O: 5 1 : 181 : 6 3 : 1.0
+O: 5 1 : 182 : 6 3 : 1.0
+O: 5 1 : 183 : 6 3 : 1.0
+O: 5 2 : 180 : 6 3 : 1.0
+O: 5 2 : 181 : 6 3 : 1.0
+O: 5 2 : 182 : 6 3 : 1.0
+O: 5 2 : 183 : 6 3 : 1.0
+O: 5 3 : 180 : 6 3 : 1.0
+O: 5 3 : 181 : 6 3 : 1.0
+O: 5 3 : 182 : 6 3 : 1.0
+O: 5 3 : 183 : 6 3 : 1.0
+O: 5 4 : 180 : 6 3 : 1.0
+O: 5 4 : 181 : 6 3 : 1.0
+O: 5 4 : 182 : 6 3 : 1.0
+O: 5 4 : 183 : 6 3 : 1.0
+O: 5 5 : 180 : 6 3 : 1.0
+O: 5 5 : 181 : 6 3 : 1.0
+O: 5 5 : 182 : 6 3 : 1.0
+O: 5 5 : 183 : 6 3 : 1.0
+O: 0 0 : 133 : 6 4 : 1.0
+O: 0 0 : 135 : 6 4 : 1.0
+O: 0 0 : 141 : 6 4 : 1.0
+O: 0 0 : 143 : 6 4 : 1.0
+O: 0 1 : 133 : 6 4 : 1.0
+O: 0 1 : 135 : 6 4 : 1.0
+O: 0 1 : 141 : 6 4 : 1.0
+O: 0 1 : 143 : 6 4 : 1.0
+O: 0 2 : 133 : 6 4 : 1.0
+O: 0 2 : 135 : 6 4 : 1.0
+O: 0 2 : 141 : 6 4 : 1.0
+O: 0 2 : 143 : 6 4 : 1.0
+O: 0 3 : 133 : 6 4 : 1.0
+O: 0 3 : 135 : 6 4 : 1.0
+O: 0 3 : 141 : 6 4 : 1.0
+O: 0 3 : 143 : 6 4 : 1.0
+O: 0 4 : 133 : 6 4 : 1.0
+O: 0 4 : 135 : 6 4 : 1.0
+O: 0 4 : 141 : 6 4 : 1.0
+O: 0 4 : 143 : 6 4 : 1.0
+O: 0 5 : 133 : 6 4 : 1.0
+O: 0 5 : 135 : 6 4 : 1.0
+O: 0 5 : 141 : 6 4 : 1.0
+O: 0 5 : 143 : 6 4 : 1.0
+O: 1 0 : 133 : 6 4 : 1.0
+O: 1 0 : 135 : 6 4 : 1.0
+O: 1 0 : 141 : 6 4 : 1.0
+O: 1 0 : 143 : 6 4 : 1.0
+O: 1 1 : 133 : 6 4 : 1.0
+O: 1 1 : 135 : 6 4 : 1.0
+O: 1 1 : 141 : 6 4 : 1.0
+O: 1 1 : 143 : 6 4 : 1.0
+O: 1 2 : 133 : 6 4 : 1.0
+O: 1 2 : 135 : 6 4 : 1.0
+O: 1 2 : 141 : 6 4 : 1.0
+O: 1 2 : 143 : 6 4 : 1.0
+O: 1 3 : 133 : 6 4 : 1.0
+O: 1 3 : 135 : 6 4 : 1.0
+O: 1 3 : 141 : 6 4 : 1.0
+O: 1 3 : 143 : 6 4 : 1.0
+O: 1 4 : 133 : 6 4 : 1.0
+O: 1 4 : 135 : 6 4 : 1.0
+O: 1 4 : 141 : 6 4 : 1.0
+O: 1 4 : 143 : 6 4 : 1.0
+O: 1 5 : 133 : 6 4 : 1.0
+O: 1 5 : 135 : 6 4 : 1.0
+O: 1 5 : 141 : 6 4 : 1.0
+O: 1 5 : 143 : 6 4 : 1.0
+O: 2 0 : 133 : 6 4 : 1.0
+O: 2 0 : 135 : 6 4 : 1.0
+O: 2 0 : 141 : 6 4 : 1.0
+O: 2 0 : 143 : 6 4 : 1.0
+O: 2 1 : 133 : 6 4 : 1.0
+O: 2 1 : 135 : 6 4 : 1.0
+O: 2 1 : 141 : 6 4 : 1.0
+O: 2 1 : 143 : 6 4 : 1.0
+O: 2 2 : 133 : 6 4 : 1.0
+O: 2 2 : 135 : 6 4 : 1.0
+O: 2 2 : 141 : 6 4 : 1.0
+O: 2 2 : 143 : 6 4 : 1.0
+O: 2 3 : 133 : 6 4 : 1.0
+O: 2 3 : 135 : 6 4 : 1.0
+O: 2 3 : 141 : 6 4 : 1.0
+O: 2 3 : 143 : 6 4 : 1.0
+O: 2 4 : 133 : 6 4 : 1.0
+O: 2 4 : 135 : 6 4 : 1.0
+O: 2 4 : 141 : 6 4 : 1.0
+O: 2 4 : 143 : 6 4 : 1.0
+O: 2 5 : 133 : 6 4 : 1.0
+O: 2 5 : 135 : 6 4 : 1.0
+O: 2 5 : 141 : 6 4 : 1.0
+O: 2 5 : 143 : 6 4 : 1.0
+O: 3 0 : 133 : 6 4 : 1.0
+O: 3 0 : 135 : 6 4 : 1.0
+O: 3 0 : 141 : 6 4 : 1.0
+O: 3 0 : 143 : 6 4 : 1.0
+O: 3 1 : 133 : 6 4 : 1.0
+O: 3 1 : 135 : 6 4 : 1.0
+O: 3 1 : 141 : 6 4 : 1.0
+O: 3 1 : 143 : 6 4 : 1.0
+O: 3 2 : 133 : 6 4 : 1.0
+O: 3 2 : 135 : 6 4 : 1.0
+O: 3 2 : 141 : 6 4 : 1.0
+O: 3 2 : 143 : 6 4 : 1.0
+O: 3 3 : 133 : 6 4 : 1.0
+O: 3 3 : 135 : 6 4 : 1.0
+O: 3 3 : 141 : 6 4 : 1.0
+O: 3 3 : 143 : 6 4 : 1.0
+O: 3 4 : 133 : 6 4 : 1.0
+O: 3 4 : 135 : 6 4 : 1.0
+O: 3 4 : 141 : 6 4 : 1.0
+O: 3 4 : 143 : 6 4 : 1.0
+O: 3 5 : 133 : 6 4 : 1.0
+O: 3 5 : 135 : 6 4 : 1.0
+O: 3 5 : 141 : 6 4 : 1.0
+O: 3 5 : 143 : 6 4 : 1.0
+O: 4 0 : 133 : 6 4 : 1.0
+O: 4 0 : 135 : 6 4 : 1.0
+O: 4 0 : 141 : 6 4 : 1.0
+O: 4 0 : 143 : 6 4 : 1.0
+O: 4 1 : 133 : 6 4 : 1.0
+O: 4 1 : 135 : 6 4 : 1.0
+O: 4 1 : 141 : 6 4 : 1.0
+O: 4 1 : 143 : 6 4 : 1.0
+O: 4 2 : 133 : 6 4 : 1.0
+O: 4 2 : 135 : 6 4 : 1.0
+O: 4 2 : 141 : 6 4 : 1.0
+O: 4 2 : 143 : 6 4 : 1.0
+O: 4 3 : 133 : 6 4 : 1.0
+O: 4 3 : 135 : 6 4 : 1.0
+O: 4 3 : 141 : 6 4 : 1.0
+O: 4 3 : 143 : 6 4 : 1.0
+O: 4 4 : 133 : 6 4 : 1.0
+O: 4 4 : 135 : 6 4 : 1.0
+O: 4 4 : 141 : 6 4 : 1.0
+O: 4 4 : 143 : 6 4 : 1.0
+O: 4 5 : 133 : 6 4 : 1.0
+O: 4 5 : 135 : 6 4 : 1.0
+O: 4 5 : 141 : 6 4 : 1.0
+O: 4 5 : 143 : 6 4 : 1.0
+O: 5 0 : 133 : 6 4 : 1.0
+O: 5 0 : 135 : 6 4 : 1.0
+O: 5 0 : 141 : 6 4 : 1.0
+O: 5 0 : 143 : 6 4 : 1.0
+O: 5 1 : 133 : 6 4 : 1.0
+O: 5 1 : 135 : 6 4 : 1.0
+O: 5 1 : 141 : 6 4 : 1.0
+O: 5 1 : 143 : 6 4 : 1.0
+O: 5 2 : 133 : 6 4 : 1.0
+O: 5 2 : 135 : 6 4 : 1.0
+O: 5 2 : 141 : 6 4 : 1.0
+O: 5 2 : 143 : 6 4 : 1.0
+O: 5 3 : 133 : 6 4 : 1.0
+O: 5 3 : 135 : 6 4 : 1.0
+O: 5 3 : 141 : 6 4 : 1.0
+O: 5 3 : 143 : 6 4 : 1.0
+O: 5 4 : 133 : 6 4 : 1.0
+O: 5 4 : 135 : 6 4 : 1.0
+O: 5 4 : 141 : 6 4 : 1.0
+O: 5 4 : 143 : 6 4 : 1.0
+O: 5 5 : 133 : 6 4 : 1.0
+O: 5 5 : 135 : 6 4 : 1.0
+O: 5 5 : 141 : 6 4 : 1.0
+O: 5 5 : 143 : 6 4 : 1.0
+O: 0 0 : 150 : 6 5 : 1.0
+O: 0 0 : 151 : 6 5 : 1.0
+O: 0 0 : 158 : 6 5 : 1.0
+O: 0 0 : 159 : 6 5 : 1.0
+O: 0 1 : 150 : 6 5 : 1.0
+O: 0 1 : 151 : 6 5 : 1.0
+O: 0 1 : 158 : 6 5 : 1.0
+O: 0 1 : 159 : 6 5 : 1.0
+O: 0 2 : 150 : 6 5 : 1.0
+O: 0 2 : 151 : 6 5 : 1.0
+O: 0 2 : 158 : 6 5 : 1.0
+O: 0 2 : 159 : 6 5 : 1.0
+O: 0 3 : 150 : 6 5 : 1.0
+O: 0 3 : 151 : 6 5 : 1.0
+O: 0 3 : 158 : 6 5 : 1.0
+O: 0 3 : 159 : 6 5 : 1.0
+O: 0 4 : 150 : 6 5 : 1.0
+O: 0 4 : 151 : 6 5 : 1.0
+O: 0 4 : 158 : 6 5 : 1.0
+O: 0 4 : 159 : 6 5 : 1.0
+O: 0 5 : 150 : 6 5 : 1.0
+O: 0 5 : 151 : 6 5 : 1.0
+O: 0 5 : 158 : 6 5 : 1.0
+O: 0 5 : 159 : 6 5 : 1.0
+O: 1 0 : 150 : 6 5 : 1.0
+O: 1 0 : 151 : 6 5 : 1.0
+O: 1 0 : 158 : 6 5 : 1.0
+O: 1 0 : 159 : 6 5 : 1.0
+O: 1 1 : 150 : 6 5 : 1.0
+O: 1 1 : 151 : 6 5 : 1.0
+O: 1 1 : 158 : 6 5 : 1.0
+O: 1 1 : 159 : 6 5 : 1.0
+O: 1 2 : 150 : 6 5 : 1.0
+O: 1 2 : 151 : 6 5 : 1.0
+O: 1 2 : 158 : 6 5 : 1.0
+O: 1 2 : 159 : 6 5 : 1.0
+O: 1 3 : 150 : 6 5 : 1.0
+O: 1 3 : 151 : 6 5 : 1.0
+O: 1 3 : 158 : 6 5 : 1.0
+O: 1 3 : 159 : 6 5 : 1.0
+O: 1 4 : 150 : 6 5 : 1.0
+O: 1 4 : 151 : 6 5 : 1.0
+O: 1 4 : 158 : 6 5 : 1.0
+O: 1 4 : 159 : 6 5 : 1.0
+O: 1 5 : 150 : 6 5 : 1.0
+O: 1 5 : 151 : 6 5 : 1.0
+O: 1 5 : 158 : 6 5 : 1.0
+O: 1 5 : 159 : 6 5 : 1.0
+O: 2 0 : 150 : 6 5 : 1.0
+O: 2 0 : 151 : 6 5 : 1.0
+O: 2 0 : 158 : 6 5 : 1.0
+O: 2 0 : 159 : 6 5 : 1.0
+O: 2 1 : 150 : 6 5 : 1.0
+O: 2 1 : 151 : 6 5 : 1.0
+O: 2 1 : 158 : 6 5 : 1.0
+O: 2 1 : 159 : 6 5 : 1.0
+O: 2 2 : 150 : 6 5 : 1.0
+O: 2 2 : 151 : 6 5 : 1.0
+O: 2 2 : 158 : 6 5 : 1.0
+O: 2 2 : 159 : 6 5 : 1.0
+O: 2 3 : 150 : 6 5 : 1.0
+O: 2 3 : 151 : 6 5 : 1.0
+O: 2 3 : 158 : 6 5 : 1.0
+O: 2 3 : 159 : 6 5 : 1.0
+O: 2 4 : 150 : 6 5 : 1.0
+O: 2 4 : 151 : 6 5 : 1.0
+O: 2 4 : 158 : 6 5 : 1.0
+O: 2 4 : 159 : 6 5 : 1.0
+O: 2 5 : 150 : 6 5 : 1.0
+O: 2 5 : 151 : 6 5 : 1.0
+O: 2 5 : 158 : 6 5 : 1.0
+O: 2 5 : 159 : 6 5 : 1.0
+O: 3 0 : 150 : 6 5 : 1.0
+O: 3 0 : 151 : 6 5 : 1.0
+O: 3 0 : 158 : 6 5 : 1.0
+O: 3 0 : 159 : 6 5 : 1.0
+O: 3 1 : 150 : 6 5 : 1.0
+O: 3 1 : 151 : 6 5 : 1.0
+O: 3 1 : 158 : 6 5 : 1.0
+O: 3 1 : 159 : 6 5 : 1.0
+O: 3 2 : 150 : 6 5 : 1.0
+O: 3 2 : 151 : 6 5 : 1.0
+O: 3 2 : 158 : 6 5 : 1.0
+O: 3 2 : 159 : 6 5 : 1.0
+O: 3 3 : 150 : 6 5 : 1.0
+O: 3 3 : 151 : 6 5 : 1.0
+O: 3 3 : 158 : 6 5 : 1.0
+O: 3 3 : 159 : 6 5 : 1.0
+O: 3 4 : 150 : 6 5 : 1.0
+O: 3 4 : 151 : 6 5 : 1.0
+O: 3 4 : 158 : 6 5 : 1.0
+O: 3 4 : 159 : 6 5 : 1.0
+O: 3 5 : 150 : 6 5 : 1.0
+O: 3 5 : 151 : 6 5 : 1.0
+O: 3 5 : 158 : 6 5 : 1.0
+O: 3 5 : 159 : 6 5 : 1.0
+O: 4 0 : 150 : 6 5 : 1.0
+O: 4 0 : 151 : 6 5 : 1.0
+O: 4 0 : 158 : 6 5 : 1.0
+O: 4 0 : 159 : 6 5 : 1.0
+O: 4 1 : 150 : 6 5 : 1.0
+O: 4 1 : 151 : 6 5 : 1.0
+O: 4 1 : 158 : 6 5 : 1.0
+O: 4 1 : 159 : 6 5 : 1.0
+O: 4 2 : 150 : 6 5 : 1.0
+O: 4 2 : 151 : 6 5 : 1.0
+O: 4 2 : 158 : 6 5 : 1.0
+O: 4 2 : 159 : 6 5 : 1.0
+O: 4 3 : 150 : 6 5 : 1.0
+O: 4 3 : 151 : 6 5 : 1.0
+O: 4 3 : 158 : 6 5 : 1.0
+O: 4 3 : 159 : 6 5 : 1.0
+O: 4 4 : 150 : 6 5 : 1.0
+O: 4 4 : 151 : 6 5 : 1.0
+O: 4 4 : 158 : 6 5 : 1.0
+O: 4 4 : 159 : 6 5 : 1.0
+O: 4 5 : 150 : 6 5 : 1.0
+O: 4 5 : 151 : 6 5 : 1.0
+O: 4 5 : 158 : 6 5 : 1.0
+O: 4 5 : 159 : 6 5 : 1.0
+O: 5 0 : 150 : 6 5 : 1.0
+O: 5 0 : 151 : 6 5 : 1.0
+O: 5 0 : 158 : 6 5 : 1.0
+O: 5 0 : 159 : 6 5 : 1.0
+O: 5 1 : 150 : 6 5 : 1.0
+O: 5 1 : 151 : 6 5 : 1.0
+O: 5 1 : 158 : 6 5 : 1.0
+O: 5 1 : 159 : 6 5 : 1.0
+O: 5 2 : 150 : 6 5 : 1.0
+O: 5 2 : 151 : 6 5 : 1.0
+O: 5 2 : 158 : 6 5 : 1.0
+O: 5 2 : 159 : 6 5 : 1.0
+O: 5 3 : 150 : 6 5 : 1.0
+O: 5 3 : 151 : 6 5 : 1.0
+O: 5 3 : 158 : 6 5 : 1.0
+O: 5 3 : 159 : 6 5 : 1.0
+O: 5 4 : 150 : 6 5 : 1.0
+O: 5 4 : 151 : 6 5 : 1.0
+O: 5 4 : 158 : 6 5 : 1.0
+O: 5 4 : 159 : 6 5 : 1.0
+O: 5 5 : 150 : 6 5 : 1.0
+O: 5 5 : 151 : 6 5 : 1.0
+O: 5 5 : 158 : 6 5 : 1.0
+O: 5 5 : 159 : 6 5 : 1.0
+O: 0 0 : 164 : 6 6 : 1.0
+O: 0 0 : 165 : 6 6 : 1.0
+O: 0 0 : 166 : 6 6 : 1.0
+O: 0 0 : 167 : 6 6 : 1.0
+O: 0 0 : 172 : 6 6 : 1.0
+O: 0 0 : 173 : 6 6 : 1.0
+O: 0 0 : 174 : 6 6 : 1.0
+O: 0 0 : 175 : 6 6 : 1.0
+O: 0 1 : 164 : 6 6 : 1.0
+O: 0 1 : 165 : 6 6 : 1.0
+O: 0 1 : 166 : 6 6 : 1.0
+O: 0 1 : 167 : 6 6 : 1.0
+O: 0 1 : 172 : 6 6 : 1.0
+O: 0 1 : 173 : 6 6 : 1.0
+O: 0 1 : 174 : 6 6 : 1.0
+O: 0 1 : 175 : 6 6 : 1.0
+O: 0 2 : 164 : 6 6 : 1.0
+O: 0 2 : 165 : 6 6 : 1.0
+O: 0 2 : 166 : 6 6 : 1.0
+O: 0 2 : 167 : 6 6 : 1.0
+O: 0 2 : 172 : 6 6 : 1.0
+O: 0 2 : 173 : 6 6 : 1.0
+O: 0 2 : 174 : 6 6 : 1.0
+O: 0 2 : 175 : 6 6 : 1.0
+O: 0 3 : 164 : 6 6 : 1.0
+O: 0 3 : 165 : 6 6 : 1.0
+O: 0 3 : 166 : 6 6 : 1.0
+O: 0 3 : 167 : 6 6 : 1.0
+O: 0 3 : 172 : 6 6 : 1.0
+O: 0 3 : 173 : 6 6 : 1.0
+O: 0 3 : 174 : 6 6 : 1.0
+O: 0 3 : 175 : 6 6 : 1.0
+O: 0 4 : 164 : 6 6 : 1.0
+O: 0 4 : 165 : 6 6 : 1.0
+O: 0 4 : 166 : 6 6 : 1.0
+O: 0 4 : 167 : 6 6 : 1.0
+O: 0 4 : 172 : 6 6 : 1.0
+O: 0 4 : 173 : 6 6 : 1.0
+O: 0 4 : 174 : 6 6 : 1.0
+O: 0 4 : 175 : 6 6 : 1.0
+O: 0 5 : 164 : 6 6 : 1.0
+O: 0 5 : 165 : 6 6 : 1.0
+O: 0 5 : 166 : 6 6 : 1.0
+O: 0 5 : 167 : 6 6 : 1.0
+O: 0 5 : 172 : 6 6 : 1.0
+O: 0 5 : 173 : 6 6 : 1.0
+O: 0 5 : 174 : 6 6 : 1.0
+O: 0 5 : 175 : 6 6 : 1.0
+O: 1 0 : 164 : 6 6 : 1.0
+O: 1 0 : 165 : 6 6 : 1.0
+O: 1 0 : 166 : 6 6 : 1.0
+O: 1 0 : 167 : 6 6 : 1.0
+O: 1 0 : 172 : 6 6 : 1.0
+O: 1 0 : 173 : 6 6 : 1.0
+O: 1 0 : 174 : 6 6 : 1.0
+O: 1 0 : 175 : 6 6 : 1.0
+O: 1 1 : 164 : 6 6 : 1.0
+O: 1 1 : 165 : 6 6 : 1.0
+O: 1 1 : 166 : 6 6 : 1.0
+O: 1 1 : 167 : 6 6 : 1.0
+O: 1 1 : 172 : 6 6 : 1.0
+O: 1 1 : 173 : 6 6 : 1.0
+O: 1 1 : 174 : 6 6 : 1.0
+O: 1 1 : 175 : 6 6 : 1.0
+O: 1 2 : 164 : 6 6 : 1.0
+O: 1 2 : 165 : 6 6 : 1.0
+O: 1 2 : 166 : 6 6 : 1.0
+O: 1 2 : 167 : 6 6 : 1.0
+O: 1 2 : 172 : 6 6 : 1.0
+O: 1 2 : 173 : 6 6 : 1.0
+O: 1 2 : 174 : 6 6 : 1.0
+O: 1 2 : 175 : 6 6 : 1.0
+O: 1 3 : 164 : 6 6 : 1.0
+O: 1 3 : 165 : 6 6 : 1.0
+O: 1 3 : 166 : 6 6 : 1.0
+O: 1 3 : 167 : 6 6 : 1.0
+O: 1 3 : 172 : 6 6 : 1.0
+O: 1 3 : 173 : 6 6 : 1.0
+O: 1 3 : 174 : 6 6 : 1.0
+O: 1 3 : 175 : 6 6 : 1.0
+O: 1 4 : 164 : 6 6 : 1.0
+O: 1 4 : 165 : 6 6 : 1.0
+O: 1 4 : 166 : 6 6 : 1.0
+O: 1 4 : 167 : 6 6 : 1.0
+O: 1 4 : 172 : 6 6 : 1.0
+O: 1 4 : 173 : 6 6 : 1.0
+O: 1 4 : 174 : 6 6 : 1.0
+O: 1 4 : 175 : 6 6 : 1.0
+O: 1 5 : 164 : 6 6 : 1.0
+O: 1 5 : 165 : 6 6 : 1.0
+O: 1 5 : 166 : 6 6 : 1.0
+O: 1 5 : 167 : 6 6 : 1.0
+O: 1 5 : 172 : 6 6 : 1.0
+O: 1 5 : 173 : 6 6 : 1.0
+O: 1 5 : 174 : 6 6 : 1.0
+O: 1 5 : 175 : 6 6 : 1.0
+O: 2 0 : 164 : 6 6 : 1.0
+O: 2 0 : 165 : 6 6 : 1.0
+O: 2 0 : 166 : 6 6 : 1.0
+O: 2 0 : 167 : 6 6 : 1.0
+O: 2 0 : 172 : 6 6 : 1.0
+O: 2 0 : 173 : 6 6 : 1.0
+O: 2 0 : 174 : 6 6 : 1.0
+O: 2 0 : 175 : 6 6 : 1.0
+O: 2 1 : 164 : 6 6 : 1.0
+O: 2 1 : 165 : 6 6 : 1.0
+O: 2 1 : 166 : 6 6 : 1.0
+O: 2 1 : 167 : 6 6 : 1.0
+O: 2 1 : 172 : 6 6 : 1.0
+O: 2 1 : 173 : 6 6 : 1.0
+O: 2 1 : 174 : 6 6 : 1.0
+O: 2 1 : 175 : 6 6 : 1.0
+O: 2 2 : 164 : 6 6 : 1.0
+O: 2 2 : 165 : 6 6 : 1.0
+O: 2 2 : 166 : 6 6 : 1.0
+O: 2 2 : 167 : 6 6 : 1.0
+O: 2 2 : 172 : 6 6 : 1.0
+O: 2 2 : 173 : 6 6 : 1.0
+O: 2 2 : 174 : 6 6 : 1.0
+O: 2 2 : 175 : 6 6 : 1.0
+O: 2 3 : 164 : 6 6 : 1.0
+O: 2 3 : 165 : 6 6 : 1.0
+O: 2 3 : 166 : 6 6 : 1.0
+O: 2 3 : 167 : 6 6 : 1.0
+O: 2 3 : 172 : 6 6 : 1.0
+O: 2 3 : 173 : 6 6 : 1.0
+O: 2 3 : 174 : 6 6 : 1.0
+O: 2 3 : 175 : 6 6 : 1.0
+O: 2 4 : 164 : 6 6 : 1.0
+O: 2 4 : 165 : 6 6 : 1.0
+O: 2 4 : 166 : 6 6 : 1.0
+O: 2 4 : 167 : 6 6 : 1.0
+O: 2 4 : 172 : 6 6 : 1.0
+O: 2 4 : 173 : 6 6 : 1.0
+O: 2 4 : 174 : 6 6 : 1.0
+O: 2 4 : 175 : 6 6 : 1.0
+O: 2 5 : 164 : 6 6 : 1.0
+O: 2 5 : 165 : 6 6 : 1.0
+O: 2 5 : 166 : 6 6 : 1.0
+O: 2 5 : 167 : 6 6 : 1.0
+O: 2 5 : 172 : 6 6 : 1.0
+O: 2 5 : 173 : 6 6 : 1.0
+O: 2 5 : 174 : 6 6 : 1.0
+O: 2 5 : 175 : 6 6 : 1.0
+O: 3 0 : 164 : 6 6 : 1.0
+O: 3 0 : 165 : 6 6 : 1.0
+O: 3 0 : 166 : 6 6 : 1.0
+O: 3 0 : 167 : 6 6 : 1.0
+O: 3 0 : 172 : 6 6 : 1.0
+O: 3 0 : 173 : 6 6 : 1.0
+O: 3 0 : 174 : 6 6 : 1.0
+O: 3 0 : 175 : 6 6 : 1.0
+O: 3 1 : 164 : 6 6 : 1.0
+O: 3 1 : 165 : 6 6 : 1.0
+O: 3 1 : 166 : 6 6 : 1.0
+O: 3 1 : 167 : 6 6 : 1.0
+O: 3 1 : 172 : 6 6 : 1.0
+O: 3 1 : 173 : 6 6 : 1.0
+O: 3 1 : 174 : 6 6 : 1.0
+O: 3 1 : 175 : 6 6 : 1.0
+O: 3 2 : 164 : 6 6 : 1.0
+O: 3 2 : 165 : 6 6 : 1.0
+O: 3 2 : 166 : 6 6 : 1.0
+O: 3 2 : 167 : 6 6 : 1.0
+O: 3 2 : 172 : 6 6 : 1.0
+O: 3 2 : 173 : 6 6 : 1.0
+O: 3 2 : 174 : 6 6 : 1.0
+O: 3 2 : 175 : 6 6 : 1.0
+O: 3 3 : 164 : 6 6 : 1.0
+O: 3 3 : 165 : 6 6 : 1.0
+O: 3 3 : 166 : 6 6 : 1.0
+O: 3 3 : 167 : 6 6 : 1.0
+O: 3 3 : 172 : 6 6 : 1.0
+O: 3 3 : 173 : 6 6 : 1.0
+O: 3 3 : 174 : 6 6 : 1.0
+O: 3 3 : 175 : 6 6 : 1.0
+O: 3 4 : 164 : 6 6 : 1.0
+O: 3 4 : 165 : 6 6 : 1.0
+O: 3 4 : 166 : 6 6 : 1.0
+O: 3 4 : 167 : 6 6 : 1.0
+O: 3 4 : 172 : 6 6 : 1.0
+O: 3 4 : 173 : 6 6 : 1.0
+O: 3 4 : 174 : 6 6 : 1.0
+O: 3 4 : 175 : 6 6 : 1.0
+O: 3 5 : 164 : 6 6 : 1.0
+O: 3 5 : 165 : 6 6 : 1.0
+O: 3 5 : 166 : 6 6 : 1.0
+O: 3 5 : 167 : 6 6 : 1.0
+O: 3 5 : 172 : 6 6 : 1.0
+O: 3 5 : 173 : 6 6 : 1.0
+O: 3 5 : 174 : 6 6 : 1.0
+O: 3 5 : 175 : 6 6 : 1.0
+O: 4 0 : 164 : 6 6 : 1.0
+O: 4 0 : 165 : 6 6 : 1.0
+O: 4 0 : 166 : 6 6 : 1.0
+O: 4 0 : 167 : 6 6 : 1.0
+O: 4 0 : 172 : 6 6 : 1.0
+O: 4 0 : 173 : 6 6 : 1.0
+O: 4 0 : 174 : 6 6 : 1.0
+O: 4 0 : 175 : 6 6 : 1.0
+O: 4 1 : 164 : 6 6 : 1.0
+O: 4 1 : 165 : 6 6 : 1.0
+O: 4 1 : 166 : 6 6 : 1.0
+O: 4 1 : 167 : 6 6 : 1.0
+O: 4 1 : 172 : 6 6 : 1.0
+O: 4 1 : 173 : 6 6 : 1.0
+O: 4 1 : 174 : 6 6 : 1.0
+O: 4 1 : 175 : 6 6 : 1.0
+O: 4 2 : 164 : 6 6 : 1.0
+O: 4 2 : 165 : 6 6 : 1.0
+O: 4 2 : 166 : 6 6 : 1.0
+O: 4 2 : 167 : 6 6 : 1.0
+O: 4 2 : 172 : 6 6 : 1.0
+O: 4 2 : 173 : 6 6 : 1.0
+O: 4 2 : 174 : 6 6 : 1.0
+O: 4 2 : 175 : 6 6 : 1.0
+O: 4 3 : 164 : 6 6 : 1.0
+O: 4 3 : 165 : 6 6 : 1.0
+O: 4 3 : 166 : 6 6 : 1.0
+O: 4 3 : 167 : 6 6 : 1.0
+O: 4 3 : 172 : 6 6 : 1.0
+O: 4 3 : 173 : 6 6 : 1.0
+O: 4 3 : 174 : 6 6 : 1.0
+O: 4 3 : 175 : 6 6 : 1.0
+O: 4 4 : 164 : 6 6 : 1.0
+O: 4 4 : 165 : 6 6 : 1.0
+O: 4 4 : 166 : 6 6 : 1.0
+O: 4 4 : 167 : 6 6 : 1.0
+O: 4 4 : 172 : 6 6 : 1.0
+O: 4 4 : 173 : 6 6 : 1.0
+O: 4 4 : 174 : 6 6 : 1.0
+O: 4 4 : 175 : 6 6 : 1.0
+O: 4 5 : 164 : 6 6 : 1.0
+O: 4 5 : 165 : 6 6 : 1.0
+O: 4 5 : 166 : 6 6 : 1.0
+O: 4 5 : 167 : 6 6 : 1.0
+O: 4 5 : 172 : 6 6 : 1.0
+O: 4 5 : 173 : 6 6 : 1.0
+O: 4 5 : 174 : 6 6 : 1.0
+O: 4 5 : 175 : 6 6 : 1.0
+O: 5 0 : 164 : 6 6 : 1.0
+O: 5 0 : 165 : 6 6 : 1.0
+O: 5 0 : 166 : 6 6 : 1.0
+O: 5 0 : 167 : 6 6 : 1.0
+O: 5 0 : 172 : 6 6 : 1.0
+O: 5 0 : 173 : 6 6 : 1.0
+O: 5 0 : 174 : 6 6 : 1.0
+O: 5 0 : 175 : 6 6 : 1.0
+O: 5 1 : 164 : 6 6 : 1.0
+O: 5 1 : 165 : 6 6 : 1.0
+O: 5 1 : 166 : 6 6 : 1.0
+O: 5 1 : 167 : 6 6 : 1.0
+O: 5 1 : 172 : 6 6 : 1.0
+O: 5 1 : 173 : 6 6 : 1.0
+O: 5 1 : 174 : 6 6 : 1.0
+O: 5 1 : 175 : 6 6 : 1.0
+O: 5 2 : 164 : 6 6 : 1.0
+O: 5 2 : 165 : 6 6 : 1.0
+O: 5 2 : 166 : 6 6 : 1.0
+O: 5 2 : 167 : 6 6 : 1.0
+O: 5 2 : 172 : 6 6 : 1.0
+O: 5 2 : 173 : 6 6 : 1.0
+O: 5 2 : 174 : 6 6 : 1.0
+O: 5 2 : 175 : 6 6 : 1.0
+O: 5 3 : 164 : 6 6 : 1.0
+O: 5 3 : 165 : 6 6 : 1.0
+O: 5 3 : 166 : 6 6 : 1.0
+O: 5 3 : 167 : 6 6 : 1.0
+O: 5 3 : 172 : 6 6 : 1.0
+O: 5 3 : 173 : 6 6 : 1.0
+O: 5 3 : 174 : 6 6 : 1.0
+O: 5 3 : 175 : 6 6 : 1.0
+O: 5 4 : 164 : 6 6 : 1.0
+O: 5 4 : 165 : 6 6 : 1.0
+O: 5 4 : 166 : 6 6 : 1.0
+O: 5 4 : 167 : 6 6 : 1.0
+O: 5 4 : 172 : 6 6 : 1.0
+O: 5 4 : 173 : 6 6 : 1.0
+O: 5 4 : 174 : 6 6 : 1.0
+O: 5 4 : 175 : 6 6 : 1.0
+O: 5 5 : 164 : 6 6 : 1.0
+O: 5 5 : 165 : 6 6 : 1.0
+O: 5 5 : 166 : 6 6 : 1.0
+O: 5 5 : 167 : 6 6 : 1.0
+O: 5 5 : 172 : 6 6 : 1.0
+O: 5 5 : 173 : 6 6 : 1.0
+O: 5 5 : 174 : 6 6 : 1.0
+O: 5 5 : 175 : 6 6 : 1.0
+O: 0 0 : 188 : 6 7 : 1.0
+O: 0 0 : 189 : 6 7 : 1.0
+O: 0 0 : 190 : 6 7 : 1.0
+O: 0 0 : 191 : 6 7 : 1.0
+O: 0 1 : 188 : 6 7 : 1.0
+O: 0 1 : 189 : 6 7 : 1.0
+O: 0 1 : 190 : 6 7 : 1.0
+O: 0 1 : 191 : 6 7 : 1.0
+O: 0 2 : 188 : 6 7 : 1.0
+O: 0 2 : 189 : 6 7 : 1.0
+O: 0 2 : 190 : 6 7 : 1.0
+O: 0 2 : 191 : 6 7 : 1.0
+O: 0 3 : 188 : 6 7 : 1.0
+O: 0 3 : 189 : 6 7 : 1.0
+O: 0 3 : 190 : 6 7 : 1.0
+O: 0 3 : 191 : 6 7 : 1.0
+O: 0 4 : 188 : 6 7 : 1.0
+O: 0 4 : 189 : 6 7 : 1.0
+O: 0 4 : 190 : 6 7 : 1.0
+O: 0 4 : 191 : 6 7 : 1.0
+O: 0 5 : 188 : 6 7 : 1.0
+O: 0 5 : 189 : 6 7 : 1.0
+O: 0 5 : 190 : 6 7 : 1.0
+O: 0 5 : 191 : 6 7 : 1.0
+O: 1 0 : 188 : 6 7 : 1.0
+O: 1 0 : 189 : 6 7 : 1.0
+O: 1 0 : 190 : 6 7 : 1.0
+O: 1 0 : 191 : 6 7 : 1.0
+O: 1 1 : 188 : 6 7 : 1.0
+O: 1 1 : 189 : 6 7 : 1.0
+O: 1 1 : 190 : 6 7 : 1.0
+O: 1 1 : 191 : 6 7 : 1.0
+O: 1 2 : 188 : 6 7 : 1.0
+O: 1 2 : 189 : 6 7 : 1.0
+O: 1 2 : 190 : 6 7 : 1.0
+O: 1 2 : 191 : 6 7 : 1.0
+O: 1 3 : 188 : 6 7 : 1.0
+O: 1 3 : 189 : 6 7 : 1.0
+O: 1 3 : 190 : 6 7 : 1.0
+O: 1 3 : 191 : 6 7 : 1.0
+O: 1 4 : 188 : 6 7 : 1.0
+O: 1 4 : 189 : 6 7 : 1.0
+O: 1 4 : 190 : 6 7 : 1.0
+O: 1 4 : 191 : 6 7 : 1.0
+O: 1 5 : 188 : 6 7 : 1.0
+O: 1 5 : 189 : 6 7 : 1.0
+O: 1 5 : 190 : 6 7 : 1.0
+O: 1 5 : 191 : 6 7 : 1.0
+O: 2 0 : 188 : 6 7 : 1.0
+O: 2 0 : 189 : 6 7 : 1.0
+O: 2 0 : 190 : 6 7 : 1.0
+O: 2 0 : 191 : 6 7 : 1.0
+O: 2 1 : 188 : 6 7 : 1.0
+O: 2 1 : 189 : 6 7 : 1.0
+O: 2 1 : 190 : 6 7 : 1.0
+O: 2 1 : 191 : 6 7 : 1.0
+O: 2 2 : 188 : 6 7 : 1.0
+O: 2 2 : 189 : 6 7 : 1.0
+O: 2 2 : 190 : 6 7 : 1.0
+O: 2 2 : 191 : 6 7 : 1.0
+O: 2 3 : 188 : 6 7 : 1.0
+O: 2 3 : 189 : 6 7 : 1.0
+O: 2 3 : 190 : 6 7 : 1.0
+O: 2 3 : 191 : 6 7 : 1.0
+O: 2 4 : 188 : 6 7 : 1.0
+O: 2 4 : 189 : 6 7 : 1.0
+O: 2 4 : 190 : 6 7 : 1.0
+O: 2 4 : 191 : 6 7 : 1.0
+O: 2 5 : 188 : 6 7 : 1.0
+O: 2 5 : 189 : 6 7 : 1.0
+O: 2 5 : 190 : 6 7 : 1.0
+O: 2 5 : 191 : 6 7 : 1.0
+O: 3 0 : 188 : 6 7 : 1.0
+O: 3 0 : 189 : 6 7 : 1.0
+O: 3 0 : 190 : 6 7 : 1.0
+O: 3 0 : 191 : 6 7 : 1.0
+O: 3 1 : 188 : 6 7 : 1.0
+O: 3 1 : 189 : 6 7 : 1.0
+O: 3 1 : 190 : 6 7 : 1.0
+O: 3 1 : 191 : 6 7 : 1.0
+O: 3 2 : 188 : 6 7 : 1.0
+O: 3 2 : 189 : 6 7 : 1.0
+O: 3 2 : 190 : 6 7 : 1.0
+O: 3 2 : 191 : 6 7 : 1.0
+O: 3 3 : 188 : 6 7 : 1.0
+O: 3 3 : 189 : 6 7 : 1.0
+O: 3 3 : 190 : 6 7 : 1.0
+O: 3 3 : 191 : 6 7 : 1.0
+O: 3 4 : 188 : 6 7 : 1.0
+O: 3 4 : 189 : 6 7 : 1.0
+O: 3 4 : 190 : 6 7 : 1.0
+O: 3 4 : 191 : 6 7 : 1.0
+O: 3 5 : 188 : 6 7 : 1.0
+O: 3 5 : 189 : 6 7 : 1.0
+O: 3 5 : 190 : 6 7 : 1.0
+O: 3 5 : 191 : 6 7 : 1.0
+O: 4 0 : 188 : 6 7 : 1.0
+O: 4 0 : 189 : 6 7 : 1.0
+O: 4 0 : 190 : 6 7 : 1.0
+O: 4 0 : 191 : 6 7 : 1.0
+O: 4 1 : 188 : 6 7 : 1.0
+O: 4 1 : 189 : 6 7 : 1.0
+O: 4 1 : 190 : 6 7 : 1.0
+O: 4 1 : 191 : 6 7 : 1.0
+O: 4 2 : 188 : 6 7 : 1.0
+O: 4 2 : 189 : 6 7 : 1.0
+O: 4 2 : 190 : 6 7 : 1.0
+O: 4 2 : 191 : 6 7 : 1.0
+O: 4 3 : 188 : 6 7 : 1.0
+O: 4 3 : 189 : 6 7 : 1.0
+O: 4 3 : 190 : 6 7 : 1.0
+O: 4 3 : 191 : 6 7 : 1.0
+O: 4 4 : 188 : 6 7 : 1.0
+O: 4 4 : 189 : 6 7 : 1.0
+O: 4 4 : 190 : 6 7 : 1.0
+O: 4 4 : 191 : 6 7 : 1.0
+O: 4 5 : 188 : 6 7 : 1.0
+O: 4 5 : 189 : 6 7 : 1.0
+O: 4 5 : 190 : 6 7 : 1.0
+O: 4 5 : 191 : 6 7 : 1.0
+O: 5 0 : 188 : 6 7 : 1.0
+O: 5 0 : 189 : 6 7 : 1.0
+O: 5 0 : 190 : 6 7 : 1.0
+O: 5 0 : 191 : 6 7 : 1.0
+O: 5 1 : 188 : 6 7 : 1.0
+O: 5 1 : 189 : 6 7 : 1.0
+O: 5 1 : 190 : 6 7 : 1.0
+O: 5 1 : 191 : 6 7 : 1.0
+O: 5 2 : 188 : 6 7 : 1.0
+O: 5 2 : 189 : 6 7 : 1.0
+O: 5 2 : 190 : 6 7 : 1.0
+O: 5 2 : 191 : 6 7 : 1.0
+O: 5 3 : 188 : 6 7 : 1.0
+O: 5 3 : 189 : 6 7 : 1.0
+O: 5 3 : 190 : 6 7 : 1.0
+O: 5 3 : 191 : 6 7 : 1.0
+O: 5 4 : 188 : 6 7 : 1.0
+O: 5 4 : 189 : 6 7 : 1.0
+O: 5 4 : 190 : 6 7 : 1.0
+O: 5 4 : 191 : 6 7 : 1.0
+O: 5 5 : 188 : 6 7 : 1.0
+O: 5 5 : 189 : 6 7 : 1.0
+O: 5 5 : 190 : 6 7 : 1.0
+O: 5 5 : 191 : 6 7 : 1.0
+O: 0 0 : 200 : 7 0 : 1.0
+O: 0 0 : 202 : 7 0 : 1.0
+O: 0 0 : 204 : 7 0 : 1.0
+O: 0 0 : 206 : 7 0 : 1.0
+O: 0 1 : 200 : 7 0 : 1.0
+O: 0 1 : 202 : 7 0 : 1.0
+O: 0 1 : 204 : 7 0 : 1.0
+O: 0 1 : 206 : 7 0 : 1.0
+O: 0 2 : 200 : 7 0 : 1.0
+O: 0 2 : 202 : 7 0 : 1.0
+O: 0 2 : 204 : 7 0 : 1.0
+O: 0 2 : 206 : 7 0 : 1.0
+O: 0 3 : 200 : 7 0 : 1.0
+O: 0 3 : 202 : 7 0 : 1.0
+O: 0 3 : 204 : 7 0 : 1.0
+O: 0 3 : 206 : 7 0 : 1.0
+O: 0 4 : 200 : 7 0 : 1.0
+O: 0 4 : 202 : 7 0 : 1.0
+O: 0 4 : 204 : 7 0 : 1.0
+O: 0 4 : 206 : 7 0 : 1.0
+O: 0 5 : 200 : 7 0 : 1.0
+O: 0 5 : 202 : 7 0 : 1.0
+O: 0 5 : 204 : 7 0 : 1.0
+O: 0 5 : 206 : 7 0 : 1.0
+O: 1 0 : 200 : 7 0 : 1.0
+O: 1 0 : 202 : 7 0 : 1.0
+O: 1 0 : 204 : 7 0 : 1.0
+O: 1 0 : 206 : 7 0 : 1.0
+O: 1 1 : 200 : 7 0 : 1.0
+O: 1 1 : 202 : 7 0 : 1.0
+O: 1 1 : 204 : 7 0 : 1.0
+O: 1 1 : 206 : 7 0 : 1.0
+O: 1 2 : 200 : 7 0 : 1.0
+O: 1 2 : 202 : 7 0 : 1.0
+O: 1 2 : 204 : 7 0 : 1.0
+O: 1 2 : 206 : 7 0 : 1.0
+O: 1 3 : 200 : 7 0 : 1.0
+O: 1 3 : 202 : 7 0 : 1.0
+O: 1 3 : 204 : 7 0 : 1.0
+O: 1 3 : 206 : 7 0 : 1.0
+O: 1 4 : 200 : 7 0 : 1.0
+O: 1 4 : 202 : 7 0 : 1.0
+O: 1 4 : 204 : 7 0 : 1.0
+O: 1 4 : 206 : 7 0 : 1.0
+O: 1 5 : 200 : 7 0 : 1.0
+O: 1 5 : 202 : 7 0 : 1.0
+O: 1 5 : 204 : 7 0 : 1.0
+O: 1 5 : 206 : 7 0 : 1.0
+O: 2 0 : 200 : 7 0 : 1.0
+O: 2 0 : 202 : 7 0 : 1.0
+O: 2 0 : 204 : 7 0 : 1.0
+O: 2 0 : 206 : 7 0 : 1.0
+O: 2 1 : 200 : 7 0 : 1.0
+O: 2 1 : 202 : 7 0 : 1.0
+O: 2 1 : 204 : 7 0 : 1.0
+O: 2 1 : 206 : 7 0 : 1.0
+O: 2 2 : 200 : 7 0 : 1.0
+O: 2 2 : 202 : 7 0 : 1.0
+O: 2 2 : 204 : 7 0 : 1.0
+O: 2 2 : 206 : 7 0 : 1.0
+O: 2 3 : 200 : 7 0 : 1.0
+O: 2 3 : 202 : 7 0 : 1.0
+O: 2 3 : 204 : 7 0 : 1.0
+O: 2 3 : 206 : 7 0 : 1.0
+O: 2 4 : 200 : 7 0 : 1.0
+O: 2 4 : 202 : 7 0 : 1.0
+O: 2 4 : 204 : 7 0 : 1.0
+O: 2 4 : 206 : 7 0 : 1.0
+O: 2 5 : 200 : 7 0 : 1.0
+O: 2 5 : 202 : 7 0 : 1.0
+O: 2 5 : 204 : 7 0 : 1.0
+O: 2 5 : 206 : 7 0 : 1.0
+O: 3 0 : 200 : 7 0 : 1.0
+O: 3 0 : 202 : 7 0 : 1.0
+O: 3 0 : 204 : 7 0 : 1.0
+O: 3 0 : 206 : 7 0 : 1.0
+O: 3 1 : 200 : 7 0 : 1.0
+O: 3 1 : 202 : 7 0 : 1.0
+O: 3 1 : 204 : 7 0 : 1.0
+O: 3 1 : 206 : 7 0 : 1.0
+O: 3 2 : 200 : 7 0 : 1.0
+O: 3 2 : 202 : 7 0 : 1.0
+O: 3 2 : 204 : 7 0 : 1.0
+O: 3 2 : 206 : 7 0 : 1.0
+O: 3 3 : 200 : 7 0 : 1.0
+O: 3 3 : 202 : 7 0 : 1.0
+O: 3 3 : 204 : 7 0 : 1.0
+O: 3 3 : 206 : 7 0 : 1.0
+O: 3 4 : 200 : 7 0 : 1.0
+O: 3 4 : 202 : 7 0 : 1.0
+O: 3 4 : 204 : 7 0 : 1.0
+O: 3 4 : 206 : 7 0 : 1.0
+O: 3 5 : 200 : 7 0 : 1.0
+O: 3 5 : 202 : 7 0 : 1.0
+O: 3 5 : 204 : 7 0 : 1.0
+O: 3 5 : 206 : 7 0 : 1.0
+O: 4 0 : 200 : 7 0 : 1.0
+O: 4 0 : 202 : 7 0 : 1.0
+O: 4 0 : 204 : 7 0 : 1.0
+O: 4 0 : 206 : 7 0 : 1.0
+O: 4 1 : 200 : 7 0 : 1.0
+O: 4 1 : 202 : 7 0 : 1.0
+O: 4 1 : 204 : 7 0 : 1.0
+O: 4 1 : 206 : 7 0 : 1.0
+O: 4 2 : 200 : 7 0 : 1.0
+O: 4 2 : 202 : 7 0 : 1.0
+O: 4 2 : 204 : 7 0 : 1.0
+O: 4 2 : 206 : 7 0 : 1.0
+O: 4 3 : 200 : 7 0 : 1.0
+O: 4 3 : 202 : 7 0 : 1.0
+O: 4 3 : 204 : 7 0 : 1.0
+O: 4 3 : 206 : 7 0 : 1.0
+O: 4 4 : 200 : 7 0 : 1.0
+O: 4 4 : 202 : 7 0 : 1.0
+O: 4 4 : 204 : 7 0 : 1.0
+O: 4 4 : 206 : 7 0 : 1.0
+O: 4 5 : 200 : 7 0 : 1.0
+O: 4 5 : 202 : 7 0 : 1.0
+O: 4 5 : 204 : 7 0 : 1.0
+O: 4 5 : 206 : 7 0 : 1.0
+O: 5 0 : 200 : 7 0 : 1.0
+O: 5 0 : 202 : 7 0 : 1.0
+O: 5 0 : 204 : 7 0 : 1.0
+O: 5 0 : 206 : 7 0 : 1.0
+O: 5 1 : 200 : 7 0 : 1.0
+O: 5 1 : 202 : 7 0 : 1.0
+O: 5 1 : 204 : 7 0 : 1.0
+O: 5 1 : 206 : 7 0 : 1.0
+O: 5 2 : 200 : 7 0 : 1.0
+O: 5 2 : 202 : 7 0 : 1.0
+O: 5 2 : 204 : 7 0 : 1.0
+O: 5 2 : 206 : 7 0 : 1.0
+O: 5 3 : 200 : 7 0 : 1.0
+O: 5 3 : 202 : 7 0 : 1.0
+O: 5 3 : 204 : 7 0 : 1.0
+O: 5 3 : 206 : 7 0 : 1.0
+O: 5 4 : 200 : 7 0 : 1.0
+O: 5 4 : 202 : 7 0 : 1.0
+O: 5 4 : 204 : 7 0 : 1.0
+O: 5 4 : 206 : 7 0 : 1.0
+O: 5 5 : 200 : 7 0 : 1.0
+O: 5 5 : 202 : 7 0 : 1.0
+O: 5 5 : 204 : 7 0 : 1.0
+O: 5 5 : 206 : 7 0 : 1.0
+O: 0 0 : 216 : 7 1 : 1.0
+O: 0 0 : 217 : 7 1 : 1.0
+O: 0 0 : 220 : 7 1 : 1.0
+O: 0 0 : 221 : 7 1 : 1.0
+O: 0 1 : 216 : 7 1 : 1.0
+O: 0 1 : 217 : 7 1 : 1.0
+O: 0 1 : 220 : 7 1 : 1.0
+O: 0 1 : 221 : 7 1 : 1.0
+O: 0 2 : 216 : 7 1 : 1.0
+O: 0 2 : 217 : 7 1 : 1.0
+O: 0 2 : 220 : 7 1 : 1.0
+O: 0 2 : 221 : 7 1 : 1.0
+O: 0 3 : 216 : 7 1 : 1.0
+O: 0 3 : 217 : 7 1 : 1.0
+O: 0 3 : 220 : 7 1 : 1.0
+O: 0 3 : 221 : 7 1 : 1.0
+O: 0 4 : 216 : 7 1 : 1.0
+O: 0 4 : 217 : 7 1 : 1.0
+O: 0 4 : 220 : 7 1 : 1.0
+O: 0 4 : 221 : 7 1 : 1.0
+O: 0 5 : 216 : 7 1 : 1.0
+O: 0 5 : 217 : 7 1 : 1.0
+O: 0 5 : 220 : 7 1 : 1.0
+O: 0 5 : 221 : 7 1 : 1.0
+O: 1 0 : 216 : 7 1 : 1.0
+O: 1 0 : 217 : 7 1 : 1.0
+O: 1 0 : 220 : 7 1 : 1.0
+O: 1 0 : 221 : 7 1 : 1.0
+O: 1 1 : 216 : 7 1 : 1.0
+O: 1 1 : 217 : 7 1 : 1.0
+O: 1 1 : 220 : 7 1 : 1.0
+O: 1 1 : 221 : 7 1 : 1.0
+O: 1 2 : 216 : 7 1 : 1.0
+O: 1 2 : 217 : 7 1 : 1.0
+O: 1 2 : 220 : 7 1 : 1.0
+O: 1 2 : 221 : 7 1 : 1.0
+O: 1 3 : 216 : 7 1 : 1.0
+O: 1 3 : 217 : 7 1 : 1.0
+O: 1 3 : 220 : 7 1 : 1.0
+O: 1 3 : 221 : 7 1 : 1.0
+O: 1 4 : 216 : 7 1 : 1.0
+O: 1 4 : 217 : 7 1 : 1.0
+O: 1 4 : 220 : 7 1 : 1.0
+O: 1 4 : 221 : 7 1 : 1.0
+O: 1 5 : 216 : 7 1 : 1.0
+O: 1 5 : 217 : 7 1 : 1.0
+O: 1 5 : 220 : 7 1 : 1.0
+O: 1 5 : 221 : 7 1 : 1.0
+O: 2 0 : 216 : 7 1 : 1.0
+O: 2 0 : 217 : 7 1 : 1.0
+O: 2 0 : 220 : 7 1 : 1.0
+O: 2 0 : 221 : 7 1 : 1.0
+O: 2 1 : 216 : 7 1 : 1.0
+O: 2 1 : 217 : 7 1 : 1.0
+O: 2 1 : 220 : 7 1 : 1.0
+O: 2 1 : 221 : 7 1 : 1.0
+O: 2 2 : 216 : 7 1 : 1.0
+O: 2 2 : 217 : 7 1 : 1.0
+O: 2 2 : 220 : 7 1 : 1.0
+O: 2 2 : 221 : 7 1 : 1.0
+O: 2 3 : 216 : 7 1 : 1.0
+O: 2 3 : 217 : 7 1 : 1.0
+O: 2 3 : 220 : 7 1 : 1.0
+O: 2 3 : 221 : 7 1 : 1.0
+O: 2 4 : 216 : 7 1 : 1.0
+O: 2 4 : 217 : 7 1 : 1.0
+O: 2 4 : 220 : 7 1 : 1.0
+O: 2 4 : 221 : 7 1 : 1.0
+O: 2 5 : 216 : 7 1 : 1.0
+O: 2 5 : 217 : 7 1 : 1.0
+O: 2 5 : 220 : 7 1 : 1.0
+O: 2 5 : 221 : 7 1 : 1.0
+O: 3 0 : 216 : 7 1 : 1.0
+O: 3 0 : 217 : 7 1 : 1.0
+O: 3 0 : 220 : 7 1 : 1.0
+O: 3 0 : 221 : 7 1 : 1.0
+O: 3 1 : 216 : 7 1 : 1.0
+O: 3 1 : 217 : 7 1 : 1.0
+O: 3 1 : 220 : 7 1 : 1.0
+O: 3 1 : 221 : 7 1 : 1.0
+O: 3 2 : 216 : 7 1 : 1.0
+O: 3 2 : 217 : 7 1 : 1.0
+O: 3 2 : 220 : 7 1 : 1.0
+O: 3 2 : 221 : 7 1 : 1.0
+O: 3 3 : 216 : 7 1 : 1.0
+O: 3 3 : 217 : 7 1 : 1.0
+O: 3 3 : 220 : 7 1 : 1.0
+O: 3 3 : 221 : 7 1 : 1.0
+O: 3 4 : 216 : 7 1 : 1.0
+O: 3 4 : 217 : 7 1 : 1.0
+O: 3 4 : 220 : 7 1 : 1.0
+O: 3 4 : 221 : 7 1 : 1.0
+O: 3 5 : 216 : 7 1 : 1.0
+O: 3 5 : 217 : 7 1 : 1.0
+O: 3 5 : 220 : 7 1 : 1.0
+O: 3 5 : 221 : 7 1 : 1.0
+O: 4 0 : 216 : 7 1 : 1.0
+O: 4 0 : 217 : 7 1 : 1.0
+O: 4 0 : 220 : 7 1 : 1.0
+O: 4 0 : 221 : 7 1 : 1.0
+O: 4 1 : 216 : 7 1 : 1.0
+O: 4 1 : 217 : 7 1 : 1.0
+O: 4 1 : 220 : 7 1 : 1.0
+O: 4 1 : 221 : 7 1 : 1.0
+O: 4 2 : 216 : 7 1 : 1.0
+O: 4 2 : 217 : 7 1 : 1.0
+O: 4 2 : 220 : 7 1 : 1.0
+O: 4 2 : 221 : 7 1 : 1.0
+O: 4 3 : 216 : 7 1 : 1.0
+O: 4 3 : 217 : 7 1 : 1.0
+O: 4 3 : 220 : 7 1 : 1.0
+O: 4 3 : 221 : 7 1 : 1.0
+O: 4 4 : 216 : 7 1 : 1.0
+O: 4 4 : 217 : 7 1 : 1.0
+O: 4 4 : 220 : 7 1 : 1.0
+O: 4 4 : 221 : 7 1 : 1.0
+O: 4 5 : 216 : 7 1 : 1.0
+O: 4 5 : 217 : 7 1 : 1.0
+O: 4 5 : 220 : 7 1 : 1.0
+O: 4 5 : 221 : 7 1 : 1.0
+O: 5 0 : 216 : 7 1 : 1.0
+O: 5 0 : 217 : 7 1 : 1.0
+O: 5 0 : 220 : 7 1 : 1.0
+O: 5 0 : 221 : 7 1 : 1.0
+O: 5 1 : 216 : 7 1 : 1.0
+O: 5 1 : 217 : 7 1 : 1.0
+O: 5 1 : 220 : 7 1 : 1.0
+O: 5 1 : 221 : 7 1 : 1.0
+O: 5 2 : 216 : 7 1 : 1.0
+O: 5 2 : 217 : 7 1 : 1.0
+O: 5 2 : 220 : 7 1 : 1.0
+O: 5 2 : 221 : 7 1 : 1.0
+O: 5 3 : 216 : 7 1 : 1.0
+O: 5 3 : 217 : 7 1 : 1.0
+O: 5 3 : 220 : 7 1 : 1.0
+O: 5 3 : 221 : 7 1 : 1.0
+O: 5 4 : 216 : 7 1 : 1.0
+O: 5 4 : 217 : 7 1 : 1.0
+O: 5 4 : 220 : 7 1 : 1.0
+O: 5 4 : 221 : 7 1 : 1.0
+O: 5 5 : 216 : 7 1 : 1.0
+O: 5 5 : 217 : 7 1 : 1.0
+O: 5 5 : 220 : 7 1 : 1.0
+O: 5 5 : 221 : 7 1 : 1.0
+O: 0 0 : 232 : 7 2 : 1.0
+O: 0 0 : 233 : 7 2 : 1.0
+O: 0 0 : 234 : 7 2 : 1.0
+O: 0 0 : 235 : 7 2 : 1.0
+O: 0 1 : 232 : 7 2 : 1.0
+O: 0 1 : 233 : 7 2 : 1.0
+O: 0 1 : 234 : 7 2 : 1.0
+O: 0 1 : 235 : 7 2 : 1.0
+O: 0 2 : 232 : 7 2 : 1.0
+O: 0 2 : 233 : 7 2 : 1.0
+O: 0 2 : 234 : 7 2 : 1.0
+O: 0 2 : 235 : 7 2 : 1.0
+O: 0 3 : 232 : 7 2 : 1.0
+O: 0 3 : 233 : 7 2 : 1.0
+O: 0 3 : 234 : 7 2 : 1.0
+O: 0 3 : 235 : 7 2 : 1.0
+O: 0 4 : 232 : 7 2 : 1.0
+O: 0 4 : 233 : 7 2 : 1.0
+O: 0 4 : 234 : 7 2 : 1.0
+O: 0 4 : 235 : 7 2 : 1.0
+O: 0 5 : 232 : 7 2 : 1.0
+O: 0 5 : 233 : 7 2 : 1.0
+O: 0 5 : 234 : 7 2 : 1.0
+O: 0 5 : 235 : 7 2 : 1.0
+O: 1 0 : 232 : 7 2 : 1.0
+O: 1 0 : 233 : 7 2 : 1.0
+O: 1 0 : 234 : 7 2 : 1.0
+O: 1 0 : 235 : 7 2 : 1.0
+O: 1 1 : 232 : 7 2 : 1.0
+O: 1 1 : 233 : 7 2 : 1.0
+O: 1 1 : 234 : 7 2 : 1.0
+O: 1 1 : 235 : 7 2 : 1.0
+O: 1 2 : 232 : 7 2 : 1.0
+O: 1 2 : 233 : 7 2 : 1.0
+O: 1 2 : 234 : 7 2 : 1.0
+O: 1 2 : 235 : 7 2 : 1.0
+O: 1 3 : 232 : 7 2 : 1.0
+O: 1 3 : 233 : 7 2 : 1.0
+O: 1 3 : 234 : 7 2 : 1.0
+O: 1 3 : 235 : 7 2 : 1.0
+O: 1 4 : 232 : 7 2 : 1.0
+O: 1 4 : 233 : 7 2 : 1.0
+O: 1 4 : 234 : 7 2 : 1.0
+O: 1 4 : 235 : 7 2 : 1.0
+O: 1 5 : 232 : 7 2 : 1.0
+O: 1 5 : 233 : 7 2 : 1.0
+O: 1 5 : 234 : 7 2 : 1.0
+O: 1 5 : 235 : 7 2 : 1.0
+O: 2 0 : 232 : 7 2 : 1.0
+O: 2 0 : 233 : 7 2 : 1.0
+O: 2 0 : 234 : 7 2 : 1.0
+O: 2 0 : 235 : 7 2 : 1.0
+O: 2 1 : 232 : 7 2 : 1.0
+O: 2 1 : 233 : 7 2 : 1.0
+O: 2 1 : 234 : 7 2 : 1.0
+O: 2 1 : 235 : 7 2 : 1.0
+O: 2 2 : 232 : 7 2 : 1.0
+O: 2 2 : 233 : 7 2 : 1.0
+O: 2 2 : 234 : 7 2 : 1.0
+O: 2 2 : 235 : 7 2 : 1.0
+O: 2 3 : 232 : 7 2 : 1.0
+O: 2 3 : 233 : 7 2 : 1.0
+O: 2 3 : 234 : 7 2 : 1.0
+O: 2 3 : 235 : 7 2 : 1.0
+O: 2 4 : 232 : 7 2 : 1.0
+O: 2 4 : 233 : 7 2 : 1.0
+O: 2 4 : 234 : 7 2 : 1.0
+O: 2 4 : 235 : 7 2 : 1.0
+O: 2 5 : 232 : 7 2 : 1.0
+O: 2 5 : 233 : 7 2 : 1.0
+O: 2 5 : 234 : 7 2 : 1.0
+O: 2 5 : 235 : 7 2 : 1.0
+O: 3 0 : 232 : 7 2 : 1.0
+O: 3 0 : 233 : 7 2 : 1.0
+O: 3 0 : 234 : 7 2 : 1.0
+O: 3 0 : 235 : 7 2 : 1.0
+O: 3 1 : 232 : 7 2 : 1.0
+O: 3 1 : 233 : 7 2 : 1.0
+O: 3 1 : 234 : 7 2 : 1.0
+O: 3 1 : 235 : 7 2 : 1.0
+O: 3 2 : 232 : 7 2 : 1.0
+O: 3 2 : 233 : 7 2 : 1.0
+O: 3 2 : 234 : 7 2 : 1.0
+O: 3 2 : 235 : 7 2 : 1.0
+O: 3 3 : 232 : 7 2 : 1.0
+O: 3 3 : 233 : 7 2 : 1.0
+O: 3 3 : 234 : 7 2 : 1.0
+O: 3 3 : 235 : 7 2 : 1.0
+O: 3 4 : 232 : 7 2 : 1.0
+O: 3 4 : 233 : 7 2 : 1.0
+O: 3 4 : 234 : 7 2 : 1.0
+O: 3 4 : 235 : 7 2 : 1.0
+O: 3 5 : 232 : 7 2 : 1.0
+O: 3 5 : 233 : 7 2 : 1.0
+O: 3 5 : 234 : 7 2 : 1.0
+O: 3 5 : 235 : 7 2 : 1.0
+O: 4 0 : 232 : 7 2 : 1.0
+O: 4 0 : 233 : 7 2 : 1.0
+O: 4 0 : 234 : 7 2 : 1.0
+O: 4 0 : 235 : 7 2 : 1.0
+O: 4 1 : 232 : 7 2 : 1.0
+O: 4 1 : 233 : 7 2 : 1.0
+O: 4 1 : 234 : 7 2 : 1.0
+O: 4 1 : 235 : 7 2 : 1.0
+O: 4 2 : 232 : 7 2 : 1.0
+O: 4 2 : 233 : 7 2 : 1.0
+O: 4 2 : 234 : 7 2 : 1.0
+O: 4 2 : 235 : 7 2 : 1.0
+O: 4 3 : 232 : 7 2 : 1.0
+O: 4 3 : 233 : 7 2 : 1.0
+O: 4 3 : 234 : 7 2 : 1.0
+O: 4 3 : 235 : 7 2 : 1.0
+O: 4 4 : 232 : 7 2 : 1.0
+O: 4 4 : 233 : 7 2 : 1.0
+O: 4 4 : 234 : 7 2 : 1.0
+O: 4 4 : 235 : 7 2 : 1.0
+O: 4 5 : 232 : 7 2 : 1.0
+O: 4 5 : 233 : 7 2 : 1.0
+O: 4 5 : 234 : 7 2 : 1.0
+O: 4 5 : 235 : 7 2 : 1.0
+O: 5 0 : 232 : 7 2 : 1.0
+O: 5 0 : 233 : 7 2 : 1.0
+O: 5 0 : 234 : 7 2 : 1.0
+O: 5 0 : 235 : 7 2 : 1.0
+O: 5 1 : 232 : 7 2 : 1.0
+O: 5 1 : 233 : 7 2 : 1.0
+O: 5 1 : 234 : 7 2 : 1.0
+O: 5 1 : 235 : 7 2 : 1.0
+O: 5 2 : 232 : 7 2 : 1.0
+O: 5 2 : 233 : 7 2 : 1.0
+O: 5 2 : 234 : 7 2 : 1.0
+O: 5 2 : 235 : 7 2 : 1.0
+O: 5 3 : 232 : 7 2 : 1.0
+O: 5 3 : 233 : 7 2 : 1.0
+O: 5 3 : 234 : 7 2 : 1.0
+O: 5 3 : 235 : 7 2 : 1.0
+O: 5 4 : 232 : 7 2 : 1.0
+O: 5 4 : 233 : 7 2 : 1.0
+O: 5 4 : 234 : 7 2 : 1.0
+O: 5 4 : 235 : 7 2 : 1.0
+O: 5 5 : 232 : 7 2 : 1.0
+O: 5 5 : 233 : 7 2 : 1.0
+O: 5 5 : 234 : 7 2 : 1.0
+O: 5 5 : 235 : 7 2 : 1.0
+O: 0 0 : 201 : 7 4 : 1.0
+O: 0 0 : 203 : 7 4 : 1.0
+O: 0 0 : 205 : 7 4 : 1.0
+O: 0 0 : 207 : 7 4 : 1.0
+O: 0 1 : 201 : 7 4 : 1.0
+O: 0 1 : 203 : 7 4 : 1.0
+O: 0 1 : 205 : 7 4 : 1.0
+O: 0 1 : 207 : 7 4 : 1.0
+O: 0 2 : 201 : 7 4 : 1.0
+O: 0 2 : 203 : 7 4 : 1.0
+O: 0 2 : 205 : 7 4 : 1.0
+O: 0 2 : 207 : 7 4 : 1.0
+O: 0 3 : 201 : 7 4 : 1.0
+O: 0 3 : 203 : 7 4 : 1.0
+O: 0 3 : 205 : 7 4 : 1.0
+O: 0 3 : 207 : 7 4 : 1.0
+O: 0 4 : 201 : 7 4 : 1.0
+O: 0 4 : 203 : 7 4 : 1.0
+O: 0 4 : 205 : 7 4 : 1.0
+O: 0 4 : 207 : 7 4 : 1.0
+O: 0 5 : 201 : 7 4 : 1.0
+O: 0 5 : 203 : 7 4 : 1.0
+O: 0 5 : 205 : 7 4 : 1.0
+O: 0 5 : 207 : 7 4 : 1.0
+O: 1 0 : 201 : 7 4 : 1.0
+O: 1 0 : 203 : 7 4 : 1.0
+O: 1 0 : 205 : 7 4 : 1.0
+O: 1 0 : 207 : 7 4 : 1.0
+O: 1 1 : 201 : 7 4 : 1.0
+O: 1 1 : 203 : 7 4 : 1.0
+O: 1 1 : 205 : 7 4 : 1.0
+O: 1 1 : 207 : 7 4 : 1.0
+O: 1 2 : 201 : 7 4 : 1.0
+O: 1 2 : 203 : 7 4 : 1.0
+O: 1 2 : 205 : 7 4 : 1.0
+O: 1 2 : 207 : 7 4 : 1.0
+O: 1 3 : 201 : 7 4 : 1.0
+O: 1 3 : 203 : 7 4 : 1.0
+O: 1 3 : 205 : 7 4 : 1.0
+O: 1 3 : 207 : 7 4 : 1.0
+O: 1 4 : 201 : 7 4 : 1.0
+O: 1 4 : 203 : 7 4 : 1.0
+O: 1 4 : 205 : 7 4 : 1.0
+O: 1 4 : 207 : 7 4 : 1.0
+O: 1 5 : 201 : 7 4 : 1.0
+O: 1 5 : 203 : 7 4 : 1.0
+O: 1 5 : 205 : 7 4 : 1.0
+O: 1 5 : 207 : 7 4 : 1.0
+O: 2 0 : 201 : 7 4 : 1.0
+O: 2 0 : 203 : 7 4 : 1.0
+O: 2 0 : 205 : 7 4 : 1.0
+O: 2 0 : 207 : 7 4 : 1.0
+O: 2 1 : 201 : 7 4 : 1.0
+O: 2 1 : 203 : 7 4 : 1.0
+O: 2 1 : 205 : 7 4 : 1.0
+O: 2 1 : 207 : 7 4 : 1.0
+O: 2 2 : 201 : 7 4 : 1.0
+O: 2 2 : 203 : 7 4 : 1.0
+O: 2 2 : 205 : 7 4 : 1.0
+O: 2 2 : 207 : 7 4 : 1.0
+O: 2 3 : 201 : 7 4 : 1.0
+O: 2 3 : 203 : 7 4 : 1.0
+O: 2 3 : 205 : 7 4 : 1.0
+O: 2 3 : 207 : 7 4 : 1.0
+O: 2 4 : 201 : 7 4 : 1.0
+O: 2 4 : 203 : 7 4 : 1.0
+O: 2 4 : 205 : 7 4 : 1.0
+O: 2 4 : 207 : 7 4 : 1.0
+O: 2 5 : 201 : 7 4 : 1.0
+O: 2 5 : 203 : 7 4 : 1.0
+O: 2 5 : 205 : 7 4 : 1.0
+O: 2 5 : 207 : 7 4 : 1.0
+O: 3 0 : 201 : 7 4 : 1.0
+O: 3 0 : 203 : 7 4 : 1.0
+O: 3 0 : 205 : 7 4 : 1.0
+O: 3 0 : 207 : 7 4 : 1.0
+O: 3 1 : 201 : 7 4 : 1.0
+O: 3 1 : 203 : 7 4 : 1.0
+O: 3 1 : 205 : 7 4 : 1.0
+O: 3 1 : 207 : 7 4 : 1.0
+O: 3 2 : 201 : 7 4 : 1.0
+O: 3 2 : 203 : 7 4 : 1.0
+O: 3 2 : 205 : 7 4 : 1.0
+O: 3 2 : 207 : 7 4 : 1.0
+O: 3 3 : 201 : 7 4 : 1.0
+O: 3 3 : 203 : 7 4 : 1.0
+O: 3 3 : 205 : 7 4 : 1.0
+O: 3 3 : 207 : 7 4 : 1.0
+O: 3 4 : 201 : 7 4 : 1.0
+O: 3 4 : 203 : 7 4 : 1.0
+O: 3 4 : 205 : 7 4 : 1.0
+O: 3 4 : 207 : 7 4 : 1.0
+O: 3 5 : 201 : 7 4 : 1.0
+O: 3 5 : 203 : 7 4 : 1.0
+O: 3 5 : 205 : 7 4 : 1.0
+O: 3 5 : 207 : 7 4 : 1.0
+O: 4 0 : 201 : 7 4 : 1.0
+O: 4 0 : 203 : 7 4 : 1.0
+O: 4 0 : 205 : 7 4 : 1.0
+O: 4 0 : 207 : 7 4 : 1.0
+O: 4 1 : 201 : 7 4 : 1.0
+O: 4 1 : 203 : 7 4 : 1.0
+O: 4 1 : 205 : 7 4 : 1.0
+O: 4 1 : 207 : 7 4 : 1.0
+O: 4 2 : 201 : 7 4 : 1.0
+O: 4 2 : 203 : 7 4 : 1.0
+O: 4 2 : 205 : 7 4 : 1.0
+O: 4 2 : 207 : 7 4 : 1.0
+O: 4 3 : 201 : 7 4 : 1.0
+O: 4 3 : 203 : 7 4 : 1.0
+O: 4 3 : 205 : 7 4 : 1.0
+O: 4 3 : 207 : 7 4 : 1.0
+O: 4 4 : 201 : 7 4 : 1.0
+O: 4 4 : 203 : 7 4 : 1.0
+O: 4 4 : 205 : 7 4 : 1.0
+O: 4 4 : 207 : 7 4 : 1.0
+O: 4 5 : 201 : 7 4 : 1.0
+O: 4 5 : 203 : 7 4 : 1.0
+O: 4 5 : 205 : 7 4 : 1.0
+O: 4 5 : 207 : 7 4 : 1.0
+O: 5 0 : 201 : 7 4 : 1.0
+O: 5 0 : 203 : 7 4 : 1.0
+O: 5 0 : 205 : 7 4 : 1.0
+O: 5 0 : 207 : 7 4 : 1.0
+O: 5 1 : 201 : 7 4 : 1.0
+O: 5 1 : 203 : 7 4 : 1.0
+O: 5 1 : 205 : 7 4 : 1.0
+O: 5 1 : 207 : 7 4 : 1.0
+O: 5 2 : 201 : 7 4 : 1.0
+O: 5 2 : 203 : 7 4 : 1.0
+O: 5 2 : 205 : 7 4 : 1.0
+O: 5 2 : 207 : 7 4 : 1.0
+O: 5 3 : 201 : 7 4 : 1.0
+O: 5 3 : 203 : 7 4 : 1.0
+O: 5 3 : 205 : 7 4 : 1.0
+O: 5 3 : 207 : 7 4 : 1.0
+O: 5 4 : 201 : 7 4 : 1.0
+O: 5 4 : 203 : 7 4 : 1.0
+O: 5 4 : 205 : 7 4 : 1.0
+O: 5 4 : 207 : 7 4 : 1.0
+O: 5 5 : 201 : 7 4 : 1.0
+O: 5 5 : 203 : 7 4 : 1.0
+O: 5 5 : 205 : 7 4 : 1.0
+O: 5 5 : 207 : 7 4 : 1.0
+O: 0 0 : 218 : 7 5 : 1.0
+O: 0 0 : 219 : 7 5 : 1.0
+O: 0 0 : 222 : 7 5 : 1.0
+O: 0 0 : 223 : 7 5 : 1.0
+O: 0 1 : 218 : 7 5 : 1.0
+O: 0 1 : 219 : 7 5 : 1.0
+O: 0 1 : 222 : 7 5 : 1.0
+O: 0 1 : 223 : 7 5 : 1.0
+O: 0 2 : 218 : 7 5 : 1.0
+O: 0 2 : 219 : 7 5 : 1.0
+O: 0 2 : 222 : 7 5 : 1.0
+O: 0 2 : 223 : 7 5 : 1.0
+O: 0 3 : 218 : 7 5 : 1.0
+O: 0 3 : 219 : 7 5 : 1.0
+O: 0 3 : 222 : 7 5 : 1.0
+O: 0 3 : 223 : 7 5 : 1.0
+O: 0 4 : 218 : 7 5 : 1.0
+O: 0 4 : 219 : 7 5 : 1.0
+O: 0 4 : 222 : 7 5 : 1.0
+O: 0 4 : 223 : 7 5 : 1.0
+O: 0 5 : 218 : 7 5 : 1.0
+O: 0 5 : 219 : 7 5 : 1.0
+O: 0 5 : 222 : 7 5 : 1.0
+O: 0 5 : 223 : 7 5 : 1.0
+O: 1 0 : 218 : 7 5 : 1.0
+O: 1 0 : 219 : 7 5 : 1.0
+O: 1 0 : 222 : 7 5 : 1.0
+O: 1 0 : 223 : 7 5 : 1.0
+O: 1 1 : 218 : 7 5 : 1.0
+O: 1 1 : 219 : 7 5 : 1.0
+O: 1 1 : 222 : 7 5 : 1.0
+O: 1 1 : 223 : 7 5 : 1.0
+O: 1 2 : 218 : 7 5 : 1.0
+O: 1 2 : 219 : 7 5 : 1.0
+O: 1 2 : 222 : 7 5 : 1.0
+O: 1 2 : 223 : 7 5 : 1.0
+O: 1 3 : 218 : 7 5 : 1.0
+O: 1 3 : 219 : 7 5 : 1.0
+O: 1 3 : 222 : 7 5 : 1.0
+O: 1 3 : 223 : 7 5 : 1.0
+O: 1 4 : 218 : 7 5 : 1.0
+O: 1 4 : 219 : 7 5 : 1.0
+O: 1 4 : 222 : 7 5 : 1.0
+O: 1 4 : 223 : 7 5 : 1.0
+O: 1 5 : 218 : 7 5 : 1.0
+O: 1 5 : 219 : 7 5 : 1.0
+O: 1 5 : 222 : 7 5 : 1.0
+O: 1 5 : 223 : 7 5 : 1.0
+O: 2 0 : 218 : 7 5 : 1.0
+O: 2 0 : 219 : 7 5 : 1.0
+O: 2 0 : 222 : 7 5 : 1.0
+O: 2 0 : 223 : 7 5 : 1.0
+O: 2 1 : 218 : 7 5 : 1.0
+O: 2 1 : 219 : 7 5 : 1.0
+O: 2 1 : 222 : 7 5 : 1.0
+O: 2 1 : 223 : 7 5 : 1.0
+O: 2 2 : 218 : 7 5 : 1.0
+O: 2 2 : 219 : 7 5 : 1.0
+O: 2 2 : 222 : 7 5 : 1.0
+O: 2 2 : 223 : 7 5 : 1.0
+O: 2 3 : 218 : 7 5 : 1.0
+O: 2 3 : 219 : 7 5 : 1.0
+O: 2 3 : 222 : 7 5 : 1.0
+O: 2 3 : 223 : 7 5 : 1.0
+O: 2 4 : 218 : 7 5 : 1.0
+O: 2 4 : 219 : 7 5 : 1.0
+O: 2 4 : 222 : 7 5 : 1.0
+O: 2 4 : 223 : 7 5 : 1.0
+O: 2 5 : 218 : 7 5 : 1.0
+O: 2 5 : 219 : 7 5 : 1.0
+O: 2 5 : 222 : 7 5 : 1.0
+O: 2 5 : 223 : 7 5 : 1.0
+O: 3 0 : 218 : 7 5 : 1.0
+O: 3 0 : 219 : 7 5 : 1.0
+O: 3 0 : 222 : 7 5 : 1.0
+O: 3 0 : 223 : 7 5 : 1.0
+O: 3 1 : 218 : 7 5 : 1.0
+O: 3 1 : 219 : 7 5 : 1.0
+O: 3 1 : 222 : 7 5 : 1.0
+O: 3 1 : 223 : 7 5 : 1.0
+O: 3 2 : 218 : 7 5 : 1.0
+O: 3 2 : 219 : 7 5 : 1.0
+O: 3 2 : 222 : 7 5 : 1.0
+O: 3 2 : 223 : 7 5 : 1.0
+O: 3 3 : 218 : 7 5 : 1.0
+O: 3 3 : 219 : 7 5 : 1.0
+O: 3 3 : 222 : 7 5 : 1.0
+O: 3 3 : 223 : 7 5 : 1.0
+O: 3 4 : 218 : 7 5 : 1.0
+O: 3 4 : 219 : 7 5 : 1.0
+O: 3 4 : 222 : 7 5 : 1.0
+O: 3 4 : 223 : 7 5 : 1.0
+O: 3 5 : 218 : 7 5 : 1.0
+O: 3 5 : 219 : 7 5 : 1.0
+O: 3 5 : 222 : 7 5 : 1.0
+O: 3 5 : 223 : 7 5 : 1.0
+O: 4 0 : 218 : 7 5 : 1.0
+O: 4 0 : 219 : 7 5 : 1.0
+O: 4 0 : 222 : 7 5 : 1.0
+O: 4 0 : 223 : 7 5 : 1.0
+O: 4 1 : 218 : 7 5 : 1.0
+O: 4 1 : 219 : 7 5 : 1.0
+O: 4 1 : 222 : 7 5 : 1.0
+O: 4 1 : 223 : 7 5 : 1.0
+O: 4 2 : 218 : 7 5 : 1.0
+O: 4 2 : 219 : 7 5 : 1.0
+O: 4 2 : 222 : 7 5 : 1.0
+O: 4 2 : 223 : 7 5 : 1.0
+O: 4 3 : 218 : 7 5 : 1.0
+O: 4 3 : 219 : 7 5 : 1.0
+O: 4 3 : 222 : 7 5 : 1.0
+O: 4 3 : 223 : 7 5 : 1.0
+O: 4 4 : 218 : 7 5 : 1.0
+O: 4 4 : 219 : 7 5 : 1.0
+O: 4 4 : 222 : 7 5 : 1.0
+O: 4 4 : 223 : 7 5 : 1.0
+O: 4 5 : 218 : 7 5 : 1.0
+O: 4 5 : 219 : 7 5 : 1.0
+O: 4 5 : 222 : 7 5 : 1.0
+O: 4 5 : 223 : 7 5 : 1.0
+O: 5 0 : 218 : 7 5 : 1.0
+O: 5 0 : 219 : 7 5 : 1.0
+O: 5 0 : 222 : 7 5 : 1.0
+O: 5 0 : 223 : 7 5 : 1.0
+O: 5 1 : 218 : 7 5 : 1.0
+O: 5 1 : 219 : 7 5 : 1.0
+O: 5 1 : 222 : 7 5 : 1.0
+O: 5 1 : 223 : 7 5 : 1.0
+O: 5 2 : 218 : 7 5 : 1.0
+O: 5 2 : 219 : 7 5 : 1.0
+O: 5 2 : 222 : 7 5 : 1.0
+O: 5 2 : 223 : 7 5 : 1.0
+O: 5 3 : 218 : 7 5 : 1.0
+O: 5 3 : 219 : 7 5 : 1.0
+O: 5 3 : 222 : 7 5 : 1.0
+O: 5 3 : 223 : 7 5 : 1.0
+O: 5 4 : 218 : 7 5 : 1.0
+O: 5 4 : 219 : 7 5 : 1.0
+O: 5 4 : 222 : 7 5 : 1.0
+O: 5 4 : 223 : 7 5 : 1.0
+O: 5 5 : 218 : 7 5 : 1.0
+O: 5 5 : 219 : 7 5 : 1.0
+O: 5 5 : 222 : 7 5 : 1.0
+O: 5 5 : 223 : 7 5 : 1.0
+O: 0 0 : 236 : 7 6 : 1.0
+O: 0 0 : 237 : 7 6 : 1.0
+O: 0 0 : 238 : 7 6 : 1.0
+O: 0 0 : 239 : 7 6 : 1.0
+O: 0 1 : 236 : 7 6 : 1.0
+O: 0 1 : 237 : 7 6 : 1.0
+O: 0 1 : 238 : 7 6 : 1.0
+O: 0 1 : 239 : 7 6 : 1.0
+O: 0 2 : 236 : 7 6 : 1.0
+O: 0 2 : 237 : 7 6 : 1.0
+O: 0 2 : 238 : 7 6 : 1.0
+O: 0 2 : 239 : 7 6 : 1.0
+O: 0 3 : 236 : 7 6 : 1.0
+O: 0 3 : 237 : 7 6 : 1.0
+O: 0 3 : 238 : 7 6 : 1.0
+O: 0 3 : 239 : 7 6 : 1.0
+O: 0 4 : 236 : 7 6 : 1.0
+O: 0 4 : 237 : 7 6 : 1.0
+O: 0 4 : 238 : 7 6 : 1.0
+O: 0 4 : 239 : 7 6 : 1.0
+O: 0 5 : 236 : 7 6 : 1.0
+O: 0 5 : 237 : 7 6 : 1.0
+O: 0 5 : 238 : 7 6 : 1.0
+O: 0 5 : 239 : 7 6 : 1.0
+O: 1 0 : 236 : 7 6 : 1.0
+O: 1 0 : 237 : 7 6 : 1.0
+O: 1 0 : 238 : 7 6 : 1.0
+O: 1 0 : 239 : 7 6 : 1.0
+O: 1 1 : 236 : 7 6 : 1.0
+O: 1 1 : 237 : 7 6 : 1.0
+O: 1 1 : 238 : 7 6 : 1.0
+O: 1 1 : 239 : 7 6 : 1.0
+O: 1 2 : 236 : 7 6 : 1.0
+O: 1 2 : 237 : 7 6 : 1.0
+O: 1 2 : 238 : 7 6 : 1.0
+O: 1 2 : 239 : 7 6 : 1.0
+O: 1 3 : 236 : 7 6 : 1.0
+O: 1 3 : 237 : 7 6 : 1.0
+O: 1 3 : 238 : 7 6 : 1.0
+O: 1 3 : 239 : 7 6 : 1.0
+O: 1 4 : 236 : 7 6 : 1.0
+O: 1 4 : 237 : 7 6 : 1.0
+O: 1 4 : 238 : 7 6 : 1.0
+O: 1 4 : 239 : 7 6 : 1.0
+O: 1 5 : 236 : 7 6 : 1.0
+O: 1 5 : 237 : 7 6 : 1.0
+O: 1 5 : 238 : 7 6 : 1.0
+O: 1 5 : 239 : 7 6 : 1.0
+O: 2 0 : 236 : 7 6 : 1.0
+O: 2 0 : 237 : 7 6 : 1.0
+O: 2 0 : 238 : 7 6 : 1.0
+O: 2 0 : 239 : 7 6 : 1.0
+O: 2 1 : 236 : 7 6 : 1.0
+O: 2 1 : 237 : 7 6 : 1.0
+O: 2 1 : 238 : 7 6 : 1.0
+O: 2 1 : 239 : 7 6 : 1.0
+O: 2 2 : 236 : 7 6 : 1.0
+O: 2 2 : 237 : 7 6 : 1.0
+O: 2 2 : 238 : 7 6 : 1.0
+O: 2 2 : 239 : 7 6 : 1.0
+O: 2 3 : 236 : 7 6 : 1.0
+O: 2 3 : 237 : 7 6 : 1.0
+O: 2 3 : 238 : 7 6 : 1.0
+O: 2 3 : 239 : 7 6 : 1.0
+O: 2 4 : 236 : 7 6 : 1.0
+O: 2 4 : 237 : 7 6 : 1.0
+O: 2 4 : 238 : 7 6 : 1.0
+O: 2 4 : 239 : 7 6 : 1.0
+O: 2 5 : 236 : 7 6 : 1.0
+O: 2 5 : 237 : 7 6 : 1.0
+O: 2 5 : 238 : 7 6 : 1.0
+O: 2 5 : 239 : 7 6 : 1.0
+O: 3 0 : 236 : 7 6 : 1.0
+O: 3 0 : 237 : 7 6 : 1.0
+O: 3 0 : 238 : 7 6 : 1.0
+O: 3 0 : 239 : 7 6 : 1.0
+O: 3 1 : 236 : 7 6 : 1.0
+O: 3 1 : 237 : 7 6 : 1.0
+O: 3 1 : 238 : 7 6 : 1.0
+O: 3 1 : 239 : 7 6 : 1.0
+O: 3 2 : 236 : 7 6 : 1.0
+O: 3 2 : 237 : 7 6 : 1.0
+O: 3 2 : 238 : 7 6 : 1.0
+O: 3 2 : 239 : 7 6 : 1.0
+O: 3 3 : 236 : 7 6 : 1.0
+O: 3 3 : 237 : 7 6 : 1.0
+O: 3 3 : 238 : 7 6 : 1.0
+O: 3 3 : 239 : 7 6 : 1.0
+O: 3 4 : 236 : 7 6 : 1.0
+O: 3 4 : 237 : 7 6 : 1.0
+O: 3 4 : 238 : 7 6 : 1.0
+O: 3 4 : 239 : 7 6 : 1.0
+O: 3 5 : 236 : 7 6 : 1.0
+O: 3 5 : 237 : 7 6 : 1.0
+O: 3 5 : 238 : 7 6 : 1.0
+O: 3 5 : 239 : 7 6 : 1.0
+O: 4 0 : 236 : 7 6 : 1.0
+O: 4 0 : 237 : 7 6 : 1.0
+O: 4 0 : 238 : 7 6 : 1.0
+O: 4 0 : 239 : 7 6 : 1.0
+O: 4 1 : 236 : 7 6 : 1.0
+O: 4 1 : 237 : 7 6 : 1.0
+O: 4 1 : 238 : 7 6 : 1.0
+O: 4 1 : 239 : 7 6 : 1.0
+O: 4 2 : 236 : 7 6 : 1.0
+O: 4 2 : 237 : 7 6 : 1.0
+O: 4 2 : 238 : 7 6 : 1.0
+O: 4 2 : 239 : 7 6 : 1.0
+O: 4 3 : 236 : 7 6 : 1.0
+O: 4 3 : 237 : 7 6 : 1.0
+O: 4 3 : 238 : 7 6 : 1.0
+O: 4 3 : 239 : 7 6 : 1.0
+O: 4 4 : 236 : 7 6 : 1.0
+O: 4 4 : 237 : 7 6 : 1.0
+O: 4 4 : 238 : 7 6 : 1.0
+O: 4 4 : 239 : 7 6 : 1.0
+O: 4 5 : 236 : 7 6 : 1.0
+O: 4 5 : 237 : 7 6 : 1.0
+O: 4 5 : 238 : 7 6 : 1.0
+O: 4 5 : 239 : 7 6 : 1.0
+O: 5 0 : 236 : 7 6 : 1.0
+O: 5 0 : 237 : 7 6 : 1.0
+O: 5 0 : 238 : 7 6 : 1.0
+O: 5 0 : 239 : 7 6 : 1.0
+O: 5 1 : 236 : 7 6 : 1.0
+O: 5 1 : 237 : 7 6 : 1.0
+O: 5 1 : 238 : 7 6 : 1.0
+O: 5 1 : 239 : 7 6 : 1.0
+O: 5 2 : 236 : 7 6 : 1.0
+O: 5 2 : 237 : 7 6 : 1.0
+O: 5 2 : 238 : 7 6 : 1.0
+O: 5 2 : 239 : 7 6 : 1.0
+O: 5 3 : 236 : 7 6 : 1.0
+O: 5 3 : 237 : 7 6 : 1.0
+O: 5 3 : 238 : 7 6 : 1.0
+O: 5 3 : 239 : 7 6 : 1.0
+O: 5 4 : 236 : 7 6 : 1.0
+O: 5 4 : 237 : 7 6 : 1.0
+O: 5 4 : 238 : 7 6 : 1.0
+O: 5 4 : 239 : 7 6 : 1.0
+O: 5 5 : 236 : 7 6 : 1.0
+O: 5 5 : 237 : 7 6 : 1.0
+O: 5 5 : 238 : 7 6 : 1.0
+O: 5 5 : 239 : 7 6 : 1.0
+O: 0 0 : 248 : 7 7 : 1.0
+O: 0 0 : 249 : 7 7 : 1.0
+O: 0 0 : 250 : 7 7 : 1.0
+O: 0 0 : 251 : 7 7 : 1.0
+O: 0 0 : 252 : 7 7 : 1.0
+O: 0 0 : 253 : 7 7 : 1.0
+O: 0 0 : 254 : 7 7 : 1.0
+O: 0 0 : 255 : 7 7 : 1.0
+O: 0 1 : 248 : 7 7 : 1.0
+O: 0 1 : 249 : 7 7 : 1.0
+O: 0 1 : 250 : 7 7 : 1.0
+O: 0 1 : 251 : 7 7 : 1.0
+O: 0 1 : 252 : 7 7 : 1.0
+O: 0 1 : 253 : 7 7 : 1.0
+O: 0 1 : 254 : 7 7 : 1.0
+O: 0 1 : 255 : 7 7 : 1.0
+O: 0 2 : 248 : 7 7 : 1.0
+O: 0 2 : 249 : 7 7 : 1.0
+O: 0 2 : 250 : 7 7 : 1.0
+O: 0 2 : 251 : 7 7 : 1.0
+O: 0 2 : 252 : 7 7 : 1.0
+O: 0 2 : 253 : 7 7 : 1.0
+O: 0 2 : 254 : 7 7 : 1.0
+O: 0 2 : 255 : 7 7 : 1.0
+O: 0 3 : 248 : 7 7 : 1.0
+O: 0 3 : 249 : 7 7 : 1.0
+O: 0 3 : 250 : 7 7 : 1.0
+O: 0 3 : 251 : 7 7 : 1.0
+O: 0 3 : 252 : 7 7 : 1.0
+O: 0 3 : 253 : 7 7 : 1.0
+O: 0 3 : 254 : 7 7 : 1.0
+O: 0 3 : 255 : 7 7 : 1.0
+O: 0 4 : 248 : 7 7 : 1.0
+O: 0 4 : 249 : 7 7 : 1.0
+O: 0 4 : 250 : 7 7 : 1.0
+O: 0 4 : 251 : 7 7 : 1.0
+O: 0 4 : 252 : 7 7 : 1.0
+O: 0 4 : 253 : 7 7 : 1.0
+O: 0 4 : 254 : 7 7 : 1.0
+O: 0 4 : 255 : 7 7 : 1.0
+O: 0 5 : 248 : 7 7 : 1.0
+O: 0 5 : 249 : 7 7 : 1.0
+O: 0 5 : 250 : 7 7 : 1.0
+O: 0 5 : 251 : 7 7 : 1.0
+O: 0 5 : 252 : 7 7 : 1.0
+O: 0 5 : 253 : 7 7 : 1.0
+O: 0 5 : 254 : 7 7 : 1.0
+O: 0 5 : 255 : 7 7 : 1.0
+O: 1 0 : 248 : 7 7 : 1.0
+O: 1 0 : 249 : 7 7 : 1.0
+O: 1 0 : 250 : 7 7 : 1.0
+O: 1 0 : 251 : 7 7 : 1.0
+O: 1 0 : 252 : 7 7 : 1.0
+O: 1 0 : 253 : 7 7 : 1.0
+O: 1 0 : 254 : 7 7 : 1.0
+O: 1 0 : 255 : 7 7 : 1.0
+O: 1 1 : 248 : 7 7 : 1.0
+O: 1 1 : 249 : 7 7 : 1.0
+O: 1 1 : 250 : 7 7 : 1.0
+O: 1 1 : 251 : 7 7 : 1.0
+O: 1 1 : 252 : 7 7 : 1.0
+O: 1 1 : 253 : 7 7 : 1.0
+O: 1 1 : 254 : 7 7 : 1.0
+O: 1 1 : 255 : 7 7 : 1.0
+O: 1 2 : 248 : 7 7 : 1.0
+O: 1 2 : 249 : 7 7 : 1.0
+O: 1 2 : 250 : 7 7 : 1.0
+O: 1 2 : 251 : 7 7 : 1.0
+O: 1 2 : 252 : 7 7 : 1.0
+O: 1 2 : 253 : 7 7 : 1.0
+O: 1 2 : 254 : 7 7 : 1.0
+O: 1 2 : 255 : 7 7 : 1.0
+O: 1 3 : 248 : 7 7 : 1.0
+O: 1 3 : 249 : 7 7 : 1.0
+O: 1 3 : 250 : 7 7 : 1.0
+O: 1 3 : 251 : 7 7 : 1.0
+O: 1 3 : 252 : 7 7 : 1.0
+O: 1 3 : 253 : 7 7 : 1.0
+O: 1 3 : 254 : 7 7 : 1.0
+O: 1 3 : 255 : 7 7 : 1.0
+O: 1 4 : 248 : 7 7 : 1.0
+O: 1 4 : 249 : 7 7 : 1.0
+O: 1 4 : 250 : 7 7 : 1.0
+O: 1 4 : 251 : 7 7 : 1.0
+O: 1 4 : 252 : 7 7 : 1.0
+O: 1 4 : 253 : 7 7 : 1.0
+O: 1 4 : 254 : 7 7 : 1.0
+O: 1 4 : 255 : 7 7 : 1.0
+O: 1 5 : 248 : 7 7 : 1.0
+O: 1 5 : 249 : 7 7 : 1.0
+O: 1 5 : 250 : 7 7 : 1.0
+O: 1 5 : 251 : 7 7 : 1.0
+O: 1 5 : 252 : 7 7 : 1.0
+O: 1 5 : 253 : 7 7 : 1.0
+O: 1 5 : 254 : 7 7 : 1.0
+O: 1 5 : 255 : 7 7 : 1.0
+O: 2 0 : 248 : 7 7 : 1.0
+O: 2 0 : 249 : 7 7 : 1.0
+O: 2 0 : 250 : 7 7 : 1.0
+O: 2 0 : 251 : 7 7 : 1.0
+O: 2 0 : 252 : 7 7 : 1.0
+O: 2 0 : 253 : 7 7 : 1.0
+O: 2 0 : 254 : 7 7 : 1.0
+O: 2 0 : 255 : 7 7 : 1.0
+O: 2 1 : 248 : 7 7 : 1.0
+O: 2 1 : 249 : 7 7 : 1.0
+O: 2 1 : 250 : 7 7 : 1.0
+O: 2 1 : 251 : 7 7 : 1.0
+O: 2 1 : 252 : 7 7 : 1.0
+O: 2 1 : 253 : 7 7 : 1.0
+O: 2 1 : 254 : 7 7 : 1.0
+O: 2 1 : 255 : 7 7 : 1.0
+O: 2 2 : 248 : 7 7 : 1.0
+O: 2 2 : 249 : 7 7 : 1.0
+O: 2 2 : 250 : 7 7 : 1.0
+O: 2 2 : 251 : 7 7 : 1.0
+O: 2 2 : 252 : 7 7 : 1.0
+O: 2 2 : 253 : 7 7 : 1.0
+O: 2 2 : 254 : 7 7 : 1.0
+O: 2 2 : 255 : 7 7 : 1.0
+O: 2 3 : 248 : 7 7 : 1.0
+O: 2 3 : 249 : 7 7 : 1.0
+O: 2 3 : 250 : 7 7 : 1.0
+O: 2 3 : 251 : 7 7 : 1.0
+O: 2 3 : 252 : 7 7 : 1.0
+O: 2 3 : 253 : 7 7 : 1.0
+O: 2 3 : 254 : 7 7 : 1.0
+O: 2 3 : 255 : 7 7 : 1.0
+O: 2 4 : 248 : 7 7 : 1.0
+O: 2 4 : 249 : 7 7 : 1.0
+O: 2 4 : 250 : 7 7 : 1.0
+O: 2 4 : 251 : 7 7 : 1.0
+O: 2 4 : 252 : 7 7 : 1.0
+O: 2 4 : 253 : 7 7 : 1.0
+O: 2 4 : 254 : 7 7 : 1.0
+O: 2 4 : 255 : 7 7 : 1.0
+O: 2 5 : 248 : 7 7 : 1.0
+O: 2 5 : 249 : 7 7 : 1.0
+O: 2 5 : 250 : 7 7 : 1.0
+O: 2 5 : 251 : 7 7 : 1.0
+O: 2 5 : 252 : 7 7 : 1.0
+O: 2 5 : 253 : 7 7 : 1.0
+O: 2 5 : 254 : 7 7 : 1.0
+O: 2 5 : 255 : 7 7 : 1.0
+O: 3 0 : 248 : 7 7 : 1.0
+O: 3 0 : 249 : 7 7 : 1.0
+O: 3 0 : 250 : 7 7 : 1.0
+O: 3 0 : 251 : 7 7 : 1.0
+O: 3 0 : 252 : 7 7 : 1.0
+O: 3 0 : 253 : 7 7 : 1.0
+O: 3 0 : 254 : 7 7 : 1.0
+O: 3 0 : 255 : 7 7 : 1.0
+O: 3 1 : 248 : 7 7 : 1.0
+O: 3 1 : 249 : 7 7 : 1.0
+O: 3 1 : 250 : 7 7 : 1.0
+O: 3 1 : 251 : 7 7 : 1.0
+O: 3 1 : 252 : 7 7 : 1.0
+O: 3 1 : 253 : 7 7 : 1.0
+O: 3 1 : 254 : 7 7 : 1.0
+O: 3 1 : 255 : 7 7 : 1.0
+O: 3 2 : 248 : 7 7 : 1.0
+O: 3 2 : 249 : 7 7 : 1.0
+O: 3 2 : 250 : 7 7 : 1.0
+O: 3 2 : 251 : 7 7 : 1.0
+O: 3 2 : 252 : 7 7 : 1.0
+O: 3 2 : 253 : 7 7 : 1.0
+O: 3 2 : 254 : 7 7 : 1.0
+O: 3 2 : 255 : 7 7 : 1.0
+O: 3 3 : 248 : 7 7 : 1.0
+O: 3 3 : 249 : 7 7 : 1.0
+O: 3 3 : 250 : 7 7 : 1.0
+O: 3 3 : 251 : 7 7 : 1.0
+O: 3 3 : 252 : 7 7 : 1.0
+O: 3 3 : 253 : 7 7 : 1.0
+O: 3 3 : 254 : 7 7 : 1.0
+O: 3 3 : 255 : 7 7 : 1.0
+O: 3 4 : 248 : 7 7 : 1.0
+O: 3 4 : 249 : 7 7 : 1.0
+O: 3 4 : 250 : 7 7 : 1.0
+O: 3 4 : 251 : 7 7 : 1.0
+O: 3 4 : 252 : 7 7 : 1.0
+O: 3 4 : 253 : 7 7 : 1.0
+O: 3 4 : 254 : 7 7 : 1.0
+O: 3 4 : 255 : 7 7 : 1.0
+O: 3 5 : 248 : 7 7 : 1.0
+O: 3 5 : 249 : 7 7 : 1.0
+O: 3 5 : 250 : 7 7 : 1.0
+O: 3 5 : 251 : 7 7 : 1.0
+O: 3 5 : 252 : 7 7 : 1.0
+O: 3 5 : 253 : 7 7 : 1.0
+O: 3 5 : 254 : 7 7 : 1.0
+O: 3 5 : 255 : 7 7 : 1.0
+O: 4 0 : 248 : 7 7 : 1.0
+O: 4 0 : 249 : 7 7 : 1.0
+O: 4 0 : 250 : 7 7 : 1.0
+O: 4 0 : 251 : 7 7 : 1.0
+O: 4 0 : 252 : 7 7 : 1.0
+O: 4 0 : 253 : 7 7 : 1.0
+O: 4 0 : 254 : 7 7 : 1.0
+O: 4 0 : 255 : 7 7 : 1.0
+O: 4 1 : 248 : 7 7 : 1.0
+O: 4 1 : 249 : 7 7 : 1.0
+O: 4 1 : 250 : 7 7 : 1.0
+O: 4 1 : 251 : 7 7 : 1.0
+O: 4 1 : 252 : 7 7 : 1.0
+O: 4 1 : 253 : 7 7 : 1.0
+O: 4 1 : 254 : 7 7 : 1.0
+O: 4 1 : 255 : 7 7 : 1.0
+O: 4 2 : 248 : 7 7 : 1.0
+O: 4 2 : 249 : 7 7 : 1.0
+O: 4 2 : 250 : 7 7 : 1.0
+O: 4 2 : 251 : 7 7 : 1.0
+O: 4 2 : 252 : 7 7 : 1.0
+O: 4 2 : 253 : 7 7 : 1.0
+O: 4 2 : 254 : 7 7 : 1.0
+O: 4 2 : 255 : 7 7 : 1.0
+O: 4 3 : 248 : 7 7 : 1.0
+O: 4 3 : 249 : 7 7 : 1.0
+O: 4 3 : 250 : 7 7 : 1.0
+O: 4 3 : 251 : 7 7 : 1.0
+O: 4 3 : 252 : 7 7 : 1.0
+O: 4 3 : 253 : 7 7 : 1.0
+O: 4 3 : 254 : 7 7 : 1.0
+O: 4 3 : 255 : 7 7 : 1.0
+O: 4 4 : 248 : 7 7 : 1.0
+O: 4 4 : 249 : 7 7 : 1.0
+O: 4 4 : 250 : 7 7 : 1.0
+O: 4 4 : 251 : 7 7 : 1.0
+O: 4 4 : 252 : 7 7 : 1.0
+O: 4 4 : 253 : 7 7 : 1.0
+O: 4 4 : 254 : 7 7 : 1.0
+O: 4 4 : 255 : 7 7 : 1.0
+O: 4 5 : 248 : 7 7 : 1.0
+O: 4 5 : 249 : 7 7 : 1.0
+O: 4 5 : 250 : 7 7 : 1.0
+O: 4 5 : 251 : 7 7 : 1.0
+O: 4 5 : 252 : 7 7 : 1.0
+O: 4 5 : 253 : 7 7 : 1.0
+O: 4 5 : 254 : 7 7 : 1.0
+O: 4 5 : 255 : 7 7 : 1.0
+O: 5 0 : 248 : 7 7 : 1.0
+O: 5 0 : 249 : 7 7 : 1.0
+O: 5 0 : 250 : 7 7 : 1.0
+O: 5 0 : 251 : 7 7 : 1.0
+O: 5 0 : 252 : 7 7 : 1.0
+O: 5 0 : 253 : 7 7 : 1.0
+O: 5 0 : 254 : 7 7 : 1.0
+O: 5 0 : 255 : 7 7 : 1.0
+O: 5 1 : 248 : 7 7 : 1.0
+O: 5 1 : 249 : 7 7 : 1.0
+O: 5 1 : 250 : 7 7 : 1.0
+O: 5 1 : 251 : 7 7 : 1.0
+O: 5 1 : 252 : 7 7 : 1.0
+O: 5 1 : 253 : 7 7 : 1.0
+O: 5 1 : 254 : 7 7 : 1.0
+O: 5 1 : 255 : 7 7 : 1.0
+O: 5 2 : 248 : 7 7 : 1.0
+O: 5 2 : 249 : 7 7 : 1.0
+O: 5 2 : 250 : 7 7 : 1.0
+O: 5 2 : 251 : 7 7 : 1.0
+O: 5 2 : 252 : 7 7 : 1.0
+O: 5 2 : 253 : 7 7 : 1.0
+O: 5 2 : 254 : 7 7 : 1.0
+O: 5 2 : 255 : 7 7 : 1.0
+O: 5 3 : 248 : 7 7 : 1.0
+O: 5 3 : 249 : 7 7 : 1.0
+O: 5 3 : 250 : 7 7 : 1.0
+O: 5 3 : 251 : 7 7 : 1.0
+O: 5 3 : 252 : 7 7 : 1.0
+O: 5 3 : 253 : 7 7 : 1.0
+O: 5 3 : 254 : 7 7 : 1.0
+O: 5 3 : 255 : 7 7 : 1.0
+O: 5 4 : 248 : 7 7 : 1.0
+O: 5 4 : 249 : 7 7 : 1.0
+O: 5 4 : 250 : 7 7 : 1.0
+O: 5 4 : 251 : 7 7 : 1.0
+O: 5 4 : 252 : 7 7 : 1.0
+O: 5 4 : 253 : 7 7 : 1.0
+O: 5 4 : 254 : 7 7 : 1.0
+O: 5 4 : 255 : 7 7 : 1.0
+O: 5 5 : 248 : 7 7 : 1.0
+O: 5 5 : 249 : 7 7 : 1.0
+O: 5 5 : 250 : 7 7 : 1.0
+O: 5 5 : 251 : 7 7 : 1.0
+O: 5 5 : 252 : 7 7 : 1.0
+O: 5 5 : 253 : 7 7 : 1.0
+O: 5 5 : 254 : 7 7 : 1.0
+O: 5 5 : 255 : 7 7 : 1.0
+R: 0 0 : 0 : -0.2
+R: 0 1 : 0 : -0.2
+R: 0 2 : 0 : -0.2
+R: 0 3 : 0 : -0.2
+R: 0 4 : 0 : -10.1
+R: 0 5 : 0 : 1.9
+R: 1 0 : 0 : -0.2
+R: 1 1 : 0 : -0.2
+R: 1 2 : 0 : -0.2
+R: 1 3 : 0 : -0.2
+R: 1 4 : 0 : -10.1
+R: 1 5 : 0 : 1.9
+R: 2 0 : 0 : -0.2
+R: 2 1 : 0 : -0.2
+R: 2 2 : 0 : -0.2
+R: 2 3 : 0 : -0.2
+R: 2 4 : 0 : -10.1
+R: 2 5 : 0 : 1.9
+R: 3 0 : 0 : -0.2
+R: 3 1 : 0 : -0.2
+R: 3 2 : 0 : -0.2
+R: 3 3 : 0 : -0.2
+R: 3 4 : 0 : -10.1
+R: 3 5 : 0 : 1.9
+R: 4 0 : 0 : -10.1
+R: 4 1 : 0 : -10.1
+R: 4 2 : 0 : -10.1
+R: 4 3 : 0 : -10.1
+R: 4 4 : 0 : 6.0
+R: 5 0 : 0 : 1.9
+R: 5 1 : 0 : 1.9
+R: 5 2 : 0 : 1.9
+R: 5 3 : 0 : 1.9
+R: 5 5 : 0 : 1.0
+R: 0 0 : 1 : -0.2
+R: 0 1 : 1 : -0.2
+R: 0 2 : 1 : -0.2
+R: 0 3 : 1 : -0.2
+R: 0 4 : 1 : -1.1
+R: 0 5 : 1 : -1.1
+R: 1 0 : 1 : -0.2
+R: 1 1 : 1 : -0.2
+R: 1 2 : 1 : -0.2
+R: 1 3 : 1 : -0.2
+R: 1 4 : 1 : -1.1
+R: 1 5 : 1 : -1.1
+R: 2 0 : 1 : -0.2
+R: 2 1 : 1 : -0.2
+R: 2 2 : 1 : -0.2
+R: 2 3 : 1 : -0.2
+R: 2 4 : 1 : -1.1
+R: 2 5 : 1 : -1.1
+R: 3 0 : 1 : -0.2
+R: 3 1 : 1 : -0.2
+R: 3 2 : 1 : -0.2
+R: 3 3 : 1 : -0.2
+R: 3 4 : 1 : -1.1
+R: 3 5 : 1 : -1.1
+R: 4 0 : 1 : -1.1
+R: 4 1 : 1 : -1.1
+R: 4 2 : 1 : -1.1
+R: 4 3 : 1 : -1.1
+R: 4 4 : 1 : -2.0
+R: 4 5 : 1 : -2.0
+R: 5 0 : 1 : -1.1
+R: 5 1 : 1 : -1.1
+R: 5 2 : 1 : -1.1
+R: 5 3 : 1 : -1.1
+R: 5 4 : 1 : -2.0
+R: 5 5 : 1 : -2.0
+R: 0 0 : 2 : -0.2
+R: 0 1 : 2 : -0.2
+R: 0 2 : 2 : -0.2
+R: 0 3 : 2 : -0.2
+R: 0 4 : 2 : -10.1
+R: 0 5 : 2 : 1.9
+R: 1 0 : 2 : -0.2
+R: 1 1 : 2 : -0.2
+R: 1 2 : 2 : -0.2
+R: 1 3 : 2 : -0.2
+R: 1 4 : 2 : -10.1
+R: 1 5 : 2 : 1.9
+R: 2 0 : 2 : -0.2
+R: 2 1 : 2 : -0.2
+R: 2 2 : 2 : -0.2
+R: 2 3 : 2 : -0.2
+R: 2 4 : 2 : -10.1
+R: 2 5 : 2 : 1.9
+R: 3 0 : 2 : -0.2
+R: 3 1 : 2 : -0.2
+R: 3 2 : 2 : -0.2
+R: 3 3 : 2 : -0.2
+R: 3 4 : 2 : -10.1
+R: 3 5 : 2 : 1.9
+R: 4 0 : 2 : -10.1
+R: 4 1 : 2 : -10.1
+R: 4 2 : 2 : -10.1
+R: 4 3 : 2 : -10.1
+R: 4 4 : 2 : 6.0
+R: 5 0 : 2 : 1.9
+R: 5 1 : 2 : 1.9
+R: 5 2 : 2 : 1.9
+R: 5 3 : 2 : 1.9
+R: 5 5 : 2 : 1.0
+R: 0 0 : 3 : -0.2
+R: 0 1 : 3 : -0.2
+R: 0 2 : 3 : -0.2
+R: 0 3 : 3 : -0.2
+R: 0 4 : 3 : -1.1
+R: 0 5 : 3 : -1.1
+R: 1 0 : 3 : -0.2
+R: 1 1 : 3 : -0.2
+R: 1 2 : 3 : -0.2
+R: 1 3 : 3 : -0.2
+R: 1 4 : 3 : -1.1
+R: 1 5 : 3 : -1.1
+R: 2 0 : 3 : -0.2
+R: 2 1 : 3 : -0.2
+R: 2 2 : 3 : -0.2
+R: 2 3 : 3 : -0.2
+R: 2 4 : 3 : -1.1
+R: 2 5 : 3 : -1.1
+R: 3 0 : 3 : -0.2
+R: 3 1 : 3 : -0.2
+R: 3 2 : 3 : -0.2
+R: 3 3 : 3 : -0.2
+R: 3 4 : 3 : -1.1
+R: 3 5 : 3 : -1.1
+R: 4 0 : 3 : -1.1
+R: 4 1 : 3 : -1.1
+R: 4 2 : 3 : -1.1
+R: 4 3 : 3 : -1.1
+R: 4 4 : 3 : -2.0
+R: 4 5 : 3 : -2.0
+R: 5 0 : 3 : -1.1
+R: 5 1 : 3 : -1.1
+R: 5 2 : 3 : -1.1
+R: 5 3 : 3 : -1.1
+R: 5 4 : 3 : -2.0
+R: 5 5 : 3 : -2.0
+R: 0 0 : 4 : -0.2
+R: 0 1 : 4 : -0.2
+R: 0 2 : 4 : -0.2
+R: 0 3 : 4 : -0.2
+R: 0 4 : 4 : -10.1
+R: 0 5 : 4 : 1.9
+R: 1 0 : 4 : -0.2
+R: 1 1 : 4 : -0.2
+R: 1 2 : 4 : -0.2
+R: 1 3 : 4 : -0.2
+R: 1 4 : 4 : -10.1
+R: 1 5 : 4 : 1.9
+R: 2 0 : 4 : -0.2
+R: 2 1 : 4 : -0.2
+R: 2 2 : 4 : -0.2
+R: 2 3 : 4 : -0.2
+R: 2 4 : 4 : -10.1
+R: 2 5 : 4 : 1.9
+R: 3 0 : 4 : -0.2
+R: 3 1 : 4 : -0.2
+R: 3 2 : 4 : -0.2
+R: 3 3 : 4 : -0.2
+R: 3 4 : 4 : -10.1
+R: 3 5 : 4 : 1.9
+R: 4 0 : 4 : -10.1
+R: 4 1 : 4 : -10.1
+R: 4 2 : 4 : -10.1
+R: 4 3 : 4 : -10.1
+R: 4 4 : 4 : 6.0
+R: 5 0 : 4 : 1.9
+R: 5 1 : 4 : 1.9
+R: 5 2 : 4 : 1.9
+R: 5 3 : 4 : 1.9
+R: 5 5 : 4 : 1.0
+R: 0 0 : 5 : -0.2
+R: 0 1 : 5 : -0.2
+R: 0 2 : 5 : -0.2
+R: 0 3 : 5 : -0.2
+R: 0 4 : 5 : -1.1
+R: 0 5 : 5 : -1.1
+R: 1 0 : 5 : -0.2
+R: 1 1 : 5 : -0.2
+R: 1 2 : 5 : -0.2
+R: 1 3 : 5 : -0.2
+R: 1 4 : 5 : -1.1
+R: 1 5 : 5 : -1.1
+R: 2 0 : 5 : -0.2
+R: 2 1 : 5 : -0.2
+R: 2 2 : 5 : -0.2
+R: 2 3 : 5 : -0.2
+R: 2 4 : 5 : -1.1
+R: 2 5 : 5 : -1.1
+R: 3 0 : 5 : -0.2
+R: 3 1 : 5 : -0.2
+R: 3 2 : 5 : -0.2
+R: 3 3 : 5 : -0.2
+R: 3 4 : 5 : -1.1
+R: 3 5 : 5 : -1.1
+R: 4 0 : 5 : -1.1
+R: 4 1 : 5 : -1.1
+R: 4 2 : 5 : -1.1
+R: 4 3 : 5 : -1.1
+R: 4 4 : 5 : -2.0
+R: 4 5 : 5 : -2.0
+R: 5 0 : 5 : -1.1
+R: 5 1 : 5 : -1.1
+R: 5 2 : 5 : -1.1
+R: 5 3 : 5 : -1.1
+R: 5 4 : 5 : -2.0
+R: 5 5 : 5 : -2.0
+R: 0 0 : 6 : -0.2
+R: 0 1 : 6 : -0.2
+R: 0 2 : 6 : -0.2
+R: 0 3 : 6 : -0.2
+R: 0 4 : 6 : -10.1
+R: 0 5 : 6 : 1.9
+R: 1 0 : 6 : -0.2
+R: 1 1 : 6 : -0.2
+R: 1 2 : 6 : -0.2
+R: 1 3 : 6 : -0.2
+R: 1 4 : 6 : -10.1
+R: 1 5 : 6 : 1.9
+R: 2 0 : 6 : -0.2
+R: 2 1 : 6 : -0.2
+R: 2 2 : 6 : -0.2
+R: 2 3 : 6 : -0.2
+R: 2 4 : 6 : -10.1
+R: 2 5 : 6 : 1.9
+R: 3 0 : 6 : -0.2
+R: 3 1 : 6 : -0.2
+R: 3 2 : 6 : -0.2
+R: 3 3 : 6 : -0.2
+R: 3 4 : 6 : -10.1
+R: 3 5 : 6 : 1.9
+R: 4 0 : 6 : -10.1
+R: 4 1 : 6 : -10.1
+R: 4 2 : 6 : -10.1
+R: 4 3 : 6 : -10.1
+R: 4 4 : 6 : 6.0
+R: 5 0 : 6 : 1.9
+R: 5 1 : 6 : 1.9
+R: 5 2 : 6 : 1.9
+R: 5 3 : 6 : 1.9
+R: 5 5 : 6 : 1.0
+R: 0 0 : 7 : -0.2
+R: 0 1 : 7 : -0.2
+R: 0 2 : 7 : -0.2
+R: 0 3 : 7 : -0.2
+R: 0 4 : 7 : -1.1
+R: 0 5 : 7 : -1.1
+R: 1 0 : 7 : -0.2
+R: 1 1 : 7 : -0.2
+R: 1 2 : 7 : -0.2
+R: 1 3 : 7 : -0.2
+R: 1 4 : 7 : -1.1
+R: 1 5 : 7 : -1.1
+R: 2 0 : 7 : -0.2
+R: 2 1 : 7 : -0.2
+R: 2 2 : 7 : -0.2
+R: 2 3 : 7 : -0.2
+R: 2 4 : 7 : -1.1
+R: 2 5 : 7 : -1.1
+R: 3 0 : 7 : -0.2
+R: 3 1 : 7 : -0.2
+R: 3 2 : 7 : -0.2
+R: 3 3 : 7 : -0.2
+R: 3 4 : 7 : -1.1
+R: 3 5 : 7 : -1.1
+R: 4 0 : 7 : -1.1
+R: 4 1 : 7 : -1.1
+R: 4 2 : 7 : -1.1
+R: 4 3 : 7 : -1.1
+R: 4 4 : 7 : -2.0
+R: 4 5 : 7 : -2.0
+R: 5 0 : 7 : -1.1
+R: 5 1 : 7 : -1.1
+R: 5 2 : 7 : -1.1
+R: 5 3 : 7 : -1.1
+R: 5 4 : 7 : -2.0
+R: 5 5 : 7 : -2.0
+R: 0 0 : 8 : -0.2
+R: 0 1 : 8 : -0.2
+R: 0 2 : 8 : -0.2
+R: 0 3 : 8 : -0.2
+R: 0 4 : 8 : -10.1
+R: 0 5 : 8 : 1.9
+R: 1 0 : 8 : -0.2
+R: 1 1 : 8 : -0.2
+R: 1 2 : 8 : -0.2
+R: 1 3 : 8 : -0.2
+R: 1 4 : 8 : -10.1
+R: 1 5 : 8 : 1.9
+R: 2 0 : 8 : -0.2
+R: 2 1 : 8 : -0.2
+R: 2 2 : 8 : -0.2
+R: 2 3 : 8 : -0.2
+R: 2 4 : 8 : -10.1
+R: 2 5 : 8 : 1.9
+R: 3 0 : 8 : -0.2
+R: 3 1 : 8 : -0.2
+R: 3 2 : 8 : -0.2
+R: 3 3 : 8 : -0.2
+R: 3 4 : 8 : -10.1
+R: 3 5 : 8 : 1.9
+R: 4 0 : 8 : -10.1
+R: 4 1 : 8 : -10.1
+R: 4 2 : 8 : -10.1
+R: 4 3 : 8 : -10.1
+R: 4 4 : 8 : 6.0
+R: 5 0 : 8 : 1.9
+R: 5 1 : 8 : 1.9
+R: 5 2 : 8 : 1.9
+R: 5 3 : 8 : 1.9
+R: 5 5 : 8 : 1.0
+R: 0 0 : 9 : -0.2
+R: 0 1 : 9 : -0.2
+R: 0 2 : 9 : -0.2
+R: 0 3 : 9 : -0.2
+R: 0 4 : 9 : -1.1
+R: 0 5 : 9 : -1.1
+R: 1 0 : 9 : -0.2
+R: 1 1 : 9 : -0.2
+R: 1 2 : 9 : -0.2
+R: 1 3 : 9 : -0.2
+R: 1 4 : 9 : -1.1
+R: 1 5 : 9 : -1.1
+R: 2 0 : 9 : -0.2
+R: 2 1 : 9 : -0.2
+R: 2 2 : 9 : -0.2
+R: 2 3 : 9 : -0.2
+R: 2 4 : 9 : -1.1
+R: 2 5 : 9 : -1.1
+R: 3 0 : 9 : -0.2
+R: 3 1 : 9 : -0.2
+R: 3 2 : 9 : -0.2
+R: 3 3 : 9 : -0.2
+R: 3 4 : 9 : -1.1
+R: 3 5 : 9 : -1.1
+R: 4 0 : 9 : -1.1
+R: 4 1 : 9 : -1.1
+R: 4 2 : 9 : -1.1
+R: 4 3 : 9 : -1.1
+R: 4 4 : 9 : -2.0
+R: 4 5 : 9 : -2.0
+R: 5 0 : 9 : -1.1
+R: 5 1 : 9 : -1.1
+R: 5 2 : 9 : -1.1
+R: 5 3 : 9 : -1.1
+R: 5 4 : 9 : -2.0
+R: 5 5 : 9 : -2.0
+R: 0 0 : 10 : -0.2
+R: 0 1 : 10 : -0.2
+R: 0 2 : 10 : -0.2
+R: 0 3 : 10 : -0.2
+R: 0 4 : 10 : -10.1
+R: 0 5 : 10 : 1.9
+R: 1 0 : 10 : -0.2
+R: 1 1 : 10 : -0.2
+R: 1 2 : 10 : -0.2
+R: 1 3 : 10 : -0.2
+R: 1 4 : 10 : -10.1
+R: 1 5 : 10 : 1.9
+R: 2 0 : 10 : -0.2
+R: 2 1 : 10 : -0.2
+R: 2 2 : 10 : -0.2
+R: 2 3 : 10 : -0.2
+R: 2 4 : 10 : -10.1
+R: 2 5 : 10 : 1.9
+R: 3 0 : 10 : -0.2
+R: 3 1 : 10 : -0.2
+R: 3 2 : 10 : -0.2
+R: 3 3 : 10 : -0.2
+R: 3 4 : 10 : -10.1
+R: 3 5 : 10 : 1.9
+R: 4 0 : 10 : -10.1
+R: 4 1 : 10 : -10.1
+R: 4 2 : 10 : -10.1
+R: 4 3 : 10 : -10.1
+R: 4 4 : 10 : 6.0
+R: 5 0 : 10 : 1.9
+R: 5 1 : 10 : 1.9
+R: 5 2 : 10 : 1.9
+R: 5 3 : 10 : 1.9
+R: 5 5 : 10 : 1.0
+R: 0 0 : 11 : -0.2
+R: 0 1 : 11 : -0.2
+R: 0 2 : 11 : -0.2
+R: 0 3 : 11 : -0.2
+R: 0 4 : 11 : -1.1
+R: 0 5 : 11 : -1.1
+R: 1 0 : 11 : -0.2
+R: 1 1 : 11 : -0.2
+R: 1 2 : 11 : -0.2
+R: 1 3 : 11 : -0.2
+R: 1 4 : 11 : -1.1
+R: 1 5 : 11 : -1.1
+R: 2 0 : 11 : -0.2
+R: 2 1 : 11 : -0.2
+R: 2 2 : 11 : -0.2
+R: 2 3 : 11 : -0.2
+R: 2 4 : 11 : -1.1
+R: 2 5 : 11 : -1.1
+R: 3 0 : 11 : -0.2
+R: 3 1 : 11 : -0.2
+R: 3 2 : 11 : -0.2
+R: 3 3 : 11 : -0.2
+R: 3 4 : 11 : -1.1
+R: 3 5 : 11 : -1.1
+R: 4 0 : 11 : -1.1
+R: 4 1 : 11 : -1.1
+R: 4 2 : 11 : -1.1
+R: 4 3 : 11 : -1.1
+R: 4 4 : 11 : -2.0
+R: 4 5 : 11 : -2.0
+R: 5 0 : 11 : -1.1
+R: 5 1 : 11 : -1.1
+R: 5 2 : 11 : -1.1
+R: 5 3 : 11 : -1.1
+R: 5 4 : 11 : -2.0
+R: 5 5 : 11 : -2.0
+R: 0 0 : 12 : -0.2
+R: 0 1 : 12 : -0.2
+R: 0 2 : 12 : -0.2
+R: 0 3 : 12 : -0.2
+R: 0 4 : 12 : -10.1
+R: 0 5 : 12 : 1.9
+R: 1 0 : 12 : -0.2
+R: 1 1 : 12 : -0.2
+R: 1 2 : 12 : -0.2
+R: 1 3 : 12 : -0.2
+R: 1 4 : 12 : -10.1
+R: 1 5 : 12 : 1.9
+R: 2 0 : 12 : -0.2
+R: 2 1 : 12 : -0.2
+R: 2 2 : 12 : -0.2
+R: 2 3 : 12 : -0.2
+R: 2 4 : 12 : -10.1
+R: 2 5 : 12 : 1.9
+R: 3 0 : 12 : -0.2
+R: 3 1 : 12 : -0.2
+R: 3 2 : 12 : -0.2
+R: 3 3 : 12 : -0.2
+R: 3 4 : 12 : -10.1
+R: 3 5 : 12 : 1.9
+R: 4 0 : 12 : -10.1
+R: 4 1 : 12 : -10.1
+R: 4 2 : 12 : -10.1
+R: 4 3 : 12 : -10.1
+R: 4 4 : 12 : 6.0
+R: 5 0 : 12 : 1.9
+R: 5 1 : 12 : 1.9
+R: 5 2 : 12 : 1.9
+R: 5 3 : 12 : 1.9
+R: 5 5 : 12 : 1.0
+R: 0 0 : 13 : -0.2
+R: 0 1 : 13 : -0.2
+R: 0 2 : 13 : -0.2
+R: 0 3 : 13 : -0.2
+R: 0 4 : 13 : -1.1
+R: 0 5 : 13 : -1.1
+R: 1 0 : 13 : -0.2
+R: 1 1 : 13 : -0.2
+R: 1 2 : 13 : -0.2
+R: 1 3 : 13 : -0.2
+R: 1 4 : 13 : -1.1
+R: 1 5 : 13 : -1.1
+R: 2 0 : 13 : -0.2
+R: 2 1 : 13 : -0.2
+R: 2 2 : 13 : -0.2
+R: 2 3 : 13 : -0.2
+R: 2 4 : 13 : -1.1
+R: 2 5 : 13 : -1.1
+R: 3 0 : 13 : -0.2
+R: 3 1 : 13 : -0.2
+R: 3 2 : 13 : -0.2
+R: 3 3 : 13 : -0.2
+R: 3 4 : 13 : -1.1
+R: 3 5 : 13 : -1.1
+R: 4 0 : 13 : -1.1
+R: 4 1 : 13 : -1.1
+R: 4 2 : 13 : -1.1
+R: 4 3 : 13 : -1.1
+R: 4 4 : 13 : -2.0
+R: 4 5 : 13 : -2.0
+R: 5 0 : 13 : -1.1
+R: 5 1 : 13 : -1.1
+R: 5 2 : 13 : -1.1
+R: 5 3 : 13 : -1.1
+R: 5 4 : 13 : -2.0
+R: 5 5 : 13 : -2.0
+R: 0 0 : 14 : -0.2
+R: 0 1 : 14 : -0.2
+R: 0 2 : 14 : -0.2
+R: 0 3 : 14 : -0.2
+R: 0 4 : 14 : -10.1
+R: 0 5 : 14 : 1.9
+R: 1 0 : 14 : -0.2
+R: 1 1 : 14 : -0.2
+R: 1 2 : 14 : -0.2
+R: 1 3 : 14 : -0.2
+R: 1 4 : 14 : -10.1
+R: 1 5 : 14 : 1.9
+R: 2 0 : 14 : -0.2
+R: 2 1 : 14 : -0.2
+R: 2 2 : 14 : -0.2
+R: 2 3 : 14 : -0.2
+R: 2 4 : 14 : -10.1
+R: 2 5 : 14 : 1.9
+R: 3 0 : 14 : -0.2
+R: 3 1 : 14 : -0.2
+R: 3 2 : 14 : -0.2
+R: 3 3 : 14 : -0.2
+R: 3 4 : 14 : -10.1
+R: 3 5 : 14 : 1.9
+R: 4 0 : 14 : -10.1
+R: 4 1 : 14 : -10.1
+R: 4 2 : 14 : -10.1
+R: 4 3 : 14 : -10.1
+R: 4 4 : 14 : 6.0
+R: 5 0 : 14 : 1.9
+R: 5 1 : 14 : 1.9
+R: 5 2 : 14 : 1.9
+R: 5 3 : 14 : 1.9
+R: 5 5 : 14 : 1.0
+R: 0 0 : 15 : -0.2
+R: 0 1 : 15 : -0.2
+R: 0 2 : 15 : -0.2
+R: 0 3 : 15 : -0.2
+R: 0 4 : 15 : -1.1
+R: 0 5 : 15 : -1.1
+R: 1 0 : 15 : -0.2
+R: 1 1 : 15 : -0.2
+R: 1 2 : 15 : -0.2
+R: 1 3 : 15 : -0.2
+R: 1 4 : 15 : -1.1
+R: 1 5 : 15 : -1.1
+R: 2 0 : 15 : -0.2
+R: 2 1 : 15 : -0.2
+R: 2 2 : 15 : -0.2
+R: 2 3 : 15 : -0.2
+R: 2 4 : 15 : -1.1
+R: 2 5 : 15 : -1.1
+R: 3 0 : 15 : -0.2
+R: 3 1 : 15 : -0.2
+R: 3 2 : 15 : -0.2
+R: 3 3 : 15 : -0.2
+R: 3 4 : 15 : -1.1
+R: 3 5 : 15 : -1.1
+R: 4 0 : 15 : -1.1
+R: 4 1 : 15 : -1.1
+R: 4 2 : 15 : -1.1
+R: 4 3 : 15 : -1.1
+R: 4 4 : 15 : -2.0
+R: 4 5 : 15 : -2.0
+R: 5 0 : 15 : -1.1
+R: 5 1 : 15 : -1.1
+R: 5 2 : 15 : -1.1
+R: 5 3 : 15 : -1.1
+R: 5 4 : 15 : -2.0
+R: 5 5 : 15 : -2.0
+R: 0 0 : 16 : -0.2
+R: 0 1 : 16 : -0.2
+R: 0 2 : 16 : -0.2
+R: 0 3 : 16 : -0.2
+R: 0 4 : 16 : -10.1
+R: 0 5 : 16 : 1.9
+R: 1 0 : 16 : -0.2
+R: 1 1 : 16 : -0.2
+R: 1 2 : 16 : -0.2
+R: 1 3 : 16 : -0.2
+R: 1 4 : 16 : -10.1
+R: 1 5 : 16 : 1.9
+R: 2 0 : 16 : -0.2
+R: 2 1 : 16 : -0.2
+R: 2 2 : 16 : -0.2
+R: 2 3 : 16 : -0.2
+R: 2 4 : 16 : -10.1
+R: 2 5 : 16 : 1.9
+R: 3 0 : 16 : -0.2
+R: 3 1 : 16 : -0.2
+R: 3 2 : 16 : -0.2
+R: 3 3 : 16 : -0.2
+R: 3 4 : 16 : -10.1
+R: 3 5 : 16 : 1.9
+R: 4 0 : 16 : -10.1
+R: 4 1 : 16 : -10.1
+R: 4 2 : 16 : -10.1
+R: 4 3 : 16 : -10.1
+R: 5 0 : 16 : 1.9
+R: 5 1 : 16 : 1.9
+R: 5 2 : 16 : 1.9
+R: 5 3 : 16 : 1.9
+R: 5 4 : 16 : 4.0
+R: 5 5 : 16 : 4.0
+R: 0 0 : 17 : -0.2
+R: 0 1 : 17 : -0.2
+R: 0 2 : 17 : -0.2
+R: 0 3 : 17 : -0.2
+R: 0 4 : 17 : -10.1
+R: 0 5 : 17 : 1.9
+R: 1 0 : 17 : -0.2
+R: 1 1 : 17 : -0.2
+R: 1 2 : 17 : -0.2
+R: 1 3 : 17 : -0.2
+R: 1 4 : 17 : -10.1
+R: 1 5 : 17 : 1.9
+R: 2 0 : 17 : -0.2
+R: 2 1 : 17 : -0.2
+R: 2 2 : 17 : -0.2
+R: 2 3 : 17 : -0.2
+R: 2 4 : 17 : -10.1
+R: 2 5 : 17 : 1.9
+R: 3 0 : 17 : -0.2
+R: 3 1 : 17 : -0.2
+R: 3 2 : 17 : -0.2
+R: 3 3 : 17 : -0.2
+R: 3 4 : 17 : -10.1
+R: 3 5 : 17 : 1.9
+R: 4 0 : 17 : -1.1
+R: 4 1 : 17 : -1.1
+R: 4 2 : 17 : -1.1
+R: 4 3 : 17 : -1.1
+R: 4 4 : 17 : -11.0
+R: 4 5 : 17 : -11.0
+R: 5 0 : 17 : -1.1
+R: 5 1 : 17 : -1.1
+R: 5 2 : 17 : -1.1
+R: 5 3 : 17 : -1.1
+R: 5 4 : 17 : 1.0
+R: 5 5 : 17 : 1.0
+R: 0 0 : 18 : -0.2
+R: 0 1 : 18 : -0.2
+R: 0 2 : 18 : -0.2
+R: 0 3 : 18 : -0.2
+R: 0 4 : 18 : -1.1
+R: 0 5 : 18 : -1.1
+R: 1 0 : 18 : -0.2
+R: 1 1 : 18 : -0.2
+R: 1 2 : 18 : -0.2
+R: 1 3 : 18 : -0.2
+R: 1 4 : 18 : -1.1
+R: 1 5 : 18 : -1.1
+R: 2 0 : 18 : -0.2
+R: 2 1 : 18 : -0.2
+R: 2 2 : 18 : -0.2
+R: 2 3 : 18 : -0.2
+R: 2 4 : 18 : -1.1
+R: 2 5 : 18 : -1.1
+R: 3 0 : 18 : -0.2
+R: 3 1 : 18 : -0.2
+R: 3 2 : 18 : -0.2
+R: 3 3 : 18 : -0.2
+R: 3 4 : 18 : -1.1
+R: 3 5 : 18 : -1.1
+R: 4 0 : 18 : -10.1
+R: 4 1 : 18 : -10.1
+R: 4 2 : 18 : -10.1
+R: 4 3 : 18 : -10.1
+R: 4 4 : 18 : -11.0
+R: 4 5 : 18 : -11.0
+R: 5 0 : 18 : 1.9
+R: 5 1 : 18 : 1.9
+R: 5 2 : 18 : 1.9
+R: 5 3 : 18 : 1.9
+R: 5 4 : 18 : 1.0
+R: 5 5 : 18 : 1.0
+R: 0 0 : 19 : -0.2
+R: 0 1 : 19 : -0.2
+R: 0 2 : 19 : -0.2
+R: 0 3 : 19 : -0.2
+R: 0 4 : 19 : -1.1
+R: 0 5 : 19 : -1.1
+R: 1 0 : 19 : -0.2
+R: 1 1 : 19 : -0.2
+R: 1 2 : 19 : -0.2
+R: 1 3 : 19 : -0.2
+R: 1 4 : 19 : -1.1
+R: 1 5 : 19 : -1.1
+R: 2 0 : 19 : -0.2
+R: 2 1 : 19 : -0.2
+R: 2 2 : 19 : -0.2
+R: 2 3 : 19 : -0.2
+R: 2 4 : 19 : -1.1
+R: 2 5 : 19 : -1.1
+R: 3 0 : 19 : -0.2
+R: 3 1 : 19 : -0.2
+R: 3 2 : 19 : -0.2
+R: 3 3 : 19 : -0.2
+R: 3 4 : 19 : -1.1
+R: 3 5 : 19 : -1.1
+R: 4 0 : 19 : -1.1
+R: 4 1 : 19 : -1.1
+R: 4 2 : 19 : -1.1
+R: 4 3 : 19 : -1.1
+R: 4 4 : 19 : -2.0
+R: 4 5 : 19 : -2.0
+R: 5 0 : 19 : -1.1
+R: 5 1 : 19 : -1.1
+R: 5 2 : 19 : -1.1
+R: 5 3 : 19 : -1.1
+R: 5 4 : 19 : -2.0
+R: 5 5 : 19 : -2.0
+R: 0 0 : 20 : -0.2
+R: 0 1 : 20 : -0.2
+R: 0 2 : 20 : -0.2
+R: 0 3 : 20 : -0.2
+R: 0 4 : 20 : -10.1
+R: 0 5 : 20 : 1.9
+R: 1 0 : 20 : -0.2
+R: 1 1 : 20 : -0.2
+R: 1 2 : 20 : -0.2
+R: 1 3 : 20 : -0.2
+R: 1 4 : 20 : -10.1
+R: 1 5 : 20 : 1.9
+R: 2 0 : 20 : -0.2
+R: 2 1 : 20 : -0.2
+R: 2 2 : 20 : -0.2
+R: 2 3 : 20 : -0.2
+R: 2 4 : 20 : -10.1
+R: 2 5 : 20 : 1.9
+R: 3 0 : 20 : -0.2
+R: 3 1 : 20 : -0.2
+R: 3 2 : 20 : -0.2
+R: 3 3 : 20 : -0.2
+R: 3 4 : 20 : -10.1
+R: 3 5 : 20 : 1.9
+R: 4 0 : 20 : -10.1
+R: 4 1 : 20 : -10.1
+R: 4 2 : 20 : -10.1
+R: 4 3 : 20 : -10.1
+R: 5 0 : 20 : 1.9
+R: 5 1 : 20 : 1.9
+R: 5 2 : 20 : 1.9
+R: 5 3 : 20 : 1.9
+R: 5 4 : 20 : 4.0
+R: 5 5 : 20 : 4.0
+R: 0 0 : 21 : -0.2
+R: 0 1 : 21 : -0.2
+R: 0 2 : 21 : -0.2
+R: 0 3 : 21 : -0.2
+R: 0 4 : 21 : -10.1
+R: 0 5 : 21 : 1.9
+R: 1 0 : 21 : -0.2
+R: 1 1 : 21 : -0.2
+R: 1 2 : 21 : -0.2
+R: 1 3 : 21 : -0.2
+R: 1 4 : 21 : -10.1
+R: 1 5 : 21 : 1.9
+R: 2 0 : 21 : -0.2
+R: 2 1 : 21 : -0.2
+R: 2 2 : 21 : -0.2
+R: 2 3 : 21 : -0.2
+R: 2 4 : 21 : -10.1
+R: 2 5 : 21 : 1.9
+R: 3 0 : 21 : -0.2
+R: 3 1 : 21 : -0.2
+R: 3 2 : 21 : -0.2
+R: 3 3 : 21 : -0.2
+R: 3 4 : 21 : -10.1
+R: 3 5 : 21 : 1.9
+R: 4 0 : 21 : -1.1
+R: 4 1 : 21 : -1.1
+R: 4 2 : 21 : -1.1
+R: 4 3 : 21 : -1.1
+R: 4 4 : 21 : -11.0
+R: 4 5 : 21 : -11.0
+R: 5 0 : 21 : -1.1
+R: 5 1 : 21 : -1.1
+R: 5 2 : 21 : -1.1
+R: 5 3 : 21 : -1.1
+R: 5 4 : 21 : 1.0
+R: 5 5 : 21 : 1.0
+R: 0 0 : 22 : -0.2
+R: 0 1 : 22 : -0.2
+R: 0 2 : 22 : -0.2
+R: 0 3 : 22 : -0.2
+R: 0 4 : 22 : -1.1
+R: 0 5 : 22 : -1.1
+R: 1 0 : 22 : -0.2
+R: 1 1 : 22 : -0.2
+R: 1 2 : 22 : -0.2
+R: 1 3 : 22 : -0.2
+R: 1 4 : 22 : -1.1
+R: 1 5 : 22 : -1.1
+R: 2 0 : 22 : -0.2
+R: 2 1 : 22 : -0.2
+R: 2 2 : 22 : -0.2
+R: 2 3 : 22 : -0.2
+R: 2 4 : 22 : -1.1
+R: 2 5 : 22 : -1.1
+R: 3 0 : 22 : -0.2
+R: 3 1 : 22 : -0.2
+R: 3 2 : 22 : -0.2
+R: 3 3 : 22 : -0.2
+R: 3 4 : 22 : -1.1
+R: 3 5 : 22 : -1.1
+R: 4 0 : 22 : -10.1
+R: 4 1 : 22 : -10.1
+R: 4 2 : 22 : -10.1
+R: 4 3 : 22 : -10.1
+R: 4 4 : 22 : -11.0
+R: 4 5 : 22 : -11.0
+R: 5 0 : 22 : 1.9
+R: 5 1 : 22 : 1.9
+R: 5 2 : 22 : 1.9
+R: 5 3 : 22 : 1.9
+R: 5 4 : 22 : 1.0
+R: 5 5 : 22 : 1.0
+R: 0 0 : 23 : -0.2
+R: 0 1 : 23 : -0.2
+R: 0 2 : 23 : -0.2
+R: 0 3 : 23 : -0.2
+R: 0 4 : 23 : -1.1
+R: 0 5 : 23 : -1.1
+R: 1 0 : 23 : -0.2
+R: 1 1 : 23 : -0.2
+R: 1 2 : 23 : -0.2
+R: 1 3 : 23 : -0.2
+R: 1 4 : 23 : -1.1
+R: 1 5 : 23 : -1.1
+R: 2 0 : 23 : -0.2
+R: 2 1 : 23 : -0.2
+R: 2 2 : 23 : -0.2
+R: 2 3 : 23 : -0.2
+R: 2 4 : 23 : -1.1
+R: 2 5 : 23 : -1.1
+R: 3 0 : 23 : -0.2
+R: 3 1 : 23 : -0.2
+R: 3 2 : 23 : -0.2
+R: 3 3 : 23 : -0.2
+R: 3 4 : 23 : -1.1
+R: 3 5 : 23 : -1.1
+R: 4 0 : 23 : -1.1
+R: 4 1 : 23 : -1.1
+R: 4 2 : 23 : -1.1
+R: 4 3 : 23 : -1.1
+R: 4 4 : 23 : -2.0
+R: 4 5 : 23 : -2.0
+R: 5 0 : 23 : -1.1
+R: 5 1 : 23 : -1.1
+R: 5 2 : 23 : -1.1
+R: 5 3 : 23 : -1.1
+R: 5 4 : 23 : -2.0
+R: 5 5 : 23 : -2.0
+R: 0 0 : 24 : -0.2
+R: 0 1 : 24 : -0.2
+R: 0 2 : 24 : -0.2
+R: 0 3 : 24 : -0.2
+R: 0 4 : 24 : -10.1
+R: 0 5 : 24 : 1.9
+R: 1 0 : 24 : -0.2
+R: 1 1 : 24 : -0.2
+R: 1 2 : 24 : -0.2
+R: 1 3 : 24 : -0.2
+R: 1 4 : 24 : -10.1
+R: 1 5 : 24 : 1.9
+R: 2 0 : 24 : -0.2
+R: 2 1 : 24 : -0.2
+R: 2 2 : 24 : -0.2
+R: 2 3 : 24 : -0.2
+R: 2 4 : 24 : -10.1
+R: 2 5 : 24 : 1.9
+R: 3 0 : 24 : -0.2
+R: 3 1 : 24 : -0.2
+R: 3 2 : 24 : -0.2
+R: 3 3 : 24 : -0.2
+R: 3 4 : 24 : -10.1
+R: 3 5 : 24 : 1.9
+R: 4 0 : 24 : -10.1
+R: 4 1 : 24 : -10.1
+R: 4 2 : 24 : -10.1
+R: 4 3 : 24 : -10.1
+R: 5 0 : 24 : 1.9
+R: 5 1 : 24 : 1.9
+R: 5 2 : 24 : 1.9
+R: 5 3 : 24 : 1.9
+R: 5 4 : 24 : 4.0
+R: 5 5 : 24 : 4.0
+R: 0 0 : 25 : -0.2
+R: 0 1 : 25 : -0.2
+R: 0 2 : 25 : -0.2
+R: 0 3 : 25 : -0.2
+R: 0 4 : 25 : -10.1
+R: 0 5 : 25 : 1.9
+R: 1 0 : 25 : -0.2
+R: 1 1 : 25 : -0.2
+R: 1 2 : 25 : -0.2
+R: 1 3 : 25 : -0.2
+R: 1 4 : 25 : -10.1
+R: 1 5 : 25 : 1.9
+R: 2 0 : 25 : -0.2
+R: 2 1 : 25 : -0.2
+R: 2 2 : 25 : -0.2
+R: 2 3 : 25 : -0.2
+R: 2 4 : 25 : -10.1
+R: 2 5 : 25 : 1.9
+R: 3 0 : 25 : -0.2
+R: 3 1 : 25 : -0.2
+R: 3 2 : 25 : -0.2
+R: 3 3 : 25 : -0.2
+R: 3 4 : 25 : -10.1
+R: 3 5 : 25 : 1.9
+R: 4 0 : 25 : -1.1
+R: 4 1 : 25 : -1.1
+R: 4 2 : 25 : -1.1
+R: 4 3 : 25 : -1.1
+R: 4 4 : 25 : -11.0
+R: 4 5 : 25 : -11.0
+R: 5 0 : 25 : -1.1
+R: 5 1 : 25 : -1.1
+R: 5 2 : 25 : -1.1
+R: 5 3 : 25 : -1.1
+R: 5 4 : 25 : 1.0
+R: 5 5 : 25 : 1.0
+R: 0 0 : 26 : -0.2
+R: 0 1 : 26 : -0.2
+R: 0 2 : 26 : -0.2
+R: 0 3 : 26 : -0.2
+R: 0 4 : 26 : -1.1
+R: 0 5 : 26 : -1.1
+R: 1 0 : 26 : -0.2
+R: 1 1 : 26 : -0.2
+R: 1 2 : 26 : -0.2
+R: 1 3 : 26 : -0.2
+R: 1 4 : 26 : -1.1
+R: 1 5 : 26 : -1.1
+R: 2 0 : 26 : -0.2
+R: 2 1 : 26 : -0.2
+R: 2 2 : 26 : -0.2
+R: 2 3 : 26 : -0.2
+R: 2 4 : 26 : -1.1
+R: 2 5 : 26 : -1.1
+R: 3 0 : 26 : -0.2
+R: 3 1 : 26 : -0.2
+R: 3 2 : 26 : -0.2
+R: 3 3 : 26 : -0.2
+R: 3 4 : 26 : -1.1
+R: 3 5 : 26 : -1.1
+R: 4 0 : 26 : -10.1
+R: 4 1 : 26 : -10.1
+R: 4 2 : 26 : -10.1
+R: 4 3 : 26 : -10.1
+R: 4 4 : 26 : -11.0
+R: 4 5 : 26 : -11.0
+R: 5 0 : 26 : 1.9
+R: 5 1 : 26 : 1.9
+R: 5 2 : 26 : 1.9
+R: 5 3 : 26 : 1.9
+R: 5 4 : 26 : 1.0
+R: 5 5 : 26 : 1.0
+R: 0 0 : 27 : -0.2
+R: 0 1 : 27 : -0.2
+R: 0 2 : 27 : -0.2
+R: 0 3 : 27 : -0.2
+R: 0 4 : 27 : -1.1
+R: 0 5 : 27 : -1.1
+R: 1 0 : 27 : -0.2
+R: 1 1 : 27 : -0.2
+R: 1 2 : 27 : -0.2
+R: 1 3 : 27 : -0.2
+R: 1 4 : 27 : -1.1
+R: 1 5 : 27 : -1.1
+R: 2 0 : 27 : -0.2
+R: 2 1 : 27 : -0.2
+R: 2 2 : 27 : -0.2
+R: 2 3 : 27 : -0.2
+R: 2 4 : 27 : -1.1
+R: 2 5 : 27 : -1.1
+R: 3 0 : 27 : -0.2
+R: 3 1 : 27 : -0.2
+R: 3 2 : 27 : -0.2
+R: 3 3 : 27 : -0.2
+R: 3 4 : 27 : -1.1
+R: 3 5 : 27 : -1.1
+R: 4 0 : 27 : -1.1
+R: 4 1 : 27 : -1.1
+R: 4 2 : 27 : -1.1
+R: 4 3 : 27 : -1.1
+R: 4 4 : 27 : -2.0
+R: 4 5 : 27 : -2.0
+R: 5 0 : 27 : -1.1
+R: 5 1 : 27 : -1.1
+R: 5 2 : 27 : -1.1
+R: 5 3 : 27 : -1.1
+R: 5 4 : 27 : -2.0
+R: 5 5 : 27 : -2.0
+R: 0 0 : 28 : -0.2
+R: 0 1 : 28 : -0.2
+R: 0 2 : 28 : -0.2
+R: 0 3 : 28 : -0.2
+R: 0 4 : 28 : -10.1
+R: 0 5 : 28 : 1.9
+R: 1 0 : 28 : -0.2
+R: 1 1 : 28 : -0.2
+R: 1 2 : 28 : -0.2
+R: 1 3 : 28 : -0.2
+R: 1 4 : 28 : -10.1
+R: 1 5 : 28 : 1.9
+R: 2 0 : 28 : -0.2
+R: 2 1 : 28 : -0.2
+R: 2 2 : 28 : -0.2
+R: 2 3 : 28 : -0.2
+R: 2 4 : 28 : -10.1
+R: 2 5 : 28 : 1.9
+R: 3 0 : 28 : -0.2
+R: 3 1 : 28 : -0.2
+R: 3 2 : 28 : -0.2
+R: 3 3 : 28 : -0.2
+R: 3 4 : 28 : -10.1
+R: 3 5 : 28 : 1.9
+R: 4 0 : 28 : -10.1
+R: 4 1 : 28 : -10.1
+R: 4 2 : 28 : -10.1
+R: 4 3 : 28 : -10.1
+R: 5 0 : 28 : 1.9
+R: 5 1 : 28 : 1.9
+R: 5 2 : 28 : 1.9
+R: 5 3 : 28 : 1.9
+R: 5 4 : 28 : 4.0
+R: 5 5 : 28 : 4.0
+R: 0 0 : 29 : -0.2
+R: 0 1 : 29 : -0.2
+R: 0 2 : 29 : -0.2
+R: 0 3 : 29 : -0.2
+R: 0 4 : 29 : -10.1
+R: 0 5 : 29 : 1.9
+R: 1 0 : 29 : -0.2
+R: 1 1 : 29 : -0.2
+R: 1 2 : 29 : -0.2
+R: 1 3 : 29 : -0.2
+R: 1 4 : 29 : -10.1
+R: 1 5 : 29 : 1.9
+R: 2 0 : 29 : -0.2
+R: 2 1 : 29 : -0.2
+R: 2 2 : 29 : -0.2
+R: 2 3 : 29 : -0.2
+R: 2 4 : 29 : -10.1
+R: 2 5 : 29 : 1.9
+R: 3 0 : 29 : -0.2
+R: 3 1 : 29 : -0.2
+R: 3 2 : 29 : -0.2
+R: 3 3 : 29 : -0.2
+R: 3 4 : 29 : -10.1
+R: 3 5 : 29 : 1.9
+R: 4 0 : 29 : -1.1
+R: 4 1 : 29 : -1.1
+R: 4 2 : 29 : -1.1
+R: 4 3 : 29 : -1.1
+R: 4 4 : 29 : -11.0
+R: 4 5 : 29 : -11.0
+R: 5 0 : 29 : -1.1
+R: 5 1 : 29 : -1.1
+R: 5 2 : 29 : -1.1
+R: 5 3 : 29 : -1.1
+R: 5 4 : 29 : 1.0
+R: 5 5 : 29 : 1.0
+R: 0 0 : 30 : -0.2
+R: 0 1 : 30 : -0.2
+R: 0 2 : 30 : -0.2
+R: 0 3 : 30 : -0.2
+R: 0 4 : 30 : -1.1
+R: 0 5 : 30 : -1.1
+R: 1 0 : 30 : -0.2
+R: 1 1 : 30 : -0.2
+R: 1 2 : 30 : -0.2
+R: 1 3 : 30 : -0.2
+R: 1 4 : 30 : -1.1
+R: 1 5 : 30 : -1.1
+R: 2 0 : 30 : -0.2
+R: 2 1 : 30 : -0.2
+R: 2 2 : 30 : -0.2
+R: 2 3 : 30 : -0.2
+R: 2 4 : 30 : -1.1
+R: 2 5 : 30 : -1.1
+R: 3 0 : 30 : -0.2
+R: 3 1 : 30 : -0.2
+R: 3 2 : 30 : -0.2
+R: 3 3 : 30 : -0.2
+R: 3 4 : 30 : -1.1
+R: 3 5 : 30 : -1.1
+R: 4 0 : 30 : -10.1
+R: 4 1 : 30 : -10.1
+R: 4 2 : 30 : -10.1
+R: 4 3 : 30 : -10.1
+R: 4 4 : 30 : -11.0
+R: 4 5 : 30 : -11.0
+R: 5 0 : 30 : 1.9
+R: 5 1 : 30 : 1.9
+R: 5 2 : 30 : 1.9
+R: 5 3 : 30 : 1.9
+R: 5 4 : 30 : 1.0
+R: 5 5 : 30 : 1.0
+R: 0 0 : 31 : -0.2
+R: 0 1 : 31 : -0.2
+R: 0 2 : 31 : -0.2
+R: 0 3 : 31 : -0.2
+R: 0 4 : 31 : -1.1
+R: 0 5 : 31 : -1.1
+R: 1 0 : 31 : -0.2
+R: 1 1 : 31 : -0.2
+R: 1 2 : 31 : -0.2
+R: 1 3 : 31 : -0.2
+R: 1 4 : 31 : -1.1
+R: 1 5 : 31 : -1.1
+R: 2 0 : 31 : -0.2
+R: 2 1 : 31 : -0.2
+R: 2 2 : 31 : -0.2
+R: 2 3 : 31 : -0.2
+R: 2 4 : 31 : -1.1
+R: 2 5 : 31 : -1.1
+R: 3 0 : 31 : -0.2
+R: 3 1 : 31 : -0.2
+R: 3 2 : 31 : -0.2
+R: 3 3 : 31 : -0.2
+R: 3 4 : 31 : -1.1
+R: 3 5 : 31 : -1.1
+R: 4 0 : 31 : -1.1
+R: 4 1 : 31 : -1.1
+R: 4 2 : 31 : -1.1
+R: 4 3 : 31 : -1.1
+R: 4 4 : 31 : -2.0
+R: 4 5 : 31 : -2.0
+R: 5 0 : 31 : -1.1
+R: 5 1 : 31 : -1.1
+R: 5 2 : 31 : -1.1
+R: 5 3 : 31 : -1.1
+R: 5 4 : 31 : -2.0
+R: 5 5 : 31 : -2.0
+R: 0 0 : 32 : -0.2
+R: 0 1 : 32 : -0.2
+R: 0 2 : 32 : -0.2
+R: 0 3 : 32 : -0.2
+R: 0 4 : 32 : -10.1
+R: 0 5 : 32 : 1.9
+R: 1 0 : 32 : -0.2
+R: 1 1 : 32 : -0.2
+R: 1 2 : 32 : -0.2
+R: 1 3 : 32 : -0.2
+R: 1 4 : 32 : -10.1
+R: 1 5 : 32 : 1.9
+R: 2 0 : 32 : -0.2
+R: 2 1 : 32 : -0.2
+R: 2 2 : 32 : -0.2
+R: 2 3 : 32 : -0.2
+R: 2 4 : 32 : -10.1
+R: 2 5 : 32 : 1.9
+R: 3 0 : 32 : -0.2
+R: 3 1 : 32 : -0.2
+R: 3 2 : 32 : -0.2
+R: 3 3 : 32 : -0.2
+R: 3 4 : 32 : -10.1
+R: 3 5 : 32 : 1.9
+R: 4 0 : 32 : -10.1
+R: 4 1 : 32 : -10.1
+R: 4 2 : 32 : -10.1
+R: 4 3 : 32 : -10.1
+R: 5 0 : 32 : 1.9
+R: 5 1 : 32 : 1.9
+R: 5 2 : 32 : 1.9
+R: 5 3 : 32 : 1.9
+R: 5 4 : 32 : 4.0
+R: 5 5 : 32 : 4.0
+R: 0 0 : 33 : -0.2
+R: 0 1 : 33 : -0.2
+R: 0 2 : 33 : -0.2
+R: 0 3 : 33 : -0.2
+R: 0 4 : 33 : -10.1
+R: 0 5 : 33 : 1.9
+R: 1 0 : 33 : -0.2
+R: 1 1 : 33 : -0.2
+R: 1 2 : 33 : -0.2
+R: 1 3 : 33 : -0.2
+R: 1 4 : 33 : -10.1
+R: 1 5 : 33 : 1.9
+R: 2 0 : 33 : -0.2
+R: 2 1 : 33 : -0.2
+R: 2 2 : 33 : -0.2
+R: 2 3 : 33 : -0.2
+R: 2 4 : 33 : -10.1
+R: 2 5 : 33 : 1.9
+R: 3 0 : 33 : -0.2
+R: 3 1 : 33 : -0.2
+R: 3 2 : 33 : -0.2
+R: 3 3 : 33 : -0.2
+R: 3 4 : 33 : -10.1
+R: 3 5 : 33 : 1.9
+R: 4 0 : 33 : -1.1
+R: 4 1 : 33 : -1.1
+R: 4 2 : 33 : -1.1
+R: 4 3 : 33 : -1.1
+R: 4 4 : 33 : -11.0
+R: 4 5 : 33 : -11.0
+R: 5 0 : 33 : -1.1
+R: 5 1 : 33 : -1.1
+R: 5 2 : 33 : -1.1
+R: 5 3 : 33 : -1.1
+R: 5 4 : 33 : 1.0
+R: 5 5 : 33 : 1.0
+R: 0 0 : 34 : -0.2
+R: 0 1 : 34 : -0.2
+R: 0 2 : 34 : -0.2
+R: 0 3 : 34 : -0.2
+R: 0 4 : 34 : -10.1
+R: 0 5 : 34 : 1.9
+R: 1 0 : 34 : -0.2
+R: 1 1 : 34 : -0.2
+R: 1 2 : 34 : -0.2
+R: 1 3 : 34 : -0.2
+R: 1 4 : 34 : -10.1
+R: 1 5 : 34 : 1.9
+R: 2 0 : 34 : -0.2
+R: 2 1 : 34 : -0.2
+R: 2 2 : 34 : -0.2
+R: 2 3 : 34 : -0.2
+R: 2 4 : 34 : -10.1
+R: 2 5 : 34 : 1.9
+R: 3 0 : 34 : -0.2
+R: 3 1 : 34 : -0.2
+R: 3 2 : 34 : -0.2
+R: 3 3 : 34 : -0.2
+R: 3 4 : 34 : -10.1
+R: 3 5 : 34 : 1.9
+R: 4 0 : 34 : -10.1
+R: 4 1 : 34 : -10.1
+R: 4 2 : 34 : -10.1
+R: 4 3 : 34 : -10.1
+R: 5 0 : 34 : 1.9
+R: 5 1 : 34 : 1.9
+R: 5 2 : 34 : 1.9
+R: 5 3 : 34 : 1.9
+R: 5 4 : 34 : 4.0
+R: 5 5 : 34 : 4.0
+R: 0 0 : 35 : -0.2
+R: 0 1 : 35 : -0.2
+R: 0 2 : 35 : -0.2
+R: 0 3 : 35 : -0.2
+R: 0 4 : 35 : -10.1
+R: 0 5 : 35 : 1.9
+R: 1 0 : 35 : -0.2
+R: 1 1 : 35 : -0.2
+R: 1 2 : 35 : -0.2
+R: 1 3 : 35 : -0.2
+R: 1 4 : 35 : -10.1
+R: 1 5 : 35 : 1.9
+R: 2 0 : 35 : -0.2
+R: 2 1 : 35 : -0.2
+R: 2 2 : 35 : -0.2
+R: 2 3 : 35 : -0.2
+R: 2 4 : 35 : -10.1
+R: 2 5 : 35 : 1.9
+R: 3 0 : 35 : -0.2
+R: 3 1 : 35 : -0.2
+R: 3 2 : 35 : -0.2
+R: 3 3 : 35 : -0.2
+R: 3 4 : 35 : -10.1
+R: 3 5 : 35 : 1.9
+R: 4 0 : 35 : -1.1
+R: 4 1 : 35 : -1.1
+R: 4 2 : 35 : -1.1
+R: 4 3 : 35 : -1.1
+R: 4 4 : 35 : -11.0
+R: 4 5 : 35 : -11.0
+R: 5 0 : 35 : -1.1
+R: 5 1 : 35 : -1.1
+R: 5 2 : 35 : -1.1
+R: 5 3 : 35 : -1.1
+R: 5 4 : 35 : 1.0
+R: 5 5 : 35 : 1.0
+R: 0 0 : 36 : -0.2
+R: 0 1 : 36 : -0.2
+R: 0 2 : 36 : -0.2
+R: 0 3 : 36 : -0.2
+R: 0 4 : 36 : -1.1
+R: 0 5 : 36 : -1.1
+R: 1 0 : 36 : -0.2
+R: 1 1 : 36 : -0.2
+R: 1 2 : 36 : -0.2
+R: 1 3 : 36 : -0.2
+R: 1 4 : 36 : -1.1
+R: 1 5 : 36 : -1.1
+R: 2 0 : 36 : -0.2
+R: 2 1 : 36 : -0.2
+R: 2 2 : 36 : -0.2
+R: 2 3 : 36 : -0.2
+R: 2 4 : 36 : -1.1
+R: 2 5 : 36 : -1.1
+R: 3 0 : 36 : -0.2
+R: 3 1 : 36 : -0.2
+R: 3 2 : 36 : -0.2
+R: 3 3 : 36 : -0.2
+R: 3 4 : 36 : -1.1
+R: 3 5 : 36 : -1.1
+R: 4 0 : 36 : -10.1
+R: 4 1 : 36 : -10.1
+R: 4 2 : 36 : -10.1
+R: 4 3 : 36 : -10.1
+R: 4 4 : 36 : -11.0
+R: 4 5 : 36 : -11.0
+R: 5 0 : 36 : 1.9
+R: 5 1 : 36 : 1.9
+R: 5 2 : 36 : 1.9
+R: 5 3 : 36 : 1.9
+R: 5 4 : 36 : 1.0
+R: 5 5 : 36 : 1.0
+R: 0 0 : 37 : -0.2
+R: 0 1 : 37 : -0.2
+R: 0 2 : 37 : -0.2
+R: 0 3 : 37 : -0.2
+R: 0 4 : 37 : -1.1
+R: 0 5 : 37 : -1.1
+R: 1 0 : 37 : -0.2
+R: 1 1 : 37 : -0.2
+R: 1 2 : 37 : -0.2
+R: 1 3 : 37 : -0.2
+R: 1 4 : 37 : -1.1
+R: 1 5 : 37 : -1.1
+R: 2 0 : 37 : -0.2
+R: 2 1 : 37 : -0.2
+R: 2 2 : 37 : -0.2
+R: 2 3 : 37 : -0.2
+R: 2 4 : 37 : -1.1
+R: 2 5 : 37 : -1.1
+R: 3 0 : 37 : -0.2
+R: 3 1 : 37 : -0.2
+R: 3 2 : 37 : -0.2
+R: 3 3 : 37 : -0.2
+R: 3 4 : 37 : -1.1
+R: 3 5 : 37 : -1.1
+R: 4 0 : 37 : -1.1
+R: 4 1 : 37 : -1.1
+R: 4 2 : 37 : -1.1
+R: 4 3 : 37 : -1.1
+R: 4 4 : 37 : -2.0
+R: 4 5 : 37 : -2.0
+R: 5 0 : 37 : -1.1
+R: 5 1 : 37 : -1.1
+R: 5 2 : 37 : -1.1
+R: 5 3 : 37 : -1.1
+R: 5 4 : 37 : -2.0
+R: 5 5 : 37 : -2.0
+R: 0 0 : 38 : -0.2
+R: 0 1 : 38 : -0.2
+R: 0 2 : 38 : -0.2
+R: 0 3 : 38 : -0.2
+R: 0 4 : 38 : -1.1
+R: 0 5 : 38 : -1.1
+R: 1 0 : 38 : -0.2
+R: 1 1 : 38 : -0.2
+R: 1 2 : 38 : -0.2
+R: 1 3 : 38 : -0.2
+R: 1 4 : 38 : -1.1
+R: 1 5 : 38 : -1.1
+R: 2 0 : 38 : -0.2
+R: 2 1 : 38 : -0.2
+R: 2 2 : 38 : -0.2
+R: 2 3 : 38 : -0.2
+R: 2 4 : 38 : -1.1
+R: 2 5 : 38 : -1.1
+R: 3 0 : 38 : -0.2
+R: 3 1 : 38 : -0.2
+R: 3 2 : 38 : -0.2
+R: 3 3 : 38 : -0.2
+R: 3 4 : 38 : -1.1
+R: 3 5 : 38 : -1.1
+R: 4 0 : 38 : -10.1
+R: 4 1 : 38 : -10.1
+R: 4 2 : 38 : -10.1
+R: 4 3 : 38 : -10.1
+R: 4 4 : 38 : -11.0
+R: 4 5 : 38 : -11.0
+R: 5 0 : 38 : 1.9
+R: 5 1 : 38 : 1.9
+R: 5 2 : 38 : 1.9
+R: 5 3 : 38 : 1.9
+R: 5 4 : 38 : 1.0
+R: 5 5 : 38 : 1.0
+R: 0 0 : 39 : -0.2
+R: 0 1 : 39 : -0.2
+R: 0 2 : 39 : -0.2
+R: 0 3 : 39 : -0.2
+R: 0 4 : 39 : -1.1
+R: 0 5 : 39 : -1.1
+R: 1 0 : 39 : -0.2
+R: 1 1 : 39 : -0.2
+R: 1 2 : 39 : -0.2
+R: 1 3 : 39 : -0.2
+R: 1 4 : 39 : -1.1
+R: 1 5 : 39 : -1.1
+R: 2 0 : 39 : -0.2
+R: 2 1 : 39 : -0.2
+R: 2 2 : 39 : -0.2
+R: 2 3 : 39 : -0.2
+R: 2 4 : 39 : -1.1
+R: 2 5 : 39 : -1.1
+R: 3 0 : 39 : -0.2
+R: 3 1 : 39 : -0.2
+R: 3 2 : 39 : -0.2
+R: 3 3 : 39 : -0.2
+R: 3 4 : 39 : -1.1
+R: 3 5 : 39 : -1.1
+R: 4 0 : 39 : -1.1
+R: 4 1 : 39 : -1.1
+R: 4 2 : 39 : -1.1
+R: 4 3 : 39 : -1.1
+R: 4 4 : 39 : -2.0
+R: 4 5 : 39 : -2.0
+R: 5 0 : 39 : -1.1
+R: 5 1 : 39 : -1.1
+R: 5 2 : 39 : -1.1
+R: 5 3 : 39 : -1.1
+R: 5 4 : 39 : -2.0
+R: 5 5 : 39 : -2.0
+R: 0 0 : 40 : -0.2
+R: 0 1 : 40 : -0.2
+R: 0 2 : 40 : -0.2
+R: 0 3 : 40 : -0.2
+R: 0 4 : 40 : -10.1
+R: 0 5 : 40 : 1.9
+R: 1 0 : 40 : -0.2
+R: 1 1 : 40 : -0.2
+R: 1 2 : 40 : -0.2
+R: 1 3 : 40 : -0.2
+R: 1 4 : 40 : -10.1
+R: 1 5 : 40 : 1.9
+R: 2 0 : 40 : -0.2
+R: 2 1 : 40 : -0.2
+R: 2 2 : 40 : -0.2
+R: 2 3 : 40 : -0.2
+R: 2 4 : 40 : -10.1
+R: 2 5 : 40 : 1.9
+R: 3 0 : 40 : -0.2
+R: 3 1 : 40 : -0.2
+R: 3 2 : 40 : -0.2
+R: 3 3 : 40 : -0.2
+R: 3 4 : 40 : -10.1
+R: 3 5 : 40 : 1.9
+R: 4 0 : 40 : -10.1
+R: 4 1 : 40 : -10.1
+R: 4 2 : 40 : -10.1
+R: 4 3 : 40 : -10.1
+R: 5 0 : 40 : 1.9
+R: 5 1 : 40 : 1.9
+R: 5 2 : 40 : 1.9
+R: 5 3 : 40 : 1.9
+R: 5 4 : 40 : 4.0
+R: 5 5 : 40 : 4.0
+R: 0 0 : 41 : -0.2
+R: 0 1 : 41 : -0.2
+R: 0 2 : 41 : -0.2
+R: 0 3 : 41 : -0.2
+R: 0 4 : 41 : -10.1
+R: 0 5 : 41 : 1.9
+R: 1 0 : 41 : -0.2
+R: 1 1 : 41 : -0.2
+R: 1 2 : 41 : -0.2
+R: 1 3 : 41 : -0.2
+R: 1 4 : 41 : -10.1
+R: 1 5 : 41 : 1.9
+R: 2 0 : 41 : -0.2
+R: 2 1 : 41 : -0.2
+R: 2 2 : 41 : -0.2
+R: 2 3 : 41 : -0.2
+R: 2 4 : 41 : -10.1
+R: 2 5 : 41 : 1.9
+R: 3 0 : 41 : -0.2
+R: 3 1 : 41 : -0.2
+R: 3 2 : 41 : -0.2
+R: 3 3 : 41 : -0.2
+R: 3 4 : 41 : -10.1
+R: 3 5 : 41 : 1.9
+R: 4 0 : 41 : -1.1
+R: 4 1 : 41 : -1.1
+R: 4 2 : 41 : -1.1
+R: 4 3 : 41 : -1.1
+R: 4 4 : 41 : -11.0
+R: 4 5 : 41 : -11.0
+R: 5 0 : 41 : -1.1
+R: 5 1 : 41 : -1.1
+R: 5 2 : 41 : -1.1
+R: 5 3 : 41 : -1.1
+R: 5 4 : 41 : 1.0
+R: 5 5 : 41 : 1.0
+R: 0 0 : 42 : -0.2
+R: 0 1 : 42 : -0.2
+R: 0 2 : 42 : -0.2
+R: 0 3 : 42 : -0.2
+R: 0 4 : 42 : -10.1
+R: 0 5 : 42 : 1.9
+R: 1 0 : 42 : -0.2
+R: 1 1 : 42 : -0.2
+R: 1 2 : 42 : -0.2
+R: 1 3 : 42 : -0.2
+R: 1 4 : 42 : -10.1
+R: 1 5 : 42 : 1.9
+R: 2 0 : 42 : -0.2
+R: 2 1 : 42 : -0.2
+R: 2 2 : 42 : -0.2
+R: 2 3 : 42 : -0.2
+R: 2 4 : 42 : -10.1
+R: 2 5 : 42 : 1.9
+R: 3 0 : 42 : -0.2
+R: 3 1 : 42 : -0.2
+R: 3 2 : 42 : -0.2
+R: 3 3 : 42 : -0.2
+R: 3 4 : 42 : -10.1
+R: 3 5 : 42 : 1.9
+R: 4 0 : 42 : -10.1
+R: 4 1 : 42 : -10.1
+R: 4 2 : 42 : -10.1
+R: 4 3 : 42 : -10.1
+R: 5 0 : 42 : 1.9
+R: 5 1 : 42 : 1.9
+R: 5 2 : 42 : 1.9
+R: 5 3 : 42 : 1.9
+R: 5 4 : 42 : 4.0
+R: 5 5 : 42 : 4.0
+R: 0 0 : 43 : -0.2
+R: 0 1 : 43 : -0.2
+R: 0 2 : 43 : -0.2
+R: 0 3 : 43 : -0.2
+R: 0 4 : 43 : -10.1
+R: 0 5 : 43 : 1.9
+R: 1 0 : 43 : -0.2
+R: 1 1 : 43 : -0.2
+R: 1 2 : 43 : -0.2
+R: 1 3 : 43 : -0.2
+R: 1 4 : 43 : -10.1
+R: 1 5 : 43 : 1.9
+R: 2 0 : 43 : -0.2
+R: 2 1 : 43 : -0.2
+R: 2 2 : 43 : -0.2
+R: 2 3 : 43 : -0.2
+R: 2 4 : 43 : -10.1
+R: 2 5 : 43 : 1.9
+R: 3 0 : 43 : -0.2
+R: 3 1 : 43 : -0.2
+R: 3 2 : 43 : -0.2
+R: 3 3 : 43 : -0.2
+R: 3 4 : 43 : -10.1
+R: 3 5 : 43 : 1.9
+R: 4 0 : 43 : -1.1
+R: 4 1 : 43 : -1.1
+R: 4 2 : 43 : -1.1
+R: 4 3 : 43 : -1.1
+R: 4 4 : 43 : -11.0
+R: 4 5 : 43 : -11.0
+R: 5 0 : 43 : -1.1
+R: 5 1 : 43 : -1.1
+R: 5 2 : 43 : -1.1
+R: 5 3 : 43 : -1.1
+R: 5 4 : 43 : 1.0
+R: 5 5 : 43 : 1.0
+R: 0 0 : 44 : -0.2
+R: 0 1 : 44 : -0.2
+R: 0 2 : 44 : -0.2
+R: 0 3 : 44 : -0.2
+R: 0 4 : 44 : -1.1
+R: 0 5 : 44 : -1.1
+R: 1 0 : 44 : -0.2
+R: 1 1 : 44 : -0.2
+R: 1 2 : 44 : -0.2
+R: 1 3 : 44 : -0.2
+R: 1 4 : 44 : -1.1
+R: 1 5 : 44 : -1.1
+R: 2 0 : 44 : -0.2
+R: 2 1 : 44 : -0.2
+R: 2 2 : 44 : -0.2
+R: 2 3 : 44 : -0.2
+R: 2 4 : 44 : -1.1
+R: 2 5 : 44 : -1.1
+R: 3 0 : 44 : -0.2
+R: 3 1 : 44 : -0.2
+R: 3 2 : 44 : -0.2
+R: 3 3 : 44 : -0.2
+R: 3 4 : 44 : -1.1
+R: 3 5 : 44 : -1.1
+R: 4 0 : 44 : -10.1
+R: 4 1 : 44 : -10.1
+R: 4 2 : 44 : -10.1
+R: 4 3 : 44 : -10.1
+R: 4 4 : 44 : -11.0
+R: 4 5 : 44 : -11.0
+R: 5 0 : 44 : 1.9
+R: 5 1 : 44 : 1.9
+R: 5 2 : 44 : 1.9
+R: 5 3 : 44 : 1.9
+R: 5 4 : 44 : 1.0
+R: 5 5 : 44 : 1.0
+R: 0 0 : 45 : -0.2
+R: 0 1 : 45 : -0.2
+R: 0 2 : 45 : -0.2
+R: 0 3 : 45 : -0.2
+R: 0 4 : 45 : -1.1
+R: 0 5 : 45 : -1.1
+R: 1 0 : 45 : -0.2
+R: 1 1 : 45 : -0.2
+R: 1 2 : 45 : -0.2
+R: 1 3 : 45 : -0.2
+R: 1 4 : 45 : -1.1
+R: 1 5 : 45 : -1.1
+R: 2 0 : 45 : -0.2
+R: 2 1 : 45 : -0.2
+R: 2 2 : 45 : -0.2
+R: 2 3 : 45 : -0.2
+R: 2 4 : 45 : -1.1
+R: 2 5 : 45 : -1.1
+R: 3 0 : 45 : -0.2
+R: 3 1 : 45 : -0.2
+R: 3 2 : 45 : -0.2
+R: 3 3 : 45 : -0.2
+R: 3 4 : 45 : -1.1
+R: 3 5 : 45 : -1.1
+R: 4 0 : 45 : -1.1
+R: 4 1 : 45 : -1.1
+R: 4 2 : 45 : -1.1
+R: 4 3 : 45 : -1.1
+R: 4 4 : 45 : -2.0
+R: 4 5 : 45 : -2.0
+R: 5 0 : 45 : -1.1
+R: 5 1 : 45 : -1.1
+R: 5 2 : 45 : -1.1
+R: 5 3 : 45 : -1.1
+R: 5 4 : 45 : -2.0
+R: 5 5 : 45 : -2.0
+R: 0 0 : 46 : -0.2
+R: 0 1 : 46 : -0.2
+R: 0 2 : 46 : -0.2
+R: 0 3 : 46 : -0.2
+R: 0 4 : 46 : -1.1
+R: 0 5 : 46 : -1.1
+R: 1 0 : 46 : -0.2
+R: 1 1 : 46 : -0.2
+R: 1 2 : 46 : -0.2
+R: 1 3 : 46 : -0.2
+R: 1 4 : 46 : -1.1
+R: 1 5 : 46 : -1.1
+R: 2 0 : 46 : -0.2
+R: 2 1 : 46 : -0.2
+R: 2 2 : 46 : -0.2
+R: 2 3 : 46 : -0.2
+R: 2 4 : 46 : -1.1
+R: 2 5 : 46 : -1.1
+R: 3 0 : 46 : -0.2
+R: 3 1 : 46 : -0.2
+R: 3 2 : 46 : -0.2
+R: 3 3 : 46 : -0.2
+R: 3 4 : 46 : -1.1
+R: 3 5 : 46 : -1.1
+R: 4 0 : 46 : -10.1
+R: 4 1 : 46 : -10.1
+R: 4 2 : 46 : -10.1
+R: 4 3 : 46 : -10.1
+R: 4 4 : 46 : -11.0
+R: 4 5 : 46 : -11.0
+R: 5 0 : 46 : 1.9
+R: 5 1 : 46 : 1.9
+R: 5 2 : 46 : 1.9
+R: 5 3 : 46 : 1.9
+R: 5 4 : 46 : 1.0
+R: 5 5 : 46 : 1.0
+R: 0 0 : 47 : -0.2
+R: 0 1 : 47 : -0.2
+R: 0 2 : 47 : -0.2
+R: 0 3 : 47 : -0.2
+R: 0 4 : 47 : -1.1
+R: 0 5 : 47 : -1.1
+R: 1 0 : 47 : -0.2
+R: 1 1 : 47 : -0.2
+R: 1 2 : 47 : -0.2
+R: 1 3 : 47 : -0.2
+R: 1 4 : 47 : -1.1
+R: 1 5 : 47 : -1.1
+R: 2 0 : 47 : -0.2
+R: 2 1 : 47 : -0.2
+R: 2 2 : 47 : -0.2
+R: 2 3 : 47 : -0.2
+R: 2 4 : 47 : -1.1
+R: 2 5 : 47 : -1.1
+R: 3 0 : 47 : -0.2
+R: 3 1 : 47 : -0.2
+R: 3 2 : 47 : -0.2
+R: 3 3 : 47 : -0.2
+R: 3 4 : 47 : -1.1
+R: 3 5 : 47 : -1.1
+R: 4 0 : 47 : -1.1
+R: 4 1 : 47 : -1.1
+R: 4 2 : 47 : -1.1
+R: 4 3 : 47 : -1.1
+R: 4 4 : 47 : -2.0
+R: 4 5 : 47 : -2.0
+R: 5 0 : 47 : -1.1
+R: 5 1 : 47 : -1.1
+R: 5 2 : 47 : -1.1
+R: 5 3 : 47 : -1.1
+R: 5 4 : 47 : -2.0
+R: 5 5 : 47 : -2.0
+R: 0 0 : 48 : -0.2
+R: 0 1 : 48 : -0.2
+R: 0 2 : 48 : -0.2
+R: 0 3 : 48 : -0.2
+R: 0 4 : 48 : -10.1
+R: 0 5 : 48 : 1.9
+R: 1 0 : 48 : -0.2
+R: 1 1 : 48 : -0.2
+R: 1 2 : 48 : -0.2
+R: 1 3 : 48 : -0.2
+R: 1 4 : 48 : -10.1
+R: 1 5 : 48 : 1.9
+R: 2 0 : 48 : -0.2
+R: 2 1 : 48 : -0.2
+R: 2 2 : 48 : -0.2
+R: 2 3 : 48 : -0.2
+R: 2 4 : 48 : -10.1
+R: 2 5 : 48 : 1.9
+R: 3 0 : 48 : -0.2
+R: 3 1 : 48 : -0.2
+R: 3 2 : 48 : -0.2
+R: 3 3 : 48 : -0.2
+R: 3 4 : 48 : -10.1
+R: 3 5 : 48 : 1.9
+R: 4 0 : 48 : -10.1
+R: 4 1 : 48 : -10.1
+R: 4 2 : 48 : -10.1
+R: 4 3 : 48 : -10.1
+R: 5 0 : 48 : 1.9
+R: 5 1 : 48 : 1.9
+R: 5 2 : 48 : 1.9
+R: 5 3 : 48 : 1.9
+R: 5 4 : 48 : 4.0
+R: 5 5 : 48 : 4.0
+R: 0 0 : 49 : -0.2
+R: 0 1 : 49 : -0.2
+R: 0 2 : 49 : -0.2
+R: 0 3 : 49 : -0.2
+R: 0 4 : 49 : -10.1
+R: 0 5 : 49 : 1.9
+R: 1 0 : 49 : -0.2
+R: 1 1 : 49 : -0.2
+R: 1 2 : 49 : -0.2
+R: 1 3 : 49 : -0.2
+R: 1 4 : 49 : -10.1
+R: 1 5 : 49 : 1.9
+R: 2 0 : 49 : -0.2
+R: 2 1 : 49 : -0.2
+R: 2 2 : 49 : -0.2
+R: 2 3 : 49 : -0.2
+R: 2 4 : 49 : -10.1
+R: 2 5 : 49 : 1.9
+R: 3 0 : 49 : -0.2
+R: 3 1 : 49 : -0.2
+R: 3 2 : 49 : -0.2
+R: 3 3 : 49 : -0.2
+R: 3 4 : 49 : -10.1
+R: 3 5 : 49 : 1.9
+R: 4 0 : 49 : -1.1
+R: 4 1 : 49 : -1.1
+R: 4 2 : 49 : -1.1
+R: 4 3 : 49 : -1.1
+R: 4 4 : 49 : -11.0
+R: 4 5 : 49 : -11.0
+R: 5 0 : 49 : -1.1
+R: 5 1 : 49 : -1.1
+R: 5 2 : 49 : -1.1
+R: 5 3 : 49 : -1.1
+R: 5 4 : 49 : 1.0
+R: 5 5 : 49 : 1.0
+R: 0 0 : 50 : -0.2
+R: 0 1 : 50 : -0.2
+R: 0 2 : 50 : -0.2
+R: 0 3 : 50 : -0.2
+R: 0 4 : 50 : -10.1
+R: 0 5 : 50 : 1.9
+R: 1 0 : 50 : -0.2
+R: 1 1 : 50 : -0.2
+R: 1 2 : 50 : -0.2
+R: 1 3 : 50 : -0.2
+R: 1 4 : 50 : -10.1
+R: 1 5 : 50 : 1.9
+R: 2 0 : 50 : -0.2
+R: 2 1 : 50 : -0.2
+R: 2 2 : 50 : -0.2
+R: 2 3 : 50 : -0.2
+R: 2 4 : 50 : -10.1
+R: 2 5 : 50 : 1.9
+R: 3 0 : 50 : -0.2
+R: 3 1 : 50 : -0.2
+R: 3 2 : 50 : -0.2
+R: 3 3 : 50 : -0.2
+R: 3 4 : 50 : -10.1
+R: 3 5 : 50 : 1.9
+R: 4 0 : 50 : -10.1
+R: 4 1 : 50 : -10.1
+R: 4 2 : 50 : -10.1
+R: 4 3 : 50 : -10.1
+R: 5 0 : 50 : 1.9
+R: 5 1 : 50 : 1.9
+R: 5 2 : 50 : 1.9
+R: 5 3 : 50 : 1.9
+R: 5 4 : 50 : 4.0
+R: 5 5 : 50 : 4.0
+R: 0 0 : 51 : -0.2
+R: 0 1 : 51 : -0.2
+R: 0 2 : 51 : -0.2
+R: 0 3 : 51 : -0.2
+R: 0 4 : 51 : -10.1
+R: 0 5 : 51 : 1.9
+R: 1 0 : 51 : -0.2
+R: 1 1 : 51 : -0.2
+R: 1 2 : 51 : -0.2
+R: 1 3 : 51 : -0.2
+R: 1 4 : 51 : -10.1
+R: 1 5 : 51 : 1.9
+R: 2 0 : 51 : -0.2
+R: 2 1 : 51 : -0.2
+R: 2 2 : 51 : -0.2
+R: 2 3 : 51 : -0.2
+R: 2 4 : 51 : -10.1
+R: 2 5 : 51 : 1.9
+R: 3 0 : 51 : -0.2
+R: 3 1 : 51 : -0.2
+R: 3 2 : 51 : -0.2
+R: 3 3 : 51 : -0.2
+R: 3 4 : 51 : -10.1
+R: 3 5 : 51 : 1.9
+R: 4 0 : 51 : -1.1
+R: 4 1 : 51 : -1.1
+R: 4 2 : 51 : -1.1
+R: 4 3 : 51 : -1.1
+R: 4 4 : 51 : -11.0
+R: 4 5 : 51 : -11.0
+R: 5 0 : 51 : -1.1
+R: 5 1 : 51 : -1.1
+R: 5 2 : 51 : -1.1
+R: 5 3 : 51 : -1.1
+R: 5 4 : 51 : 1.0
+R: 5 5 : 51 : 1.0
+R: 0 0 : 52 : -0.2
+R: 0 1 : 52 : -0.2
+R: 0 2 : 52 : -0.2
+R: 0 3 : 52 : -0.2
+R: 0 4 : 52 : -10.1
+R: 0 5 : 52 : 1.9
+R: 1 0 : 52 : -0.2
+R: 1 1 : 52 : -0.2
+R: 1 2 : 52 : -0.2
+R: 1 3 : 52 : -0.2
+R: 1 4 : 52 : -10.1
+R: 1 5 : 52 : 1.9
+R: 2 0 : 52 : -0.2
+R: 2 1 : 52 : -0.2
+R: 2 2 : 52 : -0.2
+R: 2 3 : 52 : -0.2
+R: 2 4 : 52 : -10.1
+R: 2 5 : 52 : 1.9
+R: 3 0 : 52 : -0.2
+R: 3 1 : 52 : -0.2
+R: 3 2 : 52 : -0.2
+R: 3 3 : 52 : -0.2
+R: 3 4 : 52 : -10.1
+R: 3 5 : 52 : 1.9
+R: 4 0 : 52 : -10.1
+R: 4 1 : 52 : -10.1
+R: 4 2 : 52 : -10.1
+R: 4 3 : 52 : -10.1
+R: 5 0 : 52 : 1.9
+R: 5 1 : 52 : 1.9
+R: 5 2 : 52 : 1.9
+R: 5 3 : 52 : 1.9
+R: 5 4 : 52 : 4.0
+R: 5 5 : 52 : 4.0
+R: 0 0 : 53 : -0.2
+R: 0 1 : 53 : -0.2
+R: 0 2 : 53 : -0.2
+R: 0 3 : 53 : -0.2
+R: 0 4 : 53 : -10.1
+R: 0 5 : 53 : 1.9
+R: 1 0 : 53 : -0.2
+R: 1 1 : 53 : -0.2
+R: 1 2 : 53 : -0.2
+R: 1 3 : 53 : -0.2
+R: 1 4 : 53 : -10.1
+R: 1 5 : 53 : 1.9
+R: 2 0 : 53 : -0.2
+R: 2 1 : 53 : -0.2
+R: 2 2 : 53 : -0.2
+R: 2 3 : 53 : -0.2
+R: 2 4 : 53 : -10.1
+R: 2 5 : 53 : 1.9
+R: 3 0 : 53 : -0.2
+R: 3 1 : 53 : -0.2
+R: 3 2 : 53 : -0.2
+R: 3 3 : 53 : -0.2
+R: 3 4 : 53 : -10.1
+R: 3 5 : 53 : 1.9
+R: 4 0 : 53 : -1.1
+R: 4 1 : 53 : -1.1
+R: 4 2 : 53 : -1.1
+R: 4 3 : 53 : -1.1
+R: 4 4 : 53 : -11.0
+R: 4 5 : 53 : -11.0
+R: 5 0 : 53 : -1.1
+R: 5 1 : 53 : -1.1
+R: 5 2 : 53 : -1.1
+R: 5 3 : 53 : -1.1
+R: 5 4 : 53 : 1.0
+R: 5 5 : 53 : 1.0
+R: 0 0 : 54 : -0.2
+R: 0 1 : 54 : -0.2
+R: 0 2 : 54 : -0.2
+R: 0 3 : 54 : -0.2
+R: 0 4 : 54 : -10.1
+R: 0 5 : 54 : 1.9
+R: 1 0 : 54 : -0.2
+R: 1 1 : 54 : -0.2
+R: 1 2 : 54 : -0.2
+R: 1 3 : 54 : -0.2
+R: 1 4 : 54 : -10.1
+R: 1 5 : 54 : 1.9
+R: 2 0 : 54 : -0.2
+R: 2 1 : 54 : -0.2
+R: 2 2 : 54 : -0.2
+R: 2 3 : 54 : -0.2
+R: 2 4 : 54 : -10.1
+R: 2 5 : 54 : 1.9
+R: 3 0 : 54 : -0.2
+R: 3 1 : 54 : -0.2
+R: 3 2 : 54 : -0.2
+R: 3 3 : 54 : -0.2
+R: 3 4 : 54 : -10.1
+R: 3 5 : 54 : 1.9
+R: 4 0 : 54 : -10.1
+R: 4 1 : 54 : -10.1
+R: 4 2 : 54 : -10.1
+R: 4 3 : 54 : -10.1
+R: 5 0 : 54 : 1.9
+R: 5 1 : 54 : 1.9
+R: 5 2 : 54 : 1.9
+R: 5 3 : 54 : 1.9
+R: 5 4 : 54 : 4.0
+R: 5 5 : 54 : 4.0
+R: 0 0 : 55 : -0.2
+R: 0 1 : 55 : -0.2
+R: 0 2 : 55 : -0.2
+R: 0 3 : 55 : -0.2
+R: 0 4 : 55 : -10.1
+R: 0 5 : 55 : 1.9
+R: 1 0 : 55 : -0.2
+R: 1 1 : 55 : -0.2
+R: 1 2 : 55 : -0.2
+R: 1 3 : 55 : -0.2
+R: 1 4 : 55 : -10.1
+R: 1 5 : 55 : 1.9
+R: 2 0 : 55 : -0.2
+R: 2 1 : 55 : -0.2
+R: 2 2 : 55 : -0.2
+R: 2 3 : 55 : -0.2
+R: 2 4 : 55 : -10.1
+R: 2 5 : 55 : 1.9
+R: 3 0 : 55 : -0.2
+R: 3 1 : 55 : -0.2
+R: 3 2 : 55 : -0.2
+R: 3 3 : 55 : -0.2
+R: 3 4 : 55 : -10.1
+R: 3 5 : 55 : 1.9
+R: 4 0 : 55 : -1.1
+R: 4 1 : 55 : -1.1
+R: 4 2 : 55 : -1.1
+R: 4 3 : 55 : -1.1
+R: 4 4 : 55 : -11.0
+R: 4 5 : 55 : -11.0
+R: 5 0 : 55 : -1.1
+R: 5 1 : 55 : -1.1
+R: 5 2 : 55 : -1.1
+R: 5 3 : 55 : -1.1
+R: 5 4 : 55 : 1.0
+R: 5 5 : 55 : 1.0
+R: 0 0 : 56 : -0.2
+R: 0 1 : 56 : -0.2
+R: 0 2 : 56 : -0.2
+R: 0 3 : 56 : -0.2
+R: 0 4 : 56 : -1.1
+R: 0 5 : 56 : -1.1
+R: 1 0 : 56 : -0.2
+R: 1 1 : 56 : -0.2
+R: 1 2 : 56 : -0.2
+R: 1 3 : 56 : -0.2
+R: 1 4 : 56 : -1.1
+R: 1 5 : 56 : -1.1
+R: 2 0 : 56 : -0.2
+R: 2 1 : 56 : -0.2
+R: 2 2 : 56 : -0.2
+R: 2 3 : 56 : -0.2
+R: 2 4 : 56 : -1.1
+R: 2 5 : 56 : -1.1
+R: 3 0 : 56 : -0.2
+R: 3 1 : 56 : -0.2
+R: 3 2 : 56 : -0.2
+R: 3 3 : 56 : -0.2
+R: 3 4 : 56 : -1.1
+R: 3 5 : 56 : -1.1
+R: 4 0 : 56 : -10.1
+R: 4 1 : 56 : -10.1
+R: 4 2 : 56 : -10.1
+R: 4 3 : 56 : -10.1
+R: 4 4 : 56 : -11.0
+R: 4 5 : 56 : -11.0
+R: 5 0 : 56 : 1.9
+R: 5 1 : 56 : 1.9
+R: 5 2 : 56 : 1.9
+R: 5 3 : 56 : 1.9
+R: 5 4 : 56 : 1.0
+R: 5 5 : 56 : 1.0
+R: 0 0 : 57 : -0.2
+R: 0 1 : 57 : -0.2
+R: 0 2 : 57 : -0.2
+R: 0 3 : 57 : -0.2
+R: 0 4 : 57 : -1.1
+R: 0 5 : 57 : -1.1
+R: 1 0 : 57 : -0.2
+R: 1 1 : 57 : -0.2
+R: 1 2 : 57 : -0.2
+R: 1 3 : 57 : -0.2
+R: 1 4 : 57 : -1.1
+R: 1 5 : 57 : -1.1
+R: 2 0 : 57 : -0.2
+R: 2 1 : 57 : -0.2
+R: 2 2 : 57 : -0.2
+R: 2 3 : 57 : -0.2
+R: 2 4 : 57 : -1.1
+R: 2 5 : 57 : -1.1
+R: 3 0 : 57 : -0.2
+R: 3 1 : 57 : -0.2
+R: 3 2 : 57 : -0.2
+R: 3 3 : 57 : -0.2
+R: 3 4 : 57 : -1.1
+R: 3 5 : 57 : -1.1
+R: 4 0 : 57 : -1.1
+R: 4 1 : 57 : -1.1
+R: 4 2 : 57 : -1.1
+R: 4 3 : 57 : -1.1
+R: 4 4 : 57 : -2.0
+R: 4 5 : 57 : -2.0
+R: 5 0 : 57 : -1.1
+R: 5 1 : 57 : -1.1
+R: 5 2 : 57 : -1.1
+R: 5 3 : 57 : -1.1
+R: 5 4 : 57 : -2.0
+R: 5 5 : 57 : -2.0
+R: 0 0 : 58 : -0.2
+R: 0 1 : 58 : -0.2
+R: 0 2 : 58 : -0.2
+R: 0 3 : 58 : -0.2
+R: 0 4 : 58 : -1.1
+R: 0 5 : 58 : -1.1
+R: 1 0 : 58 : -0.2
+R: 1 1 : 58 : -0.2
+R: 1 2 : 58 : -0.2
+R: 1 3 : 58 : -0.2
+R: 1 4 : 58 : -1.1
+R: 1 5 : 58 : -1.1
+R: 2 0 : 58 : -0.2
+R: 2 1 : 58 : -0.2
+R: 2 2 : 58 : -0.2
+R: 2 3 : 58 : -0.2
+R: 2 4 : 58 : -1.1
+R: 2 5 : 58 : -1.1
+R: 3 0 : 58 : -0.2
+R: 3 1 : 58 : -0.2
+R: 3 2 : 58 : -0.2
+R: 3 3 : 58 : -0.2
+R: 3 4 : 58 : -1.1
+R: 3 5 : 58 : -1.1
+R: 4 0 : 58 : -10.1
+R: 4 1 : 58 : -10.1
+R: 4 2 : 58 : -10.1
+R: 4 3 : 58 : -10.1
+R: 4 4 : 58 : -11.0
+R: 4 5 : 58 : -11.0
+R: 5 0 : 58 : 1.9
+R: 5 1 : 58 : 1.9
+R: 5 2 : 58 : 1.9
+R: 5 3 : 58 : 1.9
+R: 5 4 : 58 : 1.0
+R: 5 5 : 58 : 1.0
+R: 0 0 : 59 : -0.2
+R: 0 1 : 59 : -0.2
+R: 0 2 : 59 : -0.2
+R: 0 3 : 59 : -0.2
+R: 0 4 : 59 : -1.1
+R: 0 5 : 59 : -1.1
+R: 1 0 : 59 : -0.2
+R: 1 1 : 59 : -0.2
+R: 1 2 : 59 : -0.2
+R: 1 3 : 59 : -0.2
+R: 1 4 : 59 : -1.1
+R: 1 5 : 59 : -1.1
+R: 2 0 : 59 : -0.2
+R: 2 1 : 59 : -0.2
+R: 2 2 : 59 : -0.2
+R: 2 3 : 59 : -0.2
+R: 2 4 : 59 : -1.1
+R: 2 5 : 59 : -1.1
+R: 3 0 : 59 : -0.2
+R: 3 1 : 59 : -0.2
+R: 3 2 : 59 : -0.2
+R: 3 3 : 59 : -0.2
+R: 3 4 : 59 : -1.1
+R: 3 5 : 59 : -1.1
+R: 4 0 : 59 : -1.1
+R: 4 1 : 59 : -1.1
+R: 4 2 : 59 : -1.1
+R: 4 3 : 59 : -1.1
+R: 4 4 : 59 : -2.0
+R: 4 5 : 59 : -2.0
+R: 5 0 : 59 : -1.1
+R: 5 1 : 59 : -1.1
+R: 5 2 : 59 : -1.1
+R: 5 3 : 59 : -1.1
+R: 5 4 : 59 : -2.0
+R: 5 5 : 59 : -2.0
+R: 0 0 : 60 : -0.2
+R: 0 1 : 60 : -0.2
+R: 0 2 : 60 : -0.2
+R: 0 3 : 60 : -0.2
+R: 0 4 : 60 : -1.1
+R: 0 5 : 60 : -1.1
+R: 1 0 : 60 : -0.2
+R: 1 1 : 60 : -0.2
+R: 1 2 : 60 : -0.2
+R: 1 3 : 60 : -0.2
+R: 1 4 : 60 : -1.1
+R: 1 5 : 60 : -1.1
+R: 2 0 : 60 : -0.2
+R: 2 1 : 60 : -0.2
+R: 2 2 : 60 : -0.2
+R: 2 3 : 60 : -0.2
+R: 2 4 : 60 : -1.1
+R: 2 5 : 60 : -1.1
+R: 3 0 : 60 : -0.2
+R: 3 1 : 60 : -0.2
+R: 3 2 : 60 : -0.2
+R: 3 3 : 60 : -0.2
+R: 3 4 : 60 : -1.1
+R: 3 5 : 60 : -1.1
+R: 4 0 : 60 : -10.1
+R: 4 1 : 60 : -10.1
+R: 4 2 : 60 : -10.1
+R: 4 3 : 60 : -10.1
+R: 4 4 : 60 : -11.0
+R: 4 5 : 60 : -11.0
+R: 5 0 : 60 : 1.9
+R: 5 1 : 60 : 1.9
+R: 5 2 : 60 : 1.9
+R: 5 3 : 60 : 1.9
+R: 5 4 : 60 : 1.0
+R: 5 5 : 60 : 1.0
+R: 0 0 : 61 : -0.2
+R: 0 1 : 61 : -0.2
+R: 0 2 : 61 : -0.2
+R: 0 3 : 61 : -0.2
+R: 0 4 : 61 : -1.1
+R: 0 5 : 61 : -1.1
+R: 1 0 : 61 : -0.2
+R: 1 1 : 61 : -0.2
+R: 1 2 : 61 : -0.2
+R: 1 3 : 61 : -0.2
+R: 1 4 : 61 : -1.1
+R: 1 5 : 61 : -1.1
+R: 2 0 : 61 : -0.2
+R: 2 1 : 61 : -0.2
+R: 2 2 : 61 : -0.2
+R: 2 3 : 61 : -0.2
+R: 2 4 : 61 : -1.1
+R: 2 5 : 61 : -1.1
+R: 3 0 : 61 : -0.2
+R: 3 1 : 61 : -0.2
+R: 3 2 : 61 : -0.2
+R: 3 3 : 61 : -0.2
+R: 3 4 : 61 : -1.1
+R: 3 5 : 61 : -1.1
+R: 4 0 : 61 : -1.1
+R: 4 1 : 61 : -1.1
+R: 4 2 : 61 : -1.1
+R: 4 3 : 61 : -1.1
+R: 4 4 : 61 : -2.0
+R: 4 5 : 61 : -2.0
+R: 5 0 : 61 : -1.1
+R: 5 1 : 61 : -1.1
+R: 5 2 : 61 : -1.1
+R: 5 3 : 61 : -1.1
+R: 5 4 : 61 : -2.0
+R: 5 5 : 61 : -2.0
+R: 0 0 : 62 : -0.2
+R: 0 1 : 62 : -0.2
+R: 0 2 : 62 : -0.2
+R: 0 3 : 62 : -0.2
+R: 0 4 : 62 : -1.1
+R: 0 5 : 62 : -1.1
+R: 1 0 : 62 : -0.2
+R: 1 1 : 62 : -0.2
+R: 1 2 : 62 : -0.2
+R: 1 3 : 62 : -0.2
+R: 1 4 : 62 : -1.1
+R: 1 5 : 62 : -1.1
+R: 2 0 : 62 : -0.2
+R: 2 1 : 62 : -0.2
+R: 2 2 : 62 : -0.2
+R: 2 3 : 62 : -0.2
+R: 2 4 : 62 : -1.1
+R: 2 5 : 62 : -1.1
+R: 3 0 : 62 : -0.2
+R: 3 1 : 62 : -0.2
+R: 3 2 : 62 : -0.2
+R: 3 3 : 62 : -0.2
+R: 3 4 : 62 : -1.1
+R: 3 5 : 62 : -1.1
+R: 4 0 : 62 : -10.1
+R: 4 1 : 62 : -10.1
+R: 4 2 : 62 : -10.1
+R: 4 3 : 62 : -10.1
+R: 4 4 : 62 : -11.0
+R: 4 5 : 62 : -11.0
+R: 5 0 : 62 : 1.9
+R: 5 1 : 62 : 1.9
+R: 5 2 : 62 : 1.9
+R: 5 3 : 62 : 1.9
+R: 5 4 : 62 : 1.0
+R: 5 5 : 62 : 1.0
+R: 0 0 : 63 : -0.2
+R: 0 1 : 63 : -0.2
+R: 0 2 : 63 : -0.2
+R: 0 3 : 63 : -0.2
+R: 0 4 : 63 : -1.1
+R: 0 5 : 63 : -1.1
+R: 1 0 : 63 : -0.2
+R: 1 1 : 63 : -0.2
+R: 1 2 : 63 : -0.2
+R: 1 3 : 63 : -0.2
+R: 1 4 : 63 : -1.1
+R: 1 5 : 63 : -1.1
+R: 2 0 : 63 : -0.2
+R: 2 1 : 63 : -0.2
+R: 2 2 : 63 : -0.2
+R: 2 3 : 63 : -0.2
+R: 2 4 : 63 : -1.1
+R: 2 5 : 63 : -1.1
+R: 3 0 : 63 : -0.2
+R: 3 1 : 63 : -0.2
+R: 3 2 : 63 : -0.2
+R: 3 3 : 63 : -0.2
+R: 3 4 : 63 : -1.1
+R: 3 5 : 63 : -1.1
+R: 4 0 : 63 : -1.1
+R: 4 1 : 63 : -1.1
+R: 4 2 : 63 : -1.1
+R: 4 3 : 63 : -1.1
+R: 4 4 : 63 : -2.0
+R: 4 5 : 63 : -2.0
+R: 5 0 : 63 : -1.1
+R: 5 1 : 63 : -1.1
+R: 5 2 : 63 : -1.1
+R: 5 3 : 63 : -1.1
+R: 5 4 : 63 : -2.0
+R: 5 5 : 63 : -2.0
+R: 0 0 : 64 : -0.2
+R: 0 1 : 64 : -0.2
+R: 0 2 : 64 : -0.2
+R: 0 3 : 64 : -0.2
+R: 0 4 : 64 : -10.1
+R: 0 5 : 64 : 1.9
+R: 1 0 : 64 : -0.2
+R: 1 1 : 64 : -0.2
+R: 1 2 : 64 : -0.2
+R: 1 3 : 64 : -0.2
+R: 1 4 : 64 : -10.1
+R: 1 5 : 64 : 1.9
+R: 2 0 : 64 : -0.2
+R: 2 1 : 64 : -0.2
+R: 2 2 : 64 : -0.2
+R: 2 3 : 64 : -0.2
+R: 2 4 : 64 : -10.1
+R: 2 5 : 64 : 1.9
+R: 3 0 : 64 : -0.2
+R: 3 1 : 64 : -0.2
+R: 3 2 : 64 : -0.2
+R: 3 3 : 64 : -0.2
+R: 3 4 : 64 : -10.1
+R: 3 5 : 64 : 1.9
+R: 4 0 : 64 : -10.1
+R: 4 1 : 64 : -10.1
+R: 4 2 : 64 : -10.1
+R: 4 3 : 64 : -10.1
+R: 5 0 : 64 : 1.9
+R: 5 1 : 64 : 1.9
+R: 5 2 : 64 : 1.9
+R: 5 3 : 64 : 1.9
+R: 5 4 : 64 : 4.0
+R: 5 5 : 64 : 4.0
+R: 0 0 : 65 : -0.2
+R: 0 1 : 65 : -0.2
+R: 0 2 : 65 : -0.2
+R: 0 3 : 65 : -0.2
+R: 0 4 : 65 : -1.1
+R: 0 5 : 65 : -1.1
+R: 1 0 : 65 : -0.2
+R: 1 1 : 65 : -0.2
+R: 1 2 : 65 : -0.2
+R: 1 3 : 65 : -0.2
+R: 1 4 : 65 : -1.1
+R: 1 5 : 65 : -1.1
+R: 2 0 : 65 : -0.2
+R: 2 1 : 65 : -0.2
+R: 2 2 : 65 : -0.2
+R: 2 3 : 65 : -0.2
+R: 2 4 : 65 : -1.1
+R: 2 5 : 65 : -1.1
+R: 3 0 : 65 : -0.2
+R: 3 1 : 65 : -0.2
+R: 3 2 : 65 : -0.2
+R: 3 3 : 65 : -0.2
+R: 3 4 : 65 : -1.1
+R: 3 5 : 65 : -1.1
+R: 4 0 : 65 : -10.1
+R: 4 1 : 65 : -10.1
+R: 4 2 : 65 : -10.1
+R: 4 3 : 65 : -10.1
+R: 4 4 : 65 : -11.0
+R: 4 5 : 65 : -11.0
+R: 5 0 : 65 : 1.9
+R: 5 1 : 65 : 1.9
+R: 5 2 : 65 : 1.9
+R: 5 3 : 65 : 1.9
+R: 5 4 : 65 : 1.0
+R: 5 5 : 65 : 1.0
+R: 0 0 : 66 : -0.2
+R: 0 1 : 66 : -0.2
+R: 0 2 : 66 : -0.2
+R: 0 3 : 66 : -0.2
+R: 0 4 : 66 : -10.1
+R: 0 5 : 66 : 1.9
+R: 1 0 : 66 : -0.2
+R: 1 1 : 66 : -0.2
+R: 1 2 : 66 : -0.2
+R: 1 3 : 66 : -0.2
+R: 1 4 : 66 : -10.1
+R: 1 5 : 66 : 1.9
+R: 2 0 : 66 : -0.2
+R: 2 1 : 66 : -0.2
+R: 2 2 : 66 : -0.2
+R: 2 3 : 66 : -0.2
+R: 2 4 : 66 : -10.1
+R: 2 5 : 66 : 1.9
+R: 3 0 : 66 : -0.2
+R: 3 1 : 66 : -0.2
+R: 3 2 : 66 : -0.2
+R: 3 3 : 66 : -0.2
+R: 3 4 : 66 : -10.1
+R: 3 5 : 66 : 1.9
+R: 4 0 : 66 : -1.1
+R: 4 1 : 66 : -1.1
+R: 4 2 : 66 : -1.1
+R: 4 3 : 66 : -1.1
+R: 4 4 : 66 : -11.0
+R: 4 5 : 66 : -11.0
+R: 5 0 : 66 : -1.1
+R: 5 1 : 66 : -1.1
+R: 5 2 : 66 : -1.1
+R: 5 3 : 66 : -1.1
+R: 5 4 : 66 : 1.0
+R: 5 5 : 66 : 1.0
+R: 0 0 : 67 : -0.2
+R: 0 1 : 67 : -0.2
+R: 0 2 : 67 : -0.2
+R: 0 3 : 67 : -0.2
+R: 0 4 : 67 : -1.1
+R: 0 5 : 67 : -1.1
+R: 1 0 : 67 : -0.2
+R: 1 1 : 67 : -0.2
+R: 1 2 : 67 : -0.2
+R: 1 3 : 67 : -0.2
+R: 1 4 : 67 : -1.1
+R: 1 5 : 67 : -1.1
+R: 2 0 : 67 : -0.2
+R: 2 1 : 67 : -0.2
+R: 2 2 : 67 : -0.2
+R: 2 3 : 67 : -0.2
+R: 2 4 : 67 : -1.1
+R: 2 5 : 67 : -1.1
+R: 3 0 : 67 : -0.2
+R: 3 1 : 67 : -0.2
+R: 3 2 : 67 : -0.2
+R: 3 3 : 67 : -0.2
+R: 3 4 : 67 : -1.1
+R: 3 5 : 67 : -1.1
+R: 4 0 : 67 : -1.1
+R: 4 1 : 67 : -1.1
+R: 4 2 : 67 : -1.1
+R: 4 3 : 67 : -1.1
+R: 4 4 : 67 : -2.0
+R: 4 5 : 67 : -2.0
+R: 5 0 : 67 : -1.1
+R: 5 1 : 67 : -1.1
+R: 5 2 : 67 : -1.1
+R: 5 3 : 67 : -1.1
+R: 5 4 : 67 : -2.0
+R: 5 5 : 67 : -2.0
+R: 0 0 : 68 : -0.2
+R: 0 1 : 68 : -0.2
+R: 0 2 : 68 : -0.2
+R: 0 3 : 68 : -0.2
+R: 0 4 : 68 : -10.1
+R: 0 5 : 68 : 1.9
+R: 1 0 : 68 : -0.2
+R: 1 1 : 68 : -0.2
+R: 1 2 : 68 : -0.2
+R: 1 3 : 68 : -0.2
+R: 1 4 : 68 : -10.1
+R: 1 5 : 68 : 1.9
+R: 2 0 : 68 : -0.2
+R: 2 1 : 68 : -0.2
+R: 2 2 : 68 : -0.2
+R: 2 3 : 68 : -0.2
+R: 2 4 : 68 : -10.1
+R: 2 5 : 68 : 1.9
+R: 3 0 : 68 : -0.2
+R: 3 1 : 68 : -0.2
+R: 3 2 : 68 : -0.2
+R: 3 3 : 68 : -0.2
+R: 3 4 : 68 : -10.1
+R: 3 5 : 68 : 1.9
+R: 4 0 : 68 : -10.1
+R: 4 1 : 68 : -10.1
+R: 4 2 : 68 : -10.1
+R: 4 3 : 68 : -10.1
+R: 5 0 : 68 : 1.9
+R: 5 1 : 68 : 1.9
+R: 5 2 : 68 : 1.9
+R: 5 3 : 68 : 1.9
+R: 5 4 : 68 : 4.0
+R: 5 5 : 68 : 4.0
+R: 0 0 : 69 : -0.2
+R: 0 1 : 69 : -0.2
+R: 0 2 : 69 : -0.2
+R: 0 3 : 69 : -0.2
+R: 0 4 : 69 : -1.1
+R: 0 5 : 69 : -1.1
+R: 1 0 : 69 : -0.2
+R: 1 1 : 69 : -0.2
+R: 1 2 : 69 : -0.2
+R: 1 3 : 69 : -0.2
+R: 1 4 : 69 : -1.1
+R: 1 5 : 69 : -1.1
+R: 2 0 : 69 : -0.2
+R: 2 1 : 69 : -0.2
+R: 2 2 : 69 : -0.2
+R: 2 3 : 69 : -0.2
+R: 2 4 : 69 : -1.1
+R: 2 5 : 69 : -1.1
+R: 3 0 : 69 : -0.2
+R: 3 1 : 69 : -0.2
+R: 3 2 : 69 : -0.2
+R: 3 3 : 69 : -0.2
+R: 3 4 : 69 : -1.1
+R: 3 5 : 69 : -1.1
+R: 4 0 : 69 : -10.1
+R: 4 1 : 69 : -10.1
+R: 4 2 : 69 : -10.1
+R: 4 3 : 69 : -10.1
+R: 4 4 : 69 : -11.0
+R: 4 5 : 69 : -11.0
+R: 5 0 : 69 : 1.9
+R: 5 1 : 69 : 1.9
+R: 5 2 : 69 : 1.9
+R: 5 3 : 69 : 1.9
+R: 5 4 : 69 : 1.0
+R: 5 5 : 69 : 1.0
+R: 0 0 : 70 : -0.2
+R: 0 1 : 70 : -0.2
+R: 0 2 : 70 : -0.2
+R: 0 3 : 70 : -0.2
+R: 0 4 : 70 : -10.1
+R: 0 5 : 70 : 1.9
+R: 1 0 : 70 : -0.2
+R: 1 1 : 70 : -0.2
+R: 1 2 : 70 : -0.2
+R: 1 3 : 70 : -0.2
+R: 1 4 : 70 : -10.1
+R: 1 5 : 70 : 1.9
+R: 2 0 : 70 : -0.2
+R: 2 1 : 70 : -0.2
+R: 2 2 : 70 : -0.2
+R: 2 3 : 70 : -0.2
+R: 2 4 : 70 : -10.1
+R: 2 5 : 70 : 1.9
+R: 3 0 : 70 : -0.2
+R: 3 1 : 70 : -0.2
+R: 3 2 : 70 : -0.2
+R: 3 3 : 70 : -0.2
+R: 3 4 : 70 : -10.1
+R: 3 5 : 70 : 1.9
+R: 4 0 : 70 : -1.1
+R: 4 1 : 70 : -1.1
+R: 4 2 : 70 : -1.1
+R: 4 3 : 70 : -1.1
+R: 4 4 : 70 : -11.0
+R: 4 5 : 70 : -11.0
+R: 5 0 : 70 : -1.1
+R: 5 1 : 70 : -1.1
+R: 5 2 : 70 : -1.1
+R: 5 3 : 70 : -1.1
+R: 5 4 : 70 : 1.0
+R: 5 5 : 70 : 1.0
+R: 0 0 : 71 : -0.2
+R: 0 1 : 71 : -0.2
+R: 0 2 : 71 : -0.2
+R: 0 3 : 71 : -0.2
+R: 0 4 : 71 : -1.1
+R: 0 5 : 71 : -1.1
+R: 1 0 : 71 : -0.2
+R: 1 1 : 71 : -0.2
+R: 1 2 : 71 : -0.2
+R: 1 3 : 71 : -0.2
+R: 1 4 : 71 : -1.1
+R: 1 5 : 71 : -1.1
+R: 2 0 : 71 : -0.2
+R: 2 1 : 71 : -0.2
+R: 2 2 : 71 : -0.2
+R: 2 3 : 71 : -0.2
+R: 2 4 : 71 : -1.1
+R: 2 5 : 71 : -1.1
+R: 3 0 : 71 : -0.2
+R: 3 1 : 71 : -0.2
+R: 3 2 : 71 : -0.2
+R: 3 3 : 71 : -0.2
+R: 3 4 : 71 : -1.1
+R: 3 5 : 71 : -1.1
+R: 4 0 : 71 : -1.1
+R: 4 1 : 71 : -1.1
+R: 4 2 : 71 : -1.1
+R: 4 3 : 71 : -1.1
+R: 4 4 : 71 : -2.0
+R: 4 5 : 71 : -2.0
+R: 5 0 : 71 : -1.1
+R: 5 1 : 71 : -1.1
+R: 5 2 : 71 : -1.1
+R: 5 3 : 71 : -1.1
+R: 5 4 : 71 : -2.0
+R: 5 5 : 71 : -2.0
+R: 0 0 : 72 : -0.2
+R: 0 1 : 72 : -0.2
+R: 0 2 : 72 : -0.2
+R: 0 3 : 72 : -0.2
+R: 0 4 : 72 : -10.1
+R: 0 5 : 72 : 1.9
+R: 1 0 : 72 : -0.2
+R: 1 1 : 72 : -0.2
+R: 1 2 : 72 : -0.2
+R: 1 3 : 72 : -0.2
+R: 1 4 : 72 : -10.1
+R: 1 5 : 72 : 1.9
+R: 2 0 : 72 : -0.2
+R: 2 1 : 72 : -0.2
+R: 2 2 : 72 : -0.2
+R: 2 3 : 72 : -0.2
+R: 2 4 : 72 : -10.1
+R: 2 5 : 72 : 1.9
+R: 3 0 : 72 : -0.2
+R: 3 1 : 72 : -0.2
+R: 3 2 : 72 : -0.2
+R: 3 3 : 72 : -0.2
+R: 3 4 : 72 : -10.1
+R: 3 5 : 72 : 1.9
+R: 4 0 : 72 : -10.1
+R: 4 1 : 72 : -10.1
+R: 4 2 : 72 : -10.1
+R: 4 3 : 72 : -10.1
+R: 5 0 : 72 : 1.9
+R: 5 1 : 72 : 1.9
+R: 5 2 : 72 : 1.9
+R: 5 3 : 72 : 1.9
+R: 5 4 : 72 : 4.0
+R: 5 5 : 72 : 4.0
+R: 0 0 : 73 : -0.2
+R: 0 1 : 73 : -0.2
+R: 0 2 : 73 : -0.2
+R: 0 3 : 73 : -0.2
+R: 0 4 : 73 : -1.1
+R: 0 5 : 73 : -1.1
+R: 1 0 : 73 : -0.2
+R: 1 1 : 73 : -0.2
+R: 1 2 : 73 : -0.2
+R: 1 3 : 73 : -0.2
+R: 1 4 : 73 : -1.1
+R: 1 5 : 73 : -1.1
+R: 2 0 : 73 : -0.2
+R: 2 1 : 73 : -0.2
+R: 2 2 : 73 : -0.2
+R: 2 3 : 73 : -0.2
+R: 2 4 : 73 : -1.1
+R: 2 5 : 73 : -1.1
+R: 3 0 : 73 : -0.2
+R: 3 1 : 73 : -0.2
+R: 3 2 : 73 : -0.2
+R: 3 3 : 73 : -0.2
+R: 3 4 : 73 : -1.1
+R: 3 5 : 73 : -1.1
+R: 4 0 : 73 : -10.1
+R: 4 1 : 73 : -10.1
+R: 4 2 : 73 : -10.1
+R: 4 3 : 73 : -10.1
+R: 4 4 : 73 : -11.0
+R: 4 5 : 73 : -11.0
+R: 5 0 : 73 : 1.9
+R: 5 1 : 73 : 1.9
+R: 5 2 : 73 : 1.9
+R: 5 3 : 73 : 1.9
+R: 5 4 : 73 : 1.0
+R: 5 5 : 73 : 1.0
+R: 0 0 : 74 : -0.2
+R: 0 1 : 74 : -0.2
+R: 0 2 : 74 : -0.2
+R: 0 3 : 74 : -0.2
+R: 0 4 : 74 : -10.1
+R: 0 5 : 74 : 1.9
+R: 1 0 : 74 : -0.2
+R: 1 1 : 74 : -0.2
+R: 1 2 : 74 : -0.2
+R: 1 3 : 74 : -0.2
+R: 1 4 : 74 : -10.1
+R: 1 5 : 74 : 1.9
+R: 2 0 : 74 : -0.2
+R: 2 1 : 74 : -0.2
+R: 2 2 : 74 : -0.2
+R: 2 3 : 74 : -0.2
+R: 2 4 : 74 : -10.1
+R: 2 5 : 74 : 1.9
+R: 3 0 : 74 : -0.2
+R: 3 1 : 74 : -0.2
+R: 3 2 : 74 : -0.2
+R: 3 3 : 74 : -0.2
+R: 3 4 : 74 : -10.1
+R: 3 5 : 74 : 1.9
+R: 4 0 : 74 : -1.1
+R: 4 1 : 74 : -1.1
+R: 4 2 : 74 : -1.1
+R: 4 3 : 74 : -1.1
+R: 4 4 : 74 : -11.0
+R: 4 5 : 74 : -11.0
+R: 5 0 : 74 : -1.1
+R: 5 1 : 74 : -1.1
+R: 5 2 : 74 : -1.1
+R: 5 3 : 74 : -1.1
+R: 5 4 : 74 : 1.0
+R: 5 5 : 74 : 1.0
+R: 0 0 : 75 : -0.2
+R: 0 1 : 75 : -0.2
+R: 0 2 : 75 : -0.2
+R: 0 3 : 75 : -0.2
+R: 0 4 : 75 : -1.1
+R: 0 5 : 75 : -1.1
+R: 1 0 : 75 : -0.2
+R: 1 1 : 75 : -0.2
+R: 1 2 : 75 : -0.2
+R: 1 3 : 75 : -0.2
+R: 1 4 : 75 : -1.1
+R: 1 5 : 75 : -1.1
+R: 2 0 : 75 : -0.2
+R: 2 1 : 75 : -0.2
+R: 2 2 : 75 : -0.2
+R: 2 3 : 75 : -0.2
+R: 2 4 : 75 : -1.1
+R: 2 5 : 75 : -1.1
+R: 3 0 : 75 : -0.2
+R: 3 1 : 75 : -0.2
+R: 3 2 : 75 : -0.2
+R: 3 3 : 75 : -0.2
+R: 3 4 : 75 : -1.1
+R: 3 5 : 75 : -1.1
+R: 4 0 : 75 : -1.1
+R: 4 1 : 75 : -1.1
+R: 4 2 : 75 : -1.1
+R: 4 3 : 75 : -1.1
+R: 4 4 : 75 : -2.0
+R: 4 5 : 75 : -2.0
+R: 5 0 : 75 : -1.1
+R: 5 1 : 75 : -1.1
+R: 5 2 : 75 : -1.1
+R: 5 3 : 75 : -1.1
+R: 5 4 : 75 : -2.0
+R: 5 5 : 75 : -2.0
+R: 0 0 : 76 : -0.2
+R: 0 1 : 76 : -0.2
+R: 0 2 : 76 : -0.2
+R: 0 3 : 76 : -0.2
+R: 0 4 : 76 : -10.1
+R: 0 5 : 76 : 1.9
+R: 1 0 : 76 : -0.2
+R: 1 1 : 76 : -0.2
+R: 1 2 : 76 : -0.2
+R: 1 3 : 76 : -0.2
+R: 1 4 : 76 : -10.1
+R: 1 5 : 76 : 1.9
+R: 2 0 : 76 : -0.2
+R: 2 1 : 76 : -0.2
+R: 2 2 : 76 : -0.2
+R: 2 3 : 76 : -0.2
+R: 2 4 : 76 : -10.1
+R: 2 5 : 76 : 1.9
+R: 3 0 : 76 : -0.2
+R: 3 1 : 76 : -0.2
+R: 3 2 : 76 : -0.2
+R: 3 3 : 76 : -0.2
+R: 3 4 : 76 : -10.1
+R: 3 5 : 76 : 1.9
+R: 4 0 : 76 : -10.1
+R: 4 1 : 76 : -10.1
+R: 4 2 : 76 : -10.1
+R: 4 3 : 76 : -10.1
+R: 5 0 : 76 : 1.9
+R: 5 1 : 76 : 1.9
+R: 5 2 : 76 : 1.9
+R: 5 3 : 76 : 1.9
+R: 5 4 : 76 : 4.0
+R: 5 5 : 76 : 4.0
+R: 0 0 : 77 : -0.2
+R: 0 1 : 77 : -0.2
+R: 0 2 : 77 : -0.2
+R: 0 3 : 77 : -0.2
+R: 0 4 : 77 : -1.1
+R: 0 5 : 77 : -1.1
+R: 1 0 : 77 : -0.2
+R: 1 1 : 77 : -0.2
+R: 1 2 : 77 : -0.2
+R: 1 3 : 77 : -0.2
+R: 1 4 : 77 : -1.1
+R: 1 5 : 77 : -1.1
+R: 2 0 : 77 : -0.2
+R: 2 1 : 77 : -0.2
+R: 2 2 : 77 : -0.2
+R: 2 3 : 77 : -0.2
+R: 2 4 : 77 : -1.1
+R: 2 5 : 77 : -1.1
+R: 3 0 : 77 : -0.2
+R: 3 1 : 77 : -0.2
+R: 3 2 : 77 : -0.2
+R: 3 3 : 77 : -0.2
+R: 3 4 : 77 : -1.1
+R: 3 5 : 77 : -1.1
+R: 4 0 : 77 : -10.1
+R: 4 1 : 77 : -10.1
+R: 4 2 : 77 : -10.1
+R: 4 3 : 77 : -10.1
+R: 4 4 : 77 : -11.0
+R: 4 5 : 77 : -11.0
+R: 5 0 : 77 : 1.9
+R: 5 1 : 77 : 1.9
+R: 5 2 : 77 : 1.9
+R: 5 3 : 77 : 1.9
+R: 5 4 : 77 : 1.0
+R: 5 5 : 77 : 1.0
+R: 0 0 : 78 : -0.2
+R: 0 1 : 78 : -0.2
+R: 0 2 : 78 : -0.2
+R: 0 3 : 78 : -0.2
+R: 0 4 : 78 : -10.1
+R: 0 5 : 78 : 1.9
+R: 1 0 : 78 : -0.2
+R: 1 1 : 78 : -0.2
+R: 1 2 : 78 : -0.2
+R: 1 3 : 78 : -0.2
+R: 1 4 : 78 : -10.1
+R: 1 5 : 78 : 1.9
+R: 2 0 : 78 : -0.2
+R: 2 1 : 78 : -0.2
+R: 2 2 : 78 : -0.2
+R: 2 3 : 78 : -0.2
+R: 2 4 : 78 : -10.1
+R: 2 5 : 78 : 1.9
+R: 3 0 : 78 : -0.2
+R: 3 1 : 78 : -0.2
+R: 3 2 : 78 : -0.2
+R: 3 3 : 78 : -0.2
+R: 3 4 : 78 : -10.1
+R: 3 5 : 78 : 1.9
+R: 4 0 : 78 : -1.1
+R: 4 1 : 78 : -1.1
+R: 4 2 : 78 : -1.1
+R: 4 3 : 78 : -1.1
+R: 4 4 : 78 : -11.0
+R: 4 5 : 78 : -11.0
+R: 5 0 : 78 : -1.1
+R: 5 1 : 78 : -1.1
+R: 5 2 : 78 : -1.1
+R: 5 3 : 78 : -1.1
+R: 5 4 : 78 : 1.0
+R: 5 5 : 78 : 1.0
+R: 0 0 : 79 : -0.2
+R: 0 1 : 79 : -0.2
+R: 0 2 : 79 : -0.2
+R: 0 3 : 79 : -0.2
+R: 0 4 : 79 : -1.1
+R: 0 5 : 79 : -1.1
+R: 1 0 : 79 : -0.2
+R: 1 1 : 79 : -0.2
+R: 1 2 : 79 : -0.2
+R: 1 3 : 79 : -0.2
+R: 1 4 : 79 : -1.1
+R: 1 5 : 79 : -1.1
+R: 2 0 : 79 : -0.2
+R: 2 1 : 79 : -0.2
+R: 2 2 : 79 : -0.2
+R: 2 3 : 79 : -0.2
+R: 2 4 : 79 : -1.1
+R: 2 5 : 79 : -1.1
+R: 3 0 : 79 : -0.2
+R: 3 1 : 79 : -0.2
+R: 3 2 : 79 : -0.2
+R: 3 3 : 79 : -0.2
+R: 3 4 : 79 : -1.1
+R: 3 5 : 79 : -1.1
+R: 4 0 : 79 : -1.1
+R: 4 1 : 79 : -1.1
+R: 4 2 : 79 : -1.1
+R: 4 3 : 79 : -1.1
+R: 4 4 : 79 : -2.0
+R: 4 5 : 79 : -2.0
+R: 5 0 : 79 : -1.1
+R: 5 1 : 79 : -1.1
+R: 5 2 : 79 : -1.1
+R: 5 3 : 79 : -1.1
+R: 5 4 : 79 : -2.0
+R: 5 5 : 79 : -2.0
+R: 0 0 : 80 : -0.2
+R: 0 1 : 80 : -0.2
+R: 0 2 : 80 : -0.2
+R: 0 3 : 80 : -0.2
+R: 0 4 : 80 : -10.1
+R: 0 5 : 80 : 1.9
+R: 1 0 : 80 : -0.2
+R: 1 1 : 80 : -0.2
+R: 1 2 : 80 : -0.2
+R: 1 3 : 80 : -0.2
+R: 1 4 : 80 : -10.1
+R: 1 5 : 80 : 1.9
+R: 2 0 : 80 : -0.2
+R: 2 1 : 80 : -0.2
+R: 2 2 : 80 : -0.2
+R: 2 3 : 80 : -0.2
+R: 2 4 : 80 : -10.1
+R: 2 5 : 80 : 1.9
+R: 3 0 : 80 : -0.2
+R: 3 1 : 80 : -0.2
+R: 3 2 : 80 : -0.2
+R: 3 3 : 80 : -0.2
+R: 3 4 : 80 : -10.1
+R: 3 5 : 80 : 1.9
+R: 4 0 : 80 : -10.1
+R: 4 1 : 80 : -10.1
+R: 4 2 : 80 : -10.1
+R: 4 3 : 80 : -10.1
+R: 5 0 : 80 : 1.9
+R: 5 1 : 80 : 1.9
+R: 5 2 : 80 : 1.9
+R: 5 3 : 80 : 1.9
+R: 5 5 : 80 : 2.0
+R: 0 0 : 81 : -0.2
+R: 0 1 : 81 : -0.2
+R: 0 2 : 81 : -0.2
+R: 0 3 : 81 : -0.2
+R: 0 4 : 81 : -10.1
+R: 0 5 : 81 : 1.9
+R: 1 0 : 81 : -0.2
+R: 1 1 : 81 : -0.2
+R: 1 2 : 81 : -0.2
+R: 1 3 : 81 : -0.2
+R: 1 4 : 81 : -10.1
+R: 1 5 : 81 : 1.9
+R: 2 0 : 81 : -0.2
+R: 2 1 : 81 : -0.2
+R: 2 2 : 81 : -0.2
+R: 2 3 : 81 : -0.2
+R: 2 4 : 81 : -10.1
+R: 2 5 : 81 : 1.9
+R: 3 0 : 81 : -0.2
+R: 3 1 : 81 : -0.2
+R: 3 2 : 81 : -0.2
+R: 3 3 : 81 : -0.2
+R: 3 4 : 81 : -10.1
+R: 3 5 : 81 : 1.9
+R: 4 0 : 81 : -10.1
+R: 4 1 : 81 : -10.1
+R: 4 2 : 81 : -10.1
+R: 4 3 : 81 : -10.1
+R: 5 0 : 81 : 1.9
+R: 5 1 : 81 : 1.9
+R: 5 2 : 81 : 1.9
+R: 5 3 : 81 : 1.9
+R: 5 5 : 81 : 2.0
+R: 0 0 : 82 : -0.2
+R: 0 1 : 82 : -0.2
+R: 0 2 : 82 : -0.2
+R: 0 3 : 82 : -0.2
+R: 0 4 : 82 : -1.1
+R: 0 5 : 82 : -1.1
+R: 1 0 : 82 : -0.2
+R: 1 1 : 82 : -0.2
+R: 1 2 : 82 : -0.2
+R: 1 3 : 82 : -0.2
+R: 1 4 : 82 : -1.1
+R: 1 5 : 82 : -1.1
+R: 2 0 : 82 : -0.2
+R: 2 1 : 82 : -0.2
+R: 2 2 : 82 : -0.2
+R: 2 3 : 82 : -0.2
+R: 2 4 : 82 : -1.1
+R: 2 5 : 82 : -1.1
+R: 3 0 : 82 : -0.2
+R: 3 1 : 82 : -0.2
+R: 3 2 : 82 : -0.2
+R: 3 3 : 82 : -0.2
+R: 3 4 : 82 : -1.1
+R: 3 5 : 82 : -1.1
+R: 4 0 : 82 : -1.1
+R: 4 1 : 82 : -1.1
+R: 4 2 : 82 : -1.1
+R: 4 3 : 82 : -1.1
+R: 4 4 : 82 : -2.0
+R: 4 5 : 82 : -2.0
+R: 5 0 : 82 : -1.1
+R: 5 1 : 82 : -1.1
+R: 5 2 : 82 : -1.1
+R: 5 3 : 82 : -1.1
+R: 5 4 : 82 : -2.0
+R: 5 5 : 82 : -2.0
+R: 0 0 : 83 : -0.2
+R: 0 1 : 83 : -0.2
+R: 0 2 : 83 : -0.2
+R: 0 3 : 83 : -0.2
+R: 0 4 : 83 : -1.1
+R: 0 5 : 83 : -1.1
+R: 1 0 : 83 : -0.2
+R: 1 1 : 83 : -0.2
+R: 1 2 : 83 : -0.2
+R: 1 3 : 83 : -0.2
+R: 1 4 : 83 : -1.1
+R: 1 5 : 83 : -1.1
+R: 2 0 : 83 : -0.2
+R: 2 1 : 83 : -0.2
+R: 2 2 : 83 : -0.2
+R: 2 3 : 83 : -0.2
+R: 2 4 : 83 : -1.1
+R: 2 5 : 83 : -1.1
+R: 3 0 : 83 : -0.2
+R: 3 1 : 83 : -0.2
+R: 3 2 : 83 : -0.2
+R: 3 3 : 83 : -0.2
+R: 3 4 : 83 : -1.1
+R: 3 5 : 83 : -1.1
+R: 4 0 : 83 : -1.1
+R: 4 1 : 83 : -1.1
+R: 4 2 : 83 : -1.1
+R: 4 3 : 83 : -1.1
+R: 4 4 : 83 : -2.0
+R: 4 5 : 83 : -2.0
+R: 5 0 : 83 : -1.1
+R: 5 1 : 83 : -1.1
+R: 5 2 : 83 : -1.1
+R: 5 3 : 83 : -1.1
+R: 5 4 : 83 : -2.0
+R: 5 5 : 83 : -2.0
+R: 0 0 : 84 : -0.2
+R: 0 1 : 84 : -0.2
+R: 0 2 : 84 : -0.2
+R: 0 3 : 84 : -0.2
+R: 0 4 : 84 : -10.1
+R: 0 5 : 84 : 1.9
+R: 1 0 : 84 : -0.2
+R: 1 1 : 84 : -0.2
+R: 1 2 : 84 : -0.2
+R: 1 3 : 84 : -0.2
+R: 1 4 : 84 : -10.1
+R: 1 5 : 84 : 1.9
+R: 2 0 : 84 : -0.2
+R: 2 1 : 84 : -0.2
+R: 2 2 : 84 : -0.2
+R: 2 3 : 84 : -0.2
+R: 2 4 : 84 : -10.1
+R: 2 5 : 84 : 1.9
+R: 3 0 : 84 : -0.2
+R: 3 1 : 84 : -0.2
+R: 3 2 : 84 : -0.2
+R: 3 3 : 84 : -0.2
+R: 3 4 : 84 : -10.1
+R: 3 5 : 84 : 1.9
+R: 4 0 : 84 : -10.1
+R: 4 1 : 84 : -10.1
+R: 4 2 : 84 : -10.1
+R: 4 3 : 84 : -10.1
+R: 5 0 : 84 : 1.9
+R: 5 1 : 84 : 1.9
+R: 5 2 : 84 : 1.9
+R: 5 3 : 84 : 1.9
+R: 5 5 : 84 : 2.0
+R: 0 0 : 85 : -0.2
+R: 0 1 : 85 : -0.2
+R: 0 2 : 85 : -0.2
+R: 0 3 : 85 : -0.2
+R: 0 4 : 85 : -10.1
+R: 0 5 : 85 : 1.9
+R: 1 0 : 85 : -0.2
+R: 1 1 : 85 : -0.2
+R: 1 2 : 85 : -0.2
+R: 1 3 : 85 : -0.2
+R: 1 4 : 85 : -10.1
+R: 1 5 : 85 : 1.9
+R: 2 0 : 85 : -0.2
+R: 2 1 : 85 : -0.2
+R: 2 2 : 85 : -0.2
+R: 2 3 : 85 : -0.2
+R: 2 4 : 85 : -10.1
+R: 2 5 : 85 : 1.9
+R: 3 0 : 85 : -0.2
+R: 3 1 : 85 : -0.2
+R: 3 2 : 85 : -0.2
+R: 3 3 : 85 : -0.2
+R: 3 4 : 85 : -10.1
+R: 3 5 : 85 : 1.9
+R: 4 0 : 85 : -10.1
+R: 4 1 : 85 : -10.1
+R: 4 2 : 85 : -10.1
+R: 4 3 : 85 : -10.1
+R: 5 0 : 85 : 1.9
+R: 5 1 : 85 : 1.9
+R: 5 2 : 85 : 1.9
+R: 5 3 : 85 : 1.9
+R: 5 5 : 85 : 2.0
+R: 0 0 : 86 : -0.2
+R: 0 1 : 86 : -0.2
+R: 0 2 : 86 : -0.2
+R: 0 3 : 86 : -0.2
+R: 0 4 : 86 : -1.1
+R: 0 5 : 86 : -1.1
+R: 1 0 : 86 : -0.2
+R: 1 1 : 86 : -0.2
+R: 1 2 : 86 : -0.2
+R: 1 3 : 86 : -0.2
+R: 1 4 : 86 : -1.1
+R: 1 5 : 86 : -1.1
+R: 2 0 : 86 : -0.2
+R: 2 1 : 86 : -0.2
+R: 2 2 : 86 : -0.2
+R: 2 3 : 86 : -0.2
+R: 2 4 : 86 : -1.1
+R: 2 5 : 86 : -1.1
+R: 3 0 : 86 : -0.2
+R: 3 1 : 86 : -0.2
+R: 3 2 : 86 : -0.2
+R: 3 3 : 86 : -0.2
+R: 3 4 : 86 : -1.1
+R: 3 5 : 86 : -1.1
+R: 4 0 : 86 : -1.1
+R: 4 1 : 86 : -1.1
+R: 4 2 : 86 : -1.1
+R: 4 3 : 86 : -1.1
+R: 4 4 : 86 : -2.0
+R: 4 5 : 86 : -2.0
+R: 5 0 : 86 : -1.1
+R: 5 1 : 86 : -1.1
+R: 5 2 : 86 : -1.1
+R: 5 3 : 86 : -1.1
+R: 5 4 : 86 : -2.0
+R: 5 5 : 86 : -2.0
+R: 0 0 : 87 : -0.2
+R: 0 1 : 87 : -0.2
+R: 0 2 : 87 : -0.2
+R: 0 3 : 87 : -0.2
+R: 0 4 : 87 : -1.1
+R: 0 5 : 87 : -1.1
+R: 1 0 : 87 : -0.2
+R: 1 1 : 87 : -0.2
+R: 1 2 : 87 : -0.2
+R: 1 3 : 87 : -0.2
+R: 1 4 : 87 : -1.1
+R: 1 5 : 87 : -1.1
+R: 2 0 : 87 : -0.2
+R: 2 1 : 87 : -0.2
+R: 2 2 : 87 : -0.2
+R: 2 3 : 87 : -0.2
+R: 2 4 : 87 : -1.1
+R: 2 5 : 87 : -1.1
+R: 3 0 : 87 : -0.2
+R: 3 1 : 87 : -0.2
+R: 3 2 : 87 : -0.2
+R: 3 3 : 87 : -0.2
+R: 3 4 : 87 : -1.1
+R: 3 5 : 87 : -1.1
+R: 4 0 : 87 : -1.1
+R: 4 1 : 87 : -1.1
+R: 4 2 : 87 : -1.1
+R: 4 3 : 87 : -1.1
+R: 4 4 : 87 : -2.0
+R: 4 5 : 87 : -2.0
+R: 5 0 : 87 : -1.1
+R: 5 1 : 87 : -1.1
+R: 5 2 : 87 : -1.1
+R: 5 3 : 87 : -1.1
+R: 5 4 : 87 : -2.0
+R: 5 5 : 87 : -2.0
+R: 0 0 : 88 : -0.2
+R: 0 1 : 88 : -0.2
+R: 0 2 : 88 : -0.2
+R: 0 3 : 88 : -0.2
+R: 0 4 : 88 : -10.1
+R: 0 5 : 88 : 1.9
+R: 1 0 : 88 : -0.2
+R: 1 1 : 88 : -0.2
+R: 1 2 : 88 : -0.2
+R: 1 3 : 88 : -0.2
+R: 1 4 : 88 : -10.1
+R: 1 5 : 88 : 1.9
+R: 2 0 : 88 : -0.2
+R: 2 1 : 88 : -0.2
+R: 2 2 : 88 : -0.2
+R: 2 3 : 88 : -0.2
+R: 2 4 : 88 : -10.1
+R: 2 5 : 88 : 1.9
+R: 3 0 : 88 : -0.2
+R: 3 1 : 88 : -0.2
+R: 3 2 : 88 : -0.2
+R: 3 3 : 88 : -0.2
+R: 3 4 : 88 : -10.1
+R: 3 5 : 88 : 1.9
+R: 4 0 : 88 : -10.1
+R: 4 1 : 88 : -10.1
+R: 4 2 : 88 : -10.1
+R: 4 3 : 88 : -10.1
+R: 5 0 : 88 : 1.9
+R: 5 1 : 88 : 1.9
+R: 5 2 : 88 : 1.9
+R: 5 3 : 88 : 1.9
+R: 5 5 : 88 : 2.0
+R: 0 0 : 89 : -0.2
+R: 0 1 : 89 : -0.2
+R: 0 2 : 89 : -0.2
+R: 0 3 : 89 : -0.2
+R: 0 4 : 89 : -10.1
+R: 0 5 : 89 : 1.9
+R: 1 0 : 89 : -0.2
+R: 1 1 : 89 : -0.2
+R: 1 2 : 89 : -0.2
+R: 1 3 : 89 : -0.2
+R: 1 4 : 89 : -10.1
+R: 1 5 : 89 : 1.9
+R: 2 0 : 89 : -0.2
+R: 2 1 : 89 : -0.2
+R: 2 2 : 89 : -0.2
+R: 2 3 : 89 : -0.2
+R: 2 4 : 89 : -10.1
+R: 2 5 : 89 : 1.9
+R: 3 0 : 89 : -0.2
+R: 3 1 : 89 : -0.2
+R: 3 2 : 89 : -0.2
+R: 3 3 : 89 : -0.2
+R: 3 4 : 89 : -10.1
+R: 3 5 : 89 : 1.9
+R: 4 0 : 89 : -10.1
+R: 4 1 : 89 : -10.1
+R: 4 2 : 89 : -10.1
+R: 4 3 : 89 : -10.1
+R: 5 0 : 89 : 1.9
+R: 5 1 : 89 : 1.9
+R: 5 2 : 89 : 1.9
+R: 5 3 : 89 : 1.9
+R: 5 5 : 89 : 2.0
+R: 0 0 : 90 : -0.2
+R: 0 1 : 90 : -0.2
+R: 0 2 : 90 : -0.2
+R: 0 3 : 90 : -0.2
+R: 0 4 : 90 : -1.1
+R: 0 5 : 90 : -1.1
+R: 1 0 : 90 : -0.2
+R: 1 1 : 90 : -0.2
+R: 1 2 : 90 : -0.2
+R: 1 3 : 90 : -0.2
+R: 1 4 : 90 : -1.1
+R: 1 5 : 90 : -1.1
+R: 2 0 : 90 : -0.2
+R: 2 1 : 90 : -0.2
+R: 2 2 : 90 : -0.2
+R: 2 3 : 90 : -0.2
+R: 2 4 : 90 : -1.1
+R: 2 5 : 90 : -1.1
+R: 3 0 : 90 : -0.2
+R: 3 1 : 90 : -0.2
+R: 3 2 : 90 : -0.2
+R: 3 3 : 90 : -0.2
+R: 3 4 : 90 : -1.1
+R: 3 5 : 90 : -1.1
+R: 4 0 : 90 : -1.1
+R: 4 1 : 90 : -1.1
+R: 4 2 : 90 : -1.1
+R: 4 3 : 90 : -1.1
+R: 4 4 : 90 : -2.0
+R: 4 5 : 90 : -2.0
+R: 5 0 : 90 : -1.1
+R: 5 1 : 90 : -1.1
+R: 5 2 : 90 : -1.1
+R: 5 3 : 90 : -1.1
+R: 5 4 : 90 : -2.0
+R: 5 5 : 90 : -2.0
+R: 0 0 : 91 : -0.2
+R: 0 1 : 91 : -0.2
+R: 0 2 : 91 : -0.2
+R: 0 3 : 91 : -0.2
+R: 0 4 : 91 : -1.1
+R: 0 5 : 91 : -1.1
+R: 1 0 : 91 : -0.2
+R: 1 1 : 91 : -0.2
+R: 1 2 : 91 : -0.2
+R: 1 3 : 91 : -0.2
+R: 1 4 : 91 : -1.1
+R: 1 5 : 91 : -1.1
+R: 2 0 : 91 : -0.2
+R: 2 1 : 91 : -0.2
+R: 2 2 : 91 : -0.2
+R: 2 3 : 91 : -0.2
+R: 2 4 : 91 : -1.1
+R: 2 5 : 91 : -1.1
+R: 3 0 : 91 : -0.2
+R: 3 1 : 91 : -0.2
+R: 3 2 : 91 : -0.2
+R: 3 3 : 91 : -0.2
+R: 3 4 : 91 : -1.1
+R: 3 5 : 91 : -1.1
+R: 4 0 : 91 : -1.1
+R: 4 1 : 91 : -1.1
+R: 4 2 : 91 : -1.1
+R: 4 3 : 91 : -1.1
+R: 4 4 : 91 : -2.0
+R: 4 5 : 91 : -2.0
+R: 5 0 : 91 : -1.1
+R: 5 1 : 91 : -1.1
+R: 5 2 : 91 : -1.1
+R: 5 3 : 91 : -1.1
+R: 5 4 : 91 : -2.0
+R: 5 5 : 91 : -2.0
+R: 0 0 : 92 : -0.2
+R: 0 1 : 92 : -0.2
+R: 0 2 : 92 : -0.2
+R: 0 3 : 92 : -0.2
+R: 0 4 : 92 : -10.1
+R: 0 5 : 92 : 1.9
+R: 1 0 : 92 : -0.2
+R: 1 1 : 92 : -0.2
+R: 1 2 : 92 : -0.2
+R: 1 3 : 92 : -0.2
+R: 1 4 : 92 : -10.1
+R: 1 5 : 92 : 1.9
+R: 2 0 : 92 : -0.2
+R: 2 1 : 92 : -0.2
+R: 2 2 : 92 : -0.2
+R: 2 3 : 92 : -0.2
+R: 2 4 : 92 : -10.1
+R: 2 5 : 92 : 1.9
+R: 3 0 : 92 : -0.2
+R: 3 1 : 92 : -0.2
+R: 3 2 : 92 : -0.2
+R: 3 3 : 92 : -0.2
+R: 3 4 : 92 : -10.1
+R: 3 5 : 92 : 1.9
+R: 4 0 : 92 : -10.1
+R: 4 1 : 92 : -10.1
+R: 4 2 : 92 : -10.1
+R: 4 3 : 92 : -10.1
+R: 5 0 : 92 : 1.9
+R: 5 1 : 92 : 1.9
+R: 5 2 : 92 : 1.9
+R: 5 3 : 92 : 1.9
+R: 5 5 : 92 : 2.0
+R: 0 0 : 93 : -0.2
+R: 0 1 : 93 : -0.2
+R: 0 2 : 93 : -0.2
+R: 0 3 : 93 : -0.2
+R: 0 4 : 93 : -10.1
+R: 0 5 : 93 : 1.9
+R: 1 0 : 93 : -0.2
+R: 1 1 : 93 : -0.2
+R: 1 2 : 93 : -0.2
+R: 1 3 : 93 : -0.2
+R: 1 4 : 93 : -10.1
+R: 1 5 : 93 : 1.9
+R: 2 0 : 93 : -0.2
+R: 2 1 : 93 : -0.2
+R: 2 2 : 93 : -0.2
+R: 2 3 : 93 : -0.2
+R: 2 4 : 93 : -10.1
+R: 2 5 : 93 : 1.9
+R: 3 0 : 93 : -0.2
+R: 3 1 : 93 : -0.2
+R: 3 2 : 93 : -0.2
+R: 3 3 : 93 : -0.2
+R: 3 4 : 93 : -10.1
+R: 3 5 : 93 : 1.9
+R: 4 0 : 93 : -10.1
+R: 4 1 : 93 : -10.1
+R: 4 2 : 93 : -10.1
+R: 4 3 : 93 : -10.1
+R: 5 0 : 93 : 1.9
+R: 5 1 : 93 : 1.9
+R: 5 2 : 93 : 1.9
+R: 5 3 : 93 : 1.9
+R: 5 5 : 93 : 2.0
+R: 0 0 : 94 : -0.2
+R: 0 1 : 94 : -0.2
+R: 0 2 : 94 : -0.2
+R: 0 3 : 94 : -0.2
+R: 0 4 : 94 : -1.1
+R: 0 5 : 94 : -1.1
+R: 1 0 : 94 : -0.2
+R: 1 1 : 94 : -0.2
+R: 1 2 : 94 : -0.2
+R: 1 3 : 94 : -0.2
+R: 1 4 : 94 : -1.1
+R: 1 5 : 94 : -1.1
+R: 2 0 : 94 : -0.2
+R: 2 1 : 94 : -0.2
+R: 2 2 : 94 : -0.2
+R: 2 3 : 94 : -0.2
+R: 2 4 : 94 : -1.1
+R: 2 5 : 94 : -1.1
+R: 3 0 : 94 : -0.2
+R: 3 1 : 94 : -0.2
+R: 3 2 : 94 : -0.2
+R: 3 3 : 94 : -0.2
+R: 3 4 : 94 : -1.1
+R: 3 5 : 94 : -1.1
+R: 4 0 : 94 : -1.1
+R: 4 1 : 94 : -1.1
+R: 4 2 : 94 : -1.1
+R: 4 3 : 94 : -1.1
+R: 4 4 : 94 : -2.0
+R: 4 5 : 94 : -2.0
+R: 5 0 : 94 : -1.1
+R: 5 1 : 94 : -1.1
+R: 5 2 : 94 : -1.1
+R: 5 3 : 94 : -1.1
+R: 5 4 : 94 : -2.0
+R: 5 5 : 94 : -2.0
+R: 0 0 : 95 : -0.2
+R: 0 1 : 95 : -0.2
+R: 0 2 : 95 : -0.2
+R: 0 3 : 95 : -0.2
+R: 0 4 : 95 : -1.1
+R: 0 5 : 95 : -1.1
+R: 1 0 : 95 : -0.2
+R: 1 1 : 95 : -0.2
+R: 1 2 : 95 : -0.2
+R: 1 3 : 95 : -0.2
+R: 1 4 : 95 : -1.1
+R: 1 5 : 95 : -1.1
+R: 2 0 : 95 : -0.2
+R: 2 1 : 95 : -0.2
+R: 2 2 : 95 : -0.2
+R: 2 3 : 95 : -0.2
+R: 2 4 : 95 : -1.1
+R: 2 5 : 95 : -1.1
+R: 3 0 : 95 : -0.2
+R: 3 1 : 95 : -0.2
+R: 3 2 : 95 : -0.2
+R: 3 3 : 95 : -0.2
+R: 3 4 : 95 : -1.1
+R: 3 5 : 95 : -1.1
+R: 4 0 : 95 : -1.1
+R: 4 1 : 95 : -1.1
+R: 4 2 : 95 : -1.1
+R: 4 3 : 95 : -1.1
+R: 4 4 : 95 : -2.0
+R: 4 5 : 95 : -2.0
+R: 5 0 : 95 : -1.1
+R: 5 1 : 95 : -1.1
+R: 5 2 : 95 : -1.1
+R: 5 3 : 95 : -1.1
+R: 5 4 : 95 : -2.0
+R: 5 5 : 95 : -2.0
+R: 0 0 : 96 : -0.2
+R: 0 1 : 96 : -0.2
+R: 0 2 : 96 : -0.2
+R: 0 3 : 96 : -0.2
+R: 0 4 : 96 : -10.1
+R: 0 5 : 96 : 1.9
+R: 1 0 : 96 : -0.2
+R: 1 1 : 96 : -0.2
+R: 1 2 : 96 : -0.2
+R: 1 3 : 96 : -0.2
+R: 1 4 : 96 : -10.1
+R: 1 5 : 96 : 1.9
+R: 2 0 : 96 : -0.2
+R: 2 1 : 96 : -0.2
+R: 2 2 : 96 : -0.2
+R: 2 3 : 96 : -0.2
+R: 2 4 : 96 : -10.1
+R: 2 5 : 96 : 1.9
+R: 3 0 : 96 : -0.2
+R: 3 1 : 96 : -0.2
+R: 3 2 : 96 : -0.2
+R: 3 3 : 96 : -0.2
+R: 3 4 : 96 : -10.1
+R: 3 5 : 96 : 1.9
+R: 4 0 : 96 : -10.1
+R: 4 1 : 96 : -10.1
+R: 4 2 : 96 : -10.1
+R: 4 3 : 96 : -10.1
+R: 5 0 : 96 : 1.9
+R: 5 1 : 96 : 1.9
+R: 5 2 : 96 : 1.9
+R: 5 3 : 96 : 1.9
+R: 5 4 : 96 : 4.0
+R: 5 5 : 96 : 4.0
+R: 0 0 : 97 : -0.2
+R: 0 1 : 97 : -0.2
+R: 0 2 : 97 : -0.2
+R: 0 3 : 97 : -0.2
+R: 0 4 : 97 : -10.1
+R: 0 5 : 97 : 1.9
+R: 1 0 : 97 : -0.2
+R: 1 1 : 97 : -0.2
+R: 1 2 : 97 : -0.2
+R: 1 3 : 97 : -0.2
+R: 1 4 : 97 : -10.1
+R: 1 5 : 97 : 1.9
+R: 2 0 : 97 : -0.2
+R: 2 1 : 97 : -0.2
+R: 2 2 : 97 : -0.2
+R: 2 3 : 97 : -0.2
+R: 2 4 : 97 : -10.1
+R: 2 5 : 97 : 1.9
+R: 3 0 : 97 : -0.2
+R: 3 1 : 97 : -0.2
+R: 3 2 : 97 : -0.2
+R: 3 3 : 97 : -0.2
+R: 3 4 : 97 : -10.1
+R: 3 5 : 97 : 1.9
+R: 4 0 : 97 : -10.1
+R: 4 1 : 97 : -10.1
+R: 4 2 : 97 : -10.1
+R: 4 3 : 97 : -10.1
+R: 5 0 : 97 : 1.9
+R: 5 1 : 97 : 1.9
+R: 5 2 : 97 : 1.9
+R: 5 3 : 97 : 1.9
+R: 5 4 : 97 : 4.0
+R: 5 5 : 97 : 4.0
+R: 0 0 : 98 : -0.2
+R: 0 1 : 98 : -0.2
+R: 0 2 : 98 : -0.2
+R: 0 3 : 98 : -0.2
+R: 0 4 : 98 : -10.1
+R: 0 5 : 98 : 1.9
+R: 1 0 : 98 : -0.2
+R: 1 1 : 98 : -0.2
+R: 1 2 : 98 : -0.2
+R: 1 3 : 98 : -0.2
+R: 1 4 : 98 : -10.1
+R: 1 5 : 98 : 1.9
+R: 2 0 : 98 : -0.2
+R: 2 1 : 98 : -0.2
+R: 2 2 : 98 : -0.2
+R: 2 3 : 98 : -0.2
+R: 2 4 : 98 : -10.1
+R: 2 5 : 98 : 1.9
+R: 3 0 : 98 : -0.2
+R: 3 1 : 98 : -0.2
+R: 3 2 : 98 : -0.2
+R: 3 3 : 98 : -0.2
+R: 3 4 : 98 : -10.1
+R: 3 5 : 98 : 1.9
+R: 4 0 : 98 : -1.1
+R: 4 1 : 98 : -1.1
+R: 4 2 : 98 : -1.1
+R: 4 3 : 98 : -1.1
+R: 4 4 : 98 : -11.0
+R: 4 5 : 98 : -11.0
+R: 5 0 : 98 : -1.1
+R: 5 1 : 98 : -1.1
+R: 5 2 : 98 : -1.1
+R: 5 3 : 98 : -1.1
+R: 5 4 : 98 : 1.0
+R: 5 5 : 98 : 1.0
+R: 0 0 : 99 : -0.2
+R: 0 1 : 99 : -0.2
+R: 0 2 : 99 : -0.2
+R: 0 3 : 99 : -0.2
+R: 0 4 : 99 : -10.1
+R: 0 5 : 99 : 1.9
+R: 1 0 : 99 : -0.2
+R: 1 1 : 99 : -0.2
+R: 1 2 : 99 : -0.2
+R: 1 3 : 99 : -0.2
+R: 1 4 : 99 : -10.1
+R: 1 5 : 99 : 1.9
+R: 2 0 : 99 : -0.2
+R: 2 1 : 99 : -0.2
+R: 2 2 : 99 : -0.2
+R: 2 3 : 99 : -0.2
+R: 2 4 : 99 : -10.1
+R: 2 5 : 99 : 1.9
+R: 3 0 : 99 : -0.2
+R: 3 1 : 99 : -0.2
+R: 3 2 : 99 : -0.2
+R: 3 3 : 99 : -0.2
+R: 3 4 : 99 : -10.1
+R: 3 5 : 99 : 1.9
+R: 4 0 : 99 : -1.1
+R: 4 1 : 99 : -1.1
+R: 4 2 : 99 : -1.1
+R: 4 3 : 99 : -1.1
+R: 4 4 : 99 : -11.0
+R: 4 5 : 99 : -11.0
+R: 5 0 : 99 : -1.1
+R: 5 1 : 99 : -1.1
+R: 5 2 : 99 : -1.1
+R: 5 3 : 99 : -1.1
+R: 5 4 : 99 : 1.0
+R: 5 5 : 99 : 1.0
+R: 0 0 : 100 : -0.2
+R: 0 1 : 100 : -0.2
+R: 0 2 : 100 : -0.2
+R: 0 3 : 100 : -0.2
+R: 0 4 : 100 : -1.1
+R: 0 5 : 100 : -1.1
+R: 1 0 : 100 : -0.2
+R: 1 1 : 100 : -0.2
+R: 1 2 : 100 : -0.2
+R: 1 3 : 100 : -0.2
+R: 1 4 : 100 : -1.1
+R: 1 5 : 100 : -1.1
+R: 2 0 : 100 : -0.2
+R: 2 1 : 100 : -0.2
+R: 2 2 : 100 : -0.2
+R: 2 3 : 100 : -0.2
+R: 2 4 : 100 : -1.1
+R: 2 5 : 100 : -1.1
+R: 3 0 : 100 : -0.2
+R: 3 1 : 100 : -0.2
+R: 3 2 : 100 : -0.2
+R: 3 3 : 100 : -0.2
+R: 3 4 : 100 : -1.1
+R: 3 5 : 100 : -1.1
+R: 4 0 : 100 : -10.1
+R: 4 1 : 100 : -10.1
+R: 4 2 : 100 : -10.1
+R: 4 3 : 100 : -10.1
+R: 4 4 : 100 : -11.0
+R: 4 5 : 100 : -11.0
+R: 5 0 : 100 : 1.9
+R: 5 1 : 100 : 1.9
+R: 5 2 : 100 : 1.9
+R: 5 3 : 100 : 1.9
+R: 5 4 : 100 : 1.0
+R: 5 5 : 100 : 1.0
+R: 0 0 : 101 : -0.2
+R: 0 1 : 101 : -0.2
+R: 0 2 : 101 : -0.2
+R: 0 3 : 101 : -0.2
+R: 0 4 : 101 : -1.1
+R: 0 5 : 101 : -1.1
+R: 1 0 : 101 : -0.2
+R: 1 1 : 101 : -0.2
+R: 1 2 : 101 : -0.2
+R: 1 3 : 101 : -0.2
+R: 1 4 : 101 : -1.1
+R: 1 5 : 101 : -1.1
+R: 2 0 : 101 : -0.2
+R: 2 1 : 101 : -0.2
+R: 2 2 : 101 : -0.2
+R: 2 3 : 101 : -0.2
+R: 2 4 : 101 : -1.1
+R: 2 5 : 101 : -1.1
+R: 3 0 : 101 : -0.2
+R: 3 1 : 101 : -0.2
+R: 3 2 : 101 : -0.2
+R: 3 3 : 101 : -0.2
+R: 3 4 : 101 : -1.1
+R: 3 5 : 101 : -1.1
+R: 4 0 : 101 : -10.1
+R: 4 1 : 101 : -10.1
+R: 4 2 : 101 : -10.1
+R: 4 3 : 101 : -10.1
+R: 4 4 : 101 : -11.0
+R: 4 5 : 101 : -11.0
+R: 5 0 : 101 : 1.9
+R: 5 1 : 101 : 1.9
+R: 5 2 : 101 : 1.9
+R: 5 3 : 101 : 1.9
+R: 5 4 : 101 : 1.0
+R: 5 5 : 101 : 1.0
+R: 0 0 : 102 : -0.2
+R: 0 1 : 102 : -0.2
+R: 0 2 : 102 : -0.2
+R: 0 3 : 102 : -0.2
+R: 0 4 : 102 : -1.1
+R: 0 5 : 102 : -1.1
+R: 1 0 : 102 : -0.2
+R: 1 1 : 102 : -0.2
+R: 1 2 : 102 : -0.2
+R: 1 3 : 102 : -0.2
+R: 1 4 : 102 : -1.1
+R: 1 5 : 102 : -1.1
+R: 2 0 : 102 : -0.2
+R: 2 1 : 102 : -0.2
+R: 2 2 : 102 : -0.2
+R: 2 3 : 102 : -0.2
+R: 2 4 : 102 : -1.1
+R: 2 5 : 102 : -1.1
+R: 3 0 : 102 : -0.2
+R: 3 1 : 102 : -0.2
+R: 3 2 : 102 : -0.2
+R: 3 3 : 102 : -0.2
+R: 3 4 : 102 : -1.1
+R: 3 5 : 102 : -1.1
+R: 4 0 : 102 : -1.1
+R: 4 1 : 102 : -1.1
+R: 4 2 : 102 : -1.1
+R: 4 3 : 102 : -1.1
+R: 4 4 : 102 : -2.0
+R: 4 5 : 102 : -2.0
+R: 5 0 : 102 : -1.1
+R: 5 1 : 102 : -1.1
+R: 5 2 : 102 : -1.1
+R: 5 3 : 102 : -1.1
+R: 5 4 : 102 : -2.0
+R: 5 5 : 102 : -2.0
+R: 0 0 : 103 : -0.2
+R: 0 1 : 103 : -0.2
+R: 0 2 : 103 : -0.2
+R: 0 3 : 103 : -0.2
+R: 0 4 : 103 : -1.1
+R: 0 5 : 103 : -1.1
+R: 1 0 : 103 : -0.2
+R: 1 1 : 103 : -0.2
+R: 1 2 : 103 : -0.2
+R: 1 3 : 103 : -0.2
+R: 1 4 : 103 : -1.1
+R: 1 5 : 103 : -1.1
+R: 2 0 : 103 : -0.2
+R: 2 1 : 103 : -0.2
+R: 2 2 : 103 : -0.2
+R: 2 3 : 103 : -0.2
+R: 2 4 : 103 : -1.1
+R: 2 5 : 103 : -1.1
+R: 3 0 : 103 : -0.2
+R: 3 1 : 103 : -0.2
+R: 3 2 : 103 : -0.2
+R: 3 3 : 103 : -0.2
+R: 3 4 : 103 : -1.1
+R: 3 5 : 103 : -1.1
+R: 4 0 : 103 : -1.1
+R: 4 1 : 103 : -1.1
+R: 4 2 : 103 : -1.1
+R: 4 3 : 103 : -1.1
+R: 4 4 : 103 : -2.0
+R: 4 5 : 103 : -2.0
+R: 5 0 : 103 : -1.1
+R: 5 1 : 103 : -1.1
+R: 5 2 : 103 : -1.1
+R: 5 3 : 103 : -1.1
+R: 5 4 : 103 : -2.0
+R: 5 5 : 103 : -2.0
+R: 0 0 : 104 : -0.2
+R: 0 1 : 104 : -0.2
+R: 0 2 : 104 : -0.2
+R: 0 3 : 104 : -0.2
+R: 0 4 : 104 : -10.1
+R: 0 5 : 104 : 1.9
+R: 1 0 : 104 : -0.2
+R: 1 1 : 104 : -0.2
+R: 1 2 : 104 : -0.2
+R: 1 3 : 104 : -0.2
+R: 1 4 : 104 : -10.1
+R: 1 5 : 104 : 1.9
+R: 2 0 : 104 : -0.2
+R: 2 1 : 104 : -0.2
+R: 2 2 : 104 : -0.2
+R: 2 3 : 104 : -0.2
+R: 2 4 : 104 : -10.1
+R: 2 5 : 104 : 1.9
+R: 3 0 : 104 : -0.2
+R: 3 1 : 104 : -0.2
+R: 3 2 : 104 : -0.2
+R: 3 3 : 104 : -0.2
+R: 3 4 : 104 : -10.1
+R: 3 5 : 104 : 1.9
+R: 4 0 : 104 : -10.1
+R: 4 1 : 104 : -10.1
+R: 4 2 : 104 : -10.1
+R: 4 3 : 104 : -10.1
+R: 5 0 : 104 : 1.9
+R: 5 1 : 104 : 1.9
+R: 5 2 : 104 : 1.9
+R: 5 3 : 104 : 1.9
+R: 5 4 : 104 : 4.0
+R: 5 5 : 104 : 4.0
+R: 0 0 : 105 : -0.2
+R: 0 1 : 105 : -0.2
+R: 0 2 : 105 : -0.2
+R: 0 3 : 105 : -0.2
+R: 0 4 : 105 : -10.1
+R: 0 5 : 105 : 1.9
+R: 1 0 : 105 : -0.2
+R: 1 1 : 105 : -0.2
+R: 1 2 : 105 : -0.2
+R: 1 3 : 105 : -0.2
+R: 1 4 : 105 : -10.1
+R: 1 5 : 105 : 1.9
+R: 2 0 : 105 : -0.2
+R: 2 1 : 105 : -0.2
+R: 2 2 : 105 : -0.2
+R: 2 3 : 105 : -0.2
+R: 2 4 : 105 : -10.1
+R: 2 5 : 105 : 1.9
+R: 3 0 : 105 : -0.2
+R: 3 1 : 105 : -0.2
+R: 3 2 : 105 : -0.2
+R: 3 3 : 105 : -0.2
+R: 3 4 : 105 : -10.1
+R: 3 5 : 105 : 1.9
+R: 4 0 : 105 : -10.1
+R: 4 1 : 105 : -10.1
+R: 4 2 : 105 : -10.1
+R: 4 3 : 105 : -10.1
+R: 5 0 : 105 : 1.9
+R: 5 1 : 105 : 1.9
+R: 5 2 : 105 : 1.9
+R: 5 3 : 105 : 1.9
+R: 5 4 : 105 : 4.0
+R: 5 5 : 105 : 4.0
+R: 0 0 : 106 : -0.2
+R: 0 1 : 106 : -0.2
+R: 0 2 : 106 : -0.2
+R: 0 3 : 106 : -0.2
+R: 0 4 : 106 : -10.1
+R: 0 5 : 106 : 1.9
+R: 1 0 : 106 : -0.2
+R: 1 1 : 106 : -0.2
+R: 1 2 : 106 : -0.2
+R: 1 3 : 106 : -0.2
+R: 1 4 : 106 : -10.1
+R: 1 5 : 106 : 1.9
+R: 2 0 : 106 : -0.2
+R: 2 1 : 106 : -0.2
+R: 2 2 : 106 : -0.2
+R: 2 3 : 106 : -0.2
+R: 2 4 : 106 : -10.1
+R: 2 5 : 106 : 1.9
+R: 3 0 : 106 : -0.2
+R: 3 1 : 106 : -0.2
+R: 3 2 : 106 : -0.2
+R: 3 3 : 106 : -0.2
+R: 3 4 : 106 : -10.1
+R: 3 5 : 106 : 1.9
+R: 4 0 : 106 : -1.1
+R: 4 1 : 106 : -1.1
+R: 4 2 : 106 : -1.1
+R: 4 3 : 106 : -1.1
+R: 4 4 : 106 : -11.0
+R: 4 5 : 106 : -11.0
+R: 5 0 : 106 : -1.1
+R: 5 1 : 106 : -1.1
+R: 5 2 : 106 : -1.1
+R: 5 3 : 106 : -1.1
+R: 5 4 : 106 : 1.0
+R: 5 5 : 106 : 1.0
+R: 0 0 : 107 : -0.2
+R: 0 1 : 107 : -0.2
+R: 0 2 : 107 : -0.2
+R: 0 3 : 107 : -0.2
+R: 0 4 : 107 : -10.1
+R: 0 5 : 107 : 1.9
+R: 1 0 : 107 : -0.2
+R: 1 1 : 107 : -0.2
+R: 1 2 : 107 : -0.2
+R: 1 3 : 107 : -0.2
+R: 1 4 : 107 : -10.1
+R: 1 5 : 107 : 1.9
+R: 2 0 : 107 : -0.2
+R: 2 1 : 107 : -0.2
+R: 2 2 : 107 : -0.2
+R: 2 3 : 107 : -0.2
+R: 2 4 : 107 : -10.1
+R: 2 5 : 107 : 1.9
+R: 3 0 : 107 : -0.2
+R: 3 1 : 107 : -0.2
+R: 3 2 : 107 : -0.2
+R: 3 3 : 107 : -0.2
+R: 3 4 : 107 : -10.1
+R: 3 5 : 107 : 1.9
+R: 4 0 : 107 : -1.1
+R: 4 1 : 107 : -1.1
+R: 4 2 : 107 : -1.1
+R: 4 3 : 107 : -1.1
+R: 4 4 : 107 : -11.0
+R: 4 5 : 107 : -11.0
+R: 5 0 : 107 : -1.1
+R: 5 1 : 107 : -1.1
+R: 5 2 : 107 : -1.1
+R: 5 3 : 107 : -1.1
+R: 5 4 : 107 : 1.0
+R: 5 5 : 107 : 1.0
+R: 0 0 : 108 : -0.2
+R: 0 1 : 108 : -0.2
+R: 0 2 : 108 : -0.2
+R: 0 3 : 108 : -0.2
+R: 0 4 : 108 : -1.1
+R: 0 5 : 108 : -1.1
+R: 1 0 : 108 : -0.2
+R: 1 1 : 108 : -0.2
+R: 1 2 : 108 : -0.2
+R: 1 3 : 108 : -0.2
+R: 1 4 : 108 : -1.1
+R: 1 5 : 108 : -1.1
+R: 2 0 : 108 : -0.2
+R: 2 1 : 108 : -0.2
+R: 2 2 : 108 : -0.2
+R: 2 3 : 108 : -0.2
+R: 2 4 : 108 : -1.1
+R: 2 5 : 108 : -1.1
+R: 3 0 : 108 : -0.2
+R: 3 1 : 108 : -0.2
+R: 3 2 : 108 : -0.2
+R: 3 3 : 108 : -0.2
+R: 3 4 : 108 : -1.1
+R: 3 5 : 108 : -1.1
+R: 4 0 : 108 : -10.1
+R: 4 1 : 108 : -10.1
+R: 4 2 : 108 : -10.1
+R: 4 3 : 108 : -10.1
+R: 4 4 : 108 : -11.0
+R: 4 5 : 108 : -11.0
+R: 5 0 : 108 : 1.9
+R: 5 1 : 108 : 1.9
+R: 5 2 : 108 : 1.9
+R: 5 3 : 108 : 1.9
+R: 5 4 : 108 : 1.0
+R: 5 5 : 108 : 1.0
+R: 0 0 : 109 : -0.2
+R: 0 1 : 109 : -0.2
+R: 0 2 : 109 : -0.2
+R: 0 3 : 109 : -0.2
+R: 0 4 : 109 : -1.1
+R: 0 5 : 109 : -1.1
+R: 1 0 : 109 : -0.2
+R: 1 1 : 109 : -0.2
+R: 1 2 : 109 : -0.2
+R: 1 3 : 109 : -0.2
+R: 1 4 : 109 : -1.1
+R: 1 5 : 109 : -1.1
+R: 2 0 : 109 : -0.2
+R: 2 1 : 109 : -0.2
+R: 2 2 : 109 : -0.2
+R: 2 3 : 109 : -0.2
+R: 2 4 : 109 : -1.1
+R: 2 5 : 109 : -1.1
+R: 3 0 : 109 : -0.2
+R: 3 1 : 109 : -0.2
+R: 3 2 : 109 : -0.2
+R: 3 3 : 109 : -0.2
+R: 3 4 : 109 : -1.1
+R: 3 5 : 109 : -1.1
+R: 4 0 : 109 : -10.1
+R: 4 1 : 109 : -10.1
+R: 4 2 : 109 : -10.1
+R: 4 3 : 109 : -10.1
+R: 4 4 : 109 : -11.0
+R: 4 5 : 109 : -11.0
+R: 5 0 : 109 : 1.9
+R: 5 1 : 109 : 1.9
+R: 5 2 : 109 : 1.9
+R: 5 3 : 109 : 1.9
+R: 5 4 : 109 : 1.0
+R: 5 5 : 109 : 1.0
+R: 0 0 : 110 : -0.2
+R: 0 1 : 110 : -0.2
+R: 0 2 : 110 : -0.2
+R: 0 3 : 110 : -0.2
+R: 0 4 : 110 : -1.1
+R: 0 5 : 110 : -1.1
+R: 1 0 : 110 : -0.2
+R: 1 1 : 110 : -0.2
+R: 1 2 : 110 : -0.2
+R: 1 3 : 110 : -0.2
+R: 1 4 : 110 : -1.1
+R: 1 5 : 110 : -1.1
+R: 2 0 : 110 : -0.2
+R: 2 1 : 110 : -0.2
+R: 2 2 : 110 : -0.2
+R: 2 3 : 110 : -0.2
+R: 2 4 : 110 : -1.1
+R: 2 5 : 110 : -1.1
+R: 3 0 : 110 : -0.2
+R: 3 1 : 110 : -0.2
+R: 3 2 : 110 : -0.2
+R: 3 3 : 110 : -0.2
+R: 3 4 : 110 : -1.1
+R: 3 5 : 110 : -1.1
+R: 4 0 : 110 : -1.1
+R: 4 1 : 110 : -1.1
+R: 4 2 : 110 : -1.1
+R: 4 3 : 110 : -1.1
+R: 4 4 : 110 : -2.0
+R: 4 5 : 110 : -2.0
+R: 5 0 : 110 : -1.1
+R: 5 1 : 110 : -1.1
+R: 5 2 : 110 : -1.1
+R: 5 3 : 110 : -1.1
+R: 5 4 : 110 : -2.0
+R: 5 5 : 110 : -2.0
+R: 0 0 : 111 : -0.2
+R: 0 1 : 111 : -0.2
+R: 0 2 : 111 : -0.2
+R: 0 3 : 111 : -0.2
+R: 0 4 : 111 : -1.1
+R: 0 5 : 111 : -1.1
+R: 1 0 : 111 : -0.2
+R: 1 1 : 111 : -0.2
+R: 1 2 : 111 : -0.2
+R: 1 3 : 111 : -0.2
+R: 1 4 : 111 : -1.1
+R: 1 5 : 111 : -1.1
+R: 2 0 : 111 : -0.2
+R: 2 1 : 111 : -0.2
+R: 2 2 : 111 : -0.2
+R: 2 3 : 111 : -0.2
+R: 2 4 : 111 : -1.1
+R: 2 5 : 111 : -1.1
+R: 3 0 : 111 : -0.2
+R: 3 1 : 111 : -0.2
+R: 3 2 : 111 : -0.2
+R: 3 3 : 111 : -0.2
+R: 3 4 : 111 : -1.1
+R: 3 5 : 111 : -1.1
+R: 4 0 : 111 : -1.1
+R: 4 1 : 111 : -1.1
+R: 4 2 : 111 : -1.1
+R: 4 3 : 111 : -1.1
+R: 4 4 : 111 : -2.0
+R: 4 5 : 111 : -2.0
+R: 5 0 : 111 : -1.1
+R: 5 1 : 111 : -1.1
+R: 5 2 : 111 : -1.1
+R: 5 3 : 111 : -1.1
+R: 5 4 : 111 : -2.0
+R: 5 5 : 111 : -2.0
+R: 0 0 : 112 : -0.2
+R: 0 1 : 112 : -0.2
+R: 0 2 : 112 : -0.2
+R: 0 3 : 112 : -0.2
+R: 0 4 : 112 : -10.1
+R: 0 5 : 112 : 1.9
+R: 1 0 : 112 : -0.2
+R: 1 1 : 112 : -0.2
+R: 1 2 : 112 : -0.2
+R: 1 3 : 112 : -0.2
+R: 1 4 : 112 : -10.1
+R: 1 5 : 112 : 1.9
+R: 2 0 : 112 : -0.2
+R: 2 1 : 112 : -0.2
+R: 2 2 : 112 : -0.2
+R: 2 3 : 112 : -0.2
+R: 2 4 : 112 : -10.1
+R: 2 5 : 112 : 1.9
+R: 3 0 : 112 : -0.2
+R: 3 1 : 112 : -0.2
+R: 3 2 : 112 : -0.2
+R: 3 3 : 112 : -0.2
+R: 3 4 : 112 : -10.1
+R: 3 5 : 112 : 1.9
+R: 4 0 : 112 : -10.1
+R: 4 1 : 112 : -10.1
+R: 4 2 : 112 : -10.1
+R: 4 3 : 112 : -10.1
+R: 5 0 : 112 : 1.9
+R: 5 1 : 112 : 1.9
+R: 5 2 : 112 : 1.9
+R: 5 3 : 112 : 1.9
+R: 5 4 : 112 : 4.0
+R: 5 5 : 112 : 4.0
+R: 0 0 : 113 : -0.2
+R: 0 1 : 113 : -0.2
+R: 0 2 : 113 : -0.2
+R: 0 3 : 113 : -0.2
+R: 0 4 : 113 : -10.1
+R: 0 5 : 113 : 1.9
+R: 1 0 : 113 : -0.2
+R: 1 1 : 113 : -0.2
+R: 1 2 : 113 : -0.2
+R: 1 3 : 113 : -0.2
+R: 1 4 : 113 : -10.1
+R: 1 5 : 113 : 1.9
+R: 2 0 : 113 : -0.2
+R: 2 1 : 113 : -0.2
+R: 2 2 : 113 : -0.2
+R: 2 3 : 113 : -0.2
+R: 2 4 : 113 : -10.1
+R: 2 5 : 113 : 1.9
+R: 3 0 : 113 : -0.2
+R: 3 1 : 113 : -0.2
+R: 3 2 : 113 : -0.2
+R: 3 3 : 113 : -0.2
+R: 3 4 : 113 : -10.1
+R: 3 5 : 113 : 1.9
+R: 4 0 : 113 : -10.1
+R: 4 1 : 113 : -10.1
+R: 4 2 : 113 : -10.1
+R: 4 3 : 113 : -10.1
+R: 5 0 : 113 : 1.9
+R: 5 1 : 113 : 1.9
+R: 5 2 : 113 : 1.9
+R: 5 3 : 113 : 1.9
+R: 5 4 : 113 : 4.0
+R: 5 5 : 113 : 4.0
+R: 0 0 : 114 : -0.2
+R: 0 1 : 114 : -0.2
+R: 0 2 : 114 : -0.2
+R: 0 3 : 114 : -0.2
+R: 0 4 : 114 : -10.1
+R: 0 5 : 114 : 1.9
+R: 1 0 : 114 : -0.2
+R: 1 1 : 114 : -0.2
+R: 1 2 : 114 : -0.2
+R: 1 3 : 114 : -0.2
+R: 1 4 : 114 : -10.1
+R: 1 5 : 114 : 1.9
+R: 2 0 : 114 : -0.2
+R: 2 1 : 114 : -0.2
+R: 2 2 : 114 : -0.2
+R: 2 3 : 114 : -0.2
+R: 2 4 : 114 : -10.1
+R: 2 5 : 114 : 1.9
+R: 3 0 : 114 : -0.2
+R: 3 1 : 114 : -0.2
+R: 3 2 : 114 : -0.2
+R: 3 3 : 114 : -0.2
+R: 3 4 : 114 : -10.1
+R: 3 5 : 114 : 1.9
+R: 4 0 : 114 : -1.1
+R: 4 1 : 114 : -1.1
+R: 4 2 : 114 : -1.1
+R: 4 3 : 114 : -1.1
+R: 4 4 : 114 : -11.0
+R: 4 5 : 114 : -11.0
+R: 5 0 : 114 : -1.1
+R: 5 1 : 114 : -1.1
+R: 5 2 : 114 : -1.1
+R: 5 3 : 114 : -1.1
+R: 5 4 : 114 : 1.0
+R: 5 5 : 114 : 1.0
+R: 0 0 : 115 : -0.2
+R: 0 1 : 115 : -0.2
+R: 0 2 : 115 : -0.2
+R: 0 3 : 115 : -0.2
+R: 0 4 : 115 : -10.1
+R: 0 5 : 115 : 1.9
+R: 1 0 : 115 : -0.2
+R: 1 1 : 115 : -0.2
+R: 1 2 : 115 : -0.2
+R: 1 3 : 115 : -0.2
+R: 1 4 : 115 : -10.1
+R: 1 5 : 115 : 1.9
+R: 2 0 : 115 : -0.2
+R: 2 1 : 115 : -0.2
+R: 2 2 : 115 : -0.2
+R: 2 3 : 115 : -0.2
+R: 2 4 : 115 : -10.1
+R: 2 5 : 115 : 1.9
+R: 3 0 : 115 : -0.2
+R: 3 1 : 115 : -0.2
+R: 3 2 : 115 : -0.2
+R: 3 3 : 115 : -0.2
+R: 3 4 : 115 : -10.1
+R: 3 5 : 115 : 1.9
+R: 4 0 : 115 : -1.1
+R: 4 1 : 115 : -1.1
+R: 4 2 : 115 : -1.1
+R: 4 3 : 115 : -1.1
+R: 4 4 : 115 : -11.0
+R: 4 5 : 115 : -11.0
+R: 5 0 : 115 : -1.1
+R: 5 1 : 115 : -1.1
+R: 5 2 : 115 : -1.1
+R: 5 3 : 115 : -1.1
+R: 5 4 : 115 : 1.0
+R: 5 5 : 115 : 1.0
+R: 0 0 : 116 : -0.2
+R: 0 1 : 116 : -0.2
+R: 0 2 : 116 : -0.2
+R: 0 3 : 116 : -0.2
+R: 0 4 : 116 : -10.1
+R: 0 5 : 116 : 1.9
+R: 1 0 : 116 : -0.2
+R: 1 1 : 116 : -0.2
+R: 1 2 : 116 : -0.2
+R: 1 3 : 116 : -0.2
+R: 1 4 : 116 : -10.1
+R: 1 5 : 116 : 1.9
+R: 2 0 : 116 : -0.2
+R: 2 1 : 116 : -0.2
+R: 2 2 : 116 : -0.2
+R: 2 3 : 116 : -0.2
+R: 2 4 : 116 : -10.1
+R: 2 5 : 116 : 1.9
+R: 3 0 : 116 : -0.2
+R: 3 1 : 116 : -0.2
+R: 3 2 : 116 : -0.2
+R: 3 3 : 116 : -0.2
+R: 3 4 : 116 : -10.1
+R: 3 5 : 116 : 1.9
+R: 4 0 : 116 : -10.1
+R: 4 1 : 116 : -10.1
+R: 4 2 : 116 : -10.1
+R: 4 3 : 116 : -10.1
+R: 5 0 : 116 : 1.9
+R: 5 1 : 116 : 1.9
+R: 5 2 : 116 : 1.9
+R: 5 3 : 116 : 1.9
+R: 5 4 : 116 : 4.0
+R: 5 5 : 116 : 4.0
+R: 0 0 : 117 : -0.2
+R: 0 1 : 117 : -0.2
+R: 0 2 : 117 : -0.2
+R: 0 3 : 117 : -0.2
+R: 0 4 : 117 : -10.1
+R: 0 5 : 117 : 1.9
+R: 1 0 : 117 : -0.2
+R: 1 1 : 117 : -0.2
+R: 1 2 : 117 : -0.2
+R: 1 3 : 117 : -0.2
+R: 1 4 : 117 : -10.1
+R: 1 5 : 117 : 1.9
+R: 2 0 : 117 : -0.2
+R: 2 1 : 117 : -0.2
+R: 2 2 : 117 : -0.2
+R: 2 3 : 117 : -0.2
+R: 2 4 : 117 : -10.1
+R: 2 5 : 117 : 1.9
+R: 3 0 : 117 : -0.2
+R: 3 1 : 117 : -0.2
+R: 3 2 : 117 : -0.2
+R: 3 3 : 117 : -0.2
+R: 3 4 : 117 : -10.1
+R: 3 5 : 117 : 1.9
+R: 4 0 : 117 : -10.1
+R: 4 1 : 117 : -10.1
+R: 4 2 : 117 : -10.1
+R: 4 3 : 117 : -10.1
+R: 5 0 : 117 : 1.9
+R: 5 1 : 117 : 1.9
+R: 5 2 : 117 : 1.9
+R: 5 3 : 117 : 1.9
+R: 5 4 : 117 : 4.0
+R: 5 5 : 117 : 4.0
+R: 0 0 : 118 : -0.2
+R: 0 1 : 118 : -0.2
+R: 0 2 : 118 : -0.2
+R: 0 3 : 118 : -0.2
+R: 0 4 : 118 : -10.1
+R: 0 5 : 118 : 1.9
+R: 1 0 : 118 : -0.2
+R: 1 1 : 118 : -0.2
+R: 1 2 : 118 : -0.2
+R: 1 3 : 118 : -0.2
+R: 1 4 : 118 : -10.1
+R: 1 5 : 118 : 1.9
+R: 2 0 : 118 : -0.2
+R: 2 1 : 118 : -0.2
+R: 2 2 : 118 : -0.2
+R: 2 3 : 118 : -0.2
+R: 2 4 : 118 : -10.1
+R: 2 5 : 118 : 1.9
+R: 3 0 : 118 : -0.2
+R: 3 1 : 118 : -0.2
+R: 3 2 : 118 : -0.2
+R: 3 3 : 118 : -0.2
+R: 3 4 : 118 : -10.1
+R: 3 5 : 118 : 1.9
+R: 4 0 : 118 : -1.1
+R: 4 1 : 118 : -1.1
+R: 4 2 : 118 : -1.1
+R: 4 3 : 118 : -1.1
+R: 4 4 : 118 : -11.0
+R: 4 5 : 118 : -11.0
+R: 5 0 : 118 : -1.1
+R: 5 1 : 118 : -1.1
+R: 5 2 : 118 : -1.1
+R: 5 3 : 118 : -1.1
+R: 5 4 : 118 : 1.0
+R: 5 5 : 118 : 1.0
+R: 0 0 : 119 : -0.2
+R: 0 1 : 119 : -0.2
+R: 0 2 : 119 : -0.2
+R: 0 3 : 119 : -0.2
+R: 0 4 : 119 : -10.1
+R: 0 5 : 119 : 1.9
+R: 1 0 : 119 : -0.2
+R: 1 1 : 119 : -0.2
+R: 1 2 : 119 : -0.2
+R: 1 3 : 119 : -0.2
+R: 1 4 : 119 : -10.1
+R: 1 5 : 119 : 1.9
+R: 2 0 : 119 : -0.2
+R: 2 1 : 119 : -0.2
+R: 2 2 : 119 : -0.2
+R: 2 3 : 119 : -0.2
+R: 2 4 : 119 : -10.1
+R: 2 5 : 119 : 1.9
+R: 3 0 : 119 : -0.2
+R: 3 1 : 119 : -0.2
+R: 3 2 : 119 : -0.2
+R: 3 3 : 119 : -0.2
+R: 3 4 : 119 : -10.1
+R: 3 5 : 119 : 1.9
+R: 4 0 : 119 : -1.1
+R: 4 1 : 119 : -1.1
+R: 4 2 : 119 : -1.1
+R: 4 3 : 119 : -1.1
+R: 4 4 : 119 : -11.0
+R: 4 5 : 119 : -11.0
+R: 5 0 : 119 : -1.1
+R: 5 1 : 119 : -1.1
+R: 5 2 : 119 : -1.1
+R: 5 3 : 119 : -1.1
+R: 5 4 : 119 : 1.0
+R: 5 5 : 119 : 1.0
+R: 0 0 : 120 : -0.2
+R: 0 1 : 120 : -0.2
+R: 0 2 : 120 : -0.2
+R: 0 3 : 120 : -0.2
+R: 0 4 : 120 : -1.1
+R: 0 5 : 120 : -1.1
+R: 1 0 : 120 : -0.2
+R: 1 1 : 120 : -0.2
+R: 1 2 : 120 : -0.2
+R: 1 3 : 120 : -0.2
+R: 1 4 : 120 : -1.1
+R: 1 5 : 120 : -1.1
+R: 2 0 : 120 : -0.2
+R: 2 1 : 120 : -0.2
+R: 2 2 : 120 : -0.2
+R: 2 3 : 120 : -0.2
+R: 2 4 : 120 : -1.1
+R: 2 5 : 120 : -1.1
+R: 3 0 : 120 : -0.2
+R: 3 1 : 120 : -0.2
+R: 3 2 : 120 : -0.2
+R: 3 3 : 120 : -0.2
+R: 3 4 : 120 : -1.1
+R: 3 5 : 120 : -1.1
+R: 4 0 : 120 : -10.1
+R: 4 1 : 120 : -10.1
+R: 4 2 : 120 : -10.1
+R: 4 3 : 120 : -10.1
+R: 4 4 : 120 : -11.0
+R: 4 5 : 120 : -11.0
+R: 5 0 : 120 : 1.9
+R: 5 1 : 120 : 1.9
+R: 5 2 : 120 : 1.9
+R: 5 3 : 120 : 1.9
+R: 5 4 : 120 : 1.0
+R: 5 5 : 120 : 1.0
+R: 0 0 : 121 : -0.2
+R: 0 1 : 121 : -0.2
+R: 0 2 : 121 : -0.2
+R: 0 3 : 121 : -0.2
+R: 0 4 : 121 : -1.1
+R: 0 5 : 121 : -1.1
+R: 1 0 : 121 : -0.2
+R: 1 1 : 121 : -0.2
+R: 1 2 : 121 : -0.2
+R: 1 3 : 121 : -0.2
+R: 1 4 : 121 : -1.1
+R: 1 5 : 121 : -1.1
+R: 2 0 : 121 : -0.2
+R: 2 1 : 121 : -0.2
+R: 2 2 : 121 : -0.2
+R: 2 3 : 121 : -0.2
+R: 2 4 : 121 : -1.1
+R: 2 5 : 121 : -1.1
+R: 3 0 : 121 : -0.2
+R: 3 1 : 121 : -0.2
+R: 3 2 : 121 : -0.2
+R: 3 3 : 121 : -0.2
+R: 3 4 : 121 : -1.1
+R: 3 5 : 121 : -1.1
+R: 4 0 : 121 : -10.1
+R: 4 1 : 121 : -10.1
+R: 4 2 : 121 : -10.1
+R: 4 3 : 121 : -10.1
+R: 4 4 : 121 : -11.0
+R: 4 5 : 121 : -11.0
+R: 5 0 : 121 : 1.9
+R: 5 1 : 121 : 1.9
+R: 5 2 : 121 : 1.9
+R: 5 3 : 121 : 1.9
+R: 5 4 : 121 : 1.0
+R: 5 5 : 121 : 1.0
+R: 0 0 : 122 : -0.2
+R: 0 1 : 122 : -0.2
+R: 0 2 : 122 : -0.2
+R: 0 3 : 122 : -0.2
+R: 0 4 : 122 : -1.1
+R: 0 5 : 122 : -1.1
+R: 1 0 : 122 : -0.2
+R: 1 1 : 122 : -0.2
+R: 1 2 : 122 : -0.2
+R: 1 3 : 122 : -0.2
+R: 1 4 : 122 : -1.1
+R: 1 5 : 122 : -1.1
+R: 2 0 : 122 : -0.2
+R: 2 1 : 122 : -0.2
+R: 2 2 : 122 : -0.2
+R: 2 3 : 122 : -0.2
+R: 2 4 : 122 : -1.1
+R: 2 5 : 122 : -1.1
+R: 3 0 : 122 : -0.2
+R: 3 1 : 122 : -0.2
+R: 3 2 : 122 : -0.2
+R: 3 3 : 122 : -0.2
+R: 3 4 : 122 : -1.1
+R: 3 5 : 122 : -1.1
+R: 4 0 : 122 : -1.1
+R: 4 1 : 122 : -1.1
+R: 4 2 : 122 : -1.1
+R: 4 3 : 122 : -1.1
+R: 4 4 : 122 : -2.0
+R: 4 5 : 122 : -2.0
+R: 5 0 : 122 : -1.1
+R: 5 1 : 122 : -1.1
+R: 5 2 : 122 : -1.1
+R: 5 3 : 122 : -1.1
+R: 5 4 : 122 : -2.0
+R: 5 5 : 122 : -2.0
+R: 0 0 : 123 : -0.2
+R: 0 1 : 123 : -0.2
+R: 0 2 : 123 : -0.2
+R: 0 3 : 123 : -0.2
+R: 0 4 : 123 : -1.1
+R: 0 5 : 123 : -1.1
+R: 1 0 : 123 : -0.2
+R: 1 1 : 123 : -0.2
+R: 1 2 : 123 : -0.2
+R: 1 3 : 123 : -0.2
+R: 1 4 : 123 : -1.1
+R: 1 5 : 123 : -1.1
+R: 2 0 : 123 : -0.2
+R: 2 1 : 123 : -0.2
+R: 2 2 : 123 : -0.2
+R: 2 3 : 123 : -0.2
+R: 2 4 : 123 : -1.1
+R: 2 5 : 123 : -1.1
+R: 3 0 : 123 : -0.2
+R: 3 1 : 123 : -0.2
+R: 3 2 : 123 : -0.2
+R: 3 3 : 123 : -0.2
+R: 3 4 : 123 : -1.1
+R: 3 5 : 123 : -1.1
+R: 4 0 : 123 : -1.1
+R: 4 1 : 123 : -1.1
+R: 4 2 : 123 : -1.1
+R: 4 3 : 123 : -1.1
+R: 4 4 : 123 : -2.0
+R: 4 5 : 123 : -2.0
+R: 5 0 : 123 : -1.1
+R: 5 1 : 123 : -1.1
+R: 5 2 : 123 : -1.1
+R: 5 3 : 123 : -1.1
+R: 5 4 : 123 : -2.0
+R: 5 5 : 123 : -2.0
+R: 0 0 : 124 : -0.2
+R: 0 1 : 124 : -0.2
+R: 0 2 : 124 : -0.2
+R: 0 3 : 124 : -0.2
+R: 0 4 : 124 : -1.1
+R: 0 5 : 124 : -1.1
+R: 1 0 : 124 : -0.2
+R: 1 1 : 124 : -0.2
+R: 1 2 : 124 : -0.2
+R: 1 3 : 124 : -0.2
+R: 1 4 : 124 : -1.1
+R: 1 5 : 124 : -1.1
+R: 2 0 : 124 : -0.2
+R: 2 1 : 124 : -0.2
+R: 2 2 : 124 : -0.2
+R: 2 3 : 124 : -0.2
+R: 2 4 : 124 : -1.1
+R: 2 5 : 124 : -1.1
+R: 3 0 : 124 : -0.2
+R: 3 1 : 124 : -0.2
+R: 3 2 : 124 : -0.2
+R: 3 3 : 124 : -0.2
+R: 3 4 : 124 : -1.1
+R: 3 5 : 124 : -1.1
+R: 4 0 : 124 : -10.1
+R: 4 1 : 124 : -10.1
+R: 4 2 : 124 : -10.1
+R: 4 3 : 124 : -10.1
+R: 4 4 : 124 : -11.0
+R: 4 5 : 124 : -11.0
+R: 5 0 : 124 : 1.9
+R: 5 1 : 124 : 1.9
+R: 5 2 : 124 : 1.9
+R: 5 3 : 124 : 1.9
+R: 5 4 : 124 : 1.0
+R: 5 5 : 124 : 1.0
+R: 0 0 : 125 : -0.2
+R: 0 1 : 125 : -0.2
+R: 0 2 : 125 : -0.2
+R: 0 3 : 125 : -0.2
+R: 0 4 : 125 : -1.1
+R: 0 5 : 125 : -1.1
+R: 1 0 : 125 : -0.2
+R: 1 1 : 125 : -0.2
+R: 1 2 : 125 : -0.2
+R: 1 3 : 125 : -0.2
+R: 1 4 : 125 : -1.1
+R: 1 5 : 125 : -1.1
+R: 2 0 : 125 : -0.2
+R: 2 1 : 125 : -0.2
+R: 2 2 : 125 : -0.2
+R: 2 3 : 125 : -0.2
+R: 2 4 : 125 : -1.1
+R: 2 5 : 125 : -1.1
+R: 3 0 : 125 : -0.2
+R: 3 1 : 125 : -0.2
+R: 3 2 : 125 : -0.2
+R: 3 3 : 125 : -0.2
+R: 3 4 : 125 : -1.1
+R: 3 5 : 125 : -1.1
+R: 4 0 : 125 : -10.1
+R: 4 1 : 125 : -10.1
+R: 4 2 : 125 : -10.1
+R: 4 3 : 125 : -10.1
+R: 4 4 : 125 : -11.0
+R: 4 5 : 125 : -11.0
+R: 5 0 : 125 : 1.9
+R: 5 1 : 125 : 1.9
+R: 5 2 : 125 : 1.9
+R: 5 3 : 125 : 1.9
+R: 5 4 : 125 : 1.0
+R: 5 5 : 125 : 1.0
+R: 0 0 : 126 : -0.2
+R: 0 1 : 126 : -0.2
+R: 0 2 : 126 : -0.2
+R: 0 3 : 126 : -0.2
+R: 0 4 : 126 : -1.1
+R: 0 5 : 126 : -1.1
+R: 1 0 : 126 : -0.2
+R: 1 1 : 126 : -0.2
+R: 1 2 : 126 : -0.2
+R: 1 3 : 126 : -0.2
+R: 1 4 : 126 : -1.1
+R: 1 5 : 126 : -1.1
+R: 2 0 : 126 : -0.2
+R: 2 1 : 126 : -0.2
+R: 2 2 : 126 : -0.2
+R: 2 3 : 126 : -0.2
+R: 2 4 : 126 : -1.1
+R: 2 5 : 126 : -1.1
+R: 3 0 : 126 : -0.2
+R: 3 1 : 126 : -0.2
+R: 3 2 : 126 : -0.2
+R: 3 3 : 126 : -0.2
+R: 3 4 : 126 : -1.1
+R: 3 5 : 126 : -1.1
+R: 4 0 : 126 : -1.1
+R: 4 1 : 126 : -1.1
+R: 4 2 : 126 : -1.1
+R: 4 3 : 126 : -1.1
+R: 4 4 : 126 : -2.0
+R: 4 5 : 126 : -2.0
+R: 5 0 : 126 : -1.1
+R: 5 1 : 126 : -1.1
+R: 5 2 : 126 : -1.1
+R: 5 3 : 126 : -1.1
+R: 5 4 : 126 : -2.0
+R: 5 5 : 126 : -2.0
+R: 0 0 : 127 : -0.2
+R: 0 1 : 127 : -0.2
+R: 0 2 : 127 : -0.2
+R: 0 3 : 127 : -0.2
+R: 0 4 : 127 : -1.1
+R: 0 5 : 127 : -1.1
+R: 1 0 : 127 : -0.2
+R: 1 1 : 127 : -0.2
+R: 1 2 : 127 : -0.2
+R: 1 3 : 127 : -0.2
+R: 1 4 : 127 : -1.1
+R: 1 5 : 127 : -1.1
+R: 2 0 : 127 : -0.2
+R: 2 1 : 127 : -0.2
+R: 2 2 : 127 : -0.2
+R: 2 3 : 127 : -0.2
+R: 2 4 : 127 : -1.1
+R: 2 5 : 127 : -1.1
+R: 3 0 : 127 : -0.2
+R: 3 1 : 127 : -0.2
+R: 3 2 : 127 : -0.2
+R: 3 3 : 127 : -0.2
+R: 3 4 : 127 : -1.1
+R: 3 5 : 127 : -1.1
+R: 4 0 : 127 : -1.1
+R: 4 1 : 127 : -1.1
+R: 4 2 : 127 : -1.1
+R: 4 3 : 127 : -1.1
+R: 4 4 : 127 : -2.0
+R: 4 5 : 127 : -2.0
+R: 5 0 : 127 : -1.1
+R: 5 1 : 127 : -1.1
+R: 5 2 : 127 : -1.1
+R: 5 3 : 127 : -1.1
+R: 5 4 : 127 : -2.0
+R: 5 5 : 127 : -2.0
+R: 0 0 : 128 : -0.2
+R: 0 1 : 128 : -0.2
+R: 0 2 : 128 : -0.2
+R: 0 3 : 128 : -0.2
+R: 0 4 : 128 : -10.1
+R: 0 5 : 128 : 1.9
+R: 1 0 : 128 : -0.2
+R: 1 1 : 128 : -0.2
+R: 1 2 : 128 : -0.2
+R: 1 3 : 128 : -0.2
+R: 1 4 : 128 : -10.1
+R: 1 5 : 128 : 1.9
+R: 2 0 : 128 : -0.2
+R: 2 1 : 128 : -0.2
+R: 2 2 : 128 : -0.2
+R: 2 3 : 128 : -0.2
+R: 2 4 : 128 : -10.1
+R: 2 5 : 128 : 1.9
+R: 3 0 : 128 : -0.2
+R: 3 1 : 128 : -0.2
+R: 3 2 : 128 : -0.2
+R: 3 3 : 128 : -0.2
+R: 3 4 : 128 : -10.1
+R: 3 5 : 128 : 1.9
+R: 4 0 : 128 : -10.1
+R: 4 1 : 128 : -10.1
+R: 4 2 : 128 : -10.1
+R: 4 3 : 128 : -10.1
+R: 5 0 : 128 : 1.9
+R: 5 1 : 128 : 1.9
+R: 5 2 : 128 : 1.9
+R: 5 3 : 128 : 1.9
+R: 5 4 : 128 : 4.0
+R: 5 5 : 128 : 4.0
+R: 0 0 : 129 : -0.2
+R: 0 1 : 129 : -0.2
+R: 0 2 : 129 : -0.2
+R: 0 3 : 129 : -0.2
+R: 0 4 : 129 : -1.1
+R: 0 5 : 129 : -1.1
+R: 1 0 : 129 : -0.2
+R: 1 1 : 129 : -0.2
+R: 1 2 : 129 : -0.2
+R: 1 3 : 129 : -0.2
+R: 1 4 : 129 : -1.1
+R: 1 5 : 129 : -1.1
+R: 2 0 : 129 : -0.2
+R: 2 1 : 129 : -0.2
+R: 2 2 : 129 : -0.2
+R: 2 3 : 129 : -0.2
+R: 2 4 : 129 : -1.1
+R: 2 5 : 129 : -1.1
+R: 3 0 : 129 : -0.2
+R: 3 1 : 129 : -0.2
+R: 3 2 : 129 : -0.2
+R: 3 3 : 129 : -0.2
+R: 3 4 : 129 : -1.1
+R: 3 5 : 129 : -1.1
+R: 4 0 : 129 : -10.1
+R: 4 1 : 129 : -10.1
+R: 4 2 : 129 : -10.1
+R: 4 3 : 129 : -10.1
+R: 4 4 : 129 : -11.0
+R: 4 5 : 129 : -11.0
+R: 5 0 : 129 : 1.9
+R: 5 1 : 129 : 1.9
+R: 5 2 : 129 : 1.9
+R: 5 3 : 129 : 1.9
+R: 5 4 : 129 : 1.0
+R: 5 5 : 129 : 1.0
+R: 0 0 : 130 : -0.2
+R: 0 1 : 130 : -0.2
+R: 0 2 : 130 : -0.2
+R: 0 3 : 130 : -0.2
+R: 0 4 : 130 : -10.1
+R: 0 5 : 130 : 1.9
+R: 1 0 : 130 : -0.2
+R: 1 1 : 130 : -0.2
+R: 1 2 : 130 : -0.2
+R: 1 3 : 130 : -0.2
+R: 1 4 : 130 : -10.1
+R: 1 5 : 130 : 1.9
+R: 2 0 : 130 : -0.2
+R: 2 1 : 130 : -0.2
+R: 2 2 : 130 : -0.2
+R: 2 3 : 130 : -0.2
+R: 2 4 : 130 : -10.1
+R: 2 5 : 130 : 1.9
+R: 3 0 : 130 : -0.2
+R: 3 1 : 130 : -0.2
+R: 3 2 : 130 : -0.2
+R: 3 3 : 130 : -0.2
+R: 3 4 : 130 : -10.1
+R: 3 5 : 130 : 1.9
+R: 4 0 : 130 : -10.1
+R: 4 1 : 130 : -10.1
+R: 4 2 : 130 : -10.1
+R: 4 3 : 130 : -10.1
+R: 5 0 : 130 : 1.9
+R: 5 1 : 130 : 1.9
+R: 5 2 : 130 : 1.9
+R: 5 3 : 130 : 1.9
+R: 5 4 : 130 : 4.0
+R: 5 5 : 130 : 4.0
+R: 0 0 : 131 : -0.2
+R: 0 1 : 131 : -0.2
+R: 0 2 : 131 : -0.2
+R: 0 3 : 131 : -0.2
+R: 0 4 : 131 : -1.1
+R: 0 5 : 131 : -1.1
+R: 1 0 : 131 : -0.2
+R: 1 1 : 131 : -0.2
+R: 1 2 : 131 : -0.2
+R: 1 3 : 131 : -0.2
+R: 1 4 : 131 : -1.1
+R: 1 5 : 131 : -1.1
+R: 2 0 : 131 : -0.2
+R: 2 1 : 131 : -0.2
+R: 2 2 : 131 : -0.2
+R: 2 3 : 131 : -0.2
+R: 2 4 : 131 : -1.1
+R: 2 5 : 131 : -1.1
+R: 3 0 : 131 : -0.2
+R: 3 1 : 131 : -0.2
+R: 3 2 : 131 : -0.2
+R: 3 3 : 131 : -0.2
+R: 3 4 : 131 : -1.1
+R: 3 5 : 131 : -1.1
+R: 4 0 : 131 : -10.1
+R: 4 1 : 131 : -10.1
+R: 4 2 : 131 : -10.1
+R: 4 3 : 131 : -10.1
+R: 4 4 : 131 : -11.0
+R: 4 5 : 131 : -11.0
+R: 5 0 : 131 : 1.9
+R: 5 1 : 131 : 1.9
+R: 5 2 : 131 : 1.9
+R: 5 3 : 131 : 1.9
+R: 5 4 : 131 : 1.0
+R: 5 5 : 131 : 1.0
+R: 0 0 : 132 : -0.2
+R: 0 1 : 132 : -0.2
+R: 0 2 : 132 : -0.2
+R: 0 3 : 132 : -0.2
+R: 0 4 : 132 : -10.1
+R: 0 5 : 132 : 1.9
+R: 1 0 : 132 : -0.2
+R: 1 1 : 132 : -0.2
+R: 1 2 : 132 : -0.2
+R: 1 3 : 132 : -0.2
+R: 1 4 : 132 : -10.1
+R: 1 5 : 132 : 1.9
+R: 2 0 : 132 : -0.2
+R: 2 1 : 132 : -0.2
+R: 2 2 : 132 : -0.2
+R: 2 3 : 132 : -0.2
+R: 2 4 : 132 : -10.1
+R: 2 5 : 132 : 1.9
+R: 3 0 : 132 : -0.2
+R: 3 1 : 132 : -0.2
+R: 3 2 : 132 : -0.2
+R: 3 3 : 132 : -0.2
+R: 3 4 : 132 : -10.1
+R: 3 5 : 132 : 1.9
+R: 4 0 : 132 : -1.1
+R: 4 1 : 132 : -1.1
+R: 4 2 : 132 : -1.1
+R: 4 3 : 132 : -1.1
+R: 4 4 : 132 : -11.0
+R: 4 5 : 132 : -11.0
+R: 5 0 : 132 : -1.1
+R: 5 1 : 132 : -1.1
+R: 5 2 : 132 : -1.1
+R: 5 3 : 132 : -1.1
+R: 5 4 : 132 : 1.0
+R: 5 5 : 132 : 1.0
+R: 0 0 : 133 : -0.2
+R: 0 1 : 133 : -0.2
+R: 0 2 : 133 : -0.2
+R: 0 3 : 133 : -0.2
+R: 0 4 : 133 : -1.1
+R: 0 5 : 133 : -1.1
+R: 1 0 : 133 : -0.2
+R: 1 1 : 133 : -0.2
+R: 1 2 : 133 : -0.2
+R: 1 3 : 133 : -0.2
+R: 1 4 : 133 : -1.1
+R: 1 5 : 133 : -1.1
+R: 2 0 : 133 : -0.2
+R: 2 1 : 133 : -0.2
+R: 2 2 : 133 : -0.2
+R: 2 3 : 133 : -0.2
+R: 2 4 : 133 : -1.1
+R: 2 5 : 133 : -1.1
+R: 3 0 : 133 : -0.2
+R: 3 1 : 133 : -0.2
+R: 3 2 : 133 : -0.2
+R: 3 3 : 133 : -0.2
+R: 3 4 : 133 : -1.1
+R: 3 5 : 133 : -1.1
+R: 4 0 : 133 : -1.1
+R: 4 1 : 133 : -1.1
+R: 4 2 : 133 : -1.1
+R: 4 3 : 133 : -1.1
+R: 4 4 : 133 : -2.0
+R: 4 5 : 133 : -2.0
+R: 5 0 : 133 : -1.1
+R: 5 1 : 133 : -1.1
+R: 5 2 : 133 : -1.1
+R: 5 3 : 133 : -1.1
+R: 5 4 : 133 : -2.0
+R: 5 5 : 133 : -2.0
+R: 0 0 : 134 : -0.2
+R: 0 1 : 134 : -0.2
+R: 0 2 : 134 : -0.2
+R: 0 3 : 134 : -0.2
+R: 0 4 : 134 : -10.1
+R: 0 5 : 134 : 1.9
+R: 1 0 : 134 : -0.2
+R: 1 1 : 134 : -0.2
+R: 1 2 : 134 : -0.2
+R: 1 3 : 134 : -0.2
+R: 1 4 : 134 : -10.1
+R: 1 5 : 134 : 1.9
+R: 2 0 : 134 : -0.2
+R: 2 1 : 134 : -0.2
+R: 2 2 : 134 : -0.2
+R: 2 3 : 134 : -0.2
+R: 2 4 : 134 : -10.1
+R: 2 5 : 134 : 1.9
+R: 3 0 : 134 : -0.2
+R: 3 1 : 134 : -0.2
+R: 3 2 : 134 : -0.2
+R: 3 3 : 134 : -0.2
+R: 3 4 : 134 : -10.1
+R: 3 5 : 134 : 1.9
+R: 4 0 : 134 : -1.1
+R: 4 1 : 134 : -1.1
+R: 4 2 : 134 : -1.1
+R: 4 3 : 134 : -1.1
+R: 4 4 : 134 : -11.0
+R: 4 5 : 134 : -11.0
+R: 5 0 : 134 : -1.1
+R: 5 1 : 134 : -1.1
+R: 5 2 : 134 : -1.1
+R: 5 3 : 134 : -1.1
+R: 5 4 : 134 : 1.0
+R: 5 5 : 134 : 1.0
+R: 0 0 : 135 : -0.2
+R: 0 1 : 135 : -0.2
+R: 0 2 : 135 : -0.2
+R: 0 3 : 135 : -0.2
+R: 0 4 : 135 : -1.1
+R: 0 5 : 135 : -1.1
+R: 1 0 : 135 : -0.2
+R: 1 1 : 135 : -0.2
+R: 1 2 : 135 : -0.2
+R: 1 3 : 135 : -0.2
+R: 1 4 : 135 : -1.1
+R: 1 5 : 135 : -1.1
+R: 2 0 : 135 : -0.2
+R: 2 1 : 135 : -0.2
+R: 2 2 : 135 : -0.2
+R: 2 3 : 135 : -0.2
+R: 2 4 : 135 : -1.1
+R: 2 5 : 135 : -1.1
+R: 3 0 : 135 : -0.2
+R: 3 1 : 135 : -0.2
+R: 3 2 : 135 : -0.2
+R: 3 3 : 135 : -0.2
+R: 3 4 : 135 : -1.1
+R: 3 5 : 135 : -1.1
+R: 4 0 : 135 : -1.1
+R: 4 1 : 135 : -1.1
+R: 4 2 : 135 : -1.1
+R: 4 3 : 135 : -1.1
+R: 4 4 : 135 : -2.0
+R: 4 5 : 135 : -2.0
+R: 5 0 : 135 : -1.1
+R: 5 1 : 135 : -1.1
+R: 5 2 : 135 : -1.1
+R: 5 3 : 135 : -1.1
+R: 5 4 : 135 : -2.0
+R: 5 5 : 135 : -2.0
+R: 0 0 : 136 : -0.2
+R: 0 1 : 136 : -0.2
+R: 0 2 : 136 : -0.2
+R: 0 3 : 136 : -0.2
+R: 0 4 : 136 : -10.1
+R: 0 5 : 136 : 1.9
+R: 1 0 : 136 : -0.2
+R: 1 1 : 136 : -0.2
+R: 1 2 : 136 : -0.2
+R: 1 3 : 136 : -0.2
+R: 1 4 : 136 : -10.1
+R: 1 5 : 136 : 1.9
+R: 2 0 : 136 : -0.2
+R: 2 1 : 136 : -0.2
+R: 2 2 : 136 : -0.2
+R: 2 3 : 136 : -0.2
+R: 2 4 : 136 : -10.1
+R: 2 5 : 136 : 1.9
+R: 3 0 : 136 : -0.2
+R: 3 1 : 136 : -0.2
+R: 3 2 : 136 : -0.2
+R: 3 3 : 136 : -0.2
+R: 3 4 : 136 : -10.1
+R: 3 5 : 136 : 1.9
+R: 4 0 : 136 : -10.1
+R: 4 1 : 136 : -10.1
+R: 4 2 : 136 : -10.1
+R: 4 3 : 136 : -10.1
+R: 5 0 : 136 : 1.9
+R: 5 1 : 136 : 1.9
+R: 5 2 : 136 : 1.9
+R: 5 3 : 136 : 1.9
+R: 5 4 : 136 : 4.0
+R: 5 5 : 136 : 4.0
+R: 0 0 : 137 : -0.2
+R: 0 1 : 137 : -0.2
+R: 0 2 : 137 : -0.2
+R: 0 3 : 137 : -0.2
+R: 0 4 : 137 : -1.1
+R: 0 5 : 137 : -1.1
+R: 1 0 : 137 : -0.2
+R: 1 1 : 137 : -0.2
+R: 1 2 : 137 : -0.2
+R: 1 3 : 137 : -0.2
+R: 1 4 : 137 : -1.1
+R: 1 5 : 137 : -1.1
+R: 2 0 : 137 : -0.2
+R: 2 1 : 137 : -0.2
+R: 2 2 : 137 : -0.2
+R: 2 3 : 137 : -0.2
+R: 2 4 : 137 : -1.1
+R: 2 5 : 137 : -1.1
+R: 3 0 : 137 : -0.2
+R: 3 1 : 137 : -0.2
+R: 3 2 : 137 : -0.2
+R: 3 3 : 137 : -0.2
+R: 3 4 : 137 : -1.1
+R: 3 5 : 137 : -1.1
+R: 4 0 : 137 : -10.1
+R: 4 1 : 137 : -10.1
+R: 4 2 : 137 : -10.1
+R: 4 3 : 137 : -10.1
+R: 4 4 : 137 : -11.0
+R: 4 5 : 137 : -11.0
+R: 5 0 : 137 : 1.9
+R: 5 1 : 137 : 1.9
+R: 5 2 : 137 : 1.9
+R: 5 3 : 137 : 1.9
+R: 5 4 : 137 : 1.0
+R: 5 5 : 137 : 1.0
+R: 0 0 : 138 : -0.2
+R: 0 1 : 138 : -0.2
+R: 0 2 : 138 : -0.2
+R: 0 3 : 138 : -0.2
+R: 0 4 : 138 : -10.1
+R: 0 5 : 138 : 1.9
+R: 1 0 : 138 : -0.2
+R: 1 1 : 138 : -0.2
+R: 1 2 : 138 : -0.2
+R: 1 3 : 138 : -0.2
+R: 1 4 : 138 : -10.1
+R: 1 5 : 138 : 1.9
+R: 2 0 : 138 : -0.2
+R: 2 1 : 138 : -0.2
+R: 2 2 : 138 : -0.2
+R: 2 3 : 138 : -0.2
+R: 2 4 : 138 : -10.1
+R: 2 5 : 138 : 1.9
+R: 3 0 : 138 : -0.2
+R: 3 1 : 138 : -0.2
+R: 3 2 : 138 : -0.2
+R: 3 3 : 138 : -0.2
+R: 3 4 : 138 : -10.1
+R: 3 5 : 138 : 1.9
+R: 4 0 : 138 : -10.1
+R: 4 1 : 138 : -10.1
+R: 4 2 : 138 : -10.1
+R: 4 3 : 138 : -10.1
+R: 5 0 : 138 : 1.9
+R: 5 1 : 138 : 1.9
+R: 5 2 : 138 : 1.9
+R: 5 3 : 138 : 1.9
+R: 5 4 : 138 : 4.0
+R: 5 5 : 138 : 4.0
+R: 0 0 : 139 : -0.2
+R: 0 1 : 139 : -0.2
+R: 0 2 : 139 : -0.2
+R: 0 3 : 139 : -0.2
+R: 0 4 : 139 : -1.1
+R: 0 5 : 139 : -1.1
+R: 1 0 : 139 : -0.2
+R: 1 1 : 139 : -0.2
+R: 1 2 : 139 : -0.2
+R: 1 3 : 139 : -0.2
+R: 1 4 : 139 : -1.1
+R: 1 5 : 139 : -1.1
+R: 2 0 : 139 : -0.2
+R: 2 1 : 139 : -0.2
+R: 2 2 : 139 : -0.2
+R: 2 3 : 139 : -0.2
+R: 2 4 : 139 : -1.1
+R: 2 5 : 139 : -1.1
+R: 3 0 : 139 : -0.2
+R: 3 1 : 139 : -0.2
+R: 3 2 : 139 : -0.2
+R: 3 3 : 139 : -0.2
+R: 3 4 : 139 : -1.1
+R: 3 5 : 139 : -1.1
+R: 4 0 : 139 : -10.1
+R: 4 1 : 139 : -10.1
+R: 4 2 : 139 : -10.1
+R: 4 3 : 139 : -10.1
+R: 4 4 : 139 : -11.0
+R: 4 5 : 139 : -11.0
+R: 5 0 : 139 : 1.9
+R: 5 1 : 139 : 1.9
+R: 5 2 : 139 : 1.9
+R: 5 3 : 139 : 1.9
+R: 5 4 : 139 : 1.0
+R: 5 5 : 139 : 1.0
+R: 0 0 : 140 : -0.2
+R: 0 1 : 140 : -0.2
+R: 0 2 : 140 : -0.2
+R: 0 3 : 140 : -0.2
+R: 0 4 : 140 : -10.1
+R: 0 5 : 140 : 1.9
+R: 1 0 : 140 : -0.2
+R: 1 1 : 140 : -0.2
+R: 1 2 : 140 : -0.2
+R: 1 3 : 140 : -0.2
+R: 1 4 : 140 : -10.1
+R: 1 5 : 140 : 1.9
+R: 2 0 : 140 : -0.2
+R: 2 1 : 140 : -0.2
+R: 2 2 : 140 : -0.2
+R: 2 3 : 140 : -0.2
+R: 2 4 : 140 : -10.1
+R: 2 5 : 140 : 1.9
+R: 3 0 : 140 : -0.2
+R: 3 1 : 140 : -0.2
+R: 3 2 : 140 : -0.2
+R: 3 3 : 140 : -0.2
+R: 3 4 : 140 : -10.1
+R: 3 5 : 140 : 1.9
+R: 4 0 : 140 : -1.1
+R: 4 1 : 140 : -1.1
+R: 4 2 : 140 : -1.1
+R: 4 3 : 140 : -1.1
+R: 4 4 : 140 : -11.0
+R: 4 5 : 140 : -11.0
+R: 5 0 : 140 : -1.1
+R: 5 1 : 140 : -1.1
+R: 5 2 : 140 : -1.1
+R: 5 3 : 140 : -1.1
+R: 5 4 : 140 : 1.0
+R: 5 5 : 140 : 1.0
+R: 0 0 : 141 : -0.2
+R: 0 1 : 141 : -0.2
+R: 0 2 : 141 : -0.2
+R: 0 3 : 141 : -0.2
+R: 0 4 : 141 : -1.1
+R: 0 5 : 141 : -1.1
+R: 1 0 : 141 : -0.2
+R: 1 1 : 141 : -0.2
+R: 1 2 : 141 : -0.2
+R: 1 3 : 141 : -0.2
+R: 1 4 : 141 : -1.1
+R: 1 5 : 141 : -1.1
+R: 2 0 : 141 : -0.2
+R: 2 1 : 141 : -0.2
+R: 2 2 : 141 : -0.2
+R: 2 3 : 141 : -0.2
+R: 2 4 : 141 : -1.1
+R: 2 5 : 141 : -1.1
+R: 3 0 : 141 : -0.2
+R: 3 1 : 141 : -0.2
+R: 3 2 : 141 : -0.2
+R: 3 3 : 141 : -0.2
+R: 3 4 : 141 : -1.1
+R: 3 5 : 141 : -1.1
+R: 4 0 : 141 : -1.1
+R: 4 1 : 141 : -1.1
+R: 4 2 : 141 : -1.1
+R: 4 3 : 141 : -1.1
+R: 4 4 : 141 : -2.0
+R: 4 5 : 141 : -2.0
+R: 5 0 : 141 : -1.1
+R: 5 1 : 141 : -1.1
+R: 5 2 : 141 : -1.1
+R: 5 3 : 141 : -1.1
+R: 5 4 : 141 : -2.0
+R: 5 5 : 141 : -2.0
+R: 0 0 : 142 : -0.2
+R: 0 1 : 142 : -0.2
+R: 0 2 : 142 : -0.2
+R: 0 3 : 142 : -0.2
+R: 0 4 : 142 : -10.1
+R: 0 5 : 142 : 1.9
+R: 1 0 : 142 : -0.2
+R: 1 1 : 142 : -0.2
+R: 1 2 : 142 : -0.2
+R: 1 3 : 142 : -0.2
+R: 1 4 : 142 : -10.1
+R: 1 5 : 142 : 1.9
+R: 2 0 : 142 : -0.2
+R: 2 1 : 142 : -0.2
+R: 2 2 : 142 : -0.2
+R: 2 3 : 142 : -0.2
+R: 2 4 : 142 : -10.1
+R: 2 5 : 142 : 1.9
+R: 3 0 : 142 : -0.2
+R: 3 1 : 142 : -0.2
+R: 3 2 : 142 : -0.2
+R: 3 3 : 142 : -0.2
+R: 3 4 : 142 : -10.1
+R: 3 5 : 142 : 1.9
+R: 4 0 : 142 : -1.1
+R: 4 1 : 142 : -1.1
+R: 4 2 : 142 : -1.1
+R: 4 3 : 142 : -1.1
+R: 4 4 : 142 : -11.0
+R: 4 5 : 142 : -11.0
+R: 5 0 : 142 : -1.1
+R: 5 1 : 142 : -1.1
+R: 5 2 : 142 : -1.1
+R: 5 3 : 142 : -1.1
+R: 5 4 : 142 : 1.0
+R: 5 5 : 142 : 1.0
+R: 0 0 : 143 : -0.2
+R: 0 1 : 143 : -0.2
+R: 0 2 : 143 : -0.2
+R: 0 3 : 143 : -0.2
+R: 0 4 : 143 : -1.1
+R: 0 5 : 143 : -1.1
+R: 1 0 : 143 : -0.2
+R: 1 1 : 143 : -0.2
+R: 1 2 : 143 : -0.2
+R: 1 3 : 143 : -0.2
+R: 1 4 : 143 : -1.1
+R: 1 5 : 143 : -1.1
+R: 2 0 : 143 : -0.2
+R: 2 1 : 143 : -0.2
+R: 2 2 : 143 : -0.2
+R: 2 3 : 143 : -0.2
+R: 2 4 : 143 : -1.1
+R: 2 5 : 143 : -1.1
+R: 3 0 : 143 : -0.2
+R: 3 1 : 143 : -0.2
+R: 3 2 : 143 : -0.2
+R: 3 3 : 143 : -0.2
+R: 3 4 : 143 : -1.1
+R: 3 5 : 143 : -1.1
+R: 4 0 : 143 : -1.1
+R: 4 1 : 143 : -1.1
+R: 4 2 : 143 : -1.1
+R: 4 3 : 143 : -1.1
+R: 4 4 : 143 : -2.0
+R: 4 5 : 143 : -2.0
+R: 5 0 : 143 : -1.1
+R: 5 1 : 143 : -1.1
+R: 5 2 : 143 : -1.1
+R: 5 3 : 143 : -1.1
+R: 5 4 : 143 : -2.0
+R: 5 5 : 143 : -2.0
+R: 0 0 : 144 : -0.2
+R: 0 1 : 144 : -0.2
+R: 0 2 : 144 : -0.2
+R: 0 3 : 144 : -0.2
+R: 0 4 : 144 : -10.1
+R: 0 5 : 144 : 1.9
+R: 1 0 : 144 : -0.2
+R: 1 1 : 144 : -0.2
+R: 1 2 : 144 : -0.2
+R: 1 3 : 144 : -0.2
+R: 1 4 : 144 : -10.1
+R: 1 5 : 144 : 1.9
+R: 2 0 : 144 : -0.2
+R: 2 1 : 144 : -0.2
+R: 2 2 : 144 : -0.2
+R: 2 3 : 144 : -0.2
+R: 2 4 : 144 : -10.1
+R: 2 5 : 144 : 1.9
+R: 3 0 : 144 : -0.2
+R: 3 1 : 144 : -0.2
+R: 3 2 : 144 : -0.2
+R: 3 3 : 144 : -0.2
+R: 3 4 : 144 : -10.1
+R: 3 5 : 144 : 1.9
+R: 4 0 : 144 : -10.1
+R: 4 1 : 144 : -10.1
+R: 4 2 : 144 : -10.1
+R: 4 3 : 144 : -10.1
+R: 5 0 : 144 : 1.9
+R: 5 1 : 144 : 1.9
+R: 5 2 : 144 : 1.9
+R: 5 3 : 144 : 1.9
+R: 5 4 : 144 : 4.0
+R: 5 5 : 144 : 4.0
+R: 0 0 : 145 : -0.2
+R: 0 1 : 145 : -0.2
+R: 0 2 : 145 : -0.2
+R: 0 3 : 145 : -0.2
+R: 0 4 : 145 : -10.1
+R: 0 5 : 145 : 1.9
+R: 1 0 : 145 : -0.2
+R: 1 1 : 145 : -0.2
+R: 1 2 : 145 : -0.2
+R: 1 3 : 145 : -0.2
+R: 1 4 : 145 : -10.1
+R: 1 5 : 145 : 1.9
+R: 2 0 : 145 : -0.2
+R: 2 1 : 145 : -0.2
+R: 2 2 : 145 : -0.2
+R: 2 3 : 145 : -0.2
+R: 2 4 : 145 : -10.1
+R: 2 5 : 145 : 1.9
+R: 3 0 : 145 : -0.2
+R: 3 1 : 145 : -0.2
+R: 3 2 : 145 : -0.2
+R: 3 3 : 145 : -0.2
+R: 3 4 : 145 : -10.1
+R: 3 5 : 145 : 1.9
+R: 4 0 : 145 : -10.1
+R: 4 1 : 145 : -10.1
+R: 4 2 : 145 : -10.1
+R: 4 3 : 145 : -10.1
+R: 5 0 : 145 : 1.9
+R: 5 1 : 145 : 1.9
+R: 5 2 : 145 : 1.9
+R: 5 3 : 145 : 1.9
+R: 5 4 : 145 : 4.0
+R: 5 5 : 145 : 4.0
+R: 0 0 : 146 : -0.2
+R: 0 1 : 146 : -0.2
+R: 0 2 : 146 : -0.2
+R: 0 3 : 146 : -0.2
+R: 0 4 : 146 : -1.1
+R: 0 5 : 146 : -1.1
+R: 1 0 : 146 : -0.2
+R: 1 1 : 146 : -0.2
+R: 1 2 : 146 : -0.2
+R: 1 3 : 146 : -0.2
+R: 1 4 : 146 : -1.1
+R: 1 5 : 146 : -1.1
+R: 2 0 : 146 : -0.2
+R: 2 1 : 146 : -0.2
+R: 2 2 : 146 : -0.2
+R: 2 3 : 146 : -0.2
+R: 2 4 : 146 : -1.1
+R: 2 5 : 146 : -1.1
+R: 3 0 : 146 : -0.2
+R: 3 1 : 146 : -0.2
+R: 3 2 : 146 : -0.2
+R: 3 3 : 146 : -0.2
+R: 3 4 : 146 : -1.1
+R: 3 5 : 146 : -1.1
+R: 4 0 : 146 : -10.1
+R: 4 1 : 146 : -10.1
+R: 4 2 : 146 : -10.1
+R: 4 3 : 146 : -10.1
+R: 4 4 : 146 : -11.0
+R: 4 5 : 146 : -11.0
+R: 5 0 : 146 : 1.9
+R: 5 1 : 146 : 1.9
+R: 5 2 : 146 : 1.9
+R: 5 3 : 146 : 1.9
+R: 5 4 : 146 : 1.0
+R: 5 5 : 146 : 1.0
+R: 0 0 : 147 : -0.2
+R: 0 1 : 147 : -0.2
+R: 0 2 : 147 : -0.2
+R: 0 3 : 147 : -0.2
+R: 0 4 : 147 : -1.1
+R: 0 5 : 147 : -1.1
+R: 1 0 : 147 : -0.2
+R: 1 1 : 147 : -0.2
+R: 1 2 : 147 : -0.2
+R: 1 3 : 147 : -0.2
+R: 1 4 : 147 : -1.1
+R: 1 5 : 147 : -1.1
+R: 2 0 : 147 : -0.2
+R: 2 1 : 147 : -0.2
+R: 2 2 : 147 : -0.2
+R: 2 3 : 147 : -0.2
+R: 2 4 : 147 : -1.1
+R: 2 5 : 147 : -1.1
+R: 3 0 : 147 : -0.2
+R: 3 1 : 147 : -0.2
+R: 3 2 : 147 : -0.2
+R: 3 3 : 147 : -0.2
+R: 3 4 : 147 : -1.1
+R: 3 5 : 147 : -1.1
+R: 4 0 : 147 : -10.1
+R: 4 1 : 147 : -10.1
+R: 4 2 : 147 : -10.1
+R: 4 3 : 147 : -10.1
+R: 4 4 : 147 : -11.0
+R: 4 5 : 147 : -11.0
+R: 5 0 : 147 : 1.9
+R: 5 1 : 147 : 1.9
+R: 5 2 : 147 : 1.9
+R: 5 3 : 147 : 1.9
+R: 5 4 : 147 : 1.0
+R: 5 5 : 147 : 1.0
+R: 0 0 : 148 : -0.2
+R: 0 1 : 148 : -0.2
+R: 0 2 : 148 : -0.2
+R: 0 3 : 148 : -0.2
+R: 0 4 : 148 : -10.1
+R: 0 5 : 148 : 1.9
+R: 1 0 : 148 : -0.2
+R: 1 1 : 148 : -0.2
+R: 1 2 : 148 : -0.2
+R: 1 3 : 148 : -0.2
+R: 1 4 : 148 : -10.1
+R: 1 5 : 148 : 1.9
+R: 2 0 : 148 : -0.2
+R: 2 1 : 148 : -0.2
+R: 2 2 : 148 : -0.2
+R: 2 3 : 148 : -0.2
+R: 2 4 : 148 : -10.1
+R: 2 5 : 148 : 1.9
+R: 3 0 : 148 : -0.2
+R: 3 1 : 148 : -0.2
+R: 3 2 : 148 : -0.2
+R: 3 3 : 148 : -0.2
+R: 3 4 : 148 : -10.1
+R: 3 5 : 148 : 1.9
+R: 4 0 : 148 : -1.1
+R: 4 1 : 148 : -1.1
+R: 4 2 : 148 : -1.1
+R: 4 3 : 148 : -1.1
+R: 4 4 : 148 : -11.0
+R: 4 5 : 148 : -11.0
+R: 5 0 : 148 : -1.1
+R: 5 1 : 148 : -1.1
+R: 5 2 : 148 : -1.1
+R: 5 3 : 148 : -1.1
+R: 5 4 : 148 : 1.0
+R: 5 5 : 148 : 1.0
+R: 0 0 : 149 : -0.2
+R: 0 1 : 149 : -0.2
+R: 0 2 : 149 : -0.2
+R: 0 3 : 149 : -0.2
+R: 0 4 : 149 : -10.1
+R: 0 5 : 149 : 1.9
+R: 1 0 : 149 : -0.2
+R: 1 1 : 149 : -0.2
+R: 1 2 : 149 : -0.2
+R: 1 3 : 149 : -0.2
+R: 1 4 : 149 : -10.1
+R: 1 5 : 149 : 1.9
+R: 2 0 : 149 : -0.2
+R: 2 1 : 149 : -0.2
+R: 2 2 : 149 : -0.2
+R: 2 3 : 149 : -0.2
+R: 2 4 : 149 : -10.1
+R: 2 5 : 149 : 1.9
+R: 3 0 : 149 : -0.2
+R: 3 1 : 149 : -0.2
+R: 3 2 : 149 : -0.2
+R: 3 3 : 149 : -0.2
+R: 3 4 : 149 : -10.1
+R: 3 5 : 149 : 1.9
+R: 4 0 : 149 : -1.1
+R: 4 1 : 149 : -1.1
+R: 4 2 : 149 : -1.1
+R: 4 3 : 149 : -1.1
+R: 4 4 : 149 : -11.0
+R: 4 5 : 149 : -11.0
+R: 5 0 : 149 : -1.1
+R: 5 1 : 149 : -1.1
+R: 5 2 : 149 : -1.1
+R: 5 3 : 149 : -1.1
+R: 5 4 : 149 : 1.0
+R: 5 5 : 149 : 1.0
+R: 0 0 : 150 : -0.2
+R: 0 1 : 150 : -0.2
+R: 0 2 : 150 : -0.2
+R: 0 3 : 150 : -0.2
+R: 0 4 : 150 : -1.1
+R: 0 5 : 150 : -1.1
+R: 1 0 : 150 : -0.2
+R: 1 1 : 150 : -0.2
+R: 1 2 : 150 : -0.2
+R: 1 3 : 150 : -0.2
+R: 1 4 : 150 : -1.1
+R: 1 5 : 150 : -1.1
+R: 2 0 : 150 : -0.2
+R: 2 1 : 150 : -0.2
+R: 2 2 : 150 : -0.2
+R: 2 3 : 150 : -0.2
+R: 2 4 : 150 : -1.1
+R: 2 5 : 150 : -1.1
+R: 3 0 : 150 : -0.2
+R: 3 1 : 150 : -0.2
+R: 3 2 : 150 : -0.2
+R: 3 3 : 150 : -0.2
+R: 3 4 : 150 : -1.1
+R: 3 5 : 150 : -1.1
+R: 4 0 : 150 : -1.1
+R: 4 1 : 150 : -1.1
+R: 4 2 : 150 : -1.1
+R: 4 3 : 150 : -1.1
+R: 4 4 : 150 : -2.0
+R: 4 5 : 150 : -2.0
+R: 5 0 : 150 : -1.1
+R: 5 1 : 150 : -1.1
+R: 5 2 : 150 : -1.1
+R: 5 3 : 150 : -1.1
+R: 5 4 : 150 : -2.0
+R: 5 5 : 150 : -2.0
+R: 0 0 : 151 : -0.2
+R: 0 1 : 151 : -0.2
+R: 0 2 : 151 : -0.2
+R: 0 3 : 151 : -0.2
+R: 0 4 : 151 : -1.1
+R: 0 5 : 151 : -1.1
+R: 1 0 : 151 : -0.2
+R: 1 1 : 151 : -0.2
+R: 1 2 : 151 : -0.2
+R: 1 3 : 151 : -0.2
+R: 1 4 : 151 : -1.1
+R: 1 5 : 151 : -1.1
+R: 2 0 : 151 : -0.2
+R: 2 1 : 151 : -0.2
+R: 2 2 : 151 : -0.2
+R: 2 3 : 151 : -0.2
+R: 2 4 : 151 : -1.1
+R: 2 5 : 151 : -1.1
+R: 3 0 : 151 : -0.2
+R: 3 1 : 151 : -0.2
+R: 3 2 : 151 : -0.2
+R: 3 3 : 151 : -0.2
+R: 3 4 : 151 : -1.1
+R: 3 5 : 151 : -1.1
+R: 4 0 : 151 : -1.1
+R: 4 1 : 151 : -1.1
+R: 4 2 : 151 : -1.1
+R: 4 3 : 151 : -1.1
+R: 4 4 : 151 : -2.0
+R: 4 5 : 151 : -2.0
+R: 5 0 : 151 : -1.1
+R: 5 1 : 151 : -1.1
+R: 5 2 : 151 : -1.1
+R: 5 3 : 151 : -1.1
+R: 5 4 : 151 : -2.0
+R: 5 5 : 151 : -2.0
+R: 0 0 : 152 : -0.2
+R: 0 1 : 152 : -0.2
+R: 0 2 : 152 : -0.2
+R: 0 3 : 152 : -0.2
+R: 0 4 : 152 : -10.1
+R: 0 5 : 152 : 1.9
+R: 1 0 : 152 : -0.2
+R: 1 1 : 152 : -0.2
+R: 1 2 : 152 : -0.2
+R: 1 3 : 152 : -0.2
+R: 1 4 : 152 : -10.1
+R: 1 5 : 152 : 1.9
+R: 2 0 : 152 : -0.2
+R: 2 1 : 152 : -0.2
+R: 2 2 : 152 : -0.2
+R: 2 3 : 152 : -0.2
+R: 2 4 : 152 : -10.1
+R: 2 5 : 152 : 1.9
+R: 3 0 : 152 : -0.2
+R: 3 1 : 152 : -0.2
+R: 3 2 : 152 : -0.2
+R: 3 3 : 152 : -0.2
+R: 3 4 : 152 : -10.1
+R: 3 5 : 152 : 1.9
+R: 4 0 : 152 : -10.1
+R: 4 1 : 152 : -10.1
+R: 4 2 : 152 : -10.1
+R: 4 3 : 152 : -10.1
+R: 5 0 : 152 : 1.9
+R: 5 1 : 152 : 1.9
+R: 5 2 : 152 : 1.9
+R: 5 3 : 152 : 1.9
+R: 5 4 : 152 : 4.0
+R: 5 5 : 152 : 4.0
+R: 0 0 : 153 : -0.2
+R: 0 1 : 153 : -0.2
+R: 0 2 : 153 : -0.2
+R: 0 3 : 153 : -0.2
+R: 0 4 : 153 : -10.1
+R: 0 5 : 153 : 1.9
+R: 1 0 : 153 : -0.2
+R: 1 1 : 153 : -0.2
+R: 1 2 : 153 : -0.2
+R: 1 3 : 153 : -0.2
+R: 1 4 : 153 : -10.1
+R: 1 5 : 153 : 1.9
+R: 2 0 : 153 : -0.2
+R: 2 1 : 153 : -0.2
+R: 2 2 : 153 : -0.2
+R: 2 3 : 153 : -0.2
+R: 2 4 : 153 : -10.1
+R: 2 5 : 153 : 1.9
+R: 3 0 : 153 : -0.2
+R: 3 1 : 153 : -0.2
+R: 3 2 : 153 : -0.2
+R: 3 3 : 153 : -0.2
+R: 3 4 : 153 : -10.1
+R: 3 5 : 153 : 1.9
+R: 4 0 : 153 : -10.1
+R: 4 1 : 153 : -10.1
+R: 4 2 : 153 : -10.1
+R: 4 3 : 153 : -10.1
+R: 5 0 : 153 : 1.9
+R: 5 1 : 153 : 1.9
+R: 5 2 : 153 : 1.9
+R: 5 3 : 153 : 1.9
+R: 5 4 : 153 : 4.0
+R: 5 5 : 153 : 4.0
+R: 0 0 : 154 : -0.2
+R: 0 1 : 154 : -0.2
+R: 0 2 : 154 : -0.2
+R: 0 3 : 154 : -0.2
+R: 0 4 : 154 : -1.1
+R: 0 5 : 154 : -1.1
+R: 1 0 : 154 : -0.2
+R: 1 1 : 154 : -0.2
+R: 1 2 : 154 : -0.2
+R: 1 3 : 154 : -0.2
+R: 1 4 : 154 : -1.1
+R: 1 5 : 154 : -1.1
+R: 2 0 : 154 : -0.2
+R: 2 1 : 154 : -0.2
+R: 2 2 : 154 : -0.2
+R: 2 3 : 154 : -0.2
+R: 2 4 : 154 : -1.1
+R: 2 5 : 154 : -1.1
+R: 3 0 : 154 : -0.2
+R: 3 1 : 154 : -0.2
+R: 3 2 : 154 : -0.2
+R: 3 3 : 154 : -0.2
+R: 3 4 : 154 : -1.1
+R: 3 5 : 154 : -1.1
+R: 4 0 : 154 : -10.1
+R: 4 1 : 154 : -10.1
+R: 4 2 : 154 : -10.1
+R: 4 3 : 154 : -10.1
+R: 4 4 : 154 : -11.0
+R: 4 5 : 154 : -11.0
+R: 5 0 : 154 : 1.9
+R: 5 1 : 154 : 1.9
+R: 5 2 : 154 : 1.9
+R: 5 3 : 154 : 1.9
+R: 5 4 : 154 : 1.0
+R: 5 5 : 154 : 1.0
+R: 0 0 : 155 : -0.2
+R: 0 1 : 155 : -0.2
+R: 0 2 : 155 : -0.2
+R: 0 3 : 155 : -0.2
+R: 0 4 : 155 : -1.1
+R: 0 5 : 155 : -1.1
+R: 1 0 : 155 : -0.2
+R: 1 1 : 155 : -0.2
+R: 1 2 : 155 : -0.2
+R: 1 3 : 155 : -0.2
+R: 1 4 : 155 : -1.1
+R: 1 5 : 155 : -1.1
+R: 2 0 : 155 : -0.2
+R: 2 1 : 155 : -0.2
+R: 2 2 : 155 : -0.2
+R: 2 3 : 155 : -0.2
+R: 2 4 : 155 : -1.1
+R: 2 5 : 155 : -1.1
+R: 3 0 : 155 : -0.2
+R: 3 1 : 155 : -0.2
+R: 3 2 : 155 : -0.2
+R: 3 3 : 155 : -0.2
+R: 3 4 : 155 : -1.1
+R: 3 5 : 155 : -1.1
+R: 4 0 : 155 : -10.1
+R: 4 1 : 155 : -10.1
+R: 4 2 : 155 : -10.1
+R: 4 3 : 155 : -10.1
+R: 4 4 : 155 : -11.0
+R: 4 5 : 155 : -11.0
+R: 5 0 : 155 : 1.9
+R: 5 1 : 155 : 1.9
+R: 5 2 : 155 : 1.9
+R: 5 3 : 155 : 1.9
+R: 5 4 : 155 : 1.0
+R: 5 5 : 155 : 1.0
+R: 0 0 : 156 : -0.2
+R: 0 1 : 156 : -0.2
+R: 0 2 : 156 : -0.2
+R: 0 3 : 156 : -0.2
+R: 0 4 : 156 : -10.1
+R: 0 5 : 156 : 1.9
+R: 1 0 : 156 : -0.2
+R: 1 1 : 156 : -0.2
+R: 1 2 : 156 : -0.2
+R: 1 3 : 156 : -0.2
+R: 1 4 : 156 : -10.1
+R: 1 5 : 156 : 1.9
+R: 2 0 : 156 : -0.2
+R: 2 1 : 156 : -0.2
+R: 2 2 : 156 : -0.2
+R: 2 3 : 156 : -0.2
+R: 2 4 : 156 : -10.1
+R: 2 5 : 156 : 1.9
+R: 3 0 : 156 : -0.2
+R: 3 1 : 156 : -0.2
+R: 3 2 : 156 : -0.2
+R: 3 3 : 156 : -0.2
+R: 3 4 : 156 : -10.1
+R: 3 5 : 156 : 1.9
+R: 4 0 : 156 : -1.1
+R: 4 1 : 156 : -1.1
+R: 4 2 : 156 : -1.1
+R: 4 3 : 156 : -1.1
+R: 4 4 : 156 : -11.0
+R: 4 5 : 156 : -11.0
+R: 5 0 : 156 : -1.1
+R: 5 1 : 156 : -1.1
+R: 5 2 : 156 : -1.1
+R: 5 3 : 156 : -1.1
+R: 5 4 : 156 : 1.0
+R: 5 5 : 156 : 1.0
+R: 0 0 : 157 : -0.2
+R: 0 1 : 157 : -0.2
+R: 0 2 : 157 : -0.2
+R: 0 3 : 157 : -0.2
+R: 0 4 : 157 : -10.1
+R: 0 5 : 157 : 1.9
+R: 1 0 : 157 : -0.2
+R: 1 1 : 157 : -0.2
+R: 1 2 : 157 : -0.2
+R: 1 3 : 157 : -0.2
+R: 1 4 : 157 : -10.1
+R: 1 5 : 157 : 1.9
+R: 2 0 : 157 : -0.2
+R: 2 1 : 157 : -0.2
+R: 2 2 : 157 : -0.2
+R: 2 3 : 157 : -0.2
+R: 2 4 : 157 : -10.1
+R: 2 5 : 157 : 1.9
+R: 3 0 : 157 : -0.2
+R: 3 1 : 157 : -0.2
+R: 3 2 : 157 : -0.2
+R: 3 3 : 157 : -0.2
+R: 3 4 : 157 : -10.1
+R: 3 5 : 157 : 1.9
+R: 4 0 : 157 : -1.1
+R: 4 1 : 157 : -1.1
+R: 4 2 : 157 : -1.1
+R: 4 3 : 157 : -1.1
+R: 4 4 : 157 : -11.0
+R: 4 5 : 157 : -11.0
+R: 5 0 : 157 : -1.1
+R: 5 1 : 157 : -1.1
+R: 5 2 : 157 : -1.1
+R: 5 3 : 157 : -1.1
+R: 5 4 : 157 : 1.0
+R: 5 5 : 157 : 1.0
+R: 0 0 : 158 : -0.2
+R: 0 1 : 158 : -0.2
+R: 0 2 : 158 : -0.2
+R: 0 3 : 158 : -0.2
+R: 0 4 : 158 : -1.1
+R: 0 5 : 158 : -1.1
+R: 1 0 : 158 : -0.2
+R: 1 1 : 158 : -0.2
+R: 1 2 : 158 : -0.2
+R: 1 3 : 158 : -0.2
+R: 1 4 : 158 : -1.1
+R: 1 5 : 158 : -1.1
+R: 2 0 : 158 : -0.2
+R: 2 1 : 158 : -0.2
+R: 2 2 : 158 : -0.2
+R: 2 3 : 158 : -0.2
+R: 2 4 : 158 : -1.1
+R: 2 5 : 158 : -1.1
+R: 3 0 : 158 : -0.2
+R: 3 1 : 158 : -0.2
+R: 3 2 : 158 : -0.2
+R: 3 3 : 158 : -0.2
+R: 3 4 : 158 : -1.1
+R: 3 5 : 158 : -1.1
+R: 4 0 : 158 : -1.1
+R: 4 1 : 158 : -1.1
+R: 4 2 : 158 : -1.1
+R: 4 3 : 158 : -1.1
+R: 4 4 : 158 : -2.0
+R: 4 5 : 158 : -2.0
+R: 5 0 : 158 : -1.1
+R: 5 1 : 158 : -1.1
+R: 5 2 : 158 : -1.1
+R: 5 3 : 158 : -1.1
+R: 5 4 : 158 : -2.0
+R: 5 5 : 158 : -2.0
+R: 0 0 : 159 : -0.2
+R: 0 1 : 159 : -0.2
+R: 0 2 : 159 : -0.2
+R: 0 3 : 159 : -0.2
+R: 0 4 : 159 : -1.1
+R: 0 5 : 159 : -1.1
+R: 1 0 : 159 : -0.2
+R: 1 1 : 159 : -0.2
+R: 1 2 : 159 : -0.2
+R: 1 3 : 159 : -0.2
+R: 1 4 : 159 : -1.1
+R: 1 5 : 159 : -1.1
+R: 2 0 : 159 : -0.2
+R: 2 1 : 159 : -0.2
+R: 2 2 : 159 : -0.2
+R: 2 3 : 159 : -0.2
+R: 2 4 : 159 : -1.1
+R: 2 5 : 159 : -1.1
+R: 3 0 : 159 : -0.2
+R: 3 1 : 159 : -0.2
+R: 3 2 : 159 : -0.2
+R: 3 3 : 159 : -0.2
+R: 3 4 : 159 : -1.1
+R: 3 5 : 159 : -1.1
+R: 4 0 : 159 : -1.1
+R: 4 1 : 159 : -1.1
+R: 4 2 : 159 : -1.1
+R: 4 3 : 159 : -1.1
+R: 4 4 : 159 : -2.0
+R: 4 5 : 159 : -2.0
+R: 5 0 : 159 : -1.1
+R: 5 1 : 159 : -1.1
+R: 5 2 : 159 : -1.1
+R: 5 3 : 159 : -1.1
+R: 5 4 : 159 : -2.0
+R: 5 5 : 159 : -2.0
+R: 0 0 : 160 : -0.2
+R: 0 1 : 160 : -0.2
+R: 0 2 : 160 : -0.2
+R: 0 3 : 160 : -0.2
+R: 0 4 : 160 : -10.1
+R: 0 5 : 160 : 1.9
+R: 1 0 : 160 : -0.2
+R: 1 1 : 160 : -0.2
+R: 1 2 : 160 : -0.2
+R: 1 3 : 160 : -0.2
+R: 1 4 : 160 : -10.1
+R: 1 5 : 160 : 1.9
+R: 2 0 : 160 : -0.2
+R: 2 1 : 160 : -0.2
+R: 2 2 : 160 : -0.2
+R: 2 3 : 160 : -0.2
+R: 2 4 : 160 : -10.1
+R: 2 5 : 160 : 1.9
+R: 3 0 : 160 : -0.2
+R: 3 1 : 160 : -0.2
+R: 3 2 : 160 : -0.2
+R: 3 3 : 160 : -0.2
+R: 3 4 : 160 : -10.1
+R: 3 5 : 160 : 1.9
+R: 4 0 : 160 : -10.1
+R: 4 1 : 160 : -10.1
+R: 4 2 : 160 : -10.1
+R: 4 3 : 160 : -10.1
+R: 5 0 : 160 : 1.9
+R: 5 1 : 160 : 1.9
+R: 5 2 : 160 : 1.9
+R: 5 3 : 160 : 1.9
+R: 5 5 : 160 : 2.0
+R: 0 0 : 161 : -0.2
+R: 0 1 : 161 : -0.2
+R: 0 2 : 161 : -0.2
+R: 0 3 : 161 : -0.2
+R: 0 4 : 161 : -10.1
+R: 0 5 : 161 : 1.9
+R: 1 0 : 161 : -0.2
+R: 1 1 : 161 : -0.2
+R: 1 2 : 161 : -0.2
+R: 1 3 : 161 : -0.2
+R: 1 4 : 161 : -10.1
+R: 1 5 : 161 : 1.9
+R: 2 0 : 161 : -0.2
+R: 2 1 : 161 : -0.2
+R: 2 2 : 161 : -0.2
+R: 2 3 : 161 : -0.2
+R: 2 4 : 161 : -10.1
+R: 2 5 : 161 : 1.9
+R: 3 0 : 161 : -0.2
+R: 3 1 : 161 : -0.2
+R: 3 2 : 161 : -0.2
+R: 3 3 : 161 : -0.2
+R: 3 4 : 161 : -10.1
+R: 3 5 : 161 : 1.9
+R: 4 0 : 161 : -10.1
+R: 4 1 : 161 : -10.1
+R: 4 2 : 161 : -10.1
+R: 4 3 : 161 : -10.1
+R: 5 0 : 161 : 1.9
+R: 5 1 : 161 : 1.9
+R: 5 2 : 161 : 1.9
+R: 5 3 : 161 : 1.9
+R: 5 5 : 161 : 2.0
+R: 0 0 : 162 : -0.2
+R: 0 1 : 162 : -0.2
+R: 0 2 : 162 : -0.2
+R: 0 3 : 162 : -0.2
+R: 0 4 : 162 : -10.1
+R: 0 5 : 162 : 1.9
+R: 1 0 : 162 : -0.2
+R: 1 1 : 162 : -0.2
+R: 1 2 : 162 : -0.2
+R: 1 3 : 162 : -0.2
+R: 1 4 : 162 : -10.1
+R: 1 5 : 162 : 1.9
+R: 2 0 : 162 : -0.2
+R: 2 1 : 162 : -0.2
+R: 2 2 : 162 : -0.2
+R: 2 3 : 162 : -0.2
+R: 2 4 : 162 : -10.1
+R: 2 5 : 162 : 1.9
+R: 3 0 : 162 : -0.2
+R: 3 1 : 162 : -0.2
+R: 3 2 : 162 : -0.2
+R: 3 3 : 162 : -0.2
+R: 3 4 : 162 : -10.1
+R: 3 5 : 162 : 1.9
+R: 4 0 : 162 : -10.1
+R: 4 1 : 162 : -10.1
+R: 4 2 : 162 : -10.1
+R: 4 3 : 162 : -10.1
+R: 5 0 : 162 : 1.9
+R: 5 1 : 162 : 1.9
+R: 5 2 : 162 : 1.9
+R: 5 3 : 162 : 1.9
+R: 5 5 : 162 : 2.0
+R: 0 0 : 163 : -0.2
+R: 0 1 : 163 : -0.2
+R: 0 2 : 163 : -0.2
+R: 0 3 : 163 : -0.2
+R: 0 4 : 163 : -10.1
+R: 0 5 : 163 : 1.9
+R: 1 0 : 163 : -0.2
+R: 1 1 : 163 : -0.2
+R: 1 2 : 163 : -0.2
+R: 1 3 : 163 : -0.2
+R: 1 4 : 163 : -10.1
+R: 1 5 : 163 : 1.9
+R: 2 0 : 163 : -0.2
+R: 2 1 : 163 : -0.2
+R: 2 2 : 163 : -0.2
+R: 2 3 : 163 : -0.2
+R: 2 4 : 163 : -10.1
+R: 2 5 : 163 : 1.9
+R: 3 0 : 163 : -0.2
+R: 3 1 : 163 : -0.2
+R: 3 2 : 163 : -0.2
+R: 3 3 : 163 : -0.2
+R: 3 4 : 163 : -10.1
+R: 3 5 : 163 : 1.9
+R: 4 0 : 163 : -10.1
+R: 4 1 : 163 : -10.1
+R: 4 2 : 163 : -10.1
+R: 4 3 : 163 : -10.1
+R: 5 0 : 163 : 1.9
+R: 5 1 : 163 : 1.9
+R: 5 2 : 163 : 1.9
+R: 5 3 : 163 : 1.9
+R: 5 5 : 163 : 2.0
+R: 0 0 : 164 : -0.2
+R: 0 1 : 164 : -0.2
+R: 0 2 : 164 : -0.2
+R: 0 3 : 164 : -0.2
+R: 0 4 : 164 : -1.1
+R: 0 5 : 164 : -1.1
+R: 1 0 : 164 : -0.2
+R: 1 1 : 164 : -0.2
+R: 1 2 : 164 : -0.2
+R: 1 3 : 164 : -0.2
+R: 1 4 : 164 : -1.1
+R: 1 5 : 164 : -1.1
+R: 2 0 : 164 : -0.2
+R: 2 1 : 164 : -0.2
+R: 2 2 : 164 : -0.2
+R: 2 3 : 164 : -0.2
+R: 2 4 : 164 : -1.1
+R: 2 5 : 164 : -1.1
+R: 3 0 : 164 : -0.2
+R: 3 1 : 164 : -0.2
+R: 3 2 : 164 : -0.2
+R: 3 3 : 164 : -0.2
+R: 3 4 : 164 : -1.1
+R: 3 5 : 164 : -1.1
+R: 4 0 : 164 : -1.1
+R: 4 1 : 164 : -1.1
+R: 4 2 : 164 : -1.1
+R: 4 3 : 164 : -1.1
+R: 4 4 : 164 : -2.0
+R: 4 5 : 164 : -2.0
+R: 5 0 : 164 : -1.1
+R: 5 1 : 164 : -1.1
+R: 5 2 : 164 : -1.1
+R: 5 3 : 164 : -1.1
+R: 5 4 : 164 : -2.0
+R: 5 5 : 164 : -2.0
+R: 0 0 : 165 : -0.2
+R: 0 1 : 165 : -0.2
+R: 0 2 : 165 : -0.2
+R: 0 3 : 165 : -0.2
+R: 0 4 : 165 : -1.1
+R: 0 5 : 165 : -1.1
+R: 1 0 : 165 : -0.2
+R: 1 1 : 165 : -0.2
+R: 1 2 : 165 : -0.2
+R: 1 3 : 165 : -0.2
+R: 1 4 : 165 : -1.1
+R: 1 5 : 165 : -1.1
+R: 2 0 : 165 : -0.2
+R: 2 1 : 165 : -0.2
+R: 2 2 : 165 : -0.2
+R: 2 3 : 165 : -0.2
+R: 2 4 : 165 : -1.1
+R: 2 5 : 165 : -1.1
+R: 3 0 : 165 : -0.2
+R: 3 1 : 165 : -0.2
+R: 3 2 : 165 : -0.2
+R: 3 3 : 165 : -0.2
+R: 3 4 : 165 : -1.1
+R: 3 5 : 165 : -1.1
+R: 4 0 : 165 : -1.1
+R: 4 1 : 165 : -1.1
+R: 4 2 : 165 : -1.1
+R: 4 3 : 165 : -1.1
+R: 4 4 : 165 : -2.0
+R: 4 5 : 165 : -2.0
+R: 5 0 : 165 : -1.1
+R: 5 1 : 165 : -1.1
+R: 5 2 : 165 : -1.1
+R: 5 3 : 165 : -1.1
+R: 5 4 : 165 : -2.0
+R: 5 5 : 165 : -2.0
+R: 0 0 : 166 : -0.2
+R: 0 1 : 166 : -0.2
+R: 0 2 : 166 : -0.2
+R: 0 3 : 166 : -0.2
+R: 0 4 : 166 : -1.1
+R: 0 5 : 166 : -1.1
+R: 1 0 : 166 : -0.2
+R: 1 1 : 166 : -0.2
+R: 1 2 : 166 : -0.2
+R: 1 3 : 166 : -0.2
+R: 1 4 : 166 : -1.1
+R: 1 5 : 166 : -1.1
+R: 2 0 : 166 : -0.2
+R: 2 1 : 166 : -0.2
+R: 2 2 : 166 : -0.2
+R: 2 3 : 166 : -0.2
+R: 2 4 : 166 : -1.1
+R: 2 5 : 166 : -1.1
+R: 3 0 : 166 : -0.2
+R: 3 1 : 166 : -0.2
+R: 3 2 : 166 : -0.2
+R: 3 3 : 166 : -0.2
+R: 3 4 : 166 : -1.1
+R: 3 5 : 166 : -1.1
+R: 4 0 : 166 : -1.1
+R: 4 1 : 166 : -1.1
+R: 4 2 : 166 : -1.1
+R: 4 3 : 166 : -1.1
+R: 4 4 : 166 : -2.0
+R: 4 5 : 166 : -2.0
+R: 5 0 : 166 : -1.1
+R: 5 1 : 166 : -1.1
+R: 5 2 : 166 : -1.1
+R: 5 3 : 166 : -1.1
+R: 5 4 : 166 : -2.0
+R: 5 5 : 166 : -2.0
+R: 0 0 : 167 : -0.2
+R: 0 1 : 167 : -0.2
+R: 0 2 : 167 : -0.2
+R: 0 3 : 167 : -0.2
+R: 0 4 : 167 : -1.1
+R: 0 5 : 167 : -1.1
+R: 1 0 : 167 : -0.2
+R: 1 1 : 167 : -0.2
+R: 1 2 : 167 : -0.2
+R: 1 3 : 167 : -0.2
+R: 1 4 : 167 : -1.1
+R: 1 5 : 167 : -1.1
+R: 2 0 : 167 : -0.2
+R: 2 1 : 167 : -0.2
+R: 2 2 : 167 : -0.2
+R: 2 3 : 167 : -0.2
+R: 2 4 : 167 : -1.1
+R: 2 5 : 167 : -1.1
+R: 3 0 : 167 : -0.2
+R: 3 1 : 167 : -0.2
+R: 3 2 : 167 : -0.2
+R: 3 3 : 167 : -0.2
+R: 3 4 : 167 : -1.1
+R: 3 5 : 167 : -1.1
+R: 4 0 : 167 : -1.1
+R: 4 1 : 167 : -1.1
+R: 4 2 : 167 : -1.1
+R: 4 3 : 167 : -1.1
+R: 4 4 : 167 : -2.0
+R: 4 5 : 167 : -2.0
+R: 5 0 : 167 : -1.1
+R: 5 1 : 167 : -1.1
+R: 5 2 : 167 : -1.1
+R: 5 3 : 167 : -1.1
+R: 5 4 : 167 : -2.0
+R: 5 5 : 167 : -2.0
+R: 0 0 : 168 : -0.2
+R: 0 1 : 168 : -0.2
+R: 0 2 : 168 : -0.2
+R: 0 3 : 168 : -0.2
+R: 0 4 : 168 : -10.1
+R: 0 5 : 168 : 1.9
+R: 1 0 : 168 : -0.2
+R: 1 1 : 168 : -0.2
+R: 1 2 : 168 : -0.2
+R: 1 3 : 168 : -0.2
+R: 1 4 : 168 : -10.1
+R: 1 5 : 168 : 1.9
+R: 2 0 : 168 : -0.2
+R: 2 1 : 168 : -0.2
+R: 2 2 : 168 : -0.2
+R: 2 3 : 168 : -0.2
+R: 2 4 : 168 : -10.1
+R: 2 5 : 168 : 1.9
+R: 3 0 : 168 : -0.2
+R: 3 1 : 168 : -0.2
+R: 3 2 : 168 : -0.2
+R: 3 3 : 168 : -0.2
+R: 3 4 : 168 : -10.1
+R: 3 5 : 168 : 1.9
+R: 4 0 : 168 : -10.1
+R: 4 1 : 168 : -10.1
+R: 4 2 : 168 : -10.1
+R: 4 3 : 168 : -10.1
+R: 5 0 : 168 : 1.9
+R: 5 1 : 168 : 1.9
+R: 5 2 : 168 : 1.9
+R: 5 3 : 168 : 1.9
+R: 5 5 : 168 : 2.0
+R: 0 0 : 169 : -0.2
+R: 0 1 : 169 : -0.2
+R: 0 2 : 169 : -0.2
+R: 0 3 : 169 : -0.2
+R: 0 4 : 169 : -10.1
+R: 0 5 : 169 : 1.9
+R: 1 0 : 169 : -0.2
+R: 1 1 : 169 : -0.2
+R: 1 2 : 169 : -0.2
+R: 1 3 : 169 : -0.2
+R: 1 4 : 169 : -10.1
+R: 1 5 : 169 : 1.9
+R: 2 0 : 169 : -0.2
+R: 2 1 : 169 : -0.2
+R: 2 2 : 169 : -0.2
+R: 2 3 : 169 : -0.2
+R: 2 4 : 169 : -10.1
+R: 2 5 : 169 : 1.9
+R: 3 0 : 169 : -0.2
+R: 3 1 : 169 : -0.2
+R: 3 2 : 169 : -0.2
+R: 3 3 : 169 : -0.2
+R: 3 4 : 169 : -10.1
+R: 3 5 : 169 : 1.9
+R: 4 0 : 169 : -10.1
+R: 4 1 : 169 : -10.1
+R: 4 2 : 169 : -10.1
+R: 4 3 : 169 : -10.1
+R: 5 0 : 169 : 1.9
+R: 5 1 : 169 : 1.9
+R: 5 2 : 169 : 1.9
+R: 5 3 : 169 : 1.9
+R: 5 5 : 169 : 2.0
+R: 0 0 : 170 : -0.2
+R: 0 1 : 170 : -0.2
+R: 0 2 : 170 : -0.2
+R: 0 3 : 170 : -0.2
+R: 0 4 : 170 : -10.1
+R: 0 5 : 170 : 1.9
+R: 1 0 : 170 : -0.2
+R: 1 1 : 170 : -0.2
+R: 1 2 : 170 : -0.2
+R: 1 3 : 170 : -0.2
+R: 1 4 : 170 : -10.1
+R: 1 5 : 170 : 1.9
+R: 2 0 : 170 : -0.2
+R: 2 1 : 170 : -0.2
+R: 2 2 : 170 : -0.2
+R: 2 3 : 170 : -0.2
+R: 2 4 : 170 : -10.1
+R: 2 5 : 170 : 1.9
+R: 3 0 : 170 : -0.2
+R: 3 1 : 170 : -0.2
+R: 3 2 : 170 : -0.2
+R: 3 3 : 170 : -0.2
+R: 3 4 : 170 : -10.1
+R: 3 5 : 170 : 1.9
+R: 4 0 : 170 : -10.1
+R: 4 1 : 170 : -10.1
+R: 4 2 : 170 : -10.1
+R: 4 3 : 170 : -10.1
+R: 5 0 : 170 : 1.9
+R: 5 1 : 170 : 1.9
+R: 5 2 : 170 : 1.9
+R: 5 3 : 170 : 1.9
+R: 5 5 : 170 : 2.0
+R: 0 0 : 171 : -0.2
+R: 0 1 : 171 : -0.2
+R: 0 2 : 171 : -0.2
+R: 0 3 : 171 : -0.2
+R: 0 4 : 171 : -10.1
+R: 0 5 : 171 : 1.9
+R: 1 0 : 171 : -0.2
+R: 1 1 : 171 : -0.2
+R: 1 2 : 171 : -0.2
+R: 1 3 : 171 : -0.2
+R: 1 4 : 171 : -10.1
+R: 1 5 : 171 : 1.9
+R: 2 0 : 171 : -0.2
+R: 2 1 : 171 : -0.2
+R: 2 2 : 171 : -0.2
+R: 2 3 : 171 : -0.2
+R: 2 4 : 171 : -10.1
+R: 2 5 : 171 : 1.9
+R: 3 0 : 171 : -0.2
+R: 3 1 : 171 : -0.2
+R: 3 2 : 171 : -0.2
+R: 3 3 : 171 : -0.2
+R: 3 4 : 171 : -10.1
+R: 3 5 : 171 : 1.9
+R: 4 0 : 171 : -10.1
+R: 4 1 : 171 : -10.1
+R: 4 2 : 171 : -10.1
+R: 4 3 : 171 : -10.1
+R: 5 0 : 171 : 1.9
+R: 5 1 : 171 : 1.9
+R: 5 2 : 171 : 1.9
+R: 5 3 : 171 : 1.9
+R: 5 5 : 171 : 2.0
+R: 0 0 : 172 : -0.2
+R: 0 1 : 172 : -0.2
+R: 0 2 : 172 : -0.2
+R: 0 3 : 172 : -0.2
+R: 0 4 : 172 : -1.1
+R: 0 5 : 172 : -1.1
+R: 1 0 : 172 : -0.2
+R: 1 1 : 172 : -0.2
+R: 1 2 : 172 : -0.2
+R: 1 3 : 172 : -0.2
+R: 1 4 : 172 : -1.1
+R: 1 5 : 172 : -1.1
+R: 2 0 : 172 : -0.2
+R: 2 1 : 172 : -0.2
+R: 2 2 : 172 : -0.2
+R: 2 3 : 172 : -0.2
+R: 2 4 : 172 : -1.1
+R: 2 5 : 172 : -1.1
+R: 3 0 : 172 : -0.2
+R: 3 1 : 172 : -0.2
+R: 3 2 : 172 : -0.2
+R: 3 3 : 172 : -0.2
+R: 3 4 : 172 : -1.1
+R: 3 5 : 172 : -1.1
+R: 4 0 : 172 : -1.1
+R: 4 1 : 172 : -1.1
+R: 4 2 : 172 : -1.1
+R: 4 3 : 172 : -1.1
+R: 4 4 : 172 : -2.0
+R: 4 5 : 172 : -2.0
+R: 5 0 : 172 : -1.1
+R: 5 1 : 172 : -1.1
+R: 5 2 : 172 : -1.1
+R: 5 3 : 172 : -1.1
+R: 5 4 : 172 : -2.0
+R: 5 5 : 172 : -2.0
+R: 0 0 : 173 : -0.2
+R: 0 1 : 173 : -0.2
+R: 0 2 : 173 : -0.2
+R: 0 3 : 173 : -0.2
+R: 0 4 : 173 : -1.1
+R: 0 5 : 173 : -1.1
+R: 1 0 : 173 : -0.2
+R: 1 1 : 173 : -0.2
+R: 1 2 : 173 : -0.2
+R: 1 3 : 173 : -0.2
+R: 1 4 : 173 : -1.1
+R: 1 5 : 173 : -1.1
+R: 2 0 : 173 : -0.2
+R: 2 1 : 173 : -0.2
+R: 2 2 : 173 : -0.2
+R: 2 3 : 173 : -0.2
+R: 2 4 : 173 : -1.1
+R: 2 5 : 173 : -1.1
+R: 3 0 : 173 : -0.2
+R: 3 1 : 173 : -0.2
+R: 3 2 : 173 : -0.2
+R: 3 3 : 173 : -0.2
+R: 3 4 : 173 : -1.1
+R: 3 5 : 173 : -1.1
+R: 4 0 : 173 : -1.1
+R: 4 1 : 173 : -1.1
+R: 4 2 : 173 : -1.1
+R: 4 3 : 173 : -1.1
+R: 4 4 : 173 : -2.0
+R: 4 5 : 173 : -2.0
+R: 5 0 : 173 : -1.1
+R: 5 1 : 173 : -1.1
+R: 5 2 : 173 : -1.1
+R: 5 3 : 173 : -1.1
+R: 5 4 : 173 : -2.0
+R: 5 5 : 173 : -2.0
+R: 0 0 : 174 : -0.2
+R: 0 1 : 174 : -0.2
+R: 0 2 : 174 : -0.2
+R: 0 3 : 174 : -0.2
+R: 0 4 : 174 : -1.1
+R: 0 5 : 174 : -1.1
+R: 1 0 : 174 : -0.2
+R: 1 1 : 174 : -0.2
+R: 1 2 : 174 : -0.2
+R: 1 3 : 174 : -0.2
+R: 1 4 : 174 : -1.1
+R: 1 5 : 174 : -1.1
+R: 2 0 : 174 : -0.2
+R: 2 1 : 174 : -0.2
+R: 2 2 : 174 : -0.2
+R: 2 3 : 174 : -0.2
+R: 2 4 : 174 : -1.1
+R: 2 5 : 174 : -1.1
+R: 3 0 : 174 : -0.2
+R: 3 1 : 174 : -0.2
+R: 3 2 : 174 : -0.2
+R: 3 3 : 174 : -0.2
+R: 3 4 : 174 : -1.1
+R: 3 5 : 174 : -1.1
+R: 4 0 : 174 : -1.1
+R: 4 1 : 174 : -1.1
+R: 4 2 : 174 : -1.1
+R: 4 3 : 174 : -1.1
+R: 4 4 : 174 : -2.0
+R: 4 5 : 174 : -2.0
+R: 5 0 : 174 : -1.1
+R: 5 1 : 174 : -1.1
+R: 5 2 : 174 : -1.1
+R: 5 3 : 174 : -1.1
+R: 5 4 : 174 : -2.0
+R: 5 5 : 174 : -2.0
+R: 0 0 : 175 : -0.2
+R: 0 1 : 175 : -0.2
+R: 0 2 : 175 : -0.2
+R: 0 3 : 175 : -0.2
+R: 0 4 : 175 : -1.1
+R: 0 5 : 175 : -1.1
+R: 1 0 : 175 : -0.2
+R: 1 1 : 175 : -0.2
+R: 1 2 : 175 : -0.2
+R: 1 3 : 175 : -0.2
+R: 1 4 : 175 : -1.1
+R: 1 5 : 175 : -1.1
+R: 2 0 : 175 : -0.2
+R: 2 1 : 175 : -0.2
+R: 2 2 : 175 : -0.2
+R: 2 3 : 175 : -0.2
+R: 2 4 : 175 : -1.1
+R: 2 5 : 175 : -1.1
+R: 3 0 : 175 : -0.2
+R: 3 1 : 175 : -0.2
+R: 3 2 : 175 : -0.2
+R: 3 3 : 175 : -0.2
+R: 3 4 : 175 : -1.1
+R: 3 5 : 175 : -1.1
+R: 4 0 : 175 : -1.1
+R: 4 1 : 175 : -1.1
+R: 4 2 : 175 : -1.1
+R: 4 3 : 175 : -1.1
+R: 4 4 : 175 : -2.0
+R: 4 5 : 175 : -2.0
+R: 5 0 : 175 : -1.1
+R: 5 1 : 175 : -1.1
+R: 5 2 : 175 : -1.1
+R: 5 3 : 175 : -1.1
+R: 5 4 : 175 : -2.0
+R: 5 5 : 175 : -2.0
+R: 0 0 : 176 : -0.2
+R: 0 1 : 176 : -0.2
+R: 0 2 : 176 : -0.2
+R: 0 3 : 176 : -0.2
+R: 0 4 : 176 : -10.1
+R: 0 5 : 176 : 1.9
+R: 1 0 : 176 : -0.2
+R: 1 1 : 176 : -0.2
+R: 1 2 : 176 : -0.2
+R: 1 3 : 176 : -0.2
+R: 1 4 : 176 : -10.1
+R: 1 5 : 176 : 1.9
+R: 2 0 : 176 : -0.2
+R: 2 1 : 176 : -0.2
+R: 2 2 : 176 : -0.2
+R: 2 3 : 176 : -0.2
+R: 2 4 : 176 : -10.1
+R: 2 5 : 176 : 1.9
+R: 3 0 : 176 : -0.2
+R: 3 1 : 176 : -0.2
+R: 3 2 : 176 : -0.2
+R: 3 3 : 176 : -0.2
+R: 3 4 : 176 : -10.1
+R: 3 5 : 176 : 1.9
+R: 4 0 : 176 : -10.1
+R: 4 1 : 176 : -10.1
+R: 4 2 : 176 : -10.1
+R: 4 3 : 176 : -10.1
+R: 5 0 : 176 : 1.9
+R: 5 1 : 176 : 1.9
+R: 5 2 : 176 : 1.9
+R: 5 3 : 176 : 1.9
+R: 5 4 : 176 : 4.0
+R: 5 5 : 176 : 4.0
+R: 0 0 : 177 : -0.2
+R: 0 1 : 177 : -0.2
+R: 0 2 : 177 : -0.2
+R: 0 3 : 177 : -0.2
+R: 0 4 : 177 : -10.1
+R: 0 5 : 177 : 1.9
+R: 1 0 : 177 : -0.2
+R: 1 1 : 177 : -0.2
+R: 1 2 : 177 : -0.2
+R: 1 3 : 177 : -0.2
+R: 1 4 : 177 : -10.1
+R: 1 5 : 177 : 1.9
+R: 2 0 : 177 : -0.2
+R: 2 1 : 177 : -0.2
+R: 2 2 : 177 : -0.2
+R: 2 3 : 177 : -0.2
+R: 2 4 : 177 : -10.1
+R: 2 5 : 177 : 1.9
+R: 3 0 : 177 : -0.2
+R: 3 1 : 177 : -0.2
+R: 3 2 : 177 : -0.2
+R: 3 3 : 177 : -0.2
+R: 3 4 : 177 : -10.1
+R: 3 5 : 177 : 1.9
+R: 4 0 : 177 : -10.1
+R: 4 1 : 177 : -10.1
+R: 4 2 : 177 : -10.1
+R: 4 3 : 177 : -10.1
+R: 5 0 : 177 : 1.9
+R: 5 1 : 177 : 1.9
+R: 5 2 : 177 : 1.9
+R: 5 3 : 177 : 1.9
+R: 5 4 : 177 : 4.0
+R: 5 5 : 177 : 4.0
+R: 0 0 : 178 : -0.2
+R: 0 1 : 178 : -0.2
+R: 0 2 : 178 : -0.2
+R: 0 3 : 178 : -0.2
+R: 0 4 : 178 : -10.1
+R: 0 5 : 178 : 1.9
+R: 1 0 : 178 : -0.2
+R: 1 1 : 178 : -0.2
+R: 1 2 : 178 : -0.2
+R: 1 3 : 178 : -0.2
+R: 1 4 : 178 : -10.1
+R: 1 5 : 178 : 1.9
+R: 2 0 : 178 : -0.2
+R: 2 1 : 178 : -0.2
+R: 2 2 : 178 : -0.2
+R: 2 3 : 178 : -0.2
+R: 2 4 : 178 : -10.1
+R: 2 5 : 178 : 1.9
+R: 3 0 : 178 : -0.2
+R: 3 1 : 178 : -0.2
+R: 3 2 : 178 : -0.2
+R: 3 3 : 178 : -0.2
+R: 3 4 : 178 : -10.1
+R: 3 5 : 178 : 1.9
+R: 4 0 : 178 : -10.1
+R: 4 1 : 178 : -10.1
+R: 4 2 : 178 : -10.1
+R: 4 3 : 178 : -10.1
+R: 5 0 : 178 : 1.9
+R: 5 1 : 178 : 1.9
+R: 5 2 : 178 : 1.9
+R: 5 3 : 178 : 1.9
+R: 5 4 : 178 : 4.0
+R: 5 5 : 178 : 4.0
+R: 0 0 : 179 : -0.2
+R: 0 1 : 179 : -0.2
+R: 0 2 : 179 : -0.2
+R: 0 3 : 179 : -0.2
+R: 0 4 : 179 : -10.1
+R: 0 5 : 179 : 1.9
+R: 1 0 : 179 : -0.2
+R: 1 1 : 179 : -0.2
+R: 1 2 : 179 : -0.2
+R: 1 3 : 179 : -0.2
+R: 1 4 : 179 : -10.1
+R: 1 5 : 179 : 1.9
+R: 2 0 : 179 : -0.2
+R: 2 1 : 179 : -0.2
+R: 2 2 : 179 : -0.2
+R: 2 3 : 179 : -0.2
+R: 2 4 : 179 : -10.1
+R: 2 5 : 179 : 1.9
+R: 3 0 : 179 : -0.2
+R: 3 1 : 179 : -0.2
+R: 3 2 : 179 : -0.2
+R: 3 3 : 179 : -0.2
+R: 3 4 : 179 : -10.1
+R: 3 5 : 179 : 1.9
+R: 4 0 : 179 : -10.1
+R: 4 1 : 179 : -10.1
+R: 4 2 : 179 : -10.1
+R: 4 3 : 179 : -10.1
+R: 5 0 : 179 : 1.9
+R: 5 1 : 179 : 1.9
+R: 5 2 : 179 : 1.9
+R: 5 3 : 179 : 1.9
+R: 5 4 : 179 : 4.0
+R: 5 5 : 179 : 4.0
+R: 0 0 : 180 : -0.2
+R: 0 1 : 180 : -0.2
+R: 0 2 : 180 : -0.2
+R: 0 3 : 180 : -0.2
+R: 0 4 : 180 : -10.1
+R: 0 5 : 180 : 1.9
+R: 1 0 : 180 : -0.2
+R: 1 1 : 180 : -0.2
+R: 1 2 : 180 : -0.2
+R: 1 3 : 180 : -0.2
+R: 1 4 : 180 : -10.1
+R: 1 5 : 180 : 1.9
+R: 2 0 : 180 : -0.2
+R: 2 1 : 180 : -0.2
+R: 2 2 : 180 : -0.2
+R: 2 3 : 180 : -0.2
+R: 2 4 : 180 : -10.1
+R: 2 5 : 180 : 1.9
+R: 3 0 : 180 : -0.2
+R: 3 1 : 180 : -0.2
+R: 3 2 : 180 : -0.2
+R: 3 3 : 180 : -0.2
+R: 3 4 : 180 : -10.1
+R: 3 5 : 180 : 1.9
+R: 4 0 : 180 : -1.1
+R: 4 1 : 180 : -1.1
+R: 4 2 : 180 : -1.1
+R: 4 3 : 180 : -1.1
+R: 4 4 : 180 : -11.0
+R: 4 5 : 180 : -11.0
+R: 5 0 : 180 : -1.1
+R: 5 1 : 180 : -1.1
+R: 5 2 : 180 : -1.1
+R: 5 3 : 180 : -1.1
+R: 5 4 : 180 : 1.0
+R: 5 5 : 180 : 1.0
+R: 0 0 : 181 : -0.2
+R: 0 1 : 181 : -0.2
+R: 0 2 : 181 : -0.2
+R: 0 3 : 181 : -0.2
+R: 0 4 : 181 : -10.1
+R: 0 5 : 181 : 1.9
+R: 1 0 : 181 : -0.2
+R: 1 1 : 181 : -0.2
+R: 1 2 : 181 : -0.2
+R: 1 3 : 181 : -0.2
+R: 1 4 : 181 : -10.1
+R: 1 5 : 181 : 1.9
+R: 2 0 : 181 : -0.2
+R: 2 1 : 181 : -0.2
+R: 2 2 : 181 : -0.2
+R: 2 3 : 181 : -0.2
+R: 2 4 : 181 : -10.1
+R: 2 5 : 181 : 1.9
+R: 3 0 : 181 : -0.2
+R: 3 1 : 181 : -0.2
+R: 3 2 : 181 : -0.2
+R: 3 3 : 181 : -0.2
+R: 3 4 : 181 : -10.1
+R: 3 5 : 181 : 1.9
+R: 4 0 : 181 : -1.1
+R: 4 1 : 181 : -1.1
+R: 4 2 : 181 : -1.1
+R: 4 3 : 181 : -1.1
+R: 4 4 : 181 : -11.0
+R: 4 5 : 181 : -11.0
+R: 5 0 : 181 : -1.1
+R: 5 1 : 181 : -1.1
+R: 5 2 : 181 : -1.1
+R: 5 3 : 181 : -1.1
+R: 5 4 : 181 : 1.0
+R: 5 5 : 181 : 1.0
+R: 0 0 : 182 : -0.2
+R: 0 1 : 182 : -0.2
+R: 0 2 : 182 : -0.2
+R: 0 3 : 182 : -0.2
+R: 0 4 : 182 : -10.1
+R: 0 5 : 182 : 1.9
+R: 1 0 : 182 : -0.2
+R: 1 1 : 182 : -0.2
+R: 1 2 : 182 : -0.2
+R: 1 3 : 182 : -0.2
+R: 1 4 : 182 : -10.1
+R: 1 5 : 182 : 1.9
+R: 2 0 : 182 : -0.2
+R: 2 1 : 182 : -0.2
+R: 2 2 : 182 : -0.2
+R: 2 3 : 182 : -0.2
+R: 2 4 : 182 : -10.1
+R: 2 5 : 182 : 1.9
+R: 3 0 : 182 : -0.2
+R: 3 1 : 182 : -0.2
+R: 3 2 : 182 : -0.2
+R: 3 3 : 182 : -0.2
+R: 3 4 : 182 : -10.1
+R: 3 5 : 182 : 1.9
+R: 4 0 : 182 : -1.1
+R: 4 1 : 182 : -1.1
+R: 4 2 : 182 : -1.1
+R: 4 3 : 182 : -1.1
+R: 4 4 : 182 : -11.0
+R: 4 5 : 182 : -11.0
+R: 5 0 : 182 : -1.1
+R: 5 1 : 182 : -1.1
+R: 5 2 : 182 : -1.1
+R: 5 3 : 182 : -1.1
+R: 5 4 : 182 : 1.0
+R: 5 5 : 182 : 1.0
+R: 0 0 : 183 : -0.2
+R: 0 1 : 183 : -0.2
+R: 0 2 : 183 : -0.2
+R: 0 3 : 183 : -0.2
+R: 0 4 : 183 : -10.1
+R: 0 5 : 183 : 1.9
+R: 1 0 : 183 : -0.2
+R: 1 1 : 183 : -0.2
+R: 1 2 : 183 : -0.2
+R: 1 3 : 183 : -0.2
+R: 1 4 : 183 : -10.1
+R: 1 5 : 183 : 1.9
+R: 2 0 : 183 : -0.2
+R: 2 1 : 183 : -0.2
+R: 2 2 : 183 : -0.2
+R: 2 3 : 183 : -0.2
+R: 2 4 : 183 : -10.1
+R: 2 5 : 183 : 1.9
+R: 3 0 : 183 : -0.2
+R: 3 1 : 183 : -0.2
+R: 3 2 : 183 : -0.2
+R: 3 3 : 183 : -0.2
+R: 3 4 : 183 : -10.1
+R: 3 5 : 183 : 1.9
+R: 4 0 : 183 : -1.1
+R: 4 1 : 183 : -1.1
+R: 4 2 : 183 : -1.1
+R: 4 3 : 183 : -1.1
+R: 4 4 : 183 : -11.0
+R: 4 5 : 183 : -11.0
+R: 5 0 : 183 : -1.1
+R: 5 1 : 183 : -1.1
+R: 5 2 : 183 : -1.1
+R: 5 3 : 183 : -1.1
+R: 5 4 : 183 : 1.0
+R: 5 5 : 183 : 1.0
+R: 0 0 : 184 : -0.2
+R: 0 1 : 184 : -0.2
+R: 0 2 : 184 : -0.2
+R: 0 3 : 184 : -0.2
+R: 0 4 : 184 : -1.1
+R: 0 5 : 184 : -1.1
+R: 1 0 : 184 : -0.2
+R: 1 1 : 184 : -0.2
+R: 1 2 : 184 : -0.2
+R: 1 3 : 184 : -0.2
+R: 1 4 : 184 : -1.1
+R: 1 5 : 184 : -1.1
+R: 2 0 : 184 : -0.2
+R: 2 1 : 184 : -0.2
+R: 2 2 : 184 : -0.2
+R: 2 3 : 184 : -0.2
+R: 2 4 : 184 : -1.1
+R: 2 5 : 184 : -1.1
+R: 3 0 : 184 : -0.2
+R: 3 1 : 184 : -0.2
+R: 3 2 : 184 : -0.2
+R: 3 3 : 184 : -0.2
+R: 3 4 : 184 : -1.1
+R: 3 5 : 184 : -1.1
+R: 4 0 : 184 : -10.1
+R: 4 1 : 184 : -10.1
+R: 4 2 : 184 : -10.1
+R: 4 3 : 184 : -10.1
+R: 4 4 : 184 : -11.0
+R: 4 5 : 184 : -11.0
+R: 5 0 : 184 : 1.9
+R: 5 1 : 184 : 1.9
+R: 5 2 : 184 : 1.9
+R: 5 3 : 184 : 1.9
+R: 5 4 : 184 : 1.0
+R: 5 5 : 184 : 1.0
+R: 0 0 : 185 : -0.2
+R: 0 1 : 185 : -0.2
+R: 0 2 : 185 : -0.2
+R: 0 3 : 185 : -0.2
+R: 0 4 : 185 : -1.1
+R: 0 5 : 185 : -1.1
+R: 1 0 : 185 : -0.2
+R: 1 1 : 185 : -0.2
+R: 1 2 : 185 : -0.2
+R: 1 3 : 185 : -0.2
+R: 1 4 : 185 : -1.1
+R: 1 5 : 185 : -1.1
+R: 2 0 : 185 : -0.2
+R: 2 1 : 185 : -0.2
+R: 2 2 : 185 : -0.2
+R: 2 3 : 185 : -0.2
+R: 2 4 : 185 : -1.1
+R: 2 5 : 185 : -1.1
+R: 3 0 : 185 : -0.2
+R: 3 1 : 185 : -0.2
+R: 3 2 : 185 : -0.2
+R: 3 3 : 185 : -0.2
+R: 3 4 : 185 : -1.1
+R: 3 5 : 185 : -1.1
+R: 4 0 : 185 : -10.1
+R: 4 1 : 185 : -10.1
+R: 4 2 : 185 : -10.1
+R: 4 3 : 185 : -10.1
+R: 4 4 : 185 : -11.0
+R: 4 5 : 185 : -11.0
+R: 5 0 : 185 : 1.9
+R: 5 1 : 185 : 1.9
+R: 5 2 : 185 : 1.9
+R: 5 3 : 185 : 1.9
+R: 5 4 : 185 : 1.0
+R: 5 5 : 185 : 1.0
+R: 0 0 : 186 : -0.2
+R: 0 1 : 186 : -0.2
+R: 0 2 : 186 : -0.2
+R: 0 3 : 186 : -0.2
+R: 0 4 : 186 : -1.1
+R: 0 5 : 186 : -1.1
+R: 1 0 : 186 : -0.2
+R: 1 1 : 186 : -0.2
+R: 1 2 : 186 : -0.2
+R: 1 3 : 186 : -0.2
+R: 1 4 : 186 : -1.1
+R: 1 5 : 186 : -1.1
+R: 2 0 : 186 : -0.2
+R: 2 1 : 186 : -0.2
+R: 2 2 : 186 : -0.2
+R: 2 3 : 186 : -0.2
+R: 2 4 : 186 : -1.1
+R: 2 5 : 186 : -1.1
+R: 3 0 : 186 : -0.2
+R: 3 1 : 186 : -0.2
+R: 3 2 : 186 : -0.2
+R: 3 3 : 186 : -0.2
+R: 3 4 : 186 : -1.1
+R: 3 5 : 186 : -1.1
+R: 4 0 : 186 : -10.1
+R: 4 1 : 186 : -10.1
+R: 4 2 : 186 : -10.1
+R: 4 3 : 186 : -10.1
+R: 4 4 : 186 : -11.0
+R: 4 5 : 186 : -11.0
+R: 5 0 : 186 : 1.9
+R: 5 1 : 186 : 1.9
+R: 5 2 : 186 : 1.9
+R: 5 3 : 186 : 1.9
+R: 5 4 : 186 : 1.0
+R: 5 5 : 186 : 1.0
+R: 0 0 : 187 : -0.2
+R: 0 1 : 187 : -0.2
+R: 0 2 : 187 : -0.2
+R: 0 3 : 187 : -0.2
+R: 0 4 : 187 : -1.1
+R: 0 5 : 187 : -1.1
+R: 1 0 : 187 : -0.2
+R: 1 1 : 187 : -0.2
+R: 1 2 : 187 : -0.2
+R: 1 3 : 187 : -0.2
+R: 1 4 : 187 : -1.1
+R: 1 5 : 187 : -1.1
+R: 2 0 : 187 : -0.2
+R: 2 1 : 187 : -0.2
+R: 2 2 : 187 : -0.2
+R: 2 3 : 187 : -0.2
+R: 2 4 : 187 : -1.1
+R: 2 5 : 187 : -1.1
+R: 3 0 : 187 : -0.2
+R: 3 1 : 187 : -0.2
+R: 3 2 : 187 : -0.2
+R: 3 3 : 187 : -0.2
+R: 3 4 : 187 : -1.1
+R: 3 5 : 187 : -1.1
+R: 4 0 : 187 : -10.1
+R: 4 1 : 187 : -10.1
+R: 4 2 : 187 : -10.1
+R: 4 3 : 187 : -10.1
+R: 4 4 : 187 : -11.0
+R: 4 5 : 187 : -11.0
+R: 5 0 : 187 : 1.9
+R: 5 1 : 187 : 1.9
+R: 5 2 : 187 : 1.9
+R: 5 3 : 187 : 1.9
+R: 5 4 : 187 : 1.0
+R: 5 5 : 187 : 1.0
+R: 0 0 : 188 : -0.2
+R: 0 1 : 188 : -0.2
+R: 0 2 : 188 : -0.2
+R: 0 3 : 188 : -0.2
+R: 0 4 : 188 : -1.1
+R: 0 5 : 188 : -1.1
+R: 1 0 : 188 : -0.2
+R: 1 1 : 188 : -0.2
+R: 1 2 : 188 : -0.2
+R: 1 3 : 188 : -0.2
+R: 1 4 : 188 : -1.1
+R: 1 5 : 188 : -1.1
+R: 2 0 : 188 : -0.2
+R: 2 1 : 188 : -0.2
+R: 2 2 : 188 : -0.2
+R: 2 3 : 188 : -0.2
+R: 2 4 : 188 : -1.1
+R: 2 5 : 188 : -1.1
+R: 3 0 : 188 : -0.2
+R: 3 1 : 188 : -0.2
+R: 3 2 : 188 : -0.2
+R: 3 3 : 188 : -0.2
+R: 3 4 : 188 : -1.1
+R: 3 5 : 188 : -1.1
+R: 4 0 : 188 : -1.1
+R: 4 1 : 188 : -1.1
+R: 4 2 : 188 : -1.1
+R: 4 3 : 188 : -1.1
+R: 4 4 : 188 : -2.0
+R: 4 5 : 188 : -2.0
+R: 5 0 : 188 : -1.1
+R: 5 1 : 188 : -1.1
+R: 5 2 : 188 : -1.1
+R: 5 3 : 188 : -1.1
+R: 5 4 : 188 : -2.0
+R: 5 5 : 188 : -2.0
+R: 0 0 : 189 : -0.2
+R: 0 1 : 189 : -0.2
+R: 0 2 : 189 : -0.2
+R: 0 3 : 189 : -0.2
+R: 0 4 : 189 : -1.1
+R: 0 5 : 189 : -1.1
+R: 1 0 : 189 : -0.2
+R: 1 1 : 189 : -0.2
+R: 1 2 : 189 : -0.2
+R: 1 3 : 189 : -0.2
+R: 1 4 : 189 : -1.1
+R: 1 5 : 189 : -1.1
+R: 2 0 : 189 : -0.2
+R: 2 1 : 189 : -0.2
+R: 2 2 : 189 : -0.2
+R: 2 3 : 189 : -0.2
+R: 2 4 : 189 : -1.1
+R: 2 5 : 189 : -1.1
+R: 3 0 : 189 : -0.2
+R: 3 1 : 189 : -0.2
+R: 3 2 : 189 : -0.2
+R: 3 3 : 189 : -0.2
+R: 3 4 : 189 : -1.1
+R: 3 5 : 189 : -1.1
+R: 4 0 : 189 : -1.1
+R: 4 1 : 189 : -1.1
+R: 4 2 : 189 : -1.1
+R: 4 3 : 189 : -1.1
+R: 4 4 : 189 : -2.0
+R: 4 5 : 189 : -2.0
+R: 5 0 : 189 : -1.1
+R: 5 1 : 189 : -1.1
+R: 5 2 : 189 : -1.1
+R: 5 3 : 189 : -1.1
+R: 5 4 : 189 : -2.0
+R: 5 5 : 189 : -2.0
+R: 0 0 : 190 : -0.2
+R: 0 1 : 190 : -0.2
+R: 0 2 : 190 : -0.2
+R: 0 3 : 190 : -0.2
+R: 0 4 : 190 : -1.1
+R: 0 5 : 190 : -1.1
+R: 1 0 : 190 : -0.2
+R: 1 1 : 190 : -0.2
+R: 1 2 : 190 : -0.2
+R: 1 3 : 190 : -0.2
+R: 1 4 : 190 : -1.1
+R: 1 5 : 190 : -1.1
+R: 2 0 : 190 : -0.2
+R: 2 1 : 190 : -0.2
+R: 2 2 : 190 : -0.2
+R: 2 3 : 190 : -0.2
+R: 2 4 : 190 : -1.1
+R: 2 5 : 190 : -1.1
+R: 3 0 : 190 : -0.2
+R: 3 1 : 190 : -0.2
+R: 3 2 : 190 : -0.2
+R: 3 3 : 190 : -0.2
+R: 3 4 : 190 : -1.1
+R: 3 5 : 190 : -1.1
+R: 4 0 : 190 : -1.1
+R: 4 1 : 190 : -1.1
+R: 4 2 : 190 : -1.1
+R: 4 3 : 190 : -1.1
+R: 4 4 : 190 : -2.0
+R: 4 5 : 190 : -2.0
+R: 5 0 : 190 : -1.1
+R: 5 1 : 190 : -1.1
+R: 5 2 : 190 : -1.1
+R: 5 3 : 190 : -1.1
+R: 5 4 : 190 : -2.0
+R: 5 5 : 190 : -2.0
+R: 0 0 : 191 : -0.2
+R: 0 1 : 191 : -0.2
+R: 0 2 : 191 : -0.2
+R: 0 3 : 191 : -0.2
+R: 0 4 : 191 : -1.1
+R: 0 5 : 191 : -1.1
+R: 1 0 : 191 : -0.2
+R: 1 1 : 191 : -0.2
+R: 1 2 : 191 : -0.2
+R: 1 3 : 191 : -0.2
+R: 1 4 : 191 : -1.1
+R: 1 5 : 191 : -1.1
+R: 2 0 : 191 : -0.2
+R: 2 1 : 191 : -0.2
+R: 2 2 : 191 : -0.2
+R: 2 3 : 191 : -0.2
+R: 2 4 : 191 : -1.1
+R: 2 5 : 191 : -1.1
+R: 3 0 : 191 : -0.2
+R: 3 1 : 191 : -0.2
+R: 3 2 : 191 : -0.2
+R: 3 3 : 191 : -0.2
+R: 3 4 : 191 : -1.1
+R: 3 5 : 191 : -1.1
+R: 4 0 : 191 : -1.1
+R: 4 1 : 191 : -1.1
+R: 4 2 : 191 : -1.1
+R: 4 3 : 191 : -1.1
+R: 4 4 : 191 : -2.0
+R: 4 5 : 191 : -2.0
+R: 5 0 : 191 : -1.1
+R: 5 1 : 191 : -1.1
+R: 5 2 : 191 : -1.1
+R: 5 3 : 191 : -1.1
+R: 5 4 : 191 : -2.0
+R: 5 5 : 191 : -2.0
+R: 0 0 : 192 : -0.2
+R: 0 1 : 192 : -0.2
+R: 0 2 : 192 : -0.2
+R: 0 3 : 192 : -0.2
+R: 0 4 : 192 : -10.1
+R: 0 5 : 192 : 1.9
+R: 1 0 : 192 : -0.2
+R: 1 1 : 192 : -0.2
+R: 1 2 : 192 : -0.2
+R: 1 3 : 192 : -0.2
+R: 1 4 : 192 : -10.1
+R: 1 5 : 192 : 1.9
+R: 2 0 : 192 : -0.2
+R: 2 1 : 192 : -0.2
+R: 2 2 : 192 : -0.2
+R: 2 3 : 192 : -0.2
+R: 2 4 : 192 : -10.1
+R: 2 5 : 192 : 1.9
+R: 3 0 : 192 : -0.2
+R: 3 1 : 192 : -0.2
+R: 3 2 : 192 : -0.2
+R: 3 3 : 192 : -0.2
+R: 3 4 : 192 : -10.1
+R: 3 5 : 192 : 1.9
+R: 4 0 : 192 : -10.1
+R: 4 1 : 192 : -10.1
+R: 4 2 : 192 : -10.1
+R: 4 3 : 192 : -10.1
+R: 5 0 : 192 : 1.9
+R: 5 1 : 192 : 1.9
+R: 5 2 : 192 : 1.9
+R: 5 3 : 192 : 1.9
+R: 5 4 : 192 : 4.0
+R: 5 5 : 192 : 4.0
+R: 0 0 : 193 : -0.2
+R: 0 1 : 193 : -0.2
+R: 0 2 : 193 : -0.2
+R: 0 3 : 193 : -0.2
+R: 0 4 : 193 : -1.1
+R: 0 5 : 193 : -1.1
+R: 1 0 : 193 : -0.2
+R: 1 1 : 193 : -0.2
+R: 1 2 : 193 : -0.2
+R: 1 3 : 193 : -0.2
+R: 1 4 : 193 : -1.1
+R: 1 5 : 193 : -1.1
+R: 2 0 : 193 : -0.2
+R: 2 1 : 193 : -0.2
+R: 2 2 : 193 : -0.2
+R: 2 3 : 193 : -0.2
+R: 2 4 : 193 : -1.1
+R: 2 5 : 193 : -1.1
+R: 3 0 : 193 : -0.2
+R: 3 1 : 193 : -0.2
+R: 3 2 : 193 : -0.2
+R: 3 3 : 193 : -0.2
+R: 3 4 : 193 : -1.1
+R: 3 5 : 193 : -1.1
+R: 4 0 : 193 : -10.1
+R: 4 1 : 193 : -10.1
+R: 4 2 : 193 : -10.1
+R: 4 3 : 193 : -10.1
+R: 4 4 : 193 : -11.0
+R: 4 5 : 193 : -11.0
+R: 5 0 : 193 : 1.9
+R: 5 1 : 193 : 1.9
+R: 5 2 : 193 : 1.9
+R: 5 3 : 193 : 1.9
+R: 5 4 : 193 : 1.0
+R: 5 5 : 193 : 1.0
+R: 0 0 : 194 : -0.2
+R: 0 1 : 194 : -0.2
+R: 0 2 : 194 : -0.2
+R: 0 3 : 194 : -0.2
+R: 0 4 : 194 : -10.1
+R: 0 5 : 194 : 1.9
+R: 1 0 : 194 : -0.2
+R: 1 1 : 194 : -0.2
+R: 1 2 : 194 : -0.2
+R: 1 3 : 194 : -0.2
+R: 1 4 : 194 : -10.1
+R: 1 5 : 194 : 1.9
+R: 2 0 : 194 : -0.2
+R: 2 1 : 194 : -0.2
+R: 2 2 : 194 : -0.2
+R: 2 3 : 194 : -0.2
+R: 2 4 : 194 : -10.1
+R: 2 5 : 194 : 1.9
+R: 3 0 : 194 : -0.2
+R: 3 1 : 194 : -0.2
+R: 3 2 : 194 : -0.2
+R: 3 3 : 194 : -0.2
+R: 3 4 : 194 : -10.1
+R: 3 5 : 194 : 1.9
+R: 4 0 : 194 : -10.1
+R: 4 1 : 194 : -10.1
+R: 4 2 : 194 : -10.1
+R: 4 3 : 194 : -10.1
+R: 5 0 : 194 : 1.9
+R: 5 1 : 194 : 1.9
+R: 5 2 : 194 : 1.9
+R: 5 3 : 194 : 1.9
+R: 5 4 : 194 : 4.0
+R: 5 5 : 194 : 4.0
+R: 0 0 : 195 : -0.2
+R: 0 1 : 195 : -0.2
+R: 0 2 : 195 : -0.2
+R: 0 3 : 195 : -0.2
+R: 0 4 : 195 : -1.1
+R: 0 5 : 195 : -1.1
+R: 1 0 : 195 : -0.2
+R: 1 1 : 195 : -0.2
+R: 1 2 : 195 : -0.2
+R: 1 3 : 195 : -0.2
+R: 1 4 : 195 : -1.1
+R: 1 5 : 195 : -1.1
+R: 2 0 : 195 : -0.2
+R: 2 1 : 195 : -0.2
+R: 2 2 : 195 : -0.2
+R: 2 3 : 195 : -0.2
+R: 2 4 : 195 : -1.1
+R: 2 5 : 195 : -1.1
+R: 3 0 : 195 : -0.2
+R: 3 1 : 195 : -0.2
+R: 3 2 : 195 : -0.2
+R: 3 3 : 195 : -0.2
+R: 3 4 : 195 : -1.1
+R: 3 5 : 195 : -1.1
+R: 4 0 : 195 : -10.1
+R: 4 1 : 195 : -10.1
+R: 4 2 : 195 : -10.1
+R: 4 3 : 195 : -10.1
+R: 4 4 : 195 : -11.0
+R: 4 5 : 195 : -11.0
+R: 5 0 : 195 : 1.9
+R: 5 1 : 195 : 1.9
+R: 5 2 : 195 : 1.9
+R: 5 3 : 195 : 1.9
+R: 5 4 : 195 : 1.0
+R: 5 5 : 195 : 1.0
+R: 0 0 : 196 : -0.2
+R: 0 1 : 196 : -0.2
+R: 0 2 : 196 : -0.2
+R: 0 3 : 196 : -0.2
+R: 0 4 : 196 : -10.1
+R: 0 5 : 196 : 1.9
+R: 1 0 : 196 : -0.2
+R: 1 1 : 196 : -0.2
+R: 1 2 : 196 : -0.2
+R: 1 3 : 196 : -0.2
+R: 1 4 : 196 : -10.1
+R: 1 5 : 196 : 1.9
+R: 2 0 : 196 : -0.2
+R: 2 1 : 196 : -0.2
+R: 2 2 : 196 : -0.2
+R: 2 3 : 196 : -0.2
+R: 2 4 : 196 : -10.1
+R: 2 5 : 196 : 1.9
+R: 3 0 : 196 : -0.2
+R: 3 1 : 196 : -0.2
+R: 3 2 : 196 : -0.2
+R: 3 3 : 196 : -0.2
+R: 3 4 : 196 : -10.1
+R: 3 5 : 196 : 1.9
+R: 4 0 : 196 : -10.1
+R: 4 1 : 196 : -10.1
+R: 4 2 : 196 : -10.1
+R: 4 3 : 196 : -10.1
+R: 5 0 : 196 : 1.9
+R: 5 1 : 196 : 1.9
+R: 5 2 : 196 : 1.9
+R: 5 3 : 196 : 1.9
+R: 5 4 : 196 : 4.0
+R: 5 5 : 196 : 4.0
+R: 0 0 : 197 : -0.2
+R: 0 1 : 197 : -0.2
+R: 0 2 : 197 : -0.2
+R: 0 3 : 197 : -0.2
+R: 0 4 : 197 : -1.1
+R: 0 5 : 197 : -1.1
+R: 1 0 : 197 : -0.2
+R: 1 1 : 197 : -0.2
+R: 1 2 : 197 : -0.2
+R: 1 3 : 197 : -0.2
+R: 1 4 : 197 : -1.1
+R: 1 5 : 197 : -1.1
+R: 2 0 : 197 : -0.2
+R: 2 1 : 197 : -0.2
+R: 2 2 : 197 : -0.2
+R: 2 3 : 197 : -0.2
+R: 2 4 : 197 : -1.1
+R: 2 5 : 197 : -1.1
+R: 3 0 : 197 : -0.2
+R: 3 1 : 197 : -0.2
+R: 3 2 : 197 : -0.2
+R: 3 3 : 197 : -0.2
+R: 3 4 : 197 : -1.1
+R: 3 5 : 197 : -1.1
+R: 4 0 : 197 : -10.1
+R: 4 1 : 197 : -10.1
+R: 4 2 : 197 : -10.1
+R: 4 3 : 197 : -10.1
+R: 4 4 : 197 : -11.0
+R: 4 5 : 197 : -11.0
+R: 5 0 : 197 : 1.9
+R: 5 1 : 197 : 1.9
+R: 5 2 : 197 : 1.9
+R: 5 3 : 197 : 1.9
+R: 5 4 : 197 : 1.0
+R: 5 5 : 197 : 1.0
+R: 0 0 : 198 : -0.2
+R: 0 1 : 198 : -0.2
+R: 0 2 : 198 : -0.2
+R: 0 3 : 198 : -0.2
+R: 0 4 : 198 : -10.1
+R: 0 5 : 198 : 1.9
+R: 1 0 : 198 : -0.2
+R: 1 1 : 198 : -0.2
+R: 1 2 : 198 : -0.2
+R: 1 3 : 198 : -0.2
+R: 1 4 : 198 : -10.1
+R: 1 5 : 198 : 1.9
+R: 2 0 : 198 : -0.2
+R: 2 1 : 198 : -0.2
+R: 2 2 : 198 : -0.2
+R: 2 3 : 198 : -0.2
+R: 2 4 : 198 : -10.1
+R: 2 5 : 198 : 1.9
+R: 3 0 : 198 : -0.2
+R: 3 1 : 198 : -0.2
+R: 3 2 : 198 : -0.2
+R: 3 3 : 198 : -0.2
+R: 3 4 : 198 : -10.1
+R: 3 5 : 198 : 1.9
+R: 4 0 : 198 : -10.1
+R: 4 1 : 198 : -10.1
+R: 4 2 : 198 : -10.1
+R: 4 3 : 198 : -10.1
+R: 5 0 : 198 : 1.9
+R: 5 1 : 198 : 1.9
+R: 5 2 : 198 : 1.9
+R: 5 3 : 198 : 1.9
+R: 5 4 : 198 : 4.0
+R: 5 5 : 198 : 4.0
+R: 0 0 : 199 : -0.2
+R: 0 1 : 199 : -0.2
+R: 0 2 : 199 : -0.2
+R: 0 3 : 199 : -0.2
+R: 0 4 : 199 : -1.1
+R: 0 5 : 199 : -1.1
+R: 1 0 : 199 : -0.2
+R: 1 1 : 199 : -0.2
+R: 1 2 : 199 : -0.2
+R: 1 3 : 199 : -0.2
+R: 1 4 : 199 : -1.1
+R: 1 5 : 199 : -1.1
+R: 2 0 : 199 : -0.2
+R: 2 1 : 199 : -0.2
+R: 2 2 : 199 : -0.2
+R: 2 3 : 199 : -0.2
+R: 2 4 : 199 : -1.1
+R: 2 5 : 199 : -1.1
+R: 3 0 : 199 : -0.2
+R: 3 1 : 199 : -0.2
+R: 3 2 : 199 : -0.2
+R: 3 3 : 199 : -0.2
+R: 3 4 : 199 : -1.1
+R: 3 5 : 199 : -1.1
+R: 4 0 : 199 : -10.1
+R: 4 1 : 199 : -10.1
+R: 4 2 : 199 : -10.1
+R: 4 3 : 199 : -10.1
+R: 4 4 : 199 : -11.0
+R: 4 5 : 199 : -11.0
+R: 5 0 : 199 : 1.9
+R: 5 1 : 199 : 1.9
+R: 5 2 : 199 : 1.9
+R: 5 3 : 199 : 1.9
+R: 5 4 : 199 : 1.0
+R: 5 5 : 199 : 1.0
+R: 0 0 : 200 : -0.2
+R: 0 1 : 200 : -0.2
+R: 0 2 : 200 : -0.2
+R: 0 3 : 200 : -0.2
+R: 0 4 : 200 : -10.1
+R: 0 5 : 200 : 1.9
+R: 1 0 : 200 : -0.2
+R: 1 1 : 200 : -0.2
+R: 1 2 : 200 : -0.2
+R: 1 3 : 200 : -0.2
+R: 1 4 : 200 : -10.1
+R: 1 5 : 200 : 1.9
+R: 2 0 : 200 : -0.2
+R: 2 1 : 200 : -0.2
+R: 2 2 : 200 : -0.2
+R: 2 3 : 200 : -0.2
+R: 2 4 : 200 : -10.1
+R: 2 5 : 200 : 1.9
+R: 3 0 : 200 : -0.2
+R: 3 1 : 200 : -0.2
+R: 3 2 : 200 : -0.2
+R: 3 3 : 200 : -0.2
+R: 3 4 : 200 : -10.1
+R: 3 5 : 200 : 1.9
+R: 4 0 : 200 : -1.1
+R: 4 1 : 200 : -1.1
+R: 4 2 : 200 : -1.1
+R: 4 3 : 200 : -1.1
+R: 4 4 : 200 : -11.0
+R: 4 5 : 200 : -11.0
+R: 5 0 : 200 : -1.1
+R: 5 1 : 200 : -1.1
+R: 5 2 : 200 : -1.1
+R: 5 3 : 200 : -1.1
+R: 5 4 : 200 : 1.0
+R: 5 5 : 200 : 1.0
+R: 0 0 : 201 : -0.2
+R: 0 1 : 201 : -0.2
+R: 0 2 : 201 : -0.2
+R: 0 3 : 201 : -0.2
+R: 0 4 : 201 : -1.1
+R: 0 5 : 201 : -1.1
+R: 1 0 : 201 : -0.2
+R: 1 1 : 201 : -0.2
+R: 1 2 : 201 : -0.2
+R: 1 3 : 201 : -0.2
+R: 1 4 : 201 : -1.1
+R: 1 5 : 201 : -1.1
+R: 2 0 : 201 : -0.2
+R: 2 1 : 201 : -0.2
+R: 2 2 : 201 : -0.2
+R: 2 3 : 201 : -0.2
+R: 2 4 : 201 : -1.1
+R: 2 5 : 201 : -1.1
+R: 3 0 : 201 : -0.2
+R: 3 1 : 201 : -0.2
+R: 3 2 : 201 : -0.2
+R: 3 3 : 201 : -0.2
+R: 3 4 : 201 : -1.1
+R: 3 5 : 201 : -1.1
+R: 4 0 : 201 : -1.1
+R: 4 1 : 201 : -1.1
+R: 4 2 : 201 : -1.1
+R: 4 3 : 201 : -1.1
+R: 4 4 : 201 : -2.0
+R: 4 5 : 201 : -2.0
+R: 5 0 : 201 : -1.1
+R: 5 1 : 201 : -1.1
+R: 5 2 : 201 : -1.1
+R: 5 3 : 201 : -1.1
+R: 5 4 : 201 : -2.0
+R: 5 5 : 201 : -2.0
+R: 0 0 : 202 : -0.2
+R: 0 1 : 202 : -0.2
+R: 0 2 : 202 : -0.2
+R: 0 3 : 202 : -0.2
+R: 0 4 : 202 : -10.1
+R: 0 5 : 202 : 1.9
+R: 1 0 : 202 : -0.2
+R: 1 1 : 202 : -0.2
+R: 1 2 : 202 : -0.2
+R: 1 3 : 202 : -0.2
+R: 1 4 : 202 : -10.1
+R: 1 5 : 202 : 1.9
+R: 2 0 : 202 : -0.2
+R: 2 1 : 202 : -0.2
+R: 2 2 : 202 : -0.2
+R: 2 3 : 202 : -0.2
+R: 2 4 : 202 : -10.1
+R: 2 5 : 202 : 1.9
+R: 3 0 : 202 : -0.2
+R: 3 1 : 202 : -0.2
+R: 3 2 : 202 : -0.2
+R: 3 3 : 202 : -0.2
+R: 3 4 : 202 : -10.1
+R: 3 5 : 202 : 1.9
+R: 4 0 : 202 : -1.1
+R: 4 1 : 202 : -1.1
+R: 4 2 : 202 : -1.1
+R: 4 3 : 202 : -1.1
+R: 4 4 : 202 : -11.0
+R: 4 5 : 202 : -11.0
+R: 5 0 : 202 : -1.1
+R: 5 1 : 202 : -1.1
+R: 5 2 : 202 : -1.1
+R: 5 3 : 202 : -1.1
+R: 5 4 : 202 : 1.0
+R: 5 5 : 202 : 1.0
+R: 0 0 : 203 : -0.2
+R: 0 1 : 203 : -0.2
+R: 0 2 : 203 : -0.2
+R: 0 3 : 203 : -0.2
+R: 0 4 : 203 : -1.1
+R: 0 5 : 203 : -1.1
+R: 1 0 : 203 : -0.2
+R: 1 1 : 203 : -0.2
+R: 1 2 : 203 : -0.2
+R: 1 3 : 203 : -0.2
+R: 1 4 : 203 : -1.1
+R: 1 5 : 203 : -1.1
+R: 2 0 : 203 : -0.2
+R: 2 1 : 203 : -0.2
+R: 2 2 : 203 : -0.2
+R: 2 3 : 203 : -0.2
+R: 2 4 : 203 : -1.1
+R: 2 5 : 203 : -1.1
+R: 3 0 : 203 : -0.2
+R: 3 1 : 203 : -0.2
+R: 3 2 : 203 : -0.2
+R: 3 3 : 203 : -0.2
+R: 3 4 : 203 : -1.1
+R: 3 5 : 203 : -1.1
+R: 4 0 : 203 : -1.1
+R: 4 1 : 203 : -1.1
+R: 4 2 : 203 : -1.1
+R: 4 3 : 203 : -1.1
+R: 4 4 : 203 : -2.0
+R: 4 5 : 203 : -2.0
+R: 5 0 : 203 : -1.1
+R: 5 1 : 203 : -1.1
+R: 5 2 : 203 : -1.1
+R: 5 3 : 203 : -1.1
+R: 5 4 : 203 : -2.0
+R: 5 5 : 203 : -2.0
+R: 0 0 : 204 : -0.2
+R: 0 1 : 204 : -0.2
+R: 0 2 : 204 : -0.2
+R: 0 3 : 204 : -0.2
+R: 0 4 : 204 : -10.1
+R: 0 5 : 204 : 1.9
+R: 1 0 : 204 : -0.2
+R: 1 1 : 204 : -0.2
+R: 1 2 : 204 : -0.2
+R: 1 3 : 204 : -0.2
+R: 1 4 : 204 : -10.1
+R: 1 5 : 204 : 1.9
+R: 2 0 : 204 : -0.2
+R: 2 1 : 204 : -0.2
+R: 2 2 : 204 : -0.2
+R: 2 3 : 204 : -0.2
+R: 2 4 : 204 : -10.1
+R: 2 5 : 204 : 1.9
+R: 3 0 : 204 : -0.2
+R: 3 1 : 204 : -0.2
+R: 3 2 : 204 : -0.2
+R: 3 3 : 204 : -0.2
+R: 3 4 : 204 : -10.1
+R: 3 5 : 204 : 1.9
+R: 4 0 : 204 : -1.1
+R: 4 1 : 204 : -1.1
+R: 4 2 : 204 : -1.1
+R: 4 3 : 204 : -1.1
+R: 4 4 : 204 : -11.0
+R: 4 5 : 204 : -11.0
+R: 5 0 : 204 : -1.1
+R: 5 1 : 204 : -1.1
+R: 5 2 : 204 : -1.1
+R: 5 3 : 204 : -1.1
+R: 5 4 : 204 : 1.0
+R: 5 5 : 204 : 1.0
+R: 0 0 : 205 : -0.2
+R: 0 1 : 205 : -0.2
+R: 0 2 : 205 : -0.2
+R: 0 3 : 205 : -0.2
+R: 0 4 : 205 : -1.1
+R: 0 5 : 205 : -1.1
+R: 1 0 : 205 : -0.2
+R: 1 1 : 205 : -0.2
+R: 1 2 : 205 : -0.2
+R: 1 3 : 205 : -0.2
+R: 1 4 : 205 : -1.1
+R: 1 5 : 205 : -1.1
+R: 2 0 : 205 : -0.2
+R: 2 1 : 205 : -0.2
+R: 2 2 : 205 : -0.2
+R: 2 3 : 205 : -0.2
+R: 2 4 : 205 : -1.1
+R: 2 5 : 205 : -1.1
+R: 3 0 : 205 : -0.2
+R: 3 1 : 205 : -0.2
+R: 3 2 : 205 : -0.2
+R: 3 3 : 205 : -0.2
+R: 3 4 : 205 : -1.1
+R: 3 5 : 205 : -1.1
+R: 4 0 : 205 : -1.1
+R: 4 1 : 205 : -1.1
+R: 4 2 : 205 : -1.1
+R: 4 3 : 205 : -1.1
+R: 4 4 : 205 : -2.0
+R: 4 5 : 205 : -2.0
+R: 5 0 : 205 : -1.1
+R: 5 1 : 205 : -1.1
+R: 5 2 : 205 : -1.1
+R: 5 3 : 205 : -1.1
+R: 5 4 : 205 : -2.0
+R: 5 5 : 205 : -2.0
+R: 0 0 : 206 : -0.2
+R: 0 1 : 206 : -0.2
+R: 0 2 : 206 : -0.2
+R: 0 3 : 206 : -0.2
+R: 0 4 : 206 : -10.1
+R: 0 5 : 206 : 1.9
+R: 1 0 : 206 : -0.2
+R: 1 1 : 206 : -0.2
+R: 1 2 : 206 : -0.2
+R: 1 3 : 206 : -0.2
+R: 1 4 : 206 : -10.1
+R: 1 5 : 206 : 1.9
+R: 2 0 : 206 : -0.2
+R: 2 1 : 206 : -0.2
+R: 2 2 : 206 : -0.2
+R: 2 3 : 206 : -0.2
+R: 2 4 : 206 : -10.1
+R: 2 5 : 206 : 1.9
+R: 3 0 : 206 : -0.2
+R: 3 1 : 206 : -0.2
+R: 3 2 : 206 : -0.2
+R: 3 3 : 206 : -0.2
+R: 3 4 : 206 : -10.1
+R: 3 5 : 206 : 1.9
+R: 4 0 : 206 : -1.1
+R: 4 1 : 206 : -1.1
+R: 4 2 : 206 : -1.1
+R: 4 3 : 206 : -1.1
+R: 4 4 : 206 : -11.0
+R: 4 5 : 206 : -11.0
+R: 5 0 : 206 : -1.1
+R: 5 1 : 206 : -1.1
+R: 5 2 : 206 : -1.1
+R: 5 3 : 206 : -1.1
+R: 5 4 : 206 : 1.0
+R: 5 5 : 206 : 1.0
+R: 0 0 : 207 : -0.2
+R: 0 1 : 207 : -0.2
+R: 0 2 : 207 : -0.2
+R: 0 3 : 207 : -0.2
+R: 0 4 : 207 : -1.1
+R: 0 5 : 207 : -1.1
+R: 1 0 : 207 : -0.2
+R: 1 1 : 207 : -0.2
+R: 1 2 : 207 : -0.2
+R: 1 3 : 207 : -0.2
+R: 1 4 : 207 : -1.1
+R: 1 5 : 207 : -1.1
+R: 2 0 : 207 : -0.2
+R: 2 1 : 207 : -0.2
+R: 2 2 : 207 : -0.2
+R: 2 3 : 207 : -0.2
+R: 2 4 : 207 : -1.1
+R: 2 5 : 207 : -1.1
+R: 3 0 : 207 : -0.2
+R: 3 1 : 207 : -0.2
+R: 3 2 : 207 : -0.2
+R: 3 3 : 207 : -0.2
+R: 3 4 : 207 : -1.1
+R: 3 5 : 207 : -1.1
+R: 4 0 : 207 : -1.1
+R: 4 1 : 207 : -1.1
+R: 4 2 : 207 : -1.1
+R: 4 3 : 207 : -1.1
+R: 4 4 : 207 : -2.0
+R: 4 5 : 207 : -2.0
+R: 5 0 : 207 : -1.1
+R: 5 1 : 207 : -1.1
+R: 5 2 : 207 : -1.1
+R: 5 3 : 207 : -1.1
+R: 5 4 : 207 : -2.0
+R: 5 5 : 207 : -2.0
+R: 0 0 : 208 : -0.2
+R: 0 1 : 208 : -0.2
+R: 0 2 : 208 : -0.2
+R: 0 3 : 208 : -0.2
+R: 0 4 : 208 : -10.1
+R: 0 5 : 208 : 1.9
+R: 1 0 : 208 : -0.2
+R: 1 1 : 208 : -0.2
+R: 1 2 : 208 : -0.2
+R: 1 3 : 208 : -0.2
+R: 1 4 : 208 : -10.1
+R: 1 5 : 208 : 1.9
+R: 2 0 : 208 : -0.2
+R: 2 1 : 208 : -0.2
+R: 2 2 : 208 : -0.2
+R: 2 3 : 208 : -0.2
+R: 2 4 : 208 : -10.1
+R: 2 5 : 208 : 1.9
+R: 3 0 : 208 : -0.2
+R: 3 1 : 208 : -0.2
+R: 3 2 : 208 : -0.2
+R: 3 3 : 208 : -0.2
+R: 3 4 : 208 : -10.1
+R: 3 5 : 208 : 1.9
+R: 4 0 : 208 : -10.1
+R: 4 1 : 208 : -10.1
+R: 4 2 : 208 : -10.1
+R: 4 3 : 208 : -10.1
+R: 5 0 : 208 : 1.9
+R: 5 1 : 208 : 1.9
+R: 5 2 : 208 : 1.9
+R: 5 3 : 208 : 1.9
+R: 5 4 : 208 : 4.0
+R: 5 5 : 208 : 4.0
+R: 0 0 : 209 : -0.2
+R: 0 1 : 209 : -0.2
+R: 0 2 : 209 : -0.2
+R: 0 3 : 209 : -0.2
+R: 0 4 : 209 : -10.1
+R: 0 5 : 209 : 1.9
+R: 1 0 : 209 : -0.2
+R: 1 1 : 209 : -0.2
+R: 1 2 : 209 : -0.2
+R: 1 3 : 209 : -0.2
+R: 1 4 : 209 : -10.1
+R: 1 5 : 209 : 1.9
+R: 2 0 : 209 : -0.2
+R: 2 1 : 209 : -0.2
+R: 2 2 : 209 : -0.2
+R: 2 3 : 209 : -0.2
+R: 2 4 : 209 : -10.1
+R: 2 5 : 209 : 1.9
+R: 3 0 : 209 : -0.2
+R: 3 1 : 209 : -0.2
+R: 3 2 : 209 : -0.2
+R: 3 3 : 209 : -0.2
+R: 3 4 : 209 : -10.1
+R: 3 5 : 209 : 1.9
+R: 4 0 : 209 : -10.1
+R: 4 1 : 209 : -10.1
+R: 4 2 : 209 : -10.1
+R: 4 3 : 209 : -10.1
+R: 5 0 : 209 : 1.9
+R: 5 1 : 209 : 1.9
+R: 5 2 : 209 : 1.9
+R: 5 3 : 209 : 1.9
+R: 5 4 : 209 : 4.0
+R: 5 5 : 209 : 4.0
+R: 0 0 : 210 : -0.2
+R: 0 1 : 210 : -0.2
+R: 0 2 : 210 : -0.2
+R: 0 3 : 210 : -0.2
+R: 0 4 : 210 : -1.1
+R: 0 5 : 210 : -1.1
+R: 1 0 : 210 : -0.2
+R: 1 1 : 210 : -0.2
+R: 1 2 : 210 : -0.2
+R: 1 3 : 210 : -0.2
+R: 1 4 : 210 : -1.1
+R: 1 5 : 210 : -1.1
+R: 2 0 : 210 : -0.2
+R: 2 1 : 210 : -0.2
+R: 2 2 : 210 : -0.2
+R: 2 3 : 210 : -0.2
+R: 2 4 : 210 : -1.1
+R: 2 5 : 210 : -1.1
+R: 3 0 : 210 : -0.2
+R: 3 1 : 210 : -0.2
+R: 3 2 : 210 : -0.2
+R: 3 3 : 210 : -0.2
+R: 3 4 : 210 : -1.1
+R: 3 5 : 210 : -1.1
+R: 4 0 : 210 : -10.1
+R: 4 1 : 210 : -10.1
+R: 4 2 : 210 : -10.1
+R: 4 3 : 210 : -10.1
+R: 4 4 : 210 : -11.0
+R: 4 5 : 210 : -11.0
+R: 5 0 : 210 : 1.9
+R: 5 1 : 210 : 1.9
+R: 5 2 : 210 : 1.9
+R: 5 3 : 210 : 1.9
+R: 5 4 : 210 : 1.0
+R: 5 5 : 210 : 1.0
+R: 0 0 : 211 : -0.2
+R: 0 1 : 211 : -0.2
+R: 0 2 : 211 : -0.2
+R: 0 3 : 211 : -0.2
+R: 0 4 : 211 : -1.1
+R: 0 5 : 211 : -1.1
+R: 1 0 : 211 : -0.2
+R: 1 1 : 211 : -0.2
+R: 1 2 : 211 : -0.2
+R: 1 3 : 211 : -0.2
+R: 1 4 : 211 : -1.1
+R: 1 5 : 211 : -1.1
+R: 2 0 : 211 : -0.2
+R: 2 1 : 211 : -0.2
+R: 2 2 : 211 : -0.2
+R: 2 3 : 211 : -0.2
+R: 2 4 : 211 : -1.1
+R: 2 5 : 211 : -1.1
+R: 3 0 : 211 : -0.2
+R: 3 1 : 211 : -0.2
+R: 3 2 : 211 : -0.2
+R: 3 3 : 211 : -0.2
+R: 3 4 : 211 : -1.1
+R: 3 5 : 211 : -1.1
+R: 4 0 : 211 : -10.1
+R: 4 1 : 211 : -10.1
+R: 4 2 : 211 : -10.1
+R: 4 3 : 211 : -10.1
+R: 4 4 : 211 : -11.0
+R: 4 5 : 211 : -11.0
+R: 5 0 : 211 : 1.9
+R: 5 1 : 211 : 1.9
+R: 5 2 : 211 : 1.9
+R: 5 3 : 211 : 1.9
+R: 5 4 : 211 : 1.0
+R: 5 5 : 211 : 1.0
+R: 0 0 : 212 : -0.2
+R: 0 1 : 212 : -0.2
+R: 0 2 : 212 : -0.2
+R: 0 3 : 212 : -0.2
+R: 0 4 : 212 : -10.1
+R: 0 5 : 212 : 1.9
+R: 1 0 : 212 : -0.2
+R: 1 1 : 212 : -0.2
+R: 1 2 : 212 : -0.2
+R: 1 3 : 212 : -0.2
+R: 1 4 : 212 : -10.1
+R: 1 5 : 212 : 1.9
+R: 2 0 : 212 : -0.2
+R: 2 1 : 212 : -0.2
+R: 2 2 : 212 : -0.2
+R: 2 3 : 212 : -0.2
+R: 2 4 : 212 : -10.1
+R: 2 5 : 212 : 1.9
+R: 3 0 : 212 : -0.2
+R: 3 1 : 212 : -0.2
+R: 3 2 : 212 : -0.2
+R: 3 3 : 212 : -0.2
+R: 3 4 : 212 : -10.1
+R: 3 5 : 212 : 1.9
+R: 4 0 : 212 : -10.1
+R: 4 1 : 212 : -10.1
+R: 4 2 : 212 : -10.1
+R: 4 3 : 212 : -10.1
+R: 5 0 : 212 : 1.9
+R: 5 1 : 212 : 1.9
+R: 5 2 : 212 : 1.9
+R: 5 3 : 212 : 1.9
+R: 5 4 : 212 : 4.0
+R: 5 5 : 212 : 4.0
+R: 0 0 : 213 : -0.2
+R: 0 1 : 213 : -0.2
+R: 0 2 : 213 : -0.2
+R: 0 3 : 213 : -0.2
+R: 0 4 : 213 : -10.1
+R: 0 5 : 213 : 1.9
+R: 1 0 : 213 : -0.2
+R: 1 1 : 213 : -0.2
+R: 1 2 : 213 : -0.2
+R: 1 3 : 213 : -0.2
+R: 1 4 : 213 : -10.1
+R: 1 5 : 213 : 1.9
+R: 2 0 : 213 : -0.2
+R: 2 1 : 213 : -0.2
+R: 2 2 : 213 : -0.2
+R: 2 3 : 213 : -0.2
+R: 2 4 : 213 : -10.1
+R: 2 5 : 213 : 1.9
+R: 3 0 : 213 : -0.2
+R: 3 1 : 213 : -0.2
+R: 3 2 : 213 : -0.2
+R: 3 3 : 213 : -0.2
+R: 3 4 : 213 : -10.1
+R: 3 5 : 213 : 1.9
+R: 4 0 : 213 : -10.1
+R: 4 1 : 213 : -10.1
+R: 4 2 : 213 : -10.1
+R: 4 3 : 213 : -10.1
+R: 5 0 : 213 : 1.9
+R: 5 1 : 213 : 1.9
+R: 5 2 : 213 : 1.9
+R: 5 3 : 213 : 1.9
+R: 5 4 : 213 : 4.0
+R: 5 5 : 213 : 4.0
+R: 0 0 : 214 : -0.2
+R: 0 1 : 214 : -0.2
+R: 0 2 : 214 : -0.2
+R: 0 3 : 214 : -0.2
+R: 0 4 : 214 : -1.1
+R: 0 5 : 214 : -1.1
+R: 1 0 : 214 : -0.2
+R: 1 1 : 214 : -0.2
+R: 1 2 : 214 : -0.2
+R: 1 3 : 214 : -0.2
+R: 1 4 : 214 : -1.1
+R: 1 5 : 214 : -1.1
+R: 2 0 : 214 : -0.2
+R: 2 1 : 214 : -0.2
+R: 2 2 : 214 : -0.2
+R: 2 3 : 214 : -0.2
+R: 2 4 : 214 : -1.1
+R: 2 5 : 214 : -1.1
+R: 3 0 : 214 : -0.2
+R: 3 1 : 214 : -0.2
+R: 3 2 : 214 : -0.2
+R: 3 3 : 214 : -0.2
+R: 3 4 : 214 : -1.1
+R: 3 5 : 214 : -1.1
+R: 4 0 : 214 : -10.1
+R: 4 1 : 214 : -10.1
+R: 4 2 : 214 : -10.1
+R: 4 3 : 214 : -10.1
+R: 4 4 : 214 : -11.0
+R: 4 5 : 214 : -11.0
+R: 5 0 : 214 : 1.9
+R: 5 1 : 214 : 1.9
+R: 5 2 : 214 : 1.9
+R: 5 3 : 214 : 1.9
+R: 5 4 : 214 : 1.0
+R: 5 5 : 214 : 1.0
+R: 0 0 : 215 : -0.2
+R: 0 1 : 215 : -0.2
+R: 0 2 : 215 : -0.2
+R: 0 3 : 215 : -0.2
+R: 0 4 : 215 : -1.1
+R: 0 5 : 215 : -1.1
+R: 1 0 : 215 : -0.2
+R: 1 1 : 215 : -0.2
+R: 1 2 : 215 : -0.2
+R: 1 3 : 215 : -0.2
+R: 1 4 : 215 : -1.1
+R: 1 5 : 215 : -1.1
+R: 2 0 : 215 : -0.2
+R: 2 1 : 215 : -0.2
+R: 2 2 : 215 : -0.2
+R: 2 3 : 215 : -0.2
+R: 2 4 : 215 : -1.1
+R: 2 5 : 215 : -1.1
+R: 3 0 : 215 : -0.2
+R: 3 1 : 215 : -0.2
+R: 3 2 : 215 : -0.2
+R: 3 3 : 215 : -0.2
+R: 3 4 : 215 : -1.1
+R: 3 5 : 215 : -1.1
+R: 4 0 : 215 : -10.1
+R: 4 1 : 215 : -10.1
+R: 4 2 : 215 : -10.1
+R: 4 3 : 215 : -10.1
+R: 4 4 : 215 : -11.0
+R: 4 5 : 215 : -11.0
+R: 5 0 : 215 : 1.9
+R: 5 1 : 215 : 1.9
+R: 5 2 : 215 : 1.9
+R: 5 3 : 215 : 1.9
+R: 5 4 : 215 : 1.0
+R: 5 5 : 215 : 1.0
+R: 0 0 : 216 : -0.2
+R: 0 1 : 216 : -0.2
+R: 0 2 : 216 : -0.2
+R: 0 3 : 216 : -0.2
+R: 0 4 : 216 : -10.1
+R: 0 5 : 216 : 1.9
+R: 1 0 : 216 : -0.2
+R: 1 1 : 216 : -0.2
+R: 1 2 : 216 : -0.2
+R: 1 3 : 216 : -0.2
+R: 1 4 : 216 : -10.1
+R: 1 5 : 216 : 1.9
+R: 2 0 : 216 : -0.2
+R: 2 1 : 216 : -0.2
+R: 2 2 : 216 : -0.2
+R: 2 3 : 216 : -0.2
+R: 2 4 : 216 : -10.1
+R: 2 5 : 216 : 1.9
+R: 3 0 : 216 : -0.2
+R: 3 1 : 216 : -0.2
+R: 3 2 : 216 : -0.2
+R: 3 3 : 216 : -0.2
+R: 3 4 : 216 : -10.1
+R: 3 5 : 216 : 1.9
+R: 4 0 : 216 : -1.1
+R: 4 1 : 216 : -1.1
+R: 4 2 : 216 : -1.1
+R: 4 3 : 216 : -1.1
+R: 4 4 : 216 : -11.0
+R: 4 5 : 216 : -11.0
+R: 5 0 : 216 : -1.1
+R: 5 1 : 216 : -1.1
+R: 5 2 : 216 : -1.1
+R: 5 3 : 216 : -1.1
+R: 5 4 : 216 : 1.0
+R: 5 5 : 216 : 1.0
+R: 0 0 : 217 : -0.2
+R: 0 1 : 217 : -0.2
+R: 0 2 : 217 : -0.2
+R: 0 3 : 217 : -0.2
+R: 0 4 : 217 : -10.1
+R: 0 5 : 217 : 1.9
+R: 1 0 : 217 : -0.2
+R: 1 1 : 217 : -0.2
+R: 1 2 : 217 : -0.2
+R: 1 3 : 217 : -0.2
+R: 1 4 : 217 : -10.1
+R: 1 5 : 217 : 1.9
+R: 2 0 : 217 : -0.2
+R: 2 1 : 217 : -0.2
+R: 2 2 : 217 : -0.2
+R: 2 3 : 217 : -0.2
+R: 2 4 : 217 : -10.1
+R: 2 5 : 217 : 1.9
+R: 3 0 : 217 : -0.2
+R: 3 1 : 217 : -0.2
+R: 3 2 : 217 : -0.2
+R: 3 3 : 217 : -0.2
+R: 3 4 : 217 : -10.1
+R: 3 5 : 217 : 1.9
+R: 4 0 : 217 : -1.1
+R: 4 1 : 217 : -1.1
+R: 4 2 : 217 : -1.1
+R: 4 3 : 217 : -1.1
+R: 4 4 : 217 : -11.0
+R: 4 5 : 217 : -11.0
+R: 5 0 : 217 : -1.1
+R: 5 1 : 217 : -1.1
+R: 5 2 : 217 : -1.1
+R: 5 3 : 217 : -1.1
+R: 5 4 : 217 : 1.0
+R: 5 5 : 217 : 1.0
+R: 0 0 : 218 : -0.2
+R: 0 1 : 218 : -0.2
+R: 0 2 : 218 : -0.2
+R: 0 3 : 218 : -0.2
+R: 0 4 : 218 : -1.1
+R: 0 5 : 218 : -1.1
+R: 1 0 : 218 : -0.2
+R: 1 1 : 218 : -0.2
+R: 1 2 : 218 : -0.2
+R: 1 3 : 218 : -0.2
+R: 1 4 : 218 : -1.1
+R: 1 5 : 218 : -1.1
+R: 2 0 : 218 : -0.2
+R: 2 1 : 218 : -0.2
+R: 2 2 : 218 : -0.2
+R: 2 3 : 218 : -0.2
+R: 2 4 : 218 : -1.1
+R: 2 5 : 218 : -1.1
+R: 3 0 : 218 : -0.2
+R: 3 1 : 218 : -0.2
+R: 3 2 : 218 : -0.2
+R: 3 3 : 218 : -0.2
+R: 3 4 : 218 : -1.1
+R: 3 5 : 218 : -1.1
+R: 4 0 : 218 : -1.1
+R: 4 1 : 218 : -1.1
+R: 4 2 : 218 : -1.1
+R: 4 3 : 218 : -1.1
+R: 4 4 : 218 : -2.0
+R: 4 5 : 218 : -2.0
+R: 5 0 : 218 : -1.1
+R: 5 1 : 218 : -1.1
+R: 5 2 : 218 : -1.1
+R: 5 3 : 218 : -1.1
+R: 5 4 : 218 : -2.0
+R: 5 5 : 218 : -2.0
+R: 0 0 : 219 : -0.2
+R: 0 1 : 219 : -0.2
+R: 0 2 : 219 : -0.2
+R: 0 3 : 219 : -0.2
+R: 0 4 : 219 : -1.1
+R: 0 5 : 219 : -1.1
+R: 1 0 : 219 : -0.2
+R: 1 1 : 219 : -0.2
+R: 1 2 : 219 : -0.2
+R: 1 3 : 219 : -0.2
+R: 1 4 : 219 : -1.1
+R: 1 5 : 219 : -1.1
+R: 2 0 : 219 : -0.2
+R: 2 1 : 219 : -0.2
+R: 2 2 : 219 : -0.2
+R: 2 3 : 219 : -0.2
+R: 2 4 : 219 : -1.1
+R: 2 5 : 219 : -1.1
+R: 3 0 : 219 : -0.2
+R: 3 1 : 219 : -0.2
+R: 3 2 : 219 : -0.2
+R: 3 3 : 219 : -0.2
+R: 3 4 : 219 : -1.1
+R: 3 5 : 219 : -1.1
+R: 4 0 : 219 : -1.1
+R: 4 1 : 219 : -1.1
+R: 4 2 : 219 : -1.1
+R: 4 3 : 219 : -1.1
+R: 4 4 : 219 : -2.0
+R: 4 5 : 219 : -2.0
+R: 5 0 : 219 : -1.1
+R: 5 1 : 219 : -1.1
+R: 5 2 : 219 : -1.1
+R: 5 3 : 219 : -1.1
+R: 5 4 : 219 : -2.0
+R: 5 5 : 219 : -2.0
+R: 0 0 : 220 : -0.2
+R: 0 1 : 220 : -0.2
+R: 0 2 : 220 : -0.2
+R: 0 3 : 220 : -0.2
+R: 0 4 : 220 : -10.1
+R: 0 5 : 220 : 1.9
+R: 1 0 : 220 : -0.2
+R: 1 1 : 220 : -0.2
+R: 1 2 : 220 : -0.2
+R: 1 3 : 220 : -0.2
+R: 1 4 : 220 : -10.1
+R: 1 5 : 220 : 1.9
+R: 2 0 : 220 : -0.2
+R: 2 1 : 220 : -0.2
+R: 2 2 : 220 : -0.2
+R: 2 3 : 220 : -0.2
+R: 2 4 : 220 : -10.1
+R: 2 5 : 220 : 1.9
+R: 3 0 : 220 : -0.2
+R: 3 1 : 220 : -0.2
+R: 3 2 : 220 : -0.2
+R: 3 3 : 220 : -0.2
+R: 3 4 : 220 : -10.1
+R: 3 5 : 220 : 1.9
+R: 4 0 : 220 : -1.1
+R: 4 1 : 220 : -1.1
+R: 4 2 : 220 : -1.1
+R: 4 3 : 220 : -1.1
+R: 4 4 : 220 : -11.0
+R: 4 5 : 220 : -11.0
+R: 5 0 : 220 : -1.1
+R: 5 1 : 220 : -1.1
+R: 5 2 : 220 : -1.1
+R: 5 3 : 220 : -1.1
+R: 5 4 : 220 : 1.0
+R: 5 5 : 220 : 1.0
+R: 0 0 : 221 : -0.2
+R: 0 1 : 221 : -0.2
+R: 0 2 : 221 : -0.2
+R: 0 3 : 221 : -0.2
+R: 0 4 : 221 : -10.1
+R: 0 5 : 221 : 1.9
+R: 1 0 : 221 : -0.2
+R: 1 1 : 221 : -0.2
+R: 1 2 : 221 : -0.2
+R: 1 3 : 221 : -0.2
+R: 1 4 : 221 : -10.1
+R: 1 5 : 221 : 1.9
+R: 2 0 : 221 : -0.2
+R: 2 1 : 221 : -0.2
+R: 2 2 : 221 : -0.2
+R: 2 3 : 221 : -0.2
+R: 2 4 : 221 : -10.1
+R: 2 5 : 221 : 1.9
+R: 3 0 : 221 : -0.2
+R: 3 1 : 221 : -0.2
+R: 3 2 : 221 : -0.2
+R: 3 3 : 221 : -0.2
+R: 3 4 : 221 : -10.1
+R: 3 5 : 221 : 1.9
+R: 4 0 : 221 : -1.1
+R: 4 1 : 221 : -1.1
+R: 4 2 : 221 : -1.1
+R: 4 3 : 221 : -1.1
+R: 4 4 : 221 : -11.0
+R: 4 5 : 221 : -11.0
+R: 5 0 : 221 : -1.1
+R: 5 1 : 221 : -1.1
+R: 5 2 : 221 : -1.1
+R: 5 3 : 221 : -1.1
+R: 5 4 : 221 : 1.0
+R: 5 5 : 221 : 1.0
+R: 0 0 : 222 : -0.2
+R: 0 1 : 222 : -0.2
+R: 0 2 : 222 : -0.2
+R: 0 3 : 222 : -0.2
+R: 0 4 : 222 : -1.1
+R: 0 5 : 222 : -1.1
+R: 1 0 : 222 : -0.2
+R: 1 1 : 222 : -0.2
+R: 1 2 : 222 : -0.2
+R: 1 3 : 222 : -0.2
+R: 1 4 : 222 : -1.1
+R: 1 5 : 222 : -1.1
+R: 2 0 : 222 : -0.2
+R: 2 1 : 222 : -0.2
+R: 2 2 : 222 : -0.2
+R: 2 3 : 222 : -0.2
+R: 2 4 : 222 : -1.1
+R: 2 5 : 222 : -1.1
+R: 3 0 : 222 : -0.2
+R: 3 1 : 222 : -0.2
+R: 3 2 : 222 : -0.2
+R: 3 3 : 222 : -0.2
+R: 3 4 : 222 : -1.1
+R: 3 5 : 222 : -1.1
+R: 4 0 : 222 : -1.1
+R: 4 1 : 222 : -1.1
+R: 4 2 : 222 : -1.1
+R: 4 3 : 222 : -1.1
+R: 4 4 : 222 : -2.0
+R: 4 5 : 222 : -2.0
+R: 5 0 : 222 : -1.1
+R: 5 1 : 222 : -1.1
+R: 5 2 : 222 : -1.1
+R: 5 3 : 222 : -1.1
+R: 5 4 : 222 : -2.0
+R: 5 5 : 222 : -2.0
+R: 0 0 : 223 : -0.2
+R: 0 1 : 223 : -0.2
+R: 0 2 : 223 : -0.2
+R: 0 3 : 223 : -0.2
+R: 0 4 : 223 : -1.1
+R: 0 5 : 223 : -1.1
+R: 1 0 : 223 : -0.2
+R: 1 1 : 223 : -0.2
+R: 1 2 : 223 : -0.2
+R: 1 3 : 223 : -0.2
+R: 1 4 : 223 : -1.1
+R: 1 5 : 223 : -1.1
+R: 2 0 : 223 : -0.2
+R: 2 1 : 223 : -0.2
+R: 2 2 : 223 : -0.2
+R: 2 3 : 223 : -0.2
+R: 2 4 : 223 : -1.1
+R: 2 5 : 223 : -1.1
+R: 3 0 : 223 : -0.2
+R: 3 1 : 223 : -0.2
+R: 3 2 : 223 : -0.2
+R: 3 3 : 223 : -0.2
+R: 3 4 : 223 : -1.1
+R: 3 5 : 223 : -1.1
+R: 4 0 : 223 : -1.1
+R: 4 1 : 223 : -1.1
+R: 4 2 : 223 : -1.1
+R: 4 3 : 223 : -1.1
+R: 4 4 : 223 : -2.0
+R: 4 5 : 223 : -2.0
+R: 5 0 : 223 : -1.1
+R: 5 1 : 223 : -1.1
+R: 5 2 : 223 : -1.1
+R: 5 3 : 223 : -1.1
+R: 5 4 : 223 : -2.0
+R: 5 5 : 223 : -2.0
+R: 0 0 : 224 : -0.2
+R: 0 1 : 224 : -0.2
+R: 0 2 : 224 : -0.2
+R: 0 3 : 224 : -0.2
+R: 0 4 : 224 : -10.1
+R: 0 5 : 224 : 1.9
+R: 1 0 : 224 : -0.2
+R: 1 1 : 224 : -0.2
+R: 1 2 : 224 : -0.2
+R: 1 3 : 224 : -0.2
+R: 1 4 : 224 : -10.1
+R: 1 5 : 224 : 1.9
+R: 2 0 : 224 : -0.2
+R: 2 1 : 224 : -0.2
+R: 2 2 : 224 : -0.2
+R: 2 3 : 224 : -0.2
+R: 2 4 : 224 : -10.1
+R: 2 5 : 224 : 1.9
+R: 3 0 : 224 : -0.2
+R: 3 1 : 224 : -0.2
+R: 3 2 : 224 : -0.2
+R: 3 3 : 224 : -0.2
+R: 3 4 : 224 : -10.1
+R: 3 5 : 224 : 1.9
+R: 4 0 : 224 : -10.1
+R: 4 1 : 224 : -10.1
+R: 4 2 : 224 : -10.1
+R: 4 3 : 224 : -10.1
+R: 5 0 : 224 : 1.9
+R: 5 1 : 224 : 1.9
+R: 5 2 : 224 : 1.9
+R: 5 3 : 224 : 1.9
+R: 5 4 : 224 : 4.0
+R: 5 5 : 224 : 4.0
+R: 0 0 : 225 : -0.2
+R: 0 1 : 225 : -0.2
+R: 0 2 : 225 : -0.2
+R: 0 3 : 225 : -0.2
+R: 0 4 : 225 : -10.1
+R: 0 5 : 225 : 1.9
+R: 1 0 : 225 : -0.2
+R: 1 1 : 225 : -0.2
+R: 1 2 : 225 : -0.2
+R: 1 3 : 225 : -0.2
+R: 1 4 : 225 : -10.1
+R: 1 5 : 225 : 1.9
+R: 2 0 : 225 : -0.2
+R: 2 1 : 225 : -0.2
+R: 2 2 : 225 : -0.2
+R: 2 3 : 225 : -0.2
+R: 2 4 : 225 : -10.1
+R: 2 5 : 225 : 1.9
+R: 3 0 : 225 : -0.2
+R: 3 1 : 225 : -0.2
+R: 3 2 : 225 : -0.2
+R: 3 3 : 225 : -0.2
+R: 3 4 : 225 : -10.1
+R: 3 5 : 225 : 1.9
+R: 4 0 : 225 : -10.1
+R: 4 1 : 225 : -10.1
+R: 4 2 : 225 : -10.1
+R: 4 3 : 225 : -10.1
+R: 5 0 : 225 : 1.9
+R: 5 1 : 225 : 1.9
+R: 5 2 : 225 : 1.9
+R: 5 3 : 225 : 1.9
+R: 5 4 : 225 : 4.0
+R: 5 5 : 225 : 4.0
+R: 0 0 : 226 : -0.2
+R: 0 1 : 226 : -0.2
+R: 0 2 : 226 : -0.2
+R: 0 3 : 226 : -0.2
+R: 0 4 : 226 : -10.1
+R: 0 5 : 226 : 1.9
+R: 1 0 : 226 : -0.2
+R: 1 1 : 226 : -0.2
+R: 1 2 : 226 : -0.2
+R: 1 3 : 226 : -0.2
+R: 1 4 : 226 : -10.1
+R: 1 5 : 226 : 1.9
+R: 2 0 : 226 : -0.2
+R: 2 1 : 226 : -0.2
+R: 2 2 : 226 : -0.2
+R: 2 3 : 226 : -0.2
+R: 2 4 : 226 : -10.1
+R: 2 5 : 226 : 1.9
+R: 3 0 : 226 : -0.2
+R: 3 1 : 226 : -0.2
+R: 3 2 : 226 : -0.2
+R: 3 3 : 226 : -0.2
+R: 3 4 : 226 : -10.1
+R: 3 5 : 226 : 1.9
+R: 4 0 : 226 : -10.1
+R: 4 1 : 226 : -10.1
+R: 4 2 : 226 : -10.1
+R: 4 3 : 226 : -10.1
+R: 5 0 : 226 : 1.9
+R: 5 1 : 226 : 1.9
+R: 5 2 : 226 : 1.9
+R: 5 3 : 226 : 1.9
+R: 5 4 : 226 : 4.0
+R: 5 5 : 226 : 4.0
+R: 0 0 : 227 : -0.2
+R: 0 1 : 227 : -0.2
+R: 0 2 : 227 : -0.2
+R: 0 3 : 227 : -0.2
+R: 0 4 : 227 : -10.1
+R: 0 5 : 227 : 1.9
+R: 1 0 : 227 : -0.2
+R: 1 1 : 227 : -0.2
+R: 1 2 : 227 : -0.2
+R: 1 3 : 227 : -0.2
+R: 1 4 : 227 : -10.1
+R: 1 5 : 227 : 1.9
+R: 2 0 : 227 : -0.2
+R: 2 1 : 227 : -0.2
+R: 2 2 : 227 : -0.2
+R: 2 3 : 227 : -0.2
+R: 2 4 : 227 : -10.1
+R: 2 5 : 227 : 1.9
+R: 3 0 : 227 : -0.2
+R: 3 1 : 227 : -0.2
+R: 3 2 : 227 : -0.2
+R: 3 3 : 227 : -0.2
+R: 3 4 : 227 : -10.1
+R: 3 5 : 227 : 1.9
+R: 4 0 : 227 : -10.1
+R: 4 1 : 227 : -10.1
+R: 4 2 : 227 : -10.1
+R: 4 3 : 227 : -10.1
+R: 5 0 : 227 : 1.9
+R: 5 1 : 227 : 1.9
+R: 5 2 : 227 : 1.9
+R: 5 3 : 227 : 1.9
+R: 5 4 : 227 : 4.0
+R: 5 5 : 227 : 4.0
+R: 0 0 : 228 : -0.2
+R: 0 1 : 228 : -0.2
+R: 0 2 : 228 : -0.2
+R: 0 3 : 228 : -0.2
+R: 0 4 : 228 : -1.1
+R: 0 5 : 228 : -1.1
+R: 1 0 : 228 : -0.2
+R: 1 1 : 228 : -0.2
+R: 1 2 : 228 : -0.2
+R: 1 3 : 228 : -0.2
+R: 1 4 : 228 : -1.1
+R: 1 5 : 228 : -1.1
+R: 2 0 : 228 : -0.2
+R: 2 1 : 228 : -0.2
+R: 2 2 : 228 : -0.2
+R: 2 3 : 228 : -0.2
+R: 2 4 : 228 : -1.1
+R: 2 5 : 228 : -1.1
+R: 3 0 : 228 : -0.2
+R: 3 1 : 228 : -0.2
+R: 3 2 : 228 : -0.2
+R: 3 3 : 228 : -0.2
+R: 3 4 : 228 : -1.1
+R: 3 5 : 228 : -1.1
+R: 4 0 : 228 : -10.1
+R: 4 1 : 228 : -10.1
+R: 4 2 : 228 : -10.1
+R: 4 3 : 228 : -10.1
+R: 4 4 : 228 : -11.0
+R: 4 5 : 228 : -11.0
+R: 5 0 : 228 : 1.9
+R: 5 1 : 228 : 1.9
+R: 5 2 : 228 : 1.9
+R: 5 3 : 228 : 1.9
+R: 5 4 : 228 : 1.0
+R: 5 5 : 228 : 1.0
+R: 0 0 : 229 : -0.2
+R: 0 1 : 229 : -0.2
+R: 0 2 : 229 : -0.2
+R: 0 3 : 229 : -0.2
+R: 0 4 : 229 : -1.1
+R: 0 5 : 229 : -1.1
+R: 1 0 : 229 : -0.2
+R: 1 1 : 229 : -0.2
+R: 1 2 : 229 : -0.2
+R: 1 3 : 229 : -0.2
+R: 1 4 : 229 : -1.1
+R: 1 5 : 229 : -1.1
+R: 2 0 : 229 : -0.2
+R: 2 1 : 229 : -0.2
+R: 2 2 : 229 : -0.2
+R: 2 3 : 229 : -0.2
+R: 2 4 : 229 : -1.1
+R: 2 5 : 229 : -1.1
+R: 3 0 : 229 : -0.2
+R: 3 1 : 229 : -0.2
+R: 3 2 : 229 : -0.2
+R: 3 3 : 229 : -0.2
+R: 3 4 : 229 : -1.1
+R: 3 5 : 229 : -1.1
+R: 4 0 : 229 : -10.1
+R: 4 1 : 229 : -10.1
+R: 4 2 : 229 : -10.1
+R: 4 3 : 229 : -10.1
+R: 4 4 : 229 : -11.0
+R: 4 5 : 229 : -11.0
+R: 5 0 : 229 : 1.9
+R: 5 1 : 229 : 1.9
+R: 5 2 : 229 : 1.9
+R: 5 3 : 229 : 1.9
+R: 5 4 : 229 : 1.0
+R: 5 5 : 229 : 1.0
+R: 0 0 : 230 : -0.2
+R: 0 1 : 230 : -0.2
+R: 0 2 : 230 : -0.2
+R: 0 3 : 230 : -0.2
+R: 0 4 : 230 : -1.1
+R: 0 5 : 230 : -1.1
+R: 1 0 : 230 : -0.2
+R: 1 1 : 230 : -0.2
+R: 1 2 : 230 : -0.2
+R: 1 3 : 230 : -0.2
+R: 1 4 : 230 : -1.1
+R: 1 5 : 230 : -1.1
+R: 2 0 : 230 : -0.2
+R: 2 1 : 230 : -0.2
+R: 2 2 : 230 : -0.2
+R: 2 3 : 230 : -0.2
+R: 2 4 : 230 : -1.1
+R: 2 5 : 230 : -1.1
+R: 3 0 : 230 : -0.2
+R: 3 1 : 230 : -0.2
+R: 3 2 : 230 : -0.2
+R: 3 3 : 230 : -0.2
+R: 3 4 : 230 : -1.1
+R: 3 5 : 230 : -1.1
+R: 4 0 : 230 : -10.1
+R: 4 1 : 230 : -10.1
+R: 4 2 : 230 : -10.1
+R: 4 3 : 230 : -10.1
+R: 4 4 : 230 : -11.0
+R: 4 5 : 230 : -11.0
+R: 5 0 : 230 : 1.9
+R: 5 1 : 230 : 1.9
+R: 5 2 : 230 : 1.9
+R: 5 3 : 230 : 1.9
+R: 5 4 : 230 : 1.0
+R: 5 5 : 230 : 1.0
+R: 0 0 : 231 : -0.2
+R: 0 1 : 231 : -0.2
+R: 0 2 : 231 : -0.2
+R: 0 3 : 231 : -0.2
+R: 0 4 : 231 : -1.1
+R: 0 5 : 231 : -1.1
+R: 1 0 : 231 : -0.2
+R: 1 1 : 231 : -0.2
+R: 1 2 : 231 : -0.2
+R: 1 3 : 231 : -0.2
+R: 1 4 : 231 : -1.1
+R: 1 5 : 231 : -1.1
+R: 2 0 : 231 : -0.2
+R: 2 1 : 231 : -0.2
+R: 2 2 : 231 : -0.2
+R: 2 3 : 231 : -0.2
+R: 2 4 : 231 : -1.1
+R: 2 5 : 231 : -1.1
+R: 3 0 : 231 : -0.2
+R: 3 1 : 231 : -0.2
+R: 3 2 : 231 : -0.2
+R: 3 3 : 231 : -0.2
+R: 3 4 : 231 : -1.1
+R: 3 5 : 231 : -1.1
+R: 4 0 : 231 : -10.1
+R: 4 1 : 231 : -10.1
+R: 4 2 : 231 : -10.1
+R: 4 3 : 231 : -10.1
+R: 4 4 : 231 : -11.0
+R: 4 5 : 231 : -11.0
+R: 5 0 : 231 : 1.9
+R: 5 1 : 231 : 1.9
+R: 5 2 : 231 : 1.9
+R: 5 3 : 231 : 1.9
+R: 5 4 : 231 : 1.0
+R: 5 5 : 231 : 1.0
+R: 0 0 : 232 : -0.2
+R: 0 1 : 232 : -0.2
+R: 0 2 : 232 : -0.2
+R: 0 3 : 232 : -0.2
+R: 0 4 : 232 : -10.1
+R: 0 5 : 232 : 1.9
+R: 1 0 : 232 : -0.2
+R: 1 1 : 232 : -0.2
+R: 1 2 : 232 : -0.2
+R: 1 3 : 232 : -0.2
+R: 1 4 : 232 : -10.1
+R: 1 5 : 232 : 1.9
+R: 2 0 : 232 : -0.2
+R: 2 1 : 232 : -0.2
+R: 2 2 : 232 : -0.2
+R: 2 3 : 232 : -0.2
+R: 2 4 : 232 : -10.1
+R: 2 5 : 232 : 1.9
+R: 3 0 : 232 : -0.2
+R: 3 1 : 232 : -0.2
+R: 3 2 : 232 : -0.2
+R: 3 3 : 232 : -0.2
+R: 3 4 : 232 : -10.1
+R: 3 5 : 232 : 1.9
+R: 4 0 : 232 : -1.1
+R: 4 1 : 232 : -1.1
+R: 4 2 : 232 : -1.1
+R: 4 3 : 232 : -1.1
+R: 4 4 : 232 : -11.0
+R: 4 5 : 232 : -11.0
+R: 5 0 : 232 : -1.1
+R: 5 1 : 232 : -1.1
+R: 5 2 : 232 : -1.1
+R: 5 3 : 232 : -1.1
+R: 5 4 : 232 : 1.0
+R: 5 5 : 232 : 1.0
+R: 0 0 : 233 : -0.2
+R: 0 1 : 233 : -0.2
+R: 0 2 : 233 : -0.2
+R: 0 3 : 233 : -0.2
+R: 0 4 : 233 : -10.1
+R: 0 5 : 233 : 1.9
+R: 1 0 : 233 : -0.2
+R: 1 1 : 233 : -0.2
+R: 1 2 : 233 : -0.2
+R: 1 3 : 233 : -0.2
+R: 1 4 : 233 : -10.1
+R: 1 5 : 233 : 1.9
+R: 2 0 : 233 : -0.2
+R: 2 1 : 233 : -0.2
+R: 2 2 : 233 : -0.2
+R: 2 3 : 233 : -0.2
+R: 2 4 : 233 : -10.1
+R: 2 5 : 233 : 1.9
+R: 3 0 : 233 : -0.2
+R: 3 1 : 233 : -0.2
+R: 3 2 : 233 : -0.2
+R: 3 3 : 233 : -0.2
+R: 3 4 : 233 : -10.1
+R: 3 5 : 233 : 1.9
+R: 4 0 : 233 : -1.1
+R: 4 1 : 233 : -1.1
+R: 4 2 : 233 : -1.1
+R: 4 3 : 233 : -1.1
+R: 4 4 : 233 : -11.0
+R: 4 5 : 233 : -11.0
+R: 5 0 : 233 : -1.1
+R: 5 1 : 233 : -1.1
+R: 5 2 : 233 : -1.1
+R: 5 3 : 233 : -1.1
+R: 5 4 : 233 : 1.0
+R: 5 5 : 233 : 1.0
+R: 0 0 : 234 : -0.2
+R: 0 1 : 234 : -0.2
+R: 0 2 : 234 : -0.2
+R: 0 3 : 234 : -0.2
+R: 0 4 : 234 : -10.1
+R: 0 5 : 234 : 1.9
+R: 1 0 : 234 : -0.2
+R: 1 1 : 234 : -0.2
+R: 1 2 : 234 : -0.2
+R: 1 3 : 234 : -0.2
+R: 1 4 : 234 : -10.1
+R: 1 5 : 234 : 1.9
+R: 2 0 : 234 : -0.2
+R: 2 1 : 234 : -0.2
+R: 2 2 : 234 : -0.2
+R: 2 3 : 234 : -0.2
+R: 2 4 : 234 : -10.1
+R: 2 5 : 234 : 1.9
+R: 3 0 : 234 : -0.2
+R: 3 1 : 234 : -0.2
+R: 3 2 : 234 : -0.2
+R: 3 3 : 234 : -0.2
+R: 3 4 : 234 : -10.1
+R: 3 5 : 234 : 1.9
+R: 4 0 : 234 : -1.1
+R: 4 1 : 234 : -1.1
+R: 4 2 : 234 : -1.1
+R: 4 3 : 234 : -1.1
+R: 4 4 : 234 : -11.0
+R: 4 5 : 234 : -11.0
+R: 5 0 : 234 : -1.1
+R: 5 1 : 234 : -1.1
+R: 5 2 : 234 : -1.1
+R: 5 3 : 234 : -1.1
+R: 5 4 : 234 : 1.0
+R: 5 5 : 234 : 1.0
+R: 0 0 : 235 : -0.2
+R: 0 1 : 235 : -0.2
+R: 0 2 : 235 : -0.2
+R: 0 3 : 235 : -0.2
+R: 0 4 : 235 : -10.1
+R: 0 5 : 235 : 1.9
+R: 1 0 : 235 : -0.2
+R: 1 1 : 235 : -0.2
+R: 1 2 : 235 : -0.2
+R: 1 3 : 235 : -0.2
+R: 1 4 : 235 : -10.1
+R: 1 5 : 235 : 1.9
+R: 2 0 : 235 : -0.2
+R: 2 1 : 235 : -0.2
+R: 2 2 : 235 : -0.2
+R: 2 3 : 235 : -0.2
+R: 2 4 : 235 : -10.1
+R: 2 5 : 235 : 1.9
+R: 3 0 : 235 : -0.2
+R: 3 1 : 235 : -0.2
+R: 3 2 : 235 : -0.2
+R: 3 3 : 235 : -0.2
+R: 3 4 : 235 : -10.1
+R: 3 5 : 235 : 1.9
+R: 4 0 : 235 : -1.1
+R: 4 1 : 235 : -1.1
+R: 4 2 : 235 : -1.1
+R: 4 3 : 235 : -1.1
+R: 4 4 : 235 : -11.0
+R: 4 5 : 235 : -11.0
+R: 5 0 : 235 : -1.1
+R: 5 1 : 235 : -1.1
+R: 5 2 : 235 : -1.1
+R: 5 3 : 235 : -1.1
+R: 5 4 : 235 : 1.0
+R: 5 5 : 235 : 1.0
+R: 0 0 : 236 : -0.2
+R: 0 1 : 236 : -0.2
+R: 0 2 : 236 : -0.2
+R: 0 3 : 236 : -0.2
+R: 0 4 : 236 : -1.1
+R: 0 5 : 236 : -1.1
+R: 1 0 : 236 : -0.2
+R: 1 1 : 236 : -0.2
+R: 1 2 : 236 : -0.2
+R: 1 3 : 236 : -0.2
+R: 1 4 : 236 : -1.1
+R: 1 5 : 236 : -1.1
+R: 2 0 : 236 : -0.2
+R: 2 1 : 236 : -0.2
+R: 2 2 : 236 : -0.2
+R: 2 3 : 236 : -0.2
+R: 2 4 : 236 : -1.1
+R: 2 5 : 236 : -1.1
+R: 3 0 : 236 : -0.2
+R: 3 1 : 236 : -0.2
+R: 3 2 : 236 : -0.2
+R: 3 3 : 236 : -0.2
+R: 3 4 : 236 : -1.1
+R: 3 5 : 236 : -1.1
+R: 4 0 : 236 : -1.1
+R: 4 1 : 236 : -1.1
+R: 4 2 : 236 : -1.1
+R: 4 3 : 236 : -1.1
+R: 4 4 : 236 : -2.0
+R: 4 5 : 236 : -2.0
+R: 5 0 : 236 : -1.1
+R: 5 1 : 236 : -1.1
+R: 5 2 : 236 : -1.1
+R: 5 3 : 236 : -1.1
+R: 5 4 : 236 : -2.0
+R: 5 5 : 236 : -2.0
+R: 0 0 : 237 : -0.2
+R: 0 1 : 237 : -0.2
+R: 0 2 : 237 : -0.2
+R: 0 3 : 237 : -0.2
+R: 0 4 : 237 : -1.1
+R: 0 5 : 237 : -1.1
+R: 1 0 : 237 : -0.2
+R: 1 1 : 237 : -0.2
+R: 1 2 : 237 : -0.2
+R: 1 3 : 237 : -0.2
+R: 1 4 : 237 : -1.1
+R: 1 5 : 237 : -1.1
+R: 2 0 : 237 : -0.2
+R: 2 1 : 237 : -0.2
+R: 2 2 : 237 : -0.2
+R: 2 3 : 237 : -0.2
+R: 2 4 : 237 : -1.1
+R: 2 5 : 237 : -1.1
+R: 3 0 : 237 : -0.2
+R: 3 1 : 237 : -0.2
+R: 3 2 : 237 : -0.2
+R: 3 3 : 237 : -0.2
+R: 3 4 : 237 : -1.1
+R: 3 5 : 237 : -1.1
+R: 4 0 : 237 : -1.1
+R: 4 1 : 237 : -1.1
+R: 4 2 : 237 : -1.1
+R: 4 3 : 237 : -1.1
+R: 4 4 : 237 : -2.0
+R: 4 5 : 237 : -2.0
+R: 5 0 : 237 : -1.1
+R: 5 1 : 237 : -1.1
+R: 5 2 : 237 : -1.1
+R: 5 3 : 237 : -1.1
+R: 5 4 : 237 : -2.0
+R: 5 5 : 237 : -2.0
+R: 0 0 : 238 : -0.2
+R: 0 1 : 238 : -0.2
+R: 0 2 : 238 : -0.2
+R: 0 3 : 238 : -0.2
+R: 0 4 : 238 : -1.1
+R: 0 5 : 238 : -1.1
+R: 1 0 : 238 : -0.2
+R: 1 1 : 238 : -0.2
+R: 1 2 : 238 : -0.2
+R: 1 3 : 238 : -0.2
+R: 1 4 : 238 : -1.1
+R: 1 5 : 238 : -1.1
+R: 2 0 : 238 : -0.2
+R: 2 1 : 238 : -0.2
+R: 2 2 : 238 : -0.2
+R: 2 3 : 238 : -0.2
+R: 2 4 : 238 : -1.1
+R: 2 5 : 238 : -1.1
+R: 3 0 : 238 : -0.2
+R: 3 1 : 238 : -0.2
+R: 3 2 : 238 : -0.2
+R: 3 3 : 238 : -0.2
+R: 3 4 : 238 : -1.1
+R: 3 5 : 238 : -1.1
+R: 4 0 : 238 : -1.1
+R: 4 1 : 238 : -1.1
+R: 4 2 : 238 : -1.1
+R: 4 3 : 238 : -1.1
+R: 4 4 : 238 : -2.0
+R: 4 5 : 238 : -2.0
+R: 5 0 : 238 : -1.1
+R: 5 1 : 238 : -1.1
+R: 5 2 : 238 : -1.1
+R: 5 3 : 238 : -1.1
+R: 5 4 : 238 : -2.0
+R: 5 5 : 238 : -2.0
+R: 0 0 : 239 : -0.2
+R: 0 1 : 239 : -0.2
+R: 0 2 : 239 : -0.2
+R: 0 3 : 239 : -0.2
+R: 0 4 : 239 : -1.1
+R: 0 5 : 239 : -1.1
+R: 1 0 : 239 : -0.2
+R: 1 1 : 239 : -0.2
+R: 1 2 : 239 : -0.2
+R: 1 3 : 239 : -0.2
+R: 1 4 : 239 : -1.1
+R: 1 5 : 239 : -1.1
+R: 2 0 : 239 : -0.2
+R: 2 1 : 239 : -0.2
+R: 2 2 : 239 : -0.2
+R: 2 3 : 239 : -0.2
+R: 2 4 : 239 : -1.1
+R: 2 5 : 239 : -1.1
+R: 3 0 : 239 : -0.2
+R: 3 1 : 239 : -0.2
+R: 3 2 : 239 : -0.2
+R: 3 3 : 239 : -0.2
+R: 3 4 : 239 : -1.1
+R: 3 5 : 239 : -1.1
+R: 4 0 : 239 : -1.1
+R: 4 1 : 239 : -1.1
+R: 4 2 : 239 : -1.1
+R: 4 3 : 239 : -1.1
+R: 4 4 : 239 : -2.0
+R: 4 5 : 239 : -2.0
+R: 5 0 : 239 : -1.1
+R: 5 1 : 239 : -1.1
+R: 5 2 : 239 : -1.1
+R: 5 3 : 239 : -1.1
+R: 5 4 : 239 : -2.0
+R: 5 5 : 239 : -2.0
+R: 0 0 : 240 : -0.2
+R: 0 1 : 240 : -0.2
+R: 0 2 : 240 : -0.2
+R: 0 3 : 240 : -0.2
+R: 0 4 : 240 : -10.1
+R: 0 5 : 240 : 1.9
+R: 1 0 : 240 : -0.2
+R: 1 1 : 240 : -0.2
+R: 1 2 : 240 : -0.2
+R: 1 3 : 240 : -0.2
+R: 1 4 : 240 : -10.1
+R: 1 5 : 240 : 1.9
+R: 2 0 : 240 : -0.2
+R: 2 1 : 240 : -0.2
+R: 2 2 : 240 : -0.2
+R: 2 3 : 240 : -0.2
+R: 2 4 : 240 : -10.1
+R: 2 5 : 240 : 1.9
+R: 3 0 : 240 : -0.2
+R: 3 1 : 240 : -0.2
+R: 3 2 : 240 : -0.2
+R: 3 3 : 240 : -0.2
+R: 3 4 : 240 : -10.1
+R: 3 5 : 240 : 1.9
+R: 4 0 : 240 : -10.1
+R: 4 1 : 240 : -10.1
+R: 4 2 : 240 : -10.1
+R: 4 3 : 240 : -10.1
+R: 4 4 : 240 : 6.0
+R: 5 0 : 240 : 1.9
+R: 5 1 : 240 : 1.9
+R: 5 2 : 240 : 1.9
+R: 5 3 : 240 : 1.9
+R: 5 5 : 240 : 1.0
+R: 0 0 : 241 : -0.2
+R: 0 1 : 241 : -0.2
+R: 0 2 : 241 : -0.2
+R: 0 3 : 241 : -0.2
+R: 0 4 : 241 : -10.1
+R: 0 5 : 241 : 1.9
+R: 1 0 : 241 : -0.2
+R: 1 1 : 241 : -0.2
+R: 1 2 : 241 : -0.2
+R: 1 3 : 241 : -0.2
+R: 1 4 : 241 : -10.1
+R: 1 5 : 241 : 1.9
+R: 2 0 : 241 : -0.2
+R: 2 1 : 241 : -0.2
+R: 2 2 : 241 : -0.2
+R: 2 3 : 241 : -0.2
+R: 2 4 : 241 : -10.1
+R: 2 5 : 241 : 1.9
+R: 3 0 : 241 : -0.2
+R: 3 1 : 241 : -0.2
+R: 3 2 : 241 : -0.2
+R: 3 3 : 241 : -0.2
+R: 3 4 : 241 : -10.1
+R: 3 5 : 241 : 1.9
+R: 4 0 : 241 : -10.1
+R: 4 1 : 241 : -10.1
+R: 4 2 : 241 : -10.1
+R: 4 3 : 241 : -10.1
+R: 4 4 : 241 : 6.0
+R: 5 0 : 241 : 1.9
+R: 5 1 : 241 : 1.9
+R: 5 2 : 241 : 1.9
+R: 5 3 : 241 : 1.9
+R: 5 5 : 241 : 1.0
+R: 0 0 : 242 : -0.2
+R: 0 1 : 242 : -0.2
+R: 0 2 : 242 : -0.2
+R: 0 3 : 242 : -0.2
+R: 0 4 : 242 : -10.1
+R: 0 5 : 242 : 1.9
+R: 1 0 : 242 : -0.2
+R: 1 1 : 242 : -0.2
+R: 1 2 : 242 : -0.2
+R: 1 3 : 242 : -0.2
+R: 1 4 : 242 : -10.1
+R: 1 5 : 242 : 1.9
+R: 2 0 : 242 : -0.2
+R: 2 1 : 242 : -0.2
+R: 2 2 : 242 : -0.2
+R: 2 3 : 242 : -0.2
+R: 2 4 : 242 : -10.1
+R: 2 5 : 242 : 1.9
+R: 3 0 : 242 : -0.2
+R: 3 1 : 242 : -0.2
+R: 3 2 : 242 : -0.2
+R: 3 3 : 242 : -0.2
+R: 3 4 : 242 : -10.1
+R: 3 5 : 242 : 1.9
+R: 4 0 : 242 : -10.1
+R: 4 1 : 242 : -10.1
+R: 4 2 : 242 : -10.1
+R: 4 3 : 242 : -10.1
+R: 4 4 : 242 : 6.0
+R: 5 0 : 242 : 1.9
+R: 5 1 : 242 : 1.9
+R: 5 2 : 242 : 1.9
+R: 5 3 : 242 : 1.9
+R: 5 5 : 242 : 1.0
+R: 0 0 : 243 : -0.2
+R: 0 1 : 243 : -0.2
+R: 0 2 : 243 : -0.2
+R: 0 3 : 243 : -0.2
+R: 0 4 : 243 : -10.1
+R: 0 5 : 243 : 1.9
+R: 1 0 : 243 : -0.2
+R: 1 1 : 243 : -0.2
+R: 1 2 : 243 : -0.2
+R: 1 3 : 243 : -0.2
+R: 1 4 : 243 : -10.1
+R: 1 5 : 243 : 1.9
+R: 2 0 : 243 : -0.2
+R: 2 1 : 243 : -0.2
+R: 2 2 : 243 : -0.2
+R: 2 3 : 243 : -0.2
+R: 2 4 : 243 : -10.1
+R: 2 5 : 243 : 1.9
+R: 3 0 : 243 : -0.2
+R: 3 1 : 243 : -0.2
+R: 3 2 : 243 : -0.2
+R: 3 3 : 243 : -0.2
+R: 3 4 : 243 : -10.1
+R: 3 5 : 243 : 1.9
+R: 4 0 : 243 : -10.1
+R: 4 1 : 243 : -10.1
+R: 4 2 : 243 : -10.1
+R: 4 3 : 243 : -10.1
+R: 4 4 : 243 : 6.0
+R: 5 0 : 243 : 1.9
+R: 5 1 : 243 : 1.9
+R: 5 2 : 243 : 1.9
+R: 5 3 : 243 : 1.9
+R: 5 5 : 243 : 1.0
+R: 0 0 : 244 : -0.2
+R: 0 1 : 244 : -0.2
+R: 0 2 : 244 : -0.2
+R: 0 3 : 244 : -0.2
+R: 0 4 : 244 : -10.1
+R: 0 5 : 244 : 1.9
+R: 1 0 : 244 : -0.2
+R: 1 1 : 244 : -0.2
+R: 1 2 : 244 : -0.2
+R: 1 3 : 244 : -0.2
+R: 1 4 : 244 : -10.1
+R: 1 5 : 244 : 1.9
+R: 2 0 : 244 : -0.2
+R: 2 1 : 244 : -0.2
+R: 2 2 : 244 : -0.2
+R: 2 3 : 244 : -0.2
+R: 2 4 : 244 : -10.1
+R: 2 5 : 244 : 1.9
+R: 3 0 : 244 : -0.2
+R: 3 1 : 244 : -0.2
+R: 3 2 : 244 : -0.2
+R: 3 3 : 244 : -0.2
+R: 3 4 : 244 : -10.1
+R: 3 5 : 244 : 1.9
+R: 4 0 : 244 : -10.1
+R: 4 1 : 244 : -10.1
+R: 4 2 : 244 : -10.1
+R: 4 3 : 244 : -10.1
+R: 4 4 : 244 : 6.0
+R: 5 0 : 244 : 1.9
+R: 5 1 : 244 : 1.9
+R: 5 2 : 244 : 1.9
+R: 5 3 : 244 : 1.9
+R: 5 5 : 244 : 1.0
+R: 0 0 : 245 : -0.2
+R: 0 1 : 245 : -0.2
+R: 0 2 : 245 : -0.2
+R: 0 3 : 245 : -0.2
+R: 0 4 : 245 : -10.1
+R: 0 5 : 245 : 1.9
+R: 1 0 : 245 : -0.2
+R: 1 1 : 245 : -0.2
+R: 1 2 : 245 : -0.2
+R: 1 3 : 245 : -0.2
+R: 1 4 : 245 : -10.1
+R: 1 5 : 245 : 1.9
+R: 2 0 : 245 : -0.2
+R: 2 1 : 245 : -0.2
+R: 2 2 : 245 : -0.2
+R: 2 3 : 245 : -0.2
+R: 2 4 : 245 : -10.1
+R: 2 5 : 245 : 1.9
+R: 3 0 : 245 : -0.2
+R: 3 1 : 245 : -0.2
+R: 3 2 : 245 : -0.2
+R: 3 3 : 245 : -0.2
+R: 3 4 : 245 : -10.1
+R: 3 5 : 245 : 1.9
+R: 4 0 : 245 : -10.1
+R: 4 1 : 245 : -10.1
+R: 4 2 : 245 : -10.1
+R: 4 3 : 245 : -10.1
+R: 4 4 : 245 : 6.0
+R: 5 0 : 245 : 1.9
+R: 5 1 : 245 : 1.9
+R: 5 2 : 245 : 1.9
+R: 5 3 : 245 : 1.9
+R: 5 5 : 245 : 1.0
+R: 0 0 : 246 : -0.2
+R: 0 1 : 246 : -0.2
+R: 0 2 : 246 : -0.2
+R: 0 3 : 246 : -0.2
+R: 0 4 : 246 : -10.1
+R: 0 5 : 246 : 1.9
+R: 1 0 : 246 : -0.2
+R: 1 1 : 246 : -0.2
+R: 1 2 : 246 : -0.2
+R: 1 3 : 246 : -0.2
+R: 1 4 : 246 : -10.1
+R: 1 5 : 246 : 1.9
+R: 2 0 : 246 : -0.2
+R: 2 1 : 246 : -0.2
+R: 2 2 : 246 : -0.2
+R: 2 3 : 246 : -0.2
+R: 2 4 : 246 : -10.1
+R: 2 5 : 246 : 1.9
+R: 3 0 : 246 : -0.2
+R: 3 1 : 246 : -0.2
+R: 3 2 : 246 : -0.2
+R: 3 3 : 246 : -0.2
+R: 3 4 : 246 : -10.1
+R: 3 5 : 246 : 1.9
+R: 4 0 : 246 : -10.1
+R: 4 1 : 246 : -10.1
+R: 4 2 : 246 : -10.1
+R: 4 3 : 246 : -10.1
+R: 4 4 : 246 : 6.0
+R: 5 0 : 246 : 1.9
+R: 5 1 : 246 : 1.9
+R: 5 2 : 246 : 1.9
+R: 5 3 : 246 : 1.9
+R: 5 5 : 246 : 1.0
+R: 0 0 : 247 : -0.2
+R: 0 1 : 247 : -0.2
+R: 0 2 : 247 : -0.2
+R: 0 3 : 247 : -0.2
+R: 0 4 : 247 : -10.1
+R: 0 5 : 247 : 1.9
+R: 1 0 : 247 : -0.2
+R: 1 1 : 247 : -0.2
+R: 1 2 : 247 : -0.2
+R: 1 3 : 247 : -0.2
+R: 1 4 : 247 : -10.1
+R: 1 5 : 247 : 1.9
+R: 2 0 : 247 : -0.2
+R: 2 1 : 247 : -0.2
+R: 2 2 : 247 : -0.2
+R: 2 3 : 247 : -0.2
+R: 2 4 : 247 : -10.1
+R: 2 5 : 247 : 1.9
+R: 3 0 : 247 : -0.2
+R: 3 1 : 247 : -0.2
+R: 3 2 : 247 : -0.2
+R: 3 3 : 247 : -0.2
+R: 3 4 : 247 : -10.1
+R: 3 5 : 247 : 1.9
+R: 4 0 : 247 : -10.1
+R: 4 1 : 247 : -10.1
+R: 4 2 : 247 : -10.1
+R: 4 3 : 247 : -10.1
+R: 4 4 : 247 : 6.0
+R: 5 0 : 247 : 1.9
+R: 5 1 : 247 : 1.9
+R: 5 2 : 247 : 1.9
+R: 5 3 : 247 : 1.9
+R: 5 5 : 247 : 1.0
+R: 0 0 : 248 : -0.2
+R: 0 1 : 248 : -0.2
+R: 0 2 : 248 : -0.2
+R: 0 3 : 248 : -0.2
+R: 0 4 : 248 : -1.1
+R: 0 5 : 248 : -1.1
+R: 1 0 : 248 : -0.2
+R: 1 1 : 248 : -0.2
+R: 1 2 : 248 : -0.2
+R: 1 3 : 248 : -0.2
+R: 1 4 : 248 : -1.1
+R: 1 5 : 248 : -1.1
+R: 2 0 : 248 : -0.2
+R: 2 1 : 248 : -0.2
+R: 2 2 : 248 : -0.2
+R: 2 3 : 248 : -0.2
+R: 2 4 : 248 : -1.1
+R: 2 5 : 248 : -1.1
+R: 3 0 : 248 : -0.2
+R: 3 1 : 248 : -0.2
+R: 3 2 : 248 : -0.2
+R: 3 3 : 248 : -0.2
+R: 3 4 : 248 : -1.1
+R: 3 5 : 248 : -1.1
+R: 4 0 : 248 : -1.1
+R: 4 1 : 248 : -1.1
+R: 4 2 : 248 : -1.1
+R: 4 3 : 248 : -1.1
+R: 4 4 : 248 : -2.0
+R: 4 5 : 248 : -2.0
+R: 5 0 : 248 : -1.1
+R: 5 1 : 248 : -1.1
+R: 5 2 : 248 : -1.1
+R: 5 3 : 248 : -1.1
+R: 5 4 : 248 : -2.0
+R: 5 5 : 248 : -2.0
+R: 0 0 : 249 : -0.2
+R: 0 1 : 249 : -0.2
+R: 0 2 : 249 : -0.2
+R: 0 3 : 249 : -0.2
+R: 0 4 : 249 : -1.1
+R: 0 5 : 249 : -1.1
+R: 1 0 : 249 : -0.2
+R: 1 1 : 249 : -0.2
+R: 1 2 : 249 : -0.2
+R: 1 3 : 249 : -0.2
+R: 1 4 : 249 : -1.1
+R: 1 5 : 249 : -1.1
+R: 2 0 : 249 : -0.2
+R: 2 1 : 249 : -0.2
+R: 2 2 : 249 : -0.2
+R: 2 3 : 249 : -0.2
+R: 2 4 : 249 : -1.1
+R: 2 5 : 249 : -1.1
+R: 3 0 : 249 : -0.2
+R: 3 1 : 249 : -0.2
+R: 3 2 : 249 : -0.2
+R: 3 3 : 249 : -0.2
+R: 3 4 : 249 : -1.1
+R: 3 5 : 249 : -1.1
+R: 4 0 : 249 : -1.1
+R: 4 1 : 249 : -1.1
+R: 4 2 : 249 : -1.1
+R: 4 3 : 249 : -1.1
+R: 4 4 : 249 : -2.0
+R: 4 5 : 249 : -2.0
+R: 5 0 : 249 : -1.1
+R: 5 1 : 249 : -1.1
+R: 5 2 : 249 : -1.1
+R: 5 3 : 249 : -1.1
+R: 5 4 : 249 : -2.0
+R: 5 5 : 249 : -2.0
+R: 0 0 : 250 : -0.2
+R: 0 1 : 250 : -0.2
+R: 0 2 : 250 : -0.2
+R: 0 3 : 250 : -0.2
+R: 0 4 : 250 : -1.1
+R: 0 5 : 250 : -1.1
+R: 1 0 : 250 : -0.2
+R: 1 1 : 250 : -0.2
+R: 1 2 : 250 : -0.2
+R: 1 3 : 250 : -0.2
+R: 1 4 : 250 : -1.1
+R: 1 5 : 250 : -1.1
+R: 2 0 : 250 : -0.2
+R: 2 1 : 250 : -0.2
+R: 2 2 : 250 : -0.2
+R: 2 3 : 250 : -0.2
+R: 2 4 : 250 : -1.1
+R: 2 5 : 250 : -1.1
+R: 3 0 : 250 : -0.2
+R: 3 1 : 250 : -0.2
+R: 3 2 : 250 : -0.2
+R: 3 3 : 250 : -0.2
+R: 3 4 : 250 : -1.1
+R: 3 5 : 250 : -1.1
+R: 4 0 : 250 : -1.1
+R: 4 1 : 250 : -1.1
+R: 4 2 : 250 : -1.1
+R: 4 3 : 250 : -1.1
+R: 4 4 : 250 : -2.0
+R: 4 5 : 250 : -2.0
+R: 5 0 : 250 : -1.1
+R: 5 1 : 250 : -1.1
+R: 5 2 : 250 : -1.1
+R: 5 3 : 250 : -1.1
+R: 5 4 : 250 : -2.0
+R: 5 5 : 250 : -2.0
+R: 0 0 : 251 : -0.2
+R: 0 1 : 251 : -0.2
+R: 0 2 : 251 : -0.2
+R: 0 3 : 251 : -0.2
+R: 0 4 : 251 : -1.1
+R: 0 5 : 251 : -1.1
+R: 1 0 : 251 : -0.2
+R: 1 1 : 251 : -0.2
+R: 1 2 : 251 : -0.2
+R: 1 3 : 251 : -0.2
+R: 1 4 : 251 : -1.1
+R: 1 5 : 251 : -1.1
+R: 2 0 : 251 : -0.2
+R: 2 1 : 251 : -0.2
+R: 2 2 : 251 : -0.2
+R: 2 3 : 251 : -0.2
+R: 2 4 : 251 : -1.1
+R: 2 5 : 251 : -1.1
+R: 3 0 : 251 : -0.2
+R: 3 1 : 251 : -0.2
+R: 3 2 : 251 : -0.2
+R: 3 3 : 251 : -0.2
+R: 3 4 : 251 : -1.1
+R: 3 5 : 251 : -1.1
+R: 4 0 : 251 : -1.1
+R: 4 1 : 251 : -1.1
+R: 4 2 : 251 : -1.1
+R: 4 3 : 251 : -1.1
+R: 4 4 : 251 : -2.0
+R: 4 5 : 251 : -2.0
+R: 5 0 : 251 : -1.1
+R: 5 1 : 251 : -1.1
+R: 5 2 : 251 : -1.1
+R: 5 3 : 251 : -1.1
+R: 5 4 : 251 : -2.0
+R: 5 5 : 251 : -2.0
+R: 0 0 : 252 : -0.2
+R: 0 1 : 252 : -0.2
+R: 0 2 : 252 : -0.2
+R: 0 3 : 252 : -0.2
+R: 0 4 : 252 : -1.1
+R: 0 5 : 252 : -1.1
+R: 1 0 : 252 : -0.2
+R: 1 1 : 252 : -0.2
+R: 1 2 : 252 : -0.2
+R: 1 3 : 252 : -0.2
+R: 1 4 : 252 : -1.1
+R: 1 5 : 252 : -1.1
+R: 2 0 : 252 : -0.2
+R: 2 1 : 252 : -0.2
+R: 2 2 : 252 : -0.2
+R: 2 3 : 252 : -0.2
+R: 2 4 : 252 : -1.1
+R: 2 5 : 252 : -1.1
+R: 3 0 : 252 : -0.2
+R: 3 1 : 252 : -0.2
+R: 3 2 : 252 : -0.2
+R: 3 3 : 252 : -0.2
+R: 3 4 : 252 : -1.1
+R: 3 5 : 252 : -1.1
+R: 4 0 : 252 : -1.1
+R: 4 1 : 252 : -1.1
+R: 4 2 : 252 : -1.1
+R: 4 3 : 252 : -1.1
+R: 4 4 : 252 : -2.0
+R: 4 5 : 252 : -2.0
+R: 5 0 : 252 : -1.1
+R: 5 1 : 252 : -1.1
+R: 5 2 : 252 : -1.1
+R: 5 3 : 252 : -1.1
+R: 5 4 : 252 : -2.0
+R: 5 5 : 252 : -2.0
+R: 0 0 : 253 : -0.2
+R: 0 1 : 253 : -0.2
+R: 0 2 : 253 : -0.2
+R: 0 3 : 253 : -0.2
+R: 0 4 : 253 : -1.1
+R: 0 5 : 253 : -1.1
+R: 1 0 : 253 : -0.2
+R: 1 1 : 253 : -0.2
+R: 1 2 : 253 : -0.2
+R: 1 3 : 253 : -0.2
+R: 1 4 : 253 : -1.1
+R: 1 5 : 253 : -1.1
+R: 2 0 : 253 : -0.2
+R: 2 1 : 253 : -0.2
+R: 2 2 : 253 : -0.2
+R: 2 3 : 253 : -0.2
+R: 2 4 : 253 : -1.1
+R: 2 5 : 253 : -1.1
+R: 3 0 : 253 : -0.2
+R: 3 1 : 253 : -0.2
+R: 3 2 : 253 : -0.2
+R: 3 3 : 253 : -0.2
+R: 3 4 : 253 : -1.1
+R: 3 5 : 253 : -1.1
+R: 4 0 : 253 : -1.1
+R: 4 1 : 253 : -1.1
+R: 4 2 : 253 : -1.1
+R: 4 3 : 253 : -1.1
+R: 4 4 : 253 : -2.0
+R: 4 5 : 253 : -2.0
+R: 5 0 : 253 : -1.1
+R: 5 1 : 253 : -1.1
+R: 5 2 : 253 : -1.1
+R: 5 3 : 253 : -1.1
+R: 5 4 : 253 : -2.0
+R: 5 5 : 253 : -2.0
+R: 0 0 : 254 : -0.2
+R: 0 1 : 254 : -0.2
+R: 0 2 : 254 : -0.2
+R: 0 3 : 254 : -0.2
+R: 0 4 : 254 : -1.1
+R: 0 5 : 254 : -1.1
+R: 1 0 : 254 : -0.2
+R: 1 1 : 254 : -0.2
+R: 1 2 : 254 : -0.2
+R: 1 3 : 254 : -0.2
+R: 1 4 : 254 : -1.1
+R: 1 5 : 254 : -1.1
+R: 2 0 : 254 : -0.2
+R: 2 1 : 254 : -0.2
+R: 2 2 : 254 : -0.2
+R: 2 3 : 254 : -0.2
+R: 2 4 : 254 : -1.1
+R: 2 5 : 254 : -1.1
+R: 3 0 : 254 : -0.2
+R: 3 1 : 254 : -0.2
+R: 3 2 : 254 : -0.2
+R: 3 3 : 254 : -0.2
+R: 3 4 : 254 : -1.1
+R: 3 5 : 254 : -1.1
+R: 4 0 : 254 : -1.1
+R: 4 1 : 254 : -1.1
+R: 4 2 : 254 : -1.1
+R: 4 3 : 254 : -1.1
+R: 4 4 : 254 : -2.0
+R: 4 5 : 254 : -2.0
+R: 5 0 : 254 : -1.1
+R: 5 1 : 254 : -1.1
+R: 5 2 : 254 : -1.1
+R: 5 3 : 254 : -1.1
+R: 5 4 : 254 : -2.0
+R: 5 5 : 254 : -2.0
+R: 0 0 : 255 : -0.2
+R: 0 1 : 255 : -0.2
+R: 0 2 : 255 : -0.2
+R: 0 3 : 255 : -0.2
+R: 0 4 : 255 : -1.1
+R: 0 5 : 255 : -1.1
+R: 1 0 : 255 : -0.2
+R: 1 1 : 255 : -0.2
+R: 1 2 : 255 : -0.2
+R: 1 3 : 255 : -0.2
+R: 1 4 : 255 : -1.1
+R: 1 5 : 255 : -1.1
+R: 2 0 : 255 : -0.2
+R: 2 1 : 255 : -0.2
+R: 2 2 : 255 : -0.2
+R: 2 3 : 255 : -0.2
+R: 2 4 : 255 : -1.1
+R: 2 5 : 255 : -1.1
+R: 3 0 : 255 : -0.2
+R: 3 1 : 255 : -0.2
+R: 3 2 : 255 : -0.2
+R: 3 3 : 255 : -0.2
+R: 3 4 : 255 : -1.1
+R: 3 5 : 255 : -1.1
+R: 4 0 : 255 : -1.1
+R: 4 1 : 255 : -1.1
+R: 4 2 : 255 : -1.1
+R: 4 3 : 255 : -1.1
+R: 4 4 : 255 : -2.0
+R: 4 5 : 255 : -2.0
+R: 5 0 : 255 : -1.1
+R: 5 1 : 255 : -1.1
+R: 5 2 : 255 : -1.1
+R: 5 3 : 255 : -1.1
+R: 5 4 : 255 : -2.0
+R: 5 5 : 255 : -2.0
diff --git a/code/src/problem_examples/dpomdp/Mars_light.dpomdp b/code/src/problem_examples/dpomdp/Mars_light.dpomdp
new file mode 100644
index 0000000000000000000000000000000000000000..344c768a22f0793d16eb9aaa63eb0ff88f64017d
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/Mars_light.dpomdp
@@ -0,0 +1,34570 @@
+agents: 2
+discount: 1
+states: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 
+actions:
+0 1 2 3 4 5 
+0 1 2 3 4 5 
+observations:
+0 1 2 3 4 5 6 7 
+0 1 2 3 4 5 6 7 
+start: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+T: 5 5 : 255 : 0 : 1
+T: 5 5 : 254 : 254 : 1
+T: 5 5 : 253 : 253 : 1
+T: 5 5 : 252 : 252 : 1
+T: 5 5 : 251 : 251 : 1
+T: 5 5 : 250 : 250 : 1
+T: 5 5 : 249 : 249 : 1
+T: 5 5 : 248 : 248 : 1
+T: 5 5 : 247 : 0 : 1
+T: 5 5 : 246 : 254 : 1
+T: 5 5 : 245 : 253 : 1
+T: 5 5 : 244 : 252 : 1
+T: 5 5 : 243 : 251 : 1
+T: 5 5 : 242 : 250 : 1
+T: 5 5 : 241 : 249 : 1
+T: 5 5 : 240 : 248 : 1
+T: 5 5 : 239 : 0 : 1
+T: 5 5 : 238 : 238 : 1
+T: 5 5 : 237 : 237 : 1
+T: 5 5 : 236 : 236 : 1
+T: 5 5 : 235 : 0 : 1
+T: 5 5 : 234 : 238 : 1
+T: 5 5 : 233 : 237 : 1
+T: 5 5 : 232 : 236 : 1
+T: 5 5 : 231 : 0 : 1
+T: 5 5 : 230 : 238 : 1
+T: 5 5 : 229 : 237 : 1
+T: 5 5 : 228 : 236 : 1
+T: 5 5 : 227 : 0 : 1
+T: 5 5 : 226 : 238 : 1
+T: 5 5 : 225 : 237 : 1
+T: 5 5 : 224 : 236 : 1
+T: 5 5 : 223 : 0 : 1
+T: 5 5 : 222 : 222 : 1
+T: 5 5 : 221 : 0 : 1
+T: 5 5 : 220 : 222 : 1
+T: 5 5 : 219 : 219 : 1
+T: 5 5 : 218 : 218 : 1
+T: 5 5 : 217 : 219 : 1
+T: 5 5 : 216 : 218 : 1
+T: 5 5 : 215 : 0 : 1
+T: 5 5 : 214 : 222 : 1
+T: 5 5 : 213 : 0 : 1
+T: 5 5 : 212 : 222 : 1
+T: 5 5 : 211 : 219 : 1
+T: 5 5 : 210 : 218 : 1
+T: 5 5 : 209 : 219 : 1
+T: 5 5 : 208 : 218 : 1
+T: 5 5 : 207 : 0 : 1
+T: 5 5 : 206 : 0 : 1
+T: 5 5 : 205 : 205 : 1
+T: 5 5 : 204 : 205 : 1
+T: 5 5 : 203 : 203 : 1
+T: 5 5 : 202 : 203 : 1
+T: 5 5 : 201 : 201 : 1
+T: 5 5 : 200 : 201 : 1
+T: 5 5 : 199 : 0 : 1
+T: 5 5 : 198 : 0 : 1
+T: 5 5 : 197 : 205 : 1
+T: 5 5 : 196 : 205 : 1
+T: 5 5 : 195 : 203 : 1
+T: 5 5 : 194 : 203 : 1
+T: 5 5 : 193 : 201 : 1
+T: 5 5 : 192 : 201 : 1
+T: 5 5 : 191 : 0 : 1
+T: 5 5 : 190 : 190 : 1
+T: 5 5 : 189 : 189 : 1
+T: 5 5 : 188 : 188 : 1
+T: 5 5 : 187 : 0 : 1
+T: 5 5 : 186 : 190 : 1
+T: 5 5 : 185 : 189 : 1
+T: 5 5 : 184 : 188 : 1
+T: 5 5 : 183 : 0 : 1
+T: 5 5 : 182 : 190 : 1
+T: 5 5 : 181 : 189 : 1
+T: 5 5 : 180 : 188 : 1
+T: 5 5 : 179 : 0 : 1
+T: 5 5 : 178 : 190 : 1
+T: 5 5 : 177 : 189 : 1
+T: 5 5 : 176 : 188 : 1
+T: 5 5 : 175 : 0 : 1
+T: 5 5 : 174 : 174 : 1
+T: 5 5 : 173 : 173 : 1
+T: 5 5 : 172 : 172 : 1
+T: 5 5 : 171 : 0 : 1
+T: 5 5 : 170 : 174 : 1
+T: 5 5 : 169 : 173 : 1
+T: 5 5 : 168 : 172 : 1
+T: 5 5 : 167 : 167 : 1
+T: 5 5 : 166 : 166 : 1
+T: 5 5 : 77 : 0 : 1
+T: 5 5 : 76 : 0 : 1
+T: 5 5 : 75 : 75 : 1
+T: 5 5 : 74 : 75 : 1
+T: 5 5 : 73 : 75 : 1
+T: 5 5 : 72 : 75 : 1
+T: 5 5 : 71 : 71 : 1
+T: 5 5 : 70 : 71 : 1
+T: 5 5 : 69 : 71 : 1
+T: 5 5 : 68 : 71 : 1
+T: 5 5 : 67 : 67 : 1
+T: 5 5 : 66 : 67 : 1
+T: 5 5 : 65 : 67 : 1
+T: 5 5 : 64 : 67 : 1
+T: 5 5 : 63 : 0 : 1
+T: 5 5 : 62 : 0 : 1
+T: 5 5 : 61 : 61 : 1
+T: 5 5 : 60 : 61 : 1
+T: 5 5 : 59 : 59 : 1
+T: 5 5 : 58 : 59 : 1
+T: 5 5 : 57 : 57 : 1
+T: 5 5 : 56 : 57 : 1
+T: 5 5 : 55 : 0 : 1
+T: 5 5 : 54 : 0 : 1
+T: 5 5 : 53 : 61 : 1
+T: 5 5 : 52 : 61 : 1
+T: 5 5 : 51 : 59 : 1
+T: 5 5 : 50 : 59 : 1
+T: 5 5 : 49 : 57 : 1
+T: 5 5 : 48 : 57 : 1
+T: 5 5 : 47 : 0 : 1
+T: 5 5 : 46 : 0 : 1
+T: 5 5 : 45 : 45 : 1
+T: 5 5 : 44 : 45 : 1
+T: 5 5 : 43 : 0 : 1
+T: 5 5 : 42 : 0 : 1
+T: 5 5 : 41 : 45 : 1
+T: 5 5 : 40 : 45 : 1
+T: 5 5 : 39 : 39 : 1
+T: 5 5 : 38 : 39 : 1
+T: 5 5 : 37 : 37 : 1
+T: 5 5 : 36 : 37 : 1
+T: 5 5 : 15 : 0 : 1
+T: 5 5 : 14 : 0 : 1
+T: 5 5 : 13 : 13 : 1
+T: 5 5 : 12 : 13 : 1
+T: 5 5 : 11 : 11 : 1
+T: 5 5 : 10 : 11 : 1
+T: 5 5 : 9 : 9 : 1
+T: 5 5 : 8 : 9 : 1
+T: 5 5 : 7 : 7 : 1
+T: 5 5 : 6 : 7 : 1
+T: 5 5 : 1 : 1 : 1
+T: 5 5 : 0 : 1 : 1
+T: 5 5 : 2 : 3 : 1
+T: 5 5 : 3 : 3 : 1
+T: 5 5 : 4 : 5 : 1
+T: 5 5 : 5 : 5 : 1
+T: 5 5 : 16 : 19 : 1
+T: 5 5 : 17 : 19 : 1
+T: 5 5 : 18 : 19 : 1
+T: 5 5 : 19 : 19 : 1
+T: 5 5 : 20 : 23 : 1
+T: 5 5 : 21 : 23 : 1
+T: 5 5 : 22 : 23 : 1
+T: 5 5 : 23 : 23 : 1
+T: 5 5 : 24 : 27 : 1
+T: 5 5 : 25 : 27 : 1
+T: 5 5 : 26 : 27 : 1
+T: 5 5 : 27 : 27 : 1
+T: 5 5 : 28 : 0 : 1
+T: 5 5 : 29 : 0 : 1
+T: 5 5 : 30 : 0 : 1
+T: 5 5 : 31 : 0 : 1
+T: 5 5 : 32 : 37 : 1
+T: 5 5 : 33 : 37 : 1
+T: 5 5 : 34 : 39 : 1
+T: 5 5 : 35 : 39 : 1
+T: 5 5 : 78 : 0 : 1
+T: 5 5 : 79 : 0 : 1
+T: 5 5 : 80 : 82 : 1
+T: 5 5 : 81 : 83 : 1
+T: 5 5 : 82 : 82 : 1
+T: 5 5 : 83 : 83 : 1
+T: 5 5 : 84 : 86 : 1
+T: 5 5 : 85 : 87 : 1
+T: 5 5 : 86 : 86 : 1
+T: 5 5 : 87 : 87 : 1
+T: 5 5 : 88 : 90 : 1
+T: 5 5 : 89 : 91 : 1
+T: 5 5 : 90 : 90 : 1
+T: 5 5 : 91 : 91 : 1
+T: 5 5 : 92 : 94 : 1
+T: 5 5 : 93 : 0 : 1
+T: 5 5 : 94 : 94 : 1
+T: 5 5 : 95 : 0 : 1
+T: 5 5 : 96 : 102 : 1
+T: 5 5 : 97 : 103 : 1
+T: 5 5 : 98 : 102 : 1
+T: 5 5 : 99 : 103 : 1
+T: 5 5 : 100 : 102 : 1
+T: 5 5 : 101 : 103 : 1
+T: 5 5 : 102 : 102 : 1
+T: 5 5 : 103 : 103 : 1
+T: 5 5 : 104 : 110 : 1
+T: 5 5 : 105 : 0 : 1
+T: 5 5 : 106 : 110 : 1
+T: 5 5 : 107 : 0 : 1
+T: 5 5 : 108 : 110 : 1
+T: 5 5 : 109 : 0 : 1
+T: 5 5 : 110 : 110 : 1
+T: 5 5 : 111 : 0 : 1
+T: 5 5 : 112 : 122 : 1
+T: 5 5 : 113 : 123 : 1
+T: 5 5 : 114 : 122 : 1
+T: 5 5 : 115 : 123 : 1
+T: 5 5 : 116 : 126 : 1
+T: 5 5 : 117 : 0 : 1
+T: 5 5 : 118 : 126 : 1
+T: 5 5 : 119 : 0 : 1
+T: 5 5 : 120 : 122 : 1
+T: 5 5 : 121 : 123 : 1
+T: 5 5 : 122 : 122 : 1
+T: 5 5 : 123 : 123 : 1
+T: 5 5 : 124 : 126 : 1
+T: 5 5 : 125 : 0 : 1
+T: 5 5 : 126 : 126 : 1
+T: 5 5 : 127 : 0 : 1
+T: 5 5 : 128 : 133 : 1
+T: 5 5 : 129 : 133 : 1
+T: 5 5 : 130 : 135 : 1
+T: 5 5 : 131 : 135 : 1
+T: 5 5 : 132 : 133 : 1
+T: 5 5 : 133 : 133 : 1
+T: 5 5 : 134 : 135 : 1
+T: 5 5 : 135 : 135 : 1
+T: 5 5 : 136 : 141 : 1
+T: 5 5 : 137 : 141 : 1
+T: 5 5 : 138 : 0 : 1
+T: 5 5 : 139 : 0 : 1
+T: 5 5 : 140 : 141 : 1
+T: 5 5 : 141 : 141 : 1
+T: 5 5 : 142 : 0 : 1
+T: 5 5 : 143 : 0 : 1
+T: 5 5 : 144 : 150 : 1
+T: 5 5 : 145 : 151 : 1
+T: 5 5 : 146 : 150 : 1
+T: 5 5 : 147 : 151 : 1
+T: 5 5 : 148 : 150 : 1
+T: 5 5 : 149 : 151 : 1
+T: 5 5 : 150 : 150 : 1
+T: 5 5 : 151 : 151 : 1
+T: 5 5 : 152 : 158 : 1
+T: 5 5 : 153 : 0 : 1
+T: 5 5 : 154 : 158 : 1
+T: 5 5 : 155 : 0 : 1
+T: 5 5 : 156 : 158 : 1
+T: 5 5 : 157 : 0 : 1
+T: 5 5 : 158 : 158 : 1
+T: 5 5 : 159 : 0 : 1
+T: 5 5 : 160 : 164 : 1
+T: 5 5 : 161 : 165 : 1
+T: 5 5 : 162 : 166 : 1
+T: 5 5 : 163 : 167 : 1
+T: 5 5 : 164 : 164 : 1
+T: 5 5 : 165 : 165 : 1
+T: 5 4 : 255 : 0 : 1
+T: 5 4 : 254 : 254 : 1
+T: 5 4 : 253 : 253 : 1
+T: 5 4 : 252 : 252 : 1
+T: 5 4 : 251 : 251 : 1
+T: 5 4 : 250 : 250 : 1
+T: 5 4 : 249 : 249 : 1
+T: 5 4 : 248 : 248 : 1
+T: 5 4 : 247 : 0 : 1
+T: 5 4 : 246 : 254 : 1
+T: 5 4 : 245 : 253 : 1
+T: 5 4 : 244 : 252 : 1
+T: 5 4 : 243 : 251 : 1
+T: 5 4 : 242 : 250 : 1
+T: 5 4 : 241 : 249 : 1
+T: 5 4 : 240 : 248 : 1
+T: 5 4 : 239 : 0 : 1
+T: 5 4 : 238 : 238 : 1
+T: 5 4 : 237 : 237 : 1
+T: 5 4 : 236 : 236 : 1
+T: 5 4 : 235 : 0 : 1
+T: 5 4 : 234 : 238 : 1
+T: 5 4 : 233 : 237 : 1
+T: 5 4 : 232 : 236 : 1
+T: 5 4 : 231 : 0 : 1
+T: 5 4 : 230 : 238 : 1
+T: 5 4 : 229 : 237 : 1
+T: 5 4 : 228 : 236 : 1
+T: 5 4 : 227 : 0 : 1
+T: 5 4 : 226 : 238 : 1
+T: 5 4 : 225 : 237 : 1
+T: 5 4 : 224 : 236 : 1
+T: 5 4 : 223 : 0 : 1
+T: 5 4 : 222 : 222 : 1
+T: 5 4 : 221 : 0 : 1
+T: 5 4 : 220 : 222 : 1
+T: 5 4 : 219 : 219 : 1
+T: 5 4 : 218 : 218 : 1
+T: 5 4 : 217 : 219 : 1
+T: 5 4 : 216 : 218 : 1
+T: 5 4 : 215 : 0 : 1
+T: 5 4 : 214 : 222 : 1
+T: 5 4 : 213 : 0 : 1
+T: 5 4 : 212 : 222 : 1
+T: 5 4 : 211 : 219 : 1
+T: 5 4 : 210 : 218 : 1
+T: 5 4 : 209 : 219 : 1
+T: 5 4 : 208 : 218 : 1
+T: 5 4 : 207 : 0 : 1
+T: 5 4 : 206 : 0 : 1
+T: 5 4 : 205 : 205 : 1
+T: 5 4 : 204 : 205 : 1
+T: 5 4 : 203 : 203 : 1
+T: 5 4 : 202 : 203 : 1
+T: 5 4 : 201 : 201 : 1
+T: 5 4 : 200 : 201 : 1
+T: 5 4 : 199 : 0 : 1
+T: 5 4 : 198 : 0 : 1
+T: 5 4 : 197 : 205 : 1
+T: 5 4 : 196 : 205 : 1
+T: 5 4 : 195 : 203 : 1
+T: 5 4 : 194 : 203 : 1
+T: 5 4 : 193 : 201 : 1
+T: 5 4 : 192 : 201 : 1
+T: 5 4 : 191 : 0 : 1
+T: 5 4 : 190 : 190 : 1
+T: 5 4 : 189 : 189 : 1
+T: 5 4 : 188 : 188 : 1
+T: 5 4 : 187 : 0 : 1
+T: 5 4 : 186 : 190 : 1
+T: 5 4 : 185 : 189 : 1
+T: 5 4 : 184 : 188 : 1
+T: 5 4 : 183 : 0 : 1
+T: 5 4 : 182 : 190 : 1
+T: 5 4 : 181 : 189 : 1
+T: 5 4 : 180 : 188 : 1
+T: 5 4 : 179 : 0 : 1
+T: 5 4 : 178 : 190 : 1
+T: 5 4 : 177 : 189 : 1
+T: 5 4 : 176 : 188 : 1
+T: 5 4 : 175 : 0 : 1
+T: 5 4 : 174 : 174 : 1
+T: 5 4 : 173 : 173 : 1
+T: 5 4 : 172 : 172 : 1
+T: 5 4 : 171 : 0 : 1
+T: 5 4 : 170 : 174 : 1
+T: 5 4 : 169 : 173 : 1
+T: 5 4 : 168 : 172 : 1
+T: 5 4 : 167 : 167 : 1
+T: 5 4 : 166 : 166 : 1
+T: 5 4 : 77 : 0 : 1
+T: 5 4 : 76 : 0 : 1
+T: 5 4 : 75 : 75 : 1
+T: 5 4 : 74 : 75 : 1
+T: 5 4 : 73 : 75 : 1
+T: 5 4 : 72 : 75 : 1
+T: 5 4 : 71 : 71 : 1
+T: 5 4 : 70 : 71 : 1
+T: 5 4 : 69 : 71 : 1
+T: 5 4 : 68 : 71 : 1
+T: 5 4 : 67 : 67 : 1
+T: 5 4 : 66 : 67 : 1
+T: 5 4 : 65 : 67 : 1
+T: 5 4 : 64 : 67 : 1
+T: 5 4 : 63 : 0 : 1
+T: 5 4 : 62 : 0 : 1
+T: 5 4 : 61 : 61 : 1
+T: 5 4 : 60 : 61 : 1
+T: 5 4 : 59 : 59 : 1
+T: 5 4 : 58 : 59 : 1
+T: 5 4 : 57 : 57 : 1
+T: 5 4 : 56 : 57 : 1
+T: 5 4 : 55 : 0 : 1
+T: 5 4 : 54 : 0 : 1
+T: 5 4 : 53 : 61 : 1
+T: 5 4 : 52 : 61 : 1
+T: 5 4 : 51 : 59 : 1
+T: 5 4 : 50 : 59 : 1
+T: 5 4 : 49 : 57 : 1
+T: 5 4 : 48 : 57 : 1
+T: 5 4 : 47 : 0 : 1
+T: 5 4 : 46 : 0 : 1
+T: 5 4 : 45 : 45 : 1
+T: 5 4 : 44 : 45 : 1
+T: 5 4 : 43 : 0 : 1
+T: 5 4 : 42 : 0 : 1
+T: 5 4 : 41 : 45 : 1
+T: 5 4 : 40 : 45 : 1
+T: 5 4 : 39 : 39 : 1
+T: 5 4 : 38 : 39 : 1
+T: 5 4 : 37 : 37 : 1
+T: 5 4 : 36 : 37 : 1
+T: 5 4 : 15 : 0 : 1
+T: 5 4 : 14 : 0 : 1
+T: 5 4 : 13 : 13 : 1
+T: 5 4 : 12 : 13 : 1
+T: 5 4 : 11 : 11 : 1
+T: 5 4 : 10 : 11 : 1
+T: 5 4 : 9 : 9 : 1
+T: 5 4 : 8 : 9 : 1
+T: 5 4 : 7 : 7 : 1
+T: 5 4 : 6 : 7 : 1
+T: 5 4 : 1 : 1 : 1
+T: 5 4 : 0 : 1 : 1
+T: 5 4 : 2 : 3 : 1
+T: 5 4 : 3 : 3 : 1
+T: 5 4 : 4 : 5 : 1
+T: 5 4 : 5 : 5 : 1
+T: 5 4 : 16 : 19 : 1
+T: 5 4 : 17 : 19 : 1
+T: 5 4 : 18 : 19 : 1
+T: 5 4 : 19 : 19 : 1
+T: 5 4 : 20 : 23 : 1
+T: 5 4 : 21 : 23 : 1
+T: 5 4 : 22 : 23 : 1
+T: 5 4 : 23 : 23 : 1
+T: 5 4 : 24 : 27 : 1
+T: 5 4 : 25 : 27 : 1
+T: 5 4 : 26 : 27 : 1
+T: 5 4 : 27 : 27 : 1
+T: 5 4 : 28 : 0 : 1
+T: 5 4 : 29 : 0 : 1
+T: 5 4 : 30 : 0 : 1
+T: 5 4 : 31 : 0 : 1
+T: 5 4 : 32 : 37 : 1
+T: 5 4 : 33 : 37 : 1
+T: 5 4 : 34 : 39 : 1
+T: 5 4 : 35 : 39 : 1
+T: 5 4 : 78 : 0 : 1
+T: 5 4 : 79 : 0 : 1
+T: 5 4 : 80 : 82 : 1
+T: 5 4 : 81 : 83 : 1
+T: 5 4 : 82 : 82 : 1
+T: 5 4 : 83 : 83 : 1
+T: 5 4 : 84 : 86 : 1
+T: 5 4 : 85 : 87 : 1
+T: 5 4 : 86 : 86 : 1
+T: 5 4 : 87 : 87 : 1
+T: 5 4 : 88 : 90 : 1
+T: 5 4 : 89 : 91 : 1
+T: 5 4 : 90 : 90 : 1
+T: 5 4 : 91 : 91 : 1
+T: 5 4 : 92 : 94 : 1
+T: 5 4 : 93 : 0 : 1
+T: 5 4 : 94 : 94 : 1
+T: 5 4 : 95 : 0 : 1
+T: 5 4 : 96 : 102 : 1
+T: 5 4 : 97 : 103 : 1
+T: 5 4 : 98 : 102 : 1
+T: 5 4 : 99 : 103 : 1
+T: 5 4 : 100 : 102 : 1
+T: 5 4 : 101 : 103 : 1
+T: 5 4 : 102 : 102 : 1
+T: 5 4 : 103 : 103 : 1
+T: 5 4 : 104 : 110 : 1
+T: 5 4 : 105 : 0 : 1
+T: 5 4 : 106 : 110 : 1
+T: 5 4 : 107 : 0 : 1
+T: 5 4 : 108 : 110 : 1
+T: 5 4 : 109 : 0 : 1
+T: 5 4 : 110 : 110 : 1
+T: 5 4 : 111 : 0 : 1
+T: 5 4 : 112 : 122 : 1
+T: 5 4 : 113 : 123 : 1
+T: 5 4 : 114 : 122 : 1
+T: 5 4 : 115 : 123 : 1
+T: 5 4 : 116 : 126 : 1
+T: 5 4 : 117 : 0 : 1
+T: 5 4 : 118 : 126 : 1
+T: 5 4 : 119 : 0 : 1
+T: 5 4 : 120 : 122 : 1
+T: 5 4 : 121 : 123 : 1
+T: 5 4 : 122 : 122 : 1
+T: 5 4 : 123 : 123 : 1
+T: 5 4 : 124 : 126 : 1
+T: 5 4 : 125 : 0 : 1
+T: 5 4 : 126 : 126 : 1
+T: 5 4 : 127 : 0 : 1
+T: 5 4 : 128 : 133 : 1
+T: 5 4 : 129 : 133 : 1
+T: 5 4 : 130 : 135 : 1
+T: 5 4 : 131 : 135 : 1
+T: 5 4 : 132 : 133 : 1
+T: 5 4 : 133 : 133 : 1
+T: 5 4 : 134 : 135 : 1
+T: 5 4 : 135 : 135 : 1
+T: 5 4 : 136 : 141 : 1
+T: 5 4 : 137 : 141 : 1
+T: 5 4 : 138 : 0 : 1
+T: 5 4 : 139 : 0 : 1
+T: 5 4 : 140 : 141 : 1
+T: 5 4 : 141 : 141 : 1
+T: 5 4 : 142 : 0 : 1
+T: 5 4 : 143 : 0 : 1
+T: 5 4 : 144 : 150 : 1
+T: 5 4 : 145 : 151 : 1
+T: 5 4 : 146 : 150 : 1
+T: 5 4 : 147 : 151 : 1
+T: 5 4 : 148 : 150 : 1
+T: 5 4 : 149 : 151 : 1
+T: 5 4 : 150 : 150 : 1
+T: 5 4 : 151 : 151 : 1
+T: 5 4 : 152 : 158 : 1
+T: 5 4 : 153 : 0 : 1
+T: 5 4 : 154 : 158 : 1
+T: 5 4 : 155 : 0 : 1
+T: 5 4 : 156 : 158 : 1
+T: 5 4 : 157 : 0 : 1
+T: 5 4 : 158 : 158 : 1
+T: 5 4 : 159 : 0 : 1
+T: 5 4 : 160 : 164 : 1
+T: 5 4 : 161 : 165 : 1
+T: 5 4 : 162 : 166 : 1
+T: 5 4 : 163 : 167 : 1
+T: 5 4 : 164 : 164 : 1
+T: 5 4 : 165 : 165 : 1
+T: 5 3 : 255 : 0 : 1
+T: 5 3 : 254 : 254 : 1
+T: 5 3 : 253 : 253 : 1
+T: 5 3 : 252 : 252 : 1
+T: 5 3 : 251 : 251 : 1
+T: 5 3 : 250 : 250 : 1
+T: 5 3 : 249 : 249 : 1
+T: 5 3 : 248 : 248 : 1
+T: 5 3 : 247 : 0 : 1
+T: 5 3 : 246 : 254 : 1
+T: 5 3 : 245 : 253 : 1
+T: 5 3 : 244 : 252 : 1
+T: 5 3 : 243 : 251 : 1
+T: 5 3 : 242 : 250 : 1
+T: 5 3 : 241 : 249 : 1
+T: 5 3 : 240 : 248 : 1
+T: 5 3 : 239 : 0 : 1
+T: 5 3 : 238 : 238 : 1
+T: 5 3 : 237 : 237 : 1
+T: 5 3 : 236 : 236 : 1
+T: 5 3 : 235 : 235 : 1
+T: 5 3 : 234 : 234 : 1
+T: 5 3 : 233 : 233 : 1
+T: 5 3 : 232 : 232 : 1
+T: 5 3 : 231 : 0 : 1
+T: 5 3 : 230 : 238 : 1
+T: 5 3 : 229 : 237 : 1
+T: 5 3 : 228 : 236 : 1
+T: 5 3 : 227 : 235 : 1
+T: 5 3 : 226 : 234 : 1
+T: 5 3 : 225 : 233 : 1
+T: 5 3 : 224 : 232 : 1
+T: 5 3 : 223 : 0 : 1
+T: 5 3 : 222 : 254 : 0.9
+T: 5 3 : 222 : 222 : 0.1
+T: 5 3 : 221 : 253 : 0.9
+T: 5 3 : 221 : 221 : 0.1
+T: 5 3 : 220 : 252 : 0.9
+T: 5 3 : 220 : 220 : 0.1
+T: 5 3 : 219 : 251 : 0.9
+T: 5 3 : 219 : 219 : 0.1
+T: 5 3 : 218 : 250 : 0.9
+T: 5 3 : 218 : 218 : 0.1
+T: 5 3 : 217 : 249 : 0.9
+T: 5 3 : 217 : 217 : 0.1
+T: 5 3 : 216 : 248 : 0.9
+T: 5 3 : 216 : 216 : 0.1
+T: 5 3 : 215 : 0 : 1
+T: 5 3 : 214 : 254 : 0.9
+T: 5 3 : 214 : 222 : 0.1
+T: 5 3 : 213 : 253 : 0.9
+T: 5 3 : 213 : 221 : 0.1
+T: 5 3 : 212 : 252 : 0.9
+T: 5 3 : 212 : 220 : 0.1
+T: 5 3 : 211 : 251 : 0.9
+T: 5 3 : 211 : 219 : 0.1
+T: 5 3 : 210 : 250 : 0.9
+T: 5 3 : 210 : 218 : 0.1
+T: 5 3 : 209 : 249 : 0.9
+T: 5 3 : 209 : 217 : 0.1
+T: 5 3 : 208 : 248 : 0.9
+T: 5 3 : 208 : 216 : 0.1
+T: 5 3 : 207 : 0 : 1
+T: 5 3 : 206 : 238 : 0.9
+T: 5 3 : 206 : 206 : 0.1
+T: 5 3 : 205 : 237 : 0.9
+T: 5 3 : 205 : 205 : 0.1
+T: 5 3 : 204 : 236 : 0.9
+T: 5 3 : 204 : 204 : 0.1
+T: 5 3 : 203 : 235 : 0.9
+T: 5 3 : 203 : 203 : 0.1
+T: 5 3 : 202 : 234 : 0.9
+T: 5 3 : 202 : 202 : 0.1
+T: 5 3 : 201 : 233 : 0.9
+T: 5 3 : 201 : 201 : 0.1
+T: 5 3 : 200 : 232 : 0.9
+T: 5 3 : 200 : 200 : 0.1
+T: 5 3 : 199 : 0 : 1
+T: 5 3 : 198 : 238 : 0.9
+T: 5 3 : 198 : 206 : 0.1
+T: 5 3 : 197 : 237 : 0.9
+T: 5 3 : 197 : 205 : 0.1
+T: 5 3 : 196 : 236 : 0.9
+T: 5 3 : 196 : 204 : 0.1
+T: 5 3 : 195 : 235 : 0.9
+T: 5 3 : 195 : 203 : 0.1
+T: 5 3 : 194 : 234 : 0.9
+T: 5 3 : 194 : 202 : 0.1
+T: 5 3 : 193 : 233 : 0.9
+T: 5 3 : 193 : 201 : 0.1
+T: 5 3 : 192 : 232 : 0.9
+T: 5 3 : 192 : 200 : 0.1
+T: 5 3 : 191 : 0 : 1
+T: 5 3 : 190 : 190 : 1
+T: 5 3 : 189 : 189 : 1
+T: 5 3 : 188 : 188 : 1
+T: 5 3 : 187 : 0 : 1
+T: 5 3 : 186 : 190 : 1
+T: 5 3 : 185 : 189 : 1
+T: 5 3 : 184 : 188 : 1
+T: 5 3 : 183 : 183 : 1
+T: 5 3 : 182 : 182 : 1
+T: 5 3 : 181 : 181 : 1
+T: 5 3 : 180 : 180 : 1
+T: 5 3 : 179 : 183 : 1
+T: 5 3 : 178 : 182 : 1
+T: 5 3 : 177 : 181 : 1
+T: 5 3 : 176 : 180 : 1
+T: 5 3 : 175 : 0 : 1
+T: 5 3 : 174 : 174 : 1
+T: 5 3 : 173 : 173 : 1
+T: 5 3 : 172 : 172 : 1
+T: 5 3 : 171 : 0 : 1
+T: 5 3 : 170 : 174 : 1
+T: 5 3 : 169 : 173 : 1
+T: 5 3 : 168 : 172 : 1
+T: 5 3 : 167 : 167 : 1
+T: 5 3 : 166 : 166 : 1
+T: 5 3 : 77 : 0 : 1
+T: 5 3 : 76 : 110 : 0.9
+T: 5 3 : 76 : 78 : 0.1
+T: 5 3 : 75 : 107 : 0.9
+T: 5 3 : 75 : 75 : 0.1
+T: 5 3 : 74 : 106 : 0.9
+T: 5 3 : 74 : 74 : 0.1
+T: 5 3 : 73 : 107 : 0.9
+T: 5 3 : 73 : 75 : 0.1
+T: 5 3 : 72 : 106 : 0.9
+T: 5 3 : 72 : 74 : 0.1
+T: 5 3 : 71 : 103 : 0.9
+T: 5 3 : 71 : 71 : 0.1
+T: 5 3 : 70 : 102 : 0.9
+T: 5 3 : 70 : 70 : 0.1
+T: 5 3 : 69 : 103 : 0.9
+T: 5 3 : 69 : 71 : 0.1
+T: 5 3 : 68 : 102 : 0.9
+T: 5 3 : 68 : 70 : 0.1
+T: 5 3 : 67 : 99 : 0.9
+T: 5 3 : 67 : 67 : 0.1
+T: 5 3 : 66 : 98 : 0.9
+T: 5 3 : 66 : 66 : 0.1
+T: 5 3 : 65 : 99 : 0.9
+T: 5 3 : 65 : 67 : 0.1
+T: 5 3 : 64 : 98 : 0.9
+T: 5 3 : 64 : 66 : 0.1
+T: 5 3 : 63 : 0 : 1
+T: 5 3 : 62 : 0 : 1
+T: 5 3 : 61 : 61 : 1
+T: 5 3 : 60 : 61 : 1
+T: 5 3 : 59 : 59 : 1
+T: 5 3 : 58 : 59 : 1
+T: 5 3 : 57 : 57 : 1
+T: 5 3 : 56 : 57 : 1
+T: 5 3 : 55 : 55 : 1
+T: 5 3 : 54 : 55 : 1
+T: 5 3 : 53 : 53 : 1
+T: 5 3 : 52 : 53 : 1
+T: 5 3 : 51 : 51 : 1
+T: 5 3 : 50 : 51 : 1
+T: 5 3 : 49 : 49 : 1
+T: 5 3 : 48 : 49 : 1
+T: 5 3 : 47 : 0 : 1
+T: 5 3 : 46 : 0 : 1
+T: 5 3 : 45 : 45 : 1
+T: 5 3 : 44 : 45 : 1
+T: 5 3 : 43 : 43 : 1
+T: 5 3 : 42 : 43 : 1
+T: 5 3 : 41 : 41 : 1
+T: 5 3 : 40 : 41 : 1
+T: 5 3 : 39 : 39 : 1
+T: 5 3 : 38 : 39 : 1
+T: 5 3 : 37 : 37 : 1
+T: 5 3 : 36 : 37 : 1
+T: 5 3 : 15 : 0 : 1
+T: 5 3 : 14 : 0 : 1
+T: 5 3 : 13 : 45 : 0.9
+T: 5 3 : 13 : 13 : 0.1
+T: 5 3 : 12 : 45 : 0.9
+T: 5 3 : 12 : 13 : 0.1
+T: 5 3 : 11 : 43 : 0.9
+T: 5 3 : 11 : 11 : 0.1
+T: 5 3 : 10 : 43 : 0.9
+T: 5 3 : 10 : 11 : 0.1
+T: 5 3 : 9 : 41 : 0.9
+T: 5 3 : 9 : 9 : 0.1
+T: 5 3 : 8 : 41 : 0.9
+T: 5 3 : 8 : 9 : 0.1
+T: 5 3 : 7 : 39 : 0.9
+T: 5 3 : 7 : 7 : 0.1
+T: 5 3 : 6 : 39 : 0.9
+T: 5 3 : 6 : 7 : 0.1
+T: 5 3 : 1 : 33 : 0.9
+T: 5 3 : 1 : 1 : 0.1
+T: 5 3 : 0 : 33 : 0.9
+T: 5 3 : 0 : 1 : 0.1
+T: 5 3 : 2 : 35 : 0.9
+T: 5 3 : 2 : 3 : 0.1
+T: 5 3 : 3 : 35 : 0.9
+T: 5 3 : 3 : 3 : 0.1
+T: 5 3 : 4 : 37 : 0.9
+T: 5 3 : 4 : 5 : 0.1
+T: 5 3 : 5 : 37 : 0.9
+T: 5 3 : 5 : 5 : 0.1
+T: 5 3 : 16 : 49 : 0.9
+T: 5 3 : 16 : 17 : 0.1
+T: 5 3 : 17 : 49 : 0.9
+T: 5 3 : 17 : 17 : 0.1
+T: 5 3 : 18 : 51 : 0.9
+T: 5 3 : 18 : 19 : 0.1
+T: 5 3 : 19 : 51 : 0.9
+T: 5 3 : 19 : 19 : 0.1
+T: 5 3 : 20 : 53 : 0.9
+T: 5 3 : 20 : 21 : 0.1
+T: 5 3 : 21 : 53 : 0.9
+T: 5 3 : 21 : 21 : 0.1
+T: 5 3 : 22 : 55 : 0.9
+T: 5 3 : 22 : 23 : 0.1
+T: 5 3 : 23 : 55 : 0.9
+T: 5 3 : 23 : 23 : 0.1
+T: 5 3 : 24 : 57 : 0.9
+T: 5 3 : 24 : 25 : 0.1
+T: 5 3 : 25 : 57 : 0.9
+T: 5 3 : 25 : 25 : 0.1
+T: 5 3 : 26 : 59 : 0.9
+T: 5 3 : 26 : 27 : 0.1
+T: 5 3 : 27 : 59 : 0.9
+T: 5 3 : 27 : 27 : 0.1
+T: 5 3 : 28 : 61 : 0.9
+T: 5 3 : 28 : 29 : 0.1
+T: 5 3 : 29 : 61 : 0.9
+T: 5 3 : 29 : 29 : 0.1
+T: 5 3 : 30 : 0 : 1
+T: 5 3 : 31 : 0 : 1
+T: 5 3 : 32 : 33 : 1
+T: 5 3 : 33 : 33 : 1
+T: 5 3 : 34 : 35 : 1
+T: 5 3 : 35 : 35 : 1
+T: 5 3 : 78 : 110 : 0.9
+T: 5 3 : 78 : 78 : 0.1
+T: 5 3 : 79 : 0 : 1
+T: 5 3 : 80 : 114 : 0.9
+T: 5 3 : 80 : 82 : 0.1
+T: 5 3 : 81 : 115 : 0.9
+T: 5 3 : 81 : 83 : 0.1
+T: 5 3 : 82 : 114 : 0.9
+T: 5 3 : 82 : 82 : 0.1
+T: 5 3 : 83 : 115 : 0.9
+T: 5 3 : 83 : 83 : 0.1
+T: 5 3 : 84 : 118 : 0.9
+T: 5 3 : 84 : 86 : 0.1
+T: 5 3 : 85 : 119 : 0.9
+T: 5 3 : 85 : 87 : 0.1
+T: 5 3 : 86 : 118 : 0.9
+T: 5 3 : 86 : 86 : 0.1
+T: 5 3 : 87 : 119 : 0.9
+T: 5 3 : 87 : 87 : 0.1
+T: 5 3 : 88 : 122 : 0.9
+T: 5 3 : 88 : 90 : 0.1
+T: 5 3 : 89 : 123 : 0.9
+T: 5 3 : 89 : 91 : 0.1
+T: 5 3 : 90 : 122 : 0.9
+T: 5 3 : 90 : 90 : 0.1
+T: 5 3 : 91 : 123 : 0.9
+T: 5 3 : 91 : 91 : 0.1
+T: 5 3 : 92 : 126 : 0.9
+T: 5 3 : 92 : 94 : 0.1
+T: 5 3 : 93 : 0 : 1
+T: 5 3 : 94 : 126 : 0.9
+T: 5 3 : 94 : 94 : 0.1
+T: 5 3 : 95 : 0 : 1
+T: 5 3 : 96 : 98 : 1
+T: 5 3 : 97 : 99 : 1
+T: 5 3 : 98 : 98 : 1
+T: 5 3 : 99 : 99 : 1
+T: 5 3 : 100 : 102 : 1
+T: 5 3 : 101 : 103 : 1
+T: 5 3 : 102 : 102 : 1
+T: 5 3 : 103 : 103 : 1
+T: 5 3 : 104 : 106 : 1
+T: 5 3 : 105 : 107 : 1
+T: 5 3 : 106 : 106 : 1
+T: 5 3 : 107 : 107 : 1
+T: 5 3 : 108 : 110 : 1
+T: 5 3 : 109 : 0 : 1
+T: 5 3 : 110 : 110 : 1
+T: 5 3 : 111 : 0 : 1
+T: 5 3 : 112 : 114 : 1
+T: 5 3 : 113 : 115 : 1
+T: 5 3 : 114 : 114 : 1
+T: 5 3 : 115 : 115 : 1
+T: 5 3 : 116 : 118 : 1
+T: 5 3 : 117 : 119 : 1
+T: 5 3 : 118 : 118 : 1
+T: 5 3 : 119 : 119 : 1
+T: 5 3 : 120 : 122 : 1
+T: 5 3 : 121 : 123 : 1
+T: 5 3 : 122 : 122 : 1
+T: 5 3 : 123 : 123 : 1
+T: 5 3 : 124 : 126 : 1
+T: 5 3 : 125 : 0 : 1
+T: 5 3 : 126 : 126 : 1
+T: 5 3 : 127 : 0 : 1
+T: 5 3 : 128 : 164 : 0.9
+T: 5 3 : 128 : 132 : 0.1
+T: 5 3 : 129 : 165 : 0.9
+T: 5 3 : 129 : 133 : 0.1
+T: 5 3 : 130 : 166 : 0.9
+T: 5 3 : 130 : 134 : 0.1
+T: 5 3 : 131 : 167 : 0.9
+T: 5 3 : 131 : 135 : 0.1
+T: 5 3 : 132 : 164 : 0.9
+T: 5 3 : 132 : 132 : 0.1
+T: 5 3 : 133 : 165 : 0.9
+T: 5 3 : 133 : 133 : 0.1
+T: 5 3 : 134 : 166 : 0.9
+T: 5 3 : 134 : 134 : 0.1
+T: 5 3 : 135 : 167 : 0.9
+T: 5 3 : 135 : 135 : 0.1
+T: 5 3 : 136 : 172 : 0.9
+T: 5 3 : 136 : 140 : 0.1
+T: 5 3 : 137 : 173 : 0.9
+T: 5 3 : 137 : 141 : 0.1
+T: 5 3 : 138 : 174 : 0.9
+T: 5 3 : 138 : 142 : 0.1
+T: 5 3 : 139 : 0 : 1
+T: 5 3 : 140 : 172 : 0.9
+T: 5 3 : 140 : 140 : 0.1
+T: 5 3 : 141 : 173 : 0.9
+T: 5 3 : 141 : 141 : 0.1
+T: 5 3 : 142 : 174 : 0.9
+T: 5 3 : 142 : 142 : 0.1
+T: 5 3 : 143 : 0 : 1
+T: 5 3 : 144 : 180 : 0.9
+T: 5 3 : 144 : 148 : 0.1
+T: 5 3 : 145 : 181 : 0.9
+T: 5 3 : 145 : 149 : 0.1
+T: 5 3 : 146 : 182 : 0.9
+T: 5 3 : 146 : 150 : 0.1
+T: 5 3 : 147 : 183 : 0.9
+T: 5 3 : 147 : 151 : 0.1
+T: 5 3 : 148 : 180 : 0.9
+T: 5 3 : 148 : 148 : 0.1
+T: 5 3 : 149 : 181 : 0.9
+T: 5 3 : 149 : 149 : 0.1
+T: 5 3 : 150 : 182 : 0.9
+T: 5 3 : 150 : 150 : 0.1
+T: 5 3 : 151 : 183 : 0.9
+T: 5 3 : 151 : 151 : 0.1
+T: 5 3 : 152 : 188 : 0.9
+T: 5 3 : 152 : 156 : 0.1
+T: 5 3 : 153 : 189 : 0.9
+T: 5 3 : 153 : 157 : 0.1
+T: 5 3 : 154 : 190 : 0.9
+T: 5 3 : 154 : 158 : 0.1
+T: 5 3 : 155 : 0 : 1
+T: 5 3 : 156 : 188 : 0.9
+T: 5 3 : 156 : 156 : 0.1
+T: 5 3 : 157 : 189 : 0.9
+T: 5 3 : 157 : 157 : 0.1
+T: 5 3 : 158 : 190 : 0.9
+T: 5 3 : 158 : 158 : 0.1
+T: 5 3 : 159 : 0 : 1
+T: 5 3 : 160 : 164 : 1
+T: 5 3 : 161 : 165 : 1
+T: 5 3 : 162 : 166 : 1
+T: 5 3 : 163 : 167 : 1
+T: 5 3 : 164 : 164 : 1
+T: 5 3 : 165 : 165 : 1
+T: 5 2 : 255 : 0 : 1
+T: 5 2 : 254 : 254 : 0.1
+T: 5 2 : 254 : 222 : 0.9
+T: 5 2 : 253 : 253 : 0.1
+T: 5 2 : 253 : 221 : 0.9
+T: 5 2 : 252 : 252 : 0.1
+T: 5 2 : 252 : 220 : 0.9
+T: 5 2 : 251 : 251 : 0.1
+T: 5 2 : 251 : 219 : 0.9
+T: 5 2 : 250 : 250 : 0.1
+T: 5 2 : 250 : 218 : 0.9
+T: 5 2 : 249 : 249 : 0.1
+T: 5 2 : 249 : 217 : 0.9
+T: 5 2 : 248 : 248 : 0.1
+T: 5 2 : 248 : 216 : 0.9
+T: 5 2 : 247 : 0 : 1
+T: 5 2 : 246 : 254 : 0.1
+T: 5 2 : 246 : 222 : 0.9
+T: 5 2 : 245 : 253 : 0.1
+T: 5 2 : 245 : 221 : 0.9
+T: 5 2 : 244 : 252 : 0.1
+T: 5 2 : 244 : 220 : 0.9
+T: 5 2 : 243 : 251 : 0.1
+T: 5 2 : 243 : 219 : 0.9
+T: 5 2 : 242 : 250 : 0.1
+T: 5 2 : 242 : 218 : 0.9
+T: 5 2 : 241 : 249 : 0.1
+T: 5 2 : 241 : 217 : 0.9
+T: 5 2 : 240 : 248 : 0.1
+T: 5 2 : 240 : 216 : 0.9
+T: 5 2 : 239 : 0 : 1
+T: 5 2 : 238 : 238 : 0.1
+T: 5 2 : 238 : 206 : 0.9
+T: 5 2 : 237 : 237 : 0.1
+T: 5 2 : 237 : 205 : 0.9
+T: 5 2 : 236 : 236 : 0.1
+T: 5 2 : 236 : 204 : 0.9
+T: 5 2 : 235 : 235 : 0.1
+T: 5 2 : 235 : 203 : 0.9
+T: 5 2 : 234 : 234 : 0.1
+T: 5 2 : 234 : 202 : 0.9
+T: 5 2 : 233 : 233 : 0.1
+T: 5 2 : 233 : 201 : 0.9
+T: 5 2 : 232 : 232 : 0.1
+T: 5 2 : 232 : 200 : 0.9
+T: 5 2 : 231 : 0 : 1
+T: 5 2 : 230 : 238 : 0.1
+T: 5 2 : 230 : 206 : 0.9
+T: 5 2 : 229 : 237 : 0.1
+T: 5 2 : 229 : 205 : 0.9
+T: 5 2 : 228 : 236 : 0.1
+T: 5 2 : 228 : 204 : 0.9
+T: 5 2 : 227 : 235 : 0.1
+T: 5 2 : 227 : 203 : 0.9
+T: 5 2 : 226 : 234 : 0.1
+T: 5 2 : 226 : 202 : 0.9
+T: 5 2 : 225 : 233 : 0.1
+T: 5 2 : 225 : 201 : 0.9
+T: 5 2 : 224 : 232 : 0.1
+T: 5 2 : 224 : 200 : 0.9
+T: 5 2 : 223 : 0 : 1
+T: 5 2 : 222 : 222 : 1
+T: 5 2 : 221 : 221 : 1
+T: 5 2 : 220 : 220 : 1
+T: 5 2 : 219 : 219 : 1
+T: 5 2 : 218 : 218 : 1
+T: 5 2 : 217 : 217 : 1
+T: 5 2 : 216 : 216 : 1
+T: 5 2 : 215 : 0 : 1
+T: 5 2 : 214 : 222 : 1
+T: 5 2 : 213 : 221 : 1
+T: 5 2 : 212 : 220 : 1
+T: 5 2 : 211 : 219 : 1
+T: 5 2 : 210 : 218 : 1
+T: 5 2 : 209 : 217 : 1
+T: 5 2 : 208 : 216 : 1
+T: 5 2 : 207 : 0 : 1
+T: 5 2 : 206 : 206 : 1
+T: 5 2 : 205 : 205 : 1
+T: 5 2 : 204 : 204 : 1
+T: 5 2 : 203 : 203 : 1
+T: 5 2 : 202 : 202 : 1
+T: 5 2 : 201 : 201 : 1
+T: 5 2 : 200 : 200 : 1
+T: 5 2 : 199 : 0 : 1
+T: 5 2 : 198 : 206 : 1
+T: 5 2 : 197 : 205 : 1
+T: 5 2 : 196 : 204 : 1
+T: 5 2 : 195 : 203 : 1
+T: 5 2 : 194 : 202 : 1
+T: 5 2 : 193 : 201 : 1
+T: 5 2 : 192 : 200 : 1
+T: 5 2 : 191 : 0 : 1
+T: 5 2 : 190 : 190 : 0.1
+T: 5 2 : 190 : 158 : 0.9
+T: 5 2 : 189 : 189 : 0.1
+T: 5 2 : 189 : 157 : 0.9
+T: 5 2 : 188 : 188 : 0.1
+T: 5 2 : 188 : 156 : 0.9
+T: 5 2 : 187 : 0 : 1
+T: 5 2 : 186 : 190 : 0.1
+T: 5 2 : 186 : 158 : 0.9
+T: 5 2 : 185 : 189 : 0.1
+T: 5 2 : 185 : 157 : 0.9
+T: 5 2 : 184 : 188 : 0.1
+T: 5 2 : 184 : 156 : 0.9
+T: 5 2 : 183 : 183 : 0.1
+T: 5 2 : 183 : 151 : 0.9
+T: 5 2 : 182 : 182 : 0.1
+T: 5 2 : 182 : 150 : 0.9
+T: 5 2 : 181 : 181 : 0.1
+T: 5 2 : 181 : 149 : 0.9
+T: 5 2 : 180 : 180 : 0.1
+T: 5 2 : 180 : 148 : 0.9
+T: 5 2 : 179 : 183 : 0.1
+T: 5 2 : 179 : 151 : 0.9
+T: 5 2 : 178 : 182 : 0.1
+T: 5 2 : 178 : 150 : 0.9
+T: 5 2 : 177 : 181 : 0.1
+T: 5 2 : 177 : 149 : 0.9
+T: 5 2 : 176 : 180 : 0.1
+T: 5 2 : 176 : 148 : 0.9
+T: 5 2 : 175 : 0 : 1
+T: 5 2 : 174 : 174 : 0.1
+T: 5 2 : 174 : 142 : 0.9
+T: 5 2 : 173 : 173 : 0.1
+T: 5 2 : 173 : 141 : 0.9
+T: 5 2 : 172 : 172 : 0.1
+T: 5 2 : 172 : 140 : 0.9
+T: 5 2 : 171 : 0 : 1
+T: 5 2 : 170 : 174 : 0.1
+T: 5 2 : 170 : 142 : 0.9
+T: 5 2 : 169 : 173 : 0.1
+T: 5 2 : 169 : 141 : 0.9
+T: 5 2 : 168 : 172 : 0.1
+T: 5 2 : 168 : 140 : 0.9
+T: 5 2 : 167 : 167 : 0.1
+T: 5 2 : 167 : 135 : 0.9
+T: 5 2 : 166 : 166 : 0.1
+T: 5 2 : 166 : 134 : 0.9
+T: 5 2 : 77 : 0 : 1
+T: 5 2 : 76 : 78 : 1
+T: 5 2 : 75 : 75 : 1
+T: 5 2 : 74 : 74 : 1
+T: 5 2 : 73 : 75 : 1
+T: 5 2 : 72 : 74 : 1
+T: 5 2 : 71 : 71 : 1
+T: 5 2 : 70 : 70 : 1
+T: 5 2 : 69 : 71 : 1
+T: 5 2 : 68 : 70 : 1
+T: 5 2 : 67 : 67 : 1
+T: 5 2 : 66 : 66 : 1
+T: 5 2 : 65 : 67 : 1
+T: 5 2 : 64 : 66 : 1
+T: 5 2 : 63 : 0 : 1
+T: 5 2 : 62 : 0 : 1
+T: 5 2 : 61 : 61 : 0.1
+T: 5 2 : 61 : 29 : 0.9
+T: 5 2 : 60 : 61 : 0.1
+T: 5 2 : 60 : 29 : 0.9
+T: 5 2 : 59 : 59 : 0.1
+T: 5 2 : 59 : 27 : 0.9
+T: 5 2 : 58 : 59 : 0.1
+T: 5 2 : 58 : 27 : 0.9
+T: 5 2 : 57 : 57 : 0.1
+T: 5 2 : 57 : 25 : 0.9
+T: 5 2 : 56 : 57 : 0.1
+T: 5 2 : 56 : 25 : 0.9
+T: 5 2 : 55 : 55 : 0.1
+T: 5 2 : 55 : 23 : 0.9
+T: 5 2 : 54 : 55 : 0.1
+T: 5 2 : 54 : 23 : 0.9
+T: 5 2 : 53 : 53 : 0.1
+T: 5 2 : 53 : 21 : 0.9
+T: 5 2 : 52 : 53 : 0.1
+T: 5 2 : 52 : 21 : 0.9
+T: 5 2 : 51 : 51 : 0.1
+T: 5 2 : 51 : 19 : 0.9
+T: 5 2 : 50 : 51 : 0.1
+T: 5 2 : 50 : 19 : 0.9
+T: 5 2 : 49 : 49 : 0.1
+T: 5 2 : 49 : 17 : 0.9
+T: 5 2 : 48 : 49 : 0.1
+T: 5 2 : 48 : 17 : 0.9
+T: 5 2 : 47 : 0 : 1
+T: 5 2 : 46 : 0 : 1
+T: 5 2 : 45 : 45 : 0.1
+T: 5 2 : 45 : 13 : 0.9
+T: 5 2 : 44 : 45 : 0.1
+T: 5 2 : 44 : 13 : 0.9
+T: 5 2 : 43 : 43 : 0.1
+T: 5 2 : 43 : 11 : 0.9
+T: 5 2 : 42 : 43 : 0.1
+T: 5 2 : 42 : 11 : 0.9
+T: 5 2 : 41 : 41 : 0.1
+T: 5 2 : 41 : 9 : 0.9
+T: 5 2 : 40 : 41 : 0.1
+T: 5 2 : 40 : 9 : 0.9
+T: 5 2 : 39 : 39 : 0.1
+T: 5 2 : 39 : 7 : 0.9
+T: 5 2 : 38 : 39 : 0.1
+T: 5 2 : 38 : 7 : 0.9
+T: 5 2 : 37 : 37 : 0.1
+T: 5 2 : 37 : 5 : 0.9
+T: 5 2 : 36 : 37 : 0.1
+T: 5 2 : 36 : 5 : 0.9
+T: 5 2 : 15 : 0 : 1
+T: 5 2 : 14 : 0 : 1
+T: 5 2 : 13 : 13 : 1
+T: 5 2 : 12 : 13 : 1
+T: 5 2 : 11 : 11 : 1
+T: 5 2 : 10 : 11 : 1
+T: 5 2 : 9 : 9 : 1
+T: 5 2 : 8 : 9 : 1
+T: 5 2 : 7 : 7 : 1
+T: 5 2 : 6 : 7 : 1
+T: 5 2 : 1 : 1 : 1
+T: 5 2 : 0 : 1 : 1
+T: 5 2 : 2 : 3 : 1
+T: 5 2 : 3 : 3 : 1
+T: 5 2 : 4 : 5 : 1
+T: 5 2 : 5 : 5 : 1
+T: 5 2 : 16 : 17 : 1
+T: 5 2 : 17 : 17 : 1
+T: 5 2 : 18 : 19 : 1
+T: 5 2 : 19 : 19 : 1
+T: 5 2 : 20 : 21 : 1
+T: 5 2 : 21 : 21 : 1
+T: 5 2 : 22 : 23 : 1
+T: 5 2 : 23 : 23 : 1
+T: 5 2 : 24 : 25 : 1
+T: 5 2 : 25 : 25 : 1
+T: 5 2 : 26 : 27 : 1
+T: 5 2 : 27 : 27 : 1
+T: 5 2 : 28 : 29 : 1
+T: 5 2 : 29 : 29 : 1
+T: 5 2 : 30 : 0 : 1
+T: 5 2 : 31 : 0 : 1
+T: 5 2 : 32 : 33 : 0.1
+T: 5 2 : 32 : 1 : 0.9
+T: 5 2 : 33 : 33 : 0.1
+T: 5 2 : 33 : 1 : 0.9
+T: 5 2 : 34 : 35 : 0.1
+T: 5 2 : 34 : 3 : 0.9
+T: 5 2 : 35 : 35 : 0.1
+T: 5 2 : 35 : 3 : 0.9
+T: 5 2 : 78 : 78 : 1
+T: 5 2 : 79 : 0 : 1
+T: 5 2 : 80 : 82 : 1
+T: 5 2 : 81 : 83 : 1
+T: 5 2 : 82 : 82 : 1
+T: 5 2 : 83 : 83 : 1
+T: 5 2 : 84 : 86 : 1
+T: 5 2 : 85 : 87 : 1
+T: 5 2 : 86 : 86 : 1
+T: 5 2 : 87 : 87 : 1
+T: 5 2 : 88 : 90 : 1
+T: 5 2 : 89 : 91 : 1
+T: 5 2 : 90 : 90 : 1
+T: 5 2 : 91 : 91 : 1
+T: 5 2 : 92 : 94 : 1
+T: 5 2 : 93 : 0 : 1
+T: 5 2 : 94 : 94 : 1
+T: 5 2 : 95 : 0 : 1
+T: 5 2 : 96 : 98 : 0.1
+T: 5 2 : 96 : 66 : 0.9
+T: 5 2 : 97 : 99 : 0.1
+T: 5 2 : 97 : 67 : 0.9
+T: 5 2 : 98 : 98 : 0.1
+T: 5 2 : 98 : 66 : 0.9
+T: 5 2 : 99 : 99 : 0.1
+T: 5 2 : 99 : 67 : 0.9
+T: 5 2 : 100 : 102 : 0.1
+T: 5 2 : 100 : 70 : 0.9
+T: 5 2 : 101 : 103 : 0.1
+T: 5 2 : 101 : 71 : 0.9
+T: 5 2 : 102 : 102 : 0.1
+T: 5 2 : 102 : 70 : 0.9
+T: 5 2 : 103 : 103 : 0.1
+T: 5 2 : 103 : 71 : 0.9
+T: 5 2 : 104 : 106 : 0.1
+T: 5 2 : 104 : 74 : 0.9
+T: 5 2 : 105 : 107 : 0.1
+T: 5 2 : 105 : 75 : 0.9
+T: 5 2 : 106 : 106 : 0.1
+T: 5 2 : 106 : 74 : 0.9
+T: 5 2 : 107 : 107 : 0.1
+T: 5 2 : 107 : 75 : 0.9
+T: 5 2 : 108 : 110 : 0.1
+T: 5 2 : 108 : 78 : 0.9
+T: 5 2 : 109 : 0 : 1
+T: 5 2 : 110 : 110 : 0.1
+T: 5 2 : 110 : 78 : 0.9
+T: 5 2 : 111 : 0 : 1
+T: 5 2 : 112 : 114 : 0.1
+T: 5 2 : 112 : 82 : 0.9
+T: 5 2 : 113 : 115 : 0.1
+T: 5 2 : 113 : 83 : 0.9
+T: 5 2 : 114 : 114 : 0.1
+T: 5 2 : 114 : 82 : 0.9
+T: 5 2 : 115 : 115 : 0.1
+T: 5 2 : 115 : 83 : 0.9
+T: 5 2 : 116 : 118 : 0.1
+T: 5 2 : 116 : 86 : 0.9
+T: 5 2 : 117 : 119 : 0.1
+T: 5 2 : 117 : 87 : 0.9
+T: 5 2 : 118 : 118 : 0.1
+T: 5 2 : 118 : 86 : 0.9
+T: 5 2 : 119 : 119 : 0.1
+T: 5 2 : 119 : 87 : 0.9
+T: 5 2 : 120 : 122 : 0.1
+T: 5 2 : 120 : 90 : 0.9
+T: 5 2 : 121 : 123 : 0.1
+T: 5 2 : 121 : 91 : 0.9
+T: 5 2 : 122 : 122 : 0.1
+T: 5 2 : 122 : 90 : 0.9
+T: 5 2 : 123 : 123 : 0.1
+T: 5 2 : 123 : 91 : 0.9
+T: 5 2 : 124 : 126 : 0.1
+T: 5 2 : 124 : 94 : 0.9
+T: 5 2 : 125 : 0 : 1
+T: 5 2 : 126 : 126 : 0.1
+T: 5 2 : 126 : 94 : 0.9
+T: 5 2 : 127 : 0 : 1
+T: 5 2 : 128 : 132 : 1
+T: 5 2 : 129 : 133 : 1
+T: 5 2 : 130 : 134 : 1
+T: 5 2 : 131 : 135 : 1
+T: 5 2 : 132 : 132 : 1
+T: 5 2 : 133 : 133 : 1
+T: 5 2 : 134 : 134 : 1
+T: 5 2 : 135 : 135 : 1
+T: 5 2 : 136 : 140 : 1
+T: 5 2 : 137 : 141 : 1
+T: 5 2 : 138 : 142 : 1
+T: 5 2 : 139 : 0 : 1
+T: 5 2 : 140 : 140 : 1
+T: 5 2 : 141 : 141 : 1
+T: 5 2 : 142 : 142 : 1
+T: 5 2 : 143 : 0 : 1
+T: 5 2 : 144 : 148 : 1
+T: 5 2 : 145 : 149 : 1
+T: 5 2 : 146 : 150 : 1
+T: 5 2 : 147 : 151 : 1
+T: 5 2 : 148 : 148 : 1
+T: 5 2 : 149 : 149 : 1
+T: 5 2 : 150 : 150 : 1
+T: 5 2 : 151 : 151 : 1
+T: 5 2 : 152 : 156 : 1
+T: 5 2 : 153 : 157 : 1
+T: 5 2 : 154 : 158 : 1
+T: 5 2 : 155 : 0 : 1
+T: 5 2 : 156 : 156 : 1
+T: 5 2 : 157 : 157 : 1
+T: 5 2 : 158 : 158 : 1
+T: 5 2 : 159 : 0 : 1
+T: 5 2 : 160 : 164 : 0.1
+T: 5 2 : 160 : 132 : 0.9
+T: 5 2 : 161 : 165 : 0.1
+T: 5 2 : 161 : 133 : 0.9
+T: 5 2 : 162 : 166 : 0.1
+T: 5 2 : 162 : 134 : 0.9
+T: 5 2 : 163 : 167 : 0.1
+T: 5 2 : 163 : 135 : 0.9
+T: 5 2 : 164 : 164 : 0.1
+T: 5 2 : 164 : 132 : 0.9
+T: 5 2 : 165 : 165 : 0.1
+T: 5 2 : 165 : 133 : 0.9
+T: 5 1 : 255 : 0 : 1
+T: 5 1 : 254 : 254 : 1
+T: 5 1 : 253 : 253 : 1
+T: 5 1 : 252 : 252 : 1
+T: 5 1 : 251 : 251 : 1
+T: 5 1 : 250 : 250 : 1
+T: 5 1 : 249 : 249 : 1
+T: 5 1 : 248 : 248 : 1
+T: 5 1 : 247 : 0 : 1
+T: 5 1 : 246 : 254 : 1
+T: 5 1 : 245 : 253 : 1
+T: 5 1 : 244 : 252 : 1
+T: 5 1 : 243 : 251 : 1
+T: 5 1 : 242 : 250 : 1
+T: 5 1 : 241 : 249 : 1
+T: 5 1 : 240 : 248 : 1
+T: 5 1 : 239 : 0 : 1
+T: 5 1 : 238 : 254 : 0.9
+T: 5 1 : 238 : 238 : 0.1
+T: 5 1 : 237 : 253 : 0.9
+T: 5 1 : 237 : 237 : 0.1
+T: 5 1 : 236 : 252 : 0.9
+T: 5 1 : 236 : 236 : 0.1
+T: 5 1 : 235 : 251 : 0.9
+T: 5 1 : 235 : 235 : 0.1
+T: 5 1 : 234 : 250 : 0.9
+T: 5 1 : 234 : 234 : 0.1
+T: 5 1 : 233 : 249 : 0.9
+T: 5 1 : 233 : 233 : 0.1
+T: 5 1 : 232 : 248 : 0.9
+T: 5 1 : 232 : 232 : 0.1
+T: 5 1 : 231 : 0 : 1
+T: 5 1 : 230 : 254 : 0.9
+T: 5 1 : 230 : 238 : 0.1
+T: 5 1 : 229 : 253 : 0.9
+T: 5 1 : 229 : 237 : 0.1
+T: 5 1 : 228 : 252 : 0.9
+T: 5 1 : 228 : 236 : 0.1
+T: 5 1 : 227 : 251 : 0.9
+T: 5 1 : 227 : 235 : 0.1
+T: 5 1 : 226 : 250 : 0.9
+T: 5 1 : 226 : 234 : 0.1
+T: 5 1 : 225 : 249 : 0.9
+T: 5 1 : 225 : 233 : 0.1
+T: 5 1 : 224 : 248 : 0.9
+T: 5 1 : 224 : 232 : 0.1
+T: 5 1 : 223 : 0 : 1
+T: 5 1 : 222 : 222 : 1
+T: 5 1 : 221 : 221 : 1
+T: 5 1 : 220 : 220 : 1
+T: 5 1 : 219 : 219 : 1
+T: 5 1 : 218 : 218 : 1
+T: 5 1 : 217 : 217 : 1
+T: 5 1 : 216 : 216 : 1
+T: 5 1 : 215 : 0 : 1
+T: 5 1 : 214 : 222 : 1
+T: 5 1 : 213 : 221 : 1
+T: 5 1 : 212 : 220 : 1
+T: 5 1 : 211 : 219 : 1
+T: 5 1 : 210 : 218 : 1
+T: 5 1 : 209 : 217 : 1
+T: 5 1 : 208 : 216 : 1
+T: 5 1 : 207 : 0 : 1
+T: 5 1 : 206 : 222 : 0.9
+T: 5 1 : 206 : 206 : 0.1
+T: 5 1 : 205 : 221 : 0.9
+T: 5 1 : 205 : 205 : 0.1
+T: 5 1 : 204 : 220 : 0.9
+T: 5 1 : 204 : 204 : 0.1
+T: 5 1 : 203 : 219 : 0.9
+T: 5 1 : 203 : 203 : 0.1
+T: 5 1 : 202 : 218 : 0.9
+T: 5 1 : 202 : 202 : 0.1
+T: 5 1 : 201 : 217 : 0.9
+T: 5 1 : 201 : 201 : 0.1
+T: 5 1 : 200 : 216 : 0.9
+T: 5 1 : 200 : 200 : 0.1
+T: 5 1 : 199 : 0 : 1
+T: 5 1 : 198 : 222 : 0.9
+T: 5 1 : 198 : 206 : 0.1
+T: 5 1 : 197 : 221 : 0.9
+T: 5 1 : 197 : 205 : 0.1
+T: 5 1 : 196 : 220 : 0.9
+T: 5 1 : 196 : 204 : 0.1
+T: 5 1 : 195 : 219 : 0.9
+T: 5 1 : 195 : 203 : 0.1
+T: 5 1 : 194 : 218 : 0.9
+T: 5 1 : 194 : 202 : 0.1
+T: 5 1 : 193 : 217 : 0.9
+T: 5 1 : 193 : 201 : 0.1
+T: 5 1 : 192 : 216 : 0.9
+T: 5 1 : 192 : 200 : 0.1
+T: 5 1 : 191 : 0 : 1
+T: 5 1 : 190 : 190 : 1
+T: 5 1 : 189 : 189 : 1
+T: 5 1 : 188 : 188 : 1
+T: 5 1 : 187 : 0 : 1
+T: 5 1 : 186 : 190 : 1
+T: 5 1 : 185 : 189 : 1
+T: 5 1 : 184 : 188 : 1
+T: 5 1 : 183 : 183 : 1
+T: 5 1 : 182 : 182 : 1
+T: 5 1 : 181 : 181 : 1
+T: 5 1 : 180 : 180 : 1
+T: 5 1 : 179 : 183 : 1
+T: 5 1 : 178 : 182 : 1
+T: 5 1 : 177 : 181 : 1
+T: 5 1 : 176 : 180 : 1
+T: 5 1 : 175 : 0 : 1
+T: 5 1 : 174 : 190 : 0.9
+T: 5 1 : 174 : 174 : 0.1
+T: 5 1 : 173 : 189 : 0.9
+T: 5 1 : 173 : 173 : 0.1
+T: 5 1 : 172 : 188 : 0.9
+T: 5 1 : 172 : 172 : 0.1
+T: 5 1 : 171 : 0 : 1
+T: 5 1 : 170 : 190 : 0.9
+T: 5 1 : 170 : 174 : 0.1
+T: 5 1 : 169 : 189 : 0.9
+T: 5 1 : 169 : 173 : 0.1
+T: 5 1 : 168 : 188 : 0.9
+T: 5 1 : 168 : 172 : 0.1
+T: 5 1 : 167 : 183 : 0.9
+T: 5 1 : 167 : 167 : 0.1
+T: 5 1 : 166 : 182 : 0.9
+T: 5 1 : 166 : 166 : 0.1
+T: 5 1 : 77 : 0 : 1
+T: 5 1 : 76 : 94 : 0.9
+T: 5 1 : 76 : 78 : 0.1
+T: 5 1 : 75 : 91 : 0.9
+T: 5 1 : 75 : 75 : 0.1
+T: 5 1 : 74 : 90 : 0.9
+T: 5 1 : 74 : 74 : 0.1
+T: 5 1 : 73 : 91 : 0.9
+T: 5 1 : 73 : 75 : 0.1
+T: 5 1 : 72 : 90 : 0.9
+T: 5 1 : 72 : 74 : 0.1
+T: 5 1 : 71 : 87 : 0.9
+T: 5 1 : 71 : 71 : 0.1
+T: 5 1 : 70 : 86 : 0.9
+T: 5 1 : 70 : 70 : 0.1
+T: 5 1 : 69 : 87 : 0.9
+T: 5 1 : 69 : 71 : 0.1
+T: 5 1 : 68 : 86 : 0.9
+T: 5 1 : 68 : 70 : 0.1
+T: 5 1 : 67 : 83 : 0.9
+T: 5 1 : 67 : 67 : 0.1
+T: 5 1 : 66 : 82 : 0.9
+T: 5 1 : 66 : 66 : 0.1
+T: 5 1 : 65 : 83 : 0.9
+T: 5 1 : 65 : 67 : 0.1
+T: 5 1 : 64 : 82 : 0.9
+T: 5 1 : 64 : 66 : 0.1
+T: 5 1 : 63 : 0 : 1
+T: 5 1 : 62 : 0 : 1
+T: 5 1 : 61 : 61 : 1
+T: 5 1 : 60 : 61 : 1
+T: 5 1 : 59 : 59 : 1
+T: 5 1 : 58 : 59 : 1
+T: 5 1 : 57 : 57 : 1
+T: 5 1 : 56 : 57 : 1
+T: 5 1 : 55 : 55 : 1
+T: 5 1 : 54 : 55 : 1
+T: 5 1 : 53 : 53 : 1
+T: 5 1 : 52 : 53 : 1
+T: 5 1 : 51 : 51 : 1
+T: 5 1 : 50 : 51 : 1
+T: 5 1 : 49 : 49 : 1
+T: 5 1 : 48 : 49 : 1
+T: 5 1 : 47 : 0 : 1
+T: 5 1 : 46 : 0 : 1
+T: 5 1 : 45 : 61 : 0.9
+T: 5 1 : 45 : 45 : 0.1
+T: 5 1 : 44 : 61 : 0.9
+T: 5 1 : 44 : 45 : 0.1
+T: 5 1 : 43 : 59 : 0.9
+T: 5 1 : 43 : 43 : 0.1
+T: 5 1 : 42 : 59 : 0.9
+T: 5 1 : 42 : 43 : 0.1
+T: 5 1 : 41 : 57 : 0.9
+T: 5 1 : 41 : 41 : 0.1
+T: 5 1 : 40 : 57 : 0.9
+T: 5 1 : 40 : 41 : 0.1
+T: 5 1 : 39 : 55 : 0.9
+T: 5 1 : 39 : 39 : 0.1
+T: 5 1 : 38 : 55 : 0.9
+T: 5 1 : 38 : 39 : 0.1
+T: 5 1 : 37 : 53 : 0.9
+T: 5 1 : 37 : 37 : 0.1
+T: 5 1 : 36 : 53 : 0.9
+T: 5 1 : 36 : 37 : 0.1
+T: 5 1 : 15 : 0 : 1
+T: 5 1 : 14 : 0 : 1
+T: 5 1 : 13 : 29 : 0.9
+T: 5 1 : 13 : 13 : 0.1
+T: 5 1 : 12 : 29 : 0.9
+T: 5 1 : 12 : 13 : 0.1
+T: 5 1 : 11 : 27 : 0.9
+T: 5 1 : 11 : 11 : 0.1
+T: 5 1 : 10 : 27 : 0.9
+T: 5 1 : 10 : 11 : 0.1
+T: 5 1 : 9 : 25 : 0.9
+T: 5 1 : 9 : 9 : 0.1
+T: 5 1 : 8 : 25 : 0.9
+T: 5 1 : 8 : 9 : 0.1
+T: 5 1 : 7 : 23 : 0.9
+T: 5 1 : 7 : 7 : 0.1
+T: 5 1 : 6 : 23 : 0.9
+T: 5 1 : 6 : 7 : 0.1
+T: 5 1 : 1 : 17 : 0.9
+T: 5 1 : 1 : 1 : 0.1
+T: 5 1 : 0 : 17 : 0.9
+T: 5 1 : 0 : 1 : 0.1
+T: 5 1 : 2 : 19 : 0.9
+T: 5 1 : 2 : 3 : 0.1
+T: 5 1 : 3 : 19 : 0.9
+T: 5 1 : 3 : 3 : 0.1
+T: 5 1 : 4 : 21 : 0.9
+T: 5 1 : 4 : 5 : 0.1
+T: 5 1 : 5 : 21 : 0.9
+T: 5 1 : 5 : 5 : 0.1
+T: 5 1 : 16 : 17 : 1
+T: 5 1 : 17 : 17 : 1
+T: 5 1 : 18 : 19 : 1
+T: 5 1 : 19 : 19 : 1
+T: 5 1 : 20 : 21 : 1
+T: 5 1 : 21 : 21 : 1
+T: 5 1 : 22 : 23 : 1
+T: 5 1 : 23 : 23 : 1
+T: 5 1 : 24 : 25 : 1
+T: 5 1 : 25 : 25 : 1
+T: 5 1 : 26 : 27 : 1
+T: 5 1 : 27 : 27 : 1
+T: 5 1 : 28 : 29 : 1
+T: 5 1 : 29 : 29 : 1
+T: 5 1 : 30 : 0 : 1
+T: 5 1 : 31 : 0 : 1
+T: 5 1 : 32 : 49 : 0.9
+T: 5 1 : 32 : 33 : 0.1
+T: 5 1 : 33 : 49 : 0.9
+T: 5 1 : 33 : 33 : 0.1
+T: 5 1 : 34 : 51 : 0.9
+T: 5 1 : 34 : 35 : 0.1
+T: 5 1 : 35 : 51 : 0.9
+T: 5 1 : 35 : 35 : 0.1
+T: 5 1 : 78 : 94 : 0.9
+T: 5 1 : 78 : 78 : 0.1
+T: 5 1 : 79 : 0 : 1
+T: 5 1 : 80 : 82 : 1
+T: 5 1 : 81 : 83 : 1
+T: 5 1 : 82 : 82 : 1
+T: 5 1 : 83 : 83 : 1
+T: 5 1 : 84 : 86 : 1
+T: 5 1 : 85 : 87 : 1
+T: 5 1 : 86 : 86 : 1
+T: 5 1 : 87 : 87 : 1
+T: 5 1 : 88 : 90 : 1
+T: 5 1 : 89 : 91 : 1
+T: 5 1 : 90 : 90 : 1
+T: 5 1 : 91 : 91 : 1
+T: 5 1 : 92 : 94 : 1
+T: 5 1 : 93 : 0 : 1
+T: 5 1 : 94 : 94 : 1
+T: 5 1 : 95 : 0 : 1
+T: 5 1 : 96 : 114 : 0.9
+T: 5 1 : 96 : 98 : 0.1
+T: 5 1 : 97 : 115 : 0.9
+T: 5 1 : 97 : 99 : 0.1
+T: 5 1 : 98 : 114 : 0.9
+T: 5 1 : 98 : 98 : 0.1
+T: 5 1 : 99 : 115 : 0.9
+T: 5 1 : 99 : 99 : 0.1
+T: 5 1 : 100 : 118 : 0.9
+T: 5 1 : 100 : 102 : 0.1
+T: 5 1 : 101 : 119 : 0.9
+T: 5 1 : 101 : 103 : 0.1
+T: 5 1 : 102 : 118 : 0.9
+T: 5 1 : 102 : 102 : 0.1
+T: 5 1 : 103 : 119 : 0.9
+T: 5 1 : 103 : 103 : 0.1
+T: 5 1 : 104 : 122 : 0.9
+T: 5 1 : 104 : 106 : 0.1
+T: 5 1 : 105 : 123 : 0.9
+T: 5 1 : 105 : 107 : 0.1
+T: 5 1 : 106 : 122 : 0.9
+T: 5 1 : 106 : 106 : 0.1
+T: 5 1 : 107 : 123 : 0.9
+T: 5 1 : 107 : 107 : 0.1
+T: 5 1 : 108 : 126 : 0.9
+T: 5 1 : 108 : 110 : 0.1
+T: 5 1 : 109 : 0 : 1
+T: 5 1 : 110 : 126 : 0.9
+T: 5 1 : 110 : 110 : 0.1
+T: 5 1 : 111 : 0 : 1
+T: 5 1 : 112 : 114 : 1
+T: 5 1 : 113 : 115 : 1
+T: 5 1 : 114 : 114 : 1
+T: 5 1 : 115 : 115 : 1
+T: 5 1 : 116 : 118 : 1
+T: 5 1 : 117 : 119 : 1
+T: 5 1 : 118 : 118 : 1
+T: 5 1 : 119 : 119 : 1
+T: 5 1 : 120 : 122 : 1
+T: 5 1 : 121 : 123 : 1
+T: 5 1 : 122 : 122 : 1
+T: 5 1 : 123 : 123 : 1
+T: 5 1 : 124 : 126 : 1
+T: 5 1 : 125 : 0 : 1
+T: 5 1 : 126 : 126 : 1
+T: 5 1 : 127 : 0 : 1
+T: 5 1 : 128 : 148 : 0.9
+T: 5 1 : 128 : 132 : 0.1
+T: 5 1 : 129 : 149 : 0.9
+T: 5 1 : 129 : 133 : 0.1
+T: 5 1 : 130 : 150 : 0.9
+T: 5 1 : 130 : 134 : 0.1
+T: 5 1 : 131 : 151 : 0.9
+T: 5 1 : 131 : 135 : 0.1
+T: 5 1 : 132 : 148 : 0.9
+T: 5 1 : 132 : 132 : 0.1
+T: 5 1 : 133 : 149 : 0.9
+T: 5 1 : 133 : 133 : 0.1
+T: 5 1 : 134 : 150 : 0.9
+T: 5 1 : 134 : 134 : 0.1
+T: 5 1 : 135 : 151 : 0.9
+T: 5 1 : 135 : 135 : 0.1
+T: 5 1 : 136 : 156 : 0.9
+T: 5 1 : 136 : 140 : 0.1
+T: 5 1 : 137 : 157 : 0.9
+T: 5 1 : 137 : 141 : 0.1
+T: 5 1 : 138 : 158 : 0.9
+T: 5 1 : 138 : 142 : 0.1
+T: 5 1 : 139 : 0 : 1
+T: 5 1 : 140 : 156 : 0.9
+T: 5 1 : 140 : 140 : 0.1
+T: 5 1 : 141 : 157 : 0.9
+T: 5 1 : 141 : 141 : 0.1
+T: 5 1 : 142 : 158 : 0.9
+T: 5 1 : 142 : 142 : 0.1
+T: 5 1 : 143 : 0 : 1
+T: 5 1 : 144 : 148 : 1
+T: 5 1 : 145 : 149 : 1
+T: 5 1 : 146 : 150 : 1
+T: 5 1 : 147 : 151 : 1
+T: 5 1 : 148 : 148 : 1
+T: 5 1 : 149 : 149 : 1
+T: 5 1 : 150 : 150 : 1
+T: 5 1 : 151 : 151 : 1
+T: 5 1 : 152 : 156 : 1
+T: 5 1 : 153 : 157 : 1
+T: 5 1 : 154 : 158 : 1
+T: 5 1 : 155 : 0 : 1
+T: 5 1 : 156 : 156 : 1
+T: 5 1 : 157 : 157 : 1
+T: 5 1 : 158 : 158 : 1
+T: 5 1 : 159 : 0 : 1
+T: 5 1 : 160 : 180 : 0.9
+T: 5 1 : 160 : 164 : 0.1
+T: 5 1 : 161 : 181 : 0.9
+T: 5 1 : 161 : 165 : 0.1
+T: 5 1 : 162 : 182 : 0.9
+T: 5 1 : 162 : 166 : 0.1
+T: 5 1 : 163 : 183 : 0.9
+T: 5 1 : 163 : 167 : 0.1
+T: 5 1 : 164 : 180 : 0.9
+T: 5 1 : 164 : 164 : 0.1
+T: 5 1 : 165 : 181 : 0.9
+T: 5 1 : 165 : 165 : 0.1
+T: 5 0 : 255 : 0 : 1
+T: 5 0 : 254 : 254 : 0.1
+T: 5 0 : 254 : 238 : 0.9
+T: 5 0 : 253 : 253 : 0.1
+T: 5 0 : 253 : 237 : 0.9
+T: 5 0 : 252 : 252 : 0.1
+T: 5 0 : 252 : 236 : 0.9
+T: 5 0 : 251 : 251 : 0.1
+T: 5 0 : 251 : 235 : 0.9
+T: 5 0 : 250 : 250 : 0.1
+T: 5 0 : 250 : 234 : 0.9
+T: 5 0 : 249 : 249 : 0.1
+T: 5 0 : 249 : 233 : 0.9
+T: 5 0 : 248 : 248 : 0.1
+T: 5 0 : 248 : 232 : 0.9
+T: 5 0 : 247 : 0 : 1
+T: 5 0 : 246 : 254 : 0.1
+T: 5 0 : 246 : 238 : 0.9
+T: 5 0 : 245 : 253 : 0.1
+T: 5 0 : 245 : 237 : 0.9
+T: 5 0 : 244 : 252 : 0.1
+T: 5 0 : 244 : 236 : 0.9
+T: 5 0 : 243 : 251 : 0.1
+T: 5 0 : 243 : 235 : 0.9
+T: 5 0 : 242 : 250 : 0.1
+T: 5 0 : 242 : 234 : 0.9
+T: 5 0 : 241 : 249 : 0.1
+T: 5 0 : 241 : 233 : 0.9
+T: 5 0 : 240 : 248 : 0.1
+T: 5 0 : 240 : 232 : 0.9
+T: 5 0 : 239 : 0 : 1
+T: 5 0 : 238 : 238 : 1
+T: 5 0 : 237 : 237 : 1
+T: 5 0 : 236 : 236 : 1
+T: 5 0 : 235 : 235 : 1
+T: 5 0 : 234 : 234 : 1
+T: 5 0 : 233 : 233 : 1
+T: 5 0 : 232 : 232 : 1
+T: 5 0 : 231 : 0 : 1
+T: 5 0 : 230 : 238 : 1
+T: 5 0 : 229 : 237 : 1
+T: 5 0 : 228 : 236 : 1
+T: 5 0 : 227 : 235 : 1
+T: 5 0 : 226 : 234 : 1
+T: 5 0 : 225 : 233 : 1
+T: 5 0 : 224 : 232 : 1
+T: 5 0 : 223 : 0 : 1
+T: 5 0 : 222 : 222 : 0.1
+T: 5 0 : 222 : 206 : 0.9
+T: 5 0 : 221 : 221 : 0.1
+T: 5 0 : 221 : 205 : 0.9
+T: 5 0 : 220 : 220 : 0.1
+T: 5 0 : 220 : 204 : 0.9
+T: 5 0 : 219 : 219 : 0.1
+T: 5 0 : 219 : 203 : 0.9
+T: 5 0 : 218 : 218 : 0.1
+T: 5 0 : 218 : 202 : 0.9
+T: 5 0 : 217 : 217 : 0.1
+T: 5 0 : 217 : 201 : 0.9
+T: 5 0 : 216 : 216 : 0.1
+T: 5 0 : 216 : 200 : 0.9
+T: 5 0 : 215 : 0 : 1
+T: 5 0 : 214 : 222 : 0.1
+T: 5 0 : 214 : 206 : 0.9
+T: 5 0 : 213 : 221 : 0.1
+T: 5 0 : 213 : 205 : 0.9
+T: 5 0 : 212 : 220 : 0.1
+T: 5 0 : 212 : 204 : 0.9
+T: 5 0 : 211 : 219 : 0.1
+T: 5 0 : 211 : 203 : 0.9
+T: 5 0 : 210 : 218 : 0.1
+T: 5 0 : 210 : 202 : 0.9
+T: 5 0 : 209 : 217 : 0.1
+T: 5 0 : 209 : 201 : 0.9
+T: 5 0 : 208 : 216 : 0.1
+T: 5 0 : 208 : 200 : 0.9
+T: 5 0 : 207 : 0 : 1
+T: 5 0 : 206 : 206 : 1
+T: 5 0 : 205 : 205 : 1
+T: 5 0 : 204 : 204 : 1
+T: 5 0 : 203 : 203 : 1
+T: 5 0 : 202 : 202 : 1
+T: 5 0 : 201 : 201 : 1
+T: 5 0 : 200 : 200 : 1
+T: 5 0 : 199 : 0 : 1
+T: 5 0 : 198 : 206 : 1
+T: 5 0 : 197 : 205 : 1
+T: 5 0 : 196 : 204 : 1
+T: 5 0 : 195 : 203 : 1
+T: 5 0 : 194 : 202 : 1
+T: 5 0 : 193 : 201 : 1
+T: 5 0 : 192 : 200 : 1
+T: 5 0 : 191 : 0 : 1
+T: 5 0 : 190 : 190 : 0.1
+T: 5 0 : 190 : 174 : 0.9
+T: 5 0 : 189 : 189 : 0.1
+T: 5 0 : 189 : 173 : 0.9
+T: 5 0 : 188 : 188 : 0.1
+T: 5 0 : 188 : 172 : 0.9
+T: 5 0 : 187 : 0 : 1
+T: 5 0 : 186 : 190 : 0.1
+T: 5 0 : 186 : 174 : 0.9
+T: 5 0 : 185 : 189 : 0.1
+T: 5 0 : 185 : 173 : 0.9
+T: 5 0 : 184 : 188 : 0.1
+T: 5 0 : 184 : 172 : 0.9
+T: 5 0 : 183 : 183 : 0.1
+T: 5 0 : 183 : 167 : 0.9
+T: 5 0 : 182 : 182 : 0.1
+T: 5 0 : 182 : 166 : 0.9
+T: 5 0 : 181 : 181 : 0.1
+T: 5 0 : 181 : 165 : 0.9
+T: 5 0 : 180 : 180 : 0.1
+T: 5 0 : 180 : 164 : 0.9
+T: 5 0 : 179 : 183 : 0.1
+T: 5 0 : 179 : 167 : 0.9
+T: 5 0 : 178 : 182 : 0.1
+T: 5 0 : 178 : 166 : 0.9
+T: 5 0 : 177 : 181 : 0.1
+T: 5 0 : 177 : 165 : 0.9
+T: 5 0 : 176 : 180 : 0.1
+T: 5 0 : 176 : 164 : 0.9
+T: 5 0 : 175 : 0 : 1
+T: 5 0 : 174 : 174 : 1
+T: 5 0 : 173 : 173 : 1
+T: 5 0 : 172 : 172 : 1
+T: 5 0 : 171 : 0 : 1
+T: 5 0 : 170 : 174 : 1
+T: 5 0 : 169 : 173 : 1
+T: 5 0 : 168 : 172 : 1
+T: 5 0 : 167 : 167 : 1
+T: 5 0 : 166 : 166 : 1
+T: 5 0 : 77 : 0 : 1
+T: 5 0 : 76 : 78 : 1
+T: 5 0 : 75 : 75 : 1
+T: 5 0 : 74 : 74 : 1
+T: 5 0 : 73 : 75 : 1
+T: 5 0 : 72 : 74 : 1
+T: 5 0 : 71 : 71 : 1
+T: 5 0 : 70 : 70 : 1
+T: 5 0 : 69 : 71 : 1
+T: 5 0 : 68 : 70 : 1
+T: 5 0 : 67 : 67 : 1
+T: 5 0 : 66 : 66 : 1
+T: 5 0 : 65 : 67 : 1
+T: 5 0 : 64 : 66 : 1
+T: 5 0 : 63 : 0 : 1
+T: 5 0 : 62 : 0 : 1
+T: 5 0 : 61 : 61 : 0.1
+T: 5 0 : 61 : 45 : 0.9
+T: 5 0 : 60 : 61 : 0.1
+T: 5 0 : 60 : 45 : 0.9
+T: 5 0 : 59 : 59 : 0.1
+T: 5 0 : 59 : 43 : 0.9
+T: 5 0 : 58 : 59 : 0.1
+T: 5 0 : 58 : 43 : 0.9
+T: 5 0 : 57 : 57 : 0.1
+T: 5 0 : 57 : 41 : 0.9
+T: 5 0 : 56 : 57 : 0.1
+T: 5 0 : 56 : 41 : 0.9
+T: 5 0 : 55 : 55 : 0.1
+T: 5 0 : 55 : 39 : 0.9
+T: 5 0 : 54 : 55 : 0.1
+T: 5 0 : 54 : 39 : 0.9
+T: 5 0 : 53 : 53 : 0.1
+T: 5 0 : 53 : 37 : 0.9
+T: 5 0 : 52 : 53 : 0.1
+T: 5 0 : 52 : 37 : 0.9
+T: 5 0 : 51 : 51 : 0.1
+T: 5 0 : 51 : 35 : 0.9
+T: 5 0 : 50 : 51 : 0.1
+T: 5 0 : 50 : 35 : 0.9
+T: 5 0 : 49 : 49 : 0.1
+T: 5 0 : 49 : 33 : 0.9
+T: 5 0 : 48 : 49 : 0.1
+T: 5 0 : 48 : 33 : 0.9
+T: 5 0 : 47 : 0 : 1
+T: 5 0 : 46 : 0 : 1
+T: 5 0 : 45 : 45 : 1
+T: 5 0 : 44 : 45 : 1
+T: 5 0 : 43 : 43 : 1
+T: 5 0 : 42 : 43 : 1
+T: 5 0 : 41 : 41 : 1
+T: 5 0 : 40 : 41 : 1
+T: 5 0 : 39 : 39 : 1
+T: 5 0 : 38 : 39 : 1
+T: 5 0 : 37 : 37 : 1
+T: 5 0 : 36 : 37 : 1
+T: 5 0 : 15 : 0 : 1
+T: 5 0 : 14 : 0 : 1
+T: 5 0 : 13 : 13 : 1
+T: 5 0 : 12 : 13 : 1
+T: 5 0 : 11 : 11 : 1
+T: 5 0 : 10 : 11 : 1
+T: 5 0 : 9 : 9 : 1
+T: 5 0 : 8 : 9 : 1
+T: 5 0 : 7 : 7 : 1
+T: 5 0 : 6 : 7 : 1
+T: 5 0 : 1 : 1 : 1
+T: 5 0 : 0 : 1 : 1
+T: 5 0 : 2 : 3 : 1
+T: 5 0 : 3 : 3 : 1
+T: 5 0 : 4 : 5 : 1
+T: 5 0 : 5 : 5 : 1
+T: 5 0 : 16 : 17 : 0.1
+T: 5 0 : 16 : 1 : 0.9
+T: 5 0 : 17 : 17 : 0.1
+T: 5 0 : 17 : 1 : 0.9
+T: 5 0 : 18 : 19 : 0.1
+T: 5 0 : 18 : 3 : 0.9
+T: 5 0 : 19 : 19 : 0.1
+T: 5 0 : 19 : 3 : 0.9
+T: 5 0 : 20 : 21 : 0.1
+T: 5 0 : 20 : 5 : 0.9
+T: 5 0 : 21 : 21 : 0.1
+T: 5 0 : 21 : 5 : 0.9
+T: 5 0 : 22 : 23 : 0.1
+T: 5 0 : 22 : 7 : 0.9
+T: 5 0 : 23 : 23 : 0.1
+T: 5 0 : 23 : 7 : 0.9
+T: 5 0 : 24 : 25 : 0.1
+T: 5 0 : 24 : 9 : 0.9
+T: 5 0 : 25 : 25 : 0.1
+T: 5 0 : 25 : 9 : 0.9
+T: 5 0 : 26 : 27 : 0.1
+T: 5 0 : 26 : 11 : 0.9
+T: 5 0 : 27 : 27 : 0.1
+T: 5 0 : 27 : 11 : 0.9
+T: 5 0 : 28 : 29 : 0.1
+T: 5 0 : 28 : 13 : 0.9
+T: 5 0 : 29 : 29 : 0.1
+T: 5 0 : 29 : 13 : 0.9
+T: 5 0 : 30 : 0 : 1
+T: 5 0 : 31 : 0 : 1
+T: 5 0 : 32 : 33 : 1
+T: 5 0 : 33 : 33 : 1
+T: 5 0 : 34 : 35 : 1
+T: 5 0 : 35 : 35 : 1
+T: 5 0 : 78 : 78 : 1
+T: 5 0 : 79 : 0 : 1
+T: 5 0 : 80 : 82 : 0.1
+T: 5 0 : 80 : 66 : 0.9
+T: 5 0 : 81 : 83 : 0.1
+T: 5 0 : 81 : 67 : 0.9
+T: 5 0 : 82 : 82 : 0.1
+T: 5 0 : 82 : 66 : 0.9
+T: 5 0 : 83 : 83 : 0.1
+T: 5 0 : 83 : 67 : 0.9
+T: 5 0 : 84 : 86 : 0.1
+T: 5 0 : 84 : 70 : 0.9
+T: 5 0 : 85 : 87 : 0.1
+T: 5 0 : 85 : 71 : 0.9
+T: 5 0 : 86 : 86 : 0.1
+T: 5 0 : 86 : 70 : 0.9
+T: 5 0 : 87 : 87 : 0.1
+T: 5 0 : 87 : 71 : 0.9
+T: 5 0 : 88 : 90 : 0.1
+T: 5 0 : 88 : 74 : 0.9
+T: 5 0 : 89 : 91 : 0.1
+T: 5 0 : 89 : 75 : 0.9
+T: 5 0 : 90 : 90 : 0.1
+T: 5 0 : 90 : 74 : 0.9
+T: 5 0 : 91 : 91 : 0.1
+T: 5 0 : 91 : 75 : 0.9
+T: 5 0 : 92 : 94 : 0.1
+T: 5 0 : 92 : 78 : 0.9
+T: 5 0 : 93 : 0 : 1
+T: 5 0 : 94 : 94 : 0.1
+T: 5 0 : 94 : 78 : 0.9
+T: 5 0 : 95 : 0 : 1
+T: 5 0 : 96 : 98 : 1
+T: 5 0 : 97 : 99 : 1
+T: 5 0 : 98 : 98 : 1
+T: 5 0 : 99 : 99 : 1
+T: 5 0 : 100 : 102 : 1
+T: 5 0 : 101 : 103 : 1
+T: 5 0 : 102 : 102 : 1
+T: 5 0 : 103 : 103 : 1
+T: 5 0 : 104 : 106 : 1
+T: 5 0 : 105 : 107 : 1
+T: 5 0 : 106 : 106 : 1
+T: 5 0 : 107 : 107 : 1
+T: 5 0 : 108 : 110 : 1
+T: 5 0 : 109 : 0 : 1
+T: 5 0 : 110 : 110 : 1
+T: 5 0 : 111 : 0 : 1
+T: 5 0 : 112 : 114 : 0.1
+T: 5 0 : 112 : 98 : 0.9
+T: 5 0 : 113 : 115 : 0.1
+T: 5 0 : 113 : 99 : 0.9
+T: 5 0 : 114 : 114 : 0.1
+T: 5 0 : 114 : 98 : 0.9
+T: 5 0 : 115 : 115 : 0.1
+T: 5 0 : 115 : 99 : 0.9
+T: 5 0 : 116 : 118 : 0.1
+T: 5 0 : 116 : 102 : 0.9
+T: 5 0 : 117 : 119 : 0.1
+T: 5 0 : 117 : 103 : 0.9
+T: 5 0 : 118 : 118 : 0.1
+T: 5 0 : 118 : 102 : 0.9
+T: 5 0 : 119 : 119 : 0.1
+T: 5 0 : 119 : 103 : 0.9
+T: 5 0 : 120 : 122 : 0.1
+T: 5 0 : 120 : 106 : 0.9
+T: 5 0 : 121 : 123 : 0.1
+T: 5 0 : 121 : 107 : 0.9
+T: 5 0 : 122 : 122 : 0.1
+T: 5 0 : 122 : 106 : 0.9
+T: 5 0 : 123 : 123 : 0.1
+T: 5 0 : 123 : 107 : 0.9
+T: 5 0 : 124 : 126 : 0.1
+T: 5 0 : 124 : 110 : 0.9
+T: 5 0 : 125 : 0 : 1
+T: 5 0 : 126 : 126 : 0.1
+T: 5 0 : 126 : 110 : 0.9
+T: 5 0 : 127 : 0 : 1
+T: 5 0 : 128 : 132 : 1
+T: 5 0 : 129 : 133 : 1
+T: 5 0 : 130 : 134 : 1
+T: 5 0 : 131 : 135 : 1
+T: 5 0 : 132 : 132 : 1
+T: 5 0 : 133 : 133 : 1
+T: 5 0 : 134 : 134 : 1
+T: 5 0 : 135 : 135 : 1
+T: 5 0 : 136 : 140 : 1
+T: 5 0 : 137 : 141 : 1
+T: 5 0 : 138 : 142 : 1
+T: 5 0 : 139 : 0 : 1
+T: 5 0 : 140 : 140 : 1
+T: 5 0 : 141 : 141 : 1
+T: 5 0 : 142 : 142 : 1
+T: 5 0 : 143 : 0 : 1
+T: 5 0 : 144 : 148 : 0.1
+T: 5 0 : 144 : 132 : 0.9
+T: 5 0 : 145 : 149 : 0.1
+T: 5 0 : 145 : 133 : 0.9
+T: 5 0 : 146 : 150 : 0.1
+T: 5 0 : 146 : 134 : 0.9
+T: 5 0 : 147 : 151 : 0.1
+T: 5 0 : 147 : 135 : 0.9
+T: 5 0 : 148 : 148 : 0.1
+T: 5 0 : 148 : 132 : 0.9
+T: 5 0 : 149 : 149 : 0.1
+T: 5 0 : 149 : 133 : 0.9
+T: 5 0 : 150 : 150 : 0.1
+T: 5 0 : 150 : 134 : 0.9
+T: 5 0 : 151 : 151 : 0.1
+T: 5 0 : 151 : 135 : 0.9
+T: 5 0 : 152 : 156 : 0.1
+T: 5 0 : 152 : 140 : 0.9
+T: 5 0 : 153 : 157 : 0.1
+T: 5 0 : 153 : 141 : 0.9
+T: 5 0 : 154 : 158 : 0.1
+T: 5 0 : 154 : 142 : 0.9
+T: 5 0 : 155 : 0 : 1
+T: 5 0 : 156 : 156 : 0.1
+T: 5 0 : 156 : 140 : 0.9
+T: 5 0 : 157 : 157 : 0.1
+T: 5 0 : 157 : 141 : 0.9
+T: 5 0 : 158 : 158 : 0.1
+T: 5 0 : 158 : 142 : 0.9
+T: 5 0 : 159 : 0 : 1
+T: 5 0 : 160 : 164 : 1
+T: 5 0 : 161 : 165 : 1
+T: 5 0 : 162 : 166 : 1
+T: 5 0 : 163 : 167 : 1
+T: 5 0 : 164 : 164 : 1
+T: 5 0 : 165 : 165 : 1
+T: 4 5 : 255 : 0 : 1
+T: 4 5 : 254 : 254 : 1
+T: 4 5 : 253 : 253 : 1
+T: 4 5 : 252 : 252 : 1
+T: 4 5 : 251 : 251 : 1
+T: 4 5 : 250 : 250 : 1
+T: 4 5 : 249 : 249 : 1
+T: 4 5 : 248 : 248 : 1
+T: 4 5 : 247 : 0 : 1
+T: 4 5 : 246 : 254 : 1
+T: 4 5 : 245 : 253 : 1
+T: 4 5 : 244 : 252 : 1
+T: 4 5 : 243 : 251 : 1
+T: 4 5 : 242 : 250 : 1
+T: 4 5 : 241 : 249 : 1
+T: 4 5 : 240 : 248 : 1
+T: 4 5 : 239 : 0 : 1
+T: 4 5 : 238 : 238 : 1
+T: 4 5 : 237 : 237 : 1
+T: 4 5 : 236 : 236 : 1
+T: 4 5 : 235 : 0 : 1
+T: 4 5 : 234 : 238 : 1
+T: 4 5 : 233 : 237 : 1
+T: 4 5 : 232 : 236 : 1
+T: 4 5 : 231 : 0 : 1
+T: 4 5 : 230 : 238 : 1
+T: 4 5 : 229 : 237 : 1
+T: 4 5 : 228 : 236 : 1
+T: 4 5 : 227 : 0 : 1
+T: 4 5 : 226 : 238 : 1
+T: 4 5 : 225 : 237 : 1
+T: 4 5 : 224 : 236 : 1
+T: 4 5 : 223 : 0 : 1
+T: 4 5 : 222 : 222 : 1
+T: 4 5 : 221 : 0 : 1
+T: 4 5 : 220 : 222 : 1
+T: 4 5 : 219 : 219 : 1
+T: 4 5 : 218 : 218 : 1
+T: 4 5 : 217 : 219 : 1
+T: 4 5 : 216 : 218 : 1
+T: 4 5 : 215 : 0 : 1
+T: 4 5 : 214 : 222 : 1
+T: 4 5 : 213 : 0 : 1
+T: 4 5 : 212 : 222 : 1
+T: 4 5 : 211 : 219 : 1
+T: 4 5 : 210 : 218 : 1
+T: 4 5 : 209 : 219 : 1
+T: 4 5 : 208 : 218 : 1
+T: 4 5 : 207 : 0 : 1
+T: 4 5 : 206 : 0 : 1
+T: 4 5 : 205 : 205 : 1
+T: 4 5 : 204 : 205 : 1
+T: 4 5 : 203 : 203 : 1
+T: 4 5 : 202 : 203 : 1
+T: 4 5 : 201 : 201 : 1
+T: 4 5 : 200 : 201 : 1
+T: 4 5 : 199 : 0 : 1
+T: 4 5 : 198 : 0 : 1
+T: 4 5 : 197 : 205 : 1
+T: 4 5 : 196 : 205 : 1
+T: 4 5 : 195 : 203 : 1
+T: 4 5 : 194 : 203 : 1
+T: 4 5 : 193 : 201 : 1
+T: 4 5 : 192 : 201 : 1
+T: 4 5 : 191 : 0 : 1
+T: 4 5 : 190 : 190 : 1
+T: 4 5 : 189 : 189 : 1
+T: 4 5 : 188 : 188 : 1
+T: 4 5 : 187 : 0 : 1
+T: 4 5 : 186 : 190 : 1
+T: 4 5 : 185 : 189 : 1
+T: 4 5 : 184 : 188 : 1
+T: 4 5 : 183 : 0 : 1
+T: 4 5 : 182 : 190 : 1
+T: 4 5 : 181 : 189 : 1
+T: 4 5 : 180 : 188 : 1
+T: 4 5 : 179 : 0 : 1
+T: 4 5 : 178 : 190 : 1
+T: 4 5 : 177 : 189 : 1
+T: 4 5 : 176 : 188 : 1
+T: 4 5 : 175 : 0 : 1
+T: 4 5 : 174 : 174 : 1
+T: 4 5 : 173 : 173 : 1
+T: 4 5 : 172 : 172 : 1
+T: 4 5 : 171 : 0 : 1
+T: 4 5 : 170 : 174 : 1
+T: 4 5 : 169 : 173 : 1
+T: 4 5 : 168 : 172 : 1
+T: 4 5 : 167 : 167 : 1
+T: 4 5 : 166 : 166 : 1
+T: 4 5 : 77 : 0 : 1
+T: 4 5 : 76 : 0 : 1
+T: 4 5 : 75 : 75 : 1
+T: 4 5 : 74 : 75 : 1
+T: 4 5 : 73 : 75 : 1
+T: 4 5 : 72 : 75 : 1
+T: 4 5 : 71 : 71 : 1
+T: 4 5 : 70 : 71 : 1
+T: 4 5 : 69 : 71 : 1
+T: 4 5 : 68 : 71 : 1
+T: 4 5 : 67 : 67 : 1
+T: 4 5 : 66 : 67 : 1
+T: 4 5 : 65 : 67 : 1
+T: 4 5 : 64 : 67 : 1
+T: 4 5 : 63 : 0 : 1
+T: 4 5 : 62 : 0 : 1
+T: 4 5 : 61 : 61 : 1
+T: 4 5 : 60 : 61 : 1
+T: 4 5 : 59 : 59 : 1
+T: 4 5 : 58 : 59 : 1
+T: 4 5 : 57 : 57 : 1
+T: 4 5 : 56 : 57 : 1
+T: 4 5 : 55 : 0 : 1
+T: 4 5 : 54 : 0 : 1
+T: 4 5 : 53 : 61 : 1
+T: 4 5 : 52 : 61 : 1
+T: 4 5 : 51 : 59 : 1
+T: 4 5 : 50 : 59 : 1
+T: 4 5 : 49 : 57 : 1
+T: 4 5 : 48 : 57 : 1
+T: 4 5 : 47 : 0 : 1
+T: 4 5 : 46 : 0 : 1
+T: 4 5 : 45 : 45 : 1
+T: 4 5 : 44 : 45 : 1
+T: 4 5 : 43 : 0 : 1
+T: 4 5 : 42 : 0 : 1
+T: 4 5 : 41 : 45 : 1
+T: 4 5 : 40 : 45 : 1
+T: 4 5 : 39 : 39 : 1
+T: 4 5 : 38 : 39 : 1
+T: 4 5 : 37 : 37 : 1
+T: 4 5 : 36 : 37 : 1
+T: 4 5 : 15 : 0 : 1
+T: 4 5 : 14 : 0 : 1
+T: 4 5 : 13 : 13 : 1
+T: 4 5 : 12 : 13 : 1
+T: 4 5 : 11 : 11 : 1
+T: 4 5 : 10 : 11 : 1
+T: 4 5 : 9 : 9 : 1
+T: 4 5 : 8 : 9 : 1
+T: 4 5 : 7 : 7 : 1
+T: 4 5 : 6 : 7 : 1
+T: 4 5 : 1 : 1 : 1
+T: 4 5 : 0 : 1 : 1
+T: 4 5 : 2 : 3 : 1
+T: 4 5 : 3 : 3 : 1
+T: 4 5 : 4 : 5 : 1
+T: 4 5 : 5 : 5 : 1
+T: 4 5 : 16 : 19 : 1
+T: 4 5 : 17 : 19 : 1
+T: 4 5 : 18 : 19 : 1
+T: 4 5 : 19 : 19 : 1
+T: 4 5 : 20 : 23 : 1
+T: 4 5 : 21 : 23 : 1
+T: 4 5 : 22 : 23 : 1
+T: 4 5 : 23 : 23 : 1
+T: 4 5 : 24 : 27 : 1
+T: 4 5 : 25 : 27 : 1
+T: 4 5 : 26 : 27 : 1
+T: 4 5 : 27 : 27 : 1
+T: 4 5 : 28 : 0 : 1
+T: 4 5 : 29 : 0 : 1
+T: 4 5 : 30 : 0 : 1
+T: 4 5 : 31 : 0 : 1
+T: 4 5 : 32 : 37 : 1
+T: 4 5 : 33 : 37 : 1
+T: 4 5 : 34 : 39 : 1
+T: 4 5 : 35 : 39 : 1
+T: 4 5 : 78 : 0 : 1
+T: 4 5 : 79 : 0 : 1
+T: 4 5 : 80 : 82 : 1
+T: 4 5 : 81 : 83 : 1
+T: 4 5 : 82 : 82 : 1
+T: 4 5 : 83 : 83 : 1
+T: 4 5 : 84 : 86 : 1
+T: 4 5 : 85 : 87 : 1
+T: 4 5 : 86 : 86 : 1
+T: 4 5 : 87 : 87 : 1
+T: 4 5 : 88 : 90 : 1
+T: 4 5 : 89 : 91 : 1
+T: 4 5 : 90 : 90 : 1
+T: 4 5 : 91 : 91 : 1
+T: 4 5 : 92 : 94 : 1
+T: 4 5 : 93 : 0 : 1
+T: 4 5 : 94 : 94 : 1
+T: 4 5 : 95 : 0 : 1
+T: 4 5 : 96 : 102 : 1
+T: 4 5 : 97 : 103 : 1
+T: 4 5 : 98 : 102 : 1
+T: 4 5 : 99 : 103 : 1
+T: 4 5 : 100 : 102 : 1
+T: 4 5 : 101 : 103 : 1
+T: 4 5 : 102 : 102 : 1
+T: 4 5 : 103 : 103 : 1
+T: 4 5 : 104 : 110 : 1
+T: 4 5 : 105 : 0 : 1
+T: 4 5 : 106 : 110 : 1
+T: 4 5 : 107 : 0 : 1
+T: 4 5 : 108 : 110 : 1
+T: 4 5 : 109 : 0 : 1
+T: 4 5 : 110 : 110 : 1
+T: 4 5 : 111 : 0 : 1
+T: 4 5 : 112 : 122 : 1
+T: 4 5 : 113 : 123 : 1
+T: 4 5 : 114 : 122 : 1
+T: 4 5 : 115 : 123 : 1
+T: 4 5 : 116 : 126 : 1
+T: 4 5 : 117 : 0 : 1
+T: 4 5 : 118 : 126 : 1
+T: 4 5 : 119 : 0 : 1
+T: 4 5 : 120 : 122 : 1
+T: 4 5 : 121 : 123 : 1
+T: 4 5 : 122 : 122 : 1
+T: 4 5 : 123 : 123 : 1
+T: 4 5 : 124 : 126 : 1
+T: 4 5 : 125 : 0 : 1
+T: 4 5 : 126 : 126 : 1
+T: 4 5 : 127 : 0 : 1
+T: 4 5 : 128 : 133 : 1
+T: 4 5 : 129 : 133 : 1
+T: 4 5 : 130 : 135 : 1
+T: 4 5 : 131 : 135 : 1
+T: 4 5 : 132 : 133 : 1
+T: 4 5 : 133 : 133 : 1
+T: 4 5 : 134 : 135 : 1
+T: 4 5 : 135 : 135 : 1
+T: 4 5 : 136 : 141 : 1
+T: 4 5 : 137 : 141 : 1
+T: 4 5 : 138 : 0 : 1
+T: 4 5 : 139 : 0 : 1
+T: 4 5 : 140 : 141 : 1
+T: 4 5 : 141 : 141 : 1
+T: 4 5 : 142 : 0 : 1
+T: 4 5 : 143 : 0 : 1
+T: 4 5 : 144 : 150 : 1
+T: 4 5 : 145 : 151 : 1
+T: 4 5 : 146 : 150 : 1
+T: 4 5 : 147 : 151 : 1
+T: 4 5 : 148 : 150 : 1
+T: 4 5 : 149 : 151 : 1
+T: 4 5 : 150 : 150 : 1
+T: 4 5 : 151 : 151 : 1
+T: 4 5 : 152 : 158 : 1
+T: 4 5 : 153 : 0 : 1
+T: 4 5 : 154 : 158 : 1
+T: 4 5 : 155 : 0 : 1
+T: 4 5 : 156 : 158 : 1
+T: 4 5 : 157 : 0 : 1
+T: 4 5 : 158 : 158 : 1
+T: 4 5 : 159 : 0 : 1
+T: 4 5 : 160 : 164 : 1
+T: 4 5 : 161 : 165 : 1
+T: 4 5 : 162 : 166 : 1
+T: 4 5 : 163 : 167 : 1
+T: 4 5 : 164 : 164 : 1
+T: 4 5 : 165 : 165 : 1
+T: 4 4 : 255 : 0 : 1
+T: 4 4 : 254 : 254 : 1
+T: 4 4 : 253 : 253 : 1
+T: 4 4 : 252 : 252 : 1
+T: 4 4 : 251 : 251 : 1
+T: 4 4 : 250 : 250 : 1
+T: 4 4 : 249 : 249 : 1
+T: 4 4 : 248 : 248 : 1
+T: 4 4 : 247 : 0 : 1
+T: 4 4 : 246 : 254 : 1
+T: 4 4 : 245 : 253 : 1
+T: 4 4 : 244 : 252 : 1
+T: 4 4 : 243 : 251 : 1
+T: 4 4 : 242 : 250 : 1
+T: 4 4 : 241 : 249 : 1
+T: 4 4 : 240 : 248 : 1
+T: 4 4 : 239 : 0 : 1
+T: 4 4 : 238 : 238 : 1
+T: 4 4 : 237 : 237 : 1
+T: 4 4 : 236 : 236 : 1
+T: 4 4 : 235 : 0 : 1
+T: 4 4 : 234 : 238 : 1
+T: 4 4 : 233 : 237 : 1
+T: 4 4 : 232 : 236 : 1
+T: 4 4 : 231 : 0 : 1
+T: 4 4 : 230 : 238 : 1
+T: 4 4 : 229 : 237 : 1
+T: 4 4 : 228 : 236 : 1
+T: 4 4 : 227 : 0 : 1
+T: 4 4 : 226 : 238 : 1
+T: 4 4 : 225 : 237 : 1
+T: 4 4 : 224 : 236 : 1
+T: 4 4 : 223 : 0 : 1
+T: 4 4 : 222 : 222 : 1
+T: 4 4 : 221 : 0 : 1
+T: 4 4 : 220 : 222 : 1
+T: 4 4 : 219 : 219 : 1
+T: 4 4 : 218 : 218 : 1
+T: 4 4 : 217 : 219 : 1
+T: 4 4 : 216 : 218 : 1
+T: 4 4 : 215 : 0 : 1
+T: 4 4 : 214 : 222 : 1
+T: 4 4 : 213 : 0 : 1
+T: 4 4 : 212 : 222 : 1
+T: 4 4 : 211 : 219 : 1
+T: 4 4 : 210 : 218 : 1
+T: 4 4 : 209 : 219 : 1
+T: 4 4 : 208 : 218 : 1
+T: 4 4 : 207 : 0 : 1
+T: 4 4 : 206 : 0 : 1
+T: 4 4 : 205 : 205 : 1
+T: 4 4 : 204 : 205 : 1
+T: 4 4 : 203 : 203 : 1
+T: 4 4 : 202 : 203 : 1
+T: 4 4 : 201 : 201 : 1
+T: 4 4 : 200 : 201 : 1
+T: 4 4 : 199 : 0 : 1
+T: 4 4 : 198 : 0 : 1
+T: 4 4 : 197 : 205 : 1
+T: 4 4 : 196 : 205 : 1
+T: 4 4 : 195 : 203 : 1
+T: 4 4 : 194 : 203 : 1
+T: 4 4 : 193 : 201 : 1
+T: 4 4 : 192 : 201 : 1
+T: 4 4 : 191 : 0 : 1
+T: 4 4 : 190 : 190 : 1
+T: 4 4 : 189 : 189 : 1
+T: 4 4 : 188 : 188 : 1
+T: 4 4 : 187 : 0 : 1
+T: 4 4 : 186 : 190 : 1
+T: 4 4 : 185 : 189 : 1
+T: 4 4 : 184 : 188 : 1
+T: 4 4 : 183 : 0 : 1
+T: 4 4 : 182 : 190 : 1
+T: 4 4 : 181 : 189 : 1
+T: 4 4 : 180 : 188 : 1
+T: 4 4 : 179 : 0 : 1
+T: 4 4 : 178 : 190 : 1
+T: 4 4 : 177 : 189 : 1
+T: 4 4 : 176 : 188 : 1
+T: 4 4 : 175 : 0 : 1
+T: 4 4 : 174 : 174 : 1
+T: 4 4 : 173 : 173 : 1
+T: 4 4 : 172 : 172 : 1
+T: 4 4 : 171 : 0 : 1
+T: 4 4 : 170 : 174 : 1
+T: 4 4 : 169 : 173 : 1
+T: 4 4 : 168 : 172 : 1
+T: 4 4 : 167 : 167 : 1
+T: 4 4 : 166 : 166 : 1
+T: 4 4 : 77 : 0 : 1
+T: 4 4 : 76 : 0 : 1
+T: 4 4 : 75 : 75 : 1
+T: 4 4 : 74 : 75 : 1
+T: 4 4 : 73 : 75 : 1
+T: 4 4 : 72 : 75 : 1
+T: 4 4 : 71 : 71 : 1
+T: 4 4 : 70 : 71 : 1
+T: 4 4 : 69 : 71 : 1
+T: 4 4 : 68 : 71 : 1
+T: 4 4 : 67 : 67 : 1
+T: 4 4 : 66 : 67 : 1
+T: 4 4 : 65 : 67 : 1
+T: 4 4 : 64 : 67 : 1
+T: 4 4 : 63 : 0 : 1
+T: 4 4 : 62 : 0 : 1
+T: 4 4 : 61 : 61 : 1
+T: 4 4 : 60 : 61 : 1
+T: 4 4 : 59 : 59 : 1
+T: 4 4 : 58 : 59 : 1
+T: 4 4 : 57 : 57 : 1
+T: 4 4 : 56 : 57 : 1
+T: 4 4 : 55 : 0 : 1
+T: 4 4 : 54 : 0 : 1
+T: 4 4 : 53 : 61 : 1
+T: 4 4 : 52 : 61 : 1
+T: 4 4 : 51 : 59 : 1
+T: 4 4 : 50 : 59 : 1
+T: 4 4 : 49 : 57 : 1
+T: 4 4 : 48 : 57 : 1
+T: 4 4 : 47 : 0 : 1
+T: 4 4 : 46 : 0 : 1
+T: 4 4 : 45 : 45 : 1
+T: 4 4 : 44 : 45 : 1
+T: 4 4 : 43 : 0 : 1
+T: 4 4 : 42 : 0 : 1
+T: 4 4 : 41 : 45 : 1
+T: 4 4 : 40 : 45 : 1
+T: 4 4 : 39 : 39 : 1
+T: 4 4 : 38 : 39 : 1
+T: 4 4 : 37 : 37 : 1
+T: 4 4 : 36 : 37 : 1
+T: 4 4 : 15 : 0 : 1
+T: 4 4 : 14 : 0 : 1
+T: 4 4 : 13 : 13 : 1
+T: 4 4 : 12 : 13 : 1
+T: 4 4 : 11 : 11 : 1
+T: 4 4 : 10 : 11 : 1
+T: 4 4 : 9 : 9 : 1
+T: 4 4 : 8 : 9 : 1
+T: 4 4 : 7 : 7 : 1
+T: 4 4 : 6 : 7 : 1
+T: 4 4 : 1 : 1 : 1
+T: 4 4 : 0 : 1 : 1
+T: 4 4 : 2 : 3 : 1
+T: 4 4 : 3 : 3 : 1
+T: 4 4 : 4 : 5 : 1
+T: 4 4 : 5 : 5 : 1
+T: 4 4 : 16 : 19 : 1
+T: 4 4 : 17 : 19 : 1
+T: 4 4 : 18 : 19 : 1
+T: 4 4 : 19 : 19 : 1
+T: 4 4 : 20 : 23 : 1
+T: 4 4 : 21 : 23 : 1
+T: 4 4 : 22 : 23 : 1
+T: 4 4 : 23 : 23 : 1
+T: 4 4 : 24 : 27 : 1
+T: 4 4 : 25 : 27 : 1
+T: 4 4 : 26 : 27 : 1
+T: 4 4 : 27 : 27 : 1
+T: 4 4 : 28 : 0 : 1
+T: 4 4 : 29 : 0 : 1
+T: 4 4 : 30 : 0 : 1
+T: 4 4 : 31 : 0 : 1
+T: 4 4 : 32 : 37 : 1
+T: 4 4 : 33 : 37 : 1
+T: 4 4 : 34 : 39 : 1
+T: 4 4 : 35 : 39 : 1
+T: 4 4 : 78 : 0 : 1
+T: 4 4 : 79 : 0 : 1
+T: 4 4 : 80 : 82 : 1
+T: 4 4 : 81 : 83 : 1
+T: 4 4 : 82 : 82 : 1
+T: 4 4 : 83 : 83 : 1
+T: 4 4 : 84 : 86 : 1
+T: 4 4 : 85 : 87 : 1
+T: 4 4 : 86 : 86 : 1
+T: 4 4 : 87 : 87 : 1
+T: 4 4 : 88 : 90 : 1
+T: 4 4 : 89 : 91 : 1
+T: 4 4 : 90 : 90 : 1
+T: 4 4 : 91 : 91 : 1
+T: 4 4 : 92 : 94 : 1
+T: 4 4 : 93 : 0 : 1
+T: 4 4 : 94 : 94 : 1
+T: 4 4 : 95 : 0 : 1
+T: 4 4 : 96 : 102 : 1
+T: 4 4 : 97 : 103 : 1
+T: 4 4 : 98 : 102 : 1
+T: 4 4 : 99 : 103 : 1
+T: 4 4 : 100 : 102 : 1
+T: 4 4 : 101 : 103 : 1
+T: 4 4 : 102 : 102 : 1
+T: 4 4 : 103 : 103 : 1
+T: 4 4 : 104 : 110 : 1
+T: 4 4 : 105 : 0 : 1
+T: 4 4 : 106 : 110 : 1
+T: 4 4 : 107 : 0 : 1
+T: 4 4 : 108 : 110 : 1
+T: 4 4 : 109 : 0 : 1
+T: 4 4 : 110 : 110 : 1
+T: 4 4 : 111 : 0 : 1
+T: 4 4 : 112 : 122 : 1
+T: 4 4 : 113 : 123 : 1
+T: 4 4 : 114 : 122 : 1
+T: 4 4 : 115 : 123 : 1
+T: 4 4 : 116 : 126 : 1
+T: 4 4 : 117 : 0 : 1
+T: 4 4 : 118 : 126 : 1
+T: 4 4 : 119 : 0 : 1
+T: 4 4 : 120 : 122 : 1
+T: 4 4 : 121 : 123 : 1
+T: 4 4 : 122 : 122 : 1
+T: 4 4 : 123 : 123 : 1
+T: 4 4 : 124 : 126 : 1
+T: 4 4 : 125 : 0 : 1
+T: 4 4 : 126 : 126 : 1
+T: 4 4 : 127 : 0 : 1
+T: 4 4 : 128 : 133 : 1
+T: 4 4 : 129 : 133 : 1
+T: 4 4 : 130 : 135 : 1
+T: 4 4 : 131 : 135 : 1
+T: 4 4 : 132 : 133 : 1
+T: 4 4 : 133 : 133 : 1
+T: 4 4 : 134 : 135 : 1
+T: 4 4 : 135 : 135 : 1
+T: 4 4 : 136 : 141 : 1
+T: 4 4 : 137 : 141 : 1
+T: 4 4 : 138 : 0 : 1
+T: 4 4 : 139 : 0 : 1
+T: 4 4 : 140 : 141 : 1
+T: 4 4 : 141 : 141 : 1
+T: 4 4 : 142 : 0 : 1
+T: 4 4 : 143 : 0 : 1
+T: 4 4 : 144 : 150 : 1
+T: 4 4 : 145 : 151 : 1
+T: 4 4 : 146 : 150 : 1
+T: 4 4 : 147 : 151 : 1
+T: 4 4 : 148 : 150 : 1
+T: 4 4 : 149 : 151 : 1
+T: 4 4 : 150 : 150 : 1
+T: 4 4 : 151 : 151 : 1
+T: 4 4 : 152 : 158 : 1
+T: 4 4 : 153 : 0 : 1
+T: 4 4 : 154 : 158 : 1
+T: 4 4 : 155 : 0 : 1
+T: 4 4 : 156 : 158 : 1
+T: 4 4 : 157 : 0 : 1
+T: 4 4 : 158 : 158 : 1
+T: 4 4 : 159 : 0 : 1
+T: 4 4 : 160 : 164 : 1
+T: 4 4 : 161 : 165 : 1
+T: 4 4 : 162 : 166 : 1
+T: 4 4 : 163 : 167 : 1
+T: 4 4 : 164 : 164 : 1
+T: 4 4 : 165 : 165 : 1
+T: 4 3 : 255 : 0 : 1
+T: 4 3 : 254 : 254 : 1
+T: 4 3 : 253 : 253 : 1
+T: 4 3 : 252 : 252 : 1
+T: 4 3 : 251 : 251 : 1
+T: 4 3 : 250 : 250 : 1
+T: 4 3 : 249 : 249 : 1
+T: 4 3 : 248 : 248 : 1
+T: 4 3 : 247 : 0 : 1
+T: 4 3 : 246 : 254 : 1
+T: 4 3 : 245 : 253 : 1
+T: 4 3 : 244 : 252 : 1
+T: 4 3 : 243 : 251 : 1
+T: 4 3 : 242 : 250 : 1
+T: 4 3 : 241 : 249 : 1
+T: 4 3 : 240 : 248 : 1
+T: 4 3 : 239 : 0 : 1
+T: 4 3 : 238 : 238 : 1
+T: 4 3 : 237 : 237 : 1
+T: 4 3 : 236 : 236 : 1
+T: 4 3 : 235 : 235 : 1
+T: 4 3 : 234 : 234 : 1
+T: 4 3 : 233 : 233 : 1
+T: 4 3 : 232 : 232 : 1
+T: 4 3 : 231 : 0 : 1
+T: 4 3 : 230 : 238 : 1
+T: 4 3 : 229 : 237 : 1
+T: 4 3 : 228 : 236 : 1
+T: 4 3 : 227 : 235 : 1
+T: 4 3 : 226 : 234 : 1
+T: 4 3 : 225 : 233 : 1
+T: 4 3 : 224 : 232 : 1
+T: 4 3 : 223 : 0 : 1
+T: 4 3 : 222 : 254 : 0.9
+T: 4 3 : 222 : 222 : 0.1
+T: 4 3 : 221 : 253 : 0.9
+T: 4 3 : 221 : 221 : 0.1
+T: 4 3 : 220 : 252 : 0.9
+T: 4 3 : 220 : 220 : 0.1
+T: 4 3 : 219 : 251 : 0.9
+T: 4 3 : 219 : 219 : 0.1
+T: 4 3 : 218 : 250 : 0.9
+T: 4 3 : 218 : 218 : 0.1
+T: 4 3 : 217 : 249 : 0.9
+T: 4 3 : 217 : 217 : 0.1
+T: 4 3 : 216 : 248 : 0.9
+T: 4 3 : 216 : 216 : 0.1
+T: 4 3 : 215 : 0 : 1
+T: 4 3 : 214 : 254 : 0.9
+T: 4 3 : 214 : 222 : 0.1
+T: 4 3 : 213 : 253 : 0.9
+T: 4 3 : 213 : 221 : 0.1
+T: 4 3 : 212 : 252 : 0.9
+T: 4 3 : 212 : 220 : 0.1
+T: 4 3 : 211 : 251 : 0.9
+T: 4 3 : 211 : 219 : 0.1
+T: 4 3 : 210 : 250 : 0.9
+T: 4 3 : 210 : 218 : 0.1
+T: 4 3 : 209 : 249 : 0.9
+T: 4 3 : 209 : 217 : 0.1
+T: 4 3 : 208 : 248 : 0.9
+T: 4 3 : 208 : 216 : 0.1
+T: 4 3 : 207 : 0 : 1
+T: 4 3 : 206 : 238 : 0.9
+T: 4 3 : 206 : 206 : 0.1
+T: 4 3 : 205 : 237 : 0.9
+T: 4 3 : 205 : 205 : 0.1
+T: 4 3 : 204 : 236 : 0.9
+T: 4 3 : 204 : 204 : 0.1
+T: 4 3 : 203 : 235 : 0.9
+T: 4 3 : 203 : 203 : 0.1
+T: 4 3 : 202 : 234 : 0.9
+T: 4 3 : 202 : 202 : 0.1
+T: 4 3 : 201 : 233 : 0.9
+T: 4 3 : 201 : 201 : 0.1
+T: 4 3 : 200 : 232 : 0.9
+T: 4 3 : 200 : 200 : 0.1
+T: 4 3 : 199 : 0 : 1
+T: 4 3 : 198 : 238 : 0.9
+T: 4 3 : 198 : 206 : 0.1
+T: 4 3 : 197 : 237 : 0.9
+T: 4 3 : 197 : 205 : 0.1
+T: 4 3 : 196 : 236 : 0.9
+T: 4 3 : 196 : 204 : 0.1
+T: 4 3 : 195 : 235 : 0.9
+T: 4 3 : 195 : 203 : 0.1
+T: 4 3 : 194 : 234 : 0.9
+T: 4 3 : 194 : 202 : 0.1
+T: 4 3 : 193 : 233 : 0.9
+T: 4 3 : 193 : 201 : 0.1
+T: 4 3 : 192 : 232 : 0.9
+T: 4 3 : 192 : 200 : 0.1
+T: 4 3 : 191 : 0 : 1
+T: 4 3 : 190 : 190 : 1
+T: 4 3 : 189 : 189 : 1
+T: 4 3 : 188 : 188 : 1
+T: 4 3 : 187 : 0 : 1
+T: 4 3 : 186 : 190 : 1
+T: 4 3 : 185 : 189 : 1
+T: 4 3 : 184 : 188 : 1
+T: 4 3 : 183 : 183 : 1
+T: 4 3 : 182 : 182 : 1
+T: 4 3 : 181 : 181 : 1
+T: 4 3 : 180 : 180 : 1
+T: 4 3 : 179 : 183 : 1
+T: 4 3 : 178 : 182 : 1
+T: 4 3 : 177 : 181 : 1
+T: 4 3 : 176 : 180 : 1
+T: 4 3 : 175 : 0 : 1
+T: 4 3 : 174 : 174 : 1
+T: 4 3 : 173 : 173 : 1
+T: 4 3 : 172 : 172 : 1
+T: 4 3 : 171 : 0 : 1
+T: 4 3 : 170 : 174 : 1
+T: 4 3 : 169 : 173 : 1
+T: 4 3 : 168 : 172 : 1
+T: 4 3 : 167 : 167 : 1
+T: 4 3 : 166 : 166 : 1
+T: 4 3 : 77 : 0 : 1
+T: 4 3 : 76 : 110 : 0.9
+T: 4 3 : 76 : 78 : 0.1
+T: 4 3 : 75 : 107 : 0.9
+T: 4 3 : 75 : 75 : 0.1
+T: 4 3 : 74 : 106 : 0.9
+T: 4 3 : 74 : 74 : 0.1
+T: 4 3 : 73 : 107 : 0.9
+T: 4 3 : 73 : 75 : 0.1
+T: 4 3 : 72 : 106 : 0.9
+T: 4 3 : 72 : 74 : 0.1
+T: 4 3 : 71 : 103 : 0.9
+T: 4 3 : 71 : 71 : 0.1
+T: 4 3 : 70 : 102 : 0.9
+T: 4 3 : 70 : 70 : 0.1
+T: 4 3 : 69 : 103 : 0.9
+T: 4 3 : 69 : 71 : 0.1
+T: 4 3 : 68 : 102 : 0.9
+T: 4 3 : 68 : 70 : 0.1
+T: 4 3 : 67 : 99 : 0.9
+T: 4 3 : 67 : 67 : 0.1
+T: 4 3 : 66 : 98 : 0.9
+T: 4 3 : 66 : 66 : 0.1
+T: 4 3 : 65 : 99 : 0.9
+T: 4 3 : 65 : 67 : 0.1
+T: 4 3 : 64 : 98 : 0.9
+T: 4 3 : 64 : 66 : 0.1
+T: 4 3 : 63 : 0 : 1
+T: 4 3 : 62 : 0 : 1
+T: 4 3 : 61 : 61 : 1
+T: 4 3 : 60 : 61 : 1
+T: 4 3 : 59 : 59 : 1
+T: 4 3 : 58 : 59 : 1
+T: 4 3 : 57 : 57 : 1
+T: 4 3 : 56 : 57 : 1
+T: 4 3 : 55 : 55 : 1
+T: 4 3 : 54 : 55 : 1
+T: 4 3 : 53 : 53 : 1
+T: 4 3 : 52 : 53 : 1
+T: 4 3 : 51 : 51 : 1
+T: 4 3 : 50 : 51 : 1
+T: 4 3 : 49 : 49 : 1
+T: 4 3 : 48 : 49 : 1
+T: 4 3 : 47 : 0 : 1
+T: 4 3 : 46 : 0 : 1
+T: 4 3 : 45 : 45 : 1
+T: 4 3 : 44 : 45 : 1
+T: 4 3 : 43 : 43 : 1
+T: 4 3 : 42 : 43 : 1
+T: 4 3 : 41 : 41 : 1
+T: 4 3 : 40 : 41 : 1
+T: 4 3 : 39 : 39 : 1
+T: 4 3 : 38 : 39 : 1
+T: 4 3 : 37 : 37 : 1
+T: 4 3 : 36 : 37 : 1
+T: 4 3 : 15 : 0 : 1
+T: 4 3 : 14 : 0 : 1
+T: 4 3 : 13 : 45 : 0.9
+T: 4 3 : 13 : 13 : 0.1
+T: 4 3 : 12 : 45 : 0.9
+T: 4 3 : 12 : 13 : 0.1
+T: 4 3 : 11 : 43 : 0.9
+T: 4 3 : 11 : 11 : 0.1
+T: 4 3 : 10 : 43 : 0.9
+T: 4 3 : 10 : 11 : 0.1
+T: 4 3 : 9 : 41 : 0.9
+T: 4 3 : 9 : 9 : 0.1
+T: 4 3 : 8 : 41 : 0.9
+T: 4 3 : 8 : 9 : 0.1
+T: 4 3 : 7 : 39 : 0.9
+T: 4 3 : 7 : 7 : 0.1
+T: 4 3 : 6 : 39 : 0.9
+T: 4 3 : 6 : 7 : 0.1
+T: 4 3 : 1 : 33 : 0.9
+T: 4 3 : 1 : 1 : 0.1
+T: 4 3 : 0 : 33 : 0.9
+T: 4 3 : 0 : 1 : 0.1
+T: 4 3 : 2 : 35 : 0.9
+T: 4 3 : 2 : 3 : 0.1
+T: 4 3 : 3 : 35 : 0.9
+T: 4 3 : 3 : 3 : 0.1
+T: 4 3 : 4 : 37 : 0.9
+T: 4 3 : 4 : 5 : 0.1
+T: 4 3 : 5 : 37 : 0.9
+T: 4 3 : 5 : 5 : 0.1
+T: 4 3 : 16 : 49 : 0.9
+T: 4 3 : 16 : 17 : 0.1
+T: 4 3 : 17 : 49 : 0.9
+T: 4 3 : 17 : 17 : 0.1
+T: 4 3 : 18 : 51 : 0.9
+T: 4 3 : 18 : 19 : 0.1
+T: 4 3 : 19 : 51 : 0.9
+T: 4 3 : 19 : 19 : 0.1
+T: 4 3 : 20 : 53 : 0.9
+T: 4 3 : 20 : 21 : 0.1
+T: 4 3 : 21 : 53 : 0.9
+T: 4 3 : 21 : 21 : 0.1
+T: 4 3 : 22 : 55 : 0.9
+T: 4 3 : 22 : 23 : 0.1
+T: 4 3 : 23 : 55 : 0.9
+T: 4 3 : 23 : 23 : 0.1
+T: 4 3 : 24 : 57 : 0.9
+T: 4 3 : 24 : 25 : 0.1
+T: 4 3 : 25 : 57 : 0.9
+T: 4 3 : 25 : 25 : 0.1
+T: 4 3 : 26 : 59 : 0.9
+T: 4 3 : 26 : 27 : 0.1
+T: 4 3 : 27 : 59 : 0.9
+T: 4 3 : 27 : 27 : 0.1
+T: 4 3 : 28 : 61 : 0.9
+T: 4 3 : 28 : 29 : 0.1
+T: 4 3 : 29 : 61 : 0.9
+T: 4 3 : 29 : 29 : 0.1
+T: 4 3 : 30 : 0 : 1
+T: 4 3 : 31 : 0 : 1
+T: 4 3 : 32 : 33 : 1
+T: 4 3 : 33 : 33 : 1
+T: 4 3 : 34 : 35 : 1
+T: 4 3 : 35 : 35 : 1
+T: 4 3 : 78 : 110 : 0.9
+T: 4 3 : 78 : 78 : 0.1
+T: 4 3 : 79 : 0 : 1
+T: 4 3 : 80 : 114 : 0.9
+T: 4 3 : 80 : 82 : 0.1
+T: 4 3 : 81 : 115 : 0.9
+T: 4 3 : 81 : 83 : 0.1
+T: 4 3 : 82 : 114 : 0.9
+T: 4 3 : 82 : 82 : 0.1
+T: 4 3 : 83 : 115 : 0.9
+T: 4 3 : 83 : 83 : 0.1
+T: 4 3 : 84 : 118 : 0.9
+T: 4 3 : 84 : 86 : 0.1
+T: 4 3 : 85 : 119 : 0.9
+T: 4 3 : 85 : 87 : 0.1
+T: 4 3 : 86 : 118 : 0.9
+T: 4 3 : 86 : 86 : 0.1
+T: 4 3 : 87 : 119 : 0.9
+T: 4 3 : 87 : 87 : 0.1
+T: 4 3 : 88 : 122 : 0.9
+T: 4 3 : 88 : 90 : 0.1
+T: 4 3 : 89 : 123 : 0.9
+T: 4 3 : 89 : 91 : 0.1
+T: 4 3 : 90 : 122 : 0.9
+T: 4 3 : 90 : 90 : 0.1
+T: 4 3 : 91 : 123 : 0.9
+T: 4 3 : 91 : 91 : 0.1
+T: 4 3 : 92 : 126 : 0.9
+T: 4 3 : 92 : 94 : 0.1
+T: 4 3 : 93 : 0 : 1
+T: 4 3 : 94 : 126 : 0.9
+T: 4 3 : 94 : 94 : 0.1
+T: 4 3 : 95 : 0 : 1
+T: 4 3 : 96 : 98 : 1
+T: 4 3 : 97 : 99 : 1
+T: 4 3 : 98 : 98 : 1
+T: 4 3 : 99 : 99 : 1
+T: 4 3 : 100 : 102 : 1
+T: 4 3 : 101 : 103 : 1
+T: 4 3 : 102 : 102 : 1
+T: 4 3 : 103 : 103 : 1
+T: 4 3 : 104 : 106 : 1
+T: 4 3 : 105 : 107 : 1
+T: 4 3 : 106 : 106 : 1
+T: 4 3 : 107 : 107 : 1
+T: 4 3 : 108 : 110 : 1
+T: 4 3 : 109 : 0 : 1
+T: 4 3 : 110 : 110 : 1
+T: 4 3 : 111 : 0 : 1
+T: 4 3 : 112 : 114 : 1
+T: 4 3 : 113 : 115 : 1
+T: 4 3 : 114 : 114 : 1
+T: 4 3 : 115 : 115 : 1
+T: 4 3 : 116 : 118 : 1
+T: 4 3 : 117 : 119 : 1
+T: 4 3 : 118 : 118 : 1
+T: 4 3 : 119 : 119 : 1
+T: 4 3 : 120 : 122 : 1
+T: 4 3 : 121 : 123 : 1
+T: 4 3 : 122 : 122 : 1
+T: 4 3 : 123 : 123 : 1
+T: 4 3 : 124 : 126 : 1
+T: 4 3 : 125 : 0 : 1
+T: 4 3 : 126 : 126 : 1
+T: 4 3 : 127 : 0 : 1
+T: 4 3 : 128 : 164 : 0.9
+T: 4 3 : 128 : 132 : 0.1
+T: 4 3 : 129 : 165 : 0.9
+T: 4 3 : 129 : 133 : 0.1
+T: 4 3 : 130 : 166 : 0.9
+T: 4 3 : 130 : 134 : 0.1
+T: 4 3 : 131 : 167 : 0.9
+T: 4 3 : 131 : 135 : 0.1
+T: 4 3 : 132 : 164 : 0.9
+T: 4 3 : 132 : 132 : 0.1
+T: 4 3 : 133 : 165 : 0.9
+T: 4 3 : 133 : 133 : 0.1
+T: 4 3 : 134 : 166 : 0.9
+T: 4 3 : 134 : 134 : 0.1
+T: 4 3 : 135 : 167 : 0.9
+T: 4 3 : 135 : 135 : 0.1
+T: 4 3 : 136 : 172 : 0.9
+T: 4 3 : 136 : 140 : 0.1
+T: 4 3 : 137 : 173 : 0.9
+T: 4 3 : 137 : 141 : 0.1
+T: 4 3 : 138 : 174 : 0.9
+T: 4 3 : 138 : 142 : 0.1
+T: 4 3 : 139 : 0 : 1
+T: 4 3 : 140 : 172 : 0.9
+T: 4 3 : 140 : 140 : 0.1
+T: 4 3 : 141 : 173 : 0.9
+T: 4 3 : 141 : 141 : 0.1
+T: 4 3 : 142 : 174 : 0.9
+T: 4 3 : 142 : 142 : 0.1
+T: 4 3 : 143 : 0 : 1
+T: 4 3 : 144 : 180 : 0.9
+T: 4 3 : 144 : 148 : 0.1
+T: 4 3 : 145 : 181 : 0.9
+T: 4 3 : 145 : 149 : 0.1
+T: 4 3 : 146 : 182 : 0.9
+T: 4 3 : 146 : 150 : 0.1
+T: 4 3 : 147 : 183 : 0.9
+T: 4 3 : 147 : 151 : 0.1
+T: 4 3 : 148 : 180 : 0.9
+T: 4 3 : 148 : 148 : 0.1
+T: 4 3 : 149 : 181 : 0.9
+T: 4 3 : 149 : 149 : 0.1
+T: 4 3 : 150 : 182 : 0.9
+T: 4 3 : 150 : 150 : 0.1
+T: 4 3 : 151 : 183 : 0.9
+T: 4 3 : 151 : 151 : 0.1
+T: 4 3 : 152 : 188 : 0.9
+T: 4 3 : 152 : 156 : 0.1
+T: 4 3 : 153 : 189 : 0.9
+T: 4 3 : 153 : 157 : 0.1
+T: 4 3 : 154 : 190 : 0.9
+T: 4 3 : 154 : 158 : 0.1
+T: 4 3 : 155 : 0 : 1
+T: 4 3 : 156 : 188 : 0.9
+T: 4 3 : 156 : 156 : 0.1
+T: 4 3 : 157 : 189 : 0.9
+T: 4 3 : 157 : 157 : 0.1
+T: 4 3 : 158 : 190 : 0.9
+T: 4 3 : 158 : 158 : 0.1
+T: 4 3 : 159 : 0 : 1
+T: 4 3 : 160 : 164 : 1
+T: 4 3 : 161 : 165 : 1
+T: 4 3 : 162 : 166 : 1
+T: 4 3 : 163 : 167 : 1
+T: 4 3 : 164 : 164 : 1
+T: 4 3 : 165 : 165 : 1
+T: 4 2 : 255 : 0 : 1
+T: 4 2 : 254 : 254 : 0.1
+T: 4 2 : 254 : 222 : 0.9
+T: 4 2 : 253 : 253 : 0.1
+T: 4 2 : 253 : 221 : 0.9
+T: 4 2 : 252 : 252 : 0.1
+T: 4 2 : 252 : 220 : 0.9
+T: 4 2 : 251 : 251 : 0.1
+T: 4 2 : 251 : 219 : 0.9
+T: 4 2 : 250 : 250 : 0.1
+T: 4 2 : 250 : 218 : 0.9
+T: 4 2 : 249 : 249 : 0.1
+T: 4 2 : 249 : 217 : 0.9
+T: 4 2 : 248 : 248 : 0.1
+T: 4 2 : 248 : 216 : 0.9
+T: 4 2 : 247 : 0 : 1
+T: 4 2 : 246 : 254 : 0.1
+T: 4 2 : 246 : 222 : 0.9
+T: 4 2 : 245 : 253 : 0.1
+T: 4 2 : 245 : 221 : 0.9
+T: 4 2 : 244 : 252 : 0.1
+T: 4 2 : 244 : 220 : 0.9
+T: 4 2 : 243 : 251 : 0.1
+T: 4 2 : 243 : 219 : 0.9
+T: 4 2 : 242 : 250 : 0.1
+T: 4 2 : 242 : 218 : 0.9
+T: 4 2 : 241 : 249 : 0.1
+T: 4 2 : 241 : 217 : 0.9
+T: 4 2 : 240 : 248 : 0.1
+T: 4 2 : 240 : 216 : 0.9
+T: 4 2 : 239 : 0 : 1
+T: 4 2 : 238 : 238 : 0.1
+T: 4 2 : 238 : 206 : 0.9
+T: 4 2 : 237 : 237 : 0.1
+T: 4 2 : 237 : 205 : 0.9
+T: 4 2 : 236 : 236 : 0.1
+T: 4 2 : 236 : 204 : 0.9
+T: 4 2 : 235 : 235 : 0.1
+T: 4 2 : 235 : 203 : 0.9
+T: 4 2 : 234 : 234 : 0.1
+T: 4 2 : 234 : 202 : 0.9
+T: 4 2 : 233 : 233 : 0.1
+T: 4 2 : 233 : 201 : 0.9
+T: 4 2 : 232 : 232 : 0.1
+T: 4 2 : 232 : 200 : 0.9
+T: 4 2 : 231 : 0 : 1
+T: 4 2 : 230 : 238 : 0.1
+T: 4 2 : 230 : 206 : 0.9
+T: 4 2 : 229 : 237 : 0.1
+T: 4 2 : 229 : 205 : 0.9
+T: 4 2 : 228 : 236 : 0.1
+T: 4 2 : 228 : 204 : 0.9
+T: 4 2 : 227 : 235 : 0.1
+T: 4 2 : 227 : 203 : 0.9
+T: 4 2 : 226 : 234 : 0.1
+T: 4 2 : 226 : 202 : 0.9
+T: 4 2 : 225 : 233 : 0.1
+T: 4 2 : 225 : 201 : 0.9
+T: 4 2 : 224 : 232 : 0.1
+T: 4 2 : 224 : 200 : 0.9
+T: 4 2 : 223 : 0 : 1
+T: 4 2 : 222 : 222 : 1
+T: 4 2 : 221 : 221 : 1
+T: 4 2 : 220 : 220 : 1
+T: 4 2 : 219 : 219 : 1
+T: 4 2 : 218 : 218 : 1
+T: 4 2 : 217 : 217 : 1
+T: 4 2 : 216 : 216 : 1
+T: 4 2 : 215 : 0 : 1
+T: 4 2 : 214 : 222 : 1
+T: 4 2 : 213 : 221 : 1
+T: 4 2 : 212 : 220 : 1
+T: 4 2 : 211 : 219 : 1
+T: 4 2 : 210 : 218 : 1
+T: 4 2 : 209 : 217 : 1
+T: 4 2 : 208 : 216 : 1
+T: 4 2 : 207 : 0 : 1
+T: 4 2 : 206 : 206 : 1
+T: 4 2 : 205 : 205 : 1
+T: 4 2 : 204 : 204 : 1
+T: 4 2 : 203 : 203 : 1
+T: 4 2 : 202 : 202 : 1
+T: 4 2 : 201 : 201 : 1
+T: 4 2 : 200 : 200 : 1
+T: 4 2 : 199 : 0 : 1
+T: 4 2 : 198 : 206 : 1
+T: 4 2 : 197 : 205 : 1
+T: 4 2 : 196 : 204 : 1
+T: 4 2 : 195 : 203 : 1
+T: 4 2 : 194 : 202 : 1
+T: 4 2 : 193 : 201 : 1
+T: 4 2 : 192 : 200 : 1
+T: 4 2 : 191 : 0 : 1
+T: 4 2 : 190 : 190 : 0.1
+T: 4 2 : 190 : 158 : 0.9
+T: 4 2 : 189 : 189 : 0.1
+T: 4 2 : 189 : 157 : 0.9
+T: 4 2 : 188 : 188 : 0.1
+T: 4 2 : 188 : 156 : 0.9
+T: 4 2 : 187 : 0 : 1
+T: 4 2 : 186 : 190 : 0.1
+T: 4 2 : 186 : 158 : 0.9
+T: 4 2 : 185 : 189 : 0.1
+T: 4 2 : 185 : 157 : 0.9
+T: 4 2 : 184 : 188 : 0.1
+T: 4 2 : 184 : 156 : 0.9
+T: 4 2 : 183 : 183 : 0.1
+T: 4 2 : 183 : 151 : 0.9
+T: 4 2 : 182 : 182 : 0.1
+T: 4 2 : 182 : 150 : 0.9
+T: 4 2 : 181 : 181 : 0.1
+T: 4 2 : 181 : 149 : 0.9
+T: 4 2 : 180 : 180 : 0.1
+T: 4 2 : 180 : 148 : 0.9
+T: 4 2 : 179 : 183 : 0.1
+T: 4 2 : 179 : 151 : 0.9
+T: 4 2 : 178 : 182 : 0.1
+T: 4 2 : 178 : 150 : 0.9
+T: 4 2 : 177 : 181 : 0.1
+T: 4 2 : 177 : 149 : 0.9
+T: 4 2 : 176 : 180 : 0.1
+T: 4 2 : 176 : 148 : 0.9
+T: 4 2 : 175 : 0 : 1
+T: 4 2 : 174 : 174 : 0.1
+T: 4 2 : 174 : 142 : 0.9
+T: 4 2 : 173 : 173 : 0.1
+T: 4 2 : 173 : 141 : 0.9
+T: 4 2 : 172 : 172 : 0.1
+T: 4 2 : 172 : 140 : 0.9
+T: 4 2 : 171 : 0 : 1
+T: 4 2 : 170 : 174 : 0.1
+T: 4 2 : 170 : 142 : 0.9
+T: 4 2 : 169 : 173 : 0.1
+T: 4 2 : 169 : 141 : 0.9
+T: 4 2 : 168 : 172 : 0.1
+T: 4 2 : 168 : 140 : 0.9
+T: 4 2 : 167 : 167 : 0.1
+T: 4 2 : 167 : 135 : 0.9
+T: 4 2 : 166 : 166 : 0.1
+T: 4 2 : 166 : 134 : 0.9
+T: 4 2 : 77 : 0 : 1
+T: 4 2 : 76 : 78 : 1
+T: 4 2 : 75 : 75 : 1
+T: 4 2 : 74 : 74 : 1
+T: 4 2 : 73 : 75 : 1
+T: 4 2 : 72 : 74 : 1
+T: 4 2 : 71 : 71 : 1
+T: 4 2 : 70 : 70 : 1
+T: 4 2 : 69 : 71 : 1
+T: 4 2 : 68 : 70 : 1
+T: 4 2 : 67 : 67 : 1
+T: 4 2 : 66 : 66 : 1
+T: 4 2 : 65 : 67 : 1
+T: 4 2 : 64 : 66 : 1
+T: 4 2 : 63 : 0 : 1
+T: 4 2 : 62 : 0 : 1
+T: 4 2 : 61 : 61 : 0.1
+T: 4 2 : 61 : 29 : 0.9
+T: 4 2 : 60 : 61 : 0.1
+T: 4 2 : 60 : 29 : 0.9
+T: 4 2 : 59 : 59 : 0.1
+T: 4 2 : 59 : 27 : 0.9
+T: 4 2 : 58 : 59 : 0.1
+T: 4 2 : 58 : 27 : 0.9
+T: 4 2 : 57 : 57 : 0.1
+T: 4 2 : 57 : 25 : 0.9
+T: 4 2 : 56 : 57 : 0.1
+T: 4 2 : 56 : 25 : 0.9
+T: 4 2 : 55 : 55 : 0.1
+T: 4 2 : 55 : 23 : 0.9
+T: 4 2 : 54 : 55 : 0.1
+T: 4 2 : 54 : 23 : 0.9
+T: 4 2 : 53 : 53 : 0.1
+T: 4 2 : 53 : 21 : 0.9
+T: 4 2 : 52 : 53 : 0.1
+T: 4 2 : 52 : 21 : 0.9
+T: 4 2 : 51 : 51 : 0.1
+T: 4 2 : 51 : 19 : 0.9
+T: 4 2 : 50 : 51 : 0.1
+T: 4 2 : 50 : 19 : 0.9
+T: 4 2 : 49 : 49 : 0.1
+T: 4 2 : 49 : 17 : 0.9
+T: 4 2 : 48 : 49 : 0.1
+T: 4 2 : 48 : 17 : 0.9
+T: 4 2 : 47 : 0 : 1
+T: 4 2 : 46 : 0 : 1
+T: 4 2 : 45 : 45 : 0.1
+T: 4 2 : 45 : 13 : 0.9
+T: 4 2 : 44 : 45 : 0.1
+T: 4 2 : 44 : 13 : 0.9
+T: 4 2 : 43 : 43 : 0.1
+T: 4 2 : 43 : 11 : 0.9
+T: 4 2 : 42 : 43 : 0.1
+T: 4 2 : 42 : 11 : 0.9
+T: 4 2 : 41 : 41 : 0.1
+T: 4 2 : 41 : 9 : 0.9
+T: 4 2 : 40 : 41 : 0.1
+T: 4 2 : 40 : 9 : 0.9
+T: 4 2 : 39 : 39 : 0.1
+T: 4 2 : 39 : 7 : 0.9
+T: 4 2 : 38 : 39 : 0.1
+T: 4 2 : 38 : 7 : 0.9
+T: 4 2 : 37 : 37 : 0.1
+T: 4 2 : 37 : 5 : 0.9
+T: 4 2 : 36 : 37 : 0.1
+T: 4 2 : 36 : 5 : 0.9
+T: 4 2 : 15 : 0 : 1
+T: 4 2 : 14 : 0 : 1
+T: 4 2 : 13 : 13 : 1
+T: 4 2 : 12 : 13 : 1
+T: 4 2 : 11 : 11 : 1
+T: 4 2 : 10 : 11 : 1
+T: 4 2 : 9 : 9 : 1
+T: 4 2 : 8 : 9 : 1
+T: 4 2 : 7 : 7 : 1
+T: 4 2 : 6 : 7 : 1
+T: 4 2 : 1 : 1 : 1
+T: 4 2 : 0 : 1 : 1
+T: 4 2 : 2 : 3 : 1
+T: 4 2 : 3 : 3 : 1
+T: 4 2 : 4 : 5 : 1
+T: 4 2 : 5 : 5 : 1
+T: 4 2 : 16 : 17 : 1
+T: 4 2 : 17 : 17 : 1
+T: 4 2 : 18 : 19 : 1
+T: 4 2 : 19 : 19 : 1
+T: 4 2 : 20 : 21 : 1
+T: 4 2 : 21 : 21 : 1
+T: 4 2 : 22 : 23 : 1
+T: 4 2 : 23 : 23 : 1
+T: 4 2 : 24 : 25 : 1
+T: 4 2 : 25 : 25 : 1
+T: 4 2 : 26 : 27 : 1
+T: 4 2 : 27 : 27 : 1
+T: 4 2 : 28 : 29 : 1
+T: 4 2 : 29 : 29 : 1
+T: 4 2 : 30 : 0 : 1
+T: 4 2 : 31 : 0 : 1
+T: 4 2 : 32 : 33 : 0.1
+T: 4 2 : 32 : 1 : 0.9
+T: 4 2 : 33 : 33 : 0.1
+T: 4 2 : 33 : 1 : 0.9
+T: 4 2 : 34 : 35 : 0.1
+T: 4 2 : 34 : 3 : 0.9
+T: 4 2 : 35 : 35 : 0.1
+T: 4 2 : 35 : 3 : 0.9
+T: 4 2 : 78 : 78 : 1
+T: 4 2 : 79 : 0 : 1
+T: 4 2 : 80 : 82 : 1
+T: 4 2 : 81 : 83 : 1
+T: 4 2 : 82 : 82 : 1
+T: 4 2 : 83 : 83 : 1
+T: 4 2 : 84 : 86 : 1
+T: 4 2 : 85 : 87 : 1
+T: 4 2 : 86 : 86 : 1
+T: 4 2 : 87 : 87 : 1
+T: 4 2 : 88 : 90 : 1
+T: 4 2 : 89 : 91 : 1
+T: 4 2 : 90 : 90 : 1
+T: 4 2 : 91 : 91 : 1
+T: 4 2 : 92 : 94 : 1
+T: 4 2 : 93 : 0 : 1
+T: 4 2 : 94 : 94 : 1
+T: 4 2 : 95 : 0 : 1
+T: 4 2 : 96 : 98 : 0.1
+T: 4 2 : 96 : 66 : 0.9
+T: 4 2 : 97 : 99 : 0.1
+T: 4 2 : 97 : 67 : 0.9
+T: 4 2 : 98 : 98 : 0.1
+T: 4 2 : 98 : 66 : 0.9
+T: 4 2 : 99 : 99 : 0.1
+T: 4 2 : 99 : 67 : 0.9
+T: 4 2 : 100 : 102 : 0.1
+T: 4 2 : 100 : 70 : 0.9
+T: 4 2 : 101 : 103 : 0.1
+T: 4 2 : 101 : 71 : 0.9
+T: 4 2 : 102 : 102 : 0.1
+T: 4 2 : 102 : 70 : 0.9
+T: 4 2 : 103 : 103 : 0.1
+T: 4 2 : 103 : 71 : 0.9
+T: 4 2 : 104 : 106 : 0.1
+T: 4 2 : 104 : 74 : 0.9
+T: 4 2 : 105 : 107 : 0.1
+T: 4 2 : 105 : 75 : 0.9
+T: 4 2 : 106 : 106 : 0.1
+T: 4 2 : 106 : 74 : 0.9
+T: 4 2 : 107 : 107 : 0.1
+T: 4 2 : 107 : 75 : 0.9
+T: 4 2 : 108 : 110 : 0.1
+T: 4 2 : 108 : 78 : 0.9
+T: 4 2 : 109 : 0 : 1
+T: 4 2 : 110 : 110 : 0.1
+T: 4 2 : 110 : 78 : 0.9
+T: 4 2 : 111 : 0 : 1
+T: 4 2 : 112 : 114 : 0.1
+T: 4 2 : 112 : 82 : 0.9
+T: 4 2 : 113 : 115 : 0.1
+T: 4 2 : 113 : 83 : 0.9
+T: 4 2 : 114 : 114 : 0.1
+T: 4 2 : 114 : 82 : 0.9
+T: 4 2 : 115 : 115 : 0.1
+T: 4 2 : 115 : 83 : 0.9
+T: 4 2 : 116 : 118 : 0.1
+T: 4 2 : 116 : 86 : 0.9
+T: 4 2 : 117 : 119 : 0.1
+T: 4 2 : 117 : 87 : 0.9
+T: 4 2 : 118 : 118 : 0.1
+T: 4 2 : 118 : 86 : 0.9
+T: 4 2 : 119 : 119 : 0.1
+T: 4 2 : 119 : 87 : 0.9
+T: 4 2 : 120 : 122 : 0.1
+T: 4 2 : 120 : 90 : 0.9
+T: 4 2 : 121 : 123 : 0.1
+T: 4 2 : 121 : 91 : 0.9
+T: 4 2 : 122 : 122 : 0.1
+T: 4 2 : 122 : 90 : 0.9
+T: 4 2 : 123 : 123 : 0.1
+T: 4 2 : 123 : 91 : 0.9
+T: 4 2 : 124 : 126 : 0.1
+T: 4 2 : 124 : 94 : 0.9
+T: 4 2 : 125 : 0 : 1
+T: 4 2 : 126 : 126 : 0.1
+T: 4 2 : 126 : 94 : 0.9
+T: 4 2 : 127 : 0 : 1
+T: 4 2 : 128 : 132 : 1
+T: 4 2 : 129 : 133 : 1
+T: 4 2 : 130 : 134 : 1
+T: 4 2 : 131 : 135 : 1
+T: 4 2 : 132 : 132 : 1
+T: 4 2 : 133 : 133 : 1
+T: 4 2 : 134 : 134 : 1
+T: 4 2 : 135 : 135 : 1
+T: 4 2 : 136 : 140 : 1
+T: 4 2 : 137 : 141 : 1
+T: 4 2 : 138 : 142 : 1
+T: 4 2 : 139 : 0 : 1
+T: 4 2 : 140 : 140 : 1
+T: 4 2 : 141 : 141 : 1
+T: 4 2 : 142 : 142 : 1
+T: 4 2 : 143 : 0 : 1
+T: 4 2 : 144 : 148 : 1
+T: 4 2 : 145 : 149 : 1
+T: 4 2 : 146 : 150 : 1
+T: 4 2 : 147 : 151 : 1
+T: 4 2 : 148 : 148 : 1
+T: 4 2 : 149 : 149 : 1
+T: 4 2 : 150 : 150 : 1
+T: 4 2 : 151 : 151 : 1
+T: 4 2 : 152 : 156 : 1
+T: 4 2 : 153 : 157 : 1
+T: 4 2 : 154 : 158 : 1
+T: 4 2 : 155 : 0 : 1
+T: 4 2 : 156 : 156 : 1
+T: 4 2 : 157 : 157 : 1
+T: 4 2 : 158 : 158 : 1
+T: 4 2 : 159 : 0 : 1
+T: 4 2 : 160 : 164 : 0.1
+T: 4 2 : 160 : 132 : 0.9
+T: 4 2 : 161 : 165 : 0.1
+T: 4 2 : 161 : 133 : 0.9
+T: 4 2 : 162 : 166 : 0.1
+T: 4 2 : 162 : 134 : 0.9
+T: 4 2 : 163 : 167 : 0.1
+T: 4 2 : 163 : 135 : 0.9
+T: 4 2 : 164 : 164 : 0.1
+T: 4 2 : 164 : 132 : 0.9
+T: 4 2 : 165 : 165 : 0.1
+T: 4 2 : 165 : 133 : 0.9
+T: 4 1 : 255 : 0 : 1
+T: 4 1 : 254 : 254 : 1
+T: 4 1 : 253 : 253 : 1
+T: 4 1 : 252 : 252 : 1
+T: 4 1 : 251 : 251 : 1
+T: 4 1 : 250 : 250 : 1
+T: 4 1 : 249 : 249 : 1
+T: 4 1 : 248 : 248 : 1
+T: 4 1 : 247 : 0 : 1
+T: 4 1 : 246 : 254 : 1
+T: 4 1 : 245 : 253 : 1
+T: 4 1 : 244 : 252 : 1
+T: 4 1 : 243 : 251 : 1
+T: 4 1 : 242 : 250 : 1
+T: 4 1 : 241 : 249 : 1
+T: 4 1 : 240 : 248 : 1
+T: 4 1 : 239 : 0 : 1
+T: 4 1 : 238 : 254 : 0.9
+T: 4 1 : 238 : 238 : 0.1
+T: 4 1 : 237 : 253 : 0.9
+T: 4 1 : 237 : 237 : 0.1
+T: 4 1 : 236 : 252 : 0.9
+T: 4 1 : 236 : 236 : 0.1
+T: 4 1 : 235 : 251 : 0.9
+T: 4 1 : 235 : 235 : 0.1
+T: 4 1 : 234 : 250 : 0.9
+T: 4 1 : 234 : 234 : 0.1
+T: 4 1 : 233 : 249 : 0.9
+T: 4 1 : 233 : 233 : 0.1
+T: 4 1 : 232 : 248 : 0.9
+T: 4 1 : 232 : 232 : 0.1
+T: 4 1 : 231 : 0 : 1
+T: 4 1 : 230 : 254 : 0.9
+T: 4 1 : 230 : 238 : 0.1
+T: 4 1 : 229 : 253 : 0.9
+T: 4 1 : 229 : 237 : 0.1
+T: 4 1 : 228 : 252 : 0.9
+T: 4 1 : 228 : 236 : 0.1
+T: 4 1 : 227 : 251 : 0.9
+T: 4 1 : 227 : 235 : 0.1
+T: 4 1 : 226 : 250 : 0.9
+T: 4 1 : 226 : 234 : 0.1
+T: 4 1 : 225 : 249 : 0.9
+T: 4 1 : 225 : 233 : 0.1
+T: 4 1 : 224 : 248 : 0.9
+T: 4 1 : 224 : 232 : 0.1
+T: 4 1 : 223 : 0 : 1
+T: 4 1 : 222 : 222 : 1
+T: 4 1 : 221 : 221 : 1
+T: 4 1 : 220 : 220 : 1
+T: 4 1 : 219 : 219 : 1
+T: 4 1 : 218 : 218 : 1
+T: 4 1 : 217 : 217 : 1
+T: 4 1 : 216 : 216 : 1
+T: 4 1 : 215 : 0 : 1
+T: 4 1 : 214 : 222 : 1
+T: 4 1 : 213 : 221 : 1
+T: 4 1 : 212 : 220 : 1
+T: 4 1 : 211 : 219 : 1
+T: 4 1 : 210 : 218 : 1
+T: 4 1 : 209 : 217 : 1
+T: 4 1 : 208 : 216 : 1
+T: 4 1 : 207 : 0 : 1
+T: 4 1 : 206 : 222 : 0.9
+T: 4 1 : 206 : 206 : 0.1
+T: 4 1 : 205 : 221 : 0.9
+T: 4 1 : 205 : 205 : 0.1
+T: 4 1 : 204 : 220 : 0.9
+T: 4 1 : 204 : 204 : 0.1
+T: 4 1 : 203 : 219 : 0.9
+T: 4 1 : 203 : 203 : 0.1
+T: 4 1 : 202 : 218 : 0.9
+T: 4 1 : 202 : 202 : 0.1
+T: 4 1 : 201 : 217 : 0.9
+T: 4 1 : 201 : 201 : 0.1
+T: 4 1 : 200 : 216 : 0.9
+T: 4 1 : 200 : 200 : 0.1
+T: 4 1 : 199 : 0 : 1
+T: 4 1 : 198 : 222 : 0.9
+T: 4 1 : 198 : 206 : 0.1
+T: 4 1 : 197 : 221 : 0.9
+T: 4 1 : 197 : 205 : 0.1
+T: 4 1 : 196 : 220 : 0.9
+T: 4 1 : 196 : 204 : 0.1
+T: 4 1 : 195 : 219 : 0.9
+T: 4 1 : 195 : 203 : 0.1
+T: 4 1 : 194 : 218 : 0.9
+T: 4 1 : 194 : 202 : 0.1
+T: 4 1 : 193 : 217 : 0.9
+T: 4 1 : 193 : 201 : 0.1
+T: 4 1 : 192 : 216 : 0.9
+T: 4 1 : 192 : 200 : 0.1
+T: 4 1 : 191 : 0 : 1
+T: 4 1 : 190 : 190 : 1
+T: 4 1 : 189 : 189 : 1
+T: 4 1 : 188 : 188 : 1
+T: 4 1 : 187 : 0 : 1
+T: 4 1 : 186 : 190 : 1
+T: 4 1 : 185 : 189 : 1
+T: 4 1 : 184 : 188 : 1
+T: 4 1 : 183 : 183 : 1
+T: 4 1 : 182 : 182 : 1
+T: 4 1 : 181 : 181 : 1
+T: 4 1 : 180 : 180 : 1
+T: 4 1 : 179 : 183 : 1
+T: 4 1 : 178 : 182 : 1
+T: 4 1 : 177 : 181 : 1
+T: 4 1 : 176 : 180 : 1
+T: 4 1 : 175 : 0 : 1
+T: 4 1 : 174 : 190 : 0.9
+T: 4 1 : 174 : 174 : 0.1
+T: 4 1 : 173 : 189 : 0.9
+T: 4 1 : 173 : 173 : 0.1
+T: 4 1 : 172 : 188 : 0.9
+T: 4 1 : 172 : 172 : 0.1
+T: 4 1 : 171 : 0 : 1
+T: 4 1 : 170 : 190 : 0.9
+T: 4 1 : 170 : 174 : 0.1
+T: 4 1 : 169 : 189 : 0.9
+T: 4 1 : 169 : 173 : 0.1
+T: 4 1 : 168 : 188 : 0.9
+T: 4 1 : 168 : 172 : 0.1
+T: 4 1 : 167 : 183 : 0.9
+T: 4 1 : 167 : 167 : 0.1
+T: 4 1 : 166 : 182 : 0.9
+T: 4 1 : 166 : 166 : 0.1
+T: 4 1 : 77 : 0 : 1
+T: 4 1 : 76 : 94 : 0.9
+T: 4 1 : 76 : 78 : 0.1
+T: 4 1 : 75 : 91 : 0.9
+T: 4 1 : 75 : 75 : 0.1
+T: 4 1 : 74 : 90 : 0.9
+T: 4 1 : 74 : 74 : 0.1
+T: 4 1 : 73 : 91 : 0.9
+T: 4 1 : 73 : 75 : 0.1
+T: 4 1 : 72 : 90 : 0.9
+T: 4 1 : 72 : 74 : 0.1
+T: 4 1 : 71 : 87 : 0.9
+T: 4 1 : 71 : 71 : 0.1
+T: 4 1 : 70 : 86 : 0.9
+T: 4 1 : 70 : 70 : 0.1
+T: 4 1 : 69 : 87 : 0.9
+T: 4 1 : 69 : 71 : 0.1
+T: 4 1 : 68 : 86 : 0.9
+T: 4 1 : 68 : 70 : 0.1
+T: 4 1 : 67 : 83 : 0.9
+T: 4 1 : 67 : 67 : 0.1
+T: 4 1 : 66 : 82 : 0.9
+T: 4 1 : 66 : 66 : 0.1
+T: 4 1 : 65 : 83 : 0.9
+T: 4 1 : 65 : 67 : 0.1
+T: 4 1 : 64 : 82 : 0.9
+T: 4 1 : 64 : 66 : 0.1
+T: 4 1 : 63 : 0 : 1
+T: 4 1 : 62 : 0 : 1
+T: 4 1 : 61 : 61 : 1
+T: 4 1 : 60 : 61 : 1
+T: 4 1 : 59 : 59 : 1
+T: 4 1 : 58 : 59 : 1
+T: 4 1 : 57 : 57 : 1
+T: 4 1 : 56 : 57 : 1
+T: 4 1 : 55 : 55 : 1
+T: 4 1 : 54 : 55 : 1
+T: 4 1 : 53 : 53 : 1
+T: 4 1 : 52 : 53 : 1
+T: 4 1 : 51 : 51 : 1
+T: 4 1 : 50 : 51 : 1
+T: 4 1 : 49 : 49 : 1
+T: 4 1 : 48 : 49 : 1
+T: 4 1 : 47 : 0 : 1
+T: 4 1 : 46 : 0 : 1
+T: 4 1 : 45 : 61 : 0.9
+T: 4 1 : 45 : 45 : 0.1
+T: 4 1 : 44 : 61 : 0.9
+T: 4 1 : 44 : 45 : 0.1
+T: 4 1 : 43 : 59 : 0.9
+T: 4 1 : 43 : 43 : 0.1
+T: 4 1 : 42 : 59 : 0.9
+T: 4 1 : 42 : 43 : 0.1
+T: 4 1 : 41 : 57 : 0.9
+T: 4 1 : 41 : 41 : 0.1
+T: 4 1 : 40 : 57 : 0.9
+T: 4 1 : 40 : 41 : 0.1
+T: 4 1 : 39 : 55 : 0.9
+T: 4 1 : 39 : 39 : 0.1
+T: 4 1 : 38 : 55 : 0.9
+T: 4 1 : 38 : 39 : 0.1
+T: 4 1 : 37 : 53 : 0.9
+T: 4 1 : 37 : 37 : 0.1
+T: 4 1 : 36 : 53 : 0.9
+T: 4 1 : 36 : 37 : 0.1
+T: 4 1 : 15 : 0 : 1
+T: 4 1 : 14 : 0 : 1
+T: 4 1 : 13 : 29 : 0.9
+T: 4 1 : 13 : 13 : 0.1
+T: 4 1 : 12 : 29 : 0.9
+T: 4 1 : 12 : 13 : 0.1
+T: 4 1 : 11 : 27 : 0.9
+T: 4 1 : 11 : 11 : 0.1
+T: 4 1 : 10 : 27 : 0.9
+T: 4 1 : 10 : 11 : 0.1
+T: 4 1 : 9 : 25 : 0.9
+T: 4 1 : 9 : 9 : 0.1
+T: 4 1 : 8 : 25 : 0.9
+T: 4 1 : 8 : 9 : 0.1
+T: 4 1 : 7 : 23 : 0.9
+T: 4 1 : 7 : 7 : 0.1
+T: 4 1 : 6 : 23 : 0.9
+T: 4 1 : 6 : 7 : 0.1
+T: 4 1 : 1 : 17 : 0.9
+T: 4 1 : 1 : 1 : 0.1
+T: 4 1 : 0 : 17 : 0.9
+T: 4 1 : 0 : 1 : 0.1
+T: 4 1 : 2 : 19 : 0.9
+T: 4 1 : 2 : 3 : 0.1
+T: 4 1 : 3 : 19 : 0.9
+T: 4 1 : 3 : 3 : 0.1
+T: 4 1 : 4 : 21 : 0.9
+T: 4 1 : 4 : 5 : 0.1
+T: 4 1 : 5 : 21 : 0.9
+T: 4 1 : 5 : 5 : 0.1
+T: 4 1 : 16 : 17 : 1
+T: 4 1 : 17 : 17 : 1
+T: 4 1 : 18 : 19 : 1
+T: 4 1 : 19 : 19 : 1
+T: 4 1 : 20 : 21 : 1
+T: 4 1 : 21 : 21 : 1
+T: 4 1 : 22 : 23 : 1
+T: 4 1 : 23 : 23 : 1
+T: 4 1 : 24 : 25 : 1
+T: 4 1 : 25 : 25 : 1
+T: 4 1 : 26 : 27 : 1
+T: 4 1 : 27 : 27 : 1
+T: 4 1 : 28 : 29 : 1
+T: 4 1 : 29 : 29 : 1
+T: 4 1 : 30 : 0 : 1
+T: 4 1 : 31 : 0 : 1
+T: 4 1 : 32 : 49 : 0.9
+T: 4 1 : 32 : 33 : 0.1
+T: 4 1 : 33 : 49 : 0.9
+T: 4 1 : 33 : 33 : 0.1
+T: 4 1 : 34 : 51 : 0.9
+T: 4 1 : 34 : 35 : 0.1
+T: 4 1 : 35 : 51 : 0.9
+T: 4 1 : 35 : 35 : 0.1
+T: 4 1 : 78 : 94 : 0.9
+T: 4 1 : 78 : 78 : 0.1
+T: 4 1 : 79 : 0 : 1
+T: 4 1 : 80 : 82 : 1
+T: 4 1 : 81 : 83 : 1
+T: 4 1 : 82 : 82 : 1
+T: 4 1 : 83 : 83 : 1
+T: 4 1 : 84 : 86 : 1
+T: 4 1 : 85 : 87 : 1
+T: 4 1 : 86 : 86 : 1
+T: 4 1 : 87 : 87 : 1
+T: 4 1 : 88 : 90 : 1
+T: 4 1 : 89 : 91 : 1
+T: 4 1 : 90 : 90 : 1
+T: 4 1 : 91 : 91 : 1
+T: 4 1 : 92 : 94 : 1
+T: 4 1 : 93 : 0 : 1
+T: 4 1 : 94 : 94 : 1
+T: 4 1 : 95 : 0 : 1
+T: 4 1 : 96 : 114 : 0.9
+T: 4 1 : 96 : 98 : 0.1
+T: 4 1 : 97 : 115 : 0.9
+T: 4 1 : 97 : 99 : 0.1
+T: 4 1 : 98 : 114 : 0.9
+T: 4 1 : 98 : 98 : 0.1
+T: 4 1 : 99 : 115 : 0.9
+T: 4 1 : 99 : 99 : 0.1
+T: 4 1 : 100 : 118 : 0.9
+T: 4 1 : 100 : 102 : 0.1
+T: 4 1 : 101 : 119 : 0.9
+T: 4 1 : 101 : 103 : 0.1
+T: 4 1 : 102 : 118 : 0.9
+T: 4 1 : 102 : 102 : 0.1
+T: 4 1 : 103 : 119 : 0.9
+T: 4 1 : 103 : 103 : 0.1
+T: 4 1 : 104 : 122 : 0.9
+T: 4 1 : 104 : 106 : 0.1
+T: 4 1 : 105 : 123 : 0.9
+T: 4 1 : 105 : 107 : 0.1
+T: 4 1 : 106 : 122 : 0.9
+T: 4 1 : 106 : 106 : 0.1
+T: 4 1 : 107 : 123 : 0.9
+T: 4 1 : 107 : 107 : 0.1
+T: 4 1 : 108 : 126 : 0.9
+T: 4 1 : 108 : 110 : 0.1
+T: 4 1 : 109 : 0 : 1
+T: 4 1 : 110 : 126 : 0.9
+T: 4 1 : 110 : 110 : 0.1
+T: 4 1 : 111 : 0 : 1
+T: 4 1 : 112 : 114 : 1
+T: 4 1 : 113 : 115 : 1
+T: 4 1 : 114 : 114 : 1
+T: 4 1 : 115 : 115 : 1
+T: 4 1 : 116 : 118 : 1
+T: 4 1 : 117 : 119 : 1
+T: 4 1 : 118 : 118 : 1
+T: 4 1 : 119 : 119 : 1
+T: 4 1 : 120 : 122 : 1
+T: 4 1 : 121 : 123 : 1
+T: 4 1 : 122 : 122 : 1
+T: 4 1 : 123 : 123 : 1
+T: 4 1 : 124 : 126 : 1
+T: 4 1 : 125 : 0 : 1
+T: 4 1 : 126 : 126 : 1
+T: 4 1 : 127 : 0 : 1
+T: 4 1 : 128 : 148 : 0.9
+T: 4 1 : 128 : 132 : 0.1
+T: 4 1 : 129 : 149 : 0.9
+T: 4 1 : 129 : 133 : 0.1
+T: 4 1 : 130 : 150 : 0.9
+T: 4 1 : 130 : 134 : 0.1
+T: 4 1 : 131 : 151 : 0.9
+T: 4 1 : 131 : 135 : 0.1
+T: 4 1 : 132 : 148 : 0.9
+T: 4 1 : 132 : 132 : 0.1
+T: 4 1 : 133 : 149 : 0.9
+T: 4 1 : 133 : 133 : 0.1
+T: 4 1 : 134 : 150 : 0.9
+T: 4 1 : 134 : 134 : 0.1
+T: 4 1 : 135 : 151 : 0.9
+T: 4 1 : 135 : 135 : 0.1
+T: 4 1 : 136 : 156 : 0.9
+T: 4 1 : 136 : 140 : 0.1
+T: 4 1 : 137 : 157 : 0.9
+T: 4 1 : 137 : 141 : 0.1
+T: 4 1 : 138 : 158 : 0.9
+T: 4 1 : 138 : 142 : 0.1
+T: 4 1 : 139 : 0 : 1
+T: 4 1 : 140 : 156 : 0.9
+T: 4 1 : 140 : 140 : 0.1
+T: 4 1 : 141 : 157 : 0.9
+T: 4 1 : 141 : 141 : 0.1
+T: 4 1 : 142 : 158 : 0.9
+T: 4 1 : 142 : 142 : 0.1
+T: 4 1 : 143 : 0 : 1
+T: 4 1 : 144 : 148 : 1
+T: 4 1 : 145 : 149 : 1
+T: 4 1 : 146 : 150 : 1
+T: 4 1 : 147 : 151 : 1
+T: 4 1 : 148 : 148 : 1
+T: 4 1 : 149 : 149 : 1
+T: 4 1 : 150 : 150 : 1
+T: 4 1 : 151 : 151 : 1
+T: 4 1 : 152 : 156 : 1
+T: 4 1 : 153 : 157 : 1
+T: 4 1 : 154 : 158 : 1
+T: 4 1 : 155 : 0 : 1
+T: 4 1 : 156 : 156 : 1
+T: 4 1 : 157 : 157 : 1
+T: 4 1 : 158 : 158 : 1
+T: 4 1 : 159 : 0 : 1
+T: 4 1 : 160 : 180 : 0.9
+T: 4 1 : 160 : 164 : 0.1
+T: 4 1 : 161 : 181 : 0.9
+T: 4 1 : 161 : 165 : 0.1
+T: 4 1 : 162 : 182 : 0.9
+T: 4 1 : 162 : 166 : 0.1
+T: 4 1 : 163 : 183 : 0.9
+T: 4 1 : 163 : 167 : 0.1
+T: 4 1 : 164 : 180 : 0.9
+T: 4 1 : 164 : 164 : 0.1
+T: 4 1 : 165 : 181 : 0.9
+T: 4 1 : 165 : 165 : 0.1
+T: 4 0 : 255 : 0 : 1
+T: 4 0 : 254 : 254 : 0.1
+T: 4 0 : 254 : 238 : 0.9
+T: 4 0 : 253 : 253 : 0.1
+T: 4 0 : 253 : 237 : 0.9
+T: 4 0 : 252 : 252 : 0.1
+T: 4 0 : 252 : 236 : 0.9
+T: 4 0 : 251 : 251 : 0.1
+T: 4 0 : 251 : 235 : 0.9
+T: 4 0 : 250 : 250 : 0.1
+T: 4 0 : 250 : 234 : 0.9
+T: 4 0 : 249 : 249 : 0.1
+T: 4 0 : 249 : 233 : 0.9
+T: 4 0 : 248 : 248 : 0.1
+T: 4 0 : 248 : 232 : 0.9
+T: 4 0 : 247 : 0 : 1
+T: 4 0 : 246 : 254 : 0.1
+T: 4 0 : 246 : 238 : 0.9
+T: 4 0 : 245 : 253 : 0.1
+T: 4 0 : 245 : 237 : 0.9
+T: 4 0 : 244 : 252 : 0.1
+T: 4 0 : 244 : 236 : 0.9
+T: 4 0 : 243 : 251 : 0.1
+T: 4 0 : 243 : 235 : 0.9
+T: 4 0 : 242 : 250 : 0.1
+T: 4 0 : 242 : 234 : 0.9
+T: 4 0 : 241 : 249 : 0.1
+T: 4 0 : 241 : 233 : 0.9
+T: 4 0 : 240 : 248 : 0.1
+T: 4 0 : 240 : 232 : 0.9
+T: 4 0 : 239 : 0 : 1
+T: 4 0 : 238 : 238 : 1
+T: 4 0 : 237 : 237 : 1
+T: 4 0 : 236 : 236 : 1
+T: 4 0 : 235 : 235 : 1
+T: 4 0 : 234 : 234 : 1
+T: 4 0 : 233 : 233 : 1
+T: 4 0 : 232 : 232 : 1
+T: 4 0 : 231 : 0 : 1
+T: 4 0 : 230 : 238 : 1
+T: 4 0 : 229 : 237 : 1
+T: 4 0 : 228 : 236 : 1
+T: 4 0 : 227 : 235 : 1
+T: 4 0 : 226 : 234 : 1
+T: 4 0 : 225 : 233 : 1
+T: 4 0 : 224 : 232 : 1
+T: 4 0 : 223 : 0 : 1
+T: 4 0 : 222 : 222 : 0.1
+T: 4 0 : 222 : 206 : 0.9
+T: 4 0 : 221 : 221 : 0.1
+T: 4 0 : 221 : 205 : 0.9
+T: 4 0 : 220 : 220 : 0.1
+T: 4 0 : 220 : 204 : 0.9
+T: 4 0 : 219 : 219 : 0.1
+T: 4 0 : 219 : 203 : 0.9
+T: 4 0 : 218 : 218 : 0.1
+T: 4 0 : 218 : 202 : 0.9
+T: 4 0 : 217 : 217 : 0.1
+T: 4 0 : 217 : 201 : 0.9
+T: 4 0 : 216 : 216 : 0.1
+T: 4 0 : 216 : 200 : 0.9
+T: 4 0 : 215 : 0 : 1
+T: 4 0 : 214 : 222 : 0.1
+T: 4 0 : 214 : 206 : 0.9
+T: 4 0 : 213 : 221 : 0.1
+T: 4 0 : 213 : 205 : 0.9
+T: 4 0 : 212 : 220 : 0.1
+T: 4 0 : 212 : 204 : 0.9
+T: 4 0 : 211 : 219 : 0.1
+T: 4 0 : 211 : 203 : 0.9
+T: 4 0 : 210 : 218 : 0.1
+T: 4 0 : 210 : 202 : 0.9
+T: 4 0 : 209 : 217 : 0.1
+T: 4 0 : 209 : 201 : 0.9
+T: 4 0 : 208 : 216 : 0.1
+T: 4 0 : 208 : 200 : 0.9
+T: 4 0 : 207 : 0 : 1
+T: 4 0 : 206 : 206 : 1
+T: 4 0 : 205 : 205 : 1
+T: 4 0 : 204 : 204 : 1
+T: 4 0 : 203 : 203 : 1
+T: 4 0 : 202 : 202 : 1
+T: 4 0 : 201 : 201 : 1
+T: 4 0 : 200 : 200 : 1
+T: 4 0 : 199 : 0 : 1
+T: 4 0 : 198 : 206 : 1
+T: 4 0 : 197 : 205 : 1
+T: 4 0 : 196 : 204 : 1
+T: 4 0 : 195 : 203 : 1
+T: 4 0 : 194 : 202 : 1
+T: 4 0 : 193 : 201 : 1
+T: 4 0 : 192 : 200 : 1
+T: 4 0 : 191 : 0 : 1
+T: 4 0 : 190 : 190 : 0.1
+T: 4 0 : 190 : 174 : 0.9
+T: 4 0 : 189 : 189 : 0.1
+T: 4 0 : 189 : 173 : 0.9
+T: 4 0 : 188 : 188 : 0.1
+T: 4 0 : 188 : 172 : 0.9
+T: 4 0 : 187 : 0 : 1
+T: 4 0 : 186 : 190 : 0.1
+T: 4 0 : 186 : 174 : 0.9
+T: 4 0 : 185 : 189 : 0.1
+T: 4 0 : 185 : 173 : 0.9
+T: 4 0 : 184 : 188 : 0.1
+T: 4 0 : 184 : 172 : 0.9
+T: 4 0 : 183 : 183 : 0.1
+T: 4 0 : 183 : 167 : 0.9
+T: 4 0 : 182 : 182 : 0.1
+T: 4 0 : 182 : 166 : 0.9
+T: 4 0 : 181 : 181 : 0.1
+T: 4 0 : 181 : 165 : 0.9
+T: 4 0 : 180 : 180 : 0.1
+T: 4 0 : 180 : 164 : 0.9
+T: 4 0 : 179 : 183 : 0.1
+T: 4 0 : 179 : 167 : 0.9
+T: 4 0 : 178 : 182 : 0.1
+T: 4 0 : 178 : 166 : 0.9
+T: 4 0 : 177 : 181 : 0.1
+T: 4 0 : 177 : 165 : 0.9
+T: 4 0 : 176 : 180 : 0.1
+T: 4 0 : 176 : 164 : 0.9
+T: 4 0 : 175 : 0 : 1
+T: 4 0 : 174 : 174 : 1
+T: 4 0 : 173 : 173 : 1
+T: 4 0 : 172 : 172 : 1
+T: 4 0 : 171 : 0 : 1
+T: 4 0 : 170 : 174 : 1
+T: 4 0 : 169 : 173 : 1
+T: 4 0 : 168 : 172 : 1
+T: 4 0 : 167 : 167 : 1
+T: 4 0 : 166 : 166 : 1
+T: 4 0 : 77 : 0 : 1
+T: 4 0 : 76 : 78 : 1
+T: 4 0 : 75 : 75 : 1
+T: 4 0 : 74 : 74 : 1
+T: 4 0 : 73 : 75 : 1
+T: 4 0 : 72 : 74 : 1
+T: 4 0 : 71 : 71 : 1
+T: 4 0 : 70 : 70 : 1
+T: 4 0 : 69 : 71 : 1
+T: 4 0 : 68 : 70 : 1
+T: 4 0 : 67 : 67 : 1
+T: 4 0 : 66 : 66 : 1
+T: 4 0 : 65 : 67 : 1
+T: 4 0 : 64 : 66 : 1
+T: 4 0 : 63 : 0 : 1
+T: 4 0 : 62 : 0 : 1
+T: 4 0 : 61 : 61 : 0.1
+T: 4 0 : 61 : 45 : 0.9
+T: 4 0 : 60 : 61 : 0.1
+T: 4 0 : 60 : 45 : 0.9
+T: 4 0 : 59 : 59 : 0.1
+T: 4 0 : 59 : 43 : 0.9
+T: 4 0 : 58 : 59 : 0.1
+T: 4 0 : 58 : 43 : 0.9
+T: 4 0 : 57 : 57 : 0.1
+T: 4 0 : 57 : 41 : 0.9
+T: 4 0 : 56 : 57 : 0.1
+T: 4 0 : 56 : 41 : 0.9
+T: 4 0 : 55 : 55 : 0.1
+T: 4 0 : 55 : 39 : 0.9
+T: 4 0 : 54 : 55 : 0.1
+T: 4 0 : 54 : 39 : 0.9
+T: 4 0 : 53 : 53 : 0.1
+T: 4 0 : 53 : 37 : 0.9
+T: 4 0 : 52 : 53 : 0.1
+T: 4 0 : 52 : 37 : 0.9
+T: 4 0 : 51 : 51 : 0.1
+T: 4 0 : 51 : 35 : 0.9
+T: 4 0 : 50 : 51 : 0.1
+T: 4 0 : 50 : 35 : 0.9
+T: 4 0 : 49 : 49 : 0.1
+T: 4 0 : 49 : 33 : 0.9
+T: 4 0 : 48 : 49 : 0.1
+T: 4 0 : 48 : 33 : 0.9
+T: 4 0 : 47 : 0 : 1
+T: 4 0 : 46 : 0 : 1
+T: 4 0 : 45 : 45 : 1
+T: 4 0 : 44 : 45 : 1
+T: 4 0 : 43 : 43 : 1
+T: 4 0 : 42 : 43 : 1
+T: 4 0 : 41 : 41 : 1
+T: 4 0 : 40 : 41 : 1
+T: 4 0 : 39 : 39 : 1
+T: 4 0 : 38 : 39 : 1
+T: 4 0 : 37 : 37 : 1
+T: 4 0 : 36 : 37 : 1
+T: 4 0 : 15 : 0 : 1
+T: 4 0 : 14 : 0 : 1
+T: 4 0 : 13 : 13 : 1
+T: 4 0 : 12 : 13 : 1
+T: 4 0 : 11 : 11 : 1
+T: 4 0 : 10 : 11 : 1
+T: 4 0 : 9 : 9 : 1
+T: 4 0 : 8 : 9 : 1
+T: 4 0 : 7 : 7 : 1
+T: 4 0 : 6 : 7 : 1
+T: 4 0 : 1 : 1 : 1
+T: 4 0 : 0 : 1 : 1
+T: 4 0 : 2 : 3 : 1
+T: 4 0 : 3 : 3 : 1
+T: 4 0 : 4 : 5 : 1
+T: 4 0 : 5 : 5 : 1
+T: 4 0 : 16 : 17 : 0.1
+T: 4 0 : 16 : 1 : 0.9
+T: 4 0 : 17 : 17 : 0.1
+T: 4 0 : 17 : 1 : 0.9
+T: 4 0 : 18 : 19 : 0.1
+T: 4 0 : 18 : 3 : 0.9
+T: 4 0 : 19 : 19 : 0.1
+T: 4 0 : 19 : 3 : 0.9
+T: 4 0 : 20 : 21 : 0.1
+T: 4 0 : 20 : 5 : 0.9
+T: 4 0 : 21 : 21 : 0.1
+T: 4 0 : 21 : 5 : 0.9
+T: 4 0 : 22 : 23 : 0.1
+T: 4 0 : 22 : 7 : 0.9
+T: 4 0 : 23 : 23 : 0.1
+T: 4 0 : 23 : 7 : 0.9
+T: 4 0 : 24 : 25 : 0.1
+T: 4 0 : 24 : 9 : 0.9
+T: 4 0 : 25 : 25 : 0.1
+T: 4 0 : 25 : 9 : 0.9
+T: 4 0 : 26 : 27 : 0.1
+T: 4 0 : 26 : 11 : 0.9
+T: 4 0 : 27 : 27 : 0.1
+T: 4 0 : 27 : 11 : 0.9
+T: 4 0 : 28 : 29 : 0.1
+T: 4 0 : 28 : 13 : 0.9
+T: 4 0 : 29 : 29 : 0.1
+T: 4 0 : 29 : 13 : 0.9
+T: 4 0 : 30 : 0 : 1
+T: 4 0 : 31 : 0 : 1
+T: 4 0 : 32 : 33 : 1
+T: 4 0 : 33 : 33 : 1
+T: 4 0 : 34 : 35 : 1
+T: 4 0 : 35 : 35 : 1
+T: 4 0 : 78 : 78 : 1
+T: 4 0 : 79 : 0 : 1
+T: 4 0 : 80 : 82 : 0.1
+T: 4 0 : 80 : 66 : 0.9
+T: 4 0 : 81 : 83 : 0.1
+T: 4 0 : 81 : 67 : 0.9
+T: 4 0 : 82 : 82 : 0.1
+T: 4 0 : 82 : 66 : 0.9
+T: 4 0 : 83 : 83 : 0.1
+T: 4 0 : 83 : 67 : 0.9
+T: 4 0 : 84 : 86 : 0.1
+T: 4 0 : 84 : 70 : 0.9
+T: 4 0 : 85 : 87 : 0.1
+T: 4 0 : 85 : 71 : 0.9
+T: 4 0 : 86 : 86 : 0.1
+T: 4 0 : 86 : 70 : 0.9
+T: 4 0 : 87 : 87 : 0.1
+T: 4 0 : 87 : 71 : 0.9
+T: 4 0 : 88 : 90 : 0.1
+T: 4 0 : 88 : 74 : 0.9
+T: 4 0 : 89 : 91 : 0.1
+T: 4 0 : 89 : 75 : 0.9
+T: 4 0 : 90 : 90 : 0.1
+T: 4 0 : 90 : 74 : 0.9
+T: 4 0 : 91 : 91 : 0.1
+T: 4 0 : 91 : 75 : 0.9
+T: 4 0 : 92 : 94 : 0.1
+T: 4 0 : 92 : 78 : 0.9
+T: 4 0 : 93 : 0 : 1
+T: 4 0 : 94 : 94 : 0.1
+T: 4 0 : 94 : 78 : 0.9
+T: 4 0 : 95 : 0 : 1
+T: 4 0 : 96 : 98 : 1
+T: 4 0 : 97 : 99 : 1
+T: 4 0 : 98 : 98 : 1
+T: 4 0 : 99 : 99 : 1
+T: 4 0 : 100 : 102 : 1
+T: 4 0 : 101 : 103 : 1
+T: 4 0 : 102 : 102 : 1
+T: 4 0 : 103 : 103 : 1
+T: 4 0 : 104 : 106 : 1
+T: 4 0 : 105 : 107 : 1
+T: 4 0 : 106 : 106 : 1
+T: 4 0 : 107 : 107 : 1
+T: 4 0 : 108 : 110 : 1
+T: 4 0 : 109 : 0 : 1
+T: 4 0 : 110 : 110 : 1
+T: 4 0 : 111 : 0 : 1
+T: 4 0 : 112 : 114 : 0.1
+T: 4 0 : 112 : 98 : 0.9
+T: 4 0 : 113 : 115 : 0.1
+T: 4 0 : 113 : 99 : 0.9
+T: 4 0 : 114 : 114 : 0.1
+T: 4 0 : 114 : 98 : 0.9
+T: 4 0 : 115 : 115 : 0.1
+T: 4 0 : 115 : 99 : 0.9
+T: 4 0 : 116 : 118 : 0.1
+T: 4 0 : 116 : 102 : 0.9
+T: 4 0 : 117 : 119 : 0.1
+T: 4 0 : 117 : 103 : 0.9
+T: 4 0 : 118 : 118 : 0.1
+T: 4 0 : 118 : 102 : 0.9
+T: 4 0 : 119 : 119 : 0.1
+T: 4 0 : 119 : 103 : 0.9
+T: 4 0 : 120 : 122 : 0.1
+T: 4 0 : 120 : 106 : 0.9
+T: 4 0 : 121 : 123 : 0.1
+T: 4 0 : 121 : 107 : 0.9
+T: 4 0 : 122 : 122 : 0.1
+T: 4 0 : 122 : 106 : 0.9
+T: 4 0 : 123 : 123 : 0.1
+T: 4 0 : 123 : 107 : 0.9
+T: 4 0 : 124 : 126 : 0.1
+T: 4 0 : 124 : 110 : 0.9
+T: 4 0 : 125 : 0 : 1
+T: 4 0 : 126 : 126 : 0.1
+T: 4 0 : 126 : 110 : 0.9
+T: 4 0 : 127 : 0 : 1
+T: 4 0 : 128 : 132 : 1
+T: 4 0 : 129 : 133 : 1
+T: 4 0 : 130 : 134 : 1
+T: 4 0 : 131 : 135 : 1
+T: 4 0 : 132 : 132 : 1
+T: 4 0 : 133 : 133 : 1
+T: 4 0 : 134 : 134 : 1
+T: 4 0 : 135 : 135 : 1
+T: 4 0 : 136 : 140 : 1
+T: 4 0 : 137 : 141 : 1
+T: 4 0 : 138 : 142 : 1
+T: 4 0 : 139 : 0 : 1
+T: 4 0 : 140 : 140 : 1
+T: 4 0 : 141 : 141 : 1
+T: 4 0 : 142 : 142 : 1
+T: 4 0 : 143 : 0 : 1
+T: 4 0 : 144 : 148 : 0.1
+T: 4 0 : 144 : 132 : 0.9
+T: 4 0 : 145 : 149 : 0.1
+T: 4 0 : 145 : 133 : 0.9
+T: 4 0 : 146 : 150 : 0.1
+T: 4 0 : 146 : 134 : 0.9
+T: 4 0 : 147 : 151 : 0.1
+T: 4 0 : 147 : 135 : 0.9
+T: 4 0 : 148 : 148 : 0.1
+T: 4 0 : 148 : 132 : 0.9
+T: 4 0 : 149 : 149 : 0.1
+T: 4 0 : 149 : 133 : 0.9
+T: 4 0 : 150 : 150 : 0.1
+T: 4 0 : 150 : 134 : 0.9
+T: 4 0 : 151 : 151 : 0.1
+T: 4 0 : 151 : 135 : 0.9
+T: 4 0 : 152 : 156 : 0.1
+T: 4 0 : 152 : 140 : 0.9
+T: 4 0 : 153 : 157 : 0.1
+T: 4 0 : 153 : 141 : 0.9
+T: 4 0 : 154 : 158 : 0.1
+T: 4 0 : 154 : 142 : 0.9
+T: 4 0 : 155 : 0 : 1
+T: 4 0 : 156 : 156 : 0.1
+T: 4 0 : 156 : 140 : 0.9
+T: 4 0 : 157 : 157 : 0.1
+T: 4 0 : 157 : 141 : 0.9
+T: 4 0 : 158 : 158 : 0.1
+T: 4 0 : 158 : 142 : 0.9
+T: 4 0 : 159 : 0 : 1
+T: 4 0 : 160 : 164 : 1
+T: 4 0 : 161 : 165 : 1
+T: 4 0 : 162 : 166 : 1
+T: 4 0 : 163 : 167 : 1
+T: 4 0 : 164 : 164 : 1
+T: 4 0 : 165 : 165 : 1
+T: 3 5 : 255 : 0 : 1
+T: 3 5 : 254 : 254 : 1
+T: 3 5 : 253 : 253 : 1
+T: 3 5 : 252 : 252 : 1
+T: 3 5 : 251 : 251 : 1
+T: 3 5 : 250 : 250 : 1
+T: 3 5 : 249 : 249 : 1
+T: 3 5 : 248 : 248 : 1
+T: 3 5 : 247 : 0 : 1
+T: 3 5 : 246 : 254 : 1
+T: 3 5 : 245 : 253 : 1
+T: 3 5 : 244 : 252 : 1
+T: 3 5 : 243 : 251 : 1
+T: 3 5 : 242 : 250 : 1
+T: 3 5 : 241 : 249 : 1
+T: 3 5 : 240 : 248 : 1
+T: 3 5 : 239 : 0 : 1
+T: 3 5 : 238 : 238 : 1
+T: 3 5 : 237 : 237 : 1
+T: 3 5 : 236 : 236 : 1
+T: 3 5 : 235 : 0 : 1
+T: 3 5 : 234 : 238 : 1
+T: 3 5 : 233 : 237 : 1
+T: 3 5 : 232 : 236 : 1
+T: 3 5 : 231 : 231 : 1
+T: 3 5 : 230 : 230 : 1
+T: 3 5 : 229 : 229 : 1
+T: 3 5 : 228 : 228 : 1
+T: 3 5 : 227 : 231 : 1
+T: 3 5 : 226 : 230 : 1
+T: 3 5 : 225 : 229 : 1
+T: 3 5 : 224 : 228 : 1
+T: 3 5 : 223 : 0 : 1
+T: 3 5 : 222 : 222 : 1
+T: 3 5 : 221 : 0 : 1
+T: 3 5 : 220 : 222 : 1
+T: 3 5 : 219 : 219 : 1
+T: 3 5 : 218 : 218 : 1
+T: 3 5 : 217 : 219 : 1
+T: 3 5 : 216 : 218 : 1
+T: 3 5 : 215 : 215 : 1
+T: 3 5 : 214 : 214 : 1
+T: 3 5 : 213 : 215 : 1
+T: 3 5 : 212 : 214 : 1
+T: 3 5 : 211 : 211 : 1
+T: 3 5 : 210 : 210 : 1
+T: 3 5 : 209 : 211 : 1
+T: 3 5 : 208 : 210 : 1
+T: 3 5 : 207 : 0 : 1
+T: 3 5 : 206 : 0 : 1
+T: 3 5 : 205 : 205 : 1
+T: 3 5 : 204 : 205 : 1
+T: 3 5 : 203 : 203 : 1
+T: 3 5 : 202 : 203 : 1
+T: 3 5 : 201 : 201 : 1
+T: 3 5 : 200 : 201 : 1
+T: 3 5 : 199 : 199 : 1
+T: 3 5 : 198 : 199 : 1
+T: 3 5 : 197 : 197 : 1
+T: 3 5 : 196 : 197 : 1
+T: 3 5 : 195 : 195 : 1
+T: 3 5 : 194 : 195 : 1
+T: 3 5 : 193 : 193 : 1
+T: 3 5 : 192 : 193 : 1
+T: 3 5 : 191 : 0 : 1
+T: 3 5 : 190 : 190 : 1
+T: 3 5 : 189 : 189 : 1
+T: 3 5 : 188 : 188 : 1
+T: 3 5 : 187 : 187 : 1
+T: 3 5 : 186 : 186 : 1
+T: 3 5 : 185 : 185 : 1
+T: 3 5 : 184 : 184 : 1
+T: 3 5 : 183 : 0 : 1
+T: 3 5 : 182 : 190 : 1
+T: 3 5 : 181 : 189 : 1
+T: 3 5 : 180 : 188 : 1
+T: 3 5 : 179 : 187 : 1
+T: 3 5 : 178 : 186 : 1
+T: 3 5 : 177 : 185 : 1
+T: 3 5 : 176 : 184 : 1
+T: 3 5 : 175 : 0 : 1
+T: 3 5 : 174 : 174 : 1
+T: 3 5 : 173 : 173 : 1
+T: 3 5 : 172 : 172 : 1
+T: 3 5 : 171 : 0 : 1
+T: 3 5 : 170 : 174 : 1
+T: 3 5 : 169 : 173 : 1
+T: 3 5 : 168 : 172 : 1
+T: 3 5 : 167 : 167 : 1
+T: 3 5 : 166 : 166 : 1
+T: 3 5 : 77 : 205 : 0.9
+T: 3 5 : 77 : 77 : 0.1
+T: 3 5 : 76 : 205 : 0.9
+T: 3 5 : 76 : 77 : 0.1
+T: 3 5 : 75 : 203 : 0.9
+T: 3 5 : 75 : 75 : 0.1
+T: 3 5 : 74 : 203 : 0.9
+T: 3 5 : 74 : 75 : 0.1
+T: 3 5 : 73 : 201 : 0.9
+T: 3 5 : 73 : 73 : 0.1
+T: 3 5 : 72 : 201 : 0.9
+T: 3 5 : 72 : 73 : 0.1
+T: 3 5 : 71 : 199 : 0.9
+T: 3 5 : 71 : 71 : 0.1
+T: 3 5 : 70 : 199 : 0.9
+T: 3 5 : 70 : 71 : 0.1
+T: 3 5 : 69 : 197 : 0.9
+T: 3 5 : 69 : 69 : 0.1
+T: 3 5 : 68 : 197 : 0.9
+T: 3 5 : 68 : 69 : 0.1
+T: 3 5 : 67 : 195 : 0.9
+T: 3 5 : 67 : 67 : 0.1
+T: 3 5 : 66 : 195 : 0.9
+T: 3 5 : 66 : 67 : 0.1
+T: 3 5 : 65 : 193 : 0.9
+T: 3 5 : 65 : 65 : 0.1
+T: 3 5 : 64 : 193 : 0.9
+T: 3 5 : 64 : 65 : 0.1
+T: 3 5 : 63 : 0 : 1
+T: 3 5 : 62 : 190 : 0.9
+T: 3 5 : 62 : 62 : 0.1
+T: 3 5 : 61 : 189 : 0.9
+T: 3 5 : 61 : 61 : 0.1
+T: 3 5 : 60 : 188 : 0.9
+T: 3 5 : 60 : 60 : 0.1
+T: 3 5 : 59 : 187 : 0.9
+T: 3 5 : 59 : 59 : 0.1
+T: 3 5 : 58 : 186 : 0.9
+T: 3 5 : 58 : 58 : 0.1
+T: 3 5 : 57 : 185 : 0.9
+T: 3 5 : 57 : 57 : 0.1
+T: 3 5 : 56 : 184 : 0.9
+T: 3 5 : 56 : 56 : 0.1
+T: 3 5 : 55 : 0 : 1
+T: 3 5 : 54 : 190 : 0.9
+T: 3 5 : 54 : 62 : 0.1
+T: 3 5 : 53 : 189 : 0.9
+T: 3 5 : 53 : 61 : 0.1
+T: 3 5 : 52 : 188 : 0.9
+T: 3 5 : 52 : 60 : 0.1
+T: 3 5 : 51 : 187 : 0.9
+T: 3 5 : 51 : 59 : 0.1
+T: 3 5 : 50 : 186 : 0.9
+T: 3 5 : 50 : 58 : 0.1
+T: 3 5 : 49 : 185 : 0.9
+T: 3 5 : 49 : 57 : 0.1
+T: 3 5 : 48 : 184 : 0.9
+T: 3 5 : 48 : 56 : 0.1
+T: 3 5 : 47 : 0 : 1
+T: 3 5 : 46 : 174 : 0.9
+T: 3 5 : 46 : 46 : 0.1
+T: 3 5 : 45 : 173 : 0.9
+T: 3 5 : 45 : 45 : 0.1
+T: 3 5 : 44 : 172 : 0.9
+T: 3 5 : 44 : 44 : 0.1
+T: 3 5 : 43 : 0 : 1
+T: 3 5 : 42 : 174 : 0.9
+T: 3 5 : 42 : 46 : 0.1
+T: 3 5 : 41 : 173 : 0.9
+T: 3 5 : 41 : 45 : 0.1
+T: 3 5 : 40 : 172 : 0.9
+T: 3 5 : 40 : 44 : 0.1
+T: 3 5 : 39 : 167 : 0.9
+T: 3 5 : 39 : 39 : 0.1
+T: 3 5 : 38 : 166 : 0.9
+T: 3 5 : 38 : 38 : 0.1
+T: 3 5 : 37 : 165 : 0.9
+T: 3 5 : 37 : 37 : 0.1
+T: 3 5 : 36 : 164 : 0.9
+T: 3 5 : 36 : 36 : 0.1
+T: 3 5 : 15 : 0 : 1
+T: 3 5 : 14 : 0 : 1
+T: 3 5 : 13 : 141 : 0.9
+T: 3 5 : 13 : 13 : 0.1
+T: 3 5 : 12 : 141 : 0.9
+T: 3 5 : 12 : 13 : 0.1
+T: 3 5 : 11 : 139 : 0.9
+T: 3 5 : 11 : 11 : 0.1
+T: 3 5 : 10 : 139 : 0.9
+T: 3 5 : 10 : 11 : 0.1
+T: 3 5 : 9 : 137 : 0.9
+T: 3 5 : 9 : 9 : 0.1
+T: 3 5 : 8 : 137 : 0.9
+T: 3 5 : 8 : 9 : 0.1
+T: 3 5 : 7 : 135 : 0.9
+T: 3 5 : 7 : 7 : 0.1
+T: 3 5 : 6 : 135 : 0.9
+T: 3 5 : 6 : 7 : 0.1
+T: 3 5 : 1 : 129 : 0.9
+T: 3 5 : 1 : 1 : 0.1
+T: 3 5 : 0 : 129 : 0.9
+T: 3 5 : 0 : 1 : 0.1
+T: 3 5 : 2 : 131 : 0.9
+T: 3 5 : 2 : 3 : 0.1
+T: 3 5 : 3 : 131 : 0.9
+T: 3 5 : 3 : 3 : 0.1
+T: 3 5 : 4 : 133 : 0.9
+T: 3 5 : 4 : 5 : 0.1
+T: 3 5 : 5 : 133 : 0.9
+T: 3 5 : 5 : 5 : 0.1
+T: 3 5 : 16 : 146 : 0.9
+T: 3 5 : 16 : 18 : 0.1
+T: 3 5 : 17 : 147 : 0.9
+T: 3 5 : 17 : 19 : 0.1
+T: 3 5 : 18 : 146 : 0.9
+T: 3 5 : 18 : 18 : 0.1
+T: 3 5 : 19 : 147 : 0.9
+T: 3 5 : 19 : 19 : 0.1
+T: 3 5 : 20 : 150 : 0.9
+T: 3 5 : 20 : 22 : 0.1
+T: 3 5 : 21 : 151 : 0.9
+T: 3 5 : 21 : 23 : 0.1
+T: 3 5 : 22 : 150 : 0.9
+T: 3 5 : 22 : 22 : 0.1
+T: 3 5 : 23 : 151 : 0.9
+T: 3 5 : 23 : 23 : 0.1
+T: 3 5 : 24 : 154 : 0.9
+T: 3 5 : 24 : 26 : 0.1
+T: 3 5 : 25 : 155 : 0.9
+T: 3 5 : 25 : 27 : 0.1
+T: 3 5 : 26 : 154 : 0.9
+T: 3 5 : 26 : 26 : 0.1
+T: 3 5 : 27 : 155 : 0.9
+T: 3 5 : 27 : 27 : 0.1
+T: 3 5 : 28 : 158 : 0.9
+T: 3 5 : 28 : 30 : 0.1
+T: 3 5 : 29 : 0 : 1
+T: 3 5 : 30 : 158 : 0.9
+T: 3 5 : 30 : 30 : 0.1
+T: 3 5 : 31 : 0 : 1
+T: 3 5 : 32 : 164 : 0.9
+T: 3 5 : 32 : 36 : 0.1
+T: 3 5 : 33 : 165 : 0.9
+T: 3 5 : 33 : 37 : 0.1
+T: 3 5 : 34 : 166 : 0.9
+T: 3 5 : 34 : 38 : 0.1
+T: 3 5 : 35 : 167 : 0.9
+T: 3 5 : 35 : 39 : 0.1
+T: 3 5 : 78 : 0 : 1
+T: 3 5 : 79 : 0 : 1
+T: 3 5 : 80 : 210 : 0.9
+T: 3 5 : 80 : 82 : 0.1
+T: 3 5 : 81 : 211 : 0.9
+T: 3 5 : 81 : 83 : 0.1
+T: 3 5 : 82 : 210 : 0.9
+T: 3 5 : 82 : 82 : 0.1
+T: 3 5 : 83 : 211 : 0.9
+T: 3 5 : 83 : 83 : 0.1
+T: 3 5 : 84 : 214 : 0.9
+T: 3 5 : 84 : 86 : 0.1
+T: 3 5 : 85 : 215 : 0.9
+T: 3 5 : 85 : 87 : 0.1
+T: 3 5 : 86 : 214 : 0.9
+T: 3 5 : 86 : 86 : 0.1
+T: 3 5 : 87 : 215 : 0.9
+T: 3 5 : 87 : 87 : 0.1
+T: 3 5 : 88 : 218 : 0.9
+T: 3 5 : 88 : 90 : 0.1
+T: 3 5 : 89 : 219 : 0.9
+T: 3 5 : 89 : 91 : 0.1
+T: 3 5 : 90 : 218 : 0.9
+T: 3 5 : 90 : 90 : 0.1
+T: 3 5 : 91 : 219 : 0.9
+T: 3 5 : 91 : 91 : 0.1
+T: 3 5 : 92 : 222 : 0.9
+T: 3 5 : 92 : 94 : 0.1
+T: 3 5 : 93 : 0 : 1
+T: 3 5 : 94 : 222 : 0.9
+T: 3 5 : 94 : 94 : 0.1
+T: 3 5 : 95 : 0 : 1
+T: 3 5 : 96 : 228 : 0.9
+T: 3 5 : 96 : 100 : 0.1
+T: 3 5 : 97 : 229 : 0.9
+T: 3 5 : 97 : 101 : 0.1
+T: 3 5 : 98 : 230 : 0.9
+T: 3 5 : 98 : 102 : 0.1
+T: 3 5 : 99 : 231 : 0.9
+T: 3 5 : 99 : 103 : 0.1
+T: 3 5 : 100 : 228 : 0.9
+T: 3 5 : 100 : 100 : 0.1
+T: 3 5 : 101 : 229 : 0.9
+T: 3 5 : 101 : 101 : 0.1
+T: 3 5 : 102 : 230 : 0.9
+T: 3 5 : 102 : 102 : 0.1
+T: 3 5 : 103 : 231 : 0.9
+T: 3 5 : 103 : 103 : 0.1
+T: 3 5 : 104 : 236 : 0.9
+T: 3 5 : 104 : 108 : 0.1
+T: 3 5 : 105 : 237 : 0.9
+T: 3 5 : 105 : 109 : 0.1
+T: 3 5 : 106 : 238 : 0.9
+T: 3 5 : 106 : 110 : 0.1
+T: 3 5 : 107 : 0 : 1
+T: 3 5 : 108 : 236 : 0.9
+T: 3 5 : 108 : 108 : 0.1
+T: 3 5 : 109 : 237 : 0.9
+T: 3 5 : 109 : 109 : 0.1
+T: 3 5 : 110 : 238 : 0.9
+T: 3 5 : 110 : 110 : 0.1
+T: 3 5 : 111 : 0 : 1
+T: 3 5 : 112 : 248 : 0.9
+T: 3 5 : 112 : 120 : 0.1
+T: 3 5 : 113 : 249 : 0.9
+T: 3 5 : 113 : 121 : 0.1
+T: 3 5 : 114 : 250 : 0.9
+T: 3 5 : 114 : 122 : 0.1
+T: 3 5 : 115 : 251 : 0.9
+T: 3 5 : 115 : 123 : 0.1
+T: 3 5 : 116 : 252 : 0.9
+T: 3 5 : 116 : 124 : 0.1
+T: 3 5 : 117 : 253 : 0.9
+T: 3 5 : 117 : 125 : 0.1
+T: 3 5 : 118 : 254 : 0.9
+T: 3 5 : 118 : 126 : 0.1
+T: 3 5 : 119 : 0 : 1
+T: 3 5 : 120 : 248 : 0.9
+T: 3 5 : 120 : 120 : 0.1
+T: 3 5 : 121 : 249 : 0.9
+T: 3 5 : 121 : 121 : 0.1
+T: 3 5 : 122 : 250 : 0.9
+T: 3 5 : 122 : 122 : 0.1
+T: 3 5 : 123 : 251 : 0.9
+T: 3 5 : 123 : 123 : 0.1
+T: 3 5 : 124 : 252 : 0.9
+T: 3 5 : 124 : 124 : 0.1
+T: 3 5 : 125 : 253 : 0.9
+T: 3 5 : 125 : 125 : 0.1
+T: 3 5 : 126 : 254 : 0.9
+T: 3 5 : 126 : 126 : 0.1
+T: 3 5 : 127 : 0 : 1
+T: 3 5 : 128 : 129 : 1
+T: 3 5 : 129 : 129 : 1
+T: 3 5 : 130 : 131 : 1
+T: 3 5 : 131 : 131 : 1
+T: 3 5 : 132 : 133 : 1
+T: 3 5 : 133 : 133 : 1
+T: 3 5 : 134 : 135 : 1
+T: 3 5 : 135 : 135 : 1
+T: 3 5 : 136 : 137 : 1
+T: 3 5 : 137 : 137 : 1
+T: 3 5 : 138 : 139 : 1
+T: 3 5 : 139 : 139 : 1
+T: 3 5 : 140 : 141 : 1
+T: 3 5 : 141 : 141 : 1
+T: 3 5 : 142 : 0 : 1
+T: 3 5 : 143 : 0 : 1
+T: 3 5 : 144 : 146 : 1
+T: 3 5 : 145 : 147 : 1
+T: 3 5 : 146 : 146 : 1
+T: 3 5 : 147 : 147 : 1
+T: 3 5 : 148 : 150 : 1
+T: 3 5 : 149 : 151 : 1
+T: 3 5 : 150 : 150 : 1
+T: 3 5 : 151 : 151 : 1
+T: 3 5 : 152 : 154 : 1
+T: 3 5 : 153 : 155 : 1
+T: 3 5 : 154 : 154 : 1
+T: 3 5 : 155 : 155 : 1
+T: 3 5 : 156 : 158 : 1
+T: 3 5 : 157 : 0 : 1
+T: 3 5 : 158 : 158 : 1
+T: 3 5 : 159 : 0 : 1
+T: 3 5 : 160 : 164 : 1
+T: 3 5 : 161 : 165 : 1
+T: 3 5 : 162 : 166 : 1
+T: 3 5 : 163 : 167 : 1
+T: 3 5 : 164 : 164 : 1
+T: 3 5 : 165 : 165 : 1
+T: 3 4 : 255 : 0 : 1
+T: 3 4 : 254 : 254 : 1
+T: 3 4 : 253 : 253 : 1
+T: 3 4 : 252 : 252 : 1
+T: 3 4 : 251 : 251 : 1
+T: 3 4 : 250 : 250 : 1
+T: 3 4 : 249 : 249 : 1
+T: 3 4 : 248 : 248 : 1
+T: 3 4 : 247 : 0 : 1
+T: 3 4 : 246 : 254 : 1
+T: 3 4 : 245 : 253 : 1
+T: 3 4 : 244 : 252 : 1
+T: 3 4 : 243 : 251 : 1
+T: 3 4 : 242 : 250 : 1
+T: 3 4 : 241 : 249 : 1
+T: 3 4 : 240 : 248 : 1
+T: 3 4 : 239 : 0 : 1
+T: 3 4 : 238 : 238 : 1
+T: 3 4 : 237 : 237 : 1
+T: 3 4 : 236 : 236 : 1
+T: 3 4 : 235 : 0 : 1
+T: 3 4 : 234 : 238 : 1
+T: 3 4 : 233 : 237 : 1
+T: 3 4 : 232 : 236 : 1
+T: 3 4 : 231 : 231 : 1
+T: 3 4 : 230 : 230 : 1
+T: 3 4 : 229 : 229 : 1
+T: 3 4 : 228 : 228 : 1
+T: 3 4 : 227 : 231 : 1
+T: 3 4 : 226 : 230 : 1
+T: 3 4 : 225 : 229 : 1
+T: 3 4 : 224 : 228 : 1
+T: 3 4 : 223 : 0 : 1
+T: 3 4 : 222 : 222 : 1
+T: 3 4 : 221 : 0 : 1
+T: 3 4 : 220 : 222 : 1
+T: 3 4 : 219 : 219 : 1
+T: 3 4 : 218 : 218 : 1
+T: 3 4 : 217 : 219 : 1
+T: 3 4 : 216 : 218 : 1
+T: 3 4 : 215 : 215 : 1
+T: 3 4 : 214 : 214 : 1
+T: 3 4 : 213 : 215 : 1
+T: 3 4 : 212 : 214 : 1
+T: 3 4 : 211 : 211 : 1
+T: 3 4 : 210 : 210 : 1
+T: 3 4 : 209 : 211 : 1
+T: 3 4 : 208 : 210 : 1
+T: 3 4 : 207 : 0 : 1
+T: 3 4 : 206 : 0 : 1
+T: 3 4 : 205 : 205 : 1
+T: 3 4 : 204 : 205 : 1
+T: 3 4 : 203 : 203 : 1
+T: 3 4 : 202 : 203 : 1
+T: 3 4 : 201 : 201 : 1
+T: 3 4 : 200 : 201 : 1
+T: 3 4 : 199 : 199 : 1
+T: 3 4 : 198 : 199 : 1
+T: 3 4 : 197 : 197 : 1
+T: 3 4 : 196 : 197 : 1
+T: 3 4 : 195 : 195 : 1
+T: 3 4 : 194 : 195 : 1
+T: 3 4 : 193 : 193 : 1
+T: 3 4 : 192 : 193 : 1
+T: 3 4 : 191 : 0 : 1
+T: 3 4 : 190 : 190 : 1
+T: 3 4 : 189 : 189 : 1
+T: 3 4 : 188 : 188 : 1
+T: 3 4 : 187 : 187 : 1
+T: 3 4 : 186 : 186 : 1
+T: 3 4 : 185 : 185 : 1
+T: 3 4 : 184 : 184 : 1
+T: 3 4 : 183 : 0 : 1
+T: 3 4 : 182 : 190 : 1
+T: 3 4 : 181 : 189 : 1
+T: 3 4 : 180 : 188 : 1
+T: 3 4 : 179 : 187 : 1
+T: 3 4 : 178 : 186 : 1
+T: 3 4 : 177 : 185 : 1
+T: 3 4 : 176 : 184 : 1
+T: 3 4 : 175 : 0 : 1
+T: 3 4 : 174 : 174 : 1
+T: 3 4 : 173 : 173 : 1
+T: 3 4 : 172 : 172 : 1
+T: 3 4 : 171 : 0 : 1
+T: 3 4 : 170 : 174 : 1
+T: 3 4 : 169 : 173 : 1
+T: 3 4 : 168 : 172 : 1
+T: 3 4 : 167 : 167 : 1
+T: 3 4 : 166 : 166 : 1
+T: 3 4 : 77 : 205 : 0.9
+T: 3 4 : 77 : 77 : 0.1
+T: 3 4 : 76 : 205 : 0.9
+T: 3 4 : 76 : 77 : 0.1
+T: 3 4 : 75 : 203 : 0.9
+T: 3 4 : 75 : 75 : 0.1
+T: 3 4 : 74 : 203 : 0.9
+T: 3 4 : 74 : 75 : 0.1
+T: 3 4 : 73 : 201 : 0.9
+T: 3 4 : 73 : 73 : 0.1
+T: 3 4 : 72 : 201 : 0.9
+T: 3 4 : 72 : 73 : 0.1
+T: 3 4 : 71 : 199 : 0.9
+T: 3 4 : 71 : 71 : 0.1
+T: 3 4 : 70 : 199 : 0.9
+T: 3 4 : 70 : 71 : 0.1
+T: 3 4 : 69 : 197 : 0.9
+T: 3 4 : 69 : 69 : 0.1
+T: 3 4 : 68 : 197 : 0.9
+T: 3 4 : 68 : 69 : 0.1
+T: 3 4 : 67 : 195 : 0.9
+T: 3 4 : 67 : 67 : 0.1
+T: 3 4 : 66 : 195 : 0.9
+T: 3 4 : 66 : 67 : 0.1
+T: 3 4 : 65 : 193 : 0.9
+T: 3 4 : 65 : 65 : 0.1
+T: 3 4 : 64 : 193 : 0.9
+T: 3 4 : 64 : 65 : 0.1
+T: 3 4 : 63 : 0 : 1
+T: 3 4 : 62 : 190 : 0.9
+T: 3 4 : 62 : 62 : 0.1
+T: 3 4 : 61 : 189 : 0.9
+T: 3 4 : 61 : 61 : 0.1
+T: 3 4 : 60 : 188 : 0.9
+T: 3 4 : 60 : 60 : 0.1
+T: 3 4 : 59 : 187 : 0.9
+T: 3 4 : 59 : 59 : 0.1
+T: 3 4 : 58 : 186 : 0.9
+T: 3 4 : 58 : 58 : 0.1
+T: 3 4 : 57 : 185 : 0.9
+T: 3 4 : 57 : 57 : 0.1
+T: 3 4 : 56 : 184 : 0.9
+T: 3 4 : 56 : 56 : 0.1
+T: 3 4 : 55 : 0 : 1
+T: 3 4 : 54 : 190 : 0.9
+T: 3 4 : 54 : 62 : 0.1
+T: 3 4 : 53 : 189 : 0.9
+T: 3 4 : 53 : 61 : 0.1
+T: 3 4 : 52 : 188 : 0.9
+T: 3 4 : 52 : 60 : 0.1
+T: 3 4 : 51 : 187 : 0.9
+T: 3 4 : 51 : 59 : 0.1
+T: 3 4 : 50 : 186 : 0.9
+T: 3 4 : 50 : 58 : 0.1
+T: 3 4 : 49 : 185 : 0.9
+T: 3 4 : 49 : 57 : 0.1
+T: 3 4 : 48 : 184 : 0.9
+T: 3 4 : 48 : 56 : 0.1
+T: 3 4 : 47 : 0 : 1
+T: 3 4 : 46 : 174 : 0.9
+T: 3 4 : 46 : 46 : 0.1
+T: 3 4 : 45 : 173 : 0.9
+T: 3 4 : 45 : 45 : 0.1
+T: 3 4 : 44 : 172 : 0.9
+T: 3 4 : 44 : 44 : 0.1
+T: 3 4 : 43 : 0 : 1
+T: 3 4 : 42 : 174 : 0.9
+T: 3 4 : 42 : 46 : 0.1
+T: 3 4 : 41 : 173 : 0.9
+T: 3 4 : 41 : 45 : 0.1
+T: 3 4 : 40 : 172 : 0.9
+T: 3 4 : 40 : 44 : 0.1
+T: 3 4 : 39 : 167 : 0.9
+T: 3 4 : 39 : 39 : 0.1
+T: 3 4 : 38 : 166 : 0.9
+T: 3 4 : 38 : 38 : 0.1
+T: 3 4 : 37 : 165 : 0.9
+T: 3 4 : 37 : 37 : 0.1
+T: 3 4 : 36 : 164 : 0.9
+T: 3 4 : 36 : 36 : 0.1
+T: 3 4 : 15 : 0 : 1
+T: 3 4 : 14 : 0 : 1
+T: 3 4 : 13 : 141 : 0.9
+T: 3 4 : 13 : 13 : 0.1
+T: 3 4 : 12 : 141 : 0.9
+T: 3 4 : 12 : 13 : 0.1
+T: 3 4 : 11 : 139 : 0.9
+T: 3 4 : 11 : 11 : 0.1
+T: 3 4 : 10 : 139 : 0.9
+T: 3 4 : 10 : 11 : 0.1
+T: 3 4 : 9 : 137 : 0.9
+T: 3 4 : 9 : 9 : 0.1
+T: 3 4 : 8 : 137 : 0.9
+T: 3 4 : 8 : 9 : 0.1
+T: 3 4 : 7 : 135 : 0.9
+T: 3 4 : 7 : 7 : 0.1
+T: 3 4 : 6 : 135 : 0.9
+T: 3 4 : 6 : 7 : 0.1
+T: 3 4 : 1 : 129 : 0.9
+T: 3 4 : 1 : 1 : 0.1
+T: 3 4 : 0 : 129 : 0.9
+T: 3 4 : 0 : 1 : 0.1
+T: 3 4 : 2 : 131 : 0.9
+T: 3 4 : 2 : 3 : 0.1
+T: 3 4 : 3 : 131 : 0.9
+T: 3 4 : 3 : 3 : 0.1
+T: 3 4 : 4 : 133 : 0.9
+T: 3 4 : 4 : 5 : 0.1
+T: 3 4 : 5 : 133 : 0.9
+T: 3 4 : 5 : 5 : 0.1
+T: 3 4 : 16 : 146 : 0.9
+T: 3 4 : 16 : 18 : 0.1
+T: 3 4 : 17 : 147 : 0.9
+T: 3 4 : 17 : 19 : 0.1
+T: 3 4 : 18 : 146 : 0.9
+T: 3 4 : 18 : 18 : 0.1
+T: 3 4 : 19 : 147 : 0.9
+T: 3 4 : 19 : 19 : 0.1
+T: 3 4 : 20 : 150 : 0.9
+T: 3 4 : 20 : 22 : 0.1
+T: 3 4 : 21 : 151 : 0.9
+T: 3 4 : 21 : 23 : 0.1
+T: 3 4 : 22 : 150 : 0.9
+T: 3 4 : 22 : 22 : 0.1
+T: 3 4 : 23 : 151 : 0.9
+T: 3 4 : 23 : 23 : 0.1
+T: 3 4 : 24 : 154 : 0.9
+T: 3 4 : 24 : 26 : 0.1
+T: 3 4 : 25 : 155 : 0.9
+T: 3 4 : 25 : 27 : 0.1
+T: 3 4 : 26 : 154 : 0.9
+T: 3 4 : 26 : 26 : 0.1
+T: 3 4 : 27 : 155 : 0.9
+T: 3 4 : 27 : 27 : 0.1
+T: 3 4 : 28 : 158 : 0.9
+T: 3 4 : 28 : 30 : 0.1
+T: 3 4 : 29 : 0 : 1
+T: 3 4 : 30 : 158 : 0.9
+T: 3 4 : 30 : 30 : 0.1
+T: 3 4 : 31 : 0 : 1
+T: 3 4 : 32 : 164 : 0.9
+T: 3 4 : 32 : 36 : 0.1
+T: 3 4 : 33 : 165 : 0.9
+T: 3 4 : 33 : 37 : 0.1
+T: 3 4 : 34 : 166 : 0.9
+T: 3 4 : 34 : 38 : 0.1
+T: 3 4 : 35 : 167 : 0.9
+T: 3 4 : 35 : 39 : 0.1
+T: 3 4 : 78 : 0 : 1
+T: 3 4 : 79 : 0 : 1
+T: 3 4 : 80 : 210 : 0.9
+T: 3 4 : 80 : 82 : 0.1
+T: 3 4 : 81 : 211 : 0.9
+T: 3 4 : 81 : 83 : 0.1
+T: 3 4 : 82 : 210 : 0.9
+T: 3 4 : 82 : 82 : 0.1
+T: 3 4 : 83 : 211 : 0.9
+T: 3 4 : 83 : 83 : 0.1
+T: 3 4 : 84 : 214 : 0.9
+T: 3 4 : 84 : 86 : 0.1
+T: 3 4 : 85 : 215 : 0.9
+T: 3 4 : 85 : 87 : 0.1
+T: 3 4 : 86 : 214 : 0.9
+T: 3 4 : 86 : 86 : 0.1
+T: 3 4 : 87 : 215 : 0.9
+T: 3 4 : 87 : 87 : 0.1
+T: 3 4 : 88 : 218 : 0.9
+T: 3 4 : 88 : 90 : 0.1
+T: 3 4 : 89 : 219 : 0.9
+T: 3 4 : 89 : 91 : 0.1
+T: 3 4 : 90 : 218 : 0.9
+T: 3 4 : 90 : 90 : 0.1
+T: 3 4 : 91 : 219 : 0.9
+T: 3 4 : 91 : 91 : 0.1
+T: 3 4 : 92 : 222 : 0.9
+T: 3 4 : 92 : 94 : 0.1
+T: 3 4 : 93 : 0 : 1
+T: 3 4 : 94 : 222 : 0.9
+T: 3 4 : 94 : 94 : 0.1
+T: 3 4 : 95 : 0 : 1
+T: 3 4 : 96 : 228 : 0.9
+T: 3 4 : 96 : 100 : 0.1
+T: 3 4 : 97 : 229 : 0.9
+T: 3 4 : 97 : 101 : 0.1
+T: 3 4 : 98 : 230 : 0.9
+T: 3 4 : 98 : 102 : 0.1
+T: 3 4 : 99 : 231 : 0.9
+T: 3 4 : 99 : 103 : 0.1
+T: 3 4 : 100 : 228 : 0.9
+T: 3 4 : 100 : 100 : 0.1
+T: 3 4 : 101 : 229 : 0.9
+T: 3 4 : 101 : 101 : 0.1
+T: 3 4 : 102 : 230 : 0.9
+T: 3 4 : 102 : 102 : 0.1
+T: 3 4 : 103 : 231 : 0.9
+T: 3 4 : 103 : 103 : 0.1
+T: 3 4 : 104 : 236 : 0.9
+T: 3 4 : 104 : 108 : 0.1
+T: 3 4 : 105 : 237 : 0.9
+T: 3 4 : 105 : 109 : 0.1
+T: 3 4 : 106 : 238 : 0.9
+T: 3 4 : 106 : 110 : 0.1
+T: 3 4 : 107 : 0 : 1
+T: 3 4 : 108 : 236 : 0.9
+T: 3 4 : 108 : 108 : 0.1
+T: 3 4 : 109 : 237 : 0.9
+T: 3 4 : 109 : 109 : 0.1
+T: 3 4 : 110 : 238 : 0.9
+T: 3 4 : 110 : 110 : 0.1
+T: 3 4 : 111 : 0 : 1
+T: 3 4 : 112 : 248 : 0.9
+T: 3 4 : 112 : 120 : 0.1
+T: 3 4 : 113 : 249 : 0.9
+T: 3 4 : 113 : 121 : 0.1
+T: 3 4 : 114 : 250 : 0.9
+T: 3 4 : 114 : 122 : 0.1
+T: 3 4 : 115 : 251 : 0.9
+T: 3 4 : 115 : 123 : 0.1
+T: 3 4 : 116 : 252 : 0.9
+T: 3 4 : 116 : 124 : 0.1
+T: 3 4 : 117 : 253 : 0.9
+T: 3 4 : 117 : 125 : 0.1
+T: 3 4 : 118 : 254 : 0.9
+T: 3 4 : 118 : 126 : 0.1
+T: 3 4 : 119 : 0 : 1
+T: 3 4 : 120 : 248 : 0.9
+T: 3 4 : 120 : 120 : 0.1
+T: 3 4 : 121 : 249 : 0.9
+T: 3 4 : 121 : 121 : 0.1
+T: 3 4 : 122 : 250 : 0.9
+T: 3 4 : 122 : 122 : 0.1
+T: 3 4 : 123 : 251 : 0.9
+T: 3 4 : 123 : 123 : 0.1
+T: 3 4 : 124 : 252 : 0.9
+T: 3 4 : 124 : 124 : 0.1
+T: 3 4 : 125 : 253 : 0.9
+T: 3 4 : 125 : 125 : 0.1
+T: 3 4 : 126 : 254 : 0.9
+T: 3 4 : 126 : 126 : 0.1
+T: 3 4 : 127 : 0 : 1
+T: 3 4 : 128 : 129 : 1
+T: 3 4 : 129 : 129 : 1
+T: 3 4 : 130 : 131 : 1
+T: 3 4 : 131 : 131 : 1
+T: 3 4 : 132 : 133 : 1
+T: 3 4 : 133 : 133 : 1
+T: 3 4 : 134 : 135 : 1
+T: 3 4 : 135 : 135 : 1
+T: 3 4 : 136 : 137 : 1
+T: 3 4 : 137 : 137 : 1
+T: 3 4 : 138 : 139 : 1
+T: 3 4 : 139 : 139 : 1
+T: 3 4 : 140 : 141 : 1
+T: 3 4 : 141 : 141 : 1
+T: 3 4 : 142 : 0 : 1
+T: 3 4 : 143 : 0 : 1
+T: 3 4 : 144 : 146 : 1
+T: 3 4 : 145 : 147 : 1
+T: 3 4 : 146 : 146 : 1
+T: 3 4 : 147 : 147 : 1
+T: 3 4 : 148 : 150 : 1
+T: 3 4 : 149 : 151 : 1
+T: 3 4 : 150 : 150 : 1
+T: 3 4 : 151 : 151 : 1
+T: 3 4 : 152 : 154 : 1
+T: 3 4 : 153 : 155 : 1
+T: 3 4 : 154 : 154 : 1
+T: 3 4 : 155 : 155 : 1
+T: 3 4 : 156 : 158 : 1
+T: 3 4 : 157 : 0 : 1
+T: 3 4 : 158 : 158 : 1
+T: 3 4 : 159 : 0 : 1
+T: 3 4 : 160 : 164 : 1
+T: 3 4 : 161 : 165 : 1
+T: 3 4 : 162 : 166 : 1
+T: 3 4 : 163 : 167 : 1
+T: 3 4 : 164 : 164 : 1
+T: 3 4 : 165 : 165 : 1
+T: 3 3 : 255 : 255 : 1
+T: 3 3 : 254 : 254 : 1
+T: 3 3 : 253 : 253 : 1
+T: 3 3 : 252 : 252 : 1
+T: 3 3 : 251 : 251 : 1
+T: 3 3 : 250 : 250 : 1
+T: 3 3 : 249 : 249 : 1
+T: 3 3 : 248 : 248 : 1
+T: 3 3 : 247 : 247 : 1
+T: 3 3 : 246 : 246 : 1
+T: 3 3 : 245 : 245 : 1
+T: 3 3 : 244 : 244 : 1
+T: 3 3 : 243 : 243 : 1
+T: 3 3 : 242 : 242 : 1
+T: 3 3 : 241 : 241 : 1
+T: 3 3 : 240 : 240 : 1
+T: 3 3 : 239 : 239 : 1
+T: 3 3 : 238 : 238 : 1
+T: 3 3 : 237 : 237 : 1
+T: 3 3 : 236 : 236 : 1
+T: 3 3 : 235 : 235 : 1
+T: 3 3 : 234 : 234 : 1
+T: 3 3 : 233 : 233 : 1
+T: 3 3 : 232 : 232 : 1
+T: 3 3 : 231 : 231 : 1
+T: 3 3 : 230 : 230 : 1
+T: 3 3 : 229 : 229 : 1
+T: 3 3 : 228 : 228 : 1
+T: 3 3 : 227 : 227 : 1
+T: 3 3 : 226 : 226 : 1
+T: 3 3 : 225 : 225 : 1
+T: 3 3 : 224 : 224 : 1
+T: 3 3 : 223 : 255 : 0.9
+T: 3 3 : 223 : 223 : 0.1
+T: 3 3 : 222 : 254 : 0.9
+T: 3 3 : 222 : 222 : 0.1
+T: 3 3 : 221 : 253 : 0.9
+T: 3 3 : 221 : 221 : 0.1
+T: 3 3 : 220 : 252 : 0.9
+T: 3 3 : 220 : 220 : 0.1
+T: 3 3 : 219 : 251 : 0.9
+T: 3 3 : 219 : 219 : 0.1
+T: 3 3 : 218 : 250 : 0.9
+T: 3 3 : 218 : 218 : 0.1
+T: 3 3 : 217 : 249 : 0.9
+T: 3 3 : 217 : 217 : 0.1
+T: 3 3 : 216 : 248 : 0.9
+T: 3 3 : 216 : 216 : 0.1
+T: 3 3 : 215 : 247 : 0.9
+T: 3 3 : 215 : 215 : 0.1
+T: 3 3 : 214 : 246 : 0.9
+T: 3 3 : 214 : 214 : 0.1
+T: 3 3 : 213 : 245 : 0.9
+T: 3 3 : 213 : 213 : 0.1
+T: 3 3 : 212 : 244 : 0.9
+T: 3 3 : 212 : 212 : 0.1
+T: 3 3 : 211 : 243 : 0.9
+T: 3 3 : 211 : 211 : 0.1
+T: 3 3 : 210 : 242 : 0.9
+T: 3 3 : 210 : 210 : 0.1
+T: 3 3 : 209 : 241 : 0.9
+T: 3 3 : 209 : 209 : 0.1
+T: 3 3 : 208 : 240 : 0.9
+T: 3 3 : 208 : 208 : 0.1
+T: 3 3 : 207 : 239 : 0.9
+T: 3 3 : 207 : 207 : 0.1
+T: 3 3 : 206 : 238 : 0.9
+T: 3 3 : 206 : 206 : 0.1
+T: 3 3 : 205 : 237 : 0.9
+T: 3 3 : 205 : 205 : 0.1
+T: 3 3 : 204 : 236 : 0.9
+T: 3 3 : 204 : 204 : 0.1
+T: 3 3 : 203 : 235 : 0.9
+T: 3 3 : 203 : 203 : 0.1
+T: 3 3 : 202 : 234 : 0.9
+T: 3 3 : 202 : 202 : 0.1
+T: 3 3 : 201 : 233 : 0.9
+T: 3 3 : 201 : 201 : 0.1
+T: 3 3 : 200 : 232 : 0.9
+T: 3 3 : 200 : 200 : 0.1
+T: 3 3 : 199 : 231 : 0.9
+T: 3 3 : 199 : 199 : 0.1
+T: 3 3 : 198 : 230 : 0.9
+T: 3 3 : 198 : 198 : 0.1
+T: 3 3 : 197 : 229 : 0.9
+T: 3 3 : 197 : 197 : 0.1
+T: 3 3 : 196 : 228 : 0.9
+T: 3 3 : 196 : 196 : 0.1
+T: 3 3 : 195 : 227 : 0.9
+T: 3 3 : 195 : 195 : 0.1
+T: 3 3 : 194 : 226 : 0.9
+T: 3 3 : 194 : 194 : 0.1
+T: 3 3 : 193 : 225 : 0.9
+T: 3 3 : 193 : 193 : 0.1
+T: 3 3 : 192 : 224 : 0.9
+T: 3 3 : 192 : 192 : 0.1
+T: 3 3 : 191 : 191 : 1
+T: 3 3 : 190 : 190 : 1
+T: 3 3 : 189 : 189 : 1
+T: 3 3 : 188 : 188 : 1
+T: 3 3 : 187 : 187 : 1
+T: 3 3 : 186 : 186 : 1
+T: 3 3 : 185 : 185 : 1
+T: 3 3 : 184 : 184 : 1
+T: 3 3 : 183 : 183 : 1
+T: 3 3 : 182 : 182 : 1
+T: 3 3 : 181 : 181 : 1
+T: 3 3 : 180 : 180 : 1
+T: 3 3 : 179 : 179 : 1
+T: 3 3 : 178 : 178 : 1
+T: 3 3 : 177 : 177 : 1
+T: 3 3 : 176 : 176 : 1
+T: 3 3 : 175 : 175 : 1
+T: 3 3 : 174 : 174 : 1
+T: 3 3 : 173 : 173 : 1
+T: 3 3 : 172 : 172 : 1
+T: 3 3 : 171 : 171 : 1
+T: 3 3 : 170 : 170 : 1
+T: 3 3 : 169 : 169 : 1
+T: 3 3 : 168 : 168 : 1
+T: 3 3 : 167 : 167 : 1
+T: 3 3 : 166 : 166 : 1
+T: 3 3 : 77 : 237 : 0.81
+T: 3 3 : 77 : 205 : 0.09
+T: 3 3 : 77 : 77 : 0.01
+T: 3 3 : 77 : 109 : 0.09
+T: 3 3 : 76 : 236 : 0.81
+T: 3 3 : 76 : 204 : 0.09
+T: 3 3 : 76 : 76 : 0.01
+T: 3 3 : 76 : 108 : 0.09
+T: 3 3 : 75 : 235 : 0.81
+T: 3 3 : 75 : 203 : 0.09
+T: 3 3 : 75 : 75 : 0.01
+T: 3 3 : 75 : 107 : 0.09
+T: 3 3 : 74 : 234 : 0.81
+T: 3 3 : 74 : 202 : 0.09
+T: 3 3 : 74 : 74 : 0.01
+T: 3 3 : 74 : 106 : 0.09
+T: 3 3 : 73 : 233 : 0.81
+T: 3 3 : 73 : 201 : 0.09
+T: 3 3 : 73 : 73 : 0.01
+T: 3 3 : 73 : 105 : 0.09
+T: 3 3 : 72 : 232 : 0.81
+T: 3 3 : 72 : 200 : 0.09
+T: 3 3 : 72 : 72 : 0.01
+T: 3 3 : 72 : 104 : 0.09
+T: 3 3 : 71 : 231 : 0.81
+T: 3 3 : 71 : 199 : 0.09
+T: 3 3 : 71 : 71 : 0.01
+T: 3 3 : 71 : 103 : 0.09
+T: 3 3 : 70 : 230 : 0.81
+T: 3 3 : 70 : 198 : 0.09
+T: 3 3 : 70 : 70 : 0.01
+T: 3 3 : 70 : 102 : 0.09
+T: 3 3 : 69 : 229 : 0.81
+T: 3 3 : 69 : 197 : 0.09
+T: 3 3 : 69 : 69 : 0.01
+T: 3 3 : 69 : 101 : 0.09
+T: 3 3 : 68 : 228 : 0.81
+T: 3 3 : 68 : 196 : 0.09
+T: 3 3 : 68 : 68 : 0.01
+T: 3 3 : 68 : 100 : 0.09
+T: 3 3 : 67 : 227 : 0.81
+T: 3 3 : 67 : 195 : 0.09
+T: 3 3 : 67 : 67 : 0.01
+T: 3 3 : 67 : 99 : 0.09
+T: 3 3 : 66 : 226 : 0.81
+T: 3 3 : 66 : 194 : 0.09
+T: 3 3 : 66 : 66 : 0.01
+T: 3 3 : 66 : 98 : 0.09
+T: 3 3 : 65 : 225 : 0.81
+T: 3 3 : 65 : 193 : 0.09
+T: 3 3 : 65 : 65 : 0.01
+T: 3 3 : 65 : 97 : 0.09
+T: 3 3 : 64 : 224 : 0.81
+T: 3 3 : 64 : 192 : 0.09
+T: 3 3 : 64 : 64 : 0.01
+T: 3 3 : 64 : 96 : 0.09
+T: 3 3 : 63 : 191 : 0.9
+T: 3 3 : 63 : 63 : 0.1
+T: 3 3 : 62 : 190 : 0.9
+T: 3 3 : 62 : 62 : 0.1
+T: 3 3 : 61 : 189 : 0.9
+T: 3 3 : 61 : 61 : 0.1
+T: 3 3 : 60 : 188 : 0.9
+T: 3 3 : 60 : 60 : 0.1
+T: 3 3 : 59 : 187 : 0.9
+T: 3 3 : 59 : 59 : 0.1
+T: 3 3 : 58 : 186 : 0.9
+T: 3 3 : 58 : 58 : 0.1
+T: 3 3 : 57 : 185 : 0.9
+T: 3 3 : 57 : 57 : 0.1
+T: 3 3 : 56 : 184 : 0.9
+T: 3 3 : 56 : 56 : 0.1
+T: 3 3 : 55 : 183 : 0.9
+T: 3 3 : 55 : 55 : 0.1
+T: 3 3 : 54 : 182 : 0.9
+T: 3 3 : 54 : 54 : 0.1
+T: 3 3 : 53 : 181 : 0.9
+T: 3 3 : 53 : 53 : 0.1
+T: 3 3 : 52 : 180 : 0.9
+T: 3 3 : 52 : 52 : 0.1
+T: 3 3 : 51 : 179 : 0.9
+T: 3 3 : 51 : 51 : 0.1
+T: 3 3 : 50 : 178 : 0.9
+T: 3 3 : 50 : 50 : 0.1
+T: 3 3 : 49 : 177 : 0.9
+T: 3 3 : 49 : 49 : 0.1
+T: 3 3 : 48 : 176 : 0.9
+T: 3 3 : 48 : 48 : 0.1
+T: 3 3 : 47 : 175 : 0.9
+T: 3 3 : 47 : 47 : 0.1
+T: 3 3 : 46 : 174 : 0.9
+T: 3 3 : 46 : 46 : 0.1
+T: 3 3 : 45 : 173 : 0.9
+T: 3 3 : 45 : 45 : 0.1
+T: 3 3 : 44 : 172 : 0.9
+T: 3 3 : 44 : 44 : 0.1
+T: 3 3 : 43 : 171 : 0.9
+T: 3 3 : 43 : 43 : 0.1
+T: 3 3 : 42 : 170 : 0.9
+T: 3 3 : 42 : 42 : 0.1
+T: 3 3 : 41 : 169 : 0.9
+T: 3 3 : 41 : 41 : 0.1
+T: 3 3 : 40 : 168 : 0.9
+T: 3 3 : 40 : 40 : 0.1
+T: 3 3 : 39 : 167 : 0.9
+T: 3 3 : 39 : 39 : 0.1
+T: 3 3 : 38 : 166 : 0.9
+T: 3 3 : 38 : 38 : 0.1
+T: 3 3 : 37 : 165 : 0.9
+T: 3 3 : 37 : 37 : 0.1
+T: 3 3 : 36 : 164 : 0.9
+T: 3 3 : 36 : 36 : 0.1
+T: 3 3 : 15 : 175 : 0.81
+T: 3 3 : 15 : 143 : 0.09
+T: 3 3 : 15 : 15 : 0.01
+T: 3 3 : 15 : 47 : 0.09
+T: 3 3 : 14 : 174 : 0.81
+T: 3 3 : 14 : 142 : 0.09
+T: 3 3 : 14 : 14 : 0.01
+T: 3 3 : 14 : 46 : 0.09
+T: 3 3 : 13 : 173 : 0.81
+T: 3 3 : 13 : 141 : 0.09
+T: 3 3 : 13 : 13 : 0.01
+T: 3 3 : 13 : 45 : 0.09
+T: 3 3 : 12 : 172 : 0.81
+T: 3 3 : 12 : 140 : 0.09
+T: 3 3 : 12 : 12 : 0.01
+T: 3 3 : 12 : 44 : 0.09
+T: 3 3 : 11 : 171 : 0.81
+T: 3 3 : 11 : 139 : 0.09
+T: 3 3 : 11 : 11 : 0.01
+T: 3 3 : 11 : 43 : 0.09
+T: 3 3 : 10 : 170 : 0.81
+T: 3 3 : 10 : 138 : 0.09
+T: 3 3 : 10 : 10 : 0.01
+T: 3 3 : 10 : 42 : 0.09
+T: 3 3 : 9 : 169 : 0.81
+T: 3 3 : 9 : 137 : 0.09
+T: 3 3 : 9 : 9 : 0.01
+T: 3 3 : 9 : 41 : 0.09
+T: 3 3 : 8 : 168 : 0.81
+T: 3 3 : 8 : 136 : 0.09
+T: 3 3 : 8 : 8 : 0.01
+T: 3 3 : 8 : 40 : 0.09
+T: 3 3 : 7 : 167 : 0.81
+T: 3 3 : 7 : 135 : 0.09
+T: 3 3 : 7 : 7 : 0.01
+T: 3 3 : 7 : 39 : 0.09
+T: 3 3 : 6 : 166 : 0.81
+T: 3 3 : 6 : 134 : 0.09
+T: 3 3 : 6 : 6 : 0.01
+T: 3 3 : 6 : 38 : 0.09
+T: 3 3 : 1 : 161 : 0.81
+T: 3 3 : 1 : 129 : 0.09
+T: 3 3 : 1 : 1 : 0.01
+T: 3 3 : 1 : 33 : 0.09
+T: 3 3 : 0 : 160 : 0.81
+T: 3 3 : 0 : 128 : 0.09
+T: 3 3 : 0 : 0 : 0.01
+T: 3 3 : 0 : 32 : 0.09
+T: 3 3 : 2 : 162 : 0.81
+T: 3 3 : 2 : 130 : 0.09
+T: 3 3 : 2 : 2 : 0.01
+T: 3 3 : 2 : 34 : 0.09
+T: 3 3 : 3 : 163 : 0.81
+T: 3 3 : 3 : 131 : 0.09
+T: 3 3 : 3 : 3 : 0.01
+T: 3 3 : 3 : 35 : 0.09
+T: 3 3 : 4 : 164 : 0.81
+T: 3 3 : 4 : 132 : 0.09
+T: 3 3 : 4 : 4 : 0.01
+T: 3 3 : 4 : 36 : 0.09
+T: 3 3 : 5 : 165 : 0.81
+T: 3 3 : 5 : 133 : 0.09
+T: 3 3 : 5 : 5 : 0.01
+T: 3 3 : 5 : 37 : 0.09
+T: 3 3 : 16 : 176 : 0.81
+T: 3 3 : 16 : 144 : 0.09
+T: 3 3 : 16 : 16 : 0.01
+T: 3 3 : 16 : 48 : 0.09
+T: 3 3 : 17 : 177 : 0.81
+T: 3 3 : 17 : 145 : 0.09
+T: 3 3 : 17 : 17 : 0.01
+T: 3 3 : 17 : 49 : 0.09
+T: 3 3 : 18 : 178 : 0.81
+T: 3 3 : 18 : 146 : 0.09
+T: 3 3 : 18 : 18 : 0.01
+T: 3 3 : 18 : 50 : 0.09
+T: 3 3 : 19 : 179 : 0.81
+T: 3 3 : 19 : 147 : 0.09
+T: 3 3 : 19 : 19 : 0.01
+T: 3 3 : 19 : 51 : 0.09
+T: 3 3 : 20 : 180 : 0.81
+T: 3 3 : 20 : 148 : 0.09
+T: 3 3 : 20 : 20 : 0.01
+T: 3 3 : 20 : 52 : 0.09
+T: 3 3 : 21 : 181 : 0.81
+T: 3 3 : 21 : 149 : 0.09
+T: 3 3 : 21 : 21 : 0.01
+T: 3 3 : 21 : 53 : 0.09
+T: 3 3 : 22 : 182 : 0.81
+T: 3 3 : 22 : 150 : 0.09
+T: 3 3 : 22 : 22 : 0.01
+T: 3 3 : 22 : 54 : 0.09
+T: 3 3 : 23 : 183 : 0.81
+T: 3 3 : 23 : 151 : 0.09
+T: 3 3 : 23 : 23 : 0.01
+T: 3 3 : 23 : 55 : 0.09
+T: 3 3 : 24 : 184 : 0.81
+T: 3 3 : 24 : 152 : 0.09
+T: 3 3 : 24 : 24 : 0.01
+T: 3 3 : 24 : 56 : 0.09
+T: 3 3 : 25 : 185 : 0.81
+T: 3 3 : 25 : 153 : 0.09
+T: 3 3 : 25 : 25 : 0.01
+T: 3 3 : 25 : 57 : 0.09
+T: 3 3 : 26 : 186 : 0.81
+T: 3 3 : 26 : 154 : 0.09
+T: 3 3 : 26 : 26 : 0.01
+T: 3 3 : 26 : 58 : 0.09
+T: 3 3 : 27 : 187 : 0.81
+T: 3 3 : 27 : 155 : 0.09
+T: 3 3 : 27 : 27 : 0.01
+T: 3 3 : 27 : 59 : 0.09
+T: 3 3 : 28 : 188 : 0.81
+T: 3 3 : 28 : 156 : 0.09
+T: 3 3 : 28 : 28 : 0.01
+T: 3 3 : 28 : 60 : 0.09
+T: 3 3 : 29 : 189 : 0.81
+T: 3 3 : 29 : 157 : 0.09
+T: 3 3 : 29 : 29 : 0.01
+T: 3 3 : 29 : 61 : 0.09
+T: 3 3 : 30 : 190 : 0.81
+T: 3 3 : 30 : 158 : 0.09
+T: 3 3 : 30 : 30 : 0.01
+T: 3 3 : 30 : 62 : 0.09
+T: 3 3 : 31 : 191 : 0.81
+T: 3 3 : 31 : 159 : 0.09
+T: 3 3 : 31 : 31 : 0.01
+T: 3 3 : 31 : 63 : 0.09
+T: 3 3 : 32 : 160 : 0.9
+T: 3 3 : 32 : 32 : 0.1
+T: 3 3 : 33 : 161 : 0.9
+T: 3 3 : 33 : 33 : 0.1
+T: 3 3 : 34 : 162 : 0.9
+T: 3 3 : 34 : 34 : 0.1
+T: 3 3 : 35 : 163 : 0.9
+T: 3 3 : 35 : 35 : 0.1
+T: 3 3 : 78 : 238 : 0.81
+T: 3 3 : 78 : 206 : 0.09
+T: 3 3 : 78 : 78 : 0.01
+T: 3 3 : 78 : 110 : 0.09
+T: 3 3 : 79 : 239 : 0.81
+T: 3 3 : 79 : 207 : 0.09
+T: 3 3 : 79 : 79 : 0.01
+T: 3 3 : 79 : 111 : 0.09
+T: 3 3 : 80 : 240 : 0.81
+T: 3 3 : 80 : 208 : 0.09
+T: 3 3 : 80 : 80 : 0.01
+T: 3 3 : 80 : 112 : 0.09
+T: 3 3 : 81 : 241 : 0.81
+T: 3 3 : 81 : 209 : 0.09
+T: 3 3 : 81 : 81 : 0.01
+T: 3 3 : 81 : 113 : 0.09
+T: 3 3 : 82 : 242 : 0.81
+T: 3 3 : 82 : 210 : 0.09
+T: 3 3 : 82 : 82 : 0.01
+T: 3 3 : 82 : 114 : 0.09
+T: 3 3 : 83 : 243 : 0.81
+T: 3 3 : 83 : 211 : 0.09
+T: 3 3 : 83 : 83 : 0.01
+T: 3 3 : 83 : 115 : 0.09
+T: 3 3 : 84 : 244 : 0.81
+T: 3 3 : 84 : 212 : 0.09
+T: 3 3 : 84 : 84 : 0.01
+T: 3 3 : 84 : 116 : 0.09
+T: 3 3 : 85 : 245 : 0.81
+T: 3 3 : 85 : 213 : 0.09
+T: 3 3 : 85 : 85 : 0.01
+T: 3 3 : 85 : 117 : 0.09
+T: 3 3 : 86 : 246 : 0.81
+T: 3 3 : 86 : 214 : 0.09
+T: 3 3 : 86 : 86 : 0.01
+T: 3 3 : 86 : 118 : 0.09
+T: 3 3 : 87 : 247 : 0.81
+T: 3 3 : 87 : 215 : 0.09
+T: 3 3 : 87 : 87 : 0.01
+T: 3 3 : 87 : 119 : 0.09
+T: 3 3 : 88 : 248 : 0.81
+T: 3 3 : 88 : 216 : 0.09
+T: 3 3 : 88 : 88 : 0.01
+T: 3 3 : 88 : 120 : 0.09
+T: 3 3 : 89 : 249 : 0.81
+T: 3 3 : 89 : 217 : 0.09
+T: 3 3 : 89 : 89 : 0.01
+T: 3 3 : 89 : 121 : 0.09
+T: 3 3 : 90 : 250 : 0.81
+T: 3 3 : 90 : 218 : 0.09
+T: 3 3 : 90 : 90 : 0.01
+T: 3 3 : 90 : 122 : 0.09
+T: 3 3 : 91 : 251 : 0.81
+T: 3 3 : 91 : 219 : 0.09
+T: 3 3 : 91 : 91 : 0.01
+T: 3 3 : 91 : 123 : 0.09
+T: 3 3 : 92 : 252 : 0.81
+T: 3 3 : 92 : 220 : 0.09
+T: 3 3 : 92 : 92 : 0.01
+T: 3 3 : 92 : 124 : 0.09
+T: 3 3 : 93 : 253 : 0.81
+T: 3 3 : 93 : 221 : 0.09
+T: 3 3 : 93 : 93 : 0.01
+T: 3 3 : 93 : 125 : 0.09
+T: 3 3 : 94 : 254 : 0.81
+T: 3 3 : 94 : 222 : 0.09
+T: 3 3 : 94 : 94 : 0.01
+T: 3 3 : 94 : 126 : 0.09
+T: 3 3 : 95 : 255 : 0.81
+T: 3 3 : 95 : 223 : 0.09
+T: 3 3 : 95 : 95 : 0.01
+T: 3 3 : 95 : 127 : 0.09
+T: 3 3 : 96 : 224 : 0.9
+T: 3 3 : 96 : 96 : 0.1
+T: 3 3 : 97 : 225 : 0.9
+T: 3 3 : 97 : 97 : 0.1
+T: 3 3 : 98 : 226 : 0.9
+T: 3 3 : 98 : 98 : 0.1
+T: 3 3 : 99 : 227 : 0.9
+T: 3 3 : 99 : 99 : 0.1
+T: 3 3 : 100 : 228 : 0.9
+T: 3 3 : 100 : 100 : 0.1
+T: 3 3 : 101 : 229 : 0.9
+T: 3 3 : 101 : 101 : 0.1
+T: 3 3 : 102 : 230 : 0.9
+T: 3 3 : 102 : 102 : 0.1
+T: 3 3 : 103 : 231 : 0.9
+T: 3 3 : 103 : 103 : 0.1
+T: 3 3 : 104 : 232 : 0.9
+T: 3 3 : 104 : 104 : 0.1
+T: 3 3 : 105 : 233 : 0.9
+T: 3 3 : 105 : 105 : 0.1
+T: 3 3 : 106 : 234 : 0.9
+T: 3 3 : 106 : 106 : 0.1
+T: 3 3 : 107 : 235 : 0.9
+T: 3 3 : 107 : 107 : 0.1
+T: 3 3 : 108 : 236 : 0.9
+T: 3 3 : 108 : 108 : 0.1
+T: 3 3 : 109 : 237 : 0.9
+T: 3 3 : 109 : 109 : 0.1
+T: 3 3 : 110 : 238 : 0.9
+T: 3 3 : 110 : 110 : 0.1
+T: 3 3 : 111 : 239 : 0.9
+T: 3 3 : 111 : 111 : 0.1
+T: 3 3 : 112 : 240 : 0.9
+T: 3 3 : 112 : 112 : 0.1
+T: 3 3 : 113 : 241 : 0.9
+T: 3 3 : 113 : 113 : 0.1
+T: 3 3 : 114 : 242 : 0.9
+T: 3 3 : 114 : 114 : 0.1
+T: 3 3 : 115 : 243 : 0.9
+T: 3 3 : 115 : 115 : 0.1
+T: 3 3 : 116 : 244 : 0.9
+T: 3 3 : 116 : 116 : 0.1
+T: 3 3 : 117 : 245 : 0.9
+T: 3 3 : 117 : 117 : 0.1
+T: 3 3 : 118 : 246 : 0.9
+T: 3 3 : 118 : 118 : 0.1
+T: 3 3 : 119 : 247 : 0.9
+T: 3 3 : 119 : 119 : 0.1
+T: 3 3 : 120 : 248 : 0.9
+T: 3 3 : 120 : 120 : 0.1
+T: 3 3 : 121 : 249 : 0.9
+T: 3 3 : 121 : 121 : 0.1
+T: 3 3 : 122 : 250 : 0.9
+T: 3 3 : 122 : 122 : 0.1
+T: 3 3 : 123 : 251 : 0.9
+T: 3 3 : 123 : 123 : 0.1
+T: 3 3 : 124 : 252 : 0.9
+T: 3 3 : 124 : 124 : 0.1
+T: 3 3 : 125 : 253 : 0.9
+T: 3 3 : 125 : 125 : 0.1
+T: 3 3 : 126 : 254 : 0.9
+T: 3 3 : 126 : 126 : 0.1
+T: 3 3 : 127 : 255 : 0.9
+T: 3 3 : 127 : 127 : 0.1
+T: 3 3 : 128 : 160 : 0.9
+T: 3 3 : 128 : 128 : 0.1
+T: 3 3 : 129 : 161 : 0.9
+T: 3 3 : 129 : 129 : 0.1
+T: 3 3 : 130 : 162 : 0.9
+T: 3 3 : 130 : 130 : 0.1
+T: 3 3 : 131 : 163 : 0.9
+T: 3 3 : 131 : 131 : 0.1
+T: 3 3 : 132 : 164 : 0.9
+T: 3 3 : 132 : 132 : 0.1
+T: 3 3 : 133 : 165 : 0.9
+T: 3 3 : 133 : 133 : 0.1
+T: 3 3 : 134 : 166 : 0.9
+T: 3 3 : 134 : 134 : 0.1
+T: 3 3 : 135 : 167 : 0.9
+T: 3 3 : 135 : 135 : 0.1
+T: 3 3 : 136 : 168 : 0.9
+T: 3 3 : 136 : 136 : 0.1
+T: 3 3 : 137 : 169 : 0.9
+T: 3 3 : 137 : 137 : 0.1
+T: 3 3 : 138 : 170 : 0.9
+T: 3 3 : 138 : 138 : 0.1
+T: 3 3 : 139 : 171 : 0.9
+T: 3 3 : 139 : 139 : 0.1
+T: 3 3 : 140 : 172 : 0.9
+T: 3 3 : 140 : 140 : 0.1
+T: 3 3 : 141 : 173 : 0.9
+T: 3 3 : 141 : 141 : 0.1
+T: 3 3 : 142 : 174 : 0.9
+T: 3 3 : 142 : 142 : 0.1
+T: 3 3 : 143 : 175 : 0.9
+T: 3 3 : 143 : 143 : 0.1
+T: 3 3 : 144 : 176 : 0.9
+T: 3 3 : 144 : 144 : 0.1
+T: 3 3 : 145 : 177 : 0.9
+T: 3 3 : 145 : 145 : 0.1
+T: 3 3 : 146 : 178 : 0.9
+T: 3 3 : 146 : 146 : 0.1
+T: 3 3 : 147 : 179 : 0.9
+T: 3 3 : 147 : 147 : 0.1
+T: 3 3 : 148 : 180 : 0.9
+T: 3 3 : 148 : 148 : 0.1
+T: 3 3 : 149 : 181 : 0.9
+T: 3 3 : 149 : 149 : 0.1
+T: 3 3 : 150 : 182 : 0.9
+T: 3 3 : 150 : 150 : 0.1
+T: 3 3 : 151 : 183 : 0.9
+T: 3 3 : 151 : 151 : 0.1
+T: 3 3 : 152 : 184 : 0.9
+T: 3 3 : 152 : 152 : 0.1
+T: 3 3 : 153 : 185 : 0.9
+T: 3 3 : 153 : 153 : 0.1
+T: 3 3 : 154 : 186 : 0.9
+T: 3 3 : 154 : 154 : 0.1
+T: 3 3 : 155 : 187 : 0.9
+T: 3 3 : 155 : 155 : 0.1
+T: 3 3 : 156 : 188 : 0.9
+T: 3 3 : 156 : 156 : 0.1
+T: 3 3 : 157 : 189 : 0.9
+T: 3 3 : 157 : 157 : 0.1
+T: 3 3 : 158 : 190 : 0.9
+T: 3 3 : 158 : 158 : 0.1
+T: 3 3 : 159 : 191 : 0.9
+T: 3 3 : 159 : 159 : 0.1
+T: 3 3 : 160 : 160 : 1
+T: 3 3 : 161 : 161 : 1
+T: 3 3 : 162 : 162 : 1
+T: 3 3 : 163 : 163 : 1
+T: 3 3 : 164 : 164 : 1
+T: 3 3 : 165 : 165 : 1
+T: 3 2 : 255 : 255 : 0.1
+T: 3 2 : 255 : 223 : 0.9
+T: 3 2 : 254 : 254 : 0.1
+T: 3 2 : 254 : 222 : 0.9
+T: 3 2 : 253 : 253 : 0.1
+T: 3 2 : 253 : 221 : 0.9
+T: 3 2 : 252 : 252 : 0.1
+T: 3 2 : 252 : 220 : 0.9
+T: 3 2 : 251 : 251 : 0.1
+T: 3 2 : 251 : 219 : 0.9
+T: 3 2 : 250 : 250 : 0.1
+T: 3 2 : 250 : 218 : 0.9
+T: 3 2 : 249 : 249 : 0.1
+T: 3 2 : 249 : 217 : 0.9
+T: 3 2 : 248 : 248 : 0.1
+T: 3 2 : 248 : 216 : 0.9
+T: 3 2 : 247 : 247 : 0.1
+T: 3 2 : 247 : 215 : 0.9
+T: 3 2 : 246 : 246 : 0.1
+T: 3 2 : 246 : 214 : 0.9
+T: 3 2 : 245 : 245 : 0.1
+T: 3 2 : 245 : 213 : 0.9
+T: 3 2 : 244 : 244 : 0.1
+T: 3 2 : 244 : 212 : 0.9
+T: 3 2 : 243 : 243 : 0.1
+T: 3 2 : 243 : 211 : 0.9
+T: 3 2 : 242 : 242 : 0.1
+T: 3 2 : 242 : 210 : 0.9
+T: 3 2 : 241 : 241 : 0.1
+T: 3 2 : 241 : 209 : 0.9
+T: 3 2 : 240 : 240 : 0.1
+T: 3 2 : 240 : 208 : 0.9
+T: 3 2 : 239 : 239 : 0.1
+T: 3 2 : 239 : 207 : 0.9
+T: 3 2 : 238 : 238 : 0.1
+T: 3 2 : 238 : 206 : 0.9
+T: 3 2 : 237 : 237 : 0.1
+T: 3 2 : 237 : 205 : 0.9
+T: 3 2 : 236 : 236 : 0.1
+T: 3 2 : 236 : 204 : 0.9
+T: 3 2 : 235 : 235 : 0.1
+T: 3 2 : 235 : 203 : 0.9
+T: 3 2 : 234 : 234 : 0.1
+T: 3 2 : 234 : 202 : 0.9
+T: 3 2 : 233 : 233 : 0.1
+T: 3 2 : 233 : 201 : 0.9
+T: 3 2 : 232 : 232 : 0.1
+T: 3 2 : 232 : 200 : 0.9
+T: 3 2 : 231 : 231 : 0.1
+T: 3 2 : 231 : 199 : 0.9
+T: 3 2 : 230 : 230 : 0.1
+T: 3 2 : 230 : 198 : 0.9
+T: 3 2 : 229 : 229 : 0.1
+T: 3 2 : 229 : 197 : 0.9
+T: 3 2 : 228 : 228 : 0.1
+T: 3 2 : 228 : 196 : 0.9
+T: 3 2 : 227 : 227 : 0.1
+T: 3 2 : 227 : 195 : 0.9
+T: 3 2 : 226 : 226 : 0.1
+T: 3 2 : 226 : 194 : 0.9
+T: 3 2 : 225 : 225 : 0.1
+T: 3 2 : 225 : 193 : 0.9
+T: 3 2 : 224 : 224 : 0.1
+T: 3 2 : 224 : 192 : 0.9
+T: 3 2 : 223 : 223 : 1
+T: 3 2 : 222 : 222 : 1
+T: 3 2 : 221 : 221 : 1
+T: 3 2 : 220 : 220 : 1
+T: 3 2 : 219 : 219 : 1
+T: 3 2 : 218 : 218 : 1
+T: 3 2 : 217 : 217 : 1
+T: 3 2 : 216 : 216 : 1
+T: 3 2 : 215 : 215 : 1
+T: 3 2 : 214 : 214 : 1
+T: 3 2 : 213 : 213 : 1
+T: 3 2 : 212 : 212 : 1
+T: 3 2 : 211 : 211 : 1
+T: 3 2 : 210 : 210 : 1
+T: 3 2 : 209 : 209 : 1
+T: 3 2 : 208 : 208 : 1
+T: 3 2 : 207 : 207 : 1
+T: 3 2 : 206 : 206 : 1
+T: 3 2 : 205 : 205 : 1
+T: 3 2 : 204 : 204 : 1
+T: 3 2 : 203 : 203 : 1
+T: 3 2 : 202 : 202 : 1
+T: 3 2 : 201 : 201 : 1
+T: 3 2 : 200 : 200 : 1
+T: 3 2 : 199 : 199 : 1
+T: 3 2 : 198 : 198 : 1
+T: 3 2 : 197 : 197 : 1
+T: 3 2 : 196 : 196 : 1
+T: 3 2 : 195 : 195 : 1
+T: 3 2 : 194 : 194 : 1
+T: 3 2 : 193 : 193 : 1
+T: 3 2 : 192 : 192 : 1
+T: 3 2 : 191 : 191 : 0.1
+T: 3 2 : 191 : 159 : 0.9
+T: 3 2 : 190 : 190 : 0.1
+T: 3 2 : 190 : 158 : 0.9
+T: 3 2 : 189 : 189 : 0.1
+T: 3 2 : 189 : 157 : 0.9
+T: 3 2 : 188 : 188 : 0.1
+T: 3 2 : 188 : 156 : 0.9
+T: 3 2 : 187 : 187 : 0.1
+T: 3 2 : 187 : 155 : 0.9
+T: 3 2 : 186 : 186 : 0.1
+T: 3 2 : 186 : 154 : 0.9
+T: 3 2 : 185 : 185 : 0.1
+T: 3 2 : 185 : 153 : 0.9
+T: 3 2 : 184 : 184 : 0.1
+T: 3 2 : 184 : 152 : 0.9
+T: 3 2 : 183 : 183 : 0.1
+T: 3 2 : 183 : 151 : 0.9
+T: 3 2 : 182 : 182 : 0.1
+T: 3 2 : 182 : 150 : 0.9
+T: 3 2 : 181 : 181 : 0.1
+T: 3 2 : 181 : 149 : 0.9
+T: 3 2 : 180 : 180 : 0.1
+T: 3 2 : 180 : 148 : 0.9
+T: 3 2 : 179 : 179 : 0.1
+T: 3 2 : 179 : 147 : 0.9
+T: 3 2 : 178 : 178 : 0.1
+T: 3 2 : 178 : 146 : 0.9
+T: 3 2 : 177 : 177 : 0.1
+T: 3 2 : 177 : 145 : 0.9
+T: 3 2 : 176 : 176 : 0.1
+T: 3 2 : 176 : 144 : 0.9
+T: 3 2 : 175 : 175 : 0.1
+T: 3 2 : 175 : 143 : 0.9
+T: 3 2 : 174 : 174 : 0.1
+T: 3 2 : 174 : 142 : 0.9
+T: 3 2 : 173 : 173 : 0.1
+T: 3 2 : 173 : 141 : 0.9
+T: 3 2 : 172 : 172 : 0.1
+T: 3 2 : 172 : 140 : 0.9
+T: 3 2 : 171 : 171 : 0.1
+T: 3 2 : 171 : 139 : 0.9
+T: 3 2 : 170 : 170 : 0.1
+T: 3 2 : 170 : 138 : 0.9
+T: 3 2 : 169 : 169 : 0.1
+T: 3 2 : 169 : 137 : 0.9
+T: 3 2 : 168 : 168 : 0.1
+T: 3 2 : 168 : 136 : 0.9
+T: 3 2 : 167 : 167 : 0.1
+T: 3 2 : 167 : 135 : 0.9
+T: 3 2 : 166 : 166 : 0.1
+T: 3 2 : 166 : 134 : 0.9
+T: 3 2 : 77 : 205 : 0.9
+T: 3 2 : 77 : 77 : 0.1
+T: 3 2 : 76 : 204 : 0.9
+T: 3 2 : 76 : 76 : 0.1
+T: 3 2 : 75 : 203 : 0.9
+T: 3 2 : 75 : 75 : 0.1
+T: 3 2 : 74 : 202 : 0.9
+T: 3 2 : 74 : 74 : 0.1
+T: 3 2 : 73 : 201 : 0.9
+T: 3 2 : 73 : 73 : 0.1
+T: 3 2 : 72 : 200 : 0.9
+T: 3 2 : 72 : 72 : 0.1
+T: 3 2 : 71 : 199 : 0.9
+T: 3 2 : 71 : 71 : 0.1
+T: 3 2 : 70 : 198 : 0.9
+T: 3 2 : 70 : 70 : 0.1
+T: 3 2 : 69 : 197 : 0.9
+T: 3 2 : 69 : 69 : 0.1
+T: 3 2 : 68 : 196 : 0.9
+T: 3 2 : 68 : 68 : 0.1
+T: 3 2 : 67 : 195 : 0.9
+T: 3 2 : 67 : 67 : 0.1
+T: 3 2 : 66 : 194 : 0.9
+T: 3 2 : 66 : 66 : 0.1
+T: 3 2 : 65 : 193 : 0.9
+T: 3 2 : 65 : 65 : 0.1
+T: 3 2 : 64 : 192 : 0.9
+T: 3 2 : 64 : 64 : 0.1
+T: 3 2 : 63 : 191 : 0.09
+T: 3 2 : 63 : 159 : 0.81
+T: 3 2 : 63 : 31 : 0.09
+T: 3 2 : 63 : 63 : 0.01
+T: 3 2 : 62 : 190 : 0.09
+T: 3 2 : 62 : 158 : 0.81
+T: 3 2 : 62 : 30 : 0.09
+T: 3 2 : 62 : 62 : 0.01
+T: 3 2 : 61 : 189 : 0.09
+T: 3 2 : 61 : 157 : 0.81
+T: 3 2 : 61 : 29 : 0.09
+T: 3 2 : 61 : 61 : 0.01
+T: 3 2 : 60 : 188 : 0.09
+T: 3 2 : 60 : 156 : 0.81
+T: 3 2 : 60 : 28 : 0.09
+T: 3 2 : 60 : 60 : 0.01
+T: 3 2 : 59 : 187 : 0.09
+T: 3 2 : 59 : 155 : 0.81
+T: 3 2 : 59 : 27 : 0.09
+T: 3 2 : 59 : 59 : 0.01
+T: 3 2 : 58 : 186 : 0.09
+T: 3 2 : 58 : 154 : 0.81
+T: 3 2 : 58 : 26 : 0.09
+T: 3 2 : 58 : 58 : 0.01
+T: 3 2 : 57 : 185 : 0.09
+T: 3 2 : 57 : 153 : 0.81
+T: 3 2 : 57 : 25 : 0.09
+T: 3 2 : 57 : 57 : 0.01
+T: 3 2 : 56 : 184 : 0.09
+T: 3 2 : 56 : 152 : 0.81
+T: 3 2 : 56 : 24 : 0.09
+T: 3 2 : 56 : 56 : 0.01
+T: 3 2 : 55 : 183 : 0.09
+T: 3 2 : 55 : 151 : 0.81
+T: 3 2 : 55 : 23 : 0.09
+T: 3 2 : 55 : 55 : 0.01
+T: 3 2 : 54 : 182 : 0.09
+T: 3 2 : 54 : 150 : 0.81
+T: 3 2 : 54 : 22 : 0.09
+T: 3 2 : 54 : 54 : 0.01
+T: 3 2 : 53 : 181 : 0.09
+T: 3 2 : 53 : 149 : 0.81
+T: 3 2 : 53 : 21 : 0.09
+T: 3 2 : 53 : 53 : 0.01
+T: 3 2 : 52 : 180 : 0.09
+T: 3 2 : 52 : 148 : 0.81
+T: 3 2 : 52 : 20 : 0.09
+T: 3 2 : 52 : 52 : 0.01
+T: 3 2 : 51 : 179 : 0.09
+T: 3 2 : 51 : 147 : 0.81
+T: 3 2 : 51 : 19 : 0.09
+T: 3 2 : 51 : 51 : 0.01
+T: 3 2 : 50 : 178 : 0.09
+T: 3 2 : 50 : 146 : 0.81
+T: 3 2 : 50 : 18 : 0.09
+T: 3 2 : 50 : 50 : 0.01
+T: 3 2 : 49 : 177 : 0.09
+T: 3 2 : 49 : 145 : 0.81
+T: 3 2 : 49 : 17 : 0.09
+T: 3 2 : 49 : 49 : 0.01
+T: 3 2 : 48 : 176 : 0.09
+T: 3 2 : 48 : 144 : 0.81
+T: 3 2 : 48 : 16 : 0.09
+T: 3 2 : 48 : 48 : 0.01
+T: 3 2 : 47 : 175 : 0.09
+T: 3 2 : 47 : 143 : 0.81
+T: 3 2 : 47 : 15 : 0.09
+T: 3 2 : 47 : 47 : 0.01
+T: 3 2 : 46 : 174 : 0.09
+T: 3 2 : 46 : 142 : 0.81
+T: 3 2 : 46 : 14 : 0.09
+T: 3 2 : 46 : 46 : 0.01
+T: 3 2 : 45 : 173 : 0.09
+T: 3 2 : 45 : 141 : 0.81
+T: 3 2 : 45 : 13 : 0.09
+T: 3 2 : 45 : 45 : 0.01
+T: 3 2 : 44 : 172 : 0.09
+T: 3 2 : 44 : 140 : 0.81
+T: 3 2 : 44 : 12 : 0.09
+T: 3 2 : 44 : 44 : 0.01
+T: 3 2 : 43 : 171 : 0.09
+T: 3 2 : 43 : 139 : 0.81
+T: 3 2 : 43 : 11 : 0.09
+T: 3 2 : 43 : 43 : 0.01
+T: 3 2 : 42 : 170 : 0.09
+T: 3 2 : 42 : 138 : 0.81
+T: 3 2 : 42 : 10 : 0.09
+T: 3 2 : 42 : 42 : 0.01
+T: 3 2 : 41 : 169 : 0.09
+T: 3 2 : 41 : 137 : 0.81
+T: 3 2 : 41 : 9 : 0.09
+T: 3 2 : 41 : 41 : 0.01
+T: 3 2 : 40 : 168 : 0.09
+T: 3 2 : 40 : 136 : 0.81
+T: 3 2 : 40 : 8 : 0.09
+T: 3 2 : 40 : 40 : 0.01
+T: 3 2 : 39 : 167 : 0.09
+T: 3 2 : 39 : 135 : 0.81
+T: 3 2 : 39 : 7 : 0.09
+T: 3 2 : 39 : 39 : 0.01
+T: 3 2 : 38 : 166 : 0.09
+T: 3 2 : 38 : 134 : 0.81
+T: 3 2 : 38 : 6 : 0.09
+T: 3 2 : 38 : 38 : 0.01
+T: 3 2 : 37 : 165 : 0.09
+T: 3 2 : 37 : 133 : 0.81
+T: 3 2 : 37 : 5 : 0.09
+T: 3 2 : 37 : 37 : 0.01
+T: 3 2 : 36 : 164 : 0.09
+T: 3 2 : 36 : 132 : 0.81
+T: 3 2 : 36 : 4 : 0.09
+T: 3 2 : 36 : 36 : 0.01
+T: 3 2 : 15 : 143 : 0.9
+T: 3 2 : 15 : 15 : 0.1
+T: 3 2 : 14 : 142 : 0.9
+T: 3 2 : 14 : 14 : 0.1
+T: 3 2 : 13 : 141 : 0.9
+T: 3 2 : 13 : 13 : 0.1
+T: 3 2 : 12 : 140 : 0.9
+T: 3 2 : 12 : 12 : 0.1
+T: 3 2 : 11 : 139 : 0.9
+T: 3 2 : 11 : 11 : 0.1
+T: 3 2 : 10 : 138 : 0.9
+T: 3 2 : 10 : 10 : 0.1
+T: 3 2 : 9 : 137 : 0.9
+T: 3 2 : 9 : 9 : 0.1
+T: 3 2 : 8 : 136 : 0.9
+T: 3 2 : 8 : 8 : 0.1
+T: 3 2 : 7 : 135 : 0.9
+T: 3 2 : 7 : 7 : 0.1
+T: 3 2 : 6 : 134 : 0.9
+T: 3 2 : 6 : 6 : 0.1
+T: 3 2 : 1 : 129 : 0.9
+T: 3 2 : 1 : 1 : 0.1
+T: 3 2 : 0 : 128 : 0.9
+T: 3 2 : 0 : 0 : 0.1
+T: 3 2 : 2 : 130 : 0.9
+T: 3 2 : 2 : 2 : 0.1
+T: 3 2 : 3 : 131 : 0.9
+T: 3 2 : 3 : 3 : 0.1
+T: 3 2 : 4 : 132 : 0.9
+T: 3 2 : 4 : 4 : 0.1
+T: 3 2 : 5 : 133 : 0.9
+T: 3 2 : 5 : 5 : 0.1
+T: 3 2 : 16 : 144 : 0.9
+T: 3 2 : 16 : 16 : 0.1
+T: 3 2 : 17 : 145 : 0.9
+T: 3 2 : 17 : 17 : 0.1
+T: 3 2 : 18 : 146 : 0.9
+T: 3 2 : 18 : 18 : 0.1
+T: 3 2 : 19 : 147 : 0.9
+T: 3 2 : 19 : 19 : 0.1
+T: 3 2 : 20 : 148 : 0.9
+T: 3 2 : 20 : 20 : 0.1
+T: 3 2 : 21 : 149 : 0.9
+T: 3 2 : 21 : 21 : 0.1
+T: 3 2 : 22 : 150 : 0.9
+T: 3 2 : 22 : 22 : 0.1
+T: 3 2 : 23 : 151 : 0.9
+T: 3 2 : 23 : 23 : 0.1
+T: 3 2 : 24 : 152 : 0.9
+T: 3 2 : 24 : 24 : 0.1
+T: 3 2 : 25 : 153 : 0.9
+T: 3 2 : 25 : 25 : 0.1
+T: 3 2 : 26 : 154 : 0.9
+T: 3 2 : 26 : 26 : 0.1
+T: 3 2 : 27 : 155 : 0.9
+T: 3 2 : 27 : 27 : 0.1
+T: 3 2 : 28 : 156 : 0.9
+T: 3 2 : 28 : 28 : 0.1
+T: 3 2 : 29 : 157 : 0.9
+T: 3 2 : 29 : 29 : 0.1
+T: 3 2 : 30 : 158 : 0.9
+T: 3 2 : 30 : 30 : 0.1
+T: 3 2 : 31 : 159 : 0.9
+T: 3 2 : 31 : 31 : 0.1
+T: 3 2 : 32 : 160 : 0.09
+T: 3 2 : 32 : 128 : 0.81
+T: 3 2 : 32 : 0 : 0.09
+T: 3 2 : 32 : 32 : 0.01
+T: 3 2 : 33 : 161 : 0.09
+T: 3 2 : 33 : 129 : 0.81
+T: 3 2 : 33 : 1 : 0.09
+T: 3 2 : 33 : 33 : 0.01
+T: 3 2 : 34 : 162 : 0.09
+T: 3 2 : 34 : 130 : 0.81
+T: 3 2 : 34 : 2 : 0.09
+T: 3 2 : 34 : 34 : 0.01
+T: 3 2 : 35 : 163 : 0.09
+T: 3 2 : 35 : 131 : 0.81
+T: 3 2 : 35 : 3 : 0.09
+T: 3 2 : 35 : 35 : 0.01
+T: 3 2 : 78 : 206 : 0.9
+T: 3 2 : 78 : 78 : 0.1
+T: 3 2 : 79 : 207 : 0.9
+T: 3 2 : 79 : 79 : 0.1
+T: 3 2 : 80 : 208 : 0.9
+T: 3 2 : 80 : 80 : 0.1
+T: 3 2 : 81 : 209 : 0.9
+T: 3 2 : 81 : 81 : 0.1
+T: 3 2 : 82 : 210 : 0.9
+T: 3 2 : 82 : 82 : 0.1
+T: 3 2 : 83 : 211 : 0.9
+T: 3 2 : 83 : 83 : 0.1
+T: 3 2 : 84 : 212 : 0.9
+T: 3 2 : 84 : 84 : 0.1
+T: 3 2 : 85 : 213 : 0.9
+T: 3 2 : 85 : 85 : 0.1
+T: 3 2 : 86 : 214 : 0.9
+T: 3 2 : 86 : 86 : 0.1
+T: 3 2 : 87 : 215 : 0.9
+T: 3 2 : 87 : 87 : 0.1
+T: 3 2 : 88 : 216 : 0.9
+T: 3 2 : 88 : 88 : 0.1
+T: 3 2 : 89 : 217 : 0.9
+T: 3 2 : 89 : 89 : 0.1
+T: 3 2 : 90 : 218 : 0.9
+T: 3 2 : 90 : 90 : 0.1
+T: 3 2 : 91 : 219 : 0.9
+T: 3 2 : 91 : 91 : 0.1
+T: 3 2 : 92 : 220 : 0.9
+T: 3 2 : 92 : 92 : 0.1
+T: 3 2 : 93 : 221 : 0.9
+T: 3 2 : 93 : 93 : 0.1
+T: 3 2 : 94 : 222 : 0.9
+T: 3 2 : 94 : 94 : 0.1
+T: 3 2 : 95 : 223 : 0.9
+T: 3 2 : 95 : 95 : 0.1
+T: 3 2 : 96 : 224 : 0.09
+T: 3 2 : 96 : 192 : 0.81
+T: 3 2 : 96 : 64 : 0.09
+T: 3 2 : 96 : 96 : 0.01
+T: 3 2 : 97 : 225 : 0.09
+T: 3 2 : 97 : 193 : 0.81
+T: 3 2 : 97 : 65 : 0.09
+T: 3 2 : 97 : 97 : 0.01
+T: 3 2 : 98 : 226 : 0.09
+T: 3 2 : 98 : 194 : 0.81
+T: 3 2 : 98 : 66 : 0.09
+T: 3 2 : 98 : 98 : 0.01
+T: 3 2 : 99 : 227 : 0.09
+T: 3 2 : 99 : 195 : 0.81
+T: 3 2 : 99 : 67 : 0.09
+T: 3 2 : 99 : 99 : 0.01
+T: 3 2 : 100 : 228 : 0.09
+T: 3 2 : 100 : 196 : 0.81
+T: 3 2 : 100 : 68 : 0.09
+T: 3 2 : 100 : 100 : 0.01
+T: 3 2 : 101 : 229 : 0.09
+T: 3 2 : 101 : 197 : 0.81
+T: 3 2 : 101 : 69 : 0.09
+T: 3 2 : 101 : 101 : 0.01
+T: 3 2 : 102 : 230 : 0.09
+T: 3 2 : 102 : 198 : 0.81
+T: 3 2 : 102 : 70 : 0.09
+T: 3 2 : 102 : 102 : 0.01
+T: 3 2 : 103 : 231 : 0.09
+T: 3 2 : 103 : 199 : 0.81
+T: 3 2 : 103 : 71 : 0.09
+T: 3 2 : 103 : 103 : 0.01
+T: 3 2 : 104 : 232 : 0.09
+T: 3 2 : 104 : 200 : 0.81
+T: 3 2 : 104 : 72 : 0.09
+T: 3 2 : 104 : 104 : 0.01
+T: 3 2 : 105 : 233 : 0.09
+T: 3 2 : 105 : 201 : 0.81
+T: 3 2 : 105 : 73 : 0.09
+T: 3 2 : 105 : 105 : 0.01
+T: 3 2 : 106 : 234 : 0.09
+T: 3 2 : 106 : 202 : 0.81
+T: 3 2 : 106 : 74 : 0.09
+T: 3 2 : 106 : 106 : 0.01
+T: 3 2 : 107 : 235 : 0.09
+T: 3 2 : 107 : 203 : 0.81
+T: 3 2 : 107 : 75 : 0.09
+T: 3 2 : 107 : 107 : 0.01
+T: 3 2 : 108 : 236 : 0.09
+T: 3 2 : 108 : 204 : 0.81
+T: 3 2 : 108 : 76 : 0.09
+T: 3 2 : 108 : 108 : 0.01
+T: 3 2 : 109 : 237 : 0.09
+T: 3 2 : 109 : 205 : 0.81
+T: 3 2 : 109 : 77 : 0.09
+T: 3 2 : 109 : 109 : 0.01
+T: 3 2 : 110 : 238 : 0.09
+T: 3 2 : 110 : 206 : 0.81
+T: 3 2 : 110 : 78 : 0.09
+T: 3 2 : 110 : 110 : 0.01
+T: 3 2 : 111 : 239 : 0.09
+T: 3 2 : 111 : 207 : 0.81
+T: 3 2 : 111 : 79 : 0.09
+T: 3 2 : 111 : 111 : 0.01
+T: 3 2 : 112 : 240 : 0.09
+T: 3 2 : 112 : 208 : 0.81
+T: 3 2 : 112 : 80 : 0.09
+T: 3 2 : 112 : 112 : 0.01
+T: 3 2 : 113 : 241 : 0.09
+T: 3 2 : 113 : 209 : 0.81
+T: 3 2 : 113 : 81 : 0.09
+T: 3 2 : 113 : 113 : 0.01
+T: 3 2 : 114 : 242 : 0.09
+T: 3 2 : 114 : 210 : 0.81
+T: 3 2 : 114 : 82 : 0.09
+T: 3 2 : 114 : 114 : 0.01
+T: 3 2 : 115 : 243 : 0.09
+T: 3 2 : 115 : 211 : 0.81
+T: 3 2 : 115 : 83 : 0.09
+T: 3 2 : 115 : 115 : 0.01
+T: 3 2 : 116 : 244 : 0.09
+T: 3 2 : 116 : 212 : 0.81
+T: 3 2 : 116 : 84 : 0.09
+T: 3 2 : 116 : 116 : 0.01
+T: 3 2 : 117 : 245 : 0.09
+T: 3 2 : 117 : 213 : 0.81
+T: 3 2 : 117 : 85 : 0.09
+T: 3 2 : 117 : 117 : 0.01
+T: 3 2 : 118 : 246 : 0.09
+T: 3 2 : 118 : 214 : 0.81
+T: 3 2 : 118 : 86 : 0.09
+T: 3 2 : 118 : 118 : 0.01
+T: 3 2 : 119 : 247 : 0.09
+T: 3 2 : 119 : 215 : 0.81
+T: 3 2 : 119 : 87 : 0.09
+T: 3 2 : 119 : 119 : 0.01
+T: 3 2 : 120 : 248 : 0.09
+T: 3 2 : 120 : 216 : 0.81
+T: 3 2 : 120 : 88 : 0.09
+T: 3 2 : 120 : 120 : 0.01
+T: 3 2 : 121 : 249 : 0.09
+T: 3 2 : 121 : 217 : 0.81
+T: 3 2 : 121 : 89 : 0.09
+T: 3 2 : 121 : 121 : 0.01
+T: 3 2 : 122 : 250 : 0.09
+T: 3 2 : 122 : 218 : 0.81
+T: 3 2 : 122 : 90 : 0.09
+T: 3 2 : 122 : 122 : 0.01
+T: 3 2 : 123 : 251 : 0.09
+T: 3 2 : 123 : 219 : 0.81
+T: 3 2 : 123 : 91 : 0.09
+T: 3 2 : 123 : 123 : 0.01
+T: 3 2 : 124 : 252 : 0.09
+T: 3 2 : 124 : 220 : 0.81
+T: 3 2 : 124 : 92 : 0.09
+T: 3 2 : 124 : 124 : 0.01
+T: 3 2 : 125 : 253 : 0.09
+T: 3 2 : 125 : 221 : 0.81
+T: 3 2 : 125 : 93 : 0.09
+T: 3 2 : 125 : 125 : 0.01
+T: 3 2 : 126 : 254 : 0.09
+T: 3 2 : 126 : 222 : 0.81
+T: 3 2 : 126 : 94 : 0.09
+T: 3 2 : 126 : 126 : 0.01
+T: 3 2 : 127 : 255 : 0.09
+T: 3 2 : 127 : 223 : 0.81
+T: 3 2 : 127 : 95 : 0.09
+T: 3 2 : 127 : 127 : 0.01
+T: 3 2 : 128 : 128 : 1
+T: 3 2 : 129 : 129 : 1
+T: 3 2 : 130 : 130 : 1
+T: 3 2 : 131 : 131 : 1
+T: 3 2 : 132 : 132 : 1
+T: 3 2 : 133 : 133 : 1
+T: 3 2 : 134 : 134 : 1
+T: 3 2 : 135 : 135 : 1
+T: 3 2 : 136 : 136 : 1
+T: 3 2 : 137 : 137 : 1
+T: 3 2 : 138 : 138 : 1
+T: 3 2 : 139 : 139 : 1
+T: 3 2 : 140 : 140 : 1
+T: 3 2 : 141 : 141 : 1
+T: 3 2 : 142 : 142 : 1
+T: 3 2 : 143 : 143 : 1
+T: 3 2 : 144 : 144 : 1
+T: 3 2 : 145 : 145 : 1
+T: 3 2 : 146 : 146 : 1
+T: 3 2 : 147 : 147 : 1
+T: 3 2 : 148 : 148 : 1
+T: 3 2 : 149 : 149 : 1
+T: 3 2 : 150 : 150 : 1
+T: 3 2 : 151 : 151 : 1
+T: 3 2 : 152 : 152 : 1
+T: 3 2 : 153 : 153 : 1
+T: 3 2 : 154 : 154 : 1
+T: 3 2 : 155 : 155 : 1
+T: 3 2 : 156 : 156 : 1
+T: 3 2 : 157 : 157 : 1
+T: 3 2 : 158 : 158 : 1
+T: 3 2 : 159 : 159 : 1
+T: 3 2 : 160 : 160 : 0.1
+T: 3 2 : 160 : 128 : 0.9
+T: 3 2 : 161 : 161 : 0.1
+T: 3 2 : 161 : 129 : 0.9
+T: 3 2 : 162 : 162 : 0.1
+T: 3 2 : 162 : 130 : 0.9
+T: 3 2 : 163 : 163 : 0.1
+T: 3 2 : 163 : 131 : 0.9
+T: 3 2 : 164 : 164 : 0.1
+T: 3 2 : 164 : 132 : 0.9
+T: 3 2 : 165 : 165 : 0.1
+T: 3 2 : 165 : 133 : 0.9
+T: 3 1 : 255 : 255 : 1
+T: 3 1 : 254 : 254 : 1
+T: 3 1 : 253 : 253 : 1
+T: 3 1 : 252 : 252 : 1
+T: 3 1 : 251 : 251 : 1
+T: 3 1 : 250 : 250 : 1
+T: 3 1 : 249 : 249 : 1
+T: 3 1 : 248 : 248 : 1
+T: 3 1 : 247 : 247 : 1
+T: 3 1 : 246 : 246 : 1
+T: 3 1 : 245 : 245 : 1
+T: 3 1 : 244 : 244 : 1
+T: 3 1 : 243 : 243 : 1
+T: 3 1 : 242 : 242 : 1
+T: 3 1 : 241 : 241 : 1
+T: 3 1 : 240 : 240 : 1
+T: 3 1 : 239 : 255 : 0.9
+T: 3 1 : 239 : 239 : 0.1
+T: 3 1 : 238 : 254 : 0.9
+T: 3 1 : 238 : 238 : 0.1
+T: 3 1 : 237 : 253 : 0.9
+T: 3 1 : 237 : 237 : 0.1
+T: 3 1 : 236 : 252 : 0.9
+T: 3 1 : 236 : 236 : 0.1
+T: 3 1 : 235 : 251 : 0.9
+T: 3 1 : 235 : 235 : 0.1
+T: 3 1 : 234 : 250 : 0.9
+T: 3 1 : 234 : 234 : 0.1
+T: 3 1 : 233 : 249 : 0.9
+T: 3 1 : 233 : 233 : 0.1
+T: 3 1 : 232 : 248 : 0.9
+T: 3 1 : 232 : 232 : 0.1
+T: 3 1 : 231 : 247 : 0.9
+T: 3 1 : 231 : 231 : 0.1
+T: 3 1 : 230 : 246 : 0.9
+T: 3 1 : 230 : 230 : 0.1
+T: 3 1 : 229 : 245 : 0.9
+T: 3 1 : 229 : 229 : 0.1
+T: 3 1 : 228 : 244 : 0.9
+T: 3 1 : 228 : 228 : 0.1
+T: 3 1 : 227 : 243 : 0.9
+T: 3 1 : 227 : 227 : 0.1
+T: 3 1 : 226 : 242 : 0.9
+T: 3 1 : 226 : 226 : 0.1
+T: 3 1 : 225 : 241 : 0.9
+T: 3 1 : 225 : 225 : 0.1
+T: 3 1 : 224 : 240 : 0.9
+T: 3 1 : 224 : 224 : 0.1
+T: 3 1 : 223 : 223 : 1
+T: 3 1 : 222 : 222 : 1
+T: 3 1 : 221 : 221 : 1
+T: 3 1 : 220 : 220 : 1
+T: 3 1 : 219 : 219 : 1
+T: 3 1 : 218 : 218 : 1
+T: 3 1 : 217 : 217 : 1
+T: 3 1 : 216 : 216 : 1
+T: 3 1 : 215 : 215 : 1
+T: 3 1 : 214 : 214 : 1
+T: 3 1 : 213 : 213 : 1
+T: 3 1 : 212 : 212 : 1
+T: 3 1 : 211 : 211 : 1
+T: 3 1 : 210 : 210 : 1
+T: 3 1 : 209 : 209 : 1
+T: 3 1 : 208 : 208 : 1
+T: 3 1 : 207 : 223 : 0.9
+T: 3 1 : 207 : 207 : 0.1
+T: 3 1 : 206 : 222 : 0.9
+T: 3 1 : 206 : 206 : 0.1
+T: 3 1 : 205 : 221 : 0.9
+T: 3 1 : 205 : 205 : 0.1
+T: 3 1 : 204 : 220 : 0.9
+T: 3 1 : 204 : 204 : 0.1
+T: 3 1 : 203 : 219 : 0.9
+T: 3 1 : 203 : 203 : 0.1
+T: 3 1 : 202 : 218 : 0.9
+T: 3 1 : 202 : 202 : 0.1
+T: 3 1 : 201 : 217 : 0.9
+T: 3 1 : 201 : 201 : 0.1
+T: 3 1 : 200 : 216 : 0.9
+T: 3 1 : 200 : 200 : 0.1
+T: 3 1 : 199 : 215 : 0.9
+T: 3 1 : 199 : 199 : 0.1
+T: 3 1 : 198 : 214 : 0.9
+T: 3 1 : 198 : 198 : 0.1
+T: 3 1 : 197 : 213 : 0.9
+T: 3 1 : 197 : 197 : 0.1
+T: 3 1 : 196 : 212 : 0.9
+T: 3 1 : 196 : 196 : 0.1
+T: 3 1 : 195 : 211 : 0.9
+T: 3 1 : 195 : 195 : 0.1
+T: 3 1 : 194 : 210 : 0.9
+T: 3 1 : 194 : 194 : 0.1
+T: 3 1 : 193 : 209 : 0.9
+T: 3 1 : 193 : 193 : 0.1
+T: 3 1 : 192 : 208 : 0.9
+T: 3 1 : 192 : 192 : 0.1
+T: 3 1 : 191 : 191 : 1
+T: 3 1 : 190 : 190 : 1
+T: 3 1 : 189 : 189 : 1
+T: 3 1 : 188 : 188 : 1
+T: 3 1 : 187 : 187 : 1
+T: 3 1 : 186 : 186 : 1
+T: 3 1 : 185 : 185 : 1
+T: 3 1 : 184 : 184 : 1
+T: 3 1 : 183 : 183 : 1
+T: 3 1 : 182 : 182 : 1
+T: 3 1 : 181 : 181 : 1
+T: 3 1 : 180 : 180 : 1
+T: 3 1 : 179 : 179 : 1
+T: 3 1 : 178 : 178 : 1
+T: 3 1 : 177 : 177 : 1
+T: 3 1 : 176 : 176 : 1
+T: 3 1 : 175 : 191 : 0.9
+T: 3 1 : 175 : 175 : 0.1
+T: 3 1 : 174 : 190 : 0.9
+T: 3 1 : 174 : 174 : 0.1
+T: 3 1 : 173 : 189 : 0.9
+T: 3 1 : 173 : 173 : 0.1
+T: 3 1 : 172 : 188 : 0.9
+T: 3 1 : 172 : 172 : 0.1
+T: 3 1 : 171 : 187 : 0.9
+T: 3 1 : 171 : 171 : 0.1
+T: 3 1 : 170 : 186 : 0.9
+T: 3 1 : 170 : 170 : 0.1
+T: 3 1 : 169 : 185 : 0.9
+T: 3 1 : 169 : 169 : 0.1
+T: 3 1 : 168 : 184 : 0.9
+T: 3 1 : 168 : 168 : 0.1
+T: 3 1 : 167 : 183 : 0.9
+T: 3 1 : 167 : 167 : 0.1
+T: 3 1 : 166 : 182 : 0.9
+T: 3 1 : 166 : 166 : 0.1
+T: 3 1 : 77 : 221 : 0.81
+T: 3 1 : 77 : 77 : 0.01
+T: 3 1 : 77 : 205 : 0.09
+T: 3 1 : 77 : 93 : 0.09
+T: 3 1 : 76 : 220 : 0.81
+T: 3 1 : 76 : 76 : 0.01
+T: 3 1 : 76 : 204 : 0.09
+T: 3 1 : 76 : 92 : 0.09
+T: 3 1 : 75 : 219 : 0.81
+T: 3 1 : 75 : 75 : 0.01
+T: 3 1 : 75 : 203 : 0.09
+T: 3 1 : 75 : 91 : 0.09
+T: 3 1 : 74 : 218 : 0.81
+T: 3 1 : 74 : 74 : 0.01
+T: 3 1 : 74 : 202 : 0.09
+T: 3 1 : 74 : 90 : 0.09
+T: 3 1 : 73 : 217 : 0.81
+T: 3 1 : 73 : 73 : 0.01
+T: 3 1 : 73 : 201 : 0.09
+T: 3 1 : 73 : 89 : 0.09
+T: 3 1 : 72 : 216 : 0.81
+T: 3 1 : 72 : 72 : 0.01
+T: 3 1 : 72 : 200 : 0.09
+T: 3 1 : 72 : 88 : 0.09
+T: 3 1 : 71 : 215 : 0.81
+T: 3 1 : 71 : 71 : 0.01
+T: 3 1 : 71 : 199 : 0.09
+T: 3 1 : 71 : 87 : 0.09
+T: 3 1 : 70 : 214 : 0.81
+T: 3 1 : 70 : 70 : 0.01
+T: 3 1 : 70 : 198 : 0.09
+T: 3 1 : 70 : 86 : 0.09
+T: 3 1 : 69 : 213 : 0.81
+T: 3 1 : 69 : 69 : 0.01
+T: 3 1 : 69 : 197 : 0.09
+T: 3 1 : 69 : 85 : 0.09
+T: 3 1 : 68 : 212 : 0.81
+T: 3 1 : 68 : 68 : 0.01
+T: 3 1 : 68 : 196 : 0.09
+T: 3 1 : 68 : 84 : 0.09
+T: 3 1 : 67 : 211 : 0.81
+T: 3 1 : 67 : 67 : 0.01
+T: 3 1 : 67 : 195 : 0.09
+T: 3 1 : 67 : 83 : 0.09
+T: 3 1 : 66 : 210 : 0.81
+T: 3 1 : 66 : 66 : 0.01
+T: 3 1 : 66 : 194 : 0.09
+T: 3 1 : 66 : 82 : 0.09
+T: 3 1 : 65 : 209 : 0.81
+T: 3 1 : 65 : 65 : 0.01
+T: 3 1 : 65 : 193 : 0.09
+T: 3 1 : 65 : 81 : 0.09
+T: 3 1 : 64 : 208 : 0.81
+T: 3 1 : 64 : 64 : 0.01
+T: 3 1 : 64 : 192 : 0.09
+T: 3 1 : 64 : 80 : 0.09
+T: 3 1 : 63 : 191 : 0.9
+T: 3 1 : 63 : 63 : 0.1
+T: 3 1 : 62 : 190 : 0.9
+T: 3 1 : 62 : 62 : 0.1
+T: 3 1 : 61 : 189 : 0.9
+T: 3 1 : 61 : 61 : 0.1
+T: 3 1 : 60 : 188 : 0.9
+T: 3 1 : 60 : 60 : 0.1
+T: 3 1 : 59 : 187 : 0.9
+T: 3 1 : 59 : 59 : 0.1
+T: 3 1 : 58 : 186 : 0.9
+T: 3 1 : 58 : 58 : 0.1
+T: 3 1 : 57 : 185 : 0.9
+T: 3 1 : 57 : 57 : 0.1
+T: 3 1 : 56 : 184 : 0.9
+T: 3 1 : 56 : 56 : 0.1
+T: 3 1 : 55 : 183 : 0.9
+T: 3 1 : 55 : 55 : 0.1
+T: 3 1 : 54 : 182 : 0.9
+T: 3 1 : 54 : 54 : 0.1
+T: 3 1 : 53 : 181 : 0.9
+T: 3 1 : 53 : 53 : 0.1
+T: 3 1 : 52 : 180 : 0.9
+T: 3 1 : 52 : 52 : 0.1
+T: 3 1 : 51 : 179 : 0.9
+T: 3 1 : 51 : 51 : 0.1
+T: 3 1 : 50 : 178 : 0.9
+T: 3 1 : 50 : 50 : 0.1
+T: 3 1 : 49 : 177 : 0.9
+T: 3 1 : 49 : 49 : 0.1
+T: 3 1 : 48 : 176 : 0.9
+T: 3 1 : 48 : 48 : 0.1
+T: 3 1 : 47 : 191 : 0.81
+T: 3 1 : 47 : 47 : 0.01
+T: 3 1 : 47 : 175 : 0.09
+T: 3 1 : 47 : 63 : 0.09
+T: 3 1 : 46 : 190 : 0.81
+T: 3 1 : 46 : 46 : 0.01
+T: 3 1 : 46 : 174 : 0.09
+T: 3 1 : 46 : 62 : 0.09
+T: 3 1 : 45 : 189 : 0.81
+T: 3 1 : 45 : 45 : 0.01
+T: 3 1 : 45 : 173 : 0.09
+T: 3 1 : 45 : 61 : 0.09
+T: 3 1 : 44 : 188 : 0.81
+T: 3 1 : 44 : 44 : 0.01
+T: 3 1 : 44 : 172 : 0.09
+T: 3 1 : 44 : 60 : 0.09
+T: 3 1 : 43 : 187 : 0.81
+T: 3 1 : 43 : 43 : 0.01
+T: 3 1 : 43 : 171 : 0.09
+T: 3 1 : 43 : 59 : 0.09
+T: 3 1 : 42 : 186 : 0.81
+T: 3 1 : 42 : 42 : 0.01
+T: 3 1 : 42 : 170 : 0.09
+T: 3 1 : 42 : 58 : 0.09
+T: 3 1 : 41 : 185 : 0.81
+T: 3 1 : 41 : 41 : 0.01
+T: 3 1 : 41 : 169 : 0.09
+T: 3 1 : 41 : 57 : 0.09
+T: 3 1 : 40 : 184 : 0.81
+T: 3 1 : 40 : 40 : 0.01
+T: 3 1 : 40 : 168 : 0.09
+T: 3 1 : 40 : 56 : 0.09
+T: 3 1 : 39 : 183 : 0.81
+T: 3 1 : 39 : 39 : 0.01
+T: 3 1 : 39 : 167 : 0.09
+T: 3 1 : 39 : 55 : 0.09
+T: 3 1 : 38 : 182 : 0.81
+T: 3 1 : 38 : 38 : 0.01
+T: 3 1 : 38 : 166 : 0.09
+T: 3 1 : 38 : 54 : 0.09
+T: 3 1 : 37 : 181 : 0.81
+T: 3 1 : 37 : 37 : 0.01
+T: 3 1 : 37 : 165 : 0.09
+T: 3 1 : 37 : 53 : 0.09
+T: 3 1 : 36 : 180 : 0.81
+T: 3 1 : 36 : 36 : 0.01
+T: 3 1 : 36 : 164 : 0.09
+T: 3 1 : 36 : 52 : 0.09
+T: 3 1 : 15 : 159 : 0.81
+T: 3 1 : 15 : 15 : 0.01
+T: 3 1 : 15 : 143 : 0.09
+T: 3 1 : 15 : 31 : 0.09
+T: 3 1 : 14 : 158 : 0.81
+T: 3 1 : 14 : 14 : 0.01
+T: 3 1 : 14 : 142 : 0.09
+T: 3 1 : 14 : 30 : 0.09
+T: 3 1 : 13 : 157 : 0.81
+T: 3 1 : 13 : 13 : 0.01
+T: 3 1 : 13 : 141 : 0.09
+T: 3 1 : 13 : 29 : 0.09
+T: 3 1 : 12 : 156 : 0.81
+T: 3 1 : 12 : 12 : 0.01
+T: 3 1 : 12 : 140 : 0.09
+T: 3 1 : 12 : 28 : 0.09
+T: 3 1 : 11 : 155 : 0.81
+T: 3 1 : 11 : 11 : 0.01
+T: 3 1 : 11 : 139 : 0.09
+T: 3 1 : 11 : 27 : 0.09
+T: 3 1 : 10 : 154 : 0.81
+T: 3 1 : 10 : 10 : 0.01
+T: 3 1 : 10 : 138 : 0.09
+T: 3 1 : 10 : 26 : 0.09
+T: 3 1 : 9 : 153 : 0.81
+T: 3 1 : 9 : 9 : 0.01
+T: 3 1 : 9 : 137 : 0.09
+T: 3 1 : 9 : 25 : 0.09
+T: 3 1 : 8 : 152 : 0.81
+T: 3 1 : 8 : 8 : 0.01
+T: 3 1 : 8 : 136 : 0.09
+T: 3 1 : 8 : 24 : 0.09
+T: 3 1 : 7 : 151 : 0.81
+T: 3 1 : 7 : 7 : 0.01
+T: 3 1 : 7 : 135 : 0.09
+T: 3 1 : 7 : 23 : 0.09
+T: 3 1 : 6 : 150 : 0.81
+T: 3 1 : 6 : 6 : 0.01
+T: 3 1 : 6 : 134 : 0.09
+T: 3 1 : 6 : 22 : 0.09
+T: 3 1 : 1 : 145 : 0.81
+T: 3 1 : 1 : 1 : 0.01
+T: 3 1 : 1 : 129 : 0.09
+T: 3 1 : 1 : 17 : 0.09
+T: 3 1 : 0 : 144 : 0.81
+T: 3 1 : 0 : 0 : 0.01
+T: 3 1 : 0 : 128 : 0.09
+T: 3 1 : 0 : 16 : 0.09
+T: 3 1 : 2 : 146 : 0.81
+T: 3 1 : 2 : 2 : 0.01
+T: 3 1 : 2 : 130 : 0.09
+T: 3 1 : 2 : 18 : 0.09
+T: 3 1 : 3 : 147 : 0.81
+T: 3 1 : 3 : 3 : 0.01
+T: 3 1 : 3 : 131 : 0.09
+T: 3 1 : 3 : 19 : 0.09
+T: 3 1 : 4 : 148 : 0.81
+T: 3 1 : 4 : 4 : 0.01
+T: 3 1 : 4 : 132 : 0.09
+T: 3 1 : 4 : 20 : 0.09
+T: 3 1 : 5 : 149 : 0.81
+T: 3 1 : 5 : 5 : 0.01
+T: 3 1 : 5 : 133 : 0.09
+T: 3 1 : 5 : 21 : 0.09
+T: 3 1 : 16 : 144 : 0.9
+T: 3 1 : 16 : 16 : 0.1
+T: 3 1 : 17 : 145 : 0.9
+T: 3 1 : 17 : 17 : 0.1
+T: 3 1 : 18 : 146 : 0.9
+T: 3 1 : 18 : 18 : 0.1
+T: 3 1 : 19 : 147 : 0.9
+T: 3 1 : 19 : 19 : 0.1
+T: 3 1 : 20 : 148 : 0.9
+T: 3 1 : 20 : 20 : 0.1
+T: 3 1 : 21 : 149 : 0.9
+T: 3 1 : 21 : 21 : 0.1
+T: 3 1 : 22 : 150 : 0.9
+T: 3 1 : 22 : 22 : 0.1
+T: 3 1 : 23 : 151 : 0.9
+T: 3 1 : 23 : 23 : 0.1
+T: 3 1 : 24 : 152 : 0.9
+T: 3 1 : 24 : 24 : 0.1
+T: 3 1 : 25 : 153 : 0.9
+T: 3 1 : 25 : 25 : 0.1
+T: 3 1 : 26 : 154 : 0.9
+T: 3 1 : 26 : 26 : 0.1
+T: 3 1 : 27 : 155 : 0.9
+T: 3 1 : 27 : 27 : 0.1
+T: 3 1 : 28 : 156 : 0.9
+T: 3 1 : 28 : 28 : 0.1
+T: 3 1 : 29 : 157 : 0.9
+T: 3 1 : 29 : 29 : 0.1
+T: 3 1 : 30 : 158 : 0.9
+T: 3 1 : 30 : 30 : 0.1
+T: 3 1 : 31 : 159 : 0.9
+T: 3 1 : 31 : 31 : 0.1
+T: 3 1 : 32 : 176 : 0.81
+T: 3 1 : 32 : 32 : 0.01
+T: 3 1 : 32 : 160 : 0.09
+T: 3 1 : 32 : 48 : 0.09
+T: 3 1 : 33 : 177 : 0.81
+T: 3 1 : 33 : 33 : 0.01
+T: 3 1 : 33 : 161 : 0.09
+T: 3 1 : 33 : 49 : 0.09
+T: 3 1 : 34 : 178 : 0.81
+T: 3 1 : 34 : 34 : 0.01
+T: 3 1 : 34 : 162 : 0.09
+T: 3 1 : 34 : 50 : 0.09
+T: 3 1 : 35 : 179 : 0.81
+T: 3 1 : 35 : 35 : 0.01
+T: 3 1 : 35 : 163 : 0.09
+T: 3 1 : 35 : 51 : 0.09
+T: 3 1 : 78 : 222 : 0.81
+T: 3 1 : 78 : 78 : 0.01
+T: 3 1 : 78 : 206 : 0.09
+T: 3 1 : 78 : 94 : 0.09
+T: 3 1 : 79 : 223 : 0.81
+T: 3 1 : 79 : 79 : 0.01
+T: 3 1 : 79 : 207 : 0.09
+T: 3 1 : 79 : 95 : 0.09
+T: 3 1 : 80 : 208 : 0.9
+T: 3 1 : 80 : 80 : 0.1
+T: 3 1 : 81 : 209 : 0.9
+T: 3 1 : 81 : 81 : 0.1
+T: 3 1 : 82 : 210 : 0.9
+T: 3 1 : 82 : 82 : 0.1
+T: 3 1 : 83 : 211 : 0.9
+T: 3 1 : 83 : 83 : 0.1
+T: 3 1 : 84 : 212 : 0.9
+T: 3 1 : 84 : 84 : 0.1
+T: 3 1 : 85 : 213 : 0.9
+T: 3 1 : 85 : 85 : 0.1
+T: 3 1 : 86 : 214 : 0.9
+T: 3 1 : 86 : 86 : 0.1
+T: 3 1 : 87 : 215 : 0.9
+T: 3 1 : 87 : 87 : 0.1
+T: 3 1 : 88 : 216 : 0.9
+T: 3 1 : 88 : 88 : 0.1
+T: 3 1 : 89 : 217 : 0.9
+T: 3 1 : 89 : 89 : 0.1
+T: 3 1 : 90 : 218 : 0.9
+T: 3 1 : 90 : 90 : 0.1
+T: 3 1 : 91 : 219 : 0.9
+T: 3 1 : 91 : 91 : 0.1
+T: 3 1 : 92 : 220 : 0.9
+T: 3 1 : 92 : 92 : 0.1
+T: 3 1 : 93 : 221 : 0.9
+T: 3 1 : 93 : 93 : 0.1
+T: 3 1 : 94 : 222 : 0.9
+T: 3 1 : 94 : 94 : 0.1
+T: 3 1 : 95 : 223 : 0.9
+T: 3 1 : 95 : 95 : 0.1
+T: 3 1 : 96 : 240 : 0.81
+T: 3 1 : 96 : 96 : 0.01
+T: 3 1 : 96 : 224 : 0.09
+T: 3 1 : 96 : 112 : 0.09
+T: 3 1 : 97 : 241 : 0.81
+T: 3 1 : 97 : 97 : 0.01
+T: 3 1 : 97 : 225 : 0.09
+T: 3 1 : 97 : 113 : 0.09
+T: 3 1 : 98 : 242 : 0.81
+T: 3 1 : 98 : 98 : 0.01
+T: 3 1 : 98 : 226 : 0.09
+T: 3 1 : 98 : 114 : 0.09
+T: 3 1 : 99 : 243 : 0.81
+T: 3 1 : 99 : 99 : 0.01
+T: 3 1 : 99 : 227 : 0.09
+T: 3 1 : 99 : 115 : 0.09
+T: 3 1 : 100 : 244 : 0.81
+T: 3 1 : 100 : 100 : 0.01
+T: 3 1 : 100 : 228 : 0.09
+T: 3 1 : 100 : 116 : 0.09
+T: 3 1 : 101 : 245 : 0.81
+T: 3 1 : 101 : 101 : 0.01
+T: 3 1 : 101 : 229 : 0.09
+T: 3 1 : 101 : 117 : 0.09
+T: 3 1 : 102 : 246 : 0.81
+T: 3 1 : 102 : 102 : 0.01
+T: 3 1 : 102 : 230 : 0.09
+T: 3 1 : 102 : 118 : 0.09
+T: 3 1 : 103 : 247 : 0.81
+T: 3 1 : 103 : 103 : 0.01
+T: 3 1 : 103 : 231 : 0.09
+T: 3 1 : 103 : 119 : 0.09
+T: 3 1 : 104 : 248 : 0.81
+T: 3 1 : 104 : 104 : 0.01
+T: 3 1 : 104 : 232 : 0.09
+T: 3 1 : 104 : 120 : 0.09
+T: 3 1 : 105 : 249 : 0.81
+T: 3 1 : 105 : 105 : 0.01
+T: 3 1 : 105 : 233 : 0.09
+T: 3 1 : 105 : 121 : 0.09
+T: 3 1 : 106 : 250 : 0.81
+T: 3 1 : 106 : 106 : 0.01
+T: 3 1 : 106 : 234 : 0.09
+T: 3 1 : 106 : 122 : 0.09
+T: 3 1 : 107 : 251 : 0.81
+T: 3 1 : 107 : 107 : 0.01
+T: 3 1 : 107 : 235 : 0.09
+T: 3 1 : 107 : 123 : 0.09
+T: 3 1 : 108 : 252 : 0.81
+T: 3 1 : 108 : 108 : 0.01
+T: 3 1 : 108 : 236 : 0.09
+T: 3 1 : 108 : 124 : 0.09
+T: 3 1 : 109 : 253 : 0.81
+T: 3 1 : 109 : 109 : 0.01
+T: 3 1 : 109 : 237 : 0.09
+T: 3 1 : 109 : 125 : 0.09
+T: 3 1 : 110 : 254 : 0.81
+T: 3 1 : 110 : 110 : 0.01
+T: 3 1 : 110 : 238 : 0.09
+T: 3 1 : 110 : 126 : 0.09
+T: 3 1 : 111 : 255 : 0.81
+T: 3 1 : 111 : 111 : 0.01
+T: 3 1 : 111 : 239 : 0.09
+T: 3 1 : 111 : 127 : 0.09
+T: 3 1 : 112 : 240 : 0.9
+T: 3 1 : 112 : 112 : 0.1
+T: 3 1 : 113 : 241 : 0.9
+T: 3 1 : 113 : 113 : 0.1
+T: 3 1 : 114 : 242 : 0.9
+T: 3 1 : 114 : 114 : 0.1
+T: 3 1 : 115 : 243 : 0.9
+T: 3 1 : 115 : 115 : 0.1
+T: 3 1 : 116 : 244 : 0.9
+T: 3 1 : 116 : 116 : 0.1
+T: 3 1 : 117 : 245 : 0.9
+T: 3 1 : 117 : 117 : 0.1
+T: 3 1 : 118 : 246 : 0.9
+T: 3 1 : 118 : 118 : 0.1
+T: 3 1 : 119 : 247 : 0.9
+T: 3 1 : 119 : 119 : 0.1
+T: 3 1 : 120 : 248 : 0.9
+T: 3 1 : 120 : 120 : 0.1
+T: 3 1 : 121 : 249 : 0.9
+T: 3 1 : 121 : 121 : 0.1
+T: 3 1 : 122 : 250 : 0.9
+T: 3 1 : 122 : 122 : 0.1
+T: 3 1 : 123 : 251 : 0.9
+T: 3 1 : 123 : 123 : 0.1
+T: 3 1 : 124 : 252 : 0.9
+T: 3 1 : 124 : 124 : 0.1
+T: 3 1 : 125 : 253 : 0.9
+T: 3 1 : 125 : 125 : 0.1
+T: 3 1 : 126 : 254 : 0.9
+T: 3 1 : 126 : 126 : 0.1
+T: 3 1 : 127 : 255 : 0.9
+T: 3 1 : 127 : 127 : 0.1
+T: 3 1 : 128 : 144 : 0.9
+T: 3 1 : 128 : 128 : 0.1
+T: 3 1 : 129 : 145 : 0.9
+T: 3 1 : 129 : 129 : 0.1
+T: 3 1 : 130 : 146 : 0.9
+T: 3 1 : 130 : 130 : 0.1
+T: 3 1 : 131 : 147 : 0.9
+T: 3 1 : 131 : 131 : 0.1
+T: 3 1 : 132 : 148 : 0.9
+T: 3 1 : 132 : 132 : 0.1
+T: 3 1 : 133 : 149 : 0.9
+T: 3 1 : 133 : 133 : 0.1
+T: 3 1 : 134 : 150 : 0.9
+T: 3 1 : 134 : 134 : 0.1
+T: 3 1 : 135 : 151 : 0.9
+T: 3 1 : 135 : 135 : 0.1
+T: 3 1 : 136 : 152 : 0.9
+T: 3 1 : 136 : 136 : 0.1
+T: 3 1 : 137 : 153 : 0.9
+T: 3 1 : 137 : 137 : 0.1
+T: 3 1 : 138 : 154 : 0.9
+T: 3 1 : 138 : 138 : 0.1
+T: 3 1 : 139 : 155 : 0.9
+T: 3 1 : 139 : 139 : 0.1
+T: 3 1 : 140 : 156 : 0.9
+T: 3 1 : 140 : 140 : 0.1
+T: 3 1 : 141 : 157 : 0.9
+T: 3 1 : 141 : 141 : 0.1
+T: 3 1 : 142 : 158 : 0.9
+T: 3 1 : 142 : 142 : 0.1
+T: 3 1 : 143 : 159 : 0.9
+T: 3 1 : 143 : 143 : 0.1
+T: 3 1 : 144 : 144 : 1
+T: 3 1 : 145 : 145 : 1
+T: 3 1 : 146 : 146 : 1
+T: 3 1 : 147 : 147 : 1
+T: 3 1 : 148 : 148 : 1
+T: 3 1 : 149 : 149 : 1
+T: 3 1 : 150 : 150 : 1
+T: 3 1 : 151 : 151 : 1
+T: 3 1 : 152 : 152 : 1
+T: 3 1 : 153 : 153 : 1
+T: 3 1 : 154 : 154 : 1
+T: 3 1 : 155 : 155 : 1
+T: 3 1 : 156 : 156 : 1
+T: 3 1 : 157 : 157 : 1
+T: 3 1 : 158 : 158 : 1
+T: 3 1 : 159 : 159 : 1
+T: 3 1 : 160 : 176 : 0.9
+T: 3 1 : 160 : 160 : 0.1
+T: 3 1 : 161 : 177 : 0.9
+T: 3 1 : 161 : 161 : 0.1
+T: 3 1 : 162 : 178 : 0.9
+T: 3 1 : 162 : 162 : 0.1
+T: 3 1 : 163 : 179 : 0.9
+T: 3 1 : 163 : 163 : 0.1
+T: 3 1 : 164 : 180 : 0.9
+T: 3 1 : 164 : 164 : 0.1
+T: 3 1 : 165 : 181 : 0.9
+T: 3 1 : 165 : 165 : 0.1
+T: 3 0 : 255 : 255 : 0.1
+T: 3 0 : 255 : 239 : 0.9
+T: 3 0 : 254 : 254 : 0.1
+T: 3 0 : 254 : 238 : 0.9
+T: 3 0 : 253 : 253 : 0.1
+T: 3 0 : 253 : 237 : 0.9
+T: 3 0 : 252 : 252 : 0.1
+T: 3 0 : 252 : 236 : 0.9
+T: 3 0 : 251 : 251 : 0.1
+T: 3 0 : 251 : 235 : 0.9
+T: 3 0 : 250 : 250 : 0.1
+T: 3 0 : 250 : 234 : 0.9
+T: 3 0 : 249 : 249 : 0.1
+T: 3 0 : 249 : 233 : 0.9
+T: 3 0 : 248 : 248 : 0.1
+T: 3 0 : 248 : 232 : 0.9
+T: 3 0 : 247 : 247 : 0.1
+T: 3 0 : 247 : 231 : 0.9
+T: 3 0 : 246 : 246 : 0.1
+T: 3 0 : 246 : 230 : 0.9
+T: 3 0 : 245 : 245 : 0.1
+T: 3 0 : 245 : 229 : 0.9
+T: 3 0 : 244 : 244 : 0.1
+T: 3 0 : 244 : 228 : 0.9
+T: 3 0 : 243 : 243 : 0.1
+T: 3 0 : 243 : 227 : 0.9
+T: 3 0 : 242 : 242 : 0.1
+T: 3 0 : 242 : 226 : 0.9
+T: 3 0 : 241 : 241 : 0.1
+T: 3 0 : 241 : 225 : 0.9
+T: 3 0 : 240 : 240 : 0.1
+T: 3 0 : 240 : 224 : 0.9
+T: 3 0 : 239 : 239 : 1
+T: 3 0 : 238 : 238 : 1
+T: 3 0 : 237 : 237 : 1
+T: 3 0 : 236 : 236 : 1
+T: 3 0 : 235 : 235 : 1
+T: 3 0 : 234 : 234 : 1
+T: 3 0 : 233 : 233 : 1
+T: 3 0 : 232 : 232 : 1
+T: 3 0 : 231 : 231 : 1
+T: 3 0 : 230 : 230 : 1
+T: 3 0 : 229 : 229 : 1
+T: 3 0 : 228 : 228 : 1
+T: 3 0 : 227 : 227 : 1
+T: 3 0 : 226 : 226 : 1
+T: 3 0 : 225 : 225 : 1
+T: 3 0 : 224 : 224 : 1
+T: 3 0 : 223 : 223 : 0.1
+T: 3 0 : 223 : 207 : 0.9
+T: 3 0 : 222 : 222 : 0.1
+T: 3 0 : 222 : 206 : 0.9
+T: 3 0 : 221 : 221 : 0.1
+T: 3 0 : 221 : 205 : 0.9
+T: 3 0 : 220 : 220 : 0.1
+T: 3 0 : 220 : 204 : 0.9
+T: 3 0 : 219 : 219 : 0.1
+T: 3 0 : 219 : 203 : 0.9
+T: 3 0 : 218 : 218 : 0.1
+T: 3 0 : 218 : 202 : 0.9
+T: 3 0 : 217 : 217 : 0.1
+T: 3 0 : 217 : 201 : 0.9
+T: 3 0 : 216 : 216 : 0.1
+T: 3 0 : 216 : 200 : 0.9
+T: 3 0 : 215 : 215 : 0.1
+T: 3 0 : 215 : 199 : 0.9
+T: 3 0 : 214 : 214 : 0.1
+T: 3 0 : 214 : 198 : 0.9
+T: 3 0 : 213 : 213 : 0.1
+T: 3 0 : 213 : 197 : 0.9
+T: 3 0 : 212 : 212 : 0.1
+T: 3 0 : 212 : 196 : 0.9
+T: 3 0 : 211 : 211 : 0.1
+T: 3 0 : 211 : 195 : 0.9
+T: 3 0 : 210 : 210 : 0.1
+T: 3 0 : 210 : 194 : 0.9
+T: 3 0 : 209 : 209 : 0.1
+T: 3 0 : 209 : 193 : 0.9
+T: 3 0 : 208 : 208 : 0.1
+T: 3 0 : 208 : 192 : 0.9
+T: 3 0 : 207 : 207 : 1
+T: 3 0 : 206 : 206 : 1
+T: 3 0 : 205 : 205 : 1
+T: 3 0 : 204 : 204 : 1
+T: 3 0 : 203 : 203 : 1
+T: 3 0 : 202 : 202 : 1
+T: 3 0 : 201 : 201 : 1
+T: 3 0 : 200 : 200 : 1
+T: 3 0 : 199 : 199 : 1
+T: 3 0 : 198 : 198 : 1
+T: 3 0 : 197 : 197 : 1
+T: 3 0 : 196 : 196 : 1
+T: 3 0 : 195 : 195 : 1
+T: 3 0 : 194 : 194 : 1
+T: 3 0 : 193 : 193 : 1
+T: 3 0 : 192 : 192 : 1
+T: 3 0 : 191 : 191 : 0.1
+T: 3 0 : 191 : 175 : 0.9
+T: 3 0 : 190 : 190 : 0.1
+T: 3 0 : 190 : 174 : 0.9
+T: 3 0 : 189 : 189 : 0.1
+T: 3 0 : 189 : 173 : 0.9
+T: 3 0 : 188 : 188 : 0.1
+T: 3 0 : 188 : 172 : 0.9
+T: 3 0 : 187 : 187 : 0.1
+T: 3 0 : 187 : 171 : 0.9
+T: 3 0 : 186 : 186 : 0.1
+T: 3 0 : 186 : 170 : 0.9
+T: 3 0 : 185 : 185 : 0.1
+T: 3 0 : 185 : 169 : 0.9
+T: 3 0 : 184 : 184 : 0.1
+T: 3 0 : 184 : 168 : 0.9
+T: 3 0 : 183 : 183 : 0.1
+T: 3 0 : 183 : 167 : 0.9
+T: 3 0 : 182 : 182 : 0.1
+T: 3 0 : 182 : 166 : 0.9
+T: 3 0 : 181 : 181 : 0.1
+T: 3 0 : 181 : 165 : 0.9
+T: 3 0 : 180 : 180 : 0.1
+T: 3 0 : 180 : 164 : 0.9
+T: 3 0 : 179 : 179 : 0.1
+T: 3 0 : 179 : 163 : 0.9
+T: 3 0 : 178 : 178 : 0.1
+T: 3 0 : 178 : 162 : 0.9
+T: 3 0 : 177 : 177 : 0.1
+T: 3 0 : 177 : 161 : 0.9
+T: 3 0 : 176 : 176 : 0.1
+T: 3 0 : 176 : 160 : 0.9
+T: 3 0 : 175 : 175 : 1
+T: 3 0 : 174 : 174 : 1
+T: 3 0 : 173 : 173 : 1
+T: 3 0 : 172 : 172 : 1
+T: 3 0 : 171 : 171 : 1
+T: 3 0 : 170 : 170 : 1
+T: 3 0 : 169 : 169 : 1
+T: 3 0 : 168 : 168 : 1
+T: 3 0 : 167 : 167 : 1
+T: 3 0 : 166 : 166 : 1
+T: 3 0 : 77 : 205 : 0.9
+T: 3 0 : 77 : 77 : 0.1
+T: 3 0 : 76 : 204 : 0.9
+T: 3 0 : 76 : 76 : 0.1
+T: 3 0 : 75 : 203 : 0.9
+T: 3 0 : 75 : 75 : 0.1
+T: 3 0 : 74 : 202 : 0.9
+T: 3 0 : 74 : 74 : 0.1
+T: 3 0 : 73 : 201 : 0.9
+T: 3 0 : 73 : 73 : 0.1
+T: 3 0 : 72 : 200 : 0.9
+T: 3 0 : 72 : 72 : 0.1
+T: 3 0 : 71 : 199 : 0.9
+T: 3 0 : 71 : 71 : 0.1
+T: 3 0 : 70 : 198 : 0.9
+T: 3 0 : 70 : 70 : 0.1
+T: 3 0 : 69 : 197 : 0.9
+T: 3 0 : 69 : 69 : 0.1
+T: 3 0 : 68 : 196 : 0.9
+T: 3 0 : 68 : 68 : 0.1
+T: 3 0 : 67 : 195 : 0.9
+T: 3 0 : 67 : 67 : 0.1
+T: 3 0 : 66 : 194 : 0.9
+T: 3 0 : 66 : 66 : 0.1
+T: 3 0 : 65 : 193 : 0.9
+T: 3 0 : 65 : 65 : 0.1
+T: 3 0 : 64 : 192 : 0.9
+T: 3 0 : 64 : 64 : 0.1
+T: 3 0 : 63 : 191 : 0.09
+T: 3 0 : 63 : 47 : 0.09
+T: 3 0 : 63 : 175 : 0.81
+T: 3 0 : 63 : 63 : 0.01
+T: 3 0 : 62 : 190 : 0.09
+T: 3 0 : 62 : 46 : 0.09
+T: 3 0 : 62 : 174 : 0.81
+T: 3 0 : 62 : 62 : 0.01
+T: 3 0 : 61 : 189 : 0.09
+T: 3 0 : 61 : 45 : 0.09
+T: 3 0 : 61 : 173 : 0.81
+T: 3 0 : 61 : 61 : 0.01
+T: 3 0 : 60 : 188 : 0.09
+T: 3 0 : 60 : 44 : 0.09
+T: 3 0 : 60 : 172 : 0.81
+T: 3 0 : 60 : 60 : 0.01
+T: 3 0 : 59 : 187 : 0.09
+T: 3 0 : 59 : 43 : 0.09
+T: 3 0 : 59 : 171 : 0.81
+T: 3 0 : 59 : 59 : 0.01
+T: 3 0 : 58 : 186 : 0.09
+T: 3 0 : 58 : 42 : 0.09
+T: 3 0 : 58 : 170 : 0.81
+T: 3 0 : 58 : 58 : 0.01
+T: 3 0 : 57 : 185 : 0.09
+T: 3 0 : 57 : 41 : 0.09
+T: 3 0 : 57 : 169 : 0.81
+T: 3 0 : 57 : 57 : 0.01
+T: 3 0 : 56 : 184 : 0.09
+T: 3 0 : 56 : 40 : 0.09
+T: 3 0 : 56 : 168 : 0.81
+T: 3 0 : 56 : 56 : 0.01
+T: 3 0 : 55 : 183 : 0.09
+T: 3 0 : 55 : 39 : 0.09
+T: 3 0 : 55 : 167 : 0.81
+T: 3 0 : 55 : 55 : 0.01
+T: 3 0 : 54 : 182 : 0.09
+T: 3 0 : 54 : 38 : 0.09
+T: 3 0 : 54 : 166 : 0.81
+T: 3 0 : 54 : 54 : 0.01
+T: 3 0 : 53 : 181 : 0.09
+T: 3 0 : 53 : 37 : 0.09
+T: 3 0 : 53 : 165 : 0.81
+T: 3 0 : 53 : 53 : 0.01
+T: 3 0 : 52 : 180 : 0.09
+T: 3 0 : 52 : 36 : 0.09
+T: 3 0 : 52 : 164 : 0.81
+T: 3 0 : 52 : 52 : 0.01
+T: 3 0 : 51 : 179 : 0.09
+T: 3 0 : 51 : 35 : 0.09
+T: 3 0 : 51 : 163 : 0.81
+T: 3 0 : 51 : 51 : 0.01
+T: 3 0 : 50 : 178 : 0.09
+T: 3 0 : 50 : 34 : 0.09
+T: 3 0 : 50 : 162 : 0.81
+T: 3 0 : 50 : 50 : 0.01
+T: 3 0 : 49 : 177 : 0.09
+T: 3 0 : 49 : 33 : 0.09
+T: 3 0 : 49 : 161 : 0.81
+T: 3 0 : 49 : 49 : 0.01
+T: 3 0 : 48 : 176 : 0.09
+T: 3 0 : 48 : 32 : 0.09
+T: 3 0 : 48 : 160 : 0.81
+T: 3 0 : 48 : 48 : 0.01
+T: 3 0 : 47 : 175 : 0.9
+T: 3 0 : 47 : 47 : 0.1
+T: 3 0 : 46 : 174 : 0.9
+T: 3 0 : 46 : 46 : 0.1
+T: 3 0 : 45 : 173 : 0.9
+T: 3 0 : 45 : 45 : 0.1
+T: 3 0 : 44 : 172 : 0.9
+T: 3 0 : 44 : 44 : 0.1
+T: 3 0 : 43 : 171 : 0.9
+T: 3 0 : 43 : 43 : 0.1
+T: 3 0 : 42 : 170 : 0.9
+T: 3 0 : 42 : 42 : 0.1
+T: 3 0 : 41 : 169 : 0.9
+T: 3 0 : 41 : 41 : 0.1
+T: 3 0 : 40 : 168 : 0.9
+T: 3 0 : 40 : 40 : 0.1
+T: 3 0 : 39 : 167 : 0.9
+T: 3 0 : 39 : 39 : 0.1
+T: 3 0 : 38 : 166 : 0.9
+T: 3 0 : 38 : 38 : 0.1
+T: 3 0 : 37 : 165 : 0.9
+T: 3 0 : 37 : 37 : 0.1
+T: 3 0 : 36 : 164 : 0.9
+T: 3 0 : 36 : 36 : 0.1
+T: 3 0 : 15 : 143 : 0.9
+T: 3 0 : 15 : 15 : 0.1
+T: 3 0 : 14 : 142 : 0.9
+T: 3 0 : 14 : 14 : 0.1
+T: 3 0 : 13 : 141 : 0.9
+T: 3 0 : 13 : 13 : 0.1
+T: 3 0 : 12 : 140 : 0.9
+T: 3 0 : 12 : 12 : 0.1
+T: 3 0 : 11 : 139 : 0.9
+T: 3 0 : 11 : 11 : 0.1
+T: 3 0 : 10 : 138 : 0.9
+T: 3 0 : 10 : 10 : 0.1
+T: 3 0 : 9 : 137 : 0.9
+T: 3 0 : 9 : 9 : 0.1
+T: 3 0 : 8 : 136 : 0.9
+T: 3 0 : 8 : 8 : 0.1
+T: 3 0 : 7 : 135 : 0.9
+T: 3 0 : 7 : 7 : 0.1
+T: 3 0 : 6 : 134 : 0.9
+T: 3 0 : 6 : 6 : 0.1
+T: 3 0 : 1 : 129 : 0.9
+T: 3 0 : 1 : 1 : 0.1
+T: 3 0 : 0 : 128 : 0.9
+T: 3 0 : 0 : 0 : 0.1
+T: 3 0 : 2 : 130 : 0.9
+T: 3 0 : 2 : 2 : 0.1
+T: 3 0 : 3 : 131 : 0.9
+T: 3 0 : 3 : 3 : 0.1
+T: 3 0 : 4 : 132 : 0.9
+T: 3 0 : 4 : 4 : 0.1
+T: 3 0 : 5 : 133 : 0.9
+T: 3 0 : 5 : 5 : 0.1
+T: 3 0 : 16 : 144 : 0.09
+T: 3 0 : 16 : 0 : 0.09
+T: 3 0 : 16 : 128 : 0.81
+T: 3 0 : 16 : 16 : 0.01
+T: 3 0 : 17 : 145 : 0.09
+T: 3 0 : 17 : 1 : 0.09
+T: 3 0 : 17 : 129 : 0.81
+T: 3 0 : 17 : 17 : 0.01
+T: 3 0 : 18 : 146 : 0.09
+T: 3 0 : 18 : 2 : 0.09
+T: 3 0 : 18 : 130 : 0.81
+T: 3 0 : 18 : 18 : 0.01
+T: 3 0 : 19 : 147 : 0.09
+T: 3 0 : 19 : 3 : 0.09
+T: 3 0 : 19 : 131 : 0.81
+T: 3 0 : 19 : 19 : 0.01
+T: 3 0 : 20 : 148 : 0.09
+T: 3 0 : 20 : 4 : 0.09
+T: 3 0 : 20 : 132 : 0.81
+T: 3 0 : 20 : 20 : 0.01
+T: 3 0 : 21 : 149 : 0.09
+T: 3 0 : 21 : 5 : 0.09
+T: 3 0 : 21 : 133 : 0.81
+T: 3 0 : 21 : 21 : 0.01
+T: 3 0 : 22 : 150 : 0.09
+T: 3 0 : 22 : 6 : 0.09
+T: 3 0 : 22 : 134 : 0.81
+T: 3 0 : 22 : 22 : 0.01
+T: 3 0 : 23 : 151 : 0.09
+T: 3 0 : 23 : 7 : 0.09
+T: 3 0 : 23 : 135 : 0.81
+T: 3 0 : 23 : 23 : 0.01
+T: 3 0 : 24 : 152 : 0.09
+T: 3 0 : 24 : 8 : 0.09
+T: 3 0 : 24 : 136 : 0.81
+T: 3 0 : 24 : 24 : 0.01
+T: 3 0 : 25 : 153 : 0.09
+T: 3 0 : 25 : 9 : 0.09
+T: 3 0 : 25 : 137 : 0.81
+T: 3 0 : 25 : 25 : 0.01
+T: 3 0 : 26 : 154 : 0.09
+T: 3 0 : 26 : 10 : 0.09
+T: 3 0 : 26 : 138 : 0.81
+T: 3 0 : 26 : 26 : 0.01
+T: 3 0 : 27 : 155 : 0.09
+T: 3 0 : 27 : 11 : 0.09
+T: 3 0 : 27 : 139 : 0.81
+T: 3 0 : 27 : 27 : 0.01
+T: 3 0 : 28 : 156 : 0.09
+T: 3 0 : 28 : 12 : 0.09
+T: 3 0 : 28 : 140 : 0.81
+T: 3 0 : 28 : 28 : 0.01
+T: 3 0 : 29 : 157 : 0.09
+T: 3 0 : 29 : 13 : 0.09
+T: 3 0 : 29 : 141 : 0.81
+T: 3 0 : 29 : 29 : 0.01
+T: 3 0 : 30 : 158 : 0.09
+T: 3 0 : 30 : 14 : 0.09
+T: 3 0 : 30 : 142 : 0.81
+T: 3 0 : 30 : 30 : 0.01
+T: 3 0 : 31 : 159 : 0.09
+T: 3 0 : 31 : 15 : 0.09
+T: 3 0 : 31 : 143 : 0.81
+T: 3 0 : 31 : 31 : 0.01
+T: 3 0 : 32 : 160 : 0.9
+T: 3 0 : 32 : 32 : 0.1
+T: 3 0 : 33 : 161 : 0.9
+T: 3 0 : 33 : 33 : 0.1
+T: 3 0 : 34 : 162 : 0.9
+T: 3 0 : 34 : 34 : 0.1
+T: 3 0 : 35 : 163 : 0.9
+T: 3 0 : 35 : 35 : 0.1
+T: 3 0 : 78 : 206 : 0.9
+T: 3 0 : 78 : 78 : 0.1
+T: 3 0 : 79 : 207 : 0.9
+T: 3 0 : 79 : 79 : 0.1
+T: 3 0 : 80 : 208 : 0.09
+T: 3 0 : 80 : 64 : 0.09
+T: 3 0 : 80 : 192 : 0.81
+T: 3 0 : 80 : 80 : 0.01
+T: 3 0 : 81 : 209 : 0.09
+T: 3 0 : 81 : 65 : 0.09
+T: 3 0 : 81 : 193 : 0.81
+T: 3 0 : 81 : 81 : 0.01
+T: 3 0 : 82 : 210 : 0.09
+T: 3 0 : 82 : 66 : 0.09
+T: 3 0 : 82 : 194 : 0.81
+T: 3 0 : 82 : 82 : 0.01
+T: 3 0 : 83 : 211 : 0.09
+T: 3 0 : 83 : 67 : 0.09
+T: 3 0 : 83 : 195 : 0.81
+T: 3 0 : 83 : 83 : 0.01
+T: 3 0 : 84 : 212 : 0.09
+T: 3 0 : 84 : 68 : 0.09
+T: 3 0 : 84 : 196 : 0.81
+T: 3 0 : 84 : 84 : 0.01
+T: 3 0 : 85 : 213 : 0.09
+T: 3 0 : 85 : 69 : 0.09
+T: 3 0 : 85 : 197 : 0.81
+T: 3 0 : 85 : 85 : 0.01
+T: 3 0 : 86 : 214 : 0.09
+T: 3 0 : 86 : 70 : 0.09
+T: 3 0 : 86 : 198 : 0.81
+T: 3 0 : 86 : 86 : 0.01
+T: 3 0 : 87 : 215 : 0.09
+T: 3 0 : 87 : 71 : 0.09
+T: 3 0 : 87 : 199 : 0.81
+T: 3 0 : 87 : 87 : 0.01
+T: 3 0 : 88 : 216 : 0.09
+T: 3 0 : 88 : 72 : 0.09
+T: 3 0 : 88 : 200 : 0.81
+T: 3 0 : 88 : 88 : 0.01
+T: 3 0 : 89 : 217 : 0.09
+T: 3 0 : 89 : 73 : 0.09
+T: 3 0 : 89 : 201 : 0.81
+T: 3 0 : 89 : 89 : 0.01
+T: 3 0 : 90 : 218 : 0.09
+T: 3 0 : 90 : 74 : 0.09
+T: 3 0 : 90 : 202 : 0.81
+T: 3 0 : 90 : 90 : 0.01
+T: 3 0 : 91 : 219 : 0.09
+T: 3 0 : 91 : 75 : 0.09
+T: 3 0 : 91 : 203 : 0.81
+T: 3 0 : 91 : 91 : 0.01
+T: 3 0 : 92 : 220 : 0.09
+T: 3 0 : 92 : 76 : 0.09
+T: 3 0 : 92 : 204 : 0.81
+T: 3 0 : 92 : 92 : 0.01
+T: 3 0 : 93 : 221 : 0.09
+T: 3 0 : 93 : 77 : 0.09
+T: 3 0 : 93 : 205 : 0.81
+T: 3 0 : 93 : 93 : 0.01
+T: 3 0 : 94 : 222 : 0.09
+T: 3 0 : 94 : 78 : 0.09
+T: 3 0 : 94 : 206 : 0.81
+T: 3 0 : 94 : 94 : 0.01
+T: 3 0 : 95 : 223 : 0.09
+T: 3 0 : 95 : 79 : 0.09
+T: 3 0 : 95 : 207 : 0.81
+T: 3 0 : 95 : 95 : 0.01
+T: 3 0 : 96 : 224 : 0.9
+T: 3 0 : 96 : 96 : 0.1
+T: 3 0 : 97 : 225 : 0.9
+T: 3 0 : 97 : 97 : 0.1
+T: 3 0 : 98 : 226 : 0.9
+T: 3 0 : 98 : 98 : 0.1
+T: 3 0 : 99 : 227 : 0.9
+T: 3 0 : 99 : 99 : 0.1
+T: 3 0 : 100 : 228 : 0.9
+T: 3 0 : 100 : 100 : 0.1
+T: 3 0 : 101 : 229 : 0.9
+T: 3 0 : 101 : 101 : 0.1
+T: 3 0 : 102 : 230 : 0.9
+T: 3 0 : 102 : 102 : 0.1
+T: 3 0 : 103 : 231 : 0.9
+T: 3 0 : 103 : 103 : 0.1
+T: 3 0 : 104 : 232 : 0.9
+T: 3 0 : 104 : 104 : 0.1
+T: 3 0 : 105 : 233 : 0.9
+T: 3 0 : 105 : 105 : 0.1
+T: 3 0 : 106 : 234 : 0.9
+T: 3 0 : 106 : 106 : 0.1
+T: 3 0 : 107 : 235 : 0.9
+T: 3 0 : 107 : 107 : 0.1
+T: 3 0 : 108 : 236 : 0.9
+T: 3 0 : 108 : 108 : 0.1
+T: 3 0 : 109 : 237 : 0.9
+T: 3 0 : 109 : 109 : 0.1
+T: 3 0 : 110 : 238 : 0.9
+T: 3 0 : 110 : 110 : 0.1
+T: 3 0 : 111 : 239 : 0.9
+T: 3 0 : 111 : 111 : 0.1
+T: 3 0 : 112 : 240 : 0.09
+T: 3 0 : 112 : 96 : 0.09
+T: 3 0 : 112 : 224 : 0.81
+T: 3 0 : 112 : 112 : 0.01
+T: 3 0 : 113 : 241 : 0.09
+T: 3 0 : 113 : 97 : 0.09
+T: 3 0 : 113 : 225 : 0.81
+T: 3 0 : 113 : 113 : 0.01
+T: 3 0 : 114 : 242 : 0.09
+T: 3 0 : 114 : 98 : 0.09
+T: 3 0 : 114 : 226 : 0.81
+T: 3 0 : 114 : 114 : 0.01
+T: 3 0 : 115 : 243 : 0.09
+T: 3 0 : 115 : 99 : 0.09
+T: 3 0 : 115 : 227 : 0.81
+T: 3 0 : 115 : 115 : 0.01
+T: 3 0 : 116 : 244 : 0.09
+T: 3 0 : 116 : 100 : 0.09
+T: 3 0 : 116 : 228 : 0.81
+T: 3 0 : 116 : 116 : 0.01
+T: 3 0 : 117 : 245 : 0.09
+T: 3 0 : 117 : 101 : 0.09
+T: 3 0 : 117 : 229 : 0.81
+T: 3 0 : 117 : 117 : 0.01
+T: 3 0 : 118 : 246 : 0.09
+T: 3 0 : 118 : 102 : 0.09
+T: 3 0 : 118 : 230 : 0.81
+T: 3 0 : 118 : 118 : 0.01
+T: 3 0 : 119 : 247 : 0.09
+T: 3 0 : 119 : 103 : 0.09
+T: 3 0 : 119 : 231 : 0.81
+T: 3 0 : 119 : 119 : 0.01
+T: 3 0 : 120 : 248 : 0.09
+T: 3 0 : 120 : 104 : 0.09
+T: 3 0 : 120 : 232 : 0.81
+T: 3 0 : 120 : 120 : 0.01
+T: 3 0 : 121 : 249 : 0.09
+T: 3 0 : 121 : 105 : 0.09
+T: 3 0 : 121 : 233 : 0.81
+T: 3 0 : 121 : 121 : 0.01
+T: 3 0 : 122 : 250 : 0.09
+T: 3 0 : 122 : 106 : 0.09
+T: 3 0 : 122 : 234 : 0.81
+T: 3 0 : 122 : 122 : 0.01
+T: 3 0 : 123 : 251 : 0.09
+T: 3 0 : 123 : 107 : 0.09
+T: 3 0 : 123 : 235 : 0.81
+T: 3 0 : 123 : 123 : 0.01
+T: 3 0 : 124 : 252 : 0.09
+T: 3 0 : 124 : 108 : 0.09
+T: 3 0 : 124 : 236 : 0.81
+T: 3 0 : 124 : 124 : 0.01
+T: 3 0 : 125 : 253 : 0.09
+T: 3 0 : 125 : 109 : 0.09
+T: 3 0 : 125 : 237 : 0.81
+T: 3 0 : 125 : 125 : 0.01
+T: 3 0 : 126 : 254 : 0.09
+T: 3 0 : 126 : 110 : 0.09
+T: 3 0 : 126 : 238 : 0.81
+T: 3 0 : 126 : 126 : 0.01
+T: 3 0 : 127 : 255 : 0.09
+T: 3 0 : 127 : 111 : 0.09
+T: 3 0 : 127 : 239 : 0.81
+T: 3 0 : 127 : 127 : 0.01
+T: 3 0 : 128 : 128 : 1
+T: 3 0 : 129 : 129 : 1
+T: 3 0 : 130 : 130 : 1
+T: 3 0 : 131 : 131 : 1
+T: 3 0 : 132 : 132 : 1
+T: 3 0 : 133 : 133 : 1
+T: 3 0 : 134 : 134 : 1
+T: 3 0 : 135 : 135 : 1
+T: 3 0 : 136 : 136 : 1
+T: 3 0 : 137 : 137 : 1
+T: 3 0 : 138 : 138 : 1
+T: 3 0 : 139 : 139 : 1
+T: 3 0 : 140 : 140 : 1
+T: 3 0 : 141 : 141 : 1
+T: 3 0 : 142 : 142 : 1
+T: 3 0 : 143 : 143 : 1
+T: 3 0 : 144 : 144 : 0.1
+T: 3 0 : 144 : 128 : 0.9
+T: 3 0 : 145 : 145 : 0.1
+T: 3 0 : 145 : 129 : 0.9
+T: 3 0 : 146 : 146 : 0.1
+T: 3 0 : 146 : 130 : 0.9
+T: 3 0 : 147 : 147 : 0.1
+T: 3 0 : 147 : 131 : 0.9
+T: 3 0 : 148 : 148 : 0.1
+T: 3 0 : 148 : 132 : 0.9
+T: 3 0 : 149 : 149 : 0.1
+T: 3 0 : 149 : 133 : 0.9
+T: 3 0 : 150 : 150 : 0.1
+T: 3 0 : 150 : 134 : 0.9
+T: 3 0 : 151 : 151 : 0.1
+T: 3 0 : 151 : 135 : 0.9
+T: 3 0 : 152 : 152 : 0.1
+T: 3 0 : 152 : 136 : 0.9
+T: 3 0 : 153 : 153 : 0.1
+T: 3 0 : 153 : 137 : 0.9
+T: 3 0 : 154 : 154 : 0.1
+T: 3 0 : 154 : 138 : 0.9
+T: 3 0 : 155 : 155 : 0.1
+T: 3 0 : 155 : 139 : 0.9
+T: 3 0 : 156 : 156 : 0.1
+T: 3 0 : 156 : 140 : 0.9
+T: 3 0 : 157 : 157 : 0.1
+T: 3 0 : 157 : 141 : 0.9
+T: 3 0 : 158 : 158 : 0.1
+T: 3 0 : 158 : 142 : 0.9
+T: 3 0 : 159 : 159 : 0.1
+T: 3 0 : 159 : 143 : 0.9
+T: 3 0 : 160 : 160 : 1
+T: 3 0 : 161 : 161 : 1
+T: 3 0 : 162 : 162 : 1
+T: 3 0 : 163 : 163 : 1
+T: 3 0 : 164 : 164 : 1
+T: 3 0 : 165 : 165 : 1
+T: 2 5 : 255 : 0 : 1
+T: 2 5 : 254 : 254 : 0.1
+T: 2 5 : 254 : 126 : 0.9
+T: 2 5 : 253 : 253 : 0.1
+T: 2 5 : 253 : 125 : 0.9
+T: 2 5 : 252 : 252 : 0.1
+T: 2 5 : 252 : 124 : 0.9
+T: 2 5 : 251 : 251 : 0.1
+T: 2 5 : 251 : 123 : 0.9
+T: 2 5 : 250 : 250 : 0.1
+T: 2 5 : 250 : 122 : 0.9
+T: 2 5 : 249 : 249 : 0.1
+T: 2 5 : 249 : 121 : 0.9
+T: 2 5 : 248 : 248 : 0.1
+T: 2 5 : 248 : 120 : 0.9
+T: 2 5 : 247 : 0 : 1
+T: 2 5 : 246 : 254 : 0.1
+T: 2 5 : 246 : 126 : 0.9
+T: 2 5 : 245 : 253 : 0.1
+T: 2 5 : 245 : 125 : 0.9
+T: 2 5 : 244 : 252 : 0.1
+T: 2 5 : 244 : 124 : 0.9
+T: 2 5 : 243 : 251 : 0.1
+T: 2 5 : 243 : 123 : 0.9
+T: 2 5 : 242 : 250 : 0.1
+T: 2 5 : 242 : 122 : 0.9
+T: 2 5 : 241 : 249 : 0.1
+T: 2 5 : 241 : 121 : 0.9
+T: 2 5 : 240 : 248 : 0.1
+T: 2 5 : 240 : 120 : 0.9
+T: 2 5 : 239 : 0 : 1
+T: 2 5 : 238 : 238 : 0.1
+T: 2 5 : 238 : 110 : 0.9
+T: 2 5 : 237 : 237 : 0.1
+T: 2 5 : 237 : 109 : 0.9
+T: 2 5 : 236 : 236 : 0.1
+T: 2 5 : 236 : 108 : 0.9
+T: 2 5 : 235 : 0 : 1
+T: 2 5 : 234 : 238 : 0.1
+T: 2 5 : 234 : 110 : 0.9
+T: 2 5 : 233 : 237 : 0.1
+T: 2 5 : 233 : 109 : 0.9
+T: 2 5 : 232 : 236 : 0.1
+T: 2 5 : 232 : 108 : 0.9
+T: 2 5 : 231 : 231 : 0.1
+T: 2 5 : 231 : 103 : 0.9
+T: 2 5 : 230 : 230 : 0.1
+T: 2 5 : 230 : 102 : 0.9
+T: 2 5 : 229 : 229 : 0.1
+T: 2 5 : 229 : 101 : 0.9
+T: 2 5 : 228 : 228 : 0.1
+T: 2 5 : 228 : 100 : 0.9
+T: 2 5 : 227 : 231 : 0.1
+T: 2 5 : 227 : 103 : 0.9
+T: 2 5 : 226 : 230 : 0.1
+T: 2 5 : 226 : 102 : 0.9
+T: 2 5 : 225 : 229 : 0.1
+T: 2 5 : 225 : 101 : 0.9
+T: 2 5 : 224 : 228 : 0.1
+T: 2 5 : 224 : 100 : 0.9
+T: 2 5 : 223 : 0 : 1
+T: 2 5 : 222 : 222 : 0.1
+T: 2 5 : 222 : 94 : 0.9
+T: 2 5 : 221 : 0 : 1
+T: 2 5 : 220 : 222 : 0.1
+T: 2 5 : 220 : 94 : 0.9
+T: 2 5 : 219 : 219 : 0.1
+T: 2 5 : 219 : 91 : 0.9
+T: 2 5 : 218 : 218 : 0.1
+T: 2 5 : 218 : 90 : 0.9
+T: 2 5 : 217 : 219 : 0.1
+T: 2 5 : 217 : 91 : 0.9
+T: 2 5 : 216 : 218 : 0.1
+T: 2 5 : 216 : 90 : 0.9
+T: 2 5 : 215 : 215 : 0.1
+T: 2 5 : 215 : 87 : 0.9
+T: 2 5 : 214 : 214 : 0.1
+T: 2 5 : 214 : 86 : 0.9
+T: 2 5 : 213 : 215 : 0.1
+T: 2 5 : 213 : 87 : 0.9
+T: 2 5 : 212 : 214 : 0.1
+T: 2 5 : 212 : 86 : 0.9
+T: 2 5 : 211 : 211 : 0.1
+T: 2 5 : 211 : 83 : 0.9
+T: 2 5 : 210 : 210 : 0.1
+T: 2 5 : 210 : 82 : 0.9
+T: 2 5 : 209 : 211 : 0.1
+T: 2 5 : 209 : 83 : 0.9
+T: 2 5 : 208 : 210 : 0.1
+T: 2 5 : 208 : 82 : 0.9
+T: 2 5 : 207 : 0 : 1
+T: 2 5 : 206 : 0 : 1
+T: 2 5 : 205 : 205 : 0.1
+T: 2 5 : 205 : 77 : 0.9
+T: 2 5 : 204 : 205 : 0.1
+T: 2 5 : 204 : 77 : 0.9
+T: 2 5 : 203 : 203 : 0.1
+T: 2 5 : 203 : 75 : 0.9
+T: 2 5 : 202 : 203 : 0.1
+T: 2 5 : 202 : 75 : 0.9
+T: 2 5 : 201 : 201 : 0.1
+T: 2 5 : 201 : 73 : 0.9
+T: 2 5 : 200 : 201 : 0.1
+T: 2 5 : 200 : 73 : 0.9
+T: 2 5 : 199 : 199 : 0.1
+T: 2 5 : 199 : 71 : 0.9
+T: 2 5 : 198 : 199 : 0.1
+T: 2 5 : 198 : 71 : 0.9
+T: 2 5 : 197 : 197 : 0.1
+T: 2 5 : 197 : 69 : 0.9
+T: 2 5 : 196 : 197 : 0.1
+T: 2 5 : 196 : 69 : 0.9
+T: 2 5 : 195 : 195 : 0.1
+T: 2 5 : 195 : 67 : 0.9
+T: 2 5 : 194 : 195 : 0.1
+T: 2 5 : 194 : 67 : 0.9
+T: 2 5 : 193 : 193 : 0.1
+T: 2 5 : 193 : 65 : 0.9
+T: 2 5 : 192 : 193 : 0.1
+T: 2 5 : 192 : 65 : 0.9
+T: 2 5 : 191 : 0 : 1
+T: 2 5 : 190 : 190 : 0.1
+T: 2 5 : 190 : 62 : 0.9
+T: 2 5 : 189 : 189 : 0.1
+T: 2 5 : 189 : 61 : 0.9
+T: 2 5 : 188 : 188 : 0.1
+T: 2 5 : 188 : 60 : 0.9
+T: 2 5 : 187 : 187 : 0.1
+T: 2 5 : 187 : 59 : 0.9
+T: 2 5 : 186 : 186 : 0.1
+T: 2 5 : 186 : 58 : 0.9
+T: 2 5 : 185 : 185 : 0.1
+T: 2 5 : 185 : 57 : 0.9
+T: 2 5 : 184 : 184 : 0.1
+T: 2 5 : 184 : 56 : 0.9
+T: 2 5 : 183 : 0 : 1
+T: 2 5 : 182 : 190 : 0.1
+T: 2 5 : 182 : 62 : 0.9
+T: 2 5 : 181 : 189 : 0.1
+T: 2 5 : 181 : 61 : 0.9
+T: 2 5 : 180 : 188 : 0.1
+T: 2 5 : 180 : 60 : 0.9
+T: 2 5 : 179 : 187 : 0.1
+T: 2 5 : 179 : 59 : 0.9
+T: 2 5 : 178 : 186 : 0.1
+T: 2 5 : 178 : 58 : 0.9
+T: 2 5 : 177 : 185 : 0.1
+T: 2 5 : 177 : 57 : 0.9
+T: 2 5 : 176 : 184 : 0.1
+T: 2 5 : 176 : 56 : 0.9
+T: 2 5 : 175 : 0 : 1
+T: 2 5 : 174 : 174 : 0.1
+T: 2 5 : 174 : 46 : 0.9
+T: 2 5 : 173 : 173 : 0.1
+T: 2 5 : 173 : 45 : 0.9
+T: 2 5 : 172 : 172 : 0.1
+T: 2 5 : 172 : 44 : 0.9
+T: 2 5 : 171 : 0 : 1
+T: 2 5 : 170 : 174 : 0.1
+T: 2 5 : 170 : 46 : 0.9
+T: 2 5 : 169 : 173 : 0.1
+T: 2 5 : 169 : 45 : 0.9
+T: 2 5 : 168 : 172 : 0.1
+T: 2 5 : 168 : 44 : 0.9
+T: 2 5 : 167 : 167 : 0.1
+T: 2 5 : 167 : 39 : 0.9
+T: 2 5 : 166 : 166 : 0.1
+T: 2 5 : 166 : 38 : 0.9
+T: 2 5 : 77 : 77 : 1
+T: 2 5 : 76 : 77 : 1
+T: 2 5 : 75 : 75 : 1
+T: 2 5 : 74 : 75 : 1
+T: 2 5 : 73 : 73 : 1
+T: 2 5 : 72 : 73 : 1
+T: 2 5 : 71 : 71 : 1
+T: 2 5 : 70 : 71 : 1
+T: 2 5 : 69 : 69 : 1
+T: 2 5 : 68 : 69 : 1
+T: 2 5 : 67 : 67 : 1
+T: 2 5 : 66 : 67 : 1
+T: 2 5 : 65 : 65 : 1
+T: 2 5 : 64 : 65 : 1
+T: 2 5 : 63 : 0 : 1
+T: 2 5 : 62 : 62 : 1
+T: 2 5 : 61 : 61 : 1
+T: 2 5 : 60 : 60 : 1
+T: 2 5 : 59 : 59 : 1
+T: 2 5 : 58 : 58 : 1
+T: 2 5 : 57 : 57 : 1
+T: 2 5 : 56 : 56 : 1
+T: 2 5 : 55 : 0 : 1
+T: 2 5 : 54 : 62 : 1
+T: 2 5 : 53 : 61 : 1
+T: 2 5 : 52 : 60 : 1
+T: 2 5 : 51 : 59 : 1
+T: 2 5 : 50 : 58 : 1
+T: 2 5 : 49 : 57 : 1
+T: 2 5 : 48 : 56 : 1
+T: 2 5 : 47 : 0 : 1
+T: 2 5 : 46 : 46 : 1
+T: 2 5 : 45 : 45 : 1
+T: 2 5 : 44 : 44 : 1
+T: 2 5 : 43 : 0 : 1
+T: 2 5 : 42 : 46 : 1
+T: 2 5 : 41 : 45 : 1
+T: 2 5 : 40 : 44 : 1
+T: 2 5 : 39 : 39 : 1
+T: 2 5 : 38 : 38 : 1
+T: 2 5 : 37 : 37 : 1
+T: 2 5 : 36 : 36 : 1
+T: 2 5 : 15 : 0 : 1
+T: 2 5 : 14 : 0 : 1
+T: 2 5 : 13 : 13 : 1
+T: 2 5 : 12 : 13 : 1
+T: 2 5 : 11 : 11 : 1
+T: 2 5 : 10 : 11 : 1
+T: 2 5 : 9 : 9 : 1
+T: 2 5 : 8 : 9 : 1
+T: 2 5 : 7 : 7 : 1
+T: 2 5 : 6 : 7 : 1
+T: 2 5 : 1 : 1 : 1
+T: 2 5 : 0 : 1 : 1
+T: 2 5 : 2 : 3 : 1
+T: 2 5 : 3 : 3 : 1
+T: 2 5 : 4 : 5 : 1
+T: 2 5 : 5 : 5 : 1
+T: 2 5 : 16 : 18 : 1
+T: 2 5 : 17 : 19 : 1
+T: 2 5 : 18 : 18 : 1
+T: 2 5 : 19 : 19 : 1
+T: 2 5 : 20 : 22 : 1
+T: 2 5 : 21 : 23 : 1
+T: 2 5 : 22 : 22 : 1
+T: 2 5 : 23 : 23 : 1
+T: 2 5 : 24 : 26 : 1
+T: 2 5 : 25 : 27 : 1
+T: 2 5 : 26 : 26 : 1
+T: 2 5 : 27 : 27 : 1
+T: 2 5 : 28 : 30 : 1
+T: 2 5 : 29 : 0 : 1
+T: 2 5 : 30 : 30 : 1
+T: 2 5 : 31 : 0 : 1
+T: 2 5 : 32 : 36 : 1
+T: 2 5 : 33 : 37 : 1
+T: 2 5 : 34 : 38 : 1
+T: 2 5 : 35 : 39 : 1
+T: 2 5 : 78 : 0 : 1
+T: 2 5 : 79 : 0 : 1
+T: 2 5 : 80 : 82 : 1
+T: 2 5 : 81 : 83 : 1
+T: 2 5 : 82 : 82 : 1
+T: 2 5 : 83 : 83 : 1
+T: 2 5 : 84 : 86 : 1
+T: 2 5 : 85 : 87 : 1
+T: 2 5 : 86 : 86 : 1
+T: 2 5 : 87 : 87 : 1
+T: 2 5 : 88 : 90 : 1
+T: 2 5 : 89 : 91 : 1
+T: 2 5 : 90 : 90 : 1
+T: 2 5 : 91 : 91 : 1
+T: 2 5 : 92 : 94 : 1
+T: 2 5 : 93 : 0 : 1
+T: 2 5 : 94 : 94 : 1
+T: 2 5 : 95 : 0 : 1
+T: 2 5 : 96 : 100 : 1
+T: 2 5 : 97 : 101 : 1
+T: 2 5 : 98 : 102 : 1
+T: 2 5 : 99 : 103 : 1
+T: 2 5 : 100 : 100 : 1
+T: 2 5 : 101 : 101 : 1
+T: 2 5 : 102 : 102 : 1
+T: 2 5 : 103 : 103 : 1
+T: 2 5 : 104 : 108 : 1
+T: 2 5 : 105 : 109 : 1
+T: 2 5 : 106 : 110 : 1
+T: 2 5 : 107 : 0 : 1
+T: 2 5 : 108 : 108 : 1
+T: 2 5 : 109 : 109 : 1
+T: 2 5 : 110 : 110 : 1
+T: 2 5 : 111 : 0 : 1
+T: 2 5 : 112 : 120 : 1
+T: 2 5 : 113 : 121 : 1
+T: 2 5 : 114 : 122 : 1
+T: 2 5 : 115 : 123 : 1
+T: 2 5 : 116 : 124 : 1
+T: 2 5 : 117 : 125 : 1
+T: 2 5 : 118 : 126 : 1
+T: 2 5 : 119 : 0 : 1
+T: 2 5 : 120 : 120 : 1
+T: 2 5 : 121 : 121 : 1
+T: 2 5 : 122 : 122 : 1
+T: 2 5 : 123 : 123 : 1
+T: 2 5 : 124 : 124 : 1
+T: 2 5 : 125 : 125 : 1
+T: 2 5 : 126 : 126 : 1
+T: 2 5 : 127 : 0 : 1
+T: 2 5 : 128 : 129 : 0.1
+T: 2 5 : 128 : 1 : 0.9
+T: 2 5 : 129 : 129 : 0.1
+T: 2 5 : 129 : 1 : 0.9
+T: 2 5 : 130 : 131 : 0.1
+T: 2 5 : 130 : 3 : 0.9
+T: 2 5 : 131 : 131 : 0.1
+T: 2 5 : 131 : 3 : 0.9
+T: 2 5 : 132 : 133 : 0.1
+T: 2 5 : 132 : 5 : 0.9
+T: 2 5 : 133 : 133 : 0.1
+T: 2 5 : 133 : 5 : 0.9
+T: 2 5 : 134 : 135 : 0.1
+T: 2 5 : 134 : 7 : 0.9
+T: 2 5 : 135 : 135 : 0.1
+T: 2 5 : 135 : 7 : 0.9
+T: 2 5 : 136 : 137 : 0.1
+T: 2 5 : 136 : 9 : 0.9
+T: 2 5 : 137 : 137 : 0.1
+T: 2 5 : 137 : 9 : 0.9
+T: 2 5 : 138 : 139 : 0.1
+T: 2 5 : 138 : 11 : 0.9
+T: 2 5 : 139 : 139 : 0.1
+T: 2 5 : 139 : 11 : 0.9
+T: 2 5 : 140 : 141 : 0.1
+T: 2 5 : 140 : 13 : 0.9
+T: 2 5 : 141 : 141 : 0.1
+T: 2 5 : 141 : 13 : 0.9
+T: 2 5 : 142 : 0 : 1
+T: 2 5 : 143 : 0 : 1
+T: 2 5 : 144 : 146 : 0.1
+T: 2 5 : 144 : 18 : 0.9
+T: 2 5 : 145 : 147 : 0.1
+T: 2 5 : 145 : 19 : 0.9
+T: 2 5 : 146 : 146 : 0.1
+T: 2 5 : 146 : 18 : 0.9
+T: 2 5 : 147 : 147 : 0.1
+T: 2 5 : 147 : 19 : 0.9
+T: 2 5 : 148 : 150 : 0.1
+T: 2 5 : 148 : 22 : 0.9
+T: 2 5 : 149 : 151 : 0.1
+T: 2 5 : 149 : 23 : 0.9
+T: 2 5 : 150 : 150 : 0.1
+T: 2 5 : 150 : 22 : 0.9
+T: 2 5 : 151 : 151 : 0.1
+T: 2 5 : 151 : 23 : 0.9
+T: 2 5 : 152 : 154 : 0.1
+T: 2 5 : 152 : 26 : 0.9
+T: 2 5 : 153 : 155 : 0.1
+T: 2 5 : 153 : 27 : 0.9
+T: 2 5 : 154 : 154 : 0.1
+T: 2 5 : 154 : 26 : 0.9
+T: 2 5 : 155 : 155 : 0.1
+T: 2 5 : 155 : 27 : 0.9
+T: 2 5 : 156 : 158 : 0.1
+T: 2 5 : 156 : 30 : 0.9
+T: 2 5 : 157 : 0 : 1
+T: 2 5 : 158 : 158 : 0.1
+T: 2 5 : 158 : 30 : 0.9
+T: 2 5 : 159 : 0 : 1
+T: 2 5 : 160 : 164 : 0.1
+T: 2 5 : 160 : 36 : 0.9
+T: 2 5 : 161 : 165 : 0.1
+T: 2 5 : 161 : 37 : 0.9
+T: 2 5 : 162 : 166 : 0.1
+T: 2 5 : 162 : 38 : 0.9
+T: 2 5 : 163 : 167 : 0.1
+T: 2 5 : 163 : 39 : 0.9
+T: 2 5 : 164 : 164 : 0.1
+T: 2 5 : 164 : 36 : 0.9
+T: 2 5 : 165 : 165 : 0.1
+T: 2 5 : 165 : 37 : 0.9
+T: 2 4 : 255 : 0 : 1
+T: 2 4 : 254 : 254 : 0.1
+T: 2 4 : 254 : 126 : 0.9
+T: 2 4 : 253 : 253 : 0.1
+T: 2 4 : 253 : 125 : 0.9
+T: 2 4 : 252 : 252 : 0.1
+T: 2 4 : 252 : 124 : 0.9
+T: 2 4 : 251 : 251 : 0.1
+T: 2 4 : 251 : 123 : 0.9
+T: 2 4 : 250 : 250 : 0.1
+T: 2 4 : 250 : 122 : 0.9
+T: 2 4 : 249 : 249 : 0.1
+T: 2 4 : 249 : 121 : 0.9
+T: 2 4 : 248 : 248 : 0.1
+T: 2 4 : 248 : 120 : 0.9
+T: 2 4 : 247 : 0 : 1
+T: 2 4 : 246 : 254 : 0.1
+T: 2 4 : 246 : 126 : 0.9
+T: 2 4 : 245 : 253 : 0.1
+T: 2 4 : 245 : 125 : 0.9
+T: 2 4 : 244 : 252 : 0.1
+T: 2 4 : 244 : 124 : 0.9
+T: 2 4 : 243 : 251 : 0.1
+T: 2 4 : 243 : 123 : 0.9
+T: 2 4 : 242 : 250 : 0.1
+T: 2 4 : 242 : 122 : 0.9
+T: 2 4 : 241 : 249 : 0.1
+T: 2 4 : 241 : 121 : 0.9
+T: 2 4 : 240 : 248 : 0.1
+T: 2 4 : 240 : 120 : 0.9
+T: 2 4 : 239 : 0 : 1
+T: 2 4 : 238 : 238 : 0.1
+T: 2 4 : 238 : 110 : 0.9
+T: 2 4 : 237 : 237 : 0.1
+T: 2 4 : 237 : 109 : 0.9
+T: 2 4 : 236 : 236 : 0.1
+T: 2 4 : 236 : 108 : 0.9
+T: 2 4 : 235 : 0 : 1
+T: 2 4 : 234 : 238 : 0.1
+T: 2 4 : 234 : 110 : 0.9
+T: 2 4 : 233 : 237 : 0.1
+T: 2 4 : 233 : 109 : 0.9
+T: 2 4 : 232 : 236 : 0.1
+T: 2 4 : 232 : 108 : 0.9
+T: 2 4 : 231 : 231 : 0.1
+T: 2 4 : 231 : 103 : 0.9
+T: 2 4 : 230 : 230 : 0.1
+T: 2 4 : 230 : 102 : 0.9
+T: 2 4 : 229 : 229 : 0.1
+T: 2 4 : 229 : 101 : 0.9
+T: 2 4 : 228 : 228 : 0.1
+T: 2 4 : 228 : 100 : 0.9
+T: 2 4 : 227 : 231 : 0.1
+T: 2 4 : 227 : 103 : 0.9
+T: 2 4 : 226 : 230 : 0.1
+T: 2 4 : 226 : 102 : 0.9
+T: 2 4 : 225 : 229 : 0.1
+T: 2 4 : 225 : 101 : 0.9
+T: 2 4 : 224 : 228 : 0.1
+T: 2 4 : 224 : 100 : 0.9
+T: 2 4 : 223 : 0 : 1
+T: 2 4 : 222 : 222 : 0.1
+T: 2 4 : 222 : 94 : 0.9
+T: 2 4 : 221 : 0 : 1
+T: 2 4 : 220 : 222 : 0.1
+T: 2 4 : 220 : 94 : 0.9
+T: 2 4 : 219 : 219 : 0.1
+T: 2 4 : 219 : 91 : 0.9
+T: 2 4 : 218 : 218 : 0.1
+T: 2 4 : 218 : 90 : 0.9
+T: 2 4 : 217 : 219 : 0.1
+T: 2 4 : 217 : 91 : 0.9
+T: 2 4 : 216 : 218 : 0.1
+T: 2 4 : 216 : 90 : 0.9
+T: 2 4 : 215 : 215 : 0.1
+T: 2 4 : 215 : 87 : 0.9
+T: 2 4 : 214 : 214 : 0.1
+T: 2 4 : 214 : 86 : 0.9
+T: 2 4 : 213 : 215 : 0.1
+T: 2 4 : 213 : 87 : 0.9
+T: 2 4 : 212 : 214 : 0.1
+T: 2 4 : 212 : 86 : 0.9
+T: 2 4 : 211 : 211 : 0.1
+T: 2 4 : 211 : 83 : 0.9
+T: 2 4 : 210 : 210 : 0.1
+T: 2 4 : 210 : 82 : 0.9
+T: 2 4 : 209 : 211 : 0.1
+T: 2 4 : 209 : 83 : 0.9
+T: 2 4 : 208 : 210 : 0.1
+T: 2 4 : 208 : 82 : 0.9
+T: 2 4 : 207 : 0 : 1
+T: 2 4 : 206 : 0 : 1
+T: 2 4 : 205 : 205 : 0.1
+T: 2 4 : 205 : 77 : 0.9
+T: 2 4 : 204 : 205 : 0.1
+T: 2 4 : 204 : 77 : 0.9
+T: 2 4 : 203 : 203 : 0.1
+T: 2 4 : 203 : 75 : 0.9
+T: 2 4 : 202 : 203 : 0.1
+T: 2 4 : 202 : 75 : 0.9
+T: 2 4 : 201 : 201 : 0.1
+T: 2 4 : 201 : 73 : 0.9
+T: 2 4 : 200 : 201 : 0.1
+T: 2 4 : 200 : 73 : 0.9
+T: 2 4 : 199 : 199 : 0.1
+T: 2 4 : 199 : 71 : 0.9
+T: 2 4 : 198 : 199 : 0.1
+T: 2 4 : 198 : 71 : 0.9
+T: 2 4 : 197 : 197 : 0.1
+T: 2 4 : 197 : 69 : 0.9
+T: 2 4 : 196 : 197 : 0.1
+T: 2 4 : 196 : 69 : 0.9
+T: 2 4 : 195 : 195 : 0.1
+T: 2 4 : 195 : 67 : 0.9
+T: 2 4 : 194 : 195 : 0.1
+T: 2 4 : 194 : 67 : 0.9
+T: 2 4 : 193 : 193 : 0.1
+T: 2 4 : 193 : 65 : 0.9
+T: 2 4 : 192 : 193 : 0.1
+T: 2 4 : 192 : 65 : 0.9
+T: 2 4 : 191 : 0 : 1
+T: 2 4 : 190 : 190 : 0.1
+T: 2 4 : 190 : 62 : 0.9
+T: 2 4 : 189 : 189 : 0.1
+T: 2 4 : 189 : 61 : 0.9
+T: 2 4 : 188 : 188 : 0.1
+T: 2 4 : 188 : 60 : 0.9
+T: 2 4 : 187 : 187 : 0.1
+T: 2 4 : 187 : 59 : 0.9
+T: 2 4 : 186 : 186 : 0.1
+T: 2 4 : 186 : 58 : 0.9
+T: 2 4 : 185 : 185 : 0.1
+T: 2 4 : 185 : 57 : 0.9
+T: 2 4 : 184 : 184 : 0.1
+T: 2 4 : 184 : 56 : 0.9
+T: 2 4 : 183 : 0 : 1
+T: 2 4 : 182 : 190 : 0.1
+T: 2 4 : 182 : 62 : 0.9
+T: 2 4 : 181 : 189 : 0.1
+T: 2 4 : 181 : 61 : 0.9
+T: 2 4 : 180 : 188 : 0.1
+T: 2 4 : 180 : 60 : 0.9
+T: 2 4 : 179 : 187 : 0.1
+T: 2 4 : 179 : 59 : 0.9
+T: 2 4 : 178 : 186 : 0.1
+T: 2 4 : 178 : 58 : 0.9
+T: 2 4 : 177 : 185 : 0.1
+T: 2 4 : 177 : 57 : 0.9
+T: 2 4 : 176 : 184 : 0.1
+T: 2 4 : 176 : 56 : 0.9
+T: 2 4 : 175 : 0 : 1
+T: 2 4 : 174 : 174 : 0.1
+T: 2 4 : 174 : 46 : 0.9
+T: 2 4 : 173 : 173 : 0.1
+T: 2 4 : 173 : 45 : 0.9
+T: 2 4 : 172 : 172 : 0.1
+T: 2 4 : 172 : 44 : 0.9
+T: 2 4 : 171 : 0 : 1
+T: 2 4 : 170 : 174 : 0.1
+T: 2 4 : 170 : 46 : 0.9
+T: 2 4 : 169 : 173 : 0.1
+T: 2 4 : 169 : 45 : 0.9
+T: 2 4 : 168 : 172 : 0.1
+T: 2 4 : 168 : 44 : 0.9
+T: 2 4 : 167 : 167 : 0.1
+T: 2 4 : 167 : 39 : 0.9
+T: 2 4 : 166 : 166 : 0.1
+T: 2 4 : 166 : 38 : 0.9
+T: 2 4 : 77 : 77 : 1
+T: 2 4 : 76 : 77 : 1
+T: 2 4 : 75 : 75 : 1
+T: 2 4 : 74 : 75 : 1
+T: 2 4 : 73 : 73 : 1
+T: 2 4 : 72 : 73 : 1
+T: 2 4 : 71 : 71 : 1
+T: 2 4 : 70 : 71 : 1
+T: 2 4 : 69 : 69 : 1
+T: 2 4 : 68 : 69 : 1
+T: 2 4 : 67 : 67 : 1
+T: 2 4 : 66 : 67 : 1
+T: 2 4 : 65 : 65 : 1
+T: 2 4 : 64 : 65 : 1
+T: 2 4 : 63 : 0 : 1
+T: 2 4 : 62 : 62 : 1
+T: 2 4 : 61 : 61 : 1
+T: 2 4 : 60 : 60 : 1
+T: 2 4 : 59 : 59 : 1
+T: 2 4 : 58 : 58 : 1
+T: 2 4 : 57 : 57 : 1
+T: 2 4 : 56 : 56 : 1
+T: 2 4 : 55 : 0 : 1
+T: 2 4 : 54 : 62 : 1
+T: 2 4 : 53 : 61 : 1
+T: 2 4 : 52 : 60 : 1
+T: 2 4 : 51 : 59 : 1
+T: 2 4 : 50 : 58 : 1
+T: 2 4 : 49 : 57 : 1
+T: 2 4 : 48 : 56 : 1
+T: 2 4 : 47 : 0 : 1
+T: 2 4 : 46 : 46 : 1
+T: 2 4 : 45 : 45 : 1
+T: 2 4 : 44 : 44 : 1
+T: 2 4 : 43 : 0 : 1
+T: 2 4 : 42 : 46 : 1
+T: 2 4 : 41 : 45 : 1
+T: 2 4 : 40 : 44 : 1
+T: 2 4 : 39 : 39 : 1
+T: 2 4 : 38 : 38 : 1
+T: 2 4 : 37 : 37 : 1
+T: 2 4 : 36 : 36 : 1
+T: 2 4 : 15 : 0 : 1
+T: 2 4 : 14 : 0 : 1
+T: 2 4 : 13 : 13 : 1
+T: 2 4 : 12 : 13 : 1
+T: 2 4 : 11 : 11 : 1
+T: 2 4 : 10 : 11 : 1
+T: 2 4 : 9 : 9 : 1
+T: 2 4 : 8 : 9 : 1
+T: 2 4 : 7 : 7 : 1
+T: 2 4 : 6 : 7 : 1
+T: 2 4 : 1 : 1 : 1
+T: 2 4 : 0 : 1 : 1
+T: 2 4 : 2 : 3 : 1
+T: 2 4 : 3 : 3 : 1
+T: 2 4 : 4 : 5 : 1
+T: 2 4 : 5 : 5 : 1
+T: 2 4 : 16 : 18 : 1
+T: 2 4 : 17 : 19 : 1
+T: 2 4 : 18 : 18 : 1
+T: 2 4 : 19 : 19 : 1
+T: 2 4 : 20 : 22 : 1
+T: 2 4 : 21 : 23 : 1
+T: 2 4 : 22 : 22 : 1
+T: 2 4 : 23 : 23 : 1
+T: 2 4 : 24 : 26 : 1
+T: 2 4 : 25 : 27 : 1
+T: 2 4 : 26 : 26 : 1
+T: 2 4 : 27 : 27 : 1
+T: 2 4 : 28 : 30 : 1
+T: 2 4 : 29 : 0 : 1
+T: 2 4 : 30 : 30 : 1
+T: 2 4 : 31 : 0 : 1
+T: 2 4 : 32 : 36 : 1
+T: 2 4 : 33 : 37 : 1
+T: 2 4 : 34 : 38 : 1
+T: 2 4 : 35 : 39 : 1
+T: 2 4 : 78 : 0 : 1
+T: 2 4 : 79 : 0 : 1
+T: 2 4 : 80 : 82 : 1
+T: 2 4 : 81 : 83 : 1
+T: 2 4 : 82 : 82 : 1
+T: 2 4 : 83 : 83 : 1
+T: 2 4 : 84 : 86 : 1
+T: 2 4 : 85 : 87 : 1
+T: 2 4 : 86 : 86 : 1
+T: 2 4 : 87 : 87 : 1
+T: 2 4 : 88 : 90 : 1
+T: 2 4 : 89 : 91 : 1
+T: 2 4 : 90 : 90 : 1
+T: 2 4 : 91 : 91 : 1
+T: 2 4 : 92 : 94 : 1
+T: 2 4 : 93 : 0 : 1
+T: 2 4 : 94 : 94 : 1
+T: 2 4 : 95 : 0 : 1
+T: 2 4 : 96 : 100 : 1
+T: 2 4 : 97 : 101 : 1
+T: 2 4 : 98 : 102 : 1
+T: 2 4 : 99 : 103 : 1
+T: 2 4 : 100 : 100 : 1
+T: 2 4 : 101 : 101 : 1
+T: 2 4 : 102 : 102 : 1
+T: 2 4 : 103 : 103 : 1
+T: 2 4 : 104 : 108 : 1
+T: 2 4 : 105 : 109 : 1
+T: 2 4 : 106 : 110 : 1
+T: 2 4 : 107 : 0 : 1
+T: 2 4 : 108 : 108 : 1
+T: 2 4 : 109 : 109 : 1
+T: 2 4 : 110 : 110 : 1
+T: 2 4 : 111 : 0 : 1
+T: 2 4 : 112 : 120 : 1
+T: 2 4 : 113 : 121 : 1
+T: 2 4 : 114 : 122 : 1
+T: 2 4 : 115 : 123 : 1
+T: 2 4 : 116 : 124 : 1
+T: 2 4 : 117 : 125 : 1
+T: 2 4 : 118 : 126 : 1
+T: 2 4 : 119 : 0 : 1
+T: 2 4 : 120 : 120 : 1
+T: 2 4 : 121 : 121 : 1
+T: 2 4 : 122 : 122 : 1
+T: 2 4 : 123 : 123 : 1
+T: 2 4 : 124 : 124 : 1
+T: 2 4 : 125 : 125 : 1
+T: 2 4 : 126 : 126 : 1
+T: 2 4 : 127 : 0 : 1
+T: 2 4 : 128 : 129 : 0.1
+T: 2 4 : 128 : 1 : 0.9
+T: 2 4 : 129 : 129 : 0.1
+T: 2 4 : 129 : 1 : 0.9
+T: 2 4 : 130 : 131 : 0.1
+T: 2 4 : 130 : 3 : 0.9
+T: 2 4 : 131 : 131 : 0.1
+T: 2 4 : 131 : 3 : 0.9
+T: 2 4 : 132 : 133 : 0.1
+T: 2 4 : 132 : 5 : 0.9
+T: 2 4 : 133 : 133 : 0.1
+T: 2 4 : 133 : 5 : 0.9
+T: 2 4 : 134 : 135 : 0.1
+T: 2 4 : 134 : 7 : 0.9
+T: 2 4 : 135 : 135 : 0.1
+T: 2 4 : 135 : 7 : 0.9
+T: 2 4 : 136 : 137 : 0.1
+T: 2 4 : 136 : 9 : 0.9
+T: 2 4 : 137 : 137 : 0.1
+T: 2 4 : 137 : 9 : 0.9
+T: 2 4 : 138 : 139 : 0.1
+T: 2 4 : 138 : 11 : 0.9
+T: 2 4 : 139 : 139 : 0.1
+T: 2 4 : 139 : 11 : 0.9
+T: 2 4 : 140 : 141 : 0.1
+T: 2 4 : 140 : 13 : 0.9
+T: 2 4 : 141 : 141 : 0.1
+T: 2 4 : 141 : 13 : 0.9
+T: 2 4 : 142 : 0 : 1
+T: 2 4 : 143 : 0 : 1
+T: 2 4 : 144 : 146 : 0.1
+T: 2 4 : 144 : 18 : 0.9
+T: 2 4 : 145 : 147 : 0.1
+T: 2 4 : 145 : 19 : 0.9
+T: 2 4 : 146 : 146 : 0.1
+T: 2 4 : 146 : 18 : 0.9
+T: 2 4 : 147 : 147 : 0.1
+T: 2 4 : 147 : 19 : 0.9
+T: 2 4 : 148 : 150 : 0.1
+T: 2 4 : 148 : 22 : 0.9
+T: 2 4 : 149 : 151 : 0.1
+T: 2 4 : 149 : 23 : 0.9
+T: 2 4 : 150 : 150 : 0.1
+T: 2 4 : 150 : 22 : 0.9
+T: 2 4 : 151 : 151 : 0.1
+T: 2 4 : 151 : 23 : 0.9
+T: 2 4 : 152 : 154 : 0.1
+T: 2 4 : 152 : 26 : 0.9
+T: 2 4 : 153 : 155 : 0.1
+T: 2 4 : 153 : 27 : 0.9
+T: 2 4 : 154 : 154 : 0.1
+T: 2 4 : 154 : 26 : 0.9
+T: 2 4 : 155 : 155 : 0.1
+T: 2 4 : 155 : 27 : 0.9
+T: 2 4 : 156 : 158 : 0.1
+T: 2 4 : 156 : 30 : 0.9
+T: 2 4 : 157 : 0 : 1
+T: 2 4 : 158 : 158 : 0.1
+T: 2 4 : 158 : 30 : 0.9
+T: 2 4 : 159 : 0 : 1
+T: 2 4 : 160 : 164 : 0.1
+T: 2 4 : 160 : 36 : 0.9
+T: 2 4 : 161 : 165 : 0.1
+T: 2 4 : 161 : 37 : 0.9
+T: 2 4 : 162 : 166 : 0.1
+T: 2 4 : 162 : 38 : 0.9
+T: 2 4 : 163 : 167 : 0.1
+T: 2 4 : 163 : 39 : 0.9
+T: 2 4 : 164 : 164 : 0.1
+T: 2 4 : 164 : 36 : 0.9
+T: 2 4 : 165 : 165 : 0.1
+T: 2 4 : 165 : 37 : 0.9
+T: 0 5 : 255 : 0 : 1
+T: 0 5 : 254 : 254 : 0.1
+T: 0 5 : 254 : 190 : 0.9
+T: 0 5 : 253 : 253 : 0.1
+T: 0 5 : 253 : 189 : 0.9
+T: 0 5 : 252 : 252 : 0.1
+T: 0 5 : 252 : 188 : 0.9
+T: 0 5 : 251 : 251 : 0.1
+T: 0 5 : 251 : 187 : 0.9
+T: 0 5 : 250 : 250 : 0.1
+T: 0 5 : 250 : 186 : 0.9
+T: 0 5 : 249 : 249 : 0.1
+T: 0 5 : 249 : 185 : 0.9
+T: 0 5 : 248 : 248 : 0.1
+T: 0 5 : 248 : 184 : 0.9
+T: 0 5 : 247 : 0 : 1
+T: 0 5 : 246 : 254 : 0.1
+T: 0 5 : 246 : 190 : 0.9
+T: 0 5 : 245 : 253 : 0.1
+T: 0 5 : 245 : 189 : 0.9
+T: 0 5 : 244 : 252 : 0.1
+T: 0 5 : 244 : 188 : 0.9
+T: 0 5 : 243 : 251 : 0.1
+T: 0 5 : 243 : 187 : 0.9
+T: 0 5 : 242 : 250 : 0.1
+T: 0 5 : 242 : 186 : 0.9
+T: 0 5 : 241 : 249 : 0.1
+T: 0 5 : 241 : 185 : 0.9
+T: 0 5 : 240 : 248 : 0.1
+T: 0 5 : 240 : 184 : 0.9
+T: 0 5 : 239 : 0 : 1
+T: 0 5 : 238 : 238 : 0.1
+T: 0 5 : 238 : 174 : 0.9
+T: 0 5 : 237 : 237 : 0.1
+T: 0 5 : 237 : 173 : 0.9
+T: 0 5 : 236 : 236 : 0.1
+T: 0 5 : 236 : 172 : 0.9
+T: 0 5 : 235 : 0 : 1
+T: 0 5 : 234 : 238 : 0.1
+T: 0 5 : 234 : 174 : 0.9
+T: 0 5 : 233 : 237 : 0.1
+T: 0 5 : 233 : 173 : 0.9
+T: 0 5 : 232 : 236 : 0.1
+T: 0 5 : 232 : 172 : 0.9
+T: 0 5 : 231 : 231 : 0.1
+T: 0 5 : 231 : 167 : 0.9
+T: 0 5 : 230 : 230 : 0.1
+T: 0 5 : 230 : 166 : 0.9
+T: 0 5 : 229 : 229 : 0.1
+T: 0 5 : 229 : 165 : 0.9
+T: 0 5 : 228 : 228 : 0.1
+T: 0 5 : 228 : 164 : 0.9
+T: 0 5 : 227 : 231 : 0.1
+T: 0 5 : 227 : 167 : 0.9
+T: 0 5 : 226 : 230 : 0.1
+T: 0 5 : 226 : 166 : 0.9
+T: 0 5 : 225 : 229 : 0.1
+T: 0 5 : 225 : 165 : 0.9
+T: 0 5 : 224 : 228 : 0.1
+T: 0 5 : 224 : 164 : 0.9
+T: 0 5 : 223 : 0 : 1
+T: 0 5 : 222 : 222 : 0.1
+T: 0 5 : 222 : 158 : 0.9
+T: 0 5 : 221 : 0 : 1
+T: 0 5 : 220 : 222 : 0.1
+T: 0 5 : 220 : 158 : 0.9
+T: 0 5 : 219 : 219 : 0.1
+T: 0 5 : 219 : 155 : 0.9
+T: 0 5 : 218 : 218 : 0.1
+T: 0 5 : 218 : 154 : 0.9
+T: 0 5 : 217 : 219 : 0.1
+T: 0 5 : 217 : 155 : 0.9
+T: 0 5 : 216 : 218 : 0.1
+T: 0 5 : 216 : 154 : 0.9
+T: 0 5 : 215 : 215 : 0.1
+T: 0 5 : 215 : 151 : 0.9
+T: 0 5 : 214 : 214 : 0.1
+T: 0 5 : 214 : 150 : 0.9
+T: 0 5 : 213 : 215 : 0.1
+T: 0 5 : 213 : 151 : 0.9
+T: 0 5 : 212 : 214 : 0.1
+T: 0 5 : 212 : 150 : 0.9
+T: 0 5 : 211 : 211 : 0.1
+T: 0 5 : 211 : 147 : 0.9
+T: 0 5 : 210 : 210 : 0.1
+T: 0 5 : 210 : 146 : 0.9
+T: 0 5 : 209 : 211 : 0.1
+T: 0 5 : 209 : 147 : 0.9
+T: 0 5 : 208 : 210 : 0.1
+T: 0 5 : 208 : 146 : 0.9
+T: 0 5 : 207 : 0 : 1
+T: 0 5 : 206 : 0 : 1
+T: 0 5 : 205 : 205 : 0.1
+T: 0 5 : 205 : 141 : 0.9
+T: 0 5 : 204 : 205 : 0.1
+T: 0 5 : 204 : 141 : 0.9
+T: 0 5 : 203 : 203 : 0.1
+T: 0 5 : 203 : 139 : 0.9
+T: 0 5 : 202 : 203 : 0.1
+T: 0 5 : 202 : 139 : 0.9
+T: 0 5 : 201 : 201 : 0.1
+T: 0 5 : 201 : 137 : 0.9
+T: 0 5 : 200 : 201 : 0.1
+T: 0 5 : 200 : 137 : 0.9
+T: 0 5 : 199 : 199 : 0.1
+T: 0 5 : 199 : 135 : 0.9
+T: 0 5 : 198 : 199 : 0.1
+T: 0 5 : 198 : 135 : 0.9
+T: 0 5 : 197 : 197 : 0.1
+T: 0 5 : 197 : 133 : 0.9
+T: 0 5 : 196 : 197 : 0.1
+T: 0 5 : 196 : 133 : 0.9
+T: 0 5 : 195 : 195 : 0.1
+T: 0 5 : 195 : 131 : 0.9
+T: 0 5 : 194 : 195 : 0.1
+T: 0 5 : 194 : 131 : 0.9
+T: 0 5 : 193 : 193 : 0.1
+T: 0 5 : 193 : 129 : 0.9
+T: 0 5 : 192 : 193 : 0.1
+T: 0 5 : 192 : 129 : 0.9
+T: 0 5 : 191 : 0 : 1
+T: 0 5 : 190 : 190 : 1
+T: 0 5 : 189 : 189 : 1
+T: 0 5 : 188 : 188 : 1
+T: 0 5 : 187 : 187 : 1
+T: 0 5 : 186 : 186 : 1
+T: 0 5 : 185 : 185 : 1
+T: 0 5 : 184 : 184 : 1
+T: 0 5 : 183 : 0 : 1
+T: 0 5 : 182 : 190 : 1
+T: 0 5 : 181 : 189 : 1
+T: 0 5 : 180 : 188 : 1
+T: 0 5 : 179 : 187 : 1
+T: 0 5 : 178 : 186 : 1
+T: 0 5 : 177 : 185 : 1
+T: 0 5 : 176 : 184 : 1
+T: 0 5 : 175 : 0 : 1
+T: 0 5 : 174 : 174 : 1
+T: 0 5 : 173 : 173 : 1
+T: 0 5 : 172 : 172 : 1
+T: 0 5 : 171 : 0 : 1
+T: 0 5 : 170 : 174 : 1
+T: 0 5 : 169 : 173 : 1
+T: 0 5 : 168 : 172 : 1
+T: 0 5 : 167 : 167 : 1
+T: 0 5 : 166 : 166 : 1
+T: 0 5 : 77 : 77 : 0.1
+T: 0 5 : 77 : 13 : 0.9
+T: 0 5 : 76 : 77 : 0.1
+T: 0 5 : 76 : 13 : 0.9
+T: 0 5 : 75 : 75 : 0.1
+T: 0 5 : 75 : 11 : 0.9
+T: 0 5 : 74 : 75 : 0.1
+T: 0 5 : 74 : 11 : 0.9
+T: 0 5 : 73 : 73 : 0.1
+T: 0 5 : 73 : 9 : 0.9
+T: 0 5 : 72 : 73 : 0.1
+T: 0 5 : 72 : 9 : 0.9
+T: 0 5 : 71 : 71 : 0.1
+T: 0 5 : 71 : 7 : 0.9
+T: 0 5 : 70 : 71 : 0.1
+T: 0 5 : 70 : 7 : 0.9
+T: 0 5 : 69 : 69 : 0.1
+T: 0 5 : 69 : 5 : 0.9
+T: 0 5 : 68 : 69 : 0.1
+T: 0 5 : 68 : 5 : 0.9
+T: 0 5 : 67 : 67 : 0.1
+T: 0 5 : 67 : 3 : 0.9
+T: 0 5 : 66 : 67 : 0.1
+T: 0 5 : 66 : 3 : 0.9
+T: 0 5 : 65 : 65 : 0.1
+T: 0 5 : 65 : 1 : 0.9
+T: 0 5 : 64 : 65 : 0.1
+T: 0 5 : 64 : 1 : 0.9
+T: 0 5 : 63 : 0 : 1
+T: 0 5 : 62 : 62 : 1
+T: 0 5 : 61 : 61 : 1
+T: 0 5 : 60 : 60 : 1
+T: 0 5 : 59 : 59 : 1
+T: 0 5 : 58 : 58 : 1
+T: 0 5 : 57 : 57 : 1
+T: 0 5 : 56 : 56 : 1
+T: 0 5 : 55 : 0 : 1
+T: 0 5 : 54 : 62 : 1
+T: 0 5 : 53 : 61 : 1
+T: 0 5 : 52 : 60 : 1
+T: 0 5 : 51 : 59 : 1
+T: 0 5 : 50 : 58 : 1
+T: 0 5 : 49 : 57 : 1
+T: 0 5 : 48 : 56 : 1
+T: 0 5 : 47 : 0 : 1
+T: 0 5 : 46 : 46 : 1
+T: 0 5 : 45 : 45 : 1
+T: 0 5 : 44 : 44 : 1
+T: 0 5 : 43 : 0 : 1
+T: 0 5 : 42 : 46 : 1
+T: 0 5 : 41 : 45 : 1
+T: 0 5 : 40 : 44 : 1
+T: 0 5 : 39 : 39 : 1
+T: 0 5 : 38 : 38 : 1
+T: 0 5 : 37 : 37 : 1
+T: 0 5 : 36 : 36 : 1
+T: 0 5 : 15 : 0 : 1
+T: 0 5 : 14 : 0 : 1
+T: 0 5 : 13 : 13 : 1
+T: 0 5 : 12 : 13 : 1
+T: 0 5 : 11 : 11 : 1
+T: 0 5 : 10 : 11 : 1
+T: 0 5 : 9 : 9 : 1
+T: 0 5 : 8 : 9 : 1
+T: 0 5 : 7 : 7 : 1
+T: 0 5 : 6 : 7 : 1
+T: 0 5 : 1 : 1 : 1
+T: 0 5 : 0 : 1 : 1
+T: 0 5 : 2 : 3 : 1
+T: 0 5 : 3 : 3 : 1
+T: 0 5 : 4 : 5 : 1
+T: 0 5 : 5 : 5 : 1
+T: 0 5 : 16 : 18 : 1
+T: 0 5 : 17 : 19 : 1
+T: 0 5 : 18 : 18 : 1
+T: 0 5 : 19 : 19 : 1
+T: 0 5 : 20 : 22 : 1
+T: 0 5 : 21 : 23 : 1
+T: 0 5 : 22 : 22 : 1
+T: 0 5 : 23 : 23 : 1
+T: 0 5 : 24 : 26 : 1
+T: 0 5 : 25 : 27 : 1
+T: 0 5 : 26 : 26 : 1
+T: 0 5 : 27 : 27 : 1
+T: 0 5 : 28 : 30 : 1
+T: 0 5 : 29 : 0 : 1
+T: 0 5 : 30 : 30 : 1
+T: 0 5 : 31 : 0 : 1
+T: 0 5 : 32 : 36 : 1
+T: 0 5 : 33 : 37 : 1
+T: 0 5 : 34 : 38 : 1
+T: 0 5 : 35 : 39 : 1
+T: 0 5 : 78 : 0 : 1
+T: 0 5 : 79 : 0 : 1
+T: 0 5 : 80 : 82 : 0.1
+T: 0 5 : 80 : 18 : 0.9
+T: 0 5 : 81 : 83 : 0.1
+T: 0 5 : 81 : 19 : 0.9
+T: 0 5 : 82 : 82 : 0.1
+T: 0 5 : 82 : 18 : 0.9
+T: 0 5 : 83 : 83 : 0.1
+T: 0 5 : 83 : 19 : 0.9
+T: 0 5 : 84 : 86 : 0.1
+T: 0 5 : 84 : 22 : 0.9
+T: 0 5 : 85 : 87 : 0.1
+T: 0 5 : 85 : 23 : 0.9
+T: 0 5 : 86 : 86 : 0.1
+T: 0 5 : 86 : 22 : 0.9
+T: 0 5 : 87 : 87 : 0.1
+T: 0 5 : 87 : 23 : 0.9
+T: 0 5 : 88 : 90 : 0.1
+T: 0 5 : 88 : 26 : 0.9
+T: 0 5 : 89 : 91 : 0.1
+T: 0 5 : 89 : 27 : 0.9
+T: 0 5 : 90 : 90 : 0.1
+T: 0 5 : 90 : 26 : 0.9
+T: 0 5 : 91 : 91 : 0.1
+T: 0 5 : 91 : 27 : 0.9
+T: 0 5 : 92 : 94 : 0.1
+T: 0 5 : 92 : 30 : 0.9
+T: 0 5 : 93 : 0 : 1
+T: 0 5 : 94 : 94 : 0.1
+T: 0 5 : 94 : 30 : 0.9
+T: 0 5 : 95 : 0 : 1
+T: 0 5 : 96 : 100 : 0.1
+T: 0 5 : 96 : 36 : 0.9
+T: 0 5 : 97 : 101 : 0.1
+T: 0 5 : 97 : 37 : 0.9
+T: 0 5 : 98 : 102 : 0.1
+T: 0 5 : 98 : 38 : 0.9
+T: 0 5 : 99 : 103 : 0.1
+T: 0 5 : 99 : 39 : 0.9
+T: 0 5 : 100 : 100 : 0.1
+T: 0 5 : 100 : 36 : 0.9
+T: 0 5 : 101 : 101 : 0.1
+T: 0 5 : 101 : 37 : 0.9
+T: 0 5 : 102 : 102 : 0.1
+T: 0 5 : 102 : 38 : 0.9
+T: 0 5 : 103 : 103 : 0.1
+T: 0 5 : 103 : 39 : 0.9
+T: 0 5 : 104 : 108 : 0.1
+T: 0 5 : 104 : 44 : 0.9
+T: 0 5 : 105 : 109 : 0.1
+T: 0 5 : 105 : 45 : 0.9
+T: 0 5 : 106 : 110 : 0.1
+T: 0 5 : 106 : 46 : 0.9
+T: 0 5 : 107 : 0 : 1
+T: 0 5 : 108 : 108 : 0.1
+T: 0 5 : 108 : 44 : 0.9
+T: 0 5 : 109 : 109 : 0.1
+T: 0 5 : 109 : 45 : 0.9
+T: 0 5 : 110 : 110 : 0.1
+T: 0 5 : 110 : 46 : 0.9
+T: 0 5 : 111 : 0 : 1
+T: 0 5 : 112 : 120 : 0.1
+T: 0 5 : 112 : 56 : 0.9
+T: 0 5 : 113 : 121 : 0.1
+T: 0 5 : 113 : 57 : 0.9
+T: 0 5 : 114 : 122 : 0.1
+T: 0 5 : 114 : 58 : 0.9
+T: 0 5 : 115 : 123 : 0.1
+T: 0 5 : 115 : 59 : 0.9
+T: 0 5 : 116 : 124 : 0.1
+T: 0 5 : 116 : 60 : 0.9
+T: 0 5 : 117 : 125 : 0.1
+T: 0 5 : 117 : 61 : 0.9
+T: 0 5 : 118 : 126 : 0.1
+T: 0 5 : 118 : 62 : 0.9
+T: 0 5 : 119 : 0 : 1
+T: 0 5 : 120 : 120 : 0.1
+T: 0 5 : 120 : 56 : 0.9
+T: 0 5 : 121 : 121 : 0.1
+T: 0 5 : 121 : 57 : 0.9
+T: 0 5 : 122 : 122 : 0.1
+T: 0 5 : 122 : 58 : 0.9
+T: 0 5 : 123 : 123 : 0.1
+T: 0 5 : 123 : 59 : 0.9
+T: 0 5 : 124 : 124 : 0.1
+T: 0 5 : 124 : 60 : 0.9
+T: 0 5 : 125 : 125 : 0.1
+T: 0 5 : 125 : 61 : 0.9
+T: 0 5 : 126 : 126 : 0.1
+T: 0 5 : 126 : 62 : 0.9
+T: 0 5 : 127 : 0 : 1
+T: 0 5 : 128 : 129 : 1
+T: 0 5 : 129 : 129 : 1
+T: 0 5 : 130 : 131 : 1
+T: 0 5 : 131 : 131 : 1
+T: 0 5 : 132 : 133 : 1
+T: 0 5 : 133 : 133 : 1
+T: 0 5 : 134 : 135 : 1
+T: 0 5 : 135 : 135 : 1
+T: 0 5 : 136 : 137 : 1
+T: 0 5 : 137 : 137 : 1
+T: 0 5 : 138 : 139 : 1
+T: 0 5 : 139 : 139 : 1
+T: 0 5 : 140 : 141 : 1
+T: 0 5 : 141 : 141 : 1
+T: 0 5 : 142 : 0 : 1
+T: 0 5 : 143 : 0 : 1
+T: 0 5 : 144 : 146 : 1
+T: 0 5 : 145 : 147 : 1
+T: 0 5 : 146 : 146 : 1
+T: 0 5 : 147 : 147 : 1
+T: 0 5 : 148 : 150 : 1
+T: 0 5 : 149 : 151 : 1
+T: 0 5 : 150 : 150 : 1
+T: 0 5 : 151 : 151 : 1
+T: 0 5 : 152 : 154 : 1
+T: 0 5 : 153 : 155 : 1
+T: 0 5 : 154 : 154 : 1
+T: 0 5 : 155 : 155 : 1
+T: 0 5 : 156 : 158 : 1
+T: 0 5 : 157 : 0 : 1
+T: 0 5 : 158 : 158 : 1
+T: 0 5 : 159 : 0 : 1
+T: 0 5 : 160 : 164 : 1
+T: 0 5 : 161 : 165 : 1
+T: 0 5 : 162 : 166 : 1
+T: 0 5 : 163 : 167 : 1
+T: 0 5 : 164 : 164 : 1
+T: 0 5 : 165 : 165 : 1
+T: 0 4 : 255 : 0 : 1
+T: 0 4 : 254 : 254 : 0.1
+T: 0 4 : 254 : 190 : 0.9
+T: 0 4 : 253 : 253 : 0.1
+T: 0 4 : 253 : 189 : 0.9
+T: 0 4 : 252 : 252 : 0.1
+T: 0 4 : 252 : 188 : 0.9
+T: 0 4 : 251 : 251 : 0.1
+T: 0 4 : 251 : 187 : 0.9
+T: 0 4 : 250 : 250 : 0.1
+T: 0 4 : 250 : 186 : 0.9
+T: 0 4 : 249 : 249 : 0.1
+T: 0 4 : 249 : 185 : 0.9
+T: 0 4 : 248 : 248 : 0.1
+T: 0 4 : 248 : 184 : 0.9
+T: 0 4 : 247 : 0 : 1
+T: 0 4 : 246 : 254 : 0.1
+T: 0 4 : 246 : 190 : 0.9
+T: 0 4 : 245 : 253 : 0.1
+T: 0 4 : 245 : 189 : 0.9
+T: 0 4 : 244 : 252 : 0.1
+T: 0 4 : 244 : 188 : 0.9
+T: 0 4 : 243 : 251 : 0.1
+T: 0 4 : 243 : 187 : 0.9
+T: 0 4 : 242 : 250 : 0.1
+T: 0 4 : 242 : 186 : 0.9
+T: 0 4 : 241 : 249 : 0.1
+T: 0 4 : 241 : 185 : 0.9
+T: 0 4 : 240 : 248 : 0.1
+T: 0 4 : 240 : 184 : 0.9
+T: 0 4 : 239 : 0 : 1
+T: 0 4 : 238 : 238 : 0.1
+T: 0 4 : 238 : 174 : 0.9
+T: 0 4 : 237 : 237 : 0.1
+T: 0 4 : 237 : 173 : 0.9
+T: 0 4 : 236 : 236 : 0.1
+T: 0 4 : 236 : 172 : 0.9
+T: 0 4 : 235 : 0 : 1
+T: 0 4 : 234 : 238 : 0.1
+T: 0 4 : 234 : 174 : 0.9
+T: 0 4 : 233 : 237 : 0.1
+T: 0 4 : 233 : 173 : 0.9
+T: 0 4 : 232 : 236 : 0.1
+T: 0 4 : 232 : 172 : 0.9
+T: 0 4 : 231 : 231 : 0.1
+T: 0 4 : 231 : 167 : 0.9
+T: 0 4 : 230 : 230 : 0.1
+T: 0 4 : 230 : 166 : 0.9
+T: 0 4 : 229 : 229 : 0.1
+T: 0 4 : 229 : 165 : 0.9
+T: 0 4 : 228 : 228 : 0.1
+T: 0 4 : 228 : 164 : 0.9
+T: 0 4 : 227 : 231 : 0.1
+T: 0 4 : 227 : 167 : 0.9
+T: 0 4 : 226 : 230 : 0.1
+T: 0 4 : 226 : 166 : 0.9
+T: 0 4 : 225 : 229 : 0.1
+T: 0 4 : 225 : 165 : 0.9
+T: 0 4 : 224 : 228 : 0.1
+T: 0 4 : 224 : 164 : 0.9
+T: 0 4 : 223 : 0 : 1
+T: 0 4 : 222 : 222 : 0.1
+T: 0 4 : 222 : 158 : 0.9
+T: 0 4 : 221 : 0 : 1
+T: 0 4 : 220 : 222 : 0.1
+T: 0 4 : 220 : 158 : 0.9
+T: 0 4 : 219 : 219 : 0.1
+T: 0 4 : 219 : 155 : 0.9
+T: 0 4 : 218 : 218 : 0.1
+T: 0 4 : 218 : 154 : 0.9
+T: 0 4 : 217 : 219 : 0.1
+T: 0 4 : 217 : 155 : 0.9
+T: 0 4 : 216 : 218 : 0.1
+T: 0 4 : 216 : 154 : 0.9
+T: 0 4 : 215 : 215 : 0.1
+T: 0 4 : 215 : 151 : 0.9
+T: 0 4 : 214 : 214 : 0.1
+T: 0 4 : 214 : 150 : 0.9
+T: 0 4 : 213 : 215 : 0.1
+T: 0 4 : 213 : 151 : 0.9
+T: 0 4 : 212 : 214 : 0.1
+T: 0 4 : 212 : 150 : 0.9
+T: 0 4 : 211 : 211 : 0.1
+T: 0 4 : 211 : 147 : 0.9
+T: 0 4 : 210 : 210 : 0.1
+T: 0 4 : 210 : 146 : 0.9
+T: 0 4 : 209 : 211 : 0.1
+T: 0 4 : 209 : 147 : 0.9
+T: 0 4 : 208 : 210 : 0.1
+T: 0 4 : 208 : 146 : 0.9
+T: 0 4 : 207 : 0 : 1
+T: 0 4 : 206 : 0 : 1
+T: 0 4 : 205 : 205 : 0.1
+T: 0 4 : 205 : 141 : 0.9
+T: 0 4 : 204 : 205 : 0.1
+T: 0 4 : 204 : 141 : 0.9
+T: 0 4 : 203 : 203 : 0.1
+T: 0 4 : 203 : 139 : 0.9
+T: 0 4 : 202 : 203 : 0.1
+T: 0 4 : 202 : 139 : 0.9
+T: 0 4 : 201 : 201 : 0.1
+T: 0 4 : 201 : 137 : 0.9
+T: 0 4 : 200 : 201 : 0.1
+T: 0 4 : 200 : 137 : 0.9
+T: 0 4 : 199 : 199 : 0.1
+T: 0 4 : 199 : 135 : 0.9
+T: 0 4 : 198 : 199 : 0.1
+T: 0 4 : 198 : 135 : 0.9
+T: 0 4 : 197 : 197 : 0.1
+T: 0 4 : 197 : 133 : 0.9
+T: 0 4 : 196 : 197 : 0.1
+T: 0 4 : 196 : 133 : 0.9
+T: 0 4 : 195 : 195 : 0.1
+T: 0 4 : 195 : 131 : 0.9
+T: 0 4 : 194 : 195 : 0.1
+T: 0 4 : 194 : 131 : 0.9
+T: 0 4 : 193 : 193 : 0.1
+T: 0 4 : 193 : 129 : 0.9
+T: 0 4 : 192 : 193 : 0.1
+T: 0 4 : 192 : 129 : 0.9
+T: 0 4 : 191 : 0 : 1
+T: 0 4 : 190 : 190 : 1
+T: 0 4 : 189 : 189 : 1
+T: 0 4 : 188 : 188 : 1
+T: 0 4 : 187 : 187 : 1
+T: 0 4 : 186 : 186 : 1
+T: 0 4 : 185 : 185 : 1
+T: 0 4 : 184 : 184 : 1
+T: 0 4 : 183 : 0 : 1
+T: 0 4 : 182 : 190 : 1
+T: 0 4 : 181 : 189 : 1
+T: 0 4 : 180 : 188 : 1
+T: 0 4 : 179 : 187 : 1
+T: 0 4 : 178 : 186 : 1
+T: 0 4 : 177 : 185 : 1
+T: 0 4 : 176 : 184 : 1
+T: 0 4 : 175 : 0 : 1
+T: 0 4 : 174 : 174 : 1
+T: 0 4 : 173 : 173 : 1
+T: 0 4 : 172 : 172 : 1
+T: 0 4 : 171 : 0 : 1
+T: 0 4 : 170 : 174 : 1
+T: 0 4 : 169 : 173 : 1
+T: 0 4 : 168 : 172 : 1
+T: 0 4 : 167 : 167 : 1
+T: 0 4 : 166 : 166 : 1
+T: 0 4 : 77 : 77 : 0.1
+T: 0 4 : 77 : 13 : 0.9
+T: 0 4 : 76 : 77 : 0.1
+T: 0 4 : 76 : 13 : 0.9
+T: 0 4 : 75 : 75 : 0.1
+T: 0 4 : 75 : 11 : 0.9
+T: 0 4 : 74 : 75 : 0.1
+T: 0 4 : 74 : 11 : 0.9
+T: 0 4 : 73 : 73 : 0.1
+T: 0 4 : 73 : 9 : 0.9
+T: 0 4 : 72 : 73 : 0.1
+T: 0 4 : 72 : 9 : 0.9
+T: 0 4 : 71 : 71 : 0.1
+T: 0 4 : 71 : 7 : 0.9
+T: 0 4 : 70 : 71 : 0.1
+T: 0 4 : 70 : 7 : 0.9
+T: 0 4 : 69 : 69 : 0.1
+T: 0 4 : 69 : 5 : 0.9
+T: 0 4 : 68 : 69 : 0.1
+T: 0 4 : 68 : 5 : 0.9
+T: 0 4 : 67 : 67 : 0.1
+T: 0 4 : 67 : 3 : 0.9
+T: 0 4 : 66 : 67 : 0.1
+T: 0 4 : 66 : 3 : 0.9
+T: 0 4 : 65 : 65 : 0.1
+T: 0 4 : 65 : 1 : 0.9
+T: 0 4 : 64 : 65 : 0.1
+T: 0 4 : 64 : 1 : 0.9
+T: 0 4 : 63 : 0 : 1
+T: 0 4 : 62 : 62 : 1
+T: 0 4 : 61 : 61 : 1
+T: 0 4 : 60 : 60 : 1
+T: 0 4 : 59 : 59 : 1
+T: 0 4 : 58 : 58 : 1
+T: 0 4 : 57 : 57 : 1
+T: 0 4 : 56 : 56 : 1
+T: 0 4 : 55 : 0 : 1
+T: 0 4 : 54 : 62 : 1
+T: 0 4 : 53 : 61 : 1
+T: 0 4 : 52 : 60 : 1
+T: 0 4 : 51 : 59 : 1
+T: 0 4 : 50 : 58 : 1
+T: 0 4 : 49 : 57 : 1
+T: 0 4 : 48 : 56 : 1
+T: 0 4 : 47 : 0 : 1
+T: 0 4 : 46 : 46 : 1
+T: 0 4 : 45 : 45 : 1
+T: 0 4 : 44 : 44 : 1
+T: 0 4 : 43 : 0 : 1
+T: 0 4 : 42 : 46 : 1
+T: 0 4 : 41 : 45 : 1
+T: 0 4 : 40 : 44 : 1
+T: 0 4 : 39 : 39 : 1
+T: 0 4 : 38 : 38 : 1
+T: 0 4 : 37 : 37 : 1
+T: 0 4 : 36 : 36 : 1
+T: 0 4 : 15 : 0 : 1
+T: 0 4 : 14 : 0 : 1
+T: 0 4 : 13 : 13 : 1
+T: 0 4 : 12 : 13 : 1
+T: 0 4 : 11 : 11 : 1
+T: 0 4 : 10 : 11 : 1
+T: 0 4 : 9 : 9 : 1
+T: 0 4 : 8 : 9 : 1
+T: 0 4 : 7 : 7 : 1
+T: 0 4 : 6 : 7 : 1
+T: 0 4 : 1 : 1 : 1
+T: 0 4 : 0 : 1 : 1
+T: 0 4 : 2 : 3 : 1
+T: 0 4 : 3 : 3 : 1
+T: 0 4 : 4 : 5 : 1
+T: 0 4 : 5 : 5 : 1
+T: 0 4 : 16 : 18 : 1
+T: 0 4 : 17 : 19 : 1
+T: 0 4 : 18 : 18 : 1
+T: 0 4 : 19 : 19 : 1
+T: 0 4 : 20 : 22 : 1
+T: 0 4 : 21 : 23 : 1
+T: 0 4 : 22 : 22 : 1
+T: 0 4 : 23 : 23 : 1
+T: 0 4 : 24 : 26 : 1
+T: 0 4 : 25 : 27 : 1
+T: 0 4 : 26 : 26 : 1
+T: 0 4 : 27 : 27 : 1
+T: 0 4 : 28 : 30 : 1
+T: 0 4 : 29 : 0 : 1
+T: 0 4 : 30 : 30 : 1
+T: 0 4 : 31 : 0 : 1
+T: 0 4 : 32 : 36 : 1
+T: 0 4 : 33 : 37 : 1
+T: 0 4 : 34 : 38 : 1
+T: 0 4 : 35 : 39 : 1
+T: 0 4 : 78 : 0 : 1
+T: 0 4 : 79 : 0 : 1
+T: 0 4 : 80 : 82 : 0.1
+T: 0 4 : 80 : 18 : 0.9
+T: 0 4 : 81 : 83 : 0.1
+T: 0 4 : 81 : 19 : 0.9
+T: 0 4 : 82 : 82 : 0.1
+T: 0 4 : 82 : 18 : 0.9
+T: 0 4 : 83 : 83 : 0.1
+T: 0 4 : 83 : 19 : 0.9
+T: 0 4 : 84 : 86 : 0.1
+T: 0 4 : 84 : 22 : 0.9
+T: 0 4 : 85 : 87 : 0.1
+T: 0 4 : 85 : 23 : 0.9
+T: 0 4 : 86 : 86 : 0.1
+T: 0 4 : 86 : 22 : 0.9
+T: 0 4 : 87 : 87 : 0.1
+T: 0 4 : 87 : 23 : 0.9
+T: 0 4 : 88 : 90 : 0.1
+T: 0 4 : 88 : 26 : 0.9
+T: 0 4 : 89 : 91 : 0.1
+T: 0 4 : 89 : 27 : 0.9
+T: 0 4 : 90 : 90 : 0.1
+T: 0 4 : 90 : 26 : 0.9
+T: 0 4 : 91 : 91 : 0.1
+T: 0 4 : 91 : 27 : 0.9
+T: 0 4 : 92 : 94 : 0.1
+T: 0 4 : 92 : 30 : 0.9
+T: 0 4 : 93 : 0 : 1
+T: 0 4 : 94 : 94 : 0.1
+T: 0 4 : 94 : 30 : 0.9
+T: 0 4 : 95 : 0 : 1
+T: 0 4 : 96 : 100 : 0.1
+T: 0 4 : 96 : 36 : 0.9
+T: 0 4 : 97 : 101 : 0.1
+T: 0 4 : 97 : 37 : 0.9
+T: 0 4 : 98 : 102 : 0.1
+T: 0 4 : 98 : 38 : 0.9
+T: 0 4 : 99 : 103 : 0.1
+T: 0 4 : 99 : 39 : 0.9
+T: 0 4 : 100 : 100 : 0.1
+T: 0 4 : 100 : 36 : 0.9
+T: 0 4 : 101 : 101 : 0.1
+T: 0 4 : 101 : 37 : 0.9
+T: 0 4 : 102 : 102 : 0.1
+T: 0 4 : 102 : 38 : 0.9
+T: 0 4 : 103 : 103 : 0.1
+T: 0 4 : 103 : 39 : 0.9
+T: 0 4 : 104 : 108 : 0.1
+T: 0 4 : 104 : 44 : 0.9
+T: 0 4 : 105 : 109 : 0.1
+T: 0 4 : 105 : 45 : 0.9
+T: 0 4 : 106 : 110 : 0.1
+T: 0 4 : 106 : 46 : 0.9
+T: 0 4 : 107 : 0 : 1
+T: 0 4 : 108 : 108 : 0.1
+T: 0 4 : 108 : 44 : 0.9
+T: 0 4 : 109 : 109 : 0.1
+T: 0 4 : 109 : 45 : 0.9
+T: 0 4 : 110 : 110 : 0.1
+T: 0 4 : 110 : 46 : 0.9
+T: 0 4 : 111 : 0 : 1
+T: 0 4 : 112 : 120 : 0.1
+T: 0 4 : 112 : 56 : 0.9
+T: 0 4 : 113 : 121 : 0.1
+T: 0 4 : 113 : 57 : 0.9
+T: 0 4 : 114 : 122 : 0.1
+T: 0 4 : 114 : 58 : 0.9
+T: 0 4 : 115 : 123 : 0.1
+T: 0 4 : 115 : 59 : 0.9
+T: 0 4 : 116 : 124 : 0.1
+T: 0 4 : 116 : 60 : 0.9
+T: 0 4 : 117 : 125 : 0.1
+T: 0 4 : 117 : 61 : 0.9
+T: 0 4 : 118 : 126 : 0.1
+T: 0 4 : 118 : 62 : 0.9
+T: 0 4 : 119 : 0 : 1
+T: 0 4 : 120 : 120 : 0.1
+T: 0 4 : 120 : 56 : 0.9
+T: 0 4 : 121 : 121 : 0.1
+T: 0 4 : 121 : 57 : 0.9
+T: 0 4 : 122 : 122 : 0.1
+T: 0 4 : 122 : 58 : 0.9
+T: 0 4 : 123 : 123 : 0.1
+T: 0 4 : 123 : 59 : 0.9
+T: 0 4 : 124 : 124 : 0.1
+T: 0 4 : 124 : 60 : 0.9
+T: 0 4 : 125 : 125 : 0.1
+T: 0 4 : 125 : 61 : 0.9
+T: 0 4 : 126 : 126 : 0.1
+T: 0 4 : 126 : 62 : 0.9
+T: 0 4 : 127 : 0 : 1
+T: 0 4 : 128 : 129 : 1
+T: 0 4 : 129 : 129 : 1
+T: 0 4 : 130 : 131 : 1
+T: 0 4 : 131 : 131 : 1
+T: 0 4 : 132 : 133 : 1
+T: 0 4 : 133 : 133 : 1
+T: 0 4 : 134 : 135 : 1
+T: 0 4 : 135 : 135 : 1
+T: 0 4 : 136 : 137 : 1
+T: 0 4 : 137 : 137 : 1
+T: 0 4 : 138 : 139 : 1
+T: 0 4 : 139 : 139 : 1
+T: 0 4 : 140 : 141 : 1
+T: 0 4 : 141 : 141 : 1
+T: 0 4 : 142 : 0 : 1
+T: 0 4 : 143 : 0 : 1
+T: 0 4 : 144 : 146 : 1
+T: 0 4 : 145 : 147 : 1
+T: 0 4 : 146 : 146 : 1
+T: 0 4 : 147 : 147 : 1
+T: 0 4 : 148 : 150 : 1
+T: 0 4 : 149 : 151 : 1
+T: 0 4 : 150 : 150 : 1
+T: 0 4 : 151 : 151 : 1
+T: 0 4 : 152 : 154 : 1
+T: 0 4 : 153 : 155 : 1
+T: 0 4 : 154 : 154 : 1
+T: 0 4 : 155 : 155 : 1
+T: 0 4 : 156 : 158 : 1
+T: 0 4 : 157 : 0 : 1
+T: 0 4 : 158 : 158 : 1
+T: 0 4 : 159 : 0 : 1
+T: 0 4 : 160 : 164 : 1
+T: 0 4 : 161 : 165 : 1
+T: 0 4 : 162 : 166 : 1
+T: 0 4 : 163 : 167 : 1
+T: 0 4 : 164 : 164 : 1
+T: 0 4 : 165 : 165 : 1
+T: 0 3 : 255 : 255 : 0.1
+T: 0 3 : 255 : 191 : 0.9
+T: 0 3 : 254 : 254 : 0.1
+T: 0 3 : 254 : 190 : 0.9
+T: 0 3 : 253 : 253 : 0.1
+T: 0 3 : 253 : 189 : 0.9
+T: 0 3 : 252 : 252 : 0.1
+T: 0 3 : 252 : 188 : 0.9
+T: 0 3 : 251 : 251 : 0.1
+T: 0 3 : 251 : 187 : 0.9
+T: 0 3 : 250 : 250 : 0.1
+T: 0 3 : 250 : 186 : 0.9
+T: 0 3 : 249 : 249 : 0.1
+T: 0 3 : 249 : 185 : 0.9
+T: 0 3 : 248 : 248 : 0.1
+T: 0 3 : 248 : 184 : 0.9
+T: 0 3 : 247 : 247 : 0.1
+T: 0 3 : 247 : 183 : 0.9
+T: 0 3 : 246 : 246 : 0.1
+T: 0 3 : 246 : 182 : 0.9
+T: 0 3 : 245 : 245 : 0.1
+T: 0 3 : 245 : 181 : 0.9
+T: 0 3 : 244 : 244 : 0.1
+T: 0 3 : 244 : 180 : 0.9
+T: 0 3 : 243 : 243 : 0.1
+T: 0 3 : 243 : 179 : 0.9
+T: 0 3 : 242 : 242 : 0.1
+T: 0 3 : 242 : 178 : 0.9
+T: 0 3 : 241 : 241 : 0.1
+T: 0 3 : 241 : 177 : 0.9
+T: 0 3 : 240 : 240 : 0.1
+T: 0 3 : 240 : 176 : 0.9
+T: 0 3 : 239 : 239 : 0.1
+T: 0 3 : 239 : 175 : 0.9
+T: 0 3 : 238 : 238 : 0.1
+T: 0 3 : 238 : 174 : 0.9
+T: 0 3 : 237 : 237 : 0.1
+T: 0 3 : 237 : 173 : 0.9
+T: 0 3 : 236 : 236 : 0.1
+T: 0 3 : 236 : 172 : 0.9
+T: 0 3 : 235 : 235 : 0.1
+T: 0 3 : 235 : 171 : 0.9
+T: 0 3 : 234 : 234 : 0.1
+T: 0 3 : 234 : 170 : 0.9
+T: 0 3 : 233 : 233 : 0.1
+T: 0 3 : 233 : 169 : 0.9
+T: 0 3 : 232 : 232 : 0.1
+T: 0 3 : 232 : 168 : 0.9
+T: 0 3 : 231 : 231 : 0.1
+T: 0 3 : 231 : 167 : 0.9
+T: 0 3 : 230 : 230 : 0.1
+T: 0 3 : 230 : 166 : 0.9
+T: 0 3 : 229 : 229 : 0.1
+T: 0 3 : 229 : 165 : 0.9
+T: 0 3 : 228 : 228 : 0.1
+T: 0 3 : 228 : 164 : 0.9
+T: 0 3 : 227 : 227 : 0.1
+T: 0 3 : 227 : 163 : 0.9
+T: 0 3 : 226 : 226 : 0.1
+T: 0 3 : 226 : 162 : 0.9
+T: 0 3 : 225 : 225 : 0.1
+T: 0 3 : 225 : 161 : 0.9
+T: 0 3 : 224 : 224 : 0.1
+T: 0 3 : 224 : 160 : 0.9
+T: 0 3 : 223 : 255 : 0.09
+T: 0 3 : 223 : 223 : 0.01
+T: 0 3 : 223 : 159 : 0.09
+T: 0 3 : 223 : 191 : 0.81
+T: 0 3 : 222 : 254 : 0.09
+T: 0 3 : 222 : 222 : 0.01
+T: 0 3 : 222 : 158 : 0.09
+T: 0 3 : 222 : 190 : 0.81
+T: 0 3 : 221 : 253 : 0.09
+T: 0 3 : 221 : 221 : 0.01
+T: 0 3 : 221 : 157 : 0.09
+T: 0 3 : 221 : 189 : 0.81
+T: 0 3 : 220 : 252 : 0.09
+T: 0 3 : 220 : 220 : 0.01
+T: 0 3 : 220 : 156 : 0.09
+T: 0 3 : 220 : 188 : 0.81
+T: 0 3 : 219 : 251 : 0.09
+T: 0 3 : 219 : 219 : 0.01
+T: 0 3 : 219 : 155 : 0.09
+T: 0 3 : 219 : 187 : 0.81
+T: 0 3 : 218 : 250 : 0.09
+T: 0 3 : 218 : 218 : 0.01
+T: 0 3 : 218 : 154 : 0.09
+T: 0 3 : 218 : 186 : 0.81
+T: 0 3 : 217 : 249 : 0.09
+T: 0 3 : 217 : 217 : 0.01
+T: 0 3 : 217 : 153 : 0.09
+T: 0 3 : 217 : 185 : 0.81
+T: 0 3 : 216 : 248 : 0.09
+T: 0 3 : 216 : 216 : 0.01
+T: 0 3 : 216 : 152 : 0.09
+T: 0 3 : 216 : 184 : 0.81
+T: 0 3 : 215 : 247 : 0.09
+T: 0 3 : 215 : 215 : 0.01
+T: 0 3 : 215 : 151 : 0.09
+T: 0 3 : 215 : 183 : 0.81
+T: 0 3 : 214 : 246 : 0.09
+T: 0 3 : 214 : 214 : 0.01
+T: 0 3 : 214 : 150 : 0.09
+T: 0 3 : 214 : 182 : 0.81
+T: 0 3 : 213 : 245 : 0.09
+T: 0 3 : 213 : 213 : 0.01
+T: 0 3 : 213 : 149 : 0.09
+T: 0 3 : 213 : 181 : 0.81
+T: 0 3 : 212 : 244 : 0.09
+T: 0 3 : 212 : 212 : 0.01
+T: 0 3 : 212 : 148 : 0.09
+T: 0 3 : 212 : 180 : 0.81
+T: 0 3 : 211 : 243 : 0.09
+T: 0 3 : 211 : 211 : 0.01
+T: 0 3 : 211 : 147 : 0.09
+T: 0 3 : 211 : 179 : 0.81
+T: 0 3 : 210 : 242 : 0.09
+T: 0 3 : 210 : 210 : 0.01
+T: 0 3 : 210 : 146 : 0.09
+T: 0 3 : 210 : 178 : 0.81
+T: 0 3 : 209 : 241 : 0.09
+T: 0 3 : 209 : 209 : 0.01
+T: 0 3 : 209 : 145 : 0.09
+T: 0 3 : 209 : 177 : 0.81
+T: 0 3 : 208 : 240 : 0.09
+T: 0 3 : 208 : 208 : 0.01
+T: 0 3 : 208 : 144 : 0.09
+T: 0 3 : 208 : 176 : 0.81
+T: 0 3 : 207 : 239 : 0.09
+T: 0 3 : 207 : 207 : 0.01
+T: 0 3 : 207 : 143 : 0.09
+T: 0 3 : 207 : 175 : 0.81
+T: 0 3 : 206 : 238 : 0.09
+T: 0 3 : 206 : 206 : 0.01
+T: 0 3 : 206 : 142 : 0.09
+T: 0 3 : 206 : 174 : 0.81
+T: 0 3 : 205 : 237 : 0.09
+T: 0 3 : 205 : 205 : 0.01
+T: 0 3 : 205 : 141 : 0.09
+T: 0 3 : 205 : 173 : 0.81
+T: 0 3 : 204 : 236 : 0.09
+T: 0 3 : 204 : 204 : 0.01
+T: 0 3 : 204 : 140 : 0.09
+T: 0 3 : 204 : 172 : 0.81
+T: 0 3 : 203 : 235 : 0.09
+T: 0 3 : 203 : 203 : 0.01
+T: 0 3 : 203 : 139 : 0.09
+T: 0 3 : 203 : 171 : 0.81
+T: 0 3 : 202 : 234 : 0.09
+T: 0 3 : 202 : 202 : 0.01
+T: 0 3 : 202 : 138 : 0.09
+T: 0 3 : 202 : 170 : 0.81
+T: 0 3 : 201 : 233 : 0.09
+T: 0 3 : 201 : 201 : 0.01
+T: 0 3 : 201 : 137 : 0.09
+T: 0 3 : 201 : 169 : 0.81
+T: 0 3 : 200 : 232 : 0.09
+T: 0 3 : 200 : 200 : 0.01
+T: 0 3 : 200 : 136 : 0.09
+T: 0 3 : 200 : 168 : 0.81
+T: 0 3 : 199 : 231 : 0.09
+T: 0 3 : 199 : 199 : 0.01
+T: 0 3 : 199 : 135 : 0.09
+T: 0 3 : 199 : 167 : 0.81
+T: 0 3 : 198 : 230 : 0.09
+T: 0 3 : 198 : 198 : 0.01
+T: 0 3 : 198 : 134 : 0.09
+T: 0 3 : 198 : 166 : 0.81
+T: 0 3 : 197 : 229 : 0.09
+T: 0 3 : 197 : 197 : 0.01
+T: 0 3 : 197 : 133 : 0.09
+T: 0 3 : 197 : 165 : 0.81
+T: 0 3 : 196 : 228 : 0.09
+T: 0 3 : 196 : 196 : 0.01
+T: 0 3 : 196 : 132 : 0.09
+T: 0 3 : 196 : 164 : 0.81
+T: 0 3 : 195 : 227 : 0.09
+T: 0 3 : 195 : 195 : 0.01
+T: 0 3 : 195 : 131 : 0.09
+T: 0 3 : 195 : 163 : 0.81
+T: 0 3 : 194 : 226 : 0.09
+T: 0 3 : 194 : 194 : 0.01
+T: 0 3 : 194 : 130 : 0.09
+T: 0 3 : 194 : 162 : 0.81
+T: 0 3 : 193 : 225 : 0.09
+T: 0 3 : 193 : 193 : 0.01
+T: 0 3 : 193 : 129 : 0.09
+T: 0 3 : 193 : 161 : 0.81
+T: 0 3 : 192 : 224 : 0.09
+T: 0 3 : 192 : 192 : 0.01
+T: 0 3 : 192 : 128 : 0.09
+T: 0 3 : 192 : 160 : 0.81
+T: 0 3 : 191 : 191 : 1
+T: 0 3 : 190 : 190 : 1
+T: 0 3 : 189 : 189 : 1
+T: 0 3 : 188 : 188 : 1
+T: 0 3 : 187 : 187 : 1
+T: 0 3 : 186 : 186 : 1
+T: 0 3 : 185 : 185 : 1
+T: 0 3 : 184 : 184 : 1
+T: 0 3 : 183 : 183 : 1
+T: 0 3 : 182 : 182 : 1
+T: 0 3 : 181 : 181 : 1
+T: 0 3 : 180 : 180 : 1
+T: 0 3 : 179 : 179 : 1
+T: 0 3 : 178 : 178 : 1
+T: 0 3 : 177 : 177 : 1
+T: 0 3 : 176 : 176 : 1
+T: 0 3 : 175 : 175 : 1
+T: 0 3 : 174 : 174 : 1
+T: 0 3 : 173 : 173 : 1
+T: 0 3 : 172 : 172 : 1
+T: 0 3 : 171 : 171 : 1
+T: 0 3 : 170 : 170 : 1
+T: 0 3 : 169 : 169 : 1
+T: 0 3 : 168 : 168 : 1
+T: 0 3 : 167 : 167 : 1
+T: 0 3 : 166 : 166 : 1
+T: 0 3 : 77 : 109 : 0.09
+T: 0 3 : 77 : 77 : 0.01
+T: 0 3 : 77 : 13 : 0.09
+T: 0 3 : 77 : 45 : 0.81
+T: 0 3 : 76 : 108 : 0.09
+T: 0 3 : 76 : 76 : 0.01
+T: 0 3 : 76 : 12 : 0.09
+T: 0 3 : 76 : 44 : 0.81
+T: 0 3 : 75 : 107 : 0.09
+T: 0 3 : 75 : 75 : 0.01
+T: 0 3 : 75 : 11 : 0.09
+T: 0 3 : 75 : 43 : 0.81
+T: 0 3 : 74 : 106 : 0.09
+T: 0 3 : 74 : 74 : 0.01
+T: 0 3 : 74 : 10 : 0.09
+T: 0 3 : 74 : 42 : 0.81
+T: 0 3 : 73 : 105 : 0.09
+T: 0 3 : 73 : 73 : 0.01
+T: 0 3 : 73 : 9 : 0.09
+T: 0 3 : 73 : 41 : 0.81
+T: 0 3 : 72 : 104 : 0.09
+T: 0 3 : 72 : 72 : 0.01
+T: 0 3 : 72 : 8 : 0.09
+T: 0 3 : 72 : 40 : 0.81
+T: 0 3 : 71 : 103 : 0.09
+T: 0 3 : 71 : 71 : 0.01
+T: 0 3 : 71 : 7 : 0.09
+T: 0 3 : 71 : 39 : 0.81
+T: 0 3 : 70 : 102 : 0.09
+T: 0 3 : 70 : 70 : 0.01
+T: 0 3 : 70 : 6 : 0.09
+T: 0 3 : 70 : 38 : 0.81
+T: 0 3 : 69 : 101 : 0.09
+T: 0 3 : 69 : 69 : 0.01
+T: 0 3 : 69 : 5 : 0.09
+T: 0 3 : 69 : 37 : 0.81
+T: 0 3 : 68 : 100 : 0.09
+T: 0 3 : 68 : 68 : 0.01
+T: 0 3 : 68 : 4 : 0.09
+T: 0 3 : 68 : 36 : 0.81
+T: 0 3 : 67 : 99 : 0.09
+T: 0 3 : 67 : 67 : 0.01
+T: 0 3 : 67 : 3 : 0.09
+T: 0 3 : 67 : 35 : 0.81
+T: 0 3 : 66 : 98 : 0.09
+T: 0 3 : 66 : 66 : 0.01
+T: 0 3 : 66 : 2 : 0.09
+T: 0 3 : 66 : 34 : 0.81
+T: 0 3 : 65 : 97 : 0.09
+T: 0 3 : 65 : 65 : 0.01
+T: 0 3 : 65 : 1 : 0.09
+T: 0 3 : 65 : 33 : 0.81
+T: 0 3 : 64 : 96 : 0.09
+T: 0 3 : 64 : 64 : 0.01
+T: 0 3 : 64 : 0 : 0.09
+T: 0 3 : 64 : 32 : 0.81
+T: 0 3 : 63 : 63 : 1
+T: 0 3 : 62 : 62 : 1
+T: 0 3 : 61 : 61 : 1
+T: 0 3 : 60 : 60 : 1
+T: 0 3 : 59 : 59 : 1
+T: 0 3 : 58 : 58 : 1
+T: 0 3 : 57 : 57 : 1
+T: 0 3 : 56 : 56 : 1
+T: 0 3 : 55 : 55 : 1
+T: 0 3 : 54 : 54 : 1
+T: 0 3 : 53 : 53 : 1
+T: 0 3 : 52 : 52 : 1
+T: 0 3 : 51 : 51 : 1
+T: 0 3 : 50 : 50 : 1
+T: 0 3 : 49 : 49 : 1
+T: 0 3 : 48 : 48 : 1
+T: 0 3 : 47 : 47 : 1
+T: 0 3 : 46 : 46 : 1
+T: 0 3 : 45 : 45 : 1
+T: 0 3 : 44 : 44 : 1
+T: 0 3 : 43 : 43 : 1
+T: 0 3 : 42 : 42 : 1
+T: 0 3 : 41 : 41 : 1
+T: 0 3 : 40 : 40 : 1
+T: 0 3 : 39 : 39 : 1
+T: 0 3 : 38 : 38 : 1
+T: 0 3 : 37 : 37 : 1
+T: 0 3 : 36 : 36 : 1
+T: 0 3 : 15 : 47 : 0.9
+T: 0 3 : 15 : 15 : 0.1
+T: 0 3 : 14 : 46 : 0.9
+T: 0 3 : 14 : 14 : 0.1
+T: 0 3 : 13 : 45 : 0.9
+T: 0 3 : 13 : 13 : 0.1
+T: 0 3 : 12 : 44 : 0.9
+T: 0 3 : 12 : 12 : 0.1
+T: 0 3 : 11 : 43 : 0.9
+T: 0 3 : 11 : 11 : 0.1
+T: 0 3 : 10 : 42 : 0.9
+T: 0 3 : 10 : 10 : 0.1
+T: 0 3 : 9 : 41 : 0.9
+T: 0 3 : 9 : 9 : 0.1
+T: 0 3 : 8 : 40 : 0.9
+T: 0 3 : 8 : 8 : 0.1
+T: 0 3 : 7 : 39 : 0.9
+T: 0 3 : 7 : 7 : 0.1
+T: 0 3 : 6 : 38 : 0.9
+T: 0 3 : 6 : 6 : 0.1
+T: 0 3 : 1 : 33 : 0.9
+T: 0 3 : 1 : 1 : 0.1
+T: 0 3 : 0 : 32 : 0.9
+T: 0 3 : 0 : 0 : 0.1
+T: 0 3 : 2 : 34 : 0.9
+T: 0 3 : 2 : 2 : 0.1
+T: 0 3 : 3 : 35 : 0.9
+T: 0 3 : 3 : 3 : 0.1
+T: 0 3 : 4 : 36 : 0.9
+T: 0 3 : 4 : 4 : 0.1
+T: 0 3 : 5 : 37 : 0.9
+T: 0 3 : 5 : 5 : 0.1
+T: 0 3 : 16 : 48 : 0.9
+T: 0 3 : 16 : 16 : 0.1
+T: 0 3 : 17 : 49 : 0.9
+T: 0 3 : 17 : 17 : 0.1
+T: 0 3 : 18 : 50 : 0.9
+T: 0 3 : 18 : 18 : 0.1
+T: 0 3 : 19 : 51 : 0.9
+T: 0 3 : 19 : 19 : 0.1
+T: 0 3 : 20 : 52 : 0.9
+T: 0 3 : 20 : 20 : 0.1
+T: 0 3 : 21 : 53 : 0.9
+T: 0 3 : 21 : 21 : 0.1
+T: 0 3 : 22 : 54 : 0.9
+T: 0 3 : 22 : 22 : 0.1
+T: 0 3 : 23 : 55 : 0.9
+T: 0 3 : 23 : 23 : 0.1
+T: 0 3 : 24 : 56 : 0.9
+T: 0 3 : 24 : 24 : 0.1
+T: 0 3 : 25 : 57 : 0.9
+T: 0 3 : 25 : 25 : 0.1
+T: 0 3 : 26 : 58 : 0.9
+T: 0 3 : 26 : 26 : 0.1
+T: 0 3 : 27 : 59 : 0.9
+T: 0 3 : 27 : 27 : 0.1
+T: 0 3 : 28 : 60 : 0.9
+T: 0 3 : 28 : 28 : 0.1
+T: 0 3 : 29 : 61 : 0.9
+T: 0 3 : 29 : 29 : 0.1
+T: 0 3 : 30 : 62 : 0.9
+T: 0 3 : 30 : 30 : 0.1
+T: 0 3 : 31 : 63 : 0.9
+T: 0 3 : 31 : 31 : 0.1
+T: 0 3 : 32 : 32 : 1
+T: 0 3 : 33 : 33 : 1
+T: 0 3 : 34 : 34 : 1
+T: 0 3 : 35 : 35 : 1
+T: 0 3 : 78 : 110 : 0.09
+T: 0 3 : 78 : 78 : 0.01
+T: 0 3 : 78 : 14 : 0.09
+T: 0 3 : 78 : 46 : 0.81
+T: 0 3 : 79 : 111 : 0.09
+T: 0 3 : 79 : 79 : 0.01
+T: 0 3 : 79 : 15 : 0.09
+T: 0 3 : 79 : 47 : 0.81
+T: 0 3 : 80 : 112 : 0.09
+T: 0 3 : 80 : 80 : 0.01
+T: 0 3 : 80 : 16 : 0.09
+T: 0 3 : 80 : 48 : 0.81
+T: 0 3 : 81 : 113 : 0.09
+T: 0 3 : 81 : 81 : 0.01
+T: 0 3 : 81 : 17 : 0.09
+T: 0 3 : 81 : 49 : 0.81
+T: 0 3 : 82 : 114 : 0.09
+T: 0 3 : 82 : 82 : 0.01
+T: 0 3 : 82 : 18 : 0.09
+T: 0 3 : 82 : 50 : 0.81
+T: 0 3 : 83 : 115 : 0.09
+T: 0 3 : 83 : 83 : 0.01
+T: 0 3 : 83 : 19 : 0.09
+T: 0 3 : 83 : 51 : 0.81
+T: 0 3 : 84 : 116 : 0.09
+T: 0 3 : 84 : 84 : 0.01
+T: 0 3 : 84 : 20 : 0.09
+T: 0 3 : 84 : 52 : 0.81
+T: 0 3 : 85 : 117 : 0.09
+T: 0 3 : 85 : 85 : 0.01
+T: 0 3 : 85 : 21 : 0.09
+T: 0 3 : 85 : 53 : 0.81
+T: 0 3 : 86 : 118 : 0.09
+T: 0 3 : 86 : 86 : 0.01
+T: 0 3 : 86 : 22 : 0.09
+T: 0 3 : 86 : 54 : 0.81
+T: 0 3 : 87 : 119 : 0.09
+T: 0 3 : 87 : 87 : 0.01
+T: 0 3 : 87 : 23 : 0.09
+T: 0 3 : 87 : 55 : 0.81
+T: 0 3 : 88 : 120 : 0.09
+T: 0 3 : 88 : 88 : 0.01
+T: 0 3 : 88 : 24 : 0.09
+T: 0 3 : 88 : 56 : 0.81
+T: 0 3 : 89 : 121 : 0.09
+T: 0 3 : 89 : 89 : 0.01
+T: 0 3 : 89 : 25 : 0.09
+T: 0 3 : 89 : 57 : 0.81
+T: 0 3 : 90 : 122 : 0.09
+T: 0 3 : 90 : 90 : 0.01
+T: 0 3 : 90 : 26 : 0.09
+T: 0 3 : 90 : 58 : 0.81
+T: 0 3 : 91 : 123 : 0.09
+T: 0 3 : 91 : 91 : 0.01
+T: 0 3 : 91 : 27 : 0.09
+T: 0 3 : 91 : 59 : 0.81
+T: 0 3 : 92 : 124 : 0.09
+T: 0 3 : 92 : 92 : 0.01
+T: 0 3 : 92 : 28 : 0.09
+T: 0 3 : 92 : 60 : 0.81
+T: 0 3 : 93 : 125 : 0.09
+T: 0 3 : 93 : 93 : 0.01
+T: 0 3 : 93 : 29 : 0.09
+T: 0 3 : 93 : 61 : 0.81
+T: 0 3 : 94 : 126 : 0.09
+T: 0 3 : 94 : 94 : 0.01
+T: 0 3 : 94 : 30 : 0.09
+T: 0 3 : 94 : 62 : 0.81
+T: 0 3 : 95 : 127 : 0.09
+T: 0 3 : 95 : 95 : 0.01
+T: 0 3 : 95 : 31 : 0.09
+T: 0 3 : 95 : 63 : 0.81
+T: 0 3 : 96 : 96 : 0.1
+T: 0 3 : 96 : 32 : 0.9
+T: 0 3 : 97 : 97 : 0.1
+T: 0 3 : 97 : 33 : 0.9
+T: 0 3 : 98 : 98 : 0.1
+T: 0 3 : 98 : 34 : 0.9
+T: 0 3 : 99 : 99 : 0.1
+T: 0 3 : 99 : 35 : 0.9
+T: 0 3 : 100 : 100 : 0.1
+T: 0 3 : 100 : 36 : 0.9
+T: 0 3 : 101 : 101 : 0.1
+T: 0 3 : 101 : 37 : 0.9
+T: 0 3 : 102 : 102 : 0.1
+T: 0 3 : 102 : 38 : 0.9
+T: 0 3 : 103 : 103 : 0.1
+T: 0 3 : 103 : 39 : 0.9
+T: 0 3 : 104 : 104 : 0.1
+T: 0 3 : 104 : 40 : 0.9
+T: 0 3 : 105 : 105 : 0.1
+T: 0 3 : 105 : 41 : 0.9
+T: 0 3 : 106 : 106 : 0.1
+T: 0 3 : 106 : 42 : 0.9
+T: 0 3 : 107 : 107 : 0.1
+T: 0 3 : 107 : 43 : 0.9
+T: 0 3 : 108 : 108 : 0.1
+T: 0 3 : 108 : 44 : 0.9
+T: 0 3 : 109 : 109 : 0.1
+T: 0 3 : 109 : 45 : 0.9
+T: 0 3 : 110 : 110 : 0.1
+T: 0 3 : 110 : 46 : 0.9
+T: 0 3 : 111 : 111 : 0.1
+T: 0 3 : 111 : 47 : 0.9
+T: 0 3 : 112 : 112 : 0.1
+T: 0 3 : 112 : 48 : 0.9
+T: 0 3 : 113 : 113 : 0.1
+T: 0 3 : 113 : 49 : 0.9
+T: 0 3 : 114 : 114 : 0.1
+T: 0 3 : 114 : 50 : 0.9
+T: 0 3 : 115 : 115 : 0.1
+T: 0 3 : 115 : 51 : 0.9
+T: 0 3 : 116 : 116 : 0.1
+T: 0 3 : 116 : 52 : 0.9
+T: 0 3 : 117 : 117 : 0.1
+T: 0 3 : 117 : 53 : 0.9
+T: 0 3 : 118 : 118 : 0.1
+T: 0 3 : 118 : 54 : 0.9
+T: 0 3 : 119 : 119 : 0.1
+T: 0 3 : 119 : 55 : 0.9
+T: 0 3 : 120 : 120 : 0.1
+T: 0 3 : 120 : 56 : 0.9
+T: 0 3 : 121 : 121 : 0.1
+T: 0 3 : 121 : 57 : 0.9
+T: 0 3 : 122 : 122 : 0.1
+T: 0 3 : 122 : 58 : 0.9
+T: 0 3 : 123 : 123 : 0.1
+T: 0 3 : 123 : 59 : 0.9
+T: 0 3 : 124 : 124 : 0.1
+T: 0 3 : 124 : 60 : 0.9
+T: 0 3 : 125 : 125 : 0.1
+T: 0 3 : 125 : 61 : 0.9
+T: 0 3 : 126 : 126 : 0.1
+T: 0 3 : 126 : 62 : 0.9
+T: 0 3 : 127 : 127 : 0.1
+T: 0 3 : 127 : 63 : 0.9
+T: 0 3 : 128 : 160 : 0.9
+T: 0 3 : 128 : 128 : 0.1
+T: 0 3 : 129 : 161 : 0.9
+T: 0 3 : 129 : 129 : 0.1
+T: 0 3 : 130 : 162 : 0.9
+T: 0 3 : 130 : 130 : 0.1
+T: 0 3 : 131 : 163 : 0.9
+T: 0 3 : 131 : 131 : 0.1
+T: 0 3 : 132 : 164 : 0.9
+T: 0 3 : 132 : 132 : 0.1
+T: 0 3 : 133 : 165 : 0.9
+T: 0 3 : 133 : 133 : 0.1
+T: 0 3 : 134 : 166 : 0.9
+T: 0 3 : 134 : 134 : 0.1
+T: 0 3 : 135 : 167 : 0.9
+T: 0 3 : 135 : 135 : 0.1
+T: 0 3 : 136 : 168 : 0.9
+T: 0 3 : 136 : 136 : 0.1
+T: 0 3 : 137 : 169 : 0.9
+T: 0 3 : 137 : 137 : 0.1
+T: 0 3 : 138 : 170 : 0.9
+T: 0 3 : 138 : 138 : 0.1
+T: 0 3 : 139 : 171 : 0.9
+T: 0 3 : 139 : 139 : 0.1
+T: 0 3 : 140 : 172 : 0.9
+T: 0 3 : 140 : 140 : 0.1
+T: 0 3 : 141 : 173 : 0.9
+T: 0 3 : 141 : 141 : 0.1
+T: 0 3 : 142 : 174 : 0.9
+T: 0 3 : 142 : 142 : 0.1
+T: 0 3 : 143 : 175 : 0.9
+T: 0 3 : 143 : 143 : 0.1
+T: 0 3 : 144 : 176 : 0.9
+T: 0 3 : 144 : 144 : 0.1
+T: 0 3 : 145 : 177 : 0.9
+T: 0 3 : 145 : 145 : 0.1
+T: 0 3 : 146 : 178 : 0.9
+T: 0 3 : 146 : 146 : 0.1
+T: 0 3 : 147 : 179 : 0.9
+T: 0 3 : 147 : 147 : 0.1
+T: 0 3 : 148 : 180 : 0.9
+T: 0 3 : 148 : 148 : 0.1
+T: 0 3 : 149 : 181 : 0.9
+T: 0 3 : 149 : 149 : 0.1
+T: 0 3 : 150 : 182 : 0.9
+T: 0 3 : 150 : 150 : 0.1
+T: 0 3 : 151 : 183 : 0.9
+T: 0 3 : 151 : 151 : 0.1
+T: 0 3 : 152 : 184 : 0.9
+T: 0 3 : 152 : 152 : 0.1
+T: 0 3 : 153 : 185 : 0.9
+T: 0 3 : 153 : 153 : 0.1
+T: 0 3 : 154 : 186 : 0.9
+T: 0 3 : 154 : 154 : 0.1
+T: 0 3 : 155 : 187 : 0.9
+T: 0 3 : 155 : 155 : 0.1
+T: 0 3 : 156 : 188 : 0.9
+T: 0 3 : 156 : 156 : 0.1
+T: 0 3 : 157 : 189 : 0.9
+T: 0 3 : 157 : 157 : 0.1
+T: 0 3 : 158 : 190 : 0.9
+T: 0 3 : 158 : 158 : 0.1
+T: 0 3 : 159 : 191 : 0.9
+T: 0 3 : 159 : 159 : 0.1
+T: 0 3 : 160 : 160 : 1
+T: 0 3 : 161 : 161 : 1
+T: 0 3 : 162 : 162 : 1
+T: 0 3 : 163 : 163 : 1
+T: 0 3 : 164 : 164 : 1
+T: 0 3 : 165 : 165 : 1
+T: 0 2 : 255 : 255 : 0.01
+T: 0 2 : 255 : 223 : 0.09
+T: 0 2 : 255 : 159 : 0.81
+T: 0 2 : 255 : 191 : 0.09
+T: 0 2 : 254 : 254 : 0.01
+T: 0 2 : 254 : 222 : 0.09
+T: 0 2 : 254 : 158 : 0.81
+T: 0 2 : 254 : 190 : 0.09
+T: 0 2 : 253 : 253 : 0.01
+T: 0 2 : 253 : 221 : 0.09
+T: 0 2 : 253 : 157 : 0.81
+T: 0 2 : 253 : 189 : 0.09
+T: 0 2 : 252 : 252 : 0.01
+T: 0 2 : 252 : 220 : 0.09
+T: 0 2 : 252 : 156 : 0.81
+T: 0 2 : 252 : 188 : 0.09
+T: 0 2 : 251 : 251 : 0.01
+T: 0 2 : 251 : 219 : 0.09
+T: 0 2 : 251 : 155 : 0.81
+T: 0 2 : 251 : 187 : 0.09
+T: 0 2 : 250 : 250 : 0.01
+T: 0 2 : 250 : 218 : 0.09
+T: 0 2 : 250 : 154 : 0.81
+T: 0 2 : 250 : 186 : 0.09
+T: 0 2 : 249 : 249 : 0.01
+T: 0 2 : 249 : 217 : 0.09
+T: 0 2 : 249 : 153 : 0.81
+T: 0 2 : 249 : 185 : 0.09
+T: 0 2 : 248 : 248 : 0.01
+T: 0 2 : 248 : 216 : 0.09
+T: 0 2 : 248 : 152 : 0.81
+T: 0 2 : 248 : 184 : 0.09
+T: 0 2 : 247 : 247 : 0.01
+T: 0 2 : 247 : 215 : 0.09
+T: 0 2 : 247 : 151 : 0.81
+T: 0 2 : 247 : 183 : 0.09
+T: 0 2 : 246 : 246 : 0.01
+T: 0 2 : 246 : 214 : 0.09
+T: 0 2 : 246 : 150 : 0.81
+T: 0 2 : 246 : 182 : 0.09
+T: 0 2 : 245 : 245 : 0.01
+T: 0 2 : 245 : 213 : 0.09
+T: 0 2 : 245 : 149 : 0.81
+T: 0 2 : 245 : 181 : 0.09
+T: 0 2 : 244 : 244 : 0.01
+T: 0 2 : 244 : 212 : 0.09
+T: 0 2 : 244 : 148 : 0.81
+T: 0 2 : 244 : 180 : 0.09
+T: 0 2 : 243 : 243 : 0.01
+T: 0 2 : 243 : 211 : 0.09
+T: 0 2 : 243 : 147 : 0.81
+T: 0 2 : 243 : 179 : 0.09
+T: 0 2 : 242 : 242 : 0.01
+T: 0 2 : 242 : 210 : 0.09
+T: 0 2 : 242 : 146 : 0.81
+T: 0 2 : 242 : 178 : 0.09
+T: 0 2 : 241 : 241 : 0.01
+T: 0 2 : 241 : 209 : 0.09
+T: 0 2 : 241 : 145 : 0.81
+T: 0 2 : 241 : 177 : 0.09
+T: 0 2 : 240 : 240 : 0.01
+T: 0 2 : 240 : 208 : 0.09
+T: 0 2 : 240 : 144 : 0.81
+T: 0 2 : 240 : 176 : 0.09
+T: 0 2 : 239 : 239 : 0.01
+T: 0 2 : 239 : 207 : 0.09
+T: 0 2 : 239 : 143 : 0.81
+T: 0 2 : 239 : 175 : 0.09
+T: 0 2 : 238 : 238 : 0.01
+T: 0 2 : 238 : 206 : 0.09
+T: 0 2 : 238 : 142 : 0.81
+T: 0 2 : 238 : 174 : 0.09
+T: 0 2 : 237 : 237 : 0.01
+T: 0 2 : 237 : 205 : 0.09
+T: 0 2 : 237 : 141 : 0.81
+T: 0 2 : 237 : 173 : 0.09
+T: 0 2 : 236 : 236 : 0.01
+T: 0 2 : 236 : 204 : 0.09
+T: 0 2 : 236 : 140 : 0.81
+T: 0 2 : 236 : 172 : 0.09
+T: 0 2 : 235 : 235 : 0.01
+T: 0 2 : 235 : 203 : 0.09
+T: 0 2 : 235 : 139 : 0.81
+T: 0 2 : 235 : 171 : 0.09
+T: 0 2 : 234 : 234 : 0.01
+T: 0 2 : 234 : 202 : 0.09
+T: 0 2 : 234 : 138 : 0.81
+T: 0 2 : 234 : 170 : 0.09
+T: 0 2 : 233 : 233 : 0.01
+T: 0 2 : 233 : 201 : 0.09
+T: 0 2 : 233 : 137 : 0.81
+T: 0 2 : 233 : 169 : 0.09
+T: 0 2 : 232 : 232 : 0.01
+T: 0 2 : 232 : 200 : 0.09
+T: 0 2 : 232 : 136 : 0.81
+T: 0 2 : 232 : 168 : 0.09
+T: 0 2 : 231 : 231 : 0.01
+T: 0 2 : 231 : 199 : 0.09
+T: 0 2 : 231 : 135 : 0.81
+T: 0 2 : 231 : 167 : 0.09
+T: 0 2 : 230 : 230 : 0.01
+T: 0 2 : 230 : 198 : 0.09
+T: 0 2 : 230 : 134 : 0.81
+T: 0 2 : 230 : 166 : 0.09
+T: 0 2 : 229 : 229 : 0.01
+T: 0 2 : 229 : 197 : 0.09
+T: 0 2 : 229 : 133 : 0.81
+T: 0 2 : 229 : 165 : 0.09
+T: 0 2 : 228 : 228 : 0.01
+T: 0 2 : 228 : 196 : 0.09
+T: 0 2 : 228 : 132 : 0.81
+T: 0 2 : 228 : 164 : 0.09
+T: 0 2 : 227 : 227 : 0.01
+T: 0 2 : 227 : 195 : 0.09
+T: 0 2 : 227 : 131 : 0.81
+T: 0 2 : 227 : 163 : 0.09
+T: 0 2 : 226 : 226 : 0.01
+T: 0 2 : 226 : 194 : 0.09
+T: 0 2 : 226 : 130 : 0.81
+T: 0 2 : 226 : 162 : 0.09
+T: 0 2 : 225 : 225 : 0.01
+T: 0 2 : 225 : 193 : 0.09
+T: 0 2 : 225 : 129 : 0.81
+T: 0 2 : 225 : 161 : 0.09
+T: 0 2 : 224 : 224 : 0.01
+T: 0 2 : 224 : 192 : 0.09
+T: 0 2 : 224 : 128 : 0.81
+T: 0 2 : 224 : 160 : 0.09
+T: 0 2 : 223 : 223 : 0.1
+T: 0 2 : 223 : 159 : 0.9
+T: 0 2 : 222 : 222 : 0.1
+T: 0 2 : 222 : 158 : 0.9
+T: 0 2 : 221 : 221 : 0.1
+T: 0 2 : 221 : 157 : 0.9
+T: 0 2 : 220 : 220 : 0.1
+T: 0 2 : 220 : 156 : 0.9
+T: 0 2 : 219 : 219 : 0.1
+T: 0 2 : 219 : 155 : 0.9
+T: 0 2 : 218 : 218 : 0.1
+T: 0 2 : 218 : 154 : 0.9
+T: 0 2 : 217 : 217 : 0.1
+T: 0 2 : 217 : 153 : 0.9
+T: 0 2 : 216 : 216 : 0.1
+T: 0 2 : 216 : 152 : 0.9
+T: 0 2 : 215 : 215 : 0.1
+T: 0 2 : 215 : 151 : 0.9
+T: 0 2 : 214 : 214 : 0.1
+T: 0 2 : 214 : 150 : 0.9
+T: 0 2 : 213 : 213 : 0.1
+T: 0 2 : 213 : 149 : 0.9
+T: 0 2 : 212 : 212 : 0.1
+T: 0 2 : 212 : 148 : 0.9
+T: 0 2 : 211 : 211 : 0.1
+T: 0 2 : 211 : 147 : 0.9
+T: 0 2 : 210 : 210 : 0.1
+T: 0 2 : 210 : 146 : 0.9
+T: 0 2 : 209 : 209 : 0.1
+T: 0 2 : 209 : 145 : 0.9
+T: 0 2 : 208 : 208 : 0.1
+T: 0 2 : 208 : 144 : 0.9
+T: 0 2 : 207 : 207 : 0.1
+T: 0 2 : 207 : 143 : 0.9
+T: 0 2 : 206 : 206 : 0.1
+T: 0 2 : 206 : 142 : 0.9
+T: 0 2 : 205 : 205 : 0.1
+T: 0 2 : 205 : 141 : 0.9
+T: 0 2 : 204 : 204 : 0.1
+T: 0 2 : 204 : 140 : 0.9
+T: 0 2 : 203 : 203 : 0.1
+T: 0 2 : 203 : 139 : 0.9
+T: 0 2 : 202 : 202 : 0.1
+T: 0 2 : 202 : 138 : 0.9
+T: 0 2 : 201 : 201 : 0.1
+T: 0 2 : 201 : 137 : 0.9
+T: 0 2 : 200 : 200 : 0.1
+T: 0 2 : 200 : 136 : 0.9
+T: 0 2 : 199 : 199 : 0.1
+T: 0 2 : 199 : 135 : 0.9
+T: 0 2 : 198 : 198 : 0.1
+T: 0 2 : 198 : 134 : 0.9
+T: 0 2 : 197 : 197 : 0.1
+T: 0 2 : 197 : 133 : 0.9
+T: 0 2 : 196 : 196 : 0.1
+T: 0 2 : 196 : 132 : 0.9
+T: 0 2 : 195 : 195 : 0.1
+T: 0 2 : 195 : 131 : 0.9
+T: 0 2 : 194 : 194 : 0.1
+T: 0 2 : 194 : 130 : 0.9
+T: 0 2 : 193 : 193 : 0.1
+T: 0 2 : 193 : 129 : 0.9
+T: 0 2 : 192 : 192 : 0.1
+T: 0 2 : 192 : 128 : 0.9
+T: 0 2 : 191 : 191 : 0.1
+T: 0 2 : 191 : 159 : 0.9
+T: 0 2 : 190 : 190 : 0.1
+T: 0 2 : 190 : 158 : 0.9
+T: 0 2 : 189 : 189 : 0.1
+T: 0 2 : 189 : 157 : 0.9
+T: 0 2 : 188 : 188 : 0.1
+T: 0 2 : 188 : 156 : 0.9
+T: 0 2 : 187 : 187 : 0.1
+T: 0 2 : 187 : 155 : 0.9
+T: 0 2 : 186 : 186 : 0.1
+T: 0 2 : 186 : 154 : 0.9
+T: 0 2 : 185 : 185 : 0.1
+T: 0 2 : 185 : 153 : 0.9
+T: 0 2 : 184 : 184 : 0.1
+T: 0 2 : 184 : 152 : 0.9
+T: 0 2 : 183 : 183 : 0.1
+T: 0 2 : 183 : 151 : 0.9
+T: 0 2 : 182 : 182 : 0.1
+T: 0 2 : 182 : 150 : 0.9
+T: 0 2 : 181 : 181 : 0.1
+T: 0 2 : 181 : 149 : 0.9
+T: 0 2 : 180 : 180 : 0.1
+T: 0 2 : 180 : 148 : 0.9
+T: 0 2 : 179 : 179 : 0.1
+T: 0 2 : 179 : 147 : 0.9
+T: 0 2 : 178 : 178 : 0.1
+T: 0 2 : 178 : 146 : 0.9
+T: 0 2 : 177 : 177 : 0.1
+T: 0 2 : 177 : 145 : 0.9
+T: 0 2 : 176 : 176 : 0.1
+T: 0 2 : 176 : 144 : 0.9
+T: 0 2 : 175 : 175 : 0.1
+T: 0 2 : 175 : 143 : 0.9
+T: 0 2 : 174 : 174 : 0.1
+T: 0 2 : 174 : 142 : 0.9
+T: 0 2 : 173 : 173 : 0.1
+T: 0 2 : 173 : 141 : 0.9
+T: 0 2 : 172 : 172 : 0.1
+T: 0 2 : 172 : 140 : 0.9
+T: 0 2 : 171 : 171 : 0.1
+T: 0 2 : 171 : 139 : 0.9
+T: 0 2 : 170 : 170 : 0.1
+T: 0 2 : 170 : 138 : 0.9
+T: 0 2 : 169 : 169 : 0.1
+T: 0 2 : 169 : 137 : 0.9
+T: 0 2 : 168 : 168 : 0.1
+T: 0 2 : 168 : 136 : 0.9
+T: 0 2 : 167 : 167 : 0.1
+T: 0 2 : 167 : 135 : 0.9
+T: 0 2 : 166 : 166 : 0.1
+T: 0 2 : 166 : 134 : 0.9
+T: 0 2 : 77 : 77 : 0.1
+T: 0 2 : 77 : 13 : 0.9
+T: 0 2 : 76 : 76 : 0.1
+T: 0 2 : 76 : 12 : 0.9
+T: 0 2 : 75 : 75 : 0.1
+T: 0 2 : 75 : 11 : 0.9
+T: 0 2 : 74 : 74 : 0.1
+T: 0 2 : 74 : 10 : 0.9
+T: 0 2 : 73 : 73 : 0.1
+T: 0 2 : 73 : 9 : 0.9
+T: 0 2 : 72 : 72 : 0.1
+T: 0 2 : 72 : 8 : 0.9
+T: 0 2 : 71 : 71 : 0.1
+T: 0 2 : 71 : 7 : 0.9
+T: 0 2 : 70 : 70 : 0.1
+T: 0 2 : 70 : 6 : 0.9
+T: 0 2 : 69 : 69 : 0.1
+T: 0 2 : 69 : 5 : 0.9
+T: 0 2 : 68 : 68 : 0.1
+T: 0 2 : 68 : 4 : 0.9
+T: 0 2 : 67 : 67 : 0.1
+T: 0 2 : 67 : 3 : 0.9
+T: 0 2 : 66 : 66 : 0.1
+T: 0 2 : 66 : 2 : 0.9
+T: 0 2 : 65 : 65 : 0.1
+T: 0 2 : 65 : 1 : 0.9
+T: 0 2 : 64 : 64 : 0.1
+T: 0 2 : 64 : 0 : 0.9
+T: 0 2 : 63 : 63 : 0.1
+T: 0 2 : 63 : 31 : 0.9
+T: 0 2 : 62 : 62 : 0.1
+T: 0 2 : 62 : 30 : 0.9
+T: 0 2 : 61 : 61 : 0.1
+T: 0 2 : 61 : 29 : 0.9
+T: 0 2 : 60 : 60 : 0.1
+T: 0 2 : 60 : 28 : 0.9
+T: 0 2 : 59 : 59 : 0.1
+T: 0 2 : 59 : 27 : 0.9
+T: 0 2 : 58 : 58 : 0.1
+T: 0 2 : 58 : 26 : 0.9
+T: 0 2 : 57 : 57 : 0.1
+T: 0 2 : 57 : 25 : 0.9
+T: 0 2 : 56 : 56 : 0.1
+T: 0 2 : 56 : 24 : 0.9
+T: 0 2 : 55 : 55 : 0.1
+T: 0 2 : 55 : 23 : 0.9
+T: 0 2 : 54 : 54 : 0.1
+T: 0 2 : 54 : 22 : 0.9
+T: 0 2 : 53 : 53 : 0.1
+T: 0 2 : 53 : 21 : 0.9
+T: 0 2 : 52 : 52 : 0.1
+T: 0 2 : 52 : 20 : 0.9
+T: 0 2 : 51 : 51 : 0.1
+T: 0 2 : 51 : 19 : 0.9
+T: 0 2 : 50 : 50 : 0.1
+T: 0 2 : 50 : 18 : 0.9
+T: 0 2 : 49 : 49 : 0.1
+T: 0 2 : 49 : 17 : 0.9
+T: 0 2 : 48 : 48 : 0.1
+T: 0 2 : 48 : 16 : 0.9
+T: 0 2 : 47 : 47 : 0.1
+T: 0 2 : 47 : 15 : 0.9
+T: 0 2 : 46 : 46 : 0.1
+T: 0 2 : 46 : 14 : 0.9
+T: 0 2 : 45 : 45 : 0.1
+T: 0 2 : 45 : 13 : 0.9
+T: 0 2 : 44 : 44 : 0.1
+T: 0 2 : 44 : 12 : 0.9
+T: 0 2 : 43 : 43 : 0.1
+T: 0 2 : 43 : 11 : 0.9
+T: 0 2 : 42 : 42 : 0.1
+T: 0 2 : 42 : 10 : 0.9
+T: 0 2 : 41 : 41 : 0.1
+T: 0 2 : 41 : 9 : 0.9
+T: 0 2 : 40 : 40 : 0.1
+T: 0 2 : 40 : 8 : 0.9
+T: 0 2 : 39 : 39 : 0.1
+T: 0 2 : 39 : 7 : 0.9
+T: 0 2 : 38 : 38 : 0.1
+T: 0 2 : 38 : 6 : 0.9
+T: 0 2 : 37 : 37 : 0.1
+T: 0 2 : 37 : 5 : 0.9
+T: 0 2 : 36 : 36 : 0.1
+T: 0 2 : 36 : 4 : 0.9
+T: 0 2 : 15 : 15 : 1
+T: 0 2 : 14 : 14 : 1
+T: 0 2 : 13 : 13 : 1
+T: 0 2 : 12 : 12 : 1
+T: 0 2 : 11 : 11 : 1
+T: 0 2 : 10 : 10 : 1
+T: 0 2 : 9 : 9 : 1
+T: 0 2 : 8 : 8 : 1
+T: 0 2 : 7 : 7 : 1
+T: 0 2 : 6 : 6 : 1
+T: 0 2 : 1 : 1 : 1
+T: 0 2 : 0 : 0 : 1
+T: 0 2 : 2 : 2 : 1
+T: 0 2 : 3 : 3 : 1
+T: 0 2 : 4 : 4 : 1
+T: 0 2 : 5 : 5 : 1
+T: 0 2 : 16 : 16 : 1
+T: 0 2 : 17 : 17 : 1
+T: 0 2 : 18 : 18 : 1
+T: 0 2 : 19 : 19 : 1
+T: 0 2 : 20 : 20 : 1
+T: 0 2 : 21 : 21 : 1
+T: 0 2 : 22 : 22 : 1
+T: 0 2 : 23 : 23 : 1
+T: 0 2 : 24 : 24 : 1
+T: 0 2 : 25 : 25 : 1
+T: 0 2 : 26 : 26 : 1
+T: 0 2 : 27 : 27 : 1
+T: 0 2 : 28 : 28 : 1
+T: 0 2 : 29 : 29 : 1
+T: 0 2 : 30 : 30 : 1
+T: 0 2 : 31 : 31 : 1
+T: 0 2 : 32 : 32 : 0.1
+T: 0 2 : 32 : 0 : 0.9
+T: 0 2 : 33 : 33 : 0.1
+T: 0 2 : 33 : 1 : 0.9
+T: 0 2 : 34 : 34 : 0.1
+T: 0 2 : 34 : 2 : 0.9
+T: 0 2 : 35 : 35 : 0.1
+T: 0 2 : 35 : 3 : 0.9
+T: 0 2 : 78 : 78 : 0.1
+T: 0 2 : 78 : 14 : 0.9
+T: 0 2 : 79 : 79 : 0.1
+T: 0 2 : 79 : 15 : 0.9
+T: 0 2 : 80 : 80 : 0.1
+T: 0 2 : 80 : 16 : 0.9
+T: 0 2 : 81 : 81 : 0.1
+T: 0 2 : 81 : 17 : 0.9
+T: 0 2 : 82 : 82 : 0.1
+T: 0 2 : 82 : 18 : 0.9
+T: 0 2 : 83 : 83 : 0.1
+T: 0 2 : 83 : 19 : 0.9
+T: 0 2 : 84 : 84 : 0.1
+T: 0 2 : 84 : 20 : 0.9
+T: 0 2 : 85 : 85 : 0.1
+T: 0 2 : 85 : 21 : 0.9
+T: 0 2 : 86 : 86 : 0.1
+T: 0 2 : 86 : 22 : 0.9
+T: 0 2 : 87 : 87 : 0.1
+T: 0 2 : 87 : 23 : 0.9
+T: 0 2 : 88 : 88 : 0.1
+T: 0 2 : 88 : 24 : 0.9
+T: 0 2 : 89 : 89 : 0.1
+T: 0 2 : 89 : 25 : 0.9
+T: 0 2 : 90 : 90 : 0.1
+T: 0 2 : 90 : 26 : 0.9
+T: 0 2 : 91 : 91 : 0.1
+T: 0 2 : 91 : 27 : 0.9
+T: 0 2 : 92 : 92 : 0.1
+T: 0 2 : 92 : 28 : 0.9
+T: 0 2 : 93 : 93 : 0.1
+T: 0 2 : 93 : 29 : 0.9
+T: 0 2 : 94 : 94 : 0.1
+T: 0 2 : 94 : 30 : 0.9
+T: 0 2 : 95 : 95 : 0.1
+T: 0 2 : 95 : 31 : 0.9
+T: 0 2 : 96 : 96 : 0.01
+T: 0 2 : 96 : 64 : 0.09
+T: 0 2 : 96 : 0 : 0.81
+T: 0 2 : 96 : 32 : 0.09
+T: 0 2 : 97 : 97 : 0.01
+T: 0 2 : 97 : 65 : 0.09
+T: 0 2 : 97 : 1 : 0.81
+T: 0 2 : 97 : 33 : 0.09
+T: 0 2 : 98 : 98 : 0.01
+T: 0 2 : 98 : 66 : 0.09
+T: 0 2 : 98 : 2 : 0.81
+T: 0 2 : 98 : 34 : 0.09
+T: 0 2 : 99 : 99 : 0.01
+T: 0 2 : 99 : 67 : 0.09
+T: 0 2 : 99 : 3 : 0.81
+T: 0 2 : 99 : 35 : 0.09
+T: 0 2 : 100 : 100 : 0.01
+T: 0 2 : 100 : 68 : 0.09
+T: 0 2 : 100 : 4 : 0.81
+T: 0 2 : 100 : 36 : 0.09
+T: 0 2 : 101 : 101 : 0.01
+T: 0 2 : 101 : 69 : 0.09
+T: 0 2 : 101 : 5 : 0.81
+T: 0 2 : 101 : 37 : 0.09
+T: 0 2 : 102 : 102 : 0.01
+T: 0 2 : 102 : 70 : 0.09
+T: 0 2 : 102 : 6 : 0.81
+T: 0 2 : 102 : 38 : 0.09
+T: 0 2 : 103 : 103 : 0.01
+T: 0 2 : 103 : 71 : 0.09
+T: 0 2 : 103 : 7 : 0.81
+T: 0 2 : 103 : 39 : 0.09
+T: 0 2 : 104 : 104 : 0.01
+T: 0 2 : 104 : 72 : 0.09
+T: 0 2 : 104 : 8 : 0.81
+T: 0 2 : 104 : 40 : 0.09
+T: 0 2 : 105 : 105 : 0.01
+T: 0 2 : 105 : 73 : 0.09
+T: 0 2 : 105 : 9 : 0.81
+T: 0 2 : 105 : 41 : 0.09
+T: 0 2 : 106 : 106 : 0.01
+T: 0 2 : 106 : 74 : 0.09
+T: 0 2 : 106 : 10 : 0.81
+T: 0 2 : 106 : 42 : 0.09
+T: 0 2 : 107 : 107 : 0.01
+T: 0 2 : 107 : 75 : 0.09
+T: 0 2 : 107 : 11 : 0.81
+T: 0 2 : 107 : 43 : 0.09
+T: 0 2 : 108 : 108 : 0.01
+T: 0 2 : 108 : 76 : 0.09
+T: 0 2 : 108 : 12 : 0.81
+T: 0 2 : 108 : 44 : 0.09
+T: 0 2 : 109 : 109 : 0.01
+T: 0 2 : 109 : 77 : 0.09
+T: 0 2 : 109 : 13 : 0.81
+T: 0 2 : 109 : 45 : 0.09
+T: 0 2 : 110 : 110 : 0.01
+T: 0 2 : 110 : 78 : 0.09
+T: 0 2 : 110 : 14 : 0.81
+T: 0 2 : 110 : 46 : 0.09
+T: 0 2 : 111 : 111 : 0.01
+T: 0 2 : 111 : 79 : 0.09
+T: 0 2 : 111 : 15 : 0.81
+T: 0 2 : 111 : 47 : 0.09
+T: 0 2 : 112 : 112 : 0.01
+T: 0 2 : 112 : 80 : 0.09
+T: 0 2 : 112 : 16 : 0.81
+T: 0 2 : 112 : 48 : 0.09
+T: 0 2 : 113 : 113 : 0.01
+T: 0 2 : 113 : 81 : 0.09
+T: 0 2 : 113 : 17 : 0.81
+T: 0 2 : 113 : 49 : 0.09
+T: 0 2 : 114 : 114 : 0.01
+T: 0 2 : 114 : 82 : 0.09
+T: 0 2 : 114 : 18 : 0.81
+T: 0 2 : 114 : 50 : 0.09
+T: 0 2 : 115 : 115 : 0.01
+T: 0 2 : 115 : 83 : 0.09
+T: 0 2 : 115 : 19 : 0.81
+T: 0 2 : 115 : 51 : 0.09
+T: 0 2 : 116 : 116 : 0.01
+T: 0 2 : 116 : 84 : 0.09
+T: 0 2 : 116 : 20 : 0.81
+T: 0 2 : 116 : 52 : 0.09
+T: 0 2 : 117 : 117 : 0.01
+T: 0 2 : 117 : 85 : 0.09
+T: 0 2 : 117 : 21 : 0.81
+T: 0 2 : 117 : 53 : 0.09
+T: 0 2 : 118 : 118 : 0.01
+T: 0 2 : 118 : 86 : 0.09
+T: 0 2 : 118 : 22 : 0.81
+T: 0 2 : 118 : 54 : 0.09
+T: 0 2 : 119 : 119 : 0.01
+T: 0 2 : 119 : 87 : 0.09
+T: 0 2 : 119 : 23 : 0.81
+T: 0 2 : 119 : 55 : 0.09
+T: 0 2 : 120 : 120 : 0.01
+T: 0 2 : 120 : 88 : 0.09
+T: 0 2 : 120 : 24 : 0.81
+T: 0 2 : 120 : 56 : 0.09
+T: 0 2 : 121 : 121 : 0.01
+T: 0 2 : 121 : 89 : 0.09
+T: 0 2 : 121 : 25 : 0.81
+T: 0 2 : 121 : 57 : 0.09
+T: 0 2 : 122 : 122 : 0.01
+T: 0 2 : 122 : 90 : 0.09
+T: 0 2 : 122 : 26 : 0.81
+T: 0 2 : 122 : 58 : 0.09
+T: 0 2 : 123 : 123 : 0.01
+T: 0 2 : 123 : 91 : 0.09
+T: 0 2 : 123 : 27 : 0.81
+T: 0 2 : 123 : 59 : 0.09
+T: 0 2 : 124 : 124 : 0.01
+T: 0 2 : 124 : 92 : 0.09
+T: 0 2 : 124 : 28 : 0.81
+T: 0 2 : 124 : 60 : 0.09
+T: 0 2 : 125 : 125 : 0.01
+T: 0 2 : 125 : 93 : 0.09
+T: 0 2 : 125 : 29 : 0.81
+T: 0 2 : 125 : 61 : 0.09
+T: 0 2 : 126 : 126 : 0.01
+T: 0 2 : 126 : 94 : 0.09
+T: 0 2 : 126 : 30 : 0.81
+T: 0 2 : 126 : 62 : 0.09
+T: 0 2 : 127 : 127 : 0.01
+T: 0 2 : 127 : 95 : 0.09
+T: 0 2 : 127 : 31 : 0.81
+T: 0 2 : 127 : 63 : 0.09
+T: 0 2 : 128 : 128 : 1
+T: 0 2 : 129 : 129 : 1
+T: 0 2 : 130 : 130 : 1
+T: 0 2 : 131 : 131 : 1
+T: 0 2 : 132 : 132 : 1
+T: 0 2 : 133 : 133 : 1
+T: 0 2 : 134 : 134 : 1
+T: 0 2 : 135 : 135 : 1
+T: 0 2 : 136 : 136 : 1
+T: 0 2 : 137 : 137 : 1
+T: 0 2 : 138 : 138 : 1
+T: 0 2 : 139 : 139 : 1
+T: 0 2 : 140 : 140 : 1
+T: 0 2 : 141 : 141 : 1
+T: 0 2 : 142 : 142 : 1
+T: 0 2 : 143 : 143 : 1
+T: 0 2 : 144 : 144 : 1
+T: 0 2 : 145 : 145 : 1
+T: 0 2 : 146 : 146 : 1
+T: 0 2 : 147 : 147 : 1
+T: 0 2 : 148 : 148 : 1
+T: 0 2 : 149 : 149 : 1
+T: 0 2 : 150 : 150 : 1
+T: 0 2 : 151 : 151 : 1
+T: 0 2 : 152 : 152 : 1
+T: 0 2 : 153 : 153 : 1
+T: 0 2 : 154 : 154 : 1
+T: 0 2 : 155 : 155 : 1
+T: 0 2 : 156 : 156 : 1
+T: 0 2 : 157 : 157 : 1
+T: 0 2 : 158 : 158 : 1
+T: 0 2 : 159 : 159 : 1
+T: 0 2 : 160 : 160 : 0.1
+T: 0 2 : 160 : 128 : 0.9
+T: 0 2 : 161 : 161 : 0.1
+T: 0 2 : 161 : 129 : 0.9
+T: 0 2 : 162 : 162 : 0.1
+T: 0 2 : 162 : 130 : 0.9
+T: 0 2 : 163 : 163 : 0.1
+T: 0 2 : 163 : 131 : 0.9
+T: 0 2 : 164 : 164 : 0.1
+T: 0 2 : 164 : 132 : 0.9
+T: 0 2 : 165 : 165 : 0.1
+T: 0 2 : 165 : 133 : 0.9
+T: 0 0 : 255 : 255 : 0.01
+T: 0 0 : 255 : 239 : 0.09
+T: 0 0 : 255 : 175 : 0.81
+T: 0 0 : 255 : 191 : 0.09
+T: 0 0 : 254 : 254 : 0.01
+T: 0 0 : 254 : 238 : 0.09
+T: 0 0 : 254 : 174 : 0.81
+T: 0 0 : 254 : 190 : 0.09
+T: 0 0 : 253 : 253 : 0.01
+T: 0 0 : 253 : 237 : 0.09
+T: 0 0 : 253 : 173 : 0.81
+T: 0 0 : 253 : 189 : 0.09
+T: 0 0 : 252 : 252 : 0.01
+T: 0 0 : 252 : 236 : 0.09
+T: 0 0 : 252 : 172 : 0.81
+T: 0 0 : 252 : 188 : 0.09
+T: 0 0 : 251 : 251 : 0.01
+T: 0 0 : 251 : 235 : 0.09
+T: 0 0 : 251 : 171 : 0.81
+T: 0 0 : 251 : 187 : 0.09
+T: 0 0 : 250 : 250 : 0.01
+T: 0 0 : 250 : 234 : 0.09
+T: 0 0 : 250 : 170 : 0.81
+T: 0 0 : 250 : 186 : 0.09
+T: 0 0 : 249 : 249 : 0.01
+T: 0 0 : 249 : 233 : 0.09
+T: 0 0 : 249 : 169 : 0.81
+T: 0 0 : 249 : 185 : 0.09
+T: 0 0 : 248 : 248 : 0.01
+T: 0 0 : 248 : 232 : 0.09
+T: 0 0 : 248 : 168 : 0.81
+T: 0 0 : 248 : 184 : 0.09
+T: 0 0 : 247 : 247 : 0.01
+T: 0 0 : 247 : 231 : 0.09
+T: 0 0 : 247 : 167 : 0.81
+T: 0 0 : 247 : 183 : 0.09
+T: 0 0 : 246 : 246 : 0.01
+T: 0 0 : 246 : 230 : 0.09
+T: 0 0 : 246 : 166 : 0.81
+T: 0 0 : 246 : 182 : 0.09
+T: 0 0 : 245 : 245 : 0.01
+T: 0 0 : 245 : 229 : 0.09
+T: 0 0 : 245 : 165 : 0.81
+T: 0 0 : 245 : 181 : 0.09
+T: 0 0 : 244 : 244 : 0.01
+T: 0 0 : 244 : 228 : 0.09
+T: 0 0 : 244 : 164 : 0.81
+T: 0 0 : 244 : 180 : 0.09
+T: 0 0 : 243 : 243 : 0.01
+T: 0 0 : 243 : 227 : 0.09
+T: 0 0 : 243 : 163 : 0.81
+T: 0 0 : 243 : 179 : 0.09
+T: 0 0 : 242 : 242 : 0.01
+T: 0 0 : 242 : 226 : 0.09
+T: 0 0 : 242 : 162 : 0.81
+T: 0 0 : 242 : 178 : 0.09
+T: 0 0 : 241 : 241 : 0.01
+T: 0 0 : 241 : 225 : 0.09
+T: 0 0 : 241 : 161 : 0.81
+T: 0 0 : 241 : 177 : 0.09
+T: 0 0 : 240 : 240 : 0.01
+T: 0 0 : 240 : 224 : 0.09
+T: 0 0 : 240 : 160 : 0.81
+T: 0 0 : 240 : 176 : 0.09
+T: 0 0 : 239 : 239 : 0.1
+T: 0 0 : 239 : 175 : 0.9
+T: 0 0 : 238 : 238 : 0.1
+T: 0 0 : 238 : 174 : 0.9
+T: 0 0 : 237 : 237 : 0.1
+T: 0 0 : 237 : 173 : 0.9
+T: 0 0 : 236 : 236 : 0.1
+T: 0 0 : 236 : 172 : 0.9
+T: 0 0 : 235 : 235 : 0.1
+T: 0 0 : 235 : 171 : 0.9
+T: 0 0 : 234 : 234 : 0.1
+T: 0 0 : 234 : 170 : 0.9
+T: 0 0 : 233 : 233 : 0.1
+T: 0 0 : 233 : 169 : 0.9
+T: 0 0 : 232 : 232 : 0.1
+T: 0 0 : 232 : 168 : 0.9
+T: 0 0 : 231 : 231 : 0.1
+T: 0 0 : 231 : 167 : 0.9
+T: 0 0 : 230 : 230 : 0.1
+T: 0 0 : 230 : 166 : 0.9
+T: 0 0 : 229 : 229 : 0.1
+T: 0 0 : 229 : 165 : 0.9
+T: 0 0 : 228 : 228 : 0.1
+T: 0 0 : 228 : 164 : 0.9
+T: 0 0 : 227 : 227 : 0.1
+T: 0 0 : 227 : 163 : 0.9
+T: 0 0 : 226 : 226 : 0.1
+T: 0 0 : 226 : 162 : 0.9
+T: 0 0 : 225 : 225 : 0.1
+T: 0 0 : 225 : 161 : 0.9
+T: 0 0 : 224 : 224 : 0.1
+T: 0 0 : 224 : 160 : 0.9
+T: 0 0 : 223 : 223 : 0.01
+T: 0 0 : 223 : 207 : 0.09
+T: 0 0 : 223 : 143 : 0.81
+T: 0 0 : 223 : 159 : 0.09
+T: 0 0 : 222 : 222 : 0.01
+T: 0 0 : 222 : 206 : 0.09
+T: 0 0 : 222 : 142 : 0.81
+T: 0 0 : 222 : 158 : 0.09
+T: 0 0 : 221 : 221 : 0.01
+T: 0 0 : 221 : 205 : 0.09
+T: 0 0 : 221 : 141 : 0.81
+T: 0 0 : 221 : 157 : 0.09
+T: 0 0 : 220 : 220 : 0.01
+T: 0 0 : 220 : 204 : 0.09
+T: 0 0 : 220 : 140 : 0.81
+T: 0 0 : 220 : 156 : 0.09
+T: 0 0 : 219 : 219 : 0.01
+T: 0 0 : 219 : 203 : 0.09
+T: 0 0 : 219 : 139 : 0.81
+T: 0 0 : 219 : 155 : 0.09
+T: 0 0 : 218 : 218 : 0.01
+T: 0 0 : 218 : 202 : 0.09
+T: 0 0 : 218 : 138 : 0.81
+T: 0 0 : 218 : 154 : 0.09
+T: 0 0 : 217 : 217 : 0.01
+T: 0 0 : 217 : 201 : 0.09
+T: 0 0 : 217 : 137 : 0.81
+T: 0 0 : 217 : 153 : 0.09
+T: 0 0 : 216 : 216 : 0.01
+T: 0 0 : 216 : 200 : 0.09
+T: 0 0 : 216 : 136 : 0.81
+T: 0 0 : 216 : 152 : 0.09
+T: 0 0 : 215 : 215 : 0.01
+T: 0 0 : 215 : 199 : 0.09
+T: 0 0 : 215 : 135 : 0.81
+T: 0 0 : 215 : 151 : 0.09
+T: 0 0 : 214 : 214 : 0.01
+T: 0 0 : 214 : 198 : 0.09
+T: 0 0 : 214 : 134 : 0.81
+T: 0 0 : 214 : 150 : 0.09
+T: 0 0 : 213 : 213 : 0.01
+T: 0 0 : 213 : 197 : 0.09
+T: 0 0 : 213 : 133 : 0.81
+T: 0 0 : 213 : 149 : 0.09
+T: 0 0 : 212 : 212 : 0.01
+T: 0 0 : 212 : 196 : 0.09
+T: 0 0 : 212 : 132 : 0.81
+T: 0 0 : 212 : 148 : 0.09
+T: 0 0 : 211 : 211 : 0.01
+T: 0 0 : 211 : 195 : 0.09
+T: 0 0 : 211 : 131 : 0.81
+T: 0 0 : 211 : 147 : 0.09
+T: 0 0 : 210 : 210 : 0.01
+T: 0 0 : 210 : 194 : 0.09
+T: 0 0 : 210 : 130 : 0.81
+T: 0 0 : 210 : 146 : 0.09
+T: 0 0 : 209 : 209 : 0.01
+T: 0 0 : 209 : 193 : 0.09
+T: 0 0 : 209 : 129 : 0.81
+T: 0 0 : 209 : 145 : 0.09
+T: 0 0 : 208 : 208 : 0.01
+T: 0 0 : 208 : 192 : 0.09
+T: 0 0 : 208 : 128 : 0.81
+T: 0 0 : 208 : 144 : 0.09
+T: 0 0 : 207 : 207 : 0.1
+T: 0 0 : 207 : 143 : 0.9
+T: 0 0 : 206 : 206 : 0.1
+T: 0 0 : 206 : 142 : 0.9
+T: 0 0 : 205 : 205 : 0.1
+T: 0 0 : 205 : 141 : 0.9
+T: 0 0 : 204 : 204 : 0.1
+T: 0 0 : 204 : 140 : 0.9
+T: 0 0 : 203 : 203 : 0.1
+T: 0 0 : 203 : 139 : 0.9
+T: 0 0 : 202 : 202 : 0.1
+T: 0 0 : 202 : 138 : 0.9
+T: 0 0 : 201 : 201 : 0.1
+T: 0 0 : 201 : 137 : 0.9
+T: 0 0 : 200 : 200 : 0.1
+T: 0 0 : 200 : 136 : 0.9
+T: 0 0 : 199 : 199 : 0.1
+T: 0 0 : 199 : 135 : 0.9
+T: 0 0 : 198 : 198 : 0.1
+T: 0 0 : 198 : 134 : 0.9
+T: 0 0 : 197 : 197 : 0.1
+T: 0 0 : 197 : 133 : 0.9
+T: 0 0 : 196 : 196 : 0.1
+T: 0 0 : 196 : 132 : 0.9
+T: 0 0 : 195 : 195 : 0.1
+T: 0 0 : 195 : 131 : 0.9
+T: 0 0 : 194 : 194 : 0.1
+T: 0 0 : 194 : 130 : 0.9
+T: 0 0 : 193 : 193 : 0.1
+T: 0 0 : 193 : 129 : 0.9
+T: 0 0 : 192 : 192 : 0.1
+T: 0 0 : 192 : 128 : 0.9
+T: 0 0 : 191 : 191 : 0.1
+T: 0 0 : 191 : 175 : 0.9
+T: 0 0 : 190 : 190 : 0.1
+T: 0 0 : 190 : 174 : 0.9
+T: 0 0 : 189 : 189 : 0.1
+T: 0 0 : 189 : 173 : 0.9
+T: 0 0 : 188 : 188 : 0.1
+T: 0 0 : 188 : 172 : 0.9
+T: 0 0 : 187 : 187 : 0.1
+T: 0 0 : 187 : 171 : 0.9
+T: 0 0 : 186 : 186 : 0.1
+T: 0 0 : 186 : 170 : 0.9
+T: 0 0 : 185 : 185 : 0.1
+T: 0 0 : 185 : 169 : 0.9
+T: 0 0 : 184 : 184 : 0.1
+T: 0 0 : 184 : 168 : 0.9
+T: 0 0 : 183 : 183 : 0.1
+T: 0 0 : 183 : 167 : 0.9
+T: 0 0 : 182 : 182 : 0.1
+T: 0 0 : 182 : 166 : 0.9
+T: 0 0 : 181 : 181 : 0.1
+T: 0 0 : 181 : 165 : 0.9
+T: 0 0 : 180 : 180 : 0.1
+T: 0 0 : 180 : 164 : 0.9
+T: 0 0 : 179 : 179 : 0.1
+T: 0 0 : 179 : 163 : 0.9
+T: 0 0 : 178 : 178 : 0.1
+T: 0 0 : 178 : 162 : 0.9
+T: 0 0 : 177 : 177 : 0.1
+T: 0 0 : 177 : 161 : 0.9
+T: 0 0 : 176 : 176 : 0.1
+T: 0 0 : 176 : 160 : 0.9
+T: 0 0 : 175 : 175 : 1
+T: 0 0 : 174 : 174 : 1
+T: 0 0 : 173 : 173 : 1
+T: 0 0 : 172 : 172 : 1
+T: 0 0 : 171 : 171 : 1
+T: 0 0 : 170 : 170 : 1
+T: 0 0 : 169 : 169 : 1
+T: 0 0 : 168 : 168 : 1
+T: 0 0 : 167 : 167 : 1
+T: 0 0 : 166 : 166 : 1
+T: 0 0 : 77 : 77 : 0.1
+T: 0 0 : 77 : 13 : 0.9
+T: 0 0 : 76 : 76 : 0.1
+T: 0 0 : 76 : 12 : 0.9
+T: 0 0 : 75 : 75 : 0.1
+T: 0 0 : 75 : 11 : 0.9
+T: 0 0 : 74 : 74 : 0.1
+T: 0 0 : 74 : 10 : 0.9
+T: 0 0 : 73 : 73 : 0.1
+T: 0 0 : 73 : 9 : 0.9
+T: 0 0 : 72 : 72 : 0.1
+T: 0 0 : 72 : 8 : 0.9
+T: 0 0 : 71 : 71 : 0.1
+T: 0 0 : 71 : 7 : 0.9
+T: 0 0 : 70 : 70 : 0.1
+T: 0 0 : 70 : 6 : 0.9
+T: 0 0 : 69 : 69 : 0.1
+T: 0 0 : 69 : 5 : 0.9
+T: 0 0 : 68 : 68 : 0.1
+T: 0 0 : 68 : 4 : 0.9
+T: 0 0 : 67 : 67 : 0.1
+T: 0 0 : 67 : 3 : 0.9
+T: 0 0 : 66 : 66 : 0.1
+T: 0 0 : 66 : 2 : 0.9
+T: 0 0 : 65 : 65 : 0.1
+T: 0 0 : 65 : 1 : 0.9
+T: 0 0 : 64 : 64 : 0.1
+T: 0 0 : 64 : 0 : 0.9
+T: 0 0 : 63 : 63 : 0.1
+T: 0 0 : 63 : 47 : 0.9
+T: 0 0 : 62 : 62 : 0.1
+T: 0 0 : 62 : 46 : 0.9
+T: 0 0 : 61 : 61 : 0.1
+T: 0 0 : 61 : 45 : 0.9
+T: 0 0 : 60 : 60 : 0.1
+T: 0 0 : 60 : 44 : 0.9
+T: 0 0 : 59 : 59 : 0.1
+T: 0 0 : 59 : 43 : 0.9
+T: 0 0 : 58 : 58 : 0.1
+T: 0 0 : 58 : 42 : 0.9
+T: 0 0 : 57 : 57 : 0.1
+T: 0 0 : 57 : 41 : 0.9
+T: 0 0 : 56 : 56 : 0.1
+T: 0 0 : 56 : 40 : 0.9
+T: 0 0 : 55 : 55 : 0.1
+T: 0 0 : 55 : 39 : 0.9
+T: 0 0 : 54 : 54 : 0.1
+T: 0 0 : 54 : 38 : 0.9
+T: 0 0 : 53 : 53 : 0.1
+T: 0 0 : 53 : 37 : 0.9
+T: 0 0 : 52 : 52 : 0.1
+T: 0 0 : 52 : 36 : 0.9
+T: 0 0 : 51 : 51 : 0.1
+T: 0 0 : 51 : 35 : 0.9
+T: 0 0 : 50 : 50 : 0.1
+T: 0 0 : 50 : 34 : 0.9
+T: 0 0 : 49 : 49 : 0.1
+T: 0 0 : 49 : 33 : 0.9
+T: 0 0 : 48 : 48 : 0.1
+T: 0 0 : 48 : 32 : 0.9
+T: 0 0 : 47 : 47 : 1
+T: 0 0 : 46 : 46 : 1
+T: 0 0 : 45 : 45 : 1
+T: 0 0 : 44 : 44 : 1
+T: 0 0 : 43 : 43 : 1
+T: 0 0 : 42 : 42 : 1
+T: 0 0 : 41 : 41 : 1
+T: 0 0 : 40 : 40 : 1
+T: 0 0 : 39 : 39 : 1
+T: 0 0 : 38 : 38 : 1
+T: 0 0 : 37 : 37 : 1
+T: 0 0 : 36 : 36 : 1
+T: 0 0 : 15 : 15 : 1
+T: 0 0 : 14 : 14 : 1
+T: 0 0 : 13 : 13 : 1
+T: 0 0 : 12 : 12 : 1
+T: 0 0 : 11 : 11 : 1
+T: 0 0 : 10 : 10 : 1
+T: 0 0 : 9 : 9 : 1
+T: 0 0 : 8 : 8 : 1
+T: 0 0 : 7 : 7 : 1
+T: 0 0 : 6 : 6 : 1
+T: 0 0 : 1 : 1 : 1
+T: 0 0 : 0 : 0 : 1
+T: 0 0 : 2 : 2 : 1
+T: 0 0 : 3 : 3 : 1
+T: 0 0 : 4 : 4 : 1
+T: 0 0 : 5 : 5 : 1
+T: 0 0 : 16 : 16 : 0.1
+T: 0 0 : 16 : 0 : 0.9
+T: 0 0 : 17 : 17 : 0.1
+T: 0 0 : 17 : 1 : 0.9
+T: 0 0 : 18 : 18 : 0.1
+T: 0 0 : 18 : 2 : 0.9
+T: 0 0 : 19 : 19 : 0.1
+T: 0 0 : 19 : 3 : 0.9
+T: 0 0 : 20 : 20 : 0.1
+T: 0 0 : 20 : 4 : 0.9
+T: 0 0 : 21 : 21 : 0.1
+T: 0 0 : 21 : 5 : 0.9
+T: 0 0 : 22 : 22 : 0.1
+T: 0 0 : 22 : 6 : 0.9
+T: 0 0 : 23 : 23 : 0.1
+T: 0 0 : 23 : 7 : 0.9
+T: 0 0 : 24 : 24 : 0.1
+T: 0 0 : 24 : 8 : 0.9
+T: 0 0 : 25 : 25 : 0.1
+T: 0 0 : 25 : 9 : 0.9
+T: 0 0 : 26 : 26 : 0.1
+T: 0 0 : 26 : 10 : 0.9
+T: 0 0 : 27 : 27 : 0.1
+T: 0 0 : 27 : 11 : 0.9
+T: 0 0 : 28 : 28 : 0.1
+T: 0 0 : 28 : 12 : 0.9
+T: 0 0 : 29 : 29 : 0.1
+T: 0 0 : 29 : 13 : 0.9
+T: 0 0 : 30 : 30 : 0.1
+T: 0 0 : 30 : 14 : 0.9
+T: 0 0 : 31 : 31 : 0.1
+T: 0 0 : 31 : 15 : 0.9
+T: 0 0 : 32 : 32 : 1
+T: 0 0 : 33 : 33 : 1
+T: 0 0 : 34 : 34 : 1
+T: 0 0 : 35 : 35 : 1
+T: 0 0 : 78 : 78 : 0.1
+T: 0 0 : 78 : 14 : 0.9
+T: 0 0 : 79 : 79 : 0.1
+T: 0 0 : 79 : 15 : 0.9
+T: 0 0 : 80 : 80 : 0.01
+T: 0 0 : 80 : 64 : 0.09
+T: 0 0 : 80 : 0 : 0.81
+T: 0 0 : 80 : 16 : 0.09
+T: 0 0 : 81 : 81 : 0.01
+T: 0 0 : 81 : 65 : 0.09
+T: 0 0 : 81 : 1 : 0.81
+T: 0 0 : 81 : 17 : 0.09
+T: 0 0 : 82 : 82 : 0.01
+T: 0 0 : 82 : 66 : 0.09
+T: 0 0 : 82 : 2 : 0.81
+T: 0 0 : 82 : 18 : 0.09
+T: 0 0 : 83 : 83 : 0.01
+T: 0 0 : 83 : 67 : 0.09
+T: 0 0 : 83 : 3 : 0.81
+T: 0 0 : 83 : 19 : 0.09
+T: 0 0 : 84 : 84 : 0.01
+T: 0 0 : 84 : 68 : 0.09
+T: 0 0 : 84 : 4 : 0.81
+T: 0 0 : 84 : 20 : 0.09
+T: 0 0 : 85 : 85 : 0.01
+T: 0 0 : 85 : 69 : 0.09
+T: 0 0 : 85 : 5 : 0.81
+T: 0 0 : 85 : 21 : 0.09
+T: 0 0 : 86 : 86 : 0.01
+T: 0 0 : 86 : 70 : 0.09
+T: 0 0 : 86 : 6 : 0.81
+T: 0 0 : 86 : 22 : 0.09
+T: 0 0 : 87 : 87 : 0.01
+T: 0 0 : 87 : 71 : 0.09
+T: 0 0 : 87 : 7 : 0.81
+T: 0 0 : 87 : 23 : 0.09
+T: 0 0 : 88 : 88 : 0.01
+T: 0 0 : 88 : 72 : 0.09
+T: 0 0 : 88 : 8 : 0.81
+T: 0 0 : 88 : 24 : 0.09
+T: 0 0 : 89 : 89 : 0.01
+T: 0 0 : 89 : 73 : 0.09
+T: 0 0 : 89 : 9 : 0.81
+T: 0 0 : 89 : 25 : 0.09
+T: 0 0 : 90 : 90 : 0.01
+T: 0 0 : 90 : 74 : 0.09
+T: 0 0 : 90 : 10 : 0.81
+T: 0 0 : 90 : 26 : 0.09
+T: 0 0 : 91 : 91 : 0.01
+T: 0 0 : 91 : 75 : 0.09
+T: 0 0 : 91 : 11 : 0.81
+T: 0 0 : 91 : 27 : 0.09
+T: 0 0 : 92 : 92 : 0.01
+T: 0 0 : 92 : 76 : 0.09
+T: 0 0 : 92 : 12 : 0.81
+T: 0 0 : 92 : 28 : 0.09
+T: 0 0 : 93 : 93 : 0.01
+T: 0 0 : 93 : 77 : 0.09
+T: 0 0 : 93 : 13 : 0.81
+T: 0 0 : 93 : 29 : 0.09
+T: 0 0 : 94 : 94 : 0.01
+T: 0 0 : 94 : 78 : 0.09
+T: 0 0 : 94 : 14 : 0.81
+T: 0 0 : 94 : 30 : 0.09
+T: 0 0 : 95 : 95 : 0.01
+T: 0 0 : 95 : 79 : 0.09
+T: 0 0 : 95 : 15 : 0.81
+T: 0 0 : 95 : 31 : 0.09
+T: 0 0 : 96 : 96 : 0.1
+T: 0 0 : 96 : 32 : 0.9
+T: 0 0 : 97 : 97 : 0.1
+T: 0 0 : 97 : 33 : 0.9
+T: 0 0 : 98 : 98 : 0.1
+T: 0 0 : 98 : 34 : 0.9
+T: 0 0 : 99 : 99 : 0.1
+T: 0 0 : 99 : 35 : 0.9
+T: 0 0 : 100 : 100 : 0.1
+T: 0 0 : 100 : 36 : 0.9
+T: 0 0 : 101 : 101 : 0.1
+T: 0 0 : 101 : 37 : 0.9
+T: 0 0 : 102 : 102 : 0.1
+T: 0 0 : 102 : 38 : 0.9
+T: 0 0 : 103 : 103 : 0.1
+T: 0 0 : 103 : 39 : 0.9
+T: 0 0 : 104 : 104 : 0.1
+T: 0 0 : 104 : 40 : 0.9
+T: 0 0 : 105 : 105 : 0.1
+T: 0 0 : 105 : 41 : 0.9
+T: 0 0 : 106 : 106 : 0.1
+T: 0 0 : 106 : 42 : 0.9
+T: 0 0 : 107 : 107 : 0.1
+T: 0 0 : 107 : 43 : 0.9
+T: 0 0 : 108 : 108 : 0.1
+T: 0 0 : 108 : 44 : 0.9
+T: 0 0 : 109 : 109 : 0.1
+T: 0 0 : 109 : 45 : 0.9
+T: 0 0 : 110 : 110 : 0.1
+T: 0 0 : 110 : 46 : 0.9
+T: 0 0 : 111 : 111 : 0.1
+T: 0 0 : 111 : 47 : 0.9
+T: 0 0 : 112 : 112 : 0.01
+T: 0 0 : 112 : 96 : 0.09
+T: 0 0 : 112 : 32 : 0.81
+T: 0 0 : 112 : 48 : 0.09
+T: 0 0 : 113 : 113 : 0.01
+T: 0 0 : 113 : 97 : 0.09
+T: 0 0 : 113 : 33 : 0.81
+T: 0 0 : 113 : 49 : 0.09
+T: 0 0 : 114 : 114 : 0.01
+T: 0 0 : 114 : 98 : 0.09
+T: 0 0 : 114 : 34 : 0.81
+T: 0 0 : 114 : 50 : 0.09
+T: 0 0 : 115 : 115 : 0.01
+T: 0 0 : 115 : 99 : 0.09
+T: 0 0 : 115 : 35 : 0.81
+T: 0 0 : 115 : 51 : 0.09
+T: 0 0 : 116 : 116 : 0.01
+T: 0 0 : 116 : 100 : 0.09
+T: 0 0 : 116 : 36 : 0.81
+T: 0 0 : 116 : 52 : 0.09
+T: 0 0 : 117 : 117 : 0.01
+T: 0 0 : 117 : 101 : 0.09
+T: 0 0 : 117 : 37 : 0.81
+T: 0 0 : 117 : 53 : 0.09
+T: 0 0 : 118 : 118 : 0.01
+T: 0 0 : 118 : 102 : 0.09
+T: 0 0 : 118 : 38 : 0.81
+T: 0 0 : 118 : 54 : 0.09
+T: 0 0 : 119 : 119 : 0.01
+T: 0 0 : 119 : 103 : 0.09
+T: 0 0 : 119 : 39 : 0.81
+T: 0 0 : 119 : 55 : 0.09
+T: 0 0 : 120 : 120 : 0.01
+T: 0 0 : 120 : 104 : 0.09
+T: 0 0 : 120 : 40 : 0.81
+T: 0 0 : 120 : 56 : 0.09
+T: 0 0 : 121 : 121 : 0.01
+T: 0 0 : 121 : 105 : 0.09
+T: 0 0 : 121 : 41 : 0.81
+T: 0 0 : 121 : 57 : 0.09
+T: 0 0 : 122 : 122 : 0.01
+T: 0 0 : 122 : 106 : 0.09
+T: 0 0 : 122 : 42 : 0.81
+T: 0 0 : 122 : 58 : 0.09
+T: 0 0 : 123 : 123 : 0.01
+T: 0 0 : 123 : 107 : 0.09
+T: 0 0 : 123 : 43 : 0.81
+T: 0 0 : 123 : 59 : 0.09
+T: 0 0 : 124 : 124 : 0.01
+T: 0 0 : 124 : 108 : 0.09
+T: 0 0 : 124 : 44 : 0.81
+T: 0 0 : 124 : 60 : 0.09
+T: 0 0 : 125 : 125 : 0.01
+T: 0 0 : 125 : 109 : 0.09
+T: 0 0 : 125 : 45 : 0.81
+T: 0 0 : 125 : 61 : 0.09
+T: 0 0 : 126 : 126 : 0.01
+T: 0 0 : 126 : 110 : 0.09
+T: 0 0 : 126 : 46 : 0.81
+T: 0 0 : 126 : 62 : 0.09
+T: 0 0 : 127 : 127 : 0.01
+T: 0 0 : 127 : 111 : 0.09
+T: 0 0 : 127 : 47 : 0.81
+T: 0 0 : 127 : 63 : 0.09
+T: 0 0 : 128 : 128 : 1
+T: 0 0 : 129 : 129 : 1
+T: 0 0 : 130 : 130 : 1
+T: 0 0 : 131 : 131 : 1
+T: 0 0 : 132 : 132 : 1
+T: 0 0 : 133 : 133 : 1
+T: 0 0 : 134 : 134 : 1
+T: 0 0 : 135 : 135 : 1
+T: 0 0 : 136 : 136 : 1
+T: 0 0 : 137 : 137 : 1
+T: 0 0 : 138 : 138 : 1
+T: 0 0 : 139 : 139 : 1
+T: 0 0 : 140 : 140 : 1
+T: 0 0 : 141 : 141 : 1
+T: 0 0 : 142 : 142 : 1
+T: 0 0 : 143 : 143 : 1
+T: 0 0 : 144 : 144 : 0.1
+T: 0 0 : 144 : 128 : 0.9
+T: 0 0 : 145 : 145 : 0.1
+T: 0 0 : 145 : 129 : 0.9
+T: 0 0 : 146 : 146 : 0.1
+T: 0 0 : 146 : 130 : 0.9
+T: 0 0 : 147 : 147 : 0.1
+T: 0 0 : 147 : 131 : 0.9
+T: 0 0 : 148 : 148 : 0.1
+T: 0 0 : 148 : 132 : 0.9
+T: 0 0 : 149 : 149 : 0.1
+T: 0 0 : 149 : 133 : 0.9
+T: 0 0 : 150 : 150 : 0.1
+T: 0 0 : 150 : 134 : 0.9
+T: 0 0 : 151 : 151 : 0.1
+T: 0 0 : 151 : 135 : 0.9
+T: 0 0 : 152 : 152 : 0.1
+T: 0 0 : 152 : 136 : 0.9
+T: 0 0 : 153 : 153 : 0.1
+T: 0 0 : 153 : 137 : 0.9
+T: 0 0 : 154 : 154 : 0.1
+T: 0 0 : 154 : 138 : 0.9
+T: 0 0 : 155 : 155 : 0.1
+T: 0 0 : 155 : 139 : 0.9
+T: 0 0 : 156 : 156 : 0.1
+T: 0 0 : 156 : 140 : 0.9
+T: 0 0 : 157 : 157 : 0.1
+T: 0 0 : 157 : 141 : 0.9
+T: 0 0 : 158 : 158 : 0.1
+T: 0 0 : 158 : 142 : 0.9
+T: 0 0 : 159 : 159 : 0.1
+T: 0 0 : 159 : 143 : 0.9
+T: 0 0 : 160 : 160 : 1
+T: 0 0 : 161 : 161 : 1
+T: 0 0 : 162 : 162 : 1
+T: 0 0 : 163 : 163 : 1
+T: 0 0 : 164 : 164 : 1
+T: 0 0 : 165 : 165 : 1
+T: 0 1 : 255 : 255 : 0.1
+T: 0 1 : 255 : 191 : 0.9
+T: 0 1 : 254 : 254 : 0.1
+T: 0 1 : 254 : 190 : 0.9
+T: 0 1 : 253 : 253 : 0.1
+T: 0 1 : 253 : 189 : 0.9
+T: 0 1 : 252 : 252 : 0.1
+T: 0 1 : 252 : 188 : 0.9
+T: 0 1 : 251 : 251 : 0.1
+T: 0 1 : 251 : 187 : 0.9
+T: 0 1 : 250 : 250 : 0.1
+T: 0 1 : 250 : 186 : 0.9
+T: 0 1 : 249 : 249 : 0.1
+T: 0 1 : 249 : 185 : 0.9
+T: 0 1 : 248 : 248 : 0.1
+T: 0 1 : 248 : 184 : 0.9
+T: 0 1 : 247 : 247 : 0.1
+T: 0 1 : 247 : 183 : 0.9
+T: 0 1 : 246 : 246 : 0.1
+T: 0 1 : 246 : 182 : 0.9
+T: 0 1 : 245 : 245 : 0.1
+T: 0 1 : 245 : 181 : 0.9
+T: 0 1 : 244 : 244 : 0.1
+T: 0 1 : 244 : 180 : 0.9
+T: 0 1 : 243 : 243 : 0.1
+T: 0 1 : 243 : 179 : 0.9
+T: 0 1 : 242 : 242 : 0.1
+T: 0 1 : 242 : 178 : 0.9
+T: 0 1 : 241 : 241 : 0.1
+T: 0 1 : 241 : 177 : 0.9
+T: 0 1 : 240 : 240 : 0.1
+T: 0 1 : 240 : 176 : 0.9
+T: 0 1 : 239 : 255 : 0.09
+T: 0 1 : 239 : 239 : 0.01
+T: 0 1 : 239 : 175 : 0.09
+T: 0 1 : 239 : 191 : 0.81
+T: 0 1 : 238 : 254 : 0.09
+T: 0 1 : 238 : 238 : 0.01
+T: 0 1 : 238 : 174 : 0.09
+T: 0 1 : 238 : 190 : 0.81
+T: 0 1 : 237 : 253 : 0.09
+T: 0 1 : 237 : 237 : 0.01
+T: 0 1 : 237 : 173 : 0.09
+T: 0 1 : 237 : 189 : 0.81
+T: 0 1 : 236 : 252 : 0.09
+T: 0 1 : 236 : 236 : 0.01
+T: 0 1 : 236 : 172 : 0.09
+T: 0 1 : 236 : 188 : 0.81
+T: 0 1 : 235 : 251 : 0.09
+T: 0 1 : 235 : 235 : 0.01
+T: 0 1 : 235 : 171 : 0.09
+T: 0 1 : 235 : 187 : 0.81
+T: 0 1 : 234 : 250 : 0.09
+T: 0 1 : 234 : 234 : 0.01
+T: 0 1 : 234 : 170 : 0.09
+T: 0 1 : 234 : 186 : 0.81
+T: 0 1 : 233 : 249 : 0.09
+T: 0 1 : 233 : 233 : 0.01
+T: 0 1 : 233 : 169 : 0.09
+T: 0 1 : 233 : 185 : 0.81
+T: 0 1 : 232 : 248 : 0.09
+T: 0 1 : 232 : 232 : 0.01
+T: 0 1 : 232 : 168 : 0.09
+T: 0 1 : 232 : 184 : 0.81
+T: 0 1 : 231 : 247 : 0.09
+T: 0 1 : 231 : 231 : 0.01
+T: 0 1 : 231 : 167 : 0.09
+T: 0 1 : 231 : 183 : 0.81
+T: 0 1 : 230 : 246 : 0.09
+T: 0 1 : 230 : 230 : 0.01
+T: 0 1 : 230 : 166 : 0.09
+T: 0 1 : 230 : 182 : 0.81
+T: 0 1 : 229 : 245 : 0.09
+T: 0 1 : 229 : 229 : 0.01
+T: 0 1 : 229 : 165 : 0.09
+T: 0 1 : 229 : 181 : 0.81
+T: 0 1 : 228 : 244 : 0.09
+T: 0 1 : 228 : 228 : 0.01
+T: 0 1 : 228 : 164 : 0.09
+T: 0 1 : 228 : 180 : 0.81
+T: 0 1 : 227 : 243 : 0.09
+T: 0 1 : 227 : 227 : 0.01
+T: 0 1 : 227 : 163 : 0.09
+T: 0 1 : 227 : 179 : 0.81
+T: 0 1 : 226 : 242 : 0.09
+T: 0 1 : 226 : 226 : 0.01
+T: 0 1 : 226 : 162 : 0.09
+T: 0 1 : 226 : 178 : 0.81
+T: 0 1 : 225 : 241 : 0.09
+T: 0 1 : 225 : 225 : 0.01
+T: 0 1 : 225 : 161 : 0.09
+T: 0 1 : 225 : 177 : 0.81
+T: 0 1 : 224 : 240 : 0.09
+T: 0 1 : 224 : 224 : 0.01
+T: 0 1 : 224 : 160 : 0.09
+T: 0 1 : 224 : 176 : 0.81
+T: 0 1 : 223 : 223 : 0.1
+T: 0 1 : 223 : 159 : 0.9
+T: 0 1 : 222 : 222 : 0.1
+T: 0 1 : 222 : 158 : 0.9
+T: 0 1 : 221 : 221 : 0.1
+T: 0 1 : 221 : 157 : 0.9
+T: 0 1 : 220 : 220 : 0.1
+T: 0 1 : 220 : 156 : 0.9
+T: 0 1 : 219 : 219 : 0.1
+T: 0 1 : 219 : 155 : 0.9
+T: 0 1 : 218 : 218 : 0.1
+T: 0 1 : 218 : 154 : 0.9
+T: 0 1 : 217 : 217 : 0.1
+T: 0 1 : 217 : 153 : 0.9
+T: 0 1 : 216 : 216 : 0.1
+T: 0 1 : 216 : 152 : 0.9
+T: 0 1 : 215 : 215 : 0.1
+T: 0 1 : 215 : 151 : 0.9
+T: 0 1 : 214 : 214 : 0.1
+T: 0 1 : 214 : 150 : 0.9
+T: 0 1 : 213 : 213 : 0.1
+T: 0 1 : 213 : 149 : 0.9
+T: 0 1 : 212 : 212 : 0.1
+T: 0 1 : 212 : 148 : 0.9
+T: 0 1 : 211 : 211 : 0.1
+T: 0 1 : 211 : 147 : 0.9
+T: 0 1 : 210 : 210 : 0.1
+T: 0 1 : 210 : 146 : 0.9
+T: 0 1 : 209 : 209 : 0.1
+T: 0 1 : 209 : 145 : 0.9
+T: 0 1 : 208 : 208 : 0.1
+T: 0 1 : 208 : 144 : 0.9
+T: 0 1 : 207 : 223 : 0.09
+T: 0 1 : 207 : 207 : 0.01
+T: 0 1 : 207 : 143 : 0.09
+T: 0 1 : 207 : 159 : 0.81
+T: 0 1 : 206 : 222 : 0.09
+T: 0 1 : 206 : 206 : 0.01
+T: 0 1 : 206 : 142 : 0.09
+T: 0 1 : 206 : 158 : 0.81
+T: 0 1 : 205 : 221 : 0.09
+T: 0 1 : 205 : 205 : 0.01
+T: 0 1 : 205 : 141 : 0.09
+T: 0 1 : 205 : 157 : 0.81
+T: 0 1 : 204 : 220 : 0.09
+T: 0 1 : 204 : 204 : 0.01
+T: 0 1 : 204 : 140 : 0.09
+T: 0 1 : 204 : 156 : 0.81
+T: 0 1 : 203 : 219 : 0.09
+T: 0 1 : 203 : 203 : 0.01
+T: 0 1 : 203 : 139 : 0.09
+T: 0 1 : 203 : 155 : 0.81
+T: 0 1 : 202 : 218 : 0.09
+T: 0 1 : 202 : 202 : 0.01
+T: 0 1 : 202 : 138 : 0.09
+T: 0 1 : 202 : 154 : 0.81
+T: 0 1 : 201 : 217 : 0.09
+T: 0 1 : 201 : 201 : 0.01
+T: 0 1 : 201 : 137 : 0.09
+T: 0 1 : 201 : 153 : 0.81
+T: 0 1 : 200 : 216 : 0.09
+T: 0 1 : 200 : 200 : 0.01
+T: 0 1 : 200 : 136 : 0.09
+T: 0 1 : 200 : 152 : 0.81
+T: 0 1 : 199 : 215 : 0.09
+T: 0 1 : 199 : 199 : 0.01
+T: 0 1 : 199 : 135 : 0.09
+T: 0 1 : 199 : 151 : 0.81
+T: 0 1 : 198 : 214 : 0.09
+T: 0 1 : 198 : 198 : 0.01
+T: 0 1 : 198 : 134 : 0.09
+T: 0 1 : 198 : 150 : 0.81
+T: 0 1 : 197 : 213 : 0.09
+T: 0 1 : 197 : 197 : 0.01
+T: 0 1 : 197 : 133 : 0.09
+T: 0 1 : 197 : 149 : 0.81
+T: 0 1 : 196 : 212 : 0.09
+T: 0 1 : 196 : 196 : 0.01
+T: 0 1 : 196 : 132 : 0.09
+T: 0 1 : 196 : 148 : 0.81
+T: 0 1 : 195 : 211 : 0.09
+T: 0 1 : 195 : 195 : 0.01
+T: 0 1 : 195 : 131 : 0.09
+T: 0 1 : 195 : 147 : 0.81
+T: 0 1 : 194 : 210 : 0.09
+T: 0 1 : 194 : 194 : 0.01
+T: 0 1 : 194 : 130 : 0.09
+T: 0 1 : 194 : 146 : 0.81
+T: 0 1 : 193 : 209 : 0.09
+T: 0 1 : 193 : 193 : 0.01
+T: 0 1 : 193 : 129 : 0.09
+T: 0 1 : 193 : 145 : 0.81
+T: 0 1 : 192 : 208 : 0.09
+T: 0 1 : 192 : 192 : 0.01
+T: 0 1 : 192 : 128 : 0.09
+T: 0 1 : 192 : 144 : 0.81
+T: 0 1 : 191 : 191 : 1
+T: 0 1 : 190 : 190 : 1
+T: 0 1 : 189 : 189 : 1
+T: 0 1 : 188 : 188 : 1
+T: 0 1 : 187 : 187 : 1
+T: 0 1 : 186 : 186 : 1
+T: 0 1 : 185 : 185 : 1
+T: 0 1 : 184 : 184 : 1
+T: 0 1 : 183 : 183 : 1
+T: 0 1 : 182 : 182 : 1
+T: 0 1 : 181 : 181 : 1
+T: 0 1 : 180 : 180 : 1
+T: 0 1 : 179 : 179 : 1
+T: 0 1 : 178 : 178 : 1
+T: 0 1 : 177 : 177 : 1
+T: 0 1 : 176 : 176 : 1
+T: 0 1 : 175 : 191 : 0.9
+T: 0 1 : 175 : 175 : 0.1
+T: 0 1 : 174 : 190 : 0.9
+T: 0 1 : 174 : 174 : 0.1
+T: 0 1 : 173 : 189 : 0.9
+T: 0 1 : 173 : 173 : 0.1
+T: 0 1 : 172 : 188 : 0.9
+T: 0 1 : 172 : 172 : 0.1
+T: 0 1 : 171 : 187 : 0.9
+T: 0 1 : 171 : 171 : 0.1
+T: 0 1 : 170 : 186 : 0.9
+T: 0 1 : 170 : 170 : 0.1
+T: 0 1 : 169 : 185 : 0.9
+T: 0 1 : 169 : 169 : 0.1
+T: 0 1 : 168 : 184 : 0.9
+T: 0 1 : 168 : 168 : 0.1
+T: 0 1 : 167 : 183 : 0.9
+T: 0 1 : 167 : 167 : 0.1
+T: 0 1 : 166 : 182 : 0.9
+T: 0 1 : 166 : 166 : 0.1
+T: 0 1 : 77 : 93 : 0.09
+T: 0 1 : 77 : 77 : 0.01
+T: 0 1 : 77 : 13 : 0.09
+T: 0 1 : 77 : 29 : 0.81
+T: 0 1 : 76 : 92 : 0.09
+T: 0 1 : 76 : 76 : 0.01
+T: 0 1 : 76 : 12 : 0.09
+T: 0 1 : 76 : 28 : 0.81
+T: 0 1 : 75 : 91 : 0.09
+T: 0 1 : 75 : 75 : 0.01
+T: 0 1 : 75 : 11 : 0.09
+T: 0 1 : 75 : 27 : 0.81
+T: 0 1 : 74 : 90 : 0.09
+T: 0 1 : 74 : 74 : 0.01
+T: 0 1 : 74 : 10 : 0.09
+T: 0 1 : 74 : 26 : 0.81
+T: 0 1 : 73 : 89 : 0.09
+T: 0 1 : 73 : 73 : 0.01
+T: 0 1 : 73 : 9 : 0.09
+T: 0 1 : 73 : 25 : 0.81
+T: 0 1 : 72 : 88 : 0.09
+T: 0 1 : 72 : 72 : 0.01
+T: 0 1 : 72 : 8 : 0.09
+T: 0 1 : 72 : 24 : 0.81
+T: 0 1 : 71 : 87 : 0.09
+T: 0 1 : 71 : 71 : 0.01
+T: 0 1 : 71 : 7 : 0.09
+T: 0 1 : 71 : 23 : 0.81
+T: 0 1 : 70 : 86 : 0.09
+T: 0 1 : 70 : 70 : 0.01
+T: 0 1 : 70 : 6 : 0.09
+T: 0 1 : 70 : 22 : 0.81
+T: 0 1 : 69 : 85 : 0.09
+T: 0 1 : 69 : 69 : 0.01
+T: 0 1 : 69 : 5 : 0.09
+T: 0 1 : 69 : 21 : 0.81
+T: 0 1 : 68 : 84 : 0.09
+T: 0 1 : 68 : 68 : 0.01
+T: 0 1 : 68 : 4 : 0.09
+T: 0 1 : 68 : 20 : 0.81
+T: 0 1 : 67 : 83 : 0.09
+T: 0 1 : 67 : 67 : 0.01
+T: 0 1 : 67 : 3 : 0.09
+T: 0 1 : 67 : 19 : 0.81
+T: 0 1 : 66 : 82 : 0.09
+T: 0 1 : 66 : 66 : 0.01
+T: 0 1 : 66 : 2 : 0.09
+T: 0 1 : 66 : 18 : 0.81
+T: 0 1 : 65 : 81 : 0.09
+T: 0 1 : 65 : 65 : 0.01
+T: 0 1 : 65 : 1 : 0.09
+T: 0 1 : 65 : 17 : 0.81
+T: 0 1 : 64 : 80 : 0.09
+T: 0 1 : 64 : 64 : 0.01
+T: 0 1 : 64 : 0 : 0.09
+T: 0 1 : 64 : 16 : 0.81
+T: 0 1 : 63 : 63 : 1
+T: 0 1 : 62 : 62 : 1
+T: 0 1 : 61 : 61 : 1
+T: 0 1 : 60 : 60 : 1
+T: 0 1 : 59 : 59 : 1
+T: 0 1 : 58 : 58 : 1
+T: 0 1 : 57 : 57 : 1
+T: 0 1 : 56 : 56 : 1
+T: 0 1 : 55 : 55 : 1
+T: 0 1 : 54 : 54 : 1
+T: 0 1 : 53 : 53 : 1
+T: 0 1 : 52 : 52 : 1
+T: 0 1 : 51 : 51 : 1
+T: 0 1 : 50 : 50 : 1
+T: 0 1 : 49 : 49 : 1
+T: 0 1 : 48 : 48 : 1
+T: 0 1 : 47 : 63 : 0.9
+T: 0 1 : 47 : 47 : 0.1
+T: 0 1 : 46 : 62 : 0.9
+T: 0 1 : 46 : 46 : 0.1
+T: 0 1 : 45 : 61 : 0.9
+T: 0 1 : 45 : 45 : 0.1
+T: 0 1 : 44 : 60 : 0.9
+T: 0 1 : 44 : 44 : 0.1
+T: 0 1 : 43 : 59 : 0.9
+T: 0 1 : 43 : 43 : 0.1
+T: 0 1 : 42 : 58 : 0.9
+T: 0 1 : 42 : 42 : 0.1
+T: 0 1 : 41 : 57 : 0.9
+T: 0 1 : 41 : 41 : 0.1
+T: 0 1 : 40 : 56 : 0.9
+T: 0 1 : 40 : 40 : 0.1
+T: 0 1 : 39 : 55 : 0.9
+T: 0 1 : 39 : 39 : 0.1
+T: 0 1 : 38 : 54 : 0.9
+T: 0 1 : 38 : 38 : 0.1
+T: 0 1 : 37 : 53 : 0.9
+T: 0 1 : 37 : 37 : 0.1
+T: 0 1 : 36 : 52 : 0.9
+T: 0 1 : 36 : 36 : 0.1
+T: 0 1 : 15 : 31 : 0.9
+T: 0 1 : 15 : 15 : 0.1
+T: 0 1 : 14 : 30 : 0.9
+T: 0 1 : 14 : 14 : 0.1
+T: 0 1 : 13 : 29 : 0.9
+T: 0 1 : 13 : 13 : 0.1
+T: 0 1 : 12 : 28 : 0.9
+T: 0 1 : 12 : 12 : 0.1
+T: 0 1 : 11 : 27 : 0.9
+T: 0 1 : 11 : 11 : 0.1
+T: 0 1 : 10 : 26 : 0.9
+T: 0 1 : 10 : 10 : 0.1
+T: 0 1 : 9 : 25 : 0.9
+T: 0 1 : 9 : 9 : 0.1
+T: 0 1 : 8 : 24 : 0.9
+T: 0 1 : 8 : 8 : 0.1
+T: 0 1 : 7 : 23 : 0.9
+T: 0 1 : 7 : 7 : 0.1
+T: 0 1 : 6 : 22 : 0.9
+T: 0 1 : 6 : 6 : 0.1
+T: 0 1 : 1 : 17 : 0.9
+T: 0 1 : 1 : 1 : 0.1
+T: 0 1 : 0 : 16 : 0.9
+T: 0 1 : 0 : 0 : 0.1
+T: 0 1 : 2 : 18 : 0.9
+T: 0 1 : 2 : 2 : 0.1
+T: 0 1 : 3 : 19 : 0.9
+T: 0 1 : 3 : 3 : 0.1
+T: 0 1 : 4 : 20 : 0.9
+T: 0 1 : 4 : 4 : 0.1
+T: 0 1 : 5 : 21 : 0.9
+T: 0 1 : 5 : 5 : 0.1
+T: 0 1 : 16 : 16 : 1
+T: 0 1 : 17 : 17 : 1
+T: 0 1 : 18 : 18 : 1
+T: 0 1 : 19 : 19 : 1
+T: 0 1 : 20 : 20 : 1
+T: 0 1 : 21 : 21 : 1
+T: 0 1 : 22 : 22 : 1
+T: 0 1 : 23 : 23 : 1
+T: 0 1 : 24 : 24 : 1
+T: 0 1 : 25 : 25 : 1
+T: 0 1 : 26 : 26 : 1
+T: 0 1 : 27 : 27 : 1
+T: 0 1 : 28 : 28 : 1
+T: 0 1 : 29 : 29 : 1
+T: 0 1 : 30 : 30 : 1
+T: 0 1 : 31 : 31 : 1
+T: 0 1 : 32 : 48 : 0.9
+T: 0 1 : 32 : 32 : 0.1
+T: 0 1 : 33 : 49 : 0.9
+T: 0 1 : 33 : 33 : 0.1
+T: 0 1 : 34 : 50 : 0.9
+T: 0 1 : 34 : 34 : 0.1
+T: 0 1 : 35 : 51 : 0.9
+T: 0 1 : 35 : 35 : 0.1
+T: 0 1 : 78 : 94 : 0.09
+T: 0 1 : 78 : 78 : 0.01
+T: 0 1 : 78 : 14 : 0.09
+T: 0 1 : 78 : 30 : 0.81
+T: 0 1 : 79 : 95 : 0.09
+T: 0 1 : 79 : 79 : 0.01
+T: 0 1 : 79 : 15 : 0.09
+T: 0 1 : 79 : 31 : 0.81
+T: 0 1 : 80 : 80 : 0.1
+T: 0 1 : 80 : 16 : 0.9
+T: 0 1 : 81 : 81 : 0.1
+T: 0 1 : 81 : 17 : 0.9
+T: 0 1 : 82 : 82 : 0.1
+T: 0 1 : 82 : 18 : 0.9
+T: 0 1 : 83 : 83 : 0.1
+T: 0 1 : 83 : 19 : 0.9
+T: 0 1 : 84 : 84 : 0.1
+T: 0 1 : 84 : 20 : 0.9
+T: 0 1 : 85 : 85 : 0.1
+T: 0 1 : 85 : 21 : 0.9
+T: 0 1 : 86 : 86 : 0.1
+T: 0 1 : 86 : 22 : 0.9
+T: 0 1 : 87 : 87 : 0.1
+T: 0 1 : 87 : 23 : 0.9
+T: 0 1 : 88 : 88 : 0.1
+T: 0 1 : 88 : 24 : 0.9
+T: 0 1 : 89 : 89 : 0.1
+T: 0 1 : 89 : 25 : 0.9
+T: 0 1 : 90 : 90 : 0.1
+T: 0 1 : 90 : 26 : 0.9
+T: 0 1 : 91 : 91 : 0.1
+T: 0 1 : 91 : 27 : 0.9
+T: 0 1 : 92 : 92 : 0.1
+T: 0 1 : 92 : 28 : 0.9
+T: 0 1 : 93 : 93 : 0.1
+T: 0 1 : 93 : 29 : 0.9
+T: 0 1 : 94 : 94 : 0.1
+T: 0 1 : 94 : 30 : 0.9
+T: 0 1 : 95 : 95 : 0.1
+T: 0 1 : 95 : 31 : 0.9
+T: 0 1 : 96 : 112 : 0.09
+T: 0 1 : 96 : 96 : 0.01
+T: 0 1 : 96 : 32 : 0.09
+T: 0 1 : 96 : 48 : 0.81
+T: 0 1 : 97 : 113 : 0.09
+T: 0 1 : 97 : 97 : 0.01
+T: 0 1 : 97 : 33 : 0.09
+T: 0 1 : 97 : 49 : 0.81
+T: 0 1 : 98 : 114 : 0.09
+T: 0 1 : 98 : 98 : 0.01
+T: 0 1 : 98 : 34 : 0.09
+T: 0 1 : 98 : 50 : 0.81
+T: 0 1 : 99 : 115 : 0.09
+T: 0 1 : 99 : 99 : 0.01
+T: 0 1 : 99 : 35 : 0.09
+T: 0 1 : 99 : 51 : 0.81
+T: 0 1 : 100 : 116 : 0.09
+T: 0 1 : 100 : 100 : 0.01
+T: 0 1 : 100 : 36 : 0.09
+T: 0 1 : 100 : 52 : 0.81
+T: 0 1 : 101 : 117 : 0.09
+T: 0 1 : 101 : 101 : 0.01
+T: 0 1 : 101 : 37 : 0.09
+T: 0 1 : 101 : 53 : 0.81
+T: 0 1 : 102 : 118 : 0.09
+T: 0 1 : 102 : 102 : 0.01
+T: 0 1 : 102 : 38 : 0.09
+T: 0 1 : 102 : 54 : 0.81
+T: 0 1 : 103 : 119 : 0.09
+T: 0 1 : 103 : 103 : 0.01
+T: 0 1 : 103 : 39 : 0.09
+T: 0 1 : 103 : 55 : 0.81
+T: 0 1 : 104 : 120 : 0.09
+T: 0 1 : 104 : 104 : 0.01
+T: 0 1 : 104 : 40 : 0.09
+T: 0 1 : 104 : 56 : 0.81
+T: 0 1 : 105 : 121 : 0.09
+T: 0 1 : 105 : 105 : 0.01
+T: 0 1 : 105 : 41 : 0.09
+T: 0 1 : 105 : 57 : 0.81
+T: 0 1 : 106 : 122 : 0.09
+T: 0 1 : 106 : 106 : 0.01
+T: 0 1 : 106 : 42 : 0.09
+T: 0 1 : 106 : 58 : 0.81
+T: 0 1 : 107 : 123 : 0.09
+T: 0 1 : 107 : 107 : 0.01
+T: 0 1 : 107 : 43 : 0.09
+T: 0 1 : 107 : 59 : 0.81
+T: 0 1 : 108 : 124 : 0.09
+T: 0 1 : 108 : 108 : 0.01
+T: 0 1 : 108 : 44 : 0.09
+T: 0 1 : 108 : 60 : 0.81
+T: 0 1 : 109 : 125 : 0.09
+T: 0 1 : 109 : 109 : 0.01
+T: 0 1 : 109 : 45 : 0.09
+T: 0 1 : 109 : 61 : 0.81
+T: 0 1 : 110 : 126 : 0.09
+T: 0 1 : 110 : 110 : 0.01
+T: 0 1 : 110 : 46 : 0.09
+T: 0 1 : 110 : 62 : 0.81
+T: 0 1 : 111 : 127 : 0.09
+T: 0 1 : 111 : 111 : 0.01
+T: 0 1 : 111 : 47 : 0.09
+T: 0 1 : 111 : 63 : 0.81
+T: 0 1 : 112 : 112 : 0.1
+T: 0 1 : 112 : 48 : 0.9
+T: 0 1 : 113 : 113 : 0.1
+T: 0 1 : 113 : 49 : 0.9
+T: 0 1 : 114 : 114 : 0.1
+T: 0 1 : 114 : 50 : 0.9
+T: 0 1 : 115 : 115 : 0.1
+T: 0 1 : 115 : 51 : 0.9
+T: 0 1 : 116 : 116 : 0.1
+T: 0 1 : 116 : 52 : 0.9
+T: 0 1 : 117 : 117 : 0.1
+T: 0 1 : 117 : 53 : 0.9
+T: 0 1 : 118 : 118 : 0.1
+T: 0 1 : 118 : 54 : 0.9
+T: 0 1 : 119 : 119 : 0.1
+T: 0 1 : 119 : 55 : 0.9
+T: 0 1 : 120 : 120 : 0.1
+T: 0 1 : 120 : 56 : 0.9
+T: 0 1 : 121 : 121 : 0.1
+T: 0 1 : 121 : 57 : 0.9
+T: 0 1 : 122 : 122 : 0.1
+T: 0 1 : 122 : 58 : 0.9
+T: 0 1 : 123 : 123 : 0.1
+T: 0 1 : 123 : 59 : 0.9
+T: 0 1 : 124 : 124 : 0.1
+T: 0 1 : 124 : 60 : 0.9
+T: 0 1 : 125 : 125 : 0.1
+T: 0 1 : 125 : 61 : 0.9
+T: 0 1 : 126 : 126 : 0.1
+T: 0 1 : 126 : 62 : 0.9
+T: 0 1 : 127 : 127 : 0.1
+T: 0 1 : 127 : 63 : 0.9
+T: 0 1 : 128 : 144 : 0.9
+T: 0 1 : 128 : 128 : 0.1
+T: 0 1 : 129 : 145 : 0.9
+T: 0 1 : 129 : 129 : 0.1
+T: 0 1 : 130 : 146 : 0.9
+T: 0 1 : 130 : 130 : 0.1
+T: 0 1 : 131 : 147 : 0.9
+T: 0 1 : 131 : 131 : 0.1
+T: 0 1 : 132 : 148 : 0.9
+T: 0 1 : 132 : 132 : 0.1
+T: 0 1 : 133 : 149 : 0.9
+T: 0 1 : 133 : 133 : 0.1
+T: 0 1 : 134 : 150 : 0.9
+T: 0 1 : 134 : 134 : 0.1
+T: 0 1 : 135 : 151 : 0.9
+T: 0 1 : 135 : 135 : 0.1
+T: 0 1 : 136 : 152 : 0.9
+T: 0 1 : 136 : 136 : 0.1
+T: 0 1 : 137 : 153 : 0.9
+T: 0 1 : 137 : 137 : 0.1
+T: 0 1 : 138 : 154 : 0.9
+T: 0 1 : 138 : 138 : 0.1
+T: 0 1 : 139 : 155 : 0.9
+T: 0 1 : 139 : 139 : 0.1
+T: 0 1 : 140 : 156 : 0.9
+T: 0 1 : 140 : 140 : 0.1
+T: 0 1 : 141 : 157 : 0.9
+T: 0 1 : 141 : 141 : 0.1
+T: 0 1 : 142 : 158 : 0.9
+T: 0 1 : 142 : 142 : 0.1
+T: 0 1 : 143 : 159 : 0.9
+T: 0 1 : 143 : 143 : 0.1
+T: 0 1 : 144 : 144 : 1
+T: 0 1 : 145 : 145 : 1
+T: 0 1 : 146 : 146 : 1
+T: 0 1 : 147 : 147 : 1
+T: 0 1 : 148 : 148 : 1
+T: 0 1 : 149 : 149 : 1
+T: 0 1 : 150 : 150 : 1
+T: 0 1 : 151 : 151 : 1
+T: 0 1 : 152 : 152 : 1
+T: 0 1 : 153 : 153 : 1
+T: 0 1 : 154 : 154 : 1
+T: 0 1 : 155 : 155 : 1
+T: 0 1 : 156 : 156 : 1
+T: 0 1 : 157 : 157 : 1
+T: 0 1 : 158 : 158 : 1
+T: 0 1 : 159 : 159 : 1
+T: 0 1 : 160 : 176 : 0.9
+T: 0 1 : 160 : 160 : 0.1
+T: 0 1 : 161 : 177 : 0.9
+T: 0 1 : 161 : 161 : 0.1
+T: 0 1 : 162 : 178 : 0.9
+T: 0 1 : 162 : 162 : 0.1
+T: 0 1 : 163 : 179 : 0.9
+T: 0 1 : 163 : 163 : 0.1
+T: 0 1 : 164 : 180 : 0.9
+T: 0 1 : 164 : 164 : 0.1
+T: 0 1 : 165 : 181 : 0.9
+T: 0 1 : 165 : 165 : 0.1
+T: 1 0 : 255 : 255 : 0.1
+T: 1 0 : 255 : 239 : 0.9
+T: 1 0 : 254 : 254 : 0.1
+T: 1 0 : 254 : 238 : 0.9
+T: 1 0 : 253 : 253 : 0.1
+T: 1 0 : 253 : 237 : 0.9
+T: 1 0 : 252 : 252 : 0.1
+T: 1 0 : 252 : 236 : 0.9
+T: 1 0 : 251 : 251 : 0.1
+T: 1 0 : 251 : 235 : 0.9
+T: 1 0 : 250 : 250 : 0.1
+T: 1 0 : 250 : 234 : 0.9
+T: 1 0 : 249 : 249 : 0.1
+T: 1 0 : 249 : 233 : 0.9
+T: 1 0 : 248 : 248 : 0.1
+T: 1 0 : 248 : 232 : 0.9
+T: 1 0 : 247 : 247 : 0.1
+T: 1 0 : 247 : 231 : 0.9
+T: 1 0 : 246 : 246 : 0.1
+T: 1 0 : 246 : 230 : 0.9
+T: 1 0 : 245 : 245 : 0.1
+T: 1 0 : 245 : 229 : 0.9
+T: 1 0 : 244 : 244 : 0.1
+T: 1 0 : 244 : 228 : 0.9
+T: 1 0 : 243 : 243 : 0.1
+T: 1 0 : 243 : 227 : 0.9
+T: 1 0 : 242 : 242 : 0.1
+T: 1 0 : 242 : 226 : 0.9
+T: 1 0 : 241 : 241 : 0.1
+T: 1 0 : 241 : 225 : 0.9
+T: 1 0 : 240 : 240 : 0.1
+T: 1 0 : 240 : 224 : 0.9
+T: 1 0 : 239 : 239 : 1
+T: 1 0 : 238 : 238 : 1
+T: 1 0 : 237 : 237 : 1
+T: 1 0 : 236 : 236 : 1
+T: 1 0 : 235 : 235 : 1
+T: 1 0 : 234 : 234 : 1
+T: 1 0 : 233 : 233 : 1
+T: 1 0 : 232 : 232 : 1
+T: 1 0 : 231 : 231 : 1
+T: 1 0 : 230 : 230 : 1
+T: 1 0 : 229 : 229 : 1
+T: 1 0 : 228 : 228 : 1
+T: 1 0 : 227 : 227 : 1
+T: 1 0 : 226 : 226 : 1
+T: 1 0 : 225 : 225 : 1
+T: 1 0 : 224 : 224 : 1
+T: 1 0 : 223 : 223 : 0.1
+T: 1 0 : 223 : 207 : 0.9
+T: 1 0 : 222 : 222 : 0.1
+T: 1 0 : 222 : 206 : 0.9
+T: 1 0 : 221 : 221 : 0.1
+T: 1 0 : 221 : 205 : 0.9
+T: 1 0 : 220 : 220 : 0.1
+T: 1 0 : 220 : 204 : 0.9
+T: 1 0 : 219 : 219 : 0.1
+T: 1 0 : 219 : 203 : 0.9
+T: 1 0 : 218 : 218 : 0.1
+T: 1 0 : 218 : 202 : 0.9
+T: 1 0 : 217 : 217 : 0.1
+T: 1 0 : 217 : 201 : 0.9
+T: 1 0 : 216 : 216 : 0.1
+T: 1 0 : 216 : 200 : 0.9
+T: 1 0 : 215 : 215 : 0.1
+T: 1 0 : 215 : 199 : 0.9
+T: 1 0 : 214 : 214 : 0.1
+T: 1 0 : 214 : 198 : 0.9
+T: 1 0 : 213 : 213 : 0.1
+T: 1 0 : 213 : 197 : 0.9
+T: 1 0 : 212 : 212 : 0.1
+T: 1 0 : 212 : 196 : 0.9
+T: 1 0 : 211 : 211 : 0.1
+T: 1 0 : 211 : 195 : 0.9
+T: 1 0 : 210 : 210 : 0.1
+T: 1 0 : 210 : 194 : 0.9
+T: 1 0 : 209 : 209 : 0.1
+T: 1 0 : 209 : 193 : 0.9
+T: 1 0 : 208 : 208 : 0.1
+T: 1 0 : 208 : 192 : 0.9
+T: 1 0 : 207 : 207 : 1
+T: 1 0 : 206 : 206 : 1
+T: 1 0 : 205 : 205 : 1
+T: 1 0 : 204 : 204 : 1
+T: 1 0 : 203 : 203 : 1
+T: 1 0 : 202 : 202 : 1
+T: 1 0 : 201 : 201 : 1
+T: 1 0 : 200 : 200 : 1
+T: 1 0 : 199 : 199 : 1
+T: 1 0 : 198 : 198 : 1
+T: 1 0 : 197 : 197 : 1
+T: 1 0 : 196 : 196 : 1
+T: 1 0 : 195 : 195 : 1
+T: 1 0 : 194 : 194 : 1
+T: 1 0 : 193 : 193 : 1
+T: 1 0 : 192 : 192 : 1
+T: 1 0 : 191 : 255 : 0.09
+T: 1 0 : 191 : 239 : 0.81
+T: 1 0 : 191 : 175 : 0.09
+T: 1 0 : 191 : 191 : 0.01
+T: 1 0 : 190 : 254 : 0.09
+T: 1 0 : 190 : 238 : 0.81
+T: 1 0 : 190 : 174 : 0.09
+T: 1 0 : 190 : 190 : 0.01
+T: 1 0 : 189 : 253 : 0.09
+T: 1 0 : 189 : 237 : 0.81
+T: 1 0 : 189 : 173 : 0.09
+T: 1 0 : 189 : 189 : 0.01
+T: 1 0 : 188 : 252 : 0.09
+T: 1 0 : 188 : 236 : 0.81
+T: 1 0 : 188 : 172 : 0.09
+T: 1 0 : 188 : 188 : 0.01
+T: 1 0 : 187 : 251 : 0.09
+T: 1 0 : 187 : 235 : 0.81
+T: 1 0 : 187 : 171 : 0.09
+T: 1 0 : 187 : 187 : 0.01
+T: 1 0 : 186 : 250 : 0.09
+T: 1 0 : 186 : 234 : 0.81
+T: 1 0 : 186 : 170 : 0.09
+T: 1 0 : 186 : 186 : 0.01
+T: 1 0 : 185 : 249 : 0.09
+T: 1 0 : 185 : 233 : 0.81
+T: 1 0 : 185 : 169 : 0.09
+T: 1 0 : 185 : 185 : 0.01
+T: 1 0 : 184 : 248 : 0.09
+T: 1 0 : 184 : 232 : 0.81
+T: 1 0 : 184 : 168 : 0.09
+T: 1 0 : 184 : 184 : 0.01
+T: 1 0 : 183 : 247 : 0.09
+T: 1 0 : 183 : 231 : 0.81
+T: 1 0 : 183 : 167 : 0.09
+T: 1 0 : 183 : 183 : 0.01
+T: 1 0 : 182 : 246 : 0.09
+T: 1 0 : 182 : 230 : 0.81
+T: 1 0 : 182 : 166 : 0.09
+T: 1 0 : 182 : 182 : 0.01
+T: 1 0 : 181 : 245 : 0.09
+T: 1 0 : 181 : 229 : 0.81
+T: 1 0 : 181 : 165 : 0.09
+T: 1 0 : 181 : 181 : 0.01
+T: 1 0 : 180 : 244 : 0.09
+T: 1 0 : 180 : 228 : 0.81
+T: 1 0 : 180 : 164 : 0.09
+T: 1 0 : 180 : 180 : 0.01
+T: 1 0 : 179 : 243 : 0.09
+T: 1 0 : 179 : 227 : 0.81
+T: 1 0 : 179 : 163 : 0.09
+T: 1 0 : 179 : 179 : 0.01
+T: 1 0 : 178 : 242 : 0.09
+T: 1 0 : 178 : 226 : 0.81
+T: 1 0 : 178 : 162 : 0.09
+T: 1 0 : 178 : 178 : 0.01
+T: 1 0 : 177 : 241 : 0.09
+T: 1 0 : 177 : 225 : 0.81
+T: 1 0 : 177 : 161 : 0.09
+T: 1 0 : 177 : 177 : 0.01
+T: 1 0 : 176 : 240 : 0.09
+T: 1 0 : 176 : 224 : 0.81
+T: 1 0 : 176 : 160 : 0.09
+T: 1 0 : 176 : 176 : 0.01
+T: 1 0 : 175 : 239 : 0.9
+T: 1 0 : 175 : 175 : 0.1
+T: 1 0 : 174 : 238 : 0.9
+T: 1 0 : 174 : 174 : 0.1
+T: 1 0 : 173 : 237 : 0.9
+T: 1 0 : 173 : 173 : 0.1
+T: 1 0 : 172 : 236 : 0.9
+T: 1 0 : 172 : 172 : 0.1
+T: 1 0 : 171 : 235 : 0.9
+T: 1 0 : 171 : 171 : 0.1
+T: 1 0 : 170 : 234 : 0.9
+T: 1 0 : 170 : 170 : 0.1
+T: 1 0 : 169 : 233 : 0.9
+T: 1 0 : 169 : 169 : 0.1
+T: 1 0 : 168 : 232 : 0.9
+T: 1 0 : 168 : 168 : 0.1
+T: 1 0 : 167 : 231 : 0.9
+T: 1 0 : 167 : 167 : 0.1
+T: 1 0 : 166 : 230 : 0.9
+T: 1 0 : 166 : 166 : 0.1
+T: 1 0 : 77 : 77 : 1
+T: 1 0 : 76 : 76 : 1
+T: 1 0 : 75 : 75 : 1
+T: 1 0 : 74 : 74 : 1
+T: 1 0 : 73 : 73 : 1
+T: 1 0 : 72 : 72 : 1
+T: 1 0 : 71 : 71 : 1
+T: 1 0 : 70 : 70 : 1
+T: 1 0 : 69 : 69 : 1
+T: 1 0 : 68 : 68 : 1
+T: 1 0 : 67 : 67 : 1
+T: 1 0 : 66 : 66 : 1
+T: 1 0 : 65 : 65 : 1
+T: 1 0 : 64 : 64 : 1
+T: 1 0 : 63 : 127 : 0.09
+T: 1 0 : 63 : 111 : 0.81
+T: 1 0 : 63 : 47 : 0.09
+T: 1 0 : 63 : 63 : 0.01
+T: 1 0 : 62 : 126 : 0.09
+T: 1 0 : 62 : 110 : 0.81
+T: 1 0 : 62 : 46 : 0.09
+T: 1 0 : 62 : 62 : 0.01
+T: 1 0 : 61 : 125 : 0.09
+T: 1 0 : 61 : 109 : 0.81
+T: 1 0 : 61 : 45 : 0.09
+T: 1 0 : 61 : 61 : 0.01
+T: 1 0 : 60 : 124 : 0.09
+T: 1 0 : 60 : 108 : 0.81
+T: 1 0 : 60 : 44 : 0.09
+T: 1 0 : 60 : 60 : 0.01
+T: 1 0 : 59 : 123 : 0.09
+T: 1 0 : 59 : 107 : 0.81
+T: 1 0 : 59 : 43 : 0.09
+T: 1 0 : 59 : 59 : 0.01
+T: 1 0 : 58 : 122 : 0.09
+T: 1 0 : 58 : 106 : 0.81
+T: 1 0 : 58 : 42 : 0.09
+T: 1 0 : 58 : 58 : 0.01
+T: 1 0 : 57 : 121 : 0.09
+T: 1 0 : 57 : 105 : 0.81
+T: 1 0 : 57 : 41 : 0.09
+T: 1 0 : 57 : 57 : 0.01
+T: 1 0 : 56 : 120 : 0.09
+T: 1 0 : 56 : 104 : 0.81
+T: 1 0 : 56 : 40 : 0.09
+T: 1 0 : 56 : 56 : 0.01
+T: 1 0 : 55 : 119 : 0.09
+T: 1 0 : 55 : 103 : 0.81
+T: 1 0 : 55 : 39 : 0.09
+T: 1 0 : 55 : 55 : 0.01
+T: 1 0 : 54 : 118 : 0.09
+T: 1 0 : 54 : 102 : 0.81
+T: 1 0 : 54 : 38 : 0.09
+T: 1 0 : 54 : 54 : 0.01
+T: 1 0 : 53 : 117 : 0.09
+T: 1 0 : 53 : 101 : 0.81
+T: 1 0 : 53 : 37 : 0.09
+T: 1 0 : 53 : 53 : 0.01
+T: 1 0 : 52 : 116 : 0.09
+T: 1 0 : 52 : 100 : 0.81
+T: 1 0 : 52 : 36 : 0.09
+T: 1 0 : 52 : 52 : 0.01
+T: 1 0 : 51 : 115 : 0.09
+T: 1 0 : 51 : 99 : 0.81
+T: 1 0 : 51 : 35 : 0.09
+T: 1 0 : 51 : 51 : 0.01
+T: 1 0 : 50 : 114 : 0.09
+T: 1 0 : 50 : 98 : 0.81
+T: 1 0 : 50 : 34 : 0.09
+T: 1 0 : 50 : 50 : 0.01
+T: 1 0 : 49 : 113 : 0.09
+T: 1 0 : 49 : 97 : 0.81
+T: 1 0 : 49 : 33 : 0.09
+T: 1 0 : 49 : 49 : 0.01
+T: 1 0 : 48 : 112 : 0.09
+T: 1 0 : 48 : 96 : 0.81
+T: 1 0 : 48 : 32 : 0.09
+T: 1 0 : 48 : 48 : 0.01
+T: 1 0 : 47 : 111 : 0.9
+T: 1 0 : 47 : 47 : 0.1
+T: 1 0 : 46 : 110 : 0.9
+T: 1 0 : 46 : 46 : 0.1
+T: 1 0 : 45 : 109 : 0.9
+T: 1 0 : 45 : 45 : 0.1
+T: 1 0 : 44 : 108 : 0.9
+T: 1 0 : 44 : 44 : 0.1
+T: 1 0 : 43 : 107 : 0.9
+T: 1 0 : 43 : 43 : 0.1
+T: 1 0 : 42 : 106 : 0.9
+T: 1 0 : 42 : 42 : 0.1
+T: 1 0 : 41 : 105 : 0.9
+T: 1 0 : 41 : 41 : 0.1
+T: 1 0 : 40 : 104 : 0.9
+T: 1 0 : 40 : 40 : 0.1
+T: 1 0 : 39 : 103 : 0.9
+T: 1 0 : 39 : 39 : 0.1
+T: 1 0 : 38 : 102 : 0.9
+T: 1 0 : 38 : 38 : 0.1
+T: 1 0 : 37 : 101 : 0.9
+T: 1 0 : 37 : 37 : 0.1
+T: 1 0 : 36 : 100 : 0.9
+T: 1 0 : 36 : 36 : 0.1
+T: 1 0 : 15 : 79 : 0.9
+T: 1 0 : 15 : 15 : 0.1
+T: 1 0 : 14 : 78 : 0.9
+T: 1 0 : 14 : 14 : 0.1
+T: 1 0 : 13 : 77 : 0.9
+T: 1 0 : 13 : 13 : 0.1
+T: 1 0 : 12 : 76 : 0.9
+T: 1 0 : 12 : 12 : 0.1
+T: 1 0 : 11 : 75 : 0.9
+T: 1 0 : 11 : 11 : 0.1
+T: 1 0 : 10 : 74 : 0.9
+T: 1 0 : 10 : 10 : 0.1
+T: 1 0 : 9 : 73 : 0.9
+T: 1 0 : 9 : 9 : 0.1
+T: 1 0 : 8 : 72 : 0.9
+T: 1 0 : 8 : 8 : 0.1
+T: 1 0 : 7 : 71 : 0.9
+T: 1 0 : 7 : 7 : 0.1
+T: 1 0 : 6 : 70 : 0.9
+T: 1 0 : 6 : 6 : 0.1
+T: 1 0 : 1 : 65 : 0.9
+T: 1 0 : 1 : 1 : 0.1
+T: 1 0 : 0 : 64 : 0.9
+T: 1 0 : 0 : 0 : 0.1
+T: 1 0 : 2 : 66 : 0.9
+T: 1 0 : 2 : 2 : 0.1
+T: 1 0 : 3 : 67 : 0.9
+T: 1 0 : 3 : 3 : 0.1
+T: 1 0 : 4 : 68 : 0.9
+T: 1 0 : 4 : 4 : 0.1
+T: 1 0 : 5 : 69 : 0.9
+T: 1 0 : 5 : 5 : 0.1
+T: 1 0 : 16 : 80 : 0.09
+T: 1 0 : 16 : 64 : 0.81
+T: 1 0 : 16 : 0 : 0.09
+T: 1 0 : 16 : 16 : 0.01
+T: 1 0 : 17 : 81 : 0.09
+T: 1 0 : 17 : 65 : 0.81
+T: 1 0 : 17 : 1 : 0.09
+T: 1 0 : 17 : 17 : 0.01
+T: 1 0 : 18 : 82 : 0.09
+T: 1 0 : 18 : 66 : 0.81
+T: 1 0 : 18 : 2 : 0.09
+T: 1 0 : 18 : 18 : 0.01
+T: 1 0 : 19 : 83 : 0.09
+T: 1 0 : 19 : 67 : 0.81
+T: 1 0 : 19 : 3 : 0.09
+T: 1 0 : 19 : 19 : 0.01
+T: 1 0 : 20 : 84 : 0.09
+T: 1 0 : 20 : 68 : 0.81
+T: 1 0 : 20 : 4 : 0.09
+T: 1 0 : 20 : 20 : 0.01
+T: 1 0 : 21 : 85 : 0.09
+T: 1 0 : 21 : 69 : 0.81
+T: 1 0 : 21 : 5 : 0.09
+T: 1 0 : 21 : 21 : 0.01
+T: 1 0 : 22 : 86 : 0.09
+T: 1 0 : 22 : 70 : 0.81
+T: 1 0 : 22 : 6 : 0.09
+T: 1 0 : 22 : 22 : 0.01
+T: 1 0 : 23 : 87 : 0.09
+T: 1 0 : 23 : 71 : 0.81
+T: 1 0 : 23 : 7 : 0.09
+T: 1 0 : 23 : 23 : 0.01
+T: 1 0 : 24 : 88 : 0.09
+T: 1 0 : 24 : 72 : 0.81
+T: 1 0 : 24 : 8 : 0.09
+T: 1 0 : 24 : 24 : 0.01
+T: 1 0 : 25 : 89 : 0.09
+T: 1 0 : 25 : 73 : 0.81
+T: 1 0 : 25 : 9 : 0.09
+T: 1 0 : 25 : 25 : 0.01
+T: 1 0 : 26 : 90 : 0.09
+T: 1 0 : 26 : 74 : 0.81
+T: 1 0 : 26 : 10 : 0.09
+T: 1 0 : 26 : 26 : 0.01
+T: 1 0 : 27 : 91 : 0.09
+T: 1 0 : 27 : 75 : 0.81
+T: 1 0 : 27 : 11 : 0.09
+T: 1 0 : 27 : 27 : 0.01
+T: 1 0 : 28 : 92 : 0.09
+T: 1 0 : 28 : 76 : 0.81
+T: 1 0 : 28 : 12 : 0.09
+T: 1 0 : 28 : 28 : 0.01
+T: 1 0 : 29 : 93 : 0.09
+T: 1 0 : 29 : 77 : 0.81
+T: 1 0 : 29 : 13 : 0.09
+T: 1 0 : 29 : 29 : 0.01
+T: 1 0 : 30 : 94 : 0.09
+T: 1 0 : 30 : 78 : 0.81
+T: 1 0 : 30 : 14 : 0.09
+T: 1 0 : 30 : 30 : 0.01
+T: 1 0 : 31 : 95 : 0.09
+T: 1 0 : 31 : 79 : 0.81
+T: 1 0 : 31 : 15 : 0.09
+T: 1 0 : 31 : 31 : 0.01
+T: 1 0 : 32 : 96 : 0.9
+T: 1 0 : 32 : 32 : 0.1
+T: 1 0 : 33 : 97 : 0.9
+T: 1 0 : 33 : 33 : 0.1
+T: 1 0 : 34 : 98 : 0.9
+T: 1 0 : 34 : 34 : 0.1
+T: 1 0 : 35 : 99 : 0.9
+T: 1 0 : 35 : 35 : 0.1
+T: 1 0 : 78 : 78 : 1
+T: 1 0 : 79 : 79 : 1
+T: 1 0 : 80 : 80 : 0.1
+T: 1 0 : 80 : 64 : 0.9
+T: 1 0 : 81 : 81 : 0.1
+T: 1 0 : 81 : 65 : 0.9
+T: 1 0 : 82 : 82 : 0.1
+T: 1 0 : 82 : 66 : 0.9
+T: 1 0 : 83 : 83 : 0.1
+T: 1 0 : 83 : 67 : 0.9
+T: 1 0 : 84 : 84 : 0.1
+T: 1 0 : 84 : 68 : 0.9
+T: 1 0 : 85 : 85 : 0.1
+T: 1 0 : 85 : 69 : 0.9
+T: 1 0 : 86 : 86 : 0.1
+T: 1 0 : 86 : 70 : 0.9
+T: 1 0 : 87 : 87 : 0.1
+T: 1 0 : 87 : 71 : 0.9
+T: 1 0 : 88 : 88 : 0.1
+T: 1 0 : 88 : 72 : 0.9
+T: 1 0 : 89 : 89 : 0.1
+T: 1 0 : 89 : 73 : 0.9
+T: 1 0 : 90 : 90 : 0.1
+T: 1 0 : 90 : 74 : 0.9
+T: 1 0 : 91 : 91 : 0.1
+T: 1 0 : 91 : 75 : 0.9
+T: 1 0 : 92 : 92 : 0.1
+T: 1 0 : 92 : 76 : 0.9
+T: 1 0 : 93 : 93 : 0.1
+T: 1 0 : 93 : 77 : 0.9
+T: 1 0 : 94 : 94 : 0.1
+T: 1 0 : 94 : 78 : 0.9
+T: 1 0 : 95 : 95 : 0.1
+T: 1 0 : 95 : 79 : 0.9
+T: 1 0 : 96 : 96 : 1
+T: 1 0 : 97 : 97 : 1
+T: 1 0 : 98 : 98 : 1
+T: 1 0 : 99 : 99 : 1
+T: 1 0 : 100 : 100 : 1
+T: 1 0 : 101 : 101 : 1
+T: 1 0 : 102 : 102 : 1
+T: 1 0 : 103 : 103 : 1
+T: 1 0 : 104 : 104 : 1
+T: 1 0 : 105 : 105 : 1
+T: 1 0 : 106 : 106 : 1
+T: 1 0 : 107 : 107 : 1
+T: 1 0 : 108 : 108 : 1
+T: 1 0 : 109 : 109 : 1
+T: 1 0 : 110 : 110 : 1
+T: 1 0 : 111 : 111 : 1
+T: 1 0 : 112 : 112 : 0.1
+T: 1 0 : 112 : 96 : 0.9
+T: 1 0 : 113 : 113 : 0.1
+T: 1 0 : 113 : 97 : 0.9
+T: 1 0 : 114 : 114 : 0.1
+T: 1 0 : 114 : 98 : 0.9
+T: 1 0 : 115 : 115 : 0.1
+T: 1 0 : 115 : 99 : 0.9
+T: 1 0 : 116 : 116 : 0.1
+T: 1 0 : 116 : 100 : 0.9
+T: 1 0 : 117 : 117 : 0.1
+T: 1 0 : 117 : 101 : 0.9
+T: 1 0 : 118 : 118 : 0.1
+T: 1 0 : 118 : 102 : 0.9
+T: 1 0 : 119 : 119 : 0.1
+T: 1 0 : 119 : 103 : 0.9
+T: 1 0 : 120 : 120 : 0.1
+T: 1 0 : 120 : 104 : 0.9
+T: 1 0 : 121 : 121 : 0.1
+T: 1 0 : 121 : 105 : 0.9
+T: 1 0 : 122 : 122 : 0.1
+T: 1 0 : 122 : 106 : 0.9
+T: 1 0 : 123 : 123 : 0.1
+T: 1 0 : 123 : 107 : 0.9
+T: 1 0 : 124 : 124 : 0.1
+T: 1 0 : 124 : 108 : 0.9
+T: 1 0 : 125 : 125 : 0.1
+T: 1 0 : 125 : 109 : 0.9
+T: 1 0 : 126 : 126 : 0.1
+T: 1 0 : 126 : 110 : 0.9
+T: 1 0 : 127 : 127 : 0.1
+T: 1 0 : 127 : 111 : 0.9
+T: 1 0 : 128 : 192 : 0.9
+T: 1 0 : 128 : 128 : 0.1
+T: 1 0 : 129 : 193 : 0.9
+T: 1 0 : 129 : 129 : 0.1
+T: 1 0 : 130 : 194 : 0.9
+T: 1 0 : 130 : 130 : 0.1
+T: 1 0 : 131 : 195 : 0.9
+T: 1 0 : 131 : 131 : 0.1
+T: 1 0 : 132 : 196 : 0.9
+T: 1 0 : 132 : 132 : 0.1
+T: 1 0 : 133 : 197 : 0.9
+T: 1 0 : 133 : 133 : 0.1
+T: 1 0 : 134 : 198 : 0.9
+T: 1 0 : 134 : 134 : 0.1
+T: 1 0 : 135 : 199 : 0.9
+T: 1 0 : 135 : 135 : 0.1
+T: 1 0 : 136 : 200 : 0.9
+T: 1 0 : 136 : 136 : 0.1
+T: 1 0 : 137 : 201 : 0.9
+T: 1 0 : 137 : 137 : 0.1
+T: 1 0 : 138 : 202 : 0.9
+T: 1 0 : 138 : 138 : 0.1
+T: 1 0 : 139 : 203 : 0.9
+T: 1 0 : 139 : 139 : 0.1
+T: 1 0 : 140 : 204 : 0.9
+T: 1 0 : 140 : 140 : 0.1
+T: 1 0 : 141 : 205 : 0.9
+T: 1 0 : 141 : 141 : 0.1
+T: 1 0 : 142 : 206 : 0.9
+T: 1 0 : 142 : 142 : 0.1
+T: 1 0 : 143 : 207 : 0.9
+T: 1 0 : 143 : 143 : 0.1
+T: 1 0 : 144 : 208 : 0.09
+T: 1 0 : 144 : 192 : 0.81
+T: 1 0 : 144 : 128 : 0.09
+T: 1 0 : 144 : 144 : 0.01
+T: 1 0 : 145 : 209 : 0.09
+T: 1 0 : 145 : 193 : 0.81
+T: 1 0 : 145 : 129 : 0.09
+T: 1 0 : 145 : 145 : 0.01
+T: 1 0 : 146 : 210 : 0.09
+T: 1 0 : 146 : 194 : 0.81
+T: 1 0 : 146 : 130 : 0.09
+T: 1 0 : 146 : 146 : 0.01
+T: 1 0 : 147 : 211 : 0.09
+T: 1 0 : 147 : 195 : 0.81
+T: 1 0 : 147 : 131 : 0.09
+T: 1 0 : 147 : 147 : 0.01
+T: 1 0 : 148 : 212 : 0.09
+T: 1 0 : 148 : 196 : 0.81
+T: 1 0 : 148 : 132 : 0.09
+T: 1 0 : 148 : 148 : 0.01
+T: 1 0 : 149 : 213 : 0.09
+T: 1 0 : 149 : 197 : 0.81
+T: 1 0 : 149 : 133 : 0.09
+T: 1 0 : 149 : 149 : 0.01
+T: 1 0 : 150 : 214 : 0.09
+T: 1 0 : 150 : 198 : 0.81
+T: 1 0 : 150 : 134 : 0.09
+T: 1 0 : 150 : 150 : 0.01
+T: 1 0 : 151 : 215 : 0.09
+T: 1 0 : 151 : 199 : 0.81
+T: 1 0 : 151 : 135 : 0.09
+T: 1 0 : 151 : 151 : 0.01
+T: 1 0 : 152 : 216 : 0.09
+T: 1 0 : 152 : 200 : 0.81
+T: 1 0 : 152 : 136 : 0.09
+T: 1 0 : 152 : 152 : 0.01
+T: 1 0 : 153 : 217 : 0.09
+T: 1 0 : 153 : 201 : 0.81
+T: 1 0 : 153 : 137 : 0.09
+T: 1 0 : 153 : 153 : 0.01
+T: 1 0 : 154 : 218 : 0.09
+T: 1 0 : 154 : 202 : 0.81
+T: 1 0 : 154 : 138 : 0.09
+T: 1 0 : 154 : 154 : 0.01
+T: 1 0 : 155 : 219 : 0.09
+T: 1 0 : 155 : 203 : 0.81
+T: 1 0 : 155 : 139 : 0.09
+T: 1 0 : 155 : 155 : 0.01
+T: 1 0 : 156 : 220 : 0.09
+T: 1 0 : 156 : 204 : 0.81
+T: 1 0 : 156 : 140 : 0.09
+T: 1 0 : 156 : 156 : 0.01
+T: 1 0 : 157 : 221 : 0.09
+T: 1 0 : 157 : 205 : 0.81
+T: 1 0 : 157 : 141 : 0.09
+T: 1 0 : 157 : 157 : 0.01
+T: 1 0 : 158 : 222 : 0.09
+T: 1 0 : 158 : 206 : 0.81
+T: 1 0 : 158 : 142 : 0.09
+T: 1 0 : 158 : 158 : 0.01
+T: 1 0 : 159 : 223 : 0.09
+T: 1 0 : 159 : 207 : 0.81
+T: 1 0 : 159 : 143 : 0.09
+T: 1 0 : 159 : 159 : 0.01
+T: 1 0 : 160 : 224 : 0.9
+T: 1 0 : 160 : 160 : 0.1
+T: 1 0 : 161 : 225 : 0.9
+T: 1 0 : 161 : 161 : 0.1
+T: 1 0 : 162 : 226 : 0.9
+T: 1 0 : 162 : 162 : 0.1
+T: 1 0 : 163 : 227 : 0.9
+T: 1 0 : 163 : 163 : 0.1
+T: 1 0 : 164 : 228 : 0.9
+T: 1 0 : 164 : 164 : 0.1
+T: 1 0 : 165 : 229 : 0.9
+T: 1 0 : 165 : 165 : 0.1
+T: 1 1 : 255 : 255 : 1
+T: 1 1 : 254 : 254 : 1
+T: 1 1 : 253 : 253 : 1
+T: 1 1 : 252 : 252 : 1
+T: 1 1 : 251 : 251 : 1
+T: 1 1 : 250 : 250 : 1
+T: 1 1 : 249 : 249 : 1
+T: 1 1 : 248 : 248 : 1
+T: 1 1 : 247 : 247 : 1
+T: 1 1 : 246 : 246 : 1
+T: 1 1 : 245 : 245 : 1
+T: 1 1 : 244 : 244 : 1
+T: 1 1 : 243 : 243 : 1
+T: 1 1 : 242 : 242 : 1
+T: 1 1 : 241 : 241 : 1
+T: 1 1 : 240 : 240 : 1
+T: 1 1 : 239 : 255 : 0.9
+T: 1 1 : 239 : 239 : 0.1
+T: 1 1 : 238 : 254 : 0.9
+T: 1 1 : 238 : 238 : 0.1
+T: 1 1 : 237 : 253 : 0.9
+T: 1 1 : 237 : 237 : 0.1
+T: 1 1 : 236 : 252 : 0.9
+T: 1 1 : 236 : 236 : 0.1
+T: 1 1 : 235 : 251 : 0.9
+T: 1 1 : 235 : 235 : 0.1
+T: 1 1 : 234 : 250 : 0.9
+T: 1 1 : 234 : 234 : 0.1
+T: 1 1 : 233 : 249 : 0.9
+T: 1 1 : 233 : 233 : 0.1
+T: 1 1 : 232 : 248 : 0.9
+T: 1 1 : 232 : 232 : 0.1
+T: 1 1 : 231 : 247 : 0.9
+T: 1 1 : 231 : 231 : 0.1
+T: 1 1 : 230 : 246 : 0.9
+T: 1 1 : 230 : 230 : 0.1
+T: 1 1 : 229 : 245 : 0.9
+T: 1 1 : 229 : 229 : 0.1
+T: 1 1 : 228 : 244 : 0.9
+T: 1 1 : 228 : 228 : 0.1
+T: 1 1 : 227 : 243 : 0.9
+T: 1 1 : 227 : 227 : 0.1
+T: 1 1 : 226 : 242 : 0.9
+T: 1 1 : 226 : 226 : 0.1
+T: 1 1 : 225 : 241 : 0.9
+T: 1 1 : 225 : 225 : 0.1
+T: 1 1 : 224 : 240 : 0.9
+T: 1 1 : 224 : 224 : 0.1
+T: 1 1 : 223 : 223 : 1
+T: 1 1 : 222 : 222 : 1
+T: 1 1 : 221 : 221 : 1
+T: 1 1 : 220 : 220 : 1
+T: 1 1 : 219 : 219 : 1
+T: 1 1 : 218 : 218 : 1
+T: 1 1 : 217 : 217 : 1
+T: 1 1 : 216 : 216 : 1
+T: 1 1 : 215 : 215 : 1
+T: 1 1 : 214 : 214 : 1
+T: 1 1 : 213 : 213 : 1
+T: 1 1 : 212 : 212 : 1
+T: 1 1 : 211 : 211 : 1
+T: 1 1 : 210 : 210 : 1
+T: 1 1 : 209 : 209 : 1
+T: 1 1 : 208 : 208 : 1
+T: 1 1 : 207 : 223 : 0.9
+T: 1 1 : 207 : 207 : 0.1
+T: 1 1 : 206 : 222 : 0.9
+T: 1 1 : 206 : 206 : 0.1
+T: 1 1 : 205 : 221 : 0.9
+T: 1 1 : 205 : 205 : 0.1
+T: 1 1 : 204 : 220 : 0.9
+T: 1 1 : 204 : 204 : 0.1
+T: 1 1 : 203 : 219 : 0.9
+T: 1 1 : 203 : 203 : 0.1
+T: 1 1 : 202 : 218 : 0.9
+T: 1 1 : 202 : 202 : 0.1
+T: 1 1 : 201 : 217 : 0.9
+T: 1 1 : 201 : 201 : 0.1
+T: 1 1 : 200 : 216 : 0.9
+T: 1 1 : 200 : 200 : 0.1
+T: 1 1 : 199 : 215 : 0.9
+T: 1 1 : 199 : 199 : 0.1
+T: 1 1 : 198 : 214 : 0.9
+T: 1 1 : 198 : 198 : 0.1
+T: 1 1 : 197 : 213 : 0.9
+T: 1 1 : 197 : 197 : 0.1
+T: 1 1 : 196 : 212 : 0.9
+T: 1 1 : 196 : 196 : 0.1
+T: 1 1 : 195 : 211 : 0.9
+T: 1 1 : 195 : 195 : 0.1
+T: 1 1 : 194 : 210 : 0.9
+T: 1 1 : 194 : 194 : 0.1
+T: 1 1 : 193 : 209 : 0.9
+T: 1 1 : 193 : 193 : 0.1
+T: 1 1 : 192 : 208 : 0.9
+T: 1 1 : 192 : 192 : 0.1
+T: 1 1 : 191 : 255 : 0.9
+T: 1 1 : 191 : 191 : 0.1
+T: 1 1 : 190 : 254 : 0.9
+T: 1 1 : 190 : 190 : 0.1
+T: 1 1 : 189 : 253 : 0.9
+T: 1 1 : 189 : 189 : 0.1
+T: 1 1 : 188 : 252 : 0.9
+T: 1 1 : 188 : 188 : 0.1
+T: 1 1 : 187 : 251 : 0.9
+T: 1 1 : 187 : 187 : 0.1
+T: 1 1 : 186 : 250 : 0.9
+T: 1 1 : 186 : 186 : 0.1
+T: 1 1 : 185 : 249 : 0.9
+T: 1 1 : 185 : 185 : 0.1
+T: 1 1 : 184 : 248 : 0.9
+T: 1 1 : 184 : 184 : 0.1
+T: 1 1 : 183 : 247 : 0.9
+T: 1 1 : 183 : 183 : 0.1
+T: 1 1 : 182 : 246 : 0.9
+T: 1 1 : 182 : 182 : 0.1
+T: 1 1 : 181 : 245 : 0.9
+T: 1 1 : 181 : 181 : 0.1
+T: 1 1 : 180 : 244 : 0.9
+T: 1 1 : 180 : 180 : 0.1
+T: 1 1 : 179 : 243 : 0.9
+T: 1 1 : 179 : 179 : 0.1
+T: 1 1 : 178 : 242 : 0.9
+T: 1 1 : 178 : 178 : 0.1
+T: 1 1 : 177 : 241 : 0.9
+T: 1 1 : 177 : 177 : 0.1
+T: 1 1 : 176 : 240 : 0.9
+T: 1 1 : 176 : 176 : 0.1
+T: 1 1 : 175 : 255 : 0.81
+T: 1 1 : 175 : 239 : 0.09
+T: 1 1 : 175 : 175 : 0.01
+T: 1 1 : 175 : 191 : 0.09
+T: 1 1 : 174 : 254 : 0.81
+T: 1 1 : 174 : 238 : 0.09
+T: 1 1 : 174 : 174 : 0.01
+T: 1 1 : 174 : 190 : 0.09
+T: 1 1 : 173 : 253 : 0.81
+T: 1 1 : 173 : 237 : 0.09
+T: 1 1 : 173 : 173 : 0.01
+T: 1 1 : 173 : 189 : 0.09
+T: 1 1 : 172 : 252 : 0.81
+T: 1 1 : 172 : 236 : 0.09
+T: 1 1 : 172 : 172 : 0.01
+T: 1 1 : 172 : 188 : 0.09
+T: 1 1 : 171 : 251 : 0.81
+T: 1 1 : 171 : 235 : 0.09
+T: 1 1 : 171 : 171 : 0.01
+T: 1 1 : 171 : 187 : 0.09
+T: 1 1 : 170 : 250 : 0.81
+T: 1 1 : 170 : 234 : 0.09
+T: 1 1 : 170 : 170 : 0.01
+T: 1 1 : 170 : 186 : 0.09
+T: 1 1 : 169 : 249 : 0.81
+T: 1 1 : 169 : 233 : 0.09
+T: 1 1 : 169 : 169 : 0.01
+T: 1 1 : 169 : 185 : 0.09
+T: 1 1 : 168 : 248 : 0.81
+T: 1 1 : 168 : 232 : 0.09
+T: 1 1 : 168 : 168 : 0.01
+T: 1 1 : 168 : 184 : 0.09
+T: 1 1 : 167 : 247 : 0.81
+T: 1 1 : 167 : 231 : 0.09
+T: 1 1 : 167 : 167 : 0.01
+T: 1 1 : 167 : 183 : 0.09
+T: 1 1 : 166 : 246 : 0.81
+T: 1 1 : 166 : 230 : 0.09
+T: 1 1 : 166 : 166 : 0.01
+T: 1 1 : 166 : 182 : 0.09
+T: 1 1 : 77 : 93 : 0.9
+T: 1 1 : 77 : 77 : 0.1
+T: 1 1 : 76 : 92 : 0.9
+T: 1 1 : 76 : 76 : 0.1
+T: 1 1 : 75 : 91 : 0.9
+T: 1 1 : 75 : 75 : 0.1
+T: 1 1 : 74 : 90 : 0.9
+T: 1 1 : 74 : 74 : 0.1
+T: 1 1 : 73 : 89 : 0.9
+T: 1 1 : 73 : 73 : 0.1
+T: 1 1 : 72 : 88 : 0.9
+T: 1 1 : 72 : 72 : 0.1
+T: 1 1 : 71 : 87 : 0.9
+T: 1 1 : 71 : 71 : 0.1
+T: 1 1 : 70 : 86 : 0.9
+T: 1 1 : 70 : 70 : 0.1
+T: 1 1 : 69 : 85 : 0.9
+T: 1 1 : 69 : 69 : 0.1
+T: 1 1 : 68 : 84 : 0.9
+T: 1 1 : 68 : 68 : 0.1
+T: 1 1 : 67 : 83 : 0.9
+T: 1 1 : 67 : 67 : 0.1
+T: 1 1 : 66 : 82 : 0.9
+T: 1 1 : 66 : 66 : 0.1
+T: 1 1 : 65 : 81 : 0.9
+T: 1 1 : 65 : 65 : 0.1
+T: 1 1 : 64 : 80 : 0.9
+T: 1 1 : 64 : 64 : 0.1
+T: 1 1 : 63 : 127 : 0.9
+T: 1 1 : 63 : 63 : 0.1
+T: 1 1 : 62 : 126 : 0.9
+T: 1 1 : 62 : 62 : 0.1
+T: 1 1 : 61 : 125 : 0.9
+T: 1 1 : 61 : 61 : 0.1
+T: 1 1 : 60 : 124 : 0.9
+T: 1 1 : 60 : 60 : 0.1
+T: 1 1 : 59 : 123 : 0.9
+T: 1 1 : 59 : 59 : 0.1
+T: 1 1 : 58 : 122 : 0.9
+T: 1 1 : 58 : 58 : 0.1
+T: 1 1 : 57 : 121 : 0.9
+T: 1 1 : 57 : 57 : 0.1
+T: 1 1 : 56 : 120 : 0.9
+T: 1 1 : 56 : 56 : 0.1
+T: 1 1 : 55 : 119 : 0.9
+T: 1 1 : 55 : 55 : 0.1
+T: 1 1 : 54 : 118 : 0.9
+T: 1 1 : 54 : 54 : 0.1
+T: 1 1 : 53 : 117 : 0.9
+T: 1 1 : 53 : 53 : 0.1
+T: 1 1 : 52 : 116 : 0.9
+T: 1 1 : 52 : 52 : 0.1
+T: 1 1 : 51 : 115 : 0.9
+T: 1 1 : 51 : 51 : 0.1
+T: 1 1 : 50 : 114 : 0.9
+T: 1 1 : 50 : 50 : 0.1
+T: 1 1 : 49 : 113 : 0.9
+T: 1 1 : 49 : 49 : 0.1
+T: 1 1 : 48 : 112 : 0.9
+T: 1 1 : 48 : 48 : 0.1
+T: 1 1 : 47 : 127 : 0.81
+T: 1 1 : 47 : 111 : 0.09
+T: 1 1 : 47 : 47 : 0.01
+T: 1 1 : 47 : 63 : 0.09
+T: 1 1 : 46 : 126 : 0.81
+T: 1 1 : 46 : 110 : 0.09
+T: 1 1 : 46 : 46 : 0.01
+T: 1 1 : 46 : 62 : 0.09
+T: 1 1 : 45 : 125 : 0.81
+T: 1 1 : 45 : 109 : 0.09
+T: 1 1 : 45 : 45 : 0.01
+T: 1 1 : 45 : 61 : 0.09
+T: 1 1 : 44 : 124 : 0.81
+T: 1 1 : 44 : 108 : 0.09
+T: 1 1 : 44 : 44 : 0.01
+T: 1 1 : 44 : 60 : 0.09
+T: 1 1 : 43 : 123 : 0.81
+T: 1 1 : 43 : 107 : 0.09
+T: 1 1 : 43 : 43 : 0.01
+T: 1 1 : 43 : 59 : 0.09
+T: 1 1 : 42 : 122 : 0.81
+T: 1 1 : 42 : 106 : 0.09
+T: 1 1 : 42 : 42 : 0.01
+T: 1 1 : 42 : 58 : 0.09
+T: 1 1 : 41 : 121 : 0.81
+T: 1 1 : 41 : 105 : 0.09
+T: 1 1 : 41 : 41 : 0.01
+T: 1 1 : 41 : 57 : 0.09
+T: 1 1 : 40 : 120 : 0.81
+T: 1 1 : 40 : 104 : 0.09
+T: 1 1 : 40 : 40 : 0.01
+T: 1 1 : 40 : 56 : 0.09
+T: 1 1 : 39 : 119 : 0.81
+T: 1 1 : 39 : 103 : 0.09
+T: 1 1 : 39 : 39 : 0.01
+T: 1 1 : 39 : 55 : 0.09
+T: 1 1 : 38 : 118 : 0.81
+T: 1 1 : 38 : 102 : 0.09
+T: 1 1 : 38 : 38 : 0.01
+T: 1 1 : 38 : 54 : 0.09
+T: 1 1 : 37 : 117 : 0.81
+T: 1 1 : 37 : 101 : 0.09
+T: 1 1 : 37 : 37 : 0.01
+T: 1 1 : 37 : 53 : 0.09
+T: 1 1 : 36 : 116 : 0.81
+T: 1 1 : 36 : 100 : 0.09
+T: 1 1 : 36 : 36 : 0.01
+T: 1 1 : 36 : 52 : 0.09
+T: 1 1 : 15 : 95 : 0.81
+T: 1 1 : 15 : 79 : 0.09
+T: 1 1 : 15 : 15 : 0.01
+T: 1 1 : 15 : 31 : 0.09
+T: 1 1 : 14 : 94 : 0.81
+T: 1 1 : 14 : 78 : 0.09
+T: 1 1 : 14 : 14 : 0.01
+T: 1 1 : 14 : 30 : 0.09
+T: 1 1 : 13 : 93 : 0.81
+T: 1 1 : 13 : 77 : 0.09
+T: 1 1 : 13 : 13 : 0.01
+T: 1 1 : 13 : 29 : 0.09
+T: 1 1 : 12 : 92 : 0.81
+T: 1 1 : 12 : 76 : 0.09
+T: 1 1 : 12 : 12 : 0.01
+T: 1 1 : 12 : 28 : 0.09
+T: 1 1 : 11 : 91 : 0.81
+T: 1 1 : 11 : 75 : 0.09
+T: 1 1 : 11 : 11 : 0.01
+T: 1 1 : 11 : 27 : 0.09
+T: 1 1 : 10 : 90 : 0.81
+T: 1 1 : 10 : 74 : 0.09
+T: 1 1 : 10 : 10 : 0.01
+T: 1 1 : 10 : 26 : 0.09
+T: 1 1 : 9 : 89 : 0.81
+T: 1 1 : 9 : 73 : 0.09
+T: 1 1 : 9 : 9 : 0.01
+T: 1 1 : 9 : 25 : 0.09
+T: 1 1 : 8 : 88 : 0.81
+T: 1 1 : 8 : 72 : 0.09
+T: 1 1 : 8 : 8 : 0.01
+T: 1 1 : 8 : 24 : 0.09
+T: 1 1 : 7 : 87 : 0.81
+T: 1 1 : 7 : 71 : 0.09
+T: 1 1 : 7 : 7 : 0.01
+T: 1 1 : 7 : 23 : 0.09
+T: 1 1 : 6 : 86 : 0.81
+T: 1 1 : 6 : 70 : 0.09
+T: 1 1 : 6 : 6 : 0.01
+T: 1 1 : 6 : 22 : 0.09
+T: 1 1 : 1 : 81 : 0.81
+T: 1 1 : 1 : 65 : 0.09
+T: 1 1 : 1 : 1 : 0.01
+T: 1 1 : 1 : 17 : 0.09
+T: 1 1 : 0 : 80 : 0.81
+T: 1 1 : 0 : 64 : 0.09
+T: 1 1 : 0 : 0 : 0.01
+T: 1 1 : 0 : 16 : 0.09
+T: 1 1 : 2 : 82 : 0.81
+T: 1 1 : 2 : 66 : 0.09
+T: 1 1 : 2 : 2 : 0.01
+T: 1 1 : 2 : 18 : 0.09
+T: 1 1 : 3 : 83 : 0.81
+T: 1 1 : 3 : 67 : 0.09
+T: 1 1 : 3 : 3 : 0.01
+T: 1 1 : 3 : 19 : 0.09
+T: 1 1 : 4 : 84 : 0.81
+T: 1 1 : 4 : 68 : 0.09
+T: 1 1 : 4 : 4 : 0.01
+T: 1 1 : 4 : 20 : 0.09
+T: 1 1 : 5 : 85 : 0.81
+T: 1 1 : 5 : 69 : 0.09
+T: 1 1 : 5 : 5 : 0.01
+T: 1 1 : 5 : 21 : 0.09
+T: 1 1 : 16 : 80 : 0.9
+T: 1 1 : 16 : 16 : 0.1
+T: 1 1 : 17 : 81 : 0.9
+T: 1 1 : 17 : 17 : 0.1
+T: 1 1 : 18 : 82 : 0.9
+T: 1 1 : 18 : 18 : 0.1
+T: 1 1 : 19 : 83 : 0.9
+T: 1 1 : 19 : 19 : 0.1
+T: 1 1 : 20 : 84 : 0.9
+T: 1 1 : 20 : 20 : 0.1
+T: 1 1 : 21 : 85 : 0.9
+T: 1 1 : 21 : 21 : 0.1
+T: 1 1 : 22 : 86 : 0.9
+T: 1 1 : 22 : 22 : 0.1
+T: 1 1 : 23 : 87 : 0.9
+T: 1 1 : 23 : 23 : 0.1
+T: 1 1 : 24 : 88 : 0.9
+T: 1 1 : 24 : 24 : 0.1
+T: 1 1 : 25 : 89 : 0.9
+T: 1 1 : 25 : 25 : 0.1
+T: 1 1 : 26 : 90 : 0.9
+T: 1 1 : 26 : 26 : 0.1
+T: 1 1 : 27 : 91 : 0.9
+T: 1 1 : 27 : 27 : 0.1
+T: 1 1 : 28 : 92 : 0.9
+T: 1 1 : 28 : 28 : 0.1
+T: 1 1 : 29 : 93 : 0.9
+T: 1 1 : 29 : 29 : 0.1
+T: 1 1 : 30 : 94 : 0.9
+T: 1 1 : 30 : 30 : 0.1
+T: 1 1 : 31 : 95 : 0.9
+T: 1 1 : 31 : 31 : 0.1
+T: 1 1 : 32 : 112 : 0.81
+T: 1 1 : 32 : 96 : 0.09
+T: 1 1 : 32 : 32 : 0.01
+T: 1 1 : 32 : 48 : 0.09
+T: 1 1 : 33 : 113 : 0.81
+T: 1 1 : 33 : 97 : 0.09
+T: 1 1 : 33 : 33 : 0.01
+T: 1 1 : 33 : 49 : 0.09
+T: 1 1 : 34 : 114 : 0.81
+T: 1 1 : 34 : 98 : 0.09
+T: 1 1 : 34 : 34 : 0.01
+T: 1 1 : 34 : 50 : 0.09
+T: 1 1 : 35 : 115 : 0.81
+T: 1 1 : 35 : 99 : 0.09
+T: 1 1 : 35 : 35 : 0.01
+T: 1 1 : 35 : 51 : 0.09
+T: 1 1 : 78 : 94 : 0.9
+T: 1 1 : 78 : 78 : 0.1
+T: 1 1 : 79 : 95 : 0.9
+T: 1 1 : 79 : 79 : 0.1
+T: 1 1 : 80 : 80 : 1
+T: 1 1 : 81 : 81 : 1
+T: 1 1 : 82 : 82 : 1
+T: 1 1 : 83 : 83 : 1
+T: 1 1 : 84 : 84 : 1
+T: 1 1 : 85 : 85 : 1
+T: 1 1 : 86 : 86 : 1
+T: 1 1 : 87 : 87 : 1
+T: 1 1 : 88 : 88 : 1
+T: 1 1 : 89 : 89 : 1
+T: 1 1 : 90 : 90 : 1
+T: 1 1 : 91 : 91 : 1
+T: 1 1 : 92 : 92 : 1
+T: 1 1 : 93 : 93 : 1
+T: 1 1 : 94 : 94 : 1
+T: 1 1 : 95 : 95 : 1
+T: 1 1 : 96 : 112 : 0.9
+T: 1 1 : 96 : 96 : 0.1
+T: 1 1 : 97 : 113 : 0.9
+T: 1 1 : 97 : 97 : 0.1
+T: 1 1 : 98 : 114 : 0.9
+T: 1 1 : 98 : 98 : 0.1
+T: 1 1 : 99 : 115 : 0.9
+T: 1 1 : 99 : 99 : 0.1
+T: 1 1 : 100 : 116 : 0.9
+T: 1 1 : 100 : 100 : 0.1
+T: 1 1 : 101 : 117 : 0.9
+T: 1 1 : 101 : 101 : 0.1
+T: 1 1 : 102 : 118 : 0.9
+T: 1 1 : 102 : 102 : 0.1
+T: 1 1 : 103 : 119 : 0.9
+T: 1 1 : 103 : 103 : 0.1
+T: 1 1 : 104 : 120 : 0.9
+T: 1 1 : 104 : 104 : 0.1
+T: 1 1 : 105 : 121 : 0.9
+T: 1 1 : 105 : 105 : 0.1
+T: 1 1 : 106 : 122 : 0.9
+T: 1 1 : 106 : 106 : 0.1
+T: 1 1 : 107 : 123 : 0.9
+T: 1 1 : 107 : 107 : 0.1
+T: 1 1 : 108 : 124 : 0.9
+T: 1 1 : 108 : 108 : 0.1
+T: 1 1 : 109 : 125 : 0.9
+T: 1 1 : 109 : 109 : 0.1
+T: 1 1 : 110 : 126 : 0.9
+T: 1 1 : 110 : 110 : 0.1
+T: 1 1 : 111 : 127 : 0.9
+T: 1 1 : 111 : 111 : 0.1
+T: 1 1 : 112 : 112 : 1
+T: 1 1 : 113 : 113 : 1
+T: 1 1 : 114 : 114 : 1
+T: 1 1 : 115 : 115 : 1
+T: 1 1 : 116 : 116 : 1
+T: 1 1 : 117 : 117 : 1
+T: 1 1 : 118 : 118 : 1
+T: 1 1 : 119 : 119 : 1
+T: 1 1 : 120 : 120 : 1
+T: 1 1 : 121 : 121 : 1
+T: 1 1 : 122 : 122 : 1
+T: 1 1 : 123 : 123 : 1
+T: 1 1 : 124 : 124 : 1
+T: 1 1 : 125 : 125 : 1
+T: 1 1 : 126 : 126 : 1
+T: 1 1 : 127 : 127 : 1
+T: 1 1 : 128 : 208 : 0.81
+T: 1 1 : 128 : 192 : 0.09
+T: 1 1 : 128 : 128 : 0.01
+T: 1 1 : 128 : 144 : 0.09
+T: 1 1 : 129 : 209 : 0.81
+T: 1 1 : 129 : 193 : 0.09
+T: 1 1 : 129 : 129 : 0.01
+T: 1 1 : 129 : 145 : 0.09
+T: 1 1 : 130 : 210 : 0.81
+T: 1 1 : 130 : 194 : 0.09
+T: 1 1 : 130 : 130 : 0.01
+T: 1 1 : 130 : 146 : 0.09
+T: 1 1 : 131 : 211 : 0.81
+T: 1 1 : 131 : 195 : 0.09
+T: 1 1 : 131 : 131 : 0.01
+T: 1 1 : 131 : 147 : 0.09
+T: 1 1 : 132 : 212 : 0.81
+T: 1 1 : 132 : 196 : 0.09
+T: 1 1 : 132 : 132 : 0.01
+T: 1 1 : 132 : 148 : 0.09
+T: 1 1 : 133 : 213 : 0.81
+T: 1 1 : 133 : 197 : 0.09
+T: 1 1 : 133 : 133 : 0.01
+T: 1 1 : 133 : 149 : 0.09
+T: 1 1 : 134 : 214 : 0.81
+T: 1 1 : 134 : 198 : 0.09
+T: 1 1 : 134 : 134 : 0.01
+T: 1 1 : 134 : 150 : 0.09
+T: 1 1 : 135 : 215 : 0.81
+T: 1 1 : 135 : 199 : 0.09
+T: 1 1 : 135 : 135 : 0.01
+T: 1 1 : 135 : 151 : 0.09
+T: 1 1 : 136 : 216 : 0.81
+T: 1 1 : 136 : 200 : 0.09
+T: 1 1 : 136 : 136 : 0.01
+T: 1 1 : 136 : 152 : 0.09
+T: 1 1 : 137 : 217 : 0.81
+T: 1 1 : 137 : 201 : 0.09
+T: 1 1 : 137 : 137 : 0.01
+T: 1 1 : 137 : 153 : 0.09
+T: 1 1 : 138 : 218 : 0.81
+T: 1 1 : 138 : 202 : 0.09
+T: 1 1 : 138 : 138 : 0.01
+T: 1 1 : 138 : 154 : 0.09
+T: 1 1 : 139 : 219 : 0.81
+T: 1 1 : 139 : 203 : 0.09
+T: 1 1 : 139 : 139 : 0.01
+T: 1 1 : 139 : 155 : 0.09
+T: 1 1 : 140 : 220 : 0.81
+T: 1 1 : 140 : 204 : 0.09
+T: 1 1 : 140 : 140 : 0.01
+T: 1 1 : 140 : 156 : 0.09
+T: 1 1 : 141 : 221 : 0.81
+T: 1 1 : 141 : 205 : 0.09
+T: 1 1 : 141 : 141 : 0.01
+T: 1 1 : 141 : 157 : 0.09
+T: 1 1 : 142 : 222 : 0.81
+T: 1 1 : 142 : 206 : 0.09
+T: 1 1 : 142 : 142 : 0.01
+T: 1 1 : 142 : 158 : 0.09
+T: 1 1 : 143 : 223 : 0.81
+T: 1 1 : 143 : 207 : 0.09
+T: 1 1 : 143 : 143 : 0.01
+T: 1 1 : 143 : 159 : 0.09
+T: 1 1 : 144 : 208 : 0.9
+T: 1 1 : 144 : 144 : 0.1
+T: 1 1 : 145 : 209 : 0.9
+T: 1 1 : 145 : 145 : 0.1
+T: 1 1 : 146 : 210 : 0.9
+T: 1 1 : 146 : 146 : 0.1
+T: 1 1 : 147 : 211 : 0.9
+T: 1 1 : 147 : 147 : 0.1
+T: 1 1 : 148 : 212 : 0.9
+T: 1 1 : 148 : 148 : 0.1
+T: 1 1 : 149 : 213 : 0.9
+T: 1 1 : 149 : 149 : 0.1
+T: 1 1 : 150 : 214 : 0.9
+T: 1 1 : 150 : 150 : 0.1
+T: 1 1 : 151 : 215 : 0.9
+T: 1 1 : 151 : 151 : 0.1
+T: 1 1 : 152 : 216 : 0.9
+T: 1 1 : 152 : 152 : 0.1
+T: 1 1 : 153 : 217 : 0.9
+T: 1 1 : 153 : 153 : 0.1
+T: 1 1 : 154 : 218 : 0.9
+T: 1 1 : 154 : 154 : 0.1
+T: 1 1 : 155 : 219 : 0.9
+T: 1 1 : 155 : 155 : 0.1
+T: 1 1 : 156 : 220 : 0.9
+T: 1 1 : 156 : 156 : 0.1
+T: 1 1 : 157 : 221 : 0.9
+T: 1 1 : 157 : 157 : 0.1
+T: 1 1 : 158 : 222 : 0.9
+T: 1 1 : 158 : 158 : 0.1
+T: 1 1 : 159 : 223 : 0.9
+T: 1 1 : 159 : 159 : 0.1
+T: 1 1 : 160 : 240 : 0.81
+T: 1 1 : 160 : 224 : 0.09
+T: 1 1 : 160 : 160 : 0.01
+T: 1 1 : 160 : 176 : 0.09
+T: 1 1 : 161 : 241 : 0.81
+T: 1 1 : 161 : 225 : 0.09
+T: 1 1 : 161 : 161 : 0.01
+T: 1 1 : 161 : 177 : 0.09
+T: 1 1 : 162 : 242 : 0.81
+T: 1 1 : 162 : 226 : 0.09
+T: 1 1 : 162 : 162 : 0.01
+T: 1 1 : 162 : 178 : 0.09
+T: 1 1 : 163 : 243 : 0.81
+T: 1 1 : 163 : 227 : 0.09
+T: 1 1 : 163 : 163 : 0.01
+T: 1 1 : 163 : 179 : 0.09
+T: 1 1 : 164 : 244 : 0.81
+T: 1 1 : 164 : 228 : 0.09
+T: 1 1 : 164 : 164 : 0.01
+T: 1 1 : 164 : 180 : 0.09
+T: 1 1 : 165 : 245 : 0.81
+T: 1 1 : 165 : 229 : 0.09
+T: 1 1 : 165 : 165 : 0.01
+T: 1 1 : 165 : 181 : 0.09
+T: 1 2 : 255 : 255 : 0.1
+T: 1 2 : 255 : 223 : 0.9
+T: 1 2 : 254 : 254 : 0.1
+T: 1 2 : 254 : 222 : 0.9
+T: 1 2 : 253 : 253 : 0.1
+T: 1 2 : 253 : 221 : 0.9
+T: 1 2 : 252 : 252 : 0.1
+T: 1 2 : 252 : 220 : 0.9
+T: 1 2 : 251 : 251 : 0.1
+T: 1 2 : 251 : 219 : 0.9
+T: 1 2 : 250 : 250 : 0.1
+T: 1 2 : 250 : 218 : 0.9
+T: 1 2 : 249 : 249 : 0.1
+T: 1 2 : 249 : 217 : 0.9
+T: 1 2 : 248 : 248 : 0.1
+T: 1 2 : 248 : 216 : 0.9
+T: 1 2 : 247 : 247 : 0.1
+T: 1 2 : 247 : 215 : 0.9
+T: 1 2 : 246 : 246 : 0.1
+T: 1 2 : 246 : 214 : 0.9
+T: 1 2 : 245 : 245 : 0.1
+T: 1 2 : 245 : 213 : 0.9
+T: 1 2 : 244 : 244 : 0.1
+T: 1 2 : 244 : 212 : 0.9
+T: 1 2 : 243 : 243 : 0.1
+T: 1 2 : 243 : 211 : 0.9
+T: 1 2 : 242 : 242 : 0.1
+T: 1 2 : 242 : 210 : 0.9
+T: 1 2 : 241 : 241 : 0.1
+T: 1 2 : 241 : 209 : 0.9
+T: 1 2 : 240 : 240 : 0.1
+T: 1 2 : 240 : 208 : 0.9
+T: 1 2 : 239 : 239 : 0.1
+T: 1 2 : 239 : 207 : 0.9
+T: 1 2 : 238 : 238 : 0.1
+T: 1 2 : 238 : 206 : 0.9
+T: 1 2 : 237 : 237 : 0.1
+T: 1 2 : 237 : 205 : 0.9
+T: 1 2 : 236 : 236 : 0.1
+T: 1 2 : 236 : 204 : 0.9
+T: 1 2 : 235 : 235 : 0.1
+T: 1 2 : 235 : 203 : 0.9
+T: 1 2 : 234 : 234 : 0.1
+T: 1 2 : 234 : 202 : 0.9
+T: 1 2 : 233 : 233 : 0.1
+T: 1 2 : 233 : 201 : 0.9
+T: 1 2 : 232 : 232 : 0.1
+T: 1 2 : 232 : 200 : 0.9
+T: 1 2 : 231 : 231 : 0.1
+T: 1 2 : 231 : 199 : 0.9
+T: 1 2 : 230 : 230 : 0.1
+T: 1 2 : 230 : 198 : 0.9
+T: 1 2 : 229 : 229 : 0.1
+T: 1 2 : 229 : 197 : 0.9
+T: 1 2 : 228 : 228 : 0.1
+T: 1 2 : 228 : 196 : 0.9
+T: 1 2 : 227 : 227 : 0.1
+T: 1 2 : 227 : 195 : 0.9
+T: 1 2 : 226 : 226 : 0.1
+T: 1 2 : 226 : 194 : 0.9
+T: 1 2 : 225 : 225 : 0.1
+T: 1 2 : 225 : 193 : 0.9
+T: 1 2 : 224 : 224 : 0.1
+T: 1 2 : 224 : 192 : 0.9
+T: 1 2 : 223 : 223 : 1
+T: 1 2 : 222 : 222 : 1
+T: 1 2 : 221 : 221 : 1
+T: 1 2 : 220 : 220 : 1
+T: 1 2 : 219 : 219 : 1
+T: 1 2 : 218 : 218 : 1
+T: 1 2 : 217 : 217 : 1
+T: 1 2 : 216 : 216 : 1
+T: 1 2 : 215 : 215 : 1
+T: 1 2 : 214 : 214 : 1
+T: 1 2 : 213 : 213 : 1
+T: 1 2 : 212 : 212 : 1
+T: 1 2 : 211 : 211 : 1
+T: 1 2 : 210 : 210 : 1
+T: 1 2 : 209 : 209 : 1
+T: 1 2 : 208 : 208 : 1
+T: 1 2 : 207 : 207 : 1
+T: 1 2 : 206 : 206 : 1
+T: 1 2 : 205 : 205 : 1
+T: 1 2 : 204 : 204 : 1
+T: 1 2 : 203 : 203 : 1
+T: 1 2 : 202 : 202 : 1
+T: 1 2 : 201 : 201 : 1
+T: 1 2 : 200 : 200 : 1
+T: 1 2 : 199 : 199 : 1
+T: 1 2 : 198 : 198 : 1
+T: 1 2 : 197 : 197 : 1
+T: 1 2 : 196 : 196 : 1
+T: 1 2 : 195 : 195 : 1
+T: 1 2 : 194 : 194 : 1
+T: 1 2 : 193 : 193 : 1
+T: 1 2 : 192 : 192 : 1
+T: 1 2 : 191 : 255 : 0.09
+T: 1 2 : 191 : 223 : 0.81
+T: 1 2 : 191 : 159 : 0.09
+T: 1 2 : 191 : 191 : 0.01
+T: 1 2 : 190 : 254 : 0.09
+T: 1 2 : 190 : 222 : 0.81
+T: 1 2 : 190 : 158 : 0.09
+T: 1 2 : 190 : 190 : 0.01
+T: 1 2 : 189 : 253 : 0.09
+T: 1 2 : 189 : 221 : 0.81
+T: 1 2 : 189 : 157 : 0.09
+T: 1 2 : 189 : 189 : 0.01
+T: 1 2 : 188 : 252 : 0.09
+T: 1 2 : 188 : 220 : 0.81
+T: 1 2 : 188 : 156 : 0.09
+T: 1 2 : 188 : 188 : 0.01
+T: 1 2 : 187 : 251 : 0.09
+T: 1 2 : 187 : 219 : 0.81
+T: 1 2 : 187 : 155 : 0.09
+T: 1 2 : 187 : 187 : 0.01
+T: 1 2 : 186 : 250 : 0.09
+T: 1 2 : 186 : 218 : 0.81
+T: 1 2 : 186 : 154 : 0.09
+T: 1 2 : 186 : 186 : 0.01
+T: 1 2 : 185 : 249 : 0.09
+T: 1 2 : 185 : 217 : 0.81
+T: 1 2 : 185 : 153 : 0.09
+T: 1 2 : 185 : 185 : 0.01
+T: 1 2 : 184 : 248 : 0.09
+T: 1 2 : 184 : 216 : 0.81
+T: 1 2 : 184 : 152 : 0.09
+T: 1 2 : 184 : 184 : 0.01
+T: 1 2 : 183 : 247 : 0.09
+T: 1 2 : 183 : 215 : 0.81
+T: 1 2 : 183 : 151 : 0.09
+T: 1 2 : 183 : 183 : 0.01
+T: 1 2 : 182 : 246 : 0.09
+T: 1 2 : 182 : 214 : 0.81
+T: 1 2 : 182 : 150 : 0.09
+T: 1 2 : 182 : 182 : 0.01
+T: 1 2 : 181 : 245 : 0.09
+T: 1 2 : 181 : 213 : 0.81
+T: 1 2 : 181 : 149 : 0.09
+T: 1 2 : 181 : 181 : 0.01
+T: 1 2 : 180 : 244 : 0.09
+T: 1 2 : 180 : 212 : 0.81
+T: 1 2 : 180 : 148 : 0.09
+T: 1 2 : 180 : 180 : 0.01
+T: 1 2 : 179 : 243 : 0.09
+T: 1 2 : 179 : 211 : 0.81
+T: 1 2 : 179 : 147 : 0.09
+T: 1 2 : 179 : 179 : 0.01
+T: 1 2 : 178 : 242 : 0.09
+T: 1 2 : 178 : 210 : 0.81
+T: 1 2 : 178 : 146 : 0.09
+T: 1 2 : 178 : 178 : 0.01
+T: 1 2 : 177 : 241 : 0.09
+T: 1 2 : 177 : 209 : 0.81
+T: 1 2 : 177 : 145 : 0.09
+T: 1 2 : 177 : 177 : 0.01
+T: 1 2 : 176 : 240 : 0.09
+T: 1 2 : 176 : 208 : 0.81
+T: 1 2 : 176 : 144 : 0.09
+T: 1 2 : 176 : 176 : 0.01
+T: 1 2 : 175 : 239 : 0.09
+T: 1 2 : 175 : 207 : 0.81
+T: 1 2 : 175 : 143 : 0.09
+T: 1 2 : 175 : 175 : 0.01
+T: 1 2 : 174 : 238 : 0.09
+T: 1 2 : 174 : 206 : 0.81
+T: 1 2 : 174 : 142 : 0.09
+T: 1 2 : 174 : 174 : 0.01
+T: 1 2 : 173 : 237 : 0.09
+T: 1 2 : 173 : 205 : 0.81
+T: 1 2 : 173 : 141 : 0.09
+T: 1 2 : 173 : 173 : 0.01
+T: 1 2 : 172 : 236 : 0.09
+T: 1 2 : 172 : 204 : 0.81
+T: 1 2 : 172 : 140 : 0.09
+T: 1 2 : 172 : 172 : 0.01
+T: 1 2 : 171 : 235 : 0.09
+T: 1 2 : 171 : 203 : 0.81
+T: 1 2 : 171 : 139 : 0.09
+T: 1 2 : 171 : 171 : 0.01
+T: 1 2 : 170 : 234 : 0.09
+T: 1 2 : 170 : 202 : 0.81
+T: 1 2 : 170 : 138 : 0.09
+T: 1 2 : 170 : 170 : 0.01
+T: 1 2 : 169 : 233 : 0.09
+T: 1 2 : 169 : 201 : 0.81
+T: 1 2 : 169 : 137 : 0.09
+T: 1 2 : 169 : 169 : 0.01
+T: 1 2 : 168 : 232 : 0.09
+T: 1 2 : 168 : 200 : 0.81
+T: 1 2 : 168 : 136 : 0.09
+T: 1 2 : 168 : 168 : 0.01
+T: 1 2 : 167 : 231 : 0.09
+T: 1 2 : 167 : 199 : 0.81
+T: 1 2 : 167 : 135 : 0.09
+T: 1 2 : 167 : 167 : 0.01
+T: 1 2 : 166 : 230 : 0.09
+T: 1 2 : 166 : 198 : 0.81
+T: 1 2 : 166 : 134 : 0.09
+T: 1 2 : 166 : 166 : 0.01
+T: 1 2 : 77 : 77 : 1
+T: 1 2 : 76 : 76 : 1
+T: 1 2 : 75 : 75 : 1
+T: 1 2 : 74 : 74 : 1
+T: 1 2 : 73 : 73 : 1
+T: 1 2 : 72 : 72 : 1
+T: 1 2 : 71 : 71 : 1
+T: 1 2 : 70 : 70 : 1
+T: 1 2 : 69 : 69 : 1
+T: 1 2 : 68 : 68 : 1
+T: 1 2 : 67 : 67 : 1
+T: 1 2 : 66 : 66 : 1
+T: 1 2 : 65 : 65 : 1
+T: 1 2 : 64 : 64 : 1
+T: 1 2 : 63 : 127 : 0.09
+T: 1 2 : 63 : 95 : 0.81
+T: 1 2 : 63 : 31 : 0.09
+T: 1 2 : 63 : 63 : 0.01
+T: 1 2 : 62 : 126 : 0.09
+T: 1 2 : 62 : 94 : 0.81
+T: 1 2 : 62 : 30 : 0.09
+T: 1 2 : 62 : 62 : 0.01
+T: 1 2 : 61 : 125 : 0.09
+T: 1 2 : 61 : 93 : 0.81
+T: 1 2 : 61 : 29 : 0.09
+T: 1 2 : 61 : 61 : 0.01
+T: 1 2 : 60 : 124 : 0.09
+T: 1 2 : 60 : 92 : 0.81
+T: 1 2 : 60 : 28 : 0.09
+T: 1 2 : 60 : 60 : 0.01
+T: 1 2 : 59 : 123 : 0.09
+T: 1 2 : 59 : 91 : 0.81
+T: 1 2 : 59 : 27 : 0.09
+T: 1 2 : 59 : 59 : 0.01
+T: 1 2 : 58 : 122 : 0.09
+T: 1 2 : 58 : 90 : 0.81
+T: 1 2 : 58 : 26 : 0.09
+T: 1 2 : 58 : 58 : 0.01
+T: 1 2 : 57 : 121 : 0.09
+T: 1 2 : 57 : 89 : 0.81
+T: 1 2 : 57 : 25 : 0.09
+T: 1 2 : 57 : 57 : 0.01
+T: 1 2 : 56 : 120 : 0.09
+T: 1 2 : 56 : 88 : 0.81
+T: 1 2 : 56 : 24 : 0.09
+T: 1 2 : 56 : 56 : 0.01
+T: 1 2 : 55 : 119 : 0.09
+T: 1 2 : 55 : 87 : 0.81
+T: 1 2 : 55 : 23 : 0.09
+T: 1 2 : 55 : 55 : 0.01
+T: 1 2 : 54 : 118 : 0.09
+T: 1 2 : 54 : 86 : 0.81
+T: 1 2 : 54 : 22 : 0.09
+T: 1 2 : 54 : 54 : 0.01
+T: 1 2 : 53 : 117 : 0.09
+T: 1 2 : 53 : 85 : 0.81
+T: 1 2 : 53 : 21 : 0.09
+T: 1 2 : 53 : 53 : 0.01
+T: 1 2 : 52 : 116 : 0.09
+T: 1 2 : 52 : 84 : 0.81
+T: 1 2 : 52 : 20 : 0.09
+T: 1 2 : 52 : 52 : 0.01
+T: 1 2 : 51 : 115 : 0.09
+T: 1 2 : 51 : 83 : 0.81
+T: 1 2 : 51 : 19 : 0.09
+T: 1 2 : 51 : 51 : 0.01
+T: 1 2 : 50 : 114 : 0.09
+T: 1 2 : 50 : 82 : 0.81
+T: 1 2 : 50 : 18 : 0.09
+T: 1 2 : 50 : 50 : 0.01
+T: 1 2 : 49 : 113 : 0.09
+T: 1 2 : 49 : 81 : 0.81
+T: 1 2 : 49 : 17 : 0.09
+T: 1 2 : 49 : 49 : 0.01
+T: 1 2 : 48 : 112 : 0.09
+T: 1 2 : 48 : 80 : 0.81
+T: 1 2 : 48 : 16 : 0.09
+T: 1 2 : 48 : 48 : 0.01
+T: 1 2 : 47 : 111 : 0.09
+T: 1 2 : 47 : 79 : 0.81
+T: 1 2 : 47 : 15 : 0.09
+T: 1 2 : 47 : 47 : 0.01
+T: 1 2 : 46 : 110 : 0.09
+T: 1 2 : 46 : 78 : 0.81
+T: 1 2 : 46 : 14 : 0.09
+T: 1 2 : 46 : 46 : 0.01
+T: 1 2 : 45 : 109 : 0.09
+T: 1 2 : 45 : 77 : 0.81
+T: 1 2 : 45 : 13 : 0.09
+T: 1 2 : 45 : 45 : 0.01
+T: 1 2 : 44 : 108 : 0.09
+T: 1 2 : 44 : 76 : 0.81
+T: 1 2 : 44 : 12 : 0.09
+T: 1 2 : 44 : 44 : 0.01
+T: 1 2 : 43 : 107 : 0.09
+T: 1 2 : 43 : 75 : 0.81
+T: 1 2 : 43 : 11 : 0.09
+T: 1 2 : 43 : 43 : 0.01
+T: 1 2 : 42 : 106 : 0.09
+T: 1 2 : 42 : 74 : 0.81
+T: 1 2 : 42 : 10 : 0.09
+T: 1 2 : 42 : 42 : 0.01
+T: 1 2 : 41 : 105 : 0.09
+T: 1 2 : 41 : 73 : 0.81
+T: 1 2 : 41 : 9 : 0.09
+T: 1 2 : 41 : 41 : 0.01
+T: 1 2 : 40 : 104 : 0.09
+T: 1 2 : 40 : 72 : 0.81
+T: 1 2 : 40 : 8 : 0.09
+T: 1 2 : 40 : 40 : 0.01
+T: 1 2 : 39 : 103 : 0.09
+T: 1 2 : 39 : 71 : 0.81
+T: 1 2 : 39 : 7 : 0.09
+T: 1 2 : 39 : 39 : 0.01
+T: 1 2 : 38 : 102 : 0.09
+T: 1 2 : 38 : 70 : 0.81
+T: 1 2 : 38 : 6 : 0.09
+T: 1 2 : 38 : 38 : 0.01
+T: 1 2 : 37 : 101 : 0.09
+T: 1 2 : 37 : 69 : 0.81
+T: 1 2 : 37 : 5 : 0.09
+T: 1 2 : 37 : 37 : 0.01
+T: 1 2 : 36 : 100 : 0.09
+T: 1 2 : 36 : 68 : 0.81
+T: 1 2 : 36 : 4 : 0.09
+T: 1 2 : 36 : 36 : 0.01
+T: 1 2 : 15 : 79 : 0.9
+T: 1 2 : 15 : 15 : 0.1
+T: 1 2 : 14 : 78 : 0.9
+T: 1 2 : 14 : 14 : 0.1
+T: 1 2 : 13 : 77 : 0.9
+T: 1 2 : 13 : 13 : 0.1
+T: 1 2 : 12 : 76 : 0.9
+T: 1 2 : 12 : 12 : 0.1
+T: 1 2 : 11 : 75 : 0.9
+T: 1 2 : 11 : 11 : 0.1
+T: 1 2 : 10 : 74 : 0.9
+T: 1 2 : 10 : 10 : 0.1
+T: 1 2 : 9 : 73 : 0.9
+T: 1 2 : 9 : 9 : 0.1
+T: 1 2 : 8 : 72 : 0.9
+T: 1 2 : 8 : 8 : 0.1
+T: 1 2 : 7 : 71 : 0.9
+T: 1 2 : 7 : 7 : 0.1
+T: 1 2 : 6 : 70 : 0.9
+T: 1 2 : 6 : 6 : 0.1
+T: 1 2 : 1 : 65 : 0.9
+T: 1 2 : 1 : 1 : 0.1
+T: 1 2 : 0 : 64 : 0.9
+T: 1 2 : 0 : 0 : 0.1
+T: 1 2 : 2 : 66 : 0.9
+T: 1 2 : 2 : 2 : 0.1
+T: 1 2 : 3 : 67 : 0.9
+T: 1 2 : 3 : 3 : 0.1
+T: 1 2 : 4 : 68 : 0.9
+T: 1 2 : 4 : 4 : 0.1
+T: 1 2 : 5 : 69 : 0.9
+T: 1 2 : 5 : 5 : 0.1
+T: 1 2 : 16 : 80 : 0.9
+T: 1 2 : 16 : 16 : 0.1
+T: 1 2 : 17 : 81 : 0.9
+T: 1 2 : 17 : 17 : 0.1
+T: 1 2 : 18 : 82 : 0.9
+T: 1 2 : 18 : 18 : 0.1
+T: 1 2 : 19 : 83 : 0.9
+T: 1 2 : 19 : 19 : 0.1
+T: 1 2 : 20 : 84 : 0.9
+T: 1 2 : 20 : 20 : 0.1
+T: 1 2 : 21 : 85 : 0.9
+T: 1 2 : 21 : 21 : 0.1
+T: 1 2 : 22 : 86 : 0.9
+T: 1 2 : 22 : 22 : 0.1
+T: 1 2 : 23 : 87 : 0.9
+T: 1 2 : 23 : 23 : 0.1
+T: 1 2 : 24 : 88 : 0.9
+T: 1 2 : 24 : 24 : 0.1
+T: 1 2 : 25 : 89 : 0.9
+T: 1 2 : 25 : 25 : 0.1
+T: 1 2 : 26 : 90 : 0.9
+T: 1 2 : 26 : 26 : 0.1
+T: 1 2 : 27 : 91 : 0.9
+T: 1 2 : 27 : 27 : 0.1
+T: 1 2 : 28 : 92 : 0.9
+T: 1 2 : 28 : 28 : 0.1
+T: 1 2 : 29 : 93 : 0.9
+T: 1 2 : 29 : 29 : 0.1
+T: 1 2 : 30 : 94 : 0.9
+T: 1 2 : 30 : 30 : 0.1
+T: 1 2 : 31 : 95 : 0.9
+T: 1 2 : 31 : 31 : 0.1
+T: 1 2 : 32 : 96 : 0.09
+T: 1 2 : 32 : 64 : 0.81
+T: 1 2 : 32 : 0 : 0.09
+T: 1 2 : 32 : 32 : 0.01
+T: 1 2 : 33 : 97 : 0.09
+T: 1 2 : 33 : 65 : 0.81
+T: 1 2 : 33 : 1 : 0.09
+T: 1 2 : 33 : 33 : 0.01
+T: 1 2 : 34 : 98 : 0.09
+T: 1 2 : 34 : 66 : 0.81
+T: 1 2 : 34 : 2 : 0.09
+T: 1 2 : 34 : 34 : 0.01
+T: 1 2 : 35 : 99 : 0.09
+T: 1 2 : 35 : 67 : 0.81
+T: 1 2 : 35 : 3 : 0.09
+T: 1 2 : 35 : 35 : 0.01
+T: 1 2 : 78 : 78 : 1
+T: 1 2 : 79 : 79 : 1
+T: 1 2 : 80 : 80 : 1
+T: 1 2 : 81 : 81 : 1
+T: 1 2 : 82 : 82 : 1
+T: 1 2 : 83 : 83 : 1
+T: 1 2 : 84 : 84 : 1
+T: 1 2 : 85 : 85 : 1
+T: 1 2 : 86 : 86 : 1
+T: 1 2 : 87 : 87 : 1
+T: 1 2 : 88 : 88 : 1
+T: 1 2 : 89 : 89 : 1
+T: 1 2 : 90 : 90 : 1
+T: 1 2 : 91 : 91 : 1
+T: 1 2 : 92 : 92 : 1
+T: 1 2 : 93 : 93 : 1
+T: 1 2 : 94 : 94 : 1
+T: 1 2 : 95 : 95 : 1
+T: 1 2 : 96 : 96 : 0.1
+T: 1 2 : 96 : 64 : 0.9
+T: 1 2 : 97 : 97 : 0.1
+T: 1 2 : 97 : 65 : 0.9
+T: 1 2 : 98 : 98 : 0.1
+T: 1 2 : 98 : 66 : 0.9
+T: 1 2 : 99 : 99 : 0.1
+T: 1 2 : 99 : 67 : 0.9
+T: 1 2 : 100 : 100 : 0.1
+T: 1 2 : 100 : 68 : 0.9
+T: 1 2 : 101 : 101 : 0.1
+T: 1 2 : 101 : 69 : 0.9
+T: 1 2 : 102 : 102 : 0.1
+T: 1 2 : 102 : 70 : 0.9
+T: 1 2 : 103 : 103 : 0.1
+T: 1 2 : 103 : 71 : 0.9
+T: 1 2 : 104 : 104 : 0.1
+T: 1 2 : 104 : 72 : 0.9
+T: 1 2 : 105 : 105 : 0.1
+T: 1 2 : 105 : 73 : 0.9
+T: 1 2 : 106 : 106 : 0.1
+T: 1 2 : 106 : 74 : 0.9
+T: 1 2 : 107 : 107 : 0.1
+T: 1 2 : 107 : 75 : 0.9
+T: 1 2 : 108 : 108 : 0.1
+T: 1 2 : 108 : 76 : 0.9
+T: 1 2 : 109 : 109 : 0.1
+T: 1 2 : 109 : 77 : 0.9
+T: 1 2 : 110 : 110 : 0.1
+T: 1 2 : 110 : 78 : 0.9
+T: 1 2 : 111 : 111 : 0.1
+T: 1 2 : 111 : 79 : 0.9
+T: 1 2 : 112 : 112 : 0.1
+T: 1 2 : 112 : 80 : 0.9
+T: 1 2 : 113 : 113 : 0.1
+T: 1 2 : 113 : 81 : 0.9
+T: 1 2 : 114 : 114 : 0.1
+T: 1 2 : 114 : 82 : 0.9
+T: 1 2 : 115 : 115 : 0.1
+T: 1 2 : 115 : 83 : 0.9
+T: 1 2 : 116 : 116 : 0.1
+T: 1 2 : 116 : 84 : 0.9
+T: 1 2 : 117 : 117 : 0.1
+T: 1 2 : 117 : 85 : 0.9
+T: 1 2 : 118 : 118 : 0.1
+T: 1 2 : 118 : 86 : 0.9
+T: 1 2 : 119 : 119 : 0.1
+T: 1 2 : 119 : 87 : 0.9
+T: 1 2 : 120 : 120 : 0.1
+T: 1 2 : 120 : 88 : 0.9
+T: 1 2 : 121 : 121 : 0.1
+T: 1 2 : 121 : 89 : 0.9
+T: 1 2 : 122 : 122 : 0.1
+T: 1 2 : 122 : 90 : 0.9
+T: 1 2 : 123 : 123 : 0.1
+T: 1 2 : 123 : 91 : 0.9
+T: 1 2 : 124 : 124 : 0.1
+T: 1 2 : 124 : 92 : 0.9
+T: 1 2 : 125 : 125 : 0.1
+T: 1 2 : 125 : 93 : 0.9
+T: 1 2 : 126 : 126 : 0.1
+T: 1 2 : 126 : 94 : 0.9
+T: 1 2 : 127 : 127 : 0.1
+T: 1 2 : 127 : 95 : 0.9
+T: 1 2 : 128 : 192 : 0.9
+T: 1 2 : 128 : 128 : 0.1
+T: 1 2 : 129 : 193 : 0.9
+T: 1 2 : 129 : 129 : 0.1
+T: 1 2 : 130 : 194 : 0.9
+T: 1 2 : 130 : 130 : 0.1
+T: 1 2 : 131 : 195 : 0.9
+T: 1 2 : 131 : 131 : 0.1
+T: 1 2 : 132 : 196 : 0.9
+T: 1 2 : 132 : 132 : 0.1
+T: 1 2 : 133 : 197 : 0.9
+T: 1 2 : 133 : 133 : 0.1
+T: 1 2 : 134 : 198 : 0.9
+T: 1 2 : 134 : 134 : 0.1
+T: 1 2 : 135 : 199 : 0.9
+T: 1 2 : 135 : 135 : 0.1
+T: 1 2 : 136 : 200 : 0.9
+T: 1 2 : 136 : 136 : 0.1
+T: 1 2 : 137 : 201 : 0.9
+T: 1 2 : 137 : 137 : 0.1
+T: 1 2 : 138 : 202 : 0.9
+T: 1 2 : 138 : 138 : 0.1
+T: 1 2 : 139 : 203 : 0.9
+T: 1 2 : 139 : 139 : 0.1
+T: 1 2 : 140 : 204 : 0.9
+T: 1 2 : 140 : 140 : 0.1
+T: 1 2 : 141 : 205 : 0.9
+T: 1 2 : 141 : 141 : 0.1
+T: 1 2 : 142 : 206 : 0.9
+T: 1 2 : 142 : 142 : 0.1
+T: 1 2 : 143 : 207 : 0.9
+T: 1 2 : 143 : 143 : 0.1
+T: 1 2 : 144 : 208 : 0.9
+T: 1 2 : 144 : 144 : 0.1
+T: 1 2 : 145 : 209 : 0.9
+T: 1 2 : 145 : 145 : 0.1
+T: 1 2 : 146 : 210 : 0.9
+T: 1 2 : 146 : 146 : 0.1
+T: 1 2 : 147 : 211 : 0.9
+T: 1 2 : 147 : 147 : 0.1
+T: 1 2 : 148 : 212 : 0.9
+T: 1 2 : 148 : 148 : 0.1
+T: 1 2 : 149 : 213 : 0.9
+T: 1 2 : 149 : 149 : 0.1
+T: 1 2 : 150 : 214 : 0.9
+T: 1 2 : 150 : 150 : 0.1
+T: 1 2 : 151 : 215 : 0.9
+T: 1 2 : 151 : 151 : 0.1
+T: 1 2 : 152 : 216 : 0.9
+T: 1 2 : 152 : 152 : 0.1
+T: 1 2 : 153 : 217 : 0.9
+T: 1 2 : 153 : 153 : 0.1
+T: 1 2 : 154 : 218 : 0.9
+T: 1 2 : 154 : 154 : 0.1
+T: 1 2 : 155 : 219 : 0.9
+T: 1 2 : 155 : 155 : 0.1
+T: 1 2 : 156 : 220 : 0.9
+T: 1 2 : 156 : 156 : 0.1
+T: 1 2 : 157 : 221 : 0.9
+T: 1 2 : 157 : 157 : 0.1
+T: 1 2 : 158 : 222 : 0.9
+T: 1 2 : 158 : 158 : 0.1
+T: 1 2 : 159 : 223 : 0.9
+T: 1 2 : 159 : 159 : 0.1
+T: 1 2 : 160 : 224 : 0.09
+T: 1 2 : 160 : 192 : 0.81
+T: 1 2 : 160 : 128 : 0.09
+T: 1 2 : 160 : 160 : 0.01
+T: 1 2 : 161 : 225 : 0.09
+T: 1 2 : 161 : 193 : 0.81
+T: 1 2 : 161 : 129 : 0.09
+T: 1 2 : 161 : 161 : 0.01
+T: 1 2 : 162 : 226 : 0.09
+T: 1 2 : 162 : 194 : 0.81
+T: 1 2 : 162 : 130 : 0.09
+T: 1 2 : 162 : 162 : 0.01
+T: 1 2 : 163 : 227 : 0.09
+T: 1 2 : 163 : 195 : 0.81
+T: 1 2 : 163 : 131 : 0.09
+T: 1 2 : 163 : 163 : 0.01
+T: 1 2 : 164 : 228 : 0.09
+T: 1 2 : 164 : 196 : 0.81
+T: 1 2 : 164 : 132 : 0.09
+T: 1 2 : 164 : 164 : 0.01
+T: 1 2 : 165 : 229 : 0.09
+T: 1 2 : 165 : 197 : 0.81
+T: 1 2 : 165 : 133 : 0.09
+T: 1 2 : 165 : 165 : 0.01
+T: 1 3 : 255 : 255 : 1
+T: 1 3 : 254 : 254 : 1
+T: 1 3 : 253 : 253 : 1
+T: 1 3 : 252 : 252 : 1
+T: 1 3 : 251 : 251 : 1
+T: 1 3 : 250 : 250 : 1
+T: 1 3 : 249 : 249 : 1
+T: 1 3 : 248 : 248 : 1
+T: 1 3 : 247 : 247 : 1
+T: 1 3 : 246 : 246 : 1
+T: 1 3 : 245 : 245 : 1
+T: 1 3 : 244 : 244 : 1
+T: 1 3 : 243 : 243 : 1
+T: 1 3 : 242 : 242 : 1
+T: 1 3 : 241 : 241 : 1
+T: 1 3 : 240 : 240 : 1
+T: 1 3 : 239 : 239 : 1
+T: 1 3 : 238 : 238 : 1
+T: 1 3 : 237 : 237 : 1
+T: 1 3 : 236 : 236 : 1
+T: 1 3 : 235 : 235 : 1
+T: 1 3 : 234 : 234 : 1
+T: 1 3 : 233 : 233 : 1
+T: 1 3 : 232 : 232 : 1
+T: 1 3 : 231 : 231 : 1
+T: 1 3 : 230 : 230 : 1
+T: 1 3 : 229 : 229 : 1
+T: 1 3 : 228 : 228 : 1
+T: 1 3 : 227 : 227 : 1
+T: 1 3 : 226 : 226 : 1
+T: 1 3 : 225 : 225 : 1
+T: 1 3 : 224 : 224 : 1
+T: 1 3 : 223 : 255 : 0.9
+T: 1 3 : 223 : 223 : 0.1
+T: 1 3 : 222 : 254 : 0.9
+T: 1 3 : 222 : 222 : 0.1
+T: 1 3 : 221 : 253 : 0.9
+T: 1 3 : 221 : 221 : 0.1
+T: 1 3 : 220 : 252 : 0.9
+T: 1 3 : 220 : 220 : 0.1
+T: 1 3 : 219 : 251 : 0.9
+T: 1 3 : 219 : 219 : 0.1
+T: 1 3 : 218 : 250 : 0.9
+T: 1 3 : 218 : 218 : 0.1
+T: 1 3 : 217 : 249 : 0.9
+T: 1 3 : 217 : 217 : 0.1
+T: 1 3 : 216 : 248 : 0.9
+T: 1 3 : 216 : 216 : 0.1
+T: 1 3 : 215 : 247 : 0.9
+T: 1 3 : 215 : 215 : 0.1
+T: 1 3 : 214 : 246 : 0.9
+T: 1 3 : 214 : 214 : 0.1
+T: 1 3 : 213 : 245 : 0.9
+T: 1 3 : 213 : 213 : 0.1
+T: 1 3 : 212 : 244 : 0.9
+T: 1 3 : 212 : 212 : 0.1
+T: 1 3 : 211 : 243 : 0.9
+T: 1 3 : 211 : 211 : 0.1
+T: 1 3 : 210 : 242 : 0.9
+T: 1 3 : 210 : 210 : 0.1
+T: 1 3 : 209 : 241 : 0.9
+T: 1 3 : 209 : 209 : 0.1
+T: 1 3 : 208 : 240 : 0.9
+T: 1 3 : 208 : 208 : 0.1
+T: 1 3 : 207 : 239 : 0.9
+T: 1 3 : 207 : 207 : 0.1
+T: 1 3 : 206 : 238 : 0.9
+T: 1 3 : 206 : 206 : 0.1
+T: 1 3 : 205 : 237 : 0.9
+T: 1 3 : 205 : 205 : 0.1
+T: 1 3 : 204 : 236 : 0.9
+T: 1 3 : 204 : 204 : 0.1
+T: 1 3 : 203 : 235 : 0.9
+T: 1 3 : 203 : 203 : 0.1
+T: 1 3 : 202 : 234 : 0.9
+T: 1 3 : 202 : 202 : 0.1
+T: 1 3 : 201 : 233 : 0.9
+T: 1 3 : 201 : 201 : 0.1
+T: 1 3 : 200 : 232 : 0.9
+T: 1 3 : 200 : 200 : 0.1
+T: 1 3 : 199 : 231 : 0.9
+T: 1 3 : 199 : 199 : 0.1
+T: 1 3 : 198 : 230 : 0.9
+T: 1 3 : 198 : 198 : 0.1
+T: 1 3 : 197 : 229 : 0.9
+T: 1 3 : 197 : 197 : 0.1
+T: 1 3 : 196 : 228 : 0.9
+T: 1 3 : 196 : 196 : 0.1
+T: 1 3 : 195 : 227 : 0.9
+T: 1 3 : 195 : 195 : 0.1
+T: 1 3 : 194 : 226 : 0.9
+T: 1 3 : 194 : 194 : 0.1
+T: 1 3 : 193 : 225 : 0.9
+T: 1 3 : 193 : 193 : 0.1
+T: 1 3 : 192 : 224 : 0.9
+T: 1 3 : 192 : 192 : 0.1
+T: 1 3 : 191 : 255 : 0.9
+T: 1 3 : 191 : 191 : 0.1
+T: 1 3 : 190 : 254 : 0.9
+T: 1 3 : 190 : 190 : 0.1
+T: 1 3 : 189 : 253 : 0.9
+T: 1 3 : 189 : 189 : 0.1
+T: 1 3 : 188 : 252 : 0.9
+T: 1 3 : 188 : 188 : 0.1
+T: 1 3 : 187 : 251 : 0.9
+T: 1 3 : 187 : 187 : 0.1
+T: 1 3 : 186 : 250 : 0.9
+T: 1 3 : 186 : 186 : 0.1
+T: 1 3 : 185 : 249 : 0.9
+T: 1 3 : 185 : 185 : 0.1
+T: 1 3 : 184 : 248 : 0.9
+T: 1 3 : 184 : 184 : 0.1
+T: 1 3 : 183 : 247 : 0.9
+T: 1 3 : 183 : 183 : 0.1
+T: 1 3 : 182 : 246 : 0.9
+T: 1 3 : 182 : 182 : 0.1
+T: 1 3 : 181 : 245 : 0.9
+T: 1 3 : 181 : 181 : 0.1
+T: 1 3 : 180 : 244 : 0.9
+T: 1 3 : 180 : 180 : 0.1
+T: 1 3 : 179 : 243 : 0.9
+T: 1 3 : 179 : 179 : 0.1
+T: 1 3 : 178 : 242 : 0.9
+T: 1 3 : 178 : 178 : 0.1
+T: 1 3 : 177 : 241 : 0.9
+T: 1 3 : 177 : 177 : 0.1
+T: 1 3 : 176 : 240 : 0.9
+T: 1 3 : 176 : 176 : 0.1
+T: 1 3 : 175 : 239 : 0.9
+T: 1 3 : 175 : 175 : 0.1
+T: 1 3 : 174 : 238 : 0.9
+T: 1 3 : 174 : 174 : 0.1
+T: 1 3 : 173 : 237 : 0.9
+T: 1 3 : 173 : 173 : 0.1
+T: 1 3 : 172 : 236 : 0.9
+T: 1 3 : 172 : 172 : 0.1
+T: 1 3 : 171 : 235 : 0.9
+T: 1 3 : 171 : 171 : 0.1
+T: 1 3 : 170 : 234 : 0.9
+T: 1 3 : 170 : 170 : 0.1
+T: 1 3 : 169 : 233 : 0.9
+T: 1 3 : 169 : 169 : 0.1
+T: 1 3 : 168 : 232 : 0.9
+T: 1 3 : 168 : 168 : 0.1
+T: 1 3 : 167 : 231 : 0.9
+T: 1 3 : 167 : 167 : 0.1
+T: 1 3 : 166 : 230 : 0.9
+T: 1 3 : 166 : 166 : 0.1
+T: 1 3 : 77 : 109 : 0.9
+T: 1 3 : 77 : 77 : 0.1
+T: 1 3 : 76 : 108 : 0.9
+T: 1 3 : 76 : 76 : 0.1
+T: 1 3 : 75 : 107 : 0.9
+T: 1 3 : 75 : 75 : 0.1
+T: 1 3 : 74 : 106 : 0.9
+T: 1 3 : 74 : 74 : 0.1
+T: 1 3 : 73 : 105 : 0.9
+T: 1 3 : 73 : 73 : 0.1
+T: 1 3 : 72 : 104 : 0.9
+T: 1 3 : 72 : 72 : 0.1
+T: 1 3 : 71 : 103 : 0.9
+T: 1 3 : 71 : 71 : 0.1
+T: 1 3 : 70 : 102 : 0.9
+T: 1 3 : 70 : 70 : 0.1
+T: 1 3 : 69 : 101 : 0.9
+T: 1 3 : 69 : 69 : 0.1
+T: 1 3 : 68 : 100 : 0.9
+T: 1 3 : 68 : 68 : 0.1
+T: 1 3 : 67 : 99 : 0.9
+T: 1 3 : 67 : 67 : 0.1
+T: 1 3 : 66 : 98 : 0.9
+T: 1 3 : 66 : 66 : 0.1
+T: 1 3 : 65 : 97 : 0.9
+T: 1 3 : 65 : 65 : 0.1
+T: 1 3 : 64 : 96 : 0.9
+T: 1 3 : 64 : 64 : 0.1
+T: 1 3 : 63 : 127 : 0.9
+T: 1 3 : 63 : 63 : 0.1
+T: 1 3 : 62 : 126 : 0.9
+T: 1 3 : 62 : 62 : 0.1
+T: 1 3 : 61 : 125 : 0.9
+T: 1 3 : 61 : 61 : 0.1
+T: 1 3 : 60 : 124 : 0.9
+T: 1 3 : 60 : 60 : 0.1
+T: 1 3 : 59 : 123 : 0.9
+T: 1 3 : 59 : 59 : 0.1
+T: 1 3 : 58 : 122 : 0.9
+T: 1 3 : 58 : 58 : 0.1
+T: 1 3 : 57 : 121 : 0.9
+T: 1 3 : 57 : 57 : 0.1
+T: 1 3 : 56 : 120 : 0.9
+T: 1 3 : 56 : 56 : 0.1
+T: 1 3 : 55 : 119 : 0.9
+T: 1 3 : 55 : 55 : 0.1
+T: 1 3 : 54 : 118 : 0.9
+T: 1 3 : 54 : 54 : 0.1
+T: 1 3 : 53 : 117 : 0.9
+T: 1 3 : 53 : 53 : 0.1
+T: 1 3 : 52 : 116 : 0.9
+T: 1 3 : 52 : 52 : 0.1
+T: 1 3 : 51 : 115 : 0.9
+T: 1 3 : 51 : 51 : 0.1
+T: 1 3 : 50 : 114 : 0.9
+T: 1 3 : 50 : 50 : 0.1
+T: 1 3 : 49 : 113 : 0.9
+T: 1 3 : 49 : 49 : 0.1
+T: 1 3 : 48 : 112 : 0.9
+T: 1 3 : 48 : 48 : 0.1
+T: 1 3 : 47 : 111 : 0.9
+T: 1 3 : 47 : 47 : 0.1
+T: 1 3 : 46 : 110 : 0.9
+T: 1 3 : 46 : 46 : 0.1
+T: 1 3 : 45 : 109 : 0.9
+T: 1 3 : 45 : 45 : 0.1
+T: 1 3 : 44 : 108 : 0.9
+T: 1 3 : 44 : 44 : 0.1
+T: 1 3 : 43 : 107 : 0.9
+T: 1 3 : 43 : 43 : 0.1
+T: 1 3 : 42 : 106 : 0.9
+T: 1 3 : 42 : 42 : 0.1
+T: 1 3 : 41 : 105 : 0.9
+T: 1 3 : 41 : 41 : 0.1
+T: 1 3 : 40 : 104 : 0.9
+T: 1 3 : 40 : 40 : 0.1
+T: 1 3 : 39 : 103 : 0.9
+T: 1 3 : 39 : 39 : 0.1
+T: 1 3 : 38 : 102 : 0.9
+T: 1 3 : 38 : 38 : 0.1
+T: 1 3 : 37 : 101 : 0.9
+T: 1 3 : 37 : 37 : 0.1
+T: 1 3 : 36 : 100 : 0.9
+T: 1 3 : 36 : 36 : 0.1
+T: 1 3 : 15 : 111 : 0.81
+T: 1 3 : 15 : 79 : 0.09
+T: 1 3 : 15 : 15 : 0.01
+T: 1 3 : 15 : 47 : 0.09
+T: 1 3 : 14 : 110 : 0.81
+T: 1 3 : 14 : 78 : 0.09
+T: 1 3 : 14 : 14 : 0.01
+T: 1 3 : 14 : 46 : 0.09
+T: 1 3 : 13 : 109 : 0.81
+T: 1 3 : 13 : 77 : 0.09
+T: 1 3 : 13 : 13 : 0.01
+T: 1 3 : 13 : 45 : 0.09
+T: 1 3 : 12 : 108 : 0.81
+T: 1 3 : 12 : 76 : 0.09
+T: 1 3 : 12 : 12 : 0.01
+T: 1 3 : 12 : 44 : 0.09
+T: 1 3 : 11 : 107 : 0.81
+T: 1 3 : 11 : 75 : 0.09
+T: 1 3 : 11 : 11 : 0.01
+T: 1 3 : 11 : 43 : 0.09
+T: 1 3 : 10 : 106 : 0.81
+T: 1 3 : 10 : 74 : 0.09
+T: 1 3 : 10 : 10 : 0.01
+T: 1 3 : 10 : 42 : 0.09
+T: 1 3 : 9 : 105 : 0.81
+T: 1 3 : 9 : 73 : 0.09
+T: 1 3 : 9 : 9 : 0.01
+T: 1 3 : 9 : 41 : 0.09
+T: 1 3 : 8 : 104 : 0.81
+T: 1 3 : 8 : 72 : 0.09
+T: 1 3 : 8 : 8 : 0.01
+T: 1 3 : 8 : 40 : 0.09
+T: 1 3 : 7 : 103 : 0.81
+T: 1 3 : 7 : 71 : 0.09
+T: 1 3 : 7 : 7 : 0.01
+T: 1 3 : 7 : 39 : 0.09
+T: 1 3 : 6 : 102 : 0.81
+T: 1 3 : 6 : 70 : 0.09
+T: 1 3 : 6 : 6 : 0.01
+T: 1 3 : 6 : 38 : 0.09
+T: 1 3 : 1 : 97 : 0.81
+T: 1 3 : 1 : 65 : 0.09
+T: 1 3 : 1 : 1 : 0.01
+T: 1 3 : 1 : 33 : 0.09
+T: 1 3 : 0 : 96 : 0.81
+T: 1 3 : 0 : 64 : 0.09
+T: 1 3 : 0 : 0 : 0.01
+T: 1 3 : 0 : 32 : 0.09
+T: 1 3 : 2 : 98 : 0.81
+T: 1 3 : 2 : 66 : 0.09
+T: 1 3 : 2 : 2 : 0.01
+T: 1 3 : 2 : 34 : 0.09
+T: 1 3 : 3 : 99 : 0.81
+T: 1 3 : 3 : 67 : 0.09
+T: 1 3 : 3 : 3 : 0.01
+T: 1 3 : 3 : 35 : 0.09
+T: 1 3 : 4 : 100 : 0.81
+T: 1 3 : 4 : 68 : 0.09
+T: 1 3 : 4 : 4 : 0.01
+T: 1 3 : 4 : 36 : 0.09
+T: 1 3 : 5 : 101 : 0.81
+T: 1 3 : 5 : 69 : 0.09
+T: 1 3 : 5 : 5 : 0.01
+T: 1 3 : 5 : 37 : 0.09
+T: 1 3 : 16 : 112 : 0.81
+T: 1 3 : 16 : 80 : 0.09
+T: 1 3 : 16 : 16 : 0.01
+T: 1 3 : 16 : 48 : 0.09
+T: 1 3 : 17 : 113 : 0.81
+T: 1 3 : 17 : 81 : 0.09
+T: 1 3 : 17 : 17 : 0.01
+T: 1 3 : 17 : 49 : 0.09
+T: 1 3 : 18 : 114 : 0.81
+T: 1 3 : 18 : 82 : 0.09
+T: 1 3 : 18 : 18 : 0.01
+T: 1 3 : 18 : 50 : 0.09
+T: 1 3 : 19 : 115 : 0.81
+T: 1 3 : 19 : 83 : 0.09
+T: 1 3 : 19 : 19 : 0.01
+T: 1 3 : 19 : 51 : 0.09
+T: 1 3 : 20 : 116 : 0.81
+T: 1 3 : 20 : 84 : 0.09
+T: 1 3 : 20 : 20 : 0.01
+T: 1 3 : 20 : 52 : 0.09
+T: 1 3 : 21 : 117 : 0.81
+T: 1 3 : 21 : 85 : 0.09
+T: 1 3 : 21 : 21 : 0.01
+T: 1 3 : 21 : 53 : 0.09
+T: 1 3 : 22 : 118 : 0.81
+T: 1 3 : 22 : 86 : 0.09
+T: 1 3 : 22 : 22 : 0.01
+T: 1 3 : 22 : 54 : 0.09
+T: 1 3 : 23 : 119 : 0.81
+T: 1 3 : 23 : 87 : 0.09
+T: 1 3 : 23 : 23 : 0.01
+T: 1 3 : 23 : 55 : 0.09
+T: 1 3 : 24 : 120 : 0.81
+T: 1 3 : 24 : 88 : 0.09
+T: 1 3 : 24 : 24 : 0.01
+T: 1 3 : 24 : 56 : 0.09
+T: 1 3 : 25 : 121 : 0.81
+T: 1 3 : 25 : 89 : 0.09
+T: 1 3 : 25 : 25 : 0.01
+T: 1 3 : 25 : 57 : 0.09
+T: 1 3 : 26 : 122 : 0.81
+T: 1 3 : 26 : 90 : 0.09
+T: 1 3 : 26 : 26 : 0.01
+T: 1 3 : 26 : 58 : 0.09
+T: 1 3 : 27 : 123 : 0.81
+T: 1 3 : 27 : 91 : 0.09
+T: 1 3 : 27 : 27 : 0.01
+T: 1 3 : 27 : 59 : 0.09
+T: 1 3 : 28 : 124 : 0.81
+T: 1 3 : 28 : 92 : 0.09
+T: 1 3 : 28 : 28 : 0.01
+T: 1 3 : 28 : 60 : 0.09
+T: 1 3 : 29 : 125 : 0.81
+T: 1 3 : 29 : 93 : 0.09
+T: 1 3 : 29 : 29 : 0.01
+T: 1 3 : 29 : 61 : 0.09
+T: 1 3 : 30 : 126 : 0.81
+T: 1 3 : 30 : 94 : 0.09
+T: 1 3 : 30 : 30 : 0.01
+T: 1 3 : 30 : 62 : 0.09
+T: 1 3 : 31 : 127 : 0.81
+T: 1 3 : 31 : 95 : 0.09
+T: 1 3 : 31 : 31 : 0.01
+T: 1 3 : 31 : 63 : 0.09
+T: 1 3 : 32 : 96 : 0.9
+T: 1 3 : 32 : 32 : 0.1
+T: 1 3 : 33 : 97 : 0.9
+T: 1 3 : 33 : 33 : 0.1
+T: 1 3 : 34 : 98 : 0.9
+T: 1 3 : 34 : 34 : 0.1
+T: 1 3 : 35 : 99 : 0.9
+T: 1 3 : 35 : 35 : 0.1
+T: 1 3 : 78 : 110 : 0.9
+T: 1 3 : 78 : 78 : 0.1
+T: 1 3 : 79 : 111 : 0.9
+T: 1 3 : 79 : 79 : 0.1
+T: 1 3 : 80 : 112 : 0.9
+T: 1 3 : 80 : 80 : 0.1
+T: 1 3 : 81 : 113 : 0.9
+T: 1 3 : 81 : 81 : 0.1
+T: 1 3 : 82 : 114 : 0.9
+T: 1 3 : 82 : 82 : 0.1
+T: 1 3 : 83 : 115 : 0.9
+T: 1 3 : 83 : 83 : 0.1
+T: 1 3 : 84 : 116 : 0.9
+T: 1 3 : 84 : 84 : 0.1
+T: 1 3 : 85 : 117 : 0.9
+T: 1 3 : 85 : 85 : 0.1
+T: 1 3 : 86 : 118 : 0.9
+T: 1 3 : 86 : 86 : 0.1
+T: 1 3 : 87 : 119 : 0.9
+T: 1 3 : 87 : 87 : 0.1
+T: 1 3 : 88 : 120 : 0.9
+T: 1 3 : 88 : 88 : 0.1
+T: 1 3 : 89 : 121 : 0.9
+T: 1 3 : 89 : 89 : 0.1
+T: 1 3 : 90 : 122 : 0.9
+T: 1 3 : 90 : 90 : 0.1
+T: 1 3 : 91 : 123 : 0.9
+T: 1 3 : 91 : 91 : 0.1
+T: 1 3 : 92 : 124 : 0.9
+T: 1 3 : 92 : 92 : 0.1
+T: 1 3 : 93 : 125 : 0.9
+T: 1 3 : 93 : 93 : 0.1
+T: 1 3 : 94 : 126 : 0.9
+T: 1 3 : 94 : 94 : 0.1
+T: 1 3 : 95 : 127 : 0.9
+T: 1 3 : 95 : 95 : 0.1
+T: 1 3 : 96 : 96 : 1
+T: 1 3 : 97 : 97 : 1
+T: 1 3 : 98 : 98 : 1
+T: 1 3 : 99 : 99 : 1
+T: 1 3 : 100 : 100 : 1
+T: 1 3 : 101 : 101 : 1
+T: 1 3 : 102 : 102 : 1
+T: 1 3 : 103 : 103 : 1
+T: 1 3 : 104 : 104 : 1
+T: 1 3 : 105 : 105 : 1
+T: 1 3 : 106 : 106 : 1
+T: 1 3 : 107 : 107 : 1
+T: 1 3 : 108 : 108 : 1
+T: 1 3 : 109 : 109 : 1
+T: 1 3 : 110 : 110 : 1
+T: 1 3 : 111 : 111 : 1
+T: 1 3 : 112 : 112 : 1
+T: 1 3 : 113 : 113 : 1
+T: 1 3 : 114 : 114 : 1
+T: 1 3 : 115 : 115 : 1
+T: 1 3 : 116 : 116 : 1
+T: 1 3 : 117 : 117 : 1
+T: 1 3 : 118 : 118 : 1
+T: 1 3 : 119 : 119 : 1
+T: 1 3 : 120 : 120 : 1
+T: 1 3 : 121 : 121 : 1
+T: 1 3 : 122 : 122 : 1
+T: 1 3 : 123 : 123 : 1
+T: 1 3 : 124 : 124 : 1
+T: 1 3 : 125 : 125 : 1
+T: 1 3 : 126 : 126 : 1
+T: 1 3 : 127 : 127 : 1
+T: 1 3 : 128 : 224 : 0.81
+T: 1 3 : 128 : 192 : 0.09
+T: 1 3 : 128 : 128 : 0.01
+T: 1 3 : 128 : 160 : 0.09
+T: 1 3 : 129 : 225 : 0.81
+T: 1 3 : 129 : 193 : 0.09
+T: 1 3 : 129 : 129 : 0.01
+T: 1 3 : 129 : 161 : 0.09
+T: 1 3 : 130 : 226 : 0.81
+T: 1 3 : 130 : 194 : 0.09
+T: 1 3 : 130 : 130 : 0.01
+T: 1 3 : 130 : 162 : 0.09
+T: 1 3 : 131 : 227 : 0.81
+T: 1 3 : 131 : 195 : 0.09
+T: 1 3 : 131 : 131 : 0.01
+T: 1 3 : 131 : 163 : 0.09
+T: 1 3 : 132 : 228 : 0.81
+T: 1 3 : 132 : 196 : 0.09
+T: 1 3 : 132 : 132 : 0.01
+T: 1 3 : 132 : 164 : 0.09
+T: 1 3 : 133 : 229 : 0.81
+T: 1 3 : 133 : 197 : 0.09
+T: 1 3 : 133 : 133 : 0.01
+T: 1 3 : 133 : 165 : 0.09
+T: 1 3 : 134 : 230 : 0.81
+T: 1 3 : 134 : 198 : 0.09
+T: 1 3 : 134 : 134 : 0.01
+T: 1 3 : 134 : 166 : 0.09
+T: 1 3 : 135 : 231 : 0.81
+T: 1 3 : 135 : 199 : 0.09
+T: 1 3 : 135 : 135 : 0.01
+T: 1 3 : 135 : 167 : 0.09
+T: 1 3 : 136 : 232 : 0.81
+T: 1 3 : 136 : 200 : 0.09
+T: 1 3 : 136 : 136 : 0.01
+T: 1 3 : 136 : 168 : 0.09
+T: 1 3 : 137 : 233 : 0.81
+T: 1 3 : 137 : 201 : 0.09
+T: 1 3 : 137 : 137 : 0.01
+T: 1 3 : 137 : 169 : 0.09
+T: 1 3 : 138 : 234 : 0.81
+T: 1 3 : 138 : 202 : 0.09
+T: 1 3 : 138 : 138 : 0.01
+T: 1 3 : 138 : 170 : 0.09
+T: 1 3 : 139 : 235 : 0.81
+T: 1 3 : 139 : 203 : 0.09
+T: 1 3 : 139 : 139 : 0.01
+T: 1 3 : 139 : 171 : 0.09
+T: 1 3 : 140 : 236 : 0.81
+T: 1 3 : 140 : 204 : 0.09
+T: 1 3 : 140 : 140 : 0.01
+T: 1 3 : 140 : 172 : 0.09
+T: 1 3 : 141 : 237 : 0.81
+T: 1 3 : 141 : 205 : 0.09
+T: 1 3 : 141 : 141 : 0.01
+T: 1 3 : 141 : 173 : 0.09
+T: 1 3 : 142 : 238 : 0.81
+T: 1 3 : 142 : 206 : 0.09
+T: 1 3 : 142 : 142 : 0.01
+T: 1 3 : 142 : 174 : 0.09
+T: 1 3 : 143 : 239 : 0.81
+T: 1 3 : 143 : 207 : 0.09
+T: 1 3 : 143 : 143 : 0.01
+T: 1 3 : 143 : 175 : 0.09
+T: 1 3 : 144 : 240 : 0.81
+T: 1 3 : 144 : 208 : 0.09
+T: 1 3 : 144 : 144 : 0.01
+T: 1 3 : 144 : 176 : 0.09
+T: 1 3 : 145 : 241 : 0.81
+T: 1 3 : 145 : 209 : 0.09
+T: 1 3 : 145 : 145 : 0.01
+T: 1 3 : 145 : 177 : 0.09
+T: 1 3 : 146 : 242 : 0.81
+T: 1 3 : 146 : 210 : 0.09
+T: 1 3 : 146 : 146 : 0.01
+T: 1 3 : 146 : 178 : 0.09
+T: 1 3 : 147 : 243 : 0.81
+T: 1 3 : 147 : 211 : 0.09
+T: 1 3 : 147 : 147 : 0.01
+T: 1 3 : 147 : 179 : 0.09
+T: 1 3 : 148 : 244 : 0.81
+T: 1 3 : 148 : 212 : 0.09
+T: 1 3 : 148 : 148 : 0.01
+T: 1 3 : 148 : 180 : 0.09
+T: 1 3 : 149 : 245 : 0.81
+T: 1 3 : 149 : 213 : 0.09
+T: 1 3 : 149 : 149 : 0.01
+T: 1 3 : 149 : 181 : 0.09
+T: 1 3 : 150 : 246 : 0.81
+T: 1 3 : 150 : 214 : 0.09
+T: 1 3 : 150 : 150 : 0.01
+T: 1 3 : 150 : 182 : 0.09
+T: 1 3 : 151 : 247 : 0.81
+T: 1 3 : 151 : 215 : 0.09
+T: 1 3 : 151 : 151 : 0.01
+T: 1 3 : 151 : 183 : 0.09
+T: 1 3 : 152 : 248 : 0.81
+T: 1 3 : 152 : 216 : 0.09
+T: 1 3 : 152 : 152 : 0.01
+T: 1 3 : 152 : 184 : 0.09
+T: 1 3 : 153 : 249 : 0.81
+T: 1 3 : 153 : 217 : 0.09
+T: 1 3 : 153 : 153 : 0.01
+T: 1 3 : 153 : 185 : 0.09
+T: 1 3 : 154 : 250 : 0.81
+T: 1 3 : 154 : 218 : 0.09
+T: 1 3 : 154 : 154 : 0.01
+T: 1 3 : 154 : 186 : 0.09
+T: 1 3 : 155 : 251 : 0.81
+T: 1 3 : 155 : 219 : 0.09
+T: 1 3 : 155 : 155 : 0.01
+T: 1 3 : 155 : 187 : 0.09
+T: 1 3 : 156 : 252 : 0.81
+T: 1 3 : 156 : 220 : 0.09
+T: 1 3 : 156 : 156 : 0.01
+T: 1 3 : 156 : 188 : 0.09
+T: 1 3 : 157 : 253 : 0.81
+T: 1 3 : 157 : 221 : 0.09
+T: 1 3 : 157 : 157 : 0.01
+T: 1 3 : 157 : 189 : 0.09
+T: 1 3 : 158 : 254 : 0.81
+T: 1 3 : 158 : 222 : 0.09
+T: 1 3 : 158 : 158 : 0.01
+T: 1 3 : 158 : 190 : 0.09
+T: 1 3 : 159 : 255 : 0.81
+T: 1 3 : 159 : 223 : 0.09
+T: 1 3 : 159 : 159 : 0.01
+T: 1 3 : 159 : 191 : 0.09
+T: 1 3 : 160 : 224 : 0.9
+T: 1 3 : 160 : 160 : 0.1
+T: 1 3 : 161 : 225 : 0.9
+T: 1 3 : 161 : 161 : 0.1
+T: 1 3 : 162 : 226 : 0.9
+T: 1 3 : 162 : 162 : 0.1
+T: 1 3 : 163 : 227 : 0.9
+T: 1 3 : 163 : 163 : 0.1
+T: 1 3 : 164 : 228 : 0.9
+T: 1 3 : 164 : 164 : 0.1
+T: 1 3 : 165 : 229 : 0.9
+T: 1 3 : 165 : 165 : 0.1
+T: 1 4 : 255 : 0 : 1
+T: 1 4 : 254 : 254 : 1
+T: 1 4 : 253 : 253 : 1
+T: 1 4 : 252 : 252 : 1
+T: 1 4 : 251 : 251 : 1
+T: 1 4 : 250 : 250 : 1
+T: 1 4 : 249 : 249 : 1
+T: 1 4 : 248 : 248 : 1
+T: 1 4 : 247 : 0 : 1
+T: 1 4 : 246 : 254 : 1
+T: 1 4 : 245 : 253 : 1
+T: 1 4 : 244 : 252 : 1
+T: 1 4 : 243 : 251 : 1
+T: 1 4 : 242 : 250 : 1
+T: 1 4 : 241 : 249 : 1
+T: 1 4 : 240 : 248 : 1
+T: 1 4 : 239 : 0 : 1
+T: 1 4 : 238 : 238 : 1
+T: 1 4 : 237 : 237 : 1
+T: 1 4 : 236 : 236 : 1
+T: 1 4 : 235 : 0 : 1
+T: 1 4 : 234 : 238 : 1
+T: 1 4 : 233 : 237 : 1
+T: 1 4 : 232 : 236 : 1
+T: 1 4 : 231 : 231 : 1
+T: 1 4 : 230 : 230 : 1
+T: 1 4 : 229 : 229 : 1
+T: 1 4 : 228 : 228 : 1
+T: 1 4 : 227 : 231 : 1
+T: 1 4 : 226 : 230 : 1
+T: 1 4 : 225 : 229 : 1
+T: 1 4 : 224 : 228 : 1
+T: 1 4 : 223 : 0 : 1
+T: 1 4 : 222 : 222 : 1
+T: 1 4 : 221 : 0 : 1
+T: 1 4 : 220 : 222 : 1
+T: 1 4 : 219 : 219 : 1
+T: 1 4 : 218 : 218 : 1
+T: 1 4 : 217 : 219 : 1
+T: 1 4 : 216 : 218 : 1
+T: 1 4 : 215 : 215 : 1
+T: 1 4 : 214 : 214 : 1
+T: 1 4 : 213 : 215 : 1
+T: 1 4 : 212 : 214 : 1
+T: 1 4 : 211 : 211 : 1
+T: 1 4 : 210 : 210 : 1
+T: 1 4 : 209 : 211 : 1
+T: 1 4 : 208 : 210 : 1
+T: 1 4 : 207 : 0 : 1
+T: 1 4 : 206 : 0 : 1
+T: 1 4 : 205 : 205 : 1
+T: 1 4 : 204 : 205 : 1
+T: 1 4 : 203 : 203 : 1
+T: 1 4 : 202 : 203 : 1
+T: 1 4 : 201 : 201 : 1
+T: 1 4 : 200 : 201 : 1
+T: 1 4 : 199 : 199 : 1
+T: 1 4 : 198 : 199 : 1
+T: 1 4 : 197 : 197 : 1
+T: 1 4 : 196 : 197 : 1
+T: 1 4 : 195 : 195 : 1
+T: 1 4 : 194 : 195 : 1
+T: 1 4 : 193 : 193 : 1
+T: 1 4 : 192 : 193 : 1
+T: 1 4 : 191 : 0 : 1
+T: 1 4 : 190 : 254 : 0.9
+T: 1 4 : 190 : 190 : 0.1
+T: 1 4 : 189 : 253 : 0.9
+T: 1 4 : 189 : 189 : 0.1
+T: 1 4 : 188 : 252 : 0.9
+T: 1 4 : 188 : 188 : 0.1
+T: 1 4 : 187 : 251 : 0.9
+T: 1 4 : 187 : 187 : 0.1
+T: 1 4 : 186 : 250 : 0.9
+T: 1 4 : 186 : 186 : 0.1
+T: 1 4 : 185 : 249 : 0.9
+T: 1 4 : 185 : 185 : 0.1
+T: 1 4 : 184 : 248 : 0.9
+T: 1 4 : 184 : 184 : 0.1
+T: 1 4 : 183 : 0 : 1
+T: 1 4 : 182 : 254 : 0.9
+T: 1 4 : 182 : 190 : 0.1
+T: 1 4 : 181 : 253 : 0.9
+T: 1 4 : 181 : 189 : 0.1
+T: 1 4 : 180 : 252 : 0.9
+T: 1 4 : 180 : 188 : 0.1
+T: 1 4 : 179 : 251 : 0.9
+T: 1 4 : 179 : 187 : 0.1
+T: 1 4 : 178 : 250 : 0.9
+T: 1 4 : 178 : 186 : 0.1
+T: 1 4 : 177 : 249 : 0.9
+T: 1 4 : 177 : 185 : 0.1
+T: 1 4 : 176 : 248 : 0.9
+T: 1 4 : 176 : 184 : 0.1
+T: 1 4 : 175 : 0 : 1
+T: 1 4 : 174 : 238 : 0.9
+T: 1 4 : 174 : 174 : 0.1
+T: 1 4 : 173 : 237 : 0.9
+T: 1 4 : 173 : 173 : 0.1
+T: 1 4 : 172 : 236 : 0.9
+T: 1 4 : 172 : 172 : 0.1
+T: 1 4 : 171 : 0 : 1
+T: 1 4 : 170 : 238 : 0.9
+T: 1 4 : 170 : 174 : 0.1
+T: 1 4 : 169 : 237 : 0.9
+T: 1 4 : 169 : 173 : 0.1
+T: 1 4 : 168 : 236 : 0.9
+T: 1 4 : 168 : 172 : 0.1
+T: 1 4 : 167 : 231 : 0.9
+T: 1 4 : 167 : 167 : 0.1
+T: 1 4 : 166 : 230 : 0.9
+T: 1 4 : 166 : 166 : 0.1
+T: 1 4 : 77 : 77 : 1
+T: 1 4 : 76 : 77 : 1
+T: 1 4 : 75 : 75 : 1
+T: 1 4 : 74 : 75 : 1
+T: 1 4 : 73 : 73 : 1
+T: 1 4 : 72 : 73 : 1
+T: 1 4 : 71 : 71 : 1
+T: 1 4 : 70 : 71 : 1
+T: 1 4 : 69 : 69 : 1
+T: 1 4 : 68 : 69 : 1
+T: 1 4 : 67 : 67 : 1
+T: 1 4 : 66 : 67 : 1
+T: 1 4 : 65 : 65 : 1
+T: 1 4 : 64 : 65 : 1
+T: 1 4 : 63 : 0 : 1
+T: 1 4 : 62 : 126 : 0.9
+T: 1 4 : 62 : 62 : 0.1
+T: 1 4 : 61 : 125 : 0.9
+T: 1 4 : 61 : 61 : 0.1
+T: 1 4 : 60 : 124 : 0.9
+T: 1 4 : 60 : 60 : 0.1
+T: 1 4 : 59 : 123 : 0.9
+T: 1 4 : 59 : 59 : 0.1
+T: 1 4 : 58 : 122 : 0.9
+T: 1 4 : 58 : 58 : 0.1
+T: 1 4 : 57 : 121 : 0.9
+T: 1 4 : 57 : 57 : 0.1
+T: 1 4 : 56 : 120 : 0.9
+T: 1 4 : 56 : 56 : 0.1
+T: 1 4 : 55 : 0 : 1
+T: 1 4 : 54 : 126 : 0.9
+T: 1 4 : 54 : 62 : 0.1
+T: 1 4 : 53 : 125 : 0.9
+T: 1 4 : 53 : 61 : 0.1
+T: 1 4 : 52 : 124 : 0.9
+T: 1 4 : 52 : 60 : 0.1
+T: 1 4 : 51 : 123 : 0.9
+T: 1 4 : 51 : 59 : 0.1
+T: 1 4 : 50 : 122 : 0.9
+T: 1 4 : 50 : 58 : 0.1
+T: 1 4 : 49 : 121 : 0.9
+T: 1 4 : 49 : 57 : 0.1
+T: 1 4 : 48 : 120 : 0.9
+T: 1 4 : 48 : 56 : 0.1
+T: 1 4 : 47 : 0 : 1
+T: 1 4 : 46 : 110 : 0.9
+T: 1 4 : 46 : 46 : 0.1
+T: 1 4 : 45 : 109 : 0.9
+T: 1 4 : 45 : 45 : 0.1
+T: 1 4 : 44 : 108 : 0.9
+T: 1 4 : 44 : 44 : 0.1
+T: 1 4 : 43 : 0 : 1
+T: 1 4 : 42 : 110 : 0.9
+T: 1 4 : 42 : 46 : 0.1
+T: 1 4 : 41 : 109 : 0.9
+T: 1 4 : 41 : 45 : 0.1
+T: 1 4 : 40 : 108 : 0.9
+T: 1 4 : 40 : 44 : 0.1
+T: 1 4 : 39 : 103 : 0.9
+T: 1 4 : 39 : 39 : 0.1
+T: 1 4 : 38 : 102 : 0.9
+T: 1 4 : 38 : 38 : 0.1
+T: 1 4 : 37 : 101 : 0.9
+T: 1 4 : 37 : 37 : 0.1
+T: 1 4 : 36 : 100 : 0.9
+T: 1 4 : 36 : 36 : 0.1
+T: 1 4 : 15 : 0 : 1
+T: 1 4 : 14 : 0 : 1
+T: 1 4 : 13 : 77 : 0.9
+T: 1 4 : 13 : 13 : 0.1
+T: 1 4 : 12 : 77 : 0.9
+T: 1 4 : 12 : 13 : 0.1
+T: 1 4 : 11 : 75 : 0.9
+T: 1 4 : 11 : 11 : 0.1
+T: 1 4 : 10 : 75 : 0.9
+T: 1 4 : 10 : 11 : 0.1
+T: 1 4 : 9 : 73 : 0.9
+T: 1 4 : 9 : 9 : 0.1
+T: 1 4 : 8 : 73 : 0.9
+T: 1 4 : 8 : 9 : 0.1
+T: 1 4 : 7 : 71 : 0.9
+T: 1 4 : 7 : 7 : 0.1
+T: 1 4 : 6 : 71 : 0.9
+T: 1 4 : 6 : 7 : 0.1
+T: 1 4 : 1 : 65 : 0.9
+T: 1 4 : 1 : 1 : 0.1
+T: 1 4 : 0 : 65 : 0.9
+T: 1 4 : 0 : 1 : 0.1
+T: 1 4 : 2 : 67 : 0.9
+T: 1 4 : 2 : 3 : 0.1
+T: 1 4 : 3 : 67 : 0.9
+T: 1 4 : 3 : 3 : 0.1
+T: 1 4 : 4 : 69 : 0.9
+T: 1 4 : 4 : 5 : 0.1
+T: 1 4 : 5 : 69 : 0.9
+T: 1 4 : 5 : 5 : 0.1
+T: 1 4 : 16 : 82 : 0.9
+T: 1 4 : 16 : 18 : 0.1
+T: 1 4 : 17 : 83 : 0.9
+T: 1 4 : 17 : 19 : 0.1
+T: 1 4 : 18 : 82 : 0.9
+T: 1 4 : 18 : 18 : 0.1
+T: 1 4 : 19 : 83 : 0.9
+T: 1 4 : 19 : 19 : 0.1
+T: 1 4 : 20 : 86 : 0.9
+T: 1 4 : 20 : 22 : 0.1
+T: 1 4 : 21 : 87 : 0.9
+T: 1 4 : 21 : 23 : 0.1
+T: 1 4 : 22 : 86 : 0.9
+T: 1 4 : 22 : 22 : 0.1
+T: 1 4 : 23 : 87 : 0.9
+T: 1 4 : 23 : 23 : 0.1
+T: 1 4 : 24 : 90 : 0.9
+T: 1 4 : 24 : 26 : 0.1
+T: 1 4 : 25 : 91 : 0.9
+T: 1 4 : 25 : 27 : 0.1
+T: 1 4 : 26 : 90 : 0.9
+T: 1 4 : 26 : 26 : 0.1
+T: 1 4 : 27 : 91 : 0.9
+T: 1 4 : 27 : 27 : 0.1
+T: 1 4 : 28 : 94 : 0.9
+T: 1 4 : 28 : 30 : 0.1
+T: 1 4 : 29 : 0 : 1
+T: 1 4 : 30 : 94 : 0.9
+T: 1 4 : 30 : 30 : 0.1
+T: 1 4 : 31 : 0 : 1
+T: 1 4 : 32 : 100 : 0.9
+T: 1 4 : 32 : 36 : 0.1
+T: 1 4 : 33 : 101 : 0.9
+T: 1 4 : 33 : 37 : 0.1
+T: 1 4 : 34 : 102 : 0.9
+T: 1 4 : 34 : 38 : 0.1
+T: 1 4 : 35 : 103 : 0.9
+T: 1 4 : 35 : 39 : 0.1
+T: 1 4 : 78 : 0 : 1
+T: 1 4 : 79 : 0 : 1
+T: 1 4 : 80 : 82 : 1
+T: 1 4 : 81 : 83 : 1
+T: 1 4 : 82 : 82 : 1
+T: 1 4 : 83 : 83 : 1
+T: 1 4 : 84 : 86 : 1
+T: 1 4 : 85 : 87 : 1
+T: 1 4 : 86 : 86 : 1
+T: 1 4 : 87 : 87 : 1
+T: 1 4 : 88 : 90 : 1
+T: 1 4 : 89 : 91 : 1
+T: 1 4 : 90 : 90 : 1
+T: 1 4 : 91 : 91 : 1
+T: 1 4 : 92 : 94 : 1
+T: 1 4 : 93 : 0 : 1
+T: 1 4 : 94 : 94 : 1
+T: 1 4 : 95 : 0 : 1
+T: 1 4 : 96 : 100 : 1
+T: 1 4 : 97 : 101 : 1
+T: 1 4 : 98 : 102 : 1
+T: 1 4 : 99 : 103 : 1
+T: 1 4 : 100 : 100 : 1
+T: 1 4 : 101 : 101 : 1
+T: 1 4 : 102 : 102 : 1
+T: 1 4 : 103 : 103 : 1
+T: 1 4 : 104 : 108 : 1
+T: 1 4 : 105 : 109 : 1
+T: 1 4 : 106 : 110 : 1
+T: 1 4 : 107 : 0 : 1
+T: 1 4 : 108 : 108 : 1
+T: 1 4 : 109 : 109 : 1
+T: 1 4 : 110 : 110 : 1
+T: 1 4 : 111 : 0 : 1
+T: 1 4 : 112 : 120 : 1
+T: 1 4 : 113 : 121 : 1
+T: 1 4 : 114 : 122 : 1
+T: 1 4 : 115 : 123 : 1
+T: 1 4 : 116 : 124 : 1
+T: 1 4 : 117 : 125 : 1
+T: 1 4 : 118 : 126 : 1
+T: 1 4 : 119 : 0 : 1
+T: 1 4 : 120 : 120 : 1
+T: 1 4 : 121 : 121 : 1
+T: 1 4 : 122 : 122 : 1
+T: 1 4 : 123 : 123 : 1
+T: 1 4 : 124 : 124 : 1
+T: 1 4 : 125 : 125 : 1
+T: 1 4 : 126 : 126 : 1
+T: 1 4 : 127 : 0 : 1
+T: 1 4 : 128 : 193 : 0.9
+T: 1 4 : 128 : 129 : 0.1
+T: 1 4 : 129 : 193 : 0.9
+T: 1 4 : 129 : 129 : 0.1
+T: 1 4 : 130 : 195 : 0.9
+T: 1 4 : 130 : 131 : 0.1
+T: 1 4 : 131 : 195 : 0.9
+T: 1 4 : 131 : 131 : 0.1
+T: 1 4 : 132 : 197 : 0.9
+T: 1 4 : 132 : 133 : 0.1
+T: 1 4 : 133 : 197 : 0.9
+T: 1 4 : 133 : 133 : 0.1
+T: 1 4 : 134 : 199 : 0.9
+T: 1 4 : 134 : 135 : 0.1
+T: 1 4 : 135 : 199 : 0.9
+T: 1 4 : 135 : 135 : 0.1
+T: 1 4 : 136 : 201 : 0.9
+T: 1 4 : 136 : 137 : 0.1
+T: 1 4 : 137 : 201 : 0.9
+T: 1 4 : 137 : 137 : 0.1
+T: 1 4 : 138 : 203 : 0.9
+T: 1 4 : 138 : 139 : 0.1
+T: 1 4 : 139 : 203 : 0.9
+T: 1 4 : 139 : 139 : 0.1
+T: 1 4 : 140 : 205 : 0.9
+T: 1 4 : 140 : 141 : 0.1
+T: 1 4 : 141 : 205 : 0.9
+T: 1 4 : 141 : 141 : 0.1
+T: 1 4 : 142 : 0 : 1
+T: 1 4 : 143 : 0 : 1
+T: 1 4 : 144 : 210 : 0.9
+T: 1 4 : 144 : 146 : 0.1
+T: 1 4 : 145 : 211 : 0.9
+T: 1 4 : 145 : 147 : 0.1
+T: 1 4 : 146 : 210 : 0.9
+T: 1 4 : 146 : 146 : 0.1
+T: 1 4 : 147 : 211 : 0.9
+T: 1 4 : 147 : 147 : 0.1
+T: 1 4 : 148 : 214 : 0.9
+T: 1 4 : 148 : 150 : 0.1
+T: 1 4 : 149 : 215 : 0.9
+T: 1 4 : 149 : 151 : 0.1
+T: 1 4 : 150 : 214 : 0.9
+T: 1 4 : 150 : 150 : 0.1
+T: 1 4 : 151 : 215 : 0.9
+T: 1 4 : 151 : 151 : 0.1
+T: 1 4 : 152 : 218 : 0.9
+T: 1 4 : 152 : 154 : 0.1
+T: 1 4 : 153 : 219 : 0.9
+T: 1 4 : 153 : 155 : 0.1
+T: 1 4 : 154 : 218 : 0.9
+T: 1 4 : 154 : 154 : 0.1
+T: 1 4 : 155 : 219 : 0.9
+T: 1 4 : 155 : 155 : 0.1
+T: 1 4 : 156 : 222 : 0.9
+T: 1 4 : 156 : 158 : 0.1
+T: 1 4 : 157 : 0 : 1
+T: 1 4 : 158 : 222 : 0.9
+T: 1 4 : 158 : 158 : 0.1
+T: 1 4 : 159 : 0 : 1
+T: 1 4 : 160 : 228 : 0.9
+T: 1 4 : 160 : 164 : 0.1
+T: 1 4 : 161 : 229 : 0.9
+T: 1 4 : 161 : 165 : 0.1
+T: 1 4 : 162 : 230 : 0.9
+T: 1 4 : 162 : 166 : 0.1
+T: 1 4 : 163 : 231 : 0.9
+T: 1 4 : 163 : 167 : 0.1
+T: 1 4 : 164 : 228 : 0.9
+T: 1 4 : 164 : 164 : 0.1
+T: 1 4 : 165 : 229 : 0.9
+T: 1 4 : 165 : 165 : 0.1
+T: 1 5 : 255 : 0 : 1
+T: 1 5 : 254 : 254 : 1
+T: 1 5 : 253 : 253 : 1
+T: 1 5 : 252 : 252 : 1
+T: 1 5 : 251 : 251 : 1
+T: 1 5 : 250 : 250 : 1
+T: 1 5 : 249 : 249 : 1
+T: 1 5 : 248 : 248 : 1
+T: 1 5 : 247 : 0 : 1
+T: 1 5 : 246 : 254 : 1
+T: 1 5 : 245 : 253 : 1
+T: 1 5 : 244 : 252 : 1
+T: 1 5 : 243 : 251 : 1
+T: 1 5 : 242 : 250 : 1
+T: 1 5 : 241 : 249 : 1
+T: 1 5 : 240 : 248 : 1
+T: 1 5 : 239 : 0 : 1
+T: 1 5 : 238 : 238 : 1
+T: 1 5 : 237 : 237 : 1
+T: 1 5 : 236 : 236 : 1
+T: 1 5 : 235 : 0 : 1
+T: 1 5 : 234 : 238 : 1
+T: 1 5 : 233 : 237 : 1
+T: 1 5 : 232 : 236 : 1
+T: 1 5 : 231 : 231 : 1
+T: 1 5 : 230 : 230 : 1
+T: 1 5 : 229 : 229 : 1
+T: 1 5 : 228 : 228 : 1
+T: 1 5 : 227 : 231 : 1
+T: 1 5 : 226 : 230 : 1
+T: 1 5 : 225 : 229 : 1
+T: 1 5 : 224 : 228 : 1
+T: 1 5 : 223 : 0 : 1
+T: 1 5 : 222 : 222 : 1
+T: 1 5 : 221 : 0 : 1
+T: 1 5 : 220 : 222 : 1
+T: 1 5 : 219 : 219 : 1
+T: 1 5 : 218 : 218 : 1
+T: 1 5 : 217 : 219 : 1
+T: 1 5 : 216 : 218 : 1
+T: 1 5 : 215 : 215 : 1
+T: 1 5 : 214 : 214 : 1
+T: 1 5 : 213 : 215 : 1
+T: 1 5 : 212 : 214 : 1
+T: 1 5 : 211 : 211 : 1
+T: 1 5 : 210 : 210 : 1
+T: 1 5 : 209 : 211 : 1
+T: 1 5 : 208 : 210 : 1
+T: 1 5 : 207 : 0 : 1
+T: 1 5 : 206 : 0 : 1
+T: 1 5 : 205 : 205 : 1
+T: 1 5 : 204 : 205 : 1
+T: 1 5 : 203 : 203 : 1
+T: 1 5 : 202 : 203 : 1
+T: 1 5 : 201 : 201 : 1
+T: 1 5 : 200 : 201 : 1
+T: 1 5 : 199 : 199 : 1
+T: 1 5 : 198 : 199 : 1
+T: 1 5 : 197 : 197 : 1
+T: 1 5 : 196 : 197 : 1
+T: 1 5 : 195 : 195 : 1
+T: 1 5 : 194 : 195 : 1
+T: 1 5 : 193 : 193 : 1
+T: 1 5 : 192 : 193 : 1
+T: 1 5 : 191 : 0 : 1
+T: 1 5 : 190 : 254 : 0.9
+T: 1 5 : 190 : 190 : 0.1
+T: 1 5 : 189 : 253 : 0.9
+T: 1 5 : 189 : 189 : 0.1
+T: 1 5 : 188 : 252 : 0.9
+T: 1 5 : 188 : 188 : 0.1
+T: 1 5 : 187 : 251 : 0.9
+T: 1 5 : 187 : 187 : 0.1
+T: 1 5 : 186 : 250 : 0.9
+T: 1 5 : 186 : 186 : 0.1
+T: 1 5 : 185 : 249 : 0.9
+T: 1 5 : 185 : 185 : 0.1
+T: 1 5 : 184 : 248 : 0.9
+T: 1 5 : 184 : 184 : 0.1
+T: 1 5 : 183 : 0 : 1
+T: 1 5 : 182 : 254 : 0.9
+T: 1 5 : 182 : 190 : 0.1
+T: 1 5 : 181 : 253 : 0.9
+T: 1 5 : 181 : 189 : 0.1
+T: 1 5 : 180 : 252 : 0.9
+T: 1 5 : 180 : 188 : 0.1
+T: 1 5 : 179 : 251 : 0.9
+T: 1 5 : 179 : 187 : 0.1
+T: 1 5 : 178 : 250 : 0.9
+T: 1 5 : 178 : 186 : 0.1
+T: 1 5 : 177 : 249 : 0.9
+T: 1 5 : 177 : 185 : 0.1
+T: 1 5 : 176 : 248 : 0.9
+T: 1 5 : 176 : 184 : 0.1
+T: 1 5 : 175 : 0 : 1
+T: 1 5 : 174 : 238 : 0.9
+T: 1 5 : 174 : 174 : 0.1
+T: 1 5 : 173 : 237 : 0.9
+T: 1 5 : 173 : 173 : 0.1
+T: 1 5 : 172 : 236 : 0.9
+T: 1 5 : 172 : 172 : 0.1
+T: 1 5 : 171 : 0 : 1
+T: 1 5 : 170 : 238 : 0.9
+T: 1 5 : 170 : 174 : 0.1
+T: 1 5 : 169 : 237 : 0.9
+T: 1 5 : 169 : 173 : 0.1
+T: 1 5 : 168 : 236 : 0.9
+T: 1 5 : 168 : 172 : 0.1
+T: 1 5 : 167 : 231 : 0.9
+T: 1 5 : 167 : 167 : 0.1
+T: 1 5 : 166 : 230 : 0.9
+T: 1 5 : 166 : 166 : 0.1
+T: 1 5 : 77 : 77 : 1
+T: 1 5 : 76 : 77 : 1
+T: 1 5 : 75 : 75 : 1
+T: 1 5 : 74 : 75 : 1
+T: 1 5 : 73 : 73 : 1
+T: 1 5 : 72 : 73 : 1
+T: 1 5 : 71 : 71 : 1
+T: 1 5 : 70 : 71 : 1
+T: 1 5 : 69 : 69 : 1
+T: 1 5 : 68 : 69 : 1
+T: 1 5 : 67 : 67 : 1
+T: 1 5 : 66 : 67 : 1
+T: 1 5 : 65 : 65 : 1
+T: 1 5 : 64 : 65 : 1
+T: 1 5 : 63 : 0 : 1
+T: 1 5 : 62 : 126 : 0.9
+T: 1 5 : 62 : 62 : 0.1
+T: 1 5 : 61 : 125 : 0.9
+T: 1 5 : 61 : 61 : 0.1
+T: 1 5 : 60 : 124 : 0.9
+T: 1 5 : 60 : 60 : 0.1
+T: 1 5 : 59 : 123 : 0.9
+T: 1 5 : 59 : 59 : 0.1
+T: 1 5 : 58 : 122 : 0.9
+T: 1 5 : 58 : 58 : 0.1
+T: 1 5 : 57 : 121 : 0.9
+T: 1 5 : 57 : 57 : 0.1
+T: 1 5 : 56 : 120 : 0.9
+T: 1 5 : 56 : 56 : 0.1
+T: 1 5 : 55 : 0 : 1
+T: 1 5 : 54 : 126 : 0.9
+T: 1 5 : 54 : 62 : 0.1
+T: 1 5 : 53 : 125 : 0.9
+T: 1 5 : 53 : 61 : 0.1
+T: 1 5 : 52 : 124 : 0.9
+T: 1 5 : 52 : 60 : 0.1
+T: 1 5 : 51 : 123 : 0.9
+T: 1 5 : 51 : 59 : 0.1
+T: 1 5 : 50 : 122 : 0.9
+T: 1 5 : 50 : 58 : 0.1
+T: 1 5 : 49 : 121 : 0.9
+T: 1 5 : 49 : 57 : 0.1
+T: 1 5 : 48 : 120 : 0.9
+T: 1 5 : 48 : 56 : 0.1
+T: 1 5 : 47 : 0 : 1
+T: 1 5 : 46 : 110 : 0.9
+T: 1 5 : 46 : 46 : 0.1
+T: 1 5 : 45 : 109 : 0.9
+T: 1 5 : 45 : 45 : 0.1
+T: 1 5 : 44 : 108 : 0.9
+T: 1 5 : 44 : 44 : 0.1
+T: 1 5 : 43 : 0 : 1
+T: 1 5 : 42 : 110 : 0.9
+T: 1 5 : 42 : 46 : 0.1
+T: 1 5 : 41 : 109 : 0.9
+T: 1 5 : 41 : 45 : 0.1
+T: 1 5 : 40 : 108 : 0.9
+T: 1 5 : 40 : 44 : 0.1
+T: 1 5 : 39 : 103 : 0.9
+T: 1 5 : 39 : 39 : 0.1
+T: 1 5 : 38 : 102 : 0.9
+T: 1 5 : 38 : 38 : 0.1
+T: 1 5 : 37 : 101 : 0.9
+T: 1 5 : 37 : 37 : 0.1
+T: 1 5 : 36 : 100 : 0.9
+T: 1 5 : 36 : 36 : 0.1
+T: 1 5 : 15 : 0 : 1
+T: 1 5 : 14 : 0 : 1
+T: 1 5 : 13 : 77 : 0.9
+T: 1 5 : 13 : 13 : 0.1
+T: 1 5 : 12 : 77 : 0.9
+T: 1 5 : 12 : 13 : 0.1
+T: 1 5 : 11 : 75 : 0.9
+T: 1 5 : 11 : 11 : 0.1
+T: 1 5 : 10 : 75 : 0.9
+T: 1 5 : 10 : 11 : 0.1
+T: 1 5 : 9 : 73 : 0.9
+T: 1 5 : 9 : 9 : 0.1
+T: 1 5 : 8 : 73 : 0.9
+T: 1 5 : 8 : 9 : 0.1
+T: 1 5 : 7 : 71 : 0.9
+T: 1 5 : 7 : 7 : 0.1
+T: 1 5 : 6 : 71 : 0.9
+T: 1 5 : 6 : 7 : 0.1
+T: 1 5 : 1 : 65 : 0.9
+T: 1 5 : 1 : 1 : 0.1
+T: 1 5 : 0 : 65 : 0.9
+T: 1 5 : 0 : 1 : 0.1
+T: 1 5 : 2 : 67 : 0.9
+T: 1 5 : 2 : 3 : 0.1
+T: 1 5 : 3 : 67 : 0.9
+T: 1 5 : 3 : 3 : 0.1
+T: 1 5 : 4 : 69 : 0.9
+T: 1 5 : 4 : 5 : 0.1
+T: 1 5 : 5 : 69 : 0.9
+T: 1 5 : 5 : 5 : 0.1
+T: 1 5 : 16 : 82 : 0.9
+T: 1 5 : 16 : 18 : 0.1
+T: 1 5 : 17 : 83 : 0.9
+T: 1 5 : 17 : 19 : 0.1
+T: 1 5 : 18 : 82 : 0.9
+T: 1 5 : 18 : 18 : 0.1
+T: 1 5 : 19 : 83 : 0.9
+T: 1 5 : 19 : 19 : 0.1
+T: 1 5 : 20 : 86 : 0.9
+T: 1 5 : 20 : 22 : 0.1
+T: 1 5 : 21 : 87 : 0.9
+T: 1 5 : 21 : 23 : 0.1
+T: 1 5 : 22 : 86 : 0.9
+T: 1 5 : 22 : 22 : 0.1
+T: 1 5 : 23 : 87 : 0.9
+T: 1 5 : 23 : 23 : 0.1
+T: 1 5 : 24 : 90 : 0.9
+T: 1 5 : 24 : 26 : 0.1
+T: 1 5 : 25 : 91 : 0.9
+T: 1 5 : 25 : 27 : 0.1
+T: 1 5 : 26 : 90 : 0.9
+T: 1 5 : 26 : 26 : 0.1
+T: 1 5 : 27 : 91 : 0.9
+T: 1 5 : 27 : 27 : 0.1
+T: 1 5 : 28 : 94 : 0.9
+T: 1 5 : 28 : 30 : 0.1
+T: 1 5 : 29 : 0 : 1
+T: 1 5 : 30 : 94 : 0.9
+T: 1 5 : 30 : 30 : 0.1
+T: 1 5 : 31 : 0 : 1
+T: 1 5 : 32 : 100 : 0.9
+T: 1 5 : 32 : 36 : 0.1
+T: 1 5 : 33 : 101 : 0.9
+T: 1 5 : 33 : 37 : 0.1
+T: 1 5 : 34 : 102 : 0.9
+T: 1 5 : 34 : 38 : 0.1
+T: 1 5 : 35 : 103 : 0.9
+T: 1 5 : 35 : 39 : 0.1
+T: 1 5 : 78 : 0 : 1
+T: 1 5 : 79 : 0 : 1
+T: 1 5 : 80 : 82 : 1
+T: 1 5 : 81 : 83 : 1
+T: 1 5 : 82 : 82 : 1
+T: 1 5 : 83 : 83 : 1
+T: 1 5 : 84 : 86 : 1
+T: 1 5 : 85 : 87 : 1
+T: 1 5 : 86 : 86 : 1
+T: 1 5 : 87 : 87 : 1
+T: 1 5 : 88 : 90 : 1
+T: 1 5 : 89 : 91 : 1
+T: 1 5 : 90 : 90 : 1
+T: 1 5 : 91 : 91 : 1
+T: 1 5 : 92 : 94 : 1
+T: 1 5 : 93 : 0 : 1
+T: 1 5 : 94 : 94 : 1
+T: 1 5 : 95 : 0 : 1
+T: 1 5 : 96 : 100 : 1
+T: 1 5 : 97 : 101 : 1
+T: 1 5 : 98 : 102 : 1
+T: 1 5 : 99 : 103 : 1
+T: 1 5 : 100 : 100 : 1
+T: 1 5 : 101 : 101 : 1
+T: 1 5 : 102 : 102 : 1
+T: 1 5 : 103 : 103 : 1
+T: 1 5 : 104 : 108 : 1
+T: 1 5 : 105 : 109 : 1
+T: 1 5 : 106 : 110 : 1
+T: 1 5 : 107 : 0 : 1
+T: 1 5 : 108 : 108 : 1
+T: 1 5 : 109 : 109 : 1
+T: 1 5 : 110 : 110 : 1
+T: 1 5 : 111 : 0 : 1
+T: 1 5 : 112 : 120 : 1
+T: 1 5 : 113 : 121 : 1
+T: 1 5 : 114 : 122 : 1
+T: 1 5 : 115 : 123 : 1
+T: 1 5 : 116 : 124 : 1
+T: 1 5 : 117 : 125 : 1
+T: 1 5 : 118 : 126 : 1
+T: 1 5 : 119 : 0 : 1
+T: 1 5 : 120 : 120 : 1
+T: 1 5 : 121 : 121 : 1
+T: 1 5 : 122 : 122 : 1
+T: 1 5 : 123 : 123 : 1
+T: 1 5 : 124 : 124 : 1
+T: 1 5 : 125 : 125 : 1
+T: 1 5 : 126 : 126 : 1
+T: 1 5 : 127 : 0 : 1
+T: 1 5 : 128 : 193 : 0.9
+T: 1 5 : 128 : 129 : 0.1
+T: 1 5 : 129 : 193 : 0.9
+T: 1 5 : 129 : 129 : 0.1
+T: 1 5 : 130 : 195 : 0.9
+T: 1 5 : 130 : 131 : 0.1
+T: 1 5 : 131 : 195 : 0.9
+T: 1 5 : 131 : 131 : 0.1
+T: 1 5 : 132 : 197 : 0.9
+T: 1 5 : 132 : 133 : 0.1
+T: 1 5 : 133 : 197 : 0.9
+T: 1 5 : 133 : 133 : 0.1
+T: 1 5 : 134 : 199 : 0.9
+T: 1 5 : 134 : 135 : 0.1
+T: 1 5 : 135 : 199 : 0.9
+T: 1 5 : 135 : 135 : 0.1
+T: 1 5 : 136 : 201 : 0.9
+T: 1 5 : 136 : 137 : 0.1
+T: 1 5 : 137 : 201 : 0.9
+T: 1 5 : 137 : 137 : 0.1
+T: 1 5 : 138 : 203 : 0.9
+T: 1 5 : 138 : 139 : 0.1
+T: 1 5 : 139 : 203 : 0.9
+T: 1 5 : 139 : 139 : 0.1
+T: 1 5 : 140 : 205 : 0.9
+T: 1 5 : 140 : 141 : 0.1
+T: 1 5 : 141 : 205 : 0.9
+T: 1 5 : 141 : 141 : 0.1
+T: 1 5 : 142 : 0 : 1
+T: 1 5 : 143 : 0 : 1
+T: 1 5 : 144 : 210 : 0.9
+T: 1 5 : 144 : 146 : 0.1
+T: 1 5 : 145 : 211 : 0.9
+T: 1 5 : 145 : 147 : 0.1
+T: 1 5 : 146 : 210 : 0.9
+T: 1 5 : 146 : 146 : 0.1
+T: 1 5 : 147 : 211 : 0.9
+T: 1 5 : 147 : 147 : 0.1
+T: 1 5 : 148 : 214 : 0.9
+T: 1 5 : 148 : 150 : 0.1
+T: 1 5 : 149 : 215 : 0.9
+T: 1 5 : 149 : 151 : 0.1
+T: 1 5 : 150 : 214 : 0.9
+T: 1 5 : 150 : 150 : 0.1
+T: 1 5 : 151 : 215 : 0.9
+T: 1 5 : 151 : 151 : 0.1
+T: 1 5 : 152 : 218 : 0.9
+T: 1 5 : 152 : 154 : 0.1
+T: 1 5 : 153 : 219 : 0.9
+T: 1 5 : 153 : 155 : 0.1
+T: 1 5 : 154 : 218 : 0.9
+T: 1 5 : 154 : 154 : 0.1
+T: 1 5 : 155 : 219 : 0.9
+T: 1 5 : 155 : 155 : 0.1
+T: 1 5 : 156 : 222 : 0.9
+T: 1 5 : 156 : 158 : 0.1
+T: 1 5 : 157 : 0 : 1
+T: 1 5 : 158 : 222 : 0.9
+T: 1 5 : 158 : 158 : 0.1
+T: 1 5 : 159 : 0 : 1
+T: 1 5 : 160 : 228 : 0.9
+T: 1 5 : 160 : 164 : 0.1
+T: 1 5 : 161 : 229 : 0.9
+T: 1 5 : 161 : 165 : 0.1
+T: 1 5 : 162 : 230 : 0.9
+T: 1 5 : 162 : 166 : 0.1
+T: 1 5 : 163 : 231 : 0.9
+T: 1 5 : 163 : 167 : 0.1
+T: 1 5 : 164 : 228 : 0.9
+T: 1 5 : 164 : 164 : 0.1
+T: 1 5 : 165 : 229 : 0.9
+T: 1 5 : 165 : 165 : 0.1
+T: 2 0 : 255 : 255 : 0.01
+T: 2 0 : 255 : 111 : 0.81
+T: 2 0 : 255 : 239 : 0.09
+T: 2 0 : 255 : 127 : 0.09
+T: 2 0 : 254 : 254 : 0.01
+T: 2 0 : 254 : 110 : 0.81
+T: 2 0 : 254 : 238 : 0.09
+T: 2 0 : 254 : 126 : 0.09
+T: 2 0 : 253 : 253 : 0.01
+T: 2 0 : 253 : 109 : 0.81
+T: 2 0 : 253 : 237 : 0.09
+T: 2 0 : 253 : 125 : 0.09
+T: 2 0 : 252 : 252 : 0.01
+T: 2 0 : 252 : 108 : 0.81
+T: 2 0 : 252 : 236 : 0.09
+T: 2 0 : 252 : 124 : 0.09
+T: 2 0 : 251 : 251 : 0.01
+T: 2 0 : 251 : 107 : 0.81
+T: 2 0 : 251 : 235 : 0.09
+T: 2 0 : 251 : 123 : 0.09
+T: 2 0 : 250 : 250 : 0.01
+T: 2 0 : 250 : 106 : 0.81
+T: 2 0 : 250 : 234 : 0.09
+T: 2 0 : 250 : 122 : 0.09
+T: 2 0 : 249 : 249 : 0.01
+T: 2 0 : 249 : 105 : 0.81
+T: 2 0 : 249 : 233 : 0.09
+T: 2 0 : 249 : 121 : 0.09
+T: 2 0 : 248 : 248 : 0.01
+T: 2 0 : 248 : 104 : 0.81
+T: 2 0 : 248 : 232 : 0.09
+T: 2 0 : 248 : 120 : 0.09
+T: 2 0 : 247 : 247 : 0.01
+T: 2 0 : 247 : 103 : 0.81
+T: 2 0 : 247 : 231 : 0.09
+T: 2 0 : 247 : 119 : 0.09
+T: 2 0 : 246 : 246 : 0.01
+T: 2 0 : 246 : 102 : 0.81
+T: 2 0 : 246 : 230 : 0.09
+T: 2 0 : 246 : 118 : 0.09
+T: 2 0 : 245 : 245 : 0.01
+T: 2 0 : 245 : 101 : 0.81
+T: 2 0 : 245 : 229 : 0.09
+T: 2 0 : 245 : 117 : 0.09
+T: 2 0 : 244 : 244 : 0.01
+T: 2 0 : 244 : 100 : 0.81
+T: 2 0 : 244 : 228 : 0.09
+T: 2 0 : 244 : 116 : 0.09
+T: 2 0 : 243 : 243 : 0.01
+T: 2 0 : 243 : 99 : 0.81
+T: 2 0 : 243 : 227 : 0.09
+T: 2 0 : 243 : 115 : 0.09
+T: 2 0 : 242 : 242 : 0.01
+T: 2 0 : 242 : 98 : 0.81
+T: 2 0 : 242 : 226 : 0.09
+T: 2 0 : 242 : 114 : 0.09
+T: 2 0 : 241 : 241 : 0.01
+T: 2 0 : 241 : 97 : 0.81
+T: 2 0 : 241 : 225 : 0.09
+T: 2 0 : 241 : 113 : 0.09
+T: 2 0 : 240 : 240 : 0.01
+T: 2 0 : 240 : 96 : 0.81
+T: 2 0 : 240 : 224 : 0.09
+T: 2 0 : 240 : 112 : 0.09
+T: 2 0 : 239 : 239 : 0.1
+T: 2 0 : 239 : 111 : 0.9
+T: 2 0 : 238 : 238 : 0.1
+T: 2 0 : 238 : 110 : 0.9
+T: 2 0 : 237 : 237 : 0.1
+T: 2 0 : 237 : 109 : 0.9
+T: 2 0 : 236 : 236 : 0.1
+T: 2 0 : 236 : 108 : 0.9
+T: 2 0 : 235 : 235 : 0.1
+T: 2 0 : 235 : 107 : 0.9
+T: 2 0 : 234 : 234 : 0.1
+T: 2 0 : 234 : 106 : 0.9
+T: 2 0 : 233 : 233 : 0.1
+T: 2 0 : 233 : 105 : 0.9
+T: 2 0 : 232 : 232 : 0.1
+T: 2 0 : 232 : 104 : 0.9
+T: 2 0 : 231 : 231 : 0.1
+T: 2 0 : 231 : 103 : 0.9
+T: 2 0 : 230 : 230 : 0.1
+T: 2 0 : 230 : 102 : 0.9
+T: 2 0 : 229 : 229 : 0.1
+T: 2 0 : 229 : 101 : 0.9
+T: 2 0 : 228 : 228 : 0.1
+T: 2 0 : 228 : 100 : 0.9
+T: 2 0 : 227 : 227 : 0.1
+T: 2 0 : 227 : 99 : 0.9
+T: 2 0 : 226 : 226 : 0.1
+T: 2 0 : 226 : 98 : 0.9
+T: 2 0 : 225 : 225 : 0.1
+T: 2 0 : 225 : 97 : 0.9
+T: 2 0 : 224 : 224 : 0.1
+T: 2 0 : 224 : 96 : 0.9
+T: 2 0 : 223 : 223 : 0.01
+T: 2 0 : 223 : 79 : 0.81
+T: 2 0 : 223 : 207 : 0.09
+T: 2 0 : 223 : 95 : 0.09
+T: 2 0 : 222 : 222 : 0.01
+T: 2 0 : 222 : 78 : 0.81
+T: 2 0 : 222 : 206 : 0.09
+T: 2 0 : 222 : 94 : 0.09
+T: 2 0 : 221 : 221 : 0.01
+T: 2 0 : 221 : 77 : 0.81
+T: 2 0 : 221 : 205 : 0.09
+T: 2 0 : 221 : 93 : 0.09
+T: 2 0 : 220 : 220 : 0.01
+T: 2 0 : 220 : 76 : 0.81
+T: 2 0 : 220 : 204 : 0.09
+T: 2 0 : 220 : 92 : 0.09
+T: 2 0 : 219 : 219 : 0.01
+T: 2 0 : 219 : 75 : 0.81
+T: 2 0 : 219 : 203 : 0.09
+T: 2 0 : 219 : 91 : 0.09
+T: 2 0 : 218 : 218 : 0.01
+T: 2 0 : 218 : 74 : 0.81
+T: 2 0 : 218 : 202 : 0.09
+T: 2 0 : 218 : 90 : 0.09
+T: 2 0 : 217 : 217 : 0.01
+T: 2 0 : 217 : 73 : 0.81
+T: 2 0 : 217 : 201 : 0.09
+T: 2 0 : 217 : 89 : 0.09
+T: 2 0 : 216 : 216 : 0.01
+T: 2 0 : 216 : 72 : 0.81
+T: 2 0 : 216 : 200 : 0.09
+T: 2 0 : 216 : 88 : 0.09
+T: 2 0 : 215 : 215 : 0.01
+T: 2 0 : 215 : 71 : 0.81
+T: 2 0 : 215 : 199 : 0.09
+T: 2 0 : 215 : 87 : 0.09
+T: 2 0 : 214 : 214 : 0.01
+T: 2 0 : 214 : 70 : 0.81
+T: 2 0 : 214 : 198 : 0.09
+T: 2 0 : 214 : 86 : 0.09
+T: 2 0 : 213 : 213 : 0.01
+T: 2 0 : 213 : 69 : 0.81
+T: 2 0 : 213 : 197 : 0.09
+T: 2 0 : 213 : 85 : 0.09
+T: 2 0 : 212 : 212 : 0.01
+T: 2 0 : 212 : 68 : 0.81
+T: 2 0 : 212 : 196 : 0.09
+T: 2 0 : 212 : 84 : 0.09
+T: 2 0 : 211 : 211 : 0.01
+T: 2 0 : 211 : 67 : 0.81
+T: 2 0 : 211 : 195 : 0.09
+T: 2 0 : 211 : 83 : 0.09
+T: 2 0 : 210 : 210 : 0.01
+T: 2 0 : 210 : 66 : 0.81
+T: 2 0 : 210 : 194 : 0.09
+T: 2 0 : 210 : 82 : 0.09
+T: 2 0 : 209 : 209 : 0.01
+T: 2 0 : 209 : 65 : 0.81
+T: 2 0 : 209 : 193 : 0.09
+T: 2 0 : 209 : 81 : 0.09
+T: 2 0 : 208 : 208 : 0.01
+T: 2 0 : 208 : 64 : 0.81
+T: 2 0 : 208 : 192 : 0.09
+T: 2 0 : 208 : 80 : 0.09
+T: 2 0 : 207 : 207 : 0.1
+T: 2 0 : 207 : 79 : 0.9
+T: 2 0 : 206 : 206 : 0.1
+T: 2 0 : 206 : 78 : 0.9
+T: 2 0 : 205 : 205 : 0.1
+T: 2 0 : 205 : 77 : 0.9
+T: 2 0 : 204 : 204 : 0.1
+T: 2 0 : 204 : 76 : 0.9
+T: 2 0 : 203 : 203 : 0.1
+T: 2 0 : 203 : 75 : 0.9
+T: 2 0 : 202 : 202 : 0.1
+T: 2 0 : 202 : 74 : 0.9
+T: 2 0 : 201 : 201 : 0.1
+T: 2 0 : 201 : 73 : 0.9
+T: 2 0 : 200 : 200 : 0.1
+T: 2 0 : 200 : 72 : 0.9
+T: 2 0 : 199 : 199 : 0.1
+T: 2 0 : 199 : 71 : 0.9
+T: 2 0 : 198 : 198 : 0.1
+T: 2 0 : 198 : 70 : 0.9
+T: 2 0 : 197 : 197 : 0.1
+T: 2 0 : 197 : 69 : 0.9
+T: 2 0 : 196 : 196 : 0.1
+T: 2 0 : 196 : 68 : 0.9
+T: 2 0 : 195 : 195 : 0.1
+T: 2 0 : 195 : 67 : 0.9
+T: 2 0 : 194 : 194 : 0.1
+T: 2 0 : 194 : 66 : 0.9
+T: 2 0 : 193 : 193 : 0.1
+T: 2 0 : 193 : 65 : 0.9
+T: 2 0 : 192 : 192 : 0.1
+T: 2 0 : 192 : 64 : 0.9
+T: 2 0 : 191 : 191 : 0.01
+T: 2 0 : 191 : 47 : 0.81
+T: 2 0 : 191 : 175 : 0.09
+T: 2 0 : 191 : 63 : 0.09
+T: 2 0 : 190 : 190 : 0.01
+T: 2 0 : 190 : 46 : 0.81
+T: 2 0 : 190 : 174 : 0.09
+T: 2 0 : 190 : 62 : 0.09
+T: 2 0 : 189 : 189 : 0.01
+T: 2 0 : 189 : 45 : 0.81
+T: 2 0 : 189 : 173 : 0.09
+T: 2 0 : 189 : 61 : 0.09
+T: 2 0 : 188 : 188 : 0.01
+T: 2 0 : 188 : 44 : 0.81
+T: 2 0 : 188 : 172 : 0.09
+T: 2 0 : 188 : 60 : 0.09
+T: 2 0 : 187 : 187 : 0.01
+T: 2 0 : 187 : 43 : 0.81
+T: 2 0 : 187 : 171 : 0.09
+T: 2 0 : 187 : 59 : 0.09
+T: 2 0 : 186 : 186 : 0.01
+T: 2 0 : 186 : 42 : 0.81
+T: 2 0 : 186 : 170 : 0.09
+T: 2 0 : 186 : 58 : 0.09
+T: 2 0 : 185 : 185 : 0.01
+T: 2 0 : 185 : 41 : 0.81
+T: 2 0 : 185 : 169 : 0.09
+T: 2 0 : 185 : 57 : 0.09
+T: 2 0 : 184 : 184 : 0.01
+T: 2 0 : 184 : 40 : 0.81
+T: 2 0 : 184 : 168 : 0.09
+T: 2 0 : 184 : 56 : 0.09
+T: 2 0 : 183 : 183 : 0.01
+T: 2 0 : 183 : 39 : 0.81
+T: 2 0 : 183 : 167 : 0.09
+T: 2 0 : 183 : 55 : 0.09
+T: 2 0 : 182 : 182 : 0.01
+T: 2 0 : 182 : 38 : 0.81
+T: 2 0 : 182 : 166 : 0.09
+T: 2 0 : 182 : 54 : 0.09
+T: 2 0 : 181 : 181 : 0.01
+T: 2 0 : 181 : 37 : 0.81
+T: 2 0 : 181 : 165 : 0.09
+T: 2 0 : 181 : 53 : 0.09
+T: 2 0 : 180 : 180 : 0.01
+T: 2 0 : 180 : 36 : 0.81
+T: 2 0 : 180 : 164 : 0.09
+T: 2 0 : 180 : 52 : 0.09
+T: 2 0 : 179 : 179 : 0.01
+T: 2 0 : 179 : 35 : 0.81
+T: 2 0 : 179 : 163 : 0.09
+T: 2 0 : 179 : 51 : 0.09
+T: 2 0 : 178 : 178 : 0.01
+T: 2 0 : 178 : 34 : 0.81
+T: 2 0 : 178 : 162 : 0.09
+T: 2 0 : 178 : 50 : 0.09
+T: 2 0 : 177 : 177 : 0.01
+T: 2 0 : 177 : 33 : 0.81
+T: 2 0 : 177 : 161 : 0.09
+T: 2 0 : 177 : 49 : 0.09
+T: 2 0 : 176 : 176 : 0.01
+T: 2 0 : 176 : 32 : 0.81
+T: 2 0 : 176 : 160 : 0.09
+T: 2 0 : 176 : 48 : 0.09
+T: 2 0 : 175 : 175 : 0.1
+T: 2 0 : 175 : 47 : 0.9
+T: 2 0 : 174 : 174 : 0.1
+T: 2 0 : 174 : 46 : 0.9
+T: 2 0 : 173 : 173 : 0.1
+T: 2 0 : 173 : 45 : 0.9
+T: 2 0 : 172 : 172 : 0.1
+T: 2 0 : 172 : 44 : 0.9
+T: 2 0 : 171 : 171 : 0.1
+T: 2 0 : 171 : 43 : 0.9
+T: 2 0 : 170 : 170 : 0.1
+T: 2 0 : 170 : 42 : 0.9
+T: 2 0 : 169 : 169 : 0.1
+T: 2 0 : 169 : 41 : 0.9
+T: 2 0 : 168 : 168 : 0.1
+T: 2 0 : 168 : 40 : 0.9
+T: 2 0 : 167 : 167 : 0.1
+T: 2 0 : 167 : 39 : 0.9
+T: 2 0 : 166 : 166 : 0.1
+T: 2 0 : 166 : 38 : 0.9
+T: 2 0 : 77 : 77 : 1
+T: 2 0 : 76 : 76 : 1
+T: 2 0 : 75 : 75 : 1
+T: 2 0 : 74 : 74 : 1
+T: 2 0 : 73 : 73 : 1
+T: 2 0 : 72 : 72 : 1
+T: 2 0 : 71 : 71 : 1
+T: 2 0 : 70 : 70 : 1
+T: 2 0 : 69 : 69 : 1
+T: 2 0 : 68 : 68 : 1
+T: 2 0 : 67 : 67 : 1
+T: 2 0 : 66 : 66 : 1
+T: 2 0 : 65 : 65 : 1
+T: 2 0 : 64 : 64 : 1
+T: 2 0 : 63 : 63 : 0.1
+T: 2 0 : 63 : 47 : 0.9
+T: 2 0 : 62 : 62 : 0.1
+T: 2 0 : 62 : 46 : 0.9
+T: 2 0 : 61 : 61 : 0.1
+T: 2 0 : 61 : 45 : 0.9
+T: 2 0 : 60 : 60 : 0.1
+T: 2 0 : 60 : 44 : 0.9
+T: 2 0 : 59 : 59 : 0.1
+T: 2 0 : 59 : 43 : 0.9
+T: 2 0 : 58 : 58 : 0.1
+T: 2 0 : 58 : 42 : 0.9
+T: 2 0 : 57 : 57 : 0.1
+T: 2 0 : 57 : 41 : 0.9
+T: 2 0 : 56 : 56 : 0.1
+T: 2 0 : 56 : 40 : 0.9
+T: 2 0 : 55 : 55 : 0.1
+T: 2 0 : 55 : 39 : 0.9
+T: 2 0 : 54 : 54 : 0.1
+T: 2 0 : 54 : 38 : 0.9
+T: 2 0 : 53 : 53 : 0.1
+T: 2 0 : 53 : 37 : 0.9
+T: 2 0 : 52 : 52 : 0.1
+T: 2 0 : 52 : 36 : 0.9
+T: 2 0 : 51 : 51 : 0.1
+T: 2 0 : 51 : 35 : 0.9
+T: 2 0 : 50 : 50 : 0.1
+T: 2 0 : 50 : 34 : 0.9
+T: 2 0 : 49 : 49 : 0.1
+T: 2 0 : 49 : 33 : 0.9
+T: 2 0 : 48 : 48 : 0.1
+T: 2 0 : 48 : 32 : 0.9
+T: 2 0 : 47 : 47 : 1
+T: 2 0 : 46 : 46 : 1
+T: 2 0 : 45 : 45 : 1
+T: 2 0 : 44 : 44 : 1
+T: 2 0 : 43 : 43 : 1
+T: 2 0 : 42 : 42 : 1
+T: 2 0 : 41 : 41 : 1
+T: 2 0 : 40 : 40 : 1
+T: 2 0 : 39 : 39 : 1
+T: 2 0 : 38 : 38 : 1
+T: 2 0 : 37 : 37 : 1
+T: 2 0 : 36 : 36 : 1
+T: 2 0 : 15 : 15 : 1
+T: 2 0 : 14 : 14 : 1
+T: 2 0 : 13 : 13 : 1
+T: 2 0 : 12 : 12 : 1
+T: 2 0 : 11 : 11 : 1
+T: 2 0 : 10 : 10 : 1
+T: 2 0 : 9 : 9 : 1
+T: 2 0 : 8 : 8 : 1
+T: 2 0 : 7 : 7 : 1
+T: 2 0 : 6 : 6 : 1
+T: 2 0 : 1 : 1 : 1
+T: 2 0 : 0 : 0 : 1
+T: 2 0 : 2 : 2 : 1
+T: 2 0 : 3 : 3 : 1
+T: 2 0 : 4 : 4 : 1
+T: 2 0 : 5 : 5 : 1
+T: 2 0 : 16 : 16 : 0.1
+T: 2 0 : 16 : 0 : 0.9
+T: 2 0 : 17 : 17 : 0.1
+T: 2 0 : 17 : 1 : 0.9
+T: 2 0 : 18 : 18 : 0.1
+T: 2 0 : 18 : 2 : 0.9
+T: 2 0 : 19 : 19 : 0.1
+T: 2 0 : 19 : 3 : 0.9
+T: 2 0 : 20 : 20 : 0.1
+T: 2 0 : 20 : 4 : 0.9
+T: 2 0 : 21 : 21 : 0.1
+T: 2 0 : 21 : 5 : 0.9
+T: 2 0 : 22 : 22 : 0.1
+T: 2 0 : 22 : 6 : 0.9
+T: 2 0 : 23 : 23 : 0.1
+T: 2 0 : 23 : 7 : 0.9
+T: 2 0 : 24 : 24 : 0.1
+T: 2 0 : 24 : 8 : 0.9
+T: 2 0 : 25 : 25 : 0.1
+T: 2 0 : 25 : 9 : 0.9
+T: 2 0 : 26 : 26 : 0.1
+T: 2 0 : 26 : 10 : 0.9
+T: 2 0 : 27 : 27 : 0.1
+T: 2 0 : 27 : 11 : 0.9
+T: 2 0 : 28 : 28 : 0.1
+T: 2 0 : 28 : 12 : 0.9
+T: 2 0 : 29 : 29 : 0.1
+T: 2 0 : 29 : 13 : 0.9
+T: 2 0 : 30 : 30 : 0.1
+T: 2 0 : 30 : 14 : 0.9
+T: 2 0 : 31 : 31 : 0.1
+T: 2 0 : 31 : 15 : 0.9
+T: 2 0 : 32 : 32 : 1
+T: 2 0 : 33 : 33 : 1
+T: 2 0 : 34 : 34 : 1
+T: 2 0 : 35 : 35 : 1
+T: 2 0 : 78 : 78 : 1
+T: 2 0 : 79 : 79 : 1
+T: 2 0 : 80 : 80 : 0.1
+T: 2 0 : 80 : 64 : 0.9
+T: 2 0 : 81 : 81 : 0.1
+T: 2 0 : 81 : 65 : 0.9
+T: 2 0 : 82 : 82 : 0.1
+T: 2 0 : 82 : 66 : 0.9
+T: 2 0 : 83 : 83 : 0.1
+T: 2 0 : 83 : 67 : 0.9
+T: 2 0 : 84 : 84 : 0.1
+T: 2 0 : 84 : 68 : 0.9
+T: 2 0 : 85 : 85 : 0.1
+T: 2 0 : 85 : 69 : 0.9
+T: 2 0 : 86 : 86 : 0.1
+T: 2 0 : 86 : 70 : 0.9
+T: 2 0 : 87 : 87 : 0.1
+T: 2 0 : 87 : 71 : 0.9
+T: 2 0 : 88 : 88 : 0.1
+T: 2 0 : 88 : 72 : 0.9
+T: 2 0 : 89 : 89 : 0.1
+T: 2 0 : 89 : 73 : 0.9
+T: 2 0 : 90 : 90 : 0.1
+T: 2 0 : 90 : 74 : 0.9
+T: 2 0 : 91 : 91 : 0.1
+T: 2 0 : 91 : 75 : 0.9
+T: 2 0 : 92 : 92 : 0.1
+T: 2 0 : 92 : 76 : 0.9
+T: 2 0 : 93 : 93 : 0.1
+T: 2 0 : 93 : 77 : 0.9
+T: 2 0 : 94 : 94 : 0.1
+T: 2 0 : 94 : 78 : 0.9
+T: 2 0 : 95 : 95 : 0.1
+T: 2 0 : 95 : 79 : 0.9
+T: 2 0 : 96 : 96 : 1
+T: 2 0 : 97 : 97 : 1
+T: 2 0 : 98 : 98 : 1
+T: 2 0 : 99 : 99 : 1
+T: 2 0 : 100 : 100 : 1
+T: 2 0 : 101 : 101 : 1
+T: 2 0 : 102 : 102 : 1
+T: 2 0 : 103 : 103 : 1
+T: 2 0 : 104 : 104 : 1
+T: 2 0 : 105 : 105 : 1
+T: 2 0 : 106 : 106 : 1
+T: 2 0 : 107 : 107 : 1
+T: 2 0 : 108 : 108 : 1
+T: 2 0 : 109 : 109 : 1
+T: 2 0 : 110 : 110 : 1
+T: 2 0 : 111 : 111 : 1
+T: 2 0 : 112 : 112 : 0.1
+T: 2 0 : 112 : 96 : 0.9
+T: 2 0 : 113 : 113 : 0.1
+T: 2 0 : 113 : 97 : 0.9
+T: 2 0 : 114 : 114 : 0.1
+T: 2 0 : 114 : 98 : 0.9
+T: 2 0 : 115 : 115 : 0.1
+T: 2 0 : 115 : 99 : 0.9
+T: 2 0 : 116 : 116 : 0.1
+T: 2 0 : 116 : 100 : 0.9
+T: 2 0 : 117 : 117 : 0.1
+T: 2 0 : 117 : 101 : 0.9
+T: 2 0 : 118 : 118 : 0.1
+T: 2 0 : 118 : 102 : 0.9
+T: 2 0 : 119 : 119 : 0.1
+T: 2 0 : 119 : 103 : 0.9
+T: 2 0 : 120 : 120 : 0.1
+T: 2 0 : 120 : 104 : 0.9
+T: 2 0 : 121 : 121 : 0.1
+T: 2 0 : 121 : 105 : 0.9
+T: 2 0 : 122 : 122 : 0.1
+T: 2 0 : 122 : 106 : 0.9
+T: 2 0 : 123 : 123 : 0.1
+T: 2 0 : 123 : 107 : 0.9
+T: 2 0 : 124 : 124 : 0.1
+T: 2 0 : 124 : 108 : 0.9
+T: 2 0 : 125 : 125 : 0.1
+T: 2 0 : 125 : 109 : 0.9
+T: 2 0 : 126 : 126 : 0.1
+T: 2 0 : 126 : 110 : 0.9
+T: 2 0 : 127 : 127 : 0.1
+T: 2 0 : 127 : 111 : 0.9
+T: 2 0 : 128 : 128 : 0.1
+T: 2 0 : 128 : 0 : 0.9
+T: 2 0 : 129 : 129 : 0.1
+T: 2 0 : 129 : 1 : 0.9
+T: 2 0 : 130 : 130 : 0.1
+T: 2 0 : 130 : 2 : 0.9
+T: 2 0 : 131 : 131 : 0.1
+T: 2 0 : 131 : 3 : 0.9
+T: 2 0 : 132 : 132 : 0.1
+T: 2 0 : 132 : 4 : 0.9
+T: 2 0 : 133 : 133 : 0.1
+T: 2 0 : 133 : 5 : 0.9
+T: 2 0 : 134 : 134 : 0.1
+T: 2 0 : 134 : 6 : 0.9
+T: 2 0 : 135 : 135 : 0.1
+T: 2 0 : 135 : 7 : 0.9
+T: 2 0 : 136 : 136 : 0.1
+T: 2 0 : 136 : 8 : 0.9
+T: 2 0 : 137 : 137 : 0.1
+T: 2 0 : 137 : 9 : 0.9
+T: 2 0 : 138 : 138 : 0.1
+T: 2 0 : 138 : 10 : 0.9
+T: 2 0 : 139 : 139 : 0.1
+T: 2 0 : 139 : 11 : 0.9
+T: 2 0 : 140 : 140 : 0.1
+T: 2 0 : 140 : 12 : 0.9
+T: 2 0 : 141 : 141 : 0.1
+T: 2 0 : 141 : 13 : 0.9
+T: 2 0 : 142 : 142 : 0.1
+T: 2 0 : 142 : 14 : 0.9
+T: 2 0 : 143 : 143 : 0.1
+T: 2 0 : 143 : 15 : 0.9
+T: 2 0 : 144 : 144 : 0.01
+T: 2 0 : 144 : 0 : 0.81
+T: 2 0 : 144 : 128 : 0.09
+T: 2 0 : 144 : 16 : 0.09
+T: 2 0 : 145 : 145 : 0.01
+T: 2 0 : 145 : 1 : 0.81
+T: 2 0 : 145 : 129 : 0.09
+T: 2 0 : 145 : 17 : 0.09
+T: 2 0 : 146 : 146 : 0.01
+T: 2 0 : 146 : 2 : 0.81
+T: 2 0 : 146 : 130 : 0.09
+T: 2 0 : 146 : 18 : 0.09
+T: 2 0 : 147 : 147 : 0.01
+T: 2 0 : 147 : 3 : 0.81
+T: 2 0 : 147 : 131 : 0.09
+T: 2 0 : 147 : 19 : 0.09
+T: 2 0 : 148 : 148 : 0.01
+T: 2 0 : 148 : 4 : 0.81
+T: 2 0 : 148 : 132 : 0.09
+T: 2 0 : 148 : 20 : 0.09
+T: 2 0 : 149 : 149 : 0.01
+T: 2 0 : 149 : 5 : 0.81
+T: 2 0 : 149 : 133 : 0.09
+T: 2 0 : 149 : 21 : 0.09
+T: 2 0 : 150 : 150 : 0.01
+T: 2 0 : 150 : 6 : 0.81
+T: 2 0 : 150 : 134 : 0.09
+T: 2 0 : 150 : 22 : 0.09
+T: 2 0 : 151 : 151 : 0.01
+T: 2 0 : 151 : 7 : 0.81
+T: 2 0 : 151 : 135 : 0.09
+T: 2 0 : 151 : 23 : 0.09
+T: 2 0 : 152 : 152 : 0.01
+T: 2 0 : 152 : 8 : 0.81
+T: 2 0 : 152 : 136 : 0.09
+T: 2 0 : 152 : 24 : 0.09
+T: 2 0 : 153 : 153 : 0.01
+T: 2 0 : 153 : 9 : 0.81
+T: 2 0 : 153 : 137 : 0.09
+T: 2 0 : 153 : 25 : 0.09
+T: 2 0 : 154 : 154 : 0.01
+T: 2 0 : 154 : 10 : 0.81
+T: 2 0 : 154 : 138 : 0.09
+T: 2 0 : 154 : 26 : 0.09
+T: 2 0 : 155 : 155 : 0.01
+T: 2 0 : 155 : 11 : 0.81
+T: 2 0 : 155 : 139 : 0.09
+T: 2 0 : 155 : 27 : 0.09
+T: 2 0 : 156 : 156 : 0.01
+T: 2 0 : 156 : 12 : 0.81
+T: 2 0 : 156 : 140 : 0.09
+T: 2 0 : 156 : 28 : 0.09
+T: 2 0 : 157 : 157 : 0.01
+T: 2 0 : 157 : 13 : 0.81
+T: 2 0 : 157 : 141 : 0.09
+T: 2 0 : 157 : 29 : 0.09
+T: 2 0 : 158 : 158 : 0.01
+T: 2 0 : 158 : 14 : 0.81
+T: 2 0 : 158 : 142 : 0.09
+T: 2 0 : 158 : 30 : 0.09
+T: 2 0 : 159 : 159 : 0.01
+T: 2 0 : 159 : 15 : 0.81
+T: 2 0 : 159 : 143 : 0.09
+T: 2 0 : 159 : 31 : 0.09
+T: 2 0 : 160 : 160 : 0.1
+T: 2 0 : 160 : 32 : 0.9
+T: 2 0 : 161 : 161 : 0.1
+T: 2 0 : 161 : 33 : 0.9
+T: 2 0 : 162 : 162 : 0.1
+T: 2 0 : 162 : 34 : 0.9
+T: 2 0 : 163 : 163 : 0.1
+T: 2 0 : 163 : 35 : 0.9
+T: 2 0 : 164 : 164 : 0.1
+T: 2 0 : 164 : 36 : 0.9
+T: 2 0 : 165 : 165 : 0.1
+T: 2 0 : 165 : 37 : 0.9
+T: 2 1 : 255 : 255 : 0.1
+T: 2 1 : 255 : 127 : 0.9
+T: 2 1 : 254 : 254 : 0.1
+T: 2 1 : 254 : 126 : 0.9
+T: 2 1 : 253 : 253 : 0.1
+T: 2 1 : 253 : 125 : 0.9
+T: 2 1 : 252 : 252 : 0.1
+T: 2 1 : 252 : 124 : 0.9
+T: 2 1 : 251 : 251 : 0.1
+T: 2 1 : 251 : 123 : 0.9
+T: 2 1 : 250 : 250 : 0.1
+T: 2 1 : 250 : 122 : 0.9
+T: 2 1 : 249 : 249 : 0.1
+T: 2 1 : 249 : 121 : 0.9
+T: 2 1 : 248 : 248 : 0.1
+T: 2 1 : 248 : 120 : 0.9
+T: 2 1 : 247 : 247 : 0.1
+T: 2 1 : 247 : 119 : 0.9
+T: 2 1 : 246 : 246 : 0.1
+T: 2 1 : 246 : 118 : 0.9
+T: 2 1 : 245 : 245 : 0.1
+T: 2 1 : 245 : 117 : 0.9
+T: 2 1 : 244 : 244 : 0.1
+T: 2 1 : 244 : 116 : 0.9
+T: 2 1 : 243 : 243 : 0.1
+T: 2 1 : 243 : 115 : 0.9
+T: 2 1 : 242 : 242 : 0.1
+T: 2 1 : 242 : 114 : 0.9
+T: 2 1 : 241 : 241 : 0.1
+T: 2 1 : 241 : 113 : 0.9
+T: 2 1 : 240 : 240 : 0.1
+T: 2 1 : 240 : 112 : 0.9
+T: 2 1 : 239 : 255 : 0.09
+T: 2 1 : 239 : 111 : 0.09
+T: 2 1 : 239 : 239 : 0.01
+T: 2 1 : 239 : 127 : 0.81
+T: 2 1 : 238 : 254 : 0.09
+T: 2 1 : 238 : 110 : 0.09
+T: 2 1 : 238 : 238 : 0.01
+T: 2 1 : 238 : 126 : 0.81
+T: 2 1 : 237 : 253 : 0.09
+T: 2 1 : 237 : 109 : 0.09
+T: 2 1 : 237 : 237 : 0.01
+T: 2 1 : 237 : 125 : 0.81
+T: 2 1 : 236 : 252 : 0.09
+T: 2 1 : 236 : 108 : 0.09
+T: 2 1 : 236 : 236 : 0.01
+T: 2 1 : 236 : 124 : 0.81
+T: 2 1 : 235 : 251 : 0.09
+T: 2 1 : 235 : 107 : 0.09
+T: 2 1 : 235 : 235 : 0.01
+T: 2 1 : 235 : 123 : 0.81
+T: 2 1 : 234 : 250 : 0.09
+T: 2 1 : 234 : 106 : 0.09
+T: 2 1 : 234 : 234 : 0.01
+T: 2 1 : 234 : 122 : 0.81
+T: 2 1 : 233 : 249 : 0.09
+T: 2 1 : 233 : 105 : 0.09
+T: 2 1 : 233 : 233 : 0.01
+T: 2 1 : 233 : 121 : 0.81
+T: 2 1 : 232 : 248 : 0.09
+T: 2 1 : 232 : 104 : 0.09
+T: 2 1 : 232 : 232 : 0.01
+T: 2 1 : 232 : 120 : 0.81
+T: 2 1 : 231 : 247 : 0.09
+T: 2 1 : 231 : 103 : 0.09
+T: 2 1 : 231 : 231 : 0.01
+T: 2 1 : 231 : 119 : 0.81
+T: 2 1 : 230 : 246 : 0.09
+T: 2 1 : 230 : 102 : 0.09
+T: 2 1 : 230 : 230 : 0.01
+T: 2 1 : 230 : 118 : 0.81
+T: 2 1 : 229 : 245 : 0.09
+T: 2 1 : 229 : 101 : 0.09
+T: 2 1 : 229 : 229 : 0.01
+T: 2 1 : 229 : 117 : 0.81
+T: 2 1 : 228 : 244 : 0.09
+T: 2 1 : 228 : 100 : 0.09
+T: 2 1 : 228 : 228 : 0.01
+T: 2 1 : 228 : 116 : 0.81
+T: 2 1 : 227 : 243 : 0.09
+T: 2 1 : 227 : 99 : 0.09
+T: 2 1 : 227 : 227 : 0.01
+T: 2 1 : 227 : 115 : 0.81
+T: 2 1 : 226 : 242 : 0.09
+T: 2 1 : 226 : 98 : 0.09
+T: 2 1 : 226 : 226 : 0.01
+T: 2 1 : 226 : 114 : 0.81
+T: 2 1 : 225 : 241 : 0.09
+T: 2 1 : 225 : 97 : 0.09
+T: 2 1 : 225 : 225 : 0.01
+T: 2 1 : 225 : 113 : 0.81
+T: 2 1 : 224 : 240 : 0.09
+T: 2 1 : 224 : 96 : 0.09
+T: 2 1 : 224 : 224 : 0.01
+T: 2 1 : 224 : 112 : 0.81
+T: 2 1 : 223 : 223 : 0.1
+T: 2 1 : 223 : 95 : 0.9
+T: 2 1 : 222 : 222 : 0.1
+T: 2 1 : 222 : 94 : 0.9
+T: 2 1 : 221 : 221 : 0.1
+T: 2 1 : 221 : 93 : 0.9
+T: 2 1 : 220 : 220 : 0.1
+T: 2 1 : 220 : 92 : 0.9
+T: 2 1 : 219 : 219 : 0.1
+T: 2 1 : 219 : 91 : 0.9
+T: 2 1 : 218 : 218 : 0.1
+T: 2 1 : 218 : 90 : 0.9
+T: 2 1 : 217 : 217 : 0.1
+T: 2 1 : 217 : 89 : 0.9
+T: 2 1 : 216 : 216 : 0.1
+T: 2 1 : 216 : 88 : 0.9
+T: 2 1 : 215 : 215 : 0.1
+T: 2 1 : 215 : 87 : 0.9
+T: 2 1 : 214 : 214 : 0.1
+T: 2 1 : 214 : 86 : 0.9
+T: 2 1 : 213 : 213 : 0.1
+T: 2 1 : 213 : 85 : 0.9
+T: 2 1 : 212 : 212 : 0.1
+T: 2 1 : 212 : 84 : 0.9
+T: 2 1 : 211 : 211 : 0.1
+T: 2 1 : 211 : 83 : 0.9
+T: 2 1 : 210 : 210 : 0.1
+T: 2 1 : 210 : 82 : 0.9
+T: 2 1 : 209 : 209 : 0.1
+T: 2 1 : 209 : 81 : 0.9
+T: 2 1 : 208 : 208 : 0.1
+T: 2 1 : 208 : 80 : 0.9
+T: 2 1 : 207 : 223 : 0.09
+T: 2 1 : 207 : 79 : 0.09
+T: 2 1 : 207 : 207 : 0.01
+T: 2 1 : 207 : 95 : 0.81
+T: 2 1 : 206 : 222 : 0.09
+T: 2 1 : 206 : 78 : 0.09
+T: 2 1 : 206 : 206 : 0.01
+T: 2 1 : 206 : 94 : 0.81
+T: 2 1 : 205 : 221 : 0.09
+T: 2 1 : 205 : 77 : 0.09
+T: 2 1 : 205 : 205 : 0.01
+T: 2 1 : 205 : 93 : 0.81
+T: 2 1 : 204 : 220 : 0.09
+T: 2 1 : 204 : 76 : 0.09
+T: 2 1 : 204 : 204 : 0.01
+T: 2 1 : 204 : 92 : 0.81
+T: 2 1 : 203 : 219 : 0.09
+T: 2 1 : 203 : 75 : 0.09
+T: 2 1 : 203 : 203 : 0.01
+T: 2 1 : 203 : 91 : 0.81
+T: 2 1 : 202 : 218 : 0.09
+T: 2 1 : 202 : 74 : 0.09
+T: 2 1 : 202 : 202 : 0.01
+T: 2 1 : 202 : 90 : 0.81
+T: 2 1 : 201 : 217 : 0.09
+T: 2 1 : 201 : 73 : 0.09
+T: 2 1 : 201 : 201 : 0.01
+T: 2 1 : 201 : 89 : 0.81
+T: 2 1 : 200 : 216 : 0.09
+T: 2 1 : 200 : 72 : 0.09
+T: 2 1 : 200 : 200 : 0.01
+T: 2 1 : 200 : 88 : 0.81
+T: 2 1 : 199 : 215 : 0.09
+T: 2 1 : 199 : 71 : 0.09
+T: 2 1 : 199 : 199 : 0.01
+T: 2 1 : 199 : 87 : 0.81
+T: 2 1 : 198 : 214 : 0.09
+T: 2 1 : 198 : 70 : 0.09
+T: 2 1 : 198 : 198 : 0.01
+T: 2 1 : 198 : 86 : 0.81
+T: 2 1 : 197 : 213 : 0.09
+T: 2 1 : 197 : 69 : 0.09
+T: 2 1 : 197 : 197 : 0.01
+T: 2 1 : 197 : 85 : 0.81
+T: 2 1 : 196 : 212 : 0.09
+T: 2 1 : 196 : 68 : 0.09
+T: 2 1 : 196 : 196 : 0.01
+T: 2 1 : 196 : 84 : 0.81
+T: 2 1 : 195 : 211 : 0.09
+T: 2 1 : 195 : 67 : 0.09
+T: 2 1 : 195 : 195 : 0.01
+T: 2 1 : 195 : 83 : 0.81
+T: 2 1 : 194 : 210 : 0.09
+T: 2 1 : 194 : 66 : 0.09
+T: 2 1 : 194 : 194 : 0.01
+T: 2 1 : 194 : 82 : 0.81
+T: 2 1 : 193 : 209 : 0.09
+T: 2 1 : 193 : 65 : 0.09
+T: 2 1 : 193 : 193 : 0.01
+T: 2 1 : 193 : 81 : 0.81
+T: 2 1 : 192 : 208 : 0.09
+T: 2 1 : 192 : 64 : 0.09
+T: 2 1 : 192 : 192 : 0.01
+T: 2 1 : 192 : 80 : 0.81
+T: 2 1 : 191 : 191 : 0.1
+T: 2 1 : 191 : 63 : 0.9
+T: 2 1 : 190 : 190 : 0.1
+T: 2 1 : 190 : 62 : 0.9
+T: 2 1 : 189 : 189 : 0.1
+T: 2 1 : 189 : 61 : 0.9
+T: 2 1 : 188 : 188 : 0.1
+T: 2 1 : 188 : 60 : 0.9
+T: 2 1 : 187 : 187 : 0.1
+T: 2 1 : 187 : 59 : 0.9
+T: 2 1 : 186 : 186 : 0.1
+T: 2 1 : 186 : 58 : 0.9
+T: 2 1 : 185 : 185 : 0.1
+T: 2 1 : 185 : 57 : 0.9
+T: 2 1 : 184 : 184 : 0.1
+T: 2 1 : 184 : 56 : 0.9
+T: 2 1 : 183 : 183 : 0.1
+T: 2 1 : 183 : 55 : 0.9
+T: 2 1 : 182 : 182 : 0.1
+T: 2 1 : 182 : 54 : 0.9
+T: 2 1 : 181 : 181 : 0.1
+T: 2 1 : 181 : 53 : 0.9
+T: 2 1 : 180 : 180 : 0.1
+T: 2 1 : 180 : 52 : 0.9
+T: 2 1 : 179 : 179 : 0.1
+T: 2 1 : 179 : 51 : 0.9
+T: 2 1 : 178 : 178 : 0.1
+T: 2 1 : 178 : 50 : 0.9
+T: 2 1 : 177 : 177 : 0.1
+T: 2 1 : 177 : 49 : 0.9
+T: 2 1 : 176 : 176 : 0.1
+T: 2 1 : 176 : 48 : 0.9
+T: 2 1 : 175 : 191 : 0.09
+T: 2 1 : 175 : 47 : 0.09
+T: 2 1 : 175 : 175 : 0.01
+T: 2 1 : 175 : 63 : 0.81
+T: 2 1 : 174 : 190 : 0.09
+T: 2 1 : 174 : 46 : 0.09
+T: 2 1 : 174 : 174 : 0.01
+T: 2 1 : 174 : 62 : 0.81
+T: 2 1 : 173 : 189 : 0.09
+T: 2 1 : 173 : 45 : 0.09
+T: 2 1 : 173 : 173 : 0.01
+T: 2 1 : 173 : 61 : 0.81
+T: 2 1 : 172 : 188 : 0.09
+T: 2 1 : 172 : 44 : 0.09
+T: 2 1 : 172 : 172 : 0.01
+T: 2 1 : 172 : 60 : 0.81
+T: 2 1 : 171 : 187 : 0.09
+T: 2 1 : 171 : 43 : 0.09
+T: 2 1 : 171 : 171 : 0.01
+T: 2 1 : 171 : 59 : 0.81
+T: 2 1 : 170 : 186 : 0.09
+T: 2 1 : 170 : 42 : 0.09
+T: 2 1 : 170 : 170 : 0.01
+T: 2 1 : 170 : 58 : 0.81
+T: 2 1 : 169 : 185 : 0.09
+T: 2 1 : 169 : 41 : 0.09
+T: 2 1 : 169 : 169 : 0.01
+T: 2 1 : 169 : 57 : 0.81
+T: 2 1 : 168 : 184 : 0.09
+T: 2 1 : 168 : 40 : 0.09
+T: 2 1 : 168 : 168 : 0.01
+T: 2 1 : 168 : 56 : 0.81
+T: 2 1 : 167 : 183 : 0.09
+T: 2 1 : 167 : 39 : 0.09
+T: 2 1 : 167 : 167 : 0.01
+T: 2 1 : 167 : 55 : 0.81
+T: 2 1 : 166 : 182 : 0.09
+T: 2 1 : 166 : 38 : 0.09
+T: 2 1 : 166 : 166 : 0.01
+T: 2 1 : 166 : 54 : 0.81
+T: 2 1 : 77 : 93 : 0.9
+T: 2 1 : 77 : 77 : 0.1
+T: 2 1 : 76 : 92 : 0.9
+T: 2 1 : 76 : 76 : 0.1
+T: 2 1 : 75 : 91 : 0.9
+T: 2 1 : 75 : 75 : 0.1
+T: 2 1 : 74 : 90 : 0.9
+T: 2 1 : 74 : 74 : 0.1
+T: 2 1 : 73 : 89 : 0.9
+T: 2 1 : 73 : 73 : 0.1
+T: 2 1 : 72 : 88 : 0.9
+T: 2 1 : 72 : 72 : 0.1
+T: 2 1 : 71 : 87 : 0.9
+T: 2 1 : 71 : 71 : 0.1
+T: 2 1 : 70 : 86 : 0.9
+T: 2 1 : 70 : 70 : 0.1
+T: 2 1 : 69 : 85 : 0.9
+T: 2 1 : 69 : 69 : 0.1
+T: 2 1 : 68 : 84 : 0.9
+T: 2 1 : 68 : 68 : 0.1
+T: 2 1 : 67 : 83 : 0.9
+T: 2 1 : 67 : 67 : 0.1
+T: 2 1 : 66 : 82 : 0.9
+T: 2 1 : 66 : 66 : 0.1
+T: 2 1 : 65 : 81 : 0.9
+T: 2 1 : 65 : 65 : 0.1
+T: 2 1 : 64 : 80 : 0.9
+T: 2 1 : 64 : 64 : 0.1
+T: 2 1 : 63 : 63 : 1
+T: 2 1 : 62 : 62 : 1
+T: 2 1 : 61 : 61 : 1
+T: 2 1 : 60 : 60 : 1
+T: 2 1 : 59 : 59 : 1
+T: 2 1 : 58 : 58 : 1
+T: 2 1 : 57 : 57 : 1
+T: 2 1 : 56 : 56 : 1
+T: 2 1 : 55 : 55 : 1
+T: 2 1 : 54 : 54 : 1
+T: 2 1 : 53 : 53 : 1
+T: 2 1 : 52 : 52 : 1
+T: 2 1 : 51 : 51 : 1
+T: 2 1 : 50 : 50 : 1
+T: 2 1 : 49 : 49 : 1
+T: 2 1 : 48 : 48 : 1
+T: 2 1 : 47 : 63 : 0.9
+T: 2 1 : 47 : 47 : 0.1
+T: 2 1 : 46 : 62 : 0.9
+T: 2 1 : 46 : 46 : 0.1
+T: 2 1 : 45 : 61 : 0.9
+T: 2 1 : 45 : 45 : 0.1
+T: 2 1 : 44 : 60 : 0.9
+T: 2 1 : 44 : 44 : 0.1
+T: 2 1 : 43 : 59 : 0.9
+T: 2 1 : 43 : 43 : 0.1
+T: 2 1 : 42 : 58 : 0.9
+T: 2 1 : 42 : 42 : 0.1
+T: 2 1 : 41 : 57 : 0.9
+T: 2 1 : 41 : 41 : 0.1
+T: 2 1 : 40 : 56 : 0.9
+T: 2 1 : 40 : 40 : 0.1
+T: 2 1 : 39 : 55 : 0.9
+T: 2 1 : 39 : 39 : 0.1
+T: 2 1 : 38 : 54 : 0.9
+T: 2 1 : 38 : 38 : 0.1
+T: 2 1 : 37 : 53 : 0.9
+T: 2 1 : 37 : 37 : 0.1
+T: 2 1 : 36 : 52 : 0.9
+T: 2 1 : 36 : 36 : 0.1
+T: 2 1 : 15 : 31 : 0.9
+T: 2 1 : 15 : 15 : 0.1
+T: 2 1 : 14 : 30 : 0.9
+T: 2 1 : 14 : 14 : 0.1
+T: 2 1 : 13 : 29 : 0.9
+T: 2 1 : 13 : 13 : 0.1
+T: 2 1 : 12 : 28 : 0.9
+T: 2 1 : 12 : 12 : 0.1
+T: 2 1 : 11 : 27 : 0.9
+T: 2 1 : 11 : 11 : 0.1
+T: 2 1 : 10 : 26 : 0.9
+T: 2 1 : 10 : 10 : 0.1
+T: 2 1 : 9 : 25 : 0.9
+T: 2 1 : 9 : 9 : 0.1
+T: 2 1 : 8 : 24 : 0.9
+T: 2 1 : 8 : 8 : 0.1
+T: 2 1 : 7 : 23 : 0.9
+T: 2 1 : 7 : 7 : 0.1
+T: 2 1 : 6 : 22 : 0.9
+T: 2 1 : 6 : 6 : 0.1
+T: 2 1 : 1 : 17 : 0.9
+T: 2 1 : 1 : 1 : 0.1
+T: 2 1 : 0 : 16 : 0.9
+T: 2 1 : 0 : 0 : 0.1
+T: 2 1 : 2 : 18 : 0.9
+T: 2 1 : 2 : 2 : 0.1
+T: 2 1 : 3 : 19 : 0.9
+T: 2 1 : 3 : 3 : 0.1
+T: 2 1 : 4 : 20 : 0.9
+T: 2 1 : 4 : 4 : 0.1
+T: 2 1 : 5 : 21 : 0.9
+T: 2 1 : 5 : 5 : 0.1
+T: 2 1 : 16 : 16 : 1
+T: 2 1 : 17 : 17 : 1
+T: 2 1 : 18 : 18 : 1
+T: 2 1 : 19 : 19 : 1
+T: 2 1 : 20 : 20 : 1
+T: 2 1 : 21 : 21 : 1
+T: 2 1 : 22 : 22 : 1
+T: 2 1 : 23 : 23 : 1
+T: 2 1 : 24 : 24 : 1
+T: 2 1 : 25 : 25 : 1
+T: 2 1 : 26 : 26 : 1
+T: 2 1 : 27 : 27 : 1
+T: 2 1 : 28 : 28 : 1
+T: 2 1 : 29 : 29 : 1
+T: 2 1 : 30 : 30 : 1
+T: 2 1 : 31 : 31 : 1
+T: 2 1 : 32 : 48 : 0.9
+T: 2 1 : 32 : 32 : 0.1
+T: 2 1 : 33 : 49 : 0.9
+T: 2 1 : 33 : 33 : 0.1
+T: 2 1 : 34 : 50 : 0.9
+T: 2 1 : 34 : 34 : 0.1
+T: 2 1 : 35 : 51 : 0.9
+T: 2 1 : 35 : 35 : 0.1
+T: 2 1 : 78 : 94 : 0.9
+T: 2 1 : 78 : 78 : 0.1
+T: 2 1 : 79 : 95 : 0.9
+T: 2 1 : 79 : 79 : 0.1
+T: 2 1 : 80 : 80 : 1
+T: 2 1 : 81 : 81 : 1
+T: 2 1 : 82 : 82 : 1
+T: 2 1 : 83 : 83 : 1
+T: 2 1 : 84 : 84 : 1
+T: 2 1 : 85 : 85 : 1
+T: 2 1 : 86 : 86 : 1
+T: 2 1 : 87 : 87 : 1
+T: 2 1 : 88 : 88 : 1
+T: 2 1 : 89 : 89 : 1
+T: 2 1 : 90 : 90 : 1
+T: 2 1 : 91 : 91 : 1
+T: 2 1 : 92 : 92 : 1
+T: 2 1 : 93 : 93 : 1
+T: 2 1 : 94 : 94 : 1
+T: 2 1 : 95 : 95 : 1
+T: 2 1 : 96 : 112 : 0.9
+T: 2 1 : 96 : 96 : 0.1
+T: 2 1 : 97 : 113 : 0.9
+T: 2 1 : 97 : 97 : 0.1
+T: 2 1 : 98 : 114 : 0.9
+T: 2 1 : 98 : 98 : 0.1
+T: 2 1 : 99 : 115 : 0.9
+T: 2 1 : 99 : 99 : 0.1
+T: 2 1 : 100 : 116 : 0.9
+T: 2 1 : 100 : 100 : 0.1
+T: 2 1 : 101 : 117 : 0.9
+T: 2 1 : 101 : 101 : 0.1
+T: 2 1 : 102 : 118 : 0.9
+T: 2 1 : 102 : 102 : 0.1
+T: 2 1 : 103 : 119 : 0.9
+T: 2 1 : 103 : 103 : 0.1
+T: 2 1 : 104 : 120 : 0.9
+T: 2 1 : 104 : 104 : 0.1
+T: 2 1 : 105 : 121 : 0.9
+T: 2 1 : 105 : 105 : 0.1
+T: 2 1 : 106 : 122 : 0.9
+T: 2 1 : 106 : 106 : 0.1
+T: 2 1 : 107 : 123 : 0.9
+T: 2 1 : 107 : 107 : 0.1
+T: 2 1 : 108 : 124 : 0.9
+T: 2 1 : 108 : 108 : 0.1
+T: 2 1 : 109 : 125 : 0.9
+T: 2 1 : 109 : 109 : 0.1
+T: 2 1 : 110 : 126 : 0.9
+T: 2 1 : 110 : 110 : 0.1
+T: 2 1 : 111 : 127 : 0.9
+T: 2 1 : 111 : 111 : 0.1
+T: 2 1 : 112 : 112 : 1
+T: 2 1 : 113 : 113 : 1
+T: 2 1 : 114 : 114 : 1
+T: 2 1 : 115 : 115 : 1
+T: 2 1 : 116 : 116 : 1
+T: 2 1 : 117 : 117 : 1
+T: 2 1 : 118 : 118 : 1
+T: 2 1 : 119 : 119 : 1
+T: 2 1 : 120 : 120 : 1
+T: 2 1 : 121 : 121 : 1
+T: 2 1 : 122 : 122 : 1
+T: 2 1 : 123 : 123 : 1
+T: 2 1 : 124 : 124 : 1
+T: 2 1 : 125 : 125 : 1
+T: 2 1 : 126 : 126 : 1
+T: 2 1 : 127 : 127 : 1
+T: 2 1 : 128 : 144 : 0.09
+T: 2 1 : 128 : 0 : 0.09
+T: 2 1 : 128 : 128 : 0.01
+T: 2 1 : 128 : 16 : 0.81
+T: 2 1 : 129 : 145 : 0.09
+T: 2 1 : 129 : 1 : 0.09
+T: 2 1 : 129 : 129 : 0.01
+T: 2 1 : 129 : 17 : 0.81
+T: 2 1 : 130 : 146 : 0.09
+T: 2 1 : 130 : 2 : 0.09
+T: 2 1 : 130 : 130 : 0.01
+T: 2 1 : 130 : 18 : 0.81
+T: 2 1 : 131 : 147 : 0.09
+T: 2 1 : 131 : 3 : 0.09
+T: 2 1 : 131 : 131 : 0.01
+T: 2 1 : 131 : 19 : 0.81
+T: 2 1 : 132 : 148 : 0.09
+T: 2 1 : 132 : 4 : 0.09
+T: 2 1 : 132 : 132 : 0.01
+T: 2 1 : 132 : 20 : 0.81
+T: 2 1 : 133 : 149 : 0.09
+T: 2 1 : 133 : 5 : 0.09
+T: 2 1 : 133 : 133 : 0.01
+T: 2 1 : 133 : 21 : 0.81
+T: 2 1 : 134 : 150 : 0.09
+T: 2 1 : 134 : 6 : 0.09
+T: 2 1 : 134 : 134 : 0.01
+T: 2 1 : 134 : 22 : 0.81
+T: 2 1 : 135 : 151 : 0.09
+T: 2 1 : 135 : 7 : 0.09
+T: 2 1 : 135 : 135 : 0.01
+T: 2 1 : 135 : 23 : 0.81
+T: 2 1 : 136 : 152 : 0.09
+T: 2 1 : 136 : 8 : 0.09
+T: 2 1 : 136 : 136 : 0.01
+T: 2 1 : 136 : 24 : 0.81
+T: 2 1 : 137 : 153 : 0.09
+T: 2 1 : 137 : 9 : 0.09
+T: 2 1 : 137 : 137 : 0.01
+T: 2 1 : 137 : 25 : 0.81
+T: 2 1 : 138 : 154 : 0.09
+T: 2 1 : 138 : 10 : 0.09
+T: 2 1 : 138 : 138 : 0.01
+T: 2 1 : 138 : 26 : 0.81
+T: 2 1 : 139 : 155 : 0.09
+T: 2 1 : 139 : 11 : 0.09
+T: 2 1 : 139 : 139 : 0.01
+T: 2 1 : 139 : 27 : 0.81
+T: 2 1 : 140 : 156 : 0.09
+T: 2 1 : 140 : 12 : 0.09
+T: 2 1 : 140 : 140 : 0.01
+T: 2 1 : 140 : 28 : 0.81
+T: 2 1 : 141 : 157 : 0.09
+T: 2 1 : 141 : 13 : 0.09
+T: 2 1 : 141 : 141 : 0.01
+T: 2 1 : 141 : 29 : 0.81
+T: 2 1 : 142 : 158 : 0.09
+T: 2 1 : 142 : 14 : 0.09
+T: 2 1 : 142 : 142 : 0.01
+T: 2 1 : 142 : 30 : 0.81
+T: 2 1 : 143 : 159 : 0.09
+T: 2 1 : 143 : 15 : 0.09
+T: 2 1 : 143 : 143 : 0.01
+T: 2 1 : 143 : 31 : 0.81
+T: 2 1 : 144 : 144 : 0.1
+T: 2 1 : 144 : 16 : 0.9
+T: 2 1 : 145 : 145 : 0.1
+T: 2 1 : 145 : 17 : 0.9
+T: 2 1 : 146 : 146 : 0.1
+T: 2 1 : 146 : 18 : 0.9
+T: 2 1 : 147 : 147 : 0.1
+T: 2 1 : 147 : 19 : 0.9
+T: 2 1 : 148 : 148 : 0.1
+T: 2 1 : 148 : 20 : 0.9
+T: 2 1 : 149 : 149 : 0.1
+T: 2 1 : 149 : 21 : 0.9
+T: 2 1 : 150 : 150 : 0.1
+T: 2 1 : 150 : 22 : 0.9
+T: 2 1 : 151 : 151 : 0.1
+T: 2 1 : 151 : 23 : 0.9
+T: 2 1 : 152 : 152 : 0.1
+T: 2 1 : 152 : 24 : 0.9
+T: 2 1 : 153 : 153 : 0.1
+T: 2 1 : 153 : 25 : 0.9
+T: 2 1 : 154 : 154 : 0.1
+T: 2 1 : 154 : 26 : 0.9
+T: 2 1 : 155 : 155 : 0.1
+T: 2 1 : 155 : 27 : 0.9
+T: 2 1 : 156 : 156 : 0.1
+T: 2 1 : 156 : 28 : 0.9
+T: 2 1 : 157 : 157 : 0.1
+T: 2 1 : 157 : 29 : 0.9
+T: 2 1 : 158 : 158 : 0.1
+T: 2 1 : 158 : 30 : 0.9
+T: 2 1 : 159 : 159 : 0.1
+T: 2 1 : 159 : 31 : 0.9
+T: 2 1 : 160 : 176 : 0.09
+T: 2 1 : 160 : 32 : 0.09
+T: 2 1 : 160 : 160 : 0.01
+T: 2 1 : 160 : 48 : 0.81
+T: 2 1 : 161 : 177 : 0.09
+T: 2 1 : 161 : 33 : 0.09
+T: 2 1 : 161 : 161 : 0.01
+T: 2 1 : 161 : 49 : 0.81
+T: 2 1 : 162 : 178 : 0.09
+T: 2 1 : 162 : 34 : 0.09
+T: 2 1 : 162 : 162 : 0.01
+T: 2 1 : 162 : 50 : 0.81
+T: 2 1 : 163 : 179 : 0.09
+T: 2 1 : 163 : 35 : 0.09
+T: 2 1 : 163 : 163 : 0.01
+T: 2 1 : 163 : 51 : 0.81
+T: 2 1 : 164 : 180 : 0.09
+T: 2 1 : 164 : 36 : 0.09
+T: 2 1 : 164 : 164 : 0.01
+T: 2 1 : 164 : 52 : 0.81
+T: 2 1 : 165 : 181 : 0.09
+T: 2 1 : 165 : 37 : 0.09
+T: 2 1 : 165 : 165 : 0.01
+T: 2 1 : 165 : 53 : 0.81
+T: 2 2 : 255 : 255 : 0.01
+T: 2 2 : 255 : 223 : 0.09
+T: 2 2 : 255 : 95 : 0.81
+T: 2 2 : 255 : 127 : 0.09
+T: 2 2 : 254 : 254 : 0.01
+T: 2 2 : 254 : 222 : 0.09
+T: 2 2 : 254 : 94 : 0.81
+T: 2 2 : 254 : 126 : 0.09
+T: 2 2 : 253 : 253 : 0.01
+T: 2 2 : 253 : 221 : 0.09
+T: 2 2 : 253 : 93 : 0.81
+T: 2 2 : 253 : 125 : 0.09
+T: 2 2 : 252 : 252 : 0.01
+T: 2 2 : 252 : 220 : 0.09
+T: 2 2 : 252 : 92 : 0.81
+T: 2 2 : 252 : 124 : 0.09
+T: 2 2 : 251 : 251 : 0.01
+T: 2 2 : 251 : 219 : 0.09
+T: 2 2 : 251 : 91 : 0.81
+T: 2 2 : 251 : 123 : 0.09
+T: 2 2 : 250 : 250 : 0.01
+T: 2 2 : 250 : 218 : 0.09
+T: 2 2 : 250 : 90 : 0.81
+T: 2 2 : 250 : 122 : 0.09
+T: 2 2 : 249 : 249 : 0.01
+T: 2 2 : 249 : 217 : 0.09
+T: 2 2 : 249 : 89 : 0.81
+T: 2 2 : 249 : 121 : 0.09
+T: 2 2 : 248 : 248 : 0.01
+T: 2 2 : 248 : 216 : 0.09
+T: 2 2 : 248 : 88 : 0.81
+T: 2 2 : 248 : 120 : 0.09
+T: 2 2 : 247 : 247 : 0.01
+T: 2 2 : 247 : 215 : 0.09
+T: 2 2 : 247 : 87 : 0.81
+T: 2 2 : 247 : 119 : 0.09
+T: 2 2 : 246 : 246 : 0.01
+T: 2 2 : 246 : 214 : 0.09
+T: 2 2 : 246 : 86 : 0.81
+T: 2 2 : 246 : 118 : 0.09
+T: 2 2 : 245 : 245 : 0.01
+T: 2 2 : 245 : 213 : 0.09
+T: 2 2 : 245 : 85 : 0.81
+T: 2 2 : 245 : 117 : 0.09
+T: 2 2 : 244 : 244 : 0.01
+T: 2 2 : 244 : 212 : 0.09
+T: 2 2 : 244 : 84 : 0.81
+T: 2 2 : 244 : 116 : 0.09
+T: 2 2 : 243 : 243 : 0.01
+T: 2 2 : 243 : 211 : 0.09
+T: 2 2 : 243 : 83 : 0.81
+T: 2 2 : 243 : 115 : 0.09
+T: 2 2 : 242 : 242 : 0.01
+T: 2 2 : 242 : 210 : 0.09
+T: 2 2 : 242 : 82 : 0.81
+T: 2 2 : 242 : 114 : 0.09
+T: 2 2 : 241 : 241 : 0.01
+T: 2 2 : 241 : 209 : 0.09
+T: 2 2 : 241 : 81 : 0.81
+T: 2 2 : 241 : 113 : 0.09
+T: 2 2 : 240 : 240 : 0.01
+T: 2 2 : 240 : 208 : 0.09
+T: 2 2 : 240 : 80 : 0.81
+T: 2 2 : 240 : 112 : 0.09
+T: 2 2 : 239 : 239 : 0.01
+T: 2 2 : 239 : 207 : 0.09
+T: 2 2 : 239 : 79 : 0.81
+T: 2 2 : 239 : 111 : 0.09
+T: 2 2 : 238 : 238 : 0.01
+T: 2 2 : 238 : 206 : 0.09
+T: 2 2 : 238 : 78 : 0.81
+T: 2 2 : 238 : 110 : 0.09
+T: 2 2 : 237 : 237 : 0.01
+T: 2 2 : 237 : 205 : 0.09
+T: 2 2 : 237 : 77 : 0.81
+T: 2 2 : 237 : 109 : 0.09
+T: 2 2 : 236 : 236 : 0.01
+T: 2 2 : 236 : 204 : 0.09
+T: 2 2 : 236 : 76 : 0.81
+T: 2 2 : 236 : 108 : 0.09
+T: 2 2 : 235 : 235 : 0.01
+T: 2 2 : 235 : 203 : 0.09
+T: 2 2 : 235 : 75 : 0.81
+T: 2 2 : 235 : 107 : 0.09
+T: 2 2 : 234 : 234 : 0.01
+T: 2 2 : 234 : 202 : 0.09
+T: 2 2 : 234 : 74 : 0.81
+T: 2 2 : 234 : 106 : 0.09
+T: 2 2 : 233 : 233 : 0.01
+T: 2 2 : 233 : 201 : 0.09
+T: 2 2 : 233 : 73 : 0.81
+T: 2 2 : 233 : 105 : 0.09
+T: 2 2 : 232 : 232 : 0.01
+T: 2 2 : 232 : 200 : 0.09
+T: 2 2 : 232 : 72 : 0.81
+T: 2 2 : 232 : 104 : 0.09
+T: 2 2 : 231 : 231 : 0.01
+T: 2 2 : 231 : 199 : 0.09
+T: 2 2 : 231 : 71 : 0.81
+T: 2 2 : 231 : 103 : 0.09
+T: 2 2 : 230 : 230 : 0.01
+T: 2 2 : 230 : 198 : 0.09
+T: 2 2 : 230 : 70 : 0.81
+T: 2 2 : 230 : 102 : 0.09
+T: 2 2 : 229 : 229 : 0.01
+T: 2 2 : 229 : 197 : 0.09
+T: 2 2 : 229 : 69 : 0.81
+T: 2 2 : 229 : 101 : 0.09
+T: 2 2 : 228 : 228 : 0.01
+T: 2 2 : 228 : 196 : 0.09
+T: 2 2 : 228 : 68 : 0.81
+T: 2 2 : 228 : 100 : 0.09
+T: 2 2 : 227 : 227 : 0.01
+T: 2 2 : 227 : 195 : 0.09
+T: 2 2 : 227 : 67 : 0.81
+T: 2 2 : 227 : 99 : 0.09
+T: 2 2 : 226 : 226 : 0.01
+T: 2 2 : 226 : 194 : 0.09
+T: 2 2 : 226 : 66 : 0.81
+T: 2 2 : 226 : 98 : 0.09
+T: 2 2 : 225 : 225 : 0.01
+T: 2 2 : 225 : 193 : 0.09
+T: 2 2 : 225 : 65 : 0.81
+T: 2 2 : 225 : 97 : 0.09
+T: 2 2 : 224 : 224 : 0.01
+T: 2 2 : 224 : 192 : 0.09
+T: 2 2 : 224 : 64 : 0.81
+T: 2 2 : 224 : 96 : 0.09
+T: 2 2 : 223 : 223 : 0.1
+T: 2 2 : 223 : 95 : 0.9
+T: 2 2 : 222 : 222 : 0.1
+T: 2 2 : 222 : 94 : 0.9
+T: 2 2 : 221 : 221 : 0.1
+T: 2 2 : 221 : 93 : 0.9
+T: 2 2 : 220 : 220 : 0.1
+T: 2 2 : 220 : 92 : 0.9
+T: 2 2 : 219 : 219 : 0.1
+T: 2 2 : 219 : 91 : 0.9
+T: 2 2 : 218 : 218 : 0.1
+T: 2 2 : 218 : 90 : 0.9
+T: 2 2 : 217 : 217 : 0.1
+T: 2 2 : 217 : 89 : 0.9
+T: 2 2 : 216 : 216 : 0.1
+T: 2 2 : 216 : 88 : 0.9
+T: 2 2 : 215 : 215 : 0.1
+T: 2 2 : 215 : 87 : 0.9
+T: 2 2 : 214 : 214 : 0.1
+T: 2 2 : 214 : 86 : 0.9
+T: 2 2 : 213 : 213 : 0.1
+T: 2 2 : 213 : 85 : 0.9
+T: 2 2 : 212 : 212 : 0.1
+T: 2 2 : 212 : 84 : 0.9
+T: 2 2 : 211 : 211 : 0.1
+T: 2 2 : 211 : 83 : 0.9
+T: 2 2 : 210 : 210 : 0.1
+T: 2 2 : 210 : 82 : 0.9
+T: 2 2 : 209 : 209 : 0.1
+T: 2 2 : 209 : 81 : 0.9
+T: 2 2 : 208 : 208 : 0.1
+T: 2 2 : 208 : 80 : 0.9
+T: 2 2 : 207 : 207 : 0.1
+T: 2 2 : 207 : 79 : 0.9
+T: 2 2 : 206 : 206 : 0.1
+T: 2 2 : 206 : 78 : 0.9
+T: 2 2 : 205 : 205 : 0.1
+T: 2 2 : 205 : 77 : 0.9
+T: 2 2 : 204 : 204 : 0.1
+T: 2 2 : 204 : 76 : 0.9
+T: 2 2 : 203 : 203 : 0.1
+T: 2 2 : 203 : 75 : 0.9
+T: 2 2 : 202 : 202 : 0.1
+T: 2 2 : 202 : 74 : 0.9
+T: 2 2 : 201 : 201 : 0.1
+T: 2 2 : 201 : 73 : 0.9
+T: 2 2 : 200 : 200 : 0.1
+T: 2 2 : 200 : 72 : 0.9
+T: 2 2 : 199 : 199 : 0.1
+T: 2 2 : 199 : 71 : 0.9
+T: 2 2 : 198 : 198 : 0.1
+T: 2 2 : 198 : 70 : 0.9
+T: 2 2 : 197 : 197 : 0.1
+T: 2 2 : 197 : 69 : 0.9
+T: 2 2 : 196 : 196 : 0.1
+T: 2 2 : 196 : 68 : 0.9
+T: 2 2 : 195 : 195 : 0.1
+T: 2 2 : 195 : 67 : 0.9
+T: 2 2 : 194 : 194 : 0.1
+T: 2 2 : 194 : 66 : 0.9
+T: 2 2 : 193 : 193 : 0.1
+T: 2 2 : 193 : 65 : 0.9
+T: 2 2 : 192 : 192 : 0.1
+T: 2 2 : 192 : 64 : 0.9
+T: 2 2 : 191 : 191 : 0.01
+T: 2 2 : 191 : 159 : 0.09
+T: 2 2 : 191 : 31 : 0.81
+T: 2 2 : 191 : 63 : 0.09
+T: 2 2 : 190 : 190 : 0.01
+T: 2 2 : 190 : 158 : 0.09
+T: 2 2 : 190 : 30 : 0.81
+T: 2 2 : 190 : 62 : 0.09
+T: 2 2 : 189 : 189 : 0.01
+T: 2 2 : 189 : 157 : 0.09
+T: 2 2 : 189 : 29 : 0.81
+T: 2 2 : 189 : 61 : 0.09
+T: 2 2 : 188 : 188 : 0.01
+T: 2 2 : 188 : 156 : 0.09
+T: 2 2 : 188 : 28 : 0.81
+T: 2 2 : 188 : 60 : 0.09
+T: 2 2 : 187 : 187 : 0.01
+T: 2 2 : 187 : 155 : 0.09
+T: 2 2 : 187 : 27 : 0.81
+T: 2 2 : 187 : 59 : 0.09
+T: 2 2 : 186 : 186 : 0.01
+T: 2 2 : 186 : 154 : 0.09
+T: 2 2 : 186 : 26 : 0.81
+T: 2 2 : 186 : 58 : 0.09
+T: 2 2 : 185 : 185 : 0.01
+T: 2 2 : 185 : 153 : 0.09
+T: 2 2 : 185 : 25 : 0.81
+T: 2 2 : 185 : 57 : 0.09
+T: 2 2 : 184 : 184 : 0.01
+T: 2 2 : 184 : 152 : 0.09
+T: 2 2 : 184 : 24 : 0.81
+T: 2 2 : 184 : 56 : 0.09
+T: 2 2 : 183 : 183 : 0.01
+T: 2 2 : 183 : 151 : 0.09
+T: 2 2 : 183 : 23 : 0.81
+T: 2 2 : 183 : 55 : 0.09
+T: 2 2 : 182 : 182 : 0.01
+T: 2 2 : 182 : 150 : 0.09
+T: 2 2 : 182 : 22 : 0.81
+T: 2 2 : 182 : 54 : 0.09
+T: 2 2 : 181 : 181 : 0.01
+T: 2 2 : 181 : 149 : 0.09
+T: 2 2 : 181 : 21 : 0.81
+T: 2 2 : 181 : 53 : 0.09
+T: 2 2 : 180 : 180 : 0.01
+T: 2 2 : 180 : 148 : 0.09
+T: 2 2 : 180 : 20 : 0.81
+T: 2 2 : 180 : 52 : 0.09
+T: 2 2 : 179 : 179 : 0.01
+T: 2 2 : 179 : 147 : 0.09
+T: 2 2 : 179 : 19 : 0.81
+T: 2 2 : 179 : 51 : 0.09
+T: 2 2 : 178 : 178 : 0.01
+T: 2 2 : 178 : 146 : 0.09
+T: 2 2 : 178 : 18 : 0.81
+T: 2 2 : 178 : 50 : 0.09
+T: 2 2 : 177 : 177 : 0.01
+T: 2 2 : 177 : 145 : 0.09
+T: 2 2 : 177 : 17 : 0.81
+T: 2 2 : 177 : 49 : 0.09
+T: 2 2 : 176 : 176 : 0.01
+T: 2 2 : 176 : 144 : 0.09
+T: 2 2 : 176 : 16 : 0.81
+T: 2 2 : 176 : 48 : 0.09
+T: 2 2 : 175 : 175 : 0.01
+T: 2 2 : 175 : 143 : 0.09
+T: 2 2 : 175 : 15 : 0.81
+T: 2 2 : 175 : 47 : 0.09
+T: 2 2 : 174 : 174 : 0.01
+T: 2 2 : 174 : 142 : 0.09
+T: 2 2 : 174 : 14 : 0.81
+T: 2 2 : 174 : 46 : 0.09
+T: 2 2 : 173 : 173 : 0.01
+T: 2 2 : 173 : 141 : 0.09
+T: 2 2 : 173 : 13 : 0.81
+T: 2 2 : 173 : 45 : 0.09
+T: 2 2 : 172 : 172 : 0.01
+T: 2 2 : 172 : 140 : 0.09
+T: 2 2 : 172 : 12 : 0.81
+T: 2 2 : 172 : 44 : 0.09
+T: 2 2 : 171 : 171 : 0.01
+T: 2 2 : 171 : 139 : 0.09
+T: 2 2 : 171 : 11 : 0.81
+T: 2 2 : 171 : 43 : 0.09
+T: 2 2 : 170 : 170 : 0.01
+T: 2 2 : 170 : 138 : 0.09
+T: 2 2 : 170 : 10 : 0.81
+T: 2 2 : 170 : 42 : 0.09
+T: 2 2 : 169 : 169 : 0.01
+T: 2 2 : 169 : 137 : 0.09
+T: 2 2 : 169 : 9 : 0.81
+T: 2 2 : 169 : 41 : 0.09
+T: 2 2 : 168 : 168 : 0.01
+T: 2 2 : 168 : 136 : 0.09
+T: 2 2 : 168 : 8 : 0.81
+T: 2 2 : 168 : 40 : 0.09
+T: 2 2 : 167 : 167 : 0.01
+T: 2 2 : 167 : 135 : 0.09
+T: 2 2 : 167 : 7 : 0.81
+T: 2 2 : 167 : 39 : 0.09
+T: 2 2 : 166 : 166 : 0.01
+T: 2 2 : 166 : 134 : 0.09
+T: 2 2 : 166 : 6 : 0.81
+T: 2 2 : 166 : 38 : 0.09
+T: 2 2 : 77 : 77 : 1
+T: 2 2 : 76 : 76 : 1
+T: 2 2 : 75 : 75 : 1
+T: 2 2 : 74 : 74 : 1
+T: 2 2 : 73 : 73 : 1
+T: 2 2 : 72 : 72 : 1
+T: 2 2 : 71 : 71 : 1
+T: 2 2 : 70 : 70 : 1
+T: 2 2 : 69 : 69 : 1
+T: 2 2 : 68 : 68 : 1
+T: 2 2 : 67 : 67 : 1
+T: 2 2 : 66 : 66 : 1
+T: 2 2 : 65 : 65 : 1
+T: 2 2 : 64 : 64 : 1
+T: 2 2 : 63 : 63 : 0.1
+T: 2 2 : 63 : 31 : 0.9
+T: 2 2 : 62 : 62 : 0.1
+T: 2 2 : 62 : 30 : 0.9
+T: 2 2 : 61 : 61 : 0.1
+T: 2 2 : 61 : 29 : 0.9
+T: 2 2 : 60 : 60 : 0.1
+T: 2 2 : 60 : 28 : 0.9
+T: 2 2 : 59 : 59 : 0.1
+T: 2 2 : 59 : 27 : 0.9
+T: 2 2 : 58 : 58 : 0.1
+T: 2 2 : 58 : 26 : 0.9
+T: 2 2 : 57 : 57 : 0.1
+T: 2 2 : 57 : 25 : 0.9
+T: 2 2 : 56 : 56 : 0.1
+T: 2 2 : 56 : 24 : 0.9
+T: 2 2 : 55 : 55 : 0.1
+T: 2 2 : 55 : 23 : 0.9
+T: 2 2 : 54 : 54 : 0.1
+T: 2 2 : 54 : 22 : 0.9
+T: 2 2 : 53 : 53 : 0.1
+T: 2 2 : 53 : 21 : 0.9
+T: 2 2 : 52 : 52 : 0.1
+T: 2 2 : 52 : 20 : 0.9
+T: 2 2 : 51 : 51 : 0.1
+T: 2 2 : 51 : 19 : 0.9
+T: 2 2 : 50 : 50 : 0.1
+T: 2 2 : 50 : 18 : 0.9
+T: 2 2 : 49 : 49 : 0.1
+T: 2 2 : 49 : 17 : 0.9
+T: 2 2 : 48 : 48 : 0.1
+T: 2 2 : 48 : 16 : 0.9
+T: 2 2 : 47 : 47 : 0.1
+T: 2 2 : 47 : 15 : 0.9
+T: 2 2 : 46 : 46 : 0.1
+T: 2 2 : 46 : 14 : 0.9
+T: 2 2 : 45 : 45 : 0.1
+T: 2 2 : 45 : 13 : 0.9
+T: 2 2 : 44 : 44 : 0.1
+T: 2 2 : 44 : 12 : 0.9
+T: 2 2 : 43 : 43 : 0.1
+T: 2 2 : 43 : 11 : 0.9
+T: 2 2 : 42 : 42 : 0.1
+T: 2 2 : 42 : 10 : 0.9
+T: 2 2 : 41 : 41 : 0.1
+T: 2 2 : 41 : 9 : 0.9
+T: 2 2 : 40 : 40 : 0.1
+T: 2 2 : 40 : 8 : 0.9
+T: 2 2 : 39 : 39 : 0.1
+T: 2 2 : 39 : 7 : 0.9
+T: 2 2 : 38 : 38 : 0.1
+T: 2 2 : 38 : 6 : 0.9
+T: 2 2 : 37 : 37 : 0.1
+T: 2 2 : 37 : 5 : 0.9
+T: 2 2 : 36 : 36 : 0.1
+T: 2 2 : 36 : 4 : 0.9
+T: 2 2 : 15 : 15 : 1
+T: 2 2 : 14 : 14 : 1
+T: 2 2 : 13 : 13 : 1
+T: 2 2 : 12 : 12 : 1
+T: 2 2 : 11 : 11 : 1
+T: 2 2 : 10 : 10 : 1
+T: 2 2 : 9 : 9 : 1
+T: 2 2 : 8 : 8 : 1
+T: 2 2 : 7 : 7 : 1
+T: 2 2 : 6 : 6 : 1
+T: 2 2 : 1 : 1 : 1
+T: 2 2 : 0 : 0 : 1
+T: 2 2 : 2 : 2 : 1
+T: 2 2 : 3 : 3 : 1
+T: 2 2 : 4 : 4 : 1
+T: 2 2 : 5 : 5 : 1
+T: 2 2 : 16 : 16 : 1
+T: 2 2 : 17 : 17 : 1
+T: 2 2 : 18 : 18 : 1
+T: 2 2 : 19 : 19 : 1
+T: 2 2 : 20 : 20 : 1
+T: 2 2 : 21 : 21 : 1
+T: 2 2 : 22 : 22 : 1
+T: 2 2 : 23 : 23 : 1
+T: 2 2 : 24 : 24 : 1
+T: 2 2 : 25 : 25 : 1
+T: 2 2 : 26 : 26 : 1
+T: 2 2 : 27 : 27 : 1
+T: 2 2 : 28 : 28 : 1
+T: 2 2 : 29 : 29 : 1
+T: 2 2 : 30 : 30 : 1
+T: 2 2 : 31 : 31 : 1
+T: 2 2 : 32 : 32 : 0.1
+T: 2 2 : 32 : 0 : 0.9
+T: 2 2 : 33 : 33 : 0.1
+T: 2 2 : 33 : 1 : 0.9
+T: 2 2 : 34 : 34 : 0.1
+T: 2 2 : 34 : 2 : 0.9
+T: 2 2 : 35 : 35 : 0.1
+T: 2 2 : 35 : 3 : 0.9
+T: 2 2 : 78 : 78 : 1
+T: 2 2 : 79 : 79 : 1
+T: 2 2 : 80 : 80 : 1
+T: 2 2 : 81 : 81 : 1
+T: 2 2 : 82 : 82 : 1
+T: 2 2 : 83 : 83 : 1
+T: 2 2 : 84 : 84 : 1
+T: 2 2 : 85 : 85 : 1
+T: 2 2 : 86 : 86 : 1
+T: 2 2 : 87 : 87 : 1
+T: 2 2 : 88 : 88 : 1
+T: 2 2 : 89 : 89 : 1
+T: 2 2 : 90 : 90 : 1
+T: 2 2 : 91 : 91 : 1
+T: 2 2 : 92 : 92 : 1
+T: 2 2 : 93 : 93 : 1
+T: 2 2 : 94 : 94 : 1
+T: 2 2 : 95 : 95 : 1
+T: 2 2 : 96 : 96 : 0.1
+T: 2 2 : 96 : 64 : 0.9
+T: 2 2 : 97 : 97 : 0.1
+T: 2 2 : 97 : 65 : 0.9
+T: 2 2 : 98 : 98 : 0.1
+T: 2 2 : 98 : 66 : 0.9
+T: 2 2 : 99 : 99 : 0.1
+T: 2 2 : 99 : 67 : 0.9
+T: 2 2 : 100 : 100 : 0.1
+T: 2 2 : 100 : 68 : 0.9
+T: 2 2 : 101 : 101 : 0.1
+T: 2 2 : 101 : 69 : 0.9
+T: 2 2 : 102 : 102 : 0.1
+T: 2 2 : 102 : 70 : 0.9
+T: 2 2 : 103 : 103 : 0.1
+T: 2 2 : 103 : 71 : 0.9
+T: 2 2 : 104 : 104 : 0.1
+T: 2 2 : 104 : 72 : 0.9
+T: 2 2 : 105 : 105 : 0.1
+T: 2 2 : 105 : 73 : 0.9
+T: 2 2 : 106 : 106 : 0.1
+T: 2 2 : 106 : 74 : 0.9
+T: 2 2 : 107 : 107 : 0.1
+T: 2 2 : 107 : 75 : 0.9
+T: 2 2 : 108 : 108 : 0.1
+T: 2 2 : 108 : 76 : 0.9
+T: 2 2 : 109 : 109 : 0.1
+T: 2 2 : 109 : 77 : 0.9
+T: 2 2 : 110 : 110 : 0.1
+T: 2 2 : 110 : 78 : 0.9
+T: 2 2 : 111 : 111 : 0.1
+T: 2 2 : 111 : 79 : 0.9
+T: 2 2 : 112 : 112 : 0.1
+T: 2 2 : 112 : 80 : 0.9
+T: 2 2 : 113 : 113 : 0.1
+T: 2 2 : 113 : 81 : 0.9
+T: 2 2 : 114 : 114 : 0.1
+T: 2 2 : 114 : 82 : 0.9
+T: 2 2 : 115 : 115 : 0.1
+T: 2 2 : 115 : 83 : 0.9
+T: 2 2 : 116 : 116 : 0.1
+T: 2 2 : 116 : 84 : 0.9
+T: 2 2 : 117 : 117 : 0.1
+T: 2 2 : 117 : 85 : 0.9
+T: 2 2 : 118 : 118 : 0.1
+T: 2 2 : 118 : 86 : 0.9
+T: 2 2 : 119 : 119 : 0.1
+T: 2 2 : 119 : 87 : 0.9
+T: 2 2 : 120 : 120 : 0.1
+T: 2 2 : 120 : 88 : 0.9
+T: 2 2 : 121 : 121 : 0.1
+T: 2 2 : 121 : 89 : 0.9
+T: 2 2 : 122 : 122 : 0.1
+T: 2 2 : 122 : 90 : 0.9
+T: 2 2 : 123 : 123 : 0.1
+T: 2 2 : 123 : 91 : 0.9
+T: 2 2 : 124 : 124 : 0.1
+T: 2 2 : 124 : 92 : 0.9
+T: 2 2 : 125 : 125 : 0.1
+T: 2 2 : 125 : 93 : 0.9
+T: 2 2 : 126 : 126 : 0.1
+T: 2 2 : 126 : 94 : 0.9
+T: 2 2 : 127 : 127 : 0.1
+T: 2 2 : 127 : 95 : 0.9
+T: 2 2 : 128 : 128 : 0.1
+T: 2 2 : 128 : 0 : 0.9
+T: 2 2 : 129 : 129 : 0.1
+T: 2 2 : 129 : 1 : 0.9
+T: 2 2 : 130 : 130 : 0.1
+T: 2 2 : 130 : 2 : 0.9
+T: 2 2 : 131 : 131 : 0.1
+T: 2 2 : 131 : 3 : 0.9
+T: 2 2 : 132 : 132 : 0.1
+T: 2 2 : 132 : 4 : 0.9
+T: 2 2 : 133 : 133 : 0.1
+T: 2 2 : 133 : 5 : 0.9
+T: 2 2 : 134 : 134 : 0.1
+T: 2 2 : 134 : 6 : 0.9
+T: 2 2 : 135 : 135 : 0.1
+T: 2 2 : 135 : 7 : 0.9
+T: 2 2 : 136 : 136 : 0.1
+T: 2 2 : 136 : 8 : 0.9
+T: 2 2 : 137 : 137 : 0.1
+T: 2 2 : 137 : 9 : 0.9
+T: 2 2 : 138 : 138 : 0.1
+T: 2 2 : 138 : 10 : 0.9
+T: 2 2 : 139 : 139 : 0.1
+T: 2 2 : 139 : 11 : 0.9
+T: 2 2 : 140 : 140 : 0.1
+T: 2 2 : 140 : 12 : 0.9
+T: 2 2 : 141 : 141 : 0.1
+T: 2 2 : 141 : 13 : 0.9
+T: 2 2 : 142 : 142 : 0.1
+T: 2 2 : 142 : 14 : 0.9
+T: 2 2 : 143 : 143 : 0.1
+T: 2 2 : 143 : 15 : 0.9
+T: 2 2 : 144 : 144 : 0.1
+T: 2 2 : 144 : 16 : 0.9
+T: 2 2 : 145 : 145 : 0.1
+T: 2 2 : 145 : 17 : 0.9
+T: 2 2 : 146 : 146 : 0.1
+T: 2 2 : 146 : 18 : 0.9
+T: 2 2 : 147 : 147 : 0.1
+T: 2 2 : 147 : 19 : 0.9
+T: 2 2 : 148 : 148 : 0.1
+T: 2 2 : 148 : 20 : 0.9
+T: 2 2 : 149 : 149 : 0.1
+T: 2 2 : 149 : 21 : 0.9
+T: 2 2 : 150 : 150 : 0.1
+T: 2 2 : 150 : 22 : 0.9
+T: 2 2 : 151 : 151 : 0.1
+T: 2 2 : 151 : 23 : 0.9
+T: 2 2 : 152 : 152 : 0.1
+T: 2 2 : 152 : 24 : 0.9
+T: 2 2 : 153 : 153 : 0.1
+T: 2 2 : 153 : 25 : 0.9
+T: 2 2 : 154 : 154 : 0.1
+T: 2 2 : 154 : 26 : 0.9
+T: 2 2 : 155 : 155 : 0.1
+T: 2 2 : 155 : 27 : 0.9
+T: 2 2 : 156 : 156 : 0.1
+T: 2 2 : 156 : 28 : 0.9
+T: 2 2 : 157 : 157 : 0.1
+T: 2 2 : 157 : 29 : 0.9
+T: 2 2 : 158 : 158 : 0.1
+T: 2 2 : 158 : 30 : 0.9
+T: 2 2 : 159 : 159 : 0.1
+T: 2 2 : 159 : 31 : 0.9
+T: 2 2 : 160 : 160 : 0.01
+T: 2 2 : 160 : 128 : 0.09
+T: 2 2 : 160 : 0 : 0.81
+T: 2 2 : 160 : 32 : 0.09
+T: 2 2 : 161 : 161 : 0.01
+T: 2 2 : 161 : 129 : 0.09
+T: 2 2 : 161 : 1 : 0.81
+T: 2 2 : 161 : 33 : 0.09
+T: 2 2 : 162 : 162 : 0.01
+T: 2 2 : 162 : 130 : 0.09
+T: 2 2 : 162 : 2 : 0.81
+T: 2 2 : 162 : 34 : 0.09
+T: 2 2 : 163 : 163 : 0.01
+T: 2 2 : 163 : 131 : 0.09
+T: 2 2 : 163 : 3 : 0.81
+T: 2 2 : 163 : 35 : 0.09
+T: 2 2 : 164 : 164 : 0.01
+T: 2 2 : 164 : 132 : 0.09
+T: 2 2 : 164 : 4 : 0.81
+T: 2 2 : 164 : 36 : 0.09
+T: 2 2 : 165 : 165 : 0.01
+T: 2 2 : 165 : 133 : 0.09
+T: 2 2 : 165 : 5 : 0.81
+T: 2 2 : 165 : 37 : 0.09
+T: 2 3 : 255 : 255 : 0.1
+T: 2 3 : 255 : 127 : 0.9
+T: 2 3 : 254 : 254 : 0.1
+T: 2 3 : 254 : 126 : 0.9
+T: 2 3 : 253 : 253 : 0.1
+T: 2 3 : 253 : 125 : 0.9
+T: 2 3 : 252 : 252 : 0.1
+T: 2 3 : 252 : 124 : 0.9
+T: 2 3 : 251 : 251 : 0.1
+T: 2 3 : 251 : 123 : 0.9
+T: 2 3 : 250 : 250 : 0.1
+T: 2 3 : 250 : 122 : 0.9
+T: 2 3 : 249 : 249 : 0.1
+T: 2 3 : 249 : 121 : 0.9
+T: 2 3 : 248 : 248 : 0.1
+T: 2 3 : 248 : 120 : 0.9
+T: 2 3 : 247 : 247 : 0.1
+T: 2 3 : 247 : 119 : 0.9
+T: 2 3 : 246 : 246 : 0.1
+T: 2 3 : 246 : 118 : 0.9
+T: 2 3 : 245 : 245 : 0.1
+T: 2 3 : 245 : 117 : 0.9
+T: 2 3 : 244 : 244 : 0.1
+T: 2 3 : 244 : 116 : 0.9
+T: 2 3 : 243 : 243 : 0.1
+T: 2 3 : 243 : 115 : 0.9
+T: 2 3 : 242 : 242 : 0.1
+T: 2 3 : 242 : 114 : 0.9
+T: 2 3 : 241 : 241 : 0.1
+T: 2 3 : 241 : 113 : 0.9
+T: 2 3 : 240 : 240 : 0.1
+T: 2 3 : 240 : 112 : 0.9
+T: 2 3 : 239 : 239 : 0.1
+T: 2 3 : 239 : 111 : 0.9
+T: 2 3 : 238 : 238 : 0.1
+T: 2 3 : 238 : 110 : 0.9
+T: 2 3 : 237 : 237 : 0.1
+T: 2 3 : 237 : 109 : 0.9
+T: 2 3 : 236 : 236 : 0.1
+T: 2 3 : 236 : 108 : 0.9
+T: 2 3 : 235 : 235 : 0.1
+T: 2 3 : 235 : 107 : 0.9
+T: 2 3 : 234 : 234 : 0.1
+T: 2 3 : 234 : 106 : 0.9
+T: 2 3 : 233 : 233 : 0.1
+T: 2 3 : 233 : 105 : 0.9
+T: 2 3 : 232 : 232 : 0.1
+T: 2 3 : 232 : 104 : 0.9
+T: 2 3 : 231 : 231 : 0.1
+T: 2 3 : 231 : 103 : 0.9
+T: 2 3 : 230 : 230 : 0.1
+T: 2 3 : 230 : 102 : 0.9
+T: 2 3 : 229 : 229 : 0.1
+T: 2 3 : 229 : 101 : 0.9
+T: 2 3 : 228 : 228 : 0.1
+T: 2 3 : 228 : 100 : 0.9
+T: 2 3 : 227 : 227 : 0.1
+T: 2 3 : 227 : 99 : 0.9
+T: 2 3 : 226 : 226 : 0.1
+T: 2 3 : 226 : 98 : 0.9
+T: 2 3 : 225 : 225 : 0.1
+T: 2 3 : 225 : 97 : 0.9
+T: 2 3 : 224 : 224 : 0.1
+T: 2 3 : 224 : 96 : 0.9
+T: 2 3 : 223 : 255 : 0.09
+T: 2 3 : 223 : 223 : 0.01
+T: 2 3 : 223 : 95 : 0.09
+T: 2 3 : 223 : 127 : 0.81
+T: 2 3 : 222 : 254 : 0.09
+T: 2 3 : 222 : 222 : 0.01
+T: 2 3 : 222 : 94 : 0.09
+T: 2 3 : 222 : 126 : 0.81
+T: 2 3 : 221 : 253 : 0.09
+T: 2 3 : 221 : 221 : 0.01
+T: 2 3 : 221 : 93 : 0.09
+T: 2 3 : 221 : 125 : 0.81
+T: 2 3 : 220 : 252 : 0.09
+T: 2 3 : 220 : 220 : 0.01
+T: 2 3 : 220 : 92 : 0.09
+T: 2 3 : 220 : 124 : 0.81
+T: 2 3 : 219 : 251 : 0.09
+T: 2 3 : 219 : 219 : 0.01
+T: 2 3 : 219 : 91 : 0.09
+T: 2 3 : 219 : 123 : 0.81
+T: 2 3 : 218 : 250 : 0.09
+T: 2 3 : 218 : 218 : 0.01
+T: 2 3 : 218 : 90 : 0.09
+T: 2 3 : 218 : 122 : 0.81
+T: 2 3 : 217 : 249 : 0.09
+T: 2 3 : 217 : 217 : 0.01
+T: 2 3 : 217 : 89 : 0.09
+T: 2 3 : 217 : 121 : 0.81
+T: 2 3 : 216 : 248 : 0.09
+T: 2 3 : 216 : 216 : 0.01
+T: 2 3 : 216 : 88 : 0.09
+T: 2 3 : 216 : 120 : 0.81
+T: 2 3 : 215 : 247 : 0.09
+T: 2 3 : 215 : 215 : 0.01
+T: 2 3 : 215 : 87 : 0.09
+T: 2 3 : 215 : 119 : 0.81
+T: 2 3 : 214 : 246 : 0.09
+T: 2 3 : 214 : 214 : 0.01
+T: 2 3 : 214 : 86 : 0.09
+T: 2 3 : 214 : 118 : 0.81
+T: 2 3 : 213 : 245 : 0.09
+T: 2 3 : 213 : 213 : 0.01
+T: 2 3 : 213 : 85 : 0.09
+T: 2 3 : 213 : 117 : 0.81
+T: 2 3 : 212 : 244 : 0.09
+T: 2 3 : 212 : 212 : 0.01
+T: 2 3 : 212 : 84 : 0.09
+T: 2 3 : 212 : 116 : 0.81
+T: 2 3 : 211 : 243 : 0.09
+T: 2 3 : 211 : 211 : 0.01
+T: 2 3 : 211 : 83 : 0.09
+T: 2 3 : 211 : 115 : 0.81
+T: 2 3 : 210 : 242 : 0.09
+T: 2 3 : 210 : 210 : 0.01
+T: 2 3 : 210 : 82 : 0.09
+T: 2 3 : 210 : 114 : 0.81
+T: 2 3 : 209 : 241 : 0.09
+T: 2 3 : 209 : 209 : 0.01
+T: 2 3 : 209 : 81 : 0.09
+T: 2 3 : 209 : 113 : 0.81
+T: 2 3 : 208 : 240 : 0.09
+T: 2 3 : 208 : 208 : 0.01
+T: 2 3 : 208 : 80 : 0.09
+T: 2 3 : 208 : 112 : 0.81
+T: 2 3 : 207 : 239 : 0.09
+T: 2 3 : 207 : 207 : 0.01
+T: 2 3 : 207 : 79 : 0.09
+T: 2 3 : 207 : 111 : 0.81
+T: 2 3 : 206 : 238 : 0.09
+T: 2 3 : 206 : 206 : 0.01
+T: 2 3 : 206 : 78 : 0.09
+T: 2 3 : 206 : 110 : 0.81
+T: 2 3 : 205 : 237 : 0.09
+T: 2 3 : 205 : 205 : 0.01
+T: 2 3 : 205 : 77 : 0.09
+T: 2 3 : 205 : 109 : 0.81
+T: 2 3 : 204 : 236 : 0.09
+T: 2 3 : 204 : 204 : 0.01
+T: 2 3 : 204 : 76 : 0.09
+T: 2 3 : 204 : 108 : 0.81
+T: 2 3 : 203 : 235 : 0.09
+T: 2 3 : 203 : 203 : 0.01
+T: 2 3 : 203 : 75 : 0.09
+T: 2 3 : 203 : 107 : 0.81
+T: 2 3 : 202 : 234 : 0.09
+T: 2 3 : 202 : 202 : 0.01
+T: 2 3 : 202 : 74 : 0.09
+T: 2 3 : 202 : 106 : 0.81
+T: 2 3 : 201 : 233 : 0.09
+T: 2 3 : 201 : 201 : 0.01
+T: 2 3 : 201 : 73 : 0.09
+T: 2 3 : 201 : 105 : 0.81
+T: 2 3 : 200 : 232 : 0.09
+T: 2 3 : 200 : 200 : 0.01
+T: 2 3 : 200 : 72 : 0.09
+T: 2 3 : 200 : 104 : 0.81
+T: 2 3 : 199 : 231 : 0.09
+T: 2 3 : 199 : 199 : 0.01
+T: 2 3 : 199 : 71 : 0.09
+T: 2 3 : 199 : 103 : 0.81
+T: 2 3 : 198 : 230 : 0.09
+T: 2 3 : 198 : 198 : 0.01
+T: 2 3 : 198 : 70 : 0.09
+T: 2 3 : 198 : 102 : 0.81
+T: 2 3 : 197 : 229 : 0.09
+T: 2 3 : 197 : 197 : 0.01
+T: 2 3 : 197 : 69 : 0.09
+T: 2 3 : 197 : 101 : 0.81
+T: 2 3 : 196 : 228 : 0.09
+T: 2 3 : 196 : 196 : 0.01
+T: 2 3 : 196 : 68 : 0.09
+T: 2 3 : 196 : 100 : 0.81
+T: 2 3 : 195 : 227 : 0.09
+T: 2 3 : 195 : 195 : 0.01
+T: 2 3 : 195 : 67 : 0.09
+T: 2 3 : 195 : 99 : 0.81
+T: 2 3 : 194 : 226 : 0.09
+T: 2 3 : 194 : 194 : 0.01
+T: 2 3 : 194 : 66 : 0.09
+T: 2 3 : 194 : 98 : 0.81
+T: 2 3 : 193 : 225 : 0.09
+T: 2 3 : 193 : 193 : 0.01
+T: 2 3 : 193 : 65 : 0.09
+T: 2 3 : 193 : 97 : 0.81
+T: 2 3 : 192 : 224 : 0.09
+T: 2 3 : 192 : 192 : 0.01
+T: 2 3 : 192 : 64 : 0.09
+T: 2 3 : 192 : 96 : 0.81
+T: 2 3 : 191 : 191 : 0.1
+T: 2 3 : 191 : 63 : 0.9
+T: 2 3 : 190 : 190 : 0.1
+T: 2 3 : 190 : 62 : 0.9
+T: 2 3 : 189 : 189 : 0.1
+T: 2 3 : 189 : 61 : 0.9
+T: 2 3 : 188 : 188 : 0.1
+T: 2 3 : 188 : 60 : 0.9
+T: 2 3 : 187 : 187 : 0.1
+T: 2 3 : 187 : 59 : 0.9
+T: 2 3 : 186 : 186 : 0.1
+T: 2 3 : 186 : 58 : 0.9
+T: 2 3 : 185 : 185 : 0.1
+T: 2 3 : 185 : 57 : 0.9
+T: 2 3 : 184 : 184 : 0.1
+T: 2 3 : 184 : 56 : 0.9
+T: 2 3 : 183 : 183 : 0.1
+T: 2 3 : 183 : 55 : 0.9
+T: 2 3 : 182 : 182 : 0.1
+T: 2 3 : 182 : 54 : 0.9
+T: 2 3 : 181 : 181 : 0.1
+T: 2 3 : 181 : 53 : 0.9
+T: 2 3 : 180 : 180 : 0.1
+T: 2 3 : 180 : 52 : 0.9
+T: 2 3 : 179 : 179 : 0.1
+T: 2 3 : 179 : 51 : 0.9
+T: 2 3 : 178 : 178 : 0.1
+T: 2 3 : 178 : 50 : 0.9
+T: 2 3 : 177 : 177 : 0.1
+T: 2 3 : 177 : 49 : 0.9
+T: 2 3 : 176 : 176 : 0.1
+T: 2 3 : 176 : 48 : 0.9
+T: 2 3 : 175 : 175 : 0.1
+T: 2 3 : 175 : 47 : 0.9
+T: 2 3 : 174 : 174 : 0.1
+T: 2 3 : 174 : 46 : 0.9
+T: 2 3 : 173 : 173 : 0.1
+T: 2 3 : 173 : 45 : 0.9
+T: 2 3 : 172 : 172 : 0.1
+T: 2 3 : 172 : 44 : 0.9
+T: 2 3 : 171 : 171 : 0.1
+T: 2 3 : 171 : 43 : 0.9
+T: 2 3 : 170 : 170 : 0.1
+T: 2 3 : 170 : 42 : 0.9
+T: 2 3 : 169 : 169 : 0.1
+T: 2 3 : 169 : 41 : 0.9
+T: 2 3 : 168 : 168 : 0.1
+T: 2 3 : 168 : 40 : 0.9
+T: 2 3 : 167 : 167 : 0.1
+T: 2 3 : 167 : 39 : 0.9
+T: 2 3 : 166 : 166 : 0.1
+T: 2 3 : 166 : 38 : 0.9
+T: 2 3 : 77 : 109 : 0.9
+T: 2 3 : 77 : 77 : 0.1
+T: 2 3 : 76 : 108 : 0.9
+T: 2 3 : 76 : 76 : 0.1
+T: 2 3 : 75 : 107 : 0.9
+T: 2 3 : 75 : 75 : 0.1
+T: 2 3 : 74 : 106 : 0.9
+T: 2 3 : 74 : 74 : 0.1
+T: 2 3 : 73 : 105 : 0.9
+T: 2 3 : 73 : 73 : 0.1
+T: 2 3 : 72 : 104 : 0.9
+T: 2 3 : 72 : 72 : 0.1
+T: 2 3 : 71 : 103 : 0.9
+T: 2 3 : 71 : 71 : 0.1
+T: 2 3 : 70 : 102 : 0.9
+T: 2 3 : 70 : 70 : 0.1
+T: 2 3 : 69 : 101 : 0.9
+T: 2 3 : 69 : 69 : 0.1
+T: 2 3 : 68 : 100 : 0.9
+T: 2 3 : 68 : 68 : 0.1
+T: 2 3 : 67 : 99 : 0.9
+T: 2 3 : 67 : 67 : 0.1
+T: 2 3 : 66 : 98 : 0.9
+T: 2 3 : 66 : 66 : 0.1
+T: 2 3 : 65 : 97 : 0.9
+T: 2 3 : 65 : 65 : 0.1
+T: 2 3 : 64 : 96 : 0.9
+T: 2 3 : 64 : 64 : 0.1
+T: 2 3 : 63 : 63 : 1
+T: 2 3 : 62 : 62 : 1
+T: 2 3 : 61 : 61 : 1
+T: 2 3 : 60 : 60 : 1
+T: 2 3 : 59 : 59 : 1
+T: 2 3 : 58 : 58 : 1
+T: 2 3 : 57 : 57 : 1
+T: 2 3 : 56 : 56 : 1
+T: 2 3 : 55 : 55 : 1
+T: 2 3 : 54 : 54 : 1
+T: 2 3 : 53 : 53 : 1
+T: 2 3 : 52 : 52 : 1
+T: 2 3 : 51 : 51 : 1
+T: 2 3 : 50 : 50 : 1
+T: 2 3 : 49 : 49 : 1
+T: 2 3 : 48 : 48 : 1
+T: 2 3 : 47 : 47 : 1
+T: 2 3 : 46 : 46 : 1
+T: 2 3 : 45 : 45 : 1
+T: 2 3 : 44 : 44 : 1
+T: 2 3 : 43 : 43 : 1
+T: 2 3 : 42 : 42 : 1
+T: 2 3 : 41 : 41 : 1
+T: 2 3 : 40 : 40 : 1
+T: 2 3 : 39 : 39 : 1
+T: 2 3 : 38 : 38 : 1
+T: 2 3 : 37 : 37 : 1
+T: 2 3 : 36 : 36 : 1
+T: 2 3 : 15 : 47 : 0.9
+T: 2 3 : 15 : 15 : 0.1
+T: 2 3 : 14 : 46 : 0.9
+T: 2 3 : 14 : 14 : 0.1
+T: 2 3 : 13 : 45 : 0.9
+T: 2 3 : 13 : 13 : 0.1
+T: 2 3 : 12 : 44 : 0.9
+T: 2 3 : 12 : 12 : 0.1
+T: 2 3 : 11 : 43 : 0.9
+T: 2 3 : 11 : 11 : 0.1
+T: 2 3 : 10 : 42 : 0.9
+T: 2 3 : 10 : 10 : 0.1
+T: 2 3 : 9 : 41 : 0.9
+T: 2 3 : 9 : 9 : 0.1
+T: 2 3 : 8 : 40 : 0.9
+T: 2 3 : 8 : 8 : 0.1
+T: 2 3 : 7 : 39 : 0.9
+T: 2 3 : 7 : 7 : 0.1
+T: 2 3 : 6 : 38 : 0.9
+T: 2 3 : 6 : 6 : 0.1
+T: 2 3 : 1 : 33 : 0.9
+T: 2 3 : 1 : 1 : 0.1
+T: 2 3 : 0 : 32 : 0.9
+T: 2 3 : 0 : 0 : 0.1
+T: 2 3 : 2 : 34 : 0.9
+T: 2 3 : 2 : 2 : 0.1
+T: 2 3 : 3 : 35 : 0.9
+T: 2 3 : 3 : 3 : 0.1
+T: 2 3 : 4 : 36 : 0.9
+T: 2 3 : 4 : 4 : 0.1
+T: 2 3 : 5 : 37 : 0.9
+T: 2 3 : 5 : 5 : 0.1
+T: 2 3 : 16 : 48 : 0.9
+T: 2 3 : 16 : 16 : 0.1
+T: 2 3 : 17 : 49 : 0.9
+T: 2 3 : 17 : 17 : 0.1
+T: 2 3 : 18 : 50 : 0.9
+T: 2 3 : 18 : 18 : 0.1
+T: 2 3 : 19 : 51 : 0.9
+T: 2 3 : 19 : 19 : 0.1
+T: 2 3 : 20 : 52 : 0.9
+T: 2 3 : 20 : 20 : 0.1
+T: 2 3 : 21 : 53 : 0.9
+T: 2 3 : 21 : 21 : 0.1
+T: 2 3 : 22 : 54 : 0.9
+T: 2 3 : 22 : 22 : 0.1
+T: 2 3 : 23 : 55 : 0.9
+T: 2 3 : 23 : 23 : 0.1
+T: 2 3 : 24 : 56 : 0.9
+T: 2 3 : 24 : 24 : 0.1
+T: 2 3 : 25 : 57 : 0.9
+T: 2 3 : 25 : 25 : 0.1
+T: 2 3 : 26 : 58 : 0.9
+T: 2 3 : 26 : 26 : 0.1
+T: 2 3 : 27 : 59 : 0.9
+T: 2 3 : 27 : 27 : 0.1
+T: 2 3 : 28 : 60 : 0.9
+T: 2 3 : 28 : 28 : 0.1
+T: 2 3 : 29 : 61 : 0.9
+T: 2 3 : 29 : 29 : 0.1
+T: 2 3 : 30 : 62 : 0.9
+T: 2 3 : 30 : 30 : 0.1
+T: 2 3 : 31 : 63 : 0.9
+T: 2 3 : 31 : 31 : 0.1
+T: 2 3 : 32 : 32 : 1
+T: 2 3 : 33 : 33 : 1
+T: 2 3 : 34 : 34 : 1
+T: 2 3 : 35 : 35 : 1
+T: 2 3 : 78 : 110 : 0.9
+T: 2 3 : 78 : 78 : 0.1
+T: 2 3 : 79 : 111 : 0.9
+T: 2 3 : 79 : 79 : 0.1
+T: 2 3 : 80 : 112 : 0.9
+T: 2 3 : 80 : 80 : 0.1
+T: 2 3 : 81 : 113 : 0.9
+T: 2 3 : 81 : 81 : 0.1
+T: 2 3 : 82 : 114 : 0.9
+T: 2 3 : 82 : 82 : 0.1
+T: 2 3 : 83 : 115 : 0.9
+T: 2 3 : 83 : 83 : 0.1
+T: 2 3 : 84 : 116 : 0.9
+T: 2 3 : 84 : 84 : 0.1
+T: 2 3 : 85 : 117 : 0.9
+T: 2 3 : 85 : 85 : 0.1
+T: 2 3 : 86 : 118 : 0.9
+T: 2 3 : 86 : 86 : 0.1
+T: 2 3 : 87 : 119 : 0.9
+T: 2 3 : 87 : 87 : 0.1
+T: 2 3 : 88 : 120 : 0.9
+T: 2 3 : 88 : 88 : 0.1
+T: 2 3 : 89 : 121 : 0.9
+T: 2 3 : 89 : 89 : 0.1
+T: 2 3 : 90 : 122 : 0.9
+T: 2 3 : 90 : 90 : 0.1
+T: 2 3 : 91 : 123 : 0.9
+T: 2 3 : 91 : 91 : 0.1
+T: 2 3 : 92 : 124 : 0.9
+T: 2 3 : 92 : 92 : 0.1
+T: 2 3 : 93 : 125 : 0.9
+T: 2 3 : 93 : 93 : 0.1
+T: 2 3 : 94 : 126 : 0.9
+T: 2 3 : 94 : 94 : 0.1
+T: 2 3 : 95 : 127 : 0.9
+T: 2 3 : 95 : 95 : 0.1
+T: 2 3 : 96 : 96 : 1
+T: 2 3 : 97 : 97 : 1
+T: 2 3 : 98 : 98 : 1
+T: 2 3 : 99 : 99 : 1
+T: 2 3 : 100 : 100 : 1
+T: 2 3 : 101 : 101 : 1
+T: 2 3 : 102 : 102 : 1
+T: 2 3 : 103 : 103 : 1
+T: 2 3 : 104 : 104 : 1
+T: 2 3 : 105 : 105 : 1
+T: 2 3 : 106 : 106 : 1
+T: 2 3 : 107 : 107 : 1
+T: 2 3 : 108 : 108 : 1
+T: 2 3 : 109 : 109 : 1
+T: 2 3 : 110 : 110 : 1
+T: 2 3 : 111 : 111 : 1
+T: 2 3 : 112 : 112 : 1
+T: 2 3 : 113 : 113 : 1
+T: 2 3 : 114 : 114 : 1
+T: 2 3 : 115 : 115 : 1
+T: 2 3 : 116 : 116 : 1
+T: 2 3 : 117 : 117 : 1
+T: 2 3 : 118 : 118 : 1
+T: 2 3 : 119 : 119 : 1
+T: 2 3 : 120 : 120 : 1
+T: 2 3 : 121 : 121 : 1
+T: 2 3 : 122 : 122 : 1
+T: 2 3 : 123 : 123 : 1
+T: 2 3 : 124 : 124 : 1
+T: 2 3 : 125 : 125 : 1
+T: 2 3 : 126 : 126 : 1
+T: 2 3 : 127 : 127 : 1
+T: 2 3 : 128 : 160 : 0.09
+T: 2 3 : 128 : 128 : 0.01
+T: 2 3 : 128 : 0 : 0.09
+T: 2 3 : 128 : 32 : 0.81
+T: 2 3 : 129 : 161 : 0.09
+T: 2 3 : 129 : 129 : 0.01
+T: 2 3 : 129 : 1 : 0.09
+T: 2 3 : 129 : 33 : 0.81
+T: 2 3 : 130 : 162 : 0.09
+T: 2 3 : 130 : 130 : 0.01
+T: 2 3 : 130 : 2 : 0.09
+T: 2 3 : 130 : 34 : 0.81
+T: 2 3 : 131 : 163 : 0.09
+T: 2 3 : 131 : 131 : 0.01
+T: 2 3 : 131 : 3 : 0.09
+T: 2 3 : 131 : 35 : 0.81
+T: 2 3 : 132 : 164 : 0.09
+T: 2 3 : 132 : 132 : 0.01
+T: 2 3 : 132 : 4 : 0.09
+T: 2 3 : 132 : 36 : 0.81
+T: 2 3 : 133 : 165 : 0.09
+T: 2 3 : 133 : 133 : 0.01
+T: 2 3 : 133 : 5 : 0.09
+T: 2 3 : 133 : 37 : 0.81
+T: 2 3 : 134 : 166 : 0.09
+T: 2 3 : 134 : 134 : 0.01
+T: 2 3 : 134 : 6 : 0.09
+T: 2 3 : 134 : 38 : 0.81
+T: 2 3 : 135 : 167 : 0.09
+T: 2 3 : 135 : 135 : 0.01
+T: 2 3 : 135 : 7 : 0.09
+T: 2 3 : 135 : 39 : 0.81
+T: 2 3 : 136 : 168 : 0.09
+T: 2 3 : 136 : 136 : 0.01
+T: 2 3 : 136 : 8 : 0.09
+T: 2 3 : 136 : 40 : 0.81
+T: 2 3 : 137 : 169 : 0.09
+T: 2 3 : 137 : 137 : 0.01
+T: 2 3 : 137 : 9 : 0.09
+T: 2 3 : 137 : 41 : 0.81
+T: 2 3 : 138 : 170 : 0.09
+T: 2 3 : 138 : 138 : 0.01
+T: 2 3 : 138 : 10 : 0.09
+T: 2 3 : 138 : 42 : 0.81
+T: 2 3 : 139 : 171 : 0.09
+T: 2 3 : 139 : 139 : 0.01
+T: 2 3 : 139 : 11 : 0.09
+T: 2 3 : 139 : 43 : 0.81
+T: 2 3 : 140 : 172 : 0.09
+T: 2 3 : 140 : 140 : 0.01
+T: 2 3 : 140 : 12 : 0.09
+T: 2 3 : 140 : 44 : 0.81
+T: 2 3 : 141 : 173 : 0.09
+T: 2 3 : 141 : 141 : 0.01
+T: 2 3 : 141 : 13 : 0.09
+T: 2 3 : 141 : 45 : 0.81
+T: 2 3 : 142 : 174 : 0.09
+T: 2 3 : 142 : 142 : 0.01
+T: 2 3 : 142 : 14 : 0.09
+T: 2 3 : 142 : 46 : 0.81
+T: 2 3 : 143 : 175 : 0.09
+T: 2 3 : 143 : 143 : 0.01
+T: 2 3 : 143 : 15 : 0.09
+T: 2 3 : 143 : 47 : 0.81
+T: 2 3 : 144 : 176 : 0.09
+T: 2 3 : 144 : 144 : 0.01
+T: 2 3 : 144 : 16 : 0.09
+T: 2 3 : 144 : 48 : 0.81
+T: 2 3 : 145 : 177 : 0.09
+T: 2 3 : 145 : 145 : 0.01
+T: 2 3 : 145 : 17 : 0.09
+T: 2 3 : 145 : 49 : 0.81
+T: 2 3 : 146 : 178 : 0.09
+T: 2 3 : 146 : 146 : 0.01
+T: 2 3 : 146 : 18 : 0.09
+T: 2 3 : 146 : 50 : 0.81
+T: 2 3 : 147 : 179 : 0.09
+T: 2 3 : 147 : 147 : 0.01
+T: 2 3 : 147 : 19 : 0.09
+T: 2 3 : 147 : 51 : 0.81
+T: 2 3 : 148 : 180 : 0.09
+T: 2 3 : 148 : 148 : 0.01
+T: 2 3 : 148 : 20 : 0.09
+T: 2 3 : 148 : 52 : 0.81
+T: 2 3 : 149 : 181 : 0.09
+T: 2 3 : 149 : 149 : 0.01
+T: 2 3 : 149 : 21 : 0.09
+T: 2 3 : 149 : 53 : 0.81
+T: 2 3 : 150 : 182 : 0.09
+T: 2 3 : 150 : 150 : 0.01
+T: 2 3 : 150 : 22 : 0.09
+T: 2 3 : 150 : 54 : 0.81
+T: 2 3 : 151 : 183 : 0.09
+T: 2 3 : 151 : 151 : 0.01
+T: 2 3 : 151 : 23 : 0.09
+T: 2 3 : 151 : 55 : 0.81
+T: 2 3 : 152 : 184 : 0.09
+T: 2 3 : 152 : 152 : 0.01
+T: 2 3 : 152 : 24 : 0.09
+T: 2 3 : 152 : 56 : 0.81
+T: 2 3 : 153 : 185 : 0.09
+T: 2 3 : 153 : 153 : 0.01
+T: 2 3 : 153 : 25 : 0.09
+T: 2 3 : 153 : 57 : 0.81
+T: 2 3 : 154 : 186 : 0.09
+T: 2 3 : 154 : 154 : 0.01
+T: 2 3 : 154 : 26 : 0.09
+T: 2 3 : 154 : 58 : 0.81
+T: 2 3 : 155 : 187 : 0.09
+T: 2 3 : 155 : 155 : 0.01
+T: 2 3 : 155 : 27 : 0.09
+T: 2 3 : 155 : 59 : 0.81
+T: 2 3 : 156 : 188 : 0.09
+T: 2 3 : 156 : 156 : 0.01
+T: 2 3 : 156 : 28 : 0.09
+T: 2 3 : 156 : 60 : 0.81
+T: 2 3 : 157 : 189 : 0.09
+T: 2 3 : 157 : 157 : 0.01
+T: 2 3 : 157 : 29 : 0.09
+T: 2 3 : 157 : 61 : 0.81
+T: 2 3 : 158 : 190 : 0.09
+T: 2 3 : 158 : 158 : 0.01
+T: 2 3 : 158 : 30 : 0.09
+T: 2 3 : 158 : 62 : 0.81
+T: 2 3 : 159 : 191 : 0.09
+T: 2 3 : 159 : 159 : 0.01
+T: 2 3 : 159 : 31 : 0.09
+T: 2 3 : 159 : 63 : 0.81
+T: 2 3 : 160 : 160 : 0.1
+T: 2 3 : 160 : 32 : 0.9
+T: 2 3 : 161 : 161 : 0.1
+T: 2 3 : 161 : 33 : 0.9
+T: 2 3 : 162 : 162 : 0.1
+T: 2 3 : 162 : 34 : 0.9
+T: 2 3 : 163 : 163 : 0.1
+T: 2 3 : 163 : 35 : 0.9
+T: 2 3 : 164 : 164 : 0.1
+T: 2 3 : 164 : 36 : 0.9
+T: 2 3 : 165 : 165 : 0.1
+T: 2 3 : 165 : 37 : 0.9
+O: 5 5 : 255 : 7 7  : 1
+O: 5 5 : 254 : 7 7  : 1
+O: 5 5 : 253 : 7 7  : 1
+O: 5 5 : 252 : 7 7  : 1
+O: 5 5 : 251 : 7 7  : 1
+O: 5 5 : 250 : 7 7  : 1
+O: 5 5 : 249 : 7 7  : 1
+O: 5 5 : 248 : 7 7  : 1
+O: 5 5 : 239 : 7 6  : 1
+O: 5 5 : 238 : 7 6  : 1
+O: 5 5 : 237 : 7 6  : 1
+O: 5 5 : 236 : 7 6  : 1
+O: 5 5 : 223 : 7 5  : 1
+O: 5 5 : 222 : 7 5  : 1
+O: 5 5 : 219 : 7 5  : 1
+O: 5 5 : 218 : 7 5  : 1
+O: 5 5 : 207 : 7 4  : 1
+O: 5 5 : 205 : 7 4  : 1
+O: 5 5 : 203 : 7 4  : 1
+O: 5 5 : 201 : 7 4  : 1
+O: 5 5 : 235 : 7 2  : 1
+O: 5 5 : 234 : 7 2  : 1
+O: 5 5 : 233 : 7 2  : 1
+O: 5 5 : 232 : 7 2  : 1
+O: 5 5 : 221 : 7 1  : 1
+O: 5 5 : 220 : 7 1  : 1
+O: 5 5 : 217 : 7 1  : 1
+O: 5 5 : 216 : 7 1  : 1
+O: 5 5 : 206 : 7 0  : 1
+O: 5 5 : 204 : 7 0  : 1
+O: 5 5 : 202 : 7 0  : 1
+O: 5 5 : 200 : 7 0  : 1
+O: 5 5 : 191 : 6 7  : 1
+O: 5 5 : 190 : 6 7  : 1
+O: 5 5 : 189 : 6 7  : 1
+O: 5 5 : 188 : 6 7  : 1
+O: 5 5 : 175 : 6 6  : 1
+O: 5 5 : 174 : 6 6  : 1
+O: 5 5 : 173 : 6 6  : 1
+O: 5 5 : 172 : 6 6  : 1
+O: 5 5 : 167 : 6 6  : 1
+O: 5 5 : 166 : 6 6  : 1
+O: 5 5 : 165 : 6 6  : 1
+O: 5 5 : 164 : 6 6  : 1
+O: 5 5 : 159 : 6 5  : 1
+O: 5 5 : 158 : 6 5  : 1
+O: 5 5 : 151 : 6 5  : 1
+O: 5 5 : 150 : 6 5  : 1
+O: 5 5 : 143 : 6 4  : 1
+O: 5 5 : 141 : 6 4  : 1
+O: 5 5 : 135 : 6 4  : 1
+O: 5 5 : 133 : 6 4  : 1
+O: 5 5 : 183 : 6 3  : 1
+O: 5 5 : 182 : 6 3  : 1
+O: 5 5 : 181 : 6 3  : 1
+O: 5 5 : 180 : 6 3  : 1
+O: 5 5 : 157 : 6 1  : 1
+O: 5 5 : 156 : 6 1  : 1
+O: 5 5 : 149 : 6 1  : 1
+O: 5 5 : 148 : 6 1  : 1
+O: 5 5 : 142 : 6 0  : 1
+O: 5 5 : 140 : 6 0  : 1
+O: 5 5 : 134 : 6 0  : 1
+O: 5 5 : 132 : 6 0  : 1
+O: 5 5 : 127 : 5 7  : 1
+O: 5 5 : 126 : 5 7  : 1
+O: 5 5 : 123 : 5 7  : 1
+O: 5 5 : 122 : 5 7  : 1
+O: 5 5 : 111 : 5 6  : 1
+O: 5 5 : 110 : 5 6  : 1
+O: 5 5 : 103 : 5 6  : 1
+O: 5 5 : 102 : 5 6  : 1
+O: 5 5 : 95 : 5 5  : 1
+O: 5 5 : 94 : 5 5  : 1
+O: 5 5 : 91 : 5 5  : 1
+O: 5 5 : 90 : 5 5  : 1
+O: 5 5 : 87 : 5 5  : 1
+O: 5 5 : 86 : 5 5  : 1
+O: 5 5 : 83 : 5 5  : 1
+O: 5 5 : 82 : 5 5  : 1
+O: 5 5 : 79 : 5 4  : 1
+O: 5 5 : 75 : 5 4  : 1
+O: 5 5 : 71 : 5 4  : 1
+O: 5 5 : 67 : 5 4  : 1
+O: 5 5 : 119 : 5 3  : 1
+O: 5 5 : 118 : 5 3  : 1
+O: 5 5 : 115 : 5 3  : 1
+O: 5 5 : 114 : 5 3  : 1
+O: 5 5 : 107 : 5 2  : 1
+O: 5 5 : 106 : 5 2  : 1
+O: 5 5 : 169 : 2 2  : 1
+O: 5 5 : 2 : 0 0  : 1
+O: 5 5 : 161 : 2 2  : 1
+O: 5 5 : 153 : 2 1  : 1
+O: 5 5 : 145 : 2 1  : 1
+O: 5 5 : 138 : 2 0  : 1
+O: 5 5 : 136 : 2 0  : 1
+O: 5 5 : 130 : 2 0  : 1
+O: 5 5 : 128 : 2 0  : 1
+O: 5 5 : 124 : 1 7  : 1
+O: 5 5 : 120 : 1 7  : 1
+O: 5 5 : 108 : 1 6  : 1
+O: 5 5 : 100 : 1 6  : 1
+O: 5 5 : 77 : 1 4  : 1
+O: 5 5 : 244 : 3 3  : 1
+O: 5 5 : 152 : 2 1  : 1
+O: 5 5 : 73 : 1 4  : 1
+O: 5 5 : 240 : 3 3  : 1
+O: 5 5 : 69 : 1 4  : 1
+O: 5 5 : 144 : 2 1  : 1
+O: 5 5 : 65 : 1 4  : 1
+O: 5 5 : 116 : 1 3  : 1
+O: 5 5 : 112 : 1 3  : 1
+O: 5 5 : 104 : 1 2  : 1
+O: 5 5 : 96 : 1 2  : 1
+O: 5 5 : 92 : 1 1  : 1
+O: 5 5 : 88 : 1 1  : 1
+O: 5 5 : 163 : 2 2  : 1
+O: 5 5 : 84 : 1 1  : 1
+O: 5 5 : 80 : 1 1  : 1
+O: 5 5 : 247 : 3 3  : 1
+O: 5 5 : 32 : 0 2  : 1
+O: 5 5 : 199 : 3 4  : 1
+O: 5 5 : 28 : 0 1  : 1
+O: 5 5 : 195 : 3 4  : 1
+O: 5 5 : 24 : 0 1  : 1
+O: 5 5 : 20 : 0 1  : 1
+O: 5 5 : 187 : 2 7  : 1
+O: 5 5 : 16 : 0 1  : 1
+O: 5 5 : 93 : 1 1  : 1
+O: 5 5 : 14 : 0 0  : 1
+O: 5 5 : 12 : 0 0  : 1
+O: 5 5 : 179 : 2 3  : 1
+O: 5 5 : 160 : 2 2  : 1
+O: 5 5 : 81 : 1 1  : 1
+O: 5 5 : 76 : 1 0  : 1
+O: 5 5 : 243 : 3 3  : 1
+O: 5 5 : 113 : 1 3  : 1
+O: 5 5 : 34 : 0 2  : 1
+O: 5 5 : 0 : 0 0  : 1
+O: 5 5 : 162 : 2 2  : 1
+O: 5 5 : 4 : 0 0  : 1
+O: 5 5 : 171 : 2 2  : 1
+O: 5 5 : 40 : 0 2  : 1
+O: 5 5 : 85 : 1 1  : 1
+O: 5 5 : 6 : 0 0  : 1
+O: 5 5 : 121 : 1 7  : 1
+O: 5 5 : 42 : 0 2  : 1
+O: 5 5 : 209 : 3 1  : 1
+O: 5 5 : 8 : 0 0  : 1
+O: 5 5 : 168 : 2 2  : 1
+O: 5 5 : 1 : 4 4  : 1
+O: 5 5 : 89 : 1 1  : 1
+O: 5 5 : 10 : 0 0  : 1
+O: 5 5 : 177 : 2 3  : 1
+O: 5 5 : 48 : 0 3  : 1
+O: 5 5 : 215 : 3 5  : 1
+O: 5 5 : 50 : 0 3  : 1
+O: 5 5 : 52 : 0 3  : 1
+O: 5 5 : 54 : 0 3  : 1
+O: 5 5 : 97 : 1 2  : 1
+O: 5 5 : 18 : 0 5  : 1
+O: 5 5 : 185 : 2 7  : 1
+O: 5 5 : 101 : 1 6  : 1
+O: 5 5 : 22 : 0 5  : 1
+O: 5 5 : 105 : 1 2  : 1
+O: 5 5 : 26 : 0 5  : 1
+O: 5 5 : 193 : 3 4  : 1
+O: 5 5 : 109 : 1 6  : 1
+O: 5 5 : 30 : 0 5  : 1
+O: 5 5 : 197 : 3 4  : 1
+O: 5 5 : 36 : 0 6  : 1
+O: 5 5 : 117 : 1 3  : 1
+O: 5 5 : 38 : 0 6  : 1
+O: 5 5 : 44 : 0 6  : 1
+O: 5 5 : 211 : 3 5  : 1
+O: 5 5 : 125 : 1 7  : 1
+O: 5 5 : 46 : 0 6  : 1
+O: 5 5 : 213 : 3 1  : 1
+O: 5 5 : 56 : 0 7  : 1
+O: 5 5 : 58 : 0 7  : 1
+O: 5 5 : 225 : 3 2  : 1
+O: 5 5 : 60 : 0 7  : 1
+O: 5 5 : 227 : 3 2  : 1
+O: 5 5 : 62 : 0 7  : 1
+O: 5 5 : 229 : 3 6  : 1
+O: 5 5 : 64 : 1 0  : 1
+O: 5 5 : 231 : 3 6  : 1
+O: 5 5 : 68 : 1 0  : 1
+O: 5 5 : 72 : 1 0  : 1
+O: 5 5 : 170 : 2 2  : 1
+O: 5 5 : 3 : 4 4  : 1
+O: 5 5 : 176 : 2 3  : 1
+O: 5 5 : 9 : 4 4  : 1
+O: 5 5 : 178 : 2 3  : 1
+O: 5 5 : 11 : 4 4  : 1
+O: 5 5 : 129 : 2 4  : 1
+O: 5 5 : 131 : 2 4  : 1
+O: 5 5 : 137 : 2 4  : 1
+O: 5 5 : 139 : 2 4  : 1
+O: 5 5 : 146 : 2 5  : 1
+O: 5 5 : 147 : 2 5  : 1
+O: 5 5 : 154 : 2 5  : 1
+O: 5 5 : 155 : 2 5  : 1
+O: 5 5 : 184 : 2 7  : 1
+O: 5 5 : 17 : 4 1  : 1
+O: 5 5 : 186 : 2 7  : 1
+O: 5 5 : 19 : 4 5  : 1
+O: 5 5 : 192 : 3 0  : 1
+O: 5 5 : 25 : 4 1  : 1
+O: 5 5 : 194 : 3 0  : 1
+O: 5 5 : 27 : 4 5  : 1
+O: 5 5 : 196 : 3 0  : 1
+O: 5 5 : 29 : 4 1  : 1
+O: 5 5 : 198 : 3 0  : 1
+O: 5 5 : 31 : 4 5  : 1
+O: 5 5 : 208 : 3 1  : 1
+O: 5 5 : 41 : 4 2  : 1
+O: 5 5 : 212 : 3 1  : 1
+O: 5 5 : 45 : 4 6  : 1
+O: 5 5 : 224 : 3 2  : 1
+O: 5 5 : 57 : 4 7  : 1
+O: 5 5 : 226 : 3 2  : 1
+O: 5 5 : 59 : 4 7  : 1
+O: 5 5 : 241 : 3 3  : 1
+O: 5 5 : 74 : 5 0  : 1
+O: 5 5 : 242 : 3 3  : 1
+O: 5 5 : 245 : 3 3  : 1
+O: 5 5 : 78 : 5 0  : 1
+O: 5 5 : 246 : 3 3  : 1
+O: 5 5 : 210 : 3 5  : 1
+O: 5 5 : 43 : 4 2  : 1
+O: 5 5 : 214 : 3 5  : 1
+O: 5 5 : 47 : 4 6  : 1
+O: 5 5 : 228 : 3 6  : 1
+O: 5 5 : 61 : 4 7  : 1
+O: 5 5 : 230 : 3 6  : 1
+O: 5 5 : 63 : 4 7  : 1
+O: 5 5 : 21 : 4 1  : 1
+O: 5 5 : 33 : 4 2  : 1
+O: 5 5 : 35 : 4 2  : 1
+O: 5 5 : 49 : 4 3  : 1
+O: 5 5 : 51 : 4 3  : 1
+O: 5 5 : 53 : 4 3  : 1
+O: 5 5 : 55 : 4 3  : 1
+O: 5 5 : 5 : 4 4  : 1
+O: 5 5 : 7 : 4 4  : 1
+O: 5 5 : 13 : 4 4  : 1
+O: 5 5 : 15 : 4 4  : 1
+O: 5 5 : 23 : 4 5  : 1
+O: 5 5 : 37 : 4 6  : 1
+O: 5 5 : 39 : 4 6  : 1
+O: 5 5 : 66 : 5 0  : 1
+O: 5 5 : 70 : 5 0  : 1
+O: 5 5 : 98 : 5 2  : 1
+O: 5 5 : 99 : 5 2  : 1
+O: 5 4 : 255 : 7 7  : 1
+O: 5 4 : 254 : 7 7  : 1
+O: 5 4 : 253 : 7 7  : 1
+O: 5 4 : 252 : 7 7  : 1
+O: 5 4 : 251 : 7 7  : 1
+O: 5 4 : 250 : 7 7  : 1
+O: 5 4 : 249 : 7 7  : 1
+O: 5 4 : 248 : 7 7  : 1
+O: 5 4 : 239 : 7 6  : 1
+O: 5 4 : 238 : 7 6  : 1
+O: 5 4 : 237 : 7 6  : 1
+O: 5 4 : 236 : 7 6  : 1
+O: 5 4 : 223 : 7 5  : 1
+O: 5 4 : 222 : 7 5  : 1
+O: 5 4 : 219 : 7 5  : 1
+O: 5 4 : 218 : 7 5  : 1
+O: 5 4 : 207 : 7 4  : 1
+O: 5 4 : 205 : 7 4  : 1
+O: 5 4 : 203 : 7 4  : 1
+O: 5 4 : 201 : 7 4  : 1
+O: 5 4 : 235 : 7 2  : 1
+O: 5 4 : 234 : 7 2  : 1
+O: 5 4 : 233 : 7 2  : 1
+O: 5 4 : 232 : 7 2  : 1
+O: 5 4 : 221 : 7 1  : 1
+O: 5 4 : 220 : 7 1  : 1
+O: 5 4 : 217 : 7 1  : 1
+O: 5 4 : 216 : 7 1  : 1
+O: 5 4 : 206 : 7 0  : 1
+O: 5 4 : 204 : 7 0  : 1
+O: 5 4 : 202 : 7 0  : 1
+O: 5 4 : 200 : 7 0  : 1
+O: 5 4 : 191 : 6 7  : 1
+O: 5 4 : 190 : 6 7  : 1
+O: 5 4 : 189 : 6 7  : 1
+O: 5 4 : 188 : 6 7  : 1
+O: 5 4 : 175 : 6 6  : 1
+O: 5 4 : 174 : 6 6  : 1
+O: 5 4 : 173 : 6 6  : 1
+O: 5 4 : 172 : 6 6  : 1
+O: 5 4 : 167 : 6 6  : 1
+O: 5 4 : 166 : 6 6  : 1
+O: 5 4 : 165 : 6 6  : 1
+O: 5 4 : 164 : 6 6  : 1
+O: 5 4 : 159 : 6 5  : 1
+O: 5 4 : 158 : 6 5  : 1
+O: 5 4 : 151 : 6 5  : 1
+O: 5 4 : 150 : 6 5  : 1
+O: 5 4 : 143 : 6 4  : 1
+O: 5 4 : 141 : 6 4  : 1
+O: 5 4 : 135 : 6 4  : 1
+O: 5 4 : 133 : 6 4  : 1
+O: 5 4 : 183 : 6 3  : 1
+O: 5 4 : 182 : 6 3  : 1
+O: 5 4 : 181 : 6 3  : 1
+O: 5 4 : 180 : 6 3  : 1
+O: 5 4 : 157 : 6 1  : 1
+O: 5 4 : 156 : 6 1  : 1
+O: 5 4 : 149 : 6 1  : 1
+O: 5 4 : 148 : 6 1  : 1
+O: 5 4 : 142 : 6 0  : 1
+O: 5 4 : 140 : 6 0  : 1
+O: 5 4 : 134 : 6 0  : 1
+O: 5 4 : 132 : 6 0  : 1
+O: 5 4 : 127 : 5 7  : 1
+O: 5 4 : 126 : 5 7  : 1
+O: 5 4 : 123 : 5 7  : 1
+O: 5 4 : 122 : 5 7  : 1
+O: 5 4 : 111 : 5 6  : 1
+O: 5 4 : 110 : 5 6  : 1
+O: 5 4 : 103 : 5 6  : 1
+O: 5 4 : 102 : 5 6  : 1
+O: 5 4 : 95 : 5 5  : 1
+O: 5 4 : 94 : 5 5  : 1
+O: 5 4 : 91 : 5 5  : 1
+O: 5 4 : 90 : 5 5  : 1
+O: 5 4 : 87 : 5 5  : 1
+O: 5 4 : 86 : 5 5  : 1
+O: 5 4 : 83 : 5 5  : 1
+O: 5 4 : 82 : 5 5  : 1
+O: 5 4 : 79 : 5 4  : 1
+O: 5 4 : 75 : 5 4  : 1
+O: 5 4 : 71 : 5 4  : 1
+O: 5 4 : 67 : 5 4  : 1
+O: 5 4 : 119 : 5 3  : 1
+O: 5 4 : 118 : 5 3  : 1
+O: 5 4 : 115 : 5 3  : 1
+O: 5 4 : 114 : 5 3  : 1
+O: 5 4 : 107 : 5 2  : 1
+O: 5 4 : 106 : 5 2  : 1
+O: 5 4 : 169 : 2 2  : 1
+O: 5 4 : 2 : 0 0  : 1
+O: 5 4 : 161 : 2 2  : 1
+O: 5 4 : 153 : 2 1  : 1
+O: 5 4 : 145 : 2 1  : 1
+O: 5 4 : 138 : 2 0  : 1
+O: 5 4 : 136 : 2 0  : 1
+O: 5 4 : 130 : 2 0  : 1
+O: 5 4 : 128 : 2 0  : 1
+O: 5 4 : 124 : 1 7  : 1
+O: 5 4 : 120 : 1 7  : 1
+O: 5 4 : 108 : 1 6  : 1
+O: 5 4 : 100 : 1 6  : 1
+O: 5 4 : 77 : 1 4  : 1
+O: 5 4 : 244 : 3 3  : 1
+O: 5 4 : 152 : 2 1  : 1
+O: 5 4 : 73 : 1 4  : 1
+O: 5 4 : 240 : 3 3  : 1
+O: 5 4 : 69 : 1 4  : 1
+O: 5 4 : 144 : 2 1  : 1
+O: 5 4 : 65 : 1 4  : 1
+O: 5 4 : 116 : 1 3  : 1
+O: 5 4 : 112 : 1 3  : 1
+O: 5 4 : 104 : 1 2  : 1
+O: 5 4 : 96 : 1 2  : 1
+O: 5 4 : 92 : 1 1  : 1
+O: 5 4 : 88 : 1 1  : 1
+O: 5 4 : 163 : 2 2  : 1
+O: 5 4 : 84 : 1 1  : 1
+O: 5 4 : 80 : 1 1  : 1
+O: 5 4 : 247 : 3 3  : 1
+O: 5 4 : 32 : 0 2  : 1
+O: 5 4 : 199 : 3 4  : 1
+O: 5 4 : 28 : 0 1  : 1
+O: 5 4 : 195 : 3 4  : 1
+O: 5 4 : 24 : 0 1  : 1
+O: 5 4 : 20 : 0 1  : 1
+O: 5 4 : 187 : 2 7  : 1
+O: 5 4 : 16 : 0 1  : 1
+O: 5 4 : 93 : 1 1  : 1
+O: 5 4 : 14 : 0 0  : 1
+O: 5 4 : 12 : 0 0  : 1
+O: 5 4 : 179 : 2 3  : 1
+O: 5 4 : 160 : 2 2  : 1
+O: 5 4 : 81 : 1 1  : 1
+O: 5 4 : 76 : 1 0  : 1
+O: 5 4 : 243 : 3 3  : 1
+O: 5 4 : 113 : 1 3  : 1
+O: 5 4 : 34 : 0 2  : 1
+O: 5 4 : 0 : 0 0  : 1
+O: 5 4 : 162 : 2 2  : 1
+O: 5 4 : 4 : 0 0  : 1
+O: 5 4 : 171 : 2 2  : 1
+O: 5 4 : 40 : 0 2  : 1
+O: 5 4 : 85 : 1 1  : 1
+O: 5 4 : 6 : 0 0  : 1
+O: 5 4 : 121 : 1 7  : 1
+O: 5 4 : 42 : 0 2  : 1
+O: 5 4 : 209 : 3 1  : 1
+O: 5 4 : 8 : 0 0  : 1
+O: 5 4 : 168 : 2 2  : 1
+O: 5 4 : 1 : 4 4  : 1
+O: 5 4 : 89 : 1 1  : 1
+O: 5 4 : 10 : 0 0  : 1
+O: 5 4 : 177 : 2 3  : 1
+O: 5 4 : 48 : 0 3  : 1
+O: 5 4 : 215 : 3 5  : 1
+O: 5 4 : 50 : 0 3  : 1
+O: 5 4 : 52 : 0 3  : 1
+O: 5 4 : 54 : 0 3  : 1
+O: 5 4 : 97 : 1 2  : 1
+O: 5 4 : 18 : 0 5  : 1
+O: 5 4 : 185 : 2 7  : 1
+O: 5 4 : 101 : 1 6  : 1
+O: 5 4 : 22 : 0 5  : 1
+O: 5 4 : 105 : 1 2  : 1
+O: 5 4 : 26 : 0 5  : 1
+O: 5 4 : 193 : 3 4  : 1
+O: 5 4 : 109 : 1 6  : 1
+O: 5 4 : 30 : 0 5  : 1
+O: 5 4 : 197 : 3 4  : 1
+O: 5 4 : 36 : 0 6  : 1
+O: 5 4 : 117 : 1 3  : 1
+O: 5 4 : 38 : 0 6  : 1
+O: 5 4 : 44 : 0 6  : 1
+O: 5 4 : 211 : 3 5  : 1
+O: 5 4 : 125 : 1 7  : 1
+O: 5 4 : 46 : 0 6  : 1
+O: 5 4 : 213 : 3 1  : 1
+O: 5 4 : 56 : 0 7  : 1
+O: 5 4 : 58 : 0 7  : 1
+O: 5 4 : 225 : 3 2  : 1
+O: 5 4 : 60 : 0 7  : 1
+O: 5 4 : 227 : 3 2  : 1
+O: 5 4 : 62 : 0 7  : 1
+O: 5 4 : 229 : 3 6  : 1
+O: 5 4 : 64 : 1 0  : 1
+O: 5 4 : 231 : 3 6  : 1
+O: 5 4 : 68 : 1 0  : 1
+O: 5 4 : 72 : 1 0  : 1
+O: 5 4 : 170 : 2 2  : 1
+O: 5 4 : 3 : 4 4  : 1
+O: 5 4 : 176 : 2 3  : 1
+O: 5 4 : 9 : 4 4  : 1
+O: 5 4 : 178 : 2 3  : 1
+O: 5 4 : 11 : 4 4  : 1
+O: 5 4 : 129 : 2 4  : 1
+O: 5 4 : 131 : 2 4  : 1
+O: 5 4 : 137 : 2 4  : 1
+O: 5 4 : 139 : 2 4  : 1
+O: 5 4 : 146 : 2 5  : 1
+O: 5 4 : 147 : 2 5  : 1
+O: 5 4 : 154 : 2 5  : 1
+O: 5 4 : 155 : 2 5  : 1
+O: 5 4 : 184 : 2 7  : 1
+O: 5 4 : 17 : 4 1  : 1
+O: 5 4 : 186 : 2 7  : 1
+O: 5 4 : 19 : 4 5  : 1
+O: 5 4 : 192 : 3 0  : 1
+O: 5 4 : 25 : 4 1  : 1
+O: 5 4 : 194 : 3 0  : 1
+O: 5 4 : 27 : 4 5  : 1
+O: 5 4 : 196 : 3 0  : 1
+O: 5 4 : 29 : 4 1  : 1
+O: 5 4 : 198 : 3 0  : 1
+O: 5 4 : 31 : 4 5  : 1
+O: 5 4 : 208 : 3 1  : 1
+O: 5 4 : 41 : 4 2  : 1
+O: 5 4 : 212 : 3 1  : 1
+O: 5 4 : 45 : 4 6  : 1
+O: 5 4 : 224 : 3 2  : 1
+O: 5 4 : 57 : 4 7  : 1
+O: 5 4 : 226 : 3 2  : 1
+O: 5 4 : 59 : 4 7  : 1
+O: 5 4 : 241 : 3 3  : 1
+O: 5 4 : 74 : 5 0  : 1
+O: 5 4 : 242 : 3 3  : 1
+O: 5 4 : 245 : 3 3  : 1
+O: 5 4 : 78 : 5 0  : 1
+O: 5 4 : 246 : 3 3  : 1
+O: 5 4 : 210 : 3 5  : 1
+O: 5 4 : 43 : 4 2  : 1
+O: 5 4 : 214 : 3 5  : 1
+O: 5 4 : 47 : 4 6  : 1
+O: 5 4 : 228 : 3 6  : 1
+O: 5 4 : 61 : 4 7  : 1
+O: 5 4 : 230 : 3 6  : 1
+O: 5 4 : 63 : 4 7  : 1
+O: 5 4 : 21 : 4 1  : 1
+O: 5 4 : 33 : 4 2  : 1
+O: 5 4 : 35 : 4 2  : 1
+O: 5 4 : 49 : 4 3  : 1
+O: 5 4 : 51 : 4 3  : 1
+O: 5 4 : 53 : 4 3  : 1
+O: 5 4 : 55 : 4 3  : 1
+O: 5 4 : 5 : 4 4  : 1
+O: 5 4 : 7 : 4 4  : 1
+O: 5 4 : 13 : 4 4  : 1
+O: 5 4 : 15 : 4 4  : 1
+O: 5 4 : 23 : 4 5  : 1
+O: 5 4 : 37 : 4 6  : 1
+O: 5 4 : 39 : 4 6  : 1
+O: 5 4 : 66 : 5 0  : 1
+O: 5 4 : 70 : 5 0  : 1
+O: 5 4 : 98 : 5 2  : 1
+O: 5 4 : 99 : 5 2  : 1
+O: 5 3 : 255 : 7 7  : 1
+O: 5 3 : 254 : 7 7  : 1
+O: 5 3 : 253 : 7 7  : 1
+O: 5 3 : 252 : 7 7  : 1
+O: 5 3 : 251 : 7 7  : 1
+O: 5 3 : 250 : 7 7  : 1
+O: 5 3 : 249 : 7 7  : 1
+O: 5 3 : 248 : 7 7  : 1
+O: 5 3 : 239 : 7 6  : 1
+O: 5 3 : 238 : 7 6  : 1
+O: 5 3 : 237 : 7 6  : 1
+O: 5 3 : 236 : 7 6  : 1
+O: 5 3 : 223 : 7 5  : 1
+O: 5 3 : 222 : 7 5  : 1
+O: 5 3 : 219 : 7 5  : 1
+O: 5 3 : 218 : 7 5  : 1
+O: 5 3 : 207 : 7 4  : 1
+O: 5 3 : 205 : 7 4  : 1
+O: 5 3 : 203 : 7 4  : 1
+O: 5 3 : 201 : 7 4  : 1
+O: 5 3 : 235 : 7 2  : 1
+O: 5 3 : 234 : 7 2  : 1
+O: 5 3 : 233 : 7 2  : 1
+O: 5 3 : 232 : 7 2  : 1
+O: 5 3 : 221 : 7 1  : 1
+O: 5 3 : 220 : 7 1  : 1
+O: 5 3 : 217 : 7 1  : 1
+O: 5 3 : 216 : 7 1  : 1
+O: 5 3 : 206 : 7 0  : 1
+O: 5 3 : 204 : 7 0  : 1
+O: 5 3 : 202 : 7 0  : 1
+O: 5 3 : 200 : 7 0  : 1
+O: 5 3 : 191 : 6 7  : 1
+O: 5 3 : 190 : 6 7  : 1
+O: 5 3 : 189 : 6 7  : 1
+O: 5 3 : 188 : 6 7  : 1
+O: 5 3 : 175 : 6 6  : 1
+O: 5 3 : 174 : 6 6  : 1
+O: 5 3 : 173 : 6 6  : 1
+O: 5 3 : 172 : 6 6  : 1
+O: 5 3 : 167 : 6 6  : 1
+O: 5 3 : 166 : 6 6  : 1
+O: 5 3 : 165 : 6 6  : 1
+O: 5 3 : 164 : 6 6  : 1
+O: 5 3 : 159 : 6 5  : 1
+O: 5 3 : 158 : 6 5  : 1
+O: 5 3 : 151 : 6 5  : 1
+O: 5 3 : 150 : 6 5  : 1
+O: 5 3 : 143 : 6 4  : 1
+O: 5 3 : 141 : 6 4  : 1
+O: 5 3 : 135 : 6 4  : 1
+O: 5 3 : 133 : 6 4  : 1
+O: 5 3 : 183 : 6 3  : 1
+O: 5 3 : 182 : 6 3  : 1
+O: 5 3 : 181 : 6 3  : 1
+O: 5 3 : 180 : 6 3  : 1
+O: 5 3 : 157 : 6 1  : 1
+O: 5 3 : 156 : 6 1  : 1
+O: 5 3 : 149 : 6 1  : 1
+O: 5 3 : 148 : 6 1  : 1
+O: 5 3 : 142 : 6 0  : 1
+O: 5 3 : 140 : 6 0  : 1
+O: 5 3 : 134 : 6 0  : 1
+O: 5 3 : 132 : 6 0  : 1
+O: 5 3 : 127 : 5 7  : 1
+O: 5 3 : 126 : 5 7  : 1
+O: 5 3 : 123 : 5 7  : 1
+O: 5 3 : 122 : 5 7  : 1
+O: 5 3 : 111 : 5 6  : 1
+O: 5 3 : 110 : 5 6  : 1
+O: 5 3 : 103 : 5 6  : 1
+O: 5 3 : 102 : 5 6  : 1
+O: 5 3 : 95 : 5 5  : 1
+O: 5 3 : 94 : 5 5  : 1
+O: 5 3 : 91 : 5 5  : 1
+O: 5 3 : 90 : 5 5  : 1
+O: 5 3 : 87 : 5 5  : 1
+O: 5 3 : 86 : 5 5  : 1
+O: 5 3 : 83 : 5 5  : 1
+O: 5 3 : 82 : 5 5  : 1
+O: 5 3 : 79 : 5 4  : 1
+O: 5 3 : 75 : 5 4  : 1
+O: 5 3 : 71 : 5 4  : 1
+O: 5 3 : 67 : 5 4  : 1
+O: 5 3 : 119 : 5 3  : 1
+O: 5 3 : 118 : 5 3  : 1
+O: 5 3 : 115 : 5 3  : 1
+O: 5 3 : 114 : 5 3  : 1
+O: 5 3 : 107 : 5 2  : 1
+O: 5 3 : 106 : 5 2  : 1
+O: 5 3 : 169 : 2 2  : 1
+O: 5 3 : 2 : 0 0  : 1
+O: 5 3 : 161 : 2 2  : 1
+O: 5 3 : 153 : 2 1  : 1
+O: 5 3 : 145 : 2 1  : 1
+O: 5 3 : 138 : 2 0  : 1
+O: 5 3 : 136 : 2 0  : 1
+O: 5 3 : 130 : 2 0  : 1
+O: 5 3 : 128 : 2 0  : 1
+O: 5 3 : 124 : 1 7  : 1
+O: 5 3 : 120 : 1 7  : 1
+O: 5 3 : 108 : 1 6  : 1
+O: 5 3 : 100 : 1 6  : 1
+O: 5 3 : 77 : 1 4  : 1
+O: 5 3 : 244 : 3 3  : 1
+O: 5 3 : 152 : 2 1  : 1
+O: 5 3 : 73 : 1 4  : 1
+O: 5 3 : 240 : 3 3  : 1
+O: 5 3 : 69 : 1 4  : 1
+O: 5 3 : 144 : 2 1  : 1
+O: 5 3 : 65 : 1 4  : 1
+O: 5 3 : 116 : 1 3  : 1
+O: 5 3 : 112 : 1 3  : 1
+O: 5 3 : 104 : 1 2  : 1
+O: 5 3 : 96 : 1 2  : 1
+O: 5 3 : 92 : 1 1  : 1
+O: 5 3 : 88 : 1 1  : 1
+O: 5 3 : 163 : 2 2  : 1
+O: 5 3 : 84 : 1 1  : 1
+O: 5 3 : 80 : 1 1  : 1
+O: 5 3 : 247 : 3 3  : 1
+O: 5 3 : 32 : 0 2  : 1
+O: 5 3 : 199 : 3 4  : 1
+O: 5 3 : 28 : 0 1  : 1
+O: 5 3 : 195 : 3 4  : 1
+O: 5 3 : 24 : 0 1  : 1
+O: 5 3 : 20 : 0 1  : 1
+O: 5 3 : 187 : 2 7  : 1
+O: 5 3 : 16 : 0 1  : 1
+O: 5 3 : 93 : 1 1  : 1
+O: 5 3 : 14 : 0 0  : 1
+O: 5 3 : 12 : 0 0  : 1
+O: 5 3 : 179 : 2 3  : 1
+O: 5 3 : 160 : 2 2  : 1
+O: 5 3 : 81 : 1 1  : 1
+O: 5 3 : 76 : 1 0  : 1
+O: 5 3 : 243 : 3 3  : 1
+O: 5 3 : 113 : 1 3  : 1
+O: 5 3 : 34 : 0 2  : 1
+O: 5 3 : 0 : 0 0  : 1
+O: 5 3 : 162 : 2 2  : 1
+O: 5 3 : 4 : 0 0  : 1
+O: 5 3 : 171 : 2 2  : 1
+O: 5 3 : 40 : 0 2  : 1
+O: 5 3 : 85 : 1 1  : 1
+O: 5 3 : 6 : 0 0  : 1
+O: 5 3 : 121 : 1 7  : 1
+O: 5 3 : 42 : 0 2  : 1
+O: 5 3 : 209 : 3 1  : 1
+O: 5 3 : 8 : 0 0  : 1
+O: 5 3 : 168 : 2 2  : 1
+O: 5 3 : 1 : 4 4  : 1
+O: 5 3 : 89 : 1 1  : 1
+O: 5 3 : 10 : 0 0  : 1
+O: 5 3 : 177 : 2 3  : 1
+O: 5 3 : 48 : 0 3  : 1
+O: 5 3 : 215 : 3 5  : 1
+O: 5 3 : 50 : 0 3  : 1
+O: 5 3 : 52 : 0 3  : 1
+O: 5 3 : 54 : 0 3  : 1
+O: 5 3 : 97 : 1 2  : 1
+O: 5 3 : 18 : 0 5  : 1
+O: 5 3 : 185 : 2 7  : 1
+O: 5 3 : 101 : 1 6  : 1
+O: 5 3 : 22 : 0 5  : 1
+O: 5 3 : 105 : 1 2  : 1
+O: 5 3 : 26 : 0 5  : 1
+O: 5 3 : 193 : 3 4  : 1
+O: 5 3 : 109 : 1 6  : 1
+O: 5 3 : 30 : 0 5  : 1
+O: 5 3 : 197 : 3 4  : 1
+O: 5 3 : 36 : 0 6  : 1
+O: 5 3 : 117 : 1 3  : 1
+O: 5 3 : 38 : 0 6  : 1
+O: 5 3 : 44 : 0 6  : 1
+O: 5 3 : 211 : 3 5  : 1
+O: 5 3 : 125 : 1 7  : 1
+O: 5 3 : 46 : 0 6  : 1
+O: 5 3 : 213 : 3 1  : 1
+O: 5 3 : 56 : 0 7  : 1
+O: 5 3 : 58 : 0 7  : 1
+O: 5 3 : 225 : 3 2  : 1
+O: 5 3 : 60 : 0 7  : 1
+O: 5 3 : 227 : 3 2  : 1
+O: 5 3 : 62 : 0 7  : 1
+O: 5 3 : 229 : 3 6  : 1
+O: 5 3 : 64 : 1 0  : 1
+O: 5 3 : 231 : 3 6  : 1
+O: 5 3 : 68 : 1 0  : 1
+O: 5 3 : 72 : 1 0  : 1
+O: 5 3 : 170 : 2 2  : 1
+O: 5 3 : 3 : 4 4  : 1
+O: 5 3 : 176 : 2 3  : 1
+O: 5 3 : 9 : 4 4  : 1
+O: 5 3 : 178 : 2 3  : 1
+O: 5 3 : 11 : 4 4  : 1
+O: 5 3 : 129 : 2 4  : 1
+O: 5 3 : 131 : 2 4  : 1
+O: 5 3 : 137 : 2 4  : 1
+O: 5 3 : 139 : 2 4  : 1
+O: 5 3 : 146 : 2 5  : 1
+O: 5 3 : 147 : 2 5  : 1
+O: 5 3 : 154 : 2 5  : 1
+O: 5 3 : 155 : 2 5  : 1
+O: 5 3 : 184 : 2 7  : 1
+O: 5 3 : 17 : 4 1  : 1
+O: 5 3 : 186 : 2 7  : 1
+O: 5 3 : 19 : 4 5  : 1
+O: 5 3 : 192 : 3 0  : 1
+O: 5 3 : 25 : 4 1  : 1
+O: 5 3 : 194 : 3 0  : 1
+O: 5 3 : 27 : 4 5  : 1
+O: 5 3 : 196 : 3 0  : 1
+O: 5 3 : 29 : 4 1  : 1
+O: 5 3 : 198 : 3 0  : 1
+O: 5 3 : 31 : 4 5  : 1
+O: 5 3 : 208 : 3 1  : 1
+O: 5 3 : 41 : 4 2  : 1
+O: 5 3 : 212 : 3 1  : 1
+O: 5 3 : 45 : 4 6  : 1
+O: 5 3 : 224 : 3 2  : 1
+O: 5 3 : 57 : 4 7  : 1
+O: 5 3 : 226 : 3 2  : 1
+O: 5 3 : 59 : 4 7  : 1
+O: 5 3 : 241 : 3 3  : 1
+O: 5 3 : 74 : 5 0  : 1
+O: 5 3 : 242 : 3 3  : 1
+O: 5 3 : 245 : 3 3  : 1
+O: 5 3 : 78 : 5 0  : 1
+O: 5 3 : 246 : 3 3  : 1
+O: 5 3 : 210 : 3 5  : 1
+O: 5 3 : 43 : 4 2  : 1
+O: 5 3 : 214 : 3 5  : 1
+O: 5 3 : 47 : 4 6  : 1
+O: 5 3 : 228 : 3 6  : 1
+O: 5 3 : 61 : 4 7  : 1
+O: 5 3 : 230 : 3 6  : 1
+O: 5 3 : 63 : 4 7  : 1
+O: 5 3 : 21 : 4 1  : 1
+O: 5 3 : 33 : 4 2  : 1
+O: 5 3 : 35 : 4 2  : 1
+O: 5 3 : 49 : 4 3  : 1
+O: 5 3 : 51 : 4 3  : 1
+O: 5 3 : 53 : 4 3  : 1
+O: 5 3 : 55 : 4 3  : 1
+O: 5 3 : 5 : 4 4  : 1
+O: 5 3 : 7 : 4 4  : 1
+O: 5 3 : 13 : 4 4  : 1
+O: 5 3 : 15 : 4 4  : 1
+O: 5 3 : 23 : 4 5  : 1
+O: 5 3 : 37 : 4 6  : 1
+O: 5 3 : 39 : 4 6  : 1
+O: 5 3 : 66 : 5 0  : 1
+O: 5 3 : 70 : 5 0  : 1
+O: 5 3 : 98 : 5 2  : 1
+O: 5 3 : 99 : 5 2  : 1
+O: 5 2 : 255 : 7 7  : 1
+O: 5 2 : 254 : 7 7  : 1
+O: 5 2 : 253 : 7 7  : 1
+O: 5 2 : 252 : 7 7  : 1
+O: 5 2 : 251 : 7 7  : 1
+O: 5 2 : 250 : 7 7  : 1
+O: 5 2 : 249 : 7 7  : 1
+O: 5 2 : 248 : 7 7  : 1
+O: 5 2 : 239 : 7 6  : 1
+O: 5 2 : 238 : 7 6  : 1
+O: 5 2 : 237 : 7 6  : 1
+O: 5 2 : 236 : 7 6  : 1
+O: 5 2 : 223 : 7 5  : 1
+O: 5 2 : 222 : 7 5  : 1
+O: 5 2 : 219 : 7 5  : 1
+O: 5 2 : 218 : 7 5  : 1
+O: 5 2 : 207 : 7 4  : 1
+O: 5 2 : 205 : 7 4  : 1
+O: 5 2 : 203 : 7 4  : 1
+O: 5 2 : 201 : 7 4  : 1
+O: 5 2 : 235 : 7 2  : 1
+O: 5 2 : 234 : 7 2  : 1
+O: 5 2 : 233 : 7 2  : 1
+O: 5 2 : 232 : 7 2  : 1
+O: 5 2 : 221 : 7 1  : 1
+O: 5 2 : 220 : 7 1  : 1
+O: 5 2 : 217 : 7 1  : 1
+O: 5 2 : 216 : 7 1  : 1
+O: 5 2 : 206 : 7 0  : 1
+O: 5 2 : 204 : 7 0  : 1
+O: 5 2 : 202 : 7 0  : 1
+O: 5 2 : 200 : 7 0  : 1
+O: 5 2 : 191 : 6 7  : 1
+O: 5 2 : 190 : 6 7  : 1
+O: 5 2 : 189 : 6 7  : 1
+O: 5 2 : 188 : 6 7  : 1
+O: 5 2 : 175 : 6 6  : 1
+O: 5 2 : 174 : 6 6  : 1
+O: 5 2 : 173 : 6 6  : 1
+O: 5 2 : 172 : 6 6  : 1
+O: 5 2 : 167 : 6 6  : 1
+O: 5 2 : 166 : 6 6  : 1
+O: 5 2 : 165 : 6 6  : 1
+O: 5 2 : 164 : 6 6  : 1
+O: 5 2 : 159 : 6 5  : 1
+O: 5 2 : 158 : 6 5  : 1
+O: 5 2 : 151 : 6 5  : 1
+O: 5 2 : 150 : 6 5  : 1
+O: 5 2 : 143 : 6 4  : 1
+O: 5 2 : 141 : 6 4  : 1
+O: 5 2 : 135 : 6 4  : 1
+O: 5 2 : 133 : 6 4  : 1
+O: 5 2 : 183 : 6 3  : 1
+O: 5 2 : 182 : 6 3  : 1
+O: 5 2 : 181 : 6 3  : 1
+O: 5 2 : 180 : 6 3  : 1
+O: 5 2 : 157 : 6 1  : 1
+O: 5 2 : 156 : 6 1  : 1
+O: 5 2 : 149 : 6 1  : 1
+O: 5 2 : 148 : 6 1  : 1
+O: 5 2 : 142 : 6 0  : 1
+O: 5 2 : 140 : 6 0  : 1
+O: 5 2 : 134 : 6 0  : 1
+O: 5 2 : 132 : 6 0  : 1
+O: 5 2 : 127 : 5 7  : 1
+O: 5 2 : 126 : 5 7  : 1
+O: 5 2 : 123 : 5 7  : 1
+O: 5 2 : 122 : 5 7  : 1
+O: 5 2 : 111 : 5 6  : 1
+O: 5 2 : 110 : 5 6  : 1
+O: 5 2 : 103 : 5 6  : 1
+O: 5 2 : 102 : 5 6  : 1
+O: 5 2 : 95 : 5 5  : 1
+O: 5 2 : 94 : 5 5  : 1
+O: 5 2 : 91 : 5 5  : 1
+O: 5 2 : 90 : 5 5  : 1
+O: 5 2 : 87 : 5 5  : 1
+O: 5 2 : 86 : 5 5  : 1
+O: 5 2 : 83 : 5 5  : 1
+O: 5 2 : 82 : 5 5  : 1
+O: 5 2 : 79 : 5 4  : 1
+O: 5 2 : 75 : 5 4  : 1
+O: 5 2 : 71 : 5 4  : 1
+O: 5 2 : 67 : 5 4  : 1
+O: 5 2 : 119 : 5 3  : 1
+O: 5 2 : 118 : 5 3  : 1
+O: 5 2 : 115 : 5 3  : 1
+O: 5 2 : 114 : 5 3  : 1
+O: 5 2 : 107 : 5 2  : 1
+O: 5 2 : 106 : 5 2  : 1
+O: 5 2 : 169 : 2 2  : 1
+O: 5 2 : 2 : 0 0  : 1
+O: 5 2 : 161 : 2 2  : 1
+O: 5 2 : 153 : 2 1  : 1
+O: 5 2 : 145 : 2 1  : 1
+O: 5 2 : 138 : 2 0  : 1
+O: 5 2 : 136 : 2 0  : 1
+O: 5 2 : 130 : 2 0  : 1
+O: 5 2 : 128 : 2 0  : 1
+O: 5 2 : 124 : 1 7  : 1
+O: 5 2 : 120 : 1 7  : 1
+O: 5 2 : 108 : 1 6  : 1
+O: 5 2 : 100 : 1 6  : 1
+O: 5 2 : 77 : 1 4  : 1
+O: 5 2 : 244 : 3 3  : 1
+O: 5 2 : 152 : 2 1  : 1
+O: 5 2 : 73 : 1 4  : 1
+O: 5 2 : 240 : 3 3  : 1
+O: 5 2 : 69 : 1 4  : 1
+O: 5 2 : 144 : 2 1  : 1
+O: 5 2 : 65 : 1 4  : 1
+O: 5 2 : 116 : 1 3  : 1
+O: 5 2 : 112 : 1 3  : 1
+O: 5 2 : 104 : 1 2  : 1
+O: 5 2 : 96 : 1 2  : 1
+O: 5 2 : 92 : 1 1  : 1
+O: 5 2 : 88 : 1 1  : 1
+O: 5 2 : 163 : 2 2  : 1
+O: 5 2 : 84 : 1 1  : 1
+O: 5 2 : 80 : 1 1  : 1
+O: 5 2 : 247 : 3 3  : 1
+O: 5 2 : 32 : 0 2  : 1
+O: 5 2 : 199 : 3 4  : 1
+O: 5 2 : 28 : 0 1  : 1
+O: 5 2 : 195 : 3 4  : 1
+O: 5 2 : 24 : 0 1  : 1
+O: 5 2 : 20 : 0 1  : 1
+O: 5 2 : 187 : 2 7  : 1
+O: 5 2 : 16 : 0 1  : 1
+O: 5 2 : 93 : 1 1  : 1
+O: 5 2 : 14 : 0 0  : 1
+O: 5 2 : 12 : 0 0  : 1
+O: 5 2 : 179 : 2 3  : 1
+O: 5 2 : 160 : 2 2  : 1
+O: 5 2 : 81 : 1 1  : 1
+O: 5 2 : 76 : 1 0  : 1
+O: 5 2 : 243 : 3 3  : 1
+O: 5 2 : 113 : 1 3  : 1
+O: 5 2 : 34 : 0 2  : 1
+O: 5 2 : 0 : 0 0  : 1
+O: 5 2 : 162 : 2 2  : 1
+O: 5 2 : 4 : 0 0  : 1
+O: 5 2 : 171 : 2 2  : 1
+O: 5 2 : 40 : 0 2  : 1
+O: 5 2 : 85 : 1 1  : 1
+O: 5 2 : 6 : 0 0  : 1
+O: 5 2 : 121 : 1 7  : 1
+O: 5 2 : 42 : 0 2  : 1
+O: 5 2 : 209 : 3 1  : 1
+O: 5 2 : 8 : 0 0  : 1
+O: 5 2 : 168 : 2 2  : 1
+O: 5 2 : 1 : 4 4  : 1
+O: 5 2 : 89 : 1 1  : 1
+O: 5 2 : 10 : 0 0  : 1
+O: 5 2 : 177 : 2 3  : 1
+O: 5 2 : 48 : 0 3  : 1
+O: 5 2 : 215 : 3 5  : 1
+O: 5 2 : 50 : 0 3  : 1
+O: 5 2 : 52 : 0 3  : 1
+O: 5 2 : 54 : 0 3  : 1
+O: 5 2 : 97 : 1 2  : 1
+O: 5 2 : 18 : 0 5  : 1
+O: 5 2 : 185 : 2 7  : 1
+O: 5 2 : 101 : 1 6  : 1
+O: 5 2 : 22 : 0 5  : 1
+O: 5 2 : 105 : 1 2  : 1
+O: 5 2 : 26 : 0 5  : 1
+O: 5 2 : 193 : 3 4  : 1
+O: 5 2 : 109 : 1 6  : 1
+O: 5 2 : 30 : 0 5  : 1
+O: 5 2 : 197 : 3 4  : 1
+O: 5 2 : 36 : 0 6  : 1
+O: 5 2 : 117 : 1 3  : 1
+O: 5 2 : 38 : 0 6  : 1
+O: 5 2 : 44 : 0 6  : 1
+O: 5 2 : 211 : 3 5  : 1
+O: 5 2 : 125 : 1 7  : 1
+O: 5 2 : 46 : 0 6  : 1
+O: 5 2 : 213 : 3 1  : 1
+O: 5 2 : 56 : 0 7  : 1
+O: 5 2 : 58 : 0 7  : 1
+O: 5 2 : 225 : 3 2  : 1
+O: 5 2 : 60 : 0 7  : 1
+O: 5 2 : 227 : 3 2  : 1
+O: 5 2 : 62 : 0 7  : 1
+O: 5 2 : 229 : 3 6  : 1
+O: 5 2 : 64 : 1 0  : 1
+O: 5 2 : 231 : 3 6  : 1
+O: 5 2 : 68 : 1 0  : 1
+O: 5 2 : 72 : 1 0  : 1
+O: 5 2 : 170 : 2 2  : 1
+O: 5 2 : 3 : 4 4  : 1
+O: 5 2 : 176 : 2 3  : 1
+O: 5 2 : 9 : 4 4  : 1
+O: 5 2 : 178 : 2 3  : 1
+O: 5 2 : 11 : 4 4  : 1
+O: 5 2 : 129 : 2 4  : 1
+O: 5 2 : 131 : 2 4  : 1
+O: 5 2 : 137 : 2 4  : 1
+O: 5 2 : 139 : 2 4  : 1
+O: 5 2 : 146 : 2 5  : 1
+O: 5 2 : 147 : 2 5  : 1
+O: 5 2 : 154 : 2 5  : 1
+O: 5 2 : 155 : 2 5  : 1
+O: 5 2 : 184 : 2 7  : 1
+O: 5 2 : 17 : 4 1  : 1
+O: 5 2 : 186 : 2 7  : 1
+O: 5 2 : 19 : 4 5  : 1
+O: 5 2 : 192 : 3 0  : 1
+O: 5 2 : 25 : 4 1  : 1
+O: 5 2 : 194 : 3 0  : 1
+O: 5 2 : 27 : 4 5  : 1
+O: 5 2 : 196 : 3 0  : 1
+O: 5 2 : 29 : 4 1  : 1
+O: 5 2 : 198 : 3 0  : 1
+O: 5 2 : 31 : 4 5  : 1
+O: 5 2 : 208 : 3 1  : 1
+O: 5 2 : 41 : 4 2  : 1
+O: 5 2 : 212 : 3 1  : 1
+O: 5 2 : 45 : 4 6  : 1
+O: 5 2 : 224 : 3 2  : 1
+O: 5 2 : 57 : 4 7  : 1
+O: 5 2 : 226 : 3 2  : 1
+O: 5 2 : 59 : 4 7  : 1
+O: 5 2 : 241 : 3 3  : 1
+O: 5 2 : 74 : 5 0  : 1
+O: 5 2 : 242 : 3 3  : 1
+O: 5 2 : 245 : 3 3  : 1
+O: 5 2 : 78 : 5 0  : 1
+O: 5 2 : 246 : 3 3  : 1
+O: 5 2 : 210 : 3 5  : 1
+O: 5 2 : 43 : 4 2  : 1
+O: 5 2 : 214 : 3 5  : 1
+O: 5 2 : 47 : 4 6  : 1
+O: 5 2 : 228 : 3 6  : 1
+O: 5 2 : 61 : 4 7  : 1
+O: 5 2 : 230 : 3 6  : 1
+O: 5 2 : 63 : 4 7  : 1
+O: 5 2 : 21 : 4 1  : 1
+O: 5 2 : 33 : 4 2  : 1
+O: 5 2 : 35 : 4 2  : 1
+O: 5 2 : 49 : 4 3  : 1
+O: 5 2 : 51 : 4 3  : 1
+O: 5 2 : 53 : 4 3  : 1
+O: 5 2 : 55 : 4 3  : 1
+O: 5 2 : 5 : 4 4  : 1
+O: 5 2 : 7 : 4 4  : 1
+O: 5 2 : 13 : 4 4  : 1
+O: 5 2 : 15 : 4 4  : 1
+O: 5 2 : 23 : 4 5  : 1
+O: 5 2 : 37 : 4 6  : 1
+O: 5 2 : 39 : 4 6  : 1
+O: 5 2 : 66 : 5 0  : 1
+O: 5 2 : 70 : 5 0  : 1
+O: 5 2 : 98 : 5 2  : 1
+O: 5 2 : 99 : 5 2  : 1
+O: 5 1 : 255 : 7 7  : 1
+O: 5 1 : 254 : 7 7  : 1
+O: 5 1 : 253 : 7 7  : 1
+O: 5 1 : 252 : 7 7  : 1
+O: 5 1 : 251 : 7 7  : 1
+O: 5 1 : 250 : 7 7  : 1
+O: 5 1 : 249 : 7 7  : 1
+O: 5 1 : 248 : 7 7  : 1
+O: 5 1 : 239 : 7 6  : 1
+O: 5 1 : 238 : 7 6  : 1
+O: 5 1 : 237 : 7 6  : 1
+O: 5 1 : 236 : 7 6  : 1
+O: 5 1 : 223 : 7 5  : 1
+O: 5 1 : 222 : 7 5  : 1
+O: 5 1 : 219 : 7 5  : 1
+O: 5 1 : 218 : 7 5  : 1
+O: 5 1 : 207 : 7 4  : 1
+O: 5 1 : 205 : 7 4  : 1
+O: 5 1 : 203 : 7 4  : 1
+O: 5 1 : 201 : 7 4  : 1
+O: 5 1 : 235 : 7 2  : 1
+O: 5 1 : 234 : 7 2  : 1
+O: 5 1 : 233 : 7 2  : 1
+O: 5 1 : 232 : 7 2  : 1
+O: 5 1 : 221 : 7 1  : 1
+O: 5 1 : 220 : 7 1  : 1
+O: 5 1 : 217 : 7 1  : 1
+O: 5 1 : 216 : 7 1  : 1
+O: 5 1 : 206 : 7 0  : 1
+O: 5 1 : 204 : 7 0  : 1
+O: 5 1 : 202 : 7 0  : 1
+O: 5 1 : 200 : 7 0  : 1
+O: 5 1 : 191 : 6 7  : 1
+O: 5 1 : 190 : 6 7  : 1
+O: 5 1 : 189 : 6 7  : 1
+O: 5 1 : 188 : 6 7  : 1
+O: 5 1 : 175 : 6 6  : 1
+O: 5 1 : 174 : 6 6  : 1
+O: 5 1 : 173 : 6 6  : 1
+O: 5 1 : 172 : 6 6  : 1
+O: 5 1 : 167 : 6 6  : 1
+O: 5 1 : 166 : 6 6  : 1
+O: 5 1 : 165 : 6 6  : 1
+O: 5 1 : 164 : 6 6  : 1
+O: 5 1 : 159 : 6 5  : 1
+O: 5 1 : 158 : 6 5  : 1
+O: 5 1 : 151 : 6 5  : 1
+O: 5 1 : 150 : 6 5  : 1
+O: 5 1 : 143 : 6 4  : 1
+O: 5 1 : 141 : 6 4  : 1
+O: 5 1 : 135 : 6 4  : 1
+O: 5 1 : 133 : 6 4  : 1
+O: 5 1 : 183 : 6 3  : 1
+O: 5 1 : 182 : 6 3  : 1
+O: 5 1 : 181 : 6 3  : 1
+O: 5 1 : 180 : 6 3  : 1
+O: 5 1 : 157 : 6 1  : 1
+O: 5 1 : 156 : 6 1  : 1
+O: 5 1 : 149 : 6 1  : 1
+O: 5 1 : 148 : 6 1  : 1
+O: 5 1 : 142 : 6 0  : 1
+O: 5 1 : 140 : 6 0  : 1
+O: 5 1 : 134 : 6 0  : 1
+O: 5 1 : 132 : 6 0  : 1
+O: 5 1 : 127 : 5 7  : 1
+O: 5 1 : 126 : 5 7  : 1
+O: 5 1 : 123 : 5 7  : 1
+O: 5 1 : 122 : 5 7  : 1
+O: 5 1 : 111 : 5 6  : 1
+O: 5 1 : 110 : 5 6  : 1
+O: 5 1 : 103 : 5 6  : 1
+O: 5 1 : 102 : 5 6  : 1
+O: 5 1 : 95 : 5 5  : 1
+O: 5 1 : 94 : 5 5  : 1
+O: 5 1 : 91 : 5 5  : 1
+O: 5 1 : 90 : 5 5  : 1
+O: 5 1 : 87 : 5 5  : 1
+O: 5 1 : 86 : 5 5  : 1
+O: 5 1 : 83 : 5 5  : 1
+O: 5 1 : 82 : 5 5  : 1
+O: 5 1 : 79 : 5 4  : 1
+O: 5 1 : 75 : 5 4  : 1
+O: 5 1 : 71 : 5 4  : 1
+O: 5 1 : 67 : 5 4  : 1
+O: 5 1 : 119 : 5 3  : 1
+O: 5 1 : 118 : 5 3  : 1
+O: 5 1 : 115 : 5 3  : 1
+O: 5 1 : 114 : 5 3  : 1
+O: 5 1 : 107 : 5 2  : 1
+O: 5 1 : 106 : 5 2  : 1
+O: 5 1 : 169 : 2 2  : 1
+O: 5 1 : 2 : 0 0  : 1
+O: 5 1 : 161 : 2 2  : 1
+O: 5 1 : 153 : 2 1  : 1
+O: 5 1 : 145 : 2 1  : 1
+O: 5 1 : 138 : 2 0  : 1
+O: 5 1 : 136 : 2 0  : 1
+O: 5 1 : 130 : 2 0  : 1
+O: 5 1 : 128 : 2 0  : 1
+O: 5 1 : 124 : 1 7  : 1
+O: 5 1 : 120 : 1 7  : 1
+O: 5 1 : 108 : 1 6  : 1
+O: 5 1 : 100 : 1 6  : 1
+O: 5 1 : 77 : 1 4  : 1
+O: 5 1 : 244 : 3 3  : 1
+O: 5 1 : 152 : 2 1  : 1
+O: 5 1 : 73 : 1 4  : 1
+O: 5 1 : 240 : 3 3  : 1
+O: 5 1 : 69 : 1 4  : 1
+O: 5 1 : 144 : 2 1  : 1
+O: 5 1 : 65 : 1 4  : 1
+O: 5 1 : 116 : 1 3  : 1
+O: 5 1 : 112 : 1 3  : 1
+O: 5 1 : 104 : 1 2  : 1
+O: 5 1 : 96 : 1 2  : 1
+O: 5 1 : 92 : 1 1  : 1
+O: 5 1 : 88 : 1 1  : 1
+O: 5 1 : 163 : 2 2  : 1
+O: 5 1 : 84 : 1 1  : 1
+O: 5 1 : 80 : 1 1  : 1
+O: 5 1 : 247 : 3 3  : 1
+O: 5 1 : 32 : 0 2  : 1
+O: 5 1 : 199 : 3 4  : 1
+O: 5 1 : 28 : 0 1  : 1
+O: 5 1 : 195 : 3 4  : 1
+O: 5 1 : 24 : 0 1  : 1
+O: 5 1 : 20 : 0 1  : 1
+O: 5 1 : 187 : 2 7  : 1
+O: 5 1 : 16 : 0 1  : 1
+O: 5 1 : 93 : 1 1  : 1
+O: 5 1 : 14 : 0 0  : 1
+O: 5 1 : 12 : 0 0  : 1
+O: 5 1 : 179 : 2 3  : 1
+O: 5 1 : 160 : 2 2  : 1
+O: 5 1 : 81 : 1 1  : 1
+O: 5 1 : 76 : 1 0  : 1
+O: 5 1 : 243 : 3 3  : 1
+O: 5 1 : 113 : 1 3  : 1
+O: 5 1 : 34 : 0 2  : 1
+O: 5 1 : 0 : 0 0  : 1
+O: 5 1 : 162 : 2 2  : 1
+O: 5 1 : 4 : 0 0  : 1
+O: 5 1 : 171 : 2 2  : 1
+O: 5 1 : 40 : 0 2  : 1
+O: 5 1 : 85 : 1 1  : 1
+O: 5 1 : 6 : 0 0  : 1
+O: 5 1 : 121 : 1 7  : 1
+O: 5 1 : 42 : 0 2  : 1
+O: 5 1 : 209 : 3 1  : 1
+O: 5 1 : 8 : 0 0  : 1
+O: 5 1 : 168 : 2 2  : 1
+O: 5 1 : 1 : 4 4  : 1
+O: 5 1 : 89 : 1 1  : 1
+O: 5 1 : 10 : 0 0  : 1
+O: 5 1 : 177 : 2 3  : 1
+O: 5 1 : 48 : 0 3  : 1
+O: 5 1 : 215 : 3 5  : 1
+O: 5 1 : 50 : 0 3  : 1
+O: 5 1 : 52 : 0 3  : 1
+O: 5 1 : 54 : 0 3  : 1
+O: 5 1 : 97 : 1 2  : 1
+O: 5 1 : 18 : 0 5  : 1
+O: 5 1 : 185 : 2 7  : 1
+O: 5 1 : 101 : 1 6  : 1
+O: 5 1 : 22 : 0 5  : 1
+O: 5 1 : 105 : 1 2  : 1
+O: 5 1 : 26 : 0 5  : 1
+O: 5 1 : 193 : 3 4  : 1
+O: 5 1 : 109 : 1 6  : 1
+O: 5 1 : 30 : 0 5  : 1
+O: 5 1 : 197 : 3 4  : 1
+O: 5 1 : 36 : 0 6  : 1
+O: 5 1 : 117 : 1 3  : 1
+O: 5 1 : 38 : 0 6  : 1
+O: 5 1 : 44 : 0 6  : 1
+O: 5 1 : 211 : 3 5  : 1
+O: 5 1 : 125 : 1 7  : 1
+O: 5 1 : 46 : 0 6  : 1
+O: 5 1 : 213 : 3 1  : 1
+O: 5 1 : 56 : 0 7  : 1
+O: 5 1 : 58 : 0 7  : 1
+O: 5 1 : 225 : 3 2  : 1
+O: 5 1 : 60 : 0 7  : 1
+O: 5 1 : 227 : 3 2  : 1
+O: 5 1 : 62 : 0 7  : 1
+O: 5 1 : 229 : 3 6  : 1
+O: 5 1 : 64 : 1 0  : 1
+O: 5 1 : 231 : 3 6  : 1
+O: 5 1 : 68 : 1 0  : 1
+O: 5 1 : 72 : 1 0  : 1
+O: 5 1 : 170 : 2 2  : 1
+O: 5 1 : 3 : 4 4  : 1
+O: 5 1 : 176 : 2 3  : 1
+O: 5 1 : 9 : 4 4  : 1
+O: 5 1 : 178 : 2 3  : 1
+O: 5 1 : 11 : 4 4  : 1
+O: 5 1 : 129 : 2 4  : 1
+O: 5 1 : 131 : 2 4  : 1
+O: 5 1 : 137 : 2 4  : 1
+O: 5 1 : 139 : 2 4  : 1
+O: 5 1 : 146 : 2 5  : 1
+O: 5 1 : 147 : 2 5  : 1
+O: 5 1 : 154 : 2 5  : 1
+O: 5 1 : 155 : 2 5  : 1
+O: 5 1 : 184 : 2 7  : 1
+O: 5 1 : 17 : 4 1  : 1
+O: 5 1 : 186 : 2 7  : 1
+O: 5 1 : 19 : 4 5  : 1
+O: 5 1 : 192 : 3 0  : 1
+O: 5 1 : 25 : 4 1  : 1
+O: 5 1 : 194 : 3 0  : 1
+O: 5 1 : 27 : 4 5  : 1
+O: 5 1 : 196 : 3 0  : 1
+O: 5 1 : 29 : 4 1  : 1
+O: 5 1 : 198 : 3 0  : 1
+O: 5 1 : 31 : 4 5  : 1
+O: 5 1 : 208 : 3 1  : 1
+O: 5 1 : 41 : 4 2  : 1
+O: 5 1 : 212 : 3 1  : 1
+O: 5 1 : 45 : 4 6  : 1
+O: 5 1 : 224 : 3 2  : 1
+O: 5 1 : 57 : 4 7  : 1
+O: 5 1 : 226 : 3 2  : 1
+O: 5 1 : 59 : 4 7  : 1
+O: 5 1 : 241 : 3 3  : 1
+O: 5 1 : 74 : 5 0  : 1
+O: 5 1 : 242 : 3 3  : 1
+O: 5 1 : 245 : 3 3  : 1
+O: 5 1 : 78 : 5 0  : 1
+O: 5 1 : 246 : 3 3  : 1
+O: 5 1 : 210 : 3 5  : 1
+O: 5 1 : 43 : 4 2  : 1
+O: 5 1 : 214 : 3 5  : 1
+O: 5 1 : 47 : 4 6  : 1
+O: 5 1 : 228 : 3 6  : 1
+O: 5 1 : 61 : 4 7  : 1
+O: 5 1 : 230 : 3 6  : 1
+O: 5 1 : 63 : 4 7  : 1
+O: 5 1 : 21 : 4 1  : 1
+O: 5 1 : 33 : 4 2  : 1
+O: 5 1 : 35 : 4 2  : 1
+O: 5 1 : 49 : 4 3  : 1
+O: 5 1 : 51 : 4 3  : 1
+O: 5 1 : 53 : 4 3  : 1
+O: 5 1 : 55 : 4 3  : 1
+O: 5 1 : 5 : 4 4  : 1
+O: 5 1 : 7 : 4 4  : 1
+O: 5 1 : 13 : 4 4  : 1
+O: 5 1 : 15 : 4 4  : 1
+O: 5 1 : 23 : 4 5  : 1
+O: 5 1 : 37 : 4 6  : 1
+O: 5 1 : 39 : 4 6  : 1
+O: 5 1 : 66 : 5 0  : 1
+O: 5 1 : 70 : 5 0  : 1
+O: 5 1 : 98 : 5 2  : 1
+O: 5 1 : 99 : 5 2  : 1
+O: 5 0 : 255 : 7 7  : 1
+O: 5 0 : 254 : 7 7  : 1
+O: 5 0 : 253 : 7 7  : 1
+O: 5 0 : 252 : 7 7  : 1
+O: 5 0 : 251 : 7 7  : 1
+O: 5 0 : 250 : 7 7  : 1
+O: 5 0 : 249 : 7 7  : 1
+O: 5 0 : 248 : 7 7  : 1
+O: 5 0 : 239 : 7 6  : 1
+O: 5 0 : 238 : 7 6  : 1
+O: 5 0 : 237 : 7 6  : 1
+O: 5 0 : 236 : 7 6  : 1
+O: 5 0 : 223 : 7 5  : 1
+O: 5 0 : 222 : 7 5  : 1
+O: 5 0 : 219 : 7 5  : 1
+O: 5 0 : 218 : 7 5  : 1
+O: 5 0 : 207 : 7 4  : 1
+O: 5 0 : 205 : 7 4  : 1
+O: 5 0 : 203 : 7 4  : 1
+O: 5 0 : 201 : 7 4  : 1
+O: 5 0 : 235 : 7 2  : 1
+O: 5 0 : 234 : 7 2  : 1
+O: 5 0 : 233 : 7 2  : 1
+O: 5 0 : 232 : 7 2  : 1
+O: 5 0 : 221 : 7 1  : 1
+O: 5 0 : 220 : 7 1  : 1
+O: 5 0 : 217 : 7 1  : 1
+O: 5 0 : 216 : 7 1  : 1
+O: 5 0 : 206 : 7 0  : 1
+O: 5 0 : 204 : 7 0  : 1
+O: 5 0 : 202 : 7 0  : 1
+O: 5 0 : 200 : 7 0  : 1
+O: 5 0 : 191 : 6 7  : 1
+O: 5 0 : 190 : 6 7  : 1
+O: 5 0 : 189 : 6 7  : 1
+O: 5 0 : 188 : 6 7  : 1
+O: 5 0 : 175 : 6 6  : 1
+O: 5 0 : 174 : 6 6  : 1
+O: 5 0 : 173 : 6 6  : 1
+O: 5 0 : 172 : 6 6  : 1
+O: 5 0 : 167 : 6 6  : 1
+O: 5 0 : 166 : 6 6  : 1
+O: 5 0 : 165 : 6 6  : 1
+O: 5 0 : 164 : 6 6  : 1
+O: 5 0 : 159 : 6 5  : 1
+O: 5 0 : 158 : 6 5  : 1
+O: 5 0 : 151 : 6 5  : 1
+O: 5 0 : 150 : 6 5  : 1
+O: 5 0 : 143 : 6 4  : 1
+O: 5 0 : 141 : 6 4  : 1
+O: 5 0 : 135 : 6 4  : 1
+O: 5 0 : 133 : 6 4  : 1
+O: 5 0 : 183 : 6 3  : 1
+O: 5 0 : 182 : 6 3  : 1
+O: 5 0 : 181 : 6 3  : 1
+O: 5 0 : 180 : 6 3  : 1
+O: 5 0 : 157 : 6 1  : 1
+O: 5 0 : 156 : 6 1  : 1
+O: 5 0 : 149 : 6 1  : 1
+O: 5 0 : 148 : 6 1  : 1
+O: 5 0 : 142 : 6 0  : 1
+O: 5 0 : 140 : 6 0  : 1
+O: 5 0 : 134 : 6 0  : 1
+O: 5 0 : 132 : 6 0  : 1
+O: 5 0 : 127 : 5 7  : 1
+O: 5 0 : 126 : 5 7  : 1
+O: 5 0 : 123 : 5 7  : 1
+O: 5 0 : 122 : 5 7  : 1
+O: 5 0 : 111 : 5 6  : 1
+O: 5 0 : 110 : 5 6  : 1
+O: 5 0 : 103 : 5 6  : 1
+O: 5 0 : 102 : 5 6  : 1
+O: 5 0 : 95 : 5 5  : 1
+O: 5 0 : 94 : 5 5  : 1
+O: 5 0 : 91 : 5 5  : 1
+O: 5 0 : 90 : 5 5  : 1
+O: 5 0 : 87 : 5 5  : 1
+O: 5 0 : 86 : 5 5  : 1
+O: 5 0 : 83 : 5 5  : 1
+O: 5 0 : 82 : 5 5  : 1
+O: 5 0 : 79 : 5 4  : 1
+O: 5 0 : 75 : 5 4  : 1
+O: 5 0 : 71 : 5 4  : 1
+O: 5 0 : 67 : 5 4  : 1
+O: 5 0 : 119 : 5 3  : 1
+O: 5 0 : 118 : 5 3  : 1
+O: 5 0 : 115 : 5 3  : 1
+O: 5 0 : 114 : 5 3  : 1
+O: 5 0 : 107 : 5 2  : 1
+O: 5 0 : 106 : 5 2  : 1
+O: 5 0 : 169 : 2 2  : 1
+O: 5 0 : 2 : 0 0  : 1
+O: 5 0 : 161 : 2 2  : 1
+O: 5 0 : 153 : 2 1  : 1
+O: 5 0 : 145 : 2 1  : 1
+O: 5 0 : 138 : 2 0  : 1
+O: 5 0 : 136 : 2 0  : 1
+O: 5 0 : 130 : 2 0  : 1
+O: 5 0 : 128 : 2 0  : 1
+O: 5 0 : 124 : 1 7  : 1
+O: 5 0 : 120 : 1 7  : 1
+O: 5 0 : 108 : 1 6  : 1
+O: 5 0 : 100 : 1 6  : 1
+O: 5 0 : 77 : 1 4  : 1
+O: 5 0 : 244 : 3 3  : 1
+O: 5 0 : 152 : 2 1  : 1
+O: 5 0 : 73 : 1 4  : 1
+O: 5 0 : 240 : 3 3  : 1
+O: 5 0 : 69 : 1 4  : 1
+O: 5 0 : 144 : 2 1  : 1
+O: 5 0 : 65 : 1 4  : 1
+O: 5 0 : 116 : 1 3  : 1
+O: 5 0 : 112 : 1 3  : 1
+O: 5 0 : 104 : 1 2  : 1
+O: 5 0 : 96 : 1 2  : 1
+O: 5 0 : 92 : 1 1  : 1
+O: 5 0 : 88 : 1 1  : 1
+O: 5 0 : 163 : 2 2  : 1
+O: 5 0 : 84 : 1 1  : 1
+O: 5 0 : 80 : 1 1  : 1
+O: 5 0 : 247 : 3 3  : 1
+O: 5 0 : 32 : 0 2  : 1
+O: 5 0 : 199 : 3 4  : 1
+O: 5 0 : 28 : 0 1  : 1
+O: 5 0 : 195 : 3 4  : 1
+O: 5 0 : 24 : 0 1  : 1
+O: 5 0 : 20 : 0 1  : 1
+O: 5 0 : 187 : 2 7  : 1
+O: 5 0 : 16 : 0 1  : 1
+O: 5 0 : 93 : 1 1  : 1
+O: 5 0 : 14 : 0 0  : 1
+O: 5 0 : 12 : 0 0  : 1
+O: 5 0 : 179 : 2 3  : 1
+O: 5 0 : 160 : 2 2  : 1
+O: 5 0 : 81 : 1 1  : 1
+O: 5 0 : 76 : 1 0  : 1
+O: 5 0 : 243 : 3 3  : 1
+O: 5 0 : 113 : 1 3  : 1
+O: 5 0 : 34 : 0 2  : 1
+O: 5 0 : 0 : 0 0  : 1
+O: 5 0 : 162 : 2 2  : 1
+O: 5 0 : 4 : 0 0  : 1
+O: 5 0 : 171 : 2 2  : 1
+O: 5 0 : 40 : 0 2  : 1
+O: 5 0 : 85 : 1 1  : 1
+O: 5 0 : 6 : 0 0  : 1
+O: 5 0 : 121 : 1 7  : 1
+O: 5 0 : 42 : 0 2  : 1
+O: 5 0 : 209 : 3 1  : 1
+O: 5 0 : 8 : 0 0  : 1
+O: 5 0 : 168 : 2 2  : 1
+O: 5 0 : 1 : 4 4  : 1
+O: 5 0 : 89 : 1 1  : 1
+O: 5 0 : 10 : 0 0  : 1
+O: 5 0 : 177 : 2 3  : 1
+O: 5 0 : 48 : 0 3  : 1
+O: 5 0 : 215 : 3 5  : 1
+O: 5 0 : 50 : 0 3  : 1
+O: 5 0 : 52 : 0 3  : 1
+O: 5 0 : 54 : 0 3  : 1
+O: 5 0 : 97 : 1 2  : 1
+O: 5 0 : 18 : 0 5  : 1
+O: 5 0 : 185 : 2 7  : 1
+O: 5 0 : 101 : 1 6  : 1
+O: 5 0 : 22 : 0 5  : 1
+O: 5 0 : 105 : 1 2  : 1
+O: 5 0 : 26 : 0 5  : 1
+O: 5 0 : 193 : 3 4  : 1
+O: 5 0 : 109 : 1 6  : 1
+O: 5 0 : 30 : 0 5  : 1
+O: 5 0 : 197 : 3 4  : 1
+O: 5 0 : 36 : 0 6  : 1
+O: 5 0 : 117 : 1 3  : 1
+O: 5 0 : 38 : 0 6  : 1
+O: 5 0 : 44 : 0 6  : 1
+O: 5 0 : 211 : 3 5  : 1
+O: 5 0 : 125 : 1 7  : 1
+O: 5 0 : 46 : 0 6  : 1
+O: 5 0 : 213 : 3 1  : 1
+O: 5 0 : 56 : 0 7  : 1
+O: 5 0 : 58 : 0 7  : 1
+O: 5 0 : 225 : 3 2  : 1
+O: 5 0 : 60 : 0 7  : 1
+O: 5 0 : 227 : 3 2  : 1
+O: 5 0 : 62 : 0 7  : 1
+O: 5 0 : 229 : 3 6  : 1
+O: 5 0 : 64 : 1 0  : 1
+O: 5 0 : 231 : 3 6  : 1
+O: 5 0 : 68 : 1 0  : 1
+O: 5 0 : 72 : 1 0  : 1
+O: 5 0 : 170 : 2 2  : 1
+O: 5 0 : 3 : 4 4  : 1
+O: 5 0 : 176 : 2 3  : 1
+O: 5 0 : 9 : 4 4  : 1
+O: 5 0 : 178 : 2 3  : 1
+O: 5 0 : 11 : 4 4  : 1
+O: 5 0 : 129 : 2 4  : 1
+O: 5 0 : 131 : 2 4  : 1
+O: 5 0 : 137 : 2 4  : 1
+O: 5 0 : 139 : 2 4  : 1
+O: 5 0 : 146 : 2 5  : 1
+O: 5 0 : 147 : 2 5  : 1
+O: 5 0 : 154 : 2 5  : 1
+O: 5 0 : 155 : 2 5  : 1
+O: 5 0 : 184 : 2 7  : 1
+O: 5 0 : 17 : 4 1  : 1
+O: 5 0 : 186 : 2 7  : 1
+O: 5 0 : 19 : 4 5  : 1
+O: 5 0 : 192 : 3 0  : 1
+O: 5 0 : 25 : 4 1  : 1
+O: 5 0 : 194 : 3 0  : 1
+O: 5 0 : 27 : 4 5  : 1
+O: 5 0 : 196 : 3 0  : 1
+O: 5 0 : 29 : 4 1  : 1
+O: 5 0 : 198 : 3 0  : 1
+O: 5 0 : 31 : 4 5  : 1
+O: 5 0 : 208 : 3 1  : 1
+O: 5 0 : 41 : 4 2  : 1
+O: 5 0 : 212 : 3 1  : 1
+O: 5 0 : 45 : 4 6  : 1
+O: 5 0 : 224 : 3 2  : 1
+O: 5 0 : 57 : 4 7  : 1
+O: 5 0 : 226 : 3 2  : 1
+O: 5 0 : 59 : 4 7  : 1
+O: 5 0 : 241 : 3 3  : 1
+O: 5 0 : 74 : 5 0  : 1
+O: 5 0 : 242 : 3 3  : 1
+O: 5 0 : 245 : 3 3  : 1
+O: 5 0 : 78 : 5 0  : 1
+O: 5 0 : 246 : 3 3  : 1
+O: 5 0 : 210 : 3 5  : 1
+O: 5 0 : 43 : 4 2  : 1
+O: 5 0 : 214 : 3 5  : 1
+O: 5 0 : 47 : 4 6  : 1
+O: 5 0 : 228 : 3 6  : 1
+O: 5 0 : 61 : 4 7  : 1
+O: 5 0 : 230 : 3 6  : 1
+O: 5 0 : 63 : 4 7  : 1
+O: 5 0 : 21 : 4 1  : 1
+O: 5 0 : 33 : 4 2  : 1
+O: 5 0 : 35 : 4 2  : 1
+O: 5 0 : 49 : 4 3  : 1
+O: 5 0 : 51 : 4 3  : 1
+O: 5 0 : 53 : 4 3  : 1
+O: 5 0 : 55 : 4 3  : 1
+O: 5 0 : 5 : 4 4  : 1
+O: 5 0 : 7 : 4 4  : 1
+O: 5 0 : 13 : 4 4  : 1
+O: 5 0 : 15 : 4 4  : 1
+O: 5 0 : 23 : 4 5  : 1
+O: 5 0 : 37 : 4 6  : 1
+O: 5 0 : 39 : 4 6  : 1
+O: 5 0 : 66 : 5 0  : 1
+O: 5 0 : 70 : 5 0  : 1
+O: 5 0 : 98 : 5 2  : 1
+O: 5 0 : 99 : 5 2  : 1
+O: 4 5 : 255 : 7 7  : 1
+O: 4 5 : 254 : 7 7  : 1
+O: 4 5 : 253 : 7 7  : 1
+O: 4 5 : 252 : 7 7  : 1
+O: 4 5 : 251 : 7 7  : 1
+O: 4 5 : 250 : 7 7  : 1
+O: 4 5 : 249 : 7 7  : 1
+O: 4 5 : 248 : 7 7  : 1
+O: 4 5 : 239 : 7 6  : 1
+O: 4 5 : 238 : 7 6  : 1
+O: 4 5 : 237 : 7 6  : 1
+O: 4 5 : 236 : 7 6  : 1
+O: 4 5 : 223 : 7 5  : 1
+O: 4 5 : 222 : 7 5  : 1
+O: 4 5 : 219 : 7 5  : 1
+O: 4 5 : 218 : 7 5  : 1
+O: 4 5 : 207 : 7 4  : 1
+O: 4 5 : 205 : 7 4  : 1
+O: 4 5 : 203 : 7 4  : 1
+O: 4 5 : 201 : 7 4  : 1
+O: 4 5 : 235 : 7 2  : 1
+O: 4 5 : 234 : 7 2  : 1
+O: 4 5 : 233 : 7 2  : 1
+O: 4 5 : 232 : 7 2  : 1
+O: 4 5 : 221 : 7 1  : 1
+O: 4 5 : 220 : 7 1  : 1
+O: 4 5 : 217 : 7 1  : 1
+O: 4 5 : 216 : 7 1  : 1
+O: 4 5 : 206 : 7 0  : 1
+O: 4 5 : 204 : 7 0  : 1
+O: 4 5 : 202 : 7 0  : 1
+O: 4 5 : 200 : 7 0  : 1
+O: 4 5 : 191 : 6 7  : 1
+O: 4 5 : 190 : 6 7  : 1
+O: 4 5 : 189 : 6 7  : 1
+O: 4 5 : 188 : 6 7  : 1
+O: 4 5 : 175 : 6 6  : 1
+O: 4 5 : 174 : 6 6  : 1
+O: 4 5 : 173 : 6 6  : 1
+O: 4 5 : 172 : 6 6  : 1
+O: 4 5 : 167 : 6 6  : 1
+O: 4 5 : 166 : 6 6  : 1
+O: 4 5 : 165 : 6 6  : 1
+O: 4 5 : 164 : 6 6  : 1
+O: 4 5 : 159 : 6 5  : 1
+O: 4 5 : 158 : 6 5  : 1
+O: 4 5 : 151 : 6 5  : 1
+O: 4 5 : 150 : 6 5  : 1
+O: 4 5 : 143 : 6 4  : 1
+O: 4 5 : 141 : 6 4  : 1
+O: 4 5 : 135 : 6 4  : 1
+O: 4 5 : 133 : 6 4  : 1
+O: 4 5 : 183 : 6 3  : 1
+O: 4 5 : 182 : 6 3  : 1
+O: 4 5 : 181 : 6 3  : 1
+O: 4 5 : 180 : 6 3  : 1
+O: 4 5 : 157 : 6 1  : 1
+O: 4 5 : 156 : 6 1  : 1
+O: 4 5 : 149 : 6 1  : 1
+O: 4 5 : 148 : 6 1  : 1
+O: 4 5 : 142 : 6 0  : 1
+O: 4 5 : 140 : 6 0  : 1
+O: 4 5 : 134 : 6 0  : 1
+O: 4 5 : 132 : 6 0  : 1
+O: 4 5 : 127 : 5 7  : 1
+O: 4 5 : 126 : 5 7  : 1
+O: 4 5 : 123 : 5 7  : 1
+O: 4 5 : 122 : 5 7  : 1
+O: 4 5 : 111 : 5 6  : 1
+O: 4 5 : 110 : 5 6  : 1
+O: 4 5 : 103 : 5 6  : 1
+O: 4 5 : 102 : 5 6  : 1
+O: 4 5 : 95 : 5 5  : 1
+O: 4 5 : 94 : 5 5  : 1
+O: 4 5 : 91 : 5 5  : 1
+O: 4 5 : 90 : 5 5  : 1
+O: 4 5 : 87 : 5 5  : 1
+O: 4 5 : 86 : 5 5  : 1
+O: 4 5 : 83 : 5 5  : 1
+O: 4 5 : 82 : 5 5  : 1
+O: 4 5 : 79 : 5 4  : 1
+O: 4 5 : 75 : 5 4  : 1
+O: 4 5 : 71 : 5 4  : 1
+O: 4 5 : 67 : 5 4  : 1
+O: 4 5 : 119 : 5 3  : 1
+O: 4 5 : 118 : 5 3  : 1
+O: 4 5 : 115 : 5 3  : 1
+O: 4 5 : 114 : 5 3  : 1
+O: 4 5 : 107 : 5 2  : 1
+O: 4 5 : 106 : 5 2  : 1
+O: 4 5 : 169 : 2 2  : 1
+O: 4 5 : 2 : 0 0  : 1
+O: 4 5 : 161 : 2 2  : 1
+O: 4 5 : 153 : 2 1  : 1
+O: 4 5 : 145 : 2 1  : 1
+O: 4 5 : 138 : 2 0  : 1
+O: 4 5 : 136 : 2 0  : 1
+O: 4 5 : 130 : 2 0  : 1
+O: 4 5 : 128 : 2 0  : 1
+O: 4 5 : 124 : 1 7  : 1
+O: 4 5 : 120 : 1 7  : 1
+O: 4 5 : 108 : 1 6  : 1
+O: 4 5 : 100 : 1 6  : 1
+O: 4 5 : 77 : 1 4  : 1
+O: 4 5 : 244 : 3 3  : 1
+O: 4 5 : 152 : 2 1  : 1
+O: 4 5 : 73 : 1 4  : 1
+O: 4 5 : 240 : 3 3  : 1
+O: 4 5 : 69 : 1 4  : 1
+O: 4 5 : 144 : 2 1  : 1
+O: 4 5 : 65 : 1 4  : 1
+O: 4 5 : 116 : 1 3  : 1
+O: 4 5 : 112 : 1 3  : 1
+O: 4 5 : 104 : 1 2  : 1
+O: 4 5 : 96 : 1 2  : 1
+O: 4 5 : 92 : 1 1  : 1
+O: 4 5 : 88 : 1 1  : 1
+O: 4 5 : 163 : 2 2  : 1
+O: 4 5 : 84 : 1 1  : 1
+O: 4 5 : 80 : 1 1  : 1
+O: 4 5 : 247 : 3 3  : 1
+O: 4 5 : 32 : 0 2  : 1
+O: 4 5 : 199 : 3 4  : 1
+O: 4 5 : 28 : 0 1  : 1
+O: 4 5 : 195 : 3 4  : 1
+O: 4 5 : 24 : 0 1  : 1
+O: 4 5 : 20 : 0 1  : 1
+O: 4 5 : 187 : 2 7  : 1
+O: 4 5 : 16 : 0 1  : 1
+O: 4 5 : 93 : 1 1  : 1
+O: 4 5 : 14 : 0 0  : 1
+O: 4 5 : 12 : 0 0  : 1
+O: 4 5 : 179 : 2 3  : 1
+O: 4 5 : 160 : 2 2  : 1
+O: 4 5 : 81 : 1 1  : 1
+O: 4 5 : 76 : 1 0  : 1
+O: 4 5 : 243 : 3 3  : 1
+O: 4 5 : 113 : 1 3  : 1
+O: 4 5 : 34 : 0 2  : 1
+O: 4 5 : 0 : 0 0  : 1
+O: 4 5 : 162 : 2 2  : 1
+O: 4 5 : 4 : 0 0  : 1
+O: 4 5 : 171 : 2 2  : 1
+O: 4 5 : 40 : 0 2  : 1
+O: 4 5 : 85 : 1 1  : 1
+O: 4 5 : 6 : 0 0  : 1
+O: 4 5 : 121 : 1 7  : 1
+O: 4 5 : 42 : 0 2  : 1
+O: 4 5 : 209 : 3 1  : 1
+O: 4 5 : 8 : 0 0  : 1
+O: 4 5 : 168 : 2 2  : 1
+O: 4 5 : 1 : 4 4  : 1
+O: 4 5 : 89 : 1 1  : 1
+O: 4 5 : 10 : 0 0  : 1
+O: 4 5 : 177 : 2 3  : 1
+O: 4 5 : 48 : 0 3  : 1
+O: 4 5 : 215 : 3 5  : 1
+O: 4 5 : 50 : 0 3  : 1
+O: 4 5 : 52 : 0 3  : 1
+O: 4 5 : 54 : 0 3  : 1
+O: 4 5 : 97 : 1 2  : 1
+O: 4 5 : 18 : 0 5  : 1
+O: 4 5 : 185 : 2 7  : 1
+O: 4 5 : 101 : 1 6  : 1
+O: 4 5 : 22 : 0 5  : 1
+O: 4 5 : 105 : 1 2  : 1
+O: 4 5 : 26 : 0 5  : 1
+O: 4 5 : 193 : 3 4  : 1
+O: 4 5 : 109 : 1 6  : 1
+O: 4 5 : 30 : 0 5  : 1
+O: 4 5 : 197 : 3 4  : 1
+O: 4 5 : 36 : 0 6  : 1
+O: 4 5 : 117 : 1 3  : 1
+O: 4 5 : 38 : 0 6  : 1
+O: 4 5 : 44 : 0 6  : 1
+O: 4 5 : 211 : 3 5  : 1
+O: 4 5 : 125 : 1 7  : 1
+O: 4 5 : 46 : 0 6  : 1
+O: 4 5 : 213 : 3 1  : 1
+O: 4 5 : 56 : 0 7  : 1
+O: 4 5 : 58 : 0 7  : 1
+O: 4 5 : 225 : 3 2  : 1
+O: 4 5 : 60 : 0 7  : 1
+O: 4 5 : 227 : 3 2  : 1
+O: 4 5 : 62 : 0 7  : 1
+O: 4 5 : 229 : 3 6  : 1
+O: 4 5 : 64 : 1 0  : 1
+O: 4 5 : 231 : 3 6  : 1
+O: 4 5 : 68 : 1 0  : 1
+O: 4 5 : 72 : 1 0  : 1
+O: 4 5 : 170 : 2 2  : 1
+O: 4 5 : 3 : 4 4  : 1
+O: 4 5 : 176 : 2 3  : 1
+O: 4 5 : 9 : 4 4  : 1
+O: 4 5 : 178 : 2 3  : 1
+O: 4 5 : 11 : 4 4  : 1
+O: 4 5 : 129 : 2 4  : 1
+O: 4 5 : 131 : 2 4  : 1
+O: 4 5 : 137 : 2 4  : 1
+O: 4 5 : 139 : 2 4  : 1
+O: 4 5 : 146 : 2 5  : 1
+O: 4 5 : 147 : 2 5  : 1
+O: 4 5 : 154 : 2 5  : 1
+O: 4 5 : 155 : 2 5  : 1
+O: 4 5 : 184 : 2 7  : 1
+O: 4 5 : 17 : 4 1  : 1
+O: 4 5 : 186 : 2 7  : 1
+O: 4 5 : 19 : 4 5  : 1
+O: 4 5 : 192 : 3 0  : 1
+O: 4 5 : 25 : 4 1  : 1
+O: 4 5 : 194 : 3 0  : 1
+O: 4 5 : 27 : 4 5  : 1
+O: 4 5 : 196 : 3 0  : 1
+O: 4 5 : 29 : 4 1  : 1
+O: 4 5 : 198 : 3 0  : 1
+O: 4 5 : 31 : 4 5  : 1
+O: 4 5 : 208 : 3 1  : 1
+O: 4 5 : 41 : 4 2  : 1
+O: 4 5 : 212 : 3 1  : 1
+O: 4 5 : 45 : 4 6  : 1
+O: 4 5 : 224 : 3 2  : 1
+O: 4 5 : 57 : 4 7  : 1
+O: 4 5 : 226 : 3 2  : 1
+O: 4 5 : 59 : 4 7  : 1
+O: 4 5 : 241 : 3 3  : 1
+O: 4 5 : 74 : 5 0  : 1
+O: 4 5 : 242 : 3 3  : 1
+O: 4 5 : 245 : 3 3  : 1
+O: 4 5 : 78 : 5 0  : 1
+O: 4 5 : 246 : 3 3  : 1
+O: 4 5 : 210 : 3 5  : 1
+O: 4 5 : 43 : 4 2  : 1
+O: 4 5 : 214 : 3 5  : 1
+O: 4 5 : 47 : 4 6  : 1
+O: 4 5 : 228 : 3 6  : 1
+O: 4 5 : 61 : 4 7  : 1
+O: 4 5 : 230 : 3 6  : 1
+O: 4 5 : 63 : 4 7  : 1
+O: 4 5 : 21 : 4 1  : 1
+O: 4 5 : 33 : 4 2  : 1
+O: 4 5 : 35 : 4 2  : 1
+O: 4 5 : 49 : 4 3  : 1
+O: 4 5 : 51 : 4 3  : 1
+O: 4 5 : 53 : 4 3  : 1
+O: 4 5 : 55 : 4 3  : 1
+O: 4 5 : 5 : 4 4  : 1
+O: 4 5 : 7 : 4 4  : 1
+O: 4 5 : 13 : 4 4  : 1
+O: 4 5 : 15 : 4 4  : 1
+O: 4 5 : 23 : 4 5  : 1
+O: 4 5 : 37 : 4 6  : 1
+O: 4 5 : 39 : 4 6  : 1
+O: 4 5 : 66 : 5 0  : 1
+O: 4 5 : 70 : 5 0  : 1
+O: 4 5 : 98 : 5 2  : 1
+O: 4 5 : 99 : 5 2  : 1
+O: 4 4 : 255 : 7 7  : 1
+O: 4 4 : 254 : 7 7  : 1
+O: 4 4 : 253 : 7 7  : 1
+O: 4 4 : 252 : 7 7  : 1
+O: 4 4 : 251 : 7 7  : 1
+O: 4 4 : 250 : 7 7  : 1
+O: 4 4 : 249 : 7 7  : 1
+O: 4 4 : 248 : 7 7  : 1
+O: 4 4 : 239 : 7 6  : 1
+O: 4 4 : 238 : 7 6  : 1
+O: 4 4 : 237 : 7 6  : 1
+O: 4 4 : 236 : 7 6  : 1
+O: 4 4 : 223 : 7 5  : 1
+O: 4 4 : 222 : 7 5  : 1
+O: 4 4 : 219 : 7 5  : 1
+O: 4 4 : 218 : 7 5  : 1
+O: 4 4 : 207 : 7 4  : 1
+O: 4 4 : 205 : 7 4  : 1
+O: 4 4 : 203 : 7 4  : 1
+O: 4 4 : 201 : 7 4  : 1
+O: 4 4 : 235 : 7 2  : 1
+O: 4 4 : 234 : 7 2  : 1
+O: 4 4 : 233 : 7 2  : 1
+O: 4 4 : 232 : 7 2  : 1
+O: 4 4 : 221 : 7 1  : 1
+O: 4 4 : 220 : 7 1  : 1
+O: 4 4 : 217 : 7 1  : 1
+O: 4 4 : 216 : 7 1  : 1
+O: 4 4 : 206 : 7 0  : 1
+O: 4 4 : 204 : 7 0  : 1
+O: 4 4 : 202 : 7 0  : 1
+O: 4 4 : 200 : 7 0  : 1
+O: 4 4 : 191 : 6 7  : 1
+O: 4 4 : 190 : 6 7  : 1
+O: 4 4 : 189 : 6 7  : 1
+O: 4 4 : 188 : 6 7  : 1
+O: 4 4 : 175 : 6 6  : 1
+O: 4 4 : 174 : 6 6  : 1
+O: 4 4 : 173 : 6 6  : 1
+O: 4 4 : 172 : 6 6  : 1
+O: 4 4 : 167 : 6 6  : 1
+O: 4 4 : 166 : 6 6  : 1
+O: 4 4 : 165 : 6 6  : 1
+O: 4 4 : 164 : 6 6  : 1
+O: 4 4 : 159 : 6 5  : 1
+O: 4 4 : 158 : 6 5  : 1
+O: 4 4 : 151 : 6 5  : 1
+O: 4 4 : 150 : 6 5  : 1
+O: 4 4 : 143 : 6 4  : 1
+O: 4 4 : 141 : 6 4  : 1
+O: 4 4 : 135 : 6 4  : 1
+O: 4 4 : 133 : 6 4  : 1
+O: 4 4 : 183 : 6 3  : 1
+O: 4 4 : 182 : 6 3  : 1
+O: 4 4 : 181 : 6 3  : 1
+O: 4 4 : 180 : 6 3  : 1
+O: 4 4 : 157 : 6 1  : 1
+O: 4 4 : 156 : 6 1  : 1
+O: 4 4 : 149 : 6 1  : 1
+O: 4 4 : 148 : 6 1  : 1
+O: 4 4 : 142 : 6 0  : 1
+O: 4 4 : 140 : 6 0  : 1
+O: 4 4 : 134 : 6 0  : 1
+O: 4 4 : 132 : 6 0  : 1
+O: 4 4 : 127 : 5 7  : 1
+O: 4 4 : 126 : 5 7  : 1
+O: 4 4 : 123 : 5 7  : 1
+O: 4 4 : 122 : 5 7  : 1
+O: 4 4 : 111 : 5 6  : 1
+O: 4 4 : 110 : 5 6  : 1
+O: 4 4 : 103 : 5 6  : 1
+O: 4 4 : 102 : 5 6  : 1
+O: 4 4 : 95 : 5 5  : 1
+O: 4 4 : 94 : 5 5  : 1
+O: 4 4 : 91 : 5 5  : 1
+O: 4 4 : 90 : 5 5  : 1
+O: 4 4 : 87 : 5 5  : 1
+O: 4 4 : 86 : 5 5  : 1
+O: 4 4 : 83 : 5 5  : 1
+O: 4 4 : 82 : 5 5  : 1
+O: 4 4 : 79 : 5 4  : 1
+O: 4 4 : 75 : 5 4  : 1
+O: 4 4 : 71 : 5 4  : 1
+O: 4 4 : 67 : 5 4  : 1
+O: 4 4 : 119 : 5 3  : 1
+O: 4 4 : 118 : 5 3  : 1
+O: 4 4 : 115 : 5 3  : 1
+O: 4 4 : 114 : 5 3  : 1
+O: 4 4 : 107 : 5 2  : 1
+O: 4 4 : 106 : 5 2  : 1
+O: 4 4 : 169 : 2 2  : 1
+O: 4 4 : 2 : 0 0  : 1
+O: 4 4 : 161 : 2 2  : 1
+O: 4 4 : 153 : 2 1  : 1
+O: 4 4 : 145 : 2 1  : 1
+O: 4 4 : 138 : 2 0  : 1
+O: 4 4 : 136 : 2 0  : 1
+O: 4 4 : 130 : 2 0  : 1
+O: 4 4 : 128 : 2 0  : 1
+O: 4 4 : 124 : 1 7  : 1
+O: 4 4 : 120 : 1 7  : 1
+O: 4 4 : 108 : 1 6  : 1
+O: 4 4 : 100 : 1 6  : 1
+O: 4 4 : 77 : 1 4  : 1
+O: 4 4 : 244 : 3 3  : 1
+O: 4 4 : 152 : 2 1  : 1
+O: 4 4 : 73 : 1 4  : 1
+O: 4 4 : 240 : 3 3  : 1
+O: 4 4 : 69 : 1 4  : 1
+O: 4 4 : 144 : 2 1  : 1
+O: 4 4 : 65 : 1 4  : 1
+O: 4 4 : 116 : 1 3  : 1
+O: 4 4 : 112 : 1 3  : 1
+O: 4 4 : 104 : 1 2  : 1
+O: 4 4 : 96 : 1 2  : 1
+O: 4 4 : 92 : 1 1  : 1
+O: 4 4 : 88 : 1 1  : 1
+O: 4 4 : 163 : 2 2  : 1
+O: 4 4 : 84 : 1 1  : 1
+O: 4 4 : 80 : 1 1  : 1
+O: 4 4 : 247 : 3 3  : 1
+O: 4 4 : 32 : 0 2  : 1
+O: 4 4 : 199 : 3 4  : 1
+O: 4 4 : 28 : 0 1  : 1
+O: 4 4 : 195 : 3 4  : 1
+O: 4 4 : 24 : 0 1  : 1
+O: 4 4 : 20 : 0 1  : 1
+O: 4 4 : 187 : 2 7  : 1
+O: 4 4 : 16 : 0 1  : 1
+O: 4 4 : 93 : 1 1  : 1
+O: 4 4 : 14 : 0 0  : 1
+O: 4 4 : 12 : 0 0  : 1
+O: 4 4 : 179 : 2 3  : 1
+O: 4 4 : 160 : 2 2  : 1
+O: 4 4 : 81 : 1 1  : 1
+O: 4 4 : 76 : 1 0  : 1
+O: 4 4 : 243 : 3 3  : 1
+O: 4 4 : 113 : 1 3  : 1
+O: 4 4 : 34 : 0 2  : 1
+O: 4 4 : 0 : 0 0  : 1
+O: 4 4 : 162 : 2 2  : 1
+O: 4 4 : 4 : 0 0  : 1
+O: 4 4 : 171 : 2 2  : 1
+O: 4 4 : 40 : 0 2  : 1
+O: 4 4 : 85 : 1 1  : 1
+O: 4 4 : 6 : 0 0  : 1
+O: 4 4 : 121 : 1 7  : 1
+O: 4 4 : 42 : 0 2  : 1
+O: 4 4 : 209 : 3 1  : 1
+O: 4 4 : 8 : 0 0  : 1
+O: 4 4 : 168 : 2 2  : 1
+O: 4 4 : 1 : 4 4  : 1
+O: 4 4 : 89 : 1 1  : 1
+O: 4 4 : 10 : 0 0  : 1
+O: 4 4 : 177 : 2 3  : 1
+O: 4 4 : 48 : 0 3  : 1
+O: 4 4 : 215 : 3 5  : 1
+O: 4 4 : 50 : 0 3  : 1
+O: 4 4 : 52 : 0 3  : 1
+O: 4 4 : 54 : 0 3  : 1
+O: 4 4 : 97 : 1 2  : 1
+O: 4 4 : 18 : 0 5  : 1
+O: 4 4 : 185 : 2 7  : 1
+O: 4 4 : 101 : 1 6  : 1
+O: 4 4 : 22 : 0 5  : 1
+O: 4 4 : 105 : 1 2  : 1
+O: 4 4 : 26 : 0 5  : 1
+O: 4 4 : 193 : 3 4  : 1
+O: 4 4 : 109 : 1 6  : 1
+O: 4 4 : 30 : 0 5  : 1
+O: 4 4 : 197 : 3 4  : 1
+O: 4 4 : 36 : 0 6  : 1
+O: 4 4 : 117 : 1 3  : 1
+O: 4 4 : 38 : 0 6  : 1
+O: 4 4 : 44 : 0 6  : 1
+O: 4 4 : 211 : 3 5  : 1
+O: 4 4 : 125 : 1 7  : 1
+O: 4 4 : 46 : 0 6  : 1
+O: 4 4 : 213 : 3 1  : 1
+O: 4 4 : 56 : 0 7  : 1
+O: 4 4 : 58 : 0 7  : 1
+O: 4 4 : 225 : 3 2  : 1
+O: 4 4 : 60 : 0 7  : 1
+O: 4 4 : 227 : 3 2  : 1
+O: 4 4 : 62 : 0 7  : 1
+O: 4 4 : 229 : 3 6  : 1
+O: 4 4 : 64 : 1 0  : 1
+O: 4 4 : 231 : 3 6  : 1
+O: 4 4 : 68 : 1 0  : 1
+O: 4 4 : 72 : 1 0  : 1
+O: 4 4 : 170 : 2 2  : 1
+O: 4 4 : 3 : 4 4  : 1
+O: 4 4 : 176 : 2 3  : 1
+O: 4 4 : 9 : 4 4  : 1
+O: 4 4 : 178 : 2 3  : 1
+O: 4 4 : 11 : 4 4  : 1
+O: 4 4 : 129 : 2 4  : 1
+O: 4 4 : 131 : 2 4  : 1
+O: 4 4 : 137 : 2 4  : 1
+O: 4 4 : 139 : 2 4  : 1
+O: 4 4 : 146 : 2 5  : 1
+O: 4 4 : 147 : 2 5  : 1
+O: 4 4 : 154 : 2 5  : 1
+O: 4 4 : 155 : 2 5  : 1
+O: 4 4 : 184 : 2 7  : 1
+O: 4 4 : 17 : 4 1  : 1
+O: 4 4 : 186 : 2 7  : 1
+O: 4 4 : 19 : 4 5  : 1
+O: 4 4 : 192 : 3 0  : 1
+O: 4 4 : 25 : 4 1  : 1
+O: 4 4 : 194 : 3 0  : 1
+O: 4 4 : 27 : 4 5  : 1
+O: 4 4 : 196 : 3 0  : 1
+O: 4 4 : 29 : 4 1  : 1
+O: 4 4 : 198 : 3 0  : 1
+O: 4 4 : 31 : 4 5  : 1
+O: 4 4 : 208 : 3 1  : 1
+O: 4 4 : 41 : 4 2  : 1
+O: 4 4 : 212 : 3 1  : 1
+O: 4 4 : 45 : 4 6  : 1
+O: 4 4 : 224 : 3 2  : 1
+O: 4 4 : 57 : 4 7  : 1
+O: 4 4 : 226 : 3 2  : 1
+O: 4 4 : 59 : 4 7  : 1
+O: 4 4 : 241 : 3 3  : 1
+O: 4 4 : 74 : 5 0  : 1
+O: 4 4 : 242 : 3 3  : 1
+O: 4 4 : 245 : 3 3  : 1
+O: 4 4 : 78 : 5 0  : 1
+O: 4 4 : 246 : 3 3  : 1
+O: 4 4 : 210 : 3 5  : 1
+O: 4 4 : 43 : 4 2  : 1
+O: 4 4 : 214 : 3 5  : 1
+O: 4 4 : 47 : 4 6  : 1
+O: 4 4 : 228 : 3 6  : 1
+O: 4 4 : 61 : 4 7  : 1
+O: 4 4 : 230 : 3 6  : 1
+O: 4 4 : 63 : 4 7  : 1
+O: 4 4 : 21 : 4 1  : 1
+O: 4 4 : 33 : 4 2  : 1
+O: 4 4 : 35 : 4 2  : 1
+O: 4 4 : 49 : 4 3  : 1
+O: 4 4 : 51 : 4 3  : 1
+O: 4 4 : 53 : 4 3  : 1
+O: 4 4 : 55 : 4 3  : 1
+O: 4 4 : 5 : 4 4  : 1
+O: 4 4 : 7 : 4 4  : 1
+O: 4 4 : 13 : 4 4  : 1
+O: 4 4 : 15 : 4 4  : 1
+O: 4 4 : 23 : 4 5  : 1
+O: 4 4 : 37 : 4 6  : 1
+O: 4 4 : 39 : 4 6  : 1
+O: 4 4 : 66 : 5 0  : 1
+O: 4 4 : 70 : 5 0  : 1
+O: 4 4 : 98 : 5 2  : 1
+O: 4 4 : 99 : 5 2  : 1
+O: 4 3 : 255 : 7 7  : 1
+O: 4 3 : 254 : 7 7  : 1
+O: 4 3 : 253 : 7 7  : 1
+O: 4 3 : 252 : 7 7  : 1
+O: 4 3 : 251 : 7 7  : 1
+O: 4 3 : 250 : 7 7  : 1
+O: 4 3 : 249 : 7 7  : 1
+O: 4 3 : 248 : 7 7  : 1
+O: 4 3 : 239 : 7 6  : 1
+O: 4 3 : 238 : 7 6  : 1
+O: 4 3 : 237 : 7 6  : 1
+O: 4 3 : 236 : 7 6  : 1
+O: 4 3 : 223 : 7 5  : 1
+O: 4 3 : 222 : 7 5  : 1
+O: 4 3 : 219 : 7 5  : 1
+O: 4 3 : 218 : 7 5  : 1
+O: 4 3 : 207 : 7 4  : 1
+O: 4 3 : 205 : 7 4  : 1
+O: 4 3 : 203 : 7 4  : 1
+O: 4 3 : 201 : 7 4  : 1
+O: 4 3 : 235 : 7 2  : 1
+O: 4 3 : 234 : 7 2  : 1
+O: 4 3 : 233 : 7 2  : 1
+O: 4 3 : 232 : 7 2  : 1
+O: 4 3 : 221 : 7 1  : 1
+O: 4 3 : 220 : 7 1  : 1
+O: 4 3 : 217 : 7 1  : 1
+O: 4 3 : 216 : 7 1  : 1
+O: 4 3 : 206 : 7 0  : 1
+O: 4 3 : 204 : 7 0  : 1
+O: 4 3 : 202 : 7 0  : 1
+O: 4 3 : 200 : 7 0  : 1
+O: 4 3 : 191 : 6 7  : 1
+O: 4 3 : 190 : 6 7  : 1
+O: 4 3 : 189 : 6 7  : 1
+O: 4 3 : 188 : 6 7  : 1
+O: 4 3 : 175 : 6 6  : 1
+O: 4 3 : 174 : 6 6  : 1
+O: 4 3 : 173 : 6 6  : 1
+O: 4 3 : 172 : 6 6  : 1
+O: 4 3 : 167 : 6 6  : 1
+O: 4 3 : 166 : 6 6  : 1
+O: 4 3 : 165 : 6 6  : 1
+O: 4 3 : 164 : 6 6  : 1
+O: 4 3 : 159 : 6 5  : 1
+O: 4 3 : 158 : 6 5  : 1
+O: 4 3 : 151 : 6 5  : 1
+O: 4 3 : 150 : 6 5  : 1
+O: 4 3 : 143 : 6 4  : 1
+O: 4 3 : 141 : 6 4  : 1
+O: 4 3 : 135 : 6 4  : 1
+O: 4 3 : 133 : 6 4  : 1
+O: 4 3 : 183 : 6 3  : 1
+O: 4 3 : 182 : 6 3  : 1
+O: 4 3 : 181 : 6 3  : 1
+O: 4 3 : 180 : 6 3  : 1
+O: 4 3 : 157 : 6 1  : 1
+O: 4 3 : 156 : 6 1  : 1
+O: 4 3 : 149 : 6 1  : 1
+O: 4 3 : 148 : 6 1  : 1
+O: 4 3 : 142 : 6 0  : 1
+O: 4 3 : 140 : 6 0  : 1
+O: 4 3 : 134 : 6 0  : 1
+O: 4 3 : 132 : 6 0  : 1
+O: 4 3 : 127 : 5 7  : 1
+O: 4 3 : 126 : 5 7  : 1
+O: 4 3 : 123 : 5 7  : 1
+O: 4 3 : 122 : 5 7  : 1
+O: 4 3 : 111 : 5 6  : 1
+O: 4 3 : 110 : 5 6  : 1
+O: 4 3 : 103 : 5 6  : 1
+O: 4 3 : 102 : 5 6  : 1
+O: 4 3 : 95 : 5 5  : 1
+O: 4 3 : 94 : 5 5  : 1
+O: 4 3 : 91 : 5 5  : 1
+O: 4 3 : 90 : 5 5  : 1
+O: 4 3 : 87 : 5 5  : 1
+O: 4 3 : 86 : 5 5  : 1
+O: 4 3 : 83 : 5 5  : 1
+O: 4 3 : 82 : 5 5  : 1
+O: 4 3 : 79 : 5 4  : 1
+O: 4 3 : 75 : 5 4  : 1
+O: 4 3 : 71 : 5 4  : 1
+O: 4 3 : 67 : 5 4  : 1
+O: 4 3 : 119 : 5 3  : 1
+O: 4 3 : 118 : 5 3  : 1
+O: 4 3 : 115 : 5 3  : 1
+O: 4 3 : 114 : 5 3  : 1
+O: 4 3 : 107 : 5 2  : 1
+O: 4 3 : 106 : 5 2  : 1
+O: 4 3 : 169 : 2 2  : 1
+O: 4 3 : 2 : 0 0  : 1
+O: 4 3 : 161 : 2 2  : 1
+O: 4 3 : 153 : 2 1  : 1
+O: 4 3 : 145 : 2 1  : 1
+O: 4 3 : 138 : 2 0  : 1
+O: 4 3 : 136 : 2 0  : 1
+O: 4 3 : 130 : 2 0  : 1
+O: 4 3 : 128 : 2 0  : 1
+O: 4 3 : 124 : 1 7  : 1
+O: 4 3 : 120 : 1 7  : 1
+O: 4 3 : 108 : 1 6  : 1
+O: 4 3 : 100 : 1 6  : 1
+O: 4 3 : 77 : 1 4  : 1
+O: 4 3 : 244 : 3 3  : 1
+O: 4 3 : 152 : 2 1  : 1
+O: 4 3 : 73 : 1 4  : 1
+O: 4 3 : 240 : 3 3  : 1
+O: 4 3 : 69 : 1 4  : 1
+O: 4 3 : 144 : 2 1  : 1
+O: 4 3 : 65 : 1 4  : 1
+O: 4 3 : 116 : 1 3  : 1
+O: 4 3 : 112 : 1 3  : 1
+O: 4 3 : 104 : 1 2  : 1
+O: 4 3 : 96 : 1 2  : 1
+O: 4 3 : 92 : 1 1  : 1
+O: 4 3 : 88 : 1 1  : 1
+O: 4 3 : 163 : 2 2  : 1
+O: 4 3 : 84 : 1 1  : 1
+O: 4 3 : 80 : 1 1  : 1
+O: 4 3 : 247 : 3 3  : 1
+O: 4 3 : 32 : 0 2  : 1
+O: 4 3 : 199 : 3 4  : 1
+O: 4 3 : 28 : 0 1  : 1
+O: 4 3 : 195 : 3 4  : 1
+O: 4 3 : 24 : 0 1  : 1
+O: 4 3 : 20 : 0 1  : 1
+O: 4 3 : 187 : 2 7  : 1
+O: 4 3 : 16 : 0 1  : 1
+O: 4 3 : 93 : 1 1  : 1
+O: 4 3 : 14 : 0 0  : 1
+O: 4 3 : 12 : 0 0  : 1
+O: 4 3 : 179 : 2 3  : 1
+O: 4 3 : 160 : 2 2  : 1
+O: 4 3 : 81 : 1 1  : 1
+O: 4 3 : 76 : 1 0  : 1
+O: 4 3 : 243 : 3 3  : 1
+O: 4 3 : 113 : 1 3  : 1
+O: 4 3 : 34 : 0 2  : 1
+O: 4 3 : 0 : 0 0  : 1
+O: 4 3 : 162 : 2 2  : 1
+O: 4 3 : 4 : 0 0  : 1
+O: 4 3 : 171 : 2 2  : 1
+O: 4 3 : 40 : 0 2  : 1
+O: 4 3 : 85 : 1 1  : 1
+O: 4 3 : 6 : 0 0  : 1
+O: 4 3 : 121 : 1 7  : 1
+O: 4 3 : 42 : 0 2  : 1
+O: 4 3 : 209 : 3 1  : 1
+O: 4 3 : 8 : 0 0  : 1
+O: 4 3 : 168 : 2 2  : 1
+O: 4 3 : 1 : 4 4  : 1
+O: 4 3 : 89 : 1 1  : 1
+O: 4 3 : 10 : 0 0  : 1
+O: 4 3 : 177 : 2 3  : 1
+O: 4 3 : 48 : 0 3  : 1
+O: 4 3 : 215 : 3 5  : 1
+O: 4 3 : 50 : 0 3  : 1
+O: 4 3 : 52 : 0 3  : 1
+O: 4 3 : 54 : 0 3  : 1
+O: 4 3 : 97 : 1 2  : 1
+O: 4 3 : 18 : 0 5  : 1
+O: 4 3 : 185 : 2 7  : 1
+O: 4 3 : 101 : 1 6  : 1
+O: 4 3 : 22 : 0 5  : 1
+O: 4 3 : 105 : 1 2  : 1
+O: 4 3 : 26 : 0 5  : 1
+O: 4 3 : 193 : 3 4  : 1
+O: 4 3 : 109 : 1 6  : 1
+O: 4 3 : 30 : 0 5  : 1
+O: 4 3 : 197 : 3 4  : 1
+O: 4 3 : 36 : 0 6  : 1
+O: 4 3 : 117 : 1 3  : 1
+O: 4 3 : 38 : 0 6  : 1
+O: 4 3 : 44 : 0 6  : 1
+O: 4 3 : 211 : 3 5  : 1
+O: 4 3 : 125 : 1 7  : 1
+O: 4 3 : 46 : 0 6  : 1
+O: 4 3 : 213 : 3 1  : 1
+O: 4 3 : 56 : 0 7  : 1
+O: 4 3 : 58 : 0 7  : 1
+O: 4 3 : 225 : 3 2  : 1
+O: 4 3 : 60 : 0 7  : 1
+O: 4 3 : 227 : 3 2  : 1
+O: 4 3 : 62 : 0 7  : 1
+O: 4 3 : 229 : 3 6  : 1
+O: 4 3 : 64 : 1 0  : 1
+O: 4 3 : 231 : 3 6  : 1
+O: 4 3 : 68 : 1 0  : 1
+O: 4 3 : 72 : 1 0  : 1
+O: 4 3 : 170 : 2 2  : 1
+O: 4 3 : 3 : 4 4  : 1
+O: 4 3 : 176 : 2 3  : 1
+O: 4 3 : 9 : 4 4  : 1
+O: 4 3 : 178 : 2 3  : 1
+O: 4 3 : 11 : 4 4  : 1
+O: 4 3 : 129 : 2 4  : 1
+O: 4 3 : 131 : 2 4  : 1
+O: 4 3 : 137 : 2 4  : 1
+O: 4 3 : 139 : 2 4  : 1
+O: 4 3 : 146 : 2 5  : 1
+O: 4 3 : 147 : 2 5  : 1
+O: 4 3 : 154 : 2 5  : 1
+O: 4 3 : 155 : 2 5  : 1
+O: 4 3 : 184 : 2 7  : 1
+O: 4 3 : 17 : 4 1  : 1
+O: 4 3 : 186 : 2 7  : 1
+O: 4 3 : 19 : 4 5  : 1
+O: 4 3 : 192 : 3 0  : 1
+O: 4 3 : 25 : 4 1  : 1
+O: 4 3 : 194 : 3 0  : 1
+O: 4 3 : 27 : 4 5  : 1
+O: 4 3 : 196 : 3 0  : 1
+O: 4 3 : 29 : 4 1  : 1
+O: 4 3 : 198 : 3 0  : 1
+O: 4 3 : 31 : 4 5  : 1
+O: 4 3 : 208 : 3 1  : 1
+O: 4 3 : 41 : 4 2  : 1
+O: 4 3 : 212 : 3 1  : 1
+O: 4 3 : 45 : 4 6  : 1
+O: 4 3 : 224 : 3 2  : 1
+O: 4 3 : 57 : 4 7  : 1
+O: 4 3 : 226 : 3 2  : 1
+O: 4 3 : 59 : 4 7  : 1
+O: 4 3 : 241 : 3 3  : 1
+O: 4 3 : 74 : 5 0  : 1
+O: 4 3 : 242 : 3 3  : 1
+O: 4 3 : 245 : 3 3  : 1
+O: 4 3 : 78 : 5 0  : 1
+O: 4 3 : 246 : 3 3  : 1
+O: 4 3 : 210 : 3 5  : 1
+O: 4 3 : 43 : 4 2  : 1
+O: 4 3 : 214 : 3 5  : 1
+O: 4 3 : 47 : 4 6  : 1
+O: 4 3 : 228 : 3 6  : 1
+O: 4 3 : 61 : 4 7  : 1
+O: 4 3 : 230 : 3 6  : 1
+O: 4 3 : 63 : 4 7  : 1
+O: 4 3 : 21 : 4 1  : 1
+O: 4 3 : 33 : 4 2  : 1
+O: 4 3 : 35 : 4 2  : 1
+O: 4 3 : 49 : 4 3  : 1
+O: 4 3 : 51 : 4 3  : 1
+O: 4 3 : 53 : 4 3  : 1
+O: 4 3 : 55 : 4 3  : 1
+O: 4 3 : 5 : 4 4  : 1
+O: 4 3 : 7 : 4 4  : 1
+O: 4 3 : 13 : 4 4  : 1
+O: 4 3 : 15 : 4 4  : 1
+O: 4 3 : 23 : 4 5  : 1
+O: 4 3 : 37 : 4 6  : 1
+O: 4 3 : 39 : 4 6  : 1
+O: 4 3 : 66 : 5 0  : 1
+O: 4 3 : 70 : 5 0  : 1
+O: 4 3 : 98 : 5 2  : 1
+O: 4 3 : 99 : 5 2  : 1
+O: 4 2 : 255 : 7 7  : 1
+O: 4 2 : 254 : 7 7  : 1
+O: 4 2 : 253 : 7 7  : 1
+O: 4 2 : 252 : 7 7  : 1
+O: 4 2 : 251 : 7 7  : 1
+O: 4 2 : 250 : 7 7  : 1
+O: 4 2 : 249 : 7 7  : 1
+O: 4 2 : 248 : 7 7  : 1
+O: 4 2 : 239 : 7 6  : 1
+O: 4 2 : 238 : 7 6  : 1
+O: 4 2 : 237 : 7 6  : 1
+O: 4 2 : 236 : 7 6  : 1
+O: 4 2 : 223 : 7 5  : 1
+O: 4 2 : 222 : 7 5  : 1
+O: 4 2 : 219 : 7 5  : 1
+O: 4 2 : 218 : 7 5  : 1
+O: 4 2 : 207 : 7 4  : 1
+O: 4 2 : 205 : 7 4  : 1
+O: 4 2 : 203 : 7 4  : 1
+O: 4 2 : 201 : 7 4  : 1
+O: 4 2 : 235 : 7 2  : 1
+O: 4 2 : 234 : 7 2  : 1
+O: 4 2 : 233 : 7 2  : 1
+O: 4 2 : 232 : 7 2  : 1
+O: 4 2 : 221 : 7 1  : 1
+O: 4 2 : 220 : 7 1  : 1
+O: 4 2 : 217 : 7 1  : 1
+O: 4 2 : 216 : 7 1  : 1
+O: 4 2 : 206 : 7 0  : 1
+O: 4 2 : 204 : 7 0  : 1
+O: 4 2 : 202 : 7 0  : 1
+O: 4 2 : 200 : 7 0  : 1
+O: 4 2 : 191 : 6 7  : 1
+O: 4 2 : 190 : 6 7  : 1
+O: 4 2 : 189 : 6 7  : 1
+O: 4 2 : 188 : 6 7  : 1
+O: 4 2 : 175 : 6 6  : 1
+O: 4 2 : 174 : 6 6  : 1
+O: 4 2 : 173 : 6 6  : 1
+O: 4 2 : 172 : 6 6  : 1
+O: 4 2 : 167 : 6 6  : 1
+O: 4 2 : 166 : 6 6  : 1
+O: 4 2 : 165 : 6 6  : 1
+O: 4 2 : 164 : 6 6  : 1
+O: 4 2 : 159 : 6 5  : 1
+O: 4 2 : 158 : 6 5  : 1
+O: 4 2 : 151 : 6 5  : 1
+O: 4 2 : 150 : 6 5  : 1
+O: 4 2 : 143 : 6 4  : 1
+O: 4 2 : 141 : 6 4  : 1
+O: 4 2 : 135 : 6 4  : 1
+O: 4 2 : 133 : 6 4  : 1
+O: 4 2 : 183 : 6 3  : 1
+O: 4 2 : 182 : 6 3  : 1
+O: 4 2 : 181 : 6 3  : 1
+O: 4 2 : 180 : 6 3  : 1
+O: 4 2 : 157 : 6 1  : 1
+O: 4 2 : 156 : 6 1  : 1
+O: 4 2 : 149 : 6 1  : 1
+O: 4 2 : 148 : 6 1  : 1
+O: 4 2 : 142 : 6 0  : 1
+O: 4 2 : 140 : 6 0  : 1
+O: 4 2 : 134 : 6 0  : 1
+O: 4 2 : 132 : 6 0  : 1
+O: 4 2 : 127 : 5 7  : 1
+O: 4 2 : 126 : 5 7  : 1
+O: 4 2 : 123 : 5 7  : 1
+O: 4 2 : 122 : 5 7  : 1
+O: 4 2 : 111 : 5 6  : 1
+O: 4 2 : 110 : 5 6  : 1
+O: 4 2 : 103 : 5 6  : 1
+O: 4 2 : 102 : 5 6  : 1
+O: 4 2 : 95 : 5 5  : 1
+O: 4 2 : 94 : 5 5  : 1
+O: 4 2 : 91 : 5 5  : 1
+O: 4 2 : 90 : 5 5  : 1
+O: 4 2 : 87 : 5 5  : 1
+O: 4 2 : 86 : 5 5  : 1
+O: 4 2 : 83 : 5 5  : 1
+O: 4 2 : 82 : 5 5  : 1
+O: 4 2 : 79 : 5 4  : 1
+O: 4 2 : 75 : 5 4  : 1
+O: 4 2 : 71 : 5 4  : 1
+O: 4 2 : 67 : 5 4  : 1
+O: 4 2 : 119 : 5 3  : 1
+O: 4 2 : 118 : 5 3  : 1
+O: 4 2 : 115 : 5 3  : 1
+O: 4 2 : 114 : 5 3  : 1
+O: 4 2 : 107 : 5 2  : 1
+O: 4 2 : 106 : 5 2  : 1
+O: 4 2 : 169 : 2 2  : 1
+O: 4 2 : 2 : 0 0  : 1
+O: 4 2 : 161 : 2 2  : 1
+O: 4 2 : 153 : 2 1  : 1
+O: 4 2 : 145 : 2 1  : 1
+O: 4 2 : 138 : 2 0  : 1
+O: 4 2 : 136 : 2 0  : 1
+O: 4 2 : 130 : 2 0  : 1
+O: 4 2 : 128 : 2 0  : 1
+O: 4 2 : 124 : 1 7  : 1
+O: 4 2 : 120 : 1 7  : 1
+O: 4 2 : 108 : 1 6  : 1
+O: 4 2 : 100 : 1 6  : 1
+O: 4 2 : 77 : 1 4  : 1
+O: 4 2 : 244 : 3 3  : 1
+O: 4 2 : 152 : 2 1  : 1
+O: 4 2 : 73 : 1 4  : 1
+O: 4 2 : 240 : 3 3  : 1
+O: 4 2 : 69 : 1 4  : 1
+O: 4 2 : 144 : 2 1  : 1
+O: 4 2 : 65 : 1 4  : 1
+O: 4 2 : 116 : 1 3  : 1
+O: 4 2 : 112 : 1 3  : 1
+O: 4 2 : 104 : 1 2  : 1
+O: 4 2 : 96 : 1 2  : 1
+O: 4 2 : 92 : 1 1  : 1
+O: 4 2 : 88 : 1 1  : 1
+O: 4 2 : 163 : 2 2  : 1
+O: 4 2 : 84 : 1 1  : 1
+O: 4 2 : 80 : 1 1  : 1
+O: 4 2 : 247 : 3 3  : 1
+O: 4 2 : 32 : 0 2  : 1
+O: 4 2 : 199 : 3 4  : 1
+O: 4 2 : 28 : 0 1  : 1
+O: 4 2 : 195 : 3 4  : 1
+O: 4 2 : 24 : 0 1  : 1
+O: 4 2 : 20 : 0 1  : 1
+O: 4 2 : 187 : 2 7  : 1
+O: 4 2 : 16 : 0 1  : 1
+O: 4 2 : 93 : 1 1  : 1
+O: 4 2 : 14 : 0 0  : 1
+O: 4 2 : 12 : 0 0  : 1
+O: 4 2 : 179 : 2 3  : 1
+O: 4 2 : 160 : 2 2  : 1
+O: 4 2 : 81 : 1 1  : 1
+O: 4 2 : 76 : 1 0  : 1
+O: 4 2 : 243 : 3 3  : 1
+O: 4 2 : 113 : 1 3  : 1
+O: 4 2 : 34 : 0 2  : 1
+O: 4 2 : 0 : 0 0  : 1
+O: 4 2 : 162 : 2 2  : 1
+O: 4 2 : 4 : 0 0  : 1
+O: 4 2 : 171 : 2 2  : 1
+O: 4 2 : 40 : 0 2  : 1
+O: 4 2 : 85 : 1 1  : 1
+O: 4 2 : 6 : 0 0  : 1
+O: 4 2 : 121 : 1 7  : 1
+O: 4 2 : 42 : 0 2  : 1
+O: 4 2 : 209 : 3 1  : 1
+O: 4 2 : 8 : 0 0  : 1
+O: 4 2 : 168 : 2 2  : 1
+O: 4 2 : 1 : 4 4  : 1
+O: 4 2 : 89 : 1 1  : 1
+O: 4 2 : 10 : 0 0  : 1
+O: 4 2 : 177 : 2 3  : 1
+O: 4 2 : 48 : 0 3  : 1
+O: 4 2 : 215 : 3 5  : 1
+O: 4 2 : 50 : 0 3  : 1
+O: 4 2 : 52 : 0 3  : 1
+O: 4 2 : 54 : 0 3  : 1
+O: 4 2 : 97 : 1 2  : 1
+O: 4 2 : 18 : 0 5  : 1
+O: 4 2 : 185 : 2 7  : 1
+O: 4 2 : 101 : 1 6  : 1
+O: 4 2 : 22 : 0 5  : 1
+O: 4 2 : 105 : 1 2  : 1
+O: 4 2 : 26 : 0 5  : 1
+O: 4 2 : 193 : 3 4  : 1
+O: 4 2 : 109 : 1 6  : 1
+O: 4 2 : 30 : 0 5  : 1
+O: 4 2 : 197 : 3 4  : 1
+O: 4 2 : 36 : 0 6  : 1
+O: 4 2 : 117 : 1 3  : 1
+O: 4 2 : 38 : 0 6  : 1
+O: 4 2 : 44 : 0 6  : 1
+O: 4 2 : 211 : 3 5  : 1
+O: 4 2 : 125 : 1 7  : 1
+O: 4 2 : 46 : 0 6  : 1
+O: 4 2 : 213 : 3 1  : 1
+O: 4 2 : 56 : 0 7  : 1
+O: 4 2 : 58 : 0 7  : 1
+O: 4 2 : 225 : 3 2  : 1
+O: 4 2 : 60 : 0 7  : 1
+O: 4 2 : 227 : 3 2  : 1
+O: 4 2 : 62 : 0 7  : 1
+O: 4 2 : 229 : 3 6  : 1
+O: 4 2 : 64 : 1 0  : 1
+O: 4 2 : 231 : 3 6  : 1
+O: 4 2 : 68 : 1 0  : 1
+O: 4 2 : 72 : 1 0  : 1
+O: 4 2 : 170 : 2 2  : 1
+O: 4 2 : 3 : 4 4  : 1
+O: 4 2 : 176 : 2 3  : 1
+O: 4 2 : 9 : 4 4  : 1
+O: 4 2 : 178 : 2 3  : 1
+O: 4 2 : 11 : 4 4  : 1
+O: 4 2 : 129 : 2 4  : 1
+O: 4 2 : 131 : 2 4  : 1
+O: 4 2 : 137 : 2 4  : 1
+O: 4 2 : 139 : 2 4  : 1
+O: 4 2 : 146 : 2 5  : 1
+O: 4 2 : 147 : 2 5  : 1
+O: 4 2 : 154 : 2 5  : 1
+O: 4 2 : 155 : 2 5  : 1
+O: 4 2 : 184 : 2 7  : 1
+O: 4 2 : 17 : 4 1  : 1
+O: 4 2 : 186 : 2 7  : 1
+O: 4 2 : 19 : 4 5  : 1
+O: 4 2 : 192 : 3 0  : 1
+O: 4 2 : 25 : 4 1  : 1
+O: 4 2 : 194 : 3 0  : 1
+O: 4 2 : 27 : 4 5  : 1
+O: 4 2 : 196 : 3 0  : 1
+O: 4 2 : 29 : 4 1  : 1
+O: 4 2 : 198 : 3 0  : 1
+O: 4 2 : 31 : 4 5  : 1
+O: 4 2 : 208 : 3 1  : 1
+O: 4 2 : 41 : 4 2  : 1
+O: 4 2 : 212 : 3 1  : 1
+O: 4 2 : 45 : 4 6  : 1
+O: 4 2 : 224 : 3 2  : 1
+O: 4 2 : 57 : 4 7  : 1
+O: 4 2 : 226 : 3 2  : 1
+O: 4 2 : 59 : 4 7  : 1
+O: 4 2 : 241 : 3 3  : 1
+O: 4 2 : 74 : 5 0  : 1
+O: 4 2 : 242 : 3 3  : 1
+O: 4 2 : 245 : 3 3  : 1
+O: 4 2 : 78 : 5 0  : 1
+O: 4 2 : 246 : 3 3  : 1
+O: 4 2 : 210 : 3 5  : 1
+O: 4 2 : 43 : 4 2  : 1
+O: 4 2 : 214 : 3 5  : 1
+O: 4 2 : 47 : 4 6  : 1
+O: 4 2 : 228 : 3 6  : 1
+O: 4 2 : 61 : 4 7  : 1
+O: 4 2 : 230 : 3 6  : 1
+O: 4 2 : 63 : 4 7  : 1
+O: 4 2 : 21 : 4 1  : 1
+O: 4 2 : 33 : 4 2  : 1
+O: 4 2 : 35 : 4 2  : 1
+O: 4 2 : 49 : 4 3  : 1
+O: 4 2 : 51 : 4 3  : 1
+O: 4 2 : 53 : 4 3  : 1
+O: 4 2 : 55 : 4 3  : 1
+O: 4 2 : 5 : 4 4  : 1
+O: 4 2 : 7 : 4 4  : 1
+O: 4 2 : 13 : 4 4  : 1
+O: 4 2 : 15 : 4 4  : 1
+O: 4 2 : 23 : 4 5  : 1
+O: 4 2 : 37 : 4 6  : 1
+O: 4 2 : 39 : 4 6  : 1
+O: 4 2 : 66 : 5 0  : 1
+O: 4 2 : 70 : 5 0  : 1
+O: 4 2 : 98 : 5 2  : 1
+O: 4 2 : 99 : 5 2  : 1
+O: 4 1 : 255 : 7 7  : 1
+O: 4 1 : 254 : 7 7  : 1
+O: 4 1 : 253 : 7 7  : 1
+O: 4 1 : 252 : 7 7  : 1
+O: 4 1 : 251 : 7 7  : 1
+O: 4 1 : 250 : 7 7  : 1
+O: 4 1 : 249 : 7 7  : 1
+O: 4 1 : 248 : 7 7  : 1
+O: 4 1 : 239 : 7 6  : 1
+O: 4 1 : 238 : 7 6  : 1
+O: 4 1 : 237 : 7 6  : 1
+O: 4 1 : 236 : 7 6  : 1
+O: 4 1 : 223 : 7 5  : 1
+O: 4 1 : 222 : 7 5  : 1
+O: 4 1 : 219 : 7 5  : 1
+O: 4 1 : 218 : 7 5  : 1
+O: 4 1 : 207 : 7 4  : 1
+O: 4 1 : 205 : 7 4  : 1
+O: 4 1 : 203 : 7 4  : 1
+O: 4 1 : 201 : 7 4  : 1
+O: 4 1 : 235 : 7 2  : 1
+O: 4 1 : 234 : 7 2  : 1
+O: 4 1 : 233 : 7 2  : 1
+O: 4 1 : 232 : 7 2  : 1
+O: 4 1 : 221 : 7 1  : 1
+O: 4 1 : 220 : 7 1  : 1
+O: 4 1 : 217 : 7 1  : 1
+O: 4 1 : 216 : 7 1  : 1
+O: 4 1 : 206 : 7 0  : 1
+O: 4 1 : 204 : 7 0  : 1
+O: 4 1 : 202 : 7 0  : 1
+O: 4 1 : 200 : 7 0  : 1
+O: 4 1 : 191 : 6 7  : 1
+O: 4 1 : 190 : 6 7  : 1
+O: 4 1 : 189 : 6 7  : 1
+O: 4 1 : 188 : 6 7  : 1
+O: 4 1 : 175 : 6 6  : 1
+O: 4 1 : 174 : 6 6  : 1
+O: 4 1 : 173 : 6 6  : 1
+O: 4 1 : 172 : 6 6  : 1
+O: 4 1 : 167 : 6 6  : 1
+O: 4 1 : 166 : 6 6  : 1
+O: 4 1 : 165 : 6 6  : 1
+O: 4 1 : 164 : 6 6  : 1
+O: 4 1 : 159 : 6 5  : 1
+O: 4 1 : 158 : 6 5  : 1
+O: 4 1 : 151 : 6 5  : 1
+O: 4 1 : 150 : 6 5  : 1
+O: 4 1 : 143 : 6 4  : 1
+O: 4 1 : 141 : 6 4  : 1
+O: 4 1 : 135 : 6 4  : 1
+O: 4 1 : 133 : 6 4  : 1
+O: 4 1 : 183 : 6 3  : 1
+O: 4 1 : 182 : 6 3  : 1
+O: 4 1 : 181 : 6 3  : 1
+O: 4 1 : 180 : 6 3  : 1
+O: 4 1 : 157 : 6 1  : 1
+O: 4 1 : 156 : 6 1  : 1
+O: 4 1 : 149 : 6 1  : 1
+O: 4 1 : 148 : 6 1  : 1
+O: 4 1 : 142 : 6 0  : 1
+O: 4 1 : 140 : 6 0  : 1
+O: 4 1 : 134 : 6 0  : 1
+O: 4 1 : 132 : 6 0  : 1
+O: 4 1 : 127 : 5 7  : 1
+O: 4 1 : 126 : 5 7  : 1
+O: 4 1 : 123 : 5 7  : 1
+O: 4 1 : 122 : 5 7  : 1
+O: 4 1 : 111 : 5 6  : 1
+O: 4 1 : 110 : 5 6  : 1
+O: 4 1 : 103 : 5 6  : 1
+O: 4 1 : 102 : 5 6  : 1
+O: 4 1 : 95 : 5 5  : 1
+O: 4 1 : 94 : 5 5  : 1
+O: 4 1 : 91 : 5 5  : 1
+O: 4 1 : 90 : 5 5  : 1
+O: 4 1 : 87 : 5 5  : 1
+O: 4 1 : 86 : 5 5  : 1
+O: 4 1 : 83 : 5 5  : 1
+O: 4 1 : 82 : 5 5  : 1
+O: 4 1 : 79 : 5 4  : 1
+O: 4 1 : 75 : 5 4  : 1
+O: 4 1 : 71 : 5 4  : 1
+O: 4 1 : 67 : 5 4  : 1
+O: 4 1 : 119 : 5 3  : 1
+O: 4 1 : 118 : 5 3  : 1
+O: 4 1 : 115 : 5 3  : 1
+O: 4 1 : 114 : 5 3  : 1
+O: 4 1 : 107 : 5 2  : 1
+O: 4 1 : 106 : 5 2  : 1
+O: 4 1 : 169 : 2 2  : 1
+O: 4 1 : 2 : 0 0  : 1
+O: 4 1 : 161 : 2 2  : 1
+O: 4 1 : 153 : 2 1  : 1
+O: 4 1 : 145 : 2 1  : 1
+O: 4 1 : 138 : 2 0  : 1
+O: 4 1 : 136 : 2 0  : 1
+O: 4 1 : 130 : 2 0  : 1
+O: 4 1 : 128 : 2 0  : 1
+O: 4 1 : 124 : 1 7  : 1
+O: 4 1 : 120 : 1 7  : 1
+O: 4 1 : 108 : 1 6  : 1
+O: 4 1 : 100 : 1 6  : 1
+O: 4 1 : 77 : 1 4  : 1
+O: 4 1 : 244 : 3 3  : 1
+O: 4 1 : 152 : 2 1  : 1
+O: 4 1 : 73 : 1 4  : 1
+O: 4 1 : 240 : 3 3  : 1
+O: 4 1 : 69 : 1 4  : 1
+O: 4 1 : 144 : 2 1  : 1
+O: 4 1 : 65 : 1 4  : 1
+O: 4 1 : 116 : 1 3  : 1
+O: 4 1 : 112 : 1 3  : 1
+O: 4 1 : 104 : 1 2  : 1
+O: 4 1 : 96 : 1 2  : 1
+O: 4 1 : 92 : 1 1  : 1
+O: 4 1 : 88 : 1 1  : 1
+O: 4 1 : 163 : 2 2  : 1
+O: 4 1 : 84 : 1 1  : 1
+O: 4 1 : 80 : 1 1  : 1
+O: 4 1 : 247 : 3 3  : 1
+O: 4 1 : 32 : 0 2  : 1
+O: 4 1 : 199 : 3 4  : 1
+O: 4 1 : 28 : 0 1  : 1
+O: 4 1 : 195 : 3 4  : 1
+O: 4 1 : 24 : 0 1  : 1
+O: 4 1 : 20 : 0 1  : 1
+O: 4 1 : 187 : 2 7  : 1
+O: 4 1 : 16 : 0 1  : 1
+O: 4 1 : 93 : 1 1  : 1
+O: 4 1 : 14 : 0 0  : 1
+O: 4 1 : 12 : 0 0  : 1
+O: 4 1 : 179 : 2 3  : 1
+O: 4 1 : 160 : 2 2  : 1
+O: 4 1 : 81 : 1 1  : 1
+O: 4 1 : 76 : 1 0  : 1
+O: 4 1 : 243 : 3 3  : 1
+O: 4 1 : 113 : 1 3  : 1
+O: 4 1 : 34 : 0 2  : 1
+O: 4 1 : 0 : 0 0  : 1
+O: 4 1 : 162 : 2 2  : 1
+O: 4 1 : 4 : 0 0  : 1
+O: 4 1 : 171 : 2 2  : 1
+O: 4 1 : 40 : 0 2  : 1
+O: 4 1 : 85 : 1 1  : 1
+O: 4 1 : 6 : 0 0  : 1
+O: 4 1 : 121 : 1 7  : 1
+O: 4 1 : 42 : 0 2  : 1
+O: 4 1 : 209 : 3 1  : 1
+O: 4 1 : 8 : 0 0  : 1
+O: 4 1 : 168 : 2 2  : 1
+O: 4 1 : 1 : 4 4  : 1
+O: 4 1 : 89 : 1 1  : 1
+O: 4 1 : 10 : 0 0  : 1
+O: 4 1 : 177 : 2 3  : 1
+O: 4 1 : 48 : 0 3  : 1
+O: 4 1 : 215 : 3 5  : 1
+O: 4 1 : 50 : 0 3  : 1
+O: 4 1 : 52 : 0 3  : 1
+O: 4 1 : 54 : 0 3  : 1
+O: 4 1 : 97 : 1 2  : 1
+O: 4 1 : 18 : 0 5  : 1
+O: 4 1 : 185 : 2 7  : 1
+O: 4 1 : 101 : 1 6  : 1
+O: 4 1 : 22 : 0 5  : 1
+O: 4 1 : 105 : 1 2  : 1
+O: 4 1 : 26 : 0 5  : 1
+O: 4 1 : 193 : 3 4  : 1
+O: 4 1 : 109 : 1 6  : 1
+O: 4 1 : 30 : 0 5  : 1
+O: 4 1 : 197 : 3 4  : 1
+O: 4 1 : 36 : 0 6  : 1
+O: 4 1 : 117 : 1 3  : 1
+O: 4 1 : 38 : 0 6  : 1
+O: 4 1 : 44 : 0 6  : 1
+O: 4 1 : 211 : 3 5  : 1
+O: 4 1 : 125 : 1 7  : 1
+O: 4 1 : 46 : 0 6  : 1
+O: 4 1 : 213 : 3 1  : 1
+O: 4 1 : 56 : 0 7  : 1
+O: 4 1 : 58 : 0 7  : 1
+O: 4 1 : 225 : 3 2  : 1
+O: 4 1 : 60 : 0 7  : 1
+O: 4 1 : 227 : 3 2  : 1
+O: 4 1 : 62 : 0 7  : 1
+O: 4 1 : 229 : 3 6  : 1
+O: 4 1 : 64 : 1 0  : 1
+O: 4 1 : 231 : 3 6  : 1
+O: 4 1 : 68 : 1 0  : 1
+O: 4 1 : 72 : 1 0  : 1
+O: 4 1 : 170 : 2 2  : 1
+O: 4 1 : 3 : 4 4  : 1
+O: 4 1 : 176 : 2 3  : 1
+O: 4 1 : 9 : 4 4  : 1
+O: 4 1 : 178 : 2 3  : 1
+O: 4 1 : 11 : 4 4  : 1
+O: 4 1 : 129 : 2 4  : 1
+O: 4 1 : 131 : 2 4  : 1
+O: 4 1 : 137 : 2 4  : 1
+O: 4 1 : 139 : 2 4  : 1
+O: 4 1 : 146 : 2 5  : 1
+O: 4 1 : 147 : 2 5  : 1
+O: 4 1 : 154 : 2 5  : 1
+O: 4 1 : 155 : 2 5  : 1
+O: 4 1 : 184 : 2 7  : 1
+O: 4 1 : 17 : 4 1  : 1
+O: 4 1 : 186 : 2 7  : 1
+O: 4 1 : 19 : 4 5  : 1
+O: 4 1 : 192 : 3 0  : 1
+O: 4 1 : 25 : 4 1  : 1
+O: 4 1 : 194 : 3 0  : 1
+O: 4 1 : 27 : 4 5  : 1
+O: 4 1 : 196 : 3 0  : 1
+O: 4 1 : 29 : 4 1  : 1
+O: 4 1 : 198 : 3 0  : 1
+O: 4 1 : 31 : 4 5  : 1
+O: 4 1 : 208 : 3 1  : 1
+O: 4 1 : 41 : 4 2  : 1
+O: 4 1 : 212 : 3 1  : 1
+O: 4 1 : 45 : 4 6  : 1
+O: 4 1 : 224 : 3 2  : 1
+O: 4 1 : 57 : 4 7  : 1
+O: 4 1 : 226 : 3 2  : 1
+O: 4 1 : 59 : 4 7  : 1
+O: 4 1 : 241 : 3 3  : 1
+O: 4 1 : 74 : 5 0  : 1
+O: 4 1 : 242 : 3 3  : 1
+O: 4 1 : 245 : 3 3  : 1
+O: 4 1 : 78 : 5 0  : 1
+O: 4 1 : 246 : 3 3  : 1
+O: 4 1 : 210 : 3 5  : 1
+O: 4 1 : 43 : 4 2  : 1
+O: 4 1 : 214 : 3 5  : 1
+O: 4 1 : 47 : 4 6  : 1
+O: 4 1 : 228 : 3 6  : 1
+O: 4 1 : 61 : 4 7  : 1
+O: 4 1 : 230 : 3 6  : 1
+O: 4 1 : 63 : 4 7  : 1
+O: 4 1 : 21 : 4 1  : 1
+O: 4 1 : 33 : 4 2  : 1
+O: 4 1 : 35 : 4 2  : 1
+O: 4 1 : 49 : 4 3  : 1
+O: 4 1 : 51 : 4 3  : 1
+O: 4 1 : 53 : 4 3  : 1
+O: 4 1 : 55 : 4 3  : 1
+O: 4 1 : 5 : 4 4  : 1
+O: 4 1 : 7 : 4 4  : 1
+O: 4 1 : 13 : 4 4  : 1
+O: 4 1 : 15 : 4 4  : 1
+O: 4 1 : 23 : 4 5  : 1
+O: 4 1 : 37 : 4 6  : 1
+O: 4 1 : 39 : 4 6  : 1
+O: 4 1 : 66 : 5 0  : 1
+O: 4 1 : 70 : 5 0  : 1
+O: 4 1 : 98 : 5 2  : 1
+O: 4 1 : 99 : 5 2  : 1
+O: 4 0 : 255 : 7 7  : 1
+O: 4 0 : 254 : 7 7  : 1
+O: 4 0 : 253 : 7 7  : 1
+O: 4 0 : 252 : 7 7  : 1
+O: 4 0 : 251 : 7 7  : 1
+O: 4 0 : 250 : 7 7  : 1
+O: 4 0 : 249 : 7 7  : 1
+O: 4 0 : 248 : 7 7  : 1
+O: 4 0 : 239 : 7 6  : 1
+O: 4 0 : 238 : 7 6  : 1
+O: 4 0 : 237 : 7 6  : 1
+O: 4 0 : 236 : 7 6  : 1
+O: 4 0 : 223 : 7 5  : 1
+O: 4 0 : 222 : 7 5  : 1
+O: 4 0 : 219 : 7 5  : 1
+O: 4 0 : 218 : 7 5  : 1
+O: 4 0 : 207 : 7 4  : 1
+O: 4 0 : 205 : 7 4  : 1
+O: 4 0 : 203 : 7 4  : 1
+O: 4 0 : 201 : 7 4  : 1
+O: 4 0 : 235 : 7 2  : 1
+O: 4 0 : 234 : 7 2  : 1
+O: 4 0 : 233 : 7 2  : 1
+O: 4 0 : 232 : 7 2  : 1
+O: 4 0 : 221 : 7 1  : 1
+O: 4 0 : 220 : 7 1  : 1
+O: 4 0 : 217 : 7 1  : 1
+O: 4 0 : 216 : 7 1  : 1
+O: 4 0 : 206 : 7 0  : 1
+O: 4 0 : 204 : 7 0  : 1
+O: 4 0 : 202 : 7 0  : 1
+O: 4 0 : 200 : 7 0  : 1
+O: 4 0 : 191 : 6 7  : 1
+O: 4 0 : 190 : 6 7  : 1
+O: 4 0 : 189 : 6 7  : 1
+O: 4 0 : 188 : 6 7  : 1
+O: 4 0 : 175 : 6 6  : 1
+O: 4 0 : 174 : 6 6  : 1
+O: 4 0 : 173 : 6 6  : 1
+O: 4 0 : 172 : 6 6  : 1
+O: 4 0 : 167 : 6 6  : 1
+O: 4 0 : 166 : 6 6  : 1
+O: 4 0 : 165 : 6 6  : 1
+O: 4 0 : 164 : 6 6  : 1
+O: 4 0 : 159 : 6 5  : 1
+O: 4 0 : 158 : 6 5  : 1
+O: 4 0 : 151 : 6 5  : 1
+O: 4 0 : 150 : 6 5  : 1
+O: 4 0 : 143 : 6 4  : 1
+O: 4 0 : 141 : 6 4  : 1
+O: 4 0 : 135 : 6 4  : 1
+O: 4 0 : 133 : 6 4  : 1
+O: 4 0 : 183 : 6 3  : 1
+O: 4 0 : 182 : 6 3  : 1
+O: 4 0 : 181 : 6 3  : 1
+O: 4 0 : 180 : 6 3  : 1
+O: 4 0 : 157 : 6 1  : 1
+O: 4 0 : 156 : 6 1  : 1
+O: 4 0 : 149 : 6 1  : 1
+O: 4 0 : 148 : 6 1  : 1
+O: 4 0 : 142 : 6 0  : 1
+O: 4 0 : 140 : 6 0  : 1
+O: 4 0 : 134 : 6 0  : 1
+O: 4 0 : 132 : 6 0  : 1
+O: 4 0 : 127 : 5 7  : 1
+O: 4 0 : 126 : 5 7  : 1
+O: 4 0 : 123 : 5 7  : 1
+O: 4 0 : 122 : 5 7  : 1
+O: 4 0 : 111 : 5 6  : 1
+O: 4 0 : 110 : 5 6  : 1
+O: 4 0 : 103 : 5 6  : 1
+O: 4 0 : 102 : 5 6  : 1
+O: 4 0 : 95 : 5 5  : 1
+O: 4 0 : 94 : 5 5  : 1
+O: 4 0 : 91 : 5 5  : 1
+O: 4 0 : 90 : 5 5  : 1
+O: 4 0 : 87 : 5 5  : 1
+O: 4 0 : 86 : 5 5  : 1
+O: 4 0 : 83 : 5 5  : 1
+O: 4 0 : 82 : 5 5  : 1
+O: 4 0 : 79 : 5 4  : 1
+O: 4 0 : 75 : 5 4  : 1
+O: 4 0 : 71 : 5 4  : 1
+O: 4 0 : 67 : 5 4  : 1
+O: 4 0 : 119 : 5 3  : 1
+O: 4 0 : 118 : 5 3  : 1
+O: 4 0 : 115 : 5 3  : 1
+O: 4 0 : 114 : 5 3  : 1
+O: 4 0 : 107 : 5 2  : 1
+O: 4 0 : 106 : 5 2  : 1
+O: 4 0 : 169 : 2 2  : 1
+O: 4 0 : 2 : 0 0  : 1
+O: 4 0 : 161 : 2 2  : 1
+O: 4 0 : 153 : 2 1  : 1
+O: 4 0 : 145 : 2 1  : 1
+O: 4 0 : 138 : 2 0  : 1
+O: 4 0 : 136 : 2 0  : 1
+O: 4 0 : 130 : 2 0  : 1
+O: 4 0 : 128 : 2 0  : 1
+O: 4 0 : 124 : 1 7  : 1
+O: 4 0 : 120 : 1 7  : 1
+O: 4 0 : 108 : 1 6  : 1
+O: 4 0 : 100 : 1 6  : 1
+O: 4 0 : 77 : 1 4  : 1
+O: 4 0 : 244 : 3 3  : 1
+O: 4 0 : 152 : 2 1  : 1
+O: 4 0 : 73 : 1 4  : 1
+O: 4 0 : 240 : 3 3  : 1
+O: 4 0 : 69 : 1 4  : 1
+O: 4 0 : 144 : 2 1  : 1
+O: 4 0 : 65 : 1 4  : 1
+O: 4 0 : 116 : 1 3  : 1
+O: 4 0 : 112 : 1 3  : 1
+O: 4 0 : 104 : 1 2  : 1
+O: 4 0 : 96 : 1 2  : 1
+O: 4 0 : 92 : 1 1  : 1
+O: 4 0 : 88 : 1 1  : 1
+O: 4 0 : 163 : 2 2  : 1
+O: 4 0 : 84 : 1 1  : 1
+O: 4 0 : 80 : 1 1  : 1
+O: 4 0 : 247 : 3 3  : 1
+O: 4 0 : 32 : 0 2  : 1
+O: 4 0 : 199 : 3 4  : 1
+O: 4 0 : 28 : 0 1  : 1
+O: 4 0 : 195 : 3 4  : 1
+O: 4 0 : 24 : 0 1  : 1
+O: 4 0 : 20 : 0 1  : 1
+O: 4 0 : 187 : 2 7  : 1
+O: 4 0 : 16 : 0 1  : 1
+O: 4 0 : 93 : 1 1  : 1
+O: 4 0 : 14 : 0 0  : 1
+O: 4 0 : 12 : 0 0  : 1
+O: 4 0 : 179 : 2 3  : 1
+O: 4 0 : 160 : 2 2  : 1
+O: 4 0 : 81 : 1 1  : 1
+O: 4 0 : 76 : 1 0  : 1
+O: 4 0 : 243 : 3 3  : 1
+O: 4 0 : 113 : 1 3  : 1
+O: 4 0 : 34 : 0 2  : 1
+O: 4 0 : 0 : 0 0  : 1
+O: 4 0 : 162 : 2 2  : 1
+O: 4 0 : 4 : 0 0  : 1
+O: 4 0 : 171 : 2 2  : 1
+O: 4 0 : 40 : 0 2  : 1
+O: 4 0 : 85 : 1 1  : 1
+O: 4 0 : 6 : 0 0  : 1
+O: 4 0 : 121 : 1 7  : 1
+O: 4 0 : 42 : 0 2  : 1
+O: 4 0 : 209 : 3 1  : 1
+O: 4 0 : 8 : 0 0  : 1
+O: 4 0 : 168 : 2 2  : 1
+O: 4 0 : 1 : 4 4  : 1
+O: 4 0 : 89 : 1 1  : 1
+O: 4 0 : 10 : 0 0  : 1
+O: 4 0 : 177 : 2 3  : 1
+O: 4 0 : 48 : 0 3  : 1
+O: 4 0 : 215 : 3 5  : 1
+O: 4 0 : 50 : 0 3  : 1
+O: 4 0 : 52 : 0 3  : 1
+O: 4 0 : 54 : 0 3  : 1
+O: 4 0 : 97 : 1 2  : 1
+O: 4 0 : 18 : 0 5  : 1
+O: 4 0 : 185 : 2 7  : 1
+O: 4 0 : 101 : 1 6  : 1
+O: 4 0 : 22 : 0 5  : 1
+O: 4 0 : 105 : 1 2  : 1
+O: 4 0 : 26 : 0 5  : 1
+O: 4 0 : 193 : 3 4  : 1
+O: 4 0 : 109 : 1 6  : 1
+O: 4 0 : 30 : 0 5  : 1
+O: 4 0 : 197 : 3 4  : 1
+O: 4 0 : 36 : 0 6  : 1
+O: 4 0 : 117 : 1 3  : 1
+O: 4 0 : 38 : 0 6  : 1
+O: 4 0 : 44 : 0 6  : 1
+O: 4 0 : 211 : 3 5  : 1
+O: 4 0 : 125 : 1 7  : 1
+O: 4 0 : 46 : 0 6  : 1
+O: 4 0 : 213 : 3 1  : 1
+O: 4 0 : 56 : 0 7  : 1
+O: 4 0 : 58 : 0 7  : 1
+O: 4 0 : 225 : 3 2  : 1
+O: 4 0 : 60 : 0 7  : 1
+O: 4 0 : 227 : 3 2  : 1
+O: 4 0 : 62 : 0 7  : 1
+O: 4 0 : 229 : 3 6  : 1
+O: 4 0 : 64 : 1 0  : 1
+O: 4 0 : 231 : 3 6  : 1
+O: 4 0 : 68 : 1 0  : 1
+O: 4 0 : 72 : 1 0  : 1
+O: 4 0 : 170 : 2 2  : 1
+O: 4 0 : 3 : 4 4  : 1
+O: 4 0 : 176 : 2 3  : 1
+O: 4 0 : 9 : 4 4  : 1
+O: 4 0 : 178 : 2 3  : 1
+O: 4 0 : 11 : 4 4  : 1
+O: 4 0 : 129 : 2 4  : 1
+O: 4 0 : 131 : 2 4  : 1
+O: 4 0 : 137 : 2 4  : 1
+O: 4 0 : 139 : 2 4  : 1
+O: 4 0 : 146 : 2 5  : 1
+O: 4 0 : 147 : 2 5  : 1
+O: 4 0 : 154 : 2 5  : 1
+O: 4 0 : 155 : 2 5  : 1
+O: 4 0 : 184 : 2 7  : 1
+O: 4 0 : 17 : 4 1  : 1
+O: 4 0 : 186 : 2 7  : 1
+O: 4 0 : 19 : 4 5  : 1
+O: 4 0 : 192 : 3 0  : 1
+O: 4 0 : 25 : 4 1  : 1
+O: 4 0 : 194 : 3 0  : 1
+O: 4 0 : 27 : 4 5  : 1
+O: 4 0 : 196 : 3 0  : 1
+O: 4 0 : 29 : 4 1  : 1
+O: 4 0 : 198 : 3 0  : 1
+O: 4 0 : 31 : 4 5  : 1
+O: 4 0 : 208 : 3 1  : 1
+O: 4 0 : 41 : 4 2  : 1
+O: 4 0 : 212 : 3 1  : 1
+O: 4 0 : 45 : 4 6  : 1
+O: 4 0 : 224 : 3 2  : 1
+O: 4 0 : 57 : 4 7  : 1
+O: 4 0 : 226 : 3 2  : 1
+O: 4 0 : 59 : 4 7  : 1
+O: 4 0 : 241 : 3 3  : 1
+O: 4 0 : 74 : 5 0  : 1
+O: 4 0 : 242 : 3 3  : 1
+O: 4 0 : 245 : 3 3  : 1
+O: 4 0 : 78 : 5 0  : 1
+O: 4 0 : 246 : 3 3  : 1
+O: 4 0 : 210 : 3 5  : 1
+O: 4 0 : 43 : 4 2  : 1
+O: 4 0 : 214 : 3 5  : 1
+O: 4 0 : 47 : 4 6  : 1
+O: 4 0 : 228 : 3 6  : 1
+O: 4 0 : 61 : 4 7  : 1
+O: 4 0 : 230 : 3 6  : 1
+O: 4 0 : 63 : 4 7  : 1
+O: 4 0 : 21 : 4 1  : 1
+O: 4 0 : 33 : 4 2  : 1
+O: 4 0 : 35 : 4 2  : 1
+O: 4 0 : 49 : 4 3  : 1
+O: 4 0 : 51 : 4 3  : 1
+O: 4 0 : 53 : 4 3  : 1
+O: 4 0 : 55 : 4 3  : 1
+O: 4 0 : 5 : 4 4  : 1
+O: 4 0 : 7 : 4 4  : 1
+O: 4 0 : 13 : 4 4  : 1
+O: 4 0 : 15 : 4 4  : 1
+O: 4 0 : 23 : 4 5  : 1
+O: 4 0 : 37 : 4 6  : 1
+O: 4 0 : 39 : 4 6  : 1
+O: 4 0 : 66 : 5 0  : 1
+O: 4 0 : 70 : 5 0  : 1
+O: 4 0 : 98 : 5 2  : 1
+O: 4 0 : 99 : 5 2  : 1
+O: 3 5 : 255 : 7 7  : 1
+O: 3 5 : 254 : 7 7  : 1
+O: 3 5 : 253 : 7 7  : 1
+O: 3 5 : 252 : 7 7  : 1
+O: 3 5 : 251 : 7 7  : 1
+O: 3 5 : 250 : 7 7  : 1
+O: 3 5 : 249 : 7 7  : 1
+O: 3 5 : 248 : 7 7  : 1
+O: 3 5 : 239 : 7 6  : 1
+O: 3 5 : 238 : 7 6  : 1
+O: 3 5 : 237 : 7 6  : 1
+O: 3 5 : 236 : 7 6  : 1
+O: 3 5 : 223 : 7 5  : 1
+O: 3 5 : 222 : 7 5  : 1
+O: 3 5 : 219 : 7 5  : 1
+O: 3 5 : 218 : 7 5  : 1
+O: 3 5 : 207 : 7 4  : 1
+O: 3 5 : 205 : 7 4  : 1
+O: 3 5 : 203 : 7 4  : 1
+O: 3 5 : 201 : 7 4  : 1
+O: 3 5 : 235 : 7 2  : 1
+O: 3 5 : 234 : 7 2  : 1
+O: 3 5 : 233 : 7 2  : 1
+O: 3 5 : 232 : 7 2  : 1
+O: 3 5 : 221 : 7 1  : 1
+O: 3 5 : 220 : 7 1  : 1
+O: 3 5 : 217 : 7 1  : 1
+O: 3 5 : 216 : 7 1  : 1
+O: 3 5 : 206 : 7 0  : 1
+O: 3 5 : 204 : 7 0  : 1
+O: 3 5 : 202 : 7 0  : 1
+O: 3 5 : 200 : 7 0  : 1
+O: 3 5 : 191 : 6 7  : 1
+O: 3 5 : 190 : 6 7  : 1
+O: 3 5 : 189 : 6 7  : 1
+O: 3 5 : 188 : 6 7  : 1
+O: 3 5 : 175 : 6 6  : 1
+O: 3 5 : 174 : 6 6  : 1
+O: 3 5 : 173 : 6 6  : 1
+O: 3 5 : 172 : 6 6  : 1
+O: 3 5 : 167 : 6 6  : 1
+O: 3 5 : 166 : 6 6  : 1
+O: 3 5 : 165 : 6 6  : 1
+O: 3 5 : 164 : 6 6  : 1
+O: 3 5 : 159 : 6 5  : 1
+O: 3 5 : 158 : 6 5  : 1
+O: 3 5 : 151 : 6 5  : 1
+O: 3 5 : 150 : 6 5  : 1
+O: 3 5 : 143 : 6 4  : 1
+O: 3 5 : 141 : 6 4  : 1
+O: 3 5 : 135 : 6 4  : 1
+O: 3 5 : 133 : 6 4  : 1
+O: 3 5 : 183 : 6 3  : 1
+O: 3 5 : 182 : 6 3  : 1
+O: 3 5 : 181 : 6 3  : 1
+O: 3 5 : 180 : 6 3  : 1
+O: 3 5 : 157 : 6 1  : 1
+O: 3 5 : 156 : 6 1  : 1
+O: 3 5 : 149 : 6 1  : 1
+O: 3 5 : 148 : 6 1  : 1
+O: 3 5 : 142 : 6 0  : 1
+O: 3 5 : 140 : 6 0  : 1
+O: 3 5 : 134 : 6 0  : 1
+O: 3 5 : 132 : 6 0  : 1
+O: 3 5 : 127 : 5 7  : 1
+O: 3 5 : 126 : 5 7  : 1
+O: 3 5 : 123 : 5 7  : 1
+O: 3 5 : 122 : 5 7  : 1
+O: 3 5 : 111 : 5 6  : 1
+O: 3 5 : 110 : 5 6  : 1
+O: 3 5 : 103 : 5 6  : 1
+O: 3 5 : 102 : 5 6  : 1
+O: 3 5 : 95 : 5 5  : 1
+O: 3 5 : 94 : 5 5  : 1
+O: 3 5 : 91 : 5 5  : 1
+O: 3 5 : 90 : 5 5  : 1
+O: 3 5 : 87 : 5 5  : 1
+O: 3 5 : 86 : 5 5  : 1
+O: 3 5 : 83 : 5 5  : 1
+O: 3 5 : 82 : 5 5  : 1
+O: 3 5 : 79 : 5 4  : 1
+O: 3 5 : 75 : 5 4  : 1
+O: 3 5 : 71 : 5 4  : 1
+O: 3 5 : 67 : 5 4  : 1
+O: 3 5 : 119 : 5 3  : 1
+O: 3 5 : 118 : 5 3  : 1
+O: 3 5 : 115 : 5 3  : 1
+O: 3 5 : 114 : 5 3  : 1
+O: 3 5 : 107 : 5 2  : 1
+O: 3 5 : 106 : 5 2  : 1
+O: 3 5 : 169 : 2 2  : 1
+O: 3 5 : 2 : 0 0  : 1
+O: 3 5 : 161 : 2 2  : 1
+O: 3 5 : 153 : 2 1  : 1
+O: 3 5 : 145 : 2 1  : 1
+O: 3 5 : 138 : 2 0  : 1
+O: 3 5 : 136 : 2 0  : 1
+O: 3 5 : 130 : 2 0  : 1
+O: 3 5 : 128 : 2 0  : 1
+O: 3 5 : 124 : 1 7  : 1
+O: 3 5 : 120 : 1 7  : 1
+O: 3 5 : 108 : 1 6  : 1
+O: 3 5 : 100 : 1 6  : 1
+O: 3 5 : 77 : 1 4  : 1
+O: 3 5 : 244 : 3 3  : 1
+O: 3 5 : 152 : 2 1  : 1
+O: 3 5 : 73 : 1 4  : 1
+O: 3 5 : 240 : 3 3  : 1
+O: 3 5 : 69 : 1 4  : 1
+O: 3 5 : 144 : 2 1  : 1
+O: 3 5 : 65 : 1 4  : 1
+O: 3 5 : 116 : 1 3  : 1
+O: 3 5 : 112 : 1 3  : 1
+O: 3 5 : 104 : 1 2  : 1
+O: 3 5 : 96 : 1 2  : 1
+O: 3 5 : 92 : 1 1  : 1
+O: 3 5 : 88 : 1 1  : 1
+O: 3 5 : 163 : 2 2  : 1
+O: 3 5 : 84 : 1 1  : 1
+O: 3 5 : 80 : 1 1  : 1
+O: 3 5 : 247 : 3 3  : 1
+O: 3 5 : 32 : 0 2  : 1
+O: 3 5 : 199 : 3 4  : 1
+O: 3 5 : 28 : 0 1  : 1
+O: 3 5 : 195 : 3 4  : 1
+O: 3 5 : 24 : 0 1  : 1
+O: 3 5 : 20 : 0 1  : 1
+O: 3 5 : 187 : 2 7  : 1
+O: 3 5 : 16 : 0 1  : 1
+O: 3 5 : 93 : 1 1  : 1
+O: 3 5 : 14 : 0 0  : 1
+O: 3 5 : 12 : 0 0  : 1
+O: 3 5 : 179 : 2 3  : 1
+O: 3 5 : 160 : 2 2  : 1
+O: 3 5 : 81 : 1 1  : 1
+O: 3 5 : 76 : 1 0  : 1
+O: 3 5 : 243 : 3 3  : 1
+O: 3 5 : 113 : 1 3  : 1
+O: 3 5 : 34 : 0 2  : 1
+O: 3 5 : 0 : 0 0  : 1
+O: 3 5 : 162 : 2 2  : 1
+O: 3 5 : 4 : 0 0  : 1
+O: 3 5 : 171 : 2 2  : 1
+O: 3 5 : 40 : 0 2  : 1
+O: 3 5 : 85 : 1 1  : 1
+O: 3 5 : 6 : 0 0  : 1
+O: 3 5 : 121 : 1 7  : 1
+O: 3 5 : 42 : 0 2  : 1
+O: 3 5 : 209 : 3 1  : 1
+O: 3 5 : 8 : 0 0  : 1
+O: 3 5 : 168 : 2 2  : 1
+O: 3 5 : 1 : 4 4  : 1
+O: 3 5 : 89 : 1 1  : 1
+O: 3 5 : 10 : 0 0  : 1
+O: 3 5 : 177 : 2 3  : 1
+O: 3 5 : 48 : 0 3  : 1
+O: 3 5 : 215 : 3 5  : 1
+O: 3 5 : 50 : 0 3  : 1
+O: 3 5 : 52 : 0 3  : 1
+O: 3 5 : 54 : 0 3  : 1
+O: 3 5 : 97 : 1 2  : 1
+O: 3 5 : 18 : 0 5  : 1
+O: 3 5 : 185 : 2 7  : 1
+O: 3 5 : 101 : 1 6  : 1
+O: 3 5 : 22 : 0 5  : 1
+O: 3 5 : 105 : 1 2  : 1
+O: 3 5 : 26 : 0 5  : 1
+O: 3 5 : 193 : 3 4  : 1
+O: 3 5 : 109 : 1 6  : 1
+O: 3 5 : 30 : 0 5  : 1
+O: 3 5 : 197 : 3 4  : 1
+O: 3 5 : 36 : 0 6  : 1
+O: 3 5 : 117 : 1 3  : 1
+O: 3 5 : 38 : 0 6  : 1
+O: 3 5 : 44 : 0 6  : 1
+O: 3 5 : 211 : 3 5  : 1
+O: 3 5 : 125 : 1 7  : 1
+O: 3 5 : 46 : 0 6  : 1
+O: 3 5 : 213 : 3 1  : 1
+O: 3 5 : 56 : 0 7  : 1
+O: 3 5 : 58 : 0 7  : 1
+O: 3 5 : 225 : 3 2  : 1
+O: 3 5 : 60 : 0 7  : 1
+O: 3 5 : 227 : 3 2  : 1
+O: 3 5 : 62 : 0 7  : 1
+O: 3 5 : 229 : 3 6  : 1
+O: 3 5 : 64 : 1 0  : 1
+O: 3 5 : 231 : 3 6  : 1
+O: 3 5 : 68 : 1 0  : 1
+O: 3 5 : 72 : 1 0  : 1
+O: 3 5 : 170 : 2 2  : 1
+O: 3 5 : 3 : 4 4  : 1
+O: 3 5 : 176 : 2 3  : 1
+O: 3 5 : 9 : 4 4  : 1
+O: 3 5 : 178 : 2 3  : 1
+O: 3 5 : 11 : 4 4  : 1
+O: 3 5 : 129 : 2 4  : 1
+O: 3 5 : 131 : 2 4  : 1
+O: 3 5 : 137 : 2 4  : 1
+O: 3 5 : 139 : 2 4  : 1
+O: 3 5 : 146 : 2 5  : 1
+O: 3 5 : 147 : 2 5  : 1
+O: 3 5 : 154 : 2 5  : 1
+O: 3 5 : 155 : 2 5  : 1
+O: 3 5 : 184 : 2 7  : 1
+O: 3 5 : 17 : 4 1  : 1
+O: 3 5 : 186 : 2 7  : 1
+O: 3 5 : 19 : 4 5  : 1
+O: 3 5 : 192 : 3 0  : 1
+O: 3 5 : 25 : 4 1  : 1
+O: 3 5 : 194 : 3 0  : 1
+O: 3 5 : 27 : 4 5  : 1
+O: 3 5 : 196 : 3 0  : 1
+O: 3 5 : 29 : 4 1  : 1
+O: 3 5 : 198 : 3 0  : 1
+O: 3 5 : 31 : 4 5  : 1
+O: 3 5 : 208 : 3 1  : 1
+O: 3 5 : 41 : 4 2  : 1
+O: 3 5 : 212 : 3 1  : 1
+O: 3 5 : 45 : 4 6  : 1
+O: 3 5 : 224 : 3 2  : 1
+O: 3 5 : 57 : 4 7  : 1
+O: 3 5 : 226 : 3 2  : 1
+O: 3 5 : 59 : 4 7  : 1
+O: 3 5 : 241 : 3 3  : 1
+O: 3 5 : 74 : 5 0  : 1
+O: 3 5 : 242 : 3 3  : 1
+O: 3 5 : 245 : 3 3  : 1
+O: 3 5 : 78 : 5 0  : 1
+O: 3 5 : 246 : 3 3  : 1
+O: 3 5 : 210 : 3 5  : 1
+O: 3 5 : 43 : 4 2  : 1
+O: 3 5 : 214 : 3 5  : 1
+O: 3 5 : 47 : 4 6  : 1
+O: 3 5 : 228 : 3 6  : 1
+O: 3 5 : 61 : 4 7  : 1
+O: 3 5 : 230 : 3 6  : 1
+O: 3 5 : 63 : 4 7  : 1
+O: 3 5 : 21 : 4 1  : 1
+O: 3 5 : 33 : 4 2  : 1
+O: 3 5 : 35 : 4 2  : 1
+O: 3 5 : 49 : 4 3  : 1
+O: 3 5 : 51 : 4 3  : 1
+O: 3 5 : 53 : 4 3  : 1
+O: 3 5 : 55 : 4 3  : 1
+O: 3 5 : 5 : 4 4  : 1
+O: 3 5 : 7 : 4 4  : 1
+O: 3 5 : 13 : 4 4  : 1
+O: 3 5 : 15 : 4 4  : 1
+O: 3 5 : 23 : 4 5  : 1
+O: 3 5 : 37 : 4 6  : 1
+O: 3 5 : 39 : 4 6  : 1
+O: 3 5 : 66 : 5 0  : 1
+O: 3 5 : 70 : 5 0  : 1
+O: 3 5 : 98 : 5 2  : 1
+O: 3 5 : 99 : 5 2  : 1
+O: 3 4 : 255 : 7 7  : 1
+O: 3 4 : 254 : 7 7  : 1
+O: 3 4 : 253 : 7 7  : 1
+O: 3 4 : 252 : 7 7  : 1
+O: 3 4 : 251 : 7 7  : 1
+O: 3 4 : 250 : 7 7  : 1
+O: 3 4 : 249 : 7 7  : 1
+O: 3 4 : 248 : 7 7  : 1
+O: 3 4 : 239 : 7 6  : 1
+O: 3 4 : 238 : 7 6  : 1
+O: 3 4 : 237 : 7 6  : 1
+O: 3 4 : 236 : 7 6  : 1
+O: 3 4 : 223 : 7 5  : 1
+O: 3 4 : 222 : 7 5  : 1
+O: 3 4 : 219 : 7 5  : 1
+O: 3 4 : 218 : 7 5  : 1
+O: 3 4 : 207 : 7 4  : 1
+O: 3 4 : 205 : 7 4  : 1
+O: 3 4 : 203 : 7 4  : 1
+O: 3 4 : 201 : 7 4  : 1
+O: 3 4 : 235 : 7 2  : 1
+O: 3 4 : 234 : 7 2  : 1
+O: 3 4 : 233 : 7 2  : 1
+O: 3 4 : 232 : 7 2  : 1
+O: 3 4 : 221 : 7 1  : 1
+O: 3 4 : 220 : 7 1  : 1
+O: 3 4 : 217 : 7 1  : 1
+O: 3 4 : 216 : 7 1  : 1
+O: 3 4 : 206 : 7 0  : 1
+O: 3 4 : 204 : 7 0  : 1
+O: 3 4 : 202 : 7 0  : 1
+O: 3 4 : 200 : 7 0  : 1
+O: 3 4 : 191 : 6 7  : 1
+O: 3 4 : 190 : 6 7  : 1
+O: 3 4 : 189 : 6 7  : 1
+O: 3 4 : 188 : 6 7  : 1
+O: 3 4 : 175 : 6 6  : 1
+O: 3 4 : 174 : 6 6  : 1
+O: 3 4 : 173 : 6 6  : 1
+O: 3 4 : 172 : 6 6  : 1
+O: 3 4 : 167 : 6 6  : 1
+O: 3 4 : 166 : 6 6  : 1
+O: 3 4 : 165 : 6 6  : 1
+O: 3 4 : 164 : 6 6  : 1
+O: 3 4 : 159 : 6 5  : 1
+O: 3 4 : 158 : 6 5  : 1
+O: 3 4 : 151 : 6 5  : 1
+O: 3 4 : 150 : 6 5  : 1
+O: 3 4 : 143 : 6 4  : 1
+O: 3 4 : 141 : 6 4  : 1
+O: 3 4 : 135 : 6 4  : 1
+O: 3 4 : 133 : 6 4  : 1
+O: 3 4 : 183 : 6 3  : 1
+O: 3 4 : 182 : 6 3  : 1
+O: 3 4 : 181 : 6 3  : 1
+O: 3 4 : 180 : 6 3  : 1
+O: 3 4 : 157 : 6 1  : 1
+O: 3 4 : 156 : 6 1  : 1
+O: 3 4 : 149 : 6 1  : 1
+O: 3 4 : 148 : 6 1  : 1
+O: 3 4 : 142 : 6 0  : 1
+O: 3 4 : 140 : 6 0  : 1
+O: 3 4 : 134 : 6 0  : 1
+O: 3 4 : 132 : 6 0  : 1
+O: 3 4 : 127 : 5 7  : 1
+O: 3 4 : 126 : 5 7  : 1
+O: 3 4 : 123 : 5 7  : 1
+O: 3 4 : 122 : 5 7  : 1
+O: 3 4 : 111 : 5 6  : 1
+O: 3 4 : 110 : 5 6  : 1
+O: 3 4 : 103 : 5 6  : 1
+O: 3 4 : 102 : 5 6  : 1
+O: 3 4 : 95 : 5 5  : 1
+O: 3 4 : 94 : 5 5  : 1
+O: 3 4 : 91 : 5 5  : 1
+O: 3 4 : 90 : 5 5  : 1
+O: 3 4 : 87 : 5 5  : 1
+O: 3 4 : 86 : 5 5  : 1
+O: 3 4 : 83 : 5 5  : 1
+O: 3 4 : 82 : 5 5  : 1
+O: 3 4 : 79 : 5 4  : 1
+O: 3 4 : 75 : 5 4  : 1
+O: 3 4 : 71 : 5 4  : 1
+O: 3 4 : 67 : 5 4  : 1
+O: 3 4 : 119 : 5 3  : 1
+O: 3 4 : 118 : 5 3  : 1
+O: 3 4 : 115 : 5 3  : 1
+O: 3 4 : 114 : 5 3  : 1
+O: 3 4 : 107 : 5 2  : 1
+O: 3 4 : 106 : 5 2  : 1
+O: 3 4 : 169 : 2 2  : 1
+O: 3 4 : 2 : 0 0  : 1
+O: 3 4 : 161 : 2 2  : 1
+O: 3 4 : 153 : 2 1  : 1
+O: 3 4 : 145 : 2 1  : 1
+O: 3 4 : 138 : 2 0  : 1
+O: 3 4 : 136 : 2 0  : 1
+O: 3 4 : 130 : 2 0  : 1
+O: 3 4 : 128 : 2 0  : 1
+O: 3 4 : 124 : 1 7  : 1
+O: 3 4 : 120 : 1 7  : 1
+O: 3 4 : 108 : 1 6  : 1
+O: 3 4 : 100 : 1 6  : 1
+O: 3 4 : 77 : 1 4  : 1
+O: 3 4 : 244 : 3 3  : 1
+O: 3 4 : 152 : 2 1  : 1
+O: 3 4 : 73 : 1 4  : 1
+O: 3 4 : 240 : 3 3  : 1
+O: 3 4 : 69 : 1 4  : 1
+O: 3 4 : 144 : 2 1  : 1
+O: 3 4 : 65 : 1 4  : 1
+O: 3 4 : 116 : 1 3  : 1
+O: 3 4 : 112 : 1 3  : 1
+O: 3 4 : 104 : 1 2  : 1
+O: 3 4 : 96 : 1 2  : 1
+O: 3 4 : 92 : 1 1  : 1
+O: 3 4 : 88 : 1 1  : 1
+O: 3 4 : 163 : 2 2  : 1
+O: 3 4 : 84 : 1 1  : 1
+O: 3 4 : 80 : 1 1  : 1
+O: 3 4 : 247 : 3 3  : 1
+O: 3 4 : 32 : 0 2  : 1
+O: 3 4 : 199 : 3 4  : 1
+O: 3 4 : 28 : 0 1  : 1
+O: 3 4 : 195 : 3 4  : 1
+O: 3 4 : 24 : 0 1  : 1
+O: 3 4 : 20 : 0 1  : 1
+O: 3 4 : 187 : 2 7  : 1
+O: 3 4 : 16 : 0 1  : 1
+O: 3 4 : 93 : 1 1  : 1
+O: 3 4 : 14 : 0 0  : 1
+O: 3 4 : 12 : 0 0  : 1
+O: 3 4 : 179 : 2 3  : 1
+O: 3 4 : 160 : 2 2  : 1
+O: 3 4 : 81 : 1 1  : 1
+O: 3 4 : 76 : 1 0  : 1
+O: 3 4 : 243 : 3 3  : 1
+O: 3 4 : 113 : 1 3  : 1
+O: 3 4 : 34 : 0 2  : 1
+O: 3 4 : 0 : 0 0  : 1
+O: 3 4 : 162 : 2 2  : 1
+O: 3 4 : 4 : 0 0  : 1
+O: 3 4 : 171 : 2 2  : 1
+O: 3 4 : 40 : 0 2  : 1
+O: 3 4 : 85 : 1 1  : 1
+O: 3 4 : 6 : 0 0  : 1
+O: 3 4 : 121 : 1 7  : 1
+O: 3 4 : 42 : 0 2  : 1
+O: 3 4 : 209 : 3 1  : 1
+O: 3 4 : 8 : 0 0  : 1
+O: 3 4 : 168 : 2 2  : 1
+O: 3 4 : 1 : 4 4  : 1
+O: 3 4 : 89 : 1 1  : 1
+O: 3 4 : 10 : 0 0  : 1
+O: 3 4 : 177 : 2 3  : 1
+O: 3 4 : 48 : 0 3  : 1
+O: 3 4 : 215 : 3 5  : 1
+O: 3 4 : 50 : 0 3  : 1
+O: 3 4 : 52 : 0 3  : 1
+O: 3 4 : 54 : 0 3  : 1
+O: 3 4 : 97 : 1 2  : 1
+O: 3 4 : 18 : 0 5  : 1
+O: 3 4 : 185 : 2 7  : 1
+O: 3 4 : 101 : 1 6  : 1
+O: 3 4 : 22 : 0 5  : 1
+O: 3 4 : 105 : 1 2  : 1
+O: 3 4 : 26 : 0 5  : 1
+O: 3 4 : 193 : 3 4  : 1
+O: 3 4 : 109 : 1 6  : 1
+O: 3 4 : 30 : 0 5  : 1
+O: 3 4 : 197 : 3 4  : 1
+O: 3 4 : 36 : 0 6  : 1
+O: 3 4 : 117 : 1 3  : 1
+O: 3 4 : 38 : 0 6  : 1
+O: 3 4 : 44 : 0 6  : 1
+O: 3 4 : 211 : 3 5  : 1
+O: 3 4 : 125 : 1 7  : 1
+O: 3 4 : 46 : 0 6  : 1
+O: 3 4 : 213 : 3 1  : 1
+O: 3 4 : 56 : 0 7  : 1
+O: 3 4 : 58 : 0 7  : 1
+O: 3 4 : 225 : 3 2  : 1
+O: 3 4 : 60 : 0 7  : 1
+O: 3 4 : 227 : 3 2  : 1
+O: 3 4 : 62 : 0 7  : 1
+O: 3 4 : 229 : 3 6  : 1
+O: 3 4 : 64 : 1 0  : 1
+O: 3 4 : 231 : 3 6  : 1
+O: 3 4 : 68 : 1 0  : 1
+O: 3 4 : 72 : 1 0  : 1
+O: 3 4 : 170 : 2 2  : 1
+O: 3 4 : 3 : 4 4  : 1
+O: 3 4 : 176 : 2 3  : 1
+O: 3 4 : 9 : 4 4  : 1
+O: 3 4 : 178 : 2 3  : 1
+O: 3 4 : 11 : 4 4  : 1
+O: 3 4 : 129 : 2 4  : 1
+O: 3 4 : 131 : 2 4  : 1
+O: 3 4 : 137 : 2 4  : 1
+O: 3 4 : 139 : 2 4  : 1
+O: 3 4 : 146 : 2 5  : 1
+O: 3 4 : 147 : 2 5  : 1
+O: 3 4 : 154 : 2 5  : 1
+O: 3 4 : 155 : 2 5  : 1
+O: 3 4 : 184 : 2 7  : 1
+O: 3 4 : 17 : 4 1  : 1
+O: 3 4 : 186 : 2 7  : 1
+O: 3 4 : 19 : 4 5  : 1
+O: 3 4 : 192 : 3 0  : 1
+O: 3 4 : 25 : 4 1  : 1
+O: 3 4 : 194 : 3 0  : 1
+O: 3 4 : 27 : 4 5  : 1
+O: 3 4 : 196 : 3 0  : 1
+O: 3 4 : 29 : 4 1  : 1
+O: 3 4 : 198 : 3 0  : 1
+O: 3 4 : 31 : 4 5  : 1
+O: 3 4 : 208 : 3 1  : 1
+O: 3 4 : 41 : 4 2  : 1
+O: 3 4 : 212 : 3 1  : 1
+O: 3 4 : 45 : 4 6  : 1
+O: 3 4 : 224 : 3 2  : 1
+O: 3 4 : 57 : 4 7  : 1
+O: 3 4 : 226 : 3 2  : 1
+O: 3 4 : 59 : 4 7  : 1
+O: 3 4 : 241 : 3 3  : 1
+O: 3 4 : 74 : 5 0  : 1
+O: 3 4 : 242 : 3 3  : 1
+O: 3 4 : 245 : 3 3  : 1
+O: 3 4 : 78 : 5 0  : 1
+O: 3 4 : 246 : 3 3  : 1
+O: 3 4 : 210 : 3 5  : 1
+O: 3 4 : 43 : 4 2  : 1
+O: 3 4 : 214 : 3 5  : 1
+O: 3 4 : 47 : 4 6  : 1
+O: 3 4 : 228 : 3 6  : 1
+O: 3 4 : 61 : 4 7  : 1
+O: 3 4 : 230 : 3 6  : 1
+O: 3 4 : 63 : 4 7  : 1
+O: 3 4 : 21 : 4 1  : 1
+O: 3 4 : 33 : 4 2  : 1
+O: 3 4 : 35 : 4 2  : 1
+O: 3 4 : 49 : 4 3  : 1
+O: 3 4 : 51 : 4 3  : 1
+O: 3 4 : 53 : 4 3  : 1
+O: 3 4 : 55 : 4 3  : 1
+O: 3 4 : 5 : 4 4  : 1
+O: 3 4 : 7 : 4 4  : 1
+O: 3 4 : 13 : 4 4  : 1
+O: 3 4 : 15 : 4 4  : 1
+O: 3 4 : 23 : 4 5  : 1
+O: 3 4 : 37 : 4 6  : 1
+O: 3 4 : 39 : 4 6  : 1
+O: 3 4 : 66 : 5 0  : 1
+O: 3 4 : 70 : 5 0  : 1
+O: 3 4 : 98 : 5 2  : 1
+O: 3 4 : 99 : 5 2  : 1
+O: 3 3 : 255 : 7 7  : 1
+O: 3 3 : 254 : 7 7  : 1
+O: 3 3 : 253 : 7 7  : 1
+O: 3 3 : 252 : 7 7  : 1
+O: 3 3 : 251 : 7 7  : 1
+O: 3 3 : 250 : 7 7  : 1
+O: 3 3 : 249 : 7 7  : 1
+O: 3 3 : 248 : 7 7  : 1
+O: 3 3 : 239 : 7 6  : 1
+O: 3 3 : 238 : 7 6  : 1
+O: 3 3 : 237 : 7 6  : 1
+O: 3 3 : 236 : 7 6  : 1
+O: 3 3 : 223 : 7 5  : 1
+O: 3 3 : 222 : 7 5  : 1
+O: 3 3 : 219 : 7 5  : 1
+O: 3 3 : 218 : 7 5  : 1
+O: 3 3 : 207 : 7 4  : 1
+O: 3 3 : 205 : 7 4  : 1
+O: 3 3 : 203 : 7 4  : 1
+O: 3 3 : 201 : 7 4  : 1
+O: 3 3 : 235 : 7 2  : 1
+O: 3 3 : 234 : 7 2  : 1
+O: 3 3 : 233 : 7 2  : 1
+O: 3 3 : 232 : 7 2  : 1
+O: 3 3 : 221 : 7 1  : 1
+O: 3 3 : 220 : 7 1  : 1
+O: 3 3 : 217 : 7 1  : 1
+O: 3 3 : 216 : 7 1  : 1
+O: 3 3 : 206 : 7 0  : 1
+O: 3 3 : 204 : 7 0  : 1
+O: 3 3 : 202 : 7 0  : 1
+O: 3 3 : 200 : 7 0  : 1
+O: 3 3 : 191 : 6 7  : 1
+O: 3 3 : 190 : 6 7  : 1
+O: 3 3 : 189 : 6 7  : 1
+O: 3 3 : 188 : 6 7  : 1
+O: 3 3 : 175 : 6 6  : 1
+O: 3 3 : 174 : 6 6  : 1
+O: 3 3 : 173 : 6 6  : 1
+O: 3 3 : 172 : 6 6  : 1
+O: 3 3 : 167 : 6 6  : 1
+O: 3 3 : 166 : 6 6  : 1
+O: 3 3 : 165 : 6 6  : 1
+O: 3 3 : 164 : 6 6  : 1
+O: 3 3 : 159 : 6 5  : 1
+O: 3 3 : 158 : 6 5  : 1
+O: 3 3 : 151 : 6 5  : 1
+O: 3 3 : 150 : 6 5  : 1
+O: 3 3 : 143 : 6 4  : 1
+O: 3 3 : 141 : 6 4  : 1
+O: 3 3 : 135 : 6 4  : 1
+O: 3 3 : 133 : 6 4  : 1
+O: 3 3 : 183 : 6 3  : 1
+O: 3 3 : 182 : 6 3  : 1
+O: 3 3 : 181 : 6 3  : 1
+O: 3 3 : 180 : 6 3  : 1
+O: 3 3 : 157 : 6 1  : 1
+O: 3 3 : 156 : 6 1  : 1
+O: 3 3 : 149 : 6 1  : 1
+O: 3 3 : 148 : 6 1  : 1
+O: 3 3 : 142 : 6 0  : 1
+O: 3 3 : 140 : 6 0  : 1
+O: 3 3 : 134 : 6 0  : 1
+O: 3 3 : 132 : 6 0  : 1
+O: 3 3 : 127 : 5 7  : 1
+O: 3 3 : 126 : 5 7  : 1
+O: 3 3 : 123 : 5 7  : 1
+O: 3 3 : 122 : 5 7  : 1
+O: 3 3 : 111 : 5 6  : 1
+O: 3 3 : 110 : 5 6  : 1
+O: 3 3 : 103 : 5 6  : 1
+O: 3 3 : 102 : 5 6  : 1
+O: 3 3 : 95 : 5 5  : 1
+O: 3 3 : 94 : 5 5  : 1
+O: 3 3 : 91 : 5 5  : 1
+O: 3 3 : 90 : 5 5  : 1
+O: 3 3 : 87 : 5 5  : 1
+O: 3 3 : 86 : 5 5  : 1
+O: 3 3 : 83 : 5 5  : 1
+O: 3 3 : 82 : 5 5  : 1
+O: 3 3 : 79 : 5 4  : 1
+O: 3 3 : 75 : 5 4  : 1
+O: 3 3 : 71 : 5 4  : 1
+O: 3 3 : 67 : 5 4  : 1
+O: 3 3 : 119 : 5 3  : 1
+O: 3 3 : 118 : 5 3  : 1
+O: 3 3 : 115 : 5 3  : 1
+O: 3 3 : 114 : 5 3  : 1
+O: 3 3 : 107 : 5 2  : 1
+O: 3 3 : 106 : 5 2  : 1
+O: 3 3 : 169 : 2 2  : 1
+O: 3 3 : 2 : 0 0  : 1
+O: 3 3 : 161 : 2 2  : 1
+O: 3 3 : 153 : 2 1  : 1
+O: 3 3 : 145 : 2 1  : 1
+O: 3 3 : 138 : 2 0  : 1
+O: 3 3 : 136 : 2 0  : 1
+O: 3 3 : 130 : 2 0  : 1
+O: 3 3 : 128 : 2 0  : 1
+O: 3 3 : 124 : 1 7  : 1
+O: 3 3 : 120 : 1 7  : 1
+O: 3 3 : 108 : 1 6  : 1
+O: 3 3 : 100 : 1 6  : 1
+O: 3 3 : 77 : 1 4  : 1
+O: 3 3 : 244 : 3 3  : 1
+O: 3 3 : 152 : 2 1  : 1
+O: 3 3 : 73 : 1 4  : 1
+O: 3 3 : 240 : 3 3  : 1
+O: 3 3 : 69 : 1 4  : 1
+O: 3 3 : 144 : 2 1  : 1
+O: 3 3 : 65 : 1 4  : 1
+O: 3 3 : 116 : 1 3  : 1
+O: 3 3 : 112 : 1 3  : 1
+O: 3 3 : 104 : 1 2  : 1
+O: 3 3 : 96 : 1 2  : 1
+O: 3 3 : 92 : 1 1  : 1
+O: 3 3 : 88 : 1 1  : 1
+O: 3 3 : 163 : 2 2  : 1
+O: 3 3 : 84 : 1 1  : 1
+O: 3 3 : 80 : 1 1  : 1
+O: 3 3 : 247 : 3 3  : 1
+O: 3 3 : 32 : 0 2  : 1
+O: 3 3 : 199 : 3 4  : 1
+O: 3 3 : 28 : 0 1  : 1
+O: 3 3 : 195 : 3 4  : 1
+O: 3 3 : 24 : 0 1  : 1
+O: 3 3 : 20 : 0 1  : 1
+O: 3 3 : 187 : 2 7  : 1
+O: 3 3 : 16 : 0 1  : 1
+O: 3 3 : 93 : 1 1  : 1
+O: 3 3 : 14 : 0 0  : 1
+O: 3 3 : 12 : 0 0  : 1
+O: 3 3 : 179 : 2 3  : 1
+O: 3 3 : 160 : 2 2  : 1
+O: 3 3 : 81 : 1 1  : 1
+O: 3 3 : 76 : 1 0  : 1
+O: 3 3 : 243 : 3 3  : 1
+O: 3 3 : 113 : 1 3  : 1
+O: 3 3 : 34 : 0 2  : 1
+O: 3 3 : 0 : 0 0  : 1
+O: 3 3 : 162 : 2 2  : 1
+O: 3 3 : 4 : 0 0  : 1
+O: 3 3 : 171 : 2 2  : 1
+O: 3 3 : 40 : 0 2  : 1
+O: 3 3 : 85 : 1 1  : 1
+O: 3 3 : 6 : 0 0  : 1
+O: 3 3 : 121 : 1 7  : 1
+O: 3 3 : 42 : 0 2  : 1
+O: 3 3 : 209 : 3 1  : 1
+O: 3 3 : 8 : 0 0  : 1
+O: 3 3 : 168 : 2 2  : 1
+O: 3 3 : 1 : 4 4  : 1
+O: 3 3 : 89 : 1 1  : 1
+O: 3 3 : 10 : 0 0  : 1
+O: 3 3 : 177 : 2 3  : 1
+O: 3 3 : 48 : 0 3  : 1
+O: 3 3 : 215 : 3 5  : 1
+O: 3 3 : 50 : 0 3  : 1
+O: 3 3 : 52 : 0 3  : 1
+O: 3 3 : 54 : 0 3  : 1
+O: 3 3 : 97 : 1 2  : 1
+O: 3 3 : 18 : 0 5  : 1
+O: 3 3 : 185 : 2 7  : 1
+O: 3 3 : 101 : 1 6  : 1
+O: 3 3 : 22 : 0 5  : 1
+O: 3 3 : 105 : 1 2  : 1
+O: 3 3 : 26 : 0 5  : 1
+O: 3 3 : 193 : 3 4  : 1
+O: 3 3 : 109 : 1 6  : 1
+O: 3 3 : 30 : 0 5  : 1
+O: 3 3 : 197 : 3 4  : 1
+O: 3 3 : 36 : 0 6  : 1
+O: 3 3 : 117 : 1 3  : 1
+O: 3 3 : 38 : 0 6  : 1
+O: 3 3 : 44 : 0 6  : 1
+O: 3 3 : 211 : 3 5  : 1
+O: 3 3 : 125 : 1 7  : 1
+O: 3 3 : 46 : 0 6  : 1
+O: 3 3 : 213 : 3 1  : 1
+O: 3 3 : 56 : 0 7  : 1
+O: 3 3 : 58 : 0 7  : 1
+O: 3 3 : 225 : 3 2  : 1
+O: 3 3 : 60 : 0 7  : 1
+O: 3 3 : 227 : 3 2  : 1
+O: 3 3 : 62 : 0 7  : 1
+O: 3 3 : 229 : 3 6  : 1
+O: 3 3 : 64 : 1 0  : 1
+O: 3 3 : 231 : 3 6  : 1
+O: 3 3 : 68 : 1 0  : 1
+O: 3 3 : 72 : 1 0  : 1
+O: 3 3 : 170 : 2 2  : 1
+O: 3 3 : 3 : 4 4  : 1
+O: 3 3 : 176 : 2 3  : 1
+O: 3 3 : 9 : 4 4  : 1
+O: 3 3 : 178 : 2 3  : 1
+O: 3 3 : 11 : 4 4  : 1
+O: 3 3 : 129 : 2 4  : 1
+O: 3 3 : 131 : 2 4  : 1
+O: 3 3 : 137 : 2 4  : 1
+O: 3 3 : 139 : 2 4  : 1
+O: 3 3 : 146 : 2 5  : 1
+O: 3 3 : 147 : 2 5  : 1
+O: 3 3 : 154 : 2 5  : 1
+O: 3 3 : 155 : 2 5  : 1
+O: 3 3 : 184 : 2 7  : 1
+O: 3 3 : 17 : 4 1  : 1
+O: 3 3 : 186 : 2 7  : 1
+O: 3 3 : 19 : 4 5  : 1
+O: 3 3 : 192 : 3 0  : 1
+O: 3 3 : 25 : 4 1  : 1
+O: 3 3 : 194 : 3 0  : 1
+O: 3 3 : 27 : 4 5  : 1
+O: 3 3 : 196 : 3 0  : 1
+O: 3 3 : 29 : 4 1  : 1
+O: 3 3 : 198 : 3 0  : 1
+O: 3 3 : 31 : 4 5  : 1
+O: 3 3 : 208 : 3 1  : 1
+O: 3 3 : 41 : 4 2  : 1
+O: 3 3 : 212 : 3 1  : 1
+O: 3 3 : 45 : 4 6  : 1
+O: 3 3 : 224 : 3 2  : 1
+O: 3 3 : 57 : 4 7  : 1
+O: 3 3 : 226 : 3 2  : 1
+O: 3 3 : 59 : 4 7  : 1
+O: 3 3 : 241 : 3 3  : 1
+O: 3 3 : 74 : 5 0  : 1
+O: 3 3 : 242 : 3 3  : 1
+O: 3 3 : 245 : 3 3  : 1
+O: 3 3 : 78 : 5 0  : 1
+O: 3 3 : 246 : 3 3  : 1
+O: 3 3 : 210 : 3 5  : 1
+O: 3 3 : 43 : 4 2  : 1
+O: 3 3 : 214 : 3 5  : 1
+O: 3 3 : 47 : 4 6  : 1
+O: 3 3 : 228 : 3 6  : 1
+O: 3 3 : 61 : 4 7  : 1
+O: 3 3 : 230 : 3 6  : 1
+O: 3 3 : 63 : 4 7  : 1
+O: 3 3 : 21 : 4 1  : 1
+O: 3 3 : 33 : 4 2  : 1
+O: 3 3 : 35 : 4 2  : 1
+O: 3 3 : 49 : 4 3  : 1
+O: 3 3 : 51 : 4 3  : 1
+O: 3 3 : 53 : 4 3  : 1
+O: 3 3 : 55 : 4 3  : 1
+O: 3 3 : 5 : 4 4  : 1
+O: 3 3 : 7 : 4 4  : 1
+O: 3 3 : 13 : 4 4  : 1
+O: 3 3 : 15 : 4 4  : 1
+O: 3 3 : 23 : 4 5  : 1
+O: 3 3 : 37 : 4 6  : 1
+O: 3 3 : 39 : 4 6  : 1
+O: 3 3 : 66 : 5 0  : 1
+O: 3 3 : 70 : 5 0  : 1
+O: 3 3 : 98 : 5 2  : 1
+O: 3 3 : 99 : 5 2  : 1
+O: 3 2 : 255 : 7 7  : 1
+O: 3 2 : 254 : 7 7  : 1
+O: 3 2 : 253 : 7 7  : 1
+O: 3 2 : 252 : 7 7  : 1
+O: 3 2 : 251 : 7 7  : 1
+O: 3 2 : 250 : 7 7  : 1
+O: 3 2 : 249 : 7 7  : 1
+O: 3 2 : 248 : 7 7  : 1
+O: 3 2 : 239 : 7 6  : 1
+O: 3 2 : 238 : 7 6  : 1
+O: 3 2 : 237 : 7 6  : 1
+O: 3 2 : 236 : 7 6  : 1
+O: 3 2 : 223 : 7 5  : 1
+O: 3 2 : 222 : 7 5  : 1
+O: 3 2 : 219 : 7 5  : 1
+O: 3 2 : 218 : 7 5  : 1
+O: 3 2 : 207 : 7 4  : 1
+O: 3 2 : 205 : 7 4  : 1
+O: 3 2 : 203 : 7 4  : 1
+O: 3 2 : 201 : 7 4  : 1
+O: 3 2 : 235 : 7 2  : 1
+O: 3 2 : 234 : 7 2  : 1
+O: 3 2 : 233 : 7 2  : 1
+O: 3 2 : 232 : 7 2  : 1
+O: 3 2 : 221 : 7 1  : 1
+O: 3 2 : 220 : 7 1  : 1
+O: 3 2 : 217 : 7 1  : 1
+O: 3 2 : 216 : 7 1  : 1
+O: 3 2 : 206 : 7 0  : 1
+O: 3 2 : 204 : 7 0  : 1
+O: 3 2 : 202 : 7 0  : 1
+O: 3 2 : 200 : 7 0  : 1
+O: 3 2 : 191 : 6 7  : 1
+O: 3 2 : 190 : 6 7  : 1
+O: 3 2 : 189 : 6 7  : 1
+O: 3 2 : 188 : 6 7  : 1
+O: 3 2 : 175 : 6 6  : 1
+O: 3 2 : 174 : 6 6  : 1
+O: 3 2 : 173 : 6 6  : 1
+O: 3 2 : 172 : 6 6  : 1
+O: 3 2 : 167 : 6 6  : 1
+O: 3 2 : 166 : 6 6  : 1
+O: 3 2 : 165 : 6 6  : 1
+O: 3 2 : 164 : 6 6  : 1
+O: 3 2 : 159 : 6 5  : 1
+O: 3 2 : 158 : 6 5  : 1
+O: 3 2 : 151 : 6 5  : 1
+O: 3 2 : 150 : 6 5  : 1
+O: 3 2 : 143 : 6 4  : 1
+O: 3 2 : 141 : 6 4  : 1
+O: 3 2 : 135 : 6 4  : 1
+O: 3 2 : 133 : 6 4  : 1
+O: 3 2 : 183 : 6 3  : 1
+O: 3 2 : 182 : 6 3  : 1
+O: 3 2 : 181 : 6 3  : 1
+O: 3 2 : 180 : 6 3  : 1
+O: 3 2 : 157 : 6 1  : 1
+O: 3 2 : 156 : 6 1  : 1
+O: 3 2 : 149 : 6 1  : 1
+O: 3 2 : 148 : 6 1  : 1
+O: 3 2 : 142 : 6 0  : 1
+O: 3 2 : 140 : 6 0  : 1
+O: 3 2 : 134 : 6 0  : 1
+O: 3 2 : 132 : 6 0  : 1
+O: 3 2 : 127 : 5 7  : 1
+O: 3 2 : 126 : 5 7  : 1
+O: 3 2 : 123 : 5 7  : 1
+O: 3 2 : 122 : 5 7  : 1
+O: 3 2 : 111 : 5 6  : 1
+O: 3 2 : 110 : 5 6  : 1
+O: 3 2 : 103 : 5 6  : 1
+O: 3 2 : 102 : 5 6  : 1
+O: 3 2 : 95 : 5 5  : 1
+O: 3 2 : 94 : 5 5  : 1
+O: 3 2 : 91 : 5 5  : 1
+O: 3 2 : 90 : 5 5  : 1
+O: 3 2 : 87 : 5 5  : 1
+O: 3 2 : 86 : 5 5  : 1
+O: 3 2 : 83 : 5 5  : 1
+O: 3 2 : 82 : 5 5  : 1
+O: 3 2 : 79 : 5 4  : 1
+O: 3 2 : 75 : 5 4  : 1
+O: 3 2 : 71 : 5 4  : 1
+O: 3 2 : 67 : 5 4  : 1
+O: 3 2 : 119 : 5 3  : 1
+O: 3 2 : 118 : 5 3  : 1
+O: 3 2 : 115 : 5 3  : 1
+O: 3 2 : 114 : 5 3  : 1
+O: 3 2 : 107 : 5 2  : 1
+O: 3 2 : 106 : 5 2  : 1
+O: 3 2 : 169 : 2 2  : 1
+O: 3 2 : 2 : 0 0  : 1
+O: 3 2 : 161 : 2 2  : 1
+O: 3 2 : 153 : 2 1  : 1
+O: 3 2 : 145 : 2 1  : 1
+O: 3 2 : 138 : 2 0  : 1
+O: 3 2 : 136 : 2 0  : 1
+O: 3 2 : 130 : 2 0  : 1
+O: 3 2 : 128 : 2 0  : 1
+O: 3 2 : 124 : 1 7  : 1
+O: 3 2 : 120 : 1 7  : 1
+O: 3 2 : 108 : 1 6  : 1
+O: 3 2 : 100 : 1 6  : 1
+O: 3 2 : 77 : 1 4  : 1
+O: 3 2 : 244 : 3 3  : 1
+O: 3 2 : 152 : 2 1  : 1
+O: 3 2 : 73 : 1 4  : 1
+O: 3 2 : 240 : 3 3  : 1
+O: 3 2 : 69 : 1 4  : 1
+O: 3 2 : 144 : 2 1  : 1
+O: 3 2 : 65 : 1 4  : 1
+O: 3 2 : 116 : 1 3  : 1
+O: 3 2 : 112 : 1 3  : 1
+O: 3 2 : 104 : 1 2  : 1
+O: 3 2 : 96 : 1 2  : 1
+O: 3 2 : 92 : 1 1  : 1
+O: 3 2 : 88 : 1 1  : 1
+O: 3 2 : 163 : 2 2  : 1
+O: 3 2 : 84 : 1 1  : 1
+O: 3 2 : 80 : 1 1  : 1
+O: 3 2 : 247 : 3 3  : 1
+O: 3 2 : 32 : 0 2  : 1
+O: 3 2 : 199 : 3 4  : 1
+O: 3 2 : 28 : 0 1  : 1
+O: 3 2 : 195 : 3 4  : 1
+O: 3 2 : 24 : 0 1  : 1
+O: 3 2 : 20 : 0 1  : 1
+O: 3 2 : 187 : 2 7  : 1
+O: 3 2 : 16 : 0 1  : 1
+O: 3 2 : 93 : 1 1  : 1
+O: 3 2 : 14 : 0 0  : 1
+O: 3 2 : 12 : 0 0  : 1
+O: 3 2 : 179 : 2 3  : 1
+O: 3 2 : 160 : 2 2  : 1
+O: 3 2 : 81 : 1 1  : 1
+O: 3 2 : 76 : 1 0  : 1
+O: 3 2 : 243 : 3 3  : 1
+O: 3 2 : 113 : 1 3  : 1
+O: 3 2 : 34 : 0 2  : 1
+O: 3 2 : 0 : 0 0  : 1
+O: 3 2 : 162 : 2 2  : 1
+O: 3 2 : 4 : 0 0  : 1
+O: 3 2 : 171 : 2 2  : 1
+O: 3 2 : 40 : 0 2  : 1
+O: 3 2 : 85 : 1 1  : 1
+O: 3 2 : 6 : 0 0  : 1
+O: 3 2 : 121 : 1 7  : 1
+O: 3 2 : 42 : 0 2  : 1
+O: 3 2 : 209 : 3 1  : 1
+O: 3 2 : 8 : 0 0  : 1
+O: 3 2 : 168 : 2 2  : 1
+O: 3 2 : 1 : 4 4  : 1
+O: 3 2 : 89 : 1 1  : 1
+O: 3 2 : 10 : 0 0  : 1
+O: 3 2 : 177 : 2 3  : 1
+O: 3 2 : 48 : 0 3  : 1
+O: 3 2 : 215 : 3 5  : 1
+O: 3 2 : 50 : 0 3  : 1
+O: 3 2 : 52 : 0 3  : 1
+O: 3 2 : 54 : 0 3  : 1
+O: 3 2 : 97 : 1 2  : 1
+O: 3 2 : 18 : 0 5  : 1
+O: 3 2 : 185 : 2 7  : 1
+O: 3 2 : 101 : 1 6  : 1
+O: 3 2 : 22 : 0 5  : 1
+O: 3 2 : 105 : 1 2  : 1
+O: 3 2 : 26 : 0 5  : 1
+O: 3 2 : 193 : 3 4  : 1
+O: 3 2 : 109 : 1 6  : 1
+O: 3 2 : 30 : 0 5  : 1
+O: 3 2 : 197 : 3 4  : 1
+O: 3 2 : 36 : 0 6  : 1
+O: 3 2 : 117 : 1 3  : 1
+O: 3 2 : 38 : 0 6  : 1
+O: 3 2 : 44 : 0 6  : 1
+O: 3 2 : 211 : 3 5  : 1
+O: 3 2 : 125 : 1 7  : 1
+O: 3 2 : 46 : 0 6  : 1
+O: 3 2 : 213 : 3 1  : 1
+O: 3 2 : 56 : 0 7  : 1
+O: 3 2 : 58 : 0 7  : 1
+O: 3 2 : 225 : 3 2  : 1
+O: 3 2 : 60 : 0 7  : 1
+O: 3 2 : 227 : 3 2  : 1
+O: 3 2 : 62 : 0 7  : 1
+O: 3 2 : 229 : 3 6  : 1
+O: 3 2 : 64 : 1 0  : 1
+O: 3 2 : 231 : 3 6  : 1
+O: 3 2 : 68 : 1 0  : 1
+O: 3 2 : 72 : 1 0  : 1
+O: 3 2 : 170 : 2 2  : 1
+O: 3 2 : 3 : 4 4  : 1
+O: 3 2 : 176 : 2 3  : 1
+O: 3 2 : 9 : 4 4  : 1
+O: 3 2 : 178 : 2 3  : 1
+O: 3 2 : 11 : 4 4  : 1
+O: 3 2 : 129 : 2 4  : 1
+O: 3 2 : 131 : 2 4  : 1
+O: 3 2 : 137 : 2 4  : 1
+O: 3 2 : 139 : 2 4  : 1
+O: 3 2 : 146 : 2 5  : 1
+O: 3 2 : 147 : 2 5  : 1
+O: 3 2 : 154 : 2 5  : 1
+O: 3 2 : 155 : 2 5  : 1
+O: 3 2 : 184 : 2 7  : 1
+O: 3 2 : 17 : 4 1  : 1
+O: 3 2 : 186 : 2 7  : 1
+O: 3 2 : 19 : 4 5  : 1
+O: 3 2 : 192 : 3 0  : 1
+O: 3 2 : 25 : 4 1  : 1
+O: 3 2 : 194 : 3 0  : 1
+O: 3 2 : 27 : 4 5  : 1
+O: 3 2 : 196 : 3 0  : 1
+O: 3 2 : 29 : 4 1  : 1
+O: 3 2 : 198 : 3 0  : 1
+O: 3 2 : 31 : 4 5  : 1
+O: 3 2 : 208 : 3 1  : 1
+O: 3 2 : 41 : 4 2  : 1
+O: 3 2 : 212 : 3 1  : 1
+O: 3 2 : 45 : 4 6  : 1
+O: 3 2 : 224 : 3 2  : 1
+O: 3 2 : 57 : 4 7  : 1
+O: 3 2 : 226 : 3 2  : 1
+O: 3 2 : 59 : 4 7  : 1
+O: 3 2 : 241 : 3 3  : 1
+O: 3 2 : 74 : 5 0  : 1
+O: 3 2 : 242 : 3 3  : 1
+O: 3 2 : 245 : 3 3  : 1
+O: 3 2 : 78 : 5 0  : 1
+O: 3 2 : 246 : 3 3  : 1
+O: 3 2 : 210 : 3 5  : 1
+O: 3 2 : 43 : 4 2  : 1
+O: 3 2 : 214 : 3 5  : 1
+O: 3 2 : 47 : 4 6  : 1
+O: 3 2 : 228 : 3 6  : 1
+O: 3 2 : 61 : 4 7  : 1
+O: 3 2 : 230 : 3 6  : 1
+O: 3 2 : 63 : 4 7  : 1
+O: 3 2 : 21 : 4 1  : 1
+O: 3 2 : 33 : 4 2  : 1
+O: 3 2 : 35 : 4 2  : 1
+O: 3 2 : 49 : 4 3  : 1
+O: 3 2 : 51 : 4 3  : 1
+O: 3 2 : 53 : 4 3  : 1
+O: 3 2 : 55 : 4 3  : 1
+O: 3 2 : 5 : 4 4  : 1
+O: 3 2 : 7 : 4 4  : 1
+O: 3 2 : 13 : 4 4  : 1
+O: 3 2 : 15 : 4 4  : 1
+O: 3 2 : 23 : 4 5  : 1
+O: 3 2 : 37 : 4 6  : 1
+O: 3 2 : 39 : 4 6  : 1
+O: 3 2 : 66 : 5 0  : 1
+O: 3 2 : 70 : 5 0  : 1
+O: 3 2 : 98 : 5 2  : 1
+O: 3 2 : 99 : 5 2  : 1
+O: 3 1 : 255 : 7 7  : 1
+O: 3 1 : 254 : 7 7  : 1
+O: 3 1 : 253 : 7 7  : 1
+O: 3 1 : 252 : 7 7  : 1
+O: 3 1 : 251 : 7 7  : 1
+O: 3 1 : 250 : 7 7  : 1
+O: 3 1 : 249 : 7 7  : 1
+O: 3 1 : 248 : 7 7  : 1
+O: 3 1 : 239 : 7 6  : 1
+O: 3 1 : 238 : 7 6  : 1
+O: 3 1 : 237 : 7 6  : 1
+O: 3 1 : 236 : 7 6  : 1
+O: 3 1 : 223 : 7 5  : 1
+O: 3 1 : 222 : 7 5  : 1
+O: 3 1 : 219 : 7 5  : 1
+O: 3 1 : 218 : 7 5  : 1
+O: 3 1 : 207 : 7 4  : 1
+O: 3 1 : 205 : 7 4  : 1
+O: 3 1 : 203 : 7 4  : 1
+O: 3 1 : 201 : 7 4  : 1
+O: 3 1 : 235 : 7 2  : 1
+O: 3 1 : 234 : 7 2  : 1
+O: 3 1 : 233 : 7 2  : 1
+O: 3 1 : 232 : 7 2  : 1
+O: 3 1 : 221 : 7 1  : 1
+O: 3 1 : 220 : 7 1  : 1
+O: 3 1 : 217 : 7 1  : 1
+O: 3 1 : 216 : 7 1  : 1
+O: 3 1 : 206 : 7 0  : 1
+O: 3 1 : 204 : 7 0  : 1
+O: 3 1 : 202 : 7 0  : 1
+O: 3 1 : 200 : 7 0  : 1
+O: 3 1 : 191 : 6 7  : 1
+O: 3 1 : 190 : 6 7  : 1
+O: 3 1 : 189 : 6 7  : 1
+O: 3 1 : 188 : 6 7  : 1
+O: 3 1 : 175 : 6 6  : 1
+O: 3 1 : 174 : 6 6  : 1
+O: 3 1 : 173 : 6 6  : 1
+O: 3 1 : 172 : 6 6  : 1
+O: 3 1 : 167 : 6 6  : 1
+O: 3 1 : 166 : 6 6  : 1
+O: 3 1 : 165 : 6 6  : 1
+O: 3 1 : 164 : 6 6  : 1
+O: 3 1 : 159 : 6 5  : 1
+O: 3 1 : 158 : 6 5  : 1
+O: 3 1 : 151 : 6 5  : 1
+O: 3 1 : 150 : 6 5  : 1
+O: 3 1 : 143 : 6 4  : 1
+O: 3 1 : 141 : 6 4  : 1
+O: 3 1 : 135 : 6 4  : 1
+O: 3 1 : 133 : 6 4  : 1
+O: 3 1 : 183 : 6 3  : 1
+O: 3 1 : 182 : 6 3  : 1
+O: 3 1 : 181 : 6 3  : 1
+O: 3 1 : 180 : 6 3  : 1
+O: 3 1 : 157 : 6 1  : 1
+O: 3 1 : 156 : 6 1  : 1
+O: 3 1 : 149 : 6 1  : 1
+O: 3 1 : 148 : 6 1  : 1
+O: 3 1 : 142 : 6 0  : 1
+O: 3 1 : 140 : 6 0  : 1
+O: 3 1 : 134 : 6 0  : 1
+O: 3 1 : 132 : 6 0  : 1
+O: 3 1 : 127 : 5 7  : 1
+O: 3 1 : 126 : 5 7  : 1
+O: 3 1 : 123 : 5 7  : 1
+O: 3 1 : 122 : 5 7  : 1
+O: 3 1 : 111 : 5 6  : 1
+O: 3 1 : 110 : 5 6  : 1
+O: 3 1 : 103 : 5 6  : 1
+O: 3 1 : 102 : 5 6  : 1
+O: 3 1 : 95 : 5 5  : 1
+O: 3 1 : 94 : 5 5  : 1
+O: 3 1 : 91 : 5 5  : 1
+O: 3 1 : 90 : 5 5  : 1
+O: 3 1 : 87 : 5 5  : 1
+O: 3 1 : 86 : 5 5  : 1
+O: 3 1 : 83 : 5 5  : 1
+O: 3 1 : 82 : 5 5  : 1
+O: 3 1 : 79 : 5 4  : 1
+O: 3 1 : 75 : 5 4  : 1
+O: 3 1 : 71 : 5 4  : 1
+O: 3 1 : 67 : 5 4  : 1
+O: 3 1 : 119 : 5 3  : 1
+O: 3 1 : 118 : 5 3  : 1
+O: 3 1 : 115 : 5 3  : 1
+O: 3 1 : 114 : 5 3  : 1
+O: 3 1 : 107 : 5 2  : 1
+O: 3 1 : 106 : 5 2  : 1
+O: 3 1 : 169 : 2 2  : 1
+O: 3 1 : 2 : 0 0  : 1
+O: 3 1 : 161 : 2 2  : 1
+O: 3 1 : 153 : 2 1  : 1
+O: 3 1 : 145 : 2 1  : 1
+O: 3 1 : 138 : 2 0  : 1
+O: 3 1 : 136 : 2 0  : 1
+O: 3 1 : 130 : 2 0  : 1
+O: 3 1 : 128 : 2 0  : 1
+O: 3 1 : 124 : 1 7  : 1
+O: 3 1 : 120 : 1 7  : 1
+O: 3 1 : 108 : 1 6  : 1
+O: 3 1 : 100 : 1 6  : 1
+O: 3 1 : 77 : 1 4  : 1
+O: 3 1 : 244 : 3 3  : 1
+O: 3 1 : 152 : 2 1  : 1
+O: 3 1 : 73 : 1 4  : 1
+O: 3 1 : 240 : 3 3  : 1
+O: 3 1 : 69 : 1 4  : 1
+O: 3 1 : 144 : 2 1  : 1
+O: 3 1 : 65 : 1 4  : 1
+O: 3 1 : 116 : 1 3  : 1
+O: 3 1 : 112 : 1 3  : 1
+O: 3 1 : 104 : 1 2  : 1
+O: 3 1 : 96 : 1 2  : 1
+O: 3 1 : 92 : 1 1  : 1
+O: 3 1 : 88 : 1 1  : 1
+O: 3 1 : 163 : 2 2  : 1
+O: 3 1 : 84 : 1 1  : 1
+O: 3 1 : 80 : 1 1  : 1
+O: 3 1 : 247 : 3 3  : 1
+O: 3 1 : 32 : 0 2  : 1
+O: 3 1 : 199 : 3 4  : 1
+O: 3 1 : 28 : 0 1  : 1
+O: 3 1 : 195 : 3 4  : 1
+O: 3 1 : 24 : 0 1  : 1
+O: 3 1 : 20 : 0 1  : 1
+O: 3 1 : 187 : 2 7  : 1
+O: 3 1 : 16 : 0 1  : 1
+O: 3 1 : 93 : 1 1  : 1
+O: 3 1 : 14 : 0 0  : 1
+O: 3 1 : 12 : 0 0  : 1
+O: 3 1 : 179 : 2 3  : 1
+O: 3 1 : 160 : 2 2  : 1
+O: 3 1 : 81 : 1 1  : 1
+O: 3 1 : 76 : 1 0  : 1
+O: 3 1 : 243 : 3 3  : 1
+O: 3 1 : 113 : 1 3  : 1
+O: 3 1 : 34 : 0 2  : 1
+O: 3 1 : 0 : 0 0  : 1
+O: 3 1 : 162 : 2 2  : 1
+O: 3 1 : 4 : 0 0  : 1
+O: 3 1 : 171 : 2 2  : 1
+O: 3 1 : 40 : 0 2  : 1
+O: 3 1 : 85 : 1 1  : 1
+O: 3 1 : 6 : 0 0  : 1
+O: 3 1 : 121 : 1 7  : 1
+O: 3 1 : 42 : 0 2  : 1
+O: 3 1 : 209 : 3 1  : 1
+O: 3 1 : 8 : 0 0  : 1
+O: 3 1 : 168 : 2 2  : 1
+O: 3 1 : 1 : 4 4  : 1
+O: 3 1 : 89 : 1 1  : 1
+O: 3 1 : 10 : 0 0  : 1
+O: 3 1 : 177 : 2 3  : 1
+O: 3 1 : 48 : 0 3  : 1
+O: 3 1 : 215 : 3 5  : 1
+O: 3 1 : 50 : 0 3  : 1
+O: 3 1 : 52 : 0 3  : 1
+O: 3 1 : 54 : 0 3  : 1
+O: 3 1 : 97 : 1 2  : 1
+O: 3 1 : 18 : 0 5  : 1
+O: 3 1 : 185 : 2 7  : 1
+O: 3 1 : 101 : 1 6  : 1
+O: 3 1 : 22 : 0 5  : 1
+O: 3 1 : 105 : 1 2  : 1
+O: 3 1 : 26 : 0 5  : 1
+O: 3 1 : 193 : 3 4  : 1
+O: 3 1 : 109 : 1 6  : 1
+O: 3 1 : 30 : 0 5  : 1
+O: 3 1 : 197 : 3 4  : 1
+O: 3 1 : 36 : 0 6  : 1
+O: 3 1 : 117 : 1 3  : 1
+O: 3 1 : 38 : 0 6  : 1
+O: 3 1 : 44 : 0 6  : 1
+O: 3 1 : 211 : 3 5  : 1
+O: 3 1 : 125 : 1 7  : 1
+O: 3 1 : 46 : 0 6  : 1
+O: 3 1 : 213 : 3 1  : 1
+O: 3 1 : 56 : 0 7  : 1
+O: 3 1 : 58 : 0 7  : 1
+O: 3 1 : 225 : 3 2  : 1
+O: 3 1 : 60 : 0 7  : 1
+O: 3 1 : 227 : 3 2  : 1
+O: 3 1 : 62 : 0 7  : 1
+O: 3 1 : 229 : 3 6  : 1
+O: 3 1 : 64 : 1 0  : 1
+O: 3 1 : 231 : 3 6  : 1
+O: 3 1 : 68 : 1 0  : 1
+O: 3 1 : 72 : 1 0  : 1
+O: 3 1 : 170 : 2 2  : 1
+O: 3 1 : 3 : 4 4  : 1
+O: 3 1 : 176 : 2 3  : 1
+O: 3 1 : 9 : 4 4  : 1
+O: 3 1 : 178 : 2 3  : 1
+O: 3 1 : 11 : 4 4  : 1
+O: 3 1 : 129 : 2 4  : 1
+O: 3 1 : 131 : 2 4  : 1
+O: 3 1 : 137 : 2 4  : 1
+O: 3 1 : 139 : 2 4  : 1
+O: 3 1 : 146 : 2 5  : 1
+O: 3 1 : 147 : 2 5  : 1
+O: 3 1 : 154 : 2 5  : 1
+O: 3 1 : 155 : 2 5  : 1
+O: 3 1 : 184 : 2 7  : 1
+O: 3 1 : 17 : 4 1  : 1
+O: 3 1 : 186 : 2 7  : 1
+O: 3 1 : 19 : 4 5  : 1
+O: 3 1 : 192 : 3 0  : 1
+O: 3 1 : 25 : 4 1  : 1
+O: 3 1 : 194 : 3 0  : 1
+O: 3 1 : 27 : 4 5  : 1
+O: 3 1 : 196 : 3 0  : 1
+O: 3 1 : 29 : 4 1  : 1
+O: 3 1 : 198 : 3 0  : 1
+O: 3 1 : 31 : 4 5  : 1
+O: 3 1 : 208 : 3 1  : 1
+O: 3 1 : 41 : 4 2  : 1
+O: 3 1 : 212 : 3 1  : 1
+O: 3 1 : 45 : 4 6  : 1
+O: 3 1 : 224 : 3 2  : 1
+O: 3 1 : 57 : 4 7  : 1
+O: 3 1 : 226 : 3 2  : 1
+O: 3 1 : 59 : 4 7  : 1
+O: 3 1 : 241 : 3 3  : 1
+O: 3 1 : 74 : 5 0  : 1
+O: 3 1 : 242 : 3 3  : 1
+O: 3 1 : 245 : 3 3  : 1
+O: 3 1 : 78 : 5 0  : 1
+O: 3 1 : 246 : 3 3  : 1
+O: 3 1 : 210 : 3 5  : 1
+O: 3 1 : 43 : 4 2  : 1
+O: 3 1 : 214 : 3 5  : 1
+O: 3 1 : 47 : 4 6  : 1
+O: 3 1 : 228 : 3 6  : 1
+O: 3 1 : 61 : 4 7  : 1
+O: 3 1 : 230 : 3 6  : 1
+O: 3 1 : 63 : 4 7  : 1
+O: 3 1 : 21 : 4 1  : 1
+O: 3 1 : 33 : 4 2  : 1
+O: 3 1 : 35 : 4 2  : 1
+O: 3 1 : 49 : 4 3  : 1
+O: 3 1 : 51 : 4 3  : 1
+O: 3 1 : 53 : 4 3  : 1
+O: 3 1 : 55 : 4 3  : 1
+O: 3 1 : 5 : 4 4  : 1
+O: 3 1 : 7 : 4 4  : 1
+O: 3 1 : 13 : 4 4  : 1
+O: 3 1 : 15 : 4 4  : 1
+O: 3 1 : 23 : 4 5  : 1
+O: 3 1 : 37 : 4 6  : 1
+O: 3 1 : 39 : 4 6  : 1
+O: 3 1 : 66 : 5 0  : 1
+O: 3 1 : 70 : 5 0  : 1
+O: 3 1 : 98 : 5 2  : 1
+O: 3 1 : 99 : 5 2  : 1
+O: 3 0 : 255 : 7 7  : 1
+O: 3 0 : 254 : 7 7  : 1
+O: 3 0 : 253 : 7 7  : 1
+O: 3 0 : 252 : 7 7  : 1
+O: 3 0 : 251 : 7 7  : 1
+O: 3 0 : 250 : 7 7  : 1
+O: 3 0 : 249 : 7 7  : 1
+O: 3 0 : 248 : 7 7  : 1
+O: 3 0 : 239 : 7 6  : 1
+O: 3 0 : 238 : 7 6  : 1
+O: 3 0 : 237 : 7 6  : 1
+O: 3 0 : 236 : 7 6  : 1
+O: 3 0 : 223 : 7 5  : 1
+O: 3 0 : 222 : 7 5  : 1
+O: 3 0 : 219 : 7 5  : 1
+O: 3 0 : 218 : 7 5  : 1
+O: 3 0 : 207 : 7 4  : 1
+O: 3 0 : 205 : 7 4  : 1
+O: 3 0 : 203 : 7 4  : 1
+O: 3 0 : 201 : 7 4  : 1
+O: 3 0 : 235 : 7 2  : 1
+O: 3 0 : 234 : 7 2  : 1
+O: 3 0 : 233 : 7 2  : 1
+O: 3 0 : 232 : 7 2  : 1
+O: 3 0 : 221 : 7 1  : 1
+O: 3 0 : 220 : 7 1  : 1
+O: 3 0 : 217 : 7 1  : 1
+O: 3 0 : 216 : 7 1  : 1
+O: 3 0 : 206 : 7 0  : 1
+O: 3 0 : 204 : 7 0  : 1
+O: 3 0 : 202 : 7 0  : 1
+O: 3 0 : 200 : 7 0  : 1
+O: 3 0 : 191 : 6 7  : 1
+O: 3 0 : 190 : 6 7  : 1
+O: 3 0 : 189 : 6 7  : 1
+O: 3 0 : 188 : 6 7  : 1
+O: 3 0 : 175 : 6 6  : 1
+O: 3 0 : 174 : 6 6  : 1
+O: 3 0 : 173 : 6 6  : 1
+O: 3 0 : 172 : 6 6  : 1
+O: 3 0 : 167 : 6 6  : 1
+O: 3 0 : 166 : 6 6  : 1
+O: 3 0 : 165 : 6 6  : 1
+O: 3 0 : 164 : 6 6  : 1
+O: 3 0 : 159 : 6 5  : 1
+O: 3 0 : 158 : 6 5  : 1
+O: 3 0 : 151 : 6 5  : 1
+O: 3 0 : 150 : 6 5  : 1
+O: 3 0 : 143 : 6 4  : 1
+O: 3 0 : 141 : 6 4  : 1
+O: 3 0 : 135 : 6 4  : 1
+O: 3 0 : 133 : 6 4  : 1
+O: 3 0 : 183 : 6 3  : 1
+O: 3 0 : 182 : 6 3  : 1
+O: 3 0 : 181 : 6 3  : 1
+O: 3 0 : 180 : 6 3  : 1
+O: 3 0 : 157 : 6 1  : 1
+O: 3 0 : 156 : 6 1  : 1
+O: 3 0 : 149 : 6 1  : 1
+O: 3 0 : 148 : 6 1  : 1
+O: 3 0 : 142 : 6 0  : 1
+O: 3 0 : 140 : 6 0  : 1
+O: 3 0 : 134 : 6 0  : 1
+O: 3 0 : 132 : 6 0  : 1
+O: 3 0 : 127 : 5 7  : 1
+O: 3 0 : 126 : 5 7  : 1
+O: 3 0 : 123 : 5 7  : 1
+O: 3 0 : 122 : 5 7  : 1
+O: 3 0 : 111 : 5 6  : 1
+O: 3 0 : 110 : 5 6  : 1
+O: 3 0 : 103 : 5 6  : 1
+O: 3 0 : 102 : 5 6  : 1
+O: 3 0 : 95 : 5 5  : 1
+O: 3 0 : 94 : 5 5  : 1
+O: 3 0 : 91 : 5 5  : 1
+O: 3 0 : 90 : 5 5  : 1
+O: 3 0 : 87 : 5 5  : 1
+O: 3 0 : 86 : 5 5  : 1
+O: 3 0 : 83 : 5 5  : 1
+O: 3 0 : 82 : 5 5  : 1
+O: 3 0 : 79 : 5 4  : 1
+O: 3 0 : 75 : 5 4  : 1
+O: 3 0 : 71 : 5 4  : 1
+O: 3 0 : 67 : 5 4  : 1
+O: 3 0 : 119 : 5 3  : 1
+O: 3 0 : 118 : 5 3  : 1
+O: 3 0 : 115 : 5 3  : 1
+O: 3 0 : 114 : 5 3  : 1
+O: 3 0 : 107 : 5 2  : 1
+O: 3 0 : 106 : 5 2  : 1
+O: 3 0 : 169 : 2 2  : 1
+O: 3 0 : 2 : 0 0  : 1
+O: 3 0 : 161 : 2 2  : 1
+O: 3 0 : 153 : 2 1  : 1
+O: 3 0 : 145 : 2 1  : 1
+O: 3 0 : 138 : 2 0  : 1
+O: 3 0 : 136 : 2 0  : 1
+O: 3 0 : 130 : 2 0  : 1
+O: 3 0 : 128 : 2 0  : 1
+O: 3 0 : 124 : 1 7  : 1
+O: 3 0 : 120 : 1 7  : 1
+O: 3 0 : 108 : 1 6  : 1
+O: 3 0 : 100 : 1 6  : 1
+O: 3 0 : 77 : 1 4  : 1
+O: 3 0 : 244 : 3 3  : 1
+O: 3 0 : 152 : 2 1  : 1
+O: 3 0 : 73 : 1 4  : 1
+O: 3 0 : 240 : 3 3  : 1
+O: 3 0 : 69 : 1 4  : 1
+O: 3 0 : 144 : 2 1  : 1
+O: 3 0 : 65 : 1 4  : 1
+O: 3 0 : 116 : 1 3  : 1
+O: 3 0 : 112 : 1 3  : 1
+O: 3 0 : 104 : 1 2  : 1
+O: 3 0 : 96 : 1 2  : 1
+O: 3 0 : 92 : 1 1  : 1
+O: 3 0 : 88 : 1 1  : 1
+O: 3 0 : 163 : 2 2  : 1
+O: 3 0 : 84 : 1 1  : 1
+O: 3 0 : 80 : 1 1  : 1
+O: 3 0 : 247 : 3 3  : 1
+O: 3 0 : 32 : 0 2  : 1
+O: 3 0 : 199 : 3 4  : 1
+O: 3 0 : 28 : 0 1  : 1
+O: 3 0 : 195 : 3 4  : 1
+O: 3 0 : 24 : 0 1  : 1
+O: 3 0 : 20 : 0 1  : 1
+O: 3 0 : 187 : 2 7  : 1
+O: 3 0 : 16 : 0 1  : 1
+O: 3 0 : 93 : 1 1  : 1
+O: 3 0 : 14 : 0 0  : 1
+O: 3 0 : 12 : 0 0  : 1
+O: 3 0 : 179 : 2 3  : 1
+O: 3 0 : 160 : 2 2  : 1
+O: 3 0 : 81 : 1 1  : 1
+O: 3 0 : 76 : 1 0  : 1
+O: 3 0 : 243 : 3 3  : 1
+O: 3 0 : 113 : 1 3  : 1
+O: 3 0 : 34 : 0 2  : 1
+O: 3 0 : 0 : 0 0  : 1
+O: 3 0 : 162 : 2 2  : 1
+O: 3 0 : 4 : 0 0  : 1
+O: 3 0 : 171 : 2 2  : 1
+O: 3 0 : 40 : 0 2  : 1
+O: 3 0 : 85 : 1 1  : 1
+O: 3 0 : 6 : 0 0  : 1
+O: 3 0 : 121 : 1 7  : 1
+O: 3 0 : 42 : 0 2  : 1
+O: 3 0 : 209 : 3 1  : 1
+O: 3 0 : 8 : 0 0  : 1
+O: 3 0 : 168 : 2 2  : 1
+O: 3 0 : 1 : 4 4  : 1
+O: 3 0 : 89 : 1 1  : 1
+O: 3 0 : 10 : 0 0  : 1
+O: 3 0 : 177 : 2 3  : 1
+O: 3 0 : 48 : 0 3  : 1
+O: 3 0 : 215 : 3 5  : 1
+O: 3 0 : 50 : 0 3  : 1
+O: 3 0 : 52 : 0 3  : 1
+O: 3 0 : 54 : 0 3  : 1
+O: 3 0 : 97 : 1 2  : 1
+O: 3 0 : 18 : 0 5  : 1
+O: 3 0 : 185 : 2 7  : 1
+O: 3 0 : 101 : 1 6  : 1
+O: 3 0 : 22 : 0 5  : 1
+O: 3 0 : 105 : 1 2  : 1
+O: 3 0 : 26 : 0 5  : 1
+O: 3 0 : 193 : 3 4  : 1
+O: 3 0 : 109 : 1 6  : 1
+O: 3 0 : 30 : 0 5  : 1
+O: 3 0 : 197 : 3 4  : 1
+O: 3 0 : 36 : 0 6  : 1
+O: 3 0 : 117 : 1 3  : 1
+O: 3 0 : 38 : 0 6  : 1
+O: 3 0 : 44 : 0 6  : 1
+O: 3 0 : 211 : 3 5  : 1
+O: 3 0 : 125 : 1 7  : 1
+O: 3 0 : 46 : 0 6  : 1
+O: 3 0 : 213 : 3 1  : 1
+O: 3 0 : 56 : 0 7  : 1
+O: 3 0 : 58 : 0 7  : 1
+O: 3 0 : 225 : 3 2  : 1
+O: 3 0 : 60 : 0 7  : 1
+O: 3 0 : 227 : 3 2  : 1
+O: 3 0 : 62 : 0 7  : 1
+O: 3 0 : 229 : 3 6  : 1
+O: 3 0 : 64 : 1 0  : 1
+O: 3 0 : 231 : 3 6  : 1
+O: 3 0 : 68 : 1 0  : 1
+O: 3 0 : 72 : 1 0  : 1
+O: 3 0 : 170 : 2 2  : 1
+O: 3 0 : 3 : 4 4  : 1
+O: 3 0 : 176 : 2 3  : 1
+O: 3 0 : 9 : 4 4  : 1
+O: 3 0 : 178 : 2 3  : 1
+O: 3 0 : 11 : 4 4  : 1
+O: 3 0 : 129 : 2 4  : 1
+O: 3 0 : 131 : 2 4  : 1
+O: 3 0 : 137 : 2 4  : 1
+O: 3 0 : 139 : 2 4  : 1
+O: 3 0 : 146 : 2 5  : 1
+O: 3 0 : 147 : 2 5  : 1
+O: 3 0 : 154 : 2 5  : 1
+O: 3 0 : 155 : 2 5  : 1
+O: 3 0 : 184 : 2 7  : 1
+O: 3 0 : 17 : 4 1  : 1
+O: 3 0 : 186 : 2 7  : 1
+O: 3 0 : 19 : 4 5  : 1
+O: 3 0 : 192 : 3 0  : 1
+O: 3 0 : 25 : 4 1  : 1
+O: 3 0 : 194 : 3 0  : 1
+O: 3 0 : 27 : 4 5  : 1
+O: 3 0 : 196 : 3 0  : 1
+O: 3 0 : 29 : 4 1  : 1
+O: 3 0 : 198 : 3 0  : 1
+O: 3 0 : 31 : 4 5  : 1
+O: 3 0 : 208 : 3 1  : 1
+O: 3 0 : 41 : 4 2  : 1
+O: 3 0 : 212 : 3 1  : 1
+O: 3 0 : 45 : 4 6  : 1
+O: 3 0 : 224 : 3 2  : 1
+O: 3 0 : 57 : 4 7  : 1
+O: 3 0 : 226 : 3 2  : 1
+O: 3 0 : 59 : 4 7  : 1
+O: 3 0 : 241 : 3 3  : 1
+O: 3 0 : 74 : 5 0  : 1
+O: 3 0 : 242 : 3 3  : 1
+O: 3 0 : 245 : 3 3  : 1
+O: 3 0 : 78 : 5 0  : 1
+O: 3 0 : 246 : 3 3  : 1
+O: 3 0 : 210 : 3 5  : 1
+O: 3 0 : 43 : 4 2  : 1
+O: 3 0 : 214 : 3 5  : 1
+O: 3 0 : 47 : 4 6  : 1
+O: 3 0 : 228 : 3 6  : 1
+O: 3 0 : 61 : 4 7  : 1
+O: 3 0 : 230 : 3 6  : 1
+O: 3 0 : 63 : 4 7  : 1
+O: 3 0 : 21 : 4 1  : 1
+O: 3 0 : 33 : 4 2  : 1
+O: 3 0 : 35 : 4 2  : 1
+O: 3 0 : 49 : 4 3  : 1
+O: 3 0 : 51 : 4 3  : 1
+O: 3 0 : 53 : 4 3  : 1
+O: 3 0 : 55 : 4 3  : 1
+O: 3 0 : 5 : 4 4  : 1
+O: 3 0 : 7 : 4 4  : 1
+O: 3 0 : 13 : 4 4  : 1
+O: 3 0 : 15 : 4 4  : 1
+O: 3 0 : 23 : 4 5  : 1
+O: 3 0 : 37 : 4 6  : 1
+O: 3 0 : 39 : 4 6  : 1
+O: 3 0 : 66 : 5 0  : 1
+O: 3 0 : 70 : 5 0  : 1
+O: 3 0 : 98 : 5 2  : 1
+O: 3 0 : 99 : 5 2  : 1
+O: 2 5 : 255 : 7 7  : 1
+O: 2 5 : 254 : 7 7  : 1
+O: 2 5 : 253 : 7 7  : 1
+O: 2 5 : 252 : 7 7  : 1
+O: 2 5 : 251 : 7 7  : 1
+O: 2 5 : 250 : 7 7  : 1
+O: 2 5 : 249 : 7 7  : 1
+O: 2 5 : 248 : 7 7  : 1
+O: 2 5 : 239 : 7 6  : 1
+O: 2 5 : 238 : 7 6  : 1
+O: 2 5 : 237 : 7 6  : 1
+O: 2 5 : 236 : 7 6  : 1
+O: 2 5 : 223 : 7 5  : 1
+O: 2 5 : 222 : 7 5  : 1
+O: 2 5 : 219 : 7 5  : 1
+O: 2 5 : 218 : 7 5  : 1
+O: 2 5 : 207 : 7 4  : 1
+O: 2 5 : 205 : 7 4  : 1
+O: 2 5 : 203 : 7 4  : 1
+O: 2 5 : 201 : 7 4  : 1
+O: 2 5 : 235 : 7 2  : 1
+O: 2 5 : 234 : 7 2  : 1
+O: 2 5 : 233 : 7 2  : 1
+O: 2 5 : 232 : 7 2  : 1
+O: 2 5 : 221 : 7 1  : 1
+O: 2 5 : 220 : 7 1  : 1
+O: 2 5 : 217 : 7 1  : 1
+O: 2 5 : 216 : 7 1  : 1
+O: 2 5 : 206 : 7 0  : 1
+O: 2 5 : 204 : 7 0  : 1
+O: 2 5 : 202 : 7 0  : 1
+O: 2 5 : 200 : 7 0  : 1
+O: 2 5 : 191 : 6 7  : 1
+O: 2 5 : 190 : 6 7  : 1
+O: 2 5 : 189 : 6 7  : 1
+O: 2 5 : 188 : 6 7  : 1
+O: 2 5 : 175 : 6 6  : 1
+O: 2 5 : 174 : 6 6  : 1
+O: 2 5 : 173 : 6 6  : 1
+O: 2 5 : 172 : 6 6  : 1
+O: 2 5 : 167 : 6 6  : 1
+O: 2 5 : 166 : 6 6  : 1
+O: 2 5 : 165 : 6 6  : 1
+O: 2 5 : 164 : 6 6  : 1
+O: 2 5 : 159 : 6 5  : 1
+O: 2 5 : 158 : 6 5  : 1
+O: 2 5 : 151 : 6 5  : 1
+O: 2 5 : 150 : 6 5  : 1
+O: 2 5 : 143 : 6 4  : 1
+O: 2 5 : 141 : 6 4  : 1
+O: 2 5 : 135 : 6 4  : 1
+O: 2 5 : 133 : 6 4  : 1
+O: 2 5 : 183 : 6 3  : 1
+O: 2 5 : 182 : 6 3  : 1
+O: 2 5 : 181 : 6 3  : 1
+O: 2 5 : 180 : 6 3  : 1
+O: 2 5 : 157 : 6 1  : 1
+O: 2 5 : 156 : 6 1  : 1
+O: 2 5 : 149 : 6 1  : 1
+O: 2 5 : 148 : 6 1  : 1
+O: 2 5 : 142 : 6 0  : 1
+O: 2 5 : 140 : 6 0  : 1
+O: 2 5 : 134 : 6 0  : 1
+O: 2 5 : 132 : 6 0  : 1
+O: 2 5 : 127 : 5 7  : 1
+O: 2 5 : 126 : 5 7  : 1
+O: 2 5 : 123 : 5 7  : 1
+O: 2 5 : 122 : 5 7  : 1
+O: 2 5 : 111 : 5 6  : 1
+O: 2 5 : 110 : 5 6  : 1
+O: 2 5 : 103 : 5 6  : 1
+O: 2 5 : 102 : 5 6  : 1
+O: 2 5 : 95 : 5 5  : 1
+O: 2 5 : 94 : 5 5  : 1
+O: 2 5 : 91 : 5 5  : 1
+O: 2 5 : 90 : 5 5  : 1
+O: 2 5 : 87 : 5 5  : 1
+O: 2 5 : 86 : 5 5  : 1
+O: 2 5 : 83 : 5 5  : 1
+O: 2 5 : 82 : 5 5  : 1
+O: 2 5 : 79 : 5 4  : 1
+O: 2 5 : 75 : 5 4  : 1
+O: 2 5 : 71 : 5 4  : 1
+O: 2 5 : 67 : 5 4  : 1
+O: 2 5 : 119 : 5 3  : 1
+O: 2 5 : 118 : 5 3  : 1
+O: 2 5 : 115 : 5 3  : 1
+O: 2 5 : 114 : 5 3  : 1
+O: 2 5 : 107 : 5 2  : 1
+O: 2 5 : 106 : 5 2  : 1
+O: 2 5 : 169 : 2 2  : 1
+O: 2 5 : 2 : 0 0  : 1
+O: 2 5 : 161 : 2 2  : 1
+O: 2 5 : 153 : 2 1  : 1
+O: 2 5 : 145 : 2 1  : 1
+O: 2 5 : 138 : 2 0  : 1
+O: 2 5 : 136 : 2 0  : 1
+O: 2 5 : 130 : 2 0  : 1
+O: 2 5 : 128 : 2 0  : 1
+O: 2 5 : 124 : 1 7  : 1
+O: 2 5 : 120 : 1 7  : 1
+O: 2 5 : 108 : 1 6  : 1
+O: 2 5 : 100 : 1 6  : 1
+O: 2 5 : 77 : 1 4  : 1
+O: 2 5 : 244 : 3 3  : 1
+O: 2 5 : 152 : 2 1  : 1
+O: 2 5 : 73 : 1 4  : 1
+O: 2 5 : 240 : 3 3  : 1
+O: 2 5 : 69 : 1 4  : 1
+O: 2 5 : 144 : 2 1  : 1
+O: 2 5 : 65 : 1 4  : 1
+O: 2 5 : 116 : 1 3  : 1
+O: 2 5 : 112 : 1 3  : 1
+O: 2 5 : 104 : 1 2  : 1
+O: 2 5 : 96 : 1 2  : 1
+O: 2 5 : 92 : 1 1  : 1
+O: 2 5 : 88 : 1 1  : 1
+O: 2 5 : 163 : 2 2  : 1
+O: 2 5 : 84 : 1 1  : 1
+O: 2 5 : 80 : 1 1  : 1
+O: 2 5 : 247 : 3 3  : 1
+O: 2 5 : 32 : 0 2  : 1
+O: 2 5 : 199 : 3 4  : 1
+O: 2 5 : 28 : 0 1  : 1
+O: 2 5 : 195 : 3 4  : 1
+O: 2 5 : 24 : 0 1  : 1
+O: 2 5 : 20 : 0 1  : 1
+O: 2 5 : 187 : 2 7  : 1
+O: 2 5 : 16 : 0 1  : 1
+O: 2 5 : 93 : 1 1  : 1
+O: 2 5 : 14 : 0 0  : 1
+O: 2 5 : 12 : 0 0  : 1
+O: 2 5 : 179 : 2 3  : 1
+O: 2 5 : 160 : 2 2  : 1
+O: 2 5 : 81 : 1 1  : 1
+O: 2 5 : 76 : 1 0  : 1
+O: 2 5 : 243 : 3 3  : 1
+O: 2 5 : 113 : 1 3  : 1
+O: 2 5 : 34 : 0 2  : 1
+O: 2 5 : 0 : 0 0  : 1
+O: 2 5 : 162 : 2 2  : 1
+O: 2 5 : 4 : 0 0  : 1
+O: 2 5 : 171 : 2 2  : 1
+O: 2 5 : 40 : 0 2  : 1
+O: 2 5 : 85 : 1 1  : 1
+O: 2 5 : 6 : 0 0  : 1
+O: 2 5 : 121 : 1 7  : 1
+O: 2 5 : 42 : 0 2  : 1
+O: 2 5 : 209 : 3 1  : 1
+O: 2 5 : 8 : 0 0  : 1
+O: 2 5 : 168 : 2 2  : 1
+O: 2 5 : 1 : 4 4  : 1
+O: 2 5 : 89 : 1 1  : 1
+O: 2 5 : 10 : 0 0  : 1
+O: 2 5 : 177 : 2 3  : 1
+O: 2 5 : 48 : 0 3  : 1
+O: 2 5 : 215 : 3 5  : 1
+O: 2 5 : 50 : 0 3  : 1
+O: 2 5 : 52 : 0 3  : 1
+O: 2 5 : 54 : 0 3  : 1
+O: 2 5 : 97 : 1 2  : 1
+O: 2 5 : 18 : 0 5  : 1
+O: 2 5 : 185 : 2 7  : 1
+O: 2 5 : 101 : 1 6  : 1
+O: 2 5 : 22 : 0 5  : 1
+O: 2 5 : 105 : 1 2  : 1
+O: 2 5 : 26 : 0 5  : 1
+O: 2 5 : 193 : 3 4  : 1
+O: 2 5 : 109 : 1 6  : 1
+O: 2 5 : 30 : 0 5  : 1
+O: 2 5 : 197 : 3 4  : 1
+O: 2 5 : 36 : 0 6  : 1
+O: 2 5 : 117 : 1 3  : 1
+O: 2 5 : 38 : 0 6  : 1
+O: 2 5 : 44 : 0 6  : 1
+O: 2 5 : 211 : 3 5  : 1
+O: 2 5 : 125 : 1 7  : 1
+O: 2 5 : 46 : 0 6  : 1
+O: 2 5 : 213 : 3 1  : 1
+O: 2 5 : 56 : 0 7  : 1
+O: 2 5 : 58 : 0 7  : 1
+O: 2 5 : 225 : 3 2  : 1
+O: 2 5 : 60 : 0 7  : 1
+O: 2 5 : 227 : 3 2  : 1
+O: 2 5 : 62 : 0 7  : 1
+O: 2 5 : 229 : 3 6  : 1
+O: 2 5 : 64 : 1 0  : 1
+O: 2 5 : 231 : 3 6  : 1
+O: 2 5 : 68 : 1 0  : 1
+O: 2 5 : 72 : 1 0  : 1
+O: 2 5 : 170 : 2 2  : 1
+O: 2 5 : 3 : 4 4  : 1
+O: 2 5 : 176 : 2 3  : 1
+O: 2 5 : 9 : 4 4  : 1
+O: 2 5 : 178 : 2 3  : 1
+O: 2 5 : 11 : 4 4  : 1
+O: 2 5 : 129 : 2 4  : 1
+O: 2 5 : 131 : 2 4  : 1
+O: 2 5 : 137 : 2 4  : 1
+O: 2 5 : 139 : 2 4  : 1
+O: 2 5 : 146 : 2 5  : 1
+O: 2 5 : 147 : 2 5  : 1
+O: 2 5 : 154 : 2 5  : 1
+O: 2 5 : 155 : 2 5  : 1
+O: 2 5 : 184 : 2 7  : 1
+O: 2 5 : 17 : 4 1  : 1
+O: 2 5 : 186 : 2 7  : 1
+O: 2 5 : 19 : 4 5  : 1
+O: 2 5 : 192 : 3 0  : 1
+O: 2 5 : 25 : 4 1  : 1
+O: 2 5 : 194 : 3 0  : 1
+O: 2 5 : 27 : 4 5  : 1
+O: 2 5 : 196 : 3 0  : 1
+O: 2 5 : 29 : 4 1  : 1
+O: 2 5 : 198 : 3 0  : 1
+O: 2 5 : 31 : 4 5  : 1
+O: 2 5 : 208 : 3 1  : 1
+O: 2 5 : 41 : 4 2  : 1
+O: 2 5 : 212 : 3 1  : 1
+O: 2 5 : 45 : 4 6  : 1
+O: 2 5 : 224 : 3 2  : 1
+O: 2 5 : 57 : 4 7  : 1
+O: 2 5 : 226 : 3 2  : 1
+O: 2 5 : 59 : 4 7  : 1
+O: 2 5 : 241 : 3 3  : 1
+O: 2 5 : 74 : 5 0  : 1
+O: 2 5 : 242 : 3 3  : 1
+O: 2 5 : 245 : 3 3  : 1
+O: 2 5 : 78 : 5 0  : 1
+O: 2 5 : 246 : 3 3  : 1
+O: 2 5 : 210 : 3 5  : 1
+O: 2 5 : 43 : 4 2  : 1
+O: 2 5 : 214 : 3 5  : 1
+O: 2 5 : 47 : 4 6  : 1
+O: 2 5 : 228 : 3 6  : 1
+O: 2 5 : 61 : 4 7  : 1
+O: 2 5 : 230 : 3 6  : 1
+O: 2 5 : 63 : 4 7  : 1
+O: 2 5 : 21 : 4 1  : 1
+O: 2 5 : 33 : 4 2  : 1
+O: 2 5 : 35 : 4 2  : 1
+O: 2 5 : 49 : 4 3  : 1
+O: 2 5 : 51 : 4 3  : 1
+O: 2 5 : 53 : 4 3  : 1
+O: 2 5 : 55 : 4 3  : 1
+O: 2 5 : 5 : 4 4  : 1
+O: 2 5 : 7 : 4 4  : 1
+O: 2 5 : 13 : 4 4  : 1
+O: 2 5 : 15 : 4 4  : 1
+O: 2 5 : 23 : 4 5  : 1
+O: 2 5 : 37 : 4 6  : 1
+O: 2 5 : 39 : 4 6  : 1
+O: 2 5 : 66 : 5 0  : 1
+O: 2 5 : 70 : 5 0  : 1
+O: 2 5 : 98 : 5 2  : 1
+O: 2 5 : 99 : 5 2  : 1
+O: 2 4 : 255 : 7 7  : 1
+O: 2 4 : 254 : 7 7  : 1
+O: 2 4 : 253 : 7 7  : 1
+O: 2 4 : 252 : 7 7  : 1
+O: 2 4 : 251 : 7 7  : 1
+O: 2 4 : 250 : 7 7  : 1
+O: 2 4 : 249 : 7 7  : 1
+O: 2 4 : 248 : 7 7  : 1
+O: 2 4 : 239 : 7 6  : 1
+O: 2 4 : 238 : 7 6  : 1
+O: 2 4 : 237 : 7 6  : 1
+O: 2 4 : 236 : 7 6  : 1
+O: 2 4 : 223 : 7 5  : 1
+O: 2 4 : 222 : 7 5  : 1
+O: 2 4 : 219 : 7 5  : 1
+O: 2 4 : 218 : 7 5  : 1
+O: 2 4 : 207 : 7 4  : 1
+O: 2 4 : 205 : 7 4  : 1
+O: 2 4 : 203 : 7 4  : 1
+O: 2 4 : 201 : 7 4  : 1
+O: 2 4 : 235 : 7 2  : 1
+O: 2 4 : 234 : 7 2  : 1
+O: 2 4 : 233 : 7 2  : 1
+O: 2 4 : 232 : 7 2  : 1
+O: 2 4 : 221 : 7 1  : 1
+O: 2 4 : 220 : 7 1  : 1
+O: 2 4 : 217 : 7 1  : 1
+O: 2 4 : 216 : 7 1  : 1
+O: 2 4 : 206 : 7 0  : 1
+O: 2 4 : 204 : 7 0  : 1
+O: 2 4 : 202 : 7 0  : 1
+O: 2 4 : 200 : 7 0  : 1
+O: 2 4 : 191 : 6 7  : 1
+O: 2 4 : 190 : 6 7  : 1
+O: 2 4 : 189 : 6 7  : 1
+O: 2 4 : 188 : 6 7  : 1
+O: 2 4 : 175 : 6 6  : 1
+O: 2 4 : 174 : 6 6  : 1
+O: 2 4 : 173 : 6 6  : 1
+O: 2 4 : 172 : 6 6  : 1
+O: 2 4 : 167 : 6 6  : 1
+O: 2 4 : 166 : 6 6  : 1
+O: 2 4 : 165 : 6 6  : 1
+O: 2 4 : 164 : 6 6  : 1
+O: 2 4 : 159 : 6 5  : 1
+O: 2 4 : 158 : 6 5  : 1
+O: 2 4 : 151 : 6 5  : 1
+O: 2 4 : 150 : 6 5  : 1
+O: 2 4 : 143 : 6 4  : 1
+O: 2 4 : 141 : 6 4  : 1
+O: 2 4 : 135 : 6 4  : 1
+O: 2 4 : 133 : 6 4  : 1
+O: 2 4 : 183 : 6 3  : 1
+O: 2 4 : 182 : 6 3  : 1
+O: 2 4 : 181 : 6 3  : 1
+O: 2 4 : 180 : 6 3  : 1
+O: 2 4 : 157 : 6 1  : 1
+O: 2 4 : 156 : 6 1  : 1
+O: 2 4 : 149 : 6 1  : 1
+O: 2 4 : 148 : 6 1  : 1
+O: 2 4 : 142 : 6 0  : 1
+O: 2 4 : 140 : 6 0  : 1
+O: 2 4 : 134 : 6 0  : 1
+O: 2 4 : 132 : 6 0  : 1
+O: 2 4 : 127 : 5 7  : 1
+O: 2 4 : 126 : 5 7  : 1
+O: 2 4 : 123 : 5 7  : 1
+O: 2 4 : 122 : 5 7  : 1
+O: 2 4 : 111 : 5 6  : 1
+O: 2 4 : 110 : 5 6  : 1
+O: 2 4 : 103 : 5 6  : 1
+O: 2 4 : 102 : 5 6  : 1
+O: 2 4 : 95 : 5 5  : 1
+O: 2 4 : 94 : 5 5  : 1
+O: 2 4 : 91 : 5 5  : 1
+O: 2 4 : 90 : 5 5  : 1
+O: 2 4 : 87 : 5 5  : 1
+O: 2 4 : 86 : 5 5  : 1
+O: 2 4 : 83 : 5 5  : 1
+O: 2 4 : 82 : 5 5  : 1
+O: 2 4 : 79 : 5 4  : 1
+O: 2 4 : 75 : 5 4  : 1
+O: 2 4 : 71 : 5 4  : 1
+O: 2 4 : 67 : 5 4  : 1
+O: 2 4 : 119 : 5 3  : 1
+O: 2 4 : 118 : 5 3  : 1
+O: 2 4 : 115 : 5 3  : 1
+O: 2 4 : 114 : 5 3  : 1
+O: 2 4 : 107 : 5 2  : 1
+O: 2 4 : 106 : 5 2  : 1
+O: 2 4 : 169 : 2 2  : 1
+O: 2 4 : 2 : 0 0  : 1
+O: 2 4 : 161 : 2 2  : 1
+O: 2 4 : 153 : 2 1  : 1
+O: 2 4 : 145 : 2 1  : 1
+O: 2 4 : 138 : 2 0  : 1
+O: 2 4 : 136 : 2 0  : 1
+O: 2 4 : 130 : 2 0  : 1
+O: 2 4 : 128 : 2 0  : 1
+O: 2 4 : 124 : 1 7  : 1
+O: 2 4 : 120 : 1 7  : 1
+O: 2 4 : 108 : 1 6  : 1
+O: 2 4 : 100 : 1 6  : 1
+O: 2 4 : 77 : 1 4  : 1
+O: 2 4 : 244 : 3 3  : 1
+O: 2 4 : 152 : 2 1  : 1
+O: 2 4 : 73 : 1 4  : 1
+O: 2 4 : 240 : 3 3  : 1
+O: 2 4 : 69 : 1 4  : 1
+O: 2 4 : 144 : 2 1  : 1
+O: 2 4 : 65 : 1 4  : 1
+O: 2 4 : 116 : 1 3  : 1
+O: 2 4 : 112 : 1 3  : 1
+O: 2 4 : 104 : 1 2  : 1
+O: 2 4 : 96 : 1 2  : 1
+O: 2 4 : 92 : 1 1  : 1
+O: 2 4 : 88 : 1 1  : 1
+O: 2 4 : 163 : 2 2  : 1
+O: 2 4 : 84 : 1 1  : 1
+O: 2 4 : 80 : 1 1  : 1
+O: 2 4 : 247 : 3 3  : 1
+O: 2 4 : 32 : 0 2  : 1
+O: 2 4 : 199 : 3 4  : 1
+O: 2 4 : 28 : 0 1  : 1
+O: 2 4 : 195 : 3 4  : 1
+O: 2 4 : 24 : 0 1  : 1
+O: 2 4 : 20 : 0 1  : 1
+O: 2 4 : 187 : 2 7  : 1
+O: 2 4 : 16 : 0 1  : 1
+O: 2 4 : 93 : 1 1  : 1
+O: 2 4 : 14 : 0 0  : 1
+O: 2 4 : 12 : 0 0  : 1
+O: 2 4 : 179 : 2 3  : 1
+O: 2 4 : 160 : 2 2  : 1
+O: 2 4 : 81 : 1 1  : 1
+O: 2 4 : 76 : 1 0  : 1
+O: 2 4 : 243 : 3 3  : 1
+O: 2 4 : 113 : 1 3  : 1
+O: 2 4 : 34 : 0 2  : 1
+O: 2 4 : 0 : 0 0  : 1
+O: 2 4 : 162 : 2 2  : 1
+O: 2 4 : 4 : 0 0  : 1
+O: 2 4 : 171 : 2 2  : 1
+O: 2 4 : 40 : 0 2  : 1
+O: 2 4 : 85 : 1 1  : 1
+O: 2 4 : 6 : 0 0  : 1
+O: 2 4 : 121 : 1 7  : 1
+O: 2 4 : 42 : 0 2  : 1
+O: 2 4 : 209 : 3 1  : 1
+O: 2 4 : 8 : 0 0  : 1
+O: 2 4 : 168 : 2 2  : 1
+O: 2 4 : 1 : 4 4  : 1
+O: 2 4 : 89 : 1 1  : 1
+O: 2 4 : 10 : 0 0  : 1
+O: 2 4 : 177 : 2 3  : 1
+O: 2 4 : 48 : 0 3  : 1
+O: 2 4 : 215 : 3 5  : 1
+O: 2 4 : 50 : 0 3  : 1
+O: 2 4 : 52 : 0 3  : 1
+O: 2 4 : 54 : 0 3  : 1
+O: 2 4 : 97 : 1 2  : 1
+O: 2 4 : 18 : 0 5  : 1
+O: 2 4 : 185 : 2 7  : 1
+O: 2 4 : 101 : 1 6  : 1
+O: 2 4 : 22 : 0 5  : 1
+O: 2 4 : 105 : 1 2  : 1
+O: 2 4 : 26 : 0 5  : 1
+O: 2 4 : 193 : 3 4  : 1
+O: 2 4 : 109 : 1 6  : 1
+O: 2 4 : 30 : 0 5  : 1
+O: 2 4 : 197 : 3 4  : 1
+O: 2 4 : 36 : 0 6  : 1
+O: 2 4 : 117 : 1 3  : 1
+O: 2 4 : 38 : 0 6  : 1
+O: 2 4 : 44 : 0 6  : 1
+O: 2 4 : 211 : 3 5  : 1
+O: 2 4 : 125 : 1 7  : 1
+O: 2 4 : 46 : 0 6  : 1
+O: 2 4 : 213 : 3 1  : 1
+O: 2 4 : 56 : 0 7  : 1
+O: 2 4 : 58 : 0 7  : 1
+O: 2 4 : 225 : 3 2  : 1
+O: 2 4 : 60 : 0 7  : 1
+O: 2 4 : 227 : 3 2  : 1
+O: 2 4 : 62 : 0 7  : 1
+O: 2 4 : 229 : 3 6  : 1
+O: 2 4 : 64 : 1 0  : 1
+O: 2 4 : 231 : 3 6  : 1
+O: 2 4 : 68 : 1 0  : 1
+O: 2 4 : 72 : 1 0  : 1
+O: 2 4 : 170 : 2 2  : 1
+O: 2 4 : 3 : 4 4  : 1
+O: 2 4 : 176 : 2 3  : 1
+O: 2 4 : 9 : 4 4  : 1
+O: 2 4 : 178 : 2 3  : 1
+O: 2 4 : 11 : 4 4  : 1
+O: 2 4 : 129 : 2 4  : 1
+O: 2 4 : 131 : 2 4  : 1
+O: 2 4 : 137 : 2 4  : 1
+O: 2 4 : 139 : 2 4  : 1
+O: 2 4 : 146 : 2 5  : 1
+O: 2 4 : 147 : 2 5  : 1
+O: 2 4 : 154 : 2 5  : 1
+O: 2 4 : 155 : 2 5  : 1
+O: 2 4 : 184 : 2 7  : 1
+O: 2 4 : 17 : 4 1  : 1
+O: 2 4 : 186 : 2 7  : 1
+O: 2 4 : 19 : 4 5  : 1
+O: 2 4 : 192 : 3 0  : 1
+O: 2 4 : 25 : 4 1  : 1
+O: 2 4 : 194 : 3 0  : 1
+O: 2 4 : 27 : 4 5  : 1
+O: 2 4 : 196 : 3 0  : 1
+O: 2 4 : 29 : 4 1  : 1
+O: 2 4 : 198 : 3 0  : 1
+O: 2 4 : 31 : 4 5  : 1
+O: 2 4 : 208 : 3 1  : 1
+O: 2 4 : 41 : 4 2  : 1
+O: 2 4 : 212 : 3 1  : 1
+O: 2 4 : 45 : 4 6  : 1
+O: 2 4 : 224 : 3 2  : 1
+O: 2 4 : 57 : 4 7  : 1
+O: 2 4 : 226 : 3 2  : 1
+O: 2 4 : 59 : 4 7  : 1
+O: 2 4 : 241 : 3 3  : 1
+O: 2 4 : 74 : 5 0  : 1
+O: 2 4 : 242 : 3 3  : 1
+O: 2 4 : 245 : 3 3  : 1
+O: 2 4 : 78 : 5 0  : 1
+O: 2 4 : 246 : 3 3  : 1
+O: 2 4 : 210 : 3 5  : 1
+O: 2 4 : 43 : 4 2  : 1
+O: 2 4 : 214 : 3 5  : 1
+O: 2 4 : 47 : 4 6  : 1
+O: 2 4 : 228 : 3 6  : 1
+O: 2 4 : 61 : 4 7  : 1
+O: 2 4 : 230 : 3 6  : 1
+O: 2 4 : 63 : 4 7  : 1
+O: 2 4 : 21 : 4 1  : 1
+O: 2 4 : 33 : 4 2  : 1
+O: 2 4 : 35 : 4 2  : 1
+O: 2 4 : 49 : 4 3  : 1
+O: 2 4 : 51 : 4 3  : 1
+O: 2 4 : 53 : 4 3  : 1
+O: 2 4 : 55 : 4 3  : 1
+O: 2 4 : 5 : 4 4  : 1
+O: 2 4 : 7 : 4 4  : 1
+O: 2 4 : 13 : 4 4  : 1
+O: 2 4 : 15 : 4 4  : 1
+O: 2 4 : 23 : 4 5  : 1
+O: 2 4 : 37 : 4 6  : 1
+O: 2 4 : 39 : 4 6  : 1
+O: 2 4 : 66 : 5 0  : 1
+O: 2 4 : 70 : 5 0  : 1
+O: 2 4 : 98 : 5 2  : 1
+O: 2 4 : 99 : 5 2  : 1
+O: 0 5 : 255 : 7 7  : 1
+O: 0 5 : 254 : 7 7  : 1
+O: 0 5 : 253 : 7 7  : 1
+O: 0 5 : 252 : 7 7  : 1
+O: 0 5 : 251 : 7 7  : 1
+O: 0 5 : 250 : 7 7  : 1
+O: 0 5 : 249 : 7 7  : 1
+O: 0 5 : 248 : 7 7  : 1
+O: 0 5 : 239 : 7 6  : 1
+O: 0 5 : 238 : 7 6  : 1
+O: 0 5 : 237 : 7 6  : 1
+O: 0 5 : 236 : 7 6  : 1
+O: 0 5 : 223 : 7 5  : 1
+O: 0 5 : 222 : 7 5  : 1
+O: 0 5 : 219 : 7 5  : 1
+O: 0 5 : 218 : 7 5  : 1
+O: 0 5 : 207 : 7 4  : 1
+O: 0 5 : 205 : 7 4  : 1
+O: 0 5 : 203 : 7 4  : 1
+O: 0 5 : 201 : 7 4  : 1
+O: 0 5 : 235 : 7 2  : 1
+O: 0 5 : 234 : 7 2  : 1
+O: 0 5 : 233 : 7 2  : 1
+O: 0 5 : 232 : 7 2  : 1
+O: 0 5 : 221 : 7 1  : 1
+O: 0 5 : 220 : 7 1  : 1
+O: 0 5 : 217 : 7 1  : 1
+O: 0 5 : 216 : 7 1  : 1
+O: 0 5 : 206 : 7 0  : 1
+O: 0 5 : 204 : 7 0  : 1
+O: 0 5 : 202 : 7 0  : 1
+O: 0 5 : 200 : 7 0  : 1
+O: 0 5 : 191 : 6 7  : 1
+O: 0 5 : 190 : 6 7  : 1
+O: 0 5 : 189 : 6 7  : 1
+O: 0 5 : 188 : 6 7  : 1
+O: 0 5 : 175 : 6 6  : 1
+O: 0 5 : 174 : 6 6  : 1
+O: 0 5 : 173 : 6 6  : 1
+O: 0 5 : 172 : 6 6  : 1
+O: 0 5 : 167 : 6 6  : 1
+O: 0 5 : 166 : 6 6  : 1
+O: 0 5 : 165 : 6 6  : 1
+O: 0 5 : 164 : 6 6  : 1
+O: 0 5 : 159 : 6 5  : 1
+O: 0 5 : 158 : 6 5  : 1
+O: 0 5 : 151 : 6 5  : 1
+O: 0 5 : 150 : 6 5  : 1
+O: 0 5 : 143 : 6 4  : 1
+O: 0 5 : 141 : 6 4  : 1
+O: 0 5 : 135 : 6 4  : 1
+O: 0 5 : 133 : 6 4  : 1
+O: 0 5 : 183 : 6 3  : 1
+O: 0 5 : 182 : 6 3  : 1
+O: 0 5 : 181 : 6 3  : 1
+O: 0 5 : 180 : 6 3  : 1
+O: 0 5 : 157 : 6 1  : 1
+O: 0 5 : 156 : 6 1  : 1
+O: 0 5 : 149 : 6 1  : 1
+O: 0 5 : 148 : 6 1  : 1
+O: 0 5 : 142 : 6 0  : 1
+O: 0 5 : 140 : 6 0  : 1
+O: 0 5 : 134 : 6 0  : 1
+O: 0 5 : 132 : 6 0  : 1
+O: 0 5 : 127 : 5 7  : 1
+O: 0 5 : 126 : 5 7  : 1
+O: 0 5 : 123 : 5 7  : 1
+O: 0 5 : 122 : 5 7  : 1
+O: 0 5 : 111 : 5 6  : 1
+O: 0 5 : 110 : 5 6  : 1
+O: 0 5 : 103 : 5 6  : 1
+O: 0 5 : 102 : 5 6  : 1
+O: 0 5 : 95 : 5 5  : 1
+O: 0 5 : 94 : 5 5  : 1
+O: 0 5 : 91 : 5 5  : 1
+O: 0 5 : 90 : 5 5  : 1
+O: 0 5 : 87 : 5 5  : 1
+O: 0 5 : 86 : 5 5  : 1
+O: 0 5 : 83 : 5 5  : 1
+O: 0 5 : 82 : 5 5  : 1
+O: 0 5 : 79 : 5 4  : 1
+O: 0 5 : 75 : 5 4  : 1
+O: 0 5 : 71 : 5 4  : 1
+O: 0 5 : 67 : 5 4  : 1
+O: 0 5 : 119 : 5 3  : 1
+O: 0 5 : 118 : 5 3  : 1
+O: 0 5 : 115 : 5 3  : 1
+O: 0 5 : 114 : 5 3  : 1
+O: 0 5 : 107 : 5 2  : 1
+O: 0 5 : 106 : 5 2  : 1
+O: 0 5 : 169 : 2 2  : 1
+O: 0 5 : 2 : 0 0  : 1
+O: 0 5 : 161 : 2 2  : 1
+O: 0 5 : 153 : 2 1  : 1
+O: 0 5 : 145 : 2 1  : 1
+O: 0 5 : 138 : 2 0  : 1
+O: 0 5 : 136 : 2 0  : 1
+O: 0 5 : 130 : 2 0  : 1
+O: 0 5 : 128 : 2 0  : 1
+O: 0 5 : 124 : 1 7  : 1
+O: 0 5 : 120 : 1 7  : 1
+O: 0 5 : 108 : 1 6  : 1
+O: 0 5 : 100 : 1 6  : 1
+O: 0 5 : 77 : 1 4  : 1
+O: 0 5 : 244 : 3 3  : 1
+O: 0 5 : 152 : 2 1  : 1
+O: 0 5 : 73 : 1 4  : 1
+O: 0 5 : 240 : 3 3  : 1
+O: 0 5 : 69 : 1 4  : 1
+O: 0 5 : 144 : 2 1  : 1
+O: 0 5 : 65 : 1 4  : 1
+O: 0 5 : 116 : 1 3  : 1
+O: 0 5 : 112 : 1 3  : 1
+O: 0 5 : 104 : 1 2  : 1
+O: 0 5 : 96 : 1 2  : 1
+O: 0 5 : 92 : 1 1  : 1
+O: 0 5 : 88 : 1 1  : 1
+O: 0 5 : 163 : 2 2  : 1
+O: 0 5 : 84 : 1 1  : 1
+O: 0 5 : 80 : 1 1  : 1
+O: 0 5 : 247 : 3 3  : 1
+O: 0 5 : 32 : 0 2  : 1
+O: 0 5 : 199 : 3 4  : 1
+O: 0 5 : 28 : 0 1  : 1
+O: 0 5 : 195 : 3 4  : 1
+O: 0 5 : 24 : 0 1  : 1
+O: 0 5 : 20 : 0 1  : 1
+O: 0 5 : 187 : 2 7  : 1
+O: 0 5 : 16 : 0 1  : 1
+O: 0 5 : 93 : 1 1  : 1
+O: 0 5 : 14 : 0 0  : 1
+O: 0 5 : 12 : 0 0  : 1
+O: 0 5 : 179 : 2 3  : 1
+O: 0 5 : 160 : 2 2  : 1
+O: 0 5 : 81 : 1 1  : 1
+O: 0 5 : 76 : 1 0  : 1
+O: 0 5 : 243 : 3 3  : 1
+O: 0 5 : 113 : 1 3  : 1
+O: 0 5 : 34 : 0 2  : 1
+O: 0 5 : 0 : 0 0  : 1
+O: 0 5 : 162 : 2 2  : 1
+O: 0 5 : 4 : 0 0  : 1
+O: 0 5 : 171 : 2 2  : 1
+O: 0 5 : 40 : 0 2  : 1
+O: 0 5 : 85 : 1 1  : 1
+O: 0 5 : 6 : 0 0  : 1
+O: 0 5 : 121 : 1 7  : 1
+O: 0 5 : 42 : 0 2  : 1
+O: 0 5 : 209 : 3 1  : 1
+O: 0 5 : 8 : 0 0  : 1
+O: 0 5 : 168 : 2 2  : 1
+O: 0 5 : 1 : 4 4  : 1
+O: 0 5 : 89 : 1 1  : 1
+O: 0 5 : 10 : 0 0  : 1
+O: 0 5 : 177 : 2 3  : 1
+O: 0 5 : 48 : 0 3  : 1
+O: 0 5 : 215 : 3 5  : 1
+O: 0 5 : 50 : 0 3  : 1
+O: 0 5 : 52 : 0 3  : 1
+O: 0 5 : 54 : 0 3  : 1
+O: 0 5 : 97 : 1 2  : 1
+O: 0 5 : 18 : 0 5  : 1
+O: 0 5 : 185 : 2 7  : 1
+O: 0 5 : 101 : 1 6  : 1
+O: 0 5 : 22 : 0 5  : 1
+O: 0 5 : 105 : 1 2  : 1
+O: 0 5 : 26 : 0 5  : 1
+O: 0 5 : 193 : 3 4  : 1
+O: 0 5 : 109 : 1 6  : 1
+O: 0 5 : 30 : 0 5  : 1
+O: 0 5 : 197 : 3 4  : 1
+O: 0 5 : 36 : 0 6  : 1
+O: 0 5 : 117 : 1 3  : 1
+O: 0 5 : 38 : 0 6  : 1
+O: 0 5 : 44 : 0 6  : 1
+O: 0 5 : 211 : 3 5  : 1
+O: 0 5 : 125 : 1 7  : 1
+O: 0 5 : 46 : 0 6  : 1
+O: 0 5 : 213 : 3 1  : 1
+O: 0 5 : 56 : 0 7  : 1
+O: 0 5 : 58 : 0 7  : 1
+O: 0 5 : 225 : 3 2  : 1
+O: 0 5 : 60 : 0 7  : 1
+O: 0 5 : 227 : 3 2  : 1
+O: 0 5 : 62 : 0 7  : 1
+O: 0 5 : 229 : 3 6  : 1
+O: 0 5 : 64 : 1 0  : 1
+O: 0 5 : 231 : 3 6  : 1
+O: 0 5 : 68 : 1 0  : 1
+O: 0 5 : 72 : 1 0  : 1
+O: 0 5 : 170 : 2 2  : 1
+O: 0 5 : 3 : 4 4  : 1
+O: 0 5 : 176 : 2 3  : 1
+O: 0 5 : 9 : 4 4  : 1
+O: 0 5 : 178 : 2 3  : 1
+O: 0 5 : 11 : 4 4  : 1
+O: 0 5 : 129 : 2 4  : 1
+O: 0 5 : 131 : 2 4  : 1
+O: 0 5 : 137 : 2 4  : 1
+O: 0 5 : 139 : 2 4  : 1
+O: 0 5 : 146 : 2 5  : 1
+O: 0 5 : 147 : 2 5  : 1
+O: 0 5 : 154 : 2 5  : 1
+O: 0 5 : 155 : 2 5  : 1
+O: 0 5 : 184 : 2 7  : 1
+O: 0 5 : 17 : 4 1  : 1
+O: 0 5 : 186 : 2 7  : 1
+O: 0 5 : 19 : 4 5  : 1
+O: 0 5 : 192 : 3 0  : 1
+O: 0 5 : 25 : 4 1  : 1
+O: 0 5 : 194 : 3 0  : 1
+O: 0 5 : 27 : 4 5  : 1
+O: 0 5 : 196 : 3 0  : 1
+O: 0 5 : 29 : 4 1  : 1
+O: 0 5 : 198 : 3 0  : 1
+O: 0 5 : 31 : 4 5  : 1
+O: 0 5 : 208 : 3 1  : 1
+O: 0 5 : 41 : 4 2  : 1
+O: 0 5 : 212 : 3 1  : 1
+O: 0 5 : 45 : 4 6  : 1
+O: 0 5 : 224 : 3 2  : 1
+O: 0 5 : 57 : 4 7  : 1
+O: 0 5 : 226 : 3 2  : 1
+O: 0 5 : 59 : 4 7  : 1
+O: 0 5 : 241 : 3 3  : 1
+O: 0 5 : 74 : 5 0  : 1
+O: 0 5 : 242 : 3 3  : 1
+O: 0 5 : 245 : 3 3  : 1
+O: 0 5 : 78 : 5 0  : 1
+O: 0 5 : 246 : 3 3  : 1
+O: 0 5 : 210 : 3 5  : 1
+O: 0 5 : 43 : 4 2  : 1
+O: 0 5 : 214 : 3 5  : 1
+O: 0 5 : 47 : 4 6  : 1
+O: 0 5 : 228 : 3 6  : 1
+O: 0 5 : 61 : 4 7  : 1
+O: 0 5 : 230 : 3 6  : 1
+O: 0 5 : 63 : 4 7  : 1
+O: 0 5 : 21 : 4 1  : 1
+O: 0 5 : 33 : 4 2  : 1
+O: 0 5 : 35 : 4 2  : 1
+O: 0 5 : 49 : 4 3  : 1
+O: 0 5 : 51 : 4 3  : 1
+O: 0 5 : 53 : 4 3  : 1
+O: 0 5 : 55 : 4 3  : 1
+O: 0 5 : 5 : 4 4  : 1
+O: 0 5 : 7 : 4 4  : 1
+O: 0 5 : 13 : 4 4  : 1
+O: 0 5 : 15 : 4 4  : 1
+O: 0 5 : 23 : 4 5  : 1
+O: 0 5 : 37 : 4 6  : 1
+O: 0 5 : 39 : 4 6  : 1
+O: 0 5 : 66 : 5 0  : 1
+O: 0 5 : 70 : 5 0  : 1
+O: 0 5 : 98 : 5 2  : 1
+O: 0 5 : 99 : 5 2  : 1
+O: 0 4 : 255 : 7 7  : 1
+O: 0 4 : 254 : 7 7  : 1
+O: 0 4 : 253 : 7 7  : 1
+O: 0 4 : 252 : 7 7  : 1
+O: 0 4 : 251 : 7 7  : 1
+O: 0 4 : 250 : 7 7  : 1
+O: 0 4 : 249 : 7 7  : 1
+O: 0 4 : 248 : 7 7  : 1
+O: 0 4 : 239 : 7 6  : 1
+O: 0 4 : 238 : 7 6  : 1
+O: 0 4 : 237 : 7 6  : 1
+O: 0 4 : 236 : 7 6  : 1
+O: 0 4 : 223 : 7 5  : 1
+O: 0 4 : 222 : 7 5  : 1
+O: 0 4 : 219 : 7 5  : 1
+O: 0 4 : 218 : 7 5  : 1
+O: 0 4 : 207 : 7 4  : 1
+O: 0 4 : 205 : 7 4  : 1
+O: 0 4 : 203 : 7 4  : 1
+O: 0 4 : 201 : 7 4  : 1
+O: 0 4 : 235 : 7 2  : 1
+O: 0 4 : 234 : 7 2  : 1
+O: 0 4 : 233 : 7 2  : 1
+O: 0 4 : 232 : 7 2  : 1
+O: 0 4 : 221 : 7 1  : 1
+O: 0 4 : 220 : 7 1  : 1
+O: 0 4 : 217 : 7 1  : 1
+O: 0 4 : 216 : 7 1  : 1
+O: 0 4 : 206 : 7 0  : 1
+O: 0 4 : 204 : 7 0  : 1
+O: 0 4 : 202 : 7 0  : 1
+O: 0 4 : 200 : 7 0  : 1
+O: 0 4 : 191 : 6 7  : 1
+O: 0 4 : 190 : 6 7  : 1
+O: 0 4 : 189 : 6 7  : 1
+O: 0 4 : 188 : 6 7  : 1
+O: 0 4 : 175 : 6 6  : 1
+O: 0 4 : 174 : 6 6  : 1
+O: 0 4 : 173 : 6 6  : 1
+O: 0 4 : 172 : 6 6  : 1
+O: 0 4 : 167 : 6 6  : 1
+O: 0 4 : 166 : 6 6  : 1
+O: 0 4 : 165 : 6 6  : 1
+O: 0 4 : 164 : 6 6  : 1
+O: 0 4 : 159 : 6 5  : 1
+O: 0 4 : 158 : 6 5  : 1
+O: 0 4 : 151 : 6 5  : 1
+O: 0 4 : 150 : 6 5  : 1
+O: 0 4 : 143 : 6 4  : 1
+O: 0 4 : 141 : 6 4  : 1
+O: 0 4 : 135 : 6 4  : 1
+O: 0 4 : 133 : 6 4  : 1
+O: 0 4 : 183 : 6 3  : 1
+O: 0 4 : 182 : 6 3  : 1
+O: 0 4 : 181 : 6 3  : 1
+O: 0 4 : 180 : 6 3  : 1
+O: 0 4 : 157 : 6 1  : 1
+O: 0 4 : 156 : 6 1  : 1
+O: 0 4 : 149 : 6 1  : 1
+O: 0 4 : 148 : 6 1  : 1
+O: 0 4 : 142 : 6 0  : 1
+O: 0 4 : 140 : 6 0  : 1
+O: 0 4 : 134 : 6 0  : 1
+O: 0 4 : 132 : 6 0  : 1
+O: 0 4 : 127 : 5 7  : 1
+O: 0 4 : 126 : 5 7  : 1
+O: 0 4 : 123 : 5 7  : 1
+O: 0 4 : 122 : 5 7  : 1
+O: 0 4 : 111 : 5 6  : 1
+O: 0 4 : 110 : 5 6  : 1
+O: 0 4 : 103 : 5 6  : 1
+O: 0 4 : 102 : 5 6  : 1
+O: 0 4 : 95 : 5 5  : 1
+O: 0 4 : 94 : 5 5  : 1
+O: 0 4 : 91 : 5 5  : 1
+O: 0 4 : 90 : 5 5  : 1
+O: 0 4 : 87 : 5 5  : 1
+O: 0 4 : 86 : 5 5  : 1
+O: 0 4 : 83 : 5 5  : 1
+O: 0 4 : 82 : 5 5  : 1
+O: 0 4 : 79 : 5 4  : 1
+O: 0 4 : 75 : 5 4  : 1
+O: 0 4 : 71 : 5 4  : 1
+O: 0 4 : 67 : 5 4  : 1
+O: 0 4 : 119 : 5 3  : 1
+O: 0 4 : 118 : 5 3  : 1
+O: 0 4 : 115 : 5 3  : 1
+O: 0 4 : 114 : 5 3  : 1
+O: 0 4 : 107 : 5 2  : 1
+O: 0 4 : 106 : 5 2  : 1
+O: 0 4 : 169 : 2 2  : 1
+O: 0 4 : 2 : 0 0  : 1
+O: 0 4 : 161 : 2 2  : 1
+O: 0 4 : 153 : 2 1  : 1
+O: 0 4 : 145 : 2 1  : 1
+O: 0 4 : 138 : 2 0  : 1
+O: 0 4 : 136 : 2 0  : 1
+O: 0 4 : 130 : 2 0  : 1
+O: 0 4 : 128 : 2 0  : 1
+O: 0 4 : 124 : 1 7  : 1
+O: 0 4 : 120 : 1 7  : 1
+O: 0 4 : 108 : 1 6  : 1
+O: 0 4 : 100 : 1 6  : 1
+O: 0 4 : 77 : 1 4  : 1
+O: 0 4 : 244 : 3 3  : 1
+O: 0 4 : 152 : 2 1  : 1
+O: 0 4 : 73 : 1 4  : 1
+O: 0 4 : 240 : 3 3  : 1
+O: 0 4 : 69 : 1 4  : 1
+O: 0 4 : 144 : 2 1  : 1
+O: 0 4 : 65 : 1 4  : 1
+O: 0 4 : 116 : 1 3  : 1
+O: 0 4 : 112 : 1 3  : 1
+O: 0 4 : 104 : 1 2  : 1
+O: 0 4 : 96 : 1 2  : 1
+O: 0 4 : 92 : 1 1  : 1
+O: 0 4 : 88 : 1 1  : 1
+O: 0 4 : 163 : 2 2  : 1
+O: 0 4 : 84 : 1 1  : 1
+O: 0 4 : 80 : 1 1  : 1
+O: 0 4 : 247 : 3 3  : 1
+O: 0 4 : 32 : 0 2  : 1
+O: 0 4 : 199 : 3 4  : 1
+O: 0 4 : 28 : 0 1  : 1
+O: 0 4 : 195 : 3 4  : 1
+O: 0 4 : 24 : 0 1  : 1
+O: 0 4 : 20 : 0 1  : 1
+O: 0 4 : 187 : 2 7  : 1
+O: 0 4 : 16 : 0 1  : 1
+O: 0 4 : 93 : 1 1  : 1
+O: 0 4 : 14 : 0 0  : 1
+O: 0 4 : 12 : 0 0  : 1
+O: 0 4 : 179 : 2 3  : 1
+O: 0 4 : 160 : 2 2  : 1
+O: 0 4 : 81 : 1 1  : 1
+O: 0 4 : 76 : 1 0  : 1
+O: 0 4 : 243 : 3 3  : 1
+O: 0 4 : 113 : 1 3  : 1
+O: 0 4 : 34 : 0 2  : 1
+O: 0 4 : 0 : 0 0  : 1
+O: 0 4 : 162 : 2 2  : 1
+O: 0 4 : 4 : 0 0  : 1
+O: 0 4 : 171 : 2 2  : 1
+O: 0 4 : 40 : 0 2  : 1
+O: 0 4 : 85 : 1 1  : 1
+O: 0 4 : 6 : 0 0  : 1
+O: 0 4 : 121 : 1 7  : 1
+O: 0 4 : 42 : 0 2  : 1
+O: 0 4 : 209 : 3 1  : 1
+O: 0 4 : 8 : 0 0  : 1
+O: 0 4 : 168 : 2 2  : 1
+O: 0 4 : 1 : 4 4  : 1
+O: 0 4 : 89 : 1 1  : 1
+O: 0 4 : 10 : 0 0  : 1
+O: 0 4 : 177 : 2 3  : 1
+O: 0 4 : 48 : 0 3  : 1
+O: 0 4 : 215 : 3 5  : 1
+O: 0 4 : 50 : 0 3  : 1
+O: 0 4 : 52 : 0 3  : 1
+O: 0 4 : 54 : 0 3  : 1
+O: 0 4 : 97 : 1 2  : 1
+O: 0 4 : 18 : 0 5  : 1
+O: 0 4 : 185 : 2 7  : 1
+O: 0 4 : 101 : 1 6  : 1
+O: 0 4 : 22 : 0 5  : 1
+O: 0 4 : 105 : 1 2  : 1
+O: 0 4 : 26 : 0 5  : 1
+O: 0 4 : 193 : 3 4  : 1
+O: 0 4 : 109 : 1 6  : 1
+O: 0 4 : 30 : 0 5  : 1
+O: 0 4 : 197 : 3 4  : 1
+O: 0 4 : 36 : 0 6  : 1
+O: 0 4 : 117 : 1 3  : 1
+O: 0 4 : 38 : 0 6  : 1
+O: 0 4 : 44 : 0 6  : 1
+O: 0 4 : 211 : 3 5  : 1
+O: 0 4 : 125 : 1 7  : 1
+O: 0 4 : 46 : 0 6  : 1
+O: 0 4 : 213 : 3 1  : 1
+O: 0 4 : 56 : 0 7  : 1
+O: 0 4 : 58 : 0 7  : 1
+O: 0 4 : 225 : 3 2  : 1
+O: 0 4 : 60 : 0 7  : 1
+O: 0 4 : 227 : 3 2  : 1
+O: 0 4 : 62 : 0 7  : 1
+O: 0 4 : 229 : 3 6  : 1
+O: 0 4 : 64 : 1 0  : 1
+O: 0 4 : 231 : 3 6  : 1
+O: 0 4 : 68 : 1 0  : 1
+O: 0 4 : 72 : 1 0  : 1
+O: 0 4 : 170 : 2 2  : 1
+O: 0 4 : 3 : 4 4  : 1
+O: 0 4 : 176 : 2 3  : 1
+O: 0 4 : 9 : 4 4  : 1
+O: 0 4 : 178 : 2 3  : 1
+O: 0 4 : 11 : 4 4  : 1
+O: 0 4 : 129 : 2 4  : 1
+O: 0 4 : 131 : 2 4  : 1
+O: 0 4 : 137 : 2 4  : 1
+O: 0 4 : 139 : 2 4  : 1
+O: 0 4 : 146 : 2 5  : 1
+O: 0 4 : 147 : 2 5  : 1
+O: 0 4 : 154 : 2 5  : 1
+O: 0 4 : 155 : 2 5  : 1
+O: 0 4 : 184 : 2 7  : 1
+O: 0 4 : 17 : 4 1  : 1
+O: 0 4 : 186 : 2 7  : 1
+O: 0 4 : 19 : 4 5  : 1
+O: 0 4 : 192 : 3 0  : 1
+O: 0 4 : 25 : 4 1  : 1
+O: 0 4 : 194 : 3 0  : 1
+O: 0 4 : 27 : 4 5  : 1
+O: 0 4 : 196 : 3 0  : 1
+O: 0 4 : 29 : 4 1  : 1
+O: 0 4 : 198 : 3 0  : 1
+O: 0 4 : 31 : 4 5  : 1
+O: 0 4 : 208 : 3 1  : 1
+O: 0 4 : 41 : 4 2  : 1
+O: 0 4 : 212 : 3 1  : 1
+O: 0 4 : 45 : 4 6  : 1
+O: 0 4 : 224 : 3 2  : 1
+O: 0 4 : 57 : 4 7  : 1
+O: 0 4 : 226 : 3 2  : 1
+O: 0 4 : 59 : 4 7  : 1
+O: 0 4 : 241 : 3 3  : 1
+O: 0 4 : 74 : 5 0  : 1
+O: 0 4 : 242 : 3 3  : 1
+O: 0 4 : 245 : 3 3  : 1
+O: 0 4 : 78 : 5 0  : 1
+O: 0 4 : 246 : 3 3  : 1
+O: 0 4 : 210 : 3 5  : 1
+O: 0 4 : 43 : 4 2  : 1
+O: 0 4 : 214 : 3 5  : 1
+O: 0 4 : 47 : 4 6  : 1
+O: 0 4 : 228 : 3 6  : 1
+O: 0 4 : 61 : 4 7  : 1
+O: 0 4 : 230 : 3 6  : 1
+O: 0 4 : 63 : 4 7  : 1
+O: 0 4 : 21 : 4 1  : 1
+O: 0 4 : 33 : 4 2  : 1
+O: 0 4 : 35 : 4 2  : 1
+O: 0 4 : 49 : 4 3  : 1
+O: 0 4 : 51 : 4 3  : 1
+O: 0 4 : 53 : 4 3  : 1
+O: 0 4 : 55 : 4 3  : 1
+O: 0 4 : 5 : 4 4  : 1
+O: 0 4 : 7 : 4 4  : 1
+O: 0 4 : 13 : 4 4  : 1
+O: 0 4 : 15 : 4 4  : 1
+O: 0 4 : 23 : 4 5  : 1
+O: 0 4 : 37 : 4 6  : 1
+O: 0 4 : 39 : 4 6  : 1
+O: 0 4 : 66 : 5 0  : 1
+O: 0 4 : 70 : 5 0  : 1
+O: 0 4 : 98 : 5 2  : 1
+O: 0 4 : 99 : 5 2  : 1
+O: 0 3 : 255 : 7 7  : 1
+O: 0 3 : 254 : 7 7  : 1
+O: 0 3 : 253 : 7 7  : 1
+O: 0 3 : 252 : 7 7  : 1
+O: 0 3 : 251 : 7 7  : 1
+O: 0 3 : 250 : 7 7  : 1
+O: 0 3 : 249 : 7 7  : 1
+O: 0 3 : 248 : 7 7  : 1
+O: 0 3 : 239 : 7 6  : 1
+O: 0 3 : 238 : 7 6  : 1
+O: 0 3 : 237 : 7 6  : 1
+O: 0 3 : 236 : 7 6  : 1
+O: 0 3 : 223 : 7 5  : 1
+O: 0 3 : 222 : 7 5  : 1
+O: 0 3 : 219 : 7 5  : 1
+O: 0 3 : 218 : 7 5  : 1
+O: 0 3 : 207 : 7 4  : 1
+O: 0 3 : 205 : 7 4  : 1
+O: 0 3 : 203 : 7 4  : 1
+O: 0 3 : 201 : 7 4  : 1
+O: 0 3 : 235 : 7 2  : 1
+O: 0 3 : 234 : 7 2  : 1
+O: 0 3 : 233 : 7 2  : 1
+O: 0 3 : 232 : 7 2  : 1
+O: 0 3 : 221 : 7 1  : 1
+O: 0 3 : 220 : 7 1  : 1
+O: 0 3 : 217 : 7 1  : 1
+O: 0 3 : 216 : 7 1  : 1
+O: 0 3 : 206 : 7 0  : 1
+O: 0 3 : 204 : 7 0  : 1
+O: 0 3 : 202 : 7 0  : 1
+O: 0 3 : 200 : 7 0  : 1
+O: 0 3 : 191 : 6 7  : 1
+O: 0 3 : 190 : 6 7  : 1
+O: 0 3 : 189 : 6 7  : 1
+O: 0 3 : 188 : 6 7  : 1
+O: 0 3 : 175 : 6 6  : 1
+O: 0 3 : 174 : 6 6  : 1
+O: 0 3 : 173 : 6 6  : 1
+O: 0 3 : 172 : 6 6  : 1
+O: 0 3 : 167 : 6 6  : 1
+O: 0 3 : 166 : 6 6  : 1
+O: 0 3 : 165 : 6 6  : 1
+O: 0 3 : 164 : 6 6  : 1
+O: 0 3 : 159 : 6 5  : 1
+O: 0 3 : 158 : 6 5  : 1
+O: 0 3 : 151 : 6 5  : 1
+O: 0 3 : 150 : 6 5  : 1
+O: 0 3 : 143 : 6 4  : 1
+O: 0 3 : 141 : 6 4  : 1
+O: 0 3 : 135 : 6 4  : 1
+O: 0 3 : 133 : 6 4  : 1
+O: 0 3 : 183 : 6 3  : 1
+O: 0 3 : 182 : 6 3  : 1
+O: 0 3 : 181 : 6 3  : 1
+O: 0 3 : 180 : 6 3  : 1
+O: 0 3 : 157 : 6 1  : 1
+O: 0 3 : 156 : 6 1  : 1
+O: 0 3 : 149 : 6 1  : 1
+O: 0 3 : 148 : 6 1  : 1
+O: 0 3 : 142 : 6 0  : 1
+O: 0 3 : 140 : 6 0  : 1
+O: 0 3 : 134 : 6 0  : 1
+O: 0 3 : 132 : 6 0  : 1
+O: 0 3 : 127 : 5 7  : 1
+O: 0 3 : 126 : 5 7  : 1
+O: 0 3 : 123 : 5 7  : 1
+O: 0 3 : 122 : 5 7  : 1
+O: 0 3 : 111 : 5 6  : 1
+O: 0 3 : 110 : 5 6  : 1
+O: 0 3 : 103 : 5 6  : 1
+O: 0 3 : 102 : 5 6  : 1
+O: 0 3 : 95 : 5 5  : 1
+O: 0 3 : 94 : 5 5  : 1
+O: 0 3 : 91 : 5 5  : 1
+O: 0 3 : 90 : 5 5  : 1
+O: 0 3 : 87 : 5 5  : 1
+O: 0 3 : 86 : 5 5  : 1
+O: 0 3 : 83 : 5 5  : 1
+O: 0 3 : 82 : 5 5  : 1
+O: 0 3 : 79 : 5 4  : 1
+O: 0 3 : 75 : 5 4  : 1
+O: 0 3 : 71 : 5 4  : 1
+O: 0 3 : 67 : 5 4  : 1
+O: 0 3 : 119 : 5 3  : 1
+O: 0 3 : 118 : 5 3  : 1
+O: 0 3 : 115 : 5 3  : 1
+O: 0 3 : 114 : 5 3  : 1
+O: 0 3 : 107 : 5 2  : 1
+O: 0 3 : 106 : 5 2  : 1
+O: 0 3 : 169 : 2 2  : 1
+O: 0 3 : 2 : 0 0  : 1
+O: 0 3 : 161 : 2 2  : 1
+O: 0 3 : 153 : 2 1  : 1
+O: 0 3 : 145 : 2 1  : 1
+O: 0 3 : 138 : 2 0  : 1
+O: 0 3 : 136 : 2 0  : 1
+O: 0 3 : 130 : 2 0  : 1
+O: 0 3 : 128 : 2 0  : 1
+O: 0 3 : 124 : 1 7  : 1
+O: 0 3 : 120 : 1 7  : 1
+O: 0 3 : 108 : 1 6  : 1
+O: 0 3 : 100 : 1 6  : 1
+O: 0 3 : 77 : 1 4  : 1
+O: 0 3 : 244 : 3 3  : 1
+O: 0 3 : 152 : 2 1  : 1
+O: 0 3 : 73 : 1 4  : 1
+O: 0 3 : 240 : 3 3  : 1
+O: 0 3 : 69 : 1 4  : 1
+O: 0 3 : 144 : 2 1  : 1
+O: 0 3 : 65 : 1 4  : 1
+O: 0 3 : 116 : 1 3  : 1
+O: 0 3 : 112 : 1 3  : 1
+O: 0 3 : 104 : 1 2  : 1
+O: 0 3 : 96 : 1 2  : 1
+O: 0 3 : 92 : 1 1  : 1
+O: 0 3 : 88 : 1 1  : 1
+O: 0 3 : 163 : 2 2  : 1
+O: 0 3 : 84 : 1 1  : 1
+O: 0 3 : 80 : 1 1  : 1
+O: 0 3 : 247 : 3 3  : 1
+O: 0 3 : 32 : 0 2  : 1
+O: 0 3 : 199 : 3 4  : 1
+O: 0 3 : 28 : 0 1  : 1
+O: 0 3 : 195 : 3 4  : 1
+O: 0 3 : 24 : 0 1  : 1
+O: 0 3 : 20 : 0 1  : 1
+O: 0 3 : 187 : 2 7  : 1
+O: 0 3 : 16 : 0 1  : 1
+O: 0 3 : 93 : 1 1  : 1
+O: 0 3 : 14 : 0 0  : 1
+O: 0 3 : 12 : 0 0  : 1
+O: 0 3 : 179 : 2 3  : 1
+O: 0 3 : 160 : 2 2  : 1
+O: 0 3 : 81 : 1 1  : 1
+O: 0 3 : 76 : 1 0  : 1
+O: 0 3 : 243 : 3 3  : 1
+O: 0 3 : 113 : 1 3  : 1
+O: 0 3 : 34 : 0 2  : 1
+O: 0 3 : 0 : 0 0  : 1
+O: 0 3 : 162 : 2 2  : 1
+O: 0 3 : 4 : 0 0  : 1
+O: 0 3 : 171 : 2 2  : 1
+O: 0 3 : 40 : 0 2  : 1
+O: 0 3 : 85 : 1 1  : 1
+O: 0 3 : 6 : 0 0  : 1
+O: 0 3 : 121 : 1 7  : 1
+O: 0 3 : 42 : 0 2  : 1
+O: 0 3 : 209 : 3 1  : 1
+O: 0 3 : 8 : 0 0  : 1
+O: 0 3 : 168 : 2 2  : 1
+O: 0 3 : 1 : 4 4  : 1
+O: 0 3 : 89 : 1 1  : 1
+O: 0 3 : 10 : 0 0  : 1
+O: 0 3 : 177 : 2 3  : 1
+O: 0 3 : 48 : 0 3  : 1
+O: 0 3 : 215 : 3 5  : 1
+O: 0 3 : 50 : 0 3  : 1
+O: 0 3 : 52 : 0 3  : 1
+O: 0 3 : 54 : 0 3  : 1
+O: 0 3 : 97 : 1 2  : 1
+O: 0 3 : 18 : 0 5  : 1
+O: 0 3 : 185 : 2 7  : 1
+O: 0 3 : 101 : 1 6  : 1
+O: 0 3 : 22 : 0 5  : 1
+O: 0 3 : 105 : 1 2  : 1
+O: 0 3 : 26 : 0 5  : 1
+O: 0 3 : 193 : 3 4  : 1
+O: 0 3 : 109 : 1 6  : 1
+O: 0 3 : 30 : 0 5  : 1
+O: 0 3 : 197 : 3 4  : 1
+O: 0 3 : 36 : 0 6  : 1
+O: 0 3 : 117 : 1 3  : 1
+O: 0 3 : 38 : 0 6  : 1
+O: 0 3 : 44 : 0 6  : 1
+O: 0 3 : 211 : 3 5  : 1
+O: 0 3 : 125 : 1 7  : 1
+O: 0 3 : 46 : 0 6  : 1
+O: 0 3 : 213 : 3 1  : 1
+O: 0 3 : 56 : 0 7  : 1
+O: 0 3 : 58 : 0 7  : 1
+O: 0 3 : 225 : 3 2  : 1
+O: 0 3 : 60 : 0 7  : 1
+O: 0 3 : 227 : 3 2  : 1
+O: 0 3 : 62 : 0 7  : 1
+O: 0 3 : 229 : 3 6  : 1
+O: 0 3 : 64 : 1 0  : 1
+O: 0 3 : 231 : 3 6  : 1
+O: 0 3 : 68 : 1 0  : 1
+O: 0 3 : 72 : 1 0  : 1
+O: 0 3 : 170 : 2 2  : 1
+O: 0 3 : 3 : 4 4  : 1
+O: 0 3 : 176 : 2 3  : 1
+O: 0 3 : 9 : 4 4  : 1
+O: 0 3 : 178 : 2 3  : 1
+O: 0 3 : 11 : 4 4  : 1
+O: 0 3 : 129 : 2 4  : 1
+O: 0 3 : 131 : 2 4  : 1
+O: 0 3 : 137 : 2 4  : 1
+O: 0 3 : 139 : 2 4  : 1
+O: 0 3 : 146 : 2 5  : 1
+O: 0 3 : 147 : 2 5  : 1
+O: 0 3 : 154 : 2 5  : 1
+O: 0 3 : 155 : 2 5  : 1
+O: 0 3 : 184 : 2 7  : 1
+O: 0 3 : 17 : 4 1  : 1
+O: 0 3 : 186 : 2 7  : 1
+O: 0 3 : 19 : 4 5  : 1
+O: 0 3 : 192 : 3 0  : 1
+O: 0 3 : 25 : 4 1  : 1
+O: 0 3 : 194 : 3 0  : 1
+O: 0 3 : 27 : 4 5  : 1
+O: 0 3 : 196 : 3 0  : 1
+O: 0 3 : 29 : 4 1  : 1
+O: 0 3 : 198 : 3 0  : 1
+O: 0 3 : 31 : 4 5  : 1
+O: 0 3 : 208 : 3 1  : 1
+O: 0 3 : 41 : 4 2  : 1
+O: 0 3 : 212 : 3 1  : 1
+O: 0 3 : 45 : 4 6  : 1
+O: 0 3 : 224 : 3 2  : 1
+O: 0 3 : 57 : 4 7  : 1
+O: 0 3 : 226 : 3 2  : 1
+O: 0 3 : 59 : 4 7  : 1
+O: 0 3 : 241 : 3 3  : 1
+O: 0 3 : 74 : 5 0  : 1
+O: 0 3 : 242 : 3 3  : 1
+O: 0 3 : 245 : 3 3  : 1
+O: 0 3 : 78 : 5 0  : 1
+O: 0 3 : 246 : 3 3  : 1
+O: 0 3 : 210 : 3 5  : 1
+O: 0 3 : 43 : 4 2  : 1
+O: 0 3 : 214 : 3 5  : 1
+O: 0 3 : 47 : 4 6  : 1
+O: 0 3 : 228 : 3 6  : 1
+O: 0 3 : 61 : 4 7  : 1
+O: 0 3 : 230 : 3 6  : 1
+O: 0 3 : 63 : 4 7  : 1
+O: 0 3 : 21 : 4 1  : 1
+O: 0 3 : 33 : 4 2  : 1
+O: 0 3 : 35 : 4 2  : 1
+O: 0 3 : 49 : 4 3  : 1
+O: 0 3 : 51 : 4 3  : 1
+O: 0 3 : 53 : 4 3  : 1
+O: 0 3 : 55 : 4 3  : 1
+O: 0 3 : 5 : 4 4  : 1
+O: 0 3 : 7 : 4 4  : 1
+O: 0 3 : 13 : 4 4  : 1
+O: 0 3 : 15 : 4 4  : 1
+O: 0 3 : 23 : 4 5  : 1
+O: 0 3 : 37 : 4 6  : 1
+O: 0 3 : 39 : 4 6  : 1
+O: 0 3 : 66 : 5 0  : 1
+O: 0 3 : 70 : 5 0  : 1
+O: 0 3 : 98 : 5 2  : 1
+O: 0 3 : 99 : 5 2  : 1
+O: 0 2 : 255 : 7 7  : 1
+O: 0 2 : 254 : 7 7  : 1
+O: 0 2 : 253 : 7 7  : 1
+O: 0 2 : 252 : 7 7  : 1
+O: 0 2 : 251 : 7 7  : 1
+O: 0 2 : 250 : 7 7  : 1
+O: 0 2 : 249 : 7 7  : 1
+O: 0 2 : 248 : 7 7  : 1
+O: 0 2 : 239 : 7 6  : 1
+O: 0 2 : 238 : 7 6  : 1
+O: 0 2 : 237 : 7 6  : 1
+O: 0 2 : 236 : 7 6  : 1
+O: 0 2 : 223 : 7 5  : 1
+O: 0 2 : 222 : 7 5  : 1
+O: 0 2 : 219 : 7 5  : 1
+O: 0 2 : 218 : 7 5  : 1
+O: 0 2 : 207 : 7 4  : 1
+O: 0 2 : 205 : 7 4  : 1
+O: 0 2 : 203 : 7 4  : 1
+O: 0 2 : 201 : 7 4  : 1
+O: 0 2 : 235 : 7 2  : 1
+O: 0 2 : 234 : 7 2  : 1
+O: 0 2 : 233 : 7 2  : 1
+O: 0 2 : 232 : 7 2  : 1
+O: 0 2 : 221 : 7 1  : 1
+O: 0 2 : 220 : 7 1  : 1
+O: 0 2 : 217 : 7 1  : 1
+O: 0 2 : 216 : 7 1  : 1
+O: 0 2 : 206 : 7 0  : 1
+O: 0 2 : 204 : 7 0  : 1
+O: 0 2 : 202 : 7 0  : 1
+O: 0 2 : 200 : 7 0  : 1
+O: 0 2 : 191 : 6 7  : 1
+O: 0 2 : 190 : 6 7  : 1
+O: 0 2 : 189 : 6 7  : 1
+O: 0 2 : 188 : 6 7  : 1
+O: 0 2 : 175 : 6 6  : 1
+O: 0 2 : 174 : 6 6  : 1
+O: 0 2 : 173 : 6 6  : 1
+O: 0 2 : 172 : 6 6  : 1
+O: 0 2 : 167 : 6 6  : 1
+O: 0 2 : 166 : 6 6  : 1
+O: 0 2 : 165 : 6 6  : 1
+O: 0 2 : 164 : 6 6  : 1
+O: 0 2 : 159 : 6 5  : 1
+O: 0 2 : 158 : 6 5  : 1
+O: 0 2 : 151 : 6 5  : 1
+O: 0 2 : 150 : 6 5  : 1
+O: 0 2 : 143 : 6 4  : 1
+O: 0 2 : 141 : 6 4  : 1
+O: 0 2 : 135 : 6 4  : 1
+O: 0 2 : 133 : 6 4  : 1
+O: 0 2 : 183 : 6 3  : 1
+O: 0 2 : 182 : 6 3  : 1
+O: 0 2 : 181 : 6 3  : 1
+O: 0 2 : 180 : 6 3  : 1
+O: 0 2 : 157 : 6 1  : 1
+O: 0 2 : 156 : 6 1  : 1
+O: 0 2 : 149 : 6 1  : 1
+O: 0 2 : 148 : 6 1  : 1
+O: 0 2 : 142 : 6 0  : 1
+O: 0 2 : 140 : 6 0  : 1
+O: 0 2 : 134 : 6 0  : 1
+O: 0 2 : 132 : 6 0  : 1
+O: 0 2 : 127 : 5 7  : 1
+O: 0 2 : 126 : 5 7  : 1
+O: 0 2 : 123 : 5 7  : 1
+O: 0 2 : 122 : 5 7  : 1
+O: 0 2 : 111 : 5 6  : 1
+O: 0 2 : 110 : 5 6  : 1
+O: 0 2 : 103 : 5 6  : 1
+O: 0 2 : 102 : 5 6  : 1
+O: 0 2 : 95 : 5 5  : 1
+O: 0 2 : 94 : 5 5  : 1
+O: 0 2 : 91 : 5 5  : 1
+O: 0 2 : 90 : 5 5  : 1
+O: 0 2 : 87 : 5 5  : 1
+O: 0 2 : 86 : 5 5  : 1
+O: 0 2 : 83 : 5 5  : 1
+O: 0 2 : 82 : 5 5  : 1
+O: 0 2 : 79 : 5 4  : 1
+O: 0 2 : 75 : 5 4  : 1
+O: 0 2 : 71 : 5 4  : 1
+O: 0 2 : 67 : 5 4  : 1
+O: 0 2 : 119 : 5 3  : 1
+O: 0 2 : 118 : 5 3  : 1
+O: 0 2 : 115 : 5 3  : 1
+O: 0 2 : 114 : 5 3  : 1
+O: 0 2 : 107 : 5 2  : 1
+O: 0 2 : 106 : 5 2  : 1
+O: 0 2 : 169 : 2 2  : 1
+O: 0 2 : 2 : 0 0  : 1
+O: 0 2 : 161 : 2 2  : 1
+O: 0 2 : 153 : 2 1  : 1
+O: 0 2 : 145 : 2 1  : 1
+O: 0 2 : 138 : 2 0  : 1
+O: 0 2 : 136 : 2 0  : 1
+O: 0 2 : 130 : 2 0  : 1
+O: 0 2 : 128 : 2 0  : 1
+O: 0 2 : 124 : 1 7  : 1
+O: 0 2 : 120 : 1 7  : 1
+O: 0 2 : 108 : 1 6  : 1
+O: 0 2 : 100 : 1 6  : 1
+O: 0 2 : 77 : 1 4  : 1
+O: 0 2 : 244 : 3 3  : 1
+O: 0 2 : 152 : 2 1  : 1
+O: 0 2 : 73 : 1 4  : 1
+O: 0 2 : 240 : 3 3  : 1
+O: 0 2 : 69 : 1 4  : 1
+O: 0 2 : 144 : 2 1  : 1
+O: 0 2 : 65 : 1 4  : 1
+O: 0 2 : 116 : 1 3  : 1
+O: 0 2 : 112 : 1 3  : 1
+O: 0 2 : 104 : 1 2  : 1
+O: 0 2 : 96 : 1 2  : 1
+O: 0 2 : 92 : 1 1  : 1
+O: 0 2 : 88 : 1 1  : 1
+O: 0 2 : 163 : 2 2  : 1
+O: 0 2 : 84 : 1 1  : 1
+O: 0 2 : 80 : 1 1  : 1
+O: 0 2 : 247 : 3 3  : 1
+O: 0 2 : 32 : 0 2  : 1
+O: 0 2 : 199 : 3 4  : 1
+O: 0 2 : 28 : 0 1  : 1
+O: 0 2 : 195 : 3 4  : 1
+O: 0 2 : 24 : 0 1  : 1
+O: 0 2 : 20 : 0 1  : 1
+O: 0 2 : 187 : 2 7  : 1
+O: 0 2 : 16 : 0 1  : 1
+O: 0 2 : 93 : 1 1  : 1
+O: 0 2 : 14 : 0 0  : 1
+O: 0 2 : 12 : 0 0  : 1
+O: 0 2 : 179 : 2 3  : 1
+O: 0 2 : 160 : 2 2  : 1
+O: 0 2 : 81 : 1 1  : 1
+O: 0 2 : 76 : 1 0  : 1
+O: 0 2 : 243 : 3 3  : 1
+O: 0 2 : 113 : 1 3  : 1
+O: 0 2 : 34 : 0 2  : 1
+O: 0 2 : 0 : 0 0  : 1
+O: 0 2 : 162 : 2 2  : 1
+O: 0 2 : 4 : 0 0  : 1
+O: 0 2 : 171 : 2 2  : 1
+O: 0 2 : 40 : 0 2  : 1
+O: 0 2 : 85 : 1 1  : 1
+O: 0 2 : 6 : 0 0  : 1
+O: 0 2 : 121 : 1 7  : 1
+O: 0 2 : 42 : 0 2  : 1
+O: 0 2 : 209 : 3 1  : 1
+O: 0 2 : 8 : 0 0  : 1
+O: 0 2 : 168 : 2 2  : 1
+O: 0 2 : 1 : 4 4  : 1
+O: 0 2 : 89 : 1 1  : 1
+O: 0 2 : 10 : 0 0  : 1
+O: 0 2 : 177 : 2 3  : 1
+O: 0 2 : 48 : 0 3  : 1
+O: 0 2 : 215 : 3 5  : 1
+O: 0 2 : 50 : 0 3  : 1
+O: 0 2 : 52 : 0 3  : 1
+O: 0 2 : 54 : 0 3  : 1
+O: 0 2 : 97 : 1 2  : 1
+O: 0 2 : 18 : 0 5  : 1
+O: 0 2 : 185 : 2 7  : 1
+O: 0 2 : 101 : 1 6  : 1
+O: 0 2 : 22 : 0 5  : 1
+O: 0 2 : 105 : 1 2  : 1
+O: 0 2 : 26 : 0 5  : 1
+O: 0 2 : 193 : 3 4  : 1
+O: 0 2 : 109 : 1 6  : 1
+O: 0 2 : 30 : 0 5  : 1
+O: 0 2 : 197 : 3 4  : 1
+O: 0 2 : 36 : 0 6  : 1
+O: 0 2 : 117 : 1 3  : 1
+O: 0 2 : 38 : 0 6  : 1
+O: 0 2 : 44 : 0 6  : 1
+O: 0 2 : 211 : 3 5  : 1
+O: 0 2 : 125 : 1 7  : 1
+O: 0 2 : 46 : 0 6  : 1
+O: 0 2 : 213 : 3 1  : 1
+O: 0 2 : 56 : 0 7  : 1
+O: 0 2 : 58 : 0 7  : 1
+O: 0 2 : 225 : 3 2  : 1
+O: 0 2 : 60 : 0 7  : 1
+O: 0 2 : 227 : 3 2  : 1
+O: 0 2 : 62 : 0 7  : 1
+O: 0 2 : 229 : 3 6  : 1
+O: 0 2 : 64 : 1 0  : 1
+O: 0 2 : 231 : 3 6  : 1
+O: 0 2 : 68 : 1 0  : 1
+O: 0 2 : 72 : 1 0  : 1
+O: 0 2 : 170 : 2 2  : 1
+O: 0 2 : 3 : 4 4  : 1
+O: 0 2 : 176 : 2 3  : 1
+O: 0 2 : 9 : 4 4  : 1
+O: 0 2 : 178 : 2 3  : 1
+O: 0 2 : 11 : 4 4  : 1
+O: 0 2 : 129 : 2 4  : 1
+O: 0 2 : 131 : 2 4  : 1
+O: 0 2 : 137 : 2 4  : 1
+O: 0 2 : 139 : 2 4  : 1
+O: 0 2 : 146 : 2 5  : 1
+O: 0 2 : 147 : 2 5  : 1
+O: 0 2 : 154 : 2 5  : 1
+O: 0 2 : 155 : 2 5  : 1
+O: 0 2 : 184 : 2 7  : 1
+O: 0 2 : 17 : 4 1  : 1
+O: 0 2 : 186 : 2 7  : 1
+O: 0 2 : 19 : 4 5  : 1
+O: 0 2 : 192 : 3 0  : 1
+O: 0 2 : 25 : 4 1  : 1
+O: 0 2 : 194 : 3 0  : 1
+O: 0 2 : 27 : 4 5  : 1
+O: 0 2 : 196 : 3 0  : 1
+O: 0 2 : 29 : 4 1  : 1
+O: 0 2 : 198 : 3 0  : 1
+O: 0 2 : 31 : 4 5  : 1
+O: 0 2 : 208 : 3 1  : 1
+O: 0 2 : 41 : 4 2  : 1
+O: 0 2 : 212 : 3 1  : 1
+O: 0 2 : 45 : 4 6  : 1
+O: 0 2 : 224 : 3 2  : 1
+O: 0 2 : 57 : 4 7  : 1
+O: 0 2 : 226 : 3 2  : 1
+O: 0 2 : 59 : 4 7  : 1
+O: 0 2 : 241 : 3 3  : 1
+O: 0 2 : 74 : 5 0  : 1
+O: 0 2 : 242 : 3 3  : 1
+O: 0 2 : 245 : 3 3  : 1
+O: 0 2 : 78 : 5 0  : 1
+O: 0 2 : 246 : 3 3  : 1
+O: 0 2 : 210 : 3 5  : 1
+O: 0 2 : 43 : 4 2  : 1
+O: 0 2 : 214 : 3 5  : 1
+O: 0 2 : 47 : 4 6  : 1
+O: 0 2 : 228 : 3 6  : 1
+O: 0 2 : 61 : 4 7  : 1
+O: 0 2 : 230 : 3 6  : 1
+O: 0 2 : 63 : 4 7  : 1
+O: 0 2 : 21 : 4 1  : 1
+O: 0 2 : 33 : 4 2  : 1
+O: 0 2 : 35 : 4 2  : 1
+O: 0 2 : 49 : 4 3  : 1
+O: 0 2 : 51 : 4 3  : 1
+O: 0 2 : 53 : 4 3  : 1
+O: 0 2 : 55 : 4 3  : 1
+O: 0 2 : 5 : 4 4  : 1
+O: 0 2 : 7 : 4 4  : 1
+O: 0 2 : 13 : 4 4  : 1
+O: 0 2 : 15 : 4 4  : 1
+O: 0 2 : 23 : 4 5  : 1
+O: 0 2 : 37 : 4 6  : 1
+O: 0 2 : 39 : 4 6  : 1
+O: 0 2 : 66 : 5 0  : 1
+O: 0 2 : 70 : 5 0  : 1
+O: 0 2 : 98 : 5 2  : 1
+O: 0 2 : 99 : 5 2  : 1
+O: 0 0 : 255 : 7 7  : 1
+O: 0 0 : 254 : 7 7  : 1
+O: 0 0 : 253 : 7 7  : 1
+O: 0 0 : 252 : 7 7  : 1
+O: 0 0 : 251 : 7 7  : 1
+O: 0 0 : 250 : 7 7  : 1
+O: 0 0 : 249 : 7 7  : 1
+O: 0 0 : 248 : 7 7  : 1
+O: 0 0 : 239 : 7 6  : 1
+O: 0 0 : 238 : 7 6  : 1
+O: 0 0 : 237 : 7 6  : 1
+O: 0 0 : 236 : 7 6  : 1
+O: 0 0 : 223 : 7 5  : 1
+O: 0 0 : 222 : 7 5  : 1
+O: 0 0 : 219 : 7 5  : 1
+O: 0 0 : 218 : 7 5  : 1
+O: 0 0 : 207 : 7 4  : 1
+O: 0 0 : 205 : 7 4  : 1
+O: 0 0 : 203 : 7 4  : 1
+O: 0 0 : 201 : 7 4  : 1
+O: 0 0 : 235 : 7 2  : 1
+O: 0 0 : 234 : 7 2  : 1
+O: 0 0 : 233 : 7 2  : 1
+O: 0 0 : 232 : 7 2  : 1
+O: 0 0 : 221 : 7 1  : 1
+O: 0 0 : 220 : 7 1  : 1
+O: 0 0 : 217 : 7 1  : 1
+O: 0 0 : 216 : 7 1  : 1
+O: 0 0 : 206 : 7 0  : 1
+O: 0 0 : 204 : 7 0  : 1
+O: 0 0 : 202 : 7 0  : 1
+O: 0 0 : 200 : 7 0  : 1
+O: 0 0 : 191 : 6 7  : 1
+O: 0 0 : 190 : 6 7  : 1
+O: 0 0 : 189 : 6 7  : 1
+O: 0 0 : 188 : 6 7  : 1
+O: 0 0 : 175 : 6 6  : 1
+O: 0 0 : 174 : 6 6  : 1
+O: 0 0 : 173 : 6 6  : 1
+O: 0 0 : 172 : 6 6  : 1
+O: 0 0 : 167 : 6 6  : 1
+O: 0 0 : 166 : 6 6  : 1
+O: 0 0 : 165 : 6 6  : 1
+O: 0 0 : 164 : 6 6  : 1
+O: 0 0 : 159 : 6 5  : 1
+O: 0 0 : 158 : 6 5  : 1
+O: 0 0 : 151 : 6 5  : 1
+O: 0 0 : 150 : 6 5  : 1
+O: 0 0 : 143 : 6 4  : 1
+O: 0 0 : 141 : 6 4  : 1
+O: 0 0 : 135 : 6 4  : 1
+O: 0 0 : 133 : 6 4  : 1
+O: 0 0 : 183 : 6 3  : 1
+O: 0 0 : 182 : 6 3  : 1
+O: 0 0 : 181 : 6 3  : 1
+O: 0 0 : 180 : 6 3  : 1
+O: 0 0 : 157 : 6 1  : 1
+O: 0 0 : 156 : 6 1  : 1
+O: 0 0 : 149 : 6 1  : 1
+O: 0 0 : 148 : 6 1  : 1
+O: 0 0 : 142 : 6 0  : 1
+O: 0 0 : 140 : 6 0  : 1
+O: 0 0 : 134 : 6 0  : 1
+O: 0 0 : 132 : 6 0  : 1
+O: 0 0 : 127 : 5 7  : 1
+O: 0 0 : 126 : 5 7  : 1
+O: 0 0 : 123 : 5 7  : 1
+O: 0 0 : 122 : 5 7  : 1
+O: 0 0 : 111 : 5 6  : 1
+O: 0 0 : 110 : 5 6  : 1
+O: 0 0 : 103 : 5 6  : 1
+O: 0 0 : 102 : 5 6  : 1
+O: 0 0 : 95 : 5 5  : 1
+O: 0 0 : 94 : 5 5  : 1
+O: 0 0 : 91 : 5 5  : 1
+O: 0 0 : 90 : 5 5  : 1
+O: 0 0 : 87 : 5 5  : 1
+O: 0 0 : 86 : 5 5  : 1
+O: 0 0 : 83 : 5 5  : 1
+O: 0 0 : 82 : 5 5  : 1
+O: 0 0 : 79 : 5 4  : 1
+O: 0 0 : 75 : 5 4  : 1
+O: 0 0 : 71 : 5 4  : 1
+O: 0 0 : 67 : 5 4  : 1
+O: 0 0 : 119 : 5 3  : 1
+O: 0 0 : 118 : 5 3  : 1
+O: 0 0 : 115 : 5 3  : 1
+O: 0 0 : 114 : 5 3  : 1
+O: 0 0 : 107 : 5 2  : 1
+O: 0 0 : 106 : 5 2  : 1
+O: 0 0 : 169 : 2 2  : 1
+O: 0 0 : 2 : 0 0  : 1
+O: 0 0 : 161 : 2 2  : 1
+O: 0 0 : 153 : 2 1  : 1
+O: 0 0 : 145 : 2 1  : 1
+O: 0 0 : 138 : 2 0  : 1
+O: 0 0 : 136 : 2 0  : 1
+O: 0 0 : 130 : 2 0  : 1
+O: 0 0 : 128 : 2 0  : 1
+O: 0 0 : 124 : 1 7  : 1
+O: 0 0 : 120 : 1 7  : 1
+O: 0 0 : 108 : 1 6  : 1
+O: 0 0 : 100 : 1 6  : 1
+O: 0 0 : 77 : 1 4  : 1
+O: 0 0 : 244 : 3 3  : 1
+O: 0 0 : 152 : 2 1  : 1
+O: 0 0 : 73 : 1 4  : 1
+O: 0 0 : 240 : 3 3  : 1
+O: 0 0 : 69 : 1 4  : 1
+O: 0 0 : 144 : 2 1  : 1
+O: 0 0 : 65 : 1 4  : 1
+O: 0 0 : 116 : 1 3  : 1
+O: 0 0 : 112 : 1 3  : 1
+O: 0 0 : 104 : 1 2  : 1
+O: 0 0 : 96 : 1 2  : 1
+O: 0 0 : 92 : 1 1  : 1
+O: 0 0 : 88 : 1 1  : 1
+O: 0 0 : 163 : 2 2  : 1
+O: 0 0 : 84 : 1 1  : 1
+O: 0 0 : 80 : 1 1  : 1
+O: 0 0 : 247 : 3 3  : 1
+O: 0 0 : 32 : 0 2  : 1
+O: 0 0 : 199 : 3 4  : 1
+O: 0 0 : 28 : 0 1  : 1
+O: 0 0 : 195 : 3 4  : 1
+O: 0 0 : 24 : 0 1  : 1
+O: 0 0 : 20 : 0 1  : 1
+O: 0 0 : 187 : 2 7  : 1
+O: 0 0 : 16 : 0 1  : 1
+O: 0 0 : 93 : 1 1  : 1
+O: 0 0 : 14 : 0 0  : 1
+O: 0 0 : 12 : 0 0  : 1
+O: 0 0 : 179 : 2 3  : 1
+O: 0 0 : 160 : 2 2  : 1
+O: 0 0 : 81 : 1 1  : 1
+O: 0 0 : 76 : 1 0  : 1
+O: 0 0 : 243 : 3 3  : 1
+O: 0 0 : 113 : 1 3  : 1
+O: 0 0 : 34 : 0 2  : 1
+O: 0 0 : 0 : 0 0  : 1
+O: 0 0 : 162 : 2 2  : 1
+O: 0 0 : 4 : 0 0  : 1
+O: 0 0 : 171 : 2 2  : 1
+O: 0 0 : 40 : 0 2  : 1
+O: 0 0 : 85 : 1 1  : 1
+O: 0 0 : 6 : 0 0  : 1
+O: 0 0 : 121 : 1 7  : 1
+O: 0 0 : 42 : 0 2  : 1
+O: 0 0 : 209 : 3 1  : 1
+O: 0 0 : 8 : 0 0  : 1
+O: 0 0 : 168 : 2 2  : 1
+O: 0 0 : 1 : 4 4  : 1
+O: 0 0 : 89 : 1 1  : 1
+O: 0 0 : 10 : 0 0  : 1
+O: 0 0 : 177 : 2 3  : 1
+O: 0 0 : 48 : 0 3  : 1
+O: 0 0 : 215 : 3 5  : 1
+O: 0 0 : 50 : 0 3  : 1
+O: 0 0 : 52 : 0 3  : 1
+O: 0 0 : 54 : 0 3  : 1
+O: 0 0 : 97 : 1 2  : 1
+O: 0 0 : 18 : 0 5  : 1
+O: 0 0 : 185 : 2 7  : 1
+O: 0 0 : 101 : 1 6  : 1
+O: 0 0 : 22 : 0 5  : 1
+O: 0 0 : 105 : 1 2  : 1
+O: 0 0 : 26 : 0 5  : 1
+O: 0 0 : 193 : 3 4  : 1
+O: 0 0 : 109 : 1 6  : 1
+O: 0 0 : 30 : 0 5  : 1
+O: 0 0 : 197 : 3 4  : 1
+O: 0 0 : 36 : 0 6  : 1
+O: 0 0 : 117 : 1 3  : 1
+O: 0 0 : 38 : 0 6  : 1
+O: 0 0 : 44 : 0 6  : 1
+O: 0 0 : 211 : 3 5  : 1
+O: 0 0 : 125 : 1 7  : 1
+O: 0 0 : 46 : 0 6  : 1
+O: 0 0 : 213 : 3 1  : 1
+O: 0 0 : 56 : 0 7  : 1
+O: 0 0 : 58 : 0 7  : 1
+O: 0 0 : 225 : 3 2  : 1
+O: 0 0 : 60 : 0 7  : 1
+O: 0 0 : 227 : 3 2  : 1
+O: 0 0 : 62 : 0 7  : 1
+O: 0 0 : 229 : 3 6  : 1
+O: 0 0 : 64 : 1 0  : 1
+O: 0 0 : 231 : 3 6  : 1
+O: 0 0 : 68 : 1 0  : 1
+O: 0 0 : 72 : 1 0  : 1
+O: 0 0 : 170 : 2 2  : 1
+O: 0 0 : 3 : 4 4  : 1
+O: 0 0 : 176 : 2 3  : 1
+O: 0 0 : 9 : 4 4  : 1
+O: 0 0 : 178 : 2 3  : 1
+O: 0 0 : 11 : 4 4  : 1
+O: 0 0 : 129 : 2 4  : 1
+O: 0 0 : 131 : 2 4  : 1
+O: 0 0 : 137 : 2 4  : 1
+O: 0 0 : 139 : 2 4  : 1
+O: 0 0 : 146 : 2 5  : 1
+O: 0 0 : 147 : 2 5  : 1
+O: 0 0 : 154 : 2 5  : 1
+O: 0 0 : 155 : 2 5  : 1
+O: 0 0 : 184 : 2 7  : 1
+O: 0 0 : 17 : 4 1  : 1
+O: 0 0 : 186 : 2 7  : 1
+O: 0 0 : 19 : 4 5  : 1
+O: 0 0 : 192 : 3 0  : 1
+O: 0 0 : 25 : 4 1  : 1
+O: 0 0 : 194 : 3 0  : 1
+O: 0 0 : 27 : 4 5  : 1
+O: 0 0 : 196 : 3 0  : 1
+O: 0 0 : 29 : 4 1  : 1
+O: 0 0 : 198 : 3 0  : 1
+O: 0 0 : 31 : 4 5  : 1
+O: 0 0 : 208 : 3 1  : 1
+O: 0 0 : 41 : 4 2  : 1
+O: 0 0 : 212 : 3 1  : 1
+O: 0 0 : 45 : 4 6  : 1
+O: 0 0 : 224 : 3 2  : 1
+O: 0 0 : 57 : 4 7  : 1
+O: 0 0 : 226 : 3 2  : 1
+O: 0 0 : 59 : 4 7  : 1
+O: 0 0 : 241 : 3 3  : 1
+O: 0 0 : 74 : 5 0  : 1
+O: 0 0 : 242 : 3 3  : 1
+O: 0 0 : 245 : 3 3  : 1
+O: 0 0 : 78 : 5 0  : 1
+O: 0 0 : 246 : 3 3  : 1
+O: 0 0 : 210 : 3 5  : 1
+O: 0 0 : 43 : 4 2  : 1
+O: 0 0 : 214 : 3 5  : 1
+O: 0 0 : 47 : 4 6  : 1
+O: 0 0 : 228 : 3 6  : 1
+O: 0 0 : 61 : 4 7  : 1
+O: 0 0 : 230 : 3 6  : 1
+O: 0 0 : 63 : 4 7  : 1
+O: 0 0 : 21 : 4 1  : 1
+O: 0 0 : 33 : 4 2  : 1
+O: 0 0 : 35 : 4 2  : 1
+O: 0 0 : 49 : 4 3  : 1
+O: 0 0 : 51 : 4 3  : 1
+O: 0 0 : 53 : 4 3  : 1
+O: 0 0 : 55 : 4 3  : 1
+O: 0 0 : 5 : 4 4  : 1
+O: 0 0 : 7 : 4 4  : 1
+O: 0 0 : 13 : 4 4  : 1
+O: 0 0 : 15 : 4 4  : 1
+O: 0 0 : 23 : 4 5  : 1
+O: 0 0 : 37 : 4 6  : 1
+O: 0 0 : 39 : 4 6  : 1
+O: 0 0 : 66 : 5 0  : 1
+O: 0 0 : 70 : 5 0  : 1
+O: 0 0 : 98 : 5 2  : 1
+O: 0 0 : 99 : 5 2  : 1
+O: 0 1 : 255 : 7 7  : 1
+O: 0 1 : 254 : 7 7  : 1
+O: 0 1 : 253 : 7 7  : 1
+O: 0 1 : 252 : 7 7  : 1
+O: 0 1 : 251 : 7 7  : 1
+O: 0 1 : 250 : 7 7  : 1
+O: 0 1 : 249 : 7 7  : 1
+O: 0 1 : 248 : 7 7  : 1
+O: 0 1 : 239 : 7 6  : 1
+O: 0 1 : 238 : 7 6  : 1
+O: 0 1 : 237 : 7 6  : 1
+O: 0 1 : 236 : 7 6  : 1
+O: 0 1 : 223 : 7 5  : 1
+O: 0 1 : 222 : 7 5  : 1
+O: 0 1 : 219 : 7 5  : 1
+O: 0 1 : 218 : 7 5  : 1
+O: 0 1 : 207 : 7 4  : 1
+O: 0 1 : 205 : 7 4  : 1
+O: 0 1 : 203 : 7 4  : 1
+O: 0 1 : 201 : 7 4  : 1
+O: 0 1 : 235 : 7 2  : 1
+O: 0 1 : 234 : 7 2  : 1
+O: 0 1 : 233 : 7 2  : 1
+O: 0 1 : 232 : 7 2  : 1
+O: 0 1 : 221 : 7 1  : 1
+O: 0 1 : 220 : 7 1  : 1
+O: 0 1 : 217 : 7 1  : 1
+O: 0 1 : 216 : 7 1  : 1
+O: 0 1 : 206 : 7 0  : 1
+O: 0 1 : 204 : 7 0  : 1
+O: 0 1 : 202 : 7 0  : 1
+O: 0 1 : 200 : 7 0  : 1
+O: 0 1 : 191 : 6 7  : 1
+O: 0 1 : 190 : 6 7  : 1
+O: 0 1 : 189 : 6 7  : 1
+O: 0 1 : 188 : 6 7  : 1
+O: 0 1 : 175 : 6 6  : 1
+O: 0 1 : 174 : 6 6  : 1
+O: 0 1 : 173 : 6 6  : 1
+O: 0 1 : 172 : 6 6  : 1
+O: 0 1 : 167 : 6 6  : 1
+O: 0 1 : 166 : 6 6  : 1
+O: 0 1 : 165 : 6 6  : 1
+O: 0 1 : 164 : 6 6  : 1
+O: 0 1 : 159 : 6 5  : 1
+O: 0 1 : 158 : 6 5  : 1
+O: 0 1 : 151 : 6 5  : 1
+O: 0 1 : 150 : 6 5  : 1
+O: 0 1 : 143 : 6 4  : 1
+O: 0 1 : 141 : 6 4  : 1
+O: 0 1 : 135 : 6 4  : 1
+O: 0 1 : 133 : 6 4  : 1
+O: 0 1 : 183 : 6 3  : 1
+O: 0 1 : 182 : 6 3  : 1
+O: 0 1 : 181 : 6 3  : 1
+O: 0 1 : 180 : 6 3  : 1
+O: 0 1 : 157 : 6 1  : 1
+O: 0 1 : 156 : 6 1  : 1
+O: 0 1 : 149 : 6 1  : 1
+O: 0 1 : 148 : 6 1  : 1
+O: 0 1 : 142 : 6 0  : 1
+O: 0 1 : 140 : 6 0  : 1
+O: 0 1 : 134 : 6 0  : 1
+O: 0 1 : 132 : 6 0  : 1
+O: 0 1 : 127 : 5 7  : 1
+O: 0 1 : 126 : 5 7  : 1
+O: 0 1 : 123 : 5 7  : 1
+O: 0 1 : 122 : 5 7  : 1
+O: 0 1 : 111 : 5 6  : 1
+O: 0 1 : 110 : 5 6  : 1
+O: 0 1 : 103 : 5 6  : 1
+O: 0 1 : 102 : 5 6  : 1
+O: 0 1 : 95 : 5 5  : 1
+O: 0 1 : 94 : 5 5  : 1
+O: 0 1 : 91 : 5 5  : 1
+O: 0 1 : 90 : 5 5  : 1
+O: 0 1 : 87 : 5 5  : 1
+O: 0 1 : 86 : 5 5  : 1
+O: 0 1 : 83 : 5 5  : 1
+O: 0 1 : 82 : 5 5  : 1
+O: 0 1 : 79 : 5 4  : 1
+O: 0 1 : 75 : 5 4  : 1
+O: 0 1 : 71 : 5 4  : 1
+O: 0 1 : 67 : 5 4  : 1
+O: 0 1 : 119 : 5 3  : 1
+O: 0 1 : 118 : 5 3  : 1
+O: 0 1 : 115 : 5 3  : 1
+O: 0 1 : 114 : 5 3  : 1
+O: 0 1 : 107 : 5 2  : 1
+O: 0 1 : 106 : 5 2  : 1
+O: 0 1 : 169 : 2 2  : 1
+O: 0 1 : 2 : 0 0  : 1
+O: 0 1 : 161 : 2 2  : 1
+O: 0 1 : 153 : 2 1  : 1
+O: 0 1 : 145 : 2 1  : 1
+O: 0 1 : 138 : 2 0  : 1
+O: 0 1 : 136 : 2 0  : 1
+O: 0 1 : 130 : 2 0  : 1
+O: 0 1 : 128 : 2 0  : 1
+O: 0 1 : 124 : 1 7  : 1
+O: 0 1 : 120 : 1 7  : 1
+O: 0 1 : 108 : 1 6  : 1
+O: 0 1 : 100 : 1 6  : 1
+O: 0 1 : 77 : 1 4  : 1
+O: 0 1 : 244 : 3 3  : 1
+O: 0 1 : 152 : 2 1  : 1
+O: 0 1 : 73 : 1 4  : 1
+O: 0 1 : 240 : 3 3  : 1
+O: 0 1 : 69 : 1 4  : 1
+O: 0 1 : 144 : 2 1  : 1
+O: 0 1 : 65 : 1 4  : 1
+O: 0 1 : 116 : 1 3  : 1
+O: 0 1 : 112 : 1 3  : 1
+O: 0 1 : 104 : 1 2  : 1
+O: 0 1 : 96 : 1 2  : 1
+O: 0 1 : 92 : 1 1  : 1
+O: 0 1 : 88 : 1 1  : 1
+O: 0 1 : 163 : 2 2  : 1
+O: 0 1 : 84 : 1 1  : 1
+O: 0 1 : 80 : 1 1  : 1
+O: 0 1 : 247 : 3 3  : 1
+O: 0 1 : 32 : 0 2  : 1
+O: 0 1 : 199 : 3 4  : 1
+O: 0 1 : 28 : 0 1  : 1
+O: 0 1 : 195 : 3 4  : 1
+O: 0 1 : 24 : 0 1  : 1
+O: 0 1 : 20 : 0 1  : 1
+O: 0 1 : 187 : 2 7  : 1
+O: 0 1 : 16 : 0 1  : 1
+O: 0 1 : 93 : 1 1  : 1
+O: 0 1 : 14 : 0 0  : 1
+O: 0 1 : 12 : 0 0  : 1
+O: 0 1 : 179 : 2 3  : 1
+O: 0 1 : 160 : 2 2  : 1
+O: 0 1 : 81 : 1 1  : 1
+O: 0 1 : 76 : 1 0  : 1
+O: 0 1 : 243 : 3 3  : 1
+O: 0 1 : 113 : 1 3  : 1
+O: 0 1 : 34 : 0 2  : 1
+O: 0 1 : 0 : 0 0  : 1
+O: 0 1 : 162 : 2 2  : 1
+O: 0 1 : 4 : 0 0  : 1
+O: 0 1 : 171 : 2 2  : 1
+O: 0 1 : 40 : 0 2  : 1
+O: 0 1 : 85 : 1 1  : 1
+O: 0 1 : 6 : 0 0  : 1
+O: 0 1 : 121 : 1 7  : 1
+O: 0 1 : 42 : 0 2  : 1
+O: 0 1 : 209 : 3 1  : 1
+O: 0 1 : 8 : 0 0  : 1
+O: 0 1 : 168 : 2 2  : 1
+O: 0 1 : 1 : 4 4  : 1
+O: 0 1 : 89 : 1 1  : 1
+O: 0 1 : 10 : 0 0  : 1
+O: 0 1 : 177 : 2 3  : 1
+O: 0 1 : 48 : 0 3  : 1
+O: 0 1 : 215 : 3 5  : 1
+O: 0 1 : 50 : 0 3  : 1
+O: 0 1 : 52 : 0 3  : 1
+O: 0 1 : 54 : 0 3  : 1
+O: 0 1 : 97 : 1 2  : 1
+O: 0 1 : 18 : 0 5  : 1
+O: 0 1 : 185 : 2 7  : 1
+O: 0 1 : 101 : 1 6  : 1
+O: 0 1 : 22 : 0 5  : 1
+O: 0 1 : 105 : 1 2  : 1
+O: 0 1 : 26 : 0 5  : 1
+O: 0 1 : 193 : 3 4  : 1
+O: 0 1 : 109 : 1 6  : 1
+O: 0 1 : 30 : 0 5  : 1
+O: 0 1 : 197 : 3 4  : 1
+O: 0 1 : 36 : 0 6  : 1
+O: 0 1 : 117 : 1 3  : 1
+O: 0 1 : 38 : 0 6  : 1
+O: 0 1 : 44 : 0 6  : 1
+O: 0 1 : 211 : 3 5  : 1
+O: 0 1 : 125 : 1 7  : 1
+O: 0 1 : 46 : 0 6  : 1
+O: 0 1 : 213 : 3 1  : 1
+O: 0 1 : 56 : 0 7  : 1
+O: 0 1 : 58 : 0 7  : 1
+O: 0 1 : 225 : 3 2  : 1
+O: 0 1 : 60 : 0 7  : 1
+O: 0 1 : 227 : 3 2  : 1
+O: 0 1 : 62 : 0 7  : 1
+O: 0 1 : 229 : 3 6  : 1
+O: 0 1 : 64 : 1 0  : 1
+O: 0 1 : 231 : 3 6  : 1
+O: 0 1 : 68 : 1 0  : 1
+O: 0 1 : 72 : 1 0  : 1
+O: 0 1 : 170 : 2 2  : 1
+O: 0 1 : 3 : 4 4  : 1
+O: 0 1 : 176 : 2 3  : 1
+O: 0 1 : 9 : 4 4  : 1
+O: 0 1 : 178 : 2 3  : 1
+O: 0 1 : 11 : 4 4  : 1
+O: 0 1 : 129 : 2 4  : 1
+O: 0 1 : 131 : 2 4  : 1
+O: 0 1 : 137 : 2 4  : 1
+O: 0 1 : 139 : 2 4  : 1
+O: 0 1 : 146 : 2 5  : 1
+O: 0 1 : 147 : 2 5  : 1
+O: 0 1 : 154 : 2 5  : 1
+O: 0 1 : 155 : 2 5  : 1
+O: 0 1 : 184 : 2 7  : 1
+O: 0 1 : 17 : 4 1  : 1
+O: 0 1 : 186 : 2 7  : 1
+O: 0 1 : 19 : 4 5  : 1
+O: 0 1 : 192 : 3 0  : 1
+O: 0 1 : 25 : 4 1  : 1
+O: 0 1 : 194 : 3 0  : 1
+O: 0 1 : 27 : 4 5  : 1
+O: 0 1 : 196 : 3 0  : 1
+O: 0 1 : 29 : 4 1  : 1
+O: 0 1 : 198 : 3 0  : 1
+O: 0 1 : 31 : 4 5  : 1
+O: 0 1 : 208 : 3 1  : 1
+O: 0 1 : 41 : 4 2  : 1
+O: 0 1 : 212 : 3 1  : 1
+O: 0 1 : 45 : 4 6  : 1
+O: 0 1 : 224 : 3 2  : 1
+O: 0 1 : 57 : 4 7  : 1
+O: 0 1 : 226 : 3 2  : 1
+O: 0 1 : 59 : 4 7  : 1
+O: 0 1 : 241 : 3 3  : 1
+O: 0 1 : 74 : 5 0  : 1
+O: 0 1 : 242 : 3 3  : 1
+O: 0 1 : 245 : 3 3  : 1
+O: 0 1 : 78 : 5 0  : 1
+O: 0 1 : 246 : 3 3  : 1
+O: 0 1 : 210 : 3 5  : 1
+O: 0 1 : 43 : 4 2  : 1
+O: 0 1 : 214 : 3 5  : 1
+O: 0 1 : 47 : 4 6  : 1
+O: 0 1 : 228 : 3 6  : 1
+O: 0 1 : 61 : 4 7  : 1
+O: 0 1 : 230 : 3 6  : 1
+O: 0 1 : 63 : 4 7  : 1
+O: 0 1 : 21 : 4 1  : 1
+O: 0 1 : 33 : 4 2  : 1
+O: 0 1 : 35 : 4 2  : 1
+O: 0 1 : 49 : 4 3  : 1
+O: 0 1 : 51 : 4 3  : 1
+O: 0 1 : 53 : 4 3  : 1
+O: 0 1 : 55 : 4 3  : 1
+O: 0 1 : 5 : 4 4  : 1
+O: 0 1 : 7 : 4 4  : 1
+O: 0 1 : 13 : 4 4  : 1
+O: 0 1 : 15 : 4 4  : 1
+O: 0 1 : 23 : 4 5  : 1
+O: 0 1 : 37 : 4 6  : 1
+O: 0 1 : 39 : 4 6  : 1
+O: 0 1 : 66 : 5 0  : 1
+O: 0 1 : 70 : 5 0  : 1
+O: 0 1 : 98 : 5 2  : 1
+O: 0 1 : 99 : 5 2  : 1
+O: 1 0 : 255 : 7 7  : 1
+O: 1 0 : 254 : 7 7  : 1
+O: 1 0 : 253 : 7 7  : 1
+O: 1 0 : 252 : 7 7  : 1
+O: 1 0 : 251 : 7 7  : 1
+O: 1 0 : 250 : 7 7  : 1
+O: 1 0 : 249 : 7 7  : 1
+O: 1 0 : 248 : 7 7  : 1
+O: 1 0 : 239 : 7 6  : 1
+O: 1 0 : 238 : 7 6  : 1
+O: 1 0 : 237 : 7 6  : 1
+O: 1 0 : 236 : 7 6  : 1
+O: 1 0 : 223 : 7 5  : 1
+O: 1 0 : 222 : 7 5  : 1
+O: 1 0 : 219 : 7 5  : 1
+O: 1 0 : 218 : 7 5  : 1
+O: 1 0 : 207 : 7 4  : 1
+O: 1 0 : 205 : 7 4  : 1
+O: 1 0 : 203 : 7 4  : 1
+O: 1 0 : 201 : 7 4  : 1
+O: 1 0 : 235 : 7 2  : 1
+O: 1 0 : 234 : 7 2  : 1
+O: 1 0 : 233 : 7 2  : 1
+O: 1 0 : 232 : 7 2  : 1
+O: 1 0 : 221 : 7 1  : 1
+O: 1 0 : 220 : 7 1  : 1
+O: 1 0 : 217 : 7 1  : 1
+O: 1 0 : 216 : 7 1  : 1
+O: 1 0 : 206 : 7 0  : 1
+O: 1 0 : 204 : 7 0  : 1
+O: 1 0 : 202 : 7 0  : 1
+O: 1 0 : 200 : 7 0  : 1
+O: 1 0 : 191 : 6 7  : 1
+O: 1 0 : 190 : 6 7  : 1
+O: 1 0 : 189 : 6 7  : 1
+O: 1 0 : 188 : 6 7  : 1
+O: 1 0 : 175 : 6 6  : 1
+O: 1 0 : 174 : 6 6  : 1
+O: 1 0 : 173 : 6 6  : 1
+O: 1 0 : 172 : 6 6  : 1
+O: 1 0 : 167 : 6 6  : 1
+O: 1 0 : 166 : 6 6  : 1
+O: 1 0 : 165 : 6 6  : 1
+O: 1 0 : 164 : 6 6  : 1
+O: 1 0 : 159 : 6 5  : 1
+O: 1 0 : 158 : 6 5  : 1
+O: 1 0 : 151 : 6 5  : 1
+O: 1 0 : 150 : 6 5  : 1
+O: 1 0 : 143 : 6 4  : 1
+O: 1 0 : 141 : 6 4  : 1
+O: 1 0 : 135 : 6 4  : 1
+O: 1 0 : 133 : 6 4  : 1
+O: 1 0 : 183 : 6 3  : 1
+O: 1 0 : 182 : 6 3  : 1
+O: 1 0 : 181 : 6 3  : 1
+O: 1 0 : 180 : 6 3  : 1
+O: 1 0 : 157 : 6 1  : 1
+O: 1 0 : 156 : 6 1  : 1
+O: 1 0 : 149 : 6 1  : 1
+O: 1 0 : 148 : 6 1  : 1
+O: 1 0 : 142 : 6 0  : 1
+O: 1 0 : 140 : 6 0  : 1
+O: 1 0 : 134 : 6 0  : 1
+O: 1 0 : 132 : 6 0  : 1
+O: 1 0 : 127 : 5 7  : 1
+O: 1 0 : 126 : 5 7  : 1
+O: 1 0 : 123 : 5 7  : 1
+O: 1 0 : 122 : 5 7  : 1
+O: 1 0 : 111 : 5 6  : 1
+O: 1 0 : 110 : 5 6  : 1
+O: 1 0 : 103 : 5 6  : 1
+O: 1 0 : 102 : 5 6  : 1
+O: 1 0 : 95 : 5 5  : 1
+O: 1 0 : 94 : 5 5  : 1
+O: 1 0 : 91 : 5 5  : 1
+O: 1 0 : 90 : 5 5  : 1
+O: 1 0 : 87 : 5 5  : 1
+O: 1 0 : 86 : 5 5  : 1
+O: 1 0 : 83 : 5 5  : 1
+O: 1 0 : 82 : 5 5  : 1
+O: 1 0 : 79 : 5 4  : 1
+O: 1 0 : 75 : 5 4  : 1
+O: 1 0 : 71 : 5 4  : 1
+O: 1 0 : 67 : 5 4  : 1
+O: 1 0 : 119 : 5 3  : 1
+O: 1 0 : 118 : 5 3  : 1
+O: 1 0 : 115 : 5 3  : 1
+O: 1 0 : 114 : 5 3  : 1
+O: 1 0 : 107 : 5 2  : 1
+O: 1 0 : 106 : 5 2  : 1
+O: 1 0 : 169 : 2 2  : 1
+O: 1 0 : 2 : 0 0  : 1
+O: 1 0 : 161 : 2 2  : 1
+O: 1 0 : 153 : 2 1  : 1
+O: 1 0 : 145 : 2 1  : 1
+O: 1 0 : 138 : 2 0  : 1
+O: 1 0 : 136 : 2 0  : 1
+O: 1 0 : 130 : 2 0  : 1
+O: 1 0 : 128 : 2 0  : 1
+O: 1 0 : 124 : 1 7  : 1
+O: 1 0 : 120 : 1 7  : 1
+O: 1 0 : 108 : 1 6  : 1
+O: 1 0 : 100 : 1 6  : 1
+O: 1 0 : 77 : 1 4  : 1
+O: 1 0 : 244 : 3 3  : 1
+O: 1 0 : 152 : 2 1  : 1
+O: 1 0 : 73 : 1 4  : 1
+O: 1 0 : 240 : 3 3  : 1
+O: 1 0 : 69 : 1 4  : 1
+O: 1 0 : 144 : 2 1  : 1
+O: 1 0 : 65 : 1 4  : 1
+O: 1 0 : 116 : 1 3  : 1
+O: 1 0 : 112 : 1 3  : 1
+O: 1 0 : 104 : 1 2  : 1
+O: 1 0 : 96 : 1 2  : 1
+O: 1 0 : 92 : 1 1  : 1
+O: 1 0 : 88 : 1 1  : 1
+O: 1 0 : 163 : 2 2  : 1
+O: 1 0 : 84 : 1 1  : 1
+O: 1 0 : 80 : 1 1  : 1
+O: 1 0 : 247 : 3 3  : 1
+O: 1 0 : 32 : 0 2  : 1
+O: 1 0 : 199 : 3 4  : 1
+O: 1 0 : 28 : 0 1  : 1
+O: 1 0 : 195 : 3 4  : 1
+O: 1 0 : 24 : 0 1  : 1
+O: 1 0 : 20 : 0 1  : 1
+O: 1 0 : 187 : 2 7  : 1
+O: 1 0 : 16 : 0 1  : 1
+O: 1 0 : 93 : 1 1  : 1
+O: 1 0 : 14 : 0 0  : 1
+O: 1 0 : 12 : 0 0  : 1
+O: 1 0 : 179 : 2 3  : 1
+O: 1 0 : 160 : 2 2  : 1
+O: 1 0 : 81 : 1 1  : 1
+O: 1 0 : 76 : 1 0  : 1
+O: 1 0 : 243 : 3 3  : 1
+O: 1 0 : 113 : 1 3  : 1
+O: 1 0 : 34 : 0 2  : 1
+O: 1 0 : 0 : 0 0  : 1
+O: 1 0 : 162 : 2 2  : 1
+O: 1 0 : 4 : 0 0  : 1
+O: 1 0 : 171 : 2 2  : 1
+O: 1 0 : 40 : 0 2  : 1
+O: 1 0 : 85 : 1 1  : 1
+O: 1 0 : 6 : 0 0  : 1
+O: 1 0 : 121 : 1 7  : 1
+O: 1 0 : 42 : 0 2  : 1
+O: 1 0 : 209 : 3 1  : 1
+O: 1 0 : 8 : 0 0  : 1
+O: 1 0 : 168 : 2 2  : 1
+O: 1 0 : 1 : 4 4  : 1
+O: 1 0 : 89 : 1 1  : 1
+O: 1 0 : 10 : 0 0  : 1
+O: 1 0 : 177 : 2 3  : 1
+O: 1 0 : 48 : 0 3  : 1
+O: 1 0 : 215 : 3 5  : 1
+O: 1 0 : 50 : 0 3  : 1
+O: 1 0 : 52 : 0 3  : 1
+O: 1 0 : 54 : 0 3  : 1
+O: 1 0 : 97 : 1 2  : 1
+O: 1 0 : 18 : 0 5  : 1
+O: 1 0 : 185 : 2 7  : 1
+O: 1 0 : 101 : 1 6  : 1
+O: 1 0 : 22 : 0 5  : 1
+O: 1 0 : 105 : 1 2  : 1
+O: 1 0 : 26 : 0 5  : 1
+O: 1 0 : 193 : 3 4  : 1
+O: 1 0 : 109 : 1 6  : 1
+O: 1 0 : 30 : 0 5  : 1
+O: 1 0 : 197 : 3 4  : 1
+O: 1 0 : 36 : 0 6  : 1
+O: 1 0 : 117 : 1 3  : 1
+O: 1 0 : 38 : 0 6  : 1
+O: 1 0 : 44 : 0 6  : 1
+O: 1 0 : 211 : 3 5  : 1
+O: 1 0 : 125 : 1 7  : 1
+O: 1 0 : 46 : 0 6  : 1
+O: 1 0 : 213 : 3 1  : 1
+O: 1 0 : 56 : 0 7  : 1
+O: 1 0 : 58 : 0 7  : 1
+O: 1 0 : 225 : 3 2  : 1
+O: 1 0 : 60 : 0 7  : 1
+O: 1 0 : 227 : 3 2  : 1
+O: 1 0 : 62 : 0 7  : 1
+O: 1 0 : 229 : 3 6  : 1
+O: 1 0 : 64 : 1 0  : 1
+O: 1 0 : 231 : 3 6  : 1
+O: 1 0 : 68 : 1 0  : 1
+O: 1 0 : 72 : 1 0  : 1
+O: 1 0 : 170 : 2 2  : 1
+O: 1 0 : 3 : 4 4  : 1
+O: 1 0 : 176 : 2 3  : 1
+O: 1 0 : 9 : 4 4  : 1
+O: 1 0 : 178 : 2 3  : 1
+O: 1 0 : 11 : 4 4  : 1
+O: 1 0 : 129 : 2 4  : 1
+O: 1 0 : 131 : 2 4  : 1
+O: 1 0 : 137 : 2 4  : 1
+O: 1 0 : 139 : 2 4  : 1
+O: 1 0 : 146 : 2 5  : 1
+O: 1 0 : 147 : 2 5  : 1
+O: 1 0 : 154 : 2 5  : 1
+O: 1 0 : 155 : 2 5  : 1
+O: 1 0 : 184 : 2 7  : 1
+O: 1 0 : 17 : 4 1  : 1
+O: 1 0 : 186 : 2 7  : 1
+O: 1 0 : 19 : 4 5  : 1
+O: 1 0 : 192 : 3 0  : 1
+O: 1 0 : 25 : 4 1  : 1
+O: 1 0 : 194 : 3 0  : 1
+O: 1 0 : 27 : 4 5  : 1
+O: 1 0 : 196 : 3 0  : 1
+O: 1 0 : 29 : 4 1  : 1
+O: 1 0 : 198 : 3 0  : 1
+O: 1 0 : 31 : 4 5  : 1
+O: 1 0 : 208 : 3 1  : 1
+O: 1 0 : 41 : 4 2  : 1
+O: 1 0 : 212 : 3 1  : 1
+O: 1 0 : 45 : 4 6  : 1
+O: 1 0 : 224 : 3 2  : 1
+O: 1 0 : 57 : 4 7  : 1
+O: 1 0 : 226 : 3 2  : 1
+O: 1 0 : 59 : 4 7  : 1
+O: 1 0 : 241 : 3 3  : 1
+O: 1 0 : 74 : 5 0  : 1
+O: 1 0 : 242 : 3 3  : 1
+O: 1 0 : 245 : 3 3  : 1
+O: 1 0 : 78 : 5 0  : 1
+O: 1 0 : 246 : 3 3  : 1
+O: 1 0 : 210 : 3 5  : 1
+O: 1 0 : 43 : 4 2  : 1
+O: 1 0 : 214 : 3 5  : 1
+O: 1 0 : 47 : 4 6  : 1
+O: 1 0 : 228 : 3 6  : 1
+O: 1 0 : 61 : 4 7  : 1
+O: 1 0 : 230 : 3 6  : 1
+O: 1 0 : 63 : 4 7  : 1
+O: 1 0 : 21 : 4 1  : 1
+O: 1 0 : 33 : 4 2  : 1
+O: 1 0 : 35 : 4 2  : 1
+O: 1 0 : 49 : 4 3  : 1
+O: 1 0 : 51 : 4 3  : 1
+O: 1 0 : 53 : 4 3  : 1
+O: 1 0 : 55 : 4 3  : 1
+O: 1 0 : 5 : 4 4  : 1
+O: 1 0 : 7 : 4 4  : 1
+O: 1 0 : 13 : 4 4  : 1
+O: 1 0 : 15 : 4 4  : 1
+O: 1 0 : 23 : 4 5  : 1
+O: 1 0 : 37 : 4 6  : 1
+O: 1 0 : 39 : 4 6  : 1
+O: 1 0 : 66 : 5 0  : 1
+O: 1 0 : 70 : 5 0  : 1
+O: 1 0 : 98 : 5 2  : 1
+O: 1 0 : 99 : 5 2  : 1
+O: 1 1 : 255 : 7 7  : 1
+O: 1 1 : 254 : 7 7  : 1
+O: 1 1 : 253 : 7 7  : 1
+O: 1 1 : 252 : 7 7  : 1
+O: 1 1 : 251 : 7 7  : 1
+O: 1 1 : 250 : 7 7  : 1
+O: 1 1 : 249 : 7 7  : 1
+O: 1 1 : 248 : 7 7  : 1
+O: 1 1 : 239 : 7 6  : 1
+O: 1 1 : 238 : 7 6  : 1
+O: 1 1 : 237 : 7 6  : 1
+O: 1 1 : 236 : 7 6  : 1
+O: 1 1 : 223 : 7 5  : 1
+O: 1 1 : 222 : 7 5  : 1
+O: 1 1 : 219 : 7 5  : 1
+O: 1 1 : 218 : 7 5  : 1
+O: 1 1 : 207 : 7 4  : 1
+O: 1 1 : 205 : 7 4  : 1
+O: 1 1 : 203 : 7 4  : 1
+O: 1 1 : 201 : 7 4  : 1
+O: 1 1 : 235 : 7 2  : 1
+O: 1 1 : 234 : 7 2  : 1
+O: 1 1 : 233 : 7 2  : 1
+O: 1 1 : 232 : 7 2  : 1
+O: 1 1 : 221 : 7 1  : 1
+O: 1 1 : 220 : 7 1  : 1
+O: 1 1 : 217 : 7 1  : 1
+O: 1 1 : 216 : 7 1  : 1
+O: 1 1 : 206 : 7 0  : 1
+O: 1 1 : 204 : 7 0  : 1
+O: 1 1 : 202 : 7 0  : 1
+O: 1 1 : 200 : 7 0  : 1
+O: 1 1 : 191 : 6 7  : 1
+O: 1 1 : 190 : 6 7  : 1
+O: 1 1 : 189 : 6 7  : 1
+O: 1 1 : 188 : 6 7  : 1
+O: 1 1 : 175 : 6 6  : 1
+O: 1 1 : 174 : 6 6  : 1
+O: 1 1 : 173 : 6 6  : 1
+O: 1 1 : 172 : 6 6  : 1
+O: 1 1 : 167 : 6 6  : 1
+O: 1 1 : 166 : 6 6  : 1
+O: 1 1 : 165 : 6 6  : 1
+O: 1 1 : 164 : 6 6  : 1
+O: 1 1 : 159 : 6 5  : 1
+O: 1 1 : 158 : 6 5  : 1
+O: 1 1 : 151 : 6 5  : 1
+O: 1 1 : 150 : 6 5  : 1
+O: 1 1 : 143 : 6 4  : 1
+O: 1 1 : 141 : 6 4  : 1
+O: 1 1 : 135 : 6 4  : 1
+O: 1 1 : 133 : 6 4  : 1
+O: 1 1 : 183 : 6 3  : 1
+O: 1 1 : 182 : 6 3  : 1
+O: 1 1 : 181 : 6 3  : 1
+O: 1 1 : 180 : 6 3  : 1
+O: 1 1 : 157 : 6 1  : 1
+O: 1 1 : 156 : 6 1  : 1
+O: 1 1 : 149 : 6 1  : 1
+O: 1 1 : 148 : 6 1  : 1
+O: 1 1 : 142 : 6 0  : 1
+O: 1 1 : 140 : 6 0  : 1
+O: 1 1 : 134 : 6 0  : 1
+O: 1 1 : 132 : 6 0  : 1
+O: 1 1 : 127 : 5 7  : 1
+O: 1 1 : 126 : 5 7  : 1
+O: 1 1 : 123 : 5 7  : 1
+O: 1 1 : 122 : 5 7  : 1
+O: 1 1 : 111 : 5 6  : 1
+O: 1 1 : 110 : 5 6  : 1
+O: 1 1 : 103 : 5 6  : 1
+O: 1 1 : 102 : 5 6  : 1
+O: 1 1 : 95 : 5 5  : 1
+O: 1 1 : 94 : 5 5  : 1
+O: 1 1 : 91 : 5 5  : 1
+O: 1 1 : 90 : 5 5  : 1
+O: 1 1 : 87 : 5 5  : 1
+O: 1 1 : 86 : 5 5  : 1
+O: 1 1 : 83 : 5 5  : 1
+O: 1 1 : 82 : 5 5  : 1
+O: 1 1 : 79 : 5 4  : 1
+O: 1 1 : 75 : 5 4  : 1
+O: 1 1 : 71 : 5 4  : 1
+O: 1 1 : 67 : 5 4  : 1
+O: 1 1 : 119 : 5 3  : 1
+O: 1 1 : 118 : 5 3  : 1
+O: 1 1 : 115 : 5 3  : 1
+O: 1 1 : 114 : 5 3  : 1
+O: 1 1 : 107 : 5 2  : 1
+O: 1 1 : 106 : 5 2  : 1
+O: 1 1 : 169 : 2 2  : 1
+O: 1 1 : 2 : 0 0  : 1
+O: 1 1 : 161 : 2 2  : 1
+O: 1 1 : 153 : 2 1  : 1
+O: 1 1 : 145 : 2 1  : 1
+O: 1 1 : 138 : 2 0  : 1
+O: 1 1 : 136 : 2 0  : 1
+O: 1 1 : 130 : 2 0  : 1
+O: 1 1 : 128 : 2 0  : 1
+O: 1 1 : 124 : 1 7  : 1
+O: 1 1 : 120 : 1 7  : 1
+O: 1 1 : 108 : 1 6  : 1
+O: 1 1 : 100 : 1 6  : 1
+O: 1 1 : 77 : 1 4  : 1
+O: 1 1 : 244 : 3 3  : 1
+O: 1 1 : 152 : 2 1  : 1
+O: 1 1 : 73 : 1 4  : 1
+O: 1 1 : 240 : 3 3  : 1
+O: 1 1 : 69 : 1 4  : 1
+O: 1 1 : 144 : 2 1  : 1
+O: 1 1 : 65 : 1 4  : 1
+O: 1 1 : 116 : 1 3  : 1
+O: 1 1 : 112 : 1 3  : 1
+O: 1 1 : 104 : 1 2  : 1
+O: 1 1 : 96 : 1 2  : 1
+O: 1 1 : 92 : 1 1  : 1
+O: 1 1 : 88 : 1 1  : 1
+O: 1 1 : 163 : 2 2  : 1
+O: 1 1 : 84 : 1 1  : 1
+O: 1 1 : 80 : 1 1  : 1
+O: 1 1 : 247 : 3 3  : 1
+O: 1 1 : 32 : 0 2  : 1
+O: 1 1 : 199 : 3 4  : 1
+O: 1 1 : 28 : 0 1  : 1
+O: 1 1 : 195 : 3 4  : 1
+O: 1 1 : 24 : 0 1  : 1
+O: 1 1 : 20 : 0 1  : 1
+O: 1 1 : 187 : 2 7  : 1
+O: 1 1 : 16 : 0 1  : 1
+O: 1 1 : 93 : 1 1  : 1
+O: 1 1 : 14 : 0 0  : 1
+O: 1 1 : 12 : 0 0  : 1
+O: 1 1 : 179 : 2 3  : 1
+O: 1 1 : 160 : 2 2  : 1
+O: 1 1 : 81 : 1 1  : 1
+O: 1 1 : 76 : 1 0  : 1
+O: 1 1 : 243 : 3 3  : 1
+O: 1 1 : 113 : 1 3  : 1
+O: 1 1 : 34 : 0 2  : 1
+O: 1 1 : 0 : 0 0  : 1
+O: 1 1 : 162 : 2 2  : 1
+O: 1 1 : 4 : 0 0  : 1
+O: 1 1 : 171 : 2 2  : 1
+O: 1 1 : 40 : 0 2  : 1
+O: 1 1 : 85 : 1 1  : 1
+O: 1 1 : 6 : 0 0  : 1
+O: 1 1 : 121 : 1 7  : 1
+O: 1 1 : 42 : 0 2  : 1
+O: 1 1 : 209 : 3 1  : 1
+O: 1 1 : 8 : 0 0  : 1
+O: 1 1 : 168 : 2 2  : 1
+O: 1 1 : 1 : 4 4  : 1
+O: 1 1 : 89 : 1 1  : 1
+O: 1 1 : 10 : 0 0  : 1
+O: 1 1 : 177 : 2 3  : 1
+O: 1 1 : 48 : 0 3  : 1
+O: 1 1 : 215 : 3 5  : 1
+O: 1 1 : 50 : 0 3  : 1
+O: 1 1 : 52 : 0 3  : 1
+O: 1 1 : 54 : 0 3  : 1
+O: 1 1 : 97 : 1 2  : 1
+O: 1 1 : 18 : 0 5  : 1
+O: 1 1 : 185 : 2 7  : 1
+O: 1 1 : 101 : 1 6  : 1
+O: 1 1 : 22 : 0 5  : 1
+O: 1 1 : 105 : 1 2  : 1
+O: 1 1 : 26 : 0 5  : 1
+O: 1 1 : 193 : 3 4  : 1
+O: 1 1 : 109 : 1 6  : 1
+O: 1 1 : 30 : 0 5  : 1
+O: 1 1 : 197 : 3 4  : 1
+O: 1 1 : 36 : 0 6  : 1
+O: 1 1 : 117 : 1 3  : 1
+O: 1 1 : 38 : 0 6  : 1
+O: 1 1 : 44 : 0 6  : 1
+O: 1 1 : 211 : 3 5  : 1
+O: 1 1 : 125 : 1 7  : 1
+O: 1 1 : 46 : 0 6  : 1
+O: 1 1 : 213 : 3 1  : 1
+O: 1 1 : 56 : 0 7  : 1
+O: 1 1 : 58 : 0 7  : 1
+O: 1 1 : 225 : 3 2  : 1
+O: 1 1 : 60 : 0 7  : 1
+O: 1 1 : 227 : 3 2  : 1
+O: 1 1 : 62 : 0 7  : 1
+O: 1 1 : 229 : 3 6  : 1
+O: 1 1 : 64 : 1 0  : 1
+O: 1 1 : 231 : 3 6  : 1
+O: 1 1 : 68 : 1 0  : 1
+O: 1 1 : 72 : 1 0  : 1
+O: 1 1 : 170 : 2 2  : 1
+O: 1 1 : 3 : 4 4  : 1
+O: 1 1 : 176 : 2 3  : 1
+O: 1 1 : 9 : 4 4  : 1
+O: 1 1 : 178 : 2 3  : 1
+O: 1 1 : 11 : 4 4  : 1
+O: 1 1 : 129 : 2 4  : 1
+O: 1 1 : 131 : 2 4  : 1
+O: 1 1 : 137 : 2 4  : 1
+O: 1 1 : 139 : 2 4  : 1
+O: 1 1 : 146 : 2 5  : 1
+O: 1 1 : 147 : 2 5  : 1
+O: 1 1 : 154 : 2 5  : 1
+O: 1 1 : 155 : 2 5  : 1
+O: 1 1 : 184 : 2 7  : 1
+O: 1 1 : 17 : 4 1  : 1
+O: 1 1 : 186 : 2 7  : 1
+O: 1 1 : 19 : 4 5  : 1
+O: 1 1 : 192 : 3 0  : 1
+O: 1 1 : 25 : 4 1  : 1
+O: 1 1 : 194 : 3 0  : 1
+O: 1 1 : 27 : 4 5  : 1
+O: 1 1 : 196 : 3 0  : 1
+O: 1 1 : 29 : 4 1  : 1
+O: 1 1 : 198 : 3 0  : 1
+O: 1 1 : 31 : 4 5  : 1
+O: 1 1 : 208 : 3 1  : 1
+O: 1 1 : 41 : 4 2  : 1
+O: 1 1 : 212 : 3 1  : 1
+O: 1 1 : 45 : 4 6  : 1
+O: 1 1 : 224 : 3 2  : 1
+O: 1 1 : 57 : 4 7  : 1
+O: 1 1 : 226 : 3 2  : 1
+O: 1 1 : 59 : 4 7  : 1
+O: 1 1 : 241 : 3 3  : 1
+O: 1 1 : 74 : 5 0  : 1
+O: 1 1 : 242 : 3 3  : 1
+O: 1 1 : 245 : 3 3  : 1
+O: 1 1 : 78 : 5 0  : 1
+O: 1 1 : 246 : 3 3  : 1
+O: 1 1 : 210 : 3 5  : 1
+O: 1 1 : 43 : 4 2  : 1
+O: 1 1 : 214 : 3 5  : 1
+O: 1 1 : 47 : 4 6  : 1
+O: 1 1 : 228 : 3 6  : 1
+O: 1 1 : 61 : 4 7  : 1
+O: 1 1 : 230 : 3 6  : 1
+O: 1 1 : 63 : 4 7  : 1
+O: 1 1 : 21 : 4 1  : 1
+O: 1 1 : 33 : 4 2  : 1
+O: 1 1 : 35 : 4 2  : 1
+O: 1 1 : 49 : 4 3  : 1
+O: 1 1 : 51 : 4 3  : 1
+O: 1 1 : 53 : 4 3  : 1
+O: 1 1 : 55 : 4 3  : 1
+O: 1 1 : 5 : 4 4  : 1
+O: 1 1 : 7 : 4 4  : 1
+O: 1 1 : 13 : 4 4  : 1
+O: 1 1 : 15 : 4 4  : 1
+O: 1 1 : 23 : 4 5  : 1
+O: 1 1 : 37 : 4 6  : 1
+O: 1 1 : 39 : 4 6  : 1
+O: 1 1 : 66 : 5 0  : 1
+O: 1 1 : 70 : 5 0  : 1
+O: 1 1 : 98 : 5 2  : 1
+O: 1 1 : 99 : 5 2  : 1
+O: 1 2 : 255 : 7 7  : 1
+O: 1 2 : 254 : 7 7  : 1
+O: 1 2 : 253 : 7 7  : 1
+O: 1 2 : 252 : 7 7  : 1
+O: 1 2 : 251 : 7 7  : 1
+O: 1 2 : 250 : 7 7  : 1
+O: 1 2 : 249 : 7 7  : 1
+O: 1 2 : 248 : 7 7  : 1
+O: 1 2 : 239 : 7 6  : 1
+O: 1 2 : 238 : 7 6  : 1
+O: 1 2 : 237 : 7 6  : 1
+O: 1 2 : 236 : 7 6  : 1
+O: 1 2 : 223 : 7 5  : 1
+O: 1 2 : 222 : 7 5  : 1
+O: 1 2 : 219 : 7 5  : 1
+O: 1 2 : 218 : 7 5  : 1
+O: 1 2 : 207 : 7 4  : 1
+O: 1 2 : 205 : 7 4  : 1
+O: 1 2 : 203 : 7 4  : 1
+O: 1 2 : 201 : 7 4  : 1
+O: 1 2 : 235 : 7 2  : 1
+O: 1 2 : 234 : 7 2  : 1
+O: 1 2 : 233 : 7 2  : 1
+O: 1 2 : 232 : 7 2  : 1
+O: 1 2 : 221 : 7 1  : 1
+O: 1 2 : 220 : 7 1  : 1
+O: 1 2 : 217 : 7 1  : 1
+O: 1 2 : 216 : 7 1  : 1
+O: 1 2 : 206 : 7 0  : 1
+O: 1 2 : 204 : 7 0  : 1
+O: 1 2 : 202 : 7 0  : 1
+O: 1 2 : 200 : 7 0  : 1
+O: 1 2 : 191 : 6 7  : 1
+O: 1 2 : 190 : 6 7  : 1
+O: 1 2 : 189 : 6 7  : 1
+O: 1 2 : 188 : 6 7  : 1
+O: 1 2 : 175 : 6 6  : 1
+O: 1 2 : 174 : 6 6  : 1
+O: 1 2 : 173 : 6 6  : 1
+O: 1 2 : 172 : 6 6  : 1
+O: 1 2 : 167 : 6 6  : 1
+O: 1 2 : 166 : 6 6  : 1
+O: 1 2 : 165 : 6 6  : 1
+O: 1 2 : 164 : 6 6  : 1
+O: 1 2 : 159 : 6 5  : 1
+O: 1 2 : 158 : 6 5  : 1
+O: 1 2 : 151 : 6 5  : 1
+O: 1 2 : 150 : 6 5  : 1
+O: 1 2 : 143 : 6 4  : 1
+O: 1 2 : 141 : 6 4  : 1
+O: 1 2 : 135 : 6 4  : 1
+O: 1 2 : 133 : 6 4  : 1
+O: 1 2 : 183 : 6 3  : 1
+O: 1 2 : 182 : 6 3  : 1
+O: 1 2 : 181 : 6 3  : 1
+O: 1 2 : 180 : 6 3  : 1
+O: 1 2 : 157 : 6 1  : 1
+O: 1 2 : 156 : 6 1  : 1
+O: 1 2 : 149 : 6 1  : 1
+O: 1 2 : 148 : 6 1  : 1
+O: 1 2 : 142 : 6 0  : 1
+O: 1 2 : 140 : 6 0  : 1
+O: 1 2 : 134 : 6 0  : 1
+O: 1 2 : 132 : 6 0  : 1
+O: 1 2 : 127 : 5 7  : 1
+O: 1 2 : 126 : 5 7  : 1
+O: 1 2 : 123 : 5 7  : 1
+O: 1 2 : 122 : 5 7  : 1
+O: 1 2 : 111 : 5 6  : 1
+O: 1 2 : 110 : 5 6  : 1
+O: 1 2 : 103 : 5 6  : 1
+O: 1 2 : 102 : 5 6  : 1
+O: 1 2 : 95 : 5 5  : 1
+O: 1 2 : 94 : 5 5  : 1
+O: 1 2 : 91 : 5 5  : 1
+O: 1 2 : 90 : 5 5  : 1
+O: 1 2 : 87 : 5 5  : 1
+O: 1 2 : 86 : 5 5  : 1
+O: 1 2 : 83 : 5 5  : 1
+O: 1 2 : 82 : 5 5  : 1
+O: 1 2 : 79 : 5 4  : 1
+O: 1 2 : 75 : 5 4  : 1
+O: 1 2 : 71 : 5 4  : 1
+O: 1 2 : 67 : 5 4  : 1
+O: 1 2 : 119 : 5 3  : 1
+O: 1 2 : 118 : 5 3  : 1
+O: 1 2 : 115 : 5 3  : 1
+O: 1 2 : 114 : 5 3  : 1
+O: 1 2 : 107 : 5 2  : 1
+O: 1 2 : 106 : 5 2  : 1
+O: 1 2 : 169 : 2 2  : 1
+O: 1 2 : 2 : 0 0  : 1
+O: 1 2 : 161 : 2 2  : 1
+O: 1 2 : 153 : 2 1  : 1
+O: 1 2 : 145 : 2 1  : 1
+O: 1 2 : 138 : 2 0  : 1
+O: 1 2 : 136 : 2 0  : 1
+O: 1 2 : 130 : 2 0  : 1
+O: 1 2 : 128 : 2 0  : 1
+O: 1 2 : 124 : 1 7  : 1
+O: 1 2 : 120 : 1 7  : 1
+O: 1 2 : 108 : 1 6  : 1
+O: 1 2 : 100 : 1 6  : 1
+O: 1 2 : 77 : 1 4  : 1
+O: 1 2 : 244 : 3 3  : 1
+O: 1 2 : 152 : 2 1  : 1
+O: 1 2 : 73 : 1 4  : 1
+O: 1 2 : 240 : 3 3  : 1
+O: 1 2 : 69 : 1 4  : 1
+O: 1 2 : 144 : 2 1  : 1
+O: 1 2 : 65 : 1 4  : 1
+O: 1 2 : 116 : 1 3  : 1
+O: 1 2 : 112 : 1 3  : 1
+O: 1 2 : 104 : 1 2  : 1
+O: 1 2 : 96 : 1 2  : 1
+O: 1 2 : 92 : 1 1  : 1
+O: 1 2 : 88 : 1 1  : 1
+O: 1 2 : 163 : 2 2  : 1
+O: 1 2 : 84 : 1 1  : 1
+O: 1 2 : 80 : 1 1  : 1
+O: 1 2 : 247 : 3 3  : 1
+O: 1 2 : 32 : 0 2  : 1
+O: 1 2 : 199 : 3 4  : 1
+O: 1 2 : 28 : 0 1  : 1
+O: 1 2 : 195 : 3 4  : 1
+O: 1 2 : 24 : 0 1  : 1
+O: 1 2 : 20 : 0 1  : 1
+O: 1 2 : 187 : 2 7  : 1
+O: 1 2 : 16 : 0 1  : 1
+O: 1 2 : 93 : 1 1  : 1
+O: 1 2 : 14 : 0 0  : 1
+O: 1 2 : 12 : 0 0  : 1
+O: 1 2 : 179 : 2 3  : 1
+O: 1 2 : 160 : 2 2  : 1
+O: 1 2 : 81 : 1 1  : 1
+O: 1 2 : 76 : 1 0  : 1
+O: 1 2 : 243 : 3 3  : 1
+O: 1 2 : 113 : 1 3  : 1
+O: 1 2 : 34 : 0 2  : 1
+O: 1 2 : 0 : 0 0  : 1
+O: 1 2 : 162 : 2 2  : 1
+O: 1 2 : 4 : 0 0  : 1
+O: 1 2 : 171 : 2 2  : 1
+O: 1 2 : 40 : 0 2  : 1
+O: 1 2 : 85 : 1 1  : 1
+O: 1 2 : 6 : 0 0  : 1
+O: 1 2 : 121 : 1 7  : 1
+O: 1 2 : 42 : 0 2  : 1
+O: 1 2 : 209 : 3 1  : 1
+O: 1 2 : 8 : 0 0  : 1
+O: 1 2 : 168 : 2 2  : 1
+O: 1 2 : 1 : 4 4  : 1
+O: 1 2 : 89 : 1 1  : 1
+O: 1 2 : 10 : 0 0  : 1
+O: 1 2 : 177 : 2 3  : 1
+O: 1 2 : 48 : 0 3  : 1
+O: 1 2 : 215 : 3 5  : 1
+O: 1 2 : 50 : 0 3  : 1
+O: 1 2 : 52 : 0 3  : 1
+O: 1 2 : 54 : 0 3  : 1
+O: 1 2 : 97 : 1 2  : 1
+O: 1 2 : 18 : 0 5  : 1
+O: 1 2 : 185 : 2 7  : 1
+O: 1 2 : 101 : 1 6  : 1
+O: 1 2 : 22 : 0 5  : 1
+O: 1 2 : 105 : 1 2  : 1
+O: 1 2 : 26 : 0 5  : 1
+O: 1 2 : 193 : 3 4  : 1
+O: 1 2 : 109 : 1 6  : 1
+O: 1 2 : 30 : 0 5  : 1
+O: 1 2 : 197 : 3 4  : 1
+O: 1 2 : 36 : 0 6  : 1
+O: 1 2 : 117 : 1 3  : 1
+O: 1 2 : 38 : 0 6  : 1
+O: 1 2 : 44 : 0 6  : 1
+O: 1 2 : 211 : 3 5  : 1
+O: 1 2 : 125 : 1 7  : 1
+O: 1 2 : 46 : 0 6  : 1
+O: 1 2 : 213 : 3 1  : 1
+O: 1 2 : 56 : 0 7  : 1
+O: 1 2 : 58 : 0 7  : 1
+O: 1 2 : 225 : 3 2  : 1
+O: 1 2 : 60 : 0 7  : 1
+O: 1 2 : 227 : 3 2  : 1
+O: 1 2 : 62 : 0 7  : 1
+O: 1 2 : 229 : 3 6  : 1
+O: 1 2 : 64 : 1 0  : 1
+O: 1 2 : 231 : 3 6  : 1
+O: 1 2 : 68 : 1 0  : 1
+O: 1 2 : 72 : 1 0  : 1
+O: 1 2 : 170 : 2 2  : 1
+O: 1 2 : 3 : 4 4  : 1
+O: 1 2 : 176 : 2 3  : 1
+O: 1 2 : 9 : 4 4  : 1
+O: 1 2 : 178 : 2 3  : 1
+O: 1 2 : 11 : 4 4  : 1
+O: 1 2 : 129 : 2 4  : 1
+O: 1 2 : 131 : 2 4  : 1
+O: 1 2 : 137 : 2 4  : 1
+O: 1 2 : 139 : 2 4  : 1
+O: 1 2 : 146 : 2 5  : 1
+O: 1 2 : 147 : 2 5  : 1
+O: 1 2 : 154 : 2 5  : 1
+O: 1 2 : 155 : 2 5  : 1
+O: 1 2 : 184 : 2 7  : 1
+O: 1 2 : 17 : 4 1  : 1
+O: 1 2 : 186 : 2 7  : 1
+O: 1 2 : 19 : 4 5  : 1
+O: 1 2 : 192 : 3 0  : 1
+O: 1 2 : 25 : 4 1  : 1
+O: 1 2 : 194 : 3 0  : 1
+O: 1 2 : 27 : 4 5  : 1
+O: 1 2 : 196 : 3 0  : 1
+O: 1 2 : 29 : 4 1  : 1
+O: 1 2 : 198 : 3 0  : 1
+O: 1 2 : 31 : 4 5  : 1
+O: 1 2 : 208 : 3 1  : 1
+O: 1 2 : 41 : 4 2  : 1
+O: 1 2 : 212 : 3 1  : 1
+O: 1 2 : 45 : 4 6  : 1
+O: 1 2 : 224 : 3 2  : 1
+O: 1 2 : 57 : 4 7  : 1
+O: 1 2 : 226 : 3 2  : 1
+O: 1 2 : 59 : 4 7  : 1
+O: 1 2 : 241 : 3 3  : 1
+O: 1 2 : 74 : 5 0  : 1
+O: 1 2 : 242 : 3 3  : 1
+O: 1 2 : 245 : 3 3  : 1
+O: 1 2 : 78 : 5 0  : 1
+O: 1 2 : 246 : 3 3  : 1
+O: 1 2 : 210 : 3 5  : 1
+O: 1 2 : 43 : 4 2  : 1
+O: 1 2 : 214 : 3 5  : 1
+O: 1 2 : 47 : 4 6  : 1
+O: 1 2 : 228 : 3 6  : 1
+O: 1 2 : 61 : 4 7  : 1
+O: 1 2 : 230 : 3 6  : 1
+O: 1 2 : 63 : 4 7  : 1
+O: 1 2 : 21 : 4 1  : 1
+O: 1 2 : 33 : 4 2  : 1
+O: 1 2 : 35 : 4 2  : 1
+O: 1 2 : 49 : 4 3  : 1
+O: 1 2 : 51 : 4 3  : 1
+O: 1 2 : 53 : 4 3  : 1
+O: 1 2 : 55 : 4 3  : 1
+O: 1 2 : 5 : 4 4  : 1
+O: 1 2 : 7 : 4 4  : 1
+O: 1 2 : 13 : 4 4  : 1
+O: 1 2 : 15 : 4 4  : 1
+O: 1 2 : 23 : 4 5  : 1
+O: 1 2 : 37 : 4 6  : 1
+O: 1 2 : 39 : 4 6  : 1
+O: 1 2 : 66 : 5 0  : 1
+O: 1 2 : 70 : 5 0  : 1
+O: 1 2 : 98 : 5 2  : 1
+O: 1 2 : 99 : 5 2  : 1
+O: 1 3 : 255 : 7 7  : 1
+O: 1 3 : 254 : 7 7  : 1
+O: 1 3 : 253 : 7 7  : 1
+O: 1 3 : 252 : 7 7  : 1
+O: 1 3 : 251 : 7 7  : 1
+O: 1 3 : 250 : 7 7  : 1
+O: 1 3 : 249 : 7 7  : 1
+O: 1 3 : 248 : 7 7  : 1
+O: 1 3 : 239 : 7 6  : 1
+O: 1 3 : 238 : 7 6  : 1
+O: 1 3 : 237 : 7 6  : 1
+O: 1 3 : 236 : 7 6  : 1
+O: 1 3 : 223 : 7 5  : 1
+O: 1 3 : 222 : 7 5  : 1
+O: 1 3 : 219 : 7 5  : 1
+O: 1 3 : 218 : 7 5  : 1
+O: 1 3 : 207 : 7 4  : 1
+O: 1 3 : 205 : 7 4  : 1
+O: 1 3 : 203 : 7 4  : 1
+O: 1 3 : 201 : 7 4  : 1
+O: 1 3 : 235 : 7 2  : 1
+O: 1 3 : 234 : 7 2  : 1
+O: 1 3 : 233 : 7 2  : 1
+O: 1 3 : 232 : 7 2  : 1
+O: 1 3 : 221 : 7 1  : 1
+O: 1 3 : 220 : 7 1  : 1
+O: 1 3 : 217 : 7 1  : 1
+O: 1 3 : 216 : 7 1  : 1
+O: 1 3 : 206 : 7 0  : 1
+O: 1 3 : 204 : 7 0  : 1
+O: 1 3 : 202 : 7 0  : 1
+O: 1 3 : 200 : 7 0  : 1
+O: 1 3 : 191 : 6 7  : 1
+O: 1 3 : 190 : 6 7  : 1
+O: 1 3 : 189 : 6 7  : 1
+O: 1 3 : 188 : 6 7  : 1
+O: 1 3 : 175 : 6 6  : 1
+O: 1 3 : 174 : 6 6  : 1
+O: 1 3 : 173 : 6 6  : 1
+O: 1 3 : 172 : 6 6  : 1
+O: 1 3 : 167 : 6 6  : 1
+O: 1 3 : 166 : 6 6  : 1
+O: 1 3 : 165 : 6 6  : 1
+O: 1 3 : 164 : 6 6  : 1
+O: 1 3 : 159 : 6 5  : 1
+O: 1 3 : 158 : 6 5  : 1
+O: 1 3 : 151 : 6 5  : 1
+O: 1 3 : 150 : 6 5  : 1
+O: 1 3 : 143 : 6 4  : 1
+O: 1 3 : 141 : 6 4  : 1
+O: 1 3 : 135 : 6 4  : 1
+O: 1 3 : 133 : 6 4  : 1
+O: 1 3 : 183 : 6 3  : 1
+O: 1 3 : 182 : 6 3  : 1
+O: 1 3 : 181 : 6 3  : 1
+O: 1 3 : 180 : 6 3  : 1
+O: 1 3 : 157 : 6 1  : 1
+O: 1 3 : 156 : 6 1  : 1
+O: 1 3 : 149 : 6 1  : 1
+O: 1 3 : 148 : 6 1  : 1
+O: 1 3 : 142 : 6 0  : 1
+O: 1 3 : 140 : 6 0  : 1
+O: 1 3 : 134 : 6 0  : 1
+O: 1 3 : 132 : 6 0  : 1
+O: 1 3 : 127 : 5 7  : 1
+O: 1 3 : 126 : 5 7  : 1
+O: 1 3 : 123 : 5 7  : 1
+O: 1 3 : 122 : 5 7  : 1
+O: 1 3 : 111 : 5 6  : 1
+O: 1 3 : 110 : 5 6  : 1
+O: 1 3 : 103 : 5 6  : 1
+O: 1 3 : 102 : 5 6  : 1
+O: 1 3 : 95 : 5 5  : 1
+O: 1 3 : 94 : 5 5  : 1
+O: 1 3 : 91 : 5 5  : 1
+O: 1 3 : 90 : 5 5  : 1
+O: 1 3 : 87 : 5 5  : 1
+O: 1 3 : 86 : 5 5  : 1
+O: 1 3 : 83 : 5 5  : 1
+O: 1 3 : 82 : 5 5  : 1
+O: 1 3 : 79 : 5 4  : 1
+O: 1 3 : 75 : 5 4  : 1
+O: 1 3 : 71 : 5 4  : 1
+O: 1 3 : 67 : 5 4  : 1
+O: 1 3 : 119 : 5 3  : 1
+O: 1 3 : 118 : 5 3  : 1
+O: 1 3 : 115 : 5 3  : 1
+O: 1 3 : 114 : 5 3  : 1
+O: 1 3 : 107 : 5 2  : 1
+O: 1 3 : 106 : 5 2  : 1
+O: 1 3 : 169 : 2 2  : 1
+O: 1 3 : 2 : 0 0  : 1
+O: 1 3 : 161 : 2 2  : 1
+O: 1 3 : 153 : 2 1  : 1
+O: 1 3 : 145 : 2 1  : 1
+O: 1 3 : 138 : 2 0  : 1
+O: 1 3 : 136 : 2 0  : 1
+O: 1 3 : 130 : 2 0  : 1
+O: 1 3 : 128 : 2 0  : 1
+O: 1 3 : 124 : 1 7  : 1
+O: 1 3 : 120 : 1 7  : 1
+O: 1 3 : 108 : 1 6  : 1
+O: 1 3 : 100 : 1 6  : 1
+O: 1 3 : 77 : 1 4  : 1
+O: 1 3 : 244 : 3 3  : 1
+O: 1 3 : 152 : 2 1  : 1
+O: 1 3 : 73 : 1 4  : 1
+O: 1 3 : 240 : 3 3  : 1
+O: 1 3 : 69 : 1 4  : 1
+O: 1 3 : 144 : 2 1  : 1
+O: 1 3 : 65 : 1 4  : 1
+O: 1 3 : 116 : 1 3  : 1
+O: 1 3 : 112 : 1 3  : 1
+O: 1 3 : 104 : 1 2  : 1
+O: 1 3 : 96 : 1 2  : 1
+O: 1 3 : 92 : 1 1  : 1
+O: 1 3 : 88 : 1 1  : 1
+O: 1 3 : 163 : 2 2  : 1
+O: 1 3 : 84 : 1 1  : 1
+O: 1 3 : 80 : 1 1  : 1
+O: 1 3 : 247 : 3 3  : 1
+O: 1 3 : 32 : 0 2  : 1
+O: 1 3 : 199 : 3 4  : 1
+O: 1 3 : 28 : 0 1  : 1
+O: 1 3 : 195 : 3 4  : 1
+O: 1 3 : 24 : 0 1  : 1
+O: 1 3 : 20 : 0 1  : 1
+O: 1 3 : 187 : 2 7  : 1
+O: 1 3 : 16 : 0 1  : 1
+O: 1 3 : 93 : 1 1  : 1
+O: 1 3 : 14 : 0 0  : 1
+O: 1 3 : 12 : 0 0  : 1
+O: 1 3 : 179 : 2 3  : 1
+O: 1 3 : 160 : 2 2  : 1
+O: 1 3 : 81 : 1 1  : 1
+O: 1 3 : 76 : 1 0  : 1
+O: 1 3 : 243 : 3 3  : 1
+O: 1 3 : 113 : 1 3  : 1
+O: 1 3 : 34 : 0 2  : 1
+O: 1 3 : 0 : 0 0  : 1
+O: 1 3 : 162 : 2 2  : 1
+O: 1 3 : 4 : 0 0  : 1
+O: 1 3 : 171 : 2 2  : 1
+O: 1 3 : 40 : 0 2  : 1
+O: 1 3 : 85 : 1 1  : 1
+O: 1 3 : 6 : 0 0  : 1
+O: 1 3 : 121 : 1 7  : 1
+O: 1 3 : 42 : 0 2  : 1
+O: 1 3 : 209 : 3 1  : 1
+O: 1 3 : 8 : 0 0  : 1
+O: 1 3 : 168 : 2 2  : 1
+O: 1 3 : 1 : 4 4  : 1
+O: 1 3 : 89 : 1 1  : 1
+O: 1 3 : 10 : 0 0  : 1
+O: 1 3 : 177 : 2 3  : 1
+O: 1 3 : 48 : 0 3  : 1
+O: 1 3 : 215 : 3 5  : 1
+O: 1 3 : 50 : 0 3  : 1
+O: 1 3 : 52 : 0 3  : 1
+O: 1 3 : 54 : 0 3  : 1
+O: 1 3 : 97 : 1 2  : 1
+O: 1 3 : 18 : 0 5  : 1
+O: 1 3 : 185 : 2 7  : 1
+O: 1 3 : 101 : 1 6  : 1
+O: 1 3 : 22 : 0 5  : 1
+O: 1 3 : 105 : 1 2  : 1
+O: 1 3 : 26 : 0 5  : 1
+O: 1 3 : 193 : 3 4  : 1
+O: 1 3 : 109 : 1 6  : 1
+O: 1 3 : 30 : 0 5  : 1
+O: 1 3 : 197 : 3 4  : 1
+O: 1 3 : 36 : 0 6  : 1
+O: 1 3 : 117 : 1 3  : 1
+O: 1 3 : 38 : 0 6  : 1
+O: 1 3 : 44 : 0 6  : 1
+O: 1 3 : 211 : 3 5  : 1
+O: 1 3 : 125 : 1 7  : 1
+O: 1 3 : 46 : 0 6  : 1
+O: 1 3 : 213 : 3 1  : 1
+O: 1 3 : 56 : 0 7  : 1
+O: 1 3 : 58 : 0 7  : 1
+O: 1 3 : 225 : 3 2  : 1
+O: 1 3 : 60 : 0 7  : 1
+O: 1 3 : 227 : 3 2  : 1
+O: 1 3 : 62 : 0 7  : 1
+O: 1 3 : 229 : 3 6  : 1
+O: 1 3 : 64 : 1 0  : 1
+O: 1 3 : 231 : 3 6  : 1
+O: 1 3 : 68 : 1 0  : 1
+O: 1 3 : 72 : 1 0  : 1
+O: 1 3 : 170 : 2 2  : 1
+O: 1 3 : 3 : 4 4  : 1
+O: 1 3 : 176 : 2 3  : 1
+O: 1 3 : 9 : 4 4  : 1
+O: 1 3 : 178 : 2 3  : 1
+O: 1 3 : 11 : 4 4  : 1
+O: 1 3 : 129 : 2 4  : 1
+O: 1 3 : 131 : 2 4  : 1
+O: 1 3 : 137 : 2 4  : 1
+O: 1 3 : 139 : 2 4  : 1
+O: 1 3 : 146 : 2 5  : 1
+O: 1 3 : 147 : 2 5  : 1
+O: 1 3 : 154 : 2 5  : 1
+O: 1 3 : 155 : 2 5  : 1
+O: 1 3 : 184 : 2 7  : 1
+O: 1 3 : 17 : 4 1  : 1
+O: 1 3 : 186 : 2 7  : 1
+O: 1 3 : 19 : 4 5  : 1
+O: 1 3 : 192 : 3 0  : 1
+O: 1 3 : 25 : 4 1  : 1
+O: 1 3 : 194 : 3 0  : 1
+O: 1 3 : 27 : 4 5  : 1
+O: 1 3 : 196 : 3 0  : 1
+O: 1 3 : 29 : 4 1  : 1
+O: 1 3 : 198 : 3 0  : 1
+O: 1 3 : 31 : 4 5  : 1
+O: 1 3 : 208 : 3 1  : 1
+O: 1 3 : 41 : 4 2  : 1
+O: 1 3 : 212 : 3 1  : 1
+O: 1 3 : 45 : 4 6  : 1
+O: 1 3 : 224 : 3 2  : 1
+O: 1 3 : 57 : 4 7  : 1
+O: 1 3 : 226 : 3 2  : 1
+O: 1 3 : 59 : 4 7  : 1
+O: 1 3 : 241 : 3 3  : 1
+O: 1 3 : 74 : 5 0  : 1
+O: 1 3 : 242 : 3 3  : 1
+O: 1 3 : 245 : 3 3  : 1
+O: 1 3 : 78 : 5 0  : 1
+O: 1 3 : 246 : 3 3  : 1
+O: 1 3 : 210 : 3 5  : 1
+O: 1 3 : 43 : 4 2  : 1
+O: 1 3 : 214 : 3 5  : 1
+O: 1 3 : 47 : 4 6  : 1
+O: 1 3 : 228 : 3 6  : 1
+O: 1 3 : 61 : 4 7  : 1
+O: 1 3 : 230 : 3 6  : 1
+O: 1 3 : 63 : 4 7  : 1
+O: 1 3 : 21 : 4 1  : 1
+O: 1 3 : 33 : 4 2  : 1
+O: 1 3 : 35 : 4 2  : 1
+O: 1 3 : 49 : 4 3  : 1
+O: 1 3 : 51 : 4 3  : 1
+O: 1 3 : 53 : 4 3  : 1
+O: 1 3 : 55 : 4 3  : 1
+O: 1 3 : 5 : 4 4  : 1
+O: 1 3 : 7 : 4 4  : 1
+O: 1 3 : 13 : 4 4  : 1
+O: 1 3 : 15 : 4 4  : 1
+O: 1 3 : 23 : 4 5  : 1
+O: 1 3 : 37 : 4 6  : 1
+O: 1 3 : 39 : 4 6  : 1
+O: 1 3 : 66 : 5 0  : 1
+O: 1 3 : 70 : 5 0  : 1
+O: 1 3 : 98 : 5 2  : 1
+O: 1 3 : 99 : 5 2  : 1
+O: 1 4 : 255 : 7 7  : 1
+O: 1 4 : 254 : 7 7  : 1
+O: 1 4 : 253 : 7 7  : 1
+O: 1 4 : 252 : 7 7  : 1
+O: 1 4 : 251 : 7 7  : 1
+O: 1 4 : 250 : 7 7  : 1
+O: 1 4 : 249 : 7 7  : 1
+O: 1 4 : 248 : 7 7  : 1
+O: 1 4 : 239 : 7 6  : 1
+O: 1 4 : 238 : 7 6  : 1
+O: 1 4 : 237 : 7 6  : 1
+O: 1 4 : 236 : 7 6  : 1
+O: 1 4 : 223 : 7 5  : 1
+O: 1 4 : 222 : 7 5  : 1
+O: 1 4 : 219 : 7 5  : 1
+O: 1 4 : 218 : 7 5  : 1
+O: 1 4 : 207 : 7 4  : 1
+O: 1 4 : 205 : 7 4  : 1
+O: 1 4 : 203 : 7 4  : 1
+O: 1 4 : 201 : 7 4  : 1
+O: 1 4 : 235 : 7 2  : 1
+O: 1 4 : 234 : 7 2  : 1
+O: 1 4 : 233 : 7 2  : 1
+O: 1 4 : 232 : 7 2  : 1
+O: 1 4 : 221 : 7 1  : 1
+O: 1 4 : 220 : 7 1  : 1
+O: 1 4 : 217 : 7 1  : 1
+O: 1 4 : 216 : 7 1  : 1
+O: 1 4 : 206 : 7 0  : 1
+O: 1 4 : 204 : 7 0  : 1
+O: 1 4 : 202 : 7 0  : 1
+O: 1 4 : 200 : 7 0  : 1
+O: 1 4 : 191 : 6 7  : 1
+O: 1 4 : 190 : 6 7  : 1
+O: 1 4 : 189 : 6 7  : 1
+O: 1 4 : 188 : 6 7  : 1
+O: 1 4 : 175 : 6 6  : 1
+O: 1 4 : 174 : 6 6  : 1
+O: 1 4 : 173 : 6 6  : 1
+O: 1 4 : 172 : 6 6  : 1
+O: 1 4 : 167 : 6 6  : 1
+O: 1 4 : 166 : 6 6  : 1
+O: 1 4 : 165 : 6 6  : 1
+O: 1 4 : 164 : 6 6  : 1
+O: 1 4 : 159 : 6 5  : 1
+O: 1 4 : 158 : 6 5  : 1
+O: 1 4 : 151 : 6 5  : 1
+O: 1 4 : 150 : 6 5  : 1
+O: 1 4 : 143 : 6 4  : 1
+O: 1 4 : 141 : 6 4  : 1
+O: 1 4 : 135 : 6 4  : 1
+O: 1 4 : 133 : 6 4  : 1
+O: 1 4 : 183 : 6 3  : 1
+O: 1 4 : 182 : 6 3  : 1
+O: 1 4 : 181 : 6 3  : 1
+O: 1 4 : 180 : 6 3  : 1
+O: 1 4 : 157 : 6 1  : 1
+O: 1 4 : 156 : 6 1  : 1
+O: 1 4 : 149 : 6 1  : 1
+O: 1 4 : 148 : 6 1  : 1
+O: 1 4 : 142 : 6 0  : 1
+O: 1 4 : 140 : 6 0  : 1
+O: 1 4 : 134 : 6 0  : 1
+O: 1 4 : 132 : 6 0  : 1
+O: 1 4 : 127 : 5 7  : 1
+O: 1 4 : 126 : 5 7  : 1
+O: 1 4 : 123 : 5 7  : 1
+O: 1 4 : 122 : 5 7  : 1
+O: 1 4 : 111 : 5 6  : 1
+O: 1 4 : 110 : 5 6  : 1
+O: 1 4 : 103 : 5 6  : 1
+O: 1 4 : 102 : 5 6  : 1
+O: 1 4 : 95 : 5 5  : 1
+O: 1 4 : 94 : 5 5  : 1
+O: 1 4 : 91 : 5 5  : 1
+O: 1 4 : 90 : 5 5  : 1
+O: 1 4 : 87 : 5 5  : 1
+O: 1 4 : 86 : 5 5  : 1
+O: 1 4 : 83 : 5 5  : 1
+O: 1 4 : 82 : 5 5  : 1
+O: 1 4 : 79 : 5 4  : 1
+O: 1 4 : 75 : 5 4  : 1
+O: 1 4 : 71 : 5 4  : 1
+O: 1 4 : 67 : 5 4  : 1
+O: 1 4 : 119 : 5 3  : 1
+O: 1 4 : 118 : 5 3  : 1
+O: 1 4 : 115 : 5 3  : 1
+O: 1 4 : 114 : 5 3  : 1
+O: 1 4 : 107 : 5 2  : 1
+O: 1 4 : 106 : 5 2  : 1
+O: 1 4 : 169 : 2 2  : 1
+O: 1 4 : 2 : 0 0  : 1
+O: 1 4 : 161 : 2 2  : 1
+O: 1 4 : 153 : 2 1  : 1
+O: 1 4 : 145 : 2 1  : 1
+O: 1 4 : 138 : 2 0  : 1
+O: 1 4 : 136 : 2 0  : 1
+O: 1 4 : 130 : 2 0  : 1
+O: 1 4 : 128 : 2 0  : 1
+O: 1 4 : 124 : 1 7  : 1
+O: 1 4 : 120 : 1 7  : 1
+O: 1 4 : 108 : 1 6  : 1
+O: 1 4 : 100 : 1 6  : 1
+O: 1 4 : 77 : 1 4  : 1
+O: 1 4 : 244 : 3 3  : 1
+O: 1 4 : 152 : 2 1  : 1
+O: 1 4 : 73 : 1 4  : 1
+O: 1 4 : 240 : 3 3  : 1
+O: 1 4 : 69 : 1 4  : 1
+O: 1 4 : 144 : 2 1  : 1
+O: 1 4 : 65 : 1 4  : 1
+O: 1 4 : 116 : 1 3  : 1
+O: 1 4 : 112 : 1 3  : 1
+O: 1 4 : 104 : 1 2  : 1
+O: 1 4 : 96 : 1 2  : 1
+O: 1 4 : 92 : 1 1  : 1
+O: 1 4 : 88 : 1 1  : 1
+O: 1 4 : 163 : 2 2  : 1
+O: 1 4 : 84 : 1 1  : 1
+O: 1 4 : 80 : 1 1  : 1
+O: 1 4 : 247 : 3 3  : 1
+O: 1 4 : 32 : 0 2  : 1
+O: 1 4 : 199 : 3 4  : 1
+O: 1 4 : 28 : 0 1  : 1
+O: 1 4 : 195 : 3 4  : 1
+O: 1 4 : 24 : 0 1  : 1
+O: 1 4 : 20 : 0 1  : 1
+O: 1 4 : 187 : 2 7  : 1
+O: 1 4 : 16 : 0 1  : 1
+O: 1 4 : 93 : 1 1  : 1
+O: 1 4 : 14 : 0 0  : 1
+O: 1 4 : 12 : 0 0  : 1
+O: 1 4 : 179 : 2 3  : 1
+O: 1 4 : 160 : 2 2  : 1
+O: 1 4 : 81 : 1 1  : 1
+O: 1 4 : 76 : 1 0  : 1
+O: 1 4 : 243 : 3 3  : 1
+O: 1 4 : 113 : 1 3  : 1
+O: 1 4 : 34 : 0 2  : 1
+O: 1 4 : 0 : 0 0  : 1
+O: 1 4 : 162 : 2 2  : 1
+O: 1 4 : 4 : 0 0  : 1
+O: 1 4 : 171 : 2 2  : 1
+O: 1 4 : 40 : 0 2  : 1
+O: 1 4 : 85 : 1 1  : 1
+O: 1 4 : 6 : 0 0  : 1
+O: 1 4 : 121 : 1 7  : 1
+O: 1 4 : 42 : 0 2  : 1
+O: 1 4 : 209 : 3 1  : 1
+O: 1 4 : 8 : 0 0  : 1
+O: 1 4 : 168 : 2 2  : 1
+O: 1 4 : 1 : 4 4  : 1
+O: 1 4 : 89 : 1 1  : 1
+O: 1 4 : 10 : 0 0  : 1
+O: 1 4 : 177 : 2 3  : 1
+O: 1 4 : 48 : 0 3  : 1
+O: 1 4 : 215 : 3 5  : 1
+O: 1 4 : 50 : 0 3  : 1
+O: 1 4 : 52 : 0 3  : 1
+O: 1 4 : 54 : 0 3  : 1
+O: 1 4 : 97 : 1 2  : 1
+O: 1 4 : 18 : 0 5  : 1
+O: 1 4 : 185 : 2 7  : 1
+O: 1 4 : 101 : 1 6  : 1
+O: 1 4 : 22 : 0 5  : 1
+O: 1 4 : 105 : 1 2  : 1
+O: 1 4 : 26 : 0 5  : 1
+O: 1 4 : 193 : 3 4  : 1
+O: 1 4 : 109 : 1 6  : 1
+O: 1 4 : 30 : 0 5  : 1
+O: 1 4 : 197 : 3 4  : 1
+O: 1 4 : 36 : 0 6  : 1
+O: 1 4 : 117 : 1 3  : 1
+O: 1 4 : 38 : 0 6  : 1
+O: 1 4 : 44 : 0 6  : 1
+O: 1 4 : 211 : 3 5  : 1
+O: 1 4 : 125 : 1 7  : 1
+O: 1 4 : 46 : 0 6  : 1
+O: 1 4 : 213 : 3 1  : 1
+O: 1 4 : 56 : 0 7  : 1
+O: 1 4 : 58 : 0 7  : 1
+O: 1 4 : 225 : 3 2  : 1
+O: 1 4 : 60 : 0 7  : 1
+O: 1 4 : 227 : 3 2  : 1
+O: 1 4 : 62 : 0 7  : 1
+O: 1 4 : 229 : 3 6  : 1
+O: 1 4 : 64 : 1 0  : 1
+O: 1 4 : 231 : 3 6  : 1
+O: 1 4 : 68 : 1 0  : 1
+O: 1 4 : 72 : 1 0  : 1
+O: 1 4 : 170 : 2 2  : 1
+O: 1 4 : 3 : 4 4  : 1
+O: 1 4 : 176 : 2 3  : 1
+O: 1 4 : 9 : 4 4  : 1
+O: 1 4 : 178 : 2 3  : 1
+O: 1 4 : 11 : 4 4  : 1
+O: 1 4 : 129 : 2 4  : 1
+O: 1 4 : 131 : 2 4  : 1
+O: 1 4 : 137 : 2 4  : 1
+O: 1 4 : 139 : 2 4  : 1
+O: 1 4 : 146 : 2 5  : 1
+O: 1 4 : 147 : 2 5  : 1
+O: 1 4 : 154 : 2 5  : 1
+O: 1 4 : 155 : 2 5  : 1
+O: 1 4 : 184 : 2 7  : 1
+O: 1 4 : 17 : 4 1  : 1
+O: 1 4 : 186 : 2 7  : 1
+O: 1 4 : 19 : 4 5  : 1
+O: 1 4 : 192 : 3 0  : 1
+O: 1 4 : 25 : 4 1  : 1
+O: 1 4 : 194 : 3 0  : 1
+O: 1 4 : 27 : 4 5  : 1
+O: 1 4 : 196 : 3 0  : 1
+O: 1 4 : 29 : 4 1  : 1
+O: 1 4 : 198 : 3 0  : 1
+O: 1 4 : 31 : 4 5  : 1
+O: 1 4 : 208 : 3 1  : 1
+O: 1 4 : 41 : 4 2  : 1
+O: 1 4 : 212 : 3 1  : 1
+O: 1 4 : 45 : 4 6  : 1
+O: 1 4 : 224 : 3 2  : 1
+O: 1 4 : 57 : 4 7  : 1
+O: 1 4 : 226 : 3 2  : 1
+O: 1 4 : 59 : 4 7  : 1
+O: 1 4 : 241 : 3 3  : 1
+O: 1 4 : 74 : 5 0  : 1
+O: 1 4 : 242 : 3 3  : 1
+O: 1 4 : 245 : 3 3  : 1
+O: 1 4 : 78 : 5 0  : 1
+O: 1 4 : 246 : 3 3  : 1
+O: 1 4 : 210 : 3 5  : 1
+O: 1 4 : 43 : 4 2  : 1
+O: 1 4 : 214 : 3 5  : 1
+O: 1 4 : 47 : 4 6  : 1
+O: 1 4 : 228 : 3 6  : 1
+O: 1 4 : 61 : 4 7  : 1
+O: 1 4 : 230 : 3 6  : 1
+O: 1 4 : 63 : 4 7  : 1
+O: 1 4 : 21 : 4 1  : 1
+O: 1 4 : 33 : 4 2  : 1
+O: 1 4 : 35 : 4 2  : 1
+O: 1 4 : 49 : 4 3  : 1
+O: 1 4 : 51 : 4 3  : 1
+O: 1 4 : 53 : 4 3  : 1
+O: 1 4 : 55 : 4 3  : 1
+O: 1 4 : 5 : 4 4  : 1
+O: 1 4 : 7 : 4 4  : 1
+O: 1 4 : 13 : 4 4  : 1
+O: 1 4 : 15 : 4 4  : 1
+O: 1 4 : 23 : 4 5  : 1
+O: 1 4 : 37 : 4 6  : 1
+O: 1 4 : 39 : 4 6  : 1
+O: 1 4 : 66 : 5 0  : 1
+O: 1 4 : 70 : 5 0  : 1
+O: 1 4 : 98 : 5 2  : 1
+O: 1 4 : 99 : 5 2  : 1
+O: 1 5 : 255 : 7 7  : 1
+O: 1 5 : 254 : 7 7  : 1
+O: 1 5 : 253 : 7 7  : 1
+O: 1 5 : 252 : 7 7  : 1
+O: 1 5 : 251 : 7 7  : 1
+O: 1 5 : 250 : 7 7  : 1
+O: 1 5 : 249 : 7 7  : 1
+O: 1 5 : 248 : 7 7  : 1
+O: 1 5 : 239 : 7 6  : 1
+O: 1 5 : 238 : 7 6  : 1
+O: 1 5 : 237 : 7 6  : 1
+O: 1 5 : 236 : 7 6  : 1
+O: 1 5 : 223 : 7 5  : 1
+O: 1 5 : 222 : 7 5  : 1
+O: 1 5 : 219 : 7 5  : 1
+O: 1 5 : 218 : 7 5  : 1
+O: 1 5 : 207 : 7 4  : 1
+O: 1 5 : 205 : 7 4  : 1
+O: 1 5 : 203 : 7 4  : 1
+O: 1 5 : 201 : 7 4  : 1
+O: 1 5 : 235 : 7 2  : 1
+O: 1 5 : 234 : 7 2  : 1
+O: 1 5 : 233 : 7 2  : 1
+O: 1 5 : 232 : 7 2  : 1
+O: 1 5 : 221 : 7 1  : 1
+O: 1 5 : 220 : 7 1  : 1
+O: 1 5 : 217 : 7 1  : 1
+O: 1 5 : 216 : 7 1  : 1
+O: 1 5 : 206 : 7 0  : 1
+O: 1 5 : 204 : 7 0  : 1
+O: 1 5 : 202 : 7 0  : 1
+O: 1 5 : 200 : 7 0  : 1
+O: 1 5 : 191 : 6 7  : 1
+O: 1 5 : 190 : 6 7  : 1
+O: 1 5 : 189 : 6 7  : 1
+O: 1 5 : 188 : 6 7  : 1
+O: 1 5 : 175 : 6 6  : 1
+O: 1 5 : 174 : 6 6  : 1
+O: 1 5 : 173 : 6 6  : 1
+O: 1 5 : 172 : 6 6  : 1
+O: 1 5 : 167 : 6 6  : 1
+O: 1 5 : 166 : 6 6  : 1
+O: 1 5 : 165 : 6 6  : 1
+O: 1 5 : 164 : 6 6  : 1
+O: 1 5 : 159 : 6 5  : 1
+O: 1 5 : 158 : 6 5  : 1
+O: 1 5 : 151 : 6 5  : 1
+O: 1 5 : 150 : 6 5  : 1
+O: 1 5 : 143 : 6 4  : 1
+O: 1 5 : 141 : 6 4  : 1
+O: 1 5 : 135 : 6 4  : 1
+O: 1 5 : 133 : 6 4  : 1
+O: 1 5 : 183 : 6 3  : 1
+O: 1 5 : 182 : 6 3  : 1
+O: 1 5 : 181 : 6 3  : 1
+O: 1 5 : 180 : 6 3  : 1
+O: 1 5 : 157 : 6 1  : 1
+O: 1 5 : 156 : 6 1  : 1
+O: 1 5 : 149 : 6 1  : 1
+O: 1 5 : 148 : 6 1  : 1
+O: 1 5 : 142 : 6 0  : 1
+O: 1 5 : 140 : 6 0  : 1
+O: 1 5 : 134 : 6 0  : 1
+O: 1 5 : 132 : 6 0  : 1
+O: 1 5 : 127 : 5 7  : 1
+O: 1 5 : 126 : 5 7  : 1
+O: 1 5 : 123 : 5 7  : 1
+O: 1 5 : 122 : 5 7  : 1
+O: 1 5 : 111 : 5 6  : 1
+O: 1 5 : 110 : 5 6  : 1
+O: 1 5 : 103 : 5 6  : 1
+O: 1 5 : 102 : 5 6  : 1
+O: 1 5 : 95 : 5 5  : 1
+O: 1 5 : 94 : 5 5  : 1
+O: 1 5 : 91 : 5 5  : 1
+O: 1 5 : 90 : 5 5  : 1
+O: 1 5 : 87 : 5 5  : 1
+O: 1 5 : 86 : 5 5  : 1
+O: 1 5 : 83 : 5 5  : 1
+O: 1 5 : 82 : 5 5  : 1
+O: 1 5 : 79 : 5 4  : 1
+O: 1 5 : 75 : 5 4  : 1
+O: 1 5 : 71 : 5 4  : 1
+O: 1 5 : 67 : 5 4  : 1
+O: 1 5 : 119 : 5 3  : 1
+O: 1 5 : 118 : 5 3  : 1
+O: 1 5 : 115 : 5 3  : 1
+O: 1 5 : 114 : 5 3  : 1
+O: 1 5 : 107 : 5 2  : 1
+O: 1 5 : 106 : 5 2  : 1
+O: 1 5 : 169 : 2 2  : 1
+O: 1 5 : 2 : 0 0  : 1
+O: 1 5 : 161 : 2 2  : 1
+O: 1 5 : 153 : 2 1  : 1
+O: 1 5 : 145 : 2 1  : 1
+O: 1 5 : 138 : 2 0  : 1
+O: 1 5 : 136 : 2 0  : 1
+O: 1 5 : 130 : 2 0  : 1
+O: 1 5 : 128 : 2 0  : 1
+O: 1 5 : 124 : 1 7  : 1
+O: 1 5 : 120 : 1 7  : 1
+O: 1 5 : 108 : 1 6  : 1
+O: 1 5 : 100 : 1 6  : 1
+O: 1 5 : 77 : 1 4  : 1
+O: 1 5 : 244 : 3 3  : 1
+O: 1 5 : 152 : 2 1  : 1
+O: 1 5 : 73 : 1 4  : 1
+O: 1 5 : 240 : 3 3  : 1
+O: 1 5 : 69 : 1 4  : 1
+O: 1 5 : 144 : 2 1  : 1
+O: 1 5 : 65 : 1 4  : 1
+O: 1 5 : 116 : 1 3  : 1
+O: 1 5 : 112 : 1 3  : 1
+O: 1 5 : 104 : 1 2  : 1
+O: 1 5 : 96 : 1 2  : 1
+O: 1 5 : 92 : 1 1  : 1
+O: 1 5 : 88 : 1 1  : 1
+O: 1 5 : 163 : 2 2  : 1
+O: 1 5 : 84 : 1 1  : 1
+O: 1 5 : 80 : 1 1  : 1
+O: 1 5 : 247 : 3 3  : 1
+O: 1 5 : 32 : 0 2  : 1
+O: 1 5 : 199 : 3 4  : 1
+O: 1 5 : 28 : 0 1  : 1
+O: 1 5 : 195 : 3 4  : 1
+O: 1 5 : 24 : 0 1  : 1
+O: 1 5 : 20 : 0 1  : 1
+O: 1 5 : 187 : 2 7  : 1
+O: 1 5 : 16 : 0 1  : 1
+O: 1 5 : 93 : 1 1  : 1
+O: 1 5 : 14 : 0 0  : 1
+O: 1 5 : 12 : 0 0  : 1
+O: 1 5 : 179 : 2 3  : 1
+O: 1 5 : 160 : 2 2  : 1
+O: 1 5 : 81 : 1 1  : 1
+O: 1 5 : 76 : 1 0  : 1
+O: 1 5 : 243 : 3 3  : 1
+O: 1 5 : 113 : 1 3  : 1
+O: 1 5 : 34 : 0 2  : 1
+O: 1 5 : 0 : 0 0  : 1
+O: 1 5 : 162 : 2 2  : 1
+O: 1 5 : 4 : 0 0  : 1
+O: 1 5 : 171 : 2 2  : 1
+O: 1 5 : 40 : 0 2  : 1
+O: 1 5 : 85 : 1 1  : 1
+O: 1 5 : 6 : 0 0  : 1
+O: 1 5 : 121 : 1 7  : 1
+O: 1 5 : 42 : 0 2  : 1
+O: 1 5 : 209 : 3 1  : 1
+O: 1 5 : 8 : 0 0  : 1
+O: 1 5 : 168 : 2 2  : 1
+O: 1 5 : 1 : 4 4  : 1
+O: 1 5 : 89 : 1 1  : 1
+O: 1 5 : 10 : 0 0  : 1
+O: 1 5 : 177 : 2 3  : 1
+O: 1 5 : 48 : 0 3  : 1
+O: 1 5 : 215 : 3 5  : 1
+O: 1 5 : 50 : 0 3  : 1
+O: 1 5 : 52 : 0 3  : 1
+O: 1 5 : 54 : 0 3  : 1
+O: 1 5 : 97 : 1 2  : 1
+O: 1 5 : 18 : 0 5  : 1
+O: 1 5 : 185 : 2 7  : 1
+O: 1 5 : 101 : 1 6  : 1
+O: 1 5 : 22 : 0 5  : 1
+O: 1 5 : 105 : 1 2  : 1
+O: 1 5 : 26 : 0 5  : 1
+O: 1 5 : 193 : 3 4  : 1
+O: 1 5 : 109 : 1 6  : 1
+O: 1 5 : 30 : 0 5  : 1
+O: 1 5 : 197 : 3 4  : 1
+O: 1 5 : 36 : 0 6  : 1
+O: 1 5 : 117 : 1 3  : 1
+O: 1 5 : 38 : 0 6  : 1
+O: 1 5 : 44 : 0 6  : 1
+O: 1 5 : 211 : 3 5  : 1
+O: 1 5 : 125 : 1 7  : 1
+O: 1 5 : 46 : 0 6  : 1
+O: 1 5 : 213 : 3 1  : 1
+O: 1 5 : 56 : 0 7  : 1
+O: 1 5 : 58 : 0 7  : 1
+O: 1 5 : 225 : 3 2  : 1
+O: 1 5 : 60 : 0 7  : 1
+O: 1 5 : 227 : 3 2  : 1
+O: 1 5 : 62 : 0 7  : 1
+O: 1 5 : 229 : 3 6  : 1
+O: 1 5 : 64 : 1 0  : 1
+O: 1 5 : 231 : 3 6  : 1
+O: 1 5 : 68 : 1 0  : 1
+O: 1 5 : 72 : 1 0  : 1
+O: 1 5 : 170 : 2 2  : 1
+O: 1 5 : 3 : 4 4  : 1
+O: 1 5 : 176 : 2 3  : 1
+O: 1 5 : 9 : 4 4  : 1
+O: 1 5 : 178 : 2 3  : 1
+O: 1 5 : 11 : 4 4  : 1
+O: 1 5 : 129 : 2 4  : 1
+O: 1 5 : 131 : 2 4  : 1
+O: 1 5 : 137 : 2 4  : 1
+O: 1 5 : 139 : 2 4  : 1
+O: 1 5 : 146 : 2 5  : 1
+O: 1 5 : 147 : 2 5  : 1
+O: 1 5 : 154 : 2 5  : 1
+O: 1 5 : 155 : 2 5  : 1
+O: 1 5 : 184 : 2 7  : 1
+O: 1 5 : 17 : 4 1  : 1
+O: 1 5 : 186 : 2 7  : 1
+O: 1 5 : 19 : 4 5  : 1
+O: 1 5 : 192 : 3 0  : 1
+O: 1 5 : 25 : 4 1  : 1
+O: 1 5 : 194 : 3 0  : 1
+O: 1 5 : 27 : 4 5  : 1
+O: 1 5 : 196 : 3 0  : 1
+O: 1 5 : 29 : 4 1  : 1
+O: 1 5 : 198 : 3 0  : 1
+O: 1 5 : 31 : 4 5  : 1
+O: 1 5 : 208 : 3 1  : 1
+O: 1 5 : 41 : 4 2  : 1
+O: 1 5 : 212 : 3 1  : 1
+O: 1 5 : 45 : 4 6  : 1
+O: 1 5 : 224 : 3 2  : 1
+O: 1 5 : 57 : 4 7  : 1
+O: 1 5 : 226 : 3 2  : 1
+O: 1 5 : 59 : 4 7  : 1
+O: 1 5 : 241 : 3 3  : 1
+O: 1 5 : 74 : 5 0  : 1
+O: 1 5 : 242 : 3 3  : 1
+O: 1 5 : 245 : 3 3  : 1
+O: 1 5 : 78 : 5 0  : 1
+O: 1 5 : 246 : 3 3  : 1
+O: 1 5 : 210 : 3 5  : 1
+O: 1 5 : 43 : 4 2  : 1
+O: 1 5 : 214 : 3 5  : 1
+O: 1 5 : 47 : 4 6  : 1
+O: 1 5 : 228 : 3 6  : 1
+O: 1 5 : 61 : 4 7  : 1
+O: 1 5 : 230 : 3 6  : 1
+O: 1 5 : 63 : 4 7  : 1
+O: 1 5 : 21 : 4 1  : 1
+O: 1 5 : 33 : 4 2  : 1
+O: 1 5 : 35 : 4 2  : 1
+O: 1 5 : 49 : 4 3  : 1
+O: 1 5 : 51 : 4 3  : 1
+O: 1 5 : 53 : 4 3  : 1
+O: 1 5 : 55 : 4 3  : 1
+O: 1 5 : 5 : 4 4  : 1
+O: 1 5 : 7 : 4 4  : 1
+O: 1 5 : 13 : 4 4  : 1
+O: 1 5 : 15 : 4 4  : 1
+O: 1 5 : 23 : 4 5  : 1
+O: 1 5 : 37 : 4 6  : 1
+O: 1 5 : 39 : 4 6  : 1
+O: 1 5 : 66 : 5 0  : 1
+O: 1 5 : 70 : 5 0  : 1
+O: 1 5 : 98 : 5 2  : 1
+O: 1 5 : 99 : 5 2  : 1
+O: 2 0 : 255 : 7 7  : 1
+O: 2 0 : 254 : 7 7  : 1
+O: 2 0 : 253 : 7 7  : 1
+O: 2 0 : 252 : 7 7  : 1
+O: 2 0 : 251 : 7 7  : 1
+O: 2 0 : 250 : 7 7  : 1
+O: 2 0 : 249 : 7 7  : 1
+O: 2 0 : 248 : 7 7  : 1
+O: 2 0 : 239 : 7 6  : 1
+O: 2 0 : 238 : 7 6  : 1
+O: 2 0 : 237 : 7 6  : 1
+O: 2 0 : 236 : 7 6  : 1
+O: 2 0 : 223 : 7 5  : 1
+O: 2 0 : 222 : 7 5  : 1
+O: 2 0 : 219 : 7 5  : 1
+O: 2 0 : 218 : 7 5  : 1
+O: 2 0 : 207 : 7 4  : 1
+O: 2 0 : 205 : 7 4  : 1
+O: 2 0 : 203 : 7 4  : 1
+O: 2 0 : 201 : 7 4  : 1
+O: 2 0 : 235 : 7 2  : 1
+O: 2 0 : 234 : 7 2  : 1
+O: 2 0 : 233 : 7 2  : 1
+O: 2 0 : 232 : 7 2  : 1
+O: 2 0 : 221 : 7 1  : 1
+O: 2 0 : 220 : 7 1  : 1
+O: 2 0 : 217 : 7 1  : 1
+O: 2 0 : 216 : 7 1  : 1
+O: 2 0 : 206 : 7 0  : 1
+O: 2 0 : 204 : 7 0  : 1
+O: 2 0 : 202 : 7 0  : 1
+O: 2 0 : 200 : 7 0  : 1
+O: 2 0 : 191 : 6 7  : 1
+O: 2 0 : 190 : 6 7  : 1
+O: 2 0 : 189 : 6 7  : 1
+O: 2 0 : 188 : 6 7  : 1
+O: 2 0 : 175 : 6 6  : 1
+O: 2 0 : 174 : 6 6  : 1
+O: 2 0 : 173 : 6 6  : 1
+O: 2 0 : 172 : 6 6  : 1
+O: 2 0 : 167 : 6 6  : 1
+O: 2 0 : 166 : 6 6  : 1
+O: 2 0 : 165 : 6 6  : 1
+O: 2 0 : 164 : 6 6  : 1
+O: 2 0 : 159 : 6 5  : 1
+O: 2 0 : 158 : 6 5  : 1
+O: 2 0 : 151 : 6 5  : 1
+O: 2 0 : 150 : 6 5  : 1
+O: 2 0 : 143 : 6 4  : 1
+O: 2 0 : 141 : 6 4  : 1
+O: 2 0 : 135 : 6 4  : 1
+O: 2 0 : 133 : 6 4  : 1
+O: 2 0 : 183 : 6 3  : 1
+O: 2 0 : 182 : 6 3  : 1
+O: 2 0 : 181 : 6 3  : 1
+O: 2 0 : 180 : 6 3  : 1
+O: 2 0 : 157 : 6 1  : 1
+O: 2 0 : 156 : 6 1  : 1
+O: 2 0 : 149 : 6 1  : 1
+O: 2 0 : 148 : 6 1  : 1
+O: 2 0 : 142 : 6 0  : 1
+O: 2 0 : 140 : 6 0  : 1
+O: 2 0 : 134 : 6 0  : 1
+O: 2 0 : 132 : 6 0  : 1
+O: 2 0 : 127 : 5 7  : 1
+O: 2 0 : 126 : 5 7  : 1
+O: 2 0 : 123 : 5 7  : 1
+O: 2 0 : 122 : 5 7  : 1
+O: 2 0 : 111 : 5 6  : 1
+O: 2 0 : 110 : 5 6  : 1
+O: 2 0 : 103 : 5 6  : 1
+O: 2 0 : 102 : 5 6  : 1
+O: 2 0 : 95 : 5 5  : 1
+O: 2 0 : 94 : 5 5  : 1
+O: 2 0 : 91 : 5 5  : 1
+O: 2 0 : 90 : 5 5  : 1
+O: 2 0 : 87 : 5 5  : 1
+O: 2 0 : 86 : 5 5  : 1
+O: 2 0 : 83 : 5 5  : 1
+O: 2 0 : 82 : 5 5  : 1
+O: 2 0 : 79 : 5 4  : 1
+O: 2 0 : 75 : 5 4  : 1
+O: 2 0 : 71 : 5 4  : 1
+O: 2 0 : 67 : 5 4  : 1
+O: 2 0 : 119 : 5 3  : 1
+O: 2 0 : 118 : 5 3  : 1
+O: 2 0 : 115 : 5 3  : 1
+O: 2 0 : 114 : 5 3  : 1
+O: 2 0 : 107 : 5 2  : 1
+O: 2 0 : 106 : 5 2  : 1
+O: 2 0 : 169 : 2 2  : 1
+O: 2 0 : 2 : 0 0  : 1
+O: 2 0 : 161 : 2 2  : 1
+O: 2 0 : 153 : 2 1  : 1
+O: 2 0 : 145 : 2 1  : 1
+O: 2 0 : 138 : 2 0  : 1
+O: 2 0 : 136 : 2 0  : 1
+O: 2 0 : 130 : 2 0  : 1
+O: 2 0 : 128 : 2 0  : 1
+O: 2 0 : 124 : 1 7  : 1
+O: 2 0 : 120 : 1 7  : 1
+O: 2 0 : 108 : 1 6  : 1
+O: 2 0 : 100 : 1 6  : 1
+O: 2 0 : 77 : 1 4  : 1
+O: 2 0 : 244 : 3 3  : 1
+O: 2 0 : 152 : 2 1  : 1
+O: 2 0 : 73 : 1 4  : 1
+O: 2 0 : 240 : 3 3  : 1
+O: 2 0 : 69 : 1 4  : 1
+O: 2 0 : 144 : 2 1  : 1
+O: 2 0 : 65 : 1 4  : 1
+O: 2 0 : 116 : 1 3  : 1
+O: 2 0 : 112 : 1 3  : 1
+O: 2 0 : 104 : 1 2  : 1
+O: 2 0 : 96 : 1 2  : 1
+O: 2 0 : 92 : 1 1  : 1
+O: 2 0 : 88 : 1 1  : 1
+O: 2 0 : 163 : 2 2  : 1
+O: 2 0 : 84 : 1 1  : 1
+O: 2 0 : 80 : 1 1  : 1
+O: 2 0 : 247 : 3 3  : 1
+O: 2 0 : 32 : 0 2  : 1
+O: 2 0 : 199 : 3 4  : 1
+O: 2 0 : 28 : 0 1  : 1
+O: 2 0 : 195 : 3 4  : 1
+O: 2 0 : 24 : 0 1  : 1
+O: 2 0 : 20 : 0 1  : 1
+O: 2 0 : 187 : 2 7  : 1
+O: 2 0 : 16 : 0 1  : 1
+O: 2 0 : 93 : 1 1  : 1
+O: 2 0 : 14 : 0 0  : 1
+O: 2 0 : 12 : 0 0  : 1
+O: 2 0 : 179 : 2 3  : 1
+O: 2 0 : 160 : 2 2  : 1
+O: 2 0 : 81 : 1 1  : 1
+O: 2 0 : 76 : 1 0  : 1
+O: 2 0 : 243 : 3 3  : 1
+O: 2 0 : 113 : 1 3  : 1
+O: 2 0 : 34 : 0 2  : 1
+O: 2 0 : 0 : 0 0  : 1
+O: 2 0 : 162 : 2 2  : 1
+O: 2 0 : 4 : 0 0  : 1
+O: 2 0 : 171 : 2 2  : 1
+O: 2 0 : 40 : 0 2  : 1
+O: 2 0 : 85 : 1 1  : 1
+O: 2 0 : 6 : 0 0  : 1
+O: 2 0 : 121 : 1 7  : 1
+O: 2 0 : 42 : 0 2  : 1
+O: 2 0 : 209 : 3 1  : 1
+O: 2 0 : 8 : 0 0  : 1
+O: 2 0 : 168 : 2 2  : 1
+O: 2 0 : 1 : 4 4  : 1
+O: 2 0 : 89 : 1 1  : 1
+O: 2 0 : 10 : 0 0  : 1
+O: 2 0 : 177 : 2 3  : 1
+O: 2 0 : 48 : 0 3  : 1
+O: 2 0 : 215 : 3 5  : 1
+O: 2 0 : 50 : 0 3  : 1
+O: 2 0 : 52 : 0 3  : 1
+O: 2 0 : 54 : 0 3  : 1
+O: 2 0 : 97 : 1 2  : 1
+O: 2 0 : 18 : 0 5  : 1
+O: 2 0 : 185 : 2 7  : 1
+O: 2 0 : 101 : 1 6  : 1
+O: 2 0 : 22 : 0 5  : 1
+O: 2 0 : 105 : 1 2  : 1
+O: 2 0 : 26 : 0 5  : 1
+O: 2 0 : 193 : 3 4  : 1
+O: 2 0 : 109 : 1 6  : 1
+O: 2 0 : 30 : 0 5  : 1
+O: 2 0 : 197 : 3 4  : 1
+O: 2 0 : 36 : 0 6  : 1
+O: 2 0 : 117 : 1 3  : 1
+O: 2 0 : 38 : 0 6  : 1
+O: 2 0 : 44 : 0 6  : 1
+O: 2 0 : 211 : 3 5  : 1
+O: 2 0 : 125 : 1 7  : 1
+O: 2 0 : 46 : 0 6  : 1
+O: 2 0 : 213 : 3 1  : 1
+O: 2 0 : 56 : 0 7  : 1
+O: 2 0 : 58 : 0 7  : 1
+O: 2 0 : 225 : 3 2  : 1
+O: 2 0 : 60 : 0 7  : 1
+O: 2 0 : 227 : 3 2  : 1
+O: 2 0 : 62 : 0 7  : 1
+O: 2 0 : 229 : 3 6  : 1
+O: 2 0 : 64 : 1 0  : 1
+O: 2 0 : 231 : 3 6  : 1
+O: 2 0 : 68 : 1 0  : 1
+O: 2 0 : 72 : 1 0  : 1
+O: 2 0 : 170 : 2 2  : 1
+O: 2 0 : 3 : 4 4  : 1
+O: 2 0 : 176 : 2 3  : 1
+O: 2 0 : 9 : 4 4  : 1
+O: 2 0 : 178 : 2 3  : 1
+O: 2 0 : 11 : 4 4  : 1
+O: 2 0 : 129 : 2 4  : 1
+O: 2 0 : 131 : 2 4  : 1
+O: 2 0 : 137 : 2 4  : 1
+O: 2 0 : 139 : 2 4  : 1
+O: 2 0 : 146 : 2 5  : 1
+O: 2 0 : 147 : 2 5  : 1
+O: 2 0 : 154 : 2 5  : 1
+O: 2 0 : 155 : 2 5  : 1
+O: 2 0 : 184 : 2 7  : 1
+O: 2 0 : 17 : 4 1  : 1
+O: 2 0 : 186 : 2 7  : 1
+O: 2 0 : 19 : 4 5  : 1
+O: 2 0 : 192 : 3 0  : 1
+O: 2 0 : 25 : 4 1  : 1
+O: 2 0 : 194 : 3 0  : 1
+O: 2 0 : 27 : 4 5  : 1
+O: 2 0 : 196 : 3 0  : 1
+O: 2 0 : 29 : 4 1  : 1
+O: 2 0 : 198 : 3 0  : 1
+O: 2 0 : 31 : 4 5  : 1
+O: 2 0 : 208 : 3 1  : 1
+O: 2 0 : 41 : 4 2  : 1
+O: 2 0 : 212 : 3 1  : 1
+O: 2 0 : 45 : 4 6  : 1
+O: 2 0 : 224 : 3 2  : 1
+O: 2 0 : 57 : 4 7  : 1
+O: 2 0 : 226 : 3 2  : 1
+O: 2 0 : 59 : 4 7  : 1
+O: 2 0 : 241 : 3 3  : 1
+O: 2 0 : 74 : 5 0  : 1
+O: 2 0 : 242 : 3 3  : 1
+O: 2 0 : 245 : 3 3  : 1
+O: 2 0 : 78 : 5 0  : 1
+O: 2 0 : 246 : 3 3  : 1
+O: 2 0 : 210 : 3 5  : 1
+O: 2 0 : 43 : 4 2  : 1
+O: 2 0 : 214 : 3 5  : 1
+O: 2 0 : 47 : 4 6  : 1
+O: 2 0 : 228 : 3 6  : 1
+O: 2 0 : 61 : 4 7  : 1
+O: 2 0 : 230 : 3 6  : 1
+O: 2 0 : 63 : 4 7  : 1
+O: 2 0 : 21 : 4 1  : 1
+O: 2 0 : 33 : 4 2  : 1
+O: 2 0 : 35 : 4 2  : 1
+O: 2 0 : 49 : 4 3  : 1
+O: 2 0 : 51 : 4 3  : 1
+O: 2 0 : 53 : 4 3  : 1
+O: 2 0 : 55 : 4 3  : 1
+O: 2 0 : 5 : 4 4  : 1
+O: 2 0 : 7 : 4 4  : 1
+O: 2 0 : 13 : 4 4  : 1
+O: 2 0 : 15 : 4 4  : 1
+O: 2 0 : 23 : 4 5  : 1
+O: 2 0 : 37 : 4 6  : 1
+O: 2 0 : 39 : 4 6  : 1
+O: 2 0 : 66 : 5 0  : 1
+O: 2 0 : 70 : 5 0  : 1
+O: 2 0 : 98 : 5 2  : 1
+O: 2 0 : 99 : 5 2  : 1
+O: 2 1 : 255 : 7 7  : 1
+O: 2 1 : 254 : 7 7  : 1
+O: 2 1 : 253 : 7 7  : 1
+O: 2 1 : 252 : 7 7  : 1
+O: 2 1 : 251 : 7 7  : 1
+O: 2 1 : 250 : 7 7  : 1
+O: 2 1 : 249 : 7 7  : 1
+O: 2 1 : 248 : 7 7  : 1
+O: 2 1 : 239 : 7 6  : 1
+O: 2 1 : 238 : 7 6  : 1
+O: 2 1 : 237 : 7 6  : 1
+O: 2 1 : 236 : 7 6  : 1
+O: 2 1 : 223 : 7 5  : 1
+O: 2 1 : 222 : 7 5  : 1
+O: 2 1 : 219 : 7 5  : 1
+O: 2 1 : 218 : 7 5  : 1
+O: 2 1 : 207 : 7 4  : 1
+O: 2 1 : 205 : 7 4  : 1
+O: 2 1 : 203 : 7 4  : 1
+O: 2 1 : 201 : 7 4  : 1
+O: 2 1 : 235 : 7 2  : 1
+O: 2 1 : 234 : 7 2  : 1
+O: 2 1 : 233 : 7 2  : 1
+O: 2 1 : 232 : 7 2  : 1
+O: 2 1 : 221 : 7 1  : 1
+O: 2 1 : 220 : 7 1  : 1
+O: 2 1 : 217 : 7 1  : 1
+O: 2 1 : 216 : 7 1  : 1
+O: 2 1 : 206 : 7 0  : 1
+O: 2 1 : 204 : 7 0  : 1
+O: 2 1 : 202 : 7 0  : 1
+O: 2 1 : 200 : 7 0  : 1
+O: 2 1 : 191 : 6 7  : 1
+O: 2 1 : 190 : 6 7  : 1
+O: 2 1 : 189 : 6 7  : 1
+O: 2 1 : 188 : 6 7  : 1
+O: 2 1 : 175 : 6 6  : 1
+O: 2 1 : 174 : 6 6  : 1
+O: 2 1 : 173 : 6 6  : 1
+O: 2 1 : 172 : 6 6  : 1
+O: 2 1 : 167 : 6 6  : 1
+O: 2 1 : 166 : 6 6  : 1
+O: 2 1 : 165 : 6 6  : 1
+O: 2 1 : 164 : 6 6  : 1
+O: 2 1 : 159 : 6 5  : 1
+O: 2 1 : 158 : 6 5  : 1
+O: 2 1 : 151 : 6 5  : 1
+O: 2 1 : 150 : 6 5  : 1
+O: 2 1 : 143 : 6 4  : 1
+O: 2 1 : 141 : 6 4  : 1
+O: 2 1 : 135 : 6 4  : 1
+O: 2 1 : 133 : 6 4  : 1
+O: 2 1 : 183 : 6 3  : 1
+O: 2 1 : 182 : 6 3  : 1
+O: 2 1 : 181 : 6 3  : 1
+O: 2 1 : 180 : 6 3  : 1
+O: 2 1 : 157 : 6 1  : 1
+O: 2 1 : 156 : 6 1  : 1
+O: 2 1 : 149 : 6 1  : 1
+O: 2 1 : 148 : 6 1  : 1
+O: 2 1 : 142 : 6 0  : 1
+O: 2 1 : 140 : 6 0  : 1
+O: 2 1 : 134 : 6 0  : 1
+O: 2 1 : 132 : 6 0  : 1
+O: 2 1 : 127 : 5 7  : 1
+O: 2 1 : 126 : 5 7  : 1
+O: 2 1 : 123 : 5 7  : 1
+O: 2 1 : 122 : 5 7  : 1
+O: 2 1 : 111 : 5 6  : 1
+O: 2 1 : 110 : 5 6  : 1
+O: 2 1 : 103 : 5 6  : 1
+O: 2 1 : 102 : 5 6  : 1
+O: 2 1 : 95 : 5 5  : 1
+O: 2 1 : 94 : 5 5  : 1
+O: 2 1 : 91 : 5 5  : 1
+O: 2 1 : 90 : 5 5  : 1
+O: 2 1 : 87 : 5 5  : 1
+O: 2 1 : 86 : 5 5  : 1
+O: 2 1 : 83 : 5 5  : 1
+O: 2 1 : 82 : 5 5  : 1
+O: 2 1 : 79 : 5 4  : 1
+O: 2 1 : 75 : 5 4  : 1
+O: 2 1 : 71 : 5 4  : 1
+O: 2 1 : 67 : 5 4  : 1
+O: 2 1 : 119 : 5 3  : 1
+O: 2 1 : 118 : 5 3  : 1
+O: 2 1 : 115 : 5 3  : 1
+O: 2 1 : 114 : 5 3  : 1
+O: 2 1 : 107 : 5 2  : 1
+O: 2 1 : 106 : 5 2  : 1
+O: 2 1 : 169 : 2 2  : 1
+O: 2 1 : 2 : 0 0  : 1
+O: 2 1 : 161 : 2 2  : 1
+O: 2 1 : 153 : 2 1  : 1
+O: 2 1 : 145 : 2 1  : 1
+O: 2 1 : 138 : 2 0  : 1
+O: 2 1 : 136 : 2 0  : 1
+O: 2 1 : 130 : 2 0  : 1
+O: 2 1 : 128 : 2 0  : 1
+O: 2 1 : 124 : 1 7  : 1
+O: 2 1 : 120 : 1 7  : 1
+O: 2 1 : 108 : 1 6  : 1
+O: 2 1 : 100 : 1 6  : 1
+O: 2 1 : 77 : 1 4  : 1
+O: 2 1 : 244 : 3 3  : 1
+O: 2 1 : 152 : 2 1  : 1
+O: 2 1 : 73 : 1 4  : 1
+O: 2 1 : 240 : 3 3  : 1
+O: 2 1 : 69 : 1 4  : 1
+O: 2 1 : 144 : 2 1  : 1
+O: 2 1 : 65 : 1 4  : 1
+O: 2 1 : 116 : 1 3  : 1
+O: 2 1 : 112 : 1 3  : 1
+O: 2 1 : 104 : 1 2  : 1
+O: 2 1 : 96 : 1 2  : 1
+O: 2 1 : 92 : 1 1  : 1
+O: 2 1 : 88 : 1 1  : 1
+O: 2 1 : 163 : 2 2  : 1
+O: 2 1 : 84 : 1 1  : 1
+O: 2 1 : 80 : 1 1  : 1
+O: 2 1 : 247 : 3 3  : 1
+O: 2 1 : 32 : 0 2  : 1
+O: 2 1 : 199 : 3 4  : 1
+O: 2 1 : 28 : 0 1  : 1
+O: 2 1 : 195 : 3 4  : 1
+O: 2 1 : 24 : 0 1  : 1
+O: 2 1 : 20 : 0 1  : 1
+O: 2 1 : 187 : 2 7  : 1
+O: 2 1 : 16 : 0 1  : 1
+O: 2 1 : 93 : 1 1  : 1
+O: 2 1 : 14 : 0 0  : 1
+O: 2 1 : 12 : 0 0  : 1
+O: 2 1 : 179 : 2 3  : 1
+O: 2 1 : 160 : 2 2  : 1
+O: 2 1 : 81 : 1 1  : 1
+O: 2 1 : 76 : 1 0  : 1
+O: 2 1 : 243 : 3 3  : 1
+O: 2 1 : 113 : 1 3  : 1
+O: 2 1 : 34 : 0 2  : 1
+O: 2 1 : 0 : 0 0  : 1
+O: 2 1 : 162 : 2 2  : 1
+O: 2 1 : 4 : 0 0  : 1
+O: 2 1 : 171 : 2 2  : 1
+O: 2 1 : 40 : 0 2  : 1
+O: 2 1 : 85 : 1 1  : 1
+O: 2 1 : 6 : 0 0  : 1
+O: 2 1 : 121 : 1 7  : 1
+O: 2 1 : 42 : 0 2  : 1
+O: 2 1 : 209 : 3 1  : 1
+O: 2 1 : 8 : 0 0  : 1
+O: 2 1 : 168 : 2 2  : 1
+O: 2 1 : 1 : 4 4  : 1
+O: 2 1 : 89 : 1 1  : 1
+O: 2 1 : 10 : 0 0  : 1
+O: 2 1 : 177 : 2 3  : 1
+O: 2 1 : 48 : 0 3  : 1
+O: 2 1 : 215 : 3 5  : 1
+O: 2 1 : 50 : 0 3  : 1
+O: 2 1 : 52 : 0 3  : 1
+O: 2 1 : 54 : 0 3  : 1
+O: 2 1 : 97 : 1 2  : 1
+O: 2 1 : 18 : 0 5  : 1
+O: 2 1 : 185 : 2 7  : 1
+O: 2 1 : 101 : 1 6  : 1
+O: 2 1 : 22 : 0 5  : 1
+O: 2 1 : 105 : 1 2  : 1
+O: 2 1 : 26 : 0 5  : 1
+O: 2 1 : 193 : 3 4  : 1
+O: 2 1 : 109 : 1 6  : 1
+O: 2 1 : 30 : 0 5  : 1
+O: 2 1 : 197 : 3 4  : 1
+O: 2 1 : 36 : 0 6  : 1
+O: 2 1 : 117 : 1 3  : 1
+O: 2 1 : 38 : 0 6  : 1
+O: 2 1 : 44 : 0 6  : 1
+O: 2 1 : 211 : 3 5  : 1
+O: 2 1 : 125 : 1 7  : 1
+O: 2 1 : 46 : 0 6  : 1
+O: 2 1 : 213 : 3 1  : 1
+O: 2 1 : 56 : 0 7  : 1
+O: 2 1 : 58 : 0 7  : 1
+O: 2 1 : 225 : 3 2  : 1
+O: 2 1 : 60 : 0 7  : 1
+O: 2 1 : 227 : 3 2  : 1
+O: 2 1 : 62 : 0 7  : 1
+O: 2 1 : 229 : 3 6  : 1
+O: 2 1 : 64 : 1 0  : 1
+O: 2 1 : 231 : 3 6  : 1
+O: 2 1 : 68 : 1 0  : 1
+O: 2 1 : 72 : 1 0  : 1
+O: 2 1 : 170 : 2 2  : 1
+O: 2 1 : 3 : 4 4  : 1
+O: 2 1 : 176 : 2 3  : 1
+O: 2 1 : 9 : 4 4  : 1
+O: 2 1 : 178 : 2 3  : 1
+O: 2 1 : 11 : 4 4  : 1
+O: 2 1 : 129 : 2 4  : 1
+O: 2 1 : 131 : 2 4  : 1
+O: 2 1 : 137 : 2 4  : 1
+O: 2 1 : 139 : 2 4  : 1
+O: 2 1 : 146 : 2 5  : 1
+O: 2 1 : 147 : 2 5  : 1
+O: 2 1 : 154 : 2 5  : 1
+O: 2 1 : 155 : 2 5  : 1
+O: 2 1 : 184 : 2 7  : 1
+O: 2 1 : 17 : 4 1  : 1
+O: 2 1 : 186 : 2 7  : 1
+O: 2 1 : 19 : 4 5  : 1
+O: 2 1 : 192 : 3 0  : 1
+O: 2 1 : 25 : 4 1  : 1
+O: 2 1 : 194 : 3 0  : 1
+O: 2 1 : 27 : 4 5  : 1
+O: 2 1 : 196 : 3 0  : 1
+O: 2 1 : 29 : 4 1  : 1
+O: 2 1 : 198 : 3 0  : 1
+O: 2 1 : 31 : 4 5  : 1
+O: 2 1 : 208 : 3 1  : 1
+O: 2 1 : 41 : 4 2  : 1
+O: 2 1 : 212 : 3 1  : 1
+O: 2 1 : 45 : 4 6  : 1
+O: 2 1 : 224 : 3 2  : 1
+O: 2 1 : 57 : 4 7  : 1
+O: 2 1 : 226 : 3 2  : 1
+O: 2 1 : 59 : 4 7  : 1
+O: 2 1 : 241 : 3 3  : 1
+O: 2 1 : 74 : 5 0  : 1
+O: 2 1 : 242 : 3 3  : 1
+O: 2 1 : 245 : 3 3  : 1
+O: 2 1 : 78 : 5 0  : 1
+O: 2 1 : 246 : 3 3  : 1
+O: 2 1 : 210 : 3 5  : 1
+O: 2 1 : 43 : 4 2  : 1
+O: 2 1 : 214 : 3 5  : 1
+O: 2 1 : 47 : 4 6  : 1
+O: 2 1 : 228 : 3 6  : 1
+O: 2 1 : 61 : 4 7  : 1
+O: 2 1 : 230 : 3 6  : 1
+O: 2 1 : 63 : 4 7  : 1
+O: 2 1 : 21 : 4 1  : 1
+O: 2 1 : 33 : 4 2  : 1
+O: 2 1 : 35 : 4 2  : 1
+O: 2 1 : 49 : 4 3  : 1
+O: 2 1 : 51 : 4 3  : 1
+O: 2 1 : 53 : 4 3  : 1
+O: 2 1 : 55 : 4 3  : 1
+O: 2 1 : 5 : 4 4  : 1
+O: 2 1 : 7 : 4 4  : 1
+O: 2 1 : 13 : 4 4  : 1
+O: 2 1 : 15 : 4 4  : 1
+O: 2 1 : 23 : 4 5  : 1
+O: 2 1 : 37 : 4 6  : 1
+O: 2 1 : 39 : 4 6  : 1
+O: 2 1 : 66 : 5 0  : 1
+O: 2 1 : 70 : 5 0  : 1
+O: 2 1 : 98 : 5 2  : 1
+O: 2 1 : 99 : 5 2  : 1
+O: 2 2 : 255 : 7 7  : 1
+O: 2 2 : 254 : 7 7  : 1
+O: 2 2 : 253 : 7 7  : 1
+O: 2 2 : 252 : 7 7  : 1
+O: 2 2 : 251 : 7 7  : 1
+O: 2 2 : 250 : 7 7  : 1
+O: 2 2 : 249 : 7 7  : 1
+O: 2 2 : 248 : 7 7  : 1
+O: 2 2 : 239 : 7 6  : 1
+O: 2 2 : 238 : 7 6  : 1
+O: 2 2 : 237 : 7 6  : 1
+O: 2 2 : 236 : 7 6  : 1
+O: 2 2 : 223 : 7 5  : 1
+O: 2 2 : 222 : 7 5  : 1
+O: 2 2 : 219 : 7 5  : 1
+O: 2 2 : 218 : 7 5  : 1
+O: 2 2 : 207 : 7 4  : 1
+O: 2 2 : 205 : 7 4  : 1
+O: 2 2 : 203 : 7 4  : 1
+O: 2 2 : 201 : 7 4  : 1
+O: 2 2 : 235 : 7 2  : 1
+O: 2 2 : 234 : 7 2  : 1
+O: 2 2 : 233 : 7 2  : 1
+O: 2 2 : 232 : 7 2  : 1
+O: 2 2 : 221 : 7 1  : 1
+O: 2 2 : 220 : 7 1  : 1
+O: 2 2 : 217 : 7 1  : 1
+O: 2 2 : 216 : 7 1  : 1
+O: 2 2 : 206 : 7 0  : 1
+O: 2 2 : 204 : 7 0  : 1
+O: 2 2 : 202 : 7 0  : 1
+O: 2 2 : 200 : 7 0  : 1
+O: 2 2 : 191 : 6 7  : 1
+O: 2 2 : 190 : 6 7  : 1
+O: 2 2 : 189 : 6 7  : 1
+O: 2 2 : 188 : 6 7  : 1
+O: 2 2 : 175 : 6 6  : 1
+O: 2 2 : 174 : 6 6  : 1
+O: 2 2 : 173 : 6 6  : 1
+O: 2 2 : 172 : 6 6  : 1
+O: 2 2 : 167 : 6 6  : 1
+O: 2 2 : 166 : 6 6  : 1
+O: 2 2 : 165 : 6 6  : 1
+O: 2 2 : 164 : 6 6  : 1
+O: 2 2 : 159 : 6 5  : 1
+O: 2 2 : 158 : 6 5  : 1
+O: 2 2 : 151 : 6 5  : 1
+O: 2 2 : 150 : 6 5  : 1
+O: 2 2 : 143 : 6 4  : 1
+O: 2 2 : 141 : 6 4  : 1
+O: 2 2 : 135 : 6 4  : 1
+O: 2 2 : 133 : 6 4  : 1
+O: 2 2 : 183 : 6 3  : 1
+O: 2 2 : 182 : 6 3  : 1
+O: 2 2 : 181 : 6 3  : 1
+O: 2 2 : 180 : 6 3  : 1
+O: 2 2 : 157 : 6 1  : 1
+O: 2 2 : 156 : 6 1  : 1
+O: 2 2 : 149 : 6 1  : 1
+O: 2 2 : 148 : 6 1  : 1
+O: 2 2 : 142 : 6 0  : 1
+O: 2 2 : 140 : 6 0  : 1
+O: 2 2 : 134 : 6 0  : 1
+O: 2 2 : 132 : 6 0  : 1
+O: 2 2 : 127 : 5 7  : 1
+O: 2 2 : 126 : 5 7  : 1
+O: 2 2 : 123 : 5 7  : 1
+O: 2 2 : 122 : 5 7  : 1
+O: 2 2 : 111 : 5 6  : 1
+O: 2 2 : 110 : 5 6  : 1
+O: 2 2 : 103 : 5 6  : 1
+O: 2 2 : 102 : 5 6  : 1
+O: 2 2 : 95 : 5 5  : 1
+O: 2 2 : 94 : 5 5  : 1
+O: 2 2 : 91 : 5 5  : 1
+O: 2 2 : 90 : 5 5  : 1
+O: 2 2 : 87 : 5 5  : 1
+O: 2 2 : 86 : 5 5  : 1
+O: 2 2 : 83 : 5 5  : 1
+O: 2 2 : 82 : 5 5  : 1
+O: 2 2 : 79 : 5 4  : 1
+O: 2 2 : 75 : 5 4  : 1
+O: 2 2 : 71 : 5 4  : 1
+O: 2 2 : 67 : 5 4  : 1
+O: 2 2 : 119 : 5 3  : 1
+O: 2 2 : 118 : 5 3  : 1
+O: 2 2 : 115 : 5 3  : 1
+O: 2 2 : 114 : 5 3  : 1
+O: 2 2 : 107 : 5 2  : 1
+O: 2 2 : 106 : 5 2  : 1
+O: 2 2 : 169 : 2 2  : 1
+O: 2 2 : 2 : 0 0  : 1
+O: 2 2 : 161 : 2 2  : 1
+O: 2 2 : 153 : 2 1  : 1
+O: 2 2 : 145 : 2 1  : 1
+O: 2 2 : 138 : 2 0  : 1
+O: 2 2 : 136 : 2 0  : 1
+O: 2 2 : 130 : 2 0  : 1
+O: 2 2 : 128 : 2 0  : 1
+O: 2 2 : 124 : 1 7  : 1
+O: 2 2 : 120 : 1 7  : 1
+O: 2 2 : 108 : 1 6  : 1
+O: 2 2 : 100 : 1 6  : 1
+O: 2 2 : 77 : 1 4  : 1
+O: 2 2 : 244 : 3 3  : 1
+O: 2 2 : 152 : 2 1  : 1
+O: 2 2 : 73 : 1 4  : 1
+O: 2 2 : 240 : 3 3  : 1
+O: 2 2 : 69 : 1 4  : 1
+O: 2 2 : 144 : 2 1  : 1
+O: 2 2 : 65 : 1 4  : 1
+O: 2 2 : 116 : 1 3  : 1
+O: 2 2 : 112 : 1 3  : 1
+O: 2 2 : 104 : 1 2  : 1
+O: 2 2 : 96 : 1 2  : 1
+O: 2 2 : 92 : 1 1  : 1
+O: 2 2 : 88 : 1 1  : 1
+O: 2 2 : 163 : 2 2  : 1
+O: 2 2 : 84 : 1 1  : 1
+O: 2 2 : 80 : 1 1  : 1
+O: 2 2 : 247 : 3 3  : 1
+O: 2 2 : 32 : 0 2  : 1
+O: 2 2 : 199 : 3 4  : 1
+O: 2 2 : 28 : 0 1  : 1
+O: 2 2 : 195 : 3 4  : 1
+O: 2 2 : 24 : 0 1  : 1
+O: 2 2 : 20 : 0 1  : 1
+O: 2 2 : 187 : 2 7  : 1
+O: 2 2 : 16 : 0 1  : 1
+O: 2 2 : 93 : 1 1  : 1
+O: 2 2 : 14 : 0 0  : 1
+O: 2 2 : 12 : 0 0  : 1
+O: 2 2 : 179 : 2 3  : 1
+O: 2 2 : 160 : 2 2  : 1
+O: 2 2 : 81 : 1 1  : 1
+O: 2 2 : 76 : 1 0  : 1
+O: 2 2 : 243 : 3 3  : 1
+O: 2 2 : 113 : 1 3  : 1
+O: 2 2 : 34 : 0 2  : 1
+O: 2 2 : 0 : 0 0  : 1
+O: 2 2 : 162 : 2 2  : 1
+O: 2 2 : 4 : 0 0  : 1
+O: 2 2 : 171 : 2 2  : 1
+O: 2 2 : 40 : 0 2  : 1
+O: 2 2 : 85 : 1 1  : 1
+O: 2 2 : 6 : 0 0  : 1
+O: 2 2 : 121 : 1 7  : 1
+O: 2 2 : 42 : 0 2  : 1
+O: 2 2 : 209 : 3 1  : 1
+O: 2 2 : 8 : 0 0  : 1
+O: 2 2 : 168 : 2 2  : 1
+O: 2 2 : 1 : 4 4  : 1
+O: 2 2 : 89 : 1 1  : 1
+O: 2 2 : 10 : 0 0  : 1
+O: 2 2 : 177 : 2 3  : 1
+O: 2 2 : 48 : 0 3  : 1
+O: 2 2 : 215 : 3 5  : 1
+O: 2 2 : 50 : 0 3  : 1
+O: 2 2 : 52 : 0 3  : 1
+O: 2 2 : 54 : 0 3  : 1
+O: 2 2 : 97 : 1 2  : 1
+O: 2 2 : 18 : 0 5  : 1
+O: 2 2 : 185 : 2 7  : 1
+O: 2 2 : 101 : 1 6  : 1
+O: 2 2 : 22 : 0 5  : 1
+O: 2 2 : 105 : 1 2  : 1
+O: 2 2 : 26 : 0 5  : 1
+O: 2 2 : 193 : 3 4  : 1
+O: 2 2 : 109 : 1 6  : 1
+O: 2 2 : 30 : 0 5  : 1
+O: 2 2 : 197 : 3 4  : 1
+O: 2 2 : 36 : 0 6  : 1
+O: 2 2 : 117 : 1 3  : 1
+O: 2 2 : 38 : 0 6  : 1
+O: 2 2 : 44 : 0 6  : 1
+O: 2 2 : 211 : 3 5  : 1
+O: 2 2 : 125 : 1 7  : 1
+O: 2 2 : 46 : 0 6  : 1
+O: 2 2 : 213 : 3 1  : 1
+O: 2 2 : 56 : 0 7  : 1
+O: 2 2 : 58 : 0 7  : 1
+O: 2 2 : 225 : 3 2  : 1
+O: 2 2 : 60 : 0 7  : 1
+O: 2 2 : 227 : 3 2  : 1
+O: 2 2 : 62 : 0 7  : 1
+O: 2 2 : 229 : 3 6  : 1
+O: 2 2 : 64 : 1 0  : 1
+O: 2 2 : 231 : 3 6  : 1
+O: 2 2 : 68 : 1 0  : 1
+O: 2 2 : 72 : 1 0  : 1
+O: 2 2 : 170 : 2 2  : 1
+O: 2 2 : 3 : 4 4  : 1
+O: 2 2 : 176 : 2 3  : 1
+O: 2 2 : 9 : 4 4  : 1
+O: 2 2 : 178 : 2 3  : 1
+O: 2 2 : 11 : 4 4  : 1
+O: 2 2 : 129 : 2 4  : 1
+O: 2 2 : 131 : 2 4  : 1
+O: 2 2 : 137 : 2 4  : 1
+O: 2 2 : 139 : 2 4  : 1
+O: 2 2 : 146 : 2 5  : 1
+O: 2 2 : 147 : 2 5  : 1
+O: 2 2 : 154 : 2 5  : 1
+O: 2 2 : 155 : 2 5  : 1
+O: 2 2 : 184 : 2 7  : 1
+O: 2 2 : 17 : 4 1  : 1
+O: 2 2 : 186 : 2 7  : 1
+O: 2 2 : 19 : 4 5  : 1
+O: 2 2 : 192 : 3 0  : 1
+O: 2 2 : 25 : 4 1  : 1
+O: 2 2 : 194 : 3 0  : 1
+O: 2 2 : 27 : 4 5  : 1
+O: 2 2 : 196 : 3 0  : 1
+O: 2 2 : 29 : 4 1  : 1
+O: 2 2 : 198 : 3 0  : 1
+O: 2 2 : 31 : 4 5  : 1
+O: 2 2 : 208 : 3 1  : 1
+O: 2 2 : 41 : 4 2  : 1
+O: 2 2 : 212 : 3 1  : 1
+O: 2 2 : 45 : 4 6  : 1
+O: 2 2 : 224 : 3 2  : 1
+O: 2 2 : 57 : 4 7  : 1
+O: 2 2 : 226 : 3 2  : 1
+O: 2 2 : 59 : 4 7  : 1
+O: 2 2 : 241 : 3 3  : 1
+O: 2 2 : 74 : 5 0  : 1
+O: 2 2 : 242 : 3 3  : 1
+O: 2 2 : 245 : 3 3  : 1
+O: 2 2 : 78 : 5 0  : 1
+O: 2 2 : 246 : 3 3  : 1
+O: 2 2 : 210 : 3 5  : 1
+O: 2 2 : 43 : 4 2  : 1
+O: 2 2 : 214 : 3 5  : 1
+O: 2 2 : 47 : 4 6  : 1
+O: 2 2 : 228 : 3 6  : 1
+O: 2 2 : 61 : 4 7  : 1
+O: 2 2 : 230 : 3 6  : 1
+O: 2 2 : 63 : 4 7  : 1
+O: 2 2 : 21 : 4 1  : 1
+O: 2 2 : 33 : 4 2  : 1
+O: 2 2 : 35 : 4 2  : 1
+O: 2 2 : 49 : 4 3  : 1
+O: 2 2 : 51 : 4 3  : 1
+O: 2 2 : 53 : 4 3  : 1
+O: 2 2 : 55 : 4 3  : 1
+O: 2 2 : 5 : 4 4  : 1
+O: 2 2 : 7 : 4 4  : 1
+O: 2 2 : 13 : 4 4  : 1
+O: 2 2 : 15 : 4 4  : 1
+O: 2 2 : 23 : 4 5  : 1
+O: 2 2 : 37 : 4 6  : 1
+O: 2 2 : 39 : 4 6  : 1
+O: 2 2 : 66 : 5 0  : 1
+O: 2 2 : 70 : 5 0  : 1
+O: 2 2 : 98 : 5 2  : 1
+O: 2 2 : 99 : 5 2  : 1
+O: 2 3 : 255 : 7 7  : 1
+O: 2 3 : 254 : 7 7  : 1
+O: 2 3 : 253 : 7 7  : 1
+O: 2 3 : 252 : 7 7  : 1
+O: 2 3 : 251 : 7 7  : 1
+O: 2 3 : 250 : 7 7  : 1
+O: 2 3 : 249 : 7 7  : 1
+O: 2 3 : 248 : 7 7  : 1
+O: 2 3 : 239 : 7 6  : 1
+O: 2 3 : 238 : 7 6  : 1
+O: 2 3 : 237 : 7 6  : 1
+O: 2 3 : 236 : 7 6  : 1
+O: 2 3 : 223 : 7 5  : 1
+O: 2 3 : 222 : 7 5  : 1
+O: 2 3 : 219 : 7 5  : 1
+O: 2 3 : 218 : 7 5  : 1
+O: 2 3 : 207 : 7 4  : 1
+O: 2 3 : 205 : 7 4  : 1
+O: 2 3 : 203 : 7 4  : 1
+O: 2 3 : 201 : 7 4  : 1
+O: 2 3 : 235 : 7 2  : 1
+O: 2 3 : 234 : 7 2  : 1
+O: 2 3 : 233 : 7 2  : 1
+O: 2 3 : 232 : 7 2  : 1
+O: 2 3 : 221 : 7 1  : 1
+O: 2 3 : 220 : 7 1  : 1
+O: 2 3 : 217 : 7 1  : 1
+O: 2 3 : 216 : 7 1  : 1
+O: 2 3 : 206 : 7 0  : 1
+O: 2 3 : 204 : 7 0  : 1
+O: 2 3 : 202 : 7 0  : 1
+O: 2 3 : 200 : 7 0  : 1
+O: 2 3 : 191 : 6 7  : 1
+O: 2 3 : 190 : 6 7  : 1
+O: 2 3 : 189 : 6 7  : 1
+O: 2 3 : 188 : 6 7  : 1
+O: 2 3 : 175 : 6 6  : 1
+O: 2 3 : 174 : 6 6  : 1
+O: 2 3 : 173 : 6 6  : 1
+O: 2 3 : 172 : 6 6  : 1
+O: 2 3 : 167 : 6 6  : 1
+O: 2 3 : 166 : 6 6  : 1
+O: 2 3 : 165 : 6 6  : 1
+O: 2 3 : 164 : 6 6  : 1
+O: 2 3 : 159 : 6 5  : 1
+O: 2 3 : 158 : 6 5  : 1
+O: 2 3 : 151 : 6 5  : 1
+O: 2 3 : 150 : 6 5  : 1
+O: 2 3 : 143 : 6 4  : 1
+O: 2 3 : 141 : 6 4  : 1
+O: 2 3 : 135 : 6 4  : 1
+O: 2 3 : 133 : 6 4  : 1
+O: 2 3 : 183 : 6 3  : 1
+O: 2 3 : 182 : 6 3  : 1
+O: 2 3 : 181 : 6 3  : 1
+O: 2 3 : 180 : 6 3  : 1
+O: 2 3 : 157 : 6 1  : 1
+O: 2 3 : 156 : 6 1  : 1
+O: 2 3 : 149 : 6 1  : 1
+O: 2 3 : 148 : 6 1  : 1
+O: 2 3 : 142 : 6 0  : 1
+O: 2 3 : 140 : 6 0  : 1
+O: 2 3 : 134 : 6 0  : 1
+O: 2 3 : 132 : 6 0  : 1
+O: 2 3 : 127 : 5 7  : 1
+O: 2 3 : 126 : 5 7  : 1
+O: 2 3 : 123 : 5 7  : 1
+O: 2 3 : 122 : 5 7  : 1
+O: 2 3 : 111 : 5 6  : 1
+O: 2 3 : 110 : 5 6  : 1
+O: 2 3 : 103 : 5 6  : 1
+O: 2 3 : 102 : 5 6  : 1
+O: 2 3 : 95 : 5 5  : 1
+O: 2 3 : 94 : 5 5  : 1
+O: 2 3 : 91 : 5 5  : 1
+O: 2 3 : 90 : 5 5  : 1
+O: 2 3 : 87 : 5 5  : 1
+O: 2 3 : 86 : 5 5  : 1
+O: 2 3 : 83 : 5 5  : 1
+O: 2 3 : 82 : 5 5  : 1
+O: 2 3 : 79 : 5 4  : 1
+O: 2 3 : 75 : 5 4  : 1
+O: 2 3 : 71 : 5 4  : 1
+O: 2 3 : 67 : 5 4  : 1
+O: 2 3 : 119 : 5 3  : 1
+O: 2 3 : 118 : 5 3  : 1
+O: 2 3 : 115 : 5 3  : 1
+O: 2 3 : 114 : 5 3  : 1
+O: 2 3 : 107 : 5 2  : 1
+O: 2 3 : 106 : 5 2  : 1
+O: 2 3 : 169 : 2 2  : 1
+O: 2 3 : 2 : 0 0  : 1
+O: 2 3 : 161 : 2 2  : 1
+O: 2 3 : 153 : 2 1  : 1
+O: 2 3 : 145 : 2 1  : 1
+O: 2 3 : 138 : 2 0  : 1
+O: 2 3 : 136 : 2 0  : 1
+O: 2 3 : 130 : 2 0  : 1
+O: 2 3 : 128 : 2 0  : 1
+O: 2 3 : 124 : 1 7  : 1
+O: 2 3 : 120 : 1 7  : 1
+O: 2 3 : 108 : 1 6  : 1
+O: 2 3 : 100 : 1 6  : 1
+O: 2 3 : 77 : 1 4  : 1
+O: 2 3 : 244 : 3 3  : 1
+O: 2 3 : 152 : 2 1  : 1
+O: 2 3 : 73 : 1 4  : 1
+O: 2 3 : 240 : 3 3  : 1
+O: 2 3 : 69 : 1 4  : 1
+O: 2 3 : 144 : 2 1  : 1
+O: 2 3 : 65 : 1 4  : 1
+O: 2 3 : 116 : 1 3  : 1
+O: 2 3 : 112 : 1 3  : 1
+O: 2 3 : 104 : 1 2  : 1
+O: 2 3 : 96 : 1 2  : 1
+O: 2 3 : 92 : 1 1  : 1
+O: 2 3 : 88 : 1 1  : 1
+O: 2 3 : 163 : 2 2  : 1
+O: 2 3 : 84 : 1 1  : 1
+O: 2 3 : 80 : 1 1  : 1
+O: 2 3 : 247 : 3 3  : 1
+O: 2 3 : 32 : 0 2  : 1
+O: 2 3 : 199 : 3 4  : 1
+O: 2 3 : 28 : 0 1  : 1
+O: 2 3 : 195 : 3 4  : 1
+O: 2 3 : 24 : 0 1  : 1
+O: 2 3 : 20 : 0 1  : 1
+O: 2 3 : 187 : 2 7  : 1
+O: 2 3 : 16 : 0 1  : 1
+O: 2 3 : 93 : 1 1  : 1
+O: 2 3 : 14 : 0 0  : 1
+O: 2 3 : 12 : 0 0  : 1
+O: 2 3 : 179 : 2 3  : 1
+O: 2 3 : 160 : 2 2  : 1
+O: 2 3 : 81 : 1 1  : 1
+O: 2 3 : 76 : 1 0  : 1
+O: 2 3 : 243 : 3 3  : 1
+O: 2 3 : 113 : 1 3  : 1
+O: 2 3 : 34 : 0 2  : 1
+O: 2 3 : 0 : 0 0  : 1
+O: 2 3 : 162 : 2 2  : 1
+O: 2 3 : 4 : 0 0  : 1
+O: 2 3 : 171 : 2 2  : 1
+O: 2 3 : 40 : 0 2  : 1
+O: 2 3 : 85 : 1 1  : 1
+O: 2 3 : 6 : 0 0  : 1
+O: 2 3 : 121 : 1 7  : 1
+O: 2 3 : 42 : 0 2  : 1
+O: 2 3 : 209 : 3 1  : 1
+O: 2 3 : 8 : 0 0  : 1
+O: 2 3 : 168 : 2 2  : 1
+O: 2 3 : 1 : 4 4  : 1
+O: 2 3 : 89 : 1 1  : 1
+O: 2 3 : 10 : 0 0  : 1
+O: 2 3 : 177 : 2 3  : 1
+O: 2 3 : 48 : 0 3  : 1
+O: 2 3 : 215 : 3 5  : 1
+O: 2 3 : 50 : 0 3  : 1
+O: 2 3 : 52 : 0 3  : 1
+O: 2 3 : 54 : 0 3  : 1
+O: 2 3 : 97 : 1 2  : 1
+O: 2 3 : 18 : 0 5  : 1
+O: 2 3 : 185 : 2 7  : 1
+O: 2 3 : 101 : 1 6  : 1
+O: 2 3 : 22 : 0 5  : 1
+O: 2 3 : 105 : 1 2  : 1
+O: 2 3 : 26 : 0 5  : 1
+O: 2 3 : 193 : 3 4  : 1
+O: 2 3 : 109 : 1 6  : 1
+O: 2 3 : 30 : 0 5  : 1
+O: 2 3 : 197 : 3 4  : 1
+O: 2 3 : 36 : 0 6  : 1
+O: 2 3 : 117 : 1 3  : 1
+O: 2 3 : 38 : 0 6  : 1
+O: 2 3 : 44 : 0 6  : 1
+O: 2 3 : 211 : 3 5  : 1
+O: 2 3 : 125 : 1 7  : 1
+O: 2 3 : 46 : 0 6  : 1
+O: 2 3 : 213 : 3 1  : 1
+O: 2 3 : 56 : 0 7  : 1
+O: 2 3 : 58 : 0 7  : 1
+O: 2 3 : 225 : 3 2  : 1
+O: 2 3 : 60 : 0 7  : 1
+O: 2 3 : 227 : 3 2  : 1
+O: 2 3 : 62 : 0 7  : 1
+O: 2 3 : 229 : 3 6  : 1
+O: 2 3 : 64 : 1 0  : 1
+O: 2 3 : 231 : 3 6  : 1
+O: 2 3 : 68 : 1 0  : 1
+O: 2 3 : 72 : 1 0  : 1
+O: 2 3 : 170 : 2 2  : 1
+O: 2 3 : 3 : 4 4  : 1
+O: 2 3 : 176 : 2 3  : 1
+O: 2 3 : 9 : 4 4  : 1
+O: 2 3 : 178 : 2 3  : 1
+O: 2 3 : 11 : 4 4  : 1
+O: 2 3 : 129 : 2 4  : 1
+O: 2 3 : 131 : 2 4  : 1
+O: 2 3 : 137 : 2 4  : 1
+O: 2 3 : 139 : 2 4  : 1
+O: 2 3 : 146 : 2 5  : 1
+O: 2 3 : 147 : 2 5  : 1
+O: 2 3 : 154 : 2 5  : 1
+O: 2 3 : 155 : 2 5  : 1
+O: 2 3 : 184 : 2 7  : 1
+O: 2 3 : 17 : 4 1  : 1
+O: 2 3 : 186 : 2 7  : 1
+O: 2 3 : 19 : 4 5  : 1
+O: 2 3 : 192 : 3 0  : 1
+O: 2 3 : 25 : 4 1  : 1
+O: 2 3 : 194 : 3 0  : 1
+O: 2 3 : 27 : 4 5  : 1
+O: 2 3 : 196 : 3 0  : 1
+O: 2 3 : 29 : 4 1  : 1
+O: 2 3 : 198 : 3 0  : 1
+O: 2 3 : 31 : 4 5  : 1
+O: 2 3 : 208 : 3 1  : 1
+O: 2 3 : 41 : 4 2  : 1
+O: 2 3 : 212 : 3 1  : 1
+O: 2 3 : 45 : 4 6  : 1
+O: 2 3 : 224 : 3 2  : 1
+O: 2 3 : 57 : 4 7  : 1
+O: 2 3 : 226 : 3 2  : 1
+O: 2 3 : 59 : 4 7  : 1
+O: 2 3 : 241 : 3 3  : 1
+O: 2 3 : 74 : 5 0  : 1
+O: 2 3 : 242 : 3 3  : 1
+O: 2 3 : 245 : 3 3  : 1
+O: 2 3 : 78 : 5 0  : 1
+O: 2 3 : 246 : 3 3  : 1
+O: 2 3 : 210 : 3 5  : 1
+O: 2 3 : 43 : 4 2  : 1
+O: 2 3 : 214 : 3 5  : 1
+O: 2 3 : 47 : 4 6  : 1
+O: 2 3 : 228 : 3 6  : 1
+O: 2 3 : 61 : 4 7  : 1
+O: 2 3 : 230 : 3 6  : 1
+O: 2 3 : 63 : 4 7  : 1
+O: 2 3 : 21 : 4 1  : 1
+O: 2 3 : 33 : 4 2  : 1
+O: 2 3 : 35 : 4 2  : 1
+O: 2 3 : 49 : 4 3  : 1
+O: 2 3 : 51 : 4 3  : 1
+O: 2 3 : 53 : 4 3  : 1
+O: 2 3 : 55 : 4 3  : 1
+O: 2 3 : 5 : 4 4  : 1
+O: 2 3 : 7 : 4 4  : 1
+O: 2 3 : 13 : 4 4  : 1
+O: 2 3 : 15 : 4 4  : 1
+O: 2 3 : 23 : 4 5  : 1
+O: 2 3 : 37 : 4 6  : 1
+O: 2 3 : 39 : 4 6  : 1
+O: 2 3 : 66 : 5 0  : 1
+O: 2 3 : 70 : 5 0  : 1
+O: 2 3 : 98 : 5 2  : 1
+O: 2 3 : 99 : 5 2  : 1
+R: 0 0 : 0 : * : * : -0.2
+R: 0 1 : 0 : * : * : -0.2
+R: 0 2 : 0 : * : * : -0.2
+R: 0 3 : 0 : * : * : -0.2
+R: 0 4 : 0 : * : * : -10.1
+R: 0 5 : 0 : * : * : 1.9
+R: 1 0 : 0 : * : * : -0.2
+R: 1 1 : 0 : * : * : -0.2
+R: 1 2 : 0 : * : * : -0.2
+R: 1 3 : 0 : * : * : -0.2
+R: 1 4 : 0 : * : * : -10.1
+R: 1 5 : 0 : * : * : 1.9
+R: 2 0 : 0 : * : * : -0.2
+R: 2 1 : 0 : * : * : -0.2
+R: 2 2 : 0 : * : * : -0.2
+R: 2 3 : 0 : * : * : -0.2
+R: 2 4 : 0 : * : * : -10.1
+R: 2 5 : 0 : * : * : 1.9
+R: 3 0 : 0 : * : * : -0.2
+R: 3 1 : 0 : * : * : -0.2
+R: 3 2 : 0 : * : * : -0.2
+R: 3 3 : 0 : * : * : -0.2
+R: 3 4 : 0 : * : * : -10.1
+R: 3 5 : 0 : * : * : 1.9
+R: 4 0 : 0 : * : * : -10.1
+R: 4 1 : 0 : * : * : -10.1
+R: 4 2 : 0 : * : * : -10.1
+R: 4 3 : 0 : * : * : -10.1
+R: 4 4 : 0 : * : * : 6
+R: 4 5 : 0 : * : * : 0
+R: 5 0 : 0 : * : * : 1.9
+R: 5 1 : 0 : * : * : 1.9
+R: 5 2 : 0 : * : * : 1.9
+R: 5 3 : 0 : * : * : 1.9
+R: 5 4 : 0 : * : * : 0
+R: 5 5 : 0 : * : * : 1
+R: 0 0 : 1 : * : * : -0.2
+R: 0 1 : 1 : * : * : -0.2
+R: 0 2 : 1 : * : * : -0.2
+R: 0 3 : 1 : * : * : -0.2
+R: 0 4 : 1 : * : * : -1.1
+R: 0 5 : 1 : * : * : -1.1
+R: 1 0 : 1 : * : * : -0.2
+R: 1 1 : 1 : * : * : -0.2
+R: 1 2 : 1 : * : * : -0.2
+R: 1 3 : 1 : * : * : -0.2
+R: 1 4 : 1 : * : * : -1.1
+R: 1 5 : 1 : * : * : -1.1
+R: 2 0 : 1 : * : * : -0.2
+R: 2 1 : 1 : * : * : -0.2
+R: 2 2 : 1 : * : * : -0.2
+R: 2 3 : 1 : * : * : -0.2
+R: 2 4 : 1 : * : * : -1.1
+R: 2 5 : 1 : * : * : -1.1
+R: 3 0 : 1 : * : * : -0.2
+R: 3 1 : 1 : * : * : -0.2
+R: 3 2 : 1 : * : * : -0.2
+R: 3 3 : 1 : * : * : -0.2
+R: 3 4 : 1 : * : * : -1.1
+R: 3 5 : 1 : * : * : -1.1
+R: 4 0 : 1 : * : * : -1.1
+R: 4 1 : 1 : * : * : -1.1
+R: 4 2 : 1 : * : * : -1.1
+R: 4 3 : 1 : * : * : -1.1
+R: 4 4 : 1 : * : * : -2
+R: 4 5 : 1 : * : * : -2
+R: 5 0 : 1 : * : * : -1.1
+R: 5 1 : 1 : * : * : -1.1
+R: 5 2 : 1 : * : * : -1.1
+R: 5 3 : 1 : * : * : -1.1
+R: 5 4 : 1 : * : * : -2
+R: 5 5 : 1 : * : * : -2
+R: 0 0 : 2 : * : * : -0.2
+R: 0 1 : 2 : * : * : -0.2
+R: 0 2 : 2 : * : * : -0.2
+R: 0 3 : 2 : * : * : -0.2
+R: 0 4 : 2 : * : * : -10.1
+R: 0 5 : 2 : * : * : 1.9
+R: 1 0 : 2 : * : * : -0.2
+R: 1 1 : 2 : * : * : -0.2
+R: 1 2 : 2 : * : * : -0.2
+R: 1 3 : 2 : * : * : -0.2
+R: 1 4 : 2 : * : * : -10.1
+R: 1 5 : 2 : * : * : 1.9
+R: 2 0 : 2 : * : * : -0.2
+R: 2 1 : 2 : * : * : -0.2
+R: 2 2 : 2 : * : * : -0.2
+R: 2 3 : 2 : * : * : -0.2
+R: 2 4 : 2 : * : * : -10.1
+R: 2 5 : 2 : * : * : 1.9
+R: 3 0 : 2 : * : * : -0.2
+R: 3 1 : 2 : * : * : -0.2
+R: 3 2 : 2 : * : * : -0.2
+R: 3 3 : 2 : * : * : -0.2
+R: 3 4 : 2 : * : * : -10.1
+R: 3 5 : 2 : * : * : 1.9
+R: 4 0 : 2 : * : * : -10.1
+R: 4 1 : 2 : * : * : -10.1
+R: 4 2 : 2 : * : * : -10.1
+R: 4 3 : 2 : * : * : -10.1
+R: 4 4 : 2 : * : * : 6
+R: 4 5 : 2 : * : * : 0
+R: 5 0 : 2 : * : * : 1.9
+R: 5 1 : 2 : * : * : 1.9
+R: 5 2 : 2 : * : * : 1.9
+R: 5 3 : 2 : * : * : 1.9
+R: 5 4 : 2 : * : * : 0
+R: 5 5 : 2 : * : * : 1
+R: 0 0 : 3 : * : * : -0.2
+R: 0 1 : 3 : * : * : -0.2
+R: 0 2 : 3 : * : * : -0.2
+R: 0 3 : 3 : * : * : -0.2
+R: 0 4 : 3 : * : * : -1.1
+R: 0 5 : 3 : * : * : -1.1
+R: 1 0 : 3 : * : * : -0.2
+R: 1 1 : 3 : * : * : -0.2
+R: 1 2 : 3 : * : * : -0.2
+R: 1 3 : 3 : * : * : -0.2
+R: 1 4 : 3 : * : * : -1.1
+R: 1 5 : 3 : * : * : -1.1
+R: 2 0 : 3 : * : * : -0.2
+R: 2 1 : 3 : * : * : -0.2
+R: 2 2 : 3 : * : * : -0.2
+R: 2 3 : 3 : * : * : -0.2
+R: 2 4 : 3 : * : * : -1.1
+R: 2 5 : 3 : * : * : -1.1
+R: 3 0 : 3 : * : * : -0.2
+R: 3 1 : 3 : * : * : -0.2
+R: 3 2 : 3 : * : * : -0.2
+R: 3 3 : 3 : * : * : -0.2
+R: 3 4 : 3 : * : * : -1.1
+R: 3 5 : 3 : * : * : -1.1
+R: 4 0 : 3 : * : * : -1.1
+R: 4 1 : 3 : * : * : -1.1
+R: 4 2 : 3 : * : * : -1.1
+R: 4 3 : 3 : * : * : -1.1
+R: 4 4 : 3 : * : * : -2
+R: 4 5 : 3 : * : * : -2
+R: 5 0 : 3 : * : * : -1.1
+R: 5 1 : 3 : * : * : -1.1
+R: 5 2 : 3 : * : * : -1.1
+R: 5 3 : 3 : * : * : -1.1
+R: 5 4 : 3 : * : * : -2
+R: 5 5 : 3 : * : * : -2
+R: 0 0 : 4 : * : * : -0.2
+R: 0 1 : 4 : * : * : -0.2
+R: 0 2 : 4 : * : * : -0.2
+R: 0 3 : 4 : * : * : -0.2
+R: 0 4 : 4 : * : * : -10.1
+R: 0 5 : 4 : * : * : 1.9
+R: 1 0 : 4 : * : * : -0.2
+R: 1 1 : 4 : * : * : -0.2
+R: 1 2 : 4 : * : * : -0.2
+R: 1 3 : 4 : * : * : -0.2
+R: 1 4 : 4 : * : * : -10.1
+R: 1 5 : 4 : * : * : 1.9
+R: 2 0 : 4 : * : * : -0.2
+R: 2 1 : 4 : * : * : -0.2
+R: 2 2 : 4 : * : * : -0.2
+R: 2 3 : 4 : * : * : -0.2
+R: 2 4 : 4 : * : * : -10.1
+R: 2 5 : 4 : * : * : 1.9
+R: 3 0 : 4 : * : * : -0.2
+R: 3 1 : 4 : * : * : -0.2
+R: 3 2 : 4 : * : * : -0.2
+R: 3 3 : 4 : * : * : -0.2
+R: 3 4 : 4 : * : * : -10.1
+R: 3 5 : 4 : * : * : 1.9
+R: 4 0 : 4 : * : * : -10.1
+R: 4 1 : 4 : * : * : -10.1
+R: 4 2 : 4 : * : * : -10.1
+R: 4 3 : 4 : * : * : -10.1
+R: 4 4 : 4 : * : * : 6
+R: 4 5 : 4 : * : * : 0
+R: 5 0 : 4 : * : * : 1.9
+R: 5 1 : 4 : * : * : 1.9
+R: 5 2 : 4 : * : * : 1.9
+R: 5 3 : 4 : * : * : 1.9
+R: 5 4 : 4 : * : * : 0
+R: 5 5 : 4 : * : * : 1
+R: 0 0 : 5 : * : * : -0.2
+R: 0 1 : 5 : * : * : -0.2
+R: 0 2 : 5 : * : * : -0.2
+R: 0 3 : 5 : * : * : -0.2
+R: 0 4 : 5 : * : * : -1.1
+R: 0 5 : 5 : * : * : -1.1
+R: 1 0 : 5 : * : * : -0.2
+R: 1 1 : 5 : * : * : -0.2
+R: 1 2 : 5 : * : * : -0.2
+R: 1 3 : 5 : * : * : -0.2
+R: 1 4 : 5 : * : * : -1.1
+R: 1 5 : 5 : * : * : -1.1
+R: 2 0 : 5 : * : * : -0.2
+R: 2 1 : 5 : * : * : -0.2
+R: 2 2 : 5 : * : * : -0.2
+R: 2 3 : 5 : * : * : -0.2
+R: 2 4 : 5 : * : * : -1.1
+R: 2 5 : 5 : * : * : -1.1
+R: 3 0 : 5 : * : * : -0.2
+R: 3 1 : 5 : * : * : -0.2
+R: 3 2 : 5 : * : * : -0.2
+R: 3 3 : 5 : * : * : -0.2
+R: 3 4 : 5 : * : * : -1.1
+R: 3 5 : 5 : * : * : -1.1
+R: 4 0 : 5 : * : * : -1.1
+R: 4 1 : 5 : * : * : -1.1
+R: 4 2 : 5 : * : * : -1.1
+R: 4 3 : 5 : * : * : -1.1
+R: 4 4 : 5 : * : * : -2
+R: 4 5 : 5 : * : * : -2
+R: 5 0 : 5 : * : * : -1.1
+R: 5 1 : 5 : * : * : -1.1
+R: 5 2 : 5 : * : * : -1.1
+R: 5 3 : 5 : * : * : -1.1
+R: 5 4 : 5 : * : * : -2
+R: 5 5 : 5 : * : * : -2
+R: 0 0 : 6 : * : * : -0.2
+R: 0 1 : 6 : * : * : -0.2
+R: 0 2 : 6 : * : * : -0.2
+R: 0 3 : 6 : * : * : -0.2
+R: 0 4 : 6 : * : * : -10.1
+R: 0 5 : 6 : * : * : 1.9
+R: 1 0 : 6 : * : * : -0.2
+R: 1 1 : 6 : * : * : -0.2
+R: 1 2 : 6 : * : * : -0.2
+R: 1 3 : 6 : * : * : -0.2
+R: 1 4 : 6 : * : * : -10.1
+R: 1 5 : 6 : * : * : 1.9
+R: 2 0 : 6 : * : * : -0.2
+R: 2 1 : 6 : * : * : -0.2
+R: 2 2 : 6 : * : * : -0.2
+R: 2 3 : 6 : * : * : -0.2
+R: 2 4 : 6 : * : * : -10.1
+R: 2 5 : 6 : * : * : 1.9
+R: 3 0 : 6 : * : * : -0.2
+R: 3 1 : 6 : * : * : -0.2
+R: 3 2 : 6 : * : * : -0.2
+R: 3 3 : 6 : * : * : -0.2
+R: 3 4 : 6 : * : * : -10.1
+R: 3 5 : 6 : * : * : 1.9
+R: 4 0 : 6 : * : * : -10.1
+R: 4 1 : 6 : * : * : -10.1
+R: 4 2 : 6 : * : * : -10.1
+R: 4 3 : 6 : * : * : -10.1
+R: 4 4 : 6 : * : * : 6
+R: 4 5 : 6 : * : * : 0
+R: 5 0 : 6 : * : * : 1.9
+R: 5 1 : 6 : * : * : 1.9
+R: 5 2 : 6 : * : * : 1.9
+R: 5 3 : 6 : * : * : 1.9
+R: 5 4 : 6 : * : * : 0
+R: 5 5 : 6 : * : * : 1
+R: 0 0 : 7 : * : * : -0.2
+R: 0 1 : 7 : * : * : -0.2
+R: 0 2 : 7 : * : * : -0.2
+R: 0 3 : 7 : * : * : -0.2
+R: 0 4 : 7 : * : * : -1.1
+R: 0 5 : 7 : * : * : -1.1
+R: 1 0 : 7 : * : * : -0.2
+R: 1 1 : 7 : * : * : -0.2
+R: 1 2 : 7 : * : * : -0.2
+R: 1 3 : 7 : * : * : -0.2
+R: 1 4 : 7 : * : * : -1.1
+R: 1 5 : 7 : * : * : -1.1
+R: 2 0 : 7 : * : * : -0.2
+R: 2 1 : 7 : * : * : -0.2
+R: 2 2 : 7 : * : * : -0.2
+R: 2 3 : 7 : * : * : -0.2
+R: 2 4 : 7 : * : * : -1.1
+R: 2 5 : 7 : * : * : -1.1
+R: 3 0 : 7 : * : * : -0.2
+R: 3 1 : 7 : * : * : -0.2
+R: 3 2 : 7 : * : * : -0.2
+R: 3 3 : 7 : * : * : -0.2
+R: 3 4 : 7 : * : * : -1.1
+R: 3 5 : 7 : * : * : -1.1
+R: 4 0 : 7 : * : * : -1.1
+R: 4 1 : 7 : * : * : -1.1
+R: 4 2 : 7 : * : * : -1.1
+R: 4 3 : 7 : * : * : -1.1
+R: 4 4 : 7 : * : * : -2
+R: 4 5 : 7 : * : * : -2
+R: 5 0 : 7 : * : * : -1.1
+R: 5 1 : 7 : * : * : -1.1
+R: 5 2 : 7 : * : * : -1.1
+R: 5 3 : 7 : * : * : -1.1
+R: 5 4 : 7 : * : * : -2
+R: 5 5 : 7 : * : * : -2
+R: 0 0 : 8 : * : * : -0.2
+R: 0 1 : 8 : * : * : -0.2
+R: 0 2 : 8 : * : * : -0.2
+R: 0 3 : 8 : * : * : -0.2
+R: 0 4 : 8 : * : * : -10.1
+R: 0 5 : 8 : * : * : 1.9
+R: 1 0 : 8 : * : * : -0.2
+R: 1 1 : 8 : * : * : -0.2
+R: 1 2 : 8 : * : * : -0.2
+R: 1 3 : 8 : * : * : -0.2
+R: 1 4 : 8 : * : * : -10.1
+R: 1 5 : 8 : * : * : 1.9
+R: 2 0 : 8 : * : * : -0.2
+R: 2 1 : 8 : * : * : -0.2
+R: 2 2 : 8 : * : * : -0.2
+R: 2 3 : 8 : * : * : -0.2
+R: 2 4 : 8 : * : * : -10.1
+R: 2 5 : 8 : * : * : 1.9
+R: 3 0 : 8 : * : * : -0.2
+R: 3 1 : 8 : * : * : -0.2
+R: 3 2 : 8 : * : * : -0.2
+R: 3 3 : 8 : * : * : -0.2
+R: 3 4 : 8 : * : * : -10.1
+R: 3 5 : 8 : * : * : 1.9
+R: 4 0 : 8 : * : * : -10.1
+R: 4 1 : 8 : * : * : -10.1
+R: 4 2 : 8 : * : * : -10.1
+R: 4 3 : 8 : * : * : -10.1
+R: 4 4 : 8 : * : * : 6
+R: 4 5 : 8 : * : * : 0
+R: 5 0 : 8 : * : * : 1.9
+R: 5 1 : 8 : * : * : 1.9
+R: 5 2 : 8 : * : * : 1.9
+R: 5 3 : 8 : * : * : 1.9
+R: 5 4 : 8 : * : * : 0
+R: 5 5 : 8 : * : * : 1
+R: 0 0 : 9 : * : * : -0.2
+R: 0 1 : 9 : * : * : -0.2
+R: 0 2 : 9 : * : * : -0.2
+R: 0 3 : 9 : * : * : -0.2
+R: 0 4 : 9 : * : * : -1.1
+R: 0 5 : 9 : * : * : -1.1
+R: 1 0 : 9 : * : * : -0.2
+R: 1 1 : 9 : * : * : -0.2
+R: 1 2 : 9 : * : * : -0.2
+R: 1 3 : 9 : * : * : -0.2
+R: 1 4 : 9 : * : * : -1.1
+R: 1 5 : 9 : * : * : -1.1
+R: 2 0 : 9 : * : * : -0.2
+R: 2 1 : 9 : * : * : -0.2
+R: 2 2 : 9 : * : * : -0.2
+R: 2 3 : 9 : * : * : -0.2
+R: 2 4 : 9 : * : * : -1.1
+R: 2 5 : 9 : * : * : -1.1
+R: 3 0 : 9 : * : * : -0.2
+R: 3 1 : 9 : * : * : -0.2
+R: 3 2 : 9 : * : * : -0.2
+R: 3 3 : 9 : * : * : -0.2
+R: 3 4 : 9 : * : * : -1.1
+R: 3 5 : 9 : * : * : -1.1
+R: 4 0 : 9 : * : * : -1.1
+R: 4 1 : 9 : * : * : -1.1
+R: 4 2 : 9 : * : * : -1.1
+R: 4 3 : 9 : * : * : -1.1
+R: 4 4 : 9 : * : * : -2
+R: 4 5 : 9 : * : * : -2
+R: 5 0 : 9 : * : * : -1.1
+R: 5 1 : 9 : * : * : -1.1
+R: 5 2 : 9 : * : * : -1.1
+R: 5 3 : 9 : * : * : -1.1
+R: 5 4 : 9 : * : * : -2
+R: 5 5 : 9 : * : * : -2
+R: 0 0 : 10 : * : * : -0.2
+R: 0 1 : 10 : * : * : -0.2
+R: 0 2 : 10 : * : * : -0.2
+R: 0 3 : 10 : * : * : -0.2
+R: 0 4 : 10 : * : * : -10.1
+R: 0 5 : 10 : * : * : 1.9
+R: 1 0 : 10 : * : * : -0.2
+R: 1 1 : 10 : * : * : -0.2
+R: 1 2 : 10 : * : * : -0.2
+R: 1 3 : 10 : * : * : -0.2
+R: 1 4 : 10 : * : * : -10.1
+R: 1 5 : 10 : * : * : 1.9
+R: 2 0 : 10 : * : * : -0.2
+R: 2 1 : 10 : * : * : -0.2
+R: 2 2 : 10 : * : * : -0.2
+R: 2 3 : 10 : * : * : -0.2
+R: 2 4 : 10 : * : * : -10.1
+R: 2 5 : 10 : * : * : 1.9
+R: 3 0 : 10 : * : * : -0.2
+R: 3 1 : 10 : * : * : -0.2
+R: 3 2 : 10 : * : * : -0.2
+R: 3 3 : 10 : * : * : -0.2
+R: 3 4 : 10 : * : * : -10.1
+R: 3 5 : 10 : * : * : 1.9
+R: 4 0 : 10 : * : * : -10.1
+R: 4 1 : 10 : * : * : -10.1
+R: 4 2 : 10 : * : * : -10.1
+R: 4 3 : 10 : * : * : -10.1
+R: 4 4 : 10 : * : * : 6
+R: 4 5 : 10 : * : * : 0
+R: 5 0 : 10 : * : * : 1.9
+R: 5 1 : 10 : * : * : 1.9
+R: 5 2 : 10 : * : * : 1.9
+R: 5 3 : 10 : * : * : 1.9
+R: 5 4 : 10 : * : * : 0
+R: 5 5 : 10 : * : * : 1
+R: 0 0 : 11 : * : * : -0.2
+R: 0 1 : 11 : * : * : -0.2
+R: 0 2 : 11 : * : * : -0.2
+R: 0 3 : 11 : * : * : -0.2
+R: 0 4 : 11 : * : * : -1.1
+R: 0 5 : 11 : * : * : -1.1
+R: 1 0 : 11 : * : * : -0.2
+R: 1 1 : 11 : * : * : -0.2
+R: 1 2 : 11 : * : * : -0.2
+R: 1 3 : 11 : * : * : -0.2
+R: 1 4 : 11 : * : * : -1.1
+R: 1 5 : 11 : * : * : -1.1
+R: 2 0 : 11 : * : * : -0.2
+R: 2 1 : 11 : * : * : -0.2
+R: 2 2 : 11 : * : * : -0.2
+R: 2 3 : 11 : * : * : -0.2
+R: 2 4 : 11 : * : * : -1.1
+R: 2 5 : 11 : * : * : -1.1
+R: 3 0 : 11 : * : * : -0.2
+R: 3 1 : 11 : * : * : -0.2
+R: 3 2 : 11 : * : * : -0.2
+R: 3 3 : 11 : * : * : -0.2
+R: 3 4 : 11 : * : * : -1.1
+R: 3 5 : 11 : * : * : -1.1
+R: 4 0 : 11 : * : * : -1.1
+R: 4 1 : 11 : * : * : -1.1
+R: 4 2 : 11 : * : * : -1.1
+R: 4 3 : 11 : * : * : -1.1
+R: 4 4 : 11 : * : * : -2
+R: 4 5 : 11 : * : * : -2
+R: 5 0 : 11 : * : * : -1.1
+R: 5 1 : 11 : * : * : -1.1
+R: 5 2 : 11 : * : * : -1.1
+R: 5 3 : 11 : * : * : -1.1
+R: 5 4 : 11 : * : * : -2
+R: 5 5 : 11 : * : * : -2
+R: 0 0 : 12 : * : * : -0.2
+R: 0 1 : 12 : * : * : -0.2
+R: 0 2 : 12 : * : * : -0.2
+R: 0 3 : 12 : * : * : -0.2
+R: 0 4 : 12 : * : * : -10.1
+R: 0 5 : 12 : * : * : 1.9
+R: 1 0 : 12 : * : * : -0.2
+R: 1 1 : 12 : * : * : -0.2
+R: 1 2 : 12 : * : * : -0.2
+R: 1 3 : 12 : * : * : -0.2
+R: 1 4 : 12 : * : * : -10.1
+R: 1 5 : 12 : * : * : 1.9
+R: 2 0 : 12 : * : * : -0.2
+R: 2 1 : 12 : * : * : -0.2
+R: 2 2 : 12 : * : * : -0.2
+R: 2 3 : 12 : * : * : -0.2
+R: 2 4 : 12 : * : * : -10.1
+R: 2 5 : 12 : * : * : 1.9
+R: 3 0 : 12 : * : * : -0.2
+R: 3 1 : 12 : * : * : -0.2
+R: 3 2 : 12 : * : * : -0.2
+R: 3 3 : 12 : * : * : -0.2
+R: 3 4 : 12 : * : * : -10.1
+R: 3 5 : 12 : * : * : 1.9
+R: 4 0 : 12 : * : * : -10.1
+R: 4 1 : 12 : * : * : -10.1
+R: 4 2 : 12 : * : * : -10.1
+R: 4 3 : 12 : * : * : -10.1
+R: 4 4 : 12 : * : * : 6
+R: 4 5 : 12 : * : * : 0
+R: 5 0 : 12 : * : * : 1.9
+R: 5 1 : 12 : * : * : 1.9
+R: 5 2 : 12 : * : * : 1.9
+R: 5 3 : 12 : * : * : 1.9
+R: 5 4 : 12 : * : * : 0
+R: 5 5 : 12 : * : * : 1
+R: 0 0 : 13 : * : * : -0.2
+R: 0 1 : 13 : * : * : -0.2
+R: 0 2 : 13 : * : * : -0.2
+R: 0 3 : 13 : * : * : -0.2
+R: 0 4 : 13 : * : * : -1.1
+R: 0 5 : 13 : * : * : -1.1
+R: 1 0 : 13 : * : * : -0.2
+R: 1 1 : 13 : * : * : -0.2
+R: 1 2 : 13 : * : * : -0.2
+R: 1 3 : 13 : * : * : -0.2
+R: 1 4 : 13 : * : * : -1.1
+R: 1 5 : 13 : * : * : -1.1
+R: 2 0 : 13 : * : * : -0.2
+R: 2 1 : 13 : * : * : -0.2
+R: 2 2 : 13 : * : * : -0.2
+R: 2 3 : 13 : * : * : -0.2
+R: 2 4 : 13 : * : * : -1.1
+R: 2 5 : 13 : * : * : -1.1
+R: 3 0 : 13 : * : * : -0.2
+R: 3 1 : 13 : * : * : -0.2
+R: 3 2 : 13 : * : * : -0.2
+R: 3 3 : 13 : * : * : -0.2
+R: 3 4 : 13 : * : * : -1.1
+R: 3 5 : 13 : * : * : -1.1
+R: 4 0 : 13 : * : * : -1.1
+R: 4 1 : 13 : * : * : -1.1
+R: 4 2 : 13 : * : * : -1.1
+R: 4 3 : 13 : * : * : -1.1
+R: 4 4 : 13 : * : * : -2
+R: 4 5 : 13 : * : * : -2
+R: 5 0 : 13 : * : * : -1.1
+R: 5 1 : 13 : * : * : -1.1
+R: 5 2 : 13 : * : * : -1.1
+R: 5 3 : 13 : * : * : -1.1
+R: 5 4 : 13 : * : * : -2
+R: 5 5 : 13 : * : * : -2
+R: 0 0 : 14 : * : * : -0.2
+R: 0 1 : 14 : * : * : -0.2
+R: 0 2 : 14 : * : * : -0.2
+R: 0 3 : 14 : * : * : -0.2
+R: 0 4 : 14 : * : * : -10.1
+R: 0 5 : 14 : * : * : 1.9
+R: 1 0 : 14 : * : * : -0.2
+R: 1 1 : 14 : * : * : -0.2
+R: 1 2 : 14 : * : * : -0.2
+R: 1 3 : 14 : * : * : -0.2
+R: 1 4 : 14 : * : * : -10.1
+R: 1 5 : 14 : * : * : 1.9
+R: 2 0 : 14 : * : * : -0.2
+R: 2 1 : 14 : * : * : -0.2
+R: 2 2 : 14 : * : * : -0.2
+R: 2 3 : 14 : * : * : -0.2
+R: 2 4 : 14 : * : * : -10.1
+R: 2 5 : 14 : * : * : 1.9
+R: 3 0 : 14 : * : * : -0.2
+R: 3 1 : 14 : * : * : -0.2
+R: 3 2 : 14 : * : * : -0.2
+R: 3 3 : 14 : * : * : -0.2
+R: 3 4 : 14 : * : * : -10.1
+R: 3 5 : 14 : * : * : 1.9
+R: 4 0 : 14 : * : * : -10.1
+R: 4 1 : 14 : * : * : -10.1
+R: 4 2 : 14 : * : * : -10.1
+R: 4 3 : 14 : * : * : -10.1
+R: 4 4 : 14 : * : * : 6
+R: 4 5 : 14 : * : * : 0
+R: 5 0 : 14 : * : * : 1.9
+R: 5 1 : 14 : * : * : 1.9
+R: 5 2 : 14 : * : * : 1.9
+R: 5 3 : 14 : * : * : 1.9
+R: 5 4 : 14 : * : * : 0
+R: 5 5 : 14 : * : * : 1
+R: 0 0 : 15 : * : * : -0.2
+R: 0 1 : 15 : * : * : -0.2
+R: 0 2 : 15 : * : * : -0.2
+R: 0 3 : 15 : * : * : -0.2
+R: 0 4 : 15 : * : * : -1.1
+R: 0 5 : 15 : * : * : -1.1
+R: 1 0 : 15 : * : * : -0.2
+R: 1 1 : 15 : * : * : -0.2
+R: 1 2 : 15 : * : * : -0.2
+R: 1 3 : 15 : * : * : -0.2
+R: 1 4 : 15 : * : * : -1.1
+R: 1 5 : 15 : * : * : -1.1
+R: 2 0 : 15 : * : * : -0.2
+R: 2 1 : 15 : * : * : -0.2
+R: 2 2 : 15 : * : * : -0.2
+R: 2 3 : 15 : * : * : -0.2
+R: 2 4 : 15 : * : * : -1.1
+R: 2 5 : 15 : * : * : -1.1
+R: 3 0 : 15 : * : * : -0.2
+R: 3 1 : 15 : * : * : -0.2
+R: 3 2 : 15 : * : * : -0.2
+R: 3 3 : 15 : * : * : -0.2
+R: 3 4 : 15 : * : * : -1.1
+R: 3 5 : 15 : * : * : -1.1
+R: 4 0 : 15 : * : * : -1.1
+R: 4 1 : 15 : * : * : -1.1
+R: 4 2 : 15 : * : * : -1.1
+R: 4 3 : 15 : * : * : -1.1
+R: 4 4 : 15 : * : * : -2
+R: 4 5 : 15 : * : * : -2
+R: 5 0 : 15 : * : * : -1.1
+R: 5 1 : 15 : * : * : -1.1
+R: 5 2 : 15 : * : * : -1.1
+R: 5 3 : 15 : * : * : -1.1
+R: 5 4 : 15 : * : * : -2
+R: 5 5 : 15 : * : * : -2
+R: 0 0 : 16 : * : * : -0.2
+R: 0 1 : 16 : * : * : -0.2
+R: 0 2 : 16 : * : * : -0.2
+R: 0 3 : 16 : * : * : -0.2
+R: 0 4 : 16 : * : * : -10.1
+R: 0 5 : 16 : * : * : 1.9
+R: 1 0 : 16 : * : * : -0.2
+R: 1 1 : 16 : * : * : -0.2
+R: 1 2 : 16 : * : * : -0.2
+R: 1 3 : 16 : * : * : -0.2
+R: 1 4 : 16 : * : * : -10.1
+R: 1 5 : 16 : * : * : 1.9
+R: 2 0 : 16 : * : * : -0.2
+R: 2 1 : 16 : * : * : -0.2
+R: 2 2 : 16 : * : * : -0.2
+R: 2 3 : 16 : * : * : -0.2
+R: 2 4 : 16 : * : * : -10.1
+R: 2 5 : 16 : * : * : 1.9
+R: 3 0 : 16 : * : * : -0.2
+R: 3 1 : 16 : * : * : -0.2
+R: 3 2 : 16 : * : * : -0.2
+R: 3 3 : 16 : * : * : -0.2
+R: 3 4 : 16 : * : * : -10.1
+R: 3 5 : 16 : * : * : 1.9
+R: 4 0 : 16 : * : * : -10.1
+R: 4 1 : 16 : * : * : -10.1
+R: 4 2 : 16 : * : * : -10.1
+R: 4 3 : 16 : * : * : -10.1
+R: 4 4 : 16 : * : * : 0
+R: 4 5 : 16 : * : * : 0
+R: 5 0 : 16 : * : * : 1.9
+R: 5 1 : 16 : * : * : 1.9
+R: 5 2 : 16 : * : * : 1.9
+R: 5 3 : 16 : * : * : 1.9
+R: 5 4 : 16 : * : * : 4
+R: 5 5 : 16 : * : * : 4
+R: 0 0 : 17 : * : * : -0.2
+R: 0 1 : 17 : * : * : -0.2
+R: 0 2 : 17 : * : * : -0.2
+R: 0 3 : 17 : * : * : -0.2
+R: 0 4 : 17 : * : * : -10.1
+R: 0 5 : 17 : * : * : 1.9
+R: 1 0 : 17 : * : * : -0.2
+R: 1 1 : 17 : * : * : -0.2
+R: 1 2 : 17 : * : * : -0.2
+R: 1 3 : 17 : * : * : -0.2
+R: 1 4 : 17 : * : * : -10.1
+R: 1 5 : 17 : * : * : 1.9
+R: 2 0 : 17 : * : * : -0.2
+R: 2 1 : 17 : * : * : -0.2
+R: 2 2 : 17 : * : * : -0.2
+R: 2 3 : 17 : * : * : -0.2
+R: 2 4 : 17 : * : * : -10.1
+R: 2 5 : 17 : * : * : 1.9
+R: 3 0 : 17 : * : * : -0.2
+R: 3 1 : 17 : * : * : -0.2
+R: 3 2 : 17 : * : * : -0.2
+R: 3 3 : 17 : * : * : -0.2
+R: 3 4 : 17 : * : * : -10.1
+R: 3 5 : 17 : * : * : 1.9
+R: 4 0 : 17 : * : * : -1.1
+R: 4 1 : 17 : * : * : -1.1
+R: 4 2 : 17 : * : * : -1.1
+R: 4 3 : 17 : * : * : -1.1
+R: 4 4 : 17 : * : * : -11
+R: 4 5 : 17 : * : * : -11
+R: 5 0 : 17 : * : * : -1.1
+R: 5 1 : 17 : * : * : -1.1
+R: 5 2 : 17 : * : * : -1.1
+R: 5 3 : 17 : * : * : -1.1
+R: 5 4 : 17 : * : * : 1
+R: 5 5 : 17 : * : * : 1
+R: 0 0 : 18 : * : * : -0.2
+R: 0 1 : 18 : * : * : -0.2
+R: 0 2 : 18 : * : * : -0.2
+R: 0 3 : 18 : * : * : -0.2
+R: 0 4 : 18 : * : * : -1.1
+R: 0 5 : 18 : * : * : -1.1
+R: 1 0 : 18 : * : * : -0.2
+R: 1 1 : 18 : * : * : -0.2
+R: 1 2 : 18 : * : * : -0.2
+R: 1 3 : 18 : * : * : -0.2
+R: 1 4 : 18 : * : * : -1.1
+R: 1 5 : 18 : * : * : -1.1
+R: 2 0 : 18 : * : * : -0.2
+R: 2 1 : 18 : * : * : -0.2
+R: 2 2 : 18 : * : * : -0.2
+R: 2 3 : 18 : * : * : -0.2
+R: 2 4 : 18 : * : * : -1.1
+R: 2 5 : 18 : * : * : -1.1
+R: 3 0 : 18 : * : * : -0.2
+R: 3 1 : 18 : * : * : -0.2
+R: 3 2 : 18 : * : * : -0.2
+R: 3 3 : 18 : * : * : -0.2
+R: 3 4 : 18 : * : * : -1.1
+R: 3 5 : 18 : * : * : -1.1
+R: 4 0 : 18 : * : * : -10.1
+R: 4 1 : 18 : * : * : -10.1
+R: 4 2 : 18 : * : * : -10.1
+R: 4 3 : 18 : * : * : -10.1
+R: 4 4 : 18 : * : * : -11
+R: 4 5 : 18 : * : * : -11
+R: 5 0 : 18 : * : * : 1.9
+R: 5 1 : 18 : * : * : 1.9
+R: 5 2 : 18 : * : * : 1.9
+R: 5 3 : 18 : * : * : 1.9
+R: 5 4 : 18 : * : * : 1
+R: 5 5 : 18 : * : * : 1
+R: 0 0 : 19 : * : * : -0.2
+R: 0 1 : 19 : * : * : -0.2
+R: 0 2 : 19 : * : * : -0.2
+R: 0 3 : 19 : * : * : -0.2
+R: 0 4 : 19 : * : * : -1.1
+R: 0 5 : 19 : * : * : -1.1
+R: 1 0 : 19 : * : * : -0.2
+R: 1 1 : 19 : * : * : -0.2
+R: 1 2 : 19 : * : * : -0.2
+R: 1 3 : 19 : * : * : -0.2
+R: 1 4 : 19 : * : * : -1.1
+R: 1 5 : 19 : * : * : -1.1
+R: 2 0 : 19 : * : * : -0.2
+R: 2 1 : 19 : * : * : -0.2
+R: 2 2 : 19 : * : * : -0.2
+R: 2 3 : 19 : * : * : -0.2
+R: 2 4 : 19 : * : * : -1.1
+R: 2 5 : 19 : * : * : -1.1
+R: 3 0 : 19 : * : * : -0.2
+R: 3 1 : 19 : * : * : -0.2
+R: 3 2 : 19 : * : * : -0.2
+R: 3 3 : 19 : * : * : -0.2
+R: 3 4 : 19 : * : * : -1.1
+R: 3 5 : 19 : * : * : -1.1
+R: 4 0 : 19 : * : * : -1.1
+R: 4 1 : 19 : * : * : -1.1
+R: 4 2 : 19 : * : * : -1.1
+R: 4 3 : 19 : * : * : -1.1
+R: 4 4 : 19 : * : * : -2
+R: 4 5 : 19 : * : * : -2
+R: 5 0 : 19 : * : * : -1.1
+R: 5 1 : 19 : * : * : -1.1
+R: 5 2 : 19 : * : * : -1.1
+R: 5 3 : 19 : * : * : -1.1
+R: 5 4 : 19 : * : * : -2
+R: 5 5 : 19 : * : * : -2
+R: 0 0 : 20 : * : * : -0.2
+R: 0 1 : 20 : * : * : -0.2
+R: 0 2 : 20 : * : * : -0.2
+R: 0 3 : 20 : * : * : -0.2
+R: 0 4 : 20 : * : * : -10.1
+R: 0 5 : 20 : * : * : 1.9
+R: 1 0 : 20 : * : * : -0.2
+R: 1 1 : 20 : * : * : -0.2
+R: 1 2 : 20 : * : * : -0.2
+R: 1 3 : 20 : * : * : -0.2
+R: 1 4 : 20 : * : * : -10.1
+R: 1 5 : 20 : * : * : 1.9
+R: 2 0 : 20 : * : * : -0.2
+R: 2 1 : 20 : * : * : -0.2
+R: 2 2 : 20 : * : * : -0.2
+R: 2 3 : 20 : * : * : -0.2
+R: 2 4 : 20 : * : * : -10.1
+R: 2 5 : 20 : * : * : 1.9
+R: 3 0 : 20 : * : * : -0.2
+R: 3 1 : 20 : * : * : -0.2
+R: 3 2 : 20 : * : * : -0.2
+R: 3 3 : 20 : * : * : -0.2
+R: 3 4 : 20 : * : * : -10.1
+R: 3 5 : 20 : * : * : 1.9
+R: 4 0 : 20 : * : * : -10.1
+R: 4 1 : 20 : * : * : -10.1
+R: 4 2 : 20 : * : * : -10.1
+R: 4 3 : 20 : * : * : -10.1
+R: 4 4 : 20 : * : * : 0
+R: 4 5 : 20 : * : * : 0
+R: 5 0 : 20 : * : * : 1.9
+R: 5 1 : 20 : * : * : 1.9
+R: 5 2 : 20 : * : * : 1.9
+R: 5 3 : 20 : * : * : 1.9
+R: 5 4 : 20 : * : * : 4
+R: 5 5 : 20 : * : * : 4
+R: 0 0 : 21 : * : * : -0.2
+R: 0 1 : 21 : * : * : -0.2
+R: 0 2 : 21 : * : * : -0.2
+R: 0 3 : 21 : * : * : -0.2
+R: 0 4 : 21 : * : * : -10.1
+R: 0 5 : 21 : * : * : 1.9
+R: 1 0 : 21 : * : * : -0.2
+R: 1 1 : 21 : * : * : -0.2
+R: 1 2 : 21 : * : * : -0.2
+R: 1 3 : 21 : * : * : -0.2
+R: 1 4 : 21 : * : * : -10.1
+R: 1 5 : 21 : * : * : 1.9
+R: 2 0 : 21 : * : * : -0.2
+R: 2 1 : 21 : * : * : -0.2
+R: 2 2 : 21 : * : * : -0.2
+R: 2 3 : 21 : * : * : -0.2
+R: 2 4 : 21 : * : * : -10.1
+R: 2 5 : 21 : * : * : 1.9
+R: 3 0 : 21 : * : * : -0.2
+R: 3 1 : 21 : * : * : -0.2
+R: 3 2 : 21 : * : * : -0.2
+R: 3 3 : 21 : * : * : -0.2
+R: 3 4 : 21 : * : * : -10.1
+R: 3 5 : 21 : * : * : 1.9
+R: 4 0 : 21 : * : * : -1.1
+R: 4 1 : 21 : * : * : -1.1
+R: 4 2 : 21 : * : * : -1.1
+R: 4 3 : 21 : * : * : -1.1
+R: 4 4 : 21 : * : * : -11
+R: 4 5 : 21 : * : * : -11
+R: 5 0 : 21 : * : * : -1.1
+R: 5 1 : 21 : * : * : -1.1
+R: 5 2 : 21 : * : * : -1.1
+R: 5 3 : 21 : * : * : -1.1
+R: 5 4 : 21 : * : * : 1
+R: 5 5 : 21 : * : * : 1
+R: 0 0 : 22 : * : * : -0.2
+R: 0 1 : 22 : * : * : -0.2
+R: 0 2 : 22 : * : * : -0.2
+R: 0 3 : 22 : * : * : -0.2
+R: 0 4 : 22 : * : * : -1.1
+R: 0 5 : 22 : * : * : -1.1
+R: 1 0 : 22 : * : * : -0.2
+R: 1 1 : 22 : * : * : -0.2
+R: 1 2 : 22 : * : * : -0.2
+R: 1 3 : 22 : * : * : -0.2
+R: 1 4 : 22 : * : * : -1.1
+R: 1 5 : 22 : * : * : -1.1
+R: 2 0 : 22 : * : * : -0.2
+R: 2 1 : 22 : * : * : -0.2
+R: 2 2 : 22 : * : * : -0.2
+R: 2 3 : 22 : * : * : -0.2
+R: 2 4 : 22 : * : * : -1.1
+R: 2 5 : 22 : * : * : -1.1
+R: 3 0 : 22 : * : * : -0.2
+R: 3 1 : 22 : * : * : -0.2
+R: 3 2 : 22 : * : * : -0.2
+R: 3 3 : 22 : * : * : -0.2
+R: 3 4 : 22 : * : * : -1.1
+R: 3 5 : 22 : * : * : -1.1
+R: 4 0 : 22 : * : * : -10.1
+R: 4 1 : 22 : * : * : -10.1
+R: 4 2 : 22 : * : * : -10.1
+R: 4 3 : 22 : * : * : -10.1
+R: 4 4 : 22 : * : * : -11
+R: 4 5 : 22 : * : * : -11
+R: 5 0 : 22 : * : * : 1.9
+R: 5 1 : 22 : * : * : 1.9
+R: 5 2 : 22 : * : * : 1.9
+R: 5 3 : 22 : * : * : 1.9
+R: 5 4 : 22 : * : * : 1
+R: 5 5 : 22 : * : * : 1
+R: 0 0 : 23 : * : * : -0.2
+R: 0 1 : 23 : * : * : -0.2
+R: 0 2 : 23 : * : * : -0.2
+R: 0 3 : 23 : * : * : -0.2
+R: 0 4 : 23 : * : * : -1.1
+R: 0 5 : 23 : * : * : -1.1
+R: 1 0 : 23 : * : * : -0.2
+R: 1 1 : 23 : * : * : -0.2
+R: 1 2 : 23 : * : * : -0.2
+R: 1 3 : 23 : * : * : -0.2
+R: 1 4 : 23 : * : * : -1.1
+R: 1 5 : 23 : * : * : -1.1
+R: 2 0 : 23 : * : * : -0.2
+R: 2 1 : 23 : * : * : -0.2
+R: 2 2 : 23 : * : * : -0.2
+R: 2 3 : 23 : * : * : -0.2
+R: 2 4 : 23 : * : * : -1.1
+R: 2 5 : 23 : * : * : -1.1
+R: 3 0 : 23 : * : * : -0.2
+R: 3 1 : 23 : * : * : -0.2
+R: 3 2 : 23 : * : * : -0.2
+R: 3 3 : 23 : * : * : -0.2
+R: 3 4 : 23 : * : * : -1.1
+R: 3 5 : 23 : * : * : -1.1
+R: 4 0 : 23 : * : * : -1.1
+R: 4 1 : 23 : * : * : -1.1
+R: 4 2 : 23 : * : * : -1.1
+R: 4 3 : 23 : * : * : -1.1
+R: 4 4 : 23 : * : * : -2
+R: 4 5 : 23 : * : * : -2
+R: 5 0 : 23 : * : * : -1.1
+R: 5 1 : 23 : * : * : -1.1
+R: 5 2 : 23 : * : * : -1.1
+R: 5 3 : 23 : * : * : -1.1
+R: 5 4 : 23 : * : * : -2
+R: 5 5 : 23 : * : * : -2
+R: 0 0 : 24 : * : * : -0.2
+R: 0 1 : 24 : * : * : -0.2
+R: 0 2 : 24 : * : * : -0.2
+R: 0 3 : 24 : * : * : -0.2
+R: 0 4 : 24 : * : * : -10.1
+R: 0 5 : 24 : * : * : 1.9
+R: 1 0 : 24 : * : * : -0.2
+R: 1 1 : 24 : * : * : -0.2
+R: 1 2 : 24 : * : * : -0.2
+R: 1 3 : 24 : * : * : -0.2
+R: 1 4 : 24 : * : * : -10.1
+R: 1 5 : 24 : * : * : 1.9
+R: 2 0 : 24 : * : * : -0.2
+R: 2 1 : 24 : * : * : -0.2
+R: 2 2 : 24 : * : * : -0.2
+R: 2 3 : 24 : * : * : -0.2
+R: 2 4 : 24 : * : * : -10.1
+R: 2 5 : 24 : * : * : 1.9
+R: 3 0 : 24 : * : * : -0.2
+R: 3 1 : 24 : * : * : -0.2
+R: 3 2 : 24 : * : * : -0.2
+R: 3 3 : 24 : * : * : -0.2
+R: 3 4 : 24 : * : * : -10.1
+R: 3 5 : 24 : * : * : 1.9
+R: 4 0 : 24 : * : * : -10.1
+R: 4 1 : 24 : * : * : -10.1
+R: 4 2 : 24 : * : * : -10.1
+R: 4 3 : 24 : * : * : -10.1
+R: 4 4 : 24 : * : * : 0
+R: 4 5 : 24 : * : * : 0
+R: 5 0 : 24 : * : * : 1.9
+R: 5 1 : 24 : * : * : 1.9
+R: 5 2 : 24 : * : * : 1.9
+R: 5 3 : 24 : * : * : 1.9
+R: 5 4 : 24 : * : * : 4
+R: 5 5 : 24 : * : * : 4
+R: 0 0 : 25 : * : * : -0.2
+R: 0 1 : 25 : * : * : -0.2
+R: 0 2 : 25 : * : * : -0.2
+R: 0 3 : 25 : * : * : -0.2
+R: 0 4 : 25 : * : * : -10.1
+R: 0 5 : 25 : * : * : 1.9
+R: 1 0 : 25 : * : * : -0.2
+R: 1 1 : 25 : * : * : -0.2
+R: 1 2 : 25 : * : * : -0.2
+R: 1 3 : 25 : * : * : -0.2
+R: 1 4 : 25 : * : * : -10.1
+R: 1 5 : 25 : * : * : 1.9
+R: 2 0 : 25 : * : * : -0.2
+R: 2 1 : 25 : * : * : -0.2
+R: 2 2 : 25 : * : * : -0.2
+R: 2 3 : 25 : * : * : -0.2
+R: 2 4 : 25 : * : * : -10.1
+R: 2 5 : 25 : * : * : 1.9
+R: 3 0 : 25 : * : * : -0.2
+R: 3 1 : 25 : * : * : -0.2
+R: 3 2 : 25 : * : * : -0.2
+R: 3 3 : 25 : * : * : -0.2
+R: 3 4 : 25 : * : * : -10.1
+R: 3 5 : 25 : * : * : 1.9
+R: 4 0 : 25 : * : * : -1.1
+R: 4 1 : 25 : * : * : -1.1
+R: 4 2 : 25 : * : * : -1.1
+R: 4 3 : 25 : * : * : -1.1
+R: 4 4 : 25 : * : * : -11
+R: 4 5 : 25 : * : * : -11
+R: 5 0 : 25 : * : * : -1.1
+R: 5 1 : 25 : * : * : -1.1
+R: 5 2 : 25 : * : * : -1.1
+R: 5 3 : 25 : * : * : -1.1
+R: 5 4 : 25 : * : * : 1
+R: 5 5 : 25 : * : * : 1
+R: 0 0 : 26 : * : * : -0.2
+R: 0 1 : 26 : * : * : -0.2
+R: 0 2 : 26 : * : * : -0.2
+R: 0 3 : 26 : * : * : -0.2
+R: 0 4 : 26 : * : * : -1.1
+R: 0 5 : 26 : * : * : -1.1
+R: 1 0 : 26 : * : * : -0.2
+R: 1 1 : 26 : * : * : -0.2
+R: 1 2 : 26 : * : * : -0.2
+R: 1 3 : 26 : * : * : -0.2
+R: 1 4 : 26 : * : * : -1.1
+R: 1 5 : 26 : * : * : -1.1
+R: 2 0 : 26 : * : * : -0.2
+R: 2 1 : 26 : * : * : -0.2
+R: 2 2 : 26 : * : * : -0.2
+R: 2 3 : 26 : * : * : -0.2
+R: 2 4 : 26 : * : * : -1.1
+R: 2 5 : 26 : * : * : -1.1
+R: 3 0 : 26 : * : * : -0.2
+R: 3 1 : 26 : * : * : -0.2
+R: 3 2 : 26 : * : * : -0.2
+R: 3 3 : 26 : * : * : -0.2
+R: 3 4 : 26 : * : * : -1.1
+R: 3 5 : 26 : * : * : -1.1
+R: 4 0 : 26 : * : * : -10.1
+R: 4 1 : 26 : * : * : -10.1
+R: 4 2 : 26 : * : * : -10.1
+R: 4 3 : 26 : * : * : -10.1
+R: 4 4 : 26 : * : * : -11
+R: 4 5 : 26 : * : * : -11
+R: 5 0 : 26 : * : * : 1.9
+R: 5 1 : 26 : * : * : 1.9
+R: 5 2 : 26 : * : * : 1.9
+R: 5 3 : 26 : * : * : 1.9
+R: 5 4 : 26 : * : * : 1
+R: 5 5 : 26 : * : * : 1
+R: 0 0 : 27 : * : * : -0.2
+R: 0 1 : 27 : * : * : -0.2
+R: 0 2 : 27 : * : * : -0.2
+R: 0 3 : 27 : * : * : -0.2
+R: 0 4 : 27 : * : * : -1.1
+R: 0 5 : 27 : * : * : -1.1
+R: 1 0 : 27 : * : * : -0.2
+R: 1 1 : 27 : * : * : -0.2
+R: 1 2 : 27 : * : * : -0.2
+R: 1 3 : 27 : * : * : -0.2
+R: 1 4 : 27 : * : * : -1.1
+R: 1 5 : 27 : * : * : -1.1
+R: 2 0 : 27 : * : * : -0.2
+R: 2 1 : 27 : * : * : -0.2
+R: 2 2 : 27 : * : * : -0.2
+R: 2 3 : 27 : * : * : -0.2
+R: 2 4 : 27 : * : * : -1.1
+R: 2 5 : 27 : * : * : -1.1
+R: 3 0 : 27 : * : * : -0.2
+R: 3 1 : 27 : * : * : -0.2
+R: 3 2 : 27 : * : * : -0.2
+R: 3 3 : 27 : * : * : -0.2
+R: 3 4 : 27 : * : * : -1.1
+R: 3 5 : 27 : * : * : -1.1
+R: 4 0 : 27 : * : * : -1.1
+R: 4 1 : 27 : * : * : -1.1
+R: 4 2 : 27 : * : * : -1.1
+R: 4 3 : 27 : * : * : -1.1
+R: 4 4 : 27 : * : * : -2
+R: 4 5 : 27 : * : * : -2
+R: 5 0 : 27 : * : * : -1.1
+R: 5 1 : 27 : * : * : -1.1
+R: 5 2 : 27 : * : * : -1.1
+R: 5 3 : 27 : * : * : -1.1
+R: 5 4 : 27 : * : * : -2
+R: 5 5 : 27 : * : * : -2
+R: 0 0 : 28 : * : * : -0.2
+R: 0 1 : 28 : * : * : -0.2
+R: 0 2 : 28 : * : * : -0.2
+R: 0 3 : 28 : * : * : -0.2
+R: 0 4 : 28 : * : * : -10.1
+R: 0 5 : 28 : * : * : 1.9
+R: 1 0 : 28 : * : * : -0.2
+R: 1 1 : 28 : * : * : -0.2
+R: 1 2 : 28 : * : * : -0.2
+R: 1 3 : 28 : * : * : -0.2
+R: 1 4 : 28 : * : * : -10.1
+R: 1 5 : 28 : * : * : 1.9
+R: 2 0 : 28 : * : * : -0.2
+R: 2 1 : 28 : * : * : -0.2
+R: 2 2 : 28 : * : * : -0.2
+R: 2 3 : 28 : * : * : -0.2
+R: 2 4 : 28 : * : * : -10.1
+R: 2 5 : 28 : * : * : 1.9
+R: 3 0 : 28 : * : * : -0.2
+R: 3 1 : 28 : * : * : -0.2
+R: 3 2 : 28 : * : * : -0.2
+R: 3 3 : 28 : * : * : -0.2
+R: 3 4 : 28 : * : * : -10.1
+R: 3 5 : 28 : * : * : 1.9
+R: 4 0 : 28 : * : * : -10.1
+R: 4 1 : 28 : * : * : -10.1
+R: 4 2 : 28 : * : * : -10.1
+R: 4 3 : 28 : * : * : -10.1
+R: 4 4 : 28 : * : * : 0
+R: 4 5 : 28 : * : * : 0
+R: 5 0 : 28 : * : * : 1.9
+R: 5 1 : 28 : * : * : 1.9
+R: 5 2 : 28 : * : * : 1.9
+R: 5 3 : 28 : * : * : 1.9
+R: 5 4 : 28 : * : * : 4
+R: 5 5 : 28 : * : * : 4
+R: 0 0 : 29 : * : * : -0.2
+R: 0 1 : 29 : * : * : -0.2
+R: 0 2 : 29 : * : * : -0.2
+R: 0 3 : 29 : * : * : -0.2
+R: 0 4 : 29 : * : * : -10.1
+R: 0 5 : 29 : * : * : 1.9
+R: 1 0 : 29 : * : * : -0.2
+R: 1 1 : 29 : * : * : -0.2
+R: 1 2 : 29 : * : * : -0.2
+R: 1 3 : 29 : * : * : -0.2
+R: 1 4 : 29 : * : * : -10.1
+R: 1 5 : 29 : * : * : 1.9
+R: 2 0 : 29 : * : * : -0.2
+R: 2 1 : 29 : * : * : -0.2
+R: 2 2 : 29 : * : * : -0.2
+R: 2 3 : 29 : * : * : -0.2
+R: 2 4 : 29 : * : * : -10.1
+R: 2 5 : 29 : * : * : 1.9
+R: 3 0 : 29 : * : * : -0.2
+R: 3 1 : 29 : * : * : -0.2
+R: 3 2 : 29 : * : * : -0.2
+R: 3 3 : 29 : * : * : -0.2
+R: 3 4 : 29 : * : * : -10.1
+R: 3 5 : 29 : * : * : 1.9
+R: 4 0 : 29 : * : * : -1.1
+R: 4 1 : 29 : * : * : -1.1
+R: 4 2 : 29 : * : * : -1.1
+R: 4 3 : 29 : * : * : -1.1
+R: 4 4 : 29 : * : * : -11
+R: 4 5 : 29 : * : * : -11
+R: 5 0 : 29 : * : * : -1.1
+R: 5 1 : 29 : * : * : -1.1
+R: 5 2 : 29 : * : * : -1.1
+R: 5 3 : 29 : * : * : -1.1
+R: 5 4 : 29 : * : * : 1
+R: 5 5 : 29 : * : * : 1
+R: 0 0 : 30 : * : * : -0.2
+R: 0 1 : 30 : * : * : -0.2
+R: 0 2 : 30 : * : * : -0.2
+R: 0 3 : 30 : * : * : -0.2
+R: 0 4 : 30 : * : * : -1.1
+R: 0 5 : 30 : * : * : -1.1
+R: 1 0 : 30 : * : * : -0.2
+R: 1 1 : 30 : * : * : -0.2
+R: 1 2 : 30 : * : * : -0.2
+R: 1 3 : 30 : * : * : -0.2
+R: 1 4 : 30 : * : * : -1.1
+R: 1 5 : 30 : * : * : -1.1
+R: 2 0 : 30 : * : * : -0.2
+R: 2 1 : 30 : * : * : -0.2
+R: 2 2 : 30 : * : * : -0.2
+R: 2 3 : 30 : * : * : -0.2
+R: 2 4 : 30 : * : * : -1.1
+R: 2 5 : 30 : * : * : -1.1
+R: 3 0 : 30 : * : * : -0.2
+R: 3 1 : 30 : * : * : -0.2
+R: 3 2 : 30 : * : * : -0.2
+R: 3 3 : 30 : * : * : -0.2
+R: 3 4 : 30 : * : * : -1.1
+R: 3 5 : 30 : * : * : -1.1
+R: 4 0 : 30 : * : * : -10.1
+R: 4 1 : 30 : * : * : -10.1
+R: 4 2 : 30 : * : * : -10.1
+R: 4 3 : 30 : * : * : -10.1
+R: 4 4 : 30 : * : * : -11
+R: 4 5 : 30 : * : * : -11
+R: 5 0 : 30 : * : * : 1.9
+R: 5 1 : 30 : * : * : 1.9
+R: 5 2 : 30 : * : * : 1.9
+R: 5 3 : 30 : * : * : 1.9
+R: 5 4 : 30 : * : * : 1
+R: 5 5 : 30 : * : * : 1
+R: 0 0 : 31 : * : * : -0.2
+R: 0 1 : 31 : * : * : -0.2
+R: 0 2 : 31 : * : * : -0.2
+R: 0 3 : 31 : * : * : -0.2
+R: 0 4 : 31 : * : * : -1.1
+R: 0 5 : 31 : * : * : -1.1
+R: 1 0 : 31 : * : * : -0.2
+R: 1 1 : 31 : * : * : -0.2
+R: 1 2 : 31 : * : * : -0.2
+R: 1 3 : 31 : * : * : -0.2
+R: 1 4 : 31 : * : * : -1.1
+R: 1 5 : 31 : * : * : -1.1
+R: 2 0 : 31 : * : * : -0.2
+R: 2 1 : 31 : * : * : -0.2
+R: 2 2 : 31 : * : * : -0.2
+R: 2 3 : 31 : * : * : -0.2
+R: 2 4 : 31 : * : * : -1.1
+R: 2 5 : 31 : * : * : -1.1
+R: 3 0 : 31 : * : * : -0.2
+R: 3 1 : 31 : * : * : -0.2
+R: 3 2 : 31 : * : * : -0.2
+R: 3 3 : 31 : * : * : -0.2
+R: 3 4 : 31 : * : * : -1.1
+R: 3 5 : 31 : * : * : -1.1
+R: 4 0 : 31 : * : * : -1.1
+R: 4 1 : 31 : * : * : -1.1
+R: 4 2 : 31 : * : * : -1.1
+R: 4 3 : 31 : * : * : -1.1
+R: 4 4 : 31 : * : * : -2
+R: 4 5 : 31 : * : * : -2
+R: 5 0 : 31 : * : * : -1.1
+R: 5 1 : 31 : * : * : -1.1
+R: 5 2 : 31 : * : * : -1.1
+R: 5 3 : 31 : * : * : -1.1
+R: 5 4 : 31 : * : * : -2
+R: 5 5 : 31 : * : * : -2
+R: 0 0 : 32 : * : * : -0.2
+R: 0 1 : 32 : * : * : -0.2
+R: 0 2 : 32 : * : * : -0.2
+R: 0 3 : 32 : * : * : -0.2
+R: 0 4 : 32 : * : * : -10.1
+R: 0 5 : 32 : * : * : 1.9
+R: 1 0 : 32 : * : * : -0.2
+R: 1 1 : 32 : * : * : -0.2
+R: 1 2 : 32 : * : * : -0.2
+R: 1 3 : 32 : * : * : -0.2
+R: 1 4 : 32 : * : * : -10.1
+R: 1 5 : 32 : * : * : 1.9
+R: 2 0 : 32 : * : * : -0.2
+R: 2 1 : 32 : * : * : -0.2
+R: 2 2 : 32 : * : * : -0.2
+R: 2 3 : 32 : * : * : -0.2
+R: 2 4 : 32 : * : * : -10.1
+R: 2 5 : 32 : * : * : 1.9
+R: 3 0 : 32 : * : * : -0.2
+R: 3 1 : 32 : * : * : -0.2
+R: 3 2 : 32 : * : * : -0.2
+R: 3 3 : 32 : * : * : -0.2
+R: 3 4 : 32 : * : * : -10.1
+R: 3 5 : 32 : * : * : 1.9
+R: 4 0 : 32 : * : * : -10.1
+R: 4 1 : 32 : * : * : -10.1
+R: 4 2 : 32 : * : * : -10.1
+R: 4 3 : 32 : * : * : -10.1
+R: 4 4 : 32 : * : * : 0
+R: 4 5 : 32 : * : * : 0
+R: 5 0 : 32 : * : * : 1.9
+R: 5 1 : 32 : * : * : 1.9
+R: 5 2 : 32 : * : * : 1.9
+R: 5 3 : 32 : * : * : 1.9
+R: 5 4 : 32 : * : * : 4
+R: 5 5 : 32 : * : * : 4
+R: 0 0 : 33 : * : * : -0.2
+R: 0 1 : 33 : * : * : -0.2
+R: 0 2 : 33 : * : * : -0.2
+R: 0 3 : 33 : * : * : -0.2
+R: 0 4 : 33 : * : * : -10.1
+R: 0 5 : 33 : * : * : 1.9
+R: 1 0 : 33 : * : * : -0.2
+R: 1 1 : 33 : * : * : -0.2
+R: 1 2 : 33 : * : * : -0.2
+R: 1 3 : 33 : * : * : -0.2
+R: 1 4 : 33 : * : * : -10.1
+R: 1 5 : 33 : * : * : 1.9
+R: 2 0 : 33 : * : * : -0.2
+R: 2 1 : 33 : * : * : -0.2
+R: 2 2 : 33 : * : * : -0.2
+R: 2 3 : 33 : * : * : -0.2
+R: 2 4 : 33 : * : * : -10.1
+R: 2 5 : 33 : * : * : 1.9
+R: 3 0 : 33 : * : * : -0.2
+R: 3 1 : 33 : * : * : -0.2
+R: 3 2 : 33 : * : * : -0.2
+R: 3 3 : 33 : * : * : -0.2
+R: 3 4 : 33 : * : * : -10.1
+R: 3 5 : 33 : * : * : 1.9
+R: 4 0 : 33 : * : * : -1.1
+R: 4 1 : 33 : * : * : -1.1
+R: 4 2 : 33 : * : * : -1.1
+R: 4 3 : 33 : * : * : -1.1
+R: 4 4 : 33 : * : * : -11
+R: 4 5 : 33 : * : * : -11
+R: 5 0 : 33 : * : * : -1.1
+R: 5 1 : 33 : * : * : -1.1
+R: 5 2 : 33 : * : * : -1.1
+R: 5 3 : 33 : * : * : -1.1
+R: 5 4 : 33 : * : * : 1
+R: 5 5 : 33 : * : * : 1
+R: 0 0 : 34 : * : * : -0.2
+R: 0 1 : 34 : * : * : -0.2
+R: 0 2 : 34 : * : * : -0.2
+R: 0 3 : 34 : * : * : -0.2
+R: 0 4 : 34 : * : * : -10.1
+R: 0 5 : 34 : * : * : 1.9
+R: 1 0 : 34 : * : * : -0.2
+R: 1 1 : 34 : * : * : -0.2
+R: 1 2 : 34 : * : * : -0.2
+R: 1 3 : 34 : * : * : -0.2
+R: 1 4 : 34 : * : * : -10.1
+R: 1 5 : 34 : * : * : 1.9
+R: 2 0 : 34 : * : * : -0.2
+R: 2 1 : 34 : * : * : -0.2
+R: 2 2 : 34 : * : * : -0.2
+R: 2 3 : 34 : * : * : -0.2
+R: 2 4 : 34 : * : * : -10.1
+R: 2 5 : 34 : * : * : 1.9
+R: 3 0 : 34 : * : * : -0.2
+R: 3 1 : 34 : * : * : -0.2
+R: 3 2 : 34 : * : * : -0.2
+R: 3 3 : 34 : * : * : -0.2
+R: 3 4 : 34 : * : * : -10.1
+R: 3 5 : 34 : * : * : 1.9
+R: 4 0 : 34 : * : * : -10.1
+R: 4 1 : 34 : * : * : -10.1
+R: 4 2 : 34 : * : * : -10.1
+R: 4 3 : 34 : * : * : -10.1
+R: 4 4 : 34 : * : * : 0
+R: 4 5 : 34 : * : * : 0
+R: 5 0 : 34 : * : * : 1.9
+R: 5 1 : 34 : * : * : 1.9
+R: 5 2 : 34 : * : * : 1.9
+R: 5 3 : 34 : * : * : 1.9
+R: 5 4 : 34 : * : * : 4
+R: 5 5 : 34 : * : * : 4
+R: 0 0 : 35 : * : * : -0.2
+R: 0 1 : 35 : * : * : -0.2
+R: 0 2 : 35 : * : * : -0.2
+R: 0 3 : 35 : * : * : -0.2
+R: 0 4 : 35 : * : * : -10.1
+R: 0 5 : 35 : * : * : 1.9
+R: 1 0 : 35 : * : * : -0.2
+R: 1 1 : 35 : * : * : -0.2
+R: 1 2 : 35 : * : * : -0.2
+R: 1 3 : 35 : * : * : -0.2
+R: 1 4 : 35 : * : * : -10.1
+R: 1 5 : 35 : * : * : 1.9
+R: 2 0 : 35 : * : * : -0.2
+R: 2 1 : 35 : * : * : -0.2
+R: 2 2 : 35 : * : * : -0.2
+R: 2 3 : 35 : * : * : -0.2
+R: 2 4 : 35 : * : * : -10.1
+R: 2 5 : 35 : * : * : 1.9
+R: 3 0 : 35 : * : * : -0.2
+R: 3 1 : 35 : * : * : -0.2
+R: 3 2 : 35 : * : * : -0.2
+R: 3 3 : 35 : * : * : -0.2
+R: 3 4 : 35 : * : * : -10.1
+R: 3 5 : 35 : * : * : 1.9
+R: 4 0 : 35 : * : * : -1.1
+R: 4 1 : 35 : * : * : -1.1
+R: 4 2 : 35 : * : * : -1.1
+R: 4 3 : 35 : * : * : -1.1
+R: 4 4 : 35 : * : * : -11
+R: 4 5 : 35 : * : * : -11
+R: 5 0 : 35 : * : * : -1.1
+R: 5 1 : 35 : * : * : -1.1
+R: 5 2 : 35 : * : * : -1.1
+R: 5 3 : 35 : * : * : -1.1
+R: 5 4 : 35 : * : * : 1
+R: 5 5 : 35 : * : * : 1
+R: 0 0 : 36 : * : * : -0.2
+R: 0 1 : 36 : * : * : -0.2
+R: 0 2 : 36 : * : * : -0.2
+R: 0 3 : 36 : * : * : -0.2
+R: 0 4 : 36 : * : * : -1.1
+R: 0 5 : 36 : * : * : -1.1
+R: 1 0 : 36 : * : * : -0.2
+R: 1 1 : 36 : * : * : -0.2
+R: 1 2 : 36 : * : * : -0.2
+R: 1 3 : 36 : * : * : -0.2
+R: 1 4 : 36 : * : * : -1.1
+R: 1 5 : 36 : * : * : -1.1
+R: 2 0 : 36 : * : * : -0.2
+R: 2 1 : 36 : * : * : -0.2
+R: 2 2 : 36 : * : * : -0.2
+R: 2 3 : 36 : * : * : -0.2
+R: 2 4 : 36 : * : * : -1.1
+R: 2 5 : 36 : * : * : -1.1
+R: 3 0 : 36 : * : * : -0.2
+R: 3 1 : 36 : * : * : -0.2
+R: 3 2 : 36 : * : * : -0.2
+R: 3 3 : 36 : * : * : -0.2
+R: 3 4 : 36 : * : * : -1.1
+R: 3 5 : 36 : * : * : -1.1
+R: 4 0 : 36 : * : * : -10.1
+R: 4 1 : 36 : * : * : -10.1
+R: 4 2 : 36 : * : * : -10.1
+R: 4 3 : 36 : * : * : -10.1
+R: 4 4 : 36 : * : * : -11
+R: 4 5 : 36 : * : * : -11
+R: 5 0 : 36 : * : * : 1.9
+R: 5 1 : 36 : * : * : 1.9
+R: 5 2 : 36 : * : * : 1.9
+R: 5 3 : 36 : * : * : 1.9
+R: 5 4 : 36 : * : * : 1
+R: 5 5 : 36 : * : * : 1
+R: 0 0 : 37 : * : * : -0.2
+R: 0 1 : 37 : * : * : -0.2
+R: 0 2 : 37 : * : * : -0.2
+R: 0 3 : 37 : * : * : -0.2
+R: 0 4 : 37 : * : * : -1.1
+R: 0 5 : 37 : * : * : -1.1
+R: 1 0 : 37 : * : * : -0.2
+R: 1 1 : 37 : * : * : -0.2
+R: 1 2 : 37 : * : * : -0.2
+R: 1 3 : 37 : * : * : -0.2
+R: 1 4 : 37 : * : * : -1.1
+R: 1 5 : 37 : * : * : -1.1
+R: 2 0 : 37 : * : * : -0.2
+R: 2 1 : 37 : * : * : -0.2
+R: 2 2 : 37 : * : * : -0.2
+R: 2 3 : 37 : * : * : -0.2
+R: 2 4 : 37 : * : * : -1.1
+R: 2 5 : 37 : * : * : -1.1
+R: 3 0 : 37 : * : * : -0.2
+R: 3 1 : 37 : * : * : -0.2
+R: 3 2 : 37 : * : * : -0.2
+R: 3 3 : 37 : * : * : -0.2
+R: 3 4 : 37 : * : * : -1.1
+R: 3 5 : 37 : * : * : -1.1
+R: 4 0 : 37 : * : * : -1.1
+R: 4 1 : 37 : * : * : -1.1
+R: 4 2 : 37 : * : * : -1.1
+R: 4 3 : 37 : * : * : -1.1
+R: 4 4 : 37 : * : * : -2
+R: 4 5 : 37 : * : * : -2
+R: 5 0 : 37 : * : * : -1.1
+R: 5 1 : 37 : * : * : -1.1
+R: 5 2 : 37 : * : * : -1.1
+R: 5 3 : 37 : * : * : -1.1
+R: 5 4 : 37 : * : * : -2
+R: 5 5 : 37 : * : * : -2
+R: 0 0 : 38 : * : * : -0.2
+R: 0 1 : 38 : * : * : -0.2
+R: 0 2 : 38 : * : * : -0.2
+R: 0 3 : 38 : * : * : -0.2
+R: 0 4 : 38 : * : * : -1.1
+R: 0 5 : 38 : * : * : -1.1
+R: 1 0 : 38 : * : * : -0.2
+R: 1 1 : 38 : * : * : -0.2
+R: 1 2 : 38 : * : * : -0.2
+R: 1 3 : 38 : * : * : -0.2
+R: 1 4 : 38 : * : * : -1.1
+R: 1 5 : 38 : * : * : -1.1
+R: 2 0 : 38 : * : * : -0.2
+R: 2 1 : 38 : * : * : -0.2
+R: 2 2 : 38 : * : * : -0.2
+R: 2 3 : 38 : * : * : -0.2
+R: 2 4 : 38 : * : * : -1.1
+R: 2 5 : 38 : * : * : -1.1
+R: 3 0 : 38 : * : * : -0.2
+R: 3 1 : 38 : * : * : -0.2
+R: 3 2 : 38 : * : * : -0.2
+R: 3 3 : 38 : * : * : -0.2
+R: 3 4 : 38 : * : * : -1.1
+R: 3 5 : 38 : * : * : -1.1
+R: 4 0 : 38 : * : * : -10.1
+R: 4 1 : 38 : * : * : -10.1
+R: 4 2 : 38 : * : * : -10.1
+R: 4 3 : 38 : * : * : -10.1
+R: 4 4 : 38 : * : * : -11
+R: 4 5 : 38 : * : * : -11
+R: 5 0 : 38 : * : * : 1.9
+R: 5 1 : 38 : * : * : 1.9
+R: 5 2 : 38 : * : * : 1.9
+R: 5 3 : 38 : * : * : 1.9
+R: 5 4 : 38 : * : * : 1
+R: 5 5 : 38 : * : * : 1
+R: 0 0 : 39 : * : * : -0.2
+R: 0 1 : 39 : * : * : -0.2
+R: 0 2 : 39 : * : * : -0.2
+R: 0 3 : 39 : * : * : -0.2
+R: 0 4 : 39 : * : * : -1.1
+R: 0 5 : 39 : * : * : -1.1
+R: 1 0 : 39 : * : * : -0.2
+R: 1 1 : 39 : * : * : -0.2
+R: 1 2 : 39 : * : * : -0.2
+R: 1 3 : 39 : * : * : -0.2
+R: 1 4 : 39 : * : * : -1.1
+R: 1 5 : 39 : * : * : -1.1
+R: 2 0 : 39 : * : * : -0.2
+R: 2 1 : 39 : * : * : -0.2
+R: 2 2 : 39 : * : * : -0.2
+R: 2 3 : 39 : * : * : -0.2
+R: 2 4 : 39 : * : * : -1.1
+R: 2 5 : 39 : * : * : -1.1
+R: 3 0 : 39 : * : * : -0.2
+R: 3 1 : 39 : * : * : -0.2
+R: 3 2 : 39 : * : * : -0.2
+R: 3 3 : 39 : * : * : -0.2
+R: 3 4 : 39 : * : * : -1.1
+R: 3 5 : 39 : * : * : -1.1
+R: 4 0 : 39 : * : * : -1.1
+R: 4 1 : 39 : * : * : -1.1
+R: 4 2 : 39 : * : * : -1.1
+R: 4 3 : 39 : * : * : -1.1
+R: 4 4 : 39 : * : * : -2
+R: 4 5 : 39 : * : * : -2
+R: 5 0 : 39 : * : * : -1.1
+R: 5 1 : 39 : * : * : -1.1
+R: 5 2 : 39 : * : * : -1.1
+R: 5 3 : 39 : * : * : -1.1
+R: 5 4 : 39 : * : * : -2
+R: 5 5 : 39 : * : * : -2
+R: 0 0 : 40 : * : * : -0.2
+R: 0 1 : 40 : * : * : -0.2
+R: 0 2 : 40 : * : * : -0.2
+R: 0 3 : 40 : * : * : -0.2
+R: 0 4 : 40 : * : * : -10.1
+R: 0 5 : 40 : * : * : 1.9
+R: 1 0 : 40 : * : * : -0.2
+R: 1 1 : 40 : * : * : -0.2
+R: 1 2 : 40 : * : * : -0.2
+R: 1 3 : 40 : * : * : -0.2
+R: 1 4 : 40 : * : * : -10.1
+R: 1 5 : 40 : * : * : 1.9
+R: 2 0 : 40 : * : * : -0.2
+R: 2 1 : 40 : * : * : -0.2
+R: 2 2 : 40 : * : * : -0.2
+R: 2 3 : 40 : * : * : -0.2
+R: 2 4 : 40 : * : * : -10.1
+R: 2 5 : 40 : * : * : 1.9
+R: 3 0 : 40 : * : * : -0.2
+R: 3 1 : 40 : * : * : -0.2
+R: 3 2 : 40 : * : * : -0.2
+R: 3 3 : 40 : * : * : -0.2
+R: 3 4 : 40 : * : * : -10.1
+R: 3 5 : 40 : * : * : 1.9
+R: 4 0 : 40 : * : * : -10.1
+R: 4 1 : 40 : * : * : -10.1
+R: 4 2 : 40 : * : * : -10.1
+R: 4 3 : 40 : * : * : -10.1
+R: 4 4 : 40 : * : * : 0
+R: 4 5 : 40 : * : * : 0
+R: 5 0 : 40 : * : * : 1.9
+R: 5 1 : 40 : * : * : 1.9
+R: 5 2 : 40 : * : * : 1.9
+R: 5 3 : 40 : * : * : 1.9
+R: 5 4 : 40 : * : * : 4
+R: 5 5 : 40 : * : * : 4
+R: 0 0 : 41 : * : * : -0.2
+R: 0 1 : 41 : * : * : -0.2
+R: 0 2 : 41 : * : * : -0.2
+R: 0 3 : 41 : * : * : -0.2
+R: 0 4 : 41 : * : * : -10.1
+R: 0 5 : 41 : * : * : 1.9
+R: 1 0 : 41 : * : * : -0.2
+R: 1 1 : 41 : * : * : -0.2
+R: 1 2 : 41 : * : * : -0.2
+R: 1 3 : 41 : * : * : -0.2
+R: 1 4 : 41 : * : * : -10.1
+R: 1 5 : 41 : * : * : 1.9
+R: 2 0 : 41 : * : * : -0.2
+R: 2 1 : 41 : * : * : -0.2
+R: 2 2 : 41 : * : * : -0.2
+R: 2 3 : 41 : * : * : -0.2
+R: 2 4 : 41 : * : * : -10.1
+R: 2 5 : 41 : * : * : 1.9
+R: 3 0 : 41 : * : * : -0.2
+R: 3 1 : 41 : * : * : -0.2
+R: 3 2 : 41 : * : * : -0.2
+R: 3 3 : 41 : * : * : -0.2
+R: 3 4 : 41 : * : * : -10.1
+R: 3 5 : 41 : * : * : 1.9
+R: 4 0 : 41 : * : * : -1.1
+R: 4 1 : 41 : * : * : -1.1
+R: 4 2 : 41 : * : * : -1.1
+R: 4 3 : 41 : * : * : -1.1
+R: 4 4 : 41 : * : * : -11
+R: 4 5 : 41 : * : * : -11
+R: 5 0 : 41 : * : * : -1.1
+R: 5 1 : 41 : * : * : -1.1
+R: 5 2 : 41 : * : * : -1.1
+R: 5 3 : 41 : * : * : -1.1
+R: 5 4 : 41 : * : * : 1
+R: 5 5 : 41 : * : * : 1
+R: 0 0 : 42 : * : * : -0.2
+R: 0 1 : 42 : * : * : -0.2
+R: 0 2 : 42 : * : * : -0.2
+R: 0 3 : 42 : * : * : -0.2
+R: 0 4 : 42 : * : * : -10.1
+R: 0 5 : 42 : * : * : 1.9
+R: 1 0 : 42 : * : * : -0.2
+R: 1 1 : 42 : * : * : -0.2
+R: 1 2 : 42 : * : * : -0.2
+R: 1 3 : 42 : * : * : -0.2
+R: 1 4 : 42 : * : * : -10.1
+R: 1 5 : 42 : * : * : 1.9
+R: 2 0 : 42 : * : * : -0.2
+R: 2 1 : 42 : * : * : -0.2
+R: 2 2 : 42 : * : * : -0.2
+R: 2 3 : 42 : * : * : -0.2
+R: 2 4 : 42 : * : * : -10.1
+R: 2 5 : 42 : * : * : 1.9
+R: 3 0 : 42 : * : * : -0.2
+R: 3 1 : 42 : * : * : -0.2
+R: 3 2 : 42 : * : * : -0.2
+R: 3 3 : 42 : * : * : -0.2
+R: 3 4 : 42 : * : * : -10.1
+R: 3 5 : 42 : * : * : 1.9
+R: 4 0 : 42 : * : * : -10.1
+R: 4 1 : 42 : * : * : -10.1
+R: 4 2 : 42 : * : * : -10.1
+R: 4 3 : 42 : * : * : -10.1
+R: 4 4 : 42 : * : * : 0
+R: 4 5 : 42 : * : * : 0
+R: 5 0 : 42 : * : * : 1.9
+R: 5 1 : 42 : * : * : 1.9
+R: 5 2 : 42 : * : * : 1.9
+R: 5 3 : 42 : * : * : 1.9
+R: 5 4 : 42 : * : * : 4
+R: 5 5 : 42 : * : * : 4
+R: 0 0 : 43 : * : * : -0.2
+R: 0 1 : 43 : * : * : -0.2
+R: 0 2 : 43 : * : * : -0.2
+R: 0 3 : 43 : * : * : -0.2
+R: 0 4 : 43 : * : * : -10.1
+R: 0 5 : 43 : * : * : 1.9
+R: 1 0 : 43 : * : * : -0.2
+R: 1 1 : 43 : * : * : -0.2
+R: 1 2 : 43 : * : * : -0.2
+R: 1 3 : 43 : * : * : -0.2
+R: 1 4 : 43 : * : * : -10.1
+R: 1 5 : 43 : * : * : 1.9
+R: 2 0 : 43 : * : * : -0.2
+R: 2 1 : 43 : * : * : -0.2
+R: 2 2 : 43 : * : * : -0.2
+R: 2 3 : 43 : * : * : -0.2
+R: 2 4 : 43 : * : * : -10.1
+R: 2 5 : 43 : * : * : 1.9
+R: 3 0 : 43 : * : * : -0.2
+R: 3 1 : 43 : * : * : -0.2
+R: 3 2 : 43 : * : * : -0.2
+R: 3 3 : 43 : * : * : -0.2
+R: 3 4 : 43 : * : * : -10.1
+R: 3 5 : 43 : * : * : 1.9
+R: 4 0 : 43 : * : * : -1.1
+R: 4 1 : 43 : * : * : -1.1
+R: 4 2 : 43 : * : * : -1.1
+R: 4 3 : 43 : * : * : -1.1
+R: 4 4 : 43 : * : * : -11
+R: 4 5 : 43 : * : * : -11
+R: 5 0 : 43 : * : * : -1.1
+R: 5 1 : 43 : * : * : -1.1
+R: 5 2 : 43 : * : * : -1.1
+R: 5 3 : 43 : * : * : -1.1
+R: 5 4 : 43 : * : * : 1
+R: 5 5 : 43 : * : * : 1
+R: 0 0 : 44 : * : * : -0.2
+R: 0 1 : 44 : * : * : -0.2
+R: 0 2 : 44 : * : * : -0.2
+R: 0 3 : 44 : * : * : -0.2
+R: 0 4 : 44 : * : * : -1.1
+R: 0 5 : 44 : * : * : -1.1
+R: 1 0 : 44 : * : * : -0.2
+R: 1 1 : 44 : * : * : -0.2
+R: 1 2 : 44 : * : * : -0.2
+R: 1 3 : 44 : * : * : -0.2
+R: 1 4 : 44 : * : * : -1.1
+R: 1 5 : 44 : * : * : -1.1
+R: 2 0 : 44 : * : * : -0.2
+R: 2 1 : 44 : * : * : -0.2
+R: 2 2 : 44 : * : * : -0.2
+R: 2 3 : 44 : * : * : -0.2
+R: 2 4 : 44 : * : * : -1.1
+R: 2 5 : 44 : * : * : -1.1
+R: 3 0 : 44 : * : * : -0.2
+R: 3 1 : 44 : * : * : -0.2
+R: 3 2 : 44 : * : * : -0.2
+R: 3 3 : 44 : * : * : -0.2
+R: 3 4 : 44 : * : * : -1.1
+R: 3 5 : 44 : * : * : -1.1
+R: 4 0 : 44 : * : * : -10.1
+R: 4 1 : 44 : * : * : -10.1
+R: 4 2 : 44 : * : * : -10.1
+R: 4 3 : 44 : * : * : -10.1
+R: 4 4 : 44 : * : * : -11
+R: 4 5 : 44 : * : * : -11
+R: 5 0 : 44 : * : * : 1.9
+R: 5 1 : 44 : * : * : 1.9
+R: 5 2 : 44 : * : * : 1.9
+R: 5 3 : 44 : * : * : 1.9
+R: 5 4 : 44 : * : * : 1
+R: 5 5 : 44 : * : * : 1
+R: 0 0 : 45 : * : * : -0.2
+R: 0 1 : 45 : * : * : -0.2
+R: 0 2 : 45 : * : * : -0.2
+R: 0 3 : 45 : * : * : -0.2
+R: 0 4 : 45 : * : * : -1.1
+R: 0 5 : 45 : * : * : -1.1
+R: 1 0 : 45 : * : * : -0.2
+R: 1 1 : 45 : * : * : -0.2
+R: 1 2 : 45 : * : * : -0.2
+R: 1 3 : 45 : * : * : -0.2
+R: 1 4 : 45 : * : * : -1.1
+R: 1 5 : 45 : * : * : -1.1
+R: 2 0 : 45 : * : * : -0.2
+R: 2 1 : 45 : * : * : -0.2
+R: 2 2 : 45 : * : * : -0.2
+R: 2 3 : 45 : * : * : -0.2
+R: 2 4 : 45 : * : * : -1.1
+R: 2 5 : 45 : * : * : -1.1
+R: 3 0 : 45 : * : * : -0.2
+R: 3 1 : 45 : * : * : -0.2
+R: 3 2 : 45 : * : * : -0.2
+R: 3 3 : 45 : * : * : -0.2
+R: 3 4 : 45 : * : * : -1.1
+R: 3 5 : 45 : * : * : -1.1
+R: 4 0 : 45 : * : * : -1.1
+R: 4 1 : 45 : * : * : -1.1
+R: 4 2 : 45 : * : * : -1.1
+R: 4 3 : 45 : * : * : -1.1
+R: 4 4 : 45 : * : * : -2
+R: 4 5 : 45 : * : * : -2
+R: 5 0 : 45 : * : * : -1.1
+R: 5 1 : 45 : * : * : -1.1
+R: 5 2 : 45 : * : * : -1.1
+R: 5 3 : 45 : * : * : -1.1
+R: 5 4 : 45 : * : * : -2
+R: 5 5 : 45 : * : * : -2
+R: 0 0 : 46 : * : * : -0.2
+R: 0 1 : 46 : * : * : -0.2
+R: 0 2 : 46 : * : * : -0.2
+R: 0 3 : 46 : * : * : -0.2
+R: 0 4 : 46 : * : * : -1.1
+R: 0 5 : 46 : * : * : -1.1
+R: 1 0 : 46 : * : * : -0.2
+R: 1 1 : 46 : * : * : -0.2
+R: 1 2 : 46 : * : * : -0.2
+R: 1 3 : 46 : * : * : -0.2
+R: 1 4 : 46 : * : * : -1.1
+R: 1 5 : 46 : * : * : -1.1
+R: 2 0 : 46 : * : * : -0.2
+R: 2 1 : 46 : * : * : -0.2
+R: 2 2 : 46 : * : * : -0.2
+R: 2 3 : 46 : * : * : -0.2
+R: 2 4 : 46 : * : * : -1.1
+R: 2 5 : 46 : * : * : -1.1
+R: 3 0 : 46 : * : * : -0.2
+R: 3 1 : 46 : * : * : -0.2
+R: 3 2 : 46 : * : * : -0.2
+R: 3 3 : 46 : * : * : -0.2
+R: 3 4 : 46 : * : * : -1.1
+R: 3 5 : 46 : * : * : -1.1
+R: 4 0 : 46 : * : * : -10.1
+R: 4 1 : 46 : * : * : -10.1
+R: 4 2 : 46 : * : * : -10.1
+R: 4 3 : 46 : * : * : -10.1
+R: 4 4 : 46 : * : * : -11
+R: 4 5 : 46 : * : * : -11
+R: 5 0 : 46 : * : * : 1.9
+R: 5 1 : 46 : * : * : 1.9
+R: 5 2 : 46 : * : * : 1.9
+R: 5 3 : 46 : * : * : 1.9
+R: 5 4 : 46 : * : * : 1
+R: 5 5 : 46 : * : * : 1
+R: 0 0 : 47 : * : * : -0.2
+R: 0 1 : 47 : * : * : -0.2
+R: 0 2 : 47 : * : * : -0.2
+R: 0 3 : 47 : * : * : -0.2
+R: 0 4 : 47 : * : * : -1.1
+R: 0 5 : 47 : * : * : -1.1
+R: 1 0 : 47 : * : * : -0.2
+R: 1 1 : 47 : * : * : -0.2
+R: 1 2 : 47 : * : * : -0.2
+R: 1 3 : 47 : * : * : -0.2
+R: 1 4 : 47 : * : * : -1.1
+R: 1 5 : 47 : * : * : -1.1
+R: 2 0 : 47 : * : * : -0.2
+R: 2 1 : 47 : * : * : -0.2
+R: 2 2 : 47 : * : * : -0.2
+R: 2 3 : 47 : * : * : -0.2
+R: 2 4 : 47 : * : * : -1.1
+R: 2 5 : 47 : * : * : -1.1
+R: 3 0 : 47 : * : * : -0.2
+R: 3 1 : 47 : * : * : -0.2
+R: 3 2 : 47 : * : * : -0.2
+R: 3 3 : 47 : * : * : -0.2
+R: 3 4 : 47 : * : * : -1.1
+R: 3 5 : 47 : * : * : -1.1
+R: 4 0 : 47 : * : * : -1.1
+R: 4 1 : 47 : * : * : -1.1
+R: 4 2 : 47 : * : * : -1.1
+R: 4 3 : 47 : * : * : -1.1
+R: 4 4 : 47 : * : * : -2
+R: 4 5 : 47 : * : * : -2
+R: 5 0 : 47 : * : * : -1.1
+R: 5 1 : 47 : * : * : -1.1
+R: 5 2 : 47 : * : * : -1.1
+R: 5 3 : 47 : * : * : -1.1
+R: 5 4 : 47 : * : * : -2
+R: 5 5 : 47 : * : * : -2
+R: 0 0 : 48 : * : * : -0.2
+R: 0 1 : 48 : * : * : -0.2
+R: 0 2 : 48 : * : * : -0.2
+R: 0 3 : 48 : * : * : -0.2
+R: 0 4 : 48 : * : * : -10.1
+R: 0 5 : 48 : * : * : 1.9
+R: 1 0 : 48 : * : * : -0.2
+R: 1 1 : 48 : * : * : -0.2
+R: 1 2 : 48 : * : * : -0.2
+R: 1 3 : 48 : * : * : -0.2
+R: 1 4 : 48 : * : * : -10.1
+R: 1 5 : 48 : * : * : 1.9
+R: 2 0 : 48 : * : * : -0.2
+R: 2 1 : 48 : * : * : -0.2
+R: 2 2 : 48 : * : * : -0.2
+R: 2 3 : 48 : * : * : -0.2
+R: 2 4 : 48 : * : * : -10.1
+R: 2 5 : 48 : * : * : 1.9
+R: 3 0 : 48 : * : * : -0.2
+R: 3 1 : 48 : * : * : -0.2
+R: 3 2 : 48 : * : * : -0.2
+R: 3 3 : 48 : * : * : -0.2
+R: 3 4 : 48 : * : * : -10.1
+R: 3 5 : 48 : * : * : 1.9
+R: 4 0 : 48 : * : * : -10.1
+R: 4 1 : 48 : * : * : -10.1
+R: 4 2 : 48 : * : * : -10.1
+R: 4 3 : 48 : * : * : -10.1
+R: 4 4 : 48 : * : * : 0
+R: 4 5 : 48 : * : * : 0
+R: 5 0 : 48 : * : * : 1.9
+R: 5 1 : 48 : * : * : 1.9
+R: 5 2 : 48 : * : * : 1.9
+R: 5 3 : 48 : * : * : 1.9
+R: 5 4 : 48 : * : * : 4
+R: 5 5 : 48 : * : * : 4
+R: 0 0 : 49 : * : * : -0.2
+R: 0 1 : 49 : * : * : -0.2
+R: 0 2 : 49 : * : * : -0.2
+R: 0 3 : 49 : * : * : -0.2
+R: 0 4 : 49 : * : * : -10.1
+R: 0 5 : 49 : * : * : 1.9
+R: 1 0 : 49 : * : * : -0.2
+R: 1 1 : 49 : * : * : -0.2
+R: 1 2 : 49 : * : * : -0.2
+R: 1 3 : 49 : * : * : -0.2
+R: 1 4 : 49 : * : * : -10.1
+R: 1 5 : 49 : * : * : 1.9
+R: 2 0 : 49 : * : * : -0.2
+R: 2 1 : 49 : * : * : -0.2
+R: 2 2 : 49 : * : * : -0.2
+R: 2 3 : 49 : * : * : -0.2
+R: 2 4 : 49 : * : * : -10.1
+R: 2 5 : 49 : * : * : 1.9
+R: 3 0 : 49 : * : * : -0.2
+R: 3 1 : 49 : * : * : -0.2
+R: 3 2 : 49 : * : * : -0.2
+R: 3 3 : 49 : * : * : -0.2
+R: 3 4 : 49 : * : * : -10.1
+R: 3 5 : 49 : * : * : 1.9
+R: 4 0 : 49 : * : * : -1.1
+R: 4 1 : 49 : * : * : -1.1
+R: 4 2 : 49 : * : * : -1.1
+R: 4 3 : 49 : * : * : -1.1
+R: 4 4 : 49 : * : * : -11
+R: 4 5 : 49 : * : * : -11
+R: 5 0 : 49 : * : * : -1.1
+R: 5 1 : 49 : * : * : -1.1
+R: 5 2 : 49 : * : * : -1.1
+R: 5 3 : 49 : * : * : -1.1
+R: 5 4 : 49 : * : * : 1
+R: 5 5 : 49 : * : * : 1
+R: 0 0 : 50 : * : * : -0.2
+R: 0 1 : 50 : * : * : -0.2
+R: 0 2 : 50 : * : * : -0.2
+R: 0 3 : 50 : * : * : -0.2
+R: 0 4 : 50 : * : * : -10.1
+R: 0 5 : 50 : * : * : 1.9
+R: 1 0 : 50 : * : * : -0.2
+R: 1 1 : 50 : * : * : -0.2
+R: 1 2 : 50 : * : * : -0.2
+R: 1 3 : 50 : * : * : -0.2
+R: 1 4 : 50 : * : * : -10.1
+R: 1 5 : 50 : * : * : 1.9
+R: 2 0 : 50 : * : * : -0.2
+R: 2 1 : 50 : * : * : -0.2
+R: 2 2 : 50 : * : * : -0.2
+R: 2 3 : 50 : * : * : -0.2
+R: 2 4 : 50 : * : * : -10.1
+R: 2 5 : 50 : * : * : 1.9
+R: 3 0 : 50 : * : * : -0.2
+R: 3 1 : 50 : * : * : -0.2
+R: 3 2 : 50 : * : * : -0.2
+R: 3 3 : 50 : * : * : -0.2
+R: 3 4 : 50 : * : * : -10.1
+R: 3 5 : 50 : * : * : 1.9
+R: 4 0 : 50 : * : * : -10.1
+R: 4 1 : 50 : * : * : -10.1
+R: 4 2 : 50 : * : * : -10.1
+R: 4 3 : 50 : * : * : -10.1
+R: 4 4 : 50 : * : * : 0
+R: 4 5 : 50 : * : * : 0
+R: 5 0 : 50 : * : * : 1.9
+R: 5 1 : 50 : * : * : 1.9
+R: 5 2 : 50 : * : * : 1.9
+R: 5 3 : 50 : * : * : 1.9
+R: 5 4 : 50 : * : * : 4
+R: 5 5 : 50 : * : * : 4
+R: 0 0 : 51 : * : * : -0.2
+R: 0 1 : 51 : * : * : -0.2
+R: 0 2 : 51 : * : * : -0.2
+R: 0 3 : 51 : * : * : -0.2
+R: 0 4 : 51 : * : * : -10.1
+R: 0 5 : 51 : * : * : 1.9
+R: 1 0 : 51 : * : * : -0.2
+R: 1 1 : 51 : * : * : -0.2
+R: 1 2 : 51 : * : * : -0.2
+R: 1 3 : 51 : * : * : -0.2
+R: 1 4 : 51 : * : * : -10.1
+R: 1 5 : 51 : * : * : 1.9
+R: 2 0 : 51 : * : * : -0.2
+R: 2 1 : 51 : * : * : -0.2
+R: 2 2 : 51 : * : * : -0.2
+R: 2 3 : 51 : * : * : -0.2
+R: 2 4 : 51 : * : * : -10.1
+R: 2 5 : 51 : * : * : 1.9
+R: 3 0 : 51 : * : * : -0.2
+R: 3 1 : 51 : * : * : -0.2
+R: 3 2 : 51 : * : * : -0.2
+R: 3 3 : 51 : * : * : -0.2
+R: 3 4 : 51 : * : * : -10.1
+R: 3 5 : 51 : * : * : 1.9
+R: 4 0 : 51 : * : * : -1.1
+R: 4 1 : 51 : * : * : -1.1
+R: 4 2 : 51 : * : * : -1.1
+R: 4 3 : 51 : * : * : -1.1
+R: 4 4 : 51 : * : * : -11
+R: 4 5 : 51 : * : * : -11
+R: 5 0 : 51 : * : * : -1.1
+R: 5 1 : 51 : * : * : -1.1
+R: 5 2 : 51 : * : * : -1.1
+R: 5 3 : 51 : * : * : -1.1
+R: 5 4 : 51 : * : * : 1
+R: 5 5 : 51 : * : * : 1
+R: 0 0 : 52 : * : * : -0.2
+R: 0 1 : 52 : * : * : -0.2
+R: 0 2 : 52 : * : * : -0.2
+R: 0 3 : 52 : * : * : -0.2
+R: 0 4 : 52 : * : * : -10.1
+R: 0 5 : 52 : * : * : 1.9
+R: 1 0 : 52 : * : * : -0.2
+R: 1 1 : 52 : * : * : -0.2
+R: 1 2 : 52 : * : * : -0.2
+R: 1 3 : 52 : * : * : -0.2
+R: 1 4 : 52 : * : * : -10.1
+R: 1 5 : 52 : * : * : 1.9
+R: 2 0 : 52 : * : * : -0.2
+R: 2 1 : 52 : * : * : -0.2
+R: 2 2 : 52 : * : * : -0.2
+R: 2 3 : 52 : * : * : -0.2
+R: 2 4 : 52 : * : * : -10.1
+R: 2 5 : 52 : * : * : 1.9
+R: 3 0 : 52 : * : * : -0.2
+R: 3 1 : 52 : * : * : -0.2
+R: 3 2 : 52 : * : * : -0.2
+R: 3 3 : 52 : * : * : -0.2
+R: 3 4 : 52 : * : * : -10.1
+R: 3 5 : 52 : * : * : 1.9
+R: 4 0 : 52 : * : * : -10.1
+R: 4 1 : 52 : * : * : -10.1
+R: 4 2 : 52 : * : * : -10.1
+R: 4 3 : 52 : * : * : -10.1
+R: 4 4 : 52 : * : * : 0
+R: 4 5 : 52 : * : * : 0
+R: 5 0 : 52 : * : * : 1.9
+R: 5 1 : 52 : * : * : 1.9
+R: 5 2 : 52 : * : * : 1.9
+R: 5 3 : 52 : * : * : 1.9
+R: 5 4 : 52 : * : * : 4
+R: 5 5 : 52 : * : * : 4
+R: 0 0 : 53 : * : * : -0.2
+R: 0 1 : 53 : * : * : -0.2
+R: 0 2 : 53 : * : * : -0.2
+R: 0 3 : 53 : * : * : -0.2
+R: 0 4 : 53 : * : * : -10.1
+R: 0 5 : 53 : * : * : 1.9
+R: 1 0 : 53 : * : * : -0.2
+R: 1 1 : 53 : * : * : -0.2
+R: 1 2 : 53 : * : * : -0.2
+R: 1 3 : 53 : * : * : -0.2
+R: 1 4 : 53 : * : * : -10.1
+R: 1 5 : 53 : * : * : 1.9
+R: 2 0 : 53 : * : * : -0.2
+R: 2 1 : 53 : * : * : -0.2
+R: 2 2 : 53 : * : * : -0.2
+R: 2 3 : 53 : * : * : -0.2
+R: 2 4 : 53 : * : * : -10.1
+R: 2 5 : 53 : * : * : 1.9
+R: 3 0 : 53 : * : * : -0.2
+R: 3 1 : 53 : * : * : -0.2
+R: 3 2 : 53 : * : * : -0.2
+R: 3 3 : 53 : * : * : -0.2
+R: 3 4 : 53 : * : * : -10.1
+R: 3 5 : 53 : * : * : 1.9
+R: 4 0 : 53 : * : * : -1.1
+R: 4 1 : 53 : * : * : -1.1
+R: 4 2 : 53 : * : * : -1.1
+R: 4 3 : 53 : * : * : -1.1
+R: 4 4 : 53 : * : * : -11
+R: 4 5 : 53 : * : * : -11
+R: 5 0 : 53 : * : * : -1.1
+R: 5 1 : 53 : * : * : -1.1
+R: 5 2 : 53 : * : * : -1.1
+R: 5 3 : 53 : * : * : -1.1
+R: 5 4 : 53 : * : * : 1
+R: 5 5 : 53 : * : * : 1
+R: 0 0 : 54 : * : * : -0.2
+R: 0 1 : 54 : * : * : -0.2
+R: 0 2 : 54 : * : * : -0.2
+R: 0 3 : 54 : * : * : -0.2
+R: 0 4 : 54 : * : * : -10.1
+R: 0 5 : 54 : * : * : 1.9
+R: 1 0 : 54 : * : * : -0.2
+R: 1 1 : 54 : * : * : -0.2
+R: 1 2 : 54 : * : * : -0.2
+R: 1 3 : 54 : * : * : -0.2
+R: 1 4 : 54 : * : * : -10.1
+R: 1 5 : 54 : * : * : 1.9
+R: 2 0 : 54 : * : * : -0.2
+R: 2 1 : 54 : * : * : -0.2
+R: 2 2 : 54 : * : * : -0.2
+R: 2 3 : 54 : * : * : -0.2
+R: 2 4 : 54 : * : * : -10.1
+R: 2 5 : 54 : * : * : 1.9
+R: 3 0 : 54 : * : * : -0.2
+R: 3 1 : 54 : * : * : -0.2
+R: 3 2 : 54 : * : * : -0.2
+R: 3 3 : 54 : * : * : -0.2
+R: 3 4 : 54 : * : * : -10.1
+R: 3 5 : 54 : * : * : 1.9
+R: 4 0 : 54 : * : * : -10.1
+R: 4 1 : 54 : * : * : -10.1
+R: 4 2 : 54 : * : * : -10.1
+R: 4 3 : 54 : * : * : -10.1
+R: 4 4 : 54 : * : * : 0
+R: 4 5 : 54 : * : * : 0
+R: 5 0 : 54 : * : * : 1.9
+R: 5 1 : 54 : * : * : 1.9
+R: 5 2 : 54 : * : * : 1.9
+R: 5 3 : 54 : * : * : 1.9
+R: 5 4 : 54 : * : * : 4
+R: 5 5 : 54 : * : * : 4
+R: 0 0 : 55 : * : * : -0.2
+R: 0 1 : 55 : * : * : -0.2
+R: 0 2 : 55 : * : * : -0.2
+R: 0 3 : 55 : * : * : -0.2
+R: 0 4 : 55 : * : * : -10.1
+R: 0 5 : 55 : * : * : 1.9
+R: 1 0 : 55 : * : * : -0.2
+R: 1 1 : 55 : * : * : -0.2
+R: 1 2 : 55 : * : * : -0.2
+R: 1 3 : 55 : * : * : -0.2
+R: 1 4 : 55 : * : * : -10.1
+R: 1 5 : 55 : * : * : 1.9
+R: 2 0 : 55 : * : * : -0.2
+R: 2 1 : 55 : * : * : -0.2
+R: 2 2 : 55 : * : * : -0.2
+R: 2 3 : 55 : * : * : -0.2
+R: 2 4 : 55 : * : * : -10.1
+R: 2 5 : 55 : * : * : 1.9
+R: 3 0 : 55 : * : * : -0.2
+R: 3 1 : 55 : * : * : -0.2
+R: 3 2 : 55 : * : * : -0.2
+R: 3 3 : 55 : * : * : -0.2
+R: 3 4 : 55 : * : * : -10.1
+R: 3 5 : 55 : * : * : 1.9
+R: 4 0 : 55 : * : * : -1.1
+R: 4 1 : 55 : * : * : -1.1
+R: 4 2 : 55 : * : * : -1.1
+R: 4 3 : 55 : * : * : -1.1
+R: 4 4 : 55 : * : * : -11
+R: 4 5 : 55 : * : * : -11
+R: 5 0 : 55 : * : * : -1.1
+R: 5 1 : 55 : * : * : -1.1
+R: 5 2 : 55 : * : * : -1.1
+R: 5 3 : 55 : * : * : -1.1
+R: 5 4 : 55 : * : * : 1
+R: 5 5 : 55 : * : * : 1
+R: 0 0 : 56 : * : * : -0.2
+R: 0 1 : 56 : * : * : -0.2
+R: 0 2 : 56 : * : * : -0.2
+R: 0 3 : 56 : * : * : -0.2
+R: 0 4 : 56 : * : * : -1.1
+R: 0 5 : 56 : * : * : -1.1
+R: 1 0 : 56 : * : * : -0.2
+R: 1 1 : 56 : * : * : -0.2
+R: 1 2 : 56 : * : * : -0.2
+R: 1 3 : 56 : * : * : -0.2
+R: 1 4 : 56 : * : * : -1.1
+R: 1 5 : 56 : * : * : -1.1
+R: 2 0 : 56 : * : * : -0.2
+R: 2 1 : 56 : * : * : -0.2
+R: 2 2 : 56 : * : * : -0.2
+R: 2 3 : 56 : * : * : -0.2
+R: 2 4 : 56 : * : * : -1.1
+R: 2 5 : 56 : * : * : -1.1
+R: 3 0 : 56 : * : * : -0.2
+R: 3 1 : 56 : * : * : -0.2
+R: 3 2 : 56 : * : * : -0.2
+R: 3 3 : 56 : * : * : -0.2
+R: 3 4 : 56 : * : * : -1.1
+R: 3 5 : 56 : * : * : -1.1
+R: 4 0 : 56 : * : * : -10.1
+R: 4 1 : 56 : * : * : -10.1
+R: 4 2 : 56 : * : * : -10.1
+R: 4 3 : 56 : * : * : -10.1
+R: 4 4 : 56 : * : * : -11
+R: 4 5 : 56 : * : * : -11
+R: 5 0 : 56 : * : * : 1.9
+R: 5 1 : 56 : * : * : 1.9
+R: 5 2 : 56 : * : * : 1.9
+R: 5 3 : 56 : * : * : 1.9
+R: 5 4 : 56 : * : * : 1
+R: 5 5 : 56 : * : * : 1
+R: 0 0 : 57 : * : * : -0.2
+R: 0 1 : 57 : * : * : -0.2
+R: 0 2 : 57 : * : * : -0.2
+R: 0 3 : 57 : * : * : -0.2
+R: 0 4 : 57 : * : * : -1.1
+R: 0 5 : 57 : * : * : -1.1
+R: 1 0 : 57 : * : * : -0.2
+R: 1 1 : 57 : * : * : -0.2
+R: 1 2 : 57 : * : * : -0.2
+R: 1 3 : 57 : * : * : -0.2
+R: 1 4 : 57 : * : * : -1.1
+R: 1 5 : 57 : * : * : -1.1
+R: 2 0 : 57 : * : * : -0.2
+R: 2 1 : 57 : * : * : -0.2
+R: 2 2 : 57 : * : * : -0.2
+R: 2 3 : 57 : * : * : -0.2
+R: 2 4 : 57 : * : * : -1.1
+R: 2 5 : 57 : * : * : -1.1
+R: 3 0 : 57 : * : * : -0.2
+R: 3 1 : 57 : * : * : -0.2
+R: 3 2 : 57 : * : * : -0.2
+R: 3 3 : 57 : * : * : -0.2
+R: 3 4 : 57 : * : * : -1.1
+R: 3 5 : 57 : * : * : -1.1
+R: 4 0 : 57 : * : * : -1.1
+R: 4 1 : 57 : * : * : -1.1
+R: 4 2 : 57 : * : * : -1.1
+R: 4 3 : 57 : * : * : -1.1
+R: 4 4 : 57 : * : * : -2
+R: 4 5 : 57 : * : * : -2
+R: 5 0 : 57 : * : * : -1.1
+R: 5 1 : 57 : * : * : -1.1
+R: 5 2 : 57 : * : * : -1.1
+R: 5 3 : 57 : * : * : -1.1
+R: 5 4 : 57 : * : * : -2
+R: 5 5 : 57 : * : * : -2
+R: 0 0 : 58 : * : * : -0.2
+R: 0 1 : 58 : * : * : -0.2
+R: 0 2 : 58 : * : * : -0.2
+R: 0 3 : 58 : * : * : -0.2
+R: 0 4 : 58 : * : * : -1.1
+R: 0 5 : 58 : * : * : -1.1
+R: 1 0 : 58 : * : * : -0.2
+R: 1 1 : 58 : * : * : -0.2
+R: 1 2 : 58 : * : * : -0.2
+R: 1 3 : 58 : * : * : -0.2
+R: 1 4 : 58 : * : * : -1.1
+R: 1 5 : 58 : * : * : -1.1
+R: 2 0 : 58 : * : * : -0.2
+R: 2 1 : 58 : * : * : -0.2
+R: 2 2 : 58 : * : * : -0.2
+R: 2 3 : 58 : * : * : -0.2
+R: 2 4 : 58 : * : * : -1.1
+R: 2 5 : 58 : * : * : -1.1
+R: 3 0 : 58 : * : * : -0.2
+R: 3 1 : 58 : * : * : -0.2
+R: 3 2 : 58 : * : * : -0.2
+R: 3 3 : 58 : * : * : -0.2
+R: 3 4 : 58 : * : * : -1.1
+R: 3 5 : 58 : * : * : -1.1
+R: 4 0 : 58 : * : * : -10.1
+R: 4 1 : 58 : * : * : -10.1
+R: 4 2 : 58 : * : * : -10.1
+R: 4 3 : 58 : * : * : -10.1
+R: 4 4 : 58 : * : * : -11
+R: 4 5 : 58 : * : * : -11
+R: 5 0 : 58 : * : * : 1.9
+R: 5 1 : 58 : * : * : 1.9
+R: 5 2 : 58 : * : * : 1.9
+R: 5 3 : 58 : * : * : 1.9
+R: 5 4 : 58 : * : * : 1
+R: 5 5 : 58 : * : * : 1
+R: 0 0 : 59 : * : * : -0.2
+R: 0 1 : 59 : * : * : -0.2
+R: 0 2 : 59 : * : * : -0.2
+R: 0 3 : 59 : * : * : -0.2
+R: 0 4 : 59 : * : * : -1.1
+R: 0 5 : 59 : * : * : -1.1
+R: 1 0 : 59 : * : * : -0.2
+R: 1 1 : 59 : * : * : -0.2
+R: 1 2 : 59 : * : * : -0.2
+R: 1 3 : 59 : * : * : -0.2
+R: 1 4 : 59 : * : * : -1.1
+R: 1 5 : 59 : * : * : -1.1
+R: 2 0 : 59 : * : * : -0.2
+R: 2 1 : 59 : * : * : -0.2
+R: 2 2 : 59 : * : * : -0.2
+R: 2 3 : 59 : * : * : -0.2
+R: 2 4 : 59 : * : * : -1.1
+R: 2 5 : 59 : * : * : -1.1
+R: 3 0 : 59 : * : * : -0.2
+R: 3 1 : 59 : * : * : -0.2
+R: 3 2 : 59 : * : * : -0.2
+R: 3 3 : 59 : * : * : -0.2
+R: 3 4 : 59 : * : * : -1.1
+R: 3 5 : 59 : * : * : -1.1
+R: 4 0 : 59 : * : * : -1.1
+R: 4 1 : 59 : * : * : -1.1
+R: 4 2 : 59 : * : * : -1.1
+R: 4 3 : 59 : * : * : -1.1
+R: 4 4 : 59 : * : * : -2
+R: 4 5 : 59 : * : * : -2
+R: 5 0 : 59 : * : * : -1.1
+R: 5 1 : 59 : * : * : -1.1
+R: 5 2 : 59 : * : * : -1.1
+R: 5 3 : 59 : * : * : -1.1
+R: 5 4 : 59 : * : * : -2
+R: 5 5 : 59 : * : * : -2
+R: 0 0 : 60 : * : * : -0.2
+R: 0 1 : 60 : * : * : -0.2
+R: 0 2 : 60 : * : * : -0.2
+R: 0 3 : 60 : * : * : -0.2
+R: 0 4 : 60 : * : * : -1.1
+R: 0 5 : 60 : * : * : -1.1
+R: 1 0 : 60 : * : * : -0.2
+R: 1 1 : 60 : * : * : -0.2
+R: 1 2 : 60 : * : * : -0.2
+R: 1 3 : 60 : * : * : -0.2
+R: 1 4 : 60 : * : * : -1.1
+R: 1 5 : 60 : * : * : -1.1
+R: 2 0 : 60 : * : * : -0.2
+R: 2 1 : 60 : * : * : -0.2
+R: 2 2 : 60 : * : * : -0.2
+R: 2 3 : 60 : * : * : -0.2
+R: 2 4 : 60 : * : * : -1.1
+R: 2 5 : 60 : * : * : -1.1
+R: 3 0 : 60 : * : * : -0.2
+R: 3 1 : 60 : * : * : -0.2
+R: 3 2 : 60 : * : * : -0.2
+R: 3 3 : 60 : * : * : -0.2
+R: 3 4 : 60 : * : * : -1.1
+R: 3 5 : 60 : * : * : -1.1
+R: 4 0 : 60 : * : * : -10.1
+R: 4 1 : 60 : * : * : -10.1
+R: 4 2 : 60 : * : * : -10.1
+R: 4 3 : 60 : * : * : -10.1
+R: 4 4 : 60 : * : * : -11
+R: 4 5 : 60 : * : * : -11
+R: 5 0 : 60 : * : * : 1.9
+R: 5 1 : 60 : * : * : 1.9
+R: 5 2 : 60 : * : * : 1.9
+R: 5 3 : 60 : * : * : 1.9
+R: 5 4 : 60 : * : * : 1
+R: 5 5 : 60 : * : * : 1
+R: 0 0 : 61 : * : * : -0.2
+R: 0 1 : 61 : * : * : -0.2
+R: 0 2 : 61 : * : * : -0.2
+R: 0 3 : 61 : * : * : -0.2
+R: 0 4 : 61 : * : * : -1.1
+R: 0 5 : 61 : * : * : -1.1
+R: 1 0 : 61 : * : * : -0.2
+R: 1 1 : 61 : * : * : -0.2
+R: 1 2 : 61 : * : * : -0.2
+R: 1 3 : 61 : * : * : -0.2
+R: 1 4 : 61 : * : * : -1.1
+R: 1 5 : 61 : * : * : -1.1
+R: 2 0 : 61 : * : * : -0.2
+R: 2 1 : 61 : * : * : -0.2
+R: 2 2 : 61 : * : * : -0.2
+R: 2 3 : 61 : * : * : -0.2
+R: 2 4 : 61 : * : * : -1.1
+R: 2 5 : 61 : * : * : -1.1
+R: 3 0 : 61 : * : * : -0.2
+R: 3 1 : 61 : * : * : -0.2
+R: 3 2 : 61 : * : * : -0.2
+R: 3 3 : 61 : * : * : -0.2
+R: 3 4 : 61 : * : * : -1.1
+R: 3 5 : 61 : * : * : -1.1
+R: 4 0 : 61 : * : * : -1.1
+R: 4 1 : 61 : * : * : -1.1
+R: 4 2 : 61 : * : * : -1.1
+R: 4 3 : 61 : * : * : -1.1
+R: 4 4 : 61 : * : * : -2
+R: 4 5 : 61 : * : * : -2
+R: 5 0 : 61 : * : * : -1.1
+R: 5 1 : 61 : * : * : -1.1
+R: 5 2 : 61 : * : * : -1.1
+R: 5 3 : 61 : * : * : -1.1
+R: 5 4 : 61 : * : * : -2
+R: 5 5 : 61 : * : * : -2
+R: 0 0 : 62 : * : * : -0.2
+R: 0 1 : 62 : * : * : -0.2
+R: 0 2 : 62 : * : * : -0.2
+R: 0 3 : 62 : * : * : -0.2
+R: 0 4 : 62 : * : * : -1.1
+R: 0 5 : 62 : * : * : -1.1
+R: 1 0 : 62 : * : * : -0.2
+R: 1 1 : 62 : * : * : -0.2
+R: 1 2 : 62 : * : * : -0.2
+R: 1 3 : 62 : * : * : -0.2
+R: 1 4 : 62 : * : * : -1.1
+R: 1 5 : 62 : * : * : -1.1
+R: 2 0 : 62 : * : * : -0.2
+R: 2 1 : 62 : * : * : -0.2
+R: 2 2 : 62 : * : * : -0.2
+R: 2 3 : 62 : * : * : -0.2
+R: 2 4 : 62 : * : * : -1.1
+R: 2 5 : 62 : * : * : -1.1
+R: 3 0 : 62 : * : * : -0.2
+R: 3 1 : 62 : * : * : -0.2
+R: 3 2 : 62 : * : * : -0.2
+R: 3 3 : 62 : * : * : -0.2
+R: 3 4 : 62 : * : * : -1.1
+R: 3 5 : 62 : * : * : -1.1
+R: 4 0 : 62 : * : * : -10.1
+R: 4 1 : 62 : * : * : -10.1
+R: 4 2 : 62 : * : * : -10.1
+R: 4 3 : 62 : * : * : -10.1
+R: 4 4 : 62 : * : * : -11
+R: 4 5 : 62 : * : * : -11
+R: 5 0 : 62 : * : * : 1.9
+R: 5 1 : 62 : * : * : 1.9
+R: 5 2 : 62 : * : * : 1.9
+R: 5 3 : 62 : * : * : 1.9
+R: 5 4 : 62 : * : * : 1
+R: 5 5 : 62 : * : * : 1
+R: 0 0 : 63 : * : * : -0.2
+R: 0 1 : 63 : * : * : -0.2
+R: 0 2 : 63 : * : * : -0.2
+R: 0 3 : 63 : * : * : -0.2
+R: 0 4 : 63 : * : * : -1.1
+R: 0 5 : 63 : * : * : -1.1
+R: 1 0 : 63 : * : * : -0.2
+R: 1 1 : 63 : * : * : -0.2
+R: 1 2 : 63 : * : * : -0.2
+R: 1 3 : 63 : * : * : -0.2
+R: 1 4 : 63 : * : * : -1.1
+R: 1 5 : 63 : * : * : -1.1
+R: 2 0 : 63 : * : * : -0.2
+R: 2 1 : 63 : * : * : -0.2
+R: 2 2 : 63 : * : * : -0.2
+R: 2 3 : 63 : * : * : -0.2
+R: 2 4 : 63 : * : * : -1.1
+R: 2 5 : 63 : * : * : -1.1
+R: 3 0 : 63 : * : * : -0.2
+R: 3 1 : 63 : * : * : -0.2
+R: 3 2 : 63 : * : * : -0.2
+R: 3 3 : 63 : * : * : -0.2
+R: 3 4 : 63 : * : * : -1.1
+R: 3 5 : 63 : * : * : -1.1
+R: 4 0 : 63 : * : * : -1.1
+R: 4 1 : 63 : * : * : -1.1
+R: 4 2 : 63 : * : * : -1.1
+R: 4 3 : 63 : * : * : -1.1
+R: 4 4 : 63 : * : * : -2
+R: 4 5 : 63 : * : * : -2
+R: 5 0 : 63 : * : * : -1.1
+R: 5 1 : 63 : * : * : -1.1
+R: 5 2 : 63 : * : * : -1.1
+R: 5 3 : 63 : * : * : -1.1
+R: 5 4 : 63 : * : * : -2
+R: 5 5 : 63 : * : * : -2
+R: 0 0 : 64 : * : * : -0.2
+R: 0 1 : 64 : * : * : -0.2
+R: 0 2 : 64 : * : * : -0.2
+R: 0 3 : 64 : * : * : -0.2
+R: 0 4 : 64 : * : * : -10.1
+R: 0 5 : 64 : * : * : 1.9
+R: 1 0 : 64 : * : * : -0.2
+R: 1 1 : 64 : * : * : -0.2
+R: 1 2 : 64 : * : * : -0.2
+R: 1 3 : 64 : * : * : -0.2
+R: 1 4 : 64 : * : * : -10.1
+R: 1 5 : 64 : * : * : 1.9
+R: 2 0 : 64 : * : * : -0.2
+R: 2 1 : 64 : * : * : -0.2
+R: 2 2 : 64 : * : * : -0.2
+R: 2 3 : 64 : * : * : -0.2
+R: 2 4 : 64 : * : * : -10.1
+R: 2 5 : 64 : * : * : 1.9
+R: 3 0 : 64 : * : * : -0.2
+R: 3 1 : 64 : * : * : -0.2
+R: 3 2 : 64 : * : * : -0.2
+R: 3 3 : 64 : * : * : -0.2
+R: 3 4 : 64 : * : * : -10.1
+R: 3 5 : 64 : * : * : 1.9
+R: 4 0 : 64 : * : * : -10.1
+R: 4 1 : 64 : * : * : -10.1
+R: 4 2 : 64 : * : * : -10.1
+R: 4 3 : 64 : * : * : -10.1
+R: 4 4 : 64 : * : * : 0
+R: 4 5 : 64 : * : * : 0
+R: 5 0 : 64 : * : * : 1.9
+R: 5 1 : 64 : * : * : 1.9
+R: 5 2 : 64 : * : * : 1.9
+R: 5 3 : 64 : * : * : 1.9
+R: 5 4 : 64 : * : * : 4
+R: 5 5 : 64 : * : * : 4
+R: 0 0 : 65 : * : * : -0.2
+R: 0 1 : 65 : * : * : -0.2
+R: 0 2 : 65 : * : * : -0.2
+R: 0 3 : 65 : * : * : -0.2
+R: 0 4 : 65 : * : * : -1.1
+R: 0 5 : 65 : * : * : -1.1
+R: 1 0 : 65 : * : * : -0.2
+R: 1 1 : 65 : * : * : -0.2
+R: 1 2 : 65 : * : * : -0.2
+R: 1 3 : 65 : * : * : -0.2
+R: 1 4 : 65 : * : * : -1.1
+R: 1 5 : 65 : * : * : -1.1
+R: 2 0 : 65 : * : * : -0.2
+R: 2 1 : 65 : * : * : -0.2
+R: 2 2 : 65 : * : * : -0.2
+R: 2 3 : 65 : * : * : -0.2
+R: 2 4 : 65 : * : * : -1.1
+R: 2 5 : 65 : * : * : -1.1
+R: 3 0 : 65 : * : * : -0.2
+R: 3 1 : 65 : * : * : -0.2
+R: 3 2 : 65 : * : * : -0.2
+R: 3 3 : 65 : * : * : -0.2
+R: 3 4 : 65 : * : * : -1.1
+R: 3 5 : 65 : * : * : -1.1
+R: 4 0 : 65 : * : * : -10.1
+R: 4 1 : 65 : * : * : -10.1
+R: 4 2 : 65 : * : * : -10.1
+R: 4 3 : 65 : * : * : -10.1
+R: 4 4 : 65 : * : * : -11
+R: 4 5 : 65 : * : * : -11
+R: 5 0 : 65 : * : * : 1.9
+R: 5 1 : 65 : * : * : 1.9
+R: 5 2 : 65 : * : * : 1.9
+R: 5 3 : 65 : * : * : 1.9
+R: 5 4 : 65 : * : * : 1
+R: 5 5 : 65 : * : * : 1
+R: 0 0 : 66 : * : * : -0.2
+R: 0 1 : 66 : * : * : -0.2
+R: 0 2 : 66 : * : * : -0.2
+R: 0 3 : 66 : * : * : -0.2
+R: 0 4 : 66 : * : * : -10.1
+R: 0 5 : 66 : * : * : 1.9
+R: 1 0 : 66 : * : * : -0.2
+R: 1 1 : 66 : * : * : -0.2
+R: 1 2 : 66 : * : * : -0.2
+R: 1 3 : 66 : * : * : -0.2
+R: 1 4 : 66 : * : * : -10.1
+R: 1 5 : 66 : * : * : 1.9
+R: 2 0 : 66 : * : * : -0.2
+R: 2 1 : 66 : * : * : -0.2
+R: 2 2 : 66 : * : * : -0.2
+R: 2 3 : 66 : * : * : -0.2
+R: 2 4 : 66 : * : * : -10.1
+R: 2 5 : 66 : * : * : 1.9
+R: 3 0 : 66 : * : * : -0.2
+R: 3 1 : 66 : * : * : -0.2
+R: 3 2 : 66 : * : * : -0.2
+R: 3 3 : 66 : * : * : -0.2
+R: 3 4 : 66 : * : * : -10.1
+R: 3 5 : 66 : * : * : 1.9
+R: 4 0 : 66 : * : * : -1.1
+R: 4 1 : 66 : * : * : -1.1
+R: 4 2 : 66 : * : * : -1.1
+R: 4 3 : 66 : * : * : -1.1
+R: 4 4 : 66 : * : * : -11
+R: 4 5 : 66 : * : * : -11
+R: 5 0 : 66 : * : * : -1.1
+R: 5 1 : 66 : * : * : -1.1
+R: 5 2 : 66 : * : * : -1.1
+R: 5 3 : 66 : * : * : -1.1
+R: 5 4 : 66 : * : * : 1
+R: 5 5 : 66 : * : * : 1
+R: 0 0 : 67 : * : * : -0.2
+R: 0 1 : 67 : * : * : -0.2
+R: 0 2 : 67 : * : * : -0.2
+R: 0 3 : 67 : * : * : -0.2
+R: 0 4 : 67 : * : * : -1.1
+R: 0 5 : 67 : * : * : -1.1
+R: 1 0 : 67 : * : * : -0.2
+R: 1 1 : 67 : * : * : -0.2
+R: 1 2 : 67 : * : * : -0.2
+R: 1 3 : 67 : * : * : -0.2
+R: 1 4 : 67 : * : * : -1.1
+R: 1 5 : 67 : * : * : -1.1
+R: 2 0 : 67 : * : * : -0.2
+R: 2 1 : 67 : * : * : -0.2
+R: 2 2 : 67 : * : * : -0.2
+R: 2 3 : 67 : * : * : -0.2
+R: 2 4 : 67 : * : * : -1.1
+R: 2 5 : 67 : * : * : -1.1
+R: 3 0 : 67 : * : * : -0.2
+R: 3 1 : 67 : * : * : -0.2
+R: 3 2 : 67 : * : * : -0.2
+R: 3 3 : 67 : * : * : -0.2
+R: 3 4 : 67 : * : * : -1.1
+R: 3 5 : 67 : * : * : -1.1
+R: 4 0 : 67 : * : * : -1.1
+R: 4 1 : 67 : * : * : -1.1
+R: 4 2 : 67 : * : * : -1.1
+R: 4 3 : 67 : * : * : -1.1
+R: 4 4 : 67 : * : * : -2
+R: 4 5 : 67 : * : * : -2
+R: 5 0 : 67 : * : * : -1.1
+R: 5 1 : 67 : * : * : -1.1
+R: 5 2 : 67 : * : * : -1.1
+R: 5 3 : 67 : * : * : -1.1
+R: 5 4 : 67 : * : * : -2
+R: 5 5 : 67 : * : * : -2
+R: 0 0 : 68 : * : * : -0.2
+R: 0 1 : 68 : * : * : -0.2
+R: 0 2 : 68 : * : * : -0.2
+R: 0 3 : 68 : * : * : -0.2
+R: 0 4 : 68 : * : * : -10.1
+R: 0 5 : 68 : * : * : 1.9
+R: 1 0 : 68 : * : * : -0.2
+R: 1 1 : 68 : * : * : -0.2
+R: 1 2 : 68 : * : * : -0.2
+R: 1 3 : 68 : * : * : -0.2
+R: 1 4 : 68 : * : * : -10.1
+R: 1 5 : 68 : * : * : 1.9
+R: 2 0 : 68 : * : * : -0.2
+R: 2 1 : 68 : * : * : -0.2
+R: 2 2 : 68 : * : * : -0.2
+R: 2 3 : 68 : * : * : -0.2
+R: 2 4 : 68 : * : * : -10.1
+R: 2 5 : 68 : * : * : 1.9
+R: 3 0 : 68 : * : * : -0.2
+R: 3 1 : 68 : * : * : -0.2
+R: 3 2 : 68 : * : * : -0.2
+R: 3 3 : 68 : * : * : -0.2
+R: 3 4 : 68 : * : * : -10.1
+R: 3 5 : 68 : * : * : 1.9
+R: 4 0 : 68 : * : * : -10.1
+R: 4 1 : 68 : * : * : -10.1
+R: 4 2 : 68 : * : * : -10.1
+R: 4 3 : 68 : * : * : -10.1
+R: 4 4 : 68 : * : * : 0
+R: 4 5 : 68 : * : * : 0
+R: 5 0 : 68 : * : * : 1.9
+R: 5 1 : 68 : * : * : 1.9
+R: 5 2 : 68 : * : * : 1.9
+R: 5 3 : 68 : * : * : 1.9
+R: 5 4 : 68 : * : * : 4
+R: 5 5 : 68 : * : * : 4
+R: 0 0 : 69 : * : * : -0.2
+R: 0 1 : 69 : * : * : -0.2
+R: 0 2 : 69 : * : * : -0.2
+R: 0 3 : 69 : * : * : -0.2
+R: 0 4 : 69 : * : * : -1.1
+R: 0 5 : 69 : * : * : -1.1
+R: 1 0 : 69 : * : * : -0.2
+R: 1 1 : 69 : * : * : -0.2
+R: 1 2 : 69 : * : * : -0.2
+R: 1 3 : 69 : * : * : -0.2
+R: 1 4 : 69 : * : * : -1.1
+R: 1 5 : 69 : * : * : -1.1
+R: 2 0 : 69 : * : * : -0.2
+R: 2 1 : 69 : * : * : -0.2
+R: 2 2 : 69 : * : * : -0.2
+R: 2 3 : 69 : * : * : -0.2
+R: 2 4 : 69 : * : * : -1.1
+R: 2 5 : 69 : * : * : -1.1
+R: 3 0 : 69 : * : * : -0.2
+R: 3 1 : 69 : * : * : -0.2
+R: 3 2 : 69 : * : * : -0.2
+R: 3 3 : 69 : * : * : -0.2
+R: 3 4 : 69 : * : * : -1.1
+R: 3 5 : 69 : * : * : -1.1
+R: 4 0 : 69 : * : * : -10.1
+R: 4 1 : 69 : * : * : -10.1
+R: 4 2 : 69 : * : * : -10.1
+R: 4 3 : 69 : * : * : -10.1
+R: 4 4 : 69 : * : * : -11
+R: 4 5 : 69 : * : * : -11
+R: 5 0 : 69 : * : * : 1.9
+R: 5 1 : 69 : * : * : 1.9
+R: 5 2 : 69 : * : * : 1.9
+R: 5 3 : 69 : * : * : 1.9
+R: 5 4 : 69 : * : * : 1
+R: 5 5 : 69 : * : * : 1
+R: 0 0 : 70 : * : * : -0.2
+R: 0 1 : 70 : * : * : -0.2
+R: 0 2 : 70 : * : * : -0.2
+R: 0 3 : 70 : * : * : -0.2
+R: 0 4 : 70 : * : * : -10.1
+R: 0 5 : 70 : * : * : 1.9
+R: 1 0 : 70 : * : * : -0.2
+R: 1 1 : 70 : * : * : -0.2
+R: 1 2 : 70 : * : * : -0.2
+R: 1 3 : 70 : * : * : -0.2
+R: 1 4 : 70 : * : * : -10.1
+R: 1 5 : 70 : * : * : 1.9
+R: 2 0 : 70 : * : * : -0.2
+R: 2 1 : 70 : * : * : -0.2
+R: 2 2 : 70 : * : * : -0.2
+R: 2 3 : 70 : * : * : -0.2
+R: 2 4 : 70 : * : * : -10.1
+R: 2 5 : 70 : * : * : 1.9
+R: 3 0 : 70 : * : * : -0.2
+R: 3 1 : 70 : * : * : -0.2
+R: 3 2 : 70 : * : * : -0.2
+R: 3 3 : 70 : * : * : -0.2
+R: 3 4 : 70 : * : * : -10.1
+R: 3 5 : 70 : * : * : 1.9
+R: 4 0 : 70 : * : * : -1.1
+R: 4 1 : 70 : * : * : -1.1
+R: 4 2 : 70 : * : * : -1.1
+R: 4 3 : 70 : * : * : -1.1
+R: 4 4 : 70 : * : * : -11
+R: 4 5 : 70 : * : * : -11
+R: 5 0 : 70 : * : * : -1.1
+R: 5 1 : 70 : * : * : -1.1
+R: 5 2 : 70 : * : * : -1.1
+R: 5 3 : 70 : * : * : -1.1
+R: 5 4 : 70 : * : * : 1
+R: 5 5 : 70 : * : * : 1
+R: 0 0 : 71 : * : * : -0.2
+R: 0 1 : 71 : * : * : -0.2
+R: 0 2 : 71 : * : * : -0.2
+R: 0 3 : 71 : * : * : -0.2
+R: 0 4 : 71 : * : * : -1.1
+R: 0 5 : 71 : * : * : -1.1
+R: 1 0 : 71 : * : * : -0.2
+R: 1 1 : 71 : * : * : -0.2
+R: 1 2 : 71 : * : * : -0.2
+R: 1 3 : 71 : * : * : -0.2
+R: 1 4 : 71 : * : * : -1.1
+R: 1 5 : 71 : * : * : -1.1
+R: 2 0 : 71 : * : * : -0.2
+R: 2 1 : 71 : * : * : -0.2
+R: 2 2 : 71 : * : * : -0.2
+R: 2 3 : 71 : * : * : -0.2
+R: 2 4 : 71 : * : * : -1.1
+R: 2 5 : 71 : * : * : -1.1
+R: 3 0 : 71 : * : * : -0.2
+R: 3 1 : 71 : * : * : -0.2
+R: 3 2 : 71 : * : * : -0.2
+R: 3 3 : 71 : * : * : -0.2
+R: 3 4 : 71 : * : * : -1.1
+R: 3 5 : 71 : * : * : -1.1
+R: 4 0 : 71 : * : * : -1.1
+R: 4 1 : 71 : * : * : -1.1
+R: 4 2 : 71 : * : * : -1.1
+R: 4 3 : 71 : * : * : -1.1
+R: 4 4 : 71 : * : * : -2
+R: 4 5 : 71 : * : * : -2
+R: 5 0 : 71 : * : * : -1.1
+R: 5 1 : 71 : * : * : -1.1
+R: 5 2 : 71 : * : * : -1.1
+R: 5 3 : 71 : * : * : -1.1
+R: 5 4 : 71 : * : * : -2
+R: 5 5 : 71 : * : * : -2
+R: 0 0 : 72 : * : * : -0.2
+R: 0 1 : 72 : * : * : -0.2
+R: 0 2 : 72 : * : * : -0.2
+R: 0 3 : 72 : * : * : -0.2
+R: 0 4 : 72 : * : * : -10.1
+R: 0 5 : 72 : * : * : 1.9
+R: 1 0 : 72 : * : * : -0.2
+R: 1 1 : 72 : * : * : -0.2
+R: 1 2 : 72 : * : * : -0.2
+R: 1 3 : 72 : * : * : -0.2
+R: 1 4 : 72 : * : * : -10.1
+R: 1 5 : 72 : * : * : 1.9
+R: 2 0 : 72 : * : * : -0.2
+R: 2 1 : 72 : * : * : -0.2
+R: 2 2 : 72 : * : * : -0.2
+R: 2 3 : 72 : * : * : -0.2
+R: 2 4 : 72 : * : * : -10.1
+R: 2 5 : 72 : * : * : 1.9
+R: 3 0 : 72 : * : * : -0.2
+R: 3 1 : 72 : * : * : -0.2
+R: 3 2 : 72 : * : * : -0.2
+R: 3 3 : 72 : * : * : -0.2
+R: 3 4 : 72 : * : * : -10.1
+R: 3 5 : 72 : * : * : 1.9
+R: 4 0 : 72 : * : * : -10.1
+R: 4 1 : 72 : * : * : -10.1
+R: 4 2 : 72 : * : * : -10.1
+R: 4 3 : 72 : * : * : -10.1
+R: 4 4 : 72 : * : * : 0
+R: 4 5 : 72 : * : * : 0
+R: 5 0 : 72 : * : * : 1.9
+R: 5 1 : 72 : * : * : 1.9
+R: 5 2 : 72 : * : * : 1.9
+R: 5 3 : 72 : * : * : 1.9
+R: 5 4 : 72 : * : * : 4
+R: 5 5 : 72 : * : * : 4
+R: 0 0 : 73 : * : * : -0.2
+R: 0 1 : 73 : * : * : -0.2
+R: 0 2 : 73 : * : * : -0.2
+R: 0 3 : 73 : * : * : -0.2
+R: 0 4 : 73 : * : * : -1.1
+R: 0 5 : 73 : * : * : -1.1
+R: 1 0 : 73 : * : * : -0.2
+R: 1 1 : 73 : * : * : -0.2
+R: 1 2 : 73 : * : * : -0.2
+R: 1 3 : 73 : * : * : -0.2
+R: 1 4 : 73 : * : * : -1.1
+R: 1 5 : 73 : * : * : -1.1
+R: 2 0 : 73 : * : * : -0.2
+R: 2 1 : 73 : * : * : -0.2
+R: 2 2 : 73 : * : * : -0.2
+R: 2 3 : 73 : * : * : -0.2
+R: 2 4 : 73 : * : * : -1.1
+R: 2 5 : 73 : * : * : -1.1
+R: 3 0 : 73 : * : * : -0.2
+R: 3 1 : 73 : * : * : -0.2
+R: 3 2 : 73 : * : * : -0.2
+R: 3 3 : 73 : * : * : -0.2
+R: 3 4 : 73 : * : * : -1.1
+R: 3 5 : 73 : * : * : -1.1
+R: 4 0 : 73 : * : * : -10.1
+R: 4 1 : 73 : * : * : -10.1
+R: 4 2 : 73 : * : * : -10.1
+R: 4 3 : 73 : * : * : -10.1
+R: 4 4 : 73 : * : * : -11
+R: 4 5 : 73 : * : * : -11
+R: 5 0 : 73 : * : * : 1.9
+R: 5 1 : 73 : * : * : 1.9
+R: 5 2 : 73 : * : * : 1.9
+R: 5 3 : 73 : * : * : 1.9
+R: 5 4 : 73 : * : * : 1
+R: 5 5 : 73 : * : * : 1
+R: 0 0 : 74 : * : * : -0.2
+R: 0 1 : 74 : * : * : -0.2
+R: 0 2 : 74 : * : * : -0.2
+R: 0 3 : 74 : * : * : -0.2
+R: 0 4 : 74 : * : * : -10.1
+R: 0 5 : 74 : * : * : 1.9
+R: 1 0 : 74 : * : * : -0.2
+R: 1 1 : 74 : * : * : -0.2
+R: 1 2 : 74 : * : * : -0.2
+R: 1 3 : 74 : * : * : -0.2
+R: 1 4 : 74 : * : * : -10.1
+R: 1 5 : 74 : * : * : 1.9
+R: 2 0 : 74 : * : * : -0.2
+R: 2 1 : 74 : * : * : -0.2
+R: 2 2 : 74 : * : * : -0.2
+R: 2 3 : 74 : * : * : -0.2
+R: 2 4 : 74 : * : * : -10.1
+R: 2 5 : 74 : * : * : 1.9
+R: 3 0 : 74 : * : * : -0.2
+R: 3 1 : 74 : * : * : -0.2
+R: 3 2 : 74 : * : * : -0.2
+R: 3 3 : 74 : * : * : -0.2
+R: 3 4 : 74 : * : * : -10.1
+R: 3 5 : 74 : * : * : 1.9
+R: 4 0 : 74 : * : * : -1.1
+R: 4 1 : 74 : * : * : -1.1
+R: 4 2 : 74 : * : * : -1.1
+R: 4 3 : 74 : * : * : -1.1
+R: 4 4 : 74 : * : * : -11
+R: 4 5 : 74 : * : * : -11
+R: 5 0 : 74 : * : * : -1.1
+R: 5 1 : 74 : * : * : -1.1
+R: 5 2 : 74 : * : * : -1.1
+R: 5 3 : 74 : * : * : -1.1
+R: 5 4 : 74 : * : * : 1
+R: 5 5 : 74 : * : * : 1
+R: 0 0 : 75 : * : * : -0.2
+R: 0 1 : 75 : * : * : -0.2
+R: 0 2 : 75 : * : * : -0.2
+R: 0 3 : 75 : * : * : -0.2
+R: 0 4 : 75 : * : * : -1.1
+R: 0 5 : 75 : * : * : -1.1
+R: 1 0 : 75 : * : * : -0.2
+R: 1 1 : 75 : * : * : -0.2
+R: 1 2 : 75 : * : * : -0.2
+R: 1 3 : 75 : * : * : -0.2
+R: 1 4 : 75 : * : * : -1.1
+R: 1 5 : 75 : * : * : -1.1
+R: 2 0 : 75 : * : * : -0.2
+R: 2 1 : 75 : * : * : -0.2
+R: 2 2 : 75 : * : * : -0.2
+R: 2 3 : 75 : * : * : -0.2
+R: 2 4 : 75 : * : * : -1.1
+R: 2 5 : 75 : * : * : -1.1
+R: 3 0 : 75 : * : * : -0.2
+R: 3 1 : 75 : * : * : -0.2
+R: 3 2 : 75 : * : * : -0.2
+R: 3 3 : 75 : * : * : -0.2
+R: 3 4 : 75 : * : * : -1.1
+R: 3 5 : 75 : * : * : -1.1
+R: 4 0 : 75 : * : * : -1.1
+R: 4 1 : 75 : * : * : -1.1
+R: 4 2 : 75 : * : * : -1.1
+R: 4 3 : 75 : * : * : -1.1
+R: 4 4 : 75 : * : * : -2
+R: 4 5 : 75 : * : * : -2
+R: 5 0 : 75 : * : * : -1.1
+R: 5 1 : 75 : * : * : -1.1
+R: 5 2 : 75 : * : * : -1.1
+R: 5 3 : 75 : * : * : -1.1
+R: 5 4 : 75 : * : * : -2
+R: 5 5 : 75 : * : * : -2
+R: 0 0 : 76 : * : * : -0.2
+R: 0 1 : 76 : * : * : -0.2
+R: 0 2 : 76 : * : * : -0.2
+R: 0 3 : 76 : * : * : -0.2
+R: 0 4 : 76 : * : * : -10.1
+R: 0 5 : 76 : * : * : 1.9
+R: 1 0 : 76 : * : * : -0.2
+R: 1 1 : 76 : * : * : -0.2
+R: 1 2 : 76 : * : * : -0.2
+R: 1 3 : 76 : * : * : -0.2
+R: 1 4 : 76 : * : * : -10.1
+R: 1 5 : 76 : * : * : 1.9
+R: 2 0 : 76 : * : * : -0.2
+R: 2 1 : 76 : * : * : -0.2
+R: 2 2 : 76 : * : * : -0.2
+R: 2 3 : 76 : * : * : -0.2
+R: 2 4 : 76 : * : * : -10.1
+R: 2 5 : 76 : * : * : 1.9
+R: 3 0 : 76 : * : * : -0.2
+R: 3 1 : 76 : * : * : -0.2
+R: 3 2 : 76 : * : * : -0.2
+R: 3 3 : 76 : * : * : -0.2
+R: 3 4 : 76 : * : * : -10.1
+R: 3 5 : 76 : * : * : 1.9
+R: 4 0 : 76 : * : * : -10.1
+R: 4 1 : 76 : * : * : -10.1
+R: 4 2 : 76 : * : * : -10.1
+R: 4 3 : 76 : * : * : -10.1
+R: 4 4 : 76 : * : * : 0
+R: 4 5 : 76 : * : * : 0
+R: 5 0 : 76 : * : * : 1.9
+R: 5 1 : 76 : * : * : 1.9
+R: 5 2 : 76 : * : * : 1.9
+R: 5 3 : 76 : * : * : 1.9
+R: 5 4 : 76 : * : * : 4
+R: 5 5 : 76 : * : * : 4
+R: 0 0 : 77 : * : * : -0.2
+R: 0 1 : 77 : * : * : -0.2
+R: 0 2 : 77 : * : * : -0.2
+R: 0 3 : 77 : * : * : -0.2
+R: 0 4 : 77 : * : * : -1.1
+R: 0 5 : 77 : * : * : -1.1
+R: 1 0 : 77 : * : * : -0.2
+R: 1 1 : 77 : * : * : -0.2
+R: 1 2 : 77 : * : * : -0.2
+R: 1 3 : 77 : * : * : -0.2
+R: 1 4 : 77 : * : * : -1.1
+R: 1 5 : 77 : * : * : -1.1
+R: 2 0 : 77 : * : * : -0.2
+R: 2 1 : 77 : * : * : -0.2
+R: 2 2 : 77 : * : * : -0.2
+R: 2 3 : 77 : * : * : -0.2
+R: 2 4 : 77 : * : * : -1.1
+R: 2 5 : 77 : * : * : -1.1
+R: 3 0 : 77 : * : * : -0.2
+R: 3 1 : 77 : * : * : -0.2
+R: 3 2 : 77 : * : * : -0.2
+R: 3 3 : 77 : * : * : -0.2
+R: 3 4 : 77 : * : * : -1.1
+R: 3 5 : 77 : * : * : -1.1
+R: 4 0 : 77 : * : * : -10.1
+R: 4 1 : 77 : * : * : -10.1
+R: 4 2 : 77 : * : * : -10.1
+R: 4 3 : 77 : * : * : -10.1
+R: 4 4 : 77 : * : * : -11
+R: 4 5 : 77 : * : * : -11
+R: 5 0 : 77 : * : * : 1.9
+R: 5 1 : 77 : * : * : 1.9
+R: 5 2 : 77 : * : * : 1.9
+R: 5 3 : 77 : * : * : 1.9
+R: 5 4 : 77 : * : * : 1
+R: 5 5 : 77 : * : * : 1
+R: 0 0 : 78 : * : * : -0.2
+R: 0 1 : 78 : * : * : -0.2
+R: 0 2 : 78 : * : * : -0.2
+R: 0 3 : 78 : * : * : -0.2
+R: 0 4 : 78 : * : * : -10.1
+R: 0 5 : 78 : * : * : 1.9
+R: 1 0 : 78 : * : * : -0.2
+R: 1 1 : 78 : * : * : -0.2
+R: 1 2 : 78 : * : * : -0.2
+R: 1 3 : 78 : * : * : -0.2
+R: 1 4 : 78 : * : * : -10.1
+R: 1 5 : 78 : * : * : 1.9
+R: 2 0 : 78 : * : * : -0.2
+R: 2 1 : 78 : * : * : -0.2
+R: 2 2 : 78 : * : * : -0.2
+R: 2 3 : 78 : * : * : -0.2
+R: 2 4 : 78 : * : * : -10.1
+R: 2 5 : 78 : * : * : 1.9
+R: 3 0 : 78 : * : * : -0.2
+R: 3 1 : 78 : * : * : -0.2
+R: 3 2 : 78 : * : * : -0.2
+R: 3 3 : 78 : * : * : -0.2
+R: 3 4 : 78 : * : * : -10.1
+R: 3 5 : 78 : * : * : 1.9
+R: 4 0 : 78 : * : * : -1.1
+R: 4 1 : 78 : * : * : -1.1
+R: 4 2 : 78 : * : * : -1.1
+R: 4 3 : 78 : * : * : -1.1
+R: 4 4 : 78 : * : * : -11
+R: 4 5 : 78 : * : * : -11
+R: 5 0 : 78 : * : * : -1.1
+R: 5 1 : 78 : * : * : -1.1
+R: 5 2 : 78 : * : * : -1.1
+R: 5 3 : 78 : * : * : -1.1
+R: 5 4 : 78 : * : * : 1
+R: 5 5 : 78 : * : * : 1
+R: 0 0 : 79 : * : * : -0.2
+R: 0 1 : 79 : * : * : -0.2
+R: 0 2 : 79 : * : * : -0.2
+R: 0 3 : 79 : * : * : -0.2
+R: 0 4 : 79 : * : * : -1.1
+R: 0 5 : 79 : * : * : -1.1
+R: 1 0 : 79 : * : * : -0.2
+R: 1 1 : 79 : * : * : -0.2
+R: 1 2 : 79 : * : * : -0.2
+R: 1 3 : 79 : * : * : -0.2
+R: 1 4 : 79 : * : * : -1.1
+R: 1 5 : 79 : * : * : -1.1
+R: 2 0 : 79 : * : * : -0.2
+R: 2 1 : 79 : * : * : -0.2
+R: 2 2 : 79 : * : * : -0.2
+R: 2 3 : 79 : * : * : -0.2
+R: 2 4 : 79 : * : * : -1.1
+R: 2 5 : 79 : * : * : -1.1
+R: 3 0 : 79 : * : * : -0.2
+R: 3 1 : 79 : * : * : -0.2
+R: 3 2 : 79 : * : * : -0.2
+R: 3 3 : 79 : * : * : -0.2
+R: 3 4 : 79 : * : * : -1.1
+R: 3 5 : 79 : * : * : -1.1
+R: 4 0 : 79 : * : * : -1.1
+R: 4 1 : 79 : * : * : -1.1
+R: 4 2 : 79 : * : * : -1.1
+R: 4 3 : 79 : * : * : -1.1
+R: 4 4 : 79 : * : * : -2
+R: 4 5 : 79 : * : * : -2
+R: 5 0 : 79 : * : * : -1.1
+R: 5 1 : 79 : * : * : -1.1
+R: 5 2 : 79 : * : * : -1.1
+R: 5 3 : 79 : * : * : -1.1
+R: 5 4 : 79 : * : * : -2
+R: 5 5 : 79 : * : * : -2
+R: 0 0 : 80 : * : * : -0.2
+R: 0 1 : 80 : * : * : -0.2
+R: 0 2 : 80 : * : * : -0.2
+R: 0 3 : 80 : * : * : -0.2
+R: 0 4 : 80 : * : * : -10.1
+R: 0 5 : 80 : * : * : 1.9
+R: 1 0 : 80 : * : * : -0.2
+R: 1 1 : 80 : * : * : -0.2
+R: 1 2 : 80 : * : * : -0.2
+R: 1 3 : 80 : * : * : -0.2
+R: 1 4 : 80 : * : * : -10.1
+R: 1 5 : 80 : * : * : 1.9
+R: 2 0 : 80 : * : * : -0.2
+R: 2 1 : 80 : * : * : -0.2
+R: 2 2 : 80 : * : * : -0.2
+R: 2 3 : 80 : * : * : -0.2
+R: 2 4 : 80 : * : * : -10.1
+R: 2 5 : 80 : * : * : 1.9
+R: 3 0 : 80 : * : * : -0.2
+R: 3 1 : 80 : * : * : -0.2
+R: 3 2 : 80 : * : * : -0.2
+R: 3 3 : 80 : * : * : -0.2
+R: 3 4 : 80 : * : * : -10.1
+R: 3 5 : 80 : * : * : 1.9
+R: 4 0 : 80 : * : * : -10.1
+R: 4 1 : 80 : * : * : -10.1
+R: 4 2 : 80 : * : * : -10.1
+R: 4 3 : 80 : * : * : -10.1
+R: 4 4 : 80 : * : * : 0
+R: 4 5 : 80 : * : * : 0
+R: 5 0 : 80 : * : * : 1.9
+R: 5 1 : 80 : * : * : 1.9
+R: 5 2 : 80 : * : * : 1.9
+R: 5 3 : 80 : * : * : 1.9
+R: 5 4 : 80 : * : * : 0
+R: 5 5 : 80 : * : * : 2
+R: 0 0 : 81 : * : * : -0.2
+R: 0 1 : 81 : * : * : -0.2
+R: 0 2 : 81 : * : * : -0.2
+R: 0 3 : 81 : * : * : -0.2
+R: 0 4 : 81 : * : * : -10.1
+R: 0 5 : 81 : * : * : 1.9
+R: 1 0 : 81 : * : * : -0.2
+R: 1 1 : 81 : * : * : -0.2
+R: 1 2 : 81 : * : * : -0.2
+R: 1 3 : 81 : * : * : -0.2
+R: 1 4 : 81 : * : * : -10.1
+R: 1 5 : 81 : * : * : 1.9
+R: 2 0 : 81 : * : * : -0.2
+R: 2 1 : 81 : * : * : -0.2
+R: 2 2 : 81 : * : * : -0.2
+R: 2 3 : 81 : * : * : -0.2
+R: 2 4 : 81 : * : * : -10.1
+R: 2 5 : 81 : * : * : 1.9
+R: 3 0 : 81 : * : * : -0.2
+R: 3 1 : 81 : * : * : -0.2
+R: 3 2 : 81 : * : * : -0.2
+R: 3 3 : 81 : * : * : -0.2
+R: 3 4 : 81 : * : * : -10.1
+R: 3 5 : 81 : * : * : 1.9
+R: 4 0 : 81 : * : * : -10.1
+R: 4 1 : 81 : * : * : -10.1
+R: 4 2 : 81 : * : * : -10.1
+R: 4 3 : 81 : * : * : -10.1
+R: 4 4 : 81 : * : * : 0
+R: 4 5 : 81 : * : * : 0
+R: 5 0 : 81 : * : * : 1.9
+R: 5 1 : 81 : * : * : 1.9
+R: 5 2 : 81 : * : * : 1.9
+R: 5 3 : 81 : * : * : 1.9
+R: 5 4 : 81 : * : * : 0
+R: 5 5 : 81 : * : * : 2
+R: 0 0 : 82 : * : * : -0.2
+R: 0 1 : 82 : * : * : -0.2
+R: 0 2 : 82 : * : * : -0.2
+R: 0 3 : 82 : * : * : -0.2
+R: 0 4 : 82 : * : * : -1.1
+R: 0 5 : 82 : * : * : -1.1
+R: 1 0 : 82 : * : * : -0.2
+R: 1 1 : 82 : * : * : -0.2
+R: 1 2 : 82 : * : * : -0.2
+R: 1 3 : 82 : * : * : -0.2
+R: 1 4 : 82 : * : * : -1.1
+R: 1 5 : 82 : * : * : -1.1
+R: 2 0 : 82 : * : * : -0.2
+R: 2 1 : 82 : * : * : -0.2
+R: 2 2 : 82 : * : * : -0.2
+R: 2 3 : 82 : * : * : -0.2
+R: 2 4 : 82 : * : * : -1.1
+R: 2 5 : 82 : * : * : -1.1
+R: 3 0 : 82 : * : * : -0.2
+R: 3 1 : 82 : * : * : -0.2
+R: 3 2 : 82 : * : * : -0.2
+R: 3 3 : 82 : * : * : -0.2
+R: 3 4 : 82 : * : * : -1.1
+R: 3 5 : 82 : * : * : -1.1
+R: 4 0 : 82 : * : * : -1.1
+R: 4 1 : 82 : * : * : -1.1
+R: 4 2 : 82 : * : * : -1.1
+R: 4 3 : 82 : * : * : -1.1
+R: 4 4 : 82 : * : * : -2
+R: 4 5 : 82 : * : * : -2
+R: 5 0 : 82 : * : * : -1.1
+R: 5 1 : 82 : * : * : -1.1
+R: 5 2 : 82 : * : * : -1.1
+R: 5 3 : 82 : * : * : -1.1
+R: 5 4 : 82 : * : * : -2
+R: 5 5 : 82 : * : * : -2
+R: 0 0 : 83 : * : * : -0.2
+R: 0 1 : 83 : * : * : -0.2
+R: 0 2 : 83 : * : * : -0.2
+R: 0 3 : 83 : * : * : -0.2
+R: 0 4 : 83 : * : * : -1.1
+R: 0 5 : 83 : * : * : -1.1
+R: 1 0 : 83 : * : * : -0.2
+R: 1 1 : 83 : * : * : -0.2
+R: 1 2 : 83 : * : * : -0.2
+R: 1 3 : 83 : * : * : -0.2
+R: 1 4 : 83 : * : * : -1.1
+R: 1 5 : 83 : * : * : -1.1
+R: 2 0 : 83 : * : * : -0.2
+R: 2 1 : 83 : * : * : -0.2
+R: 2 2 : 83 : * : * : -0.2
+R: 2 3 : 83 : * : * : -0.2
+R: 2 4 : 83 : * : * : -1.1
+R: 2 5 : 83 : * : * : -1.1
+R: 3 0 : 83 : * : * : -0.2
+R: 3 1 : 83 : * : * : -0.2
+R: 3 2 : 83 : * : * : -0.2
+R: 3 3 : 83 : * : * : -0.2
+R: 3 4 : 83 : * : * : -1.1
+R: 3 5 : 83 : * : * : -1.1
+R: 4 0 : 83 : * : * : -1.1
+R: 4 1 : 83 : * : * : -1.1
+R: 4 2 : 83 : * : * : -1.1
+R: 4 3 : 83 : * : * : -1.1
+R: 4 4 : 83 : * : * : -2
+R: 4 5 : 83 : * : * : -2
+R: 5 0 : 83 : * : * : -1.1
+R: 5 1 : 83 : * : * : -1.1
+R: 5 2 : 83 : * : * : -1.1
+R: 5 3 : 83 : * : * : -1.1
+R: 5 4 : 83 : * : * : -2
+R: 5 5 : 83 : * : * : -2
+R: 0 0 : 84 : * : * : -0.2
+R: 0 1 : 84 : * : * : -0.2
+R: 0 2 : 84 : * : * : -0.2
+R: 0 3 : 84 : * : * : -0.2
+R: 0 4 : 84 : * : * : -10.1
+R: 0 5 : 84 : * : * : 1.9
+R: 1 0 : 84 : * : * : -0.2
+R: 1 1 : 84 : * : * : -0.2
+R: 1 2 : 84 : * : * : -0.2
+R: 1 3 : 84 : * : * : -0.2
+R: 1 4 : 84 : * : * : -10.1
+R: 1 5 : 84 : * : * : 1.9
+R: 2 0 : 84 : * : * : -0.2
+R: 2 1 : 84 : * : * : -0.2
+R: 2 2 : 84 : * : * : -0.2
+R: 2 3 : 84 : * : * : -0.2
+R: 2 4 : 84 : * : * : -10.1
+R: 2 5 : 84 : * : * : 1.9
+R: 3 0 : 84 : * : * : -0.2
+R: 3 1 : 84 : * : * : -0.2
+R: 3 2 : 84 : * : * : -0.2
+R: 3 3 : 84 : * : * : -0.2
+R: 3 4 : 84 : * : * : -10.1
+R: 3 5 : 84 : * : * : 1.9
+R: 4 0 : 84 : * : * : -10.1
+R: 4 1 : 84 : * : * : -10.1
+R: 4 2 : 84 : * : * : -10.1
+R: 4 3 : 84 : * : * : -10.1
+R: 4 4 : 84 : * : * : 0
+R: 4 5 : 84 : * : * : 0
+R: 5 0 : 84 : * : * : 1.9
+R: 5 1 : 84 : * : * : 1.9
+R: 5 2 : 84 : * : * : 1.9
+R: 5 3 : 84 : * : * : 1.9
+R: 5 4 : 84 : * : * : 0
+R: 5 5 : 84 : * : * : 2
+R: 0 0 : 85 : * : * : -0.2
+R: 0 1 : 85 : * : * : -0.2
+R: 0 2 : 85 : * : * : -0.2
+R: 0 3 : 85 : * : * : -0.2
+R: 0 4 : 85 : * : * : -10.1
+R: 0 5 : 85 : * : * : 1.9
+R: 1 0 : 85 : * : * : -0.2
+R: 1 1 : 85 : * : * : -0.2
+R: 1 2 : 85 : * : * : -0.2
+R: 1 3 : 85 : * : * : -0.2
+R: 1 4 : 85 : * : * : -10.1
+R: 1 5 : 85 : * : * : 1.9
+R: 2 0 : 85 : * : * : -0.2
+R: 2 1 : 85 : * : * : -0.2
+R: 2 2 : 85 : * : * : -0.2
+R: 2 3 : 85 : * : * : -0.2
+R: 2 4 : 85 : * : * : -10.1
+R: 2 5 : 85 : * : * : 1.9
+R: 3 0 : 85 : * : * : -0.2
+R: 3 1 : 85 : * : * : -0.2
+R: 3 2 : 85 : * : * : -0.2
+R: 3 3 : 85 : * : * : -0.2
+R: 3 4 : 85 : * : * : -10.1
+R: 3 5 : 85 : * : * : 1.9
+R: 4 0 : 85 : * : * : -10.1
+R: 4 1 : 85 : * : * : -10.1
+R: 4 2 : 85 : * : * : -10.1
+R: 4 3 : 85 : * : * : -10.1
+R: 4 4 : 85 : * : * : 0
+R: 4 5 : 85 : * : * : 0
+R: 5 0 : 85 : * : * : 1.9
+R: 5 1 : 85 : * : * : 1.9
+R: 5 2 : 85 : * : * : 1.9
+R: 5 3 : 85 : * : * : 1.9
+R: 5 4 : 85 : * : * : 0
+R: 5 5 : 85 : * : * : 2
+R: 0 0 : 86 : * : * : -0.2
+R: 0 1 : 86 : * : * : -0.2
+R: 0 2 : 86 : * : * : -0.2
+R: 0 3 : 86 : * : * : -0.2
+R: 0 4 : 86 : * : * : -1.1
+R: 0 5 : 86 : * : * : -1.1
+R: 1 0 : 86 : * : * : -0.2
+R: 1 1 : 86 : * : * : -0.2
+R: 1 2 : 86 : * : * : -0.2
+R: 1 3 : 86 : * : * : -0.2
+R: 1 4 : 86 : * : * : -1.1
+R: 1 5 : 86 : * : * : -1.1
+R: 2 0 : 86 : * : * : -0.2
+R: 2 1 : 86 : * : * : -0.2
+R: 2 2 : 86 : * : * : -0.2
+R: 2 3 : 86 : * : * : -0.2
+R: 2 4 : 86 : * : * : -1.1
+R: 2 5 : 86 : * : * : -1.1
+R: 3 0 : 86 : * : * : -0.2
+R: 3 1 : 86 : * : * : -0.2
+R: 3 2 : 86 : * : * : -0.2
+R: 3 3 : 86 : * : * : -0.2
+R: 3 4 : 86 : * : * : -1.1
+R: 3 5 : 86 : * : * : -1.1
+R: 4 0 : 86 : * : * : -1.1
+R: 4 1 : 86 : * : * : -1.1
+R: 4 2 : 86 : * : * : -1.1
+R: 4 3 : 86 : * : * : -1.1
+R: 4 4 : 86 : * : * : -2
+R: 4 5 : 86 : * : * : -2
+R: 5 0 : 86 : * : * : -1.1
+R: 5 1 : 86 : * : * : -1.1
+R: 5 2 : 86 : * : * : -1.1
+R: 5 3 : 86 : * : * : -1.1
+R: 5 4 : 86 : * : * : -2
+R: 5 5 : 86 : * : * : -2
+R: 0 0 : 87 : * : * : -0.2
+R: 0 1 : 87 : * : * : -0.2
+R: 0 2 : 87 : * : * : -0.2
+R: 0 3 : 87 : * : * : -0.2
+R: 0 4 : 87 : * : * : -1.1
+R: 0 5 : 87 : * : * : -1.1
+R: 1 0 : 87 : * : * : -0.2
+R: 1 1 : 87 : * : * : -0.2
+R: 1 2 : 87 : * : * : -0.2
+R: 1 3 : 87 : * : * : -0.2
+R: 1 4 : 87 : * : * : -1.1
+R: 1 5 : 87 : * : * : -1.1
+R: 2 0 : 87 : * : * : -0.2
+R: 2 1 : 87 : * : * : -0.2
+R: 2 2 : 87 : * : * : -0.2
+R: 2 3 : 87 : * : * : -0.2
+R: 2 4 : 87 : * : * : -1.1
+R: 2 5 : 87 : * : * : -1.1
+R: 3 0 : 87 : * : * : -0.2
+R: 3 1 : 87 : * : * : -0.2
+R: 3 2 : 87 : * : * : -0.2
+R: 3 3 : 87 : * : * : -0.2
+R: 3 4 : 87 : * : * : -1.1
+R: 3 5 : 87 : * : * : -1.1
+R: 4 0 : 87 : * : * : -1.1
+R: 4 1 : 87 : * : * : -1.1
+R: 4 2 : 87 : * : * : -1.1
+R: 4 3 : 87 : * : * : -1.1
+R: 4 4 : 87 : * : * : -2
+R: 4 5 : 87 : * : * : -2
+R: 5 0 : 87 : * : * : -1.1
+R: 5 1 : 87 : * : * : -1.1
+R: 5 2 : 87 : * : * : -1.1
+R: 5 3 : 87 : * : * : -1.1
+R: 5 4 : 87 : * : * : -2
+R: 5 5 : 87 : * : * : -2
+R: 0 0 : 88 : * : * : -0.2
+R: 0 1 : 88 : * : * : -0.2
+R: 0 2 : 88 : * : * : -0.2
+R: 0 3 : 88 : * : * : -0.2
+R: 0 4 : 88 : * : * : -10.1
+R: 0 5 : 88 : * : * : 1.9
+R: 1 0 : 88 : * : * : -0.2
+R: 1 1 : 88 : * : * : -0.2
+R: 1 2 : 88 : * : * : -0.2
+R: 1 3 : 88 : * : * : -0.2
+R: 1 4 : 88 : * : * : -10.1
+R: 1 5 : 88 : * : * : 1.9
+R: 2 0 : 88 : * : * : -0.2
+R: 2 1 : 88 : * : * : -0.2
+R: 2 2 : 88 : * : * : -0.2
+R: 2 3 : 88 : * : * : -0.2
+R: 2 4 : 88 : * : * : -10.1
+R: 2 5 : 88 : * : * : 1.9
+R: 3 0 : 88 : * : * : -0.2
+R: 3 1 : 88 : * : * : -0.2
+R: 3 2 : 88 : * : * : -0.2
+R: 3 3 : 88 : * : * : -0.2
+R: 3 4 : 88 : * : * : -10.1
+R: 3 5 : 88 : * : * : 1.9
+R: 4 0 : 88 : * : * : -10.1
+R: 4 1 : 88 : * : * : -10.1
+R: 4 2 : 88 : * : * : -10.1
+R: 4 3 : 88 : * : * : -10.1
+R: 4 4 : 88 : * : * : 0
+R: 4 5 : 88 : * : * : 0
+R: 5 0 : 88 : * : * : 1.9
+R: 5 1 : 88 : * : * : 1.9
+R: 5 2 : 88 : * : * : 1.9
+R: 5 3 : 88 : * : * : 1.9
+R: 5 4 : 88 : * : * : 0
+R: 5 5 : 88 : * : * : 2
+R: 0 0 : 89 : * : * : -0.2
+R: 0 1 : 89 : * : * : -0.2
+R: 0 2 : 89 : * : * : -0.2
+R: 0 3 : 89 : * : * : -0.2
+R: 0 4 : 89 : * : * : -10.1
+R: 0 5 : 89 : * : * : 1.9
+R: 1 0 : 89 : * : * : -0.2
+R: 1 1 : 89 : * : * : -0.2
+R: 1 2 : 89 : * : * : -0.2
+R: 1 3 : 89 : * : * : -0.2
+R: 1 4 : 89 : * : * : -10.1
+R: 1 5 : 89 : * : * : 1.9
+R: 2 0 : 89 : * : * : -0.2
+R: 2 1 : 89 : * : * : -0.2
+R: 2 2 : 89 : * : * : -0.2
+R: 2 3 : 89 : * : * : -0.2
+R: 2 4 : 89 : * : * : -10.1
+R: 2 5 : 89 : * : * : 1.9
+R: 3 0 : 89 : * : * : -0.2
+R: 3 1 : 89 : * : * : -0.2
+R: 3 2 : 89 : * : * : -0.2
+R: 3 3 : 89 : * : * : -0.2
+R: 3 4 : 89 : * : * : -10.1
+R: 3 5 : 89 : * : * : 1.9
+R: 4 0 : 89 : * : * : -10.1
+R: 4 1 : 89 : * : * : -10.1
+R: 4 2 : 89 : * : * : -10.1
+R: 4 3 : 89 : * : * : -10.1
+R: 4 4 : 89 : * : * : 0
+R: 4 5 : 89 : * : * : 0
+R: 5 0 : 89 : * : * : 1.9
+R: 5 1 : 89 : * : * : 1.9
+R: 5 2 : 89 : * : * : 1.9
+R: 5 3 : 89 : * : * : 1.9
+R: 5 4 : 89 : * : * : 0
+R: 5 5 : 89 : * : * : 2
+R: 0 0 : 90 : * : * : -0.2
+R: 0 1 : 90 : * : * : -0.2
+R: 0 2 : 90 : * : * : -0.2
+R: 0 3 : 90 : * : * : -0.2
+R: 0 4 : 90 : * : * : -1.1
+R: 0 5 : 90 : * : * : -1.1
+R: 1 0 : 90 : * : * : -0.2
+R: 1 1 : 90 : * : * : -0.2
+R: 1 2 : 90 : * : * : -0.2
+R: 1 3 : 90 : * : * : -0.2
+R: 1 4 : 90 : * : * : -1.1
+R: 1 5 : 90 : * : * : -1.1
+R: 2 0 : 90 : * : * : -0.2
+R: 2 1 : 90 : * : * : -0.2
+R: 2 2 : 90 : * : * : -0.2
+R: 2 3 : 90 : * : * : -0.2
+R: 2 4 : 90 : * : * : -1.1
+R: 2 5 : 90 : * : * : -1.1
+R: 3 0 : 90 : * : * : -0.2
+R: 3 1 : 90 : * : * : -0.2
+R: 3 2 : 90 : * : * : -0.2
+R: 3 3 : 90 : * : * : -0.2
+R: 3 4 : 90 : * : * : -1.1
+R: 3 5 : 90 : * : * : -1.1
+R: 4 0 : 90 : * : * : -1.1
+R: 4 1 : 90 : * : * : -1.1
+R: 4 2 : 90 : * : * : -1.1
+R: 4 3 : 90 : * : * : -1.1
+R: 4 4 : 90 : * : * : -2
+R: 4 5 : 90 : * : * : -2
+R: 5 0 : 90 : * : * : -1.1
+R: 5 1 : 90 : * : * : -1.1
+R: 5 2 : 90 : * : * : -1.1
+R: 5 3 : 90 : * : * : -1.1
+R: 5 4 : 90 : * : * : -2
+R: 5 5 : 90 : * : * : -2
+R: 0 0 : 91 : * : * : -0.2
+R: 0 1 : 91 : * : * : -0.2
+R: 0 2 : 91 : * : * : -0.2
+R: 0 3 : 91 : * : * : -0.2
+R: 0 4 : 91 : * : * : -1.1
+R: 0 5 : 91 : * : * : -1.1
+R: 1 0 : 91 : * : * : -0.2
+R: 1 1 : 91 : * : * : -0.2
+R: 1 2 : 91 : * : * : -0.2
+R: 1 3 : 91 : * : * : -0.2
+R: 1 4 : 91 : * : * : -1.1
+R: 1 5 : 91 : * : * : -1.1
+R: 2 0 : 91 : * : * : -0.2
+R: 2 1 : 91 : * : * : -0.2
+R: 2 2 : 91 : * : * : -0.2
+R: 2 3 : 91 : * : * : -0.2
+R: 2 4 : 91 : * : * : -1.1
+R: 2 5 : 91 : * : * : -1.1
+R: 3 0 : 91 : * : * : -0.2
+R: 3 1 : 91 : * : * : -0.2
+R: 3 2 : 91 : * : * : -0.2
+R: 3 3 : 91 : * : * : -0.2
+R: 3 4 : 91 : * : * : -1.1
+R: 3 5 : 91 : * : * : -1.1
+R: 4 0 : 91 : * : * : -1.1
+R: 4 1 : 91 : * : * : -1.1
+R: 4 2 : 91 : * : * : -1.1
+R: 4 3 : 91 : * : * : -1.1
+R: 4 4 : 91 : * : * : -2
+R: 4 5 : 91 : * : * : -2
+R: 5 0 : 91 : * : * : -1.1
+R: 5 1 : 91 : * : * : -1.1
+R: 5 2 : 91 : * : * : -1.1
+R: 5 3 : 91 : * : * : -1.1
+R: 5 4 : 91 : * : * : -2
+R: 5 5 : 91 : * : * : -2
+R: 0 0 : 92 : * : * : -0.2
+R: 0 1 : 92 : * : * : -0.2
+R: 0 2 : 92 : * : * : -0.2
+R: 0 3 : 92 : * : * : -0.2
+R: 0 4 : 92 : * : * : -10.1
+R: 0 5 : 92 : * : * : 1.9
+R: 1 0 : 92 : * : * : -0.2
+R: 1 1 : 92 : * : * : -0.2
+R: 1 2 : 92 : * : * : -0.2
+R: 1 3 : 92 : * : * : -0.2
+R: 1 4 : 92 : * : * : -10.1
+R: 1 5 : 92 : * : * : 1.9
+R: 2 0 : 92 : * : * : -0.2
+R: 2 1 : 92 : * : * : -0.2
+R: 2 2 : 92 : * : * : -0.2
+R: 2 3 : 92 : * : * : -0.2
+R: 2 4 : 92 : * : * : -10.1
+R: 2 5 : 92 : * : * : 1.9
+R: 3 0 : 92 : * : * : -0.2
+R: 3 1 : 92 : * : * : -0.2
+R: 3 2 : 92 : * : * : -0.2
+R: 3 3 : 92 : * : * : -0.2
+R: 3 4 : 92 : * : * : -10.1
+R: 3 5 : 92 : * : * : 1.9
+R: 4 0 : 92 : * : * : -10.1
+R: 4 1 : 92 : * : * : -10.1
+R: 4 2 : 92 : * : * : -10.1
+R: 4 3 : 92 : * : * : -10.1
+R: 4 4 : 92 : * : * : 0
+R: 4 5 : 92 : * : * : 0
+R: 5 0 : 92 : * : * : 1.9
+R: 5 1 : 92 : * : * : 1.9
+R: 5 2 : 92 : * : * : 1.9
+R: 5 3 : 92 : * : * : 1.9
+R: 5 4 : 92 : * : * : 0
+R: 5 5 : 92 : * : * : 2
+R: 0 0 : 93 : * : * : -0.2
+R: 0 1 : 93 : * : * : -0.2
+R: 0 2 : 93 : * : * : -0.2
+R: 0 3 : 93 : * : * : -0.2
+R: 0 4 : 93 : * : * : -10.1
+R: 0 5 : 93 : * : * : 1.9
+R: 1 0 : 93 : * : * : -0.2
+R: 1 1 : 93 : * : * : -0.2
+R: 1 2 : 93 : * : * : -0.2
+R: 1 3 : 93 : * : * : -0.2
+R: 1 4 : 93 : * : * : -10.1
+R: 1 5 : 93 : * : * : 1.9
+R: 2 0 : 93 : * : * : -0.2
+R: 2 1 : 93 : * : * : -0.2
+R: 2 2 : 93 : * : * : -0.2
+R: 2 3 : 93 : * : * : -0.2
+R: 2 4 : 93 : * : * : -10.1
+R: 2 5 : 93 : * : * : 1.9
+R: 3 0 : 93 : * : * : -0.2
+R: 3 1 : 93 : * : * : -0.2
+R: 3 2 : 93 : * : * : -0.2
+R: 3 3 : 93 : * : * : -0.2
+R: 3 4 : 93 : * : * : -10.1
+R: 3 5 : 93 : * : * : 1.9
+R: 4 0 : 93 : * : * : -10.1
+R: 4 1 : 93 : * : * : -10.1
+R: 4 2 : 93 : * : * : -10.1
+R: 4 3 : 93 : * : * : -10.1
+R: 4 4 : 93 : * : * : 0
+R: 4 5 : 93 : * : * : 0
+R: 5 0 : 93 : * : * : 1.9
+R: 5 1 : 93 : * : * : 1.9
+R: 5 2 : 93 : * : * : 1.9
+R: 5 3 : 93 : * : * : 1.9
+R: 5 4 : 93 : * : * : 0
+R: 5 5 : 93 : * : * : 2
+R: 0 0 : 94 : * : * : -0.2
+R: 0 1 : 94 : * : * : -0.2
+R: 0 2 : 94 : * : * : -0.2
+R: 0 3 : 94 : * : * : -0.2
+R: 0 4 : 94 : * : * : -1.1
+R: 0 5 : 94 : * : * : -1.1
+R: 1 0 : 94 : * : * : -0.2
+R: 1 1 : 94 : * : * : -0.2
+R: 1 2 : 94 : * : * : -0.2
+R: 1 3 : 94 : * : * : -0.2
+R: 1 4 : 94 : * : * : -1.1
+R: 1 5 : 94 : * : * : -1.1
+R: 2 0 : 94 : * : * : -0.2
+R: 2 1 : 94 : * : * : -0.2
+R: 2 2 : 94 : * : * : -0.2
+R: 2 3 : 94 : * : * : -0.2
+R: 2 4 : 94 : * : * : -1.1
+R: 2 5 : 94 : * : * : -1.1
+R: 3 0 : 94 : * : * : -0.2
+R: 3 1 : 94 : * : * : -0.2
+R: 3 2 : 94 : * : * : -0.2
+R: 3 3 : 94 : * : * : -0.2
+R: 3 4 : 94 : * : * : -1.1
+R: 3 5 : 94 : * : * : -1.1
+R: 4 0 : 94 : * : * : -1.1
+R: 4 1 : 94 : * : * : -1.1
+R: 4 2 : 94 : * : * : -1.1
+R: 4 3 : 94 : * : * : -1.1
+R: 4 4 : 94 : * : * : -2
+R: 4 5 : 94 : * : * : -2
+R: 5 0 : 94 : * : * : -1.1
+R: 5 1 : 94 : * : * : -1.1
+R: 5 2 : 94 : * : * : -1.1
+R: 5 3 : 94 : * : * : -1.1
+R: 5 4 : 94 : * : * : -2
+R: 5 5 : 94 : * : * : -2
+R: 0 0 : 95 : * : * : -0.2
+R: 0 1 : 95 : * : * : -0.2
+R: 0 2 : 95 : * : * : -0.2
+R: 0 3 : 95 : * : * : -0.2
+R: 0 4 : 95 : * : * : -1.1
+R: 0 5 : 95 : * : * : -1.1
+R: 1 0 : 95 : * : * : -0.2
+R: 1 1 : 95 : * : * : -0.2
+R: 1 2 : 95 : * : * : -0.2
+R: 1 3 : 95 : * : * : -0.2
+R: 1 4 : 95 : * : * : -1.1
+R: 1 5 : 95 : * : * : -1.1
+R: 2 0 : 95 : * : * : -0.2
+R: 2 1 : 95 : * : * : -0.2
+R: 2 2 : 95 : * : * : -0.2
+R: 2 3 : 95 : * : * : -0.2
+R: 2 4 : 95 : * : * : -1.1
+R: 2 5 : 95 : * : * : -1.1
+R: 3 0 : 95 : * : * : -0.2
+R: 3 1 : 95 : * : * : -0.2
+R: 3 2 : 95 : * : * : -0.2
+R: 3 3 : 95 : * : * : -0.2
+R: 3 4 : 95 : * : * : -1.1
+R: 3 5 : 95 : * : * : -1.1
+R: 4 0 : 95 : * : * : -1.1
+R: 4 1 : 95 : * : * : -1.1
+R: 4 2 : 95 : * : * : -1.1
+R: 4 3 : 95 : * : * : -1.1
+R: 4 4 : 95 : * : * : -2
+R: 4 5 : 95 : * : * : -2
+R: 5 0 : 95 : * : * : -1.1
+R: 5 1 : 95 : * : * : -1.1
+R: 5 2 : 95 : * : * : -1.1
+R: 5 3 : 95 : * : * : -1.1
+R: 5 4 : 95 : * : * : -2
+R: 5 5 : 95 : * : * : -2
+R: 0 0 : 96 : * : * : -0.2
+R: 0 1 : 96 : * : * : -0.2
+R: 0 2 : 96 : * : * : -0.2
+R: 0 3 : 96 : * : * : -0.2
+R: 0 4 : 96 : * : * : -10.1
+R: 0 5 : 96 : * : * : 1.9
+R: 1 0 : 96 : * : * : -0.2
+R: 1 1 : 96 : * : * : -0.2
+R: 1 2 : 96 : * : * : -0.2
+R: 1 3 : 96 : * : * : -0.2
+R: 1 4 : 96 : * : * : -10.1
+R: 1 5 : 96 : * : * : 1.9
+R: 2 0 : 96 : * : * : -0.2
+R: 2 1 : 96 : * : * : -0.2
+R: 2 2 : 96 : * : * : -0.2
+R: 2 3 : 96 : * : * : -0.2
+R: 2 4 : 96 : * : * : -10.1
+R: 2 5 : 96 : * : * : 1.9
+R: 3 0 : 96 : * : * : -0.2
+R: 3 1 : 96 : * : * : -0.2
+R: 3 2 : 96 : * : * : -0.2
+R: 3 3 : 96 : * : * : -0.2
+R: 3 4 : 96 : * : * : -10.1
+R: 3 5 : 96 : * : * : 1.9
+R: 4 0 : 96 : * : * : -10.1
+R: 4 1 : 96 : * : * : -10.1
+R: 4 2 : 96 : * : * : -10.1
+R: 4 3 : 96 : * : * : -10.1
+R: 4 4 : 96 : * : * : 0
+R: 4 5 : 96 : * : * : 0
+R: 5 0 : 96 : * : * : 1.9
+R: 5 1 : 96 : * : * : 1.9
+R: 5 2 : 96 : * : * : 1.9
+R: 5 3 : 96 : * : * : 1.9
+R: 5 4 : 96 : * : * : 4
+R: 5 5 : 96 : * : * : 4
+R: 0 0 : 97 : * : * : -0.2
+R: 0 1 : 97 : * : * : -0.2
+R: 0 2 : 97 : * : * : -0.2
+R: 0 3 : 97 : * : * : -0.2
+R: 0 4 : 97 : * : * : -10.1
+R: 0 5 : 97 : * : * : 1.9
+R: 1 0 : 97 : * : * : -0.2
+R: 1 1 : 97 : * : * : -0.2
+R: 1 2 : 97 : * : * : -0.2
+R: 1 3 : 97 : * : * : -0.2
+R: 1 4 : 97 : * : * : -10.1
+R: 1 5 : 97 : * : * : 1.9
+R: 2 0 : 97 : * : * : -0.2
+R: 2 1 : 97 : * : * : -0.2
+R: 2 2 : 97 : * : * : -0.2
+R: 2 3 : 97 : * : * : -0.2
+R: 2 4 : 97 : * : * : -10.1
+R: 2 5 : 97 : * : * : 1.9
+R: 3 0 : 97 : * : * : -0.2
+R: 3 1 : 97 : * : * : -0.2
+R: 3 2 : 97 : * : * : -0.2
+R: 3 3 : 97 : * : * : -0.2
+R: 3 4 : 97 : * : * : -10.1
+R: 3 5 : 97 : * : * : 1.9
+R: 4 0 : 97 : * : * : -10.1
+R: 4 1 : 97 : * : * : -10.1
+R: 4 2 : 97 : * : * : -10.1
+R: 4 3 : 97 : * : * : -10.1
+R: 4 4 : 97 : * : * : 0
+R: 4 5 : 97 : * : * : 0
+R: 5 0 : 97 : * : * : 1.9
+R: 5 1 : 97 : * : * : 1.9
+R: 5 2 : 97 : * : * : 1.9
+R: 5 3 : 97 : * : * : 1.9
+R: 5 4 : 97 : * : * : 4
+R: 5 5 : 97 : * : * : 4
+R: 0 0 : 98 : * : * : -0.2
+R: 0 1 : 98 : * : * : -0.2
+R: 0 2 : 98 : * : * : -0.2
+R: 0 3 : 98 : * : * : -0.2
+R: 0 4 : 98 : * : * : -10.1
+R: 0 5 : 98 : * : * : 1.9
+R: 1 0 : 98 : * : * : -0.2
+R: 1 1 : 98 : * : * : -0.2
+R: 1 2 : 98 : * : * : -0.2
+R: 1 3 : 98 : * : * : -0.2
+R: 1 4 : 98 : * : * : -10.1
+R: 1 5 : 98 : * : * : 1.9
+R: 2 0 : 98 : * : * : -0.2
+R: 2 1 : 98 : * : * : -0.2
+R: 2 2 : 98 : * : * : -0.2
+R: 2 3 : 98 : * : * : -0.2
+R: 2 4 : 98 : * : * : -10.1
+R: 2 5 : 98 : * : * : 1.9
+R: 3 0 : 98 : * : * : -0.2
+R: 3 1 : 98 : * : * : -0.2
+R: 3 2 : 98 : * : * : -0.2
+R: 3 3 : 98 : * : * : -0.2
+R: 3 4 : 98 : * : * : -10.1
+R: 3 5 : 98 : * : * : 1.9
+R: 4 0 : 98 : * : * : -1.1
+R: 4 1 : 98 : * : * : -1.1
+R: 4 2 : 98 : * : * : -1.1
+R: 4 3 : 98 : * : * : -1.1
+R: 4 4 : 98 : * : * : -11
+R: 4 5 : 98 : * : * : -11
+R: 5 0 : 98 : * : * : -1.1
+R: 5 1 : 98 : * : * : -1.1
+R: 5 2 : 98 : * : * : -1.1
+R: 5 3 : 98 : * : * : -1.1
+R: 5 4 : 98 : * : * : 1
+R: 5 5 : 98 : * : * : 1
+R: 0 0 : 99 : * : * : -0.2
+R: 0 1 : 99 : * : * : -0.2
+R: 0 2 : 99 : * : * : -0.2
+R: 0 3 : 99 : * : * : -0.2
+R: 0 4 : 99 : * : * : -10.1
+R: 0 5 : 99 : * : * : 1.9
+R: 1 0 : 99 : * : * : -0.2
+R: 1 1 : 99 : * : * : -0.2
+R: 1 2 : 99 : * : * : -0.2
+R: 1 3 : 99 : * : * : -0.2
+R: 1 4 : 99 : * : * : -10.1
+R: 1 5 : 99 : * : * : 1.9
+R: 2 0 : 99 : * : * : -0.2
+R: 2 1 : 99 : * : * : -0.2
+R: 2 2 : 99 : * : * : -0.2
+R: 2 3 : 99 : * : * : -0.2
+R: 2 4 : 99 : * : * : -10.1
+R: 2 5 : 99 : * : * : 1.9
+R: 3 0 : 99 : * : * : -0.2
+R: 3 1 : 99 : * : * : -0.2
+R: 3 2 : 99 : * : * : -0.2
+R: 3 3 : 99 : * : * : -0.2
+R: 3 4 : 99 : * : * : -10.1
+R: 3 5 : 99 : * : * : 1.9
+R: 4 0 : 99 : * : * : -1.1
+R: 4 1 : 99 : * : * : -1.1
+R: 4 2 : 99 : * : * : -1.1
+R: 4 3 : 99 : * : * : -1.1
+R: 4 4 : 99 : * : * : -11
+R: 4 5 : 99 : * : * : -11
+R: 5 0 : 99 : * : * : -1.1
+R: 5 1 : 99 : * : * : -1.1
+R: 5 2 : 99 : * : * : -1.1
+R: 5 3 : 99 : * : * : -1.1
+R: 5 4 : 99 : * : * : 1
+R: 5 5 : 99 : * : * : 1
+R: 0 0 : 100 : * : * : -0.2
+R: 0 1 : 100 : * : * : -0.2
+R: 0 2 : 100 : * : * : -0.2
+R: 0 3 : 100 : * : * : -0.2
+R: 0 4 : 100 : * : * : -1.1
+R: 0 5 : 100 : * : * : -1.1
+R: 1 0 : 100 : * : * : -0.2
+R: 1 1 : 100 : * : * : -0.2
+R: 1 2 : 100 : * : * : -0.2
+R: 1 3 : 100 : * : * : -0.2
+R: 1 4 : 100 : * : * : -1.1
+R: 1 5 : 100 : * : * : -1.1
+R: 2 0 : 100 : * : * : -0.2
+R: 2 1 : 100 : * : * : -0.2
+R: 2 2 : 100 : * : * : -0.2
+R: 2 3 : 100 : * : * : -0.2
+R: 2 4 : 100 : * : * : -1.1
+R: 2 5 : 100 : * : * : -1.1
+R: 3 0 : 100 : * : * : -0.2
+R: 3 1 : 100 : * : * : -0.2
+R: 3 2 : 100 : * : * : -0.2
+R: 3 3 : 100 : * : * : -0.2
+R: 3 4 : 100 : * : * : -1.1
+R: 3 5 : 100 : * : * : -1.1
+R: 4 0 : 100 : * : * : -10.1
+R: 4 1 : 100 : * : * : -10.1
+R: 4 2 : 100 : * : * : -10.1
+R: 4 3 : 100 : * : * : -10.1
+R: 4 4 : 100 : * : * : -11
+R: 4 5 : 100 : * : * : -11
+R: 5 0 : 100 : * : * : 1.9
+R: 5 1 : 100 : * : * : 1.9
+R: 5 2 : 100 : * : * : 1.9
+R: 5 3 : 100 : * : * : 1.9
+R: 5 4 : 100 : * : * : 1
+R: 5 5 : 100 : * : * : 1
+R: 0 0 : 101 : * : * : -0.2
+R: 0 1 : 101 : * : * : -0.2
+R: 0 2 : 101 : * : * : -0.2
+R: 0 3 : 101 : * : * : -0.2
+R: 0 4 : 101 : * : * : -1.1
+R: 0 5 : 101 : * : * : -1.1
+R: 1 0 : 101 : * : * : -0.2
+R: 1 1 : 101 : * : * : -0.2
+R: 1 2 : 101 : * : * : -0.2
+R: 1 3 : 101 : * : * : -0.2
+R: 1 4 : 101 : * : * : -1.1
+R: 1 5 : 101 : * : * : -1.1
+R: 2 0 : 101 : * : * : -0.2
+R: 2 1 : 101 : * : * : -0.2
+R: 2 2 : 101 : * : * : -0.2
+R: 2 3 : 101 : * : * : -0.2
+R: 2 4 : 101 : * : * : -1.1
+R: 2 5 : 101 : * : * : -1.1
+R: 3 0 : 101 : * : * : -0.2
+R: 3 1 : 101 : * : * : -0.2
+R: 3 2 : 101 : * : * : -0.2
+R: 3 3 : 101 : * : * : -0.2
+R: 3 4 : 101 : * : * : -1.1
+R: 3 5 : 101 : * : * : -1.1
+R: 4 0 : 101 : * : * : -10.1
+R: 4 1 : 101 : * : * : -10.1
+R: 4 2 : 101 : * : * : -10.1
+R: 4 3 : 101 : * : * : -10.1
+R: 4 4 : 101 : * : * : -11
+R: 4 5 : 101 : * : * : -11
+R: 5 0 : 101 : * : * : 1.9
+R: 5 1 : 101 : * : * : 1.9
+R: 5 2 : 101 : * : * : 1.9
+R: 5 3 : 101 : * : * : 1.9
+R: 5 4 : 101 : * : * : 1
+R: 5 5 : 101 : * : * : 1
+R: 0 0 : 102 : * : * : -0.2
+R: 0 1 : 102 : * : * : -0.2
+R: 0 2 : 102 : * : * : -0.2
+R: 0 3 : 102 : * : * : -0.2
+R: 0 4 : 102 : * : * : -1.1
+R: 0 5 : 102 : * : * : -1.1
+R: 1 0 : 102 : * : * : -0.2
+R: 1 1 : 102 : * : * : -0.2
+R: 1 2 : 102 : * : * : -0.2
+R: 1 3 : 102 : * : * : -0.2
+R: 1 4 : 102 : * : * : -1.1
+R: 1 5 : 102 : * : * : -1.1
+R: 2 0 : 102 : * : * : -0.2
+R: 2 1 : 102 : * : * : -0.2
+R: 2 2 : 102 : * : * : -0.2
+R: 2 3 : 102 : * : * : -0.2
+R: 2 4 : 102 : * : * : -1.1
+R: 2 5 : 102 : * : * : -1.1
+R: 3 0 : 102 : * : * : -0.2
+R: 3 1 : 102 : * : * : -0.2
+R: 3 2 : 102 : * : * : -0.2
+R: 3 3 : 102 : * : * : -0.2
+R: 3 4 : 102 : * : * : -1.1
+R: 3 5 : 102 : * : * : -1.1
+R: 4 0 : 102 : * : * : -1.1
+R: 4 1 : 102 : * : * : -1.1
+R: 4 2 : 102 : * : * : -1.1
+R: 4 3 : 102 : * : * : -1.1
+R: 4 4 : 102 : * : * : -2
+R: 4 5 : 102 : * : * : -2
+R: 5 0 : 102 : * : * : -1.1
+R: 5 1 : 102 : * : * : -1.1
+R: 5 2 : 102 : * : * : -1.1
+R: 5 3 : 102 : * : * : -1.1
+R: 5 4 : 102 : * : * : -2
+R: 5 5 : 102 : * : * : -2
+R: 0 0 : 103 : * : * : -0.2
+R: 0 1 : 103 : * : * : -0.2
+R: 0 2 : 103 : * : * : -0.2
+R: 0 3 : 103 : * : * : -0.2
+R: 0 4 : 103 : * : * : -1.1
+R: 0 5 : 103 : * : * : -1.1
+R: 1 0 : 103 : * : * : -0.2
+R: 1 1 : 103 : * : * : -0.2
+R: 1 2 : 103 : * : * : -0.2
+R: 1 3 : 103 : * : * : -0.2
+R: 1 4 : 103 : * : * : -1.1
+R: 1 5 : 103 : * : * : -1.1
+R: 2 0 : 103 : * : * : -0.2
+R: 2 1 : 103 : * : * : -0.2
+R: 2 2 : 103 : * : * : -0.2
+R: 2 3 : 103 : * : * : -0.2
+R: 2 4 : 103 : * : * : -1.1
+R: 2 5 : 103 : * : * : -1.1
+R: 3 0 : 103 : * : * : -0.2
+R: 3 1 : 103 : * : * : -0.2
+R: 3 2 : 103 : * : * : -0.2
+R: 3 3 : 103 : * : * : -0.2
+R: 3 4 : 103 : * : * : -1.1
+R: 3 5 : 103 : * : * : -1.1
+R: 4 0 : 103 : * : * : -1.1
+R: 4 1 : 103 : * : * : -1.1
+R: 4 2 : 103 : * : * : -1.1
+R: 4 3 : 103 : * : * : -1.1
+R: 4 4 : 103 : * : * : -2
+R: 4 5 : 103 : * : * : -2
+R: 5 0 : 103 : * : * : -1.1
+R: 5 1 : 103 : * : * : -1.1
+R: 5 2 : 103 : * : * : -1.1
+R: 5 3 : 103 : * : * : -1.1
+R: 5 4 : 103 : * : * : -2
+R: 5 5 : 103 : * : * : -2
+R: 0 0 : 104 : * : * : -0.2
+R: 0 1 : 104 : * : * : -0.2
+R: 0 2 : 104 : * : * : -0.2
+R: 0 3 : 104 : * : * : -0.2
+R: 0 4 : 104 : * : * : -10.1
+R: 0 5 : 104 : * : * : 1.9
+R: 1 0 : 104 : * : * : -0.2
+R: 1 1 : 104 : * : * : -0.2
+R: 1 2 : 104 : * : * : -0.2
+R: 1 3 : 104 : * : * : -0.2
+R: 1 4 : 104 : * : * : -10.1
+R: 1 5 : 104 : * : * : 1.9
+R: 2 0 : 104 : * : * : -0.2
+R: 2 1 : 104 : * : * : -0.2
+R: 2 2 : 104 : * : * : -0.2
+R: 2 3 : 104 : * : * : -0.2
+R: 2 4 : 104 : * : * : -10.1
+R: 2 5 : 104 : * : * : 1.9
+R: 3 0 : 104 : * : * : -0.2
+R: 3 1 : 104 : * : * : -0.2
+R: 3 2 : 104 : * : * : -0.2
+R: 3 3 : 104 : * : * : -0.2
+R: 3 4 : 104 : * : * : -10.1
+R: 3 5 : 104 : * : * : 1.9
+R: 4 0 : 104 : * : * : -10.1
+R: 4 1 : 104 : * : * : -10.1
+R: 4 2 : 104 : * : * : -10.1
+R: 4 3 : 104 : * : * : -10.1
+R: 4 4 : 104 : * : * : 0
+R: 4 5 : 104 : * : * : 0
+R: 5 0 : 104 : * : * : 1.9
+R: 5 1 : 104 : * : * : 1.9
+R: 5 2 : 104 : * : * : 1.9
+R: 5 3 : 104 : * : * : 1.9
+R: 5 4 : 104 : * : * : 4
+R: 5 5 : 104 : * : * : 4
+R: 0 0 : 105 : * : * : -0.2
+R: 0 1 : 105 : * : * : -0.2
+R: 0 2 : 105 : * : * : -0.2
+R: 0 3 : 105 : * : * : -0.2
+R: 0 4 : 105 : * : * : -10.1
+R: 0 5 : 105 : * : * : 1.9
+R: 1 0 : 105 : * : * : -0.2
+R: 1 1 : 105 : * : * : -0.2
+R: 1 2 : 105 : * : * : -0.2
+R: 1 3 : 105 : * : * : -0.2
+R: 1 4 : 105 : * : * : -10.1
+R: 1 5 : 105 : * : * : 1.9
+R: 2 0 : 105 : * : * : -0.2
+R: 2 1 : 105 : * : * : -0.2
+R: 2 2 : 105 : * : * : -0.2
+R: 2 3 : 105 : * : * : -0.2
+R: 2 4 : 105 : * : * : -10.1
+R: 2 5 : 105 : * : * : 1.9
+R: 3 0 : 105 : * : * : -0.2
+R: 3 1 : 105 : * : * : -0.2
+R: 3 2 : 105 : * : * : -0.2
+R: 3 3 : 105 : * : * : -0.2
+R: 3 4 : 105 : * : * : -10.1
+R: 3 5 : 105 : * : * : 1.9
+R: 4 0 : 105 : * : * : -10.1
+R: 4 1 : 105 : * : * : -10.1
+R: 4 2 : 105 : * : * : -10.1
+R: 4 3 : 105 : * : * : -10.1
+R: 4 4 : 105 : * : * : 0
+R: 4 5 : 105 : * : * : 0
+R: 5 0 : 105 : * : * : 1.9
+R: 5 1 : 105 : * : * : 1.9
+R: 5 2 : 105 : * : * : 1.9
+R: 5 3 : 105 : * : * : 1.9
+R: 5 4 : 105 : * : * : 4
+R: 5 5 : 105 : * : * : 4
+R: 0 0 : 106 : * : * : -0.2
+R: 0 1 : 106 : * : * : -0.2
+R: 0 2 : 106 : * : * : -0.2
+R: 0 3 : 106 : * : * : -0.2
+R: 0 4 : 106 : * : * : -10.1
+R: 0 5 : 106 : * : * : 1.9
+R: 1 0 : 106 : * : * : -0.2
+R: 1 1 : 106 : * : * : -0.2
+R: 1 2 : 106 : * : * : -0.2
+R: 1 3 : 106 : * : * : -0.2
+R: 1 4 : 106 : * : * : -10.1
+R: 1 5 : 106 : * : * : 1.9
+R: 2 0 : 106 : * : * : -0.2
+R: 2 1 : 106 : * : * : -0.2
+R: 2 2 : 106 : * : * : -0.2
+R: 2 3 : 106 : * : * : -0.2
+R: 2 4 : 106 : * : * : -10.1
+R: 2 5 : 106 : * : * : 1.9
+R: 3 0 : 106 : * : * : -0.2
+R: 3 1 : 106 : * : * : -0.2
+R: 3 2 : 106 : * : * : -0.2
+R: 3 3 : 106 : * : * : -0.2
+R: 3 4 : 106 : * : * : -10.1
+R: 3 5 : 106 : * : * : 1.9
+R: 4 0 : 106 : * : * : -1.1
+R: 4 1 : 106 : * : * : -1.1
+R: 4 2 : 106 : * : * : -1.1
+R: 4 3 : 106 : * : * : -1.1
+R: 4 4 : 106 : * : * : -11
+R: 4 5 : 106 : * : * : -11
+R: 5 0 : 106 : * : * : -1.1
+R: 5 1 : 106 : * : * : -1.1
+R: 5 2 : 106 : * : * : -1.1
+R: 5 3 : 106 : * : * : -1.1
+R: 5 4 : 106 : * : * : 1
+R: 5 5 : 106 : * : * : 1
+R: 0 0 : 107 : * : * : -0.2
+R: 0 1 : 107 : * : * : -0.2
+R: 0 2 : 107 : * : * : -0.2
+R: 0 3 : 107 : * : * : -0.2
+R: 0 4 : 107 : * : * : -10.1
+R: 0 5 : 107 : * : * : 1.9
+R: 1 0 : 107 : * : * : -0.2
+R: 1 1 : 107 : * : * : -0.2
+R: 1 2 : 107 : * : * : -0.2
+R: 1 3 : 107 : * : * : -0.2
+R: 1 4 : 107 : * : * : -10.1
+R: 1 5 : 107 : * : * : 1.9
+R: 2 0 : 107 : * : * : -0.2
+R: 2 1 : 107 : * : * : -0.2
+R: 2 2 : 107 : * : * : -0.2
+R: 2 3 : 107 : * : * : -0.2
+R: 2 4 : 107 : * : * : -10.1
+R: 2 5 : 107 : * : * : 1.9
+R: 3 0 : 107 : * : * : -0.2
+R: 3 1 : 107 : * : * : -0.2
+R: 3 2 : 107 : * : * : -0.2
+R: 3 3 : 107 : * : * : -0.2
+R: 3 4 : 107 : * : * : -10.1
+R: 3 5 : 107 : * : * : 1.9
+R: 4 0 : 107 : * : * : -1.1
+R: 4 1 : 107 : * : * : -1.1
+R: 4 2 : 107 : * : * : -1.1
+R: 4 3 : 107 : * : * : -1.1
+R: 4 4 : 107 : * : * : -11
+R: 4 5 : 107 : * : * : -11
+R: 5 0 : 107 : * : * : -1.1
+R: 5 1 : 107 : * : * : -1.1
+R: 5 2 : 107 : * : * : -1.1
+R: 5 3 : 107 : * : * : -1.1
+R: 5 4 : 107 : * : * : 1
+R: 5 5 : 107 : * : * : 1
+R: 0 0 : 108 : * : * : -0.2
+R: 0 1 : 108 : * : * : -0.2
+R: 0 2 : 108 : * : * : -0.2
+R: 0 3 : 108 : * : * : -0.2
+R: 0 4 : 108 : * : * : -1.1
+R: 0 5 : 108 : * : * : -1.1
+R: 1 0 : 108 : * : * : -0.2
+R: 1 1 : 108 : * : * : -0.2
+R: 1 2 : 108 : * : * : -0.2
+R: 1 3 : 108 : * : * : -0.2
+R: 1 4 : 108 : * : * : -1.1
+R: 1 5 : 108 : * : * : -1.1
+R: 2 0 : 108 : * : * : -0.2
+R: 2 1 : 108 : * : * : -0.2
+R: 2 2 : 108 : * : * : -0.2
+R: 2 3 : 108 : * : * : -0.2
+R: 2 4 : 108 : * : * : -1.1
+R: 2 5 : 108 : * : * : -1.1
+R: 3 0 : 108 : * : * : -0.2
+R: 3 1 : 108 : * : * : -0.2
+R: 3 2 : 108 : * : * : -0.2
+R: 3 3 : 108 : * : * : -0.2
+R: 3 4 : 108 : * : * : -1.1
+R: 3 5 : 108 : * : * : -1.1
+R: 4 0 : 108 : * : * : -10.1
+R: 4 1 : 108 : * : * : -10.1
+R: 4 2 : 108 : * : * : -10.1
+R: 4 3 : 108 : * : * : -10.1
+R: 4 4 : 108 : * : * : -11
+R: 4 5 : 108 : * : * : -11
+R: 5 0 : 108 : * : * : 1.9
+R: 5 1 : 108 : * : * : 1.9
+R: 5 2 : 108 : * : * : 1.9
+R: 5 3 : 108 : * : * : 1.9
+R: 5 4 : 108 : * : * : 1
+R: 5 5 : 108 : * : * : 1
+R: 0 0 : 109 : * : * : -0.2
+R: 0 1 : 109 : * : * : -0.2
+R: 0 2 : 109 : * : * : -0.2
+R: 0 3 : 109 : * : * : -0.2
+R: 0 4 : 109 : * : * : -1.1
+R: 0 5 : 109 : * : * : -1.1
+R: 1 0 : 109 : * : * : -0.2
+R: 1 1 : 109 : * : * : -0.2
+R: 1 2 : 109 : * : * : -0.2
+R: 1 3 : 109 : * : * : -0.2
+R: 1 4 : 109 : * : * : -1.1
+R: 1 5 : 109 : * : * : -1.1
+R: 2 0 : 109 : * : * : -0.2
+R: 2 1 : 109 : * : * : -0.2
+R: 2 2 : 109 : * : * : -0.2
+R: 2 3 : 109 : * : * : -0.2
+R: 2 4 : 109 : * : * : -1.1
+R: 2 5 : 109 : * : * : -1.1
+R: 3 0 : 109 : * : * : -0.2
+R: 3 1 : 109 : * : * : -0.2
+R: 3 2 : 109 : * : * : -0.2
+R: 3 3 : 109 : * : * : -0.2
+R: 3 4 : 109 : * : * : -1.1
+R: 3 5 : 109 : * : * : -1.1
+R: 4 0 : 109 : * : * : -10.1
+R: 4 1 : 109 : * : * : -10.1
+R: 4 2 : 109 : * : * : -10.1
+R: 4 3 : 109 : * : * : -10.1
+R: 4 4 : 109 : * : * : -11
+R: 4 5 : 109 : * : * : -11
+R: 5 0 : 109 : * : * : 1.9
+R: 5 1 : 109 : * : * : 1.9
+R: 5 2 : 109 : * : * : 1.9
+R: 5 3 : 109 : * : * : 1.9
+R: 5 4 : 109 : * : * : 1
+R: 5 5 : 109 : * : * : 1
+R: 0 0 : 110 : * : * : -0.2
+R: 0 1 : 110 : * : * : -0.2
+R: 0 2 : 110 : * : * : -0.2
+R: 0 3 : 110 : * : * : -0.2
+R: 0 4 : 110 : * : * : -1.1
+R: 0 5 : 110 : * : * : -1.1
+R: 1 0 : 110 : * : * : -0.2
+R: 1 1 : 110 : * : * : -0.2
+R: 1 2 : 110 : * : * : -0.2
+R: 1 3 : 110 : * : * : -0.2
+R: 1 4 : 110 : * : * : -1.1
+R: 1 5 : 110 : * : * : -1.1
+R: 2 0 : 110 : * : * : -0.2
+R: 2 1 : 110 : * : * : -0.2
+R: 2 2 : 110 : * : * : -0.2
+R: 2 3 : 110 : * : * : -0.2
+R: 2 4 : 110 : * : * : -1.1
+R: 2 5 : 110 : * : * : -1.1
+R: 3 0 : 110 : * : * : -0.2
+R: 3 1 : 110 : * : * : -0.2
+R: 3 2 : 110 : * : * : -0.2
+R: 3 3 : 110 : * : * : -0.2
+R: 3 4 : 110 : * : * : -1.1
+R: 3 5 : 110 : * : * : -1.1
+R: 4 0 : 110 : * : * : -1.1
+R: 4 1 : 110 : * : * : -1.1
+R: 4 2 : 110 : * : * : -1.1
+R: 4 3 : 110 : * : * : -1.1
+R: 4 4 : 110 : * : * : -2
+R: 4 5 : 110 : * : * : -2
+R: 5 0 : 110 : * : * : -1.1
+R: 5 1 : 110 : * : * : -1.1
+R: 5 2 : 110 : * : * : -1.1
+R: 5 3 : 110 : * : * : -1.1
+R: 5 4 : 110 : * : * : -2
+R: 5 5 : 110 : * : * : -2
+R: 0 0 : 111 : * : * : -0.2
+R: 0 1 : 111 : * : * : -0.2
+R: 0 2 : 111 : * : * : -0.2
+R: 0 3 : 111 : * : * : -0.2
+R: 0 4 : 111 : * : * : -1.1
+R: 0 5 : 111 : * : * : -1.1
+R: 1 0 : 111 : * : * : -0.2
+R: 1 1 : 111 : * : * : -0.2
+R: 1 2 : 111 : * : * : -0.2
+R: 1 3 : 111 : * : * : -0.2
+R: 1 4 : 111 : * : * : -1.1
+R: 1 5 : 111 : * : * : -1.1
+R: 2 0 : 111 : * : * : -0.2
+R: 2 1 : 111 : * : * : -0.2
+R: 2 2 : 111 : * : * : -0.2
+R: 2 3 : 111 : * : * : -0.2
+R: 2 4 : 111 : * : * : -1.1
+R: 2 5 : 111 : * : * : -1.1
+R: 3 0 : 111 : * : * : -0.2
+R: 3 1 : 111 : * : * : -0.2
+R: 3 2 : 111 : * : * : -0.2
+R: 3 3 : 111 : * : * : -0.2
+R: 3 4 : 111 : * : * : -1.1
+R: 3 5 : 111 : * : * : -1.1
+R: 4 0 : 111 : * : * : -1.1
+R: 4 1 : 111 : * : * : -1.1
+R: 4 2 : 111 : * : * : -1.1
+R: 4 3 : 111 : * : * : -1.1
+R: 4 4 : 111 : * : * : -2
+R: 4 5 : 111 : * : * : -2
+R: 5 0 : 111 : * : * : -1.1
+R: 5 1 : 111 : * : * : -1.1
+R: 5 2 : 111 : * : * : -1.1
+R: 5 3 : 111 : * : * : -1.1
+R: 5 4 : 111 : * : * : -2
+R: 5 5 : 111 : * : * : -2
+R: 0 0 : 112 : * : * : -0.2
+R: 0 1 : 112 : * : * : -0.2
+R: 0 2 : 112 : * : * : -0.2
+R: 0 3 : 112 : * : * : -0.2
+R: 0 4 : 112 : * : * : -10.1
+R: 0 5 : 112 : * : * : 1.9
+R: 1 0 : 112 : * : * : -0.2
+R: 1 1 : 112 : * : * : -0.2
+R: 1 2 : 112 : * : * : -0.2
+R: 1 3 : 112 : * : * : -0.2
+R: 1 4 : 112 : * : * : -10.1
+R: 1 5 : 112 : * : * : 1.9
+R: 2 0 : 112 : * : * : -0.2
+R: 2 1 : 112 : * : * : -0.2
+R: 2 2 : 112 : * : * : -0.2
+R: 2 3 : 112 : * : * : -0.2
+R: 2 4 : 112 : * : * : -10.1
+R: 2 5 : 112 : * : * : 1.9
+R: 3 0 : 112 : * : * : -0.2
+R: 3 1 : 112 : * : * : -0.2
+R: 3 2 : 112 : * : * : -0.2
+R: 3 3 : 112 : * : * : -0.2
+R: 3 4 : 112 : * : * : -10.1
+R: 3 5 : 112 : * : * : 1.9
+R: 4 0 : 112 : * : * : -10.1
+R: 4 1 : 112 : * : * : -10.1
+R: 4 2 : 112 : * : * : -10.1
+R: 4 3 : 112 : * : * : -10.1
+R: 4 4 : 112 : * : * : 0
+R: 4 5 : 112 : * : * : 0
+R: 5 0 : 112 : * : * : 1.9
+R: 5 1 : 112 : * : * : 1.9
+R: 5 2 : 112 : * : * : 1.9
+R: 5 3 : 112 : * : * : 1.9
+R: 5 4 : 112 : * : * : 4
+R: 5 5 : 112 : * : * : 4
+R: 0 0 : 113 : * : * : -0.2
+R: 0 1 : 113 : * : * : -0.2
+R: 0 2 : 113 : * : * : -0.2
+R: 0 3 : 113 : * : * : -0.2
+R: 0 4 : 113 : * : * : -10.1
+R: 0 5 : 113 : * : * : 1.9
+R: 1 0 : 113 : * : * : -0.2
+R: 1 1 : 113 : * : * : -0.2
+R: 1 2 : 113 : * : * : -0.2
+R: 1 3 : 113 : * : * : -0.2
+R: 1 4 : 113 : * : * : -10.1
+R: 1 5 : 113 : * : * : 1.9
+R: 2 0 : 113 : * : * : -0.2
+R: 2 1 : 113 : * : * : -0.2
+R: 2 2 : 113 : * : * : -0.2
+R: 2 3 : 113 : * : * : -0.2
+R: 2 4 : 113 : * : * : -10.1
+R: 2 5 : 113 : * : * : 1.9
+R: 3 0 : 113 : * : * : -0.2
+R: 3 1 : 113 : * : * : -0.2
+R: 3 2 : 113 : * : * : -0.2
+R: 3 3 : 113 : * : * : -0.2
+R: 3 4 : 113 : * : * : -10.1
+R: 3 5 : 113 : * : * : 1.9
+R: 4 0 : 113 : * : * : -10.1
+R: 4 1 : 113 : * : * : -10.1
+R: 4 2 : 113 : * : * : -10.1
+R: 4 3 : 113 : * : * : -10.1
+R: 4 4 : 113 : * : * : 0
+R: 4 5 : 113 : * : * : 0
+R: 5 0 : 113 : * : * : 1.9
+R: 5 1 : 113 : * : * : 1.9
+R: 5 2 : 113 : * : * : 1.9
+R: 5 3 : 113 : * : * : 1.9
+R: 5 4 : 113 : * : * : 4
+R: 5 5 : 113 : * : * : 4
+R: 0 0 : 114 : * : * : -0.2
+R: 0 1 : 114 : * : * : -0.2
+R: 0 2 : 114 : * : * : -0.2
+R: 0 3 : 114 : * : * : -0.2
+R: 0 4 : 114 : * : * : -10.1
+R: 0 5 : 114 : * : * : 1.9
+R: 1 0 : 114 : * : * : -0.2
+R: 1 1 : 114 : * : * : -0.2
+R: 1 2 : 114 : * : * : -0.2
+R: 1 3 : 114 : * : * : -0.2
+R: 1 4 : 114 : * : * : -10.1
+R: 1 5 : 114 : * : * : 1.9
+R: 2 0 : 114 : * : * : -0.2
+R: 2 1 : 114 : * : * : -0.2
+R: 2 2 : 114 : * : * : -0.2
+R: 2 3 : 114 : * : * : -0.2
+R: 2 4 : 114 : * : * : -10.1
+R: 2 5 : 114 : * : * : 1.9
+R: 3 0 : 114 : * : * : -0.2
+R: 3 1 : 114 : * : * : -0.2
+R: 3 2 : 114 : * : * : -0.2
+R: 3 3 : 114 : * : * : -0.2
+R: 3 4 : 114 : * : * : -10.1
+R: 3 5 : 114 : * : * : 1.9
+R: 4 0 : 114 : * : * : -1.1
+R: 4 1 : 114 : * : * : -1.1
+R: 4 2 : 114 : * : * : -1.1
+R: 4 3 : 114 : * : * : -1.1
+R: 4 4 : 114 : * : * : -11
+R: 4 5 : 114 : * : * : -11
+R: 5 0 : 114 : * : * : -1.1
+R: 5 1 : 114 : * : * : -1.1
+R: 5 2 : 114 : * : * : -1.1
+R: 5 3 : 114 : * : * : -1.1
+R: 5 4 : 114 : * : * : 1
+R: 5 5 : 114 : * : * : 1
+R: 0 0 : 115 : * : * : -0.2
+R: 0 1 : 115 : * : * : -0.2
+R: 0 2 : 115 : * : * : -0.2
+R: 0 3 : 115 : * : * : -0.2
+R: 0 4 : 115 : * : * : -10.1
+R: 0 5 : 115 : * : * : 1.9
+R: 1 0 : 115 : * : * : -0.2
+R: 1 1 : 115 : * : * : -0.2
+R: 1 2 : 115 : * : * : -0.2
+R: 1 3 : 115 : * : * : -0.2
+R: 1 4 : 115 : * : * : -10.1
+R: 1 5 : 115 : * : * : 1.9
+R: 2 0 : 115 : * : * : -0.2
+R: 2 1 : 115 : * : * : -0.2
+R: 2 2 : 115 : * : * : -0.2
+R: 2 3 : 115 : * : * : -0.2
+R: 2 4 : 115 : * : * : -10.1
+R: 2 5 : 115 : * : * : 1.9
+R: 3 0 : 115 : * : * : -0.2
+R: 3 1 : 115 : * : * : -0.2
+R: 3 2 : 115 : * : * : -0.2
+R: 3 3 : 115 : * : * : -0.2
+R: 3 4 : 115 : * : * : -10.1
+R: 3 5 : 115 : * : * : 1.9
+R: 4 0 : 115 : * : * : -1.1
+R: 4 1 : 115 : * : * : -1.1
+R: 4 2 : 115 : * : * : -1.1
+R: 4 3 : 115 : * : * : -1.1
+R: 4 4 : 115 : * : * : -11
+R: 4 5 : 115 : * : * : -11
+R: 5 0 : 115 : * : * : -1.1
+R: 5 1 : 115 : * : * : -1.1
+R: 5 2 : 115 : * : * : -1.1
+R: 5 3 : 115 : * : * : -1.1
+R: 5 4 : 115 : * : * : 1
+R: 5 5 : 115 : * : * : 1
+R: 0 0 : 116 : * : * : -0.2
+R: 0 1 : 116 : * : * : -0.2
+R: 0 2 : 116 : * : * : -0.2
+R: 0 3 : 116 : * : * : -0.2
+R: 0 4 : 116 : * : * : -10.1
+R: 0 5 : 116 : * : * : 1.9
+R: 1 0 : 116 : * : * : -0.2
+R: 1 1 : 116 : * : * : -0.2
+R: 1 2 : 116 : * : * : -0.2
+R: 1 3 : 116 : * : * : -0.2
+R: 1 4 : 116 : * : * : -10.1
+R: 1 5 : 116 : * : * : 1.9
+R: 2 0 : 116 : * : * : -0.2
+R: 2 1 : 116 : * : * : -0.2
+R: 2 2 : 116 : * : * : -0.2
+R: 2 3 : 116 : * : * : -0.2
+R: 2 4 : 116 : * : * : -10.1
+R: 2 5 : 116 : * : * : 1.9
+R: 3 0 : 116 : * : * : -0.2
+R: 3 1 : 116 : * : * : -0.2
+R: 3 2 : 116 : * : * : -0.2
+R: 3 3 : 116 : * : * : -0.2
+R: 3 4 : 116 : * : * : -10.1
+R: 3 5 : 116 : * : * : 1.9
+R: 4 0 : 116 : * : * : -10.1
+R: 4 1 : 116 : * : * : -10.1
+R: 4 2 : 116 : * : * : -10.1
+R: 4 3 : 116 : * : * : -10.1
+R: 4 4 : 116 : * : * : 0
+R: 4 5 : 116 : * : * : 0
+R: 5 0 : 116 : * : * : 1.9
+R: 5 1 : 116 : * : * : 1.9
+R: 5 2 : 116 : * : * : 1.9
+R: 5 3 : 116 : * : * : 1.9
+R: 5 4 : 116 : * : * : 4
+R: 5 5 : 116 : * : * : 4
+R: 0 0 : 117 : * : * : -0.2
+R: 0 1 : 117 : * : * : -0.2
+R: 0 2 : 117 : * : * : -0.2
+R: 0 3 : 117 : * : * : -0.2
+R: 0 4 : 117 : * : * : -10.1
+R: 0 5 : 117 : * : * : 1.9
+R: 1 0 : 117 : * : * : -0.2
+R: 1 1 : 117 : * : * : -0.2
+R: 1 2 : 117 : * : * : -0.2
+R: 1 3 : 117 : * : * : -0.2
+R: 1 4 : 117 : * : * : -10.1
+R: 1 5 : 117 : * : * : 1.9
+R: 2 0 : 117 : * : * : -0.2
+R: 2 1 : 117 : * : * : -0.2
+R: 2 2 : 117 : * : * : -0.2
+R: 2 3 : 117 : * : * : -0.2
+R: 2 4 : 117 : * : * : -10.1
+R: 2 5 : 117 : * : * : 1.9
+R: 3 0 : 117 : * : * : -0.2
+R: 3 1 : 117 : * : * : -0.2
+R: 3 2 : 117 : * : * : -0.2
+R: 3 3 : 117 : * : * : -0.2
+R: 3 4 : 117 : * : * : -10.1
+R: 3 5 : 117 : * : * : 1.9
+R: 4 0 : 117 : * : * : -10.1
+R: 4 1 : 117 : * : * : -10.1
+R: 4 2 : 117 : * : * : -10.1
+R: 4 3 : 117 : * : * : -10.1
+R: 4 4 : 117 : * : * : 0
+R: 4 5 : 117 : * : * : 0
+R: 5 0 : 117 : * : * : 1.9
+R: 5 1 : 117 : * : * : 1.9
+R: 5 2 : 117 : * : * : 1.9
+R: 5 3 : 117 : * : * : 1.9
+R: 5 4 : 117 : * : * : 4
+R: 5 5 : 117 : * : * : 4
+R: 0 0 : 118 : * : * : -0.2
+R: 0 1 : 118 : * : * : -0.2
+R: 0 2 : 118 : * : * : -0.2
+R: 0 3 : 118 : * : * : -0.2
+R: 0 4 : 118 : * : * : -10.1
+R: 0 5 : 118 : * : * : 1.9
+R: 1 0 : 118 : * : * : -0.2
+R: 1 1 : 118 : * : * : -0.2
+R: 1 2 : 118 : * : * : -0.2
+R: 1 3 : 118 : * : * : -0.2
+R: 1 4 : 118 : * : * : -10.1
+R: 1 5 : 118 : * : * : 1.9
+R: 2 0 : 118 : * : * : -0.2
+R: 2 1 : 118 : * : * : -0.2
+R: 2 2 : 118 : * : * : -0.2
+R: 2 3 : 118 : * : * : -0.2
+R: 2 4 : 118 : * : * : -10.1
+R: 2 5 : 118 : * : * : 1.9
+R: 3 0 : 118 : * : * : -0.2
+R: 3 1 : 118 : * : * : -0.2
+R: 3 2 : 118 : * : * : -0.2
+R: 3 3 : 118 : * : * : -0.2
+R: 3 4 : 118 : * : * : -10.1
+R: 3 5 : 118 : * : * : 1.9
+R: 4 0 : 118 : * : * : -1.1
+R: 4 1 : 118 : * : * : -1.1
+R: 4 2 : 118 : * : * : -1.1
+R: 4 3 : 118 : * : * : -1.1
+R: 4 4 : 118 : * : * : -11
+R: 4 5 : 118 : * : * : -11
+R: 5 0 : 118 : * : * : -1.1
+R: 5 1 : 118 : * : * : -1.1
+R: 5 2 : 118 : * : * : -1.1
+R: 5 3 : 118 : * : * : -1.1
+R: 5 4 : 118 : * : * : 1
+R: 5 5 : 118 : * : * : 1
+R: 0 0 : 119 : * : * : -0.2
+R: 0 1 : 119 : * : * : -0.2
+R: 0 2 : 119 : * : * : -0.2
+R: 0 3 : 119 : * : * : -0.2
+R: 0 4 : 119 : * : * : -10.1
+R: 0 5 : 119 : * : * : 1.9
+R: 1 0 : 119 : * : * : -0.2
+R: 1 1 : 119 : * : * : -0.2
+R: 1 2 : 119 : * : * : -0.2
+R: 1 3 : 119 : * : * : -0.2
+R: 1 4 : 119 : * : * : -10.1
+R: 1 5 : 119 : * : * : 1.9
+R: 2 0 : 119 : * : * : -0.2
+R: 2 1 : 119 : * : * : -0.2
+R: 2 2 : 119 : * : * : -0.2
+R: 2 3 : 119 : * : * : -0.2
+R: 2 4 : 119 : * : * : -10.1
+R: 2 5 : 119 : * : * : 1.9
+R: 3 0 : 119 : * : * : -0.2
+R: 3 1 : 119 : * : * : -0.2
+R: 3 2 : 119 : * : * : -0.2
+R: 3 3 : 119 : * : * : -0.2
+R: 3 4 : 119 : * : * : -10.1
+R: 3 5 : 119 : * : * : 1.9
+R: 4 0 : 119 : * : * : -1.1
+R: 4 1 : 119 : * : * : -1.1
+R: 4 2 : 119 : * : * : -1.1
+R: 4 3 : 119 : * : * : -1.1
+R: 4 4 : 119 : * : * : -11
+R: 4 5 : 119 : * : * : -11
+R: 5 0 : 119 : * : * : -1.1
+R: 5 1 : 119 : * : * : -1.1
+R: 5 2 : 119 : * : * : -1.1
+R: 5 3 : 119 : * : * : -1.1
+R: 5 4 : 119 : * : * : 1
+R: 5 5 : 119 : * : * : 1
+R: 0 0 : 120 : * : * : -0.2
+R: 0 1 : 120 : * : * : -0.2
+R: 0 2 : 120 : * : * : -0.2
+R: 0 3 : 120 : * : * : -0.2
+R: 0 4 : 120 : * : * : -1.1
+R: 0 5 : 120 : * : * : -1.1
+R: 1 0 : 120 : * : * : -0.2
+R: 1 1 : 120 : * : * : -0.2
+R: 1 2 : 120 : * : * : -0.2
+R: 1 3 : 120 : * : * : -0.2
+R: 1 4 : 120 : * : * : -1.1
+R: 1 5 : 120 : * : * : -1.1
+R: 2 0 : 120 : * : * : -0.2
+R: 2 1 : 120 : * : * : -0.2
+R: 2 2 : 120 : * : * : -0.2
+R: 2 3 : 120 : * : * : -0.2
+R: 2 4 : 120 : * : * : -1.1
+R: 2 5 : 120 : * : * : -1.1
+R: 3 0 : 120 : * : * : -0.2
+R: 3 1 : 120 : * : * : -0.2
+R: 3 2 : 120 : * : * : -0.2
+R: 3 3 : 120 : * : * : -0.2
+R: 3 4 : 120 : * : * : -1.1
+R: 3 5 : 120 : * : * : -1.1
+R: 4 0 : 120 : * : * : -10.1
+R: 4 1 : 120 : * : * : -10.1
+R: 4 2 : 120 : * : * : -10.1
+R: 4 3 : 120 : * : * : -10.1
+R: 4 4 : 120 : * : * : -11
+R: 4 5 : 120 : * : * : -11
+R: 5 0 : 120 : * : * : 1.9
+R: 5 1 : 120 : * : * : 1.9
+R: 5 2 : 120 : * : * : 1.9
+R: 5 3 : 120 : * : * : 1.9
+R: 5 4 : 120 : * : * : 1
+R: 5 5 : 120 : * : * : 1
+R: 0 0 : 121 : * : * : -0.2
+R: 0 1 : 121 : * : * : -0.2
+R: 0 2 : 121 : * : * : -0.2
+R: 0 3 : 121 : * : * : -0.2
+R: 0 4 : 121 : * : * : -1.1
+R: 0 5 : 121 : * : * : -1.1
+R: 1 0 : 121 : * : * : -0.2
+R: 1 1 : 121 : * : * : -0.2
+R: 1 2 : 121 : * : * : -0.2
+R: 1 3 : 121 : * : * : -0.2
+R: 1 4 : 121 : * : * : -1.1
+R: 1 5 : 121 : * : * : -1.1
+R: 2 0 : 121 : * : * : -0.2
+R: 2 1 : 121 : * : * : -0.2
+R: 2 2 : 121 : * : * : -0.2
+R: 2 3 : 121 : * : * : -0.2
+R: 2 4 : 121 : * : * : -1.1
+R: 2 5 : 121 : * : * : -1.1
+R: 3 0 : 121 : * : * : -0.2
+R: 3 1 : 121 : * : * : -0.2
+R: 3 2 : 121 : * : * : -0.2
+R: 3 3 : 121 : * : * : -0.2
+R: 3 4 : 121 : * : * : -1.1
+R: 3 5 : 121 : * : * : -1.1
+R: 4 0 : 121 : * : * : -10.1
+R: 4 1 : 121 : * : * : -10.1
+R: 4 2 : 121 : * : * : -10.1
+R: 4 3 : 121 : * : * : -10.1
+R: 4 4 : 121 : * : * : -11
+R: 4 5 : 121 : * : * : -11
+R: 5 0 : 121 : * : * : 1.9
+R: 5 1 : 121 : * : * : 1.9
+R: 5 2 : 121 : * : * : 1.9
+R: 5 3 : 121 : * : * : 1.9
+R: 5 4 : 121 : * : * : 1
+R: 5 5 : 121 : * : * : 1
+R: 0 0 : 122 : * : * : -0.2
+R: 0 1 : 122 : * : * : -0.2
+R: 0 2 : 122 : * : * : -0.2
+R: 0 3 : 122 : * : * : -0.2
+R: 0 4 : 122 : * : * : -1.1
+R: 0 5 : 122 : * : * : -1.1
+R: 1 0 : 122 : * : * : -0.2
+R: 1 1 : 122 : * : * : -0.2
+R: 1 2 : 122 : * : * : -0.2
+R: 1 3 : 122 : * : * : -0.2
+R: 1 4 : 122 : * : * : -1.1
+R: 1 5 : 122 : * : * : -1.1
+R: 2 0 : 122 : * : * : -0.2
+R: 2 1 : 122 : * : * : -0.2
+R: 2 2 : 122 : * : * : -0.2
+R: 2 3 : 122 : * : * : -0.2
+R: 2 4 : 122 : * : * : -1.1
+R: 2 5 : 122 : * : * : -1.1
+R: 3 0 : 122 : * : * : -0.2
+R: 3 1 : 122 : * : * : -0.2
+R: 3 2 : 122 : * : * : -0.2
+R: 3 3 : 122 : * : * : -0.2
+R: 3 4 : 122 : * : * : -1.1
+R: 3 5 : 122 : * : * : -1.1
+R: 4 0 : 122 : * : * : -1.1
+R: 4 1 : 122 : * : * : -1.1
+R: 4 2 : 122 : * : * : -1.1
+R: 4 3 : 122 : * : * : -1.1
+R: 4 4 : 122 : * : * : -2
+R: 4 5 : 122 : * : * : -2
+R: 5 0 : 122 : * : * : -1.1
+R: 5 1 : 122 : * : * : -1.1
+R: 5 2 : 122 : * : * : -1.1
+R: 5 3 : 122 : * : * : -1.1
+R: 5 4 : 122 : * : * : -2
+R: 5 5 : 122 : * : * : -2
+R: 0 0 : 123 : * : * : -0.2
+R: 0 1 : 123 : * : * : -0.2
+R: 0 2 : 123 : * : * : -0.2
+R: 0 3 : 123 : * : * : -0.2
+R: 0 4 : 123 : * : * : -1.1
+R: 0 5 : 123 : * : * : -1.1
+R: 1 0 : 123 : * : * : -0.2
+R: 1 1 : 123 : * : * : -0.2
+R: 1 2 : 123 : * : * : -0.2
+R: 1 3 : 123 : * : * : -0.2
+R: 1 4 : 123 : * : * : -1.1
+R: 1 5 : 123 : * : * : -1.1
+R: 2 0 : 123 : * : * : -0.2
+R: 2 1 : 123 : * : * : -0.2
+R: 2 2 : 123 : * : * : -0.2
+R: 2 3 : 123 : * : * : -0.2
+R: 2 4 : 123 : * : * : -1.1
+R: 2 5 : 123 : * : * : -1.1
+R: 3 0 : 123 : * : * : -0.2
+R: 3 1 : 123 : * : * : -0.2
+R: 3 2 : 123 : * : * : -0.2
+R: 3 3 : 123 : * : * : -0.2
+R: 3 4 : 123 : * : * : -1.1
+R: 3 5 : 123 : * : * : -1.1
+R: 4 0 : 123 : * : * : -1.1
+R: 4 1 : 123 : * : * : -1.1
+R: 4 2 : 123 : * : * : -1.1
+R: 4 3 : 123 : * : * : -1.1
+R: 4 4 : 123 : * : * : -2
+R: 4 5 : 123 : * : * : -2
+R: 5 0 : 123 : * : * : -1.1
+R: 5 1 : 123 : * : * : -1.1
+R: 5 2 : 123 : * : * : -1.1
+R: 5 3 : 123 : * : * : -1.1
+R: 5 4 : 123 : * : * : -2
+R: 5 5 : 123 : * : * : -2
+R: 0 0 : 124 : * : * : -0.2
+R: 0 1 : 124 : * : * : -0.2
+R: 0 2 : 124 : * : * : -0.2
+R: 0 3 : 124 : * : * : -0.2
+R: 0 4 : 124 : * : * : -1.1
+R: 0 5 : 124 : * : * : -1.1
+R: 1 0 : 124 : * : * : -0.2
+R: 1 1 : 124 : * : * : -0.2
+R: 1 2 : 124 : * : * : -0.2
+R: 1 3 : 124 : * : * : -0.2
+R: 1 4 : 124 : * : * : -1.1
+R: 1 5 : 124 : * : * : -1.1
+R: 2 0 : 124 : * : * : -0.2
+R: 2 1 : 124 : * : * : -0.2
+R: 2 2 : 124 : * : * : -0.2
+R: 2 3 : 124 : * : * : -0.2
+R: 2 4 : 124 : * : * : -1.1
+R: 2 5 : 124 : * : * : -1.1
+R: 3 0 : 124 : * : * : -0.2
+R: 3 1 : 124 : * : * : -0.2
+R: 3 2 : 124 : * : * : -0.2
+R: 3 3 : 124 : * : * : -0.2
+R: 3 4 : 124 : * : * : -1.1
+R: 3 5 : 124 : * : * : -1.1
+R: 4 0 : 124 : * : * : -10.1
+R: 4 1 : 124 : * : * : -10.1
+R: 4 2 : 124 : * : * : -10.1
+R: 4 3 : 124 : * : * : -10.1
+R: 4 4 : 124 : * : * : -11
+R: 4 5 : 124 : * : * : -11
+R: 5 0 : 124 : * : * : 1.9
+R: 5 1 : 124 : * : * : 1.9
+R: 5 2 : 124 : * : * : 1.9
+R: 5 3 : 124 : * : * : 1.9
+R: 5 4 : 124 : * : * : 1
+R: 5 5 : 124 : * : * : 1
+R: 0 0 : 125 : * : * : -0.2
+R: 0 1 : 125 : * : * : -0.2
+R: 0 2 : 125 : * : * : -0.2
+R: 0 3 : 125 : * : * : -0.2
+R: 0 4 : 125 : * : * : -1.1
+R: 0 5 : 125 : * : * : -1.1
+R: 1 0 : 125 : * : * : -0.2
+R: 1 1 : 125 : * : * : -0.2
+R: 1 2 : 125 : * : * : -0.2
+R: 1 3 : 125 : * : * : -0.2
+R: 1 4 : 125 : * : * : -1.1
+R: 1 5 : 125 : * : * : -1.1
+R: 2 0 : 125 : * : * : -0.2
+R: 2 1 : 125 : * : * : -0.2
+R: 2 2 : 125 : * : * : -0.2
+R: 2 3 : 125 : * : * : -0.2
+R: 2 4 : 125 : * : * : -1.1
+R: 2 5 : 125 : * : * : -1.1
+R: 3 0 : 125 : * : * : -0.2
+R: 3 1 : 125 : * : * : -0.2
+R: 3 2 : 125 : * : * : -0.2
+R: 3 3 : 125 : * : * : -0.2
+R: 3 4 : 125 : * : * : -1.1
+R: 3 5 : 125 : * : * : -1.1
+R: 4 0 : 125 : * : * : -10.1
+R: 4 1 : 125 : * : * : -10.1
+R: 4 2 : 125 : * : * : -10.1
+R: 4 3 : 125 : * : * : -10.1
+R: 4 4 : 125 : * : * : -11
+R: 4 5 : 125 : * : * : -11
+R: 5 0 : 125 : * : * : 1.9
+R: 5 1 : 125 : * : * : 1.9
+R: 5 2 : 125 : * : * : 1.9
+R: 5 3 : 125 : * : * : 1.9
+R: 5 4 : 125 : * : * : 1
+R: 5 5 : 125 : * : * : 1
+R: 0 0 : 126 : * : * : -0.2
+R: 0 1 : 126 : * : * : -0.2
+R: 0 2 : 126 : * : * : -0.2
+R: 0 3 : 126 : * : * : -0.2
+R: 0 4 : 126 : * : * : -1.1
+R: 0 5 : 126 : * : * : -1.1
+R: 1 0 : 126 : * : * : -0.2
+R: 1 1 : 126 : * : * : -0.2
+R: 1 2 : 126 : * : * : -0.2
+R: 1 3 : 126 : * : * : -0.2
+R: 1 4 : 126 : * : * : -1.1
+R: 1 5 : 126 : * : * : -1.1
+R: 2 0 : 126 : * : * : -0.2
+R: 2 1 : 126 : * : * : -0.2
+R: 2 2 : 126 : * : * : -0.2
+R: 2 3 : 126 : * : * : -0.2
+R: 2 4 : 126 : * : * : -1.1
+R: 2 5 : 126 : * : * : -1.1
+R: 3 0 : 126 : * : * : -0.2
+R: 3 1 : 126 : * : * : -0.2
+R: 3 2 : 126 : * : * : -0.2
+R: 3 3 : 126 : * : * : -0.2
+R: 3 4 : 126 : * : * : -1.1
+R: 3 5 : 126 : * : * : -1.1
+R: 4 0 : 126 : * : * : -1.1
+R: 4 1 : 126 : * : * : -1.1
+R: 4 2 : 126 : * : * : -1.1
+R: 4 3 : 126 : * : * : -1.1
+R: 4 4 : 126 : * : * : -2
+R: 4 5 : 126 : * : * : -2
+R: 5 0 : 126 : * : * : -1.1
+R: 5 1 : 126 : * : * : -1.1
+R: 5 2 : 126 : * : * : -1.1
+R: 5 3 : 126 : * : * : -1.1
+R: 5 4 : 126 : * : * : -2
+R: 5 5 : 126 : * : * : -2
+R: 0 0 : 127 : * : * : -0.2
+R: 0 1 : 127 : * : * : -0.2
+R: 0 2 : 127 : * : * : -0.2
+R: 0 3 : 127 : * : * : -0.2
+R: 0 4 : 127 : * : * : -1.1
+R: 0 5 : 127 : * : * : -1.1
+R: 1 0 : 127 : * : * : -0.2
+R: 1 1 : 127 : * : * : -0.2
+R: 1 2 : 127 : * : * : -0.2
+R: 1 3 : 127 : * : * : -0.2
+R: 1 4 : 127 : * : * : -1.1
+R: 1 5 : 127 : * : * : -1.1
+R: 2 0 : 127 : * : * : -0.2
+R: 2 1 : 127 : * : * : -0.2
+R: 2 2 : 127 : * : * : -0.2
+R: 2 3 : 127 : * : * : -0.2
+R: 2 4 : 127 : * : * : -1.1
+R: 2 5 : 127 : * : * : -1.1
+R: 3 0 : 127 : * : * : -0.2
+R: 3 1 : 127 : * : * : -0.2
+R: 3 2 : 127 : * : * : -0.2
+R: 3 3 : 127 : * : * : -0.2
+R: 3 4 : 127 : * : * : -1.1
+R: 3 5 : 127 : * : * : -1.1
+R: 4 0 : 127 : * : * : -1.1
+R: 4 1 : 127 : * : * : -1.1
+R: 4 2 : 127 : * : * : -1.1
+R: 4 3 : 127 : * : * : -1.1
+R: 4 4 : 127 : * : * : -2
+R: 4 5 : 127 : * : * : -2
+R: 5 0 : 127 : * : * : -1.1
+R: 5 1 : 127 : * : * : -1.1
+R: 5 2 : 127 : * : * : -1.1
+R: 5 3 : 127 : * : * : -1.1
+R: 5 4 : 127 : * : * : -2
+R: 5 5 : 127 : * : * : -2
+R: 0 0 : 128 : * : * : -0.2
+R: 0 1 : 128 : * : * : -0.2
+R: 0 2 : 128 : * : * : -0.2
+R: 0 3 : 128 : * : * : -0.2
+R: 0 4 : 128 : * : * : -10.1
+R: 0 5 : 128 : * : * : 1.9
+R: 1 0 : 128 : * : * : -0.2
+R: 1 1 : 128 : * : * : -0.2
+R: 1 2 : 128 : * : * : -0.2
+R: 1 3 : 128 : * : * : -0.2
+R: 1 4 : 128 : * : * : -10.1
+R: 1 5 : 128 : * : * : 1.9
+R: 2 0 : 128 : * : * : -0.2
+R: 2 1 : 128 : * : * : -0.2
+R: 2 2 : 128 : * : * : -0.2
+R: 2 3 : 128 : * : * : -0.2
+R: 2 4 : 128 : * : * : -10.1
+R: 2 5 : 128 : * : * : 1.9
+R: 3 0 : 128 : * : * : -0.2
+R: 3 1 : 128 : * : * : -0.2
+R: 3 2 : 128 : * : * : -0.2
+R: 3 3 : 128 : * : * : -0.2
+R: 3 4 : 128 : * : * : -10.1
+R: 3 5 : 128 : * : * : 1.9
+R: 4 0 : 128 : * : * : -10.1
+R: 4 1 : 128 : * : * : -10.1
+R: 4 2 : 128 : * : * : -10.1
+R: 4 3 : 128 : * : * : -10.1
+R: 4 4 : 128 : * : * : 0
+R: 4 5 : 128 : * : * : 0
+R: 5 0 : 128 : * : * : 1.9
+R: 5 1 : 128 : * : * : 1.9
+R: 5 2 : 128 : * : * : 1.9
+R: 5 3 : 128 : * : * : 1.9
+R: 5 4 : 128 : * : * : 4
+R: 5 5 : 128 : * : * : 4
+R: 0 0 : 129 : * : * : -0.2
+R: 0 1 : 129 : * : * : -0.2
+R: 0 2 : 129 : * : * : -0.2
+R: 0 3 : 129 : * : * : -0.2
+R: 0 4 : 129 : * : * : -1.1
+R: 0 5 : 129 : * : * : -1.1
+R: 1 0 : 129 : * : * : -0.2
+R: 1 1 : 129 : * : * : -0.2
+R: 1 2 : 129 : * : * : -0.2
+R: 1 3 : 129 : * : * : -0.2
+R: 1 4 : 129 : * : * : -1.1
+R: 1 5 : 129 : * : * : -1.1
+R: 2 0 : 129 : * : * : -0.2
+R: 2 1 : 129 : * : * : -0.2
+R: 2 2 : 129 : * : * : -0.2
+R: 2 3 : 129 : * : * : -0.2
+R: 2 4 : 129 : * : * : -1.1
+R: 2 5 : 129 : * : * : -1.1
+R: 3 0 : 129 : * : * : -0.2
+R: 3 1 : 129 : * : * : -0.2
+R: 3 2 : 129 : * : * : -0.2
+R: 3 3 : 129 : * : * : -0.2
+R: 3 4 : 129 : * : * : -1.1
+R: 3 5 : 129 : * : * : -1.1
+R: 4 0 : 129 : * : * : -10.1
+R: 4 1 : 129 : * : * : -10.1
+R: 4 2 : 129 : * : * : -10.1
+R: 4 3 : 129 : * : * : -10.1
+R: 4 4 : 129 : * : * : -11
+R: 4 5 : 129 : * : * : -11
+R: 5 0 : 129 : * : * : 1.9
+R: 5 1 : 129 : * : * : 1.9
+R: 5 2 : 129 : * : * : 1.9
+R: 5 3 : 129 : * : * : 1.9
+R: 5 4 : 129 : * : * : 1
+R: 5 5 : 129 : * : * : 1
+R: 0 0 : 130 : * : * : -0.2
+R: 0 1 : 130 : * : * : -0.2
+R: 0 2 : 130 : * : * : -0.2
+R: 0 3 : 130 : * : * : -0.2
+R: 0 4 : 130 : * : * : -10.1
+R: 0 5 : 130 : * : * : 1.9
+R: 1 0 : 130 : * : * : -0.2
+R: 1 1 : 130 : * : * : -0.2
+R: 1 2 : 130 : * : * : -0.2
+R: 1 3 : 130 : * : * : -0.2
+R: 1 4 : 130 : * : * : -10.1
+R: 1 5 : 130 : * : * : 1.9
+R: 2 0 : 130 : * : * : -0.2
+R: 2 1 : 130 : * : * : -0.2
+R: 2 2 : 130 : * : * : -0.2
+R: 2 3 : 130 : * : * : -0.2
+R: 2 4 : 130 : * : * : -10.1
+R: 2 5 : 130 : * : * : 1.9
+R: 3 0 : 130 : * : * : -0.2
+R: 3 1 : 130 : * : * : -0.2
+R: 3 2 : 130 : * : * : -0.2
+R: 3 3 : 130 : * : * : -0.2
+R: 3 4 : 130 : * : * : -10.1
+R: 3 5 : 130 : * : * : 1.9
+R: 4 0 : 130 : * : * : -10.1
+R: 4 1 : 130 : * : * : -10.1
+R: 4 2 : 130 : * : * : -10.1
+R: 4 3 : 130 : * : * : -10.1
+R: 4 4 : 130 : * : * : 0
+R: 4 5 : 130 : * : * : 0
+R: 5 0 : 130 : * : * : 1.9
+R: 5 1 : 130 : * : * : 1.9
+R: 5 2 : 130 : * : * : 1.9
+R: 5 3 : 130 : * : * : 1.9
+R: 5 4 : 130 : * : * : 4
+R: 5 5 : 130 : * : * : 4
+R: 0 0 : 131 : * : * : -0.2
+R: 0 1 : 131 : * : * : -0.2
+R: 0 2 : 131 : * : * : -0.2
+R: 0 3 : 131 : * : * : -0.2
+R: 0 4 : 131 : * : * : -1.1
+R: 0 5 : 131 : * : * : -1.1
+R: 1 0 : 131 : * : * : -0.2
+R: 1 1 : 131 : * : * : -0.2
+R: 1 2 : 131 : * : * : -0.2
+R: 1 3 : 131 : * : * : -0.2
+R: 1 4 : 131 : * : * : -1.1
+R: 1 5 : 131 : * : * : -1.1
+R: 2 0 : 131 : * : * : -0.2
+R: 2 1 : 131 : * : * : -0.2
+R: 2 2 : 131 : * : * : -0.2
+R: 2 3 : 131 : * : * : -0.2
+R: 2 4 : 131 : * : * : -1.1
+R: 2 5 : 131 : * : * : -1.1
+R: 3 0 : 131 : * : * : -0.2
+R: 3 1 : 131 : * : * : -0.2
+R: 3 2 : 131 : * : * : -0.2
+R: 3 3 : 131 : * : * : -0.2
+R: 3 4 : 131 : * : * : -1.1
+R: 3 5 : 131 : * : * : -1.1
+R: 4 0 : 131 : * : * : -10.1
+R: 4 1 : 131 : * : * : -10.1
+R: 4 2 : 131 : * : * : -10.1
+R: 4 3 : 131 : * : * : -10.1
+R: 4 4 : 131 : * : * : -11
+R: 4 5 : 131 : * : * : -11
+R: 5 0 : 131 : * : * : 1.9
+R: 5 1 : 131 : * : * : 1.9
+R: 5 2 : 131 : * : * : 1.9
+R: 5 3 : 131 : * : * : 1.9
+R: 5 4 : 131 : * : * : 1
+R: 5 5 : 131 : * : * : 1
+R: 0 0 : 132 : * : * : -0.2
+R: 0 1 : 132 : * : * : -0.2
+R: 0 2 : 132 : * : * : -0.2
+R: 0 3 : 132 : * : * : -0.2
+R: 0 4 : 132 : * : * : -10.1
+R: 0 5 : 132 : * : * : 1.9
+R: 1 0 : 132 : * : * : -0.2
+R: 1 1 : 132 : * : * : -0.2
+R: 1 2 : 132 : * : * : -0.2
+R: 1 3 : 132 : * : * : -0.2
+R: 1 4 : 132 : * : * : -10.1
+R: 1 5 : 132 : * : * : 1.9
+R: 2 0 : 132 : * : * : -0.2
+R: 2 1 : 132 : * : * : -0.2
+R: 2 2 : 132 : * : * : -0.2
+R: 2 3 : 132 : * : * : -0.2
+R: 2 4 : 132 : * : * : -10.1
+R: 2 5 : 132 : * : * : 1.9
+R: 3 0 : 132 : * : * : -0.2
+R: 3 1 : 132 : * : * : -0.2
+R: 3 2 : 132 : * : * : -0.2
+R: 3 3 : 132 : * : * : -0.2
+R: 3 4 : 132 : * : * : -10.1
+R: 3 5 : 132 : * : * : 1.9
+R: 4 0 : 132 : * : * : -1.1
+R: 4 1 : 132 : * : * : -1.1
+R: 4 2 : 132 : * : * : -1.1
+R: 4 3 : 132 : * : * : -1.1
+R: 4 4 : 132 : * : * : -11
+R: 4 5 : 132 : * : * : -11
+R: 5 0 : 132 : * : * : -1.1
+R: 5 1 : 132 : * : * : -1.1
+R: 5 2 : 132 : * : * : -1.1
+R: 5 3 : 132 : * : * : -1.1
+R: 5 4 : 132 : * : * : 1
+R: 5 5 : 132 : * : * : 1
+R: 0 0 : 133 : * : * : -0.2
+R: 0 1 : 133 : * : * : -0.2
+R: 0 2 : 133 : * : * : -0.2
+R: 0 3 : 133 : * : * : -0.2
+R: 0 4 : 133 : * : * : -1.1
+R: 0 5 : 133 : * : * : -1.1
+R: 1 0 : 133 : * : * : -0.2
+R: 1 1 : 133 : * : * : -0.2
+R: 1 2 : 133 : * : * : -0.2
+R: 1 3 : 133 : * : * : -0.2
+R: 1 4 : 133 : * : * : -1.1
+R: 1 5 : 133 : * : * : -1.1
+R: 2 0 : 133 : * : * : -0.2
+R: 2 1 : 133 : * : * : -0.2
+R: 2 2 : 133 : * : * : -0.2
+R: 2 3 : 133 : * : * : -0.2
+R: 2 4 : 133 : * : * : -1.1
+R: 2 5 : 133 : * : * : -1.1
+R: 3 0 : 133 : * : * : -0.2
+R: 3 1 : 133 : * : * : -0.2
+R: 3 2 : 133 : * : * : -0.2
+R: 3 3 : 133 : * : * : -0.2
+R: 3 4 : 133 : * : * : -1.1
+R: 3 5 : 133 : * : * : -1.1
+R: 4 0 : 133 : * : * : -1.1
+R: 4 1 : 133 : * : * : -1.1
+R: 4 2 : 133 : * : * : -1.1
+R: 4 3 : 133 : * : * : -1.1
+R: 4 4 : 133 : * : * : -2
+R: 4 5 : 133 : * : * : -2
+R: 5 0 : 133 : * : * : -1.1
+R: 5 1 : 133 : * : * : -1.1
+R: 5 2 : 133 : * : * : -1.1
+R: 5 3 : 133 : * : * : -1.1
+R: 5 4 : 133 : * : * : -2
+R: 5 5 : 133 : * : * : -2
+R: 0 0 : 134 : * : * : -0.2
+R: 0 1 : 134 : * : * : -0.2
+R: 0 2 : 134 : * : * : -0.2
+R: 0 3 : 134 : * : * : -0.2
+R: 0 4 : 134 : * : * : -10.1
+R: 0 5 : 134 : * : * : 1.9
+R: 1 0 : 134 : * : * : -0.2
+R: 1 1 : 134 : * : * : -0.2
+R: 1 2 : 134 : * : * : -0.2
+R: 1 3 : 134 : * : * : -0.2
+R: 1 4 : 134 : * : * : -10.1
+R: 1 5 : 134 : * : * : 1.9
+R: 2 0 : 134 : * : * : -0.2
+R: 2 1 : 134 : * : * : -0.2
+R: 2 2 : 134 : * : * : -0.2
+R: 2 3 : 134 : * : * : -0.2
+R: 2 4 : 134 : * : * : -10.1
+R: 2 5 : 134 : * : * : 1.9
+R: 3 0 : 134 : * : * : -0.2
+R: 3 1 : 134 : * : * : -0.2
+R: 3 2 : 134 : * : * : -0.2
+R: 3 3 : 134 : * : * : -0.2
+R: 3 4 : 134 : * : * : -10.1
+R: 3 5 : 134 : * : * : 1.9
+R: 4 0 : 134 : * : * : -1.1
+R: 4 1 : 134 : * : * : -1.1
+R: 4 2 : 134 : * : * : -1.1
+R: 4 3 : 134 : * : * : -1.1
+R: 4 4 : 134 : * : * : -11
+R: 4 5 : 134 : * : * : -11
+R: 5 0 : 134 : * : * : -1.1
+R: 5 1 : 134 : * : * : -1.1
+R: 5 2 : 134 : * : * : -1.1
+R: 5 3 : 134 : * : * : -1.1
+R: 5 4 : 134 : * : * : 1
+R: 5 5 : 134 : * : * : 1
+R: 0 0 : 135 : * : * : -0.2
+R: 0 1 : 135 : * : * : -0.2
+R: 0 2 : 135 : * : * : -0.2
+R: 0 3 : 135 : * : * : -0.2
+R: 0 4 : 135 : * : * : -1.1
+R: 0 5 : 135 : * : * : -1.1
+R: 1 0 : 135 : * : * : -0.2
+R: 1 1 : 135 : * : * : -0.2
+R: 1 2 : 135 : * : * : -0.2
+R: 1 3 : 135 : * : * : -0.2
+R: 1 4 : 135 : * : * : -1.1
+R: 1 5 : 135 : * : * : -1.1
+R: 2 0 : 135 : * : * : -0.2
+R: 2 1 : 135 : * : * : -0.2
+R: 2 2 : 135 : * : * : -0.2
+R: 2 3 : 135 : * : * : -0.2
+R: 2 4 : 135 : * : * : -1.1
+R: 2 5 : 135 : * : * : -1.1
+R: 3 0 : 135 : * : * : -0.2
+R: 3 1 : 135 : * : * : -0.2
+R: 3 2 : 135 : * : * : -0.2
+R: 3 3 : 135 : * : * : -0.2
+R: 3 4 : 135 : * : * : -1.1
+R: 3 5 : 135 : * : * : -1.1
+R: 4 0 : 135 : * : * : -1.1
+R: 4 1 : 135 : * : * : -1.1
+R: 4 2 : 135 : * : * : -1.1
+R: 4 3 : 135 : * : * : -1.1
+R: 4 4 : 135 : * : * : -2
+R: 4 5 : 135 : * : * : -2
+R: 5 0 : 135 : * : * : -1.1
+R: 5 1 : 135 : * : * : -1.1
+R: 5 2 : 135 : * : * : -1.1
+R: 5 3 : 135 : * : * : -1.1
+R: 5 4 : 135 : * : * : -2
+R: 5 5 : 135 : * : * : -2
+R: 0 0 : 136 : * : * : -0.2
+R: 0 1 : 136 : * : * : -0.2
+R: 0 2 : 136 : * : * : -0.2
+R: 0 3 : 136 : * : * : -0.2
+R: 0 4 : 136 : * : * : -10.1
+R: 0 5 : 136 : * : * : 1.9
+R: 1 0 : 136 : * : * : -0.2
+R: 1 1 : 136 : * : * : -0.2
+R: 1 2 : 136 : * : * : -0.2
+R: 1 3 : 136 : * : * : -0.2
+R: 1 4 : 136 : * : * : -10.1
+R: 1 5 : 136 : * : * : 1.9
+R: 2 0 : 136 : * : * : -0.2
+R: 2 1 : 136 : * : * : -0.2
+R: 2 2 : 136 : * : * : -0.2
+R: 2 3 : 136 : * : * : -0.2
+R: 2 4 : 136 : * : * : -10.1
+R: 2 5 : 136 : * : * : 1.9
+R: 3 0 : 136 : * : * : -0.2
+R: 3 1 : 136 : * : * : -0.2
+R: 3 2 : 136 : * : * : -0.2
+R: 3 3 : 136 : * : * : -0.2
+R: 3 4 : 136 : * : * : -10.1
+R: 3 5 : 136 : * : * : 1.9
+R: 4 0 : 136 : * : * : -10.1
+R: 4 1 : 136 : * : * : -10.1
+R: 4 2 : 136 : * : * : -10.1
+R: 4 3 : 136 : * : * : -10.1
+R: 4 4 : 136 : * : * : 0
+R: 4 5 : 136 : * : * : 0
+R: 5 0 : 136 : * : * : 1.9
+R: 5 1 : 136 : * : * : 1.9
+R: 5 2 : 136 : * : * : 1.9
+R: 5 3 : 136 : * : * : 1.9
+R: 5 4 : 136 : * : * : 4
+R: 5 5 : 136 : * : * : 4
+R: 0 0 : 137 : * : * : -0.2
+R: 0 1 : 137 : * : * : -0.2
+R: 0 2 : 137 : * : * : -0.2
+R: 0 3 : 137 : * : * : -0.2
+R: 0 4 : 137 : * : * : -1.1
+R: 0 5 : 137 : * : * : -1.1
+R: 1 0 : 137 : * : * : -0.2
+R: 1 1 : 137 : * : * : -0.2
+R: 1 2 : 137 : * : * : -0.2
+R: 1 3 : 137 : * : * : -0.2
+R: 1 4 : 137 : * : * : -1.1
+R: 1 5 : 137 : * : * : -1.1
+R: 2 0 : 137 : * : * : -0.2
+R: 2 1 : 137 : * : * : -0.2
+R: 2 2 : 137 : * : * : -0.2
+R: 2 3 : 137 : * : * : -0.2
+R: 2 4 : 137 : * : * : -1.1
+R: 2 5 : 137 : * : * : -1.1
+R: 3 0 : 137 : * : * : -0.2
+R: 3 1 : 137 : * : * : -0.2
+R: 3 2 : 137 : * : * : -0.2
+R: 3 3 : 137 : * : * : -0.2
+R: 3 4 : 137 : * : * : -1.1
+R: 3 5 : 137 : * : * : -1.1
+R: 4 0 : 137 : * : * : -10.1
+R: 4 1 : 137 : * : * : -10.1
+R: 4 2 : 137 : * : * : -10.1
+R: 4 3 : 137 : * : * : -10.1
+R: 4 4 : 137 : * : * : -11
+R: 4 5 : 137 : * : * : -11
+R: 5 0 : 137 : * : * : 1.9
+R: 5 1 : 137 : * : * : 1.9
+R: 5 2 : 137 : * : * : 1.9
+R: 5 3 : 137 : * : * : 1.9
+R: 5 4 : 137 : * : * : 1
+R: 5 5 : 137 : * : * : 1
+R: 0 0 : 138 : * : * : -0.2
+R: 0 1 : 138 : * : * : -0.2
+R: 0 2 : 138 : * : * : -0.2
+R: 0 3 : 138 : * : * : -0.2
+R: 0 4 : 138 : * : * : -10.1
+R: 0 5 : 138 : * : * : 1.9
+R: 1 0 : 138 : * : * : -0.2
+R: 1 1 : 138 : * : * : -0.2
+R: 1 2 : 138 : * : * : -0.2
+R: 1 3 : 138 : * : * : -0.2
+R: 1 4 : 138 : * : * : -10.1
+R: 1 5 : 138 : * : * : 1.9
+R: 2 0 : 138 : * : * : -0.2
+R: 2 1 : 138 : * : * : -0.2
+R: 2 2 : 138 : * : * : -0.2
+R: 2 3 : 138 : * : * : -0.2
+R: 2 4 : 138 : * : * : -10.1
+R: 2 5 : 138 : * : * : 1.9
+R: 3 0 : 138 : * : * : -0.2
+R: 3 1 : 138 : * : * : -0.2
+R: 3 2 : 138 : * : * : -0.2
+R: 3 3 : 138 : * : * : -0.2
+R: 3 4 : 138 : * : * : -10.1
+R: 3 5 : 138 : * : * : 1.9
+R: 4 0 : 138 : * : * : -10.1
+R: 4 1 : 138 : * : * : -10.1
+R: 4 2 : 138 : * : * : -10.1
+R: 4 3 : 138 : * : * : -10.1
+R: 4 4 : 138 : * : * : 0
+R: 4 5 : 138 : * : * : 0
+R: 5 0 : 138 : * : * : 1.9
+R: 5 1 : 138 : * : * : 1.9
+R: 5 2 : 138 : * : * : 1.9
+R: 5 3 : 138 : * : * : 1.9
+R: 5 4 : 138 : * : * : 4
+R: 5 5 : 138 : * : * : 4
+R: 0 0 : 139 : * : * : -0.2
+R: 0 1 : 139 : * : * : -0.2
+R: 0 2 : 139 : * : * : -0.2
+R: 0 3 : 139 : * : * : -0.2
+R: 0 4 : 139 : * : * : -1.1
+R: 0 5 : 139 : * : * : -1.1
+R: 1 0 : 139 : * : * : -0.2
+R: 1 1 : 139 : * : * : -0.2
+R: 1 2 : 139 : * : * : -0.2
+R: 1 3 : 139 : * : * : -0.2
+R: 1 4 : 139 : * : * : -1.1
+R: 1 5 : 139 : * : * : -1.1
+R: 2 0 : 139 : * : * : -0.2
+R: 2 1 : 139 : * : * : -0.2
+R: 2 2 : 139 : * : * : -0.2
+R: 2 3 : 139 : * : * : -0.2
+R: 2 4 : 139 : * : * : -1.1
+R: 2 5 : 139 : * : * : -1.1
+R: 3 0 : 139 : * : * : -0.2
+R: 3 1 : 139 : * : * : -0.2
+R: 3 2 : 139 : * : * : -0.2
+R: 3 3 : 139 : * : * : -0.2
+R: 3 4 : 139 : * : * : -1.1
+R: 3 5 : 139 : * : * : -1.1
+R: 4 0 : 139 : * : * : -10.1
+R: 4 1 : 139 : * : * : -10.1
+R: 4 2 : 139 : * : * : -10.1
+R: 4 3 : 139 : * : * : -10.1
+R: 4 4 : 139 : * : * : -11
+R: 4 5 : 139 : * : * : -11
+R: 5 0 : 139 : * : * : 1.9
+R: 5 1 : 139 : * : * : 1.9
+R: 5 2 : 139 : * : * : 1.9
+R: 5 3 : 139 : * : * : 1.9
+R: 5 4 : 139 : * : * : 1
+R: 5 5 : 139 : * : * : 1
+R: 0 0 : 140 : * : * : -0.2
+R: 0 1 : 140 : * : * : -0.2
+R: 0 2 : 140 : * : * : -0.2
+R: 0 3 : 140 : * : * : -0.2
+R: 0 4 : 140 : * : * : -10.1
+R: 0 5 : 140 : * : * : 1.9
+R: 1 0 : 140 : * : * : -0.2
+R: 1 1 : 140 : * : * : -0.2
+R: 1 2 : 140 : * : * : -0.2
+R: 1 3 : 140 : * : * : -0.2
+R: 1 4 : 140 : * : * : -10.1
+R: 1 5 : 140 : * : * : 1.9
+R: 2 0 : 140 : * : * : -0.2
+R: 2 1 : 140 : * : * : -0.2
+R: 2 2 : 140 : * : * : -0.2
+R: 2 3 : 140 : * : * : -0.2
+R: 2 4 : 140 : * : * : -10.1
+R: 2 5 : 140 : * : * : 1.9
+R: 3 0 : 140 : * : * : -0.2
+R: 3 1 : 140 : * : * : -0.2
+R: 3 2 : 140 : * : * : -0.2
+R: 3 3 : 140 : * : * : -0.2
+R: 3 4 : 140 : * : * : -10.1
+R: 3 5 : 140 : * : * : 1.9
+R: 4 0 : 140 : * : * : -1.1
+R: 4 1 : 140 : * : * : -1.1
+R: 4 2 : 140 : * : * : -1.1
+R: 4 3 : 140 : * : * : -1.1
+R: 4 4 : 140 : * : * : -11
+R: 4 5 : 140 : * : * : -11
+R: 5 0 : 140 : * : * : -1.1
+R: 5 1 : 140 : * : * : -1.1
+R: 5 2 : 140 : * : * : -1.1
+R: 5 3 : 140 : * : * : -1.1
+R: 5 4 : 140 : * : * : 1
+R: 5 5 : 140 : * : * : 1
+R: 0 0 : 141 : * : * : -0.2
+R: 0 1 : 141 : * : * : -0.2
+R: 0 2 : 141 : * : * : -0.2
+R: 0 3 : 141 : * : * : -0.2
+R: 0 4 : 141 : * : * : -1.1
+R: 0 5 : 141 : * : * : -1.1
+R: 1 0 : 141 : * : * : -0.2
+R: 1 1 : 141 : * : * : -0.2
+R: 1 2 : 141 : * : * : -0.2
+R: 1 3 : 141 : * : * : -0.2
+R: 1 4 : 141 : * : * : -1.1
+R: 1 5 : 141 : * : * : -1.1
+R: 2 0 : 141 : * : * : -0.2
+R: 2 1 : 141 : * : * : -0.2
+R: 2 2 : 141 : * : * : -0.2
+R: 2 3 : 141 : * : * : -0.2
+R: 2 4 : 141 : * : * : -1.1
+R: 2 5 : 141 : * : * : -1.1
+R: 3 0 : 141 : * : * : -0.2
+R: 3 1 : 141 : * : * : -0.2
+R: 3 2 : 141 : * : * : -0.2
+R: 3 3 : 141 : * : * : -0.2
+R: 3 4 : 141 : * : * : -1.1
+R: 3 5 : 141 : * : * : -1.1
+R: 4 0 : 141 : * : * : -1.1
+R: 4 1 : 141 : * : * : -1.1
+R: 4 2 : 141 : * : * : -1.1
+R: 4 3 : 141 : * : * : -1.1
+R: 4 4 : 141 : * : * : -2
+R: 4 5 : 141 : * : * : -2
+R: 5 0 : 141 : * : * : -1.1
+R: 5 1 : 141 : * : * : -1.1
+R: 5 2 : 141 : * : * : -1.1
+R: 5 3 : 141 : * : * : -1.1
+R: 5 4 : 141 : * : * : -2
+R: 5 5 : 141 : * : * : -2
+R: 0 0 : 142 : * : * : -0.2
+R: 0 1 : 142 : * : * : -0.2
+R: 0 2 : 142 : * : * : -0.2
+R: 0 3 : 142 : * : * : -0.2
+R: 0 4 : 142 : * : * : -10.1
+R: 0 5 : 142 : * : * : 1.9
+R: 1 0 : 142 : * : * : -0.2
+R: 1 1 : 142 : * : * : -0.2
+R: 1 2 : 142 : * : * : -0.2
+R: 1 3 : 142 : * : * : -0.2
+R: 1 4 : 142 : * : * : -10.1
+R: 1 5 : 142 : * : * : 1.9
+R: 2 0 : 142 : * : * : -0.2
+R: 2 1 : 142 : * : * : -0.2
+R: 2 2 : 142 : * : * : -0.2
+R: 2 3 : 142 : * : * : -0.2
+R: 2 4 : 142 : * : * : -10.1
+R: 2 5 : 142 : * : * : 1.9
+R: 3 0 : 142 : * : * : -0.2
+R: 3 1 : 142 : * : * : -0.2
+R: 3 2 : 142 : * : * : -0.2
+R: 3 3 : 142 : * : * : -0.2
+R: 3 4 : 142 : * : * : -10.1
+R: 3 5 : 142 : * : * : 1.9
+R: 4 0 : 142 : * : * : -1.1
+R: 4 1 : 142 : * : * : -1.1
+R: 4 2 : 142 : * : * : -1.1
+R: 4 3 : 142 : * : * : -1.1
+R: 4 4 : 142 : * : * : -11
+R: 4 5 : 142 : * : * : -11
+R: 5 0 : 142 : * : * : -1.1
+R: 5 1 : 142 : * : * : -1.1
+R: 5 2 : 142 : * : * : -1.1
+R: 5 3 : 142 : * : * : -1.1
+R: 5 4 : 142 : * : * : 1
+R: 5 5 : 142 : * : * : 1
+R: 0 0 : 143 : * : * : -0.2
+R: 0 1 : 143 : * : * : -0.2
+R: 0 2 : 143 : * : * : -0.2
+R: 0 3 : 143 : * : * : -0.2
+R: 0 4 : 143 : * : * : -1.1
+R: 0 5 : 143 : * : * : -1.1
+R: 1 0 : 143 : * : * : -0.2
+R: 1 1 : 143 : * : * : -0.2
+R: 1 2 : 143 : * : * : -0.2
+R: 1 3 : 143 : * : * : -0.2
+R: 1 4 : 143 : * : * : -1.1
+R: 1 5 : 143 : * : * : -1.1
+R: 2 0 : 143 : * : * : -0.2
+R: 2 1 : 143 : * : * : -0.2
+R: 2 2 : 143 : * : * : -0.2
+R: 2 3 : 143 : * : * : -0.2
+R: 2 4 : 143 : * : * : -1.1
+R: 2 5 : 143 : * : * : -1.1
+R: 3 0 : 143 : * : * : -0.2
+R: 3 1 : 143 : * : * : -0.2
+R: 3 2 : 143 : * : * : -0.2
+R: 3 3 : 143 : * : * : -0.2
+R: 3 4 : 143 : * : * : -1.1
+R: 3 5 : 143 : * : * : -1.1
+R: 4 0 : 143 : * : * : -1.1
+R: 4 1 : 143 : * : * : -1.1
+R: 4 2 : 143 : * : * : -1.1
+R: 4 3 : 143 : * : * : -1.1
+R: 4 4 : 143 : * : * : -2
+R: 4 5 : 143 : * : * : -2
+R: 5 0 : 143 : * : * : -1.1
+R: 5 1 : 143 : * : * : -1.1
+R: 5 2 : 143 : * : * : -1.1
+R: 5 3 : 143 : * : * : -1.1
+R: 5 4 : 143 : * : * : -2
+R: 5 5 : 143 : * : * : -2
+R: 0 0 : 144 : * : * : -0.2
+R: 0 1 : 144 : * : * : -0.2
+R: 0 2 : 144 : * : * : -0.2
+R: 0 3 : 144 : * : * : -0.2
+R: 0 4 : 144 : * : * : -10.1
+R: 0 5 : 144 : * : * : 1.9
+R: 1 0 : 144 : * : * : -0.2
+R: 1 1 : 144 : * : * : -0.2
+R: 1 2 : 144 : * : * : -0.2
+R: 1 3 : 144 : * : * : -0.2
+R: 1 4 : 144 : * : * : -10.1
+R: 1 5 : 144 : * : * : 1.9
+R: 2 0 : 144 : * : * : -0.2
+R: 2 1 : 144 : * : * : -0.2
+R: 2 2 : 144 : * : * : -0.2
+R: 2 3 : 144 : * : * : -0.2
+R: 2 4 : 144 : * : * : -10.1
+R: 2 5 : 144 : * : * : 1.9
+R: 3 0 : 144 : * : * : -0.2
+R: 3 1 : 144 : * : * : -0.2
+R: 3 2 : 144 : * : * : -0.2
+R: 3 3 : 144 : * : * : -0.2
+R: 3 4 : 144 : * : * : -10.1
+R: 3 5 : 144 : * : * : 1.9
+R: 4 0 : 144 : * : * : -10.1
+R: 4 1 : 144 : * : * : -10.1
+R: 4 2 : 144 : * : * : -10.1
+R: 4 3 : 144 : * : * : -10.1
+R: 4 4 : 144 : * : * : 0
+R: 4 5 : 144 : * : * : 0
+R: 5 0 : 144 : * : * : 1.9
+R: 5 1 : 144 : * : * : 1.9
+R: 5 2 : 144 : * : * : 1.9
+R: 5 3 : 144 : * : * : 1.9
+R: 5 4 : 144 : * : * : 4
+R: 5 5 : 144 : * : * : 4
+R: 0 0 : 145 : * : * : -0.2
+R: 0 1 : 145 : * : * : -0.2
+R: 0 2 : 145 : * : * : -0.2
+R: 0 3 : 145 : * : * : -0.2
+R: 0 4 : 145 : * : * : -10.1
+R: 0 5 : 145 : * : * : 1.9
+R: 1 0 : 145 : * : * : -0.2
+R: 1 1 : 145 : * : * : -0.2
+R: 1 2 : 145 : * : * : -0.2
+R: 1 3 : 145 : * : * : -0.2
+R: 1 4 : 145 : * : * : -10.1
+R: 1 5 : 145 : * : * : 1.9
+R: 2 0 : 145 : * : * : -0.2
+R: 2 1 : 145 : * : * : -0.2
+R: 2 2 : 145 : * : * : -0.2
+R: 2 3 : 145 : * : * : -0.2
+R: 2 4 : 145 : * : * : -10.1
+R: 2 5 : 145 : * : * : 1.9
+R: 3 0 : 145 : * : * : -0.2
+R: 3 1 : 145 : * : * : -0.2
+R: 3 2 : 145 : * : * : -0.2
+R: 3 3 : 145 : * : * : -0.2
+R: 3 4 : 145 : * : * : -10.1
+R: 3 5 : 145 : * : * : 1.9
+R: 4 0 : 145 : * : * : -10.1
+R: 4 1 : 145 : * : * : -10.1
+R: 4 2 : 145 : * : * : -10.1
+R: 4 3 : 145 : * : * : -10.1
+R: 4 4 : 145 : * : * : 0
+R: 4 5 : 145 : * : * : 0
+R: 5 0 : 145 : * : * : 1.9
+R: 5 1 : 145 : * : * : 1.9
+R: 5 2 : 145 : * : * : 1.9
+R: 5 3 : 145 : * : * : 1.9
+R: 5 4 : 145 : * : * : 4
+R: 5 5 : 145 : * : * : 4
+R: 0 0 : 146 : * : * : -0.2
+R: 0 1 : 146 : * : * : -0.2
+R: 0 2 : 146 : * : * : -0.2
+R: 0 3 : 146 : * : * : -0.2
+R: 0 4 : 146 : * : * : -1.1
+R: 0 5 : 146 : * : * : -1.1
+R: 1 0 : 146 : * : * : -0.2
+R: 1 1 : 146 : * : * : -0.2
+R: 1 2 : 146 : * : * : -0.2
+R: 1 3 : 146 : * : * : -0.2
+R: 1 4 : 146 : * : * : -1.1
+R: 1 5 : 146 : * : * : -1.1
+R: 2 0 : 146 : * : * : -0.2
+R: 2 1 : 146 : * : * : -0.2
+R: 2 2 : 146 : * : * : -0.2
+R: 2 3 : 146 : * : * : -0.2
+R: 2 4 : 146 : * : * : -1.1
+R: 2 5 : 146 : * : * : -1.1
+R: 3 0 : 146 : * : * : -0.2
+R: 3 1 : 146 : * : * : -0.2
+R: 3 2 : 146 : * : * : -0.2
+R: 3 3 : 146 : * : * : -0.2
+R: 3 4 : 146 : * : * : -1.1
+R: 3 5 : 146 : * : * : -1.1
+R: 4 0 : 146 : * : * : -10.1
+R: 4 1 : 146 : * : * : -10.1
+R: 4 2 : 146 : * : * : -10.1
+R: 4 3 : 146 : * : * : -10.1
+R: 4 4 : 146 : * : * : -11
+R: 4 5 : 146 : * : * : -11
+R: 5 0 : 146 : * : * : 1.9
+R: 5 1 : 146 : * : * : 1.9
+R: 5 2 : 146 : * : * : 1.9
+R: 5 3 : 146 : * : * : 1.9
+R: 5 4 : 146 : * : * : 1
+R: 5 5 : 146 : * : * : 1
+R: 0 0 : 147 : * : * : -0.2
+R: 0 1 : 147 : * : * : -0.2
+R: 0 2 : 147 : * : * : -0.2
+R: 0 3 : 147 : * : * : -0.2
+R: 0 4 : 147 : * : * : -1.1
+R: 0 5 : 147 : * : * : -1.1
+R: 1 0 : 147 : * : * : -0.2
+R: 1 1 : 147 : * : * : -0.2
+R: 1 2 : 147 : * : * : -0.2
+R: 1 3 : 147 : * : * : -0.2
+R: 1 4 : 147 : * : * : -1.1
+R: 1 5 : 147 : * : * : -1.1
+R: 2 0 : 147 : * : * : -0.2
+R: 2 1 : 147 : * : * : -0.2
+R: 2 2 : 147 : * : * : -0.2
+R: 2 3 : 147 : * : * : -0.2
+R: 2 4 : 147 : * : * : -1.1
+R: 2 5 : 147 : * : * : -1.1
+R: 3 0 : 147 : * : * : -0.2
+R: 3 1 : 147 : * : * : -0.2
+R: 3 2 : 147 : * : * : -0.2
+R: 3 3 : 147 : * : * : -0.2
+R: 3 4 : 147 : * : * : -1.1
+R: 3 5 : 147 : * : * : -1.1
+R: 4 0 : 147 : * : * : -10.1
+R: 4 1 : 147 : * : * : -10.1
+R: 4 2 : 147 : * : * : -10.1
+R: 4 3 : 147 : * : * : -10.1
+R: 4 4 : 147 : * : * : -11
+R: 4 5 : 147 : * : * : -11
+R: 5 0 : 147 : * : * : 1.9
+R: 5 1 : 147 : * : * : 1.9
+R: 5 2 : 147 : * : * : 1.9
+R: 5 3 : 147 : * : * : 1.9
+R: 5 4 : 147 : * : * : 1
+R: 5 5 : 147 : * : * : 1
+R: 0 0 : 148 : * : * : -0.2
+R: 0 1 : 148 : * : * : -0.2
+R: 0 2 : 148 : * : * : -0.2
+R: 0 3 : 148 : * : * : -0.2
+R: 0 4 : 148 : * : * : -10.1
+R: 0 5 : 148 : * : * : 1.9
+R: 1 0 : 148 : * : * : -0.2
+R: 1 1 : 148 : * : * : -0.2
+R: 1 2 : 148 : * : * : -0.2
+R: 1 3 : 148 : * : * : -0.2
+R: 1 4 : 148 : * : * : -10.1
+R: 1 5 : 148 : * : * : 1.9
+R: 2 0 : 148 : * : * : -0.2
+R: 2 1 : 148 : * : * : -0.2
+R: 2 2 : 148 : * : * : -0.2
+R: 2 3 : 148 : * : * : -0.2
+R: 2 4 : 148 : * : * : -10.1
+R: 2 5 : 148 : * : * : 1.9
+R: 3 0 : 148 : * : * : -0.2
+R: 3 1 : 148 : * : * : -0.2
+R: 3 2 : 148 : * : * : -0.2
+R: 3 3 : 148 : * : * : -0.2
+R: 3 4 : 148 : * : * : -10.1
+R: 3 5 : 148 : * : * : 1.9
+R: 4 0 : 148 : * : * : -1.1
+R: 4 1 : 148 : * : * : -1.1
+R: 4 2 : 148 : * : * : -1.1
+R: 4 3 : 148 : * : * : -1.1
+R: 4 4 : 148 : * : * : -11
+R: 4 5 : 148 : * : * : -11
+R: 5 0 : 148 : * : * : -1.1
+R: 5 1 : 148 : * : * : -1.1
+R: 5 2 : 148 : * : * : -1.1
+R: 5 3 : 148 : * : * : -1.1
+R: 5 4 : 148 : * : * : 1
+R: 5 5 : 148 : * : * : 1
+R: 0 0 : 149 : * : * : -0.2
+R: 0 1 : 149 : * : * : -0.2
+R: 0 2 : 149 : * : * : -0.2
+R: 0 3 : 149 : * : * : -0.2
+R: 0 4 : 149 : * : * : -10.1
+R: 0 5 : 149 : * : * : 1.9
+R: 1 0 : 149 : * : * : -0.2
+R: 1 1 : 149 : * : * : -0.2
+R: 1 2 : 149 : * : * : -0.2
+R: 1 3 : 149 : * : * : -0.2
+R: 1 4 : 149 : * : * : -10.1
+R: 1 5 : 149 : * : * : 1.9
+R: 2 0 : 149 : * : * : -0.2
+R: 2 1 : 149 : * : * : -0.2
+R: 2 2 : 149 : * : * : -0.2
+R: 2 3 : 149 : * : * : -0.2
+R: 2 4 : 149 : * : * : -10.1
+R: 2 5 : 149 : * : * : 1.9
+R: 3 0 : 149 : * : * : -0.2
+R: 3 1 : 149 : * : * : -0.2
+R: 3 2 : 149 : * : * : -0.2
+R: 3 3 : 149 : * : * : -0.2
+R: 3 4 : 149 : * : * : -10.1
+R: 3 5 : 149 : * : * : 1.9
+R: 4 0 : 149 : * : * : -1.1
+R: 4 1 : 149 : * : * : -1.1
+R: 4 2 : 149 : * : * : -1.1
+R: 4 3 : 149 : * : * : -1.1
+R: 4 4 : 149 : * : * : -11
+R: 4 5 : 149 : * : * : -11
+R: 5 0 : 149 : * : * : -1.1
+R: 5 1 : 149 : * : * : -1.1
+R: 5 2 : 149 : * : * : -1.1
+R: 5 3 : 149 : * : * : -1.1
+R: 5 4 : 149 : * : * : 1
+R: 5 5 : 149 : * : * : 1
+R: 0 0 : 150 : * : * : -0.2
+R: 0 1 : 150 : * : * : -0.2
+R: 0 2 : 150 : * : * : -0.2
+R: 0 3 : 150 : * : * : -0.2
+R: 0 4 : 150 : * : * : -1.1
+R: 0 5 : 150 : * : * : -1.1
+R: 1 0 : 150 : * : * : -0.2
+R: 1 1 : 150 : * : * : -0.2
+R: 1 2 : 150 : * : * : -0.2
+R: 1 3 : 150 : * : * : -0.2
+R: 1 4 : 150 : * : * : -1.1
+R: 1 5 : 150 : * : * : -1.1
+R: 2 0 : 150 : * : * : -0.2
+R: 2 1 : 150 : * : * : -0.2
+R: 2 2 : 150 : * : * : -0.2
+R: 2 3 : 150 : * : * : -0.2
+R: 2 4 : 150 : * : * : -1.1
+R: 2 5 : 150 : * : * : -1.1
+R: 3 0 : 150 : * : * : -0.2
+R: 3 1 : 150 : * : * : -0.2
+R: 3 2 : 150 : * : * : -0.2
+R: 3 3 : 150 : * : * : -0.2
+R: 3 4 : 150 : * : * : -1.1
+R: 3 5 : 150 : * : * : -1.1
+R: 4 0 : 150 : * : * : -1.1
+R: 4 1 : 150 : * : * : -1.1
+R: 4 2 : 150 : * : * : -1.1
+R: 4 3 : 150 : * : * : -1.1
+R: 4 4 : 150 : * : * : -2
+R: 4 5 : 150 : * : * : -2
+R: 5 0 : 150 : * : * : -1.1
+R: 5 1 : 150 : * : * : -1.1
+R: 5 2 : 150 : * : * : -1.1
+R: 5 3 : 150 : * : * : -1.1
+R: 5 4 : 150 : * : * : -2
+R: 5 5 : 150 : * : * : -2
+R: 0 0 : 151 : * : * : -0.2
+R: 0 1 : 151 : * : * : -0.2
+R: 0 2 : 151 : * : * : -0.2
+R: 0 3 : 151 : * : * : -0.2
+R: 0 4 : 151 : * : * : -1.1
+R: 0 5 : 151 : * : * : -1.1
+R: 1 0 : 151 : * : * : -0.2
+R: 1 1 : 151 : * : * : -0.2
+R: 1 2 : 151 : * : * : -0.2
+R: 1 3 : 151 : * : * : -0.2
+R: 1 4 : 151 : * : * : -1.1
+R: 1 5 : 151 : * : * : -1.1
+R: 2 0 : 151 : * : * : -0.2
+R: 2 1 : 151 : * : * : -0.2
+R: 2 2 : 151 : * : * : -0.2
+R: 2 3 : 151 : * : * : -0.2
+R: 2 4 : 151 : * : * : -1.1
+R: 2 5 : 151 : * : * : -1.1
+R: 3 0 : 151 : * : * : -0.2
+R: 3 1 : 151 : * : * : -0.2
+R: 3 2 : 151 : * : * : -0.2
+R: 3 3 : 151 : * : * : -0.2
+R: 3 4 : 151 : * : * : -1.1
+R: 3 5 : 151 : * : * : -1.1
+R: 4 0 : 151 : * : * : -1.1
+R: 4 1 : 151 : * : * : -1.1
+R: 4 2 : 151 : * : * : -1.1
+R: 4 3 : 151 : * : * : -1.1
+R: 4 4 : 151 : * : * : -2
+R: 4 5 : 151 : * : * : -2
+R: 5 0 : 151 : * : * : -1.1
+R: 5 1 : 151 : * : * : -1.1
+R: 5 2 : 151 : * : * : -1.1
+R: 5 3 : 151 : * : * : -1.1
+R: 5 4 : 151 : * : * : -2
+R: 5 5 : 151 : * : * : -2
+R: 0 0 : 152 : * : * : -0.2
+R: 0 1 : 152 : * : * : -0.2
+R: 0 2 : 152 : * : * : -0.2
+R: 0 3 : 152 : * : * : -0.2
+R: 0 4 : 152 : * : * : -10.1
+R: 0 5 : 152 : * : * : 1.9
+R: 1 0 : 152 : * : * : -0.2
+R: 1 1 : 152 : * : * : -0.2
+R: 1 2 : 152 : * : * : -0.2
+R: 1 3 : 152 : * : * : -0.2
+R: 1 4 : 152 : * : * : -10.1
+R: 1 5 : 152 : * : * : 1.9
+R: 2 0 : 152 : * : * : -0.2
+R: 2 1 : 152 : * : * : -0.2
+R: 2 2 : 152 : * : * : -0.2
+R: 2 3 : 152 : * : * : -0.2
+R: 2 4 : 152 : * : * : -10.1
+R: 2 5 : 152 : * : * : 1.9
+R: 3 0 : 152 : * : * : -0.2
+R: 3 1 : 152 : * : * : -0.2
+R: 3 2 : 152 : * : * : -0.2
+R: 3 3 : 152 : * : * : -0.2
+R: 3 4 : 152 : * : * : -10.1
+R: 3 5 : 152 : * : * : 1.9
+R: 4 0 : 152 : * : * : -10.1
+R: 4 1 : 152 : * : * : -10.1
+R: 4 2 : 152 : * : * : -10.1
+R: 4 3 : 152 : * : * : -10.1
+R: 4 4 : 152 : * : * : 0
+R: 4 5 : 152 : * : * : 0
+R: 5 0 : 152 : * : * : 1.9
+R: 5 1 : 152 : * : * : 1.9
+R: 5 2 : 152 : * : * : 1.9
+R: 5 3 : 152 : * : * : 1.9
+R: 5 4 : 152 : * : * : 4
+R: 5 5 : 152 : * : * : 4
+R: 0 0 : 153 : * : * : -0.2
+R: 0 1 : 153 : * : * : -0.2
+R: 0 2 : 153 : * : * : -0.2
+R: 0 3 : 153 : * : * : -0.2
+R: 0 4 : 153 : * : * : -10.1
+R: 0 5 : 153 : * : * : 1.9
+R: 1 0 : 153 : * : * : -0.2
+R: 1 1 : 153 : * : * : -0.2
+R: 1 2 : 153 : * : * : -0.2
+R: 1 3 : 153 : * : * : -0.2
+R: 1 4 : 153 : * : * : -10.1
+R: 1 5 : 153 : * : * : 1.9
+R: 2 0 : 153 : * : * : -0.2
+R: 2 1 : 153 : * : * : -0.2
+R: 2 2 : 153 : * : * : -0.2
+R: 2 3 : 153 : * : * : -0.2
+R: 2 4 : 153 : * : * : -10.1
+R: 2 5 : 153 : * : * : 1.9
+R: 3 0 : 153 : * : * : -0.2
+R: 3 1 : 153 : * : * : -0.2
+R: 3 2 : 153 : * : * : -0.2
+R: 3 3 : 153 : * : * : -0.2
+R: 3 4 : 153 : * : * : -10.1
+R: 3 5 : 153 : * : * : 1.9
+R: 4 0 : 153 : * : * : -10.1
+R: 4 1 : 153 : * : * : -10.1
+R: 4 2 : 153 : * : * : -10.1
+R: 4 3 : 153 : * : * : -10.1
+R: 4 4 : 153 : * : * : 0
+R: 4 5 : 153 : * : * : 0
+R: 5 0 : 153 : * : * : 1.9
+R: 5 1 : 153 : * : * : 1.9
+R: 5 2 : 153 : * : * : 1.9
+R: 5 3 : 153 : * : * : 1.9
+R: 5 4 : 153 : * : * : 4
+R: 5 5 : 153 : * : * : 4
+R: 0 0 : 154 : * : * : -0.2
+R: 0 1 : 154 : * : * : -0.2
+R: 0 2 : 154 : * : * : -0.2
+R: 0 3 : 154 : * : * : -0.2
+R: 0 4 : 154 : * : * : -1.1
+R: 0 5 : 154 : * : * : -1.1
+R: 1 0 : 154 : * : * : -0.2
+R: 1 1 : 154 : * : * : -0.2
+R: 1 2 : 154 : * : * : -0.2
+R: 1 3 : 154 : * : * : -0.2
+R: 1 4 : 154 : * : * : -1.1
+R: 1 5 : 154 : * : * : -1.1
+R: 2 0 : 154 : * : * : -0.2
+R: 2 1 : 154 : * : * : -0.2
+R: 2 2 : 154 : * : * : -0.2
+R: 2 3 : 154 : * : * : -0.2
+R: 2 4 : 154 : * : * : -1.1
+R: 2 5 : 154 : * : * : -1.1
+R: 3 0 : 154 : * : * : -0.2
+R: 3 1 : 154 : * : * : -0.2
+R: 3 2 : 154 : * : * : -0.2
+R: 3 3 : 154 : * : * : -0.2
+R: 3 4 : 154 : * : * : -1.1
+R: 3 5 : 154 : * : * : -1.1
+R: 4 0 : 154 : * : * : -10.1
+R: 4 1 : 154 : * : * : -10.1
+R: 4 2 : 154 : * : * : -10.1
+R: 4 3 : 154 : * : * : -10.1
+R: 4 4 : 154 : * : * : -11
+R: 4 5 : 154 : * : * : -11
+R: 5 0 : 154 : * : * : 1.9
+R: 5 1 : 154 : * : * : 1.9
+R: 5 2 : 154 : * : * : 1.9
+R: 5 3 : 154 : * : * : 1.9
+R: 5 4 : 154 : * : * : 1
+R: 5 5 : 154 : * : * : 1
+R: 0 0 : 155 : * : * : -0.2
+R: 0 1 : 155 : * : * : -0.2
+R: 0 2 : 155 : * : * : -0.2
+R: 0 3 : 155 : * : * : -0.2
+R: 0 4 : 155 : * : * : -1.1
+R: 0 5 : 155 : * : * : -1.1
+R: 1 0 : 155 : * : * : -0.2
+R: 1 1 : 155 : * : * : -0.2
+R: 1 2 : 155 : * : * : -0.2
+R: 1 3 : 155 : * : * : -0.2
+R: 1 4 : 155 : * : * : -1.1
+R: 1 5 : 155 : * : * : -1.1
+R: 2 0 : 155 : * : * : -0.2
+R: 2 1 : 155 : * : * : -0.2
+R: 2 2 : 155 : * : * : -0.2
+R: 2 3 : 155 : * : * : -0.2
+R: 2 4 : 155 : * : * : -1.1
+R: 2 5 : 155 : * : * : -1.1
+R: 3 0 : 155 : * : * : -0.2
+R: 3 1 : 155 : * : * : -0.2
+R: 3 2 : 155 : * : * : -0.2
+R: 3 3 : 155 : * : * : -0.2
+R: 3 4 : 155 : * : * : -1.1
+R: 3 5 : 155 : * : * : -1.1
+R: 4 0 : 155 : * : * : -10.1
+R: 4 1 : 155 : * : * : -10.1
+R: 4 2 : 155 : * : * : -10.1
+R: 4 3 : 155 : * : * : -10.1
+R: 4 4 : 155 : * : * : -11
+R: 4 5 : 155 : * : * : -11
+R: 5 0 : 155 : * : * : 1.9
+R: 5 1 : 155 : * : * : 1.9
+R: 5 2 : 155 : * : * : 1.9
+R: 5 3 : 155 : * : * : 1.9
+R: 5 4 : 155 : * : * : 1
+R: 5 5 : 155 : * : * : 1
+R: 0 0 : 156 : * : * : -0.2
+R: 0 1 : 156 : * : * : -0.2
+R: 0 2 : 156 : * : * : -0.2
+R: 0 3 : 156 : * : * : -0.2
+R: 0 4 : 156 : * : * : -10.1
+R: 0 5 : 156 : * : * : 1.9
+R: 1 0 : 156 : * : * : -0.2
+R: 1 1 : 156 : * : * : -0.2
+R: 1 2 : 156 : * : * : -0.2
+R: 1 3 : 156 : * : * : -0.2
+R: 1 4 : 156 : * : * : -10.1
+R: 1 5 : 156 : * : * : 1.9
+R: 2 0 : 156 : * : * : -0.2
+R: 2 1 : 156 : * : * : -0.2
+R: 2 2 : 156 : * : * : -0.2
+R: 2 3 : 156 : * : * : -0.2
+R: 2 4 : 156 : * : * : -10.1
+R: 2 5 : 156 : * : * : 1.9
+R: 3 0 : 156 : * : * : -0.2
+R: 3 1 : 156 : * : * : -0.2
+R: 3 2 : 156 : * : * : -0.2
+R: 3 3 : 156 : * : * : -0.2
+R: 3 4 : 156 : * : * : -10.1
+R: 3 5 : 156 : * : * : 1.9
+R: 4 0 : 156 : * : * : -1.1
+R: 4 1 : 156 : * : * : -1.1
+R: 4 2 : 156 : * : * : -1.1
+R: 4 3 : 156 : * : * : -1.1
+R: 4 4 : 156 : * : * : -11
+R: 4 5 : 156 : * : * : -11
+R: 5 0 : 156 : * : * : -1.1
+R: 5 1 : 156 : * : * : -1.1
+R: 5 2 : 156 : * : * : -1.1
+R: 5 3 : 156 : * : * : -1.1
+R: 5 4 : 156 : * : * : 1
+R: 5 5 : 156 : * : * : 1
+R: 0 0 : 157 : * : * : -0.2
+R: 0 1 : 157 : * : * : -0.2
+R: 0 2 : 157 : * : * : -0.2
+R: 0 3 : 157 : * : * : -0.2
+R: 0 4 : 157 : * : * : -10.1
+R: 0 5 : 157 : * : * : 1.9
+R: 1 0 : 157 : * : * : -0.2
+R: 1 1 : 157 : * : * : -0.2
+R: 1 2 : 157 : * : * : -0.2
+R: 1 3 : 157 : * : * : -0.2
+R: 1 4 : 157 : * : * : -10.1
+R: 1 5 : 157 : * : * : 1.9
+R: 2 0 : 157 : * : * : -0.2
+R: 2 1 : 157 : * : * : -0.2
+R: 2 2 : 157 : * : * : -0.2
+R: 2 3 : 157 : * : * : -0.2
+R: 2 4 : 157 : * : * : -10.1
+R: 2 5 : 157 : * : * : 1.9
+R: 3 0 : 157 : * : * : -0.2
+R: 3 1 : 157 : * : * : -0.2
+R: 3 2 : 157 : * : * : -0.2
+R: 3 3 : 157 : * : * : -0.2
+R: 3 4 : 157 : * : * : -10.1
+R: 3 5 : 157 : * : * : 1.9
+R: 4 0 : 157 : * : * : -1.1
+R: 4 1 : 157 : * : * : -1.1
+R: 4 2 : 157 : * : * : -1.1
+R: 4 3 : 157 : * : * : -1.1
+R: 4 4 : 157 : * : * : -11
+R: 4 5 : 157 : * : * : -11
+R: 5 0 : 157 : * : * : -1.1
+R: 5 1 : 157 : * : * : -1.1
+R: 5 2 : 157 : * : * : -1.1
+R: 5 3 : 157 : * : * : -1.1
+R: 5 4 : 157 : * : * : 1
+R: 5 5 : 157 : * : * : 1
+R: 0 0 : 158 : * : * : -0.2
+R: 0 1 : 158 : * : * : -0.2
+R: 0 2 : 158 : * : * : -0.2
+R: 0 3 : 158 : * : * : -0.2
+R: 0 4 : 158 : * : * : -1.1
+R: 0 5 : 158 : * : * : -1.1
+R: 1 0 : 158 : * : * : -0.2
+R: 1 1 : 158 : * : * : -0.2
+R: 1 2 : 158 : * : * : -0.2
+R: 1 3 : 158 : * : * : -0.2
+R: 1 4 : 158 : * : * : -1.1
+R: 1 5 : 158 : * : * : -1.1
+R: 2 0 : 158 : * : * : -0.2
+R: 2 1 : 158 : * : * : -0.2
+R: 2 2 : 158 : * : * : -0.2
+R: 2 3 : 158 : * : * : -0.2
+R: 2 4 : 158 : * : * : -1.1
+R: 2 5 : 158 : * : * : -1.1
+R: 3 0 : 158 : * : * : -0.2
+R: 3 1 : 158 : * : * : -0.2
+R: 3 2 : 158 : * : * : -0.2
+R: 3 3 : 158 : * : * : -0.2
+R: 3 4 : 158 : * : * : -1.1
+R: 3 5 : 158 : * : * : -1.1
+R: 4 0 : 158 : * : * : -1.1
+R: 4 1 : 158 : * : * : -1.1
+R: 4 2 : 158 : * : * : -1.1
+R: 4 3 : 158 : * : * : -1.1
+R: 4 4 : 158 : * : * : -2
+R: 4 5 : 158 : * : * : -2
+R: 5 0 : 158 : * : * : -1.1
+R: 5 1 : 158 : * : * : -1.1
+R: 5 2 : 158 : * : * : -1.1
+R: 5 3 : 158 : * : * : -1.1
+R: 5 4 : 158 : * : * : -2
+R: 5 5 : 158 : * : * : -2
+R: 0 0 : 159 : * : * : -0.2
+R: 0 1 : 159 : * : * : -0.2
+R: 0 2 : 159 : * : * : -0.2
+R: 0 3 : 159 : * : * : -0.2
+R: 0 4 : 159 : * : * : -1.1
+R: 0 5 : 159 : * : * : -1.1
+R: 1 0 : 159 : * : * : -0.2
+R: 1 1 : 159 : * : * : -0.2
+R: 1 2 : 159 : * : * : -0.2
+R: 1 3 : 159 : * : * : -0.2
+R: 1 4 : 159 : * : * : -1.1
+R: 1 5 : 159 : * : * : -1.1
+R: 2 0 : 159 : * : * : -0.2
+R: 2 1 : 159 : * : * : -0.2
+R: 2 2 : 159 : * : * : -0.2
+R: 2 3 : 159 : * : * : -0.2
+R: 2 4 : 159 : * : * : -1.1
+R: 2 5 : 159 : * : * : -1.1
+R: 3 0 : 159 : * : * : -0.2
+R: 3 1 : 159 : * : * : -0.2
+R: 3 2 : 159 : * : * : -0.2
+R: 3 3 : 159 : * : * : -0.2
+R: 3 4 : 159 : * : * : -1.1
+R: 3 5 : 159 : * : * : -1.1
+R: 4 0 : 159 : * : * : -1.1
+R: 4 1 : 159 : * : * : -1.1
+R: 4 2 : 159 : * : * : -1.1
+R: 4 3 : 159 : * : * : -1.1
+R: 4 4 : 159 : * : * : -2
+R: 4 5 : 159 : * : * : -2
+R: 5 0 : 159 : * : * : -1.1
+R: 5 1 : 159 : * : * : -1.1
+R: 5 2 : 159 : * : * : -1.1
+R: 5 3 : 159 : * : * : -1.1
+R: 5 4 : 159 : * : * : -2
+R: 5 5 : 159 : * : * : -2
+R: 0 0 : 160 : * : * : -0.2
+R: 0 1 : 160 : * : * : -0.2
+R: 0 2 : 160 : * : * : -0.2
+R: 0 3 : 160 : * : * : -0.2
+R: 0 4 : 160 : * : * : -10.1
+R: 0 5 : 160 : * : * : 1.9
+R: 1 0 : 160 : * : * : -0.2
+R: 1 1 : 160 : * : * : -0.2
+R: 1 2 : 160 : * : * : -0.2
+R: 1 3 : 160 : * : * : -0.2
+R: 1 4 : 160 : * : * : -10.1
+R: 1 5 : 160 : * : * : 1.9
+R: 2 0 : 160 : * : * : -0.2
+R: 2 1 : 160 : * : * : -0.2
+R: 2 2 : 160 : * : * : -0.2
+R: 2 3 : 160 : * : * : -0.2
+R: 2 4 : 160 : * : * : -10.1
+R: 2 5 : 160 : * : * : 1.9
+R: 3 0 : 160 : * : * : -0.2
+R: 3 1 : 160 : * : * : -0.2
+R: 3 2 : 160 : * : * : -0.2
+R: 3 3 : 160 : * : * : -0.2
+R: 3 4 : 160 : * : * : -10.1
+R: 3 5 : 160 : * : * : 1.9
+R: 4 0 : 160 : * : * : -10.1
+R: 4 1 : 160 : * : * : -10.1
+R: 4 2 : 160 : * : * : -10.1
+R: 4 3 : 160 : * : * : -10.1
+R: 4 4 : 160 : * : * : 0
+R: 4 5 : 160 : * : * : 0
+R: 5 0 : 160 : * : * : 1.9
+R: 5 1 : 160 : * : * : 1.9
+R: 5 2 : 160 : * : * : 1.9
+R: 5 3 : 160 : * : * : 1.9
+R: 5 4 : 160 : * : * : 0
+R: 5 5 : 160 : * : * : 2
+R: 0 0 : 161 : * : * : -0.2
+R: 0 1 : 161 : * : * : -0.2
+R: 0 2 : 161 : * : * : -0.2
+R: 0 3 : 161 : * : * : -0.2
+R: 0 4 : 161 : * : * : -10.1
+R: 0 5 : 161 : * : * : 1.9
+R: 1 0 : 161 : * : * : -0.2
+R: 1 1 : 161 : * : * : -0.2
+R: 1 2 : 161 : * : * : -0.2
+R: 1 3 : 161 : * : * : -0.2
+R: 1 4 : 161 : * : * : -10.1
+R: 1 5 : 161 : * : * : 1.9
+R: 2 0 : 161 : * : * : -0.2
+R: 2 1 : 161 : * : * : -0.2
+R: 2 2 : 161 : * : * : -0.2
+R: 2 3 : 161 : * : * : -0.2
+R: 2 4 : 161 : * : * : -10.1
+R: 2 5 : 161 : * : * : 1.9
+R: 3 0 : 161 : * : * : -0.2
+R: 3 1 : 161 : * : * : -0.2
+R: 3 2 : 161 : * : * : -0.2
+R: 3 3 : 161 : * : * : -0.2
+R: 3 4 : 161 : * : * : -10.1
+R: 3 5 : 161 : * : * : 1.9
+R: 4 0 : 161 : * : * : -10.1
+R: 4 1 : 161 : * : * : -10.1
+R: 4 2 : 161 : * : * : -10.1
+R: 4 3 : 161 : * : * : -10.1
+R: 4 4 : 161 : * : * : 0
+R: 4 5 : 161 : * : * : 0
+R: 5 0 : 161 : * : * : 1.9
+R: 5 1 : 161 : * : * : 1.9
+R: 5 2 : 161 : * : * : 1.9
+R: 5 3 : 161 : * : * : 1.9
+R: 5 4 : 161 : * : * : 0
+R: 5 5 : 161 : * : * : 2
+R: 0 0 : 162 : * : * : -0.2
+R: 0 1 : 162 : * : * : -0.2
+R: 0 2 : 162 : * : * : -0.2
+R: 0 3 : 162 : * : * : -0.2
+R: 0 4 : 162 : * : * : -10.1
+R: 0 5 : 162 : * : * : 1.9
+R: 1 0 : 162 : * : * : -0.2
+R: 1 1 : 162 : * : * : -0.2
+R: 1 2 : 162 : * : * : -0.2
+R: 1 3 : 162 : * : * : -0.2
+R: 1 4 : 162 : * : * : -10.1
+R: 1 5 : 162 : * : * : 1.9
+R: 2 0 : 162 : * : * : -0.2
+R: 2 1 : 162 : * : * : -0.2
+R: 2 2 : 162 : * : * : -0.2
+R: 2 3 : 162 : * : * : -0.2
+R: 2 4 : 162 : * : * : -10.1
+R: 2 5 : 162 : * : * : 1.9
+R: 3 0 : 162 : * : * : -0.2
+R: 3 1 : 162 : * : * : -0.2
+R: 3 2 : 162 : * : * : -0.2
+R: 3 3 : 162 : * : * : -0.2
+R: 3 4 : 162 : * : * : -10.1
+R: 3 5 : 162 : * : * : 1.9
+R: 4 0 : 162 : * : * : -10.1
+R: 4 1 : 162 : * : * : -10.1
+R: 4 2 : 162 : * : * : -10.1
+R: 4 3 : 162 : * : * : -10.1
+R: 4 4 : 162 : * : * : 0
+R: 4 5 : 162 : * : * : 0
+R: 5 0 : 162 : * : * : 1.9
+R: 5 1 : 162 : * : * : 1.9
+R: 5 2 : 162 : * : * : 1.9
+R: 5 3 : 162 : * : * : 1.9
+R: 5 4 : 162 : * : * : 0
+R: 5 5 : 162 : * : * : 2
+R: 0 0 : 163 : * : * : -0.2
+R: 0 1 : 163 : * : * : -0.2
+R: 0 2 : 163 : * : * : -0.2
+R: 0 3 : 163 : * : * : -0.2
+R: 0 4 : 163 : * : * : -10.1
+R: 0 5 : 163 : * : * : 1.9
+R: 1 0 : 163 : * : * : -0.2
+R: 1 1 : 163 : * : * : -0.2
+R: 1 2 : 163 : * : * : -0.2
+R: 1 3 : 163 : * : * : -0.2
+R: 1 4 : 163 : * : * : -10.1
+R: 1 5 : 163 : * : * : 1.9
+R: 2 0 : 163 : * : * : -0.2
+R: 2 1 : 163 : * : * : -0.2
+R: 2 2 : 163 : * : * : -0.2
+R: 2 3 : 163 : * : * : -0.2
+R: 2 4 : 163 : * : * : -10.1
+R: 2 5 : 163 : * : * : 1.9
+R: 3 0 : 163 : * : * : -0.2
+R: 3 1 : 163 : * : * : -0.2
+R: 3 2 : 163 : * : * : -0.2
+R: 3 3 : 163 : * : * : -0.2
+R: 3 4 : 163 : * : * : -10.1
+R: 3 5 : 163 : * : * : 1.9
+R: 4 0 : 163 : * : * : -10.1
+R: 4 1 : 163 : * : * : -10.1
+R: 4 2 : 163 : * : * : -10.1
+R: 4 3 : 163 : * : * : -10.1
+R: 4 4 : 163 : * : * : 0
+R: 4 5 : 163 : * : * : 0
+R: 5 0 : 163 : * : * : 1.9
+R: 5 1 : 163 : * : * : 1.9
+R: 5 2 : 163 : * : * : 1.9
+R: 5 3 : 163 : * : * : 1.9
+R: 5 4 : 163 : * : * : 0
+R: 5 5 : 163 : * : * : 2
+R: 0 0 : 164 : * : * : -0.2
+R: 0 1 : 164 : * : * : -0.2
+R: 0 2 : 164 : * : * : -0.2
+R: 0 3 : 164 : * : * : -0.2
+R: 0 4 : 164 : * : * : -1.1
+R: 0 5 : 164 : * : * : -1.1
+R: 1 0 : 164 : * : * : -0.2
+R: 1 1 : 164 : * : * : -0.2
+R: 1 2 : 164 : * : * : -0.2
+R: 1 3 : 164 : * : * : -0.2
+R: 1 4 : 164 : * : * : -1.1
+R: 1 5 : 164 : * : * : -1.1
+R: 2 0 : 164 : * : * : -0.2
+R: 2 1 : 164 : * : * : -0.2
+R: 2 2 : 164 : * : * : -0.2
+R: 2 3 : 164 : * : * : -0.2
+R: 2 4 : 164 : * : * : -1.1
+R: 2 5 : 164 : * : * : -1.1
+R: 3 0 : 164 : * : * : -0.2
+R: 3 1 : 164 : * : * : -0.2
+R: 3 2 : 164 : * : * : -0.2
+R: 3 3 : 164 : * : * : -0.2
+R: 3 4 : 164 : * : * : -1.1
+R: 3 5 : 164 : * : * : -1.1
+R: 4 0 : 164 : * : * : -1.1
+R: 4 1 : 164 : * : * : -1.1
+R: 4 2 : 164 : * : * : -1.1
+R: 4 3 : 164 : * : * : -1.1
+R: 4 4 : 164 : * : * : -2
+R: 4 5 : 164 : * : * : -2
+R: 5 0 : 164 : * : * : -1.1
+R: 5 1 : 164 : * : * : -1.1
+R: 5 2 : 164 : * : * : -1.1
+R: 5 3 : 164 : * : * : -1.1
+R: 5 4 : 164 : * : * : -2
+R: 5 5 : 164 : * : * : -2
+R: 0 0 : 165 : * : * : -0.2
+R: 0 1 : 165 : * : * : -0.2
+R: 0 2 : 165 : * : * : -0.2
+R: 0 3 : 165 : * : * : -0.2
+R: 0 4 : 165 : * : * : -1.1
+R: 0 5 : 165 : * : * : -1.1
+R: 1 0 : 165 : * : * : -0.2
+R: 1 1 : 165 : * : * : -0.2
+R: 1 2 : 165 : * : * : -0.2
+R: 1 3 : 165 : * : * : -0.2
+R: 1 4 : 165 : * : * : -1.1
+R: 1 5 : 165 : * : * : -1.1
+R: 2 0 : 165 : * : * : -0.2
+R: 2 1 : 165 : * : * : -0.2
+R: 2 2 : 165 : * : * : -0.2
+R: 2 3 : 165 : * : * : -0.2
+R: 2 4 : 165 : * : * : -1.1
+R: 2 5 : 165 : * : * : -1.1
+R: 3 0 : 165 : * : * : -0.2
+R: 3 1 : 165 : * : * : -0.2
+R: 3 2 : 165 : * : * : -0.2
+R: 3 3 : 165 : * : * : -0.2
+R: 3 4 : 165 : * : * : -1.1
+R: 3 5 : 165 : * : * : -1.1
+R: 4 0 : 165 : * : * : -1.1
+R: 4 1 : 165 : * : * : -1.1
+R: 4 2 : 165 : * : * : -1.1
+R: 4 3 : 165 : * : * : -1.1
+R: 4 4 : 165 : * : * : -2
+R: 4 5 : 165 : * : * : -2
+R: 5 0 : 165 : * : * : -1.1
+R: 5 1 : 165 : * : * : -1.1
+R: 5 2 : 165 : * : * : -1.1
+R: 5 3 : 165 : * : * : -1.1
+R: 5 4 : 165 : * : * : -2
+R: 5 5 : 165 : * : * : -2
+R: 0 0 : 166 : * : * : -0.2
+R: 0 1 : 166 : * : * : -0.2
+R: 0 2 : 166 : * : * : -0.2
+R: 0 3 : 166 : * : * : -0.2
+R: 0 4 : 166 : * : * : -1.1
+R: 0 5 : 166 : * : * : -1.1
+R: 1 0 : 166 : * : * : -0.2
+R: 1 1 : 166 : * : * : -0.2
+R: 1 2 : 166 : * : * : -0.2
+R: 1 3 : 166 : * : * : -0.2
+R: 1 4 : 166 : * : * : -1.1
+R: 1 5 : 166 : * : * : -1.1
+R: 2 0 : 166 : * : * : -0.2
+R: 2 1 : 166 : * : * : -0.2
+R: 2 2 : 166 : * : * : -0.2
+R: 2 3 : 166 : * : * : -0.2
+R: 2 4 : 166 : * : * : -1.1
+R: 2 5 : 166 : * : * : -1.1
+R: 3 0 : 166 : * : * : -0.2
+R: 3 1 : 166 : * : * : -0.2
+R: 3 2 : 166 : * : * : -0.2
+R: 3 3 : 166 : * : * : -0.2
+R: 3 4 : 166 : * : * : -1.1
+R: 3 5 : 166 : * : * : -1.1
+R: 4 0 : 166 : * : * : -1.1
+R: 4 1 : 166 : * : * : -1.1
+R: 4 2 : 166 : * : * : -1.1
+R: 4 3 : 166 : * : * : -1.1
+R: 4 4 : 166 : * : * : -2
+R: 4 5 : 166 : * : * : -2
+R: 5 0 : 166 : * : * : -1.1
+R: 5 1 : 166 : * : * : -1.1
+R: 5 2 : 166 : * : * : -1.1
+R: 5 3 : 166 : * : * : -1.1
+R: 5 4 : 166 : * : * : -2
+R: 5 5 : 166 : * : * : -2
+R: 0 0 : 167 : * : * : -0.2
+R: 0 1 : 167 : * : * : -0.2
+R: 0 2 : 167 : * : * : -0.2
+R: 0 3 : 167 : * : * : -0.2
+R: 0 4 : 167 : * : * : -1.1
+R: 0 5 : 167 : * : * : -1.1
+R: 1 0 : 167 : * : * : -0.2
+R: 1 1 : 167 : * : * : -0.2
+R: 1 2 : 167 : * : * : -0.2
+R: 1 3 : 167 : * : * : -0.2
+R: 1 4 : 167 : * : * : -1.1
+R: 1 5 : 167 : * : * : -1.1
+R: 2 0 : 167 : * : * : -0.2
+R: 2 1 : 167 : * : * : -0.2
+R: 2 2 : 167 : * : * : -0.2
+R: 2 3 : 167 : * : * : -0.2
+R: 2 4 : 167 : * : * : -1.1
+R: 2 5 : 167 : * : * : -1.1
+R: 3 0 : 167 : * : * : -0.2
+R: 3 1 : 167 : * : * : -0.2
+R: 3 2 : 167 : * : * : -0.2
+R: 3 3 : 167 : * : * : -0.2
+R: 3 4 : 167 : * : * : -1.1
+R: 3 5 : 167 : * : * : -1.1
+R: 4 0 : 167 : * : * : -1.1
+R: 4 1 : 167 : * : * : -1.1
+R: 4 2 : 167 : * : * : -1.1
+R: 4 3 : 167 : * : * : -1.1
+R: 4 4 : 167 : * : * : -2
+R: 4 5 : 167 : * : * : -2
+R: 5 0 : 167 : * : * : -1.1
+R: 5 1 : 167 : * : * : -1.1
+R: 5 2 : 167 : * : * : -1.1
+R: 5 3 : 167 : * : * : -1.1
+R: 5 4 : 167 : * : * : -2
+R: 5 5 : 167 : * : * : -2
+R: 0 0 : 168 : * : * : -0.2
+R: 0 1 : 168 : * : * : -0.2
+R: 0 2 : 168 : * : * : -0.2
+R: 0 3 : 168 : * : * : -0.2
+R: 0 4 : 168 : * : * : -10.1
+R: 0 5 : 168 : * : * : 1.9
+R: 1 0 : 168 : * : * : -0.2
+R: 1 1 : 168 : * : * : -0.2
+R: 1 2 : 168 : * : * : -0.2
+R: 1 3 : 168 : * : * : -0.2
+R: 1 4 : 168 : * : * : -10.1
+R: 1 5 : 168 : * : * : 1.9
+R: 2 0 : 168 : * : * : -0.2
+R: 2 1 : 168 : * : * : -0.2
+R: 2 2 : 168 : * : * : -0.2
+R: 2 3 : 168 : * : * : -0.2
+R: 2 4 : 168 : * : * : -10.1
+R: 2 5 : 168 : * : * : 1.9
+R: 3 0 : 168 : * : * : -0.2
+R: 3 1 : 168 : * : * : -0.2
+R: 3 2 : 168 : * : * : -0.2
+R: 3 3 : 168 : * : * : -0.2
+R: 3 4 : 168 : * : * : -10.1
+R: 3 5 : 168 : * : * : 1.9
+R: 4 0 : 168 : * : * : -10.1
+R: 4 1 : 168 : * : * : -10.1
+R: 4 2 : 168 : * : * : -10.1
+R: 4 3 : 168 : * : * : -10.1
+R: 4 4 : 168 : * : * : 0
+R: 4 5 : 168 : * : * : 0
+R: 5 0 : 168 : * : * : 1.9
+R: 5 1 : 168 : * : * : 1.9
+R: 5 2 : 168 : * : * : 1.9
+R: 5 3 : 168 : * : * : 1.9
+R: 5 4 : 168 : * : * : 0
+R: 5 5 : 168 : * : * : 2
+R: 0 0 : 169 : * : * : -0.2
+R: 0 1 : 169 : * : * : -0.2
+R: 0 2 : 169 : * : * : -0.2
+R: 0 3 : 169 : * : * : -0.2
+R: 0 4 : 169 : * : * : -10.1
+R: 0 5 : 169 : * : * : 1.9
+R: 1 0 : 169 : * : * : -0.2
+R: 1 1 : 169 : * : * : -0.2
+R: 1 2 : 169 : * : * : -0.2
+R: 1 3 : 169 : * : * : -0.2
+R: 1 4 : 169 : * : * : -10.1
+R: 1 5 : 169 : * : * : 1.9
+R: 2 0 : 169 : * : * : -0.2
+R: 2 1 : 169 : * : * : -0.2
+R: 2 2 : 169 : * : * : -0.2
+R: 2 3 : 169 : * : * : -0.2
+R: 2 4 : 169 : * : * : -10.1
+R: 2 5 : 169 : * : * : 1.9
+R: 3 0 : 169 : * : * : -0.2
+R: 3 1 : 169 : * : * : -0.2
+R: 3 2 : 169 : * : * : -0.2
+R: 3 3 : 169 : * : * : -0.2
+R: 3 4 : 169 : * : * : -10.1
+R: 3 5 : 169 : * : * : 1.9
+R: 4 0 : 169 : * : * : -10.1
+R: 4 1 : 169 : * : * : -10.1
+R: 4 2 : 169 : * : * : -10.1
+R: 4 3 : 169 : * : * : -10.1
+R: 4 4 : 169 : * : * : 0
+R: 4 5 : 169 : * : * : 0
+R: 5 0 : 169 : * : * : 1.9
+R: 5 1 : 169 : * : * : 1.9
+R: 5 2 : 169 : * : * : 1.9
+R: 5 3 : 169 : * : * : 1.9
+R: 5 4 : 169 : * : * : 0
+R: 5 5 : 169 : * : * : 2
+R: 0 0 : 170 : * : * : -0.2
+R: 0 1 : 170 : * : * : -0.2
+R: 0 2 : 170 : * : * : -0.2
+R: 0 3 : 170 : * : * : -0.2
+R: 0 4 : 170 : * : * : -10.1
+R: 0 5 : 170 : * : * : 1.9
+R: 1 0 : 170 : * : * : -0.2
+R: 1 1 : 170 : * : * : -0.2
+R: 1 2 : 170 : * : * : -0.2
+R: 1 3 : 170 : * : * : -0.2
+R: 1 4 : 170 : * : * : -10.1
+R: 1 5 : 170 : * : * : 1.9
+R: 2 0 : 170 : * : * : -0.2
+R: 2 1 : 170 : * : * : -0.2
+R: 2 2 : 170 : * : * : -0.2
+R: 2 3 : 170 : * : * : -0.2
+R: 2 4 : 170 : * : * : -10.1
+R: 2 5 : 170 : * : * : 1.9
+R: 3 0 : 170 : * : * : -0.2
+R: 3 1 : 170 : * : * : -0.2
+R: 3 2 : 170 : * : * : -0.2
+R: 3 3 : 170 : * : * : -0.2
+R: 3 4 : 170 : * : * : -10.1
+R: 3 5 : 170 : * : * : 1.9
+R: 4 0 : 170 : * : * : -10.1
+R: 4 1 : 170 : * : * : -10.1
+R: 4 2 : 170 : * : * : -10.1
+R: 4 3 : 170 : * : * : -10.1
+R: 4 4 : 170 : * : * : 0
+R: 4 5 : 170 : * : * : 0
+R: 5 0 : 170 : * : * : 1.9
+R: 5 1 : 170 : * : * : 1.9
+R: 5 2 : 170 : * : * : 1.9
+R: 5 3 : 170 : * : * : 1.9
+R: 5 4 : 170 : * : * : 0
+R: 5 5 : 170 : * : * : 2
+R: 0 0 : 171 : * : * : -0.2
+R: 0 1 : 171 : * : * : -0.2
+R: 0 2 : 171 : * : * : -0.2
+R: 0 3 : 171 : * : * : -0.2
+R: 0 4 : 171 : * : * : -10.1
+R: 0 5 : 171 : * : * : 1.9
+R: 1 0 : 171 : * : * : -0.2
+R: 1 1 : 171 : * : * : -0.2
+R: 1 2 : 171 : * : * : -0.2
+R: 1 3 : 171 : * : * : -0.2
+R: 1 4 : 171 : * : * : -10.1
+R: 1 5 : 171 : * : * : 1.9
+R: 2 0 : 171 : * : * : -0.2
+R: 2 1 : 171 : * : * : -0.2
+R: 2 2 : 171 : * : * : -0.2
+R: 2 3 : 171 : * : * : -0.2
+R: 2 4 : 171 : * : * : -10.1
+R: 2 5 : 171 : * : * : 1.9
+R: 3 0 : 171 : * : * : -0.2
+R: 3 1 : 171 : * : * : -0.2
+R: 3 2 : 171 : * : * : -0.2
+R: 3 3 : 171 : * : * : -0.2
+R: 3 4 : 171 : * : * : -10.1
+R: 3 5 : 171 : * : * : 1.9
+R: 4 0 : 171 : * : * : -10.1
+R: 4 1 : 171 : * : * : -10.1
+R: 4 2 : 171 : * : * : -10.1
+R: 4 3 : 171 : * : * : -10.1
+R: 4 4 : 171 : * : * : 0
+R: 4 5 : 171 : * : * : 0
+R: 5 0 : 171 : * : * : 1.9
+R: 5 1 : 171 : * : * : 1.9
+R: 5 2 : 171 : * : * : 1.9
+R: 5 3 : 171 : * : * : 1.9
+R: 5 4 : 171 : * : * : 0
+R: 5 5 : 171 : * : * : 2
+R: 0 0 : 172 : * : * : -0.2
+R: 0 1 : 172 : * : * : -0.2
+R: 0 2 : 172 : * : * : -0.2
+R: 0 3 : 172 : * : * : -0.2
+R: 0 4 : 172 : * : * : -1.1
+R: 0 5 : 172 : * : * : -1.1
+R: 1 0 : 172 : * : * : -0.2
+R: 1 1 : 172 : * : * : -0.2
+R: 1 2 : 172 : * : * : -0.2
+R: 1 3 : 172 : * : * : -0.2
+R: 1 4 : 172 : * : * : -1.1
+R: 1 5 : 172 : * : * : -1.1
+R: 2 0 : 172 : * : * : -0.2
+R: 2 1 : 172 : * : * : -0.2
+R: 2 2 : 172 : * : * : -0.2
+R: 2 3 : 172 : * : * : -0.2
+R: 2 4 : 172 : * : * : -1.1
+R: 2 5 : 172 : * : * : -1.1
+R: 3 0 : 172 : * : * : -0.2
+R: 3 1 : 172 : * : * : -0.2
+R: 3 2 : 172 : * : * : -0.2
+R: 3 3 : 172 : * : * : -0.2
+R: 3 4 : 172 : * : * : -1.1
+R: 3 5 : 172 : * : * : -1.1
+R: 4 0 : 172 : * : * : -1.1
+R: 4 1 : 172 : * : * : -1.1
+R: 4 2 : 172 : * : * : -1.1
+R: 4 3 : 172 : * : * : -1.1
+R: 4 4 : 172 : * : * : -2
+R: 4 5 : 172 : * : * : -2
+R: 5 0 : 172 : * : * : -1.1
+R: 5 1 : 172 : * : * : -1.1
+R: 5 2 : 172 : * : * : -1.1
+R: 5 3 : 172 : * : * : -1.1
+R: 5 4 : 172 : * : * : -2
+R: 5 5 : 172 : * : * : -2
+R: 0 0 : 173 : * : * : -0.2
+R: 0 1 : 173 : * : * : -0.2
+R: 0 2 : 173 : * : * : -0.2
+R: 0 3 : 173 : * : * : -0.2
+R: 0 4 : 173 : * : * : -1.1
+R: 0 5 : 173 : * : * : -1.1
+R: 1 0 : 173 : * : * : -0.2
+R: 1 1 : 173 : * : * : -0.2
+R: 1 2 : 173 : * : * : -0.2
+R: 1 3 : 173 : * : * : -0.2
+R: 1 4 : 173 : * : * : -1.1
+R: 1 5 : 173 : * : * : -1.1
+R: 2 0 : 173 : * : * : -0.2
+R: 2 1 : 173 : * : * : -0.2
+R: 2 2 : 173 : * : * : -0.2
+R: 2 3 : 173 : * : * : -0.2
+R: 2 4 : 173 : * : * : -1.1
+R: 2 5 : 173 : * : * : -1.1
+R: 3 0 : 173 : * : * : -0.2
+R: 3 1 : 173 : * : * : -0.2
+R: 3 2 : 173 : * : * : -0.2
+R: 3 3 : 173 : * : * : -0.2
+R: 3 4 : 173 : * : * : -1.1
+R: 3 5 : 173 : * : * : -1.1
+R: 4 0 : 173 : * : * : -1.1
+R: 4 1 : 173 : * : * : -1.1
+R: 4 2 : 173 : * : * : -1.1
+R: 4 3 : 173 : * : * : -1.1
+R: 4 4 : 173 : * : * : -2
+R: 4 5 : 173 : * : * : -2
+R: 5 0 : 173 : * : * : -1.1
+R: 5 1 : 173 : * : * : -1.1
+R: 5 2 : 173 : * : * : -1.1
+R: 5 3 : 173 : * : * : -1.1
+R: 5 4 : 173 : * : * : -2
+R: 5 5 : 173 : * : * : -2
+R: 0 0 : 174 : * : * : -0.2
+R: 0 1 : 174 : * : * : -0.2
+R: 0 2 : 174 : * : * : -0.2
+R: 0 3 : 174 : * : * : -0.2
+R: 0 4 : 174 : * : * : -1.1
+R: 0 5 : 174 : * : * : -1.1
+R: 1 0 : 174 : * : * : -0.2
+R: 1 1 : 174 : * : * : -0.2
+R: 1 2 : 174 : * : * : -0.2
+R: 1 3 : 174 : * : * : -0.2
+R: 1 4 : 174 : * : * : -1.1
+R: 1 5 : 174 : * : * : -1.1
+R: 2 0 : 174 : * : * : -0.2
+R: 2 1 : 174 : * : * : -0.2
+R: 2 2 : 174 : * : * : -0.2
+R: 2 3 : 174 : * : * : -0.2
+R: 2 4 : 174 : * : * : -1.1
+R: 2 5 : 174 : * : * : -1.1
+R: 3 0 : 174 : * : * : -0.2
+R: 3 1 : 174 : * : * : -0.2
+R: 3 2 : 174 : * : * : -0.2
+R: 3 3 : 174 : * : * : -0.2
+R: 3 4 : 174 : * : * : -1.1
+R: 3 5 : 174 : * : * : -1.1
+R: 4 0 : 174 : * : * : -1.1
+R: 4 1 : 174 : * : * : -1.1
+R: 4 2 : 174 : * : * : -1.1
+R: 4 3 : 174 : * : * : -1.1
+R: 4 4 : 174 : * : * : -2
+R: 4 5 : 174 : * : * : -2
+R: 5 0 : 174 : * : * : -1.1
+R: 5 1 : 174 : * : * : -1.1
+R: 5 2 : 174 : * : * : -1.1
+R: 5 3 : 174 : * : * : -1.1
+R: 5 4 : 174 : * : * : -2
+R: 5 5 : 174 : * : * : -2
+R: 0 0 : 175 : * : * : -0.2
+R: 0 1 : 175 : * : * : -0.2
+R: 0 2 : 175 : * : * : -0.2
+R: 0 3 : 175 : * : * : -0.2
+R: 0 4 : 175 : * : * : -1.1
+R: 0 5 : 175 : * : * : -1.1
+R: 1 0 : 175 : * : * : -0.2
+R: 1 1 : 175 : * : * : -0.2
+R: 1 2 : 175 : * : * : -0.2
+R: 1 3 : 175 : * : * : -0.2
+R: 1 4 : 175 : * : * : -1.1
+R: 1 5 : 175 : * : * : -1.1
+R: 2 0 : 175 : * : * : -0.2
+R: 2 1 : 175 : * : * : -0.2
+R: 2 2 : 175 : * : * : -0.2
+R: 2 3 : 175 : * : * : -0.2
+R: 2 4 : 175 : * : * : -1.1
+R: 2 5 : 175 : * : * : -1.1
+R: 3 0 : 175 : * : * : -0.2
+R: 3 1 : 175 : * : * : -0.2
+R: 3 2 : 175 : * : * : -0.2
+R: 3 3 : 175 : * : * : -0.2
+R: 3 4 : 175 : * : * : -1.1
+R: 3 5 : 175 : * : * : -1.1
+R: 4 0 : 175 : * : * : -1.1
+R: 4 1 : 175 : * : * : -1.1
+R: 4 2 : 175 : * : * : -1.1
+R: 4 3 : 175 : * : * : -1.1
+R: 4 4 : 175 : * : * : -2
+R: 4 5 : 175 : * : * : -2
+R: 5 0 : 175 : * : * : -1.1
+R: 5 1 : 175 : * : * : -1.1
+R: 5 2 : 175 : * : * : -1.1
+R: 5 3 : 175 : * : * : -1.1
+R: 5 4 : 175 : * : * : -2
+R: 5 5 : 175 : * : * : -2
+R: 0 0 : 176 : * : * : -0.2
+R: 0 1 : 176 : * : * : -0.2
+R: 0 2 : 176 : * : * : -0.2
+R: 0 3 : 176 : * : * : -0.2
+R: 0 4 : 176 : * : * : -10.1
+R: 0 5 : 176 : * : * : 1.9
+R: 1 0 : 176 : * : * : -0.2
+R: 1 1 : 176 : * : * : -0.2
+R: 1 2 : 176 : * : * : -0.2
+R: 1 3 : 176 : * : * : -0.2
+R: 1 4 : 176 : * : * : -10.1
+R: 1 5 : 176 : * : * : 1.9
+R: 2 0 : 176 : * : * : -0.2
+R: 2 1 : 176 : * : * : -0.2
+R: 2 2 : 176 : * : * : -0.2
+R: 2 3 : 176 : * : * : -0.2
+R: 2 4 : 176 : * : * : -10.1
+R: 2 5 : 176 : * : * : 1.9
+R: 3 0 : 176 : * : * : -0.2
+R: 3 1 : 176 : * : * : -0.2
+R: 3 2 : 176 : * : * : -0.2
+R: 3 3 : 176 : * : * : -0.2
+R: 3 4 : 176 : * : * : -10.1
+R: 3 5 : 176 : * : * : 1.9
+R: 4 0 : 176 : * : * : -10.1
+R: 4 1 : 176 : * : * : -10.1
+R: 4 2 : 176 : * : * : -10.1
+R: 4 3 : 176 : * : * : -10.1
+R: 4 4 : 176 : * : * : 0
+R: 4 5 : 176 : * : * : 0
+R: 5 0 : 176 : * : * : 1.9
+R: 5 1 : 176 : * : * : 1.9
+R: 5 2 : 176 : * : * : 1.9
+R: 5 3 : 176 : * : * : 1.9
+R: 5 4 : 176 : * : * : 4
+R: 5 5 : 176 : * : * : 4
+R: 0 0 : 177 : * : * : -0.2
+R: 0 1 : 177 : * : * : -0.2
+R: 0 2 : 177 : * : * : -0.2
+R: 0 3 : 177 : * : * : -0.2
+R: 0 4 : 177 : * : * : -10.1
+R: 0 5 : 177 : * : * : 1.9
+R: 1 0 : 177 : * : * : -0.2
+R: 1 1 : 177 : * : * : -0.2
+R: 1 2 : 177 : * : * : -0.2
+R: 1 3 : 177 : * : * : -0.2
+R: 1 4 : 177 : * : * : -10.1
+R: 1 5 : 177 : * : * : 1.9
+R: 2 0 : 177 : * : * : -0.2
+R: 2 1 : 177 : * : * : -0.2
+R: 2 2 : 177 : * : * : -0.2
+R: 2 3 : 177 : * : * : -0.2
+R: 2 4 : 177 : * : * : -10.1
+R: 2 5 : 177 : * : * : 1.9
+R: 3 0 : 177 : * : * : -0.2
+R: 3 1 : 177 : * : * : -0.2
+R: 3 2 : 177 : * : * : -0.2
+R: 3 3 : 177 : * : * : -0.2
+R: 3 4 : 177 : * : * : -10.1
+R: 3 5 : 177 : * : * : 1.9
+R: 4 0 : 177 : * : * : -10.1
+R: 4 1 : 177 : * : * : -10.1
+R: 4 2 : 177 : * : * : -10.1
+R: 4 3 : 177 : * : * : -10.1
+R: 4 4 : 177 : * : * : 0
+R: 4 5 : 177 : * : * : 0
+R: 5 0 : 177 : * : * : 1.9
+R: 5 1 : 177 : * : * : 1.9
+R: 5 2 : 177 : * : * : 1.9
+R: 5 3 : 177 : * : * : 1.9
+R: 5 4 : 177 : * : * : 4
+R: 5 5 : 177 : * : * : 4
+R: 0 0 : 178 : * : * : -0.2
+R: 0 1 : 178 : * : * : -0.2
+R: 0 2 : 178 : * : * : -0.2
+R: 0 3 : 178 : * : * : -0.2
+R: 0 4 : 178 : * : * : -10.1
+R: 0 5 : 178 : * : * : 1.9
+R: 1 0 : 178 : * : * : -0.2
+R: 1 1 : 178 : * : * : -0.2
+R: 1 2 : 178 : * : * : -0.2
+R: 1 3 : 178 : * : * : -0.2
+R: 1 4 : 178 : * : * : -10.1
+R: 1 5 : 178 : * : * : 1.9
+R: 2 0 : 178 : * : * : -0.2
+R: 2 1 : 178 : * : * : -0.2
+R: 2 2 : 178 : * : * : -0.2
+R: 2 3 : 178 : * : * : -0.2
+R: 2 4 : 178 : * : * : -10.1
+R: 2 5 : 178 : * : * : 1.9
+R: 3 0 : 178 : * : * : -0.2
+R: 3 1 : 178 : * : * : -0.2
+R: 3 2 : 178 : * : * : -0.2
+R: 3 3 : 178 : * : * : -0.2
+R: 3 4 : 178 : * : * : -10.1
+R: 3 5 : 178 : * : * : 1.9
+R: 4 0 : 178 : * : * : -10.1
+R: 4 1 : 178 : * : * : -10.1
+R: 4 2 : 178 : * : * : -10.1
+R: 4 3 : 178 : * : * : -10.1
+R: 4 4 : 178 : * : * : 0
+R: 4 5 : 178 : * : * : 0
+R: 5 0 : 178 : * : * : 1.9
+R: 5 1 : 178 : * : * : 1.9
+R: 5 2 : 178 : * : * : 1.9
+R: 5 3 : 178 : * : * : 1.9
+R: 5 4 : 178 : * : * : 4
+R: 5 5 : 178 : * : * : 4
+R: 0 0 : 179 : * : * : -0.2
+R: 0 1 : 179 : * : * : -0.2
+R: 0 2 : 179 : * : * : -0.2
+R: 0 3 : 179 : * : * : -0.2
+R: 0 4 : 179 : * : * : -10.1
+R: 0 5 : 179 : * : * : 1.9
+R: 1 0 : 179 : * : * : -0.2
+R: 1 1 : 179 : * : * : -0.2
+R: 1 2 : 179 : * : * : -0.2
+R: 1 3 : 179 : * : * : -0.2
+R: 1 4 : 179 : * : * : -10.1
+R: 1 5 : 179 : * : * : 1.9
+R: 2 0 : 179 : * : * : -0.2
+R: 2 1 : 179 : * : * : -0.2
+R: 2 2 : 179 : * : * : -0.2
+R: 2 3 : 179 : * : * : -0.2
+R: 2 4 : 179 : * : * : -10.1
+R: 2 5 : 179 : * : * : 1.9
+R: 3 0 : 179 : * : * : -0.2
+R: 3 1 : 179 : * : * : -0.2
+R: 3 2 : 179 : * : * : -0.2
+R: 3 3 : 179 : * : * : -0.2
+R: 3 4 : 179 : * : * : -10.1
+R: 3 5 : 179 : * : * : 1.9
+R: 4 0 : 179 : * : * : -10.1
+R: 4 1 : 179 : * : * : -10.1
+R: 4 2 : 179 : * : * : -10.1
+R: 4 3 : 179 : * : * : -10.1
+R: 4 4 : 179 : * : * : 0
+R: 4 5 : 179 : * : * : 0
+R: 5 0 : 179 : * : * : 1.9
+R: 5 1 : 179 : * : * : 1.9
+R: 5 2 : 179 : * : * : 1.9
+R: 5 3 : 179 : * : * : 1.9
+R: 5 4 : 179 : * : * : 4
+R: 5 5 : 179 : * : * : 4
+R: 0 0 : 180 : * : * : -0.2
+R: 0 1 : 180 : * : * : -0.2
+R: 0 2 : 180 : * : * : -0.2
+R: 0 3 : 180 : * : * : -0.2
+R: 0 4 : 180 : * : * : -10.1
+R: 0 5 : 180 : * : * : 1.9
+R: 1 0 : 180 : * : * : -0.2
+R: 1 1 : 180 : * : * : -0.2
+R: 1 2 : 180 : * : * : -0.2
+R: 1 3 : 180 : * : * : -0.2
+R: 1 4 : 180 : * : * : -10.1
+R: 1 5 : 180 : * : * : 1.9
+R: 2 0 : 180 : * : * : -0.2
+R: 2 1 : 180 : * : * : -0.2
+R: 2 2 : 180 : * : * : -0.2
+R: 2 3 : 180 : * : * : -0.2
+R: 2 4 : 180 : * : * : -10.1
+R: 2 5 : 180 : * : * : 1.9
+R: 3 0 : 180 : * : * : -0.2
+R: 3 1 : 180 : * : * : -0.2
+R: 3 2 : 180 : * : * : -0.2
+R: 3 3 : 180 : * : * : -0.2
+R: 3 4 : 180 : * : * : -10.1
+R: 3 5 : 180 : * : * : 1.9
+R: 4 0 : 180 : * : * : -1.1
+R: 4 1 : 180 : * : * : -1.1
+R: 4 2 : 180 : * : * : -1.1
+R: 4 3 : 180 : * : * : -1.1
+R: 4 4 : 180 : * : * : -11
+R: 4 5 : 180 : * : * : -11
+R: 5 0 : 180 : * : * : -1.1
+R: 5 1 : 180 : * : * : -1.1
+R: 5 2 : 180 : * : * : -1.1
+R: 5 3 : 180 : * : * : -1.1
+R: 5 4 : 180 : * : * : 1
+R: 5 5 : 180 : * : * : 1
+R: 0 0 : 181 : * : * : -0.2
+R: 0 1 : 181 : * : * : -0.2
+R: 0 2 : 181 : * : * : -0.2
+R: 0 3 : 181 : * : * : -0.2
+R: 0 4 : 181 : * : * : -10.1
+R: 0 5 : 181 : * : * : 1.9
+R: 1 0 : 181 : * : * : -0.2
+R: 1 1 : 181 : * : * : -0.2
+R: 1 2 : 181 : * : * : -0.2
+R: 1 3 : 181 : * : * : -0.2
+R: 1 4 : 181 : * : * : -10.1
+R: 1 5 : 181 : * : * : 1.9
+R: 2 0 : 181 : * : * : -0.2
+R: 2 1 : 181 : * : * : -0.2
+R: 2 2 : 181 : * : * : -0.2
+R: 2 3 : 181 : * : * : -0.2
+R: 2 4 : 181 : * : * : -10.1
+R: 2 5 : 181 : * : * : 1.9
+R: 3 0 : 181 : * : * : -0.2
+R: 3 1 : 181 : * : * : -0.2
+R: 3 2 : 181 : * : * : -0.2
+R: 3 3 : 181 : * : * : -0.2
+R: 3 4 : 181 : * : * : -10.1
+R: 3 5 : 181 : * : * : 1.9
+R: 4 0 : 181 : * : * : -1.1
+R: 4 1 : 181 : * : * : -1.1
+R: 4 2 : 181 : * : * : -1.1
+R: 4 3 : 181 : * : * : -1.1
+R: 4 4 : 181 : * : * : -11
+R: 4 5 : 181 : * : * : -11
+R: 5 0 : 181 : * : * : -1.1
+R: 5 1 : 181 : * : * : -1.1
+R: 5 2 : 181 : * : * : -1.1
+R: 5 3 : 181 : * : * : -1.1
+R: 5 4 : 181 : * : * : 1
+R: 5 5 : 181 : * : * : 1
+R: 0 0 : 182 : * : * : -0.2
+R: 0 1 : 182 : * : * : -0.2
+R: 0 2 : 182 : * : * : -0.2
+R: 0 3 : 182 : * : * : -0.2
+R: 0 4 : 182 : * : * : -10.1
+R: 0 5 : 182 : * : * : 1.9
+R: 1 0 : 182 : * : * : -0.2
+R: 1 1 : 182 : * : * : -0.2
+R: 1 2 : 182 : * : * : -0.2
+R: 1 3 : 182 : * : * : -0.2
+R: 1 4 : 182 : * : * : -10.1
+R: 1 5 : 182 : * : * : 1.9
+R: 2 0 : 182 : * : * : -0.2
+R: 2 1 : 182 : * : * : -0.2
+R: 2 2 : 182 : * : * : -0.2
+R: 2 3 : 182 : * : * : -0.2
+R: 2 4 : 182 : * : * : -10.1
+R: 2 5 : 182 : * : * : 1.9
+R: 3 0 : 182 : * : * : -0.2
+R: 3 1 : 182 : * : * : -0.2
+R: 3 2 : 182 : * : * : -0.2
+R: 3 3 : 182 : * : * : -0.2
+R: 3 4 : 182 : * : * : -10.1
+R: 3 5 : 182 : * : * : 1.9
+R: 4 0 : 182 : * : * : -1.1
+R: 4 1 : 182 : * : * : -1.1
+R: 4 2 : 182 : * : * : -1.1
+R: 4 3 : 182 : * : * : -1.1
+R: 4 4 : 182 : * : * : -11
+R: 4 5 : 182 : * : * : -11
+R: 5 0 : 182 : * : * : -1.1
+R: 5 1 : 182 : * : * : -1.1
+R: 5 2 : 182 : * : * : -1.1
+R: 5 3 : 182 : * : * : -1.1
+R: 5 4 : 182 : * : * : 1
+R: 5 5 : 182 : * : * : 1
+R: 0 0 : 183 : * : * : -0.2
+R: 0 1 : 183 : * : * : -0.2
+R: 0 2 : 183 : * : * : -0.2
+R: 0 3 : 183 : * : * : -0.2
+R: 0 4 : 183 : * : * : -10.1
+R: 0 5 : 183 : * : * : 1.9
+R: 1 0 : 183 : * : * : -0.2
+R: 1 1 : 183 : * : * : -0.2
+R: 1 2 : 183 : * : * : -0.2
+R: 1 3 : 183 : * : * : -0.2
+R: 1 4 : 183 : * : * : -10.1
+R: 1 5 : 183 : * : * : 1.9
+R: 2 0 : 183 : * : * : -0.2
+R: 2 1 : 183 : * : * : -0.2
+R: 2 2 : 183 : * : * : -0.2
+R: 2 3 : 183 : * : * : -0.2
+R: 2 4 : 183 : * : * : -10.1
+R: 2 5 : 183 : * : * : 1.9
+R: 3 0 : 183 : * : * : -0.2
+R: 3 1 : 183 : * : * : -0.2
+R: 3 2 : 183 : * : * : -0.2
+R: 3 3 : 183 : * : * : -0.2
+R: 3 4 : 183 : * : * : -10.1
+R: 3 5 : 183 : * : * : 1.9
+R: 4 0 : 183 : * : * : -1.1
+R: 4 1 : 183 : * : * : -1.1
+R: 4 2 : 183 : * : * : -1.1
+R: 4 3 : 183 : * : * : -1.1
+R: 4 4 : 183 : * : * : -11
+R: 4 5 : 183 : * : * : -11
+R: 5 0 : 183 : * : * : -1.1
+R: 5 1 : 183 : * : * : -1.1
+R: 5 2 : 183 : * : * : -1.1
+R: 5 3 : 183 : * : * : -1.1
+R: 5 4 : 183 : * : * : 1
+R: 5 5 : 183 : * : * : 1
+R: 0 0 : 184 : * : * : -0.2
+R: 0 1 : 184 : * : * : -0.2
+R: 0 2 : 184 : * : * : -0.2
+R: 0 3 : 184 : * : * : -0.2
+R: 0 4 : 184 : * : * : -1.1
+R: 0 5 : 184 : * : * : -1.1
+R: 1 0 : 184 : * : * : -0.2
+R: 1 1 : 184 : * : * : -0.2
+R: 1 2 : 184 : * : * : -0.2
+R: 1 3 : 184 : * : * : -0.2
+R: 1 4 : 184 : * : * : -1.1
+R: 1 5 : 184 : * : * : -1.1
+R: 2 0 : 184 : * : * : -0.2
+R: 2 1 : 184 : * : * : -0.2
+R: 2 2 : 184 : * : * : -0.2
+R: 2 3 : 184 : * : * : -0.2
+R: 2 4 : 184 : * : * : -1.1
+R: 2 5 : 184 : * : * : -1.1
+R: 3 0 : 184 : * : * : -0.2
+R: 3 1 : 184 : * : * : -0.2
+R: 3 2 : 184 : * : * : -0.2
+R: 3 3 : 184 : * : * : -0.2
+R: 3 4 : 184 : * : * : -1.1
+R: 3 5 : 184 : * : * : -1.1
+R: 4 0 : 184 : * : * : -10.1
+R: 4 1 : 184 : * : * : -10.1
+R: 4 2 : 184 : * : * : -10.1
+R: 4 3 : 184 : * : * : -10.1
+R: 4 4 : 184 : * : * : -11
+R: 4 5 : 184 : * : * : -11
+R: 5 0 : 184 : * : * : 1.9
+R: 5 1 : 184 : * : * : 1.9
+R: 5 2 : 184 : * : * : 1.9
+R: 5 3 : 184 : * : * : 1.9
+R: 5 4 : 184 : * : * : 1
+R: 5 5 : 184 : * : * : 1
+R: 0 0 : 185 : * : * : -0.2
+R: 0 1 : 185 : * : * : -0.2
+R: 0 2 : 185 : * : * : -0.2
+R: 0 3 : 185 : * : * : -0.2
+R: 0 4 : 185 : * : * : -1.1
+R: 0 5 : 185 : * : * : -1.1
+R: 1 0 : 185 : * : * : -0.2
+R: 1 1 : 185 : * : * : -0.2
+R: 1 2 : 185 : * : * : -0.2
+R: 1 3 : 185 : * : * : -0.2
+R: 1 4 : 185 : * : * : -1.1
+R: 1 5 : 185 : * : * : -1.1
+R: 2 0 : 185 : * : * : -0.2
+R: 2 1 : 185 : * : * : -0.2
+R: 2 2 : 185 : * : * : -0.2
+R: 2 3 : 185 : * : * : -0.2
+R: 2 4 : 185 : * : * : -1.1
+R: 2 5 : 185 : * : * : -1.1
+R: 3 0 : 185 : * : * : -0.2
+R: 3 1 : 185 : * : * : -0.2
+R: 3 2 : 185 : * : * : -0.2
+R: 3 3 : 185 : * : * : -0.2
+R: 3 4 : 185 : * : * : -1.1
+R: 3 5 : 185 : * : * : -1.1
+R: 4 0 : 185 : * : * : -10.1
+R: 4 1 : 185 : * : * : -10.1
+R: 4 2 : 185 : * : * : -10.1
+R: 4 3 : 185 : * : * : -10.1
+R: 4 4 : 185 : * : * : -11
+R: 4 5 : 185 : * : * : -11
+R: 5 0 : 185 : * : * : 1.9
+R: 5 1 : 185 : * : * : 1.9
+R: 5 2 : 185 : * : * : 1.9
+R: 5 3 : 185 : * : * : 1.9
+R: 5 4 : 185 : * : * : 1
+R: 5 5 : 185 : * : * : 1
+R: 0 0 : 186 : * : * : -0.2
+R: 0 1 : 186 : * : * : -0.2
+R: 0 2 : 186 : * : * : -0.2
+R: 0 3 : 186 : * : * : -0.2
+R: 0 4 : 186 : * : * : -1.1
+R: 0 5 : 186 : * : * : -1.1
+R: 1 0 : 186 : * : * : -0.2
+R: 1 1 : 186 : * : * : -0.2
+R: 1 2 : 186 : * : * : -0.2
+R: 1 3 : 186 : * : * : -0.2
+R: 1 4 : 186 : * : * : -1.1
+R: 1 5 : 186 : * : * : -1.1
+R: 2 0 : 186 : * : * : -0.2
+R: 2 1 : 186 : * : * : -0.2
+R: 2 2 : 186 : * : * : -0.2
+R: 2 3 : 186 : * : * : -0.2
+R: 2 4 : 186 : * : * : -1.1
+R: 2 5 : 186 : * : * : -1.1
+R: 3 0 : 186 : * : * : -0.2
+R: 3 1 : 186 : * : * : -0.2
+R: 3 2 : 186 : * : * : -0.2
+R: 3 3 : 186 : * : * : -0.2
+R: 3 4 : 186 : * : * : -1.1
+R: 3 5 : 186 : * : * : -1.1
+R: 4 0 : 186 : * : * : -10.1
+R: 4 1 : 186 : * : * : -10.1
+R: 4 2 : 186 : * : * : -10.1
+R: 4 3 : 186 : * : * : -10.1
+R: 4 4 : 186 : * : * : -11
+R: 4 5 : 186 : * : * : -11
+R: 5 0 : 186 : * : * : 1.9
+R: 5 1 : 186 : * : * : 1.9
+R: 5 2 : 186 : * : * : 1.9
+R: 5 3 : 186 : * : * : 1.9
+R: 5 4 : 186 : * : * : 1
+R: 5 5 : 186 : * : * : 1
+R: 0 0 : 187 : * : * : -0.2
+R: 0 1 : 187 : * : * : -0.2
+R: 0 2 : 187 : * : * : -0.2
+R: 0 3 : 187 : * : * : -0.2
+R: 0 4 : 187 : * : * : -1.1
+R: 0 5 : 187 : * : * : -1.1
+R: 1 0 : 187 : * : * : -0.2
+R: 1 1 : 187 : * : * : -0.2
+R: 1 2 : 187 : * : * : -0.2
+R: 1 3 : 187 : * : * : -0.2
+R: 1 4 : 187 : * : * : -1.1
+R: 1 5 : 187 : * : * : -1.1
+R: 2 0 : 187 : * : * : -0.2
+R: 2 1 : 187 : * : * : -0.2
+R: 2 2 : 187 : * : * : -0.2
+R: 2 3 : 187 : * : * : -0.2
+R: 2 4 : 187 : * : * : -1.1
+R: 2 5 : 187 : * : * : -1.1
+R: 3 0 : 187 : * : * : -0.2
+R: 3 1 : 187 : * : * : -0.2
+R: 3 2 : 187 : * : * : -0.2
+R: 3 3 : 187 : * : * : -0.2
+R: 3 4 : 187 : * : * : -1.1
+R: 3 5 : 187 : * : * : -1.1
+R: 4 0 : 187 : * : * : -10.1
+R: 4 1 : 187 : * : * : -10.1
+R: 4 2 : 187 : * : * : -10.1
+R: 4 3 : 187 : * : * : -10.1
+R: 4 4 : 187 : * : * : -11
+R: 4 5 : 187 : * : * : -11
+R: 5 0 : 187 : * : * : 1.9
+R: 5 1 : 187 : * : * : 1.9
+R: 5 2 : 187 : * : * : 1.9
+R: 5 3 : 187 : * : * : 1.9
+R: 5 4 : 187 : * : * : 1
+R: 5 5 : 187 : * : * : 1
+R: 0 0 : 188 : * : * : -0.2
+R: 0 1 : 188 : * : * : -0.2
+R: 0 2 : 188 : * : * : -0.2
+R: 0 3 : 188 : * : * : -0.2
+R: 0 4 : 188 : * : * : -1.1
+R: 0 5 : 188 : * : * : -1.1
+R: 1 0 : 188 : * : * : -0.2
+R: 1 1 : 188 : * : * : -0.2
+R: 1 2 : 188 : * : * : -0.2
+R: 1 3 : 188 : * : * : -0.2
+R: 1 4 : 188 : * : * : -1.1
+R: 1 5 : 188 : * : * : -1.1
+R: 2 0 : 188 : * : * : -0.2
+R: 2 1 : 188 : * : * : -0.2
+R: 2 2 : 188 : * : * : -0.2
+R: 2 3 : 188 : * : * : -0.2
+R: 2 4 : 188 : * : * : -1.1
+R: 2 5 : 188 : * : * : -1.1
+R: 3 0 : 188 : * : * : -0.2
+R: 3 1 : 188 : * : * : -0.2
+R: 3 2 : 188 : * : * : -0.2
+R: 3 3 : 188 : * : * : -0.2
+R: 3 4 : 188 : * : * : -1.1
+R: 3 5 : 188 : * : * : -1.1
+R: 4 0 : 188 : * : * : -1.1
+R: 4 1 : 188 : * : * : -1.1
+R: 4 2 : 188 : * : * : -1.1
+R: 4 3 : 188 : * : * : -1.1
+R: 4 4 : 188 : * : * : -2
+R: 4 5 : 188 : * : * : -2
+R: 5 0 : 188 : * : * : -1.1
+R: 5 1 : 188 : * : * : -1.1
+R: 5 2 : 188 : * : * : -1.1
+R: 5 3 : 188 : * : * : -1.1
+R: 5 4 : 188 : * : * : -2
+R: 5 5 : 188 : * : * : -2
+R: 0 0 : 189 : * : * : -0.2
+R: 0 1 : 189 : * : * : -0.2
+R: 0 2 : 189 : * : * : -0.2
+R: 0 3 : 189 : * : * : -0.2
+R: 0 4 : 189 : * : * : -1.1
+R: 0 5 : 189 : * : * : -1.1
+R: 1 0 : 189 : * : * : -0.2
+R: 1 1 : 189 : * : * : -0.2
+R: 1 2 : 189 : * : * : -0.2
+R: 1 3 : 189 : * : * : -0.2
+R: 1 4 : 189 : * : * : -1.1
+R: 1 5 : 189 : * : * : -1.1
+R: 2 0 : 189 : * : * : -0.2
+R: 2 1 : 189 : * : * : -0.2
+R: 2 2 : 189 : * : * : -0.2
+R: 2 3 : 189 : * : * : -0.2
+R: 2 4 : 189 : * : * : -1.1
+R: 2 5 : 189 : * : * : -1.1
+R: 3 0 : 189 : * : * : -0.2
+R: 3 1 : 189 : * : * : -0.2
+R: 3 2 : 189 : * : * : -0.2
+R: 3 3 : 189 : * : * : -0.2
+R: 3 4 : 189 : * : * : -1.1
+R: 3 5 : 189 : * : * : -1.1
+R: 4 0 : 189 : * : * : -1.1
+R: 4 1 : 189 : * : * : -1.1
+R: 4 2 : 189 : * : * : -1.1
+R: 4 3 : 189 : * : * : -1.1
+R: 4 4 : 189 : * : * : -2
+R: 4 5 : 189 : * : * : -2
+R: 5 0 : 189 : * : * : -1.1
+R: 5 1 : 189 : * : * : -1.1
+R: 5 2 : 189 : * : * : -1.1
+R: 5 3 : 189 : * : * : -1.1
+R: 5 4 : 189 : * : * : -2
+R: 5 5 : 189 : * : * : -2
+R: 0 0 : 190 : * : * : -0.2
+R: 0 1 : 190 : * : * : -0.2
+R: 0 2 : 190 : * : * : -0.2
+R: 0 3 : 190 : * : * : -0.2
+R: 0 4 : 190 : * : * : -1.1
+R: 0 5 : 190 : * : * : -1.1
+R: 1 0 : 190 : * : * : -0.2
+R: 1 1 : 190 : * : * : -0.2
+R: 1 2 : 190 : * : * : -0.2
+R: 1 3 : 190 : * : * : -0.2
+R: 1 4 : 190 : * : * : -1.1
+R: 1 5 : 190 : * : * : -1.1
+R: 2 0 : 190 : * : * : -0.2
+R: 2 1 : 190 : * : * : -0.2
+R: 2 2 : 190 : * : * : -0.2
+R: 2 3 : 190 : * : * : -0.2
+R: 2 4 : 190 : * : * : -1.1
+R: 2 5 : 190 : * : * : -1.1
+R: 3 0 : 190 : * : * : -0.2
+R: 3 1 : 190 : * : * : -0.2
+R: 3 2 : 190 : * : * : -0.2
+R: 3 3 : 190 : * : * : -0.2
+R: 3 4 : 190 : * : * : -1.1
+R: 3 5 : 190 : * : * : -1.1
+R: 4 0 : 190 : * : * : -1.1
+R: 4 1 : 190 : * : * : -1.1
+R: 4 2 : 190 : * : * : -1.1
+R: 4 3 : 190 : * : * : -1.1
+R: 4 4 : 190 : * : * : -2
+R: 4 5 : 190 : * : * : -2
+R: 5 0 : 190 : * : * : -1.1
+R: 5 1 : 190 : * : * : -1.1
+R: 5 2 : 190 : * : * : -1.1
+R: 5 3 : 190 : * : * : -1.1
+R: 5 4 : 190 : * : * : -2
+R: 5 5 : 190 : * : * : -2
+R: 0 0 : 191 : * : * : -0.2
+R: 0 1 : 191 : * : * : -0.2
+R: 0 2 : 191 : * : * : -0.2
+R: 0 3 : 191 : * : * : -0.2
+R: 0 4 : 191 : * : * : -1.1
+R: 0 5 : 191 : * : * : -1.1
+R: 1 0 : 191 : * : * : -0.2
+R: 1 1 : 191 : * : * : -0.2
+R: 1 2 : 191 : * : * : -0.2
+R: 1 3 : 191 : * : * : -0.2
+R: 1 4 : 191 : * : * : -1.1
+R: 1 5 : 191 : * : * : -1.1
+R: 2 0 : 191 : * : * : -0.2
+R: 2 1 : 191 : * : * : -0.2
+R: 2 2 : 191 : * : * : -0.2
+R: 2 3 : 191 : * : * : -0.2
+R: 2 4 : 191 : * : * : -1.1
+R: 2 5 : 191 : * : * : -1.1
+R: 3 0 : 191 : * : * : -0.2
+R: 3 1 : 191 : * : * : -0.2
+R: 3 2 : 191 : * : * : -0.2
+R: 3 3 : 191 : * : * : -0.2
+R: 3 4 : 191 : * : * : -1.1
+R: 3 5 : 191 : * : * : -1.1
+R: 4 0 : 191 : * : * : -1.1
+R: 4 1 : 191 : * : * : -1.1
+R: 4 2 : 191 : * : * : -1.1
+R: 4 3 : 191 : * : * : -1.1
+R: 4 4 : 191 : * : * : -2
+R: 4 5 : 191 : * : * : -2
+R: 5 0 : 191 : * : * : -1.1
+R: 5 1 : 191 : * : * : -1.1
+R: 5 2 : 191 : * : * : -1.1
+R: 5 3 : 191 : * : * : -1.1
+R: 5 4 : 191 : * : * : -2
+R: 5 5 : 191 : * : * : -2
+R: 0 0 : 192 : * : * : -0.2
+R: 0 1 : 192 : * : * : -0.2
+R: 0 2 : 192 : * : * : -0.2
+R: 0 3 : 192 : * : * : -0.2
+R: 0 4 : 192 : * : * : -10.1
+R: 0 5 : 192 : * : * : 1.9
+R: 1 0 : 192 : * : * : -0.2
+R: 1 1 : 192 : * : * : -0.2
+R: 1 2 : 192 : * : * : -0.2
+R: 1 3 : 192 : * : * : -0.2
+R: 1 4 : 192 : * : * : -10.1
+R: 1 5 : 192 : * : * : 1.9
+R: 2 0 : 192 : * : * : -0.2
+R: 2 1 : 192 : * : * : -0.2
+R: 2 2 : 192 : * : * : -0.2
+R: 2 3 : 192 : * : * : -0.2
+R: 2 4 : 192 : * : * : -10.1
+R: 2 5 : 192 : * : * : 1.9
+R: 3 0 : 192 : * : * : -0.2
+R: 3 1 : 192 : * : * : -0.2
+R: 3 2 : 192 : * : * : -0.2
+R: 3 3 : 192 : * : * : -0.2
+R: 3 4 : 192 : * : * : -10.1
+R: 3 5 : 192 : * : * : 1.9
+R: 4 0 : 192 : * : * : -10.1
+R: 4 1 : 192 : * : * : -10.1
+R: 4 2 : 192 : * : * : -10.1
+R: 4 3 : 192 : * : * : -10.1
+R: 4 4 : 192 : * : * : 0
+R: 4 5 : 192 : * : * : 0
+R: 5 0 : 192 : * : * : 1.9
+R: 5 1 : 192 : * : * : 1.9
+R: 5 2 : 192 : * : * : 1.9
+R: 5 3 : 192 : * : * : 1.9
+R: 5 4 : 192 : * : * : 4
+R: 5 5 : 192 : * : * : 4
+R: 0 0 : 193 : * : * : -0.2
+R: 0 1 : 193 : * : * : -0.2
+R: 0 2 : 193 : * : * : -0.2
+R: 0 3 : 193 : * : * : -0.2
+R: 0 4 : 193 : * : * : -1.1
+R: 0 5 : 193 : * : * : -1.1
+R: 1 0 : 193 : * : * : -0.2
+R: 1 1 : 193 : * : * : -0.2
+R: 1 2 : 193 : * : * : -0.2
+R: 1 3 : 193 : * : * : -0.2
+R: 1 4 : 193 : * : * : -1.1
+R: 1 5 : 193 : * : * : -1.1
+R: 2 0 : 193 : * : * : -0.2
+R: 2 1 : 193 : * : * : -0.2
+R: 2 2 : 193 : * : * : -0.2
+R: 2 3 : 193 : * : * : -0.2
+R: 2 4 : 193 : * : * : -1.1
+R: 2 5 : 193 : * : * : -1.1
+R: 3 0 : 193 : * : * : -0.2
+R: 3 1 : 193 : * : * : -0.2
+R: 3 2 : 193 : * : * : -0.2
+R: 3 3 : 193 : * : * : -0.2
+R: 3 4 : 193 : * : * : -1.1
+R: 3 5 : 193 : * : * : -1.1
+R: 4 0 : 193 : * : * : -10.1
+R: 4 1 : 193 : * : * : -10.1
+R: 4 2 : 193 : * : * : -10.1
+R: 4 3 : 193 : * : * : -10.1
+R: 4 4 : 193 : * : * : -11
+R: 4 5 : 193 : * : * : -11
+R: 5 0 : 193 : * : * : 1.9
+R: 5 1 : 193 : * : * : 1.9
+R: 5 2 : 193 : * : * : 1.9
+R: 5 3 : 193 : * : * : 1.9
+R: 5 4 : 193 : * : * : 1
+R: 5 5 : 193 : * : * : 1
+R: 0 0 : 194 : * : * : -0.2
+R: 0 1 : 194 : * : * : -0.2
+R: 0 2 : 194 : * : * : -0.2
+R: 0 3 : 194 : * : * : -0.2
+R: 0 4 : 194 : * : * : -10.1
+R: 0 5 : 194 : * : * : 1.9
+R: 1 0 : 194 : * : * : -0.2
+R: 1 1 : 194 : * : * : -0.2
+R: 1 2 : 194 : * : * : -0.2
+R: 1 3 : 194 : * : * : -0.2
+R: 1 4 : 194 : * : * : -10.1
+R: 1 5 : 194 : * : * : 1.9
+R: 2 0 : 194 : * : * : -0.2
+R: 2 1 : 194 : * : * : -0.2
+R: 2 2 : 194 : * : * : -0.2
+R: 2 3 : 194 : * : * : -0.2
+R: 2 4 : 194 : * : * : -10.1
+R: 2 5 : 194 : * : * : 1.9
+R: 3 0 : 194 : * : * : -0.2
+R: 3 1 : 194 : * : * : -0.2
+R: 3 2 : 194 : * : * : -0.2
+R: 3 3 : 194 : * : * : -0.2
+R: 3 4 : 194 : * : * : -10.1
+R: 3 5 : 194 : * : * : 1.9
+R: 4 0 : 194 : * : * : -10.1
+R: 4 1 : 194 : * : * : -10.1
+R: 4 2 : 194 : * : * : -10.1
+R: 4 3 : 194 : * : * : -10.1
+R: 4 4 : 194 : * : * : 0
+R: 4 5 : 194 : * : * : 0
+R: 5 0 : 194 : * : * : 1.9
+R: 5 1 : 194 : * : * : 1.9
+R: 5 2 : 194 : * : * : 1.9
+R: 5 3 : 194 : * : * : 1.9
+R: 5 4 : 194 : * : * : 4
+R: 5 5 : 194 : * : * : 4
+R: 0 0 : 195 : * : * : -0.2
+R: 0 1 : 195 : * : * : -0.2
+R: 0 2 : 195 : * : * : -0.2
+R: 0 3 : 195 : * : * : -0.2
+R: 0 4 : 195 : * : * : -1.1
+R: 0 5 : 195 : * : * : -1.1
+R: 1 0 : 195 : * : * : -0.2
+R: 1 1 : 195 : * : * : -0.2
+R: 1 2 : 195 : * : * : -0.2
+R: 1 3 : 195 : * : * : -0.2
+R: 1 4 : 195 : * : * : -1.1
+R: 1 5 : 195 : * : * : -1.1
+R: 2 0 : 195 : * : * : -0.2
+R: 2 1 : 195 : * : * : -0.2
+R: 2 2 : 195 : * : * : -0.2
+R: 2 3 : 195 : * : * : -0.2
+R: 2 4 : 195 : * : * : -1.1
+R: 2 5 : 195 : * : * : -1.1
+R: 3 0 : 195 : * : * : -0.2
+R: 3 1 : 195 : * : * : -0.2
+R: 3 2 : 195 : * : * : -0.2
+R: 3 3 : 195 : * : * : -0.2
+R: 3 4 : 195 : * : * : -1.1
+R: 3 5 : 195 : * : * : -1.1
+R: 4 0 : 195 : * : * : -10.1
+R: 4 1 : 195 : * : * : -10.1
+R: 4 2 : 195 : * : * : -10.1
+R: 4 3 : 195 : * : * : -10.1
+R: 4 4 : 195 : * : * : -11
+R: 4 5 : 195 : * : * : -11
+R: 5 0 : 195 : * : * : 1.9
+R: 5 1 : 195 : * : * : 1.9
+R: 5 2 : 195 : * : * : 1.9
+R: 5 3 : 195 : * : * : 1.9
+R: 5 4 : 195 : * : * : 1
+R: 5 5 : 195 : * : * : 1
+R: 0 0 : 196 : * : * : -0.2
+R: 0 1 : 196 : * : * : -0.2
+R: 0 2 : 196 : * : * : -0.2
+R: 0 3 : 196 : * : * : -0.2
+R: 0 4 : 196 : * : * : -10.1
+R: 0 5 : 196 : * : * : 1.9
+R: 1 0 : 196 : * : * : -0.2
+R: 1 1 : 196 : * : * : -0.2
+R: 1 2 : 196 : * : * : -0.2
+R: 1 3 : 196 : * : * : -0.2
+R: 1 4 : 196 : * : * : -10.1
+R: 1 5 : 196 : * : * : 1.9
+R: 2 0 : 196 : * : * : -0.2
+R: 2 1 : 196 : * : * : -0.2
+R: 2 2 : 196 : * : * : -0.2
+R: 2 3 : 196 : * : * : -0.2
+R: 2 4 : 196 : * : * : -10.1
+R: 2 5 : 196 : * : * : 1.9
+R: 3 0 : 196 : * : * : -0.2
+R: 3 1 : 196 : * : * : -0.2
+R: 3 2 : 196 : * : * : -0.2
+R: 3 3 : 196 : * : * : -0.2
+R: 3 4 : 196 : * : * : -10.1
+R: 3 5 : 196 : * : * : 1.9
+R: 4 0 : 196 : * : * : -10.1
+R: 4 1 : 196 : * : * : -10.1
+R: 4 2 : 196 : * : * : -10.1
+R: 4 3 : 196 : * : * : -10.1
+R: 4 4 : 196 : * : * : 0
+R: 4 5 : 196 : * : * : 0
+R: 5 0 : 196 : * : * : 1.9
+R: 5 1 : 196 : * : * : 1.9
+R: 5 2 : 196 : * : * : 1.9
+R: 5 3 : 196 : * : * : 1.9
+R: 5 4 : 196 : * : * : 4
+R: 5 5 : 196 : * : * : 4
+R: 0 0 : 197 : * : * : -0.2
+R: 0 1 : 197 : * : * : -0.2
+R: 0 2 : 197 : * : * : -0.2
+R: 0 3 : 197 : * : * : -0.2
+R: 0 4 : 197 : * : * : -1.1
+R: 0 5 : 197 : * : * : -1.1
+R: 1 0 : 197 : * : * : -0.2
+R: 1 1 : 197 : * : * : -0.2
+R: 1 2 : 197 : * : * : -0.2
+R: 1 3 : 197 : * : * : -0.2
+R: 1 4 : 197 : * : * : -1.1
+R: 1 5 : 197 : * : * : -1.1
+R: 2 0 : 197 : * : * : -0.2
+R: 2 1 : 197 : * : * : -0.2
+R: 2 2 : 197 : * : * : -0.2
+R: 2 3 : 197 : * : * : -0.2
+R: 2 4 : 197 : * : * : -1.1
+R: 2 5 : 197 : * : * : -1.1
+R: 3 0 : 197 : * : * : -0.2
+R: 3 1 : 197 : * : * : -0.2
+R: 3 2 : 197 : * : * : -0.2
+R: 3 3 : 197 : * : * : -0.2
+R: 3 4 : 197 : * : * : -1.1
+R: 3 5 : 197 : * : * : -1.1
+R: 4 0 : 197 : * : * : -10.1
+R: 4 1 : 197 : * : * : -10.1
+R: 4 2 : 197 : * : * : -10.1
+R: 4 3 : 197 : * : * : -10.1
+R: 4 4 : 197 : * : * : -11
+R: 4 5 : 197 : * : * : -11
+R: 5 0 : 197 : * : * : 1.9
+R: 5 1 : 197 : * : * : 1.9
+R: 5 2 : 197 : * : * : 1.9
+R: 5 3 : 197 : * : * : 1.9
+R: 5 4 : 197 : * : * : 1
+R: 5 5 : 197 : * : * : 1
+R: 0 0 : 198 : * : * : -0.2
+R: 0 1 : 198 : * : * : -0.2
+R: 0 2 : 198 : * : * : -0.2
+R: 0 3 : 198 : * : * : -0.2
+R: 0 4 : 198 : * : * : -10.1
+R: 0 5 : 198 : * : * : 1.9
+R: 1 0 : 198 : * : * : -0.2
+R: 1 1 : 198 : * : * : -0.2
+R: 1 2 : 198 : * : * : -0.2
+R: 1 3 : 198 : * : * : -0.2
+R: 1 4 : 198 : * : * : -10.1
+R: 1 5 : 198 : * : * : 1.9
+R: 2 0 : 198 : * : * : -0.2
+R: 2 1 : 198 : * : * : -0.2
+R: 2 2 : 198 : * : * : -0.2
+R: 2 3 : 198 : * : * : -0.2
+R: 2 4 : 198 : * : * : -10.1
+R: 2 5 : 198 : * : * : 1.9
+R: 3 0 : 198 : * : * : -0.2
+R: 3 1 : 198 : * : * : -0.2
+R: 3 2 : 198 : * : * : -0.2
+R: 3 3 : 198 : * : * : -0.2
+R: 3 4 : 198 : * : * : -10.1
+R: 3 5 : 198 : * : * : 1.9
+R: 4 0 : 198 : * : * : -10.1
+R: 4 1 : 198 : * : * : -10.1
+R: 4 2 : 198 : * : * : -10.1
+R: 4 3 : 198 : * : * : -10.1
+R: 4 4 : 198 : * : * : 0
+R: 4 5 : 198 : * : * : 0
+R: 5 0 : 198 : * : * : 1.9
+R: 5 1 : 198 : * : * : 1.9
+R: 5 2 : 198 : * : * : 1.9
+R: 5 3 : 198 : * : * : 1.9
+R: 5 4 : 198 : * : * : 4
+R: 5 5 : 198 : * : * : 4
+R: 0 0 : 199 : * : * : -0.2
+R: 0 1 : 199 : * : * : -0.2
+R: 0 2 : 199 : * : * : -0.2
+R: 0 3 : 199 : * : * : -0.2
+R: 0 4 : 199 : * : * : -1.1
+R: 0 5 : 199 : * : * : -1.1
+R: 1 0 : 199 : * : * : -0.2
+R: 1 1 : 199 : * : * : -0.2
+R: 1 2 : 199 : * : * : -0.2
+R: 1 3 : 199 : * : * : -0.2
+R: 1 4 : 199 : * : * : -1.1
+R: 1 5 : 199 : * : * : -1.1
+R: 2 0 : 199 : * : * : -0.2
+R: 2 1 : 199 : * : * : -0.2
+R: 2 2 : 199 : * : * : -0.2
+R: 2 3 : 199 : * : * : -0.2
+R: 2 4 : 199 : * : * : -1.1
+R: 2 5 : 199 : * : * : -1.1
+R: 3 0 : 199 : * : * : -0.2
+R: 3 1 : 199 : * : * : -0.2
+R: 3 2 : 199 : * : * : -0.2
+R: 3 3 : 199 : * : * : -0.2
+R: 3 4 : 199 : * : * : -1.1
+R: 3 5 : 199 : * : * : -1.1
+R: 4 0 : 199 : * : * : -10.1
+R: 4 1 : 199 : * : * : -10.1
+R: 4 2 : 199 : * : * : -10.1
+R: 4 3 : 199 : * : * : -10.1
+R: 4 4 : 199 : * : * : -11
+R: 4 5 : 199 : * : * : -11
+R: 5 0 : 199 : * : * : 1.9
+R: 5 1 : 199 : * : * : 1.9
+R: 5 2 : 199 : * : * : 1.9
+R: 5 3 : 199 : * : * : 1.9
+R: 5 4 : 199 : * : * : 1
+R: 5 5 : 199 : * : * : 1
+R: 0 0 : 200 : * : * : -0.2
+R: 0 1 : 200 : * : * : -0.2
+R: 0 2 : 200 : * : * : -0.2
+R: 0 3 : 200 : * : * : -0.2
+R: 0 4 : 200 : * : * : -10.1
+R: 0 5 : 200 : * : * : 1.9
+R: 1 0 : 200 : * : * : -0.2
+R: 1 1 : 200 : * : * : -0.2
+R: 1 2 : 200 : * : * : -0.2
+R: 1 3 : 200 : * : * : -0.2
+R: 1 4 : 200 : * : * : -10.1
+R: 1 5 : 200 : * : * : 1.9
+R: 2 0 : 200 : * : * : -0.2
+R: 2 1 : 200 : * : * : -0.2
+R: 2 2 : 200 : * : * : -0.2
+R: 2 3 : 200 : * : * : -0.2
+R: 2 4 : 200 : * : * : -10.1
+R: 2 5 : 200 : * : * : 1.9
+R: 3 0 : 200 : * : * : -0.2
+R: 3 1 : 200 : * : * : -0.2
+R: 3 2 : 200 : * : * : -0.2
+R: 3 3 : 200 : * : * : -0.2
+R: 3 4 : 200 : * : * : -10.1
+R: 3 5 : 200 : * : * : 1.9
+R: 4 0 : 200 : * : * : -1.1
+R: 4 1 : 200 : * : * : -1.1
+R: 4 2 : 200 : * : * : -1.1
+R: 4 3 : 200 : * : * : -1.1
+R: 4 4 : 200 : * : * : -11
+R: 4 5 : 200 : * : * : -11
+R: 5 0 : 200 : * : * : -1.1
+R: 5 1 : 200 : * : * : -1.1
+R: 5 2 : 200 : * : * : -1.1
+R: 5 3 : 200 : * : * : -1.1
+R: 5 4 : 200 : * : * : 1
+R: 5 5 : 200 : * : * : 1
+R: 0 0 : 201 : * : * : -0.2
+R: 0 1 : 201 : * : * : -0.2
+R: 0 2 : 201 : * : * : -0.2
+R: 0 3 : 201 : * : * : -0.2
+R: 0 4 : 201 : * : * : -1.1
+R: 0 5 : 201 : * : * : -1.1
+R: 1 0 : 201 : * : * : -0.2
+R: 1 1 : 201 : * : * : -0.2
+R: 1 2 : 201 : * : * : -0.2
+R: 1 3 : 201 : * : * : -0.2
+R: 1 4 : 201 : * : * : -1.1
+R: 1 5 : 201 : * : * : -1.1
+R: 2 0 : 201 : * : * : -0.2
+R: 2 1 : 201 : * : * : -0.2
+R: 2 2 : 201 : * : * : -0.2
+R: 2 3 : 201 : * : * : -0.2
+R: 2 4 : 201 : * : * : -1.1
+R: 2 5 : 201 : * : * : -1.1
+R: 3 0 : 201 : * : * : -0.2
+R: 3 1 : 201 : * : * : -0.2
+R: 3 2 : 201 : * : * : -0.2
+R: 3 3 : 201 : * : * : -0.2
+R: 3 4 : 201 : * : * : -1.1
+R: 3 5 : 201 : * : * : -1.1
+R: 4 0 : 201 : * : * : -1.1
+R: 4 1 : 201 : * : * : -1.1
+R: 4 2 : 201 : * : * : -1.1
+R: 4 3 : 201 : * : * : -1.1
+R: 4 4 : 201 : * : * : -2
+R: 4 5 : 201 : * : * : -2
+R: 5 0 : 201 : * : * : -1.1
+R: 5 1 : 201 : * : * : -1.1
+R: 5 2 : 201 : * : * : -1.1
+R: 5 3 : 201 : * : * : -1.1
+R: 5 4 : 201 : * : * : -2
+R: 5 5 : 201 : * : * : -2
+R: 0 0 : 202 : * : * : -0.2
+R: 0 1 : 202 : * : * : -0.2
+R: 0 2 : 202 : * : * : -0.2
+R: 0 3 : 202 : * : * : -0.2
+R: 0 4 : 202 : * : * : -10.1
+R: 0 5 : 202 : * : * : 1.9
+R: 1 0 : 202 : * : * : -0.2
+R: 1 1 : 202 : * : * : -0.2
+R: 1 2 : 202 : * : * : -0.2
+R: 1 3 : 202 : * : * : -0.2
+R: 1 4 : 202 : * : * : -10.1
+R: 1 5 : 202 : * : * : 1.9
+R: 2 0 : 202 : * : * : -0.2
+R: 2 1 : 202 : * : * : -0.2
+R: 2 2 : 202 : * : * : -0.2
+R: 2 3 : 202 : * : * : -0.2
+R: 2 4 : 202 : * : * : -10.1
+R: 2 5 : 202 : * : * : 1.9
+R: 3 0 : 202 : * : * : -0.2
+R: 3 1 : 202 : * : * : -0.2
+R: 3 2 : 202 : * : * : -0.2
+R: 3 3 : 202 : * : * : -0.2
+R: 3 4 : 202 : * : * : -10.1
+R: 3 5 : 202 : * : * : 1.9
+R: 4 0 : 202 : * : * : -1.1
+R: 4 1 : 202 : * : * : -1.1
+R: 4 2 : 202 : * : * : -1.1
+R: 4 3 : 202 : * : * : -1.1
+R: 4 4 : 202 : * : * : -11
+R: 4 5 : 202 : * : * : -11
+R: 5 0 : 202 : * : * : -1.1
+R: 5 1 : 202 : * : * : -1.1
+R: 5 2 : 202 : * : * : -1.1
+R: 5 3 : 202 : * : * : -1.1
+R: 5 4 : 202 : * : * : 1
+R: 5 5 : 202 : * : * : 1
+R: 0 0 : 203 : * : * : -0.2
+R: 0 1 : 203 : * : * : -0.2
+R: 0 2 : 203 : * : * : -0.2
+R: 0 3 : 203 : * : * : -0.2
+R: 0 4 : 203 : * : * : -1.1
+R: 0 5 : 203 : * : * : -1.1
+R: 1 0 : 203 : * : * : -0.2
+R: 1 1 : 203 : * : * : -0.2
+R: 1 2 : 203 : * : * : -0.2
+R: 1 3 : 203 : * : * : -0.2
+R: 1 4 : 203 : * : * : -1.1
+R: 1 5 : 203 : * : * : -1.1
+R: 2 0 : 203 : * : * : -0.2
+R: 2 1 : 203 : * : * : -0.2
+R: 2 2 : 203 : * : * : -0.2
+R: 2 3 : 203 : * : * : -0.2
+R: 2 4 : 203 : * : * : -1.1
+R: 2 5 : 203 : * : * : -1.1
+R: 3 0 : 203 : * : * : -0.2
+R: 3 1 : 203 : * : * : -0.2
+R: 3 2 : 203 : * : * : -0.2
+R: 3 3 : 203 : * : * : -0.2
+R: 3 4 : 203 : * : * : -1.1
+R: 3 5 : 203 : * : * : -1.1
+R: 4 0 : 203 : * : * : -1.1
+R: 4 1 : 203 : * : * : -1.1
+R: 4 2 : 203 : * : * : -1.1
+R: 4 3 : 203 : * : * : -1.1
+R: 4 4 : 203 : * : * : -2
+R: 4 5 : 203 : * : * : -2
+R: 5 0 : 203 : * : * : -1.1
+R: 5 1 : 203 : * : * : -1.1
+R: 5 2 : 203 : * : * : -1.1
+R: 5 3 : 203 : * : * : -1.1
+R: 5 4 : 203 : * : * : -2
+R: 5 5 : 203 : * : * : -2
+R: 0 0 : 204 : * : * : -0.2
+R: 0 1 : 204 : * : * : -0.2
+R: 0 2 : 204 : * : * : -0.2
+R: 0 3 : 204 : * : * : -0.2
+R: 0 4 : 204 : * : * : -10.1
+R: 0 5 : 204 : * : * : 1.9
+R: 1 0 : 204 : * : * : -0.2
+R: 1 1 : 204 : * : * : -0.2
+R: 1 2 : 204 : * : * : -0.2
+R: 1 3 : 204 : * : * : -0.2
+R: 1 4 : 204 : * : * : -10.1
+R: 1 5 : 204 : * : * : 1.9
+R: 2 0 : 204 : * : * : -0.2
+R: 2 1 : 204 : * : * : -0.2
+R: 2 2 : 204 : * : * : -0.2
+R: 2 3 : 204 : * : * : -0.2
+R: 2 4 : 204 : * : * : -10.1
+R: 2 5 : 204 : * : * : 1.9
+R: 3 0 : 204 : * : * : -0.2
+R: 3 1 : 204 : * : * : -0.2
+R: 3 2 : 204 : * : * : -0.2
+R: 3 3 : 204 : * : * : -0.2
+R: 3 4 : 204 : * : * : -10.1
+R: 3 5 : 204 : * : * : 1.9
+R: 4 0 : 204 : * : * : -1.1
+R: 4 1 : 204 : * : * : -1.1
+R: 4 2 : 204 : * : * : -1.1
+R: 4 3 : 204 : * : * : -1.1
+R: 4 4 : 204 : * : * : -11
+R: 4 5 : 204 : * : * : -11
+R: 5 0 : 204 : * : * : -1.1
+R: 5 1 : 204 : * : * : -1.1
+R: 5 2 : 204 : * : * : -1.1
+R: 5 3 : 204 : * : * : -1.1
+R: 5 4 : 204 : * : * : 1
+R: 5 5 : 204 : * : * : 1
+R: 0 0 : 205 : * : * : -0.2
+R: 0 1 : 205 : * : * : -0.2
+R: 0 2 : 205 : * : * : -0.2
+R: 0 3 : 205 : * : * : -0.2
+R: 0 4 : 205 : * : * : -1.1
+R: 0 5 : 205 : * : * : -1.1
+R: 1 0 : 205 : * : * : -0.2
+R: 1 1 : 205 : * : * : -0.2
+R: 1 2 : 205 : * : * : -0.2
+R: 1 3 : 205 : * : * : -0.2
+R: 1 4 : 205 : * : * : -1.1
+R: 1 5 : 205 : * : * : -1.1
+R: 2 0 : 205 : * : * : -0.2
+R: 2 1 : 205 : * : * : -0.2
+R: 2 2 : 205 : * : * : -0.2
+R: 2 3 : 205 : * : * : -0.2
+R: 2 4 : 205 : * : * : -1.1
+R: 2 5 : 205 : * : * : -1.1
+R: 3 0 : 205 : * : * : -0.2
+R: 3 1 : 205 : * : * : -0.2
+R: 3 2 : 205 : * : * : -0.2
+R: 3 3 : 205 : * : * : -0.2
+R: 3 4 : 205 : * : * : -1.1
+R: 3 5 : 205 : * : * : -1.1
+R: 4 0 : 205 : * : * : -1.1
+R: 4 1 : 205 : * : * : -1.1
+R: 4 2 : 205 : * : * : -1.1
+R: 4 3 : 205 : * : * : -1.1
+R: 4 4 : 205 : * : * : -2
+R: 4 5 : 205 : * : * : -2
+R: 5 0 : 205 : * : * : -1.1
+R: 5 1 : 205 : * : * : -1.1
+R: 5 2 : 205 : * : * : -1.1
+R: 5 3 : 205 : * : * : -1.1
+R: 5 4 : 205 : * : * : -2
+R: 5 5 : 205 : * : * : -2
+R: 0 0 : 206 : * : * : -0.2
+R: 0 1 : 206 : * : * : -0.2
+R: 0 2 : 206 : * : * : -0.2
+R: 0 3 : 206 : * : * : -0.2
+R: 0 4 : 206 : * : * : -10.1
+R: 0 5 : 206 : * : * : 1.9
+R: 1 0 : 206 : * : * : -0.2
+R: 1 1 : 206 : * : * : -0.2
+R: 1 2 : 206 : * : * : -0.2
+R: 1 3 : 206 : * : * : -0.2
+R: 1 4 : 206 : * : * : -10.1
+R: 1 5 : 206 : * : * : 1.9
+R: 2 0 : 206 : * : * : -0.2
+R: 2 1 : 206 : * : * : -0.2
+R: 2 2 : 206 : * : * : -0.2
+R: 2 3 : 206 : * : * : -0.2
+R: 2 4 : 206 : * : * : -10.1
+R: 2 5 : 206 : * : * : 1.9
+R: 3 0 : 206 : * : * : -0.2
+R: 3 1 : 206 : * : * : -0.2
+R: 3 2 : 206 : * : * : -0.2
+R: 3 3 : 206 : * : * : -0.2
+R: 3 4 : 206 : * : * : -10.1
+R: 3 5 : 206 : * : * : 1.9
+R: 4 0 : 206 : * : * : -1.1
+R: 4 1 : 206 : * : * : -1.1
+R: 4 2 : 206 : * : * : -1.1
+R: 4 3 : 206 : * : * : -1.1
+R: 4 4 : 206 : * : * : -11
+R: 4 5 : 206 : * : * : -11
+R: 5 0 : 206 : * : * : -1.1
+R: 5 1 : 206 : * : * : -1.1
+R: 5 2 : 206 : * : * : -1.1
+R: 5 3 : 206 : * : * : -1.1
+R: 5 4 : 206 : * : * : 1
+R: 5 5 : 206 : * : * : 1
+R: 0 0 : 207 : * : * : -0.2
+R: 0 1 : 207 : * : * : -0.2
+R: 0 2 : 207 : * : * : -0.2
+R: 0 3 : 207 : * : * : -0.2
+R: 0 4 : 207 : * : * : -1.1
+R: 0 5 : 207 : * : * : -1.1
+R: 1 0 : 207 : * : * : -0.2
+R: 1 1 : 207 : * : * : -0.2
+R: 1 2 : 207 : * : * : -0.2
+R: 1 3 : 207 : * : * : -0.2
+R: 1 4 : 207 : * : * : -1.1
+R: 1 5 : 207 : * : * : -1.1
+R: 2 0 : 207 : * : * : -0.2
+R: 2 1 : 207 : * : * : -0.2
+R: 2 2 : 207 : * : * : -0.2
+R: 2 3 : 207 : * : * : -0.2
+R: 2 4 : 207 : * : * : -1.1
+R: 2 5 : 207 : * : * : -1.1
+R: 3 0 : 207 : * : * : -0.2
+R: 3 1 : 207 : * : * : -0.2
+R: 3 2 : 207 : * : * : -0.2
+R: 3 3 : 207 : * : * : -0.2
+R: 3 4 : 207 : * : * : -1.1
+R: 3 5 : 207 : * : * : -1.1
+R: 4 0 : 207 : * : * : -1.1
+R: 4 1 : 207 : * : * : -1.1
+R: 4 2 : 207 : * : * : -1.1
+R: 4 3 : 207 : * : * : -1.1
+R: 4 4 : 207 : * : * : -2
+R: 4 5 : 207 : * : * : -2
+R: 5 0 : 207 : * : * : -1.1
+R: 5 1 : 207 : * : * : -1.1
+R: 5 2 : 207 : * : * : -1.1
+R: 5 3 : 207 : * : * : -1.1
+R: 5 4 : 207 : * : * : -2
+R: 5 5 : 207 : * : * : -2
+R: 0 0 : 208 : * : * : -0.2
+R: 0 1 : 208 : * : * : -0.2
+R: 0 2 : 208 : * : * : -0.2
+R: 0 3 : 208 : * : * : -0.2
+R: 0 4 : 208 : * : * : -10.1
+R: 0 5 : 208 : * : * : 1.9
+R: 1 0 : 208 : * : * : -0.2
+R: 1 1 : 208 : * : * : -0.2
+R: 1 2 : 208 : * : * : -0.2
+R: 1 3 : 208 : * : * : -0.2
+R: 1 4 : 208 : * : * : -10.1
+R: 1 5 : 208 : * : * : 1.9
+R: 2 0 : 208 : * : * : -0.2
+R: 2 1 : 208 : * : * : -0.2
+R: 2 2 : 208 : * : * : -0.2
+R: 2 3 : 208 : * : * : -0.2
+R: 2 4 : 208 : * : * : -10.1
+R: 2 5 : 208 : * : * : 1.9
+R: 3 0 : 208 : * : * : -0.2
+R: 3 1 : 208 : * : * : -0.2
+R: 3 2 : 208 : * : * : -0.2
+R: 3 3 : 208 : * : * : -0.2
+R: 3 4 : 208 : * : * : -10.1
+R: 3 5 : 208 : * : * : 1.9
+R: 4 0 : 208 : * : * : -10.1
+R: 4 1 : 208 : * : * : -10.1
+R: 4 2 : 208 : * : * : -10.1
+R: 4 3 : 208 : * : * : -10.1
+R: 4 4 : 208 : * : * : 0
+R: 4 5 : 208 : * : * : 0
+R: 5 0 : 208 : * : * : 1.9
+R: 5 1 : 208 : * : * : 1.9
+R: 5 2 : 208 : * : * : 1.9
+R: 5 3 : 208 : * : * : 1.9
+R: 5 4 : 208 : * : * : 4
+R: 5 5 : 208 : * : * : 4
+R: 0 0 : 209 : * : * : -0.2
+R: 0 1 : 209 : * : * : -0.2
+R: 0 2 : 209 : * : * : -0.2
+R: 0 3 : 209 : * : * : -0.2
+R: 0 4 : 209 : * : * : -10.1
+R: 0 5 : 209 : * : * : 1.9
+R: 1 0 : 209 : * : * : -0.2
+R: 1 1 : 209 : * : * : -0.2
+R: 1 2 : 209 : * : * : -0.2
+R: 1 3 : 209 : * : * : -0.2
+R: 1 4 : 209 : * : * : -10.1
+R: 1 5 : 209 : * : * : 1.9
+R: 2 0 : 209 : * : * : -0.2
+R: 2 1 : 209 : * : * : -0.2
+R: 2 2 : 209 : * : * : -0.2
+R: 2 3 : 209 : * : * : -0.2
+R: 2 4 : 209 : * : * : -10.1
+R: 2 5 : 209 : * : * : 1.9
+R: 3 0 : 209 : * : * : -0.2
+R: 3 1 : 209 : * : * : -0.2
+R: 3 2 : 209 : * : * : -0.2
+R: 3 3 : 209 : * : * : -0.2
+R: 3 4 : 209 : * : * : -10.1
+R: 3 5 : 209 : * : * : 1.9
+R: 4 0 : 209 : * : * : -10.1
+R: 4 1 : 209 : * : * : -10.1
+R: 4 2 : 209 : * : * : -10.1
+R: 4 3 : 209 : * : * : -10.1
+R: 4 4 : 209 : * : * : 0
+R: 4 5 : 209 : * : * : 0
+R: 5 0 : 209 : * : * : 1.9
+R: 5 1 : 209 : * : * : 1.9
+R: 5 2 : 209 : * : * : 1.9
+R: 5 3 : 209 : * : * : 1.9
+R: 5 4 : 209 : * : * : 4
+R: 5 5 : 209 : * : * : 4
+R: 0 0 : 210 : * : * : -0.2
+R: 0 1 : 210 : * : * : -0.2
+R: 0 2 : 210 : * : * : -0.2
+R: 0 3 : 210 : * : * : -0.2
+R: 0 4 : 210 : * : * : -1.1
+R: 0 5 : 210 : * : * : -1.1
+R: 1 0 : 210 : * : * : -0.2
+R: 1 1 : 210 : * : * : -0.2
+R: 1 2 : 210 : * : * : -0.2
+R: 1 3 : 210 : * : * : -0.2
+R: 1 4 : 210 : * : * : -1.1
+R: 1 5 : 210 : * : * : -1.1
+R: 2 0 : 210 : * : * : -0.2
+R: 2 1 : 210 : * : * : -0.2
+R: 2 2 : 210 : * : * : -0.2
+R: 2 3 : 210 : * : * : -0.2
+R: 2 4 : 210 : * : * : -1.1
+R: 2 5 : 210 : * : * : -1.1
+R: 3 0 : 210 : * : * : -0.2
+R: 3 1 : 210 : * : * : -0.2
+R: 3 2 : 210 : * : * : -0.2
+R: 3 3 : 210 : * : * : -0.2
+R: 3 4 : 210 : * : * : -1.1
+R: 3 5 : 210 : * : * : -1.1
+R: 4 0 : 210 : * : * : -10.1
+R: 4 1 : 210 : * : * : -10.1
+R: 4 2 : 210 : * : * : -10.1
+R: 4 3 : 210 : * : * : -10.1
+R: 4 4 : 210 : * : * : -11
+R: 4 5 : 210 : * : * : -11
+R: 5 0 : 210 : * : * : 1.9
+R: 5 1 : 210 : * : * : 1.9
+R: 5 2 : 210 : * : * : 1.9
+R: 5 3 : 210 : * : * : 1.9
+R: 5 4 : 210 : * : * : 1
+R: 5 5 : 210 : * : * : 1
+R: 0 0 : 211 : * : * : -0.2
+R: 0 1 : 211 : * : * : -0.2
+R: 0 2 : 211 : * : * : -0.2
+R: 0 3 : 211 : * : * : -0.2
+R: 0 4 : 211 : * : * : -1.1
+R: 0 5 : 211 : * : * : -1.1
+R: 1 0 : 211 : * : * : -0.2
+R: 1 1 : 211 : * : * : -0.2
+R: 1 2 : 211 : * : * : -0.2
+R: 1 3 : 211 : * : * : -0.2
+R: 1 4 : 211 : * : * : -1.1
+R: 1 5 : 211 : * : * : -1.1
+R: 2 0 : 211 : * : * : -0.2
+R: 2 1 : 211 : * : * : -0.2
+R: 2 2 : 211 : * : * : -0.2
+R: 2 3 : 211 : * : * : -0.2
+R: 2 4 : 211 : * : * : -1.1
+R: 2 5 : 211 : * : * : -1.1
+R: 3 0 : 211 : * : * : -0.2
+R: 3 1 : 211 : * : * : -0.2
+R: 3 2 : 211 : * : * : -0.2
+R: 3 3 : 211 : * : * : -0.2
+R: 3 4 : 211 : * : * : -1.1
+R: 3 5 : 211 : * : * : -1.1
+R: 4 0 : 211 : * : * : -10.1
+R: 4 1 : 211 : * : * : -10.1
+R: 4 2 : 211 : * : * : -10.1
+R: 4 3 : 211 : * : * : -10.1
+R: 4 4 : 211 : * : * : -11
+R: 4 5 : 211 : * : * : -11
+R: 5 0 : 211 : * : * : 1.9
+R: 5 1 : 211 : * : * : 1.9
+R: 5 2 : 211 : * : * : 1.9
+R: 5 3 : 211 : * : * : 1.9
+R: 5 4 : 211 : * : * : 1
+R: 5 5 : 211 : * : * : 1
+R: 0 0 : 212 : * : * : -0.2
+R: 0 1 : 212 : * : * : -0.2
+R: 0 2 : 212 : * : * : -0.2
+R: 0 3 : 212 : * : * : -0.2
+R: 0 4 : 212 : * : * : -10.1
+R: 0 5 : 212 : * : * : 1.9
+R: 1 0 : 212 : * : * : -0.2
+R: 1 1 : 212 : * : * : -0.2
+R: 1 2 : 212 : * : * : -0.2
+R: 1 3 : 212 : * : * : -0.2
+R: 1 4 : 212 : * : * : -10.1
+R: 1 5 : 212 : * : * : 1.9
+R: 2 0 : 212 : * : * : -0.2
+R: 2 1 : 212 : * : * : -0.2
+R: 2 2 : 212 : * : * : -0.2
+R: 2 3 : 212 : * : * : -0.2
+R: 2 4 : 212 : * : * : -10.1
+R: 2 5 : 212 : * : * : 1.9
+R: 3 0 : 212 : * : * : -0.2
+R: 3 1 : 212 : * : * : -0.2
+R: 3 2 : 212 : * : * : -0.2
+R: 3 3 : 212 : * : * : -0.2
+R: 3 4 : 212 : * : * : -10.1
+R: 3 5 : 212 : * : * : 1.9
+R: 4 0 : 212 : * : * : -10.1
+R: 4 1 : 212 : * : * : -10.1
+R: 4 2 : 212 : * : * : -10.1
+R: 4 3 : 212 : * : * : -10.1
+R: 4 4 : 212 : * : * : 0
+R: 4 5 : 212 : * : * : 0
+R: 5 0 : 212 : * : * : 1.9
+R: 5 1 : 212 : * : * : 1.9
+R: 5 2 : 212 : * : * : 1.9
+R: 5 3 : 212 : * : * : 1.9
+R: 5 4 : 212 : * : * : 4
+R: 5 5 : 212 : * : * : 4
+R: 0 0 : 213 : * : * : -0.2
+R: 0 1 : 213 : * : * : -0.2
+R: 0 2 : 213 : * : * : -0.2
+R: 0 3 : 213 : * : * : -0.2
+R: 0 4 : 213 : * : * : -10.1
+R: 0 5 : 213 : * : * : 1.9
+R: 1 0 : 213 : * : * : -0.2
+R: 1 1 : 213 : * : * : -0.2
+R: 1 2 : 213 : * : * : -0.2
+R: 1 3 : 213 : * : * : -0.2
+R: 1 4 : 213 : * : * : -10.1
+R: 1 5 : 213 : * : * : 1.9
+R: 2 0 : 213 : * : * : -0.2
+R: 2 1 : 213 : * : * : -0.2
+R: 2 2 : 213 : * : * : -0.2
+R: 2 3 : 213 : * : * : -0.2
+R: 2 4 : 213 : * : * : -10.1
+R: 2 5 : 213 : * : * : 1.9
+R: 3 0 : 213 : * : * : -0.2
+R: 3 1 : 213 : * : * : -0.2
+R: 3 2 : 213 : * : * : -0.2
+R: 3 3 : 213 : * : * : -0.2
+R: 3 4 : 213 : * : * : -10.1
+R: 3 5 : 213 : * : * : 1.9
+R: 4 0 : 213 : * : * : -10.1
+R: 4 1 : 213 : * : * : -10.1
+R: 4 2 : 213 : * : * : -10.1
+R: 4 3 : 213 : * : * : -10.1
+R: 4 4 : 213 : * : * : 0
+R: 4 5 : 213 : * : * : 0
+R: 5 0 : 213 : * : * : 1.9
+R: 5 1 : 213 : * : * : 1.9
+R: 5 2 : 213 : * : * : 1.9
+R: 5 3 : 213 : * : * : 1.9
+R: 5 4 : 213 : * : * : 4
+R: 5 5 : 213 : * : * : 4
+R: 0 0 : 214 : * : * : -0.2
+R: 0 1 : 214 : * : * : -0.2
+R: 0 2 : 214 : * : * : -0.2
+R: 0 3 : 214 : * : * : -0.2
+R: 0 4 : 214 : * : * : -1.1
+R: 0 5 : 214 : * : * : -1.1
+R: 1 0 : 214 : * : * : -0.2
+R: 1 1 : 214 : * : * : -0.2
+R: 1 2 : 214 : * : * : -0.2
+R: 1 3 : 214 : * : * : -0.2
+R: 1 4 : 214 : * : * : -1.1
+R: 1 5 : 214 : * : * : -1.1
+R: 2 0 : 214 : * : * : -0.2
+R: 2 1 : 214 : * : * : -0.2
+R: 2 2 : 214 : * : * : -0.2
+R: 2 3 : 214 : * : * : -0.2
+R: 2 4 : 214 : * : * : -1.1
+R: 2 5 : 214 : * : * : -1.1
+R: 3 0 : 214 : * : * : -0.2
+R: 3 1 : 214 : * : * : -0.2
+R: 3 2 : 214 : * : * : -0.2
+R: 3 3 : 214 : * : * : -0.2
+R: 3 4 : 214 : * : * : -1.1
+R: 3 5 : 214 : * : * : -1.1
+R: 4 0 : 214 : * : * : -10.1
+R: 4 1 : 214 : * : * : -10.1
+R: 4 2 : 214 : * : * : -10.1
+R: 4 3 : 214 : * : * : -10.1
+R: 4 4 : 214 : * : * : -11
+R: 4 5 : 214 : * : * : -11
+R: 5 0 : 214 : * : * : 1.9
+R: 5 1 : 214 : * : * : 1.9
+R: 5 2 : 214 : * : * : 1.9
+R: 5 3 : 214 : * : * : 1.9
+R: 5 4 : 214 : * : * : 1
+R: 5 5 : 214 : * : * : 1
+R: 0 0 : 215 : * : * : -0.2
+R: 0 1 : 215 : * : * : -0.2
+R: 0 2 : 215 : * : * : -0.2
+R: 0 3 : 215 : * : * : -0.2
+R: 0 4 : 215 : * : * : -1.1
+R: 0 5 : 215 : * : * : -1.1
+R: 1 0 : 215 : * : * : -0.2
+R: 1 1 : 215 : * : * : -0.2
+R: 1 2 : 215 : * : * : -0.2
+R: 1 3 : 215 : * : * : -0.2
+R: 1 4 : 215 : * : * : -1.1
+R: 1 5 : 215 : * : * : -1.1
+R: 2 0 : 215 : * : * : -0.2
+R: 2 1 : 215 : * : * : -0.2
+R: 2 2 : 215 : * : * : -0.2
+R: 2 3 : 215 : * : * : -0.2
+R: 2 4 : 215 : * : * : -1.1
+R: 2 5 : 215 : * : * : -1.1
+R: 3 0 : 215 : * : * : -0.2
+R: 3 1 : 215 : * : * : -0.2
+R: 3 2 : 215 : * : * : -0.2
+R: 3 3 : 215 : * : * : -0.2
+R: 3 4 : 215 : * : * : -1.1
+R: 3 5 : 215 : * : * : -1.1
+R: 4 0 : 215 : * : * : -10.1
+R: 4 1 : 215 : * : * : -10.1
+R: 4 2 : 215 : * : * : -10.1
+R: 4 3 : 215 : * : * : -10.1
+R: 4 4 : 215 : * : * : -11
+R: 4 5 : 215 : * : * : -11
+R: 5 0 : 215 : * : * : 1.9
+R: 5 1 : 215 : * : * : 1.9
+R: 5 2 : 215 : * : * : 1.9
+R: 5 3 : 215 : * : * : 1.9
+R: 5 4 : 215 : * : * : 1
+R: 5 5 : 215 : * : * : 1
+R: 0 0 : 216 : * : * : -0.2
+R: 0 1 : 216 : * : * : -0.2
+R: 0 2 : 216 : * : * : -0.2
+R: 0 3 : 216 : * : * : -0.2
+R: 0 4 : 216 : * : * : -10.1
+R: 0 5 : 216 : * : * : 1.9
+R: 1 0 : 216 : * : * : -0.2
+R: 1 1 : 216 : * : * : -0.2
+R: 1 2 : 216 : * : * : -0.2
+R: 1 3 : 216 : * : * : -0.2
+R: 1 4 : 216 : * : * : -10.1
+R: 1 5 : 216 : * : * : 1.9
+R: 2 0 : 216 : * : * : -0.2
+R: 2 1 : 216 : * : * : -0.2
+R: 2 2 : 216 : * : * : -0.2
+R: 2 3 : 216 : * : * : -0.2
+R: 2 4 : 216 : * : * : -10.1
+R: 2 5 : 216 : * : * : 1.9
+R: 3 0 : 216 : * : * : -0.2
+R: 3 1 : 216 : * : * : -0.2
+R: 3 2 : 216 : * : * : -0.2
+R: 3 3 : 216 : * : * : -0.2
+R: 3 4 : 216 : * : * : -10.1
+R: 3 5 : 216 : * : * : 1.9
+R: 4 0 : 216 : * : * : -1.1
+R: 4 1 : 216 : * : * : -1.1
+R: 4 2 : 216 : * : * : -1.1
+R: 4 3 : 216 : * : * : -1.1
+R: 4 4 : 216 : * : * : -11
+R: 4 5 : 216 : * : * : -11
+R: 5 0 : 216 : * : * : -1.1
+R: 5 1 : 216 : * : * : -1.1
+R: 5 2 : 216 : * : * : -1.1
+R: 5 3 : 216 : * : * : -1.1
+R: 5 4 : 216 : * : * : 1
+R: 5 5 : 216 : * : * : 1
+R: 0 0 : 217 : * : * : -0.2
+R: 0 1 : 217 : * : * : -0.2
+R: 0 2 : 217 : * : * : -0.2
+R: 0 3 : 217 : * : * : -0.2
+R: 0 4 : 217 : * : * : -10.1
+R: 0 5 : 217 : * : * : 1.9
+R: 1 0 : 217 : * : * : -0.2
+R: 1 1 : 217 : * : * : -0.2
+R: 1 2 : 217 : * : * : -0.2
+R: 1 3 : 217 : * : * : -0.2
+R: 1 4 : 217 : * : * : -10.1
+R: 1 5 : 217 : * : * : 1.9
+R: 2 0 : 217 : * : * : -0.2
+R: 2 1 : 217 : * : * : -0.2
+R: 2 2 : 217 : * : * : -0.2
+R: 2 3 : 217 : * : * : -0.2
+R: 2 4 : 217 : * : * : -10.1
+R: 2 5 : 217 : * : * : 1.9
+R: 3 0 : 217 : * : * : -0.2
+R: 3 1 : 217 : * : * : -0.2
+R: 3 2 : 217 : * : * : -0.2
+R: 3 3 : 217 : * : * : -0.2
+R: 3 4 : 217 : * : * : -10.1
+R: 3 5 : 217 : * : * : 1.9
+R: 4 0 : 217 : * : * : -1.1
+R: 4 1 : 217 : * : * : -1.1
+R: 4 2 : 217 : * : * : -1.1
+R: 4 3 : 217 : * : * : -1.1
+R: 4 4 : 217 : * : * : -11
+R: 4 5 : 217 : * : * : -11
+R: 5 0 : 217 : * : * : -1.1
+R: 5 1 : 217 : * : * : -1.1
+R: 5 2 : 217 : * : * : -1.1
+R: 5 3 : 217 : * : * : -1.1
+R: 5 4 : 217 : * : * : 1
+R: 5 5 : 217 : * : * : 1
+R: 0 0 : 218 : * : * : -0.2
+R: 0 1 : 218 : * : * : -0.2
+R: 0 2 : 218 : * : * : -0.2
+R: 0 3 : 218 : * : * : -0.2
+R: 0 4 : 218 : * : * : -1.1
+R: 0 5 : 218 : * : * : -1.1
+R: 1 0 : 218 : * : * : -0.2
+R: 1 1 : 218 : * : * : -0.2
+R: 1 2 : 218 : * : * : -0.2
+R: 1 3 : 218 : * : * : -0.2
+R: 1 4 : 218 : * : * : -1.1
+R: 1 5 : 218 : * : * : -1.1
+R: 2 0 : 218 : * : * : -0.2
+R: 2 1 : 218 : * : * : -0.2
+R: 2 2 : 218 : * : * : -0.2
+R: 2 3 : 218 : * : * : -0.2
+R: 2 4 : 218 : * : * : -1.1
+R: 2 5 : 218 : * : * : -1.1
+R: 3 0 : 218 : * : * : -0.2
+R: 3 1 : 218 : * : * : -0.2
+R: 3 2 : 218 : * : * : -0.2
+R: 3 3 : 218 : * : * : -0.2
+R: 3 4 : 218 : * : * : -1.1
+R: 3 5 : 218 : * : * : -1.1
+R: 4 0 : 218 : * : * : -1.1
+R: 4 1 : 218 : * : * : -1.1
+R: 4 2 : 218 : * : * : -1.1
+R: 4 3 : 218 : * : * : -1.1
+R: 4 4 : 218 : * : * : -2
+R: 4 5 : 218 : * : * : -2
+R: 5 0 : 218 : * : * : -1.1
+R: 5 1 : 218 : * : * : -1.1
+R: 5 2 : 218 : * : * : -1.1
+R: 5 3 : 218 : * : * : -1.1
+R: 5 4 : 218 : * : * : -2
+R: 5 5 : 218 : * : * : -2
+R: 0 0 : 219 : * : * : -0.2
+R: 0 1 : 219 : * : * : -0.2
+R: 0 2 : 219 : * : * : -0.2
+R: 0 3 : 219 : * : * : -0.2
+R: 0 4 : 219 : * : * : -1.1
+R: 0 5 : 219 : * : * : -1.1
+R: 1 0 : 219 : * : * : -0.2
+R: 1 1 : 219 : * : * : -0.2
+R: 1 2 : 219 : * : * : -0.2
+R: 1 3 : 219 : * : * : -0.2
+R: 1 4 : 219 : * : * : -1.1
+R: 1 5 : 219 : * : * : -1.1
+R: 2 0 : 219 : * : * : -0.2
+R: 2 1 : 219 : * : * : -0.2
+R: 2 2 : 219 : * : * : -0.2
+R: 2 3 : 219 : * : * : -0.2
+R: 2 4 : 219 : * : * : -1.1
+R: 2 5 : 219 : * : * : -1.1
+R: 3 0 : 219 : * : * : -0.2
+R: 3 1 : 219 : * : * : -0.2
+R: 3 2 : 219 : * : * : -0.2
+R: 3 3 : 219 : * : * : -0.2
+R: 3 4 : 219 : * : * : -1.1
+R: 3 5 : 219 : * : * : -1.1
+R: 4 0 : 219 : * : * : -1.1
+R: 4 1 : 219 : * : * : -1.1
+R: 4 2 : 219 : * : * : -1.1
+R: 4 3 : 219 : * : * : -1.1
+R: 4 4 : 219 : * : * : -2
+R: 4 5 : 219 : * : * : -2
+R: 5 0 : 219 : * : * : -1.1
+R: 5 1 : 219 : * : * : -1.1
+R: 5 2 : 219 : * : * : -1.1
+R: 5 3 : 219 : * : * : -1.1
+R: 5 4 : 219 : * : * : -2
+R: 5 5 : 219 : * : * : -2
+R: 0 0 : 220 : * : * : -0.2
+R: 0 1 : 220 : * : * : -0.2
+R: 0 2 : 220 : * : * : -0.2
+R: 0 3 : 220 : * : * : -0.2
+R: 0 4 : 220 : * : * : -10.1
+R: 0 5 : 220 : * : * : 1.9
+R: 1 0 : 220 : * : * : -0.2
+R: 1 1 : 220 : * : * : -0.2
+R: 1 2 : 220 : * : * : -0.2
+R: 1 3 : 220 : * : * : -0.2
+R: 1 4 : 220 : * : * : -10.1
+R: 1 5 : 220 : * : * : 1.9
+R: 2 0 : 220 : * : * : -0.2
+R: 2 1 : 220 : * : * : -0.2
+R: 2 2 : 220 : * : * : -0.2
+R: 2 3 : 220 : * : * : -0.2
+R: 2 4 : 220 : * : * : -10.1
+R: 2 5 : 220 : * : * : 1.9
+R: 3 0 : 220 : * : * : -0.2
+R: 3 1 : 220 : * : * : -0.2
+R: 3 2 : 220 : * : * : -0.2
+R: 3 3 : 220 : * : * : -0.2
+R: 3 4 : 220 : * : * : -10.1
+R: 3 5 : 220 : * : * : 1.9
+R: 4 0 : 220 : * : * : -1.1
+R: 4 1 : 220 : * : * : -1.1
+R: 4 2 : 220 : * : * : -1.1
+R: 4 3 : 220 : * : * : -1.1
+R: 4 4 : 220 : * : * : -11
+R: 4 5 : 220 : * : * : -11
+R: 5 0 : 220 : * : * : -1.1
+R: 5 1 : 220 : * : * : -1.1
+R: 5 2 : 220 : * : * : -1.1
+R: 5 3 : 220 : * : * : -1.1
+R: 5 4 : 220 : * : * : 1
+R: 5 5 : 220 : * : * : 1
+R: 0 0 : 221 : * : * : -0.2
+R: 0 1 : 221 : * : * : -0.2
+R: 0 2 : 221 : * : * : -0.2
+R: 0 3 : 221 : * : * : -0.2
+R: 0 4 : 221 : * : * : -10.1
+R: 0 5 : 221 : * : * : 1.9
+R: 1 0 : 221 : * : * : -0.2
+R: 1 1 : 221 : * : * : -0.2
+R: 1 2 : 221 : * : * : -0.2
+R: 1 3 : 221 : * : * : -0.2
+R: 1 4 : 221 : * : * : -10.1
+R: 1 5 : 221 : * : * : 1.9
+R: 2 0 : 221 : * : * : -0.2
+R: 2 1 : 221 : * : * : -0.2
+R: 2 2 : 221 : * : * : -0.2
+R: 2 3 : 221 : * : * : -0.2
+R: 2 4 : 221 : * : * : -10.1
+R: 2 5 : 221 : * : * : 1.9
+R: 3 0 : 221 : * : * : -0.2
+R: 3 1 : 221 : * : * : -0.2
+R: 3 2 : 221 : * : * : -0.2
+R: 3 3 : 221 : * : * : -0.2
+R: 3 4 : 221 : * : * : -10.1
+R: 3 5 : 221 : * : * : 1.9
+R: 4 0 : 221 : * : * : -1.1
+R: 4 1 : 221 : * : * : -1.1
+R: 4 2 : 221 : * : * : -1.1
+R: 4 3 : 221 : * : * : -1.1
+R: 4 4 : 221 : * : * : -11
+R: 4 5 : 221 : * : * : -11
+R: 5 0 : 221 : * : * : -1.1
+R: 5 1 : 221 : * : * : -1.1
+R: 5 2 : 221 : * : * : -1.1
+R: 5 3 : 221 : * : * : -1.1
+R: 5 4 : 221 : * : * : 1
+R: 5 5 : 221 : * : * : 1
+R: 0 0 : 222 : * : * : -0.2
+R: 0 1 : 222 : * : * : -0.2
+R: 0 2 : 222 : * : * : -0.2
+R: 0 3 : 222 : * : * : -0.2
+R: 0 4 : 222 : * : * : -1.1
+R: 0 5 : 222 : * : * : -1.1
+R: 1 0 : 222 : * : * : -0.2
+R: 1 1 : 222 : * : * : -0.2
+R: 1 2 : 222 : * : * : -0.2
+R: 1 3 : 222 : * : * : -0.2
+R: 1 4 : 222 : * : * : -1.1
+R: 1 5 : 222 : * : * : -1.1
+R: 2 0 : 222 : * : * : -0.2
+R: 2 1 : 222 : * : * : -0.2
+R: 2 2 : 222 : * : * : -0.2
+R: 2 3 : 222 : * : * : -0.2
+R: 2 4 : 222 : * : * : -1.1
+R: 2 5 : 222 : * : * : -1.1
+R: 3 0 : 222 : * : * : -0.2
+R: 3 1 : 222 : * : * : -0.2
+R: 3 2 : 222 : * : * : -0.2
+R: 3 3 : 222 : * : * : -0.2
+R: 3 4 : 222 : * : * : -1.1
+R: 3 5 : 222 : * : * : -1.1
+R: 4 0 : 222 : * : * : -1.1
+R: 4 1 : 222 : * : * : -1.1
+R: 4 2 : 222 : * : * : -1.1
+R: 4 3 : 222 : * : * : -1.1
+R: 4 4 : 222 : * : * : -2
+R: 4 5 : 222 : * : * : -2
+R: 5 0 : 222 : * : * : -1.1
+R: 5 1 : 222 : * : * : -1.1
+R: 5 2 : 222 : * : * : -1.1
+R: 5 3 : 222 : * : * : -1.1
+R: 5 4 : 222 : * : * : -2
+R: 5 5 : 222 : * : * : -2
+R: 0 0 : 223 : * : * : -0.2
+R: 0 1 : 223 : * : * : -0.2
+R: 0 2 : 223 : * : * : -0.2
+R: 0 3 : 223 : * : * : -0.2
+R: 0 4 : 223 : * : * : -1.1
+R: 0 5 : 223 : * : * : -1.1
+R: 1 0 : 223 : * : * : -0.2
+R: 1 1 : 223 : * : * : -0.2
+R: 1 2 : 223 : * : * : -0.2
+R: 1 3 : 223 : * : * : -0.2
+R: 1 4 : 223 : * : * : -1.1
+R: 1 5 : 223 : * : * : -1.1
+R: 2 0 : 223 : * : * : -0.2
+R: 2 1 : 223 : * : * : -0.2
+R: 2 2 : 223 : * : * : -0.2
+R: 2 3 : 223 : * : * : -0.2
+R: 2 4 : 223 : * : * : -1.1
+R: 2 5 : 223 : * : * : -1.1
+R: 3 0 : 223 : * : * : -0.2
+R: 3 1 : 223 : * : * : -0.2
+R: 3 2 : 223 : * : * : -0.2
+R: 3 3 : 223 : * : * : -0.2
+R: 3 4 : 223 : * : * : -1.1
+R: 3 5 : 223 : * : * : -1.1
+R: 4 0 : 223 : * : * : -1.1
+R: 4 1 : 223 : * : * : -1.1
+R: 4 2 : 223 : * : * : -1.1
+R: 4 3 : 223 : * : * : -1.1
+R: 4 4 : 223 : * : * : -2
+R: 4 5 : 223 : * : * : -2
+R: 5 0 : 223 : * : * : -1.1
+R: 5 1 : 223 : * : * : -1.1
+R: 5 2 : 223 : * : * : -1.1
+R: 5 3 : 223 : * : * : -1.1
+R: 5 4 : 223 : * : * : -2
+R: 5 5 : 223 : * : * : -2
+R: 0 0 : 224 : * : * : -0.2
+R: 0 1 : 224 : * : * : -0.2
+R: 0 2 : 224 : * : * : -0.2
+R: 0 3 : 224 : * : * : -0.2
+R: 0 4 : 224 : * : * : -10.1
+R: 0 5 : 224 : * : * : 1.9
+R: 1 0 : 224 : * : * : -0.2
+R: 1 1 : 224 : * : * : -0.2
+R: 1 2 : 224 : * : * : -0.2
+R: 1 3 : 224 : * : * : -0.2
+R: 1 4 : 224 : * : * : -10.1
+R: 1 5 : 224 : * : * : 1.9
+R: 2 0 : 224 : * : * : -0.2
+R: 2 1 : 224 : * : * : -0.2
+R: 2 2 : 224 : * : * : -0.2
+R: 2 3 : 224 : * : * : -0.2
+R: 2 4 : 224 : * : * : -10.1
+R: 2 5 : 224 : * : * : 1.9
+R: 3 0 : 224 : * : * : -0.2
+R: 3 1 : 224 : * : * : -0.2
+R: 3 2 : 224 : * : * : -0.2
+R: 3 3 : 224 : * : * : -0.2
+R: 3 4 : 224 : * : * : -10.1
+R: 3 5 : 224 : * : * : 1.9
+R: 4 0 : 224 : * : * : -10.1
+R: 4 1 : 224 : * : * : -10.1
+R: 4 2 : 224 : * : * : -10.1
+R: 4 3 : 224 : * : * : -10.1
+R: 4 4 : 224 : * : * : 0
+R: 4 5 : 224 : * : * : 0
+R: 5 0 : 224 : * : * : 1.9
+R: 5 1 : 224 : * : * : 1.9
+R: 5 2 : 224 : * : * : 1.9
+R: 5 3 : 224 : * : * : 1.9
+R: 5 4 : 224 : * : * : 4
+R: 5 5 : 224 : * : * : 4
+R: 0 0 : 225 : * : * : -0.2
+R: 0 1 : 225 : * : * : -0.2
+R: 0 2 : 225 : * : * : -0.2
+R: 0 3 : 225 : * : * : -0.2
+R: 0 4 : 225 : * : * : -10.1
+R: 0 5 : 225 : * : * : 1.9
+R: 1 0 : 225 : * : * : -0.2
+R: 1 1 : 225 : * : * : -0.2
+R: 1 2 : 225 : * : * : -0.2
+R: 1 3 : 225 : * : * : -0.2
+R: 1 4 : 225 : * : * : -10.1
+R: 1 5 : 225 : * : * : 1.9
+R: 2 0 : 225 : * : * : -0.2
+R: 2 1 : 225 : * : * : -0.2
+R: 2 2 : 225 : * : * : -0.2
+R: 2 3 : 225 : * : * : -0.2
+R: 2 4 : 225 : * : * : -10.1
+R: 2 5 : 225 : * : * : 1.9
+R: 3 0 : 225 : * : * : -0.2
+R: 3 1 : 225 : * : * : -0.2
+R: 3 2 : 225 : * : * : -0.2
+R: 3 3 : 225 : * : * : -0.2
+R: 3 4 : 225 : * : * : -10.1
+R: 3 5 : 225 : * : * : 1.9
+R: 4 0 : 225 : * : * : -10.1
+R: 4 1 : 225 : * : * : -10.1
+R: 4 2 : 225 : * : * : -10.1
+R: 4 3 : 225 : * : * : -10.1
+R: 4 4 : 225 : * : * : 0
+R: 4 5 : 225 : * : * : 0
+R: 5 0 : 225 : * : * : 1.9
+R: 5 1 : 225 : * : * : 1.9
+R: 5 2 : 225 : * : * : 1.9
+R: 5 3 : 225 : * : * : 1.9
+R: 5 4 : 225 : * : * : 4
+R: 5 5 : 225 : * : * : 4
+R: 0 0 : 226 : * : * : -0.2
+R: 0 1 : 226 : * : * : -0.2
+R: 0 2 : 226 : * : * : -0.2
+R: 0 3 : 226 : * : * : -0.2
+R: 0 4 : 226 : * : * : -10.1
+R: 0 5 : 226 : * : * : 1.9
+R: 1 0 : 226 : * : * : -0.2
+R: 1 1 : 226 : * : * : -0.2
+R: 1 2 : 226 : * : * : -0.2
+R: 1 3 : 226 : * : * : -0.2
+R: 1 4 : 226 : * : * : -10.1
+R: 1 5 : 226 : * : * : 1.9
+R: 2 0 : 226 : * : * : -0.2
+R: 2 1 : 226 : * : * : -0.2
+R: 2 2 : 226 : * : * : -0.2
+R: 2 3 : 226 : * : * : -0.2
+R: 2 4 : 226 : * : * : -10.1
+R: 2 5 : 226 : * : * : 1.9
+R: 3 0 : 226 : * : * : -0.2
+R: 3 1 : 226 : * : * : -0.2
+R: 3 2 : 226 : * : * : -0.2
+R: 3 3 : 226 : * : * : -0.2
+R: 3 4 : 226 : * : * : -10.1
+R: 3 5 : 226 : * : * : 1.9
+R: 4 0 : 226 : * : * : -10.1
+R: 4 1 : 226 : * : * : -10.1
+R: 4 2 : 226 : * : * : -10.1
+R: 4 3 : 226 : * : * : -10.1
+R: 4 4 : 226 : * : * : 0
+R: 4 5 : 226 : * : * : 0
+R: 5 0 : 226 : * : * : 1.9
+R: 5 1 : 226 : * : * : 1.9
+R: 5 2 : 226 : * : * : 1.9
+R: 5 3 : 226 : * : * : 1.9
+R: 5 4 : 226 : * : * : 4
+R: 5 5 : 226 : * : * : 4
+R: 0 0 : 227 : * : * : -0.2
+R: 0 1 : 227 : * : * : -0.2
+R: 0 2 : 227 : * : * : -0.2
+R: 0 3 : 227 : * : * : -0.2
+R: 0 4 : 227 : * : * : -10.1
+R: 0 5 : 227 : * : * : 1.9
+R: 1 0 : 227 : * : * : -0.2
+R: 1 1 : 227 : * : * : -0.2
+R: 1 2 : 227 : * : * : -0.2
+R: 1 3 : 227 : * : * : -0.2
+R: 1 4 : 227 : * : * : -10.1
+R: 1 5 : 227 : * : * : 1.9
+R: 2 0 : 227 : * : * : -0.2
+R: 2 1 : 227 : * : * : -0.2
+R: 2 2 : 227 : * : * : -0.2
+R: 2 3 : 227 : * : * : -0.2
+R: 2 4 : 227 : * : * : -10.1
+R: 2 5 : 227 : * : * : 1.9
+R: 3 0 : 227 : * : * : -0.2
+R: 3 1 : 227 : * : * : -0.2
+R: 3 2 : 227 : * : * : -0.2
+R: 3 3 : 227 : * : * : -0.2
+R: 3 4 : 227 : * : * : -10.1
+R: 3 5 : 227 : * : * : 1.9
+R: 4 0 : 227 : * : * : -10.1
+R: 4 1 : 227 : * : * : -10.1
+R: 4 2 : 227 : * : * : -10.1
+R: 4 3 : 227 : * : * : -10.1
+R: 4 4 : 227 : * : * : 0
+R: 4 5 : 227 : * : * : 0
+R: 5 0 : 227 : * : * : 1.9
+R: 5 1 : 227 : * : * : 1.9
+R: 5 2 : 227 : * : * : 1.9
+R: 5 3 : 227 : * : * : 1.9
+R: 5 4 : 227 : * : * : 4
+R: 5 5 : 227 : * : * : 4
+R: 0 0 : 228 : * : * : -0.2
+R: 0 1 : 228 : * : * : -0.2
+R: 0 2 : 228 : * : * : -0.2
+R: 0 3 : 228 : * : * : -0.2
+R: 0 4 : 228 : * : * : -1.1
+R: 0 5 : 228 : * : * : -1.1
+R: 1 0 : 228 : * : * : -0.2
+R: 1 1 : 228 : * : * : -0.2
+R: 1 2 : 228 : * : * : -0.2
+R: 1 3 : 228 : * : * : -0.2
+R: 1 4 : 228 : * : * : -1.1
+R: 1 5 : 228 : * : * : -1.1
+R: 2 0 : 228 : * : * : -0.2
+R: 2 1 : 228 : * : * : -0.2
+R: 2 2 : 228 : * : * : -0.2
+R: 2 3 : 228 : * : * : -0.2
+R: 2 4 : 228 : * : * : -1.1
+R: 2 5 : 228 : * : * : -1.1
+R: 3 0 : 228 : * : * : -0.2
+R: 3 1 : 228 : * : * : -0.2
+R: 3 2 : 228 : * : * : -0.2
+R: 3 3 : 228 : * : * : -0.2
+R: 3 4 : 228 : * : * : -1.1
+R: 3 5 : 228 : * : * : -1.1
+R: 4 0 : 228 : * : * : -10.1
+R: 4 1 : 228 : * : * : -10.1
+R: 4 2 : 228 : * : * : -10.1
+R: 4 3 : 228 : * : * : -10.1
+R: 4 4 : 228 : * : * : -11
+R: 4 5 : 228 : * : * : -11
+R: 5 0 : 228 : * : * : 1.9
+R: 5 1 : 228 : * : * : 1.9
+R: 5 2 : 228 : * : * : 1.9
+R: 5 3 : 228 : * : * : 1.9
+R: 5 4 : 228 : * : * : 1
+R: 5 5 : 228 : * : * : 1
+R: 0 0 : 229 : * : * : -0.2
+R: 0 1 : 229 : * : * : -0.2
+R: 0 2 : 229 : * : * : -0.2
+R: 0 3 : 229 : * : * : -0.2
+R: 0 4 : 229 : * : * : -1.1
+R: 0 5 : 229 : * : * : -1.1
+R: 1 0 : 229 : * : * : -0.2
+R: 1 1 : 229 : * : * : -0.2
+R: 1 2 : 229 : * : * : -0.2
+R: 1 3 : 229 : * : * : -0.2
+R: 1 4 : 229 : * : * : -1.1
+R: 1 5 : 229 : * : * : -1.1
+R: 2 0 : 229 : * : * : -0.2
+R: 2 1 : 229 : * : * : -0.2
+R: 2 2 : 229 : * : * : -0.2
+R: 2 3 : 229 : * : * : -0.2
+R: 2 4 : 229 : * : * : -1.1
+R: 2 5 : 229 : * : * : -1.1
+R: 3 0 : 229 : * : * : -0.2
+R: 3 1 : 229 : * : * : -0.2
+R: 3 2 : 229 : * : * : -0.2
+R: 3 3 : 229 : * : * : -0.2
+R: 3 4 : 229 : * : * : -1.1
+R: 3 5 : 229 : * : * : -1.1
+R: 4 0 : 229 : * : * : -10.1
+R: 4 1 : 229 : * : * : -10.1
+R: 4 2 : 229 : * : * : -10.1
+R: 4 3 : 229 : * : * : -10.1
+R: 4 4 : 229 : * : * : -11
+R: 4 5 : 229 : * : * : -11
+R: 5 0 : 229 : * : * : 1.9
+R: 5 1 : 229 : * : * : 1.9
+R: 5 2 : 229 : * : * : 1.9
+R: 5 3 : 229 : * : * : 1.9
+R: 5 4 : 229 : * : * : 1
+R: 5 5 : 229 : * : * : 1
+R: 0 0 : 230 : * : * : -0.2
+R: 0 1 : 230 : * : * : -0.2
+R: 0 2 : 230 : * : * : -0.2
+R: 0 3 : 230 : * : * : -0.2
+R: 0 4 : 230 : * : * : -1.1
+R: 0 5 : 230 : * : * : -1.1
+R: 1 0 : 230 : * : * : -0.2
+R: 1 1 : 230 : * : * : -0.2
+R: 1 2 : 230 : * : * : -0.2
+R: 1 3 : 230 : * : * : -0.2
+R: 1 4 : 230 : * : * : -1.1
+R: 1 5 : 230 : * : * : -1.1
+R: 2 0 : 230 : * : * : -0.2
+R: 2 1 : 230 : * : * : -0.2
+R: 2 2 : 230 : * : * : -0.2
+R: 2 3 : 230 : * : * : -0.2
+R: 2 4 : 230 : * : * : -1.1
+R: 2 5 : 230 : * : * : -1.1
+R: 3 0 : 230 : * : * : -0.2
+R: 3 1 : 230 : * : * : -0.2
+R: 3 2 : 230 : * : * : -0.2
+R: 3 3 : 230 : * : * : -0.2
+R: 3 4 : 230 : * : * : -1.1
+R: 3 5 : 230 : * : * : -1.1
+R: 4 0 : 230 : * : * : -10.1
+R: 4 1 : 230 : * : * : -10.1
+R: 4 2 : 230 : * : * : -10.1
+R: 4 3 : 230 : * : * : -10.1
+R: 4 4 : 230 : * : * : -11
+R: 4 5 : 230 : * : * : -11
+R: 5 0 : 230 : * : * : 1.9
+R: 5 1 : 230 : * : * : 1.9
+R: 5 2 : 230 : * : * : 1.9
+R: 5 3 : 230 : * : * : 1.9
+R: 5 4 : 230 : * : * : 1
+R: 5 5 : 230 : * : * : 1
+R: 0 0 : 231 : * : * : -0.2
+R: 0 1 : 231 : * : * : -0.2
+R: 0 2 : 231 : * : * : -0.2
+R: 0 3 : 231 : * : * : -0.2
+R: 0 4 : 231 : * : * : -1.1
+R: 0 5 : 231 : * : * : -1.1
+R: 1 0 : 231 : * : * : -0.2
+R: 1 1 : 231 : * : * : -0.2
+R: 1 2 : 231 : * : * : -0.2
+R: 1 3 : 231 : * : * : -0.2
+R: 1 4 : 231 : * : * : -1.1
+R: 1 5 : 231 : * : * : -1.1
+R: 2 0 : 231 : * : * : -0.2
+R: 2 1 : 231 : * : * : -0.2
+R: 2 2 : 231 : * : * : -0.2
+R: 2 3 : 231 : * : * : -0.2
+R: 2 4 : 231 : * : * : -1.1
+R: 2 5 : 231 : * : * : -1.1
+R: 3 0 : 231 : * : * : -0.2
+R: 3 1 : 231 : * : * : -0.2
+R: 3 2 : 231 : * : * : -0.2
+R: 3 3 : 231 : * : * : -0.2
+R: 3 4 : 231 : * : * : -1.1
+R: 3 5 : 231 : * : * : -1.1
+R: 4 0 : 231 : * : * : -10.1
+R: 4 1 : 231 : * : * : -10.1
+R: 4 2 : 231 : * : * : -10.1
+R: 4 3 : 231 : * : * : -10.1
+R: 4 4 : 231 : * : * : -11
+R: 4 5 : 231 : * : * : -11
+R: 5 0 : 231 : * : * : 1.9
+R: 5 1 : 231 : * : * : 1.9
+R: 5 2 : 231 : * : * : 1.9
+R: 5 3 : 231 : * : * : 1.9
+R: 5 4 : 231 : * : * : 1
+R: 5 5 : 231 : * : * : 1
+R: 0 0 : 232 : * : * : -0.2
+R: 0 1 : 232 : * : * : -0.2
+R: 0 2 : 232 : * : * : -0.2
+R: 0 3 : 232 : * : * : -0.2
+R: 0 4 : 232 : * : * : -10.1
+R: 0 5 : 232 : * : * : 1.9
+R: 1 0 : 232 : * : * : -0.2
+R: 1 1 : 232 : * : * : -0.2
+R: 1 2 : 232 : * : * : -0.2
+R: 1 3 : 232 : * : * : -0.2
+R: 1 4 : 232 : * : * : -10.1
+R: 1 5 : 232 : * : * : 1.9
+R: 2 0 : 232 : * : * : -0.2
+R: 2 1 : 232 : * : * : -0.2
+R: 2 2 : 232 : * : * : -0.2
+R: 2 3 : 232 : * : * : -0.2
+R: 2 4 : 232 : * : * : -10.1
+R: 2 5 : 232 : * : * : 1.9
+R: 3 0 : 232 : * : * : -0.2
+R: 3 1 : 232 : * : * : -0.2
+R: 3 2 : 232 : * : * : -0.2
+R: 3 3 : 232 : * : * : -0.2
+R: 3 4 : 232 : * : * : -10.1
+R: 3 5 : 232 : * : * : 1.9
+R: 4 0 : 232 : * : * : -1.1
+R: 4 1 : 232 : * : * : -1.1
+R: 4 2 : 232 : * : * : -1.1
+R: 4 3 : 232 : * : * : -1.1
+R: 4 4 : 232 : * : * : -11
+R: 4 5 : 232 : * : * : -11
+R: 5 0 : 232 : * : * : -1.1
+R: 5 1 : 232 : * : * : -1.1
+R: 5 2 : 232 : * : * : -1.1
+R: 5 3 : 232 : * : * : -1.1
+R: 5 4 : 232 : * : * : 1
+R: 5 5 : 232 : * : * : 1
+R: 0 0 : 233 : * : * : -0.2
+R: 0 1 : 233 : * : * : -0.2
+R: 0 2 : 233 : * : * : -0.2
+R: 0 3 : 233 : * : * : -0.2
+R: 0 4 : 233 : * : * : -10.1
+R: 0 5 : 233 : * : * : 1.9
+R: 1 0 : 233 : * : * : -0.2
+R: 1 1 : 233 : * : * : -0.2
+R: 1 2 : 233 : * : * : -0.2
+R: 1 3 : 233 : * : * : -0.2
+R: 1 4 : 233 : * : * : -10.1
+R: 1 5 : 233 : * : * : 1.9
+R: 2 0 : 233 : * : * : -0.2
+R: 2 1 : 233 : * : * : -0.2
+R: 2 2 : 233 : * : * : -0.2
+R: 2 3 : 233 : * : * : -0.2
+R: 2 4 : 233 : * : * : -10.1
+R: 2 5 : 233 : * : * : 1.9
+R: 3 0 : 233 : * : * : -0.2
+R: 3 1 : 233 : * : * : -0.2
+R: 3 2 : 233 : * : * : -0.2
+R: 3 3 : 233 : * : * : -0.2
+R: 3 4 : 233 : * : * : -10.1
+R: 3 5 : 233 : * : * : 1.9
+R: 4 0 : 233 : * : * : -1.1
+R: 4 1 : 233 : * : * : -1.1
+R: 4 2 : 233 : * : * : -1.1
+R: 4 3 : 233 : * : * : -1.1
+R: 4 4 : 233 : * : * : -11
+R: 4 5 : 233 : * : * : -11
+R: 5 0 : 233 : * : * : -1.1
+R: 5 1 : 233 : * : * : -1.1
+R: 5 2 : 233 : * : * : -1.1
+R: 5 3 : 233 : * : * : -1.1
+R: 5 4 : 233 : * : * : 1
+R: 5 5 : 233 : * : * : 1
+R: 0 0 : 234 : * : * : -0.2
+R: 0 1 : 234 : * : * : -0.2
+R: 0 2 : 234 : * : * : -0.2
+R: 0 3 : 234 : * : * : -0.2
+R: 0 4 : 234 : * : * : -10.1
+R: 0 5 : 234 : * : * : 1.9
+R: 1 0 : 234 : * : * : -0.2
+R: 1 1 : 234 : * : * : -0.2
+R: 1 2 : 234 : * : * : -0.2
+R: 1 3 : 234 : * : * : -0.2
+R: 1 4 : 234 : * : * : -10.1
+R: 1 5 : 234 : * : * : 1.9
+R: 2 0 : 234 : * : * : -0.2
+R: 2 1 : 234 : * : * : -0.2
+R: 2 2 : 234 : * : * : -0.2
+R: 2 3 : 234 : * : * : -0.2
+R: 2 4 : 234 : * : * : -10.1
+R: 2 5 : 234 : * : * : 1.9
+R: 3 0 : 234 : * : * : -0.2
+R: 3 1 : 234 : * : * : -0.2
+R: 3 2 : 234 : * : * : -0.2
+R: 3 3 : 234 : * : * : -0.2
+R: 3 4 : 234 : * : * : -10.1
+R: 3 5 : 234 : * : * : 1.9
+R: 4 0 : 234 : * : * : -1.1
+R: 4 1 : 234 : * : * : -1.1
+R: 4 2 : 234 : * : * : -1.1
+R: 4 3 : 234 : * : * : -1.1
+R: 4 4 : 234 : * : * : -11
+R: 4 5 : 234 : * : * : -11
+R: 5 0 : 234 : * : * : -1.1
+R: 5 1 : 234 : * : * : -1.1
+R: 5 2 : 234 : * : * : -1.1
+R: 5 3 : 234 : * : * : -1.1
+R: 5 4 : 234 : * : * : 1
+R: 5 5 : 234 : * : * : 1
+R: 0 0 : 235 : * : * : -0.2
+R: 0 1 : 235 : * : * : -0.2
+R: 0 2 : 235 : * : * : -0.2
+R: 0 3 : 235 : * : * : -0.2
+R: 0 4 : 235 : * : * : -10.1
+R: 0 5 : 235 : * : * : 1.9
+R: 1 0 : 235 : * : * : -0.2
+R: 1 1 : 235 : * : * : -0.2
+R: 1 2 : 235 : * : * : -0.2
+R: 1 3 : 235 : * : * : -0.2
+R: 1 4 : 235 : * : * : -10.1
+R: 1 5 : 235 : * : * : 1.9
+R: 2 0 : 235 : * : * : -0.2
+R: 2 1 : 235 : * : * : -0.2
+R: 2 2 : 235 : * : * : -0.2
+R: 2 3 : 235 : * : * : -0.2
+R: 2 4 : 235 : * : * : -10.1
+R: 2 5 : 235 : * : * : 1.9
+R: 3 0 : 235 : * : * : -0.2
+R: 3 1 : 235 : * : * : -0.2
+R: 3 2 : 235 : * : * : -0.2
+R: 3 3 : 235 : * : * : -0.2
+R: 3 4 : 235 : * : * : -10.1
+R: 3 5 : 235 : * : * : 1.9
+R: 4 0 : 235 : * : * : -1.1
+R: 4 1 : 235 : * : * : -1.1
+R: 4 2 : 235 : * : * : -1.1
+R: 4 3 : 235 : * : * : -1.1
+R: 4 4 : 235 : * : * : -11
+R: 4 5 : 235 : * : * : -11
+R: 5 0 : 235 : * : * : -1.1
+R: 5 1 : 235 : * : * : -1.1
+R: 5 2 : 235 : * : * : -1.1
+R: 5 3 : 235 : * : * : -1.1
+R: 5 4 : 235 : * : * : 1
+R: 5 5 : 235 : * : * : 1
+R: 0 0 : 236 : * : * : -0.2
+R: 0 1 : 236 : * : * : -0.2
+R: 0 2 : 236 : * : * : -0.2
+R: 0 3 : 236 : * : * : -0.2
+R: 0 4 : 236 : * : * : -1.1
+R: 0 5 : 236 : * : * : -1.1
+R: 1 0 : 236 : * : * : -0.2
+R: 1 1 : 236 : * : * : -0.2
+R: 1 2 : 236 : * : * : -0.2
+R: 1 3 : 236 : * : * : -0.2
+R: 1 4 : 236 : * : * : -1.1
+R: 1 5 : 236 : * : * : -1.1
+R: 2 0 : 236 : * : * : -0.2
+R: 2 1 : 236 : * : * : -0.2
+R: 2 2 : 236 : * : * : -0.2
+R: 2 3 : 236 : * : * : -0.2
+R: 2 4 : 236 : * : * : -1.1
+R: 2 5 : 236 : * : * : -1.1
+R: 3 0 : 236 : * : * : -0.2
+R: 3 1 : 236 : * : * : -0.2
+R: 3 2 : 236 : * : * : -0.2
+R: 3 3 : 236 : * : * : -0.2
+R: 3 4 : 236 : * : * : -1.1
+R: 3 5 : 236 : * : * : -1.1
+R: 4 0 : 236 : * : * : -1.1
+R: 4 1 : 236 : * : * : -1.1
+R: 4 2 : 236 : * : * : -1.1
+R: 4 3 : 236 : * : * : -1.1
+R: 4 4 : 236 : * : * : -2
+R: 4 5 : 236 : * : * : -2
+R: 5 0 : 236 : * : * : -1.1
+R: 5 1 : 236 : * : * : -1.1
+R: 5 2 : 236 : * : * : -1.1
+R: 5 3 : 236 : * : * : -1.1
+R: 5 4 : 236 : * : * : -2
+R: 5 5 : 236 : * : * : -2
+R: 0 0 : 237 : * : * : -0.2
+R: 0 1 : 237 : * : * : -0.2
+R: 0 2 : 237 : * : * : -0.2
+R: 0 3 : 237 : * : * : -0.2
+R: 0 4 : 237 : * : * : -1.1
+R: 0 5 : 237 : * : * : -1.1
+R: 1 0 : 237 : * : * : -0.2
+R: 1 1 : 237 : * : * : -0.2
+R: 1 2 : 237 : * : * : -0.2
+R: 1 3 : 237 : * : * : -0.2
+R: 1 4 : 237 : * : * : -1.1
+R: 1 5 : 237 : * : * : -1.1
+R: 2 0 : 237 : * : * : -0.2
+R: 2 1 : 237 : * : * : -0.2
+R: 2 2 : 237 : * : * : -0.2
+R: 2 3 : 237 : * : * : -0.2
+R: 2 4 : 237 : * : * : -1.1
+R: 2 5 : 237 : * : * : -1.1
+R: 3 0 : 237 : * : * : -0.2
+R: 3 1 : 237 : * : * : -0.2
+R: 3 2 : 237 : * : * : -0.2
+R: 3 3 : 237 : * : * : -0.2
+R: 3 4 : 237 : * : * : -1.1
+R: 3 5 : 237 : * : * : -1.1
+R: 4 0 : 237 : * : * : -1.1
+R: 4 1 : 237 : * : * : -1.1
+R: 4 2 : 237 : * : * : -1.1
+R: 4 3 : 237 : * : * : -1.1
+R: 4 4 : 237 : * : * : -2
+R: 4 5 : 237 : * : * : -2
+R: 5 0 : 237 : * : * : -1.1
+R: 5 1 : 237 : * : * : -1.1
+R: 5 2 : 237 : * : * : -1.1
+R: 5 3 : 237 : * : * : -1.1
+R: 5 4 : 237 : * : * : -2
+R: 5 5 : 237 : * : * : -2
+R: 0 0 : 238 : * : * : -0.2
+R: 0 1 : 238 : * : * : -0.2
+R: 0 2 : 238 : * : * : -0.2
+R: 0 3 : 238 : * : * : -0.2
+R: 0 4 : 238 : * : * : -1.1
+R: 0 5 : 238 : * : * : -1.1
+R: 1 0 : 238 : * : * : -0.2
+R: 1 1 : 238 : * : * : -0.2
+R: 1 2 : 238 : * : * : -0.2
+R: 1 3 : 238 : * : * : -0.2
+R: 1 4 : 238 : * : * : -1.1
+R: 1 5 : 238 : * : * : -1.1
+R: 2 0 : 238 : * : * : -0.2
+R: 2 1 : 238 : * : * : -0.2
+R: 2 2 : 238 : * : * : -0.2
+R: 2 3 : 238 : * : * : -0.2
+R: 2 4 : 238 : * : * : -1.1
+R: 2 5 : 238 : * : * : -1.1
+R: 3 0 : 238 : * : * : -0.2
+R: 3 1 : 238 : * : * : -0.2
+R: 3 2 : 238 : * : * : -0.2
+R: 3 3 : 238 : * : * : -0.2
+R: 3 4 : 238 : * : * : -1.1
+R: 3 5 : 238 : * : * : -1.1
+R: 4 0 : 238 : * : * : -1.1
+R: 4 1 : 238 : * : * : -1.1
+R: 4 2 : 238 : * : * : -1.1
+R: 4 3 : 238 : * : * : -1.1
+R: 4 4 : 238 : * : * : -2
+R: 4 5 : 238 : * : * : -2
+R: 5 0 : 238 : * : * : -1.1
+R: 5 1 : 238 : * : * : -1.1
+R: 5 2 : 238 : * : * : -1.1
+R: 5 3 : 238 : * : * : -1.1
+R: 5 4 : 238 : * : * : -2
+R: 5 5 : 238 : * : * : -2
+R: 0 0 : 239 : * : * : -0.2
+R: 0 1 : 239 : * : * : -0.2
+R: 0 2 : 239 : * : * : -0.2
+R: 0 3 : 239 : * : * : -0.2
+R: 0 4 : 239 : * : * : -1.1
+R: 0 5 : 239 : * : * : -1.1
+R: 1 0 : 239 : * : * : -0.2
+R: 1 1 : 239 : * : * : -0.2
+R: 1 2 : 239 : * : * : -0.2
+R: 1 3 : 239 : * : * : -0.2
+R: 1 4 : 239 : * : * : -1.1
+R: 1 5 : 239 : * : * : -1.1
+R: 2 0 : 239 : * : * : -0.2
+R: 2 1 : 239 : * : * : -0.2
+R: 2 2 : 239 : * : * : -0.2
+R: 2 3 : 239 : * : * : -0.2
+R: 2 4 : 239 : * : * : -1.1
+R: 2 5 : 239 : * : * : -1.1
+R: 3 0 : 239 : * : * : -0.2
+R: 3 1 : 239 : * : * : -0.2
+R: 3 2 : 239 : * : * : -0.2
+R: 3 3 : 239 : * : * : -0.2
+R: 3 4 : 239 : * : * : -1.1
+R: 3 5 : 239 : * : * : -1.1
+R: 4 0 : 239 : * : * : -1.1
+R: 4 1 : 239 : * : * : -1.1
+R: 4 2 : 239 : * : * : -1.1
+R: 4 3 : 239 : * : * : -1.1
+R: 4 4 : 239 : * : * : -2
+R: 4 5 : 239 : * : * : -2
+R: 5 0 : 239 : * : * : -1.1
+R: 5 1 : 239 : * : * : -1.1
+R: 5 2 : 239 : * : * : -1.1
+R: 5 3 : 239 : * : * : -1.1
+R: 5 4 : 239 : * : * : -2
+R: 5 5 : 239 : * : * : -2
+R: 0 0 : 240 : * : * : -0.2
+R: 0 1 : 240 : * : * : -0.2
+R: 0 2 : 240 : * : * : -0.2
+R: 0 3 : 240 : * : * : -0.2
+R: 0 4 : 240 : * : * : -10.1
+R: 0 5 : 240 : * : * : 1.9
+R: 1 0 : 240 : * : * : -0.2
+R: 1 1 : 240 : * : * : -0.2
+R: 1 2 : 240 : * : * : -0.2
+R: 1 3 : 240 : * : * : -0.2
+R: 1 4 : 240 : * : * : -10.1
+R: 1 5 : 240 : * : * : 1.9
+R: 2 0 : 240 : * : * : -0.2
+R: 2 1 : 240 : * : * : -0.2
+R: 2 2 : 240 : * : * : -0.2
+R: 2 3 : 240 : * : * : -0.2
+R: 2 4 : 240 : * : * : -10.1
+R: 2 5 : 240 : * : * : 1.9
+R: 3 0 : 240 : * : * : -0.2
+R: 3 1 : 240 : * : * : -0.2
+R: 3 2 : 240 : * : * : -0.2
+R: 3 3 : 240 : * : * : -0.2
+R: 3 4 : 240 : * : * : -10.1
+R: 3 5 : 240 : * : * : 1.9
+R: 4 0 : 240 : * : * : -10.1
+R: 4 1 : 240 : * : * : -10.1
+R: 4 2 : 240 : * : * : -10.1
+R: 4 3 : 240 : * : * : -10.1
+R: 4 4 : 240 : * : * : 6
+R: 4 5 : 240 : * : * : 0
+R: 5 0 : 240 : * : * : 1.9
+R: 5 1 : 240 : * : * : 1.9
+R: 5 2 : 240 : * : * : 1.9
+R: 5 3 : 240 : * : * : 1.9
+R: 5 4 : 240 : * : * : 0
+R: 5 5 : 240 : * : * : 1
+R: 0 0 : 241 : * : * : -0.2
+R: 0 1 : 241 : * : * : -0.2
+R: 0 2 : 241 : * : * : -0.2
+R: 0 3 : 241 : * : * : -0.2
+R: 0 4 : 241 : * : * : -10.1
+R: 0 5 : 241 : * : * : 1.9
+R: 1 0 : 241 : * : * : -0.2
+R: 1 1 : 241 : * : * : -0.2
+R: 1 2 : 241 : * : * : -0.2
+R: 1 3 : 241 : * : * : -0.2
+R: 1 4 : 241 : * : * : -10.1
+R: 1 5 : 241 : * : * : 1.9
+R: 2 0 : 241 : * : * : -0.2
+R: 2 1 : 241 : * : * : -0.2
+R: 2 2 : 241 : * : * : -0.2
+R: 2 3 : 241 : * : * : -0.2
+R: 2 4 : 241 : * : * : -10.1
+R: 2 5 : 241 : * : * : 1.9
+R: 3 0 : 241 : * : * : -0.2
+R: 3 1 : 241 : * : * : -0.2
+R: 3 2 : 241 : * : * : -0.2
+R: 3 3 : 241 : * : * : -0.2
+R: 3 4 : 241 : * : * : -10.1
+R: 3 5 : 241 : * : * : 1.9
+R: 4 0 : 241 : * : * : -10.1
+R: 4 1 : 241 : * : * : -10.1
+R: 4 2 : 241 : * : * : -10.1
+R: 4 3 : 241 : * : * : -10.1
+R: 4 4 : 241 : * : * : 6
+R: 4 5 : 241 : * : * : 0
+R: 5 0 : 241 : * : * : 1.9
+R: 5 1 : 241 : * : * : 1.9
+R: 5 2 : 241 : * : * : 1.9
+R: 5 3 : 241 : * : * : 1.9
+R: 5 4 : 241 : * : * : 0
+R: 5 5 : 241 : * : * : 1
+R: 0 0 : 242 : * : * : -0.2
+R: 0 1 : 242 : * : * : -0.2
+R: 0 2 : 242 : * : * : -0.2
+R: 0 3 : 242 : * : * : -0.2
+R: 0 4 : 242 : * : * : -10.1
+R: 0 5 : 242 : * : * : 1.9
+R: 1 0 : 242 : * : * : -0.2
+R: 1 1 : 242 : * : * : -0.2
+R: 1 2 : 242 : * : * : -0.2
+R: 1 3 : 242 : * : * : -0.2
+R: 1 4 : 242 : * : * : -10.1
+R: 1 5 : 242 : * : * : 1.9
+R: 2 0 : 242 : * : * : -0.2
+R: 2 1 : 242 : * : * : -0.2
+R: 2 2 : 242 : * : * : -0.2
+R: 2 3 : 242 : * : * : -0.2
+R: 2 4 : 242 : * : * : -10.1
+R: 2 5 : 242 : * : * : 1.9
+R: 3 0 : 242 : * : * : -0.2
+R: 3 1 : 242 : * : * : -0.2
+R: 3 2 : 242 : * : * : -0.2
+R: 3 3 : 242 : * : * : -0.2
+R: 3 4 : 242 : * : * : -10.1
+R: 3 5 : 242 : * : * : 1.9
+R: 4 0 : 242 : * : * : -10.1
+R: 4 1 : 242 : * : * : -10.1
+R: 4 2 : 242 : * : * : -10.1
+R: 4 3 : 242 : * : * : -10.1
+R: 4 4 : 242 : * : * : 6
+R: 4 5 : 242 : * : * : 0
+R: 5 0 : 242 : * : * : 1.9
+R: 5 1 : 242 : * : * : 1.9
+R: 5 2 : 242 : * : * : 1.9
+R: 5 3 : 242 : * : * : 1.9
+R: 5 4 : 242 : * : * : 0
+R: 5 5 : 242 : * : * : 1
+R: 0 0 : 243 : * : * : -0.2
+R: 0 1 : 243 : * : * : -0.2
+R: 0 2 : 243 : * : * : -0.2
+R: 0 3 : 243 : * : * : -0.2
+R: 0 4 : 243 : * : * : -10.1
+R: 0 5 : 243 : * : * : 1.9
+R: 1 0 : 243 : * : * : -0.2
+R: 1 1 : 243 : * : * : -0.2
+R: 1 2 : 243 : * : * : -0.2
+R: 1 3 : 243 : * : * : -0.2
+R: 1 4 : 243 : * : * : -10.1
+R: 1 5 : 243 : * : * : 1.9
+R: 2 0 : 243 : * : * : -0.2
+R: 2 1 : 243 : * : * : -0.2
+R: 2 2 : 243 : * : * : -0.2
+R: 2 3 : 243 : * : * : -0.2
+R: 2 4 : 243 : * : * : -10.1
+R: 2 5 : 243 : * : * : 1.9
+R: 3 0 : 243 : * : * : -0.2
+R: 3 1 : 243 : * : * : -0.2
+R: 3 2 : 243 : * : * : -0.2
+R: 3 3 : 243 : * : * : -0.2
+R: 3 4 : 243 : * : * : -10.1
+R: 3 5 : 243 : * : * : 1.9
+R: 4 0 : 243 : * : * : -10.1
+R: 4 1 : 243 : * : * : -10.1
+R: 4 2 : 243 : * : * : -10.1
+R: 4 3 : 243 : * : * : -10.1
+R: 4 4 : 243 : * : * : 6
+R: 4 5 : 243 : * : * : 0
+R: 5 0 : 243 : * : * : 1.9
+R: 5 1 : 243 : * : * : 1.9
+R: 5 2 : 243 : * : * : 1.9
+R: 5 3 : 243 : * : * : 1.9
+R: 5 4 : 243 : * : * : 0
+R: 5 5 : 243 : * : * : 1
+R: 0 0 : 244 : * : * : -0.2
+R: 0 1 : 244 : * : * : -0.2
+R: 0 2 : 244 : * : * : -0.2
+R: 0 3 : 244 : * : * : -0.2
+R: 0 4 : 244 : * : * : -10.1
+R: 0 5 : 244 : * : * : 1.9
+R: 1 0 : 244 : * : * : -0.2
+R: 1 1 : 244 : * : * : -0.2
+R: 1 2 : 244 : * : * : -0.2
+R: 1 3 : 244 : * : * : -0.2
+R: 1 4 : 244 : * : * : -10.1
+R: 1 5 : 244 : * : * : 1.9
+R: 2 0 : 244 : * : * : -0.2
+R: 2 1 : 244 : * : * : -0.2
+R: 2 2 : 244 : * : * : -0.2
+R: 2 3 : 244 : * : * : -0.2
+R: 2 4 : 244 : * : * : -10.1
+R: 2 5 : 244 : * : * : 1.9
+R: 3 0 : 244 : * : * : -0.2
+R: 3 1 : 244 : * : * : -0.2
+R: 3 2 : 244 : * : * : -0.2
+R: 3 3 : 244 : * : * : -0.2
+R: 3 4 : 244 : * : * : -10.1
+R: 3 5 : 244 : * : * : 1.9
+R: 4 0 : 244 : * : * : -10.1
+R: 4 1 : 244 : * : * : -10.1
+R: 4 2 : 244 : * : * : -10.1
+R: 4 3 : 244 : * : * : -10.1
+R: 4 4 : 244 : * : * : 6
+R: 4 5 : 244 : * : * : 0
+R: 5 0 : 244 : * : * : 1.9
+R: 5 1 : 244 : * : * : 1.9
+R: 5 2 : 244 : * : * : 1.9
+R: 5 3 : 244 : * : * : 1.9
+R: 5 4 : 244 : * : * : 0
+R: 5 5 : 244 : * : * : 1
+R: 0 0 : 245 : * : * : -0.2
+R: 0 1 : 245 : * : * : -0.2
+R: 0 2 : 245 : * : * : -0.2
+R: 0 3 : 245 : * : * : -0.2
+R: 0 4 : 245 : * : * : -10.1
+R: 0 5 : 245 : * : * : 1.9
+R: 1 0 : 245 : * : * : -0.2
+R: 1 1 : 245 : * : * : -0.2
+R: 1 2 : 245 : * : * : -0.2
+R: 1 3 : 245 : * : * : -0.2
+R: 1 4 : 245 : * : * : -10.1
+R: 1 5 : 245 : * : * : 1.9
+R: 2 0 : 245 : * : * : -0.2
+R: 2 1 : 245 : * : * : -0.2
+R: 2 2 : 245 : * : * : -0.2
+R: 2 3 : 245 : * : * : -0.2
+R: 2 4 : 245 : * : * : -10.1
+R: 2 5 : 245 : * : * : 1.9
+R: 3 0 : 245 : * : * : -0.2
+R: 3 1 : 245 : * : * : -0.2
+R: 3 2 : 245 : * : * : -0.2
+R: 3 3 : 245 : * : * : -0.2
+R: 3 4 : 245 : * : * : -10.1
+R: 3 5 : 245 : * : * : 1.9
+R: 4 0 : 245 : * : * : -10.1
+R: 4 1 : 245 : * : * : -10.1
+R: 4 2 : 245 : * : * : -10.1
+R: 4 3 : 245 : * : * : -10.1
+R: 4 4 : 245 : * : * : 6
+R: 4 5 : 245 : * : * : 0
+R: 5 0 : 245 : * : * : 1.9
+R: 5 1 : 245 : * : * : 1.9
+R: 5 2 : 245 : * : * : 1.9
+R: 5 3 : 245 : * : * : 1.9
+R: 5 4 : 245 : * : * : 0
+R: 5 5 : 245 : * : * : 1
+R: 0 0 : 246 : * : * : -0.2
+R: 0 1 : 246 : * : * : -0.2
+R: 0 2 : 246 : * : * : -0.2
+R: 0 3 : 246 : * : * : -0.2
+R: 0 4 : 246 : * : * : -10.1
+R: 0 5 : 246 : * : * : 1.9
+R: 1 0 : 246 : * : * : -0.2
+R: 1 1 : 246 : * : * : -0.2
+R: 1 2 : 246 : * : * : -0.2
+R: 1 3 : 246 : * : * : -0.2
+R: 1 4 : 246 : * : * : -10.1
+R: 1 5 : 246 : * : * : 1.9
+R: 2 0 : 246 : * : * : -0.2
+R: 2 1 : 246 : * : * : -0.2
+R: 2 2 : 246 : * : * : -0.2
+R: 2 3 : 246 : * : * : -0.2
+R: 2 4 : 246 : * : * : -10.1
+R: 2 5 : 246 : * : * : 1.9
+R: 3 0 : 246 : * : * : -0.2
+R: 3 1 : 246 : * : * : -0.2
+R: 3 2 : 246 : * : * : -0.2
+R: 3 3 : 246 : * : * : -0.2
+R: 3 4 : 246 : * : * : -10.1
+R: 3 5 : 246 : * : * : 1.9
+R: 4 0 : 246 : * : * : -10.1
+R: 4 1 : 246 : * : * : -10.1
+R: 4 2 : 246 : * : * : -10.1
+R: 4 3 : 246 : * : * : -10.1
+R: 4 4 : 246 : * : * : 6
+R: 4 5 : 246 : * : * : 0
+R: 5 0 : 246 : * : * : 1.9
+R: 5 1 : 246 : * : * : 1.9
+R: 5 2 : 246 : * : * : 1.9
+R: 5 3 : 246 : * : * : 1.9
+R: 5 4 : 246 : * : * : 0
+R: 5 5 : 246 : * : * : 1
+R: 0 0 : 247 : * : * : -0.2
+R: 0 1 : 247 : * : * : -0.2
+R: 0 2 : 247 : * : * : -0.2
+R: 0 3 : 247 : * : * : -0.2
+R: 0 4 : 247 : * : * : -10.1
+R: 0 5 : 247 : * : * : 1.9
+R: 1 0 : 247 : * : * : -0.2
+R: 1 1 : 247 : * : * : -0.2
+R: 1 2 : 247 : * : * : -0.2
+R: 1 3 : 247 : * : * : -0.2
+R: 1 4 : 247 : * : * : -10.1
+R: 1 5 : 247 : * : * : 1.9
+R: 2 0 : 247 : * : * : -0.2
+R: 2 1 : 247 : * : * : -0.2
+R: 2 2 : 247 : * : * : -0.2
+R: 2 3 : 247 : * : * : -0.2
+R: 2 4 : 247 : * : * : -10.1
+R: 2 5 : 247 : * : * : 1.9
+R: 3 0 : 247 : * : * : -0.2
+R: 3 1 : 247 : * : * : -0.2
+R: 3 2 : 247 : * : * : -0.2
+R: 3 3 : 247 : * : * : -0.2
+R: 3 4 : 247 : * : * : -10.1
+R: 3 5 : 247 : * : * : 1.9
+R: 4 0 : 247 : * : * : -10.1
+R: 4 1 : 247 : * : * : -10.1
+R: 4 2 : 247 : * : * : -10.1
+R: 4 3 : 247 : * : * : -10.1
+R: 4 4 : 247 : * : * : 6
+R: 4 5 : 247 : * : * : 0
+R: 5 0 : 247 : * : * : 1.9
+R: 5 1 : 247 : * : * : 1.9
+R: 5 2 : 247 : * : * : 1.9
+R: 5 3 : 247 : * : * : 1.9
+R: 5 4 : 247 : * : * : 0
+R: 5 5 : 247 : * : * : 1
+R: 0 0 : 248 : * : * : -0.2
+R: 0 1 : 248 : * : * : -0.2
+R: 0 2 : 248 : * : * : -0.2
+R: 0 3 : 248 : * : * : -0.2
+R: 0 4 : 248 : * : * : -1.1
+R: 0 5 : 248 : * : * : -1.1
+R: 1 0 : 248 : * : * : -0.2
+R: 1 1 : 248 : * : * : -0.2
+R: 1 2 : 248 : * : * : -0.2
+R: 1 3 : 248 : * : * : -0.2
+R: 1 4 : 248 : * : * : -1.1
+R: 1 5 : 248 : * : * : -1.1
+R: 2 0 : 248 : * : * : -0.2
+R: 2 1 : 248 : * : * : -0.2
+R: 2 2 : 248 : * : * : -0.2
+R: 2 3 : 248 : * : * : -0.2
+R: 2 4 : 248 : * : * : -1.1
+R: 2 5 : 248 : * : * : -1.1
+R: 3 0 : 248 : * : * : -0.2
+R: 3 1 : 248 : * : * : -0.2
+R: 3 2 : 248 : * : * : -0.2
+R: 3 3 : 248 : * : * : -0.2
+R: 3 4 : 248 : * : * : -1.1
+R: 3 5 : 248 : * : * : -1.1
+R: 4 0 : 248 : * : * : -1.1
+R: 4 1 : 248 : * : * : -1.1
+R: 4 2 : 248 : * : * : -1.1
+R: 4 3 : 248 : * : * : -1.1
+R: 4 4 : 248 : * : * : -2
+R: 4 5 : 248 : * : * : -2
+R: 5 0 : 248 : * : * : -1.1
+R: 5 1 : 248 : * : * : -1.1
+R: 5 2 : 248 : * : * : -1.1
+R: 5 3 : 248 : * : * : -1.1
+R: 5 4 : 248 : * : * : -2
+R: 5 5 : 248 : * : * : -2
+R: 0 0 : 249 : * : * : -0.2
+R: 0 1 : 249 : * : * : -0.2
+R: 0 2 : 249 : * : * : -0.2
+R: 0 3 : 249 : * : * : -0.2
+R: 0 4 : 249 : * : * : -1.1
+R: 0 5 : 249 : * : * : -1.1
+R: 1 0 : 249 : * : * : -0.2
+R: 1 1 : 249 : * : * : -0.2
+R: 1 2 : 249 : * : * : -0.2
+R: 1 3 : 249 : * : * : -0.2
+R: 1 4 : 249 : * : * : -1.1
+R: 1 5 : 249 : * : * : -1.1
+R: 2 0 : 249 : * : * : -0.2
+R: 2 1 : 249 : * : * : -0.2
+R: 2 2 : 249 : * : * : -0.2
+R: 2 3 : 249 : * : * : -0.2
+R: 2 4 : 249 : * : * : -1.1
+R: 2 5 : 249 : * : * : -1.1
+R: 3 0 : 249 : * : * : -0.2
+R: 3 1 : 249 : * : * : -0.2
+R: 3 2 : 249 : * : * : -0.2
+R: 3 3 : 249 : * : * : -0.2
+R: 3 4 : 249 : * : * : -1.1
+R: 3 5 : 249 : * : * : -1.1
+R: 4 0 : 249 : * : * : -1.1
+R: 4 1 : 249 : * : * : -1.1
+R: 4 2 : 249 : * : * : -1.1
+R: 4 3 : 249 : * : * : -1.1
+R: 4 4 : 249 : * : * : -2
+R: 4 5 : 249 : * : * : -2
+R: 5 0 : 249 : * : * : -1.1
+R: 5 1 : 249 : * : * : -1.1
+R: 5 2 : 249 : * : * : -1.1
+R: 5 3 : 249 : * : * : -1.1
+R: 5 4 : 249 : * : * : -2
+R: 5 5 : 249 : * : * : -2
+R: 0 0 : 250 : * : * : -0.2
+R: 0 1 : 250 : * : * : -0.2
+R: 0 2 : 250 : * : * : -0.2
+R: 0 3 : 250 : * : * : -0.2
+R: 0 4 : 250 : * : * : -1.1
+R: 0 5 : 250 : * : * : -1.1
+R: 1 0 : 250 : * : * : -0.2
+R: 1 1 : 250 : * : * : -0.2
+R: 1 2 : 250 : * : * : -0.2
+R: 1 3 : 250 : * : * : -0.2
+R: 1 4 : 250 : * : * : -1.1
+R: 1 5 : 250 : * : * : -1.1
+R: 2 0 : 250 : * : * : -0.2
+R: 2 1 : 250 : * : * : -0.2
+R: 2 2 : 250 : * : * : -0.2
+R: 2 3 : 250 : * : * : -0.2
+R: 2 4 : 250 : * : * : -1.1
+R: 2 5 : 250 : * : * : -1.1
+R: 3 0 : 250 : * : * : -0.2
+R: 3 1 : 250 : * : * : -0.2
+R: 3 2 : 250 : * : * : -0.2
+R: 3 3 : 250 : * : * : -0.2
+R: 3 4 : 250 : * : * : -1.1
+R: 3 5 : 250 : * : * : -1.1
+R: 4 0 : 250 : * : * : -1.1
+R: 4 1 : 250 : * : * : -1.1
+R: 4 2 : 250 : * : * : -1.1
+R: 4 3 : 250 : * : * : -1.1
+R: 4 4 : 250 : * : * : -2
+R: 4 5 : 250 : * : * : -2
+R: 5 0 : 250 : * : * : -1.1
+R: 5 1 : 250 : * : * : -1.1
+R: 5 2 : 250 : * : * : -1.1
+R: 5 3 : 250 : * : * : -1.1
+R: 5 4 : 250 : * : * : -2
+R: 5 5 : 250 : * : * : -2
+R: 0 0 : 251 : * : * : -0.2
+R: 0 1 : 251 : * : * : -0.2
+R: 0 2 : 251 : * : * : -0.2
+R: 0 3 : 251 : * : * : -0.2
+R: 0 4 : 251 : * : * : -1.1
+R: 0 5 : 251 : * : * : -1.1
+R: 1 0 : 251 : * : * : -0.2
+R: 1 1 : 251 : * : * : -0.2
+R: 1 2 : 251 : * : * : -0.2
+R: 1 3 : 251 : * : * : -0.2
+R: 1 4 : 251 : * : * : -1.1
+R: 1 5 : 251 : * : * : -1.1
+R: 2 0 : 251 : * : * : -0.2
+R: 2 1 : 251 : * : * : -0.2
+R: 2 2 : 251 : * : * : -0.2
+R: 2 3 : 251 : * : * : -0.2
+R: 2 4 : 251 : * : * : -1.1
+R: 2 5 : 251 : * : * : -1.1
+R: 3 0 : 251 : * : * : -0.2
+R: 3 1 : 251 : * : * : -0.2
+R: 3 2 : 251 : * : * : -0.2
+R: 3 3 : 251 : * : * : -0.2
+R: 3 4 : 251 : * : * : -1.1
+R: 3 5 : 251 : * : * : -1.1
+R: 4 0 : 251 : * : * : -1.1
+R: 4 1 : 251 : * : * : -1.1
+R: 4 2 : 251 : * : * : -1.1
+R: 4 3 : 251 : * : * : -1.1
+R: 4 4 : 251 : * : * : -2
+R: 4 5 : 251 : * : * : -2
+R: 5 0 : 251 : * : * : -1.1
+R: 5 1 : 251 : * : * : -1.1
+R: 5 2 : 251 : * : * : -1.1
+R: 5 3 : 251 : * : * : -1.1
+R: 5 4 : 251 : * : * : -2
+R: 5 5 : 251 : * : * : -2
+R: 0 0 : 252 : * : * : -0.2
+R: 0 1 : 252 : * : * : -0.2
+R: 0 2 : 252 : * : * : -0.2
+R: 0 3 : 252 : * : * : -0.2
+R: 0 4 : 252 : * : * : -1.1
+R: 0 5 : 252 : * : * : -1.1
+R: 1 0 : 252 : * : * : -0.2
+R: 1 1 : 252 : * : * : -0.2
+R: 1 2 : 252 : * : * : -0.2
+R: 1 3 : 252 : * : * : -0.2
+R: 1 4 : 252 : * : * : -1.1
+R: 1 5 : 252 : * : * : -1.1
+R: 2 0 : 252 : * : * : -0.2
+R: 2 1 : 252 : * : * : -0.2
+R: 2 2 : 252 : * : * : -0.2
+R: 2 3 : 252 : * : * : -0.2
+R: 2 4 : 252 : * : * : -1.1
+R: 2 5 : 252 : * : * : -1.1
+R: 3 0 : 252 : * : * : -0.2
+R: 3 1 : 252 : * : * : -0.2
+R: 3 2 : 252 : * : * : -0.2
+R: 3 3 : 252 : * : * : -0.2
+R: 3 4 : 252 : * : * : -1.1
+R: 3 5 : 252 : * : * : -1.1
+R: 4 0 : 252 : * : * : -1.1
+R: 4 1 : 252 : * : * : -1.1
+R: 4 2 : 252 : * : * : -1.1
+R: 4 3 : 252 : * : * : -1.1
+R: 4 4 : 252 : * : * : -2
+R: 4 5 : 252 : * : * : -2
+R: 5 0 : 252 : * : * : -1.1
+R: 5 1 : 252 : * : * : -1.1
+R: 5 2 : 252 : * : * : -1.1
+R: 5 3 : 252 : * : * : -1.1
+R: 5 4 : 252 : * : * : -2
+R: 5 5 : 252 : * : * : -2
+R: 0 0 : 253 : * : * : -0.2
+R: 0 1 : 253 : * : * : -0.2
+R: 0 2 : 253 : * : * : -0.2
+R: 0 3 : 253 : * : * : -0.2
+R: 0 4 : 253 : * : * : -1.1
+R: 0 5 : 253 : * : * : -1.1
+R: 1 0 : 253 : * : * : -0.2
+R: 1 1 : 253 : * : * : -0.2
+R: 1 2 : 253 : * : * : -0.2
+R: 1 3 : 253 : * : * : -0.2
+R: 1 4 : 253 : * : * : -1.1
+R: 1 5 : 253 : * : * : -1.1
+R: 2 0 : 253 : * : * : -0.2
+R: 2 1 : 253 : * : * : -0.2
+R: 2 2 : 253 : * : * : -0.2
+R: 2 3 : 253 : * : * : -0.2
+R: 2 4 : 253 : * : * : -1.1
+R: 2 5 : 253 : * : * : -1.1
+R: 3 0 : 253 : * : * : -0.2
+R: 3 1 : 253 : * : * : -0.2
+R: 3 2 : 253 : * : * : -0.2
+R: 3 3 : 253 : * : * : -0.2
+R: 3 4 : 253 : * : * : -1.1
+R: 3 5 : 253 : * : * : -1.1
+R: 4 0 : 253 : * : * : -1.1
+R: 4 1 : 253 : * : * : -1.1
+R: 4 2 : 253 : * : * : -1.1
+R: 4 3 : 253 : * : * : -1.1
+R: 4 4 : 253 : * : * : -2
+R: 4 5 : 253 : * : * : -2
+R: 5 0 : 253 : * : * : -1.1
+R: 5 1 : 253 : * : * : -1.1
+R: 5 2 : 253 : * : * : -1.1
+R: 5 3 : 253 : * : * : -1.1
+R: 5 4 : 253 : * : * : -2
+R: 5 5 : 253 : * : * : -2
+R: 0 0 : 254 : * : * : -0.2
+R: 0 1 : 254 : * : * : -0.2
+R: 0 2 : 254 : * : * : -0.2
+R: 0 3 : 254 : * : * : -0.2
+R: 0 4 : 254 : * : * : -1.1
+R: 0 5 : 254 : * : * : -1.1
+R: 1 0 : 254 : * : * : -0.2
+R: 1 1 : 254 : * : * : -0.2
+R: 1 2 : 254 : * : * : -0.2
+R: 1 3 : 254 : * : * : -0.2
+R: 1 4 : 254 : * : * : -1.1
+R: 1 5 : 254 : * : * : -1.1
+R: 2 0 : 254 : * : * : -0.2
+R: 2 1 : 254 : * : * : -0.2
+R: 2 2 : 254 : * : * : -0.2
+R: 2 3 : 254 : * : * : -0.2
+R: 2 4 : 254 : * : * : -1.1
+R: 2 5 : 254 : * : * : -1.1
+R: 3 0 : 254 : * : * : -0.2
+R: 3 1 : 254 : * : * : -0.2
+R: 3 2 : 254 : * : * : -0.2
+R: 3 3 : 254 : * : * : -0.2
+R: 3 4 : 254 : * : * : -1.1
+R: 3 5 : 254 : * : * : -1.1
+R: 4 0 : 254 : * : * : -1.1
+R: 4 1 : 254 : * : * : -1.1
+R: 4 2 : 254 : * : * : -1.1
+R: 4 3 : 254 : * : * : -1.1
+R: 4 4 : 254 : * : * : -2
+R: 4 5 : 254 : * : * : -2
+R: 5 0 : 254 : * : * : -1.1
+R: 5 1 : 254 : * : * : -1.1
+R: 5 2 : 254 : * : * : -1.1
+R: 5 3 : 254 : * : * : -1.1
+R: 5 4 : 254 : * : * : -2
+R: 5 5 : 254 : * : * : -2
+R: 0 0 : 255 : * : * : -0.2
+R: 0 1 : 255 : * : * : -0.2
+R: 0 2 : 255 : * : * : -0.2
+R: 0 3 : 255 : * : * : -0.2
+R: 0 4 : 255 : * : * : -1.1
+R: 0 5 : 255 : * : * : -1.1
+R: 1 0 : 255 : * : * : -0.2
+R: 1 1 : 255 : * : * : -0.2
+R: 1 2 : 255 : * : * : -0.2
+R: 1 3 : 255 : * : * : -0.2
+R: 1 4 : 255 : * : * : -1.1
+R: 1 5 : 255 : * : * : -1.1
+R: 2 0 : 255 : * : * : -0.2
+R: 2 1 : 255 : * : * : -0.2
+R: 2 2 : 255 : * : * : -0.2
+R: 2 3 : 255 : * : * : -0.2
+R: 2 4 : 255 : * : * : -1.1
+R: 2 5 : 255 : * : * : -1.1
+R: 3 0 : 255 : * : * : -0.2
+R: 3 1 : 255 : * : * : -0.2
+R: 3 2 : 255 : * : * : -0.2
+R: 3 3 : 255 : * : * : -0.2
+R: 3 4 : 255 : * : * : -1.1
+R: 3 5 : 255 : * : * : -1.1
+R: 4 0 : 255 : * : * : -1.1
+R: 4 1 : 255 : * : * : -1.1
+R: 4 2 : 255 : * : * : -1.1
+R: 4 3 : 255 : * : * : -1.1
+R: 4 4 : 255 : * : * : -2
+R: 4 5 : 255 : * : * : -2
+R: 5 0 : 255 : * : * : -1.1
+R: 5 1 : 255 : * : * : -1.1
+R: 5 2 : 255 : * : * : -1.1
+R: 5 3 : 255 : * : * : -1.1
+R: 5 4 : 255 : * : * : -2
+R: 5 5 : 255 : * : * : -2
diff --git a/code/src/problem_examples/dpomdp/_module.hpp b/code/src/problem_examples/dpomdp/_module.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..34fe635814c960a596e1cf80aaff268057363a0d
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/_module.hpp
@@ -0,0 +1,8 @@
+#pragma once
+
+#include "recycling.hpp"
+#include "tiger.hpp"
+#include "grid3x3.hpp"
+#include "gridsmall.hpp"
+#include "mabc.hpp"
+#include "maracas.hpp"
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/boxPushingUAI07.dpomdp b/code/src/problem_examples/dpomdp/boxPushingUAI07.dpomdp
new file mode 100755
index 0000000000000000000000000000000000000000..19d4a99de7a0a7a5dc3a27a44b2c648f3322fcab
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/boxPushingUAI07.dpomdp
@@ -0,0 +1,7062 @@
+# Cooperative Box Pushing
+# From Seuken & Zilberstein, UAI 2007
+# Extracted from code provided by UMass
+# $Id: boxPushingUAI07.dpomdp 2919 2008-10-14 10:56:21Z mtjspaan $
+agents: 2
+discount: 1.0
+values: "reward"
+states: 100
+start:
+0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+actions:
+4
+4
+observations:
+5
+5
+T: 0 0 : 0 : 27 : 1.0
+T: 0 1 : 0 : 27 : 1.0
+T: 0 2 : 0 : 27 : 1.0
+T: 0 3 : 0 : 27 : 1.0
+T: 1 0 : 0 : 27 : 1.0
+T: 1 1 : 0 : 27 : 1.0
+T: 1 2 : 0 : 27 : 1.0
+T: 1 3 : 0 : 27 : 1.0
+T: 2 0 : 0 : 27 : 1.0
+T: 2 1 : 0 : 27 : 1.0
+T: 2 2 : 0 : 27 : 1.0
+T: 2 3 : 0 : 27 : 1.0
+T: 3 0 : 0 : 27 : 1.0
+T: 3 1 : 0 : 27 : 1.0
+T: 3 2 : 0 : 27 : 1.0
+T: 3 3 : 0 : 27 : 1.0
+T: 0 0 : 1 : 27 : 1.0
+T: 0 1 : 1 : 27 : 1.0
+T: 0 2 : 1 : 27 : 1.0
+T: 0 3 : 1 : 27 : 1.0
+T: 1 0 : 1 : 27 : 1.0
+T: 1 1 : 1 : 27 : 1.0
+T: 1 2 : 1 : 27 : 1.0
+T: 1 3 : 1 : 27 : 1.0
+T: 2 0 : 1 : 27 : 1.0
+T: 2 1 : 1 : 27 : 1.0
+T: 2 2 : 1 : 27 : 1.0
+T: 2 3 : 1 : 27 : 1.0
+T: 3 0 : 1 : 27 : 1.0
+T: 3 1 : 1 : 27 : 1.0
+T: 3 2 : 1 : 27 : 1.0
+T: 3 3 : 1 : 27 : 1.0
+T: 0 0 : 2 : 27 : 1.0
+T: 0 1 : 2 : 27 : 1.0
+T: 0 2 : 2 : 27 : 1.0
+T: 0 3 : 2 : 27 : 1.0
+T: 1 0 : 2 : 27 : 1.0
+T: 1 1 : 2 : 27 : 1.0
+T: 1 2 : 2 : 27 : 1.0
+T: 1 3 : 2 : 27 : 1.0
+T: 2 0 : 2 : 27 : 1.0
+T: 2 1 : 2 : 27 : 1.0
+T: 2 2 : 2 : 27 : 1.0
+T: 2 3 : 2 : 27 : 1.0
+T: 3 0 : 2 : 27 : 1.0
+T: 3 1 : 2 : 27 : 1.0
+T: 3 2 : 2 : 27 : 1.0
+T: 3 3 : 2 : 27 : 1.0
+T: 0 0 : 3 : 27 : 1.0
+T: 0 1 : 3 : 27 : 1.0
+T: 0 2 : 3 : 27 : 1.0
+T: 0 3 : 3 : 27 : 1.0
+T: 1 0 : 3 : 27 : 1.0
+T: 1 1 : 3 : 27 : 1.0
+T: 1 2 : 3 : 27 : 1.0
+T: 1 3 : 3 : 27 : 1.0
+T: 2 0 : 3 : 27 : 1.0
+T: 2 1 : 3 : 27 : 1.0
+T: 2 2 : 3 : 27 : 1.0
+T: 2 3 : 3 : 27 : 1.0
+T: 3 0 : 3 : 27 : 1.0
+T: 3 1 : 3 : 27 : 1.0
+T: 3 2 : 3 : 27 : 1.0
+T: 3 3 : 3 : 27 : 1.0
+T: 0 0 : 4 : 4 : 0.01
+T: 0 0 : 4 : 7 : 0.09
+T: 0 0 : 4 : 40 : 0.09
+T: 0 0 : 4 : 43 : 0.81
+T: 0 1 : 4 : 4 : 0.01
+T: 0 1 : 4 : 5 : 0.09
+T: 0 1 : 4 : 40 : 0.09
+T: 0 1 : 4 : 41 : 0.81
+T: 0 2 : 4 : 4 : 0.1
+T: 0 2 : 4 : 40 : 0.9
+T: 0 3 : 4 : 4 : 0.1
+T: 0 3 : 4 : 40 : 0.9
+T: 1 0 : 4 : 4 : 0.01
+T: 1 0 : 4 : 7 : 0.09
+T: 1 0 : 4 : 16 : 0.09
+T: 1 0 : 4 : 19 : 0.81
+T: 1 1 : 4 : 4 : 0.01
+T: 1 1 : 4 : 5 : 0.09
+T: 1 1 : 4 : 16 : 0.09
+T: 1 1 : 4 : 17 : 0.81
+T: 1 2 : 4 : 4 : 0.1
+T: 1 2 : 4 : 16 : 0.9
+T: 1 3 : 4 : 4 : 0.1
+T: 1 3 : 4 : 16 : 0.9
+T: 2 0 : 4 : 0 : 0.9
+T: 2 0 : 4 : 4 : 0.01
+T: 2 0 : 4 : 7 : 0.09
+T: 2 1 : 4 : 0 : 0.9
+T: 2 1 : 4 : 4 : 0.01
+T: 2 1 : 4 : 5 : 0.09
+T: 2 2 : 4 : 0 : 0.9
+T: 2 2 : 4 : 4 : 0.1
+T: 2 3 : 4 : 0 : 0.9
+T: 2 3 : 4 : 4 : 0.1
+T: 3 0 : 4 : 4 : 0.1
+T: 3 0 : 4 : 7 : 0.9
+T: 3 1 : 4 : 4 : 0.1
+T: 3 1 : 4 : 5 : 0.9
+T: 3 2 : 4 : 4 : 1.0
+T: 3 3 : 4 : 4 : 1.0
+T: 0 0 : 5 : 4 : 0.09
+T: 0 0 : 5 : 5 : 0.01
+T: 0 0 : 5 : 40 : 0.81
+T: 0 0 : 5 : 41 : 0.09
+T: 0 1 : 5 : 5 : 0.01
+T: 0 1 : 5 : 6 : 0.09
+T: 0 1 : 5 : 41 : 0.09
+T: 0 1 : 5 : 42 : 0.81
+T: 0 2 : 5 : 5 : 0.01
+T: 0 2 : 5 : 9 : 0.09
+T: 0 2 : 5 : 41 : 0.09
+T: 0 2 : 5 : 45 : 0.81
+T: 0 3 : 5 : 5 : 0.1
+T: 0 3 : 5 : 41 : 0.9
+T: 1 0 : 5 : 4 : 0.09
+T: 1 0 : 5 : 5 : 0.01
+T: 1 0 : 5 : 16 : 0.81
+T: 1 0 : 5 : 17 : 0.09
+T: 1 1 : 5 : 5 : 0.01
+T: 1 1 : 5 : 6 : 0.09
+T: 1 1 : 5 : 17 : 0.09
+T: 1 1 : 5 : 18 : 0.81
+T: 1 2 : 5 : 5 : 0.01
+T: 1 2 : 5 : 9 : 0.09
+T: 1 2 : 5 : 17 : 0.09
+T: 1 2 : 5 : 21 : 0.81
+T: 1 3 : 5 : 5 : 0.1
+T: 1 3 : 5 : 17 : 0.9
+T: 2 0 : 5 : 0 : 0.9
+T: 2 0 : 5 : 4 : 0.09
+T: 2 0 : 5 : 5 : 0.01
+T: 2 1 : 5 : 0 : 0.9
+T: 2 1 : 5 : 5 : 0.01
+T: 2 1 : 5 : 6 : 0.09
+T: 2 2 : 5 : 0 : 0.9
+T: 2 2 : 5 : 5 : 0.01
+T: 2 2 : 5 : 9 : 0.09
+T: 2 3 : 5 : 0 : 0.9
+T: 2 3 : 5 : 5 : 0.1
+T: 3 0 : 5 : 4 : 0.9
+T: 3 0 : 5 : 5 : 0.1
+T: 3 1 : 5 : 5 : 0.1
+T: 3 1 : 5 : 6 : 0.9
+T: 3 2 : 5 : 5 : 0.1
+T: 3 2 : 5 : 9 : 0.9
+T: 3 3 : 5 : 5 : 1.0
+T: 0 0 : 6 : 5 : 0.09
+T: 0 0 : 6 : 6 : 0.01
+T: 0 0 : 6 : 41 : 0.81
+T: 0 0 : 6 : 42 : 0.09
+T: 0 1 : 6 : 6 : 0.01
+T: 0 1 : 6 : 7 : 0.09
+T: 0 1 : 6 : 42 : 0.09
+T: 0 1 : 6 : 43 : 0.81
+T: 0 2 : 6 : 6 : 0.1
+T: 0 2 : 6 : 42 : 0.9
+T: 0 3 : 6 : 6 : 0.1
+T: 0 3 : 6 : 42 : 0.9
+T: 1 0 : 6 : 5 : 0.09
+T: 1 0 : 6 : 6 : 0.01
+T: 1 0 : 6 : 17 : 0.81
+T: 1 0 : 6 : 18 : 0.09
+T: 1 1 : 6 : 6 : 0.01
+T: 1 1 : 6 : 7 : 0.09
+T: 1 1 : 6 : 18 : 0.09
+T: 1 1 : 6 : 19 : 0.81
+T: 1 2 : 6 : 6 : 0.1
+T: 1 2 : 6 : 18 : 0.9
+T: 1 3 : 6 : 6 : 0.1
+T: 1 3 : 6 : 18 : 0.9
+T: 2 0 : 6 : 0 : 0.9
+T: 2 0 : 6 : 5 : 0.09
+T: 2 0 : 6 : 6 : 0.01
+T: 2 1 : 6 : 0 : 0.9
+T: 2 1 : 6 : 6 : 0.01
+T: 2 1 : 6 : 7 : 0.09
+T: 2 2 : 6 : 0 : 0.9
+T: 2 2 : 6 : 6 : 0.1
+T: 2 3 : 6 : 0 : 0.9
+T: 2 3 : 6 : 6 : 0.1
+T: 3 0 : 6 : 5 : 0.9
+T: 3 0 : 6 : 6 : 0.1
+T: 3 1 : 6 : 6 : 0.1
+T: 3 1 : 6 : 7 : 0.9
+T: 3 2 : 6 : 6 : 1.0
+T: 3 3 : 6 : 6 : 1.0
+T: 0 0 : 7 : 6 : 0.09
+T: 0 0 : 7 : 7 : 0.01
+T: 0 0 : 7 : 42 : 0.81
+T: 0 0 : 7 : 43 : 0.09
+T: 0 1 : 7 : 4 : 0.09
+T: 0 1 : 7 : 7 : 0.01
+T: 0 1 : 7 : 40 : 0.81
+T: 0 1 : 7 : 43 : 0.09
+T: 0 2 : 7 : 7 : 0.1
+T: 0 2 : 7 : 43 : 0.9
+T: 0 3 : 7 : 7 : 0.1
+T: 0 3 : 7 : 43 : 0.9
+T: 1 0 : 7 : 6 : 0.09
+T: 1 0 : 7 : 7 : 0.01
+T: 1 0 : 7 : 18 : 0.81
+T: 1 0 : 7 : 19 : 0.09
+T: 1 1 : 7 : 4 : 0.09
+T: 1 1 : 7 : 7 : 0.01
+T: 1 1 : 7 : 16 : 0.81
+T: 1 1 : 7 : 19 : 0.09
+T: 1 2 : 7 : 7 : 0.1
+T: 1 2 : 7 : 19 : 0.9
+T: 1 3 : 7 : 7 : 0.1
+T: 1 3 : 7 : 19 : 0.9
+T: 2 0 : 7 : 0 : 0.9
+T: 2 0 : 7 : 6 : 0.09
+T: 2 0 : 7 : 7 : 0.01
+T: 2 1 : 7 : 0 : 0.9
+T: 2 1 : 7 : 4 : 0.09
+T: 2 1 : 7 : 7 : 0.01
+T: 2 2 : 7 : 0 : 0.9
+T: 2 2 : 7 : 7 : 0.1
+T: 2 3 : 7 : 0 : 0.9
+T: 2 3 : 7 : 7 : 0.1
+T: 3 0 : 7 : 6 : 0.9
+T: 3 0 : 7 : 7 : 0.1
+T: 3 1 : 7 : 4 : 0.9
+T: 3 1 : 7 : 7 : 0.1
+T: 3 2 : 7 : 7 : 1.0
+T: 3 3 : 7 : 7 : 1.0
+T: 0 0 : 8 : 8 : 0.01
+T: 0 0 : 8 : 11 : 0.09
+T: 0 0 : 8 : 44 : 0.09
+T: 0 0 : 8 : 47 : 0.81
+T: 0 1 : 8 : 8 : 0.01
+T: 0 1 : 8 : 9 : 0.09
+T: 0 1 : 8 : 44 : 0.09
+T: 0 1 : 8 : 45 : 0.81
+T: 0 2 : 8 : 8 : 0.1
+T: 0 2 : 8 : 44 : 0.9
+T: 0 3 : 8 : 8 : 0.1
+T: 0 3 : 8 : 44 : 0.9
+T: 1 0 : 8 : 8 : 0.01
+T: 1 0 : 8 : 11 : 0.09
+T: 1 0 : 8 : 20 : 0.09
+T: 1 0 : 8 : 23 : 0.81
+T: 1 1 : 8 : 8 : 0.01
+T: 1 1 : 8 : 9 : 0.09
+T: 1 1 : 8 : 20 : 0.09
+T: 1 1 : 8 : 21 : 0.81
+T: 1 2 : 8 : 8 : 0.1
+T: 1 2 : 8 : 20 : 0.9
+T: 1 3 : 8 : 8 : 0.1
+T: 1 3 : 8 : 20 : 0.9
+T: 2 0 : 8 : 0 : 0.9
+T: 2 0 : 8 : 8 : 0.01
+T: 2 0 : 8 : 11 : 0.09
+T: 2 1 : 8 : 0 : 0.9
+T: 2 1 : 8 : 8 : 0.01
+T: 2 1 : 8 : 9 : 0.09
+T: 2 2 : 8 : 0 : 0.9
+T: 2 2 : 8 : 8 : 0.1
+T: 2 3 : 8 : 0 : 0.9
+T: 2 3 : 8 : 8 : 0.1
+T: 3 0 : 8 : 8 : 0.1
+T: 3 0 : 8 : 11 : 0.9
+T: 3 1 : 8 : 8 : 0.1
+T: 3 1 : 8 : 9 : 0.9
+T: 3 2 : 8 : 8 : 1.0
+T: 3 3 : 8 : 8 : 1.0
+T: 0 0 : 9 : 8 : 0.09
+T: 0 0 : 9 : 9 : 0.01
+T: 0 0 : 9 : 44 : 0.81
+T: 0 0 : 9 : 45 : 0.09
+T: 0 1 : 9 : 9 : 0.01
+T: 0 1 : 9 : 10 : 0.09
+T: 0 1 : 9 : 45 : 0.09
+T: 0 1 : 9 : 46 : 0.81
+T: 0 2 : 9 : 9 : 0.01
+T: 0 2 : 9 : 13 : 0.09
+T: 0 2 : 9 : 45 : 0.09
+T: 0 2 : 9 : 49 : 0.81
+T: 0 3 : 9 : 9 : 0.1
+T: 0 3 : 9 : 45 : 0.9
+T: 1 0 : 9 : 8 : 0.09
+T: 1 0 : 9 : 9 : 0.01
+T: 1 0 : 9 : 20 : 0.81
+T: 1 0 : 9 : 21 : 0.09
+T: 1 1 : 9 : 9 : 0.01
+T: 1 1 : 9 : 10 : 0.09
+T: 1 1 : 9 : 21 : 0.09
+T: 1 1 : 9 : 22 : 0.81
+T: 1 2 : 9 : 9 : 0.01
+T: 1 2 : 9 : 13 : 0.09
+T: 1 2 : 9 : 21 : 0.09
+T: 1 2 : 9 : 25 : 0.81
+T: 1 3 : 9 : 9 : 0.1
+T: 1 3 : 9 : 21 : 0.9
+T: 2 0 : 9 : 0 : 0.9
+T: 2 0 : 9 : 8 : 0.09
+T: 2 0 : 9 : 9 : 0.01
+T: 2 1 : 9 : 0 : 0.9
+T: 2 1 : 9 : 9 : 0.01
+T: 2 1 : 9 : 10 : 0.09
+T: 2 2 : 9 : 0 : 0.9
+T: 2 2 : 9 : 9 : 0.01
+T: 2 2 : 9 : 13 : 0.09
+T: 2 3 : 9 : 0 : 0.9
+T: 2 3 : 9 : 9 : 0.1
+T: 3 0 : 9 : 8 : 0.9
+T: 3 0 : 9 : 9 : 0.1
+T: 3 1 : 9 : 9 : 0.1
+T: 3 1 : 9 : 10 : 0.9
+T: 3 2 : 9 : 9 : 0.1
+T: 3 2 : 9 : 13 : 0.9
+T: 3 3 : 9 : 9 : 1.0
+T: 0 0 : 10 : 9 : 0.09
+T: 0 0 : 10 : 10 : 0.01
+T: 0 0 : 10 : 45 : 0.81
+T: 0 0 : 10 : 46 : 0.09
+T: 0 1 : 10 : 10 : 0.01
+T: 0 1 : 10 : 11 : 0.09
+T: 0 1 : 10 : 46 : 0.09
+T: 0 1 : 10 : 47 : 0.81
+T: 0 2 : 10 : 10 : 0.1
+T: 0 2 : 10 : 46 : 0.9
+T: 0 3 : 10 : 10 : 0.1
+T: 0 3 : 10 : 46 : 0.9
+T: 1 0 : 10 : 9 : 0.09
+T: 1 0 : 10 : 10 : 0.01
+T: 1 0 : 10 : 21 : 0.81
+T: 1 0 : 10 : 22 : 0.09
+T: 1 1 : 10 : 10 : 0.01
+T: 1 1 : 10 : 11 : 0.09
+T: 1 1 : 10 : 22 : 0.09
+T: 1 1 : 10 : 23 : 0.81
+T: 1 2 : 10 : 10 : 0.1
+T: 1 2 : 10 : 22 : 0.9
+T: 1 3 : 10 : 10 : 0.1
+T: 1 3 : 10 : 22 : 0.9
+T: 2 0 : 10 : 0 : 0.9
+T: 2 0 : 10 : 9 : 0.09
+T: 2 0 : 10 : 10 : 0.01
+T: 2 1 : 10 : 0 : 0.9
+T: 2 1 : 10 : 10 : 0.01
+T: 2 1 : 10 : 11 : 0.09
+T: 2 2 : 10 : 0 : 0.9
+T: 2 2 : 10 : 10 : 0.1
+T: 2 3 : 10 : 0 : 0.9
+T: 2 3 : 10 : 10 : 0.1
+T: 3 0 : 10 : 9 : 0.9
+T: 3 0 : 10 : 10 : 0.1
+T: 3 1 : 10 : 10 : 0.1
+T: 3 1 : 10 : 11 : 0.9
+T: 3 2 : 10 : 10 : 1.0
+T: 3 3 : 10 : 10 : 1.0
+T: 0 0 : 11 : 10 : 0.09
+T: 0 0 : 11 : 11 : 0.01
+T: 0 0 : 11 : 46 : 0.81
+T: 0 0 : 11 : 47 : 0.09
+T: 0 1 : 11 : 8 : 0.09
+T: 0 1 : 11 : 11 : 0.01
+T: 0 1 : 11 : 44 : 0.81
+T: 0 1 : 11 : 47 : 0.09
+T: 0 2 : 11 : 7 : 0.09
+T: 0 2 : 11 : 11 : 0.01
+T: 0 2 : 11 : 43 : 0.81
+T: 0 2 : 11 : 47 : 0.09
+T: 0 3 : 11 : 11 : 0.1
+T: 0 3 : 11 : 47 : 0.9
+T: 1 0 : 11 : 10 : 0.09
+T: 1 0 : 11 : 11 : 0.01
+T: 1 0 : 11 : 22 : 0.81
+T: 1 0 : 11 : 23 : 0.09
+T: 1 1 : 11 : 8 : 0.09
+T: 1 1 : 11 : 11 : 0.01
+T: 1 1 : 11 : 20 : 0.81
+T: 1 1 : 11 : 23 : 0.09
+T: 1 2 : 11 : 7 : 0.09
+T: 1 2 : 11 : 11 : 0.01
+T: 1 2 : 11 : 19 : 0.81
+T: 1 2 : 11 : 23 : 0.09
+T: 1 3 : 11 : 11 : 0.1
+T: 1 3 : 11 : 23 : 0.9
+T: 2 0 : 11 : 0 : 0.9
+T: 2 0 : 11 : 10 : 0.09
+T: 2 0 : 11 : 11 : 0.01
+T: 2 1 : 11 : 0 : 0.9
+T: 2 1 : 11 : 8 : 0.09
+T: 2 1 : 11 : 11 : 0.01
+T: 2 2 : 11 : 0 : 0.9
+T: 2 2 : 11 : 7 : 0.09
+T: 2 2 : 11 : 11 : 0.01
+T: 2 3 : 11 : 0 : 0.9
+T: 2 3 : 11 : 11 : 0.1
+T: 3 0 : 11 : 10 : 0.9
+T: 3 0 : 11 : 11 : 0.1
+T: 3 1 : 11 : 8 : 0.9
+T: 3 1 : 11 : 11 : 0.1
+T: 3 2 : 11 : 7 : 0.9
+T: 3 2 : 11 : 11 : 0.1
+T: 3 3 : 11 : 11 : 1.0
+T: 0 0 : 12 : 12 : 0.01
+T: 0 0 : 12 : 15 : 0.09
+T: 0 0 : 12 : 48 : 0.09
+T: 0 0 : 12 : 51 : 0.81
+T: 0 1 : 12 : 12 : 0.01
+T: 0 1 : 12 : 13 : 0.09
+T: 0 1 : 12 : 48 : 0.09
+T: 0 1 : 12 : 49 : 0.81
+T: 0 2 : 12 : 1 : 0.9
+T: 0 2 : 12 : 12 : 0.01
+T: 0 2 : 12 : 48 : 0.09
+T: 0 3 : 12 : 12 : 0.1
+T: 0 3 : 12 : 48 : 0.9
+T: 1 0 : 12 : 12 : 0.01
+T: 1 0 : 12 : 15 : 0.09
+T: 1 0 : 12 : 24 : 0.09
+T: 1 0 : 12 : 27 : 0.81
+T: 1 1 : 12 : 12 : 0.01
+T: 1 1 : 12 : 13 : 0.09
+T: 1 1 : 12 : 24 : 0.09
+T: 1 1 : 12 : 25 : 0.81
+T: 1 2 : 12 : 1 : 0.9
+T: 1 2 : 12 : 12 : 0.01
+T: 1 2 : 12 : 24 : 0.09
+T: 1 3 : 12 : 12 : 0.1
+T: 1 3 : 12 : 24 : 0.9
+T: 2 0 : 12 : 0 : 0.9
+T: 2 0 : 12 : 12 : 0.01
+T: 2 0 : 12 : 15 : 0.09
+T: 2 1 : 12 : 0 : 0.9
+T: 2 1 : 12 : 12 : 0.01
+T: 2 1 : 12 : 13 : 0.09
+T: 2 2 : 12 : 0 : 0.09
+T: 2 2 : 12 : 1 : 0.09
+T: 2 2 : 12 : 2 : 0.81
+T: 2 2 : 12 : 12 : 0.01
+T: 2 3 : 12 : 0 : 0.9
+T: 2 3 : 12 : 12 : 0.1
+T: 3 0 : 12 : 12 : 0.1
+T: 3 0 : 12 : 15 : 0.9
+T: 3 1 : 12 : 12 : 0.1
+T: 3 1 : 12 : 13 : 0.9
+T: 3 2 : 12 : 1 : 0.9
+T: 3 2 : 12 : 12 : 0.1
+T: 3 3 : 12 : 12 : 1.0
+T: 0 0 : 13 : 12 : 0.09
+T: 0 0 : 13 : 13 : 0.01
+T: 0 0 : 13 : 48 : 0.81
+T: 0 0 : 13 : 49 : 0.09
+T: 0 1 : 13 : 13 : 0.01
+T: 0 1 : 13 : 14 : 0.09
+T: 0 1 : 13 : 49 : 0.09
+T: 0 1 : 13 : 50 : 0.81
+T: 0 2 : 13 : 13 : 0.1
+T: 0 2 : 13 : 49 : 0.9
+T: 0 3 : 13 : 13 : 0.1
+T: 0 3 : 13 : 49 : 0.9
+T: 1 0 : 13 : 12 : 0.09
+T: 1 0 : 13 : 13 : 0.01
+T: 1 0 : 13 : 24 : 0.81
+T: 1 0 : 13 : 25 : 0.09
+T: 1 1 : 13 : 13 : 0.01
+T: 1 1 : 13 : 14 : 0.09
+T: 1 1 : 13 : 25 : 0.09
+T: 1 1 : 13 : 26 : 0.81
+T: 1 2 : 13 : 13 : 0.1
+T: 1 2 : 13 : 25 : 0.9
+T: 1 3 : 13 : 13 : 0.1
+T: 1 3 : 13 : 25 : 0.9
+T: 2 0 : 13 : 0 : 0.9
+T: 2 0 : 13 : 12 : 0.09
+T: 2 0 : 13 : 13 : 0.01
+T: 2 1 : 13 : 0 : 0.9
+T: 2 1 : 13 : 13 : 0.01
+T: 2 1 : 13 : 14 : 0.09
+T: 2 2 : 13 : 0 : 0.9
+T: 2 2 : 13 : 13 : 0.1
+T: 2 3 : 13 : 0 : 0.9
+T: 2 3 : 13 : 13 : 0.1
+T: 3 0 : 13 : 12 : 0.9
+T: 3 0 : 13 : 13 : 0.1
+T: 3 1 : 13 : 13 : 0.1
+T: 3 1 : 13 : 14 : 0.9
+T: 3 2 : 13 : 13 : 1.0
+T: 3 3 : 13 : 13 : 1.0
+T: 0 0 : 14 : 13 : 0.09
+T: 0 0 : 14 : 14 : 0.01
+T: 0 0 : 14 : 49 : 0.81
+T: 0 0 : 14 : 50 : 0.09
+T: 0 1 : 14 : 14 : 0.01
+T: 0 1 : 14 : 15 : 0.09
+T: 0 1 : 14 : 50 : 0.09
+T: 0 1 : 14 : 51 : 0.81
+T: 0 2 : 14 : 14 : 0.1
+T: 0 2 : 14 : 50 : 0.9
+T: 0 3 : 14 : 14 : 0.1
+T: 0 3 : 14 : 50 : 0.9
+T: 1 0 : 14 : 13 : 0.09
+T: 1 0 : 14 : 14 : 0.01
+T: 1 0 : 14 : 25 : 0.81
+T: 1 0 : 14 : 26 : 0.09
+T: 1 1 : 14 : 14 : 0.01
+T: 1 1 : 14 : 15 : 0.09
+T: 1 1 : 14 : 26 : 0.09
+T: 1 1 : 14 : 27 : 0.81
+T: 1 2 : 14 : 14 : 0.1
+T: 1 2 : 14 : 26 : 0.9
+T: 1 3 : 14 : 14 : 0.1
+T: 1 3 : 14 : 26 : 0.9
+T: 2 0 : 14 : 0 : 0.9
+T: 2 0 : 14 : 13 : 0.09
+T: 2 0 : 14 : 14 : 0.01
+T: 2 1 : 14 : 0 : 0.9
+T: 2 1 : 14 : 14 : 0.01
+T: 2 1 : 14 : 15 : 0.09
+T: 2 2 : 14 : 0 : 0.9
+T: 2 2 : 14 : 14 : 0.1
+T: 2 3 : 14 : 0 : 0.9
+T: 2 3 : 14 : 14 : 0.1
+T: 3 0 : 14 : 13 : 0.9
+T: 3 0 : 14 : 14 : 0.1
+T: 3 1 : 14 : 14 : 0.1
+T: 3 1 : 14 : 15 : 0.9
+T: 3 2 : 14 : 14 : 1.0
+T: 3 3 : 14 : 14 : 1.0
+T: 0 0 : 15 : 14 : 0.09
+T: 0 0 : 15 : 15 : 0.01
+T: 0 0 : 15 : 50 : 0.81
+T: 0 0 : 15 : 51 : 0.09
+T: 0 1 : 15 : 12 : 0.09
+T: 0 1 : 15 : 15 : 0.01
+T: 0 1 : 15 : 48 : 0.81
+T: 0 1 : 15 : 51 : 0.09
+T: 0 2 : 15 : 11 : 0.09
+T: 0 2 : 15 : 15 : 0.01
+T: 0 2 : 15 : 47 : 0.81
+T: 0 2 : 15 : 51 : 0.09
+T: 0 3 : 15 : 15 : 0.1
+T: 0 3 : 15 : 51 : 0.9
+T: 1 0 : 15 : 14 : 0.09
+T: 1 0 : 15 : 15 : 0.01
+T: 1 0 : 15 : 26 : 0.81
+T: 1 0 : 15 : 27 : 0.09
+T: 1 1 : 15 : 12 : 0.09
+T: 1 1 : 15 : 15 : 0.01
+T: 1 1 : 15 : 24 : 0.81
+T: 1 1 : 15 : 27 : 0.09
+T: 1 2 : 15 : 11 : 0.09
+T: 1 2 : 15 : 15 : 0.01
+T: 1 2 : 15 : 23 : 0.81
+T: 1 2 : 15 : 27 : 0.09
+T: 1 3 : 15 : 15 : 0.1
+T: 1 3 : 15 : 27 : 0.9
+T: 2 0 : 15 : 0 : 0.9
+T: 2 0 : 15 : 14 : 0.09
+T: 2 0 : 15 : 15 : 0.01
+T: 2 1 : 15 : 0 : 0.9
+T: 2 1 : 15 : 12 : 0.09
+T: 2 1 : 15 : 15 : 0.01
+T: 2 2 : 15 : 0 : 0.9
+T: 2 2 : 15 : 11 : 0.09
+T: 2 2 : 15 : 15 : 0.01
+T: 2 3 : 15 : 0 : 0.9
+T: 2 3 : 15 : 15 : 0.1
+T: 3 0 : 15 : 14 : 0.9
+T: 3 0 : 15 : 15 : 0.1
+T: 3 1 : 15 : 12 : 0.9
+T: 3 1 : 15 : 15 : 0.1
+T: 3 2 : 15 : 11 : 0.9
+T: 3 2 : 15 : 15 : 0.1
+T: 3 3 : 15 : 15 : 1.0
+T: 0 0 : 16 : 4 : 0.09
+T: 0 0 : 16 : 7 : 0.81
+T: 0 0 : 16 : 16 : 0.01
+T: 0 0 : 16 : 19 : 0.09
+T: 0 1 : 16 : 4 : 0.09
+T: 0 1 : 16 : 5 : 0.81
+T: 0 1 : 16 : 16 : 0.01
+T: 0 1 : 16 : 17 : 0.09
+T: 0 2 : 16 : 4 : 0.9
+T: 0 2 : 16 : 16 : 0.1
+T: 0 3 : 16 : 4 : 0.9
+T: 0 3 : 16 : 16 : 0.1
+T: 1 0 : 16 : 16 : 0.01
+T: 1 0 : 16 : 19 : 0.09
+T: 1 0 : 16 : 28 : 0.09
+T: 1 0 : 16 : 31 : 0.81
+T: 1 1 : 16 : 16 : 0.01
+T: 1 1 : 16 : 17 : 0.09
+T: 1 1 : 16 : 28 : 0.09
+T: 1 1 : 16 : 29 : 0.81
+T: 1 2 : 16 : 16 : 0.1
+T: 1 2 : 16 : 28 : 0.9
+T: 1 3 : 16 : 16 : 0.1
+T: 1 3 : 16 : 28 : 0.9
+T: 2 0 : 16 : 16 : 0.1
+T: 2 0 : 16 : 19 : 0.9
+T: 2 1 : 16 : 16 : 0.1
+T: 2 1 : 16 : 17 : 0.9
+T: 2 2 : 16 : 16 : 1.0
+T: 2 3 : 16 : 16 : 1.0
+T: 3 0 : 16 : 16 : 0.1
+T: 3 0 : 16 : 19 : 0.9
+T: 3 1 : 16 : 16 : 0.1
+T: 3 1 : 16 : 17 : 0.9
+T: 3 2 : 16 : 16 : 1.0
+T: 3 3 : 16 : 16 : 1.0
+T: 0 0 : 17 : 4 : 0.81
+T: 0 0 : 17 : 5 : 0.09
+T: 0 0 : 17 : 16 : 0.09
+T: 0 0 : 17 : 17 : 0.01
+T: 0 1 : 17 : 5 : 0.09
+T: 0 1 : 17 : 6 : 0.81
+T: 0 1 : 17 : 17 : 0.01
+T: 0 1 : 17 : 18 : 0.09
+T: 0 2 : 17 : 5 : 0.09
+T: 0 2 : 17 : 9 : 0.81
+T: 0 2 : 17 : 17 : 0.01
+T: 0 2 : 17 : 21 : 0.09
+T: 0 3 : 17 : 5 : 0.9
+T: 0 3 : 17 : 17 : 0.1
+T: 1 0 : 17 : 16 : 0.09
+T: 1 0 : 17 : 17 : 0.01
+T: 1 0 : 17 : 28 : 0.81
+T: 1 0 : 17 : 29 : 0.09
+T: 1 1 : 17 : 17 : 0.01
+T: 1 1 : 17 : 18 : 0.09
+T: 1 1 : 17 : 29 : 0.09
+T: 1 1 : 17 : 30 : 0.81
+T: 1 2 : 17 : 17 : 0.01
+T: 1 2 : 17 : 21 : 0.09
+T: 1 2 : 17 : 29 : 0.09
+T: 1 2 : 17 : 33 : 0.81
+T: 1 3 : 17 : 17 : 0.1
+T: 1 3 : 17 : 29 : 0.9
+T: 2 0 : 17 : 16 : 0.9
+T: 2 0 : 17 : 17 : 0.1
+T: 2 1 : 17 : 17 : 0.1
+T: 2 1 : 17 : 18 : 0.9
+T: 2 2 : 17 : 17 : 0.1
+T: 2 2 : 17 : 21 : 0.9
+T: 2 3 : 17 : 17 : 1.0
+T: 3 0 : 17 : 16 : 0.9
+T: 3 0 : 17 : 17 : 0.1
+T: 3 1 : 17 : 17 : 0.1
+T: 3 1 : 17 : 18 : 0.9
+T: 3 2 : 17 : 17 : 0.1
+T: 3 2 : 17 : 21 : 0.9
+T: 3 3 : 17 : 17 : 1.0
+T: 0 0 : 18 : 5 : 0.81
+T: 0 0 : 18 : 6 : 0.09
+T: 0 0 : 18 : 17 : 0.09
+T: 0 0 : 18 : 18 : 0.01
+T: 0 1 : 18 : 6 : 0.09
+T: 0 1 : 18 : 7 : 0.81
+T: 0 1 : 18 : 18 : 0.01
+T: 0 1 : 18 : 19 : 0.09
+T: 0 2 : 18 : 6 : 0.9
+T: 0 2 : 18 : 18 : 0.1
+T: 0 3 : 18 : 6 : 0.9
+T: 0 3 : 18 : 18 : 0.1
+T: 1 0 : 18 : 17 : 0.09
+T: 1 0 : 18 : 18 : 0.01
+T: 1 0 : 18 : 29 : 0.81
+T: 1 0 : 18 : 30 : 0.09
+T: 1 1 : 18 : 18 : 0.01
+T: 1 1 : 18 : 19 : 0.09
+T: 1 1 : 18 : 30 : 0.09
+T: 1 1 : 18 : 31 : 0.81
+T: 1 2 : 18 : 18 : 0.1
+T: 1 2 : 18 : 30 : 0.9
+T: 1 3 : 18 : 18 : 0.1
+T: 1 3 : 18 : 30 : 0.9
+T: 2 0 : 18 : 17 : 0.9
+T: 2 0 : 18 : 18 : 0.1
+T: 2 1 : 18 : 18 : 0.1
+T: 2 1 : 18 : 19 : 0.9
+T: 2 2 : 18 : 18 : 1.0
+T: 2 3 : 18 : 18 : 1.0
+T: 3 0 : 18 : 17 : 0.9
+T: 3 0 : 18 : 18 : 0.1
+T: 3 1 : 18 : 18 : 0.1
+T: 3 1 : 18 : 19 : 0.9
+T: 3 2 : 18 : 18 : 1.0
+T: 3 3 : 18 : 18 : 1.0
+T: 0 0 : 19 : 6 : 0.81
+T: 0 0 : 19 : 7 : 0.09
+T: 0 0 : 19 : 18 : 0.09
+T: 0 0 : 19 : 19 : 0.01
+T: 0 1 : 19 : 4 : 0.81
+T: 0 1 : 19 : 7 : 0.09
+T: 0 1 : 19 : 16 : 0.09
+T: 0 1 : 19 : 19 : 0.01
+T: 0 2 : 19 : 7 : 0.9
+T: 0 2 : 19 : 19 : 0.1
+T: 0 3 : 19 : 7 : 0.9
+T: 0 3 : 19 : 19 : 0.1
+T: 1 0 : 19 : 18 : 0.09
+T: 1 0 : 19 : 19 : 0.01
+T: 1 0 : 19 : 30 : 0.81
+T: 1 0 : 19 : 31 : 0.09
+T: 1 1 : 19 : 16 : 0.09
+T: 1 1 : 19 : 19 : 0.01
+T: 1 1 : 19 : 28 : 0.81
+T: 1 1 : 19 : 31 : 0.09
+T: 1 2 : 19 : 19 : 0.1
+T: 1 2 : 19 : 31 : 0.9
+T: 1 3 : 19 : 19 : 0.1
+T: 1 3 : 19 : 31 : 0.9
+T: 2 0 : 19 : 18 : 0.9
+T: 2 0 : 19 : 19 : 0.1
+T: 2 1 : 19 : 16 : 0.9
+T: 2 1 : 19 : 19 : 0.1
+T: 2 2 : 19 : 19 : 1.0
+T: 2 3 : 19 : 19 : 1.0
+T: 3 0 : 19 : 18 : 0.9
+T: 3 0 : 19 : 19 : 0.1
+T: 3 1 : 19 : 16 : 0.9
+T: 3 1 : 19 : 19 : 0.1
+T: 3 2 : 19 : 19 : 1.0
+T: 3 3 : 19 : 19 : 1.0
+T: 0 0 : 20 : 8 : 0.09
+T: 0 0 : 20 : 11 : 0.81
+T: 0 0 : 20 : 20 : 0.01
+T: 0 0 : 20 : 23 : 0.09
+T: 0 1 : 20 : 8 : 0.09
+T: 0 1 : 20 : 9 : 0.81
+T: 0 1 : 20 : 20 : 0.01
+T: 0 1 : 20 : 21 : 0.09
+T: 0 2 : 20 : 8 : 0.9
+T: 0 2 : 20 : 20 : 0.1
+T: 0 3 : 20 : 8 : 0.9
+T: 0 3 : 20 : 20 : 0.1
+T: 1 0 : 20 : 20 : 0.01
+T: 1 0 : 20 : 23 : 0.09
+T: 1 0 : 20 : 32 : 0.09
+T: 1 0 : 20 : 35 : 0.81
+T: 1 1 : 20 : 20 : 0.01
+T: 1 1 : 20 : 21 : 0.09
+T: 1 1 : 20 : 32 : 0.09
+T: 1 1 : 20 : 33 : 0.81
+T: 1 2 : 20 : 20 : 0.1
+T: 1 2 : 20 : 32 : 0.9
+T: 1 3 : 20 : 20 : 0.1
+T: 1 3 : 20 : 32 : 0.9
+T: 2 0 : 20 : 20 : 0.01
+T: 2 0 : 20 : 23 : 0.09
+T: 2 0 : 20 : 60 : 0.09
+T: 2 0 : 20 : 63 : 0.81
+T: 2 1 : 20 : 20 : 0.01
+T: 2 1 : 20 : 21 : 0.09
+T: 2 1 : 20 : 60 : 0.09
+T: 2 1 : 20 : 61 : 0.81
+T: 2 2 : 20 : 20 : 0.1
+T: 2 2 : 20 : 60 : 0.9
+T: 2 3 : 20 : 20 : 0.1
+T: 2 3 : 20 : 60 : 0.9
+T: 3 0 : 20 : 20 : 0.1
+T: 3 0 : 20 : 23 : 0.9
+T: 3 1 : 20 : 20 : 0.1
+T: 3 1 : 20 : 21 : 0.9
+T: 3 2 : 20 : 20 : 1.0
+T: 3 3 : 20 : 20 : 1.0
+T: 0 0 : 21 : 8 : 0.81
+T: 0 0 : 21 : 9 : 0.09
+T: 0 0 : 21 : 20 : 0.09
+T: 0 0 : 21 : 21 : 0.01
+T: 0 1 : 21 : 9 : 0.09
+T: 0 1 : 21 : 10 : 0.81
+T: 0 1 : 21 : 21 : 0.01
+T: 0 1 : 21 : 22 : 0.09
+T: 0 2 : 21 : 9 : 0.09
+T: 0 2 : 21 : 13 : 0.81
+T: 0 2 : 21 : 21 : 0.01
+T: 0 2 : 21 : 25 : 0.09
+T: 0 3 : 21 : 9 : 0.9
+T: 0 3 : 21 : 21 : 0.1
+T: 1 0 : 21 : 20 : 0.09
+T: 1 0 : 21 : 21 : 0.01
+T: 1 0 : 21 : 32 : 0.81
+T: 1 0 : 21 : 33 : 0.09
+T: 1 1 : 21 : 21 : 0.01
+T: 1 1 : 21 : 22 : 0.09
+T: 1 1 : 21 : 33 : 0.09
+T: 1 1 : 21 : 34 : 0.81
+T: 1 2 : 21 : 21 : 0.01
+T: 1 2 : 21 : 25 : 0.09
+T: 1 2 : 21 : 33 : 0.09
+T: 1 2 : 21 : 37 : 0.81
+T: 1 3 : 21 : 21 : 0.1
+T: 1 3 : 21 : 33 : 0.9
+T: 2 0 : 21 : 20 : 0.09
+T: 2 0 : 21 : 21 : 0.01
+T: 2 0 : 21 : 60 : 0.81
+T: 2 0 : 21 : 61 : 0.09
+T: 2 1 : 21 : 21 : 0.01
+T: 2 1 : 21 : 22 : 0.09
+T: 2 1 : 21 : 61 : 0.09
+T: 2 1 : 21 : 62 : 0.81
+T: 2 2 : 21 : 21 : 0.01
+T: 2 2 : 21 : 25 : 0.09
+T: 2 2 : 21 : 61 : 0.09
+T: 2 2 : 21 : 65 : 0.81
+T: 2 3 : 21 : 21 : 0.1
+T: 2 3 : 21 : 61 : 0.9
+T: 3 0 : 21 : 20 : 0.9
+T: 3 0 : 21 : 21 : 0.1
+T: 3 1 : 21 : 21 : 0.1
+T: 3 1 : 21 : 22 : 0.9
+T: 3 2 : 21 : 21 : 0.1
+T: 3 2 : 21 : 25 : 0.9
+T: 3 3 : 21 : 21 : 1.0
+T: 0 0 : 22 : 9 : 0.81
+T: 0 0 : 22 : 10 : 0.09
+T: 0 0 : 22 : 21 : 0.09
+T: 0 0 : 22 : 22 : 0.01
+T: 0 1 : 22 : 10 : 0.09
+T: 0 1 : 22 : 11 : 0.81
+T: 0 1 : 22 : 22 : 0.01
+T: 0 1 : 22 : 23 : 0.09
+T: 0 2 : 22 : 10 : 0.9
+T: 0 2 : 22 : 22 : 0.1
+T: 0 3 : 22 : 10 : 0.9
+T: 0 3 : 22 : 22 : 0.1
+T: 1 0 : 22 : 21 : 0.09
+T: 1 0 : 22 : 22 : 0.01
+T: 1 0 : 22 : 33 : 0.81
+T: 1 0 : 22 : 34 : 0.09
+T: 1 1 : 22 : 22 : 0.01
+T: 1 1 : 22 : 23 : 0.09
+T: 1 1 : 22 : 34 : 0.09
+T: 1 1 : 22 : 35 : 0.81
+T: 1 2 : 22 : 22 : 0.1
+T: 1 2 : 22 : 34 : 0.9
+T: 1 3 : 22 : 22 : 0.1
+T: 1 3 : 22 : 34 : 0.9
+T: 2 0 : 22 : 21 : 0.09
+T: 2 0 : 22 : 22 : 0.01
+T: 2 0 : 22 : 61 : 0.81
+T: 2 0 : 22 : 62 : 0.09
+T: 2 1 : 22 : 22 : 0.01
+T: 2 1 : 22 : 23 : 0.09
+T: 2 1 : 22 : 62 : 0.09
+T: 2 1 : 22 : 63 : 0.81
+T: 2 2 : 22 : 22 : 0.1
+T: 2 2 : 22 : 62 : 0.9
+T: 2 3 : 22 : 22 : 0.1
+T: 2 3 : 22 : 62 : 0.9
+T: 3 0 : 22 : 21 : 0.9
+T: 3 0 : 22 : 22 : 0.1
+T: 3 1 : 22 : 22 : 0.1
+T: 3 1 : 22 : 23 : 0.9
+T: 3 2 : 22 : 22 : 1.0
+T: 3 3 : 22 : 22 : 1.0
+T: 0 0 : 23 : 10 : 0.81
+T: 0 0 : 23 : 11 : 0.09
+T: 0 0 : 23 : 22 : 0.09
+T: 0 0 : 23 : 23 : 0.01
+T: 0 1 : 23 : 8 : 0.81
+T: 0 1 : 23 : 11 : 0.09
+T: 0 1 : 23 : 20 : 0.09
+T: 0 1 : 23 : 23 : 0.01
+T: 0 2 : 23 : 7 : 0.81
+T: 0 2 : 23 : 11 : 0.09
+T: 0 2 : 23 : 19 : 0.09
+T: 0 2 : 23 : 23 : 0.01
+T: 0 3 : 23 : 11 : 0.9
+T: 0 3 : 23 : 23 : 0.1
+T: 1 0 : 23 : 22 : 0.09
+T: 1 0 : 23 : 23 : 0.01
+T: 1 0 : 23 : 34 : 0.81
+T: 1 0 : 23 : 35 : 0.09
+T: 1 1 : 23 : 20 : 0.09
+T: 1 1 : 23 : 23 : 0.01
+T: 1 1 : 23 : 32 : 0.81
+T: 1 1 : 23 : 35 : 0.09
+T: 1 2 : 23 : 19 : 0.09
+T: 1 2 : 23 : 23 : 0.01
+T: 1 2 : 23 : 31 : 0.81
+T: 1 2 : 23 : 35 : 0.09
+T: 1 3 : 23 : 23 : 0.1
+T: 1 3 : 23 : 35 : 0.9
+T: 2 0 : 23 : 22 : 0.09
+T: 2 0 : 23 : 23 : 0.01
+T: 2 0 : 23 : 62 : 0.81
+T: 2 0 : 23 : 63 : 0.09
+T: 2 1 : 23 : 20 : 0.09
+T: 2 1 : 23 : 23 : 0.01
+T: 2 1 : 23 : 60 : 0.81
+T: 2 1 : 23 : 63 : 0.09
+T: 2 2 : 23 : 19 : 0.09
+T: 2 2 : 23 : 23 : 0.82
+T: 2 2 : 23 : 63 : 0.09
+T: 2 3 : 23 : 23 : 0.1
+T: 2 3 : 23 : 63 : 0.9
+T: 3 0 : 23 : 22 : 0.9
+T: 3 0 : 23 : 23 : 0.1
+T: 3 1 : 23 : 20 : 0.9
+T: 3 1 : 23 : 23 : 0.1
+T: 3 2 : 23 : 19 : 0.9
+T: 3 2 : 23 : 23 : 0.1
+T: 3 3 : 23 : 23 : 1.0
+T: 0 0 : 24 : 12 : 0.09
+T: 0 0 : 24 : 15 : 0.81
+T: 0 0 : 24 : 24 : 0.01
+T: 0 0 : 24 : 27 : 0.09
+T: 0 1 : 24 : 12 : 0.09
+T: 0 1 : 24 : 13 : 0.81
+T: 0 1 : 24 : 24 : 0.01
+T: 0 1 : 24 : 25 : 0.09
+T: 0 2 : 24 : 1 : 0.9
+T: 0 2 : 24 : 12 : 0.09
+T: 0 2 : 24 : 24 : 0.01
+T: 0 3 : 24 : 12 : 0.9
+T: 0 3 : 24 : 24 : 0.1
+T: 1 0 : 24 : 24 : 0.01
+T: 1 0 : 24 : 27 : 0.09
+T: 1 0 : 24 : 36 : 0.09
+T: 1 0 : 24 : 39 : 0.81
+T: 1 1 : 24 : 24 : 0.01
+T: 1 1 : 24 : 25 : 0.09
+T: 1 1 : 24 : 36 : 0.09
+T: 1 1 : 24 : 37 : 0.81
+T: 1 2 : 24 : 1 : 0.9
+T: 1 2 : 24 : 24 : 0.01
+T: 1 2 : 24 : 36 : 0.09
+T: 1 3 : 24 : 24 : 0.1
+T: 1 3 : 24 : 36 : 0.9
+T: 2 0 : 24 : 24 : 0.01
+T: 2 0 : 24 : 27 : 0.09
+T: 2 0 : 24 : 64 : 0.09
+T: 2 0 : 24 : 67 : 0.81
+T: 2 1 : 24 : 24 : 0.01
+T: 2 1 : 24 : 25 : 0.09
+T: 2 1 : 24 : 64 : 0.09
+T: 2 1 : 24 : 65 : 0.81
+T: 2 2 : 24 : 1 : 0.9
+T: 2 2 : 24 : 24 : 0.01
+T: 2 2 : 24 : 64 : 0.09
+T: 2 3 : 24 : 24 : 0.1
+T: 2 3 : 24 : 64 : 0.9
+T: 3 0 : 24 : 24 : 0.1
+T: 3 0 : 24 : 27 : 0.9
+T: 3 1 : 24 : 24 : 0.1
+T: 3 1 : 24 : 25 : 0.9
+T: 3 2 : 24 : 1 : 0.9
+T: 3 2 : 24 : 24 : 0.1
+T: 3 3 : 24 : 24 : 1.0
+T: 0 0 : 25 : 12 : 0.81
+T: 0 0 : 25 : 13 : 0.09
+T: 0 0 : 25 : 24 : 0.09
+T: 0 0 : 25 : 25 : 0.01
+T: 0 1 : 25 : 13 : 0.09
+T: 0 1 : 25 : 14 : 0.81
+T: 0 1 : 25 : 25 : 0.01
+T: 0 1 : 25 : 26 : 0.09
+T: 0 2 : 25 : 13 : 0.9
+T: 0 2 : 25 : 25 : 0.1
+T: 0 3 : 25 : 13 : 0.9
+T: 0 3 : 25 : 25 : 0.1
+T: 1 0 : 25 : 24 : 0.09
+T: 1 0 : 25 : 25 : 0.01
+T: 1 0 : 25 : 36 : 0.81
+T: 1 0 : 25 : 37 : 0.09
+T: 1 1 : 25 : 25 : 0.01
+T: 1 1 : 25 : 26 : 0.09
+T: 1 1 : 25 : 37 : 0.09
+T: 1 1 : 25 : 38 : 0.81
+T: 1 2 : 25 : 25 : 0.1
+T: 1 2 : 25 : 37 : 0.9
+T: 1 3 : 25 : 25 : 0.1
+T: 1 3 : 25 : 37 : 0.9
+T: 2 0 : 25 : 24 : 0.09
+T: 2 0 : 25 : 25 : 0.01
+T: 2 0 : 25 : 64 : 0.81
+T: 2 0 : 25 : 65 : 0.09
+T: 2 1 : 25 : 25 : 0.01
+T: 2 1 : 25 : 26 : 0.09
+T: 2 1 : 25 : 65 : 0.09
+T: 2 1 : 25 : 66 : 0.81
+T: 2 2 : 25 : 25 : 0.1
+T: 2 2 : 25 : 65 : 0.9
+T: 2 3 : 25 : 25 : 0.1
+T: 2 3 : 25 : 65 : 0.9
+T: 3 0 : 25 : 24 : 0.9
+T: 3 0 : 25 : 25 : 0.1
+T: 3 1 : 25 : 25 : 0.1
+T: 3 1 : 25 : 26 : 0.9
+T: 3 2 : 25 : 25 : 1.0
+T: 3 3 : 25 : 25 : 1.0
+T: 0 0 : 26 : 13 : 0.81
+T: 0 0 : 26 : 14 : 0.09
+T: 0 0 : 26 : 25 : 0.09
+T: 0 0 : 26 : 26 : 0.01
+T: 0 1 : 26 : 14 : 0.09
+T: 0 1 : 26 : 15 : 0.81
+T: 0 1 : 26 : 26 : 0.01
+T: 0 1 : 26 : 27 : 0.09
+T: 0 2 : 26 : 14 : 0.9
+T: 0 2 : 26 : 26 : 0.1
+T: 0 3 : 26 : 14 : 0.9
+T: 0 3 : 26 : 26 : 0.1
+T: 1 0 : 26 : 25 : 0.09
+T: 1 0 : 26 : 26 : 0.01
+T: 1 0 : 26 : 37 : 0.81
+T: 1 0 : 26 : 38 : 0.09
+T: 1 1 : 26 : 26 : 0.01
+T: 1 1 : 26 : 27 : 0.09
+T: 1 1 : 26 : 38 : 0.09
+T: 1 1 : 26 : 39 : 0.81
+T: 1 2 : 26 : 26 : 0.1
+T: 1 2 : 26 : 38 : 0.9
+T: 1 3 : 26 : 26 : 0.1
+T: 1 3 : 26 : 38 : 0.9
+T: 2 0 : 26 : 25 : 0.09
+T: 2 0 : 26 : 26 : 0.01
+T: 2 0 : 26 : 65 : 0.81
+T: 2 0 : 26 : 66 : 0.09
+T: 2 1 : 26 : 26 : 0.01
+T: 2 1 : 26 : 27 : 0.09
+T: 2 1 : 26 : 66 : 0.09
+T: 2 1 : 26 : 67 : 0.81
+T: 2 2 : 26 : 26 : 0.1
+T: 2 2 : 26 : 66 : 0.9
+T: 2 3 : 26 : 26 : 0.1
+T: 2 3 : 26 : 66 : 0.9
+T: 3 0 : 26 : 25 : 0.9
+T: 3 0 : 26 : 26 : 0.1
+T: 3 1 : 26 : 26 : 0.1
+T: 3 1 : 26 : 27 : 0.9
+T: 3 2 : 26 : 26 : 1.0
+T: 3 3 : 26 : 26 : 1.0
+T: 0 0 : 27 : 14 : 0.81
+T: 0 0 : 27 : 15 : 0.09
+T: 0 0 : 27 : 26 : 0.09
+T: 0 0 : 27 : 27 : 0.01
+T: 0 1 : 27 : 12 : 0.81
+T: 0 1 : 27 : 15 : 0.09
+T: 0 1 : 27 : 24 : 0.09
+T: 0 1 : 27 : 27 : 0.01
+T: 0 2 : 27 : 11 : 0.81
+T: 0 2 : 27 : 15 : 0.09
+T: 0 2 : 27 : 23 : 0.09
+T: 0 2 : 27 : 27 : 0.01
+T: 0 3 : 27 : 15 : 0.9
+T: 0 3 : 27 : 27 : 0.1
+T: 1 0 : 27 : 26 : 0.09
+T: 1 0 : 27 : 27 : 0.01
+T: 1 0 : 27 : 38 : 0.81
+T: 1 0 : 27 : 39 : 0.09
+T: 1 1 : 27 : 24 : 0.09
+T: 1 1 : 27 : 27 : 0.01
+T: 1 1 : 27 : 36 : 0.81
+T: 1 1 : 27 : 39 : 0.09
+T: 1 2 : 27 : 23 : 0.09
+T: 1 2 : 27 : 27 : 0.01
+T: 1 2 : 27 : 35 : 0.81
+T: 1 2 : 27 : 39 : 0.09
+T: 1 3 : 27 : 27 : 0.1
+T: 1 3 : 27 : 39 : 0.9
+T: 2 0 : 27 : 26 : 0.09
+T: 2 0 : 27 : 27 : 0.01
+T: 2 0 : 27 : 66 : 0.81
+T: 2 0 : 27 : 67 : 0.09
+T: 2 1 : 27 : 24 : 0.09
+T: 2 1 : 27 : 27 : 0.01
+T: 2 1 : 27 : 64 : 0.81
+T: 2 1 : 27 : 67 : 0.09
+T: 2 2 : 27 : 23 : 0.09
+T: 2 2 : 27 : 27 : 0.01
+T: 2 2 : 27 : 63 : 0.81
+T: 2 2 : 27 : 67 : 0.09
+T: 2 3 : 27 : 27 : 0.1
+T: 2 3 : 27 : 67 : 0.9
+T: 3 0 : 27 : 26 : 0.9
+T: 3 0 : 27 : 27 : 0.1
+T: 3 1 : 27 : 24 : 0.9
+T: 3 1 : 27 : 27 : 0.1
+T: 3 2 : 27 : 23 : 0.9
+T: 3 2 : 27 : 27 : 0.1
+T: 3 3 : 27 : 27 : 1.0
+T: 0 0 : 28 : 16 : 0.09
+T: 0 0 : 28 : 19 : 0.81
+T: 0 0 : 28 : 28 : 0.01
+T: 0 0 : 28 : 31 : 0.09
+T: 0 1 : 28 : 16 : 0.09
+T: 0 1 : 28 : 17 : 0.81
+T: 0 1 : 28 : 28 : 0.01
+T: 0 1 : 28 : 29 : 0.09
+T: 0 2 : 28 : 16 : 0.9
+T: 0 2 : 28 : 28 : 0.1
+T: 0 3 : 28 : 16 : 0.9
+T: 0 3 : 28 : 28 : 0.1
+T: 1 0 : 28 : 28 : 0.01
+T: 1 0 : 28 : 31 : 0.09
+T: 1 0 : 28 : 40 : 0.09
+T: 1 0 : 28 : 43 : 0.81
+T: 1 1 : 28 : 28 : 0.01
+T: 1 1 : 28 : 29 : 0.09
+T: 1 1 : 28 : 40 : 0.09
+T: 1 1 : 28 : 41 : 0.81
+T: 1 2 : 28 : 28 : 0.1
+T: 1 2 : 28 : 40 : 0.9
+T: 1 3 : 28 : 28 : 0.1
+T: 1 3 : 28 : 40 : 0.9
+T: 2 0 : 28 : 28 : 0.1
+T: 2 0 : 28 : 31 : 0.9
+T: 2 1 : 28 : 28 : 0.1
+T: 2 1 : 28 : 29 : 0.9
+T: 2 2 : 28 : 28 : 1.0
+T: 2 3 : 28 : 28 : 1.0
+T: 3 0 : 28 : 28 : 0.1
+T: 3 0 : 28 : 31 : 0.9
+T: 3 1 : 28 : 28 : 0.1
+T: 3 1 : 28 : 29 : 0.9
+T: 3 2 : 28 : 28 : 1.0
+T: 3 3 : 28 : 28 : 1.0
+T: 0 0 : 29 : 16 : 0.81
+T: 0 0 : 29 : 17 : 0.09
+T: 0 0 : 29 : 28 : 0.09
+T: 0 0 : 29 : 29 : 0.01
+T: 0 1 : 29 : 17 : 0.09
+T: 0 1 : 29 : 18 : 0.81
+T: 0 1 : 29 : 29 : 0.01
+T: 0 1 : 29 : 30 : 0.09
+T: 0 2 : 29 : 17 : 0.09
+T: 0 2 : 29 : 21 : 0.81
+T: 0 2 : 29 : 29 : 0.01
+T: 0 2 : 29 : 33 : 0.09
+T: 0 3 : 29 : 17 : 0.9
+T: 0 3 : 29 : 29 : 0.1
+T: 1 0 : 29 : 28 : 0.09
+T: 1 0 : 29 : 29 : 0.01
+T: 1 0 : 29 : 40 : 0.81
+T: 1 0 : 29 : 41 : 0.09
+T: 1 1 : 29 : 29 : 0.01
+T: 1 1 : 29 : 30 : 0.09
+T: 1 1 : 29 : 41 : 0.09
+T: 1 1 : 29 : 42 : 0.81
+T: 1 2 : 29 : 29 : 0.01
+T: 1 2 : 29 : 33 : 0.09
+T: 1 2 : 29 : 41 : 0.09
+T: 1 2 : 29 : 45 : 0.81
+T: 1 3 : 29 : 29 : 0.1
+T: 1 3 : 29 : 41 : 0.9
+T: 2 0 : 29 : 28 : 0.9
+T: 2 0 : 29 : 29 : 0.1
+T: 2 1 : 29 : 29 : 0.1
+T: 2 1 : 29 : 30 : 0.9
+T: 2 2 : 29 : 29 : 0.1
+T: 2 2 : 29 : 33 : 0.9
+T: 2 3 : 29 : 29 : 1.0
+T: 3 0 : 29 : 28 : 0.9
+T: 3 0 : 29 : 29 : 0.1
+T: 3 1 : 29 : 29 : 0.1
+T: 3 1 : 29 : 30 : 0.9
+T: 3 2 : 29 : 29 : 0.1
+T: 3 2 : 29 : 33 : 0.9
+T: 3 3 : 29 : 29 : 1.0
+T: 0 0 : 30 : 17 : 0.81
+T: 0 0 : 30 : 18 : 0.09
+T: 0 0 : 30 : 29 : 0.09
+T: 0 0 : 30 : 30 : 0.01
+T: 0 1 : 30 : 18 : 0.09
+T: 0 1 : 30 : 19 : 0.81
+T: 0 1 : 30 : 30 : 0.01
+T: 0 1 : 30 : 31 : 0.09
+T: 0 2 : 30 : 18 : 0.9
+T: 0 2 : 30 : 30 : 0.1
+T: 0 3 : 30 : 18 : 0.9
+T: 0 3 : 30 : 30 : 0.1
+T: 1 0 : 30 : 29 : 0.09
+T: 1 0 : 30 : 30 : 0.01
+T: 1 0 : 30 : 41 : 0.81
+T: 1 0 : 30 : 42 : 0.09
+T: 1 1 : 30 : 30 : 0.01
+T: 1 1 : 30 : 31 : 0.09
+T: 1 1 : 30 : 42 : 0.09
+T: 1 1 : 30 : 43 : 0.81
+T: 1 2 : 30 : 30 : 0.1
+T: 1 2 : 30 : 42 : 0.9
+T: 1 3 : 30 : 30 : 0.1
+T: 1 3 : 30 : 42 : 0.9
+T: 2 0 : 30 : 29 : 0.9
+T: 2 0 : 30 : 30 : 0.1
+T: 2 1 : 30 : 30 : 0.1
+T: 2 1 : 30 : 31 : 0.9
+T: 2 2 : 30 : 30 : 1.0
+T: 2 3 : 30 : 30 : 1.0
+T: 3 0 : 30 : 29 : 0.9
+T: 3 0 : 30 : 30 : 0.1
+T: 3 1 : 30 : 30 : 0.1
+T: 3 1 : 30 : 31 : 0.9
+T: 3 2 : 30 : 30 : 1.0
+T: 3 3 : 30 : 30 : 1.0
+T: 0 0 : 31 : 18 : 0.81
+T: 0 0 : 31 : 19 : 0.09
+T: 0 0 : 31 : 30 : 0.09
+T: 0 0 : 31 : 31 : 0.01
+T: 0 1 : 31 : 16 : 0.81
+T: 0 1 : 31 : 19 : 0.09
+T: 0 1 : 31 : 28 : 0.09
+T: 0 1 : 31 : 31 : 0.01
+T: 0 2 : 31 : 19 : 0.9
+T: 0 2 : 31 : 31 : 0.1
+T: 0 3 : 31 : 19 : 0.9
+T: 0 3 : 31 : 31 : 0.1
+T: 1 0 : 31 : 30 : 0.09
+T: 1 0 : 31 : 31 : 0.01
+T: 1 0 : 31 : 42 : 0.81
+T: 1 0 : 31 : 43 : 0.09
+T: 1 1 : 31 : 28 : 0.09
+T: 1 1 : 31 : 31 : 0.01
+T: 1 1 : 31 : 40 : 0.81
+T: 1 1 : 31 : 43 : 0.09
+T: 1 2 : 31 : 31 : 0.1
+T: 1 2 : 31 : 43 : 0.9
+T: 1 3 : 31 : 31 : 0.1
+T: 1 3 : 31 : 43 : 0.9
+T: 2 0 : 31 : 30 : 0.9
+T: 2 0 : 31 : 31 : 0.1
+T: 2 1 : 31 : 28 : 0.9
+T: 2 1 : 31 : 31 : 0.1
+T: 2 2 : 31 : 31 : 1.0
+T: 2 3 : 31 : 31 : 1.0
+T: 3 0 : 31 : 30 : 0.9
+T: 3 0 : 31 : 31 : 0.1
+T: 3 1 : 31 : 28 : 0.9
+T: 3 1 : 31 : 31 : 0.1
+T: 3 2 : 31 : 31 : 1.0
+T: 3 3 : 31 : 31 : 1.0
+T: 0 0 : 32 : 20 : 0.09
+T: 0 0 : 32 : 23 : 0.81
+T: 0 0 : 32 : 32 : 0.01
+T: 0 0 : 32 : 35 : 0.09
+T: 0 1 : 32 : 20 : 0.09
+T: 0 1 : 32 : 21 : 0.81
+T: 0 1 : 32 : 32 : 0.01
+T: 0 1 : 32 : 33 : 0.09
+T: 0 2 : 32 : 20 : 0.9
+T: 0 2 : 32 : 32 : 0.1
+T: 0 3 : 32 : 20 : 0.9
+T: 0 3 : 32 : 32 : 0.1
+T: 1 0 : 32 : 32 : 0.01
+T: 1 0 : 32 : 35 : 0.09
+T: 1 0 : 32 : 44 : 0.09
+T: 1 0 : 32 : 47 : 0.81
+T: 1 1 : 32 : 32 : 0.01
+T: 1 1 : 32 : 33 : 0.09
+T: 1 1 : 32 : 44 : 0.09
+T: 1 1 : 32 : 45 : 0.81
+T: 1 2 : 32 : 32 : 0.1
+T: 1 2 : 32 : 44 : 0.9
+T: 1 3 : 32 : 32 : 0.1
+T: 1 3 : 32 : 44 : 0.9
+T: 2 0 : 32 : 32 : 0.1
+T: 2 0 : 32 : 35 : 0.9
+T: 2 1 : 32 : 32 : 0.1
+T: 2 1 : 32 : 33 : 0.9
+T: 2 2 : 32 : 32 : 1.0
+T: 2 3 : 32 : 32 : 1.0
+T: 3 0 : 32 : 32 : 0.1
+T: 3 0 : 32 : 35 : 0.9
+T: 3 1 : 32 : 32 : 0.1
+T: 3 1 : 32 : 33 : 0.9
+T: 3 2 : 32 : 32 : 1.0
+T: 3 3 : 32 : 32 : 1.0
+T: 0 0 : 33 : 20 : 0.81
+T: 0 0 : 33 : 21 : 0.09
+T: 0 0 : 33 : 32 : 0.09
+T: 0 0 : 33 : 33 : 0.01
+T: 0 1 : 33 : 21 : 0.09
+T: 0 1 : 33 : 22 : 0.81
+T: 0 1 : 33 : 33 : 0.01
+T: 0 1 : 33 : 34 : 0.09
+T: 0 2 : 33 : 21 : 0.09
+T: 0 2 : 33 : 25 : 0.81
+T: 0 2 : 33 : 33 : 0.01
+T: 0 2 : 33 : 37 : 0.09
+T: 0 3 : 33 : 21 : 0.9
+T: 0 3 : 33 : 33 : 0.1
+T: 1 0 : 33 : 32 : 0.09
+T: 1 0 : 33 : 33 : 0.01
+T: 1 0 : 33 : 44 : 0.81
+T: 1 0 : 33 : 45 : 0.09
+T: 1 1 : 33 : 33 : 0.01
+T: 1 1 : 33 : 34 : 0.09
+T: 1 1 : 33 : 45 : 0.09
+T: 1 1 : 33 : 46 : 0.81
+T: 1 2 : 33 : 33 : 0.01
+T: 1 2 : 33 : 37 : 0.09
+T: 1 2 : 33 : 45 : 0.09
+T: 1 2 : 33 : 49 : 0.81
+T: 1 3 : 33 : 33 : 0.1
+T: 1 3 : 33 : 45 : 0.9
+T: 2 0 : 33 : 32 : 0.9
+T: 2 0 : 33 : 33 : 0.1
+T: 2 1 : 33 : 33 : 0.1
+T: 2 1 : 33 : 34 : 0.9
+T: 2 2 : 33 : 33 : 0.1
+T: 2 2 : 33 : 37 : 0.9
+T: 2 3 : 33 : 33 : 1.0
+T: 3 0 : 33 : 32 : 0.9
+T: 3 0 : 33 : 33 : 0.1
+T: 3 1 : 33 : 33 : 0.1
+T: 3 1 : 33 : 34 : 0.9
+T: 3 2 : 33 : 33 : 0.1
+T: 3 2 : 33 : 37 : 0.9
+T: 3 3 : 33 : 33 : 1.0
+T: 0 0 : 34 : 21 : 0.81
+T: 0 0 : 34 : 22 : 0.09
+T: 0 0 : 34 : 33 : 0.09
+T: 0 0 : 34 : 34 : 0.01
+T: 0 1 : 34 : 22 : 0.09
+T: 0 1 : 34 : 23 : 0.81
+T: 0 1 : 34 : 34 : 0.01
+T: 0 1 : 34 : 35 : 0.09
+T: 0 2 : 34 : 22 : 0.9
+T: 0 2 : 34 : 34 : 0.1
+T: 0 3 : 34 : 22 : 0.9
+T: 0 3 : 34 : 34 : 0.1
+T: 1 0 : 34 : 33 : 0.09
+T: 1 0 : 34 : 34 : 0.01
+T: 1 0 : 34 : 45 : 0.81
+T: 1 0 : 34 : 46 : 0.09
+T: 1 1 : 34 : 34 : 0.01
+T: 1 1 : 34 : 35 : 0.09
+T: 1 1 : 34 : 46 : 0.09
+T: 1 1 : 34 : 47 : 0.81
+T: 1 2 : 34 : 34 : 0.1
+T: 1 2 : 34 : 46 : 0.9
+T: 1 3 : 34 : 34 : 0.1
+T: 1 3 : 34 : 46 : 0.9
+T: 2 0 : 34 : 33 : 0.9
+T: 2 0 : 34 : 34 : 0.1
+T: 2 1 : 34 : 34 : 0.1
+T: 2 1 : 34 : 35 : 0.9
+T: 2 2 : 34 : 34 : 1.0
+T: 2 3 : 34 : 34 : 1.0
+T: 3 0 : 34 : 33 : 0.9
+T: 3 0 : 34 : 34 : 0.1
+T: 3 1 : 34 : 34 : 0.1
+T: 3 1 : 34 : 35 : 0.9
+T: 3 2 : 34 : 34 : 1.0
+T: 3 3 : 34 : 34 : 1.0
+T: 0 0 : 35 : 22 : 0.81
+T: 0 0 : 35 : 23 : 0.09
+T: 0 0 : 35 : 34 : 0.09
+T: 0 0 : 35 : 35 : 0.01
+T: 0 1 : 35 : 20 : 0.81
+T: 0 1 : 35 : 23 : 0.09
+T: 0 1 : 35 : 32 : 0.09
+T: 0 1 : 35 : 35 : 0.01
+T: 0 2 : 35 : 19 : 0.81
+T: 0 2 : 35 : 23 : 0.09
+T: 0 2 : 35 : 31 : 0.09
+T: 0 2 : 35 : 35 : 0.01
+T: 0 3 : 35 : 23 : 0.9
+T: 0 3 : 35 : 35 : 0.1
+T: 1 0 : 35 : 34 : 0.09
+T: 1 0 : 35 : 35 : 0.01
+T: 1 0 : 35 : 46 : 0.81
+T: 1 0 : 35 : 47 : 0.09
+T: 1 1 : 35 : 32 : 0.09
+T: 1 1 : 35 : 35 : 0.01
+T: 1 1 : 35 : 44 : 0.81
+T: 1 1 : 35 : 47 : 0.09
+T: 1 2 : 35 : 31 : 0.09
+T: 1 2 : 35 : 35 : 0.01
+T: 1 2 : 35 : 43 : 0.81
+T: 1 2 : 35 : 47 : 0.09
+T: 1 3 : 35 : 35 : 0.1
+T: 1 3 : 35 : 47 : 0.9
+T: 2 0 : 35 : 34 : 0.9
+T: 2 0 : 35 : 35 : 0.1
+T: 2 1 : 35 : 32 : 0.9
+T: 2 1 : 35 : 35 : 0.1
+T: 2 2 : 35 : 31 : 0.9
+T: 2 2 : 35 : 35 : 0.1
+T: 2 3 : 35 : 35 : 1.0
+T: 3 0 : 35 : 34 : 0.9
+T: 3 0 : 35 : 35 : 0.1
+T: 3 1 : 35 : 32 : 0.9
+T: 3 1 : 35 : 35 : 0.1
+T: 3 2 : 35 : 31 : 0.9
+T: 3 2 : 35 : 35 : 0.1
+T: 3 3 : 35 : 35 : 1.0
+T: 0 0 : 36 : 24 : 0.09
+T: 0 0 : 36 : 27 : 0.81
+T: 0 0 : 36 : 36 : 0.01
+T: 0 0 : 36 : 39 : 0.09
+T: 0 1 : 36 : 24 : 0.09
+T: 0 1 : 36 : 25 : 0.81
+T: 0 1 : 36 : 36 : 0.01
+T: 0 1 : 36 : 37 : 0.09
+T: 0 2 : 36 : 1 : 0.9
+T: 0 2 : 36 : 24 : 0.09
+T: 0 2 : 36 : 36 : 0.01
+T: 0 3 : 36 : 24 : 0.9
+T: 0 3 : 36 : 36 : 0.1
+T: 1 0 : 36 : 36 : 0.01
+T: 1 0 : 36 : 39 : 0.09
+T: 1 0 : 36 : 48 : 0.09
+T: 1 0 : 36 : 51 : 0.81
+T: 1 1 : 36 : 36 : 0.01
+T: 1 1 : 36 : 37 : 0.09
+T: 1 1 : 36 : 48 : 0.09
+T: 1 1 : 36 : 49 : 0.81
+T: 1 2 : 36 : 1 : 0.9
+T: 1 2 : 36 : 36 : 0.01
+T: 1 2 : 36 : 48 : 0.09
+T: 1 3 : 36 : 36 : 0.1
+T: 1 3 : 36 : 48 : 0.9
+T: 2 0 : 36 : 36 : 0.1
+T: 2 0 : 36 : 39 : 0.9
+T: 2 1 : 36 : 36 : 0.1
+T: 2 1 : 36 : 37 : 0.9
+T: 2 2 : 36 : 1 : 0.9
+T: 2 2 : 36 : 36 : 0.1
+T: 2 3 : 36 : 36 : 1.0
+T: 3 0 : 36 : 36 : 0.1
+T: 3 0 : 36 : 39 : 0.9
+T: 3 1 : 36 : 36 : 0.1
+T: 3 1 : 36 : 37 : 0.9
+T: 3 2 : 36 : 1 : 0.9
+T: 3 2 : 36 : 36 : 0.1
+T: 3 3 : 36 : 36 : 1.0
+T: 0 0 : 37 : 24 : 0.81
+T: 0 0 : 37 : 25 : 0.09
+T: 0 0 : 37 : 36 : 0.09
+T: 0 0 : 37 : 37 : 0.01
+T: 0 1 : 37 : 25 : 0.09
+T: 0 1 : 37 : 26 : 0.81
+T: 0 1 : 37 : 37 : 0.01
+T: 0 1 : 37 : 38 : 0.09
+T: 0 2 : 37 : 25 : 0.9
+T: 0 2 : 37 : 37 : 0.1
+T: 0 3 : 37 : 25 : 0.9
+T: 0 3 : 37 : 37 : 0.1
+T: 1 0 : 37 : 36 : 0.09
+T: 1 0 : 37 : 37 : 0.01
+T: 1 0 : 37 : 48 : 0.81
+T: 1 0 : 37 : 49 : 0.09
+T: 1 1 : 37 : 37 : 0.01
+T: 1 1 : 37 : 38 : 0.09
+T: 1 1 : 37 : 49 : 0.09
+T: 1 1 : 37 : 50 : 0.81
+T: 1 2 : 37 : 37 : 0.1
+T: 1 2 : 37 : 49 : 0.9
+T: 1 3 : 37 : 37 : 0.1
+T: 1 3 : 37 : 49 : 0.9
+T: 2 0 : 37 : 36 : 0.9
+T: 2 0 : 37 : 37 : 0.1
+T: 2 1 : 37 : 37 : 0.1
+T: 2 1 : 37 : 38 : 0.9
+T: 2 2 : 37 : 37 : 1.0
+T: 2 3 : 37 : 37 : 1.0
+T: 3 0 : 37 : 36 : 0.9
+T: 3 0 : 37 : 37 : 0.1
+T: 3 1 : 37 : 37 : 0.1
+T: 3 1 : 37 : 38 : 0.9
+T: 3 2 : 37 : 37 : 1.0
+T: 3 3 : 37 : 37 : 1.0
+T: 0 0 : 38 : 25 : 0.81
+T: 0 0 : 38 : 26 : 0.09
+T: 0 0 : 38 : 37 : 0.09
+T: 0 0 : 38 : 38 : 0.01
+T: 0 1 : 38 : 26 : 0.09
+T: 0 1 : 38 : 27 : 0.81
+T: 0 1 : 38 : 38 : 0.01
+T: 0 1 : 38 : 39 : 0.09
+T: 0 2 : 38 : 26 : 0.9
+T: 0 2 : 38 : 38 : 0.1
+T: 0 3 : 38 : 26 : 0.9
+T: 0 3 : 38 : 38 : 0.1
+T: 1 0 : 38 : 37 : 0.09
+T: 1 0 : 38 : 38 : 0.01
+T: 1 0 : 38 : 49 : 0.81
+T: 1 0 : 38 : 50 : 0.09
+T: 1 1 : 38 : 38 : 0.01
+T: 1 1 : 38 : 39 : 0.09
+T: 1 1 : 38 : 50 : 0.09
+T: 1 1 : 38 : 51 : 0.81
+T: 1 2 : 38 : 38 : 0.1
+T: 1 2 : 38 : 50 : 0.9
+T: 1 3 : 38 : 38 : 0.1
+T: 1 3 : 38 : 50 : 0.9
+T: 2 0 : 38 : 37 : 0.9
+T: 2 0 : 38 : 38 : 0.1
+T: 2 1 : 38 : 38 : 0.1
+T: 2 1 : 38 : 39 : 0.9
+T: 2 2 : 38 : 38 : 1.0
+T: 2 3 : 38 : 38 : 1.0
+T: 3 0 : 38 : 37 : 0.9
+T: 3 0 : 38 : 38 : 0.1
+T: 3 1 : 38 : 38 : 0.1
+T: 3 1 : 38 : 39 : 0.9
+T: 3 2 : 38 : 38 : 1.0
+T: 3 3 : 38 : 38 : 1.0
+T: 0 0 : 39 : 26 : 0.81
+T: 0 0 : 39 : 27 : 0.09
+T: 0 0 : 39 : 38 : 0.09
+T: 0 0 : 39 : 39 : 0.01
+T: 0 1 : 39 : 24 : 0.81
+T: 0 1 : 39 : 27 : 0.09
+T: 0 1 : 39 : 36 : 0.09
+T: 0 1 : 39 : 39 : 0.01
+T: 0 2 : 39 : 23 : 0.81
+T: 0 2 : 39 : 27 : 0.09
+T: 0 2 : 39 : 35 : 0.09
+T: 0 2 : 39 : 39 : 0.01
+T: 0 3 : 39 : 27 : 0.9
+T: 0 3 : 39 : 39 : 0.1
+T: 1 0 : 39 : 38 : 0.09
+T: 1 0 : 39 : 39 : 0.01
+T: 1 0 : 39 : 50 : 0.81
+T: 1 0 : 39 : 51 : 0.09
+T: 1 1 : 39 : 36 : 0.09
+T: 1 1 : 39 : 39 : 0.01
+T: 1 1 : 39 : 48 : 0.81
+T: 1 1 : 39 : 51 : 0.09
+T: 1 2 : 39 : 35 : 0.09
+T: 1 2 : 39 : 39 : 0.01
+T: 1 2 : 39 : 47 : 0.81
+T: 1 2 : 39 : 51 : 0.09
+T: 1 3 : 39 : 39 : 0.1
+T: 1 3 : 39 : 51 : 0.9
+T: 2 0 : 39 : 38 : 0.9
+T: 2 0 : 39 : 39 : 0.1
+T: 2 1 : 39 : 36 : 0.9
+T: 2 1 : 39 : 39 : 0.1
+T: 2 2 : 39 : 35 : 0.9
+T: 2 2 : 39 : 39 : 0.1
+T: 2 3 : 39 : 39 : 1.0
+T: 3 0 : 39 : 38 : 0.9
+T: 3 0 : 39 : 39 : 0.1
+T: 3 1 : 39 : 36 : 0.9
+T: 3 1 : 39 : 39 : 0.1
+T: 3 2 : 39 : 35 : 0.9
+T: 3 2 : 39 : 39 : 0.1
+T: 3 3 : 39 : 39 : 1.0
+T: 0 0 : 40 : 28 : 0.09
+T: 0 0 : 40 : 31 : 0.81
+T: 0 0 : 40 : 40 : 0.01
+T: 0 0 : 40 : 43 : 0.09
+T: 0 1 : 40 : 28 : 0.09
+T: 0 1 : 40 : 29 : 0.81
+T: 0 1 : 40 : 40 : 0.01
+T: 0 1 : 40 : 41 : 0.09
+T: 0 2 : 40 : 28 : 0.9
+T: 0 2 : 40 : 40 : 0.1
+T: 0 3 : 40 : 28 : 0.9
+T: 0 3 : 40 : 40 : 0.1
+T: 1 0 : 40 : 4 : 0.09
+T: 1 0 : 40 : 7 : 0.81
+T: 1 0 : 40 : 40 : 0.01
+T: 1 0 : 40 : 43 : 0.09
+T: 1 1 : 40 : 4 : 0.09
+T: 1 1 : 40 : 5 : 0.81
+T: 1 1 : 40 : 40 : 0.01
+T: 1 1 : 40 : 41 : 0.09
+T: 1 2 : 40 : 4 : 0.9
+T: 1 2 : 40 : 40 : 0.1
+T: 1 3 : 40 : 4 : 0.9
+T: 1 3 : 40 : 40 : 0.1
+T: 2 0 : 40 : 40 : 0.1
+T: 2 0 : 40 : 43 : 0.9
+T: 2 1 : 40 : 40 : 0.1
+T: 2 1 : 40 : 41 : 0.9
+T: 2 2 : 40 : 40 : 1.0
+T: 2 3 : 40 : 40 : 1.0
+T: 3 0 : 40 : 40 : 0.1
+T: 3 0 : 40 : 43 : 0.9
+T: 3 1 : 40 : 40 : 0.1
+T: 3 1 : 40 : 41 : 0.9
+T: 3 2 : 40 : 40 : 1.0
+T: 3 3 : 40 : 40 : 1.0
+T: 0 0 : 41 : 28 : 0.81
+T: 0 0 : 41 : 29 : 0.09
+T: 0 0 : 41 : 40 : 0.09
+T: 0 0 : 41 : 41 : 0.01
+T: 0 1 : 41 : 29 : 0.09
+T: 0 1 : 41 : 30 : 0.81
+T: 0 1 : 41 : 41 : 0.01
+T: 0 1 : 41 : 42 : 0.09
+T: 0 2 : 41 : 29 : 0.09
+T: 0 2 : 41 : 33 : 0.81
+T: 0 2 : 41 : 41 : 0.01
+T: 0 2 : 41 : 45 : 0.09
+T: 0 3 : 41 : 29 : 0.9
+T: 0 3 : 41 : 41 : 0.1
+T: 1 0 : 41 : 4 : 0.81
+T: 1 0 : 41 : 5 : 0.09
+T: 1 0 : 41 : 40 : 0.09
+T: 1 0 : 41 : 41 : 0.01
+T: 1 1 : 41 : 5 : 0.09
+T: 1 1 : 41 : 6 : 0.81
+T: 1 1 : 41 : 41 : 0.01
+T: 1 1 : 41 : 42 : 0.09
+T: 1 2 : 41 : 5 : 0.09
+T: 1 2 : 41 : 9 : 0.81
+T: 1 2 : 41 : 41 : 0.01
+T: 1 2 : 41 : 45 : 0.09
+T: 1 3 : 41 : 5 : 0.9
+T: 1 3 : 41 : 41 : 0.1
+T: 2 0 : 41 : 40 : 0.9
+T: 2 0 : 41 : 41 : 0.1
+T: 2 1 : 41 : 41 : 0.1
+T: 2 1 : 41 : 42 : 0.9
+T: 2 2 : 41 : 41 : 0.1
+T: 2 2 : 41 : 45 : 0.9
+T: 2 3 : 41 : 41 : 1.0
+T: 3 0 : 41 : 40 : 0.9
+T: 3 0 : 41 : 41 : 0.1
+T: 3 1 : 41 : 41 : 0.1
+T: 3 1 : 41 : 42 : 0.9
+T: 3 2 : 41 : 41 : 0.1
+T: 3 2 : 41 : 45 : 0.9
+T: 3 3 : 41 : 41 : 1.0
+T: 0 0 : 42 : 29 : 0.81
+T: 0 0 : 42 : 30 : 0.09
+T: 0 0 : 42 : 41 : 0.09
+T: 0 0 : 42 : 42 : 0.01
+T: 0 1 : 42 : 30 : 0.09
+T: 0 1 : 42 : 31 : 0.81
+T: 0 1 : 42 : 42 : 0.01
+T: 0 1 : 42 : 43 : 0.09
+T: 0 2 : 42 : 30 : 0.9
+T: 0 2 : 42 : 42 : 0.1
+T: 0 3 : 42 : 30 : 0.9
+T: 0 3 : 42 : 42 : 0.1
+T: 1 0 : 42 : 5 : 0.81
+T: 1 0 : 42 : 6 : 0.09
+T: 1 0 : 42 : 41 : 0.09
+T: 1 0 : 42 : 42 : 0.01
+T: 1 1 : 42 : 6 : 0.09
+T: 1 1 : 42 : 7 : 0.81
+T: 1 1 : 42 : 42 : 0.01
+T: 1 1 : 42 : 43 : 0.09
+T: 1 2 : 42 : 6 : 0.9
+T: 1 2 : 42 : 42 : 0.1
+T: 1 3 : 42 : 6 : 0.9
+T: 1 3 : 42 : 42 : 0.1
+T: 2 0 : 42 : 41 : 0.9
+T: 2 0 : 42 : 42 : 0.1
+T: 2 1 : 42 : 42 : 0.1
+T: 2 1 : 42 : 43 : 0.9
+T: 2 2 : 42 : 42 : 1.0
+T: 2 3 : 42 : 42 : 1.0
+T: 3 0 : 42 : 41 : 0.9
+T: 3 0 : 42 : 42 : 0.1
+T: 3 1 : 42 : 42 : 0.1
+T: 3 1 : 42 : 43 : 0.9
+T: 3 2 : 42 : 42 : 1.0
+T: 3 3 : 42 : 42 : 1.0
+T: 0 0 : 43 : 30 : 0.81
+T: 0 0 : 43 : 31 : 0.09
+T: 0 0 : 43 : 42 : 0.09
+T: 0 0 : 43 : 43 : 0.01
+T: 0 1 : 43 : 28 : 0.81
+T: 0 1 : 43 : 31 : 0.09
+T: 0 1 : 43 : 40 : 0.09
+T: 0 1 : 43 : 43 : 0.01
+T: 0 2 : 43 : 31 : 0.9
+T: 0 2 : 43 : 43 : 0.1
+T: 0 3 : 43 : 31 : 0.9
+T: 0 3 : 43 : 43 : 0.1
+T: 1 0 : 43 : 6 : 0.81
+T: 1 0 : 43 : 7 : 0.09
+T: 1 0 : 43 : 42 : 0.09
+T: 1 0 : 43 : 43 : 0.01
+T: 1 1 : 43 : 4 : 0.81
+T: 1 1 : 43 : 7 : 0.09
+T: 1 1 : 43 : 40 : 0.09
+T: 1 1 : 43 : 43 : 0.01
+T: 1 2 : 43 : 7 : 0.9
+T: 1 2 : 43 : 43 : 0.1
+T: 1 3 : 43 : 7 : 0.9
+T: 1 3 : 43 : 43 : 0.1
+T: 2 0 : 43 : 42 : 0.9
+T: 2 0 : 43 : 43 : 0.1
+T: 2 1 : 43 : 40 : 0.9
+T: 2 1 : 43 : 43 : 0.1
+T: 2 2 : 43 : 43 : 1.0
+T: 2 3 : 43 : 43 : 1.0
+T: 3 0 : 43 : 42 : 0.9
+T: 3 0 : 43 : 43 : 0.1
+T: 3 1 : 43 : 40 : 0.9
+T: 3 1 : 43 : 43 : 0.1
+T: 3 2 : 43 : 43 : 1.0
+T: 3 3 : 43 : 43 : 1.0
+T: 0 0 : 44 : 32 : 0.09
+T: 0 0 : 44 : 35 : 0.81
+T: 0 0 : 44 : 44 : 0.01
+T: 0 0 : 44 : 47 : 0.09
+T: 0 1 : 44 : 32 : 0.09
+T: 0 1 : 44 : 33 : 0.81
+T: 0 1 : 44 : 44 : 0.01
+T: 0 1 : 44 : 45 : 0.09
+T: 0 2 : 44 : 32 : 0.9
+T: 0 2 : 44 : 44 : 0.1
+T: 0 3 : 44 : 32 : 0.9
+T: 0 3 : 44 : 44 : 0.1
+T: 1 0 : 44 : 8 : 0.09
+T: 1 0 : 44 : 11 : 0.81
+T: 1 0 : 44 : 44 : 0.01
+T: 1 0 : 44 : 47 : 0.09
+T: 1 1 : 44 : 8 : 0.09
+T: 1 1 : 44 : 9 : 0.81
+T: 1 1 : 44 : 44 : 0.01
+T: 1 1 : 44 : 45 : 0.09
+T: 1 2 : 44 : 8 : 0.9
+T: 1 2 : 44 : 44 : 0.1
+T: 1 3 : 44 : 8 : 0.9
+T: 1 3 : 44 : 44 : 0.1
+T: 2 0 : 44 : 44 : 0.1
+T: 2 0 : 44 : 47 : 0.9
+T: 2 1 : 44 : 44 : 0.1
+T: 2 1 : 44 : 45 : 0.9
+T: 2 2 : 44 : 44 : 1.0
+T: 2 3 : 44 : 44 : 1.0
+T: 3 0 : 44 : 44 : 0.1
+T: 3 0 : 44 : 47 : 0.9
+T: 3 1 : 44 : 44 : 0.1
+T: 3 1 : 44 : 45 : 0.9
+T: 3 2 : 44 : 44 : 1.0
+T: 3 3 : 44 : 44 : 1.0
+T: 0 0 : 45 : 32 : 0.81
+T: 0 0 : 45 : 33 : 0.09
+T: 0 0 : 45 : 44 : 0.09
+T: 0 0 : 45 : 45 : 0.01
+T: 0 1 : 45 : 33 : 0.09
+T: 0 1 : 45 : 34 : 0.81
+T: 0 1 : 45 : 45 : 0.01
+T: 0 1 : 45 : 46 : 0.09
+T: 0 2 : 45 : 33 : 0.09
+T: 0 2 : 45 : 37 : 0.81
+T: 0 2 : 45 : 45 : 0.01
+T: 0 2 : 45 : 49 : 0.09
+T: 0 3 : 45 : 33 : 0.9
+T: 0 3 : 45 : 45 : 0.1
+T: 1 0 : 45 : 8 : 0.81
+T: 1 0 : 45 : 9 : 0.09
+T: 1 0 : 45 : 44 : 0.09
+T: 1 0 : 45 : 45 : 0.01
+T: 1 1 : 45 : 9 : 0.09
+T: 1 1 : 45 : 10 : 0.81
+T: 1 1 : 45 : 45 : 0.01
+T: 1 1 : 45 : 46 : 0.09
+T: 1 2 : 45 : 9 : 0.09
+T: 1 2 : 45 : 13 : 0.81
+T: 1 2 : 45 : 45 : 0.01
+T: 1 2 : 45 : 49 : 0.09
+T: 1 3 : 45 : 9 : 0.9
+T: 1 3 : 45 : 45 : 0.1
+T: 2 0 : 45 : 44 : 0.9
+T: 2 0 : 45 : 45 : 0.1
+T: 2 1 : 45 : 45 : 0.1
+T: 2 1 : 45 : 46 : 0.9
+T: 2 2 : 45 : 45 : 0.1
+T: 2 2 : 45 : 49 : 0.9
+T: 2 3 : 45 : 45 : 1.0
+T: 3 0 : 45 : 44 : 0.9
+T: 3 0 : 45 : 45 : 0.1
+T: 3 1 : 45 : 45 : 0.1
+T: 3 1 : 45 : 46 : 0.9
+T: 3 2 : 45 : 45 : 0.1
+T: 3 2 : 45 : 49 : 0.9
+T: 3 3 : 45 : 45 : 1.0
+T: 0 0 : 46 : 33 : 0.81
+T: 0 0 : 46 : 34 : 0.09
+T: 0 0 : 46 : 45 : 0.09
+T: 0 0 : 46 : 46 : 0.01
+T: 0 1 : 46 : 34 : 0.09
+T: 0 1 : 46 : 35 : 0.81
+T: 0 1 : 46 : 46 : 0.01
+T: 0 1 : 46 : 47 : 0.09
+T: 0 2 : 46 : 34 : 0.9
+T: 0 2 : 46 : 46 : 0.1
+T: 0 3 : 46 : 34 : 0.9
+T: 0 3 : 46 : 46 : 0.1
+T: 1 0 : 46 : 9 : 0.81
+T: 1 0 : 46 : 10 : 0.09
+T: 1 0 : 46 : 45 : 0.09
+T: 1 0 : 46 : 46 : 0.01
+T: 1 1 : 46 : 10 : 0.09
+T: 1 1 : 46 : 11 : 0.81
+T: 1 1 : 46 : 46 : 0.01
+T: 1 1 : 46 : 47 : 0.09
+T: 1 2 : 46 : 10 : 0.9
+T: 1 2 : 46 : 46 : 0.1
+T: 1 3 : 46 : 10 : 0.9
+T: 1 3 : 46 : 46 : 0.1
+T: 2 0 : 46 : 45 : 0.9
+T: 2 0 : 46 : 46 : 0.1
+T: 2 1 : 46 : 46 : 0.1
+T: 2 1 : 46 : 47 : 0.9
+T: 2 2 : 46 : 46 : 1.0
+T: 2 3 : 46 : 46 : 1.0
+T: 3 0 : 46 : 45 : 0.9
+T: 3 0 : 46 : 46 : 0.1
+T: 3 1 : 46 : 46 : 0.1
+T: 3 1 : 46 : 47 : 0.9
+T: 3 2 : 46 : 46 : 1.0
+T: 3 3 : 46 : 46 : 1.0
+T: 0 0 : 47 : 34 : 0.81
+T: 0 0 : 47 : 35 : 0.09
+T: 0 0 : 47 : 46 : 0.09
+T: 0 0 : 47 : 47 : 0.01
+T: 0 1 : 47 : 32 : 0.81
+T: 0 1 : 47 : 35 : 0.09
+T: 0 1 : 47 : 44 : 0.09
+T: 0 1 : 47 : 47 : 0.01
+T: 0 2 : 47 : 31 : 0.81
+T: 0 2 : 47 : 35 : 0.09
+T: 0 2 : 47 : 43 : 0.09
+T: 0 2 : 47 : 47 : 0.01
+T: 0 3 : 47 : 35 : 0.9
+T: 0 3 : 47 : 47 : 0.1
+T: 1 0 : 47 : 10 : 0.81
+T: 1 0 : 47 : 11 : 0.09
+T: 1 0 : 47 : 46 : 0.09
+T: 1 0 : 47 : 47 : 0.01
+T: 1 1 : 47 : 8 : 0.81
+T: 1 1 : 47 : 11 : 0.09
+T: 1 1 : 47 : 44 : 0.09
+T: 1 1 : 47 : 47 : 0.01
+T: 1 2 : 47 : 7 : 0.81
+T: 1 2 : 47 : 11 : 0.09
+T: 1 2 : 47 : 43 : 0.09
+T: 1 2 : 47 : 47 : 0.01
+T: 1 3 : 47 : 11 : 0.9
+T: 1 3 : 47 : 47 : 0.1
+T: 2 0 : 47 : 46 : 0.9
+T: 2 0 : 47 : 47 : 0.1
+T: 2 1 : 47 : 44 : 0.9
+T: 2 1 : 47 : 47 : 0.1
+T: 2 2 : 47 : 43 : 0.9
+T: 2 2 : 47 : 47 : 0.1
+T: 2 3 : 47 : 47 : 1.0
+T: 3 0 : 47 : 46 : 0.9
+T: 3 0 : 47 : 47 : 0.1
+T: 3 1 : 47 : 44 : 0.9
+T: 3 1 : 47 : 47 : 0.1
+T: 3 2 : 47 : 43 : 0.9
+T: 3 2 : 47 : 47 : 0.1
+T: 3 3 : 47 : 47 : 1.0
+T: 0 0 : 48 : 36 : 0.09
+T: 0 0 : 48 : 39 : 0.81
+T: 0 0 : 48 : 48 : 0.01
+T: 0 0 : 48 : 51 : 0.09
+T: 0 1 : 48 : 36 : 0.09
+T: 0 1 : 48 : 37 : 0.81
+T: 0 1 : 48 : 48 : 0.01
+T: 0 1 : 48 : 49 : 0.09
+T: 0 2 : 48 : 1 : 0.9
+T: 0 2 : 48 : 36 : 0.09
+T: 0 2 : 48 : 48 : 0.01
+T: 0 3 : 48 : 36 : 0.9
+T: 0 3 : 48 : 48 : 0.1
+T: 1 0 : 48 : 12 : 0.09
+T: 1 0 : 48 : 15 : 0.81
+T: 1 0 : 48 : 48 : 0.01
+T: 1 0 : 48 : 51 : 0.09
+T: 1 1 : 48 : 12 : 0.09
+T: 1 1 : 48 : 13 : 0.81
+T: 1 1 : 48 : 48 : 0.01
+T: 1 1 : 48 : 49 : 0.09
+T: 1 2 : 48 : 1 : 0.9
+T: 1 2 : 48 : 12 : 0.09
+T: 1 2 : 48 : 48 : 0.01
+T: 1 3 : 48 : 12 : 0.9
+T: 1 3 : 48 : 48 : 0.1
+T: 2 0 : 48 : 48 : 0.1
+T: 2 0 : 48 : 51 : 0.9
+T: 2 1 : 48 : 48 : 0.1
+T: 2 1 : 48 : 49 : 0.9
+T: 2 2 : 48 : 1 : 0.9
+T: 2 2 : 48 : 48 : 0.1
+T: 2 3 : 48 : 48 : 1.0
+T: 3 0 : 48 : 48 : 0.1
+T: 3 0 : 48 : 51 : 0.9
+T: 3 1 : 48 : 48 : 0.1
+T: 3 1 : 48 : 49 : 0.9
+T: 3 2 : 48 : 1 : 0.9
+T: 3 2 : 48 : 48 : 0.1
+T: 3 3 : 48 : 48 : 1.0
+T: 0 0 : 49 : 36 : 0.81
+T: 0 0 : 49 : 37 : 0.09
+T: 0 0 : 49 : 48 : 0.09
+T: 0 0 : 49 : 49 : 0.01
+T: 0 1 : 49 : 37 : 0.09
+T: 0 1 : 49 : 38 : 0.81
+T: 0 1 : 49 : 49 : 0.01
+T: 0 1 : 49 : 50 : 0.09
+T: 0 2 : 49 : 37 : 0.9
+T: 0 2 : 49 : 49 : 0.1
+T: 0 3 : 49 : 37 : 0.9
+T: 0 3 : 49 : 49 : 0.1
+T: 1 0 : 49 : 12 : 0.81
+T: 1 0 : 49 : 13 : 0.09
+T: 1 0 : 49 : 48 : 0.09
+T: 1 0 : 49 : 49 : 0.01
+T: 1 1 : 49 : 13 : 0.09
+T: 1 1 : 49 : 14 : 0.81
+T: 1 1 : 49 : 49 : 0.01
+T: 1 1 : 49 : 50 : 0.09
+T: 1 2 : 49 : 13 : 0.9
+T: 1 2 : 49 : 49 : 0.1
+T: 1 3 : 49 : 13 : 0.9
+T: 1 3 : 49 : 49 : 0.1
+T: 2 0 : 49 : 48 : 0.9
+T: 2 0 : 49 : 49 : 0.1
+T: 2 1 : 49 : 49 : 0.1
+T: 2 1 : 49 : 50 : 0.9
+T: 2 2 : 49 : 49 : 1.0
+T: 2 3 : 49 : 49 : 1.0
+T: 3 0 : 49 : 48 : 0.9
+T: 3 0 : 49 : 49 : 0.1
+T: 3 1 : 49 : 49 : 0.1
+T: 3 1 : 49 : 50 : 0.9
+T: 3 2 : 49 : 49 : 1.0
+T: 3 3 : 49 : 49 : 1.0
+T: 0 0 : 50 : 37 : 0.81
+T: 0 0 : 50 : 38 : 0.09
+T: 0 0 : 50 : 49 : 0.09
+T: 0 0 : 50 : 50 : 0.01
+T: 0 1 : 50 : 38 : 0.09
+T: 0 1 : 50 : 39 : 0.81
+T: 0 1 : 50 : 50 : 0.01
+T: 0 1 : 50 : 51 : 0.09
+T: 0 2 : 50 : 38 : 0.9
+T: 0 2 : 50 : 50 : 0.1
+T: 0 3 : 50 : 38 : 0.9
+T: 0 3 : 50 : 50 : 0.1
+T: 1 0 : 50 : 13 : 0.81
+T: 1 0 : 50 : 14 : 0.09
+T: 1 0 : 50 : 49 : 0.09
+T: 1 0 : 50 : 50 : 0.01
+T: 1 1 : 50 : 14 : 0.09
+T: 1 1 : 50 : 15 : 0.81
+T: 1 1 : 50 : 50 : 0.01
+T: 1 1 : 50 : 51 : 0.09
+T: 1 2 : 50 : 14 : 0.9
+T: 1 2 : 50 : 50 : 0.1
+T: 1 3 : 50 : 14 : 0.9
+T: 1 3 : 50 : 50 : 0.1
+T: 2 0 : 50 : 49 : 0.9
+T: 2 0 : 50 : 50 : 0.1
+T: 2 1 : 50 : 50 : 0.1
+T: 2 1 : 50 : 51 : 0.9
+T: 2 2 : 50 : 50 : 1.0
+T: 2 3 : 50 : 50 : 1.0
+T: 3 0 : 50 : 49 : 0.9
+T: 3 0 : 50 : 50 : 0.1
+T: 3 1 : 50 : 50 : 0.1
+T: 3 1 : 50 : 51 : 0.9
+T: 3 2 : 50 : 50 : 1.0
+T: 3 3 : 50 : 50 : 1.0
+T: 0 0 : 51 : 38 : 0.81
+T: 0 0 : 51 : 39 : 0.09
+T: 0 0 : 51 : 50 : 0.09
+T: 0 0 : 51 : 51 : 0.01
+T: 0 1 : 51 : 36 : 0.81
+T: 0 1 : 51 : 39 : 0.09
+T: 0 1 : 51 : 48 : 0.09
+T: 0 1 : 51 : 51 : 0.01
+T: 0 2 : 51 : 35 : 0.81
+T: 0 2 : 51 : 39 : 0.09
+T: 0 2 : 51 : 47 : 0.09
+T: 0 2 : 51 : 51 : 0.01
+T: 0 3 : 51 : 39 : 0.9
+T: 0 3 : 51 : 51 : 0.1
+T: 1 0 : 51 : 14 : 0.81
+T: 1 0 : 51 : 15 : 0.09
+T: 1 0 : 51 : 50 : 0.09
+T: 1 0 : 51 : 51 : 0.01
+T: 1 1 : 51 : 12 : 0.81
+T: 1 1 : 51 : 15 : 0.09
+T: 1 1 : 51 : 48 : 0.09
+T: 1 1 : 51 : 51 : 0.01
+T: 1 2 : 51 : 11 : 0.81
+T: 1 2 : 51 : 15 : 0.09
+T: 1 2 : 51 : 47 : 0.09
+T: 1 2 : 51 : 51 : 0.01
+T: 1 3 : 51 : 15 : 0.9
+T: 1 3 : 51 : 51 : 0.1
+T: 2 0 : 51 : 50 : 0.9
+T: 2 0 : 51 : 51 : 0.1
+T: 2 1 : 51 : 48 : 0.9
+T: 2 1 : 51 : 51 : 0.1
+T: 2 2 : 51 : 47 : 0.9
+T: 2 2 : 51 : 51 : 0.1
+T: 2 3 : 51 : 51 : 1.0
+T: 3 0 : 51 : 50 : 0.9
+T: 3 0 : 51 : 51 : 0.1
+T: 3 1 : 51 : 48 : 0.9
+T: 3 1 : 51 : 51 : 0.1
+T: 3 2 : 51 : 47 : 0.9
+T: 3 2 : 51 : 51 : 0.1
+T: 3 3 : 51 : 51 : 1.0
+T: 0 0 : 52 : 52 : 0.01
+T: 0 0 : 52 : 55 : 0.09
+T: 0 0 : 52 : 76 : 0.09
+T: 0 0 : 52 : 79 : 0.81
+T: 0 1 : 52 : 52 : 0.01
+T: 0 1 : 52 : 53 : 0.09
+T: 0 1 : 52 : 76 : 0.09
+T: 0 1 : 52 : 77 : 0.81
+T: 0 2 : 52 : 52 : 0.1
+T: 0 2 : 52 : 76 : 0.9
+T: 0 3 : 52 : 52 : 0.1
+T: 0 3 : 52 : 76 : 0.9
+T: 1 0 : 52 : 52 : 0.01
+T: 1 0 : 52 : 55 : 0.09
+T: 1 0 : 52 : 60 : 0.09
+T: 1 0 : 52 : 63 : 0.81
+T: 1 1 : 52 : 52 : 0.01
+T: 1 1 : 52 : 53 : 0.09
+T: 1 1 : 52 : 60 : 0.09
+T: 1 1 : 52 : 61 : 0.81
+T: 1 2 : 52 : 52 : 0.1
+T: 1 2 : 52 : 60 : 0.9
+T: 1 3 : 52 : 52 : 0.1
+T: 1 3 : 52 : 60 : 0.9
+T: 2 0 : 52 : 52 : 0.1
+T: 2 0 : 52 : 55 : 0.9
+T: 2 1 : 52 : 52 : 0.1
+T: 2 1 : 52 : 53 : 0.9
+T: 2 2 : 52 : 3 : 0.81
+T: 2 2 : 52 : 52 : 0.19
+T: 2 3 : 52 : 52 : 1.0
+T: 3 0 : 52 : 52 : 0.1
+T: 3 0 : 52 : 55 : 0.9
+T: 3 1 : 52 : 52 : 0.1
+T: 3 1 : 52 : 53 : 0.9
+T: 3 2 : 52 : 52 : 1.0
+T: 3 3 : 52 : 52 : 1.0
+T: 0 0 : 53 : 52 : 0.09
+T: 0 0 : 53 : 53 : 0.01
+T: 0 0 : 53 : 76 : 0.81
+T: 0 0 : 53 : 77 : 0.09
+T: 0 1 : 53 : 53 : 0.01
+T: 0 1 : 53 : 54 : 0.09
+T: 0 1 : 53 : 77 : 0.09
+T: 0 1 : 53 : 78 : 0.81
+T: 0 2 : 53 : 53 : 0.01
+T: 0 2 : 53 : 57 : 0.09
+T: 0 2 : 53 : 77 : 0.09
+T: 0 2 : 53 : 81 : 0.81
+T: 0 3 : 53 : 53 : 0.1
+T: 0 3 : 53 : 77 : 0.9
+T: 1 0 : 53 : 52 : 0.09
+T: 1 0 : 53 : 53 : 0.01
+T: 1 0 : 53 : 60 : 0.81
+T: 1 0 : 53 : 61 : 0.09
+T: 1 1 : 53 : 53 : 0.01
+T: 1 1 : 53 : 54 : 0.09
+T: 1 1 : 53 : 61 : 0.09
+T: 1 1 : 53 : 62 : 0.81
+T: 1 2 : 53 : 53 : 0.01
+T: 1 2 : 53 : 57 : 0.09
+T: 1 2 : 53 : 61 : 0.09
+T: 1 2 : 53 : 65 : 0.81
+T: 1 3 : 53 : 53 : 0.1
+T: 1 3 : 53 : 61 : 0.9
+T: 2 0 : 53 : 52 : 0.9
+T: 2 0 : 53 : 53 : 0.1
+T: 2 1 : 53 : 53 : 0.1
+T: 2 1 : 53 : 54 : 0.9
+T: 2 2 : 53 : 53 : 0.1
+T: 2 2 : 53 : 57 : 0.9
+T: 2 3 : 53 : 53 : 1.0
+T: 3 0 : 53 : 52 : 0.9
+T: 3 0 : 53 : 53 : 0.1
+T: 3 1 : 53 : 53 : 0.1
+T: 3 1 : 53 : 54 : 0.9
+T: 3 2 : 53 : 53 : 0.1
+T: 3 2 : 53 : 57 : 0.9
+T: 3 3 : 53 : 53 : 1.0
+T: 0 0 : 54 : 53 : 0.09
+T: 0 0 : 54 : 54 : 0.01
+T: 0 0 : 54 : 77 : 0.81
+T: 0 0 : 54 : 78 : 0.09
+T: 0 1 : 54 : 54 : 0.01
+T: 0 1 : 54 : 55 : 0.09
+T: 0 1 : 54 : 78 : 0.09
+T: 0 1 : 54 : 79 : 0.81
+T: 0 2 : 54 : 54 : 0.1
+T: 0 2 : 54 : 78 : 0.9
+T: 0 3 : 54 : 54 : 0.1
+T: 0 3 : 54 : 78 : 0.9
+T: 1 0 : 54 : 53 : 0.09
+T: 1 0 : 54 : 54 : 0.01
+T: 1 0 : 54 : 61 : 0.81
+T: 1 0 : 54 : 62 : 0.09
+T: 1 1 : 54 : 54 : 0.01
+T: 1 1 : 54 : 55 : 0.09
+T: 1 1 : 54 : 62 : 0.09
+T: 1 1 : 54 : 63 : 0.81
+T: 1 2 : 54 : 54 : 0.1
+T: 1 2 : 54 : 62 : 0.9
+T: 1 3 : 54 : 54 : 0.1
+T: 1 3 : 54 : 62 : 0.9
+T: 2 0 : 54 : 53 : 0.9
+T: 2 0 : 54 : 54 : 0.1
+T: 2 1 : 54 : 54 : 0.1
+T: 2 1 : 54 : 55 : 0.9
+T: 2 2 : 54 : 54 : 1.0
+T: 2 3 : 54 : 54 : 1.0
+T: 3 0 : 54 : 53 : 0.9
+T: 3 0 : 54 : 54 : 0.1
+T: 3 1 : 54 : 54 : 0.1
+T: 3 1 : 54 : 55 : 0.9
+T: 3 2 : 54 : 54 : 1.0
+T: 3 3 : 54 : 54 : 1.0
+T: 0 0 : 55 : 54 : 0.09
+T: 0 0 : 55 : 55 : 0.01
+T: 0 0 : 55 : 78 : 0.81
+T: 0 0 : 55 : 79 : 0.09
+T: 0 1 : 55 : 52 : 0.09
+T: 0 1 : 55 : 55 : 0.01
+T: 0 1 : 55 : 76 : 0.81
+T: 0 1 : 55 : 79 : 0.09
+T: 0 2 : 55 : 55 : 0.1
+T: 0 2 : 55 : 79 : 0.9
+T: 0 3 : 55 : 55 : 0.1
+T: 0 3 : 55 : 79 : 0.9
+T: 1 0 : 55 : 54 : 0.09
+T: 1 0 : 55 : 55 : 0.01
+T: 1 0 : 55 : 62 : 0.81
+T: 1 0 : 55 : 63 : 0.09
+T: 1 1 : 55 : 52 : 0.09
+T: 1 1 : 55 : 55 : 0.01
+T: 1 1 : 55 : 60 : 0.81
+T: 1 1 : 55 : 63 : 0.09
+T: 1 2 : 55 : 55 : 0.1
+T: 1 2 : 55 : 63 : 0.9
+T: 1 3 : 55 : 55 : 0.1
+T: 1 3 : 55 : 63 : 0.9
+T: 2 0 : 55 : 54 : 0.9
+T: 2 0 : 55 : 55 : 0.1
+T: 2 1 : 55 : 52 : 0.9
+T: 2 1 : 55 : 55 : 0.1
+T: 2 2 : 55 : 55 : 1.0
+T: 2 3 : 55 : 55 : 1.0
+T: 3 0 : 55 : 54 : 0.9
+T: 3 0 : 55 : 55 : 0.1
+T: 3 1 : 55 : 52 : 0.9
+T: 3 1 : 55 : 55 : 0.1
+T: 3 2 : 55 : 55 : 1.0
+T: 3 3 : 55 : 55 : 1.0
+T: 0 0 : 56 : 56 : 0.01
+T: 0 0 : 56 : 59 : 0.09
+T: 0 0 : 56 : 80 : 0.09
+T: 0 0 : 56 : 83 : 0.81
+T: 0 1 : 56 : 56 : 0.01
+T: 0 1 : 56 : 57 : 0.09
+T: 0 1 : 56 : 80 : 0.09
+T: 0 1 : 56 : 81 : 0.81
+T: 0 2 : 56 : 1 : 0.9
+T: 0 2 : 56 : 56 : 0.01
+T: 0 2 : 56 : 80 : 0.09
+T: 0 3 : 56 : 56 : 0.1
+T: 0 3 : 56 : 80 : 0.9
+T: 1 0 : 56 : 56 : 0.01
+T: 1 0 : 56 : 59 : 0.09
+T: 1 0 : 56 : 64 : 0.09
+T: 1 0 : 56 : 67 : 0.81
+T: 1 1 : 56 : 56 : 0.01
+T: 1 1 : 56 : 57 : 0.09
+T: 1 1 : 56 : 64 : 0.09
+T: 1 1 : 56 : 65 : 0.81
+T: 1 2 : 56 : 1 : 0.9
+T: 1 2 : 56 : 56 : 0.01
+T: 1 2 : 56 : 64 : 0.09
+T: 1 3 : 56 : 56 : 0.1
+T: 1 3 : 56 : 64 : 0.9
+T: 2 0 : 56 : 56 : 0.1
+T: 2 0 : 56 : 59 : 0.9
+T: 2 1 : 56 : 56 : 0.1
+T: 2 1 : 56 : 57 : 0.9
+T: 2 2 : 56 : 1 : 0.9
+T: 2 2 : 56 : 56 : 0.1
+T: 2 3 : 56 : 56 : 1.0
+T: 3 0 : 56 : 56 : 0.1
+T: 3 0 : 56 : 59 : 0.9
+T: 3 1 : 56 : 56 : 0.1
+T: 3 1 : 56 : 57 : 0.9
+T: 3 2 : 56 : 1 : 0.9
+T: 3 2 : 56 : 56 : 0.1
+T: 3 3 : 56 : 56 : 1.0
+T: 0 0 : 57 : 56 : 0.09
+T: 0 0 : 57 : 57 : 0.01
+T: 0 0 : 57 : 80 : 0.81
+T: 0 0 : 57 : 81 : 0.09
+T: 0 1 : 57 : 57 : 0.01
+T: 0 1 : 57 : 58 : 0.09
+T: 0 1 : 57 : 81 : 0.09
+T: 0 1 : 57 : 82 : 0.81
+T: 0 2 : 57 : 57 : 0.1
+T: 0 2 : 57 : 81 : 0.9
+T: 0 3 : 57 : 57 : 0.1
+T: 0 3 : 57 : 81 : 0.9
+T: 1 0 : 57 : 56 : 0.09
+T: 1 0 : 57 : 57 : 0.01
+T: 1 0 : 57 : 64 : 0.81
+T: 1 0 : 57 : 65 : 0.09
+T: 1 1 : 57 : 57 : 0.01
+T: 1 1 : 57 : 58 : 0.09
+T: 1 1 : 57 : 65 : 0.09
+T: 1 1 : 57 : 66 : 0.81
+T: 1 2 : 57 : 57 : 0.1
+T: 1 2 : 57 : 65 : 0.9
+T: 1 3 : 57 : 57 : 0.1
+T: 1 3 : 57 : 65 : 0.9
+T: 2 0 : 57 : 56 : 0.9
+T: 2 0 : 57 : 57 : 0.1
+T: 2 1 : 57 : 57 : 0.1
+T: 2 1 : 57 : 58 : 0.9
+T: 2 2 : 57 : 57 : 1.0
+T: 2 3 : 57 : 57 : 1.0
+T: 3 0 : 57 : 56 : 0.9
+T: 3 0 : 57 : 57 : 0.1
+T: 3 1 : 57 : 57 : 0.1
+T: 3 1 : 57 : 58 : 0.9
+T: 3 2 : 57 : 57 : 1.0
+T: 3 3 : 57 : 57 : 1.0
+T: 0 0 : 58 : 57 : 0.09
+T: 0 0 : 58 : 58 : 0.01
+T: 0 0 : 58 : 81 : 0.81
+T: 0 0 : 58 : 82 : 0.09
+T: 0 1 : 58 : 58 : 0.01
+T: 0 1 : 58 : 59 : 0.09
+T: 0 1 : 58 : 82 : 0.09
+T: 0 1 : 58 : 83 : 0.81
+T: 0 2 : 58 : 58 : 0.1
+T: 0 2 : 58 : 82 : 0.9
+T: 0 3 : 58 : 58 : 0.1
+T: 0 3 : 58 : 82 : 0.9
+T: 1 0 : 58 : 57 : 0.09
+T: 1 0 : 58 : 58 : 0.01
+T: 1 0 : 58 : 65 : 0.81
+T: 1 0 : 58 : 66 : 0.09
+T: 1 1 : 58 : 58 : 0.01
+T: 1 1 : 58 : 59 : 0.09
+T: 1 1 : 58 : 66 : 0.09
+T: 1 1 : 58 : 67 : 0.81
+T: 1 2 : 58 : 58 : 0.1
+T: 1 2 : 58 : 66 : 0.9
+T: 1 3 : 58 : 58 : 0.1
+T: 1 3 : 58 : 66 : 0.9
+T: 2 0 : 58 : 57 : 0.9
+T: 2 0 : 58 : 58 : 0.1
+T: 2 1 : 58 : 58 : 0.1
+T: 2 1 : 58 : 59 : 0.9
+T: 2 2 : 58 : 58 : 1.0
+T: 2 3 : 58 : 58 : 1.0
+T: 3 0 : 58 : 57 : 0.9
+T: 3 0 : 58 : 58 : 0.1
+T: 3 1 : 58 : 58 : 0.1
+T: 3 1 : 58 : 59 : 0.9
+T: 3 2 : 58 : 58 : 1.0
+T: 3 3 : 58 : 58 : 1.0
+T: 0 0 : 59 : 58 : 0.09
+T: 0 0 : 59 : 59 : 0.01
+T: 0 0 : 59 : 82 : 0.81
+T: 0 0 : 59 : 83 : 0.09
+T: 0 1 : 59 : 56 : 0.09
+T: 0 1 : 59 : 59 : 0.01
+T: 0 1 : 59 : 80 : 0.81
+T: 0 1 : 59 : 83 : 0.09
+T: 0 2 : 59 : 55 : 0.09
+T: 0 2 : 59 : 59 : 0.01
+T: 0 2 : 59 : 79 : 0.81
+T: 0 2 : 59 : 83 : 0.09
+T: 0 3 : 59 : 59 : 0.1
+T: 0 3 : 59 : 83 : 0.9
+T: 1 0 : 59 : 58 : 0.09
+T: 1 0 : 59 : 59 : 0.01
+T: 1 0 : 59 : 66 : 0.81
+T: 1 0 : 59 : 67 : 0.09
+T: 1 1 : 59 : 56 : 0.09
+T: 1 1 : 59 : 59 : 0.01
+T: 1 1 : 59 : 64 : 0.81
+T: 1 1 : 59 : 67 : 0.09
+T: 1 2 : 59 : 55 : 0.09
+T: 1 2 : 59 : 59 : 0.01
+T: 1 2 : 59 : 63 : 0.81
+T: 1 2 : 59 : 67 : 0.09
+T: 1 3 : 59 : 59 : 0.1
+T: 1 3 : 59 : 67 : 0.9
+T: 2 0 : 59 : 58 : 0.9
+T: 2 0 : 59 : 59 : 0.1
+T: 2 1 : 59 : 56 : 0.9
+T: 2 1 : 59 : 59 : 0.1
+T: 2 2 : 59 : 55 : 0.9
+T: 2 2 : 59 : 59 : 0.1
+T: 2 3 : 59 : 59 : 1.0
+T: 3 0 : 59 : 58 : 0.9
+T: 3 0 : 59 : 59 : 0.1
+T: 3 1 : 59 : 56 : 0.9
+T: 3 1 : 59 : 59 : 0.1
+T: 3 2 : 59 : 55 : 0.9
+T: 3 2 : 59 : 59 : 0.1
+T: 3 3 : 59 : 59 : 1.0
+T: 0 0 : 60 : 52 : 0.09
+T: 0 0 : 60 : 55 : 0.81
+T: 0 0 : 60 : 60 : 0.01
+T: 0 0 : 60 : 63 : 0.09
+T: 0 1 : 60 : 52 : 0.09
+T: 0 1 : 60 : 53 : 0.81
+T: 0 1 : 60 : 60 : 0.01
+T: 0 1 : 60 : 61 : 0.09
+T: 0 2 : 60 : 52 : 0.9
+T: 0 2 : 60 : 60 : 0.1
+T: 0 3 : 60 : 52 : 0.9
+T: 0 3 : 60 : 60 : 0.1
+T: 1 0 : 60 : 60 : 0.01
+T: 1 0 : 60 : 63 : 0.09
+T: 1 0 : 60 : 68 : 0.09
+T: 1 0 : 60 : 71 : 0.81
+T: 1 1 : 60 : 60 : 0.01
+T: 1 1 : 60 : 61 : 0.09
+T: 1 1 : 60 : 68 : 0.09
+T: 1 1 : 60 : 69 : 0.81
+T: 1 2 : 60 : 60 : 0.1
+T: 1 2 : 60 : 68 : 0.9
+T: 1 3 : 60 : 60 : 0.1
+T: 1 3 : 60 : 68 : 0.9
+T: 2 0 : 60 : 60 : 0.1
+T: 2 0 : 60 : 63 : 0.9
+T: 2 1 : 60 : 60 : 0.1
+T: 2 1 : 60 : 61 : 0.9
+T: 2 2 : 60 : 60 : 1.0
+T: 2 3 : 60 : 60 : 1.0
+T: 3 0 : 60 : 60 : 0.1
+T: 3 0 : 60 : 63 : 0.9
+T: 3 1 : 60 : 60 : 0.1
+T: 3 1 : 60 : 61 : 0.9
+T: 3 2 : 60 : 60 : 1.0
+T: 3 3 : 60 : 60 : 1.0
+T: 0 0 : 61 : 52 : 0.81
+T: 0 0 : 61 : 53 : 0.09
+T: 0 0 : 61 : 60 : 0.09
+T: 0 0 : 61 : 61 : 0.01
+T: 0 1 : 61 : 53 : 0.09
+T: 0 1 : 61 : 54 : 0.81
+T: 0 1 : 61 : 61 : 0.01
+T: 0 1 : 61 : 62 : 0.09
+T: 0 2 : 61 : 53 : 0.09
+T: 0 2 : 61 : 57 : 0.81
+T: 0 2 : 61 : 61 : 0.01
+T: 0 2 : 61 : 65 : 0.09
+T: 0 3 : 61 : 53 : 0.9
+T: 0 3 : 61 : 61 : 0.1
+T: 1 0 : 61 : 60 : 0.09
+T: 1 0 : 61 : 61 : 0.01
+T: 1 0 : 61 : 68 : 0.81
+T: 1 0 : 61 : 69 : 0.09
+T: 1 1 : 61 : 61 : 0.01
+T: 1 1 : 61 : 62 : 0.09
+T: 1 1 : 61 : 69 : 0.09
+T: 1 1 : 61 : 70 : 0.81
+T: 1 2 : 61 : 61 : 0.01
+T: 1 2 : 61 : 65 : 0.09
+T: 1 2 : 61 : 69 : 0.09
+T: 1 2 : 61 : 73 : 0.81
+T: 1 3 : 61 : 61 : 0.1
+T: 1 3 : 61 : 69 : 0.9
+T: 2 0 : 61 : 60 : 0.9
+T: 2 0 : 61 : 61 : 0.1
+T: 2 1 : 61 : 61 : 0.1
+T: 2 1 : 61 : 62 : 0.9
+T: 2 2 : 61 : 61 : 0.1
+T: 2 2 : 61 : 65 : 0.9
+T: 2 3 : 61 : 61 : 1.0
+T: 3 0 : 61 : 60 : 0.9
+T: 3 0 : 61 : 61 : 0.1
+T: 3 1 : 61 : 61 : 0.1
+T: 3 1 : 61 : 62 : 0.9
+T: 3 2 : 61 : 61 : 0.1
+T: 3 2 : 61 : 65 : 0.9
+T: 3 3 : 61 : 61 : 1.0
+T: 0 0 : 62 : 53 : 0.81
+T: 0 0 : 62 : 54 : 0.09
+T: 0 0 : 62 : 61 : 0.09
+T: 0 0 : 62 : 62 : 0.01
+T: 0 1 : 62 : 54 : 0.09
+T: 0 1 : 62 : 55 : 0.81
+T: 0 1 : 62 : 62 : 0.01
+T: 0 1 : 62 : 63 : 0.09
+T: 0 2 : 62 : 54 : 0.9
+T: 0 2 : 62 : 62 : 0.1
+T: 0 3 : 62 : 54 : 0.9
+T: 0 3 : 62 : 62 : 0.1
+T: 1 0 : 62 : 61 : 0.09
+T: 1 0 : 62 : 62 : 0.01
+T: 1 0 : 62 : 69 : 0.81
+T: 1 0 : 62 : 70 : 0.09
+T: 1 1 : 62 : 62 : 0.01
+T: 1 1 : 62 : 63 : 0.09
+T: 1 1 : 62 : 70 : 0.09
+T: 1 1 : 62 : 71 : 0.81
+T: 1 2 : 62 : 62 : 0.1
+T: 1 2 : 62 : 70 : 0.9
+T: 1 3 : 62 : 62 : 0.1
+T: 1 3 : 62 : 70 : 0.9
+T: 2 0 : 62 : 61 : 0.9
+T: 2 0 : 62 : 62 : 0.1
+T: 2 1 : 62 : 62 : 0.1
+T: 2 1 : 62 : 63 : 0.9
+T: 2 2 : 62 : 62 : 1.0
+T: 2 3 : 62 : 62 : 1.0
+T: 3 0 : 62 : 61 : 0.9
+T: 3 0 : 62 : 62 : 0.1
+T: 3 1 : 62 : 62 : 0.1
+T: 3 1 : 62 : 63 : 0.9
+T: 3 2 : 62 : 62 : 1.0
+T: 3 3 : 62 : 62 : 1.0
+T: 0 0 : 63 : 54 : 0.81
+T: 0 0 : 63 : 55 : 0.09
+T: 0 0 : 63 : 62 : 0.09
+T: 0 0 : 63 : 63 : 0.01
+T: 0 1 : 63 : 52 : 0.81
+T: 0 1 : 63 : 55 : 0.09
+T: 0 1 : 63 : 60 : 0.09
+T: 0 1 : 63 : 63 : 0.01
+T: 0 2 : 63 : 55 : 0.9
+T: 0 2 : 63 : 63 : 0.1
+T: 0 3 : 63 : 55 : 0.9
+T: 0 3 : 63 : 63 : 0.1
+T: 1 0 : 63 : 62 : 0.09
+T: 1 0 : 63 : 63 : 0.01
+T: 1 0 : 63 : 70 : 0.81
+T: 1 0 : 63 : 71 : 0.09
+T: 1 1 : 63 : 60 : 0.09
+T: 1 1 : 63 : 63 : 0.01
+T: 1 1 : 63 : 68 : 0.81
+T: 1 1 : 63 : 71 : 0.09
+T: 1 2 : 63 : 63 : 0.1
+T: 1 2 : 63 : 71 : 0.9
+T: 1 3 : 63 : 63 : 0.1
+T: 1 3 : 63 : 71 : 0.9
+T: 2 0 : 63 : 62 : 0.9
+T: 2 0 : 63 : 63 : 0.1
+T: 2 1 : 63 : 60 : 0.9
+T: 2 1 : 63 : 63 : 0.1
+T: 2 2 : 63 : 63 : 1.0
+T: 2 3 : 63 : 63 : 1.0
+T: 3 0 : 63 : 62 : 0.9
+T: 3 0 : 63 : 63 : 0.1
+T: 3 1 : 63 : 60 : 0.9
+T: 3 1 : 63 : 63 : 0.1
+T: 3 2 : 63 : 63 : 1.0
+T: 3 3 : 63 : 63 : 1.0
+T: 0 0 : 64 : 56 : 0.09
+T: 0 0 : 64 : 59 : 0.81
+T: 0 0 : 64 : 64 : 0.01
+T: 0 0 : 64 : 67 : 0.09
+T: 0 1 : 64 : 56 : 0.09
+T: 0 1 : 64 : 57 : 0.81
+T: 0 1 : 64 : 64 : 0.01
+T: 0 1 : 64 : 65 : 0.09
+T: 0 2 : 64 : 1 : 0.9
+T: 0 2 : 64 : 56 : 0.09
+T: 0 2 : 64 : 64 : 0.01
+T: 0 3 : 64 : 56 : 0.9
+T: 0 3 : 64 : 64 : 0.1
+T: 1 0 : 64 : 64 : 0.01
+T: 1 0 : 64 : 67 : 0.09
+T: 1 0 : 64 : 72 : 0.09
+T: 1 0 : 64 : 75 : 0.81
+T: 1 1 : 64 : 64 : 0.01
+T: 1 1 : 64 : 65 : 0.09
+T: 1 1 : 64 : 72 : 0.09
+T: 1 1 : 64 : 73 : 0.81
+T: 1 2 : 64 : 1 : 0.9
+T: 1 2 : 64 : 64 : 0.01
+T: 1 2 : 64 : 72 : 0.09
+T: 1 3 : 64 : 64 : 0.1
+T: 1 3 : 64 : 72 : 0.9
+T: 2 0 : 64 : 64 : 0.01
+T: 2 0 : 64 : 67 : 0.09
+T: 2 0 : 64 : 88 : 0.09
+T: 2 0 : 64 : 91 : 0.81
+T: 2 1 : 64 : 64 : 0.01
+T: 2 1 : 64 : 65 : 0.09
+T: 2 1 : 64 : 88 : 0.09
+T: 2 1 : 64 : 89 : 0.81
+T: 2 2 : 64 : 1 : 0.9
+T: 2 2 : 64 : 64 : 0.01
+T: 2 2 : 64 : 88 : 0.09
+T: 2 3 : 64 : 64 : 0.1
+T: 2 3 : 64 : 88 : 0.9
+T: 3 0 : 64 : 64 : 0.1
+T: 3 0 : 64 : 67 : 0.9
+T: 3 1 : 64 : 64 : 0.1
+T: 3 1 : 64 : 65 : 0.9
+T: 3 2 : 64 : 1 : 0.9
+T: 3 2 : 64 : 64 : 0.1
+T: 3 3 : 64 : 64 : 1.0
+T: 0 0 : 65 : 56 : 0.81
+T: 0 0 : 65 : 57 : 0.09
+T: 0 0 : 65 : 64 : 0.09
+T: 0 0 : 65 : 65 : 0.01
+T: 0 1 : 65 : 57 : 0.09
+T: 0 1 : 65 : 58 : 0.81
+T: 0 1 : 65 : 65 : 0.01
+T: 0 1 : 65 : 66 : 0.09
+T: 0 2 : 65 : 57 : 0.9
+T: 0 2 : 65 : 65 : 0.1
+T: 0 3 : 65 : 57 : 0.9
+T: 0 3 : 65 : 65 : 0.1
+T: 1 0 : 65 : 64 : 0.09
+T: 1 0 : 65 : 65 : 0.01
+T: 1 0 : 65 : 72 : 0.81
+T: 1 0 : 65 : 73 : 0.09
+T: 1 1 : 65 : 65 : 0.01
+T: 1 1 : 65 : 66 : 0.09
+T: 1 1 : 65 : 73 : 0.09
+T: 1 1 : 65 : 74 : 0.81
+T: 1 2 : 65 : 65 : 0.1
+T: 1 2 : 65 : 73 : 0.9
+T: 1 3 : 65 : 65 : 0.1
+T: 1 3 : 65 : 73 : 0.9
+T: 2 0 : 65 : 64 : 0.09
+T: 2 0 : 65 : 65 : 0.01
+T: 2 0 : 65 : 88 : 0.81
+T: 2 0 : 65 : 89 : 0.09
+T: 2 1 : 65 : 65 : 0.01
+T: 2 1 : 65 : 66 : 0.09
+T: 2 1 : 65 : 89 : 0.09
+T: 2 1 : 65 : 90 : 0.81
+T: 2 2 : 65 : 65 : 0.1
+T: 2 2 : 65 : 89 : 0.9
+T: 2 3 : 65 : 65 : 0.1
+T: 2 3 : 65 : 89 : 0.9
+T: 3 0 : 65 : 64 : 0.9
+T: 3 0 : 65 : 65 : 0.1
+T: 3 1 : 65 : 65 : 0.1
+T: 3 1 : 65 : 66 : 0.9
+T: 3 2 : 65 : 65 : 1.0
+T: 3 3 : 65 : 65 : 1.0
+T: 0 0 : 66 : 57 : 0.81
+T: 0 0 : 66 : 58 : 0.09
+T: 0 0 : 66 : 65 : 0.09
+T: 0 0 : 66 : 66 : 0.01
+T: 0 1 : 66 : 58 : 0.09
+T: 0 1 : 66 : 59 : 0.81
+T: 0 1 : 66 : 66 : 0.01
+T: 0 1 : 66 : 67 : 0.09
+T: 0 2 : 66 : 58 : 0.9
+T: 0 2 : 66 : 66 : 0.1
+T: 0 3 : 66 : 58 : 0.9
+T: 0 3 : 66 : 66 : 0.1
+T: 1 0 : 66 : 65 : 0.09
+T: 1 0 : 66 : 66 : 0.01
+T: 1 0 : 66 : 73 : 0.81
+T: 1 0 : 66 : 74 : 0.09
+T: 1 1 : 66 : 66 : 0.01
+T: 1 1 : 66 : 67 : 0.09
+T: 1 1 : 66 : 74 : 0.09
+T: 1 1 : 66 : 75 : 0.81
+T: 1 2 : 66 : 66 : 0.1
+T: 1 2 : 66 : 74 : 0.9
+T: 1 3 : 66 : 66 : 0.1
+T: 1 3 : 66 : 74 : 0.9
+T: 2 0 : 66 : 65 : 0.09
+T: 2 0 : 66 : 66 : 0.01
+T: 2 0 : 66 : 89 : 0.81
+T: 2 0 : 66 : 90 : 0.09
+T: 2 1 : 66 : 66 : 0.01
+T: 2 1 : 66 : 67 : 0.09
+T: 2 1 : 66 : 90 : 0.09
+T: 2 1 : 66 : 91 : 0.81
+T: 2 2 : 66 : 66 : 0.1
+T: 2 2 : 66 : 90 : 0.9
+T: 2 3 : 66 : 66 : 0.1
+T: 2 3 : 66 : 90 : 0.9
+T: 3 0 : 66 : 65 : 0.9
+T: 3 0 : 66 : 66 : 0.1
+T: 3 1 : 66 : 66 : 0.1
+T: 3 1 : 66 : 67 : 0.9
+T: 3 2 : 66 : 66 : 1.0
+T: 3 3 : 66 : 66 : 1.0
+T: 0 0 : 67 : 58 : 0.81
+T: 0 0 : 67 : 59 : 0.09
+T: 0 0 : 67 : 66 : 0.09
+T: 0 0 : 67 : 67 : 0.01
+T: 0 1 : 67 : 56 : 0.81
+T: 0 1 : 67 : 59 : 0.09
+T: 0 1 : 67 : 64 : 0.09
+T: 0 1 : 67 : 67 : 0.01
+T: 0 2 : 67 : 55 : 0.81
+T: 0 2 : 67 : 59 : 0.09
+T: 0 2 : 67 : 63 : 0.09
+T: 0 2 : 67 : 67 : 0.01
+T: 0 3 : 67 : 59 : 0.9
+T: 0 3 : 67 : 67 : 0.1
+T: 1 0 : 67 : 66 : 0.09
+T: 1 0 : 67 : 67 : 0.01
+T: 1 0 : 67 : 74 : 0.81
+T: 1 0 : 67 : 75 : 0.09
+T: 1 1 : 67 : 64 : 0.09
+T: 1 1 : 67 : 67 : 0.01
+T: 1 1 : 67 : 72 : 0.81
+T: 1 1 : 67 : 75 : 0.09
+T: 1 2 : 67 : 63 : 0.09
+T: 1 2 : 67 : 67 : 0.01
+T: 1 2 : 67 : 71 : 0.81
+T: 1 2 : 67 : 75 : 0.09
+T: 1 3 : 67 : 67 : 0.1
+T: 1 3 : 67 : 75 : 0.9
+T: 2 0 : 67 : 66 : 0.09
+T: 2 0 : 67 : 67 : 0.01
+T: 2 0 : 67 : 90 : 0.81
+T: 2 0 : 67 : 91 : 0.09
+T: 2 1 : 67 : 64 : 0.09
+T: 2 1 : 67 : 67 : 0.01
+T: 2 1 : 67 : 88 : 0.81
+T: 2 1 : 67 : 91 : 0.09
+T: 2 2 : 67 : 63 : 0.09
+T: 2 2 : 67 : 67 : 0.82
+T: 2 2 : 67 : 90 : 0.09
+T: 2 3 : 67 : 67 : 0.1
+T: 2 3 : 67 : 91 : 0.9
+T: 3 0 : 67 : 66 : 0.9
+T: 3 0 : 67 : 67 : 0.1
+T: 3 1 : 67 : 64 : 0.9
+T: 3 1 : 67 : 67 : 0.1
+T: 3 2 : 67 : 63 : 0.9
+T: 3 2 : 67 : 67 : 0.1
+T: 3 3 : 67 : 67 : 1.0
+T: 0 0 : 68 : 60 : 0.09
+T: 0 0 : 68 : 63 : 0.81
+T: 0 0 : 68 : 68 : 0.01
+T: 0 0 : 68 : 71 : 0.09
+T: 0 1 : 68 : 60 : 0.09
+T: 0 1 : 68 : 61 : 0.81
+T: 0 1 : 68 : 68 : 0.01
+T: 0 1 : 68 : 69 : 0.09
+T: 0 2 : 68 : 60 : 0.9
+T: 0 2 : 68 : 68 : 0.1
+T: 0 3 : 68 : 60 : 0.9
+T: 0 3 : 68 : 68 : 0.1
+T: 1 0 : 68 : 68 : 0.01
+T: 1 0 : 68 : 71 : 0.09
+T: 1 0 : 68 : 76 : 0.09
+T: 1 0 : 68 : 79 : 0.81
+T: 1 1 : 68 : 68 : 0.01
+T: 1 1 : 68 : 69 : 0.09
+T: 1 1 : 68 : 76 : 0.09
+T: 1 1 : 68 : 77 : 0.81
+T: 1 2 : 68 : 68 : 0.1
+T: 1 2 : 68 : 76 : 0.9
+T: 1 3 : 68 : 68 : 0.1
+T: 1 3 : 68 : 76 : 0.9
+T: 2 0 : 68 : 68 : 0.1
+T: 2 0 : 68 : 71 : 0.9
+T: 2 1 : 68 : 68 : 0.1
+T: 2 1 : 68 : 69 : 0.9
+T: 2 2 : 68 : 68 : 1.0
+T: 2 3 : 68 : 68 : 1.0
+T: 3 0 : 68 : 68 : 0.1
+T: 3 0 : 68 : 71 : 0.9
+T: 3 1 : 68 : 68 : 0.1
+T: 3 1 : 68 : 69 : 0.9
+T: 3 2 : 68 : 68 : 1.0
+T: 3 3 : 68 : 68 : 1.0
+T: 0 0 : 69 : 60 : 0.81
+T: 0 0 : 69 : 61 : 0.09
+T: 0 0 : 69 : 68 : 0.09
+T: 0 0 : 69 : 69 : 0.01
+T: 0 1 : 69 : 61 : 0.09
+T: 0 1 : 69 : 62 : 0.81
+T: 0 1 : 69 : 69 : 0.01
+T: 0 1 : 69 : 70 : 0.09
+T: 0 2 : 69 : 61 : 0.09
+T: 0 2 : 69 : 65 : 0.81
+T: 0 2 : 69 : 69 : 0.01
+T: 0 2 : 69 : 73 : 0.09
+T: 0 3 : 69 : 61 : 0.9
+T: 0 3 : 69 : 69 : 0.1
+T: 1 0 : 69 : 68 : 0.09
+T: 1 0 : 69 : 69 : 0.01
+T: 1 0 : 69 : 76 : 0.81
+T: 1 0 : 69 : 77 : 0.09
+T: 1 1 : 69 : 69 : 0.01
+T: 1 1 : 69 : 70 : 0.09
+T: 1 1 : 69 : 77 : 0.09
+T: 1 1 : 69 : 78 : 0.81
+T: 1 2 : 69 : 69 : 0.01
+T: 1 2 : 69 : 73 : 0.09
+T: 1 2 : 69 : 77 : 0.09
+T: 1 2 : 69 : 81 : 0.81
+T: 1 3 : 69 : 69 : 0.1
+T: 1 3 : 69 : 77 : 0.9
+T: 2 0 : 69 : 68 : 0.9
+T: 2 0 : 69 : 69 : 0.1
+T: 2 1 : 69 : 69 : 0.1
+T: 2 1 : 69 : 70 : 0.9
+T: 2 2 : 69 : 69 : 0.1
+T: 2 2 : 69 : 73 : 0.9
+T: 2 3 : 69 : 69 : 1.0
+T: 3 0 : 69 : 68 : 0.9
+T: 3 0 : 69 : 69 : 0.1
+T: 3 1 : 69 : 69 : 0.1
+T: 3 1 : 69 : 70 : 0.9
+T: 3 2 : 69 : 69 : 0.1
+T: 3 2 : 69 : 73 : 0.9
+T: 3 3 : 69 : 69 : 1.0
+T: 0 0 : 70 : 61 : 0.81
+T: 0 0 : 70 : 62 : 0.09
+T: 0 0 : 70 : 69 : 0.09
+T: 0 0 : 70 : 70 : 0.01
+T: 0 1 : 70 : 62 : 0.09
+T: 0 1 : 70 : 63 : 0.81
+T: 0 1 : 70 : 70 : 0.01
+T: 0 1 : 70 : 71 : 0.09
+T: 0 2 : 70 : 62 : 0.9
+T: 0 2 : 70 : 70 : 0.1
+T: 0 3 : 70 : 62 : 0.9
+T: 0 3 : 70 : 70 : 0.1
+T: 1 0 : 70 : 69 : 0.09
+T: 1 0 : 70 : 70 : 0.01
+T: 1 0 : 70 : 77 : 0.81
+T: 1 0 : 70 : 78 : 0.09
+T: 1 1 : 70 : 70 : 0.01
+T: 1 1 : 70 : 71 : 0.09
+T: 1 1 : 70 : 78 : 0.09
+T: 1 1 : 70 : 79 : 0.81
+T: 1 2 : 70 : 70 : 0.1
+T: 1 2 : 70 : 78 : 0.9
+T: 1 3 : 70 : 70 : 0.1
+T: 1 3 : 70 : 78 : 0.9
+T: 2 0 : 70 : 69 : 0.9
+T: 2 0 : 70 : 70 : 0.1
+T: 2 1 : 70 : 70 : 0.1
+T: 2 1 : 70 : 71 : 0.9
+T: 2 2 : 70 : 70 : 1.0
+T: 2 3 : 70 : 70 : 1.0
+T: 3 0 : 70 : 69 : 0.9
+T: 3 0 : 70 : 70 : 0.1
+T: 3 1 : 70 : 70 : 0.1
+T: 3 1 : 70 : 71 : 0.9
+T: 3 2 : 70 : 70 : 1.0
+T: 3 3 : 70 : 70 : 1.0
+T: 0 0 : 71 : 62 : 0.81
+T: 0 0 : 71 : 63 : 0.09
+T: 0 0 : 71 : 70 : 0.09
+T: 0 0 : 71 : 71 : 0.01
+T: 0 1 : 71 : 60 : 0.81
+T: 0 1 : 71 : 63 : 0.09
+T: 0 1 : 71 : 68 : 0.09
+T: 0 1 : 71 : 71 : 0.01
+T: 0 2 : 71 : 63 : 0.9
+T: 0 2 : 71 : 71 : 0.1
+T: 0 3 : 71 : 63 : 0.9
+T: 0 3 : 71 : 71 : 0.1
+T: 1 0 : 71 : 70 : 0.09
+T: 1 0 : 71 : 71 : 0.01
+T: 1 0 : 71 : 78 : 0.81
+T: 1 0 : 71 : 79 : 0.09
+T: 1 1 : 71 : 68 : 0.09
+T: 1 1 : 71 : 71 : 0.01
+T: 1 1 : 71 : 76 : 0.81
+T: 1 1 : 71 : 79 : 0.09
+T: 1 2 : 71 : 71 : 0.1
+T: 1 2 : 71 : 79 : 0.9
+T: 1 3 : 71 : 71 : 0.1
+T: 1 3 : 71 : 79 : 0.9
+T: 2 0 : 71 : 70 : 0.9
+T: 2 0 : 71 : 71 : 0.1
+T: 2 1 : 71 : 68 : 0.9
+T: 2 1 : 71 : 71 : 0.1
+T: 2 2 : 71 : 71 : 1.0
+T: 2 3 : 71 : 71 : 1.0
+T: 3 0 : 71 : 70 : 0.9
+T: 3 0 : 71 : 71 : 0.1
+T: 3 1 : 71 : 68 : 0.9
+T: 3 1 : 71 : 71 : 0.1
+T: 3 2 : 71 : 71 : 1.0
+T: 3 3 : 71 : 71 : 1.0
+T: 0 0 : 72 : 64 : 0.09
+T: 0 0 : 72 : 67 : 0.81
+T: 0 0 : 72 : 72 : 0.01
+T: 0 0 : 72 : 75 : 0.09
+T: 0 1 : 72 : 64 : 0.09
+T: 0 1 : 72 : 65 : 0.81
+T: 0 1 : 72 : 72 : 0.01
+T: 0 1 : 72 : 73 : 0.09
+T: 0 2 : 72 : 1 : 0.9
+T: 0 2 : 72 : 64 : 0.09
+T: 0 2 : 72 : 72 : 0.01
+T: 0 3 : 72 : 64 : 0.9
+T: 0 3 : 72 : 72 : 0.1
+T: 1 0 : 72 : 72 : 0.01
+T: 1 0 : 72 : 75 : 0.09
+T: 1 0 : 72 : 80 : 0.09
+T: 1 0 : 72 : 83 : 0.81
+T: 1 1 : 72 : 72 : 0.01
+T: 1 1 : 72 : 73 : 0.09
+T: 1 1 : 72 : 80 : 0.09
+T: 1 1 : 72 : 81 : 0.81
+T: 1 2 : 72 : 1 : 0.9
+T: 1 2 : 72 : 72 : 0.01
+T: 1 2 : 72 : 80 : 0.09
+T: 1 3 : 72 : 72 : 0.1
+T: 1 3 : 72 : 80 : 0.9
+T: 2 0 : 72 : 72 : 0.1
+T: 2 0 : 72 : 75 : 0.9
+T: 2 1 : 72 : 72 : 0.1
+T: 2 1 : 72 : 73 : 0.9
+T: 2 2 : 72 : 1 : 0.9
+T: 2 2 : 72 : 72 : 0.1
+T: 2 3 : 72 : 72 : 1.0
+T: 3 0 : 72 : 72 : 0.1
+T: 3 0 : 72 : 75 : 0.9
+T: 3 1 : 72 : 72 : 0.1
+T: 3 1 : 72 : 73 : 0.9
+T: 3 2 : 72 : 1 : 0.9
+T: 3 2 : 72 : 72 : 0.1
+T: 3 3 : 72 : 72 : 1.0
+T: 0 0 : 73 : 64 : 0.81
+T: 0 0 : 73 : 65 : 0.09
+T: 0 0 : 73 : 72 : 0.09
+T: 0 0 : 73 : 73 : 0.01
+T: 0 1 : 73 : 65 : 0.09
+T: 0 1 : 73 : 66 : 0.81
+T: 0 1 : 73 : 73 : 0.01
+T: 0 1 : 73 : 74 : 0.09
+T: 0 2 : 73 : 65 : 0.9
+T: 0 2 : 73 : 73 : 0.1
+T: 0 3 : 73 : 65 : 0.9
+T: 0 3 : 73 : 73 : 0.1
+T: 1 0 : 73 : 72 : 0.09
+T: 1 0 : 73 : 73 : 0.01
+T: 1 0 : 73 : 80 : 0.81
+T: 1 0 : 73 : 81 : 0.09
+T: 1 1 : 73 : 73 : 0.01
+T: 1 1 : 73 : 74 : 0.09
+T: 1 1 : 73 : 81 : 0.09
+T: 1 1 : 73 : 82 : 0.81
+T: 1 2 : 73 : 73 : 0.1
+T: 1 2 : 73 : 81 : 0.9
+T: 1 3 : 73 : 73 : 0.1
+T: 1 3 : 73 : 81 : 0.9
+T: 2 0 : 73 : 72 : 0.9
+T: 2 0 : 73 : 73 : 0.1
+T: 2 1 : 73 : 73 : 0.1
+T: 2 1 : 73 : 74 : 0.9
+T: 2 2 : 73 : 73 : 1.0
+T: 2 3 : 73 : 73 : 1.0
+T: 3 0 : 73 : 72 : 0.9
+T: 3 0 : 73 : 73 : 0.1
+T: 3 1 : 73 : 73 : 0.1
+T: 3 1 : 73 : 74 : 0.9
+T: 3 2 : 73 : 73 : 1.0
+T: 3 3 : 73 : 73 : 1.0
+T: 0 0 : 74 : 65 : 0.81
+T: 0 0 : 74 : 66 : 0.09
+T: 0 0 : 74 : 73 : 0.09
+T: 0 0 : 74 : 74 : 0.01
+T: 0 1 : 74 : 66 : 0.09
+T: 0 1 : 74 : 67 : 0.81
+T: 0 1 : 74 : 74 : 0.01
+T: 0 1 : 74 : 75 : 0.09
+T: 0 2 : 74 : 66 : 0.9
+T: 0 2 : 74 : 74 : 0.1
+T: 0 3 : 74 : 66 : 0.9
+T: 0 3 : 74 : 74 : 0.1
+T: 1 0 : 74 : 73 : 0.09
+T: 1 0 : 74 : 74 : 0.01
+T: 1 0 : 74 : 81 : 0.81
+T: 1 0 : 74 : 82 : 0.09
+T: 1 1 : 74 : 74 : 0.01
+T: 1 1 : 74 : 75 : 0.09
+T: 1 1 : 74 : 82 : 0.09
+T: 1 1 : 74 : 83 : 0.81
+T: 1 2 : 74 : 74 : 0.1
+T: 1 2 : 74 : 82 : 0.9
+T: 1 3 : 74 : 74 : 0.1
+T: 1 3 : 74 : 82 : 0.9
+T: 2 0 : 74 : 73 : 0.9
+T: 2 0 : 74 : 74 : 0.1
+T: 2 1 : 74 : 74 : 0.1
+T: 2 1 : 74 : 75 : 0.9
+T: 2 2 : 74 : 74 : 1.0
+T: 2 3 : 74 : 74 : 1.0
+T: 3 0 : 74 : 73 : 0.9
+T: 3 0 : 74 : 74 : 0.1
+T: 3 1 : 74 : 74 : 0.1
+T: 3 1 : 74 : 75 : 0.9
+T: 3 2 : 74 : 74 : 1.0
+T: 3 3 : 74 : 74 : 1.0
+T: 0 0 : 75 : 66 : 0.81
+T: 0 0 : 75 : 67 : 0.09
+T: 0 0 : 75 : 74 : 0.09
+T: 0 0 : 75 : 75 : 0.01
+T: 0 1 : 75 : 64 : 0.81
+T: 0 1 : 75 : 67 : 0.09
+T: 0 1 : 75 : 72 : 0.09
+T: 0 1 : 75 : 75 : 0.01
+T: 0 2 : 75 : 63 : 0.81
+T: 0 2 : 75 : 67 : 0.09
+T: 0 2 : 75 : 71 : 0.09
+T: 0 2 : 75 : 75 : 0.01
+T: 0 3 : 75 : 67 : 0.9
+T: 0 3 : 75 : 75 : 0.1
+T: 1 0 : 75 : 74 : 0.09
+T: 1 0 : 75 : 75 : 0.01
+T: 1 0 : 75 : 82 : 0.81
+T: 1 0 : 75 : 83 : 0.09
+T: 1 1 : 75 : 72 : 0.09
+T: 1 1 : 75 : 75 : 0.01
+T: 1 1 : 75 : 80 : 0.81
+T: 1 1 : 75 : 83 : 0.09
+T: 1 2 : 75 : 71 : 0.09
+T: 1 2 : 75 : 75 : 0.01
+T: 1 2 : 75 : 79 : 0.81
+T: 1 2 : 75 : 83 : 0.09
+T: 1 3 : 75 : 75 : 0.1
+T: 1 3 : 75 : 83 : 0.9
+T: 2 0 : 75 : 74 : 0.9
+T: 2 0 : 75 : 75 : 0.1
+T: 2 1 : 75 : 72 : 0.9
+T: 2 1 : 75 : 75 : 0.1
+T: 2 2 : 75 : 71 : 0.9
+T: 2 2 : 75 : 75 : 0.1
+T: 2 3 : 75 : 75 : 1.0
+T: 3 0 : 75 : 74 : 0.9
+T: 3 0 : 75 : 75 : 0.1
+T: 3 1 : 75 : 72 : 0.9
+T: 3 1 : 75 : 75 : 0.1
+T: 3 2 : 75 : 71 : 0.9
+T: 3 2 : 75 : 75 : 0.1
+T: 3 3 : 75 : 75 : 1.0
+T: 0 0 : 76 : 68 : 0.09
+T: 0 0 : 76 : 71 : 0.81
+T: 0 0 : 76 : 76 : 0.01
+T: 0 0 : 76 : 79 : 0.09
+T: 0 1 : 76 : 68 : 0.09
+T: 0 1 : 76 : 69 : 0.81
+T: 0 1 : 76 : 76 : 0.01
+T: 0 1 : 76 : 77 : 0.09
+T: 0 2 : 76 : 68 : 0.9
+T: 0 2 : 76 : 76 : 0.1
+T: 0 3 : 76 : 68 : 0.9
+T: 0 3 : 76 : 76 : 0.1
+T: 1 0 : 76 : 52 : 0.09
+T: 1 0 : 76 : 55 : 0.81
+T: 1 0 : 76 : 76 : 0.01
+T: 1 0 : 76 : 79 : 0.09
+T: 1 1 : 76 : 52 : 0.09
+T: 1 1 : 76 : 53 : 0.81
+T: 1 1 : 76 : 76 : 0.01
+T: 1 1 : 76 : 77 : 0.09
+T: 1 2 : 76 : 52 : 0.9
+T: 1 2 : 76 : 76 : 0.1
+T: 1 3 : 76 : 52 : 0.9
+T: 1 3 : 76 : 76 : 0.1
+T: 2 0 : 76 : 44 : 0.09
+T: 2 0 : 76 : 47 : 0.81
+T: 2 0 : 76 : 76 : 0.01
+T: 2 0 : 76 : 79 : 0.09
+T: 2 1 : 76 : 44 : 0.09
+T: 2 1 : 76 : 45 : 0.81
+T: 2 1 : 76 : 76 : 0.01
+T: 2 1 : 76 : 77 : 0.09
+T: 2 2 : 76 : 44 : 0.9
+T: 2 2 : 76 : 76 : 0.1
+T: 2 3 : 76 : 44 : 0.9
+T: 2 3 : 76 : 76 : 0.1
+T: 3 0 : 76 : 76 : 0.1
+T: 3 0 : 76 : 79 : 0.9
+T: 3 1 : 76 : 76 : 0.1
+T: 3 1 : 76 : 77 : 0.9
+T: 3 2 : 76 : 76 : 1.0
+T: 3 3 : 76 : 76 : 1.0
+T: 0 0 : 77 : 68 : 0.81
+T: 0 0 : 77 : 69 : 0.09
+T: 0 0 : 77 : 76 : 0.09
+T: 0 0 : 77 : 77 : 0.01
+T: 0 1 : 77 : 69 : 0.09
+T: 0 1 : 77 : 70 : 0.81
+T: 0 1 : 77 : 77 : 0.01
+T: 0 1 : 77 : 78 : 0.09
+T: 0 2 : 77 : 69 : 0.09
+T: 0 2 : 77 : 73 : 0.81
+T: 0 2 : 77 : 77 : 0.01
+T: 0 2 : 77 : 81 : 0.09
+T: 0 3 : 77 : 69 : 0.9
+T: 0 3 : 77 : 77 : 0.1
+T: 1 0 : 77 : 52 : 0.81
+T: 1 0 : 77 : 53 : 0.09
+T: 1 0 : 77 : 76 : 0.09
+T: 1 0 : 77 : 77 : 0.01
+T: 1 1 : 77 : 53 : 0.09
+T: 1 1 : 77 : 54 : 0.81
+T: 1 1 : 77 : 77 : 0.01
+T: 1 1 : 77 : 78 : 0.09
+T: 1 2 : 77 : 53 : 0.09
+T: 1 2 : 77 : 57 : 0.81
+T: 1 2 : 77 : 77 : 0.01
+T: 1 2 : 77 : 81 : 0.09
+T: 1 3 : 77 : 53 : 0.9
+T: 1 3 : 77 : 77 : 0.1
+T: 2 0 : 77 : 44 : 0.81
+T: 2 0 : 77 : 45 : 0.09
+T: 2 0 : 77 : 76 : 0.09
+T: 2 0 : 77 : 77 : 0.01
+T: 2 1 : 77 : 45 : 0.09
+T: 2 1 : 77 : 46 : 0.81
+T: 2 1 : 77 : 77 : 0.01
+T: 2 1 : 77 : 78 : 0.09
+T: 2 2 : 77 : 45 : 0.09
+T: 2 2 : 77 : 49 : 0.81
+T: 2 2 : 77 : 77 : 0.01
+T: 2 2 : 77 : 81 : 0.09
+T: 2 3 : 77 : 45 : 0.9
+T: 2 3 : 77 : 77 : 0.1
+T: 3 0 : 77 : 76 : 0.9
+T: 3 0 : 77 : 77 : 0.1
+T: 3 1 : 77 : 77 : 0.1
+T: 3 1 : 77 : 78 : 0.9
+T: 3 2 : 77 : 77 : 0.1
+T: 3 2 : 77 : 81 : 0.9
+T: 3 3 : 77 : 77 : 1.0
+T: 0 0 : 78 : 69 : 0.81
+T: 0 0 : 78 : 70 : 0.09
+T: 0 0 : 78 : 77 : 0.09
+T: 0 0 : 78 : 78 : 0.01
+T: 0 1 : 78 : 70 : 0.09
+T: 0 1 : 78 : 71 : 0.81
+T: 0 1 : 78 : 78 : 0.01
+T: 0 1 : 78 : 79 : 0.09
+T: 0 2 : 78 : 70 : 0.9
+T: 0 2 : 78 : 78 : 0.1
+T: 0 3 : 78 : 70 : 0.9
+T: 0 3 : 78 : 78 : 0.1
+T: 1 0 : 78 : 53 : 0.81
+T: 1 0 : 78 : 54 : 0.09
+T: 1 0 : 78 : 77 : 0.09
+T: 1 0 : 78 : 78 : 0.01
+T: 1 1 : 78 : 54 : 0.09
+T: 1 1 : 78 : 55 : 0.81
+T: 1 1 : 78 : 78 : 0.01
+T: 1 1 : 78 : 79 : 0.09
+T: 1 2 : 78 : 54 : 0.9
+T: 1 2 : 78 : 78 : 0.1
+T: 1 3 : 78 : 54 : 0.9
+T: 1 3 : 78 : 78 : 0.1
+T: 2 0 : 78 : 45 : 0.81
+T: 2 0 : 78 : 46 : 0.09
+T: 2 0 : 78 : 77 : 0.09
+T: 2 0 : 78 : 78 : 0.01
+T: 2 1 : 78 : 46 : 0.09
+T: 2 1 : 78 : 47 : 0.81
+T: 2 1 : 78 : 78 : 0.01
+T: 2 1 : 78 : 79 : 0.09
+T: 2 2 : 78 : 46 : 0.9
+T: 2 2 : 78 : 78 : 0.1
+T: 2 3 : 78 : 46 : 0.9
+T: 2 3 : 78 : 78 : 0.1
+T: 3 0 : 78 : 77 : 0.9
+T: 3 0 : 78 : 78 : 0.1
+T: 3 1 : 78 : 78 : 0.1
+T: 3 1 : 78 : 79 : 0.9
+T: 3 2 : 78 : 78 : 1.0
+T: 3 3 : 78 : 78 : 1.0
+T: 0 0 : 79 : 70 : 0.81
+T: 0 0 : 79 : 71 : 0.09
+T: 0 0 : 79 : 78 : 0.09
+T: 0 0 : 79 : 79 : 0.01
+T: 0 1 : 79 : 68 : 0.81
+T: 0 1 : 79 : 71 : 0.09
+T: 0 1 : 79 : 76 : 0.09
+T: 0 1 : 79 : 79 : 0.01
+T: 0 2 : 79 : 71 : 0.9
+T: 0 2 : 79 : 79 : 0.1
+T: 0 3 : 79 : 71 : 0.9
+T: 0 3 : 79 : 79 : 0.1
+T: 1 0 : 79 : 54 : 0.81
+T: 1 0 : 79 : 55 : 0.09
+T: 1 0 : 79 : 78 : 0.09
+T: 1 0 : 79 : 79 : 0.01
+T: 1 1 : 79 : 52 : 0.81
+T: 1 1 : 79 : 55 : 0.09
+T: 1 1 : 79 : 76 : 0.09
+T: 1 1 : 79 : 79 : 0.01
+T: 1 2 : 79 : 55 : 0.9
+T: 1 2 : 79 : 79 : 0.1
+T: 1 3 : 79 : 55 : 0.9
+T: 1 3 : 79 : 79 : 0.1
+T: 2 0 : 79 : 46 : 0.81
+T: 2 0 : 79 : 47 : 0.09
+T: 2 0 : 79 : 78 : 0.09
+T: 2 0 : 79 : 79 : 0.01
+T: 2 1 : 79 : 44 : 0.81
+T: 2 1 : 79 : 47 : 0.09
+T: 2 1 : 79 : 76 : 0.09
+T: 2 1 : 79 : 79 : 0.01
+T: 2 2 : 79 : 47 : 0.9
+T: 2 2 : 79 : 79 : 0.1
+T: 2 3 : 79 : 47 : 0.9
+T: 2 3 : 79 : 79 : 0.1
+T: 3 0 : 79 : 78 : 0.9
+T: 3 0 : 79 : 79 : 0.1
+T: 3 1 : 79 : 76 : 0.9
+T: 3 1 : 79 : 79 : 0.1
+T: 3 2 : 79 : 79 : 1.0
+T: 3 3 : 79 : 79 : 1.0
+T: 0 0 : 80 : 72 : 0.09
+T: 0 0 : 80 : 75 : 0.81
+T: 0 0 : 80 : 80 : 0.01
+T: 0 0 : 80 : 83 : 0.09
+T: 0 1 : 80 : 72 : 0.09
+T: 0 1 : 80 : 73 : 0.81
+T: 0 1 : 80 : 80 : 0.01
+T: 0 1 : 80 : 81 : 0.09
+T: 0 2 : 80 : 1 : 0.9
+T: 0 2 : 80 : 72 : 0.09
+T: 0 2 : 80 : 80 : 0.01
+T: 0 3 : 80 : 72 : 0.9
+T: 0 3 : 80 : 80 : 0.1
+T: 1 0 : 80 : 56 : 0.09
+T: 1 0 : 80 : 59 : 0.81
+T: 1 0 : 80 : 80 : 0.01
+T: 1 0 : 80 : 83 : 0.09
+T: 1 1 : 80 : 56 : 0.09
+T: 1 1 : 80 : 57 : 0.81
+T: 1 1 : 80 : 80 : 0.01
+T: 1 1 : 80 : 81 : 0.09
+T: 1 2 : 80 : 1 : 0.9
+T: 1 2 : 80 : 56 : 0.09
+T: 1 2 : 80 : 80 : 0.01
+T: 1 3 : 80 : 56 : 0.9
+T: 1 3 : 80 : 80 : 0.1
+T: 2 0 : 80 : 48 : 0.09
+T: 2 0 : 80 : 51 : 0.81
+T: 2 0 : 80 : 80 : 0.01
+T: 2 0 : 80 : 83 : 0.09
+T: 2 1 : 80 : 48 : 0.09
+T: 2 1 : 80 : 49 : 0.81
+T: 2 1 : 80 : 80 : 0.01
+T: 2 1 : 80 : 81 : 0.09
+T: 2 2 : 80 : 1 : 0.9
+T: 2 2 : 80 : 48 : 0.09
+T: 2 2 : 80 : 80 : 0.01
+T: 2 3 : 80 : 48 : 0.9
+T: 2 3 : 80 : 80 : 0.1
+T: 3 0 : 80 : 80 : 0.1
+T: 3 0 : 80 : 83 : 0.9
+T: 3 1 : 80 : 80 : 0.1
+T: 3 1 : 80 : 81 : 0.9
+T: 3 2 : 80 : 1 : 0.9
+T: 3 2 : 80 : 80 : 0.1
+T: 3 3 : 80 : 80 : 1.0
+T: 0 0 : 81 : 72 : 0.81
+T: 0 0 : 81 : 73 : 0.09
+T: 0 0 : 81 : 80 : 0.09
+T: 0 0 : 81 : 81 : 0.01
+T: 0 1 : 81 : 73 : 0.09
+T: 0 1 : 81 : 74 : 0.81
+T: 0 1 : 81 : 81 : 0.01
+T: 0 1 : 81 : 82 : 0.09
+T: 0 2 : 81 : 73 : 0.9
+T: 0 2 : 81 : 81 : 0.1
+T: 0 3 : 81 : 73 : 0.9
+T: 0 3 : 81 : 81 : 0.1
+T: 1 0 : 81 : 56 : 0.81
+T: 1 0 : 81 : 57 : 0.09
+T: 1 0 : 81 : 80 : 0.09
+T: 1 0 : 81 : 81 : 0.01
+T: 1 1 : 81 : 57 : 0.09
+T: 1 1 : 81 : 58 : 0.81
+T: 1 1 : 81 : 81 : 0.01
+T: 1 1 : 81 : 82 : 0.09
+T: 1 2 : 81 : 57 : 0.9
+T: 1 2 : 81 : 81 : 0.1
+T: 1 3 : 81 : 57 : 0.9
+T: 1 3 : 81 : 81 : 0.1
+T: 2 0 : 81 : 48 : 0.81
+T: 2 0 : 81 : 49 : 0.09
+T: 2 0 : 81 : 80 : 0.09
+T: 2 0 : 81 : 81 : 0.01
+T: 2 1 : 81 : 49 : 0.09
+T: 2 1 : 81 : 50 : 0.81
+T: 2 1 : 81 : 81 : 0.01
+T: 2 1 : 81 : 82 : 0.09
+T: 2 2 : 81 : 49 : 0.9
+T: 2 2 : 81 : 81 : 0.1
+T: 2 3 : 81 : 49 : 0.9
+T: 2 3 : 81 : 81 : 0.1
+T: 3 0 : 81 : 80 : 0.9
+T: 3 0 : 81 : 81 : 0.1
+T: 3 1 : 81 : 81 : 0.1
+T: 3 1 : 81 : 82 : 0.9
+T: 3 2 : 81 : 81 : 1.0
+T: 3 3 : 81 : 81 : 1.0
+T: 0 0 : 82 : 73 : 0.81
+T: 0 0 : 82 : 74 : 0.09
+T: 0 0 : 82 : 81 : 0.09
+T: 0 0 : 82 : 82 : 0.01
+T: 0 1 : 82 : 74 : 0.09
+T: 0 1 : 82 : 75 : 0.81
+T: 0 1 : 82 : 82 : 0.01
+T: 0 1 : 82 : 83 : 0.09
+T: 0 2 : 82 : 74 : 0.9
+T: 0 2 : 82 : 82 : 0.1
+T: 0 3 : 82 : 74 : 0.9
+T: 0 3 : 82 : 82 : 0.1
+T: 1 0 : 82 : 57 : 0.81
+T: 1 0 : 82 : 58 : 0.09
+T: 1 0 : 82 : 81 : 0.09
+T: 1 0 : 82 : 82 : 0.01
+T: 1 1 : 82 : 58 : 0.09
+T: 1 1 : 82 : 59 : 0.81
+T: 1 1 : 82 : 82 : 0.01
+T: 1 1 : 82 : 83 : 0.09
+T: 1 2 : 82 : 58 : 0.9
+T: 1 2 : 82 : 82 : 0.1
+T: 1 3 : 82 : 58 : 0.9
+T: 1 3 : 82 : 82 : 0.1
+T: 2 0 : 82 : 49 : 0.81
+T: 2 0 : 82 : 50 : 0.09
+T: 2 0 : 82 : 81 : 0.09
+T: 2 0 : 82 : 82 : 0.01
+T: 2 1 : 82 : 50 : 0.09
+T: 2 1 : 82 : 51 : 0.81
+T: 2 1 : 82 : 82 : 0.01
+T: 2 1 : 82 : 83 : 0.09
+T: 2 2 : 82 : 50 : 0.9
+T: 2 2 : 82 : 82 : 0.1
+T: 2 3 : 82 : 50 : 0.9
+T: 2 3 : 82 : 82 : 0.1
+T: 3 0 : 82 : 81 : 0.9
+T: 3 0 : 82 : 82 : 0.1
+T: 3 1 : 82 : 82 : 0.1
+T: 3 1 : 82 : 83 : 0.9
+T: 3 2 : 82 : 82 : 1.0
+T: 3 3 : 82 : 82 : 1.0
+T: 0 0 : 83 : 74 : 0.81
+T: 0 0 : 83 : 75 : 0.09
+T: 0 0 : 83 : 82 : 0.09
+T: 0 0 : 83 : 83 : 0.01
+T: 0 1 : 83 : 72 : 0.81
+T: 0 1 : 83 : 75 : 0.09
+T: 0 1 : 83 : 80 : 0.09
+T: 0 1 : 83 : 83 : 0.01
+T: 0 2 : 83 : 71 : 0.81
+T: 0 2 : 83 : 75 : 0.09
+T: 0 2 : 83 : 79 : 0.09
+T: 0 2 : 83 : 83 : 0.01
+T: 0 3 : 83 : 75 : 0.9
+T: 0 3 : 83 : 83 : 0.1
+T: 1 0 : 83 : 58 : 0.81
+T: 1 0 : 83 : 59 : 0.09
+T: 1 0 : 83 : 82 : 0.09
+T: 1 0 : 83 : 83 : 0.01
+T: 1 1 : 83 : 56 : 0.81
+T: 1 1 : 83 : 59 : 0.09
+T: 1 1 : 83 : 80 : 0.09
+T: 1 1 : 83 : 83 : 0.01
+T: 1 2 : 83 : 55 : 0.81
+T: 1 2 : 83 : 59 : 0.09
+T: 1 2 : 83 : 79 : 0.09
+T: 1 2 : 83 : 83 : 0.01
+T: 1 3 : 83 : 59 : 0.9
+T: 1 3 : 83 : 83 : 0.1
+T: 2 0 : 83 : 50 : 0.81
+T: 2 0 : 83 : 51 : 0.09
+T: 2 0 : 83 : 82 : 0.09
+T: 2 0 : 83 : 83 : 0.01
+T: 2 1 : 83 : 48 : 0.81
+T: 2 1 : 83 : 51 : 0.09
+T: 2 1 : 83 : 80 : 0.09
+T: 2 1 : 83 : 83 : 0.01
+T: 2 2 : 83 : 47 : 0.81
+T: 2 2 : 83 : 51 : 0.09
+T: 2 2 : 83 : 79 : 0.09
+T: 2 2 : 83 : 83 : 0.01
+T: 2 3 : 83 : 51 : 0.9
+T: 2 3 : 83 : 83 : 0.1
+T: 3 0 : 83 : 82 : 0.9
+T: 3 0 : 83 : 83 : 0.1
+T: 3 1 : 83 : 80 : 0.9
+T: 3 1 : 83 : 83 : 0.1
+T: 3 2 : 83 : 79 : 0.9
+T: 3 2 : 83 : 83 : 0.1
+T: 3 3 : 83 : 83 : 1.0
+T: 0 0 : 84 : 84 : 0.01
+T: 0 0 : 84 : 87 : 0.09
+T: 0 0 : 84 : 96 : 0.09
+T: 0 0 : 84 : 99 : 0.81
+T: 0 1 : 84 : 84 : 0.01
+T: 0 1 : 84 : 85 : 0.09
+T: 0 1 : 84 : 96 : 0.09
+T: 0 1 : 84 : 97 : 0.81
+T: 0 2 : 84 : 1 : 0.9
+T: 0 2 : 84 : 84 : 0.01
+T: 0 2 : 84 : 96 : 0.09
+T: 0 3 : 84 : 84 : 0.1
+T: 0 3 : 84 : 96 : 0.9
+T: 1 0 : 84 : 84 : 0.01
+T: 1 0 : 84 : 87 : 0.09
+T: 1 0 : 84 : 88 : 0.09
+T: 1 0 : 84 : 91 : 0.81
+T: 1 1 : 84 : 84 : 0.01
+T: 1 1 : 84 : 85 : 0.09
+T: 1 1 : 84 : 88 : 0.09
+T: 1 1 : 84 : 89 : 0.81
+T: 1 2 : 84 : 1 : 0.9
+T: 1 2 : 84 : 84 : 0.01
+T: 1 2 : 84 : 88 : 0.09
+T: 1 3 : 84 : 84 : 0.1
+T: 1 3 : 84 : 88 : 0.9
+T: 2 0 : 84 : 84 : 0.1
+T: 2 0 : 84 : 87 : 0.9
+T: 2 1 : 84 : 84 : 0.1
+T: 2 1 : 84 : 85 : 0.9
+T: 2 2 : 84 : 1 : 0.9
+T: 2 2 : 84 : 84 : 0.1
+T: 2 3 : 84 : 84 : 1.0
+T: 3 0 : 84 : 84 : 0.1
+T: 3 0 : 84 : 87 : 0.9
+T: 3 1 : 84 : 84 : 0.1
+T: 3 1 : 84 : 85 : 0.9
+T: 3 2 : 84 : 1 : 0.9
+T: 3 2 : 84 : 84 : 0.1
+T: 3 3 : 84 : 84 : 1.0
+T: 0 0 : 85 : 84 : 0.09
+T: 0 0 : 85 : 85 : 0.01
+T: 0 0 : 85 : 96 : 0.81
+T: 0 0 : 85 : 97 : 0.09
+T: 0 1 : 85 : 85 : 0.01
+T: 0 1 : 85 : 86 : 0.09
+T: 0 1 : 85 : 97 : 0.09
+T: 0 1 : 85 : 98 : 0.81
+T: 0 2 : 85 : 85 : 0.1
+T: 0 2 : 85 : 97 : 0.9
+T: 0 3 : 85 : 85 : 0.1
+T: 0 3 : 85 : 97 : 0.9
+T: 1 0 : 85 : 84 : 0.09
+T: 1 0 : 85 : 85 : 0.01
+T: 1 0 : 85 : 88 : 0.81
+T: 1 0 : 85 : 89 : 0.09
+T: 1 1 : 85 : 85 : 0.01
+T: 1 1 : 85 : 86 : 0.09
+T: 1 1 : 85 : 89 : 0.09
+T: 1 1 : 85 : 90 : 0.81
+T: 1 2 : 85 : 85 : 0.1
+T: 1 2 : 85 : 89 : 0.9
+T: 1 3 : 85 : 85 : 0.1
+T: 1 3 : 85 : 89 : 0.9
+T: 2 0 : 85 : 84 : 0.9
+T: 2 0 : 85 : 85 : 0.1
+T: 2 1 : 85 : 85 : 0.1
+T: 2 1 : 85 : 86 : 0.9
+T: 2 2 : 85 : 85 : 1.0
+T: 2 3 : 85 : 85 : 1.0
+T: 3 0 : 85 : 84 : 0.9
+T: 3 0 : 85 : 85 : 0.1
+T: 3 1 : 85 : 85 : 0.1
+T: 3 1 : 85 : 86 : 0.9
+T: 3 2 : 85 : 85 : 1.0
+T: 3 3 : 85 : 85 : 1.0
+T: 0 0 : 86 : 85 : 0.09
+T: 0 0 : 86 : 86 : 0.01
+T: 0 0 : 86 : 97 : 0.81
+T: 0 0 : 86 : 98 : 0.09
+T: 0 1 : 86 : 86 : 0.01
+T: 0 1 : 86 : 87 : 0.09
+T: 0 1 : 86 : 98 : 0.09
+T: 0 1 : 86 : 99 : 0.81
+T: 0 2 : 86 : 86 : 0.1
+T: 0 2 : 86 : 98 : 0.9
+T: 0 3 : 86 : 86 : 0.1
+T: 0 3 : 86 : 98 : 0.9
+T: 1 0 : 86 : 85 : 0.09
+T: 1 0 : 86 : 86 : 0.01
+T: 1 0 : 86 : 89 : 0.81
+T: 1 0 : 86 : 90 : 0.09
+T: 1 1 : 86 : 86 : 0.01
+T: 1 1 : 86 : 87 : 0.09
+T: 1 1 : 86 : 90 : 0.09
+T: 1 1 : 86 : 91 : 0.81
+T: 1 2 : 86 : 86 : 0.1
+T: 1 2 : 86 : 90 : 0.9
+T: 1 3 : 86 : 86 : 0.1
+T: 1 3 : 86 : 90 : 0.9
+T: 2 0 : 86 : 85 : 0.9
+T: 2 0 : 86 : 86 : 0.1
+T: 2 1 : 86 : 86 : 0.1
+T: 2 1 : 86 : 87 : 0.9
+T: 2 2 : 86 : 86 : 1.0
+T: 2 3 : 86 : 86 : 1.0
+T: 3 0 : 86 : 85 : 0.9
+T: 3 0 : 86 : 86 : 0.1
+T: 3 1 : 86 : 86 : 0.1
+T: 3 1 : 86 : 87 : 0.9
+T: 3 2 : 86 : 86 : 1.0
+T: 3 3 : 86 : 86 : 1.0
+T: 0 0 : 87 : 86 : 0.09
+T: 0 0 : 87 : 87 : 0.01
+T: 0 0 : 87 : 98 : 0.81
+T: 0 0 : 87 : 99 : 0.09
+T: 0 1 : 87 : 84 : 0.09
+T: 0 1 : 87 : 87 : 0.01
+T: 0 1 : 87 : 96 : 0.81
+T: 0 1 : 87 : 99 : 0.09
+T: 0 2 : 87 : 87 : 0.1
+T: 0 2 : 87 : 99 : 0.9
+T: 0 3 : 87 : 87 : 0.1
+T: 0 3 : 87 : 99 : 0.9
+T: 1 0 : 87 : 86 : 0.09
+T: 1 0 : 87 : 87 : 0.01
+T: 1 0 : 87 : 90 : 0.81
+T: 1 0 : 87 : 91 : 0.09
+T: 1 1 : 87 : 84 : 0.09
+T: 1 1 : 87 : 87 : 0.01
+T: 1 1 : 87 : 88 : 0.81
+T: 1 1 : 87 : 91 : 0.09
+T: 1 2 : 87 : 87 : 0.1
+T: 1 2 : 87 : 91 : 0.9
+T: 1 3 : 87 : 87 : 0.1
+T: 1 3 : 87 : 91 : 0.9
+T: 2 0 : 87 : 86 : 0.9
+T: 2 0 : 87 : 87 : 0.1
+T: 2 1 : 87 : 84 : 0.9
+T: 2 1 : 87 : 87 : 0.1
+T: 2 2 : 87 : 87 : 1.0
+T: 2 3 : 87 : 87 : 1.0
+T: 3 0 : 87 : 86 : 0.9
+T: 3 0 : 87 : 87 : 0.1
+T: 3 1 : 87 : 84 : 0.9
+T: 3 1 : 87 : 87 : 0.1
+T: 3 2 : 87 : 87 : 1.0
+T: 3 3 : 87 : 87 : 1.0
+T: 0 0 : 88 : 84 : 0.09
+T: 0 0 : 88 : 87 : 0.81
+T: 0 0 : 88 : 88 : 0.01
+T: 0 0 : 88 : 91 : 0.09
+T: 0 1 : 88 : 84 : 0.09
+T: 0 1 : 88 : 85 : 0.81
+T: 0 1 : 88 : 88 : 0.01
+T: 0 1 : 88 : 89 : 0.09
+T: 0 2 : 88 : 1 : 0.9
+T: 0 2 : 88 : 84 : 0.09
+T: 0 2 : 88 : 88 : 0.01
+T: 0 3 : 88 : 84 : 0.9
+T: 0 3 : 88 : 88 : 0.1
+T: 1 0 : 88 : 88 : 0.01
+T: 1 0 : 88 : 91 : 0.09
+T: 1 0 : 88 : 92 : 0.09
+T: 1 0 : 88 : 95 : 0.81
+T: 1 1 : 88 : 88 : 0.01
+T: 1 1 : 88 : 89 : 0.09
+T: 1 1 : 88 : 92 : 0.09
+T: 1 1 : 88 : 93 : 0.81
+T: 1 2 : 88 : 1 : 0.9
+T: 1 2 : 88 : 88 : 0.01
+T: 1 2 : 88 : 92 : 0.09
+T: 1 3 : 88 : 88 : 0.1
+T: 1 3 : 88 : 92 : 0.9
+T: 2 0 : 88 : 88 : 0.1
+T: 2 0 : 88 : 91 : 0.9
+T: 2 1 : 88 : 88 : 0.1
+T: 2 1 : 88 : 89 : 0.9
+T: 2 2 : 88 : 1 : 0.9
+T: 2 2 : 88 : 88 : 0.1
+T: 2 3 : 88 : 88 : 1.0
+T: 3 0 : 88 : 88 : 0.1
+T: 3 0 : 88 : 91 : 0.9
+T: 3 1 : 88 : 88 : 0.1
+T: 3 1 : 88 : 89 : 0.9
+T: 3 2 : 88 : 1 : 0.9
+T: 3 2 : 88 : 88 : 0.1
+T: 3 3 : 88 : 88 : 1.0
+T: 0 0 : 89 : 84 : 0.81
+T: 0 0 : 89 : 85 : 0.09
+T: 0 0 : 89 : 88 : 0.09
+T: 0 0 : 89 : 89 : 0.01
+T: 0 1 : 89 : 85 : 0.09
+T: 0 1 : 89 : 86 : 0.81
+T: 0 1 : 89 : 89 : 0.01
+T: 0 1 : 89 : 90 : 0.09
+T: 0 2 : 89 : 85 : 0.9
+T: 0 2 : 89 : 89 : 0.1
+T: 0 3 : 89 : 85 : 0.9
+T: 0 3 : 89 : 89 : 0.1
+T: 1 0 : 89 : 88 : 0.09
+T: 1 0 : 89 : 89 : 0.01
+T: 1 0 : 89 : 92 : 0.81
+T: 1 0 : 89 : 93 : 0.09
+T: 1 1 : 89 : 89 : 0.01
+T: 1 1 : 89 : 90 : 0.09
+T: 1 1 : 89 : 93 : 0.09
+T: 1 1 : 89 : 94 : 0.81
+T: 1 2 : 89 : 89 : 0.1
+T: 1 2 : 89 : 93 : 0.9
+T: 1 3 : 89 : 89 : 0.1
+T: 1 3 : 89 : 93 : 0.9
+T: 2 0 : 89 : 88 : 0.9
+T: 2 0 : 89 : 89 : 0.1
+T: 2 1 : 89 : 89 : 0.1
+T: 2 1 : 89 : 90 : 0.9
+T: 2 2 : 89 : 89 : 1.0
+T: 2 3 : 89 : 89 : 1.0
+T: 3 0 : 89 : 88 : 0.9
+T: 3 0 : 89 : 89 : 0.1
+T: 3 1 : 89 : 89 : 0.1
+T: 3 1 : 89 : 90 : 0.9
+T: 3 2 : 89 : 89 : 1.0
+T: 3 3 : 89 : 89 : 1.0
+T: 0 0 : 90 : 85 : 0.81
+T: 0 0 : 90 : 86 : 0.09
+T: 0 0 : 90 : 89 : 0.09
+T: 0 0 : 90 : 90 : 0.01
+T: 0 1 : 90 : 86 : 0.09
+T: 0 1 : 90 : 87 : 0.81
+T: 0 1 : 90 : 90 : 0.01
+T: 0 1 : 90 : 91 : 0.09
+T: 0 2 : 90 : 86 : 0.9
+T: 0 2 : 90 : 90 : 0.1
+T: 0 3 : 90 : 86 : 0.9
+T: 0 3 : 90 : 90 : 0.1
+T: 1 0 : 90 : 89 : 0.09
+T: 1 0 : 90 : 90 : 0.01
+T: 1 0 : 90 : 93 : 0.81
+T: 1 0 : 90 : 94 : 0.09
+T: 1 1 : 90 : 90 : 0.01
+T: 1 1 : 90 : 91 : 0.09
+T: 1 1 : 90 : 94 : 0.09
+T: 1 1 : 90 : 95 : 0.81
+T: 1 2 : 90 : 90 : 0.1
+T: 1 2 : 90 : 94 : 0.9
+T: 1 3 : 90 : 90 : 0.1
+T: 1 3 : 90 : 94 : 0.9
+T: 2 0 : 90 : 89 : 0.9
+T: 2 0 : 90 : 90 : 0.1
+T: 2 1 : 90 : 90 : 0.1
+T: 2 1 : 90 : 91 : 0.9
+T: 2 2 : 90 : 90 : 1.0
+T: 2 3 : 90 : 90 : 1.0
+T: 3 0 : 90 : 89 : 0.9
+T: 3 0 : 90 : 90 : 0.1
+T: 3 1 : 90 : 90 : 0.1
+T: 3 1 : 90 : 91 : 0.9
+T: 3 2 : 90 : 90 : 1.0
+T: 3 3 : 90 : 90 : 1.0
+T: 0 0 : 91 : 86 : 0.81
+T: 0 0 : 91 : 87 : 0.09
+T: 0 0 : 91 : 90 : 0.09
+T: 0 0 : 91 : 91 : 0.01
+T: 0 1 : 91 : 84 : 0.81
+T: 0 1 : 91 : 87 : 0.09
+T: 0 1 : 91 : 88 : 0.09
+T: 0 1 : 91 : 91 : 0.01
+T: 0 2 : 91 : 87 : 0.9
+T: 0 2 : 91 : 91 : 0.1
+T: 0 3 : 91 : 87 : 0.9
+T: 0 3 : 91 : 91 : 0.1
+T: 1 0 : 91 : 90 : 0.09
+T: 1 0 : 91 : 91 : 0.01
+T: 1 0 : 91 : 94 : 0.81
+T: 1 0 : 91 : 95 : 0.09
+T: 1 1 : 91 : 88 : 0.09
+T: 1 1 : 91 : 91 : 0.01
+T: 1 1 : 91 : 92 : 0.81
+T: 1 1 : 91 : 95 : 0.09
+T: 1 2 : 91 : 91 : 0.1
+T: 1 2 : 91 : 95 : 0.9
+T: 1 3 : 91 : 91 : 0.1
+T: 1 3 : 91 : 95 : 0.9
+T: 2 0 : 91 : 90 : 0.9
+T: 2 0 : 91 : 91 : 0.1
+T: 2 1 : 91 : 88 : 0.9
+T: 2 1 : 91 : 91 : 0.1
+T: 2 2 : 91 : 91 : 1.0
+T: 2 3 : 91 : 91 : 1.0
+T: 3 0 : 91 : 90 : 0.9
+T: 3 0 : 91 : 91 : 0.1
+T: 3 1 : 91 : 88 : 0.9
+T: 3 1 : 91 : 91 : 0.1
+T: 3 2 : 91 : 91 : 1.0
+T: 3 3 : 91 : 91 : 1.0
+T: 0 0 : 92 : 88 : 0.09
+T: 0 0 : 92 : 91 : 0.81
+T: 0 0 : 92 : 92 : 0.01
+T: 0 0 : 92 : 95 : 0.09
+T: 0 1 : 92 : 88 : 0.09
+T: 0 1 : 92 : 89 : 0.81
+T: 0 1 : 92 : 92 : 0.01
+T: 0 1 : 92 : 93 : 0.09
+T: 0 2 : 92 : 1 : 0.9
+T: 0 2 : 92 : 88 : 0.09
+T: 0 2 : 92 : 92 : 0.01
+T: 0 3 : 92 : 88 : 0.9
+T: 0 3 : 92 : 92 : 0.1
+T: 1 0 : 92 : 92 : 0.01
+T: 1 0 : 92 : 95 : 0.09
+T: 1 0 : 92 : 96 : 0.09
+T: 1 0 : 92 : 99 : 0.81
+T: 1 1 : 92 : 92 : 0.01
+T: 1 1 : 92 : 93 : 0.09
+T: 1 1 : 92 : 96 : 0.09
+T: 1 1 : 92 : 97 : 0.81
+T: 1 2 : 92 : 1 : 0.9
+T: 1 2 : 92 : 92 : 0.01
+T: 1 2 : 92 : 96 : 0.09
+T: 1 3 : 92 : 92 : 0.1
+T: 1 3 : 92 : 96 : 0.9
+T: 2 0 : 92 : 92 : 0.1
+T: 2 0 : 92 : 95 : 0.9
+T: 2 1 : 92 : 92 : 0.1
+T: 2 1 : 92 : 93 : 0.9
+T: 2 2 : 92 : 1 : 0.9
+T: 2 2 : 92 : 92 : 0.1
+T: 2 3 : 92 : 92 : 1.0
+T: 3 0 : 92 : 92 : 0.1
+T: 3 0 : 92 : 95 : 0.9
+T: 3 1 : 92 : 92 : 0.1
+T: 3 1 : 92 : 93 : 0.9
+T: 3 2 : 92 : 1 : 0.9
+T: 3 2 : 92 : 92 : 0.1
+T: 3 3 : 92 : 92 : 1.0
+T: 0 0 : 93 : 88 : 0.81
+T: 0 0 : 93 : 89 : 0.09
+T: 0 0 : 93 : 92 : 0.09
+T: 0 0 : 93 : 93 : 0.01
+T: 0 1 : 93 : 89 : 0.09
+T: 0 1 : 93 : 90 : 0.81
+T: 0 1 : 93 : 93 : 0.01
+T: 0 1 : 93 : 94 : 0.09
+T: 0 2 : 93 : 89 : 0.9
+T: 0 2 : 93 : 93 : 0.1
+T: 0 3 : 93 : 89 : 0.9
+T: 0 3 : 93 : 93 : 0.1
+T: 1 0 : 93 : 92 : 0.09
+T: 1 0 : 93 : 93 : 0.01
+T: 1 0 : 93 : 96 : 0.81
+T: 1 0 : 93 : 97 : 0.09
+T: 1 1 : 93 : 93 : 0.01
+T: 1 1 : 93 : 94 : 0.09
+T: 1 1 : 93 : 97 : 0.09
+T: 1 1 : 93 : 98 : 0.81
+T: 1 2 : 93 : 93 : 0.1
+T: 1 2 : 93 : 97 : 0.9
+T: 1 3 : 93 : 93 : 0.1
+T: 1 3 : 93 : 97 : 0.9
+T: 2 0 : 93 : 92 : 0.9
+T: 2 0 : 93 : 93 : 0.1
+T: 2 1 : 93 : 93 : 0.1
+T: 2 1 : 93 : 94 : 0.9
+T: 2 2 : 93 : 93 : 1.0
+T: 2 3 : 93 : 93 : 1.0
+T: 3 0 : 93 : 92 : 0.9
+T: 3 0 : 93 : 93 : 0.1
+T: 3 1 : 93 : 93 : 0.1
+T: 3 1 : 93 : 94 : 0.9
+T: 3 2 : 93 : 93 : 1.0
+T: 3 3 : 93 : 93 : 1.0
+T: 0 0 : 94 : 89 : 0.81
+T: 0 0 : 94 : 90 : 0.09
+T: 0 0 : 94 : 93 : 0.09
+T: 0 0 : 94 : 94 : 0.01
+T: 0 1 : 94 : 90 : 0.09
+T: 0 1 : 94 : 91 : 0.81
+T: 0 1 : 94 : 94 : 0.01
+T: 0 1 : 94 : 95 : 0.09
+T: 0 2 : 94 : 90 : 0.9
+T: 0 2 : 94 : 94 : 0.1
+T: 0 3 : 94 : 90 : 0.9
+T: 0 3 : 94 : 94 : 0.1
+T: 1 0 : 94 : 93 : 0.09
+T: 1 0 : 94 : 94 : 0.01
+T: 1 0 : 94 : 97 : 0.81
+T: 1 0 : 94 : 98 : 0.09
+T: 1 1 : 94 : 94 : 0.01
+T: 1 1 : 94 : 95 : 0.09
+T: 1 1 : 94 : 98 : 0.09
+T: 1 1 : 94 : 99 : 0.81
+T: 1 2 : 94 : 94 : 0.1
+T: 1 2 : 94 : 98 : 0.9
+T: 1 3 : 94 : 94 : 0.1
+T: 1 3 : 94 : 98 : 0.9
+T: 2 0 : 94 : 93 : 0.9
+T: 2 0 : 94 : 94 : 0.1
+T: 2 1 : 94 : 94 : 0.1
+T: 2 1 : 94 : 95 : 0.9
+T: 2 2 : 94 : 94 : 1.0
+T: 2 3 : 94 : 94 : 1.0
+T: 3 0 : 94 : 93 : 0.9
+T: 3 0 : 94 : 94 : 0.1
+T: 3 1 : 94 : 94 : 0.1
+T: 3 1 : 94 : 95 : 0.9
+T: 3 2 : 94 : 94 : 1.0
+T: 3 3 : 94 : 94 : 1.0
+T: 0 0 : 95 : 90 : 0.81
+T: 0 0 : 95 : 91 : 0.09
+T: 0 0 : 95 : 94 : 0.09
+T: 0 0 : 95 : 95 : 0.01
+T: 0 1 : 95 : 88 : 0.81
+T: 0 1 : 95 : 91 : 0.09
+T: 0 1 : 95 : 92 : 0.09
+T: 0 1 : 95 : 95 : 0.01
+T: 0 2 : 95 : 91 : 0.9
+T: 0 2 : 95 : 95 : 0.1
+T: 0 3 : 95 : 91 : 0.9
+T: 0 3 : 95 : 95 : 0.1
+T: 1 0 : 95 : 94 : 0.09
+T: 1 0 : 95 : 95 : 0.01
+T: 1 0 : 95 : 98 : 0.81
+T: 1 0 : 95 : 99 : 0.09
+T: 1 1 : 95 : 92 : 0.09
+T: 1 1 : 95 : 95 : 0.01
+T: 1 1 : 95 : 96 : 0.81
+T: 1 1 : 95 : 99 : 0.09
+T: 1 2 : 95 : 95 : 0.1
+T: 1 2 : 95 : 99 : 0.9
+T: 1 3 : 95 : 95 : 0.1
+T: 1 3 : 95 : 99 : 0.9
+T: 2 0 : 95 : 94 : 0.9
+T: 2 0 : 95 : 95 : 0.1
+T: 2 1 : 95 : 92 : 0.9
+T: 2 1 : 95 : 95 : 0.1
+T: 2 2 : 95 : 95 : 1.0
+T: 2 3 : 95 : 95 : 1.0
+T: 3 0 : 95 : 94 : 0.9
+T: 3 0 : 95 : 95 : 0.1
+T: 3 1 : 95 : 92 : 0.9
+T: 3 1 : 95 : 95 : 0.1
+T: 3 2 : 95 : 95 : 1.0
+T: 3 3 : 95 : 95 : 1.0
+T: 0 0 : 96 : 92 : 0.09
+T: 0 0 : 96 : 95 : 0.81
+T: 0 0 : 96 : 96 : 0.01
+T: 0 0 : 96 : 99 : 0.09
+T: 0 1 : 96 : 92 : 0.09
+T: 0 1 : 96 : 93 : 0.81
+T: 0 1 : 96 : 96 : 0.01
+T: 0 1 : 96 : 97 : 0.09
+T: 0 2 : 96 : 1 : 0.9
+T: 0 2 : 96 : 92 : 0.09
+T: 0 2 : 96 : 96 : 0.01
+T: 0 3 : 96 : 92 : 0.9
+T: 0 3 : 96 : 96 : 0.1
+T: 1 0 : 96 : 84 : 0.09
+T: 1 0 : 96 : 87 : 0.81
+T: 1 0 : 96 : 96 : 0.01
+T: 1 0 : 96 : 99 : 0.09
+T: 1 1 : 96 : 84 : 0.09
+T: 1 1 : 96 : 85 : 0.81
+T: 1 1 : 96 : 96 : 0.01
+T: 1 1 : 96 : 97 : 0.09
+T: 1 2 : 96 : 1 : 0.9
+T: 1 2 : 96 : 84 : 0.09
+T: 1 2 : 96 : 96 : 0.01
+T: 1 3 : 96 : 84 : 0.9
+T: 1 3 : 96 : 96 : 0.1
+T: 2 0 : 96 : 80 : 0.09
+T: 2 0 : 96 : 83 : 0.81
+T: 2 0 : 96 : 96 : 0.01
+T: 2 0 : 96 : 99 : 0.09
+T: 2 1 : 96 : 80 : 0.09
+T: 2 1 : 96 : 81 : 0.81
+T: 2 1 : 96 : 96 : 0.01
+T: 2 1 : 96 : 97 : 0.09
+T: 2 2 : 96 : 1 : 0.9
+T: 2 2 : 96 : 80 : 0.09
+T: 2 2 : 96 : 96 : 0.01
+T: 2 3 : 96 : 80 : 0.9
+T: 2 3 : 96 : 96 : 0.1
+T: 3 0 : 96 : 96 : 0.1
+T: 3 0 : 96 : 99 : 0.9
+T: 3 1 : 96 : 96 : 0.1
+T: 3 1 : 96 : 97 : 0.9
+T: 3 2 : 96 : 1 : 0.9
+T: 3 2 : 96 : 96 : 0.1
+T: 3 3 : 96 : 96 : 1.0
+T: 0 0 : 97 : 92 : 0.81
+T: 0 0 : 97 : 93 : 0.09
+T: 0 0 : 97 : 96 : 0.09
+T: 0 0 : 97 : 97 : 0.01
+T: 0 1 : 97 : 93 : 0.09
+T: 0 1 : 97 : 94 : 0.81
+T: 0 1 : 97 : 97 : 0.01
+T: 0 1 : 97 : 98 : 0.09
+T: 0 2 : 97 : 93 : 0.9
+T: 0 2 : 97 : 97 : 0.1
+T: 0 3 : 97 : 93 : 0.9
+T: 0 3 : 97 : 97 : 0.1
+T: 1 0 : 97 : 84 : 0.81
+T: 1 0 : 97 : 85 : 0.09
+T: 1 0 : 97 : 96 : 0.09
+T: 1 0 : 97 : 97 : 0.01
+T: 1 1 : 97 : 85 : 0.09
+T: 1 1 : 97 : 86 : 0.81
+T: 1 1 : 97 : 97 : 0.01
+T: 1 1 : 97 : 98 : 0.09
+T: 1 2 : 97 : 85 : 0.9
+T: 1 2 : 97 : 97 : 0.1
+T: 1 3 : 97 : 85 : 0.9
+T: 1 3 : 97 : 97 : 0.1
+T: 2 0 : 97 : 80 : 0.81
+T: 2 0 : 97 : 81 : 0.09
+T: 2 0 : 97 : 96 : 0.09
+T: 2 0 : 97 : 97 : 0.01
+T: 2 1 : 97 : 81 : 0.09
+T: 2 1 : 97 : 82 : 0.81
+T: 2 1 : 97 : 97 : 0.01
+T: 2 1 : 97 : 98 : 0.09
+T: 2 2 : 97 : 81 : 0.9
+T: 2 2 : 97 : 97 : 0.1
+T: 2 3 : 97 : 81 : 0.9
+T: 2 3 : 97 : 97 : 0.1
+T: 3 0 : 97 : 96 : 0.9
+T: 3 0 : 97 : 97 : 0.1
+T: 3 1 : 97 : 97 : 0.1
+T: 3 1 : 97 : 98 : 0.9
+T: 3 2 : 97 : 97 : 1.0
+T: 3 3 : 97 : 97 : 1.0
+T: 0 0 : 98 : 93 : 0.81
+T: 0 0 : 98 : 94 : 0.09
+T: 0 0 : 98 : 97 : 0.09
+T: 0 0 : 98 : 98 : 0.01
+T: 0 1 : 98 : 94 : 0.09
+T: 0 1 : 98 : 95 : 0.81
+T: 0 1 : 98 : 98 : 0.01
+T: 0 1 : 98 : 99 : 0.09
+T: 0 2 : 98 : 94 : 0.9
+T: 0 2 : 98 : 98 : 0.1
+T: 0 3 : 98 : 94 : 0.9
+T: 0 3 : 98 : 98 : 0.1
+T: 1 0 : 98 : 85 : 0.81
+T: 1 0 : 98 : 86 : 0.09
+T: 1 0 : 98 : 97 : 0.09
+T: 1 0 : 98 : 98 : 0.01
+T: 1 1 : 98 : 86 : 0.09
+T: 1 1 : 98 : 87 : 0.81
+T: 1 1 : 98 : 98 : 0.01
+T: 1 1 : 98 : 99 : 0.09
+T: 1 2 : 98 : 86 : 0.9
+T: 1 2 : 98 : 98 : 0.1
+T: 1 3 : 98 : 86 : 0.9
+T: 1 3 : 98 : 98 : 0.1
+T: 2 0 : 98 : 81 : 0.81
+T: 2 0 : 98 : 82 : 0.09
+T: 2 0 : 98 : 97 : 0.09
+T: 2 0 : 98 : 98 : 0.01
+T: 2 1 : 98 : 82 : 0.09
+T: 2 1 : 98 : 83 : 0.81
+T: 2 1 : 98 : 98 : 0.01
+T: 2 1 : 98 : 99 : 0.09
+T: 2 2 : 98 : 82 : 0.9
+T: 2 2 : 98 : 98 : 0.1
+T: 2 3 : 98 : 82 : 0.9
+T: 2 3 : 98 : 98 : 0.1
+T: 3 0 : 98 : 97 : 0.9
+T: 3 0 : 98 : 98 : 0.1
+T: 3 1 : 98 : 98 : 0.1
+T: 3 1 : 98 : 99 : 0.9
+T: 3 2 : 98 : 98 : 1.0
+T: 3 3 : 98 : 98 : 1.0
+T: 0 0 : 99 : 94 : 0.81
+T: 0 0 : 99 : 95 : 0.09
+T: 0 0 : 99 : 98 : 0.09
+T: 0 0 : 99 : 99 : 0.01
+T: 0 1 : 99 : 92 : 0.81
+T: 0 1 : 99 : 95 : 0.09
+T: 0 1 : 99 : 96 : 0.09
+T: 0 1 : 99 : 99 : 0.01
+T: 0 2 : 99 : 95 : 0.9
+T: 0 2 : 99 : 99 : 0.1
+T: 0 3 : 99 : 95 : 0.9
+T: 0 3 : 99 : 99 : 0.1
+T: 1 0 : 99 : 86 : 0.81
+T: 1 0 : 99 : 87 : 0.09
+T: 1 0 : 99 : 98 : 0.09
+T: 1 0 : 99 : 99 : 0.01
+T: 1 1 : 99 : 84 : 0.81
+T: 1 1 : 99 : 87 : 0.09
+T: 1 1 : 99 : 96 : 0.09
+T: 1 1 : 99 : 99 : 0.01
+T: 1 2 : 99 : 87 : 0.9
+T: 1 2 : 99 : 99 : 0.1
+T: 1 3 : 99 : 87 : 0.9
+T: 1 3 : 99 : 99 : 0.1
+T: 2 0 : 99 : 82 : 0.81
+T: 2 0 : 99 : 83 : 0.09
+T: 2 0 : 99 : 98 : 0.09
+T: 2 0 : 99 : 99 : 0.01
+T: 2 1 : 99 : 80 : 0.81
+T: 2 1 : 99 : 83 : 0.09
+T: 2 1 : 99 : 96 : 0.09
+T: 2 1 : 99 : 99 : 0.01
+T: 2 2 : 99 : 83 : 0.9
+T: 2 2 : 99 : 99 : 0.1
+T: 2 3 : 99 : 83 : 0.9
+T: 2 3 : 99 : 99 : 0.1
+T: 3 0 : 99 : 98 : 0.9
+T: 3 0 : 99 : 99 : 0.1
+T: 3 1 : 99 : 96 : 0.9
+T: 3 1 : 99 : 99 : 0.1
+T: 3 2 : 99 : 99 : 1.0
+T: 3 3 : 99 : 99 : 1.0
+O: 0 0 : 0 : 0 0 : 1.0
+O: 0 1 : 0 : 0 0 : 1.0
+O: 0 2 : 0 : 0 0 : 1.0
+O: 0 3 : 0 : 0 0 : 1.0
+O: 1 0 : 0 : 0 0 : 1.0
+O: 1 1 : 0 : 0 0 : 1.0
+O: 1 2 : 0 : 0 0 : 1.0
+O: 1 3 : 0 : 0 0 : 1.0
+O: 2 0 : 0 : 0 0 : 1.0
+O: 2 1 : 0 : 0 0 : 1.0
+O: 2 2 : 0 : 0 0 : 1.0
+O: 2 3 : 0 : 0 0 : 1.0
+O: 3 0 : 0 : 0 0 : 1.0
+O: 3 1 : 0 : 0 0 : 1.0
+O: 3 2 : 0 : 0 0 : 1.0
+O: 3 3 : 0 : 0 0 : 1.0
+O: 0 0 : 1 : 0 0 : 1.0
+O: 0 1 : 1 : 0 0 : 1.0
+O: 0 2 : 1 : 0 0 : 1.0
+O: 0 3 : 1 : 0 0 : 1.0
+O: 1 0 : 1 : 0 0 : 1.0
+O: 1 1 : 1 : 0 0 : 1.0
+O: 1 2 : 1 : 0 0 : 1.0
+O: 1 3 : 1 : 0 0 : 1.0
+O: 2 0 : 1 : 0 0 : 1.0
+O: 2 1 : 1 : 0 0 : 1.0
+O: 2 2 : 1 : 0 0 : 1.0
+O: 2 3 : 1 : 0 0 : 1.0
+O: 3 0 : 1 : 0 0 : 1.0
+O: 3 1 : 1 : 0 0 : 1.0
+O: 3 2 : 1 : 0 0 : 1.0
+O: 3 3 : 1 : 0 0 : 1.0
+O: 0 0 : 2 : 0 0 : 1.0
+O: 0 1 : 2 : 0 0 : 1.0
+O: 0 2 : 2 : 0 0 : 1.0
+O: 0 3 : 2 : 0 0 : 1.0
+O: 1 0 : 2 : 0 0 : 1.0
+O: 1 1 : 2 : 0 0 : 1.0
+O: 1 2 : 2 : 0 0 : 1.0
+O: 1 3 : 2 : 0 0 : 1.0
+O: 2 0 : 2 : 0 0 : 1.0
+O: 2 1 : 2 : 0 0 : 1.0
+O: 2 2 : 2 : 0 0 : 1.0
+O: 2 3 : 2 : 0 0 : 1.0
+O: 3 0 : 2 : 0 0 : 1.0
+O: 3 1 : 2 : 0 0 : 1.0
+O: 3 2 : 2 : 0 0 : 1.0
+O: 3 3 : 2 : 0 0 : 1.0
+O: 0 0 : 3 : 0 0 : 1.0
+O: 0 1 : 3 : 0 0 : 1.0
+O: 0 2 : 3 : 0 0 : 1.0
+O: 0 3 : 3 : 0 0 : 1.0
+O: 1 0 : 3 : 0 0 : 1.0
+O: 1 1 : 3 : 0 0 : 1.0
+O: 1 2 : 3 : 0 0 : 1.0
+O: 1 3 : 3 : 0 0 : 1.0
+O: 2 0 : 3 : 0 0 : 1.0
+O: 2 1 : 3 : 0 0 : 1.0
+O: 2 2 : 3 : 0 0 : 1.0
+O: 2 3 : 3 : 0 0 : 1.0
+O: 3 0 : 3 : 0 0 : 1.0
+O: 3 1 : 3 : 0 0 : 1.0
+O: 3 2 : 3 : 0 0 : 1.0
+O: 3 3 : 3 : 0 0 : 1.0
+O: 0 0 : 21 : 0 0 : 1.0
+O: 0 1 : 21 : 0 0 : 1.0
+O: 0 2 : 21 : 0 0 : 1.0
+O: 0 3 : 21 : 0 0 : 1.0
+O: 1 0 : 21 : 0 0 : 1.0
+O: 1 1 : 21 : 0 0 : 1.0
+O: 1 2 : 21 : 0 0 : 1.0
+O: 1 3 : 21 : 0 0 : 1.0
+O: 2 0 : 21 : 0 0 : 1.0
+O: 2 1 : 21 : 0 0 : 1.0
+O: 2 2 : 21 : 0 0 : 1.0
+O: 2 3 : 21 : 0 0 : 1.0
+O: 3 0 : 21 : 0 0 : 1.0
+O: 3 1 : 21 : 0 0 : 1.0
+O: 3 2 : 21 : 0 0 : 1.0
+O: 3 3 : 21 : 0 0 : 1.0
+O: 0 0 : 23 : 0 0 : 1.0
+O: 0 1 : 23 : 0 0 : 1.0
+O: 0 2 : 23 : 0 0 : 1.0
+O: 0 3 : 23 : 0 0 : 1.0
+O: 1 0 : 23 : 0 0 : 1.0
+O: 1 1 : 23 : 0 0 : 1.0
+O: 1 2 : 23 : 0 0 : 1.0
+O: 1 3 : 23 : 0 0 : 1.0
+O: 2 0 : 23 : 0 0 : 1.0
+O: 2 1 : 23 : 0 0 : 1.0
+O: 2 2 : 23 : 0 0 : 1.0
+O: 2 3 : 23 : 0 0 : 1.0
+O: 3 0 : 23 : 0 0 : 1.0
+O: 3 1 : 23 : 0 0 : 1.0
+O: 3 2 : 23 : 0 0 : 1.0
+O: 3 3 : 23 : 0 0 : 1.0
+O: 0 0 : 27 : 0 0 : 1.0
+O: 0 1 : 27 : 0 0 : 1.0
+O: 0 2 : 27 : 0 0 : 1.0
+O: 0 3 : 27 : 0 0 : 1.0
+O: 1 0 : 27 : 0 0 : 1.0
+O: 1 1 : 27 : 0 0 : 1.0
+O: 1 2 : 27 : 0 0 : 1.0
+O: 1 3 : 27 : 0 0 : 1.0
+O: 2 0 : 27 : 0 0 : 1.0
+O: 2 1 : 27 : 0 0 : 1.0
+O: 2 2 : 27 : 0 0 : 1.0
+O: 2 3 : 27 : 0 0 : 1.0
+O: 3 0 : 27 : 0 0 : 1.0
+O: 3 1 : 27 : 0 0 : 1.0
+O: 3 2 : 27 : 0 0 : 1.0
+O: 3 3 : 27 : 0 0 : 1.0
+O: 0 0 : 67 : 0 0 : 1.0
+O: 0 1 : 67 : 0 0 : 1.0
+O: 0 2 : 67 : 0 0 : 1.0
+O: 0 3 : 67 : 0 0 : 1.0
+O: 1 0 : 67 : 0 0 : 1.0
+O: 1 1 : 67 : 0 0 : 1.0
+O: 1 2 : 67 : 0 0 : 1.0
+O: 1 3 : 67 : 0 0 : 1.0
+O: 2 0 : 67 : 0 0 : 1.0
+O: 2 1 : 67 : 0 0 : 1.0
+O: 2 2 : 67 : 0 0 : 1.0
+O: 2 3 : 67 : 0 0 : 1.0
+O: 3 0 : 67 : 0 0 : 1.0
+O: 3 1 : 67 : 0 0 : 1.0
+O: 3 2 : 67 : 0 0 : 1.0
+O: 3 3 : 67 : 0 0 : 1.0
+O: 0 0 : 77 : 0 0 : 1.0
+O: 0 1 : 77 : 0 0 : 1.0
+O: 0 2 : 77 : 0 0 : 1.0
+O: 0 3 : 77 : 0 0 : 1.0
+O: 1 0 : 77 : 0 0 : 1.0
+O: 1 1 : 77 : 0 0 : 1.0
+O: 1 2 : 77 : 0 0 : 1.0
+O: 1 3 : 77 : 0 0 : 1.0
+O: 2 0 : 77 : 0 0 : 1.0
+O: 2 1 : 77 : 0 0 : 1.0
+O: 2 2 : 77 : 0 0 : 1.0
+O: 2 3 : 77 : 0 0 : 1.0
+O: 3 0 : 77 : 0 0 : 1.0
+O: 3 1 : 77 : 0 0 : 1.0
+O: 3 2 : 77 : 0 0 : 1.0
+O: 3 3 : 77 : 0 0 : 1.0
+O: 0 0 : 83 : 0 0 : 1.0
+O: 0 1 : 83 : 0 0 : 1.0
+O: 0 2 : 83 : 0 0 : 1.0
+O: 0 3 : 83 : 0 0 : 1.0
+O: 1 0 : 83 : 0 0 : 1.0
+O: 1 1 : 83 : 0 0 : 1.0
+O: 1 2 : 83 : 0 0 : 1.0
+O: 1 3 : 83 : 0 0 : 1.0
+O: 2 0 : 83 : 0 0 : 1.0
+O: 2 1 : 83 : 0 0 : 1.0
+O: 2 2 : 83 : 0 0 : 1.0
+O: 2 3 : 83 : 0 0 : 1.0
+O: 3 0 : 83 : 0 0 : 1.0
+O: 3 1 : 83 : 0 0 : 1.0
+O: 3 2 : 83 : 0 0 : 1.0
+O: 3 3 : 83 : 0 0 : 1.0
+O: 0 0 : 22 : 0 1 : 1.0
+O: 0 1 : 22 : 0 1 : 1.0
+O: 0 2 : 22 : 0 1 : 1.0
+O: 0 3 : 22 : 0 1 : 1.0
+O: 1 0 : 22 : 0 1 : 1.0
+O: 1 1 : 22 : 0 1 : 1.0
+O: 1 2 : 22 : 0 1 : 1.0
+O: 1 3 : 22 : 0 1 : 1.0
+O: 2 0 : 22 : 0 1 : 1.0
+O: 2 1 : 22 : 0 1 : 1.0
+O: 2 2 : 22 : 0 1 : 1.0
+O: 2 3 : 22 : 0 1 : 1.0
+O: 3 0 : 22 : 0 1 : 1.0
+O: 3 1 : 22 : 0 1 : 1.0
+O: 3 2 : 22 : 0 1 : 1.0
+O: 3 3 : 22 : 0 1 : 1.0
+O: 0 0 : 25 : 0 1 : 1.0
+O: 0 1 : 25 : 0 1 : 1.0
+O: 0 2 : 25 : 0 1 : 1.0
+O: 0 3 : 25 : 0 1 : 1.0
+O: 1 0 : 25 : 0 1 : 1.0
+O: 1 1 : 25 : 0 1 : 1.0
+O: 1 2 : 25 : 0 1 : 1.0
+O: 1 3 : 25 : 0 1 : 1.0
+O: 2 0 : 25 : 0 1 : 1.0
+O: 2 1 : 25 : 0 1 : 1.0
+O: 2 2 : 25 : 0 1 : 1.0
+O: 2 3 : 25 : 0 1 : 1.0
+O: 3 0 : 25 : 0 1 : 1.0
+O: 3 1 : 25 : 0 1 : 1.0
+O: 3 2 : 25 : 0 1 : 1.0
+O: 3 3 : 25 : 0 1 : 1.0
+O: 0 0 : 26 : 0 1 : 1.0
+O: 0 1 : 26 : 0 1 : 1.0
+O: 0 2 : 26 : 0 1 : 1.0
+O: 0 3 : 26 : 0 1 : 1.0
+O: 1 0 : 26 : 0 1 : 1.0
+O: 1 1 : 26 : 0 1 : 1.0
+O: 1 2 : 26 : 0 1 : 1.0
+O: 1 3 : 26 : 0 1 : 1.0
+O: 2 0 : 26 : 0 1 : 1.0
+O: 2 1 : 26 : 0 1 : 1.0
+O: 2 2 : 26 : 0 1 : 1.0
+O: 2 3 : 26 : 0 1 : 1.0
+O: 3 0 : 26 : 0 1 : 1.0
+O: 3 1 : 26 : 0 1 : 1.0
+O: 3 2 : 26 : 0 1 : 1.0
+O: 3 3 : 26 : 0 1 : 1.0
+O: 0 0 : 65 : 0 1 : 1.0
+O: 0 1 : 65 : 0 1 : 1.0
+O: 0 2 : 65 : 0 1 : 1.0
+O: 0 3 : 65 : 0 1 : 1.0
+O: 1 0 : 65 : 0 1 : 1.0
+O: 1 1 : 65 : 0 1 : 1.0
+O: 1 2 : 65 : 0 1 : 1.0
+O: 1 3 : 65 : 0 1 : 1.0
+O: 2 0 : 65 : 0 1 : 1.0
+O: 2 1 : 65 : 0 1 : 1.0
+O: 2 2 : 65 : 0 1 : 1.0
+O: 2 3 : 65 : 0 1 : 1.0
+O: 3 0 : 65 : 0 1 : 1.0
+O: 3 1 : 65 : 0 1 : 1.0
+O: 3 2 : 65 : 0 1 : 1.0
+O: 3 3 : 65 : 0 1 : 1.0
+O: 0 0 : 66 : 0 1 : 1.0
+O: 0 1 : 66 : 0 1 : 1.0
+O: 0 2 : 66 : 0 1 : 1.0
+O: 0 3 : 66 : 0 1 : 1.0
+O: 1 0 : 66 : 0 1 : 1.0
+O: 1 1 : 66 : 0 1 : 1.0
+O: 1 2 : 66 : 0 1 : 1.0
+O: 1 3 : 66 : 0 1 : 1.0
+O: 2 0 : 66 : 0 1 : 1.0
+O: 2 1 : 66 : 0 1 : 1.0
+O: 2 2 : 66 : 0 1 : 1.0
+O: 2 3 : 66 : 0 1 : 1.0
+O: 3 0 : 66 : 0 1 : 1.0
+O: 3 1 : 66 : 0 1 : 1.0
+O: 3 2 : 66 : 0 1 : 1.0
+O: 3 3 : 66 : 0 1 : 1.0
+O: 0 0 : 78 : 0 1 : 1.0
+O: 0 1 : 78 : 0 1 : 1.0
+O: 0 2 : 78 : 0 1 : 1.0
+O: 0 3 : 78 : 0 1 : 1.0
+O: 1 0 : 78 : 0 1 : 1.0
+O: 1 1 : 78 : 0 1 : 1.0
+O: 1 2 : 78 : 0 1 : 1.0
+O: 1 3 : 78 : 0 1 : 1.0
+O: 2 0 : 78 : 0 1 : 1.0
+O: 2 1 : 78 : 0 1 : 1.0
+O: 2 2 : 78 : 0 1 : 1.0
+O: 2 3 : 78 : 0 1 : 1.0
+O: 3 0 : 78 : 0 1 : 1.0
+O: 3 1 : 78 : 0 1 : 1.0
+O: 3 2 : 78 : 0 1 : 1.0
+O: 3 3 : 78 : 0 1 : 1.0
+O: 0 0 : 81 : 0 1 : 1.0
+O: 0 1 : 81 : 0 1 : 1.0
+O: 0 2 : 81 : 0 1 : 1.0
+O: 0 3 : 81 : 0 1 : 1.0
+O: 1 0 : 81 : 0 1 : 1.0
+O: 1 1 : 81 : 0 1 : 1.0
+O: 1 2 : 81 : 0 1 : 1.0
+O: 1 3 : 81 : 0 1 : 1.0
+O: 2 0 : 81 : 0 1 : 1.0
+O: 2 1 : 81 : 0 1 : 1.0
+O: 2 2 : 81 : 0 1 : 1.0
+O: 2 3 : 81 : 0 1 : 1.0
+O: 3 0 : 81 : 0 1 : 1.0
+O: 3 1 : 81 : 0 1 : 1.0
+O: 3 2 : 81 : 0 1 : 1.0
+O: 3 3 : 81 : 0 1 : 1.0
+O: 0 0 : 82 : 0 1 : 1.0
+O: 0 1 : 82 : 0 1 : 1.0
+O: 0 2 : 82 : 0 1 : 1.0
+O: 0 3 : 82 : 0 1 : 1.0
+O: 1 0 : 82 : 0 1 : 1.0
+O: 1 1 : 82 : 0 1 : 1.0
+O: 1 2 : 82 : 0 1 : 1.0
+O: 1 3 : 82 : 0 1 : 1.0
+O: 2 0 : 82 : 0 1 : 1.0
+O: 2 1 : 82 : 0 1 : 1.0
+O: 2 2 : 82 : 0 1 : 1.0
+O: 2 3 : 82 : 0 1 : 1.0
+O: 3 0 : 82 : 0 1 : 1.0
+O: 3 1 : 82 : 0 1 : 1.0
+O: 3 2 : 82 : 0 1 : 1.0
+O: 3 3 : 82 : 0 1 : 1.0
+O: 0 0 : 97 : 0 1 : 1.0
+O: 0 1 : 97 : 0 1 : 1.0
+O: 0 2 : 97 : 0 1 : 1.0
+O: 0 3 : 97 : 0 1 : 1.0
+O: 1 0 : 97 : 0 1 : 1.0
+O: 1 1 : 97 : 0 1 : 1.0
+O: 1 2 : 97 : 0 1 : 1.0
+O: 1 3 : 97 : 0 1 : 1.0
+O: 2 0 : 97 : 0 1 : 1.0
+O: 2 1 : 97 : 0 1 : 1.0
+O: 2 2 : 97 : 0 1 : 1.0
+O: 2 3 : 97 : 0 1 : 1.0
+O: 3 0 : 97 : 0 1 : 1.0
+O: 3 1 : 97 : 0 1 : 1.0
+O: 3 2 : 97 : 0 1 : 1.0
+O: 3 3 : 97 : 0 1 : 1.0
+O: 0 0 : 98 : 0 1 : 1.0
+O: 0 1 : 98 : 0 1 : 1.0
+O: 0 2 : 98 : 0 1 : 1.0
+O: 0 3 : 98 : 0 1 : 1.0
+O: 1 0 : 98 : 0 1 : 1.0
+O: 1 1 : 98 : 0 1 : 1.0
+O: 1 2 : 98 : 0 1 : 1.0
+O: 1 3 : 98 : 0 1 : 1.0
+O: 2 0 : 98 : 0 1 : 1.0
+O: 2 1 : 98 : 0 1 : 1.0
+O: 2 2 : 98 : 0 1 : 1.0
+O: 2 3 : 98 : 0 1 : 1.0
+O: 3 0 : 98 : 0 1 : 1.0
+O: 3 1 : 98 : 0 1 : 1.0
+O: 3 2 : 98 : 0 1 : 1.0
+O: 3 3 : 98 : 0 1 : 1.0
+O: 0 0 : 79 : 0 2 : 1.0
+O: 0 1 : 79 : 0 2 : 1.0
+O: 0 2 : 79 : 0 2 : 1.0
+O: 0 3 : 79 : 0 2 : 1.0
+O: 1 0 : 79 : 0 2 : 1.0
+O: 1 1 : 79 : 0 2 : 1.0
+O: 1 2 : 79 : 0 2 : 1.0
+O: 1 3 : 79 : 0 2 : 1.0
+O: 2 0 : 79 : 0 2 : 1.0
+O: 2 1 : 79 : 0 2 : 1.0
+O: 2 2 : 79 : 0 2 : 1.0
+O: 2 3 : 79 : 0 2 : 1.0
+O: 3 0 : 79 : 0 2 : 1.0
+O: 3 1 : 79 : 0 2 : 1.0
+O: 3 2 : 79 : 0 2 : 1.0
+O: 3 3 : 79 : 0 2 : 1.0
+O: 0 0 : 99 : 0 2 : 1.0
+O: 0 1 : 99 : 0 2 : 1.0
+O: 0 2 : 99 : 0 2 : 1.0
+O: 0 3 : 99 : 0 2 : 1.0
+O: 1 0 : 99 : 0 2 : 1.0
+O: 1 1 : 99 : 0 2 : 1.0
+O: 1 2 : 99 : 0 2 : 1.0
+O: 1 3 : 99 : 0 2 : 1.0
+O: 2 0 : 99 : 0 2 : 1.0
+O: 2 1 : 99 : 0 2 : 1.0
+O: 2 2 : 99 : 0 2 : 1.0
+O: 2 3 : 99 : 0 2 : 1.0
+O: 3 0 : 99 : 0 2 : 1.0
+O: 3 1 : 99 : 0 2 : 1.0
+O: 3 2 : 99 : 0 2 : 1.0
+O: 3 3 : 99 : 0 2 : 1.0
+O: 0 0 : 24 : 0 3 : 1.0
+O: 0 1 : 24 : 0 3 : 1.0
+O: 0 2 : 24 : 0 3 : 1.0
+O: 0 3 : 24 : 0 3 : 1.0
+O: 1 0 : 24 : 0 3 : 1.0
+O: 1 1 : 24 : 0 3 : 1.0
+O: 1 2 : 24 : 0 3 : 1.0
+O: 1 3 : 24 : 0 3 : 1.0
+O: 2 0 : 24 : 0 3 : 1.0
+O: 2 1 : 24 : 0 3 : 1.0
+O: 2 2 : 24 : 0 3 : 1.0
+O: 2 3 : 24 : 0 3 : 1.0
+O: 3 0 : 24 : 0 3 : 1.0
+O: 3 1 : 24 : 0 3 : 1.0
+O: 3 2 : 24 : 0 3 : 1.0
+O: 3 3 : 24 : 0 3 : 1.0
+O: 0 0 : 64 : 0 3 : 1.0
+O: 0 1 : 64 : 0 3 : 1.0
+O: 0 2 : 64 : 0 3 : 1.0
+O: 0 3 : 64 : 0 3 : 1.0
+O: 1 0 : 64 : 0 3 : 1.0
+O: 1 1 : 64 : 0 3 : 1.0
+O: 1 2 : 64 : 0 3 : 1.0
+O: 1 3 : 64 : 0 3 : 1.0
+O: 2 0 : 64 : 0 3 : 1.0
+O: 2 1 : 64 : 0 3 : 1.0
+O: 2 2 : 64 : 0 3 : 1.0
+O: 2 3 : 64 : 0 3 : 1.0
+O: 3 0 : 64 : 0 3 : 1.0
+O: 3 1 : 64 : 0 3 : 1.0
+O: 3 2 : 64 : 0 3 : 1.0
+O: 3 3 : 64 : 0 3 : 1.0
+O: 0 0 : 80 : 0 3 : 1.0
+O: 0 1 : 80 : 0 3 : 1.0
+O: 0 2 : 80 : 0 3 : 1.0
+O: 0 3 : 80 : 0 3 : 1.0
+O: 1 0 : 80 : 0 3 : 1.0
+O: 1 1 : 80 : 0 3 : 1.0
+O: 1 2 : 80 : 0 3 : 1.0
+O: 1 3 : 80 : 0 3 : 1.0
+O: 2 0 : 80 : 0 3 : 1.0
+O: 2 1 : 80 : 0 3 : 1.0
+O: 2 2 : 80 : 0 3 : 1.0
+O: 2 3 : 80 : 0 3 : 1.0
+O: 3 0 : 80 : 0 3 : 1.0
+O: 3 1 : 80 : 0 3 : 1.0
+O: 3 2 : 80 : 0 3 : 1.0
+O: 3 3 : 80 : 0 3 : 1.0
+O: 0 0 : 96 : 0 3 : 1.0
+O: 0 1 : 96 : 0 3 : 1.0
+O: 0 2 : 96 : 0 3 : 1.0
+O: 0 3 : 96 : 0 3 : 1.0
+O: 1 0 : 96 : 0 3 : 1.0
+O: 1 1 : 96 : 0 3 : 1.0
+O: 1 2 : 96 : 0 3 : 1.0
+O: 1 3 : 96 : 0 3 : 1.0
+O: 2 0 : 96 : 0 3 : 1.0
+O: 2 1 : 96 : 0 3 : 1.0
+O: 2 2 : 96 : 0 3 : 1.0
+O: 2 3 : 96 : 0 3 : 1.0
+O: 3 0 : 96 : 0 3 : 1.0
+O: 3 1 : 96 : 0 3 : 1.0
+O: 3 2 : 96 : 0 3 : 1.0
+O: 3 3 : 96 : 0 3 : 1.0
+O: 0 0 : 20 : 0 4 : 1.0
+O: 0 1 : 20 : 0 4 : 1.0
+O: 0 2 : 20 : 0 4 : 1.0
+O: 0 3 : 20 : 0 4 : 1.0
+O: 1 0 : 20 : 0 4 : 1.0
+O: 1 1 : 20 : 0 4 : 1.0
+O: 1 2 : 20 : 0 4 : 1.0
+O: 1 3 : 20 : 0 4 : 1.0
+O: 2 0 : 20 : 0 4 : 1.0
+O: 2 1 : 20 : 0 4 : 1.0
+O: 2 2 : 20 : 0 4 : 1.0
+O: 2 3 : 20 : 0 4 : 1.0
+O: 3 0 : 20 : 0 4 : 1.0
+O: 3 1 : 20 : 0 4 : 1.0
+O: 3 2 : 20 : 0 4 : 1.0
+O: 3 3 : 20 : 0 4 : 1.0
+O: 0 0 : 76 : 0 4 : 1.0
+O: 0 1 : 76 : 0 4 : 1.0
+O: 0 2 : 76 : 0 4 : 1.0
+O: 0 3 : 76 : 0 4 : 1.0
+O: 1 0 : 76 : 0 4 : 1.0
+O: 1 1 : 76 : 0 4 : 1.0
+O: 1 2 : 76 : 0 4 : 1.0
+O: 1 3 : 76 : 0 4 : 1.0
+O: 2 0 : 76 : 0 4 : 1.0
+O: 2 1 : 76 : 0 4 : 1.0
+O: 2 2 : 76 : 0 4 : 1.0
+O: 2 3 : 76 : 0 4 : 1.0
+O: 3 0 : 76 : 0 4 : 1.0
+O: 3 1 : 76 : 0 4 : 1.0
+O: 3 2 : 76 : 0 4 : 1.0
+O: 3 3 : 76 : 0 4 : 1.0
+O: 0 0 : 29 : 1 0 : 1.0
+O: 0 1 : 29 : 1 0 : 1.0
+O: 0 2 : 29 : 1 0 : 1.0
+O: 0 3 : 29 : 1 0 : 1.0
+O: 1 0 : 29 : 1 0 : 1.0
+O: 1 1 : 29 : 1 0 : 1.0
+O: 1 2 : 29 : 1 0 : 1.0
+O: 1 3 : 29 : 1 0 : 1.0
+O: 2 0 : 29 : 1 0 : 1.0
+O: 2 1 : 29 : 1 0 : 1.0
+O: 2 2 : 29 : 1 0 : 1.0
+O: 2 3 : 29 : 1 0 : 1.0
+O: 3 0 : 29 : 1 0 : 1.0
+O: 3 1 : 29 : 1 0 : 1.0
+O: 3 2 : 29 : 1 0 : 1.0
+O: 3 3 : 29 : 1 0 : 1.0
+O: 0 0 : 33 : 1 0 : 1.0
+O: 0 1 : 33 : 1 0 : 1.0
+O: 0 2 : 33 : 1 0 : 1.0
+O: 0 3 : 33 : 1 0 : 1.0
+O: 1 0 : 33 : 1 0 : 1.0
+O: 1 1 : 33 : 1 0 : 1.0
+O: 1 2 : 33 : 1 0 : 1.0
+O: 1 3 : 33 : 1 0 : 1.0
+O: 2 0 : 33 : 1 0 : 1.0
+O: 2 1 : 33 : 1 0 : 1.0
+O: 2 2 : 33 : 1 0 : 1.0
+O: 2 3 : 33 : 1 0 : 1.0
+O: 3 0 : 33 : 1 0 : 1.0
+O: 3 1 : 33 : 1 0 : 1.0
+O: 3 2 : 33 : 1 0 : 1.0
+O: 3 3 : 33 : 1 0 : 1.0
+O: 0 0 : 35 : 1 0 : 1.0
+O: 0 1 : 35 : 1 0 : 1.0
+O: 0 2 : 35 : 1 0 : 1.0
+O: 0 3 : 35 : 1 0 : 1.0
+O: 1 0 : 35 : 1 0 : 1.0
+O: 1 1 : 35 : 1 0 : 1.0
+O: 1 2 : 35 : 1 0 : 1.0
+O: 1 3 : 35 : 1 0 : 1.0
+O: 2 0 : 35 : 1 0 : 1.0
+O: 2 1 : 35 : 1 0 : 1.0
+O: 2 2 : 35 : 1 0 : 1.0
+O: 2 3 : 35 : 1 0 : 1.0
+O: 3 0 : 35 : 1 0 : 1.0
+O: 3 1 : 35 : 1 0 : 1.0
+O: 3 2 : 35 : 1 0 : 1.0
+O: 3 3 : 35 : 1 0 : 1.0
+O: 0 0 : 39 : 1 0 : 1.0
+O: 0 1 : 39 : 1 0 : 1.0
+O: 0 2 : 39 : 1 0 : 1.0
+O: 0 3 : 39 : 1 0 : 1.0
+O: 1 0 : 39 : 1 0 : 1.0
+O: 1 1 : 39 : 1 0 : 1.0
+O: 1 2 : 39 : 1 0 : 1.0
+O: 1 3 : 39 : 1 0 : 1.0
+O: 2 0 : 39 : 1 0 : 1.0
+O: 2 1 : 39 : 1 0 : 1.0
+O: 2 2 : 39 : 1 0 : 1.0
+O: 2 3 : 39 : 1 0 : 1.0
+O: 3 0 : 39 : 1 0 : 1.0
+O: 3 1 : 39 : 1 0 : 1.0
+O: 3 2 : 39 : 1 0 : 1.0
+O: 3 3 : 39 : 1 0 : 1.0
+O: 0 0 : 41 : 1 0 : 1.0
+O: 0 1 : 41 : 1 0 : 1.0
+O: 0 2 : 41 : 1 0 : 1.0
+O: 0 3 : 41 : 1 0 : 1.0
+O: 1 0 : 41 : 1 0 : 1.0
+O: 1 1 : 41 : 1 0 : 1.0
+O: 1 2 : 41 : 1 0 : 1.0
+O: 1 3 : 41 : 1 0 : 1.0
+O: 2 0 : 41 : 1 0 : 1.0
+O: 2 1 : 41 : 1 0 : 1.0
+O: 2 2 : 41 : 1 0 : 1.0
+O: 2 3 : 41 : 1 0 : 1.0
+O: 3 0 : 41 : 1 0 : 1.0
+O: 3 1 : 41 : 1 0 : 1.0
+O: 3 2 : 41 : 1 0 : 1.0
+O: 3 3 : 41 : 1 0 : 1.0
+O: 0 0 : 45 : 1 0 : 1.0
+O: 0 1 : 45 : 1 0 : 1.0
+O: 0 2 : 45 : 1 0 : 1.0
+O: 0 3 : 45 : 1 0 : 1.0
+O: 1 0 : 45 : 1 0 : 1.0
+O: 1 1 : 45 : 1 0 : 1.0
+O: 1 2 : 45 : 1 0 : 1.0
+O: 1 3 : 45 : 1 0 : 1.0
+O: 2 0 : 45 : 1 0 : 1.0
+O: 2 1 : 45 : 1 0 : 1.0
+O: 2 2 : 45 : 1 0 : 1.0
+O: 2 3 : 45 : 1 0 : 1.0
+O: 3 0 : 45 : 1 0 : 1.0
+O: 3 1 : 45 : 1 0 : 1.0
+O: 3 2 : 45 : 1 0 : 1.0
+O: 3 3 : 45 : 1 0 : 1.0
+O: 0 0 : 47 : 1 0 : 1.0
+O: 0 1 : 47 : 1 0 : 1.0
+O: 0 2 : 47 : 1 0 : 1.0
+O: 0 3 : 47 : 1 0 : 1.0
+O: 1 0 : 47 : 1 0 : 1.0
+O: 1 1 : 47 : 1 0 : 1.0
+O: 1 2 : 47 : 1 0 : 1.0
+O: 1 3 : 47 : 1 0 : 1.0
+O: 2 0 : 47 : 1 0 : 1.0
+O: 2 1 : 47 : 1 0 : 1.0
+O: 2 2 : 47 : 1 0 : 1.0
+O: 2 3 : 47 : 1 0 : 1.0
+O: 3 0 : 47 : 1 0 : 1.0
+O: 3 1 : 47 : 1 0 : 1.0
+O: 3 2 : 47 : 1 0 : 1.0
+O: 3 3 : 47 : 1 0 : 1.0
+O: 0 0 : 51 : 1 0 : 1.0
+O: 0 1 : 51 : 1 0 : 1.0
+O: 0 2 : 51 : 1 0 : 1.0
+O: 0 3 : 51 : 1 0 : 1.0
+O: 1 0 : 51 : 1 0 : 1.0
+O: 1 1 : 51 : 1 0 : 1.0
+O: 1 2 : 51 : 1 0 : 1.0
+O: 1 3 : 51 : 1 0 : 1.0
+O: 2 0 : 51 : 1 0 : 1.0
+O: 2 1 : 51 : 1 0 : 1.0
+O: 2 2 : 51 : 1 0 : 1.0
+O: 2 3 : 51 : 1 0 : 1.0
+O: 3 0 : 51 : 1 0 : 1.0
+O: 3 1 : 51 : 1 0 : 1.0
+O: 3 2 : 51 : 1 0 : 1.0
+O: 3 3 : 51 : 1 0 : 1.0
+O: 0 0 : 69 : 1 0 : 1.0
+O: 0 1 : 69 : 1 0 : 1.0
+O: 0 2 : 69 : 1 0 : 1.0
+O: 0 3 : 69 : 1 0 : 1.0
+O: 1 0 : 69 : 1 0 : 1.0
+O: 1 1 : 69 : 1 0 : 1.0
+O: 1 2 : 69 : 1 0 : 1.0
+O: 1 3 : 69 : 1 0 : 1.0
+O: 2 0 : 69 : 1 0 : 1.0
+O: 2 1 : 69 : 1 0 : 1.0
+O: 2 2 : 69 : 1 0 : 1.0
+O: 2 3 : 69 : 1 0 : 1.0
+O: 3 0 : 69 : 1 0 : 1.0
+O: 3 1 : 69 : 1 0 : 1.0
+O: 3 2 : 69 : 1 0 : 1.0
+O: 3 3 : 69 : 1 0 : 1.0
+O: 0 0 : 75 : 1 0 : 1.0
+O: 0 1 : 75 : 1 0 : 1.0
+O: 0 2 : 75 : 1 0 : 1.0
+O: 0 3 : 75 : 1 0 : 1.0
+O: 1 0 : 75 : 1 0 : 1.0
+O: 1 1 : 75 : 1 0 : 1.0
+O: 1 2 : 75 : 1 0 : 1.0
+O: 1 3 : 75 : 1 0 : 1.0
+O: 2 0 : 75 : 1 0 : 1.0
+O: 2 1 : 75 : 1 0 : 1.0
+O: 2 2 : 75 : 1 0 : 1.0
+O: 2 3 : 75 : 1 0 : 1.0
+O: 3 0 : 75 : 1 0 : 1.0
+O: 3 1 : 75 : 1 0 : 1.0
+O: 3 2 : 75 : 1 0 : 1.0
+O: 3 3 : 75 : 1 0 : 1.0
+O: 0 0 : 30 : 1 1 : 1.0
+O: 0 1 : 30 : 1 1 : 1.0
+O: 0 2 : 30 : 1 1 : 1.0
+O: 0 3 : 30 : 1 1 : 1.0
+O: 1 0 : 30 : 1 1 : 1.0
+O: 1 1 : 30 : 1 1 : 1.0
+O: 1 2 : 30 : 1 1 : 1.0
+O: 1 3 : 30 : 1 1 : 1.0
+O: 2 0 : 30 : 1 1 : 1.0
+O: 2 1 : 30 : 1 1 : 1.0
+O: 2 2 : 30 : 1 1 : 1.0
+O: 2 3 : 30 : 1 1 : 1.0
+O: 3 0 : 30 : 1 1 : 1.0
+O: 3 1 : 30 : 1 1 : 1.0
+O: 3 2 : 30 : 1 1 : 1.0
+O: 3 3 : 30 : 1 1 : 1.0
+O: 0 0 : 34 : 1 1 : 1.0
+O: 0 1 : 34 : 1 1 : 1.0
+O: 0 2 : 34 : 1 1 : 1.0
+O: 0 3 : 34 : 1 1 : 1.0
+O: 1 0 : 34 : 1 1 : 1.0
+O: 1 1 : 34 : 1 1 : 1.0
+O: 1 2 : 34 : 1 1 : 1.0
+O: 1 3 : 34 : 1 1 : 1.0
+O: 2 0 : 34 : 1 1 : 1.0
+O: 2 1 : 34 : 1 1 : 1.0
+O: 2 2 : 34 : 1 1 : 1.0
+O: 2 3 : 34 : 1 1 : 1.0
+O: 3 0 : 34 : 1 1 : 1.0
+O: 3 1 : 34 : 1 1 : 1.0
+O: 3 2 : 34 : 1 1 : 1.0
+O: 3 3 : 34 : 1 1 : 1.0
+O: 0 0 : 37 : 1 1 : 1.0
+O: 0 1 : 37 : 1 1 : 1.0
+O: 0 2 : 37 : 1 1 : 1.0
+O: 0 3 : 37 : 1 1 : 1.0
+O: 1 0 : 37 : 1 1 : 1.0
+O: 1 1 : 37 : 1 1 : 1.0
+O: 1 2 : 37 : 1 1 : 1.0
+O: 1 3 : 37 : 1 1 : 1.0
+O: 2 0 : 37 : 1 1 : 1.0
+O: 2 1 : 37 : 1 1 : 1.0
+O: 2 2 : 37 : 1 1 : 1.0
+O: 2 3 : 37 : 1 1 : 1.0
+O: 3 0 : 37 : 1 1 : 1.0
+O: 3 1 : 37 : 1 1 : 1.0
+O: 3 2 : 37 : 1 1 : 1.0
+O: 3 3 : 37 : 1 1 : 1.0
+O: 0 0 : 38 : 1 1 : 1.0
+O: 0 1 : 38 : 1 1 : 1.0
+O: 0 2 : 38 : 1 1 : 1.0
+O: 0 3 : 38 : 1 1 : 1.0
+O: 1 0 : 38 : 1 1 : 1.0
+O: 1 1 : 38 : 1 1 : 1.0
+O: 1 2 : 38 : 1 1 : 1.0
+O: 1 3 : 38 : 1 1 : 1.0
+O: 2 0 : 38 : 1 1 : 1.0
+O: 2 1 : 38 : 1 1 : 1.0
+O: 2 2 : 38 : 1 1 : 1.0
+O: 2 3 : 38 : 1 1 : 1.0
+O: 3 0 : 38 : 1 1 : 1.0
+O: 3 1 : 38 : 1 1 : 1.0
+O: 3 2 : 38 : 1 1 : 1.0
+O: 3 3 : 38 : 1 1 : 1.0
+O: 0 0 : 42 : 1 1 : 1.0
+O: 0 1 : 42 : 1 1 : 1.0
+O: 0 2 : 42 : 1 1 : 1.0
+O: 0 3 : 42 : 1 1 : 1.0
+O: 1 0 : 42 : 1 1 : 1.0
+O: 1 1 : 42 : 1 1 : 1.0
+O: 1 2 : 42 : 1 1 : 1.0
+O: 1 3 : 42 : 1 1 : 1.0
+O: 2 0 : 42 : 1 1 : 1.0
+O: 2 1 : 42 : 1 1 : 1.0
+O: 2 2 : 42 : 1 1 : 1.0
+O: 2 3 : 42 : 1 1 : 1.0
+O: 3 0 : 42 : 1 1 : 1.0
+O: 3 1 : 42 : 1 1 : 1.0
+O: 3 2 : 42 : 1 1 : 1.0
+O: 3 3 : 42 : 1 1 : 1.0
+O: 0 0 : 46 : 1 1 : 1.0
+O: 0 1 : 46 : 1 1 : 1.0
+O: 0 2 : 46 : 1 1 : 1.0
+O: 0 3 : 46 : 1 1 : 1.0
+O: 1 0 : 46 : 1 1 : 1.0
+O: 1 1 : 46 : 1 1 : 1.0
+O: 1 2 : 46 : 1 1 : 1.0
+O: 1 3 : 46 : 1 1 : 1.0
+O: 2 0 : 46 : 1 1 : 1.0
+O: 2 1 : 46 : 1 1 : 1.0
+O: 2 2 : 46 : 1 1 : 1.0
+O: 2 3 : 46 : 1 1 : 1.0
+O: 3 0 : 46 : 1 1 : 1.0
+O: 3 1 : 46 : 1 1 : 1.0
+O: 3 2 : 46 : 1 1 : 1.0
+O: 3 3 : 46 : 1 1 : 1.0
+O: 0 0 : 49 : 1 1 : 1.0
+O: 0 1 : 49 : 1 1 : 1.0
+O: 0 2 : 49 : 1 1 : 1.0
+O: 0 3 : 49 : 1 1 : 1.0
+O: 1 0 : 49 : 1 1 : 1.0
+O: 1 1 : 49 : 1 1 : 1.0
+O: 1 2 : 49 : 1 1 : 1.0
+O: 1 3 : 49 : 1 1 : 1.0
+O: 2 0 : 49 : 1 1 : 1.0
+O: 2 1 : 49 : 1 1 : 1.0
+O: 2 2 : 49 : 1 1 : 1.0
+O: 2 3 : 49 : 1 1 : 1.0
+O: 3 0 : 49 : 1 1 : 1.0
+O: 3 1 : 49 : 1 1 : 1.0
+O: 3 2 : 49 : 1 1 : 1.0
+O: 3 3 : 49 : 1 1 : 1.0
+O: 0 0 : 50 : 1 1 : 1.0
+O: 0 1 : 50 : 1 1 : 1.0
+O: 0 2 : 50 : 1 1 : 1.0
+O: 0 3 : 50 : 1 1 : 1.0
+O: 1 0 : 50 : 1 1 : 1.0
+O: 1 1 : 50 : 1 1 : 1.0
+O: 1 2 : 50 : 1 1 : 1.0
+O: 1 3 : 50 : 1 1 : 1.0
+O: 2 0 : 50 : 1 1 : 1.0
+O: 2 1 : 50 : 1 1 : 1.0
+O: 2 2 : 50 : 1 1 : 1.0
+O: 2 3 : 50 : 1 1 : 1.0
+O: 3 0 : 50 : 1 1 : 1.0
+O: 3 1 : 50 : 1 1 : 1.0
+O: 3 2 : 50 : 1 1 : 1.0
+O: 3 3 : 50 : 1 1 : 1.0
+O: 0 0 : 70 : 1 1 : 1.0
+O: 0 1 : 70 : 1 1 : 1.0
+O: 0 2 : 70 : 1 1 : 1.0
+O: 0 3 : 70 : 1 1 : 1.0
+O: 1 0 : 70 : 1 1 : 1.0
+O: 1 1 : 70 : 1 1 : 1.0
+O: 1 2 : 70 : 1 1 : 1.0
+O: 1 3 : 70 : 1 1 : 1.0
+O: 2 0 : 70 : 1 1 : 1.0
+O: 2 1 : 70 : 1 1 : 1.0
+O: 2 2 : 70 : 1 1 : 1.0
+O: 2 3 : 70 : 1 1 : 1.0
+O: 3 0 : 70 : 1 1 : 1.0
+O: 3 1 : 70 : 1 1 : 1.0
+O: 3 2 : 70 : 1 1 : 1.0
+O: 3 3 : 70 : 1 1 : 1.0
+O: 0 0 : 73 : 1 1 : 1.0
+O: 0 1 : 73 : 1 1 : 1.0
+O: 0 2 : 73 : 1 1 : 1.0
+O: 0 3 : 73 : 1 1 : 1.0
+O: 1 0 : 73 : 1 1 : 1.0
+O: 1 1 : 73 : 1 1 : 1.0
+O: 1 2 : 73 : 1 1 : 1.0
+O: 1 3 : 73 : 1 1 : 1.0
+O: 2 0 : 73 : 1 1 : 1.0
+O: 2 1 : 73 : 1 1 : 1.0
+O: 2 2 : 73 : 1 1 : 1.0
+O: 2 3 : 73 : 1 1 : 1.0
+O: 3 0 : 73 : 1 1 : 1.0
+O: 3 1 : 73 : 1 1 : 1.0
+O: 3 2 : 73 : 1 1 : 1.0
+O: 3 3 : 73 : 1 1 : 1.0
+O: 0 0 : 74 : 1 1 : 1.0
+O: 0 1 : 74 : 1 1 : 1.0
+O: 0 2 : 74 : 1 1 : 1.0
+O: 0 3 : 74 : 1 1 : 1.0
+O: 1 0 : 74 : 1 1 : 1.0
+O: 1 1 : 74 : 1 1 : 1.0
+O: 1 2 : 74 : 1 1 : 1.0
+O: 1 3 : 74 : 1 1 : 1.0
+O: 2 0 : 74 : 1 1 : 1.0
+O: 2 1 : 74 : 1 1 : 1.0
+O: 2 2 : 74 : 1 1 : 1.0
+O: 2 3 : 74 : 1 1 : 1.0
+O: 3 0 : 74 : 1 1 : 1.0
+O: 3 1 : 74 : 1 1 : 1.0
+O: 3 2 : 74 : 1 1 : 1.0
+O: 3 3 : 74 : 1 1 : 1.0
+O: 0 0 : 93 : 1 1 : 1.0
+O: 0 1 : 93 : 1 1 : 1.0
+O: 0 2 : 93 : 1 1 : 1.0
+O: 0 3 : 93 : 1 1 : 1.0
+O: 1 0 : 93 : 1 1 : 1.0
+O: 1 1 : 93 : 1 1 : 1.0
+O: 1 2 : 93 : 1 1 : 1.0
+O: 1 3 : 93 : 1 1 : 1.0
+O: 2 0 : 93 : 1 1 : 1.0
+O: 2 1 : 93 : 1 1 : 1.0
+O: 2 2 : 93 : 1 1 : 1.0
+O: 2 3 : 93 : 1 1 : 1.0
+O: 3 0 : 93 : 1 1 : 1.0
+O: 3 1 : 93 : 1 1 : 1.0
+O: 3 2 : 93 : 1 1 : 1.0
+O: 3 3 : 93 : 1 1 : 1.0
+O: 0 0 : 94 : 1 1 : 1.0
+O: 0 1 : 94 : 1 1 : 1.0
+O: 0 2 : 94 : 1 1 : 1.0
+O: 0 3 : 94 : 1 1 : 1.0
+O: 1 0 : 94 : 1 1 : 1.0
+O: 1 1 : 94 : 1 1 : 1.0
+O: 1 2 : 94 : 1 1 : 1.0
+O: 1 3 : 94 : 1 1 : 1.0
+O: 2 0 : 94 : 1 1 : 1.0
+O: 2 1 : 94 : 1 1 : 1.0
+O: 2 2 : 94 : 1 1 : 1.0
+O: 2 3 : 94 : 1 1 : 1.0
+O: 3 0 : 94 : 1 1 : 1.0
+O: 3 1 : 94 : 1 1 : 1.0
+O: 3 2 : 94 : 1 1 : 1.0
+O: 3 3 : 94 : 1 1 : 1.0
+O: 0 0 : 31 : 1 2 : 1.0
+O: 0 1 : 31 : 1 2 : 1.0
+O: 0 2 : 31 : 1 2 : 1.0
+O: 0 3 : 31 : 1 2 : 1.0
+O: 1 0 : 31 : 1 2 : 1.0
+O: 1 1 : 31 : 1 2 : 1.0
+O: 1 2 : 31 : 1 2 : 1.0
+O: 1 3 : 31 : 1 2 : 1.0
+O: 2 0 : 31 : 1 2 : 1.0
+O: 2 1 : 31 : 1 2 : 1.0
+O: 2 2 : 31 : 1 2 : 1.0
+O: 2 3 : 31 : 1 2 : 1.0
+O: 3 0 : 31 : 1 2 : 1.0
+O: 3 1 : 31 : 1 2 : 1.0
+O: 3 2 : 31 : 1 2 : 1.0
+O: 3 3 : 31 : 1 2 : 1.0
+O: 0 0 : 43 : 1 2 : 1.0
+O: 0 1 : 43 : 1 2 : 1.0
+O: 0 2 : 43 : 1 2 : 1.0
+O: 0 3 : 43 : 1 2 : 1.0
+O: 1 0 : 43 : 1 2 : 1.0
+O: 1 1 : 43 : 1 2 : 1.0
+O: 1 2 : 43 : 1 2 : 1.0
+O: 1 3 : 43 : 1 2 : 1.0
+O: 2 0 : 43 : 1 2 : 1.0
+O: 2 1 : 43 : 1 2 : 1.0
+O: 2 2 : 43 : 1 2 : 1.0
+O: 2 3 : 43 : 1 2 : 1.0
+O: 3 0 : 43 : 1 2 : 1.0
+O: 3 1 : 43 : 1 2 : 1.0
+O: 3 2 : 43 : 1 2 : 1.0
+O: 3 3 : 43 : 1 2 : 1.0
+O: 0 0 : 71 : 1 2 : 1.0
+O: 0 1 : 71 : 1 2 : 1.0
+O: 0 2 : 71 : 1 2 : 1.0
+O: 0 3 : 71 : 1 2 : 1.0
+O: 1 0 : 71 : 1 2 : 1.0
+O: 1 1 : 71 : 1 2 : 1.0
+O: 1 2 : 71 : 1 2 : 1.0
+O: 1 3 : 71 : 1 2 : 1.0
+O: 2 0 : 71 : 1 2 : 1.0
+O: 2 1 : 71 : 1 2 : 1.0
+O: 2 2 : 71 : 1 2 : 1.0
+O: 2 3 : 71 : 1 2 : 1.0
+O: 3 0 : 71 : 1 2 : 1.0
+O: 3 1 : 71 : 1 2 : 1.0
+O: 3 2 : 71 : 1 2 : 1.0
+O: 3 3 : 71 : 1 2 : 1.0
+O: 0 0 : 95 : 1 2 : 1.0
+O: 0 1 : 95 : 1 2 : 1.0
+O: 0 2 : 95 : 1 2 : 1.0
+O: 0 3 : 95 : 1 2 : 1.0
+O: 1 0 : 95 : 1 2 : 1.0
+O: 1 1 : 95 : 1 2 : 1.0
+O: 1 2 : 95 : 1 2 : 1.0
+O: 1 3 : 95 : 1 2 : 1.0
+O: 2 0 : 95 : 1 2 : 1.0
+O: 2 1 : 95 : 1 2 : 1.0
+O: 2 2 : 95 : 1 2 : 1.0
+O: 2 3 : 95 : 1 2 : 1.0
+O: 3 0 : 95 : 1 2 : 1.0
+O: 3 1 : 95 : 1 2 : 1.0
+O: 3 2 : 95 : 1 2 : 1.0
+O: 3 3 : 95 : 1 2 : 1.0
+O: 0 0 : 36 : 1 3 : 1.0
+O: 0 1 : 36 : 1 3 : 1.0
+O: 0 2 : 36 : 1 3 : 1.0
+O: 0 3 : 36 : 1 3 : 1.0
+O: 1 0 : 36 : 1 3 : 1.0
+O: 1 1 : 36 : 1 3 : 1.0
+O: 1 2 : 36 : 1 3 : 1.0
+O: 1 3 : 36 : 1 3 : 1.0
+O: 2 0 : 36 : 1 3 : 1.0
+O: 2 1 : 36 : 1 3 : 1.0
+O: 2 2 : 36 : 1 3 : 1.0
+O: 2 3 : 36 : 1 3 : 1.0
+O: 3 0 : 36 : 1 3 : 1.0
+O: 3 1 : 36 : 1 3 : 1.0
+O: 3 2 : 36 : 1 3 : 1.0
+O: 3 3 : 36 : 1 3 : 1.0
+O: 0 0 : 48 : 1 3 : 1.0
+O: 0 1 : 48 : 1 3 : 1.0
+O: 0 2 : 48 : 1 3 : 1.0
+O: 0 3 : 48 : 1 3 : 1.0
+O: 1 0 : 48 : 1 3 : 1.0
+O: 1 1 : 48 : 1 3 : 1.0
+O: 1 2 : 48 : 1 3 : 1.0
+O: 1 3 : 48 : 1 3 : 1.0
+O: 2 0 : 48 : 1 3 : 1.0
+O: 2 1 : 48 : 1 3 : 1.0
+O: 2 2 : 48 : 1 3 : 1.0
+O: 2 3 : 48 : 1 3 : 1.0
+O: 3 0 : 48 : 1 3 : 1.0
+O: 3 1 : 48 : 1 3 : 1.0
+O: 3 2 : 48 : 1 3 : 1.0
+O: 3 3 : 48 : 1 3 : 1.0
+O: 0 0 : 72 : 1 3 : 1.0
+O: 0 1 : 72 : 1 3 : 1.0
+O: 0 2 : 72 : 1 3 : 1.0
+O: 0 3 : 72 : 1 3 : 1.0
+O: 1 0 : 72 : 1 3 : 1.0
+O: 1 1 : 72 : 1 3 : 1.0
+O: 1 2 : 72 : 1 3 : 1.0
+O: 1 3 : 72 : 1 3 : 1.0
+O: 2 0 : 72 : 1 3 : 1.0
+O: 2 1 : 72 : 1 3 : 1.0
+O: 2 2 : 72 : 1 3 : 1.0
+O: 2 3 : 72 : 1 3 : 1.0
+O: 3 0 : 72 : 1 3 : 1.0
+O: 3 1 : 72 : 1 3 : 1.0
+O: 3 2 : 72 : 1 3 : 1.0
+O: 3 3 : 72 : 1 3 : 1.0
+O: 0 0 : 92 : 1 3 : 1.0
+O: 0 1 : 92 : 1 3 : 1.0
+O: 0 2 : 92 : 1 3 : 1.0
+O: 0 3 : 92 : 1 3 : 1.0
+O: 1 0 : 92 : 1 3 : 1.0
+O: 1 1 : 92 : 1 3 : 1.0
+O: 1 2 : 92 : 1 3 : 1.0
+O: 1 3 : 92 : 1 3 : 1.0
+O: 2 0 : 92 : 1 3 : 1.0
+O: 2 1 : 92 : 1 3 : 1.0
+O: 2 2 : 92 : 1 3 : 1.0
+O: 2 3 : 92 : 1 3 : 1.0
+O: 3 0 : 92 : 1 3 : 1.0
+O: 3 1 : 92 : 1 3 : 1.0
+O: 3 2 : 92 : 1 3 : 1.0
+O: 3 3 : 92 : 1 3 : 1.0
+O: 0 0 : 28 : 1 4 : 1.0
+O: 0 1 : 28 : 1 4 : 1.0
+O: 0 2 : 28 : 1 4 : 1.0
+O: 0 3 : 28 : 1 4 : 1.0
+O: 1 0 : 28 : 1 4 : 1.0
+O: 1 1 : 28 : 1 4 : 1.0
+O: 1 2 : 28 : 1 4 : 1.0
+O: 1 3 : 28 : 1 4 : 1.0
+O: 2 0 : 28 : 1 4 : 1.0
+O: 2 1 : 28 : 1 4 : 1.0
+O: 2 2 : 28 : 1 4 : 1.0
+O: 2 3 : 28 : 1 4 : 1.0
+O: 3 0 : 28 : 1 4 : 1.0
+O: 3 1 : 28 : 1 4 : 1.0
+O: 3 2 : 28 : 1 4 : 1.0
+O: 3 3 : 28 : 1 4 : 1.0
+O: 0 0 : 32 : 1 4 : 1.0
+O: 0 1 : 32 : 1 4 : 1.0
+O: 0 2 : 32 : 1 4 : 1.0
+O: 0 3 : 32 : 1 4 : 1.0
+O: 1 0 : 32 : 1 4 : 1.0
+O: 1 1 : 32 : 1 4 : 1.0
+O: 1 2 : 32 : 1 4 : 1.0
+O: 1 3 : 32 : 1 4 : 1.0
+O: 2 0 : 32 : 1 4 : 1.0
+O: 2 1 : 32 : 1 4 : 1.0
+O: 2 2 : 32 : 1 4 : 1.0
+O: 2 3 : 32 : 1 4 : 1.0
+O: 3 0 : 32 : 1 4 : 1.0
+O: 3 1 : 32 : 1 4 : 1.0
+O: 3 2 : 32 : 1 4 : 1.0
+O: 3 3 : 32 : 1 4 : 1.0
+O: 0 0 : 40 : 1 4 : 1.0
+O: 0 1 : 40 : 1 4 : 1.0
+O: 0 2 : 40 : 1 4 : 1.0
+O: 0 3 : 40 : 1 4 : 1.0
+O: 1 0 : 40 : 1 4 : 1.0
+O: 1 1 : 40 : 1 4 : 1.0
+O: 1 2 : 40 : 1 4 : 1.0
+O: 1 3 : 40 : 1 4 : 1.0
+O: 2 0 : 40 : 1 4 : 1.0
+O: 2 1 : 40 : 1 4 : 1.0
+O: 2 2 : 40 : 1 4 : 1.0
+O: 2 3 : 40 : 1 4 : 1.0
+O: 3 0 : 40 : 1 4 : 1.0
+O: 3 1 : 40 : 1 4 : 1.0
+O: 3 2 : 40 : 1 4 : 1.0
+O: 3 3 : 40 : 1 4 : 1.0
+O: 0 0 : 44 : 1 4 : 1.0
+O: 0 1 : 44 : 1 4 : 1.0
+O: 0 2 : 44 : 1 4 : 1.0
+O: 0 3 : 44 : 1 4 : 1.0
+O: 1 0 : 44 : 1 4 : 1.0
+O: 1 1 : 44 : 1 4 : 1.0
+O: 1 2 : 44 : 1 4 : 1.0
+O: 1 3 : 44 : 1 4 : 1.0
+O: 2 0 : 44 : 1 4 : 1.0
+O: 2 1 : 44 : 1 4 : 1.0
+O: 2 2 : 44 : 1 4 : 1.0
+O: 2 3 : 44 : 1 4 : 1.0
+O: 3 0 : 44 : 1 4 : 1.0
+O: 3 1 : 44 : 1 4 : 1.0
+O: 3 2 : 44 : 1 4 : 1.0
+O: 3 3 : 44 : 1 4 : 1.0
+O: 0 0 : 68 : 1 4 : 1.0
+O: 0 1 : 68 : 1 4 : 1.0
+O: 0 2 : 68 : 1 4 : 1.0
+O: 0 3 : 68 : 1 4 : 1.0
+O: 1 0 : 68 : 1 4 : 1.0
+O: 1 1 : 68 : 1 4 : 1.0
+O: 1 2 : 68 : 1 4 : 1.0
+O: 1 3 : 68 : 1 4 : 1.0
+O: 2 0 : 68 : 1 4 : 1.0
+O: 2 1 : 68 : 1 4 : 1.0
+O: 2 2 : 68 : 1 4 : 1.0
+O: 2 3 : 68 : 1 4 : 1.0
+O: 3 0 : 68 : 1 4 : 1.0
+O: 3 1 : 68 : 1 4 : 1.0
+O: 3 2 : 68 : 1 4 : 1.0
+O: 3 3 : 68 : 1 4 : 1.0
+O: 0 0 : 17 : 2 0 : 1.0
+O: 0 1 : 17 : 2 0 : 1.0
+O: 0 2 : 17 : 2 0 : 1.0
+O: 0 3 : 17 : 2 0 : 1.0
+O: 1 0 : 17 : 2 0 : 1.0
+O: 1 1 : 17 : 2 0 : 1.0
+O: 1 2 : 17 : 2 0 : 1.0
+O: 1 3 : 17 : 2 0 : 1.0
+O: 2 0 : 17 : 2 0 : 1.0
+O: 2 1 : 17 : 2 0 : 1.0
+O: 2 2 : 17 : 2 0 : 1.0
+O: 2 3 : 17 : 2 0 : 1.0
+O: 3 0 : 17 : 2 0 : 1.0
+O: 3 1 : 17 : 2 0 : 1.0
+O: 3 2 : 17 : 2 0 : 1.0
+O: 3 3 : 17 : 2 0 : 1.0
+O: 0 0 : 61 : 2 0 : 1.0
+O: 0 1 : 61 : 2 0 : 1.0
+O: 0 2 : 61 : 2 0 : 1.0
+O: 0 3 : 61 : 2 0 : 1.0
+O: 1 0 : 61 : 2 0 : 1.0
+O: 1 1 : 61 : 2 0 : 1.0
+O: 1 2 : 61 : 2 0 : 1.0
+O: 1 3 : 61 : 2 0 : 1.0
+O: 2 0 : 61 : 2 0 : 1.0
+O: 2 1 : 61 : 2 0 : 1.0
+O: 2 2 : 61 : 2 0 : 1.0
+O: 2 3 : 61 : 2 0 : 1.0
+O: 3 0 : 61 : 2 0 : 1.0
+O: 3 1 : 61 : 2 0 : 1.0
+O: 3 2 : 61 : 2 0 : 1.0
+O: 3 3 : 61 : 2 0 : 1.0
+O: 0 0 : 18 : 2 1 : 1.0
+O: 0 1 : 18 : 2 1 : 1.0
+O: 0 2 : 18 : 2 1 : 1.0
+O: 0 3 : 18 : 2 1 : 1.0
+O: 1 0 : 18 : 2 1 : 1.0
+O: 1 1 : 18 : 2 1 : 1.0
+O: 1 2 : 18 : 2 1 : 1.0
+O: 1 3 : 18 : 2 1 : 1.0
+O: 2 0 : 18 : 2 1 : 1.0
+O: 2 1 : 18 : 2 1 : 1.0
+O: 2 2 : 18 : 2 1 : 1.0
+O: 2 3 : 18 : 2 1 : 1.0
+O: 3 0 : 18 : 2 1 : 1.0
+O: 3 1 : 18 : 2 1 : 1.0
+O: 3 2 : 18 : 2 1 : 1.0
+O: 3 3 : 18 : 2 1 : 1.0
+O: 0 0 : 62 : 2 1 : 1.0
+O: 0 1 : 62 : 2 1 : 1.0
+O: 0 2 : 62 : 2 1 : 1.0
+O: 0 3 : 62 : 2 1 : 1.0
+O: 1 0 : 62 : 2 1 : 1.0
+O: 1 1 : 62 : 2 1 : 1.0
+O: 1 2 : 62 : 2 1 : 1.0
+O: 1 3 : 62 : 2 1 : 1.0
+O: 2 0 : 62 : 2 1 : 1.0
+O: 2 1 : 62 : 2 1 : 1.0
+O: 2 2 : 62 : 2 1 : 1.0
+O: 2 3 : 62 : 2 1 : 1.0
+O: 3 0 : 62 : 2 1 : 1.0
+O: 3 1 : 62 : 2 1 : 1.0
+O: 3 2 : 62 : 2 1 : 1.0
+O: 3 3 : 62 : 2 1 : 1.0
+O: 0 0 : 89 : 2 1 : 1.0
+O: 0 1 : 89 : 2 1 : 1.0
+O: 0 2 : 89 : 2 1 : 1.0
+O: 0 3 : 89 : 2 1 : 1.0
+O: 1 0 : 89 : 2 1 : 1.0
+O: 1 1 : 89 : 2 1 : 1.0
+O: 1 2 : 89 : 2 1 : 1.0
+O: 1 3 : 89 : 2 1 : 1.0
+O: 2 0 : 89 : 2 1 : 1.0
+O: 2 1 : 89 : 2 1 : 1.0
+O: 2 2 : 89 : 2 1 : 1.0
+O: 2 3 : 89 : 2 1 : 1.0
+O: 3 0 : 89 : 2 1 : 1.0
+O: 3 1 : 89 : 2 1 : 1.0
+O: 3 2 : 89 : 2 1 : 1.0
+O: 3 3 : 89 : 2 1 : 1.0
+O: 0 0 : 90 : 2 1 : 1.0
+O: 0 1 : 90 : 2 1 : 1.0
+O: 0 2 : 90 : 2 1 : 1.0
+O: 0 3 : 90 : 2 1 : 1.0
+O: 1 0 : 90 : 2 1 : 1.0
+O: 1 1 : 90 : 2 1 : 1.0
+O: 1 2 : 90 : 2 1 : 1.0
+O: 1 3 : 90 : 2 1 : 1.0
+O: 2 0 : 90 : 2 1 : 1.0
+O: 2 1 : 90 : 2 1 : 1.0
+O: 2 2 : 90 : 2 1 : 1.0
+O: 2 3 : 90 : 2 1 : 1.0
+O: 3 0 : 90 : 2 1 : 1.0
+O: 3 1 : 90 : 2 1 : 1.0
+O: 3 2 : 90 : 2 1 : 1.0
+O: 3 3 : 90 : 2 1 : 1.0
+O: 0 0 : 19 : 2 2 : 1.0
+O: 0 1 : 19 : 2 2 : 1.0
+O: 0 2 : 19 : 2 2 : 1.0
+O: 0 3 : 19 : 2 2 : 1.0
+O: 1 0 : 19 : 2 2 : 1.0
+O: 1 1 : 19 : 2 2 : 1.0
+O: 1 2 : 19 : 2 2 : 1.0
+O: 1 3 : 19 : 2 2 : 1.0
+O: 2 0 : 19 : 2 2 : 1.0
+O: 2 1 : 19 : 2 2 : 1.0
+O: 2 2 : 19 : 2 2 : 1.0
+O: 2 3 : 19 : 2 2 : 1.0
+O: 3 0 : 19 : 2 2 : 1.0
+O: 3 1 : 19 : 2 2 : 1.0
+O: 3 2 : 19 : 2 2 : 1.0
+O: 3 3 : 19 : 2 2 : 1.0
+O: 0 0 : 63 : 2 2 : 1.0
+O: 0 1 : 63 : 2 2 : 1.0
+O: 0 2 : 63 : 2 2 : 1.0
+O: 0 3 : 63 : 2 2 : 1.0
+O: 1 0 : 63 : 2 2 : 1.0
+O: 1 1 : 63 : 2 2 : 1.0
+O: 1 2 : 63 : 2 2 : 1.0
+O: 1 3 : 63 : 2 2 : 1.0
+O: 2 0 : 63 : 2 2 : 1.0
+O: 2 1 : 63 : 2 2 : 1.0
+O: 2 2 : 63 : 2 2 : 1.0
+O: 2 3 : 63 : 2 2 : 1.0
+O: 3 0 : 63 : 2 2 : 1.0
+O: 3 1 : 63 : 2 2 : 1.0
+O: 3 2 : 63 : 2 2 : 1.0
+O: 3 3 : 63 : 2 2 : 1.0
+O: 0 0 : 91 : 2 2 : 1.0
+O: 0 1 : 91 : 2 2 : 1.0
+O: 0 2 : 91 : 2 2 : 1.0
+O: 0 3 : 91 : 2 2 : 1.0
+O: 1 0 : 91 : 2 2 : 1.0
+O: 1 1 : 91 : 2 2 : 1.0
+O: 1 2 : 91 : 2 2 : 1.0
+O: 1 3 : 91 : 2 2 : 1.0
+O: 2 0 : 91 : 2 2 : 1.0
+O: 2 1 : 91 : 2 2 : 1.0
+O: 2 2 : 91 : 2 2 : 1.0
+O: 2 3 : 91 : 2 2 : 1.0
+O: 3 0 : 91 : 2 2 : 1.0
+O: 3 1 : 91 : 2 2 : 1.0
+O: 3 2 : 91 : 2 2 : 1.0
+O: 3 3 : 91 : 2 2 : 1.0
+O: 0 0 : 88 : 2 3 : 1.0
+O: 0 1 : 88 : 2 3 : 1.0
+O: 0 2 : 88 : 2 3 : 1.0
+O: 0 3 : 88 : 2 3 : 1.0
+O: 1 0 : 88 : 2 3 : 1.0
+O: 1 1 : 88 : 2 3 : 1.0
+O: 1 2 : 88 : 2 3 : 1.0
+O: 1 3 : 88 : 2 3 : 1.0
+O: 2 0 : 88 : 2 3 : 1.0
+O: 2 1 : 88 : 2 3 : 1.0
+O: 2 2 : 88 : 2 3 : 1.0
+O: 2 3 : 88 : 2 3 : 1.0
+O: 3 0 : 88 : 2 3 : 1.0
+O: 3 1 : 88 : 2 3 : 1.0
+O: 3 2 : 88 : 2 3 : 1.0
+O: 3 3 : 88 : 2 3 : 1.0
+O: 0 0 : 16 : 2 4 : 1.0
+O: 0 1 : 16 : 2 4 : 1.0
+O: 0 2 : 16 : 2 4 : 1.0
+O: 0 3 : 16 : 2 4 : 1.0
+O: 1 0 : 16 : 2 4 : 1.0
+O: 1 1 : 16 : 2 4 : 1.0
+O: 1 2 : 16 : 2 4 : 1.0
+O: 1 3 : 16 : 2 4 : 1.0
+O: 2 0 : 16 : 2 4 : 1.0
+O: 2 1 : 16 : 2 4 : 1.0
+O: 2 2 : 16 : 2 4 : 1.0
+O: 2 3 : 16 : 2 4 : 1.0
+O: 3 0 : 16 : 2 4 : 1.0
+O: 3 1 : 16 : 2 4 : 1.0
+O: 3 2 : 16 : 2 4 : 1.0
+O: 3 3 : 16 : 2 4 : 1.0
+O: 0 0 : 60 : 2 4 : 1.0
+O: 0 1 : 60 : 2 4 : 1.0
+O: 0 2 : 60 : 2 4 : 1.0
+O: 0 3 : 60 : 2 4 : 1.0
+O: 1 0 : 60 : 2 4 : 1.0
+O: 1 1 : 60 : 2 4 : 1.0
+O: 1 2 : 60 : 2 4 : 1.0
+O: 1 3 : 60 : 2 4 : 1.0
+O: 2 0 : 60 : 2 4 : 1.0
+O: 2 1 : 60 : 2 4 : 1.0
+O: 2 2 : 60 : 2 4 : 1.0
+O: 2 3 : 60 : 2 4 : 1.0
+O: 3 0 : 60 : 2 4 : 1.0
+O: 3 1 : 60 : 2 4 : 1.0
+O: 3 2 : 60 : 2 4 : 1.0
+O: 3 3 : 60 : 2 4 : 1.0
+O: 0 0 : 5 : 3 0 : 1.0
+O: 0 1 : 5 : 3 0 : 1.0
+O: 0 2 : 5 : 3 0 : 1.0
+O: 0 3 : 5 : 3 0 : 1.0
+O: 1 0 : 5 : 3 0 : 1.0
+O: 1 1 : 5 : 3 0 : 1.0
+O: 1 2 : 5 : 3 0 : 1.0
+O: 1 3 : 5 : 3 0 : 1.0
+O: 2 0 : 5 : 3 0 : 1.0
+O: 2 1 : 5 : 3 0 : 1.0
+O: 2 2 : 5 : 3 0 : 1.0
+O: 2 3 : 5 : 3 0 : 1.0
+O: 3 0 : 5 : 3 0 : 1.0
+O: 3 1 : 5 : 3 0 : 1.0
+O: 3 2 : 5 : 3 0 : 1.0
+O: 3 3 : 5 : 3 0 : 1.0
+O: 0 0 : 9 : 3 0 : 1.0
+O: 0 1 : 9 : 3 0 : 1.0
+O: 0 2 : 9 : 3 0 : 1.0
+O: 0 3 : 9 : 3 0 : 1.0
+O: 1 0 : 9 : 3 0 : 1.0
+O: 1 1 : 9 : 3 0 : 1.0
+O: 1 2 : 9 : 3 0 : 1.0
+O: 1 3 : 9 : 3 0 : 1.0
+O: 2 0 : 9 : 3 0 : 1.0
+O: 2 1 : 9 : 3 0 : 1.0
+O: 2 2 : 9 : 3 0 : 1.0
+O: 2 3 : 9 : 3 0 : 1.0
+O: 3 0 : 9 : 3 0 : 1.0
+O: 3 1 : 9 : 3 0 : 1.0
+O: 3 2 : 9 : 3 0 : 1.0
+O: 3 3 : 9 : 3 0 : 1.0
+O: 0 0 : 11 : 3 0 : 1.0
+O: 0 1 : 11 : 3 0 : 1.0
+O: 0 2 : 11 : 3 0 : 1.0
+O: 0 3 : 11 : 3 0 : 1.0
+O: 1 0 : 11 : 3 0 : 1.0
+O: 1 1 : 11 : 3 0 : 1.0
+O: 1 2 : 11 : 3 0 : 1.0
+O: 1 3 : 11 : 3 0 : 1.0
+O: 2 0 : 11 : 3 0 : 1.0
+O: 2 1 : 11 : 3 0 : 1.0
+O: 2 2 : 11 : 3 0 : 1.0
+O: 2 3 : 11 : 3 0 : 1.0
+O: 3 0 : 11 : 3 0 : 1.0
+O: 3 1 : 11 : 3 0 : 1.0
+O: 3 2 : 11 : 3 0 : 1.0
+O: 3 3 : 11 : 3 0 : 1.0
+O: 0 0 : 15 : 3 0 : 1.0
+O: 0 1 : 15 : 3 0 : 1.0
+O: 0 2 : 15 : 3 0 : 1.0
+O: 0 3 : 15 : 3 0 : 1.0
+O: 1 0 : 15 : 3 0 : 1.0
+O: 1 1 : 15 : 3 0 : 1.0
+O: 1 2 : 15 : 3 0 : 1.0
+O: 1 3 : 15 : 3 0 : 1.0
+O: 2 0 : 15 : 3 0 : 1.0
+O: 2 1 : 15 : 3 0 : 1.0
+O: 2 2 : 15 : 3 0 : 1.0
+O: 2 3 : 15 : 3 0 : 1.0
+O: 3 0 : 15 : 3 0 : 1.0
+O: 3 1 : 15 : 3 0 : 1.0
+O: 3 2 : 15 : 3 0 : 1.0
+O: 3 3 : 15 : 3 0 : 1.0
+O: 0 0 : 6 : 3 1 : 1.0
+O: 0 1 : 6 : 3 1 : 1.0
+O: 0 2 : 6 : 3 1 : 1.0
+O: 0 3 : 6 : 3 1 : 1.0
+O: 1 0 : 6 : 3 1 : 1.0
+O: 1 1 : 6 : 3 1 : 1.0
+O: 1 2 : 6 : 3 1 : 1.0
+O: 1 3 : 6 : 3 1 : 1.0
+O: 2 0 : 6 : 3 1 : 1.0
+O: 2 1 : 6 : 3 1 : 1.0
+O: 2 2 : 6 : 3 1 : 1.0
+O: 2 3 : 6 : 3 1 : 1.0
+O: 3 0 : 6 : 3 1 : 1.0
+O: 3 1 : 6 : 3 1 : 1.0
+O: 3 2 : 6 : 3 1 : 1.0
+O: 3 3 : 6 : 3 1 : 1.0
+O: 0 0 : 10 : 3 1 : 1.0
+O: 0 1 : 10 : 3 1 : 1.0
+O: 0 2 : 10 : 3 1 : 1.0
+O: 0 3 : 10 : 3 1 : 1.0
+O: 1 0 : 10 : 3 1 : 1.0
+O: 1 1 : 10 : 3 1 : 1.0
+O: 1 2 : 10 : 3 1 : 1.0
+O: 1 3 : 10 : 3 1 : 1.0
+O: 2 0 : 10 : 3 1 : 1.0
+O: 2 1 : 10 : 3 1 : 1.0
+O: 2 2 : 10 : 3 1 : 1.0
+O: 2 3 : 10 : 3 1 : 1.0
+O: 3 0 : 10 : 3 1 : 1.0
+O: 3 1 : 10 : 3 1 : 1.0
+O: 3 2 : 10 : 3 1 : 1.0
+O: 3 3 : 10 : 3 1 : 1.0
+O: 0 0 : 13 : 3 1 : 1.0
+O: 0 1 : 13 : 3 1 : 1.0
+O: 0 2 : 13 : 3 1 : 1.0
+O: 0 3 : 13 : 3 1 : 1.0
+O: 1 0 : 13 : 3 1 : 1.0
+O: 1 1 : 13 : 3 1 : 1.0
+O: 1 2 : 13 : 3 1 : 1.0
+O: 1 3 : 13 : 3 1 : 1.0
+O: 2 0 : 13 : 3 1 : 1.0
+O: 2 1 : 13 : 3 1 : 1.0
+O: 2 2 : 13 : 3 1 : 1.0
+O: 2 3 : 13 : 3 1 : 1.0
+O: 3 0 : 13 : 3 1 : 1.0
+O: 3 1 : 13 : 3 1 : 1.0
+O: 3 2 : 13 : 3 1 : 1.0
+O: 3 3 : 13 : 3 1 : 1.0
+O: 0 0 : 14 : 3 1 : 1.0
+O: 0 1 : 14 : 3 1 : 1.0
+O: 0 2 : 14 : 3 1 : 1.0
+O: 0 3 : 14 : 3 1 : 1.0
+O: 1 0 : 14 : 3 1 : 1.0
+O: 1 1 : 14 : 3 1 : 1.0
+O: 1 2 : 14 : 3 1 : 1.0
+O: 1 3 : 14 : 3 1 : 1.0
+O: 2 0 : 14 : 3 1 : 1.0
+O: 2 1 : 14 : 3 1 : 1.0
+O: 2 2 : 14 : 3 1 : 1.0
+O: 2 3 : 14 : 3 1 : 1.0
+O: 3 0 : 14 : 3 1 : 1.0
+O: 3 1 : 14 : 3 1 : 1.0
+O: 3 2 : 14 : 3 1 : 1.0
+O: 3 3 : 14 : 3 1 : 1.0
+O: 0 0 : 7 : 3 2 : 1.0
+O: 0 1 : 7 : 3 2 : 1.0
+O: 0 2 : 7 : 3 2 : 1.0
+O: 0 3 : 7 : 3 2 : 1.0
+O: 1 0 : 7 : 3 2 : 1.0
+O: 1 1 : 7 : 3 2 : 1.0
+O: 1 2 : 7 : 3 2 : 1.0
+O: 1 3 : 7 : 3 2 : 1.0
+O: 2 0 : 7 : 3 2 : 1.0
+O: 2 1 : 7 : 3 2 : 1.0
+O: 2 2 : 7 : 3 2 : 1.0
+O: 2 3 : 7 : 3 2 : 1.0
+O: 3 0 : 7 : 3 2 : 1.0
+O: 3 1 : 7 : 3 2 : 1.0
+O: 3 2 : 7 : 3 2 : 1.0
+O: 3 3 : 7 : 3 2 : 1.0
+O: 0 0 : 12 : 3 3 : 1.0
+O: 0 1 : 12 : 3 3 : 1.0
+O: 0 2 : 12 : 3 3 : 1.0
+O: 0 3 : 12 : 3 3 : 1.0
+O: 1 0 : 12 : 3 3 : 1.0
+O: 1 1 : 12 : 3 3 : 1.0
+O: 1 2 : 12 : 3 3 : 1.0
+O: 1 3 : 12 : 3 3 : 1.0
+O: 2 0 : 12 : 3 3 : 1.0
+O: 2 1 : 12 : 3 3 : 1.0
+O: 2 2 : 12 : 3 3 : 1.0
+O: 2 3 : 12 : 3 3 : 1.0
+O: 3 0 : 12 : 3 3 : 1.0
+O: 3 1 : 12 : 3 3 : 1.0
+O: 3 2 : 12 : 3 3 : 1.0
+O: 3 3 : 12 : 3 3 : 1.0
+O: 0 0 : 4 : 3 4 : 1.0
+O: 0 1 : 4 : 3 4 : 1.0
+O: 0 2 : 4 : 3 4 : 1.0
+O: 0 3 : 4 : 3 4 : 1.0
+O: 1 0 : 4 : 3 4 : 1.0
+O: 1 1 : 4 : 3 4 : 1.0
+O: 1 2 : 4 : 3 4 : 1.0
+O: 1 3 : 4 : 3 4 : 1.0
+O: 2 0 : 4 : 3 4 : 1.0
+O: 2 1 : 4 : 3 4 : 1.0
+O: 2 2 : 4 : 3 4 : 1.0
+O: 2 3 : 4 : 3 4 : 1.0
+O: 3 0 : 4 : 3 4 : 1.0
+O: 3 1 : 4 : 3 4 : 1.0
+O: 3 2 : 4 : 3 4 : 1.0
+O: 3 3 : 4 : 3 4 : 1.0
+O: 0 0 : 8 : 3 4 : 1.0
+O: 0 1 : 8 : 3 4 : 1.0
+O: 0 2 : 8 : 3 4 : 1.0
+O: 0 3 : 8 : 3 4 : 1.0
+O: 1 0 : 8 : 3 4 : 1.0
+O: 1 1 : 8 : 3 4 : 1.0
+O: 1 2 : 8 : 3 4 : 1.0
+O: 1 3 : 8 : 3 4 : 1.0
+O: 2 0 : 8 : 3 4 : 1.0
+O: 2 1 : 8 : 3 4 : 1.0
+O: 2 2 : 8 : 3 4 : 1.0
+O: 2 3 : 8 : 3 4 : 1.0
+O: 3 0 : 8 : 3 4 : 1.0
+O: 3 1 : 8 : 3 4 : 1.0
+O: 3 2 : 8 : 3 4 : 1.0
+O: 3 3 : 8 : 3 4 : 1.0
+O: 0 0 : 53 : 4 0 : 1.0
+O: 0 1 : 53 : 4 0 : 1.0
+O: 0 2 : 53 : 4 0 : 1.0
+O: 0 3 : 53 : 4 0 : 1.0
+O: 1 0 : 53 : 4 0 : 1.0
+O: 1 1 : 53 : 4 0 : 1.0
+O: 1 2 : 53 : 4 0 : 1.0
+O: 1 3 : 53 : 4 0 : 1.0
+O: 2 0 : 53 : 4 0 : 1.0
+O: 2 1 : 53 : 4 0 : 1.0
+O: 2 2 : 53 : 4 0 : 1.0
+O: 2 3 : 53 : 4 0 : 1.0
+O: 3 0 : 53 : 4 0 : 1.0
+O: 3 1 : 53 : 4 0 : 1.0
+O: 3 2 : 53 : 4 0 : 1.0
+O: 3 3 : 53 : 4 0 : 1.0
+O: 0 0 : 59 : 4 0 : 1.0
+O: 0 1 : 59 : 4 0 : 1.0
+O: 0 2 : 59 : 4 0 : 1.0
+O: 0 3 : 59 : 4 0 : 1.0
+O: 1 0 : 59 : 4 0 : 1.0
+O: 1 1 : 59 : 4 0 : 1.0
+O: 1 2 : 59 : 4 0 : 1.0
+O: 1 3 : 59 : 4 0 : 1.0
+O: 2 0 : 59 : 4 0 : 1.0
+O: 2 1 : 59 : 4 0 : 1.0
+O: 2 2 : 59 : 4 0 : 1.0
+O: 2 3 : 59 : 4 0 : 1.0
+O: 3 0 : 59 : 4 0 : 1.0
+O: 3 1 : 59 : 4 0 : 1.0
+O: 3 2 : 59 : 4 0 : 1.0
+O: 3 3 : 59 : 4 0 : 1.0
+O: 0 0 : 54 : 4 1 : 1.0
+O: 0 1 : 54 : 4 1 : 1.0
+O: 0 2 : 54 : 4 1 : 1.0
+O: 0 3 : 54 : 4 1 : 1.0
+O: 1 0 : 54 : 4 1 : 1.0
+O: 1 1 : 54 : 4 1 : 1.0
+O: 1 2 : 54 : 4 1 : 1.0
+O: 1 3 : 54 : 4 1 : 1.0
+O: 2 0 : 54 : 4 1 : 1.0
+O: 2 1 : 54 : 4 1 : 1.0
+O: 2 2 : 54 : 4 1 : 1.0
+O: 2 3 : 54 : 4 1 : 1.0
+O: 3 0 : 54 : 4 1 : 1.0
+O: 3 1 : 54 : 4 1 : 1.0
+O: 3 2 : 54 : 4 1 : 1.0
+O: 3 3 : 54 : 4 1 : 1.0
+O: 0 0 : 57 : 4 1 : 1.0
+O: 0 1 : 57 : 4 1 : 1.0
+O: 0 2 : 57 : 4 1 : 1.0
+O: 0 3 : 57 : 4 1 : 1.0
+O: 1 0 : 57 : 4 1 : 1.0
+O: 1 1 : 57 : 4 1 : 1.0
+O: 1 2 : 57 : 4 1 : 1.0
+O: 1 3 : 57 : 4 1 : 1.0
+O: 2 0 : 57 : 4 1 : 1.0
+O: 2 1 : 57 : 4 1 : 1.0
+O: 2 2 : 57 : 4 1 : 1.0
+O: 2 3 : 57 : 4 1 : 1.0
+O: 3 0 : 57 : 4 1 : 1.0
+O: 3 1 : 57 : 4 1 : 1.0
+O: 3 2 : 57 : 4 1 : 1.0
+O: 3 3 : 57 : 4 1 : 1.0
+O: 0 0 : 58 : 4 1 : 1.0
+O: 0 1 : 58 : 4 1 : 1.0
+O: 0 2 : 58 : 4 1 : 1.0
+O: 0 3 : 58 : 4 1 : 1.0
+O: 1 0 : 58 : 4 1 : 1.0
+O: 1 1 : 58 : 4 1 : 1.0
+O: 1 2 : 58 : 4 1 : 1.0
+O: 1 3 : 58 : 4 1 : 1.0
+O: 2 0 : 58 : 4 1 : 1.0
+O: 2 1 : 58 : 4 1 : 1.0
+O: 2 2 : 58 : 4 1 : 1.0
+O: 2 3 : 58 : 4 1 : 1.0
+O: 3 0 : 58 : 4 1 : 1.0
+O: 3 1 : 58 : 4 1 : 1.0
+O: 3 2 : 58 : 4 1 : 1.0
+O: 3 3 : 58 : 4 1 : 1.0
+O: 0 0 : 85 : 4 1 : 1.0
+O: 0 1 : 85 : 4 1 : 1.0
+O: 0 2 : 85 : 4 1 : 1.0
+O: 0 3 : 85 : 4 1 : 1.0
+O: 1 0 : 85 : 4 1 : 1.0
+O: 1 1 : 85 : 4 1 : 1.0
+O: 1 2 : 85 : 4 1 : 1.0
+O: 1 3 : 85 : 4 1 : 1.0
+O: 2 0 : 85 : 4 1 : 1.0
+O: 2 1 : 85 : 4 1 : 1.0
+O: 2 2 : 85 : 4 1 : 1.0
+O: 2 3 : 85 : 4 1 : 1.0
+O: 3 0 : 85 : 4 1 : 1.0
+O: 3 1 : 85 : 4 1 : 1.0
+O: 3 2 : 85 : 4 1 : 1.0
+O: 3 3 : 85 : 4 1 : 1.0
+O: 0 0 : 86 : 4 1 : 1.0
+O: 0 1 : 86 : 4 1 : 1.0
+O: 0 2 : 86 : 4 1 : 1.0
+O: 0 3 : 86 : 4 1 : 1.0
+O: 1 0 : 86 : 4 1 : 1.0
+O: 1 1 : 86 : 4 1 : 1.0
+O: 1 2 : 86 : 4 1 : 1.0
+O: 1 3 : 86 : 4 1 : 1.0
+O: 2 0 : 86 : 4 1 : 1.0
+O: 2 1 : 86 : 4 1 : 1.0
+O: 2 2 : 86 : 4 1 : 1.0
+O: 2 3 : 86 : 4 1 : 1.0
+O: 3 0 : 86 : 4 1 : 1.0
+O: 3 1 : 86 : 4 1 : 1.0
+O: 3 2 : 86 : 4 1 : 1.0
+O: 3 3 : 86 : 4 1 : 1.0
+O: 0 0 : 55 : 4 2 : 1.0
+O: 0 1 : 55 : 4 2 : 1.0
+O: 0 2 : 55 : 4 2 : 1.0
+O: 0 3 : 55 : 4 2 : 1.0
+O: 1 0 : 55 : 4 2 : 1.0
+O: 1 1 : 55 : 4 2 : 1.0
+O: 1 2 : 55 : 4 2 : 1.0
+O: 1 3 : 55 : 4 2 : 1.0
+O: 2 0 : 55 : 4 2 : 1.0
+O: 2 1 : 55 : 4 2 : 1.0
+O: 2 2 : 55 : 4 2 : 1.0
+O: 2 3 : 55 : 4 2 : 1.0
+O: 3 0 : 55 : 4 2 : 1.0
+O: 3 1 : 55 : 4 2 : 1.0
+O: 3 2 : 55 : 4 2 : 1.0
+O: 3 3 : 55 : 4 2 : 1.0
+O: 0 0 : 87 : 4 2 : 1.0
+O: 0 1 : 87 : 4 2 : 1.0
+O: 0 2 : 87 : 4 2 : 1.0
+O: 0 3 : 87 : 4 2 : 1.0
+O: 1 0 : 87 : 4 2 : 1.0
+O: 1 1 : 87 : 4 2 : 1.0
+O: 1 2 : 87 : 4 2 : 1.0
+O: 1 3 : 87 : 4 2 : 1.0
+O: 2 0 : 87 : 4 2 : 1.0
+O: 2 1 : 87 : 4 2 : 1.0
+O: 2 2 : 87 : 4 2 : 1.0
+O: 2 3 : 87 : 4 2 : 1.0
+O: 3 0 : 87 : 4 2 : 1.0
+O: 3 1 : 87 : 4 2 : 1.0
+O: 3 2 : 87 : 4 2 : 1.0
+O: 3 3 : 87 : 4 2 : 1.0
+O: 0 0 : 56 : 4 3 : 1.0
+O: 0 1 : 56 : 4 3 : 1.0
+O: 0 2 : 56 : 4 3 : 1.0
+O: 0 3 : 56 : 4 3 : 1.0
+O: 1 0 : 56 : 4 3 : 1.0
+O: 1 1 : 56 : 4 3 : 1.0
+O: 1 2 : 56 : 4 3 : 1.0
+O: 1 3 : 56 : 4 3 : 1.0
+O: 2 0 : 56 : 4 3 : 1.0
+O: 2 1 : 56 : 4 3 : 1.0
+O: 2 2 : 56 : 4 3 : 1.0
+O: 2 3 : 56 : 4 3 : 1.0
+O: 3 0 : 56 : 4 3 : 1.0
+O: 3 1 : 56 : 4 3 : 1.0
+O: 3 2 : 56 : 4 3 : 1.0
+O: 3 3 : 56 : 4 3 : 1.0
+O: 0 0 : 84 : 4 3 : 1.0
+O: 0 1 : 84 : 4 3 : 1.0
+O: 0 2 : 84 : 4 3 : 1.0
+O: 0 3 : 84 : 4 3 : 1.0
+O: 1 0 : 84 : 4 3 : 1.0
+O: 1 1 : 84 : 4 3 : 1.0
+O: 1 2 : 84 : 4 3 : 1.0
+O: 1 3 : 84 : 4 3 : 1.0
+O: 2 0 : 84 : 4 3 : 1.0
+O: 2 1 : 84 : 4 3 : 1.0
+O: 2 2 : 84 : 4 3 : 1.0
+O: 2 3 : 84 : 4 3 : 1.0
+O: 3 0 : 84 : 4 3 : 1.0
+O: 3 1 : 84 : 4 3 : 1.0
+O: 3 2 : 84 : 4 3 : 1.0
+O: 3 3 : 84 : 4 3 : 1.0
+O: 0 0 : 52 : 4 4 : 1.0
+O: 0 1 : 52 : 4 4 : 1.0
+O: 0 2 : 52 : 4 4 : 1.0
+O: 0 3 : 52 : 4 4 : 1.0
+O: 1 0 : 52 : 4 4 : 1.0
+O: 1 1 : 52 : 4 4 : 1.0
+O: 1 2 : 52 : 4 4 : 1.0
+O: 1 3 : 52 : 4 4 : 1.0
+O: 2 0 : 52 : 4 4 : 1.0
+O: 2 1 : 52 : 4 4 : 1.0
+O: 2 2 : 52 : 4 4 : 1.0
+O: 2 3 : 52 : 4 4 : 1.0
+O: 3 0 : 52 : 4 4 : 1.0
+O: 3 1 : 52 : 4 4 : 1.0
+O: 3 2 : 52 : 4 4 : 1.0
+O: 3 3 : 52 : 4 4 : 1.0
+R: 0 0 : 4 : -0.2
+R: 0 1 : 4 : -0.2
+R: 0 2 : 4 : -5.2
+R: 0 3 : 4 : -0.2
+R: 1 0 : 4 : -0.2
+R: 1 1 : 4 : -0.2
+R: 1 2 : 4 : -5.2
+R: 1 3 : 4 : -0.2
+R: 2 0 : 4 : 9.8
+R: 2 1 : 4 : 9.8
+R: 2 2 : 4 : 4.8
+R: 2 3 : 4 : 9.8
+R: 3 0 : 4 : -0.2
+R: 3 1 : 4 : -0.2
+R: 3 2 : 4 : -5.2
+R: 3 3 : 4 : -0.2
+R: 0 0 : 5 : -0.2
+R: 0 1 : 5 : -0.2
+R: 0 2 : 5 : -0.2
+R: 0 3 : 5 : -0.2
+R: 1 0 : 5 : -0.2
+R: 1 1 : 5 : -0.2
+R: 1 2 : 5 : -0.2
+R: 1 3 : 5 : -0.2
+R: 2 0 : 5 : 9.8
+R: 2 1 : 5 : 9.8
+R: 2 2 : 5 : 9.8
+R: 2 3 : 5 : 9.8
+R: 3 0 : 5 : -0.2
+R: 3 1 : 5 : -0.2
+R: 3 2 : 5 : -0.2
+R: 3 3 : 5 : -0.2
+R: 0 0 : 6 : -0.2
+R: 0 1 : 6 : -0.2
+R: 0 2 : 6 : -5.2
+R: 0 3 : 6 : -0.2
+R: 1 0 : 6 : -0.2
+R: 1 1 : 6 : -0.2
+R: 1 2 : 6 : -5.2
+R: 1 3 : 6 : -0.2
+R: 2 0 : 6 : 9.8
+R: 2 1 : 6 : 9.8
+R: 2 2 : 6 : 4.8
+R: 2 3 : 6 : 9.8
+R: 3 0 : 6 : -0.2
+R: 3 1 : 6 : -0.2
+R: 3 2 : 6 : -5.2
+R: 3 3 : 6 : -0.2
+R: 0 0 : 7 : -0.2
+R: 0 1 : 7 : -0.2
+R: 0 2 : 7 : -5.2
+R: 0 3 : 7 : -0.2
+R: 1 0 : 7 : -0.2
+R: 1 1 : 7 : -0.2
+R: 1 2 : 7 : -5.2
+R: 1 3 : 7 : -0.2
+R: 2 0 : 7 : 9.8
+R: 2 1 : 7 : 9.8
+R: 2 2 : 7 : 4.8
+R: 2 3 : 7 : 9.8
+R: 3 0 : 7 : -0.2
+R: 3 1 : 7 : -0.2
+R: 3 2 : 7 : -5.2
+R: 3 3 : 7 : -0.2
+R: 0 0 : 8 : -0.2
+R: 0 1 : 8 : -0.2
+R: 0 2 : 8 : -5.2
+R: 0 3 : 8 : -0.2
+R: 1 0 : 8 : -0.2
+R: 1 1 : 8 : -0.2
+R: 1 2 : 8 : -5.2
+R: 1 3 : 8 : -0.2
+R: 2 0 : 8 : 9.8
+R: 2 1 : 8 : 9.8
+R: 2 2 : 8 : 4.8
+R: 2 3 : 8 : 9.8
+R: 3 0 : 8 : -0.2
+R: 3 1 : 8 : -0.2
+R: 3 2 : 8 : -5.2
+R: 3 3 : 8 : -0.2
+R: 0 0 : 9 : -0.2
+R: 0 1 : 9 : -0.2
+R: 0 2 : 9 : -0.2
+R: 0 3 : 9 : -0.2
+R: 1 0 : 9 : -0.2
+R: 1 1 : 9 : -0.2
+R: 1 2 : 9 : -0.2
+R: 1 3 : 9 : -0.2
+R: 2 0 : 9 : 9.8
+R: 2 1 : 9 : 9.8
+R: 2 2 : 9 : 9.8
+R: 2 3 : 9 : 9.8
+R: 3 0 : 9 : -0.2
+R: 3 1 : 9 : -0.2
+R: 3 2 : 9 : -0.2
+R: 3 3 : 9 : -0.2
+R: 0 0 : 10 : -0.2
+R: 0 1 : 10 : -0.2
+R: 0 2 : 10 : -5.2
+R: 0 3 : 10 : -0.2
+R: 1 0 : 10 : -0.2
+R: 1 1 : 10 : -0.2
+R: 1 2 : 10 : -5.2
+R: 1 3 : 10 : -0.2
+R: 2 0 : 10 : 9.8
+R: 2 1 : 10 : 9.8
+R: 2 2 : 10 : 4.8
+R: 2 3 : 10 : 9.8
+R: 3 0 : 10 : -0.2
+R: 3 1 : 10 : -0.2
+R: 3 2 : 10 : -5.2
+R: 3 3 : 10 : -0.2
+R: 0 0 : 11 : -0.2
+R: 0 1 : 11 : -0.2
+R: 0 2 : 11 : -0.2
+R: 0 3 : 11 : -0.2
+R: 1 0 : 11 : -0.2
+R: 1 1 : 11 : -0.2
+R: 1 2 : 11 : -0.2
+R: 1 3 : 11 : -0.2
+R: 2 0 : 11 : 9.8
+R: 2 1 : 11 : 9.8
+R: 2 2 : 11 : 9.8
+R: 2 3 : 11 : 9.8
+R: 3 0 : 11 : -0.2
+R: 3 1 : 11 : -0.2
+R: 3 2 : 11 : -0.2
+R: 3 3 : 11 : -0.2
+R: 0 0 : 12 : -0.2
+R: 0 1 : 12 : -0.2
+R: 0 2 : 12 : 9.8
+R: 0 3 : 12 : -0.2
+R: 1 0 : 12 : -0.2
+R: 1 1 : 12 : -0.2
+R: 1 2 : 12 : 9.8
+R: 1 3 : 12 : -0.2
+R: 2 0 : 12 : 9.8
+R: 2 1 : 12 : 9.8
+R: 2 2 : 12 : 19.8
+R: 2 3 : 12 : 9.8
+R: 3 0 : 12 : -0.2
+R: 3 1 : 12 : -0.2
+R: 3 2 : 12 : 9.8
+R: 3 3 : 12 : -0.2
+R: 0 0 : 13 : -0.2
+R: 0 1 : 13 : -0.2
+R: 0 2 : 13 : -5.2
+R: 0 3 : 13 : -0.2
+R: 1 0 : 13 : -0.2
+R: 1 1 : 13 : -0.2
+R: 1 2 : 13 : -5.2
+R: 1 3 : 13 : -0.2
+R: 2 0 : 13 : 9.8
+R: 2 1 : 13 : 9.8
+R: 2 2 : 13 : 4.8
+R: 2 3 : 13 : 9.8
+R: 3 0 : 13 : -0.2
+R: 3 1 : 13 : -0.2
+R: 3 2 : 13 : -5.2
+R: 3 3 : 13 : -0.2
+R: 0 0 : 14 : -0.2
+R: 0 1 : 14 : -0.2
+R: 0 2 : 14 : -5.2
+R: 0 3 : 14 : -0.2
+R: 1 0 : 14 : -0.2
+R: 1 1 : 14 : -0.2
+R: 1 2 : 14 : -5.2
+R: 1 3 : 14 : -0.2
+R: 2 0 : 14 : 9.8
+R: 2 1 : 14 : 9.8
+R: 2 2 : 14 : 4.8
+R: 2 3 : 14 : 9.8
+R: 3 0 : 14 : -0.2
+R: 3 1 : 14 : -0.2
+R: 3 2 : 14 : -5.2
+R: 3 3 : 14 : -0.2
+R: 0 0 : 15 : -0.2
+R: 0 1 : 15 : -0.2
+R: 0 2 : 15 : -0.2
+R: 0 3 : 15 : -0.2
+R: 1 0 : 15 : -0.2
+R: 1 1 : 15 : -0.2
+R: 1 2 : 15 : -0.2
+R: 1 3 : 15 : -0.2
+R: 2 0 : 15 : 9.8
+R: 2 1 : 15 : 9.8
+R: 2 2 : 15 : 9.8
+R: 2 3 : 15 : 9.8
+R: 3 0 : 15 : -0.2
+R: 3 1 : 15 : -0.2
+R: 3 2 : 15 : -0.2
+R: 3 3 : 15 : -0.2
+R: 0 0 : 16 : -0.2
+R: 0 1 : 16 : -0.2
+R: 0 2 : 16 : -5.2
+R: 0 3 : 16 : -0.2
+R: 1 0 : 16 : -0.2
+R: 1 1 : 16 : -0.2
+R: 1 2 : 16 : -5.2
+R: 1 3 : 16 : -0.2
+R: 2 0 : 16 : -5.2
+R: 2 1 : 16 : -5.2
+R: 2 2 : 16 : -10.2
+R: 2 3 : 16 : -5.2
+R: 3 0 : 16 : -0.2
+R: 3 1 : 16 : -0.2
+R: 3 2 : 16 : -5.2
+R: 3 3 : 16 : -0.2
+R: 0 0 : 17 : -0.2
+R: 0 1 : 17 : -0.2
+R: 0 2 : 17 : -0.2
+R: 0 3 : 17 : -0.2
+R: 1 0 : 17 : -0.2
+R: 1 1 : 17 : -0.2
+R: 1 2 : 17 : -0.2
+R: 1 3 : 17 : -0.2
+R: 2 0 : 17 : -5.2
+R: 2 1 : 17 : -5.2
+R: 2 2 : 17 : -5.2
+R: 2 3 : 17 : -5.2
+R: 3 0 : 17 : -0.2
+R: 3 1 : 17 : -0.2
+R: 3 2 : 17 : -0.2
+R: 3 3 : 17 : -0.2
+R: 0 0 : 18 : -0.2
+R: 0 1 : 18 : -0.2
+R: 0 2 : 18 : -5.2
+R: 0 3 : 18 : -0.2
+R: 1 0 : 18 : -0.2
+R: 1 1 : 18 : -0.2
+R: 1 2 : 18 : -5.2
+R: 1 3 : 18 : -0.2
+R: 2 0 : 18 : -5.2
+R: 2 1 : 18 : -5.2
+R: 2 2 : 18 : -10.2
+R: 2 3 : 18 : -5.2
+R: 3 0 : 18 : -0.2
+R: 3 1 : 18 : -0.2
+R: 3 2 : 18 : -5.2
+R: 3 3 : 18 : -0.2
+R: 0 0 : 19 : -0.2
+R: 0 1 : 19 : -0.2
+R: 0 2 : 19 : -5.2
+R: 0 3 : 19 : -0.2
+R: 1 0 : 19 : -0.2
+R: 1 1 : 19 : -0.2
+R: 1 2 : 19 : -5.2
+R: 1 3 : 19 : -0.2
+R: 2 0 : 19 : -5.2
+R: 2 1 : 19 : -5.2
+R: 2 2 : 19 : -10.2
+R: 2 3 : 19 : -5.2
+R: 3 0 : 19 : -0.2
+R: 3 1 : 19 : -0.2
+R: 3 2 : 19 : -5.2
+R: 3 3 : 19 : -0.2
+R: 0 0 : 20 : -0.2
+R: 0 1 : 20 : -0.2
+R: 0 2 : 20 : -5.2
+R: 0 3 : 20 : -0.2
+R: 1 0 : 20 : -0.2
+R: 1 1 : 20 : -0.2
+R: 1 2 : 20 : -5.2
+R: 1 3 : 20 : -0.2
+R: 2 0 : 20 : -0.2
+R: 2 1 : 20 : -0.2
+R: 2 2 : 20 : -5.2
+R: 2 3 : 20 : -0.2
+R: 3 0 : 20 : -0.2
+R: 3 1 : 20 : -0.2
+R: 3 2 : 20 : -5.2
+R: 3 3 : 20 : -0.2
+R: 0 0 : 21 : -0.2
+R: 0 1 : 21 : -0.2
+R: 0 2 : 21 : -0.2
+R: 0 3 : 21 : -0.2
+R: 1 0 : 21 : -0.2
+R: 1 1 : 21 : -0.2
+R: 1 2 : 21 : -0.2
+R: 1 3 : 21 : -0.2
+R: 2 0 : 21 : -0.2
+R: 2 1 : 21 : -0.2
+R: 2 2 : 21 : -0.2
+R: 2 3 : 21 : -0.2
+R: 3 0 : 21 : -0.2
+R: 3 1 : 21 : -0.2
+R: 3 2 : 21 : -0.2
+R: 3 3 : 21 : -0.2
+R: 0 0 : 22 : -0.2
+R: 0 1 : 22 : -0.2
+R: 0 2 : 22 : -5.2
+R: 0 3 : 22 : -0.2
+R: 1 0 : 22 : -0.2
+R: 1 1 : 22 : -0.2
+R: 1 2 : 22 : -5.2
+R: 1 3 : 22 : -0.2
+R: 2 0 : 22 : -0.2
+R: 2 1 : 22 : -0.2
+R: 2 2 : 22 : -5.2
+R: 2 3 : 22 : -0.2
+R: 3 0 : 22 : -0.2
+R: 3 1 : 22 : -0.2
+R: 3 2 : 22 : -5.2
+R: 3 3 : 22 : -0.2
+R: 0 0 : 23 : -0.2
+R: 0 1 : 23 : -0.2
+R: 0 2 : 23 : -0.2
+R: 0 3 : 23 : -0.2
+R: 1 0 : 23 : -0.2
+R: 1 1 : 23 : -0.2
+R: 1 2 : 23 : -0.2
+R: 1 3 : 23 : -0.2
+R: 2 0 : 23 : -0.2
+R: 2 1 : 23 : -0.2
+R: 2 2 : 23 : -10.2
+R: 2 3 : 23 : -0.2
+R: 3 0 : 23 : -0.2
+R: 3 1 : 23 : -0.2
+R: 3 2 : 23 : -0.2
+R: 3 3 : 23 : -0.2
+R: 0 0 : 24 : -0.2
+R: 0 1 : 24 : -0.2
+R: 0 2 : 24 : 9.8
+R: 0 3 : 24 : -0.2
+R: 1 0 : 24 : -0.2
+R: 1 1 : 24 : -0.2
+R: 1 2 : 24 : 9.8
+R: 1 3 : 24 : -0.2
+R: 2 0 : 24 : -0.2
+R: 2 1 : 24 : -0.2
+R: 2 2 : 24 : 9.8
+R: 2 3 : 24 : -0.2
+R: 3 0 : 24 : -0.2
+R: 3 1 : 24 : -0.2
+R: 3 2 : 24 : 9.8
+R: 3 3 : 24 : -0.2
+R: 0 0 : 25 : -0.2
+R: 0 1 : 25 : -0.2
+R: 0 2 : 25 : -5.2
+R: 0 3 : 25 : -0.2
+R: 1 0 : 25 : -0.2
+R: 1 1 : 25 : -0.2
+R: 1 2 : 25 : -5.2
+R: 1 3 : 25 : -0.2
+R: 2 0 : 25 : -0.2
+R: 2 1 : 25 : -0.2
+R: 2 2 : 25 : -5.2
+R: 2 3 : 25 : -0.2
+R: 3 0 : 25 : -0.2
+R: 3 1 : 25 : -0.2
+R: 3 2 : 25 : -5.2
+R: 3 3 : 25 : -0.2
+R: 0 0 : 26 : -0.2
+R: 0 1 : 26 : -0.2
+R: 0 2 : 26 : -5.2
+R: 0 3 : 26 : -0.2
+R: 1 0 : 26 : -0.2
+R: 1 1 : 26 : -0.2
+R: 1 2 : 26 : -5.2
+R: 1 3 : 26 : -0.2
+R: 2 0 : 26 : -0.2
+R: 2 1 : 26 : -0.2
+R: 2 2 : 26 : -5.2
+R: 2 3 : 26 : -0.2
+R: 3 0 : 26 : -0.2
+R: 3 1 : 26 : -0.2
+R: 3 2 : 26 : -5.2
+R: 3 3 : 26 : -0.2
+R: 0 0 : 27 : -0.2
+R: 0 1 : 27 : -0.2
+R: 0 2 : 27 : -0.2
+R: 0 3 : 27 : -0.2
+R: 1 0 : 27 : -0.2
+R: 1 1 : 27 : -0.2
+R: 1 2 : 27 : -0.2
+R: 1 3 : 27 : -0.2
+R: 2 0 : 27 : -0.2
+R: 2 1 : 27 : -0.2
+R: 2 2 : 27 : -0.2
+R: 2 3 : 27 : -0.2
+R: 3 0 : 27 : -0.2
+R: 3 1 : 27 : -0.2
+R: 3 2 : 27 : -0.2
+R: 3 3 : 27 : -0.2
+R: 0 0 : 28 : -0.2
+R: 0 1 : 28 : -0.2
+R: 0 2 : 28 : -5.2
+R: 0 3 : 28 : -0.2
+R: 1 0 : 28 : -0.2
+R: 1 1 : 28 : -0.2
+R: 1 2 : 28 : -5.2
+R: 1 3 : 28 : -0.2
+R: 2 0 : 28 : -5.2
+R: 2 1 : 28 : -5.2
+R: 2 2 : 28 : -10.2
+R: 2 3 : 28 : -5.2
+R: 3 0 : 28 : -0.2
+R: 3 1 : 28 : -0.2
+R: 3 2 : 28 : -5.2
+R: 3 3 : 28 : -0.2
+R: 0 0 : 29 : -0.2
+R: 0 1 : 29 : -0.2
+R: 0 2 : 29 : -0.2
+R: 0 3 : 29 : -0.2
+R: 1 0 : 29 : -0.2
+R: 1 1 : 29 : -0.2
+R: 1 2 : 29 : -0.2
+R: 1 3 : 29 : -0.2
+R: 2 0 : 29 : -5.2
+R: 2 1 : 29 : -5.2
+R: 2 2 : 29 : -5.2
+R: 2 3 : 29 : -5.2
+R: 3 0 : 29 : -0.2
+R: 3 1 : 29 : -0.2
+R: 3 2 : 29 : -0.2
+R: 3 3 : 29 : -0.2
+R: 0 0 : 30 : -0.2
+R: 0 1 : 30 : -0.2
+R: 0 2 : 30 : -5.2
+R: 0 3 : 30 : -0.2
+R: 1 0 : 30 : -0.2
+R: 1 1 : 30 : -0.2
+R: 1 2 : 30 : -5.2
+R: 1 3 : 30 : -0.2
+R: 2 0 : 30 : -5.2
+R: 2 1 : 30 : -5.2
+R: 2 2 : 30 : -10.2
+R: 2 3 : 30 : -5.2
+R: 3 0 : 30 : -0.2
+R: 3 1 : 30 : -0.2
+R: 3 2 : 30 : -5.2
+R: 3 3 : 30 : -0.2
+R: 0 0 : 31 : -0.2
+R: 0 1 : 31 : -0.2
+R: 0 2 : 31 : -5.2
+R: 0 3 : 31 : -0.2
+R: 1 0 : 31 : -0.2
+R: 1 1 : 31 : -0.2
+R: 1 2 : 31 : -5.2
+R: 1 3 : 31 : -0.2
+R: 2 0 : 31 : -5.2
+R: 2 1 : 31 : -5.2
+R: 2 2 : 31 : -10.2
+R: 2 3 : 31 : -5.2
+R: 3 0 : 31 : -0.2
+R: 3 1 : 31 : -0.2
+R: 3 2 : 31 : -5.2
+R: 3 3 : 31 : -0.2
+R: 0 0 : 32 : -0.2
+R: 0 1 : 32 : -0.2
+R: 0 2 : 32 : -5.2
+R: 0 3 : 32 : -0.2
+R: 1 0 : 32 : -0.2
+R: 1 1 : 32 : -0.2
+R: 1 2 : 32 : -5.2
+R: 1 3 : 32 : -0.2
+R: 2 0 : 32 : -5.2
+R: 2 1 : 32 : -5.2
+R: 2 2 : 32 : -10.2
+R: 2 3 : 32 : -5.2
+R: 3 0 : 32 : -0.2
+R: 3 1 : 32 : -0.2
+R: 3 2 : 32 : -5.2
+R: 3 3 : 32 : -0.2
+R: 0 0 : 33 : -0.2
+R: 0 1 : 33 : -0.2
+R: 0 2 : 33 : -0.2
+R: 0 3 : 33 : -0.2
+R: 1 0 : 33 : -0.2
+R: 1 1 : 33 : -0.2
+R: 1 2 : 33 : -0.2
+R: 1 3 : 33 : -0.2
+R: 2 0 : 33 : -5.2
+R: 2 1 : 33 : -5.2
+R: 2 2 : 33 : -5.2
+R: 2 3 : 33 : -5.2
+R: 3 0 : 33 : -0.2
+R: 3 1 : 33 : -0.2
+R: 3 2 : 33 : -0.2
+R: 3 3 : 33 : -0.2
+R: 0 0 : 34 : -0.2
+R: 0 1 : 34 : -0.2
+R: 0 2 : 34 : -5.2
+R: 0 3 : 34 : -0.2
+R: 1 0 : 34 : -0.2
+R: 1 1 : 34 : -0.2
+R: 1 2 : 34 : -5.2
+R: 1 3 : 34 : -0.2
+R: 2 0 : 34 : -5.2
+R: 2 1 : 34 : -5.2
+R: 2 2 : 34 : -10.2
+R: 2 3 : 34 : -5.2
+R: 3 0 : 34 : -0.2
+R: 3 1 : 34 : -0.2
+R: 3 2 : 34 : -5.2
+R: 3 3 : 34 : -0.2
+R: 0 0 : 35 : -0.2
+R: 0 1 : 35 : -0.2
+R: 0 2 : 35 : -0.2
+R: 0 3 : 35 : -0.2
+R: 1 0 : 35 : -0.2
+R: 1 1 : 35 : -0.2
+R: 1 2 : 35 : -0.2
+R: 1 3 : 35 : -0.2
+R: 2 0 : 35 : -5.2
+R: 2 1 : 35 : -5.2
+R: 2 2 : 35 : -5.2
+R: 2 3 : 35 : -5.2
+R: 3 0 : 35 : -0.2
+R: 3 1 : 35 : -0.2
+R: 3 2 : 35 : -0.2
+R: 3 3 : 35 : -0.2
+R: 0 0 : 36 : -0.2
+R: 0 1 : 36 : -0.2
+R: 0 2 : 36 : 9.8
+R: 0 3 : 36 : -0.2
+R: 1 0 : 36 : -0.2
+R: 1 1 : 36 : -0.2
+R: 1 2 : 36 : 9.8
+R: 1 3 : 36 : -0.2
+R: 2 0 : 36 : -5.2
+R: 2 1 : 36 : -5.2
+R: 2 2 : 36 : 4.8
+R: 2 3 : 36 : -5.2
+R: 3 0 : 36 : -0.2
+R: 3 1 : 36 : -0.2
+R: 3 2 : 36 : 9.8
+R: 3 3 : 36 : -0.2
+R: 0 0 : 37 : -0.2
+R: 0 1 : 37 : -0.2
+R: 0 2 : 37 : -5.2
+R: 0 3 : 37 : -0.2
+R: 1 0 : 37 : -0.2
+R: 1 1 : 37 : -0.2
+R: 1 2 : 37 : -5.2
+R: 1 3 : 37 : -0.2
+R: 2 0 : 37 : -5.2
+R: 2 1 : 37 : -5.2
+R: 2 2 : 37 : -10.2
+R: 2 3 : 37 : -5.2
+R: 3 0 : 37 : -0.2
+R: 3 1 : 37 : -0.2
+R: 3 2 : 37 : -5.2
+R: 3 3 : 37 : -0.2
+R: 0 0 : 38 : -0.2
+R: 0 1 : 38 : -0.2
+R: 0 2 : 38 : -5.2
+R: 0 3 : 38 : -0.2
+R: 1 0 : 38 : -0.2
+R: 1 1 : 38 : -0.2
+R: 1 2 : 38 : -5.2
+R: 1 3 : 38 : -0.2
+R: 2 0 : 38 : -5.2
+R: 2 1 : 38 : -5.2
+R: 2 2 : 38 : -10.2
+R: 2 3 : 38 : -5.2
+R: 3 0 : 38 : -0.2
+R: 3 1 : 38 : -0.2
+R: 3 2 : 38 : -5.2
+R: 3 3 : 38 : -0.2
+R: 0 0 : 39 : -0.2
+R: 0 1 : 39 : -0.2
+R: 0 2 : 39 : -0.2
+R: 0 3 : 39 : -0.2
+R: 1 0 : 39 : -0.2
+R: 1 1 : 39 : -0.2
+R: 1 2 : 39 : -0.2
+R: 1 3 : 39 : -0.2
+R: 2 0 : 39 : -5.2
+R: 2 1 : 39 : -5.2
+R: 2 2 : 39 : -5.2
+R: 2 3 : 39 : -5.2
+R: 3 0 : 39 : -0.2
+R: 3 1 : 39 : -0.2
+R: 3 2 : 39 : -0.2
+R: 3 3 : 39 : -0.2
+R: 0 0 : 40 : -0.2
+R: 0 1 : 40 : -0.2
+R: 0 2 : 40 : -5.2
+R: 0 3 : 40 : -0.2
+R: 1 0 : 40 : -0.2
+R: 1 1 : 40 : -0.2
+R: 1 2 : 40 : -5.2
+R: 1 3 : 40 : -0.2
+R: 2 0 : 40 : -5.2
+R: 2 1 : 40 : -5.2
+R: 2 2 : 40 : -10.2
+R: 2 3 : 40 : -5.2
+R: 3 0 : 40 : -0.2
+R: 3 1 : 40 : -0.2
+R: 3 2 : 40 : -5.2
+R: 3 3 : 40 : -0.2
+R: 0 0 : 41 : -0.2
+R: 0 1 : 41 : -0.2
+R: 0 2 : 41 : -0.2
+R: 0 3 : 41 : -0.2
+R: 1 0 : 41 : -0.2
+R: 1 1 : 41 : -0.2
+R: 1 2 : 41 : -0.2
+R: 1 3 : 41 : -0.2
+R: 2 0 : 41 : -5.2
+R: 2 1 : 41 : -5.2
+R: 2 2 : 41 : -5.2
+R: 2 3 : 41 : -5.2
+R: 3 0 : 41 : -0.2
+R: 3 1 : 41 : -0.2
+R: 3 2 : 41 : -0.2
+R: 3 3 : 41 : -0.2
+R: 0 0 : 42 : -0.2
+R: 0 1 : 42 : -0.2
+R: 0 2 : 42 : -5.2
+R: 0 3 : 42 : -0.2
+R: 1 0 : 42 : -0.2
+R: 1 1 : 42 : -0.2
+R: 1 2 : 42 : -5.2
+R: 1 3 : 42 : -0.2
+R: 2 0 : 42 : -5.2
+R: 2 1 : 42 : -5.2
+R: 2 2 : 42 : -10.2
+R: 2 3 : 42 : -5.2
+R: 3 0 : 42 : -0.2
+R: 3 1 : 42 : -0.2
+R: 3 2 : 42 : -5.2
+R: 3 3 : 42 : -0.2
+R: 0 0 : 43 : -0.2
+R: 0 1 : 43 : -0.2
+R: 0 2 : 43 : -5.2
+R: 0 3 : 43 : -0.2
+R: 1 0 : 43 : -0.2
+R: 1 1 : 43 : -0.2
+R: 1 2 : 43 : -5.2
+R: 1 3 : 43 : -0.2
+R: 2 0 : 43 : -5.2
+R: 2 1 : 43 : -5.2
+R: 2 2 : 43 : -10.2
+R: 2 3 : 43 : -5.2
+R: 3 0 : 43 : -0.2
+R: 3 1 : 43 : -0.2
+R: 3 2 : 43 : -5.2
+R: 3 3 : 43 : -0.2
+R: 0 0 : 44 : -0.2
+R: 0 1 : 44 : -0.2
+R: 0 2 : 44 : -5.2
+R: 0 3 : 44 : -0.2
+R: 1 0 : 44 : -0.2
+R: 1 1 : 44 : -0.2
+R: 1 2 : 44 : -5.2
+R: 1 3 : 44 : -0.2
+R: 2 0 : 44 : -5.2
+R: 2 1 : 44 : -5.2
+R: 2 2 : 44 : -10.2
+R: 2 3 : 44 : -5.2
+R: 3 0 : 44 : -0.2
+R: 3 1 : 44 : -0.2
+R: 3 2 : 44 : -5.2
+R: 3 3 : 44 : -0.2
+R: 0 0 : 45 : -0.2
+R: 0 1 : 45 : -0.2
+R: 0 2 : 45 : -0.2
+R: 0 3 : 45 : -0.2
+R: 1 0 : 45 : -0.2
+R: 1 1 : 45 : -0.2
+R: 1 2 : 45 : -0.2
+R: 1 3 : 45 : -0.2
+R: 2 0 : 45 : -5.2
+R: 2 1 : 45 : -5.2
+R: 2 2 : 45 : -5.2
+R: 2 3 : 45 : -5.2
+R: 3 0 : 45 : -0.2
+R: 3 1 : 45 : -0.2
+R: 3 2 : 45 : -0.2
+R: 3 3 : 45 : -0.2
+R: 0 0 : 46 : -0.2
+R: 0 1 : 46 : -0.2
+R: 0 2 : 46 : -5.2
+R: 0 3 : 46 : -0.2
+R: 1 0 : 46 : -0.2
+R: 1 1 : 46 : -0.2
+R: 1 2 : 46 : -5.2
+R: 1 3 : 46 : -0.2
+R: 2 0 : 46 : -5.2
+R: 2 1 : 46 : -5.2
+R: 2 2 : 46 : -10.2
+R: 2 3 : 46 : -5.2
+R: 3 0 : 46 : -0.2
+R: 3 1 : 46 : -0.2
+R: 3 2 : 46 : -5.2
+R: 3 3 : 46 : -0.2
+R: 0 0 : 47 : -0.2
+R: 0 1 : 47 : -0.2
+R: 0 2 : 47 : -0.2
+R: 0 3 : 47 : -0.2
+R: 1 0 : 47 : -0.2
+R: 1 1 : 47 : -0.2
+R: 1 2 : 47 : -0.2
+R: 1 3 : 47 : -0.2
+R: 2 0 : 47 : -5.2
+R: 2 1 : 47 : -5.2
+R: 2 2 : 47 : -5.2
+R: 2 3 : 47 : -5.2
+R: 3 0 : 47 : -0.2
+R: 3 1 : 47 : -0.2
+R: 3 2 : 47 : -0.2
+R: 3 3 : 47 : -0.2
+R: 0 0 : 48 : -0.2
+R: 0 1 : 48 : -0.2
+R: 0 2 : 48 : 9.8
+R: 0 3 : 48 : -0.2
+R: 1 0 : 48 : -0.2
+R: 1 1 : 48 : -0.2
+R: 1 2 : 48 : 9.8
+R: 1 3 : 48 : -0.2
+R: 2 0 : 48 : -5.2
+R: 2 1 : 48 : -5.2
+R: 2 2 : 48 : 4.8
+R: 2 3 : 48 : -5.2
+R: 3 0 : 48 : -0.2
+R: 3 1 : 48 : -0.2
+R: 3 2 : 48 : 9.8
+R: 3 3 : 48 : -0.2
+R: 0 0 : 49 : -0.2
+R: 0 1 : 49 : -0.2
+R: 0 2 : 49 : -5.2
+R: 0 3 : 49 : -0.2
+R: 1 0 : 49 : -0.2
+R: 1 1 : 49 : -0.2
+R: 1 2 : 49 : -5.2
+R: 1 3 : 49 : -0.2
+R: 2 0 : 49 : -5.2
+R: 2 1 : 49 : -5.2
+R: 2 2 : 49 : -10.2
+R: 2 3 : 49 : -5.2
+R: 3 0 : 49 : -0.2
+R: 3 1 : 49 : -0.2
+R: 3 2 : 49 : -5.2
+R: 3 3 : 49 : -0.2
+R: 0 0 : 50 : -0.2
+R: 0 1 : 50 : -0.2
+R: 0 2 : 50 : -5.2
+R: 0 3 : 50 : -0.2
+R: 1 0 : 50 : -0.2
+R: 1 1 : 50 : -0.2
+R: 1 2 : 50 : -5.2
+R: 1 3 : 50 : -0.2
+R: 2 0 : 50 : -5.2
+R: 2 1 : 50 : -5.2
+R: 2 2 : 50 : -10.2
+R: 2 3 : 50 : -5.2
+R: 3 0 : 50 : -0.2
+R: 3 1 : 50 : -0.2
+R: 3 2 : 50 : -5.2
+R: 3 3 : 50 : -0.2
+R: 0 0 : 51 : -0.2
+R: 0 1 : 51 : -0.2
+R: 0 2 : 51 : -0.2
+R: 0 3 : 51 : -0.2
+R: 1 0 : 51 : -0.2
+R: 1 1 : 51 : -0.2
+R: 1 2 : 51 : -0.2
+R: 1 3 : 51 : -0.2
+R: 2 0 : 51 : -5.2
+R: 2 1 : 51 : -5.2
+R: 2 2 : 51 : -5.2
+R: 2 3 : 51 : -5.2
+R: 3 0 : 51 : -0.2
+R: 3 1 : 51 : -0.2
+R: 3 2 : 51 : -0.2
+R: 3 3 : 51 : -0.2
+R: 0 0 : 52 : -0.2
+R: 0 1 : 52 : -0.2
+R: 0 2 : 52 : -5.2
+R: 0 3 : 52 : -0.2
+R: 1 0 : 52 : -0.2
+R: 1 1 : 52 : -0.2
+R: 1 2 : 52 : -5.2
+R: 1 3 : 52 : -0.2
+R: 2 0 : 52 : -5.2
+R: 2 1 : 52 : -5.2
+R: 2 2 : 52 : 99.8
+R: 2 3 : 52 : -5.2
+R: 3 0 : 52 : -0.2
+R: 3 1 : 52 : -0.2
+R: 3 2 : 52 : -5.2
+R: 3 3 : 52 : -0.2
+R: 0 0 : 53 : -0.2
+R: 0 1 : 53 : -0.2
+R: 0 2 : 53 : -0.2
+R: 0 3 : 53 : -0.2
+R: 1 0 : 53 : -0.2
+R: 1 1 : 53 : -0.2
+R: 1 2 : 53 : -0.2
+R: 1 3 : 53 : -0.2
+R: 2 0 : 53 : -5.2
+R: 2 1 : 53 : -5.2
+R: 2 2 : 53 : -5.2
+R: 2 3 : 53 : -5.2
+R: 3 0 : 53 : -0.2
+R: 3 1 : 53 : -0.2
+R: 3 2 : 53 : -0.2
+R: 3 3 : 53 : -0.2
+R: 0 0 : 54 : -0.2
+R: 0 1 : 54 : -0.2
+R: 0 2 : 54 : -5.2
+R: 0 3 : 54 : -0.2
+R: 1 0 : 54 : -0.2
+R: 1 1 : 54 : -0.2
+R: 1 2 : 54 : -5.2
+R: 1 3 : 54 : -0.2
+R: 2 0 : 54 : -5.2
+R: 2 1 : 54 : -5.2
+R: 2 2 : 54 : -10.2
+R: 2 3 : 54 : -5.2
+R: 3 0 : 54 : -0.2
+R: 3 1 : 54 : -0.2
+R: 3 2 : 54 : -5.2
+R: 3 3 : 54 : -0.2
+R: 0 0 : 55 : -0.2
+R: 0 1 : 55 : -0.2
+R: 0 2 : 55 : -5.2
+R: 0 3 : 55 : -0.2
+R: 1 0 : 55 : -0.2
+R: 1 1 : 55 : -0.2
+R: 1 2 : 55 : -5.2
+R: 1 3 : 55 : -0.2
+R: 2 0 : 55 : -5.2
+R: 2 1 : 55 : -5.2
+R: 2 2 : 55 : -10.2
+R: 2 3 : 55 : -5.2
+R: 3 0 : 55 : -0.2
+R: 3 1 : 55 : -0.2
+R: 3 2 : 55 : -5.2
+R: 3 3 : 55 : -0.2
+R: 0 0 : 56 : -0.2
+R: 0 1 : 56 : -0.2
+R: 0 2 : 56 : 9.8
+R: 0 3 : 56 : -0.2
+R: 1 0 : 56 : -0.2
+R: 1 1 : 56 : -0.2
+R: 1 2 : 56 : 9.8
+R: 1 3 : 56 : -0.2
+R: 2 0 : 56 : -5.2
+R: 2 1 : 56 : -5.2
+R: 2 2 : 56 : 4.8
+R: 2 3 : 56 : -5.2
+R: 3 0 : 56 : -0.2
+R: 3 1 : 56 : -0.2
+R: 3 2 : 56 : 9.8
+R: 3 3 : 56 : -0.2
+R: 0 0 : 57 : -0.2
+R: 0 1 : 57 : -0.2
+R: 0 2 : 57 : -5.2
+R: 0 3 : 57 : -0.2
+R: 1 0 : 57 : -0.2
+R: 1 1 : 57 : -0.2
+R: 1 2 : 57 : -5.2
+R: 1 3 : 57 : -0.2
+R: 2 0 : 57 : -5.2
+R: 2 1 : 57 : -5.2
+R: 2 2 : 57 : -10.2
+R: 2 3 : 57 : -5.2
+R: 3 0 : 57 : -0.2
+R: 3 1 : 57 : -0.2
+R: 3 2 : 57 : -5.2
+R: 3 3 : 57 : -0.2
+R: 0 0 : 58 : -0.2
+R: 0 1 : 58 : -0.2
+R: 0 2 : 58 : -5.2
+R: 0 3 : 58 : -0.2
+R: 1 0 : 58 : -0.2
+R: 1 1 : 58 : -0.2
+R: 1 2 : 58 : -5.2
+R: 1 3 : 58 : -0.2
+R: 2 0 : 58 : -5.2
+R: 2 1 : 58 : -5.2
+R: 2 2 : 58 : -10.2
+R: 2 3 : 58 : -5.2
+R: 3 0 : 58 : -0.2
+R: 3 1 : 58 : -0.2
+R: 3 2 : 58 : -5.2
+R: 3 3 : 58 : -0.2
+R: 0 0 : 59 : -0.2
+R: 0 1 : 59 : -0.2
+R: 0 2 : 59 : -0.2
+R: 0 3 : 59 : -0.2
+R: 1 0 : 59 : -0.2
+R: 1 1 : 59 : -0.2
+R: 1 2 : 59 : -0.2
+R: 1 3 : 59 : -0.2
+R: 2 0 : 59 : -5.2
+R: 2 1 : 59 : -5.2
+R: 2 2 : 59 : -5.2
+R: 2 3 : 59 : -5.2
+R: 3 0 : 59 : -0.2
+R: 3 1 : 59 : -0.2
+R: 3 2 : 59 : -0.2
+R: 3 3 : 59 : -0.2
+R: 0 0 : 60 : -0.2
+R: 0 1 : 60 : -0.2
+R: 0 2 : 60 : -5.2
+R: 0 3 : 60 : -0.2
+R: 1 0 : 60 : -0.2
+R: 1 1 : 60 : -0.2
+R: 1 2 : 60 : -5.2
+R: 1 3 : 60 : -0.2
+R: 2 0 : 60 : -5.2
+R: 2 1 : 60 : -5.2
+R: 2 2 : 60 : -10.2
+R: 2 3 : 60 : -5.2
+R: 3 0 : 60 : -0.2
+R: 3 1 : 60 : -0.2
+R: 3 2 : 60 : -5.2
+R: 3 3 : 60 : -0.2
+R: 0 0 : 61 : -0.2
+R: 0 1 : 61 : -0.2
+R: 0 2 : 61 : -0.2
+R: 0 3 : 61 : -0.2
+R: 1 0 : 61 : -0.2
+R: 1 1 : 61 : -0.2
+R: 1 2 : 61 : -0.2
+R: 1 3 : 61 : -0.2
+R: 2 0 : 61 : -5.2
+R: 2 1 : 61 : -5.2
+R: 2 2 : 61 : -5.2
+R: 2 3 : 61 : -5.2
+R: 3 0 : 61 : -0.2
+R: 3 1 : 61 : -0.2
+R: 3 2 : 61 : -0.2
+R: 3 3 : 61 : -0.2
+R: 0 0 : 62 : -0.2
+R: 0 1 : 62 : -0.2
+R: 0 2 : 62 : -5.2
+R: 0 3 : 62 : -0.2
+R: 1 0 : 62 : -0.2
+R: 1 1 : 62 : -0.2
+R: 1 2 : 62 : -5.2
+R: 1 3 : 62 : -0.2
+R: 2 0 : 62 : -5.2
+R: 2 1 : 62 : -5.2
+R: 2 2 : 62 : -10.2
+R: 2 3 : 62 : -5.2
+R: 3 0 : 62 : -0.2
+R: 3 1 : 62 : -0.2
+R: 3 2 : 62 : -5.2
+R: 3 3 : 62 : -0.2
+R: 0 0 : 63 : -0.2
+R: 0 1 : 63 : -0.2
+R: 0 2 : 63 : -5.2
+R: 0 3 : 63 : -0.2
+R: 1 0 : 63 : -0.2
+R: 1 1 : 63 : -0.2
+R: 1 2 : 63 : -5.2
+R: 1 3 : 63 : -0.2
+R: 2 0 : 63 : -5.2
+R: 2 1 : 63 : -5.2
+R: 2 2 : 63 : -10.2
+R: 2 3 : 63 : -5.2
+R: 3 0 : 63 : -0.2
+R: 3 1 : 63 : -0.2
+R: 3 2 : 63 : -5.2
+R: 3 3 : 63 : -0.2
+R: 0 0 : 64 : -0.2
+R: 0 1 : 64 : -0.2
+R: 0 2 : 64 : 9.8
+R: 0 3 : 64 : -0.2
+R: 1 0 : 64 : -0.2
+R: 1 1 : 64 : -0.2
+R: 1 2 : 64 : 9.8
+R: 1 3 : 64 : -0.2
+R: 2 0 : 64 : -0.2
+R: 2 1 : 64 : -0.2
+R: 2 2 : 64 : 9.8
+R: 2 3 : 64 : -0.2
+R: 3 0 : 64 : -0.2
+R: 3 1 : 64 : -0.2
+R: 3 2 : 64 : 9.8
+R: 3 3 : 64 : -0.2
+R: 0 0 : 65 : -0.2
+R: 0 1 : 65 : -0.2
+R: 0 2 : 65 : -5.2
+R: 0 3 : 65 : -0.2
+R: 1 0 : 65 : -0.2
+R: 1 1 : 65 : -0.2
+R: 1 2 : 65 : -5.2
+R: 1 3 : 65 : -0.2
+R: 2 0 : 65 : -0.2
+R: 2 1 : 65 : -0.2
+R: 2 2 : 65 : -5.2
+R: 2 3 : 65 : -0.2
+R: 3 0 : 65 : -0.2
+R: 3 1 : 65 : -0.2
+R: 3 2 : 65 : -5.2
+R: 3 3 : 65 : -0.2
+R: 0 0 : 66 : -0.2
+R: 0 1 : 66 : -0.2
+R: 0 2 : 66 : -5.2
+R: 0 3 : 66 : -0.2
+R: 1 0 : 66 : -0.2
+R: 1 1 : 66 : -0.2
+R: 1 2 : 66 : -5.2
+R: 1 3 : 66 : -0.2
+R: 2 0 : 66 : -0.2
+R: 2 1 : 66 : -0.2
+R: 2 2 : 66 : -5.2
+R: 2 3 : 66 : -0.2
+R: 3 0 : 66 : -0.2
+R: 3 1 : 66 : -0.2
+R: 3 2 : 66 : -5.2
+R: 3 3 : 66 : -0.2
+R: 0 0 : 67 : -0.2
+R: 0 1 : 67 : -0.2
+R: 0 2 : 67 : -0.2
+R: 0 3 : 67 : -0.2
+R: 1 0 : 67 : -0.2
+R: 1 1 : 67 : -0.2
+R: 1 2 : 67 : -0.2
+R: 1 3 : 67 : -0.2
+R: 2 0 : 67 : -0.2
+R: 2 1 : 67 : -0.2
+R: 2 2 : 67 : -10.2
+R: 2 3 : 67 : -0.2
+R: 3 0 : 67 : -0.2
+R: 3 1 : 67 : -0.2
+R: 3 2 : 67 : -0.2
+R: 3 3 : 67 : -0.2
+R: 0 0 : 68 : -0.2
+R: 0 1 : 68 : -0.2
+R: 0 2 : 68 : -5.2
+R: 0 3 : 68 : -0.2
+R: 1 0 : 68 : -0.2
+R: 1 1 : 68 : -0.2
+R: 1 2 : 68 : -5.2
+R: 1 3 : 68 : -0.2
+R: 2 0 : 68 : -5.2
+R: 2 1 : 68 : -5.2
+R: 2 2 : 68 : -10.2
+R: 2 3 : 68 : -5.2
+R: 3 0 : 68 : -0.2
+R: 3 1 : 68 : -0.2
+R: 3 2 : 68 : -5.2
+R: 3 3 : 68 : -0.2
+R: 0 0 : 69 : -0.2
+R: 0 1 : 69 : -0.2
+R: 0 2 : 69 : -0.2
+R: 0 3 : 69 : -0.2
+R: 1 0 : 69 : -0.2
+R: 1 1 : 69 : -0.2
+R: 1 2 : 69 : -0.2
+R: 1 3 : 69 : -0.2
+R: 2 0 : 69 : -5.2
+R: 2 1 : 69 : -5.2
+R: 2 2 : 69 : -5.2
+R: 2 3 : 69 : -5.2
+R: 3 0 : 69 : -0.2
+R: 3 1 : 69 : -0.2
+R: 3 2 : 69 : -0.2
+R: 3 3 : 69 : -0.2
+R: 0 0 : 70 : -0.2
+R: 0 1 : 70 : -0.2
+R: 0 2 : 70 : -5.2
+R: 0 3 : 70 : -0.2
+R: 1 0 : 70 : -0.2
+R: 1 1 : 70 : -0.2
+R: 1 2 : 70 : -5.2
+R: 1 3 : 70 : -0.2
+R: 2 0 : 70 : -5.2
+R: 2 1 : 70 : -5.2
+R: 2 2 : 70 : -10.2
+R: 2 3 : 70 : -5.2
+R: 3 0 : 70 : -0.2
+R: 3 1 : 70 : -0.2
+R: 3 2 : 70 : -5.2
+R: 3 3 : 70 : -0.2
+R: 0 0 : 71 : -0.2
+R: 0 1 : 71 : -0.2
+R: 0 2 : 71 : -5.2
+R: 0 3 : 71 : -0.2
+R: 1 0 : 71 : -0.2
+R: 1 1 : 71 : -0.2
+R: 1 2 : 71 : -5.2
+R: 1 3 : 71 : -0.2
+R: 2 0 : 71 : -5.2
+R: 2 1 : 71 : -5.2
+R: 2 2 : 71 : -10.2
+R: 2 3 : 71 : -5.2
+R: 3 0 : 71 : -0.2
+R: 3 1 : 71 : -0.2
+R: 3 2 : 71 : -5.2
+R: 3 3 : 71 : -0.2
+R: 0 0 : 72 : -0.2
+R: 0 1 : 72 : -0.2
+R: 0 2 : 72 : 9.8
+R: 0 3 : 72 : -0.2
+R: 1 0 : 72 : -0.2
+R: 1 1 : 72 : -0.2
+R: 1 2 : 72 : 9.8
+R: 1 3 : 72 : -0.2
+R: 2 0 : 72 : -5.2
+R: 2 1 : 72 : -5.2
+R: 2 2 : 72 : 4.8
+R: 2 3 : 72 : -5.2
+R: 3 0 : 72 : -0.2
+R: 3 1 : 72 : -0.2
+R: 3 2 : 72 : 9.8
+R: 3 3 : 72 : -0.2
+R: 0 0 : 73 : -0.2
+R: 0 1 : 73 : -0.2
+R: 0 2 : 73 : -5.2
+R: 0 3 : 73 : -0.2
+R: 1 0 : 73 : -0.2
+R: 1 1 : 73 : -0.2
+R: 1 2 : 73 : -5.2
+R: 1 3 : 73 : -0.2
+R: 2 0 : 73 : -5.2
+R: 2 1 : 73 : -5.2
+R: 2 2 : 73 : -10.2
+R: 2 3 : 73 : -5.2
+R: 3 0 : 73 : -0.2
+R: 3 1 : 73 : -0.2
+R: 3 2 : 73 : -5.2
+R: 3 3 : 73 : -0.2
+R: 0 0 : 74 : -0.2
+R: 0 1 : 74 : -0.2
+R: 0 2 : 74 : -5.2
+R: 0 3 : 74 : -0.2
+R: 1 0 : 74 : -0.2
+R: 1 1 : 74 : -0.2
+R: 1 2 : 74 : -5.2
+R: 1 3 : 74 : -0.2
+R: 2 0 : 74 : -5.2
+R: 2 1 : 74 : -5.2
+R: 2 2 : 74 : -10.2
+R: 2 3 : 74 : -5.2
+R: 3 0 : 74 : -0.2
+R: 3 1 : 74 : -0.2
+R: 3 2 : 74 : -5.2
+R: 3 3 : 74 : -0.2
+R: 0 0 : 75 : -0.2
+R: 0 1 : 75 : -0.2
+R: 0 2 : 75 : -0.2
+R: 0 3 : 75 : -0.2
+R: 1 0 : 75 : -0.2
+R: 1 1 : 75 : -0.2
+R: 1 2 : 75 : -0.2
+R: 1 3 : 75 : -0.2
+R: 2 0 : 75 : -5.2
+R: 2 1 : 75 : -5.2
+R: 2 2 : 75 : -5.2
+R: 2 3 : 75 : -5.2
+R: 3 0 : 75 : -0.2
+R: 3 1 : 75 : -0.2
+R: 3 2 : 75 : -0.2
+R: 3 3 : 75 : -0.2
+R: 0 0 : 76 : -0.2
+R: 0 1 : 76 : -0.2
+R: 0 2 : 76 : -5.2
+R: 0 3 : 76 : -0.2
+R: 1 0 : 76 : -0.2
+R: 1 1 : 76 : -0.2
+R: 1 2 : 76 : -5.2
+R: 1 3 : 76 : -0.2
+R: 2 0 : 76 : -0.2
+R: 2 1 : 76 : -0.2
+R: 2 2 : 76 : -5.2
+R: 2 3 : 76 : -0.2
+R: 3 0 : 76 : -0.2
+R: 3 1 : 76 : -0.2
+R: 3 2 : 76 : -5.2
+R: 3 3 : 76 : -0.2
+R: 0 0 : 77 : -0.2
+R: 0 1 : 77 : -0.2
+R: 0 2 : 77 : -0.2
+R: 0 3 : 77 : -0.2
+R: 1 0 : 77 : -0.2
+R: 1 1 : 77 : -0.2
+R: 1 2 : 77 : -0.2
+R: 1 3 : 77 : -0.2
+R: 2 0 : 77 : -0.2
+R: 2 1 : 77 : -0.2
+R: 2 2 : 77 : -0.2
+R: 2 3 : 77 : -0.2
+R: 3 0 : 77 : -0.2
+R: 3 1 : 77 : -0.2
+R: 3 2 : 77 : -0.2
+R: 3 3 : 77 : -0.2
+R: 0 0 : 78 : -0.2
+R: 0 1 : 78 : -0.2
+R: 0 2 : 78 : -5.2
+R: 0 3 : 78 : -0.2
+R: 1 0 : 78 : -0.2
+R: 1 1 : 78 : -0.2
+R: 1 2 : 78 : -5.2
+R: 1 3 : 78 : -0.2
+R: 2 0 : 78 : -0.2
+R: 2 1 : 78 : -0.2
+R: 2 2 : 78 : -5.2
+R: 2 3 : 78 : -0.2
+R: 3 0 : 78 : -0.2
+R: 3 1 : 78 : -0.2
+R: 3 2 : 78 : -5.2
+R: 3 3 : 78 : -0.2
+R: 0 0 : 79 : -0.2
+R: 0 1 : 79 : -0.2
+R: 0 2 : 79 : -5.2
+R: 0 3 : 79 : -0.2
+R: 1 0 : 79 : -0.2
+R: 1 1 : 79 : -0.2
+R: 1 2 : 79 : -5.2
+R: 1 3 : 79 : -0.2
+R: 2 0 : 79 : -0.2
+R: 2 1 : 79 : -0.2
+R: 2 2 : 79 : -5.2
+R: 2 3 : 79 : -0.2
+R: 3 0 : 79 : -0.2
+R: 3 1 : 79 : -0.2
+R: 3 2 : 79 : -5.2
+R: 3 3 : 79 : -0.2
+R: 0 0 : 80 : -0.2
+R: 0 1 : 80 : -0.2
+R: 0 2 : 80 : 9.8
+R: 0 3 : 80 : -0.2
+R: 1 0 : 80 : -0.2
+R: 1 1 : 80 : -0.2
+R: 1 2 : 80 : 9.8
+R: 1 3 : 80 : -0.2
+R: 2 0 : 80 : -0.2
+R: 2 1 : 80 : -0.2
+R: 2 2 : 80 : 9.8
+R: 2 3 : 80 : -0.2
+R: 3 0 : 80 : -0.2
+R: 3 1 : 80 : -0.2
+R: 3 2 : 80 : 9.8
+R: 3 3 : 80 : -0.2
+R: 0 0 : 81 : -0.2
+R: 0 1 : 81 : -0.2
+R: 0 2 : 81 : -5.2
+R: 0 3 : 81 : -0.2
+R: 1 0 : 81 : -0.2
+R: 1 1 : 81 : -0.2
+R: 1 2 : 81 : -5.2
+R: 1 3 : 81 : -0.2
+R: 2 0 : 81 : -0.2
+R: 2 1 : 81 : -0.2
+R: 2 2 : 81 : -5.2
+R: 2 3 : 81 : -0.2
+R: 3 0 : 81 : -0.2
+R: 3 1 : 81 : -0.2
+R: 3 2 : 81 : -5.2
+R: 3 3 : 81 : -0.2
+R: 0 0 : 82 : -0.2
+R: 0 1 : 82 : -0.2
+R: 0 2 : 82 : -5.2
+R: 0 3 : 82 : -0.2
+R: 1 0 : 82 : -0.2
+R: 1 1 : 82 : -0.2
+R: 1 2 : 82 : -5.2
+R: 1 3 : 82 : -0.2
+R: 2 0 : 82 : -0.2
+R: 2 1 : 82 : -0.2
+R: 2 2 : 82 : -5.2
+R: 2 3 : 82 : -0.2
+R: 3 0 : 82 : -0.2
+R: 3 1 : 82 : -0.2
+R: 3 2 : 82 : -5.2
+R: 3 3 : 82 : -0.2
+R: 0 0 : 83 : -0.2
+R: 0 1 : 83 : -0.2
+R: 0 2 : 83 : -0.2
+R: 0 3 : 83 : -0.2
+R: 1 0 : 83 : -0.2
+R: 1 1 : 83 : -0.2
+R: 1 2 : 83 : -0.2
+R: 1 3 : 83 : -0.2
+R: 2 0 : 83 : -0.2
+R: 2 1 : 83 : -0.2
+R: 2 2 : 83 : -0.2
+R: 2 3 : 83 : -0.2
+R: 3 0 : 83 : -0.2
+R: 3 1 : 83 : -0.2
+R: 3 2 : 83 : -0.2
+R: 3 3 : 83 : -0.2
+R: 0 0 : 84 : -0.2
+R: 0 1 : 84 : -0.2
+R: 0 2 : 84 : 9.8
+R: 0 3 : 84 : -0.2
+R: 1 0 : 84 : -0.2
+R: 1 1 : 84 : -0.2
+R: 1 2 : 84 : 9.8
+R: 1 3 : 84 : -0.2
+R: 2 0 : 84 : -5.2
+R: 2 1 : 84 : -5.2
+R: 2 2 : 84 : 4.8
+R: 2 3 : 84 : -5.2
+R: 3 0 : 84 : -0.2
+R: 3 1 : 84 : -0.2
+R: 3 2 : 84 : 9.8
+R: 3 3 : 84 : -0.2
+R: 0 0 : 85 : -0.2
+R: 0 1 : 85 : -0.2
+R: 0 2 : 85 : -5.2
+R: 0 3 : 85 : -0.2
+R: 1 0 : 85 : -0.2
+R: 1 1 : 85 : -0.2
+R: 1 2 : 85 : -5.2
+R: 1 3 : 85 : -0.2
+R: 2 0 : 85 : -5.2
+R: 2 1 : 85 : -5.2
+R: 2 2 : 85 : -10.2
+R: 2 3 : 85 : -5.2
+R: 3 0 : 85 : -0.2
+R: 3 1 : 85 : -0.2
+R: 3 2 : 85 : -5.2
+R: 3 3 : 85 : -0.2
+R: 0 0 : 86 : -0.2
+R: 0 1 : 86 : -0.2
+R: 0 2 : 86 : -5.2
+R: 0 3 : 86 : -0.2
+R: 1 0 : 86 : -0.2
+R: 1 1 : 86 : -0.2
+R: 1 2 : 86 : -5.2
+R: 1 3 : 86 : -0.2
+R: 2 0 : 86 : -5.2
+R: 2 1 : 86 : -5.2
+R: 2 2 : 86 : -10.2
+R: 2 3 : 86 : -5.2
+R: 3 0 : 86 : -0.2
+R: 3 1 : 86 : -0.2
+R: 3 2 : 86 : -5.2
+R: 3 3 : 86 : -0.2
+R: 0 0 : 87 : -0.2
+R: 0 1 : 87 : -0.2
+R: 0 2 : 87 : -5.2
+R: 0 3 : 87 : -0.2
+R: 1 0 : 87 : -0.2
+R: 1 1 : 87 : -0.2
+R: 1 2 : 87 : -5.2
+R: 1 3 : 87 : -0.2
+R: 2 0 : 87 : -5.2
+R: 2 1 : 87 : -5.2
+R: 2 2 : 87 : -10.2
+R: 2 3 : 87 : -5.2
+R: 3 0 : 87 : -0.2
+R: 3 1 : 87 : -0.2
+R: 3 2 : 87 : -5.2
+R: 3 3 : 87 : -0.2
+R: 0 0 : 88 : -0.2
+R: 0 1 : 88 : -0.2
+R: 0 2 : 88 : 9.8
+R: 0 3 : 88 : -0.2
+R: 1 0 : 88 : -0.2
+R: 1 1 : 88 : -0.2
+R: 1 2 : 88 : 9.8
+R: 1 3 : 88 : -0.2
+R: 2 0 : 88 : -5.2
+R: 2 1 : 88 : -5.2
+R: 2 2 : 88 : 4.8
+R: 2 3 : 88 : -5.2
+R: 3 0 : 88 : -0.2
+R: 3 1 : 88 : -0.2
+R: 3 2 : 88 : 9.8
+R: 3 3 : 88 : -0.2
+R: 0 0 : 89 : -0.2
+R: 0 1 : 89 : -0.2
+R: 0 2 : 89 : -5.2
+R: 0 3 : 89 : -0.2
+R: 1 0 : 89 : -0.2
+R: 1 1 : 89 : -0.2
+R: 1 2 : 89 : -5.2
+R: 1 3 : 89 : -0.2
+R: 2 0 : 89 : -5.2
+R: 2 1 : 89 : -5.2
+R: 2 2 : 89 : -10.2
+R: 2 3 : 89 : -5.2
+R: 3 0 : 89 : -0.2
+R: 3 1 : 89 : -0.2
+R: 3 2 : 89 : -5.2
+R: 3 3 : 89 : -0.2
+R: 0 0 : 90 : -0.2
+R: 0 1 : 90 : -0.2
+R: 0 2 : 90 : -5.2
+R: 0 3 : 90 : -0.2
+R: 1 0 : 90 : -0.2
+R: 1 1 : 90 : -0.2
+R: 1 2 : 90 : -5.2
+R: 1 3 : 90 : -0.2
+R: 2 0 : 90 : -5.2
+R: 2 1 : 90 : -5.2
+R: 2 2 : 90 : -10.2
+R: 2 3 : 90 : -5.2
+R: 3 0 : 90 : -0.2
+R: 3 1 : 90 : -0.2
+R: 3 2 : 90 : -5.2
+R: 3 3 : 90 : -0.2
+R: 0 0 : 91 : -0.2
+R: 0 1 : 91 : -0.2
+R: 0 2 : 91 : -5.2
+R: 0 3 : 91 : -0.2
+R: 1 0 : 91 : -0.2
+R: 1 1 : 91 : -0.2
+R: 1 2 : 91 : -5.2
+R: 1 3 : 91 : -0.2
+R: 2 0 : 91 : -5.2
+R: 2 1 : 91 : -5.2
+R: 2 2 : 91 : -10.2
+R: 2 3 : 91 : -5.2
+R: 3 0 : 91 : -0.2
+R: 3 1 : 91 : -0.2
+R: 3 2 : 91 : -5.2
+R: 3 3 : 91 : -0.2
+R: 0 0 : 92 : -0.2
+R: 0 1 : 92 : -0.2
+R: 0 2 : 92 : 9.8
+R: 0 3 : 92 : -0.2
+R: 1 0 : 92 : -0.2
+R: 1 1 : 92 : -0.2
+R: 1 2 : 92 : 9.8
+R: 1 3 : 92 : -0.2
+R: 2 0 : 92 : -5.2
+R: 2 1 : 92 : -5.2
+R: 2 2 : 92 : 4.8
+R: 2 3 : 92 : -5.2
+R: 3 0 : 92 : -0.2
+R: 3 1 : 92 : -0.2
+R: 3 2 : 92 : 9.8
+R: 3 3 : 92 : -0.2
+R: 0 0 : 93 : -0.2
+R: 0 1 : 93 : -0.2
+R: 0 2 : 93 : -5.2
+R: 0 3 : 93 : -0.2
+R: 1 0 : 93 : -0.2
+R: 1 1 : 93 : -0.2
+R: 1 2 : 93 : -5.2
+R: 1 3 : 93 : -0.2
+R: 2 0 : 93 : -5.2
+R: 2 1 : 93 : -5.2
+R: 2 2 : 93 : -10.2
+R: 2 3 : 93 : -5.2
+R: 3 0 : 93 : -0.2
+R: 3 1 : 93 : -0.2
+R: 3 2 : 93 : -5.2
+R: 3 3 : 93 : -0.2
+R: 0 0 : 94 : -0.2
+R: 0 1 : 94 : -0.2
+R: 0 2 : 94 : -5.2
+R: 0 3 : 94 : -0.2
+R: 1 0 : 94 : -0.2
+R: 1 1 : 94 : -0.2
+R: 1 2 : 94 : -5.2
+R: 1 3 : 94 : -0.2
+R: 2 0 : 94 : -5.2
+R: 2 1 : 94 : -5.2
+R: 2 2 : 94 : -10.2
+R: 2 3 : 94 : -5.2
+R: 3 0 : 94 : -0.2
+R: 3 1 : 94 : -0.2
+R: 3 2 : 94 : -5.2
+R: 3 3 : 94 : -0.2
+R: 0 0 : 95 : -0.2
+R: 0 1 : 95 : -0.2
+R: 0 2 : 95 : -5.2
+R: 0 3 : 95 : -0.2
+R: 1 0 : 95 : -0.2
+R: 1 1 : 95 : -0.2
+R: 1 2 : 95 : -5.2
+R: 1 3 : 95 : -0.2
+R: 2 0 : 95 : -5.2
+R: 2 1 : 95 : -5.2
+R: 2 2 : 95 : -10.2
+R: 2 3 : 95 : -5.2
+R: 3 0 : 95 : -0.2
+R: 3 1 : 95 : -0.2
+R: 3 2 : 95 : -5.2
+R: 3 3 : 95 : -0.2
+R: 0 0 : 96 : -0.2
+R: 0 1 : 96 : -0.2
+R: 0 2 : 96 : 9.8
+R: 0 3 : 96 : -0.2
+R: 1 0 : 96 : -0.2
+R: 1 1 : 96 : -0.2
+R: 1 2 : 96 : 9.8
+R: 1 3 : 96 : -0.2
+R: 2 0 : 96 : -0.2
+R: 2 1 : 96 : -0.2
+R: 2 2 : 96 : 9.8
+R: 2 3 : 96 : -0.2
+R: 3 0 : 96 : -0.2
+R: 3 1 : 96 : -0.2
+R: 3 2 : 96 : 9.8
+R: 3 3 : 96 : -0.2
+R: 0 0 : 97 : -0.2
+R: 0 1 : 97 : -0.2
+R: 0 2 : 97 : -5.2
+R: 0 3 : 97 : -0.2
+R: 1 0 : 97 : -0.2
+R: 1 1 : 97 : -0.2
+R: 1 2 : 97 : -5.2
+R: 1 3 : 97 : -0.2
+R: 2 0 : 97 : -0.2
+R: 2 1 : 97 : -0.2
+R: 2 2 : 97 : -5.2
+R: 2 3 : 97 : -0.2
+R: 3 0 : 97 : -0.2
+R: 3 1 : 97 : -0.2
+R: 3 2 : 97 : -5.2
+R: 3 3 : 97 : -0.2
+R: 0 0 : 98 : -0.2
+R: 0 1 : 98 : -0.2
+R: 0 2 : 98 : -5.2
+R: 0 3 : 98 : -0.2
+R: 1 0 : 98 : -0.2
+R: 1 1 : 98 : -0.2
+R: 1 2 : 98 : -5.2
+R: 1 3 : 98 : -0.2
+R: 2 0 : 98 : -0.2
+R: 2 1 : 98 : -0.2
+R: 2 2 : 98 : -5.2
+R: 2 3 : 98 : -0.2
+R: 3 0 : 98 : -0.2
+R: 3 1 : 98 : -0.2
+R: 3 2 : 98 : -5.2
+R: 3 3 : 98 : -0.2
+R: 0 0 : 99 : -0.2
+R: 0 1 : 99 : -0.2
+R: 0 2 : 99 : -5.2
+R: 0 3 : 99 : -0.2
+R: 1 0 : 99 : -0.2
+R: 1 1 : 99 : -0.2
+R: 1 2 : 99 : -5.2
+R: 1 3 : 99 : -0.2
+R: 2 0 : 99 : -0.2
+R: 2 1 : 99 : -0.2
+R: 2 2 : 99 : -5.2
+R: 2 3 : 99 : -0.2
+R: 3 0 : 99 : -0.2
+R: 3 1 : 99 : -0.2
+R: 3 2 : 99 : -5.2
+R: 3 3 : 99 : -0.2
diff --git a/code/src/problem_examples/dpomdp/boxPushingUAI07_light.dpomdp b/code/src/problem_examples/dpomdp/boxPushingUAI07_light.dpomdp
new file mode 100644
index 0000000000000000000000000000000000000000..bd3a9bebcfb542bc0b83dbbdca14a2c8b41191d7
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/boxPushingUAI07_light.dpomdp
@@ -0,0 +1,7120 @@
+agents: 2
+discount: 1
+states: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
+actions:
+0 1 2 3 
+0 1 2 3 
+observations:
+0 1 2 3 4 
+0 1 2 3 4 
+start: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+T: 3 3 : 99 : 99 : 1
+T: 3 3 : 98 : 98 : 1
+T: 3 3 : 97 : 97 : 1
+T: 3 3 : 96 : 96 : 1
+T: 3 3 : 95 : 95 : 1
+T: 3 3 : 94 : 94 : 1
+T: 3 3 : 93 : 93 : 1
+T: 3 3 : 92 : 92 : 1
+T: 3 3 : 91 : 91 : 1
+T: 3 3 : 90 : 90 : 1
+T: 3 3 : 89 : 89 : 1
+T: 3 3 : 88 : 88 : 1
+T: 3 3 : 87 : 87 : 1
+T: 3 3 : 86 : 86 : 1
+T: 3 3 : 85 : 85 : 1
+T: 3 3 : 84 : 84 : 1
+T: 3 3 : 83 : 83 : 1
+T: 3 3 : 82 : 82 : 1
+T: 3 3 : 81 : 81 : 1
+T: 3 3 : 80 : 80 : 1
+T: 3 3 : 79 : 79 : 1
+T: 3 3 : 78 : 78 : 1
+T: 3 3 : 35 : 35 : 1
+T: 3 3 : 34 : 34 : 1
+T: 3 3 : 33 : 33 : 1
+T: 3 3 : 32 : 32 : 1
+T: 3 3 : 31 : 31 : 1
+T: 3 3 : 30 : 30 : 1
+T: 3 3 : 29 : 29 : 1
+T: 3 3 : 28 : 28 : 1
+T: 3 3 : 27 : 27 : 1
+T: 3 3 : 26 : 26 : 1
+T: 3 3 : 25 : 25 : 1
+T: 3 3 : 24 : 24 : 1
+T: 3 3 : 23 : 23 : 1
+T: 3 3 : 22 : 22 : 1
+T: 3 3 : 21 : 21 : 1
+T: 3 3 : 20 : 20 : 1
+T: 3 3 : 19 : 19 : 1
+T: 3 3 : 18 : 18 : 1
+T: 3 3 : 17 : 17 : 1
+T: 3 3 : 16 : 16 : 1
+T: 3 3 : 5 : 5 : 1
+T: 3 3 : 4 : 4 : 1
+T: 3 3 : 3 : 27 : 1
+T: 3 3 : 2 : 27 : 1
+T: 3 3 : 0 : 27 : 1
+T: 3 3 : 1 : 27 : 1
+T: 3 3 : 6 : 6 : 1
+T: 3 3 : 7 : 7 : 1
+T: 3 3 : 8 : 8 : 1
+T: 3 3 : 9 : 9 : 1
+T: 3 3 : 10 : 10 : 1
+T: 3 3 : 11 : 11 : 1
+T: 3 3 : 12 : 12 : 1
+T: 3 3 : 13 : 13 : 1
+T: 3 3 : 14 : 14 : 1
+T: 3 3 : 15 : 15 : 1
+T: 3 3 : 36 : 36 : 1
+T: 3 3 : 37 : 37 : 1
+T: 3 3 : 38 : 38 : 1
+T: 3 3 : 39 : 39 : 1
+T: 3 3 : 40 : 40 : 1
+T: 3 3 : 41 : 41 : 1
+T: 3 3 : 42 : 42 : 1
+T: 3 3 : 43 : 43 : 1
+T: 3 3 : 44 : 44 : 1
+T: 3 3 : 45 : 45 : 1
+T: 3 3 : 46 : 46 : 1
+T: 3 3 : 47 : 47 : 1
+T: 3 3 : 48 : 48 : 1
+T: 3 3 : 49 : 49 : 1
+T: 3 3 : 50 : 50 : 1
+T: 3 3 : 51 : 51 : 1
+T: 3 3 : 52 : 52 : 1
+T: 3 3 : 53 : 53 : 1
+T: 3 3 : 54 : 54 : 1
+T: 3 3 : 55 : 55 : 1
+T: 3 3 : 56 : 56 : 1
+T: 3 3 : 57 : 57 : 1
+T: 3 3 : 58 : 58 : 1
+T: 3 3 : 59 : 59 : 1
+T: 3 3 : 60 : 60 : 1
+T: 3 3 : 61 : 61 : 1
+T: 3 3 : 62 : 62 : 1
+T: 3 3 : 63 : 63 : 1
+T: 3 3 : 64 : 64 : 1
+T: 3 3 : 65 : 65 : 1
+T: 3 3 : 66 : 66 : 1
+T: 3 3 : 67 : 67 : 1
+T: 3 3 : 68 : 68 : 1
+T: 3 3 : 69 : 69 : 1
+T: 3 3 : 70 : 70 : 1
+T: 3 3 : 71 : 71 : 1
+T: 3 3 : 72 : 72 : 1
+T: 3 3 : 73 : 73 : 1
+T: 3 3 : 74 : 74 : 1
+T: 3 3 : 75 : 75 : 1
+T: 3 3 : 76 : 76 : 1
+T: 3 3 : 77 : 77 : 1
+T: 3 2 : 99 : 99 : 1
+T: 3 2 : 98 : 98 : 1
+T: 3 2 : 97 : 97 : 1
+T: 3 2 : 96 : 96 : 0.1
+T: 3 2 : 96 : 1 : 0.9
+T: 3 2 : 95 : 95 : 1
+T: 3 2 : 94 : 94 : 1
+T: 3 2 : 93 : 93 : 1
+T: 3 2 : 92 : 92 : 0.1
+T: 3 2 : 92 : 1 : 0.9
+T: 3 2 : 91 : 91 : 1
+T: 3 2 : 90 : 90 : 1
+T: 3 2 : 89 : 89 : 1
+T: 3 2 : 88 : 88 : 0.1
+T: 3 2 : 88 : 1 : 0.9
+T: 3 2 : 87 : 87 : 1
+T: 3 2 : 86 : 86 : 1
+T: 3 2 : 85 : 85 : 1
+T: 3 2 : 84 : 84 : 0.1
+T: 3 2 : 84 : 1 : 0.9
+T: 3 2 : 83 : 83 : 0.1
+T: 3 2 : 83 : 79 : 0.9
+T: 3 2 : 82 : 82 : 1
+T: 3 2 : 81 : 81 : 1
+T: 3 2 : 80 : 80 : 0.1
+T: 3 2 : 80 : 1 : 0.9
+T: 3 2 : 79 : 79 : 1
+T: 3 2 : 78 : 78 : 1
+T: 3 2 : 35 : 35 : 0.1
+T: 3 2 : 35 : 31 : 0.9
+T: 3 2 : 34 : 34 : 1
+T: 3 2 : 33 : 37 : 0.9
+T: 3 2 : 33 : 33 : 0.1
+T: 3 2 : 32 : 32 : 1
+T: 3 2 : 31 : 31 : 1
+T: 3 2 : 30 : 30 : 1
+T: 3 2 : 29 : 33 : 0.9
+T: 3 2 : 29 : 29 : 0.1
+T: 3 2 : 28 : 28 : 1
+T: 3 2 : 27 : 27 : 0.1
+T: 3 2 : 27 : 23 : 0.9
+T: 3 2 : 26 : 26 : 1
+T: 3 2 : 25 : 25 : 1
+T: 3 2 : 24 : 24 : 0.1
+T: 3 2 : 24 : 1 : 0.9
+T: 3 2 : 23 : 23 : 0.1
+T: 3 2 : 23 : 19 : 0.9
+T: 3 2 : 22 : 22 : 1
+T: 3 2 : 21 : 25 : 0.9
+T: 3 2 : 21 : 21 : 0.1
+T: 3 2 : 20 : 20 : 1
+T: 3 2 : 19 : 19 : 1
+T: 3 2 : 18 : 18 : 1
+T: 3 2 : 17 : 21 : 0.9
+T: 3 2 : 17 : 17 : 0.1
+T: 3 2 : 16 : 16 : 1
+T: 3 2 : 5 : 9 : 0.9
+T: 3 2 : 5 : 5 : 0.1
+T: 3 2 : 4 : 4 : 1
+T: 3 2 : 3 : 27 : 1
+T: 3 2 : 2 : 27 : 1
+T: 3 2 : 0 : 27 : 1
+T: 3 2 : 1 : 27 : 1
+T: 3 2 : 6 : 6 : 1
+T: 3 2 : 7 : 7 : 1
+T: 3 2 : 8 : 8 : 1
+T: 3 2 : 9 : 13 : 0.9
+T: 3 2 : 9 : 9 : 0.1
+T: 3 2 : 10 : 10 : 1
+T: 3 2 : 11 : 11 : 0.1
+T: 3 2 : 11 : 7 : 0.9
+T: 3 2 : 12 : 12 : 0.1
+T: 3 2 : 12 : 1 : 0.9
+T: 3 2 : 13 : 13 : 1
+T: 3 2 : 14 : 14 : 1
+T: 3 2 : 15 : 15 : 0.1
+T: 3 2 : 15 : 11 : 0.9
+T: 3 2 : 36 : 36 : 0.1
+T: 3 2 : 36 : 1 : 0.9
+T: 3 2 : 37 : 37 : 1
+T: 3 2 : 38 : 38 : 1
+T: 3 2 : 39 : 39 : 0.1
+T: 3 2 : 39 : 35 : 0.9
+T: 3 2 : 40 : 40 : 1
+T: 3 2 : 41 : 45 : 0.9
+T: 3 2 : 41 : 41 : 0.1
+T: 3 2 : 42 : 42 : 1
+T: 3 2 : 43 : 43 : 1
+T: 3 2 : 44 : 44 : 1
+T: 3 2 : 45 : 49 : 0.9
+T: 3 2 : 45 : 45 : 0.1
+T: 3 2 : 46 : 46 : 1
+T: 3 2 : 47 : 47 : 0.1
+T: 3 2 : 47 : 43 : 0.9
+T: 3 2 : 48 : 48 : 0.1
+T: 3 2 : 48 : 1 : 0.9
+T: 3 2 : 49 : 49 : 1
+T: 3 2 : 50 : 50 : 1
+T: 3 2 : 51 : 51 : 0.1
+T: 3 2 : 51 : 47 : 0.9
+T: 3 2 : 52 : 52 : 1
+T: 3 2 : 53 : 57 : 0.9
+T: 3 2 : 53 : 53 : 0.1
+T: 3 2 : 54 : 54 : 1
+T: 3 2 : 55 : 55 : 1
+T: 3 2 : 56 : 56 : 0.1
+T: 3 2 : 56 : 1 : 0.9
+T: 3 2 : 57 : 57 : 1
+T: 3 2 : 58 : 58 : 1
+T: 3 2 : 59 : 59 : 0.1
+T: 3 2 : 59 : 55 : 0.9
+T: 3 2 : 60 : 60 : 1
+T: 3 2 : 61 : 65 : 0.9
+T: 3 2 : 61 : 61 : 0.1
+T: 3 2 : 62 : 62 : 1
+T: 3 2 : 63 : 63 : 1
+T: 3 2 : 64 : 64 : 0.1
+T: 3 2 : 64 : 1 : 0.9
+T: 3 2 : 65 : 65 : 1
+T: 3 2 : 66 : 66 : 1
+T: 3 2 : 67 : 67 : 0.1
+T: 3 2 : 67 : 63 : 0.9
+T: 3 2 : 68 : 68 : 1
+T: 3 2 : 69 : 73 : 0.9
+T: 3 2 : 69 : 69 : 0.1
+T: 3 2 : 70 : 70 : 1
+T: 3 2 : 71 : 71 : 1
+T: 3 2 : 72 : 72 : 0.1
+T: 3 2 : 72 : 1 : 0.9
+T: 3 2 : 73 : 73 : 1
+T: 3 2 : 74 : 74 : 1
+T: 3 2 : 75 : 75 : 0.1
+T: 3 2 : 75 : 71 : 0.9
+T: 3 2 : 76 : 76 : 1
+T: 3 2 : 77 : 81 : 0.9
+T: 3 2 : 77 : 77 : 0.1
+T: 3 1 : 99 : 99 : 0.1
+T: 3 1 : 99 : 96 : 0.9
+T: 3 1 : 98 : 99 : 0.9
+T: 3 1 : 98 : 98 : 0.1
+T: 3 1 : 97 : 98 : 0.9
+T: 3 1 : 97 : 97 : 0.1
+T: 3 1 : 96 : 97 : 0.9
+T: 3 1 : 96 : 96 : 0.1
+T: 3 1 : 95 : 95 : 0.1
+T: 3 1 : 95 : 92 : 0.9
+T: 3 1 : 94 : 95 : 0.9
+T: 3 1 : 94 : 94 : 0.1
+T: 3 1 : 93 : 94 : 0.9
+T: 3 1 : 93 : 93 : 0.1
+T: 3 1 : 92 : 93 : 0.9
+T: 3 1 : 92 : 92 : 0.1
+T: 3 1 : 91 : 91 : 0.1
+T: 3 1 : 91 : 88 : 0.9
+T: 3 1 : 90 : 91 : 0.9
+T: 3 1 : 90 : 90 : 0.1
+T: 3 1 : 89 : 90 : 0.9
+T: 3 1 : 89 : 89 : 0.1
+T: 3 1 : 88 : 89 : 0.9
+T: 3 1 : 88 : 88 : 0.1
+T: 3 1 : 87 : 87 : 0.1
+T: 3 1 : 87 : 84 : 0.9
+T: 3 1 : 86 : 87 : 0.9
+T: 3 1 : 86 : 86 : 0.1
+T: 3 1 : 85 : 86 : 0.9
+T: 3 1 : 85 : 85 : 0.1
+T: 3 1 : 84 : 85 : 0.9
+T: 3 1 : 84 : 84 : 0.1
+T: 3 1 : 83 : 83 : 0.1
+T: 3 1 : 83 : 80 : 0.9
+T: 3 1 : 82 : 83 : 0.9
+T: 3 1 : 82 : 82 : 0.1
+T: 3 1 : 81 : 82 : 0.9
+T: 3 1 : 81 : 81 : 0.1
+T: 3 1 : 80 : 81 : 0.9
+T: 3 1 : 80 : 80 : 0.1
+T: 3 1 : 79 : 79 : 0.1
+T: 3 1 : 79 : 76 : 0.9
+T: 3 1 : 78 : 79 : 0.9
+T: 3 1 : 78 : 78 : 0.1
+T: 3 1 : 35 : 35 : 0.1
+T: 3 1 : 35 : 32 : 0.9
+T: 3 1 : 34 : 35 : 0.9
+T: 3 1 : 34 : 34 : 0.1
+T: 3 1 : 33 : 34 : 0.9
+T: 3 1 : 33 : 33 : 0.1
+T: 3 1 : 32 : 33 : 0.9
+T: 3 1 : 32 : 32 : 0.1
+T: 3 1 : 31 : 31 : 0.1
+T: 3 1 : 31 : 28 : 0.9
+T: 3 1 : 30 : 31 : 0.9
+T: 3 1 : 30 : 30 : 0.1
+T: 3 1 : 29 : 30 : 0.9
+T: 3 1 : 29 : 29 : 0.1
+T: 3 1 : 28 : 29 : 0.9
+T: 3 1 : 28 : 28 : 0.1
+T: 3 1 : 27 : 27 : 0.1
+T: 3 1 : 27 : 24 : 0.9
+T: 3 1 : 26 : 27 : 0.9
+T: 3 1 : 26 : 26 : 0.1
+T: 3 1 : 25 : 26 : 0.9
+T: 3 1 : 25 : 25 : 0.1
+T: 3 1 : 24 : 25 : 0.9
+T: 3 1 : 24 : 24 : 0.1
+T: 3 1 : 23 : 23 : 0.1
+T: 3 1 : 23 : 20 : 0.9
+T: 3 1 : 22 : 23 : 0.9
+T: 3 1 : 22 : 22 : 0.1
+T: 3 1 : 21 : 22 : 0.9
+T: 3 1 : 21 : 21 : 0.1
+T: 3 1 : 20 : 21 : 0.9
+T: 3 1 : 20 : 20 : 0.1
+T: 3 1 : 19 : 19 : 0.1
+T: 3 1 : 19 : 16 : 0.9
+T: 3 1 : 18 : 19 : 0.9
+T: 3 1 : 18 : 18 : 0.1
+T: 3 1 : 17 : 18 : 0.9
+T: 3 1 : 17 : 17 : 0.1
+T: 3 1 : 16 : 17 : 0.9
+T: 3 1 : 16 : 16 : 0.1
+T: 3 1 : 5 : 6 : 0.9
+T: 3 1 : 5 : 5 : 0.1
+T: 3 1 : 4 : 5 : 0.9
+T: 3 1 : 4 : 4 : 0.1
+T: 3 1 : 3 : 27 : 1
+T: 3 1 : 2 : 27 : 1
+T: 3 1 : 0 : 27 : 1
+T: 3 1 : 1 : 27 : 1
+T: 3 1 : 6 : 7 : 0.9
+T: 3 1 : 6 : 6 : 0.1
+T: 3 1 : 7 : 7 : 0.1
+T: 3 1 : 7 : 4 : 0.9
+T: 3 1 : 8 : 9 : 0.9
+T: 3 1 : 8 : 8 : 0.1
+T: 3 1 : 9 : 10 : 0.9
+T: 3 1 : 9 : 9 : 0.1
+T: 3 1 : 10 : 11 : 0.9
+T: 3 1 : 10 : 10 : 0.1
+T: 3 1 : 11 : 11 : 0.1
+T: 3 1 : 11 : 8 : 0.9
+T: 3 1 : 12 : 13 : 0.9
+T: 3 1 : 12 : 12 : 0.1
+T: 3 1 : 13 : 14 : 0.9
+T: 3 1 : 13 : 13 : 0.1
+T: 3 1 : 14 : 15 : 0.9
+T: 3 1 : 14 : 14 : 0.1
+T: 3 1 : 15 : 15 : 0.1
+T: 3 1 : 15 : 12 : 0.9
+T: 3 1 : 36 : 37 : 0.9
+T: 3 1 : 36 : 36 : 0.1
+T: 3 1 : 37 : 38 : 0.9
+T: 3 1 : 37 : 37 : 0.1
+T: 3 1 : 38 : 39 : 0.9
+T: 3 1 : 38 : 38 : 0.1
+T: 3 1 : 39 : 39 : 0.1
+T: 3 1 : 39 : 36 : 0.9
+T: 3 1 : 40 : 41 : 0.9
+T: 3 1 : 40 : 40 : 0.1
+T: 3 1 : 41 : 42 : 0.9
+T: 3 1 : 41 : 41 : 0.1
+T: 3 1 : 42 : 43 : 0.9
+T: 3 1 : 42 : 42 : 0.1
+T: 3 1 : 43 : 43 : 0.1
+T: 3 1 : 43 : 40 : 0.9
+T: 3 1 : 44 : 45 : 0.9
+T: 3 1 : 44 : 44 : 0.1
+T: 3 1 : 45 : 46 : 0.9
+T: 3 1 : 45 : 45 : 0.1
+T: 3 1 : 46 : 47 : 0.9
+T: 3 1 : 46 : 46 : 0.1
+T: 3 1 : 47 : 47 : 0.1
+T: 3 1 : 47 : 44 : 0.9
+T: 3 1 : 48 : 49 : 0.9
+T: 3 1 : 48 : 48 : 0.1
+T: 3 1 : 49 : 50 : 0.9
+T: 3 1 : 49 : 49 : 0.1
+T: 3 1 : 50 : 51 : 0.9
+T: 3 1 : 50 : 50 : 0.1
+T: 3 1 : 51 : 51 : 0.1
+T: 3 1 : 51 : 48 : 0.9
+T: 3 1 : 52 : 53 : 0.9
+T: 3 1 : 52 : 52 : 0.1
+T: 3 1 : 53 : 54 : 0.9
+T: 3 1 : 53 : 53 : 0.1
+T: 3 1 : 54 : 55 : 0.9
+T: 3 1 : 54 : 54 : 0.1
+T: 3 1 : 55 : 55 : 0.1
+T: 3 1 : 55 : 52 : 0.9
+T: 3 1 : 56 : 57 : 0.9
+T: 3 1 : 56 : 56 : 0.1
+T: 3 1 : 57 : 58 : 0.9
+T: 3 1 : 57 : 57 : 0.1
+T: 3 1 : 58 : 59 : 0.9
+T: 3 1 : 58 : 58 : 0.1
+T: 3 1 : 59 : 59 : 0.1
+T: 3 1 : 59 : 56 : 0.9
+T: 3 1 : 60 : 61 : 0.9
+T: 3 1 : 60 : 60 : 0.1
+T: 3 1 : 61 : 62 : 0.9
+T: 3 1 : 61 : 61 : 0.1
+T: 3 1 : 62 : 63 : 0.9
+T: 3 1 : 62 : 62 : 0.1
+T: 3 1 : 63 : 63 : 0.1
+T: 3 1 : 63 : 60 : 0.9
+T: 3 1 : 64 : 65 : 0.9
+T: 3 1 : 64 : 64 : 0.1
+T: 3 1 : 65 : 66 : 0.9
+T: 3 1 : 65 : 65 : 0.1
+T: 3 1 : 66 : 67 : 0.9
+T: 3 1 : 66 : 66 : 0.1
+T: 3 1 : 67 : 67 : 0.1
+T: 3 1 : 67 : 64 : 0.9
+T: 3 1 : 68 : 69 : 0.9
+T: 3 1 : 68 : 68 : 0.1
+T: 3 1 : 69 : 70 : 0.9
+T: 3 1 : 69 : 69 : 0.1
+T: 3 1 : 70 : 71 : 0.9
+T: 3 1 : 70 : 70 : 0.1
+T: 3 1 : 71 : 71 : 0.1
+T: 3 1 : 71 : 68 : 0.9
+T: 3 1 : 72 : 73 : 0.9
+T: 3 1 : 72 : 72 : 0.1
+T: 3 1 : 73 : 74 : 0.9
+T: 3 1 : 73 : 73 : 0.1
+T: 3 1 : 74 : 75 : 0.9
+T: 3 1 : 74 : 74 : 0.1
+T: 3 1 : 75 : 75 : 0.1
+T: 3 1 : 75 : 72 : 0.9
+T: 3 1 : 76 : 77 : 0.9
+T: 3 1 : 76 : 76 : 0.1
+T: 3 1 : 77 : 78 : 0.9
+T: 3 1 : 77 : 77 : 0.1
+T: 3 0 : 99 : 99 : 0.1
+T: 3 0 : 99 : 98 : 0.9
+T: 3 0 : 98 : 98 : 0.1
+T: 3 0 : 98 : 97 : 0.9
+T: 3 0 : 97 : 97 : 0.1
+T: 3 0 : 97 : 96 : 0.9
+T: 3 0 : 96 : 99 : 0.9
+T: 3 0 : 96 : 96 : 0.1
+T: 3 0 : 95 : 95 : 0.1
+T: 3 0 : 95 : 94 : 0.9
+T: 3 0 : 94 : 94 : 0.1
+T: 3 0 : 94 : 93 : 0.9
+T: 3 0 : 93 : 93 : 0.1
+T: 3 0 : 93 : 92 : 0.9
+T: 3 0 : 92 : 95 : 0.9
+T: 3 0 : 92 : 92 : 0.1
+T: 3 0 : 91 : 91 : 0.1
+T: 3 0 : 91 : 90 : 0.9
+T: 3 0 : 90 : 90 : 0.1
+T: 3 0 : 90 : 89 : 0.9
+T: 3 0 : 89 : 89 : 0.1
+T: 3 0 : 89 : 88 : 0.9
+T: 3 0 : 88 : 91 : 0.9
+T: 3 0 : 88 : 88 : 0.1
+T: 3 0 : 87 : 87 : 0.1
+T: 3 0 : 87 : 86 : 0.9
+T: 3 0 : 86 : 86 : 0.1
+T: 3 0 : 86 : 85 : 0.9
+T: 3 0 : 85 : 85 : 0.1
+T: 3 0 : 85 : 84 : 0.9
+T: 3 0 : 84 : 87 : 0.9
+T: 3 0 : 84 : 84 : 0.1
+T: 3 0 : 83 : 83 : 0.1
+T: 3 0 : 83 : 82 : 0.9
+T: 3 0 : 82 : 82 : 0.1
+T: 3 0 : 82 : 81 : 0.9
+T: 3 0 : 81 : 81 : 0.1
+T: 3 0 : 81 : 80 : 0.9
+T: 3 0 : 80 : 83 : 0.9
+T: 3 0 : 80 : 80 : 0.1
+T: 3 0 : 79 : 79 : 0.1
+T: 3 0 : 79 : 78 : 0.9
+T: 3 0 : 78 : 78 : 0.1
+T: 3 0 : 78 : 77 : 0.9
+T: 3 0 : 35 : 35 : 0.1
+T: 3 0 : 35 : 34 : 0.9
+T: 3 0 : 34 : 34 : 0.1
+T: 3 0 : 34 : 33 : 0.9
+T: 3 0 : 33 : 33 : 0.1
+T: 3 0 : 33 : 32 : 0.9
+T: 3 0 : 32 : 35 : 0.9
+T: 3 0 : 32 : 32 : 0.1
+T: 3 0 : 31 : 31 : 0.1
+T: 3 0 : 31 : 30 : 0.9
+T: 3 0 : 30 : 30 : 0.1
+T: 3 0 : 30 : 29 : 0.9
+T: 3 0 : 29 : 29 : 0.1
+T: 3 0 : 29 : 28 : 0.9
+T: 3 0 : 28 : 31 : 0.9
+T: 3 0 : 28 : 28 : 0.1
+T: 3 0 : 27 : 27 : 0.1
+T: 3 0 : 27 : 26 : 0.9
+T: 3 0 : 26 : 26 : 0.1
+T: 3 0 : 26 : 25 : 0.9
+T: 3 0 : 25 : 25 : 0.1
+T: 3 0 : 25 : 24 : 0.9
+T: 3 0 : 24 : 27 : 0.9
+T: 3 0 : 24 : 24 : 0.1
+T: 3 0 : 23 : 23 : 0.1
+T: 3 0 : 23 : 22 : 0.9
+T: 3 0 : 22 : 22 : 0.1
+T: 3 0 : 22 : 21 : 0.9
+T: 3 0 : 21 : 21 : 0.1
+T: 3 0 : 21 : 20 : 0.9
+T: 3 0 : 20 : 23 : 0.9
+T: 3 0 : 20 : 20 : 0.1
+T: 3 0 : 19 : 19 : 0.1
+T: 3 0 : 19 : 18 : 0.9
+T: 3 0 : 18 : 18 : 0.1
+T: 3 0 : 18 : 17 : 0.9
+T: 3 0 : 17 : 17 : 0.1
+T: 3 0 : 17 : 16 : 0.9
+T: 3 0 : 16 : 19 : 0.9
+T: 3 0 : 16 : 16 : 0.1
+T: 3 0 : 5 : 5 : 0.1
+T: 3 0 : 5 : 4 : 0.9
+T: 3 0 : 4 : 7 : 0.9
+T: 3 0 : 4 : 4 : 0.1
+T: 3 0 : 3 : 27 : 1
+T: 3 0 : 2 : 27 : 1
+T: 3 0 : 0 : 27 : 1
+T: 3 0 : 1 : 27 : 1
+T: 3 0 : 6 : 6 : 0.1
+T: 3 0 : 6 : 5 : 0.9
+T: 3 0 : 7 : 7 : 0.1
+T: 3 0 : 7 : 6 : 0.9
+T: 3 0 : 8 : 11 : 0.9
+T: 3 0 : 8 : 8 : 0.1
+T: 3 0 : 9 : 9 : 0.1
+T: 3 0 : 9 : 8 : 0.9
+T: 3 0 : 10 : 10 : 0.1
+T: 3 0 : 10 : 9 : 0.9
+T: 3 0 : 11 : 11 : 0.1
+T: 3 0 : 11 : 10 : 0.9
+T: 3 0 : 12 : 15 : 0.9
+T: 3 0 : 12 : 12 : 0.1
+T: 3 0 : 13 : 13 : 0.1
+T: 3 0 : 13 : 12 : 0.9
+T: 3 0 : 14 : 14 : 0.1
+T: 3 0 : 14 : 13 : 0.9
+T: 3 0 : 15 : 15 : 0.1
+T: 3 0 : 15 : 14 : 0.9
+T: 3 0 : 36 : 39 : 0.9
+T: 3 0 : 36 : 36 : 0.1
+T: 3 0 : 37 : 37 : 0.1
+T: 3 0 : 37 : 36 : 0.9
+T: 3 0 : 38 : 38 : 0.1
+T: 3 0 : 38 : 37 : 0.9
+T: 3 0 : 39 : 39 : 0.1
+T: 3 0 : 39 : 38 : 0.9
+T: 3 0 : 40 : 43 : 0.9
+T: 3 0 : 40 : 40 : 0.1
+T: 3 0 : 41 : 41 : 0.1
+T: 3 0 : 41 : 40 : 0.9
+T: 3 0 : 42 : 42 : 0.1
+T: 3 0 : 42 : 41 : 0.9
+T: 3 0 : 43 : 43 : 0.1
+T: 3 0 : 43 : 42 : 0.9
+T: 3 0 : 44 : 47 : 0.9
+T: 3 0 : 44 : 44 : 0.1
+T: 3 0 : 45 : 45 : 0.1
+T: 3 0 : 45 : 44 : 0.9
+T: 3 0 : 46 : 46 : 0.1
+T: 3 0 : 46 : 45 : 0.9
+T: 3 0 : 47 : 47 : 0.1
+T: 3 0 : 47 : 46 : 0.9
+T: 3 0 : 48 : 51 : 0.9
+T: 3 0 : 48 : 48 : 0.1
+T: 3 0 : 49 : 49 : 0.1
+T: 3 0 : 49 : 48 : 0.9
+T: 3 0 : 50 : 50 : 0.1
+T: 3 0 : 50 : 49 : 0.9
+T: 3 0 : 51 : 51 : 0.1
+T: 3 0 : 51 : 50 : 0.9
+T: 3 0 : 52 : 55 : 0.9
+T: 3 0 : 52 : 52 : 0.1
+T: 3 0 : 53 : 53 : 0.1
+T: 3 0 : 53 : 52 : 0.9
+T: 3 0 : 54 : 54 : 0.1
+T: 3 0 : 54 : 53 : 0.9
+T: 3 0 : 55 : 55 : 0.1
+T: 3 0 : 55 : 54 : 0.9
+T: 3 0 : 56 : 59 : 0.9
+T: 3 0 : 56 : 56 : 0.1
+T: 3 0 : 57 : 57 : 0.1
+T: 3 0 : 57 : 56 : 0.9
+T: 3 0 : 58 : 58 : 0.1
+T: 3 0 : 58 : 57 : 0.9
+T: 3 0 : 59 : 59 : 0.1
+T: 3 0 : 59 : 58 : 0.9
+T: 3 0 : 60 : 63 : 0.9
+T: 3 0 : 60 : 60 : 0.1
+T: 3 0 : 61 : 61 : 0.1
+T: 3 0 : 61 : 60 : 0.9
+T: 3 0 : 62 : 62 : 0.1
+T: 3 0 : 62 : 61 : 0.9
+T: 3 0 : 63 : 63 : 0.1
+T: 3 0 : 63 : 62 : 0.9
+T: 3 0 : 64 : 67 : 0.9
+T: 3 0 : 64 : 64 : 0.1
+T: 3 0 : 65 : 65 : 0.1
+T: 3 0 : 65 : 64 : 0.9
+T: 3 0 : 66 : 66 : 0.1
+T: 3 0 : 66 : 65 : 0.9
+T: 3 0 : 67 : 67 : 0.1
+T: 3 0 : 67 : 66 : 0.9
+T: 3 0 : 68 : 71 : 0.9
+T: 3 0 : 68 : 68 : 0.1
+T: 3 0 : 69 : 69 : 0.1
+T: 3 0 : 69 : 68 : 0.9
+T: 3 0 : 70 : 70 : 0.1
+T: 3 0 : 70 : 69 : 0.9
+T: 3 0 : 71 : 71 : 0.1
+T: 3 0 : 71 : 70 : 0.9
+T: 3 0 : 72 : 75 : 0.9
+T: 3 0 : 72 : 72 : 0.1
+T: 3 0 : 73 : 73 : 0.1
+T: 3 0 : 73 : 72 : 0.9
+T: 3 0 : 74 : 74 : 0.1
+T: 3 0 : 74 : 73 : 0.9
+T: 3 0 : 75 : 75 : 0.1
+T: 3 0 : 75 : 74 : 0.9
+T: 3 0 : 76 : 79 : 0.9
+T: 3 0 : 76 : 76 : 0.1
+T: 3 0 : 77 : 77 : 0.1
+T: 3 0 : 77 : 76 : 0.9
+T: 2 3 : 99 : 99 : 0.1
+T: 2 3 : 99 : 83 : 0.9
+T: 2 3 : 98 : 98 : 0.1
+T: 2 3 : 98 : 82 : 0.9
+T: 2 3 : 97 : 97 : 0.1
+T: 2 3 : 97 : 81 : 0.9
+T: 2 3 : 96 : 96 : 0.1
+T: 2 3 : 96 : 80 : 0.9
+T: 2 3 : 95 : 95 : 1
+T: 2 3 : 94 : 94 : 1
+T: 2 3 : 93 : 93 : 1
+T: 2 3 : 92 : 92 : 1
+T: 2 3 : 91 : 91 : 1
+T: 2 3 : 90 : 90 : 1
+T: 2 3 : 89 : 89 : 1
+T: 2 3 : 88 : 88 : 1
+T: 2 3 : 87 : 87 : 1
+T: 2 3 : 86 : 86 : 1
+T: 2 3 : 85 : 85 : 1
+T: 2 3 : 84 : 84 : 1
+T: 2 3 : 83 : 83 : 0.1
+T: 2 3 : 83 : 51 : 0.9
+T: 2 3 : 82 : 82 : 0.1
+T: 2 3 : 82 : 50 : 0.9
+T: 2 3 : 81 : 81 : 0.1
+T: 2 3 : 81 : 49 : 0.9
+T: 2 3 : 80 : 80 : 0.1
+T: 2 3 : 80 : 48 : 0.9
+T: 2 3 : 79 : 79 : 0.1
+T: 2 3 : 79 : 47 : 0.9
+T: 2 3 : 78 : 78 : 0.1
+T: 2 3 : 78 : 46 : 0.9
+T: 2 3 : 35 : 35 : 1
+T: 2 3 : 34 : 34 : 1
+T: 2 3 : 33 : 33 : 1
+T: 2 3 : 32 : 32 : 1
+T: 2 3 : 31 : 31 : 1
+T: 2 3 : 30 : 30 : 1
+T: 2 3 : 29 : 29 : 1
+T: 2 3 : 28 : 28 : 1
+T: 2 3 : 27 : 67 : 0.9
+T: 2 3 : 27 : 27 : 0.1
+T: 2 3 : 26 : 66 : 0.9
+T: 2 3 : 26 : 26 : 0.1
+T: 2 3 : 25 : 65 : 0.9
+T: 2 3 : 25 : 25 : 0.1
+T: 2 3 : 24 : 64 : 0.9
+T: 2 3 : 24 : 24 : 0.1
+T: 2 3 : 23 : 63 : 0.9
+T: 2 3 : 23 : 23 : 0.1
+T: 2 3 : 22 : 62 : 0.9
+T: 2 3 : 22 : 22 : 0.1
+T: 2 3 : 21 : 61 : 0.9
+T: 2 3 : 21 : 21 : 0.1
+T: 2 3 : 20 : 60 : 0.9
+T: 2 3 : 20 : 20 : 0.1
+T: 2 3 : 19 : 19 : 1
+T: 2 3 : 18 : 18 : 1
+T: 2 3 : 17 : 17 : 1
+T: 2 3 : 16 : 16 : 1
+T: 2 3 : 5 : 5 : 0.1
+T: 2 3 : 5 : 0 : 0.9
+T: 2 3 : 4 : 4 : 0.1
+T: 2 3 : 4 : 0 : 0.9
+T: 2 3 : 3 : 27 : 1
+T: 2 3 : 2 : 27 : 1
+T: 2 3 : 0 : 27 : 1
+T: 2 3 : 1 : 27 : 1
+T: 2 3 : 6 : 6 : 0.1
+T: 2 3 : 6 : 0 : 0.9
+T: 2 3 : 7 : 7 : 0.1
+T: 2 3 : 7 : 0 : 0.9
+T: 2 3 : 8 : 8 : 0.1
+T: 2 3 : 8 : 0 : 0.9
+T: 2 3 : 9 : 9 : 0.1
+T: 2 3 : 9 : 0 : 0.9
+T: 2 3 : 10 : 10 : 0.1
+T: 2 3 : 10 : 0 : 0.9
+T: 2 3 : 11 : 11 : 0.1
+T: 2 3 : 11 : 0 : 0.9
+T: 2 3 : 12 : 12 : 0.1
+T: 2 3 : 12 : 0 : 0.9
+T: 2 3 : 13 : 13 : 0.1
+T: 2 3 : 13 : 0 : 0.9
+T: 2 3 : 14 : 14 : 0.1
+T: 2 3 : 14 : 0 : 0.9
+T: 2 3 : 15 : 15 : 0.1
+T: 2 3 : 15 : 0 : 0.9
+T: 2 3 : 36 : 36 : 1
+T: 2 3 : 37 : 37 : 1
+T: 2 3 : 38 : 38 : 1
+T: 2 3 : 39 : 39 : 1
+T: 2 3 : 40 : 40 : 1
+T: 2 3 : 41 : 41 : 1
+T: 2 3 : 42 : 42 : 1
+T: 2 3 : 43 : 43 : 1
+T: 2 3 : 44 : 44 : 1
+T: 2 3 : 45 : 45 : 1
+T: 2 3 : 46 : 46 : 1
+T: 2 3 : 47 : 47 : 1
+T: 2 3 : 48 : 48 : 1
+T: 2 3 : 49 : 49 : 1
+T: 2 3 : 50 : 50 : 1
+T: 2 3 : 51 : 51 : 1
+T: 2 3 : 52 : 52 : 1
+T: 2 3 : 53 : 53 : 1
+T: 2 3 : 54 : 54 : 1
+T: 2 3 : 55 : 55 : 1
+T: 2 3 : 56 : 56 : 1
+T: 2 3 : 57 : 57 : 1
+T: 2 3 : 58 : 58 : 1
+T: 2 3 : 59 : 59 : 1
+T: 2 3 : 60 : 60 : 1
+T: 2 3 : 61 : 61 : 1
+T: 2 3 : 62 : 62 : 1
+T: 2 3 : 63 : 63 : 1
+T: 2 3 : 64 : 88 : 0.9
+T: 2 3 : 64 : 64 : 0.1
+T: 2 3 : 65 : 89 : 0.9
+T: 2 3 : 65 : 65 : 0.1
+T: 2 3 : 66 : 90 : 0.9
+T: 2 3 : 66 : 66 : 0.1
+T: 2 3 : 67 : 91 : 0.9
+T: 2 3 : 67 : 67 : 0.1
+T: 2 3 : 68 : 68 : 1
+T: 2 3 : 69 : 69 : 1
+T: 2 3 : 70 : 70 : 1
+T: 2 3 : 71 : 71 : 1
+T: 2 3 : 72 : 72 : 1
+T: 2 3 : 73 : 73 : 1
+T: 2 3 : 74 : 74 : 1
+T: 2 3 : 75 : 75 : 1
+T: 2 3 : 76 : 76 : 0.1
+T: 2 3 : 76 : 44 : 0.9
+T: 2 3 : 77 : 77 : 0.1
+T: 2 3 : 77 : 45 : 0.9
+T: 2 2 : 99 : 99 : 0.1
+T: 2 2 : 99 : 83 : 0.9
+T: 2 2 : 98 : 98 : 0.1
+T: 2 2 : 98 : 82 : 0.9
+T: 2 2 : 97 : 97 : 0.1
+T: 2 2 : 97 : 81 : 0.9
+T: 2 2 : 96 : 96 : 0.01
+T: 2 2 : 96 : 1 : 0.9
+T: 2 2 : 96 : 80 : 0.09
+T: 2 2 : 95 : 95 : 1
+T: 2 2 : 94 : 94 : 1
+T: 2 2 : 93 : 93 : 1
+T: 2 2 : 92 : 92 : 0.1
+T: 2 2 : 92 : 1 : 0.9
+T: 2 2 : 91 : 91 : 1
+T: 2 2 : 90 : 90 : 1
+T: 2 2 : 89 : 89 : 1
+T: 2 2 : 88 : 88 : 0.1
+T: 2 2 : 88 : 1 : 0.9
+T: 2 2 : 87 : 87 : 1
+T: 2 2 : 86 : 86 : 1
+T: 2 2 : 85 : 85 : 1
+T: 2 2 : 84 : 84 : 0.1
+T: 2 2 : 84 : 1 : 0.9
+T: 2 2 : 83 : 83 : 0.01
+T: 2 2 : 83 : 47 : 0.81
+T: 2 2 : 83 : 79 : 0.09
+T: 2 2 : 83 : 51 : 0.09
+T: 2 2 : 82 : 82 : 0.1
+T: 2 2 : 82 : 50 : 0.9
+T: 2 2 : 81 : 81 : 0.1
+T: 2 2 : 81 : 49 : 0.9
+T: 2 2 : 80 : 80 : 0.01
+T: 2 2 : 80 : 1 : 0.9
+T: 2 2 : 80 : 48 : 0.09
+T: 2 2 : 79 : 79 : 0.1
+T: 2 2 : 79 : 47 : 0.9
+T: 2 2 : 78 : 78 : 0.1
+T: 2 2 : 78 : 46 : 0.9
+T: 2 2 : 35 : 35 : 0.1
+T: 2 2 : 35 : 31 : 0.9
+T: 2 2 : 34 : 34 : 1
+T: 2 2 : 33 : 37 : 0.9
+T: 2 2 : 33 : 33 : 0.1
+T: 2 2 : 32 : 32 : 1
+T: 2 2 : 31 : 31 : 1
+T: 2 2 : 30 : 30 : 1
+T: 2 2 : 29 : 33 : 0.9
+T: 2 2 : 29 : 29 : 0.1
+T: 2 2 : 28 : 28 : 1
+T: 2 2 : 27 : 67 : 0.09
+T: 2 2 : 27 : 63 : 0.81
+T: 2 2 : 27 : 23 : 0.09
+T: 2 2 : 27 : 27 : 0.01
+T: 2 2 : 26 : 66 : 0.9
+T: 2 2 : 26 : 26 : 0.1
+T: 2 2 : 25 : 65 : 0.9
+T: 2 2 : 25 : 25 : 0.1
+T: 2 2 : 24 : 64 : 0.09
+T: 2 2 : 24 : 1 : 0.9
+T: 2 2 : 24 : 24 : 0.01
+T: 2 2 : 23 : 63 : 0.09
+T: 2 2 : 23 : 19 : 0.09
+T: 2 2 : 23 : 23 : 0.82
+T: 2 2 : 22 : 62 : 0.9
+T: 2 2 : 22 : 22 : 0.1
+T: 2 2 : 21 : 65 : 0.81
+T: 2 2 : 21 : 61 : 0.09
+T: 2 2 : 21 : 21 : 0.01
+T: 2 2 : 21 : 25 : 0.09
+T: 2 2 : 20 : 60 : 0.9
+T: 2 2 : 20 : 20 : 0.1
+T: 2 2 : 19 : 19 : 1
+T: 2 2 : 18 : 18 : 1
+T: 2 2 : 17 : 21 : 0.9
+T: 2 2 : 17 : 17 : 0.1
+T: 2 2 : 16 : 16 : 1
+T: 2 2 : 5 : 9 : 0.09
+T: 2 2 : 5 : 0 : 0.9
+T: 2 2 : 5 : 5 : 0.01
+T: 2 2 : 4 : 4 : 0.1
+T: 2 2 : 4 : 0 : 0.9
+T: 2 2 : 3 : 27 : 1
+T: 2 2 : 2 : 27 : 1
+T: 2 2 : 0 : 27 : 1
+T: 2 2 : 1 : 27 : 1
+T: 2 2 : 6 : 6 : 0.1
+T: 2 2 : 6 : 0 : 0.9
+T: 2 2 : 7 : 7 : 0.1
+T: 2 2 : 7 : 0 : 0.9
+T: 2 2 : 8 : 8 : 0.1
+T: 2 2 : 8 : 0 : 0.9
+T: 2 2 : 9 : 13 : 0.09
+T: 2 2 : 9 : 0 : 0.9
+T: 2 2 : 9 : 9 : 0.01
+T: 2 2 : 10 : 10 : 0.1
+T: 2 2 : 10 : 0 : 0.9
+T: 2 2 : 11 : 11 : 0.01
+T: 2 2 : 11 : 0 : 0.9
+T: 2 2 : 11 : 7 : 0.09
+T: 2 2 : 12 : 12 : 0.01
+T: 2 2 : 12 : 2 : 0.81
+T: 2 2 : 12 : 0 : 0.09
+T: 2 2 : 12 : 1 : 0.09
+T: 2 2 : 13 : 13 : 0.1
+T: 2 2 : 13 : 0 : 0.9
+T: 2 2 : 14 : 14 : 0.1
+T: 2 2 : 14 : 0 : 0.9
+T: 2 2 : 15 : 15 : 0.01
+T: 2 2 : 15 : 0 : 0.9
+T: 2 2 : 15 : 11 : 0.09
+T: 2 2 : 36 : 36 : 0.1
+T: 2 2 : 36 : 1 : 0.9
+T: 2 2 : 37 : 37 : 1
+T: 2 2 : 38 : 38 : 1
+T: 2 2 : 39 : 39 : 0.1
+T: 2 2 : 39 : 35 : 0.9
+T: 2 2 : 40 : 40 : 1
+T: 2 2 : 41 : 45 : 0.9
+T: 2 2 : 41 : 41 : 0.1
+T: 2 2 : 42 : 42 : 1
+T: 2 2 : 43 : 43 : 1
+T: 2 2 : 44 : 44 : 1
+T: 2 2 : 45 : 49 : 0.9
+T: 2 2 : 45 : 45 : 0.1
+T: 2 2 : 46 : 46 : 1
+T: 2 2 : 47 : 47 : 0.1
+T: 2 2 : 47 : 43 : 0.9
+T: 2 2 : 48 : 48 : 0.1
+T: 2 2 : 48 : 1 : 0.9
+T: 2 2 : 49 : 49 : 1
+T: 2 2 : 50 : 50 : 1
+T: 2 2 : 51 : 51 : 0.1
+T: 2 2 : 51 : 47 : 0.9
+T: 2 2 : 52 : 52 : 0.19
+T: 2 2 : 52 : 3 : 0.81
+T: 2 2 : 53 : 57 : 0.9
+T: 2 2 : 53 : 53 : 0.1
+T: 2 2 : 54 : 54 : 1
+T: 2 2 : 55 : 55 : 1
+T: 2 2 : 56 : 56 : 0.1
+T: 2 2 : 56 : 1 : 0.9
+T: 2 2 : 57 : 57 : 1
+T: 2 2 : 58 : 58 : 1
+T: 2 2 : 59 : 59 : 0.1
+T: 2 2 : 59 : 55 : 0.9
+T: 2 2 : 60 : 60 : 1
+T: 2 2 : 61 : 65 : 0.9
+T: 2 2 : 61 : 61 : 0.1
+T: 2 2 : 62 : 62 : 1
+T: 2 2 : 63 : 63 : 1
+T: 2 2 : 64 : 88 : 0.09
+T: 2 2 : 64 : 1 : 0.9
+T: 2 2 : 64 : 64 : 0.01
+T: 2 2 : 65 : 89 : 0.9
+T: 2 2 : 65 : 65 : 0.1
+T: 2 2 : 66 : 90 : 0.9
+T: 2 2 : 66 : 66 : 0.1
+T: 2 2 : 67 : 90 : 0.09
+T: 2 2 : 67 : 63 : 0.09
+T: 2 2 : 67 : 67 : 0.82
+T: 2 2 : 68 : 68 : 1
+T: 2 2 : 69 : 73 : 0.9
+T: 2 2 : 69 : 69 : 0.1
+T: 2 2 : 70 : 70 : 1
+T: 2 2 : 71 : 71 : 1
+T: 2 2 : 72 : 72 : 0.1
+T: 2 2 : 72 : 1 : 0.9
+T: 2 2 : 73 : 73 : 1
+T: 2 2 : 74 : 74 : 1
+T: 2 2 : 75 : 75 : 0.1
+T: 2 2 : 75 : 71 : 0.9
+T: 2 2 : 76 : 76 : 0.1
+T: 2 2 : 76 : 44 : 0.9
+T: 2 2 : 77 : 81 : 0.09
+T: 2 2 : 77 : 45 : 0.09
+T: 2 2 : 77 : 77 : 0.01
+T: 2 2 : 77 : 49 : 0.81
+T: 2 1 : 99 : 99 : 0.01
+T: 2 1 : 99 : 96 : 0.09
+T: 2 1 : 99 : 80 : 0.81
+T: 2 1 : 99 : 83 : 0.09
+T: 2 1 : 98 : 99 : 0.09
+T: 2 1 : 98 : 98 : 0.01
+T: 2 1 : 98 : 82 : 0.09
+T: 2 1 : 98 : 83 : 0.81
+T: 2 1 : 97 : 98 : 0.09
+T: 2 1 : 97 : 97 : 0.01
+T: 2 1 : 97 : 81 : 0.09
+T: 2 1 : 97 : 82 : 0.81
+T: 2 1 : 96 : 97 : 0.09
+T: 2 1 : 96 : 96 : 0.01
+T: 2 1 : 96 : 80 : 0.09
+T: 2 1 : 96 : 81 : 0.81
+T: 2 1 : 95 : 95 : 0.1
+T: 2 1 : 95 : 92 : 0.9
+T: 2 1 : 94 : 95 : 0.9
+T: 2 1 : 94 : 94 : 0.1
+T: 2 1 : 93 : 94 : 0.9
+T: 2 1 : 93 : 93 : 0.1
+T: 2 1 : 92 : 93 : 0.9
+T: 2 1 : 92 : 92 : 0.1
+T: 2 1 : 91 : 91 : 0.1
+T: 2 1 : 91 : 88 : 0.9
+T: 2 1 : 90 : 91 : 0.9
+T: 2 1 : 90 : 90 : 0.1
+T: 2 1 : 89 : 90 : 0.9
+T: 2 1 : 89 : 89 : 0.1
+T: 2 1 : 88 : 89 : 0.9
+T: 2 1 : 88 : 88 : 0.1
+T: 2 1 : 87 : 87 : 0.1
+T: 2 1 : 87 : 84 : 0.9
+T: 2 1 : 86 : 87 : 0.9
+T: 2 1 : 86 : 86 : 0.1
+T: 2 1 : 85 : 86 : 0.9
+T: 2 1 : 85 : 85 : 0.1
+T: 2 1 : 84 : 85 : 0.9
+T: 2 1 : 84 : 84 : 0.1
+T: 2 1 : 83 : 80 : 0.09
+T: 2 1 : 83 : 83 : 0.01
+T: 2 1 : 83 : 48 : 0.81
+T: 2 1 : 83 : 51 : 0.09
+T: 2 1 : 82 : 83 : 0.09
+T: 2 1 : 82 : 82 : 0.01
+T: 2 1 : 82 : 50 : 0.09
+T: 2 1 : 82 : 51 : 0.81
+T: 2 1 : 81 : 82 : 0.09
+T: 2 1 : 81 : 81 : 0.01
+T: 2 1 : 81 : 49 : 0.09
+T: 2 1 : 81 : 50 : 0.81
+T: 2 1 : 80 : 81 : 0.09
+T: 2 1 : 80 : 80 : 0.01
+T: 2 1 : 80 : 48 : 0.09
+T: 2 1 : 80 : 49 : 0.81
+T: 2 1 : 79 : 76 : 0.09
+T: 2 1 : 79 : 79 : 0.01
+T: 2 1 : 79 : 44 : 0.81
+T: 2 1 : 79 : 47 : 0.09
+T: 2 1 : 78 : 79 : 0.09
+T: 2 1 : 78 : 78 : 0.01
+T: 2 1 : 78 : 46 : 0.09
+T: 2 1 : 78 : 47 : 0.81
+T: 2 1 : 35 : 35 : 0.1
+T: 2 1 : 35 : 32 : 0.9
+T: 2 1 : 34 : 35 : 0.9
+T: 2 1 : 34 : 34 : 0.1
+T: 2 1 : 33 : 34 : 0.9
+T: 2 1 : 33 : 33 : 0.1
+T: 2 1 : 32 : 33 : 0.9
+T: 2 1 : 32 : 32 : 0.1
+T: 2 1 : 31 : 31 : 0.1
+T: 2 1 : 31 : 28 : 0.9
+T: 2 1 : 30 : 31 : 0.9
+T: 2 1 : 30 : 30 : 0.1
+T: 2 1 : 29 : 30 : 0.9
+T: 2 1 : 29 : 29 : 0.1
+T: 2 1 : 28 : 29 : 0.9
+T: 2 1 : 28 : 28 : 0.1
+T: 2 1 : 27 : 67 : 0.09
+T: 2 1 : 27 : 64 : 0.81
+T: 2 1 : 27 : 24 : 0.09
+T: 2 1 : 27 : 27 : 0.01
+T: 2 1 : 26 : 67 : 0.81
+T: 2 1 : 26 : 66 : 0.09
+T: 2 1 : 26 : 26 : 0.01
+T: 2 1 : 26 : 27 : 0.09
+T: 2 1 : 25 : 66 : 0.81
+T: 2 1 : 25 : 65 : 0.09
+T: 2 1 : 25 : 25 : 0.01
+T: 2 1 : 25 : 26 : 0.09
+T: 2 1 : 24 : 65 : 0.81
+T: 2 1 : 24 : 64 : 0.09
+T: 2 1 : 24 : 24 : 0.01
+T: 2 1 : 24 : 25 : 0.09
+T: 2 1 : 23 : 63 : 0.09
+T: 2 1 : 23 : 60 : 0.81
+T: 2 1 : 23 : 20 : 0.09
+T: 2 1 : 23 : 23 : 0.01
+T: 2 1 : 22 : 63 : 0.81
+T: 2 1 : 22 : 62 : 0.09
+T: 2 1 : 22 : 22 : 0.01
+T: 2 1 : 22 : 23 : 0.09
+T: 2 1 : 21 : 62 : 0.81
+T: 2 1 : 21 : 61 : 0.09
+T: 2 1 : 21 : 21 : 0.01
+T: 2 1 : 21 : 22 : 0.09
+T: 2 1 : 20 : 61 : 0.81
+T: 2 1 : 20 : 60 : 0.09
+T: 2 1 : 20 : 20 : 0.01
+T: 2 1 : 20 : 21 : 0.09
+T: 2 1 : 19 : 19 : 0.1
+T: 2 1 : 19 : 16 : 0.9
+T: 2 1 : 18 : 19 : 0.9
+T: 2 1 : 18 : 18 : 0.1
+T: 2 1 : 17 : 18 : 0.9
+T: 2 1 : 17 : 17 : 0.1
+T: 2 1 : 16 : 17 : 0.9
+T: 2 1 : 16 : 16 : 0.1
+T: 2 1 : 5 : 6 : 0.09
+T: 2 1 : 5 : 0 : 0.9
+T: 2 1 : 5 : 5 : 0.01
+T: 2 1 : 4 : 5 : 0.09
+T: 2 1 : 4 : 0 : 0.9
+T: 2 1 : 4 : 4 : 0.01
+T: 2 1 : 3 : 27 : 1
+T: 2 1 : 2 : 27 : 1
+T: 2 1 : 0 : 27 : 1
+T: 2 1 : 1 : 27 : 1
+T: 2 1 : 6 : 7 : 0.09
+T: 2 1 : 6 : 0 : 0.9
+T: 2 1 : 6 : 6 : 0.01
+T: 2 1 : 7 : 7 : 0.01
+T: 2 1 : 7 : 0 : 0.9
+T: 2 1 : 7 : 4 : 0.09
+T: 2 1 : 8 : 9 : 0.09
+T: 2 1 : 8 : 0 : 0.9
+T: 2 1 : 8 : 8 : 0.01
+T: 2 1 : 9 : 10 : 0.09
+T: 2 1 : 9 : 0 : 0.9
+T: 2 1 : 9 : 9 : 0.01
+T: 2 1 : 10 : 11 : 0.09
+T: 2 1 : 10 : 0 : 0.9
+T: 2 1 : 10 : 10 : 0.01
+T: 2 1 : 11 : 11 : 0.01
+T: 2 1 : 11 : 0 : 0.9
+T: 2 1 : 11 : 8 : 0.09
+T: 2 1 : 12 : 13 : 0.09
+T: 2 1 : 12 : 0 : 0.9
+T: 2 1 : 12 : 12 : 0.01
+T: 2 1 : 13 : 14 : 0.09
+T: 2 1 : 13 : 0 : 0.9
+T: 2 1 : 13 : 13 : 0.01
+T: 2 1 : 14 : 15 : 0.09
+T: 2 1 : 14 : 0 : 0.9
+T: 2 1 : 14 : 14 : 0.01
+T: 2 1 : 15 : 15 : 0.01
+T: 2 1 : 15 : 0 : 0.9
+T: 2 1 : 15 : 12 : 0.09
+T: 2 1 : 36 : 37 : 0.9
+T: 2 1 : 36 : 36 : 0.1
+T: 2 1 : 37 : 38 : 0.9
+T: 2 1 : 37 : 37 : 0.1
+T: 2 1 : 38 : 39 : 0.9
+T: 2 1 : 38 : 38 : 0.1
+T: 2 1 : 39 : 39 : 0.1
+T: 2 1 : 39 : 36 : 0.9
+T: 2 1 : 40 : 41 : 0.9
+T: 2 1 : 40 : 40 : 0.1
+T: 2 1 : 41 : 42 : 0.9
+T: 2 1 : 41 : 41 : 0.1
+T: 2 1 : 42 : 43 : 0.9
+T: 2 1 : 42 : 42 : 0.1
+T: 2 1 : 43 : 43 : 0.1
+T: 2 1 : 43 : 40 : 0.9
+T: 2 1 : 44 : 45 : 0.9
+T: 2 1 : 44 : 44 : 0.1
+T: 2 1 : 45 : 46 : 0.9
+T: 2 1 : 45 : 45 : 0.1
+T: 2 1 : 46 : 47 : 0.9
+T: 2 1 : 46 : 46 : 0.1
+T: 2 1 : 47 : 47 : 0.1
+T: 2 1 : 47 : 44 : 0.9
+T: 2 1 : 48 : 49 : 0.9
+T: 2 1 : 48 : 48 : 0.1
+T: 2 1 : 49 : 50 : 0.9
+T: 2 1 : 49 : 49 : 0.1
+T: 2 1 : 50 : 51 : 0.9
+T: 2 1 : 50 : 50 : 0.1
+T: 2 1 : 51 : 51 : 0.1
+T: 2 1 : 51 : 48 : 0.9
+T: 2 1 : 52 : 53 : 0.9
+T: 2 1 : 52 : 52 : 0.1
+T: 2 1 : 53 : 54 : 0.9
+T: 2 1 : 53 : 53 : 0.1
+T: 2 1 : 54 : 55 : 0.9
+T: 2 1 : 54 : 54 : 0.1
+T: 2 1 : 55 : 55 : 0.1
+T: 2 1 : 55 : 52 : 0.9
+T: 2 1 : 56 : 57 : 0.9
+T: 2 1 : 56 : 56 : 0.1
+T: 2 1 : 57 : 58 : 0.9
+T: 2 1 : 57 : 57 : 0.1
+T: 2 1 : 58 : 59 : 0.9
+T: 2 1 : 58 : 58 : 0.1
+T: 2 1 : 59 : 59 : 0.1
+T: 2 1 : 59 : 56 : 0.9
+T: 2 1 : 60 : 61 : 0.9
+T: 2 1 : 60 : 60 : 0.1
+T: 2 1 : 61 : 62 : 0.9
+T: 2 1 : 61 : 61 : 0.1
+T: 2 1 : 62 : 63 : 0.9
+T: 2 1 : 62 : 62 : 0.1
+T: 2 1 : 63 : 63 : 0.1
+T: 2 1 : 63 : 60 : 0.9
+T: 2 1 : 64 : 89 : 0.81
+T: 2 1 : 64 : 88 : 0.09
+T: 2 1 : 64 : 64 : 0.01
+T: 2 1 : 64 : 65 : 0.09
+T: 2 1 : 65 : 90 : 0.81
+T: 2 1 : 65 : 89 : 0.09
+T: 2 1 : 65 : 65 : 0.01
+T: 2 1 : 65 : 66 : 0.09
+T: 2 1 : 66 : 91 : 0.81
+T: 2 1 : 66 : 90 : 0.09
+T: 2 1 : 66 : 66 : 0.01
+T: 2 1 : 66 : 67 : 0.09
+T: 2 1 : 67 : 91 : 0.09
+T: 2 1 : 67 : 64 : 0.09
+T: 2 1 : 67 : 88 : 0.81
+T: 2 1 : 67 : 67 : 0.01
+T: 2 1 : 68 : 69 : 0.9
+T: 2 1 : 68 : 68 : 0.1
+T: 2 1 : 69 : 70 : 0.9
+T: 2 1 : 69 : 69 : 0.1
+T: 2 1 : 70 : 71 : 0.9
+T: 2 1 : 70 : 70 : 0.1
+T: 2 1 : 71 : 71 : 0.1
+T: 2 1 : 71 : 68 : 0.9
+T: 2 1 : 72 : 73 : 0.9
+T: 2 1 : 72 : 72 : 0.1
+T: 2 1 : 73 : 74 : 0.9
+T: 2 1 : 73 : 73 : 0.1
+T: 2 1 : 74 : 75 : 0.9
+T: 2 1 : 74 : 74 : 0.1
+T: 2 1 : 75 : 75 : 0.1
+T: 2 1 : 75 : 72 : 0.9
+T: 2 1 : 76 : 77 : 0.09
+T: 2 1 : 76 : 76 : 0.01
+T: 2 1 : 76 : 44 : 0.09
+T: 2 1 : 76 : 45 : 0.81
+T: 2 1 : 77 : 78 : 0.09
+T: 2 1 : 77 : 77 : 0.01
+T: 2 1 : 77 : 45 : 0.09
+T: 2 1 : 77 : 46 : 0.81
+T: 2 0 : 99 : 99 : 0.01
+T: 2 0 : 99 : 98 : 0.09
+T: 2 0 : 99 : 82 : 0.81
+T: 2 0 : 99 : 83 : 0.09
+T: 2 0 : 98 : 98 : 0.01
+T: 2 0 : 98 : 97 : 0.09
+T: 2 0 : 98 : 81 : 0.81
+T: 2 0 : 98 : 82 : 0.09
+T: 2 0 : 97 : 97 : 0.01
+T: 2 0 : 97 : 96 : 0.09
+T: 2 0 : 97 : 80 : 0.81
+T: 2 0 : 97 : 81 : 0.09
+T: 2 0 : 96 : 99 : 0.09
+T: 2 0 : 96 : 96 : 0.01
+T: 2 0 : 96 : 80 : 0.09
+T: 2 0 : 96 : 83 : 0.81
+T: 2 0 : 95 : 95 : 0.1
+T: 2 0 : 95 : 94 : 0.9
+T: 2 0 : 94 : 94 : 0.1
+T: 2 0 : 94 : 93 : 0.9
+T: 2 0 : 93 : 93 : 0.1
+T: 2 0 : 93 : 92 : 0.9
+T: 2 0 : 92 : 95 : 0.9
+T: 2 0 : 92 : 92 : 0.1
+T: 2 0 : 91 : 91 : 0.1
+T: 2 0 : 91 : 90 : 0.9
+T: 2 0 : 90 : 90 : 0.1
+T: 2 0 : 90 : 89 : 0.9
+T: 2 0 : 89 : 89 : 0.1
+T: 2 0 : 89 : 88 : 0.9
+T: 2 0 : 88 : 91 : 0.9
+T: 2 0 : 88 : 88 : 0.1
+T: 2 0 : 87 : 87 : 0.1
+T: 2 0 : 87 : 86 : 0.9
+T: 2 0 : 86 : 86 : 0.1
+T: 2 0 : 86 : 85 : 0.9
+T: 2 0 : 85 : 85 : 0.1
+T: 2 0 : 85 : 84 : 0.9
+T: 2 0 : 84 : 87 : 0.9
+T: 2 0 : 84 : 84 : 0.1
+T: 2 0 : 83 : 83 : 0.01
+T: 2 0 : 83 : 82 : 0.09
+T: 2 0 : 83 : 50 : 0.81
+T: 2 0 : 83 : 51 : 0.09
+T: 2 0 : 82 : 82 : 0.01
+T: 2 0 : 82 : 81 : 0.09
+T: 2 0 : 82 : 49 : 0.81
+T: 2 0 : 82 : 50 : 0.09
+T: 2 0 : 81 : 81 : 0.01
+T: 2 0 : 81 : 80 : 0.09
+T: 2 0 : 81 : 48 : 0.81
+T: 2 0 : 81 : 49 : 0.09
+T: 2 0 : 80 : 80 : 0.01
+T: 2 0 : 80 : 83 : 0.09
+T: 2 0 : 80 : 48 : 0.09
+T: 2 0 : 80 : 51 : 0.81
+T: 2 0 : 79 : 79 : 0.01
+T: 2 0 : 79 : 78 : 0.09
+T: 2 0 : 79 : 46 : 0.81
+T: 2 0 : 79 : 47 : 0.09
+T: 2 0 : 78 : 78 : 0.01
+T: 2 0 : 78 : 77 : 0.09
+T: 2 0 : 78 : 45 : 0.81
+T: 2 0 : 78 : 46 : 0.09
+T: 2 0 : 35 : 35 : 0.1
+T: 2 0 : 35 : 34 : 0.9
+T: 2 0 : 34 : 34 : 0.1
+T: 2 0 : 34 : 33 : 0.9
+T: 2 0 : 33 : 33 : 0.1
+T: 2 0 : 33 : 32 : 0.9
+T: 2 0 : 32 : 35 : 0.9
+T: 2 0 : 32 : 32 : 0.1
+T: 2 0 : 31 : 31 : 0.1
+T: 2 0 : 31 : 30 : 0.9
+T: 2 0 : 30 : 30 : 0.1
+T: 2 0 : 30 : 29 : 0.9
+T: 2 0 : 29 : 29 : 0.1
+T: 2 0 : 29 : 28 : 0.9
+T: 2 0 : 28 : 31 : 0.9
+T: 2 0 : 28 : 28 : 0.1
+T: 2 0 : 27 : 67 : 0.09
+T: 2 0 : 27 : 66 : 0.81
+T: 2 0 : 27 : 26 : 0.09
+T: 2 0 : 27 : 27 : 0.01
+T: 2 0 : 26 : 66 : 0.09
+T: 2 0 : 26 : 65 : 0.81
+T: 2 0 : 26 : 25 : 0.09
+T: 2 0 : 26 : 26 : 0.01
+T: 2 0 : 25 : 65 : 0.09
+T: 2 0 : 25 : 64 : 0.81
+T: 2 0 : 25 : 24 : 0.09
+T: 2 0 : 25 : 25 : 0.01
+T: 2 0 : 24 : 67 : 0.81
+T: 2 0 : 24 : 64 : 0.09
+T: 2 0 : 24 : 24 : 0.01
+T: 2 0 : 24 : 27 : 0.09
+T: 2 0 : 23 : 63 : 0.09
+T: 2 0 : 23 : 62 : 0.81
+T: 2 0 : 23 : 22 : 0.09
+T: 2 0 : 23 : 23 : 0.01
+T: 2 0 : 22 : 62 : 0.09
+T: 2 0 : 22 : 61 : 0.81
+T: 2 0 : 22 : 21 : 0.09
+T: 2 0 : 22 : 22 : 0.01
+T: 2 0 : 21 : 61 : 0.09
+T: 2 0 : 21 : 60 : 0.81
+T: 2 0 : 21 : 20 : 0.09
+T: 2 0 : 21 : 21 : 0.01
+T: 2 0 : 20 : 63 : 0.81
+T: 2 0 : 20 : 60 : 0.09
+T: 2 0 : 20 : 20 : 0.01
+T: 2 0 : 20 : 23 : 0.09
+T: 2 0 : 19 : 19 : 0.1
+T: 2 0 : 19 : 18 : 0.9
+T: 2 0 : 18 : 18 : 0.1
+T: 2 0 : 18 : 17 : 0.9
+T: 2 0 : 17 : 17 : 0.1
+T: 2 0 : 17 : 16 : 0.9
+T: 2 0 : 16 : 19 : 0.9
+T: 2 0 : 16 : 16 : 0.1
+T: 2 0 : 5 : 5 : 0.01
+T: 2 0 : 5 : 0 : 0.9
+T: 2 0 : 5 : 4 : 0.09
+T: 2 0 : 4 : 7 : 0.09
+T: 2 0 : 4 : 0 : 0.9
+T: 2 0 : 4 : 4 : 0.01
+T: 2 0 : 3 : 27 : 1
+T: 2 0 : 2 : 27 : 1
+T: 2 0 : 0 : 27 : 1
+T: 2 0 : 1 : 27 : 1
+T: 2 0 : 6 : 6 : 0.01
+T: 2 0 : 6 : 0 : 0.9
+T: 2 0 : 6 : 5 : 0.09
+T: 2 0 : 7 : 7 : 0.01
+T: 2 0 : 7 : 0 : 0.9
+T: 2 0 : 7 : 6 : 0.09
+T: 2 0 : 8 : 11 : 0.09
+T: 2 0 : 8 : 0 : 0.9
+T: 2 0 : 8 : 8 : 0.01
+T: 2 0 : 9 : 9 : 0.01
+T: 2 0 : 9 : 0 : 0.9
+T: 2 0 : 9 : 8 : 0.09
+T: 2 0 : 10 : 10 : 0.01
+T: 2 0 : 10 : 0 : 0.9
+T: 2 0 : 10 : 9 : 0.09
+T: 2 0 : 11 : 11 : 0.01
+T: 2 0 : 11 : 0 : 0.9
+T: 2 0 : 11 : 10 : 0.09
+T: 2 0 : 12 : 15 : 0.09
+T: 2 0 : 12 : 0 : 0.9
+T: 2 0 : 12 : 12 : 0.01
+T: 2 0 : 13 : 13 : 0.01
+T: 2 0 : 13 : 0 : 0.9
+T: 2 0 : 13 : 12 : 0.09
+T: 2 0 : 14 : 14 : 0.01
+T: 2 0 : 14 : 0 : 0.9
+T: 2 0 : 14 : 13 : 0.09
+T: 2 0 : 15 : 15 : 0.01
+T: 2 0 : 15 : 0 : 0.9
+T: 2 0 : 15 : 14 : 0.09
+T: 2 0 : 36 : 39 : 0.9
+T: 2 0 : 36 : 36 : 0.1
+T: 2 0 : 37 : 37 : 0.1
+T: 2 0 : 37 : 36 : 0.9
+T: 2 0 : 38 : 38 : 0.1
+T: 2 0 : 38 : 37 : 0.9
+T: 2 0 : 39 : 39 : 0.1
+T: 2 0 : 39 : 38 : 0.9
+T: 2 0 : 40 : 43 : 0.9
+T: 2 0 : 40 : 40 : 0.1
+T: 2 0 : 41 : 41 : 0.1
+T: 2 0 : 41 : 40 : 0.9
+T: 2 0 : 42 : 42 : 0.1
+T: 2 0 : 42 : 41 : 0.9
+T: 2 0 : 43 : 43 : 0.1
+T: 2 0 : 43 : 42 : 0.9
+T: 2 0 : 44 : 47 : 0.9
+T: 2 0 : 44 : 44 : 0.1
+T: 2 0 : 45 : 45 : 0.1
+T: 2 0 : 45 : 44 : 0.9
+T: 2 0 : 46 : 46 : 0.1
+T: 2 0 : 46 : 45 : 0.9
+T: 2 0 : 47 : 47 : 0.1
+T: 2 0 : 47 : 46 : 0.9
+T: 2 0 : 48 : 51 : 0.9
+T: 2 0 : 48 : 48 : 0.1
+T: 2 0 : 49 : 49 : 0.1
+T: 2 0 : 49 : 48 : 0.9
+T: 2 0 : 50 : 50 : 0.1
+T: 2 0 : 50 : 49 : 0.9
+T: 2 0 : 51 : 51 : 0.1
+T: 2 0 : 51 : 50 : 0.9
+T: 2 0 : 52 : 55 : 0.9
+T: 2 0 : 52 : 52 : 0.1
+T: 2 0 : 53 : 53 : 0.1
+T: 2 0 : 53 : 52 : 0.9
+T: 2 0 : 54 : 54 : 0.1
+T: 2 0 : 54 : 53 : 0.9
+T: 2 0 : 55 : 55 : 0.1
+T: 2 0 : 55 : 54 : 0.9
+T: 2 0 : 56 : 59 : 0.9
+T: 2 0 : 56 : 56 : 0.1
+T: 2 0 : 57 : 57 : 0.1
+T: 2 0 : 57 : 56 : 0.9
+T: 2 0 : 58 : 58 : 0.1
+T: 2 0 : 58 : 57 : 0.9
+T: 2 0 : 59 : 59 : 0.1
+T: 2 0 : 59 : 58 : 0.9
+T: 2 0 : 60 : 63 : 0.9
+T: 2 0 : 60 : 60 : 0.1
+T: 2 0 : 61 : 61 : 0.1
+T: 2 0 : 61 : 60 : 0.9
+T: 2 0 : 62 : 62 : 0.1
+T: 2 0 : 62 : 61 : 0.9
+T: 2 0 : 63 : 63 : 0.1
+T: 2 0 : 63 : 62 : 0.9
+T: 2 0 : 64 : 91 : 0.81
+T: 2 0 : 64 : 64 : 0.01
+T: 2 0 : 64 : 88 : 0.09
+T: 2 0 : 64 : 67 : 0.09
+T: 2 0 : 65 : 89 : 0.09
+T: 2 0 : 65 : 88 : 0.81
+T: 2 0 : 65 : 64 : 0.09
+T: 2 0 : 65 : 65 : 0.01
+T: 2 0 : 66 : 90 : 0.09
+T: 2 0 : 66 : 89 : 0.81
+T: 2 0 : 66 : 65 : 0.09
+T: 2 0 : 66 : 66 : 0.01
+T: 2 0 : 67 : 91 : 0.09
+T: 2 0 : 67 : 90 : 0.81
+T: 2 0 : 67 : 66 : 0.09
+T: 2 0 : 67 : 67 : 0.01
+T: 2 0 : 68 : 71 : 0.9
+T: 2 0 : 68 : 68 : 0.1
+T: 2 0 : 69 : 69 : 0.1
+T: 2 0 : 69 : 68 : 0.9
+T: 2 0 : 70 : 70 : 0.1
+T: 2 0 : 70 : 69 : 0.9
+T: 2 0 : 71 : 71 : 0.1
+T: 2 0 : 71 : 70 : 0.9
+T: 2 0 : 72 : 75 : 0.9
+T: 2 0 : 72 : 72 : 0.1
+T: 2 0 : 73 : 73 : 0.1
+T: 2 0 : 73 : 72 : 0.9
+T: 2 0 : 74 : 74 : 0.1
+T: 2 0 : 74 : 73 : 0.9
+T: 2 0 : 75 : 75 : 0.1
+T: 2 0 : 75 : 74 : 0.9
+T: 2 0 : 76 : 76 : 0.01
+T: 2 0 : 76 : 79 : 0.09
+T: 2 0 : 76 : 44 : 0.09
+T: 2 0 : 76 : 47 : 0.81
+T: 2 0 : 77 : 77 : 0.01
+T: 2 0 : 77 : 76 : 0.09
+T: 2 0 : 77 : 44 : 0.81
+T: 2 0 : 77 : 45 : 0.09
+T: 1 3 : 99 : 99 : 0.1
+T: 1 3 : 99 : 87 : 0.9
+T: 1 3 : 98 : 98 : 0.1
+T: 1 3 : 98 : 86 : 0.9
+T: 1 3 : 97 : 97 : 0.1
+T: 1 3 : 97 : 85 : 0.9
+T: 1 3 : 96 : 96 : 0.1
+T: 1 3 : 96 : 84 : 0.9
+T: 1 3 : 95 : 99 : 0.9
+T: 1 3 : 95 : 95 : 0.1
+T: 1 3 : 94 : 98 : 0.9
+T: 1 3 : 94 : 94 : 0.1
+T: 1 3 : 93 : 97 : 0.9
+T: 1 3 : 93 : 93 : 0.1
+T: 1 3 : 92 : 96 : 0.9
+T: 1 3 : 92 : 92 : 0.1
+T: 1 3 : 91 : 95 : 0.9
+T: 1 3 : 91 : 91 : 0.1
+T: 1 3 : 90 : 94 : 0.9
+T: 1 3 : 90 : 90 : 0.1
+T: 1 3 : 89 : 93 : 0.9
+T: 1 3 : 89 : 89 : 0.1
+T: 1 3 : 88 : 92 : 0.9
+T: 1 3 : 88 : 88 : 0.1
+T: 1 3 : 87 : 91 : 0.9
+T: 1 3 : 87 : 87 : 0.1
+T: 1 3 : 86 : 90 : 0.9
+T: 1 3 : 86 : 86 : 0.1
+T: 1 3 : 85 : 89 : 0.9
+T: 1 3 : 85 : 85 : 0.1
+T: 1 3 : 84 : 88 : 0.9
+T: 1 3 : 84 : 84 : 0.1
+T: 1 3 : 83 : 83 : 0.1
+T: 1 3 : 83 : 59 : 0.9
+T: 1 3 : 82 : 82 : 0.1
+T: 1 3 : 82 : 58 : 0.9
+T: 1 3 : 81 : 81 : 0.1
+T: 1 3 : 81 : 57 : 0.9
+T: 1 3 : 80 : 80 : 0.1
+T: 1 3 : 80 : 56 : 0.9
+T: 1 3 : 79 : 79 : 0.1
+T: 1 3 : 79 : 55 : 0.9
+T: 1 3 : 78 : 78 : 0.1
+T: 1 3 : 78 : 54 : 0.9
+T: 1 3 : 35 : 47 : 0.9
+T: 1 3 : 35 : 35 : 0.1
+T: 1 3 : 34 : 46 : 0.9
+T: 1 3 : 34 : 34 : 0.1
+T: 1 3 : 33 : 45 : 0.9
+T: 1 3 : 33 : 33 : 0.1
+T: 1 3 : 32 : 44 : 0.9
+T: 1 3 : 32 : 32 : 0.1
+T: 1 3 : 31 : 43 : 0.9
+T: 1 3 : 31 : 31 : 0.1
+T: 1 3 : 30 : 42 : 0.9
+T: 1 3 : 30 : 30 : 0.1
+T: 1 3 : 29 : 41 : 0.9
+T: 1 3 : 29 : 29 : 0.1
+T: 1 3 : 28 : 40 : 0.9
+T: 1 3 : 28 : 28 : 0.1
+T: 1 3 : 27 : 39 : 0.9
+T: 1 3 : 27 : 27 : 0.1
+T: 1 3 : 26 : 38 : 0.9
+T: 1 3 : 26 : 26 : 0.1
+T: 1 3 : 25 : 37 : 0.9
+T: 1 3 : 25 : 25 : 0.1
+T: 1 3 : 24 : 36 : 0.9
+T: 1 3 : 24 : 24 : 0.1
+T: 1 3 : 23 : 35 : 0.9
+T: 1 3 : 23 : 23 : 0.1
+T: 1 3 : 22 : 34 : 0.9
+T: 1 3 : 22 : 22 : 0.1
+T: 1 3 : 21 : 33 : 0.9
+T: 1 3 : 21 : 21 : 0.1
+T: 1 3 : 20 : 32 : 0.9
+T: 1 3 : 20 : 20 : 0.1
+T: 1 3 : 19 : 31 : 0.9
+T: 1 3 : 19 : 19 : 0.1
+T: 1 3 : 18 : 30 : 0.9
+T: 1 3 : 18 : 18 : 0.1
+T: 1 3 : 17 : 29 : 0.9
+T: 1 3 : 17 : 17 : 0.1
+T: 1 3 : 16 : 28 : 0.9
+T: 1 3 : 16 : 16 : 0.1
+T: 1 3 : 5 : 17 : 0.9
+T: 1 3 : 5 : 5 : 0.1
+T: 1 3 : 4 : 16 : 0.9
+T: 1 3 : 4 : 4 : 0.1
+T: 1 3 : 3 : 27 : 1
+T: 1 3 : 2 : 27 : 1
+T: 1 3 : 0 : 27 : 1
+T: 1 3 : 1 : 27 : 1
+T: 1 3 : 6 : 18 : 0.9
+T: 1 3 : 6 : 6 : 0.1
+T: 1 3 : 7 : 19 : 0.9
+T: 1 3 : 7 : 7 : 0.1
+T: 1 3 : 8 : 20 : 0.9
+T: 1 3 : 8 : 8 : 0.1
+T: 1 3 : 9 : 21 : 0.9
+T: 1 3 : 9 : 9 : 0.1
+T: 1 3 : 10 : 22 : 0.9
+T: 1 3 : 10 : 10 : 0.1
+T: 1 3 : 11 : 23 : 0.9
+T: 1 3 : 11 : 11 : 0.1
+T: 1 3 : 12 : 24 : 0.9
+T: 1 3 : 12 : 12 : 0.1
+T: 1 3 : 13 : 25 : 0.9
+T: 1 3 : 13 : 13 : 0.1
+T: 1 3 : 14 : 26 : 0.9
+T: 1 3 : 14 : 14 : 0.1
+T: 1 3 : 15 : 27 : 0.9
+T: 1 3 : 15 : 15 : 0.1
+T: 1 3 : 36 : 48 : 0.9
+T: 1 3 : 36 : 36 : 0.1
+T: 1 3 : 37 : 49 : 0.9
+T: 1 3 : 37 : 37 : 0.1
+T: 1 3 : 38 : 50 : 0.9
+T: 1 3 : 38 : 38 : 0.1
+T: 1 3 : 39 : 51 : 0.9
+T: 1 3 : 39 : 39 : 0.1
+T: 1 3 : 40 : 40 : 0.1
+T: 1 3 : 40 : 4 : 0.9
+T: 1 3 : 41 : 41 : 0.1
+T: 1 3 : 41 : 5 : 0.9
+T: 1 3 : 42 : 42 : 0.1
+T: 1 3 : 42 : 6 : 0.9
+T: 1 3 : 43 : 43 : 0.1
+T: 1 3 : 43 : 7 : 0.9
+T: 1 3 : 44 : 44 : 0.1
+T: 1 3 : 44 : 8 : 0.9
+T: 1 3 : 45 : 45 : 0.1
+T: 1 3 : 45 : 9 : 0.9
+T: 1 3 : 46 : 46 : 0.1
+T: 1 3 : 46 : 10 : 0.9
+T: 1 3 : 47 : 47 : 0.1
+T: 1 3 : 47 : 11 : 0.9
+T: 1 3 : 48 : 48 : 0.1
+T: 1 3 : 48 : 12 : 0.9
+T: 1 3 : 49 : 49 : 0.1
+T: 1 3 : 49 : 13 : 0.9
+T: 1 3 : 50 : 50 : 0.1
+T: 1 3 : 50 : 14 : 0.9
+T: 1 3 : 51 : 51 : 0.1
+T: 1 3 : 51 : 15 : 0.9
+T: 1 3 : 52 : 60 : 0.9
+T: 1 3 : 52 : 52 : 0.1
+T: 1 3 : 53 : 61 : 0.9
+T: 1 3 : 53 : 53 : 0.1
+T: 1 3 : 54 : 62 : 0.9
+T: 1 3 : 54 : 54 : 0.1
+T: 1 3 : 55 : 63 : 0.9
+T: 1 3 : 55 : 55 : 0.1
+T: 1 3 : 56 : 64 : 0.9
+T: 1 3 : 56 : 56 : 0.1
+T: 1 3 : 57 : 65 : 0.9
+T: 1 3 : 57 : 57 : 0.1
+T: 1 3 : 58 : 66 : 0.9
+T: 1 3 : 58 : 58 : 0.1
+T: 1 3 : 59 : 67 : 0.9
+T: 1 3 : 59 : 59 : 0.1
+T: 1 3 : 60 : 68 : 0.9
+T: 1 3 : 60 : 60 : 0.1
+T: 1 3 : 61 : 69 : 0.9
+T: 1 3 : 61 : 61 : 0.1
+T: 1 3 : 62 : 70 : 0.9
+T: 1 3 : 62 : 62 : 0.1
+T: 1 3 : 63 : 71 : 0.9
+T: 1 3 : 63 : 63 : 0.1
+T: 1 3 : 64 : 72 : 0.9
+T: 1 3 : 64 : 64 : 0.1
+T: 1 3 : 65 : 73 : 0.9
+T: 1 3 : 65 : 65 : 0.1
+T: 1 3 : 66 : 74 : 0.9
+T: 1 3 : 66 : 66 : 0.1
+T: 1 3 : 67 : 75 : 0.9
+T: 1 3 : 67 : 67 : 0.1
+T: 1 3 : 68 : 76 : 0.9
+T: 1 3 : 68 : 68 : 0.1
+T: 1 3 : 69 : 77 : 0.9
+T: 1 3 : 69 : 69 : 0.1
+T: 1 3 : 70 : 78 : 0.9
+T: 1 3 : 70 : 70 : 0.1
+T: 1 3 : 71 : 79 : 0.9
+T: 1 3 : 71 : 71 : 0.1
+T: 1 3 : 72 : 80 : 0.9
+T: 1 3 : 72 : 72 : 0.1
+T: 1 3 : 73 : 81 : 0.9
+T: 1 3 : 73 : 73 : 0.1
+T: 1 3 : 74 : 82 : 0.9
+T: 1 3 : 74 : 74 : 0.1
+T: 1 3 : 75 : 83 : 0.9
+T: 1 3 : 75 : 75 : 0.1
+T: 1 3 : 76 : 76 : 0.1
+T: 1 3 : 76 : 52 : 0.9
+T: 1 3 : 77 : 77 : 0.1
+T: 1 3 : 77 : 53 : 0.9
+T: 1 2 : 99 : 99 : 0.1
+T: 1 2 : 99 : 87 : 0.9
+T: 1 2 : 98 : 98 : 0.1
+T: 1 2 : 98 : 86 : 0.9
+T: 1 2 : 97 : 97 : 0.1
+T: 1 2 : 97 : 85 : 0.9
+T: 1 2 : 96 : 96 : 0.01
+T: 1 2 : 96 : 1 : 0.9
+T: 1 2 : 96 : 84 : 0.09
+T: 1 2 : 95 : 99 : 0.9
+T: 1 2 : 95 : 95 : 0.1
+T: 1 2 : 94 : 98 : 0.9
+T: 1 2 : 94 : 94 : 0.1
+T: 1 2 : 93 : 97 : 0.9
+T: 1 2 : 93 : 93 : 0.1
+T: 1 2 : 92 : 96 : 0.09
+T: 1 2 : 92 : 1 : 0.9
+T: 1 2 : 92 : 92 : 0.01
+T: 1 2 : 91 : 95 : 0.9
+T: 1 2 : 91 : 91 : 0.1
+T: 1 2 : 90 : 94 : 0.9
+T: 1 2 : 90 : 90 : 0.1
+T: 1 2 : 89 : 93 : 0.9
+T: 1 2 : 89 : 89 : 0.1
+T: 1 2 : 88 : 92 : 0.09
+T: 1 2 : 88 : 1 : 0.9
+T: 1 2 : 88 : 88 : 0.01
+T: 1 2 : 87 : 91 : 0.9
+T: 1 2 : 87 : 87 : 0.1
+T: 1 2 : 86 : 90 : 0.9
+T: 1 2 : 86 : 86 : 0.1
+T: 1 2 : 85 : 89 : 0.9
+T: 1 2 : 85 : 85 : 0.1
+T: 1 2 : 84 : 88 : 0.09
+T: 1 2 : 84 : 1 : 0.9
+T: 1 2 : 84 : 84 : 0.01
+T: 1 2 : 83 : 79 : 0.09
+T: 1 2 : 83 : 83 : 0.01
+T: 1 2 : 83 : 55 : 0.81
+T: 1 2 : 83 : 59 : 0.09
+T: 1 2 : 82 : 82 : 0.1
+T: 1 2 : 82 : 58 : 0.9
+T: 1 2 : 81 : 81 : 0.1
+T: 1 2 : 81 : 57 : 0.9
+T: 1 2 : 80 : 80 : 0.01
+T: 1 2 : 80 : 1 : 0.9
+T: 1 2 : 80 : 56 : 0.09
+T: 1 2 : 79 : 79 : 0.1
+T: 1 2 : 79 : 55 : 0.9
+T: 1 2 : 78 : 78 : 0.1
+T: 1 2 : 78 : 54 : 0.9
+T: 1 2 : 35 : 47 : 0.09
+T: 1 2 : 35 : 43 : 0.81
+T: 1 2 : 35 : 31 : 0.09
+T: 1 2 : 35 : 35 : 0.01
+T: 1 2 : 34 : 46 : 0.9
+T: 1 2 : 34 : 34 : 0.1
+T: 1 2 : 33 : 49 : 0.81
+T: 1 2 : 33 : 45 : 0.09
+T: 1 2 : 33 : 33 : 0.01
+T: 1 2 : 33 : 37 : 0.09
+T: 1 2 : 32 : 44 : 0.9
+T: 1 2 : 32 : 32 : 0.1
+T: 1 2 : 31 : 43 : 0.9
+T: 1 2 : 31 : 31 : 0.1
+T: 1 2 : 30 : 42 : 0.9
+T: 1 2 : 30 : 30 : 0.1
+T: 1 2 : 29 : 45 : 0.81
+T: 1 2 : 29 : 41 : 0.09
+T: 1 2 : 29 : 29 : 0.01
+T: 1 2 : 29 : 33 : 0.09
+T: 1 2 : 28 : 40 : 0.9
+T: 1 2 : 28 : 28 : 0.1
+T: 1 2 : 27 : 39 : 0.09
+T: 1 2 : 27 : 35 : 0.81
+T: 1 2 : 27 : 23 : 0.09
+T: 1 2 : 27 : 27 : 0.01
+T: 1 2 : 26 : 38 : 0.9
+T: 1 2 : 26 : 26 : 0.1
+T: 1 2 : 25 : 37 : 0.9
+T: 1 2 : 25 : 25 : 0.1
+T: 1 2 : 24 : 36 : 0.09
+T: 1 2 : 24 : 1 : 0.9
+T: 1 2 : 24 : 24 : 0.01
+T: 1 2 : 23 : 35 : 0.09
+T: 1 2 : 23 : 31 : 0.81
+T: 1 2 : 23 : 19 : 0.09
+T: 1 2 : 23 : 23 : 0.01
+T: 1 2 : 22 : 34 : 0.9
+T: 1 2 : 22 : 22 : 0.1
+T: 1 2 : 21 : 37 : 0.81
+T: 1 2 : 21 : 33 : 0.09
+T: 1 2 : 21 : 21 : 0.01
+T: 1 2 : 21 : 25 : 0.09
+T: 1 2 : 20 : 32 : 0.9
+T: 1 2 : 20 : 20 : 0.1
+T: 1 2 : 19 : 31 : 0.9
+T: 1 2 : 19 : 19 : 0.1
+T: 1 2 : 18 : 30 : 0.9
+T: 1 2 : 18 : 18 : 0.1
+T: 1 2 : 17 : 33 : 0.81
+T: 1 2 : 17 : 29 : 0.09
+T: 1 2 : 17 : 17 : 0.01
+T: 1 2 : 17 : 21 : 0.09
+T: 1 2 : 16 : 28 : 0.9
+T: 1 2 : 16 : 16 : 0.1
+T: 1 2 : 5 : 21 : 0.81
+T: 1 2 : 5 : 17 : 0.09
+T: 1 2 : 5 : 5 : 0.01
+T: 1 2 : 5 : 9 : 0.09
+T: 1 2 : 4 : 16 : 0.9
+T: 1 2 : 4 : 4 : 0.1
+T: 1 2 : 3 : 27 : 1
+T: 1 2 : 2 : 27 : 1
+T: 1 2 : 0 : 27 : 1
+T: 1 2 : 1 : 27 : 1
+T: 1 2 : 6 : 18 : 0.9
+T: 1 2 : 6 : 6 : 0.1
+T: 1 2 : 7 : 19 : 0.9
+T: 1 2 : 7 : 7 : 0.1
+T: 1 2 : 8 : 20 : 0.9
+T: 1 2 : 8 : 8 : 0.1
+T: 1 2 : 9 : 25 : 0.81
+T: 1 2 : 9 : 21 : 0.09
+T: 1 2 : 9 : 9 : 0.01
+T: 1 2 : 9 : 13 : 0.09
+T: 1 2 : 10 : 22 : 0.9
+T: 1 2 : 10 : 10 : 0.1
+T: 1 2 : 11 : 23 : 0.09
+T: 1 2 : 11 : 19 : 0.81
+T: 1 2 : 11 : 7 : 0.09
+T: 1 2 : 11 : 11 : 0.01
+T: 1 2 : 12 : 24 : 0.09
+T: 1 2 : 12 : 1 : 0.9
+T: 1 2 : 12 : 12 : 0.01
+T: 1 2 : 13 : 25 : 0.9
+T: 1 2 : 13 : 13 : 0.1
+T: 1 2 : 14 : 26 : 0.9
+T: 1 2 : 14 : 14 : 0.1
+T: 1 2 : 15 : 27 : 0.09
+T: 1 2 : 15 : 23 : 0.81
+T: 1 2 : 15 : 11 : 0.09
+T: 1 2 : 15 : 15 : 0.01
+T: 1 2 : 36 : 48 : 0.09
+T: 1 2 : 36 : 1 : 0.9
+T: 1 2 : 36 : 36 : 0.01
+T: 1 2 : 37 : 49 : 0.9
+T: 1 2 : 37 : 37 : 0.1
+T: 1 2 : 38 : 50 : 0.9
+T: 1 2 : 38 : 38 : 0.1
+T: 1 2 : 39 : 51 : 0.09
+T: 1 2 : 39 : 47 : 0.81
+T: 1 2 : 39 : 35 : 0.09
+T: 1 2 : 39 : 39 : 0.01
+T: 1 2 : 40 : 40 : 0.1
+T: 1 2 : 40 : 4 : 0.9
+T: 1 2 : 41 : 45 : 0.09
+T: 1 2 : 41 : 41 : 0.01
+T: 1 2 : 41 : 5 : 0.09
+T: 1 2 : 41 : 9 : 0.81
+T: 1 2 : 42 : 42 : 0.1
+T: 1 2 : 42 : 6 : 0.9
+T: 1 2 : 43 : 43 : 0.1
+T: 1 2 : 43 : 7 : 0.9
+T: 1 2 : 44 : 44 : 0.1
+T: 1 2 : 44 : 8 : 0.9
+T: 1 2 : 45 : 49 : 0.09
+T: 1 2 : 45 : 45 : 0.01
+T: 1 2 : 45 : 9 : 0.09
+T: 1 2 : 45 : 13 : 0.81
+T: 1 2 : 46 : 46 : 0.1
+T: 1 2 : 46 : 10 : 0.9
+T: 1 2 : 47 : 47 : 0.01
+T: 1 2 : 47 : 43 : 0.09
+T: 1 2 : 47 : 7 : 0.81
+T: 1 2 : 47 : 11 : 0.09
+T: 1 2 : 48 : 48 : 0.01
+T: 1 2 : 48 : 1 : 0.9
+T: 1 2 : 48 : 12 : 0.09
+T: 1 2 : 49 : 49 : 0.1
+T: 1 2 : 49 : 13 : 0.9
+T: 1 2 : 50 : 50 : 0.1
+T: 1 2 : 50 : 14 : 0.9
+T: 1 2 : 51 : 51 : 0.01
+T: 1 2 : 51 : 47 : 0.09
+T: 1 2 : 51 : 11 : 0.81
+T: 1 2 : 51 : 15 : 0.09
+T: 1 2 : 52 : 60 : 0.9
+T: 1 2 : 52 : 52 : 0.1
+T: 1 2 : 53 : 65 : 0.81
+T: 1 2 : 53 : 61 : 0.09
+T: 1 2 : 53 : 53 : 0.01
+T: 1 2 : 53 : 57 : 0.09
+T: 1 2 : 54 : 62 : 0.9
+T: 1 2 : 54 : 54 : 0.1
+T: 1 2 : 55 : 63 : 0.9
+T: 1 2 : 55 : 55 : 0.1
+T: 1 2 : 56 : 64 : 0.09
+T: 1 2 : 56 : 1 : 0.9
+T: 1 2 : 56 : 56 : 0.01
+T: 1 2 : 57 : 65 : 0.9
+T: 1 2 : 57 : 57 : 0.1
+T: 1 2 : 58 : 66 : 0.9
+T: 1 2 : 58 : 58 : 0.1
+T: 1 2 : 59 : 67 : 0.09
+T: 1 2 : 59 : 63 : 0.81
+T: 1 2 : 59 : 55 : 0.09
+T: 1 2 : 59 : 59 : 0.01
+T: 1 2 : 60 : 68 : 0.9
+T: 1 2 : 60 : 60 : 0.1
+T: 1 2 : 61 : 73 : 0.81
+T: 1 2 : 61 : 69 : 0.09
+T: 1 2 : 61 : 61 : 0.01
+T: 1 2 : 61 : 65 : 0.09
+T: 1 2 : 62 : 70 : 0.9
+T: 1 2 : 62 : 62 : 0.1
+T: 1 2 : 63 : 71 : 0.9
+T: 1 2 : 63 : 63 : 0.1
+T: 1 2 : 64 : 72 : 0.09
+T: 1 2 : 64 : 1 : 0.9
+T: 1 2 : 64 : 64 : 0.01
+T: 1 2 : 65 : 73 : 0.9
+T: 1 2 : 65 : 65 : 0.1
+T: 1 2 : 66 : 74 : 0.9
+T: 1 2 : 66 : 66 : 0.1
+T: 1 2 : 67 : 75 : 0.09
+T: 1 2 : 67 : 71 : 0.81
+T: 1 2 : 67 : 63 : 0.09
+T: 1 2 : 67 : 67 : 0.01
+T: 1 2 : 68 : 76 : 0.9
+T: 1 2 : 68 : 68 : 0.1
+T: 1 2 : 69 : 81 : 0.81
+T: 1 2 : 69 : 77 : 0.09
+T: 1 2 : 69 : 69 : 0.01
+T: 1 2 : 69 : 73 : 0.09
+T: 1 2 : 70 : 78 : 0.9
+T: 1 2 : 70 : 70 : 0.1
+T: 1 2 : 71 : 79 : 0.9
+T: 1 2 : 71 : 71 : 0.1
+T: 1 2 : 72 : 80 : 0.09
+T: 1 2 : 72 : 1 : 0.9
+T: 1 2 : 72 : 72 : 0.01
+T: 1 2 : 73 : 81 : 0.9
+T: 1 2 : 73 : 73 : 0.1
+T: 1 2 : 74 : 82 : 0.9
+T: 1 2 : 74 : 74 : 0.1
+T: 1 2 : 75 : 83 : 0.09
+T: 1 2 : 75 : 79 : 0.81
+T: 1 2 : 75 : 71 : 0.09
+T: 1 2 : 75 : 75 : 0.01
+T: 1 2 : 76 : 76 : 0.1
+T: 1 2 : 76 : 52 : 0.9
+T: 1 2 : 77 : 77 : 0.01
+T: 1 2 : 77 : 81 : 0.09
+T: 1 2 : 77 : 53 : 0.09
+T: 1 2 : 77 : 57 : 0.81
+T: 0 1 : 99 : 96 : 0.09
+T: 0 1 : 99 : 99 : 0.01
+T: 0 1 : 99 : 92 : 0.81
+T: 0 1 : 99 : 95 : 0.09
+T: 0 1 : 98 : 99 : 0.09
+T: 0 1 : 98 : 98 : 0.01
+T: 0 1 : 98 : 94 : 0.09
+T: 0 1 : 98 : 95 : 0.81
+T: 0 1 : 97 : 98 : 0.09
+T: 0 1 : 97 : 97 : 0.01
+T: 0 1 : 97 : 93 : 0.09
+T: 0 1 : 97 : 94 : 0.81
+T: 0 1 : 96 : 97 : 0.09
+T: 0 1 : 96 : 96 : 0.01
+T: 0 1 : 96 : 92 : 0.09
+T: 0 1 : 96 : 93 : 0.81
+T: 0 1 : 95 : 92 : 0.09
+T: 0 1 : 95 : 95 : 0.01
+T: 0 1 : 95 : 88 : 0.81
+T: 0 1 : 95 : 91 : 0.09
+T: 0 1 : 94 : 95 : 0.09
+T: 0 1 : 94 : 94 : 0.01
+T: 0 1 : 94 : 90 : 0.09
+T: 0 1 : 94 : 91 : 0.81
+T: 0 1 : 93 : 94 : 0.09
+T: 0 1 : 93 : 93 : 0.01
+T: 0 1 : 93 : 89 : 0.09
+T: 0 1 : 93 : 90 : 0.81
+T: 0 1 : 92 : 93 : 0.09
+T: 0 1 : 92 : 92 : 0.01
+T: 0 1 : 92 : 88 : 0.09
+T: 0 1 : 92 : 89 : 0.81
+T: 0 1 : 91 : 88 : 0.09
+T: 0 1 : 91 : 91 : 0.01
+T: 0 1 : 91 : 84 : 0.81
+T: 0 1 : 91 : 87 : 0.09
+T: 0 1 : 90 : 91 : 0.09
+T: 0 1 : 90 : 90 : 0.01
+T: 0 1 : 90 : 86 : 0.09
+T: 0 1 : 90 : 87 : 0.81
+T: 0 1 : 89 : 90 : 0.09
+T: 0 1 : 89 : 89 : 0.01
+T: 0 1 : 89 : 85 : 0.09
+T: 0 1 : 89 : 86 : 0.81
+T: 0 1 : 88 : 89 : 0.09
+T: 0 1 : 88 : 88 : 0.01
+T: 0 1 : 88 : 84 : 0.09
+T: 0 1 : 88 : 85 : 0.81
+T: 0 1 : 87 : 99 : 0.09
+T: 0 1 : 87 : 96 : 0.81
+T: 0 1 : 87 : 84 : 0.09
+T: 0 1 : 87 : 87 : 0.01
+T: 0 1 : 86 : 99 : 0.81
+T: 0 1 : 86 : 98 : 0.09
+T: 0 1 : 86 : 86 : 0.01
+T: 0 1 : 86 : 87 : 0.09
+T: 0 1 : 85 : 98 : 0.81
+T: 0 1 : 85 : 97 : 0.09
+T: 0 1 : 85 : 85 : 0.01
+T: 0 1 : 85 : 86 : 0.09
+T: 0 1 : 84 : 97 : 0.81
+T: 0 1 : 84 : 96 : 0.09
+T: 0 1 : 84 : 84 : 0.01
+T: 0 1 : 84 : 85 : 0.09
+T: 0 1 : 83 : 83 : 0.01
+T: 0 1 : 83 : 80 : 0.09
+T: 0 1 : 83 : 72 : 0.81
+T: 0 1 : 83 : 75 : 0.09
+T: 0 1 : 82 : 83 : 0.09
+T: 0 1 : 82 : 74 : 0.09
+T: 0 1 : 82 : 82 : 0.01
+T: 0 1 : 82 : 75 : 0.81
+T: 0 1 : 81 : 82 : 0.09
+T: 0 1 : 81 : 73 : 0.09
+T: 0 1 : 81 : 81 : 0.01
+T: 0 1 : 81 : 74 : 0.81
+T: 0 1 : 80 : 81 : 0.09
+T: 0 1 : 80 : 72 : 0.09
+T: 0 1 : 80 : 80 : 0.01
+T: 0 1 : 80 : 73 : 0.81
+T: 0 1 : 79 : 79 : 0.01
+T: 0 1 : 79 : 76 : 0.09
+T: 0 1 : 79 : 68 : 0.81
+T: 0 1 : 79 : 71 : 0.09
+T: 0 1 : 78 : 79 : 0.09
+T: 0 1 : 78 : 70 : 0.09
+T: 0 1 : 78 : 78 : 0.01
+T: 0 1 : 78 : 71 : 0.81
+T: 0 1 : 35 : 35 : 0.01
+T: 0 1 : 35 : 32 : 0.09
+T: 0 1 : 35 : 20 : 0.81
+T: 0 1 : 35 : 23 : 0.09
+T: 0 1 : 34 : 35 : 0.09
+T: 0 1 : 34 : 34 : 0.01
+T: 0 1 : 34 : 22 : 0.09
+T: 0 1 : 34 : 23 : 0.81
+T: 0 1 : 33 : 34 : 0.09
+T: 0 1 : 33 : 33 : 0.01
+T: 0 1 : 33 : 21 : 0.09
+T: 0 1 : 33 : 22 : 0.81
+T: 0 1 : 32 : 33 : 0.09
+T: 0 1 : 32 : 32 : 0.01
+T: 0 1 : 32 : 20 : 0.09
+T: 0 1 : 32 : 21 : 0.81
+T: 0 1 : 31 : 31 : 0.01
+T: 0 1 : 31 : 28 : 0.09
+T: 0 1 : 31 : 16 : 0.81
+T: 0 1 : 31 : 19 : 0.09
+T: 0 1 : 30 : 31 : 0.09
+T: 0 1 : 30 : 30 : 0.01
+T: 0 1 : 30 : 18 : 0.09
+T: 0 1 : 30 : 19 : 0.81
+T: 0 1 : 29 : 30 : 0.09
+T: 0 1 : 29 : 29 : 0.01
+T: 0 1 : 29 : 17 : 0.09
+T: 0 1 : 29 : 18 : 0.81
+T: 0 1 : 28 : 29 : 0.09
+T: 0 1 : 28 : 28 : 0.01
+T: 0 1 : 28 : 16 : 0.09
+T: 0 1 : 28 : 17 : 0.81
+T: 0 1 : 27 : 27 : 0.01
+T: 0 1 : 27 : 24 : 0.09
+T: 0 1 : 27 : 12 : 0.81
+T: 0 1 : 27 : 15 : 0.09
+T: 0 1 : 26 : 27 : 0.09
+T: 0 1 : 26 : 26 : 0.01
+T: 0 1 : 26 : 14 : 0.09
+T: 0 1 : 26 : 15 : 0.81
+T: 0 1 : 25 : 26 : 0.09
+T: 0 1 : 25 : 25 : 0.01
+T: 0 1 : 25 : 13 : 0.09
+T: 0 1 : 25 : 14 : 0.81
+T: 0 1 : 24 : 25 : 0.09
+T: 0 1 : 24 : 24 : 0.01
+T: 0 1 : 24 : 12 : 0.09
+T: 0 1 : 24 : 13 : 0.81
+T: 0 1 : 23 : 23 : 0.01
+T: 0 1 : 23 : 20 : 0.09
+T: 0 1 : 23 : 8 : 0.81
+T: 0 1 : 23 : 11 : 0.09
+T: 0 1 : 22 : 23 : 0.09
+T: 0 1 : 22 : 22 : 0.01
+T: 0 1 : 22 : 10 : 0.09
+T: 0 1 : 22 : 11 : 0.81
+T: 0 1 : 21 : 22 : 0.09
+T: 0 1 : 21 : 21 : 0.01
+T: 0 1 : 21 : 9 : 0.09
+T: 0 1 : 21 : 10 : 0.81
+T: 0 1 : 20 : 21 : 0.09
+T: 0 1 : 20 : 20 : 0.01
+T: 0 1 : 20 : 8 : 0.09
+T: 0 1 : 20 : 9 : 0.81
+T: 0 1 : 19 : 19 : 0.01
+T: 0 1 : 19 : 16 : 0.09
+T: 0 1 : 19 : 4 : 0.81
+T: 0 1 : 19 : 7 : 0.09
+T: 0 1 : 18 : 19 : 0.09
+T: 0 1 : 18 : 18 : 0.01
+T: 0 1 : 18 : 6 : 0.09
+T: 0 1 : 18 : 7 : 0.81
+T: 0 1 : 17 : 18 : 0.09
+T: 0 1 : 17 : 17 : 0.01
+T: 0 1 : 17 : 5 : 0.09
+T: 0 1 : 17 : 6 : 0.81
+T: 0 1 : 16 : 17 : 0.09
+T: 0 1 : 16 : 16 : 0.01
+T: 0 1 : 16 : 4 : 0.09
+T: 0 1 : 16 : 5 : 0.81
+T: 0 1 : 5 : 42 : 0.81
+T: 0 1 : 5 : 5 : 0.01
+T: 0 1 : 5 : 41 : 0.09
+T: 0 1 : 5 : 6 : 0.09
+T: 0 1 : 4 : 41 : 0.81
+T: 0 1 : 4 : 4 : 0.01
+T: 0 1 : 4 : 40 : 0.09
+T: 0 1 : 4 : 5 : 0.09
+T: 0 1 : 3 : 27 : 1
+T: 0 1 : 2 : 27 : 1
+T: 0 1 : 0 : 27 : 1
+T: 0 1 : 1 : 27 : 1
+T: 0 1 : 6 : 43 : 0.81
+T: 0 1 : 6 : 6 : 0.01
+T: 0 1 : 6 : 42 : 0.09
+T: 0 1 : 6 : 7 : 0.09
+T: 0 1 : 7 : 43 : 0.09
+T: 0 1 : 7 : 40 : 0.81
+T: 0 1 : 7 : 4 : 0.09
+T: 0 1 : 7 : 7 : 0.01
+T: 0 1 : 8 : 45 : 0.81
+T: 0 1 : 8 : 8 : 0.01
+T: 0 1 : 8 : 44 : 0.09
+T: 0 1 : 8 : 9 : 0.09
+T: 0 1 : 9 : 46 : 0.81
+T: 0 1 : 9 : 9 : 0.01
+T: 0 1 : 9 : 45 : 0.09
+T: 0 1 : 9 : 10 : 0.09
+T: 0 1 : 10 : 47 : 0.81
+T: 0 1 : 10 : 10 : 0.01
+T: 0 1 : 10 : 46 : 0.09
+T: 0 1 : 10 : 11 : 0.09
+T: 0 1 : 11 : 47 : 0.09
+T: 0 1 : 11 : 44 : 0.81
+T: 0 1 : 11 : 8 : 0.09
+T: 0 1 : 11 : 11 : 0.01
+T: 0 1 : 12 : 49 : 0.81
+T: 0 1 : 12 : 12 : 0.01
+T: 0 1 : 12 : 48 : 0.09
+T: 0 1 : 12 : 13 : 0.09
+T: 0 1 : 13 : 50 : 0.81
+T: 0 1 : 13 : 13 : 0.01
+T: 0 1 : 13 : 49 : 0.09
+T: 0 1 : 13 : 14 : 0.09
+T: 0 1 : 14 : 51 : 0.81
+T: 0 1 : 14 : 14 : 0.01
+T: 0 1 : 14 : 50 : 0.09
+T: 0 1 : 14 : 15 : 0.09
+T: 0 1 : 15 : 51 : 0.09
+T: 0 1 : 15 : 48 : 0.81
+T: 0 1 : 15 : 12 : 0.09
+T: 0 1 : 15 : 15 : 0.01
+T: 0 1 : 36 : 37 : 0.09
+T: 0 1 : 36 : 36 : 0.01
+T: 0 1 : 36 : 24 : 0.09
+T: 0 1 : 36 : 25 : 0.81
+T: 0 1 : 37 : 38 : 0.09
+T: 0 1 : 37 : 37 : 0.01
+T: 0 1 : 37 : 25 : 0.09
+T: 0 1 : 37 : 26 : 0.81
+T: 0 1 : 38 : 39 : 0.09
+T: 0 1 : 38 : 38 : 0.01
+T: 0 1 : 38 : 26 : 0.09
+T: 0 1 : 38 : 27 : 0.81
+T: 0 1 : 39 : 39 : 0.01
+T: 0 1 : 39 : 36 : 0.09
+T: 0 1 : 39 : 24 : 0.81
+T: 0 1 : 39 : 27 : 0.09
+T: 0 1 : 40 : 41 : 0.09
+T: 0 1 : 40 : 40 : 0.01
+T: 0 1 : 40 : 28 : 0.09
+T: 0 1 : 40 : 29 : 0.81
+T: 0 1 : 41 : 42 : 0.09
+T: 0 1 : 41 : 41 : 0.01
+T: 0 1 : 41 : 29 : 0.09
+T: 0 1 : 41 : 30 : 0.81
+T: 0 1 : 42 : 43 : 0.09
+T: 0 1 : 42 : 42 : 0.01
+T: 0 1 : 42 : 30 : 0.09
+T: 0 1 : 42 : 31 : 0.81
+T: 0 1 : 43 : 43 : 0.01
+T: 0 1 : 43 : 40 : 0.09
+T: 0 1 : 43 : 28 : 0.81
+T: 0 1 : 43 : 31 : 0.09
+T: 0 1 : 44 : 45 : 0.09
+T: 0 1 : 44 : 44 : 0.01
+T: 0 1 : 44 : 32 : 0.09
+T: 0 1 : 44 : 33 : 0.81
+T: 0 1 : 45 : 46 : 0.09
+T: 0 1 : 45 : 45 : 0.01
+T: 0 1 : 45 : 33 : 0.09
+T: 0 1 : 45 : 34 : 0.81
+T: 0 1 : 46 : 47 : 0.09
+T: 0 1 : 46 : 46 : 0.01
+T: 0 1 : 46 : 34 : 0.09
+T: 0 1 : 46 : 35 : 0.81
+T: 0 1 : 47 : 47 : 0.01
+T: 0 1 : 47 : 44 : 0.09
+T: 0 1 : 47 : 32 : 0.81
+T: 0 1 : 47 : 35 : 0.09
+T: 0 1 : 48 : 49 : 0.09
+T: 0 1 : 48 : 48 : 0.01
+T: 0 1 : 48 : 36 : 0.09
+T: 0 1 : 48 : 37 : 0.81
+T: 0 1 : 49 : 50 : 0.09
+T: 0 1 : 49 : 49 : 0.01
+T: 0 1 : 49 : 37 : 0.09
+T: 0 1 : 49 : 38 : 0.81
+T: 0 1 : 50 : 51 : 0.09
+T: 0 1 : 50 : 50 : 0.01
+T: 0 1 : 50 : 38 : 0.09
+T: 0 1 : 50 : 39 : 0.81
+T: 0 1 : 51 : 51 : 0.01
+T: 0 1 : 51 : 48 : 0.09
+T: 0 1 : 51 : 36 : 0.81
+T: 0 1 : 51 : 39 : 0.09
+T: 0 1 : 52 : 77 : 0.81
+T: 0 1 : 52 : 76 : 0.09
+T: 0 1 : 52 : 52 : 0.01
+T: 0 1 : 52 : 53 : 0.09
+T: 0 1 : 53 : 78 : 0.81
+T: 0 1 : 53 : 77 : 0.09
+T: 0 1 : 53 : 53 : 0.01
+T: 0 1 : 53 : 54 : 0.09
+T: 0 1 : 54 : 79 : 0.81
+T: 0 1 : 54 : 78 : 0.09
+T: 0 1 : 54 : 54 : 0.01
+T: 0 1 : 54 : 55 : 0.09
+T: 0 1 : 55 : 79 : 0.09
+T: 0 1 : 55 : 52 : 0.09
+T: 0 1 : 55 : 76 : 0.81
+T: 0 1 : 55 : 55 : 0.01
+T: 0 1 : 56 : 81 : 0.81
+T: 0 1 : 56 : 80 : 0.09
+T: 0 1 : 56 : 56 : 0.01
+T: 0 1 : 56 : 57 : 0.09
+T: 0 1 : 57 : 82 : 0.81
+T: 0 1 : 57 : 81 : 0.09
+T: 0 1 : 57 : 57 : 0.01
+T: 0 1 : 57 : 58 : 0.09
+T: 0 1 : 58 : 83 : 0.81
+T: 0 1 : 58 : 82 : 0.09
+T: 0 1 : 58 : 58 : 0.01
+T: 0 1 : 58 : 59 : 0.09
+T: 0 1 : 59 : 83 : 0.09
+T: 0 1 : 59 : 56 : 0.09
+T: 0 1 : 59 : 80 : 0.81
+T: 0 1 : 59 : 59 : 0.01
+T: 0 1 : 60 : 61 : 0.09
+T: 0 1 : 60 : 52 : 0.09
+T: 0 1 : 60 : 60 : 0.01
+T: 0 1 : 60 : 53 : 0.81
+T: 0 1 : 61 : 62 : 0.09
+T: 0 1 : 61 : 53 : 0.09
+T: 0 1 : 61 : 61 : 0.01
+T: 0 1 : 61 : 54 : 0.81
+T: 0 1 : 62 : 63 : 0.09
+T: 0 1 : 62 : 54 : 0.09
+T: 0 1 : 62 : 62 : 0.01
+T: 0 1 : 62 : 55 : 0.81
+T: 0 1 : 63 : 63 : 0.01
+T: 0 1 : 63 : 60 : 0.09
+T: 0 1 : 63 : 52 : 0.81
+T: 0 1 : 63 : 55 : 0.09
+T: 0 1 : 64 : 65 : 0.09
+T: 0 1 : 64 : 56 : 0.09
+T: 0 1 : 64 : 64 : 0.01
+T: 0 1 : 64 : 57 : 0.81
+T: 0 1 : 65 : 66 : 0.09
+T: 0 1 : 65 : 57 : 0.09
+T: 0 1 : 65 : 65 : 0.01
+T: 0 1 : 65 : 58 : 0.81
+T: 0 1 : 66 : 67 : 0.09
+T: 0 1 : 66 : 58 : 0.09
+T: 0 1 : 66 : 66 : 0.01
+T: 0 1 : 66 : 59 : 0.81
+T: 0 1 : 67 : 67 : 0.01
+T: 0 1 : 67 : 64 : 0.09
+T: 0 1 : 67 : 56 : 0.81
+T: 0 1 : 67 : 59 : 0.09
+T: 0 1 : 68 : 69 : 0.09
+T: 0 1 : 68 : 60 : 0.09
+T: 0 1 : 68 : 68 : 0.01
+T: 0 1 : 68 : 61 : 0.81
+T: 0 1 : 69 : 70 : 0.09
+T: 0 1 : 69 : 61 : 0.09
+T: 0 1 : 69 : 69 : 0.01
+T: 0 1 : 69 : 62 : 0.81
+T: 0 1 : 70 : 71 : 0.09
+T: 0 1 : 70 : 62 : 0.09
+T: 0 1 : 70 : 70 : 0.01
+T: 0 1 : 70 : 63 : 0.81
+T: 0 1 : 71 : 71 : 0.01
+T: 0 1 : 71 : 68 : 0.09
+T: 0 1 : 71 : 60 : 0.81
+T: 0 1 : 71 : 63 : 0.09
+T: 0 1 : 72 : 73 : 0.09
+T: 0 1 : 72 : 64 : 0.09
+T: 0 1 : 72 : 72 : 0.01
+T: 0 1 : 72 : 65 : 0.81
+T: 0 1 : 73 : 74 : 0.09
+T: 0 1 : 73 : 65 : 0.09
+T: 0 1 : 73 : 73 : 0.01
+T: 0 1 : 73 : 66 : 0.81
+T: 0 1 : 74 : 75 : 0.09
+T: 0 1 : 74 : 66 : 0.09
+T: 0 1 : 74 : 74 : 0.01
+T: 0 1 : 74 : 67 : 0.81
+T: 0 1 : 75 : 75 : 0.01
+T: 0 1 : 75 : 72 : 0.09
+T: 0 1 : 75 : 64 : 0.81
+T: 0 1 : 75 : 67 : 0.09
+T: 0 1 : 76 : 77 : 0.09
+T: 0 1 : 76 : 68 : 0.09
+T: 0 1 : 76 : 76 : 0.01
+T: 0 1 : 76 : 69 : 0.81
+T: 0 1 : 77 : 78 : 0.09
+T: 0 1 : 77 : 69 : 0.09
+T: 0 1 : 77 : 77 : 0.01
+T: 0 1 : 77 : 70 : 0.81
+T: 0 0 : 99 : 99 : 0.01
+T: 0 0 : 99 : 98 : 0.09
+T: 0 0 : 99 : 94 : 0.81
+T: 0 0 : 99 : 95 : 0.09
+T: 0 0 : 98 : 98 : 0.01
+T: 0 0 : 98 : 97 : 0.09
+T: 0 0 : 98 : 93 : 0.81
+T: 0 0 : 98 : 94 : 0.09
+T: 0 0 : 97 : 97 : 0.01
+T: 0 0 : 97 : 96 : 0.09
+T: 0 0 : 97 : 92 : 0.81
+T: 0 0 : 97 : 93 : 0.09
+T: 0 0 : 96 : 96 : 0.01
+T: 0 0 : 96 : 99 : 0.09
+T: 0 0 : 96 : 92 : 0.09
+T: 0 0 : 96 : 95 : 0.81
+T: 0 0 : 95 : 95 : 0.01
+T: 0 0 : 95 : 94 : 0.09
+T: 0 0 : 95 : 90 : 0.81
+T: 0 0 : 95 : 91 : 0.09
+T: 0 0 : 94 : 94 : 0.01
+T: 0 0 : 94 : 93 : 0.09
+T: 0 0 : 94 : 89 : 0.81
+T: 0 0 : 94 : 90 : 0.09
+T: 0 0 : 93 : 93 : 0.01
+T: 0 0 : 93 : 92 : 0.09
+T: 0 0 : 93 : 88 : 0.81
+T: 0 0 : 93 : 89 : 0.09
+T: 0 0 : 92 : 92 : 0.01
+T: 0 0 : 92 : 95 : 0.09
+T: 0 0 : 92 : 88 : 0.09
+T: 0 0 : 92 : 91 : 0.81
+T: 0 0 : 91 : 91 : 0.01
+T: 0 0 : 91 : 90 : 0.09
+T: 0 0 : 91 : 86 : 0.81
+T: 0 0 : 91 : 87 : 0.09
+T: 0 0 : 90 : 90 : 0.01
+T: 0 0 : 90 : 89 : 0.09
+T: 0 0 : 90 : 85 : 0.81
+T: 0 0 : 90 : 86 : 0.09
+T: 0 0 : 89 : 89 : 0.01
+T: 0 0 : 89 : 88 : 0.09
+T: 0 0 : 89 : 84 : 0.81
+T: 0 0 : 89 : 85 : 0.09
+T: 0 0 : 88 : 88 : 0.01
+T: 0 0 : 88 : 91 : 0.09
+T: 0 0 : 88 : 84 : 0.09
+T: 0 0 : 88 : 87 : 0.81
+T: 0 0 : 87 : 99 : 0.09
+T: 0 0 : 87 : 98 : 0.81
+T: 0 0 : 87 : 86 : 0.09
+T: 0 0 : 87 : 87 : 0.01
+T: 0 0 : 86 : 98 : 0.09
+T: 0 0 : 86 : 97 : 0.81
+T: 0 0 : 86 : 85 : 0.09
+T: 0 0 : 86 : 86 : 0.01
+T: 0 0 : 85 : 97 : 0.09
+T: 0 0 : 85 : 96 : 0.81
+T: 0 0 : 85 : 84 : 0.09
+T: 0 0 : 85 : 85 : 0.01
+T: 0 0 : 84 : 99 : 0.81
+T: 0 0 : 84 : 96 : 0.09
+T: 0 0 : 84 : 84 : 0.01
+T: 0 0 : 84 : 87 : 0.09
+T: 0 0 : 83 : 83 : 0.01
+T: 0 0 : 83 : 74 : 0.81
+T: 0 0 : 83 : 82 : 0.09
+T: 0 0 : 83 : 75 : 0.09
+T: 0 0 : 82 : 82 : 0.01
+T: 0 0 : 82 : 73 : 0.81
+T: 0 0 : 82 : 81 : 0.09
+T: 0 0 : 82 : 74 : 0.09
+T: 0 0 : 81 : 81 : 0.01
+T: 0 0 : 81 : 72 : 0.81
+T: 0 0 : 81 : 80 : 0.09
+T: 0 0 : 81 : 73 : 0.09
+T: 0 0 : 80 : 83 : 0.09
+T: 0 0 : 80 : 80 : 0.01
+T: 0 0 : 80 : 72 : 0.09
+T: 0 0 : 80 : 75 : 0.81
+T: 0 0 : 79 : 79 : 0.01
+T: 0 0 : 79 : 70 : 0.81
+T: 0 0 : 79 : 78 : 0.09
+T: 0 0 : 79 : 71 : 0.09
+T: 0 0 : 78 : 78 : 0.01
+T: 0 0 : 78 : 69 : 0.81
+T: 0 0 : 78 : 77 : 0.09
+T: 0 0 : 78 : 70 : 0.09
+T: 0 0 : 35 : 35 : 0.01
+T: 0 0 : 35 : 34 : 0.09
+T: 0 0 : 35 : 22 : 0.81
+T: 0 0 : 35 : 23 : 0.09
+T: 0 0 : 34 : 34 : 0.01
+T: 0 0 : 34 : 33 : 0.09
+T: 0 0 : 34 : 21 : 0.81
+T: 0 0 : 34 : 22 : 0.09
+T: 0 0 : 33 : 33 : 0.01
+T: 0 0 : 33 : 32 : 0.09
+T: 0 0 : 33 : 20 : 0.81
+T: 0 0 : 33 : 21 : 0.09
+T: 0 0 : 32 : 35 : 0.09
+T: 0 0 : 32 : 32 : 0.01
+T: 0 0 : 32 : 20 : 0.09
+T: 0 0 : 32 : 23 : 0.81
+T: 0 0 : 31 : 31 : 0.01
+T: 0 0 : 31 : 30 : 0.09
+T: 0 0 : 31 : 18 : 0.81
+T: 0 0 : 31 : 19 : 0.09
+T: 0 0 : 30 : 30 : 0.01
+T: 0 0 : 30 : 29 : 0.09
+T: 0 0 : 30 : 17 : 0.81
+T: 0 0 : 30 : 18 : 0.09
+T: 0 0 : 29 : 29 : 0.01
+T: 0 0 : 29 : 28 : 0.09
+T: 0 0 : 29 : 16 : 0.81
+T: 0 0 : 29 : 17 : 0.09
+T: 0 0 : 28 : 31 : 0.09
+T: 0 0 : 28 : 28 : 0.01
+T: 0 0 : 28 : 16 : 0.09
+T: 0 0 : 28 : 19 : 0.81
+T: 0 0 : 27 : 27 : 0.01
+T: 0 0 : 27 : 26 : 0.09
+T: 0 0 : 27 : 14 : 0.81
+T: 0 0 : 27 : 15 : 0.09
+T: 0 0 : 26 : 26 : 0.01
+T: 0 0 : 26 : 25 : 0.09
+T: 0 0 : 26 : 13 : 0.81
+T: 0 0 : 26 : 14 : 0.09
+T: 0 0 : 25 : 25 : 0.01
+T: 0 0 : 25 : 24 : 0.09
+T: 0 0 : 25 : 12 : 0.81
+T: 0 0 : 25 : 13 : 0.09
+T: 0 0 : 24 : 27 : 0.09
+T: 0 0 : 24 : 24 : 0.01
+T: 0 0 : 24 : 12 : 0.09
+T: 0 0 : 24 : 15 : 0.81
+T: 0 0 : 23 : 23 : 0.01
+T: 0 0 : 23 : 22 : 0.09
+T: 0 0 : 23 : 10 : 0.81
+T: 0 0 : 23 : 11 : 0.09
+T: 0 0 : 22 : 22 : 0.01
+T: 0 0 : 22 : 21 : 0.09
+T: 0 0 : 22 : 9 : 0.81
+T: 0 0 : 22 : 10 : 0.09
+T: 0 0 : 21 : 21 : 0.01
+T: 0 0 : 21 : 20 : 0.09
+T: 0 0 : 21 : 8 : 0.81
+T: 0 0 : 21 : 9 : 0.09
+T: 0 0 : 20 : 23 : 0.09
+T: 0 0 : 20 : 20 : 0.01
+T: 0 0 : 20 : 8 : 0.09
+T: 0 0 : 20 : 11 : 0.81
+T: 0 0 : 19 : 19 : 0.01
+T: 0 0 : 19 : 18 : 0.09
+T: 0 0 : 19 : 6 : 0.81
+T: 0 0 : 19 : 7 : 0.09
+T: 0 0 : 18 : 18 : 0.01
+T: 0 0 : 18 : 17 : 0.09
+T: 0 0 : 18 : 5 : 0.81
+T: 0 0 : 18 : 6 : 0.09
+T: 0 0 : 17 : 17 : 0.01
+T: 0 0 : 17 : 16 : 0.09
+T: 0 0 : 17 : 4 : 0.81
+T: 0 0 : 17 : 5 : 0.09
+T: 0 0 : 16 : 19 : 0.09
+T: 0 0 : 16 : 16 : 0.01
+T: 0 0 : 16 : 4 : 0.09
+T: 0 0 : 16 : 7 : 0.81
+T: 0 0 : 5 : 41 : 0.09
+T: 0 0 : 5 : 4 : 0.09
+T: 0 0 : 5 : 40 : 0.81
+T: 0 0 : 5 : 5 : 0.01
+T: 0 0 : 4 : 43 : 0.81
+T: 0 0 : 4 : 40 : 0.09
+T: 0 0 : 4 : 4 : 0.01
+T: 0 0 : 4 : 7 : 0.09
+T: 0 0 : 3 : 27 : 1
+T: 0 0 : 2 : 27 : 1
+T: 0 0 : 0 : 27 : 1
+T: 0 0 : 1 : 27 : 1
+T: 0 0 : 6 : 42 : 0.09
+T: 0 0 : 6 : 5 : 0.09
+T: 0 0 : 6 : 41 : 0.81
+T: 0 0 : 6 : 6 : 0.01
+T: 0 0 : 7 : 43 : 0.09
+T: 0 0 : 7 : 6 : 0.09
+T: 0 0 : 7 : 42 : 0.81
+T: 0 0 : 7 : 7 : 0.01
+T: 0 0 : 8 : 47 : 0.81
+T: 0 0 : 8 : 44 : 0.09
+T: 0 0 : 8 : 8 : 0.01
+T: 0 0 : 8 : 11 : 0.09
+T: 0 0 : 9 : 45 : 0.09
+T: 0 0 : 9 : 8 : 0.09
+T: 0 0 : 9 : 44 : 0.81
+T: 0 0 : 9 : 9 : 0.01
+T: 0 0 : 10 : 46 : 0.09
+T: 0 0 : 10 : 9 : 0.09
+T: 0 0 : 10 : 45 : 0.81
+T: 0 0 : 10 : 10 : 0.01
+T: 0 0 : 11 : 47 : 0.09
+T: 0 0 : 11 : 10 : 0.09
+T: 0 0 : 11 : 46 : 0.81
+T: 0 0 : 11 : 11 : 0.01
+T: 0 0 : 12 : 51 : 0.81
+T: 0 0 : 12 : 48 : 0.09
+T: 0 0 : 12 : 12 : 0.01
+T: 0 0 : 12 : 15 : 0.09
+T: 0 0 : 13 : 49 : 0.09
+T: 0 0 : 13 : 12 : 0.09
+T: 0 0 : 13 : 48 : 0.81
+T: 0 0 : 13 : 13 : 0.01
+T: 0 0 : 14 : 50 : 0.09
+T: 0 0 : 14 : 13 : 0.09
+T: 0 0 : 14 : 49 : 0.81
+T: 0 0 : 14 : 14 : 0.01
+T: 0 0 : 15 : 51 : 0.09
+T: 0 0 : 15 : 14 : 0.09
+T: 0 0 : 15 : 50 : 0.81
+T: 0 0 : 15 : 15 : 0.01
+T: 0 0 : 36 : 39 : 0.09
+T: 0 0 : 36 : 36 : 0.01
+T: 0 0 : 36 : 24 : 0.09
+T: 0 0 : 36 : 27 : 0.81
+T: 0 0 : 37 : 37 : 0.01
+T: 0 0 : 37 : 36 : 0.09
+T: 0 0 : 37 : 24 : 0.81
+T: 0 0 : 37 : 25 : 0.09
+T: 0 0 : 38 : 38 : 0.01
+T: 0 0 : 38 : 37 : 0.09
+T: 0 0 : 38 : 25 : 0.81
+T: 0 0 : 38 : 26 : 0.09
+T: 0 0 : 39 : 39 : 0.01
+T: 0 0 : 39 : 38 : 0.09
+T: 0 0 : 39 : 26 : 0.81
+T: 0 0 : 39 : 27 : 0.09
+T: 0 0 : 40 : 43 : 0.09
+T: 0 0 : 40 : 40 : 0.01
+T: 0 0 : 40 : 28 : 0.09
+T: 0 0 : 40 : 31 : 0.81
+T: 0 0 : 41 : 41 : 0.01
+T: 0 0 : 41 : 40 : 0.09
+T: 0 0 : 41 : 28 : 0.81
+T: 0 0 : 41 : 29 : 0.09
+T: 0 0 : 42 : 42 : 0.01
+T: 0 0 : 42 : 41 : 0.09
+T: 0 0 : 42 : 29 : 0.81
+T: 0 0 : 42 : 30 : 0.09
+T: 0 0 : 43 : 43 : 0.01
+T: 0 0 : 43 : 42 : 0.09
+T: 0 0 : 43 : 30 : 0.81
+T: 0 0 : 43 : 31 : 0.09
+T: 0 0 : 44 : 47 : 0.09
+T: 0 0 : 44 : 44 : 0.01
+T: 0 0 : 44 : 32 : 0.09
+T: 0 0 : 44 : 35 : 0.81
+T: 0 0 : 45 : 45 : 0.01
+T: 0 0 : 45 : 44 : 0.09
+T: 0 0 : 45 : 32 : 0.81
+T: 0 0 : 45 : 33 : 0.09
+T: 0 0 : 46 : 46 : 0.01
+T: 0 0 : 46 : 45 : 0.09
+T: 0 0 : 46 : 33 : 0.81
+T: 0 0 : 46 : 34 : 0.09
+T: 0 0 : 47 : 47 : 0.01
+T: 0 0 : 47 : 46 : 0.09
+T: 0 0 : 47 : 34 : 0.81
+T: 0 0 : 47 : 35 : 0.09
+T: 0 0 : 48 : 51 : 0.09
+T: 0 0 : 48 : 48 : 0.01
+T: 0 0 : 48 : 36 : 0.09
+T: 0 0 : 48 : 39 : 0.81
+T: 0 0 : 49 : 49 : 0.01
+T: 0 0 : 49 : 48 : 0.09
+T: 0 0 : 49 : 36 : 0.81
+T: 0 0 : 49 : 37 : 0.09
+T: 0 0 : 50 : 50 : 0.01
+T: 0 0 : 50 : 49 : 0.09
+T: 0 0 : 50 : 37 : 0.81
+T: 0 0 : 50 : 38 : 0.09
+T: 0 0 : 51 : 51 : 0.01
+T: 0 0 : 51 : 50 : 0.09
+T: 0 0 : 51 : 38 : 0.81
+T: 0 0 : 51 : 39 : 0.09
+T: 0 0 : 52 : 79 : 0.81
+T: 0 0 : 52 : 52 : 0.01
+T: 0 0 : 52 : 76 : 0.09
+T: 0 0 : 52 : 55 : 0.09
+T: 0 0 : 53 : 77 : 0.09
+T: 0 0 : 53 : 76 : 0.81
+T: 0 0 : 53 : 52 : 0.09
+T: 0 0 : 53 : 53 : 0.01
+T: 0 0 : 54 : 78 : 0.09
+T: 0 0 : 54 : 77 : 0.81
+T: 0 0 : 54 : 53 : 0.09
+T: 0 0 : 54 : 54 : 0.01
+T: 0 0 : 55 : 79 : 0.09
+T: 0 0 : 55 : 78 : 0.81
+T: 0 0 : 55 : 54 : 0.09
+T: 0 0 : 55 : 55 : 0.01
+T: 0 0 : 56 : 83 : 0.81
+T: 0 0 : 56 : 56 : 0.01
+T: 0 0 : 56 : 80 : 0.09
+T: 0 0 : 56 : 59 : 0.09
+T: 0 0 : 57 : 81 : 0.09
+T: 0 0 : 57 : 80 : 0.81
+T: 0 0 : 57 : 56 : 0.09
+T: 0 0 : 57 : 57 : 0.01
+T: 0 0 : 58 : 82 : 0.09
+T: 0 0 : 58 : 81 : 0.81
+T: 0 0 : 58 : 57 : 0.09
+T: 0 0 : 58 : 58 : 0.01
+T: 0 0 : 59 : 83 : 0.09
+T: 0 0 : 59 : 82 : 0.81
+T: 0 0 : 59 : 58 : 0.09
+T: 0 0 : 59 : 59 : 0.01
+T: 0 0 : 60 : 63 : 0.09
+T: 0 0 : 60 : 60 : 0.01
+T: 0 0 : 60 : 52 : 0.09
+T: 0 0 : 60 : 55 : 0.81
+T: 0 0 : 61 : 61 : 0.01
+T: 0 0 : 61 : 52 : 0.81
+T: 0 0 : 61 : 60 : 0.09
+T: 0 0 : 61 : 53 : 0.09
+T: 0 0 : 62 : 62 : 0.01
+T: 0 0 : 62 : 53 : 0.81
+T: 0 0 : 62 : 61 : 0.09
+T: 0 0 : 62 : 54 : 0.09
+T: 0 0 : 63 : 63 : 0.01
+T: 0 0 : 63 : 54 : 0.81
+T: 0 0 : 63 : 62 : 0.09
+T: 0 0 : 63 : 55 : 0.09
+T: 0 0 : 64 : 67 : 0.09
+T: 0 0 : 64 : 64 : 0.01
+T: 0 0 : 64 : 56 : 0.09
+T: 0 0 : 64 : 59 : 0.81
+T: 0 0 : 65 : 65 : 0.01
+T: 0 0 : 65 : 56 : 0.81
+T: 0 0 : 65 : 64 : 0.09
+T: 0 0 : 65 : 57 : 0.09
+T: 0 0 : 66 : 66 : 0.01
+T: 0 0 : 66 : 57 : 0.81
+T: 0 0 : 66 : 65 : 0.09
+T: 0 0 : 66 : 58 : 0.09
+T: 0 0 : 67 : 67 : 0.01
+T: 0 0 : 67 : 58 : 0.81
+T: 0 0 : 67 : 66 : 0.09
+T: 0 0 : 67 : 59 : 0.09
+T: 0 0 : 68 : 71 : 0.09
+T: 0 0 : 68 : 68 : 0.01
+T: 0 0 : 68 : 60 : 0.09
+T: 0 0 : 68 : 63 : 0.81
+T: 0 0 : 69 : 69 : 0.01
+T: 0 0 : 69 : 60 : 0.81
+T: 0 0 : 69 : 68 : 0.09
+T: 0 0 : 69 : 61 : 0.09
+T: 0 0 : 70 : 70 : 0.01
+T: 0 0 : 70 : 61 : 0.81
+T: 0 0 : 70 : 69 : 0.09
+T: 0 0 : 70 : 62 : 0.09
+T: 0 0 : 71 : 71 : 0.01
+T: 0 0 : 71 : 62 : 0.81
+T: 0 0 : 71 : 70 : 0.09
+T: 0 0 : 71 : 63 : 0.09
+T: 0 0 : 72 : 75 : 0.09
+T: 0 0 : 72 : 72 : 0.01
+T: 0 0 : 72 : 64 : 0.09
+T: 0 0 : 72 : 67 : 0.81
+T: 0 0 : 73 : 73 : 0.01
+T: 0 0 : 73 : 64 : 0.81
+T: 0 0 : 73 : 72 : 0.09
+T: 0 0 : 73 : 65 : 0.09
+T: 0 0 : 74 : 74 : 0.01
+T: 0 0 : 74 : 65 : 0.81
+T: 0 0 : 74 : 73 : 0.09
+T: 0 0 : 74 : 66 : 0.09
+T: 0 0 : 75 : 75 : 0.01
+T: 0 0 : 75 : 66 : 0.81
+T: 0 0 : 75 : 74 : 0.09
+T: 0 0 : 75 : 67 : 0.09
+T: 0 0 : 76 : 79 : 0.09
+T: 0 0 : 76 : 76 : 0.01
+T: 0 0 : 76 : 68 : 0.09
+T: 0 0 : 76 : 71 : 0.81
+T: 0 0 : 77 : 77 : 0.01
+T: 0 0 : 77 : 68 : 0.81
+T: 0 0 : 77 : 76 : 0.09
+T: 0 0 : 77 : 69 : 0.09
+T: 0 2 : 99 : 99 : 0.1
+T: 0 2 : 99 : 95 : 0.9
+T: 0 2 : 98 : 98 : 0.1
+T: 0 2 : 98 : 94 : 0.9
+T: 0 2 : 97 : 97 : 0.1
+T: 0 2 : 97 : 93 : 0.9
+T: 0 2 : 96 : 96 : 0.01
+T: 0 2 : 96 : 1 : 0.9
+T: 0 2 : 96 : 92 : 0.09
+T: 0 2 : 95 : 95 : 0.1
+T: 0 2 : 95 : 91 : 0.9
+T: 0 2 : 94 : 94 : 0.1
+T: 0 2 : 94 : 90 : 0.9
+T: 0 2 : 93 : 93 : 0.1
+T: 0 2 : 93 : 89 : 0.9
+T: 0 2 : 92 : 92 : 0.01
+T: 0 2 : 92 : 1 : 0.9
+T: 0 2 : 92 : 88 : 0.09
+T: 0 2 : 91 : 91 : 0.1
+T: 0 2 : 91 : 87 : 0.9
+T: 0 2 : 90 : 90 : 0.1
+T: 0 2 : 90 : 86 : 0.9
+T: 0 2 : 89 : 89 : 0.1
+T: 0 2 : 89 : 85 : 0.9
+T: 0 2 : 88 : 88 : 0.01
+T: 0 2 : 88 : 1 : 0.9
+T: 0 2 : 88 : 84 : 0.09
+T: 0 2 : 87 : 99 : 0.9
+T: 0 2 : 87 : 87 : 0.1
+T: 0 2 : 86 : 98 : 0.9
+T: 0 2 : 86 : 86 : 0.1
+T: 0 2 : 85 : 97 : 0.9
+T: 0 2 : 85 : 85 : 0.1
+T: 0 2 : 84 : 96 : 0.09
+T: 0 2 : 84 : 1 : 0.9
+T: 0 2 : 84 : 84 : 0.01
+T: 0 2 : 83 : 83 : 0.01
+T: 0 2 : 83 : 79 : 0.09
+T: 0 2 : 83 : 71 : 0.81
+T: 0 2 : 83 : 75 : 0.09
+T: 0 2 : 82 : 82 : 0.1
+T: 0 2 : 82 : 74 : 0.9
+T: 0 2 : 81 : 81 : 0.1
+T: 0 2 : 81 : 73 : 0.9
+T: 0 2 : 80 : 80 : 0.01
+T: 0 2 : 80 : 1 : 0.9
+T: 0 2 : 80 : 72 : 0.09
+T: 0 2 : 79 : 79 : 0.1
+T: 0 2 : 79 : 71 : 0.9
+T: 0 2 : 78 : 78 : 0.1
+T: 0 2 : 78 : 70 : 0.9
+T: 0 2 : 35 : 35 : 0.01
+T: 0 2 : 35 : 31 : 0.09
+T: 0 2 : 35 : 19 : 0.81
+T: 0 2 : 35 : 23 : 0.09
+T: 0 2 : 34 : 34 : 0.1
+T: 0 2 : 34 : 22 : 0.9
+T: 0 2 : 33 : 37 : 0.09
+T: 0 2 : 33 : 33 : 0.01
+T: 0 2 : 33 : 21 : 0.09
+T: 0 2 : 33 : 25 : 0.81
+T: 0 2 : 32 : 32 : 0.1
+T: 0 2 : 32 : 20 : 0.9
+T: 0 2 : 31 : 31 : 0.1
+T: 0 2 : 31 : 19 : 0.9
+T: 0 2 : 30 : 30 : 0.1
+T: 0 2 : 30 : 18 : 0.9
+T: 0 2 : 29 : 33 : 0.09
+T: 0 2 : 29 : 29 : 0.01
+T: 0 2 : 29 : 17 : 0.09
+T: 0 2 : 29 : 21 : 0.81
+T: 0 2 : 28 : 28 : 0.1
+T: 0 2 : 28 : 16 : 0.9
+T: 0 2 : 27 : 27 : 0.01
+T: 0 2 : 27 : 23 : 0.09
+T: 0 2 : 27 : 11 : 0.81
+T: 0 2 : 27 : 15 : 0.09
+T: 0 2 : 26 : 26 : 0.1
+T: 0 2 : 26 : 14 : 0.9
+T: 0 2 : 25 : 25 : 0.1
+T: 0 2 : 25 : 13 : 0.9
+T: 0 2 : 24 : 24 : 0.01
+T: 0 2 : 24 : 1 : 0.9
+T: 0 2 : 24 : 12 : 0.09
+T: 0 2 : 23 : 23 : 0.01
+T: 0 2 : 23 : 19 : 0.09
+T: 0 2 : 23 : 7 : 0.81
+T: 0 2 : 23 : 11 : 0.09
+T: 0 2 : 22 : 22 : 0.1
+T: 0 2 : 22 : 10 : 0.9
+T: 0 2 : 21 : 25 : 0.09
+T: 0 2 : 21 : 21 : 0.01
+T: 0 2 : 21 : 9 : 0.09
+T: 0 2 : 21 : 13 : 0.81
+T: 0 2 : 20 : 20 : 0.1
+T: 0 2 : 20 : 8 : 0.9
+T: 0 2 : 19 : 19 : 0.1
+T: 0 2 : 19 : 7 : 0.9
+T: 0 2 : 18 : 18 : 0.1
+T: 0 2 : 18 : 6 : 0.9
+T: 0 2 : 17 : 21 : 0.09
+T: 0 2 : 17 : 17 : 0.01
+T: 0 2 : 17 : 5 : 0.09
+T: 0 2 : 17 : 9 : 0.81
+T: 0 2 : 16 : 16 : 0.1
+T: 0 2 : 16 : 4 : 0.9
+T: 0 2 : 5 : 45 : 0.81
+T: 0 2 : 5 : 41 : 0.09
+T: 0 2 : 5 : 5 : 0.01
+T: 0 2 : 5 : 9 : 0.09
+T: 0 2 : 4 : 40 : 0.9
+T: 0 2 : 4 : 4 : 0.1
+T: 0 2 : 3 : 27 : 1
+T: 0 2 : 2 : 27 : 1
+T: 0 2 : 0 : 27 : 1
+T: 0 2 : 1 : 27 : 1
+T: 0 2 : 6 : 42 : 0.9
+T: 0 2 : 6 : 6 : 0.1
+T: 0 2 : 7 : 43 : 0.9
+T: 0 2 : 7 : 7 : 0.1
+T: 0 2 : 8 : 44 : 0.9
+T: 0 2 : 8 : 8 : 0.1
+T: 0 2 : 9 : 49 : 0.81
+T: 0 2 : 9 : 45 : 0.09
+T: 0 2 : 9 : 9 : 0.01
+T: 0 2 : 9 : 13 : 0.09
+T: 0 2 : 10 : 46 : 0.9
+T: 0 2 : 10 : 10 : 0.1
+T: 0 2 : 11 : 47 : 0.09
+T: 0 2 : 11 : 43 : 0.81
+T: 0 2 : 11 : 7 : 0.09
+T: 0 2 : 11 : 11 : 0.01
+T: 0 2 : 12 : 48 : 0.09
+T: 0 2 : 12 : 1 : 0.9
+T: 0 2 : 12 : 12 : 0.01
+T: 0 2 : 13 : 49 : 0.9
+T: 0 2 : 13 : 13 : 0.1
+T: 0 2 : 14 : 50 : 0.9
+T: 0 2 : 14 : 14 : 0.1
+T: 0 2 : 15 : 51 : 0.09
+T: 0 2 : 15 : 47 : 0.81
+T: 0 2 : 15 : 11 : 0.09
+T: 0 2 : 15 : 15 : 0.01
+T: 0 2 : 36 : 36 : 0.01
+T: 0 2 : 36 : 1 : 0.9
+T: 0 2 : 36 : 24 : 0.09
+T: 0 2 : 37 : 37 : 0.1
+T: 0 2 : 37 : 25 : 0.9
+T: 0 2 : 38 : 38 : 0.1
+T: 0 2 : 38 : 26 : 0.9
+T: 0 2 : 39 : 39 : 0.01
+T: 0 2 : 39 : 35 : 0.09
+T: 0 2 : 39 : 23 : 0.81
+T: 0 2 : 39 : 27 : 0.09
+T: 0 2 : 40 : 40 : 0.1
+T: 0 2 : 40 : 28 : 0.9
+T: 0 2 : 41 : 45 : 0.09
+T: 0 2 : 41 : 41 : 0.01
+T: 0 2 : 41 : 29 : 0.09
+T: 0 2 : 41 : 33 : 0.81
+T: 0 2 : 42 : 42 : 0.1
+T: 0 2 : 42 : 30 : 0.9
+T: 0 2 : 43 : 43 : 0.1
+T: 0 2 : 43 : 31 : 0.9
+T: 0 2 : 44 : 44 : 0.1
+T: 0 2 : 44 : 32 : 0.9
+T: 0 2 : 45 : 49 : 0.09
+T: 0 2 : 45 : 45 : 0.01
+T: 0 2 : 45 : 33 : 0.09
+T: 0 2 : 45 : 37 : 0.81
+T: 0 2 : 46 : 46 : 0.1
+T: 0 2 : 46 : 34 : 0.9
+T: 0 2 : 47 : 47 : 0.01
+T: 0 2 : 47 : 43 : 0.09
+T: 0 2 : 47 : 31 : 0.81
+T: 0 2 : 47 : 35 : 0.09
+T: 0 2 : 48 : 48 : 0.01
+T: 0 2 : 48 : 1 : 0.9
+T: 0 2 : 48 : 36 : 0.09
+T: 0 2 : 49 : 49 : 0.1
+T: 0 2 : 49 : 37 : 0.9
+T: 0 2 : 50 : 50 : 0.1
+T: 0 2 : 50 : 38 : 0.9
+T: 0 2 : 51 : 51 : 0.01
+T: 0 2 : 51 : 47 : 0.09
+T: 0 2 : 51 : 35 : 0.81
+T: 0 2 : 51 : 39 : 0.09
+T: 0 2 : 52 : 76 : 0.9
+T: 0 2 : 52 : 52 : 0.1
+T: 0 2 : 53 : 77 : 0.09
+T: 0 2 : 53 : 81 : 0.81
+T: 0 2 : 53 : 53 : 0.01
+T: 0 2 : 53 : 57 : 0.09
+T: 0 2 : 54 : 78 : 0.9
+T: 0 2 : 54 : 54 : 0.1
+T: 0 2 : 55 : 79 : 0.9
+T: 0 2 : 55 : 55 : 0.1
+T: 0 2 : 56 : 80 : 0.09
+T: 0 2 : 56 : 1 : 0.9
+T: 0 2 : 56 : 56 : 0.01
+T: 0 2 : 57 : 81 : 0.9
+T: 0 2 : 57 : 57 : 0.1
+T: 0 2 : 58 : 82 : 0.9
+T: 0 2 : 58 : 58 : 0.1
+T: 0 2 : 59 : 79 : 0.81
+T: 0 2 : 59 : 83 : 0.09
+T: 0 2 : 59 : 55 : 0.09
+T: 0 2 : 59 : 59 : 0.01
+T: 0 2 : 60 : 60 : 0.1
+T: 0 2 : 60 : 52 : 0.9
+T: 0 2 : 61 : 65 : 0.09
+T: 0 2 : 61 : 61 : 0.01
+T: 0 2 : 61 : 53 : 0.09
+T: 0 2 : 61 : 57 : 0.81
+T: 0 2 : 62 : 62 : 0.1
+T: 0 2 : 62 : 54 : 0.9
+T: 0 2 : 63 : 63 : 0.1
+T: 0 2 : 63 : 55 : 0.9
+T: 0 2 : 64 : 64 : 0.01
+T: 0 2 : 64 : 1 : 0.9
+T: 0 2 : 64 : 56 : 0.09
+T: 0 2 : 65 : 65 : 0.1
+T: 0 2 : 65 : 57 : 0.9
+T: 0 2 : 66 : 66 : 0.1
+T: 0 2 : 66 : 58 : 0.9
+T: 0 2 : 67 : 67 : 0.01
+T: 0 2 : 67 : 63 : 0.09
+T: 0 2 : 67 : 55 : 0.81
+T: 0 2 : 67 : 59 : 0.09
+T: 0 2 : 68 : 68 : 0.1
+T: 0 2 : 68 : 60 : 0.9
+T: 0 2 : 69 : 73 : 0.09
+T: 0 2 : 69 : 69 : 0.01
+T: 0 2 : 69 : 61 : 0.09
+T: 0 2 : 69 : 65 : 0.81
+T: 0 2 : 70 : 70 : 0.1
+T: 0 2 : 70 : 62 : 0.9
+T: 0 2 : 71 : 71 : 0.1
+T: 0 2 : 71 : 63 : 0.9
+T: 0 2 : 72 : 72 : 0.01
+T: 0 2 : 72 : 1 : 0.9
+T: 0 2 : 72 : 64 : 0.09
+T: 0 2 : 73 : 73 : 0.1
+T: 0 2 : 73 : 65 : 0.9
+T: 0 2 : 74 : 74 : 0.1
+T: 0 2 : 74 : 66 : 0.9
+T: 0 2 : 75 : 75 : 0.01
+T: 0 2 : 75 : 71 : 0.09
+T: 0 2 : 75 : 63 : 0.81
+T: 0 2 : 75 : 67 : 0.09
+T: 0 2 : 76 : 76 : 0.1
+T: 0 2 : 76 : 68 : 0.9
+T: 0 2 : 77 : 81 : 0.09
+T: 0 2 : 77 : 77 : 0.01
+T: 0 2 : 77 : 69 : 0.09
+T: 0 2 : 77 : 73 : 0.81
+T: 0 3 : 99 : 99 : 0.1
+T: 0 3 : 99 : 95 : 0.9
+T: 0 3 : 98 : 98 : 0.1
+T: 0 3 : 98 : 94 : 0.9
+T: 0 3 : 97 : 97 : 0.1
+T: 0 3 : 97 : 93 : 0.9
+T: 0 3 : 96 : 96 : 0.1
+T: 0 3 : 96 : 92 : 0.9
+T: 0 3 : 95 : 95 : 0.1
+T: 0 3 : 95 : 91 : 0.9
+T: 0 3 : 94 : 94 : 0.1
+T: 0 3 : 94 : 90 : 0.9
+T: 0 3 : 93 : 93 : 0.1
+T: 0 3 : 93 : 89 : 0.9
+T: 0 3 : 92 : 92 : 0.1
+T: 0 3 : 92 : 88 : 0.9
+T: 0 3 : 91 : 91 : 0.1
+T: 0 3 : 91 : 87 : 0.9
+T: 0 3 : 90 : 90 : 0.1
+T: 0 3 : 90 : 86 : 0.9
+T: 0 3 : 89 : 89 : 0.1
+T: 0 3 : 89 : 85 : 0.9
+T: 0 3 : 88 : 88 : 0.1
+T: 0 3 : 88 : 84 : 0.9
+T: 0 3 : 87 : 99 : 0.9
+T: 0 3 : 87 : 87 : 0.1
+T: 0 3 : 86 : 98 : 0.9
+T: 0 3 : 86 : 86 : 0.1
+T: 0 3 : 85 : 97 : 0.9
+T: 0 3 : 85 : 85 : 0.1
+T: 0 3 : 84 : 96 : 0.9
+T: 0 3 : 84 : 84 : 0.1
+T: 0 3 : 83 : 83 : 0.1
+T: 0 3 : 83 : 75 : 0.9
+T: 0 3 : 82 : 82 : 0.1
+T: 0 3 : 82 : 74 : 0.9
+T: 0 3 : 81 : 81 : 0.1
+T: 0 3 : 81 : 73 : 0.9
+T: 0 3 : 80 : 80 : 0.1
+T: 0 3 : 80 : 72 : 0.9
+T: 0 3 : 79 : 79 : 0.1
+T: 0 3 : 79 : 71 : 0.9
+T: 0 3 : 78 : 78 : 0.1
+T: 0 3 : 78 : 70 : 0.9
+T: 0 3 : 35 : 35 : 0.1
+T: 0 3 : 35 : 23 : 0.9
+T: 0 3 : 34 : 34 : 0.1
+T: 0 3 : 34 : 22 : 0.9
+T: 0 3 : 33 : 33 : 0.1
+T: 0 3 : 33 : 21 : 0.9
+T: 0 3 : 32 : 32 : 0.1
+T: 0 3 : 32 : 20 : 0.9
+T: 0 3 : 31 : 31 : 0.1
+T: 0 3 : 31 : 19 : 0.9
+T: 0 3 : 30 : 30 : 0.1
+T: 0 3 : 30 : 18 : 0.9
+T: 0 3 : 29 : 29 : 0.1
+T: 0 3 : 29 : 17 : 0.9
+T: 0 3 : 28 : 28 : 0.1
+T: 0 3 : 28 : 16 : 0.9
+T: 0 3 : 27 : 27 : 0.1
+T: 0 3 : 27 : 15 : 0.9
+T: 0 3 : 26 : 26 : 0.1
+T: 0 3 : 26 : 14 : 0.9
+T: 0 3 : 25 : 25 : 0.1
+T: 0 3 : 25 : 13 : 0.9
+T: 0 3 : 24 : 24 : 0.1
+T: 0 3 : 24 : 12 : 0.9
+T: 0 3 : 23 : 23 : 0.1
+T: 0 3 : 23 : 11 : 0.9
+T: 0 3 : 22 : 22 : 0.1
+T: 0 3 : 22 : 10 : 0.9
+T: 0 3 : 21 : 21 : 0.1
+T: 0 3 : 21 : 9 : 0.9
+T: 0 3 : 20 : 20 : 0.1
+T: 0 3 : 20 : 8 : 0.9
+T: 0 3 : 19 : 19 : 0.1
+T: 0 3 : 19 : 7 : 0.9
+T: 0 3 : 18 : 18 : 0.1
+T: 0 3 : 18 : 6 : 0.9
+T: 0 3 : 17 : 17 : 0.1
+T: 0 3 : 17 : 5 : 0.9
+T: 0 3 : 16 : 16 : 0.1
+T: 0 3 : 16 : 4 : 0.9
+T: 0 3 : 5 : 41 : 0.9
+T: 0 3 : 5 : 5 : 0.1
+T: 0 3 : 4 : 40 : 0.9
+T: 0 3 : 4 : 4 : 0.1
+T: 0 3 : 3 : 27 : 1
+T: 0 3 : 2 : 27 : 1
+T: 0 3 : 0 : 27 : 1
+T: 0 3 : 1 : 27 : 1
+T: 0 3 : 6 : 42 : 0.9
+T: 0 3 : 6 : 6 : 0.1
+T: 0 3 : 7 : 43 : 0.9
+T: 0 3 : 7 : 7 : 0.1
+T: 0 3 : 8 : 44 : 0.9
+T: 0 3 : 8 : 8 : 0.1
+T: 0 3 : 9 : 45 : 0.9
+T: 0 3 : 9 : 9 : 0.1
+T: 0 3 : 10 : 46 : 0.9
+T: 0 3 : 10 : 10 : 0.1
+T: 0 3 : 11 : 47 : 0.9
+T: 0 3 : 11 : 11 : 0.1
+T: 0 3 : 12 : 48 : 0.9
+T: 0 3 : 12 : 12 : 0.1
+T: 0 3 : 13 : 49 : 0.9
+T: 0 3 : 13 : 13 : 0.1
+T: 0 3 : 14 : 50 : 0.9
+T: 0 3 : 14 : 14 : 0.1
+T: 0 3 : 15 : 51 : 0.9
+T: 0 3 : 15 : 15 : 0.1
+T: 0 3 : 36 : 36 : 0.1
+T: 0 3 : 36 : 24 : 0.9
+T: 0 3 : 37 : 37 : 0.1
+T: 0 3 : 37 : 25 : 0.9
+T: 0 3 : 38 : 38 : 0.1
+T: 0 3 : 38 : 26 : 0.9
+T: 0 3 : 39 : 39 : 0.1
+T: 0 3 : 39 : 27 : 0.9
+T: 0 3 : 40 : 40 : 0.1
+T: 0 3 : 40 : 28 : 0.9
+T: 0 3 : 41 : 41 : 0.1
+T: 0 3 : 41 : 29 : 0.9
+T: 0 3 : 42 : 42 : 0.1
+T: 0 3 : 42 : 30 : 0.9
+T: 0 3 : 43 : 43 : 0.1
+T: 0 3 : 43 : 31 : 0.9
+T: 0 3 : 44 : 44 : 0.1
+T: 0 3 : 44 : 32 : 0.9
+T: 0 3 : 45 : 45 : 0.1
+T: 0 3 : 45 : 33 : 0.9
+T: 0 3 : 46 : 46 : 0.1
+T: 0 3 : 46 : 34 : 0.9
+T: 0 3 : 47 : 47 : 0.1
+T: 0 3 : 47 : 35 : 0.9
+T: 0 3 : 48 : 48 : 0.1
+T: 0 3 : 48 : 36 : 0.9
+T: 0 3 : 49 : 49 : 0.1
+T: 0 3 : 49 : 37 : 0.9
+T: 0 3 : 50 : 50 : 0.1
+T: 0 3 : 50 : 38 : 0.9
+T: 0 3 : 51 : 51 : 0.1
+T: 0 3 : 51 : 39 : 0.9
+T: 0 3 : 52 : 76 : 0.9
+T: 0 3 : 52 : 52 : 0.1
+T: 0 3 : 53 : 77 : 0.9
+T: 0 3 : 53 : 53 : 0.1
+T: 0 3 : 54 : 78 : 0.9
+T: 0 3 : 54 : 54 : 0.1
+T: 0 3 : 55 : 79 : 0.9
+T: 0 3 : 55 : 55 : 0.1
+T: 0 3 : 56 : 80 : 0.9
+T: 0 3 : 56 : 56 : 0.1
+T: 0 3 : 57 : 81 : 0.9
+T: 0 3 : 57 : 57 : 0.1
+T: 0 3 : 58 : 82 : 0.9
+T: 0 3 : 58 : 58 : 0.1
+T: 0 3 : 59 : 83 : 0.9
+T: 0 3 : 59 : 59 : 0.1
+T: 0 3 : 60 : 60 : 0.1
+T: 0 3 : 60 : 52 : 0.9
+T: 0 3 : 61 : 61 : 0.1
+T: 0 3 : 61 : 53 : 0.9
+T: 0 3 : 62 : 62 : 0.1
+T: 0 3 : 62 : 54 : 0.9
+T: 0 3 : 63 : 63 : 0.1
+T: 0 3 : 63 : 55 : 0.9
+T: 0 3 : 64 : 64 : 0.1
+T: 0 3 : 64 : 56 : 0.9
+T: 0 3 : 65 : 65 : 0.1
+T: 0 3 : 65 : 57 : 0.9
+T: 0 3 : 66 : 66 : 0.1
+T: 0 3 : 66 : 58 : 0.9
+T: 0 3 : 67 : 67 : 0.1
+T: 0 3 : 67 : 59 : 0.9
+T: 0 3 : 68 : 68 : 0.1
+T: 0 3 : 68 : 60 : 0.9
+T: 0 3 : 69 : 69 : 0.1
+T: 0 3 : 69 : 61 : 0.9
+T: 0 3 : 70 : 70 : 0.1
+T: 0 3 : 70 : 62 : 0.9
+T: 0 3 : 71 : 71 : 0.1
+T: 0 3 : 71 : 63 : 0.9
+T: 0 3 : 72 : 72 : 0.1
+T: 0 3 : 72 : 64 : 0.9
+T: 0 3 : 73 : 73 : 0.1
+T: 0 3 : 73 : 65 : 0.9
+T: 0 3 : 74 : 74 : 0.1
+T: 0 3 : 74 : 66 : 0.9
+T: 0 3 : 75 : 75 : 0.1
+T: 0 3 : 75 : 67 : 0.9
+T: 0 3 : 76 : 76 : 0.1
+T: 0 3 : 76 : 68 : 0.9
+T: 0 3 : 77 : 77 : 0.1
+T: 0 3 : 77 : 69 : 0.9
+T: 1 0 : 99 : 99 : 0.01
+T: 1 0 : 99 : 98 : 0.09
+T: 1 0 : 99 : 86 : 0.81
+T: 1 0 : 99 : 87 : 0.09
+T: 1 0 : 98 : 98 : 0.01
+T: 1 0 : 98 : 97 : 0.09
+T: 1 0 : 98 : 85 : 0.81
+T: 1 0 : 98 : 86 : 0.09
+T: 1 0 : 97 : 97 : 0.01
+T: 1 0 : 97 : 96 : 0.09
+T: 1 0 : 97 : 84 : 0.81
+T: 1 0 : 97 : 85 : 0.09
+T: 1 0 : 96 : 99 : 0.09
+T: 1 0 : 96 : 96 : 0.01
+T: 1 0 : 96 : 84 : 0.09
+T: 1 0 : 96 : 87 : 0.81
+T: 1 0 : 95 : 99 : 0.09
+T: 1 0 : 95 : 98 : 0.81
+T: 1 0 : 95 : 94 : 0.09
+T: 1 0 : 95 : 95 : 0.01
+T: 1 0 : 94 : 98 : 0.09
+T: 1 0 : 94 : 97 : 0.81
+T: 1 0 : 94 : 93 : 0.09
+T: 1 0 : 94 : 94 : 0.01
+T: 1 0 : 93 : 97 : 0.09
+T: 1 0 : 93 : 96 : 0.81
+T: 1 0 : 93 : 92 : 0.09
+T: 1 0 : 93 : 93 : 0.01
+T: 1 0 : 92 : 96 : 0.09
+T: 1 0 : 92 : 99 : 0.81
+T: 1 0 : 92 : 92 : 0.01
+T: 1 0 : 92 : 95 : 0.09
+T: 1 0 : 91 : 95 : 0.09
+T: 1 0 : 91 : 94 : 0.81
+T: 1 0 : 91 : 90 : 0.09
+T: 1 0 : 91 : 91 : 0.01
+T: 1 0 : 90 : 94 : 0.09
+T: 1 0 : 90 : 93 : 0.81
+T: 1 0 : 90 : 89 : 0.09
+T: 1 0 : 90 : 90 : 0.01
+T: 1 0 : 89 : 93 : 0.09
+T: 1 0 : 89 : 92 : 0.81
+T: 1 0 : 89 : 88 : 0.09
+T: 1 0 : 89 : 89 : 0.01
+T: 1 0 : 88 : 92 : 0.09
+T: 1 0 : 88 : 95 : 0.81
+T: 1 0 : 88 : 88 : 0.01
+T: 1 0 : 88 : 91 : 0.09
+T: 1 0 : 87 : 91 : 0.09
+T: 1 0 : 87 : 90 : 0.81
+T: 1 0 : 87 : 86 : 0.09
+T: 1 0 : 87 : 87 : 0.01
+T: 1 0 : 86 : 90 : 0.09
+T: 1 0 : 86 : 89 : 0.81
+T: 1 0 : 86 : 85 : 0.09
+T: 1 0 : 86 : 86 : 0.01
+T: 1 0 : 85 : 89 : 0.09
+T: 1 0 : 85 : 88 : 0.81
+T: 1 0 : 85 : 84 : 0.09
+T: 1 0 : 85 : 85 : 0.01
+T: 1 0 : 84 : 88 : 0.09
+T: 1 0 : 84 : 91 : 0.81
+T: 1 0 : 84 : 84 : 0.01
+T: 1 0 : 84 : 87 : 0.09
+T: 1 0 : 83 : 83 : 0.01
+T: 1 0 : 83 : 82 : 0.09
+T: 1 0 : 83 : 58 : 0.81
+T: 1 0 : 83 : 59 : 0.09
+T: 1 0 : 82 : 82 : 0.01
+T: 1 0 : 82 : 81 : 0.09
+T: 1 0 : 82 : 57 : 0.81
+T: 1 0 : 82 : 58 : 0.09
+T: 1 0 : 81 : 81 : 0.01
+T: 1 0 : 81 : 80 : 0.09
+T: 1 0 : 81 : 56 : 0.81
+T: 1 0 : 81 : 57 : 0.09
+T: 1 0 : 80 : 83 : 0.09
+T: 1 0 : 80 : 56 : 0.09
+T: 1 0 : 80 : 80 : 0.01
+T: 1 0 : 80 : 59 : 0.81
+T: 1 0 : 79 : 79 : 0.01
+T: 1 0 : 79 : 78 : 0.09
+T: 1 0 : 79 : 54 : 0.81
+T: 1 0 : 79 : 55 : 0.09
+T: 1 0 : 78 : 78 : 0.01
+T: 1 0 : 78 : 77 : 0.09
+T: 1 0 : 78 : 53 : 0.81
+T: 1 0 : 78 : 54 : 0.09
+T: 1 0 : 35 : 47 : 0.09
+T: 1 0 : 35 : 46 : 0.81
+T: 1 0 : 35 : 34 : 0.09
+T: 1 0 : 35 : 35 : 0.01
+T: 1 0 : 34 : 46 : 0.09
+T: 1 0 : 34 : 45 : 0.81
+T: 1 0 : 34 : 33 : 0.09
+T: 1 0 : 34 : 34 : 0.01
+T: 1 0 : 33 : 45 : 0.09
+T: 1 0 : 33 : 44 : 0.81
+T: 1 0 : 33 : 32 : 0.09
+T: 1 0 : 33 : 33 : 0.01
+T: 1 0 : 32 : 47 : 0.81
+T: 1 0 : 32 : 44 : 0.09
+T: 1 0 : 32 : 32 : 0.01
+T: 1 0 : 32 : 35 : 0.09
+T: 1 0 : 31 : 43 : 0.09
+T: 1 0 : 31 : 42 : 0.81
+T: 1 0 : 31 : 30 : 0.09
+T: 1 0 : 31 : 31 : 0.01
+T: 1 0 : 30 : 42 : 0.09
+T: 1 0 : 30 : 41 : 0.81
+T: 1 0 : 30 : 29 : 0.09
+T: 1 0 : 30 : 30 : 0.01
+T: 1 0 : 29 : 41 : 0.09
+T: 1 0 : 29 : 40 : 0.81
+T: 1 0 : 29 : 28 : 0.09
+T: 1 0 : 29 : 29 : 0.01
+T: 1 0 : 28 : 43 : 0.81
+T: 1 0 : 28 : 40 : 0.09
+T: 1 0 : 28 : 28 : 0.01
+T: 1 0 : 28 : 31 : 0.09
+T: 1 0 : 27 : 39 : 0.09
+T: 1 0 : 27 : 38 : 0.81
+T: 1 0 : 27 : 26 : 0.09
+T: 1 0 : 27 : 27 : 0.01
+T: 1 0 : 26 : 38 : 0.09
+T: 1 0 : 26 : 37 : 0.81
+T: 1 0 : 26 : 25 : 0.09
+T: 1 0 : 26 : 26 : 0.01
+T: 1 0 : 25 : 37 : 0.09
+T: 1 0 : 25 : 36 : 0.81
+T: 1 0 : 25 : 24 : 0.09
+T: 1 0 : 25 : 25 : 0.01
+T: 1 0 : 24 : 39 : 0.81
+T: 1 0 : 24 : 36 : 0.09
+T: 1 0 : 24 : 24 : 0.01
+T: 1 0 : 24 : 27 : 0.09
+T: 1 0 : 23 : 35 : 0.09
+T: 1 0 : 23 : 34 : 0.81
+T: 1 0 : 23 : 22 : 0.09
+T: 1 0 : 23 : 23 : 0.01
+T: 1 0 : 22 : 34 : 0.09
+T: 1 0 : 22 : 33 : 0.81
+T: 1 0 : 22 : 21 : 0.09
+T: 1 0 : 22 : 22 : 0.01
+T: 1 0 : 21 : 33 : 0.09
+T: 1 0 : 21 : 32 : 0.81
+T: 1 0 : 21 : 20 : 0.09
+T: 1 0 : 21 : 21 : 0.01
+T: 1 0 : 20 : 35 : 0.81
+T: 1 0 : 20 : 32 : 0.09
+T: 1 0 : 20 : 20 : 0.01
+T: 1 0 : 20 : 23 : 0.09
+T: 1 0 : 19 : 31 : 0.09
+T: 1 0 : 19 : 30 : 0.81
+T: 1 0 : 19 : 18 : 0.09
+T: 1 0 : 19 : 19 : 0.01
+T: 1 0 : 18 : 30 : 0.09
+T: 1 0 : 18 : 29 : 0.81
+T: 1 0 : 18 : 17 : 0.09
+T: 1 0 : 18 : 18 : 0.01
+T: 1 0 : 17 : 29 : 0.09
+T: 1 0 : 17 : 28 : 0.81
+T: 1 0 : 17 : 16 : 0.09
+T: 1 0 : 17 : 17 : 0.01
+T: 1 0 : 16 : 31 : 0.81
+T: 1 0 : 16 : 28 : 0.09
+T: 1 0 : 16 : 16 : 0.01
+T: 1 0 : 16 : 19 : 0.09
+T: 1 0 : 5 : 17 : 0.09
+T: 1 0 : 5 : 16 : 0.81
+T: 1 0 : 5 : 4 : 0.09
+T: 1 0 : 5 : 5 : 0.01
+T: 1 0 : 4 : 19 : 0.81
+T: 1 0 : 4 : 16 : 0.09
+T: 1 0 : 4 : 4 : 0.01
+T: 1 0 : 4 : 7 : 0.09
+T: 1 0 : 3 : 27 : 1
+T: 1 0 : 2 : 27 : 1
+T: 1 0 : 0 : 27 : 1
+T: 1 0 : 1 : 27 : 1
+T: 1 0 : 6 : 18 : 0.09
+T: 1 0 : 6 : 17 : 0.81
+T: 1 0 : 6 : 5 : 0.09
+T: 1 0 : 6 : 6 : 0.01
+T: 1 0 : 7 : 19 : 0.09
+T: 1 0 : 7 : 18 : 0.81
+T: 1 0 : 7 : 6 : 0.09
+T: 1 0 : 7 : 7 : 0.01
+T: 1 0 : 8 : 23 : 0.81
+T: 1 0 : 8 : 20 : 0.09
+T: 1 0 : 8 : 8 : 0.01
+T: 1 0 : 8 : 11 : 0.09
+T: 1 0 : 9 : 21 : 0.09
+T: 1 0 : 9 : 20 : 0.81
+T: 1 0 : 9 : 8 : 0.09
+T: 1 0 : 9 : 9 : 0.01
+T: 1 0 : 10 : 22 : 0.09
+T: 1 0 : 10 : 21 : 0.81
+T: 1 0 : 10 : 9 : 0.09
+T: 1 0 : 10 : 10 : 0.01
+T: 1 0 : 11 : 23 : 0.09
+T: 1 0 : 11 : 22 : 0.81
+T: 1 0 : 11 : 10 : 0.09
+T: 1 0 : 11 : 11 : 0.01
+T: 1 0 : 12 : 27 : 0.81
+T: 1 0 : 12 : 24 : 0.09
+T: 1 0 : 12 : 12 : 0.01
+T: 1 0 : 12 : 15 : 0.09
+T: 1 0 : 13 : 25 : 0.09
+T: 1 0 : 13 : 24 : 0.81
+T: 1 0 : 13 : 12 : 0.09
+T: 1 0 : 13 : 13 : 0.01
+T: 1 0 : 14 : 26 : 0.09
+T: 1 0 : 14 : 25 : 0.81
+T: 1 0 : 14 : 13 : 0.09
+T: 1 0 : 14 : 14 : 0.01
+T: 1 0 : 15 : 27 : 0.09
+T: 1 0 : 15 : 26 : 0.81
+T: 1 0 : 15 : 14 : 0.09
+T: 1 0 : 15 : 15 : 0.01
+T: 1 0 : 36 : 51 : 0.81
+T: 1 0 : 36 : 48 : 0.09
+T: 1 0 : 36 : 36 : 0.01
+T: 1 0 : 36 : 39 : 0.09
+T: 1 0 : 37 : 49 : 0.09
+T: 1 0 : 37 : 48 : 0.81
+T: 1 0 : 37 : 36 : 0.09
+T: 1 0 : 37 : 37 : 0.01
+T: 1 0 : 38 : 50 : 0.09
+T: 1 0 : 38 : 49 : 0.81
+T: 1 0 : 38 : 37 : 0.09
+T: 1 0 : 38 : 38 : 0.01
+T: 1 0 : 39 : 51 : 0.09
+T: 1 0 : 39 : 50 : 0.81
+T: 1 0 : 39 : 38 : 0.09
+T: 1 0 : 39 : 39 : 0.01
+T: 1 0 : 40 : 43 : 0.09
+T: 1 0 : 40 : 40 : 0.01
+T: 1 0 : 40 : 4 : 0.09
+T: 1 0 : 40 : 7 : 0.81
+T: 1 0 : 41 : 41 : 0.01
+T: 1 0 : 41 : 4 : 0.81
+T: 1 0 : 41 : 40 : 0.09
+T: 1 0 : 41 : 5 : 0.09
+T: 1 0 : 42 : 42 : 0.01
+T: 1 0 : 42 : 5 : 0.81
+T: 1 0 : 42 : 41 : 0.09
+T: 1 0 : 42 : 6 : 0.09
+T: 1 0 : 43 : 43 : 0.01
+T: 1 0 : 43 : 6 : 0.81
+T: 1 0 : 43 : 42 : 0.09
+T: 1 0 : 43 : 7 : 0.09
+T: 1 0 : 44 : 47 : 0.09
+T: 1 0 : 44 : 44 : 0.01
+T: 1 0 : 44 : 8 : 0.09
+T: 1 0 : 44 : 11 : 0.81
+T: 1 0 : 45 : 45 : 0.01
+T: 1 0 : 45 : 8 : 0.81
+T: 1 0 : 45 : 44 : 0.09
+T: 1 0 : 45 : 9 : 0.09
+T: 1 0 : 46 : 46 : 0.01
+T: 1 0 : 46 : 9 : 0.81
+T: 1 0 : 46 : 45 : 0.09
+T: 1 0 : 46 : 10 : 0.09
+T: 1 0 : 47 : 47 : 0.01
+T: 1 0 : 47 : 10 : 0.81
+T: 1 0 : 47 : 46 : 0.09
+T: 1 0 : 47 : 11 : 0.09
+T: 1 0 : 48 : 51 : 0.09
+T: 1 0 : 48 : 48 : 0.01
+T: 1 0 : 48 : 12 : 0.09
+T: 1 0 : 48 : 15 : 0.81
+T: 1 0 : 49 : 49 : 0.01
+T: 1 0 : 49 : 12 : 0.81
+T: 1 0 : 49 : 48 : 0.09
+T: 1 0 : 49 : 13 : 0.09
+T: 1 0 : 50 : 50 : 0.01
+T: 1 0 : 50 : 13 : 0.81
+T: 1 0 : 50 : 49 : 0.09
+T: 1 0 : 50 : 14 : 0.09
+T: 1 0 : 51 : 51 : 0.01
+T: 1 0 : 51 : 14 : 0.81
+T: 1 0 : 51 : 50 : 0.09
+T: 1 0 : 51 : 15 : 0.09
+T: 1 0 : 52 : 63 : 0.81
+T: 1 0 : 52 : 60 : 0.09
+T: 1 0 : 52 : 52 : 0.01
+T: 1 0 : 52 : 55 : 0.09
+T: 1 0 : 53 : 61 : 0.09
+T: 1 0 : 53 : 52 : 0.09
+T: 1 0 : 53 : 60 : 0.81
+T: 1 0 : 53 : 53 : 0.01
+T: 1 0 : 54 : 62 : 0.09
+T: 1 0 : 54 : 53 : 0.09
+T: 1 0 : 54 : 61 : 0.81
+T: 1 0 : 54 : 54 : 0.01
+T: 1 0 : 55 : 63 : 0.09
+T: 1 0 : 55 : 54 : 0.09
+T: 1 0 : 55 : 62 : 0.81
+T: 1 0 : 55 : 55 : 0.01
+T: 1 0 : 56 : 67 : 0.81
+T: 1 0 : 56 : 64 : 0.09
+T: 1 0 : 56 : 56 : 0.01
+T: 1 0 : 56 : 59 : 0.09
+T: 1 0 : 57 : 65 : 0.09
+T: 1 0 : 57 : 56 : 0.09
+T: 1 0 : 57 : 64 : 0.81
+T: 1 0 : 57 : 57 : 0.01
+T: 1 0 : 58 : 66 : 0.09
+T: 1 0 : 58 : 57 : 0.09
+T: 1 0 : 58 : 65 : 0.81
+T: 1 0 : 58 : 58 : 0.01
+T: 1 0 : 59 : 67 : 0.09
+T: 1 0 : 59 : 58 : 0.09
+T: 1 0 : 59 : 66 : 0.81
+T: 1 0 : 59 : 59 : 0.01
+T: 1 0 : 60 : 71 : 0.81
+T: 1 0 : 60 : 68 : 0.09
+T: 1 0 : 60 : 60 : 0.01
+T: 1 0 : 60 : 63 : 0.09
+T: 1 0 : 61 : 69 : 0.09
+T: 1 0 : 61 : 60 : 0.09
+T: 1 0 : 61 : 68 : 0.81
+T: 1 0 : 61 : 61 : 0.01
+T: 1 0 : 62 : 70 : 0.09
+T: 1 0 : 62 : 61 : 0.09
+T: 1 0 : 62 : 69 : 0.81
+T: 1 0 : 62 : 62 : 0.01
+T: 1 0 : 63 : 71 : 0.09
+T: 1 0 : 63 : 62 : 0.09
+T: 1 0 : 63 : 70 : 0.81
+T: 1 0 : 63 : 63 : 0.01
+T: 1 0 : 64 : 75 : 0.81
+T: 1 0 : 64 : 72 : 0.09
+T: 1 0 : 64 : 64 : 0.01
+T: 1 0 : 64 : 67 : 0.09
+T: 1 0 : 65 : 73 : 0.09
+T: 1 0 : 65 : 64 : 0.09
+T: 1 0 : 65 : 72 : 0.81
+T: 1 0 : 65 : 65 : 0.01
+T: 1 0 : 66 : 74 : 0.09
+T: 1 0 : 66 : 65 : 0.09
+T: 1 0 : 66 : 73 : 0.81
+T: 1 0 : 66 : 66 : 0.01
+T: 1 0 : 67 : 75 : 0.09
+T: 1 0 : 67 : 66 : 0.09
+T: 1 0 : 67 : 74 : 0.81
+T: 1 0 : 67 : 67 : 0.01
+T: 1 0 : 68 : 79 : 0.81
+T: 1 0 : 68 : 76 : 0.09
+T: 1 0 : 68 : 68 : 0.01
+T: 1 0 : 68 : 71 : 0.09
+T: 1 0 : 69 : 77 : 0.09
+T: 1 0 : 69 : 68 : 0.09
+T: 1 0 : 69 : 76 : 0.81
+T: 1 0 : 69 : 69 : 0.01
+T: 1 0 : 70 : 78 : 0.09
+T: 1 0 : 70 : 69 : 0.09
+T: 1 0 : 70 : 77 : 0.81
+T: 1 0 : 70 : 70 : 0.01
+T: 1 0 : 71 : 79 : 0.09
+T: 1 0 : 71 : 70 : 0.09
+T: 1 0 : 71 : 78 : 0.81
+T: 1 0 : 71 : 71 : 0.01
+T: 1 0 : 72 : 83 : 0.81
+T: 1 0 : 72 : 80 : 0.09
+T: 1 0 : 72 : 72 : 0.01
+T: 1 0 : 72 : 75 : 0.09
+T: 1 0 : 73 : 81 : 0.09
+T: 1 0 : 73 : 72 : 0.09
+T: 1 0 : 73 : 80 : 0.81
+T: 1 0 : 73 : 73 : 0.01
+T: 1 0 : 74 : 82 : 0.09
+T: 1 0 : 74 : 73 : 0.09
+T: 1 0 : 74 : 81 : 0.81
+T: 1 0 : 74 : 74 : 0.01
+T: 1 0 : 75 : 83 : 0.09
+T: 1 0 : 75 : 74 : 0.09
+T: 1 0 : 75 : 82 : 0.81
+T: 1 0 : 75 : 75 : 0.01
+T: 1 0 : 76 : 79 : 0.09
+T: 1 0 : 76 : 52 : 0.09
+T: 1 0 : 76 : 76 : 0.01
+T: 1 0 : 76 : 55 : 0.81
+T: 1 0 : 77 : 77 : 0.01
+T: 1 0 : 77 : 76 : 0.09
+T: 1 0 : 77 : 52 : 0.81
+T: 1 0 : 77 : 53 : 0.09
+T: 1 1 : 99 : 99 : 0.01
+T: 1 1 : 99 : 96 : 0.09
+T: 1 1 : 99 : 84 : 0.81
+T: 1 1 : 99 : 87 : 0.09
+T: 1 1 : 98 : 99 : 0.09
+T: 1 1 : 98 : 98 : 0.01
+T: 1 1 : 98 : 86 : 0.09
+T: 1 1 : 98 : 87 : 0.81
+T: 1 1 : 97 : 98 : 0.09
+T: 1 1 : 97 : 97 : 0.01
+T: 1 1 : 97 : 85 : 0.09
+T: 1 1 : 97 : 86 : 0.81
+T: 1 1 : 96 : 97 : 0.09
+T: 1 1 : 96 : 96 : 0.01
+T: 1 1 : 96 : 84 : 0.09
+T: 1 1 : 96 : 85 : 0.81
+T: 1 1 : 95 : 96 : 0.81
+T: 1 1 : 95 : 99 : 0.09
+T: 1 1 : 95 : 92 : 0.09
+T: 1 1 : 95 : 95 : 0.01
+T: 1 1 : 94 : 99 : 0.81
+T: 1 1 : 94 : 98 : 0.09
+T: 1 1 : 94 : 94 : 0.01
+T: 1 1 : 94 : 95 : 0.09
+T: 1 1 : 93 : 98 : 0.81
+T: 1 1 : 93 : 97 : 0.09
+T: 1 1 : 93 : 93 : 0.01
+T: 1 1 : 93 : 94 : 0.09
+T: 1 1 : 92 : 97 : 0.81
+T: 1 1 : 92 : 96 : 0.09
+T: 1 1 : 92 : 92 : 0.01
+T: 1 1 : 92 : 93 : 0.09
+T: 1 1 : 91 : 92 : 0.81
+T: 1 1 : 91 : 95 : 0.09
+T: 1 1 : 91 : 88 : 0.09
+T: 1 1 : 91 : 91 : 0.01
+T: 1 1 : 90 : 95 : 0.81
+T: 1 1 : 90 : 94 : 0.09
+T: 1 1 : 90 : 90 : 0.01
+T: 1 1 : 90 : 91 : 0.09
+T: 1 1 : 89 : 94 : 0.81
+T: 1 1 : 89 : 93 : 0.09
+T: 1 1 : 89 : 89 : 0.01
+T: 1 1 : 89 : 90 : 0.09
+T: 1 1 : 88 : 93 : 0.81
+T: 1 1 : 88 : 92 : 0.09
+T: 1 1 : 88 : 88 : 0.01
+T: 1 1 : 88 : 89 : 0.09
+T: 1 1 : 87 : 88 : 0.81
+T: 1 1 : 87 : 91 : 0.09
+T: 1 1 : 87 : 84 : 0.09
+T: 1 1 : 87 : 87 : 0.01
+T: 1 1 : 86 : 91 : 0.81
+T: 1 1 : 86 : 90 : 0.09
+T: 1 1 : 86 : 86 : 0.01
+T: 1 1 : 86 : 87 : 0.09
+T: 1 1 : 85 : 90 : 0.81
+T: 1 1 : 85 : 89 : 0.09
+T: 1 1 : 85 : 85 : 0.01
+T: 1 1 : 85 : 86 : 0.09
+T: 1 1 : 84 : 89 : 0.81
+T: 1 1 : 84 : 88 : 0.09
+T: 1 1 : 84 : 84 : 0.01
+T: 1 1 : 84 : 85 : 0.09
+T: 1 1 : 83 : 83 : 0.01
+T: 1 1 : 83 : 56 : 0.81
+T: 1 1 : 83 : 80 : 0.09
+T: 1 1 : 83 : 59 : 0.09
+T: 1 1 : 82 : 83 : 0.09
+T: 1 1 : 82 : 82 : 0.01
+T: 1 1 : 82 : 58 : 0.09
+T: 1 1 : 82 : 59 : 0.81
+T: 1 1 : 81 : 82 : 0.09
+T: 1 1 : 81 : 81 : 0.01
+T: 1 1 : 81 : 57 : 0.09
+T: 1 1 : 81 : 58 : 0.81
+T: 1 1 : 80 : 81 : 0.09
+T: 1 1 : 80 : 80 : 0.01
+T: 1 1 : 80 : 56 : 0.09
+T: 1 1 : 80 : 57 : 0.81
+T: 1 1 : 79 : 79 : 0.01
+T: 1 1 : 79 : 52 : 0.81
+T: 1 1 : 79 : 76 : 0.09
+T: 1 1 : 79 : 55 : 0.09
+T: 1 1 : 78 : 79 : 0.09
+T: 1 1 : 78 : 78 : 0.01
+T: 1 1 : 78 : 54 : 0.09
+T: 1 1 : 78 : 55 : 0.81
+T: 1 1 : 35 : 47 : 0.09
+T: 1 1 : 35 : 44 : 0.81
+T: 1 1 : 35 : 32 : 0.09
+T: 1 1 : 35 : 35 : 0.01
+T: 1 1 : 34 : 47 : 0.81
+T: 1 1 : 34 : 46 : 0.09
+T: 1 1 : 34 : 34 : 0.01
+T: 1 1 : 34 : 35 : 0.09
+T: 1 1 : 33 : 46 : 0.81
+T: 1 1 : 33 : 45 : 0.09
+T: 1 1 : 33 : 33 : 0.01
+T: 1 1 : 33 : 34 : 0.09
+T: 1 1 : 32 : 45 : 0.81
+T: 1 1 : 32 : 44 : 0.09
+T: 1 1 : 32 : 32 : 0.01
+T: 1 1 : 32 : 33 : 0.09
+T: 1 1 : 31 : 43 : 0.09
+T: 1 1 : 31 : 40 : 0.81
+T: 1 1 : 31 : 28 : 0.09
+T: 1 1 : 31 : 31 : 0.01
+T: 1 1 : 30 : 43 : 0.81
+T: 1 1 : 30 : 42 : 0.09
+T: 1 1 : 30 : 30 : 0.01
+T: 1 1 : 30 : 31 : 0.09
+T: 1 1 : 29 : 42 : 0.81
+T: 1 1 : 29 : 41 : 0.09
+T: 1 1 : 29 : 29 : 0.01
+T: 1 1 : 29 : 30 : 0.09
+T: 1 1 : 28 : 41 : 0.81
+T: 1 1 : 28 : 40 : 0.09
+T: 1 1 : 28 : 28 : 0.01
+T: 1 1 : 28 : 29 : 0.09
+T: 1 1 : 27 : 39 : 0.09
+T: 1 1 : 27 : 36 : 0.81
+T: 1 1 : 27 : 24 : 0.09
+T: 1 1 : 27 : 27 : 0.01
+T: 1 1 : 26 : 39 : 0.81
+T: 1 1 : 26 : 38 : 0.09
+T: 1 1 : 26 : 26 : 0.01
+T: 1 1 : 26 : 27 : 0.09
+T: 1 1 : 25 : 38 : 0.81
+T: 1 1 : 25 : 37 : 0.09
+T: 1 1 : 25 : 25 : 0.01
+T: 1 1 : 25 : 26 : 0.09
+T: 1 1 : 24 : 37 : 0.81
+T: 1 1 : 24 : 36 : 0.09
+T: 1 1 : 24 : 24 : 0.01
+T: 1 1 : 24 : 25 : 0.09
+T: 1 1 : 23 : 35 : 0.09
+T: 1 1 : 23 : 32 : 0.81
+T: 1 1 : 23 : 20 : 0.09
+T: 1 1 : 23 : 23 : 0.01
+T: 1 1 : 22 : 35 : 0.81
+T: 1 1 : 22 : 34 : 0.09
+T: 1 1 : 22 : 22 : 0.01
+T: 1 1 : 22 : 23 : 0.09
+T: 1 1 : 21 : 34 : 0.81
+T: 1 1 : 21 : 33 : 0.09
+T: 1 1 : 21 : 21 : 0.01
+T: 1 1 : 21 : 22 : 0.09
+T: 1 1 : 20 : 33 : 0.81
+T: 1 1 : 20 : 32 : 0.09
+T: 1 1 : 20 : 20 : 0.01
+T: 1 1 : 20 : 21 : 0.09
+T: 1 1 : 19 : 31 : 0.09
+T: 1 1 : 19 : 28 : 0.81
+T: 1 1 : 19 : 16 : 0.09
+T: 1 1 : 19 : 19 : 0.01
+T: 1 1 : 18 : 31 : 0.81
+T: 1 1 : 18 : 30 : 0.09
+T: 1 1 : 18 : 18 : 0.01
+T: 1 1 : 18 : 19 : 0.09
+T: 1 1 : 17 : 30 : 0.81
+T: 1 1 : 17 : 29 : 0.09
+T: 1 1 : 17 : 17 : 0.01
+T: 1 1 : 17 : 18 : 0.09
+T: 1 1 : 16 : 29 : 0.81
+T: 1 1 : 16 : 28 : 0.09
+T: 1 1 : 16 : 16 : 0.01
+T: 1 1 : 16 : 17 : 0.09
+T: 1 1 : 5 : 18 : 0.81
+T: 1 1 : 5 : 17 : 0.09
+T: 1 1 : 5 : 5 : 0.01
+T: 1 1 : 5 : 6 : 0.09
+T: 1 1 : 4 : 17 : 0.81
+T: 1 1 : 4 : 16 : 0.09
+T: 1 1 : 4 : 4 : 0.01
+T: 1 1 : 4 : 5 : 0.09
+T: 1 1 : 3 : 27 : 1
+T: 1 1 : 2 : 27 : 1
+T: 1 1 : 0 : 27 : 1
+T: 1 1 : 1 : 27 : 1
+T: 1 1 : 6 : 19 : 0.81
+T: 1 1 : 6 : 18 : 0.09
+T: 1 1 : 6 : 6 : 0.01
+T: 1 1 : 6 : 7 : 0.09
+T: 1 1 : 7 : 19 : 0.09
+T: 1 1 : 7 : 16 : 0.81
+T: 1 1 : 7 : 4 : 0.09
+T: 1 1 : 7 : 7 : 0.01
+T: 1 1 : 8 : 21 : 0.81
+T: 1 1 : 8 : 20 : 0.09
+T: 1 1 : 8 : 8 : 0.01
+T: 1 1 : 8 : 9 : 0.09
+T: 1 1 : 9 : 22 : 0.81
+T: 1 1 : 9 : 21 : 0.09
+T: 1 1 : 9 : 9 : 0.01
+T: 1 1 : 9 : 10 : 0.09
+T: 1 1 : 10 : 23 : 0.81
+T: 1 1 : 10 : 22 : 0.09
+T: 1 1 : 10 : 10 : 0.01
+T: 1 1 : 10 : 11 : 0.09
+T: 1 1 : 11 : 23 : 0.09
+T: 1 1 : 11 : 20 : 0.81
+T: 1 1 : 11 : 8 : 0.09
+T: 1 1 : 11 : 11 : 0.01
+T: 1 1 : 12 : 25 : 0.81
+T: 1 1 : 12 : 24 : 0.09
+T: 1 1 : 12 : 12 : 0.01
+T: 1 1 : 12 : 13 : 0.09
+T: 1 1 : 13 : 26 : 0.81
+T: 1 1 : 13 : 25 : 0.09
+T: 1 1 : 13 : 13 : 0.01
+T: 1 1 : 13 : 14 : 0.09
+T: 1 1 : 14 : 27 : 0.81
+T: 1 1 : 14 : 26 : 0.09
+T: 1 1 : 14 : 14 : 0.01
+T: 1 1 : 14 : 15 : 0.09
+T: 1 1 : 15 : 27 : 0.09
+T: 1 1 : 15 : 24 : 0.81
+T: 1 1 : 15 : 12 : 0.09
+T: 1 1 : 15 : 15 : 0.01
+T: 1 1 : 36 : 49 : 0.81
+T: 1 1 : 36 : 48 : 0.09
+T: 1 1 : 36 : 36 : 0.01
+T: 1 1 : 36 : 37 : 0.09
+T: 1 1 : 37 : 50 : 0.81
+T: 1 1 : 37 : 49 : 0.09
+T: 1 1 : 37 : 37 : 0.01
+T: 1 1 : 37 : 38 : 0.09
+T: 1 1 : 38 : 51 : 0.81
+T: 1 1 : 38 : 50 : 0.09
+T: 1 1 : 38 : 38 : 0.01
+T: 1 1 : 38 : 39 : 0.09
+T: 1 1 : 39 : 51 : 0.09
+T: 1 1 : 39 : 48 : 0.81
+T: 1 1 : 39 : 36 : 0.09
+T: 1 1 : 39 : 39 : 0.01
+T: 1 1 : 40 : 41 : 0.09
+T: 1 1 : 40 : 4 : 0.09
+T: 1 1 : 40 : 40 : 0.01
+T: 1 1 : 40 : 5 : 0.81
+T: 1 1 : 41 : 42 : 0.09
+T: 1 1 : 41 : 5 : 0.09
+T: 1 1 : 41 : 41 : 0.01
+T: 1 1 : 41 : 6 : 0.81
+T: 1 1 : 42 : 43 : 0.09
+T: 1 1 : 42 : 6 : 0.09
+T: 1 1 : 42 : 42 : 0.01
+T: 1 1 : 42 : 7 : 0.81
+T: 1 1 : 43 : 43 : 0.01
+T: 1 1 : 43 : 40 : 0.09
+T: 1 1 : 43 : 4 : 0.81
+T: 1 1 : 43 : 7 : 0.09
+T: 1 1 : 44 : 45 : 0.09
+T: 1 1 : 44 : 8 : 0.09
+T: 1 1 : 44 : 44 : 0.01
+T: 1 1 : 44 : 9 : 0.81
+T: 1 1 : 45 : 46 : 0.09
+T: 1 1 : 45 : 9 : 0.09
+T: 1 1 : 45 : 45 : 0.01
+T: 1 1 : 45 : 10 : 0.81
+T: 1 1 : 46 : 47 : 0.09
+T: 1 1 : 46 : 10 : 0.09
+T: 1 1 : 46 : 46 : 0.01
+T: 1 1 : 46 : 11 : 0.81
+T: 1 1 : 47 : 47 : 0.01
+T: 1 1 : 47 : 44 : 0.09
+T: 1 1 : 47 : 8 : 0.81
+T: 1 1 : 47 : 11 : 0.09
+T: 1 1 : 48 : 49 : 0.09
+T: 1 1 : 48 : 12 : 0.09
+T: 1 1 : 48 : 48 : 0.01
+T: 1 1 : 48 : 13 : 0.81
+T: 1 1 : 49 : 50 : 0.09
+T: 1 1 : 49 : 13 : 0.09
+T: 1 1 : 49 : 49 : 0.01
+T: 1 1 : 49 : 14 : 0.81
+T: 1 1 : 50 : 51 : 0.09
+T: 1 1 : 50 : 14 : 0.09
+T: 1 1 : 50 : 50 : 0.01
+T: 1 1 : 50 : 15 : 0.81
+T: 1 1 : 51 : 51 : 0.01
+T: 1 1 : 51 : 48 : 0.09
+T: 1 1 : 51 : 12 : 0.81
+T: 1 1 : 51 : 15 : 0.09
+T: 1 1 : 52 : 61 : 0.81
+T: 1 1 : 52 : 52 : 0.01
+T: 1 1 : 52 : 60 : 0.09
+T: 1 1 : 52 : 53 : 0.09
+T: 1 1 : 53 : 62 : 0.81
+T: 1 1 : 53 : 53 : 0.01
+T: 1 1 : 53 : 61 : 0.09
+T: 1 1 : 53 : 54 : 0.09
+T: 1 1 : 54 : 63 : 0.81
+T: 1 1 : 54 : 54 : 0.01
+T: 1 1 : 54 : 62 : 0.09
+T: 1 1 : 54 : 55 : 0.09
+T: 1 1 : 55 : 63 : 0.09
+T: 1 1 : 55 : 60 : 0.81
+T: 1 1 : 55 : 52 : 0.09
+T: 1 1 : 55 : 55 : 0.01
+T: 1 1 : 56 : 65 : 0.81
+T: 1 1 : 56 : 56 : 0.01
+T: 1 1 : 56 : 64 : 0.09
+T: 1 1 : 56 : 57 : 0.09
+T: 1 1 : 57 : 66 : 0.81
+T: 1 1 : 57 : 57 : 0.01
+T: 1 1 : 57 : 65 : 0.09
+T: 1 1 : 57 : 58 : 0.09
+T: 1 1 : 58 : 67 : 0.81
+T: 1 1 : 58 : 58 : 0.01
+T: 1 1 : 58 : 66 : 0.09
+T: 1 1 : 58 : 59 : 0.09
+T: 1 1 : 59 : 67 : 0.09
+T: 1 1 : 59 : 64 : 0.81
+T: 1 1 : 59 : 56 : 0.09
+T: 1 1 : 59 : 59 : 0.01
+T: 1 1 : 60 : 69 : 0.81
+T: 1 1 : 60 : 60 : 0.01
+T: 1 1 : 60 : 68 : 0.09
+T: 1 1 : 60 : 61 : 0.09
+T: 1 1 : 61 : 70 : 0.81
+T: 1 1 : 61 : 61 : 0.01
+T: 1 1 : 61 : 69 : 0.09
+T: 1 1 : 61 : 62 : 0.09
+T: 1 1 : 62 : 71 : 0.81
+T: 1 1 : 62 : 62 : 0.01
+T: 1 1 : 62 : 70 : 0.09
+T: 1 1 : 62 : 63 : 0.09
+T: 1 1 : 63 : 71 : 0.09
+T: 1 1 : 63 : 68 : 0.81
+T: 1 1 : 63 : 60 : 0.09
+T: 1 1 : 63 : 63 : 0.01
+T: 1 1 : 64 : 73 : 0.81
+T: 1 1 : 64 : 64 : 0.01
+T: 1 1 : 64 : 72 : 0.09
+T: 1 1 : 64 : 65 : 0.09
+T: 1 1 : 65 : 74 : 0.81
+T: 1 1 : 65 : 65 : 0.01
+T: 1 1 : 65 : 73 : 0.09
+T: 1 1 : 65 : 66 : 0.09
+T: 1 1 : 66 : 75 : 0.81
+T: 1 1 : 66 : 66 : 0.01
+T: 1 1 : 66 : 74 : 0.09
+T: 1 1 : 66 : 67 : 0.09
+T: 1 1 : 67 : 75 : 0.09
+T: 1 1 : 67 : 72 : 0.81
+T: 1 1 : 67 : 64 : 0.09
+T: 1 1 : 67 : 67 : 0.01
+T: 1 1 : 68 : 77 : 0.81
+T: 1 1 : 68 : 68 : 0.01
+T: 1 1 : 68 : 76 : 0.09
+T: 1 1 : 68 : 69 : 0.09
+T: 1 1 : 69 : 78 : 0.81
+T: 1 1 : 69 : 69 : 0.01
+T: 1 1 : 69 : 77 : 0.09
+T: 1 1 : 69 : 70 : 0.09
+T: 1 1 : 70 : 79 : 0.81
+T: 1 1 : 70 : 70 : 0.01
+T: 1 1 : 70 : 78 : 0.09
+T: 1 1 : 70 : 71 : 0.09
+T: 1 1 : 71 : 79 : 0.09
+T: 1 1 : 71 : 76 : 0.81
+T: 1 1 : 71 : 68 : 0.09
+T: 1 1 : 71 : 71 : 0.01
+T: 1 1 : 72 : 81 : 0.81
+T: 1 1 : 72 : 72 : 0.01
+T: 1 1 : 72 : 80 : 0.09
+T: 1 1 : 72 : 73 : 0.09
+T: 1 1 : 73 : 82 : 0.81
+T: 1 1 : 73 : 73 : 0.01
+T: 1 1 : 73 : 81 : 0.09
+T: 1 1 : 73 : 74 : 0.09
+T: 1 1 : 74 : 83 : 0.81
+T: 1 1 : 74 : 74 : 0.01
+T: 1 1 : 74 : 82 : 0.09
+T: 1 1 : 74 : 75 : 0.09
+T: 1 1 : 75 : 83 : 0.09
+T: 1 1 : 75 : 80 : 0.81
+T: 1 1 : 75 : 72 : 0.09
+T: 1 1 : 75 : 75 : 0.01
+T: 1 1 : 76 : 77 : 0.09
+T: 1 1 : 76 : 76 : 0.01
+T: 1 1 : 76 : 52 : 0.09
+T: 1 1 : 76 : 53 : 0.81
+T: 1 1 : 77 : 78 : 0.09
+T: 1 1 : 77 : 77 : 0.01
+T: 1 1 : 77 : 53 : 0.09
+T: 1 1 : 77 : 54 : 0.81
+O: 3 3 : 52 : 4 4  : 1
+O: 3 3 : 84 : 4 3  : 1
+O: 3 3 : 56 : 4 3  : 1
+O: 3 3 : 87 : 4 2  : 1
+O: 3 3 : 55 : 4 2  : 1
+O: 3 3 : 86 : 4 1  : 1
+O: 3 3 : 85 : 4 1  : 1
+O: 3 3 : 58 : 4 1  : 1
+O: 3 3 : 57 : 4 1  : 1
+O: 3 3 : 54 : 4 1  : 1
+O: 3 3 : 59 : 4 0  : 1
+O: 3 3 : 53 : 4 0  : 1
+O: 3 3 : 8 : 3 4  : 1
+O: 3 3 : 4 : 3 4  : 1
+O: 3 3 : 12 : 3 3  : 1
+O: 3 3 : 7 : 3 2  : 1
+O: 3 3 : 14 : 3 1  : 1
+O: 3 3 : 13 : 3 1  : 1
+O: 3 3 : 10 : 3 1  : 1
+O: 3 3 : 6 : 3 1  : 1
+O: 3 3 : 15 : 3 0  : 1
+O: 3 3 : 11 : 3 0  : 1
+O: 3 3 : 51 : 1 0  : 1
+O: 3 3 : 47 : 1 0  : 1
+O: 3 3 : 35 : 1 0  : 1
+O: 3 3 : 33 : 1 0  : 1
+O: 3 3 : 20 : 0 4  : 1
+O: 3 3 : 99 : 0 2  : 1
+O: 3 3 : 80 : 0 3  : 1
+O: 3 3 : 1 : 0 0  : 1
+O: 3 3 : 79 : 0 2  : 1
+O: 3 3 : 0 : 0 0  : 1
+O: 3 3 : 24 : 0 3  : 1
+O: 3 3 : 98 : 0 1  : 1
+O: 3 3 : 19 : 2 2  : 1
+O: 3 3 : 45 : 1 0  : 1
+O: 3 3 : 82 : 0 1  : 1
+O: 3 3 : 3 : 0 0  : 1
+O: 3 3 : 81 : 0 1  : 1
+O: 3 3 : 2 : 0 0  : 1
+O: 3 3 : 97 : 0 1  : 1
+O: 3 3 : 18 : 2 1  : 1
+O: 3 3 : 23 : 0 0  : 1
+O: 3 3 : 39 : 1 0  : 1
+O: 3 3 : 76 : 0 4  : 1
+O: 3 3 : 21 : 0 0  : 1
+O: 3 3 : 64 : 0 3  : 1
+O: 3 3 : 27 : 0 0  : 1
+O: 3 3 : 41 : 1 0  : 1
+O: 3 3 : 78 : 0 1  : 1
+O: 3 3 : 67 : 0 0  : 1
+O: 3 3 : 77 : 0 0  : 1
+O: 3 3 : 26 : 0 1  : 1
+O: 3 3 : 83 : 0 0  : 1
+O: 3 3 : 29 : 1 0  : 1
+O: 3 3 : 66 : 0 1  : 1
+O: 3 3 : 96 : 0 3  : 1
+O: 3 3 : 17 : 2 0  : 1
+O: 3 3 : 22 : 0 1  : 1
+O: 3 3 : 25 : 0 1  : 1
+O: 3 3 : 65 : 0 1  : 1
+O: 3 3 : 69 : 1 0  : 1
+O: 3 3 : 75 : 1 0  : 1
+O: 3 3 : 30 : 1 1  : 1
+O: 3 3 : 34 : 1 1  : 1
+O: 3 3 : 37 : 1 1  : 1
+O: 3 3 : 38 : 1 1  : 1
+O: 3 3 : 42 : 1 1  : 1
+O: 3 3 : 46 : 1 1  : 1
+O: 3 3 : 49 : 1 1  : 1
+O: 3 3 : 50 : 1 1  : 1
+O: 3 3 : 70 : 1 1  : 1
+O: 3 3 : 73 : 1 1  : 1
+O: 3 3 : 74 : 1 1  : 1
+O: 3 3 : 93 : 1 1  : 1
+O: 3 3 : 94 : 1 1  : 1
+O: 3 3 : 31 : 1 2  : 1
+O: 3 3 : 43 : 1 2  : 1
+O: 3 3 : 71 : 1 2  : 1
+O: 3 3 : 95 : 1 2  : 1
+O: 3 3 : 16 : 2 4  : 1
+O: 3 3 : 36 : 1 3  : 1
+O: 3 3 : 48 : 1 3  : 1
+O: 3 3 : 72 : 1 3  : 1
+O: 3 3 : 92 : 1 3  : 1
+O: 3 3 : 28 : 1 4  : 1
+O: 3 3 : 32 : 1 4  : 1
+O: 3 3 : 40 : 1 4  : 1
+O: 3 3 : 44 : 1 4  : 1
+O: 3 3 : 68 : 1 4  : 1
+O: 3 3 : 61 : 2 0  : 1
+O: 3 3 : 62 : 2 1  : 1
+O: 3 3 : 89 : 2 1  : 1
+O: 3 3 : 90 : 2 1  : 1
+O: 3 3 : 63 : 2 2  : 1
+O: 3 3 : 91 : 2 2  : 1
+O: 3 3 : 88 : 2 3  : 1
+O: 3 3 : 9 : 3 0  : 1
+O: 3 3 : 60 : 2 4  : 1
+O: 3 3 : 5 : 3 0  : 1
+O: 3 2 : 52 : 4 4  : 1
+O: 3 2 : 84 : 4 3  : 1
+O: 3 2 : 56 : 4 3  : 1
+O: 3 2 : 87 : 4 2  : 1
+O: 3 2 : 55 : 4 2  : 1
+O: 3 2 : 86 : 4 1  : 1
+O: 3 2 : 85 : 4 1  : 1
+O: 3 2 : 58 : 4 1  : 1
+O: 3 2 : 57 : 4 1  : 1
+O: 3 2 : 54 : 4 1  : 1
+O: 3 2 : 59 : 4 0  : 1
+O: 3 2 : 53 : 4 0  : 1
+O: 3 2 : 8 : 3 4  : 1
+O: 3 2 : 4 : 3 4  : 1
+O: 3 2 : 12 : 3 3  : 1
+O: 3 2 : 7 : 3 2  : 1
+O: 3 2 : 14 : 3 1  : 1
+O: 3 2 : 13 : 3 1  : 1
+O: 3 2 : 10 : 3 1  : 1
+O: 3 2 : 6 : 3 1  : 1
+O: 3 2 : 15 : 3 0  : 1
+O: 3 2 : 11 : 3 0  : 1
+O: 3 2 : 51 : 1 0  : 1
+O: 3 2 : 47 : 1 0  : 1
+O: 3 2 : 35 : 1 0  : 1
+O: 3 2 : 33 : 1 0  : 1
+O: 3 2 : 20 : 0 4  : 1
+O: 3 2 : 99 : 0 2  : 1
+O: 3 2 : 80 : 0 3  : 1
+O: 3 2 : 1 : 0 0  : 1
+O: 3 2 : 79 : 0 2  : 1
+O: 3 2 : 0 : 0 0  : 1
+O: 3 2 : 24 : 0 3  : 1
+O: 3 2 : 98 : 0 1  : 1
+O: 3 2 : 19 : 2 2  : 1
+O: 3 2 : 45 : 1 0  : 1
+O: 3 2 : 82 : 0 1  : 1
+O: 3 2 : 3 : 0 0  : 1
+O: 3 2 : 81 : 0 1  : 1
+O: 3 2 : 2 : 0 0  : 1
+O: 3 2 : 97 : 0 1  : 1
+O: 3 2 : 18 : 2 1  : 1
+O: 3 2 : 23 : 0 0  : 1
+O: 3 2 : 39 : 1 0  : 1
+O: 3 2 : 76 : 0 4  : 1
+O: 3 2 : 21 : 0 0  : 1
+O: 3 2 : 64 : 0 3  : 1
+O: 3 2 : 27 : 0 0  : 1
+O: 3 2 : 41 : 1 0  : 1
+O: 3 2 : 78 : 0 1  : 1
+O: 3 2 : 67 : 0 0  : 1
+O: 3 2 : 77 : 0 0  : 1
+O: 3 2 : 26 : 0 1  : 1
+O: 3 2 : 83 : 0 0  : 1
+O: 3 2 : 29 : 1 0  : 1
+O: 3 2 : 66 : 0 1  : 1
+O: 3 2 : 96 : 0 3  : 1
+O: 3 2 : 17 : 2 0  : 1
+O: 3 2 : 22 : 0 1  : 1
+O: 3 2 : 25 : 0 1  : 1
+O: 3 2 : 65 : 0 1  : 1
+O: 3 2 : 69 : 1 0  : 1
+O: 3 2 : 75 : 1 0  : 1
+O: 3 2 : 30 : 1 1  : 1
+O: 3 2 : 34 : 1 1  : 1
+O: 3 2 : 37 : 1 1  : 1
+O: 3 2 : 38 : 1 1  : 1
+O: 3 2 : 42 : 1 1  : 1
+O: 3 2 : 46 : 1 1  : 1
+O: 3 2 : 49 : 1 1  : 1
+O: 3 2 : 50 : 1 1  : 1
+O: 3 2 : 70 : 1 1  : 1
+O: 3 2 : 73 : 1 1  : 1
+O: 3 2 : 74 : 1 1  : 1
+O: 3 2 : 93 : 1 1  : 1
+O: 3 2 : 94 : 1 1  : 1
+O: 3 2 : 31 : 1 2  : 1
+O: 3 2 : 43 : 1 2  : 1
+O: 3 2 : 71 : 1 2  : 1
+O: 3 2 : 95 : 1 2  : 1
+O: 3 2 : 16 : 2 4  : 1
+O: 3 2 : 36 : 1 3  : 1
+O: 3 2 : 48 : 1 3  : 1
+O: 3 2 : 72 : 1 3  : 1
+O: 3 2 : 92 : 1 3  : 1
+O: 3 2 : 28 : 1 4  : 1
+O: 3 2 : 32 : 1 4  : 1
+O: 3 2 : 40 : 1 4  : 1
+O: 3 2 : 44 : 1 4  : 1
+O: 3 2 : 68 : 1 4  : 1
+O: 3 2 : 61 : 2 0  : 1
+O: 3 2 : 62 : 2 1  : 1
+O: 3 2 : 89 : 2 1  : 1
+O: 3 2 : 90 : 2 1  : 1
+O: 3 2 : 63 : 2 2  : 1
+O: 3 2 : 91 : 2 2  : 1
+O: 3 2 : 88 : 2 3  : 1
+O: 3 2 : 9 : 3 0  : 1
+O: 3 2 : 60 : 2 4  : 1
+O: 3 2 : 5 : 3 0  : 1
+O: 3 1 : 52 : 4 4  : 1
+O: 3 1 : 84 : 4 3  : 1
+O: 3 1 : 56 : 4 3  : 1
+O: 3 1 : 87 : 4 2  : 1
+O: 3 1 : 55 : 4 2  : 1
+O: 3 1 : 86 : 4 1  : 1
+O: 3 1 : 85 : 4 1  : 1
+O: 3 1 : 58 : 4 1  : 1
+O: 3 1 : 57 : 4 1  : 1
+O: 3 1 : 54 : 4 1  : 1
+O: 3 1 : 59 : 4 0  : 1
+O: 3 1 : 53 : 4 0  : 1
+O: 3 1 : 8 : 3 4  : 1
+O: 3 1 : 4 : 3 4  : 1
+O: 3 1 : 12 : 3 3  : 1
+O: 3 1 : 7 : 3 2  : 1
+O: 3 1 : 14 : 3 1  : 1
+O: 3 1 : 13 : 3 1  : 1
+O: 3 1 : 10 : 3 1  : 1
+O: 3 1 : 6 : 3 1  : 1
+O: 3 1 : 15 : 3 0  : 1
+O: 3 1 : 11 : 3 0  : 1
+O: 3 1 : 51 : 1 0  : 1
+O: 3 1 : 47 : 1 0  : 1
+O: 3 1 : 35 : 1 0  : 1
+O: 3 1 : 33 : 1 0  : 1
+O: 3 1 : 20 : 0 4  : 1
+O: 3 1 : 99 : 0 2  : 1
+O: 3 1 : 80 : 0 3  : 1
+O: 3 1 : 1 : 0 0  : 1
+O: 3 1 : 79 : 0 2  : 1
+O: 3 1 : 0 : 0 0  : 1
+O: 3 1 : 24 : 0 3  : 1
+O: 3 1 : 98 : 0 1  : 1
+O: 3 1 : 19 : 2 2  : 1
+O: 3 1 : 45 : 1 0  : 1
+O: 3 1 : 82 : 0 1  : 1
+O: 3 1 : 3 : 0 0  : 1
+O: 3 1 : 81 : 0 1  : 1
+O: 3 1 : 2 : 0 0  : 1
+O: 3 1 : 97 : 0 1  : 1
+O: 3 1 : 18 : 2 1  : 1
+O: 3 1 : 23 : 0 0  : 1
+O: 3 1 : 39 : 1 0  : 1
+O: 3 1 : 76 : 0 4  : 1
+O: 3 1 : 21 : 0 0  : 1
+O: 3 1 : 64 : 0 3  : 1
+O: 3 1 : 27 : 0 0  : 1
+O: 3 1 : 41 : 1 0  : 1
+O: 3 1 : 78 : 0 1  : 1
+O: 3 1 : 67 : 0 0  : 1
+O: 3 1 : 77 : 0 0  : 1
+O: 3 1 : 26 : 0 1  : 1
+O: 3 1 : 83 : 0 0  : 1
+O: 3 1 : 29 : 1 0  : 1
+O: 3 1 : 66 : 0 1  : 1
+O: 3 1 : 96 : 0 3  : 1
+O: 3 1 : 17 : 2 0  : 1
+O: 3 1 : 22 : 0 1  : 1
+O: 3 1 : 25 : 0 1  : 1
+O: 3 1 : 65 : 0 1  : 1
+O: 3 1 : 69 : 1 0  : 1
+O: 3 1 : 75 : 1 0  : 1
+O: 3 1 : 30 : 1 1  : 1
+O: 3 1 : 34 : 1 1  : 1
+O: 3 1 : 37 : 1 1  : 1
+O: 3 1 : 38 : 1 1  : 1
+O: 3 1 : 42 : 1 1  : 1
+O: 3 1 : 46 : 1 1  : 1
+O: 3 1 : 49 : 1 1  : 1
+O: 3 1 : 50 : 1 1  : 1
+O: 3 1 : 70 : 1 1  : 1
+O: 3 1 : 73 : 1 1  : 1
+O: 3 1 : 74 : 1 1  : 1
+O: 3 1 : 93 : 1 1  : 1
+O: 3 1 : 94 : 1 1  : 1
+O: 3 1 : 31 : 1 2  : 1
+O: 3 1 : 43 : 1 2  : 1
+O: 3 1 : 71 : 1 2  : 1
+O: 3 1 : 95 : 1 2  : 1
+O: 3 1 : 16 : 2 4  : 1
+O: 3 1 : 36 : 1 3  : 1
+O: 3 1 : 48 : 1 3  : 1
+O: 3 1 : 72 : 1 3  : 1
+O: 3 1 : 92 : 1 3  : 1
+O: 3 1 : 28 : 1 4  : 1
+O: 3 1 : 32 : 1 4  : 1
+O: 3 1 : 40 : 1 4  : 1
+O: 3 1 : 44 : 1 4  : 1
+O: 3 1 : 68 : 1 4  : 1
+O: 3 1 : 61 : 2 0  : 1
+O: 3 1 : 62 : 2 1  : 1
+O: 3 1 : 89 : 2 1  : 1
+O: 3 1 : 90 : 2 1  : 1
+O: 3 1 : 63 : 2 2  : 1
+O: 3 1 : 91 : 2 2  : 1
+O: 3 1 : 88 : 2 3  : 1
+O: 3 1 : 9 : 3 0  : 1
+O: 3 1 : 60 : 2 4  : 1
+O: 3 1 : 5 : 3 0  : 1
+O: 3 0 : 52 : 4 4  : 1
+O: 3 0 : 84 : 4 3  : 1
+O: 3 0 : 56 : 4 3  : 1
+O: 3 0 : 87 : 4 2  : 1
+O: 3 0 : 55 : 4 2  : 1
+O: 3 0 : 86 : 4 1  : 1
+O: 3 0 : 85 : 4 1  : 1
+O: 3 0 : 58 : 4 1  : 1
+O: 3 0 : 57 : 4 1  : 1
+O: 3 0 : 54 : 4 1  : 1
+O: 3 0 : 59 : 4 0  : 1
+O: 3 0 : 53 : 4 0  : 1
+O: 3 0 : 8 : 3 4  : 1
+O: 3 0 : 4 : 3 4  : 1
+O: 3 0 : 12 : 3 3  : 1
+O: 3 0 : 7 : 3 2  : 1
+O: 3 0 : 14 : 3 1  : 1
+O: 3 0 : 13 : 3 1  : 1
+O: 3 0 : 10 : 3 1  : 1
+O: 3 0 : 6 : 3 1  : 1
+O: 3 0 : 15 : 3 0  : 1
+O: 3 0 : 11 : 3 0  : 1
+O: 3 0 : 51 : 1 0  : 1
+O: 3 0 : 47 : 1 0  : 1
+O: 3 0 : 35 : 1 0  : 1
+O: 3 0 : 33 : 1 0  : 1
+O: 3 0 : 20 : 0 4  : 1
+O: 3 0 : 99 : 0 2  : 1
+O: 3 0 : 80 : 0 3  : 1
+O: 3 0 : 1 : 0 0  : 1
+O: 3 0 : 79 : 0 2  : 1
+O: 3 0 : 0 : 0 0  : 1
+O: 3 0 : 24 : 0 3  : 1
+O: 3 0 : 98 : 0 1  : 1
+O: 3 0 : 19 : 2 2  : 1
+O: 3 0 : 45 : 1 0  : 1
+O: 3 0 : 82 : 0 1  : 1
+O: 3 0 : 3 : 0 0  : 1
+O: 3 0 : 81 : 0 1  : 1
+O: 3 0 : 2 : 0 0  : 1
+O: 3 0 : 97 : 0 1  : 1
+O: 3 0 : 18 : 2 1  : 1
+O: 3 0 : 23 : 0 0  : 1
+O: 3 0 : 39 : 1 0  : 1
+O: 3 0 : 76 : 0 4  : 1
+O: 3 0 : 21 : 0 0  : 1
+O: 3 0 : 64 : 0 3  : 1
+O: 3 0 : 27 : 0 0  : 1
+O: 3 0 : 41 : 1 0  : 1
+O: 3 0 : 78 : 0 1  : 1
+O: 3 0 : 67 : 0 0  : 1
+O: 3 0 : 77 : 0 0  : 1
+O: 3 0 : 26 : 0 1  : 1
+O: 3 0 : 83 : 0 0  : 1
+O: 3 0 : 29 : 1 0  : 1
+O: 3 0 : 66 : 0 1  : 1
+O: 3 0 : 96 : 0 3  : 1
+O: 3 0 : 17 : 2 0  : 1
+O: 3 0 : 22 : 0 1  : 1
+O: 3 0 : 25 : 0 1  : 1
+O: 3 0 : 65 : 0 1  : 1
+O: 3 0 : 69 : 1 0  : 1
+O: 3 0 : 75 : 1 0  : 1
+O: 3 0 : 30 : 1 1  : 1
+O: 3 0 : 34 : 1 1  : 1
+O: 3 0 : 37 : 1 1  : 1
+O: 3 0 : 38 : 1 1  : 1
+O: 3 0 : 42 : 1 1  : 1
+O: 3 0 : 46 : 1 1  : 1
+O: 3 0 : 49 : 1 1  : 1
+O: 3 0 : 50 : 1 1  : 1
+O: 3 0 : 70 : 1 1  : 1
+O: 3 0 : 73 : 1 1  : 1
+O: 3 0 : 74 : 1 1  : 1
+O: 3 0 : 93 : 1 1  : 1
+O: 3 0 : 94 : 1 1  : 1
+O: 3 0 : 31 : 1 2  : 1
+O: 3 0 : 43 : 1 2  : 1
+O: 3 0 : 71 : 1 2  : 1
+O: 3 0 : 95 : 1 2  : 1
+O: 3 0 : 16 : 2 4  : 1
+O: 3 0 : 36 : 1 3  : 1
+O: 3 0 : 48 : 1 3  : 1
+O: 3 0 : 72 : 1 3  : 1
+O: 3 0 : 92 : 1 3  : 1
+O: 3 0 : 28 : 1 4  : 1
+O: 3 0 : 32 : 1 4  : 1
+O: 3 0 : 40 : 1 4  : 1
+O: 3 0 : 44 : 1 4  : 1
+O: 3 0 : 68 : 1 4  : 1
+O: 3 0 : 61 : 2 0  : 1
+O: 3 0 : 62 : 2 1  : 1
+O: 3 0 : 89 : 2 1  : 1
+O: 3 0 : 90 : 2 1  : 1
+O: 3 0 : 63 : 2 2  : 1
+O: 3 0 : 91 : 2 2  : 1
+O: 3 0 : 88 : 2 3  : 1
+O: 3 0 : 9 : 3 0  : 1
+O: 3 0 : 60 : 2 4  : 1
+O: 3 0 : 5 : 3 0  : 1
+O: 2 3 : 52 : 4 4  : 1
+O: 2 3 : 84 : 4 3  : 1
+O: 2 3 : 56 : 4 3  : 1
+O: 2 3 : 87 : 4 2  : 1
+O: 2 3 : 55 : 4 2  : 1
+O: 2 3 : 86 : 4 1  : 1
+O: 2 3 : 85 : 4 1  : 1
+O: 2 3 : 58 : 4 1  : 1
+O: 2 3 : 57 : 4 1  : 1
+O: 2 3 : 54 : 4 1  : 1
+O: 2 3 : 59 : 4 0  : 1
+O: 2 3 : 53 : 4 0  : 1
+O: 2 3 : 8 : 3 4  : 1
+O: 2 3 : 4 : 3 4  : 1
+O: 2 3 : 12 : 3 3  : 1
+O: 2 3 : 7 : 3 2  : 1
+O: 2 3 : 14 : 3 1  : 1
+O: 2 3 : 13 : 3 1  : 1
+O: 2 3 : 10 : 3 1  : 1
+O: 2 3 : 6 : 3 1  : 1
+O: 2 3 : 15 : 3 0  : 1
+O: 2 3 : 11 : 3 0  : 1
+O: 2 3 : 51 : 1 0  : 1
+O: 2 3 : 47 : 1 0  : 1
+O: 2 3 : 35 : 1 0  : 1
+O: 2 3 : 33 : 1 0  : 1
+O: 2 3 : 20 : 0 4  : 1
+O: 2 3 : 99 : 0 2  : 1
+O: 2 3 : 80 : 0 3  : 1
+O: 2 3 : 1 : 0 0  : 1
+O: 2 3 : 79 : 0 2  : 1
+O: 2 3 : 0 : 0 0  : 1
+O: 2 3 : 24 : 0 3  : 1
+O: 2 3 : 98 : 0 1  : 1
+O: 2 3 : 19 : 2 2  : 1
+O: 2 3 : 45 : 1 0  : 1
+O: 2 3 : 82 : 0 1  : 1
+O: 2 3 : 3 : 0 0  : 1
+O: 2 3 : 81 : 0 1  : 1
+O: 2 3 : 2 : 0 0  : 1
+O: 2 3 : 97 : 0 1  : 1
+O: 2 3 : 18 : 2 1  : 1
+O: 2 3 : 23 : 0 0  : 1
+O: 2 3 : 39 : 1 0  : 1
+O: 2 3 : 76 : 0 4  : 1
+O: 2 3 : 21 : 0 0  : 1
+O: 2 3 : 64 : 0 3  : 1
+O: 2 3 : 27 : 0 0  : 1
+O: 2 3 : 41 : 1 0  : 1
+O: 2 3 : 78 : 0 1  : 1
+O: 2 3 : 67 : 0 0  : 1
+O: 2 3 : 77 : 0 0  : 1
+O: 2 3 : 26 : 0 1  : 1
+O: 2 3 : 83 : 0 0  : 1
+O: 2 3 : 29 : 1 0  : 1
+O: 2 3 : 66 : 0 1  : 1
+O: 2 3 : 96 : 0 3  : 1
+O: 2 3 : 17 : 2 0  : 1
+O: 2 3 : 22 : 0 1  : 1
+O: 2 3 : 25 : 0 1  : 1
+O: 2 3 : 65 : 0 1  : 1
+O: 2 3 : 69 : 1 0  : 1
+O: 2 3 : 75 : 1 0  : 1
+O: 2 3 : 30 : 1 1  : 1
+O: 2 3 : 34 : 1 1  : 1
+O: 2 3 : 37 : 1 1  : 1
+O: 2 3 : 38 : 1 1  : 1
+O: 2 3 : 42 : 1 1  : 1
+O: 2 3 : 46 : 1 1  : 1
+O: 2 3 : 49 : 1 1  : 1
+O: 2 3 : 50 : 1 1  : 1
+O: 2 3 : 70 : 1 1  : 1
+O: 2 3 : 73 : 1 1  : 1
+O: 2 3 : 74 : 1 1  : 1
+O: 2 3 : 93 : 1 1  : 1
+O: 2 3 : 94 : 1 1  : 1
+O: 2 3 : 31 : 1 2  : 1
+O: 2 3 : 43 : 1 2  : 1
+O: 2 3 : 71 : 1 2  : 1
+O: 2 3 : 95 : 1 2  : 1
+O: 2 3 : 16 : 2 4  : 1
+O: 2 3 : 36 : 1 3  : 1
+O: 2 3 : 48 : 1 3  : 1
+O: 2 3 : 72 : 1 3  : 1
+O: 2 3 : 92 : 1 3  : 1
+O: 2 3 : 28 : 1 4  : 1
+O: 2 3 : 32 : 1 4  : 1
+O: 2 3 : 40 : 1 4  : 1
+O: 2 3 : 44 : 1 4  : 1
+O: 2 3 : 68 : 1 4  : 1
+O: 2 3 : 61 : 2 0  : 1
+O: 2 3 : 62 : 2 1  : 1
+O: 2 3 : 89 : 2 1  : 1
+O: 2 3 : 90 : 2 1  : 1
+O: 2 3 : 63 : 2 2  : 1
+O: 2 3 : 91 : 2 2  : 1
+O: 2 3 : 88 : 2 3  : 1
+O: 2 3 : 9 : 3 0  : 1
+O: 2 3 : 60 : 2 4  : 1
+O: 2 3 : 5 : 3 0  : 1
+O: 2 2 : 52 : 4 4  : 1
+O: 2 2 : 84 : 4 3  : 1
+O: 2 2 : 56 : 4 3  : 1
+O: 2 2 : 87 : 4 2  : 1
+O: 2 2 : 55 : 4 2  : 1
+O: 2 2 : 86 : 4 1  : 1
+O: 2 2 : 85 : 4 1  : 1
+O: 2 2 : 58 : 4 1  : 1
+O: 2 2 : 57 : 4 1  : 1
+O: 2 2 : 54 : 4 1  : 1
+O: 2 2 : 59 : 4 0  : 1
+O: 2 2 : 53 : 4 0  : 1
+O: 2 2 : 8 : 3 4  : 1
+O: 2 2 : 4 : 3 4  : 1
+O: 2 2 : 12 : 3 3  : 1
+O: 2 2 : 7 : 3 2  : 1
+O: 2 2 : 14 : 3 1  : 1
+O: 2 2 : 13 : 3 1  : 1
+O: 2 2 : 10 : 3 1  : 1
+O: 2 2 : 6 : 3 1  : 1
+O: 2 2 : 15 : 3 0  : 1
+O: 2 2 : 11 : 3 0  : 1
+O: 2 2 : 51 : 1 0  : 1
+O: 2 2 : 47 : 1 0  : 1
+O: 2 2 : 35 : 1 0  : 1
+O: 2 2 : 33 : 1 0  : 1
+O: 2 2 : 20 : 0 4  : 1
+O: 2 2 : 99 : 0 2  : 1
+O: 2 2 : 80 : 0 3  : 1
+O: 2 2 : 1 : 0 0  : 1
+O: 2 2 : 79 : 0 2  : 1
+O: 2 2 : 0 : 0 0  : 1
+O: 2 2 : 24 : 0 3  : 1
+O: 2 2 : 98 : 0 1  : 1
+O: 2 2 : 19 : 2 2  : 1
+O: 2 2 : 45 : 1 0  : 1
+O: 2 2 : 82 : 0 1  : 1
+O: 2 2 : 3 : 0 0  : 1
+O: 2 2 : 81 : 0 1  : 1
+O: 2 2 : 2 : 0 0  : 1
+O: 2 2 : 97 : 0 1  : 1
+O: 2 2 : 18 : 2 1  : 1
+O: 2 2 : 23 : 0 0  : 1
+O: 2 2 : 39 : 1 0  : 1
+O: 2 2 : 76 : 0 4  : 1
+O: 2 2 : 21 : 0 0  : 1
+O: 2 2 : 64 : 0 3  : 1
+O: 2 2 : 27 : 0 0  : 1
+O: 2 2 : 41 : 1 0  : 1
+O: 2 2 : 78 : 0 1  : 1
+O: 2 2 : 67 : 0 0  : 1
+O: 2 2 : 77 : 0 0  : 1
+O: 2 2 : 26 : 0 1  : 1
+O: 2 2 : 83 : 0 0  : 1
+O: 2 2 : 29 : 1 0  : 1
+O: 2 2 : 66 : 0 1  : 1
+O: 2 2 : 96 : 0 3  : 1
+O: 2 2 : 17 : 2 0  : 1
+O: 2 2 : 22 : 0 1  : 1
+O: 2 2 : 25 : 0 1  : 1
+O: 2 2 : 65 : 0 1  : 1
+O: 2 2 : 69 : 1 0  : 1
+O: 2 2 : 75 : 1 0  : 1
+O: 2 2 : 30 : 1 1  : 1
+O: 2 2 : 34 : 1 1  : 1
+O: 2 2 : 37 : 1 1  : 1
+O: 2 2 : 38 : 1 1  : 1
+O: 2 2 : 42 : 1 1  : 1
+O: 2 2 : 46 : 1 1  : 1
+O: 2 2 : 49 : 1 1  : 1
+O: 2 2 : 50 : 1 1  : 1
+O: 2 2 : 70 : 1 1  : 1
+O: 2 2 : 73 : 1 1  : 1
+O: 2 2 : 74 : 1 1  : 1
+O: 2 2 : 93 : 1 1  : 1
+O: 2 2 : 94 : 1 1  : 1
+O: 2 2 : 31 : 1 2  : 1
+O: 2 2 : 43 : 1 2  : 1
+O: 2 2 : 71 : 1 2  : 1
+O: 2 2 : 95 : 1 2  : 1
+O: 2 2 : 16 : 2 4  : 1
+O: 2 2 : 36 : 1 3  : 1
+O: 2 2 : 48 : 1 3  : 1
+O: 2 2 : 72 : 1 3  : 1
+O: 2 2 : 92 : 1 3  : 1
+O: 2 2 : 28 : 1 4  : 1
+O: 2 2 : 32 : 1 4  : 1
+O: 2 2 : 40 : 1 4  : 1
+O: 2 2 : 44 : 1 4  : 1
+O: 2 2 : 68 : 1 4  : 1
+O: 2 2 : 61 : 2 0  : 1
+O: 2 2 : 62 : 2 1  : 1
+O: 2 2 : 89 : 2 1  : 1
+O: 2 2 : 90 : 2 1  : 1
+O: 2 2 : 63 : 2 2  : 1
+O: 2 2 : 91 : 2 2  : 1
+O: 2 2 : 88 : 2 3  : 1
+O: 2 2 : 9 : 3 0  : 1
+O: 2 2 : 60 : 2 4  : 1
+O: 2 2 : 5 : 3 0  : 1
+O: 2 1 : 52 : 4 4  : 1
+O: 2 1 : 84 : 4 3  : 1
+O: 2 1 : 56 : 4 3  : 1
+O: 2 1 : 87 : 4 2  : 1
+O: 2 1 : 55 : 4 2  : 1
+O: 2 1 : 86 : 4 1  : 1
+O: 2 1 : 85 : 4 1  : 1
+O: 2 1 : 58 : 4 1  : 1
+O: 2 1 : 57 : 4 1  : 1
+O: 2 1 : 54 : 4 1  : 1
+O: 2 1 : 59 : 4 0  : 1
+O: 2 1 : 53 : 4 0  : 1
+O: 2 1 : 8 : 3 4  : 1
+O: 2 1 : 4 : 3 4  : 1
+O: 2 1 : 12 : 3 3  : 1
+O: 2 1 : 7 : 3 2  : 1
+O: 2 1 : 14 : 3 1  : 1
+O: 2 1 : 13 : 3 1  : 1
+O: 2 1 : 10 : 3 1  : 1
+O: 2 1 : 6 : 3 1  : 1
+O: 2 1 : 15 : 3 0  : 1
+O: 2 1 : 11 : 3 0  : 1
+O: 2 1 : 51 : 1 0  : 1
+O: 2 1 : 47 : 1 0  : 1
+O: 2 1 : 35 : 1 0  : 1
+O: 2 1 : 33 : 1 0  : 1
+O: 2 1 : 20 : 0 4  : 1
+O: 2 1 : 99 : 0 2  : 1
+O: 2 1 : 80 : 0 3  : 1
+O: 2 1 : 1 : 0 0  : 1
+O: 2 1 : 79 : 0 2  : 1
+O: 2 1 : 0 : 0 0  : 1
+O: 2 1 : 24 : 0 3  : 1
+O: 2 1 : 98 : 0 1  : 1
+O: 2 1 : 19 : 2 2  : 1
+O: 2 1 : 45 : 1 0  : 1
+O: 2 1 : 82 : 0 1  : 1
+O: 2 1 : 3 : 0 0  : 1
+O: 2 1 : 81 : 0 1  : 1
+O: 2 1 : 2 : 0 0  : 1
+O: 2 1 : 97 : 0 1  : 1
+O: 2 1 : 18 : 2 1  : 1
+O: 2 1 : 23 : 0 0  : 1
+O: 2 1 : 39 : 1 0  : 1
+O: 2 1 : 76 : 0 4  : 1
+O: 2 1 : 21 : 0 0  : 1
+O: 2 1 : 64 : 0 3  : 1
+O: 2 1 : 27 : 0 0  : 1
+O: 2 1 : 41 : 1 0  : 1
+O: 2 1 : 78 : 0 1  : 1
+O: 2 1 : 67 : 0 0  : 1
+O: 2 1 : 77 : 0 0  : 1
+O: 2 1 : 26 : 0 1  : 1
+O: 2 1 : 83 : 0 0  : 1
+O: 2 1 : 29 : 1 0  : 1
+O: 2 1 : 66 : 0 1  : 1
+O: 2 1 : 96 : 0 3  : 1
+O: 2 1 : 17 : 2 0  : 1
+O: 2 1 : 22 : 0 1  : 1
+O: 2 1 : 25 : 0 1  : 1
+O: 2 1 : 65 : 0 1  : 1
+O: 2 1 : 69 : 1 0  : 1
+O: 2 1 : 75 : 1 0  : 1
+O: 2 1 : 30 : 1 1  : 1
+O: 2 1 : 34 : 1 1  : 1
+O: 2 1 : 37 : 1 1  : 1
+O: 2 1 : 38 : 1 1  : 1
+O: 2 1 : 42 : 1 1  : 1
+O: 2 1 : 46 : 1 1  : 1
+O: 2 1 : 49 : 1 1  : 1
+O: 2 1 : 50 : 1 1  : 1
+O: 2 1 : 70 : 1 1  : 1
+O: 2 1 : 73 : 1 1  : 1
+O: 2 1 : 74 : 1 1  : 1
+O: 2 1 : 93 : 1 1  : 1
+O: 2 1 : 94 : 1 1  : 1
+O: 2 1 : 31 : 1 2  : 1
+O: 2 1 : 43 : 1 2  : 1
+O: 2 1 : 71 : 1 2  : 1
+O: 2 1 : 95 : 1 2  : 1
+O: 2 1 : 16 : 2 4  : 1
+O: 2 1 : 36 : 1 3  : 1
+O: 2 1 : 48 : 1 3  : 1
+O: 2 1 : 72 : 1 3  : 1
+O: 2 1 : 92 : 1 3  : 1
+O: 2 1 : 28 : 1 4  : 1
+O: 2 1 : 32 : 1 4  : 1
+O: 2 1 : 40 : 1 4  : 1
+O: 2 1 : 44 : 1 4  : 1
+O: 2 1 : 68 : 1 4  : 1
+O: 2 1 : 61 : 2 0  : 1
+O: 2 1 : 62 : 2 1  : 1
+O: 2 1 : 89 : 2 1  : 1
+O: 2 1 : 90 : 2 1  : 1
+O: 2 1 : 63 : 2 2  : 1
+O: 2 1 : 91 : 2 2  : 1
+O: 2 1 : 88 : 2 3  : 1
+O: 2 1 : 9 : 3 0  : 1
+O: 2 1 : 60 : 2 4  : 1
+O: 2 1 : 5 : 3 0  : 1
+O: 2 0 : 52 : 4 4  : 1
+O: 2 0 : 84 : 4 3  : 1
+O: 2 0 : 56 : 4 3  : 1
+O: 2 0 : 87 : 4 2  : 1
+O: 2 0 : 55 : 4 2  : 1
+O: 2 0 : 86 : 4 1  : 1
+O: 2 0 : 85 : 4 1  : 1
+O: 2 0 : 58 : 4 1  : 1
+O: 2 0 : 57 : 4 1  : 1
+O: 2 0 : 54 : 4 1  : 1
+O: 2 0 : 59 : 4 0  : 1
+O: 2 0 : 53 : 4 0  : 1
+O: 2 0 : 8 : 3 4  : 1
+O: 2 0 : 4 : 3 4  : 1
+O: 2 0 : 12 : 3 3  : 1
+O: 2 0 : 7 : 3 2  : 1
+O: 2 0 : 14 : 3 1  : 1
+O: 2 0 : 13 : 3 1  : 1
+O: 2 0 : 10 : 3 1  : 1
+O: 2 0 : 6 : 3 1  : 1
+O: 2 0 : 15 : 3 0  : 1
+O: 2 0 : 11 : 3 0  : 1
+O: 2 0 : 51 : 1 0  : 1
+O: 2 0 : 47 : 1 0  : 1
+O: 2 0 : 35 : 1 0  : 1
+O: 2 0 : 33 : 1 0  : 1
+O: 2 0 : 20 : 0 4  : 1
+O: 2 0 : 99 : 0 2  : 1
+O: 2 0 : 80 : 0 3  : 1
+O: 2 0 : 1 : 0 0  : 1
+O: 2 0 : 79 : 0 2  : 1
+O: 2 0 : 0 : 0 0  : 1
+O: 2 0 : 24 : 0 3  : 1
+O: 2 0 : 98 : 0 1  : 1
+O: 2 0 : 19 : 2 2  : 1
+O: 2 0 : 45 : 1 0  : 1
+O: 2 0 : 82 : 0 1  : 1
+O: 2 0 : 3 : 0 0  : 1
+O: 2 0 : 81 : 0 1  : 1
+O: 2 0 : 2 : 0 0  : 1
+O: 2 0 : 97 : 0 1  : 1
+O: 2 0 : 18 : 2 1  : 1
+O: 2 0 : 23 : 0 0  : 1
+O: 2 0 : 39 : 1 0  : 1
+O: 2 0 : 76 : 0 4  : 1
+O: 2 0 : 21 : 0 0  : 1
+O: 2 0 : 64 : 0 3  : 1
+O: 2 0 : 27 : 0 0  : 1
+O: 2 0 : 41 : 1 0  : 1
+O: 2 0 : 78 : 0 1  : 1
+O: 2 0 : 67 : 0 0  : 1
+O: 2 0 : 77 : 0 0  : 1
+O: 2 0 : 26 : 0 1  : 1
+O: 2 0 : 83 : 0 0  : 1
+O: 2 0 : 29 : 1 0  : 1
+O: 2 0 : 66 : 0 1  : 1
+O: 2 0 : 96 : 0 3  : 1
+O: 2 0 : 17 : 2 0  : 1
+O: 2 0 : 22 : 0 1  : 1
+O: 2 0 : 25 : 0 1  : 1
+O: 2 0 : 65 : 0 1  : 1
+O: 2 0 : 69 : 1 0  : 1
+O: 2 0 : 75 : 1 0  : 1
+O: 2 0 : 30 : 1 1  : 1
+O: 2 0 : 34 : 1 1  : 1
+O: 2 0 : 37 : 1 1  : 1
+O: 2 0 : 38 : 1 1  : 1
+O: 2 0 : 42 : 1 1  : 1
+O: 2 0 : 46 : 1 1  : 1
+O: 2 0 : 49 : 1 1  : 1
+O: 2 0 : 50 : 1 1  : 1
+O: 2 0 : 70 : 1 1  : 1
+O: 2 0 : 73 : 1 1  : 1
+O: 2 0 : 74 : 1 1  : 1
+O: 2 0 : 93 : 1 1  : 1
+O: 2 0 : 94 : 1 1  : 1
+O: 2 0 : 31 : 1 2  : 1
+O: 2 0 : 43 : 1 2  : 1
+O: 2 0 : 71 : 1 2  : 1
+O: 2 0 : 95 : 1 2  : 1
+O: 2 0 : 16 : 2 4  : 1
+O: 2 0 : 36 : 1 3  : 1
+O: 2 0 : 48 : 1 3  : 1
+O: 2 0 : 72 : 1 3  : 1
+O: 2 0 : 92 : 1 3  : 1
+O: 2 0 : 28 : 1 4  : 1
+O: 2 0 : 32 : 1 4  : 1
+O: 2 0 : 40 : 1 4  : 1
+O: 2 0 : 44 : 1 4  : 1
+O: 2 0 : 68 : 1 4  : 1
+O: 2 0 : 61 : 2 0  : 1
+O: 2 0 : 62 : 2 1  : 1
+O: 2 0 : 89 : 2 1  : 1
+O: 2 0 : 90 : 2 1  : 1
+O: 2 0 : 63 : 2 2  : 1
+O: 2 0 : 91 : 2 2  : 1
+O: 2 0 : 88 : 2 3  : 1
+O: 2 0 : 9 : 3 0  : 1
+O: 2 0 : 60 : 2 4  : 1
+O: 2 0 : 5 : 3 0  : 1
+O: 1 3 : 52 : 4 4  : 1
+O: 1 3 : 84 : 4 3  : 1
+O: 1 3 : 56 : 4 3  : 1
+O: 1 3 : 87 : 4 2  : 1
+O: 1 3 : 55 : 4 2  : 1
+O: 1 3 : 86 : 4 1  : 1
+O: 1 3 : 85 : 4 1  : 1
+O: 1 3 : 58 : 4 1  : 1
+O: 1 3 : 57 : 4 1  : 1
+O: 1 3 : 54 : 4 1  : 1
+O: 1 3 : 59 : 4 0  : 1
+O: 1 3 : 53 : 4 0  : 1
+O: 1 3 : 8 : 3 4  : 1
+O: 1 3 : 4 : 3 4  : 1
+O: 1 3 : 12 : 3 3  : 1
+O: 1 3 : 7 : 3 2  : 1
+O: 1 3 : 14 : 3 1  : 1
+O: 1 3 : 13 : 3 1  : 1
+O: 1 3 : 10 : 3 1  : 1
+O: 1 3 : 6 : 3 1  : 1
+O: 1 3 : 15 : 3 0  : 1
+O: 1 3 : 11 : 3 0  : 1
+O: 1 3 : 51 : 1 0  : 1
+O: 1 3 : 47 : 1 0  : 1
+O: 1 3 : 35 : 1 0  : 1
+O: 1 3 : 33 : 1 0  : 1
+O: 1 3 : 20 : 0 4  : 1
+O: 1 3 : 99 : 0 2  : 1
+O: 1 3 : 80 : 0 3  : 1
+O: 1 3 : 1 : 0 0  : 1
+O: 1 3 : 79 : 0 2  : 1
+O: 1 3 : 0 : 0 0  : 1
+O: 1 3 : 24 : 0 3  : 1
+O: 1 3 : 98 : 0 1  : 1
+O: 1 3 : 19 : 2 2  : 1
+O: 1 3 : 45 : 1 0  : 1
+O: 1 3 : 82 : 0 1  : 1
+O: 1 3 : 3 : 0 0  : 1
+O: 1 3 : 81 : 0 1  : 1
+O: 1 3 : 2 : 0 0  : 1
+O: 1 3 : 97 : 0 1  : 1
+O: 1 3 : 18 : 2 1  : 1
+O: 1 3 : 23 : 0 0  : 1
+O: 1 3 : 39 : 1 0  : 1
+O: 1 3 : 76 : 0 4  : 1
+O: 1 3 : 21 : 0 0  : 1
+O: 1 3 : 64 : 0 3  : 1
+O: 1 3 : 27 : 0 0  : 1
+O: 1 3 : 41 : 1 0  : 1
+O: 1 3 : 78 : 0 1  : 1
+O: 1 3 : 67 : 0 0  : 1
+O: 1 3 : 77 : 0 0  : 1
+O: 1 3 : 26 : 0 1  : 1
+O: 1 3 : 83 : 0 0  : 1
+O: 1 3 : 29 : 1 0  : 1
+O: 1 3 : 66 : 0 1  : 1
+O: 1 3 : 96 : 0 3  : 1
+O: 1 3 : 17 : 2 0  : 1
+O: 1 3 : 22 : 0 1  : 1
+O: 1 3 : 25 : 0 1  : 1
+O: 1 3 : 65 : 0 1  : 1
+O: 1 3 : 69 : 1 0  : 1
+O: 1 3 : 75 : 1 0  : 1
+O: 1 3 : 30 : 1 1  : 1
+O: 1 3 : 34 : 1 1  : 1
+O: 1 3 : 37 : 1 1  : 1
+O: 1 3 : 38 : 1 1  : 1
+O: 1 3 : 42 : 1 1  : 1
+O: 1 3 : 46 : 1 1  : 1
+O: 1 3 : 49 : 1 1  : 1
+O: 1 3 : 50 : 1 1  : 1
+O: 1 3 : 70 : 1 1  : 1
+O: 1 3 : 73 : 1 1  : 1
+O: 1 3 : 74 : 1 1  : 1
+O: 1 3 : 93 : 1 1  : 1
+O: 1 3 : 94 : 1 1  : 1
+O: 1 3 : 31 : 1 2  : 1
+O: 1 3 : 43 : 1 2  : 1
+O: 1 3 : 71 : 1 2  : 1
+O: 1 3 : 95 : 1 2  : 1
+O: 1 3 : 16 : 2 4  : 1
+O: 1 3 : 36 : 1 3  : 1
+O: 1 3 : 48 : 1 3  : 1
+O: 1 3 : 72 : 1 3  : 1
+O: 1 3 : 92 : 1 3  : 1
+O: 1 3 : 28 : 1 4  : 1
+O: 1 3 : 32 : 1 4  : 1
+O: 1 3 : 40 : 1 4  : 1
+O: 1 3 : 44 : 1 4  : 1
+O: 1 3 : 68 : 1 4  : 1
+O: 1 3 : 61 : 2 0  : 1
+O: 1 3 : 62 : 2 1  : 1
+O: 1 3 : 89 : 2 1  : 1
+O: 1 3 : 90 : 2 1  : 1
+O: 1 3 : 63 : 2 2  : 1
+O: 1 3 : 91 : 2 2  : 1
+O: 1 3 : 88 : 2 3  : 1
+O: 1 3 : 9 : 3 0  : 1
+O: 1 3 : 60 : 2 4  : 1
+O: 1 3 : 5 : 3 0  : 1
+O: 1 2 : 52 : 4 4  : 1
+O: 1 2 : 84 : 4 3  : 1
+O: 1 2 : 56 : 4 3  : 1
+O: 1 2 : 87 : 4 2  : 1
+O: 1 2 : 55 : 4 2  : 1
+O: 1 2 : 86 : 4 1  : 1
+O: 1 2 : 85 : 4 1  : 1
+O: 1 2 : 58 : 4 1  : 1
+O: 1 2 : 57 : 4 1  : 1
+O: 1 2 : 54 : 4 1  : 1
+O: 1 2 : 59 : 4 0  : 1
+O: 1 2 : 53 : 4 0  : 1
+O: 1 2 : 8 : 3 4  : 1
+O: 1 2 : 4 : 3 4  : 1
+O: 1 2 : 12 : 3 3  : 1
+O: 1 2 : 7 : 3 2  : 1
+O: 1 2 : 14 : 3 1  : 1
+O: 1 2 : 13 : 3 1  : 1
+O: 1 2 : 10 : 3 1  : 1
+O: 1 2 : 6 : 3 1  : 1
+O: 1 2 : 15 : 3 0  : 1
+O: 1 2 : 11 : 3 0  : 1
+O: 1 2 : 51 : 1 0  : 1
+O: 1 2 : 47 : 1 0  : 1
+O: 1 2 : 35 : 1 0  : 1
+O: 1 2 : 33 : 1 0  : 1
+O: 1 2 : 20 : 0 4  : 1
+O: 1 2 : 99 : 0 2  : 1
+O: 1 2 : 80 : 0 3  : 1
+O: 1 2 : 1 : 0 0  : 1
+O: 1 2 : 79 : 0 2  : 1
+O: 1 2 : 0 : 0 0  : 1
+O: 1 2 : 24 : 0 3  : 1
+O: 1 2 : 98 : 0 1  : 1
+O: 1 2 : 19 : 2 2  : 1
+O: 1 2 : 45 : 1 0  : 1
+O: 1 2 : 82 : 0 1  : 1
+O: 1 2 : 3 : 0 0  : 1
+O: 1 2 : 81 : 0 1  : 1
+O: 1 2 : 2 : 0 0  : 1
+O: 1 2 : 97 : 0 1  : 1
+O: 1 2 : 18 : 2 1  : 1
+O: 1 2 : 23 : 0 0  : 1
+O: 1 2 : 39 : 1 0  : 1
+O: 1 2 : 76 : 0 4  : 1
+O: 1 2 : 21 : 0 0  : 1
+O: 1 2 : 64 : 0 3  : 1
+O: 1 2 : 27 : 0 0  : 1
+O: 1 2 : 41 : 1 0  : 1
+O: 1 2 : 78 : 0 1  : 1
+O: 1 2 : 67 : 0 0  : 1
+O: 1 2 : 77 : 0 0  : 1
+O: 1 2 : 26 : 0 1  : 1
+O: 1 2 : 83 : 0 0  : 1
+O: 1 2 : 29 : 1 0  : 1
+O: 1 2 : 66 : 0 1  : 1
+O: 1 2 : 96 : 0 3  : 1
+O: 1 2 : 17 : 2 0  : 1
+O: 1 2 : 22 : 0 1  : 1
+O: 1 2 : 25 : 0 1  : 1
+O: 1 2 : 65 : 0 1  : 1
+O: 1 2 : 69 : 1 0  : 1
+O: 1 2 : 75 : 1 0  : 1
+O: 1 2 : 30 : 1 1  : 1
+O: 1 2 : 34 : 1 1  : 1
+O: 1 2 : 37 : 1 1  : 1
+O: 1 2 : 38 : 1 1  : 1
+O: 1 2 : 42 : 1 1  : 1
+O: 1 2 : 46 : 1 1  : 1
+O: 1 2 : 49 : 1 1  : 1
+O: 1 2 : 50 : 1 1  : 1
+O: 1 2 : 70 : 1 1  : 1
+O: 1 2 : 73 : 1 1  : 1
+O: 1 2 : 74 : 1 1  : 1
+O: 1 2 : 93 : 1 1  : 1
+O: 1 2 : 94 : 1 1  : 1
+O: 1 2 : 31 : 1 2  : 1
+O: 1 2 : 43 : 1 2  : 1
+O: 1 2 : 71 : 1 2  : 1
+O: 1 2 : 95 : 1 2  : 1
+O: 1 2 : 16 : 2 4  : 1
+O: 1 2 : 36 : 1 3  : 1
+O: 1 2 : 48 : 1 3  : 1
+O: 1 2 : 72 : 1 3  : 1
+O: 1 2 : 92 : 1 3  : 1
+O: 1 2 : 28 : 1 4  : 1
+O: 1 2 : 32 : 1 4  : 1
+O: 1 2 : 40 : 1 4  : 1
+O: 1 2 : 44 : 1 4  : 1
+O: 1 2 : 68 : 1 4  : 1
+O: 1 2 : 61 : 2 0  : 1
+O: 1 2 : 62 : 2 1  : 1
+O: 1 2 : 89 : 2 1  : 1
+O: 1 2 : 90 : 2 1  : 1
+O: 1 2 : 63 : 2 2  : 1
+O: 1 2 : 91 : 2 2  : 1
+O: 1 2 : 88 : 2 3  : 1
+O: 1 2 : 9 : 3 0  : 1
+O: 1 2 : 60 : 2 4  : 1
+O: 1 2 : 5 : 3 0  : 1
+O: 0 1 : 52 : 4 4  : 1
+O: 0 1 : 84 : 4 3  : 1
+O: 0 1 : 56 : 4 3  : 1
+O: 0 1 : 87 : 4 2  : 1
+O: 0 1 : 55 : 4 2  : 1
+O: 0 1 : 86 : 4 1  : 1
+O: 0 1 : 85 : 4 1  : 1
+O: 0 1 : 58 : 4 1  : 1
+O: 0 1 : 57 : 4 1  : 1
+O: 0 1 : 54 : 4 1  : 1
+O: 0 1 : 59 : 4 0  : 1
+O: 0 1 : 53 : 4 0  : 1
+O: 0 1 : 8 : 3 4  : 1
+O: 0 1 : 4 : 3 4  : 1
+O: 0 1 : 12 : 3 3  : 1
+O: 0 1 : 7 : 3 2  : 1
+O: 0 1 : 14 : 3 1  : 1
+O: 0 1 : 13 : 3 1  : 1
+O: 0 1 : 10 : 3 1  : 1
+O: 0 1 : 6 : 3 1  : 1
+O: 0 1 : 15 : 3 0  : 1
+O: 0 1 : 11 : 3 0  : 1
+O: 0 1 : 51 : 1 0  : 1
+O: 0 1 : 47 : 1 0  : 1
+O: 0 1 : 35 : 1 0  : 1
+O: 0 1 : 33 : 1 0  : 1
+O: 0 1 : 20 : 0 4  : 1
+O: 0 1 : 99 : 0 2  : 1
+O: 0 1 : 80 : 0 3  : 1
+O: 0 1 : 1 : 0 0  : 1
+O: 0 1 : 79 : 0 2  : 1
+O: 0 1 : 0 : 0 0  : 1
+O: 0 1 : 24 : 0 3  : 1
+O: 0 1 : 98 : 0 1  : 1
+O: 0 1 : 19 : 2 2  : 1
+O: 0 1 : 45 : 1 0  : 1
+O: 0 1 : 82 : 0 1  : 1
+O: 0 1 : 3 : 0 0  : 1
+O: 0 1 : 81 : 0 1  : 1
+O: 0 1 : 2 : 0 0  : 1
+O: 0 1 : 97 : 0 1  : 1
+O: 0 1 : 18 : 2 1  : 1
+O: 0 1 : 23 : 0 0  : 1
+O: 0 1 : 39 : 1 0  : 1
+O: 0 1 : 76 : 0 4  : 1
+O: 0 1 : 21 : 0 0  : 1
+O: 0 1 : 64 : 0 3  : 1
+O: 0 1 : 27 : 0 0  : 1
+O: 0 1 : 41 : 1 0  : 1
+O: 0 1 : 78 : 0 1  : 1
+O: 0 1 : 67 : 0 0  : 1
+O: 0 1 : 77 : 0 0  : 1
+O: 0 1 : 26 : 0 1  : 1
+O: 0 1 : 83 : 0 0  : 1
+O: 0 1 : 29 : 1 0  : 1
+O: 0 1 : 66 : 0 1  : 1
+O: 0 1 : 96 : 0 3  : 1
+O: 0 1 : 17 : 2 0  : 1
+O: 0 1 : 22 : 0 1  : 1
+O: 0 1 : 25 : 0 1  : 1
+O: 0 1 : 65 : 0 1  : 1
+O: 0 1 : 69 : 1 0  : 1
+O: 0 1 : 75 : 1 0  : 1
+O: 0 1 : 30 : 1 1  : 1
+O: 0 1 : 34 : 1 1  : 1
+O: 0 1 : 37 : 1 1  : 1
+O: 0 1 : 38 : 1 1  : 1
+O: 0 1 : 42 : 1 1  : 1
+O: 0 1 : 46 : 1 1  : 1
+O: 0 1 : 49 : 1 1  : 1
+O: 0 1 : 50 : 1 1  : 1
+O: 0 1 : 70 : 1 1  : 1
+O: 0 1 : 73 : 1 1  : 1
+O: 0 1 : 74 : 1 1  : 1
+O: 0 1 : 93 : 1 1  : 1
+O: 0 1 : 94 : 1 1  : 1
+O: 0 1 : 31 : 1 2  : 1
+O: 0 1 : 43 : 1 2  : 1
+O: 0 1 : 71 : 1 2  : 1
+O: 0 1 : 95 : 1 2  : 1
+O: 0 1 : 16 : 2 4  : 1
+O: 0 1 : 36 : 1 3  : 1
+O: 0 1 : 48 : 1 3  : 1
+O: 0 1 : 72 : 1 3  : 1
+O: 0 1 : 92 : 1 3  : 1
+O: 0 1 : 28 : 1 4  : 1
+O: 0 1 : 32 : 1 4  : 1
+O: 0 1 : 40 : 1 4  : 1
+O: 0 1 : 44 : 1 4  : 1
+O: 0 1 : 68 : 1 4  : 1
+O: 0 1 : 61 : 2 0  : 1
+O: 0 1 : 62 : 2 1  : 1
+O: 0 1 : 89 : 2 1  : 1
+O: 0 1 : 90 : 2 1  : 1
+O: 0 1 : 63 : 2 2  : 1
+O: 0 1 : 91 : 2 2  : 1
+O: 0 1 : 88 : 2 3  : 1
+O: 0 1 : 9 : 3 0  : 1
+O: 0 1 : 60 : 2 4  : 1
+O: 0 1 : 5 : 3 0  : 1
+O: 0 0 : 52 : 4 4  : 1
+O: 0 0 : 84 : 4 3  : 1
+O: 0 0 : 56 : 4 3  : 1
+O: 0 0 : 87 : 4 2  : 1
+O: 0 0 : 55 : 4 2  : 1
+O: 0 0 : 86 : 4 1  : 1
+O: 0 0 : 85 : 4 1  : 1
+O: 0 0 : 58 : 4 1  : 1
+O: 0 0 : 57 : 4 1  : 1
+O: 0 0 : 54 : 4 1  : 1
+O: 0 0 : 59 : 4 0  : 1
+O: 0 0 : 53 : 4 0  : 1
+O: 0 0 : 8 : 3 4  : 1
+O: 0 0 : 4 : 3 4  : 1
+O: 0 0 : 12 : 3 3  : 1
+O: 0 0 : 7 : 3 2  : 1
+O: 0 0 : 14 : 3 1  : 1
+O: 0 0 : 13 : 3 1  : 1
+O: 0 0 : 10 : 3 1  : 1
+O: 0 0 : 6 : 3 1  : 1
+O: 0 0 : 15 : 3 0  : 1
+O: 0 0 : 11 : 3 0  : 1
+O: 0 0 : 51 : 1 0  : 1
+O: 0 0 : 47 : 1 0  : 1
+O: 0 0 : 35 : 1 0  : 1
+O: 0 0 : 33 : 1 0  : 1
+O: 0 0 : 20 : 0 4  : 1
+O: 0 0 : 99 : 0 2  : 1
+O: 0 0 : 80 : 0 3  : 1
+O: 0 0 : 1 : 0 0  : 1
+O: 0 0 : 79 : 0 2  : 1
+O: 0 0 : 0 : 0 0  : 1
+O: 0 0 : 24 : 0 3  : 1
+O: 0 0 : 98 : 0 1  : 1
+O: 0 0 : 19 : 2 2  : 1
+O: 0 0 : 45 : 1 0  : 1
+O: 0 0 : 82 : 0 1  : 1
+O: 0 0 : 3 : 0 0  : 1
+O: 0 0 : 81 : 0 1  : 1
+O: 0 0 : 2 : 0 0  : 1
+O: 0 0 : 97 : 0 1  : 1
+O: 0 0 : 18 : 2 1  : 1
+O: 0 0 : 23 : 0 0  : 1
+O: 0 0 : 39 : 1 0  : 1
+O: 0 0 : 76 : 0 4  : 1
+O: 0 0 : 21 : 0 0  : 1
+O: 0 0 : 64 : 0 3  : 1
+O: 0 0 : 27 : 0 0  : 1
+O: 0 0 : 41 : 1 0  : 1
+O: 0 0 : 78 : 0 1  : 1
+O: 0 0 : 67 : 0 0  : 1
+O: 0 0 : 77 : 0 0  : 1
+O: 0 0 : 26 : 0 1  : 1
+O: 0 0 : 83 : 0 0  : 1
+O: 0 0 : 29 : 1 0  : 1
+O: 0 0 : 66 : 0 1  : 1
+O: 0 0 : 96 : 0 3  : 1
+O: 0 0 : 17 : 2 0  : 1
+O: 0 0 : 22 : 0 1  : 1
+O: 0 0 : 25 : 0 1  : 1
+O: 0 0 : 65 : 0 1  : 1
+O: 0 0 : 69 : 1 0  : 1
+O: 0 0 : 75 : 1 0  : 1
+O: 0 0 : 30 : 1 1  : 1
+O: 0 0 : 34 : 1 1  : 1
+O: 0 0 : 37 : 1 1  : 1
+O: 0 0 : 38 : 1 1  : 1
+O: 0 0 : 42 : 1 1  : 1
+O: 0 0 : 46 : 1 1  : 1
+O: 0 0 : 49 : 1 1  : 1
+O: 0 0 : 50 : 1 1  : 1
+O: 0 0 : 70 : 1 1  : 1
+O: 0 0 : 73 : 1 1  : 1
+O: 0 0 : 74 : 1 1  : 1
+O: 0 0 : 93 : 1 1  : 1
+O: 0 0 : 94 : 1 1  : 1
+O: 0 0 : 31 : 1 2  : 1
+O: 0 0 : 43 : 1 2  : 1
+O: 0 0 : 71 : 1 2  : 1
+O: 0 0 : 95 : 1 2  : 1
+O: 0 0 : 16 : 2 4  : 1
+O: 0 0 : 36 : 1 3  : 1
+O: 0 0 : 48 : 1 3  : 1
+O: 0 0 : 72 : 1 3  : 1
+O: 0 0 : 92 : 1 3  : 1
+O: 0 0 : 28 : 1 4  : 1
+O: 0 0 : 32 : 1 4  : 1
+O: 0 0 : 40 : 1 4  : 1
+O: 0 0 : 44 : 1 4  : 1
+O: 0 0 : 68 : 1 4  : 1
+O: 0 0 : 61 : 2 0  : 1
+O: 0 0 : 62 : 2 1  : 1
+O: 0 0 : 89 : 2 1  : 1
+O: 0 0 : 90 : 2 1  : 1
+O: 0 0 : 63 : 2 2  : 1
+O: 0 0 : 91 : 2 2  : 1
+O: 0 0 : 88 : 2 3  : 1
+O: 0 0 : 9 : 3 0  : 1
+O: 0 0 : 60 : 2 4  : 1
+O: 0 0 : 5 : 3 0  : 1
+O: 0 2 : 52 : 4 4  : 1
+O: 0 2 : 84 : 4 3  : 1
+O: 0 2 : 56 : 4 3  : 1
+O: 0 2 : 87 : 4 2  : 1
+O: 0 2 : 55 : 4 2  : 1
+O: 0 2 : 86 : 4 1  : 1
+O: 0 2 : 85 : 4 1  : 1
+O: 0 2 : 58 : 4 1  : 1
+O: 0 2 : 57 : 4 1  : 1
+O: 0 2 : 54 : 4 1  : 1
+O: 0 2 : 59 : 4 0  : 1
+O: 0 2 : 53 : 4 0  : 1
+O: 0 2 : 8 : 3 4  : 1
+O: 0 2 : 4 : 3 4  : 1
+O: 0 2 : 12 : 3 3  : 1
+O: 0 2 : 7 : 3 2  : 1
+O: 0 2 : 14 : 3 1  : 1
+O: 0 2 : 13 : 3 1  : 1
+O: 0 2 : 10 : 3 1  : 1
+O: 0 2 : 6 : 3 1  : 1
+O: 0 2 : 15 : 3 0  : 1
+O: 0 2 : 11 : 3 0  : 1
+O: 0 2 : 51 : 1 0  : 1
+O: 0 2 : 47 : 1 0  : 1
+O: 0 2 : 35 : 1 0  : 1
+O: 0 2 : 33 : 1 0  : 1
+O: 0 2 : 20 : 0 4  : 1
+O: 0 2 : 99 : 0 2  : 1
+O: 0 2 : 80 : 0 3  : 1
+O: 0 2 : 1 : 0 0  : 1
+O: 0 2 : 79 : 0 2  : 1
+O: 0 2 : 0 : 0 0  : 1
+O: 0 2 : 24 : 0 3  : 1
+O: 0 2 : 98 : 0 1  : 1
+O: 0 2 : 19 : 2 2  : 1
+O: 0 2 : 45 : 1 0  : 1
+O: 0 2 : 82 : 0 1  : 1
+O: 0 2 : 3 : 0 0  : 1
+O: 0 2 : 81 : 0 1  : 1
+O: 0 2 : 2 : 0 0  : 1
+O: 0 2 : 97 : 0 1  : 1
+O: 0 2 : 18 : 2 1  : 1
+O: 0 2 : 23 : 0 0  : 1
+O: 0 2 : 39 : 1 0  : 1
+O: 0 2 : 76 : 0 4  : 1
+O: 0 2 : 21 : 0 0  : 1
+O: 0 2 : 64 : 0 3  : 1
+O: 0 2 : 27 : 0 0  : 1
+O: 0 2 : 41 : 1 0  : 1
+O: 0 2 : 78 : 0 1  : 1
+O: 0 2 : 67 : 0 0  : 1
+O: 0 2 : 77 : 0 0  : 1
+O: 0 2 : 26 : 0 1  : 1
+O: 0 2 : 83 : 0 0  : 1
+O: 0 2 : 29 : 1 0  : 1
+O: 0 2 : 66 : 0 1  : 1
+O: 0 2 : 96 : 0 3  : 1
+O: 0 2 : 17 : 2 0  : 1
+O: 0 2 : 22 : 0 1  : 1
+O: 0 2 : 25 : 0 1  : 1
+O: 0 2 : 65 : 0 1  : 1
+O: 0 2 : 69 : 1 0  : 1
+O: 0 2 : 75 : 1 0  : 1
+O: 0 2 : 30 : 1 1  : 1
+O: 0 2 : 34 : 1 1  : 1
+O: 0 2 : 37 : 1 1  : 1
+O: 0 2 : 38 : 1 1  : 1
+O: 0 2 : 42 : 1 1  : 1
+O: 0 2 : 46 : 1 1  : 1
+O: 0 2 : 49 : 1 1  : 1
+O: 0 2 : 50 : 1 1  : 1
+O: 0 2 : 70 : 1 1  : 1
+O: 0 2 : 73 : 1 1  : 1
+O: 0 2 : 74 : 1 1  : 1
+O: 0 2 : 93 : 1 1  : 1
+O: 0 2 : 94 : 1 1  : 1
+O: 0 2 : 31 : 1 2  : 1
+O: 0 2 : 43 : 1 2  : 1
+O: 0 2 : 71 : 1 2  : 1
+O: 0 2 : 95 : 1 2  : 1
+O: 0 2 : 16 : 2 4  : 1
+O: 0 2 : 36 : 1 3  : 1
+O: 0 2 : 48 : 1 3  : 1
+O: 0 2 : 72 : 1 3  : 1
+O: 0 2 : 92 : 1 3  : 1
+O: 0 2 : 28 : 1 4  : 1
+O: 0 2 : 32 : 1 4  : 1
+O: 0 2 : 40 : 1 4  : 1
+O: 0 2 : 44 : 1 4  : 1
+O: 0 2 : 68 : 1 4  : 1
+O: 0 2 : 61 : 2 0  : 1
+O: 0 2 : 62 : 2 1  : 1
+O: 0 2 : 89 : 2 1  : 1
+O: 0 2 : 90 : 2 1  : 1
+O: 0 2 : 63 : 2 2  : 1
+O: 0 2 : 91 : 2 2  : 1
+O: 0 2 : 88 : 2 3  : 1
+O: 0 2 : 9 : 3 0  : 1
+O: 0 2 : 60 : 2 4  : 1
+O: 0 2 : 5 : 3 0  : 1
+O: 0 3 : 52 : 4 4  : 1
+O: 0 3 : 84 : 4 3  : 1
+O: 0 3 : 56 : 4 3  : 1
+O: 0 3 : 87 : 4 2  : 1
+O: 0 3 : 55 : 4 2  : 1
+O: 0 3 : 86 : 4 1  : 1
+O: 0 3 : 85 : 4 1  : 1
+O: 0 3 : 58 : 4 1  : 1
+O: 0 3 : 57 : 4 1  : 1
+O: 0 3 : 54 : 4 1  : 1
+O: 0 3 : 59 : 4 0  : 1
+O: 0 3 : 53 : 4 0  : 1
+O: 0 3 : 8 : 3 4  : 1
+O: 0 3 : 4 : 3 4  : 1
+O: 0 3 : 12 : 3 3  : 1
+O: 0 3 : 7 : 3 2  : 1
+O: 0 3 : 14 : 3 1  : 1
+O: 0 3 : 13 : 3 1  : 1
+O: 0 3 : 10 : 3 1  : 1
+O: 0 3 : 6 : 3 1  : 1
+O: 0 3 : 15 : 3 0  : 1
+O: 0 3 : 11 : 3 0  : 1
+O: 0 3 : 51 : 1 0  : 1
+O: 0 3 : 47 : 1 0  : 1
+O: 0 3 : 35 : 1 0  : 1
+O: 0 3 : 33 : 1 0  : 1
+O: 0 3 : 20 : 0 4  : 1
+O: 0 3 : 99 : 0 2  : 1
+O: 0 3 : 80 : 0 3  : 1
+O: 0 3 : 1 : 0 0  : 1
+O: 0 3 : 79 : 0 2  : 1
+O: 0 3 : 0 : 0 0  : 1
+O: 0 3 : 24 : 0 3  : 1
+O: 0 3 : 98 : 0 1  : 1
+O: 0 3 : 19 : 2 2  : 1
+O: 0 3 : 45 : 1 0  : 1
+O: 0 3 : 82 : 0 1  : 1
+O: 0 3 : 3 : 0 0  : 1
+O: 0 3 : 81 : 0 1  : 1
+O: 0 3 : 2 : 0 0  : 1
+O: 0 3 : 97 : 0 1  : 1
+O: 0 3 : 18 : 2 1  : 1
+O: 0 3 : 23 : 0 0  : 1
+O: 0 3 : 39 : 1 0  : 1
+O: 0 3 : 76 : 0 4  : 1
+O: 0 3 : 21 : 0 0  : 1
+O: 0 3 : 64 : 0 3  : 1
+O: 0 3 : 27 : 0 0  : 1
+O: 0 3 : 41 : 1 0  : 1
+O: 0 3 : 78 : 0 1  : 1
+O: 0 3 : 67 : 0 0  : 1
+O: 0 3 : 77 : 0 0  : 1
+O: 0 3 : 26 : 0 1  : 1
+O: 0 3 : 83 : 0 0  : 1
+O: 0 3 : 29 : 1 0  : 1
+O: 0 3 : 66 : 0 1  : 1
+O: 0 3 : 96 : 0 3  : 1
+O: 0 3 : 17 : 2 0  : 1
+O: 0 3 : 22 : 0 1  : 1
+O: 0 3 : 25 : 0 1  : 1
+O: 0 3 : 65 : 0 1  : 1
+O: 0 3 : 69 : 1 0  : 1
+O: 0 3 : 75 : 1 0  : 1
+O: 0 3 : 30 : 1 1  : 1
+O: 0 3 : 34 : 1 1  : 1
+O: 0 3 : 37 : 1 1  : 1
+O: 0 3 : 38 : 1 1  : 1
+O: 0 3 : 42 : 1 1  : 1
+O: 0 3 : 46 : 1 1  : 1
+O: 0 3 : 49 : 1 1  : 1
+O: 0 3 : 50 : 1 1  : 1
+O: 0 3 : 70 : 1 1  : 1
+O: 0 3 : 73 : 1 1  : 1
+O: 0 3 : 74 : 1 1  : 1
+O: 0 3 : 93 : 1 1  : 1
+O: 0 3 : 94 : 1 1  : 1
+O: 0 3 : 31 : 1 2  : 1
+O: 0 3 : 43 : 1 2  : 1
+O: 0 3 : 71 : 1 2  : 1
+O: 0 3 : 95 : 1 2  : 1
+O: 0 3 : 16 : 2 4  : 1
+O: 0 3 : 36 : 1 3  : 1
+O: 0 3 : 48 : 1 3  : 1
+O: 0 3 : 72 : 1 3  : 1
+O: 0 3 : 92 : 1 3  : 1
+O: 0 3 : 28 : 1 4  : 1
+O: 0 3 : 32 : 1 4  : 1
+O: 0 3 : 40 : 1 4  : 1
+O: 0 3 : 44 : 1 4  : 1
+O: 0 3 : 68 : 1 4  : 1
+O: 0 3 : 61 : 2 0  : 1
+O: 0 3 : 62 : 2 1  : 1
+O: 0 3 : 89 : 2 1  : 1
+O: 0 3 : 90 : 2 1  : 1
+O: 0 3 : 63 : 2 2  : 1
+O: 0 3 : 91 : 2 2  : 1
+O: 0 3 : 88 : 2 3  : 1
+O: 0 3 : 9 : 3 0  : 1
+O: 0 3 : 60 : 2 4  : 1
+O: 0 3 : 5 : 3 0  : 1
+O: 1 0 : 52 : 4 4  : 1
+O: 1 0 : 84 : 4 3  : 1
+O: 1 0 : 56 : 4 3  : 1
+O: 1 0 : 87 : 4 2  : 1
+O: 1 0 : 55 : 4 2  : 1
+O: 1 0 : 86 : 4 1  : 1
+O: 1 0 : 85 : 4 1  : 1
+O: 1 0 : 58 : 4 1  : 1
+O: 1 0 : 57 : 4 1  : 1
+O: 1 0 : 54 : 4 1  : 1
+O: 1 0 : 59 : 4 0  : 1
+O: 1 0 : 53 : 4 0  : 1
+O: 1 0 : 8 : 3 4  : 1
+O: 1 0 : 4 : 3 4  : 1
+O: 1 0 : 12 : 3 3  : 1
+O: 1 0 : 7 : 3 2  : 1
+O: 1 0 : 14 : 3 1  : 1
+O: 1 0 : 13 : 3 1  : 1
+O: 1 0 : 10 : 3 1  : 1
+O: 1 0 : 6 : 3 1  : 1
+O: 1 0 : 15 : 3 0  : 1
+O: 1 0 : 11 : 3 0  : 1
+O: 1 0 : 51 : 1 0  : 1
+O: 1 0 : 47 : 1 0  : 1
+O: 1 0 : 35 : 1 0  : 1
+O: 1 0 : 33 : 1 0  : 1
+O: 1 0 : 20 : 0 4  : 1
+O: 1 0 : 99 : 0 2  : 1
+O: 1 0 : 80 : 0 3  : 1
+O: 1 0 : 1 : 0 0  : 1
+O: 1 0 : 79 : 0 2  : 1
+O: 1 0 : 0 : 0 0  : 1
+O: 1 0 : 24 : 0 3  : 1
+O: 1 0 : 98 : 0 1  : 1
+O: 1 0 : 19 : 2 2  : 1
+O: 1 0 : 45 : 1 0  : 1
+O: 1 0 : 82 : 0 1  : 1
+O: 1 0 : 3 : 0 0  : 1
+O: 1 0 : 81 : 0 1  : 1
+O: 1 0 : 2 : 0 0  : 1
+O: 1 0 : 97 : 0 1  : 1
+O: 1 0 : 18 : 2 1  : 1
+O: 1 0 : 23 : 0 0  : 1
+O: 1 0 : 39 : 1 0  : 1
+O: 1 0 : 76 : 0 4  : 1
+O: 1 0 : 21 : 0 0  : 1
+O: 1 0 : 64 : 0 3  : 1
+O: 1 0 : 27 : 0 0  : 1
+O: 1 0 : 41 : 1 0  : 1
+O: 1 0 : 78 : 0 1  : 1
+O: 1 0 : 67 : 0 0  : 1
+O: 1 0 : 77 : 0 0  : 1
+O: 1 0 : 26 : 0 1  : 1
+O: 1 0 : 83 : 0 0  : 1
+O: 1 0 : 29 : 1 0  : 1
+O: 1 0 : 66 : 0 1  : 1
+O: 1 0 : 96 : 0 3  : 1
+O: 1 0 : 17 : 2 0  : 1
+O: 1 0 : 22 : 0 1  : 1
+O: 1 0 : 25 : 0 1  : 1
+O: 1 0 : 65 : 0 1  : 1
+O: 1 0 : 69 : 1 0  : 1
+O: 1 0 : 75 : 1 0  : 1
+O: 1 0 : 30 : 1 1  : 1
+O: 1 0 : 34 : 1 1  : 1
+O: 1 0 : 37 : 1 1  : 1
+O: 1 0 : 38 : 1 1  : 1
+O: 1 0 : 42 : 1 1  : 1
+O: 1 0 : 46 : 1 1  : 1
+O: 1 0 : 49 : 1 1  : 1
+O: 1 0 : 50 : 1 1  : 1
+O: 1 0 : 70 : 1 1  : 1
+O: 1 0 : 73 : 1 1  : 1
+O: 1 0 : 74 : 1 1  : 1
+O: 1 0 : 93 : 1 1  : 1
+O: 1 0 : 94 : 1 1  : 1
+O: 1 0 : 31 : 1 2  : 1
+O: 1 0 : 43 : 1 2  : 1
+O: 1 0 : 71 : 1 2  : 1
+O: 1 0 : 95 : 1 2  : 1
+O: 1 0 : 16 : 2 4  : 1
+O: 1 0 : 36 : 1 3  : 1
+O: 1 0 : 48 : 1 3  : 1
+O: 1 0 : 72 : 1 3  : 1
+O: 1 0 : 92 : 1 3  : 1
+O: 1 0 : 28 : 1 4  : 1
+O: 1 0 : 32 : 1 4  : 1
+O: 1 0 : 40 : 1 4  : 1
+O: 1 0 : 44 : 1 4  : 1
+O: 1 0 : 68 : 1 4  : 1
+O: 1 0 : 61 : 2 0  : 1
+O: 1 0 : 62 : 2 1  : 1
+O: 1 0 : 89 : 2 1  : 1
+O: 1 0 : 90 : 2 1  : 1
+O: 1 0 : 63 : 2 2  : 1
+O: 1 0 : 91 : 2 2  : 1
+O: 1 0 : 88 : 2 3  : 1
+O: 1 0 : 9 : 3 0  : 1
+O: 1 0 : 60 : 2 4  : 1
+O: 1 0 : 5 : 3 0  : 1
+O: 1 1 : 52 : 4 4  : 1
+O: 1 1 : 84 : 4 3  : 1
+O: 1 1 : 56 : 4 3  : 1
+O: 1 1 : 87 : 4 2  : 1
+O: 1 1 : 55 : 4 2  : 1
+O: 1 1 : 86 : 4 1  : 1
+O: 1 1 : 85 : 4 1  : 1
+O: 1 1 : 58 : 4 1  : 1
+O: 1 1 : 57 : 4 1  : 1
+O: 1 1 : 54 : 4 1  : 1
+O: 1 1 : 59 : 4 0  : 1
+O: 1 1 : 53 : 4 0  : 1
+O: 1 1 : 8 : 3 4  : 1
+O: 1 1 : 4 : 3 4  : 1
+O: 1 1 : 12 : 3 3  : 1
+O: 1 1 : 7 : 3 2  : 1
+O: 1 1 : 14 : 3 1  : 1
+O: 1 1 : 13 : 3 1  : 1
+O: 1 1 : 10 : 3 1  : 1
+O: 1 1 : 6 : 3 1  : 1
+O: 1 1 : 15 : 3 0  : 1
+O: 1 1 : 11 : 3 0  : 1
+O: 1 1 : 51 : 1 0  : 1
+O: 1 1 : 47 : 1 0  : 1
+O: 1 1 : 35 : 1 0  : 1
+O: 1 1 : 33 : 1 0  : 1
+O: 1 1 : 20 : 0 4  : 1
+O: 1 1 : 99 : 0 2  : 1
+O: 1 1 : 80 : 0 3  : 1
+O: 1 1 : 1 : 0 0  : 1
+O: 1 1 : 79 : 0 2  : 1
+O: 1 1 : 0 : 0 0  : 1
+O: 1 1 : 24 : 0 3  : 1
+O: 1 1 : 98 : 0 1  : 1
+O: 1 1 : 19 : 2 2  : 1
+O: 1 1 : 45 : 1 0  : 1
+O: 1 1 : 82 : 0 1  : 1
+O: 1 1 : 3 : 0 0  : 1
+O: 1 1 : 81 : 0 1  : 1
+O: 1 1 : 2 : 0 0  : 1
+O: 1 1 : 97 : 0 1  : 1
+O: 1 1 : 18 : 2 1  : 1
+O: 1 1 : 23 : 0 0  : 1
+O: 1 1 : 39 : 1 0  : 1
+O: 1 1 : 76 : 0 4  : 1
+O: 1 1 : 21 : 0 0  : 1
+O: 1 1 : 64 : 0 3  : 1
+O: 1 1 : 27 : 0 0  : 1
+O: 1 1 : 41 : 1 0  : 1
+O: 1 1 : 78 : 0 1  : 1
+O: 1 1 : 67 : 0 0  : 1
+O: 1 1 : 77 : 0 0  : 1
+O: 1 1 : 26 : 0 1  : 1
+O: 1 1 : 83 : 0 0  : 1
+O: 1 1 : 29 : 1 0  : 1
+O: 1 1 : 66 : 0 1  : 1
+O: 1 1 : 96 : 0 3  : 1
+O: 1 1 : 17 : 2 0  : 1
+O: 1 1 : 22 : 0 1  : 1
+O: 1 1 : 25 : 0 1  : 1
+O: 1 1 : 65 : 0 1  : 1
+O: 1 1 : 69 : 1 0  : 1
+O: 1 1 : 75 : 1 0  : 1
+O: 1 1 : 30 : 1 1  : 1
+O: 1 1 : 34 : 1 1  : 1
+O: 1 1 : 37 : 1 1  : 1
+O: 1 1 : 38 : 1 1  : 1
+O: 1 1 : 42 : 1 1  : 1
+O: 1 1 : 46 : 1 1  : 1
+O: 1 1 : 49 : 1 1  : 1
+O: 1 1 : 50 : 1 1  : 1
+O: 1 1 : 70 : 1 1  : 1
+O: 1 1 : 73 : 1 1  : 1
+O: 1 1 : 74 : 1 1  : 1
+O: 1 1 : 93 : 1 1  : 1
+O: 1 1 : 94 : 1 1  : 1
+O: 1 1 : 31 : 1 2  : 1
+O: 1 1 : 43 : 1 2  : 1
+O: 1 1 : 71 : 1 2  : 1
+O: 1 1 : 95 : 1 2  : 1
+O: 1 1 : 16 : 2 4  : 1
+O: 1 1 : 36 : 1 3  : 1
+O: 1 1 : 48 : 1 3  : 1
+O: 1 1 : 72 : 1 3  : 1
+O: 1 1 : 92 : 1 3  : 1
+O: 1 1 : 28 : 1 4  : 1
+O: 1 1 : 32 : 1 4  : 1
+O: 1 1 : 40 : 1 4  : 1
+O: 1 1 : 44 : 1 4  : 1
+O: 1 1 : 68 : 1 4  : 1
+O: 1 1 : 61 : 2 0  : 1
+O: 1 1 : 62 : 2 1  : 1
+O: 1 1 : 89 : 2 1  : 1
+O: 1 1 : 90 : 2 1  : 1
+O: 1 1 : 63 : 2 2  : 1
+O: 1 1 : 91 : 2 2  : 1
+O: 1 1 : 88 : 2 3  : 1
+O: 1 1 : 9 : 3 0  : 1
+O: 1 1 : 60 : 2 4  : 1
+O: 1 1 : 5 : 3 0  : 1
+R: 0 0 : 0 : * : * : 0
+R: 0 1 : 0 : * : * : 0
+R: 0 2 : 0 : * : * : 0
+R: 0 3 : 0 : * : * : 0
+R: 1 0 : 0 : * : * : 0
+R: 1 1 : 0 : * : * : 0
+R: 1 2 : 0 : * : * : 0
+R: 1 3 : 0 : * : * : 0
+R: 2 0 : 0 : * : * : 0
+R: 2 1 : 0 : * : * : 0
+R: 2 2 : 0 : * : * : 0
+R: 2 3 : 0 : * : * : 0
+R: 3 0 : 0 : * : * : 0
+R: 3 1 : 0 : * : * : 0
+R: 3 2 : 0 : * : * : 0
+R: 3 3 : 0 : * : * : 0
+R: 0 0 : 1 : * : * : 0
+R: 0 1 : 1 : * : * : 0
+R: 0 2 : 1 : * : * : 0
+R: 0 3 : 1 : * : * : 0
+R: 1 0 : 1 : * : * : 0
+R: 1 1 : 1 : * : * : 0
+R: 1 2 : 1 : * : * : 0
+R: 1 3 : 1 : * : * : 0
+R: 2 0 : 1 : * : * : 0
+R: 2 1 : 1 : * : * : 0
+R: 2 2 : 1 : * : * : 0
+R: 2 3 : 1 : * : * : 0
+R: 3 0 : 1 : * : * : 0
+R: 3 1 : 1 : * : * : 0
+R: 3 2 : 1 : * : * : 0
+R: 3 3 : 1 : * : * : 0
+R: 0 0 : 2 : * : * : 0
+R: 0 1 : 2 : * : * : 0
+R: 0 2 : 2 : * : * : 0
+R: 0 3 : 2 : * : * : 0
+R: 1 0 : 2 : * : * : 0
+R: 1 1 : 2 : * : * : 0
+R: 1 2 : 2 : * : * : 0
+R: 1 3 : 2 : * : * : 0
+R: 2 0 : 2 : * : * : 0
+R: 2 1 : 2 : * : * : 0
+R: 2 2 : 2 : * : * : 0
+R: 2 3 : 2 : * : * : 0
+R: 3 0 : 2 : * : * : 0
+R: 3 1 : 2 : * : * : 0
+R: 3 2 : 2 : * : * : 0
+R: 3 3 : 2 : * : * : 0
+R: 0 0 : 3 : * : * : 0
+R: 0 1 : 3 : * : * : 0
+R: 0 2 : 3 : * : * : 0
+R: 0 3 : 3 : * : * : 0
+R: 1 0 : 3 : * : * : 0
+R: 1 1 : 3 : * : * : 0
+R: 1 2 : 3 : * : * : 0
+R: 1 3 : 3 : * : * : 0
+R: 2 0 : 3 : * : * : 0
+R: 2 1 : 3 : * : * : 0
+R: 2 2 : 3 : * : * : 0
+R: 2 3 : 3 : * : * : 0
+R: 3 0 : 3 : * : * : 0
+R: 3 1 : 3 : * : * : 0
+R: 3 2 : 3 : * : * : 0
+R: 3 3 : 3 : * : * : 0
+R: 0 0 : 4 : * : * : -0.2
+R: 0 1 : 4 : * : * : -0.2
+R: 0 2 : 4 : * : * : -5.2
+R: 0 3 : 4 : * : * : -0.2
+R: 1 0 : 4 : * : * : -0.2
+R: 1 1 : 4 : * : * : -0.2
+R: 1 2 : 4 : * : * : -5.2
+R: 1 3 : 4 : * : * : -0.2
+R: 2 0 : 4 : * : * : 9.8
+R: 2 1 : 4 : * : * : 9.8
+R: 2 2 : 4 : * : * : 4.8
+R: 2 3 : 4 : * : * : 9.8
+R: 3 0 : 4 : * : * : -0.2
+R: 3 1 : 4 : * : * : -0.2
+R: 3 2 : 4 : * : * : -5.2
+R: 3 3 : 4 : * : * : -0.2
+R: 0 0 : 5 : * : * : -0.2
+R: 0 1 : 5 : * : * : -0.2
+R: 0 2 : 5 : * : * : -0.2
+R: 0 3 : 5 : * : * : -0.2
+R: 1 0 : 5 : * : * : -0.2
+R: 1 1 : 5 : * : * : -0.2
+R: 1 2 : 5 : * : * : -0.2
+R: 1 3 : 5 : * : * : -0.2
+R: 2 0 : 5 : * : * : 9.8
+R: 2 1 : 5 : * : * : 9.8
+R: 2 2 : 5 : * : * : 9.8
+R: 2 3 : 5 : * : * : 9.8
+R: 3 0 : 5 : * : * : -0.2
+R: 3 1 : 5 : * : * : -0.2
+R: 3 2 : 5 : * : * : -0.2
+R: 3 3 : 5 : * : * : -0.2
+R: 0 0 : 6 : * : * : -0.2
+R: 0 1 : 6 : * : * : -0.2
+R: 0 2 : 6 : * : * : -5.2
+R: 0 3 : 6 : * : * : -0.2
+R: 1 0 : 6 : * : * : -0.2
+R: 1 1 : 6 : * : * : -0.2
+R: 1 2 : 6 : * : * : -5.2
+R: 1 3 : 6 : * : * : -0.2
+R: 2 0 : 6 : * : * : 9.8
+R: 2 1 : 6 : * : * : 9.8
+R: 2 2 : 6 : * : * : 4.8
+R: 2 3 : 6 : * : * : 9.8
+R: 3 0 : 6 : * : * : -0.2
+R: 3 1 : 6 : * : * : -0.2
+R: 3 2 : 6 : * : * : -5.2
+R: 3 3 : 6 : * : * : -0.2
+R: 0 0 : 7 : * : * : -0.2
+R: 0 1 : 7 : * : * : -0.2
+R: 0 2 : 7 : * : * : -5.2
+R: 0 3 : 7 : * : * : -0.2
+R: 1 0 : 7 : * : * : -0.2
+R: 1 1 : 7 : * : * : -0.2
+R: 1 2 : 7 : * : * : -5.2
+R: 1 3 : 7 : * : * : -0.2
+R: 2 0 : 7 : * : * : 9.8
+R: 2 1 : 7 : * : * : 9.8
+R: 2 2 : 7 : * : * : 4.8
+R: 2 3 : 7 : * : * : 9.8
+R: 3 0 : 7 : * : * : -0.2
+R: 3 1 : 7 : * : * : -0.2
+R: 3 2 : 7 : * : * : -5.2
+R: 3 3 : 7 : * : * : -0.2
+R: 0 0 : 8 : * : * : -0.2
+R: 0 1 : 8 : * : * : -0.2
+R: 0 2 : 8 : * : * : -5.2
+R: 0 3 : 8 : * : * : -0.2
+R: 1 0 : 8 : * : * : -0.2
+R: 1 1 : 8 : * : * : -0.2
+R: 1 2 : 8 : * : * : -5.2
+R: 1 3 : 8 : * : * : -0.2
+R: 2 0 : 8 : * : * : 9.8
+R: 2 1 : 8 : * : * : 9.8
+R: 2 2 : 8 : * : * : 4.8
+R: 2 3 : 8 : * : * : 9.8
+R: 3 0 : 8 : * : * : -0.2
+R: 3 1 : 8 : * : * : -0.2
+R: 3 2 : 8 : * : * : -5.2
+R: 3 3 : 8 : * : * : -0.2
+R: 0 0 : 9 : * : * : -0.2
+R: 0 1 : 9 : * : * : -0.2
+R: 0 2 : 9 : * : * : -0.2
+R: 0 3 : 9 : * : * : -0.2
+R: 1 0 : 9 : * : * : -0.2
+R: 1 1 : 9 : * : * : -0.2
+R: 1 2 : 9 : * : * : -0.2
+R: 1 3 : 9 : * : * : -0.2
+R: 2 0 : 9 : * : * : 9.8
+R: 2 1 : 9 : * : * : 9.8
+R: 2 2 : 9 : * : * : 9.8
+R: 2 3 : 9 : * : * : 9.8
+R: 3 0 : 9 : * : * : -0.2
+R: 3 1 : 9 : * : * : -0.2
+R: 3 2 : 9 : * : * : -0.2
+R: 3 3 : 9 : * : * : -0.2
+R: 0 0 : 10 : * : * : -0.2
+R: 0 1 : 10 : * : * : -0.2
+R: 0 2 : 10 : * : * : -5.2
+R: 0 3 : 10 : * : * : -0.2
+R: 1 0 : 10 : * : * : -0.2
+R: 1 1 : 10 : * : * : -0.2
+R: 1 2 : 10 : * : * : -5.2
+R: 1 3 : 10 : * : * : -0.2
+R: 2 0 : 10 : * : * : 9.8
+R: 2 1 : 10 : * : * : 9.8
+R: 2 2 : 10 : * : * : 4.8
+R: 2 3 : 10 : * : * : 9.8
+R: 3 0 : 10 : * : * : -0.2
+R: 3 1 : 10 : * : * : -0.2
+R: 3 2 : 10 : * : * : -5.2
+R: 3 3 : 10 : * : * : -0.2
+R: 0 0 : 11 : * : * : -0.2
+R: 0 1 : 11 : * : * : -0.2
+R: 0 2 : 11 : * : * : -0.2
+R: 0 3 : 11 : * : * : -0.2
+R: 1 0 : 11 : * : * : -0.2
+R: 1 1 : 11 : * : * : -0.2
+R: 1 2 : 11 : * : * : -0.2
+R: 1 3 : 11 : * : * : -0.2
+R: 2 0 : 11 : * : * : 9.8
+R: 2 1 : 11 : * : * : 9.8
+R: 2 2 : 11 : * : * : 9.8
+R: 2 3 : 11 : * : * : 9.8
+R: 3 0 : 11 : * : * : -0.2
+R: 3 1 : 11 : * : * : -0.2
+R: 3 2 : 11 : * : * : -0.2
+R: 3 3 : 11 : * : * : -0.2
+R: 0 0 : 12 : * : * : -0.2
+R: 0 1 : 12 : * : * : -0.2
+R: 0 2 : 12 : * : * : 9.8
+R: 0 3 : 12 : * : * : -0.2
+R: 1 0 : 12 : * : * : -0.2
+R: 1 1 : 12 : * : * : -0.2
+R: 1 2 : 12 : * : * : 9.8
+R: 1 3 : 12 : * : * : -0.2
+R: 2 0 : 12 : * : * : 9.8
+R: 2 1 : 12 : * : * : 9.8
+R: 2 2 : 12 : * : * : 19.8
+R: 2 3 : 12 : * : * : 9.8
+R: 3 0 : 12 : * : * : -0.2
+R: 3 1 : 12 : * : * : -0.2
+R: 3 2 : 12 : * : * : 9.8
+R: 3 3 : 12 : * : * : -0.2
+R: 0 0 : 13 : * : * : -0.2
+R: 0 1 : 13 : * : * : -0.2
+R: 0 2 : 13 : * : * : -5.2
+R: 0 3 : 13 : * : * : -0.2
+R: 1 0 : 13 : * : * : -0.2
+R: 1 1 : 13 : * : * : -0.2
+R: 1 2 : 13 : * : * : -5.2
+R: 1 3 : 13 : * : * : -0.2
+R: 2 0 : 13 : * : * : 9.8
+R: 2 1 : 13 : * : * : 9.8
+R: 2 2 : 13 : * : * : 4.8
+R: 2 3 : 13 : * : * : 9.8
+R: 3 0 : 13 : * : * : -0.2
+R: 3 1 : 13 : * : * : -0.2
+R: 3 2 : 13 : * : * : -5.2
+R: 3 3 : 13 : * : * : -0.2
+R: 0 0 : 14 : * : * : -0.2
+R: 0 1 : 14 : * : * : -0.2
+R: 0 2 : 14 : * : * : -5.2
+R: 0 3 : 14 : * : * : -0.2
+R: 1 0 : 14 : * : * : -0.2
+R: 1 1 : 14 : * : * : -0.2
+R: 1 2 : 14 : * : * : -5.2
+R: 1 3 : 14 : * : * : -0.2
+R: 2 0 : 14 : * : * : 9.8
+R: 2 1 : 14 : * : * : 9.8
+R: 2 2 : 14 : * : * : 4.8
+R: 2 3 : 14 : * : * : 9.8
+R: 3 0 : 14 : * : * : -0.2
+R: 3 1 : 14 : * : * : -0.2
+R: 3 2 : 14 : * : * : -5.2
+R: 3 3 : 14 : * : * : -0.2
+R: 0 0 : 15 : * : * : -0.2
+R: 0 1 : 15 : * : * : -0.2
+R: 0 2 : 15 : * : * : -0.2
+R: 0 3 : 15 : * : * : -0.2
+R: 1 0 : 15 : * : * : -0.2
+R: 1 1 : 15 : * : * : -0.2
+R: 1 2 : 15 : * : * : -0.2
+R: 1 3 : 15 : * : * : -0.2
+R: 2 0 : 15 : * : * : 9.8
+R: 2 1 : 15 : * : * : 9.8
+R: 2 2 : 15 : * : * : 9.8
+R: 2 3 : 15 : * : * : 9.8
+R: 3 0 : 15 : * : * : -0.2
+R: 3 1 : 15 : * : * : -0.2
+R: 3 2 : 15 : * : * : -0.2
+R: 3 3 : 15 : * : * : -0.2
+R: 0 0 : 16 : * : * : -0.2
+R: 0 1 : 16 : * : * : -0.2
+R: 0 2 : 16 : * : * : -5.2
+R: 0 3 : 16 : * : * : -0.2
+R: 1 0 : 16 : * : * : -0.2
+R: 1 1 : 16 : * : * : -0.2
+R: 1 2 : 16 : * : * : -5.2
+R: 1 3 : 16 : * : * : -0.2
+R: 2 0 : 16 : * : * : -5.2
+R: 2 1 : 16 : * : * : -5.2
+R: 2 2 : 16 : * : * : -10.2
+R: 2 3 : 16 : * : * : -5.2
+R: 3 0 : 16 : * : * : -0.2
+R: 3 1 : 16 : * : * : -0.2
+R: 3 2 : 16 : * : * : -5.2
+R: 3 3 : 16 : * : * : -0.2
+R: 0 0 : 17 : * : * : -0.2
+R: 0 1 : 17 : * : * : -0.2
+R: 0 2 : 17 : * : * : -0.2
+R: 0 3 : 17 : * : * : -0.2
+R: 1 0 : 17 : * : * : -0.2
+R: 1 1 : 17 : * : * : -0.2
+R: 1 2 : 17 : * : * : -0.2
+R: 1 3 : 17 : * : * : -0.2
+R: 2 0 : 17 : * : * : -5.2
+R: 2 1 : 17 : * : * : -5.2
+R: 2 2 : 17 : * : * : -5.2
+R: 2 3 : 17 : * : * : -5.2
+R: 3 0 : 17 : * : * : -0.2
+R: 3 1 : 17 : * : * : -0.2
+R: 3 2 : 17 : * : * : -0.2
+R: 3 3 : 17 : * : * : -0.2
+R: 0 0 : 18 : * : * : -0.2
+R: 0 1 : 18 : * : * : -0.2
+R: 0 2 : 18 : * : * : -5.2
+R: 0 3 : 18 : * : * : -0.2
+R: 1 0 : 18 : * : * : -0.2
+R: 1 1 : 18 : * : * : -0.2
+R: 1 2 : 18 : * : * : -5.2
+R: 1 3 : 18 : * : * : -0.2
+R: 2 0 : 18 : * : * : -5.2
+R: 2 1 : 18 : * : * : -5.2
+R: 2 2 : 18 : * : * : -10.2
+R: 2 3 : 18 : * : * : -5.2
+R: 3 0 : 18 : * : * : -0.2
+R: 3 1 : 18 : * : * : -0.2
+R: 3 2 : 18 : * : * : -5.2
+R: 3 3 : 18 : * : * : -0.2
+R: 0 0 : 19 : * : * : -0.2
+R: 0 1 : 19 : * : * : -0.2
+R: 0 2 : 19 : * : * : -5.2
+R: 0 3 : 19 : * : * : -0.2
+R: 1 0 : 19 : * : * : -0.2
+R: 1 1 : 19 : * : * : -0.2
+R: 1 2 : 19 : * : * : -5.2
+R: 1 3 : 19 : * : * : -0.2
+R: 2 0 : 19 : * : * : -5.2
+R: 2 1 : 19 : * : * : -5.2
+R: 2 2 : 19 : * : * : -10.2
+R: 2 3 : 19 : * : * : -5.2
+R: 3 0 : 19 : * : * : -0.2
+R: 3 1 : 19 : * : * : -0.2
+R: 3 2 : 19 : * : * : -5.2
+R: 3 3 : 19 : * : * : -0.2
+R: 0 0 : 20 : * : * : -0.2
+R: 0 1 : 20 : * : * : -0.2
+R: 0 2 : 20 : * : * : -5.2
+R: 0 3 : 20 : * : * : -0.2
+R: 1 0 : 20 : * : * : -0.2
+R: 1 1 : 20 : * : * : -0.2
+R: 1 2 : 20 : * : * : -5.2
+R: 1 3 : 20 : * : * : -0.2
+R: 2 0 : 20 : * : * : -0.2
+R: 2 1 : 20 : * : * : -0.2
+R: 2 2 : 20 : * : * : -5.2
+R: 2 3 : 20 : * : * : -0.2
+R: 3 0 : 20 : * : * : -0.2
+R: 3 1 : 20 : * : * : -0.2
+R: 3 2 : 20 : * : * : -5.2
+R: 3 3 : 20 : * : * : -0.2
+R: 0 0 : 21 : * : * : -0.2
+R: 0 1 : 21 : * : * : -0.2
+R: 0 2 : 21 : * : * : -0.2
+R: 0 3 : 21 : * : * : -0.2
+R: 1 0 : 21 : * : * : -0.2
+R: 1 1 : 21 : * : * : -0.2
+R: 1 2 : 21 : * : * : -0.2
+R: 1 3 : 21 : * : * : -0.2
+R: 2 0 : 21 : * : * : -0.2
+R: 2 1 : 21 : * : * : -0.2
+R: 2 2 : 21 : * : * : -0.2
+R: 2 3 : 21 : * : * : -0.2
+R: 3 0 : 21 : * : * : -0.2
+R: 3 1 : 21 : * : * : -0.2
+R: 3 2 : 21 : * : * : -0.2
+R: 3 3 : 21 : * : * : -0.2
+R: 0 0 : 22 : * : * : -0.2
+R: 0 1 : 22 : * : * : -0.2
+R: 0 2 : 22 : * : * : -5.2
+R: 0 3 : 22 : * : * : -0.2
+R: 1 0 : 22 : * : * : -0.2
+R: 1 1 : 22 : * : * : -0.2
+R: 1 2 : 22 : * : * : -5.2
+R: 1 3 : 22 : * : * : -0.2
+R: 2 0 : 22 : * : * : -0.2
+R: 2 1 : 22 : * : * : -0.2
+R: 2 2 : 22 : * : * : -5.2
+R: 2 3 : 22 : * : * : -0.2
+R: 3 0 : 22 : * : * : -0.2
+R: 3 1 : 22 : * : * : -0.2
+R: 3 2 : 22 : * : * : -5.2
+R: 3 3 : 22 : * : * : -0.2
+R: 0 0 : 23 : * : * : -0.2
+R: 0 1 : 23 : * : * : -0.2
+R: 0 2 : 23 : * : * : -0.2
+R: 0 3 : 23 : * : * : -0.2
+R: 1 0 : 23 : * : * : -0.2
+R: 1 1 : 23 : * : * : -0.2
+R: 1 2 : 23 : * : * : -0.2
+R: 1 3 : 23 : * : * : -0.2
+R: 2 0 : 23 : * : * : -0.2
+R: 2 1 : 23 : * : * : -0.2
+R: 2 2 : 23 : * : * : -10.2
+R: 2 3 : 23 : * : * : -0.2
+R: 3 0 : 23 : * : * : -0.2
+R: 3 1 : 23 : * : * : -0.2
+R: 3 2 : 23 : * : * : -0.2
+R: 3 3 : 23 : * : * : -0.2
+R: 0 0 : 24 : * : * : -0.2
+R: 0 1 : 24 : * : * : -0.2
+R: 0 2 : 24 : * : * : 9.8
+R: 0 3 : 24 : * : * : -0.2
+R: 1 0 : 24 : * : * : -0.2
+R: 1 1 : 24 : * : * : -0.2
+R: 1 2 : 24 : * : * : 9.8
+R: 1 3 : 24 : * : * : -0.2
+R: 2 0 : 24 : * : * : -0.2
+R: 2 1 : 24 : * : * : -0.2
+R: 2 2 : 24 : * : * : 9.8
+R: 2 3 : 24 : * : * : -0.2
+R: 3 0 : 24 : * : * : -0.2
+R: 3 1 : 24 : * : * : -0.2
+R: 3 2 : 24 : * : * : 9.8
+R: 3 3 : 24 : * : * : -0.2
+R: 0 0 : 25 : * : * : -0.2
+R: 0 1 : 25 : * : * : -0.2
+R: 0 2 : 25 : * : * : -5.2
+R: 0 3 : 25 : * : * : -0.2
+R: 1 0 : 25 : * : * : -0.2
+R: 1 1 : 25 : * : * : -0.2
+R: 1 2 : 25 : * : * : -5.2
+R: 1 3 : 25 : * : * : -0.2
+R: 2 0 : 25 : * : * : -0.2
+R: 2 1 : 25 : * : * : -0.2
+R: 2 2 : 25 : * : * : -5.2
+R: 2 3 : 25 : * : * : -0.2
+R: 3 0 : 25 : * : * : -0.2
+R: 3 1 : 25 : * : * : -0.2
+R: 3 2 : 25 : * : * : -5.2
+R: 3 3 : 25 : * : * : -0.2
+R: 0 0 : 26 : * : * : -0.2
+R: 0 1 : 26 : * : * : -0.2
+R: 0 2 : 26 : * : * : -5.2
+R: 0 3 : 26 : * : * : -0.2
+R: 1 0 : 26 : * : * : -0.2
+R: 1 1 : 26 : * : * : -0.2
+R: 1 2 : 26 : * : * : -5.2
+R: 1 3 : 26 : * : * : -0.2
+R: 2 0 : 26 : * : * : -0.2
+R: 2 1 : 26 : * : * : -0.2
+R: 2 2 : 26 : * : * : -5.2
+R: 2 3 : 26 : * : * : -0.2
+R: 3 0 : 26 : * : * : -0.2
+R: 3 1 : 26 : * : * : -0.2
+R: 3 2 : 26 : * : * : -5.2
+R: 3 3 : 26 : * : * : -0.2
+R: 0 0 : 27 : * : * : -0.2
+R: 0 1 : 27 : * : * : -0.2
+R: 0 2 : 27 : * : * : -0.2
+R: 0 3 : 27 : * : * : -0.2
+R: 1 0 : 27 : * : * : -0.2
+R: 1 1 : 27 : * : * : -0.2
+R: 1 2 : 27 : * : * : -0.2
+R: 1 3 : 27 : * : * : -0.2
+R: 2 0 : 27 : * : * : -0.2
+R: 2 1 : 27 : * : * : -0.2
+R: 2 2 : 27 : * : * : -0.2
+R: 2 3 : 27 : * : * : -0.2
+R: 3 0 : 27 : * : * : -0.2
+R: 3 1 : 27 : * : * : -0.2
+R: 3 2 : 27 : * : * : -0.2
+R: 3 3 : 27 : * : * : -0.2
+R: 0 0 : 28 : * : * : -0.2
+R: 0 1 : 28 : * : * : -0.2
+R: 0 2 : 28 : * : * : -5.2
+R: 0 3 : 28 : * : * : -0.2
+R: 1 0 : 28 : * : * : -0.2
+R: 1 1 : 28 : * : * : -0.2
+R: 1 2 : 28 : * : * : -5.2
+R: 1 3 : 28 : * : * : -0.2
+R: 2 0 : 28 : * : * : -5.2
+R: 2 1 : 28 : * : * : -5.2
+R: 2 2 : 28 : * : * : -10.2
+R: 2 3 : 28 : * : * : -5.2
+R: 3 0 : 28 : * : * : -0.2
+R: 3 1 : 28 : * : * : -0.2
+R: 3 2 : 28 : * : * : -5.2
+R: 3 3 : 28 : * : * : -0.2
+R: 0 0 : 29 : * : * : -0.2
+R: 0 1 : 29 : * : * : -0.2
+R: 0 2 : 29 : * : * : -0.2
+R: 0 3 : 29 : * : * : -0.2
+R: 1 0 : 29 : * : * : -0.2
+R: 1 1 : 29 : * : * : -0.2
+R: 1 2 : 29 : * : * : -0.2
+R: 1 3 : 29 : * : * : -0.2
+R: 2 0 : 29 : * : * : -5.2
+R: 2 1 : 29 : * : * : -5.2
+R: 2 2 : 29 : * : * : -5.2
+R: 2 3 : 29 : * : * : -5.2
+R: 3 0 : 29 : * : * : -0.2
+R: 3 1 : 29 : * : * : -0.2
+R: 3 2 : 29 : * : * : -0.2
+R: 3 3 : 29 : * : * : -0.2
+R: 0 0 : 30 : * : * : -0.2
+R: 0 1 : 30 : * : * : -0.2
+R: 0 2 : 30 : * : * : -5.2
+R: 0 3 : 30 : * : * : -0.2
+R: 1 0 : 30 : * : * : -0.2
+R: 1 1 : 30 : * : * : -0.2
+R: 1 2 : 30 : * : * : -5.2
+R: 1 3 : 30 : * : * : -0.2
+R: 2 0 : 30 : * : * : -5.2
+R: 2 1 : 30 : * : * : -5.2
+R: 2 2 : 30 : * : * : -10.2
+R: 2 3 : 30 : * : * : -5.2
+R: 3 0 : 30 : * : * : -0.2
+R: 3 1 : 30 : * : * : -0.2
+R: 3 2 : 30 : * : * : -5.2
+R: 3 3 : 30 : * : * : -0.2
+R: 0 0 : 31 : * : * : -0.2
+R: 0 1 : 31 : * : * : -0.2
+R: 0 2 : 31 : * : * : -5.2
+R: 0 3 : 31 : * : * : -0.2
+R: 1 0 : 31 : * : * : -0.2
+R: 1 1 : 31 : * : * : -0.2
+R: 1 2 : 31 : * : * : -5.2
+R: 1 3 : 31 : * : * : -0.2
+R: 2 0 : 31 : * : * : -5.2
+R: 2 1 : 31 : * : * : -5.2
+R: 2 2 : 31 : * : * : -10.2
+R: 2 3 : 31 : * : * : -5.2
+R: 3 0 : 31 : * : * : -0.2
+R: 3 1 : 31 : * : * : -0.2
+R: 3 2 : 31 : * : * : -5.2
+R: 3 3 : 31 : * : * : -0.2
+R: 0 0 : 32 : * : * : -0.2
+R: 0 1 : 32 : * : * : -0.2
+R: 0 2 : 32 : * : * : -5.2
+R: 0 3 : 32 : * : * : -0.2
+R: 1 0 : 32 : * : * : -0.2
+R: 1 1 : 32 : * : * : -0.2
+R: 1 2 : 32 : * : * : -5.2
+R: 1 3 : 32 : * : * : -0.2
+R: 2 0 : 32 : * : * : -5.2
+R: 2 1 : 32 : * : * : -5.2
+R: 2 2 : 32 : * : * : -10.2
+R: 2 3 : 32 : * : * : -5.2
+R: 3 0 : 32 : * : * : -0.2
+R: 3 1 : 32 : * : * : -0.2
+R: 3 2 : 32 : * : * : -5.2
+R: 3 3 : 32 : * : * : -0.2
+R: 0 0 : 33 : * : * : -0.2
+R: 0 1 : 33 : * : * : -0.2
+R: 0 2 : 33 : * : * : -0.2
+R: 0 3 : 33 : * : * : -0.2
+R: 1 0 : 33 : * : * : -0.2
+R: 1 1 : 33 : * : * : -0.2
+R: 1 2 : 33 : * : * : -0.2
+R: 1 3 : 33 : * : * : -0.2
+R: 2 0 : 33 : * : * : -5.2
+R: 2 1 : 33 : * : * : -5.2
+R: 2 2 : 33 : * : * : -5.2
+R: 2 3 : 33 : * : * : -5.2
+R: 3 0 : 33 : * : * : -0.2
+R: 3 1 : 33 : * : * : -0.2
+R: 3 2 : 33 : * : * : -0.2
+R: 3 3 : 33 : * : * : -0.2
+R: 0 0 : 34 : * : * : -0.2
+R: 0 1 : 34 : * : * : -0.2
+R: 0 2 : 34 : * : * : -5.2
+R: 0 3 : 34 : * : * : -0.2
+R: 1 0 : 34 : * : * : -0.2
+R: 1 1 : 34 : * : * : -0.2
+R: 1 2 : 34 : * : * : -5.2
+R: 1 3 : 34 : * : * : -0.2
+R: 2 0 : 34 : * : * : -5.2
+R: 2 1 : 34 : * : * : -5.2
+R: 2 2 : 34 : * : * : -10.2
+R: 2 3 : 34 : * : * : -5.2
+R: 3 0 : 34 : * : * : -0.2
+R: 3 1 : 34 : * : * : -0.2
+R: 3 2 : 34 : * : * : -5.2
+R: 3 3 : 34 : * : * : -0.2
+R: 0 0 : 35 : * : * : -0.2
+R: 0 1 : 35 : * : * : -0.2
+R: 0 2 : 35 : * : * : -0.2
+R: 0 3 : 35 : * : * : -0.2
+R: 1 0 : 35 : * : * : -0.2
+R: 1 1 : 35 : * : * : -0.2
+R: 1 2 : 35 : * : * : -0.2
+R: 1 3 : 35 : * : * : -0.2
+R: 2 0 : 35 : * : * : -5.2
+R: 2 1 : 35 : * : * : -5.2
+R: 2 2 : 35 : * : * : -5.2
+R: 2 3 : 35 : * : * : -5.2
+R: 3 0 : 35 : * : * : -0.2
+R: 3 1 : 35 : * : * : -0.2
+R: 3 2 : 35 : * : * : -0.2
+R: 3 3 : 35 : * : * : -0.2
+R: 0 0 : 36 : * : * : -0.2
+R: 0 1 : 36 : * : * : -0.2
+R: 0 2 : 36 : * : * : 9.8
+R: 0 3 : 36 : * : * : -0.2
+R: 1 0 : 36 : * : * : -0.2
+R: 1 1 : 36 : * : * : -0.2
+R: 1 2 : 36 : * : * : 9.8
+R: 1 3 : 36 : * : * : -0.2
+R: 2 0 : 36 : * : * : -5.2
+R: 2 1 : 36 : * : * : -5.2
+R: 2 2 : 36 : * : * : 4.8
+R: 2 3 : 36 : * : * : -5.2
+R: 3 0 : 36 : * : * : -0.2
+R: 3 1 : 36 : * : * : -0.2
+R: 3 2 : 36 : * : * : 9.8
+R: 3 3 : 36 : * : * : -0.2
+R: 0 0 : 37 : * : * : -0.2
+R: 0 1 : 37 : * : * : -0.2
+R: 0 2 : 37 : * : * : -5.2
+R: 0 3 : 37 : * : * : -0.2
+R: 1 0 : 37 : * : * : -0.2
+R: 1 1 : 37 : * : * : -0.2
+R: 1 2 : 37 : * : * : -5.2
+R: 1 3 : 37 : * : * : -0.2
+R: 2 0 : 37 : * : * : -5.2
+R: 2 1 : 37 : * : * : -5.2
+R: 2 2 : 37 : * : * : -10.2
+R: 2 3 : 37 : * : * : -5.2
+R: 3 0 : 37 : * : * : -0.2
+R: 3 1 : 37 : * : * : -0.2
+R: 3 2 : 37 : * : * : -5.2
+R: 3 3 : 37 : * : * : -0.2
+R: 0 0 : 38 : * : * : -0.2
+R: 0 1 : 38 : * : * : -0.2
+R: 0 2 : 38 : * : * : -5.2
+R: 0 3 : 38 : * : * : -0.2
+R: 1 0 : 38 : * : * : -0.2
+R: 1 1 : 38 : * : * : -0.2
+R: 1 2 : 38 : * : * : -5.2
+R: 1 3 : 38 : * : * : -0.2
+R: 2 0 : 38 : * : * : -5.2
+R: 2 1 : 38 : * : * : -5.2
+R: 2 2 : 38 : * : * : -10.2
+R: 2 3 : 38 : * : * : -5.2
+R: 3 0 : 38 : * : * : -0.2
+R: 3 1 : 38 : * : * : -0.2
+R: 3 2 : 38 : * : * : -5.2
+R: 3 3 : 38 : * : * : -0.2
+R: 0 0 : 39 : * : * : -0.2
+R: 0 1 : 39 : * : * : -0.2
+R: 0 2 : 39 : * : * : -0.2
+R: 0 3 : 39 : * : * : -0.2
+R: 1 0 : 39 : * : * : -0.2
+R: 1 1 : 39 : * : * : -0.2
+R: 1 2 : 39 : * : * : -0.2
+R: 1 3 : 39 : * : * : -0.2
+R: 2 0 : 39 : * : * : -5.2
+R: 2 1 : 39 : * : * : -5.2
+R: 2 2 : 39 : * : * : -5.2
+R: 2 3 : 39 : * : * : -5.2
+R: 3 0 : 39 : * : * : -0.2
+R: 3 1 : 39 : * : * : -0.2
+R: 3 2 : 39 : * : * : -0.2
+R: 3 3 : 39 : * : * : -0.2
+R: 0 0 : 40 : * : * : -0.2
+R: 0 1 : 40 : * : * : -0.2
+R: 0 2 : 40 : * : * : -5.2
+R: 0 3 : 40 : * : * : -0.2
+R: 1 0 : 40 : * : * : -0.2
+R: 1 1 : 40 : * : * : -0.2
+R: 1 2 : 40 : * : * : -5.2
+R: 1 3 : 40 : * : * : -0.2
+R: 2 0 : 40 : * : * : -5.2
+R: 2 1 : 40 : * : * : -5.2
+R: 2 2 : 40 : * : * : -10.2
+R: 2 3 : 40 : * : * : -5.2
+R: 3 0 : 40 : * : * : -0.2
+R: 3 1 : 40 : * : * : -0.2
+R: 3 2 : 40 : * : * : -5.2
+R: 3 3 : 40 : * : * : -0.2
+R: 0 0 : 41 : * : * : -0.2
+R: 0 1 : 41 : * : * : -0.2
+R: 0 2 : 41 : * : * : -0.2
+R: 0 3 : 41 : * : * : -0.2
+R: 1 0 : 41 : * : * : -0.2
+R: 1 1 : 41 : * : * : -0.2
+R: 1 2 : 41 : * : * : -0.2
+R: 1 3 : 41 : * : * : -0.2
+R: 2 0 : 41 : * : * : -5.2
+R: 2 1 : 41 : * : * : -5.2
+R: 2 2 : 41 : * : * : -5.2
+R: 2 3 : 41 : * : * : -5.2
+R: 3 0 : 41 : * : * : -0.2
+R: 3 1 : 41 : * : * : -0.2
+R: 3 2 : 41 : * : * : -0.2
+R: 3 3 : 41 : * : * : -0.2
+R: 0 0 : 42 : * : * : -0.2
+R: 0 1 : 42 : * : * : -0.2
+R: 0 2 : 42 : * : * : -5.2
+R: 0 3 : 42 : * : * : -0.2
+R: 1 0 : 42 : * : * : -0.2
+R: 1 1 : 42 : * : * : -0.2
+R: 1 2 : 42 : * : * : -5.2
+R: 1 3 : 42 : * : * : -0.2
+R: 2 0 : 42 : * : * : -5.2
+R: 2 1 : 42 : * : * : -5.2
+R: 2 2 : 42 : * : * : -10.2
+R: 2 3 : 42 : * : * : -5.2
+R: 3 0 : 42 : * : * : -0.2
+R: 3 1 : 42 : * : * : -0.2
+R: 3 2 : 42 : * : * : -5.2
+R: 3 3 : 42 : * : * : -0.2
+R: 0 0 : 43 : * : * : -0.2
+R: 0 1 : 43 : * : * : -0.2
+R: 0 2 : 43 : * : * : -5.2
+R: 0 3 : 43 : * : * : -0.2
+R: 1 0 : 43 : * : * : -0.2
+R: 1 1 : 43 : * : * : -0.2
+R: 1 2 : 43 : * : * : -5.2
+R: 1 3 : 43 : * : * : -0.2
+R: 2 0 : 43 : * : * : -5.2
+R: 2 1 : 43 : * : * : -5.2
+R: 2 2 : 43 : * : * : -10.2
+R: 2 3 : 43 : * : * : -5.2
+R: 3 0 : 43 : * : * : -0.2
+R: 3 1 : 43 : * : * : -0.2
+R: 3 2 : 43 : * : * : -5.2
+R: 3 3 : 43 : * : * : -0.2
+R: 0 0 : 44 : * : * : -0.2
+R: 0 1 : 44 : * : * : -0.2
+R: 0 2 : 44 : * : * : -5.2
+R: 0 3 : 44 : * : * : -0.2
+R: 1 0 : 44 : * : * : -0.2
+R: 1 1 : 44 : * : * : -0.2
+R: 1 2 : 44 : * : * : -5.2
+R: 1 3 : 44 : * : * : -0.2
+R: 2 0 : 44 : * : * : -5.2
+R: 2 1 : 44 : * : * : -5.2
+R: 2 2 : 44 : * : * : -10.2
+R: 2 3 : 44 : * : * : -5.2
+R: 3 0 : 44 : * : * : -0.2
+R: 3 1 : 44 : * : * : -0.2
+R: 3 2 : 44 : * : * : -5.2
+R: 3 3 : 44 : * : * : -0.2
+R: 0 0 : 45 : * : * : -0.2
+R: 0 1 : 45 : * : * : -0.2
+R: 0 2 : 45 : * : * : -0.2
+R: 0 3 : 45 : * : * : -0.2
+R: 1 0 : 45 : * : * : -0.2
+R: 1 1 : 45 : * : * : -0.2
+R: 1 2 : 45 : * : * : -0.2
+R: 1 3 : 45 : * : * : -0.2
+R: 2 0 : 45 : * : * : -5.2
+R: 2 1 : 45 : * : * : -5.2
+R: 2 2 : 45 : * : * : -5.2
+R: 2 3 : 45 : * : * : -5.2
+R: 3 0 : 45 : * : * : -0.2
+R: 3 1 : 45 : * : * : -0.2
+R: 3 2 : 45 : * : * : -0.2
+R: 3 3 : 45 : * : * : -0.2
+R: 0 0 : 46 : * : * : -0.2
+R: 0 1 : 46 : * : * : -0.2
+R: 0 2 : 46 : * : * : -5.2
+R: 0 3 : 46 : * : * : -0.2
+R: 1 0 : 46 : * : * : -0.2
+R: 1 1 : 46 : * : * : -0.2
+R: 1 2 : 46 : * : * : -5.2
+R: 1 3 : 46 : * : * : -0.2
+R: 2 0 : 46 : * : * : -5.2
+R: 2 1 : 46 : * : * : -5.2
+R: 2 2 : 46 : * : * : -10.2
+R: 2 3 : 46 : * : * : -5.2
+R: 3 0 : 46 : * : * : -0.2
+R: 3 1 : 46 : * : * : -0.2
+R: 3 2 : 46 : * : * : -5.2
+R: 3 3 : 46 : * : * : -0.2
+R: 0 0 : 47 : * : * : -0.2
+R: 0 1 : 47 : * : * : -0.2
+R: 0 2 : 47 : * : * : -0.2
+R: 0 3 : 47 : * : * : -0.2
+R: 1 0 : 47 : * : * : -0.2
+R: 1 1 : 47 : * : * : -0.2
+R: 1 2 : 47 : * : * : -0.2
+R: 1 3 : 47 : * : * : -0.2
+R: 2 0 : 47 : * : * : -5.2
+R: 2 1 : 47 : * : * : -5.2
+R: 2 2 : 47 : * : * : -5.2
+R: 2 3 : 47 : * : * : -5.2
+R: 3 0 : 47 : * : * : -0.2
+R: 3 1 : 47 : * : * : -0.2
+R: 3 2 : 47 : * : * : -0.2
+R: 3 3 : 47 : * : * : -0.2
+R: 0 0 : 48 : * : * : -0.2
+R: 0 1 : 48 : * : * : -0.2
+R: 0 2 : 48 : * : * : 9.8
+R: 0 3 : 48 : * : * : -0.2
+R: 1 0 : 48 : * : * : -0.2
+R: 1 1 : 48 : * : * : -0.2
+R: 1 2 : 48 : * : * : 9.8
+R: 1 3 : 48 : * : * : -0.2
+R: 2 0 : 48 : * : * : -5.2
+R: 2 1 : 48 : * : * : -5.2
+R: 2 2 : 48 : * : * : 4.8
+R: 2 3 : 48 : * : * : -5.2
+R: 3 0 : 48 : * : * : -0.2
+R: 3 1 : 48 : * : * : -0.2
+R: 3 2 : 48 : * : * : 9.8
+R: 3 3 : 48 : * : * : -0.2
+R: 0 0 : 49 : * : * : -0.2
+R: 0 1 : 49 : * : * : -0.2
+R: 0 2 : 49 : * : * : -5.2
+R: 0 3 : 49 : * : * : -0.2
+R: 1 0 : 49 : * : * : -0.2
+R: 1 1 : 49 : * : * : -0.2
+R: 1 2 : 49 : * : * : -5.2
+R: 1 3 : 49 : * : * : -0.2
+R: 2 0 : 49 : * : * : -5.2
+R: 2 1 : 49 : * : * : -5.2
+R: 2 2 : 49 : * : * : -10.2
+R: 2 3 : 49 : * : * : -5.2
+R: 3 0 : 49 : * : * : -0.2
+R: 3 1 : 49 : * : * : -0.2
+R: 3 2 : 49 : * : * : -5.2
+R: 3 3 : 49 : * : * : -0.2
+R: 0 0 : 50 : * : * : -0.2
+R: 0 1 : 50 : * : * : -0.2
+R: 0 2 : 50 : * : * : -5.2
+R: 0 3 : 50 : * : * : -0.2
+R: 1 0 : 50 : * : * : -0.2
+R: 1 1 : 50 : * : * : -0.2
+R: 1 2 : 50 : * : * : -5.2
+R: 1 3 : 50 : * : * : -0.2
+R: 2 0 : 50 : * : * : -5.2
+R: 2 1 : 50 : * : * : -5.2
+R: 2 2 : 50 : * : * : -10.2
+R: 2 3 : 50 : * : * : -5.2
+R: 3 0 : 50 : * : * : -0.2
+R: 3 1 : 50 : * : * : -0.2
+R: 3 2 : 50 : * : * : -5.2
+R: 3 3 : 50 : * : * : -0.2
+R: 0 0 : 51 : * : * : -0.2
+R: 0 1 : 51 : * : * : -0.2
+R: 0 2 : 51 : * : * : -0.2
+R: 0 3 : 51 : * : * : -0.2
+R: 1 0 : 51 : * : * : -0.2
+R: 1 1 : 51 : * : * : -0.2
+R: 1 2 : 51 : * : * : -0.2
+R: 1 3 : 51 : * : * : -0.2
+R: 2 0 : 51 : * : * : -5.2
+R: 2 1 : 51 : * : * : -5.2
+R: 2 2 : 51 : * : * : -5.2
+R: 2 3 : 51 : * : * : -5.2
+R: 3 0 : 51 : * : * : -0.2
+R: 3 1 : 51 : * : * : -0.2
+R: 3 2 : 51 : * : * : -0.2
+R: 3 3 : 51 : * : * : -0.2
+R: 0 0 : 52 : * : * : -0.2
+R: 0 1 : 52 : * : * : -0.2
+R: 0 2 : 52 : * : * : -5.2
+R: 0 3 : 52 : * : * : -0.2
+R: 1 0 : 52 : * : * : -0.2
+R: 1 1 : 52 : * : * : -0.2
+R: 1 2 : 52 : * : * : -5.2
+R: 1 3 : 52 : * : * : -0.2
+R: 2 0 : 52 : * : * : -5.2
+R: 2 1 : 52 : * : * : -5.2
+R: 2 2 : 52 : * : * : 99.8
+R: 2 3 : 52 : * : * : -5.2
+R: 3 0 : 52 : * : * : -0.2
+R: 3 1 : 52 : * : * : -0.2
+R: 3 2 : 52 : * : * : -5.2
+R: 3 3 : 52 : * : * : -0.2
+R: 0 0 : 53 : * : * : -0.2
+R: 0 1 : 53 : * : * : -0.2
+R: 0 2 : 53 : * : * : -0.2
+R: 0 3 : 53 : * : * : -0.2
+R: 1 0 : 53 : * : * : -0.2
+R: 1 1 : 53 : * : * : -0.2
+R: 1 2 : 53 : * : * : -0.2
+R: 1 3 : 53 : * : * : -0.2
+R: 2 0 : 53 : * : * : -5.2
+R: 2 1 : 53 : * : * : -5.2
+R: 2 2 : 53 : * : * : -5.2
+R: 2 3 : 53 : * : * : -5.2
+R: 3 0 : 53 : * : * : -0.2
+R: 3 1 : 53 : * : * : -0.2
+R: 3 2 : 53 : * : * : -0.2
+R: 3 3 : 53 : * : * : -0.2
+R: 0 0 : 54 : * : * : -0.2
+R: 0 1 : 54 : * : * : -0.2
+R: 0 2 : 54 : * : * : -5.2
+R: 0 3 : 54 : * : * : -0.2
+R: 1 0 : 54 : * : * : -0.2
+R: 1 1 : 54 : * : * : -0.2
+R: 1 2 : 54 : * : * : -5.2
+R: 1 3 : 54 : * : * : -0.2
+R: 2 0 : 54 : * : * : -5.2
+R: 2 1 : 54 : * : * : -5.2
+R: 2 2 : 54 : * : * : -10.2
+R: 2 3 : 54 : * : * : -5.2
+R: 3 0 : 54 : * : * : -0.2
+R: 3 1 : 54 : * : * : -0.2
+R: 3 2 : 54 : * : * : -5.2
+R: 3 3 : 54 : * : * : -0.2
+R: 0 0 : 55 : * : * : -0.2
+R: 0 1 : 55 : * : * : -0.2
+R: 0 2 : 55 : * : * : -5.2
+R: 0 3 : 55 : * : * : -0.2
+R: 1 0 : 55 : * : * : -0.2
+R: 1 1 : 55 : * : * : -0.2
+R: 1 2 : 55 : * : * : -5.2
+R: 1 3 : 55 : * : * : -0.2
+R: 2 0 : 55 : * : * : -5.2
+R: 2 1 : 55 : * : * : -5.2
+R: 2 2 : 55 : * : * : -10.2
+R: 2 3 : 55 : * : * : -5.2
+R: 3 0 : 55 : * : * : -0.2
+R: 3 1 : 55 : * : * : -0.2
+R: 3 2 : 55 : * : * : -5.2
+R: 3 3 : 55 : * : * : -0.2
+R: 0 0 : 56 : * : * : -0.2
+R: 0 1 : 56 : * : * : -0.2
+R: 0 2 : 56 : * : * : 9.8
+R: 0 3 : 56 : * : * : -0.2
+R: 1 0 : 56 : * : * : -0.2
+R: 1 1 : 56 : * : * : -0.2
+R: 1 2 : 56 : * : * : 9.8
+R: 1 3 : 56 : * : * : -0.2
+R: 2 0 : 56 : * : * : -5.2
+R: 2 1 : 56 : * : * : -5.2
+R: 2 2 : 56 : * : * : 4.8
+R: 2 3 : 56 : * : * : -5.2
+R: 3 0 : 56 : * : * : -0.2
+R: 3 1 : 56 : * : * : -0.2
+R: 3 2 : 56 : * : * : 9.8
+R: 3 3 : 56 : * : * : -0.2
+R: 0 0 : 57 : * : * : -0.2
+R: 0 1 : 57 : * : * : -0.2
+R: 0 2 : 57 : * : * : -5.2
+R: 0 3 : 57 : * : * : -0.2
+R: 1 0 : 57 : * : * : -0.2
+R: 1 1 : 57 : * : * : -0.2
+R: 1 2 : 57 : * : * : -5.2
+R: 1 3 : 57 : * : * : -0.2
+R: 2 0 : 57 : * : * : -5.2
+R: 2 1 : 57 : * : * : -5.2
+R: 2 2 : 57 : * : * : -10.2
+R: 2 3 : 57 : * : * : -5.2
+R: 3 0 : 57 : * : * : -0.2
+R: 3 1 : 57 : * : * : -0.2
+R: 3 2 : 57 : * : * : -5.2
+R: 3 3 : 57 : * : * : -0.2
+R: 0 0 : 58 : * : * : -0.2
+R: 0 1 : 58 : * : * : -0.2
+R: 0 2 : 58 : * : * : -5.2
+R: 0 3 : 58 : * : * : -0.2
+R: 1 0 : 58 : * : * : -0.2
+R: 1 1 : 58 : * : * : -0.2
+R: 1 2 : 58 : * : * : -5.2
+R: 1 3 : 58 : * : * : -0.2
+R: 2 0 : 58 : * : * : -5.2
+R: 2 1 : 58 : * : * : -5.2
+R: 2 2 : 58 : * : * : -10.2
+R: 2 3 : 58 : * : * : -5.2
+R: 3 0 : 58 : * : * : -0.2
+R: 3 1 : 58 : * : * : -0.2
+R: 3 2 : 58 : * : * : -5.2
+R: 3 3 : 58 : * : * : -0.2
+R: 0 0 : 59 : * : * : -0.2
+R: 0 1 : 59 : * : * : -0.2
+R: 0 2 : 59 : * : * : -0.2
+R: 0 3 : 59 : * : * : -0.2
+R: 1 0 : 59 : * : * : -0.2
+R: 1 1 : 59 : * : * : -0.2
+R: 1 2 : 59 : * : * : -0.2
+R: 1 3 : 59 : * : * : -0.2
+R: 2 0 : 59 : * : * : -5.2
+R: 2 1 : 59 : * : * : -5.2
+R: 2 2 : 59 : * : * : -5.2
+R: 2 3 : 59 : * : * : -5.2
+R: 3 0 : 59 : * : * : -0.2
+R: 3 1 : 59 : * : * : -0.2
+R: 3 2 : 59 : * : * : -0.2
+R: 3 3 : 59 : * : * : -0.2
+R: 0 0 : 60 : * : * : -0.2
+R: 0 1 : 60 : * : * : -0.2
+R: 0 2 : 60 : * : * : -5.2
+R: 0 3 : 60 : * : * : -0.2
+R: 1 0 : 60 : * : * : -0.2
+R: 1 1 : 60 : * : * : -0.2
+R: 1 2 : 60 : * : * : -5.2
+R: 1 3 : 60 : * : * : -0.2
+R: 2 0 : 60 : * : * : -5.2
+R: 2 1 : 60 : * : * : -5.2
+R: 2 2 : 60 : * : * : -10.2
+R: 2 3 : 60 : * : * : -5.2
+R: 3 0 : 60 : * : * : -0.2
+R: 3 1 : 60 : * : * : -0.2
+R: 3 2 : 60 : * : * : -5.2
+R: 3 3 : 60 : * : * : -0.2
+R: 0 0 : 61 : * : * : -0.2
+R: 0 1 : 61 : * : * : -0.2
+R: 0 2 : 61 : * : * : -0.2
+R: 0 3 : 61 : * : * : -0.2
+R: 1 0 : 61 : * : * : -0.2
+R: 1 1 : 61 : * : * : -0.2
+R: 1 2 : 61 : * : * : -0.2
+R: 1 3 : 61 : * : * : -0.2
+R: 2 0 : 61 : * : * : -5.2
+R: 2 1 : 61 : * : * : -5.2
+R: 2 2 : 61 : * : * : -5.2
+R: 2 3 : 61 : * : * : -5.2
+R: 3 0 : 61 : * : * : -0.2
+R: 3 1 : 61 : * : * : -0.2
+R: 3 2 : 61 : * : * : -0.2
+R: 3 3 : 61 : * : * : -0.2
+R: 0 0 : 62 : * : * : -0.2
+R: 0 1 : 62 : * : * : -0.2
+R: 0 2 : 62 : * : * : -5.2
+R: 0 3 : 62 : * : * : -0.2
+R: 1 0 : 62 : * : * : -0.2
+R: 1 1 : 62 : * : * : -0.2
+R: 1 2 : 62 : * : * : -5.2
+R: 1 3 : 62 : * : * : -0.2
+R: 2 0 : 62 : * : * : -5.2
+R: 2 1 : 62 : * : * : -5.2
+R: 2 2 : 62 : * : * : -10.2
+R: 2 3 : 62 : * : * : -5.2
+R: 3 0 : 62 : * : * : -0.2
+R: 3 1 : 62 : * : * : -0.2
+R: 3 2 : 62 : * : * : -5.2
+R: 3 3 : 62 : * : * : -0.2
+R: 0 0 : 63 : * : * : -0.2
+R: 0 1 : 63 : * : * : -0.2
+R: 0 2 : 63 : * : * : -5.2
+R: 0 3 : 63 : * : * : -0.2
+R: 1 0 : 63 : * : * : -0.2
+R: 1 1 : 63 : * : * : -0.2
+R: 1 2 : 63 : * : * : -5.2
+R: 1 3 : 63 : * : * : -0.2
+R: 2 0 : 63 : * : * : -5.2
+R: 2 1 : 63 : * : * : -5.2
+R: 2 2 : 63 : * : * : -10.2
+R: 2 3 : 63 : * : * : -5.2
+R: 3 0 : 63 : * : * : -0.2
+R: 3 1 : 63 : * : * : -0.2
+R: 3 2 : 63 : * : * : -5.2
+R: 3 3 : 63 : * : * : -0.2
+R: 0 0 : 64 : * : * : -0.2
+R: 0 1 : 64 : * : * : -0.2
+R: 0 2 : 64 : * : * : 9.8
+R: 0 3 : 64 : * : * : -0.2
+R: 1 0 : 64 : * : * : -0.2
+R: 1 1 : 64 : * : * : -0.2
+R: 1 2 : 64 : * : * : 9.8
+R: 1 3 : 64 : * : * : -0.2
+R: 2 0 : 64 : * : * : -0.2
+R: 2 1 : 64 : * : * : -0.2
+R: 2 2 : 64 : * : * : 9.8
+R: 2 3 : 64 : * : * : -0.2
+R: 3 0 : 64 : * : * : -0.2
+R: 3 1 : 64 : * : * : -0.2
+R: 3 2 : 64 : * : * : 9.8
+R: 3 3 : 64 : * : * : -0.2
+R: 0 0 : 65 : * : * : -0.2
+R: 0 1 : 65 : * : * : -0.2
+R: 0 2 : 65 : * : * : -5.2
+R: 0 3 : 65 : * : * : -0.2
+R: 1 0 : 65 : * : * : -0.2
+R: 1 1 : 65 : * : * : -0.2
+R: 1 2 : 65 : * : * : -5.2
+R: 1 3 : 65 : * : * : -0.2
+R: 2 0 : 65 : * : * : -0.2
+R: 2 1 : 65 : * : * : -0.2
+R: 2 2 : 65 : * : * : -5.2
+R: 2 3 : 65 : * : * : -0.2
+R: 3 0 : 65 : * : * : -0.2
+R: 3 1 : 65 : * : * : -0.2
+R: 3 2 : 65 : * : * : -5.2
+R: 3 3 : 65 : * : * : -0.2
+R: 0 0 : 66 : * : * : -0.2
+R: 0 1 : 66 : * : * : -0.2
+R: 0 2 : 66 : * : * : -5.2
+R: 0 3 : 66 : * : * : -0.2
+R: 1 0 : 66 : * : * : -0.2
+R: 1 1 : 66 : * : * : -0.2
+R: 1 2 : 66 : * : * : -5.2
+R: 1 3 : 66 : * : * : -0.2
+R: 2 0 : 66 : * : * : -0.2
+R: 2 1 : 66 : * : * : -0.2
+R: 2 2 : 66 : * : * : -5.2
+R: 2 3 : 66 : * : * : -0.2
+R: 3 0 : 66 : * : * : -0.2
+R: 3 1 : 66 : * : * : -0.2
+R: 3 2 : 66 : * : * : -5.2
+R: 3 3 : 66 : * : * : -0.2
+R: 0 0 : 67 : * : * : -0.2
+R: 0 1 : 67 : * : * : -0.2
+R: 0 2 : 67 : * : * : -0.2
+R: 0 3 : 67 : * : * : -0.2
+R: 1 0 : 67 : * : * : -0.2
+R: 1 1 : 67 : * : * : -0.2
+R: 1 2 : 67 : * : * : -0.2
+R: 1 3 : 67 : * : * : -0.2
+R: 2 0 : 67 : * : * : -0.2
+R: 2 1 : 67 : * : * : -0.2
+R: 2 2 : 67 : * : * : -10.2
+R: 2 3 : 67 : * : * : -0.2
+R: 3 0 : 67 : * : * : -0.2
+R: 3 1 : 67 : * : * : -0.2
+R: 3 2 : 67 : * : * : -0.2
+R: 3 3 : 67 : * : * : -0.2
+R: 0 0 : 68 : * : * : -0.2
+R: 0 1 : 68 : * : * : -0.2
+R: 0 2 : 68 : * : * : -5.2
+R: 0 3 : 68 : * : * : -0.2
+R: 1 0 : 68 : * : * : -0.2
+R: 1 1 : 68 : * : * : -0.2
+R: 1 2 : 68 : * : * : -5.2
+R: 1 3 : 68 : * : * : -0.2
+R: 2 0 : 68 : * : * : -5.2
+R: 2 1 : 68 : * : * : -5.2
+R: 2 2 : 68 : * : * : -10.2
+R: 2 3 : 68 : * : * : -5.2
+R: 3 0 : 68 : * : * : -0.2
+R: 3 1 : 68 : * : * : -0.2
+R: 3 2 : 68 : * : * : -5.2
+R: 3 3 : 68 : * : * : -0.2
+R: 0 0 : 69 : * : * : -0.2
+R: 0 1 : 69 : * : * : -0.2
+R: 0 2 : 69 : * : * : -0.2
+R: 0 3 : 69 : * : * : -0.2
+R: 1 0 : 69 : * : * : -0.2
+R: 1 1 : 69 : * : * : -0.2
+R: 1 2 : 69 : * : * : -0.2
+R: 1 3 : 69 : * : * : -0.2
+R: 2 0 : 69 : * : * : -5.2
+R: 2 1 : 69 : * : * : -5.2
+R: 2 2 : 69 : * : * : -5.2
+R: 2 3 : 69 : * : * : -5.2
+R: 3 0 : 69 : * : * : -0.2
+R: 3 1 : 69 : * : * : -0.2
+R: 3 2 : 69 : * : * : -0.2
+R: 3 3 : 69 : * : * : -0.2
+R: 0 0 : 70 : * : * : -0.2
+R: 0 1 : 70 : * : * : -0.2
+R: 0 2 : 70 : * : * : -5.2
+R: 0 3 : 70 : * : * : -0.2
+R: 1 0 : 70 : * : * : -0.2
+R: 1 1 : 70 : * : * : -0.2
+R: 1 2 : 70 : * : * : -5.2
+R: 1 3 : 70 : * : * : -0.2
+R: 2 0 : 70 : * : * : -5.2
+R: 2 1 : 70 : * : * : -5.2
+R: 2 2 : 70 : * : * : -10.2
+R: 2 3 : 70 : * : * : -5.2
+R: 3 0 : 70 : * : * : -0.2
+R: 3 1 : 70 : * : * : -0.2
+R: 3 2 : 70 : * : * : -5.2
+R: 3 3 : 70 : * : * : -0.2
+R: 0 0 : 71 : * : * : -0.2
+R: 0 1 : 71 : * : * : -0.2
+R: 0 2 : 71 : * : * : -5.2
+R: 0 3 : 71 : * : * : -0.2
+R: 1 0 : 71 : * : * : -0.2
+R: 1 1 : 71 : * : * : -0.2
+R: 1 2 : 71 : * : * : -5.2
+R: 1 3 : 71 : * : * : -0.2
+R: 2 0 : 71 : * : * : -5.2
+R: 2 1 : 71 : * : * : -5.2
+R: 2 2 : 71 : * : * : -10.2
+R: 2 3 : 71 : * : * : -5.2
+R: 3 0 : 71 : * : * : -0.2
+R: 3 1 : 71 : * : * : -0.2
+R: 3 2 : 71 : * : * : -5.2
+R: 3 3 : 71 : * : * : -0.2
+R: 0 0 : 72 : * : * : -0.2
+R: 0 1 : 72 : * : * : -0.2
+R: 0 2 : 72 : * : * : 9.8
+R: 0 3 : 72 : * : * : -0.2
+R: 1 0 : 72 : * : * : -0.2
+R: 1 1 : 72 : * : * : -0.2
+R: 1 2 : 72 : * : * : 9.8
+R: 1 3 : 72 : * : * : -0.2
+R: 2 0 : 72 : * : * : -5.2
+R: 2 1 : 72 : * : * : -5.2
+R: 2 2 : 72 : * : * : 4.8
+R: 2 3 : 72 : * : * : -5.2
+R: 3 0 : 72 : * : * : -0.2
+R: 3 1 : 72 : * : * : -0.2
+R: 3 2 : 72 : * : * : 9.8
+R: 3 3 : 72 : * : * : -0.2
+R: 0 0 : 73 : * : * : -0.2
+R: 0 1 : 73 : * : * : -0.2
+R: 0 2 : 73 : * : * : -5.2
+R: 0 3 : 73 : * : * : -0.2
+R: 1 0 : 73 : * : * : -0.2
+R: 1 1 : 73 : * : * : -0.2
+R: 1 2 : 73 : * : * : -5.2
+R: 1 3 : 73 : * : * : -0.2
+R: 2 0 : 73 : * : * : -5.2
+R: 2 1 : 73 : * : * : -5.2
+R: 2 2 : 73 : * : * : -10.2
+R: 2 3 : 73 : * : * : -5.2
+R: 3 0 : 73 : * : * : -0.2
+R: 3 1 : 73 : * : * : -0.2
+R: 3 2 : 73 : * : * : -5.2
+R: 3 3 : 73 : * : * : -0.2
+R: 0 0 : 74 : * : * : -0.2
+R: 0 1 : 74 : * : * : -0.2
+R: 0 2 : 74 : * : * : -5.2
+R: 0 3 : 74 : * : * : -0.2
+R: 1 0 : 74 : * : * : -0.2
+R: 1 1 : 74 : * : * : -0.2
+R: 1 2 : 74 : * : * : -5.2
+R: 1 3 : 74 : * : * : -0.2
+R: 2 0 : 74 : * : * : -5.2
+R: 2 1 : 74 : * : * : -5.2
+R: 2 2 : 74 : * : * : -10.2
+R: 2 3 : 74 : * : * : -5.2
+R: 3 0 : 74 : * : * : -0.2
+R: 3 1 : 74 : * : * : -0.2
+R: 3 2 : 74 : * : * : -5.2
+R: 3 3 : 74 : * : * : -0.2
+R: 0 0 : 75 : * : * : -0.2
+R: 0 1 : 75 : * : * : -0.2
+R: 0 2 : 75 : * : * : -0.2
+R: 0 3 : 75 : * : * : -0.2
+R: 1 0 : 75 : * : * : -0.2
+R: 1 1 : 75 : * : * : -0.2
+R: 1 2 : 75 : * : * : -0.2
+R: 1 3 : 75 : * : * : -0.2
+R: 2 0 : 75 : * : * : -5.2
+R: 2 1 : 75 : * : * : -5.2
+R: 2 2 : 75 : * : * : -5.2
+R: 2 3 : 75 : * : * : -5.2
+R: 3 0 : 75 : * : * : -0.2
+R: 3 1 : 75 : * : * : -0.2
+R: 3 2 : 75 : * : * : -0.2
+R: 3 3 : 75 : * : * : -0.2
+R: 0 0 : 76 : * : * : -0.2
+R: 0 1 : 76 : * : * : -0.2
+R: 0 2 : 76 : * : * : -5.2
+R: 0 3 : 76 : * : * : -0.2
+R: 1 0 : 76 : * : * : -0.2
+R: 1 1 : 76 : * : * : -0.2
+R: 1 2 : 76 : * : * : -5.2
+R: 1 3 : 76 : * : * : -0.2
+R: 2 0 : 76 : * : * : -0.2
+R: 2 1 : 76 : * : * : -0.2
+R: 2 2 : 76 : * : * : -5.2
+R: 2 3 : 76 : * : * : -0.2
+R: 3 0 : 76 : * : * : -0.2
+R: 3 1 : 76 : * : * : -0.2
+R: 3 2 : 76 : * : * : -5.2
+R: 3 3 : 76 : * : * : -0.2
+R: 0 0 : 77 : * : * : -0.2
+R: 0 1 : 77 : * : * : -0.2
+R: 0 2 : 77 : * : * : -0.2
+R: 0 3 : 77 : * : * : -0.2
+R: 1 0 : 77 : * : * : -0.2
+R: 1 1 : 77 : * : * : -0.2
+R: 1 2 : 77 : * : * : -0.2
+R: 1 3 : 77 : * : * : -0.2
+R: 2 0 : 77 : * : * : -0.2
+R: 2 1 : 77 : * : * : -0.2
+R: 2 2 : 77 : * : * : -0.2
+R: 2 3 : 77 : * : * : -0.2
+R: 3 0 : 77 : * : * : -0.2
+R: 3 1 : 77 : * : * : -0.2
+R: 3 2 : 77 : * : * : -0.2
+R: 3 3 : 77 : * : * : -0.2
+R: 0 0 : 78 : * : * : -0.2
+R: 0 1 : 78 : * : * : -0.2
+R: 0 2 : 78 : * : * : -5.2
+R: 0 3 : 78 : * : * : -0.2
+R: 1 0 : 78 : * : * : -0.2
+R: 1 1 : 78 : * : * : -0.2
+R: 1 2 : 78 : * : * : -5.2
+R: 1 3 : 78 : * : * : -0.2
+R: 2 0 : 78 : * : * : -0.2
+R: 2 1 : 78 : * : * : -0.2
+R: 2 2 : 78 : * : * : -5.2
+R: 2 3 : 78 : * : * : -0.2
+R: 3 0 : 78 : * : * : -0.2
+R: 3 1 : 78 : * : * : -0.2
+R: 3 2 : 78 : * : * : -5.2
+R: 3 3 : 78 : * : * : -0.2
+R: 0 0 : 79 : * : * : -0.2
+R: 0 1 : 79 : * : * : -0.2
+R: 0 2 : 79 : * : * : -5.2
+R: 0 3 : 79 : * : * : -0.2
+R: 1 0 : 79 : * : * : -0.2
+R: 1 1 : 79 : * : * : -0.2
+R: 1 2 : 79 : * : * : -5.2
+R: 1 3 : 79 : * : * : -0.2
+R: 2 0 : 79 : * : * : -0.2
+R: 2 1 : 79 : * : * : -0.2
+R: 2 2 : 79 : * : * : -5.2
+R: 2 3 : 79 : * : * : -0.2
+R: 3 0 : 79 : * : * : -0.2
+R: 3 1 : 79 : * : * : -0.2
+R: 3 2 : 79 : * : * : -5.2
+R: 3 3 : 79 : * : * : -0.2
+R: 0 0 : 80 : * : * : -0.2
+R: 0 1 : 80 : * : * : -0.2
+R: 0 2 : 80 : * : * : 9.8
+R: 0 3 : 80 : * : * : -0.2
+R: 1 0 : 80 : * : * : -0.2
+R: 1 1 : 80 : * : * : -0.2
+R: 1 2 : 80 : * : * : 9.8
+R: 1 3 : 80 : * : * : -0.2
+R: 2 0 : 80 : * : * : -0.2
+R: 2 1 : 80 : * : * : -0.2
+R: 2 2 : 80 : * : * : 9.8
+R: 2 3 : 80 : * : * : -0.2
+R: 3 0 : 80 : * : * : -0.2
+R: 3 1 : 80 : * : * : -0.2
+R: 3 2 : 80 : * : * : 9.8
+R: 3 3 : 80 : * : * : -0.2
+R: 0 0 : 81 : * : * : -0.2
+R: 0 1 : 81 : * : * : -0.2
+R: 0 2 : 81 : * : * : -5.2
+R: 0 3 : 81 : * : * : -0.2
+R: 1 0 : 81 : * : * : -0.2
+R: 1 1 : 81 : * : * : -0.2
+R: 1 2 : 81 : * : * : -5.2
+R: 1 3 : 81 : * : * : -0.2
+R: 2 0 : 81 : * : * : -0.2
+R: 2 1 : 81 : * : * : -0.2
+R: 2 2 : 81 : * : * : -5.2
+R: 2 3 : 81 : * : * : -0.2
+R: 3 0 : 81 : * : * : -0.2
+R: 3 1 : 81 : * : * : -0.2
+R: 3 2 : 81 : * : * : -5.2
+R: 3 3 : 81 : * : * : -0.2
+R: 0 0 : 82 : * : * : -0.2
+R: 0 1 : 82 : * : * : -0.2
+R: 0 2 : 82 : * : * : -5.2
+R: 0 3 : 82 : * : * : -0.2
+R: 1 0 : 82 : * : * : -0.2
+R: 1 1 : 82 : * : * : -0.2
+R: 1 2 : 82 : * : * : -5.2
+R: 1 3 : 82 : * : * : -0.2
+R: 2 0 : 82 : * : * : -0.2
+R: 2 1 : 82 : * : * : -0.2
+R: 2 2 : 82 : * : * : -5.2
+R: 2 3 : 82 : * : * : -0.2
+R: 3 0 : 82 : * : * : -0.2
+R: 3 1 : 82 : * : * : -0.2
+R: 3 2 : 82 : * : * : -5.2
+R: 3 3 : 82 : * : * : -0.2
+R: 0 0 : 83 : * : * : -0.2
+R: 0 1 : 83 : * : * : -0.2
+R: 0 2 : 83 : * : * : -0.2
+R: 0 3 : 83 : * : * : -0.2
+R: 1 0 : 83 : * : * : -0.2
+R: 1 1 : 83 : * : * : -0.2
+R: 1 2 : 83 : * : * : -0.2
+R: 1 3 : 83 : * : * : -0.2
+R: 2 0 : 83 : * : * : -0.2
+R: 2 1 : 83 : * : * : -0.2
+R: 2 2 : 83 : * : * : -0.2
+R: 2 3 : 83 : * : * : -0.2
+R: 3 0 : 83 : * : * : -0.2
+R: 3 1 : 83 : * : * : -0.2
+R: 3 2 : 83 : * : * : -0.2
+R: 3 3 : 83 : * : * : -0.2
+R: 0 0 : 84 : * : * : -0.2
+R: 0 1 : 84 : * : * : -0.2
+R: 0 2 : 84 : * : * : 9.8
+R: 0 3 : 84 : * : * : -0.2
+R: 1 0 : 84 : * : * : -0.2
+R: 1 1 : 84 : * : * : -0.2
+R: 1 2 : 84 : * : * : 9.8
+R: 1 3 : 84 : * : * : -0.2
+R: 2 0 : 84 : * : * : -5.2
+R: 2 1 : 84 : * : * : -5.2
+R: 2 2 : 84 : * : * : 4.8
+R: 2 3 : 84 : * : * : -5.2
+R: 3 0 : 84 : * : * : -0.2
+R: 3 1 : 84 : * : * : -0.2
+R: 3 2 : 84 : * : * : 9.8
+R: 3 3 : 84 : * : * : -0.2
+R: 0 0 : 85 : * : * : -0.2
+R: 0 1 : 85 : * : * : -0.2
+R: 0 2 : 85 : * : * : -5.2
+R: 0 3 : 85 : * : * : -0.2
+R: 1 0 : 85 : * : * : -0.2
+R: 1 1 : 85 : * : * : -0.2
+R: 1 2 : 85 : * : * : -5.2
+R: 1 3 : 85 : * : * : -0.2
+R: 2 0 : 85 : * : * : -5.2
+R: 2 1 : 85 : * : * : -5.2
+R: 2 2 : 85 : * : * : -10.2
+R: 2 3 : 85 : * : * : -5.2
+R: 3 0 : 85 : * : * : -0.2
+R: 3 1 : 85 : * : * : -0.2
+R: 3 2 : 85 : * : * : -5.2
+R: 3 3 : 85 : * : * : -0.2
+R: 0 0 : 86 : * : * : -0.2
+R: 0 1 : 86 : * : * : -0.2
+R: 0 2 : 86 : * : * : -5.2
+R: 0 3 : 86 : * : * : -0.2
+R: 1 0 : 86 : * : * : -0.2
+R: 1 1 : 86 : * : * : -0.2
+R: 1 2 : 86 : * : * : -5.2
+R: 1 3 : 86 : * : * : -0.2
+R: 2 0 : 86 : * : * : -5.2
+R: 2 1 : 86 : * : * : -5.2
+R: 2 2 : 86 : * : * : -10.2
+R: 2 3 : 86 : * : * : -5.2
+R: 3 0 : 86 : * : * : -0.2
+R: 3 1 : 86 : * : * : -0.2
+R: 3 2 : 86 : * : * : -5.2
+R: 3 3 : 86 : * : * : -0.2
+R: 0 0 : 87 : * : * : -0.2
+R: 0 1 : 87 : * : * : -0.2
+R: 0 2 : 87 : * : * : -5.2
+R: 0 3 : 87 : * : * : -0.2
+R: 1 0 : 87 : * : * : -0.2
+R: 1 1 : 87 : * : * : -0.2
+R: 1 2 : 87 : * : * : -5.2
+R: 1 3 : 87 : * : * : -0.2
+R: 2 0 : 87 : * : * : -5.2
+R: 2 1 : 87 : * : * : -5.2
+R: 2 2 : 87 : * : * : -10.2
+R: 2 3 : 87 : * : * : -5.2
+R: 3 0 : 87 : * : * : -0.2
+R: 3 1 : 87 : * : * : -0.2
+R: 3 2 : 87 : * : * : -5.2
+R: 3 3 : 87 : * : * : -0.2
+R: 0 0 : 88 : * : * : -0.2
+R: 0 1 : 88 : * : * : -0.2
+R: 0 2 : 88 : * : * : 9.8
+R: 0 3 : 88 : * : * : -0.2
+R: 1 0 : 88 : * : * : -0.2
+R: 1 1 : 88 : * : * : -0.2
+R: 1 2 : 88 : * : * : 9.8
+R: 1 3 : 88 : * : * : -0.2
+R: 2 0 : 88 : * : * : -5.2
+R: 2 1 : 88 : * : * : -5.2
+R: 2 2 : 88 : * : * : 4.8
+R: 2 3 : 88 : * : * : -5.2
+R: 3 0 : 88 : * : * : -0.2
+R: 3 1 : 88 : * : * : -0.2
+R: 3 2 : 88 : * : * : 9.8
+R: 3 3 : 88 : * : * : -0.2
+R: 0 0 : 89 : * : * : -0.2
+R: 0 1 : 89 : * : * : -0.2
+R: 0 2 : 89 : * : * : -5.2
+R: 0 3 : 89 : * : * : -0.2
+R: 1 0 : 89 : * : * : -0.2
+R: 1 1 : 89 : * : * : -0.2
+R: 1 2 : 89 : * : * : -5.2
+R: 1 3 : 89 : * : * : -0.2
+R: 2 0 : 89 : * : * : -5.2
+R: 2 1 : 89 : * : * : -5.2
+R: 2 2 : 89 : * : * : -10.2
+R: 2 3 : 89 : * : * : -5.2
+R: 3 0 : 89 : * : * : -0.2
+R: 3 1 : 89 : * : * : -0.2
+R: 3 2 : 89 : * : * : -5.2
+R: 3 3 : 89 : * : * : -0.2
+R: 0 0 : 90 : * : * : -0.2
+R: 0 1 : 90 : * : * : -0.2
+R: 0 2 : 90 : * : * : -5.2
+R: 0 3 : 90 : * : * : -0.2
+R: 1 0 : 90 : * : * : -0.2
+R: 1 1 : 90 : * : * : -0.2
+R: 1 2 : 90 : * : * : -5.2
+R: 1 3 : 90 : * : * : -0.2
+R: 2 0 : 90 : * : * : -5.2
+R: 2 1 : 90 : * : * : -5.2
+R: 2 2 : 90 : * : * : -10.2
+R: 2 3 : 90 : * : * : -5.2
+R: 3 0 : 90 : * : * : -0.2
+R: 3 1 : 90 : * : * : -0.2
+R: 3 2 : 90 : * : * : -5.2
+R: 3 3 : 90 : * : * : -0.2
+R: 0 0 : 91 : * : * : -0.2
+R: 0 1 : 91 : * : * : -0.2
+R: 0 2 : 91 : * : * : -5.2
+R: 0 3 : 91 : * : * : -0.2
+R: 1 0 : 91 : * : * : -0.2
+R: 1 1 : 91 : * : * : -0.2
+R: 1 2 : 91 : * : * : -5.2
+R: 1 3 : 91 : * : * : -0.2
+R: 2 0 : 91 : * : * : -5.2
+R: 2 1 : 91 : * : * : -5.2
+R: 2 2 : 91 : * : * : -10.2
+R: 2 3 : 91 : * : * : -5.2
+R: 3 0 : 91 : * : * : -0.2
+R: 3 1 : 91 : * : * : -0.2
+R: 3 2 : 91 : * : * : -5.2
+R: 3 3 : 91 : * : * : -0.2
+R: 0 0 : 92 : * : * : -0.2
+R: 0 1 : 92 : * : * : -0.2
+R: 0 2 : 92 : * : * : 9.8
+R: 0 3 : 92 : * : * : -0.2
+R: 1 0 : 92 : * : * : -0.2
+R: 1 1 : 92 : * : * : -0.2
+R: 1 2 : 92 : * : * : 9.8
+R: 1 3 : 92 : * : * : -0.2
+R: 2 0 : 92 : * : * : -5.2
+R: 2 1 : 92 : * : * : -5.2
+R: 2 2 : 92 : * : * : 4.8
+R: 2 3 : 92 : * : * : -5.2
+R: 3 0 : 92 : * : * : -0.2
+R: 3 1 : 92 : * : * : -0.2
+R: 3 2 : 92 : * : * : 9.8
+R: 3 3 : 92 : * : * : -0.2
+R: 0 0 : 93 : * : * : -0.2
+R: 0 1 : 93 : * : * : -0.2
+R: 0 2 : 93 : * : * : -5.2
+R: 0 3 : 93 : * : * : -0.2
+R: 1 0 : 93 : * : * : -0.2
+R: 1 1 : 93 : * : * : -0.2
+R: 1 2 : 93 : * : * : -5.2
+R: 1 3 : 93 : * : * : -0.2
+R: 2 0 : 93 : * : * : -5.2
+R: 2 1 : 93 : * : * : -5.2
+R: 2 2 : 93 : * : * : -10.2
+R: 2 3 : 93 : * : * : -5.2
+R: 3 0 : 93 : * : * : -0.2
+R: 3 1 : 93 : * : * : -0.2
+R: 3 2 : 93 : * : * : -5.2
+R: 3 3 : 93 : * : * : -0.2
+R: 0 0 : 94 : * : * : -0.2
+R: 0 1 : 94 : * : * : -0.2
+R: 0 2 : 94 : * : * : -5.2
+R: 0 3 : 94 : * : * : -0.2
+R: 1 0 : 94 : * : * : -0.2
+R: 1 1 : 94 : * : * : -0.2
+R: 1 2 : 94 : * : * : -5.2
+R: 1 3 : 94 : * : * : -0.2
+R: 2 0 : 94 : * : * : -5.2
+R: 2 1 : 94 : * : * : -5.2
+R: 2 2 : 94 : * : * : -10.2
+R: 2 3 : 94 : * : * : -5.2
+R: 3 0 : 94 : * : * : -0.2
+R: 3 1 : 94 : * : * : -0.2
+R: 3 2 : 94 : * : * : -5.2
+R: 3 3 : 94 : * : * : -0.2
+R: 0 0 : 95 : * : * : -0.2
+R: 0 1 : 95 : * : * : -0.2
+R: 0 2 : 95 : * : * : -5.2
+R: 0 3 : 95 : * : * : -0.2
+R: 1 0 : 95 : * : * : -0.2
+R: 1 1 : 95 : * : * : -0.2
+R: 1 2 : 95 : * : * : -5.2
+R: 1 3 : 95 : * : * : -0.2
+R: 2 0 : 95 : * : * : -5.2
+R: 2 1 : 95 : * : * : -5.2
+R: 2 2 : 95 : * : * : -10.2
+R: 2 3 : 95 : * : * : -5.2
+R: 3 0 : 95 : * : * : -0.2
+R: 3 1 : 95 : * : * : -0.2
+R: 3 2 : 95 : * : * : -5.2
+R: 3 3 : 95 : * : * : -0.2
+R: 0 0 : 96 : * : * : -0.2
+R: 0 1 : 96 : * : * : -0.2
+R: 0 2 : 96 : * : * : 9.8
+R: 0 3 : 96 : * : * : -0.2
+R: 1 0 : 96 : * : * : -0.2
+R: 1 1 : 96 : * : * : -0.2
+R: 1 2 : 96 : * : * : 9.8
+R: 1 3 : 96 : * : * : -0.2
+R: 2 0 : 96 : * : * : -0.2
+R: 2 1 : 96 : * : * : -0.2
+R: 2 2 : 96 : * : * : 9.8
+R: 2 3 : 96 : * : * : -0.2
+R: 3 0 : 96 : * : * : -0.2
+R: 3 1 : 96 : * : * : -0.2
+R: 3 2 : 96 : * : * : 9.8
+R: 3 3 : 96 : * : * : -0.2
+R: 0 0 : 97 : * : * : -0.2
+R: 0 1 : 97 : * : * : -0.2
+R: 0 2 : 97 : * : * : -5.2
+R: 0 3 : 97 : * : * : -0.2
+R: 1 0 : 97 : * : * : -0.2
+R: 1 1 : 97 : * : * : -0.2
+R: 1 2 : 97 : * : * : -5.2
+R: 1 3 : 97 : * : * : -0.2
+R: 2 0 : 97 : * : * : -0.2
+R: 2 1 : 97 : * : * : -0.2
+R: 2 2 : 97 : * : * : -5.2
+R: 2 3 : 97 : * : * : -0.2
+R: 3 0 : 97 : * : * : -0.2
+R: 3 1 : 97 : * : * : -0.2
+R: 3 2 : 97 : * : * : -5.2
+R: 3 3 : 97 : * : * : -0.2
+R: 0 0 : 98 : * : * : -0.2
+R: 0 1 : 98 : * : * : -0.2
+R: 0 2 : 98 : * : * : -5.2
+R: 0 3 : 98 : * : * : -0.2
+R: 1 0 : 98 : * : * : -0.2
+R: 1 1 : 98 : * : * : -0.2
+R: 1 2 : 98 : * : * : -5.2
+R: 1 3 : 98 : * : * : -0.2
+R: 2 0 : 98 : * : * : -0.2
+R: 2 1 : 98 : * : * : -0.2
+R: 2 2 : 98 : * : * : -5.2
+R: 2 3 : 98 : * : * : -0.2
+R: 3 0 : 98 : * : * : -0.2
+R: 3 1 : 98 : * : * : -0.2
+R: 3 2 : 98 : * : * : -5.2
+R: 3 3 : 98 : * : * : -0.2
+R: 0 0 : 99 : * : * : -0.2
+R: 0 1 : 99 : * : * : -0.2
+R: 0 2 : 99 : * : * : -5.2
+R: 0 3 : 99 : * : * : -0.2
+R: 1 0 : 99 : * : * : -0.2
+R: 1 1 : 99 : * : * : -0.2
+R: 1 2 : 99 : * : * : -5.2
+R: 1 3 : 99 : * : * : -0.2
+R: 2 0 : 99 : * : * : -0.2
+R: 2 1 : 99 : * : * : -0.2
+R: 2 2 : 99 : * : * : -5.2
+R: 2 3 : 99 : * : * : -0.2
+R: 3 0 : 99 : * : * : -0.2
+R: 3 1 : 99 : * : * : -0.2
+R: 3 2 : 99 : * : * : -5.2
+R: 3 3 : 99 : * : * : -0.2
diff --git a/code/src/problem_examples/dpomdp/examples_utils.cpp b/code/src/problem_examples/dpomdp/examples_utils.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7dc3052c7e3d19547bf389c344704ac088de0e9e
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/examples_utils.cpp
@@ -0,0 +1,28 @@
+#include "examples_utils.hpp"
+
+namespace problem_examples{
+
+
+void CartesianRecurse(vector<vector<int>> &accum, vector<int> stack, vector<vector<int>> sequences, int index){
+    vector<int> sequence = sequences[index];
+    for (int i : sequence){
+        stack.push_back(i);
+        if (index == 0)
+            accum.push_back(stack);
+        else
+            CartesianRecurse(accum, stack, sequences, index - 1);
+        stack.pop_back();
+    }
+}
+
+
+vector<vector<int>> CartesianProduct(vector<vector<int>> sequences){
+    vector<vector<int>> accum;
+    vector<int> stack;
+    if (sequences.size() > 0)
+        CartesianRecurse(accum, stack, sequences, sequences.size() - 1);
+    return accum;
+}
+
+
+}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/examples_utils.hpp b/code/src/problem_examples/dpomdp/examples_utils.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..cfd8268c6efd5fca25a67ca10d75247bfa74d012
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/examples_utils.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include <math.h>
+#include <algorithm>
+#include <vector>
+
+namespace problem_examples{
+
+    using namespace std;
+
+    void CartesianRecurse(vector<vector<int>> &accum, vector<int> stack, vector<vector<int>> sequences, int index);
+    vector<vector<int>> CartesianProduct(vector<vector<int>> sequences);
+
+}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/grid3x3.cpp b/code/src/problem_examples/dpomdp/grid3x3.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..65f6b7420c690723bb45b768c99e0a5ea94cec46
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/grid3x3.cpp
@@ -0,0 +1,161 @@
+#include "../../core/_module.hpp"
+#include "examples_utils.hpp"
+#include "grid3x3.hpp"
+
+#include <math.h>
+#include <algorithm>
+
+
+namespace problem_examples{
+namespace grid3x3{
+
+using namespace std;
+using namespace common;
+
+
+void generate(int agents_number){
+    //-- general
+	PROBLEM.discount = 1.0;
+	PROBLEM.criterion_reward = true;
+	PROBLEM.agents_number = agents_number;
+    PROBLEM.last_agent = PROBLEM.agents_number - 1;
+
+    //-- states
+    //-- initial state: agents are in cells 2 or 6 (goals are cells 0 or 8)
+    PROBLEM.states_number = pow(CELLS_NUMBER, agents_number);
+    
+    vector<vector<int>> states_to_indivCells(PROBLEM.states_number);
+    vector<int> cells_max(agents_number, CELLS_NUMBER);
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        states_to_indivCells.at(x) = utils::get_indivIndices(cells_max, agents_number, x);
+    }
+
+    vector<int> cells_start(agents_number);
+    for (int agent = 0; agent < agents_number; agent++){
+        int start = agent % 2 == 0 ? WIDTH - 1 : CELLS_NUMBER - WIDTH;
+        cells_start.at(agent) = start;
+    }
+    int x_start = utils::get_jointIndex(cells_start, cells_max, agents_number);
+    PROBLEM.belief_init = Vector(PROBLEM.states_number, 0.0);
+    PROBLEM.belief_init[x_start] = 1;
+
+    //-- observations:
+    //-- for each agent: its own cell
+    PROBLEM.observations_joint_number = pow(CELLS_NUMBER, agents_number);
+    PROBLEM.observations_number_byAgent = vector<int>(PROBLEM.agents_number, CELLS_NUMBER);
+    
+    //-- actions
+    //-- for each agent: 5 actions (4 directions + WAIT)
+    PROBLEM.actions_joint_number = pow(5, PROBLEM.agents_number);  
+    PROBLEM.actions_number_byAgent = vector<int>(PROBLEM.agents_number, 5);
+    vector<vector<int>> jActions_to_individualActions(PROBLEM.actions_joint_number);
+    for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+        jActions_to_individualActions.at(u) = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, u);
+    }
+
+    //-- transitions: p(y |u, x), where (y, u, x) = (next_state, action, state)
+    //-- move is stochastic
+
+    //-- individual probas
+    double*** probas_nextCell;
+    probas_nextCell = new double**[CELLS_NUMBER];
+    for (int cell = 0; cell < CELLS_NUMBER; cell++){
+        probas_nextCell[cell] = new double*[5];
+        for (int indiv_u = 0; indiv_u < 5; indiv_u++){
+            probas_nextCell[cell][indiv_u] = new double[CELLS_NUMBER];
+            vector<double> probas = get_probas_indiv_next(cell, indiv_u);
+            for (int next_cell = 0; next_cell < CELLS_NUMBER; next_cell++){
+                probas_nextCell[cell][indiv_u][next_cell] = probas[next_cell];
+            }
+        }
+    }
+
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        const vector<int> & cells = states_to_indivCells.at(x);
+        for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+            const vector<int> & indivs_u = jActions_to_individualActions.at(u);
+            double check = 0;
+            for (int y = 0; y < PROBLEM.states_number; y++){
+                const vector<int> & cells_next = states_to_indivCells.at(y);
+                double proba = 1;
+                for (int agent = 0; agent < agents_number; agent++){
+                    int cell = cells[agent];
+                    int indiv_u = indivs_u[agent];
+                    int next_cell = cells_next[agent];
+                    double p_nextCell = probas_nextCell[cell][indiv_u][next_cell];
+                    proba *= p_nextCell;
+                }
+                if (proba > 1e-8)
+                    PROBLEM.dynamics_T[u][x][y] = proba;
+                check += proba;
+            }
+            assert(abs(1 - check) < 1e-5);
+        }
+    }
+
+
+    //-- transitions: p(z |u, y), where (z, u, y) = (observation, action, next_state)
+    for (int y = 0; y < PROBLEM.states_number; y++){
+        const vector<int> & cells_next = states_to_indivCells.at(y);
+        for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+            int obs = utils::get_jointIndex(cells_next, cells_max, agents_number);
+            PROBLEM.dynamics_O[u][y][obs] = 1;
+        }
+    }
+
+    //-- rewards: r(x, u), where (x, u) = (state, action)
+    //-- agents must meet in cells 0 or in cells 8
+    //-- reward = 1 if all agents are in these cells
+    //-- reward = 0 if no agents are in these cells
+    //-- reward = -1 else (i.e. if some but not all agents are in these cells)
+    PROBLEM.rewards_matrix = Matrix<double>(PROBLEM.states_number, PROBLEM.actions_joint_number, 0);
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        const vector<int> & cells = states_to_indivCells.at(x);
+        int first_goal_number = std::count(cells.begin(), cells.end(), 0);
+        int second_goal_number = std::count(cells.begin(), cells.end(), CELLS_NUMBER);
+        double reward = .0;
+        if (first_goal_number == PROBLEM.agents_number || second_goal_number == PROBLEM.agents_number)
+            reward = 1.0;
+        else if (first_goal_number == 0 && second_goal_number == 0)
+            reward = 0;
+        else
+            reward = -1;
+        for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+            PROBLEM.rewards_matrix(x, u) = reward;
+        }
+    }
+
+    PROBLEM.finalize();
+}
+
+//      0  1  2
+//      3  4  5
+//      6  7  8
+static const int LEFT = 0, RIGHT = 1, UP = 2, DOWN = 3, WAIT = 4; 
+static const vector<vector<int>> NEXT { {0, 0, 1, 3, 3, 4, 6, 6, 7}, // action LEFT
+                                        {1, 2, 2, 4, 5, 5, 7, 8, 8}, // action RIGHT
+                                        {0, 1, 2, 0, 1, 2, 3, 4, 5}, // action UP
+                                        {3, 4, 5, 6, 7, 8, 6, 7, 8}, // action DOWN
+                                        {0, 1, 2, 3, 4, 5, 6, 7, 8}}; //action WAIT
+vector<double> get_probas_indiv_next(int cell, int indiv_u){
+    vector<double> probas_y(CELLS_NUMBER, 0);
+    
+    int regular_next = NEXT[indiv_u][cell];
+
+    if (indiv_u == WAIT){
+        //-- with action WAIT, we are sure to stay
+        probas_y[regular_next] = 1.0;    
+    }
+    else{
+        //-- possible slippery
+        probas_y[regular_next] = .5;
+        for (int dir: {LEFT, RIGHT, UP, DOWN, WAIT}){
+            int slip_next = NEXT[dir][cell];
+            probas_y[slip_next] += .1;
+        }
+    }
+    return probas_y;
+}
+
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/grid3x3.hpp b/code/src/problem_examples/dpomdp/grid3x3.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..7ef726ceb7189ede76070e9ac9c14f788e1b29eb
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/grid3x3.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include <vector>
+
+
+namespace problem_examples{
+namespace grid3x3{
+    static const int WIDTH = 3;
+    static const int CELLS_NUMBER = WIDTH * WIDTH;
+    void generate(int agents_number);
+    vector<double> get_probas_indiv_next(int cell, int indiv_u);
+
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/gridsmall.cpp b/code/src/problem_examples/dpomdp/gridsmall.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fe40bb5379c73767c19351a4d3636ee54faed0ce
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/gridsmall.cpp
@@ -0,0 +1,184 @@
+#include "../../core/_module.hpp"
+#include "examples_utils.hpp"
+#include "gridsmall.hpp"
+
+#include <math.h>
+#include <algorithm>
+
+
+namespace problem_examples{
+namespace gridsmall{
+
+using namespace std;
+using namespace common;
+
+/////////////////
+//
+//
+//
+////////////////
+
+// /**
+//  * 4 cells:
+//  * |0|1|
+//  * |2|3|
+//  * if agents are in (i,j), i.e. agent 1 is in cell i and agent 2 in cell j
+//  * then the state number is 4*i+j
+// */
+void generate(int agents_number){
+    //-- general
+	PROBLEM.discount = 1.0;
+	PROBLEM.criterion_reward = true;
+	PROBLEM.agents_number = agents_number;
+    PROBLEM.last_agent = PROBLEM.agents_number - 1;
+
+    //-- states
+    PROBLEM.states_number = pow(CELLS_NUMBER, agents_number);
+    
+    vector<vector<int>> states_to_indivCells(PROBLEM.states_number);
+    vector<int> cells_max(agents_number, CELLS_NUMBER);
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        states_to_indivCells.at(x) = utils::get_indivIndices(cells_max, agents_number, x);
+    }
+
+    vector<int> cells_start(agents_number);
+    for (int agent = 0; agent < agents_number; agent++){
+        int start = agent % 2 == 0 ? WIDTH - 1 : CELLS_NUMBER - WIDTH;
+        cells_start.at(agent) = start;
+    }
+    int x_start = utils::get_jointIndex(cells_start, cells_max, agents_number);
+    PROBLEM.belief_init = Vector(PROBLEM.states_number, 0.0);
+    PROBLEM.belief_init[x_start] = 1;
+
+    //-- observations
+    PROBLEM.observations_joint_number = pow(2, agents_number);
+    PROBLEM.observations_number_byAgent = vector<int>(PROBLEM.agents_number, 2);
+
+    //-- actions
+    //-- for each agent: 5 actions (4 directions + WAIT)
+    PROBLEM.actions_joint_number = pow(5, PROBLEM.agents_number);  
+    PROBLEM.actions_number_byAgent = vector<int>(PROBLEM.agents_number, 5);
+    vector<vector<int>> jActions_to_individualActions(PROBLEM.actions_joint_number);
+    for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+        jActions_to_individualActions.at(u) = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, u);
+    }
+
+    //-- transitions: p(y |u, x), where (y, u, x) = (next_state, action, state)
+    //-- move is stochastic
+
+    //-- individual probas
+    double*** probas_nextCell;
+    probas_nextCell = new double**[CELLS_NUMBER];
+    for (int cell = 0; cell < CELLS_NUMBER; cell++){
+        probas_nextCell[cell] = new double*[5];
+        for (int indiv_u = 0; indiv_u < 5; indiv_u++){
+            probas_nextCell[cell][indiv_u] = new double[CELLS_NUMBER];
+            vector<double> probas = get_probas_indiv_next(cell, indiv_u);
+            for (int next_cell = 0; next_cell < CELLS_NUMBER; next_cell++){
+                probas_nextCell[cell][indiv_u][next_cell] = probas[next_cell];
+            }
+        }
+    }
+
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        const vector<int> & cells = states_to_indivCells.at(x);
+        for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+            const vector<int> & indivs_u = jActions_to_individualActions.at(u);
+            double check = 0;
+            for (int y = 0; y < PROBLEM.states_number; y++){
+                const vector<int> & cells_next = states_to_indivCells.at(y);
+                double proba = 1;
+                for (int agent = 0; agent < agents_number; agent++){
+                    int cell = cells[agent];
+                    int indiv_u = indivs_u[agent];
+                    int next_cell = cells_next[agent];
+                    double p_nextCell = probas_nextCell[cell][indiv_u][next_cell];
+                    proba *= p_nextCell;
+                }
+                if (proba > 1e-8){
+                    PROBLEM.dynamics_T[u][x][y] = proba;
+// cout << vector<string>({"up","down","left","right", "stay"}).at(indivs_u.at(0)) << " "
+//      << vector<string>({"up","down","left","right", "stay"}).at(indivs_u.at(1)) << " "
+//      << x << " " << y << " " << proba << endl;
+                }
+                check += proba;
+            }
+            assert(abs(1 - check) < 1e-5);
+        }
+    }
+
+
+    //-- transitions: p(z |u, y), where (z, u, y) = (observation, action, next_state)
+    //-- an agent receives observation 0 if she is in cells 0 or 2 / observation 1 else
+    //--    i.e. an agent only observe her column but not her row
+    for (int y = 0; y < PROBLEM.states_number; y++){
+        const vector<int> & indivCells = states_to_indivCells.at(y);
+        vector<int> indivObs(agents_number, 0);
+        for (int agent = 0; agent < agents_number; agent++){
+            int indivCell = indivCells.at(agent);
+            if (indivCell == 1 || indivCell == 3)
+                indivObs.at(agent) = 1;
+        }
+        int obs = utils::get_jointIndex(indivObs, PROBLEM.observations_number_byAgent, agents_number);
+        for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+            PROBLEM.dynamics_O[u][y][obs] = 1;
+        }
+    }
+
+    //-- rewards: r(x, u), where (x, u) = (state, action)
+    //-- the goal for agents is to be in the same cell
+    //-- reward = 1 if all agents are in a same cell
+    //-- reward = 0 else
+    PROBLEM.rewards_matrix = Matrix<double>(PROBLEM.states_number, PROBLEM.actions_joint_number, 0);
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        const vector<int> & cells = states_to_indivCells.at(x);
+
+        int max_agents = 0;
+        for (int cell = 0; cell < CELLS_NUMBER; cell++){
+            //-- number of agents in this cell
+            int number = std::count(cells.begin(), cells.end(), cell);
+            max_agents = max(number, max_agents);
+        }
+        double reward = (max_agents == agents_number) ? 1.0 : .0;
+        for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+            PROBLEM.rewards_matrix(x, u) = reward; // the reward only depends on the state
+        }
+    }
+
+    PROBLEM.finalize();
+
+
+}
+
+
+// Cells:
+//      0  1
+//      2  3
+static const int UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3, STAY = 4;
+static const vector<vector<int>> NEXT_REGULAR { {0, 1, 0, 1}, // action UP, e.g. 0 -> 0 (can't go up), 2 -> 0 
+                                                {2, 3, 2, 3}, // action DOWN
+                                                {0, 0, 2, 2}, // action LEFT
+                                                {1, 1, 3, 3}, // action RIGHT
+                                                {0, 1, 2, 3}}; // action STAY
+vector<double> get_probas_indiv_next(int cell, int indiv_u){
+    vector<double> probas_y(CELLS_NUMBER, 0);
+    
+    int regular_next = NEXT_REGULAR[indiv_u][cell];
+
+    if (indiv_u == STAY){
+        //-- with action STAY, we are sure to stay
+        probas_y[regular_next] = 1.0;    
+    }
+    else{
+        //-- possible slippery
+        probas_y[regular_next] = .5;
+        for (int dir: {LEFT, RIGHT, UP, DOWN, STAY}){
+            int slip_next = NEXT_REGULAR[dir][cell];
+            probas_y[slip_next] += .1;
+        }
+    }
+    return probas_y;
+}
+
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/gridsmall.hpp b/code/src/problem_examples/dpomdp/gridsmall.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..9bf5bbda605497e49f0dde671695d9fd795befad
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/gridsmall.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+namespace problem_examples{
+namespace gridsmall{
+    
+    static const int WIDTH = 2;
+    static const int CELLS_NUMBER = WIDTH * WIDTH;
+    
+    void generate(int nb_agents);
+
+    vector<double> get_probas_indiv_next(int cell, int indiv_u);
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/mabc.cpp b/code/src/problem_examples/dpomdp/mabc.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6de7ccc3beb05ce2dde3f2512ef306d0940bf0c3
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/mabc.cpp
@@ -0,0 +1,183 @@
+#include "../../core/_module.hpp"
+#include "examples_utils.hpp"
+#include "mabc.hpp"
+
+#include <math.h>
+#include <algorithm>
+
+
+namespace problem_examples{
+namespace mabc{
+
+using namespace std;
+using namespace common;
+
+
+void generate(int agents_number){
+    static const bool START_EMPTY = true; // initial condition = all buffers are EMPTY, else all are FULL
+
+    buffer_arrival_proba = std::ceil(1e2 / (double)(agents_number + 1)) / 1e2; // probas = {.33, .25, .2, .17, ...} for agents_number = {2, 3, 4, 5, ...}
+
+	//-- general
+	PROBLEM.discount = 1.0;
+	PROBLEM.criterion_reward = true;
+	PROBLEM.agents_number = agents_number;
+    PROBLEM.last_agent = PROBLEM.agents_number - 1;
+	
+	//-- states
+    PROBLEM.states_number = pow(buffer_states_number, PROBLEM.agents_number);
+    vector<vector<int>> states_to_individualBuffers(PROBLEM.states_number);
+    vector<int> buffers_max_indices(PROBLEM.agents_number, buffer_states_number);
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        states_to_individualBuffers.at(x) = utils::get_indivIndices(buffers_max_indices, PROBLEM.agents_number, x);
+    }
+    PROBLEM.belief_init = Vector(PROBLEM.states_number, 0.0);
+    if (START_EMPTY){
+        vector<int> all_empty_vec(PROBLEM.agents_number, EMPTY);
+        int all_empty = utils::get_jointIndex(all_empty_vec, buffers_max_indices, PROBLEM.agents_number);
+        PROBLEM.belief_init[all_empty] = 1;
+    }
+    else{
+        vector<int> all_full_vec(PROBLEM.agents_number, FULL);
+        int all_full = utils::get_jointIndex(all_full_vec, buffers_max_indices, PROBLEM.agents_number);
+        PROBLEM.belief_init[all_full] = 1; // all buffers are full at initial time-step
+    }
+
+    //-- observations:
+    //-- network observations {IDLE, SUCCESS, COLLISION} are public
+    //-- buffer observations {EMPTY, FULL} are private 
+    observations_private_total = pow(observations_private_number, PROBLEM.agents_number);
+    observations_private_numbers = vector<int>(PROBLEM.agents_number, observations_private_number);
+    PROBLEM.observations_joint_number = observations_public_number * observations_private_total;
+    PROBLEM.observations_number_byAgent = vector<int>(PROBLEM.agents_number,
+                                                      observations_public_number * observations_private_number);
+    PROBLEM.observations_joint2indiv.resize(PROBLEM.observations_joint_number);
+    for (int public_obs = 0; public_obs < observations_public_number; public_obs++){
+        set_joint_observations(public_obs);
+    }
+    
+    //-- actions
+    PROBLEM.actions_joint_number = pow(actions_number_byAgent, PROBLEM.agents_number);  
+    PROBLEM.actions_number_byAgent = vector<int>(PROBLEM.agents_number, actions_number_byAgent);
+    vector<vector<int>> jActions_to_individualActions(PROBLEM.states_number);
+    for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+        jActions_to_individualActions.at(u) = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, u);
+    }
+
+    //-- transitions: p(y |u, x), where (y, u, x) = (next_state, action, state)    
+// int number = 0;
+    for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+        const vector<int> & indivs_u = jActions_to_individualActions.at(u);
+        for (int x = 0; x < PROBLEM.states_number; x++){
+            const vector<int> & buffers = states_to_individualBuffers.at(x);
+            for (int y = 0; y < PROBLEM.states_number; y++){
+                const vector<int> & buffers_next = states_to_individualBuffers.at(y);
+                double proba = get_proba_u_x_y(indivs_u, buffers, buffers_next);
+                if (proba > 1e-7){
+                    PROBLEM.dynamics_T[u][x][y] = proba;
+// number++;
+                }
+            }
+        }
+    }
+// cout << "PROBLEM.dynamics_T " << number / 1e6 << endl;
+
+    //-- transitions: p(z |u, y), where (z, u, y) = (observation, action, next_state)
+    //-- Obervations are deterministic:
+    //-- An agent get the network status (public) and its buffer state (individual).
+    //-- The network status depend on the action at previous time step. 
+// number = 0;
+    for (int y = 0; y < PROBLEM.states_number; y++){
+        const vector<int> & buffers_next = states_to_individualBuffers.at(y);
+        for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+            const vector<int> & indivs_u = jActions_to_individualActions.at(u);
+            // int public_obs = get_network_status(indivs_u, buffers);
+            int send_number = std::count(indivs_u.begin(), indivs_u.end(), SEND);
+            int public_obs = send_number == 0 ? IDLE : send_number == 1 ? SUCCESS : COLLISION;
+
+            int private_joint = utils::get_jointIndex(buffers_next, observations_private_numbers, PROBLEM.agents_number);
+            int obs = private_joint + observations_private_total * public_obs;
+            PROBLEM.dynamics_O[u][y][obs] = 1;
+// number++;
+        }
+    }
+// cout << "PROBLEM.dynamics_O " << number / 1e6 << endl;
+
+    //-- rewards: r(x, u), where (x, u) = (state, action)
+    //-- 1 for SUCCESS, 0 else
+    PROBLEM.rewards_matrix = Matrix<double>(PROBLEM.states_number, PROBLEM.actions_joint_number, 0);
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        const vector<int> & buffers = states_to_individualBuffers.at(x);
+        for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+            const vector<int> & indivs_u = jActions_to_individualActions.at(u);
+            if (SUCCESS == get_network_status(indivs_u, buffers)){
+                PROBLEM.rewards_matrix(x, u) = 1;
+            }
+        }
+    }
+
+    PROBLEM.finalize(false); // joint observations are done before (tricky)
+}
+
+double get_proba_u_x_y(const vector<int> & indivs_u, const vector<int> & buffers, const vector<int> & buffers_next, int agent, bool collision){
+    if (agent == 0){
+        collision = get_network_status(indivs_u, buffers) == COLLISION;
+    }
+    if (agent == PROBLEM.last_agent){
+        return 1 / double(actions_number_byAgent);
+    }
+
+    if (buffers[agent] == EMPTY){
+        double proba = get_proba_u_x_y(indivs_u, buffers, buffers_next, agent + 1, collision);
+        double indiv_proba = buffers_next[agent] == FULL ? buffer_arrival_proba : (1 - buffer_arrival_proba);
+        return proba * indiv_proba;
+    }
+    if (indivs_u[agent] == SEND){
+        if (collision){ // the buffer remains full
+            return buffers_next[agent] == EMPTY ? 0 : get_proba_u_x_y(indivs_u, buffers, buffers_next, agent + 1, collision);
+        }
+        //-- the buffer will be empty (delay to receive)
+        return buffers_next[agent] == FULL ? 0 : get_proba_u_x_y(indivs_u, buffers, buffers_next, agent + 1, collision);
+
+        // double proba = get_proba(indivs_u, buffers, buffers_next, agent + 1, collision);
+        // double indiv_proba = buffers_next[agent] == FULL ? buffer_arrival_proba : (1 - buffer_arrival_proba));
+        // return proba * indiv_proba;
+    }
+    //-- buffer is full and the agent does not send -> the buffer remains full
+    return buffers_next[agent] == EMPTY ? 0 : get_proba_u_x_y(indivs_u, buffers, buffers_next, agent + 1, collision);
+}
+
+///@brief Return a value in {IDLE, SUCCESS, COLLISION}.
+int get_network_status(const vector<int> & indivs_u, const vector<int> & buffers){
+    bool idle = true;
+    for (int agent = 0; agent < PROBLEM.agents_number; agent++){
+        if (buffers[agent] == FULL && indivs_u[agent] == SEND){
+            if (!idle)
+                return COLLISION;
+            idle = false;
+        }
+    }
+    return idle ? IDLE: SUCCESS;
+}
+
+
+void set_joint_observations(int public_obs, vector<int> private_obs,  int agent){
+    if (agent == PROBLEM.agents_number){
+        int private_joint = utils::get_jointIndex(private_obs, observations_private_numbers, PROBLEM.agents_number);
+        int obs_joint = private_joint + observations_private_total * public_obs;
+        PROBLEM.observations_joint2indiv[obs_joint] = private_obs;
+        return;
+    }
+
+    if (agent == 0)
+        private_obs.resize(PROBLEM.agents_number);
+
+    for (int obs = 0; obs < observations_private_number; obs++){
+        vector<int> new_private_obs = private_obs;
+        new_private_obs.at(agent) = obs;
+        set_joint_observations(public_obs, new_private_obs, agent + 1);
+    }
+}
+
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/mabc.dpomdp b/code/src/problem_examples/dpomdp/mabc.dpomdp
new file mode 100755
index 0000000000000000000000000000000000000000..92c5544cd3994cdf7ec706ae85a12eb61aff9476
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/mabc.dpomdp
@@ -0,0 +1,69 @@
+# This is a Dec-POMDP (.dpomdp) file for the broadcast channel problem.
+agents: 2
+discount: 1.0
+values: "reward"
+states: "S00" "S01" "S10" "S11"
+start:
+0.0 0.0 0.0 1.0
+actions:
+"send" "wait"
+"send" "wait"
+observations:
+"Collision" "No-Collision"
+"Collision" "No-Collision"
+T: "send" "send" : "*" : "S00" : 0.09
+T: "send" "send" : "*" : "S10" : 0.81
+T: "send" "send" : "*" : "S01" : 0.01
+T: "send" "send" : "*" : "S11" : 0.09
+T: "send" "wait" : "S11" : "S11" : 0.9
+T: "send" "wait" : "S11" : "S01" : 0.1
+T: "send" "wait" : "S01" : "S11" : 0.9
+T: "send" "wait" : "S01" : "S01" : 0.1
+T: "send" "wait" : "S10" : "S11" : 0.09
+T: "send" "wait" : "S10" : "S01" : 0.01
+T: "send" "wait" : "S00" : "S11" : 0.09
+T: "send" "wait" : "S00" : "S01" : 0.01
+T: "send" "wait" : "S10" : "S10" : 0.81
+T: "send" "wait" : "S10" : "S00" : 0.09
+T: "send" "wait" : "S00" : "S10" : 0.81
+T: "send" "wait" : "S00" : "S00" : 0.09
+T: "wait" "send" : "S11" : "S11" : 0.1
+T: "wait" "send" : "S11" : "S10" : 0.9
+T: "wait" "send" : "S10" : "S11" : 0.1
+T: "wait" "send" : "S10" : "S10" : 0.9
+T: "wait" "send" : "S01" : "S11" : 0.09
+T: "wait" "send" : "S01" : "S10" : 0.81
+T: "wait" "send" : "S00" : "S11" : 0.09
+T: "wait" "send" : "S00" : "S10" : 0.81
+T: "wait" "send" : "S01" : "S01" : 0.01
+T: "wait" "send" : "S01" : "S00" : 0.09
+T: "wait" "send" : "S00" : "S01" : 0.01
+T: "wait" "send" : "S00" : "S00" : 0.09
+T: "wait" "wait" : "S11" : "S11" : 1.0
+T: "wait" "wait" : "S01" : "S11" : 0.9
+T: "wait" "wait" : "S01" : "S01" : 0.1
+T: "wait" "wait" : "S10" : "S11" : 0.1
+T: "wait" "wait" : "S10" : "S10" : 0.9
+T: "wait" "wait" : "S00" : "S11" : 0.09
+T: "wait" "wait" : "S00" : "S01" : 0.01
+T: "wait" "wait" : "S00" : "S10" : 0.81
+T: "wait" "wait" : "S00" : "S00" : 0.09
+O: "*" : "*" : "Collision" "Collision" : 0.01
+O: "*" : "*" : "No-Collision" "Collision" : 0.09
+O: "*" : "*" : "Collision" "No-Collision" : 0.09
+O: "*" : "*" : "No-Collision" "No-Collision" : 0.81
+O: "send" "send" : "*" : "Collision" "Collision" : 0.81
+O: "send" "send" : "*" : "No-Collision" "Collision" : 0.09
+O: "send" "send" : "*" : "Collision" "No-Collision" : 0.09
+O: "send" "send" : "*" : "No-Collision" "No-Collision" : 0.01
+R: "send" "send" : "*" : 0
+R: "wait" "wait" : "*" : 0
+R: "send" "wait" : "S11" : 1
+R: "send" "wait" : "S10" : 1
+R: "send" "wait" : "S01" : 0
+R: "send" "wait" : "S00" : 0
+R: "wait" "send" : "S11" : 1
+R: "wait" "send" : "S10" : 0
+R: "wait" "send" : "S01" : 1
+R: "wait" "send" : "S00" : 0
+#
diff --git a/code/src/problem_examples/dpomdp/mabc.hpp b/code/src/problem_examples/dpomdp/mabc.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..0647ff60a4dc7b11b99c853dee2f43051bfa4e6c
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/mabc.hpp
@@ -0,0 +1,26 @@
+#pragma once
+
+#include <vector>
+
+
+namespace problem_examples{
+namespace mabc{
+	static const int EMPTY = 0, FULL = 1;
+    static const int WAIT = 0, SEND = 1;
+	static const int IDLE = 0, SUCCESS = 1, COLLISION = 2;
+    static const int buffer_states_number = 2; // {EMPTY, FULL} (for each agent)
+    static const int actions_number_byAgent = 2; // {WAIT, SEND}
+    static const int observations_public_number = 3; // {IDLE, SUCCESS, COLLISION}
+    static const int observations_private_number = 2; // buffer state (for each agent)
+	
+	inline vector<int> observations_private_numbers;
+	inline int observations_private_total;
+	inline double buffer_arrival_proba;
+
+	void generate(int agents_number);
+	int get_network_status(const vector<int> & indivs_u, const vector<int> & buffers);
+	double get_proba_u_x_y(const vector<int> & indivs_u, const vector<int> & buffers, const vector<int> & buffers_next,
+						   int agent = 0, bool collision = false);
+	void set_joint_observations(int public_obs, vector<int> private_obs = vector<int>(),  int agent = 0);
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/mabc_light.dpomdp b/code/src/problem_examples/dpomdp/mabc_light.dpomdp
new file mode 100644
index 0000000000000000000000000000000000000000..305b8b22d43c2663626b932857277497d8f773f9
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/mabc_light.dpomdp
@@ -0,0 +1,139 @@
+agents: 2
+discount: 1
+states: 0 1 2 3 
+actions:
+0 1 
+0 1 
+observations:
+0 1 
+0 1 
+start: 0 0 0 1
+T: 1 1 : 0 : 0 : 0.09
+T: 1 1 : 0 : 2 : 0.81
+T: 1 1 : 0 : 3 : 0.09
+T: 1 1 : 0 : 1 : 0.01
+T: 1 1 : 2 : 2 : 0.9
+T: 1 1 : 2 : 3 : 0.1
+T: 1 1 : 3 : 3 : 1
+T: 1 1 : 1 : 1 : 0.1
+T: 1 1 : 1 : 3 : 0.9
+T: 1 0 : 0 : 0 : 0.09
+T: 1 0 : 0 : 1 : 0.01
+T: 1 0 : 0 : 3 : 0.09
+T: 1 0 : 0 : 2 : 0.81
+T: 1 0 : 1 : 0 : 0.09
+T: 1 0 : 1 : 1 : 0.01
+T: 1 0 : 1 : 3 : 0.09
+T: 1 0 : 1 : 2 : 0.81
+T: 1 0 : 3 : 2 : 0.9
+T: 1 0 : 3 : 3 : 0.1
+T: 1 0 : 2 : 2 : 0.9
+T: 1 0 : 2 : 3 : 0.1
+T: 0 0 : 3 : 3 : 0.09
+T: 0 0 : 3 : 1 : 0.01
+T: 0 0 : 3 : 0 : 0.09
+T: 0 0 : 3 : 2 : 0.81
+T: 0 0 : 2 : 3 : 0.09
+T: 0 0 : 2 : 1 : 0.01
+T: 0 0 : 2 : 0 : 0.09
+T: 0 0 : 2 : 2 : 0.81
+T: 0 0 : 0 : 3 : 0.09
+T: 0 0 : 0 : 1 : 0.01
+T: 0 0 : 0 : 0 : 0.09
+T: 0 0 : 0 : 2 : 0.81
+T: 0 0 : 1 : 3 : 0.09
+T: 0 0 : 1 : 1 : 0.01
+T: 0 0 : 1 : 0 : 0.09
+T: 0 0 : 1 : 2 : 0.81
+T: 0 1 : 0 : 0 : 0.09
+T: 0 1 : 0 : 2 : 0.81
+T: 0 1 : 0 : 3 : 0.09
+T: 0 1 : 0 : 1 : 0.01
+T: 0 1 : 2 : 0 : 0.09
+T: 0 1 : 2 : 2 : 0.81
+T: 0 1 : 2 : 3 : 0.09
+T: 0 1 : 2 : 1 : 0.01
+T: 0 1 : 3 : 1 : 0.1
+T: 0 1 : 3 : 3 : 0.9
+T: 0 1 : 1 : 1 : 0.1
+T: 0 1 : 1 : 3 : 0.9
+O: 1 1 : 3 : 1 1  : 0.81
+O: 1 1 : 3 : 0 1  : 0.09
+O: 1 1 : 3 : 0 0  : 0.01
+O: 1 1 : 3 : 1 0  : 0.09
+O: 1 1 : 2 : 1 1  : 0.81
+O: 1 1 : 2 : 0 1  : 0.09
+O: 1 1 : 2 : 0 0  : 0.01
+O: 1 1 : 2 : 1 0  : 0.09
+O: 1 1 : 0 : 1 1  : 0.81
+O: 1 1 : 0 : 0 1  : 0.09
+O: 1 1 : 0 : 0 0  : 0.01
+O: 1 1 : 0 : 1 0  : 0.09
+O: 1 1 : 1 : 1 1  : 0.81
+O: 1 1 : 1 : 0 1  : 0.09
+O: 1 1 : 1 : 0 0  : 0.01
+O: 1 1 : 1 : 1 0  : 0.09
+O: 1 0 : 3 : 1 1  : 0.81
+O: 1 0 : 3 : 0 1  : 0.09
+O: 1 0 : 3 : 0 0  : 0.01
+O: 1 0 : 3 : 1 0  : 0.09
+O: 1 0 : 2 : 1 1  : 0.81
+O: 1 0 : 2 : 0 1  : 0.09
+O: 1 0 : 2 : 0 0  : 0.01
+O: 1 0 : 2 : 1 0  : 0.09
+O: 1 0 : 0 : 1 1  : 0.81
+O: 1 0 : 0 : 0 1  : 0.09
+O: 1 0 : 0 : 0 0  : 0.01
+O: 1 0 : 0 : 1 0  : 0.09
+O: 1 0 : 1 : 1 1  : 0.81
+O: 1 0 : 1 : 0 1  : 0.09
+O: 1 0 : 1 : 0 0  : 0.01
+O: 1 0 : 1 : 1 0  : 0.09
+O: 0 0 : 3 : 1 1  : 0.01
+O: 0 0 : 3 : 0 1  : 0.09
+O: 0 0 : 3 : 0 0  : 0.81
+O: 0 0 : 3 : 1 0  : 0.09
+O: 0 0 : 2 : 1 1  : 0.01
+O: 0 0 : 2 : 0 1  : 0.09
+O: 0 0 : 2 : 0 0  : 0.81
+O: 0 0 : 2 : 1 0  : 0.09
+O: 0 0 : 0 : 1 1  : 0.01
+O: 0 0 : 0 : 0 1  : 0.09
+O: 0 0 : 0 : 0 0  : 0.81
+O: 0 0 : 0 : 1 0  : 0.09
+O: 0 0 : 1 : 1 1  : 0.01
+O: 0 0 : 1 : 0 1  : 0.09
+O: 0 0 : 1 : 0 0  : 0.81
+O: 0 0 : 1 : 1 0  : 0.09
+O: 0 1 : 3 : 1 1  : 0.81
+O: 0 1 : 3 : 0 1  : 0.09
+O: 0 1 : 3 : 0 0  : 0.01
+O: 0 1 : 3 : 1 0  : 0.09
+O: 0 1 : 2 : 1 1  : 0.81
+O: 0 1 : 2 : 0 1  : 0.09
+O: 0 1 : 2 : 0 0  : 0.01
+O: 0 1 : 2 : 1 0  : 0.09
+O: 0 1 : 0 : 1 1  : 0.81
+O: 0 1 : 0 : 0 1  : 0.09
+O: 0 1 : 0 : 0 0  : 0.01
+O: 0 1 : 0 : 1 0  : 0.09
+O: 0 1 : 1 : 1 1  : 0.81
+O: 0 1 : 1 : 0 1  : 0.09
+O: 0 1 : 1 : 0 0  : 0.01
+O: 0 1 : 1 : 1 0  : 0.09
+R: 0 0 : 0 : * : * : 0
+R: 0 1 : 0 : * : * : 0
+R: 1 0 : 0 : * : * : 0
+R: 1 1 : 0 : * : * : 0
+R: 0 0 : 1 : * : * : 0
+R: 0 1 : 1 : * : * : 0
+R: 1 0 : 1 : * : * : 1
+R: 1 1 : 1 : * : * : 0
+R: 0 0 : 2 : * : * : 0
+R: 0 1 : 2 : * : * : 1
+R: 1 0 : 2 : * : * : 0
+R: 1 1 : 2 : * : * : 0
+R: 0 0 : 3 : * : * : 0
+R: 0 1 : 3 : * : * : 1
+R: 1 0 : 3 : * : * : 1
+R: 1 1 : 3 : * : * : 0
diff --git a/code/src/problem_examples/dpomdp/maracas.cpp b/code/src/problem_examples/dpomdp/maracas.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1cbcb1292e6a658fb7f5267887f28c4d9c26d8b9
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/maracas.cpp
@@ -0,0 +1,116 @@
+#include "../../core/_module.hpp"
+#include "examples_utils.hpp"
+#include "maracas.hpp"
+
+
+namespace problem_examples{
+namespace maracas{
+
+using namespace std;
+using namespace common;
+
+
+void generate(int agents_number, int channels_number, vector<double> activities_proba){
+    assert(agents_number == (int)activities_proba.size());
+
+    //-- general
+	PROBLEM.discount = 1.0;
+	PROBLEM.criterion_reward = true;
+	PROBLEM.agents_number = agents_number;
+    PROBLEM.last_agent = PROBLEM.agents_number - 1;
+	
+    //-- states
+    //--    the state represent the buffer, in {EMPTY, FULL}, for each agent
+    PROBLEM.states_number = pow(2, PROBLEM.agents_number);
+    vector<vector<int>> states_to_individualBuffers(PROBLEM.states_number);
+    vector<int> buffers_max_indices(PROBLEM.agents_number, 2);
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        states_to_individualBuffers.at(x) = utils::get_indivIndices(buffers_max_indices, PROBLEM.agents_number, x);
+// cout << "x " << x << ": ";
+// for (int agent = 0; agent < agents_number; agent++){
+//     cout << states_to_individualBuffers.at(x).at(agent);
+// }
+// cout << endl;
+    }
+
+    //-- belief init
+    //--    depends on activities_proba
+    PROBLEM.belief_init = Vector(PROBLEM.states_number, 1.0);
+    for (int x = 0; x < PROBLEM.states_number; x++){
+        const vector<int> & individualBuffers = states_to_individualBuffers.at(x);
+        for (int agent = 0; agent < agents_number; agent++){
+            double activ = activities_proba.at(agent);
+            PROBLEM.belief_init[x] *= (individualBuffers.at(agent) == FULL) ? activ : 1 - activ;
+        }
+    }
+    // cout << PROBLEM.belief_init.transpose() << endl;
+    // cout << PROBLEM.belief_init.sum() << endl;
+    // vector<double> test(agents_number, 0);
+    // for (int x = 0; x < PROBLEM.states_number; x++){
+    //     const vector<int> & individualBuffers = states_to_individualBuffers.at(x);
+    //     for (int agent = 0; agent < agents_number; agent++){
+    //         test.at(agent) += PROBLEM.belief_init[x] * individualBuffers.at(agent);
+    //     }
+    // }
+    // for (int agent = 0; agent < agents_number; agent++){
+    //     cout << test.at(agent) << " ";
+    // }
+
+
+    //-- observations
+    //--    only one observation
+    PROBLEM.observations_joint_number = 1;
+    PROBLEM.observations_number_byAgent = vector<int>(PROBLEM.agents_number, 1);
+
+    //-- actions
+    //--    a channel number for each agent
+    PROBLEM.actions_joint_number = pow(channels_number, PROBLEM.agents_number);  
+    PROBLEM.actions_number_byAgent = vector<int>(PROBLEM.agents_number, channels_number);
+    
+    //-- transitions: p(y |u, x)
+    //--    p(y) does not depend on (u, x)
+    //--    p(y) = belief_init[y]
+    for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+        for (int x = 0; x < PROBLEM.states_number; x++){
+            for (int y = 0; y < PROBLEM.states_number; y++){
+                PROBLEM.dynamics_T[u][x][y] = PROBLEM.belief_init[y];
+            }
+        }
+    }
+
+    //-- transitions: p(z |u, y)
+    //--    only one observation
+    for (int y = 0; y < PROBLEM.states_number; y++){
+        for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+            int obs = 0;
+            PROBLEM.dynamics_O[u][y][obs] = 1;
+        }
+    }
+    
+    //-- rewards: r(x, u)
+    //--    the number of channels transmitting one (and only one) message
+    //--    normalized with activities
+    double activities_sum = accumulate(activities_proba.begin(), activities_proba.end(), .0);
+    PROBLEM.rewards_matrix = Matrix<double>(PROBLEM.states_number, PROBLEM.actions_joint_number, 0);
+    for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+        vector<int> individualActions = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, u);
+        for (int x = 0; x < PROBLEM.states_number; x++){
+            const vector<int> & individualBuffers = states_to_individualBuffers.at(x);
+            vector<int> messages_by_channel(channels_number, 0);
+            for (int agent = 0; agent < agents_number; agent++){
+                if (individualBuffers.at(agent) == FULL){
+                    int channel = individualActions.at(agent);
+                    messages_by_channel.at(channel)++;
+                }
+            }
+            double val = std::count(messages_by_channel.begin(), messages_by_channel.end(), 1);
+            PROBLEM.rewards_matrix(x, u) = val / activities_sum;
+// cout << "rew(x=" << x << ",u=" << u << "): " << val << endl;
+        }
+    }
+
+    PROBLEM.finalize();
+}
+
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/maracas.hpp b/code/src/problem_examples/dpomdp/maracas.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..c7cedad8cad92427858f5e33c50be9efb4680b59
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/maracas.hpp
@@ -0,0 +1,12 @@
+#pragma once
+
+#include <vector>
+
+
+namespace problem_examples{
+namespace maracas{
+	static const int EMPTY = 0, FULL = 1;
+    
+	void generate(int agents_number, int channels_number, vector<double> activities_proba);
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/recycling.cpp b/code/src/problem_examples/dpomdp/recycling.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c6eb610d9d5e67bfe3a98def6cf052fbd1bded6d
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/recycling.cpp
@@ -0,0 +1,211 @@
+#include "../../core/_module.hpp"
+#include "examples_utils.hpp"
+#include "recycling.hpp"
+
+#include <math.h>
+#include <algorithm>
+
+
+namespace problem_examples{
+namespace recycling{
+
+using namespace std;
+using namespace common;
+
+
+#define STATE_H 0
+#define STATE_L 1
+
+#define WAITANDRECHARGE 0
+#define SEARCHLITTLE 1
+#define SEARCHBIG 2
+
+#define OBS_LOW 1
+#define OBS_HIGH 0
+
+
+void generate(int nb_agents){
+	//-- general
+	PROBLEM.discount = 1.0;
+	PROBLEM.criterion_reward = true;
+	PROBLEM.agents_number = nb_agents;
+	PROBLEM.last_agent = nb_agents - 1;
+
+	//-- states
+	vector<int> vector_indiv_state = {0,1};
+	vector<vector<int>> vector_state;
+	for (int i = 0; i < nb_agents; i++){
+		vector_state.push_back(vector_indiv_state);
+	}
+	vector<vector<int>> res = CartesianProduct(vector_state);
+	PROBLEM.states_number = pow(2, nb_agents);
+	PROBLEM.belief_init=Vector(PROBLEM.states_number,0.0);
+	PROBLEM.belief_init(0)=1;
+
+	//-- observations
+	PROBLEM.observations_joint_number = pow(2,nb_agents);
+	for (int i = 0; i < nb_agents; i++)
+	    PROBLEM.observations_number_byAgent.push_back(2);
+		vector<int> vector_indiv_observations= {0,1};
+	vector<vector<int>> vector_observations;
+	for (int i = 0; i < nb_agents; i++){
+		vector_observations.push_back(vector_indiv_observations);
+	}
+	vector<vector<int>> joint_observations = CartesianProduct(vector_observations);
+
+	//-- actions
+	PROBLEM.actions_joint_number = pow(3,nb_agents);
+	for (int i = 0; i<nb_agents;i++)
+	    PROBLEM.actions_number_byAgent.push_back(3);
+	vector<int> vector_indiv_actions = {0,1,2};
+	vector<vector<int>> vector_actions;
+	for (int i = 0; i < nb_agents; i++){
+		vector_actions.push_back(vector_indiv_actions);
+	}
+	vector<vector<int>> joint_actions = CartesianProduct(vector_actions);
+
+	//-- transitions
+	static const double thresh = 1e-7;
+	for (auto & state : res){
+	    for (auto & act : joint_actions){
+			for (auto & next_state : res){
+				double proba = 1.0;		
+				for (int i=0; i < nb_agents; i++){
+					proba *= get_monoAgent_proba(state[i], act[i], next_state[i]);
+					if (proba < thresh)
+						break;
+				}
+				if (proba > thresh){
+					int u = utils::get_jointIndex(act, vector<int>(nb_agents, 3), nb_agents);
+					int x = utils::get_jointIndex(state, vector<int>(nb_agents,2), nb_agents);
+					int y = utils::get_jointIndex(next_state, vector<int>(nb_agents,2), nb_agents);
+					PROBLEM.dynamics_T[u][x][y] = proba;
+				}
+			}
+	    }
+	}
+
+    //-- setting up observations
+	for (auto & next_state : res){
+	    for (auto & act : joint_actions){
+			for (auto & z :  joint_observations){
+				double proba = 1.0;		
+				for (int i=0;i<nb_agents;i++){
+					proba *= get_monoAgent_observation_proba(next_state[i], z[i]);
+				}
+				if (proba < 1e-7)
+					proba = 0.0;
+
+				if (proba > 0){
+					int u = utils::get_jointIndex(act, vector<int>(nb_agents,3), nb_agents);
+					int y = utils::get_jointIndex(next_state, vector<int>(nb_agents,2), nb_agents);
+					int obs = utils::get_jointIndex(z, vector<int>(nb_agents,2), nb_agents);
+					PROBLEM.dynamics_O[u][y][obs] = proba;
+				}
+			}
+	    }
+	}
+
+	//-- setting up rewards
+    PROBLEM.rewards_matrix = Matrix<double>(PROBLEM.states_number, PROBLEM.actions_joint_number, -1);
+    for (auto states: res){
+		for (auto us: joint_actions){
+			int nbSB = count(us.begin(), us.end(), 2);
+			int exhausted = 0;
+			double reward = 0;
+			for (auto next_states: res){
+				exhausted=0;
+				double proba = 1.0;
+				double rew = 0;
+				for (int i = 0; i < nb_agents; i++){
+					double proba_indiv = get_monoAgent_proba(states[i], us[i], next_states[i]);
+					proba *= proba_indiv;
+					rew += get_monoAgent_reward(states[i], us[i], next_states[i]); 
+					if (states[i] == STATE_L && next_states[i] == STATE_H)
+						exhausted=1;
+				}
+				reward += rew * proba;
+				if (nbSB == nb_agents && exhausted == 0)
+					reward += 5 * nb_agents * proba;
+				if (nbSB > 0 && nbSB != nb_agents)
+					reward -= 10;
+			}
+			int x = utils::get_jointIndex(states, vector<int>(nb_agents, 2), nb_agents);
+			int ju = utils::get_jointIndex(us, vector<int>(nb_agents, 3), nb_agents);
+			PROBLEM.rewards_matrix(x, ju) = reward;
+		}
+    }
+
+	PROBLEM.finalize();
+}
+
+
+
+double get_monoAgent_reward(int s, int a, int next_state){
+    if (a==WAITANDRECHARGE)
+        return 0.0;
+    if (s==STATE_L && next_state==STATE_H)
+        return -3;
+    if (s==STATE_H && a==SEARCHLITTLE)
+        return 2;
+    if (s==STATE_L && a==SEARCHLITTLE && next_state==STATE_L)
+        return 2;
+    return 0;
+}
+
+double get_monoAgent_observation_proba(int s, int z){
+    if ((s==STATE_H and z==OBS_HIGH) || (s==STATE_L and z==OBS_LOW))
+		return 1.0;
+    return 0.0;
+}
+
+
+
+double get_monoAgent_proba(int s, int a, int next_state){
+	if (s==STATE_H and a == WAITANDRECHARGE and next_state==STATE_H){
+	    //wait and recharge in high battery state : nothing changes
+	    return 1.0;
+	}
+	if (s==STATE_L and a == WAITANDRECHARGE and next_state==STATE_H){
+	    //wait and recharge in low battery state : surely recharges the battery to high level
+	    return 1.0;
+	}
+	if (s==STATE_H and a == SEARCHLITTLE){
+	    if (next_state==STATE_H){
+			//search a little waste : probability 0.7 not to exhaust the battery to low level
+			return 0.7;
+			//search a little waste : probability 0.3 to exhaust the battery to low level
+	    }
+	    return 0.3;
+	}
+	if (s==STATE_L and a == SEARCHLITTLE){
+	    if (next_state==STATE_H){
+			//search a little waste in low battery state : probability 0.2 to completly exhaust battery and being picked up
+			return 0.2;
+			//search a little waste in low battery state : probability 0.8 to stay in low battery state
+	    }
+	    return 0.8;
+
+	}
+	if (s==STATE_H and a == SEARCHBIG){
+	    if (next_state==STATE_H){
+			//high battery state, search for big : probability 0.5 > 0.3 to exhaust the battery to low level
+			return 0.5;
+	    }
+		//probaility not to exhaust battery
+	    return 0.5;
+	}
+	if (s==STATE_L and a == SEARCHBIG){
+	    if (next_state==STATE_H){
+			//low battery state, search for big : probability 0.3 to exhaust the battery level
+			return 0.3;
+	    }
+	    //proba not to exhaust battery level
+	    return 0.7;
+	}
+	//in all other cases, return 0.0
+	return 0.0;
+    }
+
+
+}} // namespace
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/recycling.dpomdp b/code/src/problem_examples/dpomdp/recycling.dpomdp
new file mode 100755
index 0000000000000000000000000000000000000000..9c97c49b5554da5f4da03158d7f6e029d0abd513
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/recycling.dpomdp
@@ -0,0 +1,181 @@
+# recycling.dpomdp
+# Chris Amato's recycling robot problem, UAI 2007.
+# Extracted from
+# http://rbr.cs.umass.edu/~camato/decpomdp/down/ProblemData3Probs.java
+# $Id: recycling.dpomdp 2920 2008-10-14 11:04:25Z mtjspaan $
+agents: 2
+discount: 1.0
+values: "reward"
+states: 4
+start:
+1.0 0.0 0.0 0.0
+actions:
+"searchbig" "searchlittle" "waitandrecharge"
+"searchbig" "searchlittle" "waitandrecharge"
+observations:
+2
+2
+T: 0 0 : 0 : 0 : 1.0
+T: 0 1 : 0 : 0 : 0.7
+T: 0 1 : 0 : 1 : 0.3
+T: 0 2 : 0 : 0 : 0.5
+T: 0 2 : 0 : 1 : 0.5
+T: 1 0 : 0 : 0 : 0.7
+T: 1 0 : 0 : 2 : 0.3
+T: 1 1 : 0 : 0 : 0.49
+T: 1 1 : 0 : 1 : 0.21
+T: 1 1 : 0 : 2 : 0.21
+T: 1 1 : 0 : 3 : 0.09
+T: 1 2 : 0 : 0 : 0.35
+T: 1 2 : 0 : 1 : 0.35
+T: 1 2 : 0 : 2 : 0.15
+T: 1 2 : 0 : 3 : 0.15
+T: 2 0 : 0 : 0 : 0.5
+T: 2 0 : 0 : 2 : 0.5
+T: 2 1 : 0 : 0 : 0.35
+T: 2 1 : 0 : 1 : 0.15
+T: 2 1 : 0 : 2 : 0.35
+T: 2 1 : 0 : 3 : 0.15
+T: 2 2 : 0 : 0 : 0.25
+T: 2 2 : 0 : 1 : 0.25
+T: 2 2 : 0 : 2 : 0.25
+T: 2 2 : 0 : 3 : 0.25
+T: 0 0 : 1 : 0 : 1.0
+T: 0 1 : 1 : 0 : 0.2
+T: 0 1 : 1 : 1 : 0.8
+T: 0 2 : 1 : 0 : 0.3
+T: 0 2 : 1 : 1 : 0.7
+T: 1 0 : 1 : 0 : 0.7
+T: 1 0 : 1 : 2 : 0.3
+T: 1 1 : 1 : 0 : 0.14
+T: 1 1 : 1 : 1 : 0.56
+T: 1 1 : 1 : 2 : 0.06
+T: 1 1 : 1 : 3 : 0.24
+T: 1 2 : 1 : 0 : 0.21
+T: 1 2 : 1 : 1 : 0.49
+T: 1 2 : 1 : 2 : 0.09
+T: 1 2 : 1 : 3 : 0.21
+T: 2 0 : 1 : 0 : 0.5
+T: 2 0 : 1 : 2 : 0.5
+T: 2 1 : 1 : 0 : 0.1
+T: 2 1 : 1 : 1 : 0.4
+T: 2 1 : 1 : 2 : 0.1
+T: 2 1 : 1 : 3 : 0.4
+T: 2 2 : 1 : 0 : 0.15
+T: 2 2 : 1 : 1 : 0.35
+T: 2 2 : 1 : 2 : 0.15
+T: 2 2 : 1 : 3 : 0.35
+T: 0 0 : 2 : 0 : 1.0
+T: 0 1 : 2 : 0 : 0.7
+T: 0 1 : 2 : 1 : 0.3
+T: 0 2 : 2 : 0 : 0.5
+T: 0 2 : 2 : 1 : 0.5
+T: 1 0 : 2 : 0 : 0.2
+T: 1 0 : 2 : 2 : 0.8
+T: 1 1 : 2 : 0 : 0.14
+T: 1 1 : 2 : 1 : 0.06
+T: 1 1 : 2 : 2 : 0.56
+T: 1 1 : 2 : 3 : 0.24
+T: 1 2 : 2 : 0 : 0.1
+T: 1 2 : 2 : 1 : 0.1
+T: 1 2 : 2 : 2 : 0.4
+T: 1 2 : 2 : 3 : 0.4
+T: 2 0 : 2 : 0 : 0.3
+T: 2 0 : 2 : 2 : 0.7
+T: 2 1 : 2 : 0 : 0.21
+T: 2 1 : 2 : 1 : 0.09
+T: 2 1 : 2 : 2 : 0.49
+T: 2 1 : 2 : 3 : 0.21
+T: 2 2 : 2 : 0 : 0.15
+T: 2 2 : 2 : 1 : 0.15
+T: 2 2 : 2 : 2 : 0.35
+T: 2 2 : 2 : 3 : 0.35
+T: 0 0 : 3 : 0 : 1.0
+T: 0 1 : 3 : 0 : 0.2
+T: 0 1 : 3 : 1 : 0.8
+T: 0 2 : 3 : 0 : 0.3
+T: 0 2 : 3 : 1 : 0.7
+T: 1 0 : 3 : 0 : 0.2
+T: 1 0 : 3 : 2 : 0.8
+T: 1 1 : 3 : 0 : 0.04
+T: 1 1 : 3 : 1 : 0.16
+T: 1 1 : 3 : 2 : 0.16
+T: 1 1 : 3 : 3 : 0.64
+T: 1 2 : 3 : 0 : 0.06
+T: 1 2 : 3 : 1 : 0.14
+T: 1 2 : 3 : 2 : 0.24
+T: 1 2 : 3 : 3 : 0.56
+T: 2 0 : 3 : 0 : 0.3
+T: 2 0 : 3 : 2 : 0.7
+T: 2 1 : 3 : 0 : 0.06
+T: 2 1 : 3 : 1 : 0.24
+T: 2 1 : 3 : 2 : 0.14
+T: 2 1 : 3 : 3 : 0.56
+T: 2 2 : 3 : 0 : 0.09
+T: 2 2 : 3 : 1 : 0.21
+T: 2 2 : 3 : 2 : 0.21
+T: 2 2 : 3 : 3 : 0.49
+O: 0 0 : 0 : 0 0 : 1.0
+O: 0 1 : 0 : 0 0 : 1.0
+O: 0 2 : 0 : 0 0 : 1.0
+O: 1 0 : 0 : 0 0 : 1.0
+O: 1 1 : 0 : 0 0 : 1.0
+O: 1 2 : 0 : 0 0 : 1.0
+O: 2 0 : 0 : 0 0 : 1.0
+O: 2 1 : 0 : 0 0 : 1.0
+O: 2 2 : 0 : 0 0 : 1.0
+O: 0 0 : 1 : 0 1 : 1.0
+O: 0 1 : 1 : 0 1 : 1.0
+O: 0 2 : 1 : 0 1 : 1.0
+O: 1 0 : 1 : 0 1 : 1.0
+O: 1 1 : 1 : 0 1 : 1.0
+O: 1 2 : 1 : 0 1 : 1.0
+O: 2 0 : 1 : 0 1 : 1.0
+O: 2 1 : 1 : 0 1 : 1.0
+O: 2 2 : 1 : 0 1 : 1.0
+O: 0 0 : 2 : 1 0 : 1.0
+O: 0 1 : 2 : 1 0 : 1.0
+O: 0 2 : 2 : 1 0 : 1.0
+O: 1 0 : 2 : 1 0 : 1.0
+O: 1 1 : 2 : 1 0 : 1.0
+O: 1 2 : 2 : 1 0 : 1.0
+O: 2 0 : 2 : 1 0 : 1.0
+O: 2 1 : 2 : 1 0 : 1.0
+O: 2 2 : 2 : 1 0 : 1.0
+O: 0 0 : 3 : 1 1 : 1.0
+O: 0 1 : 3 : 1 1 : 1.0
+O: 0 2 : 3 : 1 1 : 1.0
+O: 1 0 : 3 : 1 1 : 1.0
+O: 1 1 : 3 : 1 1 : 1.0
+O: 1 2 : 3 : 1 1 : 1.0
+O: 2 0 : 3 : 1 1 : 1.0
+O: 2 1 : 3 : 1 1 : 1.0
+O: 2 2 : 3 : 1 1 : 1.0
+R: 0 1 : 0 : 2.0
+R: 1 0 : 0 : 2.0
+R: 1 1 : 0 : 4.0
+R: 1 2 : 0 : 2.0
+R: 2 1 : 0 : 2.0
+R: 2 2 : 0 : 5.0
+R: 0 1 : 1 : -0.4
+R: 0 2 : 1 : -3.0
+R: 1 0 : 1 : 2.0
+R: 1 1 : 1 : 1.2
+R: 1 2 : 1 : -1.6
+R: 2 1 : 1 : -0.4
+R: 2 2 : 1 : 0.5
+R: 0 1 : 2 : 2.0
+R: 1 0 : 2 : -0.4
+R: 1 1 : 2 : 1.2
+R: 1 2 : 2 : -0.4
+R: 2 0 : 2 : -3.0
+R: 2 1 : 2 : -1.6
+R: 2 2 : 2 : 0.5
+R: 0 1 : 3 : -0.4
+R: 0 2 : 3 : -3.0
+R: 1 0 : 3 : -0.4
+R: 1 1 : 3 : -1.44
+R: 1 2 : 3 : -3.88
+R: 2 0 : 3 : -3.0
+R: 2 1 : 3 : -3.88
+R: 2 2 : 3 : -3.55
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/recycling.hpp b/code/src/problem_examples/dpomdp/recycling.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..339b36fe1716b035bc8dc763d1abe2dc04efbc14
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/recycling.hpp
@@ -0,0 +1,12 @@
+#pragma once
+
+namespace problem_examples{
+namespace recycling{
+
+    void generate(int nb_agents);
+
+    double get_monoAgent_reward(int s, int a, int next_state);
+    double get_monoAgent_observation_proba(int s, int z);
+    double get_monoAgent_proba(int s, int a, int next_state);
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/recycling_light.dpomdp b/code/src/problem_examples/dpomdp/recycling_light.dpomdp
new file mode 100644
index 0000000000000000000000000000000000000000..667f87af7f84f3f4c7fe675f43c54d3362874ae1
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/recycling_light.dpomdp
@@ -0,0 +1,182 @@
+agents: 2
+discount: 1
+states: 0 1 2 3 
+actions:
+0 1 2 
+0 1 2 
+observations:
+0 1 
+0 1 
+start: 1 0 0 0
+T: 2 2 : 3 : 3 : 0.49
+T: 2 2 : 3 : 2 : 0.21
+T: 2 2 : 3 : 0 : 0.09
+T: 2 2 : 3 : 1 : 0.21
+T: 2 2 : 2 : 3 : 0.35
+T: 2 2 : 2 : 2 : 0.35
+T: 2 2 : 2 : 0 : 0.15
+T: 2 2 : 2 : 1 : 0.15
+T: 2 2 : 0 : 3 : 0.25
+T: 2 2 : 0 : 2 : 0.25
+T: 2 2 : 0 : 0 : 0.25
+T: 2 2 : 0 : 1 : 0.25
+T: 2 2 : 1 : 3 : 0.35
+T: 2 2 : 1 : 2 : 0.15
+T: 2 2 : 1 : 0 : 0.15
+T: 2 2 : 1 : 1 : 0.35
+T: 2 1 : 3 : 3 : 0.56
+T: 2 1 : 3 : 2 : 0.14
+T: 2 1 : 3 : 0 : 0.06
+T: 2 1 : 3 : 1 : 0.24
+T: 2 1 : 2 : 3 : 0.21
+T: 2 1 : 2 : 2 : 0.49
+T: 2 1 : 2 : 0 : 0.21
+T: 2 1 : 2 : 1 : 0.09
+T: 2 1 : 0 : 3 : 0.15
+T: 2 1 : 0 : 2 : 0.35
+T: 2 1 : 0 : 0 : 0.35
+T: 2 1 : 0 : 1 : 0.15
+T: 2 1 : 1 : 3 : 0.4
+T: 2 1 : 1 : 2 : 0.1
+T: 2 1 : 1 : 0 : 0.1
+T: 2 1 : 1 : 1 : 0.4
+T: 2 0 : 3 : 2 : 0.7
+T: 2 0 : 3 : 0 : 0.3
+T: 2 0 : 2 : 2 : 0.7
+T: 2 0 : 2 : 0 : 0.3
+T: 2 0 : 0 : 2 : 0.5
+T: 2 0 : 0 : 0 : 0.5
+T: 2 0 : 1 : 2 : 0.5
+T: 2 0 : 1 : 0 : 0.5
+T: 0 1 : 3 : 1 : 0.8
+T: 0 1 : 3 : 0 : 0.2
+T: 0 1 : 2 : 1 : 0.3
+T: 0 1 : 2 : 0 : 0.7
+T: 0 1 : 0 : 1 : 0.3
+T: 0 1 : 0 : 0 : 0.7
+T: 0 1 : 1 : 1 : 0.8
+T: 0 1 : 1 : 0 : 0.2
+T: 0 0 : 3 : 0 : 1
+T: 0 0 : 2 : 0 : 1
+T: 0 0 : 0 : 0 : 1
+T: 0 0 : 1 : 0 : 1
+T: 0 2 : 3 : 1 : 0.7
+T: 0 2 : 3 : 0 : 0.3
+T: 0 2 : 2 : 1 : 0.5
+T: 0 2 : 2 : 0 : 0.5
+T: 0 2 : 0 : 1 : 0.5
+T: 0 2 : 0 : 0 : 0.5
+T: 0 2 : 1 : 1 : 0.7
+T: 0 2 : 1 : 0 : 0.3
+T: 1 0 : 3 : 2 : 0.8
+T: 1 0 : 3 : 0 : 0.2
+T: 1 0 : 2 : 2 : 0.8
+T: 1 0 : 2 : 0 : 0.2
+T: 1 0 : 0 : 2 : 0.3
+T: 1 0 : 0 : 0 : 0.7
+T: 1 0 : 1 : 2 : 0.3
+T: 1 0 : 1 : 0 : 0.7
+T: 1 1 : 3 : 3 : 0.64
+T: 1 1 : 3 : 2 : 0.16
+T: 1 1 : 3 : 0 : 0.04
+T: 1 1 : 3 : 1 : 0.16
+T: 1 1 : 2 : 3 : 0.24
+T: 1 1 : 2 : 2 : 0.56
+T: 1 1 : 2 : 0 : 0.14
+T: 1 1 : 2 : 1 : 0.06
+T: 1 1 : 0 : 3 : 0.09
+T: 1 1 : 0 : 2 : 0.21
+T: 1 1 : 0 : 0 : 0.49
+T: 1 1 : 0 : 1 : 0.21
+T: 1 1 : 1 : 3 : 0.24
+T: 1 1 : 1 : 2 : 0.06
+T: 1 1 : 1 : 0 : 0.14
+T: 1 1 : 1 : 1 : 0.56
+T: 1 2 : 3 : 3 : 0.56
+T: 1 2 : 3 : 2 : 0.24
+T: 1 2 : 3 : 0 : 0.06
+T: 1 2 : 3 : 1 : 0.14
+T: 1 2 : 2 : 3 : 0.4
+T: 1 2 : 2 : 2 : 0.4
+T: 1 2 : 2 : 0 : 0.1
+T: 1 2 : 2 : 1 : 0.1
+T: 1 2 : 0 : 3 : 0.15
+T: 1 2 : 0 : 2 : 0.15
+T: 1 2 : 0 : 0 : 0.35
+T: 1 2 : 0 : 1 : 0.35
+T: 1 2 : 1 : 3 : 0.21
+T: 1 2 : 1 : 2 : 0.09
+T: 1 2 : 1 : 0 : 0.21
+T: 1 2 : 1 : 1 : 0.49
+O: 2 2 : 3 : 1 1  : 1
+O: 2 2 : 2 : 1 0  : 1
+O: 2 2 : 0 : 0 0  : 1
+O: 2 2 : 1 : 0 1  : 1
+O: 2 1 : 3 : 1 1  : 1
+O: 2 1 : 2 : 1 0  : 1
+O: 2 1 : 0 : 0 0  : 1
+O: 2 1 : 1 : 0 1  : 1
+O: 2 0 : 3 : 1 1  : 1
+O: 2 0 : 2 : 1 0  : 1
+O: 2 0 : 0 : 0 0  : 1
+O: 2 0 : 1 : 0 1  : 1
+O: 0 1 : 3 : 1 1  : 1
+O: 0 1 : 2 : 1 0  : 1
+O: 0 1 : 0 : 0 0  : 1
+O: 0 1 : 1 : 0 1  : 1
+O: 0 0 : 3 : 1 1  : 1
+O: 0 0 : 2 : 1 0  : 1
+O: 0 0 : 0 : 0 0  : 1
+O: 0 0 : 1 : 0 1  : 1
+O: 0 2 : 3 : 1 1  : 1
+O: 0 2 : 2 : 1 0  : 1
+O: 0 2 : 0 : 0 0  : 1
+O: 0 2 : 1 : 0 1  : 1
+O: 1 0 : 3 : 1 1  : 1
+O: 1 0 : 2 : 1 0  : 1
+O: 1 0 : 0 : 0 0  : 1
+O: 1 0 : 1 : 0 1  : 1
+O: 1 1 : 3 : 1 1  : 1
+O: 1 1 : 2 : 1 0  : 1
+O: 1 1 : 0 : 0 0  : 1
+O: 1 1 : 1 : 0 1  : 1
+O: 1 2 : 3 : 1 1  : 1
+O: 1 2 : 2 : 1 0  : 1
+O: 1 2 : 0 : 0 0  : 1
+O: 1 2 : 1 : 0 1  : 1
+R: 0 0 : 0 : * : * : 0
+R: 0 1 : 0 : * : * : 2
+R: 0 2 : 0 : * : * : 0
+R: 1 0 : 0 : * : * : 2
+R: 1 1 : 0 : * : * : 4
+R: 1 2 : 0 : * : * : 2
+R: 2 0 : 0 : * : * : 0
+R: 2 1 : 0 : * : * : 2
+R: 2 2 : 0 : * : * : 5
+R: 0 0 : 1 : * : * : 0
+R: 0 1 : 1 : * : * : -0.4
+R: 0 2 : 1 : * : * : -3
+R: 1 0 : 1 : * : * : 2
+R: 1 1 : 1 : * : * : 1.2
+R: 1 2 : 1 : * : * : -1.6
+R: 2 0 : 1 : * : * : 0
+R: 2 1 : 1 : * : * : -0.4
+R: 2 2 : 1 : * : * : 0.5
+R: 0 0 : 2 : * : * : 0
+R: 0 1 : 2 : * : * : 2
+R: 0 2 : 2 : * : * : 0
+R: 1 0 : 2 : * : * : -0.4
+R: 1 1 : 2 : * : * : 1.2
+R: 1 2 : 2 : * : * : -0.4
+R: 2 0 : 2 : * : * : -3
+R: 2 1 : 2 : * : * : -1.6
+R: 2 2 : 2 : * : * : 0.5
+R: 0 0 : 3 : * : * : 0
+R: 0 1 : 3 : * : * : -0.4
+R: 0 2 : 3 : * : * : -3
+R: 1 0 : 3 : * : * : -0.4
+R: 1 1 : 3 : * : * : -1.44
+R: 1 2 : 3 : * : * : -3.88
+R: 2 0 : 3 : * : * : -3
+R: 2 1 : 3 : * : * : -3.88
+R: 2 2 : 3 : * : * : -3.55
diff --git a/code/src/problem_examples/dpomdp/tiger.cpp b/code/src/problem_examples/dpomdp/tiger.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6482f9f1a8ab9d43bffd03726e032aca4bbfb23f
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/tiger.cpp
@@ -0,0 +1,143 @@
+#include "../../core/_module.hpp"
+#include "examples_utils.hpp"
+#include "tiger.hpp"
+
+#include <math.h>
+#include <algorithm>
+
+
+namespace problem_examples{
+namespace tiger{
+
+using namespace std;
+using namespace common;
+
+
+#define STATE_LEFT 0
+#define STATE_RIGHT 1
+
+#define LISTEN 2
+#define OPEN_LEFT 0
+#define OPEN_RIGHT 1
+
+#define OBS_LEFT 0
+#define OBS_RIGHT 1
+
+
+void generate(int nb_agents){
+	//-- general
+	PROBLEM.discount = 1.0;
+	PROBLEM.criterion_reward = true;
+	PROBLEM.agents_number = nb_agents;
+	PROBLEM.last_agent = nb_agents - 1;
+	
+	//-- states
+	PROBLEM.states_number = 2;
+	PROBLEM.belief_init = Vector(PROBLEM.states_number, 1.0 / (double) PROBLEM.states_number);
+	
+	//-- observations
+	PROBLEM.observations_joint_number = pow(2, nb_agents);
+	for (int i = 0; i < nb_agents; i++)
+	    PROBLEM.observations_number_byAgent.push_back(2);
+	
+	//-- actions
+	PROBLEM.actions_joint_number = pow(3, nb_agents);
+	for (int i = 0; i < nb_agents; i++)
+	    PROBLEM.actions_number_byAgent.push_back(3);
+	
+	//-- transitions
+	vector<int> actions_all_listen(PROBLEM.agents_number, LISTEN);
+	int u_all_listen = utils::get_jointIndex(actions_all_listen, PROBLEM.actions_number_byAgent, nb_agents);
+	for (int x = 0; x < PROBLEM.states_number; x++){
+	    for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+			for (int y = 0; y < PROBLEM.states_number; y++){
+				//-- we only fill the mapping if the proba > 0
+				if (u != u_all_listen){
+					PROBLEM.dynamics_T[u][x][y] = .5;
+				}
+				else if (x == y){
+					PROBLEM.dynamics_T[u][x][y] = 1.0;
+				}
+			}
+	    }
+	}
+
+    //-- setting up observations
+	for (int z = 0; z < PROBLEM.observations_joint_number; z++){
+		vector<int> indiv_zs = utils::get_indivIndices(PROBLEM.observations_number_byAgent, PROBLEM.agents_number, z);
+		int nb_left = count(indiv_zs.begin(), indiv_zs.end(), OBS_LEFT);
+		int nb_right = count(indiv_zs.begin(), indiv_zs.end(), OBS_RIGHT);
+		assert(nb_right == nb_agents - nb_left);
+		for (int y = 0; y < PROBLEM.states_number; y++){
+	    	for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+				double proba = .0;
+				if (u != u_all_listen){
+					proba = 1.0 / (double)PROBLEM.observations_joint_number;
+				}
+				else if (y == STATE_LEFT){
+					proba = pow(0.85, nb_left) * pow(0.15, nb_right);
+				}
+				else if (y == STATE_RIGHT){
+					proba = pow(0.85, nb_right) * pow(0.15, nb_left);
+				}
+				//-- we only fill the mapping if the proba > 0
+				if (proba > .0){
+					PROBLEM.dynamics_O[u][y][z] = proba;
+				}
+			}
+	    }
+	}
+    
+	//-- setting up rewards
+    PROBLEM.rewards_matrix = Matrix<double>(PROBLEM.states_number, PROBLEM.actions_joint_number, INFINITY);
+    for (int u = 0; u < PROBLEM.actions_joint_number; u++){
+		vector<int> indiv_us = utils::get_indivIndices(PROBLEM.actions_number_byAgent, PROBLEM.agents_number, u);
+		int nb_listen = count(indiv_us.begin(), indiv_us.end(), LISTEN);
+		int nb_left = count(indiv_us.begin(), indiv_us.end(), OPEN_LEFT);
+		int nb_right = count(indiv_us.begin(), indiv_us.end(), OPEN_RIGHT);
+		assert(nb_listen + nb_left + nb_right == PROBLEM.agents_number);
+
+		for (int x = 0; x < PROBLEM.states_number; x++){
+			int nb_good = (x == STATE_LEFT) ? nb_right : nb_left;
+			int nb_wrong = (x == STATE_LEFT) ? nb_left : nb_right;
+			assert(nb_good + nb_wrong + nb_listen == PROBLEM.agents_number);
+
+			double reward = .0;
+			
+			double ratio_listen = nb_listen / (double) PROBLEM.agents_number;
+			double ratio_good = nb_good / (double) PROBLEM.agents_number;
+			if (nb_wrong > 0){
+				double coeff = 1.0 + (nb_wrong - 1) / double(nb_agents - 1); // in [1; 2]
+				reward =  -2 * ratio_listen + 20.0 * ratio_good - 100.0 / coeff;
+			}
+			else{
+				reward = -2 * ratio_listen + 20.0 * ratio_good;
+			}
+
+			/*if (nb_wrong > 0){
+				reward =  -nb_listen + 10.0 * nb_good - 100.0 /((double) nb_wrong);
+			}
+			else{
+				reward = -nb_listen + 10 * nb_good;
+			}*/
+
+			
+			PROBLEM.rewards_matrix(x, u) = reward;
+
+			//-- verbose
+			if (SEARCH.verbose >= utils::Verbose::high){
+				cout << "x=" << vector<string>({"LEFT", "RIGHT"}).at(x);
+				cout << " u=(";
+				for (int iu: indiv_us)
+					cout << vector<string>({"LEFT", "RIGHT", "LISTEN"}).at(iu) << ",";
+				cout << ") => reward " << reward << endl;
+			}
+		}
+    }
+
+	PROBLEM.finalize();
+}
+
+
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/tiger.dpomdp b/code/src/problem_examples/dpomdp/tiger.dpomdp
new file mode 100755
index 0000000000000000000000000000000000000000..3cbfba69cb0db97ba0353b7dd863de74b08462ae
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/tiger.dpomdp
@@ -0,0 +1,123 @@
+# This is a Dec-POMDP (.dpomdp) file for the Dec-Tiger problem.
+# For more detailed documentation, see example.dpomdp
+
+# Allright, here we go!
+#
+#The agents.
+#----------
+#Either 1) the number of agents:
+#   agents: %d
+#or 2) a list of agent identifiers, e.g.:
+#   agents: agent1_name, name-of-agent2, ...
+agents: 2
+#   discount: %f
+discount: 1.0
+#.0
+#   values: [ reward, cost ]
+values: "reward"
+#   states: [ %d, <list of states> ]
+states: "tiger-left"   "tiger-right"
+#Examples of this are:
+#   start: 0.3 0.1 0.0 0.2 0.5
+#   start: first-state
+#   start: 5
+#   start: uniform
+#   start include: first-state third state
+#   start include: 1 3
+#   start exclude: fifth-state seventh-state
+start:
+"uniform"
+#
+#The actions declarations
+#------------------------
+#the  (number/list of) actions for each of the agents on a separate line
+#   actions:
+#   [ %d, <list of actions> ]
+#   [ %d, <list of actions> ]
+#   ...
+#   [ %d, <list of actions> ]
+actions:
+"open-left" "open-right" "listen"
+"open-left" "open-right" "listen"
+#the (number/list of) observations for each of the agents on a separate line
+#   observations:
+#   [ %d, <list of observations> ]
+#   [ %d, <list of observations> ]
+#   ...
+#   [ %d, <list of observations> ]
+observations:
+"hear-left" "hear-right"
+"hear-left" "hear-right"
+#Transition probabilities
+#   T: <a1 a2...an> : <start-state> : <end-state> : %f
+#or
+#   T: <a1 a2...an> : <start-state> :
+#   %f %f ... %f			    P(s_1'|ja,s) ... P(s_k'|ja,s)
+#or
+#   T: <a1 a2...an> :			    this is a |S| x |S| matrix
+#   %f %f ... %f			    P(s_1'|ja,s_1) ... P(s_k'|ja,s_1)
+#   %f %f ... %f			    ...
+#   ...					    ...
+#   %f %f ... %f			    P(s_1'|ja,s_k) ... P(s_k'|ja,s_k)
+#or
+#   T: <a1 a2...an>
+#   [ identity, uniform ]
+T: "*" :
+"uniform"
+#T:open-right open-right :
+#uniform
+T: "listen" "listen" :
+"identity"
+#Observation probabilities
+#    O: <a1 a2...an> : <end-state> : <o1 o2 ... om> : %f
+#or
+#    O: <a1 a2...an> : <end-state> :
+#    %f %f ... %f	    P(jo_1|ja,s') ... P(jo_x|ja,s')
+#or
+#    O:<a1 a2...an> :	    - a |S|x|JO| matrix
+#    %f %f ... %f	    P(jo_1|ja,s_1') ... P(jo_x|ja,s_1')
+#    %f %f ... %f	    ...
+#    ...		    ...
+#    %f %f ... %f	    P(jo_1|ja,s_k') ... P(jo_x|ja,s_k')
+O: "*" :
+"uniform"
+O: "listen" "listen" : "tiger-left" : "hear-left" "hear-left" : 0.7225
+O: "listen" "listen" : "tiger-left" : "hear-left" "hear-right" : 0.1275
+O: "listen" "listen" : "tiger-left" : "hear-right" "hear-left" : 0.1275
+O: "listen" "listen" : "tiger-left" : "hear-right" "hear-right" : 0.0225
+O: "listen" "listen" : "tiger-right" : "hear-right" "hear-right" : 0.7225
+O: "listen" "listen" : "tiger-right" : "hear-left" "hear-right" : 0.1275
+O: "listen" "listen" : "tiger-right" : "hear-right" "hear-left" : 0.1275
+O: "listen" "listen" : "tiger-right" : "hear-left" "hear-left" : 0.0225
+#The rewards
+#or
+#    R: <a1 a2...an> : <start-state> : <end-state> :
+#    %f %f ... %f
+#or
+#    R: <a1 a2...an> : <start-state> :
+#    %f %f ... %f
+#    %f %f ... %f
+#    ...
+#    %f %f ... %f
+#
+#Typical problems only use R(s,ja) which is specified by:
+#   R: <a1 a2...an> : <start-state> : %f
+R: "listen" "listen" : "*" : -2
+#R: "listen" "listen" : "tiger-left" : -2
+#R: "listen" "listen" : "tiger-right" : -2
+R: "open-left" "open-left" : "tiger-left" : -50
+R: "open-right" "open-right" : "tiger-right" : -50
+R: "open-left" "open-left" : "tiger-right" : +20
+R: "open-right" "open-right" : "tiger-left" : +20
+R: "open-left" "open-right" : "tiger-left" : -100
+R: "open-left" "open-right" : "tiger-right" : -100
+R: "open-right" "open-left" : "tiger-left" : -100
+R: "open-right" "open-left" : "tiger-right" : -100
+R: "open-left" "listen" : "tiger-left" : -101
+R: "listen" "open-right" : "tiger-right" : -101
+R: "listen" "open-left" : "tiger-left" : -101
+R: "open-right" "listen" : "tiger-right" : -101
+R: "listen" "open-right" : "tiger-left" : 9
+R: "listen" "open-left" : "tiger-right" : 9
+R: "open-right" "listen" : "tiger-left" : 9
+R: "open-left" "listen" : "tiger-right" : 9
diff --git a/code/src/problem_examples/dpomdp/tiger.hpp b/code/src/problem_examples/dpomdp/tiger.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..d4f9c5a028411b35654fef0482b5f1ff9ea8da00
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/tiger.hpp
@@ -0,0 +1,8 @@
+#pragma once
+
+namespace problem_examples{
+namespace tiger{
+
+    void generate(int nb_agents);
+
+}}
\ No newline at end of file
diff --git a/code/src/problem_examples/dpomdp/tiger_light.dpomdp b/code/src/problem_examples/dpomdp/tiger_light.dpomdp
new file mode 100644
index 0000000000000000000000000000000000000000..080de0cd5b5166b382dede82a21313108ae49978
--- /dev/null
+++ b/code/src/problem_examples/dpomdp/tiger_light.dpomdp
@@ -0,0 +1,136 @@
+agents: 2
+discount: 1
+states: 0 1 
+actions:
+0 1 2 
+0 1 2 
+observations:
+0 1 
+0 1 
+start: 0.5 0.5
+T: 2 2 : 1 : 1 : 1
+T: 2 2 : 1 : 0 : 0
+T: 2 2 : 0 : 1 : 0
+T: 2 2 : 0 : 0 : 1
+T: 2 1 : 1 : 1 : 0.5
+T: 2 1 : 1 : 0 : 0.5
+T: 2 1 : 0 : 1 : 0.5
+T: 2 1 : 0 : 0 : 0.5
+T: 2 0 : 1 : 1 : 0.5
+T: 2 0 : 1 : 0 : 0.5
+T: 2 0 : 0 : 1 : 0.5
+T: 2 0 : 0 : 0 : 0.5
+T: 0 1 : 1 : 1 : 0.5
+T: 0 1 : 1 : 0 : 0.5
+T: 0 1 : 0 : 1 : 0.5
+T: 0 1 : 0 : 0 : 0.5
+T: 0 0 : 1 : 1 : 0.5
+T: 0 0 : 1 : 0 : 0.5
+T: 0 0 : 0 : 1 : 0.5
+T: 0 0 : 0 : 0 : 0.5
+T: 0 2 : 1 : 1 : 0.5
+T: 0 2 : 1 : 0 : 0.5
+T: 0 2 : 0 : 1 : 0.5
+T: 0 2 : 0 : 0 : 0.5
+T: 1 0 : 1 : 1 : 0.5
+T: 1 0 : 1 : 0 : 0.5
+T: 1 0 : 0 : 1 : 0.5
+T: 1 0 : 0 : 0 : 0.5
+T: 1 1 : 1 : 1 : 0.5
+T: 1 1 : 1 : 0 : 0.5
+T: 1 1 : 0 : 1 : 0.5
+T: 1 1 : 0 : 0 : 0.5
+T: 1 2 : 1 : 1 : 0.5
+T: 1 2 : 1 : 0 : 0.5
+T: 1 2 : 0 : 1 : 0.5
+T: 1 2 : 0 : 0 : 0.5
+O: 2 2 : 1 : 1 1  : 0.7225
+O: 2 2 : 1 : 1 0  : 0.1275
+O: 2 2 : 1 : 0 0  : 0.0225
+O: 2 2 : 1 : 0 1  : 0.1275
+O: 2 2 : 0 : 1 1  : 0.0225
+O: 2 2 : 0 : 1 0  : 0.1275
+O: 2 2 : 0 : 0 0  : 0.7225
+O: 2 2 : 0 : 0 1  : 0.1275
+O: 2 1 : 1 : 1 1  : 0.25
+O: 2 1 : 1 : 1 0  : 0.25
+O: 2 1 : 1 : 0 0  : 0.25
+O: 2 1 : 1 : 0 1  : 0.25
+O: 2 1 : 0 : 1 1  : 0.25
+O: 2 1 : 0 : 1 0  : 0.25
+O: 2 1 : 0 : 0 0  : 0.25
+O: 2 1 : 0 : 0 1  : 0.25
+O: 2 0 : 1 : 1 1  : 0.25
+O: 2 0 : 1 : 1 0  : 0.25
+O: 2 0 : 1 : 0 0  : 0.25
+O: 2 0 : 1 : 0 1  : 0.25
+O: 2 0 : 0 : 1 1  : 0.25
+O: 2 0 : 0 : 1 0  : 0.25
+O: 2 0 : 0 : 0 0  : 0.25
+O: 2 0 : 0 : 0 1  : 0.25
+O: 0 1 : 1 : 1 1  : 0.25
+O: 0 1 : 1 : 1 0  : 0.25
+O: 0 1 : 1 : 0 0  : 0.25
+O: 0 1 : 1 : 0 1  : 0.25
+O: 0 1 : 0 : 1 1  : 0.25
+O: 0 1 : 0 : 1 0  : 0.25
+O: 0 1 : 0 : 0 0  : 0.25
+O: 0 1 : 0 : 0 1  : 0.25
+O: 0 0 : 1 : 1 1  : 0.25
+O: 0 0 : 1 : 1 0  : 0.25
+O: 0 0 : 1 : 0 0  : 0.25
+O: 0 0 : 1 : 0 1  : 0.25
+O: 0 0 : 0 : 1 1  : 0.25
+O: 0 0 : 0 : 1 0  : 0.25
+O: 0 0 : 0 : 0 0  : 0.25
+O: 0 0 : 0 : 0 1  : 0.25
+O: 0 2 : 1 : 1 1  : 0.25
+O: 0 2 : 1 : 1 0  : 0.25
+O: 0 2 : 1 : 0 0  : 0.25
+O: 0 2 : 1 : 0 1  : 0.25
+O: 0 2 : 0 : 1 1  : 0.25
+O: 0 2 : 0 : 1 0  : 0.25
+O: 0 2 : 0 : 0 0  : 0.25
+O: 0 2 : 0 : 0 1  : 0.25
+O: 1 0 : 1 : 1 1  : 0.25
+O: 1 0 : 1 : 1 0  : 0.25
+O: 1 0 : 1 : 0 0  : 0.25
+O: 1 0 : 1 : 0 1  : 0.25
+O: 1 0 : 0 : 1 1  : 0.25
+O: 1 0 : 0 : 1 0  : 0.25
+O: 1 0 : 0 : 0 0  : 0.25
+O: 1 0 : 0 : 0 1  : 0.25
+O: 1 1 : 1 : 1 1  : 0.25
+O: 1 1 : 1 : 1 0  : 0.25
+O: 1 1 : 1 : 0 0  : 0.25
+O: 1 1 : 1 : 0 1  : 0.25
+O: 1 1 : 0 : 1 1  : 0.25
+O: 1 1 : 0 : 1 0  : 0.25
+O: 1 1 : 0 : 0 0  : 0.25
+O: 1 1 : 0 : 0 1  : 0.25
+O: 1 2 : 1 : 1 1  : 0.25
+O: 1 2 : 1 : 1 0  : 0.25
+O: 1 2 : 1 : 0 0  : 0.25
+O: 1 2 : 1 : 0 1  : 0.25
+O: 1 2 : 0 : 1 1  : 0.25
+O: 1 2 : 0 : 1 0  : 0.25
+O: 1 2 : 0 : 0 0  : 0.25
+O: 1 2 : 0 : 0 1  : 0.25
+R: 0 0 : 0 : * : * : -50
+R: 0 1 : 0 : * : * : -100
+R: 0 2 : 0 : * : * : -101
+R: 1 0 : 0 : * : * : -100
+R: 1 1 : 0 : * : * : 20
+R: 1 2 : 0 : * : * : 9
+R: 2 0 : 0 : * : * : -101
+R: 2 1 : 0 : * : * : 9
+R: 2 2 : 0 : * : * : -2
+R: 0 0 : 1 : * : * : 20
+R: 0 1 : 1 : * : * : -100
+R: 0 2 : 1 : * : * : 9
+R: 1 0 : 1 : * : * : -100
+R: 1 1 : 1 : * : * : -50
+R: 1 2 : 1 : * : * : -101
+R: 2 0 : 1 : * : * : 9
+R: 2 1 : 1 : * : * : -101
+R: 2 2 : 1 : * : * : -2
diff --git a/code/tests/.common.py.swp b/code/tests/.common.py.swp
new file mode 100644
index 0000000000000000000000000000000000000000..f04ff6bc8afa3fcff9a6bf6fad0d79ff2f355295
Binary files /dev/null and b/code/tests/.common.py.swp differ
diff --git a/code/tests/batch_config.py b/code/tests/batch_config.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ed7c17de03bf1c50bfc00c3caaf949d76e09feb
--- /dev/null
+++ b/code/tests/batch_config.py
@@ -0,0 +1,79 @@
+from multiprocessing import cpu_count
+from copy import deepcopy
+import itertools
+
+from common import Problems, Algorithms, Search
+
+
+#%% parameters
+CPU_NUMBER = 1 #cpu_count() - 1  # number of cpu to use (parallelization)
+TIMEOUT = 60*60 # seconds
+VERBOSE = 0
+
+#-- experiments grid
+SEEDS = [
+         0,
+         1,
+         #2,
+         ]
+AGENTS_NUMBERS = [
+                    #2,
+                    #3,
+                    4,
+                    #5,
+                    #6,
+                    #7,
+                    # 8,
+                ]
+HORIZONS = [
+	    2,
+	    #4, 6, 8,
+	    #10, 
+	    #20, 
+	    #40, 
+	    #100,
+            ]
+BENCHS = [
+            #Problems.mabc,
+            #Problems.tiger,
+            #Problems.recycling,
+            #Problems.grid3x3,
+            #Problems.boxPushing,
+            Problems.gridsmall,
+	    #Problems.mars,
+         ]
+ALGORITHMS = [
+                # Algorithms.hsvi_seq_tabular,
+                # Algorithms.hsvi_simul_tabular,
+                # Algorithms.hsvi_seq_enum,
+                # Algorithms.hsvi_seq_milp,
+                # Algorithms.hsvi_simul_enum,
+                # Algorithms.hsvi_simul_milp,
+                #Algorithms.oSarsa,
+                #Algorithms.oSarsa_seq,
+		#Algorithms.oSarsa_seq_noPortfolio,
+		#Algorithms.oSarsa_seq_noSA,
+		#Algorithms.oSarsa_seq_noPortfolio_noSA,
+                Algorithms.A2C,
+                Algorithms.IQL,
+              ]
+
+
+#%% BATCH definiton: a list of Search 
+BATCH = []
+GRID = itertools.product(SEEDS, AGENTS_NUMBERS, HORIZONS, BENCHS, ALGORITHMS)
+
+for seed, agents_number, horizon, bench, algo in GRID:
+    pb = bench(agents_number=agents_number, horizon=horizon)
+    
+    #-- IQL
+    if "IQL" in algo.name:
+        lr_critic_start, epsilon_start = 1e-1, .9
+        algo.lr_critic_start = lr_critic_start
+        algo.epsilon_start = epsilon_start
+    
+    search = Search(deepcopy(pb), deepcopy(algo), seed=seed,
+                    verbose=VERBOSE, timeout=TIMEOUT)
+    BATCH.append(search)
+
+print("BATCH_CONFIG:", len(BATCH), "#experiments")
diff --git a/code/tests/batch_config.py.save b/code/tests/batch_config.py.save
new file mode 100644
index 0000000000000000000000000000000000000000..2dd2a8d89df2b87085c0f77a080b1294a7489766
--- /dev/null
+++ b/code/tests/batch_config.py.save
@@ -0,0 +1,75 @@
+from multiprocessing import cpu_count
+from copy import deepcopy
+import itertools
+
+from common import Problems, Algorithms, Search
+
+
+#%% parameters
+CPU_NUMBER = cpu_count() - 1  # number of cpu to use (parallelization)
+TIMEOUT = 60*60 # seconds
+VERBOSE = 0
+
+#-- experiments grid
+SEEDS = [
+          #0,
+         1,
+         2,
+         ]
+AGENTS_NUMBERS = [
+                    2,
+                    #3,
+                    #4,
+                    # 5,
+                    # 6,
+                    # 7,
+                    # 8,
+                ]
+HORIZONS = [10, 20, 40, 100,
+            # 2,
+            # 3,
+            # 4,
+            # 6,
+            #10,
+            ]
+BENCHS = [
+            # Problems.mabc,
+            #Problems.tiger,
+            #Problems.recycling,
+            #Problems.grid3x3,
+            #Problems.boxPushing,
+            Problems.gridsmall,
+	    #Problems.mars,
+         ]
+ALGORITHMS = [
+                # Algorithms.hsvi_seq_tabular,
+                # Algorithms.hsvi_simul_tabular,
+                # Algorithms.hsvi_seq_enum,
+                # Algorithms.hsvi_seq_milp,
+                # Algorithms.hsvi_simul_enum,
+                # Algorithms.hsvi_simul_milp,
+                Algorithms.oSarsa,
+                #Algorithms.oSarsa_seq,
+                #Algorithms.A2C,
+                #Algorithms.IQL,
+              ]
+
+
+#%% BATCH definiton: a list of Search 
+BATCH = []
+GRID = itertools.product(SEEDS, AGENTS_NUMBERS, HORIZONS, BENCHS, ALGORITHMS)
+
+for seed, agents_number, horizon, bench, algo in GRID:
+    pb = bench(agents_number=agents_number, horizon=horizon)
+    
+    #-- IQL
+    if "IQL" in algo.name:
+        lr_critic_start, epsilon_start = 1e-1, .9
+        algo.lr_critic_start = lr_critic_start
+        algo.epsilon_start = epsilon_start
+    
+    search = Search(deepcopy(pb), deepcopy(algo), seed=seed,
+                    verbose=VERBOSE, timeout=TIMEOUT)
+    BATCH.append(search)
+
+print("BATCH_CONFIG:", len(BATCH), "#experiments")
diff --git a/code/tests/batch_run.py b/code/tests/batch_run.py
new file mode 100644
index 0000000000000000000000000000000000000000..99b745728dc25ddc45cf2182ea7e64ac3782a359
--- /dev/null
+++ b/code/tests/batch_run.py
@@ -0,0 +1,70 @@
+import os
+import numpy as np
+from multiprocessing import Pool, Manager
+import itertools
+
+from batch_config import CPU_NUMBER, BATCH, BENCHS
+from batch_config import AGENTS_NUMBERS, ALGORITHMS
+from batch_utils import read_iterations
+
+
+#-- horizons_max utility (to skip unfeasible searches):
+#--   multiprocessing.Manager helps to share data betwwen processes.
+#--   We'll use a list horizons_max due to the manager restriction
+#--   Hence we have to compute indices corresponding to 
+#--   horizons_max[algo_name][problem_name][agents_number]
+horizons_indices = {a.name:
+                    {b.name: 
+                     {n: 0 for n in AGENTS_NUMBERS} for b in BENCHS}
+                        for a in ALGORITHMS}
+i = 0
+for n in AGENTS_NUMBERS: 
+    for b in BENCHS:
+        for a in ALGORITHMS:
+            horizons_indices[a.name][b.name][n] = i
+            i += 1
+index_max = i
+
+
+#-- single task: compute a search (run C++ code with os.system)
+def run_process(search_horizons_max):
+    search, horizons_max = search_horizons_max
+    pb, algo = search.problem, search.algo
+    
+    #-- skip ?
+    #-- check if the problem is too complex
+    i = horizons_indices[algo.name][pb.name][pb.agents_number]
+    if pb.horizon > horizons_max[i]:
+        print(search, ": --- SKIP (too complex) ---")
+        return
+    
+    #-- run
+    cmd = search.get_process_commandLine()
+    cmd += " >/dev/null" # silent
+    print(cmd)
+    os.system(cmd)
+    
+    #-- check if the experiment failed
+    filename = search.get_csv_filename()
+    iters_number, _ = read_iterations(filename)
+    if iters_number < 1:
+        print("%s: *** FAILED ***" % (search))
+        #-- to skip more complex problems        
+        for n in AGENTS_NUMBERS:
+            if n >= pb.agents_number:
+                i = horizons_indices[algo.name][pb.name][n]
+                horizons_max[i] = min(pb.horizon - 1, horizons_max[i])
+        return
+    print("%s: === SUCCESS ===" % (search))
+    
+
+if __name__ == "__main__":
+    #-- horizons_max is shared betwwen processes
+    manager = Manager()
+    horizons_max = manager.list([np.inf] * index_max)
+    
+    #-- run the batch
+    with Pool(CPU_NUMBER) as pool:
+        pool.map(run_process, zip(BATCH, itertools.repeat(horizons_max))) 
+        pool.close()
+        pool.join()
diff --git a/code/tests/batch_utils.py b/code/tests/batch_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..ca7a65e82595d49feaf0784f5383d8ad39377801
--- /dev/null
+++ b/code/tests/batch_utils.py
@@ -0,0 +1,109 @@
+import pandas as pd
+import numpy as np
+
+from common import Problems as Pbs
+from common import find_filenames
+
+
+HSVI_VALUES = {Pbs.tiger.name: {5: 7.02, 10: 15.18, 20: 28.75, 40: 67.09,
+                                   100: 170.90},
+                  Pbs.recycling.name: {10: 31.86, 100: 308.78},
+                  Pbs.mabc.name: {10: 9.29},
+                  Pbs.gridsmall.name: {10: 6.03, 20: 13.93, 40: 28.55, 100: 75.92},
+                  Pbs.grid3x3.name: {5: .896, 6: 1.491, 10: 4.68, 20: 14.35,
+                                     40: 34.33, 100: 94.24},
+                  Pbs.boxPushing.name: {5: 107.72, 6: 120.67, 10: 223.74,
+                                        20: 458.10, 40: 636.28},
+                  Pbs.mars.name: {10: 26.31, 20: 52.13, 40: 103.52, 100: 249.92}
+                  }
+
+
+def get_optimal_value(pb):
+    sol = None
+    if pb.agents_number == 2:
+        values = HSVI_VALUES.get(pb.name)
+        if values:
+            sol = values.get(pb.horizon)
+    return sol
+
+
+def read_iterations(filename, timeout=np.inf):
+    '''
+    Read an experiment file and return the number of iterations and mean time.
+    Args:
+        filename : String, an experiment file (csv)
+    Returns:
+        iteration_number: Integer
+        mean_time: Float
+        Returns (-1,-1) if an exception is raised (e.g. file not found)
+    '''
+    iters, mean_time = -1, -1
+    try:
+        df = pd.read_csv(filename)
+    except:
+        return (iters, mean_time)
+    for f in ['iter', 'episode']:
+        try:
+            res = max(df[f])
+            iters = max(iters, res)
+        except:
+            pass
+    time = max(df['time'])
+    mean_time = time / iters if iters > 0 else timeout
+    return iters, mean_time
+
+
+def get_iteration_number(pb, algo, seeds=None, timeout=np.inf):
+    '''
+    Return #iteration for a given (problem, algo). If several results file
+    exist, i.e. several seeds, the avareage is returned.
+    '''
+    filenames = find_filenames(pb, algo, seeds)    
+    iters, time = 0, timeout
+    try:
+        #-- read data results: csv files -> dfs (pandas dataframes)
+        for filename in filenames:
+            res_iter, res_meantime = read_iterations(filename)
+            iters = max(iters, res_iter)
+            time = min(time, res_meantime)
+    except:
+        print("*** get_iteration_number FAILED %s %s" % (pb, algo.name))
+    return iters, time
+
+
+def get_anytime_data(pb, algo, seeds=None):
+    '''
+    Returns the following lists: tspan, mini, mean, maxi, var
+    '''
+    filenames = find_filenames(pb, algo, seeds)
+    
+    csv_x_name, csv_y_name = 'time', 'best' if "oSarsa" in algo.name else 'value'
+    t_span, mini, mean, maxi, var = None, None, None, None, None
+    try:
+        #-- read data results: csv files -> dfs (pandas dataframes)
+        dfs = []
+        for filename in filenames:
+            df = pd.read_csv(filename, usecols=[csv_x_name, csv_y_name])
+            dfs.append(df)
+        # assert not dfs.empty()
+        #-- repeat last row in order to obtain same lengths
+        max_len = max(len(df) for df in dfs)
+        for df in dfs:
+            last_row = df.iloc[-1]
+            while len(df) < max_len:
+                df.loc[len(df)] = [last_row[csv_x_name], last_row[csv_y_name]]
+        
+        #-- aggregate data: dfs -> df
+        times = np.array([df.get(csv_x_name).to_numpy() for df in dfs])
+        t_span = np.linspace(times.min(), times.max(), num = 200)
+        values = np.array([np.interp(t_span, df.get(csv_x_name), 
+                                     df.get(csv_y_name)) for df in dfs])
+        df = pd.DataFrame(values.transpose(), index=t_span)
+        
+        mean, _ = df.mean(axis=1), df.std(axis=1)
+        mini, maxi = df.min(axis=1), df.max(axis=1)
+        var = df.var(axis=1) # variance
+    except:
+        print("*** PARSING FAILED %s %s" % (pb, algo.name))
+        
+    return t_span, mini, mean, maxi, var
diff --git a/code/tests/common.py b/code/tests/common.py
new file mode 100644
index 0000000000000000000000000000000000000000..72fc9910c317b5efd02b5d4f01561cabbb4bb321
--- /dev/null
+++ b/code/tests/common.py
@@ -0,0 +1,178 @@
+import os
+from copy import deepcopy
+
+
+PROCESS = "../build/sdms"
+
+
+class Problem:
+    _horizon = 10 #-- default value
+    _agents_number = 2
+    _memory = -1 # -- truncature size
+
+    def __init__(self,
+                 name: str,
+                 official: str,
+                 horizon: int = _horizon,
+                 agents_number: int = _agents_number,
+                 memory: int = _memory):
+        self.name = name
+        self.official = official
+        self.horizon = horizon
+        self.agents_number = agents_number
+        self.memory = memory
+    
+    def __call__(self,
+                 horizon: int = None,
+                 agents_number: int = None):
+        if horizon is not None: self.horizon = horizon
+        if agents_number is not None: self.agents_number = agents_number
+        return deepcopy(self)
+    
+    def __repr__(self):
+        return "Problem: %s horizon %i agents %i memory %i" % \
+            (self.official, self.horizon, self.agents_number, self.memory)
+    
+    def __eq__(self, other):
+        return self.official == other.official \
+            and self.horizon == other.horizon \
+            and self.agents_number == other.agents_number \
+            and self.memory == other.memory
+
+class Problems:
+    tiger = Problem("tiger", "Tiger", memory=3)
+    gridsmall = Problem("GridSmall", "GridSmall", memory=2)
+    mabc = Problem("mabc", "Broadcast", memory=1)
+    recycling = Problem("recycling", "Recycling", memory=1)
+    boxPushing = Problem("boxPushingUAI07", "Box-pushing", memory=3)
+    grid3x3 = Problem("Grid3x3corners", "Grid3x3", memory=1)
+    mars = Problem("Mars", "Mars", memory=1)
+
+
+class Algorithm:
+    
+    def __init__(self,
+                 name: str,
+                 name_cmd: str, # as in C++ options
+                 color: str = "blue", # for plots
+                 marker: str = ".", # for plots
+                 compress: bool = True,
+                 name_latex: str = None
+                 ):
+        self.name = name
+        self.name_cmd = name_cmd
+        self.compress = compress
+        self.color = color
+        self.marker = marker
+        self.name_latex = name if name_latex is None else name_latex 
+    
+    def __call__(self):
+        return deepcopy(self)
+    
+    def get_log_path(self) -> str:
+        path = os.path.join(os.path.curdir, 'results', self.name)
+        if not os.path.exists(path):
+            try:
+                os.makedirs(path)
+            except:
+                print("WARNING: ISSUE makedirs ")
+        return path
+    
+    def __repr__(self):
+        return "Algo: %s" % (self.name,)
+
+
+class Algorithms:
+    #-- oSARSA
+    oSarsa_seq = Algorithm("oSarsa_seq", "oSarsa-seq", "blue", marker="D",
+                           compress=False, name_latex="$oSarsa^{seq}$")
+    oSarsa = Algorithm("oSarsa", "oSarsa", "orange", marker="o",
+                       name_latex="$oSarsa^{sim}$")
+    #-- oSarsa ablation
+    oSarsa_seq_noPortfolio = Algorithm("oSarsa_seq_noPortfolio", "oSarsa-seq",
+                                       "blue", compress=False,
+                                       name_latex="$oSarsa^{seq}_{-1}$")
+    oSarsa_seq_noPortfolio.Portfolio = False
+    oSarsa_seq_noSA = Algorithm("oSarsa_seq_noSA", "oSarsa-seq",
+                                       "blue", compress=False,
+                                       name_latex="$oSarsa^{seq}_{-2}$")
+    oSarsa_seq_noSA.SA = False
+    oSarsa_seq_noPortfolio_noSA = Algorithm("oSarsa_seq_noPortfolio_noSA", "oSarsa-seq",
+                                       "blue", compress=False,
+                                       name_latex="$oSarsa^{seq}_{-3}$")
+    oSarsa_seq_noPortfolio_noSA.Portfolio = False
+    oSarsa_seq_noPortfolio_noSA.SA = False
+    #-- local
+    A2C = Algorithm("A2C", "A2C", "green")
+    IQL = Algorithm("IQL", "IQL", "gray")
+    
+
+
+class Search:
+    _seed = -1
+    _verbose = 1 # none = 0, low = 1, medium = 2, high = 3
+    _timeout = 60 #-- default value
+    
+    def __init__(self,
+                 problem: Problem,
+                 algo: Algorithm,
+                 verbose: int = _verbose,
+                 timeout: float = _timeout,
+                 seed: int = _seed,
+                 ):
+        self.problem = problem
+        self.algo = algo
+        self.verbose = verbose
+        self.timeout = timeout
+        self.seed = seed
+        
+    def get_csv_filename(self) -> str:
+        algo, pb = self.algo, self.problem
+        filename = "%s_n%i_h%i_s%i.csv" % \
+            (pb.name, pb.agents_number, pb.horizon, self.seed)
+        return os.path.join(algo.get_log_path(), filename)
+    
+    def get_process_commandLine(self) -> str:
+        algo, pb = self.algo, self.problem
+        cmd = PROCESS
+        cmd += " -f " + pb.name
+        cmd += " -N " + str(pb.agents_number)
+        cmd += " -p " + str(pb.horizon)
+        cmd += " -n " + algo.name_cmd
+        cmd += " -t " + str(self.timeout)
+        cmd += " -v " + str(self.verbose)
+        cmd += ' -c ' + str(int(algo.compress))
+        cmd += ' -m ' + str(pb.memory)
+        cmd += " -s " + str(self.seed)
+        if hasattr(algo, "lr_actor_start"):
+            cmd += " -a " + str(algo.lr_actor_start)
+        if hasattr(algo, "lr_critic_start"):
+            cmd += " -b " + str(algo.lr_critic_start)
+        if hasattr(algo, "epsilon_start"):
+            cmd += " -e " + str(algo.epsilon_start)
+        if hasattr(algo, "Portfolio"):
+            cmd += " -P " + str(int(algo.Portfolio))
+        if hasattr(algo, "SA"):
+            cmd += " -S " + str(int(algo.SA))
+        cmd += ' -l ' + self.get_csv_filename()
+        return cmd
+    
+    def __repr__(self):
+        return "Search (%s, %s, seed %i, timeout %i)" % (
+            self.problem, self.algo, self.seed, self.timeout)
+
+
+def find_filenames(pb, algo, seeds=None):
+    #-- find csv files
+    if seeds is None:
+        log_path = algo.get_log_path()
+        filenames = os.listdir(log_path) 
+        filenames = [os.path.join(log_path, f) for f in filenames 
+              if f.endswith(".csv")
+              and pb.name in f
+              and "_n%i_" % (pb.agents_number,) in f
+              and "_h%i_" % (pb.horizon,) in f]
+    else:
+        searchs = [Search(deepcopy(pb), deepcopy(algo), seed=s) for s in seeds]
+        filenames = [s.get_csv_filename() for s in searchs]
+    return filenames
diff --git a/code/tests/plot_oSarsa.py b/code/tests/plot_oSarsa.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbfdce8ecdc93793bc15185ca742b343a7f94a95
--- /dev/null
+++ b/code/tests/plot_oSarsa.py
@@ -0,0 +1,296 @@
+import matplotlib.pyplot as plt
+import os
+import numpy as np
+import copy
+
+from common import Problems as Pbs, Algorithms as Algos
+from batch_utils import get_optimal_value, get_anytime_data, get_iteration_number
+
+
+PROBLEM = Pbs.recycling
+AGENTS_NUMBERS = [2, 3, 4, 5, 6, 7]
+HORIZONS = [10]#, 20, 40,100]
+ALGOS = [
+          Algos.oSarsa_seq, 
+         # Algos.oSarsa_seq_noPortfolio,
+         # # Algos.oSarsa_seq_noSA,
+         # Algos.oSarsa_seq_noPortfolio_noSA,
+          Algos.oSarsa, 
+            Algos.A2C, 
+            Algos.IQL
+         ]
+TIMEOUT = 3600  # for iteration plots
+
+FIG_PATH_ANYTIME = os.path.join(os.path.curdir, "figures")
+FIG_PATH_ITERS = os.path.join(os.path.curdir, "figures")
+TABLE_PATH = os.path.join(os.path.curdir, "tables")
+
+
+if PROBLEM == Pbs.tiger:    
+    MIN_Y = {2: {10:-10, 20:-40, 40:-80, 100: -250}, 3: {10:-100}, 4: {10:-200},
+              5: {2: -5, 4: -9, 6: -13, 8: -17, 10: -300}}
+elif PROBLEM == Pbs.recycling:
+    MIN_Y = {2: {10: 30, 20:56, 40:120, 100:300}, 3: {10: 30}, 4: {10: 30}, 5: {10: 30}, 6: {10: 30},
+             7: {10: 30}}
+elif PROBLEM == Pbs.mabc:
+    MIN_Y = {2: {10: 8}, 3: {10: 4}, 4: {10: 3}, 5: {10: 3}, 6: {10: 3},
+             7: {10: 3}}
+elif PROBLEM == Pbs.gridsmall:
+    MIN_Y = {}
+elif PROBLEM == Pbs.grid3x3:
+    MIN_Y = {2:{10:4, 20:12, 40:30, 100:80}, 3: {}}
+elif PROBLEM == Pbs.boxPushing:
+    MIN_Y = {}
+elif PROBLEM == Pbs.mars:
+    MIN_Y = {2: {20:10, 40:25}}
+else:
+    assert False
+
+
+def plot_anytime(agents_number, horizon):
+    fig = plt.figure()
+    
+    pb = copy.deepcopy(PROBLEM)
+    pb(agents_number = agents_number, horizon = horizon)
+    
+    y_max = -np.inf
+    for i, algo in enumerate(ALGOS):
+        #-- collect data
+        t_span, mini, mean, maxi, var = get_anytime_data(pb, algo)
+        if t_span is None:
+            continue
+        #-- HSVI solution
+        if i == 0:
+            sol = get_optimal_value(pb)
+            if sol:        
+                plt.plot(t_span, [sol] * len(t_span), "r--", label="FB-HSVI",
+                         linewidth=2.5)
+        #-- plot
+        plt.plot(maxi, color=algo.color, label=algo.name_latex, linewidth=2)
+        plt.fill_between(t_span, mini, maxi, color=algo.color, alpha=0.1)
+        y_max = max(y_max, max(maxi))    
+    if MIN_Y.get(agents_number):
+        y_min = MIN_Y.get(agents_number).get(horizon)
+        if y_min:
+            plt.ylim(y_min , y_max + (y_max - y_min ) * .05)    
+    plt.ylabel('$V(s_0)$')
+    plt.xlabel('time (s)')
+    plt.legend()
+    plt.title("%s #agents %i  horizon %i" % (PROBLEM.official, agents_number,
+                                             horizon))
+    #-- save fig:
+    if not os.path.exists(FIG_PATH_ANYTIME):
+        os.makedirs(FIG_PATH_ANYTIME)
+    fig_path = os.path.join(FIG_PATH_ANYTIME,
+                            "%s_n%i_h%i" % (pb.name, agents_number, horizon))
+    print("=== save figure:", fig_path)
+    # fig.savefig(fig_path + ".png")
+    fig.savefig(fig_path + ".pdf")   
+
+
+def plot_iterations(horizon):
+    fig = plt.figure()
+    ax = plt.subplot(111)
+    
+    bar_width = .5 / len(ALGOS)
+    xmin, xmax = np.inf, -np.inf
+    
+    algos = [a for a in ALGOS if "Sarsa" in a.name]
+    for i, algo in enumerate(algos):
+        #-- collect data
+        algo_iters = []
+        for agents_number in AGENTS_NUMBERS:
+            pb = copy.deepcopy(PROBLEM)
+            pb(agents_number = agents_number, horizon = horizon)
+            iters, iter_times = get_iteration_number(pb, algo, timeout=TIMEOUT)
+            algo_iters.append(iter_times)
+        #-- plot
+        print(algo.name, "horizon", horizon, "agents_number", agents_number,
+              algo_iters)
+        br = np.arange(len(AGENTS_NUMBERS)) + bar_width * i
+        xmin, xmax = min(xmin, min(br)), max(xmax, max(br))
+        ax.bar(br, algo_iters, width=bar_width, color=algo.color, label=algo.name_latex)
+        ax.set_yscale('log')
+        ax.set_xticks(
+            np.arange(len(AGENTS_NUMBERS)) + bar_width / 2,
+            labels=map(str, AGENTS_NUMBERS))
+        ax.set_xlabel('# agents')
+        ax.set_ylabel('time (s)')
+        #-- timeout line
+        ax.plot([xmin, xmax], [TIMEOUT, TIMEOUT], 'k--')
+        ax.text(0.02, 0.9, "timeout", transform=ax.transAxes)
+        
+    plt.title("%s" % (PROBLEM.official,))
+    ax.title.set_weight('bold')
+    plt.legend()
+    fig.tight_layout()
+
+    
+    #-- save fig:
+    if not os.path.exists(FIG_PATH_ITERS):
+        os.makedirs(FIG_PATH_ITERS)
+    fig_path = os.path.join(FIG_PATH_ITERS, "%s_h%i" % (pb.name, pb.horizon))
+    print("=== save figure:", fig_path)
+    # fig.savefig(fig_path + ".png")
+    fig.savefig(fig_path + ".pdf")
+
+
+def write_tables():
+    
+    def get_approx(val):
+        if val is None: return val
+        if abs(val) == np.inf: return val
+        return int(val * 100) / 100
+        
+    # collect data 
+    #   => data[agents_number][horizon][algo.name]
+    data = {}
+    for agents_number in AGENTS_NUMBERS:
+        data[agents_number] = {}
+        for horizon in HORIZONS:
+            pb = copy.deepcopy(PROBLEM)
+            pb(agents_number = agents_number, horizon = horizon)
+            data[agents_number][horizon] = {}
+            
+            optimal = get_optimal_value(pb)
+            data[agents_number][horizon]["HSVI"] = {}
+            data[agents_number][horizon]["HSVI"]["best_val"] = optimal
+            best_vals = []
+            opt_approx = get_approx(optimal)
+            if optimal is not None:
+                best_vals.append(opt_approx)
+            
+            for algo in ALGOS:
+                data[agents_number][horizon][algo.name] = {}
+                d = data[agents_number][horizon][algo.name]
+                # best value
+                t_span, mini, mean, maxi, var = get_anytime_data(pb, algo)
+                best_val = maxi.max() if t_span is not None else None
+                d["best_val"] = best_val
+                # iters
+                iters, iter_time = get_iteration_number(pb, algo) if "Sarsa" \
+                    in algo.name else (None, None)
+                d["#iters"], d["iter_time"] = iters, iter_time
+                if best_val is not None:
+                    best_vals.append(get_approx(best_val))
+            for algo in ALGOS:
+                d = data[agents_number][horizon][algo.name]
+                approx = get_approx(d["best_val"])
+                d["highest"] = approx  == max(best_vals)
+            data[agents_number][horizon]["HSVI"]["highest"] = \
+                opt_approx == max(best_vals)
+            
+    
+    # csv: header
+    lines = []
+    line = ",," + "".join(["%s,," % (a.name,) for a in ALGOS]) + "FB-HSVI"
+    lines.append(line + "\n")
+    line = ",," + ",".join(["#iter,value" for _ in ALGOS])
+    lines.append(line + "\n")
+    
+    # csv: rows
+    for agents_number in AGENTS_NUMBERS:
+        line = PROBLEM.name + "(%i)" % (agents_number,) + ","
+        for horizon in HORIZONS:
+            line += "h=%i," % (horizon,)
+            for algo in ALGOS:
+                d = data[agents_number][horizon][algo.name]
+                # iters
+                iters = d["#iters"]
+                if iters:
+                    line += "%.2e," % (iters,) 
+                else:
+                    line += "0,"
+                # best value
+                best_val = d["best_val"]
+                if iters != 0 and best_val is not None:
+                    line += "%.2f," % (best_val)
+                else:
+                    line += ","
+            # optimal value                
+            sol = data[agents_number][horizon]["HSVI"]["best_val"]
+            if sol:
+                line += "%.2f," % (sol,)
+            else:
+                line += "-,"
+            lines.append(line + "\n")
+            line = ","
+    
+    # csv: write file
+    if not os.path.exists(TABLE_PATH):
+        os.makedirs(TABLE_PATH)
+    file_name = "%s.csv" % (PROBLEM.name)
+    file_path = os.path.join(TABLE_PATH, file_name)
+    with open(file_path, "w") as f:
+        f.writelines(lines)
+    
+    # latex: rows
+    lines = []
+    for agents_number in AGENTS_NUMBERS:
+        line = PROBLEM.name + "(%i)" % (agents_number,) + " & "
+        for horizon in HORIZONS:
+            line += "$\ell = %i$ &" % (horizon,)
+            for algo in ALGOS:
+                d = data[agents_number][horizon][algo.name]
+                # iters
+                iters = d["#iters"]
+                if iters is None:
+                    iter_msg = " -- & "
+                elif iters == 0:
+                    iter_msg = " \sc oot &"
+                else:
+                    iter_time = d["iter_time"]
+                    iter_msg = "$%.1e$ &" % (iter_time,) 
+                # elif iters < 100:
+                #     iter_msg = "$%i$ & "  % (iters,) 
+                # else:
+                #     iter_msg = "$%.1e$ &" % (iters,) 
+                if "oSarsa" in algo.name:
+                    line += iter_msg
+                # best value
+                best_val = d["best_val"]
+                highest = d["highest"]
+                if iters != 0 and best_val is not None:
+                    val = "$%.2f$" % (best_val,)
+                    if highest:
+                        val = "\highest{%s}" % (val,)
+                    line +=  "%s &" % (val,)
+                else:
+                    line += " & "
+            # HSVI value                
+            sol_hsvi = data[agents_number][horizon]["HSVI"]["best_val"]
+            highest = data[agents_number][horizon]["HSVI"]["highest"]
+            if sol_hsvi:
+                val = "$%.2f$" % (sol_hsvi,)
+                if highest:
+                    val = "\highest{%s}" % (val,)
+                line +=  "%s" % (val,)
+            else:
+                line += "--"
+
+            lines.append(line + "\\\ \n")
+            line = "&"
+    
+    # latex: write file
+    if not os.path.exists(TABLE_PATH):
+        os.makedirs(TABLE_PATH)
+    file_name = "%s.tex" % (PROBLEM.name)
+    file_path = os.path.join(TABLE_PATH, file_name)
+    with open(file_path, "w") as f:
+        f.writelines(lines)
+
+
+if __name__ == "__main__":
+    #-- plots anytime curves
+    for agents_number in AGENTS_NUMBERS:
+        for horizon in HORIZONS:
+            plot_anytime(agents_number, horizon)
+    
+    #-- plot histograms (iteration numbers)
+    if len(AGENTS_NUMBERS) > 1:
+        for horizon in HORIZONS:
+            plot_iterations(horizon)
+
+    #-- write table
+    write_tables()
+            
diff --git a/code/tests/plot_paper_anytime.py b/code/tests/plot_paper_anytime.py
new file mode 100644
index 0000000000000000000000000000000000000000..7eb0a077ced36d8eeb196f45574b5249dbfe489e
--- /dev/null
+++ b/code/tests/plot_paper_anytime.py
@@ -0,0 +1,101 @@
+import matplotlib.pyplot as plt
+import os
+import numpy as np
+import copy
+import seaborn as sns
+
+from common import Problems as Pbs, Algorithms as Algos
+from batch_utils import get_optimal_value, get_anytime_data
+
+
+ALGOS = [Algos.oSarsa_seq, Algos.oSarsa, Algos.A2C, Algos.IQL]
+FIG_PATH_ANYTIME = os.path.join(os.path.curdir, "figures")
+
+
+PROBLEM = Pbs.mars
+AGENTS_NUMBERS = [2]#, 3, 4, 5]
+HORIZONS = [10, 20, 40,100]
+TIMEOUT = 3600  # for FB-HSVI
+
+
+def save_fig(fig, fig_name):
+    if not os.path.exists(FIG_PATH_ANYTIME):
+        os.makedirs(FIG_PATH_ANYTIME)
+    fig_path = os.path.join(FIG_PATH_ANYTIME, fig_name)
+    print("=== save figure:", fig_path)
+    fig.savefig(fig_path + ".pdf")
+
+
+ROWS, COLS = 1, 2
+
+def subplot(subplot_idx, horizon, problem, agents_number, min_y):
+    pb = copy.deepcopy(PROBLEM)
+    pb(agents_number = agents_number, horizon = horizon)
+    
+    ax = plt.subplot(ROWS, COLS, subplot_idx +1 )
+    y_max = -np.inf
+    for algo in ALGOS:
+        #-- collect data
+        t_span, mini, mean, maxi, var = get_anytime_data(pb, algo)
+        if t_span is None:
+            continue
+        #-- plot
+        plt.plot(maxi, color=algo.color,
+                 label=algo.name_latex if subplot_idx == 0 else "")
+        plt.fill_between(t_span, mini, maxi, color=algo.color, alpha=0.1)
+        y_max = max(y_max, max(maxi))    
+    #-- HSVI solution
+    sol = get_optimal_value(pb)
+    if sol:
+        plt.plot([0, TIMEOUT], [sol, sol], "r--",
+                 label="FB-HSVI" if subplot_idx == 0 else "")
+        
+    # #-- axes
+    if min_y.get(agents_number):
+        y_min = min_y.get(agents_number).get(horizon)
+        if y_min:
+            plt.ylim(y_min , y_max + (y_max - y_min ) * .05)    
+    plt.title("%s" % (pb.official,)); 
+    ax.title.set_weight('bold')
+    if subplot_idx == 0:
+        plt.ylabel("value at $b_0$")
+    plt.xlabel('time (s)')
+    #-- text box (horizon)
+    props = dict(boxstyle='round', facecolor='white', alpha=0.8, edgecolor="gray")
+    ax.text(0.6, 0.6, 
+            "$n=%i, \ell = %i$" % (agents_number, horizon),
+            ha='center',
+            transform=ax.transAxes, 
+            bbox=props)
+
+#-- init figure
+fig = plt.figure(figsize=(COLS*10, ROWS*12), dpi=20)
+sns.set_style("ticks")
+sns.set_context("poster", font_scale=2, rc={"lines.linewidth": 6})
+
+#-- subplots
+if False:
+    HORIZONS = [20, 40]
+    PROBLEM = Pbs.mars
+    MIN_Y = {2: {20:30, 40:50}}
+    for idx, horizon in enumerate(HORIZONS):
+        subplot(idx, horizon, PROBLEM, agents_number=2, min_y=MIN_Y)
+    fig_name = "%s_h%i_h%i" % (PROBLEM.name, HORIZONS[0], HORIZONS[1])
+else:
+    HORIZON = 10
+    PROBLEM = Pbs.recycling
+    AGENTS_NUMBERS = [2, 4]
+    MIN_Y = {2: {10: 31.1, 20:56, 40:120, 100:300}, 3: {10: 30}, 4: {10: 30}, 5: {10: 30}, 6: {10: 30},
+             7: {10: 30}}
+    for idx, agents_number in enumerate(AGENTS_NUMBERS):
+        subplot(idx, HORIZON, PROBLEM, agents_number=agents_number, min_y=MIN_Y)
+    fig_name = "%s_n%i_n%i" % (PROBLEM.name, AGENTS_NUMBERS[0], AGENTS_NUMBERS[1])
+
+
+#-- finalize figure
+fig.tight_layout()
+fig.legend(loc=8, ncol=3)#len(ALGOS)+1)
+fig.subplots_adjust(bottom=.32)
+
+#-- save figure
+save_fig(fig, fig_name)
\ No newline at end of file
diff --git a/code/tests/plot_paper_iterationTime.py b/code/tests/plot_paper_iterationTime.py
new file mode 100644
index 0000000000000000000000000000000000000000..fc22097df7c6377f1a60157386fc8a340b178fa5
--- /dev/null
+++ b/code/tests/plot_paper_iterationTime.py
@@ -0,0 +1,148 @@
+import matplotlib.pyplot as plt
+import os
+import copy
+import seaborn as sns
+
+from common import Problems as Pbs, Algorithms as Algos
+from batch_utils import get_iteration_number
+
+
+ALGOS = [Algos.oSarsa_seq, Algos.oSarsa]
+TIMEOUT = 3600
+FIG_PATH_ITERS = os.path.join(os.path.curdir, "figures")
+
+def save_fig(fig, fig_name):
+    if not os.path.exists(FIG_PATH_ITERS):
+        os.makedirs(FIG_PATH_ITERS)
+    fig_path = os.path.join(FIG_PATH_ITERS, fig_name)
+    print("=== save figure:", fig_path)
+    fig.savefig(fig_path + ".pdf")
+
+
+# %% =========== TIGER/RECYCLING (horizon=10, agents=2,...,7) ===========
+ROWS, COLS = 1, 2
+
+def subplot(subplot_idx, horizon, problem, agents_numbers):
+    ax = plt.subplot(ROWS, COLS, subplot_idx +1 )
+    for algo in ALGOS:
+        timeout = False
+        curve_agents, curve_times = [], []
+        for agents_number in agents_numbers:
+            #-- collect data
+            pb = copy.deepcopy(problem)
+            pb(agents_number = agents_number, horizon = horizon)
+            iters, iter_time = get_iteration_number(pb, algo, timeout=TIMEOUT)
+            #-- make list (handle timeouts)
+            if iter_time < TIMEOUT or not timeout:
+                curve_agents.append(agents_number)
+                curve_times.append(iter_time)
+            if iter_time >= TIMEOUT:
+                timeout = True
+        plt.semilogy(curve_agents, curve_times,
+                     '-' + algo.marker, color=algo.color, markersize=20,
+                     label=algo.name_latex if subplot_idx == 0 else "")
+    #-- timeout line
+    plt.semilogy(agents_numbers, [TIMEOUT] * len(agents_numbers), 'k--')
+    if (subplot_idx == 0):
+        ax.text(0.02, 0.91, "timeout", transform=ax.transAxes)
+    #-- xy
+    plt.ylim(1e-5, 12 * TIMEOUT)
+    plt.yticks([1e-5,1e-3, 1e-1, 1e1, 1e3])
+    plt.xticks(agents_numbers, labels=map(int, agents_numbers))
+    plt.title("%s" % (problem.official,)); 
+    ax.title.set_weight('bold')
+    if subplot_idx == 0:
+        plt.ylabel("time (s)")
+    plt.xlabel('# agents')
+    #-- text box (horizon)
+    props = dict(boxstyle='round', facecolor='white', alpha=0.8, edgecolor="gray")
+    ax.text(0.8, 0.1, 
+            "$\ell = %i$" % (horizon,),
+            ha='center',
+            transform=ax.transAxes, 
+            bbox=props)
+
+#-- init figure
+fig = plt.figure(figsize=(COLS*10, ROWS*11), dpi=20)
+sns.set_style("ticks")
+sns.set_context("poster", font_scale=2, rc={"lines.linewidth": 6})
+
+#-- subplots
+HORIZON = 10
+PROBLEMS = [Pbs.recycling, Pbs.tiger]
+AGENTS_NUMBERS = [2, 3, 4, 5, 6, 7]
+for idx, pb in enumerate(PROBLEMS):
+    subplot(idx, horizon=HORIZON, problem=pb, agents_numbers=AGENTS_NUMBERS)
+fig_name = "%s_%s_h%i" % (PROBLEMS[0].name, PROBLEMS[1].name, HORIZON)
+
+#-- finalize figure
+fig.tight_layout()
+fig.legend(loc=8, ncol=2)
+fig.subplots_adjust(bottom=.27)
+
+#-- save figure
+save_fig(fig, fig_name)
+
+
+# %% =========== MARS/GRID3x3 (horizon=10,20,40,100, agents=2) ===========
+ROWS, COLS = 1, 2
+
+def subplot(subplot_idx, horizons, problem, agents_number):
+    ax = plt.subplot(ROWS, COLS, subplot_idx +1 )
+    for algo in ALGOS:
+        timeout = False
+        curve_agents, curve_times = [], []
+        for horizon in horizons:
+            #-- collect data
+            pb = copy.deepcopy(problem)
+            pb(agents_number = agents_number, horizon = horizon)
+            iters, iter_time = get_iteration_number(pb, algo, timeout=TIMEOUT)
+            #-- make list (handle timeouts)
+            if iter_time < TIMEOUT or not timeout:
+                curve_agents.append(horizon)
+                curve_times.append(iter_time)
+            if iter_time >= TIMEOUT:
+                timeout = True
+        plt.semilogy(curve_agents, curve_times,
+                     '-' + algo.marker, color=algo.color, markersize=20,
+                     label=algo.name_latex if subplot_idx == 0 else "")
+    #-- timeout line
+    plt.semilogy(horizons, [TIMEOUT] * len(horizons), 'k--')
+    if (subplot_idx == 0):
+        ax.text(0.02, 0.91, "timeout", transform=ax.transAxes)
+    #-- xy
+    plt.ylim(5e-4, 12 * TIMEOUT)
+    plt.yticks([1e-3, 1e-1, 1e1, 1e3])
+    plt.xticks(horizons, labels=[str(h) if h != 20 else "" for h in HORIZONS])#, labels=map(int, horizons))
+    plt.title("%s" % (problem.official,))
+    ax.title.set_weight('bold')
+    if subplot_idx == 0:
+        plt.ylabel("time (s)")
+    plt.xlabel('horizon') # ('$\ell$ (horizon length)')
+    #-- text box (horizon)
+    props = dict(boxstyle='round', facecolor='white', alpha=0.8, edgecolor="gray")
+    ax.text(0.8, 0.3, 
+            "$n = %i$" % (agents_number,),
+            ha='center',
+            transform=ax.transAxes, 
+            bbox=props)
+
+#-- init figure
+fig = plt.figure(figsize=(COLS*10, ROWS*11), dpi=20)
+sns.set_style("ticks")
+sns.set_context("poster", font_scale=2, rc={"lines.linewidth": 6})
+
+#-- subplots
+HORIZONS = [10, 20, 40, 100]
+PROBLEMS = [Pbs.mars, Pbs.grid3x3]
+for idx, pb in enumerate(PROBLEMS):
+    subplot(idx, horizons=HORIZONS, problem=pb, agents_number=2)
+fig_name = "%s_%s" % (PROBLEMS[0].name, PROBLEMS[1].name)
+
+#-- finalize figure
+fig.tight_layout()
+fig.legend(loc=8, ncol=2)
+fig.subplots_adjust(bottom=.27)
+
+#-- save figure
+save_fig(fig, fig_name)
\ No newline at end of file